CN100461093C - 在分组数据上执行乘-加运算的方法、处理器、设备和系统 - Google Patents
在分组数据上执行乘-加运算的方法、处理器、设备和系统 Download PDFInfo
- Publication number
- CN100461093C CN100461093C CNB2006100025714A CN200610002571A CN100461093C CN 100461093 C CN100461093 C CN 100461093C CN B2006100025714 A CNB2006100025714 A CN B2006100025714A CN 200610002571 A CN200610002571 A CN 200610002571A CN 100461093 C CN100461093 C CN 100461093C
- Authority
- CN
- China
- Prior art keywords
- data
- data element
- integrated
- result
- integrated 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.)
- Expired - Lifetime
Links
- 238000003860 storage Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims description 33
- 241001269238 Data Species 0.000 claims description 10
- 238000007792 addition Methods 0.000 description 21
- 230000008901 benefit Effects 0.000 description 21
- 230000000875 corresponding effect Effects 0.000 description 18
- 230000008878 coupling Effects 0.000 description 16
- 238000010168 coupling process Methods 0.000 description 16
- 238000005859 coupling reaction Methods 0.000 description 16
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 15
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 15
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000009467 reduction Effects 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 229920006395 saturated elastomer Polymers 0.000 description 4
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001737 promoting effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 231100000989 no adverse effect Toxicity 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/4806—Computations with complex numbers
- G06F7/4812—Complex multiplication
-
- 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/52—Multiplying; Dividing
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
-
- 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
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Discrete Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Advance Control (AREA)
Abstract
一种处理器具有分别含有第一与第二分组数据的第一与第二存储器。各分组数据包含第一、第二、第三与第四数据元素。一个乘-加电路耦合在第一与第二存储区上。乘-加电路包含第一(810)、第二(811)、第三(812)及第四乘法器(813),其中各乘法器接收一组对应的所述数据元素。乘-加电路还包含耦合在第一与第二乘法器(810,811)上的第一加法器(850)及耦合在第三与第四乘法器(812,813)上的第二加法器(851)。第三存储区(871)耦合在加法器(850,851)上。第三存储区(871)包含第一与第二字段分别用于保存第一与第二加法器(850,851)的输出,作为第三分组数据的第一与第二数据元素。
Description
本申请是申请人英特尔公司于1996年8月7日提交的申请号为03120299.3、发明名称为“在分组数据上执行乘-加运算的装置”的中国专利申请的分案申请.
技术领域
具体地,本发明涉及计算机系统领域.更具体地,本发明涉及分组数据操作领域.
背景技术
在典型的计算机系统中,处理器是实现为使用产生一个结果的指令在用大量的位(如64)表示的值上操作的.例如,加法指令的执行将第一个64位值与第二个64位值相加并作为第三个64位值存储其结果。然而,多媒体应用(诸如用于计算机支持的协作(CSC-电话会议与混合媒体数据处理的综合)的应用、2D/3D图形、图象处理、视频压缩/解压、识别算法及音频处理)要求处理大量可以用少数位表示的数据。例如,图形数据通常需要8或16位及声音数据通常需要8或16位.这些多媒体应用的每一个需要一种或多种算法,每种需要若干操作.例如,一种算法可能需要加法、比较及移位操作.
为了增进多媒体应用的效率(以及具有相同特征的其它应用的效率),处理器可提供分组数据格式.分组数据格式便是将通常用来表示一个值的位分解成若干固定长度的数据元素,每一个表示一个单独的值.例如,可将64位寄存器分成两个32位元素,各表示一个单独的32位值。此外,这些处理器提供用于响应单一的指令并行地分开处理这些分组数据类型中的各元素的指令.例如,分组加法指令将来自第一分组数据及第二分组数据的对应数据元素相加.从而,如果多媒体算法需要包含必须在大量数据元素上执行的五个操作的循环,组装这些数据并用分组数据指令并行执行这些操作是所希望的.以这一方式,这些处理器便能更高效地处理多媒体应用.
然而,如果操作循环中包含处理器不能在分组数据上执行的操作(即,处理器缺乏适当的指令),则必须分解该数据以便执行这一操作.例如,如果多媒体算法需要加法运算而不能使用上述分组加法指令,则程序员必须分解第一分组数据及第二分组数据(即分开第一分组数据及第二分组数据所包含的元素),单个地将分开的元素相加,然后将结果组装成分组结果供进一步分组处理。执行这种组装与分解所需的处理时间往往抵消提供分组数据格式的性能优点。因此,希望在计算机系统中加入提供典型多媒体算法所有所需要的操作的分组数据指令集。然而由于现今通用处理器上有限的芯片面积,可以增加的指令数目是有限的。因此,希望发明出既提供通用性(即可用在多种多样多媒体算法中的指令)又具有极大性能优点的指令。
提供在多媒体算法中使用的操作的一种技术为将一个独立的数字信号处理器(DSP)耦合在现有的通用处理器(如加州Santa Clara的Intel公司制造的486)上。通用处理器将能用分组数据执行的任务(如视频处理)分配给DSP。
一种DSP包含将两个值相乘的结果加到累加值上的乘累加指令(见Kawakami、Yuichi等人的“用于话音频带应用的单片数字信号处理器”,IEEE国际固态电路会议,1980,pp.40-41)。下面表1中示出这一DSP的乘累加运算的一个示例,其中指令是在分别作为Source1与Source2存取的数据值A1与B1上执行的。
表1
这一指令的一个限制是其有限的效率--即它只在两个值及一个累计值上运算。例如,为了相乘与累计两组两个值需要串行执行下述两条指令:1)乘累加来自第一组的第一值、来自第二组的第一值及为0的一个累计值以生成中间累计值;2)乘累加来自第一组的第二值、来自第二组的第二值及中间累计值以生成结果。
另一DSP包含在两组两个值及一个累计值上运算的乘累加指令(见“带并行乘法器的数字信号处理器”,专利号4,771,470,这里称作“Ando等人”对比文件)。表2中示出用于这一DSP的乘累加指令的一个示例,其中该指令在分别作为Source1-4存取的数据值A1、A2、B1及B2上执行。
表2
采用这一技术,在一条指令中相乘两组两个值然后加到一个累计值上。
这一乘累加指令具有有限的通用性,因为它总是加在累加值上。结果,难于将该指令用在乘累加以外的运算上。例如,复数乘法是在多媒体应用中经常使用的。两个复数(诸如,r1i1与r2i2)的乘法是按照下述等式执行的:
实部=r1·r2-i1·i2
虚部=r1·i2+r2·i1
这一DSP不能用一条乘累加指令执行将两个复数相乘的功能。
当这一计算的结果在随后的乘法运算而不是在累加中需要时,这一乘累加指令的局限性可以更清楚地看出。例如,如果实部是用该DSP计算的,则为了正确地计算结果必须将累加值初始化成零。此后为了计算虚部还必须将累加值重新初始化成零。为了在得出的复数与第三复数(诸如r3,i3)上执行另一次复数乘法,必须将得出的复数再定标及存储在可接受的存储格式中并且必须再次将累加值初始化成零。然后才能执行上述复数乘法。在这些运算的各个中,专用于累加值的ALU是多余的硬件并需要额外的指令来重新初始化这一累加值。否则这些额外指令是不需要的。
这一技术的进一步限制是数据必须通过昂贵的多端口存储器存取。这是因为乘法器是直接与数据存储器相连的。因此可利用的并行性量被互连的成本及这一互连不从指令上断开这一事实限制在很小的数量上。
Ando等人的对比文件还描述了对这一昂贵的互连的一种替代是为各个要相乘的随后的数据对引入延时。这一解决方案消除了前面表1中所示的解决方案所提供的任何性能优点。
此外,多端口存储器或对存储器的流水线存取的想法要求使用多个地址。每一数据一个地址的明确使用清楚地显示在这一技术中不采用分组数据这一关键性概念。
发明内容
按照本发明的一个方面,一种通过执行指令来产生结果数据元素的方法,它包括:接收该指令所指定的第一分组数据和该指令所指定的第二分组数据,各分组数据包括数据元素,第一分组数据中的各个数据元素在第二分组数据中有对应的数据元素;把第一分组数据和第二分组数据中对应的数据元素相乘,以产生对应的中间数据元素,这些中间数据元素被分成若干组;产生多个结果数据元素,所述多个结果数据元素中的第一个包括所述若干组的第一组中的中间数据元素的和,所述这多个结果数据元素中的第二个包括所述若干组的第二组中的中间数据元素的和;以及不用对所述多个结果数据元素求和而完成所述指令的执行。
按照本发明的另一方面,一种通过解码并执行指令来产生分组数据结果的处理器,它包括:解码器,用来接收并解码指定第一分组数据和第二分组数据的存储单元的指令,第一分组数据具有第一多个数据元素,而第二分组数据具有第二多个数据元素,第一分组数据的各数据元素对应于第二分组数据的不同的数据元素;以及与所述解码器通信的执行单元,用于响应所述解码器对所述指令的解码而产生所述分组数据结果,所述分组数据结果具有多个结果数据元素,所述结果数据元素的各个包括第一和第二分组数据中对应的数据元素的乘积之和。
按照本发明的又一方面,一种用来输出分组数据的设备,它包括:第一存储区,可操作为用于在该第一存储区中存储至少包含A1、A2、A3和A4元素的第一分组数据;第二存储区,可操作为用于在该区中存储至少包含B1、B2、B3和B4元素的第二分组数据;第一乘法器,与所述第一存储区连接以接收所述A1,并与所述第二存储区连接以接收所述B1;第二乘法器,与所述第一存储区连接以接收所述A2,并与所述第二存储区连接以接收所述B2;第三乘法器,与所述第一存储区连接以接收所述A3,并与所述第二存储区连接以接收所述B3;第四乘法器,与所述第一存储区连接以接收所述A4,并与所述第二存储区连接以接收所述B4;第一加法器,与所述第一乘法器和所述第二乘法器连接;第二加法器,与所述第三乘法器和所述第四乘法器连接;以及第三存储区,与所述第一加法器和所述第二加法器连接,所述第三存储区至少具有第一字段和第二字段,所述第一字段将所述第一加法器的输出存储为第三分组数据的第一数据元素,所述第二字段将所述第二加法器的输出存储为所述第三分组数据的第二数据元素。
按照本发明的再一个方面,一种将音频数据处理为分组数据的系统,该系统包括:多个存储区,用来存储具有第一多个N比特数据元素的第一分组数据和具有第二多个N比特数据元素的第二分组数据,第一分组数据中的各个数据元素对应于第二分组数据中不同的数据元素;与所述存储区连接的电路,该电路响应一个指令而产生一个分组数据结果,该指令指定第一和第二分组数据在所述存储器中的存储单元,所述分组数据结果具有多个2N比特结果数据元素,所述结果数据元素的各个包括第一和第二分组数据中对应的数据元素的乘积之和;总线,被连接成发送数据到所述电路和从所述电路发送数据,并发送数据到所述存储器和从所述存储器发送数据;以及与所述存储区连接的音频装置,从包括音频数字装置、语音记录装置、语音播放装置、麦克风、数模转换器和喇叭的组中选择音频装置。
附图说明
图1示出具有本发明的一个实施例的计算机系统。
图2示出按照本发明的一个实施例的处理器的寄存器文件。
图3为展示按照本发明的一个实施例的处理器处理数据所使用的总步骤的流程图。
图4示出按照本发明的一个实施例的分组数据类型。
图5a示出按照本发明的一个实施例的寄存器分组数据表示。
图5b示出按照本发明的一个实施例的寄存器分组数据表示。
图5c示出按照本发明的一个实施例的寄存器分组数据表示。
图6a示出按照本发明的一个实施例的用于指示分组数据的使用的控制信号格式。
图6b示出按照本发明的一个实施例的用于指示分组数据的使用的第二控制信号格式。
图7为展示按照本发明的一个实施例在分组数据上执行乘-加运算的步骤的流程图。
图8示出按照本发明的一个实施例在分组数据上执行乘-加运算的电路。
图9a-9e示出按照本发明一个实施例执行部分乘积求和与归约的Wallace树。
图10a-10f示出本发明的一个实施例的实现图9a-9e的Wallace树的电路的一个实施例。
图11示出按照本发明的一个实施例在分组数据上执行乘-加运算的电路。
具体实施方式
在以下描述中,为了提供对本发明的彻底理解,陈述了许多特定细节。然而,应理解本发明可不用这些特定细节实现。在其它实例中,为了不冲淡本发明,公知的电路、结构与技术未曾详细示出。
定义
为了提供理解本发明的实施例的描述的基础,提供了以下定义。
位X至位Y:
定义二进制数的子字段。例如,字节001110102(以基2示出)的位5至位0表示子字段1110102。二进制数后面的“2”表示基2。因此,10002等于810,而F16等于1510。
Rx:为一寄存器。寄存器是能够存储与提供数据的任何器件。寄存器的进一步功能描述如下。寄存器不一定非包含在与处理器同一芯片上或同一封装中不可。
SRC1、SRC2与DEST:
标识存储器区(诸如存储区地址、寄存器等)。
Source1-i及Result1-i:
表示数据。
概述
本申请描述在分组数据上执行乘-加运算的处理器中的装置。在一个实施例中,使用一个乘-加指令执行两个乘-加运算,如下面表3a与3b中所示--表3a示出所公开的乘-加运算的简化表示,而表3b示出所公开的乘-加运算的位级示例。
表3a
表3b
从而,所描述的乘-加运算的实施例将Source1与Source2的对应16位数据元素相乘生成四个32位中间结果。将这些32位中间结果成对求和产生装进一个分组结果的它们各自的元素中的两个32位结果。如稍后进一步描述的,替代实施例可改变数据元素、中间结果及结果中的位数。此外,替代实施例可改变所使用的数据元素的数目、生成的中间结果的数目及得出的分组数据中的数据元素的数目。
计算机系统
图1示出按照本发明的一个实施例的示范性计算机系统100。计算机系统100包含用于传递信息的总线101或其它通信硬件与软件,以及用于处理信息的与总线101耦合的处理器109。处理器109表示包含CISC或RISC类型体系结构在内的任何类型体系结构的中央处理单元。计算机系统100还包括耦合在总线101上的随机存取存储器(RAM)或其它动态存储设备(称作主存储器104),用于存储信息及要由处理器109执行的指令。在处理器109的指令执行期间,主存储器104也可用于存储临时变量或其它中间信息。计算机系统100还包含耦合在总线101上的只读存储器(ROM)106与/或其它静态存储设备,用于存储静态信息及处理器109的指令。数据存储设备107耦合在总线101上用于存储信息及指令。
图1还示出处理器109包含执行单元130、乘-加单元145、寄存器文件150、高速缓冲存储器160、解码器165及内部总线170。当然,处理器109包含对理解本发明不必要的附加电路。
执行单元130用于执行处理器109接收的指令。除了识别通常实现在通用处理器中的指令以外,执行单元130还识别在分组数据格式上执行操作的分组指令集140中的指令142。分组指令集140中包含支持乘-加运算的指令。此外,分组指令集140也可包含支持组装操作、分解操作、分组加法运算、分组减法运算、分组乘法运算、分组移位操作、分组比较操作、个数计数操作及一组分组逻辑运算(包含分组“与”、分组“与非”(ANDNOT)、分组“或”、及分组“异或”)的指令,如在名称为“在分组数据上操作的指令集”的申请中所描述的。执行单元130还包含执行乘-加运算的乘-加单元145。
执行单元130用内部总线170耦合在寄存器文件150上。寄存器文件150表示用于存储包含数据在内的信息的处理器109上的存储区。执行单元130还耦合在高速缓冲存储器160及解码器165上。高速缓冲存储器160用来高速缓冲存储来自诸如主存储器104的数据与/或控制信号。解码器165用来将处理器109接收的指令解码成控制信号与/或微代码入口点。执行单元130响应这些控制信号与/或微代码入口点,执行适当的操作。例如,如果接收到加法指令,解码器165令执行单元130执行所要求的加法。可采用任何数目的不同机制(诸如查找表、硬件实现、PLA等)实现解码器165。从而,虽然解码器与执行单元的各种指令的执行是用一系列if/then语句表示的,应理解指令的执行并不需要一系列这些if/then语句的处理。而是将逻辑地执行这一if/then处理的任何机制认为是在本发明的范围之内。
图1附加示出诸如磁盘或光盘及其对应的盘驱动器的数据存储设备107可耦合在计算机系统100上。计算机系统100也能通过总线101耦合在用于向计算机用户显示信息的显示设备121上。显示设备121能包含帧缓冲器、专用图形描绘设备、阴极射线管(CRT)与/或平板显示器。字母数字输入设备122(包含字母数字及其它键)通常耦合在总线101上,用于传递信息与命令选择给处理器109。另一种用户输入设备为诸如鼠标器、轨迹球、笔、触摸屏或光标方向键等用于传递方向信息与命令选择给处理器109及用于控制光标在显示设备121上的运动的光标控制设备123。这一输入设备通常具有两个轴上的两个自由度(第一轴(如x)及第二轴(如y)),它允许设备指定平面上的一个位置。然而本发明不限于只有两个自由度的输入设备。
另一个可耦合在总线101上的设备为硬拷贝设备124,它可在诸如纸、胶片等介质或类似种类的介质上打印指令、数据或其它信息。此外,计算机系统100可耦合在用于声音录制与/或播放的设备125上,诸如耦合在用于录制信息的麦克风上的音频数字化器。此外,该设备可包含耦合在数模(D/A)转换器上用于播放数字化声音的扬声器。
此外,计算机系统100也可以是计算机网(如LAN)中的终端。这时计算机系统100便是计算机网的一个计算机子系统。计算机系统100可选地包含视频数字化设备126。视频数字化设备126可用来捕捉能传输给计算机网上其它计算机的视频图象。
在一个实施例中,处理器109附加支持与加州Santa Clara的Intel公司制造的现有处理器(诸如处理器)所用的X86指令集兼容的指令集。从而,在一个实施例中,处理器109支持所有IATM-Intel体系结构支持的操作,其由Intel公司定义(见可从加州Santa Clara的Intel购得的“微处理器”,Intel资料卷1与卷2,1992与1993)。结果,除了本发明的操作外,处理器109也能支持现有的X86操作。虽然本发明描述为加入到基于X86的指令集中的,但替代实施例可将本发明包含进其它指令集中。例如,可将本发明包含进使用新指令集的64位处理器中。
图2示出按照本发明的一个实施例的处理器的寄存器文件。寄存器文件150用来存储包含控制/状态信息、整数数据、浮点数据及分组数据在内的信息。在图2中所示的实施例中,寄存器文件150包含整数寄存器201、寄存器209、状态寄存器208及指令指针寄存器211。状态寄存器208指示处理器109的状态。指令指针寄存器211存储下一条要执行的指令的地址。整数寄存器201、寄存器209、状态寄存器209及指令指针寄存器211全都耦合在内部总线170上。任何附加寄存器也可耦合在内部总线170上。
在一个实施例中,寄存器209既用于分组数据也用于浮点数据。在一个这种实施例中,处理器109在任何给定时刻必须将寄存器209作为栈定位的浮点寄存器或非栈定位的分组数据寄存器之一对待。在这一实施例中,包含一个机制来允许处理器109在作为栈定位的浮点寄存器及非栈定位的分组数据寄存器的寄存器209上的操作之间切换。在另一个这种实施例中,处理器109可同时在作为非栈定位的浮点及分组数据寄存器的寄存器209上操作。作为另一示例,在另一实施例中,相同的这些寄存器可用来存储整数数据。
当然,可实现替代实施例来包含或多或少的寄存器组。例如,替代实施例可包含用来存储浮点数据的单独浮点寄存器组。作为另一示例,替代实施例可包含第一组寄存器,其分别用于存储控制/状态信息,及第二组寄存器,其分别能存储整数、浮点及分组数据。为了清楚起见,一个实施例的寄存器不应在意义上限制在特定类型的电路上。而是一个实施例的寄存器只须能存储及提供数据及执行这里描述的功能。
可将各种寄存器组(诸如整数寄存器201、寄存器209)实现成包含不同数目的寄存器与/或不同大小的寄存器。例如,在一个实施例中,整数寄存器201实现成存储32位,而寄存器209实现成存储80位(全部80位用来存储浮点数据,而只将64位用于分组数据)。此外,寄存器209包含8个寄存器,R0 212a至R7 212h。R1 212b、R2 212c及R3 212c为寄存器209中的各个寄存器的例子。可将寄存器209中的一个寄存器的32位传送到整数寄存器201中的一个整数寄存器中。类似地,可将整数寄存器中的值传送到寄存器209中的一个寄存器的32位中。在另一实施例中,整数寄存器201各包含64位,并且64位数据可在整数寄存器201与寄存器209之间传送。
图3为展示按照本发明的一个实施例的处理器处理数据的概括性步骤的流程图。即图3示出处理器109在分组数据上执行操作、在非分组数据上执行操作或执行某些其它操作时遵循的步骤。例如,这些操作中包含加载操作,用来自高速缓冲存储器160、主存储器104、只读存储器(ROM)106或数据存储设备107的数据加载寄存器文件150中的寄存器。
在步骤301,解码器165接收来自高速缓冲存储器160或总线101之一的控制信号。解码器165解码该控制信号来确定要执行的操作。
在步骤302,解码器165存取寄存器文件150或存储器中的单元。寄存器文件150中的寄存器或存储器中的存储单元是根据控制信号中指定的寄存器地址存取的。例如,对于分组数据上的操作,控制信号能包含SRC1、SRC2及DEST寄存器地址,SRC1是第一源寄存器的地址,SRC2是第二源寄存器的地址。在一些情况中,由于不是所有操作都需要两个源地址,SRC2地址是选用的。如果一种操作不需要SRC2地址,则只使用SRC1地址。DEST是存储结果数据的目的地寄存器的地址。在一个实施例中,SRC1或SRC2也用作DEST。相对于图6a与6b更全面地描述SRC1、SRC2及DEST。存储在对应寄存器中的数据分别称作Source1、Source2及Result。这些数据的各个的长度为64位。
在本发明的另一实施例中,SRC1、SRC2与DEST中任何一个或全部可定义处理器109可寻址的存储空间中的一个存储单元。例如,SRC1可标识主存储器104中的一个存储单元,而SRC2标识整数寄存器201中第一寄存器及DEST则标识寄存器209中第二寄存器。这里为了简化描述,将相对于存取寄存器文件150描述本发明。然而,这些存取也可对存储器进行。
在步骤303,启动执行单元130在存取的数据上执行操作。在步骤304,根据控制信号的要求,将结果存储回寄存器文件150中。
数据与存储格式
图4示出按照本发明的一个实施例的分组数据类型。示出了三种分组数据格式:分组字节401、分组字402及分组双字403。在本发明的一个实施例中,分组字节为包含8个数据元素的64位长。各数据元素为一个字节长。通常,数据元素为与相同长度的其它数据元素一起存储在单个寄存器(或存储单元)中的一个数据段。在本发明的一个实施例中,存储在一个寄存器中的数据元素数目为64位除以一个数据元素的位长度。
分组字402为64位长并包含4个字402数据元素。各字402数据元素包含16位信息。
分组双字403为64位长并包含两个双字403数据元素。各双字403数据元素包含32位信息。
图5a至5c示出按照本发明的一个实施例的寄存器分组数据存储表示。无符号分组字节寄存器表示510示出一个无符号分组字节401在寄存器R0 212a至R7 212h之一中的存储。各字节数据元素的信息存储在字节0的位7至位0中、字节1的位15至位8中、字节2的位23至位16中、字节3的位31至位24中、字节4的位39至位32中、字节5的位47至位40中、字节6的位55至位48中及字节7的位63至位56中。因此可以使用该寄存器中的所有可用位。这一存储布置提高了处理器的存储效率。同样,使用所存取的8个数据元素,可以同时在8个数据元素上执行一种操作。带符号分组字节寄存器表示511示出带符号分组字节401的存储。注意每一个字节数据元素的第8位为符号指示位。
无符号分组字寄存器表示512示出字3至字0是如何存储在寄存器209的一个寄存器中的。位15至位0包含字0的数据元素信息,位31至位16包含数据元素字1的信息,位47至位32包含数据元素字2的信息及位63至位48包含数据元素字3的信息。带符号分组字寄存器表示513类似于无符号分组字寄存器表示512。注意各字数据元素的第16位为符号指示位。
无符号分组双字寄存器表示514示出寄存器209如何存储两个双字数据元素。双字0存储在寄存器的位31至位0中。双字1存储在寄存器的位63至位32中。带符号分组双字寄存器表示515类似于无符号分组双字寄存器表示514。注意必要的符号位为双字数据元素的第32位。
如上所述,寄存器209既可用于分组数据也可用于浮点数据。在本发明的这一实施例中,可能需要单个编程处理器109来跟踪诸如R0 212a等被寻址的寄存器正存储分组数据还是浮点数据。在一个替代实施例中,处理器109可跟踪存储在寄存器209的各个寄存器中的数据的类型。如果例如试图在浮点数据上进行分组加法运算时,这一替代实施例便能产生出错。
控制信号格式
下面描述处理器109用来处理分组数据的控制信号格式的一个实施例。在本发明的一个实施例中,控制信号表示为32位。解码器165可从总线101接收控制信号。在另一实施例中,解码器165也能从高速缓冲存储器160接收这些控制信号。
图6a示出用于指示使用按照本发明的一个实施例的分组数据的控制信号格式。操作字段OP 601,位31至位26,提供关于处理器109要执行的操作的信息,例如,分组加法等。SRC1 602,位25至20,提供寄存器209中的寄存器的源寄存器地址。这一源寄存器包含要用在控制信号的执行中的第一分组数据Source1。类似地,SRC2 603,位19至位14,包含寄存器209中的寄存器地址。这一第二源寄存器包括要在操作的执行期间使用的分组数据Source2。DEST 605,位5至位0,包含寄存器209中的寄存器的地址。这一目的地寄存器将存储分组数据操作的结果分组数据Result。
控制位SZ 601,位12与位13,指示第一与第二分组数据源寄存器中的数据元素的长度。如果SZ 610等于012,则分组数据格式化成分组字节401。如果SZ 601等于102,则分组数据格式化成分组字402。SZ 610等于002或112是保留的,然而,在另一实施例中,可用这些值之一来指示分组双字403。
控制位T 611,位11,指示操作是否要以饱和模式进行。如果T 611等于1,则执行饱和操作。如果T 611等于0,则执行非饱和操作。稍后将描述饱和操作。
控制位S 612,位10,指示带符号操作的使用。如果S 612等于1,则执行带符号操作。如果S 612等于0,则执行无符号操作。
图6b示出按照本发明的一个实施例用于指示使用分组数据的第二控制信号格式。这一格式对应于可从Intel公司文献销售处(邮政信箱7641,Mt.prospect IL.60056-7641)购得的“Pentium处理器系列用户手册”中描述的通用整数操作码格式。注意,OP 601、SZ610、T 611及S 612全部组合进一个大字段中。对于一些控制信号,位3至5为SRC1602。在一个实施例中,其中存在SRC1 602地址,则位3至5也对应于DEST 605。在一个替代实施例中,其中存在SRC2 603地址,则位0至2也对应于DEST605。对于其它控制信号,象分组移位立即操作,位3至5表示操作码字段的扩展。在一个实施例中,这一扩展允许程序员用控制信号包含一个立即值,诸如移位计数值。在一个实施例中,立即值在控制信号后面。这在“Pentium处理器系列用户手册”附录F,F-1至F-3页中更详细地描述。位0至2表示SRC2 603。这一通用格式允许寄存器对寄存器、存储器对寄存器、寄存器被存储器、寄存器被寄存器、寄存器被立即数、寄存器对存储器的寻址。在一个实施例中,这一通用格式也能支持整数寄存器对寄存器及寄存器对整数寄存器的寻址。
饱和/非饱和的描述
如上所述,T 611指示操作是否可选择饱和。如果允许了饱和的操作结果上溢或下溢出数据的范围时,其结果将被箝位。箝位意味着如果结果超出范围的最大或最小值时,便将结果设定在最大或最小值上。在下溢的情况中,饱和将结果箝位到范围的最低值上,而在上溢的情况中,则到最高值上。表4中示出各数据格式的允许范围。
表4
数据格式 | 最小值 | 最大值 |
无符号字节 | 0 | 255 |
带符号字节 | -128 | 127 |
无符号字 | 0 | 65535 |
带符号字 | -32768 | 32767 |
无符号双字 | 0 | 2<sup>64</sup>-1 |
带符号双字 | -2<sup>63</sup> | 2<sup>63</sup>-1 |
如上所述,T 611指示正在执行饱和操作。因此,使用无符号字节数据格式,如果操作结果=258且允许饱和,则将结果存储到操作的目的地寄存器中之前将其箝位到255。类似地,如果操作结果=-32999且处理器109使用带符号字数据格式且允许饱和,则在将结果存储到操作的目的地寄存器中之前将其箝位到-32768上。
乘-加运算
在本发明的一个实施例中,SRC1寄存器包含分组数据(Source1),SRC2寄存器包含分组数据(Source2),而DEST寄存器将包含在Source1与Souce2上执行乘-加运算的结果(Result)。在乘-加运算的第一步中,将Source1的各数据元素独立地乘以Source2的对应数据元素以生成一组对应的中间结果。成对相加这些中间结果以生成乘-加运算的Result。
在本发明的一个实施例中,乘-加运算在带符号分组数据上操作并截位结果以防止任何上溢。此外,该运算在分组字数据上操作而Result为分组双字。然而,替代实施例能支持其它分组数据类型的运算。
图7为展示按照本发明的一个实施例在分组数据上执行乘-加运算的步骤的流程图。
在步骤701,解码器165解码处理器109接收的控制信号。从而,解码器165解码出:乘-加运算的操作码。
在步骤702,解码器165通过内部总线170存取寄存器文件150中给出SRC1 602与SRC2 603地址的寄存器209。寄存器209向执行单元130提供存储在SRC1寄存器中的分组数据(Source1)及存储在SRC2 603寄存器中的分组数据(Source2)。即,寄存器209通过内部总线170将分组数据传递给执行单元130。
在步骤703,解码器165启动执行单元130的乘-加单元145去执行指令。在步骤714中,执行下述操作。将Source1位15至0乘以Source2位15至0生成第一个32位中间结果(中间Result1)。将Source1位31至16乘以Source2位31至16生成第二个32位中间结果(中间Result2)。将Source1位47至32乘以Source2位47至32生成第三个32位中间结果(中间Result3)。将Source1位63至48乘以Source2位63至48生成第四个32位中间结果(中间Result4)。将中间Result1与中间Result2相加生成Result位31至0,并将中间Result3与中间Result4相加生成Result位63至32。
不同的实施例可串行、并行或以串行与并行运算的一定组合执行乘与加。
在步骤720,将Result存储在DEST寄存器中。
分组数据乘-加电路
在一个实施例中,能在与非组装数据上的单一乘法相同的时钟周期中在多个数据元素上执行乘-加运算。为了达到在相同的时钟周期数中的执行,采用了并行性。即,同时指示寄存器在数据元素上执行乘-加运算。
简言之,图8示出按照本发明的一个实施例在分组数据上执行乘-加运算的电路。运算控制800处理乘-加指令的控制信号。运算控制在使能880上输出信号来控制分组乘-加法器801。
分组乘-加法器801具有下述输出:Source1[63:0]831、Source2[63:0]833及使能880。分组乘-加法器801包含4个16×16乘法器电路:16×16乘法器A 810、16×16乘法器B 811、16×16乘法器C812及16×16乘法器D 813。16×16乘法器A 810具有输入Source1[15:0]及Source2[15:0]。16×16乘法器B 811具有输入Source1[31:16]及Source2[31:16]。16×16乘法器C 812具有输入Source1[47:32]及Source2[47:32]。16×16乘法器D 813具有输入Source1[63:48]及Source2[63:48]。加法器850接收16×16乘法器A 810及16×16乘法器B 811生成的32位中间结果,同时加法器851接收16×16乘法器C 812及16×16乘法器D 813生成的32位中间结果。
加法器850与851将它们各自的32位输入相加。加法器850的输出(即Result的Result位31至0)及加法器851的输出(即Result的位63至32)组合成64位Result并传递给结果寄存器871。
在一个实施例中,各加法器851与加法器850由带适当传播延时的32位加法器构成。然而替代实施例可用任何一种方式实现加法器851与加法器850。
使用参照表1所描述的先有技术DSP处理器执行这一乘-加指令的等效操作需要一条指令来清零累加值及四条乘累加指令。使用参照表2描述的先有技术DSP处理器执行这一乘-加指令的等效操作需要一条指令来清零累加值及2条累加指令。
在本发明的乘-加单元145的一个实施例中,在本发明中用于分组乘法运算的各16位乘法器是用2位Booth算法实现的,乘法器中的Booth算法的主要目的是减少要相加的部分乘积的数目。较少的部分乘积最终减少乘法器的硬件与面积需求。下面表5描述在其中生成16个部分乘积的普通16位乘法过程。取决于乘数的相应位是“1”还是“0”,将各部分乘积向左移位一位并包含全“0”项或被乘数的完全复制。通过逐片相加全体16个部分乘积生成32位结果。
表5
另一方面,下面表6中所示的2位Booth乘法器的操作不同。在这一情况中总共有8个部分乘积及每个部分乘积为17位长。每一部分乘积具有其本身的控制各自的部分乘积内容的Booth编码器。在替代实施例中,也能使用其它Booth编码器方案来选择部分乘积。
典型的2位Booth编码器具有五个输出,它们用于0、加1、加2、减1及减2运算。其真值表在下面的表6中给出。
表6
如表6中所述,yk+1、yk及yk-1是递降的位次序的相邻乘数位。
下面的表7进一步描述按照Booth编码器输出的部分乘积的形式。
表7
不是采用符号延伸部分乘积,而是采用符号生成法来减少部分乘积缩短所需的进位同一地址(Carry Same Address(CSA))的数目。表8示出了符号生成方法。将部分乘积的符号位的补码预挂在部分乘积上。然后将两个1位预挂在符号位的补码上。
表8
下面的表9示出用在使用2位Booth编码器及符号生成法来生成8个部分乘积的本发明的一个实施例中的16位乘法过程。
表9
在一个实施例中,各Booth编码器包含3个相邻的乘数位(y0为乘数位的最低位而y15为最高位)。部分乘积的形式是用连接在特定Booth编码器上的17个选择器及一个求反电路定义的。选择器的数据位中包含两个相邻的乘数位、它们的补码及Vcc(对于0运算)。然后选中的输出通过通常称作Wallace树的部分乘积归约树的迷宫。
一旦全部选择了部分乘积,便开始部分乘积的求和。Wallace树是用全加法器及半加法器构成的。图9a-9e示出本发明的一个实施例的执行部分乘积求和与归约的Wallace树,如用乘-加单元145中的4个16位乘法器的每一个所实现的。如上所示,将8个部分乘积归约成6个部分乘积,然后成4个部分乘积,然后成3个部分乘积,然后最终归约成两个部分乘积。
更具体地,如图9a-9e中所示,各行中的下标数字表示部分乘积的位(ase15,as15,a14-a0)。各行表示一个独立的部分乘积。negn-nega表示各部分乘积的2的补码的+1部分。结果,如果乘数的某一Booth编码的位是负的,显示在下一行中的该对应部分乘积的“neg”位为1。
此外,如图9a-9e中进一步示出的,S<位置><加法器号>表示进位保留加法器的和部分。<加法器号>指示和属于哪一行加法器。加法器是从图9a-9e的顶到底编号的。<位置>指示这一加法器运算的位位置(0...31)。例如,S42为对应于位位置4的进位保留加法器2的和。
C<位置><级>表示保留进位加法器的进位部分。<级>指示该进位的各加法器行。<位置>指示这一加法器运算的位位置(0...31)。保留进位加法器可以是全加法器或半加法器。全加法器将3位相加。半加法器相加两位。
图9a-9e进一步示出上述符号生成方法的实现。如所示,符号生成法在第一部分乘积行上方的行中的位位置16上产生一个1。在最后部分乘积行中,如果最高Booth编码数是负的,便在下面行中产生一个1,因为该部分乘积是2的补码。这一过程通常需要10行而不是8行。乘法需要的行越多,越需要更多的硬件来将部分乘积减少到一个进位传播加法器能相加的两个数。
然而,二进制乘法是通过加法执行的。将两个数字相加时,数字的次序是无关的。不管哪一个数字作为第一数字结果都一样。这一原理贯穿整个Wallace树以减少所需的进位保留数目。具体地,在一个实施例中,将图9a中第一行的位位置16中的1向下移动到图9的最后一行中的位位置16上,它也包含negh。结果,由于使用了较少的行而进行归约所需的硬件也较少。
图9b示出第一级归约的结果。框指示哪些位在保留进位加法器中运算。来回移动若干位来符合6行中的所有位。例如,将位dse15移至第一行。将cse15移至第五行。然而,一位只能在同一位位置中上下移动。从图9b至图9c行数减少到4。从图9c到图9e行数减少到3。最后,又一行保留进位加法器将行数减少到2,如图9e中所示。
图10a-10f示出电路的一个实施例,该电路由全加法器与半加法器构成,实现图9a-9e中所示的Wallace树图。
图11示出该单元的方框图的一个实施例。其中示出了两个完全相同的16位乘法器。这些乘法器能在0-31位或32-63位上执行乘-加运算。还提供了另外两个16位乘法器,它们在结构上与所示的乘法器十分相似,用来完成乘-加单元145。如所示,各乘法器在1.5个时钟周期中完成一次16位乘法得出2个部分乘积。在后半个时钟周期中,即第34时钟的低相位,由4:2CSA1130将乘法器1110与1120生成的4个部分乘积再度相加。控制信号1150选择乘法器1110的部分乘积或在4:2 CSA1130的输出上生成的部分乘积(Sumres与coutres)。将选中的数据与乘法器1120的部分乘积一起锁存。在第35个时钟的高相位上,CPA1140通过相加得出的部分乘积生成一个32位结果。32位和的最后分割是由fub外部的多路锁存器完成的并将所选择的数据在第35时钟周期的低相位写回。
在一个实施例中,乘-加单元145以3个等待时间-1个吞托量规则操作。除非另有说明,单元145每当将一个非流水线的数据流引导到输入上时需要3个时钟周期来完成其任务。单元145的所有输入都是缓冲存储的,这对外部世界提供非常小的容量。
即使在32L开始时在单元145的输入上能得到数据,在33H开始前数据可能是无效的。因此,假定乘法是在33H开始时启动的。在33H期间被乘数输入上的有效与稳定数据流经延时元件并分别被锁存器1160与1170锁存。与此同时,乘数输入上的数据传播通过输入缓冲器及Booth编码器1165与1175并被锁存器1180与1182锁存。此时,乘数与被乘数路径上的数据是完全互相同步的。在331中,数据通过位选择器阵列及一组全加法器,它构成Wallace树的第一部分并在锁存器1180与1182的建立时间之前成为有效的。在这一点上的部分乘积数从8减少到4。在34H中,数据通过构成Wallace树的其余部分的另一组全加法器,并在被锁存器1184与1186锁存以前在34H结束时成为有效与稳定的。
如上所述,在34L中数据通过4:2压缩器1130(两个串联的全加法器)及一个2:1多路复用器1135用于最后的部分乘积选择。数据在被锁存器1190锁存之前在34L结束时成为有效的。在35H期间,在锁存器1190输出上的两个部分乘积最终被归约成一个和矢量。这一和矢量被单元145外部的多路锁存边界-锁存器1195分成数部份与锁存。在35L中,数据能用于写回操作。
如上所述,前面的乘累加指令总是将它们的乘法结果加在累加值上。这一累加值成为执行乘与累加以外的操作的瓶颈(例如,在每次需要并不要求前面的累加值的一组新的操作时,必须清除该累加值)。如果在累加之前需要执行诸如四舍五入等操作时,这一累加值也成为瓶颈。
相反,所公开的乘-加操作并不将累加值向前带。结果,在更广的各种算法中更容易使用这些指令。此外,可利用软件流水作业来达到相当的吞吐量。为了展示乘-加指令的通用性,下面描述多媒体算法的一些示例。这些多媒体算法中的一些采用另外的分组数据指令。这些另外的分组数据指令的操作是相对于所描述的算法示出的。对于这些分组数据指令的进一步描述,见名称为“在分组数据上操作的指令集”的申请。当然,也能使用其它分组数据指令。此外,在下面的示例中已省略了需要使用通用处理器指令来管理数据传送、循环及条件转移的若干步骤。
1)复数乘法
所公开的乘-加指令能用来在单一的指令中将两个复数相乘,如表10a中所示。如上所述两个复数(诸如r1i1与r2i2)的乘法是按照下述公式执行的:
实部=r1·r2-i1·i2
虚部=r1·i2+r2·i1
如将这一指令实现为在每一时钟周期中完成,本发明便能在每一时钟周期中乘两个复数。
表10a
作为另一示例,表10b示出用来将三个复数相乘的指令。
表10b
2)乘累加运算
所公开的乘-加指令也能用来乘与累加值。例如,可将两组四个元素(A1-4及B1-4)相乘及累加,如下面表11中所示。在一个实施例中,将表6中所示各指令实现成在每一时钟周期中完成。
表11
如果各组中的数据元素数目超过8且为4的倍数,如果如下面表12中所示那样执行的话,这些组的乘法与累加需要较少的指令。
表12
作为另一示例,表13示出组A与B以及组C与D的单独的乘法与累加,其中这些组中每一个包含2个数据元素。
表13
作为另一示例,表14示出组A与B以及组C与D的单独的乘法与累加,其中这些组中每一个包含4个数据元素。
表14
3)点积算法
点积(也称内积)用在信号处理及短阵运算中。例如,在计算矩阵的积、数字滤波运算(诸如FIR与IIR滤波)及计算相关序列时使用点积。由于许多话音压缩算法(如GSM、G.728、CELP及VSELP)及高保真压缩算法(诸如MPEG及子带编码)广泛地利用数字滤波及相关计算,提高点积的性能便提高这些算法的性能。
两个长度为N的序列A与B的点积定义为:
执行点积计算广泛地利用乘累加运算,在其中将各序列的对应元素相乘,并累加这些结果以形成点积结果。
点积计算能用乘-加指令执行。例如,如果使用包含4个16位元素的分组数据类型,便可按下列步骤在各包含4个值的两个序列上执行点积计算:
1)使用传送指令从A序列中取4个16位值以生成Source1;
2)使用传送指令从B序列中取4个16位值以生成Source2;以及
3)使用乘-加、分组加法及移位指令如上所述执行乘与累加。
对于只有数个元素的矢量,使用表9中所示的方法,并在最后,将最终结果相加。其它支持指令包含用于初始化累加器寄存器的分组“或”与“异或”指令,用于在计算的最终阶段移出不需要的值的分组移位指令。循环控制操作使用处理器109的现成指令集中的指令完成。
4)离散余弦变换算法
离散余弦变换(DCT)为用在许多信号处理算法中的著名函数。尤其是视频与图象压缩算法广泛地利用这一变换。
在图象与视频压缩算法中,利用DCT将一块象素从空间表示变换到频率表示。在频率表示中,将画面信息分成频率分量,一些分量比其它分量更重要。压缩算法有选择地量化或丢弃对重构的画面内容并无不利影响的频率分量。以这一方式,达到压缩的目的。
DCT有许多实现方法,最流行的是基于快速傅里叶变换(FFT)计算流程建模的某种快速变换法。在该快速变换中,将N阶变换分解成N/2阶变换的组合,并重新组合其结果。这一分解一直可进行到到达最小的2阶变换为止。这一基本2阶变换核通常称作蝶式运算。蝶式运算表示如下:
X=a*x+b*y
Y=c*x-d*y
其中a、b、c与d称作系数,x与y为输入数据,而X与Y为变换输出。
乘-加允许以下述方式利用分组数据执行DCT计算:
1)使用传送与分解指令取两个表示x与y的16位值以生成Source1(见下面表15);
2)生成下面表15中所示的Source2--注意在数次蝶式运算上可以重复使用Source2;以及
3)利用Source1与Source2执行乘-加指令以生成结果(见下面表15)。
表15
在某些情况中,蝶式运算的系数为1。对于这些情况,蝶式运算退化成只是加与减,它们可用分组加法与分组减法指令执行。
一份IEEE文件规定为电视会议执行的逆DCT应有的精度。(见IEEE电路与系统协会,“实现8×8逆离散余弦变换的IEEE标准规范”,IEEE std.1180-1990,IEEE Inc.,345 East 47th St.NY,NY10017,USA,1991年3月18日)。所公开的乘-加指令满足所要求的精度,因为它使用16位输入生成32位输出。
以这一方式,所述乘-加指令能用来增进若干不同算法的性能,其中包含需要复数乘法的算法、需要变换的算法及需要乘累加运算的算法。结果,这一乘-加指令能用在通用处理器中来增进比上述指令更多数量的算法的性能。
虽然已对若干实施例描述了本发明,熟悉本技术的人员将认识到本发明不限于所述实施例。本发明的方法与装置能用所附权利要求书的精神与范围内的修改与改变来实现。从而,应认为本说明书是示例性的而不是对本发明的限制。
Claims (29)
1.一种通过执行指令来产生结果数据元素的方法,它包括:
接收该指令所指定的第一分组数据和该指令所指定的第二分组数据,各分组数据包括至少四个数据元素,在各个位置上第一分组数据中的各个数据元素在第二分组数据中有对应的数据元素;
把第一分组数据和第二分组数据中对应的数据元素相乘,以产生对应的中间数据元素,这些中间数据元素被分成若干组;
产生多个结果数据元素,每个结果数据元素包括相应组中的中间数据元素的和,所述多个结果数据元素中的第一个包括所述若干组的第一组中的中间数据元素的和,所述多个结果数据元素中的第二个包括所述若干组的第二组中的中间数据元素的和;以及
不用对所述多个结果数据元素求和而完成所述指令的执行。
2.如权利要求1所述的方法,其特征在于,该方法还包括在所述第一分组数据上写所述多个结果数据元素。
3.如权利要求1所述的方法,其特征在于,所述结果数据元素具有所述第一和第二分组数据的数据元素的两倍精度。
4.如权利要求1所述的方法,其特征在于,所述多个结果数据元素中的所述第一个表示所述若干组的第一组中的中间数据元素的和,而且,所述多个结果数据元素中的所述第二个表示所述若干组的第二组中的中间数据元素之和。
5.如权利要求1所述的方法,其特征在于,所述第一分组数据的接收包括从由所述指令中比特3-比特5指定的一个存储单元接收第一分组数据,而且,所述第二分组数据的接收包括从由所述指令中比特0-比特2指定的一个存储单元接收第二分组数据。
6.如权利要求1-5中任一所述的方法,其特征在于,通过将每组提供给在接收组中对中间数据元素求和的不同加法器,所述中间数据元素被分成所述若干组,每组包含两个中间数据元素。
7.如权利要求1-5中任一所述的方法,其特征在于,所述第一分组数据的接收包括接收A1、A2、A3和A4作为数据元素,而且,所述第二分组数据的接收包括接收B1、B2、B3和B4作为数据元素,其中,所述多个结果数据元素的产生包括产生含有(A1×B1+A2×B2)的第一结果数据元素和含有(A3×B3+A4×B4)的第二结果数据元素。
8.如权利要求1-5中任一所述的方法,其特征在于还包括:
产生所述多个结果数据元素中的第三个,它包括所述若干组的第三组中的中间数据元素的和;以及
产生所述多个结果数据元素的第四个,它包括所述若干组的第四组中的中间数据元素的和。
9.一种通过解码并执行指令来产生分组数据结果的处理器,它包括:
解码器,用来接收并解码指定第一分组数据和第二分组数据的存储单元的指令,第一分组数据具有包括至少四个数据元素的第一多个数据元素,而第二分组数据具有包括至少四个数据元素的第二多个数据元素,第一分组数据的各数据元素在各个位置上对应于第二分组数据的不同的数据元素;以及
与所述解码器通信的执行单元,用于响应所述解码器对所述指令的解码而产生所述分组数据结果,所述分组数据结果具有多个结果数据元素,所述结果数据元素的各个包括第一和第二分组数据中对应的数据元素的乘积之和。
10.如权利要求9所述的处理器,其特征在于,所述执行单元用来在所述第一分组数据或第二分组数据上存储所述分组数据结果。
11.如权利要求9所述的处理器,其特征在于,所述执行单元用来产生精度比所述第一分组数据的数据元素高的结果数据元素。
12.如权利要求9所述的处理器,其特征在于,所述第一分组数据的数据元素具有16比特,而所述执行单元用来产生具有32比特的结果数据元素。
13.如权利要求9所述的处理器,其特征在于,所述执行单元用来完成所述指令的执行,而不对所述多个结果数据元素求和。
14.如权利要求9所述的处理器,其特征在于,所述解码器用来解码具有24比特指令格式的指令,其中,所述指令中比特0-比特2指定所述第二分组数据的存储单元,而且,所述指令中比特3-比特5指定所述第一分组数据的存储单元。
15.如权利要求9-14中任一所述的处理器,其特征在于,所述执行单元用来产生具有结果数据元素的分组数据结果,所述结果数据元素包括所述第一和第二分组数据中对应的数据元素的两个乘积之和。
16.如权利要求9-14中任一所述的处理器,其特征在于,所述第一分组数据具有A1、A2、A3和A4作为数据元素,所述第二分组数据则具有B1、B2、B3和B4作为数据元素,其中,所述执行单元用来产生具有包括(A1×B1+A2×B2)的第一结果数据元素和包括(A3×B3+A4×B4)的第二结果数据元素的分组数据结果。
17.如权利要求9-14中任一所述的处理器,其特征在于,所述第一分组数据具有A1、A2、A3和A4作为数据元素,而且,所述第二分组数据则具有B1、B2、B3和B4作为数据元素,其中,所述执行单元用来产生分组数据结果,该结果具有一个或多个数据元素,所述一个或多个数据元素选自由包括(A1×B1-A2×B2)的第一结果数据元素和包括(A3×B3-A4×B4)的第二结果数据元素构成的一组。
18.如权利要求9-14中任一所述的处理器,其特征在于,所述执行单元用来产生包括至少四个结果数据元素的分组数据结果,所述至少四个结果数据元素的各个包括第一和第二分组数据中对应的数据元素的乘积之和。
19.如权利要求9-14中任一所述的处理器,其特征在于,所述执行单元要对第一分组数据的八个数据元素和第二分组数据的八个数据元素进行运算。
20.一种用来输出分组数据的设备,它包括:
第一存储区,可操作为用于在该第一存储区中存储至少包含A1、A2、A3和A4元素的第一分组数据;
第二存储区,可操作为用于在该第二存储区中存储至少包含B1、B2、B3和B4元素的第二分组数据;
第一乘法器,与所述第一存储区连接以接收所述A1,并与所述第二存储区连接以接收所述B1;
第二乘法器,与所述第一存储区连接以接收所述A2,并与所述第二存储区连接以接收所述B2;
第三乘法器,与所述第一存储区连接以接收所述A3,并与所述第二存储区连接以接收所述B3;
第四乘法器,与所述第一存储区连接以接收所述A4,并与所述第二存储区连接以接收所述B4;
第一加法器,与所述第一乘法器和所述第二乘法器连接;
第二加法器,与所述第三乘法器和所述第四乘法器连接;以及
第三存储区,与所述第一加法器和所述第二加法器连接,所述第三存储区至少具有第一字段和毗邻第一字段的第二字段,所述第一字段将所述第一加法器的输出存储为第三分组数据的第一数据元素,所述第二字段将所述第二加法器的输出存储为所述第三分组数据的第二数据元素。
21.如权利要求20所述的设备,其特征在于第三存储区与第一存储区或第二存储区相同。
22.如权利要求20所述的设备,其特征在于A1具有16比特,而第一数据元素具有32比特。
23.如权利要求20-22中任一所述的设备,其特征在于所述第一加法器的输出包括(A1×B1+A2×B2),而所述第二加法器的输出包括(A3×B3+A4×B4)。
24.一种将音频数据处理为分组数据的系统,该系统包括:
多个存储区,用来存储具有包括至少四个数据元素的第一多个N比特数据元素的第一分组数据和具有包括至少四个数据元素的第二多个N比特数据元素的第二分组数据,第一分组数据中的各个数据元素在各个位置上对应于第二分组数据中不同的数据元素;
与所述存储区连接的电路,该电路响应一个指令而产生一个分组数据结果,该指令指定第一和第二分组数据在所述存储区中的存储单元,所述分组数据结果具有多个2N比特结果数据元素,所述结果数据元素的各个包括第一和第二分组数据中对应的数据元素的乘积之和;
总线,被连接成发送数据到所述电路和从所述电路发送数据,并发送数据到所述存储区和从所述存储区发送数据;以及
与所述存储区连接的音频装置,所述音频装置是从包括音频数字装置、语音记录装置、语音播放装置、麦克风、数模转换器和喇叭的组中选择的。
25.如权利要求24所述的系统,其特征在于,所述电路用来在所述第一分组数据或第二分组数据上存储所述分组数据结果。
26.如权利要求24所述的系统,其特征在于,所述电路用来完成所述指令的执行,而不用对所述多个2N比特结果数据元素求和。
27.如权利要求24所述的系统,其特征在于,所述指令具有24比特指令格式,其中,所述指令中比特0-比特2指定所述第二分组数据的存储单元,而且,所述指令中比特3-比特5指定所述第一分组数据的存储单元。
28.如权利要求24-27中任一项所述的系统,其特征在于,所述电路用来产生具有结果数据元素的分组数据结果,所述结果数据元素包括所述第一和第二分组数据中对应的数据元素的两个乘积之和。
29.如权利要求24-27中任一项所述的系统,其特征在于,所述第一分组数据具有第一数据元素、第二数据元素、第三数据元素和第四数据元素,其中,第二分组数据具有第五数据元素、第六数据元素、第七数据元素和第八数据元素,其中,所述电路用来产生具有第一结果数据元素和第二结果数据元素的分组数据结果,第一结果数据元素包括第一分组数据元素乘以第五数据元素的第一乘积和第二数据元素乘以第六数据元素的第二乘积两者之和,第二结果数据元素包括第三分组数据元素乘以第七数据元素的第三乘积和第四数据元素乘以第八数据元素的第四乘积两者之和。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/522,067 US6385634B1 (en) | 1995-08-31 | 1995-08-31 | Method for performing multiply-add operations on packed data |
US522067 | 1995-08-31 | ||
US606212 | 1996-02-23 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031202993A Division CN100465874C (zh) | 1995-08-31 | 1996-08-07 | 根据指令对数据执行运算的方法、处理器和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1801082A CN1801082A (zh) | 2006-07-12 |
CN100461093C true CN100461093C (zh) | 2009-02-11 |
Family
ID=24079328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100025714A Expired - Lifetime CN100461093C (zh) | 1995-08-31 | 1996-08-07 | 在分组数据上执行乘-加运算的方法、处理器、设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (14) | US6385634B1 (zh) |
KR (1) | KR100329339B1 (zh) |
CN (1) | CN100461093C (zh) |
HK (1) | HK1072989A1 (zh) |
Families Citing this family (250)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
EP0636256B1 (en) | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
DE69308548T2 (de) | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp | System und Verfahren zur Änderung der Namen von Registern |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6609143B1 (en) * | 1998-01-21 | 2003-08-19 | Matsushita Electric Industrial Co., Ltd | Method and apparatus for arithmetic operation |
US6377970B1 (en) | 1998-03-31 | 2002-04-23 | Intel Corporation | Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry |
US7395302B2 (en) * | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US7392275B2 (en) * | 1998-03-31 | 2008-06-24 | Intel Corporation | Method and apparatus for performing efficient transformations with horizontal addition and subtraction |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
JP3287305B2 (ja) * | 1998-04-23 | 2002-06-04 | 日本電気株式会社 | 積和演算装置 |
ATE467171T1 (de) * | 1998-08-24 | 2010-05-15 | Microunity Systems Eng | System mit breiter operandenarchitektur und verfahren |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
US6366944B1 (en) * | 1999-01-15 | 2002-04-02 | Razak Hossain | Method and apparatus for performing signed/unsigned multiplication |
US6732259B1 (en) | 1999-07-30 | 2004-05-04 | Mips Technologies, Inc. | Processor having a conditional branch extension of an instruction set architecture |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US6397240B1 (en) * | 1999-02-18 | 2002-05-28 | Agere Systems Guardian Corp. | Programmable accelerator for a programmable processor system |
US7509486B1 (en) * | 1999-07-08 | 2009-03-24 | Broadcom Corporation | Encryption processor for performing accelerated computations to establish secure network sessions connections |
US6912559B1 (en) | 1999-07-30 | 2005-06-28 | Mips Technologies, Inc. | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit |
US6714197B1 (en) | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
US6631392B1 (en) | 1999-07-30 | 2003-10-07 | Mips Technologies, Inc. | Method and apparatus for predicting floating-point exceptions |
US6697832B1 (en) | 1999-07-30 | 2004-02-24 | Mips Technologies, Inc. | Floating-point processor with improved intermediate result handling |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6282556B1 (en) * | 1999-10-08 | 2001-08-28 | Sony Corporation Of Japan | High performance pipelined data path for a media processor |
US7890566B1 (en) * | 2000-02-18 | 2011-02-15 | Texas Instruments Incorporated | Microprocessor with rounding dot product instruction |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US7599981B2 (en) * | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
US7711763B2 (en) * | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7010558B2 (en) * | 2001-04-19 | 2006-03-07 | Arc International | Data processor with enhanced instruction execution and method |
US7333530B1 (en) * | 2001-08-06 | 2008-02-19 | Analog Devices, Inc. | Despread signal recovery in digital signal processors |
US7107305B2 (en) * | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US7685212B2 (en) * | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US7430578B2 (en) * | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US20030158880A1 (en) * | 2002-02-13 | 2003-08-21 | Ng Kenneth Y. | Booth encoder and partial products circuit |
US7085797B2 (en) | 2002-02-26 | 2006-08-01 | Broadcom Corporation | Addition circuit for accumulating redundant binary numbers |
US20030236810A1 (en) * | 2002-06-25 | 2003-12-25 | Intel Corporation | Big number multiplication apparatus and method |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US20040249474A1 (en) * | 2003-03-31 | 2004-12-09 | Lee Ruby B. | Compare-plus-tally instructions |
FR2853425B1 (fr) * | 2003-04-07 | 2006-01-13 | Atmel Corp | Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur |
US7043518B2 (en) * | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
US9465611B2 (en) * | 2003-10-02 | 2016-10-11 | Broadcom Corporation | Processor execution unit with configurable SIMD functional blocks for complex number operations |
US7308470B2 (en) * | 2003-12-05 | 2007-12-11 | Intel Corporation | Smaller and lower power static mux circuitry in generating multiplier partial product signals |
US7437401B2 (en) * | 2004-02-20 | 2008-10-14 | Altera Corporation | Multiplier-accumulator block mode splitting |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
US8073892B2 (en) * | 2005-12-30 | 2011-12-06 | Intel Corporation | Cryptographic system, method and multiplier |
US7555514B2 (en) * | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US7917568B2 (en) * | 2007-04-10 | 2011-03-29 | Via Technologies, Inc. | X87 fused multiply-add instruction |
US7958180B2 (en) * | 2007-07-05 | 2011-06-07 | International Business Machines Corporation | Multiplier engine |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
US20090248919A1 (en) * | 2008-03-25 | 2009-10-01 | Jerzy Szwagrzyk | Method for external fifo acceleration |
US8239442B2 (en) * | 2008-08-08 | 2012-08-07 | Analog Devices, Inc. | Computing module for efficient FFT and FIR hardware accelerator |
US9086872B2 (en) * | 2009-06-30 | 2015-07-21 | Intel Corporation | Unpacking packed data in multiple lanes |
US8570336B2 (en) * | 2009-12-08 | 2013-10-29 | Intel Corporation | Texture unit for general purpose computing |
US20120166511A1 (en) * | 2010-12-22 | 2012-06-28 | Hiremath Chetan D | System, apparatus, and method for improved efficiency of execution in signal processing algorithms |
US8838664B2 (en) | 2011-06-29 | 2014-09-16 | Advanced Micro Devices, Inc. | Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format |
US9760371B2 (en) | 2011-12-22 | 2017-09-12 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
US9218182B2 (en) * | 2012-06-29 | 2015-12-22 | Intel Corporation | Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op) |
US9804839B2 (en) * | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9465578B2 (en) * | 2013-12-13 | 2016-10-11 | Nvidia Corporation | Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
CN107408405B (zh) | 2015-02-06 | 2021-03-05 | 美光科技公司 | 用于并行写入到多个存储器装置位置的设备及方法 |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
CN107408404B (zh) | 2015-02-06 | 2021-02-12 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
CN107408408B (zh) | 2015-03-10 | 2021-03-05 | 美光科技公司 | 用于移位决定的装置及方法 |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
WO2016144726A1 (en) | 2015-03-12 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US11847427B2 (en) | 2015-04-04 | 2023-12-19 | Texas Instruments Incorporated | Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor |
US9817791B2 (en) | 2015-04-04 | 2017-11-14 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word |
US9952865B2 (en) * | 2015-04-04 | 2018-04-24 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
KR20170137761A (ko) | 2015-04-16 | 2017-12-13 | 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 | 곱셈 누적 연산을 수행하는 저항성 메모리 어레이 |
US9898286B2 (en) | 2015-05-05 | 2018-02-20 | Intel Corporation | Packed finite impulse response (FIR) filter processors, methods, systems, and instructions |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US9727353B2 (en) | 2015-10-30 | 2017-08-08 | International Business Machines Corporation | Simultaneously capturing status information for multiple operating modes |
CN105512724B (zh) * | 2015-12-01 | 2017-05-10 | 中国科学院计算技术研究所 | 加法器装置、数据累加方法及数据处理装置 |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US10503474B2 (en) | 2015-12-31 | 2019-12-10 | Texas Instruments Incorporated | Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
CN107315717B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
EP3971711A1 (en) * | 2016-10-20 | 2022-03-23 | INTEL Corporation | Systems, apparatuses, and methods for fused multiply add |
US10146535B2 (en) * | 2016-10-20 | 2018-12-04 | Intel Corporatoin | Systems, apparatuses, and methods for chained fused multiply add |
CN207637499U (zh) | 2016-11-08 | 2018-07-20 | 美光科技公司 | 用于形成在存储器单元阵列上方的计算组件的设备 |
US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
WO2019005132A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES |
WO2019005115A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES |
US20200104100A1 (en) * | 2017-06-30 | 2020-04-02 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex values |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10514924B2 (en) | 2017-09-29 | 2019-12-24 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US11256504B2 (en) | 2017-09-29 | 2022-02-22 | Intel Corporation | Apparatus and method for complex by complex conjugate multiplication |
US10749502B2 (en) * | 2017-09-29 | 2020-08-18 | Intel Corporation | Apparatus and method for performing horizontal filter operations |
US11243765B2 (en) | 2017-09-29 | 2022-02-08 | Intel Corporation | Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements |
US10552154B2 (en) * | 2017-09-29 | 2020-02-04 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US10664277B2 (en) * | 2017-09-29 | 2020-05-26 | Intel Corporation | Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words |
US10802826B2 (en) | 2017-09-29 | 2020-10-13 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US10795677B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values |
US11074073B2 (en) | 2017-09-29 | 2021-07-27 | Intel Corporation | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements |
US10534838B2 (en) | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
US10795676B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US20190102199A1 (en) * | 2017-09-30 | 2019-04-04 | Intel Corporation | Methods and systems for executing vectorized pythagorean tuple instructions |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
US10452394B2 (en) * | 2017-11-28 | 2019-10-22 | Intel Corporation | Apparatus and method for complex multiplication |
US10489154B2 (en) * | 2017-11-28 | 2019-11-26 | Intel Corporation | Apparatus and method for complex multiply and accumulate |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US11768681B2 (en) * | 2018-01-24 | 2023-09-26 | Intel Corporation | Apparatus and method for vector multiply and accumulate of packed bytes |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US10684825B2 (en) * | 2018-08-28 | 2020-06-16 | Cavium, Llc | Compressing like magnitude partial products in multiply accumulation |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
KR20200082617A (ko) | 2018-12-31 | 2020-07-08 | 삼성전자주식회사 | 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 |
US11194585B2 (en) | 2019-03-25 | 2021-12-07 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
CN111814093A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种乘累加指令的处理方法和处理装置 |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11256476B2 (en) * | 2019-08-08 | 2022-02-22 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
US11132198B2 (en) | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
US20230015148A1 (en) * | 2021-07-16 | 2023-01-19 | Google Llc | Multiplier and Adder in Systolic Array |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85107063A (zh) * | 1985-09-27 | 1987-01-31 | 耿树贵 | 整数多功能叠接单元的阵列乘法器 |
US4771379A (en) * | 1985-10-23 | 1988-09-13 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with parallel multipliers |
US4811269A (en) * | 1985-10-09 | 1989-03-07 | Hitachi, Ltd. | Bit slice multiplication circuit |
CN1038180A (zh) * | 1988-06-02 | 1989-12-20 | 德国Itt工业有限公司 | 处理器 |
CN1072788A (zh) * | 1991-11-27 | 1993-06-02 | 国际商业机器公司 | 动态多方式并行处理器阵列体系结构的计算机系统 |
US5442799A (en) * | 1988-12-16 | 1995-08-15 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with high speed multiplier means for double data input |
Family Cites Families (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3641736A (en) * | 1970-06-22 | 1972-02-15 | Raymond J Dwyer | Machine for making filled packages |
US3675001A (en) * | 1970-12-10 | 1972-07-04 | Ibm | Fast adder for multi-number additions |
US3711692A (en) | 1971-03-15 | 1973-01-16 | Goodyear Aerospace Corp | Determination of number of ones in a data field by addition |
US3723715A (en) | 1971-08-25 | 1973-03-27 | Ibm | Fast modulo threshold operator binary adder for multi-number additions |
FR2212952A5 (zh) * | 1972-12-29 | 1974-07-26 | Cit Alcatel | |
US3900724A (en) * | 1974-02-11 | 1975-08-19 | Trw Inc | Asynchronous binary multiplier using non-threshold logic |
US4161784A (en) | 1978-01-05 | 1979-07-17 | Honeywell Information Systems, Inc. | Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands |
US4344151A (en) | 1980-04-21 | 1982-08-10 | Rockwell International Corporation | ROM-Based complex multiplier useful for FFT butterfly arithmetic unit |
US4418383A (en) | 1980-06-30 | 1983-11-29 | International Business Machines Corporation | Data flow component for processor and microprocessor systems |
US4393468A (en) | 1981-03-26 | 1983-07-12 | Advanced Micro Devices, Inc. | Bit slice microprogrammable processor for signal processing applications |
JPS5824941A (ja) * | 1981-08-07 | 1983-02-15 | Hitachi Ltd | 演算装置 |
JPS58182754A (ja) * | 1982-04-19 | 1983-10-25 | Hitachi Ltd | 演算処理装置 |
US4498177A (en) | 1982-08-30 | 1985-02-05 | Sperry Corporation | M Out of N code checker circuit |
JPS6072069A (ja) * | 1983-09-28 | 1985-04-24 | Nec Corp | ベクトル演算処理装置 |
JPS60134974A (ja) * | 1983-12-23 | 1985-07-18 | Hitachi Ltd | ベクトル処理装置 |
FR2563349B1 (fr) | 1984-04-18 | 1989-04-28 | France Etat | Multiplieur matriciel systolique de traitement de donnees numeriques |
US4707800A (en) | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
US4945479A (en) * | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US4760525A (en) * | 1986-06-10 | 1988-07-26 | The United States Of America As Represented By The Secretary Of The Air Force | Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction |
US4890218A (en) | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US4876660A (en) | 1987-03-20 | 1989-10-24 | Bipolar Integrated Technology, Inc. | Fixed-point multiplier-accumulator architecture |
JP2613223B2 (ja) | 1987-09-10 | 1997-05-21 | 株式会社日立製作所 | 演算装置 |
US4985848A (en) | 1987-09-14 | 1991-01-15 | Visual Information Technologies, Inc. | High speed image processing system using separate data processor and address generator |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US4989168A (en) | 1987-11-30 | 1991-01-29 | Fujitsu Limited | Multiplying unit in a computer system, capable of population counting |
US5032865A (en) * | 1987-12-14 | 1991-07-16 | General Dynamics Corporation Air Defense Systems Div. | Calculating the dot product of large dimensional vectors in two's complement representation |
US5126964A (en) * | 1988-04-01 | 1992-06-30 | Digital Equipment Corporation | High performance bit-sliced multiplier circuit |
US4972362A (en) | 1988-06-17 | 1990-11-20 | Bipolar Integrated Technology, Inc. | Method and apparatus for implementing binary multiplication using booth type multiplication |
WO1990005335A1 (en) | 1988-11-04 | 1990-05-17 | Hitachi, Ltd. | Apparatus for multiplication, division and extraction of square root |
US4969118A (en) | 1989-01-13 | 1990-11-06 | International Business Machines Corporation | Floating point unit for calculating A=XY+Z having simultaneous multiply and add |
KR920007505B1 (ko) | 1989-02-02 | 1992-09-04 | 정호선 | 신경회로망을 이용한 곱셈기 |
US5081698A (en) * | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US4956801A (en) * | 1989-09-15 | 1990-09-11 | Sun Microsystems, Inc. | Matrix arithmetic circuit for processing matrix transformation operations |
EP0418412B1 (de) * | 1989-09-20 | 1994-11-30 | Deutsche ITT Industries GmbH | Schaltungsanordnung zur Produktsummenberechnung |
US5262976A (en) | 1989-11-13 | 1993-11-16 | Harris Corporation | Plural-bit recoding multiplier |
US5590365A (en) | 1990-03-30 | 1996-12-31 | Kabushiki Kaisha Toshiba | Pipeline information processing circuit for floating point operations |
US5193167A (en) | 1990-06-29 | 1993-03-09 | Digital Equipment Corporation | Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system |
JP2651267B2 (ja) * | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
JP2523962B2 (ja) | 1990-08-20 | 1996-08-14 | 松下電器産業株式会社 | 浮動小数点演算装置 |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
US5268995A (en) | 1990-11-21 | 1993-12-07 | Motorola, Inc. | Method for executing graphics Z-compare and pixel merge instructions in a data processor |
JPH04242861A (ja) | 1990-12-28 | 1992-08-31 | Sony Corp | 内積演算回路 |
US5408581A (en) | 1991-03-14 | 1995-04-18 | Technology Research Association Of Medical And Welfare Apparatus | Apparatus and method for speech signal processing |
US5303355A (en) * | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5680161A (en) | 1991-04-03 | 1997-10-21 | Radius Inc. | Method and apparatus for high speed graphics data compression |
US5241492A (en) | 1991-05-06 | 1993-08-31 | Motorola, Inc. | Apparatus for performing multiply and accumulate instructions with reduced power and a method therefor |
US5187679A (en) | 1991-06-05 | 1993-02-16 | International Business Machines Corporation | Generalized 7/3 counters |
US5420815A (en) | 1991-10-29 | 1995-05-30 | Advanced Micro Devices, Inc. | Digital multiplication and accumulation system |
US5241493A (en) * | 1991-12-16 | 1993-08-31 | International Business Machines Corporation | Floating point arithmetic unit with size efficient pipelined multiply-add architecture |
US5311508A (en) * | 1991-12-23 | 1994-05-10 | Square D Company | Apparatus for receiving and decoding a serial data packet containing the status of a network of single point I/O devices |
US5210711A (en) * | 1992-02-26 | 1993-05-11 | Sony Corporation Of America | Very fast variable input multi-bit adder |
DE69329820T2 (de) * | 1992-04-13 | 2001-06-07 | Australian Meat & Live Stock | Fleisch-bildanalyse. |
US5325320A (en) | 1992-05-01 | 1994-06-28 | Seiko Epson | Area efficient multiplier for use in an integrated circuit |
US5457805A (en) * | 1992-06-30 | 1995-10-10 | Nec Corporation | Microcomputer enabling high speed execution of product-sum operation |
JP3268024B2 (ja) | 1992-08-25 | 2002-03-25 | 日本化学産業株式会社 | 天井の換気構造 |
US5426783A (en) * | 1992-11-02 | 1995-06-20 | Amdahl Corporation | System for processing eight bytes or less by the move, pack and unpack instruction of the ESA/390 instruction set |
US5321644A (en) | 1992-11-04 | 1994-06-14 | Unisys Corporation | Method and apparatus for division error detection |
ZA938324B (en) | 1992-11-24 | 1994-06-07 | Qualcomm Inc | Pilot carrier dot product circuit |
US5606677A (en) * | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
US5651121A (en) | 1992-12-18 | 1997-07-22 | Xerox Corporation | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
JPH06242928A (ja) * | 1993-02-22 | 1994-09-02 | Nec Corp | 加算器およびこれを用いた乗算回路 |
US5327369A (en) * | 1993-03-31 | 1994-07-05 | Intel Corporation | Digital adder and method for adding 64-bit, 16-bit and 8-bit words |
JP3546437B2 (ja) * | 1993-03-31 | 2004-07-28 | ソニー株式会社 | 適応形ビデオ信号演算処理装置 |
US5806049A (en) * | 1993-04-21 | 1998-09-08 | Petruzzi; Christopher R. | Data processing system for global assessment of investment opportunity and cost |
US5410670A (en) | 1993-06-02 | 1995-04-25 | Microunity Systems Engineering, Inc. | Accessing system that reduces access times due to transmission delays and I/O access circuitry in a burst mode random access memory |
EP0645699A1 (en) | 1993-09-29 | 1995-03-29 | International Business Machines Corporation | Fast multiply-add instruction sequence in a pipeline floating-point processor |
EP0924601B1 (en) * | 1993-11-23 | 2001-09-26 | Hewlett-Packard Company, A Delaware Corporation | Parallel data processing in a single processor |
US5390135A (en) * | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5883824A (en) * | 1993-11-29 | 1999-03-16 | Hewlett-Packard Company | Parallel adding and averaging circuit and method |
US5805913A (en) * | 1993-11-30 | 1998-09-08 | Texas Instruments Incorporated | Arithmetic logic unit with conditional register source selection |
US5509129A (en) | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
JP2885041B2 (ja) | 1993-12-27 | 1999-04-19 | 日本電気株式会社 | アダプティブフィルタ修正係数演算回路 |
US5541865A (en) | 1993-12-30 | 1996-07-30 | Intel Corporation | Method and apparatus for performing a population count operation |
US5673427A (en) * | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
GB2317978B (en) | 1994-03-02 | 1998-05-20 | Advanced Risc Mach Ltd | Electronic multiplying and adding apparatus and method |
US5487022A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Normalization method for floating point numbers |
US5734874A (en) * | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
US5642306A (en) * | 1994-07-27 | 1997-06-24 | Intel Corporation | Method and apparatus for a single instruction multiple data early-out zero-skip multiplier |
US5579253A (en) | 1994-09-02 | 1996-11-26 | Lee; Ruby B. | Computer multiply instruction with a subresult selection option |
EP0706040A1 (en) | 1994-10-07 | 1996-04-10 | Bp Chemicals S.N.C. | Property determination |
US5819101A (en) | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
EP0795153A4 (en) * | 1994-12-02 | 2001-11-14 | Intel Corp | MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS |
US5500811A (en) * | 1995-01-23 | 1996-03-19 | Microunity Systems Engineering, Inc. | Finite impulse response filter |
US5721697A (en) * | 1995-06-16 | 1998-02-24 | Hewlett-Packard Company | Performing tree additions via multiplication |
US6295599B1 (en) | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US6006318A (en) | 1995-08-16 | 1999-12-21 | Microunity Systems Engineering, Inc. | General purpose, dynamic partitioning, programmable media processor |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5953241A (en) * | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7085795B2 (en) * | 2001-10-29 | 2006-08-01 | Intel Corporation | Apparatus and method for efficient filtering and convolution of content data |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6058408A (en) | 1995-09-05 | 2000-05-02 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US5983253A (en) * | 1995-09-05 | 1999-11-09 | Intel Corporation | Computer system for performing complex digital filters |
US6470370B2 (en) | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US6237016B1 (en) | 1995-09-05 | 2001-05-22 | Intel Corporation | Method and apparatus for multiplying and accumulating data samples and complex coefficients |
US5936872A (en) * | 1995-09-05 | 1999-08-10 | Intel Corporation | Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations |
US5737537A (en) | 1995-09-29 | 1998-04-07 | Intel Corporation | Two-measure block classification scheme for encoding video images |
KR0151922B1 (ko) | 1995-12-12 | 1998-10-15 | 양승택 | 필드 및 프레임 움직임 추정 장치 |
WO1997024681A1 (en) * | 1995-12-19 | 1997-07-10 | Intel Corporation | A computer system performing a two-dimensional rotation of packed data representing multimedia information |
US5701508A (en) | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5907842A (en) | 1995-12-20 | 1999-05-25 | Intel Corporation | Method of sorting numbers to obtain maxima/minima values with ordering |
US5880979A (en) | 1995-12-21 | 1999-03-09 | Intel Corporation | System for providing the absolute difference of unsigned values |
US5742529A (en) | 1995-12-21 | 1998-04-21 | Intel Corporation | Method and an apparatus for providing the absolute difference of unsigned values |
KR100197793B1 (ko) | 1995-12-23 | 1999-06-15 | 정선종 | 선형 단축 배열 구조를 이용한 블록정합 움직임 추정장치 |
US5793661A (en) * | 1995-12-26 | 1998-08-11 | Intel Corporation | Method and apparatus for performing multiply and accumulate operations on packed data |
US5983257A (en) | 1995-12-26 | 1999-11-09 | Intel Corporation | System for signal processing using multiply-add operations |
US5835392A (en) | 1995-12-28 | 1998-11-10 | Intel Corporation | Method for performing complex fast fourier transforms (FFT's) |
US5793900A (en) | 1995-12-29 | 1998-08-11 | Stanford University | Generating categorical depth maps using passive defocus sensing |
US5862067A (en) | 1995-12-29 | 1999-01-19 | Intel Corporation | Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations |
US5740037A (en) | 1996-01-22 | 1998-04-14 | Hughes Aircraft Company | Graphical user interface system for manportable applications |
US5852473A (en) | 1996-02-20 | 1998-12-22 | Tektronix, Inc. | 3-2 pulldown detector |
US5880983A (en) * | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US5719642A (en) | 1996-05-07 | 1998-02-17 | National Science Council Of R.O.C. | Full-search block matching motion estimation processor |
US6041403A (en) * | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
US5841676A (en) | 1996-11-04 | 1998-11-24 | General Electric Company | System and method for estimating a change point time in a manufacturing process |
US6061521A (en) | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US5884071A (en) * | 1997-03-31 | 1999-03-16 | Intel Corporation | Method and apparatus for decoding enhancement instructions using alias encodings |
US5865752A (en) | 1997-05-07 | 1999-02-02 | General Electric Company | Method and apparatus for ultrasound imaging using normalized difference between successive frames |
US5876342A (en) | 1997-06-30 | 1999-03-02 | Siemens Medical Systems, Inc. | System and method for 3-D ultrasound imaging and motion estimation |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US5884089A (en) | 1997-10-14 | 1999-03-16 | Motorola, Inc. | Method for calculating an L1 norm and parallel computer processor |
US6026483A (en) | 1997-10-23 | 2000-02-15 | Advanced Micro Devices, Inc. | Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands |
US6178482B1 (en) * | 1997-11-03 | 2001-01-23 | Brecis Communications | Virtual register sets |
US6230253B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6233671B1 (en) * | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6192467B1 (en) * | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6418529B1 (en) | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6378060B1 (en) * | 1998-08-24 | 2002-04-23 | Microunity Systems Engineering, Inc. | System to implement a cross-bar switch of a broadband processor |
US6272512B1 (en) | 1998-10-12 | 2001-08-07 | Intel Corporation | Data manipulation instruction for enhancing value and efficiency of complex arithmetic |
-
1995
- 1995-08-31 US US08/522,067 patent/US6385634B1/en not_active Expired - Lifetime
-
1996
- 1996-02-23 US US08/606,212 patent/US6035316A/en not_active Expired - Lifetime
- 1996-08-07 KR KR1019980701542A patent/KR100329339B1/ko not_active IP Right Cessation
- 1996-08-07 CN CNB2006100025714A patent/CN100461093C/zh not_active Expired - Lifetime
-
1997
- 1997-10-29 US US08/960,413 patent/US5983256A/en not_active Expired - Lifetime
-
2001
- 2001-11-19 US US09/989,736 patent/US7424505B2/en not_active Expired - Fee Related
-
2004
- 2004-06-04 US US10/861,167 patent/US7509367B2/en not_active Expired - Fee Related
-
2005
- 2005-05-24 HK HK05104364.5A patent/HK1072989A1/xx not_active IP Right Cessation
-
2009
- 2009-03-23 US US12/409,275 patent/US8185571B2/en not_active Expired - Fee Related
-
2011
- 2011-07-01 US US13/175,373 patent/US8626814B2/en not_active Expired - Fee Related
-
2012
- 2012-04-26 US US13/456,761 patent/US8725787B2/en not_active Expired - Fee Related
- 2012-09-04 US US13/603,370 patent/US8396915B2/en not_active Expired - Fee Related
- 2012-10-01 US US13/633,086 patent/US8495123B2/en not_active Expired - Fee Related
-
2013
- 2013-03-13 US US13/801,335 patent/US8745119B2/en not_active Expired - Fee Related
- 2013-03-13 US US13/801,356 patent/US8793299B2/en not_active Expired - Fee Related
- 2013-05-30 US US13/906,248 patent/US20130262836A1/en not_active Abandoned
- 2013-05-30 US US13/906,240 patent/US20130262547A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85107063A (zh) * | 1985-09-27 | 1987-01-31 | 耿树贵 | 整数多功能叠接单元的阵列乘法器 |
US4811269A (en) * | 1985-10-09 | 1989-03-07 | Hitachi, Ltd. | Bit slice multiplication circuit |
US4771379A (en) * | 1985-10-23 | 1988-09-13 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with parallel multipliers |
CN1038180A (zh) * | 1988-06-02 | 1989-12-20 | 德国Itt工业有限公司 | 处理器 |
US5442799A (en) * | 1988-12-16 | 1995-08-15 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with high speed multiplier means for double data input |
CN1072788A (zh) * | 1991-11-27 | 1993-06-02 | 国际商业机器公司 | 动态多方式并行处理器阵列体系结构的计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
KR19990044305A (ko) | 1999-06-25 |
KR100329339B1 (ko) | 2002-07-06 |
US20130262547A1 (en) | 2013-10-03 |
US7424505B2 (en) | 2008-09-09 |
US8745119B2 (en) | 2014-06-03 |
US7509367B2 (en) | 2009-03-24 |
US20020059355A1 (en) | 2002-05-16 |
US8725787B2 (en) | 2014-05-13 |
US20130219151A1 (en) | 2013-08-22 |
US8185571B2 (en) | 2012-05-22 |
US8626814B2 (en) | 2014-01-07 |
HK1072989A1 (en) | 2005-09-16 |
US8495123B2 (en) | 2013-07-23 |
US8793299B2 (en) | 2014-07-29 |
US20120331028A1 (en) | 2012-12-27 |
US6385634B1 (en) | 2002-05-07 |
US6035316A (en) | 2000-03-07 |
US20110264895A1 (en) | 2011-10-27 |
US20040220992A1 (en) | 2004-11-04 |
US20090265409A1 (en) | 2009-10-22 |
US8396915B2 (en) | 2013-03-12 |
US20130091190A1 (en) | 2013-04-11 |
US20130262836A1 (en) | 2013-10-03 |
US5983256A (en) | 1999-11-09 |
US20120216018A1 (en) | 2012-08-23 |
CN1801082A (zh) | 2006-07-12 |
US20130198254A1 (en) | 2013-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100461093C (zh) | 在分组数据上执行乘-加运算的方法、处理器、设备和系统 | |
CN100465874C (zh) | 根据指令对数据执行运算的方法、处理器和系统 | |
CN100380312C (zh) | 在分组数据上操作的指令集 | |
US5859997A (en) | Method for performing multiply-substrate operations on packed data | |
US7085795B2 (en) | Apparatus and method for efficient filtering and convolution of content data | |
US5835392A (en) | Method for performing complex fast fourier transforms (FFT's) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20090211 |
|
EXPY | Termination of patent right or utility model |