CN100403257C - 能够隐式地多线程执行单线程程序的装置、方法和系统 - Google Patents
能够隐式地多线程执行单线程程序的装置、方法和系统 Download PDFInfo
- Publication number
- CN100403257C CN100403257C CNB028128540A CN02812854A CN100403257C CN 100403257 C CN100403257 C CN 100403257C CN B028128540 A CNB028128540 A CN B028128540A CN 02812854 A CN02812854 A CN 02812854A CN 100403257 C CN100403257 C CN 100403257C
- Authority
- CN
- China
- Prior art keywords
- processor
- impact damper
- instruction
- application program
- coupled
- 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.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000011068 loading method Methods 0.000 claims description 33
- 230000008878 coupling Effects 0.000 claims description 8
- 238000010168 coupling process Methods 0.000 claims description 8
- 238000005859 coupling reaction Methods 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005381 potential energy Methods 0.000 description 1
- 239000007787 solid Substances 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/46—Multiprogramming arrangements
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Abstract
本发明公开了一种包括第一处理器和第二处理器的设备。许多存储器设备被连接到第一处理器和第二处理器。寄存器缓冲器被连接到第一处理器和第二处理器。跟踪缓冲器被连接到第一处理器和第二处理器。许多存储器指令缓冲器被连接到第一处理器和第二处理器。第一处理器和第二处理器使用多线程资源来执行单线程应用程序。本发明还公开了一种方法,其中从第二处理器执行第一线程。还在第一处理器指引下从第二处理器执行第一线程。第二处理器在第一处理器之前执行指令。
Description
技术领域
本发明涉及多处理器(multiprocessor),更具体地说,涉及用于多线程执行单线程程序的方法和装置。
背景技术
在现今的许多处理系统,比如个人计算机(PC)中,单片多处理器(CMP)在执行多线程程序中扮演着重要角色。这些处理器可以处理和执行的线程是彼此独立的。例如,线程可以来自于独立的多个程序或来自于同一程序。一些线程被编译,产生其间不具有依赖性的多个线程。但是在多线程环境中,一些单线程应用程序可能太难以显式地转换为多线程。而且,在多线程处理器上运行现有的单线程二进制码未充分利用芯片的多线程能力。
发明内容
本发明的一个技术方案提供了一种装置,该装置包括:第一处理器和第二处理器,第一处理器和第二处理器每个都具有记分板和解码器;多个存储器设备,其被耦合到第一处理器和第二处理器;第一缓冲器,其被耦合到第一处理器和第二处理器,所述第一缓冲器是寄存器文件缓冲器;第二缓冲器,其被耦合到第一处理器和第二处理器,所述第二缓冲器是跟踪缓冲器;和多个存储器指令缓冲器,其被耦合到第一处理器和第二处理器,其中,第一处理器和第二处理器使用多线程资源来执行单线程应用程序,第二处理器对单线程应用程序的执行领先于第一处理器对该单线程应用程序的执行以避免误预测,单线程应用程序不被转换成显式的多线程应用程序,单线程应用程序当在第一处理器和第二处理器上执行时具有相同数量的指令,并且在第一处理器上执行的单线程应用程序利用从第二处理器接收到的信息来避免分支误预测。
本发明的另一技术方案提供了一种方法,该方法包括:由第一处理器执行单线程中的多条指令;按照第一处理器的指引,由第二处理器执行所述单线程中的所述多条指令,所述第二处理器在第一处理器之前执行所述多条指令以避免误预测;对至少一个寄存器进行跟踪,所述被跟踪的寄存器是从寄存器文件缓冲器加载,或被第二处理器写入的,所述跟踪由所述第二处理器执行,从第二处理器发送控制流程信息到第一处理器,第一处理器通过接收所述控制流程信息来避免分支预测;和从第二处理器发送结果到第一处理器,所述第一处理器通过将一部分指令的结果从第一缓冲器提交到寄存器文件中,来避免执行该部分指令,所述第一缓冲器是跟踪缓冲器,以及如果被重放的存储指令在第二缓冲器中具有匹配的存储标识部分,则在所述第一缓冲器中的加载条目中清除存储有效位,并对误预测位进行置位,所述第二缓冲器是加载缓冲器,其中,第一处理器和第二处理器使用多线程资源来执行单线程应用程序,单线程应用程序不被转换成显式的多线程应用程序,单线程应用程序当在第一处理器和第二处理器上执行时具有相同数量的指令,在第一处理器上执行的单线程应用程序利用从第二处理器接收到的信息来避免分支误预测。
本发明的另一技术方案提供了一种系统,该系统包括第一处理器和第二处理器,所述第一处理器和第二处理器每个都具有记分板和解码器;总线,其被耦合到第一处理器和第二处理器;主存储器,其被耦合到所述总线;多个本地存储器设备,其被耦合到第一处理器和第二处理器;第一缓冲器,其被耦合到第一处理器和第二处理器,所述第一缓冲器是寄存器文件缓冲器;第二缓冲器,其被耦合到第一处理器和第二处理器,所述第二处理器是跟踪缓冲器;和多个存储器指令缓冲器,其被耦合到第一处理器和第二处理器,其中,第一处理器和第二处理器使用多线程资源来执行单线程应用程序,第二处理器对单线程应用程序的执行领先于第一处理器对该单线程应用程序的执行以避免误预测,单线程应用程序不被转换成显式的多线程应用程序,单线程应用程序当在第一处理器和第二处理器上执行时具有相同数量的指令,并且在第一处理器上执行的单线程应用程序利用从第二处理器接收到的信息来避免分支误预测。
附图说明
在附图中示例性地而非限制性地图示了本发明,在附图中相同的标号指代相似的元件。应该注意的是,在本公开中引用的“实施例”或“一个实施例”并不一定指同一实施例,这样的引用意味着至少一个。
图1图示说明了本发明的实施例;
图2图示说明了本发明的实施例的提交处理器;
图3图示说明了本发明的实施例的推测处理器;
图4图示说明了本发明的实施例的存储转发缓冲器;
图5图示说明了本发明的实施例的加载排序缓冲器;
图6图示说明了本发明的具有一个系统的实施例;
图7图示说明了本发明的实施例的方框图。
具体实施方式
本发明一般地涉及用于多线程地执行单线程程序的方法和装置。现在参考附图,对本发明示例性实施例进行说明。示例性实施例被提供来说明本发明,而不应该解释为对本发明范围的限制。
图1图示说明了本发明的包括多处理器100的一个实施例。在本发明的一个实施例中,多处理器100是双核心单片多处理器(CMP)。多处理器100还包括提交(commit)中央处理单元(CPU)110、推测(speculative)CPU 120、寄存器文件缓冲器130、跟踪缓冲器140、加载缓冲器150(也称为加载排序缓冲器)、存储缓冲器160(也称为存储转发缓冲器)、L1(第一级)高速缓存175、L2(第二级)高速缓存170、L0(零级)指令高速缓存(I高速缓存)180和L0数据高速缓存(D高速缓存)190。在本发明的一个实施例中,L0 I高速缓存180包括两个L0 I高速缓存部件。一个L0 I高速缓存部件180被耦合到提交处理器110,另一个L0 I高速缓存部件180被耦合到推测处理器120。在本发明的这个实施例中,两个I高速缓存部件保持双重信息。在本发明的一个实施例中,取请求被从任意一个L0 I高速缓存部件180发出到L1高速缓存175。从L1高速缓存175取出的行(line)被填充到耦合到推测处理器120和提交处理器110的L0 I高速缓存180中。
在本发明的一个实施例中,L0 D高速缓存190包括两个L0 D高速缓存部件。一个L0 D高速缓存部件190被耦合到提交处理器110,另一个L0D高速缓存部件190被耦合到推测处理器120。在本发明的这个实施例中,两个L0 D高速缓存部件保持双重信息。在本发明的这个实施例中,与推测处理器120相关联的存储指令/命令(存储)没有被写入L0 D高速缓存190中。在本发明的这个实施例中,行读取和写入请求被从任一L0 D高速缓存部件发出到L1高速缓存175。从L1高速缓存175取出的行被填充到耦合到提交处理器110和推测处理器120的L0D高速缓存190中。从提交处理器110发出的存储被写入耦合到推测处理器120的L0 D高速缓存部件中。通过在每个L0 D高速缓存部件中都具有数据的精确的拷贝,内部的侦听(snooping)就不再是必须的了。
在本发明的一个实施例中,寄存器文件缓冲器130包括整数寄存器缓冲器和判定(predicate)寄存器文件缓冲器。在本发明的一个实施例中,整数寄存器文件缓冲器包括多个写端口、多个校验点和至少一个读端口。整数寄存器文件缓冲器被用来将寄存器值从提交处理器110传送到推测处理器120。在本发明的一个实施例中,整数寄存器文件缓冲器包括八个(8)写端口、四个(4)校验点以及访问任意校验点上下文的一个(1)读端口。在本发明的一个实施例中,整数寄存器文件缓冲器具有八个(8)寄存器宽的阵列和十六(16)行。在本发明的一个实施例中,判定寄存器文件缓冲器包括多个写端口、多个校验点以及至少一个读端口。判定寄存器文件缓冲器被用来将寄存器值从提交处理器110传送到推测处理器120和被耦合到推测处理器120的第二级寄存器文件。在本发明的一个实施例中,预测寄存器文件缓冲器包括八个(8)写端口、四个(4)校验点以及一个(1)读端口以访问任意校验点的上下文。在本发明的一个实施例中,预测寄存器文件缓冲器具有八个(8)寄存器宽的阵列和八(8)行。
图2图示说明了提交CPU 110。在本发明的一个实施例中,提交CPU.110包括解码器211、记分板(scoreboard)214、寄存器文件212以及执行单元213。同样地,图3图示说明了推测CPU 120。在本发明的一个实施例中,推测CPU 120包括解码器321、记分板324、寄存器文件322以及执行单元323。L2高速缓存170和L1高速缓存175由提交CPU 110和推测CPU 120共享。在本发明的一个实施例中,多处理器100能够显式地执行多线程程序。在另一个实施例中,多处理器100能够在使用多线程环境时执行单线程应用程序,而无需将单线程应用程序转换为显式的多线程。
在本发明的一个实施例中,程序执行以提交CPU 110和推测CPU 120中一个上的单线程开始。在本发明的一个实施例中,提交CPU 110对寄存器文件212进行取出、解码、执行和更新,以及在程序指令下向存储器发出加载指令/命令(加载)和存储。在指令被解码时,提交CPU 110可以引导推测CPU 120在某个程序计数值处开始执行推测线程。该程序计数值可以是存储器中下一条指令的地址,或者其可以由编译器作为提示(hint)提供。例如,在下一条指令地址处的分叉可能是在调用(call)指令处分叉的线程。推测CPU 120继续执行其线程,直到提交CPU 110中的程序计数到达程序执行中与推测线程程序计数值所指向的点相同的点。因此,提交CPU 110对程序中每一指令进行取出、发出和提交,即使指令属于推测线程。
在本发明的一个实施例中,多处理器100的双重执行体系结构具有这样的好处,其中在程序中执行得更远的推测CPU 120提供了高效率的对指令和数据的预取。而且,推测CPU 120在提交CPU 110的控制流程到达许多分支之前,确定这些分支的方向。在本发明的一个实施例中,提交CPU110从推测CPU 120接收关于控制流程方向的信息,因此,提交CPU 110能够避免对许多分支的分支预测以及相关联的误预测代价。在本发明的一个实施例中,提交CPU 110能够在一个提交循环中同时提交由推测线程正确执行的依赖性及相邻的指令的结果,这节省了通常在相依赖的指令间串行地执行和传播结果所需的时间。
在本发明的一个实施例中,输入到推测线程的寄存器值被传送通过寄存器缓冲器130。所有写入到提交CPU 110的寄存器文件212中的值也被写入到寄存器文件缓冲器130中。在本发明的一个实施例中,当产生推测线程时,可以在位于提交CPU 110和推测CPU 120之间的寄存器文件缓冲器130中得到寄存器文件212的快照(snapshot)。最初,当开始推测线程时,推测CPU 120的所有寄存器中都未存储输入值。所需要的输入寄存器可以根据要求从寄存器文件缓冲器130读取。在本发明的一个实施例中,记分板324被用来在推测CPU 120的解码阶段中跟踪哪些寄存器被从寄存器文件缓冲器130加载,或被推测线程写入。这些寄存器在寄存器文件322中是有效的。根据要求从寄存器文件缓冲器130读取所有其它的寄存器。
在本发明的一个实施例中,输入到推测线程的存储器值从相关高速缓存分级结构读取,这允许推测线程访问被提交线程修改的存储器。在本发明的一个实施例中,高速缓存相关方案被使用,其中D高速缓存190是直写式(write through)高速缓存,并且L2高速缓存170是使用MESI(M:已修改;E:专有;S:共享;I:无效)高速缓存相关协议的回写式(writeback)高速缓存。但是应该注意的是,在本发明的其它实施例中,也可以使用其它高速缓存相关协议。
取决于具体程序中的数据流,提交CPU 110可能在一些寄存器或存储器输入值被推测线程读取之后才产生这些输入。在本发明的一个实施例中,为了缓解寄存器和存储器数据流所施加的限制,值预测被用来为推测线程提供初始输入值。在本发明的一个实施例中,使用了具有被动预测的一种简单的值预测方法。在这个实施例中,假设提交CPU 110在产生推测线程时已经产生了寄存器和存储器输入值。
在本发明的一个实施例中,推测的结果被写入到CPU 120的寄存器文件322以及跟踪缓冲器140中。在本发明的一个实施例中,跟踪缓冲器140是被实现为具有头指针和尾指针的阵列的循环缓冲器。在本发明的一个实施例中,所述的头和尾指针具有返转位(wrap-around bit)。在本发明的一个实施例中,跟踪缓冲器140具有带一个读端口和一个写端口的阵列。在本发明的这个实施例中,每个条目有足够的字节来存储大量指令的结果,所述指令在数量上至少等于提交CPU 110的发出宽度。在本发明的这个实施例中,每个条目对每条指令有1位,并用第二写端口来标出被误预测的加载。
在本发明的一个实施例中,跟踪缓冲器140具有一百二十八个(128)条目,每个条目能存储六条(6)指令的结果。在本发明的一个实施例中,跟踪缓冲器140具有四个(4)分区来支持四个(4)线程。在本发明的一个实施例中,跟踪缓冲器140容纳有十六个(16)字节来存储每条指令的两路输出,四个(4)字节来存储被重命名的寄存器,以及一个(1)位来标出指令是不是被误预测的加载。在本发明的一个实施例中,被误预测的加载位能够被加载寄存器150的六个(6)写端口置位。在本发明的一个实施例中,当一个线程分区已满时,推测执行被继续到向L0 I高速缓存器180以及L0 D高速缓存器190中预取,但是结果不被写入到跟踪缓冲器中。
在本发明的一个实施例中,提交CPU 110具有对每个寄存器包括1个位的记分板214。在本发明的这个实施例中,提交CPU 110在推测线程的分叉点和汇合点之间对一个寄存器所作的任何修改都将导致该寄存器记分板位被置位。当提交CPU 110撤除(retire)推测线程的结果时,它继续在记分板214中跟踪所有被误预测的寄存器。在本发明的这个实施例中,其源寄存器记分板位被清除的指令被安全地提交到寄存器文件212中。这样的指令即使是依赖性的也不必执行。但是,这里有一些例外,例如加载和存储。加载和存储的例外必须被发出到存储器执行单元213,以服务于高速缓存未命中(cache miss)及检查存储器排序违反。分支执行的结果也被从推测CPU 120发送到提交CPU 110。在提交CPU 110中,可以绕过对由推测CPU 120执行的一些或所有分支的分支预测。
在本发明的一个实施例中,与提交处理器110相关联的加载和存储对加载缓冲器150进行侦听。在本发明的一个实施例中,当指令被重放(replay)或者指令是被误预测的加载时,在记分板214中将与该指令相关联的目标寄存器位置位。当指令是干净的(clean)时,在记分板214中清除其目标寄存器位。注意,如果指令的源是干净的,则指令是干净的。当提交了所有推测线程指令时,清除记分板214。
在本发明的一个实施例中,推测CPU 120不对存储器发出存储指令。在本发明的这个实施例中,存储指令被录入(post)到存储缓冲器160中,并且加载指令被录入到加载寄存器150中。在本发明的一个实施例中,存储缓冲器160是全关联存储转发缓冲器。图4图示说明了本发明的一个实施例中的存储缓冲器160的结构。在存储缓冲器160中(如图4所示),每个条目410包括标签部分420、有效部分430、数据部分440、存储标识(ID)450以及线程ID部分460。在本发明的一个实施例中,数据部分440容纳有八个(8)字节的数据。在本发明的一个实施例中,有效部分430容纳有八个(8)位。存储ID 450是最近写入到条目410中的存储指令的唯一的存储指令ID。在本发明的一个实施例中,推测的加载在L0 D高速缓存190访问的同时访问存储缓冲器160。如果该加载命中存储缓冲器160中的存储指令,则L0 D高速缓存190被绕过,并从存储缓冲器160读取加载。在这种情形下,存储ID 450也随着数据被读出。
在本发明的一个实施例中,加载数据能够由推测处理器120从存储缓冲器160或与推测处理器120相关联的L0 D高速缓存190获得。在本发明的一个实施例中,加载被录入到加载缓冲器150中。在本发明的这个实施例中,当加载被录入时,倘若加载缓冲器150溢出,则被误预测的加裁位在跟踪缓冲器140中被置位。
在本发明的一个实施例中,存储缓冲器160具有一百二十八个(128)条目,其中的条目是四(4)路组关联的。在本发明的一个实施例中,存储缓冲器160具有两个(2)存储端口和两个(2)加载端口。在本发明的一个实施例中,存储缓冲器160允许使用虚拟地址的部分标签匹配用于转发,并允许完全物理标签匹配以使转发存储ID有效。在本发明的一个实施例中,存储缓冲器160从第一个字节开始存储写在数据部分440中的数据,以避免对准延迟。在本发明的一个实施例中,存储缓冲器160具有替换策略,其在存储未命中时替换最旧的存储,否则其替换命中的条目。在本发明的一个实施例中,线程ID 460是对跟踪缓冲器140中的分区的索引,并且具有返转位。在本发明的一个实施例中,通过使用线程ID内容可寻址存储器(CAM)端口(未示出)来进行线程条目的全局重置,
在本发明的一个实施例中,推测的加载被录入到加载缓冲器150中。在本发明的一个实施例中,加载缓冲器150是耦合到提交CPU 110的组关联加载缓冲器。图5图示说明了加载缓冲器150的结构。在加载缓冲器150中(如图5所示),每个条目510包括标签部分520、条目有效位部分530、加载ID 540以及加载线程ID 550。在本发明的一个实施例中,标签部分520包括部分地址标签。在另一个实施例中,每个条目510还具有存储线程ID、存储ID和存储有效位(未示出)。如果加载指令命中了存储缓冲器160,那么存储ID是转发的存储指令的ID。
在本发明的一个实施例中,存储ID和/或加载ID 550是对跟踪缓冲器140中的条目的索引,其对于每条指令是唯一的。在本发明的一个实施例中,如果加载命中存储缓冲器160,那么存储有效位被设定为零(“0”)。在本发明的这个实施例中,如果加载未命中存储缓冲器160,那么存储有效位被设定为一(“1”)。在本发明的一个实施例中,具有匹配的存储ID的被重放的存储清除(设定为“0”)存储有效位,并且对跟踪缓冲器140中的加载条目中的误预测位进行置位。在本发明的一个实施例中,程序中标签部分520匹配的后来的存储清除(设定为“0”)存储有效位,并且对跟踪缓冲器140中的加载条目中的误预测位进行置位。在本发明的一个实施例中,存储ID匹配的干净(未被重放)的存储将存储有效位设定为“1”(一)。在本发明的一个实施例中,对于未匹配任何标签520的干净(未被重放)的加载,或者标签520匹配且存储有效位被清除(设定为“0”)的加载,流水线被刷新(flush),跟踪缓冲器140中的加载条目中的误预测位被设定为一(“1”),并且加载指令被重启动。在本发明的一个实施例中,当加载条目被撤除时,条目有效位都分530被清除。
在本发明的一个实施例中,加载缓冲器150具有四(4)路组关联的六十四个(64)条目。在本发明的一个实施例中,加载缓冲器150具有替换最旧的加载的策略。在本发明的一个实施例中,通过使用线程ID CAM端口(未示出)进行线程条目的全局重置。
在本发明的一个实施例中,提交CPU 110向存储器执行单元213(地址产生单元、加载缓冲器、数据高速缓存)发出所有的加载和存储,这包括被推测处理器120正确执行的加载。即使提交处理器110所发出的加载指令未命中L0 D高速缓存190,也可能提交具有潜在的依赖性指令的有效加载数据。在本发明的一个实施例中,加载未命中请求被发送到L2高速缓存170以填充行,但是阻止返回数据向寄存器文件212写入。在本发明的一个实施例中,每个加载指令都访问加载缓冲器150。加载缓冲器150的加载未命中导致流水线刷新以及加载指令和其后所有指令的重启动。
在本发明的一个实施例中,存储还访问加载缓冲器150。在本发明的一个实施例中,当地址匹配的存储也匹配存储ID 540时,在条目510中将有效位530置位。在本发明的这个实施例中,后来的命中条目510的存储使条目510无效。在本发明的这个实施例中,当存储使条目510无效时,加载ID 550被用来对跟踪缓冲器140进行索引,以将误预测加载位置位。在本发明的这个实施例中,当取出了加载并且发现跟踪缓冲器140中的误预测加载位被设定时,在记分板中将寄存器位置位。该寄存器记分板位也可以被称为加载目标记分板位。在本发明的这个实施例中,这一优化减少了作为加载缓冲器150中的加载未命中的结果而出现的刷新的次数,应该注意的是,提交CPU 110同时读取跟踪缓冲器140和L0 I高速缓存180。在本发明的这个实施例中,同时读取跟踪缓冲器140和L0 I高速缓存180使得能够及时对被误预测的加载指令将记分板214中的记分板寄存器位置位,而不必停止执行流水线。
在本发明的一个实施例中,“重放模式”执行在推测线程的第一条指令处开始。当跟踪缓冲器140中的分区即将变空时,终止重放模式以及推测线程的执行。在本发明的一个实施例中,指令发出和寄存器重命名阶段被如下修改:没有在跟踪缓冲器140提供名字之后重命名的寄存器;到下一个被重放指令之前的所有指令,包括依赖性的指令都被发出;干净(未被重放)的指令被作为无操作(NOP)指令发出;所有加载和存储被发出到存储器,并且干净的指令结果被从跟踪缓冲器140提交到寄存器文件130。
图6图示说明了具有本发明的实施例的系统。系统600包括多处理器100、主存储器610、北桥(north bridge)620、中枢链接(hublink)630和南桥(south bridge)640。一般地,北桥620的主要职责是多处理器接口。此外,北桥620也可以具有用于加速图形端口(AGP)、存储器610、中枢链接630等的控制器。南桥640一般负责硬盘驱动控制器、通用串行总线(USB)主控制器、输入/输出(I/O)控制器以及任何集成的声音设备等。
图7图示说明了本发明的实施例的处理。处理700从方框710开始,其中由诸如提交处理器110的第一处理器开始执行程序线程。在方框720,由第一处理器取出命令。在方框730,由第一处理器进行命令解码。在方框740,指示诸如推测处理器120的第二处理器开始执行与第一处理器相同的线程的程序,但是是在程序流中更远的位置执行。在方框750,由第二处理器开始执行程序线程。在方框751上,第二处理器取出命令,在方框752中,第二处理器进行解码。在方框753中,第二处理器更新寄存器文件。在方框754中,第二处理器发送控制流程信息到第一处理器。在方框760中,第一处理器更新寄存器文件。方框770判断第一处理器是否已经到达与第二处理器的相同的执行点。如果方框770判定第一处理器还没有到达程序中相同的点,那么过程700通过方框780继续,以继续执行。如果方框770判定第一处理器已经到达执行中与第二处理器相同的点,那么方框790判断程序是否完成。如果方框790判定程序完成,那么过程700停止,否则过程700在A处继续。
通过使用上面讨论的本发明的实施例,作为推测的长程多线程预取和预执行的结果,可以提高执行单线程应用程序时的性能。本发明的实施例可以用顺序(in-order)和乱序(out-of-order)多线程处理器来实现。
上述实施例也能够被存储在设备或机器可读介质上,并由机器读取来执行指令。所述的机器可读介质包括任何以机器(例如,计算机)可读的形式提供(即,存储和/或发送)信息的装置。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备,电、光、声或其它形式的被传播的信号(例如,载波、红外信号、数字信号等)。所述的设备或机器可读介质可以包括固态存储设备和/或旋转的磁盘或光盘。当指令的分区例如通过计算的互连装置而被分开到不同的机器中时,所述的设备或机器可读介质可以被分配。
虽然已经说明了某些示例性的实施例,并且示出在附图当中,但是应该理解的是,由于对于本领域的普通技术人员可以想到许多其它的修改,所以这些实施例仅仅是说明性的,而不是对较宽的发明的限制,并且本发明不限于所说明和示出的具体构造和设置。
Claims (23)
1.一种装置,包括:
第一处理器和第二处理器,所述第一处理器和第二处理器中的每一个都具有记分板和解码器;
多个存储器设备,其被耦合到所述第一处理器和所述第二处理器;
第一缓冲器,其被耦合到所述第一处理器和所述第二处理器,所述第一缓冲器是寄存器文件缓冲器;
第二缓冲器,其被耦合到所述第一处理器和所述第二处理器,所述第二缓冲器是跟踪缓冲器;和
多个存储器指令缓冲器,其被耦合到所述第一处理器和所述第二处理器,
其中,所述第一处理器和所述第二处理器使用多线程资源来执行单线程应用程序,并且所述第二处理器对单线程应用程序的执行领先于所述第一处理器对该单线程应用程序的执行以避免误预测,所述单线程应用程序不被转换成显式的多线程应用程序,所述单线程应用程序当在所述第一处理器和所述第二处理器上执行时具有相同数量的指令,并且在所述第一处理器上执行的所述单线程应用程序利用从所述第二处理器接收到的信息来避免分支误预测。
2.权利要求1的装置,其中,所述存储器设备包括多个高速缓存设备。
3.权利要求1的装置,其中,所述第一处理器被耦合到多个零级数据高速缓存设备中的至少一个和多个零级指令高速缓存设备中的至少一个,并且所述第二处理器被耦合到所述多个零级数据高速缓存设备中的至少一个和所述多个零级指令高速缓存设备中的至少一个。
4.权利要求3的装置,其中,所述多个零级数据高速缓存设备中的每一个都存储着存储指令数据的精确的拷贝。
5.权利要求1的装置,其中,所述多个存储器指令缓冲器包括至少一个存储转发缓冲器和至少一个加载排序缓冲器。
6.权利要求5的装置,所述至少一个存储转发缓冲器包括具有多个条目的结构,所述多个条目中的每一个都具有标签部分、有效性部分、数据部分、存储指令标识部分和线程标识部分。
7.权利要求6的装置,所述至少一个加载排序缓冲器包括具有多个条目的结构,所述多个条目中的每一个都具有标签部分、条目有效性部分、加载标识部分和加载线程标识部分。
8.权利要求1的装置,所述跟踪缓冲器是循环缓冲器。
9.权利要求1的装置,所述寄存器文件缓冲器包括整数寄存器文件缓冲器和判定寄存器文件缓冲器。
10.一种方法,包括:
由第一处理器执行单线程中的多条指令;
按照第一处理器的指引,由第二处理器执行所述单线程中的所述多条指令,所述第二处理器在所述第一处理器之前执行所述多条指令以避免误预测;
对被从寄存器文件缓冲器加载,或被所述第二处理器写入的至少一个寄存器进行跟踪,所述跟踪由所述第二处理器执行,
从所述第二处理器发送控制流程信息到所述第一处理器,所述第一处理器通过接收所述控制流程信息来避免分支预测;和
从所述第二处理器发送结果到所述第一处理器,所述第一处理器通过将一部分指令的结果从第一缓冲器提交到寄存器文件中,来避免执行该部分指令,所述第一缓冲器是跟踪缓冲器,以及
如果被重放的存储指令在第二缓冲器中具有匹配的存储标识部分,则在所述第一缓冲器中的加载条目中清除存储有效位,并对误预测位进行置位,所述第二缓冲器是加载缓冲器,
其中,所述第一处理器和所述第二处理器使用多线程资源来执行单线程应用程序,并且所述单线程应用程序不被转换成显式的多线程应用程序,所述单线程应用程序当在所述第一处理器和所述第二处理器上执行时具有相同数量的指令,并且在所述第一处理器上执行的所述单线程应用程序利用从所述第二处理器接收到的信息来避免分支误预测。
11.权利要求10的方法,还包括:
由所述第一处理器和所述第二处理器在分开的存储器设备中复制存储器信息,用于独立的访问。
12.权利要求10的方法,还包括:
如果未被重放的存储指令与加载缓冲器中的存储标识部分匹配,则对存储有效性位进行置位。
13.权利要求10的方法,还包括:
如果一个加载未被重放并且不匹配加载缓冲器中的标签部分,或者加载指令匹配所述加载缓冲器中的所述标签部分但存储有效位未被置位,则刷新流水线,在所述跟踪缓冲器中的加载条目中对误预测位进行置位,并且重启动所述加载指令。
14.权利要求10的方法,还包括:
在推测线程的第一指令处执行重放模式。
15.权利要求10的方法,还包括:
从所述跟踪缓冲器供应名字,以阻止寄存器重命名;
发出直到下一个被重放指令之前的包括依赖性指令在内的所有指令;
将未被重放的指令作为无操作指令发出;
发出所有加载指令和存储指令到存储器;
从所述跟踪缓冲器将非重放指令提交给所述寄存器文件。
16.权利要求10的方法,还包括:
如果加载条目被撤除,则清除加载缓冲器中的条目中的有效位。
17.一种系统,包括:
第一处理器和第二处理器,所述第一处理器和第二处理器中的每一个都具有记分板和解码器;
总线,其被耦合到所述第一处理器和所述第二处理器;
主存储器,其被耦合到所述总线;
多个本地存储器设备,其被耦合到所述第一处理器和所述第二处理器;
第一缓冲器,其被耦合到所述第一处理器和所述第二处理器,所述第一缓冲器是寄存器文件缓冲器;
第二缓冲器,其被耦合到所述第一处理器和所述第二处理器,所述第二处理器是跟踪缓冲器;和
多个存储器指令缓冲器,其被耦合到所述第一处理器和所述第二处理器,
其中,所述第一处理器和所述第二处理器使用多线程资源来执行单线程应用程序,所述第二处理器对单线程应用程序的执行领先于所述第一处理器对该单线程应用程序的执行以避免误预测,并且所述单线程应用程序不被转换成显式的多线程应用程序,所述单线程应用程序当在所述第一处理器和所述第二处理器上执行时具有相同数量的指令,并且在所述第一处理器上执行的所述单线程应用程序利用从所述第二处理器接收到的信息来避免分支误预测。
18.权利要求17的系统,所述本地存储器设备包括多个高速缓存设备。
19.权利要求18的系统,所述第一处理器被耦合到多个零级数据高速缓存设备中的至少一个和多个零级指令高速缓存设备中的至少一个,并且所述第二处理器被耦合到所述多个零级数据高速缓存设备中的至少一个和所述多个零级指令高速缓存设备中的至少一个。
20.权利要求19的系统,其中,所述多个零级数据高速缓存设备中的每一个都存储着存储指令数据的精确的拷贝。
21.权利要求19的系统,所述第一处理器和所述第二处理器每个共享第一级高速缓存设备和第二级高速缓存设备。
22.权利要求17的系统,其中,所述多个存储器指令缓冲器包括至少一个存储转发缓冲器和至少一个加载排序缓冲器。
23.权利要求22的系统,所述至少一个存储转发缓冲器包括具有多个条目的结构,所述多个条目中的每一个都具有标签部分、有效性部分、数据部分、存储指令标识部分和线程标识部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/896,526 | 2001-06-28 | ||
US09/896,526 US7752423B2 (en) | 2001-06-28 | 2001-06-28 | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1732433A CN1732433A (zh) | 2006-02-08 |
CN100403257C true CN100403257C (zh) | 2008-07-16 |
Family
ID=25406358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028128540A Expired - Fee Related CN100403257C (zh) | 2001-06-28 | 2002-06-14 | 能够隐式地多线程执行单线程程序的装置、方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7752423B2 (zh) |
JP (1) | JP2005521924A (zh) |
KR (1) | KR100783828B1 (zh) |
CN (1) | CN100403257C (zh) |
DE (1) | DE10296989B4 (zh) |
GB (2) | GB2393297B (zh) |
HK (1) | HK1062056A1 (zh) |
WO (1) | WO2003003196A2 (zh) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188141A1 (en) * | 2002-03-29 | 2003-10-02 | Shailender Chaudhry | Time-multiplexed speculative multi-threading to support single-threaded applications |
US7739483B2 (en) * | 2001-09-28 | 2010-06-15 | Intel Corporation | Method and apparatus for increasing load bandwidth |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7000091B2 (en) | 2002-08-08 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | System and method for independent branching in systems with plural processing elements |
US20040193849A1 (en) * | 2003-03-25 | 2004-09-30 | Dundas James D. | Predicated load miss handling |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US20040225870A1 (en) * | 2003-05-07 | 2004-11-11 | Srinivasan Srikanth T. | Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor |
US20040255104A1 (en) * | 2003-06-12 | 2004-12-16 | Intel Corporation | Method and apparatus for recycling candidate branch outcomes after a wrong-path execution in a superscalar processor |
US7444497B2 (en) * | 2003-12-30 | 2008-10-28 | Intel Corporation | Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support |
US7299336B2 (en) * | 2004-08-18 | 2007-11-20 | International Business Machines Corporation | Scaling address space utilization in a multi-threaded, multi-processor computer |
US7278058B1 (en) * | 2004-08-25 | 2007-10-02 | Unisys Corporation | Methods and apparatus to diagnose software |
US7774531B1 (en) * | 2005-09-13 | 2010-08-10 | Oracle America, Inc. | Allocating processor resources during speculative execution using a temporal ordering policy |
WO2007038445A2 (en) * | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
US8261046B2 (en) * | 2006-10-27 | 2012-09-04 | Intel Corporation | Access of register files of other threads using synchronization |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
US7650485B1 (en) * | 2007-04-10 | 2010-01-19 | Sun Microsystems, Inc. | Structure and method for achieving very large lookahead instruction window via non-sequential instruction fetch and issue |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
JP5105359B2 (ja) * | 2007-12-14 | 2012-12-26 | 富士通株式会社 | 中央処理装置、選択回路および選択方法 |
US9098625B2 (en) * | 2008-02-29 | 2015-08-04 | International Business Machines Corporation | Viral trace |
US8195896B2 (en) * | 2008-06-10 | 2012-06-05 | International Business Machines Corporation | Resource sharing techniques in a parallel processing computing system utilizing locks by replicating or shadowing execution contexts |
KR101233810B1 (ko) * | 2008-06-17 | 2013-02-18 | 주식회사 미라지웍스 | 컴퓨터의 시스템자원 및 프로세스의 보호 및 격리장치와 그방법 |
US8933953B2 (en) * | 2008-06-30 | 2015-01-13 | Intel Corporation | Managing active thread dependencies in graphics processing |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9189233B2 (en) | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
BRPI0920541A2 (pt) * | 2008-11-24 | 2018-11-06 | Intel Corp | sistemas, métodos e aparelho para decompor um programa sequencial em multicadeias, executar as ditas cadeias, e reconstruir a execução sequencial |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9690625B2 (en) * | 2009-06-16 | 2017-06-27 | Oracle America, Inc. | System and method for out-of-order resource allocation and deallocation in a threaded machine |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US9424190B2 (en) * | 2011-08-19 | 2016-08-23 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US9600416B2 (en) | 2011-09-30 | 2017-03-21 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
WO2013048500A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
EP3364304B1 (en) | 2011-09-30 | 2022-06-15 | INTEL Corporation | Memory channel that supports near memory and far memory access |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
US8966232B2 (en) * | 2012-02-10 | 2015-02-24 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
EP2862061A4 (en) | 2012-06-15 | 2016-12-21 | Soft Machines Inc | MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE |
EP2862058B1 (en) * | 2012-06-15 | 2021-05-19 | Intel Corporation | A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order |
CN104823168B (zh) | 2012-06-15 | 2018-11-09 | 英特尔公司 | 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统 |
KR101996462B1 (ko) | 2012-06-15 | 2019-07-04 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
WO2013188460A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
CN104583956B (zh) | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
WO2014142704A1 (en) * | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
CN104111868B (zh) * | 2013-04-22 | 2017-08-11 | 华为技术有限公司 | 一种推测多线程调度方法及装置 |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
CN104794128B (zh) * | 2014-01-20 | 2018-06-22 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置 |
US9354883B2 (en) * | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
TWI553484B (zh) * | 2014-04-01 | 2016-10-11 | Nat Univ Chung Cheng | 前瞻臆測處理裝置及其處理方法 |
KR20160054850A (ko) * | 2014-11-07 | 2016-05-17 | 삼성전자주식회사 | 다수의 프로세서들을 운용하는 장치 및 방법 |
GB2549239A (en) | 2014-11-13 | 2017-10-18 | Advanced Risc Mach Ltd | Context sensitive barriers in data processing |
US9928075B2 (en) * | 2015-02-13 | 2018-03-27 | International Business Machines Corporation | Load queue entry reuse for operand store compare history table update |
US9715390B2 (en) * | 2015-04-19 | 2017-07-25 | Centipede Semi Ltd. | Run-time parallelization of code execution based on an approximate register-access specification |
US10628320B2 (en) | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10318302B2 (en) * | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
US10558463B2 (en) | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
CN109964207B (zh) * | 2016-11-11 | 2022-09-27 | 微软技术许可有限责任公司 | 用于时间旅行调试和分析的计算机系统、计算机系统处实施的方法和硬件存储设备 |
US11018982B2 (en) * | 2016-11-14 | 2021-05-25 | SZ DJI Technology Co., Ltd. | Data flow scheduling between processors |
US10275250B2 (en) * | 2017-03-06 | 2019-04-30 | Arm Limited | Defer buffer |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10356015B2 (en) * | 2017-04-27 | 2019-07-16 | Dell Products L.P. | Execution traces |
CN109375991B (zh) * | 2017-08-10 | 2021-07-27 | 中国石油化工股份有限公司 | 一种将单进程改造为多进程的方法及系统 |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
CN117270972B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 指令处理方法、装置、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992003794A1 (en) * | 1990-08-23 | 1992-03-05 | Supercomputer Systems Limited Partnership | Dual level scheduling of processes |
WO1999031594A1 (en) * | 1997-12-16 | 1999-06-24 | Intel Corporation | System for ordering load and store instructions that performs out-of-order multithread execution |
WO2000068781A2 (en) * | 1999-05-11 | 2000-11-16 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US6161167A (en) * | 1997-06-27 | 2000-12-12 | Advanced Micro Devices, Inc. | Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group |
WO2001033352A1 (en) * | 1999-11-01 | 2001-05-10 | Advanced Micro Devices, Inc. | Fast multithreading for closely coupled multiprocessors |
US6233599B1 (en) * | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
US20010037447A1 (en) * | 2000-04-19 | 2001-11-01 | Mukherjee Shubhendu S. | Simultaneous and redundantly threaded processor branch outcome queue |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
US5961631A (en) * | 1997-07-16 | 1999-10-05 | Arm Limited | Data processing apparatus and method for pre-fetching an instruction in to an instruction cache |
US6353881B1 (en) * | 1999-05-17 | 2002-03-05 | Sun Microsystems, Inc. | Supporting space-time dimensional program execution by selectively versioning memory updates |
US6629271B1 (en) * | 1999-12-28 | 2003-09-30 | Intel Corporation | Technique for synchronizing faults in a processor having a replay system |
US6598122B2 (en) * | 2000-04-19 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Active load address buffer |
US6757811B1 (en) * | 2000-04-19 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Slack fetch to improve performance in a simultaneous and redundantly threaded processor |
US7017073B2 (en) * | 2001-02-28 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for fault-tolerance via dual thread crosschecking |
US6928645B2 (en) * | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
-
2001
- 2001-06-28 US US09/896,526 patent/US7752423B2/en not_active Expired - Fee Related
-
2002
- 2002-06-14 DE DE10296989T patent/DE10296989B4/de not_active Expired - Fee Related
- 2002-06-14 GB GB0329899A patent/GB2393297B/en not_active Expired - Fee Related
- 2002-06-14 CN CNB028128540A patent/CN100403257C/zh not_active Expired - Fee Related
- 2002-06-14 JP JP2003509306A patent/JP2005521924A/ja active Pending
- 2002-06-14 KR KR1020037016962A patent/KR100783828B1/ko not_active IP Right Cessation
- 2002-06-14 WO PCT/US2002/019101 patent/WO2003003196A2/en active Application Filing
- 2002-06-14 GB GB0507006A patent/GB2412204B/en not_active Expired - Fee Related
-
2004
- 2004-07-08 HK HK04104979A patent/HK1062056A1/xx not_active IP Right Cessation
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992003794A1 (en) * | 1990-08-23 | 1992-03-05 | Supercomputer Systems Limited Partnership | Dual level scheduling of processes |
US6161167A (en) * | 1997-06-27 | 2000-12-12 | Advanced Micro Devices, Inc. | Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group |
US6233599B1 (en) * | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
WO1999031594A1 (en) * | 1997-12-16 | 1999-06-24 | Intel Corporation | System for ordering load and store instructions that performs out-of-order multithread execution |
CN1285064A (zh) * | 1997-12-16 | 2001-02-21 | 英特尔公司 | 进行无序多线程执行的加载和存储指令排序系统 |
WO2000068781A2 (en) * | 1999-05-11 | 2000-11-16 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
WO2001033352A1 (en) * | 1999-11-01 | 2001-05-10 | Advanced Micro Devices, Inc. | Fast multithreading for closely coupled multiprocessors |
US20010037447A1 (en) * | 2000-04-19 | 2001-11-01 | Mukherjee Shubhendu S. | Simultaneous and redundantly threaded processor branch outcome queue |
Non-Patent Citations (7)
Title |
---|
Computer architecture a quantitative approach. David A.Patterson,John L.Hennessy,229-233,Morgan Kaufmann. 1996 Structured computer organization. Andrew s.tanenbaum,10-12,Prentice-Hall. 1984 |
Computer architecture a quantitative approach. David A.Patterson,John L.Hennessy,229-233,Morgan Kaufmann. 1996 * |
dealer instruction processing unit governorjointrecursive branch prediciton. IBM corp.IBM technical disclosure bulletin,Vol.36 No.6a. 1993 |
dealer instruction processing unit governorjointrecursive branch prediciton. IBM corp.IBM technical disclosure bulletin,Vol.36 No.6a. 1993 * |
Slipstream processors:Improving bothPerformance and faulttolerance. Karthik Sundaramoorthy, Zach purser, Eric Rotenberg.The Association for Computing Machinery 1515 Broadway. 2000 |
Slipstream processors:Improving bothPerformance and faulttolerance. Karthik Sundaramoorthy, Zach purser, Eric Rotenberg.The Association for Computing Machinery 1515 Broadway. 2000 * |
Structured computer organization. Andrew s.tanenbaum,10-12,Prentice-Hall. 1984 * |
Also Published As
Publication number | Publication date |
---|---|
KR20040022436A (ko) | 2004-03-12 |
JP2005521924A (ja) | 2005-07-21 |
GB2393297B (en) | 2005-11-23 |
DE10296989B4 (de) | 2008-06-26 |
GB0507006D0 (en) | 2005-05-11 |
GB2412204B (en) | 2005-11-23 |
US7752423B2 (en) | 2010-07-06 |
WO2003003196A2 (en) | 2003-01-09 |
GB0329899D0 (en) | 2004-01-28 |
DE10296989T5 (de) | 2004-10-14 |
US20030005266A1 (en) | 2003-01-02 |
GB2393297A (en) | 2004-03-24 |
GB2412204A (en) | 2005-09-21 |
KR100783828B1 (ko) | 2007-12-10 |
WO2003003196A3 (en) | 2003-05-01 |
HK1062056A1 (en) | 2004-10-15 |
CN1732433A (zh) | 2006-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100403257C (zh) | 能够隐式地多线程执行单线程程序的装置、方法和系统 | |
JP3588755B2 (ja) | コンピュータシステム | |
JP4578042B2 (ja) | 接近して結合される多重プロセッサのための高速マルチスレッディング | |
CN101814018B (zh) | 事务存储器(tm)系统中的读和写监控属性 | |
Prvulovic et al. | Removing architectural bottlenecks to the scalability of speculative parallelization | |
KR19990072271A (ko) | 고성능의추론적인오정렬로드연산 | |
JP3159435B2 (ja) | ロード/ロード検出及びリオーダー方法及び装置 | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
US20080282051A1 (en) | Methods and arrangements for controlling results of memory retrival requests | |
Firoozshahian | Smart memories: A reconfigurable memory system architecture | |
Martins | 64-Bit CPUs: AMD Hammer vs. Intel IA-64 | |
Kubiatowiz | Users Manual for the Alewife 1000 Controller Version 0.69 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080716 Termination date: 20170614 |
|
CF01 | Termination of patent right due to non-payment of annual fee |