||
8级流水
pipeline时钟为master clock的二倍
Instruction Fetch First Half
分支逻辑判断当前指令地址,开始到cache中取指(instruction cache fetch 是到cache中取指吗?存疑)
根据TLB内容,开始虚实地址转换
Instruction Fetch Second Half
完成取指 及 虚实地址转换
Register Fetch
指令译码器 译码指令,并检测interlock状态
The instruction cache tag is checked against the page number obtained from the ITLB. (不太理解,存疑)
从register file内取出所有需要的操作数
Execution
下列情况之一会发生
ALU执行Register-to-Register 的算术指令
ALU计算数据虚拟地址,为load/store指令做准备
ALU决定分支指令条件是否成立,并计算分支目标的虚拟地址
Date Fetch First Half
下列情况之一会发生
开始到cache中取数据,开始虚实地址转换
分支指令地址翻译,为分支指令更新TLB内容(存疑)
如果是Register-to-Register指令,DF/DS/TC阶段无操作
Data Fetch Second Half
下列情况之一会发生
完成在cache中取数据和针对分支指令的虚实地址转换操作,数据被shifter对齐到word或doubleword(参考DF第一条)
分支指令地址翻译完成,TLB内容更新完成(参考DF第二条)
Tag Check
只针对load/store指令,从TLB出来的物理地址会被检测,是否击中cache
Write Back
如果是Register-to-Register指令,结果会被协会register file
分支指令无操作