计算机组成原理

零、写在前面

本文适用于计算机组成原理(第五版)期末突击使用,基于复习提纲编写,在此基础上对部分内容进行了展开,对于某些模块也附上了相关视频链接。

按照“计算机系统概述数据表示与运算存储器指令系统控制器 I/O”的顺序列出知识主线和复习要点。此外,部分比较零散的知识归纳后列出。

重点内容需要结合教材(清华、哈工大两版均可,完整学习网上资源推荐哈工大刘宏 伟老师公开课,速通视频推荐速成视频)。

本文内容较多,完整阅读时间大概在半小时左右,理解掌握时间大概在十二小时左右(完整掌握后正常期末成绩在80+),请各位同学根据时间安排合理规划。

一、计算机系统概述

本章节内容以了解为主

1、 电子计算机发展

代数 时间 硬件技术 速度(次/秒)
1946-1957 电子管 40 000
1958-1964 晶体管 200 000
1965-1971 中小规模集成电路 1 000 000
1972-1977 大规模集成电路 10 000 000
1978-今 超大规模集成电路 100 000 000

2、 计算机系统的组成

硬件系统:主机、打印机、磁盘(光盘等)、网络设备、其他硬件设备

软件系统:操作系统、编译系统、网络操作系统、应用软件系统、软件文档、资料

3、 冯诺依曼计算机硬件构成及特点

请添加图片描述

  1. 计算机由五部分组成
  2. 采用存储程序的方式
  3. 数据以二进制编码表示
  4. 指令由操作码和地址码组成
  5. 指令在存储器中按执行顺序存放
  6. 机器以运算器为中心

4、 摩尔定律

当价格不变时,集成电路杀昂可容纳的元器件的数目约每隔18-24个月便会增加一倍,性能也将提升一倍。

5、 计算机的多级层次结构(虚拟机)

请添加图片描述
请添加图片描述

二、数据的运算和表示(运算器)

1、 真值数字化

  1. 进制:十、二、十六进制及互相转化
    1. 十进制转二进制:对整数部分采用除二取余法,即辗转相除法,对小数部分采用乘二取整法。注意小数点前转先算出的是最高位,小数点后的部分先算出的是最低位。
    2. 二进制转八、十六进制:三(四)个二进制位为一组,小数点左侧从右往左写,小数点右侧从左往右分组,不足的位置用0补齐(1 101. 010 1) 2 _2 2=(001 101. 010 100) 2 _2 2=(15.24) 8 _8 8
  2. ± \pm ±:有符号数,0表示+,1表示-
  3. 小数点:定点数(定点整数【阶码为j,位数为s,小数点固定在数的最低位之后即:符号位、数值位、隐含的小数点位置(依靠约定并不实际显示)例如1111=-7】,定点纯小数【小数点固定在最高位之后,例如1111=-0.875】,溢出(指的是超出数字所能表示的范围),浮点数(传统、IEEE754
  4. 数据的存储和排列
    1. 大端方式:按照从最高有效字节到最低有效字节的顺序存储数据,即最高有效字节放在最前面(反着放)
    2. 小段方式:按照从最低有效字节到最高有效字节的顺序存储数据,即最低有效字节放在最前面(顺着放)
  5. IEEE754:小数点位置在阶码和尾数之间,为隐含式结构

​ 数符(符号)|阶码|尾数 总位数

短实数: 1 8 23 32

长实数: 1 11 52 64

临时实数:1 15 64 80

2、 数字化的编码

**省流:**正数三码合一;负数原码等于机器码,反码除符号位按位取反,补码是按位取反后末尾加一。正负数的移码都是在补码的基础上最高位取反。

1 -1
原码 0000 0001 1000 0001
反码 0000 0001 1111 1110
补码 0000 0001 1111 1111
移码 1000 0001 0111 1111

(1)原码

**省流:**原码在原数值的基础上添加符号位其余保持不变

机器数的最高位为符号位,0正1负,数值紧随其后,以绝对值的形式给出

非常接近真值;符号位不参与运算;数值0的表示结果不唯一

eg:+0.1011(n=4),则 [ x ] 原 = 0.1011 [x]_原=0.1011 [x]=0.1011;-0.1011,则 [ x ] 原 = 1.1011 [x]_原=1.1011 [x]=1.1011

(2)反码

**省流:**反码:正数保持不变,负数按位取反

机器数的最高位为符号位,0正1负,数值0的表示结果不唯一

eg:+0.1011(n=4),则 [ x ] 反 = 0.1011 [x]_反=0.1011 [x]=0.1011;-0.1011,则 [ x ] 反 = 1.0100 [x]_反=1.0100 [x]=1.0100

(3)补码

**省流:**补码:正数保持不变,负数按位取反末尾加一

机器数的最高位为符号位,0正1负,数值0的表示结果是唯一的(全是000000)

eg:+0.1011(n=4),则 [ x ] 补 = 0.1011 [x]_补=0.1011 [x]=0.1011;-0.1011,则 [ x ] 补 = 1.0101 [x]_补=1.0101 [x]=1.0101

(4)移码

**省流:**先求补码然后将符号位取反

eg:+0.1011(n=4),则 [ x ] 移 = 1.1011 [x]_移=1.1011 [x]=1.1011;-0.1011,则 [ x ] 移 = 0.0101 [x]_移=0.0101 [x]=0.0101

(5)溢出处理

三种任选其一:

  1. 当符号相同的两个数(补码形式)相加时,如果结果的符号位与加数/被加数的符号位不同时,则溢出
  2. 当任意符号的两数相加时,如果数值高位的进位≠符号位的进位时,则溢出
  3. 采用双符号位时,正数的符号位为00,负数的符号位为11,符号位参与运算,运算结果的两个符号位不同时(01或10)则表示溢出。双符号位的补码求解的模应该为 2 ( n + 2 ) 2^{(n+2)} 2(n+2)或者为4

3、 定点数加减乘

加法和乘法明确说明不考,故此处进行省略

(1)定点数加减法

  1. 补码的求解方法仍然需要减法,通过对补码求解公式进行拆分,引出”符号位不变,原码数值按位取反末尾加一的计算规律“
  2. [ x ] 补 + [ y ] 补 = [ x + y ] 补 [x]_补+[y]_补=[x+y]_补 [x]+[y]=[x+y] ( m o d 2 n + 1 / 2 ) (mod 2^{n+1}/2) (mod2n+1/2)
  3. [ x − y ] 补 = [ x + ( − y ) ] 补 = [ x ] 补 + [ − y ] 补 = [ x ] 补 − [ y ] 补 [x-y]_补=[x+(-y)]_补=[x]_补+[-y]_补=[x]_补-[y]_补 [xy]=[x+(y)]=[x]+[y]=[x][y]
  4. [ − x ] 补 = − [ x ] 补 [-x]_补=-[x]_补 [x]=[x]

(2)定点数乘法

  1. 原码一位乘:
  2. 补码一位乘:
    1. 矫正法
    2. Booth算法

4、 浮点数加减

(1) 浮点数表示

j f j 1 j 2 ∣ S f s 1 s 2 … S m j_fj_1j_2|S_fs_1s_2…S_m jfj1j2Sfs1s2Sm

浮点数由阶码和尾数两部分组成,阶码是整数,由阶符和阶码的数值部分组成,反应浮点数的表示范围以及小数点的实际位置。尾数是纯小数,其数值部分反应浮点数的精度,其符号(尾符)代表浮点数的正负。

(2)浮点数加减法!!重要!!

请结合例题1食用

  1. 对阶操作:比较两浮点数的阶码大小,求出差值E,将小的右移E位,并在阶码值上加上E使两数解码相等,符号位不参与右移,前面补零。可保留右移时的高位来保证运算的精度
  2. 尾数的加减运算:对阶完成后,两尾数进行加减运算,得到对应的和差
  3. 规格化操作:
    1. 如果结果的两个符号位的值不同,则代表运算尾数结果溢出,要在位数结果右移一位,阶码+1,称为右规”向右规格化“
    2. 两个符号位的值相同,最高数位值与符号位相同,将尾数连续左移n次直到不同,同时阶码-n,称为左规”向左规格化“
    3. 双符号位的原码规格化尾数最高位为1,补码规格化尾数为:00.1xxx或11.0xxx
  4. 舍入:在右规或对阶时,尾数低阶上的数值会被移掉影响精度。常用0/1舍入法。当移掉的最高位为1时,尾数的末位加一,如果溢出则要再次右规。
  5. 检查阶码是否溢出:表示浮点数溢出,不溢出则正常结束。下溢出结果为机器零(阶码和尾数全部置0),上溢出则置溢出标志。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C80igY6z-1661349029812)(期末复习.assets/image-20220823170325235.png)]

