用于在数据推测微处理器中操作重放的系统及方法

文档序号:6482824阅读:190来源:国知局
专利名称:用于在数据推测微处理器中操作重放的系统及方法
技术领域
本发明是关于微处理器的领域,尤其关于在微处理器中执行数据推测的领域。
背景技术
推测微处理器(speculative microprocessor)通过同时执行并行指令以及通过使用符合本身设计的最短合适的时钟周期而达到高性能。然而,在指令之间的数据及控制流程相关性(dependency)可以限制有多少指令在任何给定的时间内可以发送。因此,有些微处理器支持推测的执行以达到额外的性能增益。
其中一种形式的推测为控制流程推测。控制流程推测是推测其中程序控制(program control)将要进行的方向。例如,可用分支推测以推测是否将采取分支。可用的分支推测有很多形式,如从每一次单纯地采用相同的推测的方法到在程序中维持该先前分支的复杂的历史记录以产生基于历史的推测的方法。分支推测可以通过硬件最佳化、编译器最佳化或两者兼而有之而变得容易。基于由该分支推测机构所提供的推测,可以推测地提取及执行指令。当该分支指令被最终评估时,该分支推测能够被检验。若该推测不正确,基于该不正确推测所推测执行的任何指令可以撤销。
另一种形式的推测为数据推测,该数据推测是推测数据数值。所提及的数据推测的形式包含推测产生的用于内存(memory)操作的地址及推测产生的用于在计算操作中所使用的数据数值。使用控制推测时,最后是评估用以推测性产生数值的潜在的条件,以便将该推测被确认或取消。
由于推测允许指令的执行而不需等待完成相关性检验,若来自正确推测所获得的性能超过不正确推测所损失的性能,则可以达到显著的性能利益。因此需要减少因不正确推测的性能损失。

发明内容
本发明公开了在数据推测微处理器中用于避免操作进行中的实施例中断该操作重放的方法及系统的多个实施例。在某些实施例中,微处理器可以包含通过配置以执行操作的一个或多个功能单元、通过配置以发出操作给该功能单元以用于执行的调度器、以及至少一个重放检测单元。该调度器可以被配置以对于每个操作维持状态信息。在其它事件中,这样的状态信息可以指示是否相关的操作具有完全的执行。该重放检测单元可以被配置以检测在该调度器中的多个操作中的一个操作应该重放。当操作被检测为需要重放时,若该操作实施例目前正被功能单元中的一个所执行,则该重放检测单元被配置以禁止对于该操作的状态信息的更新,以响应该操作进行中的实施例的执行。计算机系统的多种实施例可以包含这样的微处理器。
在一个实施例中,该重放检测单元可以被配置以通过使执行该进行中的操作的实施例的该功能单元不信号通知调度器该操作的完成,而禁止对于该操作的状态信息的更新。在另一个实施例中,该重放检测单元可以被配置以通过使该调度器(scheduler)修改(modify)与该操作相关的发出计数(issue count),而禁止对于该操作的状态信息的更新。若该操作的发出计数并不与该操作的实施例的发出计数相匹配,该调度器可以被配置以不更新该状态信息来响应该操作的实施例的完成。
在某些实施例中,若数据推测确认单元检测到对于该操作的不正确的数据推测,该调度器可以被配置以更新与操作相关的状态信息,以指示该操作需要再次发送。当检测到该不正确的数据推测时,若该操作的实施例正在执行,该重放检测单元可以被配置以确保与该操作相关的状态信息持续指示在操作的实施例执行之后该操作需要再次发出。
在某些实施例中,微处理器可包含多个重放检测单元。重放检测单元可以包含在数据推测确认单元中(例如在加载存储单元中或在其它功能单元中或者在内存控制器中)或者在该调度器本身中。
本方法的实施例可包含发送用于执行的操作的实施例;紧接着发出(issue)该操作的实施例之后,接收该操作应该重放的指示;以及响应于该指示,禁止在调度器内的该操作状态的更新以响应该操作的实施例的完成。禁止该更新可包含使功能单元执行该操作的实施例成为该操作的实施例不信号通知该调度器该操作的完成。另外,禁止该更新可包含该调度器修改与该操作相关的发出计数以响应接收该操作应该重放的指示;以及若该操作的发出计数并不与该操作的实施例的发出计数相匹配,该调度器不更新与该操作相关的状态信息以响应该操作的实施例的完成。


