CN1320452C - 用于支持数据推测式执行的微处理器与方法 - Google Patents
用于支持数据推测式执行的微处理器与方法 Download PDFInfo
- Publication number
- CN1320452C CN1320452C CNB03820181XA CN03820181A CN1320452C CN 1320452 C CN1320452 C CN 1320452C CN B03820181X A CNB03820181X A CN B03820181XA CN 03820181 A CN03820181 A CN 03820181A CN 1320452 C CN1320452 C CN 1320452C
- Authority
- CN
- China
- Prior art keywords
- operand
- indication
- value
- result
- scheduler
- 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 - Lifetime
Links
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 42
- 238000000605 extraction Methods 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 16
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 61
- 239000000872 buffer Substances 0.000 description 39
- 239000003292 glue Substances 0.000 description 17
- 230000008707 rearrangement Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004615 ingredient Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000007670 refining Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 210000001367 artery Anatomy 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 210000003462 vein Anatomy 0.000 description 1
- 239000002699 waste material 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一微处理器(100)可包含数个执行单元(124)、以及耦合而将作业发出到至少一个该等执行单元(124)的一排程器(118)。该排程器(118)可包含数个资料项(320)。可将第一资料项分配给第一作业。该第一资料项包含该第一作业的每一操作数的来源状态指示(330A,330B)。每一个来源状态指示(330A,330B)系指示该第一作业的一个别操作数的值是否是推测的。该排程器(118)的组态设定成:响应接收到第二作业的结果的值是非推测的值的指示,而更新该第一资料项的其中一个来源状态指示(330A,330B),以便指示该第一作业的个别操作数的值是非推测的。
Description
技术领域
本发明有关微处理器的领域,尤其有关微处理器中执行的排程作业。
背景技术
超纯量微处理器藉由同时执行多个指令,并使用与其设计一致的可行的最短时脉周期,而获致高效能。然而,各指令间的资料相依性及控制流相依性可能限制了在任何特定时间可发出的指令数目。因此,某些微处理器支持推测式执行(speculative execution),以便获致额外的效能增益。
其中一种类型的推测是控制流推测。控制流推测预测程控将进行的方向。例如,可利用分支预测来预测将采取的一分支。可使用许多类型的分支预测,其范围自每次只作相同的预测的方法至维护程序中各先前分支的复杂历史以便进行基于历史的预测的方法。可经由硬件最佳化、编译器最佳化、或以上两者来帮助分支预测。根据分支预测机制,可以推测方式提取及执行各指令。当最后评估分支指令时,可验证该分支预测。如果该预测是错误的,则可使根据该错误的预测而以推测方式执行的任何指令无效。
另一种类型的推测是预测资料值的资料推测。某些数据推测涉及预测将响应一加载指令而提供的值。可藉由追踪响应存储指令而存储的值而执行上述的资料推测,而且如果一后续的加载作业使用相同的缓存器及(或)位移,而指定一地址如同其中一个先前存储作业所使用,则推测地使用先前存储的值。另一种类型的资料推测,值预测,是预测数据项的值。值预测可能涉及检视资料型样并根据这些型样而进行预测。例如,可检视一索引计数器变量的各先前值的递增或递减方式,而预测该变量的值。
另一种类型的资料推测是地址预测,而地址预测涉及数据位置的预测。另一种类型的资料推测被称为内存系统乐观式存取(memorysystem optimism)。在多处理器系统中,当一处理器在高速缓存一致性检查完成之前,即使用来自该处理器的自身高速缓存的数据来推测式的执行一指令时,即发生内存系统乐观式存取。同样地,另一种类型的资料推测可容许下列的情形:在执行一加载作业时有而存储作业的地址尚未计算出来之前,即推测式执行加载作业,纵使该存储作业可能将资料存储到该加载作业所存取的相同地址。在所有这些类型的资料推测中,最后要评估潜在的状况,而可证实或取消该推测。如果该推测最后确认是错误的,则可重新执行(诸如利用更新的和(或)非推测的资料)先前使用该推测的数据执行的指令。
因为推测式执行可在无须等候相依性检查完成的情形下继续执行,所以如果因正确的推测而得到的效能超过因错误的推测而失掉的效能,则可获致可观的效能增益。当一推测的结果是错误的,即取消以推测方式执行的指令,并以非推测方式重新开始执行。为了取消推测式执行,可记录每一推测,以便在推测证实是错误预测时可识别以推测方式执行的各指令。
推测式执行的一个结果是排程器(在整份说明书中,系将诸如排程器及指令保留区(reservation station)等的排程装置整体地称为“排程器”)在执行之后可能无法解除推测式作业的分配,这是因为若潜在的推测是错误的,则需要重新发出这些作业。在数个时脉周期中可能无法作出潜在的推测是否正确的决定,而且可能无法决定为了作出上述决定而要耗用多少的时脉周期。此种不确定性可能将难以确定自排程器解除作业的时机。因此,排程器的资料项可能在比所需要还长的一段时间中保持被分配给推测式作业,而造成了排程器中空间的浪费。
发明内容
本发明揭示在微处理器中多种排程作业的方法及系统的实施例。在一实施例中,一种用于支持数据推测式执行的微处理器可包含数个执行单元、以及耦合而将作业发出到至少一个该等执行单元的一排程器。该排程器可包含一具有数个资料项的作业存储单元、以及一排程器控制单元。可将该作业存储单元中的一第一资料项分配给一第一作业。该第一资料项包含该第一作业的各操作数的来源状态指示。每一来源状态指示系指示该第一作业的各别操作数的值是否是推测的。该排程器控制单元的组态设定成:响应接收到一第二作业的结果的值是非推测的指示,而更新该第一资料项的其中一个来源状态指示,以便指示该第一作业的操作数中对应的那个操作数的值是非推测的。
一种用于支持数据推测式执行的方法的实施例可涉及下列步骤:一第一来源状态指示指示一第一作业的第一操作数的值是推测的,其中该第一操作数是一第二作业的结果;响应接收到用来指示该第二作业的结果的值不是推测的的一第一结果状态指示,而更新该第一来源状态指示,以便指示该第一操作数的该值不是推测的;以及一第二结果状态指示响应该第一来源状态指示的更新,而指示该第一作业的结果的值不是推测的。
一种用于支持数据推测式执行的方法的另一实施例可涉及下列步骤:对应于一第一分支作业的第一操作数的第一来源状态指示指示该第一操作数的值是推测的;接收一第二作业的结果的值是非推测的指示,其中该第二作业的结果是该第一操作数;响应接收到该指示,而更新该第一来源状态指示,以便指示该第一操作数的该值是非推测的;以及将该第一来源状态指示更新而指示该第一操作数是非推测的操作数,延迟响应该第一分支作业结果的值的指令预先提取机制改向以及处理管线的清除,直到第一来源状态指示已更新完成指示第一运元为非推测。
计算机系统的一实施例包含一系统内存、以及耦合到该系统内存的一微处理器。该微处理器可包含数个执行单元、以及耦合而将作业发出到至少一个该等执行单元的一排程器。该排程器可包含数个资料项。将一第一资料项分配给一第一作业。该第一资料项可包含该第一作业的各操作数的来源状态指示,且每一来源状态指示可指示该第一作业的各别操作数的值是否是推测的。该排程器的组态可被设定成:响应接收到一第二作业的结果的值是非推测的指示,而更新该第一资料项的其中一个来源状态指示,以便指示该第一作业的操作数中对应的那个操作数的值是非推测的。
附图说明
若参阅前文中的详细说明,并配合下列图式,将可更易于了解本发明,这些图式有:
图1标出一微处理器的一实施例。
图2是一排程器实施例的方块图。
图3是操作一微处理器的方法的实施例的流程图。
图4标出一计算机系统的实施例。
图5标出一计算机系统的另一实施例。
虽然本发明易于作出各种修改及替代形式,但是该等图式中系以举例方式示出本发明的一些特定实施例,且已在本文中详细说明了这些特定实施例。然而,我们当了解,该等图式及本文对该等图式的详细说明的用意并非将本发明限制在所揭示的特定形式,相反地,本发明将涵盖最后的申请专利范围所界定的本发明的精神及范围内的所有修改、等效物、及替代。请注意,各标题只是用于组织的目的,且该等标题的用意并非在用来限制或诠释说明或申请专利范围。此外,请注意,在本申请案的全文中系以容许的意义(亦即有可能、能够)而非以强制的意义(亦即必须)使用词语“可能”(“may”)。术语“包括”(“include”)及其衍生词语意指“包括但不限于”(“including,but not limited to”)。术语“被连接”(“connected”)意指“直接地或间接地被连接”,且术语“被耦合”(“coupled”)意指“直接地或间接地被耦合”。
具体实施方式
图1--微处理器
图1是一微处理器100的实施例的方块图。微处理器100的组态设定成执行一系统内存200中存储的指令。许多这些指令对系统内存200中存储的数据执行运算。请注意,可在实体上将系统内存200分布到整个计算机系统,且可由一个或多个微处理器100存取该系统内存200。微处理器100包含一解除分配资料项机制,用以响应推测式作业及(或)操作数变为非推测的,而解除对一个或多个排程器118的资料项的分配。请注意,在本文的用法中,排程器是将各作业排程以供执行并将各作业发出到一个或多个执行核心或其它执行作业的构件。例如,指令保留区是排程器的一个例子。
微处理器100可包含一指令高速缓存106及一数据高速缓存128。微处理器100可包含一被耦合到指令高速缓存106的预先提取单元108。可将一派发单元104的组态设定成自指令高速缓存106接收指令并将作业派发到一个或多个排程器118。可将一个或多个排程器118耦合成自派发单元104接收被派发的作业并将作业发出到一个或多个执行核心124。执行核心124可包含一组态被设定成执行对数据高速缓存128的存取的加载/存储单元126。可将一个或多个执行核心124产生的结果输出到一结果总线130。可将这些结果用来作为后续发出的指令的操作数值,且(或)可将这些结果存储到缓存器文件116。可将一退休队列102耦合到一个或多个排程器118及派发单元104。可将该退休队列的组态设定成决定每一发出的作业退休的时机。在一实施例中,可将微处理器100设计成与x86架构兼容。请注意,微处理器100亦可包含许多其它的组件。
在派发单元104接收指令之前,指令高速缓存106可暂时地存储这些指令。可经由预先提取单元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架构中,共有8个32位逻辑缓存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI、及ESP)。实体缓存器文件116(或一重新排序缓冲区)包含用于改变这些逻辑缓存器内容的结果的存储空间,因而容许非循序执行。可分配缓存器文件116中的一实体缓存器,以便存储每一作业的结果,而于将该作业译码时,即决定要修改其中一个实体缓存器的内容。因此,在一特定程序执行期间的各点上,缓存器文件116(或者在替代实施例中为一重新排序缓冲区)可以有一个或多个存放了一特定逻辑缓存器的推测式执行内容的缓存器。
缓存器对映表134可将一实体缓存器指定给规定为一作业的目标操作数的特定逻辑缓存器。派发单元104可决定缓存器文件116具有一个或多个先前被分配的实体缓存器,且该等实体缓存器指定给在一特定作业中规定为一来源操作数的一逻辑缓存器。缓存器对映表134可将一标记提供给最近被指定给该逻辑缓存器的实体缓存器。可利用该标记来存取缓存器文件116中的操作数的资料值,或者可利用该标记来接收经由结果总线130而传送的结果的资料值。如果该操作数对应于一记忆位置,则可经由加载/存储单元126而在结果总线上提供操作数值(以供结果转送及(或)存储在缓存器文件116中)。当其中一个排程器118发出作业时,可将操作数资料值提供给一个或多个执行核心124。请注意,在替代实施例中,于配发一作业时,可将操作数值提供给一对应的排程器118(而不是于发出该作业时将操作数值提供给一对应的执行核心124)。
可将派发单元104的输出端上提供的经位编码的作业及立即运算资料传送到一个或多个排程器118。请注意,在本文的用法中,排程器是一种侦测各作业已准备好可执行的时机并将已准备好的作业发出到一个或多个执行单元的装置。例如,指令保留区是一种排程器。每一排程器118可存放正在等候将发出到执行核心124的数个待处理的作业的作业信息(例如经位编码的执行位、以及操作数值、操作数标记、及(或)立即运算数据)。在某些实施例中,每一排程器可以不提供操作数值的存储空间。每一排程器可代的以监视发出的作业以及缓存器文件116中可得到的结果,以便决定一个或多个执行核心124何时可(自缓存器文件116或结果总线130)读取操作数值。在某些实施例中,可使每一排程器118与一专用的执行核心124相关联。在其它的实施例中,单一的排程器118可将作业发出到一个以上的执行核心124。
可提供排程器118(或将作业排程以供执行的其它装置),以便暂时性地存储一个或多个执行核心124将要执行的作业信息。如前文所述,每一排程器118可存储待处理的作业的作业信息。此外,每一排程器可存储已经被执行过但仍然可能再度发出的作业的作业信息。为了响应任何必须的一个或多个操作数的值已及时备妥可供执行,而将作业发出到一个或多个执行核心124以供执行。因此,各作业执行的顺序可能与原始程序指令序列的顺序不同。可将涉及资料推测的各作业保留在一个或多个排程器118中,直到该等作业变为非推测的为止,因而如果资料推测是错误的,则可重新发出该等作业。
在一实施例中,每一执行核心124可包含组态被设定成执行加法及减法的整数算术运算、以及移位、旋转、逻辑作业、及分支作业的若干组成部分。亦可包含一浮点单元,以便提供浮点运算。可将一个或多个执行核心124的组态设定成为执行地址产生,该地址产生系用于加载/存储单元126执行加载及存储内存作业。
该等一个或多个执行核心124亦可将与条件分支指令的执行有关的信息提供给分支预测单元132。如果来自执行核心124的信息指示一分支预测是错误的,则分支预测单元132可清除已进入指令处理管线且系在该错误预测的分支之后的各指令,并使预先提取单元108的提取方向改向。被改向的预先提取单元108然后可开始自指令高速缓存106或系统内存200提取一组正确的指令。在此种情形中,可舍弃原始指令序列中在该错误预测的分支指令之后发生的指令的结果,其中包括以推测方式执行且系暂时性地存储在加载/存储单元126及(或)缓存器文件116中的那些指令的结果。
如果一分支指令的任何操作数是推测的(例如,如将于下文中说明的,因为已对产生该分支指令的其中一个操作数的作业执行了资料推测,而发生上述的情形),则该分支指令的结果将是推测的。在某些实施例中,可利用分支指令的推测式结果来决定是否错误预测了分支作业。如果该推测式结果指示一分支指令被错误预测了,则分支预测单元132可使预先提取单元108的提取方向改向,并清除指令处理管线。然而,在其它的实施例中,可将分支预测单元132的组态设定成等候到分支作业的结果变为非推测的,然后才使预先提取单元108的提取方向改向,并清除处理管线。如果分支作业的推测式结果证实是错误的,则上述的方式可造成较少的提取改向及管线清除。
如果正在更新一缓存器值,则可将一个或多个执行核心124内的各组成部分所产生的结果经由结果总线130而输出到缓存器文件116。如果正在改变一记忆位置的内容,则可将一个或多个执行核心124内产生的结果提供给加载/存储单元126。
加载/存储单元126提供了一个或多个执行核心124与资料高速缓存128间的一接口。在一实施例中,可将加载/存储单元126的组态设定成具有一加载/存储缓冲区,该加载/存储缓冲区具有数个存储位置,用于存放待处理的加载或存储作业的资料及地址信息。加载/存储单元126亦可执行加载指令对待处理的存储指令之间的相依性检查,以便确保维持了资料的一致性。
数据高速缓存128是一种为了暂时性地存储在加载/存储单元126与系统内存200之间转移的数据而提供的高速缓存。如同前文所述的指令高速缓存106,可以各种特定内存组态来实施资料高速缓存128,包括一组关系型的组态。此外,在某些实施例中,可以统一高速缓存的方式来实施资料高速缓存128及指令高速缓存106。
图1所示微处理器100中产生的资料值可包括推测状态指示。每一推测状态指示可指示一相关联的资料值是否为推测的。例如,缓存器文件116中存储的资料值可分别具有一相关联的推测状态指示,亦可将该推测状态指示存储在缓存器文件116及(或)缓存器对映表134中。同样地,执行核心124所产生的资料值可分别具有一相关联的推测状态指示,且可自执行核心124输出推测状态指示以及相关联的资料值,且(或)可将该推测状态指示以及用来识别该资料值的一标记输出到标记总线。在一实施例中,可存储推测状态指示以及缓存器对映表134中识别的每一实体缓存器。可经由标记总线而传送推测状态指示及标记,其中该等标记系用来识别与该等推测状态指示相关联的实体缓存器。可替代地将推测状态指示以及与该等推测状态指示相关联的资料值传送至结果总线。
如本说明书所述,如果一资料值有被重新计算的可能性,则该资料值是推测的。如果一资料值是已执行了某一资料推测的作业的结果(例如,如果在派发单元104中预测了该作业的结果),或者如果一资料值取决于可能被重新计算的另一资料值(例如,一资料值是使用一个或多个推测的操作数来执行的作业的结果),则可能重新计算该资料值。推测状态指示是用来指示一操作数或一作业是推测的一种方式的其中一个例子。
在一实施例中,推测状态指示可以是单一的状态位,而如果相关联的资料值是推测的,则设定该状态位,否则清除该状态位。可将执行核心124的组态设定成如果用来产生一资料值的任何操作数是推测的,则设定对该资料值的推测状态指示。可将加载/存储单元126的组态设定成设定与资料值相关联的推测状态指示,以便指示该资料值是否为推测的(例如,如果容许加载作业将未经过计算的地址传送给存储作业,则所得到的资料值可能是推测的)。同样地,当将(诸如缓存器文件116中的)存储位置分配成存储作业的结果时,如果该作业的任何操作数是推测的,或者如果该作业本身是推测的,则可设定该存储位置中的推测状态指示。例如,如果将存储位置分配给加载作业的结果,则因为该加载作业可能未命中资料高速缓存128,或者该加载作业将未经计算的地址传送给存储作业,所以可设定该加载作业的结果的推测状态指示。如果利用缓存器对映表134来追踪推测式缓存器状态,则缓存器文件116中对映到相同逻辑缓存器的实体缓存器可以有不同的推测状态指示。
如果在将作业派发到排程器118之前,先对该作业执行资料预测及(或)值预测,则该作业是推测的。例如,某些作业经常可能产生相同的结果。可将这些结果存储在一查询表中。当在派发单元104中处理这些作业中的一个作业时,可以利用该查询表而以推测方式产生该作业的结果,并将该结果存储在缓存器文件116内分配给存储该作业的结果的缓存器(或一重新排序缓冲区内的存储位置)中。因为该结果是推测的,所以亦可设定该结果的推测状态指示,以便指示该结果是推测的。当执行该作业时,可将该作业的实际结果与推测式结果比较,以便决定该推测是否正确。如果该推测是错误的,则可以实际结果取代推测式结果(例如,藉由在结果总线上广播该实际结果),且可利用该实际结果而重新发出已执行的且系利用该推测式结果来计算其结果的任何作业。如果该推测是正确的,则可将该结果不再是推测的结果的指示提供给排程器118及缓存器文件116。如将于下文中说明的,每一排程器118可为每一作业维护一个或多个推测状态指示,以便追踪可能要重新发出哪些作业,并决定何时可自该排程器移除这些作业。为了响应已正确地完成作业或操作数执行的推测的指示,每一排程器118可更新推测状态指示,以便指示作业及(或)操作数不再是推测的。
图2--排程器
图2标出组态设定成重新发出作业的排程器118的实施例。排程器118包含一排程器控制单元304及一作业存储单元302。排程器控制单元304可控制作业存储单元302,以便分配及解除分配用于作业的资料项。当派发单元104将作业派发到排程器时,排程器控制单元304可将作业存储单元302中的资料项320分配给该作业。该资料项320可保持被分配给该作业,直到解决了该作业或作业的任何操作数的推测为止,并已将该推测的结果(例如该推测的成功或失败)转送到任何相依的作业(例如,由该作业的结果产生操作数值的作业)为止。
在某些实施例中,排程器118可以是处理器100中的数个排程器118的其中之一。在该实施例中,可将每一排程器118耦合成将作业发出到不同的执行核心124。可将每一排程器118耦合到一组的一个或多个标记总线,系经由该等标记总线而在各排程器之间传送用来识别发出的作业的结果的标记(诸如以供结果转送及(或)成功讯息转送,其中的情形将于下文中详细说明的)。
作业存储单元302中的每一资料项可包含数个字段。图2所示的例示资料项320包含用来存储译码后的作业的一作业字段322、用来指示作业本身是否为推测的作业的一作业推测状态区位324、以及该作业的每一操作数用的数组字段326至330。在该例子中,Operand1及Operand2这两个操作数各有一组操作数字段。Operand1的字段是326A及330A,且Operand2的字段是326B及330B。每一操作数的字段包括用来存储该操作数的标记的一标记字段326、及用来指示该操作数的值是否为(或是否将为)推测的一来源推测状态区位330。该等来源推测状态区位330分别存储诸如推测状态位等的来源推测状态指示,而如果一对应的值是推测的,则设定该推测状态位,否则将清除该推测状态位。请注意,在许多实施例中,数个额外操作数中的每一操作数可包含一组操作数字段。例如,在一实施例中,每一资料项320可包含五个操作数(例如三个缓存器来源及两个旗标来源)的操作数字段的存储空间。每一排程器资料项320可包含用于每一操作数的一来源推测状态指示。
在某些实施例中,排程器资料项320可包含一值字段,而如果系将操作数值自排程器118提供给执行核心124,则值字段存储每一操作数的一操作数值。在此种实施例中,如果已经可取得(诸如自缓存器文件116或重新排序缓冲区)该等操作数值,或者当该等操作数值变为可取得时(例如,该等操作数值在结果总线130上),则在派发作业时,可将该等操作数值存储到作业的资料项320。请注意,其它的实施例可以不在每一排程器资料项320中包含此种值字段。
在派发时,可将用来识别作业的操作数的标记存储在该作业的资料项320中。如果尚无法取得操作数值,则可使用该操作数的标记来识别将因待处理的作业产生的该操作数值。例如,当将产生该操作数值的作业发出到执行核心124时,发出的排程器118可在标记总线340上输出该操作数的标记。排程器控制单元304可将标记总线340上的该等标记与作业存储单元302内所分配的各数据项中的操作数标记比较。如果标记总线340上的一标记与一操作数标记符合,则排程器控制单元304可决定于某一数目的时脉周期之后将可在结果总线130上取得该标记所识别的操作数值。
当将一作业派发到排程器118时,可将来源推测状态指示330存储在作业存储单元302中的该作业的资料项320中。如果在被分配给存放操作数值的缓存器或其它存储位置中设定了一推测状态指示(或者如果设定了与缓存器对映表中识别的特定缓存器相关联的推测状态指示),则在该作业的资料项320中设定该操作数的来源推测状态指示。同样地,如果已对作业本身执行了任何资料推测或值推测,则可设定作业推测状态指示324(例如,当派发相关联的作业时,派发单元104可将作业推测状态指示提供给排程器118)。
当将一作业派发到排程器118时,派发单元104可分配缓存器或存储位置,用以存储该作业的结果。如果应设定该作业的任何来源状态指示330,或者如果应设定作业状态指示324,则亦可设定与分配给该作业结果的缓存器或存储位置相关联的推测状态指示。可将与各结果存储位置相关联的推测状态指示存储在重新排序缓冲区、缓存器文件、及(或)缓存器对映表中。该等推测状态指示可用来将每一操作数的推测状态传播到整个相依性炼。
排程器控制单元304可选择将作业存储单元302中的资料项所存储的作业发出到执行核心124,以供执行。排程器控制单元304可选择可(诸如自缓存器文件116)取得操作数值的作业,或者可选择如标记总线340上的标记所指示的将可于某一数目的时脉周期内在结果总线130上取得操作数值的作业。可根据是否可取得作业的操作数(在有操作数的情形下)、以及作业的相对存在时间(例如,可将优先权给予等候发出较久的作业、及(或)在程序顺序中发生得较早的作业),而选择该等作业。每一资料项可具有一相关联的准备就绪指示,用以指示该资料项是否已准备好而可被发出。在许多实施例中,本身不是推测式作业的作业及并无任何推测的操作数值的作业的优先级可高于推测式作业及具有推测的操作数值的作业。
当所执行的作业的作业推测状态及来源推测状态为清除时,排程器控制单元304可将分配给作业的资料项解除分配。然而,当执行推测式作业及(或)其操作数具有推测的值的作业时,并不将分配给该等作业的资料项解除分配。若保留作业存储单元302中分配的该等资料项,则在推测证实是错误的情形下,可让排程器控制单元304重新发出该等作业。因为已设定来源推测状态指示330而可在排程器内清楚地识别与推测式作业相依的各作业,所以亦可在作业存储单元302内保留分配给各相依作业的资料项。此种方式可响应一错误的推测被侦测到,而重新执行该相依炼中的该等作业。
当推测解决时,排程器控制单元304更新作业存储单元302中的每一资料项320中的作业推测状态指示324及来源推测状态指示330(例如,每当正确地解决一推测时,藉由清除适当的来源状态指示330及(或)作业状态指示324,而进行更新)。在此种方式下,当来源状态指示330及作业状态指示324指示将不会重新发出一资料项320的作业时(例如,当该资料项的来源状态指示及作业状态指示被清除时),即可将该资料项320解除分配。当解决一作业的推测时,排程器控制单元304可清除该作业的作业状态指示。排程器控制单元304是用来更新推测状态指示的一种装置的一个例子。
如果该作业的作业推测状态指示324及来源推测状态指示330被清除,则排程器控制单元304可重新选择发出的作业,这是因为该等状态指示被清除指示了已正确地解决了该作业及其操作数的任何资料推测及值推测。一旦已正确地解决了该作业的推测之后,该作业的结果就不再是推测的。排程器控制单元304重新选择该发出的作业,以便将该作业结果的成功转送到各相依的作业,且可将该成功的指示存储在同一排程器118中的作业存储单元302中,或存储在微处理器内的不同的排程器中。排程器控制单元304响应接收到作业的推测式结果是成功的(亦即不是推测的)指示,而可更新存储单元302中的来源推测状态指示,该等来源推测状态指示系指示该作业所产生的结果操作数不再是推测的。
在某些实施例中,可利用结果转送时所用的标记总线来转送作业结果的成功讯息。例如,当排程器控制单元304选择已解决了作业推测及(或)操作数值推测的发出的作业时,可输出与该作业的结果对应的各标记至标记总线340、以及一个指示用于指示正在输出的该等标记系为该作业所产生的各操作数清除来源推测状态指示330。在某些实施例中,于转送成功讯息期间,可使用于结果转送期间用来决定正在产生哪些作业的操作数值的(诸如排程器控制单元304中的)相同的标记比较器。成功讯息若被转送的作业可能因成功讯息的转送而不会被重新执行,且因而转送成功讯息所耗用的时间可能短于结果转送所耗用的时间(系取决于该作业的执行时间)。成功讯息转送亦可清除与分配用来存储作业结果的存储位置或缓存器相关联的(诸如存储在缓存器文件、重新排序缓冲区、或缓存器对映表的)推测状态指示,因而后续被派发的作业得知该作业的结果不是推测的。
在替代实施例中,可将一组不同的标记总线及标记比较器用于成功讯息转送(而不是使用结果转送所用的相同标记总线)。在将一组不同的标记总线及标记比较器用于成功讯息转送的实施例中,在选择另一作业进行成功讯息转送的相同时脉周期中,排程器118可选择一作业以供执行。
在将相同的标记总线340用于结果转送以及成功讯息转送的实施例中,排程器控制单元304可将优先权授予在自作业存储单元302选择作业时尚未被发出的作业。例如,当没有未被发出的作业准备好可供选择时,排程器控制单元304可选择已发出的作业进行成功讯息转送。当选择一作业进行成功讯息转送时,可将该作业的资料项解除分配(亦即,可自排程器移除该作业)。在其它的实施例中,可在转送各作业的成功讯息的一段时间后,自排程器移除该等作业。在此种实施例中,每一资料项可有一相关联的成功转送指示,用以指示是否已选择一资料项,该资料项的成功讯息被转送,因而不会选择相同的作业进行一次以上成功讯息转送。
亦可将排程器控制单元304的组态设定成侦测与加载/存储单元126输出的资料值相关联的推测状态指示,以便满足一加载作业。排程器控制单元304可使用这些推测状态指示,以更新那些依赖加载作业的作业的来源推测状态指示330。如果该加载作业的任何推测最后为错误的,则可利用正确的资料值而重新发出各相依的作业。亦可响应与加载/存储单元126输出的资料相关联的推测状态指示,而更新与被分配用来存储该资料值的缓存器及(或)存储位置相关联的(诸如存储在重新排序缓冲区、缓存器文件、或缓存器对映表的)推测状态指示。
当解决了分支指令为推测或分支指令的操作数值为推测时,成功讯息转送可能涉及排程器118将该成功指示传送到分支预测单元132。在某些实施例中,可将分支指令的推测式结果转送到分支预测单元。在某些实施例中,分支预测单元132可根据分支指令的推测式结果使预先提取单元108的提取方向改向,并而清除处理管线。在其它的实施例中,分支预测单元132可将使预先提取单元108的提取方向改向及清除处理管线延迟到分支指令变为非推测的为止。因此,如有需要,则分支预测单元132可等候到涉及分支指令的推测的成功,然后才使预先提取单元108的提取方向改向并清除处理管线。在某些实施例中,当排程器控制单元304选择分支指令进行成功讯息转送时,可转送该分支指令的推测的成功讯息。在其它的实施例中,可将分支预测单元132的组态设定成:当该分支指令的来源推测状态指示及(或)作业推测状态指示被清除时,即立刻使用该分支指令的结果,而无须等候到排程器控制单元304选择该分支指令进行成功讯息转送。因此,在某些实施例中,当成功地解决分支作业时,即可进行分支改向。
如果在发出作业之前,正确地解决了该作业的推测及(或)该作业的操作数值的推测,则当排程器控制单元304选择该作业并将该作业发出到一功能单元212时,可清除该作业的作业推测状态指示324及来源推测状态指示330。因此,功能单元212所产生的资料可以有一告知该作业的结果不是推测的结果的相关联的指示(例如输出于标记总线上或包含于资料本身)。排程器控制单元304可接收该指示,并利用该指示来更新被分配给各相依的作业的各资料项中的来源推测状态指示。亦可利用来自功能单元212输出的资料相关联的指示来更新与分配用来存储作业结果的缓存器或存储位置相关联的(诸如存储在缓存器文件、重新排序缓冲区、或缓存器对映表的)推测状态指示。
请注意,在某些实施例中,系追踪推测式作业及操作数,并将各资料值的推测状态传送到各相依的作业,因而可在作业变成排程器中最久的未退休作业之前,即自该排程器移除该等作业。此种方式可以比其它分配方式更快速地将排程器118中的各资料项分配给新的作业。
图3标出操作一支持数据推测及值推测的微处理器的一种方法的一实施例。在步骤350中,将排程器中的资料项分配给作业。如果该作业本身是推测的,则可在步骤352中设定该资料项中的作业推测状态指示。同样地,如步骤352所示,可针对具有推测的值的任何操作数而设定该资料项中的来源推测状态指示。如步骤354至356所示,如果接收到已正确地解决了作业或操作数值的推测的指示,则可清除适当的作业推测状态指示或来源推测状态指示。可能因转送先前作业的成功讯息,而接收到该指示。如步骤358至360所示,如果所有的来源推测状态指示及作业推测状态指示都被清除,而指示已正确地解决了所有的推测,则可转送该作业的结果不是推测的结果的一指示。该指示可让排程器针对各相依的作业而更新来源推测状态指示,并经由相依炼而传送该推测的成功讯息。如步骤362所示,亦可将该排程器中的该作业的资料项解除分配,因而可将该资料项重新分配给一个新的作业。
图4--计算机系统
图4标出一计算机系统400的一实施例的一方块图,该计算机系统400包含一处理器100,该处理器100系经由一总线桥接器402而耦合到各种系统组件。处理器100可包含前文所述的一排程器118的一实施例。计算机系统的其它实施例也是可行的,且可考虑采用。在所示的系统中,一主存储器200系经由一内存总线406而耦合到总线桥接器402,且一图形控制器408系经由一AGP总线410而耦合到总线桥接器402。数个PCI装置412A至412B系经由一PCI总线414而耦合到总线桥接器402。亦可设有一辅助总线桥接器416,以便经由一EISA/ISA总线420而提供一个或多个EISA或ISA装置418的电气接口。在该例子中,处理器100系经由一CPU总线424而耦合到总线桥接器402,以及一非必须的L2高速缓存428。在某些实施例中,处理器100可包含一整合式L1高速缓存(图中未示出)。
总线桥接器402提供了处理器100、主存储器200、图形控制器408、与连接到PCI总线414的各装置间的接口。当自连接到总线桥接器402的其中一个装置接收到作业时,总线桥接器402即识别该作业的目标(例如,该目标是一特定的装置,或者在PCI总线414的情形中,该目标是在PCI总线414上)。总线桥接器402将该作业传送到目标装置。总线桥接器402通常将作业自来源装置或总线所用的协议转换为目标装置或总线所用的协议。
辅助总线桥接器416除了将EISA/ISA总线接口提供给PCI总线414之外,还包含了额外的功能。亦可在计算机系统400内设有在辅助总线桥接器416外部或与辅助总线桥接器416整合的一输入/输出控制器(图中未示出),以便将作业支持提供给键盘及鼠标422、以及各种序列及并行端口。在其它的实施例中,亦可在处理器100与总线桥接器402之间将一外部高速缓存单元(图中未示出)耦合到CPU总线424。在替代实施例中,可将该外部高速缓存耦合到总线桥接器402,且可将该外部高速缓存的高速缓存控制逻辑电路整合到总线桥接器402中。在处理器100的后端组态中示出L2高速缓存428。请注意,L2高速缓存428可与处理器100分离,L2高速缓存428可连同处理器100而被整合到一卡匣中(例如,slot 1或slot A架构),甚至可将L2高速缓存428连同微处理器100整合到一半导体基材中。
主存储器200是用来存储应用程序且处理器100执行时所主要使用的一内存。适当的主存储器200包括动态随机存取内存(DynamicRandom Access Memory;简称DRAM)。例如,复数组SDRAM(Synchronous DRAM;简称SDRAM)或RambusDRAM(RDRAM)是可适用的。
PCI装置412A至412B是诸如网络适配卡、影像加速器、声卡、硬盘机或软盘机或磁盘控制器、小型计算机系统接口(Small ComputerSystem Interface;简称SCSI)配接器、及电话适配卡等的各种周边装置的例示。同样地,ISA装置418是诸如调制解调器、声卡、及GPIB或现场总线适配卡等的各种资料撷取卡等的各种周边装置的例示。
设有图形控制器408,以便控制一显示器426上的文字及影像的演算(rendeving)。图形控制器408可采用此项技术中普遍知道的典型图形控制器,以便对可有效地移进移出主存储器200的三维数据结构进行演算。图形控制器408因而可以是AGP总线410的主控装置,可要求并取得总线桥接器402内的目标接口的主控权,以便因而存取主存储器200。一专用的图形总线可适应自主存储器200迅速撷取的资料。对于某些作业而言,可将图形控制器408的组态进一步设定成在AGP总线410上产生PCI协议交易。总线桥接器402的AGP接口因而可包含支持AGP协议交易以及PCI协议目标及发出装置交易的功能。显示器426是一可呈现影像或文字的电子显示器。一适当的显示器426包括一阴极射线管(Cathode Ray Tube;简称CRT)、一液晶显示器(LiquidCrystal Display;简称LCD)等的显示器。
请注意,虽然在前文的说明中系将AGP、PCI、以及ISA或EISA总线用来作为例子,但是可视需要而替换任何的总线架构。又请注意,计算机系统400可以是一包含额外的微处理器(例如,图中将处理器100a示为计算机系统400的非必须的组件)的多重处理计算机系统。处理器100a可类似于微处理器10。更具体而言,处理器100a可以与处理器100相同。可将处理器100a经由一独立的总线(如图5所示)而连接到总线桥接器402,或者处理器100a可与处理器100共享CPU总线424。此外,可将处理器100a耦合到与L2高速缓存428类似的非必须的L2高速缓存428a。
图5--多节点处理系统
现在请参阅图5,图中示出可包含一处理器100的一计算机系统400的另一实施例,而处理器100具有一前文所述的可重新发出的排程器。其它的实施例也是可行的,也可以考虑采用。在图5所示的实施例中,计算机系统400包含数个处理节点512A、512B、512C、及512D。每一处理节点系经由每一各别处理节点512A至512D内包含的一内存控制器516A至516D而耦合到一各别的内存514A至514D。此外,处理节点512A至512D包含用来在该等处理节点512A至512D之间通讯的接口逻辑电路。例如,处理节点512A包含接口逻辑电路518A,用以与处理节点512B通讯,包含接口逻辑电路518B,用以与处理节点512C通讯,并包含一第三接口逻辑电路518C,用以与另一处理节点(图中未示出)通讯。同样地,处理节点512B包含接口逻辑电路518D、518E、及518F;处理节点512C包含接口逻辑电路518G、518H、及518I;以及处理节点512D包含接口逻辑电路518J、518K、及518L。处理节点512D被耦合成经由接口逻辑电路518L而与多个输入/输出装置(例如,按照链环组态配置的装置520A至520B)通讯。其它的处理节点可以类似的方式与其它的I/O装置通讯。
处理节点512A至512D实施一封包式链路,以供处理节点间的通讯。在本实施例中,系将该链路实施为一组单向线路(例如,线路524A系用来将封包自处理节点512A传送到处理节点512B,且线路524B系用来将封包自处理节点512B传送到处理节点512A)。如图5所示,其它组的线路524C至524H系用来在其它的处理节点之间传送封包。一般而言,每一组的线路524可包含一条或多条资料线路、对应于该等资料线路的一条或多条时脉线路、以及用来指示所载送的封包类型的一条或多条控制线路。可以一种与高速缓存一致的方式操作该链路,以供各处理节点间的通讯,或者以一种非一致性的方式操作该链路,以供一处理节点与一I/O装置(或诸如PCI总线或ISA总线等传统结构的I/O总线的总线桥接器)间的通讯。此外,可利用所示各I/O装置间的链环结构而以一种非一致性的方式操作该链路。请注意,将自某一处理节点传送到另一处理节点的一封包可通过一个或多个中间节点。例如,如图5所示,由处理节点512A传送到处理节点512D的封包可通过处理节点512B或处理节点512C。可使用任何适当的路径选择算法。计算机系统400的其它实施例可包含比第5图所示实施例较多或较少的处理节点。
一般而言,可在各节点间的线路524上以一个或多个位时间的方式传送该等封包。一位时间可以是对应的时脉线路上的时脉信号的上升缘或下降缘。该等封包可包括用来激活交易的命令封包、用来维持高速缓存一致性的探测封包、以及响应探测及命令的响应封包。
各处理节点512A至512D除了包含一内存控制器及接口逻辑电路之外,还可包含一个或多个处理器。广义而言,处理节点包含至少一个处理器,且或可视需要而包含用来与内存及其它逻辑电路通讯的内存控制器。更具体而言,每一处理节点512A至512D可包含一个或多个处理器100。外部接口单元18可包含节点内的接口逻辑电路518、以及内存控制器516。
内存514A至514D可包括任何适当的内存装置。例如,内存514A至514D可包括一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、及静态RAM等内存装置。计算机系统400的地址空间系分布在内存514A至514D之间。每一处理节点512A至512D可包含内存对映表,用以决定哪些地址系对映到哪些内存514A至514D,并决定应将对一特定地址的内存要求传送到哪一处理节点512A至512D。在一实施例中,计算机系统400内的地址的一致性点是耦合到存储与该地址对应的字节的内存的内存控制器516A至516D。换言之,内存控制器516A至516D负责确保以一种与高速缓存一致的方式进行对该对应的内存514A至514D的各内存存取。内存控制器516A至516D可包含用来连接到内存514A至514D的控制电路。此外,内存控制器516A至516D可包含用来使内存要求排队等候的要求队列。
接口逻辑电路518A至518L可包含各种缓冲器,用以自链路接收封包,并缓冲存储将要经由该链路而传送的封包。计算机系统400可采用任何适当的封包流控制机制以传送封包。例如,在一实施例中,每一接口逻辑电路518存储在该接口逻辑电路所连接的链路的另一端上的接收器内的每一种类型的缓冲器的数目。在接收的接口逻辑电路有可存储封包的空缓冲器之前,传送的接口逻辑电路并不传送该封包。当藉由向前传送封包而空出接收的缓冲器时,接收的接口逻辑电路即将讯息传送到该传送的接口逻辑电路,而指示该缓冲器已空出。可将此种机制称为“配给票式”系统。
I/O装置520A至520B可以是任何适当的I/O装置。例如,I/O装置520A至520B可包含若干装置,用以与该等装置可耦合的另一计算机系统(例如,该等装置可以是网络适配卡或调制解调器)沟通。此外,I/O装置520A至520B可包括影像加速器、声卡、硬盘机或软盘机或磁盘控制器、小型计算机系统接口(SCSI)配接器、及电话适配卡、声音卡、以及诸如GPIB或现场总线适配卡等的各种资料撷取卡。请注意,在本文中,术语“I/O装置”及“周边装置”是同义语。
在本文的用法中,术语“时脉周期”意指指令处理管线的各阶段完成其工作的时间间隔。各存储元件(例如缓存器或记忆数组)根据界定时脉周期的一时脉信号而捕获指令及计算出的值。例如,一存储元件可根据时脉信号的上升缘或下降缘而捕获一值。
前文的讨论中系将信号描述为“被触发”(“asserted”)。当信号载有指示了特定件的信息的值时,可将该信号定义为被触发。当特定信号载有一个二进制的“一”值时,或者替代性地当信号载有一个二进制的“零”值时,可将该特定信号定义为被触发。
熟习此项技术者在完全了解前文的揭示事项之后,将可易于作出许多的变化及修改。要将最后的申请专利范围诠释为包含所有此类的变化及修改。
工业应用性
本发明可普遍适用于微处理器的领域。
Claims (10)
1.一种用于支持数据推测式执行的微处理器(100),包含:
多个执行单元(124);以及
耦合而将作业发出到该多个执行单元中的至少一个执行单元的一排程器(118),其中该排程器包含:
包含多个资料项(320)的作业存储单元(302),其中将第一资料项分配给第一作业,其中该第一作业对一个或多个操作数执行作业,其中该第一资料项包含一个或多个来源状态指示(330A,330B),其中每一来源状态指示指示该一个或多个操作数中的各别操作数的一值是否是推测的;以及
耦合到该作业存储单元(302)的排程器控制单元(304),且该排程器控制单元(304)的组态被设定成:响应接收到第二作业的结果的值是非推测的值的指示,而更新该第一资料项中包含的该一个或多个来源状态指示中的一个来源状态指示(330A,330B),以便指示该一个或多个操作数中的各别操作数的一值是非推测的。
2.如权利要求1所述的微处理器,其中该多个执行单元中的一第一执行单元的组态被设定成执行该第一作业以产生该第一作业的结果,其中该第一作业的结果包含一个结果指示,其中该结果指示指示:如果该第一资料项中包含的该一个或多个来源状态指示中的任何来源状态指示指示该一个或多个操作数中的各别操作数是推测的,则该第一作业的该结果的值是推测的。
3.如权利要求1所述的微处理器,其中对应于该第二作业的结果的一标记等于对应于该一个或多个操作数中的操作数的标记,其中将该排程器控制单元的组态设定成:响应在标记总线上接收到对应于该第二作业的结果的标记,而更新该第一资料项中包含的该一个或多个来源状态指示中的一来源状态指示。
4.如权利要求3所述的微处理器,其中将该排程器控制单元的组态被设定成:响应接收到在该标记总线提供了对应于该第一操作数的标记以更新推测式的状态指示的指示,而更新该一个或多个来源状态指示中的来源状态指示,其中该标记总线也用于转送。
5.如权利要求1所述的微处理器,其中将该排程器控制单元的组态设定成:如果该第一资料项中包含的该一个或多个来源状态指示的每一个来源状态指示指示该一个或多个操作数中的一各别操作数的值是非推测的,则响应该第一作业的重新发出,而将该第一资料项解除分配。
6.如权利要求1所述的微处理器,进一步包含耦合到该排程器的分支预测单元、以及耦合到该分支预测单元的预先提取单元,其中如果该第一个作业是一个分支作业,则将该分支预测单元的组态设定成:在该第一资料项中的该一个或多个来源状态指示的每一个来源状态指示指示该一个或多个操作数中的一各别操作数的一值是非推测的值之前,延迟响应该第一作业的结果而使该预先提取单元的提取方向改向并清除一处理管线。
7.如权利要求1所述的微处理器,其中将该排程器控制单元的组态设定成选择该作业存储单元中的该多个资料项的资料项中存储的作业并将所选择的作业提供给功能单元以供执行,其中该排程器控制单元的组态设定成将优先权给予具有非推测的操作数的作业,非推测由作业存储单元中的每一个资料项中包含的来源状态指示所指示。
8.一种用于支持数据推测式执行的方法,包含下列步骤:
第一来源状态指示(330A)指示第一作业的第一操作数的值是推测的,其中该第一操作数是第二作业的一结果;
响应接收到用来指示该第二作业的结果的值不是推测的值的一第二结果状态指示,而更新该第一来源状态指示,以便指示该第一操作数的该值不是推测的;以及
第一结果状态指示响应该更新,而指示该第一作业的结果的值不是推测的。
9.如权利要求8所述的方法,进一步包含下列步骤:将该第一作业派发到排程器,其中该派发步骤包含将该排程器中的第一资料项分配给该第一作业,其中该第一资料项包含该第一来源状态指示。
10.一种用于支持数据推测式执行的方法,包含下列步骤:
对应于第一分支指令的第一操作数的第一来源状态指示指示该第一操作数的值是推测的;
接收第二作业的结果的值是非推测的值的一指示,其中该第二作业的结果是该第一操作数;
响应该接收步骤,而更新该第一来源状态指示,以便指示该第一操作数的值是非推测的;以及
在该更新步骤之前,延迟响应该第一分支指令的结果的值而使一指令预先提取机制改向并清除一处理管线。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/229,563 | 2002-08-28 | ||
US10/229,563 US6950925B1 (en) | 2002-08-28 | 2002-08-28 | Scheduler for use in a microprocessor that supports data-speculative execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1678986A CN1678986A (zh) | 2005-10-05 |
CN1320452C true CN1320452C (zh) | 2007-06-06 |
Family
ID=31976256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB03820181XA Expired - Lifetime CN1320452C (zh) | 2002-08-28 | 2003-07-16 | 用于支持数据推测式执行的微处理器与方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6950925B1 (zh) |
EP (1) | EP1532521B1 (zh) |
JP (1) | JP4170292B2 (zh) |
KR (1) | KR100981168B1 (zh) |
CN (1) | CN1320452C (zh) |
AU (1) | AU2003252081A1 (zh) |
TW (1) | TWI315488B (zh) |
WO (1) | WO2004021174A2 (zh) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7421567B2 (en) | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
US7552318B2 (en) * | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7444498B2 (en) * | 2004-12-17 | 2008-10-28 | International Business Machines Corporation | Load lookahead prefetch for microprocessors |
US8046558B2 (en) * | 2005-09-16 | 2011-10-25 | The Research Foundation Of State University Of New York | File system having predictable real-time performance |
GB0519981D0 (en) | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
EP2122461A4 (en) | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
JP5146444B2 (ja) * | 2007-03-20 | 2013-02-20 | 富士通株式会社 | マルチプロセッサシステム及びその制御方法 |
US7730289B2 (en) * | 2007-09-27 | 2010-06-01 | Faraday Technology Corp. | Method for preloading data in a CPU pipeline |
TWI469055B (zh) * | 2008-06-27 | 2015-01-11 | Realtek Semiconductor Corp | 網路工作卸載裝置與方法 |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
CN101789952A (zh) * | 2009-01-23 | 2010-07-28 | 瑞昱半导体股份有限公司 | 网络工作卸载装置与方法 |
GB2469822B (en) * | 2009-04-28 | 2011-04-20 | Imagination Tech Ltd | Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor |
US8977837B2 (en) * | 2009-05-27 | 2015-03-10 | Arm Limited | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes |
EP2616928B1 (en) | 2010-09-17 | 2016-11-02 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US9052890B2 (en) * | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
WO2012135041A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
TWI610224B (zh) * | 2011-11-23 | 2018-01-01 | 英特爾股份有限公司 | 微處理器加速編碼最佳化器 |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US9875105B2 (en) * | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
US9823931B2 (en) | 2012-12-28 | 2017-11-21 | Nvidia Corporation | Queued instruction re-dispatch after runahead |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9436476B2 (en) | 2013-03-15 | 2016-09-06 | Soft Machines Inc. | Method and apparatus for sorting elements in hardware structures |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
US10387156B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387158B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061583B2 (en) * | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061589B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
CN108415730B (zh) * | 2018-01-30 | 2021-06-01 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108279928B (zh) * | 2018-01-30 | 2021-03-19 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185668B1 (en) * | 1995-12-21 | 2001-02-06 | Intergraph Corporation | Method and apparatus for speculative execution of instructions |
US20010010073A1 (en) * | 1998-09-30 | 2001-07-26 | Intel Corporation. | Non-stalling circular counterflow pipeline processor with reorder buffer |
CN1346462A (zh) * | 1998-12-31 | 2002-04-24 | 英特尔公司 | 用于改进的判定预测的方法与装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511172A (en) * | 1991-11-15 | 1996-04-23 | Matsushita Electric Co. Ind, Ltd. | Speculative execution processor |
KR100310581B1 (ko) * | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | 분기목표버퍼의추측기록메카니즘 |
US5452426A (en) * | 1994-01-04 | 1995-09-19 | Intel Corporation | Coordinating speculative and committed state register source data and immediate source data in a processor |
US5966544A (en) | 1996-11-13 | 1999-10-12 | Intel Corporation | Data speculatable processor having reply architecture |
US6212626B1 (en) | 1996-11-13 | 2001-04-03 | Intel Corporation | Computer processor having a checker |
US6205542B1 (en) | 1997-12-24 | 2001-03-20 | Intel Corporation | Processor pipeline including replay |
US6094717A (en) | 1998-07-31 | 2000-07-25 | Intel Corp. | Computer processor with a replay system having a plurality of checkers |
US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
JP2003259295A (ja) * | 2002-03-04 | 2003-09-12 | Canon Inc | 撮像装置 |
US6845442B1 (en) | 2002-04-30 | 2005-01-18 | Advanced Micro Devices, Inc. | System and method of using speculative operand sources in order to speculatively bypass load-store operations |
-
2002
- 2002-08-28 US US10/229,563 patent/US6950925B1/en not_active Expired - Lifetime
-
2003
- 2003-07-16 WO PCT/US2003/022696 patent/WO2004021174A2/en active Application Filing
- 2003-07-16 AU AU2003252081A patent/AU2003252081A1/en not_active Abandoned
- 2003-07-16 CN CNB03820181XA patent/CN1320452C/zh not_active Expired - Lifetime
- 2003-07-16 KR KR1020057003349A patent/KR100981168B1/ko active IP Right Grant
- 2003-07-16 JP JP2004532613A patent/JP4170292B2/ja not_active Expired - Lifetime
- 2003-07-16 EP EP03791590.7A patent/EP1532521B1/en not_active Expired - Lifetime
- 2003-08-08 TW TW092121785A patent/TWI315488B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185668B1 (en) * | 1995-12-21 | 2001-02-06 | Intergraph Corporation | Method and apparatus for speculative execution of instructions |
US20010010073A1 (en) * | 1998-09-30 | 2001-07-26 | Intel Corporation. | Non-stalling circular counterflow pipeline processor with reorder buffer |
CN1346462A (zh) * | 1998-12-31 | 2002-04-24 | 英特尔公司 | 用于改进的判定预测的方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2004021174A2 (en) | 2004-03-11 |
EP1532521A2 (en) | 2005-05-25 |
WO2004021174A3 (en) | 2004-06-17 |
US6950925B1 (en) | 2005-09-27 |
EP1532521B1 (en) | 2014-03-12 |
AU2003252081A1 (en) | 2004-03-19 |
JP4170292B2 (ja) | 2008-10-22 |
KR20050037596A (ko) | 2005-04-22 |
TWI315488B (en) | 2009-10-01 |
CN1678986A (zh) | 2005-10-05 |
JP2005537567A (ja) | 2005-12-08 |
KR100981168B1 (ko) | 2010-09-10 |
TW200405201A (en) | 2004-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1320452C (zh) | 用于支持数据推测式执行的微处理器与方法 | |
CN1310136C (zh) | 使用猜测来源操作数以绕过装载/储存操作的系统与方法 | |
CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
EP1226498B1 (en) | Fast multithreading for closely coupled multiprocessors | |
CN1742257B (zh) | 用于数据预测的系统及方法 | |
CN100424635C (zh) | 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法 | |
CN103140828B (zh) | 基于硬件限制利用可调事务尺寸来动态优化代码的装置、方法和系统 | |
CN101458636B (zh) | 用于硬件锁省略(hle)的后期锁获取机制的装置和方法 | |
CN100520712C (zh) | 用来实施具有追踪缓存的微处理器的方法及系统 | |
CN1625733A (zh) | 将装载操作的猜测结果与寄存器值相连接的系统与方法 | |
CN103119556A (zh) | 用于提供在原子区内的条件提交的决策机制的装置、方法和系统 | |
CN1478228A (zh) | 利用重新调度的重放队列中断处理器中的重放依赖关系循环 | |
US11068271B2 (en) | Zero cycle move using free list counts | |
CN1797348A (zh) | 预测处理器中的竞争 | |
CN100432924C (zh) | 用于在数据推测微处理器中操作重放的系统及方法 | |
CN107003896A (zh) | 具有共享事务处理资源的装置和数据处理方法 | |
CN1806226A (zh) | 具有重放机制的加载存储单元 | |
US7197630B1 (en) | Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
CN1784654A (zh) | 识别微处理器中的数据推测操作的推测指针 | |
US9043773B2 (en) | Identification and management of unsafe optimizations | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
CN101533363B (zh) | 引退前-后混合硬件锁定省略(hle)方案 |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20070606 |