1 导言
在RISC CPU的规划傍边,搬运指令的处理对处理器的功能的影响十分要害。搬运指令决议着程序的履行次序,在程序中的运用频率很高。RISC CPU中程序是以流水线的办法履行的,当程序次序履行时,下一条指令的地址与前一条指令的内容无关 ;而在履行搬运指令时要依据搬运指令的履行成果来确认下一条指令的地址,也就是说下一条指令的地址在搬运指令履行之前是不知道的,形成流水线的不连贯,影响了CPU的功率。
搬运指令处理的办法许多,可分为猜测法和非猜测法,猜测法又包括静态猜测和动态猜测,静态猜测如总猜测跳转、正向不跳转反向跳转,动态猜测如2比特计数器(2BC) 、BTC;非猜测法如延时跳转等[1]。这些根本办法合理组合之后能够得到很好的效果。
本文介绍的RISC CPU对搬运指令的处理办法,为5级流水线作业,别离是取指、译码、履行、访存、回写,对搬运指令的处理在取指级和译码级完结;译码级给出搬运指令所包括的详细信息,取指级包括有地址核算单元,搬运方针Cache (BTC),跳转判别单元等。对搬运指令的处理运用了延时跳转、2BC以及BTC办法。
2 搬运指令的原理
该RISC CPU的指令会集包括有条件搬运指令和非条件搬运指令。一切的搬运指令均运用延时搬运,每条搬运指令后边跟从一条延时槽指令;选用2BC猜测条件搬运是否跳转,而BTC则保存搬运方针为固定地址的搬运指令履行后的信息。以下别离介绍在该RISC CPU规划中搬运指令的规划以及延时搬运、BTC、2BC的详细完结办法。
2.1 搬运指令类型及格局
该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位的寄存器地址。
2.2 延时搬运
在该RISC CPU中,由于搬运指令只要在译码级才被辨认,跳转与否在译码级才干决议,因而在取下一条指令之前有必要等候一个时钟周期。为了削减流水线中的气泡,紧跟搬运指令后边插一条与跳转不相关的指令,即延时槽指令,不论跳转是否产生,该指令都履行。延时槽指令的刺进由编译器完结,当编译器找不出这样的指令时,就插一条NOP指令。考虑到减轻编译器的难度,咱们也选用了带 A参数的搬运:当指令带有A参数时,延时槽指令从搬运方针程序中取出,因而搬运产生时,延时槽指令履行,而搬运不产生时,则制止延时槽指令进入译码级。因一般来说非条件搬运指令呈现的频率远低于条件搬运指令呈现的频率,非条件搬运指令的延时槽指令相对来说简单找到,所以非条件搬运指令不选用A参数选项,而条件搬运指令选用A参数选项。
2.3 2BC与BTC的规划
2BC与BTC对进步搬运指令的履行功率起重要的效果。在RISC CPU中,搬运指令履行一次后,有很大的概率会履行更屡次。关于搬运方针为固定地址的搬运指令(BCC和CALL),在其第一次履行时运用BTC存储相关的信息,当再次履行时,直接读出这些信息,控制程序的履行次序,而不需求搬运指令自身进流水线。这可大大进步功率,但关于搬运方针不确认的直接搬运指令(如RET),BTC是无效的。别的,条件搬运指令(BCC)是否跳转也是不确认的,本规划中选用2BC进行猜测。
BTC为全相联Cache,总共有16个单元,每个单元包括的信息有:TAG存储履行过的搬运指令的地址、DI存储延时槽指令、CC存储条件码、TP 存储搬运指令类型、AN存储A参数带着标志,HI存储搬运履行情况的历史记录,即2BC,VI指示行数据是否有用。BTC包括BTC存储、BTC射中以及BTC查看三种作业使命。以下别离介绍2BC以及每种使命下BTC的作业情况。
2.3.1 2BC的效果及作业原理
由于搬运指令履行一次之后,搬运方针地址、延时槽指令都保存在BTC中了,当该指令再次履行时,这些信息就直接从Cache读出,因而在取指级就能够得到跳转方针地址和延时槽指令。关于非条件搬运指令,跳转总是履行,因而BTC射中时就能够直接决议下一条指令的地址为搬运方针地址,而当时周期DI被送到指令总线上;但关于条件搬运指令,跳转与否是依据条件码和ALU的标志位来决议的。假如搬运指令前面一条指令的履行成果改动标志位,而当BTC射中时该指令还在译码级,则跳转与否需求等候一个时钟周期才干决议。为了防止由于等候而形成流水线的中止,选用2BC当时的状况猜测跳转是否履行,在接下来的时钟周期,标志位有用之后,再查看猜测是否正确,假如不正确,就进行更正。当猜测精确时,选用2BC 与BTC能够使搬运指令的履行时间缩短一个周期。即便猜测不精确,与不选用猜测比较也不会有丢失。2BC的作业原理如图2所示,初始值为Nx(第一次不跳转履行)或Tx(第一次跳转履行),t表明跳转履行,n表明跳转不履行。当HI为N或Nx时,猜测跳转不产生;当HI为T或Tx时,猜测跳转产生。