CN104321741A - Double rounded combined floating-point multiply and add - Google Patents

Double rounded combined floating-point multiply and add Download PDF

Info

Publication number
CN104321741A
CN104321741A CN201380028676.5A CN201380028676A CN104321741A CN 104321741 A CN104321741 A CN 104321741A CN 201380028676 A CN201380028676 A CN 201380028676A CN 104321741 A CN104321741 A CN 104321741A
Authority
CN
China
Prior art keywords
operand
multiply
multiplier
add
instruction
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
CN201380028676.5A
Other languages
Chinese (zh)
Other versions
CN104321741B (en
Inventor
S·萨姆德若拉
G·玛格里斯
M·卢彭
D·R·迪泽尔
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 CN104321741A publication Critical patent/CN104321741A/en
Application granted granted Critical
Publication of CN104321741B publication Critical patent/CN104321741B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/49915Mantissa overflow or underflow in handling floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Methods, apparatus, instructions and logic are disclosed providing double rounded combined floating-point multiply and add functionality as scalar or vector SIMD instructions or as fused micro-operations. Embodiments include detecting floating-point (FP) multiplication operations and subsequent FP operations specifying as source operands results of the FP multiplications. The FP multiplications and the subsequent FP operations are encoded as combined FP operations including rounding of the results of FP multiplication followed by the subsequent FP operations. The encoding of said combined FP operations may be stored and executed as part of an executable thread portion using fused-multiply-add hardware that includes overflow detection for the product of FP multipliers, first and second FP adders to add third operand addend mantissas and the products of the FP multipliers with different rounding inputs based on overflow, or no overflow, in the products of the FP multiplier. Final results are selected respectively using overflow detection.

Description

双舍入组合浮点乘法和加法Double rounding combined floating-point multiplication and addition

技术领域technical field

本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,该指令集架构在被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。具体地,本公开涉及用于提供双舍入组合浮点乘法和加法功能的指令和逻辑。The present disclosure relates to the field of processing logic, microprocessors, and associated instruction set architectures that perform logical, mathematical, or other functional operations when executed by a processor or other processing logic. In particular, the present disclosure relates to instructions and logic for providing double rounded combined floating point multiply and add functionality.

背景技术Background technique

目前的诸多处理器通常包括用于提供计算密集型操作但提供高度数据并行性的指令,这些指令可通过使用多种数据存储设备的高效实现来使用,这些数据存储设备诸如:单指令多数据(SIMD)向量寄存器。在一些替代处理器中,指令可提供融合的操作,诸如乘法-加法操作。在一些替代的处理器中,可在单独的指令中提供这两种类型的指令和/或这两种类型的组合,诸如例如SIMD乘法-加法操作。Many of today's processors typically include instructions to provide computationally intensive operations yet provide a high degree of data parallelism, which can be exploited through efficient implementation using a variety of data storage devices such as: Single Instruction Multiple Data (SIMD) SIMD) vector registers. In some alternative processors, instructions may provide fused operations, such as multiply-add operations. In some alternative processors, the two types of instructions and/or a combination of the two types may be provided in a single instruction, such as, for example, a SIMD multiply-add operation.

过去的一些处理器已经实现了用于执行融合的浮点乘法―加法操作的指令。例如,在1990,IBM在RISC系统6000(IBM RS/6000)处理器上实现了融合的浮点乘法-加法操作。例如,涉及点积计算的一些应用可利用这些新指令来改进性能。但是,因为支持此类操作的浮点硬件的宽度可能是标准浮点乘法器和加法器的宽度的至少两倍,所以一个浮点乘法-加法器会占用两个浮点乘法器和两个浮点加法器那样多的区域。因此,融合的浮点乘法-加法器可能完全取代单独的浮点乘法器和浮点加法器,并且融合的浮点乘法-加法器可能用于仿真单个浮点乘法和/或单个浮点加法,但牺牲了一些(有可能是显著的)性能。对于未经重新编译的传统应用,或对于无法利用融合的浮点乘法-加法操作的应用,存在(有可能是显著的)性能降级。Some processors in the past have implemented instructions for performing fused floating-point multiply-add operations. For example, in 1990, IBM implemented fused floating-point multiply-add operations on the RISC System 6000 (IBM RS/6000) processor. For example, some applications involving dot product calculations can take advantage of these new instructions to improve performance. However, because the floating-point hardware supporting such operations may be at least twice the width of standard floating-point multipliers and adders, one floating-point multiply-adder would take two floating-point multipliers and two floating-point as many areas as dot adders. Thus, a fused floating-point multiply-adder may completely replace separate floating-point multipliers and floating-point adders, and a fused floating-point multiply-adder may be used to emulate a single floating-point multiply and/or a single floating-point add, But some (possibly significant) performance is sacrificed. For legacy applications that have not been recompiled, or for applications that cannot take advantage of fused floating-point multiply-add operations, there is a (potentially significant) performance degradation.

过去的一些其它处理器已经实现了用于几乎执行融合的浮点乘法―加法操作的指令。例如,在2001,HAL SPARC64通过将来自浮点乘法器的结果旁路至浮点加法器而实现了伪代码融合的浮点乘法-加法操作。虽然该方法不会遭受未重新编译的传统应用或无法利用融合的浮点乘法-加法操作的应用遇到的相同的性能降级,但浮点乘法器、旁路和浮点加法器的宽度不足以提供与真正的融合浮点乘法-加法操作相同的改进准确度。Some other processors in the past have implemented instructions for nearly performing fused floating-point multiply-add operations. For example, in 2001, HAL SPARC64 implemented pseudo-code fused floating-point multiply-add operations by bypassing the results from the floating-point multiplier to the floating-point adder. While this approach does not suffer from the same performance degradation experienced by non-recompiled legacy applications or applications that cannot take advantage of fused floating-point multiply-add operations, the floating-point multipliers, bypasses, and floating-point adders are not wide enough Provides the same improved accuracy as true fused floating-point multiply-add operations.

在2008,电气与电子工程师协会(IEEE)发布了修改的浮点标准IEEEStd 754TM-1985,IEEE Std 754-2008,其包括融合的乘法-加法(FMA)和融合的乘法-减法(FMS)操作。该IEEE标准规定了不在乘法与加法之间进行舍入的情况下的真正的IEEE融合的浮点乘法-加法操作的改进准确度。虽然标准化无疑将会促使提供IEEE FMA和FMS操作的新处理器的出现,但之前提及的性能降级和增加管芯面积的问题仍存在。In 2008, the Institute of Electrical and Electronics Engineers (IEEE) published a revised floating-point standard IEEE Std 754 TM -1985, IEEE Std 754-2008, which includes fused multiply-add (FMA) and fused multiply-subtract (FMS) operations . This IEEE standard specifies improved accuracy for true IEEE fused floating-point multiply-add operations without rounding between multiply and add. While standardization will undoubtedly lead to new processors offering IEEE FMA and FMS operations, the previously mentioned issues of performance degradation and increased die area remain.

迄今为止,尚未充分探索对此类性能受限问题、面积折衷问题以及相关的功率问题和对重新编译的需求的潜在解决方案。To date, potential solutions to such performance-limiting problems, area trade-offs, and associated power issues and need for recompilation have not been fully explored.

附图说明Description of drawings

在附图的各图中通过示例而非限制地示出本发明。The invention is shown by way of example and not limitation in the various figures of the accompanying drawings.

图1A是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的一个实施例的框图。Figure 1A is a block diagram of one embodiment of a system that executes instructions for providing double rounding combined floating point multiply and add functionality.

图1B是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施例的框图。Figure IB is a block diagram of another embodiment of a system that executes instructions for providing double rounding combined floating point multiply and add functions.

图1C是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施例的框图。Figure 1C is a block diagram of another embodiment of a system that executes instructions for providing double rounding combined floating point multiply and add functionality.

图2是执行用于提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实施例的框图。Figure 2 is a block diagram of one embodiment of a processor executing instructions for providing double rounded combined floating point multiply and add functionality.

图3A示出根据一个实施例的打包数据类型。Figure 3A illustrates a packed data type according to one embodiment.

图3B示出根据一个实施例的打包数据类型。Figure 3B illustrates a packed data type according to one embodiment.

图3C示出根据一个实施例的打包数据类型。Figure 3C illustrates a packed data type according to one embodiment.

图3D示出根据一个实施例的用于提供双舍入组合浮点乘法和加法功能的指令编码。Figure 3D illustrates instruction encoding for providing double rounded combined floating point multiply and add functionality, according to one embodiment.

图3E示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编码。Figure 3E illustrates instruction encoding for providing double rounding combined floating point multiply and add functionality, according to another embodiment.

图3F示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编码。Figure 3F illustrates instruction encoding for providing double rounding combined floating point multiply and add functionality, according to another embodiment.

图3G示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编码。FIG. 3G illustrates instruction encoding for providing double rounding combined floating point multiply and add functionality, according to another embodiment.

图3H示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编码。Figure 3H illustrates instruction encoding for providing double rounding combined floating point multiply and add functionality, according to another embodiment.

图4A示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构的一个实施例的要素。Figure 4A shows elements of one embodiment of a processor microarchitecture for executing instructions that provide double rounded combined floating point multiply and add functionality.

图4B示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构的另一实施例的要素。Figure 4B shows elements of another embodiment of a processor microarchitecture for executing instructions that provide double rounding combined floating point multiply and add functionality.

图5是用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实施例的框图。Figure 5 is a block diagram of one embodiment of a processor for executing instructions that provide double rounding combined floating point multiply and add functionality.

图6是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的一个实施例的框图。Figure 6 is a block diagram of one embodiment of a computer system for executing instructions that provide double rounding combined floating point multiply and add functionality.

图7是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另一实施例的框图。7 is a block diagram of another embodiment of a computer system for executing instructions that provide double rounding combined floating point multiply and add functionality.

图8是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另一实施例的框图。Figure 8 is a block diagram of another embodiment of a computer system for executing instructions that provide double rounding combined floating point multiply and add functionality.

图9是用于执行提供双舍入组合浮点乘法和加法功能的指令的芯片上系统的一个实施例的框图。Figure 9 is a block diagram of one embodiment of a system-on-a-chip for executing instructions that provide double rounding combined floating point multiply and add functions.

图10是用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实施例的框图。Figure 10 is a block diagram of one embodiment of a processor for executing instructions that provide double rounding combined floating point multiply and add functionality.

图11是提供双舍入组合浮点乘法和加法功能的IP核开发系统的一个实施例的框图。Figure 11 is a block diagram of one embodiment of an IP core development system that provides double rounding combined floating point multiply and add functionality.

图12示出提供双舍入组合浮点乘法和加法功能的架构仿真系统的一个实施例。Figure 12 illustrates one embodiment of an architectural emulation system that provides double rounding combined floating point multiply and add functionality.

图13示出用于转换提供双舍入组合浮点乘法和加法功能的指令的系统的一个实施例。Figure 13 illustrates one embodiment of a system for converting instructions that provide double rounding combined floating point multiply and add functionality.

图14A示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的一个实施例。Figure 14A illustrates one embodiment of an apparatus for executing an instruction that provides double rounding combined floating point multiply and add functionality.

图14B示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的另一实施例。Figure 14B illustrates another embodiment of means for executing an instruction that provides double rounding combined floating point multiply and add functionality.

图15示出用于提供双舍入组合浮点乘法和加法(或减法或转换)功能的过程的一个实施例的流程图。Figure 15 shows a flow diagram of one embodiment of a process for providing double rounding combined floating point multiply and add (or subtract or convert) functionality.

图16A示出用于提供双舍入组合浮点乘法和加法功能的过程的替代实施例的流程图。Figure 16A shows a flowchart of an alternate embodiment of a process for providing double rounding combined floating point multiply and add functionality.

图16B示出用于提供双舍入组合浮点乘法和减法功能的过程的替代实施例的流程图。Figure 16B shows a flow diagram of an alternate embodiment of a process for providing double rounding combined floating point multiply and subtract functions.

具体实施方式Detailed ways

以下描述公开了用于在处理器、计算机系统或其它处理装置之内或与处理器、计算机系统或其它处理装置相关联地提供双舍入组合浮点乘法和加法功能的指令和处理逻辑。利用单独的浮点(FP)乘法操作和后续的加法操作来编写的算法可预期在每个操作中对结果的IEEE兼容的舍入。因此,例如,即使存在可用于对融合的FP乘法-加法操作进行计算的硬件,仅利将成对的乘法和加法替换为融合的FP乘法-加法操作可能不总是令人满意。The following description discloses instructions and processing logic for providing double rounded combined floating point multiply and add functionality within or in association with a processor, computer system, or other processing apparatus. Algorithms written with a single floating-point (FP) multiply operation followed by an add operation can expect IEEE-compatible rounding of the result in each operation. Thus, for example, simply replacing pairwise multiply and add with fused FP multiply-add operations may not always be desirable, even if there is hardware available to compute fused FP multiply-add operations.

本申请中公开的新颖方法、装置、指令和逻辑将双舍入组合浮点乘法和加法、乘法和减法、或乘法和转换提供作为标量或向量SIMD指令或融合的微操作。一些方法实施例包括检测FP乘法操作和后续的FP操作(例如诸如加法、减法或转换),这些操作将FP乘法的结果指定为源操作数。FP乘法和后续的FP操作被融合并编码为组合的FP操作,包括在应用后续FP操作之前对FP乘法的结果进行舍入。通过重新编译或通过运行时间的动态融合,组合的浮点乘法和加法(或减法,或转换)操作可被用于代替单独的乘法和加法(或减法,或转换)指令,由此减少等待时间并提高指令执行效率。The novel methods, apparatus, instructions and logic disclosed in this application provide double rounding combined floating point multiply and add, multiply and subtract, or multiply and convert as scalar or vector SIMD instructions or fused micro-operations. Some method embodiments include detecting FP multiplication operations and subsequent FP operations (eg, such as addition, subtraction, or conversion) that specify the result of the FP multiplication as a source operand. The FP multiplication and the subsequent FP operation are fused and encoded as a combined FP operation, including rounding the result of the FP multiplication before applying the subsequent FP operation. Combined floating-point multiply and add (or subtract, or convert) operations can be used in place of separate multiply and add (or subtract, or convert) instructions, through recompilation or through dynamic fusion at runtime, thereby reducing latency And improve the efficiency of instruction execution.

可存储所述组合的FP操作的编码,并利用融合的乘法-加法硬件将该编码作为可执行线程部分的一部分来执行,该融合的乘法-加法硬件包括:对FP乘法器的乘积的溢出检测、用于基于FP乘法器的乘积中的溢出或无溢出利用不同的舍入输入将第三操作数加数尾数与FP乘法器的乘积相加的第一和第二FP加法器。然后利用来自溢出检测的溢出信号相应地选择最终结果。An encoding of the combined FP operation may be stored and executed as part of the executable thread portion using fused multiply-add hardware including: overflow detection on the product of the FP multiplier , first and second FP adders for adding the third operand addend mantissa to the product of the FP multiplier with different rounding inputs based on overflow or no overflow in the product of the FP multiplier. The final result is then selected accordingly using the overflow signal from the overflow detection.

因此,通过重新编译或通过软件转换或硬件中的运行时的动态融合,可减少等待时间并提高指令执行效率。Therefore, latency can be reduced and instruction execution efficiency can be improved by recompilation or by dynamic fusion of runtime in software translation or hardware.

在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构状况、事件、启用机制等多种特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本发明。此外,没有详细示出一些公知的结构、电路等等,以避免不必要地模糊本发明的实施例。In the following description, various specific details such as processing logic, processor type, microarchitecture conditions, events, enabling mechanisms, etc. are set forth to provide a more thorough understanding of the embodiments of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In addition, some well-known structures, circuits, etc. have not been shown in detail to avoid unnecessarily obscuring the embodiments of the invention.

虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本发明的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可适用于执行数据操纵或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意性目的示出了多个示例。然而,这些示例不应该被理解为具有限制性目的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非对本发明的实施例的所有可能实现方式进行穷举。Although the embodiments described below are described with reference to processors, other embodiments are applicable to other types of integrated circuits and logic devices. Similar techniques and teachings of embodiments of the present invention may be applied to other types of circuits or semiconductor devices that may also benefit from higher pipeline throughput and improved performance. The teachings of the embodiments of the invention are applicable to any processor or machine that performs data manipulation. However, the present invention is not limited to processors or machines that perform operations on 512-bit, 256-bit, 128-bit, 64-bit, 32-bit, or 16-bit data, and is applicable to any processor and machine that perform data manipulation or management. Furthermore, the following description provides examples, and the accompanying drawings show examples for illustrative purposes. However, these examples should not be construed in a limiting sense, as they are merely intended to provide illustrations of various embodiments of the invention, and are not exhaustive of all possible implementations of embodiments of the invention.

虽然下述的示例描述了在执行单元和逻辑电路情况下的指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本发明的步骤。本发明的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本发明的实施例的一个或多个操作。另选地,本发明的诸个实施例的这些步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。While the following examples describe instruction processing and dispatch in the context of execution units and logic circuits, other embodiments of the invention can also be implemented as data or instructions stored on a machine-readable tangible medium that When executed by a machine, causes the machine to perform functions consistent with at least one embodiment of the invention. In one embodiment, functions associated with embodiments of the present invention are embodied in machine-executable instructions. These instructions can be used to cause a general purpose processor or a special purpose processor programmed with these instructions to perform the steps of the present invention. Embodiments of the present invention may also be provided as a computer program product or software, which may include a machine or computer-readable medium having stored thereon instructions that can be used to instruct a computer (or other electronic device) to be programmed to perform one or more operations according to embodiments of the present invention. Alternatively, the steps of the various embodiments of the invention may be performed by dedicated hardware components containing fixed-function logic for performing the steps, or by any combination of programmed computer components and fixed-function hardware components.

被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。进一步的,指令可经由网络或其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读的格式存储或发送信息的任何机制,但不限于:软盘、光盘、致密盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传递信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。Instructions used to program logic to perform embodiments of the invention may be stored in memory in the system, such as DRAM, cache, flash memory, or other memory. Further, instructions may be distributed via a network or other computer-readable media. Thus, a computer-readable medium may include any mechanism for storing or transmitting information in a format readable by a machine such as a computer, but is not limited to: floppy disk, optical disk, compact disk read-only memory (CD-ROM), magneto-optical disk , read-only memory (ROM), random-access memory (RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic or optical cards, flash memory, or in Tangible machine-readable memory used in sending information via the Internet by electrical, optical, acoustic, or other forms of transfer signals (such as carrier waves, infrared signals, digital signals, etc.). Thus, a computer-readable medium includes any type of tangible machine-readable medium for storing or transmitting electronic instructions or information in a form readable by a machine (eg, a computer).

设计会经历多个阶段,从创新到模拟到制造。表示设计的数据可用多种方式来表示该设计。首先,如模拟中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,具有逻辑和/或晶体管门电路的电路级模型可在设计流程的其他阶段产生。此外,大多数设计在某些阶段都到达表示硬件模型中多种设备的物理配置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是在不同掩模层上对用于生成集成电路的掩模指示不同特征的存在与否的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波时,执行电信号的复制、缓冲或重传情况时,制作一个新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本发明的诸个实施例的技术的物品(诸如,编码在载波中的信息)。Designs go through multiple stages, from innovation to simulation to manufacturing. Data representing a design may represent the design in a number of ways. First, hardware may be represented using a hardware description language or other functional description language, as would be useful in simulations. Additionally, circuit-level models with logic and/or transistor gates can be generated at other stages of the design flow. Furthermore, most designs at some stage reach the level of data representing the physical configuration of the various devices in the hardware model. Using conventional semiconductor fabrication techniques, the data representing the hardware model may be data indicating the presence or absence of different features on different mask layers for the masks used to create the integrated circuit. In any design representation, data may be stored on any form of machine-readable media. Memory or magnetic/optical storage, such as a disk, may be a machine-readable medium that stores information transmitted via optical or electrical waves that are modulated or otherwise generated to convey the information. Making a new copy when performing duplication, buffering or retransmission of electrical signals when sending instructions or electrical carriers carrying codes or designs. Accordingly, a communications provider or network provider would store, at least temporarily, on a tangible machine-readable medium an item embodying techniques of embodiments of the present invention (such as information encoded in a carrier wave).

在现代处理器中,多个不同执行单元被用于处理和执行多种代码和指令。并不是所有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会是有利的。然而,某些指令具有更大的复杂度,并需要更多的执行时间和处理器资源。例如,存在浮点指令、加载/存储操作、数据移动等等。In modern processors, a number of different execution units are used to process and execute various codes and instructions. Not all instructions are created equally, as some are completed faster and others take multiple clock cycles to complete. The faster the throughput of instructions, the better the overall performance of the processor. Therefore, it would be advantageous to have a large number of instructions execute as quickly as possible. However, certain instructions have greater complexity and require more execution time and processor resources. For example, there are floating point instructions, load/store operations, data movement, and so on.

因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以逐渐地引进更多的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入输出(I/O)。As more computer systems are used for Internet, text, and multimedia applications, more processor support is gradually introduced. In one embodiment, an instruction set may be associated with one or more computer architectures, including data types, instructions, register architecture, addressing modes, memory architecture, interrupt and exception handling, and external input and output ( I/O).

在一个实施例中,指令集架构(ISA)可由一个或更多微架构来实现,微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的诸个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced MicroDevices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可使用新的或已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、以及引退寄存器组)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可寻址的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。In one embodiment, an instruction set architecture (ISA) may be implemented by one or more microarchitectures, which include processor logic and circuitry for implementing one or more instruction sets. Thus, processors with different microarchitectures may share at least a portion of a common instruction set. For example, Pentium 4 (Pentium 4) processor, The Core TM processor, as well as many processors from Advanced MicroDevices, Inc. of Sunnyvale, Calif., execute nearly identical versions of the x86 instruction set (in later versions Added some extensions), but with a different internal design. Similarly, processors designed by other processor development companies such as ARM Holdings, MIPS, or their licensors or compatibles may share at least a portion of a common instruction set, but may include different processor designs. For example, the same register architecture of an ISA may be implemented in different ways in different microarchitectures using new or known techniques, including dedicated physical registers, using register renaming mechanisms such as using register alias table RAT, reorder buffer One or more dynamically allocated physical registers of register ROB, and retirement register set). In one embodiment, registers may include: one or more registers, register architecture, register bank, or other collection of registers that may or may not be addressable by a software programmer.

在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数目、位的位置等)以特别指定将要被执行的操作以及将要被执行的操作的操作数。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的一个给定指令模板)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。In one embodiment, an instruction may include one or more instruction formats. In one embodiment, an instruction format may indicate a number of fields (number of bits, position of bits, etc.) to specify the operation to be performed and the operands of the operation to be performed. Some instruction formats can be further defined by instruction templates (or sub-formats). For example, instruction templates for a given instruction format may be defined to have different subsets of instruction format fields, and/or be defined to have different interpretations of a given field. In one embodiment, an instruction is represented using an instruction format (and, if defined, a given instruction template for that instruction format) and specifies or indicates the operation and the operands on which the operation will operate.

科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器在多个数据元素上执行一操作的一种类型的指令。SIMD技术可被用于处理器中,这些处理器将寄存器中的诸个位(bit)逻辑地划分入多个固定尺寸或可变尺寸的数据元素,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的诸个位可被组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。该数据类型可被称为“打包”数据类型或“向量”数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是存储在单个寄存器中的打包数据元素的序列,并且打包数据操作数或向量操作数可以是SIMD指令(或“打包数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行的单个向量操作,以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素次序的目的地向量操作数(也被称为结果向量操作数)。Scientific applications, financial applications, automatic vectorization general applications, RMS (recognition, mining and synthesis) applications, and vision and multimedia applications (such as, 2D/3D graphics, image processing, video compression/decompression, speech recognition algorithms and audio processing) It may be necessary to perform the same operation on a large number of data items. In one embodiment, Single Instruction Multiple Data (SIMD) refers to a type of instruction that causes a processor to perform an operation on multiple data elements. SIMD techniques can be used in processors that logically divide bits in a register into multiple fixed-size or variable-size data elements, each data element representing a separate value. For example, in one embodiment, the bits in a 64-bit register may be organized as a source operand containing four separate 16-bit data elements, each data element representing a separate 16-bit value. This data type may be referred to as a "packed" data type or a "vector" data type, and operands of this data type are referred to as packed data operands or vector operands. In one embodiment, a packed data item or vector may be a sequence of packed data elements stored in a single register, and a packed data operand or vector operand may be a SIMD instruction (or "packed data instruction" or "vector instruction" ) source or destination operand. In one embodiment, a SIMD instruction specifies a single vector operation to be performed on two source vector operands to produce data elements of the same or different size, with the same or different number of data elements, with the same or different order of data elements The destination vector operand (also known as the result vector operand).

诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所使用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。such as by Core (Core ) processors (with instruction sets including x86, MMX , Streaming SIMD Extensions (SSE), SSE2, SSE3, SSE4.1, SSE4.2 instructions), ARM processors (such as ARM Processor family having an instruction set including vector floating point (VFP) and/or NEON instructions), MIPS processors (such as the Godson family of processors developed by the Institute of Computer Technology (ICT) of the Chinese Academy of Sciences) using SIMD technology (Core and MMX are registered trademarks or trademarks of Intel Corporation, Santa Clara, California).

在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能不同的名称或功能的其他存储区域所实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多区域可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。In one embodiment, destination register/data and source register/data are generic terms denoting the source and destination of corresponding data or operations. In some embodiments, they may be implemented by registers, memory, or other storage areas having different names or functions than those shown. For example, in one embodiment, "DEST1" may be a temporary storage register or other storage area, while "SRC1" and "SRC2" are the first and second source storage registers or other storage areas, and so on. In other embodiments, two or more of the SRC and DEST memory regions may correspond to different data storage elements (eg, SIMD registers) in the same memory region. In one embodiment, one of the source registers may also serve as the destination register, for example by writing back the result of an operation performed on the first and second source data to the one of the two source registers that serves as the destination register.

图1A是根据本发明的一个实施例的示例性计算机系统的框图,具有包括执行单元以执行指令的处理器。根据本发明,诸如根据在此所描述的实施例,系统100包括诸如处理器102之类的组件,以采用包括逻辑的执行单元来执行算法以处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、XeontmXScaletm和/或StrongARMtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件和软件的任何具体组合。Figure 1A is a block diagram of an exemplary computer system having a processor including an execution unit to execute instructions, according to one embodiment of the invention. According to the present invention, such as according to the embodiments described herein, the system 100 includes components, such as a processor 102, to employ execution units including logic to execute algorithms to process data. System 100 represents a system based on a III. 4. Xeon tm , Processing systems with XScale and/or StrongARM microprocessors, although other systems (including PCs with other microprocessors, engineering workstations, set-top boxes, etc.) may also be used. In one embodiment, sample system 100 may execute a version of the WINDOWS tm operating system available from Microsoft Corporation of Redmond, Washington, USA, although other operating systems (such as UNIX and Linux), embedded software, and/or graphical user interface. Thus, embodiments of the invention are not limited to any specific combination of hardware and software.

实施例不限于计算机系统。本发明的替换实施例可被用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行参照至少一个实施例的一个或多个指令的任何其他系统。Embodiments are not limited to computer systems. Alternative embodiments of the present invention may be used in other devices, such as handheld devices and embedded applications. Some examples of handheld devices include: cellular phones, internet protocol devices, digital cameras, personal digital assistants (PDAs), handheld PCs. An embedded application may include a microcontroller, a digital signal processor (DSP), a system-on-a-chip, a network computer (NetPC), a set-top box, a network backbone, a wide area network (WAN) switch, or one or Any other system with multiple instructions.

图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108以执行算法,以执行根据本发明的一个实施例的至少一个指令。参照单处理器桌面或服务器系统来描述了一个实施例,但替代实施例可被包括在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包括处理器102以处理数据信号。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任意其它处理器设备(诸如数字信号处理器)。处理器102耦合至处理器总线110,处理器总线110可在处理器102和系统100内的其他组件之间传输数据信号。系统100的诸个元素执行本领域所熟知的常规功能。1A is a block diagram of a computer system 100 formed with a processor 102 including one or more execution units 108 to execute algorithms to execute at least one instruction according to one embodiment of the invention. One embodiment is described with reference to a single-processor desktop or server system, but alternative embodiments may be included in multi-processor systems. System 100 is an example of a "hub" system architecture. Computer system 100 includes a processor 102 to process data signals. The processor 102 may be a Complex Instruction Set Computer (CISC) microprocessor, a Reduced Instruction Set Computing (RISC) microprocessor, a Very Long Instruction Word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or any other processor devices (such as digital signal processors). Processor 102 is coupled to processor bus 110 , which may carry data signals between processor 102 and other components within system 100 . The various elements of system 100 perform conventional functions well known in the art.

在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可位于处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器组106可在多个寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中存储不同类型的数据。In one embodiment, processor 102 includes a first level (L1) internal cache memory 104 . Depending on architecture, processor 102 may have a single internal cache or multiple levels of internal cache. Alternatively, in another embodiment, the cache memory may be located external to the processor 102 . Other embodiments may also include a combination of internal and external caches, depending on specific implementations and requirements. The register file 106 can store different types of data in multiple registers (including integer registers, floating point registers, status registers, instruction pointer registers).

执行单元108(包括执行整数和浮点操作的逻辑)也位于处理器102中。处理器102还包括微代码(ucode)ROM,其存储用于特定宏指令的微代码。对于一个实施例,执行单元108包括处理打包指令集109的逻辑。通过将打包指令集109包括在通用处理器102的指令集内并包括相关的电路以执行这些指令,可使用通用处理器102中的打包数据来执行许多多媒体应用所使用的操作。因此,通过将处理器数据总线的全带宽用于对打包数据进行操作,许多多媒体应用可获得加速,并更为有效率地执行。这能减少在处理器数据总线上传输更小数据单元以在一个时间对一个数据元素执行一个或多个操作的需要。Also located in processor 102 is an execution unit 108 , which includes logic to perform integer and floating point operations. Processor 102 also includes a microcode (ucode) ROM that stores microcode for specific macroinstructions. For one embodiment, execution unit 108 includes logic to process packed instruction set 109 . By including packed instruction set 109 within the instruction set of general purpose processor 102 and associated circuitry to execute these instructions, packed data in general purpose processor 102 can be used to perform operations used by many multimedia applications. As a result, many multimedia applications can be accelerated and execute more efficiently by using the full bandwidth of the processor's data bus to operate on packed data. This can reduce the need to transfer smaller data units on the processor data bus to perform one or more operations on one data element at a time.

执行单元108的替换实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储可由处理器102执行的指令和/或数据,数据由数据信号表示。Alternative embodiments of execution unit 108 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. System 100 includes memory 120 . Memory device 120 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a flash memory device, or other memory device. Memory 120 may store instructions and/or data executable by processor 102, data being represented by data signals.

系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,以及用于存储图形命令、数据和纹理。MCH 116用于引导处理器102、存储器120以及系统100内的其他组件之间的数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供耦合至图形控制器112的图形端口。MCH 116经由存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH 116。System logic chip 116 is coupled to processor bus 110 and memory 120 . The system logic chip 116 in the illustrated embodiment is a memory controller hub (MCH). Processor 102 may communicate with MCH 116 via processor bus 110. MCH 116 provides a high bandwidth memory path 118 to memory 120 for instruction and data storage, and for storing graphics commands, data, and textures. MCH 116 is used to direct data signals between processor 102, memory 120, and other components within system 100, and to bridge data signals between processor bus 110, memory 120, and system I/O 122. In some embodiments, system logic chip 116 may provide a graphics port coupled to graphics controller 112 . MCH 116 is coupled to memory 120 via memory interface 118. Graphics card 112 is coupled to MCH 116 through accelerated graphics port (AGP) interconnect 114.

系统100使用外围设备中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由局部I/O总线提供至一些I/O设备的直接连接。局部I/O总线是高速I/O总线,用于将外围设备连接至存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储器124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线USB)以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。System 100 uses peripheral hub interface bus 122 to couple MCH 116 to I/O controller hub (ICH) 130. The ICH 130 provides direct connections to some I/O devices via the local I/O bus. The local I/O bus is a high-speed I/O bus used to connect peripheral devices to memory 120 , chipset, and processor 102 . Some examples are audio controller, firmware hub (flash BIOS) 128, wireless transceiver 126, data storage 124, legacy I/O controller including user input and keyboard interface, serial expansion port (such as Universal Serial Bus USB) and network controller 134 . Data storage devices 124 may include hard drives, floppy drives, CD-ROM devices, flash memory devices, or other mass storage devices.

对于系统的另一个实施例,根据一个实施例的指令可被用于芯片上系统。芯片上系统的一个实施例包括处理器和存储器。用于这样一个系统的存储器是闪存存储器。闪存存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。For another embodiment of the system, instructions according to one embodiment may be used in a system on a chip. One embodiment of a system on a chip includes a processor and memory. The memory used in such a system is flash memory. Flash memory can be on the same die as the processor and other system components. Additionally, other logic blocks such as memory controllers or graphics controllers may also be located on the system-on-chip.

图1B示出数据处理系统140,数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,在此描述的诸个实施例可用于替代处理系统,而不背离本发明的实施例的范围。Figure IB illustrates data processing system 140 implementing the principles of one embodiment of the present invention. Those skilled in the art will readily appreciate that the various embodiments described herein may be used in alternative processing systems without departing from the scope of the embodiments of the present invention.

计算机系统140包括处理核159,处理核159能执行根据一个实施例的至少一个指令。对于一个实施例,处理核159表示任何类型的架构的处理单元,包括但不限于:CISC、RISC或VLIW类型架构。处理核159也可适于以一种或多种处理技术来制造,并且通过充分详细地表示在机器可读介质上可以便于其制造。Computer system 140 includes processing core 159 capable of executing at least one instruction according to one embodiment. For one embodiment, processing core 159 represents a processing unit of any type of architecture, including but not limited to: CISC, RISC, or VLIW type architectures. Processing core 159 may also be adapted to be fabricated in one or more processing technologies, and may be facilitated by being represented in sufficient detail on a machine-readable medium.

处理核159包括执行单元142、一组寄存器组145以及解码器144。处理核159也包括对于理解本发明的实施例不是必需的额外电路(没有示出)。执行单元142用于执行处理核159所接收到的指令。除了执行典型的处理器指令外,执行单元142也能执行打包指令集143中的指令,用于对打包数据格式执行操作。打包指令集143包括用于执行本发明的诸个实施例的指令以及其他打包指令。执行单元142通过内部总线而耦合至寄存器组145。寄存器组145表示处理核159上的存储区域,用于存储包括数据的信息。如前所述的,可以理解,该存储区域被用于存储打包数据不是关键。执行单元142耦合至解码器144。解码器144用于将处理核159所接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,解码器用于解释指令的操作码,操作码指示应当对该指令内所指示的对应数据执行何种操作。The processing core 159 includes an execution unit 142 , a set of registers 145 and a decoder 144 . Processing core 159 also includes additional circuitry (not shown) that is not necessary to understand embodiments of the present invention. The execution unit 142 is configured to execute instructions received by the processing core 159 . In addition to executing typical processor instructions, execution unit 142 is also capable of executing instructions in packed instruction set 143 for performing operations on packed data formats. Packed instruction set 143 includes instructions for performing embodiments of the present invention, as well as other packed instructions. Execution unit 142 is coupled to register bank 145 via an internal bus. Register set 145 represents a memory area on processing core 159 for storing information, including data. As mentioned above, it can be understood that it is not critical that the storage area is used to store packed data. Execution unit 142 is coupled to decoder 144 . The decoder 144 is used to decode instructions received by the processing core 159 into control signals and/or microcode entry points. In response to these control signals and/or microcode entry points, execution unit 142 performs the appropriate operations. In one embodiment, a decoder is used to interpret an instruction's opcode, which indicates what operation should be performed on corresponding data indicated within the instruction.

处理核159耦合至总线141,用于与多个其他系统设备进行通信,这些系统设备包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/致密闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也包括I/O桥154,用于经由I/O总线153与多个I/O设备进行通信。这样的I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157、以及I/O扩展接口158。Processing core 159 is coupled to bus 141 for communicating with a number of other system devices including, but not limited to, for example, synchronous dynamic random access memory (SDRAM) controller 146, static random access memory (SRAM) Controller 147, Burst Flash Interface 148, Personal Computer Memory Card International Association (PCMCIA)/Compact Flash (CF) Card Controller 149, Liquid Crystal Display (LCD) Controller 150, Direct Memory Access (DMA) Controller 151, and Alternate bus master interface 152 . In one embodiment, data processing system 140 also includes I/O bridge 154 for communicating with a plurality of I/O devices via I/O bus 153 . Such I/O devices may include, but are not limited to, universal asynchronous receiver/transmitter (UART) 155, universal serial bus (USB) 156, Bluetooth wireless UART 157, and I/O expansion interface 158, for example.

数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行SIMD操作的处理核159,SIMD操作包括向量混合和置换功能。处理核159可编程有多种音频、视频、图像和通信算法,包括离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)、以及它们相应的逆变换)、压缩/解压缩技术(诸如色彩空间变换)、视频编码运动估计或视频解码运动补偿、以及调制/解调(MODEM)功能(诸如脉冲编码调制PCM)。One embodiment of the data processing system 140 provides mobile communications, network communications, and/or wireless communications, and provides a processing core 159 capable of performing SIMD operations, including vector mixing and permutation functions. The processing core 159 is programmable with a variety of audio, video, image, and communication algorithms, including discrete transforms (such as Walsh-Hadamard transforms, fast Fourier transforms (FFTs), discrete cosine transforms (DCTs), and their corresponding inverse transforms), compression /decompression techniques (such as color space transformation), video encoding motion estimation or video decoding motion compensation, and modulation/demodulation (MODEM) functions (such as pulse code modulation PCM).

图1C示出了能够执行用于提供双舍入组合浮点乘法和加法功能的指令的数据处理系统的其他替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存处理器167以及输入/输出系统168。输入/输出系统168可选地耦合至无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核170可适于以一种或多种处理技术来制造,并且通过充分详细地表示在机器可读介质上可以便于包括处理核170的数据处理系统160的全部或一部分的制造。Figure 1C illustrates a further alternative embodiment of a data processing system capable of executing instructions for providing double rounded combined floating point multiply and add functions. According to an alternative embodiment, data processing system 160 may include main processor 166 , SIMD coprocessor 161 , cache processor 167 , and input/output system 168 . Input/output system 168 is optionally coupled to wireless interface 169 . SIMD coprocessor 161 is capable of performing operations including instructions according to one embodiment. Processing core 170 may be adapted for fabrication in one or more processing technologies, and may be facilitated in fabrication of all or a portion of data processing system 160 including processing core 170 by being represented in sufficient detail on a machine-readable medium.

对于一个实施例,SIMD协处理器161包括执行单元162以及一组寄存器组164。主处理器166的一个实施例包括解码器165,用于识别指令集163的指令,指令集163包括根据一个实施例的用于由执行单元162所执行的指令。对于替换实施例,SIMD协处理器161也包括解码器165B的至少一部分以解码指令集163的指令。处理核170也包括对于理解本发明的实施例不是必需的额外电路(没有示出)。For one embodiment, the SIMD coprocessor 161 includes an execution unit 162 and a set of register files 164 . One embodiment of the main processor 166 includes a decoder 165 for identifying instructions of an instruction set 163 comprising instructions for execution by the execution unit 162 according to one embodiment. For an alternate embodiment, SIMD coprocessor 161 also includes at least a portion of decoder 165B to decode instructions of instruction set 163 . Processing core 170 also includes additional circuitry (not shown) that is not necessary to understand embodiments of the present invention.

在操作中,主处理器166执行数据处理指令流,数据处理指令流控制通用类型的数据处理操作,包括与高速缓存存储器167以及输入/输入系统168的交互。SIMD协处理器指令嵌入数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线171上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),任何附连的SIMD协处理器从协处理器总线171接收到这些指令。在该情况中,SIMD协处理器161将接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。In operation, main processor 166 executes data processing instruction streams that control general types of data processing operations, including interaction with cache memory 167 and input/input system 168 . SIMD coprocessor instructions are embedded in the stream of data processing instructions. The decoder 165 of the main processor 166 recognizes these SIMD coprocessor instructions as the type that should be executed by the attached SIMD coprocessor 161 . Accordingly, main processor 166 issues these SIMD coprocessor instructions (or control signals representing SIMD coprocessor instructions) on coprocessor bus 171 from which any attached SIMD coprocessors receive them. instruction. In this case, the SIMD coprocessor 161 will accept and execute any received SIMD coprocessor instructions for that SIMD coprocessor.

可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,语音通信可以数字信号的形式被接收到,其将被SIMD协处理器指令所处理,以重新生成表示该语音通信的数字音频采样。对于另一个示例,压缩音频和/或视频可以数字位流的形式被接收到,其将被SIMD协处理器指令所处理,以重新生成数字音频采样和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核170中,该单个处理核170包括执行单元162、一组寄存器组164、以及解码器165以识别指令集163的指令,指令集163包括根据一个实施例的指令。Data may be received via wireless interface 169 for processing by SIMD coprocessor instructions. For one example, a voice communication may be received in the form of a digital signal that will be processed by SIMD coprocessor instructions to regenerate digital audio samples representative of the voice communication. For another example, compressed audio and/or video may be received in the form of a digital bit stream to be processed by SIMD coprocessor instructions to regenerate digital audio samples and/or motion video frames. For one embodiment of processing core 170, main processor 166 and SIMD coprocessor 161 are integrated into a single processing core 170 that includes an execution unit 162, a set of register files 164, and a decoder 165 to identify Instructions of an instruction set 163 comprising instructions according to one embodiment.

图2是包括逻辑电路以执行根据本发明的一个实施例的指令的处理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其获取将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括诸个单元。在一个实施例中,指令预取器226从存储器获取指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微操作数或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组装为程序有序序列或微操作队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的微操作。FIG. 2 is a block diagram of the microarchitecture of a processor 200 including logic circuits to execute instructions according to one embodiment of the invention. In some embodiments, instructions according to one embodiment may be implemented as instructions having byte size, word size, double word size, quad word size, etc. and data types such as single and double precision integers and floating point data type) to perform operations on data elements. In one embodiment, in-order front end 201 is the portion of processor 200 that fetches instructions to be executed and prepares them for later use by the processor pipeline. Front end 201 may include various units. In one embodiment, instruction prefetcher 226 fetches instructions from memory and feeds the instructions to instruction decoder 228 , which then decodes or interprets the instructions. For example, in one embodiment, a decoder decodes received instructions into machine-executable one or more operations called "microinstructions" or "micro-operations" (also called micro-operands or uops) . In other embodiments, the decoder parses the instructions into opcodes and corresponding data and control fields, which are used by the micro-architecture to perform operations according to one embodiment. In one embodiment, trace cache 230 accepts decoded uops and assembles them into a program ordered sequence or trace in uop queue 234 for execution. When trace cache 230 encounters a complex instruction, microcode ROM 232 provides the micro-operations needed to complete the operation.

一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228访问微代码ROM 232以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232读取微代码序列以完成根据一个实施例的一个或多个指令。在微代码ROM 232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存230获取微操作。Some instructions are translated into a single micro-op, while others require several micro-ops to complete the entire operation. In one embodiment, if more than four micro-ops are required to complete the instruction, decoder 228 accesses microcode ROM 232 for the instruction. For one embodiment, an instruction may be decoded into a small number of micro-ops for processing at instruction decoder 228 . In another embodiment, instructions may be stored in microcode ROM 232 if several micro-ops are required to complete the operation. Trace cache 230 references the entry point programmable logic array (PLA) to determine the correct microinstruction pointer to read the microcode sequence from microcode ROM 232 to complete one or more instructions according to one embodiment. After the microcode ROM 232 finishes serializing micro-ops for instructions, the front end 201 of the machine resumes fetching micro-ops from the trace cache 230.

无序执行引擎203是将指令准备好用于执行的单元。无序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器组中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配入两个微操作队列中的一个,一个队列用于存储器操作,另一个队列用于非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。The out-of-order execution engine 203 is the unit that prepares instructions for execution. The out-of-order execution logic has several buffers for smoothing and reordering the instruction stream to optimize the performance after the instruction stream enters the pipeline, and to schedule the instruction stream for execution. The allocator logic allocates the machine buffers and resources required by each uop for execution. Register renaming logic renames logical registers as entries in the register bank. Before the instruction scheduler (memory scheduler, fast scheduler 202, slow/general purpose floating point scheduler 204, simple floating point scheduler 206), the allocator also allocates each micro-op's entry into two micro-op queues One of the queues, one for memory operations and the other for non-memory operations. The uop schedulers 202, 204, 206 determine when uops are ready for execution based on the readiness of their dependent input register operand sources and the availability of execution resources needed by the uops to complete their operations. The fast scheduler 202 of one embodiment may schedule on every half of the main clock cycle, while other schedulers may only schedule once per main processor clock cycle. The scheduler arbitrates the allocation ports to schedule uops for execution.

寄存器组208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。也存在单独的寄存器组208、210,分别用于整数和浮点操作。一个实施例的每个寄存器组208、210也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器组的结果旁路或转发给新的依赖微操作。整数寄存器组208和浮点寄存器组210也能够彼此通信数据。对于一个实施例,整数寄存器组208被划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例的浮点寄存器组210具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。Register banks 208 , 210 are located between schedulers 202 , 204 , 206 and execution units 212 , 214 , 216 , 218 , 220 , 222 , 224 in execution block 211 . There are also separate register banks 208, 210 for integer and floating point operations respectively. Each register file 208, 210 of one embodiment also includes a bypass network that bypasses or forwards just completed results that have not yet been written to the register file to new dependent micro-operations. Integer register file 208 and floating point register file 210 are also capable of communicating data with each other. For one embodiment, the integer register bank 208 is divided into two separate register banks, one register bank for low-order 32-bit data and a second register bank for high-order 32-bit data. The floating point register file 210 of one embodiment has entries that are 128 bits wide because floating point instructions typically have operands from 64 to 128 bits wide.

执行块211包括执行单元212、214、216、218、220、222、224,在执行单元212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器组208、210,寄存器组208、210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200由多个执行单元组成:地址产生单元(AGU)212、AGU 214、快速ALU(算术逻辑单元)216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、SSE以及其他操作。一个实施例的浮点ALU 222包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元216、218。一个实施例的高速ALU 216、218可执行高速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214来执行。对于一个实施例,整数ALU 216、218、220被描述为对64位数据操作数执行整数操作。在替换实施例中,ALU 216、218、220可被实现为支持大范围的数据位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的位的操作数范围。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽度打包数据操作数进行操作。Execution block 211 includes execution units 212 , 214 , 216 , 218 , 220 , 222 , 224 in which instructions are actually executed. This block includes register banks 208, 210 that store integer and floating point data operand values that the microinstructions need to execute. Processor 200 of one embodiment is comprised of multiple execution units: Address Generation Unit (AGU) 212, AGU 214, Fast ALU (Arithmetic Logic Unit) 216, Fast ALU 218, Slow ALU 220, Floating Point ALU 222, Floating Point Mobile unit 224. For one embodiment, floating point execution blocks 222, 224 perform floating point, MMX, SIMD, SSE, and other operations. The floating-point ALU 222 of one embodiment includes a 64-bit/64-bit floating-point divider for performing divide, square root, and remainder micro-operations. For embodiments of the invention, instructions involving floating point values may be processed using floating point hardware. In one embodiment, ALU operations enter high-speed ALU execution units 216,218. The high-speed ALUs 216, 218 of one embodiment can perform high-speed operations with an effective latency of half a clock cycle. For one embodiment, most complex integer operations go into the slow ALU 220 because the slow ALU 220 includes integer execution hardware for long-latency type operations, such as multipliers, shifters, flag logic, and branch processing. Memory load/store operations are performed by the AGUs 212, 214. For one embodiment, the integer ALUs 216, 218, 220 are described as performing integer operations on 64-bit data operands. In alternative embodiments, the ALUs 216, 218, 220 may be implemented to support a wide range of data bits, including 16, 32, 128, 256, etc. Similarly, floating point units 222, 224 may be implemented to support operand ranges having various widths of bits. For one embodiment, the floating point units 222, 224 may operate on 128-bit wide packed data operands in conjunction with SIMD and multimedia instructions.

在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依赖操作。因为在处理器200中微操作被投机地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能存在带有临时错误数据离开调度器并运行在流水线中的依赖操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计为捕捉提供掩码寄存器与通用寄存器之间的转换的指令。In one embodiment, the uop scheduler 202, 204, 206 dispatches dependent operations before the parent load finishes executing. Because uops are speculatively scheduled and executed in processor 200, processor 200 also includes logic to handle memory misses. If a data load misses in the data cache, there may be dependent operations that leave the scheduler with temporarily bad data and run in the pipeline. The replay mechanism tracks instructions that use erroneous data and re-executes them. Only dependent operations need to be replayed, while independent operations are allowed to complete. The scheduler and replay mechanism of one embodiment of the processor is also designed to catch instructions that provide transitions between mask registers and general registers.

术语“寄存器”指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,一实施例的寄存器不限于表示特定类型的电路。相反,一实施例的寄存器能够存储并提供数据,并且能够执行在此所述的功能。在此所述的寄存器可由处理器中的电路使用任何数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器组也包含八个多媒体SIMD寄存器,用于打包数据。对于以下讨论,寄存器应被理解为设计成保存打包数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例中也称为“mm寄存器)。”这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样打包数据操作数。在一个实施例中,在存储打包数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。进一步的,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。The term "register" refers to on-board processor storage locations used as part of an instruction to identify operands. In other words, registers are those processor storage locations that are available outside of the processor (from the programmer's perspective). However, the registers of an embodiment are not limited to representing a particular type of circuitry. In contrast, the registers of an embodiment are capable of storing and providing data and performing the functions described herein. The registers described herein may be implemented by circuitry in the processor using any number of different techniques, such as dedicated physical registers, dynamically allocated physical registers using register renaming, a combination of dedicated and dynamically allocated physical registers, and so on. In one embodiment, the integer registers store thirty-two bits of integer data. The register bank of one embodiment also contains eight multimedia SIMD registers for packing data. For the following discussion, registers should be understood as data registers designed to hold packed data, such as the 64-bit wide MMXtm registers (in some instances Also known as "mm registers) in . These MMX registers (available in both integer and floating-point formats) operate with packed data elements that accompany SIMD and SSE instructions. Similarly, 128-bit wide XMM registers involving SSE2, SSE3, SSE4, or newer technologies (collectively "SSEx") may also be used to hold such packed data operands. In one embodiment, when storing packed data and integer data, the register does not need to distinguish between these two types of data types. In one embodiment, integer and floating point data may be included in the same register bank, or in different register banks. Further, in one embodiment, floating point and integer data may be stored in different registers, or stored in the same register.

在下述附图的示例中,描述了多个数据操作数。图3A示出根据本发明的一个实施例的多媒体寄存器中的多种打包数据类型表示。图3A示出了打包字节310、打包字320、打包双字(dword)330的用于128位宽操作数的数据类型。本示例的打包字节格式310是128位长,并且包含十六个打包字节数据元素。字节在此被定义为是8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可对十六个数据元素并行地执行一个操作。In the examples of the figures described below, a plurality of data operands are depicted. Figure 3A illustrates various packed data type representations in a multimedia register according to one embodiment of the invention. FIG. 3A shows packed byte 310 , packed word 320 , packed double word (dword) 330 data types for 128-bit wide operands. The packed bytes format 310 of this example is 128 bits long and contains sixteen packed bytes data elements. A byte is defined herein to be 8-bit data. The information for each byte data element is stored: for byte 0 in bit 7 to bit 0, for byte 1 in bit 15 to bit 8, for byte 2 in bit 23 to bit 16, and finally for byte 15 Stored in bits 120 to 127. Therefore, all available bits are used in this register. This storage configuration improves the storage efficiency of the processor. Also, because sixteen data elements are accessed, one operation can now be performed on sixteen data elements in parallel.

通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在涉及SSEx技术的打包数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单个数据元素的位长。类似地,在涉及MMX和SSE技术的打包数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单个数据元素的位长。虽然图3A中所示的数据类型是128位长,但本发明的诸个实施例也可操作64位宽、256位宽、512位宽或其他尺寸的操作数。本示例的打包字格式320是128位长,并且包含八个打包字数据元素。每个打包字包含十六位的信息。图3A的打包双字格式330是128位长,并且包含四个打包双字数据元素。每个打包双字数据元素包含三十二位信息。打包四字是128位长,并包含两个打包四字数据元素。Typically, a data element is a separate piece of data stored with other data elements of the same length in a single register or memory location. In packed data sequences involving SSEx techniques, the number of data elements stored in an XMM register is 128 bits divided by the bit length of a single data element. Similarly, in packed data sequences involving MMX and SSE techniques, the number of data elements stored in an MMX register is 64 bits divided by the bit length of a single data element. Although the data type shown in FIG. 3A is 128 bits long, embodiments of the invention can operate on operands that are 64 bits wide, 256 bits wide, 512 bits wide, or other sizes. The packed word format 320 of this example is 128 bits long and contains eight packed word data elements. Each packed word contains sixteen bits of information. The packed doubleword format 330 of FIG. 3A is 128 bits long and contains four packed doubleword data elements. Each packed doubleword data element contains thirty-two bits of information. A packed quadword is 128 bits long and contains two packed quadword data elements.

图3B示出了替代的寄存器内数据存储格式。每个打包数据可包括超过一个独立数据元素。示出了三个打包数据格式:打包半数据元素314、打包单数据元素342、以及打包双数据元素343。打包半数据元素341、打包单数据元素342、打包双数据元素343的一个实施例包含定点数据元素。对于替代实施例,一个或多个打包半数据元素341、打包单数据元素342、打包双数据元素343可包含浮点数据元素。打包半数据元素341的一个替代实施例是一百二十八位长度,包含八个16位数据元素。打包单数据元素342的一个替代实施例是一百二十八位长度,且包含四个32位数据元素。打包双数据元素343的一个实施例是一百二十八位长度,且包含两个64位数据元素。可以理解的是,这样的打包数据格式进一步可被扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。Figure 3B shows an alternative in-register data storage format. Each packed data may include more than one individual data element. Three packed data formats are shown: packed half data elements 314 , packed single data elements 342 , and packed double data elements 343 . One embodiment of packed half data elements 341 , packed single data elements 342 , packed double data elements 343 includes fixed point data elements. For alternative embodiments, one or more of packed half data elements 341 , packed single data elements 342 , packed double data elements 343 may contain floating point data elements. An alternate embodiment of packed half-data elements 341 is one hundred and twenty-eight bits long, containing eight 16-bit data elements. An alternate embodiment of packed single data element 342 is one hundred and twenty-eight bits long and contains four 32-bit data elements. One embodiment of packed double data element 343 is one hundred and twenty-eight bits long and contains two 64-bit data elements. It can be appreciated that such a packed data format can be further extended to other register lengths, for example, 96 bits, 160 bits, 192 bits, 224 bits, 256 bits, 512 bits or longer.

图3C示出了根据本发明的一个实施例的多媒体寄存器中的多种有符号和无符号打包数据类型表示。无符号打包字节表示344示出了SIMD寄存器中的无符号打包字节的存储。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,等等,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以可对十六个数据元素并行地执行一个操作。有符号打包字节表示345示出了有符号打包字节的存储。注意到,每个字节数据元素的第八位是符号指示符。无符号打包字表示346示出了SIMD寄存器中字7到字0如何被存储。有符号打包字表示347类似于无符号打包字寄存器内表示346。注意到,每个字数据元素的第十六位是符号指示符。无符号打包双字表示348示出了双字数据元素如何存储。有符号打包双字表示349类似于无符号打包双字寄存器内表示348。注意到,必要的符号位是每个双字数据元素的第三十二位。Figure 3C illustrates various signed and unsigned packed data type representations in a multimedia register according to one embodiment of the invention. Unsigned packed byte representation 344 shows the storage of unsigned packed bytes in a SIMD register. The information for each byte data element is stored as bit 7 through bit 0 for byte 0, bit 15 through bit 8 for byte 1, bit 23 through bit 16 for byte 2, etc., and finally for Byte 15 is stored in bits 120 through 127. Therefore, all available bits are used in this register. This storage configuration improves the storage efficiency of the processor. Also, because sixteen data elements are accessed, one operation can be performed on sixteen data elements in parallel. Signed packed byte representation 345 shows the storage of signed packed bytes. Note that the eighth bit of each byte data element is the sign indicator. Unsigned packed word representation 346 shows how word 7 through word 0 are stored in a SIMD register. The signed packed word representation 347 is similar to the unsigned packed word in-register representation 346 . Note that the sixteenth bit of each word data element is a sign indicator. Unsigned packed doubleword representation 348 shows how doubleword data elements are stored. The signed packed dword representation 349 is similar to the unsigned packed dword in-register representation 348 . Note that the necessary sign bit is the thirty-second bit of each doubleword data element.

图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网intel.com/products/processor/manuals/上获得的“64和IA-32英特尔架构软件开发者手册组合卷2A和2B:指令集参考A-Z(Intel ArchitectureSoftware Developer's Manual Combined Volumes 2A and 2B:Instruction SetReference A-Z)”中描述的运算码格式类型相对应的具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描述。在一个实施例中,可通过一个或更多个字段361和362来编码指令。可以标识每个指令高达两个操作数位置,包括高达两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365所标识的源操作数中的一个被指令的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素,而标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。Figure 3D is compared with "Intel.com/products/processor/manuals/" 64 and IA-32 Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B: Instruction Set Reference AZ (Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B: Instruction SetReference AZ)" The opcode format type described in the corresponding has 32 or A description of one embodiment of a more bit operation code (opcode) format 360 and register/memory operand addressing modes. In one embodiment, instructions may be encoded by one or more fields 361 and 362. Can Identify up to two operand locations per instruction, including up to two source operand identifiers 364 and 365. For one embodiment, destination operand identifier 366 is the same as source operand identifier 364, while in other embodiments They are not the same. For alternative embodiments, destination operand identifier 366 is the same as source operand identifier 365, while in other embodiments they are not. In one embodiment, source operand identifier 364 and One of the source operands identified by 365 is overwritten by the result of the instruction, while in other embodiments, identifier 364 corresponds to a source register element and identifier 365 corresponds to a destination register element. For one embodiment, Operand identifiers 364 and 365 may be used to identify 32-bit or 64-bit source and destination operands.

图3E示出了具有四十个或更多位的另一个替代操作编码(操作码)格式370。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可标识每个指令中高达两个操作数位置。对于一个实施例,前缀字节378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一个实施例中,指令对由操作数标识符374和375所标识的一个或多个操作数进行操作,并且由操作数标识符374和375所标识的一个或多个操作数被指令的结果所覆写,然而在其他实施例中,由标识符374和375所标识的操作数被写入另一个寄存器中的另一个数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-索引-基址(scale-index-base)和位移(displacement)字节所部分指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。FIG. 3E shows another alternative operation code (opcode) format 370 having forty or more bits. Opcode format 370 corresponds to opcode format 360 and includes optional prefix byte 378 . Instructions according to one embodiment may be encoded by one or more of fields 378 , 371 and 372 . Through source operand identifiers 374 and 375 and through prefix byte 378, up to two operand locations in each instruction may be identified. For one embodiment, prefix byte 378 may be used to identify 32-bit or 64-bit source and destination operands. For one embodiment, the destination operand identifier 376 is the same as the source operand identifier 374, while in other embodiments they are not. For alternative embodiments, destination operand identifier 376 is the same as source operand identifier 375, while in other embodiments they are not. In one embodiment, the instruction operates on one or more operands identified by operand identifiers 374 and 375, and the one or more operands identified by operand identifiers 374 and 375 are However, in other embodiments, the operands identified by identifiers 374 and 375 are written to another data element in another register. Opcode formats 360 and 370 allow register-to-register addressing, memory to Register addressing, memory-to-register addressing, register-to-register addressing, direct register addressing, register-to-memory addressing.

接下来转到图3F,在一些替换实施例中,64位(或128位、或256位、或512位或更多)单指令多数据(SIMD)算术操作可经由协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380示出了一个这样的CDP指令,其具有CDP操作码字段382和389。对于替代实施例,该类型CDP指令操作可由字段383、384、387和388中的一个或多个来编码。可以对每个指令标识高达三个操作数位置,包括高达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,使用条件字段381,可有条件地执行指令。对于一些实施例,源数据尺寸可通过字段383来编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和类型可通过字段384来编码。Turning next to FIG. 3F, in some alternative embodiments, 64-bit (or 128-bit, or 256-bit, or 512-bit or more) single-instruction multiple-data (SIMD) arithmetic operations may be performed via coprocessor data processing (CDP ) command to execute. Operation encoding (opcode) format 380 shows one such CDP instruction with CDP opcode fields 382 and 389 . This type of CDP instruction operation may be encoded by one or more of fields 383 , 384 , 387 and 388 for alternate embodiments. Up to three operand locations may be identified per instruction, including up to two source operand identifiers 385 and 390 and one destination operand identifier 386 . One embodiment of the coprocessor can operate on 8, 16, 32 and 64 bit values. For one embodiment, instructions are performed on integer data elements. In some embodiments, using condition field 381, instructions may be executed conditionally. For some embodiments, the source data size may be encoded by field 383 . In some embodiments, zero (Z), negative (N), carry (C) and overflow (V) detection may be performed on SIMD fields. For some instructions, the saturation type may be encoded by field 384 .

接下来转到图3G,其描绘了根据另一实施例的与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“高级向量扩展编程参考(Advanced Vector Extensions Programming Reference)中描述的操作码格式类型相对应的用于提供双舍入组合浮点乘法和加法功能的另一替代操作编码(操作码)格式397。Turning next to FIG. 3G , which depicts a process in accordance with another embodiment with the " Advanced Vector Extensions Programming Reference ( Another alternative operation code (opcode) format 397 for providing double-rounded combined floating-point multiply and add functionality corresponding to the type of opcode format described in Advanced Vector Extensions Programming Reference).

原始x86指令集向1字节操作码提供多种地址字节(syllable)格式以及包含在附加字节中的直接操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,特定字节值被预留给操作码作为修改符(称为前缀prefix,因为它们被放置在指令之前)。当256个操作码字节的原始配置(包括这些特殊前缀值)耗尽时,指定单个字节以跳出(escape)到新的256个操作码集合。因为添加了向量指令(诸如,SIMD),即便通过使用前缀进行了扩展以后,也需要产生更多的操作码,并且“两字节”操作码映射也已经不够。为此,将新指令加入附加的映射中,附加的映射使用两字节加上可选的前缀作为标识符。The original x86 instruction set provided multiple address byte (syllable) formats to 1-byte opcodes and direct operands contained in additional bytes, where the address of the additional byte is known from the first "opcode" byte exist. Additionally, specific byte values are reserved for opcodes as modifiers (called prefixes because they are placed before instructions). When the original configuration of 256 opcode bytes (including these special prefix values) is exhausted, specify a single byte to escape to the new set of 256 opcodes. Because of the addition of vector instructions (such as SIMD), more opcodes need to be generated even after expansion by using prefixes, and the "two-byte" opcode mapping is no longer enough. To do this, new instructions are added to additional maps that use two bytes plus an optional prefix as identifiers.

除此外,为了便于在64位模式中实现额外的寄存器,在前缀和操作码(以及任何的用于确定操作码所需的跳出字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX具有4个“有效载荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,可具有比4位更少或更多的位。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:In addition, to facilitate the implementation of additional registers in 64-bit mode, an extra prefix (called "REX") is used between the prefix and the opcode (and any escape bytes needed to determine the opcode) . In one embodiment, REX has 4 "payload" bits to indicate the use of additional registers in 64-bit mode. In other embodiments, there may be fewer or more bits than 4 bits. The general format (corresponding generally to format 360 and/or format 370) of at least one instruction set is shown generally as follows:

[prefixes][rex]escape[escape2]opcode modrm(等等)[prefixes][rex]escape[escape2]opcode modrm(etc)

操作码格式397对应于操作码格式370,并包括可选的VEX前缀字节391(在一个实施例中,以十六进制的C4或C5开始)以替换大部分的其他公共使用的传统指令前缀字节和跳出代码。例如,以下示出了使用两个字段来编码指令的实施例,其可在原始指令中不存在第二跳出代码时使用。在以下所示的实施例中,传统跳出由新的跳出值所表示,传统前缀被完全压缩为“有效载荷(payload)”字节的一部分,传统前缀被重新申明并可用于未来的扩展,并且加入新的特征(诸如,增加的向量长度以及额外的源寄存器区分符)。Opcode format 397 corresponds to opcode format 370 and includes optional VEX prefix bytes 391 (in one embodiment, starting with C4 or C5 hexadecimal) to replace most other commonly used legacy instructions Prefix bytes and escape codes. For example, the following illustrates an embodiment using two fields to encode an instruction, which can be used when there is no second escape code in the original instruction. In the example shown below, legacy bounces are represented by new bounce values, legacy prefixes are fully compressed as part of the "payload" bytes, legacy prefixes are re-stated and available for future extensions, and Added new features (such as increased vector lengths and additional source register specifiers).

当原始指令中存在第二跳出代码时,或当需要使用REX字段中的额外的位(例如XB和W字段)时。在下文示出的替代实施例中,将第一传统跳出和传统前缀按照上述类似地压缩,并且将第二跳出代码压缩在“映射”字段中,在未来映射或特征空间可用的情况下,重新添加新的特征(例如增加的向量长度和附加的源寄存器区分符)。When there is a second jump code in the original instruction, or when extra bits in the REX field (such as the XB and W fields) need to be used. In an alternative embodiment shown below, the first legacy breakout and legacy prefix are compressed similarly as above, and the second breakout code is compressed in the "map" field, and if a future map or feature space is available, the new Add new features (such as increased vector lengths and additional source register specifiers).

根据一个实施例的指令可通过字段391和392中的一个或多个来编码。通过字段391与源操作码标识符374和375以及可选的比例-索引-基址(scale-index-base,SIB)标识符393、可选位移标识符394以及可选直接字节395相结合,可以为每个指令标识高达四个操作数位置。对于一个实施例,VEX前缀字节391可被用于标识32位或64位的源和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397所提供的功能可与操作码格式370形成冗余,而在其他实施例中它们不同。操作码格式370和397允许由MOD字段373以及由可选的SIB标识符393、可选的位移标识符394以及可选的直接字节395所部分指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。Instructions according to one embodiment may be encoded by one or more of fields 391 and 392 . Combined with source opcode identifiers 374 and 375 and optional scale-index-base (SIB) identifier 393, optional displacement identifier 394, and optional direct bytes 395 via field 391 , up to four operand locations can be identified for each instruction. For one embodiment, VEX prefix byte 391 may be used to identify 32-bit or 64-bit source and destination operands and/or 128-bit or 256-bit SIMD register or memory operands. For one embodiment, the functionality provided by opcode format 397 may be redundant with opcode format 370, while in other embodiments they differ. Opcode formats 370 and 397 allow register-to-register addressing, memory-to-register addressing as specified by MOD field 373 and in part by optional SIB identifier 393, optional displacement identifier 394, and optional direct byte 395 addressing, addressing from memory to register, addressing from register to register, addressing directly to register, and addressing from register to memory.

现在转到图3H,其描绘了根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的另一替代操作编码(操作码)格式398。操作码格式398对应于操作码格式370和397,并包括可选的EVEX前缀字节396(在一个实施例中,以十六进制的62开始)以替换大部分的其他公共使用的传统指令前缀字节和跳出代码,并提供附加的功能。根据一个实施例的指令可通过字段396和392中的一个或多个来编码。通过字段396与源操作码标识符374和375以及可选的比例-索引-基址(scale-index-base,SIB)标识符393、可选的位移标识符394以及可选的直接字节395相结合,可以标识每个指令高达四个操作数位置和掩码。对于一个实施例,EVEX前缀字节396可被用于标识32位或64位的源和目的地操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398所提供的功能可与操作码格式370或397形成冗余,而在其他实施例中它们不同。操作码格式398允许由MOD字段373以及由可选的(SIB)标识符393、可选的位移标识符394以及可选的直接字节395所部分指定的利用掩码的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:Turning now to FIG. 3H , another alternative operation code (opcode) format 398 for providing double rounded combined floating point multiply and add functionality is depicted in accordance with another embodiment. Opcode format 398 corresponds to opcode formats 370 and 397, and includes optional EVEX prefix bytes 396 (starting with hex 62 in one embodiment) to replace most other commonly used legacy instructions Prefix bytes and escape codes and provide additional functionality. Instructions according to one embodiment may be encoded by one or more of fields 396 and 392 . Pass field 396 with source opcode identifiers 374 and 375 and optional scale-index-base (SIB) identifier 393, optional displacement identifier 394, and optional direct bytes 395 Combined, up to four operand locations and masks per instruction can be identified. For one embodiment, EVEX prefix byte 396 may be used to identify 32-bit or 64-bit source and destination operands and/or 128-bit, 256-bit or 512-bit SIMD register or memory operands. For one embodiment, the functionality provided by opcode format 398 may be redundant with opcode formats 370 or 397, while in other embodiments they differ. Opcode format 398 allows register-to-register addressing with a mask specified by MOD field 373 and in part by optional (SIB) identifier 393, optional displacement identifier 394, and optional direct byte 395, Memory to register addressing, memory to register addressing, register to register addressing, direct register addressing, register to memory addressing. The general format (corresponding generally to format 360 and/or format 370) of at least one instruction set is shown generally as follows:

evex l RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm].evex l RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm].

对于一个实施例,根据EVEX格式398来编码的指令可具有额外的“荷载”位,其被用于提供掩码寄存器与通用寄存器之间的转换,并具有附加的新特征,诸如例如,用户可配置掩码寄存器、附加的操作数、从128位、256位或512位向量寄存器或待选择的更多的寄存器中的选择、等等。For one embodiment, instructions encoded according to EVEX format 398 may have additional "load" bits, which are used to provide conversion between mask registers and general purpose registers, and have additional new features such as, for example, the user can Configuration mask registers, additional operands, selection from 128-bit, 256-bit or 512-bit vector registers or more registers to be selected, etc.

例如,VEX格式397或EVEX格式398可用于提供双舍入组合浮点乘法和加法功能。此外,对于128位、256位、512位或更大(或更小)的向量寄存器,VEX格式397或EVEX格式398可用于提供双舍入组合浮点乘法和加法功能。For example, VEX format 397 or EVEX format 398 may be used to provide double rounded combined floating point multiply and add functions. Additionally, for 128-bit, 256-bit, 512-bit or larger (or smaller) vector registers, VEX format 397 or EVEX format 398 can be used to provide double-rounded combined floating-point multiply and add functions.

通过以下示例示出用于提供双舍入组合浮点乘法和加法功能的示例指令:An example instruction for providing double rounded combined floating point multiply and add functionality is shown by the following example:

将理解,在上述用于标量操作的示例指令中,Freg2、Freg3、Freg4和Freg1可被基于堆栈的FP实现方式中的隐式堆栈引用所代替。还将理解,在常规的非数值(NaN)传递使用第一操作数的实现方式中,示例的反转(R)指令在a x b±c的情况与c±a x b的情况之间具有差别。通过重新编译或通过运行时的动态融合,组合的浮点乘法和加法(或减法)操作可用于代替单独的乘法和加法(或减法)指令,由此减少等待时间并提高指令执行效率。It will be appreciated that in the above example instructions for scalar operations, Freg2, Freg3, Freg4 and Freg1 could be replaced by implicit stack references in a stack-based FP implementation. It will also be appreciated that in an implementation where conventional Not-a-Number (NaN) passing uses the first operand, the example reverse (R) instruction has difference. Through recompilation or through dynamic fusion at runtime, combined floating-point multiply and add (or subtract) operations can be used in place of separate multiply and add (or subtract) instructions, thereby reducing latency and improving instruction execution efficiency.

图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,虚线框示出了寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及无序发布/执行逻辑。Figure 4A is a block diagram illustrating an in-order pipeline along with a register renaming stage, out-of-order issue/execution pipeline in accordance with at least one embodiment of the present invention. Figure 4B is a block diagram illustrating an in-order architecture core and register renaming logic, out-of-order issue/execution logic to be included in a processor in accordance with at least one embodiment of the present invention. The solid line boxes in FIG. 4A show the in-order pipeline, and the dashed line boxes show the register renaming, out-of-order issue/execution pipeline. Similarly, the solid-lined boxes in Figure 4B show in-order architectural logic, while the dashed-lined boxes show register renaming logic and out-of-order issue/execution logic.

在图4A中,处理器流水线400包括获取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读/存储器读级414、执行级416、写回/存储器写级418、异常处理级422和提交级424。In FIG. 4A, processor pipeline 400 includes fetch stage 402, length decode stage 404, decode stage 406, allocate stage 408, rename stage 410, dispatch (also called dispatch or issue) stage 412, register read/memory read stage 414 , execute stage 416 , writeback/memory write stage 418 , exception handling stage 422 and commit stage 424 .

在图4B中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,且执行引擎单元和前端单元两者都耦合到存储器单元470。In FIG. 4B, arrows indicate coupling between two or more units, and the direction of the arrows indicates the direction of data flow between those units. FIG. 4B shows processor core 490 including front end unit 430 coupled to execution engine unit 450 , and both execution engine unit and front end unit are coupled to memory unit 470 .

核490可以是精简指令集合计算(RISC)核、复杂指令集合计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,核490可以是专用核,诸如网络或通信核、压缩引擎、图形核或类似物。Core 490 may be a Reduced Instruction Set Computing (RISC) core, a Complex Instruction Set Computing (CISC) core, a Very Long Instruction Word (VLIW) core, or a hybrid or alternative core type. As another option, core 490 may be a special purpose core, such as a network or communication core, compression engine, graphics core, or the like.

前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,该指令高速缓存单元434被耦合到指令翻译后备缓冲器(TLB)436,该指令翻译后备缓冲器436被耦合到指令获取单元438,指令获取单元438被耦合到解码单元440。解码单元或解码器可解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出、或以其他方式反映原始指令、或是从原始指令中推导而出的。解码器可以使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元434进一步耦合至存储器单元470中的第二级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。Front end unit 430 includes a branch prediction unit 432 coupled to an instruction cache unit 434 which is coupled to an instruction translation lookaside buffer (TLB) 436 which is coupled to an instruction fetch unit 438 , the instruction fetch unit 438 is coupled to the decode unit 440 . A decode unit or decoder that decodes an instruction and generates as output one or more micro-ops, microcode entry points, uops, other instructions, or other control signals that are decoded from the original instruction, or otherwise Reflects the original instruction, or is derived from the original instruction. Decoders can be implemented using a variety of different mechanisms. Examples of suitable mechanisms include, but are not limited to: look-up tables, hardware implementations, programmable logic arrays (PLAs), microcode read-only memories (ROMs), and the like. Instruction cache unit 434 is further coupled to a level two (L2) cache unit 476 in memory unit 470 . Decode unit 440 is coupled to rename/allocator unit 452 in execution engine unit 450 .

执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合至引退单元454和一个或多个调度器单元456的集合。调度器单元456表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元456被耦合到物理寄存器组单元458。物理寄存器组单元458中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针是将要被执行的下一个指令的地址)等等。物理寄存器组单元458被引退单元454所覆盖,以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(future fi le)、历史缓冲器、引退寄存器组、使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器组单元458耦合至执行群集460。执行群集460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有函数的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器组单元458、执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。Execution engine unit 450 includes a rename/allocator unit 452 coupled to a retirement unit 454 and a set of one or more scheduler units 456 . Scheduler unit 456 represents any number of different schedulers, including reservation stations, central instruction windows, and the like. Scheduler unit 456 is coupled to physical register file unit 458 . Each of physical register file units 458 represents one or more physical register files, where different physical register files store one or more different data types (such as scalar integer, scalar floating point, packed integer, packed floating point, vector integer, vector floating point, etc.), state (such as the instruction pointer being the address of the next instruction to be executed), and the like. The physical register file unit 458 is overlaid by the retirement unit 454 to illustrate the various ways in which register renaming and out-of-order execution can be implemented (such as using reorder buffers and retiring register files, using future files, history buffers, retiring register sets, using register maps and register pools, etc.). Typically, architectural registers are visible from outside the processor or from a programmer's perspective. These registers are not limited to any known particular circuit type. Many different types of registers are applicable so long as they are capable of storing and providing the data described herein. Examples of suitable registers include, but are not limited to, dedicated physical registers, dynamically allocated physical registers using register renaming, a combination of dedicated physical registers and dynamically allocated physical registers, and the like. Retirement unit 454 and physical register file unit 458 are coupled to execution cluster 460 . Execution cluster 460 includes a set of one or more execution units 462 and a set of one or more memory access units 464 . Execution unit 462 may perform various operations (e.g., shift, add, subtract, multiply) and on various types of data (e.g., scalar floating point, packed integer, packed floating point, vector integer, vector floating point) implement. While some embodiments may include multiple execution units dedicated to a particular function or set of functions, other embodiments may include only one execution unit or multiple execution units that all perform all functions. Scheduler unit 456, physical register file unit 458, execution cluster 460 are shown as potentially plural, as some embodiments create separate pipelines for certain data/operation types (e.g., each with their own scheduler unit , physical register bank unit and/or execution cluster's scalar integer pipeline, scalar floating point/packed integer/packed floating point/vector integer/vector floating point pipeline, and/or memory access pipeline, and in the case of separate memory access pipelines The next particular embodiment is implemented with only the execution cluster of the pipeline having a memory access unit 464). It should also be understood that where separate pipelines are used, one or more of these pipelines may be out-of-order issue/execution and the remaining pipelines may be in-order issue/execution.

存储器访问单元464的集合被耦合到存储器单元470,该存储器单元470包括耦合到数据高速缓存单元474的数据TLB单元472,其中数据高速缓存单元474耦合到二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476被耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。Set of memory access units 464 is coupled to memory unit 470 including data TLB unit 472 coupled to data cache unit 474 coupled to level two (L2) cache unit 476 . In one exemplary embodiment, the memory access unit 464 may include a load unit, a store address unit, and a store data unit, each of which is coupled to a data TLB unit 472 in the memory unit 470 . The L2 cache unit 476 is coupled to one or more other levels of cache, and ultimately to main memory.

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线400:1)指令获取438执行获取和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器组单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行执行级416;6)存储器单元470和物理寄存器组单元458执行写回/存储器写入级418;7)各单元可牵涉到异常处理级422;以及8)引退单元454和物理寄存器组单元458执行提交级424。As an example, an exemplary register-renaming, out-of-order issue/execution core architecture may implement pipeline 400 as follows: 1) instruction fetch 438 executes fetch and length decode stages 402 and 404; 2) decode unit 440 executes decode stage 406; 3) Rename/allocator unit 452 performs allocation stage 408 and rename stage 410; 4) scheduler unit 456 performs dispatch stage 412; 5) physical register file unit 458 and memory unit 470 performs register read/memory read stage 414; Execution cluster 460 executes execution stage 416; 6) memory unit 470 and physical register file unit 458 execute writeback/memory write stage 418; 7) units may involve exception handling stage 422; and 8) retirement unit 454 and physical register Group unit 458 executes commit stage 424 .

核490可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。Core 490 may support one or more instruction sets such as the x86 instruction set (with some extensions added with newer versions), the MIPS instruction set of MIPS Technologies, Inc. of Sunnyvale, Calif., the ARM instruction set of Sunnyvale, Calif. Holding company's ARM instruction set (with optional additional extensions such as NEON)).

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如用超线程化技术来同步多线程化)。It should be understood that a core can support multithreading (a collection of two or more operations or threads executing in parallel), and that this multithreading can be accomplished in a variety of ways, including time-division multithreading, synchronous Multithreading (where a single physical core provides a logical core for each of the threads that the physical core is synchronously multithreading), or a combination thereof (e.g., time-division fetching and decoding and thereafter such as with Hyper-threading technology to synchronize multi-threading).

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。Although register renaming is described in the context of out-of-order execution, it should be understood that register renaming can be used in in-order architectures. While the illustrated embodiment of the processor also includes separate instruction and data cache units 434/474 and a shared L2 cache unit 476, alternative embodiments may also have a single internal cache for instructions and data , such as, for example, a first level (L1) internal cache, or multiple levels of internal cache. In some embodiments, the system may include a combination of internal caches and external caches external to the cores and/or processors. Alternatively, all cache memory may be external to the core and/or processor.

图5是根据本发明的实施例的单核处理器和多核处理器500的框图,具有集成的存储器控制器和图形器件。图5的实线框示出了处理器500,处理器500具有单个核502A、系统代理510、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核502A-N、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514以及集成图形逻辑508。FIG. 5 is a block diagram of a single-core processor and a multi-core processor 500 with an integrated memory controller and graphics device according to an embodiment of the invention. 5 shows a processor 500 with a single core 502A, a system agent 510, a set of one or more bus controller units 516, while the optional additional dashed boxes show alternative processing A processor 500 having multiple cores 502A-N, a set of one or more integrated memory controller units 514 located in a system agent unit 510 , and integrated graphics logic 508 .

存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元506的集合、以及耦合至集成存储器控制器单元514的集合的外部存储器(未示出)。该共享高速缓存单元506的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。虽然在一个实施例中基于环形的互连单元512将集成图形逻辑508、该组共享高速缓存单元506和系统代理单元510进行互连,但替代的实施例也使用任何数量的公知技术来互连这些单元。The memory hierarchy includes one or more levels of cache within each core, a set of one or more shared cache units 506 , and external memory (not shown) coupled to a set of integrated memory controller units 514 . The set of shared cache units 506 may include one or more intermediate level caches, such as level two (L2), level three (L3), level four (L4) or other levels of cache, last level cache (LLC) ), and/or combinations thereof. Although in one embodiment a ring-based interconnection unit 512 interconnects the integrated graphics logic 508, the set of shared cache units 506, and the system agent unit 510, alternative embodiments use any number of known techniques for interconnecting these units.

在一些实施例中,核502A-N中的一个或多个核能够多线程化。系统代理510包括协调和操作核502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调整核502A-N和集成图形逻辑508的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。In some embodiments, one or more of cores 502A-N are capable of multithreading. System agent 510 includes those components that coordinate and operate cores 502A-N. The system agent unit 510 may include, for example, a power control unit (PCU) and a display unit. The PCU may be or include the logic and components needed to adjust the power states of cores 502A-N and integrated graphics logic 508 . The display unit is used to drive one or more externally connected displays.

核502A-N可以是在架构和/或指令集上同构的或异构的。例如,核502A-N中的一些可以是有序的,而另一些是无序的。如另一个示例,核502A-N中的两个或多个核能够执行相同的指令集,而其他核能够执行该指令集中的一个子集或执行不同的指令集。Cores 502A-N may be homogeneous or heterogeneous in architecture and/or instruction set. For example, some of cores 502A-N may be in order while others are out of order. As another example, two or more of cores 502A-N can execute the same set of instructions, while other cores can execute a subset of the set of instructions or a different set of instructions.

处理器可以是通用功能处理器,诸如酷睿(CoreTM)i3、i5、i7、2 Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的Intel公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS、等等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、或类似物。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。The processor may be a general purpose processor such as a Core i3, i5, i7, 2 Duo and Quad, Xeon , Itanium , XScale or StrongARM processors, all of which Available from Intel Corporation, Santa Clara, CA. Alternatively, the processor may be from another company, such as from ARM Holdings, MIPS, or the like. A processor may be a special purpose processor such as, for example, a network or communications processor, compression engine, graphics processor, coprocessor, embedded processor, or the like. The processor may be implemented on one or more chips. Processor 500 may be part of and/or may be implemented on one or more substrates using any of a number of processing technologies such as, for example, BiCMOS, CMOS, or NMOS.

图6-8是适于包括处理器500的示例性系统,图9是可包括一个或多个核502的示例性芯片上系统(SoC)。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够纳入本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。6-8 are example systems suitable for including a processor 500 , and FIG. 9 is an example system-on-chip (SoC) that may include one or more cores 502 . Known in the art for laptops, desktops, handheld PCs, personal digital assistants, engineering workstations, servers, network equipment, network hubs, switches, embedded processors, digital signal processors (DSPs), graphics devices, Other system designs and configurations for video game devices, set-top boxes, microcontrollers, cellular phones, portable media players, handheld devices, and various other electronic devices are also suitable. In general, a number of systems and electronic devices capable of incorporating the processors and/or other execution logic disclosed herein are generally suitable.

现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可包括耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610、615。附加处理器615的可选性质用虚线表示在图6中。Referring now to FIG. 6 , shown is a block diagram of a system 600 in accordance with one embodiment of the present invention. System 600 may include one or more processors 610 , 615 coupled to graphics memory controller hub (GMCH) 620 . The optional nature of additional processors 615 is indicated in Figure 6 with dashed lines.

每个处理器610、615可以是处理器500的某些版本。然而,应该理解,集成图形逻辑和集成存储器控制单元不太可能出现在处理器610、615中。图6示出GMCH 620可耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。Each processor 610 , 615 may be some version of processor 500 . However, it should be understood that integrated graphics logic and integrated memory control units are unlikely to be present in processors 610,615. FIG. 6 shows that GMCH 620 may be coupled to memory 640, which may be, for example, dynamic random access memory (DRAM). For at least one embodiment, DRAM may be associated with non-volatile cache.

GMCH 620可以是芯片组或芯片组的一部分。GMCH 620可以与(多个)处理器610、615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH 620还可担当(多个)处理器610、615和系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由诸如前端总线(FSB)695之类的多站总线与(多个)处理器610、615进行通信。GMCH 620 may be a chipset or part of a chipset. The GMCH 620 may communicate with the processor(s) 610, 615 and control the interaction between the processor(s) 610, 615 and the memory 640. GMCH 620 may also act as an accelerated bus interface between processor(s) 610, 615 and other elements of system 600. For at least one embodiment, the GMCH 620 communicates with the processor(s) 610, 615 via a multi-drop bus, such as a front side bus (FSB) 695.

此外,GMCH 620耦合至显示器645(诸如平板显示器)。GMCH 620可包括集成图形加速器。GMCH 620还耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。在图6的实施例中作为示例示出了外部图形设备660以及另一外围设备670,该外部图形设备660可以是耦合至ICH 650的分立图形设备。Additionally, the GMCH 620 is coupled to a display 645 (such as a flat panel display). GMCH 620 may include an integrated graphics accelerator. The GMCH 620 is also coupled to an input/output (I/O) controller hub (ICH) 650 that can be used to couple various peripheral devices to the system 600. An external graphics device 660, which may be a discrete graphics device coupled to the ICH 650, is shown as an example in the embodiment of FIG. 6, as well as another peripheral device 670.

替代地,系统600中还可存在附加或不同的处理器。例如,附加(多个)处理器615可包括与处理器610相同的附加(多个)处理器、与处理器610异类或不对称的附加(多个)处理器、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括架构、微架构、热、功耗特征等等一系列优点的度量,物理资源610、615之间存在各种差别。这些差别会有效显示为处理器610、615之间的不对称性和异类性。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。Alternatively, additional or different processors may also be present in system 600 . For example, additional processor(s) 615 may include additional processor(s) identical to processor 610, additional processor(s) that are heterogeneous or asymmetrical to processor 610, accelerators such as graphics accelerators or digital signal processing (DSP) unit), field programmable gate array, or any other processor. There are various differences between physical resources 610, 615 in terms of a range of metrics including architectural, microarchitectural, thermal, power consumption characteristics, and the like. These differences would effectively manifest as asymmetry and heterogeneity between the processors 610,615. For at least one embodiment, the various processors 610, 615 may reside in the same die package.

现在参照图7,所示出的是根据本发明实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的一些版本,如处理器610、615中的一个或多个一样。Referring now to FIG. 7 , shown is a block diagram of a second system 700 in accordance with an embodiment of the present invention. As shown in FIG. 7 , multiprocessor system 700 is a point-to-point interconnect system and includes a first processor 770 and a second processor 780 coupled via a point-to-point interconnect 750 . Each of processors 770 and 780 may be some version of processor 500 , as may one or more of processors 610 , 615 .

虽然仅以两个处理器770、780来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。While shown with only two processors 770, 780, it should be understood that the scope of the invention is not so limited. In other embodiments, there may be one or more additional processors within a given processor.

处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括点对点接口786和788。处理器770、780可以使用点对点(P-P)电路778、788经由P-P接口750来交换信息。如图7所示,IMC 772和782将各处理器耦合至相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应的处理器的主存储器的一部分。Processors 770 and 780 are shown including integrated memory controller units 772 and 782, respectively. Processor 770 also includes point-to-point (P-P) interfaces 776 and 778 as part of its bus controller unit; similarly, second processor 780 includes point-to-point interfaces 786 and 788 . Processors 770 , 780 may exchange information via P-P interface 750 using point-to-point (P-P) circuits 778 , 788 . As shown in FIG. 7, IMCs 772 and 782 couple each processor to respective memories, memory 732 and memory 734, which may be part of main memory locally attached to the respective processors.

处理器770、780各自可使用点对点接口电路776、794、786、798经由单独的P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。Processors 770, 780 may each exchange information with chipset 790 via separate P-P interfaces 752, 754 using point-to-point interface circuits 776, 794, 786, 798. Chipset 790 may also exchange information with high performance graphics circuitry 738 via high performance graphics interface 739 .

共享高速缓存器(未示出)可以被包括在任一处理器中或者两个处理器的外面,通过P-P互连,与处理器相连接,以便如果处理器被置于低功率模式下,处理器中的任何一个或两者的本地缓存信息可以存储在共享高速缓存器中。A shared cache (not shown) may be included in either processor or external to both processors, connected by a P-P interconnect to the processors so that if the processors are placed in a low power mode, the processors Locally cached information for either or both may be stored in a shared cache.

芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。Chipset 790 may be coupled to first bus 716 via interface 796 . In one embodiment, the first bus 716 may be a Peripheral Component Interconnect (PCI) bus, or a bus such as a PCI Express bus or other third generation I/O interconnect bus, but the scope of the present invention is not limited by this limit.

如图7所示,各种I/O设备714可以连同总线桥718耦合到第一总线716,总线桥718将第一总线716耦合至第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727以及可以包括指令/代码和数据730的存储单元728(诸如盘驱动器或其它海量存储设备)。进一步地,音频I/O 724可以耦合到第二总线720。注意,其它架构是可能的。例如,取代图7的点对点架构,系统可以实现多站总线或其它这类架构。As shown in FIG. 7 , various I/O devices 714 may be coupled to a first bus 716 along with a bus bridge 718 that couples the first bus 716 to a second bus 720 . In one embodiment, the second bus 720 may be a low pin count (LPC) bus. In one embodiment, a number of devices may be coupled to the second bus 720 including, for example, a keyboard and/or mouse 722, a communication device 727, and a storage unit 728, such as a disk drive or other mass storage unit, which may include instructions/code and data 730. equipment). Further, audio I/O 724 may be coupled to second bus 720. Note that other architectures are possible. For example, instead of the point-to-point architecture of Figure 7, the system could implement a multidrop bus or other such architecture.

现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的类似元件使用类似附图标记,且在图8中省略了图7的某些方面以避免混淆图8的其它方面。Referring now to FIG. 8 , shown is a block diagram of a third system 800 in accordance with an embodiment of the present invention. Like elements in FIGS. 7 and 8 use like reference numerals, and certain aspects of FIG. 7 are omitted in FIG. 8 to avoid obscuring other aspects of FIG. 8 .

图8示出了处理器870、880可以分别包括集成的存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包括诸如以上联系图5和7所描述的集成存储器控制器单元。此外。CL 872、882还可包括I/O控制逻辑。图8示出不仅存储器832、834耦合至CL 872、882,而且I/O设备814也耦合至控制逻辑872、882。传统I/O设备815被耦合至芯片组890。Figure 8 shows that processors 870, 880 may include integrated memory and I/O control logic ("CL") 872 and 882, respectively. For at least one embodiment, the CL 872, 882 may include an integrated memory controller unit such as described above in connection with FIGS. 5 and 7 . also. CL 872, 882 may also include I/O control logic. 8 shows that not only memory 832, 834 is coupled to CL 872, 882, but I/O device 814 is also coupled to control logic 872, 882. Legacy I/O devices 815 are coupled to chipset 890 .

现在参照图9,所示出的是根据本发明一个实施例的SoC 900的框图。在图5中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图9中,互连单元902被耦合至:应用处理器910,包括一个或多个核502A-N的集合和共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一个或多个媒体处理器920的集合,可包括集成图形逻辑508、用于提供静态和/或视频照相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926、以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。Referring now to FIG. 9, shown is a block diagram of a SoC 900 in accordance with one embodiment of the present invention. In Fig. 5, similar parts have the same reference numerals. Also, dashed boxes are optional features for more advanced SoCs. In FIG. 9, interconnection unit 902 is coupled to: application processor 910, comprising a set of one or more cores 502A-N and shared cache unit 506; system agent unit 510; bus controller unit 516; integrated memory control processor unit 514; a collection of one or more media processors 920, which may include integrated graphics logic 508, an image processor 924 for providing still and/or video camera functionality, an audio processor 926 for providing hardware audio acceleration, and a video processor 928 for providing video encoding/decoding acceleration; a static random access memory (SRAM) unit 930; a direct memory access (DMA) unit 932; and a display unit 940 for coupling to one or more external monitor.

图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),可执行根据一个实施例的至少一个指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一个实施例中,指令可以由GPU来执行。在还有一个实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码用于在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回给GPU用于指令的最终引退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。Figure 10 illustrates a processor, including a central processing unit (CPU) and a graphics processing unit (GPU), executable at least one instruction according to one embodiment. In one embodiment, instructions to perform operations in accordance with at least one embodiment are executable by a CPU. In another embodiment, the instructions may be executed by a GPU. In yet another embodiment, the instructions may be performed by a combination of operations performed by the GPU and the CPU. For example, in one embodiment, instructions according to one embodiment may be received and decoded for execution on a GPU. However, one or more operations in the decoded instruction may be performed by the CPU, and the results returned to the GPU for eventual retirement of the instruction. Instead, in some embodiments, the CPU may act as the main processor, while the GPU acts as a co-processor.

在一些实施例中,受益于高度并行吞吐量的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线架构)的性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地执行,而更多的序列化应用,诸如操作系统内核或应用代码更适于CPU。In some embodiments, instructions that benefit from highly parallel throughput may be executed by the GPU, while instructions that benefit from the performance of processors that benefit from a deeply pipelined architecture may be executed by the CPU. For example, graphics, scientific applications, financial applications, and other parallel workloads can benefit from the performance of GPUs and execute accordingly, while more serialized applications such as operating system kernels or application code are better suited to CPUs.

在图10中,处理器1000包括:CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片声音/跨集成电路)接口1070。其他逻辑和电路可被包括在图10的处理器中,包括更多的CPU或GPU以及其他外围设备接口控制器。In Fig. 10, processor 1000 includes: CPU 1005, GPU 1010, image processor 1015, video processor 1020, USB controller 1025, UART controller 1030, SPI/SDIO controller 1035, display device 1040, high-definition Multimedia Interface (HDMI) Controller 1045, MIPI Controller 1050, Flash Memory Controller 1055, Double Data Rate (DDR) Controller 1060, Security Engine 1065, I 2 S/I 2 C (Integrated Cross-Chip Sound/Inter-IC ) interface 1070. Other logic and circuits may be included in the processor of Figure 10, including more CPUs or GPUs and other peripheral interface controllers.

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据来实现,该数据表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。此类表示即所谓“IP核”可以存储在有形的机器可读介质(“磁带”)上并提供给各种顾客或制造商,以加载到实际制作该逻辑或处理器的编制机器中去。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给多个客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方所制造的处理器中。One or more aspects of at least one embodiment can be implemented by representative data stored on a machine-readable medium, which represents various logic in a processor, which when read by a machine causes the machine to generate the execution The logic of the described technique. Such representations, so-called "IP cores," may be stored on tangible, machine-readable media ("tapes") and provided to various customers or manufacturers for loading into the fabricating machines that actually make the logic or processor. For example, IP cores such as the CortexTM processor family developed by ARM Holdings and the Loongson IP cores developed by the Institute of Computer Technology (ICT) of the Chinese Academy of Sciences may be licensed or sold to multiple customers or licensees, such as Texas Instruments, Qualcomm, Apple, or Samsung, and are implemented in processors manufactured by those customers or licensees.

图11示出根据一个实施例的IP核开发的框图。存储器1130包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(诸如,硬盘)、有线连接(诸如,互联网)1150或无线连接1160而被提供给存储器1130。由模拟工具和模型所生成的IP核信息可随后被发送给制造工厂,在制造工厂可由第三方来进行生产以执行根据至少一个实施例的至少一个指令。Figure 11 shows a block diagram of IP core development according to one embodiment. Memory 1130 includes simulation software 1120 and/or hardware or software models 1110 . In one embodiment, data representing the IP core design may be provided to memory 1130 via memory 1140 (such as a hard disk), a wired connection (such as the Internet) 1150 , or a wireless connection 1160 . The IP core information generated by the simulation tools and models may then be sent to a manufacturing plant where it may be produced by a third party to execute at least one instruction according to at least one embodiment.

在一些实施例中,一个或多个指令可以对应于第一类型或架构(例如x86),并且在不同类型或架构的处理器(例如ARM)上被转换或仿真。根据一个实施例,指令可以在任何处理器或处理器类型上执行,包括ARM、x86、MIPS、GPU或其它处理器类型或架构。In some embodiments, one or more instructions may correspond to a first type or architecture (eg, x86) and be translated or emulated on a different type or architecture of processor (eg, ARM). According to one embodiment, the instructions may execute on any processor or type of processor, including ARM, x86, MIPS, GPU, or other processor type or architecture.

图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器所仿真。在图12中,程序1205包含一些指令,这些指令可执行与根据一个实施例的指令相同或基本相同的功能。然而,程序1205的指令可以是与处理器1215所不同或不兼容的类型和/或格式,这意味着程序1205中的类型的指令不能原生地被处理器1215所执行。然而,借助于仿真逻辑1210,程序1205的指令可被转换成能够由处理器1215所原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含将程序1205中的该类指令翻译成能由处理器1215原生执行的类型的软件。在其它实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,但在其它实施例中,仿真逻辑在处理器之外并由第三方提供。在一个实施例中,处理器能够通过执行包含在处理器中或者与之相关联的微代码或固件,加载具体化在包含软件的有形的机器可读介质中的仿真逻辑。Figure 12 shows how instructions of a first type are emulated by different types of processors according to one embodiment. In FIG. 12, program 1205 includes instructions that perform the same or substantially the same functions as instructions according to one embodiment. However, the instructions of program 1205 may be of a different or incompatible type and/or format than processor 1215 , meaning instructions of the type in program 1205 cannot be natively executed by processor 1215 . However, by means of emulation logic 1210 , the instructions of program 1205 may be converted into instructions that can be natively executed by processor 1215 . In one embodiment, the emulation logic is embodied in hardware. In another embodiment, the emulation logic is embodied in a tangible machine-readable medium containing software that translates such instructions in program 1205 into a type that is natively executable by processor 1215 . In other embodiments, the emulation logic is a combination of fixed-function or programmable hardware and a program stored on a tangible, machine-readable medium. In one embodiment, the processor contains emulation logic, but in other embodiments, the emulation logic is external to the processor and provided by a third party. In one embodiment, the processor is capable of loading emulation logic embodied in a tangible, machine-readable medium containing software by executing microcode or firmware contained in or associated with the processor.

图13是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出了可以使用x86编译器1304来编译利用高级语言1302的程序,以生成可以由具有至少一个x86指令集核的处理器1316原生执行的x86二进制代码1306。具有至少一个x86指令集核1316的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1304表示用于生成x86二进制代码1306(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出用高级语言1302的程序可以使用替代的指令集编译器1308来编译,以生成可以由不具有至少一个x86指令集核的处理器1314(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1310。指令转换器1312被用来将x86二进制代码1306转换成可以由不具有x86指令集核的处理器1314原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1310相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1312通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1306的软件、固件、硬件或其组合。13 is a block diagram contrasting the use of a software instruction converter to convert binary instructions in a source instruction set to binary instructions in a target instruction set in accordance with various embodiments of the invention. In the illustrated embodiment, the instruction converter is a software instruction converter, but the instruction converter may alternatively be implemented in software, firmware, hardware, or various combinations thereof. 13 shows that a program utilizing a high-level language 1302 can be compiled using an x86 compiler 1304 to generate x86 binary code 1306 that can be natively executed by a processor 1316 having at least one x86 instruction set core. A processor having at least one x86 instruction set core 1316 means any processor capable of processing (1) a substantial portion of the instruction set of an Intel x86 instruction set core or (2) designed to have An object code version of an application or other software running on an Intel processor with at least one x86 instruction set core to perform substantially the same function as an Intel processor with at least one x86 instruction set core Basically the same results for Intel processors. The x86 compiler 1304 represents a compiler for generating x86 binary code 1306 (eg, object code) executable on a processor 1316 having at least one x86 instruction set core, with or without additional link processing. Similarly, FIG. 13 shows that a program in a high-level language 1302 can be compiled using an alternative instruction set compiler 1308 to generate a processor 1314 that does not have at least one x86 instruction set core (e.g., with a Sunnyvale, Calif. Alternative instruction set binary code 1310 natively executed by the MIPS instruction set of MIPS Technologies, Inc., of Sunnyvale, California, and/or by a processor of a core executing the ARM instruction set of ARM Holdings, Inc. of Sunnyvale, Calif. An instruction converter 1312 is used to convert x86 binary code 1306 into code that can be natively executed by a processor 1314 that does not have an x86 instruction set core. This translated code is unlikely to be identical to the alternate instruction set binary code 1310 because instruction converters capable of doing so are difficult to manufacture; however, the transformed code will perform common operations and be composed of instructions from the alternate instruction set. Thus, instruction converter 1312 represents, by emulation, emulation or any other process, software, firmware, hardware or a combination thereof that allows a processor or other electronic device that does not have an x86 instruction set processor or core to execute x86 binary code 1306 .

图14A示出用于执行提供双舍入组合浮点乘法和加法(或减法,或转换)功能的指令的装置1401的一个实施例。在一个实施例中,装置1401可以是SIMD FP乘法-加法器的部分,其中装置1401被复制一次或多次以并行地执行SIMD双舍入组合浮点乘法和加法操作。装置1401包括FP乘法器级1430,用于将第一操作数被乘数1410的尾数与第二操作数乘数1412的尾数相乘,以产生乘积。可使第一操作数被乘数1410的尾数和第二操作数乘数1412的尾数传递通过尾零检测器级1420,以产生粘滞位S 1422。在一个实施例中,可使FP乘法器级1430所产生的乘积传递通过溢出检测级1436,以检测FP乘法器级1430的乘积中的溢出状况,并产生溢出信号O 1438。装置1401还包括FP对齐级1432,以根据FP乘法器级1430的乘积对齐第三操作数加数(或被减数,或减数)1414的尾数。在一个实施例中,还可取决于被执行的操作通过反转器1434来反转第三操作数加数(或被减数,或减数)的经对齐的尾数。FP乘法器级1430、溢出检测级1436、FP对齐级1432以及反转器1434一起构成处理块1403。Figure 14A shows one embodiment of a means 1401 for executing an instruction that provides double rounding combined floating point multiply and add (or subtract, or convert) functionality. In one embodiment, means 1401 may be part of a SIMD FP multiply-adder, where means 1401 is replicated one or more times to perform SIMD double-round combined floating-point multiply and add operations in parallel. The means 1401 includes an FP multiplier stage 1430 for multiplying the mantissa of the first operand multiplicand 1410 with the mantissa of the second operand multiplier 1412 to produce a product. The mantissa of the first operand multiplicand 1410 and the mantissa of the second operand multiplier 1412 may be passed through a trailing zero detector stage 1420 to produce a sticky bit S 1422. In one embodiment, the product produced by the FP multiplier stage 1430 may be passed through an overflow detection stage 1436 to detect an overflow condition in the product of the FP multiplier stage 1430 and generate an overflow signal O 1438. The apparatus 1401 also includes an FP alignment stage 1432 to align the mantissa of the third operand addend (or minuend, or subtrahend) 1414 according to the product of the FP multiplier stage 1430 . In one embodiment, the aligned mantissa of the third operand addend (or minuend, or subtrahend) may also be inverted by inverter 1434 depending on the operation being performed. FP multiplier stage 1430 , overflow detection stage 1436 , FP alignment stage 1432 , and inverter 1434 together form processing block 1403 .

装置1401还包括第一进位-保留加法器、CSA11440以及第一组合乘法-加法(CMA)加法器级1450,用于基于在FP乘法器1430的乘积中未检测到溢出状况的假设下,利用一组舍入输入将第三操作数加数(或被减数,或减数)1414的经过对齐的尾数与FP乘法器级1430的乘积加到一起,以产生第一和或差。Apparatus 1401 also includes a first carry-save adder, CSA 11440, and a first combined multiply-add (CMA) adder stage 1450 for utilizing a The group round input adds together the aligned mantissa of the third operand addend (or minuend, or subtrahend) 1414 and the product of FP multiplier stage 1430 to produce a first sum or difference.

装置1401包括第二进位-保留加法器、CSA21442以及第二CMA加法器级1454,用于基于在FP乘法器1430的乘积中检测到溢出状况的假设下,利用第二组舍入输入将第三操作数加数(或被减数,或减数)1414的经过对齐的尾数与FP乘法器级1430的乘积加到一起,以产生第二和或差。对于一个实施例,CMA加法器级1454可能仅有CMA加法器级1450的约一半宽度,并可从CMA加法器级1450的大约中央处接收一个或多个进位输入Cin。装置1401还包括多路复用器级1458,用于基于溢出检测级1436在FP乘法器级1430的乘积中检测到溢出状况或未检测到溢出状况,来在第二和或差与第一和或差之间进行选择。第一进位-保留加法器CSA11440和第二进位-保留加法器CSA21442构成处理块1404。对于一些实施例,补充级1460在多路复用器级1458之后,以根据所执行的操作来补充所选的和或差。装置1401的一些实施例包括与CMA加法器级1454和1450相对应的用于向标准化级1462提供输入的前导零预测(LZA)电路1456和1452,根据在FP乘法器级1430的乘积中检测到或未检测到溢出状况,前导零预测电路向标准化级提供的该输入是经由多路复用器1468可选择的。第一CMA加法器级1450、LZA 1452、第二CMA加法器级1454、LZA 1456和乘法器级1458构成处理块1405。Apparatus 1401 includes a second carry-save adder, CSA21442, and a second CMA adder stage 1454 for multiplying the third The aligned mantissa of operand addend (or minuend, or subtrahend) 1414 and the product of FP multiplier stage 1430 are added together to produce a second sum or difference. For one embodiment, CMA adder stage 1454 may only be about half the width of CMA adder stage 1450 and may receive one or more carry inputs Cin from about the center of CMA adder stage 1450 . Apparatus 1401 also includes a multiplexer stage 1458 for combining the second sum or difference with the first sum based on overflow detection stage 1436 detecting an overflow condition in the product of FP multiplier stage 1430 or not detecting an overflow condition. Choose between Poor or Poor. A first carry-save adder CSA1 1440 and a second carry-save adder CSA2 1442 constitute a processing block 1404 . For some embodiments, a complement stage 1460 follows the multiplexer stage 1458 to complement the selected sum or difference depending on the operations performed. Some embodiments of apparatus 1401 include leading zero prediction (LZA) circuits 1456 and 1452 corresponding to CMA adder stages 1454 and 1450 for providing input to normalization stage 1462, based on or no overflow condition detected, this input provided by the leading zero prediction circuit to the normalization stage is selectable via multiplexer 1468 . The first CMA adder stage 1450, the LZA 1452, the second CMA adder stage 1454, the LZA 1456, and the multiplier stage 1458 make up the processing block 1405.

在标准化级1462之后,在舍入级1464中对和或差进行舍入,并将经过舍入的结果存储在结果1470中。补充级1460、标准化级1462、舍入级1464和多路复用器1468可构成处理块1406。将理解,虽然已经将装置1401描述为执行乘法和加法(或减法),但可由FP加法器电路执行的任何操作(例如转换)也可按照相似方式与舍入的FP乘法相结合。还将理解,处理块1403、1404、1405和1406的一些过程可能具有可通过装置1401的特定实施例满足的关键的定时要求。Following normalization stage 1462 , the sum or difference is rounded in rounding stage 1464 and the rounded result is stored in result 1470 . Complementation stage 1460 , normalization stage 1462 , rounding stage 1464 , and multiplexer 1468 may make up processing block 1406 . It will be appreciated that while device 1401 has been described as performing multiplication and addition (or subtraction), any operation that may be performed by an FP adder circuit, such as conversion, may also be combined in a similar manner with rounded FP multiplication. It will also be understood that some of the processes of processing blocks 1403 , 1404 , 1405 , and 1406 may have critical timing requirements that may be met by specific embodiments of apparatus 1401 .

图14B示出用于执行提供双舍入组合FP乘法和加法(或减法,或转换)功能的指令的装置1402的替代实施例。在一个实施例中,装置1402可以是SIMD FP乘法-加法器的部分,其中装置1402可被复制一次或多次以并行地执行SIMD双舍入组合浮点乘法和加法操作。装置1402被示为具有两个融合的FP乘法-加法器。在一些实施例中,两个的融合FP乘法-加法器具有相同精度或宽度(例如均为64位或32位),以用于并行地执行SIMD双舍入组合FP乘法和加法(或减法,或转换)操作。在一些实施例中,融合的FP乘法-加法器中的一个具有更大精度或宽度(例如一个是64位且一个是32位),其中装置1402可执行一个双精度双舍入组合FP乘法和加法(或减法,或转换)操作,或可并行地执行两个单精度双舍入组合FP乘法和加法(或减法,或转换)操作。其他组合也是可能的。装置1402包括FP乘法器级1430-1431,用于将第一操作数被乘数1410-1411的多个尾数与第二操作数乘数1412-1413的多个尾数相乘,以产生多个相应乘积。可使第一操作数被乘数1410-1411的尾数和第二操作数乘数1412-1413的尾数传递通过尾零检测器级1420-1421,以产生粘滞位S0-S1。在一个实施例中,可使FP乘法器级1430-1431所产生的相应乘积传递通过溢出检测级1436-1437,以检测FP乘法器级1430-1431的乘积中的溢出状况,并产生溢出信号O 1438-1439。装置1402还包括FP对齐级1432-1433,以根据FP乘法器级1430-1431的相应乘积对齐第三操作数加数(或被减数,或减数)1414-1415的多个尾数。在一个实施例中,还可取决于被执行的操作通过反转器1434-1435来反转第三操作数加数(或被减数,或减数)的经对齐的尾数。FP乘法器级1430-1431、溢出检测级1436-1437、FP对齐级1432-1433以及反转器1434-1435一起构成处理块1403。Figure 14B shows an alternate embodiment of a means 1402 for executing an instruction that provides double rounding combined FP multiply and add (or subtract, or convert) functionality. In one embodiment, the means 1402 may be part of a SIMD FP multiply-adder, wherein the means 1402 may be replicated one or more times to perform SIMD double-round combined floating-point multiply and add operations in parallel. Device 1402 is shown with two fused FP multiplier-adders. In some embodiments, two fused FP multiply-adders have the same precision or width (e.g., both 64-bit or 32-bit) for performing SIMD double-round combined FP multiply and add (or subtract, or conversion) operation. In some embodiments, one of the fused FP multiply-adders has greater precision or width (e.g., one is 64 bits and one is 32 bits), wherein means 1402 may perform a double precision double rounding combined FP multiply and Add (or subtract, or convert) operations, or two single-precision double-round combined FP multiply and add (or subtract, or convert) operations can be performed in parallel. Other combinations are also possible. Apparatus 1402 includes FP multiplier stages 1430-1431 for multiplying a plurality of mantissas of first operand multiplicands 1410-1411 with a plurality of mantissas of second operand multipliers 1412-1413 to generate a plurality of corresponding product. The mantissas of the first operand multipliers 1410-1411 and the mantissas of the second operand multipliers 1412-1413 may be passed through trailing zero detector stages 1420-1421 to generate sticky bits S0-S1. In one embodiment, the corresponding products generated by FP multiplier stages 1430-1431 may be passed through overflow detection stages 1436-1437 to detect overflow conditions in the products of FP multiplier stages 1430-1431 and generate overflow signal O 1438-1439. Apparatus 1402 also includes FP alignment stages 1432-1433 to align a plurality of mantissas of third operand addends (or minuends, or subtrahends) 1414-1415 according to respective products of FP multiplier stages 1430-1431. In one embodiment, the aligned mantissa of the third operand addend (or minuend, or subtrahend) may also be inverted by inverters 1434-1435 depending on the operation being performed. FP multiplier stages 1430-1431, overflow detection stages 1436-1437, FP alignment stages 1432-1433, and inverters 1434-1435 together form processing block 1403.

装置1402还包括多个第一进位-保留加法器CSA11440-1441以及第一CMA加法器级1450-1451,用于基于在FP乘法器1430-1431的相应乘积中未检测到溢出状况的假设下,利用一组舍入输入R1将第三操作数加数(或被减数,或减数)1414-1415的经过对齐的尾数与FP乘法器级1430-1431的相应乘积加到一起,以产生第一组和或差。The apparatus 1402 also includes a plurality of first carry-save adders CSA 11440-1441 and a first CMA adder stage 1450-1451 for, under the assumption that no overflow condition is detected in the corresponding products of the FP multipliers 1430-1431, The aligned mantissas of the third operand addends (or minuends, or subtrahends) 1414-1415 are added together with the corresponding products of FP multiplier stages 1430-1431 using a set of rounding inputs R1 to produce the first A set of sum or difference.

装置1402包括多个第二进位-保留加法器CSA21442-1443以及第二CMA加法器级1454-1455,用于基于在FP乘法器1430-1431的相应乘积中检测到溢出状况的假设下,利用第二组舍入输入R2将第三操作数加数(或被减数,或减数)1414-1415的经过对齐的尾数与FP乘法器级1430-1431的相应乘积加到一起,以产生第二组和或差。装置1402还包括多路复用器级1458-1459,用于基于溢出检测级1436-1437在FP乘法器级1430-1431的相应乘积中检测到溢出状况或未检测到溢出状况,分别在第二和或差与第一和或差之间进行选择。多个第一进位-保留加法器CSA11440-1441和多个第二进位-保留加法器CSA21442-1443构成处理块1404。对于一些实施例,补充级1460-1461在多路复用器级1458-1458之后,以根据所执行的操作来补充所选的和或差。装置1402的一些实施例包括与CMA加法器级1454-1455和1450-1451相对应的用于向标准化级1462-1463提供输入的前导零预测(LZA)电路1456-1457和1452-1453,根据在FP乘法器级1430-1431的相应乘积中检测到或未检测到溢出状况,前导零预测电路向标准化级提供的输入是经由多路复用器1468-1469可选择的。第一CMA加法器级1450-1451、LZA 1452-1453、第二CMA加法器级1454-1455、LZA 1456-1457和乘法器级1458-1459构成处理块1405。The apparatus 1402 includes a plurality of second carry-save adders CSA 21442-1443 and a second CMA adder stage 1454-1455 for utilizing the first Two sets of rounding inputs R2 add the aligned mantissas of the third operand addends (or minuends, or subtrahends) 1414-1415 with the corresponding products of FP multiplier stages 1430-1431 to produce the second Group sum or difference. Apparatus 1402 also includes multiplexer stages 1458-1459 for detecting overflow conditions or not detecting overflow conditions in the corresponding products of FP multiplier stages 1430-1431 based on overflow detection stages 1436-1437, respectively in the second Choose between Sum or Difference and First Sum or Difference. A plurality of first carry-save adders CSA1 1440-1441 and a plurality of second carry-save adders CSA2 1442-1443 constitute the processing block 1404. For some embodiments, complement stages 1460-1461 follow multiplexer stages 1458-1458 to complement selected sums or differences depending on the operations performed. Some embodiments of apparatus 1402 include leading zero prediction (LZA) circuits 1456-1457 and 1452-1453 corresponding to CMA adder stages 1454-1455 and 1450-1451 for providing input to normalization stages 1462-1463, according to The input to the normalization stage provided by the leading zero prediction circuit is selectable via multiplexers 1468-1469 with or without an overflow condition detected in the respective products of the FP multiplier stages 1430-1431. The first CMA adder stage 1450-1451, the LZA 1452-1453, the second CMA adder stage 1454-1455, the LZA 1456-1457 and the multiplier stage 1458-1459 make up the processing block 1405.

在标准化级1462-1463之后,在舍入级1464-1465中对相应的和或差进行舍入,并将经过舍入的结果存储在SIMD结果1470-1471中。补充级1460-1461、标准化级1462-1463、舍入级1464-1465和多路复用器1468-1469可构成处理块1406。将理解,虽然已经将装置1402描述为对具有两个元素的向量执行SIMD乘法和加法(或减法),但每个向量可包括任何数量(例如4、6、8、10、16、32等等)的元素。还将理解,装置1401和/或装置1402的一些实施例可对具有64位FP元素的向量执行SIMD乘法和加法(或减法,或转换,等等)操作,而其它实施例可对具有32位FP元素、或80位FP元素、或128位FP元素的向量执行类似操作,并且再其它的实施例可执行对32位FP元素的双舍入浮点乘法和与之组合的对64位FP元素的加法或类似操作。After normalization stages 1462-1463, the corresponding sums or differences are rounded in rounding stages 1464-1465 and the rounded results are stored in SIMD results 1470-1471. Supplementation stages 1460-1461, normalization stages 1462-1463, rounding stages 1464-1465, and multiplexers 1468-1469 may constitute processing block 1406. It will be appreciated that while means 1402 have been described as performing SIMD multiplication and addition (or subtraction) on vectors with two elements, each vector may include any number (e.g., 4, 6, 8, 10, 16, 32, etc. )Elements. It will also be appreciated that some embodiments of means 1401 and/or means 1402 may perform SIMD multiply and add (or subtract, or convert, etc.) operations on vectors with 64-bit FP elements, while other embodiments may perform Vectors of FP elements, or 80-bit FP elements, or 128-bit FP elements perform similar operations, and still other embodiments may perform double-rounded floating-point multiplication on 32-bit FP elements combined with 64-bit FP elements addition or similar operations.

图15示出用于提供双舍入组合浮点乘法和加法功能的过程1501的一个实施例的流程图。过程1501和本文中公开的其他过程通过处理块来执行,处理块可包括专用硬件或可由通用机器或专用机器或其某种组合执行的软件或固件操作码。Figure 15 shows a flow diagram of one embodiment of a process 1501 for providing double rounding combined floating point multiply and add functionality. Process 1501 and other processes disclosed herein are performed by processing blocks that may comprise dedicated hardware or software or firmware opcodes executable by a general purpose machine or a special purpose machine or some combination thereof.

在过程1501的处理框1510中,检测到可执行线程部分包括第一浮点(FP)乘法操作,并在处理框1520中,检测到第二FP操作,第二FP操作将第一FP乘法操作的结果指定为源操作数。在处理框1530,将第一FP乘法操作和第二FP操作编码为组合的FP操作,包括第一FP乘法操作的结果的舍入和随后的利用经过舍入的结果作为操作数输入的第二FP操作。在处理框1540,存储所述组合的FP操作的编码,并在处理框1550,执行组合的FP操作以作为可执行线程部分的一部分,以代替单独的第一浮点(FP)乘法操作和第二FP操作。In process block 1510 of process 1501, it is detected that the executable thread portion includes a first floating-point (FP) multiply operation, and in process block 1520, a second FP operation is detected that replaces the first FP multiply operation The result of is specified as the source operand. At processing block 1530, the first FP multiply operation and the second FP operation are encoded as a combined FP operation, including rounding of the result of the first FP multiply operation and subsequent second FP multiply operation using the rounded result as an operand input. FP operation. At processing block 1540, an encoding of the combined FP operation is stored, and at processing block 1550, the combined FP operation is executed as part of the executable thread portion instead of separate first floating point (FP) multiply operation and second floating point (FP) multiply operation. Two FP operations.

将理解,虽然将过程1501的处理框示为按照特定顺序依序地执行,但许多操作在可能时可并行地或按照与所示不同的顺序执行。还将理解,在过程1501中,虽然示出在处理框1550中执行用于提供双舍入组合FP乘法和加法功能的指令,但其它步骤或级也可进行,例如流水线400的级402-414和/或级418-424中的一个或多个,以完全地促进或响应于该指令以提供双舍入组合FP乘法和加法功能。It will be appreciated that while the processing blocks of process 1501 are shown as being performed sequentially in a particular order, many operations may be performed in parallel or in a different order than shown, where possible. It will also be appreciated that in process 1501, while instructions for providing double rounded combined FP multiply and add functionality are shown as being executed in processing block 1550, other steps or stages may also be performed, such as stages 402-414 of pipeline 400 and/or one or more of stages 418-424 to facilitate or respond to the instruction entirely to provide double rounding combined FP multiply and add functions.

图16A示出用于提供双舍入组合浮点乘法和加法功能的过程1601的另一实施例的流程图。在过程1601的处理框1610,在可执行线程部分中,将FP乘法操作转换成具有加数操作数为零的双舍入FP组合乘法-加法(FCMADD)操作。在处理框1620,在可执行线程部分中,将FP加法操作转换成双舍入FCMADD操作,该双舍入FCMADD操作的乘数操作数为一,且该FP加法操作的加数操作数被用作该FCMADD操作的被乘数操作数。在处理框1630,如果乘数操作数为一的双舍入FCMADD操作的被乘数与加数操作数为零的按顺序的前一双舍入FCMADD操作的目的地操作数相匹配,则将这两个指令组合以代替乘数操作数为一的双舍入FCMADD操作。在处理框1640,如果加数操作数为零的任何余下的双舍入FCMADD操作产生未使用的结果,则将该余下的双舍入FCMADD操作去除。Figure 16A shows a flow diagram of another embodiment of a process 1601 for providing double rounding combined floating point multiply and add functionality. At processing block 1610 of process 1601 , in the executable thread portion, an FP multiply operation is converted to a double-rounded FP combined multiply-add (FCMADD) operation with an addend operand of zero. At processing block 1620, in the executable thread portion, the FP add operation is converted to a double rounded FCMADD operation with a multiplier operand of one and the adder operand of the FP add operation is used The multiplicand operand for this FCMADD operation. At processing block 1630, if the multiplicand of a double-round FCMADD operation with a multiplier operand of one matches the destination operand of a sequentially preceding double-round FCMADD operation with an addend operand of zero, then the The two instructions are combined to replace the double-round FCMADD operation with a multiplier operand of one. At processing block 1640, any remaining double-rounding FCMADD operations that have an addend operand of zero are removed if the remaining double-rounding FCMADD operations produce unused results.

图16B示出用于提供双舍入组合浮点乘法和减法功能的过程1602的另一实施例的流程图。在过程1602的处理框1610,在可执行线程部分中,将FP乘法操作转换成加数操作数为零的双舍入FP组合乘法-加法(FCMADD)操作。在处理框1615,在可执行线程部分中,将FP减法操作转换成双舍入FP组合乘法-减法(FCMSUB)操作,该FCMSUB操作的乘数操作数为一,且该FP减法操作的被减数操作数被用作该FCMSUB操作的被乘数操作数。在处理框1625,如果乘数操作数为一的双舍入FCMSUB操作的被乘数与加数操作数为零的按顺序的前一双舍入FCMADD操作的目的地操作数相匹配,则将这两个指令组合到该FCMSUB操作中并用该FCMADD操作的被乘数和乘数操作数代替该FCMSUB操作的被乘数和为一的乘数操作数。在处理框1635,如果乘数操作数为一的双舍入FCMSUB操作的减数与加数操作数为零的按顺序的前一双舍入FCMADD操作的目的地操作数相匹配,则将这两个指令组合成FCMSUB.R操作以代替乘数操作数为一的该双舍入FCMSUB操作。在处理框1640,如果加数操作数为零的任何余下的双舍入FCMADD操作产生未使用的结果,则将该余下的双舍入FCMADD操作去除。FIG. 16B shows a flowchart of another embodiment of a process 1602 for providing double rounding combined floating point multiply and subtract functions. At processing block 1610 of process 1602, in the executable thread portion, the FP multiply operation is converted to a double-rounded FP combined multiply-add (FCMADD) operation with an addend operand of zero. At processing block 1615, in the executable thread portion, the FP subtract operation is converted to a double-rounded FP combined multiply-subtract (FCMSUB) operation with a multiplier operand of one and the subtracted The operand is used as the multiplicand operand for this FCMSUB operation. At processing block 1625, if the multiplicand of a double-round FCMSUB operation with a multiplier operand of one matches the destination operand of the sequentially preceding double-round FCMADD operation with an addend operand of zero, then the Two instructions combine into the FCMSUB operation and replace the multiplicand and multiplier operand of the FCMADD operation with the multiplicand and multiplier operand of the FCMSUB operation. At processing block 1635, if the subtrahend of a double-round FCMSUB operation with a multiplier operand of one matches the destination operand of a sequentially preceding double-round FCMADD operation with an addend operand of zero, then the two Instructions are combined into a FCMSUB.R operation to replace the double-round FCMSUB operation with a multiplier operand of one. At processing block 1640, any remaining double-rounding FCMADD operations that have an addend operand of zero are removed if the remaining double-rounding FCMADD operations produce unused results.

同样将理解,虽然过程1601和过程1602的处理框被示为按照特定顺序按顺序执行,但在可能时,许多操作可并行地执行或按照与所示顺序不同的一些顺序来执行。还将理解,例如在无序处理器的预留站中,通过运行时对原子或在处理器流水线中对微操作的重新编译或动态融合,组合的浮点乘法和加法(或减法,或转换等等)操作可用于代替各个乘法和加法(或减法,或转换等等)指令,由此减少等待时间并提高指令执行效率。对运行时的原子或对处理器流水线中的微操作的这样的重新编译或动态融合可由包括专用硬件或软件或固件操作代码的处理块执行,软件或固件操作代码可由通用机器或专用机器或通过其一些组合来执行。It will also be appreciated that while the processing blocks of process 1601 and process 1602 are shown as being performed sequentially in a particular order, where possible, many operations may be performed in parallel or in some order different from that shown. It will also be understood that combined floating-point multiplication and addition (or subtraction, or conversion, e.g. in a reservation station of an out-of-order processor, by recompilation or dynamic fusion of atomics at runtime or micro-ops in the processor pipeline etc.) operations can be used in place of individual multiply and add (or subtract, or convert, etc.) instructions, thereby reducing latency and improving instruction execution efficiency. Such recompilation or dynamic fusion of atoms at runtime or of micro-operations in a processor pipeline may be performed by processing blocks comprising dedicated hardware or software or firmware operational codes that may be executed by a general-purpose machine or by a special-purpose machine or by Some combination of them to perform.

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。Embodiments of the mechanisms disclosed herein may be implemented in hardware, software, firmware, or a combination of these implementations. Embodiments of the invention may be implemented as computer programs or program code executing on a programmable system comprising at least one processor, memory system (including volatile and non-volatile memory and/or storage elements) , at least one input device, and at least one output device.

可将程序代码应用至输入指令以执行本文描述的功能并产生输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。Program code can be applied to input instructions to perform the functions described herein and generate output information. The output information may be applied to one or more output devices in known manner. For the purposes of this application, a processing system includes any system having a processor such as, for example, a digital signal processor (DSP), microcontroller, application specific integrated circuit (ASIC), or microprocessor.

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解释语言。The program code can be implemented in a high-level procedural language or an object-oriented programming language to communicate with the processing system. The program code can also be implemented in assembly or machine language, if desired. In fact, the mechanisms described in this paper are not limited in scope to any particular programming language. In either case, the language may be a compiled or interpreted language.

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形的机器可读介质中,并提供给各种客户或生产设施,以加载到实际制造逻辑或处理器的制造机器中。One or more aspects of at least one embodiment can be implemented by representative instructions stored on a machine-readable medium, which represent various logic in a processor, which when read by a machine cause the machine to generate the execution of the instructions herein. The logic of the described technique. Such representations, known as "IP cores," may be stored on a tangible, machine-readable medium and provided to various customers or production facilities for loading into the manufacturing machines that actually make the logic or processors.

此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的粒子的有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。Such machine-readable storage media may include, but are not limited to, tangible arrangements of particles manufactured or formed by a machine or apparatus, including storage media such as: hard disks; including floppy disks, optical disks, compact disk read-only memory (CD-ROM), Compact rewritable discs (CD-RW) and any other type of magneto-optical disc; semiconductor devices such as read-only memory (ROM); such as dynamic random access memory (DRAM), static random access memory (SRAM) random access memory (RAM); erasable programmable read-only memory (EPROM); flash memory; electrically erasable programmable read-only memory (EEPROM); magnetic or optical cards; Any other type of media.

因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。Accordingly, embodiments of the invention also include non-transitory, tangible machine-readable media containing instructions or containing design data, such as a hardware description language (HDL), which defines the structures, circuits, devices, processes described herein device and/or system characteristics. These embodiments are also referred to as program products.

在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。In some cases, an instruction converter may be used to convert instructions from a source instruction set to a target instruction set. For example, an instruction converter may transform (eg, using static binary translation, dynamic binary translation including dynamic compilation), warp, emulate, or otherwise convert an instruction into one or more other instructions to be processed by the core. The instruction converter can be implemented in software, hardware, firmware, or a combination thereof. The instruction converter can be on-processor, off-processor, or part-on-processor and part-off-processor.

因此,揭示了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经描述了特定示例实施例,并示出在附图中,可以理解到,这些实施例仅仅是示例性的且不限制本发明的翻译,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在本技术领域中,因为发展很快且未来的进步未曾可知,本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附的权利要求书的范围。Accordingly, techniques for executing one or more instructions in accordance with at least one embodiment are disclosed. While specific example embodiments have been described and illustrated in the drawings, it is to be understood that these embodiments are illustrative only and do not limit the translation of the invention, and that the invention is not limited to the specific embodiments shown and described. structure and configuration, since numerous other modifications will occur to those skilled in the art after a study of this disclosure. In this technical field, because the development is fast and the future progress is unknown, various embodiments of the present disclosure can easily obtain changes in configuration and details by benefiting from technological progress without departing from the principles and principles of the present disclosure. scope of the appended claims.

Claims (40)

1. a method for machine realization, comprising:
What detection comprised that (FP) multiply operation of the first floating-point and the 2nd FP operate can execution thread part, and the result of a described FP multiply operation is appointed as source operand by described 2nd FP operation;
Be the FP operation of combination by a described FP multiply operation and the 2nd FP operate coding, the FP operation of described combination comprises and uses result through rounding off as described source operand to the rounding off of the result of a described FP multiply operation, then described 2nd FP operation;
Store the coding of the FP operation of described combination; And
Perform the FP operation of described combination, using as described can the part of execution thread part.
2. the method for machine realization as claimed in claim 1, is characterized in that, described 2nd FP operation is FP add operation.
3. the method for machine realization as claimed in claim 1, is characterized in that, described 2nd FP operation is the operation of FP subtraction.
4. the method for machine realization as claimed in claim 1, is characterized in that, described 2nd FP operation is FP conversion operations.
5. the method for machine realization as claimed in claim 1, is characterized in that, the described coding of the FP operation of described combination is stored in microoperation storer as microoperation.
6. the method for machine realization as claimed in claim 5, is characterized in that, described detection performs optimization logic by processor and performs.
7. the method for machine realization as claimed in claim 1, is characterized in that, be stored as instruction set architecture (ISA) macro instruction the described coding that the FP of described combination operates.
8. the method for machine realization as claimed in claim 7, is characterized in that, be stored in instruction cache the described coding that the FP of described combination operates as ISA macro instruction.
9. the method for machine realization as claimed in claim 8, it is characterized in that, described detection is performed by processor ISA conversion logic.
10. the method for machine realization as claimed in claim 7, it is characterized in that, described detection is performed by Compiler Optimization logic.
The method that 11. 1 kinds of machines realize, comprising:
Floating-point (FP) add operation can checked, to determine that whether the first source operand of described FP add operation is the result of FP multiply operation in execution thread part; And
If described first source operand is determined to be described result and described FP addition and multiply operation have same precision, then replace described FP add operation with two combination FP multiply-add operation of rounding off, and described FP multiply operation is labeled as merges; And
In the described FP multiply operation that can check fusion in execution thread part, to determine consequently no will use by another operation; And
If the result of the FP multiply operation of described fusion is determined not used by other operation any, then remove the FP multiply operation of described fusion.
The method that 12. machines as claimed in claim 11 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored in microoperation storer as microoperation.
The method that 13. machines as claimed in claim 12 realize, is characterized in that, described inspection performs optimization logic by processor and performs.
The method that 14. machines as claimed in claim 11 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored as instruction set architecture (ISA) macro instruction.
The method that 15. machines as claimed in claim 14 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored in instruction cache as ISA macro instruction.
The method that 16. machines as claimed in claim 15 realize, it is characterized in that, described inspection is performed by processor ISA conversion logic.
The method that 17. machines as claimed in claim 14 realize, it is characterized in that, described inspection is performed by Compiler Optimization logic.
The method that 18. 1 kinds of machines realize, comprising:
Floating-point (FP) multiply operation in execution thread part can convert two combination FP multiply-adds operations of rounding off that addend operand is zero to;
FP add operation in execution thread part can convert two combination FP multiply-adds operations of rounding off that multiplier operand is to by described, the addend operand of described FP add operation is used as the multiplicand operand of described two combination FP multiply-add operation of rounding off; And
Round off and combine the destination operand that FP multiply-add operate if multiplicand operand and addend operand that multiplier operand is one first pair combination FP multiply-add operation of rounding off are zero sequenced last second pair and match, then the multiplier operated with the described second pair combination FP multiply-add that rounds off and multiplicand operand replace described first pair to round off and combine the multiplier and multiplicand operand that FP multiply-add operates; And
If two combination FP multiply-add operations of rounding off that addend operand is any remainder of zero produce untapped result, then remove two combination FP multiply-add operations of rounding off of described remainder.
The method that 19. machines as claimed in claim 18 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored in microoperation storer as microoperation.
The method that 20. machines as claimed in claim 19 realize, is characterized in that, described conversion performs optimization logic by processor and performs.
The method that 21. machines as claimed in claim 18 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored as instruction set architecture (ISA) macro instruction.
The method that 22. machines as claimed in claim 21 realize, it is characterized in that, described conversion is performed by processor ISA conversion logic.
The method that 23. machines as claimed in claim 22 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored in instruction cache as ISA macro instruction.
The method that 24. 1 kinds of machines realize, comprising:
Can floating-point (FP) multiply operation in execution thread part convert to addend operand be zero two FP that round off combine multiply-add (FCMADD) operation;
By described can the FP subtraction operation transformation in execution thread part become multiplier operand be one two FP that round off combine multiplication-subtraction (FCMSUB) operation, the minuend operand of described FP subtraction operation is used as the multiplicand operand that described FCMSUB operates;
The destination operand that FCMADD operates if the sequenced front a pair of that the multiplicand that described two FCMSUB that round off that multiplier operand is operate and addend operand are zero rounds off matches, the multiplicand then replacing described FCMSUB to operate by the multiplicand that operates with described FCMADD and multiplier operand and multiplier operand, by described two FCMADD operative combination that rounds off in described FCMSUB operation;
The destination operand that FCMADD operate if the sequenced front a pair of that subtrahend and addend operand that multiplier operand is described two FCMSUB operations of rounding off of are zero rounds off matches, then by described two FCMADD operative combination to the two FCMSUB of rounding off inverse operation that rounds off to replace the described couple of FCMSUB that rounds off to operate; And
If two FCMADD operations of rounding off that addend operand is any remainder of zero produce untapped result, then two FCMADD operations of rounding off of described remainder are removed.
The method that 25. machines as claimed in claim 24 realize, is characterized in that, described conversion performs optimization logic by processor and performs.
The method that 26. machines as claimed in claim 25 realize, is characterized in that, described two FCMSUB that rounds off operates or described two FCMSUB inverse operation that rounds off is stored in microoperation storer as microoperation.
The method that 27. machines as claimed in claim 24 realize, it is characterized in that, described conversion is performed by processor ISA conversion logic.
The method that 28. machines as claimed in claim 27 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored as instruction set architecture (ISA) macro instruction.
The method that 29. machines as claimed in claim 27 realize, is characterized in that, described two combination FP multiply-add operation of rounding off is stored in instruction cache as ISA macro instruction.
30. 1 kinds of devices, comprising:
Floating-point (FP) multiplier circuit, bears results for first operand multiplicand mantissa being multiplied by mutually with second operand multiplier mantissa;
FP alignment circuit, for 3-operand mantissa of aliging according to the result of described FP multiplier circuit;
Overflow detection circuit, for detecting the spilling situation in the described result of described FP multiplier circuit;
One FP adder circuit, for based on hypothesis spilling situation not detected in the described result of described FP multiplier circuit, utilize first to round off input by added together for the described result of described 3-operand mantissa and described FP multiplier circuit through alignment, with produce first with or poor;
2nd FP adder circuit, for based on hypothesis spilling situation being detected in the described result of described FP multiplier circuit, utilize second to round off input by added together for the described result of described 3-operand mantissa and described FP multiplier circuit through alignment, with produce second with or poor; And
Multiplexer circuit, for spilling situation being detected based on described overflow detection circuit in the result of described FP multiplier circuit or spilling situation not detected, described second and or difference and first and or difference between select.
31. devices as claimed in claim 30, is characterized in that, described first operand multiplicand, described second operand multiplier and described 3-operand are single instruction multiple data (SIMD) vector registors.
32. devices as claimed in claim 31, is characterized in that, the data element of described first operand multiplicand, described second operand multiplier and described 3-operand is 64 FP data elements.
33. devices as claimed in claim 31, is characterized in that, the data element of described first operand multiplicand, described second operand multiplier and described 3-operand is 32 FP data elements or 16 FP data elements.
34. devices as claimed in claim 30, is characterized in that, described first operand multiplicand, described second operand multiplier and described 3-operand are scalar FP registers.
35. devices as claimed in claim 34, is characterized in that, described scalar FP register is on FP storehouse.
36. 1 kinds of processors, comprising:
One or more vector registor, comprises multiple data field of the value for storing vector element separately;
Decoder stage, for two combination floating-point (FP) multiply-add or the multiplication-subtraction instruction of rounding off of single instruction multiple data of decoding (SIMD), described single instruction multiple data (SIMD) two round off combination floating-point (FP) multiply-add or multiplication-subtraction instruction appointment: the destination operand of described one or more vector registor, the first operand multiplicand of described one or more vector registor, vector element size, the second operand multiplier of described one or more vector registor, and the 3-operand of described one or more vector registor,
SIMD FP multiply-add device, comprising:
Floating-point (FP) multiplier stages, for multiple mantissa of described first operand multiplicand being multiplied to the multiple corresponding mantissa of described second operand multiplier, to produce multiple corresponding result;
FP aligns level, for the multiple corresponding mantissa of the described 3-operand that aligns according to the accordingly result of described FP multiplier stages;
Overflow detection circuit, for detecting the spilling situation in the accordingly result of described FP multiplier stages;
One FP adder stage, for based on hypothesis spilling situation not detected in the accordingly result of described FP multiplier stages, utilize first round off input by described 3-operand corresponding through alignment multiple mantissa added together to the corresponding result of described FP multiplier stages, with produce accordingly multiple first with or poor;
2nd FP adder stage, for based on hypothesis spilling situation being detected in the accordingly result of described FP multiplier stages, utilize second round off input by described 3-operand corresponding through alignment multiple mantissa added together to the corresponding result of described FP multiplier stages, with produce accordingly multiple second with or poor; And
Multiplexer level, for spilling situation being detected based on described overflow checking level in the accordingly result of described FP multiplier stages or spilling situation not detected, corresponding multiple described second and or difference and first and or difference between select.
37. processors as claimed in claim 36, is characterized in that, the data element of described first operand multiplicand, described second operand multiplier and described 3-operand is 64 FP data elements.
38. processors as claimed in claim 36, is characterized in that, the data element of described first operand multiplicand, described second operand multiplier and described 3-operand is 32 FP data elements.
39. processors as claimed in claim 36, is characterized in that, described two combination floating-point (FP) multiply-add or multiplication-subtraction instruction of rounding off is produced by processor instruction set framework (ISA) conversion logic.
40. processors as claimed in claim 39, is characterized in that, described two combination FP multiply-add or multiplication-subtraction instruction of rounding off is stored in instruction cache as ISA macro instruction.
CN201380028676.5A 2012-06-29 2013-06-19 Double rounding-off combination floating-point multiplications and addition Active CN104321741B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/539,198 2012-06-29
US13/539,198 US9213523B2 (en) 2012-06-29 2012-06-29 Double rounded combined floating-point multiply and add
PCT/US2013/046619 WO2014004220A1 (en) 2012-06-29 2013-06-19 Double rounded combined floating-point multiply and add

Publications (2)

Publication Number Publication Date
CN104321741A true CN104321741A (en) 2015-01-28
CN104321741B CN104321741B (en) 2018-03-30

Family

ID=49779297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380028676.5A Active CN104321741B (en) 2012-06-29 2013-06-19 Double rounding-off combination floating-point multiplications and addition

Country Status (3)

Country Link
US (3) US9213523B2 (en)
CN (1) CN104321741B (en)
WO (1) WO2014004220A1 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107667345A (en) * 2015-06-02 2018-02-06 英特尔公司 Packed data alignment plus computation instruction, processor, method and system
CN108431771A (en) * 2015-12-23 2018-08-21 英特尔公司 Merge multiply-add (FMA) low-function unit
CN108733345A (en) * 2017-04-24 2018-11-02 Arm 有限公司 Multiply-accumulate product instruction
CN108804077A (en) * 2017-04-28 2018-11-13 英特尔公司 Instructions and logic to perform floating-point and integer operations for machine learning
US10241756B2 (en) 2017-07-11 2019-03-26 International Business Machines Corporation Tiny detection in a floating-point unit
US10303438B2 (en) 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
CN109947474A (en) * 2017-12-21 2019-06-28 英特尔公司 Apparatus and method for vector multiplication, rounding and saturation of signed words
CN113626761A (en) * 2020-05-07 2021-11-09 脸谱公司 Bypassing zero-valued multiplications in a hardware multiplier
TWI763079B (en) * 2019-10-14 2022-05-01 大陸商安徽寒武紀信息科技有限公司 Multiplier and method for floating-point arithmetic, integrated circuit chip, and computing device
US11361496B2 (en) 2019-03-15 2022-06-14 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
CN115885250A (en) * 2020-06-26 2023-03-31 超威半导体公司 Processing unit with small footprint arithmetic logic unit
US12411695B2 (en) 2017-04-24 2025-09-09 Intel Corporation Multicore processor with each core having independent floating point datapath and integer datapath
US12493922B2 (en) 2019-11-15 2025-12-09 Intel Corporation Graphics processing unit processing and caching improvements

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213523B2 (en) * 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
US10846053B2 (en) 2014-06-27 2020-11-24 International Business Machines Corporation Underflow/overflow detection prior to normalization
CN106126189B (en) * 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 method in a microprocessor
US9645792B2 (en) 2014-08-18 2017-05-09 Qualcomm Incorporated Emulation of fused multiply-add operations
CN104320351B (en) * 2014-10-27 2019-04-05 任子行网络技术股份有限公司 Software flow control method and its system based on zero-copy and linux kernel
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US10114642B2 (en) * 2015-12-20 2018-10-30 Intel Corporation Instruction and logic for detecting the floating point cancellation effect
US10162632B1 (en) * 2016-05-27 2018-12-25 Cadence Design Systems, Inc. System and method for a low-power processing architecture
US10037189B2 (en) * 2016-09-20 2018-07-31 Altera Corporation Distributed double-precision floating-point multiplication
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
US10067744B2 (en) * 2016-12-08 2018-09-04 International Business Machines Corporation Overflow detection for sign-magnitude adders
CN117933327A (en) * 2017-04-21 2024-04-26 上海寒武纪信息科技有限公司 Processing device, processing method, chip and electronic device
WO2019005132A1 (en) 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
WO2019005115A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
US20190196829A1 (en) * 2017-12-21 2019-06-27 Elmoustapha Ould-Ahmed-Vall Apparatus and method for vector multiply and subtraction of signed doublewords
US10712460B2 (en) * 2018-03-08 2020-07-14 Chevron U.S.A. Inc. System and method for improving resolution of digital seismic images
US11182127B2 (en) 2019-03-25 2021-11-23 International Business Machines Corporation Binary floating-point multiply and scale operation for compute-intensive numerical applications and apparatuses
CN110287751A (en) * 2019-05-30 2019-09-27 江苏智联天地科技有限公司 A kind of quick decoding system and method based on high-pass platform
US12001929B2 (en) * 2020-04-01 2024-06-04 Samsung Electronics Co., Ltd. Mixed-precision neural processing unit (NPU) using spatial fusion with load balancing
US11709225B2 (en) * 2020-06-19 2023-07-25 Nxp B.V. Compression of data employing variable mantissa size
CN113867686B (en) * 2020-06-30 2026-03-24 上海寒武纪信息科技有限公司 Computational methods, devices and related products
US11188304B1 (en) 2020-07-01 2021-11-30 International Business Machines Corporation Validating microprocessor performance
US11893392B2 (en) 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof
US11983237B2 (en) * 2021-02-21 2024-05-14 Ceremorphic, Inc. Floating point dot product multiplier-accumulator
US11663004B2 (en) 2021-02-26 2023-05-30 International Business Machines Corporation Vector convert hexadecimal floating point to scaled decimal instruction
US11360769B1 (en) 2021-02-26 2022-06-14 International Business Machines Corporation Decimal scale and convert and split to hexadecimal floating point instruction
US11531546B2 (en) 2021-03-08 2022-12-20 International Business Machines Corporation Hexadecimal floating point multiply and add instruction
US12554493B2 (en) * 2021-03-18 2026-02-17 Nvidia Corporation Implementing specialized floating point instructions on an integer pipeline for accelerating dynamic programming algorithms
US20220300254A1 (en) * 2021-03-22 2022-09-22 Rebellions Inc. Processing element, neural processing device including same, and method for calculating thereof
CN119690516B (en) * 2025-02-25 2025-05-13 北京麟卓信息科技有限公司 Floating point instruction conversion calculation precision optimization method based on extended control word

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US20080022077A1 (en) * 1999-07-30 2008-01-24 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
CN101706712A (en) * 2009-11-27 2010-05-12 北京龙芯中科技术服务中心有限公司 Operation device and method for multiplying and adding floating point vector

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849923A (en) * 1986-06-27 1989-07-18 Digital Equipment Corporation Apparatus and method for execution of floating point operations
US5027308A (en) * 1989-02-14 1991-06-25 Intel Corporation Circuit for adding/subtracting two floating point operands
US5796644A (en) * 1996-11-18 1998-08-18 Samsung Electronics Company, Ltd. Floating-point multiply-and-accumulate unit with classes for alignment and normalization
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US6542916B1 (en) * 1999-07-28 2003-04-01 Arm Limited Data processing apparatus and method for applying floating-point operations to first, second and third operands
DE10050589B4 (en) 2000-02-18 2006-04-06 Hewlett-Packard Development Co., L.P., Houston Apparatus and method for use in performing a floating point multiply-accumulate operation
JP3940542B2 (en) 2000-03-13 2007-07-04 株式会社ルネサステクノロジ Data processor and data processing system
US8443029B2 (en) * 2007-03-01 2013-05-14 International Business Machines Corporation Round for reround mode in a decimal floating point instruction
US8327120B2 (en) 2007-12-29 2012-12-04 Intel Corporation Instructions with floating point control override
US9213523B2 (en) * 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
US8626813B1 (en) * 2013-08-12 2014-01-07 Board Of Regents, The University Of Texas System Dual-path fused floating-point two-term dot product unit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US20080022077A1 (en) * 1999-07-30 2008-01-24 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
CN101706712A (en) * 2009-11-27 2010-05-12 北京龙芯中科技术服务中心有限公司 Operation device and method for multiplying and adding floating point vector

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107667345B (en) * 2015-06-02 2022-03-04 英特尔公司 Packed data alignment plus computing instructions, processors, methods and systems
CN107667345A (en) * 2015-06-02 2018-02-06 英特尔公司 Packed data alignment plus computation instruction, processor, method and system
CN108431771A (en) * 2015-12-23 2018-08-21 英特尔公司 Merge multiply-add (FMA) low-function unit
CN108431771B (en) * 2015-12-23 2023-12-19 英特尔公司 Fusion multiply add (FMA) low-function unit
US10303438B2 (en) 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
US12411695B2 (en) 2017-04-24 2025-09-09 Intel Corporation Multicore processor with each core having independent floating point datapath and integer datapath
CN108733345A (en) * 2017-04-24 2018-11-02 Arm 有限公司 Multiply-accumulate product instruction
CN108733345B (en) * 2017-04-24 2024-03-15 Arm 有限公司 Multiply Accumulate Product Instructions
CN111666066A (en) * 2017-04-28 2020-09-15 英特尔公司 Instructions and logic to perform floating point and integer operations for machine learning
US11080046B2 (en) 2017-04-28 2021-08-03 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
CN111666066B (en) * 2017-04-28 2021-11-09 英特尔公司 Method for accelerating machine learning operation, graphic processing unit and data processing system
US11169799B2 (en) 2017-04-28 2021-11-09 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11720355B2 (en) 2017-04-28 2023-08-08 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
US12141578B2 (en) 2017-04-28 2024-11-12 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
US12039331B2 (en) 2017-04-28 2024-07-16 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
US11360767B2 (en) 2017-04-28 2022-06-14 Intel Corporation Instructions and logic to perform floating point and integer operations for machine learning
CN108804077A (en) * 2017-04-28 2018-11-13 英特尔公司 Instructions and logic to perform floating-point and integer operations for machine learning
US10331407B2 (en) 2017-07-11 2019-06-25 International Business Machines Corporation Tiny detection in a floating-point unit
US10241756B2 (en) 2017-07-11 2019-03-26 International Business Machines Corporation Tiny detection in a floating-point unit
CN109947474A (en) * 2017-12-21 2019-06-28 英特尔公司 Apparatus and method for vector multiplication, rounding and saturation of signed words
US11709793B2 (en) 2019-03-15 2023-07-25 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US11954063B2 (en) 2019-03-15 2024-04-09 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US11361496B2 (en) 2019-03-15 2022-06-14 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US12554674B2 (en) 2019-03-15 2026-02-17 Intel Corporation Multi-tile memory management
US12561276B2 (en) 2019-03-15 2026-02-24 Intel Corporation Systems and methods for updating memory side caches in a multi-GPU configuration
TWI763079B (en) * 2019-10-14 2022-05-01 大陸商安徽寒武紀信息科技有限公司 Multiplier and method for floating-point arithmetic, integrated circuit chip, and computing device
US12493922B2 (en) 2019-11-15 2025-12-09 Intel Corporation Graphics processing unit processing and caching improvements
US12572997B2 (en) 2019-11-15 2026-03-10 Intel Corporation Graphics processing unit processing and caching improvements
CN113626761A (en) * 2020-05-07 2021-11-09 脸谱公司 Bypassing zero-valued multiplications in a hardware multiplier
CN115885250A (en) * 2020-06-26 2023-03-31 超威半导体公司 Processing unit with small footprint arithmetic logic unit

Also Published As

Publication number Publication date
WO2014004220A1 (en) 2014-01-03
US9477441B2 (en) 2016-10-25
US20140006467A1 (en) 2014-01-02
US9778909B2 (en) 2017-10-03
US9213523B2 (en) 2015-12-15
US20160077802A1 (en) 2016-03-17
CN104321741B (en) 2018-03-30
US20170039033A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
CN104321741B (en) Double rounding-off combination floating-point multiplications and addition
CN103959237B (en) Instructions and logic to provide vector horizontal compare functionality
CN103827814B (en) Instruction and logic to provide vector load-op/store-op with stride functionality
CN103827813B (en) Instructions and logic to provide vector scatter and gather functionality
CN104011662B (en) Instructions and logic to provide vector blending and permutation functionality
CN109791513B (en) Instruction and logic for detecting numerical accumulation errors
CN104050077B (en) Processor, processing system and the method for test are provided using multiple test sources
TWI775105B (en) Method and apparatus for user-level thread synchronization with a monitor and mwait architecture
KR102512315B1 (en) Instructions and logic to provide atomic range operations
CN103827815B (en) Instruction and the logic across vectorial loading and storage with mask function are utilized for providing
CN103959236B (en) Processor, device and processing system for providing vector horizontal majority voting functionality
CN103988173B (en) Instructions and logic to provide conversions between mask registers and general-purpose registers or memory
TWI773654B (en) Processor, computing system and method for performing vector-based bit manipulation
CN104025033B (en) The SIMD variable displacements manipulated using control and circulation
US10157059B2 (en) Instruction and logic for early underflow detection and rounder bypass
CN104011658B (en) For providing instruction and the logic of SYSTEM OF LINEAR VECTOR interpolation functions
CN107690618A (en) Tighten method, apparatus, instruction and the logic of histogram function for providing vector
CN108351785A (en) Instruction and the logic of operation are reduced for part
US10318291B2 (en) Providing vector horizontal compare functionality within a vector register
TWI738681B (en) Processor, method for detecting cancellation effect and cancellation effect detection unit
US10157063B2 (en) Instruction and logic for optimization level aware branch prediction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant