CN114020441A - 一种多线程处理器的指令预测方法及相关装置 - Google Patents
一种多线程处理器的指令预测方法及相关装置 Download PDFInfo
- Publication number
- CN114020441A CN114020441A CN202111432362.4A CN202111432362A CN114020441A CN 114020441 A CN114020441 A CN 114020441A CN 202111432362 A CN202111432362 A CN 202111432362A CN 114020441 A CN114020441 A CN 114020441A
- Authority
- CN
- China
- Prior art keywords
- jump
- predicted
- branch instruction
- result
- thread
- 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.)
- Granted
Links
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请公开了一种多线程处理器的指令预测方法及相关装置,通过从待预测分支指令所属第一线程的全局历史寄存器GHR中获取该线程的历史跳转记录,并从第一线程的分支目标地址缓存BTB中获取该待预测分支指令的历史跳转地址之后,根据该历史跳转地址和历史跳转记录确定待预测分支指令的查询索引。并基于该索引对分支预测器BHT进行查询,以获取待预测分支指令的预测结果。本申请实施例的多线程处理器中每一线程均对应的唯一的GHR和BTB。因而在确定查询索引时能够避免查询到其他线程指令的预测结果,提高预测结果的准确率。
Description
技术领域
本发明涉及多线程分支预测技术领域,特别涉及一种多线程处理器的指令预测方法及相关装置。
背景技术
处理器为追求更高的性能通常采用指令级并行和线程级并行的方式,以追求在更少的时钟周期(cycle)内运行完成更多的指令。处理器所处理的指令存在跳转可能,跳转指令会打断流水线指令的处理。由于处理器需在当前指令执行完毕后才能获知该指令的跳转方向和跳转地址,若在获取该指令的跳转方向和跳转地址之前被跳转指令打断则会处于等待状态,由此流水线越长处理器被动等待的时间便越长。
相关技术中多采用动态分支技术,通过获取当前处理的分支指令的程序计数(Program Counter,PC)后,基于该PC地址查询分支预测器对该分支指令的预测结果,并根据预测结果提前做出处理以避免流水线等待。分支预测器具备动态的学习能力,理论上预测结果会愈加趋近去该指令的真实结果。但由于不同线程中分支指令的PC地址可能相同,因而多个线程共享一个分支预测器会导致对分支指令预测结果的错误查询,进而影响分支预测器的学习方向,造成分支预测准确率下降的问题。
发明内容
本申请实施例提供一种多线程处理器的指令预测方法及相关装置,通过为每一线程设有对应的GHR和BTB以避免查询到其他线程指令的预测结果,进而提高预测结果的准确率。
第一方面,本申请实施例提供了一种多线程处理器的指令预测方法,所述方法包括:
接收来自所述多线程处理器中的第一线程的待预测分支指令;
从所述第一线程的全局历史寄存器GHR中获取所述第一线程的历史跳转记录,从所述第一线程的分支目标地址缓存BTB中获取所述待预测分支指令的历史跳转地址;
基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果。
本申请实施例通过从待预测分支指令所属第一线程的全局历史寄存器GHR中获取该线程的历史跳转记录,并从第一线程的分支目标地址缓存BTB中获取该待预测分支指令的历史跳转地址之后,根据该历史跳转地址和历史跳转记录确定待预测分支指令的查询索引。并基于该索引对分支预测器BHT进行查询,以获取待预测分支指令的预测结果。本申请实施例的多线程处理器中每一线程均对应的唯一的GHR和BTB。因而在确定查询索引时能够避免查询到其他线程指令的预测结果,提高预测结果的准确率。
在一些可能的实施例中,所述从所述第一线程的BTB中获取所述待预测分支指令的历史跳转地址,包括:
获取所述第一线程的第一线程标识;
根据所述第一线程标识确定所述待预测分支指令的程序计数PC地址;
从所述第一线程的BTB中查找所述PC地址对应的目标地址信息BTA得到所述待预测分支指令的历史跳转地址。
本申请实施例中针对每一线程设有唯一BTB,用于记录该线程中各分支指令的历史跳转地址,以此确保根据待预测分支指令PC地址确定跳转地址的准确性。
在一些可能的实施例中,所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的BHT获取所述待预测分支指令的预测结果,包括:
获取所述历史跳转地址中第一预设位记录的第一数据,并获取所述历史跳转记录中第二预设位记录的第二数据;
拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的索引;
从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果。
本申请实施例中,由于用于存储历史跳转地址的BTB和历史跳转记录的GHR均与线程呈对应关系,故针对历史跳转地址中第一预设位记录的第一数据以及历史跳转记录中第二预设为记录的第二数据的拼接结果确定待预测分支指令在BHT中的索引,可确保该索引在BHT中对应的查询结果即为该待预测分支指令的预测结果。
在一些可能的实施例中,所述从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果,包括:
确定所述BHT中与所述索引对应的饱和计数器;
获取所述饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果。
本申请实施例在获取预测分支指令的索引后,查询BHT中与该索引对应的饱和计数器,并基于饱和计数器的计数值确定该预测分支指令的预测结果。由此可降低不同线程分支历史之间的相互干扰情况,提高预测结果的准确率。
在一些可能的实施例中,所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果之后,所述方法还包括:
获取所述待预测分支指令的实际跳转信息;
基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB。
本申请实施例在确定待预测分支指令的实际跳转信息后,基于该实际跳转信息对BHT、GHR以及BTB进行更新,以提高对待预测分支指令预测的精确度。
在一些可能的实施例中,若所述实际跳转信息包括跳转结果和跳转地址,则所述基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB,包括:
获取所述历史跳转地址中所述第一预设位记录的所述第一数据,并获取所述历史跳转记录中所述第二预设位记录的所述第二数据,拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的所述索引,根据所述跳转结果更新所述BHT中所述索引对应的结果;以及,
将所述GHR中所述第一线程的历史跳转记录向左移动一位后,将所述跳转结果添加到所述GHR中的最后一位;以及,
确定所述跳转结果是否为跳转,若确定所述跳转结果为跳转,则将所述BTB中存储的所述待预测分支指令的历史跳转地址更新为所述跳转地址。
本申请实施例根据历史跳转地址中第一预设位以及历史跳转记录中第二预设位记录的数据确定该待预测分支指令在BHT中的索引,并根据实际跳转信息指示的跳转结果对BHT进行更新。并以该跳转结果作为GHR中历史跳转记录的最后一位来更新GHR,进一步的,当该跳转结果指示跳转时,将BTB中存储的该待预测分支指令的历史跳转地址更新为实际跳转信息指示的跳转地址,以此对BHT、GHR以及BTB进行更新,从而提高对待预测分支指令预测的精度。
在一些可能的实施例中,所述根据所述跳转结果更新所述BHT中所述索引对应的结果,包括:
获取所述BHT中与所述索引对应的饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果;
确定所述待预测分支指令的预测结果与所述跳转结果是否相同;
若确定所述待预测分支指令的预测结果与所述跳转结果相同,则将所述计数值添加设定值;
若确定所述待预测分支指令的预测结果与所述跳转结果不同,则将所述计数值减少所述设定值。
本申请实施例对BHT进行更新时,预先获取BHT中与该索引对应饱和计数器的计数值,该计数值表征该待预测分支指令的预测结果。若预测结果与跳转结果相同,则为计数值添加设定值。若不同则为计数值减少设定值。以此对待预测分支指令再次预测时,可基于更新后的BHT获取预测结果,提高预测精度。
第二方面,本申请实施例提供了一种多线程处理器的指令预测装置,所述装置包括:
指令获取模块,被配置为执行接收来自所述多线程处理器中的第一线程的待预测分支指令;
信息获取模块,被配置为执行从所述第一线程的全局历史寄存器GHR中获取所述第一线程的历史跳转记录,从所述第一线程的分支目标地址缓存BTB中获取所述待预测分支指令的历史跳转地址;
指令预测模块,被配置为执行基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述从所述第一线程的BTB中获取所述待预测分支指令的历史跳转地址,所述信息获取模块被配置为:
获取所述第一线程的第一线程标识;
根据所述第一线程标识确定所述待预测分支指令的程序计数PC地址;
从所述第一线程的BTB中查找所述PC地址对应的目标地址信息BTA得到所述待预测分支指令的历史跳转地址。
在一些可能的实施例中,执行所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的BHT获取所述待预测分支指令的预测结果,所述指令预测模块被配置为:
获取所述历史跳转地址中第一预设位记录的第一数据,并获取所述历史跳转记录中第二预设位记录的第二数据;
拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的索引;
从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果,所述指令预测模块被配置为:
确定所述BHT中与所述索引对应的饱和计数器;
获取所述饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果之后,所述指令预测模块还被配置为:
获取所述待预测分支指令的实际跳转信息;
基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB。
在一些可能的实施例中,若所述实际跳转信息包括跳转结果和跳转地址,则执行所述基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB,所述指令预测模块被配置为:
获取所述历史跳转地址中所述第一预设位记录的所述第一数据,并获取所述历史跳转记录中所述第二预设位记录的所述第二数据,拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的所述索引,根据所述跳转结果更新所述BHT中所述索引对应的结果;以及,
将所述GHR中所述第一线程的历史跳转记录向左移动一位后,将所述跳转结果添加到所述GHR中的最后一位;以及,
确定所述跳转结果是否为跳转,若确定所述跳转结果为跳转,则将所述BTB中存储的所述待预测分支指令的历史跳转地址更新为所述跳转地址。
在一些可能的实施例中,执行所述根据所述跳转结果更新所述BHT中所述索引对应的结果,所述指令预测模块被配置为:
获取所述BHT中与所述索引对应的饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果;
确定所述待预测分支指令的预测结果与所述跳转结果是否相同;
若确定所述待预测分支指令的预测结果与所述跳转结果相同,则将所述计数值添加设定值;
若确定所述待预测分支指令的预测结果与所述跳转结果不同,则将所述计数值减少所述设定值。
第三方面,本申请实施例还提供了一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例第一方面提供的方法。
第四方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行本申请实施例第一方面提供的方法。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例示出的饱和计数器原理示意图;
图2为本申请实施例示出的传统的动态分支预测器整体结构示意图;
图3a为本申请实施例示出一种多线程处理器的指令预测方法流程图;
图3b为本申请实施例示出的THD-GHR结构示意图;
图3c为本申请实施例示出的BTB结构示意图;
图3d为本申请实施例示出的RAS结构示意图;
图3e为本申请实施例示出的查询索引示意图;
图3f为本申请实施例示出的BHT结构示意图;
图3g为本申请实施例示出的GHR更新示意图;
图4为本申请实施例示出的分支预测器整体结构示意图;
图5为本申请实施例示出的指令预测装置500的结构图;
图6为本申请实施例示出的电子设备示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。在本申请实施例的描述中,除非另有说明,“面将表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例的描述中,除非另有说明,术语“多个”是指两个或两个以上,其它量词与之类似应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者控制设备执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
前文已提及,目前多采用动态分支技术对线程中当前正在执行的分支指令进行跳转预测,并根据预测结果提前做出处理以避免流水线等待,进而提高处理器的处理速度。传统的动态分支预测器主要包含全局历史寄存器(Global History Register,GHR)、分支目标地址缓存(Branch Target Buffer,BTB)和返回地址栈(Return Address Stack,RAS)。
GHR中存有各线程中分支指令的历史跳转记录,BTB用于记录各线程中分支指令的历史跳转地址。基于GHR进行分支预测时,需借助分支历史记录BHT(Branch HistoryTable)对GHR中的每一指令进行分支预测。其中,BHT由多个2bit饱和计数器构成,存放着每一条分支指令(PC值)对应的一个2bit饱和计数器的计数值。2bit饱和计数器相当于有4个状态的状态机,计数值11表示强跳转、10表示弱跳转、01表示弱不跳转、00表示强不跳转,分支预测跳转正确时状态加1,反之减1。即如果一条分支指令连续两次执行的方向都一样时,那么该指令在第三次执行时也会有同样的执行结果,如图1所示。BHT中计数值的更新是在流水线的提交阶段确认分支指令被正确执行时更新。利用该寄存器中存放的分支跳转历史信息分支预测器就可以预测条件分支跳转指令的跳转方向。
针对多线程处理器,相关技术中多采用一个动态分支预测器对该处理器多个线程中的各分支指令进行预测。具体如图2所示,首先根据待预测的分支指令的PC地址和GHR中的历史跳转信息进行哈希运算,通过哈希运算结果对BTB进行索引,若索引BTB发生命中,则从BTB中获取该分支指令的历史跳转地址。例如,待预测的分支指令PC地址为0x00001234,进行hash运算后得到11001100,则BTB中命名为11001100的表项内存放的地址即为该分支指令上一次跳转的地址,即历史跳转地址。
若对BTB的索引未发生命中,即预测该分支指令不跳转。此时需在获取到该分支指令的实际跳转信息后,从实际跳转信息中获取指示跳转的跳转地址,并将该跳转地址回填到BTB针对该PC地址建立的表项中,这样下次分支预测器再对这条分支指令进行预测时,即可从BTB中获取到该跳转地址。其中,实际跳转信息即为该分支指令在执行过程中或执行结束后下发的指示信息,实际跳转信息指示了该分支指令是否跳转以及在跳转时的跳转地址。
分支指令包括直接跳转指令、返回跳转指令、间接跳转指令和条件分支跳转指令等多种指令。考虑到部分多线程处理器将返回跳转指令的历史跳转地址存储在RAS中,因而对BTB进行索引未发生命中时,可能是由于该分支指令的历史跳转地址在RAS中存储。因而对返回跳转指令进行跳转预测时,若对BTB索引未命中,可从RAS中获取分支指令的历史跳转地址。
BHT具备动态学习能力,上述流程可基于分支指令的历史跳转信息较为准确的预测出该分支指令的是否跳转。然而不同线程中分支指令的PC地址存在相同可能,若采用一个动态分支预测器对该处理器多个线程中的各分支指令进行预测则会造成不同线程分支历史之间的相互干扰,影响分支预测器的学习方向,从而使分支预测的准确率下降。
为解决上述问题,本申请的发明构思为:针对待预测分支指令,从该待预测分支指令所属线程的GHR中获取该线程的历史跳转记录,并从该线程的BTB中获取该待预测分支指令的历史跳转地址。进一步的,根据该历史跳转地址和历史跳转记录确定待预测分支指令的查询索引,并基于该索引对BHT进行查询,以获取待预测分支指令的预测结果。本申请实施例的多线程处理器中每一线程均对应的唯一的GHR和BTB。因而在确定查询索引时能够避免查询到其他线程指令的预测结果,提高预测结果的准确率。
为便于理解本申请实施例提供的一种多线程处理器的指令预测方法,具体如图3a所示,包括如下步骤:
步骤301:接收来自所述多线程处理器中的第一线程的待预测分支指令;
考虑到多个线程共用分支预测器会造成不同线程分支历史之间的相互干扰,其主要原因在于不同线程的分支指令的PC地址存在相同情况。基于此,本申请实施例针对不同的线程采取独立的TID-GHR,TID-GHR中保存了每个线程以往执行过的分支跳转指令的跳转信息,TID-GHR使用一个有限宽位(Kbit)的寄存器来记录当前线程中最近执行指令的跳转情况,结果放在GHR表的右边,1表示跳转,0表示没有跳转,在指令结果执行完毕后进行更新,寄存器最左边被移除的位会被抛弃掉。其结构如图3b所示,其中,TID-GHR1~n即为多线程处理器中的1~n条线程。
相应的,本申请实施例针对每一线程设有独立的BTB,BTB结构可如图3c所示。BTB中结合不同线程下分支跳转指令的PC字段(位数可设置)来对BTB进行索引,每一线程有其独立的BTB表。每一BTB表项中含三个字段,分别为线程ID的索引字段TID、PC tags字段以及记录分支指令的目标地址信息(Branch Target Address,BTA)。通过BTB查询待预测分支指令的历史跳转地址时,若索引BTB发生命中,则可以从BTB的表项中获取分支指令的历史跳转地址;若对BTB的索引未发生命中,则在获取该分支指令的实际跳转信息后,将实际跳转信息指示的跳转地址回填到BTB中该分支指令对应的表项中。BTB的表项数与PC tags字段的位数相对应,即线程中每一分支指令在BTB中对应有唯一表项。
步骤302:从所述第一线程的GHR中获取所述第一线程的历史跳转记录,从所述第一线程的BTB中获取所述待预测分支指令的历史跳转地址;
在一些可能的实施例中,从第一线程的BTB中确定待预测分支指令的历史跳转地址时,首先获取该第一线程的TID,根据该TID即可查询到该线程中的待预测分支指令的PC地址,然后根据该PC地址对BTB中的BTA进行检索,以获取该待预测分支指令的历史跳转地址。
另考虑到部分处理器中的返回跳转指令(Return和Call)需采用返回地址栈RAS原理来给出历史跳转地址。在一些可能的实施例中,RAS可如图3d所示,RAS的Index位为5bit,即3bit的线程TID位(根据线程的数目,TID可设置,即8线程对应3bit)加上2bit的TAG位(根据RAS的条目数设置,即4条对应2bit)。这样每个线程可单独存放四条Return指令的地址。由此为图示中的每一条目添加了TID标签,确保了待预测指示的唯一。
通过上述设置使每一线程对应有唯一的BTB和GHR,以此确保当根据待预测分支指令的PC地址查询BTB时,不会误查到其他线程指令的历史跳转地址。
步骤303:基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的BHT获取所述待预测分支指令的预测结果。
前文已提及,本申请实施例中针对不同的线程采取独立的TID-GHR,并针对每一线程设有独立的BTB。因此可避免由于不同线程的分支指令存在PC地址相同的情况,导致查询错误的可能。故,在根据第一线程的GHR确定历史跳转记录并根据第一线程的BTB确定历史跳转地址后,即可根据历史跳转记录和历史跳转地址作为索引对BHT进行检索,以获取该第一线程中待预测分支指令的预测结果。
执行步骤302时,需先获取历史跳转地址中第一预设位记录的第一数据,并获取历史跳转记录中第二预设位记录的第二数据,然后通过拼接第一数据与第二数据得到待预测分支指令在BHT中的索引。最后从BHT中查询索引对应的结果得到待预测分支指令的预测结果。
本申请实施例中历史跳转地址和历史跳转记录均由有限宽位的寄存器记录,具体如图3e所示,图示中每一方块代表一位。即图3e中示出的每一历史跳转地址具有10位,每一历史跳转记录具有32位。实施时,可从历史跳转地址中选出m位(例如前三位)记录的第一数据101,并从历史跳转记录中选出n位记录(例如后4为)的第二数据1111,并进行拼接。由于存储历史跳转地址的BTB和历史跳转记录的GHR均与线程呈对应关系,故针对历史跳转地址中第一预设位记录的第一数据以及历史跳转记录中第二预设为记录的第二数据的拼接结果1011111确定待预测分支指令在BHT中的索引,可确保该索引在BHT中对应的查询结果即为该待预测分支指令的预测结果。另需说明的是,上述m位和n位可表征为寄存器记录的前几位、后几位或任一位的组合,本申请对此不作限定。
通过上述方式确定待预测分支指令在BHT中的索引后,确定BHT中与索引对应的饱和计数器,并获取饱和计数器的计数值。考虑到在主要运行包含大量不规则分支行为程序的处理器中,每个独立的预测器必须做得很大,从而带来极大的硬件开销。故本申请实施例采取多线程共享的方式设置BHT,具体如图3f所示,BHT由多个2bit饱和计数器构成,存放着所有线程下每一条分支指令PC地址对应的一个2bit饱和计数器的值,共计2k个2bit饱和计数器。
在一些可能的实施例中,获取待预测分支指令在BHT中的预测结果之后,若预测结果表征跳转,则将该待预测分支指令的历史跳转地址对应的指令加入多线程处理器的流水线,以此避免待预测分支指令执行完毕后流水线停顿,提高处理器的处理效率。相应的,若预测待预测分支指令不跳转,则将待预测分支指令的下一指令加入流水线。下一指令即为排序与待预测分支指令相邻,且排序在后的指令,排序是根据待预测分支指令所在线程中各指令的PC地址确定的。以此避免因当前未接收待预测分支指令的实际跳转信息而导致待预测分支指令执行完毕后流水线停滞的问题。
本申请实施例在接收待预测分支指令的实际跳转信息后,需基于实际跳转信息更新BHT、GHR和BTB,以提高BHT的预测准确率。实际跳转信息即为处理器对待预测分支指令的真实处理指示,实际跳转信息可包括该待预测分支指令的跳转结果和跳转地址。需要说明的是,基于实际跳转信息对BHT、GHR以及BTB更新时需在一个时钟周期内执行,以便于基于最新的数据对下一分支指令执行跳转预测,提高预测精度。
基于实际跳转信息更新BHT时,需获取历史跳转地址中第一预设位记录的第一数据,并获取历史跳转记录中第二预设位记录的第二数据,拼接第一数据与第二数据得到待预测分支指令在BHT中的索引,根据跳转结果更新BHT中索引对应的结果。仍如图3e所示,从历史跳转地址中选出m位(例如前三位)记录的第一数据101,并从历史跳转记录中选出n位记录(例如后4为)的第二数据1111,并根据拼接得到的拼接结果1011111确定该待预测分支指令的索引后,基于该索引从BHT查询该索引对应的饱和计数器。进一步的,确定待预测分支指令的预测结果与跳转结果是否相同。
需要说明的是,前文已提及BHT能够预测出待预测分支指令包含11强跳转、10弱跳转、01弱不跳转以及00强不跳转这四种状态。当BHT中饱和计数器的计数值指示为强跳转或弱跳转时,预测结果为跳转。当饱和计数器的计数值指示为强不跳转或弱不跳转时,预测结果为不跳转。因而,当实际跳转信息指示跳转时,BHT当前计数值指示为强跳转或弱跳转均表示预测正确。实际跳转信息指示不跳转时,BHT当前计数值指示强不跳转或弱不跳转均表示预测正确。
对BHT进行修正时,若实际跳转信息指示跳转结果与预测结果相同,则为当前计数值添加设定值(例如设定值为1)。相应的,若预测错误则为计数值减少设定值。例如BHT中饱和计数器当前计数值为01(弱不跳转),表征预测结果为不跳转。若实际跳转信息指示的跳转结果也为不跳转则预测正确。此时以二进制计算方式为当前计数值01添加设定值1。此时BHT中的计数值更新为10(弱跳转),即下次对该待预测分支指令的预测结果为跳转。相应的,若实际跳转信息指示的跳转结果为跳转则表征本次预测错误。此时为当前计数值01减少设定值1,此时BHT中计数值更新为00(强不跳转)。其原因在于,任一分支指令在线程内的历史跳转结果均具备线性规律,饱和计数器相当于一个基学习器,通过多次对预测并根据预测结果与跳转结果来修正饱和计数器的计数值以使预测结果愈加贴合待预测分支指令的跳转结果,从而提高BHT的预测精度。
基于实际跳转信息更新GHR时,需将GHR中第一线程的历史跳转记录向左移动一位后,将跳转结果添加到GHR中的最后一位。以图3g为例,第一线程对应的GHR将跳转记为1(包括强跳转和弱跳转),不跳转记为0(包括强不跳转和若不跳转)。若实际跳转信息指示的跳转结果为跳转,则将该GHR的历史跳转记录1011001111全部左移一位后,将最后一位添加表征跳转的1,即更新后的GHR的历史跳转记录为0110011111。
基于实际跳转信息更新BTB时,需要预先确定跳转结果是否为跳转,若跳转结果为跳转则将BTB中存储的待预测分支指令的历史跳转地址(BTA)更新为该跳转地址。若跳转结果为不跳转则不具备未录入BTA的新跳转地址,因而此时无需对BTA进行更新。
另需说明的是,由于查询待预测分支指令在BHT中的预测结果时,需基于GHR和BTB确定查询索引。因而对GHR和BTB进行更新后,需根据更新后的GHR和BTB同步更新该分支指令在BHT中对应表项名称,以确保BHT能够被准确更新。
上述流程中,多线程处理器中的每一线程均对应的唯一的GHR和BTB。因而在根据历史跳转地址和历史跳转记录确定查询索引时能够避免查询到其他线程指令的历史信息,从而降低不同线程分支历史之间的相互干扰情况,提高预测结果的准确率。相应的,本申请实施例中采用多线程共享的方式设置BHT,在提高预测准确率的基础上降低了硬件成本。并在获取到待预测分支指令的实际跳转信息后,基于实际跳转信息对BHT、GHR以及BTB进行更新,以提高下一次对该分支指令预测的精确度。
为便于理解本申请实施例提供的预测方案,具体可如图4所示,在确定待预测分支指令后,根据待预测分支指令所属线程的TID确定该指令的PC地址。进一步的,根据该PC地址从BTB中的BTA中确定该PC地址的历史跳转地址。然后从该历史跳转地址从取m位记录的数据与TID-GHR中该线程的历史跳转记录中的n位记录的数据进行拼接,即“m+n”。将拼接结果作为查询索引对多线程共享的BHT进行查询,获取BHT中针对该待预测分支指令的预测结果“11强跳转、10弱跳转、01弱不跳转、00强不跳转”。
基于相同的发明构思,本申请实施例提供了一种多线程处理器的指令预测装置500,具体如图5所示,包括:
指令获取模块501,被配置为执行接收来自所述多线程处理器中的第一线程的待预测分支指令;
信息获取模块502,被配置为执行从所述第一线程的全局历史寄存器GHR中获取所述第一线程的历史跳转记录,从所述第一线程的分支目标地址缓存BTB中获取所述待预测分支指令的历史跳转地址;
指令预测模块503,被配置为执行基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述从所述第一线程的BTB中获取所述待预测分支指令的历史跳转地址,所述信息获取模块502被配置为:
获取所述第一线程的第一线程标识;
根据所述第一线程标识确定所述待预测分支指令的程序计数PC地址;
从所述第一线程的BTB中查找所述PC地址对应的目标地址信息BTA得到所述待预测分支指令的历史跳转地址。
在一些可能的实施例中,执行所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的BHT获取所述待预测分支指令的预测结果,所述指令预测模块503被配置为:
获取所述历史跳转地址中第一预设位记录的第一数据,并获取所述历史跳转记录中第二预设位记录的第二数据;
拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的索引;
从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果,所述指令预测模块503被配置为:
确定所述BHT中与所述索引对应的饱和计数器;
获取所述饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果。
在一些可能的实施例中,执行所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果之后,所述指令预测模块503还被配置为:
获取所述待预测分支指令的实际跳转信息;
基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB。
在一些可能的实施例中,若所述实际跳转信息包括跳转结果和跳转地址,则执行所述基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB,所述指令预测模块503被配置为:
获取所述历史跳转地址中所述第一预设位记录的所述第一数据,并获取所述历史跳转记录中所述第二预设位记录的所述第二数据,拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的所述索引,根据所述跳转结果更新所述BHT中所述索引对应的结果;以及,
将所述GHR中所述第一线程的历史跳转记录向左移动一位后,将所述跳转结果添加到所述GHR中的最后一位;以及,
确定所述跳转结果是否为跳转,若确定所述跳转结果为跳转,则将所述BTB中存储的所述待预测分支指令的历史跳转地址更新为所述跳转地址。
在一些可能的实施例中,执行所述根据所述跳转结果更新所述BHT中所述索引对应的结果,所述指令预测模块503被配置为:
获取所述BHT中与所述索引对应的饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果;
确定所述待预测分支指令的预测结果与所述跳转结果是否相同;
若确定所述待预测分支指令的预测结果与所述跳转结果相同,则将所述计数值添加设定值;
若确定所述待预测分支指令的预测结果与所述跳转结果不同,则将所述计数值减少所述设定值。
下面参照图6来描述根据本申请的这种实施方式的电子设备130。图6显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的一种多线程处理器的指令预测方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种多线程处理器的指令预测方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于多线程处理器的指令预测的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和/或方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种多线程处理器的指令预测方法,其特征在于,所述方法包括:
接收来自所述多线程处理器中的第一线程的待预测分支指令;
从所述第一线程的全局历史寄存器GHR中获取所述第一线程的历史跳转记录,从所述第一线程的分支目标地址缓存BTB中获取所述待预测分支指令的历史跳转地址;
基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果。
2.根据权利要求1所述的方法,其特征在于,所述从所述第一线程的BTB中获取所述待预测分支指令的历史跳转地址,包括:
获取所述第一线程的第一线程标识;
根据所述第一线程标识确定所述待预测分支指令的程序计数PC地址;
从所述第一线程的BTB中查找所述PC地址对应的目标地址信息BTA得到所述待预测分支指令的历史跳转地址。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的BHT获取所述待预测分支指令的预测结果,包括:
获取所述历史跳转地址中第一预设位记录的第一数据,并获取所述历史跳转记录中第二预设位记录的第二数据;
拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的索引;
从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果。
4.根据权利要求3所述的方法,其特征在于,所述从所述BHT中查询所述索引对应的结果得到所述待预测分支指令的预测结果,包括:
确定所述BHT中与所述索引对应的饱和计数器;
获取所述饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果。
5.根据权利要求3所述的方法,其特征在于,所述基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果之后,所述方法还包括:
获取所述待预测分支指令的实际跳转信息;
基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB。
6.根据权利要求5所述的方法,其特征在于,若所述实际跳转信息包括跳转结果和跳转地址,则所述基于所述实际跳转信息更新所述BHT、所述GHR和所述BTB,包括:
获取所述历史跳转地址中所述第一预设位记录的所述第一数据,并获取所述历史跳转记录中所述第二预设位记录的所述第二数据,拼接所述第一数据与所述第二数据得到所述待预测分支指令在所述BHT中的所述索引,根据所述跳转结果更新所述BHT中所述索引对应的结果;以及,
将所述GHR中所述第一线程的历史跳转记录向左移动一位后,将所述跳转结果添加到所述GHR中的最后一位;以及,
确定所述跳转结果是否为跳转,若确定所述跳转结果为跳转,则将所述BTB中存储的所述待预测分支指令的历史跳转地址更新为所述跳转地址。
7.根据权利要求6所述的方法,其特征在于,所述根据所述跳转结果更新所述BHT中所述索引对应的结果,包括:
获取所述BHT中与所述索引对应的饱和计数器的计数值;
确定所述计数值对应的预测结果得到所述待预测分支指令的预测结果;
确定所述待预测分支指令的预测结果与所述跳转结果是否相同;
若确定所述待预测分支指令的预测结果与所述跳转结果相同,则将所述计数值添加设定值;
若确定所述待预测分支指令的预测结果与所述跳转结果不同,则将所述计数值减少所述设定值。
8.一种多线程处理器的指令预测装置,其特征在于,所述装置包括:
指令获取模块,被配置为执行接收来自所述多线程处理器中的第一线程的待预测分支指令;
信息获取模块,被配置为执行从所述第一线程的全局历史寄存器GHR中获取所述第一线程的历史跳转记录,从所述第一线程的分支目标地址缓存BTB中获取所述待预测分支指令的历史跳转地址;
指令预测模块,被配置为执行基于所述历史跳转地址和所述历史跳转记录从所述多线程处理器的分支历史记录BHT获取所述待预测分支指令的预测结果。
9.一种电子设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任何一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-7任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111432362.4A CN114020441B (zh) | 2021-11-29 | 2021-11-29 | 一种多线程处理器的指令预测方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111432362.4A CN114020441B (zh) | 2021-11-29 | 2021-11-29 | 一种多线程处理器的指令预测方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114020441A true CN114020441A (zh) | 2022-02-08 |
CN114020441B CN114020441B (zh) | 2023-03-21 |
Family
ID=80067543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111432362.4A Active CN114020441B (zh) | 2021-11-29 | 2021-11-29 | 一种多线程处理器的指令预测方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114020441B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093267A (zh) * | 2023-10-17 | 2023-11-21 | 北京开源芯片研究院 | 分支指令跳转地址的存储方法、装置、设备及存储介质 |
CN117389629A (zh) * | 2023-11-02 | 2024-01-12 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
CN117389629B (zh) * | 2023-11-02 | 2024-06-04 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020199091A1 (en) * | 2001-06-20 | 2002-12-26 | Fujitsu Limited | Apparatus for branch prediction based on history table |
US20070288735A1 (en) * | 2006-06-09 | 2007-12-13 | Arm Limited | Branch prediction within a multithreaded processor |
CN101477455A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 无预测延时的分支预测控制方法 |
US20110087866A1 (en) * | 2009-10-14 | 2011-04-14 | Shah Manish K | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
US20150301829A1 (en) * | 2014-04-18 | 2015-10-22 | Jeffrey W. Scott | Systems and methods for managing branch target buffers in a multi-threaded data processing system |
CN109308191A (zh) * | 2017-07-28 | 2019-02-05 | 华为技术有限公司 | 分支预测方法及装置 |
CN111078296A (zh) * | 2019-11-14 | 2020-04-28 | Harc研发中心 | 分支预测方法、分支预测单元及处理器核 |
CN112328306A (zh) * | 2020-11-06 | 2021-02-05 | 海光信息技术股份有限公司 | 一种分支预测器的隔离方法、预测方法及分支预测器 |
CN112596792A (zh) * | 2020-12-17 | 2021-04-02 | 海光信息技术股份有限公司 | 分支预测方法、装置、介质及设备 |
-
2021
- 2021-11-29 CN CN202111432362.4A patent/CN114020441B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020199091A1 (en) * | 2001-06-20 | 2002-12-26 | Fujitsu Limited | Apparatus for branch prediction based on history table |
US20070288735A1 (en) * | 2006-06-09 | 2007-12-13 | Arm Limited | Branch prediction within a multithreaded processor |
CN101477455A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 无预测延时的分支预测控制方法 |
US20110087866A1 (en) * | 2009-10-14 | 2011-04-14 | Shah Manish K | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
US20150301829A1 (en) * | 2014-04-18 | 2015-10-22 | Jeffrey W. Scott | Systems and methods for managing branch target buffers in a multi-threaded data processing system |
CN109308191A (zh) * | 2017-07-28 | 2019-02-05 | 华为技术有限公司 | 分支预测方法及装置 |
CN111078296A (zh) * | 2019-11-14 | 2020-04-28 | Harc研发中心 | 分支预测方法、分支预测单元及处理器核 |
CN112328306A (zh) * | 2020-11-06 | 2021-02-05 | 海光信息技术股份有限公司 | 一种分支预测器的隔离方法、预测方法及分支预测器 |
CN112596792A (zh) * | 2020-12-17 | 2021-04-02 | 海光信息技术股份有限公司 | 分支预测方法、装置、介质及设备 |
Non-Patent Citations (1)
Title |
---|
李静梅等: "基于同时多线程的TBHBP分支预测器研究", 《计算机科学》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093267A (zh) * | 2023-10-17 | 2023-11-21 | 北京开源芯片研究院 | 分支指令跳转地址的存储方法、装置、设备及存储介质 |
CN117093267B (zh) * | 2023-10-17 | 2023-12-22 | 北京开源芯片研究院 | 分支指令跳转地址的存储方法、装置、设备及存储介质 |
CN117389629A (zh) * | 2023-11-02 | 2024-01-12 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
CN117389629B (zh) * | 2023-11-02 | 2024-06-04 | 北京市合芯数字科技有限公司 | 分支预测方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114020441B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102934075B (zh) | 用于使用预先通知技术改变程序的顺序流程的方法和设备 | |
CN101937331B (zh) | 用于自适应处理远程原子执行的方法、设备和系统 | |
WO2015024452A1 (zh) | 一种分支预测方法及相关装置 | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
CN103809935A (zh) | 在超前运行期间管理潜在无效结果 | |
US10423420B2 (en) | Stream based branch prediction index accelerator for multiple stream exits | |
US11169807B2 (en) | System and method for dynamic accuracy and threshold control for branch classification | |
US8539212B1 (en) | Determinative branch prediction indexing | |
CN114020441B (zh) | 一种多线程处理器的指令预测方法及相关装置 | |
US20140229719A1 (en) | Method and Apparatus for Branch Prediction | |
US20180004527A1 (en) | Operation of a multi-slice processor implementing prioritized dependency chain resolution | |
CN116737240A (zh) | 分支预测方法、装置、处理器、介质及设备 | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
US8909907B2 (en) | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction | |
US9652245B2 (en) | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses | |
CN111078295B (zh) | 一种乱序高性能核的混合分支预测装置及方法 | |
US10241905B2 (en) | Managing an effective address table in a multi-slice processor | |
US11526360B2 (en) | Adaptive utilization mechanism for a first-line defense branch predictor | |
US20050114637A1 (en) | Branch prediction apparatus, systems, and methods | |
US11693588B2 (en) | Precise longitudinal monitoring of memory operations | |
CN114610388A (zh) | 一种指令跳转方法、处理器及电子设备 | |
US10185568B2 (en) | Annotation logic for dynamic instruction lookahead distance determination | |
EP2348400A1 (en) | Arithmetic processor, information processor, and pipeline control method of arithmetic processor | |
US11847458B2 (en) | Thread priorities using misprediction rate and speculative depth | |
WO2013101048A1 (en) | Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure |
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 |