CN107943518B - 一种局部跳转指令取指电路 - Google Patents
一种局部跳转指令取指电路 Download PDFInfo
- Publication number
- CN107943518B CN107943518B CN201711202444.3A CN201711202444A CN107943518B CN 107943518 B CN107943518 B CN 107943518B CN 201711202444 A CN201711202444 A CN 201711202444A CN 107943518 B CN107943518 B CN 107943518B
- Authority
- CN
- China
- Prior art keywords
- instruction
- jump
- area
- buffer
- instruction buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000000872 buffer Substances 0.000 claims abstract description 120
- 238000010586 diagram Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明属于计算机硬件技术领域,涉及一种局部跳转指令取指电路。本发明包含PC更新模块、顺序指令缓冲区、退休指令缓冲区和PC栈。PC更新模块负责更新PC地址。退休指令缓冲区存放已经执行完成的16条指令。顺序指令缓冲区存放正在执行的8条指令和将要执行的8条指令。PC栈用来实现函数嵌套时PC的保存与恢复。本发明根据跳转指令的跳转地址能够实现快速的指令向前在退休指令缓冲区和向后在顺序指令缓冲区局部跳转,从而提高跳转指令的执行效率和缓冲区指令的更新效率,降低流水线等待延迟,提高处理器的执行效率。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种局部跳转指令取指电路方案。
背景技术
现代处理器设计中,由于跳转和分支指令的存在,且未集成分支预测机制,从处理跳转和分支指令开始到取回并继续执行后续有效指令之间处理器一直处于等待状态,该方式是在保证功能正确的前提下降低了硬件复杂度,但是这种方式的简单化和直接化导致分支指令执行的效率不高,使得处理器的流水线中插入较多无效操作,降低了处理器流水线的资源利用率。
发明内容
本发明的目的是:提供了一种基于退休机制的局部跳转指令取指电路,采用一种高效局部跳转指令的取指电路来减少处理器流水线中的无效操作,提高流水线资源的利用率,从而提升处理器执行效率。
本发明的技术解决方案是:
一种局部跳转指令取指电路,包括PC更新模块、顺序指令缓冲区、退休指令缓冲区和PC栈。
PC更新模块,根据双发射指令的执行结果计算出下一次的取指PC,如果双发射的指令中没有跳转指令则当执行完当前顺序指令缓冲0区中的8条指令后PC顺序加1,若双发射的指令中有跳转指令则需根据跳转的跳转信息更新PC地址。
顺序指令缓冲区,分为顺序指令缓冲0区和1区,正在执行的8条指令缓存在顺序指令缓冲0区中,将要执行的8条指令缓存在顺序指令缓冲1区中。在没有跳转指令时顺序指令缓冲0区中的指令来自于顺序指令缓冲1区,顺序指令缓冲1区中的指令来自于从外部返回的8条指令;若有跳转指令,根据跳转指令的跳转地址更新顺序指令缓冲区中的指令。
退休指令缓冲区分为退休指令缓冲0区和1区,其中退休指令缓冲0区和退休指令缓冲1区中各8条。在没有跳转指令时退休指令缓冲0区中的指令来自于退休指令缓冲1区,退休指令缓冲1区中的指令来自于顺序指令缓冲0区;若有跳转指令,根据跳转指令的跳转地址更新退休指令缓冲区中的指令。
在计算得到下一次的取指PC后,比较下一次的目标地址是否在顺序指令缓冲区和退休指令缓冲区中。如果在顺序指令缓冲区中,则无需额外取指操作,直接从缓冲区跳转目标地址处开始译码发射执行;如果不在顺序指令缓冲区中,而在退休指令缓冲区中,则从退休指令缓冲区中将指令行复制到顺序指令缓冲区中从跳转的目标地址处译码发射执行;如果两个缓冲区中都不在,则根据跳转的具体地址从外部取指令。
PC栈用来实现函数嵌套时PC的保存与恢复,保存跳转指令的下一条指令位置,通过读取栈,恢复之前跳转指令的下一条指令位置。
本发明可以总结为以下三点:
一、退休指令缓冲区能够覆盖向前16条指令的局部范围,在发现跳转或分支指令,并计算得到跳转或分支目标地址后,比较该目标地址是否在退休指令缓冲区缓存的16条的指令中。如果在,则无需额外取指操作,直接将退休指令缓冲区中的指令复制到顺序指令缓冲区从跳转的目标地址处开始执行;
二、顺序指令缓冲区能够覆盖当前正在执行的8条指令和向后8条指令的局部范围,在发现跳转或分支指令,并计算得到跳转或分支目标地址后,比较该目标地址是否在顺序指令缓冲区缓存的16条的指令中。如果在,则无需额外取指操作,直接从缓冲区跳转的目标地址处开始执行;
三、如果正常执行的指令缓冲区中执行了跳转或分支指令,且发生了跳转,则最终退休指令缓冲区都将被清除,确保退休指令缓冲区中的状态只会有两种:退休指令缓冲0区和1区均有效且地址连续;退休指令缓冲1区有效,0区无效。
通过以上三点,本发明的有益效果是:能够显著降低流水线中的资源浪费,缩短处理跳转和分支指令开始到取回并继续执行后续有效指令之间的周期,减少了处理器流水线中的无效操作,提升指令执行的效率,提高处理器的指令处理吞吐量。
附图说明
图1是本发明一种局部跳转指令取指电路的示意图;
图2是本发明一种局部跳转指令取指电路一种具体实施方式的示意图。
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其它实施例,都属于本发明的保护范围。
参见图1,其为一种局部跳转指令取指电路示意图,本发明包括PC更新模块、顺序指令缓冲区、退休指令缓冲区和PC栈。
PC更新模块,根据双发射指令的执行结果计算出下一次的取指PC,如果双发射的指令中没有跳转指令则当执行完当前顺序指令缓冲0区中的8条指令后PC顺序加1,若双发射的指令中有跳转指令则需根据跳转的跳转信息更新PC地址。
顺序指令缓冲区,分为顺序指令缓冲0区和1区,正在执行的8条指令缓存在顺序指令缓冲0区中,将要执行的8条指令缓存在顺序指令缓冲1区中。在没有跳转指令时顺序指令缓冲0区中的指令来自于顺序指令缓冲1区,顺序指令缓冲1区中的指令来自于从外部返回的8条指令;若有跳转指令,根据跳转指令的跳转地址更新顺序指令缓冲区中的指令。
退休指令缓冲区分为退休指令缓冲0区和1区,其中退休指令缓冲0区和退休指令缓冲1区中各8条。在没有跳转指令时退休指令缓冲0区中的指令来自于退休指令缓冲1区,退休指令缓冲1区中的指令来自于顺序指令缓冲0区;若有跳转指令,根据跳转指令的跳转地址更新退休指令缓冲区中的指令。
在计算得到下一次的取指PC后,比较下一次的目标地址是否在顺序指令缓冲区和退休指令缓冲区中。如果在顺序指令缓冲区中,则无需额外取指操作,直接从缓冲区跳转目标地址处开始译码发射执行;如果不在顺序指令缓冲区中,而在退休指令缓冲区中,则从退休指令缓冲区中将指令行复制到顺序指令缓冲区中从跳转的目标地址处译码发射执行;如果两个缓冲区中都不在,则根据跳转的具体地址从外部取指令。
PC栈用来实现函数嵌套时PC的保存与恢复,保存跳转指令的下一条指令位置,通过读取栈,恢复之前跳转指令的下一条指令位置。
图2为一种具体实施方式的示意图,当前执行的指令中有跳转或分支指令,且跳转的地址在退休指令缓冲0区中。
PC更新模块根据跳转指令信息计算得到跳转的PC地址在退休指令缓冲0区中,指令发生了向前跳转,且当前退休指令缓冲0区和1区的指令均有效,此时清空顺序指令缓冲区,将退休指令缓冲0区的指令直接复制到顺序指令缓冲0区,将退休指令缓冲1区的指令直接复制到顺序指令缓冲1区,从跳转的目标地址处开始执行,此时,退休指令缓冲区中无有效指令,顺序指令缓冲区中指令有效。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (1)
1.一种局部跳转指令取指电路,其特征为:所述电路包括PC更新模块、顺序指令缓冲区、退休指令缓冲区和PC栈;其中,
PC更新模块,根据双发射指令的执行结果计算出下一次的取指PC,如果双发射的指令中没有跳转指令则当执行完当前顺序指令缓冲0区中的8条指令后PC顺序加1,若双发射的指令中有跳转指令则需根据跳转信息更新PC地址;
顺序指令缓冲区,分为顺序指令缓冲0区和1区,正在执行的8条指令缓存在顺序指令缓冲0区中,将要执行的8条指令缓存在顺序指令缓冲1区中;在没有跳转指令时顺序指令缓冲0区中的指令来自于顺序指令缓冲1区,顺序指令缓冲1区中的指令来自于从外部返回的8条指令;若有跳转指令,根据跳转指令的跳转地址更新顺序指令缓冲区中的指令;
退休指令缓冲区分为退休指令缓冲0区和1区,其中退休指令缓冲0区和退休指令缓冲1区中各8条;在没有跳转指令时退休指令缓冲0区中的指令来自于退休指令缓冲1区,退休指令缓冲1区中的指令来自于顺序指令缓冲0区;若有跳转指令,根据跳转指令的跳转地址更新退休指令缓冲区中的指令;
在计算得到下一次的取指PC后,比较下一次的目标地址是否在顺序指令缓冲区和退休指令缓冲区中;如果在顺序指令缓冲区中,则无需额外取指操作,直接从缓冲区跳转目标地址处开始译码发射执行;如果不在顺序指令缓冲区中,而在退休指令缓冲区中,则从退休指令缓冲区中将指令行复制到顺序指令缓冲区中从跳转的目标地址处译码发射执行;如果两个缓冲区中都不在,则根据跳转的具体地址从外部取指令;
PC栈用来实现函数嵌套时PC的保存与恢复,保存跳转指令的下一条指令位置,通过读取栈,恢复之前跳转指令的下一条指令位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202444.3A CN107943518B (zh) | 2017-11-24 | 2017-11-24 | 一种局部跳转指令取指电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202444.3A CN107943518B (zh) | 2017-11-24 | 2017-11-24 | 一种局部跳转指令取指电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943518A CN107943518A (zh) | 2018-04-20 |
CN107943518B true CN107943518B (zh) | 2021-07-16 |
Family
ID=61949002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711202444.3A Active CN107943518B (zh) | 2017-11-24 | 2017-11-24 | 一种局部跳转指令取指电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943518B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614146B (zh) * | 2018-11-14 | 2021-03-23 | 西安翔腾微电子科技有限公司 | 一种局部跳转指令取指方法及装置 |
CN110851182B (zh) * | 2019-10-24 | 2021-12-03 | 珠海市杰理科技股份有限公司 | 指令获取方法、装置、计算机设备和存储介质 |
CN112905237A (zh) * | 2019-12-04 | 2021-06-04 | 北京百度网讯科技有限公司 | 指令预取方法、装置、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
CN101477454A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
CN104461468A (zh) * | 2014-10-27 | 2015-03-25 | 杭州中天微系统有限公司 | 基于处理器指令快速完成的精确异常维护方法及装置 |
CN106648553A (zh) * | 2012-11-30 | 2017-05-10 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN106951217A (zh) * | 2016-01-07 | 2017-07-14 | 三星电子株式会社 | 由易于得到的预取器准确性动态控制的指令预取器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162908A1 (en) * | 2006-06-08 | 2008-07-03 | Luick David A | structure for early conditional branch resolution |
US10073699B2 (en) * | 2015-10-14 | 2018-09-11 | International Business Machines Corporation | Processing instructions in parallel with waw hazards and via a distributed history buffer in a microprocessor having a multi-execution slice architecture |
-
2017
- 2017-11-24 CN CN201711202444.3A patent/CN107943518B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
CN101477454A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN103907089A (zh) * | 2011-04-07 | 2014-07-02 | 威盛电子股份有限公司 | 一种乱序执行微处理器中的有条件加载指令 |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
CN106648553A (zh) * | 2012-11-30 | 2017-05-10 | 英特尔公司 | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 |
CN104461468A (zh) * | 2014-10-27 | 2015-03-25 | 杭州中天微系统有限公司 | 基于处理器指令快速完成的精确异常维护方法及装置 |
CN106951217A (zh) * | 2016-01-07 | 2017-07-14 | 三星电子株式会社 | 由易于得到的预取器准确性动态控制的指令预取器 |
Non-Patent Citations (1)
Title |
---|
基于同时多线程的取指控制机制研究;关海洋;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20130315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107943518A (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
CN107943518B (zh) | 一种局部跳转指令取指电路 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
CN109643237B (zh) | 分支目标缓冲器压缩 | |
US20080126770A1 (en) | Methods and apparatus for recognizing a subroutine call | |
US20140006752A1 (en) | Qualifying Software Branch-Target Hints with Hardware-Based Predictions | |
US9274970B2 (en) | Method and apparatus for handling processor read-after-write hazards with cache misses | |
US9753732B2 (en) | Embedded branch prediction unit | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
US11861365B2 (en) | Macro-op fusion | |
CN113722243A (zh) | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 | |
CN112214241A (zh) | 一种分布式指令执行单元的方法及系统 | |
WO2018059337A1 (zh) | 数据处理装置和方法 | |
WO2012127666A1 (ja) | 演算処理装置、情報処理装置及び演算処理方法 | |
CN111522584B (zh) | 一种硬件循环加速处理器及其执行的硬件循环加速方法 | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US7945767B2 (en) | Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof | |
CN100447737C (zh) | 指令流水线中实现访存精确例外的处理方法 | |
CN112445520B (zh) | 针对循环内条件转移指令的转移预测优化方法 | |
CN114265623A (zh) | 一种嵌入式处理器的分支预测器 | |
CN109614146B (zh) | 一种局部跳转指令取指方法及装置 | |
US10664250B2 (en) | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing | |
JP3602801B2 (ja) | メモリデータアクセス構造およびその方法 | |
US10228921B2 (en) | Compiler that performs register promotion optimizations in regions of code where memory aliasing may occur | |
US9934009B2 (en) | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |