计算机组成原理

计算机组成原理

概述篇

计算机发展的四个阶段

1.png
  • 电子管计算机


    2.png
- 集成度小,空间占用大
- 功耗高,运行速度慢
- 操作复杂,更换程序需要接线
  • 晶体管计算机

贝尔实验室科学家发现晶体管

3.png
- 集成度相对较高,空间占用相对小
- 功耗相对低,运行速度较快
- 操作相对简单,交互更加方便
  • 集成电路(IC)计算机

计算机具备了进入千家万户的条件

4.png

该阶段出现操作系统的雏形,IBM推出的System/360

  • 超大规模集成电路计算机
5.png
- 一个芯片集成了上百万的晶体管
- 速度更快,体积更小,价格更低
- 用途丰富:文本处理,表格处理,高交互游戏

微型计算机的发展历史

微型计算机从第三阶段开始

6.png
7.png

计算机的分类

  • 超级计算机
    • 功能最强,运算速度最快,存储容量最大的计算机
    • 多用于国家高科技领域和尖端技术研究
    • 单位是TFlop/s(每秒一万亿次浮点运算)
  • 大型计算机
    • 具有高性能,可处理大量数据与复杂的运算
    • 在大型机市场领域,IBM占据着很大的份额
    • COBOL编程语言(大型机中的编程语言,但不是绝对)
  • 迷你计算机
    • 也称小型机,普通服务器
    • 不需要特殊的空调场所
    • 具备不错的算力,可以完成较复杂的运算
  • 工作站
    • 高端的通用型微型计算机,提供比个人计算机更强大的性能
    • 类似于普通台式电脑,体积较大,但性能强劲
  • 个人计算机/微机/微型计算机
    • 本质上讲,个人计算机与前面的分类无异

冯诺依曼体系

将程序指令和数据一起存储的计算机设计概念结构

8.png
- 必须有一个存储器
- 必须有一个控制器
- 必须有一个运算器
- 必须有输入设备
- 必须有输出设备

现代计算机都是冯诺依曼机

  • 特点
    • 能够把需要的程序和数据送至计算机中
    • 能够长期记忆程序,数据,中间结果以及最终运算结果的能力
    • 能偶具备算术,逻辑运算和数据传送等数据加工处理的能力
    • 能够按照要求将处理结果输出给用户
9.png
  • 冯诺依曼瓶颈

如图九可知,CPU和存储器是分开的,这样会导致一些问题;例如:冯诺依曼瓶颈,
CPU和存储器速率之间的问题无法调和,cpu经常空转等待数据传输

现代计算机的结构

现代计算机的结构以存储器为核心的结构

10.png
  • 现代计算机在冯诺依曼体系结构基础上进行修改
  • 主要为了解决CPU与存储设备之间的性能差异问题

存储器广义上说,包含磁带,硬盘等能存储信息的设备,但是此次只针对围绕CPU的更高速的设备(CPU寄存器,内存等)

程序翻译与解释

  • 程序翻译

例如:C/C++ OC

11.png
  • 程序解释

例如:js php python

12.png
- 计算机执行的指令都是L0
- 翻译过程生成新的L0程序,解释过程不生成新的L0程序
- 解释过程由L0编写的解释器去解释L1程序
  • 翻译加解析

例如:java和C#

13.png

计算机的层次与编程语言

  • 实际机器
    • 硬件逻辑层
      • 门,触发器等逻辑电路组成
      • 属于电子工程的领域
    • 微程序机器层
      • 编程语言是微指令集
      • 微指令所组成的微程序直接交由硬件执行
    • 传统机器层
      • 编程语言是CPU指令集(机器指令)
      • 编程语言和硬件直接相关
      • 不同架构的CPU使用不同的CPU指令集
      • 一条机器指令对应一个微程序
      • 一个微程序对应一组微指令
  • 虚拟机器
    • 系统软件
      • 操作系统层
        • 向上提供了简易的操作界面
        • 向下对接了指令系统,管理硬件资源
        • 操作系统是位于软件和硬件之间的适配系统
      • 汇编语言层
        • 编程语言是汇编语言
        • 汇编语言可以翻译成可直接执行的机器语言
        • 完成翻译的过程的程序就是汇编器
      • 高级语言层
        • 顾名思义,java,python,c等
    • 应用软件
      • 应用层
        • word,qq等

计算机的单位

  • 容量单位


    14.png
  • 速度单位
    • 网络速度
      • 100M/S=100Mbps=100Mbit/s
      • 100Mbit/s=(100/8)MB/s=12.5MB/s
      • 存在字节到比特位的转换关系
    • CPU频率
      • CPU的速度一般体现为CPU的时钟频率
      • CPU的时钟频率的单位一般是赫兹(Hz)
      • Hz其实就是秒分之一(每秒钟的周期性变动重复次数的计量)


        15.png

编码补充

  • Unicode:统一码,万国码,单一码
  • Unicode定义了世界通用的符号集,UTF-*实现了编码
  • UTF-8以字节为单位对Unicode进行编码
  • Unicode兼容全球

组成篇

16.png
17.png

计算机的总线和IO设备

总线

解决不同设备之间的通信问题

  • 总线概述
    • 提供了对外连接的接口
    • 不同设备可以通过USB(通用串行总线)接口进行连接
    • 连接的标准,促使外围设别接口的统一
  • 常见总线
    • USB
    • PCI总线
    • ISA总线
    • Thunderbolt总线
  • 总线分类
    • 片内总线
      • 芯片内部总线
      • 寄存器与寄存器之间
      • 寄存器与控制器、运算器、高速缓存、中断系统之间
      • 高集成度芯片内部的信息传输线
    • 系统总线(CPU、主内存、IO设备、各组件之间的信息传输线)
      • 数据总线(一般与CPU位数相同,32/64位)
        • 双向传输各个部件的数据信息
        • 数据总线的位数(总线宽度)是数据总线的重要参数
        • 32位代表一次可以传输32位4个字节的数据,64同理
      • 地址总线(地址总线位数=n,寻址范围:0-2的n次方)
        • 指定源数据或目的数据在内存中的地址(寻址)
        • 地址总线的位数与存储单元有关
      • 控制总线
        • 控制总线是用来发出各种控制信号的传输线
        • 控制信号经由控制总线从一个组件发给另外一个组件
        • 控制总线可以监视不同组件之间的状态(就绪/未就绪)
总线的仲裁

为了解决总线使用权的冲突问题,例如CPU硬盘都准备好了,但是分别使用哪些总线

  • 仲裁方式

    • 链式查询
      • 好处:电路复杂度低,仲裁方式简单
      • 坏处:优先级低的设备难以获得总线使用权(都申请的时候)
      • 坏处:对电路故障敏感
    18.png
  • 计时器定时查询

    • 仲裁控制器对设备编号并使用计数器累计计数
    • 接收到仲裁信号后,往所有设备发出计数值(累加过后的)
    • 计数值与设备编号一致则获得总线使用权


      19.png
  • 独立请求

    • 每个设备均有总线独立连接仲裁器
    • 设备科单独向仲裁器发送请求和接收请求
    • 当同时受到多个请求信号,仲裁器有权按优先级分配使用权
    • 前面两种都是共用总线连接仲裁器
    • 好处:响应速度快,优先顺序可动态改变
    • 设备连接线,总线控制复杂


      20.png

IO设备

  • 常见的输入输出设备

    • 字符输入设备
      • 键盘
    • 图形输入设备
      • 鼠标
      • 数位板
      • 扫描仪
    • 图像输出设备
      • 显示器
      • 打印机
      • 投影仪
  • 输入输出接口的通用设计

    • 数据线
      • IO设备与主机之间进行数据交换的传送线
      • 单向传输数据线
      • 双向传输数据线
    • 状态线
      • IO设备状态向主机报告的信号线
      • 查询设备是否已经正常连接并就绪
      • 查询设备是否已经被占用
    • 命令线
      • CPU向设备发送命令的信号线
      • 发送读写信号
      • 发送启动停止信号
    • 设备选择线
      • 主机选择IO设备进行操作的信号线
      • 对连接在总线上的设备进行选择(例如多U盘判断)
  • CPU与IO设备的通信(CPU速度和IO设备速度不一致)

    • 程序中断

      • 当外围IO设备就绪时,向CPU发出中断信号
      • CPU有专门的电路相应中断信号,完成IO操作之后继续进行之前工作
      • 提供低速设备通知CPU的一种异步的方式
      • CPU可以高速运转同时兼顾低速设备的响应


        21.png
    • DMA(直接存储器访问)

      • DMA直接连接主存与IO设备
      • DMA工作时不需要CPU的参与
      • 一般硬盘和显卡中都有DMA设备


        22.png

计算机的存储器

在CPU与主存之间增加一层速度快容量小的Cache,解决主存速度不足的问题

存储器的分类

  • 按照存储介质分类
    • 半导体存储器
      • 内存
      • U盘
      • 固态硬盘
    • 磁存储器
      • 磁带
      • 磁盘
  • 按照存取方式分类
    • 随机存储器(RAM)
      • 随机读取
      • 与位置无关
    • 串行存储器
      • 与位置有关
      • 按顺序查找
    • 只读存储器(ROM)
      • BIOS
      • 只读不写(或者很少更改)
  • 存储器的层次结构


    23.png
    • 缓存:CPU内部寄存器和高速缓存

    • 主存(RAM):一般指内存

      • RAM通过电容存储数据,必须每隔一段时间刷新一次
      • 如果掉电,那么一段时间后将丢失所有数据
      • 和系统有关,32位系统中地址总线寻址范围(2的32次方)大约4GB


        25.png
    • 辅存:硬盘等

      • 表面是可词话的硬磁特性材料
      • 移动磁头径向运动读取磁道信息


        26.png
27.png
24.png
  • 辅存算法
    • 先来先服务算法
      • 会从1磁道到4磁道再到2....
    • 最短寻道时间优先算法
      • 与磁头当前位置有关系
      • 优先访问离磁头最近的磁道
      • 4,5/3因为相邻,此处加入当作5,3,2,1,1
    • 扫描算法(电梯算法)
      • 每次只往一个方向运动
      • 到达一个方向需要服务的尽头再反方向移动
      • 4,5,3,2,1/或者初始反向
    • 循环扫描算法
      • 4,5,1,1,2,3
      • 可知,假如由外向内到5之后,或直接回到1,在重新来,相对更公平,某种程度上说只有单向移动
28.png
  • 局部性原理
    局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中,这是层级结构划分的依据。例如:程序经常访问的内存,只需要把这段内存置换至缓存即可。
  • 高速缓存
    • 高速缓存的工作原理
        • 是指存在放一个存储单元中的二进制代码组合
        • 字的地址包含两个部分
        • 前M位指定字块的地址
        • 后b位指定字在字块中的地址
      • 字块
        • 存储在连续的存储单元中而被看作是一个单元的一组字
      • 字和字块在主存和缓存都适用,只是容量大小的区分


        1.png
2.png

3.png

(如图只是假设的位数说明,理解即可)

4.png

- 命中率是衡量缓存的重要性能指标
- 理论上CPU每次都能从高速缓存取数据的时候,命中率为1

5.png
6.png
- 高速缓存的替换策略(`主存和高速缓存的替换`)
    - 随机算法
    - 先进先出算法(FIFO)
        - 把高速缓存看作是一个先进先出的队列
        - 优先替换最先进入队列的字块
7.png
    - 最不经常使用算法(LFU)
        - 优先淘汰最不经常使用的字块
        - 需要额外的空间记录字块的使用频率
8.png
    - 最近最少使用算法(LRU)
        - 优先淘汰一段时间内没有使用的字块
        - 有多种实现方法,一般使用双向链表
        - 把当前访问节点置于链表前面(保证链表头部节点是最近使用的)
9.png

计算机的指令系统

  • 机器指令主要由两部分组成:操作码、地址码
  • 操作码指明所要完成的操作
  • 操作码的位数反映了机器的操作种类
  • 地址码直接给出操作数或者操作数的地址
  • 分三地址指令,二地址指令和一地址指令


    1.png
2.png
3.png
4.png

机器指令的操作类型

  • 寄存器之间,寄存器与存储单元,存储单元之间传送
  • 数据读写,交换地址数据,清零置一等操作
  • 操作数之间的加减乘除运算
  • 操作数的与或非等逻辑运算
  • 数据左移,右移
  • 完成数据在算术逻辑单元的必要操作
  • 等待指令,停机指令,空操作指令,中断指令

机器指令的寻址方式

  • 指令寻址

    • 顺序寻址
    • 跳跃寻址


      5.png

    例如105指令就是跳跃到102执行,其实就是跳跃寻址

  • 数据寻址

    • 立即寻址
      • 速度快
      • 地址码位数限制操作数表示范围
    • 直接寻址
      • 寻找操作数简单
      • 地址码位数限制操作数表示范围
    • 间接寻址
      • 操作数寻址范围大
      • 速度较慢


        6.png
7.png
8.png

计算机CPU

计算机的控制器

9.png

程序计数器

  • 程序计数器用来存储下一条指令的地址
  • 循环从程序计数器中拿出指令
  • 当指令被拿出时,指向下一条指令

时序发生器

  • 电气工程领域,用于发送时序脉冲
  • CPU依据不同的时序脉冲有节奏的进行工作

指令译码器

  • 指令译码器是控制器的主要部件之一
  • 计算机指令由操作码和地址码组成
  • 翻译操作码对应的操作以及控制传输地址码对应的数据

指令寄存器

  • 指令寄存器也是控制器的主要部件之一
  • 从主存或高速缓存取计算机指令

主存地址寄存器

  • 保存当前CPU正要访问的内存单元的地址

主存数据寄存器

  • 保存当前CPU正要读或写的主存数据

通用寄存器

  • 用于暂时存放或传送数据或指令
  • 可保存ALU的运算中间结果
  • 容量比一般专用寄存器要大

计算器的运算器

10.png

数据缓冲器

  • 分为输入缓冲和输出缓冲
  • 输入缓冲暂时存放外设送过来的数据
  • 输出缓冲暂时存放送往外设的数据

ALU

  • ALU:算术逻辑单元,是运算器的主要组成
  • 常见的位运算
  • 算术运算

状态字寄存器

  • 存放运算状态(条件码、进位、溢出、结果正负等)
  • 存放运算控制信息(调试跟踪标记位,允许中断位等)

通用寄存器

  • 用于暂时存放或传送数据或指令
  • 可保存ALU的运算中间结果
  • 容量比一般专用寄存器要大

指令执行过程

graph LR
取指令-->分析指令
分析指令--> 执行指令
12.png

11.png

如上图可知,指令是顺序执行,控制器和计算器不能同时工作,CPU利用率低下,解决方案如下图 CPU的流水线设计

13.png

效率大概可以提升三倍

进制和浮点数

1.png

如上图可知,之所以产生补码是因为0表示有歧义,例如正0负0;还有减法运算复杂;而反码产生的原因是因为补码中计算也有减法;可以直接原码按位取反得到反码,然后+1得到补码,计算机存储的都是补码。

2.png
3.png
4.png

推荐阅读更多精彩内容

  • 通信总线 取地址,虽然是地址,但是cpu在取的时候只是数儿而已,所以是用数据总线usb主要是通信功能,数据功能,通...
    无所用心人阅读 200评论 1 8
  • 计算机系统概述 计算机发展简史 1945年,美国制造出第一台电子计算机"ENIAC"。 计算机发展历程 第一代电子...
    Himmelt阅读 2,388评论 0 0
  • 总线:是连接多个部件的信息传输线,是各部件共享的传输介质。在某一时刻,只允许有一个部件向总线发送信息(否则冲突,传...
    翘首东云阅读 41评论 0 1
  • 首先这门课跟计算机系统概论的区别在于这个更偏向于底层实现(最烦的东西……),而后者则是在此基础上进行优化和改进 那...
    无所用心人阅读 115评论 1 4
  • 计算机系统概论: 计算机系统由软件和硬件两大部分组成,软件又分为系统软件和应用软件。 浮点数范围大,定点...
    Sallyscript阅读 290评论 0 0