新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > RISC CPU对转移指令的处理方法及仿真

RISC CPU对转移指令的处理方法及仿真

作者:时间:2010-12-09来源:网络收藏

2.3.2 BTC存储

第一次执行时,BTC在当前时钟启动存储任务,把该执行的信息写入对应的单元中,对于BCC,确定2BC的初始状态。同时也把该行的VI置为有效。BTC采用随机替换策略确定数据入口:在复位或Cache清零之后,按顺序填充Cache,如果BTC写满,则随机选通一行进行替换。

2.3.3 BTC命中

在取指周期开始时如果发现当前取指地址包含在BTC的TAG中,并且对应行的VI也有效,则认为BTC命中,从而启动命中任务:读出命中行的数据,把DI送到指令总线,如果是CALL指令,目标地址作为下一条指令的地址;如果是BCC 指令则需要判断跳转是否发生:当标志位有效时,根据条件码与标志位判断,否则根据HI进行预测,然后确定下一条指令的地址:跳转时为目标地址,不跳转为PC+2。对于带A参数的BCC指令,在跳转不执行时,要禁止DI在下一时钟进入译码级。BTC命中的流程如图3。

本文引用地址:http://www.eepw.com.cn/article/173094.htm

2.3.4 BTC检查

如果前一周期BTC命中,则在当前周期开始时启动BTC检查任务;如果前一周期BTC是根据HI预测BCC的跳转,那么在当前时钟标志位有效后,要重新判断跳转决定是否正确,如果不正确就要进行更正,给出正确的取指地址,请求在下一时钟禁止译码级或执行级。同时还要根据最终的跳转情况和HI的更新算法更新HI。BTC检查的流程图如图4。


3 结论

整个 用Verilog HDL语言进行了描述,并针对标准程序进行了结果表明,采用上述转移指令可以明显提高流水线的吞吐率。由于在转移指令后面插入了延时槽指令,转移指令的执行与程序顺序执行时完全相同; BTC的使用虽然在硬件上增加了一些开销,但使转移指令再次执行时基本不占用流水线资源,大大提高了的效率


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