CN105867884B - 一种改进型PAp分支预测方法 - Google Patents

一种改进型PAp分支预测方法 Download PDF

Info

Publication number
CN105867884B
CN105867884B CN201610177103.4A CN201610177103A CN105867884B CN 105867884 B CN105867884 B CN 105867884B CN 201610177103 A CN201610177103 A CN 201610177103A CN 105867884 B CN105867884 B CN 105867884B
Authority
CN
China
Prior art keywords
jump instruction
training
jump
count value
time
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
Application number
CN201610177103.4A
Other languages
English (en)
Other versions
CN105867884A (zh
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.)
Tsinghua University
Original Assignee
Tsinghua 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 Tsinghua University filed Critical Tsinghua University
Priority to CN201610177103.4A priority Critical patent/CN105867884B/zh
Publication of CN105867884A publication Critical patent/CN105867884A/zh
Application granted granted Critical
Publication of CN105867884B publication Critical patent/CN105867884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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

一种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位,本发明可降低预测训练时间,提高预测效率并提高预测准确率,从而提高处理器性能。

Description

一种改进型PAp分支预测方法
技术领域
本发明涉及电子技术领域,特别涉及一种改进型PAp分支预测方法。
背景技术
现代处理器中,流水线技术被广泛应用,但对于跳转指令,其在流水线技术中应用存在问题。对于不进行分支预测的处理器,当遇到跳转指令时,流水线要被清空,从跳转目标地址重新执行。另一种对待跳转指令的方法是在编译阶段在跳转指令后面加入泡沫等空指令,这样的目的是等跳转指令解码出跳转目标地址后再执行接下来的指令。这些做法都大大地浪费了执行周期,严重降低了处理器的执行效率。对于更深级数流水线来说,跳转损失更加巨大。可以看出,分支预测技术对于处理器性能的提升意义重大。分支预测技术已经是提高处理器性能的关键技术。
根据预测完成阶段的不同,分支预测技术分为静态分支预测与动态分支预测。静态分支预测是在编译阶段完成的,主要方法是延迟跳转。动态分支预测是在硬件中完成,主要方式是双峰预测与两级自适应预测。对于静态分支预测,其硬件结构简单,不需额外增加预测逻辑,但对编译器要求较高,并且通常编译出的代码量较大。动态分支预测增加了额外的硬件开销,但是预测准确率较高,且对编译器要求较低,软件可移植性较强。动态分支预测以其预测准确性的优势越来越受到重视。
动态分支预测中常用到的方法包括双峰预测与两级自适应预测。双峰预测的核心部分是BTB表,表中存储着跳转指令的跳转指令地址BIA(Branch Instruction Address),跳转目标地址BTA(Branch Target Address)和分支历史信息BHI(Branch HistoryInformation)等信息,通过索引BTB表来查找跳转指令的跳转信息,根据查出的信息进行预测。双峰预测的优势在于硬件结构简单,但是准确率较低。
为了克服双峰预测准确率较低的问题,两级自适应预测应运而生。两级自适应预测是在双峰预测的基础上,为每个BTB表项增加一个分支历史模式表(branch historypattern table),通过历史信息来预测当前指令的跳转情况,准确率大大提高。两级自适应预测中比较有代表性的是PAp、Gas、Gshare等预测器。两级自适应预测以较小的硬件代价换取了预测准确率的大大提高。本发明采用PAp预测器进行改进,PAp预测器为每个模式表PT(pattern table)维护一个计数器,每个计数值对应一个跳转方向,通过计数值不同来预测跳转指令的不同跳转方向。PAp预测器存在的一个问题是其训练时间较长,即对PT表计数器的每个计数值都要做相应的预测方向训练,采用原有有限状态机每个计数值需要两次训练才能做正确预测。对于较大型的程序,PAp预测器在预测准确率上有明显优势,但是对于中小型程序,由于训练时间较长,在训练过程中的预测准确率较低。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种改进型PAp分支预测方法,可降低预测器训练时间,提高分支预测准确率。
为了实现上述目的,本发明采用的技术方案是:
一种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,其特征在于:
所述降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;
所述提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位。
所述新的有限状态机由00,10,11三个状态组成,00代表跳转方向为不跳转,10与11代表跳转方向为跳转,状态机的初始状态为00,稳定状态为00或11,当第一次遇到跳转指令时,状态由00变为10,跳转指令的PT表计数器中的某项只需一次训练,第二次该项就可以正确预测。
所述改进第一次训练时跳转方向训练方法是指,对于某一跳转指令,第一次训练时,其对应的PT表计数器0000项对应其跳转方向,此时所述0000项中的BHI值被更改,与此同时,所述PT表计数器其他计数项的BHI值也做同样的更改。
所述改进PT表计数器计数规则是指,训练时,当遇到某条跳转指令的跳转方向为不跳转时,该跳转指令对应的PT表计数器计数值清零,该跳转指令的历史跳转信息训练结束。
所述同一个取指包中多取一套预测信息是指,预测时,对取指包中的指令进行遍历BTB表,当遍历到跳转指令时,取得表项中的跳转信息进行预测,如果所述跳转指令的跳转方向为不跳转,则继续遍历所述取指包,如果所述取指包中有另一条跳转指令,则将该所述另一条跳转指令的跳转信息同时取出,与第一条跳转指令信息一同做跳转预测。
所述跳转出错后对PT表计数器正确复位是指,当执行级执行跳转指令时,如果发现预测发生错误,则清空流水线,从正确的位置重新执行,并对预测错的跳转指令对应的PT表计数器清零,同时将其他跳转指令PT表计数器恢复到正确的计数值。
与现有技术相比,本发明可有效降低预测器训练时间,提高预测效率并提高分支预测准确率,进而提高处理器性能。
附图说明
图1是PAp预测方法示意图。
图2是本发明实施例双发射超标量架构与六发射超长指令字架构混合处理器的流水线示意图。
图3是本发明实施例中PAp预测方法的具体流程示意图。
图4是传统预测方法有限状态机示意图。
图5是改进型有限状态机示意图。
图6是本发明PT表计数信息示意图。
图7是本发明取指包中两条跳转指令的跳转信息示意图。
图8是本发明PT表计数值正确复位方法示意图。
具体实施方式
下面结合说明书附图对本发明实施例的具体实施方式做进一步的描述。下面通过参考附图描述的实施例是示例性的,仅用于解释发明,而不能解释为对本发明的限制。
图1是本发明PAp预测方法示意图,包括降低预测器训练时间方法和提高分支预测准确率方法,降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位。
为了能对本发明的实施例有更清楚的认识,本发明提出的改进型PAp分支预测方法是在一款兼容ARM指令集的双发射超标量架构与六发射超长指令字架构混合处理器上实施的,所以下面对本发明实施例提出的双发射超标量架构与六发射超长指令字架构混合处理器的流水线进行简单介绍。如图2所示,是实施例双发射超标量架构与六发射超长指令字架构混合处理器的流水线示意图,流水线设计为十级流水线结构,主要分为Fetch_PG、Fetch_PS、Fetch_WT、Fetch_IR、Fetch_EXP、Dispatch、Decode、Exe1、Exe2、Exe3。在该处理器上,指令是以包的形式存在并逐级传递的,包括取指包、扩展包、分发包。取指包是指令获取单元从程序存储器中读取的256位数据包,包含16位与32位指令;扩展包在Fetch_EXP级生成,将16位指令与32位指令统一扩展成32位,每6条指令形成一个扩展包,即192位;分发包在Dispatch级生成,根据分发策略,将并行执行的指令装载在一个分发包中。
图3是本发明实施例PAp预测方法的具体流程示意图,可以看到,PAp预测器由BTB表和分支历史信息PT表两部分组成。BTB表存储跳转指令的跳转信息,包括跳转指令的跳转指令地址BIA(Branch Instruction Address),跳转目标地址BTA(Branch TargetAddress)和分支历史信息BHI(Branch History Information)等。PT表由一个计数器组成,每个计数值对应一个跳转方向信息,其中跳转方向信息由有限状态机状态表示。传统的有限状态机如图4所示,由00,01,11,10四个状态组成,其中00与01表示跳转方向为不跳转,11与10表示跳转方向为跳转。状态机的初始状态为00。对于每个状态机所对应的跳转指令,当其连续两次跳转方向为跳转时,第三次遇到才能正确预测出它的跳转方向。对于PAp预测方法,每个PT表计数值对应一种跳转历史状态,如果PT表计数器为3位,即0~7计数,每个状态训练两次,则训练次数为16,训练时间较长。
本发明提出的第一种降低预测训练时间的方法是改进有限状态机,如图5所示,是改进后的新型有限状态机示意图。新型有限状态机由00,10,11三个状态组成,00表示跳转方向为不跳转,10与11表示跳转方向为跳转,状态机初始状态为00,训练后的稳定状态为00或11。当第一次遇到跳转指令时,状态由00变为10,第二次遇到此跳转指令时即可做出跳转预测,由两次训练变为一训练,训练时间减半。
本发明提出的第二种降低预测训练时间的方法是对PT表每个计数项对应跳转方向的训练方法做出改进。如图6所示,是本发明PT表计数信息示意图。当第一次遇到跳转指令时,计数值为0000项对应此次跳转情况,传统方法是训练对该项的状态机状态进行更改,其他计数值对应的状态机状态不变。本发明改进此训练方法,当第一次遇到跳转指令时,不仅对0000项做状态机状态的更改,对其他计数项对应的状态机状态做同0000项一样的更改。这样做的原因在于,对于for(i=0;i<10;i++)这样的循环,前面多次跳转指令的跳转方向都是跳转,最后一次跳转指令的跳转方向为不跳转,同时训练每个计数项的状态机使得所有跳转方向为跳转的跳转指令只需要一次训练即可。对于改进后的训练方法,只需两次训练即可对跳转指令进行完整的预测。
本发明提出的第三种降低预测训练时间的方法是改进PT表计数器的计数方法。训练时,每当遇到同一条跳转指令,PT表计数器计数值加一并将该次跳转方向存入计数值对应项,当某条跳转指令的跳转方向为不跳转时,PT表计数器计数归零,重新累加计数。图6中,PT表计数器每当遇到跳转指令时加一,计数值为1001时对应的跳转方向为不跳转,则计数值归零,1001后面计数项无效。这样改进的意义在于,对于for(i=0;i<10;i++)这样的循环,只需记录10次跳转状态,没有必要记录第10次之后的跳转状态。
本发明提出的一种提高预测准确率的方法是取指包取两套跳转预测信息。如图7所示,是取指包中取得两套预测信息示意图。在Fetch_PG级,指令以取指包形式存在,遍历取指包中每条指令并索引BTB表项,如果发现跳转指令,则取出跳转信息进行预测。当发现的跳转指令跳转方向为不跳时,取指包中跳转指令后面的指令仍会执行,如果只取这一条跳转指令的跳转信息,此取指包中其他跳转指令无法预测。所以,当第一条跳转指令B1的跳转方向为不跳转时,继续遍历取指包,如果遍历到第二条跳转指令B2,则B1与B2跳转信息同时取出进行预测。
本发明提出的另一种提高预测准确率的方法是跳转出错后PT表计数器计数值的正确复位。当一条跳转指令按照预测信息进行执行后,如果此预测是错误的,那么它后面执行的指令本不该执行,在预测错误被发现之前,会按照错误的预测执行多条指令,这些指令当中可能存在其他跳转指令,而这些跳转指令本不该执行,也即它们的PT表计数器本不该改变。为解决这种错误的计数,本发明提出跳转出错后PT表计数值正确复位方法。图8是PT表计数值正确复位方法示意图,取两套PT表计数器计数值,一套是预测阶段计数值,另一套是实际执行的计数值,实际执行的计数值代表跳转指令真正执行所对应的计数值,预测阶段的计数值则是为预测而设计的计数值,当预测出错时,实际执行的计数值是正确的计数值,此时需将错误计数值恢复到实际执行计数值即可。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。

Claims (1)

1.一种改进型PAp分支预测方法,包括降低预测器训练时间方法和提高分支预测准确率方法,其特征在于:
所述降低预测器训练时间方法包括:使用一种新的有限状态机来表示跳转指令的跳转方向;改进第一次训练时跳转方向训练方法;以及改进PT表计数器计数规则;
所述提高分支预测准确率方法包括:在取指级当遇到不跳转的跳转指令时,同一个取指包中多取一套预测信息;跳转出错后对PT表计数器正确复位;
所述新的有限状态机由00,10,11三个状态组成,00代表跳转方向为不跳转,10与11代表跳转方向为跳转,状态机的初始状态为00,稳定状态为00或11,当第一次遇到跳转指令时,状态由00变为10;
所述改进第一次训练时跳转方向训练方法是指,对于某一跳转指令,第一次训练时,其对应的PT表计数器0000项对应其跳转方向,此时所述0000项中的BHI值被更改,与此同时,所述PT表计数器其他计数项的BHI值也做同样的更改;
所述改进PT表计数器计数规则是指,训练时,当遇到某条跳转指令的跳转方向为不跳转时,该跳转指令对应的PT表计数器计数值清零,该跳转指令的历史跳转信息训练结束;
所述同一个取指包中多取一套预测信息是指,预测时,对取指包中的指令进行遍历BTB表,当遍历到跳转指令时,取得表项中的跳转信息进行预测,如果所述跳转指令的跳转方向为不跳转,则继续遍历所述取指包,如果所述取指包中有另一条跳转指令,则将该所述另一条跳转指令的跳转信息同时取出,与第一条跳转指令信息一同做跳转预测;
所述跳转出错后对PT表计数器正确复位是指,当执行级执行跳转指令时,如果发现预测发生错误,则清空流水线,从正确的位置重新执行,并对预测错的跳转指令对应的PT表计数器清零,同时将其他跳转指令PT表计数器恢复到正确的计数值;
所述复位为:取两套PT表计数器计数值,一套是预测阶段计数值,另一套是实际执行的计数值,实际执行的计数值代表跳转指令真正执行所对应的计数值,预测阶段的计数值则是为预测而设计的计数值,当预测出错时,实际执行的计数值是正确的计数值,此时将错误计数值恢复到实际执行计数值。
CN201610177103.4A 2016-03-24 2016-03-24 一种改进型PAp分支预测方法 Active CN105867884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610177103.4A CN105867884B (zh) 2016-03-24 2016-03-24 一种改进型PAp分支预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610177103.4A CN105867884B (zh) 2016-03-24 2016-03-24 一种改进型PAp分支预测方法

Publications (2)

Publication Number Publication Date
CN105867884A CN105867884A (zh) 2016-08-17
CN105867884B true CN105867884B (zh) 2018-06-15

Family

ID=56624926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610177103.4A Active CN105867884B (zh) 2016-03-24 2016-03-24 一种改进型PAp分支预测方法

Country Status (1)

Country Link
CN (1) CN105867884B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN112579166B (zh) * 2020-12-08 2022-11-15 海光信息技术股份有限公司 一种多级分支预测器跳过训练标识的确定方法及装置
CN113377436B (zh) * 2021-06-30 2023-06-20 龙芯中科技术股份有限公司 预测方法、装置及预测器
CN113626084B (zh) * 2021-09-03 2023-05-19 苏州睿芯集成电路科技有限公司 一种tage分支预测算法针对超大循环次数指令流优化的方法
CN113761540B (zh) * 2021-09-07 2023-07-14 中国科学院上海高等研究院 BranchScope及其编译器防护方法的验证方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1535415A (zh) * 2001-07-24 2004-10-06 �Ƚ�΢װ�ù�˾ 具有二级分支预测高速缓存的分支预测装置
CN1725175A (zh) * 2004-07-16 2006-01-25 三星电子株式会社 分支目标缓冲器及其使用方法
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
CN102184091A (zh) * 2011-04-18 2011-09-14 孙瑞琛 一种分支预测方法及装置
CN103238134A (zh) * 2010-11-08 2013-08-07 高通股份有限公司 编码于分支指令中的双模态分支预测器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008077088A2 (en) * 2006-12-19 2008-06-26 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System and method for branch misprediction prediction using complementary branch predictors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1535415A (zh) * 2001-07-24 2004-10-06 �Ƚ�΢װ�ù�˾ 具有二级分支预测高速缓存的分支预测装置
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
CN1725175A (zh) * 2004-07-16 2006-01-25 三星电子株式会社 分支目标缓冲器及其使用方法
CN103238134A (zh) * 2010-11-08 2013-08-07 高通股份有限公司 编码于分支指令中的双模态分支预测器
CN102184091A (zh) * 2011-04-18 2011-09-14 孙瑞琛 一种分支预测方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Alternative Implementations of Two-Level Adaptive Branch Prediction;Yeh等;《International Symposium on Computer Architecture. ACM》;19921231;第124-134页 *
Fused Two-Level Branch Prediction with Ahead Calculation;Ishii等;《Journal of Instruction-Level Parallelism》;20081231;第9卷(第9期);第1-19页 *
一种 VLIW-Superscalar混合微处理器结构;陈峰扬等;《微电子学与计算机》;20131130;第30卷(第11期);第1-5页 *
动态分支预测技术分析与量化研究;肖泽强;《信息技术》;20110331(第3期);第80-82页 *

Also Published As

Publication number Publication date
CN105867884A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN105867884B (zh) 一种改进型PAp分支预测方法
KR101523020B1 (ko) 결합된 분기 타깃 및 프레디킷 예측
US10332008B2 (en) Parallel decision tree processor architecture
KR101643675B1 (ko) 명령 프로세싱 회로들, 및 관련 프로세서 시스템들, 방법들 및 컴퓨터―판독 가능 매체들에서 반대 컨디션들을 갖는 조건부 기록 명령들의 융합
US9442736B2 (en) Techniques for selecting a predicted indirect branch address from global and local caches
TW201411486A (zh) 迴圈緩衝器封裝
US8578141B2 (en) Loop predictor and method for instruction fetching using a loop predictor
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
CN102662640B (zh) 双重分支目标缓冲器和分支目标处理系统及处理方法
US20150262062A1 (en) Decision tree threshold coding
JP2012529096A (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
US8682933B2 (en) Traversal based directed graph compaction
CN104603747B (zh) 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法
CN104020982B (zh) 具有高效返回预测能力的分支目标缓冲器
JP2004527054A (ja) コンピュータ・システムにおいて命令を処理する方法および装置
US20150262063A1 (en) Decision tree processors
US8707014B2 (en) Arithmetic processing unit and control method for cache hit check instruction execution
US20160139933A1 (en) Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media
US20220091850A1 (en) Apparatus and method for efficient branch prediction using machine learning
US9086888B2 (en) Using a plurality of tables for improving performance in predicting branches in processor instructions
US11113066B2 (en) Predicting a branch instruction classified as simple or hard to predict based on a confidence counter in a branch type table
Gupta et al. Runjump-run: Bouquet of instruction pointer jumpers for high performance instruction prefetching
CN114780150A (zh) 一种混合型分支方向预测方法
US11687342B2 (en) Way predictor and enable logic for instruction tightly-coupled memory and instruction cache
LIN et al. EVALUATION OF LOAD VALUE PREDICTOR TO UTILIZE PREDICTION MISS BIAS

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant