Processor Execution Unit for Exponential Calculation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing processing resources are inefficient in generating exponential values for neural network processing, particularly in floating-point formats, due to limitations in precision and accuracy, especially when dealing with high precision levels.
Innovation Solution
An execution unit for a processor is designed with multiple multiplier circuits, control circuitry, an exponent register, and look-up tables to efficiently calculate exponential functions by separating and processing integer and fractional parts of the mantissa, allowing for improved precision and accuracy in floating-point formats.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If existing processing resources are used to generate exponential values, then processing can be performed, but precision and accuracy are insufficient especially at high precision levels
Solution Approach 1:
The execution unit segments the exponential calculation into distinct functional blocks: unpacking circuitry that separates mantissa bits, preparation circuitry that processes integer and fractional parts separately, and selective use of lookup tables for fractional components. This segmentation allows each component to be optimized for its specific function, achieving both high precision and accuracy in the final exponential value.
2Measurement precision
If more processing resources are allocated to improve precision, then accuracy improves, but processing efficiency and resource utilization deteriorate
Solution Approach 1:
The execution unit applies partial action by selectively using lookup tables only for the fractional part of the exponent calculation, while the integer part is handled by straightforward arithmetic operations. This partial application of complex resources (lookup tables) where needed and simple operations where sufficient maintains high precision without unnecessarily consuming processing resources, thus preserving efficiency.
Solution Approach 2:
By dividing the calculation into segments that require different levels of computational resources, the design achieves high precision only where necessary (fractional part via lookup tables) while using efficient simple operations for the integer part, optimizing the balance between precision and processing efficiency.
3Measurement precision
If a complex execution unit with multiple multiplier circuits and lookup tables is implemented, then precision and accuracy improve, but device complexity increases
Solution Approach 1:
The execution unit is segmented into distinct functional blocks with specialized responsibilities: unpacking circuitry for input preparation, preparation circuitry for intermediate calculations, and lookup tables for fractional components. This modular segmentation makes the complex device more manageable and potentially more efficient than a monolithic design, as each segment can be independently optimized and implemented.
Solution Approach 2:
The execution unit is designed as a universal floating-point exponential calculator that handles various precision formats (single-precision 32-bit and half-precision 16-bit) through the same architectural structure. The unpacking and preparation circuitry work universally for different input formats, while lookup tables provide format-specific precision, allowing one design to serve multiple precision requirements.
Data Source
AI summary
An execution unit is described which is particularly configured to generate an exponential of an operand floating point format. The operand is multiplied by a fixed multiplicand, logged to the base 2 (e) to generate a multiplication result. An integer part and a fractional part are extracted from the multiplication result. An exponent register stores the integer part to form the exponent of the exponential result. A lookup table has a plurality of entries each providing a value of 2f for a fractional part f used to access a lookup table. The fractional part is derived from a mantissa of the operand. That is, first and second bit sequences are extracted from the mantissa. One of the bit sequences is used to generate an estimated fractional component, and the other is used to access a value from the lookup table.


