IP Library › Granted Patent US 12,204,903
Granted Patent B2
US 12,204,903 · App. 17/359,522 · Granted Jan 21, 2025

Dual sum of quadword 16×16 multiply and accumulate

Inventors: Venkateswara Madduri (Austin, TX); Cristina Anderson (Hillsboro, OR); Robert Valentine (Kiryat Tivon, IL); Mark Charney (Lexington, MA); Vedvyas Shanbhogue (Austin, TX)
Assignee: Intel Corporation
G06F9/30145G06F9/3001G06F9/30036G06F9/30038G06F9/30101
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 12,204,903
App. No.
17/359,522
Granted
Jan 21, 2025
Kind
B2
Abstract

Techniques for matrix multiplication are described. In some examples, a single instruction having a format of fields for an opcode, one or more fields to indicate a location of a source/destination operand, one or more fields to indicate a location of a first source operand, and one or more fields to indicate a location of a second source operand is used. Wherein the opcode is to indicate that execution circuitry is to: multiply values from corresponding data elements of the first and second sources, add a first subset of the multiplied values to a first value from the source/destination operand and store in a first data element position of the source/destination operand, and add a second subset of the multiplied values to a second value from the source/destination operand and store in a second data element position of the source/destination operand.

Claims (43)

1. An apparatus comprising:

decoder circuitry to decode a single instruction, wherein the single instruction is to include fields for an opcode, one or more fields to indicate a location of a source/destination operand, one or more fields to indicate a location of a first source operand, and one or more fields to indicate a location of a second source operand, wherein the opcode is to indicate that execution circuitry is to:

multiply values from corresponding data elements of the first and second sources,

add a first subset of the multiplied values to a first value from the source/destination operand and store in a first data element position of the source/destination operand, and

add a second subset of the multiplied values to a second value from the source/destination operand and store in a second data element position of the source/destination operand; and

execution circuitry to execute the decoded instruction according to the opcode.

2. The apparatus of claim 1 , wherein the field for the identifier of the first source operand is to identify a vector register.

3. The apparatus of claim 1 , wherein the field for the identifier of the first source operand is to identify a memory location.

4. The apparatus of claim 1 , wherein the opcode is to indicate data elements of the first source operand are signed and data elements of the second source are unsigned.

5. The apparatus of claim 1 , wherein the data elements of the first and second source operands at 16-bit integer values.

6. The apparatus of claim 5 , wherein the data elements of the source/destination operand are 64-bit integer values.

7. The apparatus of claim 1 , wherein the opcode is to indicate data element sizes of the first and second source operands and the source/destination operand.

8. A non-transitory machine-readable medium storing an instance of a single instruction which when processed by a machine is to cause the machine to perform a method comprising:

decoding the single instruction, wherein the single instruction is to include fields for an opcode, one or more fields to indicate a location of a source/destination operand, one or more fields to indicate a location of a first source operand, and one or more fields to indicate a location of a second source operand, wherein the opcode is to indicate that execution circuitry is to:

multiply values from corresponding data elements of the first and second sources,

add a first subset of the multiplied values to a first value from the source/destination operand and store in a first data element position of the source/destination operand, and

add a second subset of the multiplied values to a second value from the source/destination operand and store in a second data element position of the source/destination operand; and

executing the decoded instruction according to the opcode.

9. The non-transitory machine-readable medium of claim 8 , wherein the field for the identifier of the first source operand is to identify a vector register.

10. The non-transitory machine-readable medium of claim 8 , wherein the field for the identifier of the first source operand is to identify a memory location.

11. The non-transitory machine-readable medium of claim 8 , wherein the opcode is to indicate data elements of the first source operand are signed and data elements of the second source are unsigned.

12. The non-transitory machine-readable medium of claim 8 , wherein the data elements of the first and second source operands at 16-bit integer values.

13. The non-transitory machine-readable medium of claim 12 , wherein the data elements of the source/destination operand are 64-bit integer values.

14. The non-transitory machine-readable medium of claim 8 , wherein the opcode is to indicate data element sizes of the first and second source operands and the source/destination operand.

15. A non-transitory machine-readable medium storing an instance of a single instruction which when processed by a machine is to cause the machine to perform a method comprising:

translating the single instruction from a first instruction set architecture to one or more instructions of a second instruction set architecture, wherein the single instruction is to include fields for an opcode, one or more fields to indicate a location of a source/destination operand, one or more fields to indicate a location of a first source operand, and one or more fields to indicate a location of a second source operand, wherein the opcode is to indicate that execution circuitry is to:

multiply values from corresponding data elements of the first and second sources,

add a first subset of the multiplied values to a first value from the source/destination operand and store in a first data element position of the source/destination operand, and

add a second subset of the multiplied values to a second value from the source/destination operand and store in a second data element position of the source/destination operand;

decoding the one or more instructions of the second instruction set architecture; and

executing the decoded one or more instructions according to the opcode of the single instruction.

16. The non-transitory machine-readable medium of claim 15 , wherein the field for the identifier of the first source operand is to identify a vector register.

17. The non-transitory machine-readable medium of claim 15 , wherein the field for the identifier of the first source operand is to identify a memory location.

18. The non-transitory machine-readable medium of claim 15 , wherein the opcode is to indicate data elements of the first source operand are signed and data elements of the second source are unsigned.

19. A system comprising:

a processor comprising:

decoder circuitry to decode a single instruction, wherein the single instruction is to include fields for an opcode, one or more fields to indicate a location of a source/destination operand, one or more fields to indicate a location of a first source operand, and one or more fields to indicate a location of a second source operand, wherein the opcode is to indicate that execution circuitry is to:

multiply values from corresponding data elements of the first and second sources,

add a first subset of the multiplied values to a first value from the source/destination operand and store in a first data element position of the source/destination operand, and

add a second subset of the multiplied values to a second value from the source/destination operand and store in a second data element position of the source/destination operand, and

execution circuitry to execute the decoded instruction according to the opcode; and

memory to store the single instruction.

20. The system of claim 19 , wherein the opcode is to indicate data elements of the first source operand are signed and data elements of the second source are unsigned.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2021
From: MADDURI, VENKATESWARA; ANDERSON, CRISTINA; VALENTINE, ROBERT; CHARNEY, MARK; SHANBHOGUE, VEDVYAS
To: INTEL CORPORATION
Reel/Frame 057081/0328 →
Continuity (2)
Provisional Application 63215433 · Jun 26, 2021
Related Publication 20220413861A1 · Dec 29, 2022
References Cited (37)
US 9804823B2 · Lundvall et al. · 2017 [cited by applicant]
US 10324719B2 · Cowlishaw et al. · 2019 [cited by applicant]
US 10664270B2 · Ould-Ahmed-Vall et al. · 2020 [cited by applicant]
US 11175891B2 · Rubanovich et al. · 2021 [cited by applicant]
US 11409525B2 · Heinecke et al. · 2022 [cited by applicant]
US 11768681B2 · Heinecke et al. · 2023 [cited by applicant]
US 20030023646A1 · Lin et al. · 2003 [cited by applicant]
US 20050125476A1 · Symes et al. · 2005 [cited by applicant]
US 20060271764A1 · Nilsson et al. · 2006 [cited by applicant]
US 20150089197A1 · Gopal et al. · 2015 [cited by applicant]
US 20160098249A1 · Carlough et al. · 2016 [cited by applicant]
US 20180095758A1 · Dubtsov et al. · 2018 [cited by applicant]
US 20180226970A1 · Miyadai · 2018 [cited by applicant]
US 20180293078A1 · Gabrielli et al. · 2018 [cited by applicant]
US 20190042544A1 · Kashyap et al. · 2019 [cited by applicant]
US 20190102168A1 · Madduri et al. · 2019 [cited by applicant]
US 20190102174A1 · Madduri et al. · 2019 [cited by applicant]
US 20190102191A1 · Madduri et al. · 2019 [cited by applicant]
US 20190102193A1 · Madduri et al. · 2019 [cited by applicant]
US 20190102195A1 · Madduri et al. · 2019 [cited by applicant]
US 20190196828A1 · Madduri et al. · 2019 [cited by applicant]
US 20190227797A1 · Heinecke et al. · 2019 [cited by applicant]
US 20200192665A1 · Ould-Ahmed-Vall et al. · 2020 [cited by applicant]
US 20210124560A1 · Liu · 2021 [cited by examiner]
EP 3480710A1 · 2019 [cited by applicant]
EP 3716047A1 · 2020 [cited by applicant]
WO 2019066798A1 · 2019 [cited by applicant]
Intention to Grant, EP App. No. 22165820.6, Mar. 5, 2024, 6 pages. [cited by applicant]
Decision to Grant, EP App. No. 22165820.6, Jul. 11, 2024, 2 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/359,538, Aug. 15, 2024, 11 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/359,552, Aug. 22, 2024, 15 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/359,561, Aug. 22, 2024, 8 pages. [cited by applicant]
Office Action , EP App. No. 22160649.4, Aug. 30, 2023, 04 pages. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22166208.3, Sep. 9, 2022, 11 pages. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22181081.5, Nov. 21, 2022, 9 pages. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22160649.4, Sep. 9, 2022, 7 pages. [cited by applicant]
European Search Report and Search Opinion, EP App. No. 22165820.6, Oct. 4, 2022, 7 pages. [cited by applicant]