这篇用来存档 基本并不能帮助大家速成 只是博主复习时用来巩固时用的(假装大家都看不见)
教材:《计算机组成原理》唐朔飞版
内容:第四章到第八章不完全总结
chapter 4
存储器
存储器的层次结构:缓存-主存 提高速度 主存地址 实地址 物理地址
主存-辅存 提高容量 虚拟存储器 虚地址 逻辑地址
2^地址线 * 数据线 =存储容量
半导体存储器芯片的译码驱动方式:线选法 重合法
动态RAM刷新:
- 1. 集中刷新
在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读、写操作。存在“死时间”
- 2. 分散刷新
对每行存储单元的刷新分散到每个存储周期内完成,不存在读写操作死时间,但存取周期长了,整个系统速度降低了
- 3. 异步刷新
是两种方式的结合 既可缩短死时间,又充分利用最大刷新间隔为2ms的特点。
海明码:2^k >=n+k+1
K=3 1 3 5 7 2 3 6 7 4 5 6 7
K=4 3 5 7 9 11 3 6 7 10 11 5 6 7 9 10 11
Cache-主存地址映射
直接映射:有固定的映射关系,某一主存块只能固定映射到某一缓存块
优点:实现简单,只要利用主存地址的某些位直接判断,即可确定所需字块是否在缓存中
缺点:不够灵活。
全相联映射:某一主存块可以映射到任一缓存块
优点:方式灵活 命中率更高 缩小了块冲突率
缺点:逻辑电路甚多 成本较高
组相联映射:是直接映射和全相联映射的一中折中。某一主存块能映射到某一缓存组中的任一块
性能及复杂度介于直接映射和全相联映射之间。
chapter 5
I/O设备与主机信息传送的控制方式
程序查询方式:CPU启动I/O设备后便不断查询I/O设备是否已做好准备。启动I/O设备,CPU便不断查询I/O设备的状态,若查得I/O设备未准备就绪,就继续查询;若查得I/O设备准备就绪,就将数据从I/O接口送至CPU,再由CPU送至主存,一个字一个字地传送,直至全部结束,CPU回到原现行程序。
特点:
- 只要一启动I/O设备,CPU便不断查询I/O设备的准备情况,从而终止了原程序的进行,反复查询过程进入“原地踏步”
- CPU和I/O设备串行工作,CPU效率低
程序中断方式:启动I/O设备后,不查询设备是否已准备就绪,继续执行自身程序,当I/O设备准备就绪并向CPU发出中断请求后才给予响应。处理完中断后返回原程序断点处,继续执行原程序
特点:
- 不必不断查询I/O设备准备情况,没有“踏步”现象
- 中断了现行程序
- CPU执行程序和I/O设备准备同时进行,CPU和I/O并行工作(部分)。
- 相比程序查询方式提高了CPU利用率
(硬件需增加相应电路,软件必须编制中断服务程序)
过程:
- 中断请求、中断判优、中断响应、中断服务(保护现场、中断服务、恢复现场、中断返回)、中断返回
- (宏观上CPU与I/O并行工作,微观上CPU中断现行程序为I/O服务)
- INTR中断请求触发器 MASR中断屏蔽触发器
D设备准备就绪 EINT允许中断触发器(开中断、关中断)
DMA方式:主存与I/O设备之间有一条数据通路,无需调用中断服务程序,若CPU和DMA同时访存,总是把总线占有权给DMA,DMA窃取或挪用一个存取周期。
特点:
- 主存与I/O设备之间有一条数据通路
- 不中断现行程序,省去了保护现场和恢复现场
- 周期挪用/周期窃取
- CPU和I/O并行工作
- 相比程序查询方式和程序中断方式更提高了CPU利用率
DMA与主存交换数据的三种方法(优缺点?):
- 停止CPU访问主存
- 周期挪用
- DMA与CPU交替访问
DMA的数据传送过程:
预处理 数据传送 后处理
DMA接口类型:
选择型 多路型
DMA与程序中断方式比较:
chapter 6
无符号数和有符号数,定点表示和浮点表示
X=0时,[+0]原=0,0000 [-0]原=1,0000 [+0]原[-0]原
[+0]补=0,0000 [-0]补=0,0000 [+0]补[-0]补
[+0]反=0,0000 [-0]反=1,1111 [+0]反[-0]反
[+0]移=1,0000 [-0]移=1,0000 [+0]移[-0]移
补码或移码唯一
原码小数点(小数)或逗号(整数)前永远是符号位
[y]补求[-y]补:连同符号位,每位取反,末位加一
移码:补码符号位取反
IEEE754: 短实数 符号位1 阶码8 位数23 总位数32
定点运算
有符号数的移位:算术移位 无符号数的移位:逻辑移位
现代计算机使用补码加减法
补码加减法(符号位也做运算,由于模2,溢出丢掉即可):
[A]补+[B]补=[A+B]补 [A-B]补= [A]补+[-B]补 (记得溢出判断)
补码:参与加减的两个数符号相同但与结果符号不同,则溢出
变形补码:结果的符号位不用则溢出,高位为真正的符号
原码一位乘:逻辑移位、移位次数判断结束、n次加法和n次移位
原码两位乘:算术移位、移位次数判断结束、n/2+1次加法和n/2次移位(n为偶)
补码乘法(booth算法,被乘数和乘数符号均任意的情况):
原码乘符号位单独处理,补码乘符号位自然形成
chapter 7
指令的一般格式
操作码:长度固定(集中放在指令字的一个字段内,用于指令字较长的情况)、
长度不固定(分散在指令字的不同字段中,增加译码和分析的难度)、
扩展操作码(位数随地址数减少而增加)
扩展操作码:
地址码(通常是形式地址而不是有效地址):两个源操作数、结果、下一条指令
四地址:四次访存、A1(OP)A2 →A3
三地址:四次访存、A1(OP)A2 →A3、PC代替A4
二地址:四次访存(若结果存于ACC则三次访存)、A1(OP)A2 →A1、结果存于A1
一地址:两次访存、ACC(OP)A1→ACC、ACC代替原A1
零地址:无地址码
指令字长:取决于操作码长度、操作数地址的长度、操作数地址的个数
指令字长固定:指令字长=存储字长
指令字长可变:按字节的倍数变化
寻址方式
寻址方式:确定本条指令地址的数据地址、确定下一条将要执行的指令地址,包括指令寻址和数据寻址
指令寻址:顺序寻址、跳跃寻址
数据寻址:
- 立即寻址:形式地址A内放操作数(立即数)、指令执行阶段不访存、A的位数限制了立即数的范围
- 直接寻址:形式地址内放有效地址、执行阶段只访存一次、操作数的地址不易修改(必须修改A)
- 隐含寻址:操作数的地址隐含在操作码中(例如MUL被乘数在AX或AL中)、指令字中少了一个地 址字段所以可以缩短指令字长
- 间接寻址:有效地址由形式地址间接提供、指令执行阶段访存两次以上、指令执行时间变长、扩大寻址范围、便于编制程序
- 寄存器寻址:有效地址即为寄存器编号、执行阶段不访存 只访问寄存器 执行速度快、寄存器个数有限 可缩短指令字长
- 寄存器间接寻址:有效地址在寄存器中 操作数在存储器中 执行阶段访存、便于编制循环程序
- 基址寻址:
- 采用专用的寄存器做基址寄存器(隐式):扩大寻址范围、便于程序搬家、BR内容由操作系统或管理程序确定、程序执行过程中BR中内容不变,A的内容可变
- 采用通用的寄存器做基址寄存器(显式):用户指定哪个寄存器做基址寄存器、基址寄存器的内容由操作系统决定、在程序执行过程中R0内容不变,形式地址A可变
- 变址寻址:IX为变址寄存器(通用寄存器也可以作为变址寄存器)、可扩大寻址范围、IX内容由用户给定、程序执行过程中IX内容可变、形式地址A不变、便于处理数组问题
- 相对寻址:A是相对于当前指令的位移量(可正可负,补码)、A的位数决定操作数的寻址范围、程序浮动、广泛用于转移指令
- 堆栈寻址:
RISC的特点
chapter 8
CPU的结构(ALU、CU、寄存器、中断系统)
CPU功能:指令控制(控制程序的顺序执行)、操作控制(产生完成每条指令所需的控制命令)时间控制(对各种操作加以时间上的控制)、数据加工(对数据进行算术运算和逻辑运算)、处理中断
CPU的寄存器:
- 用户可见寄存器(通用寄存器、数据寄存器、地址寄存器、条件码寄存器)
- 控制和状态寄存器(控制:PC→MAR→M→MDR→IR,PC可见 状态:状态寄存器放条件码 PSW寄存器放程序状态字)
CU控制单元:产生全部指令的微操作命令部件(两种方法:组合逻辑设计方法(硬连线逻辑)、微程序设计方法(存储逻辑))
指令周期
指令周期=取指周期(取指、分析)+间址周期+执行周期(执行)+中断周期
指令流水
为什么要用指令流水?提高细粒度并行性,开发系统的并行性,提高机器速度——小圆想的,错了不挨打
指令的二级流水:如果指令的执行阶段不访问主存,就可以利用这段时间取下一条指令,使得取下一条指令的操作和执行当前指令的操作同时进行,这就是两条指令的重叠
指令预取:由指令部件取出一条指令,并将它暂存起来,如果执行部件空闲,就将暂存的指令传给执行部件执行。与此同时,指令部件又可取出下一条指令并暂存起来。
如果取值和执行阶段时间上完全重叠,指令周期减半,速度提高一倍。影响效率加倍的因素?
- 指令执行时间一般大于取指时间。
- 当遇到条件转移指令时,下一条指令是不可知的。(用猜测法解决)
影响流水线性能的因素?(看书上的例子)
- 结构相关:不同指令争用同一功能部件产生的,也称资源相关
解决?
a) 后推法:流水线在完成前一条指令对数据的存储器访问时,暂停(一个时钟周期)取后一条指令的操作
b) 指令存储器和数据存储器分开,以免取指令和取操作数同时进行时互相冲突
c) 指令预取技术,适用于访存周期短的情况
- 数据相关:各条指令因重叠操作,可能改变对数据的读写访问顺序
解决?
a) 后推法:遇到数据相关时,就停顿后继指令的运行,直至前面指令的结果已经生成
b) 定向技术(旁路技术、相关专用通路技术):不必等某条指令的执行结果送回到寄存器后,再从寄存器中取出该结果,作为下一条指令的源操作数,而是直接将执行结果送到其他指令所需要的地方放。
- 控制相关:由转移指令引起
解决?(了解)
尽早判别法,转移预测法,加快和提前生成条件码,提高猜准率
数据相关分类:
流水线性能指标:吞吐率、加速比、效率
流水线中的多发技术:
1. 超标量技术:每个时钟周期内同时并发多条独立指令,即以并行操作方式将两条或两条以上指令编译并执行
要求配置多个功能部件,要求通过编译优化技术把可并行的指令搭配起来,硬件不能调整指令执行顺序
2. 超流水技术:将一些流水线寄存器插入到流水线段中,好比将流水线再分段。使得一个时钟周期内一个功能部件使用多次
硬件不能调整指令的执行顺序,靠编译程序解决优化问题
3. 超长指令字技术:由编译程序在编译时挖掘出指令间潜在的并行性后,把多条能并行操作的指令组合成具有多个操作码字段的超长指令
采用多个处理部件。对优化编译器的要求高,对Cache容量要求大。
中断系统