5、 奇偶校验

奇偶校验码只能发现一位或奇数个位数的错误,不能确定错误发生在哪一位上,考虑到大多数情况下发生1位错误的概率要远大于多位同时出错,该方案还是有很大的价值的。

数据 奇校验编码 偶校验编码
000 (1)000 (0)000
001 (0)001 (1)001
010 (0)010 (1)010
011 (1)011 (0)011
100 (0)100 (1)100
101 (1)101 (0)101
110 (1)110 (0)110
111 (0)111 (1)111

三、存储系统

1、 主存

(1)RAM

  1. SRAM

    基本单元电路(一对反向触发器组成的双稳态电路)——芯片(拆分地址并重合交叉选择)——时序(地址线、控制线、数据线)

  2. DRAM

    基本单元电路(栅极电容)——芯片(地址分时复用并重合交叉选择)——时序(地址线、控制线、数据线)——刷新和再生——三种刷新方式:

  3. DRAM和SRAM的对比

    DRAM采用栅极电容存储信息,SAM采用双稳态触发器存储信息

    DRAM集成度高,功耗小,存取慢,一般用来组成大容量主存系统;SRAM存取快,集成度低,功耗大,组成高速缓冲存储器和小容量主存系统。

    SRAM需要有片选信号,DRAM不需要,可以用行选通信号和列选通信号兼做片选信号。

    SRAM地址线直接和容量有关,DRAM采用地址复用技术,一般DRAM地址引脚数为地址位数的一半:采用分时复用,先传一半行地址,再穿一半列地址。引脚数增加一个,地址位数增加两位,容量扩大四倍。

(2)ROM

PROM_EPROM_EEPROM-Flash-NOR Flash-NAND Flash

(3) 存储器扩展!!重要!!

  1. 位扩展

    只在位数方向扩展,目的是加大字长,芯片的字数和存储器的字数是一致的

    连接方式:将各存储芯片的地址线、片选线和读写线相应地并连起来

    将各芯片的数据线单独列出

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2k8yueof-1661349029812)(期末复习.assets/image-20220823175140212.png)]

  2. 字扩展

​ 仅在字数方向扩展,目的是增加存储器中字的数量而位数保持不变。

​ 连接方式:将各存储芯片的地址线、数据线和读写线并连起来,用片选信号来区分各个芯片。

在这里插入图片描述

  1. 字位扩展!!重要!!

请结合例题2食用

​ 计算所需芯片数量、按位分组、按最大芯片根数分配地址,剩余高位地址根数作为片选(译码器输入)并根据题目表要求列出地址表,完成各组地址分配)

eg:32k*8位EEPRM扩展成128k*16位只读存储器,需要多少片EPROM?画出存储器的组成框图?

需要4组,每组两片,共八片

每个芯片十五(32k= 2 5 + 10 2^{5+10} 25+10)根地址线,需要构成的是十七根地址线的芯片,多了两根做片选信号,正好用2:4译码器,两个输入四个输出,选这四组是哪一组。

在这里插入图片描述

(4)主存储器与CPU的链接!!重要!!

连接原理:主存储器通过DB、AB、CB与CPU进行连接;数据总线的位数与工作频率的乘积正比于数据传输速率;地址总线的位数决定了可寻址的最大内存空间;控制总线指出本次IO操作完成的时刻

eg:使用8k*8的SRAM芯片组成32k*16的存储器,画出芯片与CPU连接的逻辑图

位扩展:8位-16位,需要2片,数据位数翻倍(组内)

字扩展:8k-32k,需要4组,地址线增加2位( 2 2 2^2 22),通过地址译码使地址增加2位(添加一个2:4译码器)

片数:(64k*8)/(16k*4)=8片

地址范围:每片 8K 个存储元,因此片内地址由 13 位二进制数构成,还需要 2 位地址进 行字扩展,因此地址共 15 位。

第一组:00 0 0000 0000 0000 ~ 00 1 1111 1111 1111

