Árbol de sumadores con compresores 4:2. ¿Qué hacer con Cout?

Estoy tratando de construir un árbol sumador usando compresores 4:2. Quiero sumar 16 bytes en total, así que pensé que una posible arquitectura para ese árbol sería la siguiente:

ingrese la descripción de la imagen aquí

Cada sumador de 4 bytes tiene 3 salidas, las 2 son la suma y el acarreo (que enviamos al siguiente sumador) y la tercera es el Cout del último compresor 4:2 del sumador.

Mi pregunta es, que hacer con el Cout? ¿Cómo debo agregarlo al resto de la suma?

¿ 4 bytes o 4 bits?
4 bytes. Usé ocho compresores 4:2 en cada sumador de 4 bytes.

Respuestas (1)

Por lo general, cuando decimos "compresor" como su uso en el título de un compresor 4: 2, es una operación con pérdida , ya que está asignando 16 (2 ^ 4) valores de entrada a 4 (2 ^ 2) valores de salida. Estos se usan típicamente en arquitecturas de grandes multiplicadores donde es un problema común calcular productos parciales y no la suma total. Estos a veces se denominan acarreos y guardados porque los acarreos se guardan, si se necesitan más tarde, pero a menudo se ignoran. (Fuente: he diseñado una ALU para un microprocesador comercial).

Pero asumiendo que el resto de su diagrama cuando dice Sumador de 4 bytes, que en realidad quiere decir que se implementa un sumador completo, entonces puede hacer lo que quiere hacer. No importa cómo se implementen los sumadores en el interior, siempre que no tengan pérdida, es decir, verdaderos sumadores. Estoy haciendo esa distinción en base a su comentario de que también usó compresores dentro de cada sumador de 4 bytes.

Esencialmente, en este punto, solo está agregando varias sumas parciales en serie y, por lo tanto, no necesita hacer ninguna propagación de acarreo. En ese caso, debe seguir ampliando su sumador para que se ajuste a todos los resultados posibles de la suma. He dibujado esto a continuación. Deberá ampliar su resultado en tres bits y anteponerlo a la suma. Para ver por qué esto tiene sentido, piense en el caso en el que está agregando 0xFFFFFFFF sin firmar cuatro veces.

ingrese la descripción de la imagen aquí

De hecho, tengo que implementar una arquitectura dada, donde necesitamos la Suma de Diferencias Absolutas (para una unidad de procesamiento de Estimación de Movimiento). En esa arquitectura se sugiere utilizar compresores 4:2 para beneficiarse de la paralelización. Entonces, si entiendo correctamente, me sugiere mantener el resultado final del árbol sumador (señal de 32 bits), hacer una suma de las señales Cout de cada sumador (que será una señal de 3 bits) y concatenar los dos, siendo la señal Cout de 3 bits el MSB. De esta manera no habrá ninguna pérdida. ¿Bien?
No estoy familiarizado con la Suma de diferencias absolutas, por lo que tendrá que decidir por sí mismo si lo que dije allí es relevante para su aplicación particular. Si desea una suma completa de estas 4 palabras de 32 bits, entonces lo que dije funcionará. Si está obteniendo restas en algunos de estos (las diferencias, supongo), entonces debería poder hacerlo con la inversión estándar de una entrada y un acarreo para la aritmética de complemento a dos. Pero para tener una suma verdadera, necesita extender el ancho de bits del resultado y colocar esos acarreos en un sumador de 3 bits esencialmente (2 con acarreo).