IP Library › Granted Patent US 11,416,248
Granted Patent B2
US 11,416,248 · App. 16/833,597 · Granted Aug 16, 2022

Method and system for efficient floating-point compression

Inventors: Jaewoong Sim (Portland, OR); Alaa Alameldeen (Hillsboro, OR); Eriko Nurvitadhi (Hillsboro, OR); Deborah Marr (Portland, OR)
Assignee: INTEL CORPORATION
G06F9/3001G06F7/485G06F7/556G06F9/30145G06F9/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,416,248
App. No.
16/833,597
Granted
Aug 16, 2022
Kind
B2
Abstract

An apparatus and method for compressing floating-point values. For example, one embodiment of a processor comprises: instruction fetch circuitry to fetch instructions from a memory, the instructions including floating-point instructions; execution circuitry to execute the floating-point instructions, each floating-point instruction having one or more floating-point operands, each floating-point operand comprising an exponent value and a significand value; floating-point compression circuitry to compress a plurality of the exponent values associated with a corresponding plurality of the floating-point operands, the floating-point compression circuitry comprising: base generation circuitry to evaluate the plurality of the exponent values to generate a first base value; and delta generation circuitry to determine a difference between the plurality of exponent values and the first base value and to generate a corresponding first plurality of delta values, wherein the floating-point compression circuitry is to store the first base value and the corresponding first plurality of delta values as a plurality of compressed exponent values.

Claims (46)

1. A processor comprising:

instruction fetch circuitry to fetch instructions from a memory, the instructions including floating-point instructions;

execution circuitry to execute the floating-point instructions, each floating-point instruction having one or more floating-point operands, each floating-point operand comprising an exponent value and a significand value; and

floating-point compression circuitry to, in response to a first floating-point instruction, compress a plurality of the exponent values associated with a corresponding plurality of the floating-point operands, the floating-point compression circuitry comprising:

base generation circuitry to evaluate the plurality of the exponent values to generate a first base value; and

delta generation circuitry to determine a difference between each of the plurality of the exponent values and the first base value and to generate a corresponding first plurality of delta values,

wherein the floating-point compression circuitry is to store the first base value along with the corresponding first plurality of delta values as a plurality of compressed exponent values, a plurality of compression bits each for one of the plurality of compressed exponent values to indicate that the exponent value is compressed, and a corresponding plurality of significand values each for one of the plurality of compressed exponent values, wherein each compression bit for a compressed exponent value takes a bit position for a significand value corresponding to the compressed exponent value and the significand value's bit width is reduced by one.

2. The processor of claim 1 wherein the floating-point compression circuitry is to compress the plurality of the exponent values independently from any compression of the corresponding plurality of the significand values.

3. The processor of claim 1 wherein the floating-point compression circuitry is to compress the corresponding plurality of significand values using a different compression technique from that used to generate the plurality of compressed exponent values.

4. The processor of claim 1 further comprising:

floating-point decompression circuitry to, in response to a second floating-point instruction, receive a plurality of compressed exponent values of compressed floating-point values read from the memory, the floating-point decompression circuitry to add a second base value associated with the plurality of compressed exponent values to a second plurality of delta values to generate a corresponding plurality of decompressed exponent values.

5. The processor of claim 4 wherein the floating-point decompression circuitry is to load a first floating-point value in a source register indicated by the second floating-point instruction, the first floating-point value comprising a first decompressed exponent value of the plurality of decompressed exponent values and a first significand value.

6. The processor of claim 1 wherein the corresponding plurality of the floating-point operands comprise one or more of: half-precision floating-point operands, single-precision floating-point operands, double-precision floating-point operands, bfloat16 operands, fp8 operands, and fp9 operands.

7. The processor of claim 1 wherein the first base value comprises an 8-bit value and the delta values comprise 2-bit or 3-bit values.

8. A method comprising:

fetching instructions from a memory, the instructions including floating-point instructions;

executing the floating-point instructions, each floating-point instruction having one or more floating-point operands, each floating-point operand comprising an exponent value and a significand value;

in response to a first floating-point instruction, compressing a plurality of the exponent values associated with a corresponding plurality of the floating-point operands, wherein compressing comprises:

evaluating the plurality of the exponent values to generate a first base value; and

determining a difference between each of the plurality of the exponent values and the first base value to generate a corresponding first plurality of delta values, and

storing the first base value, along with the corresponding first plurality of delta values as a plurality of compressed exponent values, a plurality of compression bits each for one of the plurality of compressed exponent values to indicate that the exponent value is compressed, and a corresponding plurality of significand values each for the one of the plurality of compressed exponent values, wherein each compression bit for a compressed exponent value takes a bit position for a significand value corresponding to the compressed exponent value and the significand value bit width is reduced by one.

9. The method of claim 8 wherein the plurality of the exponent values are to be compressed independently from any compression of the corresponding plurality of the significand values.

10. The method of claim 8 wherein the corresponding plurality of significand values are to be compressed using a different compression technique from that used to generate the plurality of compressed exponent values.

11. The method of claim 8 further comprising:

in response to a second floating-point instruction, receiving a plurality of compressed exponent values from the memory; and

adding a second base value associated with the plurality of compressed exponent values to a second plurality of delta values to generate a corresponding plurality of decompressed exponent values.

12. The method of claim 11 further comprising:

loading a first floating-point value in a source register indicated by the second floating-point instruction, the first floating-point value comprising a first decompressed exponent value of the plurality of decompressed exponent values and a first significand value.

13. The method of claim 8 wherein the corresponding plurality of the floating-point operands comprise one or more of: half-precision floating-point operands, single-precision floating-point operands, double-precision floating-point operands, bfloat16 operands, fp8 operands, and fp9 operands.

14. The method of claim 8 wherein the first base value comprises an 8-bit value and the delta values comprise 2-bit or 3-bit values.

15. A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:

fetching instructions from a memory, the instructions including floating-point instructions;

executing the floating-point instructions, each floating-point instruction having one or more floating-point operands, each floating-point operand comprising an exponent value and a significand value;

in response to a first floating-point instruction, compressing a plurality of the exponent values associated with a corresponding plurality of the floating-point operands, wherein compressing comprises:

evaluating the plurality of the exponent values to generate a first base value; and

determining a difference between each of the plurality of the exponent values and the first base value to generate a corresponding first plurality of delta values, and

storing the first base value, along with the corresponding first plurality of delta values as a plurality of compressed exponent values, a plurality of compression bits each for each one of the plurality of compressed exponent values to indicate that the exponent value is compressed, and a corresponding plurality of significand values each for the one of the plurality of compressed exponent values, wherein each compression bit for a compressed exponent value takes a bit position for a significand value corresponding to the compressed exponent value and the significand value's bit width is reduced by one.

16. The non-transitory machine-readable medium of claim 15 wherein the plurality of the exponent values are to be compressed independently from any compression of the corresponding plurality of the significand values.

17. The non-transitory machine-readable medium of claim 15 wherein the corresponding plurality of significand values are to be compressed using a different compression technique from that used to generate the plurality of compressed exponent values.

18. The non-transitory machine-readable medium of claim 15 further comprising program code to cause the machine to perform the operations of:

in response to a second floating-point instruction, receiving a plurality of compressed exponent values from the memory; and

adding a second base value associated with the plurality of compressed exponent values to a second plurality of delta values to generate a corresponding plurality of decompressed exponent values.

19. The non-transitory machine-readable medium of claim 18 further comprising program code to cause the machine to perform the operations of:

loading a first floating-point value in a source register indicated by the second floating-point instruction, the first floating-point value comprising a first decompressed exponent value of the plurality of decompressed exponent values and a first significand value.

20. The non-transitory machine-readable medium of claim 15 wherein the corresponding plurality of the floating-point operands comprise one or more of: half-precision floating-point operands, single-precision floating-point operands, double-precision floating-point operands, bfloat16 operands, fp8 operands, and fp9 operands.

21. The non-transitory machine-readable medium of claim 15 wherein the first base value comprises an 8-bit value and the delta values comprise 2-bit or 3-bit values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2020
From: SIM, JAEWOONG; ALAMELDEEN, ALAA; NURVITADHI, ERIKO; MARR, DEBORAH
To: INTEL CORPORATION
Reel/Frame 053605/0514 →
Continuity (1)
Related Publication 20200225948A1 · Jul 16, 2020