CN101689107A - 用于将条件指令扩展为无条件指令与选择指令的方法和系统 - Google Patents

用于将条件指令扩展为无条件指令与选择指令的方法和系统 Download PDF

Info

Publication number
CN101689107A
CN101689107A CN200880021909A CN200880021909A CN101689107A CN 101689107 A CN101689107 A CN 101689107A CN 200880021909 A CN200880021909 A CN 200880021909A CN 200880021909 A CN200880021909 A CN 200880021909A CN 101689107 A CN101689107 A CN 101689107A
Authority
CN
China
Prior art keywords
instruction
conditional
processor
select
instructions
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
CN200880021909A
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 CN101689107A publication Critical patent/CN101689107A/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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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

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)
  • Executing Machine-Instructions (AREA)

Abstract

本发明揭示一种在管线处理器内扩展具有多个操作数的条件指令的方法。所述方法在发布级之前识别所述条件指令且确定所述多个操作数是否超过预定阈值。所述方法将所述条件指令扩展为非条件指令和选择指令。所述方法进一步在单独管线中执行所述非条件指令和所述选择指令。

Description

用于将条件指令扩展为无条件指令与选择指令的方法和系统
技术领域
本发明大体上涉及计算机系统,且更明确地说,涉及一种用于将条件指令扩展为非条件指令与选择指令的方法和系统。
背景技术
处理器管线由许多级构成,其中每一级执行与指令相关的特定功能。每一级称为管级或管段。所述级连接在一起以形成管线。指令在管线的一个末端处进入且在另一末端处退出。指令依序在流中流动穿过管线级。所述级经布置以使得若干级可同时处理若干指令。与一次处理一个指令相比,同时在不同管线级处处理多个指令允许处理器较快速地处理指令,进而改进处理器的执行速度。
在处理器内,可能有多个管理处理指令。个别管线可执行唯一处理器功能。举例来说,处理器可能具有一个管线用于执行加载/存储指令且另一管线用于执行基于整数或逻辑的指令。通过基于指令的功能性而分离管线,处理器可在执行指令时更有效地利用其资源。
当处理器处理指令时,聚集执行指令所必要的信息。所述信息可与指令中的每一操作数相关。在处理器内,可针对每一指令同时聚集的信息量可由处理器的寄存器堆内的端口数目限制。处理器的寄存器堆可由可读取和写入存取的较大阵列构成。处理器所支持的读取端口数目可由处理器内的可用硬件空间以及每一读取端口所必要的额外功率限制。处理器利用每一读取端口以检索与指令中的每一操作数相关的信息。
随着将较复杂的指令添加到处理器的指令集,可能需要额外读取端口以便在执行指令时同时针对指令中的所有操作数检索信息。通常,较新指令可能具有比读取端口多的操作数。如果处理器不具有足够的读取端口,那么所述指令可能需要额外处理器循环来执行。又,处理器的效率可能会受到影响。
可能受与读取端口数目限制相关的执行延迟影响的一种类型的指令是条件指令。条件指令通常由条件部分和非条件部分(例如逻辑函数、算数函数等)组成。归因于缺少读取端口,具有比读取端口多的操作数的条件指令可能需要多个处理器循环来执行。
发明内容
因此,所述行业中需要加速执行具有比可用读取端口多的操作数的条件指令的方式。可通过分离指令的条件部分与非条件函数来加速指令执行。所述分离形成两个较小指令,其每一者需要比原始条件指令少的读取端口。可同时在不同管线中执行单独指令的执行,以便利用处理器的并行处理能力。
本发明揭示一种在管线处理器内扩展具有多个操作数的条件指令的方法,所述管线处理器具有多个管线。所述方法在发布级之前识别所述条件指令且确定所述多个操作数是否超过预定阈值。所述方法将所述条件指令扩展为非条件指令和选择指令。所述方法进一步在单独管线中执行所述非条件指令和所述选择指令。
本发明揭示一种在管线处理器内扩展具有多个操作数的条件指令的方法。所述方法在预解码级期间识别所述条件指令具有超过预定阈值的操作数。所述方法当在发布级中处理所述条件指令时将所述指令扩展为非条件指令和选择指令。所述方法进一步在执行级期间执行所述非条件指令和所述选择指令。
本发明揭示一种在管线处理器内扩展具有多个操作数的条件指令的方法。所述方法在发布级之前识别所述条件指令且确定所述多个操作数是否超过预定阈值。所述方法将所述条件指令扩展为非条件指令和选择指令。所述方法进一步执行所述非条件指令和所述选择指令。
本发明揭示一种具有预解码逻辑电路的管线处理器。所述预解码逻辑电路经配置以识别条件指令是否具有超过预定阈值的操作数。所述预解码逻辑电路与发布逻辑电路通信,所述发布逻辑电路经配置以接收所述所识别的条件指令,且扩展所述所识别的条件指令。所述发布逻辑电路与执行单元通信,所述执行单元经配置以执行所述经扩展的条件指令。
将从以下详细描述和附图中明白本发明的较完整理解以及本发明的另外特征和优点。
附图说明
图1展示使用本发明的实施例的处理器的高级逻辑硬件框图。
图2显示图1的CPU的上部和下部管线的较详细框图。
图3A显示由图1的处理器执行的示范性指令群组。
图3B显示示范性经扩展指令群组。
图4A展示由图1的处理器执行的另一示范性指令群组。
图4B展示另一示范性经扩展指令群组。
图5展示图3A到3B的示范性指令群组在通过图1的处理器的各种级执行时的时序图。
图6展示说明通过图1的处理器的上部和下部管线的示范性指令流的流程图。
具体实施方式
下文结合附图陈述的详细描述既定作为对本发明的多个实施例的描述,且不希望代表其中可实践本发明的仅有实施例。所述详细描述包括特定细节以用于提供对本发明的透彻理解。然而,所属领域的技术人员将明白,可在没有这些特定细节的情况下实践本发明。在一些例子中,以框图形式展示众所周知的结构和组件以免混淆本发明的概念。可能仅仅出于方便和清楚起见而使用首字母缩写词和其它描述性术语,且其并不希望限制本发明的范围。
图1展示利用如下文所描述的本发明的一个实施例的超标量处理器100的高级视图。处理器100具有中央处理单元(CPU)102,其经由专用高速总线104耦合到指令高速缓冲存储器106。指令高速缓冲存储器106还经由通用总线110耦合到存储器108。CPU 102具有上部管线150,其耦合到下部管线160和165。CPU 102控制将指令从存储器108加载到指令高速缓冲存储器106中。如所属领域的技术人员了解的,指令高速缓冲存储器106可为经设计以桥接存储器108与处理器100之间的速度间隙的专门存储器。将从存储器108获取的指令放置在较快速的指令高速缓冲存储器106中,所述较快速的指令高速缓冲存储器106能够以处理器时钟速度来读取。在向指令高速缓冲存储器106加载指令之后,CPU 102经由高速总线104来存取所述指令。将指令从指令高速缓冲存储器106加载到上部管线150中。在上部管线150中处理指令之后,将所述指令发送到下部管线160或165以供进一步处理。如图2的论述中描述,上部管线150可含有逻辑电路,其可识别具有超过预定阈值的操作数的条件指令。在已经识别了这些条件指令之后,处理器100可根据本发明的一个实施例来处理所述条件指令。
指令以顺序编程次序离开上部管线150。在离开上部管线150之后,可在下部管线160或165中重新布置所述指令以实现较有效的处理。在上部管线150中对指令执行的一些示范性处理功能可包括获取指令、对准指令、解码指令、将指令发布到下部管线160或165等。在下部管线160和165内,指令处理可包括跟踪指令、检索操作数信息以用于指令执行、执行指令、记录指令结果等。
下部管线160和165可含有各种执行单元(EU)130,例如算术逻辑单元、浮点单元、存储单元、加载单元等。举例来说,EU 130可具有用于执行广泛范围的算术功能的算术逻辑单元,所述算术功能例如为整数相加、整数相减、整数相乘、逐位逻辑运算(例如,AND、NOT、OR、XOR)、位移位等。或者,EU 130可具有用于执行加载/存储操作(例如MOV、LOAD等)的执行单元。为了增加处理器100的效率,下部管线160和165可经组织以执行某些功能。举例来说,下部管线160可含有执行算术和逻辑指令的EU 130,而下部管线165可含有执行加载/存储指令的EU 130。通过将某指令功能性隔离到单独下部管线160或165中,可能不需要重复的EU 130。
如所属领域的技术人员可了解的,管线级可具有经设计以保持指令的寄存器或寄存器群组。当指令进入特定级时,处理器100将所述指令加载到链接到所述级的寄存器或寄存器群组中。当指令保持在每一级内的寄存器或寄存器群组中时,逻辑电路可执行某些操作,这取决于所述指令。在逻辑电路已经执行了既定操作之后,接着将所述指令继续传递到下一顺序级。
图2显示CPU 102的上部管线150的较详细框图。上部管线150具有获取逻辑电路202,其通过高速总线104耦合到指令高速缓冲存储器106。获取逻辑电路202还耦合到预解码逻辑电路201和获取级203。获取级203耦合到解码级205,所述解码级205又耦合到发布级207。耦合到解码级205的是解码逻辑电路204。类似地,发布级207耦合到发布逻辑电路206。在发布级207内的是若干指令队列(为了易于说明起见未图示),其在指令被发布到下部管线160和165之前保持所述指令。指令队列可经组织以接受将在下部管线160或165中的一者中处理的指令。如所属领域的技术人员了解的,指令队列充当FIFO(先进先出)缓冲器,其在指令被发布之前以顺序次序保持所述指令。
指令进入上部管线150且从获取级203移动穿过发布级207。在指令离开发布级207之后,指令在下部管线160或下部管线165中执行。在下部管线160内的是执行级220和EU 130。下部管线165具有执行级225和EU 130。下部管线160和165分别存取寄存器堆230或235。在一个实施例中,寄存器堆230和235可为彼此的镜像。在一个实施例中,寄存器堆230和235可具有三个读取端口以用于当指令在执行级220或225中执行时提供指令操作数信息。
在上部管线150中,获取逻辑电路202确定并随后获取指令。作为获取过程的部分,处理器100首先确定所述指令是否已经在指令高速缓冲存储器106中。如果指令尚未在指令高速缓冲存储器106中,那么处理器100从存储器108中检索指令并将其加载到指令高速缓冲存储器106中。预解码逻辑电路201与获取逻辑电路202介接以在将指令加载到指令高速缓冲存储器106中之前确定关于所述指令的特性信息。举例来说,预解码逻辑电路201可识别指令为操作数超过预定阈值的条件指令,之后将所述条件指令加载到指令高速缓冲存储器106中。在此实例中,预解码逻辑电路201可在指令高速缓冲存储器106中对所述指令“加标签”,因此识别所述指令具有此特性信息。所述特性信息可由上部管150内的其它逻辑电路使用以加速指令的处理。
在指令高速缓冲存储器106中,将指令分组到称为高速缓冲存储器线的区段中。每一高速缓冲存储器线可含有多个指令。在每一高速缓冲存储器线内,可保存与指令相关的额外信息。可一次若干指令地从指令高速缓冲存储器106获取指令。在指令由获取逻辑电路202获取之后,将指令发送到解码级205。
在解码级205中,由解码逻辑电路204解码所述指令以识别所述指令的所有详情。如先前提及的,预解码逻辑电路201可识别所述指令的一般特性。在解码级205中,识别与指令相关的额外信息。举例来说,在解码级205中通过解码逻辑电路204识别指令类型(即,ADDEQ、SUBEQ、AND等)、待用指令寻址的特定寄存器和指令的任何相依性。在解码级205期间检索或识别的信息允许处理器100确定下部管线160或165中的哪一者将接收所述指令以用于进一步处理。在解码级205中处理指令之后,指令移动到发布级207。
在发布级207中,发布逻辑电路206确定哪个下部管线160或165将接收指令。下部管线160可经设计以执行算术指令,而下部管线165可经设计以执行加载/存储指令。发布逻辑电路206根据指令将被发送到下部管线160或165中的哪一者以供执行来将指令布置在指令队列中。如图3A到3B和图4A到4B的论述中较详细解释,发布逻辑电路206可扩展已被预解码逻辑电路201加标签的特定指令,以便增加处理器的效率。
从发布级207,将指令继续发送到下部管线160和165以供执行。在下部管线160和165内可能存在其它各种级,例如保留级、寄存器存取级等,但为了易于说明起见未展示。当指令达到执行级220或225时,处理器100存取恰当寄存器堆230或235以检索执行所述指令所必要的操作数信息。如先前提及的,寄存器堆230和235可为彼此的镜像。因此,当处理器100更新寄存器堆230时,其还更新寄存器堆235。通过使用寄存器堆230和235的重复复本,处理器100可在每一下部管线160或165内同时执行多个指令。在从寄存器堆中检索信息之后,EU 130执行所述指令且指令执行的结果被写回到寄存器堆225和235。
图3A显示可由处理器100执行的示范性指令群组300。图3A中的指令A为条件相加指令,其具有四个源操作数R1、R2、R3和R4。指令的源操作数对应于通过读取端口从寄存器堆230和235读取的信息。发送到寄存器堆230或235的信息可由目的地操作数指定,且使用写入端口写入到寄存器堆230和235。指令B为相减指令,其具有两个源操作数(R7和R6)和一个目的地操作数(R5)。指令C为相乘指令,其具有两个源操作数(R5和R8)和一个目的地操作数(R9)。
如较详细解释的,呈原始形式的指令A可能不由处理器100执行。而是,通过使用本发明的一个实施例,处理器100可将指令A修改为两个较小指令以实现较有效的处理。为了易于说明起见,指令A被描述为犹如由常规处理器执行那样,以便了解各种实施例的发明性概念。
在由常规处理器处理指令A(条件ADD指令)期间,从寄存器堆230或235读取源操作数R1、R2、R3和R4的值。在已经读取了源操作数的值之后,将寄存器R3中的值移位达R4中所含有的值,且将结果与寄存器R2中的内容相加。如果条件零旗标为“0”,那么将所述相加的结果存储在R1中。如果零旗标为“1”,那么将寄存器R1的内容恢复到其先前值。
如所属领域的技术人员所了解,处理器内的条件旗标可对应于NZCV状态位(N=负,Z=零,C=进位,V=溢出)。条件旗标可由指令设置,某些指令例如为比较指令等。处理器100使用条件旗标来确定条件执行是否执行。如果条件指令由于未满足条件而不执行,那么处理器将先前所读取的值重新写回到目标寄存器中。对于指令A,目标寄存器为R1
在指令A的常规处理期间,R1的值将为所计算的新值或R1的先前值,这取决于条件旗标。如果未满足条件(即,条件零旗标=“0”),那么常规处理器将取消R1的写入。常规处理器执行此功能的一种方式是利用寄存器重命名。具体地说,当指令A执行时,将读取R1的旧值并将其保存在另一寄存器中,且假如指令不执行,那么将把寄存器重命名回到R1。在此例子中利用寄存器重命名可能需要额外处理器时间以及其它处理器资源。本发明的实施例可消除对在未满足指令的条件性时重命名寄存器的需要。
如先前提及的,处理器100可每寄存器堆230或235具有三个读取端口。由于指令A具有四个源操作数,所以源操作数的数目超过读取端口的数目达1。用于寄存器堆230和235的读取端口的数目可用作用于确定条件指令是否适合扩展的预定阈值。在替代实施例中,每寄存器堆仅具有两个读取端口的处理器可具有预定阈值2。
当在获取级203中处理指令A时,预解码逻辑电路201可能已经识别到指令A为具有比读取端口多的操作数的条件指令且因此超过预定阈值。在此实例中,指令A可能已在加载到指令高速缓冲存储器106中时被“加标签”有此信息。在一个实施例中,加标签信息由发布逻辑电路206使用以当在发布级207中处理指令A时将指令A扩展为两个较小指令。所述两个较小指令中的每一者可接着被路由到单独管线且同时执行。
在一个说明性实施例中,当在发布级207中处理指令A时,由如图3B所展示的指令A1和A2的群组替换指令A。发布逻辑电路206使用加标签信息来识别指令A可被扩展为两个较小指令。因而,发布逻辑电路206通过移除条件性部分(如在指令A1中反映)来修改指令A,且创建单独的选择指令A2。在图3B所展示的扩展中,选择指令A2为条件MOV指令,其反映指令A的相同条件性。换句话说,指令A和A2的条件性可以Z位等于“0”为条件。为了简化指令扩展过程,反映经扩展指令的原始条件性的条件MOV指令可用作默认选择指令。在其它处理器结构中,其它条件指令可用作默认选择指令。因为指令A1和A2在功能上有所不同(即,指令A1为算术指令,且A2为类型加载/存储指令),所以其可在单独管线中执行。因而,指令A1和A2可插入到发布级207内的不同指令队列中。当发布时,可将指令A1发送到下部管线160以供执行,而可将指令A2发送到下部管线165以供执行。
指令A1具有三个源操作数R4、R3和R2以及一个目的地操作数T1。指令A1将寄存器R3中的值移位达R4中所含有的值,且将结果与寄存器R2的内容相加。将指令A1的结果保存在临时寄存器T1中。选择指令A2为条件移动指令,其在条件旗标Z位为“0”的情况下将T1的值移动到R1中。选择指令A2选择是将T1的值写入到R1中还是保持R1的值不变。
当发布逻辑电路206创建指令A1和A2时,处理器100还识别到指令A1具有对选择指令A2的相依性。具体地说,在指令A1与A2之间存在数据冲突。处理器100将直到指令A1完成时才执行选择指令A2,否则发生RAW(写入后读取)冲突。为此,处理器100在执行选择指令A2之前进行等待,直到指令A1的结果可用为止。
在一个实施例中,处理器100可在一个下部管线(例如下部管线160)中执行算术指令,而在另一管线165中执行加载/存储指令。本文所呈现的实施例可应用于具有两个以上管线的处理器。在这些实施例中,对向哪个下部管线发送经扩展指令的选择是当在发布级207中处理指令时由发布逻辑电路206进行。
图4A显示可由处理器100执行的另一示范性指令群组400。图4A中的指令D为异或非相等指令,其具有四个源操作数R1、R2、R3和R4。指令E为相减指令,且指令F为OR指令。如果指令D由处理器100执行,那么可从寄存器堆230和235中读取源操作数R1、R2、R3和R4的值。在指令D内,将寄存器R3中的值移位达R4中所含有的值,且将结果与寄存器R2的内容进行异或运算。如果条件零旗标为“1”,那么将异或运算的结果存储在R1中。如果零旗标为“0”,那么将寄存器R1的内容恢复到其先前值。
借助于另一说明性实例,当在发布级207中处理指令D时,由如图4B所展示的指令D1和D2的群组替换指令D。类似于处理器100处理指令群组300中的指令A的方式,发布逻辑电路206使用加标签信息来识别所述指令D可被扩展为两个较小指令。因而,发布逻辑电路206通过移除条件性部分(如在指令D1中反映)来修改指令D,且创建选择指令D2。如在图4B的实施例中所展示,选择指令D2为条件MOV指令,其反映指令D的相同条件性。指令D和选择指令D2的条件性是基于非相等条件(Z旗标=“1”)。在发布级207中插入指令D1和D2之后,可将其加载到恰当指令队列中且发送到不同的下部管线160和165以供执行。
指令D1将R3中的值移位达R4中所含有的值,其中将移位的结果与寄存器R2的内容进行异或运算。将所述异或运算的结果保存在临时寄存器T1中。选择指令D2为条件移动指令,其在条件旗标Z位为“1”的情况下将T1的值移动到R1中。类似于选择指令A2,选择指令D2选择是将T1的值写入到R1中还是保持R1的值不变。
当发布逻辑电路206创建指令D1和D2时,处理器100还识别到指令D1具有对指令D2的相依性。指令D2直到指令D1完成时才能执行,否则发生RAW(写入后读取)冲突。处理器100在执行指令D2之前进行等待,直到指令D1的结果可用为止。
图5显示指令群组300在通过上部管线150以及下部管线160和165的各种级处理时的时序图500。在时序图500中,沿着Y轴504显示处理器循环502,而沿着X轴506识别处理器100内的级(获取级203、解码级205、发布级207、执行级220和执行级225)。时序图500中所显示的指令展示为其正进入各种级。在一个实施例中,时序图500显示一个指令在每一处理器循环中进入每一级。然而,在替代实施例中,处理器100可每处理器循环处理多个指令。本文所呈现的教示可应用于单个指令发布处理器或多个指令发布处理器。为了易于说明起见,论述指令群组300,但相同时序图适用于指令群组400,因为这些指令经类似扩展。
如图5中所显示,在处理器循环1中在获取级203中从指令高速缓冲存储器106中获取指令A。在从指令高速缓冲存储器106中获取指令A之前,获取逻辑电路202从存储器108中检索指令A。在将指令A从存储器108加载到指令高速缓冲存储器106中时,预解码逻辑电路201确定指令A为条件指令。因为指令A为条件指令,所以预解码逻辑电路201随后确定指令A的源操作数超过预定阈值。因为指令A具有四个源操作数且预定阈值为3,所以将指令A加标签以进行扩展。
从获取级203开始,在处理器循环2中在解码级205中由解码逻辑电路204处理指令A。在解码级205期间,处理器100识别指令A为条件相加指令。而且,在解码级205期间,处理器可识别操作数信息以及链接到指令A的任何相依性。因为指令A为条件相加指令,所以处理器100可将指令A引导到下部管线160,只要下部管线160含有支持算术运算的EU。然而,由于指令A已被预解码逻辑电路201加标签,所以指令A可能不以其原始形式发送到下部管线160。在解码级205中处理指令A之后,在处理器循环3中将指令A发送到发布级207。而且,在处理器循环2期间,在获取级203期间由获取逻辑电路202获取指令B。
在处理器循环3中,处理器从指令高速缓冲存储器106中获取指令C,同时在解码级205中由解码逻辑电路204处理指令B。当在处理器循环3中将指令A加载到发布级207中时,发布逻辑电路206识别指令A为加标签指令(例如,指令A为具有比读取端口多的源操作数的条件指令)且根据一个实施例来修改指令A。代替指令A,发布逻辑电路206将指令A1和A2插入到指令流中且更具体地说插入到发布级207内的恰当指令队列中。
当处理器100发布指令A1和A2时,处理器100将指令路由到不同管线,如处理器循环4中所展示。在处理器循环4中,在下部管线160中的执行级220中执行指令A1,而在下部管线165中的执行级225中执行指令A2。通过在不同管线中执行A1和A2,可在相同处理器循环期间执行所述两个指令,这增加了处理器100的处理效率。在处理器循环4中执行指令A1和A2期间,两个寄存器堆230和235均由处理器100存取。首先,指令A1执行且接着在相同处理器循环期间指令A2执行。出于简化的目的,时序图500展示指令A1和A2仅需要一个处理器循环来到达执行级220和225。然而,实际上,指令A1和A2可能采取若干处理器循环来到达执行级220和225。在处理器循环4期间,在发布级207中处理指令B,且在解码级205中处理指令C。
在处理器循环5中,指令A1和A2已完成其执行且用所述结果更新寄存器堆230和235。而且,在处理器循环5中,在执行级220中执行指令B,且在发布级207中处理指令C。
如先前所论述,可针对选择指令(即,指令A2或指令D2)使用其它条件指令。举例来说,代替用于选择指令的MOVEQ指令,如下文展示的ADDEQ指令可分别用以替代指令A2或D2
A3:ADDEQ R1,T1,#0;或者,
D3:ADDNE R1,T1,#0。
在此实例中,两个下部管线160和165可具有支持算术指令的EU 130。在指令A3内,将零相加到临时寄存器T1的内容,其中当条件旗标Z位为“1”时将结果写入到R1中。在指令D3内,将零相加到临时寄存器T1的内容,其中当条件旗标Z位为“0”时将结果写入到R1中。
图6为说明由本发明的一个实施例执行的过程600的流程图。过程600在开始框602处开始。在框604处,处理器100使用获取逻辑电路202以获取指令。如果指令未驻留在指令高速缓冲存储器106中,那么获取逻辑电路202从存储器108中检索指令。在从存储器108中获取指令且将指令放置到指令高速缓冲存储器106中的同时,预解码逻辑电路201在框606处确定指令是否为条件指令。如果指令不是条件指令,那么过程前进到框612。如果指令为条件指令,那么过程600前进到决策框608。
在决策框608处,预解码逻辑电路201确定条件指令的操作数的数目是否超过预定阈值。如先前提及的,预定阈值可对应于用于每一寄存器堆225或235的读取端口的数目。如果在决策框608处,条件指令的操作数超过预定阈值,那么过程600前进到框610。如果条件指令的操作数的数目不超过预定阈值,那么过程600继续到框612。
在框610处,处理器100将所述条件指令加标签为可被扩展的条件指令。加标签信息可在将条件指令写入到指令高速缓冲存储器106中时由预解码逻辑电路201写入。更具体地说,加标签信息可驻留在用于所述条件指令的高速缓冲存储器线内。从框610开始,过程600继续到框612。
在框612处,在解码级205中处理指令。如先前提及的,当在解码级205中处理指令时,处理器100识别执行指令所必要的所有剩余信息。从解码级205开始,将指令发送到发布级207,如框614中所展示。作为在发布级207内发生的处理的部分,处理器100在决策框616处确定指令是否被标记为操作数超过预定阈值的条件指令。如果指令被加标签,那么扩展并在恰当管线中执行条件指令,如框618处所显示。从框618开始,过程600在框620处结束。如果指令未被标记,那么将指令继续传递到恰当管线且过程600在框620处结束。
结合本文所揭示的实施例描述的各种说明性逻辑块、模块、电路、元件和/或组件可用经设计以执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。通用处理器可以是微处理器,但在替代方案中,所述处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。
虽然已在本文中说明并描述了特定实施例,但所属领域的技术人员了解,打算实现相同目的的任何布置可用以替代所展示的特定实施例且本发明在其它环境下具有其它应用。本申请案既定涵盖本发明的任何修改或变化。所附权利要求书决不希望将本发明的范围限于本文所描述的特定实施例。

Claims (20)

1.一种在管线处理器内扩展具有多个操作数的条件指令的方法,所述管线处理器具有多个管线,所述方法包含:
在发布级之前识别所述条件指令;
确定所述多个操作数是否超过预定阈值;
将所述条件指令扩展为非条件指令和选择指令;以及
在单独管线中执行所述非条件指令和所述选择指令。
2.根据权利要求1所述的方法,其中所述选择指令为条件MOV指令。
3.根据权利要求1所述的方法,其中所述选择指令为条件ADD指令。
4.根据权利要求1所述的方法,其中所述预定阈值等于寄存器堆上的读取端口的数目。
5.根据权利要求4所述的方法,其中所述寄存器堆具有三个读取端口。
6.根据权利要求1所述的方法,其中在发布级中扩展所述条件指令。
7.根据权利要求1所述的方法,其中在发布之前将所述经扩展指令发送到所述发布级内的不同指令队列。
8.根据权利要求1所述的方法,其进一步包含将所述非条件指令和所述选择指令发送到单独管线以供执行。
9.一种在管线处理器内扩展具有多个操作数的条件指令的方法,所述方法包含:
在预解码级期间识别所述条件指令具有超过预定阈值的操作数;
当在发布级中处理所述条件指令时将所述指令扩展为非条件指令和选择指令;以及
在执行级期间执行所述非条件指令和所述选择指令。
10.根据权利要求9所述的方法,其中所述选择指令为条件MOV指令。
11.根据权利要求9所述的方法,其中所述选择指令为条件ADD指令。
12.根据权利要求9所述的方法,其中所述操作数从具有若干读取端口的寄存器堆接收信息,且所述预定阈值等于读取端口的数目。
13.根据权利要求12所述的方法,其中所述寄存器堆具有三个读取端口。
14.一种管线处理器,其包含:
预解码逻辑电路,所述预解码逻辑电路经配置以识别条件指令是否具有超过预定阈值的操作数数目;
发布逻辑电路,所述发布逻辑电路经配置以接收所识别的条件指令,且扩展所述所识别的条件指令以包括非条件指令和选择指令;以及
执行单元,其经配置以执行所述非条件指令和所述选择指令。
15.根据权利要求14所述的管线处理器,其中选择指令反映所述条件指令的条件性。
16.根据权利要求14所述的管线处理器,其中所述选择指令为条件ADD指令。
17.根据权利要求14所述的管线处理器,其中所述选择指令为条件MOV指令。
18.根据权利要求14所述的管线处理器,其中所述选择指令和所述非条件指令由单独管线中的执行单元执行。
19.根据权利要求13所述的管线处理器,其中所述操作数从具有若干读取端口的寄存器堆接收信息,其中所述预定阈值等于读取端口的数目。
20.根据权利要求17所述的管线处理器,其中所述寄存器堆具有三个读取端口。
CN200880021909A 2007-06-27 2008-06-27 用于将条件指令扩展为无条件指令与选择指令的方法和系统 Pending CN101689107A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/769,132 2007-06-27
US11/769,132 US7793079B2 (en) 2007-06-27 2007-06-27 Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
PCT/US2008/068535 WO2009003160A1 (en) 2007-06-27 2008-06-27 A method and system for expanding a conditional instruction into a unconditional instruction and a select instruction

Publications (1)

Publication Number Publication Date
CN101689107A true CN101689107A (zh) 2010-03-31

Family

ID=39790064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880021909A Pending CN101689107A (zh) 2007-06-27 2008-06-27 用于将条件指令扩展为无条件指令与选择指令的方法和系统

Country Status (6)

Country Link
US (1) US7793079B2 (zh)
EP (1) EP2176741A1 (zh)
JP (1) JP2010532063A (zh)
KR (1) KR20100032441A (zh)
CN (1) CN101689107A (zh)
WO (1) WO2009003160A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707988A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 执行模式备份寄存器的模拟
CN103853526A (zh) * 2014-02-20 2014-06-11 清华大学 可重构处理器及可重构处理器的条件执行方法
CN103907089A (zh) * 2011-04-07 2014-07-02 威盛电子股份有限公司 一种乱序执行微处理器中的有条件加载指令
CN104461939A (zh) * 2014-12-16 2015-03-25 清华大学 扩展处理器寄存器堆容量的方法
CN104615409A (zh) * 2014-05-27 2015-05-13 上海兆芯集成电路有限公司 跳越mov指令的处理器
CN105468333A (zh) * 2011-04-07 2016-04-06 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
US9588769B2 (en) 2014-05-27 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that leapfrogs MOV instructions
CN108139911A (zh) * 2015-10-22 2018-06-08 德州仪器公司 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US10203960B2 (en) 2014-02-20 2019-02-12 Tsinghua University Reconfigurable processor and conditional execution method for the same

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9256408B2 (en) 2012-01-20 2016-02-09 Qualcomm Incorporated Optimizing texture commands for graphics processing unit
US9582279B2 (en) 2013-03-15 2017-02-28 International Business Machines Corporation Execution of condition-based instructions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6389932A (ja) * 1986-10-03 1988-04-20 Mitsubishi Electric Corp デ−タ処理装置
WO2000000878A2 (en) 1998-06-26 2000-01-06 Chi Lan Wong Derek Methods for increasing instruction-level parallelism in microprocessors and digital systems
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
JP3532835B2 (ja) * 2000-07-04 2004-05-31 松下電器産業株式会社 データ処理装置およびプログラム変換装置
CA2356805A1 (en) 2001-09-07 2003-03-07 International Business Machines Corporation Converting short branches to predicated instructions
US9977674B2 (en) * 2003-10-14 2018-05-22 Intel Corporation Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction
US7210024B2 (en) * 2005-02-10 2007-04-24 Qualcomm Incorporated Conditional instruction execution via emissary instruction for condition evaluation

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103907089B (zh) * 2011-04-07 2017-07-07 威盛电子股份有限公司 一种乱序执行微处理器中的有条件加载指令
CN103907089A (zh) * 2011-04-07 2014-07-02 威盛电子股份有限公司 一种乱序执行微处理器中的有条件加载指令
CN105468333B (zh) * 2011-04-07 2018-04-06 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
CN102707988B (zh) * 2011-04-07 2015-09-09 威盛电子股份有限公司 微处理器及其操作方法
CN105468333A (zh) * 2011-04-07 2016-04-06 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
CN102707988A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 执行模式备份寄存器的模拟
CN103853526A (zh) * 2014-02-20 2014-06-11 清华大学 可重构处理器及可重构处理器的条件执行方法
US10203960B2 (en) 2014-02-20 2019-02-12 Tsinghua University Reconfigurable processor and conditional execution method for the same
CN103853526B (zh) * 2014-02-20 2017-02-15 清华大学 可重构处理器及可重构处理器的条件执行方法
US9588769B2 (en) 2014-05-27 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that leapfrogs MOV instructions
CN104615409B (zh) * 2014-05-27 2017-07-07 上海兆芯集成电路有限公司 跳越mov指令的处理器和由该处理器使用的方法
CN104615409A (zh) * 2014-05-27 2015-05-13 上海兆芯集成电路有限公司 跳越mov指令的处理器
CN104461939A (zh) * 2014-12-16 2015-03-25 清华大学 扩展处理器寄存器堆容量的方法
CN108139911A (zh) * 2015-10-22 2018-06-08 德州仪器公司 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US11397583B2 (en) 2015-10-22 2022-07-26 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
CN108139911B (zh) * 2015-10-22 2022-08-09 德州仪器公司 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US11960892B2 (en) 2015-10-22 2024-04-16 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor

Also Published As

Publication number Publication date
US20090006811A1 (en) 2009-01-01
WO2009003160A1 (en) 2008-12-31
JP2010532063A (ja) 2010-09-30
US7793079B2 (en) 2010-09-07
EP2176741A1 (en) 2010-04-21
KR20100032441A (ko) 2010-03-25

Similar Documents

Publication Publication Date Title
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US5761476A (en) Non-clocked early read for back-to-back scheduling of instructions
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
US8601239B2 (en) Extended register addressing using prefix instruction
US5564056A (en) Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
JP5209933B2 (ja) データ処理装置
WO1993022722A1 (en) A system and method for retiring instructions in a superscalar microprocessor
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US8127114B2 (en) System and method for executing instructions prior to an execution stage in a processor
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US6539471B2 (en) Method and apparatus for pre-processing instructions for a processor
US20220035635A1 (en) Processor with multiple execution pipelines
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
US20080229080A1 (en) Arithmetic processing unit
US6092184A (en) Parallel processing of pipelined instructions having register dependencies
CN114514505A (zh) 退役队列压缩
US6829699B2 (en) Rename finish conflict detection and recovery
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
US6442675B1 (en) Compressed string and multiple generation engine
US20120191956A1 (en) Processor having increased performance and energy saving via operand remapping
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US7565511B2 (en) Working register file entries with instruction based lifetime
US7783692B1 (en) Fast flag generation
US20070050610A1 (en) Centralized resolution of conditional instructions

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

Application publication date: 20100331