Firmware Multiplier Prof. lberto Borghese Dipartimento di Informatica borghese@di.unimi.it Università degli Studi di Milano Riferimenti sul Patterson 5a ed.: B.6 & 3.4 /33 Sommario Il moltiplicatore firmware Ottimizzazione dei moltiplicatori firmware 2/33
L approccio firmware Nell approccio firmware, viene inserita nella LU una unità di controllo e dei registri. L unità di controllo attiva opportunamente le unità aritmetiche ed il trasferimento da/verso i registri. pproccio controllore-datapath. Viene inserito un microcalcolatore dentro la LU. Il primo microprogramma era presente nell IBM 360 (964). 3/33 L approccio firmware vs hardware La soluzione HW è più veloce ma più costosa per numero di porte e complessità dei circuiti. La soluzione firmware risolve l operazione complessa mediante una sequenza di operazioni semplici. E meno veloce, ma più flessibile e, potenzialmente, adatta ad inserire nuove procedure. La soluzione HW è percorsa per le operazioni frequenti: la velocizzazione di operazioni complesse che vengono utilizzate raramente non aumenta significativamente le prestazioni (legge di mdahl). 4/33 2
lgoritmi per la moltiplicazione Il razionale degli algoritmi firmware della moltiplicazione è il seguente. Si analizzano sequenzialmente i bit del moltiplicatore e: ) Si mette 0 nella posizione opportuna (se il bit analizzato del moltiplicatore = 0). 2) Si mette una copia del moltiplicando nella posizione opportuna (se il bit analizzato del moltiplicatore è = ). Moltiplicando Moltiplicatore Prodotto 0 x 0 = 0 + 0 0 0 0 0 - --------------------- 0 0 - - - 0 0 0 0 5/33 Shift (scalamento) Dato su bit: a j = a j k k shift amount (>, =, < 0). Effettuato al di fuori delle operazioni selezionate dal Mux della LU, da un circuito denominato Barrel shifter. Tempo comparabile con quello della somma. Operazioni codificate in modo specifico nell IS. a n a n- a a 0 Shift dx 0 a n a 2 a Il bit a 0 si perde. Il bit a n = 0. 6/33 3
Moltiplicazione utilizzando somma e shift Utilizzo un registro prodotto da 64 bit, inizializzato a 0. Itero per ogni bit del moltiplicatore: ) Sommo il moltiplicando al prodotto se il bit =. B) Shift a sx di un bit il moltiplicando ( = * base). 27 x 7 = 89 0 x = 0 0 0 0 0 + 0 B 0 + P 0 - - 0 0 0 0 + 0 - - - 0 0 7/33 Inizio: P = 0; k = 0 no b k = 0? sì P = + P Shift sx ; k =k+ no k=n? Fine sì L algoritmo 8/33 B P = 0 + = *2 P 2 = P + 2 = *2=*4 P 3 = P 2 + 2 0 x = 0 0 0 0 0 + P 0 0 + P 0 - - 0 0 0 0 + P 0 - - 2-0 0 P contiene le somme parziali, al termine conterrà la somma totale, cioè il risultato del prodotto. 4
Implementazione circuitale gli attori - moltiplicando (shift a sx), 64 bit LU 64 B moltiplicatore, bit P Prodotto, 64 bit Controllo 9/33 Implementazione circuitale - moltiplicando (shift a sx), 64 bit B moltiplicatore, bit LU 64 add Shift sx bit P Prodotto, 64 bit Write Controllo Qual è il problema? 0/33 5
Esercizi Costruire il circuito HW che esegui la moltiplicazione 7 x 9 in base 2. Eseguire la stessa moltiplicazione secondo l algoritmo visto, indicando passo per passo il contenuto dei 3 componenti: che contiene il moltiplicando, B che contiene il moltiplicatore e P che contiene somme parziali ed il risultato finale. /33 Sommario I moltiplicatori firmware Ottimizzazione dei moltiplicatori firmware 2/33 6
Implementazione circuitale ottimizzata - I - moltiplicando (shift a sx), 64 bit B moltiplicatore, (shift right) bit. LU 64 add shift sx shift dx bit b 0 P Prodotto, 64 bit Write Controllo 3/33 no Inizio; P = 0, k = 0 P = + P b 0 = 0? Shift a sx, Shift B dx; k=k+ k=n? Fine sì sì no L algoritmo - I P B = * 2 0 = * 2 = * 2 2 0 x = 0 0 0 0 0 + P 0 0 + P 0 - - 0 0 0 0 + P 0 - - 2-0 0 4/33 7
Esempio - I 0000 000 000 000 x 00 = ------- Moltiplicazione su 4 bit. 5/33 Razionale per una seconda implementazione Meta dei bit del registro moltiplicando vengono utilizzati ad ogni iterazione. d ogni iterazione si aggiunge bit al registro prodotto. d ogni iterazione sommo N cifre (pari al numero di cifre del moltiplicando). Spostamento della LU sul registro prodotto. Oppure Si sposta la somma dei prodotti parziali verso dx di bit ad ogni iterazione. 0 x = 0 0 0 0 0 + P 0 0 + P 0 - - 0 0 0 0 + P 0 - - 2-0 0 6/33 8
Implementazione ottimizzata - II a implementazione 2 a implementazione 0 x = 0 0 0 0 0 + 0 0 + 0 - - 0 0 0 0 + 0 - - - 0 0 0 Sposto a sx il moltiplicando Sposto a dx il prodotto 0 P primo prodotto parziale - moltiplicando, bit LU 64 P Prodotto, 64 bit Qual è il problema? 7/33 add w Controllo shift dx 0 0 B moltiplicatore, (shift right) bit. shift dx Implementazione ottimizzata - II a implementazione 2 a implementazione 0 x = 0 0 0 0 0 + 0 0 + 0 - - 0 0 0 0 + 0 - - - 0 0 0 Sposto a sx il moltiplicando Sposto a dx il prodotto 0 P primo prodotto parziale LU Parte modificabile 8/33 Parte non modificabile 0 0 9
Razionale dell implementazione - III Il numero di bit del registro prodotto corrente (somma dei prodotti parziali) più il numero di bit da esaminare nel registro moltiplicando rimane costante ad ogni iterazione (pari a 64 bit). Si può perciò eliminare il registro moltiplicatore. 0 x = 0 0 0 0 0 + 0 0 + 0 - - 0 0 0 0 + 0 - - - 0 0 9/33 Circuito ottimizzato - III Moltiplicando, bit P 0 0 LU add P Prodotto, 63 bit Moltiplicatore, 3 0 bit Shift dx Write Controllo bit bit Suddivisione logica di P, alla prima iterazione Il moltiplicando è allineato sempre ai bit più significativi del prodotto. d ogni iterazione, il prodotto si allarga, il moltiplicatore si restringe. 20/33 0
Inizio; P = 0 B, k = 0 L algoritmo ottimizzato - III no sì b 0 = 0? P N N*2- =P N N*2- + Shift P B a dx; k=k+ no k=n? Fine sì B P 0 x = 0 0 0 0 0 + 0 0 + 0 - - 0 0 0 0 + 0 - - - 0 0 2/33 Esempio di esecuzione dell algoritmo ottimizzato - III Il moltiplicando è allineato (e sommato) ai bit più significativi del prodotto. 22/33
Circuito finale moltiplicatore firmware Moltiplicando, bit P 0 0 LU add P Prodotto, 63 bit Moltiplicatore, 3 0 bit Shift dx Write Controllo bit bit bit 64 per evitare overflow nelle somme parziali No overflow finale 23/33 Suddivisione logica di P, alla prima iterazione Le somme parziali possono occupare un bit in più per effetto del riporto. Circuito finale ottimizzato moltiplicatore firmware Moltiplicando, bit P 0 0 Il segnale di add non è necessario se è previsto un segnale di write di P H LU Shift a dx è comandato dal clock p 0 P Prodotto, 63 bit Moltiplicatore, 3 0 bit Clock Controllo Write P H bit bit bit 64 per evitare overflow nelle somme parziali No overflow finale 24/33 Suddivisione logica di P Le somme parziali possono occupare un bit in più per effetto del riporto. 2
Unità di controllo I - STG Reset (clear) S 0 / StartCount Reset P H Clk contatore k N- Comparatore k = N- Start k!=n-, P 0 = S 2 / dd Write (P H + -> P H ) S / Test k=n- S 4 / End k!=n-, P 0 = S 3 / Not dd 25/33 Unità di controllo I - STT S = {Start, Test, dd, Not dd, End} I = {K, P 0, Start_counter} Y = {Reset_counter, Write P H, Reset P H } K!= N- P 0 = Start c K = N- P 0 = Start c K!= N- P 0 = 0 Start c K = N- P 0 = Start c Start c P 0, K Uscita StartCount Test Test Test Test X Test dd End Not dd End X dd Test Test Test Test X Reset_c Not Write P H Reset P H Not Reset_c Not Write P H Not Reset P H Not Reset_c Write P H Not Reset P H Not dd Test Test Test Test X End Start End Start End StartCount 26/33 Not Reset_c Not Write P H Not Reset P H 3
Unità di controllo - II - STG Reset (clear) S 0 / StartCount Reset P H Clk contatore k Comparatore N k!= N S / Multiply Write P H p 0 k = N Start k = N S 2 / End 27/33 Write (P H + -> P H ) Unità di controllo - II - STT S = {Start, Multiply, End} I = {K, Start_counter} Y = {Reset_counter, Write P H, Reset P H } K!= N Start_c K = N Not Start_c K!= N Start K = N Not Start_c Start Multiply Multiply Multiply Multiply Multiply Multiply End Multiply End End Start End Start End Uscita Reset_c Not Write P H Reset P H Not Reset_c Write P H Not Reset P H Not Reset_c Not Write P H Not Reset P H 28/33 4
pprocci tecnologici alla LU Quattro approcci tecnologici alla costruzione di una LU (e di una CPU): pproccio strutturato. nalizzato in questa lezione. pproccio hardware programmabile (e.g. PL). d ogni operazione corrisponde un circuito combinatorio specifico. pproccio ROM. E un approccio esaustivo (tabellare). Per ogni funzione, per ogni ingresso viene memorizzata l uscita. E utilizzabili per funzioni molto particolari (ad esempio di una variabile). Non molto utilizzato. pproccio firmware (firm = stabile), o microprogrammato. Si dispone di circuiti specifici solamente per alcune operazioni elementari (tipicamente addizione e sottrazione). Le operazioni più complesse vengono sintetizzate a partire dall algoritmo che le implementa. 29/33 P0 = 0 K!= N P 0 = K!= N P0 = 0 K = N P 0 = K = N Uscita Start Multiply Multiply Multiply Multiply Reset Not Write P H Reset P H Multiply Multiply Multiply End End Not Reset Write P H Not Reset P H End 30/33 5
L approccio firmware Nell approccio firmware, viene inserita nella LU una unità di controllo e dei registri. L unità di controllo attiva opportunamente le unità aritmetiche ed il trasferimento da/verso i registri. pproccio controllore-datapath. Viene inserito un microcalcolatore dentro la LU. Il primo microprogramma era presente nell IBM 360 (964). 3/33 L approccio firmware vs hardware La soluzione HW è più veloce ma più costosa per numero di porte e complessità dei circuiti. La soluzione firmware risolve l operazione complessa mediante una sequenza di operazioni semplici. E meno veloce, ma più flessibile e, potenzialmente, adatta ad inserire nuove procedure. La soluzione HW è percorsa per le operazioni frequenti: la velocizzazione di operazioni complesse che vengono utilizzate raramente non aumenta significativamente le prestazioni (legge di mdahl). /33 6
Sommario I moltiplicatori firmware Ottimizzazione dei moltiplicatori firmware 33/33 7