CN116194886A - 使用超矢量的分支预测 - Google Patents
使用超矢量的分支预测 Download PDFInfo
- Publication number
- CN116194886A CN116194886A CN202080105398.9A CN202080105398A CN116194886A CN 116194886 A CN116194886 A CN 116194886A CN 202080105398 A CN202080105398 A CN 202080105398A CN 116194886 A CN116194886 A CN 116194886A
- Authority
- CN
- China
- Prior art keywords
- supervector
- branch
- taken
- prediction
- stored
- 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 abstract description 43
- 238000012545 processing Methods 0.000 claims description 44
- 238000009825 accumulation Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 16
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 230000005945 translocation Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 28
- 239000013598 vector Substances 0.000 description 25
- 230000006870 function Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 13
- 238000007792 addition Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 12
- 230000010287 polarization Effects 0.000 description 12
- 230000015654 memory Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 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/30061—Multi-way branch instructions, e.g. CASE
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供了用于分支预测的装置和方法。针对分支指令,分支预测电路生成将采取还是不采取这些分支的预测。确定性地依据每个分支指令的地址,超矢量生成电路分配任意超矢量,其中这些超矢量包括至少500位。在分支作出决定后,依据该分支的决定,将对应的超矢量添加到所存储的采取超矢量或所存储的未采取超矢量中。依据针对该分支指令而生成的超矢量相对于所存储的采取超矢量或未采取超矢量的数学距离度量,该分支预测电路生成针对该分支指令的预测。
Description
本技术涉及数据处理。更具体地,它们涉及分支预测。
执行包括了分支指令的指令序列的数据处理装置可具有以下能力:基于过去的行为,预测给定分支的结果;以及在该基础上,在给定分支实际解决之前,推测性地执行遵循了假设结果的进一步指令。此类分支预测机制增强了装置的指令执行吞吐量,因为它不需要在执行遵循了分支结果的指令之前,等待每个分支作出决定。此外,如果分支预测器经过良好训练并且放弃并未得到正确推测性执行的数据处理的代价可能明显超过了推测执行的指令执行吞吐量优势,则分支预测是正确的情况可能比较少见。然而,仍有机会对分支预测技术进行进一步改进。
至少一些示例提供了一种装置,该装置包括:
处理电路,该处理电路用以响应于指令而执行数据处理操作,其中这些指令包括分支指令;
分支预测电路,该分支预测电路用以针对分支指令而生成将采取还是不采取该分支指令所指定的分支的预测;以及
超矢量存储装置,该超矢量存储装置用以存储所采取的超矢量和未采取的超矢量中的至少一项,
其中处理电路被布置成基于分支预测电路所生成的预测来执行推测性指令执行项,
并且分支预测电路包括超矢量生成电路,以确定性地依据分支指令的地址来分配任意超矢量,其中超矢量包括至少500位,
其中当处理电路已执行分支指令时,分支预测电路响应于分支指令所指定的分支的决定,以依据该分支的决定,将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,
并且其中分支预测电路被布置成依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测。
至少一些示例提供了一种分支预测方法,该方法包括:
响应于指令来执行数据处理操作,其中这些指令包括分支指令;
针对分支指令生成将采取还是不采取该分支指令所指定的分支的预测;
存储所采取的超矢量和未采取的超矢量中的至少一项;
基于所生成的预测来执行推测性指令执行项;
确定性地依据分支指令的地址来分配任意超矢量,其中超矢量包括至少500位;
当已执行分支指令时,依据分支的决定,将该超矢量添加到所存储的采取超矢量或所存储的未采取超矢量;以及
依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测。
至少一些示例提供了一种装置,该装置包括:
用于响应于指令来执行数据处理操作的构件,其中这些指令包括分支指令;
用于针对分支指令生成将采取还是不采取该分支指令所指定的分支的预测的构件;
用于存储所采取的超矢量和未采取的超矢量中的至少一项的构件;
用于基于所生成的预测来执行推测性指令执行项的构件;
用于确定性地依据分支指令的地址来分配任意超矢量的构件,其中超矢量包括至少500位;
用于在已执行分支指令时依据分支的决定而将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量中的构件;以及
用于依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测的构件。
将参考如附图所示的本发明的实施方案,结合以下描述阅读,仅以举例的方式进一步描述本技术,其中:
图1示出了当超矢量包括100、500和2,500位时具有随机设置位的超矢量对之间的标准化数学距离的示例性频率分布;
图2示意性地示出了可支持本技术的各种示例的示例性数据处理装置;
图3示意性地示出了根据本技术的各种示例的执行管线的示例性获取级;
图4A示意性地示出了根据本技术的各种示例的提供超矢量分配和比较的电路;
图4B示意性地示出了根据本技术的各种示例的提供超矢量更新的电路;
图4C示意性地示出了根据本技术的各种示例的提供超矢量生成、比较和更新的电路;
图5A示意性地示出了根据本技术的各种示例的为分支指令序列提供超矢量分配、组合和比较的电路;
图5B示出了根据本技术的各种示例的对超矢量的操纵以备于将它们进行组合;
图6A示意性地示出了根据本技术的各种示例的为分支指令序列提供超矢量分配和组合的电路;
图6B示意性地示出了根据本技术的各种示例的为分支指令序列提供超矢量分配、组合和比较的电路;
图7示意性地示出了根据本技术的各种示例的分支预测系统,该分支预测系统包括用于不同长度的分支序列的基础预测器和超矢量预测器;
图8A和图8B示意性地示出了根据本技术的各种示例的用于使用电荷积聚进行超矢量比较的电路;
图9示意性地示出了根据本技术的各种示例的提供超矢量更新的电路;
图10示意性地示出了根据本技术的各种示例的基于模式历史和程序计数器位来提供预测超矢量的电路;
图11是示出了根据本技术的各种示例的所采取的步骤序列的流程图;并且
图12是示出了根据本技术的各种示例的所采取的步骤序列的流程图。
在本文一个示例中,存在一种装置,该装置包括:
处理电路,该处理电路用以响应于指令执行数据处理操作,其中这些指令包括分支指令;
分支预测电路,该分支预测电路用以针对分支指令生成将采取还是不采取该分支指令所指定的分支的预测;以及
超矢量存储装置,该超矢量存储装置用以存储所采取的超矢量和未采取的超矢量中的至少一项,
其中处理电路被布置成基于分支预测电路所生成的预测来执行推测性指令执行项,
并且分支预测电路包括超矢量生成电路,以确定性地依据分支指令的地址来分配任意超矢量,其中超矢量包括至少500位,
其中当处理电路已执行分支指令时,分支预测电路响应于分支指令所指定的分支的决定,以依据该分支的决定,将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,
并且其中分支预测电路被布置成依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测。
本技术受到超维度计算(HDC)和稀疏分布式存储器(SDM)的概念的启发。SDM的提议是由Pentti Kanerva作为人类长期记忆模型而提出,并且记载在他的以下著作中:《Sparse Distributed Memory》,The MIT Press,ISBN:9780262111324,Nov,1988。根据SDM方法,可以按内容可寻址方式,将数据存储在非常大的矢量中(其中该文献推荐具有10,000个元素的矢量),本文通常称为超矢量。在该扩展形式中,所有存储对象由它们的维度值来定义(提供唯一哈希),其中超矢量的每个元素或位通常被约束为采取简单范围的值,诸如来自集合{-1,1}或{0,1}中的值。然后,这呈现了由矢量集合组成的n维空间,例如{-1,1}n,其中在该空间中,存在N=2n个点。对于此类矢量集合,k位具有可能状态之一而非另一状态的概率
(例如1而非-1)是:
对此类超矢量集合的一项关键观察是,如果从高维度性方面来比较两个随机超矢量(即,对于具有大量元素或位的超矢量),则随机选择性最高的各对将其三分之一以上的位相对于彼此进行翻转。比如,当观察7维空间时,可以看出,总共128个状态中的70个状态具有3或4个置换项,并且128个状态中的99个状态有2个以上的位不同。这意味着,对于7位矢量,两个随机矢量具有至少2个置换位(矢量的22%)的概率是78%。将其扩展到1,000位,两个随机选择的矢量的至少三分之二不同的概率大于99.9999%。这可使用等概率事件的二项式分布累积分布函数来计算:
这在使用一千位或更多位的超矢量时给出了置信度,随机分配的超矢量对(根据它们的含量)将是唯一的并且以高度确定性(高于99.999%)相对于彼此远距离正交。相反,彼此相对接近的超矢量(具有小于1/3的位不同)很可能是相关的,因为随机接近另一矢量的概率是无穷小的。这里,两个超矢量之间的“相关性”可以例如是两者在某种意义上来源相同。例如,在将一组信息(诸如当观察到一个对象时,对人类而言的视觉输入)映射成一个非常大的超矢量的情况下,如果发现该超矢量具有少于1/3的位不同于也由人类视觉输入映射而成的先前存储的超矢量,则这强烈表明,先前存储的超矢量和当前的超矢量都起源于类似的视觉输入。
本技术已经认识到将HDC和SDM的一些特征应用于数据处理电路中的分支预测的机会,该数据处理电路被布置成响应于指令来执行数据处理操作,其中这些指令包括分支指令。对于指令吞吐量效率,数据处理器预测由其在其执行的指令中遇到的分支指令所定义的分支的结果,并且基于所生成的预测来推测性地执行指令。该分支预测能力通过本技术得到了增强,本技术提供了超矢量生成电路,以确定性地依据每个分支指令的地址来分配任意超矢量。这里,出于本原始公开的目的,超矢量被定义为包括至少500位,因为已经发现,利用具有此类维度性的超矢量可获得本技术的各益处,但是应当理解,鉴于以上概率的论述,对于包括多于500位(诸如1000、2500或甚至10,000位)的超矢量,这些技术的某些特性得到了进一步增强。不应将这些具体示例解释为以任何方式限制了本技术的普遍适用性,但应进一步注意,随着这些超矢量呈现的维度性越来越大,处理此类较大超矢量的复杂性和成本自然也会增长。在超矢量生成电路确定性地依据每个分支指令的地址来分配任意超矢量的情况下,因此将理解,所分配的超矢量是任意的其意义在于,其元素均可采取任何可用于此超矢量空间的可能值(例如,-1或1),但确定性地依据分支指令的地址意味着:在将该具体地址提供给超矢量生成电路的任何时间,其将始终生成相同超矢量(即,具有元素内容的相同模式)。
当给定分支作出决定时,然后依据结果(即,采用或不采用),将与相关分支指令的地址相关联的超矢量添加到超矢量存储装置的内容中。在一些实施方案中,该装置被布置成仅存储采取的超矢量和未采取的超矢量中的一项,所进一步确认且具有对应方向的结果被添加到该项之中。例如,将作出采用决定的针对分支地址的超矢量添加到所存储的采取超矢量中。然后,在遇到进一步的分支指令时,该装置的分支预测电路通过如下方式来利用所存储的超矢量:依据每个分支指令地址,生成超矢量;然后,确定该超矢量相对于所存储的采取超矢量的数学距离度量。如果该数学距离度量符合所定义的阈值(例如,低于给定阈值),则这可以被确定为匹配,并且可针对该分支作出采取的预测。否则,则预测,将不采取该分支。显然,可以将该示例简单地进行颠倒,使得仅存储未采取的超矢量。
在一些实施方案中,超矢量存储装置被布置成存储所采用的超矢量和未采用的超矢量。
其中当处理电路已执行分支指令时,分支预测电路响应于分支指令所指定的分支的决定,以依据该分支的决定,将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,
并且其中分支预测电路被布置成:当该超矢量相对于所存储的采取超矢量的数学距离度量小于该超矢量相对于所存储的未采取超矢量的数学距离度量时,将预测生成为采取;以及当该超矢量相对于所存储的未采取超矢量的数学距离度量小于该超矢量相对于所存储的采取超矢量的数学距离度量时,将预测生成为未采取。因此,既存储所采取的超矢量,也存储未采取的超矢量,并且依据所决定的方向,将与作出决定的分支相关联的超矢量添加到所存储的一个或另一相关超矢量。
尽管超矢量生成电路可以确定性地依据单个分支指令的单个地址来生成超矢量,但是在一些实施方案中,超矢量生成电路被布置成确定性地依据分支指令的地址序列来生成超矢量。以此方式,支持了细微差别更多的分支预测方法,其中分支的结果不是简单地基于该分支本身来预测,而是基于包括多个先前分支结果的处理序列来预测。这一点通过如下方式来实现:确定性地依据分支指令的地址序列(即,导致了对当前分支进行预测的分支序列),生成预测超矢量。
该依据分支指令的地址序列可按不同方式来实现,但在一些实施方案中,超矢量生成电路被布置成针对分支指令的地址序列中的每个地址生成相应超矢量并将相应超矢量相组合以生成超矢量。
可按不同方式将相应超矢量进行组合,但在一些实施方案中,超矢量生成电路被布置成通过将元素易位应用于每个超矢量来组合相应的超矢量以生成超矢量,其中每个超矢量所移位的元素位置的数目依据于每个分支从分支预测的当前分支对象分离出来的分支数目。例如,该元素旋转可以是“向右”旋转,使得针对每次元素移位,超矢量的最右侧元素被切换为所移位的超矢量的最左侧元素。因此,针对仅仅是从当前分支中删除的一个步骤的分支,其可以是仅单个此类元素移位的对象,而针对是从当前分支中删除的n个步骤的分支,其可以是n个此类元素移位的对象,使得超矢量的最右侧n个元素被切换为所移位的超矢量的最左侧n个元素。显然,上述示例的左/右标记是任意的。同样地,易位可以是移位,即,使得与上述元素旋转类似的操作得到执行,但是不将从超矢量一端移走的这些元素附加到该超矢量的另一端。这可以是右移或左移。以此方式进行移位(与旋转相反)也规定了:给定分支距正被预测的当前分支越远(以分支序列次序),分支历史对当前预测的影响也会递减。
在一些实施方案中,超矢量生成电路被布置成进一步依据指示采取还是不采取每个分支指令的分支的方向位,针对分支指令的地址序列中的每个地址,生成相应超矢量。然后,这为每个分支添加了进一步的区别或个性化,使得根据本技术来处理的话,其中分支地址被映射成任意超矢量,给定分支若被采取,则按不同方式进行处理,若未采取,则作为完全不同的分支。这进一步支持了所提供的更为详细的分支预测,从而更进一步区分了导致正被预测的当前分支的不同执行历史。
针对任何给定的分支序列,若给出了对应的超矢量序列,可通过如下方式来计算由这些超矢量的组合所生成的预测超矢量:将每个分支地址转化成其对应的超矢量,可能对每个超矢量应用旋转,然后进行组合。然而,当遇到每个新分支指令时,不必执行完整计算,因此在一些实施方案中,超矢量生成电路被布置成通过从先前分支指令地址序列中删除最旧分支指令的最旧超矢量贡献并添加分支指令地址序列的最近分支指令的最新超矢量贡献,来生成超矢量。例如,在通过为最新分支指令“添加”新超矢量而为给定序列长度生成分支预测的情况下,通过从所组合的超矢量中“减去”最旧的超矢量贡献来保留该序列的长度。存在各种可实现此类“添加”和“减去”的方式,如下文将更详细论述。
在一些实施方案中,所存储的超矢量(当仅存储了采取超矢量和未采取超矢量中的一项时)或所存储的超矢量(当既存储了采取超矢量也存储了未采取超矢量时)可以按多种与分支序列的长度范围对应的形式来存储。因此,在此类实施方案中,超矢量存储装置被布置成针对分支指令的地址序列的长度范围中的每个范围,存储所采取的超矢量和未采取的超矢量中的至少一项,并且分支预测电路被布置成针对分支指令的地址序列的长度中的每个长度,进一步依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测。这种方法为该装置可以识别的不同分支序列类型的传播提供了更进一步的广度。分支序列的长度范围中的每个长度原则上可以相对于彼此具有任何尺寸,尽管在一些实施方案中,已经发现,当长度是几何级数时(例如,来自于以下长度中的至少一些长度:2、4、8、16、32、64等,仅举一例),支持对可用于此目的的存储容量的高效且有效的使用。
当支持多个此类分支序列长度时,可采取各种形式在它们之间进行选择,但在一些实施方案中,分支预测电路被布置成基于分支指令的最长地址序列来生成预测,对于该最长地址序列,该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量超过了阈值。
可以按多种方式将两个超矢量进行组合。这例如会发生于:当作出决定的分支被用于更新所存储的超矢量时(诸如,当分支作出采用的决定且将对应的超矢量添加到所存储的采取超矢量时)。此外,正被组合的每个超矢量的各个元素的组合可采取不同形式,这可依据每个超矢量的定义方式。例如,在每个超矢量被定义在空间{-1,1}n中的情况下,超矢量元素之间的加法可定义为:
其中应用极化函数以生成最终的极化结果,其中值X被随机分配为1或-1。另选地,在每个超矢量被定义在空间{0,1}n中的情况下,超矢量元素之间的加法可定义为:
超矢量1 | 超矢量2 | 结果超矢量 | 极化结果超矢量 |
1 | 1 | 1 | 1 |
1 | 0 | X | X |
0 | 1 | X | X |
0 | 0 | 0 | 0 |
其中应用极化函数以生成最终的极化结果,其中值X被随机分配为1或0。
类似地,当组合多个超矢量时,可采用乘法/XOR型运算,其可例如发生于:在将针对分支序列中的每个分支所生成的多个超矢量进行组合时。再次,正被组合的每个超矢量的各个元素的组合可采取不同形式,这可依据每个超矢量的定义方式。例如,在每个超矢量被定义在空间{-1,1}n中的情况下,超矢量元素之间的乘法可定义为:
超矢量1 | 超矢量2 | 结果超矢量 |
1 | 1 | 1 |
1 | -1 | -1 |
-1 | 1 | -1 |
-1 | -1 | 1 |
另选地,在每个超矢量被定义在空间{0,1}n中的情况下,超矢量元素之间的乘法可定义为:
超矢量1 | 超矢量2 | 结果超矢量 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
在一些实施方案中,当依据分支的决定而将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量中时,分支预测电路被布置成将值限制函数应用于每个超矢量元素。该限制函数可采取上表中所示的约束形式。然而,它也可采取允许元素的中间计算结果的取值大小比超矢量空间所允许大小(例如,对于{-1,1}n,大小大于1)更大的形式,因为这允许元素相对于“零”位置的偏离发生更大变化,从而当多个超矢量中的对应元素匹配时,实现多方面增强的效果,即使异常情形与此矛盾,然后应用限制函数以将结果元素值约束成所定义的超矢量空间的值。
因此,在一些实施方案中,超矢量生成电路被布置成生成包括元素的超矢量,每个元素表示+1或-1的值,并且其中值限制函数进行如下映射:
正值映射成+1;
负值映射成-1;以及
值0映射成随机选择+1或-1。
在其他实施方案中,超矢量生成电路被布置成生成包括元素的超矢量,每个元素表示值1或0,并且其中值限制函数进行如下约束:
将表示1的两个元素相加以生成1;
将表示0的两个元素相加以生成0;以及
将表示1的元素和表示0的元素相加以生成随机选择1或0。
在发现所生成的分支预测是错误的情况下,装置可以简单地不采取动作(与适当地将对应超矢量添加到所存储的采取/未采取超矢量之中相反)。然而,在一些实施方案中,分支预测电路响应于分支指令所指定的分支的决定,当该决定指示由分支预测电路针对该分支所生成的预测是错误预测时,依据该分支的决定,将该超矢量从所存储的采取超矢量或所存储的未采取超矢量中减去。
在一些实施方案中,当处理电路已执行分支指令时,分支预测电路响应于分支指令所指定的分支的决定,以依据该分支的决定,将该超矢量的元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的元素子集。因此,可基于与所作出决定的分支指令相关联的超矢量的对应元素子集,仅更新所存储的超矢量的元素子集,而非将与所作出决定的分支对应的整个超矢量添加到所存储的超矢量。这减少了对使用与所作出决定的分支指令相关联的超矢量来更新所存储超矢量的影响(在某种程度上,依据子集所覆盖的整个超矢量的比例)。因此,该技术缓和了分支结果中的短期波动的影响,并且意味着某一分支的某一结果的长期统计稳定性将占主导。可依据该“噪声滤波器”所期望的有效程度来选择子集的尺寸,并且进一步地,可以对包括元素子集的元素进行预定义或可按不同(可能随机化的)方式进行选择。
为了进一步支持该技术,在一些实施方案中,分支预测电路被布置成依据分支的决定,将包括随机化值的超矢量的另一元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的另一元素子集,其中该元素子集与另一元素子集互斥。元素子集的随机化也具有以下影响:冲淡了添加给定超矢量将对所存储超矢量产生的影响。
可以按不同方式来实现超矢量之间的比较,例如预测超矢量与所存储的采取超矢量和所存储的未采取超矢量中的至少一项之间的比较。可以采用位1计数(popcount)方法,然而特别是在超矢量较大的情况下,执行此类方法的耗时可能变得不合期望地过长。在此背景下,本技术提出了分支预测电路包括模拟数学距离度量确定电路,该模拟数学距离度量确定电路包括超矢量比较耦合,该超矢量比较耦合被布置成选择性地将每元素电荷施加到电荷积聚线,其中每个超矢量比较耦合响应于超矢量的相应元素与所存储的采取超矢量和未采取超矢量中的至少一项的相应元素匹配,将每元素电荷施加到电荷积聚线,并且电荷积聚线上的积聚电荷高于阈值电荷被解释为超矢量匹配。已经发现,这种模拟方法实现了采取或不采取预测的及时确定,这进一步得到了所用的超矢量方法的特性的支持,即不需要完全准确地确定每个单独元素。
在一些实施方案中,分支预测电路包括分支历史存储装置,该分支历史存储装置响应于分支指令以存储先前已采取或未采取该分支指令的分支历史指示。
其中分支预测电路被布置成:生成分支历史指示与分支指令的地址指示的组合;以及使超矢量生成电路确定性地依据该组合而生成另一超矢量,
并且其中分支预测电路被布置成依据另一超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成另一预测。
所用的数学距离度量可采用多种形式。在一些实施方案中,数学距离度量使用所比较的超矢量之间的点积。在一些实施方案中,数学距离度量使用余弦相似性。在一些实施方案中,数学距离度量是汉明距离。
在本文的一个示例中,存在一种分支预测方法,该方法包括:
响应于指令来执行数据处理操作,其中这些指令包括分支指令;
针对分支指令生成将采取还是不采取该分支指令所指定的分支的预测;
存储所采取的超矢量和未采取的超矢量中的至少一项;
基于所生成的预测来执行推测性指令执行项;
确定性地依据分支指令的地址来分配任意超矢量,其中超矢量包括至少500位;
当已执行分支指令时,依据分支的决定,将该超矢量添加到所存储的采取超矢量或所存储的未采取超矢量;以及
依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测。
在本文一个示例中,存在一种装置,该装置包括:
用于响应于指令来执行数据处理操作的构件,其中这些指令包括分支指令;
用于针对分支指令生成将采取还是不采取该分支指令所指定的分支的预测的构件;
用于存储所采取的超矢量和未采取的超矢量中的至少一项的构件;
用于基于所生成的预测来执行推测性指令执行项的构件;
用于确定性地依据分支指令的地址来分配任意超矢量的构件,其中超矢量包括至少500位;
用于在已执行分支指令时依据分支的决定而将超矢量添加到所存储的采取超矢量或所存储的未采取超矢量的构件;以及
用于依据该超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成预测的构件。
现在将参考附图描述一些具体实施方案。
本技术所采用的超矢量的关键特征是一对此类任意分配超矢量相对于彼此表现出远距离正交性,其中出于本发明的目的,将超矢量视为一个具有至少500个元素的集合,特别是当此类超矢量的元素被任意分配时。该正交性的一个量度是两个超矢量之间的数学距离,例如它们之间的汉明距离。图1示出了当超矢量包括100、500和2,500位时具有随机设置位的超矢量对之间的标准化数学距离的示例性频率分布。在对每个超矢量的每个元素(例如位)进行了有效随机设置的情况下,可使用针对等概率事件的二项式分布累积分布函数来计算两个随机选择的超矢量具有至少2个置换位的概率:
例如在超矢量具有1,000位的情况下,这给出了至少三分之二的两个随机选择矢量不同的概率大于99.9999%。从图1中可以看出,超矢量的位数越大(给出了100、500和2,500位超矢量的示例),在0.5的标准化距离处的频峰越明显。显然,对于甚至更大的超矢量尺寸,标准化距离分布变得越与0.5严格对齐。换句话说,所用的超矢量尺寸越大,出于所有意图和目的,任意单个超矢量彼此之间变得越来越近距离完全正交。
图2示意性地示出了可支持本技术的各种示例的示例性数据处理装置10。按本领域普通技术人员熟悉的方式,装置10具有管线化配置,根据该管线化配置,从存储器中所检索出的指令通过了一系列管线级。在图2的高级图示中,这些由获取电路12、解码电路14、发出电路16、执行电路18和后退电路20表示。获取电路12的获取控制电路22使指令从存储器30中的存储装置中被检索出来,这些指令被高速缓存在图2的表示中所示的高速缓存层次结构中,以包括L2高速缓存32和指令高速缓存34(可存在或替代其他高速缓存层级和结构)。在经排队以供发出级16发出到执行级18之前,所获取的指令被传递到解码级14以进行解码。将了解,图2的高度简化表示仅呈现了执行管线的粗略且抽象的表示,因为出于本发明的目的,仅需要呈现相关背景的概要。然而,通常,执行电路18(包括未明确示出的各种功能单元)执行由正被执行的指令所定义的数据处理操作,其中这些操作是针对寄存器堆24中临时保存的数据项来执行。从存储器30中,检索出需要作为数据处理操作对象的数据项,并将其高速缓存在图2中的L2高速缓存32和L1数据高速缓存36所表示的数据高速缓存层次结构中(可存在或替代其他高速缓存层级和结构)。与本技术具体相关的是以下事实:装置10被布置成执行推测性指令执行项,为了支持这一点,获取电路12包括分支预测电路40。分支预测电路40被布置成针对获取电路12所获取的分支指令,生成分支预测。这些分支预测是基于相同分支指令的先前结果,以支持退出级20中的哪个分支决定电路42向分支预测电路40和获取控制电路22指示分支的决定结果。在本技术的实现方式中,分支预测电路40具有对超矢量存储装置44的访问权。超矢量存储装置44示意性地示出为与图2的示例性装置中的分支预测电路40分离,然而在其他示例中,超矢量存储装置可以形成分支预测电路40的一部分或者可提供在该装置中的其他地方。将参照以下附图更详细地描述分支预测电路40利用超矢量来生成分支预测的方式。然而,仅在此处的简要概述中,分支预测电路40确定性地依据分支指令(例如,依据其程序地址或程序计数器值)来生成任意超矢量。然后将该超矢量与存储在HV存储装置44中的“采取”超矢量和“未采取”超矢量中的一项或两项进行比较。做出采取还是不采取的预测,这依据所生成的超矢量相对于所存储的“采取”超矢量和所存储的“未采取”超矢量中的一项或两项的数学距离。此外,当由分支决定电路42向分支预测电路40发信号通知给定分支的决定时,适当地将针对相关分支指令的对应超矢量添加到HV存储装置44中存储的“采用”超矢量或“未采取”超矢量。
图3示意性地示出了根据一些实施方案的获取电路100。该获取电路100可例如提供图2所示的获取电路12。获取电路100包括分支预测电路102、超矢量存储装置104和获取控制电路106。分支预测电路102包括超矢量分配电路108和超矢量比较电路110。超矢量分配电路108被布置成接收分支指令地址的指示(其可以呈地址本身的形式,作为程序计数器等)并且确定性地依据于生成超矢量。超矢量分配电路108生成超矢量在以下方面是确定性的:给定分支指令地址将始终产生相同的超矢量。超矢量也是任意分配的,即,使得每个超矢量的各个元素不具有任何特定含义,而是构成了每个超矢量的各个元素的组合提供了在超矢量空间中的唯一标识符。将这样由超矢量分配电路108生成的超矢量提供给超矢量比较电路110,其将该超矢量与存储在超矢量存储装置104中的采取超矢量112和未采取超矢量114进行比较。特别地,超矢量比较电路110确定该超矢量与所存储的采取超矢量112和未采取超矢量114之间的数学距离。基于由此找到的较小数学距离,超矢量比较电路110然后生成采取或不采取的预测。注意,在一些实施方案中,仅使用采取超矢量和未采取超矢量中的一项,然后超矢量比较电路110被布置成基于该超矢量与(比方说)所存储的采取超矢量之间的数学距离之间的比较结果,生成分支预测,其中如果该距离等于或低于给定阈值,则预测采取该分支,而如果该距离高于给定阈值,则预测未采取该分支。
超矢量存储装置104被示为还包括超矢量更新控制电路116,其接收分支决定的指示。在已收到给定分支指令的决定的指示后,超矢量更新控制电路116利用分支预测电路102的超矢量分配电路108来生成该分支指令地址的对应超矢量,然后更新所存储的采取超矢量112和所存储的未采取超矢量114中的一项。例如,当分支被指示为采取时,将所采取的超矢量112更新。在仅存储了采取超矢量112和未采取超矢量114中的一项的情况下,当方向匹配时,超矢量更新控制116执行更新(例如,将所采取的分支添加到所存储的采取超矢量),当方向不匹配时,不执行更新(例如,当仅存储了所采取的超矢量时,忽略未采取的分支)。下面参照附图更详细地论述了可基于分支决定来更新所存储的一个或多个超矢量的其他方式。
图4A示意性地示出了超矢量分配电路150和超矢量比较电路152,它们在一些实施方案中可以形成图3所示的超矢量分配电路108和超矢量比较电路110。超矢量分配电路150包括超矢量生成电路154,其利用扩展哈希函数156,以便决定性地依据所接收的分支指令地址的指示,生成任意分配的超矢量。超矢量比较电路152包括数学距离计算电路158和比较控制160。收到超矢量分配电路150所生成的超矢量后,超矢量比较电路152的比较控制电路160访问超矢量存储装置162,并且其中存储的超矢量被提供给数学距离计算器158。然后,确定了两个超矢量之间的数学距离。具体数学距离度量会在各实施方案之间发生变化。其通常可视作所比较的超矢量之间的点积或余弦相似性。其可例如实现为汉明距离。基于该数学距离,超矢量比较电路152然后生成采取或不采取的预测。对于图3的实施方案,这可仅基于相对于所存储的超矢量的一个距离,或者可基于针对所存储的多于一个超矢量所计算的距离的比较结果。
图4B示意性地示出了示例性超矢量更新电路170,其在一些实施方案中可提供图3所示实施方案中的超矢量更新控制116。超矢量更新电路170包括更新控制172和超矢量加法/减法/标准化电路174。更新控制电路172接收与分支决定有关的信息。具体地说,它接收相关分支指令地址的指示、采取还是未采取该分支的指示、以及在该分支进入管线时对该分支作出的预测是否正确的指示。基于该信息,更新控制172协调对存储在超矢量存储装置176中的超矢量的更新。更新控制电路172具有对超矢量分配电路178的访问权,使得针对给定分支指令地址,可获得对应的超矢量。更新控制电路172控制着超矢量加法/减法/标准化电路174,使得然后使用该分支指令的超矢量来更新所存储的超矢量。例如,在超矢量存储装置176存储了采取和未采取超矢量的实施方案中,然后可将正被处理的分支指令的当前超矢量添加到所存储的相关超矢量(依据实际上是采取还是未采取该分支)。这可被设置为以下情况下的操作方式:不存在针对该分支的预测是正确还是错误的指示。然而,也可利用预测正确性的指示。例如,在证明了分支预测是错误的情况下,虽然仍然可以对所存储的相关超矢量进行添加,但是所执行的超矢量更新也会将当前超矢量从与错误预测对应的存储超矢量中减去。
在该示例中,根据添加和极化技术,执行将当前超矢量添加到所存储的超矢量中。在一些实施方案中,超矢量具有作为集合{-1,1}的成员的元素,并且超矢量元素之间的加法被定义为:
超矢量1 | 超矢量2 | 结果超矢量 | 极化结果超矢量 |
1 | 1 | 1 | 1 |
1 | -1 | 0 | X |
-1 | 1 | 0 | X |
-1 | -1 | -1 | -1 |
其中应用极化函数以生成最终的极化结果,其中值X被随机分配为1或-1。在每个超矢量具有作为集合{0,1}的成员的元素的实施方案中,超矢量元素之间的加法被定义为:
超矢量1 | 超矢量2 | 结果超矢量 | 极化结果超矢量 |
1 | 1 | 1 | 1 |
1 | 0 | X | X |
0 | 1 | X | X |
0 | 0 | 0 | 0 |
其中应用极化函数以生成最终的极化结果,其中值X被随机分配为1或0。在任一示例中,加法的结果可视为通过对每个元素可能的取值施加限制而进行“标准化”,但其中每个元素的“方向”或极性得到保留。
图4C示意性地示出了示例性超矢量处理电路,其在一些实施方案中可提供图3所示的实施方案中的分支预测电路102和超矢量存储装置104。分支预测电路包括超矢量生成180,其利用扩展哈希函数181,以便决定性地依据所接收的分支指令地址的指示,生成任意分配的超矢量。超矢量比较电路182包括数学距离计算电路183,其接收由超矢量生成电路180生成的超矢量、以及由超矢量检索和更新电路184从超矢量存储装置185(保存了采取超矢量186和未采取超矢量187)中检索出来的至少一个存储超矢量。在该示例中,既检索了采取超矢量,也检索了未采取超矢量,并且数学距离计算电路183确定哪个更接近所生成的超矢量。基于此,发出采用(T)或不采用(NT)的预测。所生成的超矢量也缓存在超矢量缓存区188中,保存在那里直到分支作出决定。在分支作出决定后,超矢量检索和更新电路184从超矢量缓存区188取出所缓存的超矢量,并且依据分支结果,更新所存储的采取超矢量186和未采取超矢量187中的至少一项。在分支预测正确的情况下,可以将所缓存的超矢量添加到(正确预测的)所存储的对应超矢量。在分支预测错误的情况下,可以将所缓存的超矢量从(错误预测的)所存储的对应超矢量中减去。
图5A示意性地示出了包括超矢量分配电路200、超矢量组合电路202和超矢量比较电路204的电路。超矢量组合电路202和超矢量比较电路204可提供为图3的示例中的超矢量比较电路110,或与图4A的示例中的超矢量比较电路152相关联。重要的是,超矢量组合电路202的布置方式为该装置提供了基于分支序列来提供分支预测的能力。虽然可能更难以基于各个分支指令提供一致可靠的分支预测,但由于给定分支的结果可能更强烈地依据于该分支的执行背景,因此可以对分支指令序列末尾处的分支指令进行更可靠地预测,这是因为导向该分支的具体分支结果序列实际上提供了更具体的背景。图5A所示的示例性配置示出了可如何以此方式使用分支指令序列的一个示例。为了说明的简单和清楚,示出了四个分支的序列的示例,本技术不限于序列中可针对其生成预测的任何具体数目的分支。如上所述,超矢量分配电路200基于所收到的分支指令的指示(在该示例中,为程序计数器(PC)值)生成超矢量。该超矢量提供了当前超矢量205。由此生成并保存了与分支序列对应的超矢量序列205、206、207、208。这些超矢量然后由超矢量组合电路210组合成单个超矢量,该单个超矢量然后被传递到超矢量比较电路2044以与如本文别处所述的一个或多个存储超矢量进行比较。超矢量的组合可通过针对正被组合的超矢量的相应元素的XOR型运算来实现。另外,矢量旋转可应用于每个超矢量,其中每个超矢量所旋转的位置数目由其在分支序列中的位置给出。因此,分支序列PC1→PC2→PC3→PC4可组合为:其中/>表示XOR运算,并且<<[x]是矢量旋转[x]个元素位置。通过不仅对每个分支使用PC,而且包括每个分支的结果(如HV分配电路200的输入所示),可增强预测的准确性。图5B示出了通过矢量旋转对超矢量进行操作以备于将它们进行组合,其中超矢量220不旋转,超矢量221旋转一个元素位置,并且超矢量222旋转两个元素位置。显然,可以将更多任意超矢量添加到该序列,并且将另一元素位置旋转应用于每个超矢量。然后可通过各个元素的乘法来执行超矢量的组合(在该{1,-1}表示中),其中结果定义为:
超矢量1 | 超矢量2 | 结果超矢量 |
1 | 1 | 1 |
1 | -1 | -1 |
-1 | 1 | -1 |
-1 | -1 | 1 |
另选地,在超矢量为二进制{0,1}表示的情况下,结果可定义为:
超矢量1 | 超矢量2 | 结果超矢量 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
图6A示意性地示出了根据一些实施方案的提供超矢量分配及组合分支指令序列的电路。本技术认识到,当组合一组超矢量(对应于分支序列)时,不必在每次迭代时,对该组合执行完整计算。相反,可以删除最旧超矢量的贡献,并且可以添加最新超矢量的贡献。因此,超矢量分配电路250所接收的下一分支PC提供了新的超矢量(HV),并且新的分支PC也投入到分支PC FIFO 251中。同时,所保存的最旧分支PC然后从FIFO 251中弹出,并且其HV由HV分配电路250来确定,以给出最旧HV。所组合的HV计算电路252(还包括移位/乘法功能254)然后从当前序列HV 253中删除最旧HV的贡献。这通过如下方式来完成:将最旧HV乘以当前序列(在{1,-1}表示中)或通过XOR(在二进制{0,1}表示中)。然后,可以将新HV与具有单个元素位置移位的该操作的结果(同样适当地通过乘法/XOR)相组合。
然而,本技术还认识到,不需要维持分支的PC序列,并且图6B示意性地示出了支持这一点的超矢量分配电路260、HV计算电路262和计算控制电路264。正如图6A一样,组合超矢量的大部分计算过程保持不变,并且仅删除最旧超矢量的贡献。将剩余部分旋转一个元素位置以便与新的超矢量组合。另外,这里,代替图6A示例中的分支PC FIFO 251,这里计算控制电路274仅跟踪最旧的PC及其结果266。当需要下一个最旧的PC时,计算控制电路通过程序访问268来访问该程序,以从最旧的PC中追踪到该程序及其记录结果,从而发现下一个分支。应当注意,对下一个PC进行搜索可以在下一个分支到达之前,偏离关键路径来完成,因此不需要减慢该过程。HV计算电路262包括移位/乘法电路270,其对所接收的HV和当前序列HV 272进行操作,以执行上述操作。
图7示意性地示出了根据一些实施方案的分支预测系统,其包括用于改变分支序列长度的基础预测器300和多个超矢量预测器301、302、303。基础预测器300可按不同方式进行配置。例如,可以按任何已知分支预测技术(诸如,基于饱和计数器、使用模式历史表等)的形式来提供基础预测器300。类似于该基础预测器300,提供了多个超矢量预测器301、302、303(其中仅明确示出了三个预测器,但是省略号指示可存在任意数量的这些超矢量预测器)。多个超矢量预测器301、302、303被布置成基于分支的序列,提供预测(如例如上文参考图5A、图5B、图6A和图6B所述),其中多个超矢量预测器301、302、303均对应于不同长度的分支序列。每个超矢量预测器301、302、303维持与不同长度的分支序列的超矢量对应的采取超矢量,该分支序列以采取分支为结尾。在一些实施方案中,在相应长度的分支序列之间,可以不存在具体关系,但在图7所示的示例中,序列长度取自几何序列(例如,2、4、8、16、32、64等),并且因此如果仅提供了三个超矢量预测器,可例如对应于4、8和16个分支的分支序列。已经发现,这提供了一种有效的方式来利用所需的电路面积和存储容量,同时覆盖了一定长度范围内的分支序列。来自基础预测器300和多个超矢量预测器301、302、303中的每个预测器的输出被传递到预测选择电路305,其基于所接收的信息,生成采取或不采取的总体预测。预测选择电路可被布置成按多种方式来选择预测。出于此目的,多个超矢量预测器301、302、303均可提供它们相对于它们各自存储的采取超矢量而确定的数学距离。预测选择电路然后可选择计算距离最小的预测。预测选择电路也可考虑相应的分支序列长度,以优先选择针对较长分支序列所作出的预测。例如,与所计算的每个距离进行比较的阈值距离可以在多个超矢量预测器301、302、303之间变化。然后选择超过了阈值的最长分支序列。通常,可优先选择多个超矢量预测器301、302、303的输出而非基础预测器300的输出,并且仅在多个超矢量预测器301、302、303都没有生成令人满意的距离的情况下,使用基础预测器300的输出。
超矢量之间的数学距离的计算过程原则上可以按多种方式来执行。例如,可使用弹出计数机制。然而,本技术还认识到,在与元素计数较大的超矢量相关的计算过程的背景下,此类机制可能变得不合期望地过慢。在此背景下,提供了模拟等效电路,并且图8A和图8B示意性地示出了用于使用电荷积聚进行超矢量比较的电路的两个示例。在图8A中,数学距离确定电路400包括一组晶体管401,其中晶体管的数目对应于超矢量的元素数目。所存储的采取超矢量位(HVT)连接到该晶体管序列的栅极,并且所用的预测超矢量(Q)连接到其相应源极。因此,所匹配的元素使电荷积聚线420的电荷增加,该电荷积聚线耦合到当前阈值比较电路430。当前阈值比较电路确定,在所定义的时间段内,电荷积聚线420上积聚的电荷是否超过所定义的阈值。如果是,则这指示了所存储的采取超矢量位(HVT)与预测超矢量(Q)之间的充分匹配,并且在此基础上,可作出采取或不采取的预测。
在图8B所示的变形中,数学距离确定电路450包括两组晶体管451、452,其中在每个组中,晶体管的数目对应于超矢量的元素数目。所存储的采取超矢量位(HVT)连接到晶体管451的第一序列的栅极,并且所用的预测超矢量(Q)453连接到其相应源极。所存储的未采取超矢量位(HVNT)连接到晶体管452的第二序列的栅极,并且所用的预测超矢量(Q)453连接到其相应源极。因此,在采用的情况下,所匹配的元素使电荷积聚线460的电荷增加,而在未采用的情况下,所匹配的元素使电荷积聚线470的电荷增加。两个电荷积聚线都耦合到当前阈值比较电路480。当前阈值比较电路确定哪条电荷积聚线已经积聚了足以超过所定义阈值(其也可被约束在所定义的时间段内)的电荷。在此基础上,可作出采取或未采取的预测。
图9示意性地示出了根据一些实施方案的超矢量更新电路500。如上所述,作出决定的分支的结果被用于更新所存储的采取超矢量和所存储的未采取超矢量中的一项。超矢量更新电路500的更新控制电路501接收分支结果的指示以及对应分支地址的指示。对超矢量缓存区502进行访问,以便基于分支地址,检索出对应的超矢量。所检索的超矢量由子集随机化电路503接收,该子集随机化电路被布置成在将超矢量的元素子集传递到加法/减法/标准化电路504之前,将该子集随机化,该加法/减法/标准化电路然后将如此修改的超矢量应用于超矢量存储装置505中存储的超矢量。将随机化应用于超矢量的元素子集,这引入了多种衰减机制,当将预测矢量添加到所采取或未采取超矢量时,这些衰减机制有效地忽略了预测矢量中的一些位。在一个另选实施方案中,元素子集并非简单地作为针对所存储的超矢量而执行的加法或减法的一部分来应用。这提高了预测的准确性,因为它减少了错误预测的影响,错误预测在一些情况下,可能潜在地使预测器偏离平衡并且使预测结果颠倒。
图10示意性地示出了在一些示例性实施方案中基于模式历史和程序计数器位来提供预测超矢量的电路。程序计数器(PC)位被用于将索引编入模式历史存储装置550中,其中基于根据已知技术观察到的分支历史模式,更新模式历史存储装置。然而,模式历史存储装置550的输出(例如以2位历史的形式)然后由组合电路555与程序计数器位组合,以然后形成用作超矢量生成器(编码器)560的输入的“修改的PC”。超矢量生成器560然后产生预测超矢量,然后可将其应用于本文所述的任何实施方案中。
图11是示出了根据一些示例性实施方案而采取的步骤序列的流程图。可认为该流程始于获取下一指令的步骤600。然后在步骤602中,确定这是否是分支指令,并且当它不是时,流程循环回到步骤600。然而,针对分支指令,流程进行到步骤604,其中基于分支指令地址(例如,使用地址本身或使用对应的PC值),生成超矢量。然后在步骤606中,计算该超矢量针对先前已存储的采取超矢量和未采取超矢量中的任一项或两项的数学距离。在步骤608中,基于在步骤606所计算的数学距离,预测该分支的结果。然后,流程返回到步骤600。
图12是示出了根据一些示例性实施方案所采取的步骤序列的流程图,特别是关于作出决定的分支指令的处理。在步骤620中,关于作出决定的下一个分支的信息是可用的,并且在步骤622中,基于分支指令地址(或等效的PC值)来生成超矢量,或者从超矢量缓存区中检索出超矢量。然后在步骤624中,依据该分支的指示结果,将所生成或所检索的超矢量添加到所存储的超矢量或所存储的未采取超矢量。然后,流程返回到步骤620。
简而言之,提供了用于分支预测的装置和方法。针对分支指令,分支预测电路生成将采取还是不采取这些分支的预测。确定性地依据每个分支指令的地址,超矢量生成电路分配任意超矢量,其中这些超矢量包括至少500位。在分支作出决定后,依据该分支的决定,将对应的超矢量添加到所存储的采取超矢量或所存储的未采取超矢量。依据针对该分支指令而生成的超矢量相对于所存储的采取超矢量或未采取超矢量的数学距离度量,分支预测电路生成针对该分支指令的预测。
以下条款定义了根据本技术的各种配置:
条款1.一种装置,所述装置包括:
处理电路,所述处理电路用以响应于指令而执行数据处理操作,其中所述指令包括分支指令;
分支预测电路,所述分支预测电路用以针对分支指令而生成将采取还是不采取所述分支指令所指定的分支的预测;和
超矢量存储装置,所述超矢量存储装置用以存储所采取的超矢量和未采取的超矢量中的至少一项,
其中所述处理电路被布置成基于所述分支预测电路所生成的预测来执行推测性指令执行项,
并且所述分支预测电路包括超矢量生成电路,以确定性地依据所述分支指令的地址来分配任意超矢量,其中所述超矢量包括至少500位,其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,并且其中所述分支预测电路被布置成依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
条款2.根据条款1所述的装置,其中所述超矢量存储装置被布置成存储所采取的超矢量和未采取的超矢量,
其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,并且其中分支预测电路被布置成:当所述超矢量相对于所存储的采取超矢量的数学距离度量小于所述超矢量相对于所存储的未采取超矢量的数学距离度量时,将所述预测生成为采取;以及当所述超矢量相对于所存储的未采取超矢量的数学距离度量小于所述超矢量相对于所存储的采取超矢量的数学距离度量时,将所述预测生成为未采取。
条款3.根据任一前述条款所述的装置,其中所述超矢量生成电路被布置成确定性地依据分支指令的地址序列来生成所述超矢量。
条款4.根据条款3所述的装置,其中所述超矢量生成电路被布置成针对分支指令的地址序列中的每个地址生成相应超矢量并将所述相应超矢量相组合以生成所述超矢量。
条款5.根据条款4所述的装置,其中所述超矢量生成电路被布置成通过将元素易位应用于每个超矢量来组合所述相应超矢量以生成所述超矢量,其中每个超矢量所移位的元素位置的数目依据于每个分支从所述分支预测的当前分支对象分离出来的分支数目。
条款6.根据条款3-5中任一项所述的装置,其中所述超矢量生成电路被布置成进一步依据指示采取还是不采取每个分支指令的分支的方向位,针对分支指令的地址序列中的每个地址,生成所述相应超矢量。
条款7.根据条款3-6中任一项所述的装置,其中所述超矢量生成电路被布置成通过从先前分支指令地址序列中删除最旧分支指令的最旧超矢量贡献并添加所述分支指令地址序列的最近分支指令的最新超矢量贡献,来生成所述超矢量。
条款8.根据条款3-7中任一项所述的装置,其中所述超矢量存储装置被布置成针对分支指令的地址序列的长度范围中的每个长度,存储所采取的超矢量和未采取的超矢量中的至少一项,
并且其中所述分支预测电路被布置成针对分支指令的地址序列的长度中的每个长度,进一步依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
条款9.根据条款8所述的装置,其中所述分支预测电路被布置成基于分支指令的最长地址序列来生成所述预测,对于所述最长地址序列,所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量超过阈值。
条款10.根据任一前述条款所述的装置,其中当依据所述分支的决定而将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量时,所述分支预测电路被布置成将值限制函数应用于每个超矢量元素。
条款11.根据条款10所述的装置,其中所述超矢量生成电路被布置成生成包括元素的所述超矢量,每个元素表示+1或-1的值,并且其中所述值限制函数进行如下映射:
正值映射成+1;
负值映射成-1;以及
值0映射成随机选择+1或-1。
条款12.根据条款10所述的装置,其中所述超矢量生成电路被布置成生成包括元素的所述超矢量,每个元素表示1或0的值,并且其中所述值限制函数进行如下约束:
将表示1的两个元素相加以生成1;
将表示0的两个元素相加以生成0;以及
将表示1的元素和表示0的元素相加以生成随机选择1或0。
条款13.根据任一前述条款所述的装置,其中所述分支预测电路响应于所述分支指令所指定的分支的决定,当所述决定指示由所述分支预测电路针对所述分支而生成的预测是错误预测时,依据所述分支的决定,将所述超矢量从所存储的采取超矢量或所存储的未采取超矢量中减去。
条款14.根据任一前述条款所述的装置,其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量的元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的元素子集。
条款15.根据条款14所述的装置,其中所述分支预测电路被布置成依据所述分支的决定,将包括随机化值的所述超矢量的另一元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的另一元素子集,
其中所述元素子集与所述另一元素子集互斥。
条款16.根据任一前述条款所述的装置,其中所述分支预测电路包括模拟数学距离度量确定电路,所述模拟数学距离度量确定电路包括超矢量比较耦合,所述超矢量比较耦合被布置成选择性地将每元素电荷施加到电荷积聚线,其中每个超矢量比较耦合响应于所述超矢量的相应元素与所存储的采取超矢量和未采取超矢量中的至少一项的相应元素匹配,将所述每元素电荷施加到所述电荷积聚线,并且所述电荷积聚线上的积聚电荷高于阈值电荷被解释为超矢量匹配。
条款17.根据任一前述条款所述的装置,其中所述分支预测电路包括分支历史存储装置,所述分支历史存储装置响应于所述分支指令以存储先前已采取还是未采取所述分支指令的分支历史指示,
其中所述分支预测电路被布置成:生成所述分支历史指示与所述分支指令的地址指示的组合;以及使所述超矢量生成电路确定性地依据所述组合而生成另一超矢量,
并且其中所述分支预测电路被布置成依据所述另一超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成另一预测。
条款18.根据任一前述条款所述的装置,其中所述数学距离度量使用所比较的超矢量之间的点积。
条款19.根据任一前述条款所述的装置,其中所述数学距离度量是汉明距离。
条款20.一种分支预测方法,所述方法包括:
响应于指令来执行数据处理操作,其中所述指令包括分支指令;
针对分支指令生成将采取还是不采取所述分支指令所指定的分支的预测;
存储所采取的超矢量和未采取的超矢量中的至少一项;
基于所生成的预测来执行推测性指令执行项;
确定性地依据所述分支指令的地址来分配任意超矢量,其中所述超矢量包括至少500位;
在已执行所述分支指令时,依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量;以及
依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
条款21.一种装置,所述装置包括:
用于响应于指令来执行数据处理操作的构件,其中所述指令包括分支指令;
用于针对分支指令生成将采取还是不采取所述分支指令所指定的分支的预测的构件;
用于存储所采取的超矢量和未采取的超矢量中的至少一项的构件;用于基于所生成的预测来执行推测性指令执行项的构件;
用于确定性地依据所述分支指令的地址来分配任意超矢量的构件,其中所述超矢量包括至少500位;
用于在已执行所述分支指令时依据所述分支的决定而将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量的构件;和
用于依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测的构件。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征一起进行各种组合。
Claims (21)
1.一种装置,所述装置包括:
处理电路,所述处理电路用以响应于指令而执行数据处理操作,其中所述指令包括分支指令;
分支预测电路,所述分支预测电路用以针对分支指令而生成将采取还是不采取所述分支指令所指定的分支的预测;和
超矢量存储装置,所述超矢量存储装置用以存储所采取的超矢量和未采取的超矢量中的至少一项,
其中所述处理电路被布置成基于所述分支预测电路所生成的所述预测来执行推测性指令执行项,
并且所述分支预测电路包括超矢量生成电路,以确定性地依据所述分支指令的地址来分配任意超矢量,其中所述超矢量包括至少500位,
其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,
并且其中所述分支预测电路被布置成依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
2.根据权利要求1所述的装置,其中所述超矢量存储装置被布置成存储所采取的超矢量和未采取的超矢量,
其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量,
并且其中所述分支预测电路被布置成:当所述超矢量相对于所存储的采取超矢量的数学距离度量小于所述超矢量相对于所存储的未采取超矢量的数学距离度量时,将所述预测生成为采取;以及当所述超矢量相对于所存储的未采取超矢量的数学距离度量小于所述超矢量相对于所存储的采取超矢量的数学距离度量时,将所述预测生成为未采取。
3.根据任一前述权利要求所述的装置,其中所述超矢量生成电路被布置成确定性地依据分支指令的地址序列来生成所述超矢量。
4.根据权利要求3所述的装置,其中所述超矢量生成电路被布置成针对所述分支指令的地址序列中的每个地址生成相应超矢量并将所述相应超矢量相组合以生成所述超矢量。
5.根据权利要求4所述的装置,其中所述超矢量生成电路被布置成通过将元素易位应用于每个超矢量来组合所述相应超矢量以生成所述超矢量,其中每个超矢量所移位的元素位置的数目依据于每个分支从所述分支预测的当前分支对象分离出来的分支数目。
6.根据权利要求3-5中任一项所述的装置,其中所述超矢量生成电路被布置成进一步依据指示采取还是不采取每个分支指令的分支的方向位,针对所述分支指令的地址序列中的每个地址,生成所述相应超矢量。
7.根据权利要求3-6中任一项所述的装置,其中所述超矢量生成电路被布置成通过从先前分支指令地址序列中删除最旧分支指令的最旧超矢量贡献并添加所述分支指令地址序列的最近分支指令的最新超矢量贡献,来生成所述超矢量。
8.根据权利要求3-7中任一项所述的装置,其中所述超矢量存储装置被布置成针对分支指令的地址序列的长度范围中的每个长度,存储所采取的超矢量和未采取的超矢量中的至少一项,
并且其中所述分支预测电路被布置成针对所述分支指令的地址序列的长度中的每个长度,进一步依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
9.根据权利要求8所述的装置,其中所述分支预测电路被布置成基于分支指令的最长地址序列来生成所述预测,对于所述最长地址序列,所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量超过阈值。
10.根据任一前述权利要求所述的装置,其中当依据所述分支的决定而将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量时,所述分支预测电路被布置成将值限制函数应用于每个超矢量元素。
11.根据权利要求10所述的装置,其中所述超矢量生成电路被布置成生成包括元素的所述超矢量,每个元素表示+1或-1的值,并且其中所述值限制函数进行如下映射:
正值映射成+1;
负值映射成-1;以及
值0映射成随机选择+1或-1。
12.根据权利要求10所述的装置,其中所述超矢量生成电路被布置成生成包括元素的所述超矢量,每个元素表示1或0的值,并且其中所述值限制函数进行如下约束:
将表示1的两个元素相加以生成1;
将表示0的两个元素相加以生成0;以及
将表示1的元素和表示0的元素相加以生成随机选择1或0。
13.根据任一前述权利要求所述的装置,其中所述分支预测电路响应于所述分支指令所指定的分支的决定,当所述决定指示由所述分支预测电路针对所述分支而生成的预测是错误预测时,依据所述分支的决定,将所述超矢量从所存储的采取超矢量或所存储的未采取超矢量中减去。
14.根据任一前述权利要求所述的装置,其中当所述处理电路已执行所述分支指令时,所述分支预测电路响应于所述分支指令所指定的分支的决定,以依据所述分支的决定,将所述超矢量的元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的元素子集。
15.根据权利要求14所述的装置,其中所述分支预测电路被布置成依据所述分支的决定,将包括随机化值的所述超矢量的另一元素子集添加到所存储的采取超矢量或所存储的未采取超矢量的另一元素子集,其中所述元素子集与所述另一元素子集互斥。
16.根据任一前述权利要求所述的装置,其中所述分支预测电路包括模拟数学距离度量确定电路,所述模拟数学距离度量确定电路包括超矢量比较耦合,所述超矢量比较耦合被布置成选择性地将每元素电荷施加到电荷积聚线,其中每个超矢量比较耦合响应于所述超矢量的相应元素与所存储的采取超矢量和未采取超矢量中的至少一项的相应元素匹配,将所述每元素电荷施加到所述电荷积聚线,并且所述电荷积聚线上的积聚电荷高于阈值电荷被解释为超矢量匹配。
17.根据任一前述权利要求所述的装置,其中所述分支预测电路包括分支历史存储装置,所述分支历史存储装置响应于所述分支指令以存储先前已采取还是未采取所述分支指令的分支历史指示,
其中所述分支预测电路被布置成:生成所述分支历史指示与所述分支指令的地址指示的组合;以及使所述超矢量生成电路确定性地依据所述组合而生成另一超矢量,
并且其中所述分支预测电路被布置成依据所述另一超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成另一预测。
18.根据任一前述权利要求所述的装置,其中所述数学距离度量使用所比较的超矢量之间的点积。
19.根据任一前述权利要求所述的装置,其中所述数学距离度量是汉明距离。
20.一种分支预测方法,所述方法包括:
响应于指令来执行数据处理操作,其中所述指令包括分支指令;
针对分支指令生成将采取还是不采取所述分支指令所指定的分支的预测;
存储所采取的超矢量和未采取的超矢量中的至少一项;
基于所生成的预测来执行推测性指令执行项;
确定性地依据所述分支指令的地址来分配任意超矢量,其中所述超矢量包括至少500位;
当已执行所述分支指令时,依据所述分支的决定,将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量中;以及
依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测。
21.一种装置,所述装置包括:
用于响应于指令来执行数据处理操作的构件,其中所述指令包括分支指令;
用于针对分支指令生成将采取还是不采取所述分支指令所指定的分支的预测的构件;
用于存储所采取的超矢量和未采取的超矢量中的至少一项的构件;
用于基于所生成的预测来执行推测性指令执行项的构件;
用于确定性地依据所述分支指令的地址来分配任意超矢量的构件,其中所述超矢量包括至少500位;
用于在已执行所述分支指令时依据所述分支的决定而将所述超矢量添加到所存储的采取超矢量或所存储的未采取超矢量的构件;和
用于依据所述超矢量相对于所存储的采取超矢量和未采取超矢量中的至少一项的数学距离度量来生成所述预测的构件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20386046 | 2020-09-24 | ||
EP20386046.5 | 2020-09-24 | ||
PCT/EP2020/083485 WO2022063419A1 (en) | 2020-09-24 | 2020-11-26 | Branch prediction using hypervectors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116194886A true CN116194886A (zh) | 2023-05-30 |
Family
ID=73037917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080105398.9A Pending CN116194886A (zh) | 2020-09-24 | 2020-11-26 | 使用超矢量的分支预测 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230342150A1 (zh) |
CN (1) | CN116194886A (zh) |
GB (1) | GB2613978A (zh) |
WO (1) | WO2022063419A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904156B2 (en) * | 2009-10-14 | 2014-12-02 | Oracle America, Inc. | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
US20170322810A1 (en) * | 2016-05-06 | 2017-11-09 | Qualcomm Incorporated | Hypervector-based branch prediction |
US10819736B2 (en) * | 2017-11-29 | 2020-10-27 | Arm Limited | Encoding of input to branch prediction circuitry |
-
2020
- 2020-11-26 US US18/245,840 patent/US20230342150A1/en active Pending
- 2020-11-26 WO PCT/EP2020/083485 patent/WO2022063419A1/en active Application Filing
- 2020-11-26 CN CN202080105398.9A patent/CN116194886A/zh active Pending
- 2020-11-26 GB GB2302872.3A patent/GB2613978A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230342150A1 (en) | 2023-10-26 |
WO2022063419A1 (en) | 2022-03-31 |
GB202302872D0 (en) | 2023-04-12 |
GB2613978A (en) | 2023-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874694B (zh) | 空间存储器串流预取引擎的设备和方法、制造和测试方法 | |
CN105320519B (zh) | 使用长历史记录的条件分支预测 | |
CN104820580B (zh) | 改进的返回堆栈缓存 | |
CN106528049B (zh) | 在多存储体条件分支预测器中用于更新事件的随机数产生 | |
US20080065809A1 (en) | Optimized software cache lookup for simd architectures | |
GB2511949A (en) | Indirect branch prediction | |
US6715064B1 (en) | Method and apparatus for performing sequential executions of elements in cooperation with a transform | |
US20180349144A1 (en) | Method and apparatus for branch prediction utilizing primary and secondary branch predictors | |
US20170322810A1 (en) | Hypervector-based branch prediction | |
US10423420B2 (en) | Stream based branch prediction index accelerator for multiple stream exits | |
US7000093B2 (en) | Cellular automaton processing microprocessor prefetching data in neighborhood buffer | |
CN112639774B (zh) | 具有掩蔽功能的编译器设备 | |
US20040128490A1 (en) | Using computation histories to make predictions | |
US11442727B2 (en) | Controlling prediction functional blocks used by a branch predictor in a processor | |
US6678638B2 (en) | Processor having execution result prediction function for instruction | |
US7130991B1 (en) | Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme | |
US11829764B2 (en) | Address manipulation using indices and tags | |
CN116194886A (zh) | 使用超矢量的分支预测 | |
US7505997B1 (en) | Methods and apparatus for identifying cached objects with random numbers | |
US10430195B2 (en) | Stream based branch prediction index accelerator with power prediction | |
CN101916184B (zh) | 更新微处理器中的分支目标地址快取的方法及其微处理器 | |
TWI812524B (zh) | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 | |
Vougioukas et al. | Branch predicting with sparse distributed memories | |
Gellert et al. | Unbiased branches: an open problem | |
US8364675B1 (en) | Recursive algorithm for in-place search for an n:th element in an unsorted array |
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 |