Tan's Blog.

CSAPP Y86-64顺序的实现

字数统计: 410阅读时长: 1 min
2019/05/20 Share

Y86-64的顺序实现

跟踪irmovq指令的执行

一条指令的执行过程通常可以分为取指->译码->执行->访存->写回->更新PC,下面以irmovq指令为例,详细的解释这条指令的执行过程。

阶段通用具体
irmovq V,rBirmovq $128,%rsp
取指icode:ifun<-M1[PC]
rA:rB<-M1[PC+1]
valC<-M8[PC+2]
valP<-PC+10
M1[0x016]=3:0
M1[0x015]=f:4
valC<-M1[0x018]=128
valP<-0x020
译码
执行valE<-0+valCvalE<-128
访存
写回R[rB]<-valER[rB]<-128
更新PCPC<-valPPC<-0x20

其余的还有其他指令,比如ret、popq、rmmovq,它们的执行过程其实也都是遵循通用规则的。

SEQ的时序

要控制处理器中活动的时序,只需要寄存器和内存的时钟控制。通过时钟周期来控制元素的更新,通过组合逻辑来传播,每次时钟周期由低到高时,处理器开始执行一条新指令。处理器从来不需要为了完成一条指令的执行而去读该指令更新了的状态。

SEQ阶段的实现

一条指令在顺序的处理器中执行一般来说需要五个阶段,需要根据不同的指令取出其所需要的数据,可以使用HCL来描述这个过程。SEQ执行只有当上一个阶段执行完才会执行下一个阶段,这样就会导致运行的很慢,而且不能充分利用硬件单元,在接下来会学习流水线化的运行原理。

CATALOG
  1. 1. Y86-64的顺序实现
    1. 1.1. 跟踪irmovq指令的执行
    2. 1.2. SEQ的时序
    3. 1.3. SEQ阶段的实现