乱序执行微处理器以及宏指令处理方法技术

技术编号:2918104 阅读:270 留言:0更新日期:2012-04-11 18:40
一种乱序执行微处理器,用以处理宏指令。宏指令指示微处理器将8位的结果值仅写入微处理器的N位的一般用途寄存器的较低8位。指令编译器将宏指令转换成合并微指令,其记载N位的第一来源寄存器、8位的第二来源寄存器以及接收N位结果值的N位目的寄存器。N位第一来源寄存器和N位目的寄存器是N位结构一般用途寄存器。执行单元将8位的结果值写入N位结果值的较低8位,并且将合并微指令所记载的N位第一来源寄存器的较高N-8位写入N位结果值对应的较高N-8位。

【技术实现步骤摘要】

本专利技术是有关于乱序执行微处理器的领域,特别是其乱序执行微处理器架构允许指令寻址各种位长度(size)的操作数。
技术介绍
微处理器包括了用来储存指令操作数的寄存器结构集合。举例来说,非常热门的IA-32 Intel(R)架构(亦称为x86架构)于其寄存器集合中包括了许多的寄存器,包括8个32位的一般用途寄存器,称为EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP。指令可记载结构寄存器集合中的寄存器为来源寄存器,其用来储存可为指令所运算而产生结果值的来源操作数。指令也可记载结构寄存器集合中的寄存器为目的寄存器,用以接收指令运算后的结果值。举例来说,x86的ADD EAX,EBX指令(以下简称指令A)指令将EAX和EBX寄存器的内容相加产生一个32位的结果值(总合),并且将该32位的结果值存入EAX寄存器中。因此,指令A是记载EAX和EBX寄存器来储存来源操作数,而记载EAX寄存器接收来源操作数加法运算后的结果值。超纯量乱序执行处理器包括了多重的执行单元,其可于每一频率周期内平行地执行个别的指令。独立的指令彼此间可用乱序的方式执行。然而,程序中使用到(或者被依附到)前一指令的结果值的指令,必须等到供应端指令(被依附的指令)产生其结果值且让该结果值可为依附端指令取得之后才可执行。处理器包括了一指令缓冲器(或可能是多个指令缓冲器,例如每个执行单元皆有一个指令缓冲器),用以储存等待被执行单元所执行的指令。依附端指令所记载的来源操作数通常是供应端指令的结果值,该供应端指令可能已为执行单元所执行、正为执行单元所执行或者根本尚未为执行单元所执行,因此指令在可取得来源操作数之前必须在指令缓冲器中等待发送到执行单元。当执行单元产生结果值时,其将此结果值写入更名寄存器集合中的非架构可见的寄存器。然而,由于指令必须以程序顺序撤回到结构寄存器集合(由于发生分支预测错误的可能性或其它特殊情况),因此可能会花上好几个频率周期-->的时间将结果值从更名寄存器集合撤回到结构寄存器集合。超纯量乱序执行微处理器通常借着尽快把指令发送到执行单元来提升效能。更具体地说,微处理器通常直接将供应端指令发送到将执行依附端指令的执行单元,相较于等待接收结构寄存器集合的来源操作数的方式而言,这使得依附端指令可早几个频率周期执行。微处理器借着比较由执行单元所输出的用以辨识那一个供应端指令的结果值正被执行单元所输出的卷标,与一个用以辨识来源操作数的供应端指令的依附关系卷标,来确认该来源操作数是否为可取得的状态。某些处理器架构允许指令写入一个位长度比微处理器中结构寄存器集合的默认操作数位长度(其于x86架构中为32位,举例来说)还小的结果值。换言之,指令仅写入结构寄存器集合中各个寄存器的子集合。举例来说,在IA-32架构中,该8个一般用途寄存器的低16位直接映射到Intel 8086和80286处理器的寄存器集合,参照为AX、BX、CX、DX、BP、SI、DI和SP。每一个EAX、EBX、ECX和EDX的较高的两个字节可参照成AH、BH、CH和DH(高字节),而另外是AL、BL、CL和DL(低字节)。这使得用于x86家族初期处理器上的早期程序依旧可于目前的IA-32处理器上执行。举例来说,x86的ADD AL,BL指令(以下简称指令B)将AL和BL寄存器的内容相加产生一个8位的结果值(总合),并且将该8位的结果值储存于AL寄存器。因此,指令B记载32位EAX和EBX寄存器的较低8位的子集合来储存来源操作数,而记载32位EAX寄存器的较低8位的子集合来接收来源操作数加法运算后的结果值。让供应端指令将结果值写入结构寄存器的子集合(也就是写入一个位长度比结构寄存器的默认操作数位长度还小的结果值)会产生一个副作用,就是当之后的依附端指令若是记载完整默认位长度的结构寄存器为来源操作数时,该依附端指令变成依附至两个或更多个指令的结果值之上。举例来说,考虑程序以下的指令顺序:(1)ADD EAX,EBX←供应端指令A(2)ADD AL,CL  ←供应端指令B(3)ADD EDX,EAX←依附端指令A根据此指令顺序,依附端指令A记载32位的EAX寄存器为来源操作数。来源操作数的较低8位为供应端指令B的结果值,而来源操作数的较高24位为供应端指令A的较高24位的结果值。因此,在上述两个供应端指令的结果可为即将执行该依附端指令A的执行单元取得之前,依附端指令A必须于指-->令缓冲器中等待发送。至少有两种方法可确保在依附端指令A所依附的所有指令的结果值计算完成之前,依附端指令A必须于指令缓冲器之内等待发送。根据第一种解决方案—在此称为序列化(serialization)。此解决方案就是使该微处理器持续处于等待发送依附端指令的状态,直到微处理器中所有比依附端指令早期且处于作用状态的微指令将其结果值撤回至结构寄存器集合为止。这个方式可确保依附端指令所依附到的供应端指令会将结构寄存器集合更新完毕,使得执行该依附端指令的执行单元将可接收到适当来源操作数的值。以上述的例子来说,其确保依附端指令将可接收到供应端指令B的8位的结果值,以及供应端指令A的较高24位的结果值。然而,这并非是一个有效率的解决方案,因为这将降低超纯量乱序执行所广为人知的效能优势,因为比起允许更名寄存器集合且(或)产生依附端指令的结果值的执行单元立刻将它们的结果值发送至即将执行该依附端指令的执行单元的情况来说,这方法必须等待较久的时间才可执行依附端指令。根据第二种解决方案,微处理器可包括额外的电路来确认何时可取得这两个供应端指令的结果值。虽然这个方法比第一解决方案具有更高的效能,但比起第一解决方案,这个方法需要以更多的电路来实现,这并非属于乐于见到的现象。具体而言,第一解决方案需要大量的比较器电路来比较下面两种卷标:(1)用以识别由执行单元所完成的指令的卷标和(2)等待于指令缓冲器中的指令的来源操作数的卷标。更详细地说,第一解决方案需要至少N个比较器,其中N是以下三个数目的乘积:(1)可等待于指令缓冲器中的指令的数目(2)每一个等待于指令缓冲器中的指令其所记载的所有可能来源操作数的数目(3)可于每一频率周期提供指令的结果值的执行单元的数目。相较之下,第二解决方案所需的比较器数量至少是第一解决方案的两倍。这是因为两个不同的执行单元可将它们的结果值当成一部分的给定来源操作数发送给等待中的依附端指令。也就是说,第二解决方案必须包括的比较器数量必须比第一解决方案的N个还多特定的倍数,上述特定倍数的数目是来源操作数中每一来源操作数至多可依附的部分,其在以上的实施例中最多是两倍,因此需要2N个比较器。另外,在x86架构中,第二解决方案需要的比较器数目是第一解决方案的三倍。这是因为来源操作数可能会依附于之前的三个指令之上,指令的顺序如下所示:-->(1)ADD EAX,EBX←供应端指令C(2)ADD AH,DH  ←供应端指令D(3)ADD AL,CL  ←供应端指令E(4)ADD EDX,EAX←依附端指令B根据此指令顺序,依附端指令B记载32位的EAX寄存器为来源操作数。来源操作数的较低8位为供应端指令E的结果值,来源操作数的下个8位为供应端指令D的结果值,而来源操作数的较高16位为供应端指令C本文档来自技高网...

【技术保护点】
一种乱序执行微处理器,用以处理宏指令,上述宏指令指示上述微处理器将8位的结果值仅写入上述微处理器的N位结构一般用途寄存器的较低8位,包括: 指令编译器,用以将上述宏指令转换成合并微指令,其中上述合并微指令记载N位第一来源寄存器、8位第二来源寄存器以及N位目的寄存器,其中上述N位目的寄存器用以接收N位的结果值,上述N位第一来源寄存器和上述N位目的寄存器是上述宏指令所记载的上述N位结构一般用途寄存器;以及 执行单元,耦接至上述指令编译器,用以接收上述合并微指令,并且对应地产生要随后写入上述宏指令所记载的上述N位结构一般用途寄存器的上述N位结果值,即使上述宏指令指示上述微处理器将上述8位的结果值仅写入上述N位结构一般用途寄存器的上述较低8位,其中,为了产生上述N位的结果值,上述执行单元将上述8位结果值写入上述N位结果值的较低8位,并且将上述合并微指令所记载的上述N位第一来源寄存器的较高N-8位写入上述N位结果值对应的较高N-8位。

【技术特征摘要】
US 2008-4-3 12/062,0281.一种乱序执行微处理器,用以处理宏指令,上述宏指令指示上述微处理器将8位的结果值仅写入上述微处理器的N位结构一般用途寄存器的较低8位,包括:指令编译器,用以将上述宏指令转换成合并微指令,其中上述合并微指令记载N位第一来源寄存器、8位第二来源寄存器以及N位目的寄存器,其中上述N位目的寄存器用以接收N位的结果值,上述N位第一来源寄存器和上述N位目的寄存器是上述宏指令所记载的上述N位结构一般用途寄存器;以及执行单元,耦接至上述指令编译器,用以接收上述合并微指令,并且对应地产生要随后写入上述宏指令所记载的上述N位结构一般用途寄存器的上述N位结果值,即使上述宏指令指示上述微处理器将上述8位的结果值仅写入上述N位结构一般用途寄存器的上述较低8位,其中,为了产生上述N位的结果值,上述执行单元将上述8位结果值写入上述N位结果值的较低8位,并且将上述合并微指令所记载的上述N位第一来源寄存器的较高N-8位写入上述N位结果值对应的较高N-8位。2.根据权利要求1所述的乱序执行微处理器,其中上述宏指令记载8位的结构来源寄存器,上述8位的结果值是从上述8位的结构来源寄存器移至上述N位结构一般用途寄存器的上述较低8位,上述执行单元从上述8位的结构来源寄存器接收上述8位的结果值,以便将上述8位的结果值写入上述N位结果值的较低8位。3.根据权利要求1所述的乱序执行微处理器,其中上述宏指令记载存储器位置,上述8位的结果值是从上述存储器位置移至上述N位结构一般用途寄存器的上述较低8位,上述指令编译器在转换上述宏指令为上述合并微指令前,先将上述宏指令转换成加载微指令,上述加载微指令指示上述微处理器从上述存储器位置将上述8位的结果值加载上述微处理器的非结构寄存器,上述执行单元从上述非结构寄存器接收上述8位的结果值,以便将上述8位的结果值写入上述N位结果值的较低8位。4.根据权利要求1所述的乱序执行微处理器,其中上述宏指令指示上述微处理器对8位的来源操作数执行算术或逻辑运算以产生上述8位的结果值,其中上述执行单元用以对上述8位第二来源寄存器执行上述算术或逻辑运算,以产生由上述执行单元所写入上述N位结果值的较低8位的上述8位结果值。5.根据权利要求4所述的乱序执行微处理器,其中上述宏指令指示上述微处理器将两个8位的加数相加以产生上述8位的结果值,上述执行单元用以将上述8位第二来源寄存器与上述合并微指令所记载的上述N位第一来源寄存器的较低8位相加,以产生由上述执行单元所写入上述N位结果值的较低8位的上述8位结果值。6.根据权利要求1所述的乱序执行微处理器,其中即使上述宏指令指示上述微处理器将上述8位的结果值仅写入上述N位结构一般用途寄存器的上述较低8位,但上述微处理器仍然写入上述N位目的寄存器的所有N位,上述合并微指令确保用以将上述N位结构一般用途寄存器记载为来源操作数的合并微指令随后的微指令的来源操作数将只依附至上述单一的合并微指令,而非多个微指令。7.根据权利要求1所述的乱序执行微处理器,还包括一或多个指令缓冲器,共同地具有J个位置,上述J个位置用以储存等待发送至上述微处理器的K个执行单元的微指令,每一个上述J个微指令可记载多达L个来源操作数,其中即使上述宏指令指示上述微处理器将上述8位的结果值仅写入上述N位结构一般用途寄存器的上述较低8位,但上述微处理器仍然写入上述N位目的寄存器的所有N位,上述合并微指令使上述微处理器可包括少至JxKxL个卷标比较器,上述卷标比较器用以确认哪个上述微指令于上述微处理器的频率周期间可发送至上述K个执行单元。8.根据权利要求1所述的乱序执行微处理器,其中即使上述宏指令指示上述微处理器将上述8位的结果值仅写入上述N位结构一般用途寄存器的上述较低8位,但上述微处理器仍然写入上述N位目的寄存器的所有N位,对于等待发送的每个指令每个来源操作数,上述合并微指令使上述微处理器可包括J个比较器,其中J为上述微处理器中有能力发送其结果值为来源操...

【专利技术属性】
技术研发人员:吉拉德M卡尔泰瑞派克斯
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1