我的博客
欢迎来到我的博客
bunny.icu

考研408笔记-计算机组成原理

考研408笔记-计算机组成原理

计算机系统概述

发展历程

第一代:电子管时代

第二代:晶体管时代

第三代:中小规模集成电路时代

第四代:超大规模集成电路时代

摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。

把汇编语言源程序转变为机器语言程序的过程是汇编

微型计算机的发展以微处理器技术为标志。

计算机硬件的基本组成

冯诺依曼体系

冯诺依曼体系的特点如下:

  1. 计算机硬件系统由运算器、处理器、控制器、输入设备和输出设备5大部件组成。
  2. 指令和数据以同等地位存储在存储器中,并可按地址访问。CPU可以根据指令周期的不同阶段来区分是指令还是数据,通常,再取指令阶段取出的是指令,在执行阶段取出的是数据。
  3. 指令和数据均用二进制代码表示。
  4. 指令由操作码和地址码组成,操作码用来表示操作的性质,地址吗表示操作数在存储器中的位置。
  5. 指令在存储器中按顺序存放。通常,指令是顺序执行的,在特定条件下可以根据运算结果或根据设定的条件改变执行顺序。
  6. 早期的冯诺依曼以运算器为中心,输入/输出设备通过运算器与存储器传送数据。
  7. 基本工作方式是控制流驱动方式。

现代计算机的组织结构

由于计算机需要处理信息量的增加,现代计算机已经发展为以存储器为中心,使I/O操作尽可能地绕过CPU,直接在I/O设备和存储器之间完成,以提高系统的整体运行效率。

计算机的功能部件

输入设备

输出设备

存储器

CPU能够直接访问的是主存储器(主存、内存储器),不能直接访问的是辅助存储器(辅存、外存储器)。

地址译码器是主存储器的一部分。

地址寄存器(MAR),存放访存地址,经过地址译码后找到所选的存储单元。位数为地址码长度,2^{位数}=存储单元个数

数据寄存器(MDR),是主存和其他部件的中介机构,用于暂存要从存储器中读或写的信息,时序控制逻辑中用于产生存储操作所需的各种时序信号。位数与存储字长相等,一般为字节的二次幂的整数倍。

MAR和MDR虽然是存储器的一部分,但在现代CPU中却是存在于CPU中的。

运算器

用于对数据进行加工处理,完成算术运算和逻辑运算。

运算器的核心是算术逻辑单元(ALU)。

运算器包含若干通用寄存器,例如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前3个寄存器是必须的。

控制器

控制器是计算机的指挥中心,指挥各部件自动协调地进行工作。

控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。

PC用于存放当前与执行指令的地址。

IR用于存放当前的指令,内容来自主存的MDR。指令集存器对用户是完全透明(不可见)的。

程序计数器、状态寄存器、通用寄存器对汇编程序员可见。

CPU

现代计算机一般将运算器和控制器集成到同一个芯片上,合称中央处理器(CPU)。

地址寄存器位于CPU内,但为集成到运算器与控制器中。

寄存器位于CPU内部。存取速度:寄存器 > Cache > 内存

软件

软件功能可以由硬件取代。

系统软件和应用软件

系统软件是保证计算机系统高效、正确运行的基础软件,有操作系统、数据库管理系统、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务型程序等。

应用软件是为用户解决某个应用领域的问题而编制的程序,有科学计算程序、工程设计程序、数据统计与处理程序等。

数据库系统(DBS)由数据库(DB)、数据库管理员(DBA)、数据库管理系统(DBMS)组成,不是软件。

语言

机器语言

硬件能够直接执行的只有机器语言。

汇编语言

高级语言

工作流程

  1. 把程序和数据装入主存储器
  2. 从程序的起始地址运行程序
  3. 用程序首地址从存储器中去除第一条指令,经过取码、译码、执行等步骤,完成这条指令,并计算下一条指令地址。
  4. 用新得到的指令地址继续读出第二条指令并执行,状况程序结束为止。

计算机系统层次结构

  1. 微程序机器层
  2. 传统机器语言层
  3. 操作系统层
  4. 汇编语言层
  5. 高级语言层

性能指标

机器字长

进行一次整数运算所能处理的二进制数据的位数。

数据通路带宽

数据总线一次所能并行传送信息的位数。

主存容量

主存储器所能存储信息的最大容量。

运算速度

吞吐量

系统在单位时间内处理的信息数量。

响应时间

CPU时间周期

CPU中的最小时间单位,不是计算机操作中的最小时间单位,CPU周期由多个时钟周期组成。

主频

CPU时间周期的倒数。

CPI

执行一条指令所需的时间周期数。

CPU执行时间

运行一个程序所花费的时间。

MIPS、MFLOPS、GFLOPS、TFLOPS

每秒百万次*操作数。

几个专业术语

系列机

兼容

通常,软件或硬件在同一系列的不同型号计算机间通用。

软件可移植性

固件

数据的表示和运算

进制转换

除基取余法

乘基取整法

BCD码

BCD码是用二进制表示的十进制数,有8421码、余3码、2421码

余3码是在8421码的基础上+3

ASCII码

范围是0-127

‘0’为48

‘A’为65

‘a’为97

校验码

任意两个编码之间最少变化的二进制数,称为数据校验码的码距。对于码距不小于2的数据校验码,开始具有检错的能力。码距越大,检错、纠错的能力越强,而且检错能力总是大于等于纠错能力的。

奇偶校验码

缺点:不能检测出偶数位错误,不能确定出错的位置。

奇校验码:使整个校验码中1的个数为奇数(含校验位)。

偶校验码:使整个校验码中1的个数为偶数(含校验位)。

海明码

  1. 确定海明码的位数。n+k+1\leq2^kn为有效信息的位数,k为校验位的位数,若要检2位错,则需要增加一个校验位,即k+1
  2. 校验位在2^{i-1}上,即1、2、4、8……将校验位插入到数据位中,构成海明码
  3. 数据位由位号之和为数据位位号的校验位校验。
  4. 校验位的值为它校验的所有数据位的值求异或。
  5. i个校验位与它校验的所有数据位的值求异或,为1则表示第i个数据位出错

海明码纠错d位,需要码距为2d+1位的编码方案;检错d为,则只需码距为d+1

循环冗余校验码

  1. 信息码后面补0,个数为生成多项式位数-1
  2. 信息码与生成多项式做模2除法,产生余数,余数的位数为生成多项式位数-1
  3. 余数即为校验位,添加到信息为后面。
  4. CRC码与生成多项式做模2除法,若余数为0,则码字无错,余数中为1的位是出错位。

定点数的表示

原码

最高位表示符号。

0有正负两种。

反码

正数反码与原码相同。

负数符号位不变,其他位取反。

0有正负两种。

补码

正数补码与原码相同。

负数符号位不变,其他位取反,末位+1。(这里末位+1不会导致溢出,因为不可能出现所有位为1的情况)

0只有一种。

负数由补码求原码,可以先将符号位不变,其他位取反,然后末位+1(这种方式比先末位-1再取反要好,因为可能除符号位外全是0)

移码

移码=真值+偏置值,通常偏置值取2^n,在这种情况下,补码符号位取反,得到移码。

0的移码是100000…

移码保持了原有的大小顺序

在IEEE754标准中,偏置值是2^n-1

存储

在C语言中,变量以补码的形式存储。

大端方式:先存储高位(靠前的是高位,这是正常思维方式)。

小端方式:先存储低位。

边界对齐:起始地址能被自身长度整除

定点数的运算

移位

算术移位

符号位不移动。

如果不记得负数的移位规则,可以先转换为原码再移位。

正数:左移右移均添0

负数:原码左右移均添0;补码负数右移添1,左移添0

逻辑移位

符号位也要移动。

正数负数左移右移均添0

循环移位

左移将最高位移到最低位。

补码的加减

符号位运算时产生的进位要丢掉,结果的符号位由运算给出。

溢出的判别

用两个符号位时,正数符号位为00,负数符号位为11

用两个符号位时,运算结果相同则无溢出,不同则有溢出。

左边的符号位初始值为0

10为负溢出,01为正溢出

强制转换

相同字节数的强制转换,对应的每一位都保持不变。

向低字节转换,将高位字节部分截断,地位直接赋值。

向高字节转换,高位部分会扩展为原数字的符号位。

浮点数的表示

N=r^E\cdot M

r是基数,通常为2

E是阶码

M是尾数

解码全零表示无穷小(无限接近0),阶码全1表示正负无穷大

IEEE 754标准

阶码用移码表示,偏置值为127或1023,尾数用原码表示,尾数采用隐藏位省略小数点钱的1。

短浮点数:数符1位,阶码8位,尾数23位

长浮点数:数符1位,阶码11位,尾数52位

因为数符在前,所以尾数不用考虑正负。

浮点数的运算

对阶

将阶码小的尾数右移,阶码+1,直到两个数的阶码相等为止。

不能将阶码大的尾数左移。

规格化

当尾数的最高位与符号位不同时,即为规格化形式。

左规:尾数的最高位与符号位相同,需要将尾数左移,阶码-1。

右规:当尾数求和结果溢出时,需要将尾数右移(相当于除2),阶码+1。

强制转换

精度从小到大的转换没有损失。

浮点数向整数转换,会有精度损失和溢出。

溢出

运算结果超出尾数的表示范围不一定溢出,只有规格化右规后阶码超出所能表示的范围时才会发生溢出。

浮点数运算下溢,可以当作机器零来处理,不需要中断来处理;浮点数上溢,必须中断来做相应的处理。

算数逻辑单元(ALU)

运算器的功能由控制器决定,运算器处理的数据通来自存储器,处理结果通常送回存储器。

和表达式:A_i\oplus B_i\oplus C_{i-1}

进位表达式:C_i=A_iB_i+(A_i\oplus B_i)C_{i-1}

进位产生函数:G_i=A_iB_i

进位传递函数P_i=(A_i\oplus B_i)

并行加法器的最长运行时间主要由进位信号的传递时间决定。

并行加法器分为串行进位和并行进位。

并行进位不依赖低位进位输出C_{i-1},但随着加法器位数的增加,C_i的逻辑表达式会变得很复杂。

并行进位方式通常采用 组内并行组间串行方式进位方式 或 组内并行组间串行进位方式。

74181是4位并行加法器,74182是先行进位芯片。

无符号数乘除

三种电路的共同点

ALU只需要支持加减法

都需要若干支持移位运算的寄存器

计数器用于记录还剩几轮处理,每次减1

控制逻辑的功能:

  1. 对ALU的加减控制信号
  2. 对寄存器的左移右移控制信号
  3. 对寄存器的写使能控制信号

无符号整数乘法

此电路跟手动计算类似

Y最后一位是1时,P + X

Y最后一位是0时,P + 0

然后右移(无符号数逻辑右移和算术右移都一样)

C用来存放加法产生的进位

两个n位数相乘,临时用2n位存放结果,最后舍弃前n位,只要前n位存在1,就说明溢出

有符号整数乘法

不需要存放加法的进位

Y右边有一个辅助位

辅助位 – Y的最低位 = 1时,P+[X]补

辅助位 – Y的最低位 = 0时,P+0

辅助位 – Y的最低位 = -1时,P+[-x]

然后算数右移

两个n位数相乘,临时用2n位存放结果,最后舍弃前n位,前n位都是0或者都是1,说明没有溢出,否则溢出,跟双符号位加减法类似

定点数除法

可以计算定点小数,也可以计算定点整数

暂存2n位,如果是计算整数,前n位补0,如果是计算小数,后n位补0

每次进行左移

存储系统

存储器

主存又称内存,辅存又称外存。

存储器的存取时间是完成一次操作的时间,存取周期是两次操作的时间间隔,通常存取周期大于存取时间,因为在读写操作之后,总要由一段时间恢复内部状态。

CD-ROM是只读型光盘存储器,其访问方式是顺序的而不是随机的。

磁盘属于直接存取存储器,其速度介于随机存取存储器和顺序存取存储器之间。

Cache主存系统的效率e=访问Cache的时间/平均访存时间。(可以先算出命中率)

Cache是主存中部分信息的副本,不能算入存储器的总容量。

存储器的层次结构

Cache-主存层:解决主存和CPU之间速度匹配的问题。由硬件完成,对所有程序员透明。

主存-辅存层:解决容量问题。由硬件和操作系统完成,对应用程序员透明。

寄存器 Cache 主存 辅存

从左到右价格、速度降低,容量变大

半导体存储器

引脚:片选线、地址线、数据线、读写控制线、行列通选线(仅DRAM)

SRAM

特点:速度快,集成度低,功耗大

DRAM

采用地址复用技术,地址线是原来的1/2,额外需要行列选通线。

DRAM上的电荷一般只能维持1~2ms,即使不掉电信息也会丢失,所以需要刷新,刷新时间间隔通常取2ms

按行刷新。

刷新方式有以下三种:

集中刷新:存取速度高,但在死时间不能访问存储器。

分散刷新:加长了存取周期,但没有死时间。

异步刷新:可以避免使CPU连续等待时间过长的时间,减少刷新次数,提高整机工作效率。

ROM

SRAM和DRAM都是易失性存储器,ROM具有非易失性,可靠性高。

EPROM可编程次数优先,且写入时间过长,所以不能作为随机存储器。

U盘是闪速存储器(FLASH),可擦除重写,速度快。

固态硬盘也是ROM,读写速度快,功耗低,价格高。

主存容量的扩展

位扩展法(连接更多的数据总线)

字扩展法(连接更多的地址总线)

字位同时扩展法(线选法、译码片选法)

我总结的表达式:

2^A\cdot D=容量

2^A:地址数

A:地址寄存器位数

D:编址位数,数据寄存器位数

双端口RAM和多模块存储器

双端口RAM

左右端口地址码相同时,会发生读/写冲突,解决方法是用BUSY信号。

多模块寄存器

单体多字寄存器

增大了存储器的带宽,提高了单体存储器的工作速度。

指令和数据必须连续存放。灵活性不如多体单字。

多体并行存储器

高位交叉:体号在前,相当于扩充容量,对速度几乎没有提高。

低位交叉:体内地址在前,存储器交叉模块数应大于等于T/r,以保证上次的存取操作已完成。连续存取m个字所需的时间为t_1=T+(m-1)r

当相邻的(4)次访问出现在同一个体内,就会发生访问冲突。

高速缓冲寄存器(Cache)

程序访问的局部性原理

时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息。

空间局部性:在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的。

Cache的工作流程

Cache和主存的映射

直接映射

主存储块只能装入Cache中的唯一位置,简单但不灵活,冲突概率高,空间利用率低。

地址结构为:主存字块标记-Cache字块地址(行)-字块内地址

主存字块标记数=主存容量/Cache容量

字块内地址数=Cache每块容量/编址

全相联映射

可以把主存数据块装入Cache中的任何位置,空间利用率高,命中率高,但成本高。

地址结构为:主存字块标记-字块内地址

组相联映射

是前两种方法的折中做法,组间直接映射,组内全相联映射。

2路组相联映射表示每组两个数据块。

地址结构为:主存字块标记-组地址-字块内地址

Cache主存块替换算法

随机算法

先进先出算法

近期最少使用算法:依据程序访问的局部性原理:在程序的执行过程中,程序对主存的访问是不均匀的。

最不经常使用算法

Cache写策略

非写分配法通常与全写法合用,写分配法通常与写回法合用

命中

全写法:命中时,把数据同时写入Cache和主存

写回法:命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。

不命中

写分配法:加载主存中的块到Cache中,然后更新这个Cache块。

非写分配法:只写入主存,不进行调块。

Cache总容量的计算

Cache的总容量为:行数*(1有效位+标记位Tag+每行存储的数据)

虚拟存储器

虚拟存储器具有主存的速度和辅存的容量

页式虚拟存储器

虚拟空间和主存空间都被划分成同样大小的页。

最后一页的零头无法利用而造成浪费。

虚地址结构:虚页号-页内地址

页框号与页内地址拼接为物理地址。

段式虚拟存储器

按程序的逻辑结构划分,各个段的长度因程序而异。段表中要给出各段的起始地址与段的长度。

段的长度可变导致分配空间不便,容易在段间留下碎片,造成浪费。

虚地址结构:段号-页内地址

段页式虚拟存储器

先按逻辑分段,每段再划分为固定大小大的页。每个程序对应一个段表,每段对应一个页表。

在段页式虚拟存储器中,既要查找段表又要查找页表。

快表(TLB)

快表是用相联存储器实现的,相联存储器根据内容访问,不需要地址,访问时将内容进行比较,如果相等,则将此单元中余下的信息读出。

利用程序执行的局部性原理,在一段时间内总是经常访问某些页,把这些页放在快表中,则可以明显提高效率。

快表是慢表(Page)的一个很小的副本。

Cache命中说明所需页面已调入主存,Page必然命中,但TLB不一定命中。

Cache不命中不能说明所需页面没有调入主存。

固态硬盘

原理

闪存Flash Memory

组成

内存翻译层

存储介质(多个存储芯片,每个芯片有多个块,每个块有多个页)

读写

以页为单位读写

以块为单位擦除,擦干净的块,每页可以写一次,读无数次

支持随机访问

读取比写入快,如果要写的页有数据,则不能写入,要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新页

与机械硬盘相比

性能好、安静、能耗低

造价高、每个块写的次数有限

磨损均衡技术

有限写入擦除次数少的新闪存块

指令系统

指令格式

指令的基本格式

零地址指令:运算时,两个操作数隐含地中栈顶和次栈顶弹出。

一地址指令:可以隐含地约定一个操作数由ACC提供。

二地址指令

三地址指令

四地址指令

定长操作码指令格式

地址码会占据固定操作码以外的全部空间。

扩展操作码

段操作码至少要留一个作为扩展操作码。

数据寻址方式

隐含寻址:ACC作为第二操作数地址

立即寻址:A本身就是操作数。执行时间最短,但A的位数限制了立即数的范围。

直接寻址:A是操作数的真实地址

间接寻址:A是操作数的地址的地址

寄存器寻址:A指定一个寄存器,寄存器中存放操作数。相当于把直接寻址中的主存换成寄存器。

寄存器间接寻址:A指定一个寄存器,寄存器中存放操作数的地址。相当于把间接寻址中的第一个主存换成寄存器。

相对寻址:程序计数器PC的内容加上形式地址A,广泛应用于转移指令,也应用于多道程序(便于程序浮动)。

基址寻址:基地址不变,形式地址可变。应用于多道程序。

变址寻址:变址寄存器内容可变,形式地址不变,作为基地址。应用于数组循环。

堆栈寻址:用寄存器的是硬堆栈,用主存的是软堆栈。

CISC和RISC

CISC可以通过一定方式实现流水线,RISC必须实现指令流水线。

CISC通用寄存器较少,RISC通用寄存器较多。

CISC采用微程序控制,RISC采用组合逻辑控制。

CISC指令长度不固定,RISC指令长度固定。

RISC采用硬布线,CISC采用微程序。

中央处理器

CPU的功能

指令控制

操作控制

时间控制

数据加工

中断处理

CPU的基本结构

运算器

算术逻辑单元ALU

暂存寄存器:从主存读到的数据,不能直接放到通用寄存器中,要用到暂存寄存器

累加寄存器

通用寄存器:存放操作数和地址

程序状态字寄存器:进位等标志

移位器

计数器

不透明的:累加寄存器、通用寄存器、程序状态字寄存器

其他组件都是透明的。

控制器

程序计数器PC:下一条指令的地址

指令计数器IR:当前指令

指令译码器:仅对操作码字段进行译码

存储器地址寄存器MAR:要访问主存单元的地址

存储器数据寄存器MDR:向主存写入或从主存中读出的信息

时序系统

微操作信号发生器

CPU中没有地址译码器

PC也是寄存器

不透明的:程序寄存器

其他组件都是透明的。

数据总线位数与处理器位数相同

通用寄存器位数与机器字长相等

指令的执行过程

一个指令包含若干机器周期

一个机器周期包含若干时钟周期(又称节拍、T周期、CPU周期,是CPU操作的最基本单位)

每个指令周期内机器周期数可以不相等

每个机器周期内的时钟周期数可以不相等

指令周期分为:取指周期、(间址周期)、执行周期、(中断周期)

机器周期通常由存取周期来确定,因为存取周期耗时最长。

不同长度的指令,取指操作不同。指令字长为存储字长的几倍,就要访存几次。

指令流水线的每个流水段为时钟周期。

指令总是根据程序计数器读出,转移指令也是将指令地址存放到程序计数器中

指令字长是机器字长的整数倍。

取指周期

根据PC中的内容从主存中取指令字(包含操作码和地址码)。

取指令的同时,PC+1。

取指操作是控制器自动进行的,不需要得到命令

间址周期

取操作数的有效地址

执行周期

没有统一的数据流向

中断指令

保存断点,形成中断服务入口地址

数据通路

数据通路分为三种:

CPU内部单总线方式

CPU内部三总线方式

专用数据通路方式(没有总线)

专用数据通路总线方式性能好,冲突少,成本高,实现难度高

ALU只能只能有一个输入端可与总线相连,另一输入端需通过暂存器与总线相连

控制器的功能和工作原理

控制器的结构和功能

CU的输入:

(指令译码器产生)指令寄存器中的操作码

时钟

标志(条件专业)

外来信号

CU的输出:

CPU内部控制信号

到控制总线的控制信号

硬布线

地址总线既可以访问主存,又可以访问IO设备

微程序

不需要考虑逻辑门,不需要考虑电路设计。

微命令:执行微操作的控制信号

微操作:微命令的执行过程

微操作不可分割

一个机器指令(例如加法),可以分解为若干个微命令,有些微命令是相容的,可以同时执行,有些微命令是互斥的,不能同时执行。把可以同时完成的微命令,对应一个微指令,互斥的微命令也对应一个微指令。

多条微指令可以构成一个微程序,一条机器指令对应一个微程序。

取指操作可以编成一个微程序

微程序的组成

控制存储器CM:存放各指令对应的微程序,用ROM,因为具有不易失性。微程序控制器是CPU的一部分。

微地址寄存器CMAR:存放微地址形成部件送来的微地址(不是主存里的地址),为CM中读取微指令做准备。

微指令寄存器CMDR:存放从CM取出的微指令,位数与微指令字长相等,与IR类似

微地址形成部件:产生初始微地址和后续微地址

顺序逻辑单元:控制形成下一条微指令

地址译码器

执行过程

首先由一条机器指令,然帮把操作码部分送到微地址形成部件形成微地址,有了初始微地址后,送到顺序逻辑单元,然后判断是顺序执行还是跳转,然后送到微CMAR。然后进行地址译码,形成控制单元后,送到CM,取出微指令送到CMDR,然帮把CMDR中的下地址送到顺序逻辑单元。

若指令系统中具有n种机器指令,则控制存储器种的微程序数至少是n+1,1是公共的取指操作,如果有间址操作或中断操作,还要额外+1

微指令格式

水平型微指令

一条指令可以执行多个操作

优点:微程序短,执行速度块。

缺点:指令较长,编写麻烦。

垂直型微指令

一个微操作字段规定一个微指令,与机器指令操作码功能类似。

优先:微指令简单,编写方便

缺点:微程序长,执行速度慢

混合型微指令

在垂直型的基础上,增加一些不太复杂的并行操作

编码方式

直接编码方式

在微指令的操作控制字段中,每一位代表一个微操作命令。

字段直接编码方式

将微指令的控制字段分成若干段,每段经译码后发出控制信号。

互斥性微命令分在同一段内,相容性微命令分在不同段内。

每一个段中要留出全0表示不操作。

优点:可以缩短微指令字长

缺点:要通过译码电路后在发出微命令,因此比直接编码方式慢。

字段间接编码方式

优点:可进一步缩短微指令字长

缺点:削弱了微指令的并行控制能力

通常作为字段直接编码方式的一种辅助手段

微指令的形成方式

(前两种最常用)

  1. 断定方式:由微指令的下地址指出后继微指令地址
  2. 根据机器指令的操作码形成
  3. 增量计数法(CMAR)+1→CMAR,适用于后继指令的地追查连续的情况
  4. 分支转移
  5. 测试网络
  6. 硬件直接产生

设计步骤

取指周期要补充

Ad(CMDR)→CMDR

OP(IR)→CMAR

执行周期要补充

Ad(CMDR)→CMAR

硬布线与微程序的比较

微程序简单、慢、易扩展、较规整、应用于CISC(指令多)

硬布线的特点与之相反。

微程序控制器的工作原理:微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可。

硬布线控制器的工作原理:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生。

流水线

分类

按可以完成的功能,流水线可以分为单功能流水线和多功能流水线。

静态流水线各段只能按同一种功能的连接方式工作,动态流水线相反。

线性流水线没有反馈回路,非线性流水线有。

影响因素(导致流水线阻塞的因素)

结构相关:争夺统一资源

数据相关:read after write

控制相关(控制冒险):遇到转义指令和其他改变PC值的指令,解决方案是提高猜准率和 预取两种情况的目标指令。

性能指标

吞吐率:单位时间内流水线所完成的任务数量,TP=\frac{n}{T_k}

加速比:不使用流水线与使用流水线所用的时间之比,S=\frac{T_0}{T_k}=\frac{kn}{k+n-1}

效率:占用面积与总面积之比,E=\frac{T_0}{kT_k}

超标量流水线

每个周期内可并发多条独立指令。

每个功能段时间不变,以空间换取时间。

多处理器

单指令流单数据流(SISD)

就是单处理器系统

单指令流多数据流(SIMD)

一个CU,多个ALU

只能并发不能并行,每条指令可以同时处理多个具有相同特征的数据,例如用于for循环

数据级并行

多指令流单数据流(MISD)

多条指令并行执行,处理同一个数据,现实中不存在

多指令流多数据流(MIMD)

特征:各指令序列并行执行,是线程级或进程级并行

多处理机系统

多个处理器可以共享主存和最低级的Cache

L1、L2 Cache每个处理器独占,L3 Cache多个处理器共享

LOAD/STORE可以直接访问对方的存储器

多计算机系统

不共享存储器,只能通过消息队列传送数据

向量处理器

用于向量计算

属于SIMD

总线

概述

总线分类

片内总线:连接芯片

系统总线:连接功能部件

通信总线:连接不同计算机系统

系统总线结构

单总线结构

有系统总线(包含地址总线、数据总线、控制总线)

优先:简单成本低

缺点:带宽低负载中不支持并发

地址总线不能回传

双总线结构

有主存总线、I/O总线,并且还需要通道

优点:实现了存储器总线和I/O总线的分离

缺点:需要增加通道等硬件设备

三总线结构

有主存总线、I/O总线和DMA总线

优点:提高了I/O设备的性能

缺点:系统工作效率较低

性能指标

总线的传输周期

总线的时钟周期

总线的工作频率

总线的时钟频率

总线宽度

总线带宽

总线带宽=总线工作频率*总线宽度

(注意单位是B/s还是bit/s)

总线仲裁

集中仲裁方式

“总线忙”信号都是由获得总线控制权的设备建立。

链式查询方式

离总线近的部件优先级高。

控制总线数是3

计数器定时查询方式

由PC控制使用权。

控制总线数是\lceil\log_2n\rceil+2

独立请求方式

每个设备均有一对总线请求线和总线允许线。

控制总线数是2n+1

分布仲裁方式

总线操作和定时

总线传输的四个阶段

  1. 申请分配阶段
  2. 寻址阶段
  3. 传输阶段
  4. 结束阶段

同步定时方式

适用于总线长度较短及总线所接部件的存取时间比较接近的系统。设备诉状是不同也可以使用这种方式,但不能发挥高速设备的告诉性能。

优点:速度快,简单

缺点:不能及时进行数据通信的有效性校验,可靠性较差。

异步定时方式

不互锁方式

主设备不管从设备时候接收到信号。

半互锁方式

主设备要确认从设备已接收到信号。

全互锁方式

主设备要确认从设备已接收到信号,从设备要确认主设备已撤销信号。

总线标准

要记住的总线标准:ISA、EISA、PCI、PCI-Express、USB

I/O系统

I/O接口

I/O接口是主机和外设之间的交接界面

I/O指令实现的数据传送发生在通用寄存器和I/O端口之间

程序查询方式

CPU一旦启动I/O,必须停止现行程序的运行,并不断检测设备状态,直到设备已做好准备,CPU才能执行I/O指令进行数据传送

多道程序环境下,采用I/O方式并不意味着此进程会一直占用CPU,其他进程也会轮流上CPU运行

中断方式

内中断和外中断,可以根据是否与当前执行的指令相关来区分

中断方式不适用于快速外部设备,因为因为CPU可能来不及取走数据缓冲寄存器中的数据

CPU和外部设备并行工作,外部设备I/O完成后,会向CPU发出中断请求,CPU再对中断请求进行处理,同时外部设备可以进行下一阶段的I/O工作

每个指令周期的末尾,CPU会检查是否有中断信号需要处理,如果有,CPU就会执行中断隐指令,然后执行中断服务程序;中断服务程序执行完后,再让程序的执行流回到以前的程序,继续往后执行。

中断隐指令

中断隐指令的过程为:关中断、保存断点(PC)、引出中断服务程序的入口地址(PC)

中断隐指令的执行必须一气呵成,中间不能被其他中断打断,所以要关中断

中断向量由硬件产生,中断向量是中断程序的入口地址

中断向量地址是中断程序入口地址的地址

中断服务程序

保护PSW的工作也可以在中断隐指令中完成,但保存通用寄存器一定在中断程序中

单重中断,中断服务程序的过程:保护现场(通用寄存器和PSW)、执行中断服务程序、恢复现场、开中断、中断返回

如果支持多重中断,还要在保护现场时保存屏蔽字;恢复现场时恢复屏蔽字;执行中断服务程序前后开中断和关中断,允许在执行中断服务程序时出现其他的中断

多重中断用中断屏蔽技术来确定中断的优先级

DMA方式

DMA方式在外存和内存之间开辟一条“直接数据通路”,信息传送时,DMA控制器从CPU完全接管对总线的控制,信息不经过CPU;CPU仅在预处理阶段将总线使用权交给DMA控制器,以及DMA传输完成中断时处理

DMA每次可以传输一整块数据(程序查询和中断方式是一个字)

DMA每准备一个字的数据,访存一次(一块数据包含很多字,一次DMA传输访存多次)

DMA控制器访存可能跟CPU访存冲突,应该DMA有限,但DMA需要的时钟周期数比较少,所以DMA对主存访问采用周期挪用方式

周期挪用:当DMA控制器和CPU都需要访存时,DMA挪用一个或几个存取周期

中断方式和DMA方式,都不需要等待CPU处理,数据传输和CPU处理时并行的

版权声明


本作品系原创, 转载须遵循 CC BY-NC-ND 4.0 许可协议
本文标题:考研408笔记-计算机组成原理
本文链接:https://www.bunny.icu/archives/893

推荐文章

发表评论

textsms
account_circle
email

bunny.icu

考研408笔记-计算机组成原理
考研408笔记-计算机组成原理
扫描二维码继续阅读
2021-12-29