Esercizio n. 7 - Microcodice Lo schema riportato qui di fianco illustra l architettura di processore a bus singolo di riferimento. Si scriva il microcodice capace di eseguire la coppia di istruzioni seguenti: ADD (Rx), (Ry) ADD ((Rx)), (Ry) che si vogliono aggiungere all Instruction Set Architecture del processore. Esse calcolano la somma di due addendi interi da, con prodotto da. Le interpretazioni RTL sono le seguenti: linee di indirizzo bus di memoria linee di dato costante 4 PC MAR MDR V bus interno del processore ordini decodificatore di istruzioni e circuito di controllo IR R 0 [Ry] [[Rx]] + [[Ry]] select MUX [Ry] [[[Rx]]] + [[Ry]] Ciascuna istruzione ingombra esattamente una parola da. Si supponga che l unità di controllo sia di tipo microprogrammato. Si devono pertanto prevedere la fase di prelievo comune, i microsalti (denotati simbolicamente) necessari per analizzare ciascuna istruzione e le fasi di esecuzione; se queste hanno microcodice in comune, si cerchi di unificarle per quanto possibile. linee di comando della ALU add sub and A ALU R Z B riporto in ingresso R n 1 SP TEMP SI COMPILINO LE DUE TABELLE RIPORTATE A PAGINA SUCCESSIVA. SI BADI BENE CHE IL NUMERO DI RIGHE NON È SIGNIFICATIVO. Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n. 1 -- pagina 14 di 18
µ ind. Operazione (in RTL) SOLUZIONE PIÙ OVVIA 0 MAR [PC], Z [PC] + 4, preleva 1 PC [Z], V [Z], attendi 2 IR [MDR] 3 decodifica codice operativo, se (modo = (Rx), ((Rx)).) và a µ ind. a, b a a + 1 a + 2 a + 3 (altro microcodice) MAR [Rx], leggi, attendi V [MDR] MAR [Ry], leggi, attendi Z [MDR] + [V] a + 4 MDR [Z], scrivi, attendi, finisci (o và a µ ind. 0) b (altro microcodice) MAR [Rx], leggi, attendi b + 1 MAR [MDR], leggi, attendi, và a µ ind. a + 1 µ ind. Ordini 0 PC out, MAR in, select 4, Z in, read, add 1 Z out, PC in, V in, WMFC 2 MDR out, IR in 3 decode opcode field of IR, if (mode = (Rx), ((Rx))) goto µ addr. a, b a a + 1 a + 2 a + 3 (altri microordini) Rx out, MAR in, read, WMFC MDR out, V in Ry out, MAR in, read, WMFC MDR out, select V, Z in, add a + 4 Z out, MDR in, write, WMFC, end (or goto µ addr. 0) b (altri microordini) Rx out, MAR in, read, WMFC b + 1 MDR out, MAR in, read, WMFC, goto µ addr. a + 1 Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n. 1 -- pagina 15 di 18
C è un altra soluzione praticabile, di cui do solo la formualzione RTL µ ind. Operazione (in RTL) SOLUZIONE MENO OVVIA 0 MAR [PC], Z [PC] + 4, preleva 1 PC [Z], V [Z], attendi 2 IR [MDR] 3 decodifica codice operativo, và a µ ind. a (serve solo per integrare nel microprog. completo) (altro microcodice) a MAR [Rx], leggi, attendi, se (modo = (Rx), ((Rx)).) và a µ ind. a + 2, a + 1 a + 1 a + 2 a + 3 a + 4 MAR [MDR], leggi, attendi V [MDR] MAR [Ry], leggi, attendi Z [MDR] + [V] a + 5 MDR [Z], scrivi, attendi, finisci (o và a µ ind. 0) (altro microcodice) Si sfrutta il fatto che, comunque, il codice operativo dell istruzione è sempre in IR, e quindi lo si può rianalizzare ogniqualvolta serva per decidere come condizionare l esecuzione del microcodice, saltando parti o inserendo aggiunte. Questa seconda versione usa una microistruzione in meno della prima. Lista microordini, ovvia Informatica 2 Esame di lunedì 7 Luglio 2005 Esercizio n. 1 -- pagina 16 di 18
Esercizio n. 7 Microcodice di Istruzione Lo schema riportato qui di fianco illustra l architettura di processore a bus singolo di riferimento. Si scriva il microcodice dell istruzione seguente: JPL (R0), etichetta che si vuole aggiungere all Instruction Set Architecture del processore. L istruzione effettua un salto condizionato all indirizzo PC + etichetta se il contenuto della cella di memoria il cui indirizzo è presente in R0 è non negativo. Si suppone che l unità di controllo sia di tipo cablato e che la ALU abbia il comando test. Dando alla ALU tale comando, essa esamina il valore presente all ingresso B ed emette il bit di esito N secondo il segno di tale valore. Il formato dell istruzione è il seguente: si suppone di avere parole di memoria da 32 bit; l etichetta occupa una parola da 4 byte; pertanto la dimensione complessiva dell istruzione è di due parole da (una per il codice operativo e una per etichetta ). linee di comando della ALU linee di indirizzo bus di memoria select linee di dato add sub and costante 4 MUX A PC MAR MDR V ALU R Z bus interno del processore B riporto in ingresso ordini decodificatore di istruzioni e circuito di controllo IR R 0 R n 1 SP TEMP # passo ordini (il numero di righe non è significativo) 1 PC out, MAR in, select 4, Z in, read, add 2 Z out, PC in, V in, WMFC 3 MDR out, IR in 4 PC out, MAR in, select 4, Z in, read, add 5 Z out, PC in, V in, WMFC 6 MDR out, add, select V, Z in 7 R0 out, MAR in, read, WMFC 8 MDR out, test, if (N = 1) then end 9 Z out, PC in, end 10 11 12 Il bit di esito N è fornito direttamente dalla ALU a seguito del comando test. Informatica 2 Esame di lunedì 17 luglio 2006 - CON SOLUZIONI pagina 16 di 19
# passo ordini soluzione meno efficiente che usa il registro TEMP 1 PC out, MAR in, select 4, Z in, read, add 2 Z out, PC in, V in, WMFC 3 MDR out, IR in 4 PC out, MAR in, select 4, Z in, read, add 5 Z out, PC in, V in, WMFC 6 MDR out, TEMP in 7 R0 out, MDR in, read, WMFC 8 MDR out, test, if (N = 1) then end 9 TEMP out, select V, add, Z in 10 Z out, PC in, end 11 12 Rispetto alla prima soluzione occorre un ciclo in più, del tutto evitabile. N. B.: si badi bene che l unità di controllo è cablata, non micro-programmata (vedi libro di testo). Informatica 2 Esame di lunedì 17 luglio 2006 - CON SOLUZIONI pagina 17 di 19
Esercizio 4 - Microprogrammazione Prima parte Lo schema riportato qui di fianco illustra l architettura di processore a bus singolo di riferimento. Si scriva la sequenza di passi di controllo dell istruzione seguente: ADDMUL2 #costante, (SP) che si vuole aggiungere all Instruction Set Architecture del processore. Essa calcola la moltiplicazione per due del valore costante, dato come primo argomento (sorgente) e ne somma il risultato al secondo argomento, che è l elemento correntemente in cima alla pila, dato come secondo argomento (sorgente). Il prodotto viene sovrascritto in cima alla pila, la quale non muta in altezza; il secondo argomento funziona dunque anche come destinazione. La costante è lunga 31 bit e occupa una parola doppia da 4 byte, pertanto l ingombro complessivo dell istruzione è di due parole da (una parola di codice operativo e una parola aggiuntiva per la costante). Il registro SP individua il puntatore alla pila, e ovviamente l unità di controllo è capace di generare gli ordini SP in e SP out. La ALU può calcolare lo shift a sinistra di un bit e dispone dell ordine shiftsx (A o B) appropriato, pure generabile dalla unità di controllo. Si supponga che l unità di controllo sia di tipo cablato. linee di comando della ALU linee di indirizzo bus di memoria select linee di dato add sub and costante 4 MUX A PC MAR MDR V ALU R Z bus interno del processore B riporto in ingresso ordini decodificatore di istruzioni e circuito di controllo IR R 0 R n 1 SP TEMP Inoltre, siccome l istruzione ingombra due parole, la fase di prelievo può essere più complessa e lunga di quella standard per un istruzione ingombrante una sola parola; si rifletta bene su quale parte del prelievo sia quella standard e quale l eventuale aggiunta, e le si mettano in evidenza. SI COMPILI LA TABELLA SEGUENTE (il numero di righe non è significativo) Passo Ordini Operazione (in RTL) Fase 1 PC out, MAR in, select 4, Z in, read, add MAR [PC], Z [PC] + 4, leggi da mem. 2 Z out, PC in, V in, WMFC PC [Z], V [Z], attendi MFC 3 MDR out, IR in IR [MDR] 4 PC out, MAR in, select 4, Z in, read, add MAR [PC], Z [PC] + 4, leggi da mem. 5 Z out, PC in, WMFC PC [Z], attendi MFC prelievo parola di cod. op. e seq. I STANDARD prelievo par. agg. e seq. II AGGIUNTA 6 MDR out, V in V [MDR] 7 SP out, MAR in, read, selectv, shiftsxa, Z in MAR [SP], leggi da mem., Z shiftsx [V] 8 Z out, V in, WMFC Z [V], attendi MFC esecuzione 9 MDR out, select V, add, Z in Z [MDR] + [V] 10 Z out, MDR in, write, WMFC, end MDR [Z], scrivi in mem, attendi MFC, finisci 11 12 13 14 Informatica 2 Esame di lunedì 9 luglio 2007 CON SOLUZIONI pagina 11 di 15
COMMENTO: la parte standard del prelievo riguarda la prima parola dell istruzione, e deve essere uniforme per tutte le istruzioni giacché l unità di controllo non sa ancora quale sia l istruzione corrente; a partire dal passo 4 (compreso) il completamento del prelievo e l esecuzione sono liberamente specializzabili per l istruzione corrente; il prelievo della parola aggiuntiva si svolge come quello della parola di codice operativo; tuttavia, mentre l ordine V in al passo 2 è quanto meno molto opportuno in previsione che l istruzione sia di salto (anche se non è indispensabile, perché si potrebbe comunque rimediare più avanti seppure al prezzo di consumare più passi), al passo 4 non lo è certamente più perché ormai si sa che non è così. Seconda parte Si consideri l architettura del processore a 3 bus. Riscrivere i passi di controllo dell istruzione ADDMUL2 considerando quest architettura, supponendo che la ALU abbia a disposizione l ordine shiftsx e che esistano i registri SP e TEMP nel banco dei registri. Quale miglioramento si ottiene? bus R SI COMPILI LA TABELLA SEGUENTE (il numero di righe non è significativo) Passo Ordini Operazione (in RTL) 1 PCout, R = B, MARin, read, increment PC, WMFC MAR [PC], PC [PC] + 4, leggi, attendi 2 MDRoutB, R = B, IRin IR [MDR] 3 PCout, R = B, MARin, read, increment PC, WMFC MAR [PC], PC [PC] + 4, leggi, attendi 4 MDRoutB, shiftsxb, TEMPin TEMP shiftsx [MDR] 5 SPoutB, R = B, MARin, read, WMFC MAR [SP], leggi, attendi 6 MDRoutB, TEMPoutA, add, MDRin, write, WMFC, end MDR [MDR] + [TEMP], scrivi, attendi, fine 7 8 9 10 Si scende da 10 a 6 passi, con un guadagno del 40 %. Informatica 2 Esame di lunedì 9 luglio 2007 CON SOLUZIONI pagina 12 di 15