CN1746842A - 用于乱序执行条件指令的硬件装置及其执行方法 - Google Patents
用于乱序执行条件指令的硬件装置及其执行方法 Download PDFInfo
- Publication number
- CN1746842A CN1746842A CNA2005101025223A CN200510102522A CN1746842A CN 1746842 A CN1746842 A CN 1746842A CN A2005101025223 A CNA2005101025223 A CN A2005101025223A CN 200510102522 A CN200510102522 A CN 200510102522A CN 1746842 A CN1746842 A CN 1746842A
- Authority
- CN
- China
- Prior art keywords
- instruction
- condition
- register
- conditional order
- result
- 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
Links
- 230000015572 biosynthetic process Effects 0.000 claims description 48
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000003672 processing method Methods 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 12
- 238000000034 method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种用于乱序执行条件指令的硬件装置以及执行方法。提供了一种架构,该架构使得诸如支持条件指令的处理器以及计算机系统的硬件装置能够乱序执行指令。为此,提供了一种条件执行缓冲器,并且条件指令的目的操作数的寄存器被重命名为另一寄存器。因此,该使用条件指令的硬件装置能够实现乱序执行,并且该硬件装置的执行速度可被极大地提高。
Description
本申请要求于2004年9月8日在韩国知识产权局提交的第2004-71777号韩国专利申请的利益,该申请完全公开于此以资参考。
技术领域
本发明一般涉及一种用于发布并执行条件指令的硬件装置及其执行方法。更具体地讲,本发明涉及一种乱序发布并执行条件指令从而提高处理器性能的硬件装置。
背景技术
诸如处理器的硬件装置已被改进为具有指令执行的更高的速度并且在单个周期期间同时发布并执行多条指令。
然而,分支指令妨碍了处理器性能的提高并且限制了可发布的指令。处理器需要用于分支指令的分支预测的适当的硬件配置,并且当分支预测错误时需要清除在分支指令之后执行的指令的所有执行结果。这些要求引起了性能的降低。
在这方面,一些处理器通过采用条件指令来减少使用的分支指令。“条件指令”在指定的条件下被执行。表1显示了分支指令和条件指令的示例。
[表1]
分支指令的示例 | 条件指令的示例 |
CMP a,0BREQ L1ADD x,a,10BR L2L1:ADD x,a,1L2: … | CMP a,0ADDEQ x,a,1ADDNE x,a,10 |
就表1中的分支指令而言,指令CMP被执行为比较两个操作数a和0。如果结果是两个操作数相等,那么发布分支指令BREQ以执行L1阶段。
条件的执行结果引起乱序执行指令。相反,如果根据比较两个操作数不相等,那么被引向为顺序执行指令ADD以将a和10相加。
就表1中的条件指令而言,获得了与分支指令相同的结果。同时,在执行指令CMP之后,如果两个操作数相等,那么执行将a和l相加的条件指令ADDEQ。如果两个操作数不相等,那么按次序执行将a和10相加的条件指令ADDNE。
条件指令能够减少分支指令的个数,并防止由于分支预测失败所导致的性能降低。减少的分支指令的个数表示更大的块大小。块大小是基本处理器一次可执行的指令的大小。
在单个周期期间可以发布并执行多条指令的超标量处理器或超常指令字(VLIW)处理器能够一次发布多条指令。然而,由于条件指令依赖于从先前指令的执行所产生的条件,所以很难乱序执行条件指令。
“乱序”执行不是根据程序来顺序处理指令,而是首先处理可执行的指令而不管可执行的指令的次序。
起初,处理器“按次序”执行程序指令。因而,最初的处理器按次序执行程序,并且系统按次序处理包括程序中指定的寄存器的处理器的状态。
在逻辑基础上,如果不受数据依赖的影响,或者如果在处理指令期间没有资源冲突,那么可以跳过某个指令,改为发布并处理后面的指令,所述数据依赖是当指令依赖于先前指令的执行结果时产生的。因而,乱序执行可以大大地提高处理器的性能。
传统的支持条件指令的处理器包括INTEL Corp.的Alpha 21264微处理器和IA-64以及Advanced RISC Machines(ARM)Ltd.的ARM处理器。问题在于,当使用条件指令时传统的处理器不支持乱序执行。这是因为,当使用从先前指令的结果产生的状态时,由于数据依赖而导致很难支持乱序执行。
当条件指令的条件被存储在某个寄存器中时,除寄存器文件之外还需要读端口。当使用软件的条件指令的处理改变指令集架构(ISA)时,将失去与遗产程序(legacy program)的兼容。因此,当使用条件指令时需要用于乱序执行的处理器。
发明内容
本发明的一方面已被提供以解决传统布置中出现的上述和其他的问题以及缺点,并且本发明的一方面提供了一种用于支持并乱序执行条件指令以提高硬件装置性能的硬件装置以及用于乱序执行条件指令的方法。
根据本发明的一方面,一种用于乱序执行条件指令的硬件装置包括:解码和发布部分,取出用于设置条件的条件设置器指令、根据所述条件设置器指令的结果而被执行的条件指令和使用所述条件指令的结果的条件用户指令中的至少一个,并通过针对所述条件指令将目的操作数的寄存器重命名为不同的寄存器来乱序发布取出的指令;执行部分,包括至少一个执行发布的指令的执行器;条件处理部分,包括存储重命名信息、条件和所述条件指令的结果的重命名的寄存器,并通过检索有效的条件指令来输出存储的所述条件指令的结果,所述有效的条件指令的条件根据所述条件设置器指令的结果而被满足;和寄存器文件,将从所述条件处理部分输出的所述条件指令的结果存储到原始寄存器。
所述解码和发布部分可包括:解码器,取出所述至少一条指令,当取出的指令是条件指令时,将所述目的操作数的寄存器重命名为另一寄存器并输出所述取出的指令,并且当所述取出的指令是条件用户指令时,等待将被存储在所述寄存器文件的相应的寄存器中的所述有效的条件指令的结果并输出所述取出的指令;和指令发布队列,给从所述解码器输出的指令分派发布队列入口,并且当在所述执行部分中存在用于执行所述指令的可利用的执行器时,将所述指令发布到所述执行部分。
所述条件处理部分可包括:条件设置指针,指示由所述指令发布队列分派给所述条件设置器指令的入口;条件执行缓冲器,将重命名信息、条件和缓冲器入口分派给至少一个条件指令中的每个,所述重命名信息是从所述解码器接收的重命名的寄存器的信息以及原始寄存器信息,所述缓冲器入口存储由所述条件设置指针指示的发布队列入口信息;条件检验器,当所述条件设置器指令的结果从所述执行部分被接收时,向所述条件执行缓冲器请求根据所述条件设置器指令的结果而被执行的所述条件指令的条件,与所述条件设置器指令的结果比较,并选择满足所述条件的条件指令;和条件执行寄存器文件,从所述执行部分接收所述条件指令的结果,并将所述条件指令的结果暂时存储在重命名的寄存器中。
所述条件执行缓冲器可包括每个缓冲器入口中的缓冲器,所述缓冲器根据所述条件检验器的条件检验来指示满足所述条件的有效的条件指令。
所述条件执行缓冲器还可包括所述缓冲器入口中的缓冲器,所述缓冲器指示分派给所述条件指令的缓冲器入口是否被使用,并且指示当所述解码器对用于新近取出的条件指令的寄存器重命名时,所述缓冲器入口是否被使用。
所述条件执行寄存器文件可与所述寄存器一起指示所述重命名的寄存器是否被使用,并且当所述解码器对用于新的条件指令的寄存器重命名时,所述条件执行寄存器文件允许使用所述寄存器。
当所述取出的指令使用存储在所述条件执行缓冲器中的原始寄存器作为源操作数时,所述解码器可确定所述指令为条件用户指令。
一种计算机系统能够通过使用根据本发明实施例的可乱序执行条件指令的硬件装置来乱序执行条件指令。
根据本发明的另一方面,一种支持条件指令的硬件装置的乱序执行方法包括:取出用于设置条件的条件设置器指令、根据所述条件设置器指令的结果而被执行的条件指令和使用所述条件指令的结果的条件用户指令中的至少一个;当所述至少一个取出的指令被发布以用于执行时,针对所述条件指令将目的操作数的寄存器重命名为不同的寄存器并乱序发布指令;分别存储重命名信息和所述条件指令的条件;执行所述发布的指令并将所述条件指令的结果存储在重命名的寄存器中;当所述条件设置器指令的执行完成时,通过使用存储的重命名信息和存储的条件来选择有效的条件指令,所述有效的条件指令具有根据所述条件设置器指令的结果而被满足的条件;和存储所述重命名的寄存器的内容,所述重命名的寄存器将所述有效的条件指令的结果存储在原始寄存器中。
当所述取出的指令是条件用户指令时,所述指令可在所述有效的条件指令的结果被存储在所述原始寄存器中之后被发布。
根据本发明的另一方面,一种支持条件指令的硬件装置中的条件设置器指令处理方法包括:从存储器取出条件设置器指令,并将所述取出的条件设置器指令转递给指令发布队列;当所述指令发布队列接收到所述条件设置器指令并已分派发布队列入口时,乱序发出存储在所述发布队列的入口中的指令;执行与所述发布的指令相应的指令,并将执行结果提供给寄存器和条件检验器;将接收到的执行结果存储在所述寄存器中;和当一接收到所述执行结果时,检验所述条件指令的条件是否被满足。
本发明的另外和/或其它方面及优点将在下面的描述中部分被阐述,并且部分从描述是显而易见的,或者可通过本发明的实施被领会。
附图说明
通过结合附图,从下面详细的描述中,本发明的上述和/或其它方面及优点将会变得清楚,并且更易于理解,其中:
图1是根据本发明实施例的用于乱序执行条件指令的硬件装置的方框图;
图2是示出条件指令的重命名的操作的示图;
图3是解释硬件装置如何处理条件设置器指令的流程图;
图4是解释硬件装置执行条件指令的过程的流程图;和
图5是解释硬件装置如何处理条件用户指令的流程图。
具体实施方式
现在将详细描述本发明的实施例,其示例在附图中示出,其中,相同的标号始终表示相同的部件。下面通过参照附图来描述实施例以解释本发明。
图1是根据本发明实施例的用于乱序执行条件指令的硬件装置的方框图。
该硬件装置可适用于微处理器或计算机系统。该硬件装置根据电存储指令来操作。
该硬件装置可以执行条件指令。根据本发明的实施例,对于所有或一些可执行指令,该硬件装置支持条件指令。
在本实施例中,采用该硬件装置来支持条件指令的乱序执行。为此,使用重命名操作来将多个物理目的寄存器分配给与条件指令相关的目的操作数的寄存器。下面是参照图2的重命名的操作的解释。
图2示出了条件指令的重命名的操作。详细地讲,图2显示了重命名之前的指令集A和重命名的指令集B,所述重命名的指令集B包含指令集A的重命名的指令。
就指令集A而言,指令CMP比较寄存器r1的内容是否等于0。如果该内容等于0,那么发布指令ADDEQ来将寄存器r1的内容和1相加并将结果存储在寄存器r2中,所述寄存器r2是目的操作数的寄存器。相反,如果寄存器r1的内容不同于0,那么发布指令ADDNE来将10加到该内容并将结果存储在寄存器r2中。接下来,发布指令ADD来将100加到存储在寄存器r2中的结果,并将获得的结果存储在作为目的操作数的寄存器的寄存器r3中。
指令CMP的条件的执行能够确定后面的指令ADDEQ和ADDNE中的哪个被执行。在下文中,“条件设置器指令”指的是确定诸如指令CMP的哪个条件指令将被执行的指令。
存在这样一种条件指令:只有当根据条件设置器指令的结果满足某个条件时才能执行相应的指令。例如,这种条件指令包括ADDEQ和ADDNE。
条件用户指令利用条件指令执行的结果。在指令集A中,只有当有效的条件指令被从条件指令ADDEQ和ADDNE选择并且当其结果被存储在寄存器r2中时,指令ADD才被执行。因此,即使条件设置器指令和条件指令能够被并行执行,条件用户指令也不被执行,直到精确的条件被确定。
指令集A的指令ADDEQ可以被安排为:根据指令CMP的结果稍后被处理,并且在获得指令CMP的结果之前被执行并被存储在寄存器r2中。相反,指令ADDNE不能与指令CMP或指令ADDEQ同时执行,这是因为指令ADDEQ已经使用了寄存器r2并且还没有获得指令CMP的结果。因而,指令必须被顺序执行。
指令集B包含从条件指令的目的操作数被重命名为不同寄存器的指令。A’(由虚线指示)的寄存器r2分别被重新分配为B’(由虚线指示)中的C_r0和C_r1。因此,指令ADDEQ和ADDNE与指令CMP被并行执行而不必等待指令CMP的结果,并且它们的结果被分别存储到C_r0和C_r1。当获得指令CMP的结果时,只有满足结果之中的条件的条件指令结果被接受,其余的被舍弃。结果,指令集B中的作为条件用户指令的指令ADD不能被并行执行。
根据本发明的另一实施例,所有或一些指令可以被重命名以并行执行多条指令。在这种情况下,为了并行处理,指令集A已经被重命名,并且指令集A的集A’也可以为了并行处理而被重命名,所述指令集A参与了为了乱序执行的重命名操作。
回头参照图1,当执行图2的指令集时具体地解释硬件装置。
硬件装置100可被配备在计算机系统中。硬件装置100可以被连接到存储器(未示出)、高速缓冲存储器(未示出)、输入和输出(I/O)接口(未示出)和总线架构(未示出)。通过使用总线架构,硬件装置100可被连接到接口,所述接口用于与诸如硬盘驱动器(未示出)的存储装置以及诸如显示器、键盘和调制解调器的计算机外围设备连接。
硬件装置100可被配备在包括高速缓冲存储器(未示出)、I/O接口(未示出)和总线架构(未示出)的处理器中。
硬件装置100通过高速缓冲存储器(未示出)从存储器(未示出)读取程序指令并执行读取的指令。因而,硬件装置100按程序要求来处理和操作。
仍然参照图1,硬件装置100包括解码和发布部分110、执行部分130、条件处理部分150和寄存器文件170。
指令发布队列103和执行部分130通过使用指令总线111来被连接。执行部分130、寄存器文件170、条件检验器155和条件执行寄存器文件157通过使用结果总线113来被连接。寄存器文件170通过使用操作数总线115被连接到执行部分130。
解码和发布部分110包括解码器101和指令发布队列103。解码和发布部分110从存储器(未示出)取出指令,对条件指令重命名,并将指令乱序发布到执行部分130。
解码器101从存储在存储器(未示出)中的程序取出将被执行的指令,并将取出的指令转递给指令发布队列103。如果硬件装置100支持超标量架构,那么解码器101在单个周期期间可以一次取出多条指令。
条件指令被解码以对目的操作数的寄存器重命名,并被提供给指令发布队列103和条件执行缓冲器153。解码器101将关于重命名的寄存器的信息提供给条件执行寄存器文件157。
如果确定取出的指令是条件用户指令,那么有效的条件指令被选择,并且直到有效的条件指令的结果被存储在寄存器文件170的相应的寄存器中所述指令才被传送到指令发布队列103。
指令发布队列103使用顶指针和底指针来递归分配和移动队列的入口,并以非递归的方式将顶指针和底指针之间的有效指令发布到执行部分130。顶指针指示存储新指令的入口,底指针指示指令发布队列的入口之中的最旧的入口。由于指令以非递归的方式被发布,所以后面的入口可优先于前面的入口被发布。
对于入口中的指令,当源寄存器和源条件寄存器的数据作好准备并且执行部分130中存在可利用的执行器时,指令发布队列130将每个指令发布到执行部分130。
执行部分130负责指令的实际执行。执行部分130包括至少一个执行器。执行部分130经指令总线111从指令发布队列103接收指令,并经操作数总线115从寄存器文件170读取用于指令执行的操作数的值。在执行部分130执行的指令的结果经结果总线113被提供给寄存器文件170、条件检验器155和条件执行寄存器文件157。
条件处理部分150包括最新的条件设置指针(LCSP)151、条件执行缓冲器153、条件检验器155和条件执行寄存器文件157。
当条件指令从解码器101被供给指令发布队列103时,LCSP 151指定从指令发布队列103分配的入口9000(在下文中,被称为发布队列入口),并将相应的指令队列的入口信息提供给条件执行缓冲器153。
根据本发明的实施例,条件执行缓冲器153支持用于条件指令的乱序执行的重命名操作。当条件指令被供给指令发布队列103时,条件执行缓冲器153为重命名的条件指令分配一个入口(在下文中,被称为执行缓冲器入口)。如表2中所显示,每个入口包括条件设置指针(CSP)、执行条件(COND)、原始寄存器(OR)、重命名的寄存器(RR)、条件有效(CV)和有效(V)。
表2显示了条件执行缓冲器153的入口,所述入口被分配并被设置以处理条件指令ADDEQ和ADDNE。
[表2]
CSP | COND | OR | RR | CV | V |
9000 | EQ | r2 | C_r0 | 1 | 1 |
9000 | NE | r2 | C_r1 | 0 | 0 |
在表2中,为两个条件指令分派了两个入口。
CSP存储由LCSP 151指示的条件设置器指令的发布队列入口。如果获得条件设置器指令的结果,那么将使用该结果的条件指令可以从条件执行缓冲器153被检验。
COND存储各个条件指令的条件。就如图2中所示的指令集B而言,用于相加的条件EQ(指示相等)和NE(指示不相等)被存储。
OR存储条件指令的原始目的操作数的寄存器。RR存储重命名的目的操作数的寄存器。
CV指示满足相关的COND的条件的有效的条件指令。最好是,就有效的入口而言,CV被设置为1。就不满足条件的无效的入口而言,CV被设置为零。CV可被设置为零,直到获得条件设置器指令的结果。
V是用于入口管理的缓冲器。如果相关的入口被确定为无效的入口,那么V被设置为零而不是清除整个相关的入口,从而可使用该相关的入口来分派关于下一个条件指令的入口。
当一从条件检验器155接收到传送与条件设置器指令的发布队列入口相同的执行缓冲器入口的COND的请求时,条件执行缓冲器153检索CSP并将与条件设置器指令的发布队列入口9000相同的执行缓冲器入口的COND提供给条件检验器155。
当一通过结果总线113从执行部分130接收到条件设置器指令的结果和相关的发布队列入口9000时,条件检验器155向条件执行缓冲器153请求具有与相关的条件设置器指令的发布队列入口9000相同的CSP的执行缓冲器入口的COND数据。接下来,条件检验器155将接收到的COND与条件设置器指令的结果比较。在条件执行缓冲器153的入口之中满足条件的入口的CV被设置为1。
条件执行寄存器文件157包括数据和有效的缓冲器。条件执行寄存器文件157从解码器101接收关于条件指令的重命名的寄存器的信息,并设置为有效的缓冲器。
当通过结果总线113将重命名的目的操作数的寄存器地址提供给在执行部分130执行的条件指令的结果时,条件执行寄存器文件157将相应的结果存储在相关的寄存器的数据缓冲器中。例如,就图2中所示的指令集B而言,指令ADDEQ的结果被存储到C_r0,指令ADDNE的结果被存储到C_r1。
根据条件检验器155的条件检验,当有效的条件指令被选择时,存储在由条件执行缓冲器153的RR指定的寄存器中的相应的值最终被存储到由条件执行缓冲器153的OR指定的寄存器。
寄存器文件170将执行指令所需的源操作数的寄存器值提供给执行部分130,从执行部分130接收指令的结果,并将该结果存储在相应的目的操作数的寄存器中。此外,寄存器文件170从条件执行寄存器文件157接收有效的条件指令的结果,并将接收的结果存储在由OR指定的寄存器中。
在下文中,参照图3到图5基于图2的指令集来示出按照类型来说的指令的执行。尽管图3到图5分别解释了按照类型来说的指令的执行,但是假定指令的条件设置器指令和条件指令可被并行地并且以乱序执行来被处理。
图3是解释根据本发明实施例乱序执行条件指令的硬件装置100如何处理条件设置器指令的流程图。
参照图1和图3,当从存储器(未示出)取出条件设置器指令CMP时,解码器101将取出的条件设置器指令CMP转递给指令发布队列103。如果硬件装置100支持超标量架构,那么解码器101在单个周期期间可以一次取出多条不同的指令(S301)。
当指令发布队列103接收到条件设置器指令并分派入口9000时,LCSP151指示分派的发布队列入口9000。指令发布队列103乱序发布存储在发布队列的入口中的指令,并将条件设置器指令发布到相关的执行部分130(S303)。
执行部分130经操作数总线115从寄存器文件170接收并执行相应的指令,所述相应的指令被存储在与指令CMP相关的源操作数r1的寄存器中。执行部分130将结果提供给寄存器文件170和条件检验器155(S305)。
寄存器文件170将从执行部分130接收的结果存储在相应的目的操作数的寄存器中(S307)。注意到,没有目的操作数的指令CMP没有被存储在寄存器文件170中。
当在操作S305中一接收到条件设置器指令的结果时,条件检验器155检验条件指令的条件是否被满足,而不论条件指令的结果是否被存储在条件执行寄存器文件157中。
更具体地讲,为了检索与相应的条件设置器指令相关的条件指令,条件检验器155向条件执行缓冲器153请求具有与条件设置器指令的发布队列入口相同的CSP的执行缓冲器入口的COND值。条件执行缓冲器153在CSP中检索被存储为9000的执行缓冲器入口,并将条件EQ和NE提供给条件检验器155。
条件检验器155通过使用COND的条件来检索满足条件的条件指令,并将CV设置为1。根据CMP的结果,如果当存储在r1中的值等于零时条件EQ被满足,那么指令ADDEQ成为有效的条件指令,指令ADDNE成为无效的条件指令。因此,如表2中所显示,第一入口的CV被设置为1,第二入口的CV被设置为零(S309)。
结果,完成了条件设置器指令的处理。注意到,需要条件设置器指令的结果来使条件指令的执行完成,所述条件指令的执行将参照图4来被描述。
图4是解释根据本发明实施例硬件装置100如何乱序执行条件指令的流程图。
参照图1和图4,当从存储器(未示出)取出条件指令ADDEQ和ADDNE时(S401),解码器101在将条件指令ADDEQ和ADDNE转递给指令发布队列103之前对它们重命名(S403)。为此,解码器101通过检验条件执行寄存器文件157的有效来将目的操作数的寄存器重命名为可利用的寄存器。解码器101将重命名的条件指令提供给指令发布队列103,同时将重命名的寄存器信息C_r0和C_r1提供给条件执行寄存器文件157。
当指令发布队列103接收到条件指令并分派入口时,条件执行缓冲器153还分派条件指令的执行缓冲器入口。
就指令ADDEQ而言,如表2中所显示的第一入口,在操作S303中条件执行缓冲器153将由LCSP 151指示的条件设置器指令的发布队列入口9000存储到CSP,并将条件EQ存储到COND。条件执行缓冲器153将原始寄存器r2存储在OR中,将重命名的寄存器C_r0存储在RR中,将CV设置为零,并将V设置为1。
指令发布队列103乱序发布存储在发布队列的入口中的指令,并将条件指令发布到相关的执行部分130。该指令在操作S303中可与作为条件设置器指令的指令CMP并行被发布。简而言之,该指令被乱序发布(S405)。
执行部分130通过操作数总线115从寄存器文件170接收存储在与相应的指令ADDEQ相关的源操作数的寄存器r1中的操作数,并执行相应的指令(S407)。
执行部分130将指令的结果提供给条件执行寄存器文件157的重命名的寄存器,并将该指令的结果存储在条件执行寄存器文件157的重命名的寄存器中(S409)。例如,如图2中所示的指令ADDEQ的结果被提供给寄存器C_r0。
当条件检验终止时,在操作S409中有效的条件指令被选择并且相关的执行缓冲器入口的CV被设置,条件执行寄存器文件157读取由相关的执行缓冲器入口的RR所指定的寄存器的值,并将该值存储在由OR指定的寄存器文件170的原始寄存器中(S411)。
因此,条件指令能够被执行。
图5是解释根据本发明实施例所述硬件装置如何处理条件用户指令的流程图。
参照图1和图5,取出指令(S501)之后,如果取出的指令是一般的指令而非条件设置器指令或条件指令,那么解码器101通过检验源操作数的寄存器r2是否在条件执行缓冲器153的OR中被指定来确定该取出的指令是否是条件用户指令。如图2中所显示的指令ADD使用条件指令的目的操作数r2作为源操作数。在表2中,由于在操作S405中r2被分派为OR,所以指令ADD成为条件用户指令。
当一确定为条件用户指令时,解码器101根据操作S411中的结果确定有效的条件指令是否被选择(S503)。如果有效的条件指令被选择,那么解码器101将条件用户指令提供给指令发布队列103。
指令发布队列103将入口分配给条件用户指令并将该指令乱序发布到执行部分130(S505)。当执行部分130执行条件用户指令(S507)时,结果被存储在寄存器文件170中(S509)。
因此,所述指令能够被执行。尽管已经参照图1到图3分别示出了指令,但是指令被并行执行是预先安排好的。
由于通过使用寄存器重命名操作在操作S303和S305中条件设置器指令的执行以及在操作S405和S407中条件指令的执行没有相互的数据依赖,所以条件设置器指令和条件指令被执行部分130并行地并且乱序地执行。
因而,硬件装置100能够乱序执行条件指令。
如以上所阐述的,所述硬件装置能够乱序执行条件指令。条件指令的依赖通过寄存器重命名被去除。当执行器的数量足够时,条件设置器指令和条件指令能够在单个周期中被执行,并且它们的结果能够被选择。此外,可提高整个系统的执行速度。
不需要另外的指令,这是因为作为硬件的条件执行缓冲器实现乱序执行。
即使当尽管寄存器重命名但因为条件指令不能满足执行条件而使执行的条件指令变成无效时,条件执行缓冲器的入口也可被清除并被恢复,而不必单独恢复寄存器。
由于所述硬件没有改变传统的ISA,所以遗产程序可被再使用。
尽管已经显示并描述了本发明的一些实施例,但是本发明并不限于所描述的实施例。相反,本领域的技术人员应该理解,在不脱离本发明的原理和精神的条件下可以对这些实施例进行改变,本发明的范围由权利要求及其等同物来限定。
Claims (11)
1、一种用于乱序执行条件指令的硬件装置,包括:
解码和发布部分,取出用于设置条件的条件设置器指令、根据所述条件设置器指令的结果而被执行的条件指令和使用所述条件指令的结果的条件用户指令中的至少一个,并通过针对所述条件指令将目的操作数的寄存器重命名为不同的寄存器来乱序发布取出的指令;
执行部分,包括至少一个执行发布的指令的执行器;
条件处理部分,包括存储重命名信息、条件和所述条件指令的结果的重命名的寄存器,并通过检索有效的条件指令来输出存储的所述条件指令的结果,所述有效的条件指令的条件根据所述条件设置器指令的结果而被满足;和
寄存器文件,将从所述条件处理部分输出的所述条件指令的结果存储到原始寄存器。
2、根据权利要求1所述的硬件装置,其中,所述解码和发布部分包括:
解码器,取出所述指令,当取出的指令是条件指令时,将所述目的操作数的寄存器重命名为另一寄存器并输出所述取出的指令,并且当所述取出的指令是条件用户指令时,等待将被存储在所述寄存器文件的相应的寄存器中的所述有效的条件指令的结果并输出所述取出的指令;和
指令发布队列,给从所述解码器输出的指令分派发布队列入口,并且当在所述执行部分中存在用于执行所述指令的可利用的执行器时,将所述指令发布到所述执行部分。
3、根据权利要求1所述的硬件装置,其中,所述条件处理部分包括:
条件设置指针,指示由所述指令发布队列分派给所述条件设置器指令的入口;
条件执行缓冲器,将重命名信息、条件和缓冲器入口分派给至少一个条件指令中的每个,所述重命名信息是从所述解码器接收的重命名的寄存器的信息以及原始寄存器信息,所述缓冲器入口存储由所述条件设置指针指示的发布队列入口信息;
条件检验器,当所述条件设置器指令的结果从所述执行部分被接收时,向所述条件执行缓冲器请求根据所述条件设置器指令的结果而被执行的所述条件指令的条件,与所述条件设置器指令的结果比较,并选择满足所述条件的条件指令;和
条件执行寄存器文件,从所述执行部分接收所述条件指令的结果,并将所述条件指令的结果暂时存储在重命名的寄存器中。
4、根据权利要求3所述的硬件装置,其中,所述条件执行缓冲器包括每个缓冲器入口中的缓冲器,所述缓冲器根据所述条件检验器的条件检验来指示满足所述条件的有效的条件指令。
5、根据权利要求3所述的硬件装置,其中,所述条件执行缓冲器还包括所述缓冲器入口中的缓冲器,所述缓冲器指示分派给所述条件指令的缓冲器入口是否被使用,并且指示当所述解码器对用于新近取出的条件指令的寄存器重命名时,所述缓冲器入口是否被使用。
6、根据权利要求3所述的硬件装置,其中,所述条件执行寄存器文件与所述寄存器一起指示所述重命名的寄存器是否被使用,并且当所述解码器对用于新的条件指令的寄存器重命名时,所述条件执行寄存器文件允许使用所述寄存器。
7、根据权利要求3所述的硬件装置,其中,当所述取出的指令使用存储在所述条件执行缓冲器中的原始寄存器作为源操作数时,所述解码器确定所述指令为条件用户指令。
8、一种用于通过使用硬件装置来乱序执行条件指令的计算机系统,所述硬件装置包括:
解码和发布部分,取出用于设置条件的条件设置器指令、根据所述条件设置器指令的结果而被执行的条件指令和使用所述条件指令的结果的条件用户指令中的至少一个,并通过针对所述条件指令将目的操作数的寄存器重命名为不同的寄存器来乱序发布取出的指令;
执行部分,包括至少一个执行发布的指令的执行器;
条件处理部分,包括存储重命名信息、条件和所述条件指令的结果的重命名的寄存器,并通过检索有效的条件指令来输出存储的所述条件指令的结果,所述有效的条件指令的条件根据所述条件设置器指令的结果而被满足;和
寄存器文件,将从所述条件处理部分输出的所述条件指令的结果存储到原始寄存器。
9、一种支持条件指令的硬件装置的乱序执行方法,包括:
取出用于设置条件的条件设置器指令、根据所述条件设置器指令的结果而被执行的条件指令和使用所述条件指令的结果的条件用户指令中的至少一个;
当取出的指令被发布以用于执行时,针对所述条件指令将目的操作数的寄存器重命名为不同的寄存器并乱序发布指令;
分别存储重命名信息和所述条件指令的条件;
执行所述发布的指令并将所述条件指令的结果存储在重命名的寄存器中;
当所述条件设置器指令的执行完成时,通过使用存储的重命名信息和存储的条件来选择有效的条件指令,所述有效的条件指令具有根据所述条件设置器指令的结果而被满足的条件;和
存储所述重命名的寄存器的内容,所述重命名的寄存器将所述有效的条件指令的结果存储在原始寄存器中。
10、根据权利要求9所述的乱序执行方法,其中,当所述取出的指令是条件用户指令时,所述指令在所述有效的条件指令的结果被存储在所述原始寄存器中之后被发布。
11、一种支持条件指令的硬件装置中的条件设置器指令处理方法,包括:
从存储器取出条件设置器指令,并将取出的条件设置器指令转递给指令发布队列;
当所述指令发布队列接收到所述条件设置器指令并已分派发布队列入口时,乱序发出存储在所述发布队列的入口中的指令;
执行与发布的指令相应的指令,并将执行结果提供给寄存器和条件检验器;
将接收到的执行结果存储在所述寄存器中;和
当一接收到所述执行结果时,检验所述条件指令的条件是否被满足。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040071777A KR100628573B1 (ko) | 2004-09-08 | 2004-09-08 | 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법 |
KR1020040071777 | 2004-09-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1746842A true CN1746842A (zh) | 2006-03-15 |
Family
ID=36158966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005101025223A Pending CN1746842A (zh) | 2004-09-08 | 2005-09-08 | 用于乱序执行条件指令的硬件装置及其执行方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20060095733A1 (zh) |
JP (1) | JP3854624B2 (zh) |
KR (1) | KR100628573B1 (zh) |
CN (1) | CN1746842A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853150A (zh) * | 2009-05-29 | 2010-10-06 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
CN101201736B (zh) * | 2006-12-13 | 2011-08-10 | 索尼株式会社 | 数学运算处理装置 |
CN101158893B (zh) * | 2006-10-03 | 2012-10-03 | Arm有限公司 | 数据处理系统中的寄存器重命名 |
CN101681259B (zh) * | 2007-05-03 | 2014-05-14 | 高通股份有限公司 | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 |
CN103853526A (zh) * | 2014-02-20 | 2014-06-11 | 清华大学 | 可重构处理器及可重构处理器的条件执行方法 |
CN104615412A (zh) * | 2015-02-10 | 2015-05-13 | 清华大学 | 基于触发指令结构的执行控制流的方法及系统 |
CN113485748A (zh) * | 2021-05-31 | 2021-10-08 | 上海卫星工程研究所 | 卫星条件指令系统及其执行方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745315B2 (en) * | 2006-11-06 | 2014-06-03 | Rambus Inc. | Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory |
KR100861701B1 (ko) * | 2007-01-10 | 2008-10-06 | 연세대학교 산학협력단 | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
US7765384B2 (en) * | 2007-04-18 | 2010-07-27 | International Business Machines Corporation | Universal register rename mechanism for targets of different instruction types in a microprocessor |
US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
US9946550B2 (en) | 2007-09-17 | 2018-04-17 | International Business Machines Corporation | Techniques for predicated execution in an out-of-order processor |
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 |
WO2012138952A1 (en) * | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Conditional store instructions in an out-of-order execution microprocessor |
US9841974B2 (en) * | 2014-04-25 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Renaming with generation numbers |
US20180203703A1 (en) * | 2017-01-13 | 2018-07-19 | Optimum Semiconductor Technologies, Inc. | Implementation of register renaming, call-return prediction and prefetch |
CN109101276B (zh) * | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
KR102170966B1 (ko) * | 2019-11-15 | 2020-10-28 | 연세대학교 산학협력단 | 고성능 비순차 실행 코어의 리오더 버퍼 관리 장치 및 방법 |
KR102292580B1 (ko) * | 2020-03-19 | 2021-08-20 | 연세대학교 산학협력단 | 고성능 비순차 실행 코어의 물리 레지스터 파일 관리 장치 및 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US6131156A (en) * | 1996-05-31 | 2000-10-10 | Hewlett-Packard Company | Optimized storage system and method for a processor that executes instructions out of order |
US5770894A (en) * | 1996-07-10 | 1998-06-23 | International Business Machines Corporation | Parallel processing method having arithmetical conditions code based instructions substituted for conventional branches |
US5887161A (en) * | 1997-03-31 | 1999-03-23 | International Business Machines Corporation | Issuing instructions in a processor supporting out-of-order execution |
US6170052B1 (en) * | 1997-12-31 | 2001-01-02 | Intel Corporation | Method and apparatus for implementing predicated sequences in a processor with renaming |
US6061785A (en) | 1998-02-17 | 2000-05-09 | International Business Machines Corporation | Data processing system having an apparatus for out-of-order register operations and method therefor |
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 |
EP1050811A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Branching in a computer system |
GB2352308B (en) * | 1999-07-21 | 2004-06-30 | Element 14 Ltd | Accessing a test condition |
JP2001051845A (ja) | 1999-08-12 | 2001-02-23 | Hitachi Ltd | アウトオブオーダー実行方式 |
US7228402B2 (en) * | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
-
2004
- 2004-09-08 KR KR1020040071777A patent/KR100628573B1/ko not_active IP Right Cessation
-
2005
- 2005-09-07 US US11/219,797 patent/US20060095733A1/en not_active Abandoned
- 2005-09-08 JP JP2005261394A patent/JP3854624B2/ja not_active Expired - Fee Related
- 2005-09-08 CN CNA2005101025223A patent/CN1746842A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158893B (zh) * | 2006-10-03 | 2012-10-03 | Arm有限公司 | 数据处理系统中的寄存器重命名 |
CN101201736B (zh) * | 2006-12-13 | 2011-08-10 | 索尼株式会社 | 数学运算处理装置 |
CN101681259B (zh) * | 2007-05-03 | 2014-05-14 | 高通股份有限公司 | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 |
CN101853150A (zh) * | 2009-05-29 | 2010-10-06 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
CN101853150B (zh) * | 2009-05-29 | 2013-05-22 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
CN103853526A (zh) * | 2014-02-20 | 2014-06-11 | 清华大学 | 可重构处理器及可重构处理器的条件执行方法 |
CN104615412A (zh) * | 2015-02-10 | 2015-05-13 | 清华大学 | 基于触发指令结构的执行控制流的方法及系统 |
CN104615412B (zh) * | 2015-02-10 | 2018-11-09 | 清华大学 | 基于触发指令结构的执行控制流的方法及系统 |
CN113485748A (zh) * | 2021-05-31 | 2021-10-08 | 上海卫星工程研究所 | 卫星条件指令系统及其执行方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3854624B2 (ja) | 2006-12-06 |
JP2006079623A (ja) | 2006-03-23 |
KR100628573B1 (ko) | 2006-09-26 |
US20060095733A1 (en) | 2006-05-04 |
KR20060022973A (ko) | 2006-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1746842A (zh) | 用于乱序执行条件指令的硬件装置及其执行方法 | |
CN1324459C (zh) | 利用提示缓冲器隐藏存储器访问等待时间的方法和装置 | |
CN1269042C (zh) | 具有预取指令的微处理器及预取至其高速缓存的方法 | |
CN1299218C (zh) | 执行指令的方法 | |
CN1254739C (zh) | 处理器和操作处理器的方法 | |
CN1199099C (zh) | 紧密耦合式多处理器的快速多线程执行 | |
CN100342325C (zh) | 减少多线程处理器中寄存器文件端口的方法和装置 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
CN1120415C (zh) | 合并多个未完成的装入未命中指令的系统和方法 | |
CN1129843C (zh) | 使用组合的数据处理器系统和指令系统 | |
CN101040256A (zh) | 用于多核处理器的存储指令排序 | |
CN1677364A (zh) | 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备 | |
CN1094526A (zh) | 用于在多条总线之间传送信息的系统和方法 | |
CN1991905A (zh) | 图形处理单元的同步方法以及围篱/等待同步组件 | |
CN1908903A (zh) | 执行作业步的系统和方法以及计算机产品 | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
CN1581069A (zh) | 具有多位字段的寄存器的重命名 | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
CN100341009C (zh) | 在管线微处理器使用卷标以执行结合写入的装置及方法 | |
CN1183445C (zh) | 推测性字符串/多重操作的方法和结构 | |
CN1278931A (zh) | 特别适于译码数字音频信号的数字信号处理器 | |
CN1224871A (zh) | 在一个处理系统中处理多条存储指令完成的方法和系统 | |
CN1016383B (zh) | 基于操作数长度和对位的微码转移 | |
CN1234066C (zh) | 基于操作队列复用的指令流水线系统和方法 | |
CN1149472C (zh) | 更名装置及处理器 |
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 |