专利名称:将装载操作的猜测结果与寄存器值相连接的系统与方法
技术领域:
本发明涉及微处理器领域,特别是涉及实现微处理器中的数据猜测执行(data-speculative execution)。
背景技术:
超标量(Superscalar)微处理器通过同时执行多项指令,以及通过使用其设计允许的最短时钟周期,而获得高性能。然而,介于指令间的数据及控制流依赖性,可在任何给定时间内,限制有多少个指令可发布。因此,为了达成额外的性能增益,某些微处理器于是支持猜测执行。
一种猜测类型是控制流猜测。控制流猜测预测程序控制进行的方向。举例而言,分支预测可用于预测是否将采用一分支。可采用许多类型的分支预测,其范围为从每次仅作相同预测的方法,到那些在程序中维持先前分支的复杂的历史分支记录,以用于做出基于历史的预测的方法。分支预测可通过硬件最佳化、编译器最佳化或同时二者而实行。以分支预测机制所提供的预测为基础,则可猜测性地获取及执行指令。当分支指令最后被评估时,可验证分支预测。若预测为不正确,则任何以此不正确预测为基础,所猜测性执行的指令,皆可被撤销。
已提出的猜测的另一类型为数据猜测。举例而言,预测数据项的值的值预测,可包含数据的观测模式,并以此模式作为预测的基础(例如,可通过观测该变量之前的值怎么增加或怎么减少,而预测该索引计数器变量的值)。地址预测包括预测数据的位置。另一种类型的数据猜测被称为内存系统最佳化。在多处理器的系统中,内存系统最佳化发生在一致性检测完成之前,使用从处理器内部的高速缓存而来的数据,处理器猜测性执行指令时。同样地,数据猜测的另一类型,可在装载执行的同时,具有未计算地址的储存之前,允许猜测性执行装载,即使该储存可能将数据储存至和装载存取相同的地址。在所有这些类型的数据猜测中,基本条件最终将受到评估,允许猜测被验证或复原。若猜测最终为不正确,则使用猜测数据所执行的指令,可重新执行(例如,使用已更新及/或非猜测数据)。
因为猜测不需等待相关性检查完成,即允许继续向前执行,故当从正确猜测而来的性能增益超过损失在不正确猜测上的性能时,将可达到显著的性能增益。因此需要能够在微处理器中执行数据猜测,以及提供用于猜测错误的高效率恢复机制。
发明内容
本发明可实施将装载操作的猜测结果连接到寄存器值的方法与系统的多种具体实施例。在一具体实施例中,一系统可包括一内存文件,该内存文件包括配置以储存第一寻址模式与第一标记的一记录(entry),以及耦合到内存文件的一执行核心。该内存文件可能配置以将包括在该记录中的第一寻址模式与装载操作的第二寻址模式相比较。假如第二寻址模式与储存在该记录中的第一寻址模式匹配的话,该内存文件则配置以将由第一标记所识别的数据值连接到装载操作的猜测结果。该执行核心配置以在进行取决于装载操作的第二操作的时候存取该猜测结果。
一种方法的具体实施例包含将第一操作的第一寻址模式与第二操作的第二寻址模式相比较。第二操作在程序设计的顺序上比第一操作还早发生。假如第一寻址模式与第二寻址模式相配的话,那么第二操作的操作数的标记所识别出的数据值则可能连接到第一操作的猜测结果。具有取决于第一操作的结果的操作数来源的第三操作,其可能使用该标记所识别出的数据值来进行。
当上述详细说明,配合下列附图一并考虑时,可对本发明有更好的了解,附图如下图1为一微处理器的一个具体实施例。
图2A为分派单元的一个具体实施例的方框图。
图2B显示可用于一个具体实施例的示例性存储器文件储存记录。
图3为显示一方法的一个具体实施例的流程图,该方法将装载操作的猜测结果与由特定标记所识别的数据值相连接。
图4为调度装置的一个具体实施例的方框图。
图5为显示一方法的一个具体实施例的流程图,该方法发布操作,并响应不正确的数据猜测的指示,再发布操作。
图6为分派单元的另一个具体实施例的方框图。
图7为分派单元的又一个具体实施例的方框图。
图8为显示另一个方法的流程图,该方法以猜测数据值发布操作,以及从预测错误的情形中恢复。
图9为一计算机系统的一个具体实施例。
图10为一计算机系统的另一个具体实施例。
本发明适用于各种不同的变形,替代类型,以及通过图式中的范例所显示的特定实施例,并将在文中详细描述。然而必须清楚,图式及详细说明,并不意味着将本发明限制在文中所揭露的特定类型,而是意在涵盖所有符合本发明的精神及范畴的变形、等效及替代类型,其中本发明的精神及范畴由所附的申请专利范围所定义。必须注意标题仅就编制的目的所用,而并非用以限制或解释该说明或申请专利范围。再者,必须注意在此说明书中广泛使用的用字″可(may)″是广义的定义(亦即,具备潜力足以,具备能力可以),而非狭义的定义(亦即,必定可以)。用字″包含(include)″及其衍生语意表示″包含,但不仅局限于此。″用字″连接(connected)″表示″直接或间接连接″,而用字″耦合(coupled)″则表示″直接或间接耦合″。
具体实施例方式
图1为微处理器100的一个实施例的方框图。微处理器100用以执行储存在系统内存200中的指令。许多的这些指令根据储存在系统内存200中的数据操作。必须注意系统内存200实际上可分布在整个计算机系统中,并可由一个或多个微处理器100对其存取。
微处理器100可包含指令高速缓存106以及数据高速缓存128。微处理器100可包含耦合至指令高速缓存106的预取单元108。分派单元104可配置成用以接收从指令高速缓存106所发出的指令,并可分派操作至调度装置118。可耦合一个或多个调度装置118以从分派单元104接收所分派的操作,并可发布操作至一个或多个执行核心124。执行核心124可包含装载/储存单元126,该装载/储存单元126用以存取数据高速缓存128。由执行核心124所产生的结果可输出至结果总线130。这些结果可用以作为操作数的值,供后续发布指令及/或储存至寄存器堆116所用。取回队列(retire queue)102可耦合至调度装置118和分派单元104。取回队列可用以决定每个发布的操作何时可取回。在一个实施例中,微处理器100可设计用以和x86架构兼容。必须注意微处理器100也可包含许多其它组件。举例而言,微处理器100可包含分支预测单元(未示出)。
指令高速缓存106可在分派单元104接收指令之前先暂存指令。可通过预取单元108,从系统内存200预取代码,而提供代码给指令高速缓存106。指令高速缓存106可以数种不同的设置实施(例如,集合结合、完全结合或直接映射)。
预取单元108可从系统内存200预取代码,以储存在指令高速缓存106之中。在一个具体实施例中,预取单元108可以将从系统内存200来的突发代码发入指令高速缓存106。预取单元108可使用数种特定代码预取技术及算法。
分派单元104可输出包含位编码操作的信号,该位编码操作可被执行核心124以及操作数地址信息、操作数立即数、及/或操作数偏移数据执行。在某些实施例中,分派单元104可包含译码电路(未示出),用以将特定指令译码成可在执行核心124中执行的操作。简单指令可对应于简单操作。在某些实施例中,更复杂的指令可对应于多个操作。根据包括寄存器更新的操作的译码,寄存器堆116中的寄存器位置可保留用以储存猜测寄存器状态(在另一个具体实施例中,重排序缓冲器可用以储存一个或多个为每个寄存器所用的猜测寄存器状态)。为了促进寄存器重新命名,可使用寄存器映射134将来源及目的操作数的逻辑寄存器名称转译成物理寄存器名称。寄存器映射134可追踪寄存器堆116中的各寄存器目前哪些已被分配,以及哪些尚未分配。
图1的微处理器100支持无序执行。取回队列102可持续追踪用于寄存器读、写等操作的原始程序,并允许猜测指令执行及分支预测错误的恢复,并有助于明确异常。在某些实施例中,取回队列102也可通过提供用于猜测寄存器状态的数据值储存,而支持寄存器重新命名。在许多实施例中,取回队列102可用类似重排序缓冲器的方式动作。然而,与典型的重排序缓冲器的不同处在于,取回队列102无法提供任何数据值储存。在某些实施例中,取回队列102可以以先进先出的设置实现,在该设置中当操作生效时,将其移至缓冲器底部,以腾出空间让新记录停留在队列顶端。当操作取回时,取回队列102可解除寄存器堆116中不再需要储存猜测寄存器状态的寄存器的分配,并提供信号给寄存器映射134,指出现阶段有哪些寄存器可用。通过维持寄存器堆116(或在另一个具体实施例,在重排序缓冲器之中)中的猜测寄存器状态,直到产生那些状态的操作生效,若分支预测错误,则伴随预测错误路径的猜测性执行操作的结果,可能会在寄存器堆116之中失效。
根据特定操作的译码,若所需的操作数为寄存器位置,则寄存器地址信息可发送到寄存器映射134(或重排序缓冲器)。举例而言,在x86架构中,有八个32位的逻辑寄存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。物理寄存器堆116(或重排序缓冲器)包含用于结果的储存并允许无序执行,其中该结果为改变这些逻辑寄存器的内容的结果。寄存器堆116中的物理寄存器,可被分配来储存各操作的结果,该操作根据译码,而决定修改其中一个逻辑寄存器的内容。因此,根据数种观点,在特定程序执行期间,寄存器堆116(或在另一个具体实施例中,在重排序缓冲器之中)可具有一个或多个寄存器,该寄存器包括一给定的逻辑寄存器的猜测性执行的内容。
寄存器映射134可指定一物理寄存器至特定的逻辑寄存器,作为用于操作的目的操作数。分派单元104可决定寄存器堆116具有一个或多个预先分配的物理寄存器,该物理寄存器作为已给定操作中的来源操作数指定给特定的逻辑寄存器。寄存器映射134可提供标记,用于最近一次指向逻辑寄存器的物理寄存器。此标记可用以存取在寄存器堆116中操作数的数据值,或通过在结果总线130上传递的结果而接收数据值。若操作数对应于一内存位置,则可通过装载/储存单元222,将操作数的值提供给结果总线(将结果传送和/或储存在寄存器堆118中)。当操作由某个调度装置118发布时,操作数数据值可提供给执行核心124。必须注意在另一个具体实施例中,当分派操作时,操作数的值便可提供给相对应的调度装置118(而不是当操作发布时,提供给相对应的执行核心124)。
位编码操作,以及在分派单元104的输出端所提供的立即数,可按规定路线发送至一个或多个调度装置118。必须注意如同文中所用,调度装置是一装置,用以侦测何时操作已待执行,并发布已待命的操作至一或多个执行单元。举例而言,保留站即是调度装置。各调度装置118皆可保持操作信息(例如,已编码位的执行位及操作数的值、操作数标记及/或立即数),该信息供正等待发布给执行核心124的数个待处理操作所用。在某些实施例中,每个调度装置118皆无法提供操作数的值储存。取而代之的是,为决定操作数的值何时可供执行核心124读取(从寄存器堆116或结果总线130),各调度装置可监视已发布的操作以及寄存器堆116中可用的结果。在某些实施例中,各调度装置118可配合专用的执行核心124。在其它实施例中,单一调度装置118可发布操作至超过一个执行核心124。
调度装置118可提供暂时储存操作信息的功能,该操作信息由待执行核心124执行。如前所述,各调度装置118可储存就待处理操作所用的操作信息。此外,各调度装置可储存用于操作的操作信息,该操作已执行过但仍可再发布。操作发布给执行核心124以响应任何所需操作数的值的执行,其中该操作数已及时成为执行可用的。因此,操作所执行的顺序不会和原始程序指令序列的顺序相同。具有数据猜测的操作可继续保留在调度装置118之中,直到其变成非猜测为止,以便当数据猜测为错误时,可对其重新发布。
在一个实施例中,各执行核心124可包含这样的组件,该组件配置成用来执行加法及减法的整数算数操作,以及移位操作、循环操作、逻辑操作、分支操作。也可包含浮点数单元以提供浮点数的操作。一个或多个执行核心124,可配置用以执行地址产生,用于装载及储存内存操作,该装载及储存内存操作由装载/储存单元126所执行。
执行核心124还可提供信息给分支预测单元,该信息关于条件式分支指令的执行,因此若当分支猜测错误时,分支预测单元则可在猜测错误分支之后扫除指令,其中该猜测错误分支已进入到指令处理路线以及再直接预取单元106。再直接预取单元106随后可从指令高速缓存106或系统内存200之中,开始撷取正确的指令集。在此情形中,发生在猜测错误分支指令之后的原始程序序列中的指令结果可摒弃不用,包括那些受猜测性执行以及暂时储存于寄存器堆116中的指令结果,皆可摒弃不用。若寄存器的值被更新,则由执行核心124内部组件所产生的结果,可输出至结果总线130,再到寄存器堆116。若内存位置的内容已改变,则由执行核心124内部产生的结果可提供给装载/储存单元126。
装载/储存单元126提供介于执行核心124及数据高速缓存128之间的一接口。在一个实施例中,装载/储存单元126可与装载/储存缓冲器一同配置,该装载/储存缓冲器具有数个供数据及地址信息用于待处理装载及储存。装载/储存单元126还可执行相关性检查,用于相对于待处理储存指令的装载指令,以确保数据保持一致性。
数据高速缓存128为一高速缓存,用以暂存在装载/储存单元126及系统内存200之间传送的数据。如同上述的指令高速缓存106,数据高速缓存128可在多种特定内存配置中实行,包含一组结合的配置。此外,在某些实施例中,数据高速缓存106及指令高速缓存128可在统一的高速缓存中实行。
图2A显示分派单元104的一个具体实施例。在此实施例中,分派单元104包含寄存器映射134,以及内存文件132。如前所述,寄存器映射134可配置用以提供寄存器重新命名。寄存器映射134可接收逻辑寄存器名称供各来源及目的操作数所用,并可输出最近一次指定给逻辑寄存器的物理寄存器的物理寄存器名称。内存文件132包含内存文件控制器202,以及内存文件储存器204。
内存文件储存器204包含一个或多个记录220。每个记录220都可包含寻址模式206以及标记208,该标记与记录的寻址模式有关。各标记皆可在数据值产生时,通过指出数据值该储存于何处(例如,在重排序缓冲器之中,或在寄存器堆116之中),而识别该数据值。举例而言,如显示的实施例所示,各标记皆可识别分配以储存数据值的物理寄存器,如同由寄存器映射134所指示者。各寻址模式可包含全部或一些信息,用以具体指定操作之中的地址。举例而言,快速参考图2B,显示一示范的寻址模式206。在此实施例中,寻址模式206包含基本逻辑寄存器名称210,索引逻辑寄存器名称212、以及偏移量214。一些寻址模式206可能包括一寄存器的一段逻辑寄存器名称,用于识别内存中的特定段。要注意的是,在许多具体实施例中,储存于内存文件储存器204之中的寻址模式206可不必包含所有的寻址信息,该寻址信息具体指定用于一操作。举例而言,内存文件储存器204中的记录,可储存少于用以具体指定在偏移量字段214中的偏移量的所有位。在其它具体实施例中,内存文件控制器202可能依据内存文件中的记录是否可储存特定操作的所有寻址信息,而选择性地选择是否要将记录配置在内存文件存储器中。例如,假设内存文件存储器204中的各记录储存了多达16位的移位信息,而且一特定操作的寻址信息包括24位的移位信息的话,那么内存文件控制器202就不可能配置内存文件记录,以用于该操作的寻址信息。在一些具体实施例中,内存文件存储器204可由几个寄存器、锁存器、触发器、或者其它时钟存储器来实现。在另一个具体实施例中,内存文件存储器204可能包括一个或者更多个随机存取存储器(RAM)单元。
内存文件控制器202可对在未分派的操作中的具体指定的寻址模式,和储存在内存文件储存器204中的记录内的寻址模式做比较。若一操作的寻址模式不符合当时储存在内存文件储存器204中的记录内的任何寻址模式(亦即,该操作的寻址模式在内存文件储存器之中漏失),则内存文件控制器202可在内存文件储存器204之中分配新的记录,以便储存全部或部分操作的寻址模式。若在内存文件储存器204之中,并无空闲的记录可供分配之用,则内存文件控制器202可选择一记录,并通过使用替换方案而将其覆盖,其中该替换方案例如最近最少使用(Least Recently Used,LRU)、先进先出(FIFO)、随机替换等方案。除了将操作的分配模式储存在已分配的记录中之外,内存文件控制器202还可储存标记(例如,物理寄存器的名称),该标记识别一装载出或者存入内存位置的值,该内存位置由操作的寻址模式所识别。举例而言,若从内存装载数据的操作被处理,则响应该操作所分配的记录可储存物理寄存器的名称,该物理寄存器分配用来储存装载操作的结果。若将数据存入内存位置的操作被处理,则内存文件控制器202可储存储存该值的寄存器的物理寄存器名称,其中该值通过储存操作存在内存文件储存器204之中。
若一操作的寻址模式(或一部份该模式)已将一记录存入内存文件204中(亦即,该操作的寻址模式命中内存文件储存器内部),则内存文件控制器202可使用或修改该记录,该记录包括有相符的寻址模式。若一装载操作(从特定地址装载值到寄存器中的操作)被处理,则内存文件控制器202可输出物理寄存器名称208,该物理寄存器名称208储存在匹配的记录中。若一储存操作(该操作将从寄存器来的数据储存入特定内存地址)被处理,则内存文件控制器202可覆盖标记(例如,物理寄存器名称208),该标记与数据已储存的标记储存于相符的记录之中。
若一装载操作被处理,且该装载操作命中于内存文件储存器204中,则由内存文件控制器202所输出的标记,可用以将由标记所识别的储存的值连接到装载操作的猜测结果。举例而言,在某些实施例中,当分派装载操作给调度装置118时,则由内存文件132所输出的标记,也能提供给调度装置(例如,作为猜测来源操作数标记)。调度装置118可发布该操作,以响应标记所识别的值的可用性(例如,在寄存器堆116或结果总线130之中)。执行核心124可执行装载操作,以使已连接的值可像结果总线130上的装载操作的猜测结果那样广播传递(必须注意在某些实施例中,产生作为装载结果的数据值,其自身不可被标记,或用其它方式识别自身为猜测值)。在其它实施例中,数据值可通过将标记存入猜测映射中而连接至装载操作的猜测结果,如下所述。
作为连接的结果,一旦由标记所定义的数据值为可用时(例如,在寄存器堆116之中,或在结果总线130之上),则该数据值可被作为猜测结果传递,以允许依赖的操作使用猜测值的结果执行。在许多情况下,如果相关操作的执行被延迟,这将允许依赖的操作使用该装载操作的猜测结果更快地执行,直至该装载操作的非猜测结果可用。在某些实施例中,数据值可通过执行装载操作而传递,以使数据值作为装载操作的猜测结果输出至结果总线130。举例而言,在一个实施例中,不采取三次循环执行装载非猜测性的方式(假设装载命中于数据高速缓存128内部),而是通过输出数据值及标记,以单次循环的方式执行装载,其中该标记识别数据值作为装载结果。在其它实施例中,数据值可用较不直接的方式传递,亦即直接将内存文件控制器202所输出的标记,提供给依赖的操作(具有操作数的操作,其操作数由装载操作提供)作为分派的猜测操作数来源。传递数据值的装置,可包含一个或多个配置用以修正装载操作的分派单元,使该装载操作作为猜测寄存器间的移动操作而执行,或使该装载操作作为猜测操作数来源标记提供标记给依赖的操作;调度装置根据已连接的数据值可用性配置用以发布修正的装载和/或依赖的操作;以及执行核心配置用以将已连接的数据值作为装载的结果输出,或使用该已连接的数据值执行依赖的操作。
该装载储存单元126(或者用于确认微处理器100内的连接的另一个装置)可能确认储存在由内存文件132所识别的物理寄存器中的数值与装载操作的猜测结果的连接。假如该连接不正确的话,装载储存单元126就可能使该装载再发布以及/或者在结果总线130上广播传递该装载操作的正确结果。再发布该装载可能会导致任何依赖性操作,该些操作使用装载的猜测结果来执行以再发布,并且使用更新、非猜测性数值来执行。或者,假如该连接不正确的话,处理器100就可能清除发生在错误猜测之后的操作,并且使用装载操作的正确结果的那些操作重新开始执行。
如图所示,内存文件132追踪操作之中的寻址模式,该操作在数据高速缓存128(或系统内存200)之中用于存取数据。因此,储存于物理寄存器中的寄存器的值可被连接至内存中储存在特定地址的值。
为了进一步显示内存文件132的操作,现在假设有一连串的操作将被分派单元104处理,该一连串操作包含下列操作MOV EBX,[EDX+EAX-偏移量A](装载1)…MOV ECX,[EDX+EAX-偏移量A](装载2)…MOV[EDX+EAX-偏移量A],EAX(储存1)
这些操作的任何一个,皆可通过程序命令的一个或多个干扰操作而分离。如上所示,这三个操作的任何一个,皆包含相同的寻址模式,EDX+EAX-偏移量A。
当装载1(LOAD1)的寻址模式提供给内存文件132时,内存文件控制器202可检查内存文件储存器204以供寻址模式所用,该寻址模式符合LOAD1的寻址模式。假设寻址模式在内存文件储存器204之中丢失,则内存文件控制器202可分配一记录(通过使用未分配的记录,或通过覆盖已分配的记录而完成),以储存全部或一些装载操作的寻址模式,以及装载操作的目的物理寄存器的物理寄存器名称,如同由寄存器映射134所提供。由于装载操作在内存文件储存器之中丢失,内存文件控制器202从而无法输出用于该装载操作的标记。
当装载2(LOAD2)随后由内存文件132处理,则其寻址模式可符合响应LOAD1分配的记录的寻址模式(假设该记录并未因响应干扰操作而被覆盖)。响应LOAD2的寻址模式命中于内存文件储存器204,内存文件控制器202可输出物理寄存器的物理寄存器名称,该物理寄存器系分配以储存LOAD1的结果。该物理寄存器名称可用以将LOAD1所装载的数据值连接至LOAD2的猜测结果。
当储存1(STORE1)由内存文件132处理,其寻址模式可命中记录以响应LOAD1(再次假设,没有干扰操作造成此记录被覆盖)。不采取输出物理寄存器的物理寄存器名称,该物理寄存器分配用以储存LOAD1的结果(为用于LOAD2而完成),而是内存文件控制器202可以用包含由STORE1所储存的数据的寄存器的物理寄存器名称来覆盖储存在该记录中的物理寄存器名称208。因此,当后续装载操作命中此记录,内存文件控制器202将输出STORE1的来源物理寄存器的寄存器名称,而不输出LOAD1的目的寄存器的物理寄存器名称。
因为内存文件132被用于作为猜测结构,故储存在内存文件储存器204中的信息的精确性对于微处理器100的正确操作可能不是关键的(例如,在内存文件132中预测错误,可能无法在微处理器100的输出中造成错误)。然而,为了提高将装载操作的猜测结果正确连接至储存在物理寄存器中的值所带来的好处,和/或为了减低任何因为预测错误的猜测连接所招致的性能损失,可能需要改善内存文件132的精确性。在某些实施例中,内存文件132的精确性,可在更新用以具体指定地址的寄存器时,通过侦测出内存文件储存器204中的失效记录而获得提高。举例而言,每个寻址模式可包含一个或多个逻辑寄存器识别器,该逻辑寄存器识别器用以识别用于地址计算的基地址及索引地址。若后续操作修改其中一个逻辑寄存器,而该逻辑寄存器已具体指定作为记录的寻址模式206的一部分,则此记录可能会失效。因此,如图2A中所示,为了执行记录失效,则各操作的目的寄存器的逻辑寄存器名称可输入至内存文件132。
此外,在某些实施例中,内存文件储存器204内部的记录可被失效,以响应监看另一装置,该装置获得特定地址的数据写入权。同样地,记录同样可被失效以响应侦测到的预测错误。一般而言,诸如可能影响到内存文件储存器204中的记录的精确性的许多情况可被监看,并用以决定何时使记录失效。然而,由于内存文件132为猜测结构,所以当实行特定监控方法的额外硬件成本超过内存文件精确性的潜在改良的负担时,某些实施例将不实行某些这类监控方法。
必须注意内存文件132允许介于操作之间的相关性被用以将寄存器的值连接到猜测装载结果,该操作从操作流中彼此相对的操作中移出。因此,内存文件可提供介于操作间的相关的历史纪录,该操作可被数个干扰操作分离。
图3显示一种将装载操作的猜测结果连接到寄存器的值的方法的具体实施例的流程图。在步骤301,标记与寻址模式相结合,指出二者可能储存相同的数据值。标记及寻址模式二者都具体指定用于第一装载或储存操作。举例而言,如果第一操作为装载操作,则标记可识别分配以储存装载的结果的物理寄存器,而且该寻址模式可被用来计算用于装载的地址。若取代第一操作为储存操作,则寻址模式可指出该储存的目的地址,且标记可识别正由储存操作所储存的数据。在某些实施例中,可通过将标记及寻址模式储存在内存文件中的记录中而将二者结合。
若装载操作的寻址模式与第一操作的寻址模式相符,则装载的猜测结果可连接至由标记所识别的数据值,该标记具体指定用于第一操作,如步骤303至305所指出。如果装载操作的寻址模式不符合第一操作的寻址模式,则装载的寻址模式与用于装载目的的标记可被结合(例如,通过将二者储存在内存文件中的记录中),如步骤303至311所指出。再者,一般而言可通过存取数据高速缓存来执行装载,如步骤313所示。在一个实施例中,装载操作的寻址模式可用以和一个以上的先前操作的寻址模式相比较。举例而言,装载的寻址模式可和目前储存在内存文件中的各寻址模式相比较。
如步骤307所示,若装载的猜测结果连接至由标记所识别的数据值,则该数据值可传递至一个或多个依赖的操作,以作为装载操作的猜测结果。数据值可通过正在传递的结果而传递,或通过传递表示依赖的操作可使用数据值作为猜测操作数来源的一指示,如下文中更详细描述的。在一个实施例中,若数据值通过正传递的结果而传递,则依赖的操作可在产生数据值的操作完成执行的一周期之后,使用该传递数据值来执行。若数据值通过指示而传递,该指示表示依赖的操作可使用物理寄存器作为猜测操作数来源,则可在产生数据值的操作完成执行之后,立即发布依赖的操作。猜测结果可在该猜测结果被验证之前先予以传递,如步骤309所示。不必存取数据高速缓存,即可传递猜测结果(亦即,猜测结果可在非猜测结果之前传递,该非猜测结果由存取数据高速缓存而产生)。
若猜测结果在步骤309被验证为正确,则装载操作无需执行数据高速缓存存取即可完成。然而,若猜测结果在步骤309的验证判定为不正确,则为了获得正确的结果(未示出),数据高速缓存的存取可被执行。如果这样,则任何使用装载的猜测结果而执行的依赖的操作,可使用装载的正确结果而被再执行。必须注意在某些情况中,验证动作(在步骤309)可在已连接的数据值被传递作为装载的猜测结果之前(步骤307)先行执行。在这种情况中,装载可正常执行,或当连接判定为正确时,数据值则可传递作为装载操作的非猜测结果。
有数种实施例可用许多不同的方式,将装载操作的猜测结果连接到寄存器数据值。在某些实施例中,可通过识别用于操作数的两个来源来连接数据值一个是猜测来源,一个是非猜测来源。猜测来源可为已连接的数据值。可提供猜测来源用于装载操作,以指出连接至装载的猜测结果的数据值。在某些实施例中,猜测来源还可被提供用于这种装载操作的操作。因此,某些操作数可能具有两个标记一个用以识别猜测来源,以及一个用以识别非猜测来源。在这种实施例中,各调度装置118皆可提供标记储存用于猜测操作数及非猜测操作数二者,如图4中所示。
图4显示可包含在微处理器之中的调度装置118的一个具体实施例。在所显示的实施例中,调度装置118包含调度装置控制器502以及操作储存器504。响应分派单元分派操作,调度装置控制器502可在操作储存器504之中分配记录,以储存对应于该操作的信息。举例而言,在操作储存器504之中的记录522可包含一个操作码字段510、一个或多个操作数字段、以及一个结果字段516。结果字段516可储存用以识别物理寄存器的标记,且记录的操作结果应储存在该物理寄存器之中。当发布操作时,此标记可通过一个或多个标记总线520的其中一个传递到各调度装置118。各调度装置可将传递于标记总线520上的标记与用于未处理的操作的操作数标记(猜测及非猜测二者,如下所述)做比较,以判定未处理的操作的操作数何时可用。因此,可发布操作(或将其标示为已待命发布),以响应出现在标记总线520之上的来源操作数标记。
各操作数字段可包含用于猜测标记及非猜测标记的储存,该猜测标记识别猜测操作数来源,该非猜测标记识别非猜测操作数来源。在所显示的记录522之中,操作数1的两个来源由非猜测标记512以及猜测标记514所识别。调度装置118可配置用以发布操作,以响应一个或多个表示操作的操作数可用的指示。若从猜测来源或非猜测来源而来的操作数为可用,则该操作数为可用。若从猜测来源及非猜测来源而来的操作数皆为可用,则可使用从非猜测来源而来的可用的值执行该操作。在某些实施例中,调度装置118会将非猜测操作数来源为可用的操作,比只有猜测操作数来源为可用的操作优先发布。
应该注意的是,操作可包含一些具有猜测来源的操作数,以及其它不具有猜测来源的操作数。同时必须注意,相同的来源可以是用于一个操作的猜测来源,以及用于另一个操作的非猜测来源。在某些实施例中,当执行操作时,只有一个数据值可读取,用于各操作数(例如,执行核心124可读取猜测操作数来源,或非猜测操作数来源其一,但不是二者)。这使得在寄存器堆116之中增加额外的端口变得不必要。在某些实施例中,猜测来源以及物理来源可储存在相同的储存位置(例如,在寄存器堆116之中),而猜测来源不可被标记,或以其它方式识别为猜测来源。
在许多实施例中,调度装置118可配置成在操作已发布给执行核心124之后,保持分配给该操作的记录。当调度装置118发布操作,而对一个或多个猜测操作数的可用性做出响应时,调度装置可保持分配给操作的记录522,以使该操作在猜测连接为不正确时,能再发布该操作。在某些实施例中,装载/储存单元可配置用以验证猜测连接,该猜测连接当猜测装载结果连接至储存在物理寄存器中的数据值时而发生。若连接为正确,则装载储存单元因为可通过连接而得到正确的结果,而不用广播传递装载的非猜测性结果。如果这样,则当用于操作的识别非猜测操作数来源的标记在结果总线130上广播传递时,调度装置118可配置用以再发布操作。
在另一种情况下,装载/储存单元可以在广播传递储存的结果时加上额外的状态位,该额外状态位对广播传递做出屏蔽,或指出该猜测连接正确以及不必再发布装载。然而,若猜测连接不正确,装载/储存单元可执行数据高速缓存及/或内存存取,以获得用于装载的正确结果,并广播传递该装载的结果。在结果永远会广播传递的一些实施例中,额外的状态位可指出猜测连接不正确。因此,在许多实施例中,在微处理器中已经可用的相同标记及结果总线,可被用来指出猜测连接不正确。在其它实施例中,可实行另一种指示机制(例如,使用分离的结果总线130及/或结果标记总线520,以指出预测错误)。
图5显示一种发布及再发布操作的方法的实施例的流程图,该操作具有猜测及非猜测操作数来源二者。如果操作的猜测操作数来源可用,则可发布该操作,如步骤801至803所示。当数据值在寄存器堆内部的特定寄存器中时,或当数据值输出至结果总线时,操作的猜测操作数来源可变为可用。必须注意在某些情况中,就相同操作数所用的操作的非猜测操作数来源,可在猜测操作数来源之前成为可用。在这些情况中,可在猜测操作数来源变为可用之前发布操作。在某些实施例中,后续的猜测来源的可用性无法触发操作的再发布。
可使用由猜测操作数来源所提供的数据值执行已发布的操作,如步骤805所指出;且操作的结果可广播传递,如步骤807所指出。广播传递操作的结果允许执行依赖的操作。
若在一小段时间过后猜测来源判定为不正确(例如,由猜测来源以及非猜测来源所提供的数据值并不相同,或用以产生猜测来源的标记的猜测连接并不正确),则非猜测来源的标记无法广播传递作为指示,该指示表示猜测来源的值为不正确。广播传递非猜测来源的标记包括以调度装置通过再发布操作做出响应的方式广播传递标记。举例而言,在某些实施例中,若标记已广播传递,且该标记的相关状态标志设定在特定值,则调度装置可对此做出响应。然而在其它实施例中,可能没有相关的状态标志,则调度装置可设置为在非猜测标记广播传递时立即再发布操作。
图6显示分派单元104的另一个具体实施例,该分派单元可包含在微处理器100之中。在此实施例中,分派单元104包含寄存器映射134、内存文件132、以及猜测寄存器映射800。类似寄存器映射134,猜测寄存器映射800可将逻辑寄存器名称转译为物理寄存器名称。然而,猜测寄存器映射800可猜测性将逻辑寄存器名称映射至物理寄存器名称(例如,对内存文件132将储存在物理寄存器中的值连接至装载操作的猜测结果做出响应)。猜测寄存器映射800可允许用于操作的猜测操作数的值,该操作并不包含将要与寄存器数据值连接的寻址模式。举例而言,若有一有效猜测映射用于逻辑寄存器EAX,则具有将EAX作为来源操作数的操作可具有两个来源标记由寄存器映射134所提供的非猜测标记,以及由猜测寄存器映射800所提供的猜测标记。因为操作可在其猜测来源可用时立即发布,故猜测寄存器映射800可通过猜测操作数标记,并绕过所有干扰装载及储存,而将数据使用者直接连接至数据制造者。必须注意在某些实施例中,猜测映射可储存不同于物理寄存器名称的标记(例如,在具有重排序缓冲器的实施例中,其中该重排序缓冲器包含用于猜测寄存器状态的储存)。
猜测寄存器映射800包含猜测寄存器映射控制器802以及猜测寄存器映射储存器804。猜测寄存器映射储存器可包含一个或多个记录802。各记录802可和特定逻辑寄存器产生关联,并可将物理寄存器的物理寄存器标识符812指示给目前已猜测映射的逻辑寄存器。各猜测寄存器映射的记录820还可包含表示目前该记录是否有效的指示(未示出)。在某一实施例中,猜测寄存器映射储存器804,可包含用于各逻辑寄存器的记录。在其它实施例中,猜测寄存器映射储存器804可包含比逻辑寄存器要少的记录。在此实施例中,各记录820可包含此记录目前所对应的逻辑寄存器的指示。
猜测寄存器映射控制器802可配置用以更新记录820,以对指示做出响应,其中该指示表示装载操作的猜测结果已连接至由特定物理寄存器名称所识别的数据值。在所显示的实施例中,此指示由内存文件132所提供。待更新的记录820是用于逻辑寄存器的记录,该逻辑寄存器被具体指定作为装载操作的目的。记录可通过用于该装载操作的内存文件132,更新为包含物理寄存器标识符输出。在其它实施例中,猜测寄存器映射记录可响应不同于那些由内存文件132所提供的指示(在某些这些实施例中,分派单元104可以不包含内存文件)的指示而产生。举例而言,分派单元104可侦测条件移动指令CMOV EAX,EBX若Z,且能有效指出用于EAX的猜测寄存器映射记录,应识别目前映射至EBX的物理寄存器。一般而言,猜测寄存器映射记录可响应任何预测机制而产生,该预测机制指出逻辑寄存器应猜测性映射至特定的物理寄存器。
在某些实施例中,在操作提供给寄存器映射134的相同周期中,可将这些操作提供给猜测寄存器映射800。当寄存器映射134执行为了一操作的非猜测寄存器重新命名,则猜测寄存器映射800可指出是否有任一逻辑寄存器连接至特定物理寄存器,该逻辑寄存器具体指定作为储存其中一个操作的猜测来源操作数。若在用于其中一个操作的逻辑寄存器来源的猜测寄存器映射储存器804中存在有效记录,则猜测寄存器映射控制器802可输出储存于该逻辑寄存器记录的物理寄存器名称。分派单元104可在操作分派至调度装置118时,输出此猜测物理寄存器名称以作为猜测来源。因此,如果一个ADD操作被提供给猜测寄存器映射800,且ADD的其中一个来源在猜测寄存器映射储存器804之中具有有效的记录,则在该记录中所识别的物理寄存器的标记可作为猜测来源操作数标记而提供给调度装置118。如前所述,调度装置可配置用以储存猜测性及非猜测性操作数标记二者,并在某些实施例中可配置用以再发布操作(若已发布过),以对正在结果总线上广播传递的非猜测性标记做出响应。
在猜测映射内部的记录可因响应用于特定逻辑寄存器的数据值将修改的指示而失效。举例而言,若由分派单元104处理ADD EAX,ECX的操作,则猜测寄存器映射控制器802可因为ADD操作即将修改该寄存器的值,而使目前指定给EAX的猜测映射记录失效。
一般而言,每当一个操作的猜测结果连接至寄存器的数据值,则猜测操作数标记可提供给调度装置118。在某些实施例中,内存文件132及其它可追踪数个周期的相关性的结构(例如,下文中所描述的猜测寄存器映射),可用以连接猜测结果至寄存器的值。举例而言,分派单元104可产生用于操作的猜测标记,而对识别连接的内存文件132做出响应。在某些实施例中,不需使用这种猜测映射,即可产生猜测标记。举例而言,一连串的指令可包含ADD EBX,EBX (相加1)MOV[寻址模式A],EBX(储存1)ADD[寻址模式A],ECX(相加2)这些指令可以是连续指令(例如,可直接以程序顺序,一个接一个执行)。这些指令可分离成下列片段指令操作(以逻辑地址转译为实体地址的方式显示),用于在执行核心124内部执行ADD PR2,PR2,PR1 (相加1)MOV[寻址模式A],PR2(储存1)MOV PR3,[寻址模式A] (装载就ADD2所用)ADD PR4,PR3,PR5 (相加就ADD2所用)MOV[寻址模式A],PR4(储存就ADD2所用)在相加2(ADD2)的装载操作、相加操作及储存操作等片段指令被分派之前,分派单元104可侦测在序列中任何片段指令操作之间是否存在任何相关性,使得操作允许连接至猜测结果。此外,正被储存1(STORE1)储存的数据可连接至装载的猜测结果(例如,通过内存文件)。因为没有干扰操作,因此分派单元可具有侦测在同一分派周期中的装载操作和相加操作(两操作都由同一指令所导出)之间的相关性所需的所有信息。根据这两种相关性,分派单元104可将被STORE1、PR2储存的数据标记连接到作为ADD2一部分执行的装载操作的猜测结果。这种猜测连接可依次允许分派单元将加法操作的来源连接到储存在PR2中的值,其中该加法操作作为ADD2一部分执行。于是分派单元可输出指示,该指示表示可猜测性地使用PR作为用于加法的一个操作数的来源,而PR3为该操作数的非猜测来源。因此,在一个实施例中,通过分派单元所输出的操作及操作数标识符,可具体指定如下ADD PR2,PR2,PR1(相加1)MOV[寻址模式A],PR2 (储存1)MOV PR3,[寻址模式A] (储存就相加2所用)ADD PR4,PR2*,PR3,PR5 (用于相加2的相加,其中PR2*为用于ECX的猜测来源,PR3为用于ECX的非猜测来源)MOV[寻址模式A],PR4 (用于相加2的储存)在其它实施例中,分派单元104不可用来识别供操作所用的猜测来源操作数,该操作基于装载操作。取而代之,为了提供猜测装载结果给依赖的操作,分派单元104可包含操作转换器180,用以将装载操作转换成一个或多个操作,该操作包含寄存器间的移动操作。为了响应在装载操作的猜测结果和由特定物理寄存器名称所识别的数据值之间存在连接的指示,装载操作的转换可被执行。该指示由连接检测器182所提供,在某些实施例中,该连接检测器可包含内存文件132。如上所述,在其它实施例中,连接检测器182可包含配置用以连接数据值的逻辑,以对例如条件移动操作等操作做出响应。
在一个实施例中,操作转换器可接收用于操作的输入操作码及一指示,而该指示关于寄存器的值和操作的猜测结果之间是否侦测出存在用于操作的连接。若操作为装载并且已侦测到猜测连接,则操作转换器可输出操作码以用于寄存器间的移动操作。分派单元104,可使用由连接侦测单元所输出的标记作为用于寄存器间移动的来源操作数标记,而分派寄存器间的移动操作。
在某些实施例中,操作转换器可配置用以分派产生的寄存器间的移动,而使得调度装置储存操作数标记,该操作数标记是在分配给寄存器间的移动操作的记录中的寄存器间的移动和记录中的原始装载操作二者所需的。如果寄存器间的移动操作的猜测结果侦测为不正确,则会允许操作作为原始装载操作被再发布。为了实现此方法,可将额外的来源操作数加至各寄存器间的移动操作,该寄存器间的移动操作由修改装载操作而产生(或在另一个具体实施例中,可修改一个已存在的来源操作数而实行此方法)。在某些实施例中,通过执行用于原始装载的地址计算和/或将已连接的数据值和实际的装载结果数据值做比较,寄存器间的移动操作的猜测结果可被验证。如果猜测结果不正确,则为了获得正确的装载结果,可存取数据高速缓存。再次广播传递正确的装载结果,可使调度装置再发布任何之前使用不正确的值而执行的依赖的操作。
在某些实施例中,操作转换器180可配置用以将装载操作转换成为双重性操作。类似于装载操作,此双重性操作可包括地址计算以及数据移动。不同于装载之处在于,由双重性操作所启动的数据移动是寄存器间的移动。再者,由双重性操作所启动的数据移动可在地址计算完成之前发生。地址计算可用以验证猜测连接是否正确。若猜测连接不正确,则可将双用途操作作为正常装载操作再发布,且其结果可基于数据高速缓存的存取完成,再次广播传递至依赖的操作。
下列范例显示不同实施例如何转换此示范的操作序列ADD PR2,PR1,PR1(相加1)STORE[寻址模式A],PR2(储存1)LOAD PR3,[寻址模式A](装载1)ADD PR4,PR3,PR3(相加2)在此序列中,通过一个或多个干扰操作,可以将具体指定的操作分离。然而,假设没有干扰操作出现来修改寻址模式A中所用的值,或修改储存在从寻址模式A以及PR2中计算而得的地址中的数据值,则可在储存在PR之中的数据值和从寻址模式A计算而得的地址之间侦测出猜测连接。
在一个具体实施例中,为对由猜测连接检测器182所做的猜测连接的侦测做出响应,操作转换器180可将装载1(LOAD1)转换成为双用途移动操作MOV PR3,PR2。除具体指定寄存器来源及目的之外,此双用途移动操作也可具体指定寻址模式A,以使LOAD1的地址计算可被执行。然而,双用途移动操作的移动部分,可在ECX为可用之后立即发布。在两部分操作的移动部分的结果广播传递之后,相加2(ADD2)可使用移动操作的猜测结果作为操作数而立即发布。当执行地址计算时可验证猜测连接。若猜测连接不正确,则装载/储存单元可提供一指示给调度装置,使调度装置再发布双用途移动操作以作为装载操作。可广播传递装载操作的结果,而造成例如ADD2的任何依赖的操作,该依赖的操作可能已使用移动的猜测结果再发布而完成执行。必须注意此双用途操作可使用单一调度装置记录而调度,以及调度装置118可选择双用途操作以用于发布两次一次用于装载的地址计算,而另一次用于寄存器间的移动。
在另一个实施例中,操作转换器180可将LOAD1转换成为二连接操作,分别是LOAD PR3,[寻址模式A],以及MOV PR3,PR2,以对猜测连接的侦测做出响应。与之前包含双用途操作的范例不同处在于,这些已连接的操作可各自在调度装置118中占用一个记录,而不必共享单一调度装置记录。当发布寄存器间的移动操作时,例如ADD2的依赖的操作可使用PR3的猜测值而发布,该PR3的猜测值作为操作数的值。LOAD操作可标记为装载操作的特别类型,因此若猜测连接被确定为正确,则装载的结果标记不必广播传递(或和表示移动的结果正确的指示一起广播传递,并表示不应再发布依赖的操作)。此外,若装载及移动操作二者皆在同一周期广播传递其结果,则可提供一指示,以使装载结果而不是移动结果被依赖的操作所用。此情形可能发生在某些实施例中,增加额外的位给微处理器100之中的各标记总线,以指出调度装置应响应哪个标记。如猜测连接不正确(例如,如同由装载结果标记的广播传递所指出),则可取消移动操作(例如,对移动操作进行调度的调度装置118可解除目前正分配给寄存器间的移动的调度装置记录的分配,以使操作不会再发布)。在许多实施例中,调度装置可配置用以再发布任何依赖的操作,该依赖的操作使用猜测装载结果而执行,以对再次出现在结果总线的装载结果标记做出响应。
图8显示一将装载操作转换成包含猜测寄存器间的移动操作的操作的方法的具体实施例。如图中所示,如果在步骤1401侦测出处于由特定标记所识别的寄存器数据值和装载操作的猜测结果之间的连接(例如,通过内存文件),则可将装载操作修改成包含寄存器间的移动操作的操作,该寄存器间的移动操作具有与连接至猜测装载结果的数据值的标记相同的来源操作数标记,如步骤1403所示。在步骤1405,寄存器间的移动操作的执行,可包括将由标记所识别的数据值连同装载结果的标记,输出至结果总线。
在步骤1409。猜测结果可被验证(例如,通过执行用于原始装载的地址计算)。若猜测结果为正确,则装载的结果不用在结果总线上再次广播传递(或换种方式,装载的结果可和指示一并广播传递,该指示为响应再次广播传递的结果而不再发布依赖的操作)。若猜测结果为不正确,则可存取数据高速缓存以接收正确的装载结果,并可在结果总线上广播传递正确的装载结果。这会依次造成任何已发布的依赖的操作使用将再发布的猜测结果的值。必须注意在某些情况中,可在寄存器间的移动操作执行之前验证猜测结果。若猜测结果为不正确,则不可执行寄存器间的移动操作。
若在装载操作的猜测结果和寄存器数据值之间没有侦测出连接(例如,装载的寻址模式在内存文件中丢失),则不可修改装载。一般而言,装载可执行存取数据高速缓存,以及在结果总线上广播传递其结果,如步骤1417及1419所示。
图9显示计算机系统400的一个实施例的方框图,该计算机系统400包含通过总线桥接器402耦合至各种系统组件的处理器100。如上所述,处理器100的实施例可包含分派单元104、内存文件132、调度装置118及/或猜测寄存器映射800。计算机系统的其它实施例是可行的及可以预期的。在所描述的系统中,主存储器200通过内存总线406与总线桥接器402耦合,以及图形控制器408通过图形加速端口(AGP)总线410与总线桥接器402耦合。数个外围设备互连(PCI)装置412A至412B通过外围设备互连总线414耦合至总线桥接器402。也可使用第二总线桥接器416通过扩充的工业标准结构/工业标准结构(EISA/ISA),提供适当的电子接口给一或多个扩充的工业标准结构/工业标准结构装置418。在此范例中,处理器100通过中央处理单元(CPU)总线424耦合至总线桥接器402,以及可供选择的第二级(L2)高速缓存428。在某些实施例中,处理器100可包含集成的第一级(L1)高速缓存(未示出)。
总线桥接器402提供介于处理器100,主存储器404、图形控制器408、以及附加在外围设备互连总线414之上的装置之间的一接口。当从连接至总线桥接器402的其中一个装置接收操作时,总线桥接器402识别该操作的目标(例如,特定装置,或就外围设备互连总线414而言,该目标在外围设备互连总线414上)。总线桥接器402系按规定路径将操作发送至目标装置。一般而言,总线桥接器402将操作从来源装置或总线所使用的协议,转译成为由目标装置或总线所使用的协议。
除了提供接口给扩充的工业标准结构/工业标准结构总线用于外围设备互连总线414之外,第二总线桥接器416还可包括其它功能。从第二总线桥接器416外接或内建的输出/输入控制器(未示出),也可包含在计算机系统400之中,以提供用于键盘及鼠标422的操作上的支持,并用于数种串行端口及并列端口。在其它实施例中,外接的高速缓存单元(未示出),也可耦合到处于处理器100和总线桥接器402之间的中央处理单元总线424。在另一些实施例中,外接的高速缓存可耦合至总线桥接器402和高速缓存控制逻辑,因为该外接的高速缓存可集成到总线桥接器402之中。第二级高速缓存428相对于处理器100以后部配置(backside configuration)的方式显示。必须注意,第二级高速缓存428可从处理器100中分离,而和处理器100一起集成到卡匣(cartridge)中(例如,插槽1或插槽A),或甚至和处理器100一并集成到半导体基板上。
主存储器200是一内存,该内存中储存应用程序,并且处理器100主要从该处执行。适合的主存储器200包括动态随机存取内存(DRAM)。举例而言,多组同步动态随机存取内存(SDRAM)或Rambus动态随机存取内存(RDRAM)都是合适的。
外围设备互连装置412A至412B显示许多外围装置,例如网络适配卡、视频加速卡、音效卡、硬盘驱动器、软盘驱动器、或驱动控制器、小型计算机系统接口(SCSI)适配器、以及电话卡。同理,工业标准结构装置418显示许多类型的外围设备,例如调制解调器、声卡、以及许多数据采集卡,例如一般用途接口总线(GPIB)或现场总线接口卡。
图形控制器408用以控制显示器426上文字及图形的着色。图形控制器408可使本领域技术人员所公知的传统的图形加速器具体化,以提供能有效存入主存储器200中以及从主存储器200中取出的三维空间的数据结构。因此,因为图形控制器408可请求及接收在总线桥接器402之中的目标接口的存取,从而获得对主存储器200的存取,故可作为图形加速端口总线410的主控制器。专用的图形总线,可提供从主存储器404的快速数据获取。就某些操作而言,图形控制器408可进一步配置用来在图形加速端口总线410上产生外围设备互连协议处理。总线桥接器402的AGP接口因此可包括支持AGP协议事务及PCI协议目标和启动程序事务二者的功能性。在图形或文字可显示的前提下,显示器426可以是任何电子显示器。合适的显示器426包含阴极射线管(CRT)、液晶显示器(LCD)等。
必须注意,虽然图形加速端口、外围设备互连、以及工业标准结构或扩充的工业标准结构等总线,已在上述说明中使用作为范例,但是实际上任何总线结构可根据需要进行代替。必须进一步注意,计算机系统400可以是包含额外处理器(例如,显示作为可供选择的计算机系统400的组件的处理器100a)的多处理计算机系统。处理器100a可相似于处理器100。更确切地说,处理器100a可以完全相同于处理器100。处理器100a可通过独立总线(如图9所示)连接至总线桥接器402,或可和处理器100共享中央处理单元总线224。再者,处理器100a可用类似于第二级高速缓存428的方式耦合至可供选择的第二级高速缓存428a。
现在参考图10,显示计算机系统400的另一具体实施例,该计算机系统可包含如上所述的分派单元104、内存文件132、调度装置118及/或猜测寄存器映射800。计算机系统的其它实施例也是可行的和可考虑的。在图10的实施例中,计算机系统400包含数个处理节点612A、612B、612C以及612D。各处理节点皆通过内存控制器616A至616D而耦合至各自的内存614A至614D,其中该内存控制器616A至616D包含在其各自的处理节点612A至612D之中。此外,处理节点612A至612D包含用于在处理节点612A至612D之间通讯的接口逻辑。举例而言,处理节点612A包含用以与处理节点612B通讯的接口逻辑618A、用以与处理节点612C通讯的接口逻辑618B、和用以与另一处理节点(未示出)通讯的第三接口逻辑618C。同理,处理节点612B包含接口逻辑618D、618E以及618F;处理节点612C包含接口逻辑618G、618H以及618I;而处理节点612D包含接口逻辑618J、618K以及618L。处理节点612D被耦合以通过接口逻辑618L与多个输入/输出装置(例如,菊链配置中的装置620A至620B)通讯。其它处理节点可用类似方式而与其它输出入装置通讯。
处理节点612A至612D实行基于数据包的连接,用于处理节点间的通讯。在本实施例中,连接被实现为数组单向线路(例如,线路624A被用于将数据包从处理节点612A传送至处理节点612B,而线路624B被用于将数据包从处理节点612B传送至处理节点612A)。其它组的线路624C至624H被用于传送其它处理节点之间的数据包,如图10中所示。一般而言,每组线路624可包含一条或多条数据线路,一条或多条对应至数据线路的时钟线路,以及一条或多条指示传送的数据包类型的控制线路。对于处理节点间的通讯,可以采用高速缓存连贯的方式来操作连接,对于处理节点和输出/输入装置(或总线桥接器至公知结构的输出/输入总线,例如外围设备互连总线,或工业标准结构总线)之间的通讯,可以采用高速缓存不连贯的方式来操作连接。再者,可如所示的在输出/输入装置之间使用菊链式结构,而以不连贯的方式操作连接。应该注意的是,从一个处理节点传送至另一处理节点的数据包可通过一个或多个中间节点。举例而言,由处理节点612A传送至处理节点612D的数据包可通过处理节点612B或处理节点612C,如图10所示。任何适合的路由算法都可使用。计算机系统400的其它实施例可包含较图10所显示的实施例更多或更少的处理节点。
一般而言,数据包可作为在节点间的线路624上的一个或多个位时间(bit time)被传送。一个位时间可以是在相对应的时钟线路上的时钟信号的上升沿或下降沿。数据包可包含用于初始化事务的命令数据包,用于保持高速缓存连贯性的探测数据包,以及从响应探测及命令而来的响应数据包。
处理节点612A至612D除了包含内存控制器及接口逻辑之外,还可包含一个或多个处理器。具体而言,处理节点包括至少一个处理器,并可选择性地包含内存控制器,用于和内存及其它所需的逻辑通讯。更确切地说,各处理节点612A至612D可包括一个或多个完全相同的处理器100。外接接口单元18可包含在节点中的接口逻辑618,以及内存控制器616。
内存614A至614D可包括任何合适的内存装置。举例而言,内存614A至614D可包括一个或多个RAMBUS动态随机存取内存、同步动态随机存取内存、静态随机存取内存等。计算机系统400的地址空间在内存614A至614D之中分割。各处理节点612A至612D可包含内存映射,用以决定哪个地址对应至哪个内存614A至614D,以及因此对于特定地址的内存请求哪个处理节点612A至612D应该被路由。在一个实施例中,用于计算机系统400中的一个地址的连贯性点是耦合到对应于地址的内存储存字节的内存控制器616A至616D。换句话说,内存控制器616A至616D用以确保各内存对所对应的内存614A至614D的存取以高速缓存连贯的方式发生。内存控制器616A至616D可包括用于连接内存614A至614D的控制电路。此外,内存控制器616A至616D可包含用于队列内存请求的请求队列。
接口逻辑618A至618L可包括各种缓冲器,用于接收来自连接的数据包,并可缓冲将要由该连接所传送的数据包。计算机系统400可使用任何合适的用来传送数据包的流量控制机制。举例而言,在一个实施例中,各接口逻辑618储存许多各型缓冲器的计数值,该缓冲器位于连接的另一端的接收器之中,接口逻辑连接到该连接。除非接收接口逻辑具有可用的缓冲器用以储存数据包,否则接口逻辑不会传送数据包。通过按规定路径向前发送数据包,接收缓冲器为可用,接收接口逻辑将信息传送至发送接口逻辑以指示缓冲器已为可用。这种机制可称之为″基于配给的(coupon-based)″系统。
输出/输入装置620A至620B可为任何合适的输出/输入装置。举例而言,输出/输入装置620A至620B可包含与另一计算机系统通讯的多个装置,这些装置(例如,网络适配卡或调制解调器)可以耦合到该另一计算机系统。再者,输出/输入装置620A至620B可包含视频加速卡、音效卡、硬盘驱动器、软盘驱动器、或驱动控制器、小型计算机系统接口适配器、以及电话卡、声卡、以及许多数据采集卡,例如一般用途接口总线,或现场总线接口卡。必须注意,术语″输出/输入装置″以及术语″外围设备″在文中为同义词。
如文中所用,术语″时钟周期″或″周期″表示一段时间间隔,在其中指令处理流水线的各种阶段完成其任务。根据时钟信号所定义的时钟周期,指令及计算值皆由内存单元(例如寄存器或数组)获得。举例而言,内存单元可根据时钟信号的上升沿或下降沿而获得值。
一旦充分了解上述揭示内容,则本领域技术人员可知本发明可有多种变化及变形。下列所解释的权利要求范围意在包含所有这类变化及变形。
权利要求
1.一种数据猜测系统,包含一内存文件(132),包括配置以储存第一寻址模式(206)与第一标记(208)的一记录(220),其中该内存文件配置以将包括在该记录中的第一寻址模式与一装载操作的第二寻址模式相比较,其中假如该第二寻址模式匹配储存在该记录中的第一寻址模式的话,该内存文件则配置以将由该第一标记识别出的一数据值连接到该装载操作的一猜测性结果;以及一执行核心(124),连接到该内存文件,其中该执行核心配置以当将取决于该装载操作的第二操作执行时,存取该猜测性结果。
2.根据权利要求1所述的系统,进一步包含用来发送第一标记以作为该第二操作的猜测性操作数来源标记的装置。
3.根据权利要求1所述的系统,进一步包含用来将该数据值发送到一结果总线以及用来指示出该数据值为该装载操作的结果的装置。
4.根据权利要求1所述的系统,其中该内存文件配置以猜测性地连接由该第一标记所识别出的数据值,该第一标记具有通过输出该第一标记以作为装载操作的猜测性来源操作数标记的装载操作的结果。
5.根据权利要求1所述的系统,其中该第一寻址模式为储存操作寻址模式的一部份,其中该储存操作在程序顺序上比该装载操作更早发生。
6.根据权利要求1所述的系统,进一步包含一装载/储存单元,该单元配置以将装载操作的猜测性结果是否与由该第一标记所识别出的数据值予以正确连结的指示输出。
7.根据权利要求6所述的系统,其中该装载/储存单元配置以通过将装载操作的结果标记输出在结果总线(130)上而将该装载操作的猜测结果不正确地连结到该数据值的指示输出。
8.根据权利要求1所述的系统,其中该内存文件配置以将包括在该记录中的该第一寻址模式与储存操作的第三寻址模式相比较,其中假如该第三寻址模式匹配该第一寻址模式的话,该内存文件则配置以将用来识别储存操作的来源操作数的第二标记代替该第一标记。
9.一种数据猜测方法,包含将第一操作的第一寻址模式与第二操作的第二寻址模式相比较,其中该第二操作在程序顺序上比该第一操作更早发生;假如该第一寻址模式匹配该第二寻址模式的话,则将由该第二操作的操作数的标记所识别的一数据值连接到该第一操作的猜测结果;执行第三操作,该第三操作具有取决于该第一操作的结果的一操作数来源,其中该执行包含存取由该标记所识别出的数据值。
10.一种计算器系统,包含一系统内存(200);以及一微处理器(100),耦合到该系统内存,该微处理器包括一内存文件(132),包括配置以储存第一寻址模式(206)与第一标记的一记录(220),其中该内存文件配置以将包括在该记录中的该第一寻址(208)模式与一装载操作的第二寻址模式相比较,其中假如该第二寻址模式匹配储存在该记录中的该第一寻址模式,则该内存文件配置以将由该第一标记所识别的数据值连接到该装载操作的猜测结果;以及一执行核心(124),耦合到该内存文件,其中该执行核心配置以在将取决于该装载操作的第二操作执行的时候存取该猜测结果。
全文摘要
本发明揭露一种系统,该系统可包括一内存文件(132),该内存文件包括配置以将第一寻址模式与第一标记储存的一记录,以及耦合该内存文件的一执行核心。该内存文件可能配置以将包括在记录中的第一寻址模式与装载操作的第二寻址模式相比较。假如第二寻址模式匹配储存在该记录中的第一寻址模式的话,那么该内存文件则配置以将第一标记所识别出的数据值连接到该装载操作的猜测结果。该执行核心配置以在执行取决于装载操作的第二操作时,存取该猜测结果。
文档编号G06F9/38GK1625733SQ02828873
公开日2005年6月8日 申请日期2002年12月20日 优先权日2002年4月30日
发明者J·K·皮克特 申请人:先进微装置公司