Dynamic Range Adjusting Floating Point Execution Unit
First Claim
Patent Images
1. A circuit arrangement, comprising:
- a register file including a plurality of registers configured to store 32-bit floating point values, each floating point value configured with a 1-bit sign field, an 8-bit exponent field and a 23-bit significand field, with the significand field including a 3-bit first portion and a 20-bit second portion;
a single precision floating point execution unit coupled to the register file and configured to process a first input floating point value stored in a first source register from the register file that is identified by a first floating point instruction being executed by the floating point execution unit to store a first output floating point value in a first destination register from the register file, and to process a second input floating point value stored in a second source register from the register file that is identified by a second floating point instruction being executed by the floating point execution unit to store a second output floating point value in a second destination register from the register file, wherein the floating point execution unit includes an exponent path and a significand path, wherein the first floating point instruction is a non-extended range floating point instruction and the second floating point instruction is an extended range floating point instruction, wherein the floating point execution unit is configured to execute the first floating point instruction by using data stored in the exponent field of the first input floating point value as an exponent and by concatenating data stored in the first and second portions of the significand field of the first input floating point value for use as a significand, and wherein the floating point execution unit is configured to execute the second floating point instruction by concatenating data stored in the exponent field and the first portion of the significand field of the second input floating point value for use as an exponent and by using data stored in the second portion of the significand field of the second input floating point value as a significand;
first shift logic coupled to in the significand path of the floating point execution unit and configured to receive input floating point values from the register file, the first shift logic configured to selectively shift data in the second portion of the significand field of the second input floating point value left three bits during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction, the first shift logic further configured to pass unmodified the significand field of the first input floating point value based upon the first floating point instruction being a non-extended range floating point instruction; and
second shift logic coupled to the significand path of the floating point execution unit and configured to receive output floating point values from the floating point execution unit, the second shift logic configured to selectively shift data in the second portion of the significand field of the second output floating point value right three bits during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction, the second shift logic further configured to pass unmodified the significand field of the first output floating point value based upon the first floating point instruction being a non-extended range floating point instruction; and
concatenation logic coupled to the exponent path of the floating point execution unit and configured to concatenate data from the exponent field and the first portion of the significand field of the second input floating point value during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction.
1 Assignment
0 Petitions
Accused Products
Abstract
A floating point execution unit is capable of selectively repurposing a subset of the significand bits in a floating point value for use as additional exponent bits to dynamically provide an extended range for floating point calculations. A significand field of a floating point operand may be considered to include first and second portions, with the first portion capable of being concatenated with the second portion to represent the significand for a floating point value, or, to provide an extended range, being concatenated with the exponent field of the floating point operand to represent the exponent for a floating point value.
44 Citations
23 Claims
-
1. A circuit arrangement, comprising:
-
a register file including a plurality of registers configured to store 32-bit floating point values, each floating point value configured with a 1-bit sign field, an 8-bit exponent field and a 23-bit significand field, with the significand field including a 3-bit first portion and a 20-bit second portion; a single precision floating point execution unit coupled to the register file and configured to process a first input floating point value stored in a first source register from the register file that is identified by a first floating point instruction being executed by the floating point execution unit to store a first output floating point value in a first destination register from the register file, and to process a second input floating point value stored in a second source register from the register file that is identified by a second floating point instruction being executed by the floating point execution unit to store a second output floating point value in a second destination register from the register file, wherein the floating point execution unit includes an exponent path and a significand path, wherein the first floating point instruction is a non-extended range floating point instruction and the second floating point instruction is an extended range floating point instruction, wherein the floating point execution unit is configured to execute the first floating point instruction by using data stored in the exponent field of the first input floating point value as an exponent and by concatenating data stored in the first and second portions of the significand field of the first input floating point value for use as a significand, and wherein the floating point execution unit is configured to execute the second floating point instruction by concatenating data stored in the exponent field and the first portion of the significand field of the second input floating point value for use as an exponent and by using data stored in the second portion of the significand field of the second input floating point value as a significand; first shift logic coupled to in the significand path of the floating point execution unit and configured to receive input floating point values from the register file, the first shift logic configured to selectively shift data in the second portion of the significand field of the second input floating point value left three bits during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction, the first shift logic further configured to pass unmodified the significand field of the first input floating point value based upon the first floating point instruction being a non-extended range floating point instruction; and second shift logic coupled to the significand path of the floating point execution unit and configured to receive output floating point values from the floating point execution unit, the second shift logic configured to selectively shift data in the second portion of the significand field of the second output floating point value right three bits during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction, the second shift logic further configured to pass unmodified the significand field of the first output floating point value based upon the first floating point instruction being a non-extended range floating point instruction; and concatenation logic coupled to the exponent path of the floating point execution unit and configured to concatenate data from the exponent field and the first portion of the significand field of the second input floating point value during execution of the second floating point instruction based upon the second floating point instruction being an extended range floating point instruction.
-
-
2. A circuit arrangement, comprising:
-
an operand input configured to receive floating point operands, each floating point operand received by the operand input configured with an exponent field and a significand field, with the significand field including a first portion and a second portion; and a floating point execution unit coupled to the operand input and configured to process floating point operands received by the operand input during execution of floating point instructions, wherein the floating point execution unit is configured to execute a first floating point instruction for which a first floating point operand has been received by the operand input by using data stored in the exponent field of the first floating point operand as an exponent and by concatenating data stored in the first and second portions of the significand field of the first floating point operand for use as a significand, and wherein the floating point execution unit is configured to execute a second floating point instruction for which a second floating point operand has been received by the operand input by concatenating data stored in the exponent field and the first portion of the significand field of the second floating point operand for use as an exponent and by using data stored in the second portion of the significand field of the second floating point operand as a significand. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 21, 22, 23)
-
-
14. A method of executing floating point instructions in a floating point execution unit, the method comprising:
-
receiving first and second floating point instructions, the first floating point instruction identifying a first floating point operand and the second floating point instruction identifying a second floating point operand, each of the first and second floating point operands configured with an exponent field and a significand field, with the significand field including a first portion and a second portion, wherein the exponent field, first portion of the significand field and second portion of the significand field in the first floating point operand are respectively mapped to the same bits as the exponent field, first portion of the significand field and second portion of the significand field in the second floating point operand; executing the first floating point instruction in the floating point execution unit by using data stored in the exponent field of the first floating point operand as an exponent and by concatenating data stored in the first and second portions of the significand field of the first floating point operand for use as a significand; and executing the second floating point instruction in the floating point execution unit by concatenating data stored in the exponent field and the first portion of the significand field of the second floating point operand for use as an exponent and by using data stored in the second portion of the significand field of the second floating point operand as a significand. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification