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。
相关的可能更多要记在本子上了。。