在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法

文档序号:6400628阅读:157来源:国知局
专利名称:在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法
技术领域
一般说来,本发明涉及在一个计算机寄存器中处理多个数据元素,更确切地说,涉及一种系统和方法,使用一个屏蔽寄存器和若干硬件辅助指令,同时处理任意规模的多个数据元素。
背景技术
计算机处理器的功能在于,按照一个计算机程序提供的若干指令,通过多种寄存器来处理数据元素。寄存器的容量通常是二的幂。例如,一个寄存器的容量可能是8位,它将能够在单一的处理周期中,处理一个最多有八位的数据元素。举例来说,一个8位的寄存器能够在单一周期中,处理一个4位数据元素。当然,典型情况下寄存器的规模大于8位,即寄存器的容量可以是16位、或32位、或64位等等。寄存器承担的运算类型,以非穷尽的、说明性的实例来说,包括以一个常数相乘、相加、相减、逻辑左移、逻辑右移、AND和OR运算。
数据元素经过处理之后,可以把它们发送到另一个寄存器以便进一步处理,或者把它们存储或输出。例如在打印机应用中,一个服务器微处理器按照一个计算机程序,通过其多种寄存器处理输入数据流,而且它可能以所谓的JPEG格式,向一个打印机处理器输出压缩后影像数据的一个数据流,后者再对该数据进行适当的运算,以便指示一个打印机装置如何打印该影像。
处理器本身以机器语言的形式执行指令,它们是低级指令,涉及通过哪些寄存器处理哪些数据元素。不过,大多数软件是以高级编程代码比如C写成的,其优点是人可读,以及使用比较简短、编写快速的命令,体现相对复杂的处理运算。一个编译器接收高级编程代码,在许多选择中决定把它映射到汇编语言的最佳方式,把映射结果传送到一个汇编器,汇编器再把汇编语言映射为处理器可读的所谓的机器语言。有时,一个程序员可能选择直接以一种低级语言来编写比其它部分执行得更加频繁的程序。虽然编写更加麻烦,但是这些所谓的“手工制作的”代码部分无须由一个高级语言编译器翻译,因此能够以更加优化的方式编写,以便在运行时实现更快的处理。
无论处理器从一个编译器还是直接从一个手工制作的程序接收机器代码,本发明都得出了关键的观察结果往往会发生浪费寄存器空间的情况。更具体地说,如上所述一个寄存器可能不会在每一个处理周期中都使用其全部容量。例如,当一个16位容量的寄存器用于处理4位的数据元素时,每个周期就浪费了寄存器的12位。这就减慢了处理时间,产生了附加的数据高速缓存需求(以及伴随的高速缓存缺失问题),通常不能充分利用处理器的能力。所以本发明认识到,有助于改善处理器性能的潜力在于,在单一的周期中在一个寄存器内处理多个数据元素。
本发明进一步理解,对于以上问题,实施一个解决方案并非微不足道,尤其是当正的和负的(即“带符号的”)数值都要处理时,因为在处理期间超出寄存器容量和/或数据被破坏的可能性都存在。换言之,正如本发明所用的,一个“带符号的”数据元素是一个不限制为非负的元素,并且需要在单一的处理周期中,在单一的寄存器内处理多个带符号的数据元素。不仅如此,本发明还理解,为了稳健,需要做到不是由制造商来限制在处理器中每个寄存器只能接受预定位数的多个数据元素,而是程序员能够灵活地任意定义寄存器能够接受的数据元素位数,以满足具体应用程序可能发出的指令。
2000年9月29日提交的、标题为SYSTEM AND METHOD FORENABLING MULTIPLE SIGNED INDEPENDENT DATA ELEMENTSPER REGISTER的、序列号为09/675779的美国专利申请书介绍了涉及以上问题的一个软件解决方案,其内容在此引用作为参考。这个解决方案允许多个带符号的、独立的数据元素压缩到一个寄存器中。该寄存器以标准的运算运行,还带有若干特定情况下的某些附加运算。然后再把该数据“压缩恢复”,并返回其2的补码形式。术语“压缩”表明该数据可能依赖于其右面的元素。不过,已介绍的方法还有多种增强的可能性。
首先,压缩和压缩恢复过程构成了开销,对于较小的循环规模,在某些情况下这种开销是不可接受的。其次,某些指令需要附加的运算以确保数据没有改变。还有,处理器没有能够设置多个错误旗标或者说条件码的机制。例如,假若“压缩”在一个寄存器中的若干元素超出了已经分配给它们的空间精度,就没有设定的错误旗标或者说条件码。程序员负责确保数据不从其设计的精度溢出。
所以,对于上述问题需要一个更加稳健的解决方案。

