CN101164042A - 在条件指令将不执行时停止等待源操作数 - Google Patents

在条件指令将不执行时停止等待源操作数 Download PDF

Info

Publication number
CN101164042A
CN101164042A CNA2006800135869A CN200680013586A CN101164042A CN 101164042 A CN101164042 A CN 101164042A CN A2006800135869 A CNA2006800135869 A CN A2006800135869A CN 200680013586 A CN200680013586 A CN 200680013586A CN 101164042 A CN101164042 A CN 101164042A
Authority
CN
China
Prior art keywords
instruction
condition
pipeline
conditional order
level
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.)
Pending
Application number
CNA2006800135869A
Other languages
English (en)
Inventor
詹姆斯·诺里斯·迪芬德尔费尔
杰弗里·托德·布里奇斯
迈克尔·斯科特·麦基尔文
托马斯·安德鲁·萨托里乌斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101164042A publication Critical patent/CN101164042A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

基于非执行条件指令将不在当前通过管线处理器时执行的早期辨识,减轻原本会在等待迟来的操作数数据时施加的非执行条件指令的延时。在执行之前的合适点处,做出关于所述条件的确定。如果所述条件使得所述指令将不在此次通过管线时执行,则可终止关于所述条件指令的保持,也就是说在完成接收所有相关联的操作数数据之前跳过或停止关于所述条件指令的保持。例如,非执行指令通过所述管线的流动无需等待较早的指令计算及写入源操作数数据供所述条件指令使用。

Description

在条件指令将不执行时停止等待源操作数
技术领域
本发明涉及用于在条件使得条件指令将不执行时避免等待用于所述条件指令的操作数数据而带来的延时的技术,且涉及实施所述技术的管线处理器。
背景技术
现代微处理器及其他可编程处理器电路通常依赖于管线处理构架,以改进执行速度。管线处理器包括多个处理级,以便在每一指令穿过所述管线时依序处理所述指令。当一个级正处理一指令时,沿所述管线的其他级同时处理其他指令。
管线的每一级执行每一程序指令的总处理中所需的一个不同功能。虽然次序及/或功能可能略有变化,但典型的简单管线包括指令提取级、指令解码级、寄存器文件访问或寄存器读取级、执行级和结果写回级。更先进的处理器设计将这些级的一些或全部分解成数个单独级,以便实施这些功能的子部分。超标量设计进一步分解所述功能,及/或提供复制功能或委托指定功能至指定管线,以同时在并列管线中执行操作。随着处理器速度的增加,给定级实施其功能的时间减少。为维持或进一步改进性能,将每一级细分。每一新级在给定的循环期间实施较少的工作,但存在更多以较高时钟率同时操作的级。
在较高速构架中,获得指令据以进行操作所需的数据-也就是说对应的操作数数据-相对于处理器循环时间需要更多时间,且可能导致一个或多个循环的延时。另外,通常一指令必须在一较早或较旧的指令已将所述操作数数据写入(通常)指定寄存器之后才获得操作数数据。写后读的危险出现于指令写入操作数数据花费了大量处理循环(例如,针对乘法操作),且想要使用所述操作数数据的后一指令必须等待直至较旧指令已计算及完成写入必要的操作数数据时。存在真实的数据依赖性,因为后一指令需要来自较早指令的数据以完成其操作。因此,后一指令的处理停止于寄存器读取级内或执行级开始时。
这一写后读(RAW)危险的影响随写入操作数的较旧指令的延时增加而增大,因为所述停止会延时越来越多的处理循环。如果管线仅具有一个执行级,则所述危险事实上将不成问题,因为无论如何后一指令将总是等待较旧指令完成执行。然而,由于在超标量构架中管线深化以包含多个执行级或并列执行级,则后一指令可在较旧指令在其前面执行时继续一个或多个级,但后一指令的级执行必须等待(停止)以获得由较早指令产生的操作数数据。
如果从寄存器文件处获得操作数数据,则通常无需等待数据。然而,如果指令必须停止于寄存器文件读取(或更早的)级中,并等待长延时操作数数据写入所述寄存器文件,则存在对来自寄存器文件的数据的等待。在这一情形中,等待指令读取(或再读取)寄存器文件以获得其数据。仅在几乎或完全不存在来自其他结果产生级的操作数数据转发路径时才使用此方法。事实上,所有的现代处理器均具有操作数转发网络,且无需自寄存器文件读取RAW操作数。
条件性执行指令是基于某一经标识条件的状态而执行或不执行的指令,其中所述经标识条件通常是由条件寄存器中的一个或多个比特指示的条件。条件指令使得如果条件代码(CC)寄存器中的一个或多个条件代码匹配所述指令中指定的条件,则执行其指定功能。如果不满足所述条件,则将不执行所述条件指令。在所述情形中,可将指令标记为通过管线的更多级传递而不执行的“NOP”指令,或者可自管线中的指令流中移除所述条件性执行指令。通常,将条件性分析作为执行处理的一部分来执行。
例如条件性加、减、乘、除等多数条件指令在满足相应条件时需要用于执行指定功能的操作数数据。如果将要执行条件指令(满足条件),则其进一步的处理必须等待从寄存器文件、或经由结果转发网络从所述管线本身、或从存储器获得必需的操作数数据。现有系统通过管线施加所述条件指令的这一相同等待、停止处理,而无论是否满足所述条件。
在其中后一指令需要操作数数据但是是条件指令的情形中,如果不满足条件,则将不执行结果。在所述情形中,等待读取操作数数据会施加不必要的延时。
发明内容
本发明教示减轻因原来会在等待RAW危险操作数数据时施加的非执行条件指令而引起的延时。在执行之前的适合点处,做出关于所述条件的确定。如果所述条件使得将不在通过管线的这一传递时执行指令,则可在完成接收所有相关联的操作数数据之前终止(也就是说跳过或停止)关于所述条件指令的保持。
这些教示的范围涵盖(例如)一种用以控制条件指令通过管线处理器的处理的方法,其中所述管线处理器包含大量处理级。所述方法涉及在管线的第一级中将条件指令解码,并分析用于执行所述指令以确定是否应由管线的后一级执行所述指令所需的条件。如果所述条件的分析指示不应执行所述指令,则可以缩短或跳过对任何尚未接收到的、原本是执行所述条件指令所需的操作数数据的停止。
非执行条件指令无需等待以接收所有其操作数数据。例如,在较早的指令计算并写入用于所述条件指令的操作数数据之前,不再存在延时。
通常,如果不满足所述条件指令的指定条件,则将不执行所述指令。然而,可能存在其中条件指令经构架以使得在满足指定条件时不执行的情况。
存在数个将允许指令继续通过管线而不执行所述指令的处理技术。例如,可将所述指令标记为或转换至无操作(NOP)指令。后面的级将标识所述NOP,且将不执行原始指令(注意,所述NOP被作为NOP来执行)。或者,可将所述指令标记为好像已接收到所有操作数数据,从而避开等待长的延时数据。在这后一情形中,在执行级处理所述指令时,其将再次确定条件使得所述指令不应被执行并相应地采取行动。
回应于其中由于适用的条件状态而不执行所述指令的第一确定,其他方法可能从管线中整体移除非执行条件指令。可以通过允许依序的下一指令覆写其中确定应不执行所述指令的级中的所述条件指令而有效地移除所述条件指令,或者所述处理器可以在当前保持所述条件指令的级中以清除状态计时。
存在其中可以不设定条件指令所指定的条件的情形。由于较早指令可写入必要的操作数数据,则较早指令也可以设定用以指定特定条件的状态的代码或数据。在确定所述条件是否将导致条件指令的执行之前,可能必须预测管线中的条件指令以确定仍在处理中的较早指令是否可能设定关于相关条件的数据。如果不存在由较早指令设定相关条件数据的这种可能性,则条件分析可以确定将执行还是不执行所述条件指令,且随后等待或不等待用于执行所述指令所需的操作数数据。如果存在将设定相关条件数据的较早指令,则所述条件指令必须等待更新想要在可以确定是执行还是不执行条件指令之前就知晓的条件数据。
本发明教示还涵盖管线处理器。例如,这种处理器可以包括解码级、寄存器读取级和执行区段。执行区段包括多个级。一个所述指令的执行是条件性的,其中基于指定条件的出现来执行一个指令。通常,当指令遇到其不能使用数据转发网络立即解决的RAW危险时,保持所述指令,避免其执行直至其已获得所有用于其执行所需的源操作数数据。然而,基于尚未出现指定条件的确定而停止在执行所述条件指令之前的保持。
其他目标、优点及新颖特征将在以下说明中部分地加以阐述,且在审查以下说明及随附图式后将部分地对所属技术领域中的技术人员显而易见,或可通过产生或操作所述实例而知晓。本发明教示的目标及优点可以通过实践或使用随附权利要求书中特别指出的方法、手段和组合来实现及达成。
附图说明
所述图式仅以举例而非限制方式描绘根据本发明教示的一个或多个实施方案。在图式中,相同的参考编号表示相同或相似的元件。
图1是管线处理器的简化实例的功能方块图,所述管线处理器可实施根据本文所述技术的条件指令处理。
图2是根据ARM协议的条件指令的格式的图形表示。
图3是条件状态和相关联的可执行指令的格式的图形表示,所述条件状态和可执行指令一起形成根据ARM协议的THUMB扩展的条件指令。
图4是有利于解释适用于处理条件指令的逻辑实例的流程图。
具体实施方式
在下列详细说明中,以举例方式列举大量具体细节以提供相关教示的透彻理解。然而,所属技术领域的技术人员将易于了解,可在没有这些细节的情况下实践本发明教示。在其他示例中,以相对高级别而非详细地阐述众所周知的方法、程序、组件和电路,以免不必要地淡化本发明教示的各方面。
本文揭示的各种技术涉及撤销或避免停止管线中的条件指令,以等待接收非执行条件指令的操作数数据。例如,针对将不在此次通过管线时执行的条件指令,这种技术减少或减轻对正行进通过管线的较早指令进行写入操作数数据的等待。
条件指令的执行(也就是所述指令所指定处理的实施)取决于指定条件,例如可由条件代码(CC)寄存器中设定的一个或多个比特表示。可能存在其中条件指令经构架以使得如果满足指定条件则不执行所述指令的情况。然而,出于进一步论述所述实例的目的,如果满足所述条件则执行条件指令,且如果不满足条件指令的指定条件则不执行。
现在详细参照随附图式中所图解说明及下文论述的实例。图1是管线处理器10的简化方块图。为便于论述,管线10的所述实例是一标量设计,其主要实施单个级管道。然而,所属技术领域的技术人员将了解,本文所述条件指令的处理还适用于超标量设计和其他实施并列管线的构架。同样,管线的深度(例如,级数量)仅为代表性。实际的管线可具有比所述实例中的管线10更少或更多个级。实际的超标量实例可由两个或更多个并列管线组成。
简化的管线10包括5个主要的管线处理级类别:提取11、解码13、寄存器读取15、执行17和写回19。图式中的箭头表示逻辑数据流,而不必须为实际连接。所属技术领域的技术人员将了解,这些级的任一者可被分解为分别执行相关功能的一部分的多个级,或者所述管线可包括用于提供其他功能的其他级。出于论述的目的,数个主要的级类别显示为单独级,尽管通常针对高速处理器而将每一级类别分解为两个或更多个级。在有益于论述关于条件指令的处理并避免对写入此类指令必需的源操作数数据的等待时间的地方,将执行区段显示为包括多个级。
在实例性管线10中,第一级是指令提取级11。提取级11获得用于由后面的级处理的指令。提取级11从一般以存储器21表示的存储器层级获得所述指令。存储器21通常包括指令或一级(L1)高速缓存、二级(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-1。在某些情形中,寄存器读取级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)危险。
有时,写入操作数数据的较早指令会花费大量处理循环来完成其计算并写回结果。例如,乘法指令可能需要数个处理循环来完成乘法。在这些循环期间,需要所述操作数数据的后一指令(例如,所述乘法的结果)必须等待直至较旧指令已计算并完成写入必要的操作数数据。作为另一实例,较早指令的执行可能导致发起将数据载入指定寄存器的操作。然而,如果存在数据丢失(想要载入的数据不在高速缓存中),则所述载入经排队以自某一其他资源读取所述数据。尽管针对所述载入而呼叫的指令的执行可能已完成,但实际的载入操作可能在将必需的数据载入寄存器并变为可由后一指令使用的操作数数据之前花费大量其他循环。
作为使得必需的操作数数据在这些情形中变得可用所需的时间的结果,停止所述需要操作数数据的后一指令的处理。停止所述必需的操作数数据可能是在解码级中。通常,处理器10在寄存器读取级15的一者中或第一执行级(EXE 1)37的开始处施加这一停止。在所述实例中,停止等待操作数数据将每一指令保持于EXE 1级37处,包括任一需要操作数数据的条件指令。
如本文教示,如果不满足条件指令中指定的条件或针对所述指令指定的条件,则所述条件指令将跳过级37处的停止,或将导致所述停止的较早终止。如果满足条件或如果所述指令不是条件性的,则所述指令将等待以正常方式接收必需的操作数数据。
在条件指令的正常处理中,执行级的一者(例如,EXE 1级37)将在处理条件指令时检查所述条件,如自寄存器23至级37的箭头所表示。级37-41中的后续处理将用于或将不用于基于寄存器23中的条件代码CC与所述指令中所指定条件的比较来执行任一操作数数据上的指令的功能。
另外,在条件指令沿管线10传递时,管线较早级的一者或多者将以类似方式检查条件。在所述实例中,可在解码级13中的处理期间做出初始检查,如自寄存器23至解码级13的箭头所表示。寄存器读取级15还可以检查条件寄存器23以确定是否满足所述条件,同时所述级处理条件指令,如自寄存器23至级15的箭头所表示。如果这些较早检查的任一者确定对于所述条件指令在管线10中的特定通过将不满足所述条件,则处理将终止或跳过EXE 1级37处的任何对于完成接收操作数数据的等待,所述操作数数据原本是执行条件指令所需的但尚未接收到。
因此,条件指令的处理需要确定所述指令是条件性的,并检验指示条件状态的条件代码或比特以确定是否满足指定条件。指令可能在其本身内具有指示其是条件性的字段,或者可由另一指令或机制将一指令的制约性施加至所述指令。所述教示可适用于大量软件或指令格式。然而,其可能有利于简要概述某些实例。
例如Advanced Risc 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模式中,“条件性”指令可包括至少两个指令A1和A2。第一指令A1是IT型指令,其提供条件状态并指示如果满足第一指令A1的条件则将执行下一指令(或接续的数个指令)A2。因此,使第二指令A2的执行成为由第一指令A1施加至第二指令A2上的条件指令。尽管A2显示为第二个16比特指令,如上文提及,由IT指令A1变为条件性的每一后续指令(在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的级逻辑中,用于实施所示处理步骤的精确位置是应在管线处理器技术领域中的技术人员所掌握技术内的内容,及仅以举例方式给出实施特定步骤的级的下列论述中的陈述。
所例示的处理开始于指令的初始解码(S1)。如上文提及,ARM指令的字段或两个(或更多个)THUMB-2指令的较早指令可将指令标识为条件性。因此,所述解码逻辑可检验一个或多个指令的适合部分,以确定给定指令是否是条件指令(步骤S2)。如果所述指令不是条件性的,则处理从S2移至S3,在这一点处,后面的级开始访问含有任何必要操作数数据的适合资源。含有操作数数据的资源通常是寄存器文件。操作数数据的接收可继续通过大量处理循环,直至其完成为止。假设在我们较早实例的管线处理器10中,Exe 1级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比特中的0(非负)和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处于EXE 1级37期间检查条件。或者,可早在解码级处就检查所述条件。
可能还存在某些其中在后面的级中检查条件的情况。例如,如果满足所述条件且已将所有操作数数据聚集于寄存器读取级15中,则条件指令和数据可传递至执行级。执行级的一者或多者可在其确定满足条件时重新检查所述条件,且随后根据所述操作数数据执行指令。作为另一实例,如果基于确定不满足条件而移除所述停止,则一个方法将所述指令标记为“已接收所有数据”,且将指令传递至执行级,而无论这时在EXE 1级37中出现什么值。在指令传递通过执行级37、39和41时,那些级的一者或多者将再次辨识不满足所述条件,且将阻止执行所述指令。
尽管可将上文的阐述视为最佳模式及/或其他实例,但应理解,可在本文中作出各种修改且本文所揭示的主题可以用各种形式和实例来实施,且所述教示可应用于大量应用中,而本文仅揭示其中的某些应用。下述权利要求意欲主张任何及所有归属于本发明教示的真实范围内的应用、修改和变化。

Claims (21)

1.一种控制通过管线处理器处理条件指令的方法,所述管线处理器包括多个处理级,所述方法包括:
在所述管线的第一级中对条件指令进行解码;
分析执行所述指令所需的条件,以确定所述指令是否应由所述管线的后一级执行;及
如果对所述条件的所述分析表明不应执行所述指令,则跳过操作数数据等待周期的至少一部分,所述操作数数据对于执行所述条件指令原本应是需要的。
2.如权利要求1所述的方法,其中所述跳过步骤包括将所述条件指令传递到所述管线的将不执行所述指令的后一级,而不等待完成接收所述操作数数据。
3.如权利要求1所述的方法,其中所述跳过步骤包括将所述条件指令标记为无操作(NOP)指令,且将所述NOP指令传递至所述管线的所述后一级。
4.如权利要求1所述的方法,其中所述跳过步骤包括从所述管线中清除所述条件指令而不将其传递至所述后一级。
5.如权利要求1所述的方法,其中:
所述条件指令指定如果应执行所述指令的话则要满足的条件;及
所述分析包括对所述指定条件与较早指令写入的条件数据进行比较,以确定是否满足所述条件。
6.如权利要求5所述的方法,其中所述分析步骤包括:
确定尚未完全通过所述管线执行的任一较旧指令是否可设定执行所述条件指令所需的条件;及
在确定仍在所述管线中执行的较旧指令均不可以设定所述条件时,执行对所述条件的所述分析。
7.如权利要求6所述的方法,其进一步包括:
在确定正在所述管线的后一级中处理的较旧指令均不可以设定执行所述条件指令所需的条件之前,开始获得原本应为执行所述条件指令所需的操作数数据并保持所述条件指令不将其传递至所述后一级以等待完成获得所述操作数数据;及
在确定正在所述管线的后一级中处理的较旧指令均不可以设定执行所述条件指令所需的条件且所述分析根据所述条件确定应由所述管线的后一级执行所述条件指令时,终止所述保持。
8.如权利要求1所述的方法,其中所述条件指令包括条件字段及包含将要基于所述条件分析来执行的指令的字段。
9.如权利要求1所述的方法,其中所述条件指令包括:
第一指令,其指定所要满足的条件;及
第二指令,其指定在满足所述第一指令中所指定的所述条件的情况下将要执行的操作。
10.一种管线处理器,其经配置以实施如权利要求1所述的方法。
11.一种通过管线处理指令的方法,其包括:
以所需序列从存储器中提取所述指令;
在依序提取每一指令时,对每一指令进行解码;
针对多个所述经解码指令中的每一者,获得所述指令所需的操作数数据;及
将指令传递至所述管线的执行区段;
其中,对于所述经解码指令中将针对其获得操作数数据且对于其而言所述获得操作数数据需要多个处理循环的条件指令,所述方法进一步包括:
(a)分析执行所述条件指令所需的条件,以确定是否应由所述管线的执行区段执行所述指令;
(b)如果对所述条件的所述分析表明应在当前通过所述管线时执行所述条件指令,则完成接收所述条件指令所需的所述操作数数据并通过所述管线的所述执行级来处理所述条件指令和所需的操作数数据;及
(c)如果对所述条件的所述分析表明不应在所述当前通过所述管线时执行所述条件指令,则跳过获得关于所述条件指令的操作数数据所需的所述处理循环中的至少一者。
12.如权利要求11所述的方法,其中:
获得关于所述条件指令的所述操作数数据涉及保持所述条件指令,直至获得所述操作数数据所需的所述多个处理循环期满为止;及
所述跳过所述处理循环中的至少一者包括:在所述多个处理循环期满之前,一旦确定所述条件表明不应执行所述条件指令,即刻停止关于所述条件指令的所述保持。
13.如权利要求11所述的方法,其中所述分析步骤包括:
确定尚未完全通过所述管线执行的任一较旧指令是否可设定执行所述条件指令所需的条件;及
在确定仍在所述管线中执行的较旧指令均不可以设定所述条件时,执行对所述条件的所述分析。
14.如权利要求11所述的方法,其中所述跳过步骤包括在确定不应执行所述条件指令时,立即将所述条件指令传递到所述管线的将不执行所述指令的执行区段中。
15.如权利要求11所述的方法,其中所述跳过步骤包括将所述条件指令标记为无操作(NOP)指令,并将所述NOP指令传递到所述管线的所述执行区段。
16.如权利要求11所述的方法,其中所述跳过步骤包括从所述管线中清除所述条件指令而不将其传递到所述执行区段。
17.如权利要求11所述的方法,其中所述条件指令包括条件字段和包含将要基于所述条件分析来执行的指令的字段。
18.如权利要求11所述的方法,其中所述条件指令包括:
第一指令,其指定将要满足的条件;及
第二指令,其指定在满足所述第一指令中指定的所述条件的情况下将要执行的操作。
19.一种管线处理器,其经配置以实施如权利要求11所述的方法。
20.一种用于处理指令的管线处理器,所述管线处理器包括:
寄存器读取级,其用于获得多个处理指令中的每一者的执行所需的操作数数据;
执行级,其用于根据对应的操作数数据执行处理指令;
保持装置,其用于在所述执行级执行所述指令之前轮流保持所述多个处理指令中的每一者,直至完成接收对应操作数数据;及
确定和终止装置,其用于在完成对关于所述处理指令中条件指令的对应操作数数据的接收的保持之前确定是否将执行所述条件指令并在确定将不执行所述条件指令时即刻终止关于所述条件性执行的所述保持。
21.如权利要求20所述的管线处理器,其进一步包括:
确定装置,其用于确定尚未完全通过所述管线处理器执行的任一较旧指令是否可以设定执行所述条件指令所需的条件,
其中所述确定是否将执行所述条件指令是基于确定没有任何尚未完全通过所述管线处理器执行的较旧指令可以设定所需条件而做出的。
CNA2006800135869A 2005-03-04 2006-03-06 在条件指令将不执行时停止等待源操作数 Pending CN101164042A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/073,165 2005-03-04
US11/073,165 US20060200654A1 (en) 2005-03-04 2005-03-04 Stop waiting for source operand when conditional instruction will not execute

Publications (1)

Publication Number Publication Date
CN101164042A true CN101164042A (zh) 2008-04-16

Family

ID=36688170

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800135869A Pending CN101164042A (zh) 2005-03-04 2006-03-06 在条件指令将不执行时停止等待源操作数

Country Status (8)

Country Link
US (1) US20060200654A1 (zh)
EP (1) EP1853998A1 (zh)
JP (1) JP2008537208A (zh)
KR (1) KR20070108936A (zh)
CN (1) CN101164042A (zh)
BR (1) BRPI0609195A2 (zh)
IL (1) IL185613A0 (zh)
WO (1) WO2006094297A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739237A (zh) * 2009-12-21 2010-06-16 北京龙芯中科技术服务中心有限公司 微处理器功能性指令实现装置和方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979675B2 (en) * 2009-02-12 2011-07-12 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US9928067B2 (en) * 2012-09-21 2018-03-27 Intel Corporation Methods and systems for performing a binary translation
KR20190037534A (ko) 2017-09-29 2019-04-08 삼성전자주식회사 디스플레이장치 및 그 제어방법
CN118295712B (zh) * 2024-06-05 2024-09-17 芯来智融半导体科技(上海)有限公司 数据处理方法、装置、设备和介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617574A (en) * 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
JP3547585B2 (ja) * 1997-05-14 2004-07-28 三菱電機株式会社 条件実行命令を有するマイクロプロセッサ
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6622238B1 (en) * 2000-01-24 2003-09-16 Hewlett-Packard Development Company, L.P. System and method for providing predicate data
US6604192B1 (en) * 2000-01-24 2003-08-05 Hewlett-Packard Development Company, L.P. System and method for utilizing instruction attributes to detect data hazards
US6490674B1 (en) * 2000-01-28 2002-12-03 Hewlett-Packard Company System and method for coalescing data utilized to detect data hazards
US6512706B1 (en) * 2000-01-28 2003-01-28 Hewlett-Packard Company System and method for writing to a register file
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US20040255103A1 (en) * 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739237A (zh) * 2009-12-21 2010-06-16 北京龙芯中科技术服务中心有限公司 微处理器功能性指令实现装置和方法
CN101739237B (zh) * 2009-12-21 2013-09-18 龙芯中科技术有限公司 微处理器功能性指令实现装置和方法

Also Published As

Publication number Publication date
BRPI0609195A2 (pt) 2010-03-02
US20060200654A1 (en) 2006-09-07
KR20070108936A (ko) 2007-11-13
IL185613A0 (en) 2008-01-06
WO2006094297A1 (en) 2006-09-08
JP2008537208A (ja) 2008-09-11
EP1853998A1 (en) 2007-11-14

Similar Documents

Publication Publication Date Title
TWI416407B (zh) 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品
EP0813145B1 (en) Pipelined instruction dispatch unit in a superscalar processor
US8200987B2 (en) Dynamic object-level code translation for improved performance of a computer processor
CN101819521B (zh) 微处理器以及解析第一或第二类别条件分支指令的方法
EP0689131A1 (en) A computer system for executing branch instructions
CN101523344B (zh) 用于解析同时所预测分支指令的方法及系统
US20100058034A1 (en) Creating register dependencies to model hazardous memory dependencies
US6076153A (en) Processor pipeline including partial replay
CN101681259A (zh) 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法
CN101501636A (zh) 用于基于动态可改变延迟来执行处理器指令的方法和设备
US5832260A (en) Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction
GB2362729A (en) Memory access debug using an emulator
KR101579589B1 (ko) 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법
EP0199009A2 (en) Path coverage measuring system in a programme
US10430191B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption
US20080168260A1 (en) Symbolic Execution of Instructions on In-Order Processors
CN101164042A (zh) 在条件指令将不执行时停止等待源操作数
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
WO2002008893A1 (en) A microprocessor having an instruction format containing explicit timing information
US5461715A (en) Data processor capable of execution of plural instructions in parallel
US7779230B2 (en) Data flow execution of methods in sequential programs
CN110515659B (zh) 一种原子指令的执行方法和装置
US6711670B1 (en) System and method for detecting data hazards within an instruction group of a compiled computer program
US6668306B2 (en) Non-vital loads
KR20180031266A (ko) 전자 장치, vliw 프로세서 및 그 제어 방법들

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication