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)