第二组:01 0 0000 0000 0000 ~ 01 1 1111 1111 1111

第三组:10 0 0000 0000 0000 ~ 10 1 1111 1111 1111

第四组:11 0 0000 0000 0000 ~ 11 1 1111 1111 1111

连接结构图:

在这里插入图片描述

注意:本图中片4-片7的片上的数据总线应该为 D 15 − D 8 D_{15}-D_8 D15D8,图片内容有错误

2、 辅存

(1)分类

磁表面(机械硬盘、磁带)、磁芯(破环性读出)、光存储(CD、DVD)、半导体存储器(TTL,静态MOS)

(2)磁表面技术指标

  1. 记录密度(道密度、位密度)
  2. 记录容量
  3. 平均访问时间
  4. 数据传输速率

3、 存储系统

(1)性能指标

容量,速度,位价

(2)程序访问的局部性原理

包含时间局部性和空间局部性。时间局部性:最近的未来要用到的信息,看很可能是正在使用的信息,因为程序正在循环。空间局部性:最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是连续的,因为指令通常是顺序存放、顺序执行的。(本条内容了解即可)

(3)Cache-主存层次

  1. 技术指标:命中率、平均访问时间、效率
  2. 地址映像:直接映像、全相联映像、组相联映像!!重要!!

​ 直接映像:每一个区与cache的页数相同,多少个区,每个cache就有多少个内容,冲突问题严重。【主存字块标记】【cache字块地址】【块内地址】
在这里插入图片描述

全相联映像:每个页中的每个区都可以放到cache中的任意位置,冲突率降低了,电路复杂度非常高。【主存字块标记】【块内地址】

在这里插入图片描述

组相联映像:分组,组间直接映射,组内全相联【组号】【块号】【块内地址】

在这里插入图片描述

  1. 地址变换:主存地址分段(位数),Cache地址分段(位数)!!重要!!

​ 结合例题2食用最佳

  1. Cache与内存一致性:写回法,写一次法

(4)主存、辅存层次

  1. 调入机制:

    页式虚拟存储器、段式虚拟存储器、段页式虚拟存储器

  2. 地址变换:逻辑(虚)地址分段(位数),查表(页表、段表、段表+页表),主存地址分段;

  3. 快表(TLB)、内表(逻辑地址转化为物理地址)、外表(逻辑地址转化为物理地址)

  4. 虚拟存储器、TLB和Cache的协同操作:

​ 在最好的情况下,虚拟地址由TLB进行转换到实地址(表明页已在内存,不仅慢表有,快表也有),然后发现该实地址所在的块就在Cache中,故直接找到,并将偏移量对应的数据(字)取回送给处理器。

​ 在一般情况下,虚拟地址由TLB进行转换到实地址(表明页内已存在内存,不仅慢表有,快表也有),然后发现未命中cache,只能从内存中将相应的块送到cache,找到正确的数据并取回处理器。

​ 在最坏的情况下,TLB和页表均未命中(这种情况cache一定不会命中,因此cache使内存中块的副本),需要从辅存调入页到内存,然后更新页表(慢)和快表,并将页中所要查找的字所在的块调入cache,与此同时,找到正确的数据并取回处理器。

(5)cache与虚存的异同

相同点:

  1. 两者都是为了提高存储系统的性价比,即使存储系统的性能接近高速存储器

  2. 都是基于程序局部性原理:一个程序运行时只需要用到程序和数据的一小部分,将这部分放到比较快的存储器中即可,其他大部分放在速度低、价格便宜、容量大的存储器中,能以较低的价格实现高速的运算。

不同点:

  1. 在虚拟存储器中未命中的性能损失要远大于Cache系统中未命中的损失,主存和cache性能相差5-10倍,外存和主存性能相差上千倍
  2. cache主要解决CPU和主存的速度差异问题,虚存主要解决存储容量问题
  3. CPU和cache和主存之间均有直接访问通路,cache不命中时可直接访问主存。而虚存所依赖的辅存与CPU之间不存在直接的数据通路,主存不命中时只能通过调页解决,CPU最终还是要访问主存
  4. cache管理完全由硬件解决,对系统程序员和应用程序员完全透明。而虚存管理由软件(操作系统)和硬件共同完成,虚存对实现存储管理的程序员是不透明的(段式和段页式管理对应用程序员半透明)

四、指令系统

1、 指令格式

(1)操作码

​ 操作码扩展技术(指令长度不变,以最长指令码的操作码位数作为基础,逐步向较短地址码长度指令进行扩展,以此来增加操作码的数量)

(2)地址码

​ 充分利用CPU内存的专用寄存器,减少地址码数量(PC)以及长度(寄存器编号代替内存地址)

2、 寻址方式

(1)地址寻址

  1. 顺序寻址:PC+1→PC
  2. 跳跃寻址:(PC)+A→PC

(2)数据寻址

  1. 立即数寻址:操作数在指令之中
  2. 储存器直接寻址:操作数在内存地址中
  3. 存储器间接寻址:操作数在内存地址的地址之中
  4. 寄存器直接寻址:操作数在寄存器值中
  5. 寄存器间接寻址:操作数在寄存器所在地址的内存之中
  6. 基址寻址(BR)+A,用于段页式虚拟存储器虚拟页面向内存的调入
  7. 变相寻址(IX)+A,用于访问数组(数组中元素相加)
  8. 相对寻址(PC)+A,用于浮动程序,使逻辑存储空间中编程的程序,调入到内存任意位置都可以正常运行
  9. 堆栈寻址:SP,保护断点和现场(CPU内部寄存器)

(3)RISC和CISC

  1. RISC形成

    28定律:80%的常用程序仅使用了指令集中20%的指令,而其他80%的指令仅用于完成20%的应用场景

  2. RISC特点:

    1. 优先选取使用频率高的简单指令以及有用而不复杂的指令,避免使用复杂的指令
    2. 指令长度固定,指令格式种类少、寻址方式种类少、指令之间各字段的划分比较一致,各字段的功能也比较规范
    3. 只有取数、存数指令访问存储器(数据在寄存器和存储器之间传送),其余指令的操作均在寄存器之间进行
    4. CPU中通用寄存器数量相当多,算术逻辑运算指令的操作数都在通用寄存器中存取
    5. 大部分指令在一个或者小于一个机器周期内完成,易于实现流水线加速
    6. 以硬布线控制逻辑为主,不用或少用微程序控制
    7. 特别重视程序编译优化工作,以减少程序执行时间

五、控制器

1、 数据通路与操作控制信号(命令)

(1)专用寄存器

(2)模型机的数据通路

(指令周期、CPU 周期(机器周期)、时钟周期(状态、 T 周期、节拍))

(3)技术指标——机器速度(MIPS 和 CPI)

  1. MIPS:每秒钟多少百万条指令。

  2. CPI:每条指令多少个时钟周期。

(4)模型机的操作控制信号及过程!!重要!!

在这里插入图片描述

加法指令完成以下操作:

  1. 从存储器取指令,送入IR,并进行操作码译码,PC+1,为下一条指令做准备(取指令)。
  2. 在ALU计算数据地址,并将计算得到的有效地址送到AR(间址)。
  3. 到存储器取数(去操作数)
  4. 进行加法计算,结果送到寄存器,并根据运算结果置状态位N,Z,V,C(计算)

指令的执行过程:

在这里插入图片描述

2、微程序控制器!!重要!!

(1)微程序、微指令、微操作、微命令

微命令:控制部件通过控制总线向各执行部件发出各种控制命令

微指令:在一个CPU周期内,一组实现一定操作功能的微命令的组合

微操作:执行部件接受微命令后进行的操作

微程序:实现一条机器指令功能的许多条微指令组成的序列

总结:

  • ​ 一个程序=一组机器指令
  • ​ 一条机器指令(微程序)=一组微指令
  • ​ 一条微指令=一组微命令

(2)控制存储器

存储位置程序的存储器,称为控制存储器

由于微程序是对机器指令的解释,且指令系统的机器指令固定,所以微程序固定,控制存储器只需要ROM即可

由于微程序由微指令序列组成,而微指令包括控制字段和下一条微指令地址,故微指令字长要远大于指令字长,继而需要较大容量的控制存储器

执行一条机器指令就相当于执行控制存储器中的一段微程序。

(3)微指令格式(控制信号+下一条微指令地址)

