CN102306094B - 实现现代处理器间接转移预测的装置及方法 - Google Patents

实现现代处理器间接转移预测的装置及方法 Download PDF

Info

Publication number
CN102306094B
CN102306094B CN201110235512.2A CN201110235512A CN102306094B CN 102306094 B CN102306094 B CN 102306094B CN 201110235512 A CN201110235512 A CN 201110235512A CN 102306094 B CN102306094 B CN 102306094B
Authority
CN
China
Prior art keywords
destination address
item
object pointer
branch
address
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
CN201110235512.2A
Other languages
English (en)
Other versions
CN102306094A (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.)
Beijing Zhongzhi Core Technology Co Ltd
Original Assignee
BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
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 BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING filed Critical BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
Priority to CN201110235512.2A priority Critical patent/CN102306094B/zh
Publication of CN102306094A publication Critical patent/CN102306094A/zh
Application granted granted Critical
Publication of CN102306094B publication Critical patent/CN102306094B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30061Multi-way branch instructions, e.g. CASE

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

实现现代处理器间接转移预测的装置及方法
技术领域
本发明涉及现代微处理器及其应用系统的设计,尤其涉及实现现代处理器间接转移指令预测的装置及方法。
背景技术
现代高性能处理器利用分支指令预测技术开发指令级并行,从而提高处理器性能。之前的研究主要集中在开发高准确率的直接转移指令预测技术,而对于间接转移指令预测,通常很难达到较高的准确率。近年来,随着面向对象语言程序的广泛应用,间接转移指令使用的场合也更多了起来。该类型指令通常用于实现虚函数指针、函数指针以及Switch-Case语句等常见的数据结构。此外,Intel Pentium M处理器中也已经加入了专用的间接转移预测部件。因此,提高间接转移预测的准确率,对处理器性能的提升具有重要意义。
间接转移指令的转移目标地址保存在其指令指定的寄存器中,该寄存器中的值可能会随着程序的执行而发生各种变化,即可能存在多个转移目标地址。现代处理器通常使用分支目标缓冲器(BTB,Branch Target Buffer)和方向预测器对分支指令进行预测。其中,BTB用来负责记录分支转移指令的目标地址,而方向预测器则用来预测该分支转移指令执行的方向,即预测是否进行转移。然而,这种传统的分支转移预测方式对直接转移有着很高的分支转移预测效率,但是对间接转移指令的预测准确率却很低。首先,是由于方向预测器总是预测跳转与否(在使用预译码的处理器中,间接转移指令必定会跳转,故分支方向预测器不必对该类指令的方向进行预测);其次,由于BTB结构是一种缓存(Cache)结构,其记录的每个目标地址只能使用指令地址进行索引,即每个分支指令最多只有一个目标地址与之对应,如图1所示。因此,BTB结构只能记录最近一次间接转移指令的目标地址。当间接转移指令拥有多个目标地址时,BTB的预测准确率会很低。
已有的一些使用专用部件的间接转移预测技术,可以有效地提升间接转移预测准确率。Chang等人提出的TTC结构,使用记录在全局历史寄存器(GHR,Global History Register)中的分支转移历史信息区分不同的间接转移场景,并使用一个类似Cache结构的专用结构记录各个间接转移场景下间接转移目标地址及其索引,如图2所示,其设计类似两级分支预测方案(即异或器XOR前的一级与XOR后的一级)。当取得一条间接转移指令时,TTC预测器(其结构如图2所示右端)通过异或器XOR获取程序计数器(PC)和分支转移历史信息(GHR)的异或值作为索引,获得预测的目标地址。当该间接转移指令提交时,使用正确的目标地址更新对应的TTC项。
通过组合使用多个目标地址预测器,Driesen等人提出了另一种直接地址预测技术,即Cascade预测器。该方法对于可简单预测(只有一个目标地址)的间接转移指令使用简单的一级预测器预测(通常为BTB结构),而对于拥有多个目标地址的间接转移指令,使用复杂的二级或多级预测器进行预测。Seznec和Michaud提出了与该设计非常类似的一种预测器,由一个基础预测器及一系列能够捕捉非常长的历史信息的预测表组成;在预测时,选择历史信息最长的预测表中的命中项值作为输出结果。
虚拟程序计数器(VPC,Virtual Program Counter)预测技术,侧重于使用已有的条件转移预测部件进行间接转移预测,它是将一条具多个目标地址的间接转移指令的每个目标地址等价地表示成一个虚拟的条件分支转移指令的转移目标地址;当进行间接转移指令预测时,VPC每个周期以不同的虚拟分支指令循环访问条件分支预测器,如图3所示,直到一条虚拟指令被预测为发生或达到循环访问的上界时才停止预测。该VPC技术的效果,与流水线的长度以及间接转移目标地址的数目密切相关。
以上研究提出的基于硬件的间接转移预测技术,使用分支转移历史信息(GHR)区分不同的间接转移场景,并直接将对应不同转移场景的目标地址保存在一个专用的存储部件中。这种使用专用部件一类技术的预测速度较快,但其额外的存储单元需求会在芯片中占用一定面积,并产生大量的能耗。而侧重使用已有分支预测部件的VPC技术虽可以取得较高的预测准确率,但这种需要多次循环才能完成一次间接转移的预测,一方面会阻碍处理器性能的进一步提升,另一方面会带来更多的能耗开销,从而导致处理器的能效性降低。
发明内容
本发明所要解决的技术问题是提供一种实现现代处理器间接转移预测的装置及方法,能够在提高预测准确率的同时提高处理器的能效性。
为了解决上述技术问题,本发明提供了一种实现现代处理器间接转移预测的装置,其特征在于,包括分支方向预测器、目标地址映射装置以及分支目标缓冲器,其中:
分支方向预测器,用于根据定义的多个子预测器预测的间接转移方向生成目标指针;
目标地址映射装置,用于将分支方向预测器生成的目标指针映射为索引分支目标缓冲器的虚拟地址;
分支目标缓冲器,用于为间接转移指令分配目标地址项和分配项,其中,目标地址项通过虚拟地址索引;分配项记录每一间接转移指令目标地址项的使用情况,通过程序计数器的值索引。
进一步地,目标地址映射装置包括目标指针寄存器、虚拟地址映射器以及第一多选器,其中:
分支方向预测器根据定义的4个子预测器预测的间接转移方向生成4位目标指针;
目标指针寄存器,用于保存分支方向预测器生成的4位目标指针;
虚拟地址映射器,用于根据目标指针寄存器保存的4位目标指针通过计算映射式FA=f(PC,TP)生成索引目标地址项的虚拟地址;式中,TP为目标指针,FA为虚拟地址,PC为程序计数器的值;
第一多选器,用于选择通过所述PC访问分配项的第一索引和通过虚拟地址访问目标地址项的第二索引。
进一步地,
虚拟地址映射器包括第一异或器和第二异或器,其中第一异或器用于将所述PC的最高4位与4位目标指针相异或;第二异或器用于将PC的最低4位与一个常数相异或;将第一异或器和第二异或器的结果组合,构成虚拟地址;
或者,虚拟地址映射器包括第一加法器和第二加法器,其中第一加法器用于将PC的最高4位与4位目标指针相加;第二加法器用于将PC的最低4位与一个常数相加;将第一加法器和第二加法器的结果组合,构成虚拟地址。
进一步地,目标地址映射装置还包括训练循环计数器和第二多选器,其中:
训练循环计数器,用于输出循环计数值;
第二多选器,用于在预测时选择输出目标指针寄存器生成的目标指针,在出现预测错误时选择输出训练循环计数器输出的循环计数值作为更新的目标指针;
虚拟地址映射器根据第二多选器输出的目标指针,通过计算映射式生成虚拟地址。
进一步地,
分支目标缓冲器中分配项的记录用于作为遍历间接转移指令全部已分配的目标地址项的依据,遍历情况用于作为更新分配项或目标指针的依据;遍历情况及其更新包括以下三种中任意一种:
第一种,遍历时一旦出现使用一个目标指针访问分支目标缓冲器而未命中的情况,则将分配项中的对应位更新为未使用状态;
第二种,遍历时如果一个目标地址项中的目标地址与正确的目标地址相同,则更新相应的目标指针指向该目标地址项,将正确目标指针的对应位作为训练目标进行训练;
第三种,遍历时如果遍历全部已分配的目标地址项后,没有找到与正确地址匹配的目标地址项,则根据分配项中记录的信息,随机地分配一个新的目标地址项或替换一项已使用的目标地址项来记录正确的目标地址,并更新相应的目标指针指向该目标地址项,以及训练分支方向预测器。
为了解决上述技术问题,本发明提供了一种实现现代处理器间接转移预测的方法,涉及分支方向预测器和分支目标缓冲器,该方法包括:
在分支方向预测器中定义多个子预测器,每一个子预测器预测的间接转移方向作为目标指针的每一位,通过目标指针映射生成索引分支目标缓冲器的虚拟地址;
在分支目标缓冲器中为每一间接转移指令分配目标地址项和分配项,其中,目标地址项通过目标指针映射的虚拟地址索引;分配项用于记录每一间接转移指令目标地址项的使用情况,并通过程序计数器的值索引。
进一步地,当处理器获取一条间接转移指令要进行预测时,同时执行以下步骤:
通过程序计数器的值访问分支目标缓冲器;若访问命中,则将命中项作为该间接转移指令的分配项;否则,暂停取指,直到在流水线中获得实际的间接转移目标地址为止;
通过分支方向预测器中定义的4个子预测器获得4位目标指针,通过计算映射式FA=f(PC,TP)生成虚拟地址;在该计算映射式中,该TP为4位目标指针,该FA为生成的虚拟地址,该PC为程序计数器的值。
进一步地,该方法还包括:
在预测的下一周期,使用虚拟地址再次访问分支目标缓冲器,以获得预测的间接转移目标地址。
进一步地,该方法还包括:
在出现预测错误时选择一训练循环计数器输出的循环计数值作为更新的目标指针;
分支目标缓冲器将分配项作为遍历间接转移指令全部已分配的目标地址项的依据,遍历情况用于作为更新所述分配项或目标指针的依据;遍历情况及其更新包括以下三种中任意一种:
第一种,遍历时一旦出现使用一个目标指针访问分支目标缓冲器而未命中的情况,则将分配项中的对应位更新为未使用状态;
第二种,遍历时如果一个目标地址项中的目标地址与正确的目标地址相同,则更新相应的目标指针指向该目标地址项,将正确目标指针的对应位作为训练目标进行训练;
第三种,遍历时如果遍历全部已分配的目标地址项后,没有找到与正确地址匹配的目标地址项,则根据分配项中记录的信息,随机地分配一个新的目标地址项或替换一项已使用的目标地址项来记录正确的目标地址,并更新相应的目标指针指向该目标地址项,以及训练分支方向预测器。
本发明提供的现代处理器实现间接转移预测的装置及方法实施例,使用指针结构,并融入快速、高准确率的分支方向预测器,将其进行拓展和重定义;通过指针结构并使用计算方式替代原有的存储方式可以快速索引到BTB中的目标地址,在不需要大容量存储结构支持的基础上,以与已有的间接转移预测技术类似的时间代价,换取同时提高预测准确率和处理器能效的效果,且能有效地避免存储目标地址易出现的错误。
附图说明
图1为现有的BTB结构的目标地址预测机制示意图;
图2为现有的TTC结构与BTB关系示意图(左)以及TTC内部结构示意图(右);
图3为现有的采用VPC技术的预测流程图;
图4为本发明的间接转移预测的装置及方法中目标指针映射关系示意图;
图5为现有的O-GEHL预测器原有结构示意图;
图6为本发明的间接转移预测装置实施例的结构示意图;
图7是在本发明的间接转移预测装置实施例中O-GEHL预测器的改进结构示意图;
图8为是用来说明如何使用本发明的间接转移预测装置及方法而给出的间接转移指令的程序实例;
图9为本发明的间接转移预测的方法实施例的流程。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明的技术方案。
本发明提供的实现现代处理器间接转移预测的方法及装置,具有以下三个关键点:
1)如何将同一间接转移指令的多个目标地址存入目标地址预测结构中;
2)如何辨识不同的间接转移场景,并与目标地址相对应;
3)当发生预测错误时如何进行更新。
针对上述三个问题,本发明分别采用以下方式予以解决:
本发明在取得一条间接转移指令时,通过经重定义的分支方向预测器识别间接转移场景,从而生成目标指针;通过目标指针映射到同一间接转移指令的多目标地址,如图4所示。
发现预测错误时,更新重定义的分支方向预测器,以生成正确的目标指针。
(1)间接转移场景的映射
每一种间接转移场景与一个目标指针相对应,即建立间接转移场景与目标指针之间的映射关系。
为了适应高性能的分支预测结构,本发明采用了一种简单而高效的方法来生成目标指针,即在现有的分支方向预测器构建数个较小的同类型预测器,被称为子预测器,请参见图7,其运行机制与原有的分支方向预测器相同,但使用较少的历史信息。本发明将每个子预测器的输出“跳转/不跳转”的方向,定义为目标指针寄存器的每一位的“1/0”。由此,生成4位的目标指针需要4个子预测器。换言之,本发明通过使用4个独立的小预测器来获得4位的目标指针预测值。
对于条件转移指令,其预测方式不受本发明在分支方向预测器中的子预测器的影响,与原有的预测机制相同。
由于本发明依赖于分支方向预测器通过目标指针对间接转移目标进行预测,因此高准确率的分支方向预测器对本发明有着积极的影响。下面以一种现有的基于计算处理的分支方向预测器O-GEHL为例,具体介绍本发明的间接转移预测结构中对间接转移场景映射的实现。
由Seznec等人提出的O-GEHL分支方向预测器(以下简称O-GEHL预测器)的结构如图5所示,具有使用100~200位(bit)长的全局转移历史信息,故对条件转移指令的预测具有相当高的准确率。
该O-GEHL预测器实现了n+1个由不同转移历史长度索引的预测表(PHT0~n)。其中,预测表中每一项为一个4位(或5位)饱和计数器。各预测表用于生成索引的转移历史信息长度形成一个几何序列,L(j)=αj-1L(1)(1<j<n)。该索引机制可同时捕捉距离当前条件转移指令非常近和非常远的转移历史信息,并通过使用动态历史调整和动态阈值调整技术,取得更高的预测准确率。O-GEHL预测器在进行条件转移预测时,将各个预测表的输出相加,如果结果为正,则预测跳转;否则预测不跳转,即是否跳转的方向取决于加法运算的符号。在更新时,向实际运算结果方向自增或自减,直至到达各个预测表饱和计数值阈值。
本发明基于O-GEHL预测器的间接转移场景映射具体实现方法如下:
将O-GEHL预测器中预测表分为4组,每组预测表组成一个O-GEHL子预测器,请参见图6所示;其中,每个O-GEHL子预测器预测1位目标指针,共形成4位目标指针。
考虑到子预测器相对原有的O-GEHL预测器使用的预测表数目较少,为了保证O-GEHL预测机制的高预测准确率,每个子预测器只使用距离当前间接转移指令最近的32位转移历史信息生成预测表索引,预测表索引生成算法与O-GEHL机制相同。
现有的基于计算处理的O-GEHL预测器由于使用更长的历史信息,并通过计算方式减少别名冲突问题带来的影响,因而方向预测准确率更高。对于这类预测器,目标指针不是直接保存在预测表中,而是通过计算方式形成;由此可避免因存储显著改变参与计算的参数值使计算结果发生改变而导致的预测错误。例如,如果将目标指针‘1000’直接存储在某个预测表的表项中,则可能会出现将‘0000’改为‘1000’的情况,亦即将计算参数由0改变为-8,该改变可能会造成计算结果符号的改变,从而影响原有的预测机制,造成条件转移预测错误。
当然,本发明的间接转移场景映射不限于基于O-GEHL预测器,也可以基于类似的其它分支方向预测器实现映射。
(2)同一间接转移指令的多目标地址映射
区别于传统的BTB结构,本发明的间接转移预测的装置结构中一条间接转移指令占用多个BTB项,从功能上将这些项划分为目标地址项(图中可简称目标项)和分配项。
目标地址项用于存储一条间接转移指令的目标地址,每个目标地址项由目标指针生成的虚拟地址进行索引。随着程序的运行,根据该条间接转移指令出现过的目标地址动态地分配目标地址项。通过以往分析和评测结果表明,大多数评测程序中一条间接转移指令的目标地址不会超过16个。基于此种情况,本发明为一条间接转移指令最多分配16个目标地址项。如果一条间接转移指令的目标地址超过16个,则将最新遇到的目标地址替换已有的目标地址项,即以最新遇到目标地址来刷新一已有的目标地址项。
由于程序运行时可能占用多个目标地址项,本发明通过分配项来记录每个间接转移指令目标地址项的使用情况。譬如通过一个16位或更多位的寄存器作为分配项,其中每一位对应于间接转移指令的一目标地址项的使用情况,如值1为使用,值0为未使用。为了在预测时尽快确认BTB中是否存在该间接转移指令的目标地址项,分配项在BTB中使用PC直接索引。
在本发明的间接转移预测的装置实施例中,创建目标指针,该目标指针指向BTB中存储的目标地址项,以此实现目标地址的映射。每个目标指针对应一个目标地址项,因此对于一个间接转移指令,最多可拥有16个目标指针。这些指针譬如使用4位数值表示。
其中,每个目标指针(TP,Target Pointer)用以生成索引每个目标地址项的虚拟地址(FA,Fake Address),该虚拟地址的位数与PC相同。不同的目标指针会生成不同的FA,即FA=f(PC,TP)。
一种简单的映射方式是将PC的最高4位和最低4位分别与目标指针以及一个常数异或。当然,也可以采用将PC的最高4位和最低4位分别与目标指针以及一个常数相加的映射方式。这种通过计算处理实现映射的方式可以将生成的FA广泛地散列分布在BTB中,以减少间接转移目标之间的冲突以及与条件转移目标之间的冲突。
(3)更新机制
更新时,每个子预测器将目标指针的对应位作为该预测器的训练目标进行更新。
如果间接转移指令提交时发现预测正确,本发明对BTB的操作与条件转移指令更新BTB时相同。一旦发现预测错误,本发明需要更新子预测器以生成正确的目标指针,以使间接转移场景映射到BTB中正确的目标地址项。
预测通常会产生如下两类错误:
1)目标指针错误:BTB中一个目标地址项已存放了正确的间接转移地址,但目标指针映射到了其他目标地址项;该情况主要是由于分支方向预测器中条件转移方向预测与目标指针预测的别名冲突所致。
2)目标指针无意义:BTB中没有目标地址项存储正确目标地址,因此目标指针无意义;该情况主要是由于BTB中记录间接转移目标地址时的义务失效所致。
为了能够区分上述两种情况并据此更新分配项,本发明需要根据分配项中的记录,遍历BTB中该间接转移指令全部已分配的目标地址项。该遍历过程可能需要多个周期完成。然而,由于本发明只需访问那些已分配的目标地址项(根据分配项中记录的信息确定),它相比于VPC技术需要遍历全部间接转移目标地址存储项而言,已较大幅降低了更新所需花费的时间代价。
本发明在上述遍历过程中通过依次生成目标指针映射到虚拟地址(FA),遍历BTB中已分配的目标地址项:
1)分配项的更新:
遍历时,一旦出现某个FA访问BTB失效的情况,说明其索引的目标地址项已被其它分支指令替换,此时需要将分配项中的对应位更新为未使用状态。
2)指针错误情况更新:
如果某个目标地址项中的目标地址与正确目标地址相同,则更新目标指针来指向该目标地址项:由于每个子预测器的更新机制与原有预测器的更新机制相同,故只需将正确目标指针的对应位作为训练目标进行训练即可。
3)无意义指针情况更新:
如果遍历全部的地址仍没有发现与正确地址匹配的目标地址项,则需要根据分配项中的信息,随机分配一个新的目标地址项或替换一个已使用的目标地址项来记录正确的目标地址,并训练分支方向预测器。
本发明提供的间接转移预测的装置实施例,其结构如图7所示,包括分支方向预测器、目标地址映射装置(图7中虚线所框部分)以及BTB,其中:
分支方向预测器,用于根据定义的多个子预测器预测的间接转移方向生成目标指针;
目标地址映射装置,用于将分支方向预测器生成的目标指针映射为索引BTB中目标地址项的虚拟地址;
BTB,用于为间接转移指令分配目标地址项和分配项,其中,目标地址项通过所述虚拟地址索引;分配项记录每一间接转移指令目标地址项的使用情况,通过PC的值索引。
在图7中所示的目标地址映射装置实施例中,包括目标指针寄存器、虚拟地址映射器以及第一多选器,其中:
分支方向预测器根据定义的4个子预测器预测的间接转移方向生成4位目标指针;
目标指针寄存器,用于保存分支方向预测器生成的4位目标指针;
虚拟地址映射器,用于根据目标指针寄存器保存的4位目标指针通过计算映射FA=f(PC,TP)生成索引目标地址项的虚拟地址,式中TP为目标指针,FA为虚拟地址,PC为程序计数器的值;
第一多选器,用于选择通过PC的值访问BTB中分配项的第一索引和通过虚拟地址访问BTB中目标地址项的第二索引。
在图7中所示的目标地址映射装置实施例中,
虚拟地址映射器包括第一异或器和第二异或器,其中第一异或器用于将PC的最高4位与目标指针相异或;第二异或器用于将PC的最低4位与一个常数相异或;将第一异或器和第二异或器的结果组合,构成虚拟地址;
或者,虚拟地址映射器包括第一加法器和第二加法器,其中第一加法器用于将PC的最高4位与目标指针相加;第二加法器用于将PC的最低4位与一个常数相加;将第一加法器和第二加法器的结果组合,构成虚拟地址。
在图7中所示的目标地址映射装置实施例中,还包括训练循环计数器和第二多选器,其中:
训练循环计数器,用于输出循环计数值;
第二多选器,用于在预测时选择输出目标指针寄存器生成的目标指针,在出现预测错误时选择输出训练循环计数器输出的循环计数值作为更新的目标指针;
虚拟地址映射器根据第二多选器输出的目标指针计算生成虚拟地址。
在图7中所示的目标地址映射装置实施例中,BTB的分配项的记录用于作为遍历间接转移指令全部已分配的目标地址项的依据,遍历情况用于作为更新分配项或目标指针的依据,遍历情况及其更新包括以下三种中任意一种:
第一种,遍历时一旦出现使用某个目标指针访问BTB而未命中的情况,则将分配项中的对应位更新为未使用状态;
第二种,遍历时如果一个目标地址项中的目标地址与正确的目标地址相同,则更新相应的目标指针指向该目标地址项,将正确目标指针的对应位作为训练目标进行训练;
第三种,遍历时如果遍历全部已分配的目标地址项后,没有找到与正确地址匹配的目标地址项,则根据分配项中的信息,随机地分配一个新的目标地址项或替换一项已使用的目标地址项来记录正确的目标地址,并更新相应的目标指针指向该目标地址项,以及训练分支方向预测器。
本发明对基于O-GEHL预测器的间接转移场景映射为目标地址进行了如下修改:
1)增加目标指针寄存器,用于在预测时保存4位目标指针;
2)增加2个XOR或加法器,用于计算FA,并在BTB输入端增加1个第一多选器,选择PC或FA作为BTB访问地址;
3)增加1个循环计数器,在更新时根据分配项中信息产生遍历的目标指针;并增加1个第二多选器,选择在预测时的目标指针或预测出现错误时更新的目标指针;
4)增加分配项寄存器,以便在整条流水线中携带该分配项的信息。
如图6所示,表示了本发明基于现有的O-GEHL预测器所进行的修改(图6中灰色部件为本发明需要加入的部件):
1)增加Hash变换使用全局历史寄存器(GHR)生成子预测器索引,并增加多选器选择原始索引值或子预测器索引值;
2)增加4个加法器(图6中用∑表示),每个加法器有5位,用以计算每个子预测器的预测结果;并增加多选器,选择目标指针的对应位作为子预测器的更新目标。
本发明的间接转移预测的方法实施例流程,其流程可参见图9,包括如下两个步骤:
当处理器获取一条间接转移指令时,通过PC访问BTB和分支方向预测器;其中,具体包括:
如果首次访问BTB命中,则表示在BTB中存有该间接转移指令的目标地址项,该命中项即为该间接转移指令的分配项;否则,暂停取指,直到在流水线中获得实际的间接转移目标地址为止。
使用分支方向预测器中的子预测器获得目标指针(TP),通过FA=f(PC,TP)计算得到虚拟地址(FA)。
在下一周期,使用FA二次访问BTB,以获得预测的间接转移目标地址。
如果访问BTB命中,即BTB项有效且标签域和间接转移地址匹配,则将存储的目标地址发送到指令缓存和流水线中;否则,暂停预测,直到从流水线中获得实际的转移目标地址为止。
如图8所示,表示的是C++程序Richards中的虚函数调用片段,以期说明本发明如何使用目标指针快速准确地进行间接转移指令的预测。
Richards程序模拟了操作系统中任务调度行为,并被用于评测间接转移预测器的性能。该段程序中父类TaskControlBlock定义了一个ActionFunc的虚函数,并在4个子类中定义了不同的ActionFunc行为。
该程序片段中第25行的ActionFunc函数调用,对应一条间接转移指令:jsr$26,($27),0。随着程序的执行,不同的子类调用RunTask函数时,会调用各个子类下的ActionFunc函数,即间接转移指令的目标地址不同($27不同)。例如,DeviceTCB子类调用RunTask函数时,会使用DeviceTCB下定义的ActionFunc实现。
程序执行实现虚函数调用时,使用本发明的机制进行间接转移预测的流程,如图9所示。当取得该间接转移指令时,分支方向预测器中的子预测器使用GHR的低32位生成预测表索引(请参见图6),并通过加法计算生成目标指针的对应位。DeviceTCB调用时,生成的目标指针为‘1011’。该目标指针生成对应的FA,以访问BTB获得DeviceTCB下定义的ActionFunc函数的入口地址。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。

Claims (7)

1.一种实现现代处理器间接转移预测的装置,其特征在于,包括分支方向预测器、目标地址映射装置以及分支目标缓冲器,其中:
分支方向预测器,用于根据定义的多个子预测器预测的间接转移方向生成目标指针;
目标地址映射装置,用于将分支方向预测器生成的目标指针映射为索引分支目标缓冲器的虚拟地址;
分支目标缓冲器,用于为间接转移指令分配目标地址项和分配项,所述目标地址项通过所述虚拟地址索引;所述分配项记录每一间接转移指令目标地址项的使用情况,通过程序计数器的值索引;
所述目标地址映射装置包括目标指针寄存器、虚拟地址映射器以及第一多选器,其中:
所述分支方向预测器根据定义的4个子预测器预测的间接转移方向生成4位目标指针;
目标指针寄存器,用于保存所述分支方向预测器生成的4位目标指针;
虚拟地址映射器,用于根据目标指针寄存器保存的所述4位目标指针通过计算映射式FA=f(PC,TP)生成索引目标地址项的虚拟地址;在该计算映射式中,该TP为目标指针,该FA为虚拟地址,该PC为程序计数器的值;
第一多选器,用于选择通过所述PC访问所述分配项的第一索引和通过虚拟地址访问所述目标地址项的第二索引。
2.按照权利要求1所述的装置,其特征在于,
所述虚拟地址映射器包括第一异或器和第二异或器,其中第一异或器用于将所述PC的最高4位与所述4位目标指针相异或;第二异或器用于将所述PC的最低4位与一个常数相异或;将第一异或器和第二异或器的结果组合,构成所述虚拟地址;
或者,所述虚拟地址映射器包括第一加法器和第二加法器,其中第一加法器用于将所述PC的最高4位与所述4位目标指针相加;第二加法器用于将PC的最低4位与一个常数相加;将第一加法器和第二加法器的结果组合,构成所述虚拟地址。
3.按照权利要求1所述的装置,其特征在于,所述目标地址映射装置还包括训练循环计数器和第二多选器,其中:
训练循环计数器,用于输出循环计数值;
第二多选器,用于在预测时选择输出所述目标指针寄存器生成的目标指针,在出现预测错误时选择输出训练循环计数器输出的所述循环计数值作为更新的目标指针;
所述虚拟地址映射器根据第二多选器输出的目标指针,通过所述计算映射式生成虚拟地址。
4.按照权利要求3所述的装置,其特征在于,
所述分支目标缓冲器中所述分配项的记录用于作为遍历间接转移指令全部已分配的目标地址项的依据,遍历情况用于作为更新所述分配项或所述目标指针的依据;所述遍历情况及其更新包括以下三种中任意一种:
第一种,遍历时一旦出现使用一个目标指针访问所述分支目标缓冲器而未命中的情况,则将分配项中的对应位更新为未使用状态;
第二种,遍历时如果一个目标地址项中的目标地址与正确的目标地址相同,则更新相应的目标指针指向该目标地址项,将正确目标指针的对应位作为训练目标进行训练;
第三种,遍历时如果遍历全部已分配的目标地址项后,没有找到与正确地址匹配的目标地址项,则根据所述分配项中记录的信息,随机地分配一个新的目标地址项或替换一项已使用的目标地址项来记录正确的目标地址,并更新相应的目标指针指向该目标地址项,以及训练所述分支方向预测器。
5.一种实现现代处理器间接转移预测的方法,涉及分支方向预测器和分支目标缓冲器,该方法包括:
在分支方向预测器中定义多个子预测器,每一个子预测器预测的间接转移方向作为目标指针的每一位,通过所述目标指针映射生成索引分支目标缓冲器的虚拟地址;
在分支目标缓冲器中为每一间接转移指令分配目标地址项和分配项,其中,所述目标地址项通过目标指针映射的虚拟地址索引;所述分配项用于记录每一间接转移指令目标地址项的使用情况,并通过程序计数器的值索引;
当所述处理器获取一条间接转移指令要进行预测时,同时执行以下步骤:
通过所述程序计数器的值访问所述分支目标缓冲器;若所述访问命中,则将命中项作为该间接转移指令的所述分配项;否则,暂停取指,直到在流水线中获得实际的间接转移目标地址为止;
通过所述分支方向预测器中定义的4个子预测器获得4位目标指针,通过计算映射式FA=f(PC,TP)生成所述虚拟地址;在该计算映射式中,该TP为所述4位目标指针,该FA为生成的所述虚拟地址,该PC为所述程序计数器的值。
6.按照权利要求5所述的方法,其特征在于,还包括:
在所述预测的下一周期,使用所述虚拟地址再次访问所述分支目标缓冲器,以获得预测的间接转移目标地址。
7.按照权利要求6所述的方法,其特征在于,还包括:
在出现预测错误时选择一训练循环计数器输出的循环计数值作为更新的目标指针;
所述分支目标缓冲器将所述分配项作为遍历间接转移指令全部已分配的目标地址项的依据,遍历情况用于作为更新所述分配项或所述目标指针的依据;所述遍历情况及其更新包括以下三种中任意一种:
第一种,遍历时一旦出现使用一个目标指针访问所述分支目标缓冲器而未命中的情况,则将分配项中的对应位更新为未使用状态;
第二种,遍历时如果一个目标地址项中的目标地址与正确的目标地址相同,则更新相应的目标指针指向该目标地址项,将正确目标指针的对应位作为训练目标进行训练;
第三种,遍历时如果遍历全部已分配的目标地址项后,没有找到与正确地址匹配的目标地址项,则根据所述分配项中记录的信息,随机地分配一个新的目标地址项或替换一项已使用的目标地址项来记录正确的目标地址,并更新相应的目标指针指向该目标地址项,以及训练所述分支方向预测器。
CN201110235512.2A 2011-08-16 2011-08-16 实现现代处理器间接转移预测的装置及方法 Active CN102306094B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110235512.2A CN102306094B (zh) 2011-08-16 2011-08-16 实现现代处理器间接转移预测的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110235512.2A CN102306094B (zh) 2011-08-16 2011-08-16 实现现代处理器间接转移预测的装置及方法

Publications (2)

Publication Number Publication Date
CN102306094A CN102306094A (zh) 2012-01-04
CN102306094B true CN102306094B (zh) 2014-03-26

Family

ID=45379960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110235512.2A Active CN102306094B (zh) 2011-08-16 2011-08-16 实现现代处理器间接转移预测的装置及方法

Country Status (1)

Country Link
CN (1) CN102306094B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294518B (zh) * 2012-12-31 2016-04-27 北京北大众志微系统科技有限责任公司 一种解释器中间接跳转预测方法及系统
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
CN106843812A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种实现间接转移关联软件预测的方法及装置
CN110347432B (zh) * 2019-06-17 2021-09-14 海光信息技术股份有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
CN110336803B (zh) * 2019-06-21 2020-08-11 中国科学院软件研究所 一种目标主机分支预测单元的安全性评估方法
CN111638912B (zh) * 2019-09-19 2023-03-10 中国科学院信息工程研究所 一种轻量级的处理器芯片分支预测器内容隔离方法及电子装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328664A (zh) * 1998-09-08 2001-12-26 英特尔公司 利用第二级分支预测表的分支预测的方法和设备
US6609194B1 (en) * 1999-11-12 2003-08-19 Ip-First, Llc Apparatus for performing branch target address calculation based on branch type

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328664A (zh) * 1998-09-08 2001-12-26 英特尔公司 利用第二级分支预测表的分支预测的方法和设备
US6609194B1 (en) * 1999-11-12 2003-08-19 Ip-First, Llc Apparatus for performing branch target address calculation based on branch type

Also Published As

Publication number Publication date
CN102306094A (zh) 2012-01-04

Similar Documents

Publication Publication Date Title
CN102306094B (zh) 实现现代处理器间接转移预测的装置及方法
CN102306093B (zh) 实现现代处理器间接转移预测的装置及方法
US10209993B2 (en) Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes
CN102160033B (zh) 具有稀疏和密集预测缓存的复合分支预测装置
CN105701022B (zh) 组相联高速缓存
CN105701032B (zh) 具备多种替换策略的组相联高速缓存存储器
CN105701023A (zh) 考虑到内存访问类型的快取内存替换策略
CN104978282A (zh) 一种缓存系统和方法
CN105701034A (zh) 基于内存访问类型以分路来分配的快取内存
KR20140014070A (ko) 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN102841865A (zh) 高性能缓存系统和方法
CN105718241A (zh) 一种基于sparc v8体系结构的分类式混合分支预测系统
CN104731719A (zh) 一种缓存系统和方法
US20190138315A1 (en) Program flow prediction
CN101763249A (zh) 对非控制流指令减少分支检验
CN102830954B (zh) 指令调度方法及装置
US20190065205A1 (en) Variable length instruction processor system and method
CN104246695A (zh) 嵌套仿真和动态链接环境
CN101158925A (zh) 用于支持跟踪和标准高速缓存行的同时存储的装置和方法
CN101140512B (zh) 使用计算历史进行预测的处理器及系统
US8359435B2 (en) Optimization of software instruction cache by line re-ordering
US9626293B2 (en) Single-thread cache miss rate estimation
CN108304218A (zh) 一种汇编代码的编写方法、装置、系统和可读存储介质
US20130061213A1 (en) Methods and systems for optimizing execution of a program in a parallel processing environment
CN101916184B (zh) 更新微处理器中的分支目标地址快取的方法及其微处理器

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160330

Address after: 100080 Beijing City, Haidian District Zhongguancun No. 151 North Street Yanyuan resources building room 1107

Patentee after: Beijing Zhongzhi core technology Co. Ltd.

Address before: 100080, Beijing Haidian District Zhongguancun 151 North Street, building 11, resources

Patentee before: Beida Zhongzhi Microsystem Science and Technology Co., Ltd., Beijing