《计算机组成原理》唐朔飞 第三版 知识点总结
笔者自用。可能有错。
第一章 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统 = 软件 + 硬件
软件:人们事先编制的具有各类特殊功能的程序。
- 系统软件
- 注意汇编程序和翻译程序是并列关系不是从属关系。
- 应用软件
硬件:计算机的实体部分,即看得见摸得着的各种电子元件。
1.1.2 计算机系统的层次结构
汇编语言和操作系统在20s50s引入(第二代计算机)
高级语言在20c60s出现
1.1.3 计算机组成和计算机体系结构
计算机体系结构是那些能够被程序员所见到的计算机系统的属性。
计算机组成是指如何实现计算机体系结构所体现的属性。
1.2 计算机的基本组成
1.2.1 冯诺依曼机
特点
- 由5大设备组成:运算器、存储器、控制器、输入设备、输出设备
- 指令和数据的地位同等,可以按地址寻访
- 指令和数据都按二进制表示
- 以运算器为中心
基本特点:按地址访问并顺序执行指令。
1.2.2 计算机的硬件框图
现代计算机的三大组成部分:CPU、I/O设备、主存
1.3 计算机硬件的主要技术指标
三大技术指标:
- 机器字长
- 存储容量
- 运算速度
- 此处可出计算题:CPI、吉普森法等
第二章 计算机的发展及应用
2.1 计算机的发展史
ENIAC 1946交付使用,使用十进制运算
计算机的四代:
- 第一代电子管计算机
- 第二代晶体管计算机
- 第三代集成电路计算机(OS出现)
集成电路:
- SSI 几十个门
- MSI 几百个门
- LSI 几千个门
- VLSI 上万个门
第三章 系统总线
总线:只能分时发送,但可以同时接收。
3.2 总线的分类
- 按数据传送方式:并行传输总线、串行传输总线
- 按连接部件
- 片内总线
- 系统总线
- 数据总线(双向)
- 地址总线(单向)
- 控制总线(稍复杂,见 P44)
- 通信总线:一般是电缆式,而不是印刷电路。
- 串行通信总线
- 并行通信总线
3.3 总线特性及性能指标
3.3.3 总线标准
- ISA 及其扩展
- PCI:并行,即插即用,支持突发工作方式
- USB:串行,即插即用
3.5 总线控制
3.5.1 判优控制
主设备:对总线有控制权的设备
从设备:响应从主设备发来的命令
-
集中式
- 链式查询
- 仅需常数根线
- 计数器定时查询
- 计数从0开始,则优先级从0到n降序
- 计数从上次终点开始,则优先级相等
- 需要 \(log_2 n\) 条地址线,其中n为设备数目
- 独立请求方式
- 响应快速,控制复杂
- 需要 \(2n\) 根线(但不会增加处理机开销)
三条总线仲裁的辅助线:BS总线忙、BR总线请求、BG总线同意
- 链式查询
-
分布式
- 自举式
- 冲突检测式:常用于网络
3.5.2 通信控制
总线周期的四个阶段:
- 申请分配阶段
- 寻址阶段
- 传数阶段
- 结束阶段
通信控制的四种方式:
-
同步通信
-
异步通信:增加两条应答线
- 不互锁:如CPU写主存
- 半互锁:如多CPU系统下,CPU访问共享存储器
- 全互锁:如网络通信
波特率:单位bps(位每秒)
- 此处可出计算题
-
半同步通信
也使用统一时钟,但增设一条等待线 \(\overline{\mathop{WAIT}}\)
-
分离式通信:常用于大型机
第四章 存储器
4.1 概述
4.1.1 分类
-
按存储介质:
- 半导体存储器
- 磁表面存储器
- 磁芯存储器
- 光盘
-
按存取方式:
- 随机存储器 RAM
- SRAM:触发器原理
- DRAM:电容充放电原理
- 只读存储器 ROM
- 串行访问存储器(顺序存取存储器)
- 磁盘是一种部分串行访问的存储器!
- 随机存储器 RAM
-
按作用分类:主存、辅存、缓存、Flash。见P70的图。
4.1.2 层次结构
三大主要性能指标
- 速度
- 容量
- 每位价格
层次结构主要体现在 缓存-主存 和 主存-辅存 这两个层次上。现代计算机几乎都有这两个层次,构成了 缓存、主存、辅存 三级存储系统。
虚拟存储器的地址变换工作是由硬件自动完成的,对用户不可见。
4.2 主存储器
4.2.1 概述
主存包括RAM和ROM两部分。
主存到Cache的调动是对程序员完全透明的。
虚拟存储器的调动由操作系统完成,对系统程序员不透明,对应用程序员透明。
大端:低位放高字节
小端:高位放高字节
主存技术指标:
-
存储容量
-
存储速度
- 存取时间 \(T_A\):启动一次存储器操作到完成该操作的全部时间
- 存取周期 \(T_{MC}\):存储器进行连续两次独立的存储器操作所需的最小间隔时间
通常 存取周期 > 存取时间
4.2.2 半导体存储芯片简介
译码驱动方式:
- 线选法:结构简单,一维,适用于容量小的芯片
- 重合法:结构复杂,二维,适用于容量大的芯片
4.2.3 RAM
SRAM 读周期时序:地址、片选、数据输出
SRAM 写周期时序:地址、片选、写允许、数据输入
DRAM 读周期时序:RAS、WE、CAS、数据输出
DRAM 写周期时序:RAS、WE、数据输入、CAS
也即,后两步的顺序是相反的。
刷新
刷新的单位是行。
- 集中刷新:在一个规定的刷新周期内,对所有行进行刷新。这段时间 RAM 无法读写,也即存在死区。
- 分散刷新:将刷新分散到每个存取周期中进行。无死区,但存取周期变长。
- 异步刷新:二者的结合。顺序刷新各行。
4.2.5 存储器与CPU的连接
存储容量的扩展
- 字扩展:增加存储字的数量
- 位扩展:增加存储字长
- 字、位扩展
连接
这里有一个选存储芯片的题型,可见 P94 下方。
- 系统程序区选用ROM
- 用户程序区选用RAM
4.2.6 汉明码
码字:由若干个二进制位组成的序列。
码距:相同长度的码字中,对应二进制位不同的位数。
汉明码具有一位纠错能力。
设欲检测的二进制代码为n位,为使其具有纠错能力,增添k位检测位,则k需满足:
已知n,就可求出k的最小值。
这k个检测位被安排在新的码字的第 \(2^{k-1}\) 位上,即第1,2,4,8,16……位。
然后,为每个检测位安排小组,其中第 \(i\) 个小组即 \(C_{2^{i-1}}\) (C表示新的码字)对应的 \(g_i\) 小组满足:
- \(g_i\) 小组独占第 \(2^{i-1}\) 位
- \(g_i\) 和 \(g_j\) 小组共同占有第 \(2^{i-1} + 2^{j-1}\) 位
- \(g_i\) 和 \(g_j\) 和 \(g_k\) 小组共同占有第 \(2^{i-1} + 2^{j-1} + 2^{k-1}\) 位
- 依此类推。
于是,可以推出
- \(g_1\) 小组包含1,3,5,7,9,……位
- \(g_2\) 小组包含2,3,6,7,10,11,12,15,……位
- \(g_3\) 小组包含4,5,6,7,12,13,14,15,……位
- \(g_4\) 小组包含8,9,10,11,12,13,14,15,24,……位
- ……
之后,根据奇偶配置情况决定校验位的值,在配偶原则下,校验位的值应该使得自己组内所有位的异或值为0,反之配奇原则则是1。
4.2.7 提高访存速度的措施
单体多字系统
一次性取多个字,减少CPU访存次数。但对跳转指令不友好,而且要求数据总线宽度成倍增长。
多体并行系统
-
高位交叉编址:高位地址表示体号,低位地址表示体内地址。合理调动使不同的源访问不同的体,即可并行工作。
低位交叉存储器连续读取n个字所需的时间 \(t_2=nT\)
-
低位交叉编址:低位地址表示体号,高位地址表示体内地址。数据分散在多个体中,多个体并行工作。
低位交叉存储器连续读取n个字所需的时间 \(t_1=T+(n-1)\tau\)
T:存储周期
τ:总线传输周期
n:模块数
4.3 高速缓冲存储器
4.3.1 概述
Cache 与主存之间是字块传送。
有关访存命中率和访存时间的例题可见 P111。
保持 Cache 和主存内容一致的办法:
- 写直达法:数据同时写入cache和主存。稳妥,但增加访存次数。
- 写回法:只写cache,不写主存,仅当cache数据需要替换时才写入主存。需要设置额外标志位。
4.3.2 Cache-主存地址映射
重难点!P117
三种映射模式
- 直接映射(简单,快)
- 全相联映射(复杂,灵活性好)
- 组相联映射(上面二者的折中)
三种映射模式主要出 主存地址配置的格式 计算题。
4.3.3 Cache 替换策略
- 先进先出(FIFO)法(容易实现,但没用)
- 近期最少使用(LRU)法(效果最好)
- 随机法(丝毫没有用处)
4.4 辅助存储器
4.4.1 概述
早期磁盘所有磁道上的扇区数相同,即内侧磁道的扇区密度比外侧磁道高,造成了一定程度的浪费。
现代磁盘外道上的扇区比内道数量多,充分利用空间。
磁表面存储器的主要技术指标
-
记录密度
-
存储容量
-
平均寻址时间
寻址时间 = 找道时间 + 等待时间
平均寻址时间 = 平均找道时间 + 平均等待时间
一般平均时间就是简单地将最长时间除以2。
-
数据传输率
-
误码率
磁盘地址格式:驱动器号、柱面号、记录面号、扇区号。
- 如果有一个较大的文件,在一个扇区写不下,那么应该优先改变记录面,而不是优先改变柱面。
4.4.2 磁记录原理和记录方式
磁表面存储器的记录方式
- 归零制
- 不归零制
- “见1就翻”的不归零制
- 调相制
- 调频制
- 改进型调频制
4.4.3 硬磁盘存储器
磁道记录格式
- 定长记录格式
- 不定长记录格式
SSD
- SSD现已加入408考纲,但上课没讲
RAID
冗余磁盘阵列。
4.4.6 循环冗余校验(CRC)码
模2运算的特点是不看进位和借位,加减就是异或。
模2除的上商原则(重要):
- 部分余数的首位为1时,上1
- 部分余数的首位为0时,上0
- 部分余数的位数少于除数的位数时,停止除法,该部分余数就是最后的余数。
- 也就是说,上商只无脑看首位数字,不比较大小。
引入一种多项式,这种多项式和一个二进制位序列是一一对应的。
比如,1101对应的多项式 \(M(x)\) 为:
已知输入序列M(x),生成多项式G(x),则求CRC码的步骤如下:
-
令 r = G(x)位数 - 1,如G(x) = 1011,4位,则 r = 3。
-
将M(x) 左移 r 位。右边补零。
-
用模2除的方法计算
\[\frac{M(x)\cdot x^r}{G(x)} \]得到
\[xxx+\frac{xxx}{xxx} \]的形式,其中左边是商,右边是余数。取余数的分子部分。
-
将分子部分加到左移后的M(x),即得到CRC码。
第五章 I/O 系统
5.1 概述
5.1.2 输入输出系统的组成
I/O 系统包括:
-
I/O 软件
- I/O 指令(CPU指令的一部分):操作码、命令码、设备码三个组成部分
- 通道指令/通道控制字(通道自身的指令)
-
I/O 硬件
5.1.3 I/O设备与主机的联系方式
I/O 设备编址方式
- 统一编址:减少了主存容量,速度变慢,但无需专用的I/O指令。
- 不统一编址:需要专用I/O指令。
5.1.4 I/O设备与主机信息传送的控制方式
5种控制方式:
- 程序查询方式
- 异步、串行、灵活、慢
- 程序中断方式
- 异步、并行、慢
- DMA方式
- 窃取的时间一般为一个存取周期。
- I/O通道方式(不考)
- I/O处理机方式(不考)
5.2 I/O 设备
本节408不考。
- I/O 设备大致分三类
- 人机交互设备
- 信息驻留设备
- 机-机通信设备
- 输入设备
- 键盘
- 鼠标
- 触摸屏
- 输出设备
- 显示器
- 字符显示
- 图形显示
- 图像显示
- 打印机
- 击打式
- 点阵式(逐字、逐行)
- 非击打式
- 喷墨(逐字)
- 激光(逐页)
- 击打式
- 显示器
5.3 I/O 接口
接口既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。
5.3.3 接口类型
- 按数据传送方式分类
- 并行接口
- 串行接口
- 按功能选择的灵活性分类
- 可编程接口
- 不可编程接口
- 按通用性分类
- 通用接口
- 专用接口
- 按数据传送的控制方式分类
- 程序型接口
- DMA型接口
5.4 程序查询方式
D:完成触发器
B:工作触发器
5.5 程序中断方式
中断技术的三大目的
- 提高计算机的整机效率
- 应付突发事件
- 实时控制的需要
INTR:中断请求触发器
MASK:中断屏蔽触发器
EINT:中断允许触发器
5.5.4 I/O 中断处理过程
一次中断处理过程的5个阶段:
- 中断请求
- 中断判优
- 中断响应
- 中断服务
- 中断返回
5.5.5 中断服务程序的流程
中断服务程序的4大流程
- 保护现场:两个含义
- 保护程序断点,即PC的内容。由中断隐指令完成。
- 保护通用寄存器和状态寄存器,由中断服务程序完成。
- 中断服务
- 恢复现场:出栈指令
- 中断返回:程序返回指令
开中断的时机:
- 单重中断:在中断服务程序的最后才开中断
- 多重中断:在保护现场后、中断服务前即开中断。
5.6 DMA方式
为了分时使用主存,DMA与主存交换数据时采用以下3种方法:
- 停止CPU访问主存
- 周期挪用/周期窃取(常用)
- CPU不访问主存时,无冲突,直接进行DMA。
- CPU正在访问主存,等主存完成一个存取周期后,CPU让出,DMA访存。
- CPU和DMA同时请求访存:I/O的请求优先,因为可能丢数据。此时进行周期窃取,窃取1-2个存取周期。DMA结束后,CPU访存。
- DMA与CPU交替访问主存
5.6.3 DMA的工作过程
DMA传送过程
- 预处理
- 数据传输
- 后处理
5.6.4 DMA接口的类型
- 选择性DMA接口:适用于快速设备
- 多路型DMA接口:适用于同时为多个慢速设备服务
- 链式多路型DMA
- 独立请求多路型DMA
ASCII是7位二进制码,最后一位作校验位。
第六章 计算机的运算方法
通常称寄存器的位数为机器字长。
6.1 无符号数和有符号数
6.1.1 无符号数
简单
6.1.2 有符号数
- 原码
- 反码
- 补码
- 按位取反+1的技巧:从后往前找到第一个1,该1不变,前面的所有位(含符号位)取反,最后把符号位去掉。
- 补码有几位,它的模就是几。
- 移码
- 补码和移码的互相转换可以简单地将符号位取反来完成。
要明确不同码制表示的范围。
- 在整数定点机中,原码和反码可以表示-1;
- 在小数定点机中,原码和反码不能表示-1。
6.3 数的定点表示和浮点表示
6.2.1 定点表示
容易
6.2.1 浮点表示
难点!
- S是尾数,是一个纯小数,即 \(0<|S|<1\)。
- \(r=2\) 时,将尾数(小数部分的)最高位为1的浮点数称为规格化数。
- \(r=4\) 时,将尾数(小数部分的)最高两位不全为0的浮点数称为规格化数。
- \(r=8\) 时,将尾数(小数部分的)最高三位不全为0的浮点数称为规格化数。
- j是阶码,是一个整数。
- r是基数,一般取 \(2^n\)。最最常用的是2。
规格化:
\(r=2^n\) 时,阶码每减1,尾数就左移n位;阶码每加1,尾数就右移n位。
6.2.4 举例
计算题。主要是定点数和真值转浮点数。
6.2.5 IEEE 754 标准
重点!
IEEE 754 规定,浮点数由1位数符、若干位阶码(含阶符)、若干位尾数组成。第一位的数符决定了这个数字的正负。尾数使用原码表示(因为这里的尾数是无符号数),阶码使用移码表示,阶码的真值要加上127才能得到IEEE 754中的阶码表示。
尾数通常是规格化表示,即最高(小数)位是1,因此这个1一般省略(对于下面两种,一般省略),节省一位空间。IEEE 754中的尾数实际上是把尾数移位成“1.xxxx”的形式,然后去掉1,只保留xxxx的部分。
IEEE 754 常用的浮点数是以下两种:一般只记忆阶码的位数,符号位永远是1位,总位数是32或64,则尾数位数可以推算得到。
符号位 | 阶码 | 尾数 | 总位数 | |
---|---|---|---|---|
单精度 | 1 | 8 | 23 | 32 |
双精度 | 1 | 11 | 52 | 64 |
另有一种临时实数,占80位,很少用,此处未列出。
6.3 定点运算
全章最难,应该也是全书最难吧😰
本节介绍定点数的加减乘除、移位运算。
6.3.1 移位运算
逻辑移位
- 逻辑移位是对无符号数的移位,无论左右移,无论码制(有符号数全当无符号数处理),一律无脑补0。
算术移位
-
算数移位是对有符号数的移位,规则比较复杂,依赖码制。
算术移位不管怎么移,符号位永远是不变的。也即移位只对于数值位有效。
正数无论码制,左右移都一律补0。
负数稍复杂:
- 原码:一律补0
- 反码:一律补1
- 补码:左移补0,右移补1
6.3.2 加法与减法运算
现代计算机一律采用补码做加减法。因此下面的讨论全是针对补码的。
加法
- 容易
减法
- [A-B]补=[A]补+[-B]补
- 其中[-B]补=[B]补 连同符号位在内取反得到。
溢出判断
在计算机中,真值超出机器字长能表示的范围的现象叫做溢出。
-
一位符号判溢出(少用)
- 将两个同号的数相加,可能产生溢出。异号相加不会溢出。
- 将两个异号的数相减,可能产生溢出。同号相减不会溢出。
- 但实际上无论加减,计算时都是两个补码相加的形式,因此只要参与运算的补码的符号相同,而结果又和这个符号不同,就判定为溢出。
- 计算机中常用符号位进位和最高数值位进位进行异或来判断,如果结果是1,则溢出,结果是0则未溢出。
-
两位符号位判溢出(常用)
- 引入“变形补码”,有两个符号位:
- 如果x为正,则其变形补码就是它本身。
- 如果x为负,则其变形补码是其本身加4。
- 判断原则:当两个符号位不同时,溢出;否则未溢出。
- 如果最高符号位产生进位,直接丢掉这个进位。
- 变形补码的最高符号位是真正的符号位,表示这个数的实际符号。
- 引入“变形补码”,有两个符号位:
6.3.3 乘法运算
原码一位乘 P245
原码乘法只计算乘数和被乘数的绝对值,符号位由两个数的符号位异或得来。下面的两位乘也是一样。
- 开始,取部分积 \(z_0=0\)。
- 检查乘数的最低位,如果是1,则部分积加上被乘数的绝对值;如果是0,则部分积不变。
- 部分积和乘数都右移一位。
- 检查乘数是否已经完全移出,如果是,结束;否则转2。
注意原码一位乘的最后一步是右移。
原码一位乘中的所有右移都是逻辑右移。
运算时可能出现绝对值大于或等于1的情况,因此需要增加一位,最高位仍是符号位。
原码两位乘 P247
和原码一位乘的区别在于两位乘一次右移两位。
重要的表格!见 P248 表 6.11
要注意,\(C_j=1\) 时,操作内容是要加上一个 \(x^*\) 的,如果本位操作(由 \(y_{n-1}y_n\) 决定)已经是 \(+2x^*\) 了,那么实际上就要加 \(+3x^*\),就和 \(y_{n-1}y_n=11\) 的情况相同了,于是 \(C_j\) 保持,实际上的最终操作反而是减去 \(x^*\)。
减去被乘数实际使用加上被乘数的负补码实现,因此右移两位的操作按补码右移完成。
运算时的绝对值可能大于或等于2,因此需要增加两个符号位,以最高位为真正的符号位。
运算时使用先移(两位)位再加 \(x^*\) 的方法,而不是先加 \(4x^*\) 再移位。二者实际上的作用是等价的,但是前者不需要用到额外的电路,实现简便。
运算时可能出现部分积为负的情况,这是正常的。但是最后的部分积一定是个正数,因为我们做的是绝对值运算。
补码一位乘 P250
补码乘法的符号位也正常参与运算,最终计算得出的符号位是什么就是什么。下面的两位乘也是一样。
- 被乘数符号任意,乘数符号为正
- 按照原码乘法的规则运算。其中加和移位按照补码规则计算。
- 被乘数符号任意,乘数符号位负
- 把乘数的补码去掉符号位,当成一个正数和被乘数的补码相乘,然后加上被乘数的负补码进行矫正。
- 被乘数和乘数符号都任意
- 采用 Booth 算法。规则表详见 P254。部分积取双符号位。
补码两位乘(不考)
难度过大,期末不考
6.3.4 除法运算
原码除法
原码除法和原码乘法一样,符号位不参与运算,参与运算的是绝对值。结果的符号由异或得来。
这里介绍的定点除法运算要求 0 < |被除数| < |除数|,也就是说商一定是一个纯小数。还要保证除数和被除数都不为零。
- 恢复余数法
- 每次都减去除数,这是一种试探性的操作。如果得到负数,说明不应该减去除数,于是再加上除数(恢复余数),上商0;如果得到正数,说明应该减去除数,上商1。
- 第一次上商时,上在整数位上,该位为1时,说明溢出;该位为0时,说明未溢出。
- 加减交替法
- 余数 \(R_i>0\) 时,上商1,做 \(2R_i-y^*\) 的运算。
- 余数 \(R_i<0\) 时,上商0,做 \(2R_i+y^*\) 的运算。
补码除法
只讨论加减交替法。
(待补)
6.4 浮点四则运算
6.4.1 浮点加减运算
两个浮点数阶码不等时,尾数的小数点位置不一样,因此不能直接加减。
步骤:
- 对阶
- 阶码小的向阶码大的看齐
- 尾数求和
- 按定点加减进行运算
- 规格化
- 舍入
- 0舍1入法
- 恒置1法
- 溢出判断
6.5 算术逻辑单元
6.5.1 ALU 电路
ALU是组合电路,即有输入立即产生输出。
6.5.2 快速进位链
- 并行进位链
- 单重分组跳跃进位
- 将n位全加器分成若干小组,小组内的进位同时产生,小组间采用串行进位,又有组内并行、组间串行之称。
- 双重分组跳跃进位
- 将n位全加器分成若干大组,每个大组中又包含若干小组,每个小组的最高进位是同时产生的,大组间串行进位。故又有(小)组内并行、(小)组间并行之称。
- 单重分组跳跃进位
第七章 指令系统
7.1 机器指令
7.1.1 指令的一般格式
指令 = 操作码 + 地址码
操作码长度可以变化。应尽量使较常用的指令占用较短的操作码,以提高译码速度。
-
四地址指令
-
四个地址分别是:第一操作数地址、第二操作数地址、结果地址、下一条指令的地址。
将下一条指令的地址放在PC中,就可省去,得到三地址指令。
-
-
三地址指令
-
安排同上。
可以将结果放在ACC中,就得到二地址指令。
-
-
二地址指令
- 两个地址分别是:第一操作数地址、第二操作数地址。
- 有的机器也可以将操作数地址也作为结果地址,并在完成操作后写入结果地址覆盖操作数。如x86的add、mul等
- 将一个操作数隐含在ACC中,就得到一地址指令。
-
一地址指令
- 唯一的地址是操作数地址。另一个操作数在ACC中,结果仍放ACC。
-
零地址指令
- 空操作、停机等指令不需要地址码。
- 子程序返回、中断返回等指令的地址码隐含在堆栈指针SP中。
7.2 操作数类型和操作类型
7.2.1 操作数类型
地址、数字、字符、逻辑数据等。
7.2.3 操作类型
一个较完善的指令系统应该包含如下几种操作类型:
- 数据传送
- 算术逻辑操作
- 程序控制(如转移)
- 无条件转移
- 条件转移
- 过程调用与返回
- I/O
- 其他
7.3 寻址方式
寻址方式:指令寻址、数据寻址
7.3.1 指令寻址
简单。
- 顺序寻址
- 跳跃寻址
7.3.2 数据寻址
- 立即寻址:指令字中的地址码是立即数,直接指出操作数的值
- 直接寻址:指令字中的地址码是操作数在主存中的地址。
- 隐含寻址
- 间接寻址:指令字中的地址码指示出一个主存的位置,该位置保存有操作数在主存中的地址。
- 相比直接寻址可以支持更大的操作数寻址范围。因为地址码总是占用不到完整的指令字长,但存储字长可以和指令字长一致。
- 寄存器寻址
- 指令字中的地址码指出一个寄存器号,操作数保存在这个寄存器内。
- 寄存器间接寻址
- 和上面的不同之处在于寄存器中保存的是操作数在主存中的地址,而不是操作数本身。
- 基址寻址 EA = A + BR,A变,BR不变
- 隐式:专门设一个基址寄存器BR
- 显式:用户使用时明确指定一个通用寄存器,用作BR
- 主要用于为程序或数据分配存储空间,BR的内容一般由OS或管理程序确定。
- 变址寻址 EA = A + IX,A不变,IX变
- 主要用于数组。
- 相对寻址 EA = PC + A
- 主要用于转移类指令。
- 堆栈寻址
- 要求计算机内设有堆栈
- 软堆栈(用主存+堆栈指针实现)
- 硬堆栈(用专门的寄存器组实现)
7.4 指令格式举例
重难点!请参考课本 P319-325
向上兼容:高档机能兼容低档机的程序运行
向下兼容:后开发的程序能在较早的机器上运行
7.5 RISC 技术
RISC的主要特点
- 指令种类少,且多为简单指令。用简单指令的组合实现复杂指令。
- 指令长度固定,寻址方式种类少。指令译码快。
- 通用寄存器数量多。
- 一定采用流水线技术
- 大部分指令在一个时钟周期中完成。
- 控制器采用组合逻辑控制(而非CISC的微程序控制),延迟小。
- 采用优化编译技术
第八章 CPU的结构和功能
结构决定功能,而不是反过来。
8.1 CPU的结构
8.1.1 控制器CU的功能
- 取指令
- 分析指令
- 执行指令
8.1.3 CPU的寄存器
- 控制和状态寄存器(用户不可见)
- 控制寄存器
- MAR、MDR、IR:用户不可见
- PC:用户可见
- 状态寄存器
- 状态寄存器
- PSW寄存器
- 控制寄存器
- 用户可见寄存器
- 通用寄存器
- 数据寄存器
- 地址寄存器
- 条件码寄存器
8.2 指令周期
CPU每取出并执行一条指令所需的全部时间称为指令周期。
一个完整的指令周期:
- 取指 FE
- 间址 IND
- 执行 EX
- 中断 INT
8.3 指令流水
8.3.3 流水线性能
这里可以出计算题。见 P353。
流水线加速比
其中,m是流水线段数(级数),n是执行指令的条数。
流水线效率
m、n的含义和加速比相同。
8.3.4 流水线中的多发技术
- 超标量技术:在同一个时钟周期内并发多条独立指令。
- 超流水线技术:好比将流水线再分段,第一条指令的第一个时钟周期未结束时,第二条指令就开始取指。
- 超长指令字技术:依赖强大的编译程序,将多条指令组合成一条超长指令来执行。要求更大的Cache。
8.4 中断系统
8.4.2 中断请求标记和中断判优逻辑
中断判优逻辑
- 硬件实现
- 链式排队器
- CPU内部的排队器
- 软件实现
8.4.3 中断服务程序入口地址的寻找
硬件向量法
用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。
此法寻找入口地址速度快,在现代计算机中普遍采用。
软件查询法
当查到某一中断源有中断请求时,接着安排一条转移指令,直接指向此中断源的中断服务程序入口地址。这一地址由程序员或系统事先确定。
8.4.4 中断响应
CPU总是在指令执行周期结束后,响应任务中断源的请求。
8.4.6 中断屏蔽技术
中断屏蔽字。此处易出画图题。
第九章 控制单元的功能
9.1 微操作命令的分析
0->ACC:ACC清零
L(ACC)->R(ACC):ACC右移一位
ACC0->ACC0:ACC0是符号位的意思,即保持符号位不变。
运行标志触发器G:G=1时机器运行,G=0时停机。
0->G:机器停机。
Ad(IR)->MAR:IR中指令的地址码部分送MAR
1->R:向主存发读命令。
1->W:向主存发写命令。
M(MAR)->MDR:将MAR所指的内存单元的值读出,放入MDR
MDR->M(MAR):与上面相反
Ad(IR)->PC:用于无条件跳转。将IR中指令的地址码部分送PC
第十章 控制单元的设计
两种办法:组合逻辑设计、微程序设计
10.1 组合逻辑设计
10.2 微程序设计
10.2.3 微指令的编码方式
- 直接编码(直接控制)方式:含义清晰、速度快、但控存容量需要很大
- 字段直接编码方式(显式编码):需要译码
- 字段间接编码方式(隐式编码):
- 混合编码:将1和2或3昏混用
- 其他
10.2.5 微指令格式
- 水平型微指令:效率高、速度快、灵活性强
- 上面几种编码方式都属于水平型微指令
- 垂直型微指令:以较长的微程序结构换取较短的微指令结构