(4)微指令格式化

  1. 缩减控制信号长度:不编码、完全编码、部分编码:互斥+相关
  2. 增强微程序流控制方式:将下一条微指令地址码分为:转移控制字段+转移控制地址。
  3. 水平型微指令和垂直型微指令

​ 无编码和部分编码均属于水平型微指令(并行发出所有指令或互斥信息分组【控制信号位数缩减,但并行度为损失】),完全编码属于垂直型微指令(类似于机器指令,一次只能表达一条微命令,并行度严重降低)

水平型微指令:

	1. 一次能定义且并行执行多个微命令的微指令
	1. 并行操作能力强,效率高,灵活性强
	1. 执行一条机器指令所需的微指令数目少,执行时间短。
	1. 微指令字较长,增加了控存的横向容量,同时微指令和机器指令的差别很大,设计者只有熟悉了数据通路,才有可能编制出理想的微程序,一般用户不易掌握

(这里应该是一个有序列表,但是typora抽风了,修改完保存就还是这样,无视就行)

垂直型微指令:

  1. 一次只能执行一个微命令的微指令
  2. 并行操作能力差,一般只能实现一个微操作,控制一到两个信息传送通路,效率低
  3. 执行一条机器指令所需的微指令数目多,执行时间长
  4. 垂直型微指令与机器指令很相似,所以容易掌握和利用,编程比较简单,不必过多地了解数据通路的细节,且微指令字较短

(5)微指令的编码法

1. 直接控制法

操作控制字段中的各位可以直接控制计算机,不需要进行译码

操作控制字段中的每一个独立的二进制位代表一个微命令,每个微命令对应并控制数据通路中的一个微操作

特点:结构简单,并行性强,操作速度快

微指令字太长:在N个微命令中,有许多是互斥的,他们并不允许并行操作,将他们安排在一条微指令中是毫无意义的

在这里插入图片描述

2.字段编码法

将操作字段分成若干个小段,每段内采用最短编码法,段与段之间采用直接控制法。

又分成两种:

字段直接编码法:各字段都可以独立地定义本字段的微命令,而与其他字段无关

字段间接编码法:一个字段的某些编码不能独立地定义某些微命令,而需要与其他字段的编码来联合定义。在字段直接编码法的基础上来进一步缩短微指令字长的方法。

在这里插入图片描述

(6)程序和微程序的区别

  1. 层次不同,一个处于程序层次,一个处于微程序层次
  2. 微程序是由微指令组成的,它用于描述机器指令,实际上是机器指令的实时解释器,它是由计算机的设计者事先编制好并放在控制存储器中的。对于程序员来说,计算机系统中微程序一级的结构和功能是透明的
  3. 程序则最终由机器指令完成,它是由软件设计人员事先编制好并存放在主存或辅存中的

(7)机器指令和微指令的区别

  1. 机器指令跟微指令所处的级别不同,机器指令在程序层次,微指令在为程序层次
  2. 一系列微指令和的有序集合构成一段微程序,完成一条机器指令的功能实现
  3. 机器指令和微指令结构不同,机器指令由操作码和操作数地址构成,微指令由控制信号(或微操作或微命令)和下址构成。

六、IO系统

1、 IO设备

(1)输入设备

键盘(薄膜、机械),鼠标(机械、光电)

(2)输出设备

显示器(CRT、LCD、LED),打印机(针式、喷墨、激光)

2、 IO系统

(1)IO设备+IO接口

设备:外部设备、设备控制器、端口(数据、控制、状态)

接口:实现主机和外设的通信连接控制;进行地址编码和设备选择;数据缓冲;数据格式的交换;传递控制命令和状态信息

(2)IO接口的数据交换方式

  1. 程序直接控制方式:

    淘宝购买东西并付款之后,直接在小区门口等待(CPU 等待),直到快 递送到手中,再取回家(CPU 取数)。

  2. 程序中断控制方式:

    淘宝购买东西并付款之后,直到接收到取快递的短信(中断请求),如果不忙(中断响应),才将快递取回家(CPU 取数)。

    1. 中断源:外部中断(IO设备异常、电源掉电)、内部中断(异常、故障、陷阱)
    2. 准备就绪触发器(D=1)、中断请求触发器(INTR=1)、中断屏蔽触发器(MASK=0)、排队其(优先权)、中断允许触发器(IF=1)
    3. 响应条件(快递到快递驿站(D=1)、双 11 快递量很多需要排队(优先 权)、并且你的快递合法(MASK=0)、取件人有时间(IF=1)、当前指令执行结束)
    4. 响应后的处理(中断服务程序)流程:中断嵌套;
  3. DMA控制方式:

​ 淘宝购买东西并付款之后,直接委托给一个秘书,预先告诉他取快递的地点和送回到哪(内存地址和设备地址(硬盘号+盘面+磁道+扇区)),并在秘书取回之后(DMA:请求总线(从老板借车)之后,再传输数据),给老板反馈(中断报告),让老板查看是否正确(奇偶校验)。

(3)程序查询方式的特点

  1. 实现方便,控制简单
  2. CPU与外设采用串行方式工作,牺牲了CPU效率,响应速度慢
  3. 只是用于对少量IO设备的处理
  4. 无法对随机出现的事件快速处理

(4)程序查询与程序中断控制方式的比较

  1. 程序查询方式中,何时操作IO设备需要由CPU查询并控制,在中断方式中由外围设备主动向CPU申请
  2. 程序查询方式中,CPU与IO设备时串行工作的;中断方式中,他们是并行工作的
  3. 程序查询方式中无法处理异常随机事件,中断方式可以对随即请求及时处理
  4. 程序查询方式的硬件结构简单,但CPU效率低,中断恰好相反

(5)DMA与程序中断控制方式的比较

  1. 中断方式通过程序实现数据传输,而DMA则是通过硬件来实现数据传输
  2. CPU对于中断的响应是在执行完一条指令后;而对DMA传送的响应则可以再指令执行过程中的任意两个存储周期(CPU)周期之间,因为DMA不需要执行中断服务程序,故不需要断电保护和现场保护
  3. 中断方式不仅具有数据传送能力,其特点是能处理”异常随机事件“;而DMA的特点则主要用于”成块数据“的快速传送
  4. 中断方式必须切换程序,所以要进行现场保护和现场恢复操作;而DMA只需要挪用内存周期来进行数据传送,不改变CPU现场
  5. DMA请求的优先权比中断请求高

七、 例题!!重要!!

八道例题务必全部掌握!

1、 浮点数加减法

在这里插入图片描述

问题:为什么选择两位符号位?保持精度,可以处理溢出

2、 存储芯片扩展及与CPU链接-1

1

在这里插入图片描述

注意:本图中片4-片7的片上的数据总线应该为 D 15 − D 8 D_{15}-D_8 D15D8,图片内容有错误(懒得改了)。搭配讲解视频食用更佳。

3、 存储芯片扩展及与CPU的链接-2

在这里插入图片描述
在这里插入图片描述

4、 Cache和主存之间的映射方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

速通教程(26分钟)后半段cache命中率看时间安排决定是否学习

5、 微指令编码方式-1

在这里插入图片描述

P字段来源:

在这里插入图片描述

6、 微指令编码方式-2

在这里插入图片描述

注意:

​ 注意区分控存容量和控存容量字数,控存容量计算公式为: 微指令字长 ∗ 2 下址字段长度 微指令字长*2^{下址字段长度} 微指令字长2下址字段长度,控存字数计算公式为: 2 下址字段长度 2^{下址字段长度} 2下址字段长度

​ 采用直接控制法的话每种情况直接占一位,外部条件和微命令都满足这个限制,否则位数只需要满足 2 n − 1 2^n-1 2n1即可三种外部条件,n=2只需要两位。

7、 CPU内部结构及控制-1

在这里插入图片描述
取址周期:PC(程序计数器)【含有下一条指令的地址】,先自增,然后通过内部总线告诉**MAR(地址寄存器)放到地址总线上,然后去M(储存器)**中相应的地址拿到指令;**CU(控制单元)发出读命令到控制总线上,告诉M(储存器)要读地址上的内容,M(储存器)将地址上的内容通过DB(数据总线)给到CPU内的MDR(数据寄存器),由MDR(数据寄存器)放到IR(指令寄存器)**中。

间址周期:IR(指令寄存器),通过MAR到M储存器中访问到地址;CU通过控制总线读取M中的内容,储存器通过数据总线将数据交给CPU内的数据储存器MDR。

执行(执行无定法):参考资料

中断:参考资料

8、 CPU内部结构及控制-2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