计算机组成原理第2版-唐朔飞配套
计算机组成原理 参考资料 白中英 《计算机组成原理》 立体化教材 第四版 唐朔飞 《计算机组成原理:学习指导与习题解答》 高教出版社 王诚 《计算机组成原理考研辅导》,清华出版社 第1章 计算机系统概论 第1章 计算机系统概论 1.1 计算机系统简介 1.2 计算机的基本组成 1.3 计算机硬件的主要技术指标 1.4 本书结构 1.4 本书结构 1.4 本书结构 1.4 本书结构 第2章 计算机的发展及应用 2.1 计算机的发展史 Top 10 2.2 计算机的应用 第3章 系统总线 3.1 总线的基本概念 3.2 总线的分类 3.3 总线特性及性能指标 3.4 总线结构 3.5 总线控制 第4章 存 储 器 4.1 概 述 4.2 主存储器 4.3 高速缓冲存储器 映射方法特点 全相联映像方式 优点:冲突概率小,Cache的利用高。 缺点:比较器难实现,需要一个访问速度 很快代价高的相联存储器 应用场合: 适用于小容量的Cache 直接相联映像方式 优点:比较电路少m倍线路,所以硬件实现简单,Cache地址为主存地址的低几位,不需变换。 缺点:冲突概率高(抖动) 应用场合 适合大容量Cache 组相联映像方式 比全相联容易实现,冲突低 v=1,则为直接相联映射方式 u=1,则为全相联映射方式 v的取值一般比较小, 一般是2的幂,称之为v路组相联cache. 举例 例1:假设主存容量为512KB,cache容量为4K,每个字块为16个字,每个字32位。 cache地址有多少位?可容纳多少块? 主存地址多少位?可容纳多少块? 在直接映射方式下,主存的第几块映射到cache的第5块(设起始字块为第1块) 画出直接映射方式下主存地址字段中各段的位数。 例2:假设主存容量为512K×16位,cache容量为4096×16位,块长为4个16位的字,访存地址为字地址 在直接映射方式下,设计主存的地址格式 在全相联映射方式下,设计主存的地址格式 在二路组相联映射方式下,设计主存的地址格式。 若主存容量为512K×32位,块长不变,在四路组相联映射方式下,设计主存的地址格式。 例3:设某机主存容量为16MB,cache的容量为8KB。每字块有8个字,每字32位,设计一个四路组相联的cache组织。 画出主存地址字段中各段的位数 设cache初态为空,CPU依次从主存第0,1,2….,99号单元读出100个字(主存一次读出一个字),并重复此序读10次,问命中率是多少? 若cache 的速度是主存的5倍,试问有cache 和无cache相比,速度提高多少? 例子:设cache有1、2、3、4共4个块,a、b、c、d等为主存中的块,访问顺序一次如下:a、b、c、d、b、b、c、c、d、d、a ,下次若要再访问e块。问,采用LFU和LRU算法替换结果是不是相同? 4.4 辅助存储器 第5章 输入输出系统 5.1 概 述 5.2 I/O设备 5.3 I/O 接 口 5.4 程序查询方式 5.5 程序中断方式 5.6 DMA 方式 第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定 点 运 算 6.4 浮点四则运算 6.5 算术逻辑单元 第7章 指 令 系 统 7.1 机 器 指 令 7.2 操作数类型和操作种类 7.3 寻 址 方 式 7.3 寻 址 方 式 7.4 指令格式举例 7.5 RISC 技 术 第8章 CPU 的结构和功能 8.1 CPU 的结构 8.2 指 令 周 期 8.3 指 令 流 水 8.4 中断系统 例8.2 设某机有4个中断源1,2,3,4,其硬件排队优先次序按1-2-3-4降序排列,各中断源的服务程序中所对应的屏蔽字如下表: 给出上述4个中断源的中断处理次序 若4个中断源同时有中断请求,画出CPU执行程序的轨迹。 解(1)处理次序按照3-1-4-2降序排列。 (2)当4个中断源同时有请求时,由于硬件排队的优先次序是1-2-3-4,故CPU先响应1,执行1.屏蔽字1101,开中断后执行3的程序,结束后回到1,1结束后,响应2,执行2,0100屏蔽字,执行4.回到2. 第9章 控制单元的功能 9.1 操作命令的分析 9.1 操作命令的分析 9.2 控制单元的功能 例9.1 设CPU内部采用非总线结构,如图9.3所示。 (1)写出取值周期的全部微操作 (2)写出取数指令LDA M,存数指令STA M, 加法指令 ADD M(M均为主存地址)在执行阶段所需的全部微操作。 (3)当上述指令均为间接寻址时,写出对应微操作 (4)写出无条件转移指令JMP Y和结果为零则转指令BAZ Y 在执行阶段所需的全部微操作。 STA M Ad(IR)-MAR 1-W ACC-MDR MDR-M(MAR) ADD M Ad(IR)-MAR 1-R M(MAR)-MDR (ACC)+(MDR)-ACC (3) 间接寻址 (4) 无条件转移 Ad(IR)-PC 条件转移 Z.Ad(IR)-PC 例9.2 已知单总线计算机结构如图9.5所示,其中M为主存,XR为变址寄存器,EAR为有效地址寄存器,LATCH为锁存器。图中各寄存器的输入输出均受到控制信号的控制,例如,PCi,MDRo.假设指令已存于PC中,画出ADD X,D (X为变址寄存器,D为形式地址)和STA *D(* 表示相对寻址,D为相对位移量)两条指令的指令周期信息流程图,并列出相应的控制信号序列。 例9.3 设某计算机的CPU主频为8Mhz,每个机器周期平均含2个时钟周期,每条指令的指令周期平均含2.5个机器周期,试问该机的平均指令执行速度为多少MIPS? 若CPU主频不变,但每个机器周期平均含4个时钟周期,每条指令周期平均有5个机器周期,则该机的平均指令执行速度为多少MIPS? 由此可得出什么结论? 解:由于主频为8MHz,所以时钟周期为1/8=0.125us,机器周期为0.125×2=0.25us,指令周期为0.625us。 平均指令执行速度为1.6MIPS 若CPU主频不变,机器周期含4个时钟周期,每条指令平均含5个机器周期,则指令周期为0.125×4×5=2.5us,故平均指令执行速度为0.4MIPS 可见机器的运行速度并不完全取决于主频。 第10章 控制单元的设计 10.1 组合逻辑设计 例10.1 设CPU中各部件及相互连接关系如图10.2所示。图中W是写控制标志,R是读控制标志,R1和R2是暂存器。 (1)假设要求在取指周期由ALU完成(PC)+1-PC的操作(ALU可以对它的一个源操作数完成加1运算)。要求以最少的节拍写出取指周期全部微操作命令及节拍安排。 (2)写出指令 在执行阶段微操作命令和节拍。 例10.2 设CPU内部结构如图10.2所示,且PC有自加1功能。此外还有B、C、D、E、H、L6个寄存器。它们各自的输入端和输出端都和内部总线Bus相连,并分别受控制信号控制。要求写出完成下列指令组合逻辑控制单元所发出的微操作命令及节拍。 (1)ADD B,C ;(B)+(C)-B (2)SUB E,@H ; (E)-((H))-E (3)STA @mem ; ACC-((mem)) 10.2 微程序设计 例10.4 某机的微指令格式中,共有8个控制字段,每个字段可分别激活5,8,3,16,1,7,25,4种控制信号。分别采用直接编码和字段直接编码方式设计微指令的操作控制字段,并说明两种方式的操作控制字段各取几位。 解:(1)采用直接编码方式,微指令的操作控制字段的总位数等于控制信号数,即: 5+8+3+16+1+7+25+4=69 (2)采用字段直接编码方式,需要的控制位少,根据题目给出的10个控制字段及各段可激活的控制信号数,再加上每个控制字段至少要留一个码字表示不激活任何一条控制线,即 微指令的8个控制字段分别需要6,9,4,17,2,8,26,5种状态,对应3,4,2,5,1,3,5,3位,故总位数为26. 例10.5 某微程序控制器中,采用水平型直接控制(编码)方式的微指令格式,后续微指令地址由微指令的下地址字段给出。已知机器共有28个微命令,6个互斥的可判定的外部条件,控存的容量是512×40位。试设计微指令格式,并说明理由。 解:水平型微指令由操作控制字段、判别测试字段和下地址字段三部分组成。因为微指令采用直接控制方式,又由于后续微指令地址由下地址字段给出,姑其下地址字段的位数可根据控存的容量定为9位。当微程序出现分支时,后续微指令地址的形成取决于状态条件,6个互斥的可判定外部条件,编码3位。 例10.6 某机共有52个微操作控制信号,构成5个相斥类的微命令组,各组分别包含5,8,2,15,22个微命令。已知可判定的外部条件有两个,微指令字长28位。 (1)按水平型微指令格式设计微指令,要求微指令的下地址字段直接给出后续微指令地址。 (2)指出控存的容量。 解: (1) 根据5个相斥类的微命令组,各组分别包含5、8、2、15、22个微命令,考虑到每组必须增加一种不发命令的情况,条件测试字段应包含一种不转移情况,则5个控制字段分别需要6、9、3、16、23种状态,对应3、4、2、4、5位(共18位),条件测试字段取2位。下地址字段28-18-2=8 (XR)+Ad(IR)-EAR EAR-bus-MAR M(MAR)-MDR MDR-bus-X (ACC)+(X)-LATCH LATCH-bus-ACC 执行周期 XRo,Ad(IRo),+,EARi EARo, MARi MARo,R/W=R, MDRi MDRo,Xi ACCo,Xo,Ki=+,LATCHi LATCHo,ACCi (PC)+Ad(IR)-EAR EAR-bus-MAR ACC-bus-MDR MDR-M(MAR) PCo,Ad(IRo),+,EARi EARo, MARi MDRo,MARo,R/W=w, ACCo,MDRi (2) STA *D 执行周期 三、多级时序系统 1. 机器周期 (1) 机器周期的概念 (2) 确定机器周期需考虑的因素 (3) 基准时间的确定 所有指令执行过程中的一个基准时间 每条指令的执行 步骤 每一步骤 所需的 时间 以完成 最复杂 指令功能的时间 为准 以 访问一次存储器 的时间 为基准 若指令字长 = 存储字长 取指周期 = 机器周期 9.2 2. 时钟周期(节拍、状态) 一个机器周期内可完成若干个微操作 每个微操作需一定的时间 时钟周期是控制计算机操作的最小单位时间 将一个机器周期分成若干个时间相等的 时间段(节拍、状态、时钟周期) 9.2 用时钟周期控制产生一个或几个微操作命令 CLK T0 T1 T2 T3 时钟周期 2. 时钟周期(节拍、状态) 机器周期 机器周期 T0 T1 T2 T3 T0 T1 T2 T3 9.2 3. 多级时序系统 机器周期、节拍(状态)组成多级时序系统 一个指令周期包含若干个机器周期 一个机器周期包含若干个时钟周期 CLK 机器周期 机器周期 机器周期 (取指令) (取有效地址) (执行指令) 指令周期 T0 T1 T2 T3 T0 T1 T2 T3 T0 T1 T2 T3 机器周期 机器周期 (取指令) (执行指令) 指令周期 T0 T1 T2 T3 T0 T1 T2 节拍 (状态) 节拍 (状态) 9.2 4. 机器速度与机器主频的关系 机器的 主频 f 越快 机器的 速度也越快 在机器周期所含时钟周期数 相同 的前提下, 两机 平均指令执行速度之比 等于 两机主频之比 机器速度 不仅与 主频有关 ,还与机器周期中所含 时钟周期(主频的倒数)数 以及指令周期中所含 的 机器周期数有关 9.2 MIPS1 MIPS2 = f1 f2 四、控制方式 产生不同微操作命令序列所用的时序控制方式 1. 同步控制方式 任一微操作均由 统一基准时标 的时序信号控制 CLK 机器周期 机器周期 机器周期 (取指令) (取有效地址) (执行指令) 指令周期 T0 T1 T2 T3 T0 T1 T2 T3 T0 T1 T2 T3 (1) 采用 定长 的机器周期 以 最长 的 微操作序列 和 最繁 的微操作作为 标准 9.2 机器周期内 节拍数相同 (2) 采用不定长的机器周期 机器周期 机器周期 (取指令) (执行指令) 指令周期 T0 T1 T2 T3 T0 T1 T2 节拍 (状态) 机器周期 机器周期 (取指令) (执行指令) T0 T1 T2 T3 T0 T1 T2 T3 T T 延长 9.2 机器周期内 节拍数不等 (3) 采用中央控制和局部控制相结合的方法 T0 T1 T2 T3 T0 T1 T2 中央控制节拍 T3 T0 T1 中央控制节拍 机器周期 执行周期 指令周期 取指周期 T0 T1 T2 T3 9.2 局部控制的节拍宽度与 中央控制的节拍宽度一致 T* T* T* 局部控制节拍 … 2. 异步控制方式 无基准时标信号 无固定的周期节拍和严格的时钟同步 采用 应答方式 3. 联合控制方式 4. 人工控制方式 (1) Reset (2) 连续 和 单条 指令执行转换开关 (3) 符合停机开关 同步与异步相结合 9.2 五、多级时序系统实例分析 1. 8085 的组成 9.2 A15~A8 中断控制 AC(8) TR(8) FR(5) IR(8) IDAL(16) PC(16) SP(16) L(8) H(8) E(8) D(8) C(8) B(8) 指令译码 和 机器周期 编码 ALU 定时和控制 时钟 控制 状态 DMA 复位 ABR(8) ADBR(8) 8位内部数据总线 I/O控制 INTA INTR SID SOD CLK Ready RD WR ALE IO/M HLDA Reset out AD7~AD0 2. 8085 的外部引脚 (1) 地址和数据信号 (2) 定时和控制信号 (3) 存储器和 I/O 初始化 A15~A8 AD7~AD0 SID SOD 入 X1 X2 入 HOLD Ready 出 HLDA 出 CLK ALE S0 S1 IO/M RD WR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 X1 X2 Reset out SOD SID Trap RST7.5 RST6.5 RST5.5 INTA AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 VSS INTR VCC HOLD HLDA CLK(out) Rsest in Ready IO/M S1 RD WR ALE S0 A15 A14 A13 A12 A11 A10 A9 A8 9.2 (4) 与中断有关的信号 (5) CPU 初始化 (6) 电源和地 出 INTA Trap 重新启动中断 入 INTR 入 Reset in 出 Reset out VCC +5 V VSS 地 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 X1 X2 Reset out SOD SID Trap RST7.5 RST6.5 RST5.5 INTA AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 VSS INTR VCC HOLD HLDA CLK(out) Rsest in Ready IO/M S1 RD WR ALE S0 A15 A14 A13 A12 A11 A10 A9 A8 9.2 3. 机器周期和节拍(状态)与控制信号的关系 9.2 T1 T2 T3 T4 T1 T2 T3 T1 T2 T3 M1 M2 M3 PC out PC+1 Ins IR X PC out PC+1 By Z Z out A Port IO PORT ACC byte PCL Instr PCL PCH PCH IO PORT 3MHZ CLK A15~A8 AD7~AD0 ALE RD WR IO/M 小结 每个 控制 信号在 指定机器周期 的 指定节拍 T 时刻 发出 机器周期 M1 取指令操作码 机器周期 M2 取设备地址 机器周期 M3 执行 ACC 的内容写入设备 以一条输出指令(I/O 写)为例 9.2 10.1 组合逻辑设计 10.2 微程序设计 一、组合逻辑控制单元框图 1. CU 外特性 IR 节拍发生器 CU T0 T1 Tn … CLK (机器主频) … 标志 0 1 2n-1 … C0 C1 Cn 操作码译码 n 位操作码 2.节拍信号 CLK T0 T1 T2 T3 时钟周期 机器周期 机器周期 T0 T1 T2 T3 T0 T1 T2 T3 10.1 二、微操作的节拍安排 采用 同步控制方式 CPU 内部结构采用非总线方式 一个 机器周期 内有 3 个节拍(时钟周期) 10.1 PC IR AC CU 时钟 ALU … … … C1 C2 C5 C9 C0 C10 C3 C7 C4 C6 C12 C11 C8 控制信号 标志 控制 信号 M D R M A R 1. 安排微操作时序的原则 原则一 微操作的 先后顺序不得 随意 更改 原则二 被控对象不同 的微操作 尽量安排在 一个节拍 内完成 原则三 占用 时间较短 的微操作 尽量 安排在 一个节拍 内完成 并允许有先后顺序 10.1 2. 取指周期 微操作的 节拍安排 PC MAR M ( MAR ) MDR MDR IR ( PC ) + 1 PC 原则二 原则二 原则三 3. 间址周期 微操作的 节拍安排 M ( MAR ) MDR MDR Ad ( IR ) T0 T1 T2 T0 T1 T2 1 R OP ( IR ) ID Ad ( IR ) MAR 1 R 10.1 4. 执行周期 微操作的 节拍安排 ① CLA ② COM ③ SHR T0 T1 T2 T0 T1 T2 T0 T1 T2 AC0 AC0 L ( AC ) R ( AC ) 0 AC AC AC 10.1 ④ CSL ⑤ STP ⑥ ADD X ⑦ STA X R ( AC ) L ( AC ) AC0 ACn T0 T1 T2 0 G T0 T1 T2 T0 T1 T2 T0 T1 T2 Ad ( IR ) MAR M ( MAR ) MDR ( AC ) + ( MDR ) AC Ad ( IR ) MAR AC MDR MDR M ( MAR ) 1 R 1 W 10.1 ⑧ LDA X ⑨ JMP X ⑩ BAN X T0 T1 T2 Ad ( IR ) MAR M ( MAR ) MDR MDR AC T0 T1 T2 T0 T1 T2 Ad ( IR ) PC 1 R A0 ? Ad ( IR ) + A0? PC PC 10.1 5. 中断周期 微操作的 节拍安排 T0 T1 T2 0 MAR PC MDR MDR M ( MAR ) 硬件关中断 向量地址 PC 中断隐指令完成 1 W 10.1 W R MAR MDR IR PC Acc R1 R2 微操作命令形成部件 存储器 ALU bus 图10.2 CPU内部结构框图 (3) 屏蔽技术可改变处理优先等级 响应优先级 响应优先级 A→B→C→D 降序排列 8.4 不可改变 处理优先级 可改变(通过重新设置屏蔽字) 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 A B C D 新屏蔽字 原屏蔽字 中断源 处理优先级 A→D→C→B 降序排列 (3) 屏蔽技术可改变处理优先等级 8.4 服务程序 B处理完 C处理完 D处理完 A处理完 t 主程序 A程序 B程序 C程序 D程序 A、B、C、D 同时请求中断 CPU 执行程序轨迹(原屏蔽字) (3) 屏蔽技术可改变处理优先等级 (4) 屏蔽技术的其他作用 8.4 便于程序控制 可以 人为地屏蔽 某个中断源的请求 服务程序 D处理完 C处理完 B处理完 A处理完 t 主程序 A程序 B程序 C程序 D程序 A、B、C、D 同时请求中断 CPU 执行程序轨迹(新屏蔽字) 8.4 (5) 新屏蔽字的设置 保护现场 置屏蔽字 开中断 中断服务 关中断 恢复现场 恢复屏蔽字 开中断 中断返回 置屏蔽字 恢复屏蔽字 关中断 开中断 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 2 3 4 4 3 屏蔽字 2 1 中断源 程序1 程序2 程序3 程序4 1、2、3、4同时请求中断 3完成 2完成 4完成 1完成 (1) 断点进栈 (2) 断点存入“ 0 ” 地址 中断隐指令 完成 中断周期 命令存储器写 0 MAR PC MDR (MDR) 存入存储器 三次中断,三个断点都存入 “ 0 ” 地址 4. 多重中断的断点保护 断点 MDR ? 如何保证断点不丢失? 中断隐指令 完成 8.4 (3) 程序断点存入 “ 0 ” 地址的断点保护 ×××× 0 5 JMP SERVE ×××× SAVE ×××× RETURN STA SAVE … 0 地址内容转存 其他服务内容 SERVE LDA SAVE JMP @ RETURN 存程序断点 5 为向量地址 … 保护现场 恢复现场 间址返回 存放 ACC 内容 转存 0 地址内容 开中断 ENI LDA 0 STA RETURN 置屏蔽字 8.4 地 址 内 容 说 明 9.1 操作命令的分析 9.2 控制单元的功能 完成一条指令分 4 个工作周期 取指周期 间址周期 执行周期 中断周期 一、取指周期 PC MAR 地址线 1 R M ( MAR ) MDR MDR IR ( PC ) + 1 PC +1 MDR CU MAR PC IR 存储器 CPU 地址总线 数据总线 控制总线 OP(IR) CU 二、间址周期 M ( MAR ) MDR 1 R Ad ( IR ) MAR MDR Ad ( IR ) 指令形式地址 MAR 9.1 MDR CU MAR CPU 地址总线 数据总线 控制总线 IR 存储器 三、执行周期 1. 非访存指令 (1) CLA 清A (2) COM 取反 (4) CSL 循环左移 (3) SHR 算术右移 (5) STP 停机指令 0 ACC ACC ACC L(ACC) R(ACC), ACC0 ACC0 R(ACC) L(ACC), ACC0 ACCn 0 G 9.1 2. 访存指令 Ad(IR) MAR 1 R M(MAR) MDR (ACC) + (MDR) ACC Ad(IR) MAR 1 W ACC MDR MDR M(MAR) STA X ADD X (2) 存数指令 (1) 加法指令 9.1 (3) 取数指令 Ad ( IR ) MAR 1 R M ( MAR ) MDR MDR ACC 3. 转移指令 (1) 无条件转 (2) 条件转移 Ad ( IR ) PC A0 ?Ad ( IR ) + A0 ( PC ) PC LDA X JMP X BAN X (负则转) 9.1 4. 三类指令的指令周期 取指周期 执行周期 取指周期 执行周期 取指周期 执行周期 取指周期 间址周期 执行周期 非访存 指令周期 直接访存 指令周期 间接访存 指令周期 转移 指令周期 9.1 取指周期 间址周期 执行周期 间接转移 指令周期 四、中断周期 程序断点存入 “ 0 ” 地址 程序断点 进栈 0 MAR 1 W PC MDR MDR M ( MAR ) 向量地址 PC 0 EINT(置“0”) 0 EINT(置“0”) 向量地址 PC MDR M ( MAR ) PC MDR 1 W 中断识别程序入口地址 M PC 9.1 ( SP ) 1 MAR 一、控制单元的外特性 指令寄存器 控制单元 CU … 时钟 标志 CPU 内部的控制信号 到系统总线的控制信号 来自系统总线的控制信号 系统总线 1. 输入信号 (1) 时钟 (2) 指令寄存器 (4) 外来信号 (3) 标志 CU 受时钟控制 控制信号 与操作码有关 OP ( IR ) CU CU 受标志控制 INTR 中断请求 HRQ 总线请求 一个时钟脉冲 发一个操作命令或一组需同时执行的操作命令 如 9.2 2. 输出信号 (1) CPU 内的各种控制信号 (2) 送至控制总线的信号 Ri Rj (PC) + 1 PC INTA HLDA 访存控制信号 访 IO/ 存储器的控制信号 读命令 写命令 中断响应信号 总线响应信号 MREQ IO/M RD WR ALU +、-、与、或 …… 9.2 二、控制信号举例 PC IR AC CU 时钟 ALU … … … 控制信号 标志 控制 信号 C0 C1 C2 C3 C4 取指周期 以 ADD @ X 为例 PC IR CU 9.2 1. 不采用 CPU 内部总线的方式 PC PC PC M D R M A R M D R M A R PC IR AC CU 时钟 ALU … … … 控制信号 标志 控制 信号 M D R M A R 二、控制信号举例 1. 不采用 CPU 内部总线的方式 C1 C2 C3 C5 ADD @ X 间址周期 IR 9.2 M D R M D R M A R PC IR AC CU 时钟 ALU … … … 控制信号 标志 控制 信号 M D R M A R 二、控制信号举例 1. 不采用 CPU 内部总线的方式 C1 C2 C5 ADD @ X 执行周期 C7 C6 C8 AC ALU … 控制 信号 9.2 M D R M A R M D R MDR MDR CU (1) ADD @ X 取指周期 PC CU 发读命令 1 R MDR OP(IR) (PC)+ 1 PC IR PC MAR AC Y ALU Z … 控制信号 IRi IRi PCO PCO MARi MARi MDRO MDRO … 数据线 数据线 控制信号 CPU 内 部 总 线 时钟 2. 采用 CPU 内部总线方式 地址线 地址线 MAR MDR IR CU 9.2 IR PC PC MDR MAR CU IR PC PC CU (2) ADD @ X 间址周期 MDR 1 R MDR 有效地址 Ad(IR) MDRO MDRO 数据线 数据线 时钟 CU IR PC MAR MDR AC Y ALU Z … 控制信号 … 控制信号 CPU 内 部 总 线 MDR IR MARi MARi 地址线 地址线 MAR IRi IRi MAR MDR IR MDR MDR MDRO MDRO MDRO MDRO MDRO 形式地址 MAR 9.2 CU 时钟 CU IR PC MAR MDR AC Y ALU Z … 控制信号 CPU 内 部 总 线 MDRO MDRO (3) ADD @ X 执行周期 1 R MDR Z AC (AC)+(Y) MDR 控制信号 … MAR MDR 地址线 地址线 数据线 数据线 MAR MDR Y MDR MDR MDRO MDRO MDRO MDRO MDRO MDRO MDRO Yi Yi Y ALU AC ACO ACO ALUi ALUi ALU ALU AC Z Z Z ZO ZO ACi ACi AC AC AC AC MARi MARi ALU AC 9.2 CU 解:(1)取指周期的全部微操作如下: PC?MAR 1-R M(MAR)-MDR MDR-IR OP(IR)-CU (PC)+1-PC (2) LDA M Ad(IR)-MAR M(MAR)-MDR 1-R MDR-ACC 解: (1) ADD X,D PC-bus-MAR MDR-bus-IR (PC)+1-PC M(MAR)-MDR 取指 PCo, MARi MARo,R/W=R, MDRi MDRo,IRi +1 一、如何提高机器速度 1. 提高访存速度 2. 提高 I/O 和主机之间的传送速度 提高整机处理能力 高速芯片 Cache 多体并行 I/O 处理机 DMA 多总线 通道 高速器件 改进系统结构 ,开发系统的并行性 中断 3. 提高运算器速度 高速芯片 改进算法 快速进位链 二、系统的并行性 时间上互相重叠 2. 并行性的等级 指令级(指令之间) (指令内部) 过程级(程序、进程) 两个或两个以上事件在 同一时刻 发生 两个或两个以上事件在 同一时间段 发生 并行 1. 并行的概念 粗粒度 软件实现 细粒度 硬件实现 并发 同时 8.3 取指令 3 执行指令 3 三、指令流水原理 2. 指令的二级流水 1. 指令的串行执行 取指令 取指令部件 完成 总有一个部件 空闲 指令预取 若 取指 和 执行 阶段时间上 完全重叠 指令周期 减半 速度提高 1 倍 … 执行指令 执行指令部件 完成 取指令 1 执行指令 1 取指令 2 执行指令 2 取指令 3 执行指令 3 取指令 2 执行指令 2 取指令 1 执行指令 1 8.3 必须等 上条 指令执行结束,才能确定 下条 指令的地址, 造成时间损失 3. 影响指令流水效率加倍的因素 (1) 执行时间 取指时间 (2) 条件转移指令 对指令流水的影响 解决办法 ? 取指令 部件 指令部件 缓冲区 执行指令 部件 猜测法 8.3 4. 指令的六级流水 六级流水 14 个时间单位 串行执行 6 × 9 = 54 个时间单位 完成 一条指令 6 个时间单位 CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI 指令 1 指令 2 指令 3 指令 4 指令 5 指令 6 指令 7 指令 8 指令 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 t 8.3 指令 1 与指令 4 冲突 指令 2 与指令 5 冲突 指令1、指令3、指令 6 冲突 … CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI CO FO EI WO DI FI 指令 1 指令 2 指令 3 指令 4 指令 5 指令 6 指令 7 指令 8 指令 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 t 三、影响指令流水线性能的因素 1. 结构相关 8.3 不同指令争用同一功能部件产生资源冲突 程序的相近指令之间出现某种关联 使指令流水出现停顿,影响流水线效率 解决办法 ? 停顿 ? 指令存储器和数据存储器分开 ? 指令预取技术 (适用于访存周期短的情况) 2. 数据相关 不同指令因重叠操作,可能改变操作数的 读/写 访问顺序 采用 旁路技术 解决办法 8.3 写后读相关(RAW) SUB R1,R2,R3 ADD R4,R5,R1 ;(R2) (R3) R1 ;(R5)+(R1) R4 读后写相关(WAR) STA M,R2 ADD R2,R4,R5 ;(R2) M 存储单元 ;(R4)+(R5) R2 写后写相关(WAW) 后推法 MUL R3,R2,R1 SUB R3,R4,R5 ;(R2)× (R1) R3 ;(R4) (R5) R3 3. 控制相关 8.3 BNE 指令必须等 CPX 指令的结果 才能判断出 是转移 还是顺序执行 LDA # 0 LDX # 0 INX CPX # N BNE M DIV # N STA ANS ADD X, D M 由转移指令引起 3. 控制相关 8.3 WO EI FO CO DI WO EI FO DI FI FI DI FI CO FI FO CO DI FI WO EI FO CO DI FI DI FO EI WO EI FO CO FI DI CO WO DI FI CO FI 指令 1 指令 2 指令 3 指令 4 指令 5 指令 6 指令 7 指令15 指令16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 转移损失 t 设 指令3 是转移指令 四、流水线性能 1. 吞吐率 单位时间内 流水线所完成指令 或 输出结果 的 数量 8.3 最大吞吐率 实际吞吐率 连续处理 n 条指令的吞吐率为 设 m 段的流水线各段时间为Δ t Tpmax = Δ 1 t Tp = m ·Δ + (n-1) · Δ n t t 2. 加速比 Sp 8.3 m 段的 流水线的速度 与等功能的 非流水线的速度 之比 设流水线各段时间为 Δ t 完成 n 条指令在 m 段流水线上共需 T = m · + (n-1) · t t Δ Δ 完成 n 条指令在等效的非流水线上共需 T ′= nm · t Δ Sp = m · +(n-1) · nm · = nm m + n -1 Δ t Δ Δ t t 则 由于流水线有 建立时间 和 排空时间 因此各功能段的 设备不可能 一直 处于 工作 状态 8.3 流水线中各功能段的 利用率 3. 效率 mΔt 3 1 2 4 5 3 1 2 4 5 3 1 2 4 5 3 1 2 4 5 … … … … … … … … … … … … n-1 n n-1 n n-1 n n-1 n T时间 S空间 空间 S4 S3 S2 S1 (n-1) Δt 8.3 m(m + n -1) Δt = mnΔt 流水线各段处于工作时间的时空区 流水线中各段总的时空区 效率 = 3. 效率 mΔt 3 1 2 4 5 3 1 2 4 5 3 1 2 4 5 3 1 2 4 5 … … … … … … … … … … … … n-1 n n-1 n n-1 n n-1 n T时间 S空间 空间 S4 S3 S2 S1 (n-1) Δt 流水线中各功能段的 利用率 五、流水线的多发技术 1. 超标量技术 每个时钟周期内可 并发多条独立指令 不能调整 指令的 执行顺序 配置多个功能部件 通过编译优化技术,把可并行执行的指令搭配起来 8.3 IF ID EX WR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 时钟 周期 指令序列 2. 超流水线技术 在 一个时钟周期 内 再分段 ( 3 段) 不能调整 指令的 执行顺序 在一个时钟周期内 一个功能部件使用多次( 3 次) 靠编译程序解决优化问题 流水线速度是原来速度的 3 倍 8.3 IF ID EX WR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 时钟周期 指令序列 3. 超长指令字技术 采用 多个处理部件 具有 多个操作码字段 的 超长指令字(可达几百位) 由编译程序 挖掘 出指令间 潜在 的 并行性, 将 多条 能 并行操作 的指令组合成 一条 8.3 IF ID EX WR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 时钟周期 指令序列 六、流水线结构 1. 指令流水线结构 完成一条指令分 7 段, 每段需一个时钟周期 若 流水线不出现断流 1 个时钟周期出 1 结果 不采用流水技术 7 个时钟周期出 1 结果 理想情况下,7 级流水 的速度是不采用流水技术的 7 倍 地址形成部件 指令译码部件 取操作数部件 取指令部件 操作执行部件 回写结果部件 修改指令指针部件 锁存 锁存 锁存 锁存 锁存 锁存 8.3 2. 运算流水线 完成 浮点加减 运算 可分 对阶、尾数求和、规格化 三段 分段原则 每段 操作时间 尽量 一致 锁存器 对阶功能部件 第一段 尾数加部件 锁存器 第二段 规格化部件 锁存器 第三段 8.3 一、概述 1. 引起中断的各种因素 (1) 人为设置的中断 (2) 程序性事故 如 转管指令 溢出、操作码不能识别、除法非法 (5) 外部事件 (4) I/O 设备 (3) 硬件故障 用 键盘中断 现行程序 转管指令 … … 管理程序 2. 中断系统需解决的问题 (1) 各中断源 如何 向 CPU 提出请求 ? (2) 各中断源 同时 提出 请求 怎么办 ? (5) 如何 寻找入口地址 ? (4) 如何 保护现场 ? (3) CPU 什么 条件、什么 时间、以什么 方式 响应中断 ? (6) 如何 恢复现场,如何 返回 ? (7) 处理中断的过程中又 出现新的中断 怎么办 ? 硬件 + 软件 8.4 二、中断请求标记和中断判优逻辑 1. 中断请求标记 INTR 一个请求源 一个 INTR 中断请求标记触发器 多个INTR 组成 中断请求标记寄存器 INTR 分散 在各个中断源的 接口电路中 INTR 集中 在 CPU 的中断系统 内 1 2 3 4 5 n 掉电 过热 阶上溢 主存读写校验错 非法除法 键盘输入 打印机输出 8.4 2. 中断判优逻辑 ① 分散 在各个中断源的 接口电路中 链式排队器 ② 集中 在 CPU 内 (1) 硬件实现(排队器) 1 1 1 1 1 参见 第五章 INTR1 INTR2 INTR3 INTR4 INTR1 、 INTR2 、 INTR3 、 INTR4 优先级 按 降序 排列 INTP1 INTP2 INTP3 INTP4 8.4 A、B、C 优先级按 降序 排列 (2) 软件实现(程序查询) 否 … 是否 A 请求? 是否 B 请求? 是否 C 请求? 转 A 的服务程序 入口地址 转 B 的服务程序 入口地址 转 C 的服务程序 入口地址 是 是 是 否 否 8.4 三、中断服务程序入口地址的寻找 1. 硬件向量法 入口地址 200 入口地址 300 入口地址 400 12 H 13 H 14 H 主存 12 H 13 H 14 H JMP 200 JMP 300 JMP 400 主存 向量地址 形成部件 … … 中断向量 排队器输出 向量地址 12H、13H、14H 入口地址 200、 300、 400 8.4 2. 软件查询法 M JMP 1# SR 1# D = 1 转1# 服务程序 SKP DZ 2# JMP 2# SR 2# D = 0 跳 2# D = 1 转2# 服务程序 SKP DZ 8# JMP 8# SR 8# D = 0 跳 8# D = 1 转8# 服务程序 八个中断源 1,2, 8 按 降序 排列 … … 8.4 SKP DZ 1# 1# D = 0 跳 (D为完成触发器) 中断识别程序(入口地址 M) 地 址 说 明 指 令 四、中断响应 1. 响应中断的 条件 允许中断触发器 EINT = 1 2. 响应中断的 时间 指令执行周期结束时刻由CPU 发查询信号 CPU 中断查询 INTR1 D Q INTR2 D Q INTRn D Q 中断源 1 中断源 2 中断源 n … 至排队器 8.4 3. 中断隐指令 (1) 保护程序断点 (2) 寻找服务程序入口地址 (3) 硬件 关中断 向量地址 形成部件 INT S Q R EINT S Q R PC 1 ≥1 排队器 … … 断点存于 特定地址( 0 号地址) 内 断点 进栈 INT 中断标记 EINT 允许中断 R – S 触发器 8.4 向量地址 PC (硬件向量法) 中断识别程序 入口地址 M PC (软件查询法) 五、保护现场和恢复现场 1. 保护现场 2. 恢复现场 寄存器 内容 断点 保护现场 其它服务程序 恢复现场 中断返回 PUSH 视不同请求源而定 POP 中断服务程序 完成 中 断 服 务 程 序 中断隐指令 完成 中断服务程序 完成 8.4 IRET 1. 多重中断的概念 k l m k +1 l +1 m +1 第一次 中断 第二次 中断 第三次 中断 程序断点 k+1 , l+1 , m+1 六、中断屏蔽技术 8.4 2. 实现多重中断的条件 B、C A 中断 请求 主程序 (2) 优先级别高 的中断源 有权中断优先级别低 的中断源 (1) 提前 设置 开中断 指令 A B C D 中断服务程序 ( A、B、 C、 D 优先级按 降序 排列) D 8.4 3. 屏蔽技术 (1) 屏蔽触发器的作用 MASK = 0(未屏蔽) INTR 能被置 “1” 1 1 1 1 INTP1 INTP2 INTP3 INTP4 INTR1 INTR2 INTR3 INTR4 MASK1 MASK2 MASK3 MASK4 D Q 1 D INTR MASK Q CPU 查询 MASKi = 1 (屏蔽) INTPi = 0 (不能被排队选中) 8.4 (2) 屏蔽字 8.4 优先级 屏 蔽 字 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 … 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 15 16 … 16个中断源 1,2,3 , 16 按 降序 排列 … 8. 变址寻址 EA = ( IX ) +A OP A 操作数 主存 寻址特征 ALU IX 可扩大寻址范围 便于处理数组问题 IX 的内容由用户给定 IX 为变址寄存器(专用) 在程序的执行过程中 IX 内容可变,形式地址 A 不变 通用寄存器也可以作为变址寄存器 7.3 例 设数据块首地址为 D,求 N 个数的平均值 直接寻址 变址寻址 LDA D ADD D + 1 ADD D + 2 … ADD D + ( N -1 ) DIV # N STA ANS LDA # 0 LDX # 0 INX CPX # N BNE M DIV # N STA ANS 共 N + 2 条指令 共 8 条指令 ADD X, D M X 为变址寄存器 D 为形式地址 (X) 和 #N 比较 (X) +1 X 结果不为零则转 7.3 9. 相对寻址 EA = ( PC ) + A A 是相对于当前指令的位移量(可正可负,补码) A 的位数决定操作数的寻址范围 程序浮动 广泛用于转移指令 操作数 寻址特征 ALU OP A 相对距离 A 1000 PC … 主存 1000 A OP 7.3 (1) 相对寻址举例 M 随程序所在存储空间的位置不同而不同 EA = ( M+3 ) – 3 = M – 3 * LDA # 0 LDX # 0 ADD X, D INX CPX # N BNE M DIV # N STA ANS M M+1 M+2 M+3 而指令 BNE 与 指令 ADD X, D 相对位移量不变 – 3 * 指令 BNE 操作数的有效地址为 – 3 * 相对寻址特征 * 7.3 (2) 按字节寻址的相对寻址举例 OP 位移量 2000 H 2008 H 8 JMP * + 8 OP 06 H 2000 H 2008 H 8 设 当前指令地址 PC = 2000H 转移后的目的地址为 2008H 因为 取出 JMP * + 8 后 PC = 2002H 二字节指令 故 JMP * + 8 指令 的第二字节为 2008H - 2002H = 06H 7.3 10. 堆栈寻址 (1) 堆栈的特点 堆栈 硬堆栈 软堆栈 多个寄存器 指定的存储空间 先进后出(一个入出口) 栈顶地址 由 SP 指出 – 1 1FFFH +1 2000 H 进栈 (SP)– 1 SP 出栈 (SP)+ 1 SP 栈顶 栈底 2000 H SP 2000 H … … 1FFF H SP 1FFFH 栈顶 栈底 进栈 出栈 1FFF H 栈顶 2000 H 栈顶 7.3 (2) 堆栈寻址举例 15 200H ACC SP X 栈顶 200H 栈底 主存 15 1FFH ACC SP 15 栈顶 200H 栈底 主存 X 1FFH PUSH A 前 PUSH A 后 POP A 前 POP A 后 Y 1FFH ACC SP X 栈顶 200H 栈底 主存 15 1FFH 15 200H ACC SP 栈顶 200H 栈底 主存 X 15 7.3 (3) SP 的修改与主存编址方法有关 ① 按 字 编址 进栈 出栈 (SP)– 1 SP (SP)+ 1 SP ② 按 字节 编址 存储字长 16 位 进栈 出栈 (SP)– 2 SP (SP)+ 2 SP 存储字长 32 位 进栈 出栈 (SP)– 4 SP (SP)+ 4 SP 7.3 一、设计指令格式时应考虑的各种因素 1. 指令系统的 兼容性 (向上兼容) 2. 其他因素 操作类型 数据类型 指令格式 包括指令个数及操作的难易程度 指令字长是否固定 寻址方式 寄存器个数 地址码位数、地址个数、寻址方式类型 操作码位数、是否采用扩展操作码技术, 确定哪些数据类型可参与操作 指令寻址、操作数寻址 寄存器的多少直接影响指令的执行时间 二、指令格式举例 1. PDP – 8 指令字长固定 12 位 操作码 间 页 地址码 访存类指令 0 2 3 5 4 11 寄存器类指令 1 1 1 辅助操作码 0 2 3 11 I/O 类指令 1 1 0 设备 操作码 0 2 3 11 9 8 7.4 采用扩展操作码技术 2. PDP – 11 源地址 OP 4 6 6 16 16 目的地址 存储器地址1 存储器地址2 OP 10 6 16 目的地址 存储器地址 目的地址 4 6 6 源地址 OP 10 6 目的地址 OP-CODE 16 OP-CODE 指令字长有 16 位、32 位、48 位三种 零地址 (16 位) 一地址 (16 位) 二地址 R – R (16 位) 二地址 R – M (32 位) 二地址 M – M (48 位) 扩展操作码技术 7.4 3. IBM 360 OP R1 R2 RR 格式 8 4 4 OP R1 X B D RX 格式 8 4 4 4 12 OP R1 R3 B D RS 格式 8 4 4 4 12 OP B D I SI 格式 8 8 4 12 二地址 R – R 基址加变址寻址 二地址 R – M 三地址 R – M 基址寻址 二地址 M – M 基址寻址 基址寻址 立即数 – M 7.4 OP B1 D1 L B2 D2 SS 格式 8 8 4 12 4 12 4. Intel 8086 (1) 指令字长 (2) 地址格式 1 ~ 6 个字节 MOV WORD PTR[0204], 0138H 6 字节 INC AX 1 字节 一地址 NOP 1 字节 CALL 段内调用 3 字节 零地址 5 字节 段间调用 寄存器 – 寄存器 寄存器 – 立即数 寄存器 – 存储器 ADD AX,BX 2 字节 ADD AX,[3048H] 4 字节 ADD AX,3048H 3 字节 二地址 CALL 7.4 一、RISC 的产生和发展 80 — 20 规律 典型程序中 80% 的语句仅仅使 用处理机中 20% 的指令 执行频度高的简单指令,因复杂指令 的存在,执行速度无法提高 RISC(Reduced Instruction Set Computer) CISC(Complex Instruction Set Computer) —— RISC技术 能否用 20% 的简单指令组合不常用的 80% 的指令功能 ? 二、RISC 的主要特征 选用使用频度较高的一些 简单指令, 复杂指令的功能由简单指令来组合 指令 长度固定、指令格式种类少、寻址方式少 只有 LOAD / STORE 指令访存 采用 流水技术 一个时钟周期 内完成一条指令 采用 组合逻辑 实现控制器 CPU 中有多个 通用 寄存器 采用 优化 的 编译 程序 7.5 三、CISC 的主要特征 系统指令 复杂庞大,各种指令使用频度相差大 指令 长度不固定、指令格式种类多、寻址方式多 访存 指令 不受限制 大多数指令需要 多个时钟周期 执行完毕 采用 微程序 控制器 CPU 中设有 专用寄存器 难以 用 优化编译 生成高效的目的代码 7.5 四、RISC和CISC 的比较 1. RISC更能 充分利用 VLSI 芯片的面积 2. RISC 更能 提高计算机运算速度 指令数、指令格式、寻址方式少, 通用 寄存器多,采用 组合逻辑 , 便于实现 指令流水 3. RISC 便于设计,可 降低成本,提高 可靠性 4. RISC 有利于编译程序代码优化 5. RISC 不易 实现 指令系统兼容 7.5 8.1 CPU 的结构 8.3 指令流水 8.2 指令周期 8.4 中断系统 一、 CPU 的功能 取指令 分析指令 执行指令,发出各种操作命令 控制程序输入及结果的输出 总线管理 处理异常情况和特殊请求 1. 控制器的功能 2. 运算器的功能 实现算术运算和逻辑运算 指令控制 操作控制 时间控制 数据加工 处理中断 二、CPU 结构框图 PC IR 指令控制 操作控制 时间控制 数据加工 处理中断 ALU 寄存器 中断系统 1. CPU 与系统总线 CU 时序电路 寄存器 ALU 中断 系统 CU CPU 控制总线 数据总线 地址总线 8.1 2. CPU 的内部结构 8.1 算术和 布尔逻辑 取反 移位 状态标志 内部 数据总线 寄存器 CU 中断 系统 ALU 控制信号 … C P U 1. 用户可见寄存器 (1) 通用寄存器 三、 CPU 的寄存器 存放操作数 可作 某种寻址方式所需的 专用寄存器 (2) 数据寄存器 存放操作数(满足各种数据类型) 两个寄存器拼接存放双倍字长数据 (3) 地址寄存器 存放地址,其位数应满足最大的地址范围 用于特殊的寻址方式 段基值 栈指针 (4) 条件码寄存器 存放条件码,可作程序分支的依据 如 正、负、零、溢出、进位等 8.1 2. 控制和状态寄存器 (1) 控制寄存器 PC 控制 CPU 操作 (2) 状态寄存器 状态寄存器 其中 MAR、MDR、IR 用户不可见 存放条件码 PSW 寄存器 存放程序状态字 PC 用户可见 3. 举例 Z8000 8086 MC 68000 MAR M MDR IR 8.1 四、 控制单元 CU 和中断系统 1. CU 产生全部指令的微操作命令序列 组合逻辑设计 微程序设计 硬连线逻辑 存储逻辑 2. 中断系统 参见 第4篇 五、ALU 参见 8.4 节 参见 第6章 8.1 一、 指令周期的基本概念 1 . 指令周期 取出并执行一条指令所需的全部时间 完成一条指令 执行 取指、分析 取指阶段 取指周期 执行阶段 执行周期 (取指、分析) (执行指令) 指令周期 取指周期 执行周期 2. 每条指令的指令周期不同 取指周期 指令周期 取指周期 执行周期 指令周期 NOP ADD mem MUL mem 8.2 取指周期 执行周期 指令周期 … 3. 具有间接寻址的指令周期 4. 带有中断周期的指令周期 取指周期 间址周期 指令周期 执行周期 取指周期 间址周期 指令周期 执行周期 中断周期 8.2 5. 指令周期流程 取指周期 执行周期 有间址吗? 有中断吗? 间址周期 中断周期 是 是 否 否 8.2 6. CPU 工作周期的标志 CPU 访存有四种性质 取 指令 取 地址 取 操作数 存 程序断点 取指周期 间址周期 执行周期 中断周期 FE D IND D INT D CLK 1 FE 1 IND 1 EX 1 INT EX D CPU 的 4个工作周期 8.2 1. 取指周期数据流 二、 指令周期的数据流 MDR CU MAR PC IR 存储器 CPU 地址总线 数据总线 控制总线 IR +1 8.2 2. 间址周期数据流 MDR CU MAR CPU 地址总线 数据总线 控制总线 PC IR 存储器 MDR 8.2 3. 执行周期数据流 4 . 中断周期数据流 不同指令的执行周期数据流不同 MDR CU MAR CPU 地址总线 数据总线 控制总线 PC 存储器 8.2 n 位全加器分若干小组,小组中的进位同时产生, 小组与小组之间采用串行进位 当 di ti 形成后 经 2.5 ty 5 ty 7.5 ty 1 0 ty (1) 单重分组跳跃进位链 第 1 组 第 2 组 第 3 组 第 4 组 C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 d15 t15 d14 d13 d12 t14 t13 t12 d11 d10 d9 d8 t11 t10 t9 t8 d7 d6 d5 d4 t7 t6 t5 t4 d3 d2 d1 d0 t3 t2 t1 t0 产生 C3 ~ C0 产生 C7 ~ C4 产生 C11 ~ C8 产生 C15 ~ C12 6.5 以 n = 16 为例 C-1 (2) 双重分组跳跃进位链 n 位全加器分若干大组,大组中又包含若干小组。每个大组中小组的最高位进位同时产生。大组与大组之间采用串行进位。 以 n = 32 为例 1 3 2 4 5 6 7 8 第 一 大 组 第 二 大 组 C31 C27 C23 C19 C15 C11 C7 C3 6.5 (3) 双重分组跳跃进位链 大组进位分析 C3 = d3 + t3C2 = d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1 以第 8 小组为例 D8 小组的本地进位 与外来进位无关 T8 小组的传送条件 与外来进位无关 传递外来进位 C7 = D7 + T7C3 C11= D6 + T6C7 进一步展开得 C15 = D5 + T5C11 C3 = D8+T8C-1 C7 = D7+T7C3 C11 = D6+T6C7 C15 = D5+T5C11 第 7 小组 第 6 小组 第 5 小组 同理 D8 T8 C-1 = + = D7+T7D8+T7T8C-1 = D6+T6D7+T6T7D8+T6T7T8C-1 = D5+T5D6+T5T6D7+T5T6T7D8+T5T6T7T8C-1 6.5 (4) 双重分组跳跃进位链的 大组 进位线路 以第 2 大组为例 第 5 小组 第 6 小组 第 7 小组 第 8 小组 T5 T6 ≥1 ≥1 ≥1 ≥1 ≥1 1 1 1 C-1 D5 D6 D7 T7 D8 T8 C15 C11 C7 C3 6.5 (5) 双重分组跳跃进位链的 小组 进位线路 以第 8 小组为例 只产生 低 3 位 的进位和 本小组的 D8 T8 C2 C1 C0 D8 T8 1 ≥1 ≥1 ≥1 ≥1 1 1 1 C-1 1 d3 t3 d2 t2 d1 t1 d0 t0 6.5 (6) n =16 双重分组跳跃进位链 第 5 小组 第 6 小组 第 7 小组 第 8 小组 第 二 重 进 位 链 D5 T5 D6 T6 D7 T7 D8 T8 C15 C11 C7 C3 C14~12 C10~8 C6~4 C2~0 d15~12 t15~12 d11~8 t11~8 d9~4 t9~4 d3~0 t3~0 C-1 经 5 ty 经 7.5 ty 经 3 2 ty 经 1 0 ty 产生 C2、C1、C0、D5 ~ D8、T5 ~ T8 产生 C15、 C11、 C7、 C3 产生 C14~C12、 C10~C8 、 C6~C4 产生 全部进位 产生 全部进位 6.5 经 2.5 ty 当 di ti 和C-1形成后 串行进位链 单重分组跳跃进位链 (7) n =32 双重分组跳跃进位链 di ti di ti di ti di ti di ti di ti di ti di ti 1 2 3 4 5 6 7 8 第 一 大 组 第 二 大 组 … … … … … … … … D1 T1 D2 T2 D3 T3 D4 T4 D5 T5 D6 T6 D7 T7 D8 T8 C31 C27 C23 C19 C15 C11 C7 C3 C30~28 C26~24 C22~20 C18~16 C14~12 C10~8 C6~4 C2~0 C-1 当 di ti 形成后 产生 C2、C1、C0、D1 ~ D8、T1 ~ T8 产生 C15、 C11、 C7、 C3 产生 C18 ~C16、 C14~C12、 C10~C8 、 C6~C4 C31、 C27、 C23、 C19 产生 C30~C28、 C26 ~C24、 C22 ~C20 经 2.5 ty 5 ty 7.5 ty 1 0 ty 6.5 7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术 一、指令的一般格式 操作码字段 地址码字段 1. 操作码 反映机器做什么操作 (1) 长度固定 (2) 长度可变 用于指令字长较长的情况 ,RISC 如 IBM 370 操作码 8 位 操作码分散在指令字的不同字段中 (3) 扩展操作码技术 操作码的位数随地址数的减少而增加 OP A1 A2 A3 0000 0001 1110 … A1 A1 A1 … A2 A2 A2 … A3 A3 A3 … A2 A2 A2 … A3 A3 A3 … 1111 1111 1111 … 0000 0001 1110 … 1111 1111 1111 … 1111 1111 1111 … 1111 1111 1111 … 0000 0001 1111 … 1111 1111 1111 … 1111 1111 1111 … A3 A3 A3 … 0000 0001 1110 … 4 位操作码 8 位操作码 12 位操作码 16 位操作码 最多15条三地址指令 最多15条二地址指令 最多15条一地址指令 16条零地址指令 7.1 (3) 扩展操作码技术 操作码的位数随地址数的减少而增加 OP A1 A2 A3 0000 0001 1110 … A1 A1 A1 … A2 A2 A2 … A3 A3 A3 … A2 A2 A2 … A3 A3 A3 … 1111 1111 1111 … 0000 0001 1110 … 1111 1111 1111 … 1111 1111 1111 … 1111 1111 1111 … 0000 0001 1111 … 1111 1111 1111 … 1111 1111 1111 … A3 A3 A3 … 0000 0001 1110 … 4 位操作码 8 位操作码 12 位操作码 16 位操作码 三地址指令操作码 每减少一种可多构成 24 种二地址指令 二地址指令操作码 每减少一种可多构成 24 种一地址指令 7.1 2. 地址码 (1) 四地址 (2) 三地址 OP A1 A2 A3 A4 8 6 6 6 6 A1 第一操作数地址 A2 第二操作数地址 A3 结果的地址 A4 下一条指令地址 若 PC 代替 A4 (A1) OP (A2) A3 8 8 8 8 OP A1 A2 A3 (A1) OP (A2) A3 4 次访存 4 次访存 寻址范围 26 = 64 寻址范围 28 = 256 若 A3 用 A1 或 A2 代替 7.1 设指令字长为 32 位 操作码固定为 8 位 (3) 二地址 OP A1 A2 8 12 12 (A1) OP (A2) A1 (A1) OP (A2) A2 或 4 次访存 若ACC 代替 A1(或A2) 若结果存于 ACC (4) 一地址 (5) 零地址 OP A1 8 24 无地址码 (ACC) OP (A1) ACC 2 次访存 寻址范围 212 = 4 K 寻址范围 224 = 16 M 3次访存 7.1 二、指令字长 指令字长决定于 操作码的长度 指令字长 = 存储字长 2. 指令字长 可变 操作数地址的长度 操作数地址的个数 1. 指令字长 固定 按字节的倍数变化 7.1 小结 当用一些硬件资源代替指令字中的地址码字段后 当指令的地址字段为寄存器时 可扩大指令的寻址范围 可缩短指令字长 可减少访存次数 三地址 OP R1, R2, R3 二地址 OP R1, R2 一地址 OP R1 指令执行阶段不访存 可缩短指令字长 7.1 一、操作数类型 地址 数字 字符 逻辑数 无符号整数 定点数、浮点数、十进制数 ASCII 逻辑运算 二、数据在存储器中的存放方式 字地址 为 低字节 地址 字地址 为 高字节 地址 3 7 6 2 1 5 4 0 字地址 0 4 低字节 0 4 5 1 2 6 7 3 字地址 0 4 低字节 存储器中的数据存放(存储字长为 32 位) 地址(十进制) 0 4 8 12 16 20 24 28 32 36 双字 双字(地址32) 双字 双字(地址24) 半字(地址20) 半字(地址22) 半字(地址16) 半字(地址18) 字节(地址 8) 字节(地址 9) 字节(地址10) 字节(地址11) 字(地址 4) 字(地址 0) 字节(地址14) 字节(地址15) 字节(地址13) 字节(地址12) 边界对准 地址(十进制) 0 4 8 字节( 地址7) 字节( 地址6) 字( 地址2) 半字( 地址10) 半字( 地址8) 半字( 地址0) 字( 地址4) 边界未对准 ▲ ▲ 7.2 三、操作类型 1. 数据传送 源 目的 寄存器 寄存器 寄存器 寄存器 存储器 存储器 存储器 存储器 置“1”,清“0” 2. 算术逻辑操作 加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算 与、或、非、异或、位操作、位测试、位清除、位求反 如 8086 MOVE STORE LOAD MOVE PUSH POP 例如 MOVE MOVE 7.2 AD
文档评论(0)