CN1801082A - 在分组数据上执行乘-加运算的装置 - Google Patents

在分组数据上执行乘-加运算的装置 Download PDF

Info

Publication number
CN1801082A
CN1801082A CNA2006100025714A CN200610002571A CN1801082A CN 1801082 A CN1801082 A CN 1801082A CN A2006100025714 A CNA2006100025714 A CN A2006100025714A CN 200610002571 A CN200610002571 A CN 200610002571A CN 1801082 A CN1801082 A CN 1801082A
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.)
Granted
Application number
CNA2006100025714A
Other languages
English (en)
Other versions
CN100461093C (zh
Inventor
A·D·佩勒
M·米塔尔
L·M·曼内梅尔
B·艾坦
C·杜龙
小鹫英一
W·维特
D·C·林
A·宾达尔
S·A·费彻
T·H·贝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1801082A publication Critical patent/CN1801082A/zh
Application granted granted Critical
Publication of CN100461093C publication Critical patent/CN100461093C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction 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/5336Reduction 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/5338Reduction 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

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公司制造的Intel486)上。通用处理器将能用分组数据执行的任务(如视频处理)分配给DSP。
一种DSP包含将两个值相乘的结果加到累加值上的乘累加指令(见Kawakami、Yuichi等人的“用于话音频带应用的单片数字信号处理器”,IEEE国际固态电路会议,1980,pp.40-41)。下面表1中示出这一DSP的乘累加运算的一个示例,其中指令是在分别作为Source1与Source2存取的数据值A1与B1上执行的。
              表1
Multiply-Accumulate Source1,Source2
           A1
           B1
           =
  A1B1+累计值
Source1Source2Result1
这一指令的一个限制是其有限的效率--即它只在两个值及一个累计值上运算。例如,为了相乘与累计两组两个值需要串行执行下述两条指令:1)乘累加来自第一组的第一值、来自第二组的第一值及为0的一个累计值以生成中间累计值;2)乘累加来自第一组的第二值、来自第二组的第二值及中间累计值以生成结果。
另一DSP包含在两组两个值及一个累计值上运算的乘累加指令(见“带并行乘法器的数字信号处理器”,专利号4,771,470,这里称作“Ando等人”对比文件)。表2中示出用于这一DSP的乘累加指令的一个示例,其中该指令在分别作为Source1-4存取的数据值A1、A2、B1及B2上执行。
                          表2
采用这一技术,在一条指令中相乘两组两个值然后加到一个累计值上。
这一乘累加指令具有有限的通用性,因为它总是加在累加值上。结果,难于将该指令用在乘累加以外的运算上。例如,复数乘法是在多媒体应用中经常使用的。两个复数(诸如,r1 i1与r2 i2)的乘法是按照下述等式执行的:
实部=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
Multiply-Add Source1,Source2
  A1   A2   A3   A4
  B1   B2   B3   B4
  =
  A1B1+A2B2   A3B3+A4B4
Source1Source2Result1
                   表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公司制造的现有处理器(诸如Pentium处理器)所用的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。
控制位T611,位11,指示操作是否要以饱和模式进行。如果T611等于1,则执行饱和操作。如果T611等于0,则执行非饱和操作。稍后将描述饱和操作。
控制位S612,位10,指示带符号操作的使用。如果S612等于1,则执行带符号操作。如果S612等于0,则执行无符号操作。
图6b示出按照本发明的一个实施例用于指示使用分组数据的第二控制信号格式。这一格式对应于可从Intel公司文献销售处(邮政信箱7641,Mt.prospect IL.60056-7641)购得的“Pentium处理器系列用户手册”中描述的通用整数操作码格式。注意,OP601、SZ610、T611及S612全部组合进一个大字段中。对于一些控制信号,位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。这一通用格式允许寄存器对寄存器、存储器对寄存器、寄存器被存储器、寄存器被寄存器、寄存器被立即数、寄存器对存储器的寻址。在一个实施例中,这一通用格式也能支持整数寄存器对寄存器及寄存器对整数寄存器的寻址。
饱和/非饱和的描述
如上所述,T611指示操作是否可选择饱和。如果允许了饱和的操作结果上溢或下溢出数据的范围时,其结果将被箝位。箝位意味着如果结果超出范围的最大或最小值时,便将结果设定在最大或最小值上。在下溢的情况中,饱和将结果箝位到范围的最低值上,而在上溢的情况中,则到最高值上。表4中示出各数据格式的允许范围。
                  表4
  数据格式   最小值   最大值
  无符号字节   0   255
  带符号字节   -128   127
  无符号字   0   65535
  带符号字   -32768   32767
  无符号双字   0   264-1
  带符号双字   -263   263-1
如上所述,T611指示正在执行饱和操作。因此,使用无符号字节数据格式,如果操作结果=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乘法器A810、16×16乘法器B811、16×16乘法器C812及16×16乘法器D813。16×16乘法器A810具有输入Source1[15:0]及Source2[15:0]。16×16乘法器B811具有输入Source1[31:16]及Source2[31:16]。16×16乘法器C812具有输入Source1[47:32]及Source2[47:32]。16×16乘法器D813具有输入Source1[63:48]及Source2[63:48]。加法器850接收16×16乘法器A810及16×16乘法器B811生成的32位中间结果,同时加法器851接收16×16乘法器C812及16×16乘法器D813生成的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
                x x x x x x x x x x x x x x x x            16位
                                                           被乘数
                x x x x x x x x x x x x x x x x            16位
                                                           乘数
                x x x x x x x x x x x x x x x x            pp0
               x x x x x x x x x x x x x x x x             pp1
              x x x x x x x x x x x x x x x x              pp2
             x x x x x x x x x x x x x x x x               pp3
            x x x x x x x x x x x x x x x x                pp4
           x x x x x x x x x x x x x x x x                 pp5
          x x x x x x x x x x x x x x x x                  pp6
         x x x x x x x x x x x x x x x x                   pp7
        x x x x x x x x x x x x x x x x                    pp8
       x x x x x x x x x x x x x x x x                     pp9
      x x x x x x x x x x x x x x x x                      pp10
     x x x x x x x x x x x x x x x x                       pp11
    x x x x x x x x x x x x x x x x                        pp12
   x x x x x x x x x x x x x x x x                         pp13
  x x x x x x x x x x x x x x x x                          pp14
 x x x x x x x x x x x x x x x x                           pp15
x x x x x x x        ·    ·  ·  ·  ·  x x x x x x x   32位结果
另一方面,下面表6中所示的2位Booth乘法器的操作不同。在这一情况中总共有8个部分乘积及每个部分乘积为17位长。每一部分乘积具有其本身的控制各自的部分乘积内容的Booth编码器。在替代实施例中,也能使用其它Booth编码器方案来选择部分乘积。
典型的2位Booth编码器具有五个输出,它们用于0、加1、加2、减1及减2运算。其真值表在下面的表6中给出。
                        表6
                BOOTH=-2yk+yk+yk-1
  yk+1   YK   yk-1   BOOTH
  00001111   00110011   01010101   0112-2-1-10   0加1加1加2减2减1减10   (Z)(P1)(P2)(M2)(M2)(M1)(M1)(Z)
如表6中所述,yk+1、yk及yk-1是递降的位次序的相邻乘数位。下面的表7进一步描述按照Booth编码器输出的部分乘积的形式。
                                                                                      表7
                                                                                 17位0串
Figure A20061000257100251
IF ZERO=1 then
                                                                                 16位被乘数
Figure A20061000257100252
IF PLUS1=1 then
                                                                                  向左移位1位的16位被乘数
Figure A20061000257100253
IF PLUS2=1 then
                                                                                   16位被乘数的补码
IF MINUS1=1 then
                                                                                    求补的和向左移位1位的16位被乘数
Figure A20061000257100255
IF MINUS2=1 then
不是采用符号延伸部分乘积,而是采用符号生成法来减少部分乘积缩短所需的进位同一地址(Carry Same Address(CSA))的数目。表8示出了符号生成方法。将部分乘积的符号位的补码预挂在部分乘积上。然后将两个1位预挂在符号位的补码上。
                 表8
  符号延伸法   符号生成法
S1 S1 S1部分乘积11S2 S2部分乘积2部分乘积3   11 S1部分乘积1 S2部分乘积21 S3部分乘积3
下面的表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:2 CSA1130将乘法器1110与120生成的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
Multiply-Add Source1,Source2
r1 i2 r1 i1
  r2   -i2   i2   r2
                    =
  实部r1r2-i1i2   虚部r1i2+r2i1
Source1Source2Result
Multiply-Add Source1,Source2
r1 i1 r1 i1
  r2   -i2   i2   r2
                    =
  实部r1r2-i1i2   虚部r1i2+r2i1
Source1Source2Result1
Packed Shift Right Source1,Source2
  实部1   虚部1
                16
                =
  实部1   虚部1
Result1Result2
作为另一示例,表10b示出用来将三个复数相乘的指令。
               表10b
       Pack Result2,Result2
  实部1   虚部1
  实部1   虚部1
                  =
  实部1   虚部1   实部1   虚部1
Result2Result2Result3
            Multiply-Add Result3,Source3
  实部1r1r2-i1i2   虚部1r1i2+r2i1   实部1r1r2-i1i2   虚部1r1i2+r2i1
r3 -i3 i3 r3
                            =
  实部2   虚部2
Result3Source3Result4
2)乘累加运算
所公开的乘-加指令也能用来乘与累加值。例如,可将两组四个元素(A1-4及B1-4)相乘及累加,如下面表11中所示。在一个实施例中,将表6中所示各指令实现成在每一时钟周期中完成。
                 表11
    Multiply-Add Source1,Source2
  0   0   A1   A2
  0   0   B1   B2
                    =
  0   A1B1+A2B2
Source1Source2Result1
Multiply-Add Source3,Source4
0 0 A3 A4
  0   0   B3   B4
                =
  0   A3A4+B3B4
Source3Source4Result2
  Unpacked Add Result1,Result2
  0   A1B1+A2B2
  0   A3A4+B3B4
      =
  0   A1B1+A2B2+A3A4+B3B4
Result1Result2Result3
如果各组中的数据元素数目超过8且为4的倍数,如果如下面表12中所示那样执行的话,这些组的乘法与累加需要较少的指令。
               表12
  Multiply-Add Source1,Source2
A1 A2 A3 A4
  B1   B2   B3   B4
                  =
  A1B1+A2B2   A3B3+A4B4
Source1Source2Result1
Multiply-Add Source3,Source4
  A5   A6   A7   A8
  B5   B6   B7   B8
                  =
  A5B5+A6B6   A7B7+A8B8
Source3Source4Result2
       Packed Add Result1,Result2
  A1B1+A2B2   A3B3+A4B4
  A5B5+A6B6   A7B7+A8B8
                          =
  A1B1+A2B2+A5B5+A6B6   A3B3+A4B4+A7B7+A8B8
Result1Result2Result3
         Unpack High Result3,Source5
  A1B1+A2B2+A5B5+A6B6   A3B3+A4B4+A7B7+A8B8
  0   0
                          =
  0   A1B1+A2B2+A5B5+A6B6
Result3Source5Result4
             Unpack Low Result3,Source5
  A1B1+A2B2+A5B5+A6B6   A3B3+A4B4+A7B7+A8B8
  0   0
                          =
  0   A3B3+A4B4+A7B7+A8B8
Result3Source5Result5
     Packed Add Result4,Result5
  0   A1B1+A2B2+A5B5+A6B6
  0   A3B3+A4B4+A7B7+A8B8
        =
  0   总数
Result4Result5Result6
作为另一示例,表13示出组A与B以及组C与D的单独的乘法与累加,其中这些组中每一个包含2个数据元素。
                表13
    Multiply-Add Source1,Source2
A1 A2 C1 C2
B1 B2 D1 D2
                    =
  A1B1+A2B2   C1D1+C2D2
Source1Source2Result1
作为另一示例,表14示出组A与B以及组C与D的单独的乘法与累加,其中这些组中每一个包含4个数据元素。
              表14
  Multiply-Add Source1,Source2
  A1   A2   C1   C2
B1 B2 D1 D2
                  =
  A1B1+A2B2   C1D1+C2D2
Source1Source2Result1
   Multiply-Add Source3,Source4
  A3   A4   C3   C4
  B3   B4   D3   D4
                    =
  A3B3+A4B4   C3D3+C4D4
Source3Source4Result2
             Packed Add Result1,Result2
  A1B1+A2B2   C1D1+C2D2
  A3B3+A4B4   C3D3+C4D4
                          =
  A1B1+A2B2+A3B3+A4B4   C1D1+C2D2+C3D3+C4D4
Result1Result2Result6
3)点积算法
点积(也称内积)用在信号处理及短阵运算中。例如,在计算矩阵的积、数字滤波运算(诸如FIR与IIR滤波)及计算相关序列时使用点积。由于许多话音压缩算法(如GSM、G.728、CELP及VSELP)及高保真压缩算法(诸如MPEG及子带编码)广泛地利用数字滤波及相关计算,提高点积的性能便提高这些算法的性能。
两个长度为N的序列A与B的点积定义为:
Figure A20061000257100351
执行点积计算广泛地利用乘累加运算,在其中将各序列的对应元素相乘,并累加这些结果以形成点积结果。
点积计算能用乘-加指令执行。例如,如果使用包含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
  x   y   x   y
Source1
a b c -d
Source2
  a·x+b·y   c·x-d·y
Source3
在某些情况中,蝶式运算的系数为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中任一项所述的系统,其特征在于,所述第一分组数据具有第一数据元素、第二数据元素、第三数据元素和第四数据元素,其中,第二分组数据具有第五数据元素、第六数据元素、第七数据元素和第八数据元素,其中,所述电路用来产生具有第一结果数据元素和第二结果数据元素的分组数据结果,第一结果数据元素包括第一分组数据元素乘以第五数据元素的第一乘积以及第二数据元素乘以第六数据元素的第二乘积两者之和,第二结果数据元素包括第三分组数据元素乘以第七数据元素的第三乘积以及第四数据元素乘以第八数据元素的第四乘积两者之和。
CNB2006100025714A 1995-08-31 1996-08-07 在分组数据上执行乘-加运算的方法、处理器、设备和系统 Expired - Lifetime CN100461093C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US522067 1983-08-10
US08/522,067 US6385634B1 (en) 1995-08-31 1995-08-31 Method for performing multiply-add operations on packed data
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 true CN1801082A (zh) 2006-07-12
CN100461093C 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512724A (zh) * 2015-12-01 2016-04-20 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN104335166B (zh) * 2012-06-29 2017-12-08 英特尔公司 用于执行混洗和操作的装置和方法
CN108958799A (zh) * 2012-12-28 2018-12-07 英特尔公司 用于确定直方图的指令

Families Citing this family (247)

* Cited by examiner, † Cited by third party
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
EP0638183B1 (en) 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
EP0682789B1 (en) * 1992-12-31 1998-09-09 Seiko Epson Corporation System and method for register renaming
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
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
EP1049025B1 (en) * 1998-01-21 2009-08-19 Panasonic Corporation Method and apparatus for arithmetic operations
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data 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
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
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
JP3287305B2 (ja) * 1998-04-23 2002-06-04 日本電気株式会社 積和演算装置
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
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
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
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
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
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
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
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
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
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
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
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
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
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
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
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 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
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
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
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
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
CN107430874B (zh) 2015-03-12 2021-02-02 美光科技公司 用于数据移动的设备及方法
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
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
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
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
US10169297B2 (en) 2015-04-16 2019-01-01 Hewlett Packard Enterprise Development Lp Resistive memory arrays for performing multiply-accumulate operations
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
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
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
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
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
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
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn 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
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
CN113885833A (zh) * 2016-10-20 2022-01-04 英特尔公司 用于经融合的乘加的系统、装置和方法
US10146535B2 (en) * 2016-10-20 2018-12-04 Intel Corporatoin Systems, apparatuses, and methods for chained fused multiply add
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
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
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare 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
US20200104100A1 (en) * 2017-06-30 2020-04-02 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
US11294679B2 (en) 2017-06-30 2022-04-05 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
WO2019005115A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION 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
US10749502B2 (en) * 2017-09-29 2020-08-18 Intel Corporation Apparatus and method for performing horizontal filter operations
US10664277B2 (en) * 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10552154B2 (en) * 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11074073B2 (en) 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real 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
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
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
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
US10489154B2 (en) * 2017-11-28 2019-11-26 Intel Corporation Apparatus and method for complex multiply and accumulate
US10452394B2 (en) 2017-11-28 2019-10-22 Intel Corporation Apparatus and method for complex multiplication
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
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
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

Family Cites Families (145)

* Cited by examiner, † Cited by third party
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
CN85107063A (zh) * 1985-09-27 1987-01-31 耿树贵 整数多功能叠接单元的阵列乘法器
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
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
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US5189636A (en) 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
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
DE3886739D1 (de) * 1988-06-02 1994-02-10 Itt Ind Gmbh Deutsche Einrichtung zur digitalen Signalverarbeitung.
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
CA1311063C (en) 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
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
DE58908705D1 (de) * 1989-09-20 1995-01-12 Itt Ind Gmbh Deutsche 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
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer 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
EP0636262B1 (en) 1992-04-13 2001-01-03 Meat &amp; Livestock Australia Limited Image analysis for meat
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 加算器およびこれを用いた乗算回路
JP3546437B2 (ja) 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
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
EP0654733B1 (en) 1993-11-23 2000-05-24 Hewlett-Packard Company Parallel data processing in a single processor
US5883824A (en) * 1993-11-29 1999-03-16 Hewlett-Packard Company Parallel adding and averaging circuit and method
US5390135A (en) 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5805913A (en) 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
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
CN1094610C (zh) 1994-12-02 2002-11-20 英特尔公司 可以对复合操作数进行压缩操作和拆开操作的微处理器
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
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
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
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
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
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
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
US5983253A (en) * 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
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
US6058408A (en) * 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
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 양승택 필드 및 프레임 움직임 추정 장치
AU1465497A (en) * 1995-12-19 1997-07-28 Intel Corporation A computer system performing a two-dimensional rotation of packed data representing multimedia information
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
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
US5907842A (en) * 1995-12-20 1999-05-25 Intel Corporation Method of sorting numbers to obtain maxima/minima values with ordering
US5742529A (en) * 1995-12-21 1998-04-21 Intel Corporation Method and an apparatus for providing the absolute difference of unsigned values
US5880979A (en) * 1995-12-21 1999-03-09 Intel Corporation System for providing the absolute difference of unsigned values
KR100197793B1 (ko) 1995-12-23 1999-06-15 정선종 선형 단축 배열 구조를 이용한 블록정합 움직임 추정장치
US5983257A (en) 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5793661A (en) 1995-12-26 1998-08-11 Intel Corporation Method and apparatus for performing multiply and accumulate operations on packed data
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
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
US6122725A (en) 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data 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
US6230253B1 (en) 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6192467B1 (en) * 1998-03-31 2001-02-20 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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335166B (zh) * 2012-06-29 2017-12-08 英特尔公司 用于执行混洗和操作的装置和方法
CN108958799A (zh) * 2012-12-28 2018-12-07 英特尔公司 用于确定直方图的指令
CN108958799B (zh) * 2012-12-28 2023-09-01 英特尔公司 用于确定直方图的指令
CN105512724A (zh) * 2015-12-01 2016-04-20 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置

Also Published As

Publication number Publication date
US5983256A (en) 1999-11-09
HK1072989A1 (en) 2005-09-16
US20020059355A1 (en) 2002-05-16
US8185571B2 (en) 2012-05-22
US20120331028A1 (en) 2012-12-27
US20120216018A1 (en) 2012-08-23
US8725787B2 (en) 2014-05-13
US8745119B2 (en) 2014-06-03
US20040220992A1 (en) 2004-11-04
US6385634B1 (en) 2002-05-07
US7509367B2 (en) 2009-03-24
US20110264895A1 (en) 2011-10-27
US7424505B2 (en) 2008-09-09
US8495123B2 (en) 2013-07-23
US20130198254A1 (en) 2013-08-01
US8396915B2 (en) 2013-03-12
US20130219151A1 (en) 2013-08-22
CN100461093C (zh) 2009-02-11
US8626814B2 (en) 2014-01-07
US20090265409A1 (en) 2009-10-22
US8793299B2 (en) 2014-07-29
US20130091190A1 (en) 2013-04-11
KR100329339B1 (ko) 2002-07-06
KR19990044305A (ko) 1999-06-25
US20130262547A1 (en) 2013-10-03
US20130262836A1 (en) 2013-10-03
US6035316A (en) 2000-03-07

Similar Documents

Publication Publication Date Title
CN1801082A (zh) 在分组数据上执行乘-加运算的装置
CN1107905C (zh) 在分组数据上执行乘-加运算的装置
CN1094610C (zh) 可以对复合操作数进行压缩操作和拆开操作的微处理器
CN1153129C (zh) 用于处理器定制操作的设备
US5859997A (en) Method for performing multiply-substrate operations on packed data
CN1252587C (zh) 移位分组数据的方法、装置和处理数字音频信号的系统
JP2011222024A (ja) ブース乗算方法及びシステムのための電力効率の良い符号拡張
CN1326566A (zh) 对多个带符号的数据值执行算术运算的数据处理系统和方法

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