CN109992308A - Device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line - Google Patents

Device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line Download PDF

Info

Publication number
CN109992308A
CN109992308A CN201811441578.5A CN201811441578A CN109992308A CN 109992308 A CN109992308 A CN 109992308A CN 201811441578 A CN201811441578 A CN 201811441578A CN 109992308 A CN109992308 A CN 109992308A
Authority
CN
China
Prior art keywords
data element
register
instruction
source
broadcasting instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811441578.5A
Other languages
Chinese (zh)
Inventor
W·M·布朗
R·舒尔茨
K·拉曼
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 CN109992308A publication Critical patent/CN109992308A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • G06F9/38873Iterative single instructions for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

This application provides the device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line.A kind of device and method for circulation flattening and reduction in SIMD assembly line, the SIMD assembly line include broadcast, mobile and reduction instruction.Such as, one embodiment of processor includes: decoder, for decoding broadcasting instructions to generate the decoded broadcasting instructions for identifying multiple operations, broadcasting instructions include operation code, the first source operand, the second source operand and at least one vector element size, and broadcasting instructions have split values associated with itself;First source register, it is associated with the first source operand, for storing more than first a packed data elements;Second source register, it is associated with the second source operand, for storing more than second a packed data elements;Execution circuit, for executing the operation of decoded broadcasting instructions, execution circuit from the first source register for copying to the continuous data element of the first quantity by first group of continuous data element position in the register of vector element size designated destination, execution circuit is further used for the continuous data element of the second quantity copying to second group of continuous data element position in destination register from the second source register, and wherein execution circuit is used to determine the first quantity and the second quantity according to split values associated with broadcasting instructions.

Description

Device for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line And method
Background technique
Technical field
The embodiment of the present invention relates generally to the field of computer processor.More specifically, the embodiment of the present invention relates to And for the circulation flattening (flattening) and reduction (reduction) in single-instruction multiple-data (SIMD) processor pipeline Device and method.
Description of Related Art
Instruction set or instruction set architecture (ISA) are the parts of programming involved in computer architecture, including native data type, Instruction, register architecture, addressing mode, memory architecture, interruption and abnormal disposition and external input and output (I/O).It answers When note that term " instruction " generally refers to macro-instruction --- that is, the instruction for being supplied to processor for execution --- herein Rather than microcommand or microoperation --- that is, the knot that the decoder that the microcommand or micro- behaviour are processors is decoded macro-instruction Fruit.The execution unit that microcommand or microoperation are configured on instruction processor executes operation to realize and macro-instruction Associated logic.
ISA is different from micro-architecture, and micro-architecture is the set of the processor designing technique for realizing instruction set.With difference The processor of micro-architecture can share common instruction set.For example,Pentium 4 (Pentium 4) processor,DuoTM(CoreTM) processor and partly led from the ultra micro of California Sani Weir (Sunnyvale) Multiple processors of body Co., Ltd (Advanced Micro Devices, Inc.) realize the x86 instruction of almost the same version Collection (has some extensions being added with the version of update), but has different interior designs.For example, the identical deposit of ISA Well known technology can be used to realize in different ways in different micro-architectures for device framework, including dedicated physical register, make With register renaming mechanism (for example, using register alias table (RAT), resequencing buffer (ROB) and resignation register Heap) one or more physical registers dynamically distributed.Otherwise phrase " register architecture ", " register unless otherwise specified, In this paper, we refer to post to software/programmer and to the mode of the specified register of instruction is visible for heap " and " register " Storage framework, register file and register.In the case where needing to distinguish, adjective " logic ", " framework ", or " software It is visible " register/register file for will being used to indicate in register architecture, and different adjectives will be used to provide to give it is micro- Register (for example, physical register, resequence buffer, resignation register, register pond) in type frame structure.
Single-instruction multiple-data (SIMD) is in response to individual instructions while multiple numbers for being tightened in register of processing According to the framework of element.For example, the 16 double word values (having a size of 32) being tightened in single 512 bit register can be via SIMD " channel " is assigned to functional unit, and functional unit is allowed to execute concurrent operations to data element.As example and non-limit System, operation may include that the multiplication of multiple individual data elements, the cumulative of obtained product, displacement/moving operation are (all Such as, the position of exchange data elements and other data elements) and one or more groups of data elements are combined into one reduction Operation.
Detailed description of the invention
In conjunction with the following drawings, it can get from following specific embodiments and the present invention better understood, in which:
Figure 1A and Figure 1B is the general vector close friend instruction format and its instruction mould for illustrating embodiment according to the present invention The block diagram of plate;
Fig. 2A-Fig. 2 C is the block diagram for illustrating the exemplary VEX instruction format of embodiment according to the present invention;
Fig. 3 is the block diagram of register architecture according to an embodiment of the invention;And
Fig. 4 A be diagram go out embodiment according to the present invention it is exemplary it is orderly take out, decoding, resignation and are shown assembly line The block diagram of both out-of-order publication/execution pipelines of example property register renaming;
Fig. 4 B is orderly taking-up, decoding, the resignation to be included in the processor for illustrating embodiment according to the present invention Out-of-order publication/execution framework core block diagram of exemplary embodiment and the exemplary register renaming of core;
Fig. 5 A is single processor core and the block diagram that it connect with interference networks on tube core;
Fig. 5 B illustrates the expanded view of the part of the processor core in Fig. 5 A of embodiment according to the present invention;
Fig. 6 be embodiment according to the present invention single core processor with integrated memory controller and graphics devices and The block diagram of multi-core processor;
Fig. 7 illustrates the block diagram of system according to an embodiment of the invention;
Fig. 8 illustrates the block diagram of the second system of embodiment according to the present invention;
Fig. 9 illustrates the block diagram of the third system of embodiment according to the present invention;
Figure 10 illustrates the block diagram of the system on chip (SoC) of embodiment according to the present invention;
Figure 11 illustrates embodiment according to the present invention, control using software instruction converter for two in source instruction set System instruction is converted into the block diagram of the binary instruction of target instruction target word concentration;
Figure 12 illustrates the data tightened in exemplary simd register;
Figure 13 illustrates the SIMD data tightened according to division (split) value;
Figure 14 illustrates the processor architecture that can realize the embodiment of the present invention on it;
Figure 15 illustrates the data manipulation for instructing and executing in response to exemplary vector reduction;
Figure 16 illustrates the data manipulation of embodiment according to the present invention executed in response to vector reduction instruction;
The method that Figure 17-Figure 19 illustrates different embodiment according to the subject invention.
Specific embodiment
In the following description, for illustrative purposes, elaborate numerous details in order to provide to described below The embodiment of the present invention thorough understanding.It will be apparent, however, to one skilled in the art that can there is no these specific Implement the embodiment of the present invention in the case where some details in details.In other instances, well known structure and equipment are with frame Diagram form is shown, to avoid making the basic principle of the embodiment of the present invention thicken.
Example processor framework, instruction format and data type
Instruction set includes one or more instruction formats.Given instruction format defines various fields (quantity of position, position Position) to specify operation (operation code) to be executed and (multiple) operand etc. of the operation will be executed to it.Pass through Some instruction formats are further decomposed in the definition of instruction template (or subformat).For example, can be by the instruction of given instruction format Template definition is the field with the instruction format (included field usually according to same sequence, but at least some fields Position with different positions, because less field is included) different subsets, and/or be defined as have in different ways The given field explained.Each instruction of ISA (and if defined, is pressed using given instruction format as a result, According to the given instruction template in the instruction template of the instruction format) to express, and operate and operate including being used to specify Several fields.For example, exemplary ADD (addition) instruction has specific operation code and instruction format, the specific instruction format Including for specifying the opcode field of the operation code and for the operation number in selection operation number (1/ destination of source and source 2) Section;And the ADD instruction occurs to make have the specific of selection specific operation number in operand field in instruction stream Content.
The embodiment of (a plurality of) instruction described herein can embody in a different format.In addition, being described below Exemplary system, framework and assembly line.The embodiment of (a plurality of) instruction can execute on such system, framework and assembly line, but It is not limited to those of detailed description system, framework and assembly line.
General vector close friend's instruction format
Vector friendly instruction format is adapted for the finger of vector instruction (for example, in the presence of the specific fields for being exclusively used in vector operations) Enable format.Notwithstanding the embodiment for wherein passing through both vector friendly instruction format supporting vector and scalar operations, still The vector operations by vector friendly instruction format are used only in alternate embodiment.
Figure 1A-Figure 1B is the general vector close friend instruction format and its instruction template for illustrating embodiment according to the present invention Block diagram.Figure 1A is the general vector close friend instruction format for illustrating embodiment according to the present invention and its block diagram of A class instruction template; And Figure 1B is the general vector close friend instruction format for illustrating embodiment according to the present invention and its block diagram of B class instruction template.Tool Body, A class and B class instruction template are defined for general vector close friend instruction format 100, both of which includes no memory access 105 instruction template and the instruction template of memory access 120.Term in the context of vector friendly instruction format is " logical With " refer to the instruction format for being not bound by any particular, instruction set.
Although the embodiment of the present invention of wherein vector friendly instruction format support following situations: 64 byte vectors will be described Operand length (or size) and 32 (4 bytes) or 64 (8 byte) data element widths (or size) (and as a result, 64 Byte vector is made of the element of 16 double word sizes, or is alternatively made of the element of 8 four word sizes);64 bytes to Measure operand length (or size) and 16 (2 bytes) or 8 (1 byte) data element widths (or size);32 byte vectors Operand length (or size) and 32 (4 bytes), 64 (8 byte), 16 (2 bytes) or 8 (1 byte) data elements are wide It spends (or size);And 16 byte vector operand length (or size) and 32 (4 byte), 64 (8 byte), 16 (2 words Section) or 8 (1 byte) data element widths (or size);But alternate embodiment can support it is bigger, smaller and/or different Vector operand size (for example, 256 byte vector operands) and bigger, smaller or different data element width (for example, 128 (16 byte) data element widths).
A class instruction template in Figure 1A include: 1) no memory access 105 instruction template in, no memory is shown The finger of the data changing type operation 115 of instruction template and the no memory access of the accesses-complete rounding control type operation 110 of access Enable template;And 2) in the instruction template of memory access 120, the instruction template of the timeliness 125 of memory access is shown With the instruction template of the non-timeliness 130 of memory access.B class instruction template in Figure 1B includes: 1) to access in no memory In 105 instruction template, the instruction template of the part rounding control type operation 112 for writing mask control of no memory access is shown And the instruction template of the vsize type operation 117 for writing mask control of no memory access;And 2) in memory access 120 Instruction template in, show memory access write mask control 127 instruction template.
General vector close friend instruction format 100 include be listed below according to the sequence illustrated in Figure 1A-Figure 1B as Lower field.
Format fields 140 --- the particular value (instruction format identifier value) in the field uniquely identifies vector close friend and refers to Format is enabled, and thus mark instruction occurs in instruction stream with vector friendly instruction format.The field is for only having as a result, The instruction set of general vector close friend's instruction format be it is unwanted, the field is optional in this sense.
Fundamental operation field 142 --- its content distinguishes different fundamental operations.
Register index field 144 --- its content directs or through address and generates to specify source or vector element size Position in a register or in memory.These fields include sufficient amount of position with from PxQ (for example, 32x512, 16x128,32x1024,64x1024) N number of register is selected in register file.Although N can up to three in one embodiment Source register and a destination register, but alternate embodiment can support more or fewer source and destination registers (for example, up to two sources can be supported, wherein a source in these sources also serves as destination;It can support up to three sources, wherein A source in these sources also serves as destination;It can support up to two sources and a destination).
Modifier (modifier) field 146 --- its content is by specified memory access with general vector instruction format The instruction of appearance is distinguished with the instruction of not specified memory access occurred with general vector instruction format;I.e. in no memory It is distinguished between the instruction template of access 105 and the instruction template of memory access 120.Memory access operation read and/ Or it is written to memory hierarchy (in some cases, specifying source and destination address using the value in register), Er Feicun Reservoir access operation is not in this way (for example, source and/or destination are registers).Although in one embodiment, which also exists Selected between three kinds of different modes to execute storage address calculating, but alternate embodiment can support it is more, less or not Same mode calculates to execute storage address.
Extended operation field 150 --- which in various different operations the differentiation of its content will also execute in addition to fundamental operation One operation.The field is for context.In one embodiment of the invention, which is divided into class field 168, α Field 152 and β field 154.Extended operation field 150 allows in individual instructions rather than executes multiple groups in 2,3 or 4 instructions Common operation.
Ratio field 160 --- its content is allowed for storage address to generate (for example, for using (2Ratio* index+base Location) address generate) index field content bi-directional scaling.
Displacement field 162A --- its content is used as a part of storage address generation (for example, for using (2Ratio* rope Draw+plot+displacement) address generate).
Displacement factor field 162B is (note that juxtaposition instruction of the displacement field 162A directly on displacement factor field 162B Use one or the other) --- its content is used as a part that address generates;It is specified by bi-directional scaling memory access Size (N) displacement factor --- wherein N is byte quantity in memory access (for example, for using (2Ratio* index+ The displacement of plot+bi-directional scaling) address generate).Ignore the low-order bit of redundancy, and therefore will be in displacement factor field Final mean annual increment movement used in effective address will calculated to generate multiplied by memory operand overall size (N) by holding.The value of N is by handling Device hardware is determined based on complete operation code field 174 (being described herein later) and data manipulation field 154C at runtime. Displacement field 162A and displacement factor field 162B be not used in no memory access 105 instruction template and/or different implementation Only one in the achievable the two of example does not realize any of the two, in this sense, displacement field 162A and Displacement factor field 162B is optional.
Data element width field 164 --- its content distinguish will use which of multiple data element widths ( All instructions is used in some embodiments;The some instructions being served only in instruction in other embodiments).If supporting only one Data element width and/or support data element width in a certain respect using operation code, then the field is unwanted, In this meaning, which is optional.
Write mask field 170 --- its content by data element position controls the data element in the vector operand of destination Whether plain position reflects the result of fundamental operation and extended operation.The support of A class instruction template merges-writes masking, and B class instructs mould Plate support merges-writes masking and zero-writes both maskings.When combined, vector mask allows in execution (by fundamental operation and expansion It is specified to fill operation) protect any element set in destination from updating during any operation;In another embodiment, it keeps Wherein correspond to masked bits with 0 destination each element old value.On the contrary, the permission of vector mask is executing when zero Any element set in destination is set to be zeroed during (being specified by fundamental operation and extended operation) any operation;Implement at one In example, the element of destination is set as 0 when corresponding masked bits have 0 value.The subset of the function is the behaviour that control is executed The ability (that is, from first to the span of a last element just modified) of the vector length of work, however, the member modified Element is not necessarily intended to be continuous.Writing mask field 170 as a result, allows part vector operations, this includes load, storage, arithmetic, patrols Volume etc..It include to be used notwithstanding multiple write in mask register of the content selection for wherein writing mask field 170 Write one of mask write mask register (and write as a result, mask field 170 content indirection identify the masking to be executed) The embodiment of the present invention, but alternate embodiment alternatively or additionally allow mask write section 170 content it is directly specified The masking to be executed.
Digital section 172 --- its content allows to specify immediate immediately.The field does not support immediate in realization It is not present in general vector close friend's format and is not present in the instruction without using immediate, in this sense, which is Optional.
Class field 168 --- its content distinguishes between inhomogeneous instruction.With reference to Figure 1A-Figure 1B, the field Content is selected between A class and the instruction of B class.In Figure 1A-Figure 1B, rounded square is used to indicate specific value and is present in word (for example, A class 168A and B the class 168B for being respectively used to class field 168 in Figure 1A-Figure 1B) in section.
A class instruction template
In the case where the instruction template of A class non-memory access 105, α field 152 is interpreted that the differentiation of its content will be held It is any (for example, being visited for the rounding-off type operation 110 of no memory access and no memory in the different extended operation types of row Ask data changing type operation 115 instruction template respectively specify that rounding-off 152A.1 and data transformation 152A.2) RS field 152A, and β field 154 distinguish it is any in the operation that execute specified type.In the instruction mould of no memory access 105 In plate, ratio field 160, displacement field 162A and displacement ratio field 162B are not present.
Instruction template --- the accesses-complete rounding control type operation of no memory access
In the instruction template of the accesses-complete rounding control type operation 110 of no memory access, β field 154 is interpreted it (multiple) content provides the rounding control field 154A of static rounding-off.Although the rounding control word in the embodiment of the invention Section 154A includes inhibiting all floating-point exception (SAE) fields 156 and rounding-off operation control field 158, but alternate embodiment can It supports the two concepts, can be same field by the two concept codes, or only with one or another in these concept/fields One (for example, can only have rounding-off operation control field 158).
SAE field 156 --- whether the differentiation of its content disables unusual occurrence report;When the content instruction of SAE field 156 is opened When with inhibiting, any kind of floating-point exception mark is not reported in given instruction, and does not arouse any floating-point exception disposition journey Sequence.
Rounding-off operation control field 158 --- its content differentiation to execute which of one group of rounding-off operation (for example, to Round-up, to round down, to zero rounding-off and nearby rounding-off).Rounding-off operation control field 158 allows to change by instruction as a result, Become rounding mode.In one embodiment of the present of invention that wherein processor includes for specifying the control register of rounding mode In, the content of rounding-off operation control field 150 covers (override) register value.
The accesses-data changing type operation of no memory access
In the instruction template of the data changing type operation 115 of no memory access, β field 154 is interpreted that data become Field 154B is changed, content differentiation will execute which of multiple data transformation (for example, no data transformation, mixing, broadcast).
In the case where the instruction template of A class memory access 120, α field 152 is interpreted expulsion prompting field 152B, content, which is distinguished, will use which of expulsion prompt (in figure 1A, for the finger of memory access timeliness 125 The instruction template of template and memory access non-timeliness 130 is enabled to respectively specify that the 152B.1 and non-timeliness of timeliness 152B.2), and β field 154 is interpreted data manipulation field 154C, content differentiation will execute multiple data manipulation operations Which of (also referred to as primitive (primitive)) (for example, without manipulation, broadcast, the upward conversion in source and destination to Lower conversion).The instruction template of memory access 120 includes ratio field 160, and optionally includes displacement field 162A or displacement Ratio field 162B.
Vector memory instruction supported using conversion execute vector load from memory and to memory to Amount storage.Such as ordinary vector instruction, vector memory instruction transmits number from/to memory in a manner of data element formula According to wherein the practical element transmitted writes the content provided of the vector mask of mask by being chosen as.
The instruction template of memory access --- timeliness
The data of timeliness are the data that possible be reused fast enough to be benefited from cache operations.However, This is prompt, and different processors can realize it in different ways, including ignore the prompt completely.
The instruction template of memory access --- non-timeliness
The data of non-timeliness are to be less likely to be reused fast enough with from the high speed in first order cache Caching is benefited and should be given the data of expulsion priority.However, this is prompt, and different processors can be with not Same mode realizes it, including ignores the prompt completely.
B class instruction template
In the case where B class instruction template, α field 152 is interpreted to write mask control (Z) field 152C, content regions Dividing by writing the masking of writing that mask field 170 controls should merge or be zeroed.
In the case where the instruction template of B class non-memory access 105, a part of β field 154 is interpreted RL field 157A, content differentiation will execute any (for example, writing mask for no memory access in different extended operation types Mask control VSIZE type operation 117 is write in instruction template and the no memory access of control section rounding control type operations 112 Instruction template respectively specify that rounding-off 157A.1 and vector length (VSIZE) 157A.2), and the rest part of β field 154 distinguish It executes any in the operation of specified type.In the instruction template of no memory access 105, ratio field 160, position Field 162A and displacement ratio field 162B is moved to be not present.
In the instruction template for writing mask control section rounding control type operation 110 of no memory access, β field 154 Rest part be interpreted to be rounded operation field 159A, and disable unusual occurrence report (given instruction do not reported any The floating-point exception mark of type, and do not arouse any floating-point exception treatment procedures).
Rounding-off operation control field 159A --- as rounding-off operation control field 158, content differentiation will execute one group Rounding-off operation which of (for example, be rounded up to, to round down, to zero rounding-off and nearby rounding-off).Rounding-off operation as a result, Control field 159A allows to change rounding mode by instruction.It include for specifying the control of rounding mode to post in wherein processor In one embodiment of the present of invention of storage, the content of rounding-off operation control field 150 covers the register value.
In the instruction template for writing mask control VSIZE type operation 117 of no memory access, its remaining part of β field 154 Point be interpreted vector length field 159B, content differentiation to execute which of multiple data vector length (for example, 128 bytes, 256 bytes or 512 bytes).
In the case where the instruction template of B class memory access 120, a part of β field 154 is interpreted Broadcast field 157B, whether content differentiation will execute broadcast-type data manipulation operations, and the rest part of β field 154 is interpreted vector Length field 159B.The instruction template of memory access 120 includes ratio field 160, and optionally includes displacement field 162A Or displacement ratio field 162B.
For general vector close friend instruction format 100, showing complete operation code field 174 includes format fields 140, basis Operation field 142 and data element width field 164.Although being shown in which that complete operation code field 174 includes all these One embodiment of field, but in the embodiment for not supporting all these fields, complete operation code field 174 includes being less than All these fields.Complete operation code field 174 provides operation code (operation code).
Extended operation field 150, data element width field 164 and write mask field 170 allow by instruction with general Vector friendly instruction format specifies these features.
The combination for writing mask field and data element width field creates various types of instructions, because these instructions allow The mask is applied based on different data element widths.
It is beneficial in the case of the various instruction templates occurred in A class and B class are in difference.In some realities of the invention Apply in example, the different IPs in different processor or processor can support only A class, only B class or can support these two types.Citing and Speech, it is intended to which the high performance universal random ordering core for general-purpose computations can only support B class, it is intended to be mainly used for figure and/or science (gulps down The amount of spitting) core that calculates can only support A class, and is intended for general-purpose computations and figure and/or science (handling capacity) and both calculates Core both A class and B class can be supported (certainly, to there are some mixing from these two types of templates and instruction but be not from The core of these two types of all templates and instruction is within the scope of the invention).Equally, single processor may include multiple cores, this is more A core all supports identical class, or wherein different core supports different classes.For example, with individual figure In core and the processor of general purpose core, it is intended to be used mainly for figure and/or a core of scientific algorithm in graphics core and can only supports A Class, and one or more of general purpose core can be the Out-of-order execution with the only support B class for being intended for general-purpose computations and post The high performance universal core of storage renaming.Another processor without individual graphics core may include not only having supported A class but also having supported B One or more general orderly or out-of-order cores of class.It certainly, in different embodiments of the invention, can also from a kind of feature It is realized in other classes.Various differences will be made to become with the program of high level language (for example, compiling or static compilation in time) Executable form, these executable forms include: 1) only to have by (multiple) class of the target processor support for execution Instruction form;Or 2) with replacement routine and there is the form for controlling stream code, which uses all classes The various combination of instruction is write, which selects these routines based on the processor by being currently executing code The instruction of support executes.
VEX instruction format
VEX coding, which allows to instruct, has more than two operand, and SIMD vector registor is allowed to be longer than 28.VEX The use of prefix provides three operands (or more multioperand) syntax.For example, two previous operand instructions execute such as A The operation of the overriding source operand of=A+B etc.The use of VEX prefix enables operand to execute the non-broken of such as A=B+C etc The operation of bad property.
Fig. 2A illustrates exemplary AVX instruction format, including VEX prefix 202, real opcode field 230, Mod R/M word Section 240, SIB byte 250, displacement field 262 and IMM8 272.Fig. 2 B, which illustrates which field from Fig. 2A, to be constituted completely Opcode field 274 and fundamental operation field 241.Which field from Fig. 2A illustrated and constitutes register index field by Fig. 2 C 244。
VEX prefix (byte 0-2) 202 is encoded in the form of three bytes.First byte is (the VEX word of format fields 290 Section 0, position [7:0]), which includes explicit C4 byte value (for distinguishing the unique value of C4 instruction format).The Two-third bytes (VEX byte 1-2) include providing several bit fields of dedicated ability.Specifically, (the VEX word of REX field 205 Section 1, position [7-5]) by VEX.R bit field (VEX byte 1, position [7]-R), VEX.X bit field (VEX byte 1, position [6]-X) and VEX.B bit field (VEX byte 1, position [5]-B) composition.Other fields of these instructions are to deposit as known in the art Device index lower three positions (rrr, xxx and bbb) encoded so that can by increase VEX.R, VEX.X and VEX.B forms Rrrr, Xxxx and Bbbb.Operation code map field 215 (VEX byte 1, position [4:0]-mmmmm) includes using In the content encoded to implicit leading opcode byte.W field 264 (VEX byte 2, position [7]-W) --- by mark VEX.W is indicated, and provides the different function for depending on the instruction.VEX.vvvv 220 (VEX byte 2, position [6:3]-vvvv) Effect may include as follows: 1) VEX.vvvv to appointed first source register operand of form of reversion (1 complement code) into Row coding, and it is effective to the instruction with two or more source operands;2) VEX.vvvv is to for certain vector displacements Appointed destination register operand is encoded in the form of 1 complement code;Or 3) VEX.vvvv not to any operand It is encoded, which is retained and should include 1111b.If 268 size field of VEX.L (VEX byte 2, position [2]- L)=0, then it indicates 28 bit vectors;If VEX.L=1, it indicates 256 bit vectors.(the VEX byte of prefix code field 225 2, position [1:0]-pp) extra order for being used for fundamental operation field 241 is provided.
Real opcode field 230 (byte 3) is also known as opcode byte.A part of operation code is referred in the field It is fixed.
MOD R/M field 240 (byte 4) includes MOD field 242 (position [7-6]), Reg field 244 (position [5-3]) and R/M Field 246 (position [2-0]).The effect of Reg field 244 may include as follows: grasp to destination register operand or source register Count (rrr of Rrrr) encoded;Or it is considered as operation code extension, and be not used in and compile to any instruction operands Code.The effect of R/M field 246 may include as follows: encode to the instruction operands of reference storage address;Or to purpose Ground register operand or source register operand are encoded.
Ratio, index, plot (SIB) --- the content of ratio field 250 (byte 5) include SS252 (position [7-6]), It is generated for storage address.Previously being directed to register index Xxxx and Bbbb was referred to SIB.xxx 254 (position [5-3]) With the content of SIB.bbb 256 (position [2-0]).
Displacement field 262 and immediately digital section (IMM8) 272 includes data.
Exemplary register architecture
Fig. 3 is the block diagram of register architecture 300 according to an embodiment of the invention.In the illustrated embodiment, There is the vector registor 310 of 32 512 bit wides;These registers are cited as zmm0 to zmm31.Lower 6 zmm registers 256 positions of lower-order covering (overlay) on register ymm0-15.Lower-order 128 of lower 6 zmm registers Position (128 positions of lower-order of ymm register) is covered on register xmm0-15.
General register 325 --- in the embodiment illustrated, there are 16 64 general registers, these registers It is used together with existing x86 addressing mode to be addressed to memory operand.These registers by title RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP and R8 to R15 are quoted.
Scalar floating-point stack register heap (x87 stack) 345 has been overlapped MMX above it and has tightened the flat register file of integer 350 --- in the illustrated embodiment, x87 stack be for using x87 instruction set extension come to 32/64/80 floating data Execute eight element stacks of scalar floating-point operation;And operation is executed to 64 deflation integer datas using MMX register, Yi Jiwei The some operations executed between MMX and XMM register save operand.
Broader or narrower register can be used in alternate embodiment of the invention.In addition, substitution of the invention is implemented More, less or different register file and register can be used in example.
Exemplary nuclear architecture, processor and computer architecture
Processor core can be realized in different ways, for different purposes, in different processors.For example, this nucleoid Realization may include: 1) to be intended for the general ordered nucleuses of general-purpose computations;2) it is intended for the high performance universal of general-purpose computations Out-of-order core;3) it is intended to be used mainly for the specific core of figure and/or science (handling capacity) calculating.The realization of different processor can wrap It includes: 1) CPU comprising be intended for one or more general ordered nucleuses of general-purpose computations and/or be intended for general-purpose computations One or more general out-of-order cores;And 2) coprocessor comprising be intended to be used mainly for figure and/or science (handling capacity) One or more specific cores.Such different processor leads to different computer system architectures, these computer system architectures Can include: 1) coprocessor on the chip opened with CPU points;2) in encapsulation identical with CPU but on the tube core separated Coprocessor;3) (in this case, such coprocessor is sometimes referred to as special with the coprocessor of CPU on the same die With logic or referred to as specific core, the special logic such as, integrated graphics and/or science (handling capacity) logic);And 4) chip Upper system, can be by described CPU (sometimes referred to as (multiple) to apply core or (multiple) application processor), above description Coprocessor and additional function be included on the same die.Then exemplary nuclear architecture is described, exemplary process is then described Device and computer architecture.The circuit (unit) including example core, processor etc. is described in detail herein.
Exemplary nuclear architecture
Fig. 4 A is that life is thought highly of in the sample in-order pipeline for illustrating each embodiment according to the present invention and illustrative deposit The block diagram of out-of-order publication/execution pipeline of name.Fig. 4 B be each embodiment according to the present invention is shown to be included in processor In ordered architecture core exemplary embodiment and illustrative register renaming out-of-order publication/execution framework core frame Figure.Solid box diagram ordered assembly line and ordered nucleus in Fig. 4 A- Fig. 4 B, and life is thought highly of in the optional increase of dotted line frame diagram deposit Name, out-of-order publication/execution pipeline and core.Subset in terms of being random ordering in view of orderly aspect, will the out-of-order aspect of description.
In Figure 4 A, processor pipeline 400 includes taking out level 402, length decoder level 404, decoder stage 406, distribution stage 408, rename level 410, scheduling (are also referred to as assigned or are issued) grade 412, register reading memory reading level 414, execute Grade 416 writes back/memory write level 418, abnormal disposition grade 422 and submission level 424.
Fig. 4 B shows processor core 490, which includes front end unit 430, which is coupled to Enforcement engine unit 450, and both front end unit 430 and enforcement engine unit 450 are all coupled to memory cell 470.Core 490 can be reduced instruction set computing (RISC) core, complex instruction set calculation (CISC) core, very long instruction word (VLIW) core or The core type of mixing or substitution.As another option, core 490 can be specific core, such as, network or communication core, compression Engine, coprocessor core, general-purpose computations graphics processing unit (GPGPU) core, graphics core, etc..
Front end unit 430 includes inch prediction unit 432, which is coupled to instruction cache list Member 434, the Instruction Cache Unit 434 are coupled to instruction translation lookaside buffer (TLB) 436, and the instruction translation look-aside is slow It rushes device 436 and is coupled to instruction retrieval unit 438, which is coupled to decoding unit 440.Decoding unit 440 (or decoder) can to instruction decoding, and generate it is being decoded from presumptive instruction or otherwise reflect presumptive instruction, Or one or more microoperations, microcode entry point, microcommand, other instructions or other control letters derived from presumptive instruction Number as output.A variety of different mechanism can be used to realize for decoding unit 440.The example of suitable mechanism includes but is not limited to, Look-up table, hardware realization, programmable logic array (PLA), microcode read only memory (ROM) etc..In one embodiment, core 490 include storage for the microcode ROM of the microcode of certain macro-instructions or other media (for example, in decoding unit 440, Or otherwise in front end unit 430).Decoding unit 440 is coupled to renaming/distribution in enforcement engine unit 450 Device unit 452.
Enforcement engine unit 450 includes renaming/dispenser unit 452, which is coupled to The set 456 of retirement unit 454 and one or more dispatcher units.(multiple) dispatcher unit 456 indicates any amount of Different schedulers, including reserved station, central command window etc..(multiple) dispatcher unit 456 is coupled to (multiple) physical register Heap unit 458.Each of (multiple) physical register file unit 458 physical register file unit indicates one or more objects Register file is managed, wherein different physical register files stores one or more different data types, such as, scalar integer, Scalar floating-point tightens integer, tightens floating-point, vectorial integer, vector floating-point, and state is (for example, as the next instruction to be executed Address instruction pointer) etc..In one embodiment, (multiple) physical register file unit 458 includes vector registor Unit and scalar register unit.These register cells can provide framework vector registor, vector mask register and lead to Use register.(multiple) physical register file unit 458 is overlapped by retirement unit 454, to illustrate achievable register renaming Various modes with Out-of-order execution are (for example, use (multiple) resequencing buffer and (multiple) resignation register files;It uses (more It is a) future file, (multiple) historic buffer, (multiple) resignation register files;Using register mappings and register pond, etc. Deng).Retirement unit 454 and (multiple) physical register file unit 458 are coupled to (multiple) execution clusters 460.It is (multiple) to execute Cluster 460 includes the set 462 of one or more execution units and the set 464 of one or more memory access units. Execution unit 462 can be performed various operations (for example, displacement, addition, subtraction, multiplication) and can be to various data type (for example, mark Floating-point is measured, tightens integer, tighten floating-point, vectorial integer, vector floating-point) it executes.Although some embodiments may include being exclusively used in Multiple execution units of specific function or function set, but other embodiments may include only one execution unit or all execute The functional multiple execution units of institute.(multiple) dispatcher unit 456, (multiple) physical register file unit 458 and (multiple) Execute cluster 460 be shown as to have it is multiple because some embodiments be certain form of data/operation create separated flowing water Line (for example, scalar integer assembly line, scalar floating-point/deflation integer/deflation floating-point/vectorial integer/vector floating-point assembly line, and/ Or respectively with the dispatcher unit of its own, (multiple) physical register file unit and/or the memory access for executing cluster Assembly line --- and in the case where separated pipeline memory accesses, realize wherein the execution cluster tool of the only assembly line There are some embodiments of (multiple) memory access unit 464).It is also understood that using separated assembly line, One or more of these assembly lines can be out-of-order publication/execution, and remaining assembly line can be ordered into.
The set 464 of memory access unit is coupled to memory cell 470, which includes data TLB Unit 472, the data TLB unit 472 are coupled to data cache unit 474, which is coupled to The second level (L2) cache element 476.In one exemplary embodiment, memory access unit 464 may include that load is single Member, storage address unit and data storage unit, it is mono- that each of these is coupled to the data TLB in memory cell 470 Member 472.Instruction Cache Unit 434 is additionally coupled to the second level (L2) cache element 476 in memory cell 470. L2 cache element 476 is coupled to the cache of other one or more ranks, and is eventually coupled to main memory.
As an example, out-of-order publication/execution core framework of exemplary register renaming can realize flowing water as described below Line 400:1) it instructs and takes out 438 execution taking out levels 402 and length decoder level 404;2) decoding unit 440 executes decoder stage 406;3) Renaming/dispenser unit 452 executes distribution stage 408 and rename level 410;4) (multiple) dispatcher unit 456 executes scheduling Grade 412;5) (multiple) physical register file unit 458 and memory cell 470 execute register reading memory reading level 414;It executes cluster 460 and executes executive level 416;6) memory cell 470 and the execution of (multiple) physical register file unit 458 are write Return/memory write level 418;7) each unit can involve abnormal disposition grade 422;And 8) retirement unit 454 and (multiple) object It manages register file cell 458 and executes submission level 424.
Core 490 can support one or more instruction set (for example, x86 instruction set together with more recent version (with what is added Some extensions);The MIPS instruction set of MIPS Technologies Inc. of California Sunnyvale city;California Sani dimension The ARM instruction set (the optional additional extension with such as NEON) of the ARM holding company in your city), including retouching herein (a plurality of) instruction stated.In one embodiment, core 490 include for support packed data instruction set extension (for example, AVX1, AVX2 logic) thus allows to execute the operation used by many multimedia application using packed data.
It should be appreciated that core can be supported multithreading (set for executing two or more parallel operations or thread), and And the multithreading can be variously completed, various modes include time division multithreading, simultaneous multi-threading (wherein list A physical core just provides Logic Core in each of the thread of simultaneous multi-threading thread for physical core), or combinations thereof (example Such as, the time-division takes out and decoding and hereafter such asMultithreading while in hyperthread technology).
Although describing register renaming in the context of Out-of-order execution, it is to be understood that, it can be in ordered architecture It is middle to use register renaming.Although the embodiment of illustrated processor further includes separated instruction and data cache list Member 434/474 and shared L2 cache element 476, but alternate embodiment can have for both instruction and datas It is single internally cached, such as, the first order (L1) is internally cached or multiple ranks it is internally cached.? In some embodiments, which may include internally cached and External Cache outside the core and or processor group It closes.Alternatively, all caches can be in the outside of core and or processor.
Specific exemplary ordered nucleus framework
Fig. 5 A- Fig. 5 B illustrates the block diagram of more specific exemplary ordered nucleus framework, which will be several logics in chip A logical block in block (including same type and/or other different types of cores).Depending on application, logical block passes through high band Wide interference networks (for example, loop network) and the function logic, memory I/O Interface and other necessary I/O of some fixations are patrolled It collects and is communicated.
Fig. 5 A be embodiment according to the present invention single processor core and it to interference networks 502 on tube core connection And its block diagram of the local subset 504 of the second level (L2) cache.In one embodiment, instruction decoder 500 supports tool There is the x86 instruction set of packed data instruction set extension.L1 cache 506 allows in scalar sum vector location, right to entering The low latency of cache memory accesses.Although in one embodiment (in order to simplify design), 508 He of scalar units Vector location 510 uses separated set of registers (respectively scalar register 512 and vector registor 514), and at this The data transmitted between a little registers are written to memory, and then read back from the first order (L1) cache 506, but this Different methods can be used (for example, using single set of registers or including allowing data at this in the alternate embodiment of invention The communication path without being written into and reading back is transmitted between two register files).
The local subset 504 of L2 cache is a part of global L2 cache, and overall situation L2 cache is drawn It is divided into multiple separate local subset, one local subset of each processor core.Each processor core has the L2 to its own The direct access path of the local subset 504 of cache.Its L2 cache is stored in by the data that processor core is read In subset 504, and the local L2 cached subset that its own can be accessed with other processor cores is concurrently quickly visited It asks.By processor core be written data be stored in the L2 cached subset 504 of its own, and in the case of necessary from Other subsets flush.Loop network ensures the consistency of shared data.Loop network be it is two-way, to allow such as to handle The agency of device core, L2 cache and other logical blocks etc is communicate with each other within the chip.In some embodiments, each annular Data path is each 1024 bit wide of direction.
Fig. 5 B is the expanded view of a part of the processor core in Fig. 5 A of embodiment according to the present invention.Fig. 5 B includes L1 The L1 data high-speed of cache 504 caches the part 506A, and about the more of vector location 510 and vector registor 514 Details.Specifically, vector location 510 is 16 fat vector processing units (VPU) (see 16 wide ALU 528), the unit execute integer, One or more of single-precision floating point and double-precision floating point instruction.The VPU is supported defeated to register by mixed cell 520 The mixing entered supports numerical value conversion by numerical conversion unit 522A-B, and defeated to memory by the support of copied cells 524 The duplication entered.
Processor with integrated memory controller and graphics devices
Fig. 6 be embodiment according to the present invention have more than one core, can have integrated memory controller, with And there can be the block diagram of the processor 600 of integrated graphics device.Solid box diagram in Fig. 6 has single core 602A, system generation The processor 600 of reason 610, the set 616 of one or more bus control unit units, and the optional increase of dotted line frame diagram has The set 614 of one or more integrated memory controller units in multiple core 602A-N, system agent unit 610 and specially With the alternative processor 600 of logic 608.
Therefore, the different of processor 600 are realized can include: 1) CPU, wherein special logic 608 is integrated graphics and/or section It learns (handling capacity) logic (it may include one or more cores), and core 602A-N is one or more general purpose cores (for example, general Ordered nucleus, general out-of-order core, combination of the two);2) coprocessor, center 602A-N be intended to be mainly used for figure and/ Or a large amount of specific cores of scientific (handling capacity);And 3) coprocessor, center 602A-N are a large amount of general ordered nucleuses.Therefore, Processor 600 can be general processor, coprocessor or application specific processor, such as, network or communication processor, compression Engine, graphics processor, GPGPU (universal graphics processing unit), high-throughput integrated many-core (MIC) coprocessor (including 30 or more), embeded processor, etc..The processor can be implemented on one or more chips.Processor 600 can be a part of one or more substrates and/or usable kinds of processes technology (such as, BiCMOS, CMOS, Or NMOS) in any technology be implemented on one or more substrates.
Storage hierarchy includes one or more cache levels, one or more shared height in core 604A-N The set 606 of fast cache unit and the external memory of set 614 for being coupled to integrated memory controller unit (do not show Out).The set 606 of shared cache element may include the cache of one or more intermediate levels, such as, the second level (L2), the third level (L3), the cache of the fourth stage (L4) or other ranks, last level cache (LLC) and/or the above items Combination.Although interconnecting unit 612 in one embodiment, based on ring is by integrated graphics logic 608, shared cache list The set 606 and system agent unit 610/ (multiple) integrated memory controller unit 614 of member interconnect, but substitute and implement Any amount of well-known technique can be used to interconnect such unit in example.In one embodiment, in one or more caches Consistency is maintained between unit 606 and core 602A-N.
In some embodiments, one or more core 602A-N can be realized multithreading.System Agent 610 includes coordinating With operation those of core 602A-N component.System agent unit 610 may include that such as power control unit (PCU) and display are single Member.PCU, which can be, the power rating of core 602A-N and integrated graphics logic 608 is adjusted required logic and component, It or may include these logics and component.Display unit is used to drive the display of one or more external connections.
Core 602A-N can be isomorphic or heterogeneous in terms of architecture instruction set;That is, two in core 602A-N or more Multiple cores may be able to carry out identical instruction set, and other cores may be able to carry out the only subset or different of the instruction set Instruction set.
Exemplary computer architecture
Fig. 7-Figure 10 is the block diagram of exemplary computer architecture.It is as known in the art to laptop devices, desktop computer, hand Hold PC, personal digital assistant, engineering work station, server, the network equipment, network hub, interchanger, embeded processor, Digital signal processor (DSP), graphics device, video game device, set-top box, microcontroller, cellular phone, portable media The other systems of player, handheld device and various other electronic equipments design and configuration is also suitable.Generally, can It is typically all comprising processor as disclosed herein and/or other various systems for executing logic or electronic equipment Suitably.
Referring now to Figure 7, shown is the block diagram of system 700 according to an embodiment of the invention.System 700 can be with Including one or more processors 710,715, these processors are coupled to controller center 720.In one embodiment, it controls Device maincenter 720 include graphics memory controller hub (GMCH) 790 and input/output hub (IOH) 750 (its can point On the chip opened);GMCH 790 includes memory and graphics controller, and memory 740 and coprocessor 745 are coupled to the storage Device and graphics controller;Input/output (I/O) equipment 760 is coupled to GMCH 790 by IOH 750.Alternatively, memory and figure One in controller or the two are integrated in (as described in this article) processor, memory 740 and coprocessor 745 are directly coupled to processor 710, and controller center 720 and IOH 750 are in one single chip.
Additional processor 715 optionally indicates in Fig. 7 by a dotted line.Each processor 710,715 may include One or more of processing core described herein, and can be a certain version of processor 600.
Memory 740 can be such as dynamic random access memory (DRAM), phase transition storage (PCM) or the two Combination.For at least one embodiment, multiple-limb bus of the controller center 720 via such as front side bus (FSB) etc, point Point interface or similar connection 795 are communicated with (multiple) processor 710,715.
In one embodiment, coprocessor 745 is application specific processor, such as, high-throughput MIC processor, net Network or communication processor, compression engine, graphics processor, GPGPU, embeded processor, etc..In one embodiment, it controls Device maincenter 720 processed may include integrated graphics accelerator.
There may be include a series of qualities such as framework, micro-architecture, heat, power consumption characteristics between physical resource 710,715 Measure each species diversity of aspect.
In one embodiment, processor 710 executes the instruction for controlling the data processing operation of general type.It is embedded in this It can be coprocessor instruction in a little instructions.Processor 710 by these coprocessor instructions be identified as have should be by attaching Coprocessor 745 execute type.Therefore, processor 710 on coprocessor buses or other interconnects will be at these associations Reason device instruction (or the control signal for indicating coprocessor instruction) is published to coprocessor 745.(multiple) coprocessor 745 connects By and execute the received coprocessor instruction of institute.
Referring now to Fig. 8, shown is the first more specific exemplary system 800 of embodiment according to the present invention Block diagram.As shown in Figure 8, multicomputer system 800 is point-to-point interconnection system, and including via 850 coupling of point-to-point interconnection The first processor 870 and second processor 880 of conjunction.Each of processor 870 and 880 can be processor 600 A certain version.In one embodiment of the invention, processor 870 and 880 is processor 710 and 715 respectively, and coprocessor 838 be coprocessor 745.In another embodiment, processor 870 and 880 is processor 710 and coprocessor 745 respectively.
Processor 870 and 880 is shown as respectively including integrated memory controller (IMC) unit 872 and 882.Processor 870 further include point-to-point (P-P) interface 876 and 878 of a part as its bus control unit unit;Similarly, at second Managing device 880 includes P-P interface 886 and 888.Processor 870,880 can via use point-to-point (P-P) interface circuit 878, 888 P-P interface 850 exchanges information.As shown in Figure 8, IMC 872 and 882 couples the processor to corresponding memory, I.e. memory 832 and memory 834, these memories can be the part for being locally attached to the main memory of respective processor.
Processor 870,880 can be respectively via each P-P interface for using point-to-point interface circuit 876,894,886,898 852,854 information is exchanged with chipset 890.Chipset 890 can be optionally via high-performance interface 892 and coprocessor 838 exchange information.In one embodiment, coprocessor 838 is application specific processor, such as, high-throughput MIC processing Device, network or communication processor, compression engine, graphics processor, GPGPU, embeded processor, etc..
Shared cache (not shown) can be included in any processor, or outside but warp in the two processors Interconnected by P-P and connect with these processors so that if processor is placed in low-power mode, any one or the two handle The local cache information of device can be stored in shared cache.
Chipset 890 can be coupled to the first bus 816 via interface 896.In one embodiment, the first bus 816 It can be the bus of peripheral parts interconnected (PCI) bus or such as PCI high-speed bus or another I/O interconnection bus etc, still The scope of the present invention is not limited thereto.
As shown in Figure 8, various I/O equipment 814 can be coupled to the first bus 816, the bus together with bus bridge 818 First bus 816 is coupled to the second bus 820 by bridge 818.In one embodiment, such as at coprocessor, high-throughput MIC Manage device, GPGPU, accelerator (such as, graphics accelerator or Digital Signal Processing (DSP) unit), field programmable gate number One or more Attached Processors 815 of group or any other processor are coupled to the first bus 816.In one embodiment, Second bus 820 can be low pin count (LPC) bus.In one embodiment, various equipment can be coupled to the second bus 820, these equipment include such as keyboard and/or mouse 822, communication equipment 827 and storage unit 828, the storage unit 828 It such as may include the disk drive or other mass-memory units of instructions/code and data 830.In addition, audio I/O 824 The second bus 820 can be coupled to.Note that other frameworks are possible.For example, instead of the Peer to Peer Architecture of Fig. 8, system can To realize multiple-limb bus or other such frameworks.
Referring now to Figure 9, showing the frame of the second more specific exemplary system 900 of embodiment according to the present invention Figure.Similar component in Fig. 8 and 9 uses similar appended drawing reference, and be omitted from Fig. 9 some aspects of Fig. 8 to avoid Obscure other aspects of Fig. 9.
Fig. 9 illustrated process device 870,880 can respectively include integrated memory and I/O control logic (" CL ") 971 and 982. Therefore, CL 972,982 includes integrated memory controller unit, and including I/O control logic.Fig. 9 illustrates not only memory 832,834 are coupled to CL 972,982, and I/O equipment 914 is also coupled to control logic 972,982.Traditional I/O equipment 915 It is coupled to chipset 890.
Referring now to Figure 10, showing the block diagram of the SoC 1000 of embodiment according to the present invention.Similar in Fig. 6 is wanted Element uses similar appended drawing reference.In addition, dotted line frame is the optional feature on more advanced SoC.In Figure 10, (multiple) are mutual Even unit 1002 is coupled to: application processor 1010 comprising set, the high speed of the set 602A-N of one or more cores is slow Memory cell 604A-N and (multiple) shared cache element 606;System agent unit 610;(multiple) bus control unit list Member 616;(multiple) integrated memory controller unit 614;The set 1020 of one or more coprocessors, may include integrating Graphics logic, image processor, audio processor and video processor;Static random access memory (SRAM) unit 1030; Direct memory access (DMA) unit 1032;And the display unit 1040 for being coupled to one or more external displays. In one embodiment, (multiple) coprocessor 1020 includes application specific processor, such as, network or communication processor, pressure Contracting engine, GPGPU, high-throughput MIC processor or embeded processor, etc..
Each embodiment of mechanism disclosed herein can be implemented in the group of hardware, software, firmware or such implementation In conjunction.The computer program or program code that the embodiment of the present invention can be realized to execute on programmable systems, this is programmable System includes at least one processor, storage system (including volatile and non-volatile memory and or memory element), at least One input equipment and at least one output equipment.
Program code (code 830 such as, illustrated in Fig. 8) can be applied to input instruction, it is described herein to execute Function and generate output information.Output information can be applied to one or more output equipments in a known manner.For this The purpose of application, processing system include having any system of processor, the processor such as, digital signal processor (DSP), microcontroller, specific integrated circuit (ASIC) or microprocessor.
Program code can realize with the programming language of the programming language of advanced procedure-oriented or object-oriented, so as to It is communicated with processing system.If necessary, it is also possible to which assembler language or machine language realize program code.In fact, herein The mechanism of description is not limited to the range of any specific programming language.Under any circumstance, the language can be compiler language or Interpretative code.
The one or more aspects of at least one embodiment can be by representative instruciton stored on a machine readable medium It realizes, which indicates the various logic in processor, which makes machine manufacture for holding when read by machine The logic of row technology described herein.Such expression of referred to as " IP kernel " can be stored in tangible machine readable media On, and each client or production facility can be supplied to be loaded into the manufacture machine for actually manufacturing the logic or processor.
Such machine readable storage medium can include but is not limited to through machine or the product of device fabrication or formation Non-transient, tangible arrangement comprising storage medium, such as hard disk;The disk of any other type, including floppy disk, CD, compact-disc Read-only memory (CD-ROM), rewritable compact-disc (CD-RW) and magneto-optic disk;Semiconductor devices, such as, read-only memory (ROM), such as random access memory of dynamic random access memory (DRAM) and static random access memory (SRAM) (RAM), Erasable Programmable Read Only Memory EPROM (EPROM), flash memory, electrically erasable programmable read-only memory (EEPROM);Phase Transition storage (PCM);Magnetic or optical card;Or the medium of any other type suitable for storing e-command.
Therefore, the embodiment of the present invention further includes non-transient tangible machine-readable medium, which includes instruction or packet Containing design data, such as hardware description language (HDL), it define structure described herein, circuit, device, processor and/or System features.These embodiments are also referred to as program product.
It emulates (including binary translation, code morphing etc.)
In some cases, dictate converter can be used for instruct and convert from source instruction set to target instruction set.For example, referring to Enable converter can by instruction map (for example, using static binary conversion, including the dynamic binary translation of on-the-flier compiler), Deformation, emulation are otherwise converted into one or more other instructions to be handled by core.Dictate converter can be with soft Part, hardware, firmware, or combinations thereof realize.Dictate converter can on a processor, outside the processor or partially located On reason device and part is outside the processor.
Figure 11 is that the control of embodiment according to the present invention uses software instruction converter by the binary system in source instruction set Instruction is converted into the block diagram of the binary instruction of target instruction target word concentration.In the illustrated embodiment, dictate converter is software Dictate converter, but alternatively, which can be realized with software, firmware, hardware or its various combination.Figure 11 shows The first compiler 1104 can be used out to compile the program of 1102 form of high-level language, with generate can by have at least one first The first binary code (for example, x86) 1106 of the primary execution of processor 1116 of instruction set core.In some embodiments, have Having the processor 1116 of at least one the first instruction set core indicates by compatibly executing or otherwise executing the following terms To execute and have the function of the essentially identical any processor of at least one x86 instruction set core Intel processors: 1) Ying Te The essential part of the instruction set of your x86 instruction set core or 2) target are at the Intel at least one x86 instruction set core It is run on reason device to obtain the application of the result essentially identical with the Intel processors at least one x86 instruction set core Or the object code version of other software.First compiler 1104 indicates to can be used to generate the binary system in the first instruction set The compiler of code 1106 (for example, object code), the binary code can pass through or not have by additional link processing It is executed on the processor 1116 for having at least one the first instruction set core.Similarly, Figure 11 shows the instruction set that substitution can be used Compiler 1108 compiles the program of 1102 form of high-level language, with generate can by not having at least one first instruction set core Processor 1114 (for example, have execute California Sunnyvale city MIPS Technologies Inc. MIPS instruction set, And/or execute the processor of the core of the ARM instruction set of the ARM holding company of California Sunnyvale city) primary execution Substitution instruction set binary code 1110.Dictate converter 1112 is used to for the first binary code 1106 being converted into can be with By not having the code of the primary execution of processor 1114 of the first instruction set core.Code after the conversion is unlikely with substitution Instruction set binary code 1110 is identical, because the dictate converter that can be done so is difficult to manufacture;However, the code after conversion General operation will be completed, and will be made of the instruction from alternative command collection.Therefore, dictate converter 1112 passes through emulation, mould Quasi- or any other process indicates to allow the processor without the first instruction set processor or core or other electronic equipments hold The software of the first binary code of row 1106, firmware, hardware or combinations thereof.
Device and method for circulation flattening and reduction in single-instruction multiple-data stream (SIMD) waterline
It, can when no enough data elements can be used for making full use of the available SIMD width of the functional unit of processor It can need to predict or Scalar operation is to prevent error result, exception or the failure from the SIMD operation to unused element.When When only needing small number of data element, electric energy may be wasted to execute SIMD and calculate, and real from the institute that vector calculates Existing performance gain is low compared with Scalar operation.For example, needing in molecular dynamics algorithm to the adjacent of each atom Atom recycles to calculate the power of each atom.For some simulation models, the quantity of adjacent atom may be considerably less.It is utilizing In the case where average 24 adjacent atoms that only single accurate vector across interior circulation calculates, due to not used vector element Calculating, waste when using vector hardware in the presence of about 25%.
Nesting is recycled, prediction/Scalar operation alternative solution is using " circulation flattening ".In this case, one Unused element at the ending of a internal SIMD circulation can be used for calculating in the next internal SIMD circulation that will be calculated First element.Regrettably, it is not always direct for carrying out merging data element from multiple outer circulation iteration.In molecule power In the case where, for example, interior recycle may relate to the calculating of power, the power be single atom and the atom all adjacent atoms it Between distance function.It is flattened using circulation, SIMD calculating may relate to the distance between two atoms i and i+1 and two groups Adjacent atom list.Single broadcast for the x position of atom i may be only enough, place for the interior circulation of single atom Managing two atoms needs a plurality of instruction to arrange the element calculated for SIMD.Similarly, vector load and storage may relate to Two memory pointers rather than one, and the data element reduction in vector spreads and needs across the subset of multiple elements Multiple results.
In the case where being related to the lateral operation of operator of multiple elements using single SIMD vector, it is also possible to occur Insufficient use of vector hardware.As an example, tree reduction can be used to calculate the transverse direction for the element summation to vector Reduction, in tree reduction, each step of calculating uses less data element.However, it is often the case that multiple vectors need Reduction.By using tool, there are two two vector sources of result, and compared with calculating separately the two vector sources, full duration SIMD is calculated The quantity of art operation can halve.When the special logic for lateral reduction is unavailable, this can permit higher performance.
Present instruction collection framework (ISA) does not have to the multi-source reduction of any split point or the support of broadcast.Although The instruction of such as vbroadcastf32x2 can use multiple sources, but these instructions can not be controlled for recycling flattening Split point.In addition, to can be used for multi-source data element mobile for vinsertf32x8 instruction, but these instructions be it is limited, because Always to use 8 elements from second source vector.On the contrary, one embodiment of the present of invention to continuous element execute double address to Load/store operations are measured, which is highly useful for efficiently recycling flattening.
Specifically, the embodiment of the present invention includes improving SIMD when executing such as operation of circulation flattening and lateral reduction The instruction of the efficiency of hardware.In one embodiment, instruction has multiple sources and/or split point to reduce data movement, merge With the instruction count of reduction.They also allow reduced waiting time and the improved use to core assembly line, to realize instruction Grade concurrency and multithreading while to long latency operation.
It can be reduced using the instruction of multiple sources for SIMD operation and/or split point and utilize circulation flattening and/or cross Instruction count needed for efficient SIMD to operation.For example, this can dive when two vectors need the reduction across multiple elements It is realized on ground with than individually carrying out less SIMD operation needed for reduction twice.Similarly, outer circulation is come from by merging The required data elements of different iteration usually improve the load to two sources, storage and broadcast operation.
As example and unrestricted, the common situations for the nesting circulation that there are variable interior roundtrips to count for consideration, example Such as:
Being realized using existing SIMD can be operated to execute the example of the vector code of interior circulation according to following code:
In code above, because nj will be not necessarily the multiple of SIMD vector widths, some way is needed Masking SIMD operation is to prevent the method from the error result in not used vector element (or channel), failure or exception.? In the example, using vector mask k1, vector mask k1 guarantees that SIMD operation is safe and correct.Which introduce vectorizations Poor efficiency and electric energy efficiency may be wasted because accelerating to be limited.
For the example, for SIMD width 8, the poor efficiency in last time vector iteration is shown in Figure 12, Wherein not used data element is marked by X.In addition, increasing with nj reduction or with SIMD vector widths, which will Tend to increase.When the similar problems due to not used channel cause the variance of nj to be high, the vectorization of outer circulation be can lead to More serious poor efficiency, the not used channel the problem of in, the poor efficiency of remainder is no longer fettered by 1/SIMD_WIDTH.
Circulation flattening technology provides the alternative solution that can improve efficiency, and in this alternative, the channel being wasted is only Occur in the ending of nesting circulation primary.In this case, single SIMD calculates loop iteration in the last time that can be used for i With loop iteration in the first time of i+1.This is illustrated in Figure 13, and the split point in register v1 and v2 is shown respectively in Figure 13 1301 and 1302.Specifically, in v1, value a [i+1] is stored in the data element on 1301 right side of split point, and value a [i] It is retained in left side.Similarly, the value from array b [i+1] is stored in the data element on 1302 right side of split point, and value b [i] [nj [i] -2] and b [i] [nj [i] -1] are retained in left side.In view of being directed to last time and the first time of i and i+1 respectively This two class value of interior loop iteration, the arrangement of this data, which is provided, realizes significant performance improvement compared to existing.
Potential improvement to amount efficiency is limited by existing instruction.In this way, the embodiment of the present invention includes that can manage The extra-instruction of the element of different iteration from outer circulation.These embodiments include: that (1) is used to hold using specified split point Row two values (are in this example the individual instructions of the broadcast of a [i] and a [i]+1);(2) for utilizing specified split point will It (is in this example b [i] and b [i that continuous element, which move/is loaded into single SIMD vector from two different storage address, + 1] individual instructions);(3) refer to for executing individual reduction or storing successive value to the single in two memory locations It enables.
Figure 14 illustrates the example processor 1455 that can realize the embodiment of the present invention on it.
Example processor includes multiple core 0-N for being performed simultaneously multiple threads.Shown embodiment includes: decoder SIMD broadcast in 1430, mobile and reduction (BMR) decoding circuit/logic 1431, for being decoded to instructions described herein; And SIMD BMR execution circuit/logic 1441 in execution unit 1440, for executing instructions described herein.In response to Execute these instructions, Memory Controller 1490 can be realized by the memory sub-system of access process device bottom load/ Storage operation, the memory sub-system include system storage 1400, between core share third level cache 1416, And/or other cache levels (such as such as, L2 cache 1411).Although illustrating only single core (core in Figure 14 0) details, it will be understood that each of other cores of processor 1455 may include similar component.
Before the detail of description the embodiment of the present invention, various other groups to example processor 1455 are provided The description of part.Multiple core 0-N can respectively include the storage for executing storage operation (such as such as, load/store operations) Device controller 1490, the set 1405 of general register (GPR), the set of the set of vector registor 1406 and mask register 1407.In one embodiment, multiple vector data elements are tightened in each vector registor 1406, each vector register Device 1406 can have 512 bit widths, for storing two 256 values, four 128 values, eight 64 values, 16 32 values etc..However, basic principle of the invention is not limited to the vector data of any specific dimensions/type.Implement at one In example, mask register 1407 includes for eight 64 to the value execution position masked operation being stored in vector registor 1406 Positional operand mask register (for example, being embodied as mask register k0-k7 described herein).However, base of the invention Present principles are not limited to any specific mask register sizes/types.
Each core 0-N may include slow for carrying out high speed to instruction and data according to specified cache management strategy The dedicated first order (L1) cache 1412 and the second level (L2) cache 1411 deposited.In alternative embodiments, each L2 cache is shared between two or more cores.L1 cache 1412 includes separated instruction for storing instruction Cache 1420 and separated data high-speed caching 1421 for storing data.Storage is throughout managed in device cache Instruction and data is can be the grain of the cache line of fixed dimension (for example, length be 64 bytes, 128 bytes, 512 bytes) Degree is managed.Each core of the exemplary embodiment have for from main memory 1400 and/or the shared third level (L3) high speed Caching 1416 takes out the instruction retrieval unit 1410 of instruction.Instruction retrieval unit 1410 includes various well known components, comprising: is used Next instruction pointer in the address for the next instruction that storage will take out from memory 1400 (or one in cache) 1403;For store most recently used virtually arrive the mapping of Physical instruction address with improve the instruction of address conversion speed conversion after Standby buffer (ITLB) 1404;For speculatively predicting the inch prediction unit 1402 of instruction branches address;And for storing The branch target buffer (BTB) 1401 of branch address and destination address.
As mentioned, decoding unit 1430 includes for being microoperation or " uop " by instruction decoding described herein SIMD BMR instruction demoding circuit/logic 1431, and execution unit 1440 include for execute uop SIMD BMR instruct Execution circuit/logic 1441.Write back/retirement unit 1450 retires from office the instruction that has executed and write-back result.
Turning now to exemplary embodiment, SIMD BMR instruction can use two sources and/or split point to allow in list Necessary SIMD operation is executed in item instruction.For convenience, the code sample being described above is repeated herein:
In one embodiment of the invention, the difference of nj [i] and j are not based on to calculate mask, but determination can be used In executing tool, there are two the split points (s=nj [i]-j) of the SIMD operation in source.New broadcasting instructions are referred to herein as VPBROADCAST2, new movement/load instruction is referred to as VPMOV2S, and new reduction instruction is referred to as VPREDUCE2. These instructions can be used together with circulation flattening as follows:
V1=VPBROADCAST2 (a [i], a [i+1], s)
V2=VPMOV2S (b [i]+j, b [i+1], s)
Ans [i], ans [i+1]=VPREDUCE2 (v4, s, ENUM_SUM);
It is flattened using the circulation of these instructions it is possible that two kinds of complexity.The first complexity is nj < SIMD_ The case where WIDTH -1, in this case, the iteration twice of outer circulation, may be not enough to utilize all vector elements.If compiling This possibility is not known when translating, then can calculate mask with the SIMD operation (ginseng for the safety for ensuring that there is not used channel There is the pseudocode of masking) in seeing below.For the last time iteration of outer circulation, wherein i+1 should not be in SIMD operation It is used, another potential complexity can occur.In one embodiment, using the independent instruction for last time iteration Easily to handle this complexity.
The SIMD that the reduction for not being related to split point can be improved using similar optimization (using two sources) is calculated Efficiency.Figure 15 illustrates the exemplary tree reduction of SIMD vector e0-e7, and wherein X indicates to patrol when using conventional SIMD addition Not used channel when collecting.
It is often the case that needing multiple reduction (for example, for x and y-component).In such a case it is possible to use there are two tools The SIMD arithmetical operation of the identical quantity in source executes reduction.This is illustrated in Figure 16, and Figure 16 shows use The reduction to source e0-e7 and f0-f7 of VPREDUCE2S reduction instruction operates.
One embodiment of double source broadcasting instructions is operated according to following code:
Therefore, VBROADCAST2 instruction will be used for SIMD vector based on the position of (being indicated by division variable) division (v1) the element in data channel is set as src1 or src2.Depending on the realization, mask (k1) and write-in can also be specified Source SIMD vector (v2), in this case, when be provided with corresponding mask element when, by destination data channel be set as source to Value in amount.Alternatively, destination data channel can be protected in the case where write-in source is destination or no specified write-in source It holds constant.In some implementations, it is also possible to which split values are limited to 2 power or the subset of certain other values by expectation.
In one embodiment, double source broadcasting instructions by src1 and src2 element assignment for single register or memory Continuous element in location.In addition, instruction can to numerous types of data and bit wide (with or without mask, single mask and/ Or source vector or zero implicit source or two masks and two write-in source vectors are written) operated.Of the invention is substantially former Reason is not limited to use in any specific variables set of broadcasting instructions.
The one embodiment for the method realized in response to broadcasting instructions is illustrated in Figure 17.This method can be in above-mentioned frame It is executed on structure, but is not limited to any specific processor architecture.
At 1701, broadcasting instructions are taken out, which, which has, is used for operation code, at least two source operands and division Variable/operand field.Split values can be (for example, in immediate) variable transmitted together with broadcasting instructions and/or It can be searched from source register.At 1702, broadcasting instructions are decoded to generate decoded broadcasting instructions.In the reality of microcoding In existing, for example, decoder generates the multiple microoperations (uop) that will be executed by the functional unit in execution unit.
At 1703, (for example, from memory, cache etc.) searches data associated with source operand, and should Data are stored in source register, and dispatch the operation generated by decoded broadcasting instructions so as to the function in execution unit It can be executed on unit.
At 1704, operation is executed, to search the of data element from the first source register according to division variable/operand One subset and the second subset that data element is searched from the second source register.As set forth above, it is possible to from the immediate of broadcasting instructions Split values are read, or can be stored in split values as value in another source register.
At 1705, in response to continuing to execute for operation, by the second son of the first subset of data element and data element Collection is stored in the first position and the second position of destination vector registor.For example, the first subset may include being stored in 2 data elements in higher 2 data element positions in the vector registor of destination, and second subset may include 6 data elements being stored in lower 6 data element positions in the vector registor of destination.In this example, Split values identify the division position between 2 higher data element positions and 6 lower data element positions.Final result It is the vector registor of v1 shown in such as Figure 13 etc.
One embodiment of movement/load (hereinafter referred to " movement ") instruction is operated according to following code:
In code above, based on division, data element is arranged in the data channel for SIMD vector (v1) For the value in the corresponding data channel for source SIMD vector v 3 and v4.It is alternatively possible to specified mask (k1) and write-in source SIMD vector (v2) when being provided with corresponding mask, sets source vector (v2) for destination data channel in this case In value.For example, the value from v2 can be used in the place value 1 in mask, and place value 0 can be used the value from v3/v4 and (depend on In division).In the case where write-in source is destination or no specified write-in source, destination data channel can be constant 's.Data channel in SIMD vector can store in register or memory.In some implementations, split values are restricted to 2 power or some other subset and/or it may require storage address and certain amount of byte-aligned.With broadcasting instructions one Sample, split values can be included in the immediate of instruction or are included in another source register.
VPMOV2S instruction can to numerous types of data and bit wide (with or without mask, have single mask and/ Or source vector or zero implicit source or two masks and two write-in source vectors are written) operated.Of the invention is substantially former Reason is not limited to use in any specific variables set of instruction.For the source vector as storage address, can support around number According to the non-timeliness variant of cache.
The one embodiment for the method realized in response to move is illustrated in Figure 18.This method can be in above-mentioned frame It is executed on structure, but is not limited to any specific processor architecture.
At 1801, move is taken out, which has for operation code, at least two source operands, division The field of value and (optional) mask value.Split values and/or mask value can be transmitted together with move (for example, vertical In counting) it variable and/or can be searched from source register.At 1802, move is decoded to generate decoded shifting Dynamic instruction.In the realization of microcoding, for example, decoder generates the multiple micro- behaviour that will be executed by the functional unit in execution unit Make (uop).
At 1803, (for example, from memory, cache etc.) searches data associated with source operand, and should Data are stored in source register, and dispatch the operation generated by decoded move, so as in execution unit It is executed on functional unit.
At 1804, operation is executed, to deposit according to division variable/operand and mask value (if use) from the first source Device searches the first subset of data element and searches the second subset of data element from the second source register.As set forth above, it is possible to Split values are read from the immediate of move, or can be stored in split values as value in another source register.? Using in the realization of mask value, individual masked bits can specify whether to read corresponding number from first/second source register According to element (for example, mask value 0) or whether from third source register read corresponding data element (that is, utilizing mask value 1). For example, if element is masked, from v2 rather than replicating corresponding data element system from v3 or v4 in code above. In the alternate embodiment using zero masking, it is inserted into zero for masked element, rather than is inserted into from third source register Data element.
At 1805, in response to continuing to execute for operation, by the second son of the first subset of data element and data element Collection is collectively stored in destination vector with the data element (being zero if having used zero masking) from third source register and posts In the first position and the second position of storage.For example, the first subset may include in destination vector registor to be stored in 2 data elements in higher 2 data element positions, and second subset may include that destination vector to be stored in is posted 6 data elements in lower 6 data element positions in storage.Using masking, the value from v2 or zero can be used Rather than one or more of 8 data elements searched from the first source register and the second source register.
Another embodiment of move is operated according to following code:
In this embodiment, according to split values, element is set using the value in the corresponding data channel of source SIMD vector v 1 It sets in the data channel for destination SIMD vector (v3, v4).Specifically, using lower (that is, lower than dividing from v1 Splitting value) data element usually tightens lower data element position in v3.Once reach split values, then utilize from v1 compared with High (that is, being equal to or higher than split values) data element usually tightens the lower data element position in v4 (that is, v4 [1- Split]) tighten.
It is alternatively possible to specified mask value (k1), in this case, if being provided with corresponding mask value, destination Channel remains unchanged, or, it is possible to specify write-in source SIMD vector, in this case, when being provided with corresponding mask, by mesh Ground data channel be set as the value in source vector.Data channel in SIMD vector can store in register or memory In.In one embodiment, split values be restricted to 2 power or some other subset and/or require storage address with it is specific The byte-aligned of quantity.
VPMOV2D instruction can to numerous types of data and bit wide (with or without mask, have single mask and/ Or source vector or zero implicit source or two masks and two write-in source vectors are written) operated.Of the invention is substantially former Reason is not limited to use in any specific variables set of instruction.For the source vector as storage address, can support around number According to the non-timeliness variant of cache.
One embodiment of reduction instruction is operated according to following code:
In this embodiment, being based on split values by reduction for the value in the data channel of source SIMD vector (v1) is two Value.As in previous embodiments, split values can be specified in immediate or another source register.Show shown in In example, reduction operations symbol is adding operator (+), which adds the element of v1 or v2 to form ans1, wherein V1 or v2 are selected in each iteration based on associated masked bits.Once reaching split values, then associated cover is again based on Code bit, by the way that ans2 is usually similarly determined plus the member from v1 or v2.The use of masked bits is optional, and not is Meet necessary to basic principle of the invention.In addition, in one embodiment, zero can be used for masked value without It is to be read from v2.In one embodiment, division can be restricted to 2 power or some other subset.
The other embodiments of reduction instruction can also support different reduction operations accord with (for example,-, *, MAX, MIN), difference SIMD vector widths, different data types/element bit wide or two masks and two write-in source vectors.
The one embodiment for the method realized in response to reduction instruction is illustrated in Figure 19.This method can be in above-mentioned frame It is executed on structure, but is not limited to any specific processor architecture.
At 1901, reduction instruction is taken out, reduction instruction has for operation code, the first source operand, the second source behaviour It counts, divide the field of variable/operand and (optional) mask value.Split values and/or mask value can be to be instructed with reduction It (for example, in immediate) variable that transmits together and/or can be searched from another source register.At 1902, to reduction Instruction decoding is to generate decoded reduction instruction.In the realization of microcoding, for example, decoder generation will be by execution unit Functional unit execute multiple microoperations (uop).
At 1903, (for example, from memory, cache etc.) is searched and the first source operand and the second source operand phase Associated data, and the data are stored in the first source register and the second source register respectively, and dispatches by decoded Reduction instruction generate operation, to be executed on the functional unit in execution unit.
At 1904, operation is executed, to combine first group of data element from the first source register to generate the first knot Fruit, and second group of data element from the first source register is combined to generate the second result.In one embodiment, according to point It splits value and selects first group of data element and second group of data element.For example, first group of data element can be the first source register Lower data element, second group of data element can be the higher data element in the first source register (by split values Subdivision).In one embodiment, it is based on mask value, zero or more number on the corresponding position from the second source register The data element from the first source register is replaced according to element.For example, if the masked bits for corresponding to data element are arranged to 0, then masking is not used, and reads corresponding data element from the first source register, and if masked bits are 1, it reads and The first result and/or the second result are generated from the corresponding data element of the second source register, and using the data element.
At 1905, in response to continuing to execute for operation, the first result and the second result are stored in one or more mesh Ground register in.For example, the first result and the second result, which can be used as packed data element, is stored in the deposit of the first destination In device, or it can store in the first destination register and the second destination register.
According to following code, another embodiment of reduction instruction is based on two mask value reduction and deposits from additional source The value of device:
In code above, each source SIMD vector v 1 and v2 respectively by reduction be corresponding single value ans1 and ans2.In this particular example, reduction operations symbol is to the addition (+) from v1 and the data element of v2.Optionally, it specifies and covers Code k1 and k2, mask k1 and k2 indicate whether will respectively from mask source register v3 and v4 read specific data element without It is to read particular data element from the corresponding data element in source register v1 and v2 respectively.For example, in one embodiment, covering The instruction of code value 0 will be from v1 or v2 read data elements, and the instruction of mask value 1 will read data element from v3 or V4 using masking Element.In one embodiment, use zero masking rather than from the value of v3 and v4 (that is, write-in complete zero is to replace from v1 and v2 Data element).
Reduction instruction other embodiments can also support different reduction operations accord with (for example,+,-, *, MAX, MIN), no Same SIMD vector widths, different data types/element bit wide or two masks and two write-in source vectors.
In specification above-mentioned, implementation of the invention is described by reference to certain exemplary embodiments of the invention Example.However, it will be apparent that, can to these embodiments, various modifications and changes may be made, without departing from such as appended right It is required that the wider range of spirit and scope of the invention.Therefore, the description and the appended drawings should be considered as illustrative rather than limit Property meaning processed.
The embodiment of the present invention may include the above each step being described.It can be used for making general or specialized processor It executes and embodies these steps in the machine-executable instruction of these steps.It alternatively, can be by comprising for executing these steps Firmware hardwired logic specialized hardware components, or can by any combination of programmed computer module and custom hardware components Lai Execute these steps.
As described in this article, instruction can refer to that the specific configuration of hardware such as is configured for executing certain operations Or the specific integrated circuit (ASIC) with predetermined function, or be stored in and be embodied in non-transitory computer-readable medium In memory in software instruction.Therefore, it is possible to use being stored in one or more electronic equipments (for example, terminal station, network Element etc.) on and the code that is executed on the one or more electronic equipment and data realize technology shown in figure.It is such Electronic equipment is using such as non-transient computer machine readable storage medium (for example, disk;CD;Random access memory;Only Read memory;Flash memory device;Phase transition storage) and transient computer machine readable communication medium (for example, electricity, light, sound or other The transmitting signal of form --- carrier wave, infrared signal, digital signal etc.) etc computer machine readable medium come it is (interior Portion and/or carried out by network and other electronic equipments) storage and transmitting code and data.In addition, this class of electronic devices allusion quotation It include type the set for being coupled to the one or more processors of one or more other assemblies, the one or more other assemblies Such as one or more storages equipment (non-transient machine readable storage medium), user's input-output apparatus are (for example, keyboard, touching Touch screen and/or display) and network connection.The coupling of the set and other assemblies of the processor typically by one or Multiple buses and bridge (also referred to as bus control unit).Storage equipment and the signal for carrying network traffic respectively indicate one or more Machine readable storage medium and machine readable communication medium.Therefore, the storage equipment for giving electronic equipment, which typically stores, to be used for The code and/or data of execution is closed in the collection of the one or more processors of the electronic equipment.Certainly, the embodiment of the present invention One or more parts the various combination of software, firmware and/or hardware can be used to realize.Through this specific embodiment, For illustrative purposes, elaborate numerous details in order to provide thorough understanding of the present invention.However, will be to this field It is readily apparent that the present invention can be implemented in the case where some details in these no details for technical staff. In some instances, and structure and function well known to not exhaustive description, in order to avoid keeping subject of the present invention fuzzy.Therefore, of the invention Scope and spirit should be determined according to the appended claims.

Claims (25)

1. a kind of processor, comprising:
Decoder, for decoding broadcasting instructions to generate the decoded broadcasting instructions for identifying multiple operations, the broadcast refers to Enable includes operation code, the first source operand, the second source operand and at least one vector element size, the broadcasting instructions tool There are split values associated with the broadcasting instructions;
First source register, it is associated with first source operand, for storing more than first a packed data elements;
Second source register, it is associated with second source operand, for storing more than second a packed data elements;
Execution circuit, for executing the multiple operation of the decoded broadcasting instructions, the execution circuit is used for the The continuous data element of one quantity is copied to from first source register and is posted by the vector element size designated destination First group of continuous data element position in storage, the execution circuit are further used for the continuous data element of the second quantity Second group of continuous data element position in the destination register is copied to from second source register,
Wherein the execution circuit is used to determine first quantity according to the split values associated with the broadcasting instructions With second quantity.
2. processor as described in claim 1, wherein the split values will be included in the immediate of the broadcasting instructions In.
3. processor as described in claim 1, wherein the split values will be included as the operand of the broadcasting instructions And it is stored in third source register.
4. processor as claimed in claim 1,2 or 3, wherein the split values include the integer value for arriving N-1 range with 0, Wherein N includes the data in each of a packed data element more than described first and more than second a packed data element The quantity of element.
5. processor as described in claim 1 or 4, wherein the execution circuit identified using the split values stopping from First group of data element reads and starts to read present position from second group of data element.
6. processor as claimed in claim 1 or 5, wherein the broadcasting instructions are described to execute electricity for identifying mask field Road using the mask field for being determined whether to mask value rather than by first group of continuous data element and institute One of second group of continuous data element is stated to be written in the destination register.
7. processor as claimed in claim 6, wherein the mask field will be included in the immediate of the broadcasting instructions In, or be stored in third source register.
8. processor as claimed in claim 6, wherein the mask value includes complete in mask source register comprising being stored in Zero or tighten mask value packed data element.
9. a kind of method, comprising:
Broadcasting instructions are decoded to generate the decoded broadcasting instructions for identifying multiple operations, the broadcasting instructions include operation Code, the first source operand, the second source operand and at least one vector element size, the broadcasting instructions have with it is described wide Broadcast the associated split values of instruction;
More than first a packed data elements are stored in the first source register associated with first source operand;
More than second a packed data elements are stored in the second source register associated with second source operand;
The multiple operation of the decoded broadcasting instructions is executed, including executes following operation:
The continuous data element of first quantity copied to from first source register and is specified by the vector element size First group of continuous data element position in destination register, and
The continuous data element of second quantity is copied to from second source register to second in the destination register Group continuous data element position,
Wherein first quantity and second quantity are true according to the split values associated with the broadcasting instructions Fixed.
10. method as claimed in claim 9, wherein the split values will be included in the immediate of the broadcasting instructions.
11. method as claimed in claim 9, wherein the split values will be included as the operand of the broadcasting instructions And it is stored in third source register.
12. the method as described in claim 9,10 or 11, wherein the split values include the integer for arriving N-1 range with 0 Value, wherein N includes in each of a packed data element more than described first and more than second a packed data element The quantity of data element.
13. the method as described in claim 9 or 12, wherein the split values stop for identifying from first group of data Element reads and starts to read be located at position from second group of data element.
14. the method as described in claim 9 or 13, wherein the broadcasting instructions are for identifying mask field, the mask word Section is used to determine whether mask value rather than by first group of continuous data element and second group of continuous data The data element position in the destination register is written in one of element.
15. method as claimed in claim 14, wherein the mask field will be included in the immediate of the broadcasting instructions In, or be stored in third source register.
16. method as claimed in claim 14, wherein the mask value includes complete in mask source register comprising being stored in Zero or tighten mask value packed data element.
17. a kind of machine readable media, has the program code being stored thereon, said program code makes when being executed by machine It obtains the machine and executes the operation included the following steps:
Broadcasting instructions are decoded to generate the decoded broadcasting instructions for identifying multiple operations, the broadcasting instructions include operation Code, the first source operand, the second source operand and at least one vector element size, the broadcasting instructions have with it is described wide Broadcast the associated split values of instruction;
More than first a packed data elements are stored in the first source register associated with first source operand;
More than second a packed data elements are stored in the second source register associated with second source operand;
Execute the multiple operation of the decoded broadcasting instructions, the execution step the following steps are included:
The continuous data element of first quantity copied to from first source register and is specified by the vector element size First group of continuous data element position in destination register, and
The continuous data element of second quantity is copied to from second source register to second in the destination register Group continuous data element position,
Wherein first quantity and second quantity are true according to the split values associated with the broadcasting instructions Fixed.
18. machine readable media as claimed in claim 17, wherein the split values will be included in the broadcasting instructions In immediate.
19. machine readable media as claimed in claim 17, wherein the split values will be included as the broadcasting instructions Operand and be stored in third source register.
20. the machine readable media as described in claim 17,18 or 19, wherein the split values include having 0 to arrive N-1 model The integer value enclosed, wherein N includes every in a packed data element more than described first and more than second a packed data element The quantity of data element in one.
21. the machine readable media as described in claim 17 or 20, wherein the split values stop for identifying from described the One group of data element reads and starts to read present position from second group of data element.
22. the machine readable media as described in claim 17 or 21, wherein the broadcasting instructions are used to identify mask field, The mask field is used to determine whether mask value rather than by first group of continuous data element and second group described Data element position in one of continuous data element write-in destination register.
23. machine readable media as claimed in claim 22, wherein the mask field will be included in the broadcasting instructions Immediate in, or be stored in third source register.
24. machine readable media as claimed in claim 22, wherein the mask value includes comprising being stored in mask source deposit The packed data element of complete zero or the mask value tightened in device.
25. a kind of processor, comprising:
Decoder, for decoding move to generate the decoded move for identifying multiple operations, the movement refers to Enabling includes operation code, the first source operand and the second source operand, and the move has associated with the move Split values and mask value;
First source register, it is associated with first source operand, for storing more than first a packed data elements;
Second source register, it is associated with second source operand, for storing more than second a packed data elements;
Execution circuit, for executing the operation of the decoded move, the execution circuit is used for the first number The continuous data element of amount copies to first group of continuous data element position in destination register from first source register It sets, the execution circuit is further used for copying to the continuous data element of the second quantity from second source register described Second group of continuous data element position in destination register, the execution circuit are used for corresponding one according to mask value Or the mask value is alternatively copied to the continuous data element in the destination register by the value of multiple masked bits One or more of element;And
Wherein the execution circuit is used to determine first quantity according to the split values associated with the move With second quantity.
CN201811441578.5A 2017-12-29 2018-11-29 Device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line Pending CN109992308A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/859,046 US10409601B2 (en) 2017-12-29 2017-12-29 Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
US15/859,046 2017-12-29

Publications (1)

Publication Number Publication Date
CN109992308A true CN109992308A (en) 2019-07-09

Family

ID=66816944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811441578.5A Pending CN109992308A (en) 2017-12-29 2018-11-29 Device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line

Country Status (3)

Country Link
US (3) US10409601B2 (en)
CN (1) CN109992308A (en)
DE (1) DE102018132521A1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181496A (en) * 2020-09-30 2021-01-05 中国电力科学研究院有限公司 AI extended instruction execution method and device based on open source instruction set processor, storage medium and electronic equipment
CN112416256A (en) * 2020-12-01 2021-02-26 海光信息技术股份有限公司 Data writing method and device and data reading method and device
CN112559037A (en) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 Instruction execution method, unit, device and system
CN114116229A (en) * 2021-12-01 2022-03-01 北京奕斯伟计算技术有限公司 Method and apparatus for adjusting instruction pipeline, memory and storage medium
CN114365110A (en) * 2019-09-10 2022-04-15 国际商业机器公司 Reusing neighboring SIMD units for fast wide result generation
CN114830082A (en) * 2019-11-15 2022-07-29 苹果公司 SIMD operand arrangement selected from multiple registers
CN118747085A (en) * 2024-07-17 2024-10-08 海光云芯集成电路设计(上海)有限公司 Register allocation method, processor, chip and electronic device

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
GB2574817B (en) * 2018-06-18 2021-01-06 Advanced Risc Mach Ltd Data processing systems
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
CN110515656B (en) * 2019-08-28 2021-07-16 中国人民解放军国防科技大学 A kind of execution method of CASP instruction, microprocessor and computer equipment
US20240004662A1 (en) * 2022-07-02 2024-01-04 Intel Corporation Instructions and support for horizontal reductions

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4729095A (en) * 1986-05-19 1988-03-01 Ncube Corporation Broadcast instruction for use in a high performance computer system
US6614789B1 (en) * 1999-12-29 2003-09-02 Nasser Yazdani Method of and apparatus for matching strings of different lengths
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
KR102181640B1 (en) * 2016-05-17 2020-11-23 아브 이니티오 테크놀로지 엘엘시 Distributed reconfigurable processing
EP3336691B1 (en) * 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
US10248527B1 (en) * 2018-09-19 2019-04-02 Amplero, Inc Automated device-specific dynamic operation modifications

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114365110A (en) * 2019-09-10 2022-04-15 国际商业机器公司 Reusing neighboring SIMD units for fast wide result generation
CN112559037A (en) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 Instruction execution method, unit, device and system
CN112559037B (en) * 2019-09-25 2024-04-12 阿里巴巴集团控股有限公司 Instruction execution method, unit, device and system
CN114830082B (en) * 2019-11-15 2023-06-06 苹果公司 SIMD operand arrangement selected from a plurality of registers
US12008377B2 (en) 2019-11-15 2024-06-11 Apple Inc. SIMD operand permutation with selection from among multiple registers
CN114830082A (en) * 2019-11-15 2022-07-29 苹果公司 SIMD operand arrangement selected from multiple registers
US11645084B2 (en) 2019-11-15 2023-05-09 Apple Inc. SIMD operand permutation with selection from among multiple registers
CN112181496A (en) * 2020-09-30 2021-01-05 中国电力科学研究院有限公司 AI extended instruction execution method and device based on open source instruction set processor, storage medium and electronic equipment
CN112416256B (en) * 2020-12-01 2023-03-28 海光信息技术股份有限公司 Data writing method and device and data reading method and device
CN112416256A (en) * 2020-12-01 2021-02-26 海光信息技术股份有限公司 Data writing method and device and data reading method and device
CN114116229A (en) * 2021-12-01 2022-03-01 北京奕斯伟计算技术有限公司 Method and apparatus for adjusting instruction pipeline, memory and storage medium
CN118747085A (en) * 2024-07-17 2024-10-08 海光云芯集成电路设计(上海)有限公司 Register allocation method, processor, chip and electronic device
CN118747085B (en) * 2024-07-17 2025-05-27 海光云芯集成电路设计(上海)有限公司 Register allocation method, processor, chip and electronic device

