Li Jiaheng's blog
418 字
2 分钟
处理器原理(1) 指令集执行阶段
WARNING

这是《深入理解计算机系统》(CS)的笔记,彼时还未上CO,OS等计算机系统基础课,存在理解不到位与错误之处.
处理器体系结构的内容都记录地非常简略…

任何一个指令集都要为它的所有指令找一个通用的实现顺序。弄清一个通用的处理顺序,可以准备创建一个顺序处理的SEQ处理器(即在一个时钟周期内,执行且只执行一个完整的指令过程,线性的)。比如书中的Y86指令集(当然,它十分简单,在其它完整的指令集如将要接触的MIPS中都有更复杂的通用流程):

这个顺序经少量调整后将是后续加入流水线后的“阶段”,流水线寄存器将插入在这些阶段中间,总结一个好的阶段十分重要!

1)取指。读取指令
从PC的第一个字节读取命令与控制字,icode : ifun。
从PC的第二个字节读取两个寄存器ID,rA : rB。
从PC的第三个字节读取(跳转)目标地址、立即数等。

valP 《---- PC+指令长度。(用来最后更新PC)

2)译码。从源寄存器中取出用于计算的数据。
valA《--- R[rA];
valB《---R[rB];
这是一步数据传送。

3)执行。ALU计算,设置CC。
valE《---valA OP valB
set CC.

4)访存。读取、写入内存。
Mx[val__] —> val__
valM <— Mx[val__]

5)写回。将数据重新写回寄存器。

6)更新PC。
除了跳转语句,其它都直接赋给下一条指令即valP。

相关的可能更多要记在本子上了。。

处理器原理(1) 指令集执行阶段
https://namisntimpot.github.io/posts/computersystem/处理器体系结构/1指令集实现顺序/
作者
Li Jiaheng
发布于
2022-08-15
许可协议
CC BY-NC-SA 4.0