您的位置 首页 数字

适用于RISC CPU的搬运指令的原理及仿真研讨

本文介绍的RISCCPU对转移指令的处理方法,为5级流水线作业,分别是取指、译码、执行、访存、回写,对转移指令的处理在取指级和译码级完成;译码级给出转移指令所包含的详细信息,取指级包含有地址计算单元,

本文介绍的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位的寄存器地址。

3 2BC的效果及作业原理

因为搬运指令履行一次之后,搬运方针地址、延时槽指令都保存在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。

5 BTC查看

假如前一周期BTC射中,则在当时周期开始时发动BTC查看使命;假如前一周期BTC是依据HI猜测BCC的跳转,那么在当时时钟标志位有用后,要从头判别跳转决议是否正确,假如不正确就要进行更正,给出正确的取指地址,恳求鄙人一时钟制止译码级或履行级。一起还要依据终究的跳转状况和HI的更新算法更新HI。BTC查看的流程图如图4。

6 定论

整个RISC CPU用Verilog HDL言语进行了描绘,并针对规范程序进行了仿真,仿真成果表明,选用上述办法处理搬运指令能够明显提高流水线的吞吐率。因为在搬运指令后边插入了延时槽指令,搬运指令的履行与程序次序履行时完全相同;BTC的运用虽然在硬件上增加了一些开支,但使搬运指令再次履行时根本不占用流水线资源,大大提高了CPU的功率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/237336.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部