PROCEDIMIENTO Y APARATO PARA LA MULTIPLICACIÓN DE NÚMEROS DECIMALES USANDO UN SOPORTE FÍSICO PARA OPERACIONES CON NÚMEROS BINARIOS.
Un procedimiento implementado por máquina para llevar a cabo una multiplicación de números decimales entre un primer operando y un segundo operando usando un soporte físico para operaciones de números binarios que comprende:
obtener (302, 304) un primer coeficiente (C1) y un segundo coeficiente (C2), siendo dicho primer coeficiente (C1) el coeficiente entero de dicho primer operando y siendo dicho segundo coeficiente (C2) el coeficiente entero de dicho segundo operando; efectuar (306) una operación de multiplicación binaria entre dicho primer coeficiente (C1) y dicho segundo coeficiente (C2) para obtener un primer producto (C') usando un multiplicador binario de enteros; redondear (312, 318-320) dicho primer producto (C') a un número predeterminado de dígitos decimales en un modo designado de redondeo sumando una constante seleccionada de una pluralidad de constantes calculadas de antemano almacenadas en una tabla de un módulo de redondeo de un procesador para obtener un segundo producto (C'), en el que se accede a la constante calculada de antemano en la tabla en base a la diferencia entre el número de dígitos decimales del primer producto (C') y el número predeterminado de dígitos decimales; obtener (322-338) un resultado (D) para dicha multiplicación de números decimales en base, al menos en parte, a dicho segundo producto (C'); y determinar (340) si dicho resultado (D) es exacto
Tipo: Patente Europea. Resumen de patente/invención. Número de Solicitud: E07251933.
Solicitante: INTEL CORPORATION.
Nacionalidad solicitante: Estados Unidos de América.
Dirección: 2200 MISSION COLLEGE BOULEVARD SANTA CLARA, CA 95052 ESTADOS UNIDOS DE AMERICA.
Inventor/es: Cornea-Hasegan,Marius.
Fecha de Publicación: .
Fecha Solicitud PCT: 10 de Mayo de 2007.
Clasificación Internacional de Patentes:
- G06F7/491B
Clasificación PCT:
- G06F7/491 FISICA. › G06 CALCULO; CONTEO. › G06F PROCESAMIENTO ELECTRICO DE DATOS DIGITALES (sistemas de computadores basados en modelos de cálculo específicos G06N). › G06F 7/00 Métodos o disposiciones para el procesamiento de datos actuando sobre el orden o el contenido de los datos tratados (circuitos lógicos H03K 19/00). › Cálculos con números decimales.
Países PCT: Austria, Bélgica, Suiza, Alemania, Dinamarca, España, Francia, Reino Unido, Grecia, Italia, Liechtensein, Luxemburgo, Países Bajos, Suecia, Mónaco, Portugal, Irlanda, Eslovenia, Finlandia, Rumania, Chipre, Lituania, Letonia, Ex República Yugoslava de Macedonia, Albania.
PDF original: ES-2373576_T3.pdf
Fragmento de la descripción:
Procedimiento y aparato para la multiplicación de números decimales usando un soporte físico para operaciones con números binarios Antecedentes 1. Campo La presente revelación versa en general acerca de sistemas de procesadores y, más específicamente, pero no exclusivamente, acerca de procedimientos y aparatos para operaciones aritméticas llevadas a cabo por procesadores.
2. Descripción Típicamente, las multiplicaciones decimales de coma flotante se implementan en soporte lógico, porque no hay un soporte físico especializado para las multiplicaciones decimales de coma flotante en la mayoría de los procesadores modernos. Normalmente, un número (D) de coma flotante es representado por un coeficiente (C) y un exponente (E) , es decir, D = C · 10^E, siendo enteros decimales tanto C como E. La precisión de tal representación puede ser determinada por el número de dígitos decimales de C, resultando más dígitos decimales de C en una representación más precisa de D. Supongamos que los coeficientes y los exponentes de números decimales de coma flotante están almacenados en formato binario en un ordenador. Un procedimiento típico para el cálculo de una multiplicación entre dos números decimales de coma flotante (por ejemplo, D1 = C1 · 10^E1 y D2 = C2 · 10^E2) es como sigue: convertir los coeficientes (C1 y C2) y los exponentes (E1 y E2) de binario a decimal; efectuar una multiplicación de enteros decimales entre C1 y C2 y una suma de enteros decimales entre E1 y E2; redondear correctamente los resultados decimales exactos (C1 · C2 y E1 + E2) hasta la precisión de destino; y luego volver a convertir el coeficiente y el exponente de los resultados finales de decimal a binario.
Aunque sería posible almacenar siempre coeficientes y exponentes de números decimales de coma flotante en un formato decimal (por ejemplo, en el formato decimal codificado en binario (BCD) ) , no podría aprovecharse directamente la ventaja ofrecida por las instrucciones o la circuitería existentes, que operan con números binarios. 25 En el procedimiento anterior de multiplicación decimal con coma flotante, la conversión de ida y vuelta entre los formatos decimal y binario y la multiplicación y la suma de enteros decimales consumen varios ciclos de reloj. Más importante es que la operación de redondeo de los resultados finales, que típicamente usa un cálculo basado en el resto, es muy costosa en términos de ciclos de reloj. Así, es deseable contar con enfoques más rápidos para las multiplicaciones decimales de coma flotante para que pueda mejorarse el rendimiento global de un sistema informático.
KDuke: “Decimal Floating Point Processor. November 1969”, IBM Technical Disclosure Bulletin, vol. 12, nº 6, noviembre de 1969, página 862, Nueva York, EE. UU., describe un procesador decimal de coma flotante que opera con números de coma flotante en los que la mantisa es un entero y la característica representa una potencia de 10 por la que debe ser multiplicada ese entero. Tanto la característica como la mantisa se expresan de forma binaria.
Los aspectos de la presente invención son expuestos en las reivindicaciones independientes adjuntas.
Breve descripción de los dibujos Las características y las ventajas de la materia dada a conocer se harán evidentes a partir de la siguiente descripción detallada de la materia, en la que:
la Figura 1 muestra un sistema informático ejemplar en el que las multiplicaciones de números decimales pueden ser efectuadas usando un soporte físico para las operaciones de números binarios, según la materia dada a conocer en la presente solicitud;
la Figura 2 es un diagrama de bloques de un módulo ejemplar de multiplicación decimal que efectúa multiplicaciones de números decimales con redondeo al número más cercano dentro de la precisión predeterminada usando un soporte físico para las operaciones con números binarios, según la materia 45 dada a conocer en la presente solicitud;
la Figura 3 es un diagrama de flujo que ilustra un procedimiento ejemplar para efectuar multiplicaciones de números decimales con redondeo al número más cercano dentro de la precisión predeterminada usando un soporte físico para las operaciones con números binarios, según la materia dada a conocer en la presente solicitud;
50 la Figura 4 es un diagrama de bloques de un módulo ejemplar de multiplicación decimal que efectúa multiplicaciones de números decimales con un redondeo a la baja usando un soporte físico para las operaciones con números binarios, según la materia dada a conocer en la presente solicitud; y
la Figura 5 es un diagrama de flujo que ilustra un procedimiento ejemplar para efectuar multiplicaciones de números decimales con redondeo a la baja usando un soporte físico para las operaciones con números binarios, según la materia dada a conocer en la presente solicitud.
Descripción detallada Según realizaciones de la materia dada a conocer en la presente solicitud, las multiplicaciones decimales de coma flotante y/o las multiplicaciones decimales de coma fija pueden ser implementadas usando un soporte físico existente para operaciones con números binarios. La implementación puede llevarse a cabo en un soporte lógico (por ejemplo, usando instrucciones de máquina para el soporte físico subyacente existente para las operaciones binarias) , en un soporte físico (por ejemplo, reutilizando circuitería existente para operaciones con números binarios)
La referencia en la memoria a “una realización” de la materia dada a conocer significa que un rasgo, una estructura La Figura 1 muestra un sistema informático ejemplar 100 en el que las multiplicaciones de números decimales pueden efectuarse usando un soporte físico para operaciones de números binarios. El sistema informático 100 puede comprender uno o más procesadores 110 acoplados a una interconexión 115 de sistemas. El procesador 110 puede incluir uno o más núcleos de proceso. Al menos un núcleo de proceso puede tener un módulo 120 de multiplicación decimal que use el soporte físico existente para operaciones con números binarios. El módulo de multiplicación decimal puede ser implementado en un soporte físico (por ejemplo, como parte de la unidad aritmética y lógico (ALU) ) reutilizando circuitería existente para operaciones con números binarios, en un soporte lógico usando instrucciones para el soporte físico binario subyacente existente, o en una combinación de soportes físico y lógico. El módulo de multiplicación decimal puede usar aproximaciones binarias, calculadas de antemano, a ciertas potencias negativas de 10 y almacenar estos números binarios calculados de antemano como constantes en una tabla. Cuando se redondea una resultado de una multiplicación hasta una precisión predeterminada, puede consultarse una constante calculada de antemano, correspondiente a la precisión predeterminada, en una tabla y usarla para multiplicar con el resultado de la multiplicación. Usando estas constantes calculadas de antemano, las costosas operaciones convencionales son sustituidas con operaciones menos costosas de multiplicación binaria. Además, pueden llevarse a cabo en paralelo varias partes de una multiplicación decimal. Además, pueden llevarse a cabo una detección del... [Seguir leyendo]o en una combinación de soportes lógico y físico. En particular, pueden usarse constantes calculadas de antemano que son aproximaciones de potencias negativas de 10 y están almacenadas en formato binario para redondear los resultados de la multiplicación en una precisión designada. En consecuencia, una operación de redondeo puede ser implementada con una multiplicación entre un resultado de una multiplicación y una constante calculada de antemano. Además, varias partes de una multiplicación pueden ser llevadas a cabo en paralelo. Además, puede usarse una simple comparación con una constante en vez de un costoso cálculo de resto para determinar si un resultado de la multiplicación es un punto medio entre dos números decimales de coma flotante consecutivos (para multiplicaciones con redondeo al número más cercano dentro de la precisión predeterminada) y para determinar si el resultado redondeado es una representación exacta del resultado real de la multiplicación.
Reivindicaciones:
1. Un procedimiento implementado por máquina para llevar a cabo una multiplicación de números decimales entre un primer operando y un segundo operando usando un soporte físico para operaciones de números binarios que comprende:
obtener (302, 304) un primer coeficiente (C1) y un segundo coeficiente (C2) , siendo dicho primer coeficiente (C1) el coeficiente entero de dicho primer operando y siendo dicho segundo coeficiente (C2) el coeficiente entero de dicho segundo operando;
efectuar (306) una operación de multiplicación binaria entre dicho primer coeficiente (C1) y dicho segundo coeficiente (C2) para obtener un primer producto (C') usando un multiplicador binario de enteros;
redondear (312.
31. 320) dicho primer producto (C') a un número predeterminado de dígitos decimales en un modo designado de redondeo sumando una constante seleccionada de una pluralidad de constantes calculadas de antemano almacenadas en una tabla de un módulo de redondeo de un procesador para obtener un segundo producto (C”) , en el que se accede a la constante calculada de antemano en la tabla en base a la diferencia entre el número de dígitos decimales del primer producto (C') y el número predeterminado de dígitos decimales;
obtener (322-338) un resultado (D) para dicha multiplicación de números decimales en base, al menos en parte, a dicho segundo producto (C”) ; y determinar (340) si dicho resultado (D) es exacto.
2. El procedimiento de la reivindicación 1 en el que la obtención de un primer coeficiente (C1) y un segundo coeficiente (C2) comprende la conversión de dicho primer coeficiente (C1) y de dicho segundo coeficiente (C2) a un formato binario si dicho primer coeficiente (C1) y dicho segundo coeficiente (C2) no están en formato binario.
3. El procedimiento de la reivindicación 1 en el que dicho modo designado de redondeo es un redondeo al más cercano.
4. El procedimiento de la reivindicación 1 en el que el redondeo del número de dígitos decimales de dicho primer producto (C') comprende:
determinar (308) el número de dígitos decimales de dicho primer producto (C') ;
comparar (310) el número de dígitos decimales de dicho primer producto (C') con dicho número predeterminado de dígitos;
usar dicho primer producto (C') como coeficiente del resultado (D) si el número de dígitos decimales de dicho primer producto (C') es menor o igual que dicho número predeterminado de dígitos decimales; y, si no, convertir dicho primer producto (C') en dicho segundo producto (C”) .
5. El procedimiento de la reivindicación 4 en el que la obtención de un resultado (D) para dicha multiplicación de números decimales comprende, si el número de dígitos decimales de dicho primer producto (C') es menor o igual que dicho número predeterminado de dígitos decimales:
efectuar una operación de adición entre el exponente (E1) de dicho primer operando y el exponente (E2) de dicho segundo operando para producir un exponente final;
dar salida a dicho resultado (D) , siendo un coeficiente dicho primer producto (C') y siendo un exponente 40 dicho exponente final; e indicar que dicho resultado (D) es exacto.
6. El procedimiento de la reivindicación 4 en el que dicho modo de redondeo es un redondeo al más cercano y en el que la conversión de dicho primer producto (C') en dicho segundo producto (C”) comprende:
calcular (312) la diferencia, x, entre el número de dígitos decimales en dicho primer producto (C') y dicho 45 número predeterminado de dígitos decimales;
obtener (322) una representación binaria de 10^ (-x) ; y obtener (320) una representación binaria de (1/2*10^x) ;
efectuar una suma binaria entre dicho primer producto (C') y dicha representación binaria de (1/2*10^x) ; y efectuar una multiplicación binaria de enteros entre el resultado de dicha suma binaria y dicha representación binaria de 10^ (-x) para producir un producto intermedio (C*) .
7. El procedimiento de la reivindicación 6 en el que la conversión de dicho primer producto (C') en dicho segundo producto (C”) comprende, además, efectuar una operación de desplazamiento binario en dicho producto intermedio (C*) para obtener un tercer producto y para producir un número piso (C) y un número faccionario (f*) , desplazando a la derecha dicha operación de desplazamiento binario dicho producto intermedio (C*) el número de bits de dicha representación binaria de 10^ (-x) , siendo dicho número piso (C) el coeficiente de dicho tercer producto, incluyendo dicho número fraccionario (f*) bits que son desplazados fuera de dicho producto intermedio (C*) .
8. El procedimiento de la reivindicación 7 en el que la obtención de un resultado (D) para dicha multiplicación de números decimales comprende:
sumar conjuntamente el exponente (E1) de dicho primer operando, el exponente (E1) de dicho segundo operando y x para producir un exponente para dicho resultado (D) ;
si dicho modo designado de redondeo es redondeo al más cercano, efectuar la detección del punto medio en base a dicho número piso (C) y a dicho número fraccionario (f*) ;
ajustar dicho número piso (C) si se determina que dicho primer producto (C') es un punto medio; y determinar si hay un desbordamiento de redondeo y, si lo hay, ajustar dicho número piso (C) y dicho exponente; y producir dicho resultado (D) para dicha multiplicación de números decimales, siendo un coeficiente dicho número piso (C) y siendo un exponente dicho exponente.
9. El procedimiento de la reivindicación 7 en el que la determinación de si dicho resultado (D) es exacto comprende:
efectuar operaciones de comparación entre dicho número fraccionario (f*) y una primera constante y una 25 segunda constante; y si dicho número fraccionario (f*) es mayor que dicha primera constante pero menor que dicha segunda constante, indicar que dicho resultado (D) es exacto; en caso contrario, indicar que dicho resultado (D) es inexacto.
10. Un procesador (110) que comprende un módulo (120) de multiplicación decimal para llevar a cabo una multiplicación de números decimales entre un primer operando y un segundo operando, incluyendo dicho módulo de multiplicación decimal:
al menos un multiplicador (210) de enteros binarios para efectuar una multiplicación binaria entre el coeficiente entero (C1) de dicho primer operando y el coeficiente entero (C2) de dicho segundo operando para obtener un primer producto (C') ;
un identificador (220) del número de dígitos decimales para determinar el número de dígitos decimales de dicho primer producto (C') ;
un módulo (240) de redondeo adaptado para redondear dicho primer producto (C') a un número predeterminado de dígitos decimales en un modo designado de redondeo sumando una constante seleccionada de una pluralidad de constantes calculadas de antemano almacenadas en una tabla para obtener un segundo producto (C”) , en el que se accede a la constante calculada de antemano en la tabla en base a la diferencia entre el número de dígitos decimales del primer producto (C') y el número predeterminado de dígitos decimales;
al menos un sumador (230) para producir un resultado (D) de dicha multiplicación decimal en base, en parte, a dicho segundo producto (C”) ; y 45 un detector (270) de exactitud para determinar si dicho resultado (D) es exacto.
11. El procesador de la reivindicación 10 en el que dicho módulo de redondeo está adaptado para determinar el número de dígitos decimales en dicho primer producto (C') ; para comparar el número de dígitos decimales de dicho primer producto (C') con dicho número predeterminado de dígitos decimales; y, si el número de dígitos decimales de dicho primer producto (C') es mayor que dicho número predeterminado de dígitos decimales;
para calcular la diferencia, x, entre el número de dígitos decimales de dicho primer producto (C') y dicho número predeterminado de dígitos decimales, y para obtener una representación binaria de 10^ (-x) .
12. El procesador de la reivindicación 11 en el que dicho sumador está adaptado para obtener un resultado (D) para dicha multiplicación decimal, si el número de dígitos decimales de dicho primer producto (C') es menor o igual que dicho número predeterminado de dígitos decimales sumando el exponente (E1) de dicho primer operando y el exponente (E2) de dicho segundo operando, siendo el coeficiente de dicho resultado (D) dicho primer producto (C') .
13. El procesador de la reivindicación 11 en el que dicho módulo de redondeo está adaptado para obtener, además, una representación binaria de (1/2*10^ (x) ) y para informar a dicho sumador para que efectúe una suma binaria entre dicho primer producto (C') y dicha representación binaria de (1/2*10^ (x) ) para producir dicho segundo producto (C”) , si dicho modo designado de redondeo es redondeo al más cercano.
14. El procesador de la reivindicación 13 en el que dicho multiplicador de enteros binarios está adaptado para efectuar una multiplicación binaria entre dicho segundo producto (C”) y dicha representación binaria de 10^ (-x) para producir dicho producto intermedio (C*) , si dicho modo designado de redondeo es redondeo al más cercano.
15. El procesador de la reivindicación 14 en el que dicho módulo de multiplicación decimal comprende, además, un desplazador binario (250) adaptado para efectuar operaciones de desplazamiento de dicho producto intermedio (C”) para obtener un número piso (C) y un número fraccionario (f*) desplazando a la derecha dicho producto intermedio (C*) el número de bits de dicha representación binaria de 10^ (-x) .
16. El procesador de la reivindicación 15 en el que dicho módulo de multiplicación decimal comprende, además, un detector (260) de punto medio, si dicho modo designado de redondeo es redondeo al más cercano, para detectar si dicho primer producto (C') es un punto medio y para ajustar dicho número piso (C) si dicho primer producto (C') es un punto medio.
17. El procesador de la reivindicación 16 en el que dicho sumador está adaptado, además, para sumar x, el exponente (E1) de dicho primer operando y el exponente (E2) de dicho segundo operando para producir un exponente para dicho resultado (D) de dicha multiplicación de números decimados, siendo el coeficiente de dicho resultado (D) dicho número piso (C) .
18. El procesador de la reivindicación 17 en el que dicho detector de exactitud está adaptado para ajustar el coeficiente y el exponente de dicho resultado (D) de dicha multiplicación de números decimales si hay desbordamiento de redondeo cuando dicho modo designado de redondeo es redondeo al más cercano; y para determinar si dicho resultado (D) de dicha multiplicación de números decimales es exacto comparando dicho número fraccionario (f*) con al menos una constante.
19. Un sistema informático que comprende un procesador según se reivindica en una cualquiera de las reivindicaciones 10 a 18 que, además, comprende:
una memoria dinámica síncrona de acceso directo, SDRAM; y en el que dicho procesador está acoplado para acceder a dicha SDRAM a través de una interconexión de sistemas.
Patentes similares o relacionadas:
Instrucción de multiplicación y desplazamiento de decimales, del 8 de Julio de 2020, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un procedimiento implementado por ordenador para facilitar el procesamiento dentro de un entorno informático, comprendiendo el procedimiento: […]
Detección de excepción cuántica decimal de coma flotante, del 19 de Julio de 2017, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un método para detectar excepciones cuánticas decimales de coma flotante, comprendiendo el método los pasos de aceptar al menos un operando […]