当结合附图考虑下面详细的描述时,可以得到本发明的更好的理解,其中图1是依据一个实施例而表示的微处理器。
图2是依据一个实施例而例示的调度器。
图3是依据一个实施例而例示的功能单元。
图4A为依据一个实施例的禁止更新该调度器内的不正确推测操作的状态的方法流程图。
图4B为依据另一实施例的禁止更新该调度器内的不正确推测操作的状态的方法流程图。
图5是依据一个实施例而表示的例示的计算机系统。
图6是依据另一实施例而表示的另一例示的计算机系统。
虽然本发明易于做多种修改以及可选的形式,本发明的特定实施例是以附图中实施例的方式来表示的并且其中将做详细描述。然而,应该了解的是对于该附图及详细的说明书并不想限定本发明在所公开的特定的形式,而相反地,本发明的目的是包括属于如所附权利要求所定义的本发明的精神及范畴内的所有的修改、等同及替代。需要注意的是,该标题仅用于组织的目的并且并不想用于限定或说明该说明书或权利要求。而且,需要注意的是,该文字“可以(may)”以允许的含意使用于整个申请中(意即,具有潜在可以的、能够的),而不是强制的含意(意即,必须(must))。该术语“包含(include)”及该名词的派生词是指“包含,但并不限定于(including,but not limited to)”。该术语“连接(connected)”表示“直接地或非直接地连接”,并且该术语“连结(coupled)”意指“直接地或非直接地连结”。
具体实施例方式
图1为微处理器100的一个实施例的方块图。微处理器100被配置以执行存储在系统内存200内的指令。很多这些指令操作存储在系统内存200内的数据。需要注意的是,系统内存200可以是物理分布在整个计算机系统并且可以通过一个或多个微处理器100进行存取。
微处理器100可以包含指令高速缓存器(instruction cache)106及数据高速缓存器128。微处理器100可以包含连结到该指令高速缓存器106的预取单元108(prefetch unit)。调度(dispatch)单元104可以被配置以接收来自指令高速缓存器106的指令并且调度操作(operation)给调度器(scheduler)118。一个或多个调度器118可以连结以接收来自分发单元104的调度操作(执行命令)并且发出操作给一个或多个执行核心(execution core)124。每个执行核心124可以包含配置的加载/存储单元以对数据高速缓存器128执行存取。通过执行核心124所产生的结果可以输出到结果总线130。这些结果可以用作后续发出的操作数数值(operand value)的指令和/或存储到注册文件(register file)16。退出队列(retire queue)102可以连结到调度器118及调度单元104。该退出队列102可以被配置以决定每个发送的操作何时可以退出。在一个实施例中,该微处理器100可以设计为与x86架构兼容。需要注意的是,微处理器100也可以包含很多其它的组件。例如,微处理器100可以包含分支推测单元(未图示)。
指令高速缓存器106可以在由调度单元104接收到指令之前暂时地存储指令。可通过从系统内存200经过预取单元108预先取得指令码,而将指令码提供给指令高速缓存器106。指令高速缓存器106可以用不同配置(例如集合关联(set-associative)、完全关联(fully-associative)或者直接映射(direct-mapped))而实现。在某些实施例中,可以有多级指令和/或数据高速缓存器106和128。某些级别可以与该微处理器100整合,如图所示,而其它级别高速缓存器可以外部连结到该微处理器100。
预取单元108可以预取来自该系统内存200的指令码而存储在指令高速缓存器106中。在一个实施例中,预取单元108可以配置成从该系统内存200突发(burst)指令码进入指令高速缓存器106。预取单元108可以使用多个特定的指令码预取技术及算法。
调度单元104可以输出信号,该信号包括该执行核心124可执行的位编码操作以及操作数地址信息、实时数据和/或位移数据。在某些实施例中,调度单元104可以包含译码电路(未图示),其用于编译某些指令以成为在执行核心124内可执行的操作。简单的指令可以对应于单一操作。在某些实施例中,较复杂的指令可以对应于多重(multiple)操作。若操作包含更新缓存器,位于注册文件116中的缓存器位置可以被保留(例如当操作译码时),以存储推测的缓存器状态(在另一可选的实施例中,可以使用重排序缓存器以存储对于每个缓存器的一个或多个推测的缓存器状态)。该缓存器映射可以转译源及目的操作数的逻辑缓存器的名称成为物理缓存器名称,以方便缓存器重新命名。该缓存器映射可以追踪在注册文件116内的目前分配的缓存器。
图1的微处理器100支持不按序的(out of order)执行。退出队列102可以保持用于缓存器读取及写入操作的该原始程序顺序的追踪、允许用于推测指令执行及分支误推测恢复以及促成精确排除(exception)。退出队列102可以实现先进先出的配置,当操作有效时,该操作移到该缓冲器的“底部(bottom)”,而在该队列的“顶部(top)”产生用于新入口(entry)的空间。退出队列102可以退出操作,以响应于完成执行的操作及在任何操作上的任何数据或控制推测,直到包括依照程序命令的操作被检验。在该物理缓存器内产生该数值的操作退出时,退出队列102可以将物理缓存器的推测的状态指定为微处理器100的架构状态。在某些实施例中,退出队列102可以作为重排序缓冲器(reorder buffer)的一部分来执行。这样的重排序缓冲器也可以提供用于推测缓存器状态的数据数值存储,以支持缓存器重新命名。需要注意的是,在其它实施例中,退出队列102可以不提供任何数据数值存储。相反地,当退出操作时,退出队列102可以解除分配在注册表116中的缓存器,该缓存器不再需要存储推测缓存器状态,并且提供信号给缓存器映射而指示哪一个缓存器目前是空的。通过维持在注册文件116中的推测的缓存器状态(或者在可选实施例中,在重排序缓冲器中),直到产生这些状态的操作有效,若分支推测不正确,则沿着误推测路径的推测执行的操作的结果在注册文件116内可以无效。
若特定操作所需的操作数是缓存器位置,可将缓存器地址信息传送给缓存器映射(或重排序缓冲器)。例如,在该x86架构中,具有8个32位逻辑缓存器(例如EAX、EBX、ECX、EDX、EBP、ESI、EDI及ESP)。物理注册文件116(或重排序缓冲器)包含存储用于改变这些逻辑缓存器内容的结果,同时允许不按序执行。在注册文件116中的物理缓存器可以被分配以存储决定修改逻辑缓存器中的一个的内容的每个操作的结果。因此,在特定程序的执行期间的不同时刻,注册文件116(或在可选的实施例中,重排序缓冲器)可以具有一个或多个的包括给定的逻辑缓存器的推测执行内容的缓存器。
缓存器映射可以指定物理缓存器给指定的用于操作的目的操作数的逻辑缓存器。调度单元104可以决定注册文件116具有指定给逻辑缓存器的一个或多个的先前分配的物理缓存器,而该物理缓存器给指定为给定操作的来源操作数的逻辑注册。该缓存器映射可以提供标记符(tag)给最近指定给该逻辑缓存器的物理缓存器。此标记符可以通过使用以存取在该注册文件116内的操作数的数据数值或通过转发该结果总线130上的结果而接收该数据数值。若该操作数对应于内存位置,该操作数数值可以通过加载/存储单元222而提供给该结果总线(用于结果转发和/或存储于注册文件118内)。当该操作通过其中一个调度器118而发出时,操作数数据的数值可以提供给执行核心124。需要注意的是,在可选实施例中,当操作被调度时,操作数数值可以提供给对应的调度器118(而不是当该操作被发送时,提供给对应的执行核心124)。
在调度单元104的输出端所提供的该位编码操作以及实时数据可以传送给一个或多个调度器118。需要注意的是,其中所使用的调度器是一种装置,该装置检测何时操作已准备执行并且发出准备好的操作给一个或多个的功能单元。例如,保留站(reservation station)是调度器。在一个调度器或群组调度器内的操作也称为在指令内的操作或操作窗口(operation window)或调度窗口(scheduling window)。每个调度器118对于等待发出给执行核心124的多个待决(pending)的操作能够保留操作信息(例如位编码的执行位以及操作数数值、操作数标记符和/或实时数据)。在某些实施例中,每个调度器118可以不提供操作数数值存储。相反地,每个调度器可以监视发出的操作数以及在注册文件116内可获得的结果,以决定何时操作数数值将可以被功能单元126(从注册文件116或结果总线130)而读取。在某些实施例中,每个调度器118可以与专用的功能单元126相关。在其它实施例中,单一调度器118可以发出操作给不止一个的功能单元126。
调度器118可以提供给将由执行核心124所执行的暂时存储操作信息。如前所述,每个调度器118可以存储用于待决操作的操作信息。另外,每个调度器可以存储已经执行但是仍然可以重新发出的用于操作的操作信息。操作被发给执行核心124而用于执行,以响应可及时获得产生的用于执行的任何所需的操作数的数值。因此,操作所执行的顺序可以不同于该原始程序指令系列的顺序。包含数据推测的操作可以仍然保持在调度器118内直到该操作变成非推测性的为止,以便若该数据推测不正确,该操作可以重新发出。
在一个实施例中,每个执行核心124可以包含多个功能单元126(例如功能单元126A到126C,如图1所示)。某些功能单元,例如126A,可以被配置成执行加法及减法的整数计算操作、以及平移、旋转、逻辑操作及分支操作。其它功能单元,例如126B,可以被配置成包含浮点操作。一个或多个功能单元(例如126A)可以被配置成执行地址的产生,而用于通过功能单元(例如126C)所执行的加载及存储内存操作,该功能单元126C执行加载及存储操作以存取存储在数据高速缓存器128和/或系统内存内存中的数据。在一个实施例中,这样的功能单元126C对于可以被配置成加载/存储缓冲器,其具有多个存储位置以用于待决的加载和/或存储的数据及地址信息。
一个或多个功能单元126也将与条件分支指令相关的执行信息提供给分支推测单元,以便若分支被错误推测,该分支推测单元可以紧接着已经进入该指令处理流程的错误推测的分支而清除指令并且重新指向预取单元106。该重新指向的预取单元106接着可以开始从指令高速缓存器106或系统内存200预取该正确的指令集。在此种情况下,在该误推测的分支指令之后所产生的在该原始程序序列内的指令的结果可以丢弃,包含那些被推测执行及暂时存储在注册文件116内的结果。
若缓存器数值被更新,由执行核心124内的功能单元126所产生的结果可以输出在该结果总线130上而传到该注册文件116。若该内存位置的内容被改变,在执核心124内所产生的结果可以提供给该功能单元126C。
数据高速缓存器128为高速缓存器内存,所提供的高速缓存器内存暂时地存储在执行核心124及该系统内存200之间做转移的数据。如同上所述的该指令高速缓存器106,该数据高速缓存器128可以在多个特定的内存配置内实现,其包含集合关联配置。此外,数据高速缓存器106及指令高速缓存器128在某些实施例中可以在单一的高速缓存器内实现。
在某些实施例中,微处理器100可以包含集成的内存控制器160,其允许该微处理器直接与系统内存200接口接合。在其它实施例中,内存控制器160可以包含在没有直接将微处理器100与系统内存200连接的总线桥内。
数据推测如其中所述,若具有数据数值可以发现是不正确的并且从而被重新计算,则该数据数值是推测的。推测的数据数值是无法肯定地确定其是正确或不正确的数值。若该数据数值是某些数据推测已经执行的操作的结果,或者若该数据数值取决于另一个推测的数据数值(例如若产生的该数据数值是具有一个或多个推测的操作数的操作的结果),则数据数值可以被重新计算。
在微处理器100内的多个机构可以执行数据推测。例如,调度单元104、内存控制器160和/或一个或多个功能单元126,其中的每一个可以执行用于特定操作的数据推测。调度单元104可以检测到其中一个操作的结果可以用做用于另一个操作的推测操作数。例如,调度单元通过先前的存储操作可以推测该加载操作将存取存储在数据高速缓存器128的数据。该调度单元104可以响应地确认存储在该缓存器内的数据数值作为该加载操作的推测的结果,该缓存器被用作该存储操作的来源。这种形式的数据推测在此称为相关性推测。该相关性推测可以通过连结该存储操作的来源以在该调度单元104内扩充而作为用于操作的推测的操作数来源,该操作指定该加载操作的结果作为操作数。另一种形式的相关性推测可以通过允许加载来旁通存储未计算的地址,即通过推测较新的加载并不取决于初期存储,而在功能单元126C内执行。
在多重处理器系统中,内存控制器160可以执行一致性检查以维持高速缓存器一致性。内存控制器160在完成全部的其它微处理器的高速缓存器的一致性检查之前可以从系统内存200推测地返回高速缓存器路线的副本(copy)。若该一致性检查接着决定将取回(retrieve)的该高速缓存器路线的正确副本目前存储在另一个处理器高速缓存器内,则从系统内存200所推测地取回的该高速缓存器路线的副本可以是无效的。因此,从存取该高速缓存器路线所产生的任何加载操作结果将是推测的,直到该一致性检查完成为止。此类型的推测在此称为内存推测(memory prediction)。
调度单元104可以通过推测操作的结果而执行数据推测。例如,某些操作可以倾向产生相同的结果,并且因此每当处理其中的一个操作的时候,该结果可以由调度单元104在该操作在由功能单元126实际执行的操作之前而推测地产生。此类型的数据推测在此称为数据推测。需要注意的是,该数据推测也可以在该微处理器的其它部分内执行(例如在装入存储单元126C内)。
装入存储单元(功能单元)126C可以推测地产生该地址以及基于该推测的地址的加载指令的结果,该指令的地址还没有经过基于早期处理加载而被计算。例如,若该先前的N个加载操作具有通过固定平移量C所彼此间隔的目标地址A1-AN(例如A1,A2=A1+C,....,AN=A(N-1)+C),该装入存储单元126C可以推测地返回位于最近存取的地址AN加上该固定的平移量C的数据而作为该加载操作的结果。这种类型的数据推测在此称为地址推测。需要注意的是,地址推测的其它形式可以使用于很多实施例中。
取决于在数据推测已经执行的操作上的结果的操作,也可以产生推测的结果。例如,若地址推测用于产生加载操作的推测结果,任何使用该加载的推测结果作为操作数的执行的相关操作可以产生推测的结果,该推测的结果可以被其它相关的操作依次用作操作数。因此,若确定在该加载操作内的该基本(underlying)的推测是不正确的,该相关操作的结果也可以是不正确的,并且因此取决于该加载的操作的整个相关性链的操作可以需要重新执行以产生正确的结果。在另一方面,若发现该基本推测是正确的,该相关性操作的结果可以是正确的(假设那些结果并非基于任何其它推测的数值)。
当操作由功能单元而执行时,可以确认对于数据推测已经执行的多个操作。例如,可以确定用于推测地产生操作结果的该数据推测可以通过该功能单元126来确认,该功能单元126通过比较该操作的实际结果与该推测结果而执行该操作。由于该正确的结果已经可用,若该数据推测是不正确的,则这样的操作可以不需要重新执行。其它操作可以不需要完整地执行而被确认。例如,若具有未经计算的地址的加载从初期存储(例如由于相关性或地址推测)传递本身的结果,则当计算该加载地址时,该加载的推测的结果可以被确认。若该数据推测不正确时,这样操作可以需要重新执行(至少部分地执行)以产生正确的结果。
由于对于数据推测已经执行的操作以及本身的相关的操作可以需要重新执行,退出队列102可以被配置成仅为退出操作,而对于该操作任何基本的数据推测已经解决了。在微处理器100内的被配置以确认一种或多种类型的数据推测的多种组件在此被称为用于确认数据推测的数据推测确认单元或装置(means)。
重放进行中的操作由于不正确数据推测操作可以从调度器118通过重新发出而重放。为了使已经由该调度器118所发出的操作进行重放,可以修改在调度器118内的该操作的状态以指示该操作应该重新发出。响应于该更新的操作状态,该调度器118可以被配置以重新发出该操作给功能单元126。若用于该操作的来源数据在结果总线130上广播并且该操作已经发出,则该调度器也可以被配置以标记用于重放的操作。操作的来源数据可以因为对于检测到不正确的数据推测的执行或重新执行操作而重新广播。通常,重放操作的需求可以被检测,其是通过检测用于操作的不正确的数据推测及该操作需要重新执行的数据推测确认单元而检测或者通过检测该操作为因为用于另一操作的不正确的数据推测而需要重放的部分相关性链的调度器而进行检测。在微处理器100内的检测该重放操作的需求的组件在此称为用于检测需要重放的操作的重放检测单元或装置。
当该操作的实施例在功能单元126内为正在进行中时,某些数据推测操作可以确认为重放。进行中的操作的实施例是已经由调度器118发送到功能单元126的操作,但是该操作在该功能单元126内还没有完全地执行。当该进行中的操作的实施例完成执行时,其不应该影响在该调度器118内的操作的复位状态(reset station)。否则,该进行中的操作的实施例的完成可更新在该调度器内的操作的状态成为完成状态,使得该调度器错误地无法重新发出该操作。因此,若检测到进行中的操作需要重放,检测到需要重放的重放检测单元可以被配置以禁止该进行中的操作的实施例能够更新在该调度器118内的操作的状态。
在一个实施例中,每个重放检测单元可以被配置以更新存储在与操作相关的调度器入口内的发出计数,以响应检测对于操作是不正确的数据推测。图2例示了包含调度器入口600的调度器118的一个实施例。调度器入口600包含用于操作的标记符、操作数标识符(和/或操作数,在某些实施例中)以及操作码的存储604。调度器入口600也包含存储与该操作相关的的状态信息606以及发出计数602。当接收到操作应该重放(例如由于其中一个操作的操作数在结果总线130上重新广播或数据推测确认单元指示用于该操作所执行的该数据推测是不正确的)的指示时,该调度器118可以增加与该操作相关的发出计数。当该调度器118初始分配(allocate)入口给操作时,用于该操作的发出计数可以设定为最小数值(例如零)。
当该调度器118发出用于执行的操作给功能单元126时,该调度器可以提供与该操作相关的发出计数给该功能单元126。当广播该操作的结果时,每个功能单元126可以被配置以广播该发出计数。该功能单元126可以处理该发出计数作为部分的操作的标记符,并且该发出计数在特定功能单元内对于该操作的处理没有影响。然而,当该调度器118遇见该操作广播的结果时(例如,当该结果数值与该操作的发出计数及操作标记符和/或本身的操作数在结果总线130上广播时),该调度器118可以被配置以比较与该操作的实施例相关的发出计数与目前存储在该操作的调度器入口600内的发出计数。若这两个发出计数数值并不相等,则该调度器118可以禁止更新在该调度器内的操作的状态。因此,若该操作的状态及发出计数在该操作的发出之后但在该操作的执行完成之前而在该调度器118内被更新,则由功能单元126完成的操作将不修改在该调度器内的操作的状态。需要注意的是,该调度器118可以更新用于不正确推测的操作的发出计数而不论该操作是否在某些实施例中目前是进行中的。其它的实施例可以限制这些已经在进行中的操作的更新。
在某些实施例中,由于该不相等的发出计数(issue count)表明该操作的结果因为不正确的数据的缘故而可以是不正确的,则若在该调度器118内的操作的发出计数并不同与该操作的实施例的结果一起广播的该发出计数相匹配,该调度器118可以禁止发出取决于该操作的结果的任何操作。然而,使用该潜在不正确的数据数值所执行的任何相关的操作也将在下一次广播该不正确推测操作的结果的时候重新发出。因此,在其它实施例中,由于正确性将仍然维持,该调度器118可以允许相关的操作以使用该不正确地推测操作的结果而执行。
除了在该调度器内使用发出计数,某些实施例可以使用操作取消(kill)特征以禁止更新标记用于重放的操作的状态,以响应于进行中的操作的实施例的完成。图3例示功能单元126的方块图,该功能单元126通过配置以有效地“取消”通过确定为需要重放的进行中的操作的实施例。该功能单元126通过防止关于该进行中的操作的实施例的任何改变的状态信息广播给该调度器118而取消进行中的操作的实施例。该功能单元126接收来自重放检测单元确认需要重放的发出的操作的一个或多个信号。包含在该功能单元126内的操作取消逻辑700可以运行以避免该功能单元126广播信息,该信息表明在该调度器内的该操作状态应该更新。由于该调度器将因此不接收该操作已经完成执行的指示,该调度器118将不更新在该调度器内的操作的状态。
因为在需要重放该操作的检测之前发出的操作的实施例的完成,当在该实施例中使用发出计数以禁止修改该调度器状态时,实施操作取消逻辑700的实施例可以通过配置而禁止发出相关的操作,以响应于该进行中的操作的实施例的完成。然而,由于此功能性可以不需要处理器校正(correctness),其它实施例可以允许相关的操作使用由该进行中的操作的实施例所产生的结果来发出及执行。在下一次当被不正确推测的操作发出及执行时,任何相关性操作可以重放。
由于在该不正确推测被检测之前,在功能单元内已经在进行中的操作的实施例的完成,图4A例示禁止更新对于不正确推测的操作的调度器状态的方法的一个实施例。在步骤801,接收进行中的操作需要重放的指示。响应于该需要重放该操作的检测,在该调度器内的操作的状态可以复位以表明该操作应该重新发出,如步骤803所示。此外,当检测到该不正确的推测时,是在进行中的操作的进行实施例的完成被禁止更新在该调度器内的该操作的状态,如步骤805所示。功能805可以如下实现,其通过有效地取消在功能单元内目前执行的该操作的进行中的实施例或通过使用在该调度器内的机构(例如发出计算)以区别操作的实施例,例如依据图4B所描述的例子。
由于在检测到需要重放该操作之前,在功能单元内已经在进行中的该操作的实施例的完成,图4B例示禁止更新对于该操作的调度器状态的方法的另一实施例。如同在图4A中,在步骤801处检测到需要重放该操作并且该操作的状态在步骤803A在该调度器内响应地更新。此外,在该调度器内用于区别操作的实施例的发出计数或其它装置可以做修改,以响应检测用于该操作的不正确数据,如在步骤803A所示。当该操作的实施例完成执行时,与该操作的实施例相关的发出计数可以与在该调度器内的操作相关的该发出计数做比较,如在步骤805A示。若该两个发出计数匹配,在该调度器内的操作的状态可以更新以响应于该操作的完成,如在步骤807所示。例如,该操作的状态可以更新以表明该操作已经完成执行。若两个发出计数并不匹配,该操作的状态可以不更新,如在步骤805B所示。因此,基于不正确的数据推测所完成执行的该操作的实施例与应该重新发出以执行而没有不正确的数据推测的该操作的实施例有所区别。该区别允许禁止对于该操作的状态的更新,以响应具有不正确数据数值而执行的该操作的实施例的完成。
例示的计算机系统图5表示计算机系统900的一个实施例的方块图,该计算机系统900包含通过总线桥902而连结到多个系统组件的处理器100。处理器100可以包含如上所述的通过配置以重放操作的重放检测单元及调度器。计算机系统的其它实施例是可行的并且是可以考虑的。在该描绘的系统中,主内存200通过内存总线906连结到总线桥902,并且图形控制器908通过图形加速端口(AGP)总线910而连结到总线桥902。多个外围组件接口(PCI)装置912A-912B通过PCI总线914连结到总线桥902。第二总线桥916也可以通过延伸工业标准架构/工业标准架构(EISA/ISA)总线920以用来提供电气接口给一个或多个EISA/ISA装置918。在此实施例中,处理器10通过中央处理器(CPU)总线924而连结到总线桥902以及可选的L2高速缓存器928。在某些实施例中,该处理器100可以包含集成的L1高速缓存器(未图示)。
总线桥902提供在处理器100、主内存200、图形控制器908及连结到外围组件接口总线914的装置之间的接口。当接收到来自连接到总线桥902的其中一个装置的操作时,总线桥902确定(identify)该操作的目标(例如,特定的装置或在PCI总线914的情况下,该目标在PCI总线914上)。总线桥902将该操作传递给该目标装置。总线902通常将从由该来源装置或总线所使用的协议的操作编译成为由该目标装置或总线所使用的协议。
除了提供接口给用于外围组件接口总线914的ISA/EISA总线,第二总线桥916可以并入额外的功能性(functionality)。输入/输出控制器(未图示),不论是与第二总线桥916外部连接或与第二总线桥916并入,也可以包含在计算机系统900中以提供用于键盘与鼠标922以及用于多个串行与并行端口的操作的支持。在其它实施例中,外部高速缓存器单元(未图示)也可以连结到位于处理器100及总线桥902之间的中央处理器总线924。可选地,该外部高速缓存器可以连结到总线桥902并且用于该外部高速缓存器的高速缓存器控制逻辑可以集成在总线桥902内。L2高速缓存器928是表示为对于处理器100的后面的配置。需要注意的是,L2高速缓存器928可以与处理器100分离、可以与处理器100集成成卡匣式(例如沟槽1或沟槽A)或甚至可以与处理器100集成在半导体基体上。
主内存200是应用程序存储在其中并且处理器100主要由该内存执行的内存。适当的主内存200可以包含动态随机存取内存(DynamicRandom Access Memory,DRAM)。例如,多个储蓄单元同步动态随机存取内存(Synchronous Dynamic Random Access Memory,SDRAM)或总线式动态随机存取内存(RDRAM)可以是适当的。
外围组件接口装置912A-912B例示为多个外围装置,例如网络接口卡、视频加速器、音频卡、硬式或软式磁盘驱动器或驱动控制器、小型计算机系统接口(Small Computer Systems Interface,SCSI)适配器及电话卡。同样地,ISA 918为例示了多种类型的外围装置,诸如调制解调器、声卡及多个数据采集卡,(例如一般用途接口总线(GeneralPurpose Interface Bus,GPIB)或区域总线接口(field bus interface)卡)。
图形控制器908用于控制在显示器926上的文字及图像的着色(rendering)。图形控制器908可以使用一般在本领域中已知的典型绘图加速器,以对可以有效地转移到主内存200内及由主内存200转移的三维数据结构进行着色。因此图形控制器908可以是图形加速端口总线910的控制者,其中该图形加速端口总线910能够请求及接收存取在总线桥902内的目标接口,由此获得存取主内存200。专用的绘图总线调节来自主内存200的数据的快速恢复。对于某些操作,图形控制器908可以进一步被配置以在AGP总线910上产生PCI总线处理。总线桥902的AGP接口可以因此包含功能性以支持AGP协议处理以及PCI协议目标与初始处理。显示器926是任何图像或文字能够出现在其上的电子显示器。适当的显示器926包含阴极射线管(cathode raytube,“CRT”)、液晶显示器(liquid crystal display,“LCD”)等等。
需要注意的是,虽然该图形加速端口、外围组件接口及工业标准架构或延伸工业标准架构总线在该上文的描述中已经使用作为例证,任何总线架构可以依照所需而被替换。还需要注意的是,计算机系统900可以是包含额外的处理器(例如显示为计算机系统900的可选组件的处理器100a)的多处理计算机系统。处理器10a可以类似于处理器100。更为特别地,处理器100a可以是处理器100相同的复制。处理器100a可以通过独立总线(如图5中所示)而连接到总线桥902或者可以与处理器100分享中央处理器总线924。而且,处理器100a可以连结到类似于L2高速缓存器928的可选的L2高速缓存器928a。
现参阅图6,该图表示计算机系统900的另一实施例,该计算机系统900可以包含如同上文所述的具有一个或多个通过配置以重放操作的重放检测单元及调度器的处理器100。其它实施例是可行的并且是可以考虑的。在图6的实施例中,计算机系统900包含多个处理节点1012A、1012B、1012C及1012D。每个处理节点通过在每个相对的处理节点1012A到1012D内所包含的内存控制器1016A到1016D而连结到相对的内存200A到200D。另外,处理节点1012A到1012D包含用于在该处理节点1012A至1012D之间通讯的接口逻辑。例如,处理节点1012A包含用于与处理节点1012B通讯的接口逻辑1018A、用于与处理节点1012C通讯的接口逻辑1018B、以及用于与另一个处理节点(未图示)通讯的第三接口逻辑1018C。同样地,处理节点1012B包含接口逻辑1018D、1018E以及1018F;处理节点1012C包含接口逻辑1018G、1018H以及1018I;并且处理节点1012D包含接口逻辑1018J、1018K以及1018L。处理节点1012D被连结以通过接口逻辑1018L与多个输入/输出装置(例如在菊链(daisy chain)配置内的装置1020A到1020B)通讯。其它处理节点可以以类似的方式与其它输入/输出装置通讯。
处理节点1012A到1012D实现用于内部处理节点通讯的封包式链接(packet-based link)。在本实施例中,该链接实现成为单向性线路集(例如线路1024A是用于从处理节点1012A传送封包到处理节点1012B以及线路1024B是用于从处理节点1012B传送封包到处理节点1012A)。如图6中例示的,其它线路集1024C到1024H是用于在其它处理节点之间传送封包。通常,每组线路1024可以包含一个或多个数据线路、对应于该数据线路的一个或多个时钟线路、以及表示该型式封包被传送的一个或多个控制线路。该链接可以以高速缓存器一致的方式运行而用于在处理节点之间通讯或以非一致方式运行而用于在处理节点及输入/输出装置之间通讯(或总线挢接到传统架构的输入/输出总线,例如外围组件接口总线或工业标准架构总线)。而且,该链接可以以非一致的方式使用如图所示在输入/输出装置间的菊式结构而运行。需要注意的是,将要从其中一个处理节点传送到另一个处理节点的封包可以通过一个或多个中间节点。例如,通过处理节点1012A到处理节点1012D所传送的封包可以通过处理节点1012B或处理节点1012C,如图6所示。可以使用任何适当的路径算法。计算机系统900的其它实施例可以包含比显示在图6中的实施例更多或更少的处理节点。
通常,该封包可以在节点间的线路1024上作为一个或多个的位时间(bit time)进行传送。该位时间可以是对应的时钟线路上的时钟信号的上升沿或下降沿。该封包可以包含用于初始化处理的指令封包、用于维持高速缓存器一致性的探测封包以及来自响应于探测及指令的响应封包。
除了内存控制器及接口逻辑以外,处理节点1012A到1012D可以包含一个或多个处理器。广义地说,处理节点包括至少一个处理器并且可选地包含用于与所需的内存及其它逻辑进行通讯的内存控制器。更为特别地,每个处理节点1012A到1012D可以包含一个或多个处理器100的复制。外部接口单元可以包含在该节点1018内的该接口逻辑,以及该内存控制器1016。
内存200A到200D可以包括任何适当内存装置。例如,内存200A到200D可以包括一个或多个总线式动态随机存取内存(RDRAM)、同步动态随机存取内存(SDRAM)、静态随机存取内存等等。计算机系统900的地址空间在内存200A到200D之间分割。每个处理节点1012A到1012D可以包含用于决定哪一个地址映射到哪一个内存200A到200D,并且因此用于特定地址的内存请求的线路应该映射到哪一个处理节点1012A到1012D。在一个实施例中,对于在计算机系统900内的地址的一致性指针(point)为连结到对应于该地址的内存存储字节的内存控制器1016A到1016D。换言之,该内存控制器1016A到1016D负责用于确保存取该对应的内存200A到200D的每个内存以高速缓存器一致的方式产生。内存控制器1016A到1016D可以包括用于与内存200A到200D接口的控制电路。此外,内存控制器1016A到1016D可以包含用于队列内存请求的请求队列。
接口逻辑1018A到1018L可以包括用于从该链接接收封包及用于缓冲将要传送到该链接上的封包的多种缓冲器。计算机系统900可以使用用于传送封包的任何适当的流程控制机构。例如,在一个实施例中,每个接口逻辑1018在该接口逻辑连接到该链接的另一端存储在该接收器内的每个类型的缓冲器的数量的计数。该接口逻辑并不传送封包,除非该接收接口逻辑具有自由的缓冲器以存储该封包。当接收缓冲器通过线路向前传送封包而闲置时,该接收的接口逻辑传送消息到该传送接口逻辑,以表明该缓冲器已经闲置。这样的机构可以称为“凭票(coupon-based)”系统。
输入/输出装置1020A到1020B可以是任何适当的输入/输出装置。例如,输入/输出装置1020A到1020B可以包含用于与另一个计算机系统通讯的装置,该计算机系统是与装置相连接(例如网络接口卡或调制解调器)。而且,输入/输出装置1020A到1020B可以包含视频加速器、音频卡、硬式或软式磁盘驱动器或驱动控制器、小型计算机系统接口(SCSI)适配器及电话卡、声卡及多个数据采集卡,例如一般用途接口总线(GPIB)或区域总线适配卡。需要注意的是,该术语“输入/输出装置”及术语“外围装置”在此是同义词。
如同其中所使用的,该术语“时钟周期”是指时间间隔,多级的指令处理路线在该时间内完成本身的任务。指令及计算数值依据定义该时钟循环的时钟信号被内存组件(例如缓存器或数组)所捕获。例如,内存组件可以捕获依据该时钟信号的上升沿或下降沿的数值。
该上文的讨论描述信号为“确立的(asserted)”。当信号传递表示特定片段信息的数值时,该信号可以定义为确立的。当特定信号传递一个二进位1数值时,或者可选地,当特定信号传递一个二进位零数值时,该特定的信号可以定义为确立的。
许多变化及修改对于本领域技术人员在完全了解该上述的公开内容时将变得显而易见。其意图在于下列的权利要求将被解释以包含所有这样的变化及修改。
工业实用性本发明通常用于微处理器。
权利要求
1.一种微处理器(100),其包括一个或多个功能单元(126),其中每个单元被配置以执行操作;调度器(118),其被配置以通过一个或多个功能单元(126)中的一个单元发出用于执行的多个操作的每一个操作,其中该调度器(118)被配置以维持用于该多个操作的每一个操作的状态信息(606),其中该状态信息(606)表示相关的操作是否已经完成执行;以及重放检测单元,其被配置以检测该多个操作中的一个操作应该重放,其中当该多个操作中的一个操作被检测为需要重放时,若该多个操作中的一个操作的实施例目前正被该一个或多个功能单元(126)中的一个单元执行,则该重放检测单元被配置以禁止对该多个操作中的一个操作的状态信息(606)的更新,以响应于该多个操作中的一个操作的实施例的执行。
2.如权利要求1所述的微处理器(100),其中该重放检测单元被配置,其通过使该执行该操作的实施例的功能单元(126)中的一个单元不信号通知该调度器(118)该操作的实施例的完成,而禁止对该操作中的一个操作的状态信息(606)的更新。
3.如权利要求1所述的微处理器(100),其中该重放检测单元被配置,其通过使该调度器(118)修改与该其中一个操作相关的发出计数(602),而禁止对该操作中的一个操作的状态信息(606)的更新,其中若该操作的发出计数(602)并不与该操作的实施例的发出计数(602)相匹配,则该调度器(118)被配置以不更新该状态信息(606)而响应该操作的实施例的完成。
4.如权利要求1所述的微处理器(100),其中响应于用于检测该多个操作中一个操作的不正确数据推测的数据推测确认单元,该调度器(118)被配置以更新与该多个操作中的一个操作相关的状态信息(606),以指示该相关操作需要重新发出。
5.一种计算机系统(900),包括内存(200);以及处理器(100),其连结到该内存(200)并且包括一个或多个功能单元(126),每一个单元被配置以执行操作;调度器(118),其被配置以通过该一个或多个功能单元(126)中的一个单元发出用于执行的多个操作的每一个操作;以及重放检测单元,其被配置以检测该多个操作中的一个操作应该重放;其特征在于该调度器(118)被配置以维持对于该多个操作的每一个操作的状态信息(606),其中该状态信息(606)指示相关的操作是否已经完成了执行;以及当检测到该多个操作中的一个需要重放时,若该多个操作中的一个目前正被该一个或多个功能单元(126)中的一个单元执行,该重放检测单元被配置以禁止对该多个操作中的一个操作的状态信息(606)的更新以响应于该多个操作中的一个操作的实施例的的执行。
6.如权利要求5所述的计算机系统(900),其中该重放检测单元被配置,以通过使执行该操作的实施例的功能单元(126)中的一个单元不信号通知该调度器(118)该操作的实施例的完成,而禁止对该操作中的一个操作的状态信息(606)更新。
7.如权利要求5所述的计算机系统(900),其中该重放检测单元被配置,以通过使该调度器(118)修改与该操作中的一个操作相关的发出计数(602),而禁止对该操作中的一个操作的状态信息(606)的更新,其中若该操作的该发出计数(602)并不与该操作的实施例的发出计数(602)相匹配,则该调度器(118)被配置以不更新该状态信息(606)以响应于该操作的实施例的完成。
8.一种方法,包括发出用于执行的操作的实施例;紧接着所述发出,接收该操作应该重放的指示;响应于该接收,禁止对在调度器(118)内该操作的状态的更新以响应于该操作的实施例的完成。
9.如权利要求8所述的方法,其中所述禁止包括使执行该操作的实施例的功能单元(126)不信号通知该调度器(118)该操作的实施例的完成。
10.如权利要求8所述的方法,其中该禁止包括调度器(118),其修改与该操作相关的发出计数(602)以响应于接收该操作应该重放的指示;以及若该操作的该发出计数(602)并不与该操作的实施例的发出计数(602)相匹配,该调度器(118)不更新与该操作相关的状态信息(606)以响应于该操作的实施例的完成。
全文摘要
本发明涉及一种微处理器(100),其可包括被配置以执行操作的一个或多个功能单元(126)、被配置以发出操作给该功能单元(126)而用于执行的调度器(118)以及至少一个重放检测单元。该调度器(118)可以被配置以维持用于每个操作的状态信息(606)。在其它实施例中,这样的状态信息(606)可以指示是否相关的操作已经完成执行。该重放检测单元可以被配置以检测在该调度器(118)内的其中一个操作应该重放。当操作被检测为需要重放时,若该操作的实施例目前正被该功能单元(126)中的一个所执行,该重放检测单元被配置以禁止对于该操作状态信息(606)的更新以响应于该操作进行中的实施例的执行。计算机系统(900)的多个实施例可以包含这样的微处理器(100)。
文档编号G06F9/30GK1784655SQ200480011949
公开日2006年6月7日 申请日期2004年1月9日 优先权日2003年5月2日
发明者M·A·菲利普, J·K·皮克特, B·T·桑德尔 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1