在条件指令将不执行时停止等待源操作数的制作方法

文档序号:6567251阅读:268来源:国知局
专利名称:在条件指令将不执行时停止等待源操作数的制作方法
技术领域
本发明涉及用于在条件使得条件指令将不执行时避免等待用于所述条件指令的 操作数数据而带来的延时的技术,且涉及实施所述技术的管线处理器。
背景技术
现代微处理器及其他可编程处理器电路通常依赖于管线处理构架,以改进执行速 度。管线处理器包括多个处理级,以便在每一指令穿过所述管线时依序处理所述指令。 当一个级正处理一指令时,沿所述管线的其他级同时处理其他指令。管线的每一级执行每一程序指令的总处理中所需的r个不同功能。虽然次序及/ 或功能可能略有变化,但典型的简单管线包括指令提取级、指令解码级、寄存器文件 访问或寄存器读取级、执行级和结果写回级。更先进的处理器设计将这些级的一些或 全部分解成数个单独级,以便实施这些功能的子部分。超标量设计进一步分解所述功 能,及/或提供复制功能或委托指定功能至指定管线,以同时在并列管线中执行操作。 随着处理器速度的增加,给定级实施其功能的时间减少。为维持或进一步改进性能, 将每一级细分。每一新级在给定的循环期间实施较少的工作,但存在更多以较高时钟 率同时操作的级。在较高速构架中,获得指令据以进行操作所需的数据一也就是说对应的操作数数 据一相对于处理器循环时间需要更多时间,且可能导致一个或多个循环的延时。另外, 通常一指令必须在一较早或较旧的指令己将所述操作数数据写入(通常)指定寄存器 之后才获得操作数数据。写后读的危险出现于指令写入操作数数据花费了大量处理循 环(例如,针对乘法操作),且想要使用所述操作数数据的后一指令必须等待直至较旧 指令已计算及完成写入必要的操作数数据时。存在真实的数据依赖性,因为后一指令 需要来自较早指令的数据以完成其操作。因此,后一指令的处理停止于寄存器读取级 内或执行级开始时。这一写后读(RAW)危险的影响随写入操作数的较旧指令的延时增加而增大,因 为所述停止会延时越来越多的处理循环。如果管线仅具有一个执行级,则所述危险事 实上将不成问题,因为无论如何后一指令将总是等待较旧指令完成执行。然而,由于 在超标量构架中管线深化以包含多个执行级或并列执行级,则后一指令可在较旧指令 在其前面执行时继续一个或多个级,但后一指令的级执行必须等待(停止)以获得由 较早指令产生的操作数数据。
如果从寄存器文件处获得操作数数据,则通常无需等待数据。然而,如果指令必 须停止于寄存器文件读取(或更早的)级中,并等待长延时操作数数据写入所述寄存 器文件,则存在对来自寄存器文件的数据的等待。在这一情形中,等待指令读取(或 再读取)寄存器文件以获得其数据。仅在几乎或完全不存在来自其他结果产生级的操 作数数据转发路径时才使用此方法。事实上,所有的现代处理器均具有操作数转发网络,且无需自寄存器文件读取RAW操作数。条件性执行指令是基于某一经标识条件的状态而执行或不执行的指令,其中所述 经标识条件通常是由条件寄存器中的一个或多个比特指示的条件。条件指令使得如果 条件代码(CC)寄存器中的一个或多个条件代码匹配所述指令中指定的条件,则执行 其指定功能。如果不满足所述条件,则将不执行所述条件指令。在所述情形中,可将 指令标记为通过管线的更多级传递而不执行的"NOP"指令,或者可自管线中的指令 流中移除所述条件性执行指令。通常,将条件性分析作为执行处理的一部分来执行。例如条件性加、减、乘、除等多数条件指令在满足相应条件时需要用于执行指定 功能的操作数数据。如果将要执行条件指令(满足条件),则其进一步的处理必须等待 从寄存器文件、或经由结果转发网络从所述管线本身、或从存储器获得必需的操作数 数据。现有系统通过管线施加所述条件指令的这一相同等待、停止处理,而无论是否 满足所述条件。在其中后一指令需要操作数数据但是是条件指令的情形中,如果不满足条件,则 将不执行结果。在所述情形中,等待读取操作数数据会施加不必要的延时。发明内容本发明教示减轻因原来会在等待RAW危险操作数数据时施加的非执行条件指令 而引起的延时。在执行之前的适合点处,做出关于所述条件的确定。如果所述条件使 得将不在通过管线的这一传递时执行指令,则可在完成接收所有相关联的操作数数据 之前终止(也就是说跳过或停止)关于所述条件指令的保持。这些教示的范围涵盖(例如) 一种用以控制条件指令通过管线处理器的处理的方 法,其中所述管线处理器包含大量处理级。所述方法涉及在管线的第一级中将条件指 令解码,并分析用于执行所述指令以确定是否应由管线的后一级执行所述指令所需的 条件。如果所述条件的分析指示不应执行所述指令,则可以缩短或跳过对任何尚未接 收到的、原本是执行所述条件指令所需的操作数数据的停止。非执行条件指令无需等待以接收所有其操作数数据。例如,在较早的指令计算并 写入用于所述条件指令的操作数数据之前,不再存在延时。通常,如果不满足所述条件指令的指定条件,则将不执行所述指令。然而,可能 存在其中条件指令经构架以使得在满足指定条件时不执行的情况。存在数个将允许指令继续通过管线而不执行所述指令的处理技术。例如,可将所
述指令标记为或转换至无操作(NOP)指令。后面的级将标识所述NOP,且将不执行 原始指令(注意,所述NOP被作为NOP来执行)。或者,可将所述指令标记为好像已 接收到所有操作数数据,从而避开等待长的延时数据。在这后一情形中,在执行级处 理所述指令时,其将再次确定条件使得所述指令不应被执行并相应地采取行动。回应于其中由于适用的条件状态而不执行所述指令的第一确定,其他方法可能从 管线中整体移除非执行条件指令。可以通过允许依序的下一指令覆写其中确定应不执 行所述指令的级中的所述条件指令而有效地移除所述条件指令,或者所述处理器可以 在当前保持所述条件指令的级中以清除状态计时。存在其中可以不设定条件指令所指定的条件的情形。由于较早指令可写入必要的操作数数据,则较早指令也可以设定用以指定特定条件的状态的代码或数据。在确定 所述条件是否将导致条件指令的执行之前,可能必须预测管线中的条件指令以确定仍 在处理中的较早指令是否可能设定关于相关条件的数据。如果不存在由较早指令设定 相关条件数据的这种可能性,则条件分析可以确定将执行还是不执行所述条件指令, 且随后等待或不等待用于执行所述指令所需的操作数数据。如果存在将设定相关条件 数据的较早指令,则所述条件指令必须等待更新想要在可以确定是执行还是不执行条 件指令之前就知晓的条件数据。本发明教示还涵盖管线处理器。例如,这种处理器可以包括解码级、寄存器读取 级和执行区段。执行区段包括多个级。 一个所述指令的执行是条件性的,其中基于指 定条件的出现来执行一个指令。通常,当指令遇到其不能使用数据转发网络立即解决 的RAW危险时,保持所述指令,避免其执行直至其已获得所有用于其执行所需的源 操作数数据。然而,基于尚未出现指定条件的确定而停止在执行所述条件指令之前的 保持。其他目标、优点及新颖特征将在以下说明中部分地加以阐述,且在审查以下说明 及随附图式后将部分地对所属技术领域中的技术人员显而易见,或可通过产生或操作 所述实例而知晓。本发明教示的目标及优点可以通过实践或使用随附权利要求书中特 别指出的方法、手段和组合来实现及达成。


所述图式仅以举例而非限制方式描绘根据本发明教示的一个或多个实施方案。在 图式中,相同的参考编号表示相同或相似的元件。图1是管线处理器的简化实例的功能方块图,所述管线处理器可实施根据本文所 述技术的条件指令处理。图2是根据ARM协议的条件指令的格式的图形表示。图3是条件状态和相关联的可执行指令的格式的图形表示,所述条件状态和可执 行指令一起形成根据ARM协议的THUMB扩展的条件指令。
图4是有利于解释适用于处理条件指令的逻辑实例的流程图。
具体实施方式
在下列详细说明中,以举例方式列举大量具体细节以提供相关教示的透彻理解。 然而,所属技术领域的技术人员将易于了解,可在没有这些细节的情况下实践本发明 教示。在其他示例中,以相对高级别而非详细地阐述众所周知的方法、程序、组件和 电路,以免不必要地淡化本发明教示的各方面。本文揭示的各种技术涉及撤销或避免停止管线中的条件指令,以等待接收非执行 条件指令的操作数数据。例如,针对将不在此次通过管线时执行的条件指令,这种技 术减少或减轻对正行进通过管线的较早指令进行写入操作数数据的等待。条件指令的执行(也就是所述指令所指定处理的实施)取决于指定条件,例如可由条件代码(CC)寄存器中设定的一个或多个比特表示。可能存在其中条件指令经构 架以使得如果满足指定条件则不执行所述指令的情况。然而,出于进一步论述所述实 例的目的,如果满足所述条件则执行条件指令,且如果不满足条件指令的指定条件则 不执行。现在详细参照随附图式中所图解说明及下文论述的实例。图1是管线处理器10 的简化方块图。为便于论述,管线10的所述实例是一标量设计,其主要实施单个级管 道。然而,所属技术领域的技术人员将了解,本文所述条件指令的处理还适用于超标 量设计和其他实施并列管线的构架。同样,管线的深度(例如,级数量)仅为代表性。 实际的管线可具有比所述实例中的管线10更少或更多个级。实际的超标量实例可由两 个或更多个并列管线组成。简化的管线10包括5个主要的管线处理级类别提取ll、解码13、寄存器读取 15、执行17和写回19。图式中的箭头表示逻辑数据流,而不必须为实际连接。所属 技术领域的技术人员将了解,这些级的任一者可被分解为分别执行相关功能的一部分 的多个级,或者所述管线可包括用于提供其他功能的其他级。出于论述的目的,数个 主要的级类别显示为单独级,尽管通常针对高速处理器而将每一级类别分解为两个或 更多个级。在有益于论述关于条件指令的处理并避免对写入此类指令必需的源操作数 数据的等待时间的地方,将执行区段显示为包括多个级。在实例性管线10中,第一级是指令提取级11。提取级11获得用于由后面的级处 理的指令。提取级11从一般以存储器21表示的存储器层级获得所述指令。存储器21 通常包括指令或一级(Ll)高速缓存、二级(L2)高速缓存和主存储器。可将指令自 其他源(例如,引导ROM或磁盘机)加载至主存储器。提取级11将每一指令提供至 解码级13。指令解码级13的逻辑将所接收的指令字节解码,并将结果提供至管线的 下一级。在实例10中,条件性处理可能早在解码级13处就开始。条件性处理需要分析指
示一个或多个条件状态的数据,以确定控制指令处理的条件是否需要执行所述条件指 令。所述实例使用条件代码作为条件数据。条件代码通常是设定于条件寄存器中的比 特。例如,ARM符号涉及条件代码(CC)寄存器23,其通常包括NZCV条件比特。 负(N)比特指示所记录的前一结果(应注意,并不记录所有结果)是否为负。零(Z) 比特指示所述结果是否均为零。进位(C)比特指示前一结果是否包括进位输出。溢 出(V)比特指示所述结果是否为溢出。如下文论述,作为其处理的一部分,解码级 13的逻辑将确定是否每一指令均为条件指令。如果是条件性的,则解码级可检查CC 寄存器23中指示各种条件的比特状态,作为所述条件指令是否将在通过处理器管线 10的这一传递时执行的第一确定。下一级提供本地寄存器访问或寄存器读取,如级15表示。寄存器读取级15的逻 辑访问通用寄存器(GPR)文件29中指定寄存器中的操作数数据。在文件29中存在 n个GPR寄存器,分别编号为0至n-l。在某些情形中,寄存器读取级15的逻辑可从 存储器或其他资源(未显示)获得操作数数据。如下文针对条件指令的更详细论述, 寄存器读取级15的逻辑还检查寄存器23中指示各种条件的比特的状态,以确定是否 蒋执行条件指令。 '寄存器读取级15将所述指令及必要的操作数数据传递至提供执行功能的级17的 组群中。执行级17的组群主要对取回的操作数数据执行每一指令的特定功能,并产生 结果。提供执行功能的一个或多个级可(例如)实施算法逻辑单元(ALU)。在所述实 例中,管线的执行区段17包括多个级。尽管这些级的数量可能不同,但出于这一实例 的目的而显示三个级, 一般称为Exe 1级37、 Exe 2级39和Exe 3级41。执行区段17的最后一个级一在这一情形中为Exe 3级41一将每一指令的一个或 多个执行结果提供至写回级19。当然,从Exe级37和39到写回级19也可能存在"早 退出"路径。同样,通常将存在结果转发网络,以将结果转发至通过管线传递的随后 指令。级19将所述结果写回至文件29中的寄存器或至存储器(未显示)。由一指令写 入GPR寄存器的数据可作为操作数数据来读取,并与流过处理器管线10的后一指令 相一致地进行处理。尽管未单独显示,但管线10的每一级通常包括状态机或实施相关逻辑功能的类 似装置,及用于将指令及/或任何处理结果传递至下一级或传递回GPR寄存器文件29 的相关联寄存器。通过管线10处理的多数指令将要求在所述指令的执行期间处理操作数数据。通 常,这种指令包括在较早或较旧指令已执行级37、 39和41通过的一者或多者但尚未 写入GPR文件29或将其结果及时置于转发网络上以供相关指令不停顿地接收所述结 果时,在EXE 1级37或较早级处等待操作数数据。这一数据相关性会产生写后读 (RAW)危险。有时,写入操作数数据的较早指令会花费大量处理循环来完成其计算并写回结 果。例如,乘法指令可能需要数个处理循环来完成乘法。在这些循环期间,需要所述
操作数数据的后一指令(例如,所述乘法的结果)必须等待直至较旧指令已计算并完 成写入必要的操作数数据。作为另一实例,较早指令的执行可能导致发起将数据载入 指定寄存器的操作。然而,如果存在数据丢失(想要载入的数据不在高速缓存中),则 所述载入经排队以自某一其他资源读取所述数据。尽管针对所述载入而呼叫的指令的 执行可能己完成,但实际的载入操作可能在将必需的数据载入寄存器并变为可由后一 指令使用的操作数数据之前花费大量其他循环。作为使得必需的操作数数据在这些情形中变得可用所需的时间的结果,停止所述 需要操作数数据的后一指令的处理。停止所述必需的操作数数据可能是在解码级中。 通常,处理器IO在寄存器读取级15的一者中或第一执行级(EXE 1) 37的开始处施 加这一停止。在所述实例中,停止等待操作数数据将每一指令保持于EXE1级37处, 包括任一需要操作数数据的条件指令。如本文教示,如果不满足条件指令中指定的条件或针对所述指令指定的条件,则 所述条件指令将跳过级37处的停止,或将导致所述停止的较早终止。如果满足条件或 如果所述指令不是条件性的,则所述指令将等待以正常方式接收必需的操作数数据。在条件'指令的正常处理中,执行级的一者(例如,EXE1'级37)将在处理条件指 令时检查所述条件,如自寄存器23至级37的箭头所表示。级37-41中的后续处理将 用于或将不用于基于寄存器23中的条件代码CC与所述指令中所指定条件的比较来执 行任一操作数数据上的指令的功能。另外,在条件指令沿管线10传递时,管线较早级的一者或多者将以类似方式检 查条件。在所述实例中,可在解码级13中的处理期间做出初始检查,如自寄存器23 至解码级13的箭头所表示。寄存器读取级15还可以检查条件寄存器23以确定是否满 足所述条件,同时所述级处理条件指令,如自寄存器23至级15的箭头所表示。如果 这些较早检査的任一者确定对于所述条件指令在管线10中的特定通过将不满足所述 条件,则处理将终止或跳过EXE 1级37处的任何对于完成接收操作数数据的等待, 所述操作数数据原本是执行条件指令所需的但尚未接收到。因此,条件指令的处理需要确定所述指令是条件性的,并检验指示条件状态的条 件代码或比特以确定是否满足指定条件。指令可能在其本身内具有指示其是条件性的 字段,或者可由另一指令或机制将一指令的制约性施加至所述指令。所述教示可适用 于大量软件或指令格式。然而,其可能有利于简要概述某些实例。例如Advanced Rise Machines有限公司许可的"ARM"型处理器等某些处理器构 架支持条件指令。ARM指令集具有用以确定所述指令是条件还是非条件的字段,所述 字段是指令本身的一部分。Advance Rise Machines有限公司还提供THUMB-2指令集。 在这后一指令集中,可由较早指令将所述指令的条件施加至所述指令上。THUMB-2 指令集具有称作it (代表如果…则)的条件施加指令。thumb-2指令集具有16和 32比特两种指令长度。IT指令本身仅为16比特。另外,IT指令可影响多达四个接续 指令,其中每一指令可以是16或32比特。
图2图解说明处于正常ARM格式中的条件指令格式。所述指令为32比特长,在 所例示的符号中以比特31至比特0来编号。ARM条件指令包括一4比特条件字段(比 特31-28)及一28比特的传统指令(比特27-0)。条件字段包含主要指定下列的条件 代码所述指令是否是条件性的、考虑哪些代码比特以确定是否满足所述条件、及可 能如何满足所述条件。剩余的28个比特包含如果满足条件则执行的指令。参照图3, 在THUMB-2模式中,"条件性"指令可包括至少两个指令Al和A2。第一指令Al是 IT型指令,其提供条件状态并指示如果满足第一指令Al的条件则将执行下一指令(或 接续的数个指令)A2。因此,使第二指令A2的执行成为由第一指令Al施加至第二 指令A2上的条件指令。尽管A2显示为第二个16比特指令,如上文提及,由IT指令 Al变为条件性的每一后续指令(在THUMB-2的当前版本中,多达四个接续指令)可 以是16或32比特长。在任一情形中,如果不满足所述条件则不执行指令,也就是说如果不满足所述条 件则不产生任何构架上的可视结果。在每一情形中,管线10的一个或多个级中的逻辑 根据条件字段中的代码来辨识条件指令,并确定条件代码(CC)寄存器23中的比特 是否满足指定条件。這常,仅在己找回所有操作数数据之后才实施确定是否满足所述 条件。然而,应注意,将存在其中CC寄存器23中的条件数据也必须由较早指令设定的 情形,以针对确定是否满足特定条件指令的条件。 一个或多个级的逻辑(例如,解码 级13、寄存器读取级15或EXE 1级37)沿所述管线向后看以査看是否需要执行任何 较早指令以针对关于当前条件指令的条件确定来设定条件代码(CC)寄存器23中的 相关比特。如果(或当)不存在仍需要执行以设定条件代码(CC)寄存器23中的特 定比特的较早指令(时),则较早级的逻辑可确定在所述条件指令通过处理器管线10 的这一传递时是否满足所述条件。这时,可根据所述条件确定是否将在这一传递时执 行所述指令。如果否,则将不存在执行,且无需等待操作数数据。预测可以设定相关条件数据的较早指令可用各种方式来实施。用于追踪指令和状 态的最佳解决方案是选择用于特定管线构架的,且通常类似于用于检査仍可写入或载 入必要操作数数据的较早指令的方案。然而,概述某些关于设定条件性数据的预测实 例可能是有益的。例如所示实例的简单依次执行管线在所述指令流动通过管线时依序执行每一指 令。在这一管线中,每一执行级将包括一控制比特,指示当前位于级中的指令是否将 条件代码设定为其执行的一部分。处理条件指令的级查看那些控制比特,以确定何时 将没有较早指令来设定条件代码,从而允许所述级确定是否将执行所述条件指令。举 例而言,处理条件指令的寄存器读取级15可根据执行级37、 39和41的控制比特来使 用OR逻辑。如果所有的控制比特均指示为否,则OR结果为否,且寄存器读取级15 可确定正在执行级37、 39和41中处理的较早指令将均不设定条件代码。如果不使 用条件代码结果的转发,则还将包括对写回级19中任一指令的检査。或者,处理所述
条件指令的级可以继续扫描正在执行较早指令的级37、 39和41的控制比特,直至所 述扫描可传递通过所有执行级而未找到指示一指令将设定所述条件代码的控制比特。所属技术领域的技术人员将了解,可使用大量其他方案进行预测,从而以与那些 用于预测以确定是否需要计算及写回相关操作数数据类似的方式来确定是否将由较早 指令设定所述条件代码(或条件代码中的相关比特)。更复杂的方案将需要用于具有更 复杂处理器构架的应用,例如使用寄存器重映射的超标量设计。在所例示的实例中, 确定是否将由较早指令设定寄存器23中的代码。当然,可能存在多个条件寄存器,及 /或可将指令仅设定为寄存器中一个或多个比特的子集。预测方案可适用于特定条件设 定和必须检査的特定条件,以(例如)确认条件指令分析无需等待任何较早指令设定 适合的条件寄存器中或某一其他条件数据存储位置中的一个或多个相关比特。如上文概述,逻辑确定将不在当前通过管线时执行条件指令。因此,处理器逻辑 可采取步骤以跳过或移除所述停止,否则这些停止将包括等待一个或多个较早指令执 行以提供操作数数据。例如,可将指令标记或转换至无操作(NOP)指令。可将所述 NOP指令立即传递出EXE 1级37,且后面的级将辨识所述NOP且将不执行原始指令。 或者,可将所述指令标记为似乎色经接收到所有操作数数据,并将其立即传递至执行 区段。在这后一情形中,当执行级37处理指令时,将被告知或再次确定所述一个或多 个条件使得所述指令将不执行及相应地起作用。回应于将由于适用的条件状态而不执 行条件指令的第一确定,其他方法可从管线中移除所述指令。所述条件指令可以通过 允许下一指令覆写所述指令或在当前保持所述条件指令的级中以清除状态计时来有效 移除所述条件指令。较旧指令是否将设定相关条件比特的确定可以是逐比特分析,以针对特定的条件 指令确定较早指令是否将影响CC寄存器23中的所关注比特。在一实例中,任何将设 定条件代码(CC)寄存器23中的任何一个比特的指令会设定所述寄存器中的所有比 特。其将设定任何其借助新条件比特数据改变的比特。未发生改变的比特将以旧值重 新写入。在这一实例中,用以检査较早指令是否将影响条件指令的所关注比特的逻辑 仅需检查仍在管线中处理的任一较旧指令是否可设定条件代码(CC)寄存器23,而 无需逐比特分析哪些比特可由哪一 (些)较早指令设定。在超标量设计中,还可能需 要确定是否任何正在并列管线中处理的指令可设定条件寄存器或条件寄存器中的所关 注比特,以实现关于所关注指令的条件性确定。如果在操作数数据回来之前就设定条件代码(CC)寄存器23,则处理器10可在 不满足所需条件时终止所述条件指令的停止。在某些情形中,不存在将设定条件代码 (CC)寄存器23的正在处理的较旧指令。在其他情形中,正在处理的较旧指令将设 定条件代码(CC)寄存器,但其将在条件指令的所有操作数数据变得可用之前就设定 条件代码(CC)寄存器23。在两种情形中,通过早期确定未满足相关条件来消除由 所述停止施加以获得稍后到达的操作数数据的某些或全部时间延时。参照图4,在这一点处考虑实例性处理流程可能是有益的。图式中描绘的处理流
程包括处理管线10的数个级的功能。在管线10的级逻辑中,用于实施所示处理步骤 的精确位置是应在管线处理器技术领域中的技术人员所掌握技术内的内容,及仅以举 例方式给出实施特定步骤的级的下列论述中的陈述。所例示的处理开始于指令的初始解码(Sl)。如上文提及,ARM指令的字段或两 个(或更多个)THUMB-2指令的较早指令可将指令标识为条件性。因此,所述解码 逻辑可检验一个或多个指令的适合部分,以确定给定指令是否是条件指令(步骤S2)。 如果所述指令不是条件性的,则处理从S2移至S3,在这一点处,后面的级开始访问 含有任何必要操作数数据的适合资源。含有操作数数据的资源通常是寄存器文件。操 作数数据的接收可继续通过大量处理循环,直至其完成为止。假设在我们较早实例的 管线处理器10中,Exel级37现在含有所有用于所述指令的必需操作数数据。此后, 指令和操作数数据进入剩余的执行级(在步骤S5处)以完成执行,尽管如果所述处理 器可稍后从其他级转发操作数数据,则所述指令可前进至执行级。在所述实例中,存在获得操作数数据(例如,从转发网络接收数据)所需的某一 时间周期(S3至S4),其中针对RAW危险而获得来自较早指令的数据。类似地,如 果因为不存在所述操作数的转发网络而使用寄存器文件获得RAW数据,则可能需要 某一时间周期用于读取所述寄存器文件。这一周期(例如)可包括允许较早指令将必 需数据写入一位置的时间,其中可针对在EXE 1级37中等待或从更远程的资源处载 入数据的指令而在所述位置处获得所述数据。类似地,如果因为不存在所述操作数的 转发网络而使用寄存器文件获得RAW数据,则可能需要某一时间周期用于读取所述 寄存器文件。现在返回考虑处理步骤S2,其中解码逻辑检验指令的适合部分以确定所述指令是 否是条件指令。现在假设当前指令是条件指令。因此,解码级13确定所述指令是条件 性的,且处理从步骤S2移至步骤S6。尽管未单独显示,但在步骤S6处,后面的级开 始访问含有任何必需操作数数据的适合资源;且操作数数据的接收可继续通过大量处 理循环,直至其完成为止,基本如步骤S3-S4中指示。然而,在S2处确定指令为条件 性还启动了大量开始于S6处的歩骤,以与获得操作数数据同时实施条件性处理。在步骤S6处, 一个所述处理级的逻辑査看仍在管线中行进且在当前条件指令之 前的较早指令,以确定那些较早指令的任一者是否将设定条件数据。在所述实例中, 寄存器23保持4比特"条件代码"(CC),且所述逻辑确定正在行进的较早指令的一 者是否将代码值重新写入寄存器23中。如果先前指令将设定寄存器23中的条件代码, 则处理当前的条件指令将需要等待如步骤S7中所指示来设定所述代码。现在假设,S6处的所述确定检测到先前指令将设定寄存器23中的条件代码。在 所述情形中,处理移至步骤S7,其中所述逻辑确定是否已完成较早的条件代码更新。 如果完成条件代码更新,则处理移至步骤S8,其中检验所述条件以确定是否应如界定 来执行所述指令或将所述指令转换为NOP。在S6处,所述逻辑可确定在管线中不存在仍行进的将把条件代码写入寄存器23
的较早指令。当所述逻辑确定不存在将设定寄存器23中的条件代码的较早指令时,现 在可能能够检查条件指令中指定的条件。因此,S6处的处理现在移至步骤S8。在S8处,适合的管线级逻辑基于对CC寄存器23中的条件代码的检验和条件字 段所指定的条件指令的要求,确定是否满足指定条件。所述指令的条件字段涉及CC 寄存器的一个、两个或可能更多个比特的组合。举例而言,所述字段可指定全零 (all-zero)条件,主要检査先前指令是否将Z比特设定为1 。由前一操作产生以设定 CC寄存器23的正数将由N比特中的O (非负)和Z比特中的0 (非全零)来指示。 因此,基于正的较早结果的条件指令将检查N和Z比特以确定其均为0。如果满足条件,则将在管线10的级37-41中执行所述指令。因此,需要完整的操 作数数据。在这一情形中,处理移至步骤S3,以检査是否已接收所有的操作数数据。 如果已接收所有的操作数数据,则S3处的处理移至步骤S5,其中将所述指令和操作 数数据传递至适合级供执行之用。如果尚未接收到当前指令的所有操作数数据,则S3 处的处理移至S4以使得处理器等待至少一个处理循环以接收所有操作数。在接收到所 有数据操作数之后,处理从步骤S4移至步骤S5,其中将指令和操作数数据传递至适 合的级供执行之用。 '现在再次考虑开始于步骤S8处的处理。在S8处,首先确定不满足条件(且因为 没有较旧指令将设定条件代码而不能满足条件),则处理将移至步骤S9。移至S9会终 止或绕开通过S3和S4的处理,其中S3和S4实施等待或停止直至已接收到所有操作 数数据。如先前提及,存在数个方式以在确定所述条件将导致指令的非执行之后,恢复条 件指令通过管线的传递。在图4所示实例中,在步骤S9处将指令标记或转换至NOP (无操作)指令。所述指令转到执行级(在步骤S5),尽管那些级将仅传递指令而不 实际执行。在所述实例中,EXE 1级37处的管线逻辑将基于寄存器23中的条件代码检查和 条件字段所指定条件指令的要求来确定是否满足条件。如果前一指令将设定CC寄存 器23中的条件代码,则这一处理将等待设定所述寄存器中的代码。一旦设定条件代码, 则所述逻辑将基于所述代码来决定是否执行条件指令。然而,这种执行无需等待返回 将不执行的条件指令的所有操作数数据。在所述实例中,在S8处于EXE1级37期间检査条件。或者,可早在解码级处就 检査所述条件。可能还存在某些其中在后面的级中检查条件的情况。例如,如果满足所述条件且 已将所有操作数数据聚集于寄存器读取级15中,则条件指令和数据可传递至执行级。 执行级的一者或多者可在其确定满足条件时重新检査所述条件,且随后根据所述操作 数数据执行指令。作为另一实例,如果基于确定不满足条件而移除所述停止,则一个 方法将所述指令标记为"已接收所有数据",且将指令传递至执行级,而无论这时在 EXE 1级37中出现什么值。在指令传递通过执行级37、 39和41时,那些级的一者或
多者将再次辨识不满足所述条件,且将阻止执行所述指令。
尽管可将上文的阐述视为最佳模式及/或其他实例,但应理解,可在本文中作出各 种修改且本文所揭示的主题可以用各种形式和实例来实施,且所述教示可应用于大量 应用中,而本文仅揭示其中的某些应用。下述权利要求意欲主张任何及所有归属于本 发明教示的真实范围内的应用、修改和变化。
权利要求
1、一种控制通过管线处理器处理条件指令的方法,所述管线处理器包括多个处理级,所述方法包括在所述管线的第一级中对条件指令进行解码;分析执行所述指令所需的条件,以确定所述指令是否应由所述管线的后一级执行;及如果对所述条件的所述分析表明不应执行所述指令,则跳过操作数数据等待周期的至少一部分,所述操作数数据对于执行所述条件指令原本应是需要的。
2、 如权利要求1所述的方法,其中所述跳过步骤包括将所述条件指令传递到所 述管线的将不执行所述指令的后一级,而不等待完成接收所述操作数数据。
3、 如权利要求1所述的方法,其中所述跳过步骤包括将所述条件指令标记为无 操作(NOP)指令,且将所述NOP指令传递至所述管线的所述后一级。
4、 如权利要求1所述的方法,其中所述跳过步骤包括从所述管线中清除所述条 件指令而不将其传递至所述后一级。
5、 如权利要求l所述的方法,其中所述条件指令指定如果应执行所述指令的话则要满足的条件;及 所述分析包括对所述指定条件与较早指令写入的条件数据进行比较,以确定是否 满足所述条件。
6、 如权利要求5所述的方法,其中所述分析步骤包括确定尚未完全通过所述管线执行的任一较旧指令是否可设定执行所述条件指令 所需的条件;及在确定仍在所述管线中执行的较旧指令均不可以设定所述条件时,执行对所述条 件的所述分析。
7、 如权利要求6所述的方法,其进一步包括在确定正在所述管线的后一级中处理的较旧指令均不可以设定执行所述条件指 令所需的条件之前,开始获得原本应为执行所述条件指令所需的操作数数据并保持所 述条件指令不将其传递至所述后一级以等待完成获得所述操作数数据;及在确定正在所述管线的后一级中处理的较旧指令均不可以设定执行所述条件指 令所需的条件且所述分析根据所述条件确定应由所述管线的后一级执行所述条件指令 时,终止所述保持。
8、 如权利要求1所述的方法,其中所述条件指令包括条件字段及包含将要基于 所述条件分析来执行的指令的字段。
9、 如权利要求1所述的方法,其中所述条件指令包括第一指令,其指定所要满足的条件;及 第二指令,其指定在满足所述第一指令中所指定的所述条件的情况下将要执行的 操作。
10、 一种管线处理器,其经配置以实施如权利要求l所述的方法。
11、 一种通过管线处理指令的方法,其包括-以所需序列从存储器中提取所述指令; 在依序提取每一指令时,对每一指令进行解码;针对多个所述经解码指令中的每一者,获得所述指令所需的操作数数据;及 将指令传递至所述管线的执行区段;其中,对于所述经解码指令中将针对其获得操作数数据且对于其而言所述获得操 作数数据需要多个处理循环的条件指令,所述方法进一步包括(a) 分析执行所述条件指令所需的条件,以确定是否应由所述管线的执行区段 执行所述指令;(b) 如果对所述条件的所述分析表明应在当前通过所述管线时执行所述条件 指令,则完成接收所述条件指令所需的所述操作数数据并通过所述管线的所述执行级 来处理所述条件指令和所需的操作数数据;及 '(c) 如果对所述条件的所述分析表明不应在所述当前通过所述管线时执行所 述条件指令,则跳过获得关于所述条件指令的操作数数据所需的所述处理循环中的至 少一者。
12、 如权利要求11所述的方法,其中获得关于所述条件指令的所述操作数数据涉及保持所述条件指令,直至获得所述 操作数数据所需的所述多个处理循环期满为止;及所述跳过所述处理循环中的至少一者包括在所述多个处理循环期满之前, 一旦 确定所述条件表明不应执行所述条件指令,即刻停止关于所述条件指令的所述保持。
13、 如权利要求11所述的方法,其中所述分析步骤包括确定尚未完全通过所述管线执行的任一较旧指令是否可设定执行所述条件指令所需的条件;及在确定仍在所述管线中执行的较旧指令均不可以设定所述条件时,执行对所述条 件的所述分析。
14、 如权利要求11所述的方法,其中所述跳过步骤包括在确定不应执行所述条 件指令时,立即将所述条件指令传递到所述管线的将不执行所述指令的执行区段中。
15、 如权利要求11所述的方法,其中所述跳过步骤包括将所述条件指令标记为 无操作(NOP)指令,并将所述NOP指令传递到所述管线的所述执行区段。
16、 如权利要求11所述的方法,其中所述跳过步骤包括从所述管线中清除所述 条件指令而不将其传递到所述执行区段。
17、 如权利要求11所述的方法,其中所述条件指令包括条件字段和包含将要基 于所述条件分析来执行的指令的字段。
18、 如权利要求ll所述的方法,其中所述条件指令包括 第一指令,其指定将要满足的条件;及第二指令,其指定在满足所述第一指令中指定的所述条件的情况下将要执行的操作。
19、 一种管线处理器,其经配置以实施如权利要求ll所述的方法。
20、 一种用于处理指令的管线处理器,所述管线处理器包括 寄存器读取级,其用于获得多个处理指令中的每一者的执行所需的操作数数据; 执行级,其用于根据对应的操作数数据执行处理指令;保持装置,其用于在所述执行级执行所述指令之前轮流保持所述多个处理指令中 的每一者,直至完成接收对应操作数数据;及确定和终止装置,其用于在完成对关于所述处理指令中条件指令的对应操作数数 据的接收的保持之前确定是否将执行所述条件指令并在确定将不执行所述条件指令时 即刻终止关于所述条件性执行的所述保持。
21、 如权利要求20所述的管线处理器,其进一步包括确定装置,其用于确定尚未完全通过所述管线处理器执行的任一较旧指令是否可 以设定执行所述条件指令所需的条件,其中所述确定是否将执行所述条件指令是基于确定没有任何尚未完全通过所述 管线处理器执行的较旧指令可以设定所需条件而做出的。
全文摘要
基于非执行条件指令将不在当前通过管线处理器时执行的早期辨识,减轻原本会在等待迟来的操作数数据时施加的非执行条件指令的延时。在执行之前的合适点处,做出关于所述条件的确定。如果所述条件使得所述指令将不在此次通过管线时执行,则可终止关于所述条件指令的保持,也就是说在完成接收所有相关联的操作数数据之前跳过或停止关于所述条件指令的保持。例如,非执行指令通过所述管线的流动无需等待较早的指令计算及写入源操作数数据供所述条件指令使用。
文档编号G06F9/38GK101164042SQ200680013586
公开日2008年4月16日 申请日期2006年3月6日 优先权日2005年3月4日
发明者托马斯·安德鲁·萨托里乌斯, 杰弗里·托德·布里奇斯, 詹姆斯·诺里斯·迪芬德尔费尔, 迈克尔·斯科特·麦基尔文 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1