Also Published As

Publication number Publication date
US20200065100A1 (en) 2020-02-27
US12079628B2 (en) 2024-09-03
US10409601B2 (en) 2019-09-10
DE102018132521A1 (en) 2019-07-04
US20220100509A1 (en) 2022-03-31
US11138008B2 (en) 2021-10-05
US20190205138A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
CN109992308A (en) Device and method for circulation flattening and reduction in single-instruction multiple-data (SIMD) assembly line
CN109992240A (en) Method and apparatus for adding to carry and store vector instruction more
CN104049943B (en) limited range vector memory access instruction, processor, method and system
CN104049953B (en) The device without mask element, method, system and product for union operation mask
CN106293640B (en) Hardware processor, method and the hardware device of Heterogeneous Computing for close-coupled
CN109213522A (en) Remote Atomic Operation Instructions
CN109791488A (en) System and method for executing fused multiply-add instruction for complex numbers
CN110069282A (en) For tightening the vector multiplication and cumulative device and method of word
CN109791487A (en) Processor, method, system and instruction for the destination storage location being loaded into multiple data elements in addition to packed data register
CN110321160A (en) Device and method for predictive moving operation of having ready conditions
CN109840068A (en) Apparatus and method for complex multiplication
CN109478139A (en) Apparatus, method and system for access synchronization in shared memory
CN106445469B (en) Processor, machine readable storage medium and computer implemented system
CN109582356A (en) For the multiplying of packed data element, plus/minus and cumulative device and method
CN107908427A (en) The instruction calculated for the element offset amount in Multidimensional numerical
CN110457067A (en) Utilize the system of elastic floating number, method and apparatus
CN108415882A (en) Utilize the vector multiplication of operand basic system conversion and reconvert
CN109992559A (en) Remote atomic operation in more socket systems
CN109313549A (en) Apparatus, method and system for element ordering of vectors
CN109840066A (en) Device and method for floating point values to be converted to single precision from half precision
CN109643234A (en) For merging data element and generate processor, method, system and the instruction of index upgrade
CN109582365A (en) There is symbol and without the device and method of sign multiplication for executing the double of packed data element
CN107220029A (en) The apparatus and method of mask displacement instruction
CN110069283A (en) For being packaged the vector multiplication and cumulative device and method of byte
CN108268244A (en) For the recursive systems, devices and methods of arithmetic

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination