Dispositivos coma flotante y conversores.

Dispositivos para convertir números a y desde un formato pre-procesado son propuestos. Un formato en coma fija pre-procesado es un formato en coma fija en el que el LSD de todos los números representados exactamente en dicho formato es igual a B/2

(es decir, 1 para base binaria), y el resto son redondeados a uno de estos números. Un formato en coma flotante pre-procesado es un formato en coma flotante en el que la mantisa es un número en coma fija pre-procesado. Los dispositivos están configurados para ser conectados a unidades aritméticas. Las unidades aritméticas están configuradas para procesar al menos un primer número en coma flotante pre-procesado y generar al menos un segundo número en coma flotante pre-procesado. Los dispositivos están configurados para convertir un número de entrada a dicho al menos primer número en coma flotante pre-procesado o dicho al menos segundo número en coma flotante pre-procesado a un número de salida. En otras realizaciones, métodos son propuestos, ejecutados en sistemas de procesamiento de datos comprendiendo un procesador, para representar números reales en un formato pre-procesado. Los métodos comprenden computar, por el procesador, el mayor número de M dígitos, en base B, menor que el número real y fijar, por el procesador, los M MSDs del número en coma fija de M+1 dígitos igual a los M dígitos de dicho mayor número de M dígitos.

Tipo: Patente de Invención. Resumen de patente/invención. Número de Solicitud: P201430455.

Solicitante: UNIVERSIDAD DE MALAGA.

Nacionalidad solicitante: España.

Inventor/es: HORMIGO AGUILAR,Francisco Javier, VILLALBA MORENO,Julio.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Métodos o disposiciones para el tratamiento de datos... > G06F7/38 (Métodos o disposiciones para efectuar cálculos utilizando exclusivamente una representación numérica codificada, p. ej. utilizando una representación binaria, ternaria, decimal)

PDF original: ES-2546898_A1.pdf

 

google+ twitter facebookPin it
Ilustración 1 de Dispositivos coma flotante y conversores.
Ilustración 2 de Dispositivos coma flotante y conversores.
Ilustración 3 de Dispositivos coma flotante y conversores.
Ilustración 4 de Dispositivos coma flotante y conversores.
Ver la galería de la invención con 11 ilustraciones.
Dispositivos coma flotante y conversores.

Fragmento de la descripción:

Dispositivos coma flotante y conversores La presente invención se refiere al procesamiento de datos y más concretamente a dispositivos para procesar números en coma flotante y los conversores asociados a los mismos.

ESTADO DE LA TÉCNICA En los sistemas de procesado de información, la representación de los números se realiza mediante cadenas binarias. Los bits se pueden organizar en dígitos dependiendo del radix o base.

Los números pueden representarse en varios formatos. Los formatos más utilizados son el formato en coma flotante (FP) y el formato de coma fija (FF) . En formato de coma fija, el cual incluye los números enteros, el número de dígitos fraccionarios y dígitos enteros es fijo. En esta representación, los números negativos se representan típicamente en formato de complemento, respecto de la base. Por ejemplo para números binarios se utiliza un formato de complemento a dos.

En coma flotante, el número se compone de la mantisa (Ma) , la base (B) y el exponente (Ex) . Por lo tanto, el valor (Va) representado sería Va = B * Ma ^ Ex. Entonces, solamente los números Ma y Ex necesitan almacenarse. El formato estándar IEEE-754 es el más extendido. El estándar define cinco formatos básicos que llevan el nombre de su base numérica y el número de bits usados en su codificación de intercambio. La precisión típica de los formatos binarios básicos es un bit más que la anchura de su mantisa (o mantisa) . El bit de precisión extra proviene de un bit a uno implícito (oculto) en la parte más significativa. El número en coma flotante típico estará normalizado tal que el bit más significativo será un uno. Si conocemos que el bit más significativo es uno, entonces no se necesita codificarlo en el formato de intercambio.

Los sistemas para realizar operaciones entre estos números pueden usar una pluralidad de unidades funcionales. Estas unidades pueden realizar transformaciones numéricas como operaciones aritméticas, conversiones de formato, evaluación de funciones, etc. El formato utilizado para representar los números con los que estos circuitos operan define completamente el diseño de estos circuitos y, por tanto, sus parámetros fundamentales de eficiencia tales como precisión, rango, velocidad, área y consumo. En consecuencia, el formato utilizado en estos sistemas influye enormemente en su eficiencia.

Dos circuitos básicos que se requieren en la mayoría de tales unidades funcionales son los circuitos de redondeo y los circuitos para complemento a dos.

Los circuitos de redondeo se utilizan cuando es necesario reducir el número de dígitos significativos, tanto en números en formato de coma fija como en la mantisa de números en formato de coma flotante. El circuito que realiza la función de complemento a dos se utiliza para cambiar el signo del número. Cualquier mejora en la eficiencia de estos dos circuitos afecta directamente a la eficiencia de la mayoría de las unidades funcionales que los incluyan.

Para realizar el complemento a la base de un número, primero se realiza el complemento a la base menos uno, una operación que se realiza sobre todos los dígitos en paralelo. Posteriormente se le suma al número una unidad-en-elúltimo lugar (ULP) . En el caso binario, para que un circuito que lleva a cabo el complemento a dos de un número de N bits serían necesarios N inversores y un sumador de N bits. En el caso de una operación de resta (X-Y = X+ (-Y) ) , que en realidad consiste en una suma con el complemento a dos del sustraendo, el bit de entrada de acarreo del sumador se suele utilizar para añadir el ULP. Sin embargo, esto no significa que cada vez que se requiere

llevar a cabo el complemento a dos el motivo es una resta. Tales casos son la operación de valor absoluto o la suma/resta de números en representación signo-magnitud, una representación típicamente usada en coma flotante.

Con respecto a los circuitos de redondeo, se utilizan varias formas de redondeo. Una que demuestra importantes propiedades y es la más utilizada es el quot;redondeo al par más cercanoquot;. En este modo, el valor que se utiliza como valor final es el valor que está más cerca del valor real y, en caso de empate, el valor par. Usando este tipo de redondeo, se obtiene un error inferior a +-0.5ULP y no presenta ningún sesgo en los errores.

Dado un número de D1 dígitos, para realizar una operación de redondeo a D2 dígitos, asumiendo D1 gt; D2, D1-D2 dígitos deben desecharse. Para que el redondeo sea al número más cercano, es importante examinar el valor del dígito más significativo de los que necesitan ser desechados (MD) y el dígito menos significativo de los que quedan (LD) :

 Si MD lt; (B/2) entonces simplemente dichos dígitos son descartados.  Si MD gt; (B/2) entonces dichos dígitos se descartan y se añade el valor uno al dígito menos significativo que permanece.

 Si MD = (B/2) entonces se debe verificar si alguno de los dígitos a descartarse no es cero (sticky bit) . Si es así, entonces el redondeo se realiza según el segundo caso. Si todos son cero, entonces si el dígito LD es par entonces el redondeo se realiza según el primer caso y si es impar según el segundo caso.

Por lo tanto, el circuito básico para implementar este tipo de redondeo requiere un sumador para sumar uno si es necesario y un circuito para calcular el sticky bit.

Los circuitos de complemento a la base y redondeo son necesarios en las unidades funcionales tales como sumadores, multiplicadores, divisores, unidades FMAD, operadores de valor absoluto, conversores de formato o conversores de precisión etc. El coste adicional, por ejemplo en el área o retardo, que plantean dichos circuitos en las mencionadas unidades funcionales es generalmente substancial, sobre todo porque están típicamente en la vía crítica.

En el estado de la técnica anterior se han hecho varios intentos para reducir los efectos de estos cálculos, es decir el complemento a dos, el cálculo del sticky bit y redondeo. En ciertos documentos del estado de la técnica se ha propuesto precalcular el sticky bit o quitar estas operaciones de la vía crítica o reducir el número total de operaciones de redondeo necesarias o combinar redondeo y complemento a dos.

Sería deseable tener circuitos y métodos que reduzcan el coste en área, retardo y consumo de los circuitos de redondeo al más cercano y/o de complemento a la base.

La presente invención se refiere a varios métodos y dispositivos para evitar o al menos reducir parcialmente este problema.

RESUMEN

La presente descripción se refiere a conversores configurados para ser conectados a configuraciones y circuitos para operaciones en coma flotante que implementan técnicas para codificar números con objeto de realizar funciones de redondeo al más cercano y complemento a la base sin la necesidad de realizar una suma. Por tanto, los sistemas que usen el tipo de codificación propuesto y que requieran estas operaciones podrían

simultáneamente reducir área, retardo y consumo de potencia.

Con este fin, la presente descripción se centra en el diseño de conversores configurados para ser conectados a sistemas digitales de procesamiento de información más eficientes (más rápidos, menor coste, menor consumo de energía) mediante el uso de una nueva familia de formatos o una modificación de los formatos de codificación numérica, aplicable a la mayoría de los formatos actuales, lo que implica cambios en los circuitos que procesan dichos formatos. Estos formatos simplifican drásticamente los circuitos para el redondeo al más cercano y complemento a la base, sin afectar negativamente al resto del circuito.

En un primer aspecto, se propone un dispositivo configurado para... [Seguir leyendo]

 


Reivindicaciones:

1. Un dispositivo configurado para ser conectado a una unidad aritmética, dicha unidad aritmética configurada para procesar al menos un primer número en coma flotante pre-procesado para generar al menos un segundo número en coma flotante pre-procesado, dichos números en coma flotante pre-procesados teniendo una mantisa con un LSD igual a B/2, B siendo la base del sistema numérico, dicho dispositivo siendo configurado para convertir un número de entrada a dicho al menos primer número en coma flotante pre-procesado o dicho al menos segundo número en coma flotante pre-procesado a un número de salida.

2. Dispositivo según reivindicación 1 en el que, cuando el número de entrada es un número coma fija pre-procesado de N+2 bits y el primer número coma flotante pre-procesado tiene una mantisa de M+2 bits, el dispositivo comprende:

un calculador de cantidad de desplazamiento,

un módulo para calcular el exponente, con una primera entrada para recibir la cantidad de desplazamiento del calculador de cantidad de desplazamiento, y una salida para generar el exponente del número coma flotante pre-procesado; y

un calculador de mantisa, comprendiendo:

un módulo de normalización con una primera entrada para recibir los N MSBs de los N+1 LSBs del número coma fija pre-procesado y una segunda para recibir la cantidad de desplazamiento; dicho módulo de normalización configurado para desplazar a la izquierda dichos N MSBs de acuerdo con dicha cantidad de desplazamiento, y completar las posiciones vacantes fijando el MSB de las posiciones vacantes

a cero y el resto a unos, o fijando el MSB a uno y el resto a cero, para generar como mucho los M+1 MSBs de la mantisa,

mientras que el signo del primer número coma flotante pre-procesado corresponde al MSB del número coma fija pre-procesado.

3. Dispositivo según reivindicación 2 en el que el módulo de normalización está configurado además para, completar dichas posiciones vacantes, aleatoriamente, basándose en un bit seleccionado, o en una combinación de bits seleccionados.

4. Dispositivo según reivindicación 2 ó 3, en el que dicho módulo de normalización está configurado además para generar selectivamente el complemento a uno del resultado de dicho desplazamiento.

5. Dispositivo según las reivindicación 1, en el que, cuando el número de entrada es un número coma fija no procesado de R bits y el primer número coma flotante pre-procesado tiene una mantisa de M+2 bits, dicho dispositivo comprende:

un calculador de cantidad de desplazamiento un módulo de normalización configurado para recibir los R bits del número en coma fija no procesado y generar como mucho los M+1 MSBs de la mantisa del primer número en coma flotante pre-procesado,

un calculador de exponentes con una primera entrada para recibir una cantidad de desplazamiento proveniente del calculador de cantidad de desplazamiento y una salida para generar el exponente del primer número en coma flotante pre-procesado,

donde el signo del primer número en coma flotante pre-procesado se corresponde con el MSB del número no procesado en coma fijo.

6. Dispositivo según la reivindicación 5, en el que el módulo de normalización comprende una primera entrada para recibir los R bits del número no procesado en coma fija y una segunda entrada para recibir la cantidad de desplazamiento, donde el módulo de normalización está configurado para generar un valor que corresponde a como mucho los M+1 MSB de la mantisa del primer número coma flotante pre-procesado mediante el desplazamiento a la izquierda de los R-2 MSBs de los R-1 LSBs de la primera entrada seguida hacia la derecha por un bit a cero y rellenando las posiciones vacantes con el valor del LSB de la primera entrada.

7. Dispositivo según la reivindicación 6, en el que el módulo de normalización está configurado además para generar selectivamente el complemento a uno de dicho valor generado si la entrada es negativa.

8. Dispositivo según cualquiera de las reivindicaciones 2 a 7, en el que el módulo de normalización contiene un desplazador variable configurado para recibir un bit para completar las posiciones vacantes.

9. Dispositivo según la reivindicación 8, en el que dicho desplazador variable comprende un número de sucesivos multiplexores que es igual al primer entero mayor o igual que el logaritmo en base 2 de la máxima cantidad de desplazamiento [log2 (máxima cantidad de desplazamiento) ], con cada multiplexor configurado para efectuar una operación de desplazamiento a la izquierda de 2^i posiciones, iϵ[0, número de multiplexores-1], y cada multiplexor configurado para completar las posiciones vacantes usando el valor de dicho bit recibido.

10. Dispositivo según la reivindicación 5, en el que el módulo de normalización comprende una primera entrada para recibir los R bits del número en coma fija no procesado y una segunda entrada para recibir la cantidad de desplazamiento, donde el módulo de normalización está configurado para generar un valor que se corresponde como mucho con los M+1 MSBs de la mantisa del primer número coma flotante pre-procesado mediante el desplazamiento a la izquierda de los R-1 LSBs de la primera entrada.

11. Dispositivo según la reivindicación 10, en el que el módulo de normalización está configurado además para generar selectivamente el complemento a uno del resultado de la mencionada operación de desplazamiento.

12. Dispositivo según la reivindicación 1, en el que, cuando el número de entrada es un número coma flotante pre-procesado con una mantisa de J+2 bits y el primer número en coma flotante pre-procesado tiene una mantisa con J+2-P bits, Plt;J+1, entonces el dispositivo comprende:

una unidad de redondeo para eliminar los P+1 LSBs de los J+2 bits de la mantisa del número de entrada, para generar como mucho J+1-P MSBs de la mantisa del primer número en coma flotante pre-procesado,

donde el LSB de la mantisa del primer número coma flotante preprocesado es igual a 1,

y un calculador de exponentes para generar el exponente del primer número en coma flotante pre-procesado.

13. Dispositivo según reivindicación 1 , en el que, cuando el número de entrada es un número coma flotante pre-procesado con una mantisa de J+2 bits y el primer número en coma flotante pre-procesado tiene una mantisa con J+2+Q bits, entonces el dispositivo comprende:

un módulo de rellenado, configurado para recibir como mucho los J+1 MSBs de la mantisa del número de entrada y generar como mucho los J+Q+1 MSBs de la mantisa del primer número en coma flotante pre-procesado fijando el MSB de los Q LSBs a uno o a cero y los restante Q-1 bits de dichos Q LSBs al complemento del mencionado MSB, mientras los como mucho J+1 MSBs de la mantisa del primer número en coma flotante pre-procesado son los mismos que los como mucho J+1 MSBs de la mantisa del número de entrada, y

un calculador de exponentes para generar el exponente del primer número en coma flotante pre-procesado.

14. Dispositivo según la reivindicación 13, en el que el módulo de rellenado está configurado para fijar aleatoriamente dicho MSB basándose en el valor de un bit seleccionado, o de una combinación de bits seleccionados.

15. Dispositivo según la reivindicación 1, en el que, cuando el número de entrada es un número coma flotante no procesado con una mantisa de E+2 bits y el primer número en coma flotante pre-procesado tiene una mantisa con E+2-D bits, Dlt;E+1, entonces el dispositivo comprende:

una unidad de redondeo configurada para eliminar los D+1 LSBs de la mantisa del número en coma flotante no procesado, para generar los E+1-D MSBs de la mantisa del primer número coma flotante pre-procesado, donde el LSB de la mantisa del primer número en coma flotante pre-procesado es igual a uno, y

un calculador de exponentes para generar el exponente del primer número en coma flotante pre-procesado.

16. Dispositivo según la reivindicación 15, en el que la unidad de redondeo está configurada además para, selectivamente, poner a cero el segundo LSB de la mantisa del primer número en coma flotante pre-procesado si todos los D+1

LSBs de la mantisa del número en coma flotante no procesado son iguales a cero.

17. Dispositivo según la reivindicación 1, en el que, cuando el número de entrada es un número coma flotante no procesado con una mantisa de E+2 bits y el primer número en coma flotante pre-procesado tiene una mantisa con E+2+G bits, entonces el dispositivo comprende:

un módulo de rellenado, configurado para recibir como mucho los E+2 bits de la mantisa del número en coma flotante no procesado y generar como mucho los E+G+1 MSBs de la mantisa del primer número en coma flotante preprocesado, fijando los como mucho E+2 MSBs del primer número en coma flotante pre-procesado al mismo valor que como mucho los E+2 bits de la mantisa del número en coma flotante no procesado y los restantes bits a cero, donde el LSB de la mantisa del primer número en coma flotante pre-procesado es igual a uno, y

un calculador de exponentes configurado para generar el exponente del primer número en coma flotante pre-procesado.

18. Dispositivo según la reivindicación 17, en el que el módulo de rellenado está configurado además para generar selectivamente el valor correspondiente a restar uno del segundo LSB de la mencionada mantisa generada, cuando un bit seleccionado, o una combinación de bit seleccionados, de la mantisa no procesada de entrada es igual a uno.

19. Dispositivo según cualquiera de las reivindicaciones 1 a 18, en el que, cuando el segundo número en coma flotante pre-procesado tiene una mantisa con F+2 bits y el número de salida es un número coma fija pre-procesado de L bits, donde Llt;F+4 entonces el dispositivo comprende:

un calculador de la cantidad de desplazamiento que recibe el exponente del segundo número en coma flotante pre-procesado en una entrada y que genera una cantidad de desplazamiento en una salida,

un módulo de desplazamiento con una primera entrada para recibir como mucho los L-1 MSBs de la mantisa del segundo número en coma flotante pre-procesado y una segunda entrada acoplada a la salida del calculador de cantidad de desplazamiento y una tercera entrada para recibir el signo del mencionado segundo número en coma flotante, para generar como mucho los L-1 MSBs del número en coma fija pre-procesado en una salida.

20. Dispositivo según la reivindicación 19, en el que el módulo de desplazamiento comprende un desplazador aritmético a la derecha acoplado a un inversor de bit condicional.

21. Dispositivo según cualquiera de las reivindicaciones 1 a 18, en el que, cuando el segundo número en coma flotante pre-procesado tiene una mantisa de F+2 bits y el número de salida es un número coma fija pre-procesado de F+C+3 bits, Cgt;0, el dispositivo comprende:

un calculador de cantidad de desplazamiento que recibe el exponente del segundo número pre-procesado en una entrada y que genera una cantidad de desplazamiento en una salida,

un módulo de desplazamiento aritmético a la derecha con una primera entrada conectada a la salida del calculador de desplazamiento, configurado para generar los F+C+2 MSBs del número en coma fija pre-procesado mediante el desplazamiento aritmético a la derecha de un valor intermedio de F+C+2 bits formado, de izquierda a derecha, por el bit de signo, los F+1 MSBs de la mantisa del segundo número en coma flotante pre-procesado, y el MSB de los C LSBs puesto a cero y el resto a uno, o el MSB de los C LSBs puesto a uno y el resto a cero.

22. Dispositivo según la reivindicación 21, en el que el módulo de desplazamiento aritmético a la derecha está configurado para poner aleatoriamente dicho MSB de los C LSBs del mencionado valor intermedio de F+C+2 bits en base al valor de un bit seleccionado, o de una combinación de bits seleccionados.

23. Dispositivo según las reivindicaciones 21 o 22, en el que el módulo de desplazamiento aritmético a la derecha está configurado para generar selectivamente el complemento a uno del resultado de la mencionada operación de desplazamiento.

24. Dispositivo según cualquiera de las reivindicaciones 1 a 18, en el que cuando el segundo número coma flotante pre-procesado tiene una mantisa de Z bits y el número coma fija no procesado tiene H+1 bits, el dispositivo comprende un dispositivo para convertir números coma flotante pre-procesados a números coma fija pre-procesados, de acuerdo con cualquiera de las reivindicaciones 19 a 23, teniendo una salida de H+2 bits conectada a un módulo de redondeo.

25. Dispositivo según reivindicación 24, en el que el módulo de redondeo comprende un sumador; dicho sumador está configurado para recibir, en una entrada, los H+1 MSBs de la salida del mencionado dispositivo para convertir números coma flotante pre-procesados a números coma fija pre-procesados, e incrementar dicha entrada si el LSB de dicha salida es igual a 1.

26. Dispositivo según cualquiera de las reivindicaciones 1 a 18, en el que, cuando el segundo número en coma flotante pre-procesado tiene una mantisa de U+2 bits y el número de salida es un número coma flotante no procesado con una mantisa de U-V+2 bits, Vgt;0, el dispositivo comprende:

un módulo de redondeo, configurado para recibir como mucho los U+3-V MSBs de la mantisa del segundo número en coma flotante pre-procesado y generar como mucho los U+2-V bits de la mantisa del número en coma flotante no procesado,

un calculador de exponentes configurado para generar el exponente del número en coma flotante no procesado.

27. Dispositivo según la reivindicación 26, en el que el módulo de redondeo comprende un sumador; dicho sumador está configurado para recibir, en una entrada, como mucho los U+2-V MSBs de la mantisa del segundo número en coma flotante pre-procesado e incrementar dicho valor de entrada si el (U+3V) -ésimo MSB de dicha mantisa es igual a 1, y generar una instrucción para el calculador de exponentes, si se produjera un desbordamiento.

28. Dispositivo según las reivindicaciones 26 ó 27, en el que el calculador de exponentes está configurado, además, para incrementar el exponente de salida cuando se genera la mencionada instrucción del módulo de redondeo.

29. Dispositivo según cualquiera de las reivindicaciones 1 a 18, en el que, cuando el segundo número en coma flotante pre-procesado tiene una mantisa de U+2 bits y el número de salida es un número coma flotante no procesado con una mantisa de U+2+W bits, entonces el dispositivo comprende:

un módulo de rellenado, configurado para recibir como mucho los U+1 MSBs de la mantisa del segundo número en coma flotante pre-procesado y generar como mucho los U+W+2 bits de la mantisa del número en coma flotante no procesado, poniendo el MSB de los W+1 LSBs a uno y los restantes bits a cero, y

un calculador de exponentes configurado para generar el exponente del número en coma flotante pre-procesado.

30. Procedimiento, en un sistema de procesado de datos comprendiendo un procesador, para representar un número real en un formato pre-procesado, dicho formato pre-procesado siendo la representación del número real mediante el número más cercano en coma fija de M+1 dígitos teniendo el LSD igual a B/2, B siendo la base del sistema numérico, el método comprende:

calcular, por el procesador, el mayor número en base B de M dígitos menor que el número real;

fijar, por el procesador, los M MSDs del número en coma fija de M+1 dígito igual a los M dígitos de dicho mayor número de M dígitos.

31. Procedimiento, según la reivindicación 30, que comprende además fijar, por el procesador, el LSD del número en coma fija de M+1 dígito igual a B/2.

32. Procedimiento, , según la reivindicación 30, en el cual, cuando el número real es un número coma fija ya representado en un formato en base B y comprende N+1 dígitos, Ngt;M, el método comprende:

fijar, por el procesador, los N-M-1 MSDs de los N-M LSDs del número en coma fija de N+1 dígitos a cero;

fijar, por el procesador, el (M+1) -ésimo MSD a B/2.

33. Procedimiento, según la reivindicación 32 que comprende además:

fijar, por el procesador, el LSD del número en coma fija de N+1 dígitos a cero;

detectar, por el procesador, si dichos N-M-1 MSDs y dicho LSB eran igual a cero antes de dicha operación de fijar;

fijar, por el procesador, el M-ésimo MSD a cero en respuesta a dicha identificación.

34. Procedimiento, según cualquiera de las reivindicaciones 30 a 33, en el que el número real es la mantisa de un número en coma flotante.