IP Library Granted Patent US 10,896,043
Granted Patent B2
US 10,896,043 · App. 16/146,854 · Granted Jan 19, 2021

Systems for performing instructions for fast element unpacking into 2-dimensional registers

Inventors: Bret Toll (Hillsboro, OR); Alexander F. Heinecke (San Jose, CA); Christopher J. Hughes (Santa Clara, CA); Ronen Zohar (Sunnyvale, CA); Michael Espig (Newberg, OR); Dan Baum (Haifa, IL); Raanan Sade (Kibutz Sarid, IL); Robert Valentine (Kiryat Tivon, IL); Mark J. Charney (Lexington, MA); Elmoustapha Ould-Ahmed-Vall (Chandler, AZ)
Assignee: Intel Corporation
G06F9/3016G06F9/30032G06F9/30036G06F9/30043G06F9/3814G06F12/0207G06F12/0607G06T1/20G06F9/30014G06F9/3455G06F9/3861G06F12/0875G06F12/0897G06F2212/1016G06F2212/401G06F2212/455
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,896,043
App. No.
16/146,854
Granted
Jan 19, 2021
Kind
B2
Abstract

Disclosed embodiments relate to instructions for fast element unpacking. In one example, a processor includes fetch circuitry to fetch an instruction whose format includes fields to specify an opcode and locations of an Array-of-Structures (AOS) source matrix and one or more Structure of Arrays (SOA) destination matrices, wherein: the specified opcode calls for unpacking elements of the specified AOS source matrix into the specified Structure of Arrays (SOA) destination matrices, the AOS source matrix is to contain N structures each containing K elements of different types, with same-typed elements in consecutive structures separated by a stride, the SOA destination matrices together contain K segregated groups, each containing N same-typed elements, decode circuitry to decode the fetched instruction, and execution circuitry, responsive to the decoded instruction, to unpack each element of the specified AOS matrix into one of the K element types of the one or more SOA matrices.

Claims (44)

1. A processor comprising:

fetch circuitry to fetch an instruction whose format includes fields to specify an opcode and locations of an Array-of-Structures (AOS) source matrix and one or more Structure of Arrays (SOA) destination matrices, wherein:

the specified opcode calls for unpacking elements of the specified AOS source matrix into the specified Structure of Arrays (SOA) destination matrices;

the AOS source matrix is to contain N structures each containing K elements of different types, with same-typed elements in consecutive structures separated by a stride;

the SOA destination matrices together contain K segregated groups, each containing N same-typed elements, wherein each of the K groups is disposed either in a dedicated matrix or in a shared matrix;

decode circuitry to decode the fetched instruction; and

execution circuitry, responsive to the decoded instruction, to unpack each element of the specified AOS matrix into one of the K element type and write each unpacked element to its corresponding group of same-typed elements in the one or more SOA matrices.

2. The processor of claim 1 , wherein each of the specified AOS and SOA matrices is stored in any of a collection of vector registers, a collection of tile register, and a memory location.

3. The processor of claim 1 , wherein the one or more SOA matrices comprise K matrices, each matrix to store exclusively one type of the K same-typed groups.

4. The processor of claim 1 , wherein the execution circuitry is further to transform a data format of data being moved from the specified AOS source matrix to the specified SOA destination matrix.

5. The processor of claim 1 , wherein the instruction further includes a field to specify an element size of the elements of the specified AOS matrix and the specified SOA matrix, the element size comprising one of a crumb, a nibble, a byte, a word, a doubleword, and a quadword.

6. The processor of claim 1 , wherein the instruction further includes fields to specify the stride and a secondary stride by which groups of elements are separate.

7. The processor of claim 1 , wherein the one or more SOA matrices comprise a single matrix in which all K groups of elements are disposed and with elements of the same type grouped together and segregated from groups of other element types.

8. A processor comprising:

fetch circuitry to fetch an instruction whose format includes fields to specify an opcode and locations of one or more Structure of Arrays (SOA) source matrices and an Array of Structures (AOS) destination matrix; wherein

the specified opcode is to indicate a move from the specified SOA matrix to the specified AOS matrix;

the specified SOA source matrices together contain K segregated groups, each containing N same-typed elements, wherein each of the K groups is disposed either in a dedicated matrix or in a shared matrix;

the AOS destination matrix is to contain N structures each containing K elements of different types, with same-typed elements in consecutive structures separated by a stride;

decode circuitry to decode the fetched instruction; and

execution circuitry, responsive to the decoded instruction, to sort each element of the specified SOA source matrix into one of the K element type and write each sorted element to its corresponding position in the specified AOS destination matrix.

9. The processor of claim 8 , wherein each of the specified AOS and SOA matrices is stored in any of a collection of vector registers, a collection of tile register, and a memory location.

10. The processor of claim 8 , wherein the one or more SOA matrices comprise K matrices, each matrix to store exclusively one type of the K same-typed groups.

11. A method to be performed by a processor, the method comprising:

fetching, using fetch circuitry, an instruction whose format includes fields to specify an opcode and locations of an Array-of-Structures (AOS) source matrix and one or more Structure of Arrays (SOA) destination matrices, wherein:

the specified opcode calls for unpacking elements of the specified AOS source matrix into the specified Structure of Arrays (SOA) destination matrices; and

the AOS source matrix is to contain N structures each containing K elements of different types, with same-typed elements in consecutive structures separated by a stride;

the SOA destination matrices together contain K segregated groups, each containing N same-typed elements, wherein each of the K groups is disposed either in a dedicated matrix or in a shared matrix;

decoding, using decode circuitry, the fetched instruction; and

responding, using execution circuitry, to the decoded instruction by unpacking each element of the specified AOS matrix into one of the K element type and writing each unpacked element to its corresponding group of same-typed elements in the one or more SOA matrices.

12. The method of claim 11 , wherein each of the specified AOS and SOA matrices is stored in any of a collection of vector registers, a collection of tile register, and a memory location.

13. The method of claim 11 , wherein the one or more SOA matrices comprise K matrices, each matrix to store exclusively one type of the K same-typed groups.

14. The method of claim 11 , wherein the execution circuitry is further to transform a data format of data being moved from the specified AOS source matrix to the specified SOA destination matrix.

15. The method of claim 11 , wherein the instruction further includes a field to specify an element size of the elements of the specified AOS matrix and the specified SOA matrix, the element size comprising one of a crumb, a nibble, a byte, a word, a doubleword, and a quadword.

16. The method of claim 11 , wherein the instruction further includes fields to specify the stride and a secondary stride by which groups of elements are separate.

17. The method of claim 11 , wherein the one or more SOA matrices comprise a single matrix in which all K groups of elements are disposed and with elements of the same type grouped together and segregated from groups of other element types.

18. A non-transitory machine-readable medium containing instructions, when executed by a processor, cause the processor to:

fetch, using fetch circuitry, an instruction whose format includes fields to specify an opcode and locations of one or more Structure of Arrays (SOA) source matrices and an Array of Structures (AOS) destination matrix; wherein

the specified opcode is to indicate a move from the specified SOA matrix to the specified AOS matrix;

the specified SOA source matrices together contain K segregated groups, each containing N same-typed elements, wherein each of the K groups is disposed either in a dedicated matrix or in a shared matrix; and

the AOS destination matrix is to contain N structures each containing K elements of different types, with same-typed elements in consecutive structures separated by a stride;

decode, using decode circuitry, the fetched instruction; and

respond, using execution circuitry, to the decoded instruction by sorting each element of the specified SOA source matrix into one of the K element types and write each sorted element to its corresponding position in the specified AOS destination matrix.

19. The non-transitory machine-readable medium of claim 18 , wherein each of the specified AOS and SOA matrices is stored in any of a collection of vector registers, a collection of tile register, and a memory location.

20. The non-transitory machine-readable medium of claim 18 , wherein the one or more SOA matrices comprise K matrices, each matrix to store exclusively one type of the K same-typed groups.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2019
From: TOLL, BRET; HEINECKE, ALEXANDER F.; HUGHES, CHRISTOPHER J.; ZOHAR, RONEN; ESPIG, MICHAEL; BAUM, DAN; SADE, RAANAN; VALENTINE, ROBERT; CHARNEY, MARK J.; OULD-AHMED-VALL, ELMOUSTAPHA
To: INTEL CORPORATION
Reel/Frame 048014/0422 →
Continuity (1)
Related Publication 20190042245A1 · Feb 7, 2019
Cited By (10)
US 12,236,242 US 12,260,213 US 12,282,525 US 12,282,773 US 12,293,186 US 12,314,717 US 12,474,928 US 12,536,020 US 12,650,839 US 12,699,747