指令与CPU
指令¶
ISA(记忆)¶

扩展操作码¶

寻址方式¶

-
对于相对寻址offset和PC速算:PC是无符号数,offset通常是补码,直接让PC和offset相加,进位舍弃,按无符号数翻译结果。offset采用符号扩展。十六进制也是同理。
-
若问到可以跳转的范围时,一定不要忘了PC要先+‘1’;同时要注意主语。
-
注意,地址反向跳也可以跳到最高地址,例如从0000H可以反向跳一步到FFFFH,因为计算机本身不认识正负,只知道直接加,并且地址还是个无符号数,因此直接到了最高地址。
汇编¶

视频部分对应的是过程调用,call和ret
CPU¶
数据通路¶

- 对于组合逻辑元件,就是一些没有存储功能的元件。同时,联想到通常需要搭配一个寄存器暂存输出的数据。
- 数据通路实际上就是以上这些元件,在控制单元的控制下,让数据进行一些流动,因此控制的部件是不属于数据通路的。
- 关于PC是否属于数据通路:在考试中,PC 在功能上属于“控制器”,但在物理结构上是“数据通路”的一部分。

- 现在已经不采用机器周期了!!!!
- 地址译码器常用于写,MUX多用于读。
控制器¶
- 一条指令对应一个微程序,一个微程序对应若干微指令,一个微指令对应若干微命令,微命令是 CU 发出的控制信号,而微操作是这个信号导致的最终执行动作。
- 主存由RAM和ROM是实现(主要是RAM),控制存储器(CS)用ROM实现,通过地址进行访问。
指令流水线(冒险)¶
| IF | ID | EX | M | WB |
|---|---|---|---|---|
| 取指 | 译码(同时还会取操作数、无条件跳转) | 执行 | 访存(对于条件跳转指令,一般在此时才知道是否要跳转) | 写回 |
默认,只有load/store可以访存。IF阶段指令已经放到了某个寄存器中。


- CPI还受Cache缺失率影响。发生Cache缺失时,CPU可能需要等待从主存读取数据,这会插入多个空闲周期,从而显著提高程序的平均CPI。
多发技术¶
- 图片内的全是SISD。

单周期CPU和多周期CPU¶
单周期CPU
- 每条指令在一个时钟周期内完成。
- 所有指令的执行时间相同,由最慢的指令决定时钟周期长度,因此时钟频率较低。
- 硬件资源在一条指令执行期间被独占,部件冗余大,利用率较低。
- 控制逻辑简单,设计容易理解,适合教学或简单场景。
- CPI = 1
- 在一条指令执行过程中,每个控制信号保持不变,每个部件只能使用一次。
多周期CPU
- 不同指令可以根据需要占用不同数量的时钟周期。
- 硬件资源可以在不同阶段复用,部件冗余小,利用率更高。
- 时钟周期可以更短,整体性能通常优于单周期。
- 控制逻辑更复杂,需要状态机或微程序控制。
- CPI > 1
- 在一条指令执行过程中,每个控制信号可能发生改变,同一个部件可使用多次。
垂直型和水平型微指令¶
水平型微指令
水平型微指令的设计初衷是“用一条指令尽可能多地控制硬件”,它的格式中包含多个控制信号字段。
- 并行度高:一条微指令可以在同一个时钟周期内触发多个并发的微操作(如同时控制ALU运算和寄存器读写)。
- 执行速度快:因为单条指令能并行处理多个操作,完成一条机器指令所需的总微指令条数少,整体执行效率非常高。
- 指令字长较长:为了直接或间接控制硬件的所有控制点,指令中需要分配大量的位(Bit),导致指令字长通常较长。
- 微程序较短:完成一条机器指令对应的微程序通常只需要几条水平型微指令即可。
- 编写难度大:对微指令的格式和底层数据通路的依赖极强,要求编写者非常熟悉硬件结构;且如果不经过精心优化,长指令中往往会有很多控制位空闲,造成控制存储器(CM)容量的浪费。
垂直型微指令
垂直型微指令的设计思路与普通的机器指令(汇编语言)非常相似,通常采用“操作码 + 操作数”的紧凑结构。
- 并行度低:每次只能执行一到两个基本的微操作,基本不支持复杂的硬件并行。
- 执行速度慢:完成同样的功能需要多步串行操作,因此完成一条机器指令需要耗费更多的时钟周期。
- 指令字长较短:格式紧凑,位数较少,大大节省了控制存储器的宽度。
- 微程序较长:因为每一步只能做一个单一操作,完成一条机器指令所需的微指令序列(即微程序)较长。
- 编写相对容易:格式规整、逻辑清晰,不需要像水平型那样高度关注硬件并行冲突,便于程序员编写和修改。