我的设计中最有趣(也是最难完成)的部分是名为IFHU(Instruction Flow and Hazard Unit)的指令流动及数据冒险控制单元。
原稿:
它内置了一个小型三级流水线,目的就是为了储存(如果存在)指令的RD(Destination Register),Register File的目标地址。地址在IFHU内的流动模拟了真正指令在处理器流水线的执行完成度,因此每次PC从指令内存读出对应指令后,指令如果是BEQ,R- Type或I-Type,他们的根寄存器的地址(RS,RT)将于存在于IFHU流水线内的RD做对比,如果有相同地址代表会出现数据冒险。这些结果会输出到IFU(Instruction Flow Unit),指令控制单元,它按照以下原理决定最终指令是否为空指令以及下周期PC的值:
2. I1出现跳跃,分支,或数据冒险:执行I0,PC0 = PC1,PC1 + 4
3. I0出现数据冒险:不执行,PC都不变
4. I0出现跳跃或分支:内部执行,PC0为预测或跳跃后PC,PC1 = PC0 + 4
不出错的话PC1应该永远等于PC0。
下面是IFU:
IFHURegSelect:
IFHUXORComp:
评 论
请勿进行人身攻击,谩骂以及任何违法国家相关法律法规的言论。
正在加载评论...