Hardware de multiplicación paralela

4

Esta foto está tomada de Organización y diseño de computadoras, Cuarta edición, David A. Patterson, John L. Hennessy. Lo siento por la baja resolución.

No puedo moverme la cabeza. Puedo ver por qué los bits a la derecha se convierten en lsb en el producto (Producto1, Producto0), pero luego se hace lo mismo para los bits a la izquierda. ¿Qué hay de lleva? Prueba esto para Mcand y Mplier igual a 2 ^ 31. Entonces, el Producto 63 correcto es 0 (porque el resultado correcto es 2 ^ 62), pero este diseño establecería el Producto 63 en 1, ¡lo cual es incorrecto!

¿Existe alguna propiedad matemática profunda que pueda rescatar este diseño, o tengo razón al pensar que necesitamos agregadores cada vez más amplios a la izquierda, a medida que bajamos los niveles?

Elaboración

Para facilitar a los lectores, recuerdo cómo hacemos la multiplicación con lápiz y papel (ejemplo de 4 bits).

            M3 M2 M1 M0 (Mcand)
          * m3 m2 m1 m0 (Mplier)
-----------------------
            a3 a2 a1 a0 (Mplier0*Mcand)
+        b3 b2 b1 b0    (Mplier1*Mcand)
+     c3 c2 c1 c0       (Mplier2*Mcand)
+  d3 d2 d1 d0          (Mplier3*Mcand)
-----------------------
p7 p6 p5 p4 p3 p2 p1 p0 (Product)
    

1 respuesta

3

Estás en lo correcto, y el diagrama está mal. Definitivamente necesitas adiciones más anchas a medida que avanzas por el árbol como se muestra. Cada uno de los resultados del primer nivel de sumadores tiene 34 bits de ancho, los del segundo nivel tienen 36 bits de ancho, etc. Las sumas del tercer nivel son de 40 bits, y las sumas del cuarto nivel son de 48 bits.

Cuando llegue al último (quinto) nivel, estará sumando un número de 48 bits (la suma de los productos parciales de alto orden) y un número de 32 bits (la suma desplazada de la baja). -ordenar productos parciales).

Tenga en cuenta que obtiene 1 LSB del producto final antes del primer nivel de sumadores, otro de su salida, dos LSB más del segundo nivel, etc. Cuando llega a la entrada del quinto nivel, ya tiene 16 LSB del resultado y el sumador final le da los 48 bits restantes.

Aunque a primera vista es tentador sacar a los MSB de una manera similar, siempre es posible construir un ejemplo en el que un acarreo en el sumador final deba propagar todo el camino hacia el MSB del resultado.

Nota al margen: Tengo un libro Arquitectura de computadora: un enfoque cuantitativo , 2ª edición, publicado en 1996 por los mismos dos autores. Me pregunto si mi libro es un predecesor tuyo o un esfuerzo completamente diferente. No tiene la figura que muestra en su pregunta en ella.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas