CN101194225B - 用于支持条件指令无条件提供输出的系统及方法 - Google Patents

用于支持条件指令无条件提供输出的系统及方法 Download PDF

Info

Publication number
CN101194225B
CN101194225B CN2006800203461A CN200680020346A CN101194225B CN 101194225 B CN101194225 B CN 101194225B CN 2006800203461 A CN2006800203461 A CN 2006800203461A CN 200680020346 A CN200680020346 A CN 200680020346A CN 101194225 B CN101194225 B CN 101194225B
Authority
CN
China
Prior art keywords
register
condition
conditional order
instruction
value
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.)
Active
Application number
CN2006800203461A
Other languages
English (en)
Other versions
CN101194225A (zh
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 CN101194225A publication Critical patent/CN101194225A/zh
Application granted granted Critical
Publication of CN101194225B publication Critical patent/CN101194225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Abstract

执行条件指令以使其无条件地向目标提供输出,所述条件指令经架构以接收一个或多个操作数作为输入、在满足条件的情况下向目标输出对所述操作数实施的运算的结果且在不满足所述条件的情况下不提供输出。所述条件指令获得所述目标的先前值(也就是说,由曾更新所述目标的条件指令之前最近的指令产生的值)。对所述条件进行评估。如果满足所述条件,则实施运算且将所述运算的结果输出至所述目标。如果不满足所述条件,则将所述先前值输出至所述目标。随后的指令在条件评估之前可依赖于所述目标作为操作数源(无论是写入至寄存器还是转发至所述指令)。

Description

用于支持条件指令无条件提供输出的系统及方法
技术领域
大体来说,本发明涉及处理器领域,且确切来说涉及一种执行条件指令的系统及方法,所述条件指令经架构化以在不满足条件的情况下不提供输出。
背景技术
微处理器可在各种各样的应用中实施计算任务。微处理器设计中的共同目标是改善性能,通过软件的演变来实现更快的运算及/或增加的功能性。很多现代处理器都使用流水线架构,其中顺序指令(其每一者都具有多个执行步骤)在执行时重叠。对于较高的指令通过量,所述指令应连续地流经所述流水线。任何导致指令在流水线中停止的情况都会不利地影响指令的通过量并因此不利地影响处理器性能。
指令根据从存储器获得的数据来进行操作并将其结果写入至存储器。现代处理器利用在顶部阶层包括一些快速、昂贵的存储器元件(例如,寄存器)的分级式存储器结构。则所述存储器的分级分别在较低的阶层包括连续变慢但较便宜的存储技术,例如,高速缓冲存储器(SRAM)、固态主存储器(DRAM)及磁盘(磁性或光学媒体)。对于诸如便携式电子装置等应用,DRAM通常是存储器分级的最低阶层。
很多处理器指令集架构(TSA)都包括一组通用寄存器(GPR),其是用于在各指令之间传递数据及往来于存储器进行数据传递的架构化寄存器。对数据实施逻辑及算术运算的指令是从规定的GPR读取其操作数并将其结果写入至所述规定的GPR。类似地,存储器存取指令从GPR读取将要写入至存储器的数据,及将从存储器读取的数据写入至GPR。编译器给每一指令指派源GPR标识符及目标GPR标识符,并排序所述指令,以便计算出正确结果。也就是说,以“程序次序”排列各指令,所述“程序次序”通过引导较早的指令将结果储存在规定的GPR中及引导较晚的指令读取那些GPR以获得用于进一步处理的操作数来确保正确的结果。
然而,很多处理器无序地(也就是说,不按指令的程序次序)执行指令。出现无序执行情况的一个实例是在超标量设计中,其中可在不同的执行流水线中并行地执行两个或更多个指令。如果指令在一个流水线中停止,则可将随后的指令调度至空闲流水线以便立即执行。无序执行并不局限于超标量设计,并可出现在单问题设计(single-issue design)中。在任一情况下,无序执行都存在某些问题。
独立的指令可在不考虑原始程序次序的情况下执行。然而,很多指令表现出对其他指令的依赖性,此称作“冒险”。当指令的重新排序将改变对所述依赖性中涉及操作数的存取次序时,就会发生数据冒险(例如,由无序指令问题引起)。相关数据冒险可分类为三种类型。考虑两个指令i及j,其中在程序次序上i在j之前发生。
一种类型的数据冒险是写后读(RaW)冒险。这会在i对一个为j的操作数源的目标寄存器进行写入时发生。如果j试图在i将其写入之前对寄存器进行读取,则j错误地检索旧的值。当两个指令i及j都写入至同一目标寄存器且j试图在i将其写入至目标之前对所述目标进行写入时,会发生写后写(WaW)冒险。在所述情况下,写入会按错误的次序来实施,从而将由i写入的值而非由j写入的值留在所述寄存器中。在i读取寄存器之前,当j对为i的操作数源的目标寄存器进行写入时,会发生读后写(WaR)冒险。这导致i错误地检索由j写入的新值,而非并由先前指令写入的正确值。注意,读后读(RaR)情况不是数据冒险,可以任何次序来实施读取。
例如,考虑如下的代表性码段:
AND r2、r10、r12  将r10的内容逻辑“与”到r12的内容,将结果放在r2中
ST r2、mem    将r2的内容存储到存储器的位置mem
ADDr2、r5、r6  相加r5及r6的内容,将和放在r2中
ST对AND具有RaW依赖性。此数据冒险要求这些指令以程序次序来执行。另外,ADD表现出对ST的WaR依赖性。语义上,ADD不能将其结果写入至r2,直到所述ST完成其对r2的读取为止。不然的话,当ST应写入AND的结果时,其会将ADD的结果写入至存储器。WaR与WaW数据冒险在名称上具有依赖性,而非真正地在数据上具有依赖性,因为没有任何数据从一个指令传递至下一个指令(唯一的依赖性是一个指令不破坏另一指令将读取或已写入的寄存器的内容)。名称依赖性可通过称作寄存器重命名的技术来解决。
在寄存器重命名系统中,通过动态地将逻辑寄存器编号(LRN)指派至物理寄存器来管理一大组物理寄存器,其每一者都具有物理寄存器编号(PRN))。LRN可包括(例如)逻辑GPR标识符(r0、r1、r2…)。优选地,物理寄存器的数量大于LRN或架构化GPR的数量。重命名表格(RT)保持LRN与PRN之间的动态映射。
在流水线初期(例如,在解码阶段中或之后),对指令的寄存器存取特性进行检查,并经由RT将与所述指令相关联的LRN(例如,GPR标识符)转换成PRN。对于写入寄存器的指令,在所述RT中输入新的LRN至PRN映射,将所述LRN映射成未使用的PRN,以将所述写入引导至相关联的物理寄存器(也就是说,所述LRN被“重命名”)。读取寄存器的指令通过RT查询将其LRN转换成PRN。所述PRN在其通过所述流水线的整个占有期间都保持与所述寄存器-读取指令相关联。
寄存器-写入指令并不会“破坏”写入至所述同一LRN的先前值,所述写入会被引导至新的未使用PRN(因为所述LRN被重命名至新的PRN)。在程序次序上后跟所述写入指令的指令将被引导至相同的PRN,以获得所述写入值。在所述程序次序上位于写入指令之前的指令通过RT映射至不同的物理寄存器(在重命名操作之前),且将继续存取所述物理寄存器。因此,可在从LRN(WaR)读取先前值的指令或将先前结果写入至LRN(WaW)之前执行写入既定LRN的指令。以此方式,避免WaR及WaW的名称冒险。
为允许处理器从异常、错误预测分支等中恢复过来,对向其写入数据的物理寄存器的可用性(用于进一步重命名)加以限制。例如,可将LRN重命名至PRN1,且可将第一指令的结果写入至所述LRN,因此写入至PRN1。第二指令还可将数据写入至所述LRN(其被重命名至PRN2),且因此PRN2储存所述第二指令的结果。在此情况下,对于另一将要重命名至PRN1的LRN,所述PRN1不空闲,直到提交所述第二指令(这意味着第二指令及其之前的所有指令都经过完全的异常检查并确保可完成执行)为止。此外,第一指令与第二指令之间的所有引用所述LRN的指令(也就是说,所有读取PRN1的指令)必须已完成对PRN1的读取,或以其他方式保证可最终接收到所述值。只有在那时才可释放PRN1,且其才可用于另一将要重命名至所述PRN1的LRN。
返回至上述实例码段,当解码所述AND指令且检测到其对LRN r2的写入时,在所述RT中将LRN r2指派至物理寄存器,例如PRN x。因此,将所述AND的结果写入至物理寄存器x。当解码所述ST指令时,检测到其从LRN r2进行的读取,并存取所述RT。将LRN r2映射成PRN x,因此所述ST指令将读取物理寄存器x(因此,获得所述AND写入的结果)。当解码所述ADD指令且检测到其对LRN r2的写入时,将LRN r2重新指派(或重命名)至不同的物理寄存器,例如PRN y。通过所述RT将读取LRN r2的随后指令引导至物理寄存器y。注意,所述ADD可在所述ST之前执行;所述ST将从PRN x检索正确的结果,因此可消除WAR冒险。
寄存器重命名系统的一个问题是由条件指令的执行引起的。条件指令是经架构化以只在满足条件的情况下才实施算术或逻辑操作并写入所述结果的指令。在评估所述条件(其经常发生在流水线深处)之前,不能确定条件指令是否将对寄存器进行写入。如果不满足所述条件,则所述条件指令实际上是NOP或非操作指令,其并不会更改任何GPR。由于存在条件指令是否将对寄存器进行写入的不确定性,所以无法确定随后指令是否存在对条件指令的依赖性,直到对所述条件进行评估为止。例如,考虑如下的码段:
CMP r1、r12  比较r1及r12的内容(设定用以反映比较结果的代码或旗标)
AND r、r10、r12将r10的内容逻辑与到r12的内容,将结果放入r2
SUBEQ r2、r7、r8如果前一个比较相等,则从r7减去r8的内容并将结果放入r2中。不然,不改变r2
ST r2、mem  将r2的内容存储到存储器位置mem
ADD r2、r5、r6相加r5及r6的内容,将和放入r2
在这个实例中,所述ST不能确定其是否具有关于SUBEQ的数据冒险,直到对所述EQ条件进行评估。也就是说,所述ST不能确定AND或SUBEQ指令是否将写入r2。语义上且实际上,在总是按程序次序发出指令的处理器中,总是执行AND与SUBEQ两者,且SUBEQ可更新或者可不更新r2寄存器的值;所述ST不“关心”r2的内容而只是简单地储存r2的内容。然而,在无序设计中,处理器必须确定所述ST是依赖于AND还是依赖于SUBEQ。
确切来说,在寄存器重命名系统中,处理器必须在寄存器重命名阶段提早地停止所述流水线,直到对所述EQ条件进行评估且可确定所述SUBEQ是否将实际地写入r2为止。由于是在流水线深处对所述条件进行评估,因而这会招致不希望发生的流水线停止。作为另一选择,对于所述SUBEQ指令,所述RT可推测性地将r2重命名至一个新的PRN。在此情况下,所述RT必须具有用以取消所述重命名的机制,也就是说,如果不满足所述EQ条件,则通过映射将所述LRN r2恢复到先前命名的PRN。这之所以是必需的是因为如果不满足所述条件,则SUBEQ并不实际地写入新的PRN,且会让RT将LRN r2映射至含有未定义数据的物理寄存器。所述额外的电路增加了RT中的复杂性及功率消耗。
一类在此项技术中为人们所熟知的指令是条件选择,所述指令的输出依赖于条件评估。条件选择指令由指令集架构来定义以始终(即无条件地)写入结果。仅所述写入值(而非是否写入一输出)依赖于条件评估。例如,条件选择ADD指令(ADDSEQr2、r3、r4、r5)可相加r4及r5的内容,且如果满足EQ条件,则将所述结果放入r2中。如果不满足所述EQ条件,则所述指令将所述r3的内容放入r2中。注意,所述指令在结构及语义上具有替代结果的显式输入(在所述实例中是r3的读取)。然后,取决于所述条件评估,所述输出在运算结果与所述替代结果之间进行选择。
条件指令有别于条件选择。如本文中所用,“条件指令”是经架构化以在满足条件的情况下将运算结果写入目标而在不满足所述条件的情况下不写入所述目标的指令。也就是说,如果所述条件失效,则所述条件指令实际上转换成NOP,且不对任一寄存器进行写入或不在操作数转发环境中转发任何结果。准确来说,正是条件指令是否提供输出的不确定性迫使处理器在寄存器重命名阶段停止所述流水线(其一般在所述流水线中早期发生),直到对所述条件进行评估(其通常在所述流水线中后期发生)。只有当知道所述条件指令是否为实际的NOP时,才能解决下述指令的数据依赖性。这类条件指令常见于现代处理器ISA中。
发明内容
执行一种经架构化以接收一个或多个操作数作为输入、在满足条件的情况下向目标输出对操作数实施的运算的结果且在不满足条件的情况下不提供输出的条件指令以使其无条件地向目标提供输出。所述条件指令获得所述目标的先前值(也就是说,在更新所述目标的条件指令之前最近的指令产生的值)。对所述条件进行评估。如果满足所述条件,则将对所述操作数实施的运算的结果输出至所述目标。如果不满足所述条件,则将所述先前值输出至所述目标。随后的指令在条件评估之前可依赖于所述目标作为操作数源(无论写入至寄存器或转发至所述指令)。
一个实施例涉及一种在流水线处理器中执行条件指令的方法,所述条件指令经架构化以接收一个或多个操作数作为输入、在满足条件的情况下向目标输出对操作数实施的运算的结果且在不满足所述条件的情况下不提供输出。接收一个或多个操作数值及所述目标的先前值并对条件进行评估。如果满足所述条件,则对所述操作数值实施运算以产生结果值,并将所述结果输出至所述目标。如果不满足所述条件,则将先前目标值输出至所述目标。
另一实施例涉及一种在使用动态地将逻辑寄存器映射至物理寄存器的寄存器重命名系统的流水线处理器中执行条件指令的方法,所述条件指令经架构化以在满足条件的情况下向逻辑目标寄存器写入运作结果且在不满足所述条件的情况下不对任一寄存器进行写入。从与所述逻辑目标寄存器相关联的第一物理寄存器读取第一值。将所述逻辑目标寄存器重命名至第二物理寄存器。对条件进行评估。如果满足所述条件,则实施运算以产生结果值,并将所述结果值写入至所述第二物理寄存器。如果不满足所述条件,则将所述第一值写入到所述第二物理寄存器。
另一实施例涉及一种执行条件指令的方法,所述条件指令经架构化以在满足条件的情况下向逻辑目标寄存器写入运算结果且在不满足所述条件的情况下不对任一寄存器进行写入。所述方法包括从与所述逻辑目标寄存器相关联的第一物理寄存器读取先前值。
另一实施例涉及一种执行条件指令的方法,所述条件指令经架构化以在满足条件的情况下向逻辑目标寄存器写入运算结果且在不满足所述条件的情况下不对任一寄存器进行写入。所述方法包括无条件地将值写入至所述逻辑目标寄存器。
另一实施例涉及一种处理器,其包括多个物理寄存器及一个重命名表,所述重命名表操作以动态地使逻辑寄存器标识符与所述物理寄存器相关联。所述处理器还包括操作以不按程序次序执行指令的指令执行流水线。所述流水线进一步操作以在评估所述条件之前,无条件地将物理寄存器指派为条件指令的目标并将其指派为对所述条件指令具有偶然依赖性的指令的操作数源。所述条件指令经架构化以在满足条件的情况下向目标写入运算结果且在不满足所述条件的情况下不对所述目标进行写入。
另一实施例涉及一种通过流水线处理器执行单一条件指令的方法,所述方法包括:不管所述单一条件指令对条件的评估的结果如何,都接收目标的先前值,其中所述单一条件指令将要写入所述目标,所述先前值由与所述单一条件指令不同的指令产生;评估与所述单一条件指令相关联的条件以产生评估结果;及不管评估结果如何都将所述单一条件指令的一值输出到目标,其中:当满足所述条件时,所述值为对一个或一个以上操作数值实施所述单一条件指令的运算所产生的结果;及当不满足所述条件时,所述值为所述先前值。
另一实施例涉及一种通过流水线处理器执行单一条件指令的方法,所述流水线处理器使用动态地将逻辑寄存器映射至物理寄存器的寄存器重命名系统,所述方法包括:通过所述单一条件指令从与逻辑目标寄存器相关联的第一物理寄存器中读取先前值,其中不管与所述单一条件指令相关联的条件的评估结果如何都读取所述先前值,所述先前值由与所述单一条件指令不同的指令产生;将所述逻辑目标寄存器重命名至第二物理寄存器;在确定是否满足所述条件之前,对一个或一个操作数值实施运算以产生结果值;及输出所述单一条件指令的值,其中输出包括:如果满足所述条件则将所述结果值写入至所述第二物理寄存器;及如果不满足所述条件,则将所述先前值写入至所述第二物理寄存器。
另一实施例涉及一种执行单一条件指令的方法,所述方法包括:不管与所述单一条件指令相关联的条件的评估如何,都从逻辑目标寄存器中读取先前值,所述先前值由与所述单一条件指令不同的指令所产生;通过所述单一条件指令对一个或一个以上操作数值实施运算以产生结果;及从所述单一条件指令输出值,其中输出包括:如果满足所述条件则将由所述单一条件指令所实施运算的所述结果写入至所述逻辑目标寄存器;及如果不满足所述条件,则将所述先前值写入至所述逻辑目标寄存器。
另一实施例涉及一种处理器,其包括:多个物理寄存器;重命名表,其操作以动态地使逻辑寄存器标识符与所述物理寄存器相关联;以及指令执行流水线,其操作以执行单一条件指令以:不管与所述单一条件指令相关联的条件的评估如何,都从与逻辑寄存器标识符相关联的第一物理寄存器读取先前值,所述先前值由与所述单一条件指令不同的指令产生;对一个或一个以上操作数值实施运算以产生结果;以及在满足所述条件时提供所述结果,且在不满足所述条件时提供所述先前值。
附图说明
图1是处理器的功能框图。
图2是绘示执行条件指令的方法的流程图。
图3是绘示条件指令的输出决定的功能框图。
具体实施方式
图1绘示处理器10的功能性框图。处理器10根据控制逻辑14执行指令执行流水线12内的指令。流水线12可为具有多个并行流水线(例如,12a及12b)的超标量设计。流水线12a、12b包括组织成若干管道阶段的各种寄存器或锁存器16,以及一个或多个算术逻辑单元(ALU)18。重命名寄存器文件(RRF)20提供很多个物理寄存器,其数量超过经架构化通用寄存器(GPR)的数量。RRF20中的寄存器包括处理器存储器分级的顶层,并用作指令的主要操作数源及目的地目标。重命名表(RT)21与RRF20相关联,重命名表(RT)21使逻辑GPR标识符与RRF20中的物理寄存器动态地相关联。
流水线12a、12b从指令高速缓冲存储器(I-高速缓冲存储器)22提取指令,其中存储器寻址及许可是由指令侧转换旁视缓冲器(ITLB)24来进行管理。数据是从数据高速缓冲存取器(D-高速缓冲存储器)26中存取,其中存储器寻址及许可是由主转换旁视缓冲器(TLB)28来进行管理。在各种实施例中,ITLB可包括部分TLB的副本。作为另一选择,可将ITLB及TLB集成在一起。类似地,在处理器10的各种实施例中,可将I-高速缓冲存储器22和D-高速缓冲存储器26集成或联合在一起。在存储器介面30的控制下,I-高速缓冲存储器22及/或D-高速缓冲存储器26中的遗漏导致对主(晶片外)存储器32的存取。
处理器10可包括输入/输出(I/O)接口34,其控制对各个外围装置36的存取。所属技术领域的技术人员将认识到,可以对处理器10进行多种变化。例如,处理器10可包括用于I及D高速缓冲存储器中一者或两者的第二阶层(L2)高速缓冲存储器。另外,可从特定实施例中省去处理器10中所示功能块的一个或多个。
根据一个或多个实施例,条件指令是否将对寄存器进行写入的不确定性(所述不确定性在评估所述条件之前无法解决)不会引起所述流水线中的停止。通过条件指令总是(也就是说,无条件地)对其目标寄存器进行写入,可消除所述不确定性。写入至所述目标寄存器的值依赖于所述条件评估。所述条件指令读取其自身目标的先前值(也就是说,在更新所述目标的条件指令之前,由最近指令产生的值),且根据条件评估,向所述目标写入所述先前值(如果不满足所述条件)或写入运算结果(如果满足所述条件)。以此方式,可确保条件指令以后的指令具有其操作数源(所述条件指令的目标)而无需等待对所述条件进行评估。确切来说,寄存器重命名系统可依赖于在所述条件评估之后含有正确值(条件运算的结果、或者先前指令或存储器存取的结果)的PRN,将条件指令的目标LRN重命名至PRN。
图2以流程图的形式绘示执行条件指令的方法的一个实施例。所述条件指令输入其目标的先前值(框40)。这可包括读取指派给所述指令的目标LRN(例如,GPR标识符),如果使用寄存器重命名,则这就等同于在解码所述条件指令时对RT将LRN映射成其的PRN进行读取。作为另一选择,在操作数转发操作中,输入所述目标的先前值可包括直接获得先前指令的输出。在任一情况下,所述先前值可为先前指令的结果或者可为存储器存取操作的结果。所述条件指令对因本发明执行指令的方法而得到的先前值进行读取,其并非为所述条件指令的架构化操作数。虽然读取所述目标的先前值被绘示为图2方法的第一步骤,但并非必需如此。如果将所述先前值转发至所述条件指令(例如,来自存储器存取操作或类似操作),则可在重命名所述目标的逻辑标识符之前或甚至在重命名之后的任一时间处读取所述目标的先前值。
对与所述条件指令相关的条件进行评估(框42)。这可发生在流水线深处,例如,在执行阶段中。鉴于所述原因,现有技术的条件指令会导致流水线在寄存器重命名阶段停止,这是因为在对条件进行评估之前不能确定所述指令是否将产生任何输出。作为另一选择,如果因预期到条件指令会将值写入寄存器而对所述寄存器进行重命名,则在不满足所述条件的情况下不得不取消所述重命名操作且所述写入并不发生。
如果满足所述条件,则将一个或多个操作数输入至所述条件指令(框44)。这可包括对GPR的读取或操作数的转发操作。所属技术领域的技术人员应注意:操作数输入步骤可先于条件评估;如果不满足所述条件,则仅舍弃所述操作数。对所述操作数实施算术或逻辑运算(框46)以产生结果,并输出所述结果(框48)。可通过写入至LRN(也就是说,通过RT与所述LRN相关联的PRN)或将所述结果直接转发至另一指令来进行输出。
如果不满足所述条件(框42),则所述条件指令会输出从其目标输入的先前值(框50)(同样,通过对目标LRN进行写入或通过寄存器转发),从而在不满足条件的情况下肯定地提供所述先前值。在图2所绘示的实施例中,如果不满足所述条件,则不读取所述操作数且也不实施运算。在其他实施例中,可在条件评估之前完成读取所述操作数且甚至实施所述运算,其中如果不满足所述条件,则只舍弃所述操作数及结果(如果产生的话)。注意,无论条件评估如何,所述条件指令都提供输出(框48、50)。这与执行条件指令的现有技术方法形成对比,现有技术按照架构化状态来执行指令,也就是说,只当满足条件时才提供输出,而如果不满足所述条件,则不提供任何输出(寄存器写入或操作数转发)。
图3中示意性地绘示根据一个实施例的使用上述代表性码段(尤其是SUBEQ r2、r7、r8指令)的输出选择。在RT21映射之后,从PRN x中读取LRN r2的先前值。所述条件指令会在值(或至少所述PRN标识符)行进通过所述流水线时保持所述值。寄存器重命名系统可在条件评估之前更新RT21,从而将LRN r2重命名到新的物理寄存器PRN y。从r7及r8读取所述操作数,且在ALU18中实施减法运算。对所述条件进行评估,且所述评估结果确定是否将所述运算的先前值或结果写入到条件指令的目标LRN r2(其重命名至PRN y)。所属技术领域的技术人员应认识到图3仅为代表性;在另一实施例中,只当满足所述条件时,才可能实施对r7及r8的读取及减法运算。
由于根据一个或多个实施例的条件指令执行可无条件地提供输出(取决于条件评估,其可为运算的结果或者可为其目标的先前值),所以在很多情况下,无需停止流水线以等待条件评估。例如,RT21可将所述条件指令的目标LRN重命名至所述RRF20中可用的物理寄存器而无需等待条件评估。可确保读取所述LRN的随后指令从所述条件指令写入的物理寄存器中获得正确的结果。所述物理寄存器将包含运算的结果(如果满足所述条件)或来自在寄存器重命名之前先前与所述LRN相关联的PRN的值(如果不满足所述条件)。因此,所述流水线无需在所述寄存器重命名阶段停止以等待所述条件评估。
在一个实施例中,在评估所述条件之前,当条件指令可直接提供所述操作数中的一个或多个时,可通过允许流水线控制器14确定指令操作数源来简化操作数的转发。如此项技术中众所周知,操作数转发是一种借以可将一个指令的输出直接转发至另一指令而无需第一指令对寄存器进行写入及第二指令对寄存器进行读取的技术。在现有技术中,条件指令以后的指令不能确定其操作数是否将由条件指令(如果满足所述条件)或先前指令(如果不满足所述条件且所述条件指令不产生输出)来转发,且因此必须等待所述条件评估以确定其操作数源。通过无条件地提供输出,所述实施例的条件指令执行的方法消除所述不确定性,并允许在所述条件评估之前做出关于所述操作数源的决定。确切来说,流水线控制器14可在评估所述条件之前可靠地将所述条件指令指派为下一指令的操作数源,这是因为所述条件指令执行方法将无条件地转发输出。所述输出可为由先前指令转发到所述条件指令的先前值(如果不满足所述条件)或运算结果(如果满足所述结果)。
虽然本文已关于本发明的特定特征、方面及实施例对本发明进行了阐述,但显然本发明的广泛范畴内可存在很多变化形式、修改及其他实施例,因此,所有变化形式、修改及实施例将被视为属于本发明的范畴。因此,在所有方面中都应将本发明实施例解释为说明性而非限制性,且归属于随附权利要求书的含义及等效范围内的所有改变皆打算包括于随附权利要求书内。

Claims (15)

1.一种通过流水线处理器执行单一条件指令的方法,所述方法包括:
不管所述单一条件指令对条件的评估的结果如何,都接收目标的先前值,其中所述单一条件指令将要写入所述目标,所述先前值由与所述单一条件指令不同的指令产生;
评估与所述单一条件指令相关联的条件以产生评估结果;及
不管评估结果如何都将所述单一条件指令的一值输出到目标,其中:
当满足所述条件时,所述值为对一个或一个以上操作数值实施所述单一条件指令的运算所产生的结果;及
当不满足所述条件时,所述值为所述先前值。
2.如权利要求1所述的方法,其中从第一寄存器接收所述先前值。
3.如权利要求1所述的方法,其中输出所述值包括无条件地将所述值引导至另一指令。
4.如权利要求2所述的方法,其中所述第一寄存器是寄存器重命名系统中的物理寄存器,且其中在评估所述条件之前将逻辑寄存器无条件地从所述第一寄存器重命名至第二寄存器。
5.如权利要求4所述的方法,其中在评估所述条件之前,通过流水线控制器将所述单一条件指令随后的指令无条件地引导至所述单一条件指令作为操作数源。
6.如权利要求1所述的方法,其中所述先前值是先前执行的指令的输出,所述先前执行的指令的输出被引导至所述单一条件指令而不需要所述单一条件指令从寄存器读取所述先前执行的指令的输出。
7.如权利要求1所述的方法,其中输出所述值由流水线控制器执行。
8.如权利要求7所述的方法,其中在所述条件的评估之前无条件地将所述单一条件指令选择为第二指令的操作数源。
9.一种通过流水线处理器执行单一条件指令的方法,所述流水线处理器使用动态地将逻辑寄存器映射至物理寄存器的寄存器重命名系统,所述方法包括:
通过所述单一条件指令从与逻辑目标寄存器相关联的第一物理寄存器中读取先前值,其中不管与所述单一条件指令相关联的条件的评估结果如何都读取所述先前值,所述先前值由与所述单一条件指令不同的指令产生;
将所述逻辑目标寄存器重命名至第二物理寄存器;
在确定是否满足所述条件之前,对一个或一个操作数值实施运算以产生结果值;及
输出所述单一条件指令的值,其中输出包括:
如果满足所述条件则将所述结果值写入至所述第二物理寄存器;及 
如果不满足所述条件,则将所述先前值写入至所述第二物理寄存器。
10.如权利要求9所述的方法,其进一步包括在所述条件的评估之前,将所述第二物理寄存器指派为所述单一条件指令之后的指令的操作数源。
11.一种执行单一条件指令的方法,所述方法包括:
不管与所述单一条件指令相关联的条件的评估如何,都从逻辑目标寄存器中读取先前值,所述先前值由与所述单一条件指令不同的指令所产生;
通过所述单一条件指令对一个或一个以上操作数值实施运算以产生结果;及
从所述单一条件指令输出值,其中输出包括:
如果满足所述条件则将由所述单一条件指令所实施运算的所述结果写入至所述逻辑目标寄存器;及
如果不满足所述条件,则将所述先前值写入至所述逻辑目标寄存器。
12.如权利要求11所述的方法,其进一步包括在读取所述先前值之后和评估所述条件之前,将所述逻辑目标寄存器从第一物理寄存器重命名至第二物理寄存器。
13.一种处理器,其包括:
多个物理寄存器;
重命名表,其操作以动态地使逻辑寄存器标识符与所述物理寄存器相关联;以及
指令执行流水线,其操作以执行单一条件指令以:
不管与所述单一条件指令相关联的条件的评估如何,都从与逻辑寄存器标识符相关联的第一物理寄存器读取先前值,所述先前值由与所述单一条件指令不同的指令产生;
对一个或一个以上操作数值实施运算以产生结果;以及
在满足所述条件时提供所述结果,且在不满足所述条件时提供所述先前值。
14.如权利要求13所述的处理器,其中在读取所述先前值之后和在评估所述条件之前,所述重命名表操作以将所述逻辑寄存器标识符从所述第一物理寄存器重命名至第二物理寄存器。
15.如权利要求13所述的处理器,其中在评估所述条件之前实施所述运算。 
CN2006800203461A 2005-04-14 2006-04-14 用于支持条件指令无条件提供输出的系统及方法 Active CN101194225B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/106,803 US7624256B2 (en) 2005-04-14 2005-04-14 System and method wherein conditional instructions unconditionally provide output
US11/106,803 2005-04-14
PCT/US2006/014042 WO2006113420A2 (en) 2005-04-14 2006-04-14 System and method wherein conditional instructions unconditionally provide output

Publications (2)

Publication Number Publication Date
CN101194225A CN101194225A (zh) 2008-06-04
CN101194225B true CN101194225B (zh) 2013-10-23

Family

ID=37016156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800203461A Active CN101194225B (zh) 2005-04-14 2006-04-14 用于支持条件指令无条件提供输出的系统及方法

Country Status (9)

Country Link
US (1) US7624256B2 (zh)
EP (1) EP1869547B1 (zh)
JP (3) JP2008537231A (zh)
KR (1) KR100953856B1 (zh)
CN (1) CN101194225B (zh)
BR (1) BRPI0610222A2 (zh)
IL (1) IL186632A (zh)
TW (1) TWI317906B (zh)
WO (1) WO2006113420A2 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
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
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
JP5072889B2 (ja) * 2009-03-16 2012-11-14 株式会社東芝 事前条件生成装置および事後条件生成装置、ならびにこれらの方法
GB2480285A (en) 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
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
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)
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
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
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
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
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
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
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
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
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
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
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN111209039B (zh) * 2018-11-21 2022-08-02 展讯通信(上海)有限公司 指令处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066151A1 (en) * 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
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
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066151A1 (en) * 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WEIHAW CHAUANG ET AL.Phi-predication for light-weight if-conversion.《CODE GENERATION AND OPTIMIZATION》.2003,179-180. *

Also Published As

Publication number Publication date
WO2006113420A3 (en) 2006-12-21
JP2015164048A (ja) 2015-09-10
JP2008537231A (ja) 2008-09-11
US20060236078A1 (en) 2006-10-19
IL186632A (en) 2012-04-30
WO2006113420A2 (en) 2006-10-26
CN101194225A (zh) 2008-06-04
TWI317906B (en) 2009-12-01
BRPI0610222A2 (pt) 2010-06-08
JP6009608B2 (ja) 2016-10-19
US7624256B2 (en) 2009-11-24
IL186632A0 (en) 2008-01-20
KR20070121842A (ko) 2007-12-27
JP2012212433A (ja) 2012-11-01
EP1869547B1 (en) 2016-09-21
TW200705266A (en) 2007-02-01
KR100953856B1 (ko) 2010-04-20
EP1869547A2 (en) 2007-12-26

Similar Documents

Publication Publication Date Title
CN101194225B (zh) 用于支持条件指令无条件提供输出的系统及方法
KR100402185B1 (ko) 컴퓨터 처리 시스템에서 순서화된 시퀀스의 명령어를실행하는 방법 및 장치
TWI507980B (zh) 最佳化暫存器初始化操作
Jourdan et al. A novel renaming scheme to exploit value temporal locality through physical register reuse and unification
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US7711935B2 (en) Universal branch identifier for invalidation of speculative instructions
US9569214B2 (en) Execution pipeline data forwarding
CN102707927B (zh) 具有条件指令的微处理器及其处理方法
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US9389868B2 (en) Confidence-driven selective predication of processor instructions
RU2431887C2 (ru) Использование системы переименования регистра для передачи промежуточных результатов между составными командами и расширенной командой
US9626185B2 (en) IT instruction pre-decode
JP6253706B2 (ja) ハードウェア装置
US20130019085A1 (en) Efficient Recombining for Dual Path Execution
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
US20230418612A1 (en) Automatic fusion of arithmetic in-flight instructions
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache
KR20230038799A (ko) 전력 절약을 위한 레지스터 리네이밍
Prémillieu Microarchitecture exploration of control flow reconvergence

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant