CN1512325A - 使用计算历史进行预测 - Google Patents
使用计算历史进行预测 Download PDFInfo
- Publication number
- CN1512325A CN1512325A CNA2003101129115A CN200310112911A CN1512325A CN 1512325 A CN1512325 A CN 1512325A CN A2003101129115 A CNA2003101129115 A CN A2003101129115A CN 200310112911 A CN200310112911 A CN 200310112911A CN 1512325 A CN1512325 A CN 1512325A
- Authority
- CN
- China
- Prior art keywords
- instruction
- historical
- calculating
- history
- static
- 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
- 230000003068 static effect Effects 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 16
- 238000010276 construction Methods 0.000 claims 4
- 238000004891 communication Methods 0.000 claims 2
- 238000012856 packing Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 6
- 241001269238 Data Species 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000011160 research 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
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
所属领域
本发明属于程序执行,特别是提高运行程序指令的效率。
背景技术
计算机最初建造的目的是运行程序,而并不关心使计算机有效率:能够运行为计算机写的程序就足够了。因此,处理器读一个指令并运行它,而后返回程序等待下一个指令。
随着计算机设计更多地被大家所知,工程师已经可以设计比简单的“取来并运行”的处理器要更有效率的处理器。现代的处理器包括“流水线”:在任何时刻,处理器的不同部分运行不同的指令。例如,当中央处理单元的核心正在运行一个指令,处理器的另一部分也许正在从存储器加载未来的指令需要的数据值。
已经得到广泛研究和思考的处理器设计的一个领域是分支处理。在分支指令运行后,根据一个关联的数据值,可以在两个(或更多)不同点中的一个继续控制。这引起现代处理器的一个问题:直至得到分支指令输出,任何随后指令的预处理是徒然的。
为了解决这个问题,现代处理器进行分支预测。与其等待分支指令得到执行以及通过程序得到正确的路径,该处理器进行猜测。但是如果处理器猜测的不正确,任何根据计划路径的预处理都将浪费。例如,如果对分支指令的两个可能的随后的指令都加载一个值到寄存器,如果该错误指令被预处理,则寄存器中会存在该错误值。处理器必须解消对错误路径的预处理。如果处理器猜测错误,运行会比处理器只简单等待分支指令运行慢一些。
与其盲目猜测,分支预测器试图进行有根据的猜测。为了实现此目的,他们做了某些假设。一个可能的假设是,一个特定分支指令的输出单独取决于此分支先前的输出。另外,更一般的假设是,该输出取决于分支指令之前的若干(固定大小)组指令。还有其他一些变种。
图1说明了根据现有技术在运行一程序的计算机系统。图1中,计算机系统105包括计算机110,其中装有存储器115。图1中的一部分说明了装入存储器115的程序130。程序130包括分支指令135。
在一个支路的最经常的方向是最可能的方向的假设下,使用表140,一个分支预测器可以预测一个分支是否被采用。如行145所示,指令135被采用的次数比不采用的次数多(每次该分支被采用,计数器增加,分支不被采用,计数器减少)。因而,分支预测器可以推测出该分支将被再次采用。
在分支方向受在先指令影响的假设下,分支预测器注意指令150(包括指令135),并把它们的程序计数器散列在一起。这样产生一个索引,分支预测器可以用于访问表155。使用这个方法,如行160显示,分支预测器将会推测出该分支不会被采用。
但是考虑到一个分支预测器观察分支前的最后五个指令。不保证任何这些指令对控制分支输出的数据值上有任何影响。同样地,不保证这些指令是影响预测的唯一指令。也许存在一条与分支的输出高度相关的旧指令。
为了更精确地预测分支和指令的其他特性,我们需要一种途径来致力于解决与现有技术相关的这些和其他问题。
附图简述
图1是根据现有技术的一个在运行程序的计算机系统。
图2是根据本发明的一实施例,对指令特性进行预测的计算机系统。
图3是根据本发明的一实施例,在图2所示的计算机系统中,与计算历史相关联的寄存器。
图4是根据本发明的一实施例,从其他寄存器生成的一个图3所示的寄存器的计算历史。
图5是根据本发明的一实施例,在没有使用其它寄存器的计算历史的前提下,生成一个图3所示寄存器的计算历史。
图6是根据本发明的一实施例,在图2所示计算机系统中,生成一个查找表索引。
图7A-7B是根据本发明的一实施例,在图2所示计算机系统中,为一个指令构建计算历史的步骤的流程图。
图8是根据本发明的一实施例,在图2所示计算机系统中,使用一种可能的散列函数来产生计算历史的步骤的流程图。
图9是根据本发明的一实施例,在图2所示计算机系统内,使用一个计算历史来预测指令特性的步骤的流程图。
详细描述
图2是根据本发明的一实施例,对指令特性进行预测的计算机系统。图2中,计算机系统202与图1中的计算机系统105非常相似。计算机系统202包括计算机205,监视器210,键盘215和鼠标220。本领域技术人员会发现尽管计算机系统202显示为台式个人计算机,但本发明不局限于任何特定类型的计算机。例如,计算机系统202也可以是一个缺少计算机205,键盘215或鼠标220的互联网设备。计算机系统202也可以成为个人数字助理(PDA),或是无线计算机,或是其他设备的其中一种。在图2中,计算机系统202中部分没有显示的做为其一部分的选装设备包括其他输入/输出设备,例如打印机或调制解调器。图2中也没有显示某些计算机系统202的常规内部组件:如,中央处理单元,文件系统,网络接口等等。
计算机205包括计算历史发生器225。计算历史发生器225负责在程序130中产生指令的计算历史。有关计算历史是什么和如何被使用的具体情况会在图3-5中提及。在一个实施例中,计算历史发生器225是计算机205的中央处理单元的一部分。在另一个实施例中,计算历史发生器225是中央处理单元的外部硬件。在第三个实施例中,计算历史发生器225是当计算机运行时,存储于存储器115中的软件。
当计算机系统202需要对一个指令的特性做预测时,计算历史发生器225为该指令产生.一个计算历史。该计算历史可用于确定对查阅表230的索引。该查阅表存储着对指令特性的预测。例如,如果询问的特性是分支指令135的方向,指令135的计算历史可以由计算历史发生器225产生。然后,计算历史可以用于确定索引0x41D1,该索引指向查阅表230的行235。该分支的预测是该分支将会被采用(由正向计数器值显示出)。
图3显示了根据本发明的一实施例,在图2所示计算机系统中与计算历史关联的寄存器。图3中显示了程序130,同时也显示了作为中央处理单元中的寄存器305-1至305-8。不同的指令使用这些寄存器:例如,指令310使用寄存器305-1,305-3和305-5,指令315使用寄存器305-5和305-7。
寄存器可以是源寄存器或目标寄存器(或两者都是),取决于指令是从寄存器读一个值还是写一个值到寄存器。例如,寄存器305-5是指令310的一个目标寄存器,也是指令315的源寄存器(箭头的方向显示一个寄存器是源寄存器还是目标寄存器)。
与每个寄存器关联的是计算历史。例如,寄存器305-1与计算历史320-1关联,寄存器305-2与计算历史320-2关联,等等。每个计算历史是影响寄存器当前数据值的所有事件的信息融合。影响寄存器当前数据值的事件可以包括其他寄存器值,静态常量,存储器值,写入寄存器的指令,等等。为了简化计算历史的产生,在一个实施例中只使用静态数据以产生计算历史。形容词“静态”意味着计算历史产生中使用的事件(通常是某类数据)是在程序编译时就知道的事件(比较术语“静态”与“动态”和“运行时间”,意味着事件在程序运行时才知道)。换句话说,计算历史不取决于实际运用在程序中的数据,并限于某些在每一时间运行程序时总是相同的事件。
为生成寄存器的计算历史,首先,需要确定计算历史和其他对寄存器有影响的对象的静态数据。典型地,这些是由写入寄存器的指令使用的其他寄存器的计算历史。也可以使用其他静态数据:例如,写入到寄存器的指令的程序计数器。将这些计算历史和其他静态数据通过一个散列算法散列在一起。结果得到与在当前状况下的寄存器关联的计算历史。
例如,考虑到一个如ADD R1,R2,R3的指令,该指令指示处理器读取寄存器R1和R2的值,将读出的值相加,结果存储在寄存器R3中。运行这个指令后,为计算寄存器R3的计算历史,需读取寄存器R1和R2的计算历史,但ADD指令的程序计数器可任选。这些值散列在一起,产生一个新的计算历史,该计算历史可与寄存器R3关联(至少到寄存器R3已经分配了一个新值前)。
通常把一组寄存器(寄存器305-1至305-8)称为一个寄存器文件。在本文中,当寄存器中的值变化时,寄存器文件也相应变化。同样,计算历史320-1至320-8可以被称为一个计算历史文件。当与单独寄存器相关联的计算历史改变时,计算历史文件也相应改变。
图4使用特定散列算法详细图解了该过程。图4中,源寄存器的计算历史是确定的:在这种情况下,是计算历史320-1和320-3。由于散列算法使用了指令的程序计数器,程序计数器405也会被确定。此信息被输入至计算历史发生器225,其详细情况显示在框410中。如框410所示,计算历史之一被循环移位,产生循环移位后的计算历史420。如图框425所示,该计算历史通过一个“异或”操作与其他计算历史和程序计数器405组合。结果被框430移位。最终输出是寄存器305-5新的计算历史。
框410中按次序解释了散列算法。首先,如果相同的计算历史被使用两次(在同一个寄存器被作为指令的源操作使用两次时,该情况可以发生),则同一不经循环移位操作数的“异或”操作将归零。为了避免该情况,计算历史之一可以被循环移位。其次,通过结果移位,计算历史将老化。这将帮助计算历史反映新近的指令比老化的指令对计算历史的值影响更大的事实。
在本发明的一实施例中,一个计算历史持续的时间仅仅与它被使用的时间一样长。例如,假定寄存器305-5当前储存着一个值,计算历史320-5当前在寄存器305-5中存储一个计算历史的值。如果下一个指令从存储器读出一个值,并存入寄存器305-5,一个新计算历史320-5将会产生,旧的计算历史将消失。在另一个实施例中,与丢弃计算历史不同,计算历史可以置于计算历史栈435中。计算历史栈435在存储器的某一位置,当相应的寄存器的值被存入存储器时,计算历史可以存入计算历史栈。然后,如果该计算历史的值返回至寄存器,相应计算历史可以从计算历史栈435重新得到。例如,当寄存器305-5的值被交换出至存储器,行440显示与该值相关的计算历史的值是0x34D12F21。
虽然如图3-4显示了计算历史与寄存器相关,它们也可与指令相关联。指令的计算历史可以是一个操作数的计算历史,一个由源操作数(或者其他静态信息)或目标操作数的计算历史产生的计算历史。例如,在预测一分支指令时,源寄存器的计算历史可以被加载为指令的计算历史。
本领域技术人员将认识到,计算历史的生成是递归的:就是说,产生一计算历史依赖于对先前计算历史的了解。通过计算历史递归产生,每个计算历史标识(通过散列)影响寄存器当前值的所有的值。影响计算历史的对象数目没有限制:计算历史有效的跟踪寄存器中当前数据值的全部起源。
本领域技术人员也认识到,指令可以有非寄存器的操作数对象。例如,一个“加载”指令加载一个数据值(或许来自存储器,如果直接存储器寻址是允许的,或许是一个静态值)到寄存器中。这些如何影响计算历史将通过以下的图5进一步讨论。
图5是根据本发明的一实施例,没有使用其它寄存器的计算历史,生成一个图3所示寄存器的计算历史。图5中,指令505可以是一个“加载”指令,从存储器515加载一个值到寄存器。加载指令505的计算历史通常是在忽视加载指令505使用的任何源寄存器的前提下生成的,但是加载指令505的计算历史可使用源寄存器的计算历史或源寄存器中的值。例如,用于加载该数值的存储单元地址可以被装入寄存器用于加载指令505。(计算历史发生器225可以将该值与指令505的程序计数器510进行任选散列。)这个新值成为寄存器305-5的计算历史。
计算历史是一个更普通概念的特殊实例:数据流图。数据流图是程序中数据流的一种表示法。数据流图可以使用运行时间数据(例如程序运行中与变量关联的实际值)动态生成,也可以使用仅在编译时可用数据来静态生成。数据流图可以计算历史相同的方式使用:对指令特性作出预测,例如由分支指令采用的方向。
图6是根据本发明的一实施例,显示在图2所示计算机系统中,一个查找表索引的生成。显然,计算历史可以被直接用于索引进入查阅表230。但是由于查阅表230索引使用的每一附加位使查阅表230长度变长两倍,最好是保持查阅表230的长度不要过大。这样,即使图6显示了32位计算历史,查阅表230的索引长度仅仅是16位。为了将计算历史的长度缩短至索引的长度,可使用索引计算器605。框610显示了一实施例中索引计算器610的详细情况。
框610中,计算历史被分成两部分。图6所示,两部分615和620通过框625中的“异或”操作散列。结果得到一个16位索引,该索引可用于索引进入查阅表230。如果希望得到一个较小的索引,可重复该过程,将该索引减少为8位。本领域技术人员也认识到,也可以使用其它方法将计算历史的长度减少至索引进入查阅表230索引的大小。
请注意查阅表230可以存储对数据的任何种类的预测。查阅表230最直接的用途是存储一个分支预测,但是它对于存储何种预测没有限制。例如,查阅表230可以用于对存储器查阅地址或由变量采用的数据值做预测。
图7A-7B是根据本发明的一实施例,在图2所示计算机系统中,为一个指令构建计算历史的步骤的流程图。图7A中,在程序块705,一个指令被读取。在判定点710,检查源操作数以确定是否存在计算历史。如果有,在程序块715中,加载源操作数的计算历史。如果没有,在程序块720中,静态值将被用作源操作数的计算历史。(根据以上对图5的讨论,那些没有源计算历史的指令的例子是存取存储器或将一个静态值加载至寄存器的指令。)
在程序块725(图7B),计算历史被组合。其他静态数据在此时也可以被使用。在程序块730,结果被确定为指令的计算历史。最后,在程序块735,计算历史(任选地)与指令的目标操作数一起存储。
图8是根据本发明的一实施例,在图2所示计算机系统中,使用一种可能的散列功能来产生计算历史的步骤的流程图。在程序块805中,源操作数之一的计算历史被循环移位。在程序块810中,计算历史通过“异或”操作组合。在程序块815中,任何其他静态数据都可以成为计算历史的一部分:例如,指令的程序计数器。最后,在程序块820中,结果被移位,以老化计算历史。
图9是根据本发明的一实施例,在图2所示计算机系统内,使用一个计算历史来预测指令特性的步骤的流程图。在程序块905中,为指令存取一个计算历史。通常如果指令有一个目标寄存器,采用的计算历史与该指令的目标存储器相关联。对于没有目标存储器的指令(例如一个分支指令),采用的计算历史与该指令的源寄存器相关联。在程序块910中,由计算历史产生一个索引。在程序块915中,该索引被用来存取一个查阅表。在程序块920中,从查阅表读一个值。在程序块925中,使用从查阅表读出的值对指令特性作出预测。最后,在程序块930中,一旦预测的真伪已知,查阅表的值可以被(任选地)更新。
本领域技术人员将认识到,以上描述的发明实施例是可以通过使用计算机实现的。那样,本方法由组成程序的指令实现(这样,指示中央处理单元如何运行程序)。该程序可以存储于计算机可读媒介,例如软盘,光盘(如压密盘),硬盘(如硬驱),随即存取存储器(RAM),只读存储器(ROM),或快速存储器。该程序可以在计算机上运行以实现该方法。本领域技术人员也可以认识到,以上涉及的发明实施例可以包括一个计算机可读调制载波信号,该程序或程序运行的一部分,可以分布于网络中的多个计算机。以上在本发明的一个实施例中图示和描述了本发明的原理,有一点对本领域技术人员显而易见,不偏离该原理,本发明可在安排和细节上修改。所有在随后权利要求的精神和范围中的修改都被要求权利。
Claims (57)
1.一个计算机,包括:
一个存储器;
一个存储在存储器中的指令;
所述指令的一个计算历史,该计算历史由一组静态数据值来静态确定,每个数据值表示一个对指令有影响的对象;
一个查阅表,该查阅表存储关于多个指令的多个预测;和
一个索引,可由计算历史引出,用于存取查阅表以确定对该指令的预测。
2.根据权利要求1所述的计算机,其中查阅表存储于存储器中。
3.根据权利要求1所述的计算机,其中查阅表存储于计算机的第二存储器中。
4.根据权利要求1所述的计算机,还包括一个计算历史发生器可用以产生指令的计算历史。
5.根据权利要求4所述的计算机,其中:
该指令包括两个操作数,每个操作数以计算机的一个寄存器来表示,第一寄存器具有第二计算历史,第二寄存器具有第三计算历史;
计算历史发生器可用以对第二计算历史进行循环移位,并将循环移位后的第二计算历史与第三计算历史散列。
6.根据权利要求5所述的计算机,其中计算历史发生器还可以进一步将循环移位过的第二计算历史与第三计算历史和该指令的程序计数器散列。
7.根据权利要求4所述的计算机,其中计算历史发生器使用第二计算历史为该指令的源操作数生成计算历史。
8.根据权利要求4所述的计算机,其中计算历史发生器使用一套静态值子集产生计算历史,该套静态值包括一个或多个第二计算历史,一个或静态值和一个指令的程序计数器。
9.根据权利要求1所述的计算机,其中计算历史是由指令的目标操作数的计算历史确定的。
10.根据权利要求1所述的计算机,还包括一个索引计数器以计算从计算历史得来的索引。
11.根据权利要求1所述的计算机,还包括一个计算历史文件,来存储计算历史。
12.根据权利要求1所述的计算机,还包括一个与计算历史相关联的寄存器,该寄存器是指令的目标操作数。
13.根据权利要求1所述的计算机,其中:
该指令是组成一个程序的多个指令之一;且
该计算历史是在运行程序前产生的。
14.一个计算机,包括:
一个存储器;
一个存储于存储器中的分支指令;
一个数据流图;
一个查询表,该查询表存储着一个关于分支指令采用的方向的预测,查询表中的预测通过数据流图进行标识。
15.根据权利要求14所述的计算机,其中查询表存储在存储器中。
16.根据权利要求14所述的计算机,其中查询表存储在计算机的第二存储器中。
17.根据权利要求14所述的计算机,其中数据流图是由一组静态数据值来静态确定,每个数据值代表一个对分支指令有影响的对象。
18.一种产生计算历史的方法,包括:
读取一指令;
确定该指令的源操作数;
从源操作数中读取静态第一计算历史;
将第一计算历史与一个静态数据组合,产生一个静态第二计算历史。
19.根据权利要求18所述的方法,还包括:
确定该指令的目标操作数;和
将第二计算历史存储为目标操作数的第二计算历史。
20.根据权利要求18所述的方法,还包括将第二计算历史存储为指令的第二计算历史。
21.根据要求18所述的方法,其中加载第一计算历史包括,如果指令缺乏源操作数,分配一个静态值作为计算历史。
22.根据权利要求18所述的方法,其中加载第一计算历史包括,如果源操作数是一个存储器地址,使用一个静态值作为计算历史。
23.根据权利要求18所述的方法,其中加载第一计算历史包括,当该指令和第二指令通讯时,加载基于第二指令的第三计算历史。
24.根据权利要求18所述的方法,其中确定一个源操作数包括确定一个寄存器作为源操作数。
25.根据权利要求18所述的方法,其中第一计算历史与静态数据的组合包括:
确定是否有第二源操作数;以及
如果有第二源操作数,则将第三计算历史作为静态数据装入第二源操作数。
26.根据权利要求18所述的方法,其中第一计算历史与静态数据的组合包括对第一计算历史与指令的程序计数器进行组合。
27.根据权利要求18所述的方法,其中第一计算历史与静态数据的组合包括对第一计算历史与静态数据进行散列。
28.根据权利要求27所述的方法,其中散列第一计算历史与静态数据包括:
对第一计算历史进行循环移位;且
对循环移位过的第一计算历史和静态数据执行“异或”操作。
29.根据权利要求28所述的方法,其中散列第一计算历史还包括对“异或”操作的结果进行移位。
30.一个项目包括:
一个存储介质,该存储介质具有存储的上述指令,当由计算机运行时,导致:
读一个指令;
确定该指令的源操作数;
为源操作数加载一个静态第一计算历史;且
将第一计算历史与静态数据组合,并产生一个静态第二计算历史。
31.根据权利要求30所述的项目,其中的指令还包括:
确定该指令的目标操作数;且
将第二计算历史存储为目标操作数的第二计算历史。
32.根据权利要求30所述的项目,其中该指令还包括,将第二计算历史存储为该指令的第二计算历史。
33.根据权利要求30所述的项目,其中加载第一计算历史包括,当该指令缺乏源操作数时,分配一个静态值作为计算历史。
34.根据权利要求30所述的项目,其中加载第一计算历史包括,如果源操作数是一个存储器地址,则使用静态值作为计算历史。
35.根据权利要求30所述的项目,其中加载第一计算历史包括,当该指令和第二指令通信时,加载基于第二指令的一个第三计算历史。
36.根据权利要求30所述的项目,其中确定一个源操作数包括确定一个寄存器作为源操作数。
37.根据权利要求30所述的项目,其中将第一计算历史与静态数据组合包括:
确定是否有一个第二源操作数;和
如果有第二源操作数,则将一个第三计算历史作为静态数据加载第二源操作数。
38.根据权利要求30所述的项目,其中将第一计算历史与静态数据组合包括,将第一计算历史与该指令的程序计数器组合。
39.根据权利要求30所述的项目,其中将第一计算历史与静态数据组合包括,对第一计算历史与静态数据进行散列。
40.根据权利要求39所述的项目,其中散列第一计算历史与静态数据包括:
对第一计算历史进行循环移位;且
对循环移位后的第一计算历史和静态数据上执行“异或”操作。
41.根据权利要求40所述的项目,其中散列第一计算历史还包括,对“异或”操作的结果进行移位。
42.使用静态计算历史的方法,包括:
读一个指令;
确定该指令的静态计算历史;
使用该静态计算历史,预测该指令的一个特性。
43.根据权利要求42所述的方法,其中预测该指令特性包括:
存取查阅表;
使用静态计算历史,索引进入查阅表;
基于静态计算历史的索引,从查阅表中读值。
44.根据权利要求43所述的方法,其中索引进入查阅表包括,减小静态计算历史的长度。
45.根据权利要求44所述的方法,其中减小静态计算历史的长度包括:
将静态计算历史分成两部分;
对这两部分执行“异或”操作;
使用“异或”操作的结果,索引进入查阅表。
46.根据权利要求42所述的方法,其中预测指令特性包括,预测一个分支指令的方向。
47.根据权利要求42所述的方法,还包括:
确定预测是否正确;
更新计数器来反映预测的准确度。
48.一个项目包括:
一个存储介质,该存储介质拥有存储上述的指令,当由计算机运行时,导致:
读一个指令;
确定该指令的一个静态计算历史;
使用该静态计算历史,预测该指令的一个特性。
49.根据权利要求48所述的项目,其中预测该指令的特性包括:
存取查阅表;
使用静态计算历史,索引进入查阅表;
基于静态计算历史索引,从查阅表读值。
50.根据权利要求49所述的项目,其中索引进入查阅表包括,减小静态计算历史的长度。
51.根据权利要求50所述的项目,其中减小静态计算历史的长度包括:
将静态计算历史分成两部分;
对这两部分执行“异或”操作;
使用“异或”操作的结果,索引进入查阅表。
52.根据权利要求48所述的项目,其中预测指令特性包括,预测一个分支指令的方向。
53.根据权利要求48所述的项目,其中指令还包括:
确定该预测是否正确;和
更新计数器来反映预测的准确性。
54.使用数据流图的方法,包括:
读一个分支指令;
构造分支指令的一个数据流图;
使用数据流图,预测由分支指令采用的方向。
55.根据权利要求54所述的方法,其中构造数据流图包括,使用一组静态数据值,构造数据流图,其中每个数据值表示一个对分支指令上有作用的对象。
56.一个项目包括:
一个存储介质,所述存储介质拥有存储上述的指令,当由计算机运行时,导致:
读一个分支指令;
构造分支指令的数据流图;
使用数据流图,预测由分支指令采用的方向。
57.根据权利要求56所述的项目,其中构造数据流图包括,使用一组静态数据值,构造数据流图,其中每个数据值表示一个对分支指令有作用的对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110353106.6A CN102591621B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/330,492 | 2002-12-27 | ||
US10/330,492 US7143272B2 (en) | 2002-12-27 | 2002-12-27 | Using computation histories to make predictions |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101672158A Division CN101140512B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测的处理器及系统 |
CN201110353106.6A Division CN102591621B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1512325A true CN1512325A (zh) | 2004-07-14 |
CN1512325B CN1512325B (zh) | 2012-01-11 |
Family
ID=32654506
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110353106.6A Expired - Fee Related CN102591621B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测 |
CN2006101672158A Expired - Fee Related CN101140512B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测的处理器及系统 |
CN2003101129115A Expired - Fee Related CN1512325B (zh) | 2002-12-27 | 2003-12-25 | 一种计算机及一种产生并使用计算历史的方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110353106.6A Expired - Fee Related CN102591621B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测 |
CN2006101672158A Expired - Fee Related CN101140512B (zh) | 2002-12-27 | 2003-12-25 | 使用计算历史进行预测的处理器及系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7143272B2 (zh) |
CN (3) | CN102591621B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515230B (zh) * | 2008-02-18 | 2012-02-08 | 瑞昱半导体股份有限公司 | 预测存储器存取的装置及其方法 |
CN107145334A (zh) * | 2017-04-26 | 2017-09-08 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602004030575D1 (de) * | 2003-07-09 | 2011-01-27 | Nxp Bv | Verfahren und system zur zweigprädiktion |
US7506105B2 (en) * | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US20070101100A1 (en) * | 2005-10-28 | 2007-05-03 | Freescale Semiconductor, Inc. | System and method for decoupled precomputation prefetching |
US8205200B2 (en) * | 2005-11-29 | 2012-06-19 | Intel Corporation | Compiler-based scheduling optimization hints for user-level threads |
US8127106B2 (en) * | 2008-04-18 | 2012-02-28 | International Business Machines Corporation | Access speculation predictor with predictions based on a domain indicator of a cache line |
US8131974B2 (en) * | 2008-04-18 | 2012-03-06 | International Business Machines Corporation | Access speculation predictor implemented via idle command processing resources |
US8122223B2 (en) * | 2008-04-18 | 2012-02-21 | International Business Machines Corporation | Access speculation predictor with predictions based on memory region prior requestor tag information |
US8122222B2 (en) * | 2008-04-18 | 2012-02-21 | International Business Machines Corporation | Access speculation predictor with predictions based on a scope predictor |
US20100257529A1 (en) * | 2009-04-06 | 2010-10-07 | Christopher Wilkerson | Efficient systems and methods for consuming and providing power |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
CN107273098B (zh) * | 2017-05-03 | 2020-07-31 | 北京中科睿芯科技有限公司 | 一种优化数据流架构数据传输延迟的方法及其系统 |
US10437592B2 (en) * | 2017-08-24 | 2019-10-08 | Qualcomm Incorporated | Reduced logic level operation folding of context history in a history register in a prediction system for a processor-based system |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4370711A (en) * | 1980-10-21 | 1983-01-25 | Control Data Corporation | Branch predictor using random access memory |
US5564118A (en) * | 1992-11-12 | 1996-10-08 | Digital Equipment Corporation | Past-history filtered branch prediction |
US5996060A (en) * | 1997-09-25 | 1999-11-30 | Technion Research And Development Foundation Ltd. | System and method for concurrent processing |
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6173384B1 (en) * | 1998-02-11 | 2001-01-09 | Nortel Networks Limited | Method of searching for a data element in a data structure |
US6151672A (en) * | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
JP2000132390A (ja) * | 1998-10-23 | 2000-05-12 | Toshiba Corp | プロセッサ及び分岐予測器 |
US6247122B1 (en) * | 1998-12-02 | 2001-06-12 | Ip-First, L.L.C. | Method and apparatus for performing branch prediction combining static and dynamic branch predictors |
US6601161B2 (en) * | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US6272623B1 (en) * | 1999-01-25 | 2001-08-07 | Sun Microsystems, Inc. | Methods and apparatus for branch prediction using hybrid history with index sharing |
US6418530B2 (en) * | 1999-02-18 | 2002-07-09 | Hewlett-Packard Company | Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions |
US6272624B1 (en) * | 1999-04-02 | 2001-08-07 | Compaq Computer Corporation | Method and apparatus for predicting multiple conditional branches |
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
US6393544B1 (en) * | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
JP2001273138A (ja) * | 2000-03-24 | 2001-10-05 | Fujitsu Ltd | プログラム変換装置および方法 |
US6779108B2 (en) * | 2000-12-15 | 2004-08-17 | Intel Corporation | Incorporating trigger loads in branch histories for branch prediction |
US6766443B2 (en) * | 2001-05-17 | 2004-07-20 | International Business Machines Corporation | Compression of execution path history to improve branch prediction accuracy |
-
2002
- 2002-12-27 US US10/330,492 patent/US7143272B2/en not_active Expired - Fee Related
-
2003
- 2003-12-25 CN CN201110353106.6A patent/CN102591621B/zh not_active Expired - Fee Related
- 2003-12-25 CN CN2006101672158A patent/CN101140512B/zh not_active Expired - Fee Related
- 2003-12-25 CN CN2003101129115A patent/CN1512325B/zh not_active Expired - Fee Related
-
2006
- 2006-10-18 US US11/550,747 patent/US7624258B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515230B (zh) * | 2008-02-18 | 2012-02-08 | 瑞昱半导体股份有限公司 | 预测存储器存取的装置及其方法 |
CN107145334A (zh) * | 2017-04-26 | 2017-09-08 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102591621A (zh) | 2012-07-18 |
US7143272B2 (en) | 2006-11-28 |
CN101140512A (zh) | 2008-03-12 |
CN102591621B (zh) | 2016-04-06 |
US7624258B2 (en) | 2009-11-24 |
US20040128490A1 (en) | 2004-07-01 |
CN101140512B (zh) | 2010-05-19 |
CN1512325B (zh) | 2012-01-11 |
US20070088936A1 (en) | 2007-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1512325A (zh) | 使用计算历史进行预测 | |
JP7057437B2 (ja) | マルチタスク再帰型ニューラルネットワーク | |
CN100501739C (zh) | 利用流预取历史来改进数据预取性能的方法和系统 | |
CN1265286C (zh) | 预测间接分支目标地址的方法、装置和编译器 | |
CN100487641C (zh) | 预测提示指令的运行时间更新 | |
US7506105B2 (en) | Prefetching using hashed program counter | |
CN1109967C (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
US5553253A (en) | Correlation-based branch prediction in digital computers | |
US8078852B2 (en) | Predictors with adaptive prediction threshold | |
US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
CN1305150A (zh) | 具有改进的地址目标预测的处理器和方法 | |
US9280350B2 (en) | Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments | |
KR20010075258A (ko) | 간접 분기 목적지 산출 방법 | |
US12111767B2 (en) | Method and apparatus for a page-local delta-based prefetcher | |
CN104657285B (zh) | 一种数据缓存系统和方法 | |
US10481914B2 (en) | Predicting detected branches as taken when cumulative weight values in a weight table selected by history register bits exceed a threshold value | |
US10642615B2 (en) | System and method for dynamic accuracy and threshold control for branch classification | |
US20180285107A1 (en) | Branch prediction using a perceptron-based branch prediction technique | |
US8909907B2 (en) | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction | |
US11194575B2 (en) | Instruction address based data prediction and prefetching | |
JPWO2005103886A1 (ja) | 分岐予測装置、その方法、及びプロセサ | |
US20160034281A1 (en) | Instruction processing system and method | |
CN1168727A (zh) | 有限游程转移预测 | |
US11579886B2 (en) | System and method for multi-level classification of branches | |
US10430195B2 (en) | Stream based branch prediction index accelerator with power prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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: 20120111 Termination date: 20131225 |