US 11,886,833 B2
Hierarchical and shared exponent floating point data types
Bita Darvish Rouhani, Bellevue, WA (US); Venmugil Elango, Redmond, WA (US); Rasoul Shafipour, Redmond, WA (US); Jeremy Fowers, Redmond, WA (US); Ming Gang Liu, Redmond, WA (US); Jinwen Xi, Sunnyvale, CA (US); Douglas C. Burger, Bellevue, WA (US); and Eric S. Chung, Woodinville, WA (US)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Jun. 28, 2021, as Appl. No. 17/361,263.
Claims priority of provisional application 63/148,086, filed on Feb. 10, 2021.
Prior Publication US 2022/0253281 A1, Aug. 11, 2022
Int. Cl. G06F 7/483 (2006.01); H03M 7/30 (2006.01); H03M 7/24 (2006.01)
CPC G06F 7/483 (2013.01) [H03M 7/24 (2013.01); H03M 7/30 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A non-transitory machine-readable medium storing a program executable by at least one processing unit of a device, the program comprising sets of instructions for:
determining a first shared exponent value based on an exponent value of each floating point value in a first subset of a plurality of floating point values;
determining a second shared exponent value based on an exponent value of each floating point value in a second subset of the plurality of floating point values;
determining a third shared exponent value based the first shared exponent value and the second shared exponent value;
determining a first difference value based on the first shared exponent value and the third shared exponent value;
determining a second difference value based on the second shared exponent value and the third shared exponent value;
determining a sign value and a mantissa value for each floating point value in the plurality of floating point values;
storing, in a data structure for a shared exponent floating point data type, the sign value and the mantissa value for each floating point value in the plurality of floating point values, the third shared exponent value, the first difference value, and the second difference value; and
providing the data structure as an input to a set of hardware components, the set of hardware components configured to perform a set of operations on the plurality of floating point values based on the data structure for the shared exponent floating point data type and generate an output based on the set of operations, the set of hardware components comprising a set of multipliers for performing multiplication operations on the mantissa values of the plurality of floating point values to generate a plurality of products, a first set of shifters for performing shifting operations on the plurality of products based on the first difference value and the second difference value to generate a first plurality of shifted values, a first set of adders for adding the first plurality of shifted values to generate a plurality of sums, a second set of shifters for performing shifting operations on the plurality of sums to generate a second plurality of shifted values, and a second set of adders for adding the second plurality of shifted values to generate a set of sums.