CN112988234A - 一种面向不稳定控制流循环体的分支指令辅助预测器 - Google Patents

一种面向不稳定控制流循环体的分支指令辅助预测器 Download PDF

Info

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
Application number
CN202110175703.8A
Other languages
English (en)
Inventor
虞致国
马晓杰
顾晓峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangnan University
Original Assignee
Jiangnan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangnan University filed Critical Jiangnan University
Priority to CN202110175703.8A priority Critical patent/CN112988234A/zh
Publication of CN112988234A publication Critical patent/CN112988234A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction 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。本发明所设计的循环体历史表使用循环体入口地址散列值进行部分寻址,获得两个相匹配的表项。这两个所匹配的表项进一步通过循环体出口地址散列值进行匹配。若无法通过循环体入口地址散列值与循环体出口地址散列值匹配到相应表象,则该表发生缺失。循环体入口地址散列值与循环体出口地址散列值均通过循环体入口地址与循环体出口地址进行散列操作获得。若匹配到相应的表项,则将表项中所记录的信息输出给迭代预测逻辑。
所述散列操作为异或树逻辑,接受循环体入口或出口的地址值,输出对应地址的散列值。具体操作如下:设散列操作作用于40位的地址h[39:0],则形成新的长度为10的散列值为:
Figure BDA0002939723890000031
所述有效位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所述的一种面向不稳定控制流循环体的分支指令辅助预测器,其特征在于:迭代预测逻辑的工作程序为检查循环体历史表,循环体历史表发生缺失,迭代预测逻辑则默认该分支指令不为循环体,若循环体历史表命中,迭代预测逻辑则根据有效位进行判断该分支是否为循环体,当判断为循环体时,则根据当前迭代次数以及推测总迭代次数去推断当前分支指令是否会发生跳转。
CN202110175703.8A 2021-02-06 2021-02-06 一种面向不稳定控制流循环体的分支指令辅助预测器 Pending CN112988234A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626084A (zh) * 2021-09-03 2021-11-09 苏州睿芯集成电路科技有限公司 一种tage分支预测算法针对超大循环次数指令流优化的方法

Citations (3)

* Cited by examiner, † Cited by third party
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 珠海市杰理科技股份有限公司 实现处理器对循环体执行的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
赵朝君;陈晨;陈志坚;孟建熠;: "基于历史长度自适应的分支预测方法", 计算机辅助设计与图形学学报, no. 04, 15 April 2015 (2015-04-15) *

Cited By (2)

* Cited by examiner, † Cited by third party
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