Questa immagine è tratta da Computer Organization and Design, Fourth Edition, David A. Patterson, John L. Hennessy. Ci scusiamo per la bassa risoluzione.
Non riesco a capirlo. Posso capire perché i bit a destra diventano lsb nel prodotto (Product1, Product0), ma poi la stessa cosa viene eseguita per i bit a sinistra. E i carry? Prova questo per Mcand e Mplier pari a 2 ^ 31. Quindi il Product63 corretto è 0 (perché il risultato corretto è 2 ^ 62), ma questo progetto imposterebbe Product63 su 1, il che è sbagliato!
C'è qualche proprietà matematica profonda che potrebbe salvare questo progetto, o ho ragione a pensare che abbiamo bisogno di sommatori progressivamente più larghi a sinistra, man mano che scendiamo di livello?
Elaborazione
Per facilitare i lettori, ricordo come facciamo a matita e moltiplicazione della carta (esempio 4 bit).
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 (Prodotto)