发明内容
本发明针对上述问题以及其它问题,提供了一种系统和方法,使用一个屏蔽寄存器和若干硬件辅助功能,同时处理任意规模的多个数据元素。在第一方面,本发明提供了一种方法,在一个寄存器中处理多个任意规模的数据元素,该方法包括产生一个屏蔽寄存器,它定义了一个寄存器的一组任意规模的片段;提供一个分段数据寄存器,包含按照屏蔽寄存器分段安排的多个任意规模的数据元素;以及响应一条机器指令,在分段数据寄存器内对每个数据元素同时运算。
在第二方面,本发明提供了一个处理单元,它具有硬件辅助功能,用于在单一寄存器内对多个带符号的、独立的数据元素进行运算,该处理单元进行的运算所响应的机器指令包括(1)归并指令,它把来自一个源寄存器的一个数据值归并到一个能够保持多个分段数据元素的第一分段寄存器,其特征在于按照一个屏蔽寄存器,以任意规模的片段来安排这些分段数据元素;(2)压缩指令,它对每个分段数据元素进行符号扩展,并且把结果存储在一个第二分段寄存器中,其特征在于,这些分段数据元素能够同时运算,以提供一组相互依赖的结果分段数据元素;(3)压缩恢复指令,它把这组结果数据元素中的每个元素压缩恢复到第一分段寄存器,使得这组结果数据元素相互独立;(4)分离指令,它把若干数据元素从第一分段寄存器传递到多个独立的寄存器。
在第三方面,本发明提供了一种方法,在一个寄存器中处理多个任意规模的数据元素,该方法包括产生一个屏蔽寄存器,它定义了一个寄存器的一组任意规模的片段;按照屏蔽寄存器的安排,在一个分段数据寄存器中存储多个任意规模的数据元素,其特征在于这些任意规模的数据元素经过了符号扩展;响应一条机器指令,在分段数据寄存器内对每个数据元素同时运算以产生一组结果数据元素,其特征在于结果数据元素相互依赖;以及压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。
所以,本发明的一个优点是采用能够增加到标准算术逻辑单元(ALU)的硬件辅助功能。换言之,这种解决方案配备了特殊的硬件操作,以便在单一的时钟周期内,执行若干功能,比如“压缩”、“压缩恢复”、右移n位等,在一个标准的ALU中这些功能需要多个时钟周期。这种解决方案也可能配备了一种特殊的错误和条件状态位寄存器,标准的ALU核心无须了解有关它的任何情况。采用标准ALU的一个优点在于,使用经过优化和验证的ALU组件,设计定制的硬件(FPGA、ASIC等)时便于实现快速布局。经过优化和验证的组件,其功能、功耗、运算速度、空间占用、峰值电流等,将是已经经过核实。
附图简要说明连同附图阅读本发明之不同方面的以下详细说明,本发明的这些和其它特性将会更加易于理解,其中

图1展示了依据本发明实施例的一个处理单元;图2展示了实施本发明示范方法的流程图;图3展示了依据本发明实施例的一个寄存器概要;图4展示了依据本发明实施例的核心辅助指令之间的逻辑关系;图5展示了依据本发明实施例的压缩指令所用的寄存器概要;图6展示了依据本发明实施例的压缩恢复指令第一变量所用的寄存器概要;图7展示了依据本发明实施例的算术归并指令所用的寄存器概要;
图8展示了依据本发明实施例的逻辑归并指令所用的寄存器概要;图9展示了依据本发明实施例的逻辑分离指令所用的寄存器概要;具体实施方式
现在参考附图,图1展示了实施本发明所用的一个示范性处理单元10。处理单元10包括一组标准的ALU(算术逻辑单元)功能12,比如相加、相减、相乘、OR、XOR、左移等。此外,处理单元10还包括一组硬件辅助功能(即机器指令),它们使得多个任意规模的数据元素能够在一个寄存器内同时处理。示范性的硬件辅助功能14包括一组核心辅助功能15和一组补充辅助功能17。核心辅助功能15包括压缩、压缩恢复、算术归并、算术分离、逻辑归并和逻辑分离。补充辅助功能17包括逻辑右移和算术右移。处理单元10还包括若干源寄存器Xj16、一个屏蔽寄存器18、至少一个第一分段寄存器类型E20以及至少一个第二分段寄存器类型D22。每个源寄存器18都能够保持若干独立的数据值。第一分段寄存器类型E20用于保持相互独立、未进行符号扩展的多个数据元素。第二分段寄存器类型D22用于保持已进行符号扩展、可能彼此相关的多个数据元素。还包括一个条件码状态寄存器(CCSR)23,用于保持溢出、进位等状态的测试位。上述寄存器中的每一个,都可以使用通用寄存器GPR来实现,所以标准的ALU核心不必知晓它们;即为了容纳它们不必改变标准的ALU设计。下面介绍硬件辅助功能14以及寄存器16、18、20、22和23的操作细节。
现在参考图2,其中的流程图展示了实施本发明一般概念的一种示范性方法。首先,在步骤S1中,把来自一个或多个源寄存器Xj的若干数据值,归并和压缩在一个或多个分段寄存器中。在这个步骤中,如果需要,就把数据值连接(即归并)在一起,并且进行符号扩展(即压缩)。然后,在步骤S2中,对于分段数据寄存器中的数据元素,同时进行一个标准的ALU运算(如相加),结果存储在一个分段寄存器中。在分段之间进位、移位等运算之后,结果数据元素可能彼此相关,如同下面进一步的介绍。下一步,在步骤S3中,把结果数据元素“压缩恢复”,以消除结果数据元素之间的任何关联性。最后,在步骤S4中,把结果数据元素分离回到独立的寄存器中。
例如,假设源寄存器X1、X2和X3包含以下已进行符号扩展的数据值{1,-8,-4},每个都具有任意的精度X1(1) 000001(6位)X2(-8)11111000(8位)X3(-4)1111111100(10位)。然后,把来自每个源寄存器的数据值归并和压缩到单一的寄存器D1中,它就包含三个数据元素或者说片段,形式如下D1000000 11110111 1111111100。假设第二组源寄存器X4、X5、X6包含符号扩展后的数据值{-2,-5,4}(与X1、X2、X3的精度类似),归并和压缩到寄存器D2后的形式如下D2111101 11111011 0000000100。
下一步,执行一个标准的ALU运算,在这种情况下是一个“相加”运算,在D3中产生以下结果 应当理解,展示相加运算仅仅是为了示范的目的,也可以使用其它的标准ALU运算,比如相减、标量乘等。这时,结果数据元素d1111110、d211110011和d30000000000需要进行压缩恢复,以调整由任何进位、借位等引起的关联性。按照以下步骤来做到这一点(1)取出最低有效数据元素d1的符号位,加到次低有效数据元素d2上,(2)取出d2的符号位,加到d3上
得出数据元素e1=111111,e2=11110011,e3=0000000000或者说{-1,-13,0}。
参考图2所介绍的方法,是使用图1中所介绍的硬件辅助指令和寄存器来实施的。下面将参考图3至图9,介绍这些指令。为了便于解释,将假设在定点的M位通用寄存器(GPR)中执行所介绍的指令。
一开始,或者由编译器,或者由用户把一个GPR指定为屏蔽寄存器。屏蔽寄存器用于为一个寄存器定义一组任意规模的片段,每个片段能够保持一个任意规模的数据元素。一开始,可以把屏蔽寄存器设立为一个默认值0,最高有效位(MSB)设定为1,表示在该寄存器中仅有一个元素或者片段。设定为“1”的每一位都将表示一个片段精度的最左位。紧邻这一位的向左一位将表示下一个片段的LSB(最低有效位)。这些1描绘了不同片段之间的分界,从而定义了每个片段的精度,如图3所示。在图3中也显示了pj表示第j个片段的精度,包括所带符号位和保护位(在上述参考资料SYSTEM AND METHOD FOR ENABLING MULTIPLESIGNED INDEPENDENT DATA ELEMENTS PER REGISTER中,详细讲解了保护位),片段的总数为N。
寄存器Xj表示多个独立的源寄存器,每个都包含一个独特的数据值,第j个寄存器称为Xj。
如上所述,屏蔽寄存器为若干寄存器定义了任意规模的片段,这些寄存器用于保持和处理多个数据元素。在图3中描述的示范性实施例中,实施了两种类型分段寄存器,E和D。寄存器类型E包括一个分段的数据寄存器,用于保持多个数据元素e0、e1...eN-1,它们相互独立,并且未进行符号扩展。寄存器类型D包括一个分段的数据寄存器,用于保持多个数据元素d0、d1...dN-1,它们已进行符号扩展,并且可能彼此相关。根据实施的运算类型,可以使用E型寄存器,也可以使用D型寄存器,也可以兼而有之。
对于带有若干元素ej的一个寄存器E,独立元素的定义如下令q和j为区间
上的整数,元素eq在其中变化,如果q≠j, 或者如果q=j, 换言之,对于所有的j,ej恰恰是pj位对应整数之2的补码表达。对于一个寄存器D,相关元素dj的定义如下元素dq变化时,如果q>j, dj是对应的ej减1或0(取决于dj-1)之2的补码表达。注意,可能会有一个保持着相关元素的寄存器D满足一个独立寄存器的条件。不过,所有的元素必须为正,而且符合前面确定的精度。
令sj为dj的符号位(在2的补码表达中,为了方便起见这里把MSB称为“符号位”),0为正,1为负。
dj=ej-sj-1图4展示了六条核心辅助指令15、一组源寄存器Xj、一个E型寄存器和一个D型寄存器之间的一组关系。一般说来,源寄存器Xj使用“逻辑归并”(MERL)和“逻辑分离”(SPL)机器指令,与E型寄存器互动,使用“算术归并”(MERA)和“算术分离”(SPA)机器指令,与D型寄存器互动。逻辑指令MERL和SPL通常涉及的运算,面对的是未进行符号扩展的独立数据元素,而算术指令MERA和SPA涉及的运算,面对的是符号扩展后的相关数据元素。“压缩”(PCK)和“压缩恢复”(UPCK)机器指令提供的运算,用于相关的和独立的数据元素之间的来回转换。
如上所述,为了实施本发明提供了一组硬件辅助功能14。下面将详细介绍这些功能。除非另外声明,屏蔽寄存器或者“掩模”都是一个恰当掩模,对于压缩恢复寄存器时对应的每个元素具有适当的精度。U表示一个未知的二进制数值,或者是0,或者是1,与一个“X”或“无所谓”相对,sj为第j个元素的符号位。符号扩展功能由Φ()给出。以下给出一条任意指令的一条示范指令句法,注意一个不同的标准ALU可能会改变自变量的次序和精确格式INSTR Mask,Source Register(s),TargetRegister(s),Miscellaneous Register(s)这一条缩写为(Source Register(s)→Target Register(s))。
1.压缩(E→D)指令句法PCKMask,E,D,TmpD为目标寄存器,其元素彼此相关。E为源寄存器,对其独立的元素进行压缩。Tmp为一个临时寄存器。Tmp的用途对每个元素ej进行符号调整。如上所述,Mask(掩模)包含的信息定义了E和D中每个数据元素的精度。图5展示了压缩指令的寄存器概要,它显示了对寄存器E中的数据元素进行符号扩展并存储在寄存器D中。该指令所用的逻辑如下D=0for j=0 to N-1Tmp=ejTmp=Φ(Tmp)D=D+TmpEnd注意,该循环解并不意味着这些元素需要以任何特定的次序来压缩。
2A.压缩恢复(D→E)-第一变量指令句法UPCK Mask,D,ED为源寄存器,其元素彼此相关。E为目标寄存器,带有压缩恢复的、独立的元素。Mask(掩模)寄存器中包含D的精度信息。压缩恢复指令把dj转换为ej。图6展示了压缩恢复指令第一变量所用的寄存器概要,把寄存器D中的符号扩展后的数据元素转换到寄存器E中。这可以由以下方程来完成E=D+(D AND Mask)(其中AND为按位逻辑AND运算)ej=dj+sj-1注意,这种压缩恢复方法假设,符号位右面的一位包含压缩恢复前符号位同样的信息。
2B.压缩恢复(D→E)-第二变量指令句法UPCK Mask,D,E在这种情况下D为源寄存器,其元素彼此相关。在这种情况下E为目标寄存器,带有压缩恢复的、独立的元素。每个元素的符号位加到左面元素的最低有效位上。从右到左这样做,使符号位在这些元素的其余部分“涟漪”通过,再重复此过程。令mj表示一个寄存器,其中全都充满了0,仅有在第j个元素之符号位的位置是1。更准确地说,它表示mj=2^(p0+p1+...+pj)-1。以下伪码说明了如何“压缩恢复”一个寄存器而保存每个元素的符号位。
E=Dfor j=0 to N-1E=((mjAND E)<<1)+EEnd注意压缩恢复指令2A和2B之间的折衷。指令2A最快,但是对于每个元素还需要一个另外的保护位。指令2B需要的复杂程度更高,不过它不需要一个“额外的”保护位。注意,它不一定更慢——该过程可以并行或使用流水线等技术——但是它更复杂。
3.算术归并(Xj→D)指令句法MERA Mask,Xj,D在这种情况下Xj为源寄存器,其元素是独立的。在这种情况下D为目标寄存器,其元素彼此相关。图7展示了算术归并指令的寄存器概要。实施方程如下E=X0+∑j(Xj<<p0+...+pj-1)4.算术分离(D→Xj)指令句法SPA Mask,D,Xj,Tmp在这种情况下D为源寄存器,其元素彼此相关。在这种情况下Xj为目标寄存器,其元素是独立的。在这种情况下Tmp是一个临时寄存器,其元素是独立的。算术分离指令本质上是以下形式的两步过程D→EE→Xj第一步利用UPCK命令不难完成。然后第二步可以利用SPL命令来完成,如图4所示。
UPCK Mask,D,TmpSPL Mask,Tmp,Xj5.逻辑归并(Xj→E)指令句法MERL Mask,Xj,E在这种情况下Xj为源寄存器,其元素是独立的。在这种情况下E为目标寄存器,其元素是独立的。图8显示了逻辑归并指令的寄存器概要。实施这条指令的逻辑如下for(j>=1),let Pj=p0+...+pj-1E=0for j=N-1 to 1E=E(OR(Xj AND(2^(pj-1)-1))<<pj-1endE=E OR(X0 AND(2^(p0-1)-1))注意,AND运算所用的2^(pj-1)-1项仅仅是截取了Xj的底部pj位。
6.逻辑分离(E→Xj)
指令句法SPL Mask,E,Xj在这种情况下E为源寄存器,其元素是独立的。在这种情况下Xj为目标寄存器,其元素是独立的。图9显示了逻辑分离指令的寄存器概要。实施所用的逻辑如下X0=e0X1=e1>>p0Xj=ej>>(p0+...+pj-1)for N-1≥j≥2以上介绍的六条指令是一组示范性的核心辅助指令15,它们使得本发明的基本原理得以实施。使用这些核心辅助指令15,使得某些特定的核心ALU运算实施时“无须”采取进一步的操作。运算实例包括相加;相减;以一个标量值相乘;逻辑/算术左移;按位AND、OR和XOR;以及判断相等。其它的运算可能需要特殊的处理,以应付数据的压缩性质,或者采用软件,或者采用硬件。在这些情况下,可以提供补充机器指令17。例如,下面介绍的逻辑右移和算术右移是此类操作的两个实例,使用下面介绍的逻辑,就能够在一个分段的寄存器上实施这些操作。
7.逻辑右移指令句法SRL Mask,E,ShiftE为源寄存器,其元素是独立的。“Shift”为位移量。逻辑如下for i=1 to ShiftE=E>>1E=E AND~MaskEnd8.算术右移指令句法SRA Mask,D,ShiftD为源寄存器,其元素是独立的。“Shift”为位移量。以下功能说明展示了SRA所需的符号扩展for i=1 to Shift
Tmp=D AND MaskD=D>>1D=(D AND~Mask)OR TmpEnd注意,除了处理数据以外,为了不同的目的,可能还需要本发明操作旗标。在一个典型的ALU中出现的标准条件寄存器,只能跟踪整个寄存器之每种状态位中的一个。这并不能提供与条件相关的重要信息,比如压缩时元素间的溢出、符号、零,等等。所以,对于每个片段,可以采用一个分别的测试寄存器来实施状态位跟踪。
与元素符号和零等相关联的状态位,只须在每次操作之后测试每个元素,即可实现。确切地说,Sign=Mask AND EZeroj=(ej==0)以如下方式,,在压缩时测试每个元素,就能够探测压缩时的溢出(由进位输出产生的差异)D=0for j=0 to N-1Tmp=ejTmp=Φ(Tmp)D=D+TmpOverflowj=ζ(Tmp)End其中如果在dj的左面的位中有若干1和若干0,那么ζ(Tmp)=1,因为只有若干1或者若干0的出现才表示符号扩展。另一方面,其它的条件位比如任何一个元素的进位输出,需要另外的逻辑,如果要确定进位的话。
对于压缩的寄存器格式,给定了一个条件码寄存器(CCSR)(可以在一个标准的GPR中实现)之后,可以在ALU中增加另外的指令,比如一种比较(如“TEST”),它根据每个元素与比较值的关系,独立地设置分别的状态位。
应当理解,虽然本发明的一般原理是在硬件中实施的,但是本文介绍的某些系统的特性、功能、机制、方法和模块,可以在硬件、软件或者硬件和软件的结合中实施。它们可以由任何类型的计算机系统或其它装置实施,只要适于实现本文介绍的方法。一种典型的硬件和软件的结合是带有计算机程序的通用计算机系统,在加载和执行该程序时,控制计算机系统使之执行本文介绍的方法。不然,也可以采用一台专用计算机,它包含专用的硬件,以便执行本发明的一项或多项功能任务。本发明也可以嵌入在一种计算机程序产品中,它包括能够实施本文介绍之方法和功能的全部特性,当加载到计算机系统中时,就能够执行这些方法和功能。计算机程序、软件程序、程序、程序产品或者软件,在此处的上下文中,表示一组指令中以任何语言写成的任何表达式、代码或符号,意在使具有信息处理能力的系统执行一种具体的功能,或者是直接执行,或者是在(a)转换到另一种语言、代码或符号;和/或(b)以不同的材料形式再现这两个步骤中任何一个或两个之后再执行。
对本发明优选实施例的以上说明,只是为了展示和说明的目的。它们并非试图面面俱到,也不将本发明限制到公开的严格形式,在以上教导的指引下,显然有可能作出许多修改和变化。对于本领域的技术人员,这些明显的修改和变化要包括在本发明的范围之内,正如附带的权利要求书的定义。
权利要求
1.一种在一个寄存器中处理多个任意规模数据元素的方法,包括创建一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;提供一个分段的数据寄存器,它包含多个按照屏蔽寄存器以片段形式排列的任意规模的数据元素;以及响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算。
2.根据权利要求1的方法,其特征在于,提供包含多个任意规模数据元素的分段数据寄存器的步骤包括以下步骤提供多个独立的源寄存器,每一个都包含一个独立的数据值;提供一条归并机器指令,用于把若干独立的数据值归并到分段的数据寄存器中;以及执行归并机器指令,把若干独立的数据值归并到分段的数据寄存器中。
3.根据权利要求2的方法,其特征在于,归并机器指令使分段的数据寄存器中的多个任意规模的数据元素相互独立并且不进行符号扩展。
4.根据权利要求2的方法,其特征在于,归并机器指令使数据寄存器中的多个任意规模的数据元素进行符号扩展。
5.根据权利要求1的方法,其特征在于,对分段的数据寄存器同时进行运算的步骤包括一种运算,选自包括下列运算的组相加、相减、标量乘、左移、AND、OR和XOR。
6.根据权利要求1的方法,其特征在于,对于屏蔽寄存器定义的每个片段,屏蔽寄存器包括最左位上的值1和其余位上的0。
7.根据权利要求1的方法,进一步包括以下步骤按照屏蔽寄存器,把分段数据寄存器中的数据元素分离成多个独立存储的数据元素。
8.一种具有硬件辅助功能的处理单元,用于在单一的寄存器中对多个带符号的独立数据元素进行运算,该处理单元运算时响应以下机器指令归并指令,把来自一个源寄存器的一个数据值归并到一个能够保持多个分段数据元素的第一分段寄存器中,其中这些分段数据元素按照一个屏蔽寄存器,以任意规模的片段的形式排列;压缩指令,对每个分段的数据元素进行符号扩展,并把结果存储在一个第二分段寄存器中,其中这些分段的数据元素能够同时运算,以提供一组彼此相关的结果分段数据元素;一条压缩恢复指令,把结果数据元素组中的每个元素压缩恢复到第一分段寄存器中,使得结果数据元素组中的元素相互独立;以及一条分离指令,把数据元素从第一分段寄存器传递到多个独立的寄存器中。
9.根据权利要求8的处理单元,进一步包括算术归并指令,执行归并指令和压缩指令二者的功能;以及算术分离指令,执行压缩恢复指令和分离指令二者的功能。
10.根据权利要求8的处理单元,进一步包括逻辑右移指令;以及算术右移指令。
11.根据权利要求8的处理单元,进一步包括一条测试指令,用于测试分段寄存器中每个片段的数位。
12.根据权利要求11的处理单元,其特征在于,测试指令测试一次溢出。
13.根据权利要求11的处理单元,其特征在于,测试指令测试一次进位。
14.一种在一个寄存器中处理多个任意规模数据元素的方法,包括创建一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;在一个分段的数据寄存器中,存储多个按照屏蔽寄存器排列的任意规模的数据元素,其中任意规模的数据元素经过了符号扩展;响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算,以产生一组结果数据元素,其中结果数据元素彼此相关;以及压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。
15.根据权利要求14的方法,其特征在于,创建屏蔽寄存器的步骤包括以下步骤配置一个通用寄存器,每个片段的最左位为1,其余位为0。
16.根据权利要求14的方法,其特征在于,压缩恢复结果数据元素的步骤包括以下步骤把一个第一数据元素的符号位加到相邻的第二数据元素的最低有效位上;以及把第二数据元素的符号位加到相邻的第三数据元素的最低有效位上。
17.根据权利要求16的方法,进一步包括以下步骤把第三数据元素的符号位加到相邻的第四数据元素的最低有效位上。
18.根据权利要求14的方法,其特征在于,在分段的数据寄存器中存储多个任意规模数据元素的步骤,包括以下步骤提供多个源寄存器,每一个都包含一个独立的数据值;以及响应归并指令的执行,把每个独立的数据值都归并到分段的数据寄存器中。
19.根据权利要求14的方法,其特征在于,对分段的数据寄存器中的每个数据元素同时进行运算的步骤包括执行一条机器指令的步骤,该机器指令选自包括下列运算的组相加;相减;以一个标量值相乘;逻辑左移;算术左移;按位AND、OR和XOR;以及判断相等。
20.根据权利要求14的方法,进一步包括以下步骤响应分离指令的执行,把若干结果数据元素分离到多个独立的寄存器中。
全文摘要
公开了在寄存器中处理多个任意规模数据元素所用的一种系统和方法。本发明的一种方法包括以下步骤产生一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;在一个分段的数据寄存器中,按照屏蔽寄存器排列,存储多个任意规模的数据元素,其中任意规模的数据元素经过了符号扩展;响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算,以产生一组结果数据元素,其中结果数据元素彼此相关;以及压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。
文档编号G06F9/30GK1573685SQ20041003868
公开日2005年2月2日 申请日期2004年4月27日 优先权日2003年5月27日
发明者迈克尔·T·布拉迪, 詹妮弗·Q·特拉勒维奇, 琼·L·米切尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1