在数据字内插入比特的制作方法

文档序号:6507170阅读:180来源:国知局
专利名称:在数据字内插入比特的制作方法
技术领域
本发明涉及数据处理系统。更特别地,本发明涉及在程序控制下在数据字中插入比特。
背景技术
已知在数据处理系统内将多个比特字段一起压缩在单个数据字中。例如,在16位数据字中,可能需要压缩分别代表红、绿、蓝值的三个彩色分量值,其中两个长度为5位,以及另一个长度为6位。通常,这些不同的分量值将被分别处理,并且分别计算它们的大小。在这样的计算之后,单独分量需要装配在单一数据字中,以使它们可以利用更紧凑的形式来存储,并且更容易地在逐个象素的基础上被操纵。
为了实现这样的数据压缩,一种可能的解决方案是提供程序指令,这些指令指定源寄存器中将被插入目的寄存器中的比特字段的长度和目的寄存器中该比特字段将被插入的位置。这样的指令典型地将不得不指定源寄存器、目的寄存器、比特字段长度以及比特字段插入位置。以这种方式不得不指定单个指令内的4个独立参数,这对于该指令内可利用的指令位空间不利地设置高要求,并且使得这样的指令在它们所消耗的指令位空间方面是不利的。

发明内容
从一个方面来看,本发明提供用于处理数据的设备,所述设备包含多个寄存器,可操作为存储待操纵的数据值;处理逻辑,可操作为对存储在所述多个寄存器中的一个或多个数据值执行数据处理操作;以及指令译码器,响应程序指令来控制所述处理逻辑,以执行利用所述程序指令指定的数据处理操作;其中所述指令译码器响应移位插入(shift-and-insert)指令来控制所述处理逻辑,以执行移位插入数据处理操作,得到具有利用以下步骤给定的结果值的结果将存储在第一寄存器中的第一数据值移位N个比特位置的移位量,以形成包含N个移入位的移位值,其中N具有多个不同的非零值之一;和除了所述N个被移入位之外,将所述移位值的相应位插入第二寄存器中存储的第二数据值中的相应比特位置,所述第二数据值中对应于所述N个移入位的比特不变,从而形成所述结果。
本发明考虑其中需要使用这种指令的大部分情况,不需要能够分别指定比特字段长度和比特字段位置的完全灵活性。相反,指定将被应用于源值的移位数量的单个参数控制源值的位被写入目的值中的起始位置。根据相关指令的移位方向,被写入目的值中的位从起始位置扩展至目的值的合适末端。可能插入比最终需求更多的位数。但是,本技术考虑,在大部分情况下,多个这样的指令被执行,并且被写入一个指令中的过多位将利用随后指令中的需要数据来盖写,以致于最后压缩的数据值将包含所需要的正确位。因此,操作的压缩类别或者其他的位装配操作可以利用具有有益小的指令位空间需求的指令来实现。将意识到,上述的本发明的表达是根据移位插入指令产生具有利用指定的移位操作和指定的插入操作给出的结果值的结果来作出的。将认识到,实际用于获得这样的结果值的机制能够改变,就好像这样的移位插入已经被执行一样。如此不同的机制和步骤利用本技术来包含。移位与插入步骤是表述期望的最终结果是如何与输入相关联的一种方式,但是输入与输出之间同样的关系可以通过各种不同的方式来获得和表述。这些替换包含在本技术中。
移位量可以被指定为在指令中指定的寄存器内存储的一个值,或可选地并且更好地被指定为在移位插入指令自身中编码的立即值。
第一和第二寄存器可以有利地由源寄存器指定字段来指定,这两个寄存器都与寄存器组中的寄存器相关。也可以使用目的寄存器指定字段(可选地,与第一寄存器或第二寄存器之一共享)。
将认识到,本技术的移位可以是右移位或左移位,这依赖于环境以及期望的压缩或位插入的形式。
有可能第一数据值和第二数据值能够具有不同的位长度,且被存储在不同长度的寄存器中,虽然在最佳实施例中第一数据值和第二数据值具有相同的位数。
如前所述,将认识到,以上所述的输入和输出的关系可以通过各种不同的方式来实施,虽然优选的方式是使用第一值的移位和形成屏蔽(mask)值,用于选择第二数据中的哪些比特利用移位数据值内的相应位来代替以及第二数据值中哪些比特不变。这个屏蔽值可以有利地利用起始屏蔽上的移位或者利用可选技术诸如直接形成屏蔽的指令的解码来形成。
本技术可以有益地用于标量(scalar)处理系统以及单指令多数据分组(singleinstruction multiple data packet)(SIMD)处理系统中。
从另一方面来看,本发明提供一种处理数据的方法,所述方法包含以下步骤在多个寄存器中存储待操纵的数据值;对所述多个寄存器中存储的一个或多个数据值,使用处理逻辑来执行数据处理操作;和响应程序指令,利用指令译码器来控制所述处理逻辑,以执行由所述程序指令指定的数据处理操作;其中所述指令译码器响应移位插入指令来控制所述处理逻辑,以执行移位插入数据处理操作,得到具有利用以下步骤给定的结果值的结果将存储在第一寄存器内的第一数据值移位N个比特位置的移位量,以形成包含N个移入位的(被)移位值,其中N具有多个不同的非零值之一;和除了所述N个移入位之外,将所述移位值的相应位插入到第二寄存器中存储的第二数据值中的相应比特位置,所述第二数据值中对应于所述N个移入位的比特不变,从而形成所述结果。


现在,将仅仅利用示例参考附图来描述本发明的实施例,其中附图1示意地图解可以使用本发明技术的数据处理系统类型;附图2示意地图解根据本技术一个示例的三个不同的移位插入指令的语法;附图3示意地图解移位插入指令的作用;附图4示意地图解用于执行移位插入操作的硬件排列方案;附图5图解在标量处理系统中像素值压缩操作的示例;和附图6示意地图解在单指令多数据系统中的像素压缩操作。
具体实施例方式
附图1示意地图解数据处理系统2,其可以是集成电路的形式,包括寄存器组4、乘法器6、移位器8和加法器10。寄存器组4、乘法器6、移位器8和加法器10可以被视为组成了处理逻辑,用于在利用指令译码器12生成的控制信号的控制下执行期望的数据处理操作。指令译码器12自身响应被加载到指令流水线14中的程序指令。将意识到,附图2中的数据处理系统典型地将包含多个其他的单元,但是为了简明起见而被省略了。在操作中,程序指令被提取到指令流水线14中,并且当它们在指令流水线14中达到执行级(executestage)时,由指令译码器12使用它们来生成控制信号,这些控制信号配置处理逻辑4,6,8,10的不同单元,以执行期望的数据处理操作。处理逻辑典型地将包含许多其他的单元,用于提供除了附图1中所示的简单的乘法、移位和加法操作以外的处理操作。
附图2示意地图解一些示例性移位插入指令的语法(句法),这些指令可以由附图1中的数据处理系统2来支持。左移位与插入指令SLI包含指定目的寄存器的寄存器字段dest、指定源寄存器的寄存器字段src以及指定立即值的字段#imm。源寄存器包含数据值,该数据值将被移位,并且随后被插入到目的寄存器,而目的寄存器中的某些位不被改变。立即值#imm指定在插入发生之前应用于源寄存器值的移位的数量,同时也有效地指定了插入发生的位置,如下将进一步阐述的。
附图2图解上面指令的右移位变量,即SRI指令。同时也图解了左移位指令的变量,其中移位值由第二源寄存器src2来指定。
将意识到,附图1中所示的指令的句法和确切形式只是一个示例,并且本发明技术的不同实施例可以使用显著变化的指令表示法和语法。
附图3阐述了移位插入操作的一个例子。寄存器16包含源值。这个源值包含数据部分18,例如像素值。寄存器16中在数据部分18之外的部分可以不表示任何有意义的东西或者可以是期望被丢弃的数据值的小数部分。
在这个示例中,寄存器16中的值被右移位一数量,该数量利用相关的SRI指令内的立即字段#imm来指定。在寄存器的左手端上,移入位被引入到所生成的移位值。这是普通的移位操作行为。
目的值被保存在寄存器20中,并且除了移入位之外的移位值部分被写入到替换最初存储在目的值中的相应位的这个目的值。目的值20中对应于移位值内的移入位的比特未被替换并且保留为未改变。最后的结果值包含原始目的值,移位值中的插入位替代在那些相应位置上的其原始位。将明白,在当前示例中,仅仅除了数据部分18之外,移位值中的位已被插入结果值即位G和H内。如果有效的话,则这些不必要的位可以根据需要在后续的移位插入操作中利用其他的位值来改写。
附图4示意地图解有关如何能够实施移位插入操作的硬件表示。在这个示例中,源寄存器22提供其值给左移位器24。将认识到,对于指令的右移位变量,可以替代使用右移位电路。在这个示例中,利用#4的立即值来指定移位数量。左移位器24生成移位值26,在其4个最右比特位置中具有4个移入零值。与移位值26的生成同时,通过取包含全是1的起始屏蔽值28,并对此进行与利用它自己的左移位器30对源值22应用的相同的移位,产生屏蔽值。屏蔽值中的移入值再次为零,并且这导致移位屏蔽32。该移位屏蔽32随后能够被用作多位控制信号,该信号被提供给多位多路复用器34,该复用器选择来自移位值26的位或选择来自目的值36的位,以便馈送给结果值38。
附图5图解了红、绿和蓝像素值分量被压缩为16位结果值的标量压缩操作。第一操作利用移位量为5个比特位置使用右移位插入指令对红和绿分量值执行。这留下结果中的5比特红分量R5不变,但是将绿分量G6及其剩余物写入该结果中。通过利用11比特位置的移位量执行右移位插入指令,第二指令取组合的红和绿分量,并且将蓝分量B5插入它中,以使蓝分量B5邻接已被插入的绿分量G6的末尾,并且填充16位结果值内的剩余位置。
附图6表示如图5所示的相同类型的压缩操作,但是在这种情况中,在单指令多数据(SIM)系统内执行。如将认识到,对于SIMD系统内的每个数据航线(lane),单独执行同样的移位插入操作,以便能够使用2个SIMD右移位插入指令,将4组像素值一起并行进行压缩。
权利要求
1.一种用于处理数据的设备,所述设备包含多个寄存器,可操作来存储待处理的数据值;处理逻辑,可操作为对存储在所述多个寄存器中的一个或多个数据值执行数据处理操作;以及指令译码器,响应程序指令来控制所述处理逻辑,从而执行由所述程序指令指定的数据处理操作;其中所述指令译码器响应移位插入指令来控制所述处理逻辑,以执行移位插入数据处理操作,得到具有由以下步骤给定的结果值的结果将存储在第一寄存器中的第一数据值移位N个比特位置的移位量,以形成包含N个移入位的被移位值,其中N具有多个不同非零值之一;和除了所述N个被移入位之外,将所述移位值的各自位插入到存储在第二寄存器中的第二数据值中的相应比特位置,所述第二数据值中对应于所述N个移入位的位不变,因此形成所述结果。
2.如权利要求1所述的设备,其中所述移位插入指令包括用于指定所述N个比特位置的移位位数的立即值。
3.如权利要求1和2中任一项所述的设备,其中所述移位插入指令包含指定寄存器组中的一个寄存器用作所述第一寄存器的寄存器指定字段。
4.如权利要求1,2和3中任一项所述的设备,其中所述移位插入指令包含指定寄存器组中的一个寄存器用作所述第二寄存器的寄存器指定字段。
5.如前述权利要求中任一项所述的设备,其中移位插入指令包含指定寄存器组中的一个寄存器用作目的寄存器的寄存器指定字段。
6.如权利要求5所述的设备,其中用于所述目的寄存器的寄存器指定字段被所述第一寄存器和第二寄存器之一共享。
7.如前述权利要求中任一项所述的设备,其中所述第一数据值被右移位。
8.如权利要求1-6中任一项所述的设备,其中所述第一数据值被左移位。
9.如前述权利要求中任一项所述的设备,其中所述第一数据值和第二数据值具有同样的位数。
10.如前述权利要求中任一项所述的设备,其中响应所述移位插入指令,所述处理逻辑可操作来移位所述第一值。
11.如前述权利要求中任一项所述的设备,其中响应所述移位插入指令,所述处理逻辑可操作来形成屏蔽值,用于选择所述第二数据值中的哪些位利用所述移位数据值的相应位来代替,以及所述第二数据值中的哪些位不变。
12.如前述权利要求中任一项所述的设备,其中所述处理逻辑是单指令多数据处理逻辑,并且所述第一寄存器和第二存储器是第一单指令多数据寄存器和第二单指令多数据寄存器的相应部分,所述移位插入指令可操作为控制在各自处理航线中多个移位插入操作的并行执行。
13.如权利要求1-11中任一项所述的设备,其中所述处理逻辑是标量处理逻辑。
14.一种处理数据的方法,所述方法包含以下步骤在多个寄存器中存储待处理的数据值;根据在所述多个寄存器中存储的一个或多个数据值,使用处理逻辑来执行数据处理操作;和响应程序指令,利用指令译码器来控制所述处理逻辑,从而执行由所述程序指令指定的数据处理操作;其中所述指令译码器响应移位插入指令来控制所述处理逻辑,以执行移位插入数据处理操作,得到具有利用以下步骤给定的结果值的结果将存储在第一寄存器中的第一数据值移位N个比特位置的移位量,以形成包含N个移入位的被移位值,其中N具有多个不同的非零值之一;和除了所述N个被移入位之外,将所述被移位值的各自位插入到第二寄存器中存储的第二数据值的相应比特位置,所述第二数据值中对应于所述N个移入位的位不变,因此形成所述结果。
15.如权利要求14所述的方法,其中所述移位插入指令包括指定N个比特位置的移位量的立即值。
16.如权利要求14和15中任一项所述的方法,其中所述移位插入指令包含指定寄存器组中的寄存器用作所述第一寄存器的寄存器指定字段。
17.如权利要求14,15和16中任一项所述的方法,其中所述移位插入指令包含指定寄存器组中的寄存器用作所述第二寄存器的寄存器指定字段。
18.如权利要求14-17中任一项所述的方法,其中移位插入指令包含用于指定寄存器组中的寄存器用作目的寄存器的寄存器指定字段。
19.如权利要求18所述的方法,其中用于所述目的寄存器的寄存器指定字段被所述第一寄存器和第二寄存器之一共享。
20.如权利要求13-17中任一项所述的方法,其中所述第一数据值被右移位。
21.如权利要求14-17中任一项所述的方法,其中所述第一数据值被左移位。
22.如权利要求14-19中任一项所述的方法,其中所述第一数据值和第二数据值具有同样的比特数。
23.如权利要求14-20中任一项所述的方法,其中响应所述移位插入指令,所述处理逻辑可操作来移位所述第一值。
24.如权利要求14-21中任一项所述的方法,其中响应所述移位插入指令,所述处理逻辑形成屏蔽值,用于选择所述第二数据值中的哪些位利用所述移位数据值内的相应位来代替,以及所述第二数据值中的哪些位不变。
25.如权利要求14-22中任一项所述的方法,其中所述处理逻辑是单指令多数据处理逻辑,并且所述第一寄存器和第二存储器是第一单指令多数据寄存器和第二单指令多数据寄存器的相应部分,所述移位插入指令可操作来控制在相应的处理航线中多个移位插入操作的并行执行。
26.如权利要求14-22中任一项所述的方法,其中所述处理逻辑是标量处理逻辑。
全文摘要
提供一种数据处理系统(2),其支持移位插入指令SLI、SRI,用于将源数据值移位指定的移位量,并且随后将除移入位之外的移位值中的比特插入目的值,该目的值内的剩下比特不变。
文档编号G06F9/315GK1926511SQ200480042344
公开日2007年3月7日 申请日期2004年8月3日 优先权日2004年3月10日
发明者S·A·福德, P·M·卡彭特 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1