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

技术编号:18496704 阅读:26 留言:0更新日期:2018-07-21 19:59
提供了一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:从所述至少两个字段中选择第一字段;使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;以及,在指令中指定所述短位宽源操作数的位宽,该位宽小于所述长位宽源操作数的位宽。还提供了用于执行该短位宽操作数指令的方法。

Method for converting long bit width operand instruction to short bit width operand instruction

A method is provided for converting original long bit wide operand instructions into short bit wide operand instructions, in which the long width operand instruction includes at least two fields for specifying at least two registers, each of at least one of the two registers can store one long bit source operand, and the said square is used to store one long bit source operand. The method includes: selecting the first field from the at least two fields; using the first field to specify a register for storing two short bits wide source operands, wherein the two short bit wide source operands are stored in the high half and low half of the register respectively; and the short bit width is specified in the instruction. The bit width of the source operand is smaller than the bit width of the long bit wide source operand. A method for executing the short bit width operand instruction is also provided.

【技术实现步骤摘要】
将长位宽操作数指令转换为短位宽操作数指令的方法
本专利技术涉及微处理器体系结构
,更具体地,本专利技术涉及将原始的长位宽操作数指令转换为短位宽操作数指令的方法以及执行该短位宽操作数指令的方法。
技术介绍
对于目前主流的微处理器,一般都在架构手册当中规定了程序员可见的寄存器种类和数量。比如Power指令架构当中规定,程序员可见的通用寄存器包括:32个64位的定点寄存器,32个64位的浮点寄存器,还有32个128位的向量寄存器。针对super-scalar的架构设计,在微体系结构的实现层面,通常还会使用寄存器重命名技术,比如在Power的例子当中,针对定点寄存器有专门的定点寄存器重命名部件以及相关的物理寄存器堆;针对浮点寄存器也有专门的浮点/向量物理寄存器堆和重命名。大部分情况下,无论是商用处理器架构手册还是实际的实现,都是针对寄存器全位宽(fullregisterwidth)的操作数进行操作,即使很多情况下指令中参与运算的源操作数位数不足64位(可能只是32位或者16位的宽度),寄存器的高位字段也都会被作为符号位,这就导致寄存器中出现大量的无用的符号位。如果设计当中使用了寄存器重命名技术,那么就意味着物理寄存器是否能充足供应决定了这个处理器超前执行(speculation)能力的强弱。如果物理寄存器的个数足够多,流水线不会因为物理寄存器的短缺而发生停顿;但是,从整个处理器的能量分布来看,物理寄存器堆所消耗的功耗占比很大,并且占用的面积也大,所以物理寄存器的大小和功耗在实现当中常常需要进行权衡。这就会导致实际使用时物理寄存器的个数不足,流水线因为物理寄存器的短缺而发生停顿。另一方面,已经有研究人员发现在处理器当中实际上存在着很多中间数据,它们都不是全位宽的,高位段当中包含了太多连续无用的符号位。而目前处理器当中并未对这一问题作出很好的优化。现有技术中,通常是针对全位宽进行操作,不会考虑实际上操作数的位数。有的处理器中,提供了针对计算结果进行寄存器共享(即把多个结果写入到同一个寄存器当中)的方案,但该方案需要针对指令运算结果的位宽进行预测,导致需要增加额外的预测部件。因此,当前迫切需要一种能够使处理器在处理短位宽操作数时提高其内部寄存器及其它资源利用率的解决方案。
技术实现思路
由于指令中有很大一部分不仅源操作数是短宽度的,而且产生的结果也是短宽度的,因此专利技术人利用这个特点,提出这样的技术方案:针对短宽度的操作数,把两个源操作数分别放入到一个寄存器的高位字段和低位字段。这样做能够带来如下好处:(1)如果指令是针对两个源寄存器进行操作,那么操作码当中原本用于指定第二个源操作数寄存器的字段可以空闲出来,一部分可以用于指定操作数的位宽,一部分可以用于指令操作码的扩展;(2)提高了逻辑寄存器和物理寄存器的利用率,原本2个源操作数需要占用2个独立的物理寄存器,但是现在面向短位宽操作数时,2个源操作数可以共享同一个物理寄存器。一方面,在总寄存器数不变的前提下,变相增加逻辑寄存器和物理寄存器的可用数量,即利用率,这样对性能有好处。本专利技术的一个方面涉及一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:从所述至少两个字段中选择第一字段;使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;以及,在指令中指定所述短位宽源操作数的位宽,该位宽小于所述长位宽源操作数的位宽。优选地,其中,所述在指令中指定所述短位宽源操作数的位宽包括:从所述至少两个字段中选择第二字段,并使用所述第二字段指定所述短位宽源操作数的位宽。优选地,上述方法还包括:还使用所述第二字段指示目标操作数应被写入到目标寄存器的高半部分还是低半部分。优选地,上述方法还包括:使用字段以表明所述两个短位宽源操作数中的每一个存储于寄存器的高半部分还是低半部分。优选地,其中,所述长位宽操作数的位宽是所述短位宽操作数的位宽的2倍、4倍或8倍。本专利技术的另一个方面涉及一种用于执行上述短位宽操作数指令的方法,包括:确定用于存储所述短位宽操作数指令的两个短位宽源操作数的寄存器;针对所述寄存器的高半部分和低半部分分别进行判断,以确定所述两个短位宽源操作数是否都已就绪;如果就绪则发出所述短位宽操作数指令;读出所述寄存器中的数值,并从所述寄存器的高半部分和低半部分中提取出两个源操作数;以及,执行单元基于所述两个源操作数执行所述短位宽操作数指令的运算。优选地,其中,所述从所述寄存器的高半部分和低半部分中提取出两个源操作数包括:根据所述短位宽操作数指令中指定的源操作数位宽来从所述寄存器的高半部分和低半部分中提取出所述两个源操作数。优选地,上述方法还包括:将执行单元的运算结果写入到目标寄存器的高半部分或低半部分。本专利技术的再一个方面涉及一种计算装置,其包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时能够用于实现上述任一方法。优选地,其中,所述处理器中包括用于执行指令的执行单元,所述执行单元根据指令中的源操作数的位宽变化被划分为若干个子执行单元。本专利技术解决了目前逻辑寄存器和物理寄存器利用率不高、同时指令操作码扩展困难的问题,提出了一种针对短位宽操作数进行寄存器共享的方案,同时也兼具了对指令操作码进行扩展的功能。和现有技术相比,该专利技术有利于提高逻辑寄存器和物理寄存器的利用率,配以合理的使用策略,一方面有助于提高性能,另一方面在寄存器充足的情况下,有助于降低寄存器堆的使用功耗。同时,本专利技术的附加作用是扩展了指令操作码的位数。附图说明以下,结合附图来详细说明本专利技术的实施例,其中:图1示出了现有技术中的Power指令格式的一个示例;图2示出了本专利技术一个实施例中的对浮点指令进行转换的示例;图3示出了本专利技术一个实施例中的源寄存器的依赖关系的一个示例;图4示出了本专利技术一个实施例中的源寄存器的依赖关系的另一个示例;图5示出了本专利技术一个实施例中的源寄存器的依赖关系的又一个示例;图6示出了本专利技术一个实施例中的读寄存器的数据通路(全位宽);图7示出了本专利技术一个实施例中的读寄存器的数据通路(短位宽);图8示出了本专利技术一个实施例中的定点加法器的位宽拆分示意图;以及图9示出了本专利技术一个实施例中的寄存器写回(目的操作数为短位宽)的示意图。具体实施方式指令是计算机规定执行操作的类型和操作数的基本命令,它由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字和特征码。现有的处理器(即CPU)通常基于流水线结构来执行指令。因此在对指令进行转换时,也需要满足处理器指令执行的流水线结构的要求,能够被该流水线结构所识别和执行。流水线包括:取指、译码、派发、取操作数、发送至指令队列、执行运算以及存储运算结果等步骤。根据本专利技术的一个实施例,提供了一种将原始的长位宽(或全位宽)操作数指令转换成短位宽操作数指令的方法以及执行该短位宽操作数指令的方法,该方法实现了以较少的寄存器和较少的寻址次数和范围来完成短操作数运算,从而降低了功耗,提升了本文档来自技高网
...

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

【技术特征摘要】
1.一种用于将原始的长位宽操作数指令转换为短位宽操作数指令的方法,其中,所述长位宽操作数指令包括用于指定至少两个寄存器的至少两个字段,所述至少两个寄存器中的每一个能够存储一个长位宽源操作数,所述方法包括:从所述至少两个字段中选择第一字段;使用所述第一字段指定用于存储两个短位宽源操作数的一个寄存器,其中,所述两个短位宽源操作数分别存储于该寄存器的高半部分和低半部分;以及在指令中指定所述短位宽源操作数的位宽,该位宽小于所述长位宽源操作数的位宽。2.根据权利要求1所述的方法,其中,所述在指令中指定所述短位宽源操作数的位宽包括:从所述至少两个字段中选择第二字段,并使用所述第二字段指定所述短位宽源操作数的位宽。3.根据权利要求2所述的方法,还包括:还使用所述第二字段指示目标操作数应被写入到目标寄存器的高半部分还是低半部分。4.根据权利要求1-3中任一项所述的方法,还包括:使用字段以表明所述两个短位宽源操作数中的每一个存储于寄存器的高半部分还是低半部分。5.根据权利要求1-3中任一项所述的方法,其中,所述长位宽操作数的位宽是所述短位宽操作数的位宽的2倍、4倍或8倍。6.一种用于执行根据权利要求...

【专利技术属性】
技术研发人员:冯煜晶张军张立新侯锐
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京,11

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

1