在超前运行期间管理潜在无效结果的制作方法

文档序号:6517470阅读:165来源:国知局
在超前运行期间管理潜在无效结果的制作方法
【专利摘要】公开了在超前运行期间管理潜在无效结果。提供了与在超前运行期间管理由微处理器所生成/获得的潜在无效结果的实施例。在一个示例中,用于操作微处理器的方法包括根据对超前运行事件的检测,使微处理器进入超前运行。示范性方法还包括,在超前运行期间,基于与存储位置相关联的架构毒物位的值确定与引用存储位置的指令相关联的操作将产生潜在无效结果,以及作为响应实施不同操作。
【专利说明】在超前运行期间管理潜在无效结果
【背景技术】
[0001 ] 由于管线错误或数据冒险,微处理器中的指令通常被重新分派用于执行一次或多次。例如,当指令涉及尚未经计算或检索的结果时,指令可能需要被重新分派。因为揭示后续指令之中的其他独立停顿可能是有益的,所以微处理器可实施配置为在正解决初始未命中的同时检测其他未命中的超前运行(runahead)。虽然超前运行可揭示其他潜在未命中,但是利用未命中或无效数据的继续执行可能污染高速缓存。
【专利附图】

【附图说明】
[0002]图1示意性地示出根据本公开的实施例的微处理器。
[0003]图2A示出了根据本公开的实施例的、示出用于在超前运行期间管理潜在无效结果的方法的一部分的流程图。
[0004]图2B示出图2A中所示出的、用于在超前运行期间管理潜在无效结果的方法的另一部分的流程图。
【具体实施方式】
[0005]在现代微处理器中,指令通常在管线中执行。可单独地或作为微操作束地对管线中的各种执行机制发出这种指令。不考虑当被发出用于执行时指令采取的形式,当发出指令时,可能无法知道指令的执行是否会完成。换句话说,在分派时无法知道在指令的执行期间是否将出现未命中或异常。可能花费一些时间来在微处理器能够在指令上取得进展之前解决一些未命中/异常。因此,在尝试解决长时延事件的根本原因的同时微处理器可能停顿。
[0006]一些微处理器可配置为在正解决针对停顿的根本原因的同时前瞻性地执行指令。前瞻性的执行典型地旨在发现其他潜在停顿,使得微处理器也可开始解决这些停顿,这潜在地节省处理时间。在一些设定中,可能希望在解决初始停顿事件和正常操作恢复之前揭示尽可能多的潜在停顿。因此,微处理器可能需要前瞻性地处理尽可能多的指令。然而,因为微处理器在所生成的一些结果可能将无效的制度(regime)中进行操作,所以在前瞻执行期间所揭示的一个或多个停顿可能处理缓慢。
[0007]在指令的执行期间可能出现的常见的管线执行停顿是加载未命中。换句话说,停顿可源自加载请求,其中存在未呈现在高速缓存存储器中的特定位置的所请求的数据或指令,这造成在从另一个位置(例如在较高高速缓存级)检索数据或指令时的长时延事件。这种加载未命中可触发进入操作的超前运行模式(下文称为“超前运行”),该操作的超前运行模式配置为:在正解决初始加载未命中的同时,检测例如其他高速缓存未命中(例如存储未命中和/或加载未命中)、转译后备缓冲区中的未命中(例如用于指令或数据)、和/或分支误预测。
[0008]如本文所使用的,超前运行描述在触发微处理器中的未解决状态的长时延事件期间所实施的任何合适的前瞻执行方案。应理解的是,这种长时延事件的属性和标识可以变化。这种事件的其他非限制性示例包括存储未命中和一些长时延浮点操作(例如非正规平方根操作)。一旦检测到超前运行触发事件,微处理器的状态(例如寄存器和其他合适状态)就可被设立检查点,使得微处理器可在超前运行之后返回到该状态。微处理器随后在超前运行期间继续执行在工作状态中。在解决初始长时延事件之后,微处理器退出超前运行,还原经设立检查点的状态,并且正常操作恢复。
[0009]因为超前运行是前瞻执行方案,所以源自超前运行的一些值可能典型地是无效的。虽然超前运行可揭示其他潜在未命中,但是利用未命中或无效数据的继续执行可能污染高速缓存。一些过去的方法在超前运行期间用毒物位(poison bit)扩充寄存器,使得在超前运行期间可跟踪无效数据。然而,由于在一些设定中跟踪无效数据可能仅发生在超前运行期间,所以在超前运行之外不在架构上可见的毒物位可能没有意义。如本文所使用的,架构可见性是指架构上可见的对象被从微处理器之外察觉/观察的能力。超前运行状态不是架构上可见的,因为在超前运行期间没有对微处理器状态进行改变。换句话说,紧靠超前运行之后的微处理器的经观察状态与紧靠超前运行之前的微处理器的经观察状态相同。
[0010]毒物位也可用来指示超前运行之外的各种故障情况。例如,架构上可见的毒物位可指示目的寄存器地址将被供应无效条目。这种架构毒物位可以是对微处理器架构可见的,使得在正常、非超前运行操作期间故障情况可与寄存器位置相匹配。对于介入的超前运行事件来说,在超前运行期间致使有效/无效状态信息丢失可能是非法的。因此,在超前运行期间架构上可见的毒物位典型地与用来跟踪数据有效性的毒物位保持分开。换句话说,因为在超前运行期间微处理器的架构上的状态是冻结的,所以作为架构的一部分存在的毒物位也是冻结的。因此,毒物位的复制的集合可存在于微处理器内,这潜在地导致对于设备的利用和硬件设计的低效率。在采用架构上可见的毒物位的超前运行兼容架构中,这可能导致每寄存器三个毒物位:工作状态版本的架构毒物位、经设立检查点版本的架构毒物位、以及超前运行毒物位。
[0011]因此,本文所描述的实施例涉及配置为在超前运行期间管理所生成/获得的潜在无效结果的方法和硬件。例如,用于操作微处理器的方法的一个实施例包括根据对超前运行事件的检测使微处理器进入超前运行。示范性方法还包括,在超前运行期间,基于与存储位置相关联的架构毒物位的值确定与引用存储位置的指令相关联的操作将产生潜在无效结果,以及作为响应实施不同操作。改变在超前运行期间所实施的操作和/或过载在超前运行期间的架构毒物位的值可允许微处理器在保证微处理器状态将在超前运行结束之后还原到超前运行之前状态的情况下在超前运行期间取得进展。
[0012]如本文所使用的,过载架构毒物位是指在超前运行期间对单个位提供架构毒物和超前运行毒物功能性二者。例如,一旦进入超前运行,架构毒物位就可被设立检查点。在超前运行期间,工作状态版本的架构毒物位可用来表示架构和/或超前运行毒物。一旦退出超前运行,经设立检查点版本的架构毒物位被还原,使得相对于上文所描述的示例较少的位可用于跟踪毒物。
[0013]如本文所使用的,操作符(operator)指定数据如何由指令算术地或逻辑地操纵。因此,操作符可包括引用指令中的操作数的、算术或逻辑的操作码。操作数将受与操作符相关联的操作支配的数据指定为变元(argument)。在一些场景中,操作数还可指定与变元相关联的数据位置,诸如寄存器位置。操作是指与操作符相关联的算术或逻辑的操纵函数。因此,将在寄存器位置A的值X与在寄存器位置B的值Y相加的指令包括“add”(“加”)操作符。指令还包括操作数X和Y,并可包括寄存器位置A和B。示范性方法还包括实施除了由操作符所指定的操作的操作。
[0014]如上文所提出的,在正解决原始的超前运行触发事件的同时,超前运行可帮助标识其他潜在的超前运行触发事件。因此,在超前运行期间增加指令吞吐量可以是有帮助的,因为增加所处理的指令数可增加检测附加的超前运行触发事件的机会。检测潜在无效结果可允许在超前运行期间跟踪这些结果(例如在一些实施例中使用与相关的寄存器位置相关联的架构毒物位),这可能避免高速缓存损坏,与此同时推进前瞻执行的进展,使得其他潜在长时延事件可被发现。进一步地,因为在超前运行期间生成的值可能通常是无效的,所以通过实施不同于指定的操作符的动作或更改指定的操作符来作为响应地改变微处理器的行为可在超前运行期间避免延迟并加快指令处理。
[0015]图1示意性地描绘可结合本文所描述的系统和方法所采用的微处理器100的实施例。图1中示出的微处理器100的实施例描绘超前运行控制逻辑102。超前运行控制逻辑102控制微处理器100进入和退出超前运行模式。在一些实施例中,超前运行控制逻辑102还可控制与进入和退出超前运行相关的存储器操作。例如,一旦进入超前运行,微处理器100的一部分就可被设立检查点,以保持微处理器100的状态,而未设检查点工作状态版本的微处理器100在超前运行期间前瞻性地执行指令。在一些这种实施例中,一旦退出超前运行,超前运行控制逻辑102就可将微处理器100还原到经设立检查点的状态。
[0016]微处理器100还包括处理器寄存器104。在一些实施例中,寄存器104可包括在通用寄存器文件中或以其他方式合适地分布在微处理器100内。寄存器104存储在操作期间所使用的数据和/或指令。例如,管线级可从输入寄存器获得数据,使用所获得的数据来实施指定操作,并且随后将结果存储在目的寄存器。应理解的是,标签“目的寄存器”和“输入寄存器”是相对的术语。例如,用于第一操作的目的寄存器可充当用于另一操作的输入寄存器;类似地,用于一个操作的输入寄存器可能已充作用于先前操作的目的寄存器等等。
[0017]在图1所示出的实施例中,每个寄存器104用架构毒物位106扩充。每个架构毒物位106经配置使得其值可指示寄存器104中的相关联位置的可信度而不考虑微处理器是在超前运行还是在非超前运行操作中。通过使用公共毒物位来跟踪在正常操作和超前运行期间的毒化,相比于在超前运行期间排他地使用超前运行毒物位且在正常操作期间排他地使用架构毒物位的其他微处理器,在微处理器100的一些实施例中的存储区域的量可以比较少。
[0018]在超前运行之外,每个架构毒物位106配置为指示包括在相关联的寄存器104中的数据或指令的有效性/无效性,该位对超前运行之外的微处理器架构是可见的(例如能够通过显式指令加以检查)。在超前运行期间,每个架构毒物位106也配置为指示在相关联的寄存器104中的数据或指令的有效性/无效性。然而,在超前运行期间,每个架构毒物位106对超前运行控制逻辑是可见的,但对微处理器架构是不可见的。因此,在超前运行期间针对架构毒物位106的状态改变不影响微处理器的架构状态,因为在超前运行期间不提交数据。
[0019]例如,在一些实施例中,架构毒物位106可用来跟踪超前运行之外的微处理器正确性。如本文所使用的,微处理器正确性是指微处理器架构状态的功能有效性。维持微处理器架构的功能有效性的动作维持微处理器的正确性。因此,在架构毒物位106持续跟踪微处理器正确性的实施例中,当与具有可使微处理器架构的功能有效性无效的条目的寄存器104相关联时,特定的架构毒物位106可被设定为无效状态。一旦用不使微处理器架构的功能有效性无效的条目加以更新,该架构毒物位106的值可改变为有效状态。
[0020]作为另一个示例,在一些实施例中,架构毒物位106可用来指示寄存器104中的无效条目,使得正常、非超前运行操作可以以前瞻性的方式进行而不出现异常。在一个场景中,与特定寄存器条目相关联的架构毒物位106可被设定为响应于转译后备缓冲区未命中来指示寄存器内容是无效的。通过将内容标记为无效,引用寄存器位置的加载操作可前瞻性地发生。如果后续操作在用有效数据覆写该寄存器之前不使用来自该寄存器位置的数据,那么该架构毒物位106被清除并且操作以非前瞻性的方式进行。换句话说,仅在调用或者以其他方式引用来自该寄存器位置的数据的情况下才出现异常、停顿或重演。这可避免一些停顿情况并加快指令流过微处理器100。在另一个场景中,与特定寄存器条目相关联的架构毒物位106可被设定为响应于产生诸如除以零操作的无效结果的计算来指示寄存器内容是无效的。
[0021]通过一旦进入超前运行则将微处理器状态设立检查点来保持一个或多个架构毒物位106的值。换句话说,经选择的架构毒物位106的值和与架构毒物位106相关联的寄存器值(例如保持在寄存器104中的值)一起被设立检查点。一旦结束超前运行,则微处理器状态还原到经设立检查点的版本。还原经设立检查点的状态包括将架构毒物位106的值和与该架构毒物位106相关联的寄存器104中保持的寄存器值一起还原。因此,一旦退出超前运行,架构毒物位106就显示出其超前运行之前的值。因为架构毒物位106的值通过设立检查点来保留,所以其可用来跟踪超前运行期间出现的无效性而不影响微处理器正确性跟踪。
[0022]图1所示的微处理器100的实施例还包括毒化控制逻辑(poisoning controllogic) 108,其操作为确定如果由特定指令所指定的操作由微处理器实施那么在超前运行期间所遭遇的该指令将产生潜在无效结果。在一些实施例中,毒化控制逻辑108操作为基于用于与特定指令相关联的特定架构毒物位106的值确定该指令将产生潜在无效结果。在一些实施例中,毒化控制逻辑108操作为一旦确定与经选择的架构毒物位106相关联的特定指令将产生潜在无效结果则将用于该架构毒物位的值从第一值调整到第二值。如本文所使用的,潜在无效结果是指由可能生成潜在无效结果的操作符所指定的操作的任何结果。
[0023]除操作为在超前运行期间调整经选择的架构毒物位106的值以外,毒化控制逻辑108还操作为使微处理器100实施不同于由与潜在无效结果相关联的指令所指定的那些操作的操作。例如,从用于算术操作的输入寄存器检索无效条目的指令可能在超前运行期间生成无效结果。在一些实施例中,一旦做出该确定,毒化控制逻辑108就可使微处理器100不实施指定的算术操作。替代地,毒化控制逻辑108可将与指令相关联的目的寄存器标记为无效并进行超前运行。这可允许超前运行相对于停顿的进程遍历更多代码,这潜在地揭示其他超前运行触发事件。因为在超前运行期间所实施的一些或许多操作可得到无效结果(例如因为这些操作可被绑定到遭遇触发超前运行的高速缓存未命中的数据),所以实施计算密集型算术操作仅生成无效结果可能仅减慢超前运行。在超前运行期间减慢操作可能潜在地降低微处理器100在解决原始超前运行触发事件以及正常操作恢复之前揭示其他潜在的超前运行触发事件的能力。相反,跳过这种计算密集型操作与此同时跟踪与其相关联的无效性可加快超前运行期间的指令吞吐量,使得可发现其他潜在超前运行触发事件。
[0024]虽然图1示出的实施例为了清楚起见将毒化控制逻辑108描绘为与微处理器100的其他部分分开的实体,但应理解的是,毒化控制逻辑108的一些或所有功能可分布在微处理器100的合适的部分之中。例如,在一些实施例中,毒化控制逻辑108可分布在调度逻辑的部分之中和/或在执行逻辑的部分之中,如下文以更多细节所描述的。
[0025]图1中描绘的微处理器100的实施例还包括存储器层级110,其可包括LI处理器高速缓存110A、L2处理器高速缓存110B、L3处理器高速缓存110C、主存储器IlOD (例如一个或多个DRAM芯片)、二级存储IlOE (例如磁和/或光存储单元)和/或三级存储IlOF(例如磁带群)。应理解的是,示范性存储器/存储部件以访问时间和容量的递增顺序列出,但可能存在例外。
[0026]存储器控制器IIOG可用来处置协议并提供主存储器IIOD所要求的信号接口并调度存储器访问。存储器控制器可实现在处理器裸片上或分开的裸片上。应理解的是,上文提供的存储器层级是非限制性的并且可使用其他存储器层级而不脱离本公开的范围。
[0027]微处理器100还包括管线,在图1中以简化的形式示出为管线112。管线化可允许多于一个指令并发地处于检索和执行的不同级中。换句话说,指令集可传递经过被包括在管线112中的各个级,与此同时从存储器检索另一个指令和/或数据。因此,在上游检索机制正等待存储器返回指令和/或数据的同时可利用级,衔接诸如高速缓存和分支预测器的各种结构使得可潜在地发现其他高速缓存未命中和/或分支误预测。该方法相对于以单独、串行的方式检索和执行指令和/或数据的方法可潜在地加速由微处理器进行的指令和数据处理。
[0028]如图1中所示,管线112包括多个单元,包括获取逻辑114、解码逻辑116、调度器逻辑118、执行逻辑120、以及回写逻辑122。应理解的是,仅出于示例性目的提供显示在图1中示出的管线112的实施例中的逻辑部分,并且可以以任何合适的方式布置下文以更多细节描述的功能性。例如,管线112的一些实施例可包括在单元的一个或多个内的单独管线化的部分(例如获取逻辑114、解码逻辑116等中的一个或多个可包括单独管线部分),而一些实施例可将两个或两个以上逻辑部分的部分组合在单个管线单元内。
[0029]在图1所示的实施例中,获取逻辑114从存储器层级110检索指令,典型地从由L2-L3高速缓存和主存储器所支持的统一或专用LI高速缓存二者检索。解码逻辑116例如通过解析操作符/操作码、操作数以及寻址模式来解码指令。一旦经解析,指令随后就由调度器逻辑118所调度用于由执行逻辑120执行。
[0030]在一些实施例中,调度逻辑118可配置为调度指令用于以指令集架构(ISA)指令的形式执行。此外或可替代地,在一些实施例中,调度逻辑118可配置为调度微操作束用于执行,其中每个微操作与一个或多个ISA指令或ISA指令的部分相对应。应理解的是,可采用任何合适的布置用于调度微操作束中的指令而不脱离本公开的范围。例如,在一些实施例中,可在多个微操作束中调度单个指令,而在一些实施例中单个指令可被调度为微操作束。在又一些实施例中,多个指令可调度为微操作束。在又一些实施例中,调度逻辑118可调度单独的指令或微操作,例如完全不包括束的指令或微操作。
[0031]如图1所示,描绘的管线112的实施例包括执行逻辑120,其可包括一个或多个执行级,该执行级配置为执行由调度逻辑118所发出的指令。任何合适数目和类型的执行级可被包括在执行逻辑120内。一旦由执行逻辑120处理,完成的指令可经存储,准备好用于由回写逻辑122提交。回写逻辑122通过将完成的指令提交到存储器来更改微处理器100的架构状态。换句话说,回写逻辑122实施用于微处理器100的提交功能性。
[0032]应理解的是,在管线112中示出的上文的级是示例性的典型的RISC实现方案,并且不意图进行限制。例如,在一些实施例中,可在管线的上游提供获取逻辑和调度逻辑功能性,诸如编译VLIW指令或代码变形(code-morphing)。在一些其他实施例中,调度逻辑可被包括在微处理器的获取逻辑和/或解码逻辑中。更普遍地,微处理器可包括获取、解码、以及执行逻辑,其每一者可包括一个或多个级,存储(mem)和回写功能性由执行逻辑所实行。本公开同样适用于这些和其他微处理器实现方案,包括可使用VLIW指令和/或其他逻辑指令的混合实现方案。
[0033]在所描述的示例中,可一次一个地获取和执行指令,这可能要求多个时钟周期。在该时间期间,数据路径的重要部分可能不使用。补充或替代单个指令获取,预获取方法可用来提高性能和避免与指令获取相关联的时延瓶颈。因此,应理解的是,可使用任何合适的获取、调度、以及分派指令的方式而不脱离本公开的范围。
[0034]图2A和2B示出了根据本公开的实施例的、示出用于在超前运行期间重新使用架构毒物位的方法200的实施例的流程图。应理解的是,可通过任何合适的硬件实施方法200的实施例,包括本文描述的硬件。应理解的是,可省略、重新排序和/或补充方法200中所描述的过程的部分而不脱离本公开的范围。
[0035]在202,方法200包括在非超前运行微处理器操作期间设定用于一个或多个架构毒物位的第一值。例如,架构毒物位可被设定为指示架构毒物位与其相关联的寄存器条目的有效性或无效性的值。在一些实施例中,架构毒物位可被设定为指示如果寄存器可能被用作用于操作的源寄存器那么寄存器条目是否可使微处理器正确性无效的值。
[0036]在204,方法200包括检测超前运行触发事件,以及在206,这使微处理器进入超前运行。任何合适的长时延事件可被视为超前运行触发事件。在一些实施例中,可在微处理器设计期间预确定这种长时延事件。在一些实施例中,在206进入超前运行可包括将微处理器的状态设立检查点,其可包括将寄存器条目值和与这些寄存器条目相关联的架构毒物位设立检查点。因此,虽然在架构毒物位的值至少最初维持在工作状态版本的微处理器中,但一旦进入超前运行,在超前运行期间这些值维持在经设立检查点版本的微处理器中,尽管这些值中的一个或多个在超前运行期间可能改变,如下文所述。
[0037]在208,方法200包括确定如果实施了由指令所指定的操作那么在超前运行期间所遭遇的指令将产生潜在无效结果。一旦进行潜在无效结果的确定,那么方法200包括在图2B的210实施不同于由指令所指定操作的操作。
[0038]应理解的是,可预期到任何合适的确定在超前运行期间所遭遇的指令将产生潜在无效结果的方式而不脱离本公开的范围。进一步地,应理解的是,可使用任何合适的逻辑和/或软件以任何合适的方式实施确定。类似地,应理解的是,实施不同于由指令所指定操作的操作可以以任何合适的方式加以实施而不脱离本公开的范围。图2A和2B描绘了一对用于确定潜在无效结果并实施可替代操作(在示例I和示例2中示出)的方法的非限制性示例,下文以更多细节加以描述。应理解的是,提供下文所描述的示例是出于示例性目的,并不意图限制本公开的范围。
[0039]在一些实施例中,可在分派指令用于执行之前进行关于指令有效性的确定。如图2A中示例I所示,在一些实施例中,确定在超前运行期间所遭遇的指令将产生潜在无效结果可包括,在212,确定由指令所引用的寄存器位置包括无效条目。例如,在一些实施例中,212可包括检测与寄存器位置相关联的架构毒物位的值并确定寄存器条目无效。应理解的是,可采用任何合适的用于检测架构毒物位的值的逻辑或软件而不脱离本公开的范围。例如,在一些实施例中,在分派指令用于执行之前可使用调度逻辑检测用于架构毒物位的值。例如,包括在微处理器中的调度逻辑可基于指示与架构毒物位相关联的寄存器包括无效条目的该位的值确定指令将产生潜在无效结果。
[0040]在一些实施例中,可用与由指令所指定的操作相关的信息补充确定。例如,如果指令指定引用由相关联的架构毒物位标记为无效的输入寄存器的算术操作,那么关于算术操作和/或输入寄存器的信息可用来确定目的寄存器是否将包含无效数据。
[0041]继续图2B中的示例I,实施不同操作可包括在214将指令转换成非操作的指令。例如,与具有无效值的架构毒物位相关联的浮点指令可被当做非操作指令对待或被操纵成非操作指令。在一些实施例中,可使所有浮点指令成为非操作的。在其他一些实施例中,可使经选择的浮点指令成为非操作的。应理解的是,可采用任何合适的将指令当做非操作指令对待或将指令操纵成非操作指令的方式而不脱离本公开的范围。在其中在调度逻辑进行潜在无效结果的确定的示例中,在一个场景中,可分派可替代的非操作指令而非原始指令。在根据该示例的另一个场景中,可与指示将不实施浮点操作的位一起分派原始指令。
[0042]在一些实施例中,可在分派指令用于执行之后进行关于指令的有效性的确定。例如,可在微处理器中的执行逻辑内的执行/管线级中进行确定。如图2A中在示例2所示,在一些实施例中,确定在超前运行期间所遭遇的指令将产生潜在无效结果可包括在216确定如果实施了由指令所指定的操作那么由指令所引用的目的寄存器位置将被供应无效条目。应理解的是,可采用用于确定由指令所引用的目的寄存器位置将被供应无效条目的任何合适的逻辑或软件而不脱离本公开的范围。在一些实施例中,其中指令以其他方式实施指定的操作的特定管线级可进行这种确定。例如,在管线中的特定执行级,指令可指定两个输入寄存器的商要存储在经选择的目的寄存器。如果与除数相对应的输入寄存器的值是零,那么将确定目的寄存器的值将是无效的。
[0043]继续示例2,一旦确定目的寄存器可能包含无效条目,则方法200包括在218设定与目的寄存器位置相关联的架构毒物位以指示条目无效。在一些示例中,与该目的寄存器位置相关联的架构毒物位可被设定为不同于在正常操作期间由架构毒物位所保持值的值。例如,该架构毒物位可最初设定为第一值,可能是从进入超前运行所保持的非超前运行值,指示有效数据被包括在该寄存器位置中。然而,因为架构毒物位配置为在超前运行期间对微处理器架构不可见,所以在超前运行期间值可改变为第二值,指示寄存器内容现在无效而不使微处理器由于正确性故障进入陷阱或以其他方式停顿。
[0044]转到图2B,在220,实施不同操作可包括将指令传递到包括在管线中的另一个执行级而不实施由指令所指定的操作。例如,在上文描述的除以零的场景中,可设定与目的寄存器相对应的架构毒物位以指示目的寄存器无效并且指令可传递到包括在管线中的后续执行级而不被实施。因为已知指定的操作的结果将是无效的,所以实施操作可仅延迟超前运行;替代地,可通过不在该执行级实施操作来增加超前运行指令吞吐量。作为另一示例,可部分地实施操作,使得可不实施由指令所指定的操作的一部分。在根据该示例的一个场景中,指令可指定计算并可指定在异常发生时应引发异常。在该场景中,可计算结果,并且异常情况发生。然而不引发异常。因此,如指令所指定的操作的完全实施不发生,并且指令传递到另一级。
[0045]因此,应从上文公开的非限制性示例中理解的是,架构毒物位可用在超前运行中以持续跟踪无效数据。因此,与用作指令的输入的数据存储位置相关联的架构毒物位可以信号表示该指令的结果可能无效,并且可在其位置实施不同操作。进一步地,与用作该指令的目的的数据存储位置相关联的另一架构毒物位可被设定为指示将存储在该位置中的数据的无效性的值。反过来讲,使用该目的寄存器作为输入的另一指令可传播毒物,持续跟踪无效数据。应理解的是,如果实施了由操作所指定的操作那么确定指令将产生潜在无效结果可以以任何合适的方式发生,并且可以以任何合适的方式改变指令的行为。在一些实施例中,可以以配置为将指令吞吐量优先于延迟/停顿、或赞成任何其他合适的策略的超前运行毒物策略表明这种方法。例如,在上文所述的场景中,抑制异常相对于将使微处理器一旦遭遇异常则退出超前运行的策略可产生较长超前运行片段(印isode)。因此,这种方法可通过允许超前运行遍历附加代码来潜在地提高微处理器性能。
[0046]在222,方法200包括确定超前运行事件的解决以及,在224,根据超前运行事件的解决,使微处理器退出超前运行。例如,当数据从较高级高速缓存被供应到LI高速缓存并随后可用于加载时可解决LI高速缓存中的加载未命中。
[0047]在226,方法200包括一旦退出超前运行则将一个或多个架构毒物位的值还原成其各自的原始值。在一些实施例中,还原用于一个或多个架构毒物位的值可包括一旦退出超前运行则将一个或多个架构毒物位的值与存储在相关联的寄存器位置中的设立检查点的、超前运行之前的值一起从设立检查点的、超前运行之前的状态中还原。因此,一旦在超前运行之后从设立检查点的状态还原,微处理器就返回到仅在进入超前运行之前的状态,使得触发超前运行的指令的重新发出将造成超前运行之前的无缝延续。
[0048]应理解的是,提供本文所描述的方法仅出于示例性目的而不意图进行限制。因此,应理解的是在一些实施例中本文所描述的方法可包括附加的或可替代过程,而在一些实施例中,本文所描述的方法可包括一些可重新排序或省略的过程而不脱离本公开的范围。进一步地,应理解的是可使用包括本文所描述的硬件的任何合适的硬件来实施本文所描述的方法。
[0049]此书面描述使用示例以公开本发明,包括最佳模式,并且还使相关领域的普通技术人员能够实践本发明,包括制造和使用任何设备或系统并实施任何所包含的方法。本发明的可取得专利的范围由权利要求所限定,并可包括如本领域普通技术人员所理解的其他示例。这种其他示例旨在处于权利要求的范围内。
【权利要求】
1.一种操作微处理器的方法,所述方法包括: 在进入超前运行之前设定与存储位置相关联的架构毒物位的值,所述架构毒物位的值指示在所述存储位置所保持的数据是无效的; 根据对超前运行事件的检测,使所述微处理器进入超前运行; 在超前运行期间,基于所述架构毒物位的值确定与引用所述存储位置的指令相关联的操作将产生潜在无效结果;以及作为响应实施不同操作。
2.根据权利要求1所述的方法,其中所述存储位置包括由所述指令所引用的输入寄存器位置。
3.根据权利要求1所述的方法,其中实施所述不同操作包括将所述指令转换成非操作指令。
4.根据权利要求1所述的方法,其中确定与引用所述存储位置的所述指令相关联的所述操作将产生所述潜在无效结果包括在配置为调度所述指令用于由所述微处理器执行的调度逻辑确定所述架构毒物位的值。
5.根据权利要求1所述的方法,其中实施所述不同操作包括实施由所述指令所指定的操作的仅一部分。
6.根据权利要求1所述的方法,进一步包括: 设定与由所述指令所引用的目的存储位置相关联的架构毒物位的值以指示在所述存储位置所保持的数据是无效的;以及 一旦退出超前运行,将所述与由所述指令所引用的所述目的存储位置相关联的架构毒物位的值还原成超前运行之前的值。
7.根据权利要求6所述的方法,进一步包括: 根据所述超前运行事件的解决,退出超前运行;以及 一旦退出超前运行,将所述与由所述指令所引用的所述目的存储位置相关联的架构毒物位的值设定成设立检查点的值。
8.一种用于执行由获取逻辑所检索并且由调度逻辑所调度用于在执行机制执行的指令的微处理器,所述微处理器包括: 超前运行控制逻辑,操作为根据超前运行事件的检测使所述微处理器进入超前运行;以及 毒化逻辑,操作为; 在超前运行期间,确定与所遭遇的指令相关联的操作将产生潜在无效结果, 设定与由所述指令所引用的目的存储位置相关联的架构毒物位的值以指示在所述目的存储位置所保持的值是无效的,以及作为响应实施不同操作。
9.根据权利要求8所述的微处理器,其中所述超前运行控制逻辑操作为根据所述超前运行的解决使所述微处理器退出超前运行,并且其中所述毒化逻辑操作为一旦退出超前运行则将所述与由所述指令所引用的所述目的存储位置相关联的架构毒物位的值设定成设立检查点的值。
10.根据权利要求8所述的微处理器,进一步包括管线,所述管线包括多个管线级,其中所述毒化逻辑操作为如果所述毒化逻辑确定所述指令将在第一管线级产生潜在无效结果那么使所述指令 从所述第一管线级传递到第二管线级而不在所述第一管线级中执行。
【文档编号】G06F9/38GK103809935SQ201310532476
【公开日】2014年5月21日 申请日期:2013年10月30日 优先权日:2012年11月14日
【发明者】布鲁斯·霍尔默, 吉列尔莫·J·罗扎斯, 亚历山大·克莱贝尔, 詹姆斯·范·策恩, 保罗·塞维斯, 布拉德·霍伊特, 斯里达兰·罗摩克里希纳, 亨斯·凡德斯库特, 罗斯·泽格尔肯, 达雷尔·D·博格斯, 马格努斯·埃克曼 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1