当前位置:首页 > 单片机 > 单片机
[导读]1 引言 在RISC CPU的设计当中,转移指令的处理对处理器的性能的影响非常关键。转移指令决定着程序的执行顺序,在程序中的使用频率很高。RISC CPU中程序是以流水线的方式执行的,当程序顺序执行时,下一条指令的地

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时,预测跳转发生。


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。


2.3.4 BTC检查

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


3 结论

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本文中,小编将对CPU中央处理器予以介绍,如果你想对它的详细情况有所认识,或者想要增进对CPU中央处理器的了解程度,不妨请看以下内容哦。

关键字: CPU 中央处理器 频率

在这篇文章中,小编将为大家带来CPU的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: CPU 中央处理器 倍频

今天,小编将在这篇文章中为大家带来CPU中央处理器的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: CPU 中央处理器 外频

CPU中央处理器将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: CPU 中央处理器 缓存

北京2022年10月19日 /美通社/ -- 随着云计算、大数据的普及发展,过去的"云"是服务于大企业的计算模型,而十多年过去了,越来越多的应用及业务走上"云端",对计算核心数需求...

关键字: ARM 大数据 云游戏 CPU

摘要:为解决传统自动化生产线生产效率低、自动化程度低、生产线复杂等问题,设计了一种自动化程度高且简单的自动化机械手臂,并根据设计进行仿真实验。实验结果表明,该设计在自动化生产实践中取得了较好的效果,提高了生产效率,达到了...

关键字: 机械手臂 设计 仿真

在这篇文章中,小编将对CPU中央处理器的相关内容和情况加以介绍以帮助大家增进对CPU中央处理器的了解程度,和小编一起来阅读以下内容吧。

关键字: CPU 中央处理器 晶圆

在桌面级处理器上,AMD多年来一直在多核上有优势,不过12代酷睿开始,Intel通过P、E核异构实现了反超,13代酷睿做到了24核32线程,核心数已经超过了锐龙7000的最大16核。在服务器处理器上,AMD优势更大,64...

关键字: AMD CPU Intel EUV

华为麒麟芯片(HUAWEI Kirin)是华为技术有限公司于2019年9月6日在德国柏林和北京同时发布的一款新一代旗舰芯片。华为麒麟在3G芯片大战中,扮演了“黑马”的角色。

关键字: 麒麟 CPU 华为Mate 50

据业内信息,近日ADM的一份内部报告显示,ADM正在计划降低其锐龙 7000 CPU的生产计划。现阶段全球市场PC的低迷和销量下滑,再加上AM5平台整体反响不佳等等一系列原因导致ADM采取这一行动计划。

关键字: PC ADM 锐龙 7000 CPU

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