8 votos

¿Qué son los sumadores de avance y los sumadores de ripple-carry?

Ya veo sumadores de avance de carga y sumadores de ripple-carry términos que se utilizan a menudo. No tengo ni idea de lo que significa ninguno de ellos (ni del tipo de arquitectura que describen).

¿Puede alguien explicar qué es cada uno, por qué uno puede ser más rápido que el otro y para qué se utiliza cada uno?

Además, ¿hay alguna fuente externa que pueda ayudar en este asunto?

0 votos

Utiliza el método habitual de lápiz y papel para sumar 1 al valor 9999. Eso es un acarreo de ondas.

7voto

iDroid Explorer Puntos 128

Un sistema de sumadores de arrastre es una secuencia de sumadores completos estándar que permite sumar números que contienen más bits que los de un único sumador completo. Cada sumador completo tiene un bit de arrastre (Cin) y un bit de salida (Cout), y los sumadores se conectan conectando Cout en el paso k con Cin en el paso k+1 (Cin en el paso 0 es C0 en la imagen, Cout en el paso 3 es C4 en la imagen)

Ripple-carry adder - picture from Wikipedia

El reto de los sumadores de ripple-carry es el retardo de propagación de los bits de carry. Supongamos que, en un instante, los valores de A y B cambian, de manera que

A1 = 0
B1 = 1
A0 = 1
B0 = 1

Dado que A0 y B0 están altos, el primer sumador completo producirá un acarreo, es decir, C1 = 1. Sin embargo, la lógica tarda un tiempo en asentarse, por lo que C1 no cambia hasta un poco después de que A1 y B1 hayan cambiado. Por lo tanto, antes de que aparezca C1, el segundo sumador completo no produce un acarreo, pero a medida que aparece C1, el segundo sumador volverá a calcular y producirá un acarreo, es decir, C2 = 1. En el peor de los casos, C4 no se calcula correctamente hasta 4*retraso de propagación, y Cn no se calcula hasta n*retraso de propagación.

Un sistema sumador de carry-lookahead resuelve este problema, calculando si se generará un carry antes de calcular la suma. Existen múltiples esquemas para hacer esto, por lo que no hay "un" circuito que constituya un sumador de avance. La idea es algo así:

Look-ahead carry adder

El cálculo de C4 no es más rápido que en el ripple-carry anterior, ni tampoco PG y GG - la magia sólo ocurre cuando se juntan varios de estos bloques para sumar números aún más grandes.

La parte importante a tener en cuenta de la imagen, es que el bloque púrpura está produciendo tres valores: C4, PG (Propagación) y GG (Generación). PG se eleva si este bloque propagará Cin a Cout, y GG se eleva si el bloque generará un desbordamiento independientemente de Cin. (También es posible que el bloque no propague ni genere un carry, en cuyo caso tanto PG como GG son bajos, y Cout es 0). PG y GG pueden ser calculados en el bloque púrpura independientemente del valor de C0 - así, cuando C0 finalmente llega, el bloque púrpura puede simplemente consultar su resultado previamente calculado, y si el resultado es una "propagación", entonces C0 se propaga directamente a C4; esto es cuatro veces más rápido que propagar a través de los cuatro sumadores completos.

La razón por la que el bloque tiene las salidas PG y GG es para que, de forma jerárquica, podamos adquirir velocidades de propagación aún mayores.

Vea también: http://faculty.kfupm.edu.sa/COE/abouh/Lesson3_3.pdf

0 votos

El único punto que vale la pena añadir a esta excelente respuesta es que si estás decidiendo entre arquitecturas de sumadores para un proyecto FPGA, Xilinx y probablemente otros utilizan lógica de acarreo rápida dedicada para el sumador de acarreo de rizado, de modo que para la mayoría de los diseños FPGA, el sumador de acarreo de rizado más simple es prácticamente tan rápido como el carry lookahead.

0 votos

En cuanto al uso de cada uno, el ripple carry utiliza menos lógica (área, energía dinámica y estática), por lo que puede ser preferible cuando es lo suficientemente rápido (¿Cortex-M0?). La velocidad del sumador rápido aumenta con el número de bits, por lo que un sumador más amplio hace que estas técnicas de aceleración sean más atractivas. Como siempre, la wikipedia es una fuente decente: es.wikipedia.org/wiki/Envío de ida y vuelta

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X