CN108304217B - 将长位宽操作数指令转换为短位宽操作数指令的方法 - Google Patents

将长位宽操作数指令转换为短位宽操作数指令的方法 Download PDF

Info

Publication number
CN108304217B
CN108304217B CN201810195510.7A CN201810195510A CN108304217B CN 108304217 B CN108304217 B CN 108304217B CN 201810195510 A CN201810195510 A CN 201810195510A CN 108304217 B CN108304217 B CN 108304217B
Authority
CN
China
Prior art keywords
bit
register
short
operand
instruction
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
CN201810195510.7A
Other languages
English (en)
Other versions
CN108304217A (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201810195510.7A priority Critical patent/CN108304217B/zh
Publication of CN108304217A publication Critical patent/CN108304217A/zh
Application granted granted Critical
Publication of CN108304217B publication Critical patent/CN108304217B/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/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/30098Register arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:从所述至少两个字段中选择第一字段;使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;以及,在指令中指定所述短位宽源操作数的位宽,该位宽小于所述长位宽源操作数的位宽。还提供了用于执行该短位宽操作数指令的方法。

Description

将长位宽操作数指令转换为短位宽操作数指令的方法
技术领域
本发明涉及微处理器体系结构技术领域,更具体地,本发明涉及将原始的长位宽操作数指令转换为短位宽操作数指令的方法以及执行该短位宽操作数指令的方法。
背景技术
对于目前主流的微处理器,一般都在架构手册当中规定了程序员可见的寄存器种类和数量。比如Power指令架构当中规定,程序员可见的通用寄存器包括:32个64位的定点寄存器,32个64位的浮点寄存器,还有32个128位的向量寄存器。针对super-scalar的架构设计,在微体系结构的实现层面,通常还会使用寄存器重命名技术,比如在Power的例子当中,针对定点寄存器有专门的定点寄存器重命名部件以及相关的物理寄存器堆;针对浮点寄存器也有专门的浮点/向量物理寄存器堆和重命名。大部分情况下,无论是商用处理器架构手册还是实际的实现,都是针对寄存器全位宽(full register width)的操作数进行操作,即使很多情况下指令中参与运算的源操作数位数不足64位(可能只是32位或者16位的宽度),寄存器的高位字段也都会被作为符号位,这就导致寄存器中出现大量的无用的符号位。
如果设计当中使用了寄存器重命名技术,那么就意味着物理寄存器是否能充足供应决定了这个处理器超前执行(speculation)能力的强弱。如果物理寄存器的个数足够多,流水线不会因为物理寄存器的短缺而发生停顿;但是,从整个处理器的能量分布来看,物理寄存器堆所消耗的功耗占比很大,并且占用的面积也大,所以物理寄存器的大小和功耗在实现当中常常需要进行权衡。这就会导致实际使用时物理寄存器的个数不足,流水线因为物理寄存器的短缺而发生停顿。
另一方面,已经有研究人员发现在处理器当中实际上存在着很多中间数据,它们都不是全位宽的,高位段当中包含了太多连续无用的符号位。而目前处理器当中并未对这一问题作出很好的优化。
现有技术中,通常是针对全位宽进行操作,不会考虑实际上操作数的位数。有的处理器中,提供了针对计算结果进行寄存器共享(即把多个结果写入到同一个寄存器当中)的方案,但该方案需要针对指令运算结果的位宽进行预测,导致需要增加额外的预测部件。
因此,当前迫切需要一种能够使处理器在处理短位宽操作数时提高其内部寄存器及其它资源利用率的解决方案。
发明内容
由于指令中有很大一部分不仅源操作数是短宽度的,而且产生的结果也是短宽度的,因此发明人利用这个特点,提出这样的技术方案:针对短宽度的操作数,把两个源操作数分别放入到一个寄存器的高位字段和低位字段。这样做能够带来如下好处:
(1)如果指令是针对两个源寄存器进行操作,那么操作码当中原本用于指定第二个源操作数寄存器的字段可以空闲出来,一部分可以用于指定操作数的位宽,一部分可以用于指令操作码的扩展;
(2)提高了逻辑寄存器和物理寄存器的利用率,原本2个源操作数需要占用2个独立的物理寄存器,但是现在面向短位宽操作数时,2个源操作数可以共享同一个物理寄存器。一方面,在总寄存器数不变的前提下,变相增加逻辑寄存器和物理寄存器的可用数量,即利用率,这样对性能有好处。
本发明的一个方面涉及一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:从所述至少两个字段中选择第一字段;使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;以及,在指令中指定所述短位宽源操作数的位宽,该位宽小于所述长位宽源操作数的位宽。
优选地,其中,所述在指令中指定所述短位宽源操作数的位宽包括:从所述至少两个字段中选择第二字段,并使用所述第二字段指定所述短位宽源操作数的位宽。
优选地,上述方法还包括:还使用所述第二字段指示目标操作数应被写入到目标寄存器的高半部分还是低半部分。
优选地,上述方法还包括:使用字段以表明所述两个短位宽源操作数中的每一个存储于寄存器的高半部分还是低半部分。
优选地,其中,所述长位宽操作数的位宽是所述短位宽操作数的位宽的2倍、4倍或8倍。
本发明的另一个方面涉及一种用于执行上述短位宽操作数指令的方法,包括:确定用于存储所述短位宽操作数指令的两个短位宽源操作数的寄存器;针对所述寄存器的高半部分和低半部分分别进行判断,以确定所述两个短位宽源操作数是否都已就绪;如果就绪则发出所述短位宽操作数指令;读出所述寄存器中的数值,并从所述寄存器的高半部分和低半部分中提取出两个源操作数;以及,执行单元基于所述两个源操作数执行所述短位宽操作数指令的运算。
优选地,其中,所述从所述寄存器的高半部分和低半部分中提取出两个源操作数包括:根据所述短位宽操作数指令中指定的源操作数位宽来从所述寄存器的高半部分和低半部分中提取出所述两个源操作数。
优选地,上述方法还包括:将执行单元的运算结果写入到目标寄存器的高半部分或低半部分。
本发明的再一个方面涉及一种计算装置,其包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时能够用于实现上述任一方法。
优选地,其中,所述处理器中包括用于执行指令的执行单元,所述执行单元根据指令中的源操作数的位宽变化被划分为若干个子执行单元。
本发明解决了目前逻辑寄存器和物理寄存器利用率不高、同时指令操作码扩展困难的问题,提出了一种针对短位宽操作数进行寄存器共享的方案,同时也兼具了对指令操作码进行扩展的功能。和现有技术相比,该发明有利于提高逻辑寄存器和物理寄存器的利用率,配以合理的使用策略,一方面有助于提高性能,另一方面在寄存器充足的情况下,有助于降低寄存器堆的使用功耗。同时,本发明的附加作用是扩展了指令操作码的位数。
附图说明
以下,结合附图来详细说明本发明的实施例,其中:
图1示出了现有技术中的Power指令格式的一个示例;
图2示出了本发明一个实施例中的对浮点指令进行转换的示例;
图3示出了本发明一个实施例中的源寄存器的依赖关系的一个示例;
图4示出了本发明一个实施例中的源寄存器的依赖关系的另一个示例;
图5示出了本发明一个实施例中的源寄存器的依赖关系的又一个示例;
图6示出了本发明一个实施例中的读寄存器的数据通路(全位宽);
图7示出了本发明一个实施例中的读寄存器的数据通路(短位宽);
图8示出了本发明一个实施例中的定点加法器的位宽拆分示意图;以及
图9示出了本发明一个实施例中的寄存器写回(目的操作数为短位宽)的示意图。
具体实施方式
指令是计算机规定执行操作的类型和操作数的基本命令,它由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字和特征码。现有的处理器(即CPU)通常基于流水线结构来执行指令。因此在对指令进行转换时,也需要满足处理器指令执行的流水线结构的要求,能够被该流水线结构所识别和执行。流水线包括:取指、译码、派发、取操作数、发送至指令队列、执行运算以及存储运算结果等步骤。
根据本发明的一个实施例,提供了一种将原始的长位宽(或全位宽)操作数指令转换成短位宽操作数指令的方法以及执行该短位宽操作数指令的方法,该方法实现了以较少的寄存器和较少的寻址次数和范围来完成短操作数运算,从而降低了功耗,提升了资源利用率,提升了CPU性能。
图1示出了现有技术中的Power指令格式的一个示例。如图1所示,该图中显示了Power 8架构当中一条普通的浮点加法指令,这条指令对应的基本操作是把FRA寄存器当中的数值和FRB寄存器当中的数值相加,相加的结果放入到FRT寄存器当中。在现有的构架中,大部分指令的操作对象都是2个源操作数和1个目标操作数(其中2个源操作数可能来自2个寄存器,也可能其中1个源操作数来自立即数)。需要说明的是,现有的构架中也存在其他类型的指令,例如具有3个源操作数或者是2个目标操作数的指令,这些指令同样适用于本发明。在下文的实施例中将以图1中所示的指令为例进行说明。
针对图1所示的具有两个操作数的指令,在32位的指令操作码当中,有2个字段分别用于指定用于源操作数1的寄存器和用于源操作数2的寄存器。并且在64位架构下,这2个源操作数寄存器对应于2个64位的寄存器,也即,图1所示的指令是64位的长位宽操作数指令。如果是向量类指令,那么对应的是128位的向量寄存器。
在本发明的一个实施例中,针对32位、16位或者8位的较短宽度源操作数的情况,可以以如下方式修改上述指令的编码方式,以获得相应的短位宽操作数指令:(1)使用原来的用于源操作数1的字段,指定一个64位的源寄存器,如此,两个短宽度源操作数只需要这一个字段指示即可,其中,两个32位或者16位或者8位的源操作数可以分别占用这个源寄存器的高位字段(也即,源寄存器的高半部分)和低位字段(也即,源寄存器的低半部分);(2)对于原来用于指定源操作数2的字段,其中2个比特用于表示该短位宽操作数的位宽是多少(比如“00”表示32位,“01”表示16位,“10”表示8位)。当然,本领域技术人员可以理解,也可以使用指令的其他字段来指示短位宽操作数的位宽,而并非必须使用原来用于指定源操作数2的字段。
在一个实施例中,浮点和向量操作可以通过程序员可见的系统控制寄存器进行使能或者禁用,当浮点操作功能被禁用的时候,正常情况下处理器遇到上述修改后的指令(表面上仍是浮点指令)会把其当做不合法(illegal)的情况来处理。在本实施例中,可以设置一个控制位,当浮点功能被禁用的时候,如果通过该控制位使能短位宽操作数指令,则译码单元遇到上述修改后的指令(表面上仍是浮点指令)时将把其识别为短位宽的定点指令,从而对其进行相应的执行。显然,本领域技术人员可以意识到,也可以以其他合适的方式来使能短位宽操作数指令。
这里需要说明的是,本实施例仅以浮点指令作为一种实现的例子来进行说明。在有些应用中(例如,SPEC2000),有40%的操作数可以只用16位表示,还有45%的操作数可以用32位表示,因此对物理寄存器进行转换使用的方式也可以针对定点操作来进行,而不是仅限定在浮点指令的情况下。也就是说,本发明的长位宽操作数指令和短位宽操作数指令是两个相对概念,长位宽并不限于64位,还可以是128位、32位等,短位宽也并不限于32位、16位和8位,例如,在长位宽操作数的位宽为128位时,相应的短位宽操作数的位宽可以为64位、32位、16位或8位。
图2示出了本发明一个实施例中的浮点指令转换的示例,其将图1所示的原始的浮点加法指令转换为了一个短位宽操作数指令。相应地,译码单元对该短位宽操作数指令的解读也将与原始的浮点加法指令有所不同。
如图2所示,其中,原来用于指定用于源操作数1的寄存器的字段FRA,现在指向一个64位的寄存器。该64位的寄存器可以被分成8个8位的字段,每个8位字段可以用一个大写英文字母表示,其中A、B、C、D占据了寄存器的高半部分,E、F、G、H占据了寄存器的低半部分。如果源操作数是8位的,可以将第一个源操作数放在H,第二个源操作数放在D;如果源操作数是16位的,可以将第一个源操作数放在G-H(G相比于H是高位),第二个源操作数放在C-D;同样的道理,如果源操作数是32位的,可以将第一个源操作数放在E-F-G-H,第二个源操作数放在A-B-C-D。以此方式,实现了2个源操作数只占用1个物理寄存器,从而节省了寄存器资源。
另外,指令中原本用于指定用于源操作数2的寄存器的字段FRB的含义也发生了变化,其中,可以将指令的第19~20位(也即,字段FRB的后两位)用于指定源操作数的位宽(比如“00”表示32位,“01”表示16位,“10”表示8位);可以将指令的第18位表示结果被写入到目标寄存器的高半部分还是低半部分(这种选择只适用于8位和16位的情况,因为两个8位的源操作数,产生16位的目标操作数;两个16位的源操作数,产生32位的目标操作数;而2个32位的源操作数,将产生64位的目标操作数,因而不再需要指定高半部分还是低半部分);可以将指令的16~17位认为是空闲的,当然,也可以根据实际需要将其用作操作码扩展。
当操作数的寄存器使用方式发生变化之后,导致寄存器的依赖方式也发生了变化。如图3-图5所示,以16位的源操作数为例,第一种情况(图3和图4)是两个源操作数分别依赖于两个寄存器REG A和REG B的16位字段,被依赖的16位可能来自寄存器REG A/B的高半部分也可能是低半部分;第二种情况(图5)是两个源操作数依赖于一个寄存器REG A的不同的16位字段。在一个优选实施例中,为了减少实现的复杂度,如果是来自同一个寄存器,则将两个16位字段分别设置在该寄存器的高半部分和低半部分。在图3-图5中,Src A表示源操作数A,Src B表示源操作数B,REG_A.low表示寄存器A的低半部分,REG_A.high表示寄存器A的高半部分,REG_B.low表示寄存器B的低半部分,REG_B.high表示寄存器B的高半部分。
由于寄存器的依赖方式发生了改变,对于使用了寄存器重命名技术的处理器而言,寄存器重命名的方式也需要做出相应的调整,以体现被依赖的操作数的存放方式发生了改变。在一个实施例中,可以增加一个字段,以表明操作数依赖于寄存器的哪半部分或哪个字段。具体地,如图3所示,Src A依赖于REG_A.low,Src B依赖于REG_B.low;如图4所示,Src A依赖于REG_A.low,Src B依赖于REG_B.high;如图5所示,Src A依赖于REG_A.high,Src B依赖于REG_A.low。当然,也可以采用其他合适的方式来表明寄存器的依赖方式。
为了支持短位宽的操作、配合寄存器使用方式以及重命名方式的改变,指令发出逻辑(Issue Logic)中的依赖跟踪逻辑(dependency tracking logic)也需要做出一些调整。在全位宽的情况下,依赖跟踪逻辑负责从结果总线或者bypass网络上监测每个源操作数所依赖的寄存器是否已经写回,如果已经写回,那么对应的源操作数就被标记为“就绪(ready)”状态,当一条指令所有的源操作数都处于就绪状态时,这条指令就符合被选择以发出的标准。在短位宽的情况下,因为源操作数的位宽发生了变化,所以在判断源操作数是否就绪的时候,被依赖的寄存器也需要分段进行处理,例如,针对寄存器的高半部分或低半部分进行判断。
在上文中已经提到过,如果是2个8位源操作数进行运算,所产生的结果是16位位宽的目标操作数,该目标操作数可以存储在目标寄存器的高半部分字段或者低半部分字段,但是无论放在哪个部分,高半部分和低半部分都是32位的,其余不足的位宽在这种情况下需要进行符号位的扩展。在写寄存器的时候,结果总线上会出现寄存器号以及指示高半部分/低半部分字段的标识符,另外,依赖跟踪逻辑在进行比较的时候需要增加高半部分/低半部分字段的比较。
从上面写寄存器可以看出,在计算完成之后向寄存器写回结果的时候,可能不再像全位宽那样针对整个寄存器进行写操作,而是针对其中的一半进行操作,也叫做“部分写”。针对这种部分写操作,从实现的角度可以采用两种方法。第一种是“读-修改-写(readmodify write)”,在写之前先把全位宽寄存器的数值读出来,把要写的结果和读出来的数值进行合并之后,再针对寄存器做全位宽写操作;第二种是针对寄存器的写操作增加2个比特的半屏蔽(half mask)选项(因为不足32位的时候采用了符号扩展,所以这里只考虑将寄存器分成两半的情况),分别叫做高半部分屏蔽(high_mask)和低半部分屏蔽(low_mask)。当high_mask=1,low_mask=0的时候,可以表示向寄存器的低半部分写结果;当high_mask=0,low_mask=1的时候,可以表示向寄存器的高半部分写结果;当high_mask=0,low_mask=0的时候,可以表示写全位宽。两种方法各有利弊,第一种方法不用对寄存器堆做出任何改动,因为寄存器堆一般都是采用定制设计,面积和时序都要经过特殊的优化,但是增加了外围逻辑的复杂度,每次写操作之前都要先读出来,如果不增加读端口的数量的话,可能会导致读端口的冲突增多;第二种方法,相当于给写操作增加了屏蔽位,需要寄存器堆的设计做出改动,但是外围逻辑仍然是单纯的写操作。因此,如果寄存器堆的设计允许的话,优选地采用第二种方法。
由此可以想到,在短位宽的情况下,当从寄存器堆当中读出源操作数的时候,从寄存器堆的读端口到达执行单元的数据通路也和之前的全位宽略有不同。如图6所示,在全位宽的情况下,从寄存器堆的两个读端口读出2个64位的源操作数,并且分别送到执行单元对应的2个入口。而对于短位宽的情况,如图7所示,原本第二个全位宽源操作数占用的读端口2在这里可以不再使用,因为2个源操作数都被存放在同一个寄存器里面,所以只通过读端口1来读出该寄存器中的全位宽的数值,然后可以把该寄存器的高半部分和低半部分分别发送给执行单元。
通过图7所示的读寄存器堆的数据通路可以看出,当执行短位宽操作数指令的时候,有一个非常直观的好处,就是对寄存器的读端口的数量需求比原来有所下降。如果发射宽度是3条指令,那么对读端口的需求最多可以减少3个。
另外,这种情况下,可以看到执行单元的操作位宽也发生了变化,这种情况下对于执行单元的设计也可以有两种选择。第一种选择,针对原来的结构,定点和浮点运算单元都是针对2个64位的源操作数进行运算,当2个源操作数的位数有所变化的情况下,可以不改变任何执行单元的硬件,把操作数的高位做符号扩展,在执行单元的内部仍然采用原来的位宽,产生的结果虽然是64位的,但是根据源操作位数的不同,可以针对结果进行裁剪,把对应位宽的结果写回到寄存器堆即可。这种方法的好处是硬件改动较少,但是显然在这种情况下造成了对硬件和功耗的浪费。第二种选择是把执行单元根据源操作数位宽的变化做适当的切分。以加法单元为例,如图8所示,一种实现例如是把64位加法器切分为4个16位的子加法器。如果是8位加法操作,则高位补符号,并在16位的子加法器中进行运算。如果是32位加法操作,则需要2个16位的子加法器拼接进行。这样做的好处是,当进行短位宽的加法运算时,那些多余的子部件可以被关闭,节省了功耗。
最后,短位宽操作数指令执行完之后,需要把结果写回寄存器堆。在上文中提到过,在指令码中可以有一个比特(例如,图2所示的用于源操作数2的寄存器的字段FRB中的一个比特)来指示结果应被写回到目标寄存器的高半部分还是低半部分。如图9所示,以2个16位的加法操作为例,结果是32位,因此,可以选择将结果写回到目标寄存器的高半部分,也可以选择将结果写回到目标寄存器的低半部分。如此,实现了处理器流水线对短位宽操作的支持。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。在方法流程中按照一定顺序进行描述的各个步骤并非必须按照该顺序执行,相反,其中的一些步骤的执行顺序可以改变,并且一些步骤可以并发执行,只要不影响方案的实现即可。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
由此描述了本发明的至少一个实施例的几个方面,可以理解,对本领域技术人员来说容易地进行各种改变、修改和改进。这种改变、修改和改进意于在本发明的精神和范围内。

Claims (6)

1.一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:
从所述至少两个字段中选择第一字段,使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;
从所述至少两个字段中选择第二字段,并使用所述第二字段指定所述短位宽源操作数的位宽,所述长位宽操作数的位宽是所述短位宽操作数的位宽的2倍、4倍或8倍;使用所述第二字段指示目标操作数应被写入到目标寄存器的高半部分还是低半部分;
使用字段以表明所述两个短位宽源操作数中的每一个存储于寄存器的高半部分还是低半部分。
2.一种用于执行根据权利要求1所述的方法获得的短位宽操作数指令的方法,包括:
确定用于存储所述短位宽操作数指令的两个短位宽源操作数的寄存器;
针对所述寄存器的高半部分和低半部分分别进行判断,以确定所述两个短位宽源操作数是否都已就绪;
如果就绪则发出所述短位宽操作数指令;
读出所述寄存器中的数值,并从所述寄存器的高半部分和低半部分中提取出两个源操作数;以及
执行单元基于所述两个源操作数执行所述短位宽操作数指令的运算。
3.根据权利要求2所述的方法,其中,所述从所述寄存器的高半部分和低半部分中提取出两个源操作数包括:
根据所述短位宽操作数指令中指定的源操作数位宽来从所述寄存器的高半部分和低半部分中提取出所述两个源操作数。
4.根据权利要求2或3所述的方法,还包括:
将所述执行单元的运算结果写入到目标寄存器的高半部分或低半部分。
5.一种计算装置,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时能够用于实现权利要求1-4中任一项所述的方法。
6.根据权利要求5所述的计算装置,其中,所述处理器中包括用于执行指令的执行单元,所述执行单元根据指令中的源操作数的位宽变化被划分为若干个子执行单元。
CN201810195510.7A 2018-03-09 2018-03-09 将长位宽操作数指令转换为短位宽操作数指令的方法 Active CN108304217B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810195510.7A CN108304217B (zh) 2018-03-09 2018-03-09 将长位宽操作数指令转换为短位宽操作数指令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810195510.7A CN108304217B (zh) 2018-03-09 2018-03-09 将长位宽操作数指令转换为短位宽操作数指令的方法

Publications (2)

Publication Number Publication Date
CN108304217A CN108304217A (zh) 2018-07-20
CN108304217B true CN108304217B (zh) 2020-11-03

Family

ID=62849433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810195510.7A Active CN108304217B (zh) 2018-03-09 2018-03-09 将长位宽操作数指令转换为短位宽操作数指令的方法

Country Status (1)

Country Link
CN (1) CN108304217B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
CN112416256B (zh) * 2020-12-01 2023-03-28 海光信息技术股份有限公司 数据写入方法、装置及数据读取方法、装置
CN114116005B (zh) * 2021-11-29 2022-12-23 海飞科(南京)信息技术有限公司 基于aigpu架构的立即数数据存储方法
CN117130722B (zh) * 2023-08-04 2024-06-11 北京中电华大电子设计有限责任公司 WebAssembly指令集的优化方法及装置
CN117555600A (zh) * 2023-10-20 2024-02-13 海光信息技术(成都)有限公司 用于数据通路的操作方法、计算装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881259A (en) * 1996-09-23 1999-03-09 Arm Limited Input operand size and hi/low word selection control in data processing systems
CN1226325A (zh) * 1996-09-23 1999-08-18 Arm有限公司 数据处理系统中的输入操作数控制
CN1226324A (zh) * 1996-09-23 1999-08-18 Arm有限公司 数据处理系统寄存器控制
CN1334512A (zh) * 2000-07-18 2002-02-06 多思资讯(集团)有限公司 堆栈式寄存器堆及其控制方法
CN1506807A (zh) * 2002-10-25 2004-06-23 ض� 用于数据的并行右移位合并的方法和装置
CN101324837A (zh) * 2008-07-21 2008-12-17 北京大学 一种微处理器内部寄存器堆的设计和访问方法
CN101539850A (zh) * 2008-03-21 2009-09-23 富士通株式会社 单精度浮点数据存储方法和处理器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881259A (en) * 1996-09-23 1999-03-09 Arm Limited Input operand size and hi/low word selection control in data processing systems
CN1226325A (zh) * 1996-09-23 1999-08-18 Arm有限公司 数据处理系统中的输入操作数控制
CN1226324A (zh) * 1996-09-23 1999-08-18 Arm有限公司 数据处理系统寄存器控制
CN1334512A (zh) * 2000-07-18 2002-02-06 多思资讯(集团)有限公司 堆栈式寄存器堆及其控制方法
CN1506807A (zh) * 2002-10-25 2004-06-23 ض� 用于数据的并行右移位合并的方法和装置
CN101539850A (zh) * 2008-03-21 2009-09-23 富士通株式会社 单精度浮点数据存储方法和处理器
CN101324837A (zh) * 2008-07-21 2008-12-17 北京大学 一种微处理器内部寄存器堆的设计和访问方法

Also Published As

Publication number Publication date
CN108304217A (zh) 2018-07-20

Similar Documents

Publication Publication Date Title
CN108304217B (zh) 将长位宽操作数指令转换为短位宽操作数指令的方法
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
CN102707927B (zh) 具有条件指令的微处理器及其处理方法
US7937561B2 (en) Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
CN112099852A (zh) 可变格式、可变稀疏矩阵乘法指令
CN108647044B (zh) 浮点缩放处理器、方法、系统和指令
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
US9652234B2 (en) Instruction and logic to control transfer in a partial binary translation system
JP2023051994A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
EP3547119B1 (en) Apparatus and method for speculative conditional move operation
US11321089B2 (en) Instruction set architecture based and automatic load tracking for opportunistic re-steer of data-dependent flaky branches
CN114662048A (zh) 用于共轭转置和乘法的装置和方法
CN112579171A (zh) 用于当在推测执行期间被视为安全的时省略安全检查的硬件
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US10545735B2 (en) Apparatus and method for efficient call/return emulation using a dual return stack buffer
KR101539173B1 (ko) 단 정수 곱셈들의 수를 감소시키기 위한 시스템들, 장치들 및 방법들
US20230315473A1 (en) Variable-length instruction steering to instruction decode clusters
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
US10241789B2 (en) Method to do control speculation on loads in a high performance strand-based loop accelerator
JP2023048102A (ja) 共有プリフェッチ命令およびサポート
US20220100569A1 (en) Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor
CN114661348A (zh) 用于复数矩阵共轭转置的装置和方法
NL2029086B1 (en) Loop support extensions
US20220206792A1 (en) Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor
JP2023035849A (ja) Bfloat16平方根および/または逆数平方根命令

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant