IP Library Granted Patent US 11,366,663
Granted Patent B2
US 11,366,663 · App. 16/186,378 · Granted Jun 21, 2022

Systems and methods for performing 16-bit floating-point vector dot product instructions

Inventors: Alexander F. Heinecke (San Jose, CA); Robert Valentine (Kiryat Tivon, IL); Mark J. Charney (Lexington, MA); Raanan Sade (Kibutz Sarid, IL); Menachem Adelman (Haifa, IL); Zeev Sperber (Zichron Yackov, IL); Amit Gradstein (Binyamina, IL); Simon Rubanovich (Haifa, IL)
Assignee: Intel Corporation
G06F9/30036G06F9/3001G06F9/30014G06F9/3016G06F9/3802
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,366,663
App. No.
16/186,378
Granted
Jun 21, 2022
Kind
B2
Abstract

Disclosed embodiments relate to systems and methods for performing 16-bit floating-point vector dot product instructions. In one example, a processor includes fetch circuitry to fetch an instruction having fields to specify an opcode and locations of first source, second source, and destination vectors, the opcode to indicate execution circuitry is to multiply N pairs of 16-bit floating-point formatted elements of the specified first and second sources, and accumulate the resulting products with previous contents of a corresponding single-precision element of the specified destination, decode circuitry to decode the fetched instruction, and execution circuitry to respond to the decoded instruction as specified by the opcode.

Claims (33)

1. A processor comprising:

fetch circuitry to fetch a single instruction having fields to specify an opcode and locations of first source, second source, and destination vectors, the opcode to indicate execution circuitry is to multiply N pairs of elements of the specified first and second sources having a 16-bit floating-point format of a sign bit, an 8-bit exponent, and a mantissa comprising 7 explicit bits and an eighth implicit bit, and accumulate resulting products with previous contents of a corresponding single-precision element of the specified destination according to a rounding mode fixed for the single instruction regardless of any rounding mode set in a control register;

decode circuitry to decode the fetched instruction; and

the execution circuitry to respond to the decoded instruction as specified by the opcode.

2. The processor of claim 1 , wherein the locations of each of the specified source and destination vectors are either in registers or in memory.

3. The processor of claim 1 , wherein N is specified by the instruction and has a value of one of 4, 8, 16, and 32.

4. The processor of claim 1 , wherein the execution circuitry is to perform the multiplications without saturation and to saturate the result of the accumulation to plus or minus infinity in case of an overflow and to zero in case of any underflow.

5. The processor of claim 1 , wherein the 16-bit floating-point format is bfloat16.

6. The processor of claim 1 , wherein the execution circuitry is to generate all N elements of the specified destination in parallel.

7. A method comprising:

fetching, using fetch circuitry, a single instruction having fields to specify an opcode and locations of first source, second source, and destination vectors, the opcode to indicate execution circuitry is to multiply N pairs of elements of the specified first and second sources having a 16-bit floating-point format of a sign bit, an 8-bit exponent, and a mantissa comprising 7 explicit bits and an eighth implicit bit, and accumulate resulting products with previous contents of a corresponding single-precision element of the specified destination according to a rounding mode fixed for the single instruction regardless of any rounding mode set in a control register;

decoding, using decode circuitry, the fetched instruction; and

responding to the decoded instruction as specified by the opcode with the execution circuitry.

8. The method of claim 7 , wherein the locations of each of the specified source and destination vectors are either in registers or in memory.

9. The method of claim 7 , wherein N is specified by the instruction and has a value of one of 4, 8, 16.

10. The method of claim 7 , wherein the execution circuitry is to perform the multiplications without saturation and to saturate the result of the accumulation to plus or minus infinity in case of an overflow and to zero in case of any underflow.

11. The method of claim 7 , wherein the 16-bit floating-point format is bfloat16.

12. The method of claim 7 , wherein the execution circuitry is to generate all N elements of the specified destination in parallel.

13. A system comprising:

a memory; and

a processor coupled to the memory, the processor comprising:

fetch circuitry to fetch a single instruction having fields to specify an opcode and locations of first source, second source, and destination vectors, the opcode to indicate execution circuitry is to multiply N pairs of elements of the specified first and second sources having a 16-bit floating-point format of a sign bit, an 8-bit exponent, and a mantissa comprising 7 explicit bits and an eighth implicit bit, and accumulate resulting products with previous contents of a corresponding single-precision element of the specified destination according to a rounding mode fixed for the single instruction regardless of any rounding mode set in a control register;

decode circuitry to decode the fetched instruction; and

the execution circuitry to respond to the decoded instruction as specified by the opcode.

14. The system of claim 13 , wherein the locations of each of the specified source and destination vectors are either in registers in the processor or in the memory.

15. The system of claim 13 , wherein the 16-bit floating-point format is bfloat16.

16. A non-transitory machine-readable medium containing code to cause a processor to respond by:

fetching, using fetch circuitry, a single instruction having fields to specify an opcode and locations of first source, second source, and destination vectors, the opcode to indicate the processor is to multiply N pairs of elements of the specified first and second sources having a 16-bit floating-point format of a sign bit, an 8-bit exponent, and a mantissa comprising 7 explicit bits and an eighth implicit bit, and accumulate resulting products with previous contents of a corresponding single-precision element of the specified destination according to a rounding mode fixed for the single instruction regardless of any rounding mode set in a control register;

decoding, using decode circuitry, the fetched instruction; and

responding to the decoded instruction as specified by the opcode with execution circuitry.

17. The non-transitory machine-readable medium of claim 16 , wherein the instruction further includes a field to specify N, wherein N is an even number larger than 4.

18. The non-transitory machine-readable medium of claim 16 , wherein the execution circuitry is to perform the multiplications without saturation and to saturate the result of the accumulation to plus or minus infinity in case of an overflow and to zero in case of any underflow.

19. The non-transitory machine-readable medium of claim 16 , wherein the 16-bit floating-point format is bfloat16.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2018
From: HEINECKE, ALEXANDER F.; VALENTINE, ROBERT; CHARNEY, MARK J.; SADE, RAANAN; ADELMAN, MENACHEM; SPERBER, ZEEV; GRADSTEIN, AMIT; RUBANOVICH, SIMON
To: INTEL CORPORATION
Reel/Frame 047804/0924 →
Continuity (1)
Related Publication 20190079767A1 · Mar 14, 2019
Cited By (2)
US 12,379,927 US 12,608,175