IP Library › Granted Patent US 11,507,376
Granted Patent B2
US 11,507,376 · App. 17/152,160 · Granted Nov 22, 2022

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 11,507,376
App. No.
17/152,160
Granted
Nov 22, 2022
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 (48)

1. A processor comprising:

fetch circuitry to fetch an instruction comprising an opcode and one or more fields to specify locations of an array of structures (AOS) source matrix and one or more structure of arrays (SOA) destination matrices, wherein:

the opcode is to indicate an unpacking of elements of the AOS source matrix into the one or more SOA destination matrices,

the AOS source matrix is to contain N structures each containing K consecutive elements of different types, and

the one or more SOA destination matrices is to contain K segregated groups, each containing N same-typed elements;

decode circuitry to decode the fetched instruction; and

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

2. The processor of claim 1 , wherein the one or more SOA destination matrices is a respective set of registers that represent a two-dimensional matrix for each of the one or more SOA destination matrices.

3. The processor of claim 1 , wherein the one or more SOA destination matrices comprise K plurality of matrices, and each matrix is 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 AOS source matrix to the one or more SOA destination matrices.

5. The processor of claim 1 , wherein the instruction further includes a field to specify an element size of the elements of the AOS source matrix and the one or more SOA destination matrices, the element size selectable between a crumb, a nibble, a byte, a word, a doubleword, and a quadword.

6. The processor of claim 1 , wherein the instruction further includes a field to specify a stride by which consecutive structures of the N structures are separate.

7. The processor of claim 1 , wherein the one or more SOA destination 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 comprising an opcode and one or more fields to specify locations of one or more structure of arrays (SOA) source matrices and an array of structures (AOS) destination matrix, wherein:

the opcode is to indicate a move from the one or more SOA source matrices to the AOS destination matrix,

the one or more SOA source matrices is to contain K segregated groups, each containing N same-typed elements, and

the AOS destination matrix is to contain N structures each containing K consecutive elements of different types;

decode circuitry to decode the fetched instruction; and

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

9. The processor of claim 8 , wherein the one or more SOA source matrices is a respective set of registers that represent a two-dimensional matrix for each of the one or more SOA source matrices.

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

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

fetching, using fetch circuitry, an instruction comprising an opcode and one or more fields to specify locations of an array of structures (AOS) source matrix and one or more structure of arrays (SOA) destination matrices, wherein:

the opcode calls for unpacking elements of the AOS source matrix into the one or more SOA destination matrices,

the AOS source matrix is to contain N structures each containing K consecutive elements of different types, and

the one or more SOA destination matrices is to contain K segregated groups, each containing N same-typed elements;

decoding, using decode circuitry, the fetched instruction; and

executing, using execution circuitry, responsive to the opcode of the decoded instruction by unpacking each element of the AOS source matrix into one of the K element types and writing each unpacked element to its corresponding group of same-typed elements in the one or more SOA destination matrices.

12. The method of claim 11 , wherein the one or more SOA destination matrices is a respective set of registers that represent a two-dimensional matrix for each of the one or more SOA destination matrices.

13. The method of claim 11 , wherein the one or more SOA destination matrices comprise K plurality of matrices, and each matrix is 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 AOS source matrix to the one or more SOA destination matrices.

15. The method of claim 11 , wherein the instruction further includes a field to specify an element size of the elements of the AOS source matrix and the one or more SOA destination matrices, the element size selectable between 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 a stride by which consecutive structures of the N structures are separate.

17. The method of claim 11 , wherein the one or more SOA destination 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 computer-readable medium containing code, that when executed by a machine, causes the machine to perform a method comprising:

fetching, using fetch circuitry, an instruction comprising an opcode and one or more fields to specify locations of an array of structures (AOS) source matrix and one or more structure of arrays (SOA) destination matrices, wherein:

the opcode calls for unpacking elements of the AOS source matrix into the one or more SOA destination matrices,

the AOS source matrix is to contain N structures each containing K consecutive elements of different types, and

the one or more SOA destination matrices is to contain K segregated groups, each containing N same-typed elements;

decoding, using decode circuitry, the fetched instruction; and

executing, using execution circuitry, responsive to the opcode of the decoded instruction by unpacking each element of the AOS source matrix into one of the K element types and writing each unpacked element to its corresponding group of same-typed elements in the one or more SOA destination matrices.

19. The non-transitory computer-readable medium of claim 18 , wherein the one or more SOA destination matrices is a respective set of registers that represent a two-dimensional matrix for each of the one or more SOA destination matrices.

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

21. The non-transitory computer-readable medium of claim 18 , wherein the execution circuitry is further to transform a data format of data being moved from the AOS source matrix to the one or more SOA destination matrices.

22. The non-transitory computer-readable medium of claim 18 , wherein the instruction further includes a field to specify an element size of the elements of the AOS source matrix and the one or more SOA destination matrices, the element size selectable between a crumb, a nibble, a byte, a word, a doubleword, and a quadword.

23. The non-transitory computer-readable medium of claim 18 , wherein the instruction further includes fields to specify a stride by which consecutive structures of the N structures are separate.

24. The non-transitory computer-readable medium of claim 18 , wherein the one or more SOA destination 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.

Continuity (2)
Continuation 16146854 · Sep 28, 2018
Related Publication 20210216315A1 · Jul 15, 2021
Cited By (7)
US 12,260,213 US 12,282,773 US 12,314,717 US 12,474,928 US 12,536,020 US 12,650,839 US 12,699,747