CN1346462A - 用于改进的判定预测的方法与装置 - Google Patents

用于改进的判定预测的方法与装置 Download PDF

Info

Publication number
CN1346462A
CN1346462A CN99816330.9A CN99816330A CN1346462A CN 1346462 A CN1346462 A CN 1346462A CN 99816330 A CN99816330 A CN 99816330A CN 1346462 A CN1346462 A CN 1346462A
Authority
CN
China
Prior art keywords
ppv
lsb
instruction
operand
judgement
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
Application number
CN99816330.9A
Other languages
English (en)
Other versions
CN1133924C (zh
Inventor
E·T·格罗乔维斯基
H·J·马尔德
V·E·赫梅尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1346462A publication Critical patent/CN1346462A/zh
Application granted granted Critical
Publication of CN1133924C publication Critical patent/CN1133924C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

在一种方法中,将第一操作数的最低有效位(LSB)与第二操作数的LSB进行比较。这个比较的结果用来确定用于一判定的一个判定预测值。然后取决于该判定预测值有条件地执行一条判定指令。

Description

用于改进的判定预测的方法与装置
发明所属领域
本发明涉及计算机系统,尤其是涉及支持判定并执行判定预测的计算机系统处理器。
发明背景技术
在一个计算机系统中一个处理器操作并控制数据的流动。提高处理器的速度或吞吐量将会提高计算机的计算能力。处理器设计者采用许多不同的技术来提高处理器速度和吞吐量,从而为用户创建更强大的计算机。设计者使用的一种技术称为判定技术。
判定是指取决于一个判定值而有条件地执行指令。例如,考虑以下指令序列:
COMPARE R1=R2→p2
 (p2)ADD R3+R4→R5
第一条指令COMPARE R1=R2→p2,根据操作数R1和R2的比较结果来确定判定p2的值。如果寄存器R1的值等于寄存器R2的值,则判定p2的值设置为“真”,如果R1和R2的值不相等,则p2设置为“假”。在处理器中“真”和“假”通常分别表示为单个位值“1”和“0”(或者,在一个负逻辑实现中分别是“0”和“1”)。
第二条指令(p2)ADD R3+R4→R5,包含两个部分。第一部分(p2)为判定(或条件),第二部分ADD R3+R4→R5依据判定p2的值而进行。如果p2为真(例如一个“1”),则R5的值设置为等于R3+R4的值。如果p2为假(例如一个“0”),则跳过该指令的第二部分(实质上将该指令作为一个空操作指令处理),且处理器执行程序代码序列中的下一个后续指令。
不幸的是,COMPARE指令可能需要用很长时间来执行。因此,相关的后继指令,例如ADD指令,可能要延迟到COMPARE指令完成执行以后才执行。本发明致力于解决这个及其它问题。
发明概述
本说明中描述了一种用于执行判定预测的方法和装置。在一种方法中,将第一操作数的最低有效位(LSB)与第二操作数的LSB相比较。这个比较的结果用来确定一个用于一个判定的预测判定值。然后取决于该预测判定值有条件地执行一个判定指令。
通过附图以及随后的详细说明,本发明的其它特征和优点将会是显而易见的。
附图简要说明
本发明以附图中的例子加以说明,而不是作为限制,且附图中相似的标记表示类似的单元,其中:
图1是一个根据本发明的一个实施例形成的一个判定预测器的状态图;
图2是一个根据本发明的一个实施例形成的比较器;
图3是一个根据本发明的一个实施例形成的判定预测器;
图4是根据本发明的一个实施例形成的计算机系统;以及
图5是一个说明本发明的一种方法的流程图。
详细说明
这里描述了一种用于执行判定预测的方法和装置。根据本发明的一个实施例,使用历史信息、或者是通过比较用于确定判定值的COMPARE指令的两个操作数的选定最低有效位,对一个判定值进行预测。如果判定预测器已经确定在其基于与该判定有关的历史信息准确预测一个判定值方面的能力上具有高置信度,则用该历史信息来确定预测判定值(PPV)。另一方面,如果判定预测器在基于历史信息准确预测一个判定值方面的能力上具有低置信度,则通过比较第一操作数的LSB和第二操作数的LSB来确定PPV。一旦确定了用于一个判定的PPV,就依赖于该PPV,条件执行在该判定上判定的一条指令,即正常地执行该指令或者是将该指令作为一个空操作指令处理。
在完全执行了COMPARE指令之后,将所得到的实际判定值(APV)与PPV相比较以确定预测的准确度。如果该预测是正确的,就继续正常地执行后继指令。如果该预测是错误的,则刷新处理器流水线的后面部分,并从该判定指令开始,使用APV作为判定值重新执行这些指令。APV还用于更新保存在一个判定历史表中、与该判定有关的历史信息。
以下给出了用于本发明的实施例,包含各种配置和实现,更加详细的说明。为简单起见,术语“判定寄存器”、“判定”、“判定ID”和“判定值”可以交换使用,以及术语“寄存器”、“寄存器ID”、“寄存器值”和“操作数”也可以交换使用。例如,将“判定预测”理解为意思“判定值预测”更为确切。另一个例子,把“将第一寄存器与第二寄存器进行比较”理解为意思“将保存在第一寄存器中的值与保存在第二寄存器中的值进行比较”更为确切。
再次考虑以下指令序列:
COMPARE R1=R2→p2
 (p2)ADD R3+R4→R5
如上所述,第一条指令确定判定p2的值。第二条指令是一个判定指令,它是根据判定p2的值判定地(或是条件地)执行的。在一个高级流水线处理器中,COMPARE指令的完全执行可能需要花费几个时钟周期。为了阻止ADD指令被延迟这些时钟周期,对判定p2的值进行预测,然后取决于p2的PPV,条件执行ADD指令。
图1是一个根据本发明的一个实施例形成的一个判定预测器的状态图,其中定义了两种状态。为简单起见,参考上述讨论到的指令序列对这个状态图进行描述。
在状态100中,判定预测器使用与判定p2有关的历史信息来计算判定p2的PPV。如果在执行COMPARE指令之后确定p2的APV等于PPV,则这个预测是正确的。正确的预测可能在判定预测器基于历史信息准确地计算p2的一个PPV的能力方面产生一个高置信度等级。由于置信度高,下次在程序代码中遇到该指令序列时,还根据这个历史信息做出对p2的后续预测。
然而,如果APV不等于PPV,则该预测是错误的。由于对p2的错误预测可能会降低置信度。如果置信度降低到一个阈值以下,则状态机变换到图1中的状态101。这个状态表示:当预测器基于与p2有关的历史信息准确地计算p2的PPV的能力方面具有低置信度时,该判定预测器的操作。在转换到状态101之后,基于对COMPARE指令操作数的LSB比较,而不是使用p2的历史信息,做出p2的后续预测。
就本发明的一个实施例来说,判定预测器计算它在基于历史信息准确地计算p2的PPV的能力方面的第一置信度。该预测器还计算它在基于LSB比较准确地计算p2的PPV的能力方面的第二置信度。然后通过比较这两个计算的置信度等级来确定高和低的置信度级别,从而制定一个可变的置信度阈值。就一个可替换的实施例来说,该预测器仅仅计算单个置信度,然后将这个置信度与一个预定的阈值相比以判定是高还是低的置信度。为便于讨论,描述该判定预测器在它基于历史信息准确地计算一个判定的PPV的能力方面有一个高或低的置信度,等同于描述该判定预测器在基于操作数LSB比较准确地计算该判定的PPV的能力方面具有一个低或高的高置信度。
如果置信度超过了这个阈值,则该判定预测器转换回到图1中的状态100。作为这个转换的结果,该判定预测器使用与p2有关的历史信息、而不是使用操作数LSB的比较,来计算p2的一个后续PPV。就本发明的一个替换实施例来说,该状态图可以包含其他的状态,例如一个在确定该判定的APV之前处理器停止的状态。
图2是一个根据本发明一个实施例形成的比较器,其中将保存在寄存器R1 201中的操作数的LSB与保存在寄存器R2 202中的操作数的LSB相比较以确定一个PPV。根据图2中的实施例,在比较器203内仅仅比较64位操作数的最低有效5位,来确定一个PPV。分别使用异或XOR门210、211、212、213和214将位a(0)与b(0)、a(1)与b(1)、a(2)与b(2)、a(3)与b(3)、以及a(4)与b(4)进行比较。将每一个异或XOR门210-214的输出提供给或非NOR门220的输入,该或非门的输出就是PPV。就这个实施例来说,PPV为1表示:寄存器201中操作数的最低有效5位a(0)-a(4)等于寄存器202中操作数的最低有效5位b(0)-b(4)。PPV为0表示这些位彼此不相等。
根据本发明的一个实施例,比较两个操作数的LSB产生一个结果要比比较这些操作数的所有位产生一个结果快。例如,这可能是由于比较器的逻辑门输入局限所造成的。这个输入局限可能需要一个费时的、扩充串联的逻辑门来比较这些操作数的所有位。通过仅仅比较这两个操作数的LSB、而不是所有位,就可以使用一个快速的、二级串联,例如如图2所示的那个。
一般来说,如果这两个操作数在数值上非常接近,则这两个操作数的一个足够数目的LSB比较,能够预测这些操作数所有位的比较结果。可以通过适当地平衡PPV准确度、比较器尺寸、以及比较器速度,确定产生该判定的一个PPV所需要的LSB数目。例如,随着比较的LSB数目增加,PPV准确度也会增加,但是比较器尺寸也可能增加,而且比较器速度可能降低。相反地,随着比较的LSB数目减少,比较器尺寸也会降低,而且比较器速度会增加,但是PPV的准确度会降低。
就本发明的一个实施例来说,将操作数位数四分之一或更少的最低有效位进行比较以确定PPV。对64位的操作数来说,这数字意味着每个操作数的最低有效16位。就另一个实施例来说,将操作数位数八分之一或更少的最低有效位进行比较以确定PPV。对64位的操作数来说,这意味着每个操作数的最低有效字节。然而,应注意本发明不局限于64位长度的操作数。在本发明的多个可选实施例中可以使用多种操作数长度。此外,操作数中小于位总数、任意数量的LSB可以与另一操作数相应数量的LSB进行比较以确定PPV。
尽管在图2中的比较器确定这些LSB是否相等,根据本发明的替换实施例形成的比较器可以在这些操作数的LSB或其它任何位之间进行任何数学关系的比较。例如,在一个实施例中,如果通过一条确定第一操作数是否大于或等于第二操作数的COMPARE指令来确定一个判定,则相应地,比较器通过确定第一操作数的LSB或最高有效位(MSB)是否大于或等于第二操作数的LSB或MSB来计算PPV。在一个实施例中,如果通过一条确定第一操作数是否小于第二操作数的COMPARE指令来确定一个判定,则相应地,比较器通过确定第一操作数的LSB或MSB是否小于第二操作数的LSB或MSB来计算PPV。
图3是一个根据本发明的一个实施例形成的判定预测器。判定历史记录表301储存与多个指令中的每一条有关的历史信息,并用指令指针(IP)进行索引。此外,表301储存与IP有关的置信度等级。寄存器文件302储存与多个寄存器有关的寄存器值。表301和寄存器文件302的输出与PPV计算器303的输入相连,303的输出与推测性判定寄存器文件(SPRF)304的一个输入相连。SPRF 304的一个输出与处理器流水线305的PPV输入相连,SPRF 304的另一输出与异或XOR门306的一个输入相连。指令300,在被一个解码器(未显示)解码之后,分别提供到流水线305的输入端以及IP、寄存器、和与判定历史记录表301相连的判定选择电路、寄存器文件302、和SPRF 304。就一个实施例来说,这个选择电路包含一个多路复用器。流水线305的APV输出与XOR门306的一个输入、以及判定历史记录表301的一个输入相连。XOR门306的输出与流水线305的刷新信号输入端相连。流水线305的IP输出与表301的IP选择电路相连,并且流水线305的判定ID输出与SPRF 304的判定选择电路相连。流水线305的寄存器值输出端与PPV计算器303的一个输入端相连。
为了演示图3判定预测器的操作,考虑如上所述的指令序列的执行。在处理器读取并解码第一条指令COMPARE R1=R2→p2之后,将该指令的IP从块300提供给图3的判定预测器。COMPARE指令的IP用来从判定历史记录表301中选择适当的位置。从表301中读取与这个指令有关的历史信息和置信度(以及,因此,与p2有关的历史信息),并将它们提供给PPV计算器303。同时,R1和R2的寄存器ID用来从寄存器文件302中选择适当的操作数。从表301读取选定的操作数R1和R2的LSB,并将其提供给PPV计算器303内部的比较器312。比较器312包含以类似于图2中的比较器203的方式构成和操作的电路。
就本发明的一个实施例来说,保存在图3的表301中的历史信息可以包含多个位,且PPV计算器303基于历史记录的预测电路311可以使用这些位以及传统的分支预测技术来计算p2的一个PPV。例如,可以使用一个两位可逆计数器或是双模态预测技术以便在p2的一系列准确PPV内部容许有单个、错误的PPV。也可以使用局部或全局预测技术,或是做为选择,可以使用这些技术的组合,例如一个选择预测器。
保存在图3的判定历史记录表301中的历史信息可以包含与程序历史记录、上下文相互关系、或PPV准确率有关的信息。就本发明的一个替换实施例来说,在计算器303内部的某些或全部基于历史记录的预测电路311可以合并到判定历史记录表301中。照这样,可以计算基于历史信息的PPV并将其保存在该表中,而不是由计算器303“即时”计算。就本发明的一个替换实施例来说,判定历史记录表301由相关判定(例如这些例子中的p2)的判定ID、或是那个使用计算器303计算PPV的判定指令的IP来进行索引。
置信度等级也保存在图3的表301中。就本发明的一个实施例来说,这些等级反映了在基于历史信息进行判定预测的准确度方面的相对置信度。如果在基于与p2有关的历史信息进行预测的准确度方面置信度为高(即在一个阈值之上),则使用该历史信息确定p2的PPV。然而,如果该置信度为低(即低于一个阈值),则通过比较R1和R2的操作数的LSB来确定p2的PPV。一个在图3PPV计算器303内部的、包含多路复用器313的选择器,在基于历史记录的预测电路311的历史信息或是比较器312的LSB比较的基础上,选择PPV。多路复用器313的第一输入端与基于历史记录的预测电路311的输出端相连,第二输入端与LSB比较器312的输出端相连。多路复用器313的控制输入端由来自表301的置信度等级进行控制,该多路复用器的输出即为PPV计算器303的PPV输出。
要注意到:操作数R1和R2的LSB从寄存器文件302到达在图3的PPV计算器303内部的比较器312可能要耗费一段时间。例如这个延迟可能是由于在寄存器文件302和计算器303之间的长距离。例如,寄存器文件302和计算器303可以存在于处理器的独立单元中。此外,这个延迟也可能是由于在R1或R2上的一个写后读故障造成的。就本发明的一个实施例来说,可通过将计算器303连接到来自于流水线305的寄存器支路总线来减少这个延迟。这个总线表示从流水线305的寄存器值输出端到PPV计算器303中的LSB比较器312的输入端之间的连接。注意到:这个总线还可以同时与寄存器文件302相连(未显示)以更新文件302中的寄存器值。
尽管利用了支路总线,来自于表301的历史信息和置信度等级可以在操作数R1和R2到达该计算器以前到达图3的PPV计算器303。因此,可以在根据比较LSB计算PPV之前根据历史信息计算p2的一个PPV。因此,根据本发明的一个实施例,当确定置信度为高时,PPV计算器303基于历史信息向SPRF 304提供一个及早的预测。当确定置信度为低时,计算器303根据LSB比较向SPRF 304提供一个稍后预测。
p2的PPV在由图3的计算器303计算了之后,输入到SPRF 304中,在那儿PPV等候一条在p2上进行判定的后继指令的访问。根据本发明的一个实施例,SPRF 304是一个包含了所有判定的PPV存储单元的寄存器文件。还没有提交到一个体系状态的推测性判定(即PPV)保存在SPRF 304的适当位置中。就本发明的一个实施例来说,提供了用于64个判定的处理器体系结构,SPRF 304包含64个可以存储PPV的单元p0-p63。
在如上所述判定预测器活动的同时,向图3流水线305的输入端提供COMPARE指令。在流水线305内部,通过执行操作数R1和R2的全部位比较来确定p2的APV。当COMPARE指令在流水线中正被执行,但是在确定APV之前时,接下来将解码的ADD指令从块300提供给判定预测器。p2的判定ID用来从SPRF 304中选择适当的PPV。当判定的ADD指令提供给流水线305的指令输入端时,从SPRF 304中读取p2的PPV并提供给流水线305的PPV输入端。如果p2的PPV为“真”,则正常地执行该ADD指令。如果用于一个判定的PPV为“假”,则将该指令作为一条空操作指令处理。将一条指令作为一个空操作指令处理,意味着该指令要么不执行,要么是如果执行的话也不用得到的数据来更新寄存器文件的结构状态。
当判定的ADD指令在图3流水线305内执行时,先前的COMPARE指令完成了执行,并确定了一个p2的APV。p2的APV在流水线305的APV输出端提供,而且用于COMPARE指令的IP在IP输出端提供。这个IP传送到判定历史记录表301的IP选择电路,并用来在这个表中选择适当的存储单元以向其中写入p2的APV。这个APV用来更新与p2有关的历史信息以及置信度等级。此外,p2的判定ID从流水线305的输出端传送到SPRF 304的判定选择电路以便从文件中选择适当的存储单元读取p2的PPV。这个PPV与p2的APV经由XOR门306进行比较,以确定判定p2是准确预测了(即APV与PPV相匹配)还是错误预测了(即APV不匹配于PPV)。如果p2的PPV是准确的,则正常地继续执行指令。然而,如果PPV是错误预测的,就从XOR门306向流水线305发送一个刷新信号,从而使流水线305刷新其中正被执行的指令。
除了向图3中的判定历史记录表301和异或XOR门306的一个输入端提供p2的APV之外,将p2的APV、以及它的判定ID提供给体系结构判定寄存器文件(APRF)(未显示)以便更新p2的判定值。APRF储存非推测性、体系结构确认的判定值,并且由在p2上判定执行的后继指令进行访问来确定该指令是执行还是将其作为一条空操作指令来处理。根据向XOR门306提供p2的PPV,SPRF 304使与p2有关的输入无效。照这样,由在p2上判定执行的后继指令对SPRF 304的未来访问将导致一个错误,促使这些指令使用保存在APRF中的p2的APV。
要注意到:图3的流水线305仅仅表示处理器完整流水线的一部分。更准确地说,流水线305包含流水线的后端部分,它包含执行阶段。由于判定预测是在流水线的后端附近执行的,因此与一个传统的错误预测分支恢复过程相比需要更新较少的指令。如果p2的PPV是错误预测的,则要刷新ADD指令和任何直接地或间接地在错误PPV上进行的后继指令并通过流水线305重新执行。
图4是根据本发明的一个实施例形成的计算机系统。处理器400与高速缓存405相连,并包含流水线401,其后端部分与判定预测器402相连。桥接器410经由系统总线与处理器400相连。桥接器410用来将处理器400连接到主存储器415和外围设备部件420以及430。桥接器425将键盘435、外部存储器440、以及监视器445连接到桥接器410。
图4中的外围设备部件420和430可以包含音频与视频输入/输出设备,例如音频/视频信号发生器、加速器、或分析器。外部存储器440 440可以包含一个硬盘驱动器、软盘、磁带驱动器、其它磁存储介质、一个电池供电的随机存取存储器(RAM)设备、一个电可编程序只读存储器(EPROM)存储设备、其它固态的存储设备、一个光盘CD-ROM、或其它非易失性计算机可读存储介质。
根据本发明的一个实施例,一条COMPARE指令的一个操作数值、以及COMPARE指令本身最初保存在图4的外部存储器440中。在计算机系统操作期间,处理器400开始将COMPARE指令和操作数从外部存储器440经由桥接器425和410传送到主存储器415中。然后COMPARE指令和操作数可以在由处理器400接收和使用之前传送到高速缓存405,或者是COMPARE指令和操作数可以直接从主存储器415经由桥接器410传送到处理器400。
COMPARE指令一旦处于图4的流水线401中,就对其进行解码。将解码过的指令提供给判定预测器402,其指定为和流水线401,以类似于如上所述图3中的判定预测器和流水线的操作方式协同操作。在判定预测期间,该操作数的LSB与COMPARE指令的第二操作数的LSB相比较从而计算出一个用于一判定的PPV。就本发明的一个可选实施例来说,该操作数是由处理器400的计算结果产生的,接着保存在外部高速缓存405或者主存储器415中。这个操作数然后被处理器400再次调用来执行该COMPARE指令。或者是,该操作数可以在任一外围设备部件420或430的一个存储单元内产生。
图5是一个显示了本发明的一种方法的流程图。在步骤510中,确定一个置信度等级。这个置信度等级表示由判定预测器确定的、该判定预测器基于与一个判定有关的历史信息准确地预测该判定的能力方面的置信度。在步骤515中,预测器确定计算的置信度等级是否小于一个阈值。
如果计算的置信度等级小于一个阈值,则在步骤525中,通过比较一条COMPARE指令第一操作数的LSB和第二操作数的LSB来确定该PPV。然而,如果计算的置信度等级不小于一个阈值,则在步骤520中使用与分支预测技术相当的历史信息来确定该PPV。
这个发明已经就它的特定示范实施例来进行描述。然而,对那些本领域的技术人员来说,显然可以在没有背离本发明宽广的精神和范围的情况下对这些实施例进行各种修改和变化。因此应以一个作例证而不是限制的意义来对待该说明书和附图。

Claims (28)

1.一种执行一指令序列的方法,包含以下步骤:
将第一操作数第一多个最低有效位(LSB)与第二操作数的第二多个LSB进行比较来确定一个用于一个判定的预测判定值(PPV);以及
取决于该PPV,条件地执行一条判定指令。
2.如权利要求1所述的方法,进一步包含步骤:
执行一条COMPARE指令来确定用于该判定的一个实际判定值(APV);
将该APV与该PPV进行比较;以及
如果APV和PPV不相等就刷新一条流水线。
3.如权利要求2所述的方法,进一步包含步骤:在刷新流水线之后执行该判定的指令。
4.如权利要求2所述的方法,其特征在于:刷新该流水线包含仅仅刷新该流水线的后端部分。
5.如权利要求2所述的方法,进一步包含步骤:在将APV与PPV进行比较之后更新在一个判定历史记录表中对应于该判定的历史信息。
6.如权利要求1所述的方法,其特征在于:第一多个与第二多个的比较包含将第一操作数的最低有效四分之一或更少的位数与第二操作数的最低有效四分之一或更少的位数进行比较。
7.如权利要求1所述的方法,其特征在于:条件执行该判定指令包含,如果PPV为真的话,就执行该判定指令。
8.如权利要求7所述的方法,其特征在于:条件执行该判定指令包含,如果PPV为假的话,就将该判定指令作为一条空操作指令来处理。
9.如权利要求1所述的方法,其特征在于:第一多个与第二多个的比较是在确定了在基于与该判定有关的历史信息准确地计算PPV的能力方面具有一个低置信度等级之后进行的。
10.一种执行一指令序列的方法,包含以下步骤:
确定基于与一个判定有关的历史信息准确地计算用于该判定的一个预测判定值(PPV)的能力的一个置信度等级;
如果确定该置信度等级是第一等级,则使用该历史信息确定PPV;以及
如果确定该置信度等级是第二等级,则通过比较一条COMPARE指令的第一操作数的第一多个最低有效位(LSB)和第二操作数的第二多个LSB来确定PPV。
11.如权利要求10所述的方法,进一步包含步骤:
取决于该PPV,条件执行一条判定指令;
确定一个用于该判定的实际判定值(APV);以及
如果APV和PPV不等,则刷新一条流水线的后端。
12.如权利要求10所述的方法,其特征在于:通过比较来确定PPV的步骤,包含将第一操作数最低八分之一或更少的LSB与第二操作数最低八分之一或更少的LSB进行比较。
13.如权利要求10所述的方法,其特征在于:通过比较来确定PPV的步骤,包含第一多个和第二多个之间相等的比较。
14.一种处理器包含:
一个判定历史记录表;
一个寄存器文件;
一个预测判定值(PPV)计算器,具有第一输入端与判定历史记录表的一个输出端相连,以及第二输入端与寄存器文件的一个输出端相连;以及
一个与计算器的一个输出端相连的推测性判定寄存器文件。
15.如权利要求14所述的处理器,进一步包含:
一个IP选择电路,有一个输出端与判定历史记录表相连;
一个寄存器选择电路,有一个输出端与寄存器文件相连;以及
一个指令解码器,有一个输出端与IP选择电路和寄存器选择电路的输入端相连。
16.如权利要求15所述的处理器,进一步包含一条流水线,它有一个PPV输入端与该文件的一个输出端相连,以及一个实际判定值(APV)输出端与判定历史记录表的一个输入端相连。
17.如权利要求16所述的处理器,进一步包含一个异或XOR门,它的第一输入端与该流水线的APV输出端相连,第二输入端与该文件的一个输出端相连,以及一个输出端与该流水线的一个刷新输入端相连。
18.一种处理器包含:
一个判定历史记录表,用来存入与一个判定有关的历史信息;以及
一个预测判定值(PPV)计算器,用以基于对第一操作数的第一多个最低有效位(LSB)和第二操作数的第二多个LSB进行的一个比较来计算一个PPV。
19.如权利要求18所述的处理器,进一步包含一个用以存储该PPV的推测性判定寄存器文件。
20.如权利要求19所述的处理器,进一步包含一条流水线,用来接收该PPV,并取决于该PPV有条件地执行一条判定指令。
21.如权利要求18所述的处理器,进一步包含一条流水线,用来接收该PPV,并取决于该PPV有条件地执行一条判定指令。
22.如权利要求21所述的处理器,其特征在于:该流水线包含一个实际判定值输出端用来向判定历史记录表提供一个实际判定值。
23.如权利要求18所述的处理器,其特征在于:计算器包含一个选择器,用以根据一个置信度等级选择基于历史信息或是基于比较的PPV。
24.一个系统包含:
用以存储一个第一值的存储器;
一条总线,用以从该存储器传送第一值;以及
一个处理器,用以从总线接收第一值,并将第一值的第一多个最低有效位(LSB)与第二值的第二多个最低有效位(LSB)进行比较从而计算一个用于一判定的预测判定值(PPV)。
25.如权利要求24所述的系统,其特征在于:该存储器是主存储器。
26.如权利要求24所述的系统,其特征在于:该总线是一条系统总线。
27.如权利要求24所述的系统,其特征在于:该处理器进一步包含一条流水线,用来接收该PPV,并取决于该PPV,有条件地执行一条判定指令。
28.如权利要求25所述的系统,其特征在于:该处理器进一步包含一个判定历史记录表,用以存储与该判定有关的历史信息。
CNB998163309A 1998-12-31 1999-12-23 用于改进的判定预测的方法与装置 Expired - Fee Related CN1133924C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/224,414 US6367004B1 (en) 1998-12-31 1998-12-31 Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US09/224,414 1998-12-31

Publications (2)

Publication Number Publication Date
CN1346462A true CN1346462A (zh) 2002-04-24
CN1133924C CN1133924C (zh) 2004-01-07

Family

ID=22840567

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998163309A Expired - Fee Related CN1133924C (zh) 1998-12-31 1999-12-23 用于改进的判定预测的方法与装置

Country Status (6)

Country Link
US (2) US6367004B1 (zh)
CN (1) CN1133924C (zh)
AU (1) AU2387400A (zh)
DE (1) DE19983860B4 (zh)
GB (1) GB2360111B (zh)
WO (1) WO2000041072A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1320452C (zh) * 2002-08-28 2007-06-06 先进微装置公司 用于支持数据推测式执行的微处理器与方法
WO2010012167A1 (zh) * 2008-07-31 2010-02-04 华为技术有限公司 指令执行方法和装置

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6442679B1 (en) * 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6625744B1 (en) * 1999-11-19 2003-09-23 Intel Corporation Controlling population size of confidence assignments
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
US6654878B1 (en) * 2000-09-07 2003-11-25 International Business Machines Corporation Register bit scanning
US7051191B2 (en) * 2001-12-26 2006-05-23 Intel Corporation Resource management using multiply pendent registers
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US20040025153A1 (en) * 2002-07-30 2004-02-05 Johnson Teresa L. System and method for software pipelining loops with multiple control flow paths
US7299225B2 (en) 2002-11-26 2007-11-20 International Business Machines Corporation High performance predicate push-down for non-matching predicate operands
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US9946550B2 (en) 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
US7818551B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps
US8340478B2 (en) * 2008-12-03 2012-12-25 Massachusetts Institute Of Technology Resonant optical modulators
US20100217962A1 (en) * 2009-02-26 2010-08-26 Lsi Corporation Predicting a conditional bit value for continuing execution of an instruction
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
WO2011159309A1 (en) 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
US9495169B2 (en) * 2012-04-18 2016-11-15 Freescale Semiconductor, Inc. Predicate trace compression
US20130283023A1 (en) * 2012-04-18 2013-10-24 Qualcomm Incorporated Bimodal Compare Predictor Encoded In Each Compare Instruction
US9389868B2 (en) 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9582279B2 (en) 2013-03-15 2017-02-28 International Business Machines Corporation Execution of condition-based instructions
WO2014147446A1 (en) * 2013-03-21 2014-09-25 Freescale Semiconductor, Inc. Data processing device, method of reporting predicate values, and data carrier
US9946549B2 (en) 2015-03-04 2018-04-17 Qualcomm Incorporated Register renaming in block-based instruction set architecture
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578750A (en) * 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US4967351A (en) * 1986-10-17 1990-10-30 Amdahl Corporation Central processor architecture implementing deterministic early condition code analysis using digit based, subterm computation and selective subterm combination
US4999800A (en) * 1989-11-13 1991-03-12 Motorola, Inc. Floating point adder with pre-shifter
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5210870A (en) * 1990-03-27 1993-05-11 International Business Machines Database sort and merge apparatus with multiple memory arrays having alternating access
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5919256A (en) * 1996-03-26 1999-07-06 Advanced Micro Devices, Inc. Operand cache addressed by the instruction address for reducing latency of read instruction
AU3666697A (en) 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US5857104A (en) 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US6021487A (en) * 1996-12-16 2000-02-01 Intel Corporation Method and apparatus for providing a signed integer divide by a power of two
US5909566A (en) * 1996-12-31 1999-06-01 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction
US6092187A (en) * 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6240510B1 (en) * 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6115808A (en) * 1998-12-30 2000-09-05 Intel Corporation Method and apparatus for performing predicate hazard detection
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6442679B1 (en) * 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1320452C (zh) * 2002-08-28 2007-06-06 先进微装置公司 用于支持数据推测式执行的微处理器与方法
WO2010012167A1 (zh) * 2008-07-31 2010-02-04 华为技术有限公司 指令执行方法和装置

Also Published As

Publication number Publication date
US6367004B1 (en) 2002-04-02
DE19983860T1 (de) 2002-01-31
AU2387400A (en) 2000-07-24
GB2360111A (en) 2001-09-12
DE19983860B4 (de) 2007-12-06
GB2360111B (en) 2003-11-05
WO2000041072A1 (en) 2000-07-13
CN1133924C (zh) 2004-01-07
US7085919B2 (en) 2006-08-01
US20020016907A1 (en) 2002-02-07
GB0114437D0 (en) 2001-08-08

Similar Documents

Publication Publication Date Title
CN1133924C (zh) 用于改进的判定预测的方法与装置
CN1302376C (zh) 利用第二级分支预测表的分支预测的方法和设备
CN102934075B (zh) 用于使用预先通知技术改变程序的顺序流程的方法和设备
CN101256481B (zh) 数据处理器以及存储器读激活控制方法
CN1148650C (zh) 数据处理系统、微处理器以及处理指令的方法
CN1109967C (zh) 多线程处理器中指令和关联读取请求的后台完成
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
GB2363873A (en) Processor and Method including a Cache having Confirmation Bits for Improving Address-Predictable Branch Instruction Target Predictions
CN103257849A (zh) 程序执行控制装置
CN1582429A (zh) 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法
US7017030B2 (en) Prediction of instructions in a data processing apparatus
TW201235940A (en) Bimodal branch predictor encoded in a branch instruction
US6883090B2 (en) Method for cancelling conditional delay slot instructions
CN1512325A (zh) 使用计算历史进行预测
CN1124546C (zh) 一种超标量处理器及在该超标量处理器中完成指令的方法
EP0497579B1 (en) Circuit for executing conditional branch instructions in a pipelined processor
CN116048627A (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
US20220091850A1 (en) Apparatus and method for efficient branch prediction using machine learning
US6859874B2 (en) Method for identifying basic blocks with conditional delay slot instructions
CN1117618A (zh) 具有转移预测的数据处理及其操作方法
CN114020441A (zh) 一种多线程处理器的指令预测方法及相关装置
US6487576B1 (en) Zero anticipation method and apparatus
CN100474238C (zh) 执行流同义词的方法和装置
EP0992884B1 (en) Zero anticipation method and apparatus
CN101937333A (zh) 判断系统及方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040107

Termination date: 20121223