考研复习之计算机组成原理

- 7 mins

【考查目标】

  1. 理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。
  2. 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法。
  3. 能够综合运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算、分析,对一些基本部件进行简单设计;并能对高级程序设计语言(如C语言)中的相关问题进行分析。

本人才疏学浅,如有错误,欢迎指正。

计算机系统概述

计算机发展历程

第一台电子数字计算机:ENIAC (Electronic Numerical Integrator And Computer)

摩尔定律:价格不变时,集成电路上可容纳的晶体管数目约 18 个月会增加一倍。18个月后同样的钱可以买到性能是现在性能两倍的cpu。

计算机分类:

计算机发展两极化:更小和更大。

计算机系统层次结构

计算机系统的基本组成及软硬件关系

计算机系统:软件系统和硬件系统。两者在逻辑上等效(并不等价),同一功能硬件实现效率更高。

计算机系统组成

计算机系统分层结构如下图所示:

计算机系统的分层结构

计算机硬件的基本组成

1541774942898

显然,冯诺伊曼计算机是指令执行的计算机系统,故其基本工作方式为控制流(指令流)驱动方式。

现代计算机:CPU=运算器+控制器

1-5现代计算机系统组成

计算机工作过程

  1. 程序和数据装入主存
  2. 从程序的起始地址运行程序
  3. 从首地址取指、译指、运行,完成这条指令后并计算下一条指令的地址
  4. 用新得到的指令地址继续取指、译指、执行直到程序结束为止。

计算机性能指标

IR、MAR、MDR对任何程序猿都透明。

数据的表示和运算

数制与编码

进制转换(略)

真值和机器数(略)

Binary-Coded Decimal :二进制编码的十进制数

校验码

  1. 奇偶校验码
  2. 海明校验码
  3. CRC冗余校验

参考此博客

定点数的表示和运算

定点数

公式无法正常显示,转简书

定点数:计算机中约定机器数小数点位置,小数点的位置固定的数。

编码方式 取值范围(n 位机器数,n从 0 开始数) 最大值(以 8 位机器数为例) 最小值
原码:最高位符号位,数据位为 2 进制真值 $ \ -2^{n} + 1$ ~ $ 2^{n} -1 $ 符号位取 0 ,数据位全 1 。0111 1111 : 127 符号位取 1,数据位全 1。1111 1111 : -127
反码:最高位为符号位,数据位为原码取反 $ \ -2^{n} + 1$~ $ 2^{n} -1 $ 0111 1111 : 127 1000 0000: -127
补码:反码值 + 1 。权值公式为$-2^nx_n + \sum_{i=0}^{n-1}2^ix_i$ $ \ -2^{n} $~ $ 2^{n} -1 $ 0111 1111 : 127 1000 0000 -128
移码:补码符号位取反。 $ \ -2^{n} $~ $ 2^{n} -1 $ 1111 1111 : 127 0000 0000: -128

注:无符号数的编码具有唯一性。有符号数正数的原码、反码、补码相同,移码与补码符号位相反。

运算

移位运算
定点数加减运算溢出判断

溢出:运算结果超过机器可以表示的数。ps:产生进位并不等于溢出。

强制类型转换

C 语言中的类型转换结果保持机器数位值不变,只是改变了解释这些位的方式。

浮点数

浮点数:小数点位置可变的数。 $ N = r^E \times M \text{, 浮点数格式定义。其中 M 为尾数,E 为阶数,r 为基数。} $

浮点数一般表示形式.png

IEEE 754标准

IEEE754浮点数表示形式.png

类型 数符 阶码 尾数 总位数 偏移量e
单精度浮点数 1 8 23 32 7FH
双精度浮点数 1 11 52 64 3FFH
临时浮点数 1 15 64 80 3FFFH

注:单精度与双精度浮点数采用隐藏尾数最高位策略,数据的最高位总是 1 ,隐藏最高位可以使尾数多表示 1 位有效位。

单精度浮点数值的分类.jpg

浮点数的加减运算

1. 规格化两操作数

为了提高运算精度,规定尾数的最高位数必须是一个有效值。

ps:基数不同时,浮点数的规格化形式也不同。当基数为 4 时,浮点数尾数最高两位不全为 0;基数为 8 时,位数最高三位不全为 0。

2. 对阶

使两操作数阶数相等,小阶向大阶对齐,阶数增大尾数右移。

3. 尾数求和后规格化结果值
4. 舍入

对阶和右规过程中,尾数低位可能会丢失引起误差。

浮点数溢出判断:阶码是否超过取值范围。

下溢时仅当作机器 0 处理,上溢时计算机必须中断运算操作并进行溢出处理。

存储器

计算机存储系统层次图

常识:CPU-Cache-主存-辅助存储器构成计算机的三级存储系统

半导体随机存储器

SRAM:静态随机存储器

DRAM:动态随机存储器

  • 集中刷新:利用一段固定时间依次对存储器的所有进行逐一再生,期间禁止对存储器的读写操作。
  • 分散刷新:把对每一行的刷新分散到各个工作周期,前一半正常读写,有一半用来刷新某一行,所以如果计算机的存取周期是芯片的存取周期二倍。
  • 异步刷新:将刷新周期除以行数得到两次刷新之间的时间间隔t,每隔t刷新一次。这样可以避免延长存取周期,也大大缩小了死时间。

ROM:只读存储器

ROM也是随机读取的存储器,信息一旦写入就固定不变了,即使断电也不会丢失,所以通常使用ROM存放一些固定不变的程序和数据,还有操作系统的固化。RAM和ROM共同组成计算机主存的一部分

主存储器和CPU的连接

考试一般不会让画图,但是地址空间,字扩展、位扩展、字位扩展、芯片选择要会。

双口RAM

双口RAM:有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元。

当两个端口访问同一地址单元时,不可以同时对一个地址单元写入,会出现写入错误;也不可以两个端口一个在写一个读,会出现读出错误。

多模块存储器

  1. 单体多字存储器:一个存储体,每个存储单元可以存放n个字,同样总线宽度也是n个字。

  2. 多体并行存储器

    1. 高位交叉编址:主存地址结构分为体号和体内地址两部分,它依然是顺序存储器!

    2. 低位交叉编织 :主存地址结构低位为体号,高位位体内地址。程序连续存放在相邻体中,所以多体可以用流水线的方式并行存取。连续存取m个字所需的时间为

Cache :局部性原理

那么我们就可以开辟一小片相对主存教高速的区域,专门用来存放某段时间内需要访问的数据,这就是cache,通常由SRAM构成,位于CPU内部。

着重要搞清楚三种主存地址映射结构、cache标记阵列这里主要是需要练习各种习题深入理解。

指令系统

指令格式

指令寻址方式

Complex Instruction Set Computer和Reduced Instructions Set Computer

CISC:指令系统复杂庞大,指令长度不固定,寻址方式也很多。各种指令都可以访存,但各种指令的使用频度相差很大,各种指令的执行时间相差也很大。控制器多采用微程序控制,控制器在CPU芯片内所占的面积占百分之50以上,难以优化编译生成高效的目标代码程序。

RISC:选取使用频率最高的一些指令,其余指令的功能由简单指令组合实现;指令长度固定,格式种类较少,寻址方式也少。只有Load和Store指令可以访存,其余指令都在寄存器之间进行,CPU中的寄存器数量很多。采用流水线技术,大部分指令在一个时钟周期内完成;以硬布线控制为主,只占CPU芯片面积的百分之十,重视编译优化工作。

中央处理器

CPU功能和基本结构

CPU的结构

指令执行过程

时钟周期、机器周期和指令周期的关系.JPEG

指令周期

1541922814371

  1. 取指周期:PC -> MAR -> MDR -> IR -> ID,PC+1 -> PC
  2. 间址周期(可能没有):取操作数的有效地址。Ad(IR) -> MAR -> MDR
    1. 如果操作数不需要访问存储器,那么也就不存在间址周期
  3. 执行周期
  4. 中断周期(可能没有):处理中断请求。

数据通路的功能和基本结构

  1. 寄存器间数据传送:
    1. PC -> Bus (PC out);
    2. Bus-> MAR (MAR in);
  2. 主存与CPU之间的数据传送
    1. PC -> Bus -> MAR ( PC out, MAR in)
    2. 1 -> R (CU)
    3. M(MAR) -> MDR( MDR in)
    4. MDR -> Bus -> IR ( MDR out, IR in)
  3. 执行算数或逻辑运算(具体问题具体分析)
    1. Ad(IR) -> Bus -> MAR (MAR out, MDR in) // MDR 中存放的是与IR同样的数据
    2. 1 -> R (CU)
    3. MEM(MAR) -> MDR (MDR in)
    4. MDR -> Bus -> Y (MDR out, Y in)
    5. (ACC) + (Y) -> Z (ACC out, Y out , CU , Z out)
    6. Z -> ACC (Z out , ACC in)

控制器

硬布线控制器(组合逻辑电路+触发器)

控制单元图

CU的三种输入信息

CPU的控制方式:控制每条指令和每个微操作的执行时间

硬布线控制单元设计步骤

1541923624488

  1. 列出微操作命令的操作时间表,包括各个机器周期、节拍下的每条指令完成的微操作控制信号。
    1. 原则一:被操作的先后顺序不能随意更改;
    2. 原则二:被控对象不同的微操作尽量安排在1个节拍内完成;
    3. 原则三:占用时间较短的微操作尽量安排在 1 个节拍。
  2. 微操作信号综合:微操作控制信号 = 机器周期……(懵逼脸)
  3. 画微操作命令逻辑图
    • 方框:按CPU周期
    • 方框内内容:数据通路操作或控制操作
    • 菱形符号:判别或测试
    • ~:公操作

5-7微操作时序图

微程序控制器

微程序控制器组成原理

若指令系统中具有 n 种机器指令,则控制存储器种的微程序数至少是 n+1个(1个为公共取指微程序)。

微程序编码方式

微指令地址形成方式

微指令的格式

指令流水线

本质:把一条指令的执行过程分成多个阶段,不同阶段可以并行。

流水线每一个功能段部件后面都要有一个锁存器,用来保存本流水段的执行结果,提供给下一流水段使用。

流水线性能指标:

超标量流水线:以并行操作方式将两条或多条指令编译并执行,需要配置多个功能部件。

总线

总线概述

总线的两个特点:

总线的猝发传输方式:在一个总线周期内传输存储地址连续的多个数据字。

分类:

性能指标:

系统总线结构

总线仲裁

集中仲裁方式

将所有的设备请求集中于一个设备,采用一定的算法进行裁决。

链式查询

链式查询(故障敏感):总线上所有部件公用一个BR、BS和BG。若某个设备想使用总线,通过BR发出请求,总线控制部件检查是否忙,忙的话就回馈BS信号;若不忙回馈BG信号,从最靠近总线控制部件的设备开始往下传,所以越靠近总线控制部件的设备优先级越高,在响应某设备的过程中很有可能被高优先级的设备抢占。

计时器定时查询方式:取消了总线响应线BG,多了一组设备地址线,所以 N 个设备需要添加 log 2 N条设备地址线。

当总线控制器收到总线请求信号,判断总线空闲 时,计时器开始计数,计数值通过设备地址线发向各个部件。设备地址与计数值一致的设备获得总线控制权,同时终止计数及查询。

计数值可以从 0 开始,这样设备优先级依然固定;也可以从上一次的终点开始,这样就是循环方式,各设备使用总线的优先级相等

独立请求方式:每个设备都有一组自己的 BR和 BG,所以控制线条数为 2n + 1 。

每当设备请求总线使用权时,总线控制器按一定的优先次序决定给哪个设备使用,无需在设备间传递或者查询,对优先次序的控制相当灵活。

分布仲裁方式

分布式仲裁方式

不需要中央仲裁器,而是多个仲裁器竞争使用总线。

当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。

显然,分布式仲裁是以优先级仲裁策略为基础。

总线操作和定时

总线标准

PCI

I/O系统

外部设备

外部设备

I/O接口:主机与外设之间的交换界面

I/O接口:若干个端口加上响应的控制逻辑。

功能:

IO接口基本结构

I/O端口及其编址

I/O端口 : 接口电路中可以进行读/写的寄存器,CPU可以直接访问,所以必须要有端口地址。

I/O控制方式

定义:主机与I/O设备之间数据传送采用的控制方式。

IO控制方式

程序查询方式

程序查询方式

  1. CPU先向I/O设备发出命令字,请求进行数据传送;
  2. 从IO接口读入状态字;
  3. CPU检查状态字中的标志,看看数据交换是否可以进行;
  4. 加入这个设备没有准备就绪,则一直进行步骤 2 和步骤 3 ,直到设备准备就绪发出 ready 信号为止;
  5. CPU从 I/O 接口的数据缓冲寄存器中输入数据,或将数据从 CPU 输出到接口的数据缓冲寄存器中。同时,CPU将接口中的状态标志位复位。
  6. 数据传送

程序中断方式

程序中断方式

  1. 程序启动外设,将外设接口忙标志的 BS 置1,准备就绪标志 RD 清0;
  2. 接口向外设发出启动信号;
  3. 数据由外设传送到接口的缓冲寄存器;
  4. 当设备动作结束或缓冲寄存器数据填满时,设备向接口发送一控制信号,将数据准备就绪 RD 置为1;
  5. 允许中断标志 EI == 1时,接口向CPU发出中断请求信号;
  6. 一条指令执行末尾CPU检查中断请求线,将中断请求线的请求信号接受到“中断请求”标志 IR;
  7. 如果“中断屏蔽”标志 IM == 0,CPU在一条指令执行结束后受理外设的中断请求,向外设发出响应中断信号并关闭中断;
  8. 转向该设备的中断服务程序入口
  9. 在终端服务程序通过输入指令把接口中数据缓冲寄存器的数据读至 CPU 中的寄存器;
  10. CPU发出控制信号 C 将接口中的 BS 和 RD 复位。

DMA方式(Direct Memory Access)

DMA控制器给出当前正在传送的数据的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束。在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据。在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理

DMA方式

DMA传送过程

DMA传送过程

DMA传送方式

DMA方式是通过硬件控制实现主存与I/O设备间的直接数据传送,在传送过程中无需CPU的干预。数据传送是在DMA控制器控制下进行的。

在DMA传送过程中,主存和I/O设备间有一条直接通路,不通过CPU。但当I/O设备和CPU同时访问主存时,就会可能发生冲突,在传送过程中DMA控制器和通常用以下三种方式使用主存。

CPU暂停方式

采用这种工作方式的I/O设备,在其接口中一般设置有小容量存储器,I/O设备先与小容量存储器交换数据,然后由小容量存储器与主机交换数据,这样可减少DMA传送占用存储总线的时间,也即减少了CPU暂停工作的时间。

周期挪用

CPU和DMA交替访问内存

通道方式

通道:计算机系统中代替CPU管理控制外设的独立部件,是一种能执行有限I/O指令集合(通道命令)的I/O处理机。

一个主机可以连接多个通道,每个通道又可以连接多个I/O设备。程序和外设完全可以并行执行。

在CPU启动通道后,通道自动地去内存取出通道指令并执行指令。直到数据交换过程结束向CPU发出中断请求,进行通道结束处理工作。

通道控制方式

  1. CPU组织通道程序放入内存中;
  2. CPU给通道发出I/O指令启动;
  3. 通道处理;
  4. 通道处理完成后给CPU发出中断请求,进行通道结束处理工作;

参考资料:《2019王道计算机组成原理》、教学课件、CSAPP、部分博客等

Cache和虚存大题会开一篇专门讲,可变长指令结构、中断屏蔽字、流水线等也是需要理解的东西,真正理解都不难,只是简单的放一段话或文字也很难直接明白是怎么回事。计算机组成原理需要系统的理解,死记硬背不能根本解决问题。

Inger Chao

Inger Chao

A girl willing to learn and progress

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora qq quora wechat