IP Library Granted Patent US 9,696,991
Granted Patent B1
US 9,696,991 · App. 13/727,835 · Granted Jul 4, 2017

Fixed-point and floating-point optimization

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 9,696,991
App. No.
13/727,835
Granted
Jul 4, 2017
Kind
B1
Abstract

Systems and methods for enhancing fixed-point operations, floating-point operations, or a combination thereof for programs implemented on an integrated circuit (IC) are provided. Portions of these operations may be shared among the operations. Accordingly, the embodiments described herein enhance these fixed-point operations, floating-point operations, or a combination thereof based upon these portions of the operations that may be shared.

Claims (85)

1. A computer-implemented method, comprising:

reducing an amount of programmable logic needed to implement instructions on programmable logic of an integrated circuit (IC) by:

identifying and mapping one or more operationally shareable sub-functions of two or more fixed-point operations, floating-point operations, or a combination thereof, by:

processing a kernel description to obtain a representation of the two or more fixed-point operations, floating-point operations, or the combination thereof;

analyzing the representation for patterns between the two or more fixed-point operations, floating-point operations, or the combination thereof;

wherein the operationally sharable sub-functions comprise a common sub-portion of components between the two or more fixed-point operations, floating-point operations, or combination thereof; and

mapping the one or more operationally shareable sub-functions to the two or more fixed-point operations, floating-point operations, or combination thereof, such that the operationally shareable sub-functions are shared between the two or more fixed-point operations, floating-point operations, or the combination thereof, by:

determining whether the patterns may be shared based upon mutually exclusive calls of the two or more fixed-point operations, floating-point operations, or the combination thereof;

determining whether the patterns may be overclocked when the patterns may not be shared; and

implementing a shared overclocked pattern for the two or more fixed-point operations, floating-point operations, or the combination thereof, when the patterns may be overclocked.

2. The method of claim 1 , comprising:

designing at least one of the fixed-point operations, the floating-point operations, or any combination thereof, with a shareable sub-function that may be used by multiple fixed-point operations, floating-point operations, or any combination thereof.

3. The method of claim 1 , comprising:

determining whether efficiency of the fixed-point operations and floating-point operations or conservation of programmable logic of the IC is more important;

implementing a first version of at least one of the fixed-point operations or floating-point operations for efficiency when the efficiency is more important; and

implementing a second version of the at least one of the fixed-point operations or floating-point operations designed for sharing sub-functions when the conservation is more important.

4. A computer-implemented method of claim 1 , comprising:

reducing an amount of programmable logic needed to implement instructions on programmable logic of an integrated circuit (IC) by:

implementing a set of fixed-point operations, floating-point operations, or a combination thereof via a sub-library that comprises one or more sub-operations that are typically found in fixed-point operations, floating-point operations, or a combination thereof;

wherein the one or more sub-operations comprise floating-point addition with 1.0, floating-point subtraction from 1.0, or both;

wherein the floating-point addition with 1.0 comprises:

determining whether an addend is less than 1;

if the addend is not less than 1, using a standard floating-point addition operation;

if the addend is less than 1, denormalizing the addend; and

inverting a position of an implied leading 1 of the denormalized addend; or

wherein when the one or more sub-operations comprise floating-point addition with 1.0, the floating-point addition with 1.0 comprises:

determining whether an addend is less than 1;

if the addend is not less than 1, using a standard floating-point addition operation;

if the addend is less than 1, denormalizing the addend; and

inverting a position of an implied leading 1 of the denormalized addend; or

both.

5. The method of claim 4 , comprising:

generating the sub-library and implementing the fixed-point operations, the floating-point operations, or the combination thereof via the sub-library; wherein generating the sub-library comprises determining mathematical functions with a priori information regarding inputs that are typically used in the mathematical functions and implementing the functions with the inputs in a library.

6. A computer-implemented method, comprising:

reducing an amount of programmable logic needed to implement instructions on programmable logic of an integrated circuit (IC) by:

identifying one or more operationally shareable sub-functions of two or more fixed-point operations, floating-point operations, or a combination thereof, the operationally sharable sub-functions comprising a common sub-portion of components between the two or more fixed-point operations, floating-point operations, or combination thereof;

mapping the one or more operationally shareable sub-functions to the two or more fixed-point operations, floating-point operations, or combination thereof, such that the operationally shareable sub-functions are shared between the two or more fixed-point operations, floating-point operations, or the combination thereof;

implementing a second set of fixed-point operations, floating-point operations, or a combination thereof via a sub-library that comprises one or more sub-operations that are typically found in the fixed-point operations, the floating-point operations, or the combination thereof;

implementing a power series problem via a structured first bank of coefficients configured to hold multiple second banks of coefficients; wherein the first bank is selected by a function index of the power series problem and the second bank is selected by an exponent of the power series problem; or

any combination thereof; and

implementing the floating-point operations by:

decomposing functions into sub-ranges by range reduction;

calculating the sub-ranges; and

combining the sub-ranges using an identity;

wherein at least one of the sub-ranges is calculated using Homer's rule based upon the first bank of coefficients configured to hold the multiple second banks of coefficients; wherein the first bank is selected by a function index of the power series problem and the second bank is selected by an exponent of the power series problem.

7. An integrated circuit (IC) device comprising:

internal memory configured to store a kernel program; and

the kernel program stored in the internal memory, comprising complex fixed-point operations, complex floating-point operations, or a combination thereof that comprise one or more sub-operations;

wherein the one or more sub-operations comprise a common pattern of components between the complex fixed-point operations, complex floating-point operations, or combination thereof;

wherein when the common pattern cannot be shared based upon mutually exclusive calls between two or more complex fixed-point operations, complex floating-point operations, or combination thereof, but can be overclocked, the sub-operations are operationally overclocked for use in the two or more complex fixed-point operations, complex floating-point operations, or combination thereof; and

wherein when the one or more of the one or more sub-operations are operationally shareable based upon the mutually exclusive calls between the two or more complex fixed-point operations, complex floating-point operations, or combination thereof, the one or more sub-operations are operationally shared between the mutually exclusive calls between the two or more complex fixed-point operations, complex floating-point operations, or combination thereof, to conserve an amount of the internal memory needed to store the complex fixed-point operations, the complex floating-point operations, or the combination thereof.

8. The IC device of claim 7 , wherein the sub-operations comprise a pattern of identical operations in two or more of the complex fixed-point operations, the complex floating-point operations, or the combination thereof.

9. The IC device of claim 8 , wherein the shared operations comprise at least one of addition with 1.0 or subtraction from 1.0.

10. The IC device of claim 7 , wherein the sub-operations comprise a pattern of operations in two or more of the complex fixed-point operations, the complex floating-point operations, or the combination thereof, wherein the pattern of operations may account for a relationship between two or more operations, the relationship representing that the two or more operations may be implemented in a similar manner.

11. The IC device of claim 7 , wherein the sub-operations comprise one or more shared operations sourced from a sharing library, the shared operations defining functions with typical inputs that are often used in the complex fixed-point operations, the complex floating-point operations, or the combination thereof.

12. A tangible, non-transitory, computer-readable medium, comprising instructions to:

accept a high level program comprising functionality for implementation on an integrated circuit (IC);

determine and cause implementation of a kernel implementation for the IC, wherein the kernel implementation comprises two or more fixed-point operations, floating-point operations, or a combination thereof with at least one operationally shared sub-operation to conserve an amount of internal memory needed to implement the fixed-point operations, the floating-point operations, or the combination thereof, by:

determining whether the sub-operation can be shared when invocations of the fixed-point operations, the floating point operations, or combination thereof are not mutually exclusive;

when the sub-operation can be shared when the invocations are not mutually exclusive, share the sub-operation between the invocations;

when the sub-operation cannot be shared when the invocations are not mutually exclusive:

determine whether the sub-operation can be overclocked when the sub-operation cannot be shared; and

implement the sub-operation for two of the fixed-point operations, floating-point operations, or a combination thereof using an overclocked sub-operation when the sub-operation can be overclocked;

wherein the at least one shared sub-operation comprises a common sub-portion of components between the two or more fixed-point operations, floating-point operations, or combination thereof.

13. The computer-readable medium of claim 12 , comprising instructions to:

determine a priority in a tradeoff between execution efficiency and internal memory conservation;

supply a first kernel implementation with a first version of at least one of the fixed-point operations, the floating-point operations, or a combination thereof, configured to enhance execution efficiency when the priority is execution efficiency; and

supplying a second kernel implementation with a second version of at least one of the fixed-point operations, the floating-point operations, or a combination thereof, configured to enhance conservation of internal memory when the priority is to conserve the amount of internal memory.

14. The computer-readable medium of claim 12 , comprising instructions to:

determine that the sub-operation can be shared when invocations of the two or more fixed-point operations, floating-point operations, or the combination thereof are mutually exclusive; and

determine that the sub-operation cannot be shared when the invocations are not mutually exclusive.

15. The computer-readable medium of claim 12 , comprising instructions to:

obtain the sub-function from a sub-function library configured to store a plurality of sub-functions that are commonly used in fixed-point operations, floating-point operations, or a combination thereof.

16. The computer-readable medium of claim 15 , comprising instruction to:

obtain the sub-function from the sub-function library; wherein the sub-function comprises addition with 1.0 or subtraction with 1.0.

17. The computer-readable medium of claim 12 , comprising instructions to:

select the at least one shared sub-operation from a plurality of shareable sub-operations based upon an analysis of tradeoffs between programmable logic savings and routing savings.

18. A tangible, non-transitory, computer-readable medium, comprising instructions to:

accept a high level program comprising functionality for implementation on an integrated circuit (IC);

determine and cause implementation of a kernel implementation for the IC, wherein the kernel implementation comprises two or more fixed-point operations, floating-point operations, or a combination thereof with at least one operationally shared sub-operation to conserve an amount of internal memory needed to implement the fixed-point operations, the floating-point operations, or the combination thereof;

decompose at least one of the fixed-point operations, floating-point operations, or a combination thereof into sub-ranges by range reduction;

calculate the sub-ranges; and

combine the sub-ranges using an identity;

wherein the at least one shared sub-operation comprises a common sub-portion of components between the two or more fixed-point operations, floating-point operations, or combination thereof; and

wherein the sub-operation comprises a calculation of at least one of the sub-ranges based upon Horner's rule using a first bank of coefficients configured to hold multiple second banks of coefficients; wherein the first bank is selected by a function index of a power series problem and the second bank is selected by an exponent of the power series problem.

Assignments (2)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2013
From: LANGHAMMER, MARTIN; CZAJKOWSKI, TOMASZ
To: ALTERA CORPORATION
Reel/Frame 030035/0716 →