本文介绍的RISC CPU对转移指令的处理方法,为5级流水线作业,分别是取指、译码、执行、访存、回写,对转移指令的处理在取指级和译码级完成;译码级给出转移指令所包含的详细信息,取指级包含有地址计算单元,转移目标Cache (BTC),跳转判断单元等。对转移指令的处理使用了延时跳转、2BC以及BTC方法。
1 转移指令的原理
该RISC CPU的指令集中包含有条件转移指令和非条件转移指令。所有的转移指令均使用延时转移,每条转移指令后面跟随一条延时槽指令;采用2BC预测条件转移是否跳转,而BTC则保存转移目标为固定地址的转移指令执行后的信息。以下分别介绍在该RISC CPU设计中转移指令的设计以及延时转移、BTC、2BC的具体实现方法。
2 转移指令类型及格式
该RISC CPU的指令集中包含条件转移指令(BCC)和非条件转移指令(CALL和RET),其编码格式为图1所示。CALL指令包含2位的操作码和30位的绝对地址。BCC指令包含8位操作码, 4位条件码(Condition Code),19位偏移量以及1位用来区分指令是否带A参数(即ANNUL操作)。所有的BCC指令使用相同的操作码,不同的BCC指令用条件码来区分,共有16类BCC指令;偏移量为带符号数,在低位用00扩展后可以对±220的相对地址寻址。RET指令包含8位的操作码和两个5位的寄存器地址。
因为转移指令执行一次之后,转移目标地址、延时槽指令都保存在BTC中了,当该指令再次执行时,这些信息就直接从Cache读出,因此在取指级就可以得到跳转目标地址和延时槽指令。对于非条件转移指令,跳转总是执行,因此BTC命中时就可以直接决定下一条指令的地址为转移目标地址,而当前周期DI被送到指令总线上;但对于条件转移指令,跳转与否是根据条件码和ALU的标志位来决定的。如果转移指令前面一条指令的执行结果改变标志位,而当BTC命中时该指令还在译码级,则跳转与否需要等待一个时钟周期才能决定。为了避免因为等待而造成流水线的停顿,采用2BC当前的状态预测跳转是否执行,在接下来的时钟周期,标志位有效之后,再检查预测是否正确,如果不正确,就进行更正。当预测准确时,采用2BC 与BTC可以使转移指令的执行时间缩短一个周期。即使预测不准确,与不采用预测相比也不会有损失。2BC的工作原理如图2所示,初始值为Nx(第一次不跳转执行)或Tx(第一次跳转执行),t表示跳转执行,n表示跳转不执行。当HI为N或Nx时,预测跳转不发生;当HI为T或Tx时,预测跳转发生。
4 BTC命中
在取指周期开始时如果发现当前取指地址包含在BTC的TAG中,并且对应行的VI也有效,则认为BTC命中,从而启动命中任务:读出命中行的数据,把DI送到指令总线,如果是CALL指令,转移目标地址作为下一条指令的地址;如果是BCC指令则需要判断跳转是否发生:当标志位有效时,根据条件码与标志位判断,否则根据HI进行预测,然后确定下一条指令的地址:跳转时为转移目标地址,不跳转为PC+2。对于带A参数的BCC指令,在跳转不执行时,要禁止DI在下一时钟进入译码级。BTC命中的流程如图3。
如果前一周期BTC命中,则在当前周期开始时启动BTC检查任务;如果前一周期BTC是根据HI预测BCC的跳转,那么在当前时钟标志位有效后,要重新判断跳转决定是否正确,如果不正确就要进行更正,给出正确的取指地址,请求在下一时钟禁止译码级或执行级。同时还要根据最终的跳转情况和HI的更新算法更新HI。BTC检查的流程图如图4。
6 结论
整个RISC CPU用Verilog HDL语言进行了描述,并针对标准程序进行了仿真,仿真结果表明,采用上述方法处理转移指令可以明显提高流水线的吞吐率。由于在转移指令后面插入了延时槽指令,转移指令的执行与程序顺序执行时完全相同;BTC的使用虽然在硬件上增加了一些开销,但使转移指令再次执行时基本不占用流水线资源,大大提高了CPU的效率。
上一篇:基于1602液晶电压驱动器应用于proteus仿真
下一篇:结合MDA-EDA集成电子散热的仿真解决方案
推荐阅读最新更新时间:2023-10-12 22:35
Vishay线上图书馆
- 选型-汽车级表面贴装和通孔超快整流器
- 你知道吗?DC-LINK电容在高湿条件下具有高度稳定性
- microBUCK和microBRICK直流/直流稳压器解决方案
- SOP-4小型封装光伏MOSFET驱动器VOMDA1271
- 使用薄膜、大功率、背接触式电阻的优势
- SQJQ140E车规级N沟道40V MOSFET
- MathWorks 和 NXP 合作推出用于电池管理系统的 Model-Based Design Toolbox
- 意法半导体先进的电隔离栅极驱动器 STGAP3S为 IGBT 和 SiC MOSFET 提供灵活的保护功能
- 全新无隔膜固态锂电池技术问世:正负极距离小于0.000001米
- 东芝推出具有低导通电阻和高可靠性的适用于车载牵引逆变器的最新款1200 V SiC MOSFET
- 【“源”察秋毫系列】 下一代半导体氧化镓器件光电探测器应用与测试
- 采用自主设计封装,绝缘电阻显著提高!ROHM开发出更高电压xEV系统的SiC肖特基势垒二极管
- 艾迈斯欧司朗发布OSCONIQ® C 3030 LED:打造未来户外及体育场照明新标杆
- 氮化镓取代碳化硅?PI颠覆式1700V InnoMux2先来打个样
- 从隔离到三代半:一文看懂纳芯微的栅极驱动IC
- 【抢楼有奖】聊聊你和电容的恩怨情仇!
- Silicon Labs EFM32PG22开发套件 传你所思 创你所想!申请进行时!
- 直播已结束【Molex 新能源汽车低压连接器解决方案】
- 【有奖问答】MOSFET,选型我在行!
- 平头哥RVB2601开源应用方案征集来啊~100套板卡助阵,天猫精灵智能套装礼品组等你抱走~
- 爱“拼”才会赢 英飞凌栅极驱动IC拼图闯关 活动开始啦!
- 感谢有你,愿一路同行!——eeworld感恩节送书活动
- 有奖直播|魏德米勒 OMNIMATE® 联接技术的创新发展
- TI模电选课测试体验活动第二期!模电怎么学?TI帮你订制课程清单~
- 有奖问答|ADI应用之旅——工业大机器健康篇