CN100367269C - 执行部分宽度压缩数据指令的方法和设备 - Google Patents

执行部分宽度压缩数据指令的方法和设备 Download PDF

Info

Publication number
CN100367269C
CN100367269C CNB200410083584XA CN200410083584A CN100367269C CN 100367269 C CN100367269 C CN 100367269C CN B200410083584X A CNB200410083584X A CN B200410083584XA CN 200410083584 A CN200410083584 A CN 200410083584A CN 100367269 C CN100367269 C CN 100367269C
Authority
CN
China
Prior art keywords
data
instruction
packed data
micro
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB200410083584XA
Other languages
English (en)
Other versions
CN1595389A (zh
Inventor
P·鲁塞尔
T·塔卡
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 CN1595389A publication Critical patent/CN1595389A/zh
Application granted granted Critical
Publication of CN100367269C publication Critical patent/CN100367269C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

提供用于执行压缩数据指令的方法与设备。根据本发明的一个方面,处理器或其他设备可以包括:解码器,接收指定第一压缩数据操作数和第二压缩数据操作数的指令,该指令指定只对第一压缩数据操作数和第二压缩数据操作数的相应数据元素对的子集执行的操作;解码器的逻辑,将该指令变换为一个或多个微指令,所述一个或多个微指令包括第一微指令;和执行单元,与所述解码器相耦合,该执行单元使用微指令来存取和接收利用第一微指令指定的第一和第二压缩数据操作数的部分,该执行单元提供与第一微指令相关的结果给利用该指令指定的目的地。

Description

执行部分宽度压缩数据指令的方法和设备
本申请是申请日为1999年3月31日、申请号为99104620.X、发明名称为“执行部分宽度压缩数据指令”的申请的分案申请。
技术领域
本发明一般涉及计算机系统领域。更具体地,本发明涉及用于由利用诸如SIMD技术的处理器高效地执行诸如标量压缩数据指令等的部分宽度压缩数据指令的方法与设备。
背景技术
诸如2D/3D图形、图像处理、视频压缩/解压缩、话音识别算法与音频处理等多媒体应用通常要求在大量数据项上执行相同的操作(称作“数据并行性”)。每种多媒体应用通常实现需要若干诸如加(ADD)或乘(MULTIPLY)(以后称为MUL)等浮点或整数运算的一种或多种算法。通过提供其执行导致处理器并行地在多个数据项上执行相同运算的宏指令,诸如Pentium处理器体系结构与MMxTM指令集等采用的单指令多数据(SIMD)技术已使多媒体应用性能有了明显的改进(Pentium及MMxTM为Santa Clara,CA的Intel公司的注册商标或商标)。
SIMD技术特别适用于提供压缩数据格式的系统。压缩数据格式便是将寄存器中的位逻辑上分成若干固定大小的数据元素的一种数据格式,其中各元素表示独立的值。例如,64位寄存器可分解成四个16位元素,每个表示独立的16位值。然后,压缩数据指令便可并行地分开处理这些压缩数据类型中的每个元素。
参见图1,其中示出了示例性压缩数据指令。在这一示例中,压缩加法指令(如SIMD ADD)将第一压缩数据运算数X与第二压缩数据运算数Y的对应数据元素相加生成压缩数据结果Z,即X0+Y0=Z0,X1+Y1=Z1,X2+Y2=Z2及X3+Y3=Z3。将许多数据元素压缩到一个寄存器或存储器单元中并采用并行硬件执行使SIMD体系结构一次能执行多个操作,而得到明显的性能改进。例如,在这一示例中,在以前获得单一结果所需的时间中可获得四个独立的结果。
虽然利用SIMD体系结构实现的优点是显而易见的,仍存在着希望只对于压缩数据元素的子集返回单个结果的情况。
发明内容
描述了用于执行部分宽度压缩数据指令的方法与设备。按照本发明的一个方面,处理器包括多个寄存器、耦合到这多个寄存器上的寄存器重新命名单元、耦合到寄存器重新命名单元上的解码器及耦合到该解码器上的部分宽度执行单元。该寄存器重新命名单元提供了体系结构寄存器堆(register file)来存储各包含多个数据元素的压缩数据操作数。将解码器配置成解码其每个指定体系结构寄存器堆中的一个或多个寄存器的第一与第二指令集。第一指令集中的各指令指定要在存储在一个或多个指定的寄存器中的所有数据元素上执行的操作。反之,第二指令集中的各指令指定只在存储在一个或多个指定的寄存器中的数据元素子集上执行的操作。将部分宽度执行单元配置成执行由第一或第二指令集之一指定的操作。
根据本发明的一个实施例,为了执行第二指令集中的指令,处理器或其他设备可以包括解码器来接收指定第一压缩数据操作数和第二压缩数据操作数的指令。该指令可以指定只对第一和第二压缩数据操作数的相应数据元素对的子集执行的操作。该解码器可以包括将该指令变换为包括第一微指令的一个或多个微指令的逻辑。该设备可以进一步包括与解码器相耦合的执行单元,所述执行单元可以接收利用第一微指令指定的第一和第二压缩数据操作数的部分。所述执行单元可以提供与第一微指令相关的结果给利用该指令指定的目的地。
根据本发明的一个实施例,一种方法可以包括接收指定第一压缩数据操作数和第二压缩数据操作数的指令。该指令可以指定只对第一和第二压缩数据操作数的相应数据元素对的子集执行的操作。可以将该指令变换为包括第一微指令的一个或多个微指令。可以使用第一微指令只接收第一和第二压缩数据操作数的一部分。可以通过处理第一和第二压缩数据操作数的部分生成结果。并且,可以将该结果提供给利用该指令指定的目的地。
从附图及详细描述中,本发明的其它特征与优点将是显而易见的。
附图说明
本发明是参照附图中的图以示例方式而非限制性方式描述的,附图中相同的标号指示相同的元素,在附图中:
图1示出将来自第一压缩数据操作数与第二压缩数据操作数的对应数据元素一起相加的压缩加法(ADD)指令。
图2A为展示按照本发明的一个实施例的示例性计算机系统的简化方框图。
图2B为展示按照本发明的一个实施例的示例性逻辑寄存器组的简化方框图。
图2C为展示按照本发明的另一实施例的示例性逻辑寄存器组的简化方框图。
图3为展示按照本发明的一个实施例的指令执行的流程图。
图4概念性地展示执行按照本发明的各种实施例的部分宽度压缩数据指令的结果。
图5A概念性地展示用于执行按照本发明的一个实施例的全宽度压缩数据指令及部分宽度压缩数据指令的电路。
图5B概念性地展示用于执行按照本发明的另一实施例的全宽度压缩数据与部分宽度压缩数据指令的电路。
图5C概念性地展示用于执行按照本发明的又一实施例的全宽度压缩数据及部分宽度压缩数据指令的电路。
图6展示按照SIMD的示例性处理器实现的能分别作为四个独立的加法(ADD)执行单元与四个独立的乘法(MUL)执行单元操作的ADD执行单元与MUL执行单元。
图7A-7B概念性地展示分别以“交错”方式执行的全宽度压缩数据操作与部分宽度压缩数据操作。
图8A概念性地展示在操作数的一半宽度上执行操作的同时一次从逻辑寄存器中存取全宽度操作数的处理器内的电路。
图8B为进一步展示图8A的电路的定时图。
图9概念性地展示通过将宏指令转换成各处理操作数的一部分全宽度的多条宏指令以“交错”方式在操作数上执行操作的无次序的流水线(pipeline)的一个实施例。
图10为进一步展示图9中描述的实施例的定时图。
图11为展示可采用来完成按照本发明的一个实施例的解码处理的解码逻辑的方框图。
具体实施方式
本文描述了用于执行部分宽度压缩数据指令的方法与设备。这里名词“全宽度压缩数据指令”意在指称在一个或多个压缩数据操作数的所有数据元素上操作的压缩数据指令(如SIMD指令)。反之,名词“部分宽度压缩数据指令”意在广泛地指称被设计成只在一个或多个压缩数据操作数的数据元素的子集上运算并返回压缩数据结果(到诸如压缩数据寄存器堆)的压缩数据指令。例如,标量SIMD指令可能只需要压缩数据操作数的最低有效对之间的操作结果。在这一示例中,压缩数据结果的其余数据元素是忽略不计的,因为它们对标量SIMD指令无意义(例如,其余数据元素是不关心的)。按照本发明的各种实施例,可以以这样的方式来配置执行单元,以便高效地容纳全宽度压缩数据指令(如SIMD指令)及部分宽度压缩数据指令集(如标量SIMD指令)两者。
在下面的详细描述中,为了说明的目的,提出了许多特定细节以便提供对本发明的彻底理解。然而,对于本技术中的普通技术人员很明显,不一定用这些特定细节来实践本发明。在其它实例中,并未示出或以方框图形式示出众所周知的器件、结构、接口及进程。
部分宽度压缩数据指令的合理性
考虑到已为在单精度浮点数据、双精度浮点数据及整数数据上采用标量运算的标量体系结构(如单指令单数据(SISD)体系结构)编写的软件的数量,希望向开发人员提供将他们的软件移植到诸如SIMD体系结构等支持压缩数据指令的体系结构上的选择,而没有必要改写他们的软件与/或学习新的指令。通过提供部分宽度压缩数据指令,简单的翻译便能将老的标量代码变换成标量压缩数据代码。例如,对于编译程序非常容易从标量代码生成标量SIMD指令。然后,随着开发人员理解能用SIMD指令优化的他们的软件部分,他们便可逐渐地利用压缩数据指令。当然采用SIMD技术的计算机系统可能也通过同样支持SISD指令来保持向后兼容。然而,许多最近的体系结构改进及这里讨论的其它因素有利于开发人员过渡到并利用SIMD技术,即使首先只采用标量SIMD指令也如此。
提供部分宽度压缩数据指令的另一合理性在于可通过只在全宽度运算数的子集上操作可达到的许多好处,其中包含降低功耗、提高速率、简洁的异常模型及提高的存储量。如下所示,根据用部分宽度压缩数据指令提供的指示,通过有选择地关闭对执行当前操作不必要的那些硬件单元可达到功率节省。
另一种不希望强制压缩数据指令返回各对数据元素的单个结果的情况包含在提供部分宽度硬件的环境中的算术运算。由于成本与/或印模(die)限制,通常不提供对诸如除法等某些算术运算的全面支持。从其性质上,即使在实现全宽度硬件(如执行单元与数据元素之间的一一对应)时,除法运算也非常长。因此,在提供部分宽度硬件的同时只支持全宽度压缩数据运算的环境中,等待时间变得甚至更长。如下面进一步所示,诸如部分宽度压缩数据除法运算等部分宽度压缩数据运算可有选择地允许其运算数的某些部分绕过除法硬件。以这一方法,只在压缩数据运算数中的数据元素的子集上运算并不招致性能恶化。
此外,与外来数据元素一起产生的异常可能导致对开发人员的混淆与/或SISD与SIMD机器之间的不兼容性。因此,只为指令意欲在其上面操作的那些数据元素报告异常是有利的。部分宽度压缩数据指令支持通过将异常条件的触发限制到结合正在对其操作的数据元素引起的那些异常条件或有可能引起混淆或SISD与SIMD机器之间不兼容的外来数据元素所产生的异常条件来允许实现可预测异常模型。
最后,在作为执行部分宽度压缩数据操作的结果而不破坏目的地压缩数据操作数部分的实施例中,部分宽度压缩数据指令有效地提供用于存储数据的附加寄存器空间。例如,如果正在压缩数据操作数的低位部分上操作,可将数据存储在高位部分中,反之亦然。
示例性计算机系统
图2A为按照本发明的一个实施例的示例性计算机系统的简化方框图。在所描绘的实施例中,计算机系统200包含处理器205、存储设备210及总线215。处理器205用总线215耦合在存储设备上。此外,诸如键盘220及显示器225等若干用户输入/输出设备也耦合在总线215上。还可通过总线215将计算机系统200耦合在网络230上。处理器205表示诸如CISC、RISC、VLIW或混合体系结构等任何类型体系结构的中央处理单元。此外,处理器205可实现在一片或多片芯片上。存储设备210表示一个或多个用于存储数据的机构。例如,存储设备210可包含只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快速存储设备与/或其它机器可读的媒体。总线215表示一条或多条总线(如AGP、PCI、ISA、X-Bus、EISA、VESA等)及桥接器(也称作总线控制器)。虽然这一实施例是相对于单处理器计算机系统描述的,应理解本发明也可在多处理器计算机系统中实现。此外虽然本实施例是相对于32位与64位计算机系统描述的,本发明不限于这些计算机系统。
图2A附加示出处理器205包含指令集单元260。当然,处理器205包含其它电路;然而,这种其它电路对理解本发明不是必要的。在任何情况中,指令集单元260包含硬件与/或固件来解码与执行一或多个指令集。在所描绘的实施例中,指令集单元260包含解码/执行单元275。解码单元将处理器205接收的指令解码成一或多条微指令。执行单元响应从解码单元接收的微指令执行适当的操作。解码单元可采用若干不同机构实现(如查找表、硬件实现、PLA等)。
在本例中,解码/执行单元275示出为包含既拥有全宽度压缩数据指令又拥有部分宽度压缩数据指令的指令集280。这些压缩数据指令在执行时可导致处理器205去执行全/部分宽度压缩浮点运算与/或全/部分宽度压缩整数运算。除了压缩数据指令,指令集280可包含在现有微处理器中找得到的其它指令。作为示例,在一个实施例中处理器205支持与Intel 32位体系结构(IA-32)与/或Intel 64位体系结构(IA-64)兼容的指令集。
指令集单元260中还包含存储器单元285。存储器单元285可包含处理器205用来存储包含浮点数据及压缩浮点数据的信息的一或多组体系结构寄存器(也称作逻辑寄存器)。此外,可包含其它逻辑寄存器用于存储整数数据、压缩整数数据、及诸如栈顶指示之类各种控制数据。这里使用了名词体系结构寄存器与逻辑寄存器来指称指令指定包含单个操作数的存储区的方式的概念。从而,逻辑寄存器可用任何数目的公知技术在硬件中实现,包含专用的物理寄存器、利用寄存器重新命名机制(下面更详细地描述)的一或多个动态分配的物理寄存器等。在任何情况中,逻辑寄存器代表可用压缩数据指令寻址的最小存储单元。
在所描绘的实施例中,已在存储设备210中存储了操作系统235及压缩数据例程240供计算机系统200执行。压缩数据例程240为可包含诸如标量SIMD指令或SIMD指令等一或多条压缩数据指令的指令序列,如下面进一步讨论的,存在着包含速度、功耗及异常处理在内的这样的情况,希望只在压缩数据操作数或一对压缩数据操作数中的数据元素的子集上执行操作(或返回单个的结果),因此,处理器205能区分全宽度压缩数据指令与部分宽度压缩数据指令并相应地执行它们是有利的。
图2B为展示按照本发明的一个实施例的示范性逻辑寄存器组的简化方框图。在这一示例中,存储器单元285包含多个标量浮点寄存器291(标量寄存器堆)及多个压缩浮点寄存器292(压缩数据寄存器堆)。在执行浮点指令时可将标量浮点寄存器291(如寄存器R0-R7)实现为栈访问的寄存器堆以便与为Intel体系结构编写的现有软件兼容。然而,在替代实施例中,可将寄存器291作为平面寄存器堆对待。在所描绘的实施例中,将各压缩浮点寄存器(如XMM0-XMM7)实现为单一128位逻辑寄存器。然而,应理解可采用更宽或更窄的寄存器来符合使用更多或更少数据元素或更大或更小数据元素的实现。此外,可提供更多或更少的压缩浮点寄存器282。类似于标量浮点寄存器291,在执行压缩浮点指令时可将压缩浮点寄存器292实现为栈访问的寄存器堆或平面寄存器堆。
图2C为展示按照本发明的另一实施例的示范性逻辑寄存器组的简化方框图。在这一示例中,存储器单元285再一次包含多个标量浮点寄存器291(标量寄存器堆)及多个压缩浮点寄存器292(压缩数据寄存器堆)。然而,在所描绘的实施例中,将各压缩浮点寄存器(如XMM0-XMM7)实现为高位293与低位寄存器294的对应的对。如下面进一步讨论的,为了指令解码的目的的而将压缩浮点寄存器292的逻辑寄存器地址空间组织成使高位与低位寄存器对用单一的位区别是有利的。例如,XMM0-XMM7的高位与低位部分可用MSR来区分。最好,各压缩浮点寄存器291宽到足以容纳四个32位单精度浮点数据元素。然而,如上所述,可采用更宽或更窄的寄存器来符合使用更多或更少数据元素或更大或更小数据元素的实现。此外,虽然本例中的逻辑压缩浮点寄存器292各包括对应的64位寄存器对,在替代实施例中各压缩浮点寄存器可包括任何数目的寄存器。
指令执行概述
已描述了可在其中实现本发明的一个实施例的示范性计算机系统,下面描述指令执行。
图3为展示按照本发明的一个实施例的指令执行的流程图。在步骤310,处理器205接收指令。在步骤320,根据指令的类型,部分宽度压缩数据指令(如标量SIMD指令)或全宽度压缩数据指令(如SIMD指令),处理以步骤330或340继续。通常在解码单元中指令的类型是根据包含在指令内的信息确定的。例如,信息可包含在附着在操作码上的前缀或后缀中,或通过立即值提供指示对应的操作要在压缩数据操作数的所有数据元素还是其子集上执行。以这一方式,相同的操作码既可用于全宽度压缩数据操作也可用于部分宽度压缩数据操作。作为代替,一组操作码可用于部分宽度压缩数据操作而不同的操作码组可用于全宽度压缩数据操作。
在任何情况中,如果指令为传统的全宽度压缩数据指令,则在步骤330通过在操作数中的各数据元素上执行指令规定的操作来确定压缩数据结果。然而,如果指令为部分宽度压缩数据指令,则在步骤340通过在数据元素的子集上执行指令规定的操作来确定结果的第一部分,而其余结果则设定为一个或多个预定的值。在一个实施例中,预定的值便是操作数之一中对应数据元素的值。这便是,可将数据元素从操作数之一的数据元素“传递通过”到压缩数据结果中的对应数据元素。在另一实施例中,全部清除(清零)结果的其余部分中的数据元素。下面描述用于执行将数据元素从操作数之一传递通过到结果的示范性逻辑及用于清除结果中的数据元素的示范性逻辑。
图4概念性地展示执行按照本发明的各种实施例的部分宽度压缩数据指令的结果。在这一示例中,操作是由执行单元440在两个逻辑源寄存器410与420的数据元素上执行的。执行单元440包含用于执行指令规定的操作的电路与逻辑。此外,执行单元440可包含允许执行单元440在部分宽度压缩数据模式或全宽度压缩数据模式中操作的选择电路。例如,执行单元440可包含传递通过电路将数据元素从逻辑源寄存器410、420之一传递到逻辑目的地寄存器430,或清除电路来清除逻辑目的地寄存器430的一或多个数据元素,等。也可采用各种其它技术来影响操作结果,包括将对操作的输入之一强制成预定的值,诸如导致操作执行其恒等函数的值或可传递通过算术运算而不发出异常信号的值(如静止的非数字(quiet nat-a-number)(QNaN))。
在所示的示例中,只将第一对数据元素(X0与Y0)上的操作结果(Z0)存储在逻辑目的地寄存器430中。假定执行单元440包含传递通过逻辑,便将逻辑目的地寄存器430的其余数据元素设置成来自逻辑源寄存器410的对应数据元素的值(即X3、X2与X1)。虽然将逻辑目的地寄存器430示出为独立的逻辑寄存器,指出它可以同时用作逻辑源寄存器410、420之一是重要的。因此,在这一上下文中应理解将逻辑目的地寄存器430的数据元素设置成来自逻辑源寄存器410、420之一的值可包含什么也不做。例如,在逻辑源寄存器410既是逻辑源又是目的地寄存器的情况中,各种实施例可利用这一点并简单地不触动要传递通过的一或多个数据元素。
作为替代,执行单元440可包含清除逻辑。从而,不是将值从逻辑源寄存器之一传递通过到逻辑目的地寄存器430,而是将结果中不必要的数据元素清除。在本例中再一次只将第一对数据元素(X0与Y0)上的操作结果(Z0)存储在逻辑目的地寄存器430中。“清除”(如设置成零或该问题的任何其它预定值)逻辑目的地寄存器430的其余数据元素。
全宽度硬件
图5A-5C分别概念性地展示既可执行全宽度压缩数据又可执行部分宽度压缩数据指令的执行单元540、560及580。包含在图5A与5C的执行单元中的选择逻辑表示示范性传递通过逻辑,而图5B的选择逻辑代表可采用的清除逻辑。在所描绘的实施例中,执行单元540、560与580各包含适当的逻辑、电路与/或固件用于在操作数(X与Y)的全宽度上并发执行操作570、571与572。
现在参见图5A,执行单元540包含选择逻辑(如多路复用器(MUX)555-557)用于在操作570产生的值与来自操作数之一的对应数据元素的值之间进行选择。可用诸如指示当前执行的操作是全宽度压缩数据操作还是部分宽度压缩数据操作的信号来控制MUX555-557。在替代实施例中,通过包含数据元素0的附加MUX与/或独立地控制各MUX可以达到附加的灵活性。提供MUX控制的各种装置都是可能的。按照一个实施例,这种控制可从指令本身始发或导出,或可通过立即值提供。例如,与指令关联的4位立即值可用来使MUX555-557直接受软件控制。可指导对应于立即值中的1的MUX去选择操作的结果,而可导致对应于0的MUX去选择传递通过数据。当然,通过采用更多或更少位来表示立即值可以在各种实现中达到更多或更少的分辨率。
现在参见图5B,执行单元540包含选择逻辑(如MUX565-567)用于在操作571产生的值与预定的值(如零)之间进行选择。如上所述MUX565-567可在公共控制下或独立地受控制。
图5C的传递通过逻辑(如MUX575-576)在操作数之一的数据元素与恒等函数值590之间进行选择。通常将恒等函数值590选择为使得在恒等函数值590与数据元素之间执行运算572的结果为数据元素的值。例如,如果运算572为乘法运算,则恒等函数值590为1。类似地,如果运算572为加法运算,恒等函数值590为0。以这一方式,可通过令对应的MUX575-577输出恒等函数值590将数据元素的值有选择地传递通过到逻辑目的地寄存器430。
在上述实施例中,电路是硬布线成使得部分宽度操作是在最低位数据元素部分上执行的。可以理解,操作可在与所示出的不同的数据元素部分上执行。同时,如上所述,通过将所有的操作耦合到MUX之类而不只是图5A-5C中所描绘的操作的子集,可使要在其上操作的数据元素成为软件可配置的。此外,虽然将传递通过与清除逻辑描述为用于对待对应于要忽略的操作的得出的数据元素的两种选择,替代实施例可采用其它技术。例如,可以输入QNaN作为对要忽略其结果的操作的操作数之一。以这一方式,与1985年3月21日公布的IEEE 754标准,IEEE std.754-1985一致的算术运算将传播NaN通过到结果而不触发算术异常。
虽然由于操作数的全宽度能并行处理而在上述实施例中达不到明显的加速,应理解通过关闭要忽略其结果的那些操作便能降低功耗。从而,可达到明显的功率节省。此外,采用QNaN与/或恒等函数值,可通过防止由不是部分宽度压缩数据操作的一部分的数据元素触发异常而维持可预测的异常模型。因此,所报告的异常局限于与部分宽度压缩数据操作意欲在其上操作的数据元素相关产生的那些。
图6展示可用来执行全宽度压缩数据指令的算术逻辑单元(ALU)的当前处理器实现。图6的ALU包含在操作数的全宽度(即所有数据元素)上执行操作所必需的电路。图6还示出该ALU包含两个不同类型的执行单元,分别用于执行不同类型的运算(如某些ALU使用独立的单元来执行加法与乘法运算)。加法执行单元与乘法执行单元分别能作为四个独立的加法执行单元及四个独立的乘法执行单元操作。作为替代,ALU可包含一或多个乘累加(MAC)单元,各能执行多于单一类型的运算。虽然以下示例假定采用加法与乘法执行单元及浮点运算,应理解诸如MAC与/或整数运算等其它执行也可使用。此外,可能最好采用部分宽度实现(如在执行单元与数据元素之间具有少于一一对应的实现)以及附加逻辑来协调执行单元的重复使用,如下所述。
部分宽度硬件和“变错执行”
图7A-7B概念性地展示正以“交错”方式分别执行的全宽度压缩数据操作及部分宽度压缩数据操作。本实施例的上下文中“交错执行”指将指令的操作数各分成独立的段并使用同一硬件顺序处理各段的进程而言。通过在连接的段的处理中引入延时而顺序地处理各段。如图7A-7B中所示,将压缩数据操作数分成“高位段”(数据元素3与2)及“低位段”(数据元素1与0)。在图7A的示例中,低位段正在处理而高位段被延时。随后,处理高位段而获得全宽度结果。在图7B的示例中,低位段正在处理,而高位数据段是否处理则取决于实现。例如,如果对应的结果是要清零的则高位数据段可能不需要处理。此外应理解如果不处理高位数据段,则高位与低位数据段可同时处理。类似地,在全宽度实现(如在执行单元与数据元素之间具有一一对应的实现)则高与低位数据段可同时处理或如图7A中所示。
此外,虽然下面的实施例是描述为只具有加法与乘法执行单元的,也可使用诸如MAC单元等其它类型的执行单元。
虽然存在着能达到交错的指令执行的若干不同方式,以下各节描述两个示范性实施例来说明本发明的这一方面。具体地,所描述的两个示范性实施例都接收指定包含128位操作数的逻辑寄存器的相同宏指令。
在第一示范性实施例中,指定包含128位操作数的逻辑寄存器的各宏指令导致从物理寄存器访问全宽度的操作数。从寄存器访问全宽度操作数之后,将操作数分成低与高位段(如利用锁存器与多路复用器)及使用相同的硬件顺序地执行。采集得出的半宽度结果并同时将它们写入单个逻辑寄存器中。
反之,在第二示范性实施例中将指定包含128位操作数的逻辑寄存器的各宏指令分成至少两条各只在一半操作数上操作的微指令。从而操作数是分成高与低位段的而各微指令独立地导致从寄存器中只访问一半操作数。在SIMD体系结构中这种分法是可能的,因为各操作数是互相独立的。虽然第二实施例的实现能以任何次序执行微指令(以按次序的或无次序的执行模型),微指令分别导致在操作数的低位与高位段上独立地或分开地执行宏指令所指定的操作。此外,各微指令导致将一半得出的操作数写入宏指令所指定的单一目的地逻辑寄存器中。
虽然将实施例描述为在其中将128位操作数分成两段的,替代实施例能使用更大或更小的操作数与/或将这些操作数分成两段以上。此外,虽然将两个示范性实施例描述为用于执行交错执行的,替代实施例可采用其它技术。
采用“交错执行”的第一示例性实施例
图8A概念性地展示从逻辑寄存器存取全宽度操作数但一次在操作数的一半宽度上执行操作的按照第一实施例的处理器内的电路。这一实施例假定处理器执行机能在每一时钟周期中处理一条指令。作为示例,假定执行下述指令序列:ADD X,Y;MUL A,B.在时间T上,通过端口1与2从它们各自的物理寄存器中各检索出128位的X及128位的Y.将X与Y两者的低位数据段,即低64位,传递给多路复用器802及804,然后向前传递给执行单元供处理。将X与Y的高位数据段,高64位保存在延时元件M1与M2中。在时间T+1上,从延时元件M1与M2中读取X与Y的高位数据段,然后向前传递到执行单元供处理。通常,将高位数据段存储在延时元件M1与M2中的延时机构允许N位(在本例中N=64)硬件处理2N位数据。然后将来自执行单元的低位结果保存在延时元件M3中直到高位结果就绪为止。然后通过端口3将两个处理步骤的结果写回到寄存器堆800。回忆在部分宽度压缩数据操作的情况中,可将低或高位结果的一或多个数据元素强制到预定值上(如零、X或Y之一中的对应数据元素的值、等)而不是加法或乘法运算的输出。
继续本示例,在时间T+1上,也已起动乘法指令。从而在时间T+1上,可能已通过端口1与2从它们各自的寄存器中检索出各128位的A与B。可将A与B两者的低位数据段,即低64位传递到多路复用器806与808中。从延时元件M1与M2中清除X与Y的高位段并传递到多路复用器806与808中之后,可将A与B的高位段保持存储在延时元件M1与M2中,通过端口3将两个处理步骤的结果写回到寄存器堆800。
从而,按照本发明的实施例,设置了只包含一半硬件的执行单元(诸如两个单精度加法执行单元及两个单精度乘法执行单元),而不是要求执行单元如在当前的处理器中发现的那样去并行处理全宽度的操作数。本实施例利用了揭示多媒体应用利用大约50%加法指令与50%乘法指令这一统计分析。根据这些统计,本实施例假定多媒体指令通常遵照下述模式:ADD,MUL,ADD,MUL,等等。通过以上述方式利用加法与乘法执行单元,本实施例提供执行单元的优化使用,从而能以较低的成本达到与当前的处理器相当的性能。
图8B为进一步说明图8A的电路的定时图。更具体地,如图8B中所示,当在时间T上发布指令“ADD X,Y”时,两个加法执行单元首先在低位数据段或图1的两个低位压缩数据段,即X0Y0及X1Y1上执行加法。在时间T+1上,用相同的执行单元在来自操作数的其余两个数据元素上执行加法运算,并将高位数据段的后面两个数据元素相加,即X2Y2与X3Y3。虽然上述实施例是参照利用两个执行单元的加法与乘法运算描述的,替代实施例可利用任何数目的执行单元与/或以交错方式执行任何数目的不同运算。
按照本实施例,可利用64位硬件来处理128位数据。一个128位寄存器可分成四个32位元素,各表示独立的32位值,在时间T上,两个加法执行单元首先在两个低位32位值上执行加法,后面跟随着在时间T+1上在高位32位值上的加法。在乘法运算的情况中,乘法执行单元以相同的方式工作。利用当前可获得的64位硬件去处理128位数据的这一能力代表了对硬件制造商的巨大成本效益。
如上所述,在后一个时钟周期上重复使用按照本实施例的加法与乘法执行单元重复执行第二个加法或乘法运算。当然,在部分宽度压缩数据指令的情况中,重复使用执行单元但没有必要重复执行运算,因为可以有选择地关闭对执行单元的供电。总之,如上所述,为了高效地执行这一重复使用或“交错执行”,利用了多媒体应用的统计表现。
如果第二加法指令跟随第一加法指令,第二加法可被调度单元延时,以便加法执行单元能完成第一加法指令,或更具体地在高位数据段上的第一加法指令。然后开始执行第二加法指令。作为替代,在无序处理器中,调度单元可确定是否可无序地执行指令流中更后面的乘法指令。如果是,调度单元可通知乘法执行单元开始处理该乘法指令。如果在时间T+1上没有可供处理的乘法指令,在第一加法指令后面调度程序将不发布指令,从而允许加法执行单元在开始第二加法指令之前定时完成第一加法指令。
本发明的又另一实施例,通过在一半时钟周期而不是整个时钟周期上在同一执行单元上执行指令而允许发布加倍的加法或乘法指令。在半时钟周期上执行一条指令有效地“双激发”硬件,即使硬件两倍快。以这一方式,可在每一个时钟周期中利用加法或乘法执行单元来处理新指令。双激发的硬件允许硬件单元以只在整个时钟周期上执行的单激发硬件两倍的效率执行。双激发硬件需要明显地更多的硬件以便在半时钟周期上高效地处理指令。
应理解,本发明的修改与变化是被上述教导涵盖的并在所附权利要求的视界内,并不脱离本发明的精神与意向范围。例如,上面虽然只描述了两个执行单元,但可提供任何数目的逻辑单元。
采用“交错执行”的第二示例性实施例
按照本发明的替代实施例,全宽度操作数的交错执行是通过将一条全宽度宏指令转换成至少两条各只在一半操作数上操作的微指令来达到的。如下面进一步描述的,通过消除没有必要确定部分宽度结果的微指令,在宏指令指定部分宽度压缩数据操作时能达到更佳性能。以这一方式,减少了处理器资源制约并且处理器不再被无意义的微指令无必要地占用。虽然下面的描述是按照具体的寄存器重新命名法编写的,应理解也可与本发明协调利用其它寄存器重新命名机制。下面描述的寄存器重新命名方法假设采用寄存器别名表(RAT)、排序缓冲器(ROB)及退役缓冲器,如在美国专利号5,446,912中详细描述的。也可实现诸如在美国专利号5,197,132中描述的替代寄存器重新命名方法。
图9概念性地展示通过将宏指令转换成各处理全宽度操作数的一部分的多条微指令以“交错”方式在操作数上执行操作的流水线的一个实施例。应指出为了避免不必要地使本发明难以理解,并未详细示出诸如取指令阶段等流水线的各种其它阶段。如所示,在流水线的解码阶段,接收全宽度宏指令,指定各存储全宽度操作数(如128位)的逻辑源寄存器。作为示例,所描述的操作数为128位压缩浮点数据操作数。在本例中,处理器支持用于存储压缩浮点数据的Y个逻辑寄存器。将宏指令转换成各导致宏指令在半宽度操作数(如64位)上执行操作的微指令,即“高位操作”与“低位操作”。
两条半宽度微指令然后进入流水线的寄存器重新命名阶段。寄存器重新命名阶段包含各种寄存器图及排序缓冲器。各微指令的逻辑源寄存器为对寄存器映象表(如RAT)中的特定寄存器项的指针。寄存器映象表中的项又指向ROB中或退役寄存器中的物理源单元的位置。按照一个实施例,为了提供上述半宽度高与低位操作,压缩浮点数据的RAT设置有Y*2个项。从而,例如,不是带有8个逻辑寄存器项的RAT,而是建立带16个项的RAT,各项编址为“高”或“低”。各项标识对应于128位逻辑寄存器的高或低部分之一的64位源。
从而各高与低位微指令在对应于各自的操作数的寄存器映象表中具有相关的项。然后微指令进入调度阶段(对无序处理)或执行阶段(对按序处理器)。各微指令检索与分开处理128位操作数的64位段。64硬件单元首先执行操作之一(如低位操作)。然后,同一64位硬件单元执行高位操作。应理解,在低与高位操作之间可执行零或数条指令。
虽然上述实施例描述将宏指令分成两条微指令,替代实施例可将宏指令分成更多的微指令。虽然图9示出将压缩浮点数据返回给带有各指定为高或低的Y*2个64位寄存器的退役寄存器堆,替代实施例可采用带有Y个128位寄存器的退役寄存器堆。此外,虽然将一个实施例描述为具有带排序缓冲器与退役寄存器堆的寄存器重新命名机构的,替代实施例可使用任何寄存器重新命名机构。例如,美国专利号5,197,132的寄存器重新命名机构采用历史队列与后备图。
图10为进一步说明图9中所描述的实施例的定时图。在时间T上,宏指令“ADD X,Y”进入图9的流水线的解码阶段。作为示例,该宏指令为128位指令。将该128位宏指令转换成两条64位微指令,即高位运算“ADD XH,YH”及低位运算“ADD XL,YL”。然后各微指令处理包含两个数据元素的一段数据。例如,在时间T上,可由64位执行单元执行低位操作。然后在不同的时间上(如时间T+N),同一64位执行单元执行高位操作。从而本发明的这一实施例特别适用于利用现有的64位硬件系统处理128位指令,而无须对硬件作重大改变。现有的系统除了现有的逻辑寄存器图之外,很容易扩展成包含新图来处理压缩的浮点。
现在参见图11,其中描述了按照本发明的一个实施例可以采用的解码逻辑。简要地说,在所描绘的实施例中,多个解码器1110、1120及1130各接收一条宏指令并将其转换成微指令。然后将微操作向下送到流水线的其余部分。当然,执行每一条宏指令不一定需要N条微指令。因此,通常的情况是只排队微指令的子集供流水线的其余部分处理。
如上所述,压缩数据操作可实现为两条半宽度微指令(如高位操作与低位操作)。不是象先有处理器实现所要求的用两个解码器独立地解码宏指令来生成高与低位操作,作为本实施例的特征可用同一解码器生成两条微指令。在本例中,这是用复制逻辑1150完成的,它复制高或低位操作,并随后适当地修正得到的复制操作来建立剩下的操作。重要的是,如上所述,通过小心地编码寄存器地址空间,能用单一的位来区分宏指令引用的寄存器(如逻辑源与目的地寄存器)。结果,最简单的形式的修正逻辑1160可包括一或多个反相器来反相适当的位以便从低位操作产生高位操作及反过来。在任何情况中,然后将复制的宏指令传递给多路复用器1170。多路复用器1170也接收解码器1120生成的微指令。在本例中,多路复用器1170在有效性解码器1180的控制下输出用于压缩数据操作(包含部分宽度压缩数据操作)的复制的微指令,并输出从解码器1120接收的用于压缩数据操作以外的操作的微指令。因此,优化操作码图来简化复制逻辑1150对压缩数据操作的检测是有利的。例如,如果只需要检验宏指令的一小部分来区别压缩数据操作与其它操作,则有效性解码器1180可采用较少的电路。
在为了执行部分宽度压缩数据操作的目的而将源数据元素传递通过到逻辑目的地寄存器的实现中,除了类似于相对于图5A与5C描述的选择逻辑之外,可包含逻辑来消除(消灭)高或低位操作之一,为了性能原因,最好及早在流水线中消除无关的微指令。这一消除可按照通过利用从微指令长度确定电路1190输出的微指令选择信号描绘的实施例来完成。该微指令长度确定逻辑1190检验一部分宏指令并生成指示要在流水线中向下进行的一或多条微指令的特定组合的微指令选择信号。在标量SIMD指令的情况中,只允许进行得出的高与低位操作之一。例如,微指令选择信号可表示为标识哪些微指令要保留及哪些要消除的位屏蔽。作为替代,微指令选择信号可简单地指示从预定的起点开始要消除或保留的微指令的数目。执行上述消除所需的逻辑取决于引导微指令通过流水线的其余部分的导航机制而变化。例如,如果微指令是排队的,可能要增加逻辑来操作微指令队列的头与尾指针以导致用后面生成的有效微指令来改写无效的微指令,许多其它的消除技术对于本技术中的普通技术人员是熟知的。
虽然为了简单起见在所描绘的实施例中一次只示出为解码单一宏指令,但在替代实施例中可同时解码多条宏指令,同时可理解,微指令复制具有比上述实施例所示更广阔的应用性。例如,以类似于上述的方式,可用同一解码器解码全宽度及部分宽度压缩数据宏指令。如果用前缀来区分全宽度与部分宽度压缩数据宏指令,解码器可简单地忽略该前缀并以相同方式解码两种类型的指令。然后,可以修改得出的微操作中的适当的位来有选择地为数据元素全体或其子集启动处理。以这一方式,可从部分宽度压缩数据微操作生成全宽度压缩数据微操作,反之亦然,借此降低解码器的复杂性。
从而公开了用于高效地执行部分宽度压缩数据指令的方法与设备。这里描述的这些特定的设备与方法只是为了展示本发明的原理。本技术中的普通技术人员可作出形式上与细节上的许多修改而不脱离本发明的范围。虽然对于特定的最佳实施例示出了本发明,但不应认为局限于此。反之,本发明只受所附权利要求书的范围的限制。

Claims (24)

1.一种方法,包括:
接收部分宽度压缩数据指令,所述部分宽度压缩数据指令指定第一压缩数据操作数和第二压缩数据操作数在存储器中的位置,所述部分宽度压缩数据指令指定压缩数据结果的生成,该压缩数据结果具有对第一和第二压缩数据操作数的一个或多个数据元素对执行的一个或多个操作的一个或多个结果作为一个或多个数据元素,并且该压缩数据结果具有一个或多个预定值作为一个或多个剩余数据元素;和
按照所述部分宽度压缩数据指令生成压缩数据结果,其中所述生成压缩数据结果包括从所述部分宽度压缩数据指令生成一个微指令,和使用微指令来只存取第一和第二压缩数据操作数的部分。
2.根据权利要求1的方法,其中第一和第二压缩数据操作数包括128位操作数,以及其中压缩数据结果包括128位压缩数据结果。
3.根据权利要求1的方法,其中一个或多个预定值包括第一压缩数据操作数的数据元素的值。
4.根据权利要求1的方法,其中所述生成压缩数据结果包括清除压缩数据结果的一个或多个剩余数据元素。
5.根据权利要求1的方法,其中部分宽度压缩数据指令包括标量压缩数据指令,和其中压缩数据结果包括只对第一和第二压缩数据操作数的单个数据元素对执行的操作的结果。
6.根据权利要求1的方法,进一步包括将报告的异常限制到与生成所述压缩数据结果的一个或多个结果相关联的那些异常。
7.根据权利要求1的方法,进一步包括通过选择性地关闭生成压缩数据结果不需要的电路来减少功耗。
8.一种设备,包括:
寄存器堆,提供逻辑寄存器来存储压缩数据操作数,每个压缩数据操作数包括多个数据元素;
解码器,接收包括部分宽度压缩数据指令的指令,所述部分宽度压缩数据指令指定压缩数据结果的生成,该压缩数据结果包括对第一压缩数据操作数和第二压缩数据操作数的一对数据元素执行的操作的结果作为第一数据元素,并且压缩数据结果包括一个预定值作为第二数据元素;和
执行单元,与所述解码器和寄存器堆相耦合,该执行单元生成由所述部分宽度压缩数据指令指定的压缩数据结果,其中该执行单元使用按照所述部分宽度压缩数据指令生成的一个微指令来存取第一和第二压缩数据操作数的最低位部分。
9.根据权利要求8的设备,其中执行单元包括将所述第一和第二压缩数据操作数之一的数据元素传递到所述压缩数据结果的第二数据元素的电路。
10.根据权利要求8的设备,其中所述预定值包括恒等函数值。
11.根据权利要求8的设备,其中执行单元包括对所述压缩数据结果的第二数据元素进行清零的电路。
12.根据权利要求8的设备,其中部分宽度压缩数据指令包括标量压缩数据指令。
13.根据权利要求8的设备,其中第一和第二压缩数据操作数包括128位操作数,以及其中压缩数据结果包括128位操作数。
14.根据权利要求8的设备,其中部分宽度压缩数据指令指定压缩数据结果在寄存器堆的一个逻辑源寄存器中存储在第一压缩数据操作数之上。
15.根据权利要求8的设备,其中执行单元包括在处理高位的一半第一压缩数据操作数和高位的一半第二压缩数据操作数的不同时间顺序处理低位的一半第一压缩数据操作数和低位的一半第二压缩数据操作数,以及以交错方式生成第一数据元素和第二数据元素的电路。
16.根据权利要求8的设备,该设备通过选择性地关闭生成压缩数据结果不需要的执行单元的电路来减少功耗。
17.一种方法,包括:
接收指定第一压缩数据操作数和第二压缩数据操作数的指令,该指令指定只对第一和第二压缩数据操作数的相应数据元素对的子集执行的操作;
将该指令变换为包括第一微指令的一个或多个微指令;
使用第一微指令只接收第一和第二压缩数据操作数的一部分;
按照第一微指令通过处理第一和第二压缩数据操作数的部分来生成结果,其中,所述处理包括执行对第一和第二压缩数据操作数的被接收部分的一个或多个相应数据元素对的指令指定的操作;和
将该结果提供给由该指令指定的目的地。
18.根据权利要求17的方法,其中将该指令变换为一个或多个微指令进一步包括将该指令变换为第二微指令,进一步包括消除第二微指令。
19.根据权利要求17的方法,其中该指令包括标量压缩数据指令。
20.根据权利要求17的方法,其中第一压缩数据操作数和第二压缩数据操作数均包括128位压缩浮点数据操作数。
21.一种设备,包括:
解码器,接收指定第一压缩数据操作数和第二压缩数据操作数的指令,该指令指定只对第一和第二压缩数据操作数的相应数据元素对的子集执行的操作,其中该解码器将所述指令变换为一个或多个微指令,所述一个或多个微指令包括第一微指令;和
执行单元,与所述解码器相耦合,所述执行单元接收利用第一微指令指定的第一和第二压缩数据操作数的部分,所述执行单元提供与第一微指令相关的结果给由该指令指定的目的地。
22.根据权利要求21的设备,其中所述解码器将该指令变换为所述第一微指令和一个第二微指令,以及其中所述执行单元使用相同的硬件在不同的时间分别处理第一和第二微指令,并且其中执行单元消除第二微指令。
23.根据权利要求21的设备,其中该指令包括标量压缩数据指令。
24.根据权利要求21的设备,其中操作数包括128位压缩浮点数据操作数。
CNB200410083584XA 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的方法和设备 Expired - Lifetime CN100367269C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/053,127 US6230253B1 (en) 1998-03-31 1998-03-31 Executing partial-width packed data instructions
US09/053127 1998-03-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB99104620XA Division CN1286002C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的装置和方法

Publications (2)

Publication Number Publication Date
CN1595389A CN1595389A (zh) 2005-03-16
CN100367269C true CN100367269C (zh) 2008-02-06

Family

ID=21982113

Family Applications (3)

Application Number Title Priority Date Filing Date
CNB200410083584XA Expired - Lifetime CN100367269C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的方法和设备
CNB99104620XA Expired - Lifetime CN1286002C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的装置和方法
CNB2004100835854A Expired - Lifetime CN100385432C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的方法和设备

Family Applications After (2)

Application Number Title Priority Date Filing Date
CNB99104620XA Expired - Lifetime CN1286002C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的装置和方法
CNB2004100835854A Expired - Lifetime CN100385432C (zh) 1998-03-31 1999-03-31 执行部分宽度压缩数据指令的方法和设备

Country Status (7)

Country Link
US (3) US6230253B1 (zh)
CN (3) CN100367269C (zh)
DE (1) DE19914617C2 (zh)
GB (1) GB2339040C (zh)
HK (1) HK1027402A1 (zh)
SG (1) SG85630A1 (zh)
TW (1) TW470914B (zh)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
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
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
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
US6687806B1 (en) * 2000-06-15 2004-02-03 Advanced Micro Devices, Inc. Apparatus and method for generating 64 bit displacement and immediate values
CN1299198C (zh) * 2001-06-27 2007-02-07 凌阳科技股份有限公司 由可改变的指令格式而提高程序码密集度的微控制器结构
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US7200738B2 (en) 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
DE10225230B4 (de) * 2002-06-06 2004-10-21 Infineon Technologies Ag Prozessor und Verfahren zum gleichzeitigen Ausführen einer Berechnung und eines Kopiervorgangs
US7426529B2 (en) * 2002-06-06 2008-09-16 Infineon Technologies Ag Processor and method for a simultaneous execution of a calculation and a copying process
US7249350B2 (en) * 2002-09-30 2007-07-24 Intel Corporation Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions
US7386704B2 (en) 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US7668897B2 (en) * 2003-06-16 2010-02-23 Arm Limited Result partitioning within SIMD data processing systems
US7237096B1 (en) * 2004-04-05 2007-06-26 Sun Microsystems, Inc. Storing results of producer instructions to facilitate consumer instruction dependency tracking
US7383427B2 (en) * 2004-04-22 2008-06-03 Sony Computer Entertainment Inc. Multi-scalar extension for SIMD instruction set processors
US20050251649A1 (en) * 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7389406B2 (en) * 2004-09-28 2008-06-17 Intel Corporation Apparatus and methods for utilization of splittable execution units of a processor
US20060085781A1 (en) 2004-10-01 2006-04-20 Lockheed Martin Corporation Library for computer-based tool and related system and method
US7257695B2 (en) * 2004-12-28 2007-08-14 Intel Corporation Register file regions for a processing system
CN100452090C (zh) * 2006-03-14 2009-01-14 腾讯科技(深圳)有限公司 一种实现高动态光照范围的方法及系统
US7761694B2 (en) * 2006-06-30 2010-07-20 Intel Corporation Execution unit for performing shuffle and other operations
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8631224B2 (en) * 2007-09-13 2014-01-14 Freescale Semiconductor, Inc. SIMD dot product operations with overlapped operands
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8458444B2 (en) * 2009-04-22 2013-06-04 Oracle America, Inc. Apparatus and method for handling dependency conditions between floating-point instructions
US20100274961A1 (en) * 2009-04-22 2010-10-28 Golla Robert T Physically-indexed logical map table
US8504805B2 (en) * 2009-04-22 2013-08-06 Oracle America, Inc. Processor operating mode for mitigating dependency conditions between instructions having different operand sizes
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US8495125B2 (en) * 2009-05-27 2013-07-23 Microchip Technology Incorporated DSP engine with implicit mixed sign operands
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US9052890B2 (en) * 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9898283B2 (en) 2011-12-22 2018-02-20 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
WO2013095607A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
CN110471699B (zh) 2011-12-23 2023-07-28 英特尔公司 用于指令处理的处理器核、方法和系统
US9513912B2 (en) 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9477467B2 (en) * 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9513907B2 (en) 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9355061B2 (en) 2014-01-28 2016-05-31 Arm Limited Data processing apparatus and method for performing scan operations
US10108454B2 (en) * 2014-03-21 2018-10-23 Intel Corporation Managing dynamic capacitance using code scheduling
JP6307975B2 (ja) * 2014-03-28 2018-04-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
FR3021428B1 (fr) 2014-05-23 2017-10-13 Kalray Multiplication de matrices de bits utilisant des registres explicites
TWI681300B (zh) * 2014-11-14 2020-01-01 美商凱為有限責任公司 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10459731B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated Sliding window operation
US20170192789A1 (en) * 2015-12-30 2017-07-06 Rama Kishnan V. Malladi Systems, Methods, and Apparatuses for Improving Vector Throughput
US10901940B2 (en) * 2016-04-02 2021-01-26 Intel Corporation Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
US10838720B2 (en) * 2016-09-23 2020-11-17 Intel Corporation Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
CN113190791A (zh) 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997008608A1 (en) * 1995-08-31 1997-03-06 Intel Corporation A set of instructions for operating on packed data
WO1997022923A1 (en) * 1995-12-19 1997-06-26 Intel Corporation Method for performing data type operations on different register files that logically appear as single register file
WO1997022921A1 (en) * 1995-12-19 1997-06-26 Intel Corporation A method and apparatus for executing floating point and packed data instructions using a single register file
CN1173230A (zh) * 1994-12-02 1998-02-11 英特尔公司 可以对复合操作数进行压缩操作的微处理器

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675001A (en) 1970-12-10 1972-07-04 Ibm Fast adder for multi-number additions
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
JPS5824941A (ja) 1981-08-07 1983-02-15 Hitachi Ltd 演算装置
JPS58182754A (ja) * 1982-04-19 1983-10-25 Hitachi Ltd 演算処理装置
JPS60134974A (ja) 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
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
US4890218A (en) 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
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
US5126964A (en) 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
US4972362A (en) 1988-06-17 1990-11-20 Bipolar Integrated Technology, Inc. Method and apparatus for implementing binary multiplication using booth type multiplication
CA1311063C (en) 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
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
US5590365A (en) 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
JP2651267B2 (ja) 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
DE69129960T2 (de) * 1990-09-18 1998-12-24 Fujitsu Ltd System zur Gestaltung eines geteilten Speichers
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
US5303355A (en) 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
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
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
JPH06242928A (ja) 1993-02-22 1994-09-02 Nec Corp 加算器およびこれを用いた乗算回路
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5806049A (en) 1993-04-21 1998-09-08 Petruzzi; Christopher R. Data processing system for global assessment of investment opportunity and cost
US5390135A (en) 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5883824A (en) 1993-11-29 1999-03-16 Hewlett-Packard Company Parallel adding and averaging circuit and method
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
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
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
US6006318A (en) 1995-08-16 1999-12-21 Microunity Systems Engineering, Inc. General purpose, dynamic partitioning, programmable media processor
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5721892A (en) 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
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
US6470370B2 (en) * 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
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
AU1465497A (en) 1995-12-19 1997-07-28 Intel Corporation A computer system performing a two-dimensional rotation of packed data representing multimedia information
US5793661A (en) 1995-12-26 1998-08-11 Intel Corporation Method and apparatus for performing multiply and accumulate operations on packed data
US5983257A (en) * 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5835392A (en) 1995-12-28 1998-11-10 Intel Corporation Method for performing complex fast fourier transforms (FFT's)
US5880983A (en) 1996-03-25 1999-03-09 International Business Machines Corporation Floating point split multiply/add system which has infinite precision
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
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
FR2766353B1 (fr) 1997-07-28 1999-11-26 Dimso Sa Implant, notamment plaque anterieure cervicale
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
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
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
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
US7313788B2 (en) * 2003-10-29 2007-12-25 International Business Machines Corporation Vectorization in a SIMdD DSP architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1173230A (zh) * 1994-12-02 1998-02-11 英特尔公司 可以对复合操作数进行压缩操作的微处理器
WO1997008608A1 (en) * 1995-08-31 1997-03-06 Intel Corporation A set of instructions for operating on packed data
WO1997022923A1 (en) * 1995-12-19 1997-06-26 Intel Corporation Method for performing data type operations on different register files that logically appear as single register file
WO1997022921A1 (en) * 1995-12-19 1997-06-26 Intel Corporation A method and apparatus for executing floating point and packed data instructions using a single register file

Also Published As

Publication number Publication date
DE19914617A1 (de) 1999-10-14
CN1244675A (zh) 2000-02-16
US6230253B1 (en) 2001-05-08
GB2339040B (en) 2000-07-12
GB9907221D0 (en) 1999-05-26
DE19914617C2 (de) 2002-10-31
GB2339040A (en) 2000-01-12
TW470914B (en) 2002-01-01
HK1027402A1 (en) 2001-01-12
CN100385432C (zh) 2008-04-30
US20020010847A1 (en) 2002-01-24
US6970994B2 (en) 2005-11-29
CN1595389A (zh) 2005-03-16
CN1286002C (zh) 2006-11-22
US7467286B2 (en) 2008-12-16
SG85630A1 (en) 2002-01-15
CN1595390A (zh) 2005-03-16
US20050216706A1 (en) 2005-09-29
GB2339040C (en) 2008-06-16

Similar Documents

Publication Publication Date Title
CN100367269C (zh) 执行部分宽度压缩数据指令的方法和设备
CN105706050B (zh) 能量高效的多模式指令发布
JP3841131B2 (ja) 浮動小数点演算システム
KR100500890B1 (ko) 디지탈 신호처리용 집적회로구조
CN110321525A (zh) 用于稀疏-密集矩阵乘法的加速器
CN104781803B (zh) 用于架构不同核的线程迁移支持
TW413766B (en) Mixed vector/scalar register file
US8412917B2 (en) Data exchange and communication between execution units in a parallel processor
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
CN109791488A (zh) 用于执行用于复数的融合乘-加指令的系统和方法
US5878266A (en) Reservation station for a floating point processing unit
CN113050990A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
JP2000122864A (ja) デ―タ処理システムおよび集合化を用いた命令システム
CN107077321A (zh) 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
CN101739235A (zh) 将32位dsp与通用risc cpu无缝混链的处理器装置
CN110321159A (zh) 用于实现链式区块操作的系统和方法
EP3757814A1 (en) Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator
WO1999050740A1 (en) Executing partial-width packed data instructions
US11726912B2 (en) Coupling wide memory interface to wide write back paths
CN110321165A (zh) 复数向量融合乘加和复数向量乘法的高效实现
JPH096610A (ja) データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム
CN112149050A (zh) 用于增强的矩阵乘法器架构的装置、方法和系统
JP2001005640A (ja) 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置
Lee et al. Design of a high performance self-timed ARM9 processor

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
CX01 Expiry of patent term

Granted publication date: 20080206