stringtranslate.com

Sumador de ahorro de transporte

Un sumador con acarreo y ahorro [1] [2] [nb 1] es un tipo de sumador digital que se utiliza para calcular de manera eficiente la suma de tres o más números binarios . Se diferencia de otros sumadores digitales en que genera dos (o más) números y la respuesta de la suma original se puede lograr sumando estos resultados. Un sumador con acarreo y ahorro se utiliza normalmente en un multiplicador binario, ya que un multiplicador binario implica la suma de más de dos números binarios después de la multiplicación. Un gran sumador implementado con esta técnica normalmente será mucho más rápido que la suma convencional de esos números.

Motivación

Considere la suma:

 12345678+ 87654322= 100000000

Utilizando aritmética básica, calculamos de derecha a izquierda: "8 + 2 = 0, lleva 1", "7 + 2 + 1 = 0, lleva 1", "6 + 3 + 1 = 0, lleva 1", y así sucesivamente hasta el final de la suma. Aunque conocemos el último dígito del resultado de inmediato, no podemos saber el primer dígito hasta que hayamos recorrido todos los dígitos del cálculo, pasando el acarreo de cada dígito al de su izquierda. Por lo tanto, sumar dos números de n dígitos tiene que llevar un tiempo proporcional a n , incluso si la maquinaria que estamos utilizando sería capaz de realizar muchos cálculos simultáneamente.

En términos electrónicos, utilizando bits (dígitos binarios), esto significa que incluso si tenemos n sumadores de un bit a nuestra disposición, aún tenemos que permitir un tiempo proporcional a n para permitir que un posible acarreo se propague de un extremo del número al otro. Hasta que hayamos hecho esto,

  1. No sabemos el resultado de la suma.
  2. No sabemos si el resultado de la suma es mayor o menor que un número dado (por ejemplo, no sabemos si es positivo o negativo).

Un sumador con acarreo anticipado puede reducir el retraso. En principio, el retraso se puede reducir de modo que sea proporcional a log  n , pero para números grandes esto ya no es así, porque incluso cuando se implementa el acarreo anticipado, las distancias que las señales tienen que recorrer en el chip aumentan en proporción a n , y los retrasos de propagación aumentan a la misma velocidad. Una vez que llegamos a los tamaños de números de 512 bits a 2048 bits que se requieren en la criptografía de clave pública , el acarreo anticipado no es de mucha ayuda.

El concepto básico

La idea de retrasar la resolución de los acarreos hasta el final, o de salvarlos, se debe a John von Neumann . [3]

La suma de dos dígitos nunca puede llevar más de un 1, y la suma de dos dígitos más 1 tampoco nunca puede llevar más de 1. Por ejemplo, en decimal, , que lleva un 1; , que también lleva un 1. Al sumar tres cifras, podemos sumar las dos primeras y producir una suma y los dígitos de acarreo; luego sumar la suma y los dígitos de acarreo a la tercera cifra y producir una suma y los dígitos de acarreo. En binario, los únicos dígitos son cero y uno, y así , , y con un 1 acarreado. Sumar el bit de acarreo puede dar, como máximo, con un 1 acarreado, por lo que es posible una suma triple. Debido a esto, también es posible sumar las tres primeras cifras y producir la suma y el acarreo; para las cifras posteriores, la suma y el acarreo son dos términos, y la siguiente cifra simple se suma a estos.

A continuación se muestra un ejemplo de una suma binaria de tres números binarios largos:

 1011 1010 1010 1101 1111 0000 0000 1101 (a)+ 1101 1110 1010 1101 1011 1110 1110 1111 (b)+ 0001 0010 1011 0111 0101 0011 0101 0010 (c)

La forma más sencilla de hacerlo sería calcular primero (a+b) y luego ((a+b)+c). La aritmética de ahorro de acarreo funciona abandonando cualquier tipo de propagación de acarreo. Calcula la suma dígito por dígito, como:

 1011 1010 1010 1101 1111 0000 0000 1101 (a)+ 1101 1110 1010 1101 1011 1110 1110 1111 (b)+ 0001 0010 1011 0111 0101 0011 0101 0010 (c)= 2113 2130 3031 2313 2223 1121 1211 2222

La notación no es convencional, pero el resultado sigue siendo inequívoco: Σ2 i d i . Si asumimos que los tres números son a, b y c, entonces aquí, el resultado se describirá como la suma de dos números binarios, donde el primer número, S, es simplemente la suma obtenida al sumar los dígitos (sin ninguna propagación de acarreo), es decir, S i = a i ⊕ b i ⊕ c i y el segundo número, C, está compuesto de acarreos de las sumas individuales anteriores, es decir, C i+1 = (a i b i ) + (b i c i ) + (c i a i ):

 0111 0110 1011 0111 0001 1101 1011 0000 y 1 0011 0101 0101 1011 1110 0100 1001 1110

Ahora estos 2 números se pueden enviar a un sumador de acarreo-propagación que generará el resultado.

Esto resultó muy ventajoso desde la perspectiva del retraso (tiempo de cálculo). Si tuviera que sumar estos tres números utilizando métodos convencionales, necesitaría dos retrasos en el sumador de propagación de acarreo para llegar a la respuesta. Si utiliza la técnica de ahorro de acarreo, solo necesitaría un retraso en el sumador de propagación de acarreo y un retraso en el sumador completo (que es mucho menor que un retraso en el sumador de propagación de acarreo). Por lo tanto, los CSA suelen ser muy rápidos.

Acumuladores de ahorro y transporte

Suponiendo que tenemos dos bits de almacenamiento por dígito, podemos utilizar una representación binaria redundante , almacenando los valores 0, 1, 2 o 3 en cada posición de dígito. Por lo tanto, es obvio que se puede agregar un número binario más a nuestro resultado de acarreo-guardado sin desbordar nuestra capacidad de almacenamiento: pero ¿y luego qué?

La clave del éxito es que en el momento de cada adición parcial sumamos tres bits:

En otras palabras, tomamos un dígito de acarreo de la posición a nuestra derecha y pasamos un dígito de acarreo a la izquierda, tal como en la suma convencional; pero el dígito de acarreo que pasamos a la izquierda es el resultado del cálculo anterior y no el actual. En cada ciclo de reloj, los acarreos solo tienen que avanzar un paso, y no n pasos como en la suma convencional.

Como las señales no tienen que moverse tan lejos, el reloj puede avanzar mucho más rápido.

Todavía es necesario convertir el resultado a binario al final de un cálculo, lo que en realidad significa simplemente dejar que los acarreos recorran todo el número como en un sumador convencional. Pero si hemos realizado 512 sumas en el proceso de realizar una multiplicación de 512 bits, el costo de esa conversión final se divide efectivamente entre esas 512 sumas, por lo que cada suma representa 1/512 del costo de esa suma "convencional" final.

Desventajas

En cada etapa de una adición de ahorro y transporte,

  1. Conocemos inmediatamente el resultado de la suma.
  2. Todavía no sabemos si el resultado de la suma es mayor o menor que un número dado (por ejemplo, no sabemos si es positivo o negativo).

Este último punto es un inconveniente cuando se utilizan sumadores con ahorro de acarreo para implementar la multiplicación modular (multiplicación seguida de división, manteniendo solo el resto). [4] [5] Si no podemos saber si el resultado intermedio es mayor o menor que el módulo, ¿cómo podemos saber si debemos restar el módulo?

La multiplicación de Montgomery , que depende del dígito más a la derecha del resultado, es una solución; aunque, al igual que la suma con acarreo y ahorro, conlleva una sobrecarga fija, de modo que una secuencia de multiplicaciones de Montgomery ahorra tiempo, pero una sola no. Afortunadamente, la exponenciación, que es efectivamente una secuencia de multiplicaciones, es la operación más común en criptografía de clave pública.

Un análisis cuidadoso de los errores [6] permite elegir si se debe restar el módulo, aunque no sepamos con certeza si el resultado de la suma es lo suficientemente grande como para justificar la resta. Para que esto funcione, es necesario que el diseño del circuito pueda sumar −2, −1, 0, +1 o +2 veces el módulo. La ventaja sobre la multiplicación de Montgomery es que no hay una sobrecarga fija asociada a cada secuencia de multiplicaciones.

Detalles técnicos

La unidad de acarreo-guardado consta de n sumadores completos , cada uno de los cuales calcula una única suma y bit de acarreo basándose únicamente en los bits correspondientes de los tres números de entrada. Dados los tres números de n bits a , b y c , produce una suma parcial ps y un acarreo por desplazamiento sc :

La suma total puede entonces calcularse así:

  1. Desplazando la secuencia de acarreo sc hacia la izquierda un lugar.
  2. Añadiendo un 0 al principio ( bit más significativo ) de la secuencia de suma parcial ps .
  3. Usando un sumador de acarreo de ondulación para sumar estos dos y producir el valor resultante ( n + 1) bits.

Véase también

Notas

  1. ^ El sumador de acarreo-guardado a menudo se abrevia como CSA, sin embargo, puede confundirse con el sumador de acarreo-salto .

Referencias

  1. ^ Earle, John G. (12 de julio de 1965), Circuito sumador con ahorro de acarreo enclavado para multiplicadores , patente estadounidense 3.340.388
  2. ^ Earle, John G. (marzo de 1965), "Sumador de acarreo y ahorro de tiempo con enclavamiento", Boletín de divulgación técnica de IBM , 7 (10): 909–910
  3. ^ von Neumann, John . Obras completas .
  4. ^ Parhami, Behrooz (2010). Aritmética informática: algoritmos y diseños de hardware (2.ª ed.). Nueva York: Oxford University Press. ISBN 978-0-19-532848-6.OCLC 428033168  .
  5. ^ Lyakhov, P.; Valueva, M.; Valuev, G.; Nagornov, N. (2020). "Filtrado digital de alto rendimiento en unidades de acumulación-multiplicación truncadas en el sistema numérico de residuos". IEEE Access . 8 : 209181–209190. doi : 10.1109/ACCESS.2020.3038496 . ISSN  2169-3536.
  6. ^ Kochanski, Martin (19 de agosto de 2003). "Un nuevo método de multiplicación modular serial" (PDF) . Archivado desde el original (PDF) el 16 de julio de 2018. Consultado el 16 de julio de 2018 .

Lectura adicional