适用于RISC CPU的转移指令的原理及仿真

发布者:独行侠客最新更新时间:2015-04-16 来源: eechina关键字: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时,预测跳转发生。[page]


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的效率。
关键字:RISC  CPU  转移指令 引用地址:适用于RISC CPU的转移指令的原理及仿真

上一篇:带大量I/O口扩展的串行芯片GM8164及其应用
下一篇:凌阳16位单片机SPCE061A的最小系统及开发

推荐阅读最新更新时间:2024-03-16 13:58

北斗、国产CPU!神舟十二元器件与原材料全面实现自主可控
北京时间2021年6月17日9时22分,搭载神舟十二号载人飞船的长征二号F遥十二运载火箭,在酒泉卫星发射中心点火发射。 据文汇报报道,航天科技集团五院神舟十二号载人飞船项目产品保证经理郑伟介绍,神舟十二号飞船对多项国产化芯片应用进行了改进,元器件和原材料全面实现自主可控,飞船使用的控制计算机、数据管理计算机完全使用国产CPU芯片。 随着我国北斗系统全球组网完成,北斗导航终端也引入飞船设计中,导航计算、返回搜救落点报告等都采用了北斗系统定位数据。 据湖北网络广播电视台透露,武汉海创电子股份有限公司为“神舟十二号”开发的高精度、低老化、抗振温补晶振替代了进口产品,性能优于进口,完全实现全国产化自主可控。 武汉海创电子是武汉市配套航天
[手机便携]
未来汽车功能将会千篇一律?没什么不可能
所谓的“Wintel”平台自1990年代晚期,孕育了一系列几乎功能完全相同、价格低廉的标准型PC;最近几年,智慧型手机步上了PC的后尘──我们在8年前因为苹果(Apple)推出第一支iPhone而见证了手机产业的变革,随着Google的Android平台普及化,智慧型手机迅速商品化。那…汽车会是下一个吗?   我的预测是“会”,这是不可避免的;不过这个问题的重点并不在于那样的情况“会不会”或是“何时”发生,而是“更标准化与商品化的汽车”将会以什么样的方式来临?现在已经有不少科技业者的未来命运就与答案系在一起。 我们也开始看到了汽车商品化的征兆。例如特斯拉(Tesla),虽然他们家的车还远远不到商品化的地步,但该公司已经向业界
[嵌入式]
CPU卡的接口特性、传输协议与读写程序设计
    摘要: 介绍ISO7816-4及中国金融集成电路(IC)卡规范所规定的T=0协议的CPU卡与终端之间的接口特性和传输协议,及以C51语言设计的CPU卡复位、下电及读写程序。     关键词: IC卡 CPU卡 终端 复位 字符传输协议(T=0协议) IC卡的概念是20世纪70年代提出的。法国BULL公司首创IC卡产品,并将这项技术应用到金融、交通、医疗、身份证明等多个方面。IC卡的核心是集成电路芯片,一般为3 μm 以下的半导体技术制造。IC卡具有写入数据和存储数据的能力。IC可存储其中的内容,根据需要可以有条件地供外部读取,或供内部信息处理或校验用。   根据各种集成电路的不同,IC卡
[嵌入式]
首款基于RISC-V芯片的工业防火墙完成实测!
为实现国家“3060”双碳目标,能源行业在不断加强科技创新的实力。 今年4月份国家出台的《“十四五”能源领域科技创新规划》中,明确提出了促进能源产业数字化、智能化升级的重要任务 。值得关注的是,在能源行业加速数字化转型的同时,建设全方位的网络和信息安全体系变得尤为重要。 2021年12月6日,RISC-V软硬件生态领导者 赛昉科技 与城市燃气行业领先企业港华智慧能源、我国工控网络安全领军企业威努特宣布联手打造基于RISC-V“中国芯”的工业互联网安全产品及零碳智慧能源解决方案。 时隔一年,三方合作实现新突破。近日,港华智慧能源宣布,三方联合研发的工业防火墙产品已经取得阶段性成果,在港华燃气站点的实际应用场景中,该产品
[物联网]
首款基于<font color='red'>RISC</font>-V芯片的工业防火墙完成实测!
兆芯:国产CPU奋起直追
芯片是支撑信息技术发展的基础性、战略性产品,是上海聚焦科技创新、高质量发展的重点布局领域。2013年,上海联和投资有限公司出资成立上海兆芯集成电路有限公司(以下简称兆芯),是兆芯的控股股东。 兆芯集CPU、GPU、芯片组三大核心技术于一身 ,经过近9年的发展已成为国内先进的芯片设计厂商之一,并致力于为行业提供安全可靠、性能优越的国产通用CPU,推动国家信息产业的整体发展。
[嵌入式]
兆芯:国产<font color='red'>CPU</font>奋起直追
评论:飞思卡尔可能失去通讯OEM设计
上世纪90年代初,英特尔凭借基于RISC的控制器设计——i960,在嵌入式通讯市场占有相当大的市场份额。后来首席执行官葛鲁夫决定英特尔不再支持任何不与台式电脑或服务器直接有关的架构,于是英特尔就有意放弃了这方面的市场优势。 10年以前,飞思卡尔(Freescale)在控制面板通讯处理器和数据路径(datapath)引擎方面也拥有同样令人羡慕的市场份额。但飞思卡尔市场地位恶化不是因为其主动放弃市场,而主要是与其从摩托罗拉分拆出来之后的财务困境有关。 Rich Beyer在飞思卡尔技术论坛上接受Patrick Mannion采访时大谈汽车业务,是可以理解的。通讯产业在2001年崩溃以后多年来萎靡不振。在最近几年少数
[焦点新闻]
印度SHAKTI宣布开发出第三款基于RISC-V的SoC
日前,印度SHAKTI团队宣布成功tapeout第三个CPU:Moushik,采用开源RISC-V的SoC,可兼容Android。 芯片使用180nm工艺,拥有103个I/O。CPU运行频率100MHz,系统包括一个SDRAM控制器,ADC和通常的外设,面积大约为25平方毫米,拥有65万个门阵列。 该团队与印度马德拉斯理工学院(Indian Institute of Technology Madras)合作,在2018年制造了基于RISC-V的本土芯片。
[嵌入式]
AMD试图抢占服务器CPU市场:首先拿下了微软百度
AMD正尝试重新进入服务器处理器市场。该公司将获得微软和百度的帮助。两家公司宣布,将在数据中心中使用AMD最新的Epyc芯片。 AMD CEO苏姿丰表示:“这仅仅是合作的开始,你将会看到更多消息。AMD在数据中心市场是非常强大的参与者。” Epyc芯片于本周二开始销售。AMD试图凭借这款产品扭转在服务器处理器市场的局面,目前AMD在这一市场的份额不到1%,而市场的大部分都被英特尔占据。签约百度等数据中心运营商对AMD来说非常重要。这些客户的增长速度要远远超过行业平均水平,而这些公司会直接采购芯片,开发自己的计算机。 Epyc芯片的价格为每片400至4000美元不等。AMD副总裁弗罗斯特·诺罗德(Forrester Norrod)表
[半导体设计/制造]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved