CN112988234A - 一种面向不稳定控制流循环体的分支指令辅助预测器 - Google Patents
一种面向不稳定控制流循环体的分支指令辅助预测器 Download PDFInfo
- Publication number
- CN112988234A CN112988234A CN202110175703.8A CN202110175703A CN112988234A CN 112988234 A CN112988234 A CN 112988234A CN 202110175703 A CN202110175703 A CN 202110175703A CN 112988234 A CN112988234 A CN 112988234A
- Authority
- CN
- China
- Prior art keywords
- loop body
- loop
- branch instruction
- predictor
- control flow
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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
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
本发明公开了一种面向不稳定控制流循环体的分支指令辅助预测器,属于超标量乱序发射处理器技术领域。所述面向不稳定控制流循环体的分支指令辅助预测器包括循环体历史表以及迭代预测逻辑,所述循环体历史表用于记录循环体的历史行为、循环次数以及有效性,所述迭代预测逻辑用于预测当前指令是否是循环体以及循环次数,循环体历史表记录循环体的历史行为及循环次数,迭代预测逻辑根据所记录循环体的历史行为对当前分支指令是否是循环体以及循环次数进行判定,当有效位低于阈值时,辅助预测器的结果取代主分支预测器的结果进行输出。本发明能对拥有不稳定控制流的规整循环体进行分支指令的跳转预测,对主体分支预测器起到辅助性作用。
Description
技术领域
本发明公开了一种面向不稳定控制流循环体的分支指令辅助预测器,属于超标量乱序发射处理器技术领域。
背景技术
由于分支指令是否能高效执行影响到整体流水线的效率,所以分支预测器的准确度已经影响到处理器的整体运算性能。现在比较流行的分支预测器大都是通过统计全局指令或者局部指令的分支历史来预测当前分支指令的是否会发生跳转。早期的传统分支预测器对固定历史长路的分支情况来估算当前分支指令的跳转可能性,虽然现在有学者提出利用几何变长的历史路径来探寻当前分支指令的跳转可能性,但本质上都是去探求分支指令背后是否发生跳转行为的统计性规律。此类分支预测器针对具有规律性或者相关度较高的指令时,拥有较高的准确率,但是面对规律性较差的指令时,准确度则会大幅下降。
特别的,对于具有固定循环次数的指令时(例如for循环、while循环),如果循环体内的控制流也较为有规律性,现在的分支预测器都能有很好的预测效果。但是,如果循环体内的控制流不稳定,分支预测器则较难发现整个循环体中分支指令的跳转行为。对于一个循环体拥有固定的循环次数,这本身是一种内在的规律,所以本发明设计了一种面向不稳定控制流循环体的分支指令辅助预测器,用于拥有不稳定控制流的规整循环体进行分支指令的跳转预测,对主体分支预测器起到辅助性作用。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种面向不稳定控制流循环体的分支指令辅助预测器。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种面向不稳定控制流循环体的分支指令辅助预测器,包括循环体历史表以及迭代预测逻辑,所述循环体历史表用于记录循环体的历史行为、循环次数以及有效性,所述迭代预测逻辑用于预测当前指令是否是循环体以及循环次数,循环体历史表记录循环体的历史行为及循环次数,迭代预测逻辑根据所记录循环体的历史行为对当前分支指令是否是循环体以及循环次数进行判定,当有效位低于阈值时,辅助预测器的结果取代主分支预测器的结果进行输出。
可选的,所述循环体历史表采用类2路组相连的Cache结构。
可选的,循环体历史表共有4组2-路SRAM表,每一路SRAM表拥有64个表项,每个表项共有34位,其中包含4位循环体有效位V,10位循环体入口地址散列值ENTAG,10位循环体出口地址散列值EXTAG,10位循环次数计数器Counter。
可选的,所述循环体入口地址散列值与循环体出口地址散列值均通过循环体入口地址与循环体出口地址进行散列操作获得。
可选的,所述循环体历史表使用循环体入口地址散列值进行部分寻址,获得两个相匹配的表项,这两个所匹配的表项进一步通过循环体出口地址散列值进行匹配,若无法通过循环体入口地址散列值与循环体出口地址散列值匹配到相应表象,则该表发生缺失。
可选的,迭代预测逻辑的工作程序为检查循环体历史表,循环体历史表发生缺失,迭代预测逻辑则默认该分支指令不为循环体,若循环体历史表命中,迭代预测逻辑则根据有效位进行判断该分支是否为循环体,当判断为循环体时,则根据当前迭代次数以及推测总迭代次数去推断当前分支指令是否会发生跳转。
(三)有益效果
与现有技术相比,本发明公开的一种面向不稳定控制流循环体的分支指令辅助预测器,具备以下有益效果:
该面向不稳定控制流循环体的分支指令辅助预测器,通过循环体历史表的设置,可以用于记录循环体的历史行为、循环次数以及有效性。通过迭代预测逻辑的设置,迭代预测逻辑的工作程序为检查循环体历史表,循环体历史表发生缺失,迭代预测逻辑则默认该分支指令不为循环体,若循环体历史表命中,迭代预测逻辑则根据有效位进行判断该分支是否为循环体,当判断为循环体时,则根据当前迭代次数以及推测总迭代次数去推断当前分支指令是否会发生跳转,从而预测当前指令是否是循环体以及循环次数。
附图说明
图1为本发明的总体结构示意图;
图2为本发明的循环体历史表结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
请参阅图1-2,该预测偏差矫正器包括循环体历史表,用于记录循环体的历史行为、循环次数、有效性等信息以及迭代预测逻辑,用于预测当前指令是否是循环体以及循环次数。
该分支指令辅助预测器使用循环体历史表记录循环体的历史行为及循环次数,迭代预测逻辑根据所记录循环体的历史行为对当前分支指令是否是循环体以及循环次数进行判定,当有效位低于一定阈值时,辅助预测器的结果取代主分支预测器的结果进行输出。
所述循环体历史表结构图如图2所示,其记录了未离开流水线的循环体的历史迭代次数、循环体出入口地址以及当前循环体的有效性等信息。具体的,循环体历史表采用了类2路组相连的Cache结构。该表共有4组2-路SRAM表,每一路SRAM表拥有64个表项,每个表项共有34位,其中包含4位循环体有效位V,10位循环体入口地址散列值ENTAG,10为循环体出口地址散列值EXTAG,10位循环次数计数器Counter。本发明所设计的循环体历史表使用循环体入口地址散列值进行部分寻址,获得两个相匹配的表项。这两个所匹配的表项进一步通过循环体出口地址散列值进行匹配。若无法通过循环体入口地址散列值与循环体出口地址散列值匹配到相应表象,则该表发生缺失。循环体入口地址散列值与循环体出口地址散列值均通过循环体入口地址与循环体出口地址进行散列操作获得。若匹配到相应的表项,则将表项中所记录的信息输出给迭代预测逻辑。
所述有效位V通过该循环体是否离开流水线、该分支指令是否是循环体、上次预测是否有效等信息得出。有效位控制逻辑对有效位V进行控制,具体方法如下:有效位控制逻辑输入分支是否为循环体的结果、分支预测是否正确的结果以及重排序缓存(Re-orderBuffer,ROB)中的指令完成位、指令异常位。ROB中的指令完成位与指令异常位通过或逻辑控制有效位V的,如果ROB中的指令完成位与指令异常位中有一位为1,说明指令已完成执行或者发生异常,不在流水线中,该表项成无效状态需进行替换等处理。分支是否为循环体的结果对有效位V的第三位产生影响,若当前分支为循环体则复位置0;若当前分支不为循环体则置位为1。分支不为循环体也会对该表项进行无效化处理。分支预测是否正确的结果对有效位V的最低两位产生影响,每当辅助预测器的预测结果正确使有效位V减1直到值为00为止,反之若辅助预测器的预测结果错误则让有效位V加1直到为11为止。
当预测失效时,循环体历史表中的部分表象会进行替换,循环体历史表中表项的替换主要由有效位V所决定。当有效位V高于一定阈值时,该表项会被替换。
迭代预测逻辑输出分支是否为循环体以及分支是否跳转。迭代预测逻辑以分支有效值、循环体历史表是否命中、当前循环体迭代次数和推测的迭代次数为特征进行预测,同时在预测时,迭代预测逻辑检查循环体历史表。若循环体历史表发生缺失,迭代预测逻辑则默认该分支指令不为循环体,若循环体历史表命中,迭代预测逻辑则根据有效位进行判断该分支是否为循环体,当判断为循环体时,则根据当前迭代次数以及推测总迭代次数去推断当前分支指令是否会发生跳转。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种面向不稳定控制流循环体的分支指令辅助预测器,包括循环体历史表以及迭代预测逻辑,其特征在于:所述循环体历史表用于记录循环体的历史行为、循环次数以及有效性,所述迭代预测逻辑用于预测当前指令是否是循环体以及循环次数,循环体历史表记录循环体的历史行为及循环次数,迭代预测逻辑根据所记录循环体的历史行为对当前分支指令是否是循环体以及循环次数进行判定,当有效位低于阈值时,辅助预测器的结果取代主分支预测器的结果进行输出。
2.根据权利要求1所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:所述循环体历史表采用类2路组相连的Cache结构。
3.根据权利要求1所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:循环体历史表共有4组2-路SRAM表,每一路SRAM表拥有64个表项,每个表项共有34位,其中包含4位循环体有效位V,10位循环体入口地址散列值ENTAG,10位循环体出口地址散列值EXTAG,10位循环次数计数器Counter。
4.根据权利要求3所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:所述循环体入口地址散列值与循环体出口地址散列值均通过循环体入口地址与循环体出口地址进行散列操作获得。
5.根据权利要求3所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:所述循环体历史表使用循环体入口地址散列值进行部分寻址,获得两个相匹配的表项,这两个所匹配的表项进一步通过循环体出口地址散列值进行匹配,若无法通过循环体入口地址散列值与循环体出口地址散列值匹配到相应表象,则该表发生缺失。
6.根据权利要求5所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:迭代预测逻辑的工作程序为检查循环体历史表,循环体历史表发生缺失,迭代预测逻辑则默认该分支指令不为循环体,若循环体历史表命中,迭代预测逻辑则根据有效位进行判断该分支是否为循环体,当判断为循环体时,则根据当前迭代次数以及推测总迭代次数去推断当前分支指令是否会发生跳转。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175703.8A CN112988234A (zh) | 2021-02-06 | 2021-02-06 | 一种面向不稳定控制流循环体的分支指令辅助预测器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175703.8A CN112988234A (zh) | 2021-02-06 | 2021-02-06 | 一种面向不稳定控制流循环体的分支指令辅助预测器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988234A true CN112988234A (zh) | 2021-06-18 |
Family
ID=76392485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110175703.8A Pending CN112988234A (zh) | 2021-02-06 | 2021-02-06 | 一种面向不稳定控制流循环体的分支指令辅助预测器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988234A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626084A (zh) * | 2021-09-03 | 2021-11-09 | 苏州睿芯集成电路科技有限公司 | 一种tage分支预测算法针对超大循环次数指令流优化的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120124344A1 (en) * | 2010-11-16 | 2012-05-17 | Advanced Micro Devices, Inc. | Loop predictor and method for instruction fetching using a loop predictor |
CN103488463A (zh) * | 2005-02-24 | 2014-01-01 | 高通股份有限公司 | 通过循环结束分支来抑制分支历史寄存器的更新 |
CN107729054A (zh) * | 2017-10-18 | 2018-02-23 | 珠海市杰理科技股份有限公司 | 实现处理器对循环体执行的方法及装置 |
-
2021
- 2021-02-06 CN CN202110175703.8A patent/CN112988234A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488463A (zh) * | 2005-02-24 | 2014-01-01 | 高通股份有限公司 | 通过循环结束分支来抑制分支历史寄存器的更新 |
US20120124344A1 (en) * | 2010-11-16 | 2012-05-17 | Advanced Micro Devices, Inc. | Loop predictor and method for instruction fetching using a loop predictor |
CN107729054A (zh) * | 2017-10-18 | 2018-02-23 | 珠海市杰理科技股份有限公司 | 实现处理器对循环体执行的方法及装置 |
Non-Patent Citations (1)
Title |
---|
赵朝君;陈晨;陈志坚;孟建熠;: "基于历史长度自适应的分支预测方法", 计算机辅助设计与图形学学报, no. 04, 15 April 2015 (2015-04-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626084A (zh) * | 2021-09-03 | 2021-11-09 | 苏州睿芯集成电路科技有限公司 | 一种tage分支预测算法针对超大循环次数指令流优化的方法 |
CN113626084B (zh) * | 2021-09-03 | 2023-05-19 | 苏州睿芯集成电路科技有限公司 | 一种tage分支预测算法针对超大循环次数指令流优化的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8271750B2 (en) | Entry replacement within a data store using entry profile data and runtime performance gain data | |
US6938151B2 (en) | Hybrid branch prediction using a global selection counter and a prediction method comparison table | |
Ishii et al. | Access map pattern matching for high performance data cache prefetch | |
US6681387B1 (en) | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit | |
Seznec | A new case for the tage branch predictor | |
JP5172942B2 (ja) | プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム | |
Farooq et al. | Value based btb indexing for indirect jump prediction | |
US8612698B2 (en) | Replacement policy for hot code detection | |
Hilton et al. | BOLT: Energy-efficient out-of-order latency-tolerant execution | |
CN112988234A (zh) | 一种面向不稳定控制流循环体的分支指令辅助预测器 | |
Rakvic et al. | Completion time multiple branch prediction for enhancing trace cache performance | |
US6470438B1 (en) | Methods and apparatus for reducing false hits in a non-tagged, n-way cache | |
CN109375989A (zh) | 一种并行后缀排序方法及系统 | |
CN114840258B (zh) | 一种多层级混合算法过滤式分支预测方法及预测系统 | |
CN116244072A (zh) | 一种针对栅栏同步的gpgpu微架构系统 | |
Burtscher et al. | Hybridizing and coalescing load value predictors | |
Xie et al. | An energy-efficient branch prediction technique via global-history noise reduction | |
JP2001142747A (ja) | プロセッサ性能データ収集装置及び該装置を利用した最適化方法 | |
CN108845832B (zh) | 一种提高处理器主频的流水线细分装置 | |
Ishii | Fused two-level branch prediction with ahead calculation | |
CN114265623A (zh) | 一种嵌入式处理器的分支预测器 | |
US20220035632A1 (en) | Method and Apparatus for Front End Gather/Scatter Memory Coalescing | |
CN114661360A (zh) | 基于分支指令类型的分段分支目标缓冲器 | |
Kim et al. | Low power branch predictor for embedded processors | |
Seznec et al. | Exploring value prediction limits |
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 |