Domanda:
Parallel multiplication hardware
Panayiotis Karabassis
2013-01-30 02:14:26 UTC
view on stackexchange narkive permalink

Questa immagine è tratta da Computer Organization and Design, Fourth Edition, David A. Patterson, John L. Hennessy. Ci scusiamo per la bassa risoluzione.

enter image description here

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)  
Una risposta:
Dave Tweed
2013-01-30 11:14:01 UTC
view on stackexchange narkive permalink

Hai ragione e il diagramma è sbagliato. Hai sicuramente bisogno di vele più larghe mentre ti sposti lungo l'albero come mostrato. Ciascuno dei risultati del primo livello di sommatori è largo 34 bit, quelli del secondo livello sono larghi 36 bit, ecc. Le somme del terzo livello sono 40 bit e le somme del quarto livello sono 48 bit.

Di la volta che arrivi all'ultimo (quinto) livello, stai sommando un numero a 48 bit (la somma dei prodotti parziali di ordine elevato) e un numero a 32 bit (la somma spostata dei prodotti parziali di ordine inferiore ).

Nota che ottieni 1 LSB del prodotto finale prima del primo livello di sommatori, un altro dal loro output, altri due LSB dal secondo livello e così via. Quando arrivi all'input del quinto livello, hai già 16 LSB del risultato e il sommatore finale ti dà i restanti 48 bit.

Anche se a prima vista si è tentati di tirare fuori MSB in modo simile, è sempre possibile costruire un esempio in cui un riporto nel sommatore finale deve propagarsi fino al MSB del risultato.

Nota a margine: ho un libro Computer Architecture: A Quantitative Approach , 2a edizione, pubblicata nel 1996 dagli stessi due autori. Mi chiedo se il mio libro sia un tuo predecessore o uno sforzo completamente diverso. Non contiene la cifra che mostri nella tua domanda.

Grazie, molto ben coperto. Il tuo libro "A Quantitative Approach", che sarà presto pubblicato nella sua quinta edizione secondo Amazon, è menzionato in "mine", come un libro più avanzato che copre gli stessi argomenti (ad esempio pipelining) in profondità.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...