提交时执行的状态更新指令、装置、方法和系统的制作方法

文档序号:6361838阅读:107来源:国知局
专利名称:提交时执行的状态更新指令、装置、方法和系统的制作方法
提交时执行的状态更新指令、装置、方法和系统背景领域各实施例涉及处理器和其它指令处理装置。具体地说,各实施例涉及用于更新处理器和其它指令处理装置的内部状态的方法、装置、系统或指令。背景信息某些处理器使用流水线化的执行以使执行阶段重叠,这允许多个指令在同一时间处于不同的执行阶段,这有助于改善性能。所取得的并行量往往随着流水线深度的增加而增加。随着时间的流逝,某些处理器在尝试改善性能时已引入更深的流水线操作。当指令流为已知时,流水线操作往往更有效,由此流水线可保持满的,并且对后面指令的执行不需要等待流水线内那些指令的结果。为了帮助流水线更满,流水线化的处理器已使用动态预测(例如,分支预测)和推测性执行。动态预测可用来预测指令流中的指令流向,并将预测到的路径的指令注入到流水线中。分支预测可涉及在明确已知某分支的正确方向之前预测该分支的方向,例如预测条件性分支指令的方向,例如,处理器可基于过往历史就条件性分支指令最可能取什么方向作出基于经验的推测。然后,没等处理器知晓预测的分支方向实际是否正确,处理器可以基于该预测的分支方向是正确的假设,开始推测性地执行指令。动态预测(例如,预测到的分支方向)将稍后证实是正确的或不正确的。如果预测到的分支方向稍后证实是正确的,则可利用该推测性执行的结果。在这种情形下,在等待知晓分支方向的正确方向时,推测性执行为那些原本会处于休眠或至少不被充分利用的流水线阶段提供了更大的利用价值。另一方面,如果预测到的分支方向证实是不正确的或者分支方向被误预测,那么一般应当将位于条件性分支指令之后的推测性执行丢弃,并且一般应当通过在控制流中跳转或沿分支返回到被误预测的条件性分支而使所述执行“倒退”。然后,可以用当前明确知晓的正确分支方向以非推测性的方式恢复执行。附图简述通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:

图1是存储在机器可读存储介质上的提交时执行的状态更新指令的实施例的方框图。图2是具有指令执行调度器队列以便发布提交时执行的状态更新指令的处理器或其它指令处理装置的实施例的方框图。图3是发布提交时执行的状态更新指令的方法的实施例的方框流程图。图4是具有乱序指令执行调度器队列的实施例以便发布提交时执行的状态更新指令的乱序处理器或其它指令处理装置的实施例的方框图。图5是具有乱序指令执行调度器队列的具体示例性实施例以便发布提交时执行的状态更新指令的乱序处理器或其它指令处理装置的具体示例性实施例的方框图。图6是具有提交时状态更新逻辑的具体示例性实施例以便发布提交时执行的状态更新指令的保留站(reservation station)的具体示例性实施例的方框图。图7是具有本文披露的处理器的实施例的适用的计算机系统的示例性实施例的方框图。详细描述在下面的描述中,阐述了许多具体细节,例如特定处理器组件和配置、特定调度逻辑,以及类似物。然而,应当理解,本发明的实施例可在没有这些具体细节的情况下实践。在其他实例中,公知的电路、结构和技术未被详细示出,以免混淆对本描述的理解。处理器内的推测性执行所带来的挑战之一与更新或改变处理器的内部状态相关。处理器通常具有大量不应当被推测性改变的内部状态。有些处理器具有几百或几千数量级的内部状态位。内部状态可包括系统标志、控制寄存器中的位,以及类似物。在处理器操作期间,在处理器执行代码的同时,例如可由处理器的微代码和/或由软件/BIOS通过微代码提供的接口,来修改该内部状态。然而,许多或大多数这样的内部状态一般不应当被推测性地修改,例如在推测性执行期间。在一些处理器中,可重新命名被最频繁修改的处理器状态(例如,在乱序处理器的情形下,通过分配和重新命名给重排序缓冲器),这有助于保护这种状态避受推测性改变。然而,由于在一些处理器中存在大量的存储器状态,所以所有这些处理器状态通常不被重命名,通过重命名对处理器状态的相应保护就无法实现。本发明的实施例涉及状态更新指令,该状态更新指令用于使处理器或控制处理器在使用推测性执行的流水线化的处理器中非推测性地更新处理器的内部状态(例如,非重命名的处理器状态)。在各实施例中,状态更新指令可使处理器或控制处理器在提交时更新内部状态(例如,在引退时或刚好在引退之后、在结束时或刚好在结束之后、在动态预测判定之后、在接收到分支判定信号之后,等等)。在提交时执行状态更新指令有助于不对内部状态进行更新直到已知所述更新是非推测性之后。一些实施例适用于乱序处理器,而其它实施例适用于顺序处理器。其它实施例涉及响应于状态更新指令而执行的方法。又一些其它实施例涉及用于处理该状态更新指令的装置。图1是存储在机器可读存储介质100上的提交时执行的状态更新指令102的一个实施例的方框图。在各实施例中,机器可读存储介质可以是存储器(例如,只读存储器(ROM)、指令存储、指令高速缓存、指令队列、指令缓存器、盘(例如,磁盘或光盘),这里仅给出了几个示例。提交时执行的状态更新指令可被提供给机器、由机器访问或由机器处理,所述机器例如是处理器或其它指令执行装置。机器可识别出状态更新指令是提交时执行类型的状态更新指令。例如,机器可识别出状态更新指令的一个或多个位表示它是提交时执行类型的指令。有多种不同的方式来达成这个目的。达成这个目的的适宜方式的例子包括但不限于,为提交时执行的状态更新指令提供单独的操作码,在该操作码中提供一个或多个位的标签,以指定由操作码标识的状态更新指令是提交时执行的种类,以及在指令的另一字段(例如,原本不用于该指令的字段)中提供一个或多个位的标签,以指定该指令是提交时执行的指令,这里仅给出了几个示例。提交时执行的状态更新指令,如果或当由机器处理时,可致使或导致机器等待调度/发布和执行状态更新指令,直到状态更新指令是下一个要提交的指令或者当对该状态更新指令的执行是非推测性的时候。然后,机器可调度/发布、执行和提交状态更新指令。当状态更新指令执行或在一些情形下提交时,可更新机器的内部状态。提交时执行的状态更新指令可用于控制处理器或其它指令处理装置,以使该状态更新指令的执行发生在一特定的流水线阶段,即在提交时。在一特定示例性实施例中,提交时执行的状态更新指令可以是提交时执行的控制寄存器写指令,该指令用来写或修改控制寄存器,其中控制寄存器代表一例内部状态的类型。控制寄存器的内容可表征系统标志、用于地址转换的分页表单元、分割数据、存储器区域类型、处理器模式(例如,保护或高速缓存),或类似内容。在一个方面,控制寄存器可以不被配置成通过寄存器重命名而被重命名,这可使控制寄存器或内部状态在推测性执行期间更易受到修改或更少地被保护免于修改。在一个或多个实施例中,提交时执行的状态更新指令是微指令。其它实施例不限于受微代码控制的处理器。较为有利地,提交时执行的状态更新指令可有助于避免内部状态的推测性更新。由于提交时执行的状态更新指令使得机器等待调度/发布和执行该状态更新指令,直到该状态更新指令是下一个要提交的指令,因此该状态更新指令将不会造成机器的内部状态更新,直到已知对指令的执行为非推测性之后。此外,使状态更新指令本身成为提交时执行的指令是避免推测性更新内部状态的一种直接和有效的方式。根本地,正是状态更新指令不应当推测性地发生以避免内部状态的推测性修改,而不是条件性微分支指令或其它类型的指令。图2是具有指令执行调度器逻辑212以调度提交时执行的状态更新指令202的处理器或其它指令处理装置204的实施例的方框图。处理器或指令处理装置可以是多种类型的,例如各种复杂指令集计算(CISC)类型、各种精简指令集计算(RISC)类型、各种超长指令字(VLIW)类型以及它们的混合形式,这里仅给出了几个示例。处理器或其它指令处理装置可顺序或乱序地执行指令。在一个或多个实施例中,处理器可以是通用处理器,例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的通用处理器中的一个,尽管这不是必需的。可从英特尔公司获得的合适的通用处理器的几个代表性例子包括但不限于,Intel Atom 处理器、Intel Core 处理器、Intel Core 2 处理器、Intel Pentium 处理器以及Intel Celeron :处理器。替代地,处理器可以是专用处理器。合适的专用处理器的代表性例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、以及数字信号处理器(DSP),这里仅给出几个示例。这些处理器也可基于CISC、RISC、VLIW、其混合、或其他类型的处理器。在又一些实施例中,处理器或指令处理装置可代表控制器(例如,微控制器),或能够处理微代码或微指令的其他类型的逻辑电路。再次参见图2,指令执行调度器逻辑212用于调度或发布指令以供执行。在使用期间,指令执行调度器逻辑212可接收提交时执行的状态更新指令202。如前面提到的,提交时执行的状态更新指令可具有表示该指令是提交时执行的状态更新指令的标签或其它指示。在一个方面,这种标签或其它指示可设在前端(例如,通过指令获取/定序器逻辑)。指令获取/定序器逻辑可包括这样的逻辑,该逻辑规定要在使用推测性执行的处理器中非推测性地执行单个特定的指令。在本文披露的实施例中,所述规定(例如,通过指令字段的标签或一个或多个位)被包含在状态更新指令上。指令执行调度器包括可选的指令队列208。可选的指令队列可用来存储指令210,而指令210包括提交时执行的状态更新指令202。在一个或多个实施例中,可选的指令队列也可存储与指令关联的操作数或者其它数据或参数。指令调度器逻辑用于调度/发布指令队列中的指令以供执行。在一实施例中,指令调度器逻辑可顺序调度指令,而在另一实施例中,指令调度器逻辑可乱序调度指令。指令调度器逻辑包括提交时状态更新逻辑214。提交时状态更新逻辑等待调度/发布提交时执行的状态更新指令以供执行,直到该状态更新指令是下一个要提交的指令。早于提交时执行的状态更新指令的较老指令可在允许调度/发布和执行提交时执行的状态更新指令之前执行和提交。在一个或多个实施例中,指令执行调度器逻辑可从另一组件,诸如重排序缓冲器、提交逻辑或分支判定逻辑(例如,分支判定信号)等,接收有关下一个提交指令的指示和/或有关执行是非推测性的指示。当状态更新指令是下一个要提交的指令和/或状态更新指令是非推测性的时,指令执行调度器逻辑可调度/发布状态更新指令以供执行216。执行逻辑220与指令执行调度器逻辑耦合。执行逻辑可接收所发布的状态更新指令。执行逻辑可包括诸如硬件(例如,电路)、软件、固件或其一些组合的逻辑,用以执行状态更新指令。在一个或多个实施例中,执行逻辑至少包括用以执行状态更新指令的一些电路。例如,所述电路可包括对状态更新指令或微指令作出响应的特定/专门电路。在一个或多个实施例中,提交时执行的状态更新指令可在处理器或其它指令处理装置的乱序部分中被阻止调度/发布以及执行。在一个或多个实施例中,指令执行调度器逻辑可包含在处理器或其它指令处理装置的乱序部分中。图3是调度提交时执行的状态更新指令的方法370的实施例的方框流程图。该方法包括在方框371接收提交时执行的状态更新指令。此方法包括在方框372等待调度提交时执行的状态更新指令以供执行,直到提交时执行的状态更新指令是下一个要提交的指令。此方法在方框373包括:当提交时执行的状态更新指令是下一个要提交的指令时,调度该指令以供执行。图4是具有乱序指令执行调度器队列406实施例的乱序处理器或其它指令处理装置404的实施例的方框图。处理器或其它指令处理装置可以是多种类型的,例如各种复杂指令集计算(CISC)类型、各种精简指令集计算(RISC)类型、各种超长指令字(VLIW)类型以及它们的混合形式,这里仅给出了几个示例。在一个或多个实施例中,处理器可以是通用处理器,例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的通用处理器中的一个,尽管这不是必需的。可从英特尔公司获得的合用的通用处理器的几个代表性例子包括但不限于,Intel Atom 处理器、Intel Core 处理器、Inte〗 Core 2 处理器、Intel Pentium :处理器以及Tntel Celeron :处理器。替代地,处理器可 以是专用处理器。合适的专用处理器的代表性例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、以及数字信号处理器(DSP),这里仅给出几个示例。这些处理器也可基于CISC、RISC、VLIW、其混合、或其他类型的处理器。在又一些实施例中,处理器或其它指令处理装置可代表控制器(例如,微控制器),或能够处理微代码或微指令的其他类型的逻辑电路。处理器是可乱序执行指令的乱序处理器。在一些情形下,后续指令可依赖于先前指令的执行。乱序执行指令的能力允许处理器用流水线内不依赖于先前指令执行的指令来填满流水线的各个部分,而那些依赖于先前指令执行的指令则等待其所依赖的指令完成。这有助于提高处理器的性能。然而,处理器可以按原始程序顺序将处理器的架构状态呈现给软件或用户。为了达成这个,乱序处理器可包括这样的逻辑(例如,重排序缓冲器),该逻辑允许保持因执行较年轻指令而获得的状态,直到对较老指令的执行为可行之后,其中较年轻指令在较老指令之前已经执行。当对较老指令的执行变得可行时,引退逻辑或提交逻辑可通过以原始指令顺序更新状态,来(例如,从重排序缓冲器)控制对处理器架构状态的更新。从可视状态至重排序缓冲器条目的映射可通过重命名来达成。再次参见图4,乱序处理器或其它指令处理装置包括可顺序处理指令的顺序前端部分424。无限制地,该前端可包括一个或多个组件,例如指令获取/定序器逻辑(例如,未示出的指令获取/定序器逻辑或电路)、指令解码逻辑(例如,未示出的解码器或解码电路)以及指令分派逻辑(例如,未示出的指令分派逻辑或电路),尽管本发明的范围不限于前端中任何已知的组件。在一个或多个实施例中,前端部分内的逻辑(例如,获取/定序器逻辑)可用标签标记或以其它方式规定一状态更新指令是提交时执行的种类。乱序处理器或装置还包括与前端部分耦合的乱序后端部分426,用以接收包括提交时执行的状态更新指令402的指令。乱序后端可对指令作重定序并乱序执行这些指令。如图所示,乱序后端可包括乱序指令执行调度器队列406的实施例。乱序指令执行调度器队列也被称为动态指令执行调度器队列。乱序后端还可包括指令重定序逻辑(例如,未示出的重排序缓冲器)以及指令执行逻辑(例如,未示出的执行逻辑)。指令执行逻辑可乱序执行指令并提供执行结果430。乱序指令执行调度器队列的图示实施例包括指令队列408、乱序指令调度器逻辑428以及提交时状态更新逻辑414。指令队列可如前所述那样。根据一个或多个实施例,提交时状态更新逻辑可使乱序指令执行调度器队列等待调度提交时执行的状态更新指令以供执行,直到该状态更新指令是下一个要提交的指令。乱序指令调度器逻辑可乱序调度指令队列中的各指令。在一个方面,乱序指令调度器逻辑可包括这样的逻辑,该逻辑用于在调度指令以供执行之前确保、检查或评估大量因素。这些因素的代表例可能包括,指令的输入(例如,源操作数)是否依赖于迄今为止未被执行的指令的执行结果、指令的输入是否需要从存储器加载以及指令是否需要等待繁忙执行逻辑或其它资源变得可用。较为有利地,由于指令执行调度器队列406是乱序指令执行调度器队列,其位于处理器的乱序部分426中,并具有乱序指令调度器逻辑,所以乱序指令执行调度器队列可在调度/发布提交时执行的状态更新指令402以供执行之前调度/发布一个或多个较年轻的指令410以供执行,而提交时执行的状态更新指令402被阻止调度/发布和执行,直到它成为下一个要提交的指令。为清楚起见,较年轻的指令410比提交时执行的状态更新指令402年轻,这意味着按原始程序的顺序,较年轻的指令在序时上发生在提交时执行的状态更新指令之后(例如,在顺序前端中,较年轻的指令应当在提交时执行的状态更新指令之后被获取和解码)。
较为有利地,在被阻止的提交时执行的状态更新指令附近允许发布和执行较年轻的指令,可有助于避免执行中的泡沫,而泡沫往往会降低性能。作为替换,如果提交时执行的状态更新指令在处理器的顺序前端部分内被阻止执行,那么比提交时执行的状态更新指令更年轻的所有微指令一般都将被阻止而在提交时执行的状态更新指令之后发布和执行。较年轻的微指令无法绕过被阻止的提交时执行的状态更新指令。在允许发布和执行提交时执行的状态更新指令和任何较年轻的指令之前,当比提交时执行的状态更新指令更老的所有指令经过流水线时,提交时执行的状态更新指令和所有较年轻指令会被阻止,并可能遇到等待时间(例如,由于加载未命中,等等)。这可能造成执行中的泡沫,所述泡沫往往会降低性能。再次参见图4,乱序处理器或装置还包括顺序提交逻辑432,其与乱序后端部分426耦合,用以接收执行结果430。顺序提交逻辑可对这些执行结果重新排序,以使它们成为按顺序的,随后顺序提交执行结果。在一个方面,提交逻辑可不提交指令,直到按原始程序顺序位于其之前的所有较老指令已被提交。提交指令可包括将与这些指令关联的执行结果顺序地写至(433)处理器的寄存器文件或其它程序员可见的架构状态434。当指令结果被写至处理器时,称该指令已提交。在之前讨论的状态更新指令的情形下,架构状态可包括前面讨论的内部状态(例如,标志、控制寄存器,等等)。在一个方面,在实际提交之前,当状态更新指令执行时,内部状态可被更新。例如,对于非重命名的内部状态就是这种情形。处理器可在提交时更新重命名的处理器状态,而在执行时更新非重命名的处理器状态。图5是具有乱序指令执行调度器队列506的具体示例性实施例以发布提交时执行的状态更新指令502的乱序处理器或其它指令处理装置504的具体示例性实施例的方框图。处理器或其它指令处理装置可以是前面提到的各种类型中的任一种(例如,CISC、RISC、通用、专用,等等)。处理器或其它装置包括发布重排序缓冲器540。在一个或多个实施例中,发布重排序缓冲器可以是耦合在顺序前端和执行逻辑之间的缓冲器。指令可顺序输入该发布重排序缓冲器,并且该发布重排序缓冲器可存储或缓存这些指令以及与这些指令相关的信息,例如指令状态、操作数以及程序顺序或序列中的指令原始地点或位置。指令可在发布重排序缓冲器中等待,直到执行指令所需的数据(例如,输入操作数)可用并且执行指令所需的资源可用为止。处理器或其它装置还包括乱序指令执行调度器队列,该乱序指令执行调度器队列可用以接收提交时执行的状态更新指令502。如图所示,在一个或多个实施例中,可选择地,可从处理器的分配器逻辑542接收提交时执行的状态更新指令,其中分配器逻辑542可与乱序指令执行调度器队列相耦合。乱序指令执行调度器队列包括指令队列508,如前所述,该指令队列508可用于存储包含提交时执行的状态更新指令的指令。乱序指令执行调度器队列还包括乱序指令调度器逻辑512,如前所述,该乱序指令调度器逻辑512可乱序调度指令以供潜在地乱序执行。乱序指令执行调度器队列还包括提交时状态更新逻辑514,如前所述,在一个或多个实施例中,该提交时状态更新逻辑514可等待调度状态更新指令以供执行,直到该状态更新指令是下一个要提交的指令。如图所示,乱序指令调度器逻辑可接收有关下一个要提交的指令的指示544。
处理器或其它装置还包括乱序执行逻辑520,其与乱序指令执行调度器队列耦合。该执行逻辑可从指令执行调度器队列中接收被发布或调度的指令,当被指示为下一个要提交的指令时,被发布或调度的指令包括提交时执行的状态更新指令。在至少一些电路的实施例中,乱序执行逻辑可包括用来在这种情形下乱序执行指令的逻辑。处理器或其它装置还包括顺序提交逻辑532,该顺序提交逻辑532与乱序执行逻辑耦合,用以接收执行结果。如图所示,在一个或多个实施例中,提交逻辑可包括结束重排序缓冲器546。结束重排序缓冲器546和发布重排序缓冲器540可以是相同的缓冲器或不同的缓冲器。在一个或多个实施例中,发布重排序缓冲器和结束重排序缓冲器可以是或可以包括在某些乱序处理器中利用的传统或基本传统的重排序缓冲器(R0B)。在另一实施例中,重排序缓冲器可由结束队列代替。结束重排序缓冲器可缓存指令和执行结果,直到它们准备好被顺序提交。重排序缓冲器可保持跟踪已被执行的指令并可协助顺序引退或提交被执行的指令。结束重排序缓冲器可具有这样的逻辑,其用以将来自处理器乱序部分的指令及其相关的结果数据放置成与指令在处理器顺序前端部分中的同一顺序。当指令提交时,它可从重排序缓冲器中读出结果数据并将该结果数据写至处理器的架构状态。在前面讨论的提交时执行的状态更新指令的情形下,架构状态可包括前面讨论的内部状态(例如,标志、控制寄存器,等等)。在一个方面,在实际提交之前,当状态更新指令执行时,内部状态可被更新。例如,对于非重命名的内部状态就是这种情形。处理器可在提交时更新重命名的处理器状态,而在执行时更新非重命名的处理器状态。如图所示,在一个或多个实施例中,已跟踪正在引退的指令的结束重排序缓冲器可将有关下一个要引退的指令的引退指针或其它指示544提供给乱序指令执行调度器队列。下一个要引退的指令是一例下一个要提交的指令的指示。有关指令已准备好提交的指示的其它例子可包括结束信号,或者可基于动态预测判定(例如,分支判定信号),这里给出的是几个示例。还要澄清的是引退的概念,尽管在这里是针对乱序处理器示出的,但其不限于乱序处理器。当提交时执行的指令是下一个要提交的指令时,结束重排序缓冲器可向乱序指令执行调度器队列提供指示,该指示表示提交时执行的状态更新指令是下一个要提交的指令。提交时执行的状态更新指令可随后发布、执行、提交和更新内部状态536。当乱序处理器推测性地执行指令时,推测性执行的指令及其执行结果可连同非推测性执行的指令一起被存储在重排序缓冲器中。然而,重排序缓冲器可保持跟踪推测性执行的指令及其执行结果,并防止该推测性执行的指令及其执行结果被提交,直到确定了该推测性执行是被确认的/所需要的执行(例如,条件性分支指令的方向被确认为已被正确地预测)。随后,当前被确认的/所需要的指令及其执行结果可被提交并被写至架构状态。替代地,如果发现推测性执行是错误的并且不是需要的(例如,条件性分支指令的方向被错误预测),则推测性执行的指令及其执行结果可以不提交并且可以不写至架构状态(例如,可将它们从重排序缓冲器中删除)。较为有利地,在该实施例中,通过制止更新或改变处理器内部状态直到重排序缓冲器指示提交时执行的状态更新指令是下一个要提交的指令之后(这包括确定提交时执行的状态更新指令不是推测性的),可防止或至少减少内部状态的推测性更新。图6是保留站606的具体示例性实施例的方框图,其中保留站606具有提交时状态更新逻辑614的具体示例性实施例,用以发布提交时执行的状态更新指令602保留。保留站代表乱序指令执行调度器队列或指令调度逻辑的一个示例性实施例。除了下面描述的或有关提交时状态更新逻辑的特征,或者与保留站交互的提交时执行的状态更新指令保留以外,保留站可具有其它传统或基本传统的特征。保留站可位于处理器的执行逻辑的中央或由处理器的执行逻辑共享,或者可为不同组的执行逻辑提供不同的保留站。保留站具有多个条目650-0至650-n,其中数n是大于2的整数,例如从大约10至大约100。每个条目可具有队列608-0至608-n,以便使指令排队以及在一些情形下使与指令相关的各色各样的保留站数据(例如,与指令相关的操作数)排队。在一个或多个实施例中,保留站可用于侦听或监听在其上将数据写至寄存器的结果总线,并且保留站可用于将来自结果总线的数据存储在队列中。这有助于避免接下来需要访问来自寄存器的数据。保留站也具有多个物理目的地(pdst)指针存储单元652-0至652_n。这些单元可用于存储指向重排序缓冲器内物理目的地或条目的指针,而位于重排序缓冲器内物理目的地或条目中的数据是针对相应指令的。每个指令和每个条目可具有物理目的地(Pdst)指针。这些物理目的地(pdst)指针中的每一个可代表存储在保留站内相应条目处的指令的指示。保留站还具有提交时状态更新逻辑614。提交时状态更新逻辑可用于阻止调度被标签标记为非推测性执行和/或提交时执行的状态更新指令,直到该状态更新指令是下一个要引退或提交的。提交时状态更新逻辑包括这样的逻辑,该逻辑将有关状态更新指令应当非推测性执行和/或提交时执行的指示与提交时状态更新指令相关联,并与该提交时状态更新指令在指令序列内的时序(age-order )相关联。例如,在图示实施例中,提交时状态更新逻辑包括由一个或多个提交位组成的多个组654-0至654-n,由一个或多个提交位组成的这些组中的每一组对应于保留站内的一个不同条目。提交时状态更新逻辑还包括位值调整逻辑656,该位值调整逻辑656与多组提交位中的每一组相耦合。位值调整逻辑可响应于提交时状态更新指令602,将保留站内与提交时执行的状态更新指令对应的保留条目处(例如,在提交时执行的状态更新指令将被列入队列的条目处)的一组提交位的值调整至一给定值。作为示例,可响应于提交时状态更新指令,将提交位设置成值I (根据一种协议)或清为值0 (根据另一协议)。在一个或多个实施例中,提交时状态更新逻辑可包括解码器,用于对提交时状态更新指令的操作码进行解码,以确定该指令是提交时类型的指令,然后相应地调整这些位。解码器可使用各种不同类型的机制来实现。合适类型机制的示例包括,但不限于,微代码只读存储器(ROM)、查找表、硬件实现方案、可编程逻辑阵列(PLA),及类似物。解码器可实现为硬件(例如电路)、固件、软件或其组合。不要求通过微代码来提供提交时执行的提示,而是可以通过另一字段来提供。提交时状态更新逻辑还包括确定逻辑658。在一个方面,该确定逻辑可包括多组确定逻辑658-0至658-n,其中每一组对应于指令队列中的不同条目。多组确定逻辑中的每一组耦合于物理目的地(Pdst)指针存储单元中一个不同的相应单元,用以接收不同的物理目的地(pdst)指针。多组确定逻辑中的每一组还耦合于例如重排序缓冲器,用以接收引退指针644(例如,下一个要引退的尾指针),这代表下一个要引退或要提交的指令的指示的一个实施例。多组确定逻辑中的每一组还耦合于由一个或多个提交位组成的多个组中一个不同的相应组,用以接收多组提交位中一个不同的相应组。确定逻辑包括时序比较器逻辑,时序比较器逻辑包括这样的逻辑,该逻辑通过提交位654用表示状态更新指令要非推测性地执行和/或在提交时执行的指示,来定性时序比较结果(例如,引退指针644与pdst652之间的比较结果)。当指令队列中与提交时状态更新指令对应的条目处的这组一个或多个提交位具有给定值(即,对于提交时执行的状态更新指令,其会具有的值)时,确定逻辑用于确定下一个要提交的指令的指示(例如,引退指针)是否与指令队列中对应于提交时状态更新指令的条目处的该提交时状态更新指令的指示(例如,在提交时状态更新指令被列入队列的条目处的物理目的地(pdst)指针)相匹配。例如,提交时执行的状态更新指令被存储或拟被存储的保留站内的一个条目处的一组确定逻辑可接收针对同一条目的一个或多个提交位、针对同一条目的物理目的地(Pdst)指针以及提交指针,并可将该物理目的地(Pdst)指针与引退指针进行比较。保留或调度逻辑可包括这样的逻辑,该逻辑阻止调度提交时状态更新指令以供执行,直到该微指令是下一个要提交(例如引退)的。如果物理目的地(Pdst)指针不与引退指针匹配或相等,则提交时执行的状态更新指令可被推断为不是下一个要引退或提交的指令,并且确定逻辑可继续等待调度或发布提交时执行的状态更新指令。例如,确定逻辑可向乱序调度逻辑612提供阻断信号。这意味着提交时执行的状态更新指令尚未准备好提交。在提交时执行的状态更新指令前面的较老指令需要在提交时执行的状态更新指令被允许提交之前引退或提交。较老的指令将被引退,直到提交时执行的状态更新指令是保留站内的最老指令并且准备好引退或提交的时候。在某一时刻,如果或当物理目的地(Pdst)指针与引退指针匹配或相等时,则提交时执行的状态更新指令可被推断或确定为是下一个要提交的指令,并且确定逻辑可确定调度或发布提交时执行的状态更新指令是可能的。例如,确定逻辑可将解除阻断信号或者不是阻断信号的信号提供给乱序调度逻辑。在一个或多个实施例中,多组确定逻辑中的每一组可包括比较相等类型的逻辑,尽管这不是必需的。比较相等逻辑可通过例如异或型逻辑来实现。替代地,也可使用适于确定引退指针是否与物理目的地(Pdst)指针匹配或相等的其它类型的确定或比较逻辑。乱序调度逻辑可从确定逻辑接收阻断或解除阻断信号。当与提交时执行的状态更新指令对应的条目的一个或多个提交位具有将为该提交时执行的状态更新指令而调整到的给定值时,当阻断信号被断言时,乱序调度逻辑可以不调度提交时执行的状态更新指令,但当解除阻断信号被断言时,则可能调度提交时执行的状态更新指令,这依赖于乱序指令调度中通常考虑的其它因素(例如,资源和/或数据可用性)。在一个或多个实施例中,乱序调度逻辑可包括阻断逻辑、准备逻辑和拾取逻辑,除了必须将阻断/解除阻断信号或由于提交时执行的状态更新指令造成的其它方面考虑在内以外,这些逻辑可以是传统的或基本传统的。这只是一个示例性实施例。可构想其它实施例,这些实施例具有这样的逻辑,该逻辑以不同的方式阻断对状态更新指令的执行,它们使用除引退时以外的不同信号(例如,分支判定信号或其它提交信号)等等。其它又一些实施例涉及具有如本文披露的一个或多个处理器和/或执行如本文披露的方法的系统(例如,计算机系统或其它电子设备)。图12是合适的计算机系统或电子设备1286的一示例性实施例的方框图。
该计算机系统包括处理器1200。在一个或多个实施例中,处理器可包括微代码化名的参数传递逻辑和/或微代码化名的参数保存和恢复逻辑,如本文其它位置公开的。处理器可具有一个或多个核。在多核处理器的情形下,多个核可整体地集成在单个集成电路(IC)芯片或管芯上。在一个方面,每个核可包括至少一个执行单元和至少一个高速缓存。处理器还可包括一个或多个共享的高速缓存。在一特定实施例中,处理器可包括集成的图形控制器、集成的视频控制器以及集成的存储器控制器,它们各自被整体地集成在通用微处理器的单个管芯上,尽管这不是必需的。替代地,这些组件中的一些或全部可离开处理器而设置。例如,可从处理器省去集成的存储器控制器,并且芯片组可具有存储器控制器中枢(MCH)。处理器经由总线(例如,前侧总线)或其他互连1287耦合到芯片组1288。该互连可用于经由芯片组在处理器和系统中的其他组件之间传送数据信号。存储器1289被耦合至芯片组。在各种实施例中,存储器可包括随机存取存储器(RAM)0动态RAM (DRAM)是在一些但并非所有计算机系统中使用的一种示例性类型的RAM。组件互连1290也被耦合至芯片组。在一个或多个实施例中,组件互连可包括一个或多个外围组件互连快速(PCIe)接口。该组件互连可允许其他组件通过该芯片组耦合到系统的其余部分。此类组件的一个示例是图形芯片或其他图形设备,尽管这是可选的且不是必须的。数据存储1291被耦合至芯片组。在各种实施例中,数据存储可包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、动态随机存取存储器(DRAM),或类似器件,或其组合。网络控制器1293也被耦合至芯片组。网络控制器可允许系统与网络耦合。串行扩展端口 1292也被耦合至芯片组。在一个或多个实施例中,串行扩展端口可包括一个或多个通用串行总线(USB)端口。串行扩展端口可允许各种其他类型的输入/输出设备通过该芯片组耦合到系统的其余部分。可任选地与芯片组耦合的其他组件的几个示例性例子包括,但不限于,音频控制器、无线收发机以及用户输入设备(例如键盘、鼠标)。在一个或多个实施例中,计算机系统可执行可从华盛顿州雷蒙德市的微软公司购得的一个版本的W丨NDOWS 操作系统。替代地,可使用其他操作系统,诸如UNIX、Linux或嵌入式系统。这仅仅是合适的计算机系统的一个特定示例。对于膝上计算机、台式机、手持PC、个人数字助理、工程师工作站、服务器、网络设备、网络集线器、交换器、视频游戏设备、机顶盒以及具有处理器的各种其它电子设备,其它业内已知的系统设计和配置也是适用的。在一些情形下,系统可具有多个处理器。在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合的”可表示两个或更多个要素直接物理或电接触。然而,“耦合的”也可表示两个或更多个要素并未彼此直接接触,但是仍然彼此协作、彼此相互作用。例如,指令执行调度器队列可通过一个或多个介入组件与执行逻辑耦合。在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,在没有这些具体细节中的一些的情况下,也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由前面提供的具体示例来确定的,而是仅由所附权利要求来确定的。在其它实例中,以方框图的形式示出了或者没有细节示出公知的电路、结构、设备和操作,以避免对说明书的理解变得晦涩。在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复,以指示可任选地具有相似特性的对应或相似的要素。已描述了各种操作和方法。已经以流程图方式以基础方式对一些方法进行了描述,但操作可选择地被添加至这些方法和/或从这些方法中移去。另外,尽管流程图示出根据示例性实施例的操作的特定顺序,但要理解该特定顺序是示例性的。替代实施例可选择地以不同顺序执行操作、合并某些操作、重叠某些操作,等等。可对这些方法作出和构想出许多修正和调整。某些操作可由硬件组件执行,或者可体现在机器可执行或电路可执行的指令中,它们可用于使得或至少导致用执行这些操作的指令编程的电路或硬件。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。操作也可任选地由硬件和软件的组合来执行。执行逻辑和/或处理器可包括专门或特定电路,或者其它逻辑,它们对指令或微指令或者衍生自机器指令的一个或多个控制信号作出响应,以执行某些操作。一个或多个实施例包括制造物品(例如,计算机程序成品),所述制造品包括机器可访问的和/或机器可读的介质。该介质可包括这样的机制,该机制提供(例如,存储或传输)机器可访问和/或可读形式的信息。机器可访问和/或机器可读介质可提供或已经存储一个或多个或一系列指令和/或数据结构,它们如果被机器执行则使或导致机器执行,和/或使机器即将执行本文公开的附图中所示的操作或方法或技术的一个或多个部分。在一个实施例中,机器可读介质可包括有形的、非短暂的机器可读存储介质。例如,有形的、非短暂的机器可读存储介质可包括软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM (PR0M)、可擦除可编程ROM (EPR0M)、电可擦除可编程ROM(EEPR0M)、随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM (DRAM)、闪存、相变存储器或它们的组合。有形介质可包括一个或多个固态或有形物理材料,例如半导体材料、相变材料、磁性材料等等。在另一实施例中,机器可读介质可包括无形的、短暂的机器可读通信介质。例如,短暂的机器可读通信介质可包括电、光、声或其它形式的传播信号,例如载波、红外信号、数
字信号等。适宜的机器的例子包括但不限于,计算机系统、台式机、膝上计算机、笔记本电脑、上网本、桌面一体机、移动互联网设备(MID)、网络设备、路由器、交换机、蜂窝电话、媒体播放机以及具有一个或多个处理器或其它指令执行器件的其它电子设备。这类电子设备一般包括与一个或多个其它组件耦合的一个或多个处理器,所述一个或多个其它组件例如是一个或多个存储设备(非短暂的机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)和/或网络连接。处理器和其它组件的耦合一般是通过一个或多个总线和桥(也称总线控制器)达成的。因此,给定电子设备的存储设备可存储代码和/或数据以供在该电子设备的一个或多个处理器上执行。替代地,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。还应理解,贯穿本说明书对例如“一个实施例”、“一实施例”或“一个或多个实施例”的引述意味着一特定特征可包括在本发明的实施例的实践中。类似地应当理解,在本说明书中,各个特征有时被一起编组在单个实施例、附图或其描述中,以使本公开变得流畅并帮助理解各个创新性方面。然而,该公开方法不应被解释成反映了本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如下面权利要求反映的,各创新性方面可存在于比单个公开的实施例的全部特征更少的特征。因此,说明书之后所附的权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。
权利要求
1.一种装置,包括: 执行逻辑,所述执行逻辑包括用于执行指令的电路;以及 指令执行调度器逻辑,其与所述执行逻辑耦合,用于接收提交时执行的状态更新指令,所述指令执行调度器逻辑包括: 提交时状态更新逻辑,其等待调度所述提交时执行的状态更新指令以供执行,直到所述提交时执行的状态更新指令是下一个要提交的指令。
2.如权利要求1所述的装置,其特征在于,所述指令执行调度器逻辑包括乱序指令执行调度器队列,所述乱序指令执行调度器队列用于在调度所述提交时执行的状态更新指令以供执行之前,调度较年轻的指令以供执行。
3.如权利要求2所述的装置,其特征在于,还包括重排序缓冲器,其与所述乱序指令执行调度器队列耦合,用于将所述提交时执行的状态更新指令是下一个要提交的指令的指示提供给所述乱序指令执行调度器队列。
4.如权利要求1所述的装置,其特征在于,所述提交时执行的状态更新指令包括用于对控制寄存器作写入的提交时执行的控制寄存器写指令。
5.如权利要求1所述的装置,其特征在于,所述提交时执行的状态更新指令用于更新不被配置成重命名的状态。
6.如权利要求1所述的装置,其特征在于,所述指令执行调度器逻辑包括保留站。
7.如权利要求1所述的装置,其特征在于,所述提交时执行的状态更新逻辑包括: 由一个或多个提交位组成的多个组,由所述一个或多个提交位组成的多个组中的每个组对应于所述指令执行调度器逻辑的指令执行调度器队列中的不同条目; 位值调整逻辑,其响应于所述提交时执行的状态更新指令,将所述指令执行调整器队列中与所述提交时执行的状态更新指令对应的条目处的一组一个或多个提交位的值调整至给定值; 确定逻辑,当所述指令执行调整器队列中与所述提交时执行的状态更新指令对应的所述条目处的所述一组一个或多个提交位具有所述给定值时,所述确定逻辑确定下一个要提交的指令的指示是否与所述指令执行调整器队列中与所述提交时执行的状态更新指令对应的所述条目处的所述提交时执行的状态更新指令的指示相匹配。
8.如权利要求7所述的装置,其特征在于,所述位值调整逻辑包括用于对所述提交时状态更新指令进行解码的解码器,并且所述确定逻辑包括各自与不同条目对应的多组确定逻辑,针对与所述提交时执行的状态更新指令相对应的所述条目的一组确定逻辑用于确定代表下一个要提交的指令的多个位是否等于代表所述提交时执行的状态更新指令的多个位。
9.如权利要求7所述的装置,其特征在于,如果所述确定逻辑确定下一个要提交的指令的指示与所述提交时执行的状态更新指令的指示不匹配,则所述指令调度器逻辑阻止发布所述提交时执行的状态更新指令。
10.一种方法,包括: 接收提交时执行的状态更新指令; 等待调度所述提交时执行的状态更新指令以供执行,直到所述提交时执行的状态更新指令是下一个要提交的指令;并且当所述提交时执行的状态更新指令是下一个要提交的指令时,调度所述提交时执行的状态更新指令以供执行。
11.如权利要求10所述的方法,其特征在于,还包括在接收到所述指令之后并在调度所述指令以供执行之前,调度较年轻的指令以供执行,其中所述较年轻的指令比所述提交时执行的状态更新指令更年轻。
12.如权利要求10所述的方法,其特征在于,还包括: 当所述状态更新指令执行时,更新指令处理装置的内部状态,其中所述内部状态包括不被配置成重命名的控制寄存器。
13.如权利要求10所述的方法,其特征在于,用于等待调度指令的所述步骤包括:将所述指令存储在指令执行调度器队列的指令队列中。
14.如权利要求10所述的方法,其特征在于,还包括: 响应于接收到所述指令,改变一个或多个提交位的值;以及 在所述一个或多个提交位的值已改变之后,阻止调度所述指令,直到所述提交时执行的状态更新指令的标识符与下一个要提交的指令的指示相匹配。
15.一种制造品,包括: 机器可读存储介质,其上存储有提交时执行的状态更新指令,如果由机器处理所述指令,则导致所述机器执行下列操作: 等待调度所述提交时执行的状态更新指令以供执行,直到所述提交时执行的状态更新指令是下一个要提交的指令;并且 当所述提交时执行的状态更新指令是下一个要提交的指令时,调度所述提交时执行的状态更新指令以供执行。
16.如权利要求15所述的制造品,其特征在于,所述提交时执行的状态更新指令进一步导致所述机器执行如下操作: 在接收到所述提交时执行的状态更新指令之后并在调度所述提交时执行的状态更新指令以供执行之前,调度较年轻的指令以供执行,其中所述较年轻的指令比所述提交时执行的状态更新指令更年轻。
17.如权利要求15所述的制造品,其特征在于,所述提交时执行的状态更新指令进一步导致所述机器执行如下操作: 当所述提交时执行的状态更新指令提交时,更新所述机器的内部状态,其中所述内部状态包括不通过寄存器重命名来重命名的控制寄存器。
18.—种系统,包括: 互连; 处理器,其所述互连耦合,所述处理器包括指令执行调度器逻辑,所述指令执行调度器逻辑具有: 逻辑,其响应于所述提交时执行的状态更新指令,阻止调度所述提交时执行的状态更新指令以供执行,直到所述提交时执行的状态更新指令是下一个要提交的指令;以及 动态随机存取存储器(DRAM),其与所述互连耦合。
19.如权利要求18所述的系统,其特征在于,所述指令执行调度器逻辑被包含在所述处理器的乱序部分内。
20.如权利要求18所述的系统,其特征在于,所述提交时执行的状态更新指令包括控制寄存器写指令,所述控制寄存器写指令用于使所述处理器对控制寄存器作写入,并且所述控制寄存器不被配置成重命名。
全文摘要
一种装置包括具有执行指令的电路的执行逻辑以及耦合于该执行逻辑的指令执行调度器逻辑。该指令执行调度器逻辑用于接收提交时执行的状态更新指令。指令执行调度器逻辑包括提交时状态更新逻辑,其等待调度提交时执行的状态更新指令以供执行,直到提交时执行的状态更新指令是下一个要提交的指令。还公开了其它装置、方法和系统。
文档编号G06F9/06GK103119562SQ201180045945
公开日2013年5月22日 申请日期2011年9月26日 优先权日2010年9月25日
发明者J·E·菲利浦斯, K·萨布莱曼尼亚姆 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1