CN1326566A - 对多个带符号的数据值执行算术运算的数据处理系统和方法 - Google Patents
对多个带符号的数据值执行算术运算的数据处理系统和方法 Download PDFInfo
- Publication number
- CN1326566A CN1326566A CN99813426A CN99813426A CN1326566A CN 1326566 A CN1326566 A CN 1326566A CN 99813426 A CN99813426 A CN 99813426A CN 99813426 A CN99813426 A CN 99813426A CN 1326566 A CN1326566 A CN 1326566A
- Authority
- CN
- China
- Prior art keywords
- value
- bit
- signed
- bit field
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012545 processing Methods 0.000 title claims abstract description 10
- 239000002131 composite material Substances 0.000 claims abstract description 105
- 239000007795 chemical reaction product Substances 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000013144 data compression Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 5
- 230000000295 complement effect Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 230000006835 compression Effects 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 230000001915 proofreading effect Effects 0.000 claims 2
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000007792 addition Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000010561 standard procedure Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000008358 core component Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000306 component Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49994—Sign extension
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种对多个(‘p’个)带符号的“n位”数据值执行算术运算的数据处理系统,以及操作这种数据处理系统的方法。本发明的技术包括通过执行与使每一个带符号的数据值和各自的n位域对齐等效的编码操作,把多个带符号的n位数据值编码为包括p个n位域的合成值,将每一个带符号的数据值用符号扩展为合成值的最高有效位,并将对齐的和用符号扩展过的数据值相加构成合成值。然后,把算术运算用于合成值以产生包括p个n位域的编码结果,该编码结果通过应用与从编码结果的每一个n位域中提取数据及校正在编码步骤期间、由将相邻的用符号扩展过的数据相加引起的任何影响等效的译码操作而被译码、产生p个最后结果,从而每一个最后结果代表把算术运算应用于相应的带符号的n位数据值的处理结果。根据本发明,两个或两个以上带符号的数据值被编码为合成值,然后像利用SIMD指令一样利用标准指令对合成值进行处理。通过对带符号的数据值的特殊编码,就能够避免在两个相邻的数据值之间出现上溢或下溢的问题。由于这种编码能够应用标准指令,因此,可以实现应用SIMD指令的扩展的许多益处,而不需要额外的硬件和SIMD所需要的新的指令。
Description
发明领域
本发明涉及对多个带符号的数据值执行算术运算的数据处理系统和方法,而更具体地说,涉及避免把算术运算单独地用于每一个带符号的数据值上的技术。
先有技术的描述
为了使算术运算能同时用于多个数据值,发展了单指令多数据(SIMD)指令。其中单指令用于包括多个域的合成数据值,每个域则包含分离的数据值。
为了支持这种SIMD指令,需要提供具体的SIMD硬件,以便保证合成数据值的每一个域中的数据值在SIMD运算应用于合成数据值期间不会相互影响。例如,SIMD扩充,象Intel公司的MMX硬件和SA-1500协同处理器一般都允许把宽位寄存器分成独立的固定大小的子域。例如,这种寄存器可以是64位宽,并且,因此可包含8个八位的值,4个十六位的值或两个32位的值。在这些寄存器上运行SIMD指令通常是类型象A=BopC的3个操作数指令,但是,它们在每一个子域上都是并行操作的。
例如,包括4个16位值的两个64位SIMD寄存器相加将导致在每一个寄存器的4个子域上执行加法。64位的结果包括将对应的输入域求和的4个16位值。
SIMD方法在例如八或十六位数据上的一组操作需要对大量数据执行多次运算的情况下特别有用。考虑一个实例,其中通过使用SIMD指令应用64位寄存器,能够对多达8个独立的8位数据组作并行处理,以便明显地提高处理速度。这种SIMD指令应用的一个特殊的领域就是JPEG或MPEG的数据压缩和/或去压缩,其中,需要执行多次离散余弦变换(DCT)运算。每一个DCT包括一系列对带符号的数据执行的加法和乘法,并且还发现,应用SIMD指令可以显著提高处理速度。
然而,应用SIMD指令也存在一些缺点。首先,如前所述,为了使SIMD指令能正确运算,要求有专用硬件以保证在应用SIMD运算时寄存器的不同子域中的数据值仍旧是相互去耦。其次,需要定义使用这种硬件的新的SIMD指令。这往往会引起并不希望出现的识别指令所需要的指令位空间的增大。
发明概要
从第一方面看,本发明提供一种操作数据处理系统对多个(“p”个)带符号的“n位”数据值执行算术运算的方法,它包括以下步骤:通过执行与使每一个带符号的数据值和各自的n位域对齐等效的编码操作,将多个带符号的n位数据值编码为包括p个n位域的合成值,把每一个带符号的数据值用符号扩展为合成值的最高有效位,并且把对齐的和用符号扩展过的数据值相加构成合成值;把算术运算用于合成值产包括p个n位域的编码结果;以及对编码结果进行译码,通过应用与从编码结果的每一个n位域中提取数据和校正在编码步骤期间由相邻用符号扩展的数据值的相加引起的任何影响等效的译码操作,编码结果进行译码,产生p个最后结果;从而,每一个最后结果都代表把算术运算应用于相应的带符号的n位数据值的运算结果。
按照本发明,两个或两个以上带符号的数据值编码为一个合成值,然后,使用好像它们都是SIMD指令似的标准指令对该合成值进行处理。通过应用特殊的带符号数据值的编码,就可以避免在两个相邻的数据值之间出现上溢和下溢的问题。由于这种编码能够应用标准指令,不必使用额外硬件或以SIMD技术为条件的新指令就可以获得使用SIMD扩展的许多益处。
按照本发明,通过执行与把每一个带符号的数据值与各自的n位域对齐等效的编码操作,多个(p个)带符号的n位数据值可编码为由p个n位域组成的合成值,把每一个带符号的数据值用符号扩展至合成值的最高有效位,并且把对齐过的和用符号扩展过的数据值相加形成合成值。这种编码允许多种操作,例如,加、减、乘以一个常数和左移位操作,只要每一个组合数值都能保持在极小值或极大值的范围内(例如,在16位域中的值必须保持在-32768到+32767范围内)。
按照本发明,把编码操作用于带符号的数据值。由于本发明的编码包括把与对每一个带符号的数据值用符号扩展等效的操作用于合成值的最高有效位等效,所以,很清楚,附加与合成值的各自的n位域对齐的不同的带符号的数据值,将可能在不同的数据值之间产生某种交互作用。例如,在最佳实施例中,通过用符号扩展特定的带符号的数据值,如果用符号扩展的数据值为正,就不会对其它数据值产生影响,但是,如果用符号扩展的数据值为负,那么,就会产生影响,它将从与代表合成值的接着的n个较高有效位的相邻数据值对齐的合成值中减去值1。
因此,由于这种可能的交互作用的缘故,与直观应用这种编码完全相反,因为人们期望把算术运算应用于由这种编码产生的合成值不会得到这样的结果,从这种结果可以导出把算术运算依此应用于每一个带符号的n位数据值而可能产生的个别结果。然而,与所期望的相反,人们发现,利用本发明的编码技术,应用算术运算确实得到了一个可以容易导出个别最后结果的编码结果。所需要的一切就是从编码结果的每一个n位域中提取数据,并且校正在编码期间由附加相邻的用符号扩展过的数据值所产生的任何影响。因此,在最佳实施例中,如果在表示编码结果的相邻的n个最低有效位的相邻的n位域中的数据为负,则所需要的一切就是把与编码结果的特定n位域对齐的数值1加回到编码结果中。
下面将指出,有多种不同的方法可以实现编码操作,只要选择的执行过程产生一种合成值,后者等效于把每一个带符号的数据值与各自的n位域、对每一个带符号的数据值用符号扩展为合成值的最高有效位、以及把对齐的和用符号扩展过的数据值相加,以便形成合成值。例如,不必在把每一个带符号的数据值用符号扩展之前,使每一个带符号的数据值与各自的n位域对齐,另一方面,在进行任何对齐处理之前,每一个带符号的数据值首先可以用符号扩展。
而且,在本发明的一个实施例中,编码操作包括以下步骤:把所述多个n位数据值分配给各自的中间值的n位域,其中,第1个n位域包括中间值的n个最低有效位,而第p个n位域包括中间值的n个最高有效位,对于从第p-1到第1个n位域,从第p-1个n位域开始确定在那个n位域中的数据值是否为负,并且如果为负,通过从中间值减去与代表n个最高有效位的相邻的n位域对齐的逻辑值1来产生新的中间值;这就使得当第一个n位域被处理后,所述中间值就是所述合成值。
类似地,下面将指出,可以用多种不同方法实现译码操作,只要产生这样的最后结果:该结果等效于从编码结果的每一个n位域中提取数据并且校正由在编码期间附加相邻的符号扩展数据值所产生的所有影响。例如,在本发明的最佳实施例中,编码结果的第1个n位域包括编码结果的n个最低有效位,并且编码结果的第p个n位域包括编码结果的n个最高有效位,并且译码操作包括以下步骤:对于从第1个n位域到第p-1个n位域,从第1个n位域开始,确定在那个n位域中的数据是否为负,并且如果是负,通过把与代表n个最高有效位的相邻的n位域对齐的逻辑1值加到编码结果上,产生新的编码结果;这就使得当第p-1个n位域被处理后,每一个n位域都包含所述p个最后结果中的一个。
当考虑编码操作和译码操作时,本专业的技术人员还将看到,根据选择的执行过程,编码操作和/或译码操作可以包括一条或多条指令。
在最佳实施例中,算术运算是对一个或多个合成值的操作,每一个合成值将多个带符号的n位数值编码,并且每一个合成值都是通过把所述编码步骤应用到相应的多个带符号的n位数据值而产生的。因此,如果需要执行加法A=A1+A2和加法B=B1+B2,那么,参照本发明的最佳实施例,将产生两个合成值C1和C2,其中C1是A1和B1的编码,而C2是A2和B2的编码,然后,算术运算将对这两个合成值C1和C2执行加法,并产生C=C1+C2的结果。然后,通过对算术运算的结果C译码而导出A和B。为简便起见,上述运算将用图示说明,但是,本专业的技术人员将明白,两个以上的数据值可以包括在产生的合成值中,并且也可以把算术运算应用于两个以上的合成值中。而且,下面将指出,算术运算实际上可以包括多个运算。
在最佳实施例中,带符号的数据值具有2进制补码格式。
下面将指出,许多不同的算术运算可以应用于由本发明的编码技术产生的合成值中。然而,在本发明的一个实施例中,算术运算是包括一个或多个离散余弦变换(DCT)运算,每一个DCT运算都是对一个或多个合成值的运算,每一个合成值则对多个带符号的n位数据值编码,并且每一个数据值都是通过把所述编码步骤应用于相应的多个带符号的n位数据值产生的。DCT运算应用的一个特殊领域就是JPEG或MPEG的数据压缩或去压缩,并且已发现,当执行JPEG或MPEG的数据压缩或去压缩时,参照本发明最佳实施例的技术是特别先进的。
从第二方面看,本发明提供了一种对多个(p个)带符号的“n位”数据值执行算术运算的数据处理系统,它包括:应用算术运算的处理器;用于存储多个带符号的n位数据值的存储器;在执行算术运算之前被安排来执行以下操作的处理器:从存储器检索多个带符号的n位数据值处理器、通过执行与把每一个带符号数据值与各自的n位域对齐、将每一个带符号的数据值用符号扩展为合成值的最高有效位、以及将对齐的和用符号扩展过的各数据值相加形成合成值等效的编码操作而将多个带符号的n位数据值编码为包括p个n位域的合成值,并将该合成值存入存储器中;准备将算术运算用于合成值以便产生包括p个n位域的编码结果并将编码结果存入存储器中的处理器;以及准备紧接在应用算术运算之后通过执行与以下操作等效的译码操作而将所述编码结果译码以便产生p个最后结果的处理器:从编码结果的每一个n位域提取数据,以及校正在编码其间由相邻的用符号扩展过的数据值相加所产生的任何影响;从而,每一个最后结果都代表把算术运算用于相应的带符号的n位数据值的计算结果。
在最佳实施例中,处理器包括准备执行编码和译码操作的移位器和运算器(ALU)。这些是一般处理器内的标准硬件,因而在处理器内不需要使其能处理编码和译码操作的专用硬件。然而,如果需要,可以提供专用硬件来处理编码和/或译码操作。
用于存储带符号的n位数据值、合成值和编码结果的存储器可以采用不同形式的器件、例如存储器或寄存器存储体,并且甚至不同的物理存储器元件也可以用于存储带符号的n位数据值、合成值以及编码结果。然而,在最佳实施例中,存储器是所述处理器用于存储数据值的寄存器存储体。因此,在执行编码操作之前有关的带符号的n位数据值将从存储器读入寄存器存储体,然后,在寄存器存储体中通过对数据值的合适操作而进行编码操作、算术运算操作和译码操作。
从第三方面看,本发明提供了一种准备对多个(‘p’个)带符号的“n位”数据值执行算术运算的数据处理系统的编码/译码管理器,所述编码/译码管理器准备在应用算术运算之前由数据处理系统将多个带符号的“n位”数据值编码为合成值,以便产生编码记果,并且接着对编码结果译码以便产生p个最后结果,编码/译码管理器包括:编码器,它配置成工作时通过执行与将每一个带符号的数据值与各自的n位域对齐等效的编码操作、将每一个带符号的数据值用符号扩展为合成值的最高有效位、以及把对齐的和用符号扩展过的数据值相加而将多个带符号的n位数据值编码为包括p个n位域的合成值;以及译码器,它配置成工作时通过应用与从编码结果的每一个n位域提取数据及校正在编码期间由相邻的符号扩展过的数据值相加而产生的任何影响等效的译码操作,产生p个最后结果;从而,每一个最后结果代表把算术运算用于相应的带符号的n位数据值的计算结果。
从第四方面看,本发明提供一种在计算机可读存储器上的计算机程序产品,用于在算术运算执行前控制数据处理系统对多个(“p”个)带符号的“n位”数据值编码为合成值、以便产生编码结果,并且紧接着对编码结果译码产生p个最后结果,计算机程序产品包括:编码器,它配置成工作时通过执行与将每一个带符号的数据值与各自的n位域对齐等效的编码操作、对每一个带符号的数据值用符号扩展为合成值的最高有效位、以及把对齐的和用符号扩展过的数据值相加而将多个带符号的n位数据值编码为包括p个n位域的合成值;以及译码器,它配置成工作时通过应用与从编码结果的每一个n位域提取数据并校正在编码期间由相邻的符号扩展过的数据值相加而产生的任何影响等效的译码操作,产生所述p个最后结果;从而,每一个最后结果代表把算术运算用于相应的带符号的n位数据值的计算结果。
附图简述
下面,将参照附图中说明的最佳实施例、仅以举例的方式进一步说明本发明,附图中:
图1是说明本发明实施例中用于编码和译码操作的处理器核心元件的方框图;
图2是说明按照本发明第1实施例的编码操作的流程图;
图3是说明按照本发明第2实施例的编码操作的流程图;以及
图4是说明按照本发明最佳实施例的译码操作的流程图。
最佳实施例的描述
图1是说明按照本发明实施例对多个(p个)带符号的n位数据值执行算术运算的标准处理器的核心部件10的方框图。由核心部件10执行的指令通过路径70进入指令流水线80。而且,由处理器核心使用的数据值装入寄存器存储体20,一般来说它包括多个寄存器。在图1中,数据值从高速缓冲存储器30,通过路径35装入寄存器20,但是将可以看到,数据值并不需要直接从高速缓冲存储器30装入,而可以用另一种方法从由包含处理器核心10的数据处理系统提供的其它存储器装入。
在图1中,寄存器20表示为多个寄存器,每一个寄存器有32位长,且包括4个8位域。然而,寄存器并不必是32位长,而可以使用具有64位和128位长的其它一般寄存器。
指令译码器40被安排来从指令流水线80读取指令,并将这些指令译码成为由处理器核心内的硬件应用的操作。因此,作为一个例子,如果指令译码器40将要求执行移位操作的指令译码,那么,它将提供一个信号给移位逻辑电路60,通知移位逻辑电路执行所需的移位操作。而且,它将把信号传送给寄存器存储体20,使操作数的数据值从寄存器存储体输出到移位逻辑电路60。一般地说,一旦操作数的数据值被移位,则被移位的值将通过移位逻辑电路60返回给寄存器存储体20,并将它存储在所述各寄存器之一中。
类似地,如果指令译码器40对算术运算、例如乘法或加法译码,那么它将把信号传送给运算器(ALU)50,使ALU执行所需的算术运算。而且,它将与寄存器存储体20联系,使所需的操作数的数据值从寄存器存储体20传送到ALU50,并且继续完成算术运算。一般地说,ALU50将把结果数据值送回寄存器存储体20存储。
以上对图1的讨论用来提供举例说明的处理器核心10的标准元件的操作综述。按照本发明的最佳实施例,该标准核心10是对多个带符号的n位数据值执行算术运算,而且,将参考图2到图4更详细地讨论在最佳实施例中用于实现该目的的技术。
最佳实施例使用的技术应用于2进制补码格式的带符号的数据值,这是一些带符号位的数据值,允许其值为正值或负值。因此,考虑一个带符号的8位数据值的例子,其值可以在-128到+127的数值范围内。
根据本发明第1实施例中使用的编码技术,带符号的数据值是“用符号扩展的”。考虑一个16位数据值的例子,该例子可以通过把符号位(考虑16位数据值的例子,即位15)的16个拷贝放置在位16到31来用符号扩展为例如,32位数据值。所以,例如,16位带符号的值-32767在十六进制表示法中就为0x8001,符号“0x”标识该表示法为十六进制。通过用符号扩展把该数扩展为32位,它就变成了0xFFFF8001,由于十六进制的数值“8”在二进制中表示16位数值中的4个最高有效位为“1000”,因而,其符号位为“1”。
根据本发明的最佳实施例,多个带符号的n位数据值,在算术运算执行前被编码。在本发明第一实施例中使用的编码技术,将参照图2作进一步讨论。在步骤200,多个n位数据值从高速缓冲存储器30装入预先确定的寄存器存储体20中的寄存器。然后,在步骤210,每一个带符号的数据值都用符号扩展为“m”位,其中m是用于对多个n位数据值编码为合成值的长度。用符号扩展的过程可以由ALU50或移位逻辑60执行。这些用符号扩展的数据值最好存储在寄存器存储体的“m”位寄存器中。
在步骤220,第1个n位数据值被分配给合成值的n个最低有效位。然后,在步骤230,变量x被设置为1,并且在步骤240,下一个用符号扩展的n位数据值,通过移位逻辑60从寄存器存储体20中它的寄存器取出,并且左移xn位。在该阶段,最好把移位的数据值写回到寄存器存储体20中选中的寄存器。
在这步骤之后,过程执行步骤250,确定xn的数值是否等于m。该计算能有效地确定被编码为合成值的所有n位数据值是否被移位,以便将它们与合成值中它们各自的n位域对齐。如果xn不等于m,那么,过程就执行步骤260,x增1,且过程返回步骤240。取出x的新增1的值,然后,下一个n位数据值被左移xn位,并且对于每一个n位值,该过程按顺序重复直到xn等于m。在该阶段,所有的n位数据值将用符号扩展为m位,并且移位,使之与合成值的各自的n位域对齐。因此,在步骤270,这些用符号扩展并移位过的数据值由ALU50从寄存器存储体20取出,并相加在一起构成合成值。然后,把该结果输出给寄存器存储体20存储在分配给保存合成值的寄存器中。这时,编码操作完成,因而过程执行步骤280,结束编码操作。
本专业的技术人员将懂得,序列操作并不需要象图2所说明的完全相同的顺序执行。例如,为了使每一个n位数据值与分配给合成值的寄存器的各自的n位域对齐,由步骤220到260概括的移位过程可以在数据值的任何符号扩展之前执行。在这种情况下,一旦所有的数据值都与它们各自的n位域对齐后,那么,每一个数据值就用符号扩展为合成值的最高有效位(即,对于长度为m,并由0到m-1位组成的合成值,那么每一个数据值都将用符号扩展到m-1位)。然后,用符号扩展操作之后,过程将执行步骤270,这时,各数值相加在一起。
而且,每一次数据值被符号扩展和移位都可以执行一次加法,而不是把加法步骤留到结束之前。例如,当第二个数据值左移n位并用符号扩展时,那么就可以在对第3个数据值用符号扩展和移位前把它直接加到第1个用符号扩展的数据值中。这时,当第3个数据值用符号扩展和左移2n位时,那么,该数值就可以加到前一个加法结果中去,等等,直到所有n位数据值都被编码为合成值为止。
为了进一步说明参照图2描述的编码技术,现在考虑一个例子,其中两个16位数值a和b被编码成32位的字c。该编码可用下述方程表示:
c=SignExtend(a)+(b<<16)
因此,a首先用符号扩展为32位,然后,b被加到用符号扩展过的a的高16位上。在最佳实施例中,如果a是正数,那么,符号位(即第15位)将为0,并且因而用符号扩展将包括把多个0加到16到31的各位中去。因此,该过程不会对c的高16位中表示的b的数值产生影响。然而,如果a为负值,那么,符号位为1,并且因而几个1将被加到16到31的各位中去。这就是说,如果a为负,则当编码到c中时,b就会实际上递减1。例如,若a=-2,而b=10,那么c=-2+(10<<16),即等于0x0009FFFE。因此可见,低16位仍然表示-2,但是,高16位则表示+9,而不是所期望的+10。
可以看出,只要编码产生了一个与参照图2说明的过程等价的合成值,执行的编码过程实际上就不必直接执行用符号扩展和移位。例如,在图3中说明了得到相同合成值的选择编码技术。根据图3的过程,被编码为合成值的p个n位的数据值首先装入为合成值分配的m位寄存器的连续的n位域中,其中m=pxn。所以,如果合成值表示为4个8位的数据值,那么,m=32,而合成值将存储在一个32位的寄存器中。在该阶段,由于数据值将用先有技术的SIMD方法,所以它们将组合成每一个数据值都放置寄存器中各自的n位域中,而且相互没有数据值重叠。
然而,根据该实施例的编码技术,该过程然后执行步骤310,其中变量x设置为p-1。然后,在步骤320,判断在第x个n位域中的数据值是否为负。这样,考虑上述例子,其中4个8位数据值被编码为合成值,然后,第1次迭代,在步骤320中判断第3个n位域是否为负。若该域不为负,那么,正如前面讨论的,那个数据值不会对合成值中的其他数据值产生影响,这样,该过程将直接执行步骤340,判断变量x是否等于1。如果x确实等于1,那么,编码过程结束,并且因此执行步骤360,结束编码操作。然而,如果x不等于1,那么过程执行步骤350,x增1,然后返回步骤320。
在步骤320,如果判定在第x个n位域中的数据值为负,那么,过程执行步骤330,其中1与第x+1个n位域对齐,并且从寄存器的内容中减去它。所以,考虑上述例子,如果在第二次迭代中,判定第2个n位域的数据值为负,那么,在步骤330,逻辑值1就与第3个n位域中的数据值的最低有效位对齐,然后,从寄存器的内容中减去它。
在步骤340,该过程重复执行,直到确定x=1时为止,这时表示复合值的n个最低有效位的数据值的符号将被鉴定,并将执行所需要的减法。然后,过程执行步骤360,结束编码操作。
一旦编码过程被执行,那么,m位合成值就可以用于为处理n位数据值而设计的算法中,并且考虑一个4个8位数据值编码为32位合成值的例子,那就可以利用32位寄存器的标准8位算法用于合成值,而不必采用任何考虑到合成值实际上将4个较小的数据值编码这一事实而需要的专用硬件。因此,可以看到,以上说明的专用编码技术允许像SIMD指令一样使用常规指令,但是,不需要增加处理SIMD指令的专用硬件。这就发现,假如被编码为合成值的单个的n位数值不会出现上溢和下溢的话,该算法就可以直接用于它们,而不是用于合成值。
作出以上进行的讨论之后,很明显,由于用符号扩展,编码步骤在除第1个域外的每一个域都可以至多递减1。虽然这可能使带有最小负值的域产生下溢,但这无关紧要。例如,如果前面的16位域为正值,那么,当前域表示的值-32768...32768是不会改变的,而如果前面的域为负,则在当前域中,-32768将由+32767表示,并在当前域中-32767...32767表示为-32768...32766。所以,这种编码并不丢失在每一个域中表示所有可能的值的能力,并且编码步骤之后执行译码的结果是返回一个未改变的原始数值。如果其值为负,则编码方案可看作为一个域从下一个域“借”一个“1”。如果一个域的符号从正变为负值,则该域就从另一方向的下一个域借1(而在解码期间则不借)。
为了证明该编码技术可行,将应用以下说明,把两个数值编码为一个编码值,然后把它们相加。将要说明,对单个加法的编码结果与对原始数值两次单独的相加得到的结果相同。该证明很容易推广到多个数值的情况。同样,根据加法的证明,可以导出乘以一个常数和左移位(与乘以一个2的正幂指数等效)的情况。虽然对正确的理解编码和译码步骤并不需要这个证明,但是它证明用于编码数值中的算术运算确实能产生有用结果,使得本发明具有实用价值。
首先,数值A、B定义为将编码操作分别用于A1、A2和B1、B2得到的结果。R是把算术的加法运算用于A和B得到的结果,而R1和R2是对R译码后得到的结果。
我们的目的是证明R1=A1+B1及R2=A2+B2。
A=编码(A1,A2)
B=编码(B1,B2)
R=A+B
R1,R2=译码(R)
两个符号扩展数值在范围[-N/2..N/2-1]内的编码定义为:
编码(X,Y)=X+Y*N
其中N为2的幂指数(log(N)是域的位宽)。
译码就是对编码的逆变换,数学上把它定义为:
译码1(Z)=SEXT(Z mod N)译码2(Z)
=SEXT((Z/N)+((Z mod N)/(N/2)))译码(Z)=译码1(Z),译码2(Z)
用“/”表示的除法运算符规定为整数除法并四舍五入到负无穷大。
表示模运算的“mod”返回相除得到的余数,模运算的结果总是具有与分母相同的符号,并且其数值范围从0到分母减1(因此,B*(A/B)+A mod B=A与A的符号无关。
用“SEXT”表示的符号扩展运算符将log(N)位数值用符号扩展到范围[-(N/2)..(N/2)-1]中的带符号值的整个宽度。假设,SEXT(Xmod N)=SEXT(X),即如果X在符号扩展前已超出了有效的数值范围,那么只有X的log(N)位表示X,在数值范围内构成符号扩展数值。同样可以断言,如果X处于范围[-(N/2)..(N/2)-1]内,则SEXT(X)=X。
首先,证明译码(编码())对在规定范围内的数值是恒等的。我们将此证明分成三部分,一个用于第一编码值而二个用于第二编码数值,并且分别证明对于第1个值为正或为负的情况。
证明X=译码1(编码(X,Y):
译码1(编码(X,Y))==对译码1(X+Y*N)的编码的定义
==译码1的定义
SEXT((X+Y*N)mod N)
==算术运算:(X+Y*N)mod N=X mod N SEXT(X mod N)
==算术运算:X mod N=X(因为X在[0..(N/2)-1]中)
SEXT(X)
==SEXT定义
X
证明若X为正,则Y=译码2(编码(X,Y)):
译码2(编码(X,Y))==对译码2(X+Y*N)的编码的定义
==译码2的定义
SEXT((X+Y*N)/N+(((X+Y*N)mod N)/(N/2)))
==算术运算:(X+Y*N)mod N==X mod NSEXT((X+Y*N)/N+((X mod N)/(N/2)))
==算术运算:(X+Y*N)/N==Y mod N,因为X在[0..(N/2)-1]中(X不改变Y)
SEXT(Y mod N+((X mod N)/(N/2)))
==算术运算:X在[0..(N/2)-1]中,所以X mod N==X
SEXT(Y mod N+(X/(N/2)))
==算术运算:X在[0..(N/2)-1]中,所以X/N==0
SEXT(Y mod N)
==SEXT定义
Y
证明若X为负,则Y=译码2(编码(X,Y)):
译码2(编码(X,Y))==对译码2(X+Y*N)的编码的定义
==译码2的定义
SEXT((X+Y*N)/N+(((X+Y*N)mod N)/(N/2)))
==算术运算:(X+Y*N)mod N==X mod NSEXT((X+Y*N)/N+((X mod N)/(N/2)))
==算术运算:(N+Y*N)/N==(Y-1)mod N,因为X在[-(N/2)..-1]中(X向Y借1)
SEXT((Y-1)mod N+((X mod N)/(N/2)))
==算术运算:X在[-(N/2)..-1]中,所以X mod N==X+N
SEXT((Y-1)mod N+((X+N)/(N/2)))
==算术运算:X+N在[N-(N/2)..N-1]中且N为偶数,所以(X+N)/(N/2)==1
SEXT((Y-1)mod N+1)==SEXT的定义
SEXT(((Y-1)mod N+1)mod N)
==算术运算:(A mod N)mod N==A(双重求模是多余的)SEXT(Y mod N)
==SEXT定义
Y
现在可以证明,若相加不溢出,则R1=A1+A2和R2=B1+B2:
R1,R2
==译码(R)的R1、R2定义
==译码(A+B)的R定义==译码(编码(A1,A2)+编码(B1,B2))的A和B定义
==对译码((A1+A2*N)+(B1+B2*N)的编码的定义
==+和*译码((A1+B1)+(A2+B2)*N)的可交换性
==对译码(编码(A1+B1,A2+B2)的编码的定义
==若数值处于范围内,则译码(编码)相同
(这就是如果A1+B1或A2+B2不溢出的情况)
A1+B1,A2+B2
遵循以上限制的算法不需修改就可以应用,并得到作为编码成合成值的数据值的正确操作结果,因此,实行一次算术运算或一系列算术运算所要做的只是进行校正由原始编码产生的任何影响用的译码操作。对于在本发明最佳实施例中校正编码期间产生的这些影响用的译码操作将参照图4加以说明。
在步骤400,变量x设置为1。然后,在步骤410,判断在第x个n位域中的数据值是否为负。这样,在第一次迭代中,判断表示合成值的n个最低有效位的第1个n位域是否为负。如果该数据值为负,那么,过程执行步骤420,其中数值1与第x+1个n位域对齐,然后,把它加到寄存器的内容中。因此,作为例子,如果第1个n位域为负,那么,数值1与第2个n位域的最低有效位对齐,然后把它加到寄存器内容中。然后,过程执行步骤430,判断是否x=p-1。在步骤410中,如果确定了第x个n位域不为负,那么过程直接执行步骤430,而不是步骤420。
如果x不等于p-1,那么过程执行450,x增1,然后返回步骤410。而后,该过程重复,一直到确定x确实等于p-1止,这时,译码过程完成,因而执行步骤440,结束译码操作。
考虑前面的例子,两个16位数值a和b被编码为32位的合成值c,然后,以下的C语言代码段就可以用于产生图4所述的译码操作(假设使用ANSI标准):
a=c&65535;∥提取a
if(a<0)c+=1<<16;∥恢复由负数a引起的增量
b=c>>16;∥提取b
数值65535具有设置为1的最低有效16位,以及设置为0的最高有效16位。因此,当基于c的输入和65535应用AND运算时,数值65535能有效地作为掩膜,使得输出为数值a。正如上述计算中的第2行所说明的,如果这时判断a小于0(即负数),那么,c就变为等于c+(左移16位的1)。因此,这就把1加到包含b的合成值的域的最低有效位。为了提取b,这时,所要做的事情就是将c右移16位,并把结果输出,这样就能校正b的值。
讨论了最佳实施例的编码和译码技术后,现在,参照最佳实施例,根据以下代码讨论一个实例,证明4个8位带符号的整数怎样才能组装成32位的整数和从32位整数分解为4个8位的整数。该例子包括,把数值添加到4个数组中,首先使用在每一个数组中的数值都被分别加在一起的标准方法,然后参照本发明最佳实施例使用的方法。
下述C语言代码说明本发明最佳实施例中使用的编码操作,其中32位寄存器包括4个独立的8位值,而寄存器的内容经处理产生编码的合成值。
#inclnde<stdio.h> ∥以下两行取决于编译器 typedef signed char int8;∥这定义一个带符号的8位数 的类型“int8” typedef int word;∥这定义一个32位带符号整数的类型 “word” ∥将包含4个独立的8位数值的32位编码为4个组合值 word符号_编码(word x) { x-=(x<<1)&(1<<24);∥若为负则减1 x-=(x<<1)&(1<<16); x-=(x<<1)&(1<<8); return x; }
考虑方程x-=(x<<1)&(1<<24),AND运算(x<<1)和(1<<24)会导致与逻辑值1的AND运算的第3个n位域中的数据值的最高有效位(即符号位),正如以上讨论的,如果数据值为正它将产生一个0,而如果数据值为负,则产生1。移位引起的结果,实际上将与第4个8位域中的数据值的最低有效位重合,并且该方程规定x为x减去AND运算的结果。因此,可以看到,如果在第3个8位域中的数据值为负,这样做的结果为从32位寄存器内容中减去与第4个8位域对齐的数值1。也可以看到,以下两个方程执行类似的减法,但是所述1分别与第3个和第2个n位域对齐。
以下代码说明把32位寄存器的内容转换为包含有4个独立结果的数据值的合适的译码操作:
∥把包含4个组合的8位值的32位的字译码为4个独立的值 word符号_译码(word x) { x+=(x<<1)&(1<<8);∥若为负则加1 x+=(x<<1)&(1<<16); x+=(x<<1)&(1<<24); return x; }
从前面对编码过程进行的讨论可以看到,上述译码方程得到的1被加回到寄存器的内容中,以便校正由编码操作产生的任何影响。
以下代码表示另一种供选择的编码技术,其中将4个8位带符号的数值组合成32位的字:
∥将4个8位带符号的数值组合成32位的字
word pack(int8a,int8b,int8c,int8d)
{return(word)a+((word)b<<8)+((word)c<<16)+((word)d<<24);
}
根据上述方程,数值a、b、c和d首先用符号扩展为一个字(即38位)的长度,然后将数值b左移8位,数值c左移16位,以及数值d左移24位,然后通过把符号扩展的和移位后的数值加在一起,组合构成字。
通过以下代码举例说明产生4个分开的数据值的合适的译码操作:
∥将32位的字分开为4个8位带符号的数值
Void unpack(word x,int8*a,int*b,int8*c,int8*d)
{
x=sign_decode(x);
*a=x;
*b=x>>8;
*c=x>>16;
*d=x>>24;
}
根据上述方程,首先应用按照本发明最佳实施例的译码操作将32位的字译码,然后将该字右移位,以便在分别将该值存储在由指针a、b、c和d指定的存储器位置之前,使第i个8位域与低8位对齐。
以下代码是既利用以上说明的标准方法又利用本发明最佳实施例的方法进行多个数值相加的例子:
#define SIZE8∥定义每个数组包含8个数值
int8A[SIZE],B[SIZE],C[SIZE],D[SIZE];∥定义数组A,B,C和D包含有8位的整数
word E[SIZE];∥定义数组E包含字(即32位)
int8 serial_sum8(int8*p);∥定义8位整数的序列求和操作
{
return p[0]+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];
}
word parallel_sum8(word*p)∥定义32位字的并行求和操作
{
return p[0]+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];
}
int main(void)∥程序开始
{
int i;∥定义变量“i”
int8 resa,resb,resc,resd;∥定义求得的结果resa,resb,resc,resd为8位整数
word res;∥定义求得的结果“res”为32位的字
∥初始化A、B、C和D
for(i=0;i<SIZE;i++)∥为了说明起见,定义循环for i=oto SIZE,以便给数组A,B,C和D产生任意内容
{
A[i]=i-10;
B[i]=-i*3+10;
C[i]=i+5;
D[i]=i*i-5*i+1;
}
∥标准方法
rsa=serial_sum8(A);
resb=serial_sum8(B);
resc=serial_sum8(C);
resd=serial_sum8(D);
printf(“Results 1:%d%d%d%d\n”,resa,resb,resc,resd);
∥最佳实施例的方法
for(i=0;i<SIZE;i++)
E[i]=pack(A[i],B[i],C[i],D[i]);∥首先使用本发明的编码技术组合数据
res=parallel_sum8(E);
unpack(res,&resa,&resb,&resc,&resd);
printf(“Results2:%d%d%d%d\n”,resa,resb,resc,resd);
return 1;
}
如果运行以上两个程序代码,标准方法和最佳实施例方法的输出结果是相同的。然而,标准方法需要作28次加法,而最佳实施例方法只需要7次加法。然而,组合和分开的加法运算大约100次,所以,当处理的问题相当复杂时就可以获得了最好的效益。在8x8的DCT中,由于每64个数据值需要执行大约450次加法,所以获得了显著的效益。
以上进行的说明清楚地表明,本发明的最佳实施例允许在合成值上使用非SIMD指令(即标准指令),并且对于被译码的结果产生一组与将该算法单个应用于构成数据值的每一个成份等价的结果。这导致有效提高了处理速度。该技术找到了一个特别有效的特殊领域就是JPEG或MPEG的数据压缩和去压缩领域,其中许多DCT运算需要执行,每一个DCT运算都由在带符号的数据上执行的一系列加法和乘法组成。例如,一般的DCT可以在8位带符号的数据上执行,并得到一个16位的输出。通过对中间结果做合适的比例转换,就能在使用16位带符号的整数时,精确计算DCT。通过使用本发明最佳实施例的该技术,应用标准的32位算术指令,可以在32位处理器上并行执行两个16位的DCT计算。执行预处理步骤以便将用于两个DCT计算的数据编码为一个合成值,然后,就可毫无改变的把常规DCT算法用于计算。这样,结果就被译码为两个DCT结果。由于编码和译码操作都是特别有效的运算(使用ARM处理器核心,一条指令要求编码(ADD C,A,B,LSL#16)并且有三条指令要求译码(MOVS B,C,ASR#16,ADC B,B,#0,接下来是SUB A,C,B,LSL#16)),并且确实在JPEG组合时可以自由操作,还发现,DCT的计算速度将提高近两倍。
虽然这里说明了一个具体的实施例,下面将指出,本发明并不局限于此,在本发明的范围内还可作许多修改和添加。例如,在不脱离本发明的范围的情况下,可以把以下各从属权利要求的特征与各独立权利要求的特征作各种组合。
Claims (21)
1.一种操作数据处理系统对多个(“p”个)带符号的“n位”数据值执行算术运算的方法,它包括以下步骤:通过执行使每一个带符号数据值与各自的n位域对齐等效的编码操作,将多个带符号的n位数据值编码为包括p个n位域的合成值,将每一个带符号的数据值用符号扩展为合成值的最高有效位,以及将对齐的和用符号扩展过的数据值相加以便形成合成值;
把所述算术运算用于所述合成值以便产生包括p个n位域的编码结果;以及
通过应用与从编码结果的每一个n位域中提取数据等效的译码操作以及校正在编码步骤中由将相邻的符号扩展过的数据值相加引起的任何影响,对所述编码结果译码,产生p个最后结果,
从而,每一个最后结果代表将所述算术运算应用于相应的带符号的n位数据值的结果。
2.权利要求1的方法,其特征在于所述编码操作包括以下步骤:
将所述多个n位数据值分配给一个中间值的各个n位域,其中,第1个n位域包括中间值的n个最低有效位,而第p个n位域包括中间值的n个最高有效位;
对于第p-1个到第1个n位域,从第p-1个n位域开始,判断那个n位域中的数据值是否为负,如果为负,则通过从所述中间值减去与表示n个最高有效位的相邻的n位域对齐的逻辑1的值,产生一个新的中间值;
使得当所述第1个n位域被处理后,所述中间值就是所述合成值。
3.权利要求1或2的方法,其特征在于:所述编码结果的第1个n位域包括所述编码结果的n个最低有效位,而所述编码结果的第p个n位域包括所述编码结果的n个最高有效位,所述译码操作包括以下步骤:
对于所述第1个n位域到所述第p-1个n位域,从所述第1个n位域开始,判断那个n位域中的数据是否为负,如果为负,则通过将与代表n个最高有效位的邻接的n位域对齐的逻辑1的值加到所述编码结果以便产生一个新的编码结果;
使得当所述第p-1个n位域被处理后,每一个n位域都包含所述p个最后结果中的一个。
4.前面任一个权利要求的方法,其特征在于:所述算术运算是对一个或多个合成值的操作,每一个合成值将多个带符号的n位数据值编码,并且每一个合成值都是通过把所述编码步骤用于相应的多个带符号的n位数据值产生的。
5.前面任一个权利要求的方法,其特征在于:所述算术运算包括多种运算。
6.前面任一个权利要求的方法,其特征在于:所述带符号的数据值是2进制补码格式。
7.前面任一个权利要求的方法,其特征在于:所述算术运算包括一个或多个离散余弦变换(DCT)运算,每一个DCT运算都是一个或多个合成值的函数,每一个合成值将一个或多个带符号的n位数据值编码,并且每一个合成值都是通过把所述编码步骤用于相应的多个带符号的n位数据值产生的。
8.权利要求7的方法,其特征在于:所述一个或多个DCT运算执行JPEG或MPEG数据压缩或去压缩,要求应用。
9.一种用于对多个(‘p’个)带符号的“n位”数据值执行算术运算的数据处理系统包括:
应用所述算术运算的处理器;
用于存储所述多个带符号的n位数据值的存储器;
在执行所述算术运算之前,安排所述处理器从所述存储器中检索所述多个带符号的n位数据值,并且通过执行以下操作把所述多个带符号的n位数据值编码为合成值:执行使每一个带符号的数据值与各自的n位域对齐等效的编码操作、把每一个带符号的数据值用符号扩展为合成值的最高有效位、以及把对齐的和用符号扩展过的各数据值相加以便构成合成值,然后把所述合成值存入所述存储器;
安排所述处理器把所述算术运算应用于所述合成值,以便产生包括p个n位域的编码结果,并且将所述编码结果存入所述存储器中;以及
在应用所述算术运算之后,安排所述处理器对所述编码结果译码,通过执行与从所述编码结果的每一个n位域提取所述数据等价的译码操作以及校正由相邻的用符号扩展的数据值的相加引起的任何影响,产生p个最后结果;
从而,每一个最后结果代表把所述算术运算用于相应的带符号的n位数据值的计算结果。
10.权利要求9的数据处理系统,其特征在于:所述处理器包括安排来执行编码和译码操作的移位器和运算器(ALU)。
11.权利要求9或10的数据处理系统,其特征在于:所述存储器是所述处理器用来存放数据值的寄存器存储体。
12.权利要求9到11中任何一个的数据处理系统,其特征在于:所述编码操作安排来将所述多个n位数据值分配给中间值的各自的n位域,其中,所述第1个n位域包括所述中间值的n个最低有效位,而所述第p个n位域包括所述中间值的n个最高有效位,并且所述编码操作还被安排来对从第所述p-1个到所述第1个n位域,从所述第p-1个n位域开始判断那个n位域中的数据值是否为负,如果为负,就通过从所述中间值减去与表示n个最高有效位的邻接的n位域对齐的逻辑1的值,产生新的中间值,使得在所述第1个n位域被处理后,所述中间值就是所述合成值。
13.权利要求9到12中任何一个的数据处理系统,其特征在于:所述编码结果的第1个n位域包括所述编码结果的n个最低有效位,而所述编码结果的第p个n位域包括所述编码结果的n个最高有效位,并且所述译码操作被安排来对从所述第1个n位域到所述第p-1个n位域,从所述第1个n位域开始,判断那个n位域中的数据是否为负,且如果为负,通过将所述编码结果加上与表示n个最高有效位的所述相邻的n位域对齐的逻辑1的值而产生新的编码结果,使得在所述第p-1个n位域被处理后,每一个n位域都包含所述p个最终结果中的一个。
14.权利要求9到13中任何一个的数据处理系统,其特征在于:所述算术运算是对一个或多个合成值的操作,每一个合成值将多个带符号的n位数据值编码,并且每一个合成值都是通过把所述编码操作用于相应的多个带符号的n位数据值而产生的。
15.权利要求9到14中任何一个的数据处理系统,其特征在于:所述算术运算包括多种运算。
16.权利要求9到15中任何一个的数据处理系统,其特征在于:所述带符号的数据值具有2进制补码格式。
17.权利要求9到16中任何一个的数据处理系统,其特征在于:所述算术运算包括一个或多个离散余弦变换(DCT)运算,每一个DCT运算都是对一个或多个合成值的运算,每一个合成值将多个带符号的n位数据值编码,并且,每一个合成值都是通过把所述编码步骤应用于所述相应的多个带符号的n位数据值而产生的。
18.一种用于数据处理系统的编码/译码管理器,所述编码/译码管理器被安排来对多个(“p”)带符号的“n位”数据值执行算术运算,所述编码/译码管理器被安排来在应用算术运算之前通过所述数据处理系统把所述多个带符号的“n位”数据值编码为合成值、产生编码结果,接着,对所述编码结果译码,产生p个最后结果,所述编码/译码管理器包括:编码器,它配置成工作时通过执行与将每一个带符号的数据值与各自的n位域对齐等效的编码操作、把每一个带符号的数据值用符号扩展为合成值的最高有效位、以及将对齐的和用符号扩展过的数据值相加而将多个带符号的n位数据值编码为包括p个n位域的所述合成值;以及
译码器,它配置成工作时通过应用与从编码结果的每一个n位域中提取数据及校正在所述编码步骤期间由将相邻的用符号扩展过的数据相加引起的任何影响等效的译码操作产生所述p个最后结果;
从而每一个最后结果代表把所述算术运算应用于相应的带符号的n位数据值的处理结果。
19.一种用于对多个(‘p’个)带符号的“n位”数据值执行算术运算的数据处理系统,它基本上与上文中参照附图所说明的一样。
20.一种操作数据处理系统以便对多个(‘p’个)带符号的n位数据值执行算术运算的方法,它基本上与上文中参照附图所说明的一样。
21.一种对多个(‘p’个)带符号的“n位”数据值执行算术运算的数据处理系统的编码/译码管理器,它基本上与上文参照附图所说明的一样。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/196,214 US6338135B1 (en) | 1998-11-20 | 1998-11-20 | Data processing system and method for performing an arithmetic operation on a plurality of signed data values |
GB9825537.5 | 1998-11-20 | ||
GB9825537A GB2343969A (en) | 1998-11-20 | 1998-11-20 | A data processing apparatus and method for performing an arithemtic operation on a plurality of signed data values |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1326566A true CN1326566A (zh) | 2001-12-12 |
Family
ID=26314703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99813426A Pending CN1326566A (zh) | 1998-11-20 | 1999-09-30 | 对多个带符号的数据值执行算术运算的数据处理系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6338135B1 (zh) |
EP (1) | EP1131699B1 (zh) |
CN (1) | CN1326566A (zh) |
GB (1) | GB2343969A (zh) |
WO (1) | WO2000031623A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377075C (zh) * | 2005-03-18 | 2008-03-26 | 威盛电子股份有限公司 | 使浮点格式实现指令级规格的设备及方法 |
CN102110283A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN101154153B (zh) * | 2006-09-26 | 2012-06-06 | 冲电气工业株式会社 | 位域操作电路 |
CN103377031A (zh) * | 2012-04-27 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60032794T2 (de) * | 1999-11-18 | 2007-10-11 | Sun Microsystems, Inc., Palo Alto | Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug |
GB2362732B (en) * | 2000-05-23 | 2004-08-04 | Advanced Risc Mach Ltd | Parallel processing of multiple data values within a data word |
GB2367650B (en) | 2000-10-04 | 2004-10-27 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
US7174047B2 (en) * | 2002-03-29 | 2007-02-06 | Matsushita Electric Industrial Co., Ltd. | Single-instruction multiple-data (SIMD)-based algorithms for processing video data |
US20180095760A1 (en) * | 2016-09-30 | 2018-04-05 | James D. Guilford | Instruction set for variable length integer coding |
US10489877B2 (en) * | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5001662A (en) | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US5408670A (en) | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
US5689592A (en) | 1993-12-22 | 1997-11-18 | Vivo Software, Inc. | Parallel processing of digital signals in a single arithmetic/logic unit |
US5848286A (en) * | 1994-03-29 | 1998-12-08 | Cray Research, Inc. | Vector word shift by vo shift count in vector supercomputer processor |
CA2147314C (en) | 1994-05-09 | 1999-09-07 | Hubert Rae Mclellan, Jr. | A configurable vector processor |
US5761469A (en) * | 1995-08-15 | 1998-06-02 | Sun Microsystems, Inc. | Method and apparatus for optimizing signed and unsigned load processing in a pipelined processor |
US5748516A (en) * | 1995-09-26 | 1998-05-05 | Advanced Micro Devices, Inc. | Floating point processing unit with forced arithmetic results |
US6009505A (en) * | 1996-12-02 | 1999-12-28 | Compaq Computer Corp. | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot |
US6006316A (en) | 1996-12-20 | 1999-12-21 | International Business Machines, Corporation | Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction |
US5978901A (en) * | 1997-08-21 | 1999-11-02 | Advanced Micro Devices, Inc. | Floating point and multimedia unit with data type reclassification capability |
US5931943A (en) * | 1997-10-21 | 1999-08-03 | Advanced Micro Devices, Inc. | Floating point NaN comparison |
US6202141B1 (en) * | 1998-06-16 | 2001-03-13 | International Business Machines Corporation | Method and apparatus for performing vector operation using separate multiplication on odd and even data elements of source vectors |
-
1998
- 1998-11-20 GB GB9825537A patent/GB2343969A/en not_active Withdrawn
- 1998-11-20 US US09/196,214 patent/US6338135B1/en not_active Expired - Lifetime
-
1999
- 1999-09-30 CN CN99813426A patent/CN1326566A/zh active Pending
- 1999-09-30 EP EP99947720A patent/EP1131699B1/en not_active Expired - Lifetime
- 1999-09-30 WO PCT/GB1999/003255 patent/WO2000031623A1/en not_active Application Discontinuation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377075C (zh) * | 2005-03-18 | 2008-03-26 | 威盛电子股份有限公司 | 使浮点格式实现指令级规格的设备及方法 |
CN101154153B (zh) * | 2006-09-26 | 2012-06-06 | 冲电气工业株式会社 | 位域操作电路 |
CN102110283A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN102110283B (zh) * | 2009-12-23 | 2014-12-10 | 英特尔公司 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
CN103377031A (zh) * | 2012-04-27 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
CN103377031B (zh) * | 2012-04-27 | 2017-09-26 | 腾讯科技(深圳)有限公司 | 一种多数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2343969A (en) | 2000-05-24 |
WO2000031623A1 (en) | 2000-06-02 |
GB9825537D0 (en) | 1999-01-13 |
US6338135B1 (en) | 2002-01-08 |
EP1131699B1 (en) | 2003-08-06 |
EP1131699A1 (en) | 2001-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1269027C (zh) | 数据并行右移合并的方法与装置 | |
CN1107905C (zh) | 在分组数据上执行乘-加运算的装置 | |
JP5611923B2 (ja) | ブース乗算方法及びシステムのための電力効率の良い符号拡張 | |
CN1801082A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
Shams et al. | NEDA: A low-power high-performance DCT architecture | |
CN1306390C (zh) | 使用带符号的数位表示的乘法器 | |
CN1577257A (zh) | 具有取整和移位的单指令多数据整数高位乘法 | |
CN1296817C (zh) | 模乘方法及装置及模乘计算单元 | |
CN1565083A (zh) | 减少位深的量子化方法 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1506807A (zh) | 用于数据的并行右移位合并的方法和装置 | |
CN1568455A (zh) | 用于灵活数据类型的方法和设备 | |
CN1702613A (zh) | 蒙哥马利模乘法器 | |
CN1193771A (zh) | 适于作由正值处理及饱和运算处理组成的修整处理的处理器 | |
CN1326566A (zh) | 对多个带符号的数据值执行算术运算的数据处理系统和方法 | |
CN1607518A (zh) | 在Montgomery乘法内利用SIMD指令 | |
US7809783B2 (en) | Booth multiplier with enhanced reduction tree circuitry | |
CN1806224A (zh) | 用于防御微分功率分析攻击的方法 | |
CN1014188B (zh) | 二~十进制加法器电路 | |
EP1984810B1 (en) | A booth multiplier with enhanced reduction tree circuitry | |
CN1313918C (zh) | 在有限域中用于基转换的方法和设备 | |
CN1601913A (zh) | 平行化循环冗余码计算方法及系统 | |
CN1855149A (zh) | 高精度的无乘法器的数字余弦变换电路及其变换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
C10 | Entry into substantive examination | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1073244 Country of ref document: HK |