CN1196997C - 不按序执行指令的装置和检测不按序指令的方法 - Google Patents
不按序执行指令的装置和检测不按序指令的方法 Download PDFInfo
- Publication number
- CN1196997C CN1196997C CNB991010159A CN99101015A CN1196997C CN 1196997 C CN1196997 C CN 1196997C CN B991010159 A CNB991010159 A CN B991010159A CN 99101015 A CN99101015 A CN 99101015A CN 1196997 C CN1196997 C CN 1196997C
- Authority
- CN
- China
- Prior art keywords
- instruction
- clauses
- subclauses
- data
- disalignment
- 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
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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
Abstract
本发明涉及一种检测和重定序可能破坏数据相干的不按序指令的设备。本发明包括一个失中队列表,其用于保存指令数据的条目,每一条目相应于计算机微处理器的一条指令。每一条目中的指令数据包括:i)指令的地址信息;ii)指令的顺序信息,用于指示该指令相对于失中队列表中其它指令的顺序;iii)指令的数据修改信息,用于指示数据被修改的可能性;iv)不按序信息,用于指示一条较新指令在相应该条目的较早指令前完成。
Description
技术领域
本发明一般来说涉及计算机处理器领域,更特别地说,涉及集成在单个微处理器芯片上的处理器。再具体说,本发明涉及检测和校正不按序处理所固有的数据相干问题,尤其是多CPU的系统中的这种问题。
背景技术
提供更快的微处理器是当前处理器设计的主要目标之一。已经使用过多种不同的技术来改善处理器性能。一种极大地改进处理器性能的技术是使用超高速缓冲存储器。本文所述的超高速缓冲存储器指的是在微处理器自身内所带有的一组存储器位置,因此比与该微处理器芯片分立的其它类型的存储器诸如RAM或磁盘有快得多的存取时间。通过把常用数据的复制数据存储在超高速缓冲存储器,处理器能够在其需要这些数据时访问该超高速缓冲存储器,而不必“离开芯片”去获取信息,极大地增强处理器的性能。
然而,超高速缓冲存储器的使用存在着一些问题。特别是当系统中使用多处理器而多个处理器需要同样的数据时存在一个很大的问题。在这种情况下,该系统需要保证被请求的数据是相干的,即此时对于该处理器是有效的。另一个问题是,数据存储在一个处理器的超高速缓冲存储器而另一处理器要请求同样的信息。
超标量处理器获得比常规标量处理器更优的性能,因为它们允许指令不按程序顺序执行。以这种方式,一个执行慢的指令不会阻碍后继指令,后者可以在停顿的指令挂起时使用该处理器上的其它资源执行。
在一个典型的结构中,当一条指令需要一条数据时,处理器首先到芯片上的超高速缓冲存储器看该数据是否存在于芯片上的超高速缓冲存储器中。一些超高速缓冲存储器具有两个外部端口,并且超高速缓冲存储器可以交错。这意味着,例如在图1中,一个超高速缓冲存储器100有两个超高速缓冲存储体,140和130。一条超高速缓冲存储体可以用于奇地址,而另一超高速缓冲存储体因此可以用于偶地址。
就内部来说,每一超高速缓冲存储体140和130都有一个内部输入端口(未示出),超高速缓冲存储器请求的地址信息针对的是内部输入端口。在图1中,地址A1的数据存储在超高速缓冲存储体130的超高速缓冲存储器行110内,而地址A2的数据存储在超高速缓冲存储体140的超高速缓冲存储器行120内。超高速缓冲存储器100具有两个用于输入数据的外部端口,端口180和端口190。
超高速缓冲存储器请求1表示对指令1(未示出)的一个超高速缓冲存储器请求,而请求2表示对指令2(未示出)的一个超高速缓冲存储器请求。指令1比指令2早,意味着其应该在指令2前执行。如果一个超标量处理器具有多重加载单元的话,诸如德克萨斯州Austin市IBM公司生产的PowerPCTM中的那样,那么这两条指令可以在同一时间进行超高速缓冲存储器请求。在所示例子中,指令2和指令1都试图访问位于地址A1的数据,并向超高速缓冲存储器100递交超高速缓冲存储器请求来实现该访问。
由于超高速缓冲存储体130只有一个内部输入端口,因此两个超高速缓冲存储器请求不能同时处理。这是由超高速缓冲存储器100的交错本性决定的。
图2表示当超高速缓冲存储器请求2在超高速缓冲存储器请求1之前访问超高速缓冲存储体130时会发生什么。超高速缓冲存储器请求2在超高速缓冲存储体130中命中它需要的数据。然而,超高速缓冲存储器请求1至少直到下一周期才不能访问超高速缓冲存储体130。这样,较新的指令2可以在较早的指令1能够访问超高速缓冲存储体130之前得到其所需数据。在该种情况下,由于这种端口分配冲突,较新的指令2可以在较早指令之前完成。
当较早指令在超高速缓冲存储器中失中而较新指令命中时,会发生同样的顺序问题。失中的发生是当该数据的地址在存储器管理单元中找不到时出现的,于是存储器管理单元必须请求将该数据从更高一级存储器取来。当数据的地址和数据本身可通过存储器管理单元和超高速缓冲存储器取得时就出现命中,而数据可以被输出到一个等待它的指令。
两个试图访问同一数据的指令,较早指令的超高速缓冲存储器请求失中,而随后较新指令的超高速缓冲存储器请求命中,这种情况可能发生在数据的实际地址由两个不同的有效地址表示时。当由较新指令请求的有效地址及其数据已经由存储器管理单元和超高速缓冲存储器可访问,而此前较早指令地址和数据在存储器管理单元和超高速缓冲存储器中不可访问时,这同样会导致与较早指令访问同一数据的较新指令先于较早指令完成。
在多处理器系统中,一个处理器中的超高速缓冲存储器失中可能触发一个对在该系统中其它处理器的“探听”请求。该探听请求告诉其它处理器,被“探听”的数据正由另一处理器请求,其它处理器应该决定正被寻找的地址是否存在于它自己的超高速缓冲存储器中。如果是的话,则应该使主存储器数据相干,亦即被更新以反映该系统状态的正确当前状态。
至于超标量结构,该问题更为复杂,这是因为任何加载可以不按序完成,换句话说,较新指令可能被标记比较早指令先完成。也就是说,较新指令可能被标记为定于比较早指令先执行。这样,两个加载指令可能会寻址同一超高速缓冲存储器位置,而较新指令可能会在较早指令之前实际使用一则数据。这样,新指令标记为不按序完成可能会引起在指令完成中使用错误数据。当后面的加载指令旁路先前的加载指令时,先前的加载指令可能会获得较新的数据,而不是根据原来程序顺序应该接收到的数据。
先前对这一相干问题的解决方案在1996年1月18日申请的序号为08/591249的美国专利申请中详细公开,其名称为“在超标量处理器的加载/存储单元中用于旁路的方法和系统”。在该解决方案中,一个加载队列保存一个页索引和一个实际地址,连同一个ID和一个有效位。该ID指示加载指令的程序顺序。
除前述条目之外,该加载队列条目还保存一个修改字段,它指示该地址的超高速缓冲存储器行条目是否曾被修改。当一个超高速缓冲存储器访问,例如一条存储指令或者一个探听请求,指示该超高速缓冲存储器行可能已被修改,则检索加载队列。如果它包含该同一行的条目,则设定修改位以指示可能的修改。
任何后继的加载将执行加载队列条目的比较。如果该同一行在加载队列中被挂起并标记为被修改的话,则检查ID字段。如果当前行比被挂起且被修改的行早的话,则取消在加载队列中挂起的加载并在后继加载之后重新执行。这就避免了较早加载比较新加载获得较新的数据的问题。
发明内容
按照本发明的一个方面,提供一种不按序执行指令的装置,包括:a)一个失中队列表,用于保存指令数据条目,每一条目相应于一个计算机微处理器中的一条指令,指令数据包括:i)指令的地址信息;ii)指令的顺序信息,用于指示相应指令相对于其它指令的顺序;iii)不按序信息,用于指示使用相应于该地址信息字段地址处的数据的一条较新指令在当前条目前完成;iv)指令的数据修改信息,用于指示在相应于该地址信息字段地址处的数据被修改的可能性;b)一个不按序比较器,用于设定失中队列表中一个条目的不按序信息字段,如果使用相应于失中队列表中存在的条目的地址信息字段地址处的数据的一条较新指令在该存在的条目之前完成时,则该存在的条目的不按序信息字段被设定;c)一个修改比较器,用于比较失中队列表的一个条目中的地址信息字段中的地址信息与一个可能被修改的地址,其中,如果被修改的地址可与被比较的指令条目中的地址信息比较的话,则标记该条目中的修改字段,以指示该地址处被修改的数据。
按照本发明的又一个方面,提供一种检测微处理器中可能引起数据相干破坏的不按序指令的方法,该方法包括:a)准备一条新指令在该微处理器上执行,该新指令具有一个数据地址;b)如果设定该新指令执行,则:i)把该指令的数据地址与在一个失中队列表中存在的条目相比较,上述存在的条目相应于先前指令,包含地址信息、指令顺序信息、一个不按序指示符和一个修改指示符;ii)如果该新指令的数据地址可与失中队列表中一个条目中的地址信息比较的话,则在该失中队列表中标记该可比条目为一个不按序指令;c)如果该新指令不设定为执行,则在失中队列表中为该新指令建立一个条目,从而把该新指令的数据地址放入新指令条目中的地址信息中,而该指令的顺序信息放入新指令条目的顺序信息中。
本发明提供一种新颖的设备,它不用加载队列,只取消可能以错误数据完成的指令。
本发明提供一张失中队列表(mis-queue table),以保存任何被拒绝的访问超高速缓冲存储器尝试,或不能完成指令的任何其它原因。
在优选实施例中,所有指令都在该失中队列表中产生初始条目。如果该指令的数据存在于该超高速缓冲存储器中且可用的话,则从失中队列表中取出该指令条目。处理器在检索失中队列表寻找可能的顺序问题后完成这一工作。然后由处理器的定序单元使用在超高速缓冲存储器中的数据将该指令标记为完成。
一个顺序问题出现在当一条较早指令在一条较新指令后完成,而较新和较早指令都访问同一数据地址时,发生顺序问题。
如果该指令的数据在超高速缓冲存储器中不可用,或者指令由于其它原因不能被完成的话,则在失中队列表中产生的指令条目继续留在失中队列表中,直到该指令准备好完成。当该指令准备好被完成时,诸如当数据在超高速缓冲存储器中就绪,就将该指令标记为完成。然后把该指令条目从失中队列表中删除。
当一条指令准备好完成,则从失中队列表中删除相关条目。对该失中队列表进行检索,以寻找涉及同一地址的任何先前的指令条目。如果找到与正在完成的条目具有同一地址的任何先前的指令条目的话,则标记该先前的指令条目为不按序的,因为它尚未完成。如前所述,这例如在指令具有同一数据地址,而较早指令未由超高速缓冲存储器通知该数据已准备好使用的场合发生。
应该注意,不管是否所有指令都在失中队列表中产生条目,而准备完成的指令条目在下一周期被取出,或者仅仅是被拒绝的指令在失中队列表中产生条目,其功能结果都是一样的。该结果是相应于立即完成的指令的指令条目不存在于失中队列表中,仅相应于未立即完成的指令的指令条目存在于该表中。
这消除了对加载队列的需要,因为所有存在的指令要么被视为是有效的且被设定为运行,要么有一个相应条目放置在失中队列表中等待数据。
如果当前指令完成,则将该数据的地址与失中队列表中的条目对比,寻找是否匹配。如果存在匹配,则在失中队列表中的该匹配条目标记为不按序。也就是说,访问某地址的数据的一个较新指令比一个访问同一地址的较早指令更早地被设定完成,于是该较早指令不按序完成,其在失中队列表中的条目应该作出这种标记。
另外,当超高速缓冲存储器为暂时在失中队列表中有条目的指令返回有效数据时,则相应于该条目的指令被设定为执行。在失中队列表中进行类似检索,寻找与访问该地址的数据而尚未完成的指令对应的较早指令条目。如果发现匹配的话,任何匹配的较早条目都被标记为不按序执行。
如果发生数据相干改变事件的话,诸如一个探听请求,则查询失中队列表。任何具有与数据相干改变事件的相同的地址的条目被标记为被修改。
当指令条目从失中队列表中释放时,该指令被完成。然后处理器决定,是否发生某些事件。如果在失中队列表中的一个指令条目指示,相应于该条目的指令既不按序又被修改的话,则任何被认为在该既不按序又被修改的指令后执行的指令将被取消并重新执行,如此保持数据相干。
附图说明
图1是一个交错的超高速缓冲存储器的图,表示两条指令试图访问一条超高速缓冲存储器上的同一数据。
图2是一条较新指令在一条较早指令前访问图1的超高速缓冲存储器中的数据的图,并表示不按序的完成是如何发生的。
图3是一个超标量处理器的的方框图。
图4是在一个超标量处理器中的一个加载电路的方框图。
图5是根据本发明的优选实施例的一个失中队列表的图。
图6是一个失中队列表的图,表示各字段。
图7-10表示本发明的一个实施例如何检测不按序指令的完成。
图11a-11d表示本发明的一个实施例如何工作。
具体实施方式
图3是一个根据本发明处理信息的处理器系统10的方框图。在该优选实施例中,处理器10是单集成电路超标量微处理器,诸如德克萨斯州Austin市IBM公司生产的PowerPCTM。相应地,下面还要进一步讨论,处理器10包括各种单元、寄存器、缓冲器、存储器和其它部分,它们全部集中在一块集成电路上。另外,在该优选实施例中,处理器10根据精简指令集计算(“RISC”)技术运行。如图3所示,系统总线11连接到处理器10的一个总线接口单元(“BIU”)12。BIU 12控制在处理器10和系统总线11之间的信息传输。
BIU 12连接到处理器10的一个指令超高速缓冲存储器14和一个数据超高速缓冲存储器16。指令超高速缓冲存储器14输出指令到一个定序器单元18。根据指令超高速缓冲存储器14输出的这种指令,定序器单元18选择输出指令到处理器10的其它执行电路。
定序器单元18包括一个分发单元46和一个完成单元48这样的执行单元。除定序器单元18之外,在该优选实施例中处理器10的执行电路包括多重执行单元,亦即,分支单元20、定点单元a(“FXUA”)22、定点单元B(“FXUB”)24、复定点单元(“CFXU”)26、加载/存储单元(“ LSU”)28和浮点单元(“FPU”)30。FXUA22、FXUB24、CFXU26和LSU28从通用结构寄存器(“ GPRs”)32和一个浮点重命名缓冲器34输入其源操作数信息。此外,FXUA22和FXUB24从一个进位(“ CA”)寄存器42输入一个“进位位”。FXUA22、FXUB24、CFXU26和LSU28输出其运算结果(目的操作数信息)以存储在定点重命名缓冲器34的选择条目。另外,CFXU26把源操作数信息和目的操作数信息从专用寄存器(“SPRs”)40输入或向其输出。
FPU30从浮点结构寄存器(“FPRs”)36和浮点重命名缓冲器38输入其源操作数信息。FPU30输出其运算结果(目的操作数信息)以存储在浮点重命名缓冲器38的选择的条目。
定序器18从GPRs32和FPRs36输入信息和向其输出信息。从定序器18,分支单元20输入指令和指示处理器10当前状态的信号。响应这样的指令和信号,分支单元20输出(到定序器18)表示存储着由处理器10执行的一系列指令的适当存储器地址的信号。响应从分支单元20来的这种信号,定序器18从指令超高速缓冲存储器14输入指定的指令序列。如果一条或多条指令序列未在指令超高速缓冲存储器14中存储的话,则指令超高速缓冲存储器14从连接到系统总线11的系统存储器39中输入(通过BIU12和系统总线11)这种指令。
响应从指令超高速缓冲存储器14输入的指令,定序器单元18通过分发单元46选择分发这些指令到选择的一个执行单元20、22、24、26、28或30。每一执行单元执行一条或多条特定指令类型的指令。例如,FXUA 22和FXUB 24执行对源操作数的第一类定点数学运算,诸如加、减、与、或和异或。CFXU 26对源操作数执行第二类定点运算,诸如定点乘和除。FPU 30对源操作数执行浮点运算,诸如浮点乘和除。
处理器10通过同时在各个执行单元20、22、24、26、28和30处理多重指令而获得高性能。相应地,每一指令按一系列阶段进行处理,每一阶段可与其它指令的阶段并行执行。这样一种技术称为“管线”。本优选实施例一个重要特征是,一条指令通常以六个阶段执行,亦即,取指令、解码、分发、执行、完成和回写。
在本优选实施例中,每一指令需要一个机器周期来完成指令处理的每一阶段。然而,某些指令(例如由CFXU 26执行的复定点指令)可能需要多于一个的周期。因此,在一条特定指令的执行和完成阶段之间由于完成前一指令需要的时间变化可能发生不同的延迟。
在响应一条加载指令时,LSU 28从数据超高速缓冲存储器16输入信息,并把该信息复制到重命名缓冲器34和38中选定的重命名缓冲器中。如果该信息未存储在数据超高速缓冲存储器16中,则数据超高速缓冲存储器16从连接到系统总线11的一个系统存储器39输入(通过BIU 12和系统总线11)这种信息。此外,数据超高速缓冲存储器16能够将其信息输出(通过BIU 12和系统总线11)到连接到系统总线11的系统存储器39中。
现在参考图4,图中表示说明根据本发明的一个实施例处理指令(诸如一条加载指令)的一个电路的原理图。数据单元204的一个地址包含物理访问超高速缓冲存储器206需要的控制逻辑。超高速缓冲存储器206具有一个输出端口,其在该例中连接到一个64位数据线如果数据在该超高速缓冲存储器中的话,该数据线从超高速缓冲存储器206传输数据到格式器210以备处理。
在本发明的一个实施例中,每分发一条指令时,就在失中队列表600中产生一个条目。如果该指令在数据超高速缓冲存储器命中,则在后继的周期,从失中队列表600中清除该指令的条目。然而,如果该指令在数据超高速缓冲存储器中失中的话,则其实际地址,可能的话其有效地址,和其它信息保存在失中队列表600中。处理器继续扫描失中队列表中条目的地址信息,并且每一周期,处理器试图访问存储在失中队列表600中的该有效地址处的超高速缓冲存储器。最终,当失中队列表600中的每一条目在超高速缓冲存储器中有可用数据时,其被传输到格式器被处理。
应该注意,如上所述,微处理器不是通过有效地址访问超高速缓冲存储器而可以尝试通过存储在超高速缓冲存储器中的实际地址访问超高速缓冲存储器。应该注意,这是一种实现的事情,而不影响总发明。
然而,应该注意,本发明中当前指令不必从开始就放置在失中队列表600中。当前指令只在,不管什么原因不能设定为在最初由定序单元引入之后立即执行时才需要存在于失中队列表600中。
在本发明的优选实施例中,指令条目按序存储在失中队列表600中。这在图5中用图表示出来,其中产生指令条目410的指令比产生指令条目420的指令较早,因此指令条目410在失中队列表中存储位置比指令条目420高。然而,应该注意,只要有适当的标识和信息,指令也可以不以特定顺序存储在失中队列表中。
失中队列表中的一个条目示于图6。本发明必需的最少信息是地址信息字段510、不按序信息字段520、和修改数据信息字段530。地址信息也可以有子字段,包括实际地址信息540和有效地址信息550。失中队列表条目也可以具有其它与其相关的信息,诸如有效字段560、指令id字段570,其可以用于定序信息。
在另一个实施例中,失中队列表中的条目在失中队列表中不按序存储。图6中的有效字段560指示失中队列表条目是否真的还存在于失中队列表600中。在失中队列表第一行建立一个新条目时有效字段560不设置。定序信息使用指令id字段570保存。
现在转向图7,由处理器最初提供访问地址D处数据的一条新指令800。在该优选实施例中,为该新指令800在失中队列表600的下一可用位置建立一个条目610。如果新指令800立即完成,则处理器相对于新指令800检验失中队列表600中的较早条目620、630和640。具体说,将失中队列表600中所有较早条目的地址信息510与新指令800的地址比较以寻找一个可比地址。由定义可知,在失中队列表600中包含的所有条目必需相应于比该新指令800更早的指令。
应该注意,如果新指令800在下一周期完成,则将删除条目610。还应该注意,条目610不必立即建立。可以相对于在失中队列表600中的条目的地址信息检验新指令800的操作数地址,并且仅当新指令800不能在下一周期内完成时才为其建立条目610。
在另一可选的实施例中,条目610将不删除,而设定其有效字段指示其不再是有效失中队列表条目。然后,更新的条目就可以使用失中队列表600中的这一行。
假定新指令800的数据存在于该超高速缓冲存储器中。那么,新指令800被设定为用其在该超高速缓冲存储器中的该数据完成。然后将失中队列表600中所有较早条目的地址信息510与新指令800要使用的地址加以比较。如果与该新指令800的地址的任何匹配可与失中队列表600中对应某条较早指令的条目的地址信息字段510可相比的话,则这些匹配的条目被标记为不按序。不按序意味着,被标记为完成的一条较新指令使用一条还在失中队列表中的较早指令也要使用的地址处的数据。不按序字段520用于标记一个条目为不按序。
图8表示指令800在下一时钟周期完成后的失中队列表600。注意,指令条目620已经通过不按序字段520被标记为不按序,因为其尚未完成,且访问和新指令800访问的同一存储器位置的数据。
如果新指令800必须等待来自超高速缓冲存储器的数据的话,则它作为一个条目610进入失中队列表,并停留在那里。直到它完成,如图9所示。图9还表示几个其它指令条目在其间已经被加入该失中队列表600中。在较晚一些时间,数据超高速缓冲存储器有为新条目610准备好的数据,但是不与条目620匹配。这样,新指令800完成。
当新指令800完成时,处理器扫描失中队列表中相应于比指令800更早的指令的条目,即所有在相应条目610之上的条目。处理器在较早条目中检索与新指令条目地址字段650可比的地址检索。如果一个较早指令条目要访问的地址被发现为和新指令条目610一样的话,则较早指令条目被标记为不按序,如图10所示。
当新指令800完成时,其在失中队列表600中的条目被删除。在该优选实施例中,所有其它条目上移,这样保持该表的时序,如图9和10所示。
如果在任何时间指令的数据发生改变,则该条目必须指示这一点。这样,如果发生一个探听或其它数据改变指示,且一个指令条目在失中队列表600中存在的话,则该相应指令条目的修改指示符530被设定以指示一个可能的问题。处理器扫描这些条目,标记每一其地址是数据改变的同一地址的条目为被修改。
当数据相干性可能已被破坏时,不按序指示符和修改指示符两者都表示这些事件发生。这意味着,一条被设定为先于一条较早指令完成的较新指令可能具有比较早指令更早的与其相关的数据。这将可能破坏数据相干性。
图11a、11b、11c和11d表示检测到该问题的一个序列。失中队列表600具有初始条目1110、1120和1130,分别相应于指令1210、1220和1230。新指令1240被启动进入存储器位置a,其数据在超高速缓冲存储器中存在。然后当新指令1240如图11b中所示在条目1110前完成时把条目1110标记为不按序。产生一个探听请求1140,指示存储器位置a在图11c中改变。在查询失中队列表600时,标记条目1110为被修改。于是,条目1110指示从a来的数据有一个数据相干问题。
应该注意,新指令1240生成失中队列表600中的一个条目1150,虽然它被立即清除。应该注意,如果新指令1240在超高速缓冲存储器中失中,则生成的条目1150将保留在失中队列表600中。还应该注意,条目1150也可以在该次失中后生成。重要的是,新指令1240的操作数地址要与失中队列表中的条目比较,如果新指令1240在相应于较早条目1110、1120和1130的指令前完成时,任何地址匹配都要作标记。
当一条指令被表示为被修改且不按序时,如条目1110的情况,则引起较早指令条目被标记为不按序的较新指令不能运行。在该优选实施例中,当相应于条目1110的指令完成时,失中队列表向完成逻辑报告,相应于该条目的指令发生问题。相应于条目1110的指令被完成并允许执行。然而跟随生成条目1110的指令的所有指令,亦即指令1220、1230和1240,以及所有其它完成并设定为在相应于条目1110的指令之后执行的指令都被取消并复位,再次经历整个运行过程。
在本发明的优选实施例中,地址只比较到一定的粒度(granularity)。于是,地址只与双字边界比较以指示可能的问题。然而,应该注意,实际地址以及其它粒度的地址也可以比较。
在本发明的优选实施例中,在错误情况被检测到后,在指示该问题的指令后的所有指令被刷新并复位以便执行。这样,在剩余指令的刷新中保存了数据相干性。
Claims (7)
1.一个不按序执行指令的装置,包括:
a)一个失中队列表,用于保存指令数据条目,每一条目相应于一个计算机微处理器中的一条指令,指令数据包括:
i)指令的地址信息;
ii)指令的顺序信息,用于指示相应指令相对于其它指令的顺序;
iii)不按序信息,用于指示使用相应于该地址信息字段地址处的数据的一条较新指令在当前条目前完成;
iv)指令的数据修改信息,用于指示在相应于该地址信息字段地址处的数据被修改的可能性;
b)一个不按序比较器,用于设定失中队列表中一个条目的不按序信息字段,如果使用相应于失中队列表中存在的条目的地址信息字段地址处的数据的一条较新指令在该存在的条目之前完成时,则该存在的条目的不按序信息字段被设定;
c)一个修改比较器,用于比较失中队列表的一个条目中的地址信息字段中的地址信息与一个可能被修改的地址,其中,如果被修改的地址可与被比较的指令条目中的地址信息比较的话,则标记该条目中的修改字段,以指示该地址处被修改的数据。
2.权利要求1所述装置,其特征在于,该装置取消在相应于指示一个不按序指令且数据被修改的指令条目的一条指令后的所有后继指令。
3.权利要求1所述装置,其特征在于,不按序比较器比较一个条目中的所有数据地址信息,以决定这些地址是否可比较。
4.权利要求1所述装置,其特征在于,不按序比较器比较一个条目中的部分数据地址信息,以决定这些地址是否可比较。
5.检测微处理器中可能引起数据相干破坏的不按序指令的方法,该方法包括:
a)准备一条新指令在该微处理器上执行,该新指令具有一个数据地址;
b)如果设定该新指令执行,则:
i)把该指令的数据地址与在一个失中队列表中存在的条目相比较,上述存在的条目相应于先前指令,包含地址信息、指令顺序信息、一个不按序指示符和一个修改指示符;
ii)如果该新指令的数据地址可与失中队列表中一个条目中的地址信息比较的话,则在该失中队列表中标记该可比条目为一个不按序指令;
c)如果该新指令不设定为执行,则在失中队列表中为该新指令建立一个条目,从而把该新指令的数据地址放入新指令条目中的地址信息中,而该指令的顺序信息放入新指令条目的顺序信息中。
6.权利要求5所述方法,其特征在于,进一步包括步骤:
d)连续扫描失中队列表以寻找相应于设定为执行的指令的条目;
e)当相应于在失中队列表中一个条目的一条指令被设定为执行时:
i)把相应于设定为执行的指令的条目的地址信息与在失中队列表中相应于比设定为执行的指令较早的指令的条目的地址信息比较;
ii)如果在失中队列表中找到一个相应于比设定为执行的指令较早的指令的条目,并且如果相应于该设定为执行的指令的条目的地址信息可与相应于该较早指令条目中的地址信息匹配的话,则标记相应于该较早指令的条目为不按序;
iii)从失中队列表中清除相应于设定为执行的指令的条目。
7.权利要求6所述方法,其特征在于,进一步包括步骤:
f)连续扫描数据改变事件;
g)当一个数据改变事件发生时:
i)对失中队列表广播被改变数据的地址;
ii)比较被改变数据的地址和在失中队列表的条目中的地址信息;
iii)如果被改变数据的地址可与失中队列表中一个条目的地址比较的话,则标记失中队列表中具有可比较地址的条目为被修改。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US021,134 | 1998-02-10 | ||
US09/021,134 US6148394A (en) | 1998-02-10 | 1998-02-10 | Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor |
US021134 | 1998-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1226023A CN1226023A (zh) | 1999-08-18 |
CN1196997C true CN1196997C (zh) | 2005-04-13 |
Family
ID=21802532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB991010159A Expired - Fee Related CN1196997C (zh) | 1998-02-10 | 1999-01-07 | 不按序执行指令的装置和检测不按序指令的方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6148394A (zh) |
EP (1) | EP0936542A3 (zh) |
JP (1) | JP3159435B2 (zh) |
KR (1) | KR100335744B1 (zh) |
CN (1) | CN1196997C (zh) |
CA (1) | CA2260541C (zh) |
HK (1) | HK1019799A1 (zh) |
ID (1) | ID21939A (zh) |
MY (1) | MY122053A (zh) |
SG (1) | SG70151A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418514B1 (en) * | 1998-02-17 | 2002-07-09 | Internationl Business Machines Corporation | Removal of posted operations from cache operations queue |
US6738896B1 (en) * | 1999-02-01 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for determining availability of a queue which allows random insertion |
US6704856B1 (en) * | 1999-02-01 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Method for compacting an instruction queue |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6487641B1 (en) * | 1999-04-19 | 2002-11-26 | Oracle Corporation | Dynamic caches with miss tables |
US7634635B1 (en) | 1999-06-14 | 2009-12-15 | Brian Holscher | Systems and methods for reordering processor instructions |
US7089404B1 (en) | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US6748589B1 (en) | 1999-10-20 | 2004-06-08 | Transmeta Corporation | Method for increasing the speed of speculative execution |
US6678810B1 (en) | 1999-12-30 | 2004-01-13 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
DE10121792C2 (de) * | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
JP2003029967A (ja) | 2001-07-17 | 2003-01-31 | Fujitsu Ltd | マイクロプロセッサ |
DE10243446B4 (de) * | 2002-09-19 | 2005-12-15 | Celanese Chemicals Europe Gmbh | Verfahren zur Herstellung von Aldehyden |
JP4327008B2 (ja) * | 2004-04-21 | 2009-09-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US7401209B2 (en) * | 2006-06-30 | 2008-07-15 | International Business Machines Corporation | Limiting entries searched in load reorder queue to between two pointers for match with executing load instruction |
US7991979B2 (en) * | 2008-09-23 | 2011-08-02 | International Business Machines Corporation | Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system |
US20120117335A1 (en) * | 2010-11-10 | 2012-05-10 | Advanced Micro Devices, Inc. | Load ordering queue |
US11150836B2 (en) | 2018-06-28 | 2021-10-19 | Seagate Technology Llc | Deterministic optimization via performance tracking in a data storage system |
US10713057B2 (en) | 2018-08-23 | 2020-07-14 | International Business Machines Corporation | Mechanism to stop completions using stop codes in an instruction completion table |
KR20200112435A (ko) * | 2019-03-22 | 2020-10-05 | 에스케이하이닉스 주식회사 | 캐시 메모리, 이를 포함하는 메모리 시스템, 및 그의 동작 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
JP2925818B2 (ja) * | 1991-04-05 | 1999-07-28 | 株式会社東芝 | 並列処理制御装置 |
JPH05210586A (ja) * | 1992-01-14 | 1993-08-20 | Nec Corp | キャッシュメモリ制御回路 |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US5420990A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Mechanism for enforcing the correct order of instruction execution |
US5625835A (en) * | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5737636A (en) * | 1996-01-18 | 1998-04-07 | International Business Machines Corporation | Method and system for detecting bypass errors in a load/store unit of a superscalar processor |
US5712997A (en) * | 1996-01-31 | 1998-01-27 | Sun Microsystems, Inc | System and method for processing load instruction in accordance with "no-fault " processing facility including arrangement for preserving access fault indicia |
US5809275A (en) * | 1996-03-01 | 1998-09-15 | Hewlett-Packard Company | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US5898853A (en) * | 1997-06-25 | 1999-04-27 | Sun Microsystems, Inc. | Apparatus for enforcing true dependencies in an out-of-order processor |
-
1998
- 1998-02-10 US US09/021,134 patent/US6148394A/en not_active Expired - Fee Related
- 1998-10-28 MY MYPI98004914A patent/MY122053A/en unknown
- 1998-12-28 ID IDP981693A patent/ID21939A/id unknown
-
1999
- 1999-01-07 CN CNB991010159A patent/CN1196997C/zh not_active Expired - Fee Related
- 1999-01-15 KR KR1019990001066A patent/KR100335744B1/ko not_active IP Right Cessation
- 1999-02-01 CA CA002260541A patent/CA2260541C/en not_active Expired - Fee Related
- 1999-02-03 EP EP99300779A patent/EP0936542A3/en not_active Withdrawn
- 1999-02-03 JP JP02585799A patent/JP3159435B2/ja not_active Expired - Fee Related
- 1999-02-05 SG SG1999000477A patent/SG70151A1/en unknown
- 1999-10-28 HK HK99104881A patent/HK1019799A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP0936542A2 (en) | 1999-08-18 |
CN1226023A (zh) | 1999-08-18 |
HK1019799A1 (en) | 2000-02-25 |
CA2260541C (en) | 2004-08-10 |
KR100335744B1 (ko) | 2002-05-08 |
SG70151A1 (en) | 2000-01-25 |
ID21939A (id) | 1999-08-12 |
US6148394A (en) | 2000-11-14 |
KR19990072272A (ko) | 1999-09-27 |
JPH11272466A (ja) | 1999-10-08 |
JP3159435B2 (ja) | 2001-04-23 |
EP0936542A3 (en) | 2000-06-07 |
MY122053A (en) | 2006-03-31 |
CA2260541A1 (en) | 1999-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
US5778434A (en) | System and method for processing multiple requests and out of order returns | |
EP0097790B1 (en) | Apparatus for controlling storage access in a multilevel storage system | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存系统 | |
US5944815A (en) | Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access | |
CN1296827C (zh) | 一种使用数据地址增加组相关存储器的访问速度的方法 | |
US6275902B1 (en) | Data processor with variable types of cache memories and a controller for selecting a cache memory to be access | |
CN1098486C (zh) | 通过合并存储操作进行集中存储的处理机及方法 | |
US20070050592A1 (en) | Method and apparatus for accessing misaligned data streams | |
US6487639B1 (en) | Data cache miss lookaside buffer and method thereof | |
EP1202180A1 (en) | Scalar data cache for a vector processor | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
CN1841343A (zh) | 改进任务切换的系统和方法 | |
JP2000259412A (ja) | ストア命令転送方法およびプロセッサ | |
JP2783505B2 (ja) | 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム | |
JP2000250810A (ja) | ロード命令を実行する方法、プロセッサ、およびシステム | |
JP2735781B2 (ja) | キャッシュ・メモリ制御システム及び方法 | |
KR19990072271A (ko) | 고성능의추론적인오정렬로드연산 | |
KR100618248B1 (ko) | 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법 | |
US5737749A (en) | Method and system for dynamically sharing cache capacity in a microprocessor | |
US6463514B1 (en) | Method to arbitrate for a cache block | |
JP2843750B2 (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
US6760816B1 (en) | Critical loads guided data prefetching | |
US5765017A (en) | Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers |
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: 20050413 Termination date: 20100208 |