WO2014023871A1 - Aparato y método para calcular operaciones de potenciación y extracción de raíces - Google Patents

Aparato y método para calcular operaciones de potenciación y extracción de raíces Download PDF

Info

Publication number
WO2014023871A1
WO2014023871A1 PCT/ES2013/070586 ES2013070586W WO2014023871A1 WO 2014023871 A1 WO2014023871 A1 WO 2014023871A1 ES 2013070586 W ES2013070586 W ES 2013070586W WO 2014023871 A1 WO2014023871 A1 WO 2014023871A1
Authority
WO
WIPO (PCT)
Prior art keywords
calculation
root
digits
radix
unit
Prior art date
Application number
PCT/ES2013/070586
Other languages
English (en)
French (fr)
Inventor
Javier DÍAZ BRUGUERA
Álvaro VÁZQUEZ ÁLVAREZ
Original Assignee
Universidade De Santiago De Compostela
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidade De Santiago De Compostela filed Critical Universidade De Santiago De Compostela
Priority to EP13827706.6A priority Critical patent/EP2884403A1/en
Publication of WO2014023871A1 publication Critical patent/WO2014023871A1/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3852Calculation with most significant digit first
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Definitions

  • the embodiments shown refer to computing devices and methods. More specifically, the embodiments shown refer to apparatus and methods for calculating root enhancement and extraction operations.
  • the embodiments shown include an apparatus for the general calculation of root enhancement and extraction operations comprising (a) a plurality of memory elements; and (b) a hardware processor configured to calculate the enhancement operation X z of a floating point number X, where Z is an unrestricted exponent.
  • the exponent without restrictions can be a fixed point or floating point number.
  • the exponent can be the inverse of a number to calculate q-th roots within the same hardware processor.
  • the hardware processor comprises a multiplexer unit, a reciprocal unit, a logarithmic unit, an exponential unit, a multiplication unit, a displacement unit, or a combination of all of them.
  • the reciprocal unit, logarithmic unit and the multiplication unit are configured to perform the calculations concurrently, and the exponential unit is configured to perform the calculations online.
  • the units Reciprocal, logarithmic and multiplication are configured to perform the calculations starting with the most significant digit.
  • the embodiments shown also include methods for calculating functions of potentiation and extraction of general roots.
  • Figure 1 is a sequence of operations to calculate the potentiation function X z , with a fixed point exponent Z according to one embodiment.
  • Figure 2 is a block diagram of a processor for calculating the potentiation function X z , with a fixed point exponent Z according to one embodiment.
  • Figure 3 is a sequence of operations to calculate X and Y being number of simple precision floating points according to one embodiment.
  • Figure 4 shows a method for moving the logarithm according to one embodiment.
  • Figure 5 is a block diagram of a processor for calculating the potentiation function X z , with an exponent Z at a fixed point or floating point according to one embodiment.
  • the microprocessors have a general structure to carry out common operations, such as access to memory, execution of software instructions, control of peripherals and arithmetic calculations.
  • the complexity of some operations, such as square root, cubic root or reciprocal calculation, does not allow the incorporation of specific hardware to perform these operations within the microprocessor. Therefore, current microprocessors incorporate floating point units, from English Floating Point Unit (FPU), to carry out complex operations such as square root or floating point number division.
  • FPU Floating Point Unit
  • the functionality of the FPUs is limited, since they cannot implement a large number of operations and complex operations must be carried out using a software solution.
  • the software solution degrades the overall system performance and slows the calculations.
  • the embodiments shown include an apparatus and a method that calculates general enhancement operations and q-th roots.
  • the embodiments shown, and without limitation, include methods and apparatus for calculating powers and roots X Y , where X and Y are floating point numbers e
  • n-bits that is, the n bits of the
  • the apparatus that calculates the power Z or the Z-th root of a number X comprises: (a) a plurality of memory elements, such as registers, which store a number X whose power Z or root Zth calculates the device, a fixed point number Z indicating the exponent of the power or root, the number of significant bits of the number X and the result of the calculation, the operation carried out, power calculation Z or Z-th root and the exponent Z; (b) a reciprocal calculation unit that calculates the reciprocal of Z obtaining a number A; (c) a logarithmic unit that calculates the logarithm in base 2 of the number X resulting in a number B; (d) a unit of multiplication that calculates the product of the numbers A and B resulting in a number C; and (e) an exponential unit that calculates the exponential of the number C, thus obtaining the result of the operation.
  • a plurality of memory elements such as registers, which store a number X whose power Z or root Zth calculates
  • the reciprocal calculation unit operates in parallel with the logarithmic unit, the operations of the logarithmic unit and the multiplication unit overlap during calculations, the exponential unit calculates the exponential on an online basis and the unit Logarithmic and the unit of multiplication calculate the logarithm and the product starting with the most significant bit.
  • the architecture of the apparatus comprises a reciprocal calculation unit with truth table, a logarithmic unit with a high radix a left-right multiplier without carry, from the English left-to-right carry-free (LRCF), a conversion unit, and an exponential unit of elevated radix.
  • the architecture of the apparatus comprises a word length offset unit, a high radix reciprocal unit, a high radix logarithmic unit, a high radix multiplication unit, a conversion unit and an exponential radix unit high.
  • Figure 2 shows the block diagram of the apparatus that calculates X z according to one embodiment.
  • the thickest lines represent operands of high word length (around n bits), the finest lines represent operands of small word length (around b, where the radix is used, or bits) and double lines represent digits
  • FIG. 1 shows the sequence of operations that involve the calculation of the potentiation function X z with a fixed point exponent according to one embodiment.
  • the apparatus is shown for root enhancement and calculation operations, with a fixed point exponent and a generic radix
  • the number X is represented in double or single floating precision according to the IEEE-754 standard.
  • the calculation of the Z-th power or the Z-th root in a hardware processor comprises: (a) storing a number X in a first memory element of the processor, where X is a number whose Z-th power or Z-th root is to be calculated; (b) storing the number Z in a second processor memory element, where Z is a fixed point number indicating the exponent of the enhancement or the root extraction operation; (c) storing the number of significant bits of the number X and the result of the calculation in a third element of processor memory; (d) store the operation to be carried out, enhancement or root, in a fourth element of processor memory; (e) store the exponent of the number Z in a fifth memory element; (f) calculate the reciprocal of the number Z whose result is a number A; (g) calculate the logarithm in base 2 of the number X whose result is a number B; (h) calculate the product of the numbers A and B whose result is a C number; (i) separate the whole and
  • the calculation of the exponential and the product overlap; product calculation and logarithm overlap; the number X is a floating number with double or simple precision according to the IEEE-754 standard; and the processor is chosen from the group consisting of integrated circuits, FPGA device, microprocessor, microcontroller, digital signal processor (DSP), graphic processing unit (GPU) and general purpose processor.
  • DSP digital signal processor
  • GPU graphic processing unit
  • the method is derived as follows:
  • integers of Z x S is greater for what for In the case of root extraction, the number of integer bits depends only on but in empowerment operations it also depends on and.
  • sequence of operations of the method is:
  • the number of stages of the multiplication logarithm are different for potentiation and for root extraction, in fact, from the error analysis, in this case, the calculation of the potentiation operation requires an additional stage of logarithm calculation. and multiplication with respect to the root extraction operation.
  • several multipliers are introduced in the first stage in the processor as indicated in Figure 1. The number of digits in the integer part is for empowerment and
  • the apparatus for calculating the Z-th power or the Z-th root of a number X comprises: (a) a plurality of memory elements, such as registers, for storing the X number whose Z-th power or Z-th root is to be calculated, a fixed-point or floating-point Z number that indicates the power or root exponent, the number of significant bits of the X number and the calculation result , the operation to be carried out, root enhancement or calculation and the exponent of Z; (b) a reciprocal calculation unit that calculates the reciprocal of Z whose result is a number A; (c) a logarithmic unit that calculates the logarithm in base 2 of the number X whose result is a number B; (d) a unit of displacement that displaces the number B in case Z is a floating point number, the result of which is a number B '; (e) a unit of multiplication that calculates the product of the numbers A and B or B ', whose result is
  • the reciprocal unit operates in parallel with the logarithmic unit, the operations of the logarithmic unit and the multiplication unit are superimposed, the exponential unit calculates the exponential on an online basis, the logarithmic unit calculates the logarithm starting by the most significant digit, the offset is calculated by starting with the most significant digit, and / or the multiplication unit calculates the product starting with the most significant digit.
  • the architecture of the apparatus comprises an exponent selection unit, an operation selection unit, a reciprocal truth table unit, a high radix logarithmic unit, an LRCF multiplier, a conversion unit and an exponential unit of elevated radix.
  • the architecture of the apparatus comprises a word length shift unit, a high radix reciprocal calculation unit, a high radix logarithmic unit, a high radix multiplication unit, a conversion unit and a exponential unit of elevated radix.
  • Figure 5 shows the block diagram that calculates X z for general exponents. In a particular embodiment the number X is represented in double or single floating precision according to the IEEE-754 standard. D. Method for floating point exponent
  • the calculation of the Z-th power or the Z-th root in a hardware processor comprises: (a) storing a number X in a first processor memory elements, where X is a number whose power Z-th or Z-th root is to be calculated; (b) storing the number Z in a second processor memory element, where Z is a fixed point or floating point number indicating the exponent of the enhancement or the root extraction operation; (c) storing the number of significant bits of the number X and the result of the calculation in a third element of processor memory; (d) store the operation to be carried out, enhancement or root, in a fourth element of processor memory; (e) store the exponent of the number Z in a fifth memory element; (f) calculate the reciprocal of the Z number whose result is an A number; (g) calculate the logarithm in base 2 of the number X whose result is a number B; (h) shift the number B, in case Z is a floating point number, whose result is a number B '; (
  • the calculation of the exponential and the product overlap; product calculation and logarithm overlap; the number X is represented in double or single floating precision according to the IEEE-754 standard; and the processor is chosen from the group consisting of integrated circuits, FPGA device, microprocessor, microcontroller, digital signal processor (DSP), graphic processing unit (GPU) and general purpose processor.
  • DSP digital signal processor
  • GPU graphic processing unit
  • the function will be calculated where X and Y are floating point numbers,. Substituting the exponent
  • sequence of operations of the method is:
  • the latency is p ara n r bits of precision.
  • LZD Leading-Zero Detectors
  • LOD English Leading-One detector
  • the practical range of for enhancement is limited to:
  • the offset is divided into two parts: (1) a right shift of radix-r digits and (2) a binary offset to
  • the digit enters positions to the right of the digit
  • the digits move to the left, one digit each cycle.
  • the position of the entry digits to the register is determined based on and Two cases are identified:
  • the integer part is nonzero, which corresponds to the maximum
  • the displaced logarithm S has digits. The most significant bit allows to detect the overflow (if then there is

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)

Abstract

La invención muestra un método y un aparato para el cálculo general de operaciones de potenciación. El método está basado en la optimización del cálculo X z = 2 ΖxlogX . El aparato comprende una pluralidad de elementos de memoria; y un procesador hardware configurado para calcular la operación de potenciación Xz de un número en punto flotante X, donde Z es un exponente sin restricciones. El exponente sin restricciones puede ser un número en punto fijo o punto flotante. Además, el exponente puede ser el inverso de un número lo que permite calcular raíces dentro del mismo procesador aparato. El aparato incluye todos los elementos necesarios para calcular Xz.

Description

Aparato y método para calcular operaciones de potenciación y extracción de raíces
SECTOR TÉCNICO DE LA INVENCIÓN
Las realizaciones mostradas se refieren a aparatos y métodos de computación. Más concretamente, las realizaciones mostradas se refieren a aparatos y métodos para el cálculo de operaciones de potenciación y extracción de raíces.
ESTADO DE LA TÉCNICA
El diseño de unidades funcionales para el cálculo de potencias y raíces q-ésimas (Xz, Z = p o Z = 1/q, donde p y q son enteros) es un reto importante desde hace varios años. Las operaciones de potenciación y de cálculo de raíz q-ésima se emplean con mucha frecuencia en los campos de computación gráfica, procesado digital de señales y cálculos científicos. Estas operaciones incluyen la raíz cuadrada
Figure imgf000003_0003
raíz cuadrada inversa
Figure imgf000003_0005
raíz cúbica
Figure imgf000003_0001
raíz cúbica inversa
Figure imgf000003_0002
cuadrado
Figure imgf000003_0004
cuadrado inverso
Figure imgf000003_0006
recíproco exponencial y otras operaciones menos frecuentes pero también
Figure imgf000003_0007
importantes.
Existen varias arquitecturas para el cálculo de exponenciales y logaritmos; sin embargo el cálculo preciso de operaciones de potenciación y de extracción de raíces en punto flotante es una tarea complicada. Los prohibitivos requerimientos hardware de una implementación basada en tablas y la complejidad intrínseca de los algoritmos basados en la recurrencia de dígitos han provocado que se hayan propuesto soluciones parciales al cómputo de este tipo de operaciones en las que la computación se lleva a cabo para un exponente fijo o para una precisión muy baja. La aproximación tradicional para las operaciones de potenciación o cálculo de raíz q-ésima ha sido el desarrollo de unidades funcionales para la computación de un exponente o raíz particular. Así, hay un gran número de algoritmos e implementaciones para los exponentes más frecuentes tales como recíprocos, raíz cuadrada o inverso de raíz cuadrada, que incluyen algoritmos de recurrencia de dígitos de convergencia lineal y métodos de convergencia cuadrática basados en multiplicación, tales como los algoritmos de Newton-Raphson y Goldschmidt. También existen varias aproximaciones para el cálculo de otros exponentes derivados de la aplicación de métodos generales para la evaluación de potencias.
En general, el cálculo de una potencia o raíz q-ésima con una precisión muy baja se puede llevar a cabo utilizando una tabla, pero los elevados requerimientos de memoria hacen que esta aproximación sea muy ineficiente para un número en punto flotante con precisión simple o doble. Las aproximaciones racionales y polinómicas representan otra aproximación para el cálculo de potencias y raíces q-ésimas. Sin embargo, uno de los métodos más eficientes para el cálculo de estas operaciones con números en punto flotante son los algoritmos dirigidos por tabla, que están a medio camino entre los las aproximaciones basadas en tablas y las basadas en aproximaciones racionales y polinómicas.
Existen aproximaciones polinómicas de primer y segundo orden basadas en expansiones de Taylor para el cálculo de un número limitado de potencias y raíces, entre ellas raíz cuadrada, recíproco de raíz cuadrada, potencia cuarta, etc., tal y como se describe en Powering by a Table Look-Up and a Multiplication with Operand Modificaction, N. Tagaki, IEEE Transactions on Computers, vol. 47, no. 11 , pp. 1216-1222, Nov. 1998; Faithful Powering Computation using Table Lookup and Fused Accumulation Tree, J.A. Piñero, J.D. Bruguera and J.M. Muller, Proceedings 15th IEEE Symposium on Computer Arithmetic, pp. 40-47, Jun- 2001; y High Performance architectures for elementar/ function generation, J. Cao, B.W.Y. Wei y J. Cheng, Proceedings 15th IEEE Symposium on Computer Arithmetic, pp. 136-144, Jun. 2001 , pero estas implementaciones requieren replicar la tabla de almacenamiento de los coeficientes y no se pueden considerar como unidades de cálculo de raíces q-ésimas. Un método de recurrencia de dígitos para el cálculo de la raíz q-ésima se presentó en An Digit-by-Digit Algorithm for m-th Root Extraction, P. Montuchi, J.D. Bruguera, L. Ciminiera y J.A. Piñeiro, IEEE Transactions on Computers, vol.56, no. 12, pp. 1696-1706, Dec. 2007, y particularizado para el cálculo en radix 2 de raíces cúbicas en A Radix-2 Digit-byDigit Architecture for Cube Root, J.A. Piñeiro, J.D. Bruguera, F. Lamberti, P. Montuschi, IEEE Transactions on Computers, vol. 57, no.4, pp. 562-566., Apr. 2008. La complejidad de las arquitecturas depende de q, con lo que para valores mayores de q hay una mayor complejidad. En consecuencia, una arquitectura para la computación de valores elevados de q en operaciones de raíz q-ésimas es muy compleja. También existen otras implementaciones de métodos de recurrencia de dígitos para el cálculo de raíces cuadradas y cúbicas presentado en Digit-byDigit Methods for Computing Certain Functions, M.D. Ergovac, 41 st Asilomar Conference on Signáis, Systems and Computers, pp. 338-342, Nov. 2007; y A Digit-Recurrence Algorithm for Cube Rooting, N. Tagaki, IEICE Transactions on Fundamental of Electronics, Communications and Computer Sciences, vol. E84-A, no 5, pp. 1309-1314, May 2001. Se debe resaltar el hecho de que todos los métodos indicados hasta ahora para el cálculo de una potencia o de una raíz q-ésima están orientados a realizar el cálculo para un exponente fijo. Esto implica que la arquitectura resultante no se puede emplear para calcular potencias o raíces distintas de aquella para la que ha sido diseñada. Para adaptar la arquitectura a una potencia o raíz diferente hay que realizar cambios en las, del inglés Look-up Table (LUT), en el caso de aproximaciones polinómicas basadas en tabla, o diseñar una nueva arquitectura, en el caso de métodos de recurrencia de dígitos. Las aproximaciones polinómicas basadas en tabla se pueden adaptar para calcular más de una potencia o raíz, pero esto requiere replicar las tablas. De todos modos, los métodos indicados no se puede considerar que sean métodos generales para el calculo de potencias o raíces q-ésimas.
La única arquitectura encontrada en el estado de la técnica para el cálculo de raíces q- ésimas para cualquier q se describe en Algorithm and architecture for Logarithm, Exponential and Powering Computation, J.A. Piñeiro, M.D. Ergovac and J.D. Bruguera, IEEE Transactions on Computers, vol. 53, no. 9, pp. 1085-1096, Sep. 2004, y fue diseñada para el cálculo de potencias Xp, con p entero, basado en una cadena logaritmo- multiplicación-exponencial acelerada por el uso de redundancia y aritmética on-line, y extendidas para el cálculo de
Figure imgf000005_0001
Sin embargo, la implementación de la arquitectura extendida para la raíz q-ésima es muy compleja, porque además de las operaciones en cadena, se incluye una división entera ya que se requiere el cálculo del resto de la división.
DESCRIPCIÓN DE LA INVENCIÓN
Las realizaciones mostradas incluyen un aparato para el cálculo general de operaciones de potenciación y extracción de raíces que comprende (a) una pluralidad de elementos de memoria; y (b) un procesador hardware configurado para calcular la operación de potenciación Xz de un número en punto flotante X, donde Z es un exponente sin restricciones. El exponente sin restricciones puede ser un número en punto fijo o punto flotante. Además, el exponente puede ser el inverso de un número para calcular raíces q- ésimas dentro del mismo procesador hardware. De acuerdo a una realización, el procesador hardware comprende una unidad multiplexora, una unidad recíproca, una unidad logarítmica, una unidad exponencial, una unidad de multiplicación, una unidad de desplazamiento, o una combinación de todas ellas. La unidad recíproca, unidad logarítmica y la unidad de multiplicación están configuradas para llevar a cabo los cálculos concurrentemente, y la unidad exponencial está configurada para llevar a cabo los cálculos de forma on-line. En una realización particular, y sin limitación, las unidades recíproca, logarítmica y de multiplicación están configuradas para realizar los cálculos comenzando por el dígito más significativo. Las realizaciones mostradas también incluyen métodos para calcular funciones de potenciación y extracción de raíces generales.
BREVE DESCRIPCIÓN DE LAS FIGURAS
Las modalidades detalladas en las figuras se ilustran a modo de ejemplo y no a modo de limitación:
La Figura 1 es una secuencia de operaciones para calcular la función de potenciación Xz, con un exponente Z en punto fijo de acuerdo a una realización. La Figura 2 es un diagrama de bloques de un procesador para calcular la función de potenciación Xz, con un exponente Z en punto fijo de acuerdo a una realización.
La Figura 3 es una secuencia de operaciones para calcular
Figure imgf000006_0001
siendo X e Y número en puntos flotante de precisión simple de acuerdo a una realización.
La Figura 4 muestra un método para desplazar el logaritmo de acuerdo a una realización. La Figura 5 es un diagrama de bloques de un procesador para calcular la función de potenciación Xz, con un exponente Z en punto fijo o punto flotante de acuerdo a una realización.
La Figura 6 es un ejemplo de parámetros para el cálculo de potencias y de raíces con un exponente en punto fijo, número de bits de los resultados intermedios y latencias, usando un radix r = 128 y resultados en simple y doble precisión.
La Figura 7 es un ejemplo de parámetros para el cálculo de potencias y de raíces con un exponente en punto flotante, número de bits de los resultados intermedios y latencias, usando un radix r = 128 y resultados en simple y doble precisión.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN
Los microprocesadores tienen una estructura general para llevar a cabo operaciones comunes, tales como acceso a memoria, ejecución de instrucciones software, control de periféricos y cálculos aritméticos. La complejidad de algunas operaciones, tales como la raíz cuadrada, raíz cúbica o cálculo del recíproco no permiten la incorporación de hardware específico para llevar a cabo estas operaciones dentro del microprocesador. Por lo tanto, los microprocesadores actuales incorporan unidades de punto flotante, del inglés Floating Point Unit (FPU), para llevar a cabo operaciones complejas tales como raíz cuadrada o división de número en punto flotante. Sin embargo, la funcionalidad de las FPUs es limitada, ya que no pueden implementar un gran número de operaciones y las operaciones complejas se deben llevar a cabo empleando una solución software. La solución software degrada el rendimiento global del sistema y ralentiza los cálculos. Las realizaciones mostradas incluyen un aparato y un método que calcula operaciones generales de potenciación y raíces q-ésimas.
Las realizaciones mostradas, y sin limitación, incluyen métodos y aparatos para el cálculo de potencias y raíces XY, siendo X e Y números en punto flotante e
Figure imgf000007_0003
siendo los significandos de n-bits (es decir, los n bits de los
Figure imgf000007_0001
Figure imgf000007_0004
significandos que incluyen el bit oculto, y el bit menos significativo, del inglés Less Significant Bit (LSB), tiene un peso de
Figure imgf000007_0002
y los exponentes con signo de
Figure imgf000007_0005
Figure imgf000007_0009
bits, o Y un exponente en punto fijo de
Figure imgf000007_0010
bits de la forma:
Figure imgf000007_0006
siendo y un número entero con signo de bits, con para el cálculo de raíces.
Figure imgf000007_0007
Figure imgf000007_0008
A. Aparato para exponente en punto fijo
De acuerdo a una realización particular, y sin limitación, el aparato que calcula la potencia Z o la raíz Z-ésima de un número X comprende: (a) una pluralidad de elementos de memoria, tales como registros, que almacenan un número X cuya potencia Z o raíz Z- ésima calcula el aparato, un número en punto fijo Z que indica el exponente de la potencia o raíz, el número de bits significativos del número X y del resultado del cálculo, la operación llevada a cabo, cálculo de potencia Z o de raíz Z-ésima y el exponente Z; (b) un unidad de cálculo de recíproco que calcula el recíproco de Z obteniendo un número A; (c) una unidad logarítmica que calcula el logaritmo en base 2 del número X resultando en un número B; (d) una unidad de multiplicación que calcula el producto de los número A y B resultando en un número C; y (e) un unidad exponencial que calcula la exponencial del número C, obteniendo así el resultado de la operación. En realizaciones particulares, la unidad de cálculo del recíproco opera en paralelo con la unidad logarítmica, las operaciones de la unidad logarítmica y la unidad de multiplicación se superponen durante los cálculos, la unidad exponencial calcula la exponencial siguiendo una base on-line y la unidad logarítmica y la unidad de multiplicación calculan el logaritmo y el producto comenzando por el bit más significativo. De acuerdo a una realización particular, tal y como se muestra en la Figura 2, la arquitectura de los aparatos comprende una unidad de cálculo del recíproco con tabla de verdad, un unidad logarítmica de radix elevado
Figure imgf000008_0002
Figure imgf000008_0001
un multiplicador izquierda-derecha sin acarreo, del inglés left-to-right carry-free (LRCF), una unidad de conversión, y una unidad exponencial de radix elevado. En una realización alternativa la arquitectura del aparato comprende una unidad de desplazamiento de longitud de palabra, una unidad recíproca de radix elevado, una unidad logarítmica de radix elevado, una unidad de multiplicación de radix elevado, una unidad de conversión y una unidad exponencial de radix elevado. La Figura 2 muestra el diagrama de bloques del aparato que calcula Xz de acuerdo a una realización. Las líneas más gruesas representan operandos de longitud de palabra elevada (alrededor de n bits), las líneas más finas representan operandos de longitud de palabra pequeña (alrededor de b, donde es el radix empleado, o bits) y las líneas dobles representan dígitos
Figure imgf000008_0004
Figure imgf000008_0003
redundantes con signo de radix elevado en un formato borrow-save. El resultado es una conversión de los dígitos con signo con radix r. Además, un sumador borrow-save se puede implementar como un sumador de acarreo almacenado, del inglés Carry Save Adder (CSA). La Figura 1 muestra la secuencia de operaciones que involucran el cálculo de la función de potenciación Xz con un exponente en punto fijo de acuerdo a una realización. A modo ilustrativo, el aparato se muestra para las operaciones de potenciación y cálculo de raíz, con un exponente en punto fijo y un radix genérico
Figure imgf000008_0005
En una realización particular el número X se representa en precisión flotante doble o simple de acuerdo al estándar IEEE-754.
B. Método para un exponente en punto fijo
De acuerdo a una realización particular, el cálculo de la potencia Z-ésima o de la raíz Z- ésima en un procesador hardware comprende: (a) almacenar un número X en un primer elemento de memoria del procesador, donde X es un número cuya potencia Z-ésima o raíz Z-ésima se va a calcular; (b) almacenar el número Z en un segundo elemento de memoria del procesador, donde Z es un número de punto fijo que indica el exponente de la potenciación o de la operación de extracción de raíz; (c) almacenar el número de bits significativos del número X y del resultado del cálculo en un tercer elemento de memoria del procesador; (d) almacenar la operación que se va a llevar a cabo, potenciación o raíz, en un cuarto elemento de memoria del procesador; (e) almacenar el exponente del número Z en un quinto elemento de memoria; (f) calcular el recíproco del número Z cuyo resultado es un número A; (g) calcular el logaritmo en base 2 del número X cuyo resultado es un número B; (h) calcular el producto de los número A y B cuyo resultado es un número C; (i) separar la parte entera y fraccionaria del número C; y G) calcular la exponencial del número C. En una realización particular, el cálculo del la exponencial y del producto se solapan; el cálculo del producto y el logaritmo se solapan; el número X es un número flotante con precisión doble o simple de acuerdo al estándar IEEE-754; y el procesador se escoge de entre el grupo consistente en circuitos integrados, dispositivo FPGA, microprocesador, microcontrolador, procesador digital de señal (DSP), unidad de procesamiento gráfico (GPU) y procesador de propósito general.
De acuerdo a una realización particular, y sin limitación, el método se deriva como sigue:
considerando que X es un número en punto flotante esta ecuación se puede reescribir como:
Figure imgf000009_0002
donde es la concatenación de los dígitos de Ex (valor entero) y
Figure imgf000009_0004
Figure imgf000009_0003
[0,1). De acuerdo a (2),
Figure imgf000009_0009
de puede calcular como la secuencia de operaciones: (1) logaritmo del significando (2) suma de (concatenación de cadenas
Figure imgf000009_0005
Figure imgf000009_0006
binarias); (3) multiplicación del resultado de (2) por Z; y (4) cálculo de la exponencial del resultado de la multiplicación. Para una implementación eficiente, las operaciones se solapan. Esto requiere un modo de operación izquierda-derecha dígito más significativo primero, del inglés left-to-right most-significand digit first (MSDF), y el uso de representación redundante. Se utiliza una representación con signo radix-r con un conjunto máximo de dígitos redundantes {-(r-1), 0, ...(r-1)}.
Una potencial limitación de este método para ciertas aplicaciones es el rango de la función exponencial
Figure imgf000009_0008
Los algoritmos exponenciales de recurrencia de dígitos requieren que el argumento esté dentro del intervalo (-1 , 1), mientras que Z x S puede estar fuera de este rango. Para extender el rango de convergencia y garantizar la convergencia del método, las partes entera y fraccional de Z x S se extraen de forma serie y la ecuación (2) se puede escribir como:
Figure imgf000009_0007
siendo
Figure imgf000010_0005
y las partes entera y fraccional de ZxS, respectivamente. Por lo
Figure imgf000010_0006
tanto, de acuerdo a la ecuación (3), y considerando el significando
Figure imgf000010_0004
M f y el exponente Ef de Xz son:
Figure imgf000010_0003
Figure imgf000010_0001
El argumento de la exponencial está ahora en el rango (-1 , 1). El número de bits
Figure imgf000010_0007
enteros de Z x S es mayor para
Figure imgf000010_0009
que para
Figure imgf000010_0008
En el caso de extracción de raíces, el número de bits enteros depende sólo de
Figure imgf000010_0012
pero en las operaciones de potenciación depende además de y. De acuerdo a una realización, la secuencia de operaciones del método es:
1. Evaluación de (sólo si se extrae la raíz, REC en Figura 1), siendo
Figure imgf000010_0010
Figure imgf000010_0016
el signo de y. Para consideración práctica, una baja precisión para |y| es suficiente y se prefiere una tabla (LUT) para el cálculo de
Figure imgf000010_0011
Por lo tanto, se usa una LUT con
Figure imgf000010_0015
entradas y salidas bits fracciónales, representación binaria no redundante).
Figure imgf000010_0017
2. Evaluación del logaritmo L = log2 M x e [0,1) con una precisión de bts usando un
Figure imgf000010_0014
algoritmo de recurrencia de dígitos de radix elevado. El logaritmo se representa empleando una representación radix-r con signo. Hay que indicar que como el logaritmo en la función de potenciación necesita un paso más que en la extracción de raíces, la primera etapa se evita en el caso de extracción de raíces. 3. Multiplicación T = Z x S. El operando se obtiene
Figure imgf000010_0002
concatenando los dígitos de Ex (dígitos enteros), recodificados a una representación radix-r con signo, y L (bits fracciónales). La multiplicación se evalúa usando un multiplicador LRCF.
4. Extracción serie de la parte entera int(T) y de la parte fraccional frac(T) de 7, y la conversión on-line de int(T) a una representación no redundante. Hay que indicar que el número de dígitos enteros depende de la operación y que se requiere un ciclo para obtener cada uno. Así, el número de dígitos enteros es para extracción de
Figure imgf000010_0013
raices. 5. Cálculo de la exponencial de radix elevado on-line con
Figure imgf000011_0002
Figure imgf000011_0003
con una precisión de bits, y un retardo on-line δ = 2.
Figure imgf000011_0004
El número de etapas del logaritmo de la multiplicación son diferentes para la potenciación y para la extracción de raíces, de hecho, a partir del análisis de errores, en este caso, el cálculo de la operación de potenciación requiere una etapa adicional de cálculo de logaritmo y de multiplicación con respecto a la operación de extracción de raíz. Para acomodar estos dos flujos de datos con diferentes número de etapas para el logaritmo y la multiplicación, y diferente número de dígitos enteros, se introducen varios multiplicadores en la primera etapa en el procesador tal y como se indica en la Figura 1. El número de dígitos en la parte entera es para potenciación y
Figure imgf000011_0005
para extracción de raíces. Como la extracción de raíces requiere obtener Z
Figure imgf000011_0006
el número de ciclos requeridos para obtener la parte entera de ambas operaciones es la misma, Por lo tanto la latencia total viene dada por :
Figure imgf000011_0001
Figure imgf000011_0007
donde es la latencia del cálculo de la exponencial
Figure imgf000011_0009
Figure imgf000011_0008
Para obtener un resultado correctamente redondeado para la potenciación y extracción de raíz los resultados se redondean con un error de 1 ulp con respecto al resultado obtenido. Asumiendo un redondeo al número par más próximo, la precisión requerida y la mínima latencia para cada operación intermedia y la latencia para la operación completa se muestran en la Figura 6. Estos valores están indicados para precisión simple (SP) y precisión doble (DP) con radix r = 128.
C. Aparato para exponente en punto fijo y punto flotante
De acuerdo a una realización particular, y sin limitación, el aparato para calcular la potencia Z-ésima o la raíz Z-ésima de un número X comprende: (a) una pluralidad de elementos de memoria, como por ejemplo registros, para almacenar el número X cuya potencia Z-ésima o raíz Z-ésima se va a calcular, un número Z en punto fijo o punto flotante que indica el exponente de la potencia o la raíz, el número de bits significativos del número X y del resultado del cálculo, la operación que se va a llevar a cabo, potenciación o cálculo de raíz y el exponente de Z; (b) una unidad de cálculo del recíproco que calcula el recíproco de Z cuyo resultado es un número A; (c) una unidad logarítmica que calcula el logaritmo en base 2 del número X cuyo resultado es un número B; (d) una unidad de desplazamiento que desplaza el número B en caso de que Z sea un número en punto flotante, cuyo resultado es un número B'; (e) una unidad de multiplicación que calcula el producto de los números A y B o B', cuyo resultado es un número C; y (f) una unidad exponencial que calcula la exponencial del número C, resultado de la operación. En una realización particular, la unidad recíproca opera en paralelo con la unidad logarítmica, se superponen las operaciones de la unidad logarítmica y la unidad de multiplicación, la unidad exponencial calcula la exponencial siguiendo una base on-line, la unidad logarítmica calcula el logaritmo comenzando por el dígito más significativo, el desplazamiento se calcula en comenzando por el dígito más significativo, y/o la unidad de multiplicación calcula el producto comenzando por el dígitos más significativo. De acuerdo a una realización particular, la arquitectura del aparato comprende una unidad de selección de exponente, una unidad de selección de operación, una unidad de tabla de verdad recíproca, un unidad logarítmica de radix elevado, un multiplicador LRCF, una unidad de conversión y una unidad exponencial de radix elevado. En una realización alternativa, la arquitectura del aparato comprende una unidad de desplazamiento de longitud de palabra, una unidad de cálculo de recíproco de radix elevado, una unidad logarítmica de radix elevado, una unidad de multiplicación de radix elevado, una unidad de conversión y una unidad exponencial de radix elevado. La Figura 5 muestra el diagrama de bloques que calcula Xz para exponentes generales. En una realización particular el número X se representa en precisión flotante doble o simple de acuerdo al estándar IEEE-754. D. Método para exponente en punto flotante
De acuerdo a una realización, el cálculo de la potencia Z-ésima o de la raíz Z-ésima en un procesador hardware comprende: (a) almacenar un número X en un primer elementos de memoria del procesador, donde X es un número cuya potencia Z-ésima o raíz Z-ésima se va a calcular; (b) almacenar el número Z en un segundo elemento de memoria del procesador, donde Z es un número de punto fijo o punto flotante que indica el exponente de la potenciación o de la operación de extracción de raíz; (c) almacenar el número de bits significativos del número X y del resultado del cálculo en un tercer elemento de memoria del procesador; (d) almacenar la operación que se va a llevar a cabo, potenciación o raíz, en un cuarto elemento de memoria del procesador; (e) almacenar el exponente del número Z en un quinto elemento de memoria; (f) calcular el recíproco del número Z cuyo resultado es un número A; (g) calcular el logaritmo en base 2 del número X cuyo resultado es un número B; (h) desplazar el número B, en caso de que Z sea un número en punto flotante, cuyo resultado es un número B'; (i) calcular el producto de los número A y B o B' cuyo resultado es un número C; (j) separar la parte entera y fraccionaria del número C; y (k) calcular la exponencial del número C, obteniendo así el resultado de la operación. En una realización particular, el cálculo de la exponencial y del producto se solapan; el cálculo del producto y el logaritmo se solapan; el número X se representa en precisión flotante doble o simple de acuerdo al estándar IEEE-754; y el procesador se escoge de entre el grupo consistente en circuitos integrados, dispositivo FPGA, microprocesador, microcontrolador, procesador digital de señal (DSP), unidad de procesamiento gráfico (GPU) y procesador de propósito general.
De acuerdo a una realización se va a calcular la función
Figure imgf000013_0001
siendo X e Y números en punto flotante, . Sustituyendo el exponente
Figure imgf000013_0002
en la ecuación 1 por un exponente Y en punto flotante:
Figure imgf000013_0003
De forma similar:
Figure imgf000013_0004
Para usar el mismo multiplicador para ambas operaciones, se normaliza
Figure imgf000013_0005
al intervalo [1 ,2); entonces:
Figure imgf000013_0006
En el caso de que el exponente sea un número en punto fijo, para garantizar la convergencia del algoritmo, la parte entera y la parte fraccional se extraen de forma serie,
Figure imgf000013_0007
siendo Z = Y o Z = 1/Y y
Figure imgf000013_0008
para potenciación y extracción de raíz, respectivamente. La secuencia de operaciones es: (1) cálculo de recíproco para el caso de
Figure imgf000014_0001
extracción de una raíz; (2) evaluación de
Figure imgf000014_0002
(3) desplazamiento del resultado del logaritmo, (4) multiplicación por y (5) cálculo exponencial siguiendo
Figure imgf000014_0004
Figure imgf000014_0003
una base on-line. De acuerdo a una realización, la secuencia de operaciones del método es:
1. Evaluación de sólo en el caso de extracción de raíz, mediante un
Figure imgf000014_0005
método de recurrencia de dígitos. La latencia es p
Figure imgf000014_0007
ara nr bits de precisión.
Figure imgf000014_0006
2. Cálculo de El logaritmo se calcula como dígito a dígito.
Figure imgf000014_0009
Figure imgf000014_0008
Para asegurar la convergencia del logaritmo, los argumentos Ex y Mx se modifican ligeramente. Para reducir el número de iteraciones, se estima el número de ceros/unos a la izquierda,
Figure imgf000014_0011
en y se evitan las primeras iteraciones. Por contra,
Figure imgf000014_0012
Figure imgf000014_0010
una iteración inicial (reducción de rango) se necesita para calcular varias variables. En el primer ciclo, los ceros/unos a la izquierda de la parte fraccional y las partes enteras de L, respectivamente, se obtienen usando detectores de ceros a la izquierda, del inglés
Figure imgf000014_0021
Leading-Zero Detectors (LZD) o detectores de unos a la izquierda, del inglés Leading- One detector (LOD), que permiten calcular el número de iteraciones que se evitan, K, y el número de ceros de la parte entera de KEx. Después de esto, se calcula el logaritmo con
Figure imgf000014_0013
bits de precisión, lo que requiere Λ/, =/~ 'n+nEx+6)/b iteraciones.
3. Desplazar L por El desplazamiento se describe en la sección D.1.
Figure imgf000014_0014
4. Multiplicación en base on-line sin acarreo izquierda-derecha
Figure imgf000014_0015
dependiendo de la operación que se esté llevando a cabo, comenzando
Figure imgf000014_0016
en el ciclo 5 con un retardo on-line
Figure imgf000014_0017
Se debe seleccionar el operando adecuado para llevar a cabo la operación, y en el caso de una implementación independiente de la operación de potenciación el retardo on-line
Figure imgf000014_0018
es cero. Se calcula un dígito significativo adicional T0 para detectar el desbordamiento para desbordamiento).
Figure imgf000014_0019
5. Cálculo on-line de la exponencial
Figure imgf000014_0020
comenzando en el ciclo 7, ya que el retardo on-line de la exponencial es δ = 2. La latericia del método es donde (para el cálculo de la raíz
Figure imgf000015_0001
Figure imgf000015_0002
q-ésima), es la latencia de la operación de cálculo de la
Figure imgf000015_0003
exponencial.
Los desplazamientos
Figure imgf000015_0004
imponen una limitación en el rango de valores soportado de Y (i.e. el desplazamiento no puede producir un valor mayor que el máximo o menos que el mínimo número representable de punto flotante). De acuerdo a una realización particular, el rango práctico de para la potenciación está limitado a:
Figure imgf000015_0007
Figure imgf000015_0005
En el caso de extracción de raíz cuadrada, el rango práctico de está limitado a :
Figure imgf000015_0018
Figure imgf000015_0006
Así, para potenciación
Figure imgf000015_0008
(extracción de raíz) en precisión doble y simple para representación en punto flotante, respectivamente.
Para obtener un valor de la potenciación o de la raíz correctamente redondeado el resultado tiene una precisión 1 ulp con respecto al resultado exacto. Asumiendo un redondeo al par más cercano, los valores de precisión requerida y latencia mínima para cada operación intermedia y la latencia para la operación completa se muestran en la Figura 7. Estos valores son para precisión simple (SP) y precisión doble (DP) con r = 128.
D.1 Método de desplazamiento El cálculo de una potencia y una raíz genéricas, en el método que opera con exponentes en punto fijo y punto flotante, requiere realizar el desplazamiento por
Figure imgf000015_0009
Figure imgf000015_0010
, en el cálculo de cálculo de potencia o por en el caso de extracción de raíz. En
Figure imgf000015_0011
ambos casos el desplazamiento puede ser negativo o positivo.
Para simplificar la representación del desplazamiento se ilustra considerando un desplazamiento por para potenciación, para extracción
Figure imgf000015_0012
Figure imgf000015_0014
de raíz. La Figura 4(A) muestra el formato de Debido a la adición de
Figure imgf000015_0013
Figure imgf000015_0015
hay una parte entera de dígitos en radix-r, de los cuales son ceros a
Figure imgf000015_0017
Figure imgf000015_0016
la izquierda. Si ΚΕχ = χ la parte entera de L es cero, que corresponde a los
Figure imgf000016_0001
casos (1) con (i.e., se filtra el caso
Figure imgf000016_0003
Figure imgf000016_0002
ya que su evaluación es directa). La parte fraccional tiene
Figure imgf000016_0004
ceros a la izquierda radix-r seguidos por dígitos, donde es el número
Figure imgf000016_0005
Figure imgf000016_0006
Figure imgf000016_0024
de 0 o 1 consecutivos más significativos de la parte fraccional de Mx. Los dígitos radix-r que no son ceros de la parte entera y fraccional se denotan como
Figure imgf000016_0007
, respectivamente (i.e., los ceros a la izquierda se evitan durante el cálculo, estos dígitos no se emplean en el cálculo pero están representados para una mejor comprensión del desplazamiento).
Los dígitos del logaritmo se calculan de forma serie, comenzando por el dígito más significativo, y los dígitos de la parte entera y fraccional se obtienen en paralelo, como se muestra en la Figura 4(B). El desplazamiento a la izquierda o derecha se implementa
Figure imgf000016_0010
como un desplazamiento a derecha: como los ceros/unos a la izquierda no se utilizan, el primer dígito que no es un cero de la parte entera y fraccional de L se obtienen simultáneamente en el ciclo 2; esto es equivalente a prealinear L colocando sus
Figure imgf000016_0009
si la parte entera no es cero) o (s\ la parte entera es cero) dígitos a la izquierda,
Figure imgf000016_0008
el máximo desplazamiento posible la izquierda.
El desplazamiento se divide en dos partes: (1) un desplazamiento a la derecha de dígitos radix-r y (2) un desplazamiento binario a
Figure imgf000016_0011
la derecha de bits. El desplazamiento dígito a dígito se lleva a cabo con un registro
Figure imgf000016_0022
de desplazamiento con Ns radix-b dígitos (Figura 4(C)), donde Ns es aproximadamente
Figure imgf000016_0014
(en los casos de interés Todos los dígitos enteros entran en la misma posición
Figure imgf000016_0023
Figure imgf000016_0012
del registro pero en ciclos consecutivos. Ocurre lo mismo para los dígitos fracciónales
Figure imgf000016_0013
Por otro lado, el dígito entra posiciones a la derecha del dígito Los
Figure imgf000016_0017
Figure imgf000016_0016
Figure imgf000016_0015
dígitos se desplazan a la izquierda, un dígito cada ciclo.
La posición de los dígitos de entrada al registro está determinada en función de y
Figure imgf000016_0018
Figure imgf000016_0019
Se identifican dos casos:
1. La parte entera es distinta de cero, que corresponde a El máximo
Figure imgf000016_0020
Figure imgf000016_0021
desplazamiento a la izquierda permitido en L es Entonces, los dígitos entran en el registro en la posición y la salida del registro tiene
Figure imgf000017_0001
Figure imgf000017_0002
ceros/unos a la izquierda.
2. La parte entera es cero, que corresponde a El
Figure imgf000017_0003
Figure imgf000017_0004
desplazamiento máximo permitido a la izquierda en L es
Figure imgf000017_0014
Entonces, los L¡ dígitos se introducen en la posición Una vez que los dígitos han sido
Figure imgf000017_0005
desplazado, hay dígitos ceros/unos a la izquierda en S.
Figure imgf000017_0006
Por lo tanto, el logaritmo desplazado S tiene dígitos. El bit más significativo
Figure imgf000017_0007
Figure imgf000017_0009
permite detectar el desbordamiento (si entonces hay
Figure imgf000017_0008
desbordamiento), los siguientes
Figure imgf000017_0012
dígitos en radix-r corresponden a la parte entera del logaritmo desplazado y los restantes
Figure imgf000017_0013
dígitos radix-r corresponden a la parte fraccional. El desplazamiento binario de se lleva a cabo introduciendo los dígitos
Figure imgf000017_0010
juntos en un registro de desplazamiento a la derecha de b bits y descartando los
Figure imgf000017_0011
b bits más significativos, como se muestra en la Figura 4(D).

Claims

REIVINDICACIONES
1. Un procesador hardware para el cálculo general de
Figure imgf000018_0002
donde X es un número en punto flotante e Y es un exponente en punto flotante, comprende:
Figure imgf000018_0003
a. una unidad de cálculo de recíproco que calcula el valor
Figure imgf000018_0006
b. una unidad logarítmica que calcula el valor el algoritmo se calcula
Figure imgf000018_0005
como
Figure imgf000018_0004
c. una unidad de desplazamiento que desplaza L por
Figure imgf000018_0007
en el caso de cálculo de potencia o por
Figure imgf000018_0008
en el caso de cálculo de raíz, obteniendo un valor S; d. una unidad de multiplicación que calcula el producto en el caso
Figure imgf000018_0010
de cálculo de raíz y en el caso de cálculo de potencia; y
Figure imgf000018_0009
e. una unidad de cálculo exponencial que calcula el valor de frac(T), donde frac indica parte fraccional, que es el resultado de la operación de cálculo de raíz o de cálculo de potencia.
2. El procesador según la reivindicación 1 , en el que la unidad de desplazamiento opera en modo izquierda-derecha dígito más significativo primero, del inglés left-to-right most-significand digit first (MSDF).
3. El procesador según la reivindicación 2 en el que la unidad de desplazamiento izquierda o derecha del logaritmo, que tiene una parte entera de
Figure imgf000018_0011
dígitos en radix-r, donde
Figure imgf000018_0012
es el radix empleado y es el número de bits del
Figure imgf000018_0013
exponente, de los cuales KEx son ceros a la izquierda, y una parte fraccional que tiene ceros a la izquierda seguidos por N| dígitos, donde es el número de
Figure imgf000018_0001
Figure imgf000018_0019
0 o 1 consecutivos más significativos de la parte fraccional de
Figure imgf000018_0020
que comprende: a. desplazador a la derecha de dígitos en radix-r cuando la
Figure imgf000018_0014
parte entera del logaritmo es distinta de cero, o de
Figure imgf000018_0015
dígitos radix-r cuando la parte entera del logaritmo es cero,
Figure imgf000018_0016
Figure imgf000018_0017
b. desplazador binario a la derecha de
Figure imgf000018_0018
4. El procesador según la reivindicación 1 en el que los números X e Y se representan de acuerdo al estándar IEEE-754.
5. Un método del cálculo de la potencia Y-ésima o de la raíz Y-ésima de un número X,
Figure imgf000019_0002
en un procesador hardware, siendo X e Y números en punto flotante,
, que comprende:
Figure imgf000019_0003
a. calcular el término
Figure imgf000019_0009
b. calcular
Figure imgf000019_0004
c. desplazar L por
Figure imgf000019_0005
siendo en el caso de cálculo de potencia y
Figure imgf000019_0010
Figure imgf000019_0006
el caso de cálculo de raíz, obteniendo un valor S;
Figure imgf000019_0007
d. multiplicar en base on-line sin acarreo izquierda-derecha los términos
Figure imgf000019_0012
en el caso de cálculo de potencia, en el caso de cálculo
Figure imgf000019_0011
de raíz; e. separar la parte entera y fraccionaria de T; y f. calcular de forma on-line la exponencial
Figure imgf000019_0008
donde frac indica parte fraccional, que es el resultado de la operación de cálculo de potencia o cálculo de raíz.
6. El método según la reivindicación 5 en el que el desplazamiento se lleva a cabo en modo de operación izquierda-derecha dígito más significativo primero, del inglés left- to-right most-significand digit first (MSDF).
7. El método según la reivindicación 6 en el que el desplazamiento a izquierda o derecha del logaritmo, que tiene una parte entera de dígitos en radix-
Figure imgf000019_0014
r, donde
Figure imgf000019_0013
es el radix empleado, de los cuales
Figure imgf000019_0018
son ceros a la izquierda, y una parte fraccional que tiene ceros a la izquierda seguidos por N| dígitos,
Figure imgf000019_0001
donde es el número de 0 o 1 consecutivos más significativos de la parte fraccional de que comprende: a. realizar un desplazamiento a la derecha de dígitos en radix-
Figure imgf000019_0015
r cuando la parte entera del logaritmo es distinta de cero, o un
Figure imgf000019_0016
desplazamiento a la derecha de dígitos radix-r cuando la
Figure imgf000019_0017
parte entera del logaritmo es cero, ; y
Figure imgf000020_0001
b. realizar un desplazamiento binario a la derecha de
Figure imgf000020_0002
8. El método según la reivindicación 5 en el que los números X e Y se representan de acuerdo al estándar IEEE-754.
PCT/ES2013/070586 2012-08-09 2013-08-08 Aparato y método para calcular operaciones de potenciación y extracción de raíces WO2014023871A1 (es)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP13827706.6A EP2884403A1 (en) 2012-08-09 2013-08-08 Apparatus and method for calculating exponentiation operations and root extraction

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ES201231286A ES2396673B2 (es) 2012-08-09 2012-08-09 Aparato y método para calcular operaciones de potenciación y extracción de raíces
ESP201231286 2012-08-09

Publications (1)

Publication Number Publication Date
WO2014023871A1 true WO2014023871A1 (es) 2014-02-13

Family

ID=47664683

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2013/070586 WO2014023871A1 (es) 2012-08-09 2013-08-08 Aparato y método para calcular operaciones de potenciación y extracción de raíces

Country Status (3)

Country Link
EP (1) EP2884403A1 (es)
ES (1) ES2396673B2 (es)
WO (1) WO2014023871A1 (es)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111630509A (zh) * 2018-01-05 2020-09-04 Ntt电子股份有限公司 运算电路

Non-Patent Citations (10)

* Cited by examiner, † Cited by third party
Title
A. PI IEIRO; J. D. BRUGUERA; F. LAMBERTI; P. MONTUSCHI: "A Radix-2 Digit-by-Digit Architecture for Cube Root", IEEE TRANSACTIONS ON COMPUTERS, vol. 57, no. 4, April 2008 (2008-04-01), pages 562 - 566
J. A. PINEIRO; J. D. BRUGUERA; J. M. MULLER: "Faithful Powering Computation Using Table Lookup and Fused Accumulation Tree", PROCEEDINGS 15TH IEEE SYMPOSIUM ON COMPUTER ARITHMETIC, June 2001 (2001-06-01), pages 40 - 47
J. A. PINEIRO; M. D. ERCEGOVAC; J. D. BRUGUERA: "Algorithm and Architecture for Logarithm, Exponential and Powering Computation", IEEE TRANSACTIONS ON COMPUTERS, vol. 53, no. 9, September 2004 (2004-09-01), pages 1085 - 1096
J. CAO; B. W. Y. WEI; J. CHENG: "High-performance architectures for elementary function generation", PROCEEDINGS 15TH IEEE SYMPOSIUM ON COMPUTER ARITHMETIC, June 2001 (2001-06-01), pages 136 - 144
M. D. ERCEGOVAC: "Digit-by-Digit Methods for Computing Certain Functions", 41ST ASILOMAR CONFERENCE ON SIGNALS, SYSTEMS AND COMPUTERS, November 2007 (2007-11-01), pages 338 - 342
N. TAKAGI: "A Digit-Recurrence Algorithm for Cube Rooting", IEICE TRANSACTIONS ON FUNDAMENTALS OF ELECTRONICS, COMMUNICATIONS AND COMPUTER SCIENCES, vol. E84-A, no. 5, May 2001 (2001-05-01), pages 1309 - 1314
N. TAKAGI: "Powering by a Table Look-Up and a Multiplication with Operand Modification", IEEE TRANSACTIONS ON COMPUTERS, vol. 47, no. 11, November 1998 (1998-11-01), pages 1216 - 1222
P. MONTUSCHI; J. D. BRUGUERA; L. CIMINIERA; J. A. PINEIRO: "An Digit-by-Digit Algorithm for m-th Root Extraction", IEEE TRANSACTIONS ON COMPUTERS, vol. 56, no. 12, December 2007 (2007-12-01), pages 1696 - 1706
PINEIRO, J.-A. ET AL.: "Algorithm and architecture for logarithm, exponential,and powering computation", COMPUTERS, IEEE TRANSACTIONS, vol. 53, no. 9, September 2004 (2004-09-01), pages 1085 - 1096, XP055190648 *
VAZQUEZ, A. ET AL.: "Composite Iterative Algorithm and Architecture for q-th Root Calculation", COMPUTER ARITHMETIC (ARITH), 2011 20TH IEEE SYMPOSIUMON, 25 July 2011 (2011-07-25), pages 52 - 61, XP032036961 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111630509A (zh) * 2018-01-05 2020-09-04 Ntt电子股份有限公司 运算电路
CN111630509B (zh) * 2018-01-05 2023-12-08 Ntt创新器件有限公司 执行积和运算的运算电路

Also Published As

Publication number Publication date
EP2884403A1 (en) 2015-06-17
ES2396673A1 (es) 2013-02-25
ES2396673B2 (es) 2014-01-24

Similar Documents

Publication Publication Date Title
ES2340527T3 (es) Procesador de coma flotante con una subprecision seleccionable.
CN107077415B (zh) 用于执行转换运算的装置和方法
US9753695B2 (en) Datapath circuit for digital signal processors
Schulte et al. Approximating elementary functions with symmetric bipartite tables
RU2412462C2 (ru) Процессор с плавающей запятой с пониженной потребляемой мощностью для выбираемой субточности
Allan et al. Parameterised floating-point arithmetic on FPGAs
JP3891997B2 (ja) 可変幅の符号付きおよび符号なしオペランドのためのモジュラ2進乗算器
US10255041B2 (en) Unified multiply unit
WO2016171847A1 (en) High performance division and root computation unit
Bhardwaj et al. ACMA: Accuracy-configurable multiplier architecture for error-resilient system-on-chip
KR102581403B1 (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
Patil et al. Out of order floating point coprocessor for RISC V ISA
Jaiswal et al. Area-efficient architectures for double precision multiplier on FPGA, with run-time-reconfigurable dual single precision support
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
US20160034256A1 (en) Fast integer division
Bandil et al. Modified restoring array-based power efficient approximate square root circuit and its application
Habegger et al. An efficient hardware implementation for a reciprocal unit
Vazquez et al. A radix-10 SRT divider based on alternative BCD codings
Bruguera Composite iterative algorithm and architecture for q-th root calculation
WO2014023871A1 (es) Aparato y método para calcular operaciones de potenciación y extracción de raíces
Birman et al. Design of a high-speed arithmetic datapath
US20140052767A1 (en) Apparatus and architecture for general powering computation
Putra et al. Optimized hardware algorithm for integer cube root calculation and its efficient architecture
Panda et al. A novel vedic divider architecture with reduced delay for VLSI applications
Arish et al. Run-time-reconfigurable multi-precision floating-point matrix multiplier intellectual property core on FPGA

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13827706

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2013827706

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2013827706

Country of ref document: EP