Struttura del processore L unità di elaborazione Corso ACSO prof. Cristina SILVANO Politecnico di Milano Datapath ad un solo bus interno Faremo riferimento ad una generica CPU e a una memoria con parole da 32 bit (istruzioni e dati) I registri: i PC: Program Counter registro contatore di programma; MAR/MDR (registri per accesso a memoria): Memory Address Register e Memory Data Register IR: Instruction Register registro istruzione in esecuzione; R Rn: Registri del banco di registri; TEMP, V, Z (registri interni non visibili al programmatore); L unità di controllo: Decodifica le istruzioni; Emette i segnali di controllo interni e esterni (bus per accesso a memoria e periferiche); Può essere cablata o microprogrammata. 2 Pag.
bus interno del processore comandi ordini PC linee di indirizzo bus di memoria linee di dato MAR MDR decodificatore di istruzioni e circuito di controllo IR costante 4 V R select MUX banco di registri linee di comando della ALU add sub and A ALU R B riporto in ingresso R n TEMP Z 3 Collegamenti registri e bus interno del processore Riin bus interno del processore Ri Riout Vin V costante da 4 bit select MUX A ALU R B Zin Z Zout 4 Pag. 2 2
Il registro MDR: collegamenti con bus esterno di memoria e con bus interno del processore linee di dato del bus esterno di memoria MDRoutE MDRout bus interno del processore MDR MDRinE MDRin Sequenza di controllo La sequenza di controllo per eseguire una istruzione assembly è composta da diversi passi, uno per ogni ciclo di clock del processore: Fetch (prelievo); Decode (decodifica); Execute (esecuzione). Ad ogni passo (ciclo di clock) vengono generati i comandi (attivi in parallelo) Esempi di comandi: Lettura di un registro (dal registro al bus interno) R out Scrittura su un registro (dal bus interno al registro) R in Operazione dell ALU: add, sub,... Lettura e scrittura in memoria: read, write Comandi mutuamente esclusivi Lettura da registro: un solo registro alla volta può essere caricato sul bus interno Singola operazione dell ALU 5 6 Pag. 3 3
Esempio di operazione aritmetica: R3 < [R] + [R2] Passo Comandi Operazione (in RTL). R out V < [R] 2. R2 out, select V, add, Z in Z < [V] + [R2] 3. Z out, R3 in R3 < [Z] RTL: Register Transfer Level o livello di trasferimento tra registri Esempio di caricamento da memoria (LOAD): move (R), R2! R2 < [[R]] Passo Comandi Operazione (in RTL). R out, MAR in, read MAR < [R], read 2. MDR ine, WMFC MDR < [data bus], wait 3. MDR out, R2 in R2 < [MDR] WMFC: Wait for Memory Function Completion 7 8 Pag. 4 4
Esempio di memorizzazione: (STORE): move R2, (R)![R] < [R2] Passo Comandi Operazione (in RTL). R out, MAR in MAR < [R] 2. R2 out, MDR in, write MDR < [R2], write 3. MDR oute, WMFC data_bus < [MDR], wait WMFC: Wait for Memory Function Completion 9 Accesso a memoria Riscontro del completamento dell operazione Segnale MFC (Memory function completion) E attivato dallo slave e indica il completamento dell operazione Ad esempio in lettura indica che il dato è presente sul bus Comando WMFC (wait for MFC): questo ordine blocca l avanzamento dei passi di controllo finché il processore non riceve il segnale MFC. Lettura da memoria: l uso del registro MDR può avvenire solo al passo successivo a quello associato a WMFC. In generale quindi l ordine WFMC viene emesso al passo precedente a quello in cui si utilizza il registro MDR Scrittura in memoria: l ordine WMFC viene emesso in generale nello stesso passo in cui viene emesso il segnale di write Clock e temporizzazione: Il fronte attivo per la memorizzazione in un registro è quello di salita Pag. 5 5
passo 2 3 Temporizzazione dell operazione di caricamento (lettura) da memoria (LOAD) clock MARin indirizzo i read 2 3 4 5 R / W MDRinE dato MFC (riscontra) MDRout Ottimizzazione del trasferimento da memoria Passo Comandi Operazione (in RTL). R out, MAR in, read, WMFC MAR < [R], read, wait 2. MDR out, R2 in R2 < [MDR] WMFC: Wait for Memory Function Completion 2 Pag. 6 6
Sequenza di controllo completa: ADD R, R Consideriamo l istruzione ASM ADD R, R! R< [R] + [R] Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. R out V < [R] 5. R out, select V, add, Z in Z < [V] + [R] 6. Z out, R in, end R < [Z] 3 Sequenza di controllo completa: ADD (R3), R Consideriamo l istruzione ASM ADD (R3), R!R < [[R3]] + [R] Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. R3 out, MAR in, read MAR < [R3], read 5. R out, WMFC V < [R], wait 6. MDR out, select V, add, Z in Z < [V] + [MDR] 7. Z out, R in, end R < [Z] 4 Pag. 7 7
Sequenza di controllo completa: MOVE (R), R2 Consideriamo l istruzione ASM MOVE (R), R2! R2 < [[R]] Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. R out, MAR in, read MAR < [R], read 5. MDR ine, WMFC MDR < [data bus], wait 6. MDR out, R2 in, end R2 < [MDR] 5 Sequenza di controllo completa: MOVE #costante, R Consideriamo l istruzione ASM MOVE #costante, R (istruzione codificata su 2 parole) : R < costante Passo Fetch Comandi (identica per tutte tte le istruzioni): ioni): Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 5. Z out, WMFC PC < [Z], wait 6. MDR out, R in, end R < [MDR] 6 Pag. 8 8
Sequenza di controllo completa: salto incondizionato Consideriamo l istruzione ASM: JMP offset(pc)! PC offset + [PC] Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V < [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. Offset of IR out, Select V, Add, Z in Z < [V] + offset_ir out 5. Z out, end PC < [Z] 7 Sequenza di controllo completa: salto condizionato Consideriamo l istruzione ASM: BCC < offset(pc)! BCC < PC offset + [PC] Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V < [Z], wait 3. MDR out, IR in IR < [MDR] Decode: decodificare l IR; Execute: 4. Offset of IR out, Select V, Add, Z in if bit N= end Z < [V] + offset_ir out if bit N= end 5. Z out, end PC < [Z] 8 Pag. 9 9
Le istruzioni ISA di salto condizionato BRA LABEL (long istruzione codificata su 2 parole) PC < LABEL + [PC] Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] 4. PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 5. Z out, Vin, WMFC PC < [Z], V < [Z], wait 6. MDR out, Select V, Add, Z in Z < [V] + [MDR] 7. Z out, end PC < [Z] 9 Le istruzioni ISA di salto condizionato Bcc < OFFSET (long istruzione codificata su 2 parole) Passo Comandi Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] 4. PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read 5. Z out, Vin, WMFC, if bit N= end PC < [Z], V < [Z], wait, if bit N= end 6. MDR out, Select V, Add, Z in Z < [V] + [MDR] 7. Z out, end PC < [Z] 2 Pag.
Struttura del processore L unità di controllo Unità di controllo L unità di controllo emette i segnali di controllo (comandi) che regolano il funzionamento del datapath. L unità di controllo può essere: cablata: costruita adhoc; basata su decodificatore di istruzioni (che utilizza l IR), contatore (per scandire la successione dei passi di controllo), codici di condizione, segnali esterni e rete combinatoria in grado di generare i comandi ad ogni passo di controllo. microprogrammata: decodifica difi le istruzioni i i e legge in una memoria di controllo (controlstore) tramite micropc una microparola con i segnali di controllo da emettere. 22 Pag.
Unità di controllo cablata clock blocca il conteggio contatore passi di controllo decodificatore di passo ripristina lo stato iniziale T T 2 T n IR decodificatore di istruzione ISTR ISTR 2 ISTR m generatore di ordini segnali esterni bit di esito (codici di cond.) run (WMFC) end 23 ordini Esempio: Generazione segnale Z in Z in = T OR T4 AND "IR=branch" OR T6 AND "IR=add" OR branch add T 4 T 6 T Z in 24 Pag. 2 2
Unità di controllo microprogrammata Il comportamento dell unità di controllo microprogrammata dipende esclusivamente dal contenuto della memoria di controllo (control store) detta anche memoria di microprogramma. I bit di controllo di ogni passo sono memorizzati in una parola di memoria della control store Ogni parola di memoria viene chiamata microistruzione La sequenza di microistruzioni corrispondenti ai passi di controllo per l esecuzione di un istruzione ISA costituisce una microroutine L insieme di microroutine costituisce il microprogramma I calcolatori dove è possibile modificare il contenuto del control store sono detti microprogrammabili Vediamo un esempio di control store per l istruzione ADD (R3), R 25 Passo Comandi per ADD (R3), R Operazione (in RTL). PC out, MAR in, read, select 4, add, Z in MAR < [PC], Z < [PC] + 4, read Esempio di control store 2. Z out, WMFC PC < [Z], V< [Z], wait 3. MDR out, IR in IR < [MDR] 4. R3 out, MAR in, read MAR < [R3], read 5. R out, WMFC V < [R], wait 6. MDR out, select V, add, Z in Z < [V] + [MDR] 7. Z out, R in, end R < [Z] μ istruz. 2 PCin PCout MARin read MDRout IRin Vin select add Zin Zout Rout Rin R3out WMFC end 3 4 5 6 7 26 Pag. 3 3
Struttura unità di controllo μprogrammata IR generatore di μ indirizzo iniziale e di micro salto ingressi esterni (bus) bit di esito (codici di cond.) clock μ PC memoria di μ programma 27 μ istruzione (ordini al processore) Esempio di micro routine. PC out, MAR in, Read, select 4, Z in Add 2. Z out,wmfc 3. MDR out, IR in 4. Salta al microindirizzo della micro routine appropriata (decodifica IR)... 25.PC out, MAR in, Read, select 4, Add, Z in 26.Z out,wmfc, if bit N= end (goto microistr. ) 27.MDR out, select V, Add, Z in 28.Z out, end (goto microistr. ) 28 Pag. 4 4
Formato μistruzione (codificata) Per ridurre la lunghezza della microistruzione (e della relativa control store) > cerchiamo di applicare una codifica dei bit di controllo contenuti nella microistruzione suddividendola in campi di bit corrispondenti a gruppi di comandi mutuamente esclusivi μ istruzione suddivisa in campi di bit C i (C i codifica un gruppo di ordini mutuamente esclusivi) C C 2 C 3 C 4 C 5 C 6 C 7 C 8 Ovviamente, occorreranno, a valle della control store, dei circuiti di decodifica per rigenerare i bit di controllo 29 Formato μistruzione (codificata) Codifica registri in uscita su bus interno Codifica bus interno su ingresso registri MAR, MDR, TEMP, V Codifica bus interno su ingresso registri PC, IR, Z, Ri 3 Codifica su 4 bit dei 6 comandi dell ALU Pag. 5 5
Formato μistruzione (codificata) Codifica idle/ read/write Codifica selez. MUX in ingresso porta A dell ALU Codifica WMFC Codifica end 3 Salti e calcolo del prossimo microindirizzo () Per ottimizzare la struttura del microcodice Riuso di parti del microcodice per scrivere le micro routine associate alla fase di esecuzione di ogni istruzione ISA Ad esempio per gestire le varie modalità di indirizzamento parti comuni a diverse modalità di indirizzamento Tecnica: mascheratura del microindirizzo Il microindirizzo generale (o base) viene modificato mascherando alcuni bit per generare gli indirizzi corretti 32 Pag. 6 6
Salti e calcolo del prossimo microindirizzo (2) Aumento delle prestazioni Le microistruzioni di salto non svolgono alcuna operazione utile ma pilotano solo il flusso di esecuzione del programma (altrimenti governato dal micro PC) Sono cicli macchina persi ai fini dell esecuzione di una istruzione ISA Soluzione alternativa di gestione del sequenziamento Ogni microistruzione contiene il microindirizzo di quella successiva da eseguire > inutile il registro micro PC Il sequenziamento puro è tradotto in un micro salto alla microistruzione successiva I micro salti incondizionati si realizzano codificando il microindirizzo della microistruzione cui saltare E chiaro che i salti condizionati rimangono 33 Struttura unità di controllo microprogrammata Ogni μistruzione contiene il μindirizzo di quella successiva da eseguire > inutile il registro μpc sostituito da μmar aggiornato ad ogni ciclo con il μindirizzo proveniente dal campo μindirizzo della μistruzione (anche per esecuzione di istruzioni in sequenza) che può essere modificato tramite i bit di mascheratura 34 Pag. 7 7
IR ingressi esterni (bus) bit di esito (cod. di cond.) circuiti di mascheratura e decodifica Bit di mascheratura schiera di porte OR μ MAR memoria di μ programma Microindirizzo incorporato nella microistruzione μ indirizzo campi di μ istruzione decodificatore di μ ordini μ IR μ ordini controllo delle funzioni (diretti al processore) di mascheratura e 35 decdifica del μ indirizzo Formato μistruzione (codificata) μ istruzione suddivisa in campi di bit C i (C i codifica un gruppo di ordini mutuamente esclusivi) C C C2 C3 C4 C5 C6 C7 C8 C9 C 36 Pag. 8 8
Formato μistruzione (codificata) Codifica registri in uscita su bus interno Codifica bus interno su ingresso registri PC, IR, Z, Ri Codifica bus interno su ingresso registri MAR, MDR, TEMP, V 37 Formato μistruzione (codificata) Codifica su 4 bit dei 6 comandi dell ALU Codifica idle/ read/write Codifica selez. MUX in ingresso porta A dell ALU Codifica WMFC Codifica opcode IR Codifica maschera bit del campo MODO di IR per specificare il modo di indirizzamento di Rsorgente Codifica maschera bit 8 di IR del campo modo di IR 38 Pag. 9 9
Utilizzo campi C8, C9, C Se C8, C9, C inattivi: il prossimo μindirizzo è dato dal campo μindirizzo C della μistruzione corrente: μprogramma avanza in modo sequenziale (C= μindirizzo corrente +) μprogramma effettua il μsalto condizionato (C= indirizzo di destinazione μsalto) Se C8 o C9 o C attivi si effettua il μsalto condizionato secondo le modalità seguenti: Se C8 inattivo e C9 o C attivi: μsalto condizionato con μindirizzo i i base di μsalto dato da C + bit di mascheratura Se C8 attivo e C9 o C attivi: μsalto condizionato con μindirizzo base di μsalto dato da decodifica opcode di IR + bit di mascheratura 39 Esempio di memoria di controllo ind. ottale C C C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 2 3 2 2 2 7 7 7 2 7 3 4 Pag. 2 2
Struttura del processore L unità di elaborazione a tre bus Costi vs prestazioni La definizione della microarchitettura dipende da un compromesso tra costi e prestazioni. Incremento della prestazioni determinato da: tecnologia; architettura. Costi difficili da definire (progetto, dimensioni, produzione, resa...). 42 Pag. 2 2
Incremento delle prestazioni Ipotesi: definite tecnologia e ISA. Approcci microarchitetturali per migliorare prestazioni: riduzione del numero di cicli di clock per l esecuzione di ogni istruzione; riduzione della durata del ciclo di clock semplificando l organizzazione dell architettura; sovrapposizione dell esecuzione delle istruzioni (pipelining). 43 Esecuzione di un istruzione L esecuzione di ogni istruzione richiede: lettura dell istruzione dalla memoria; decodifica difi dei campi dell istruzione. i In termini di microistruzioni: PC passa attraverso la ALU e viene incrementato; PC viene usato per leggere la parola seguente nel programma; PC ed ALU vengono usati per leggere gli eventuali operandi. La ALU è utilizzata per diversi cicli di clock: per operazioni non legate alla esecuzione di una istruzione ma piuttosto al suo caricamento; per caricare un operando in attesa che sia poi disponibilie il secondo operando. Ciò comporta un notevole spreco di tempo. 44 Pag. 22 22
Riduzione del numero di cicli di clock Replicazione di moduli hardware per evitare conflitti di risorse. Soluzione : inserire un sommatore aggiuntivo per incrementare il PC: costoso in termini di area sul silicio; non si verifica un vantaggio sostanziale: incremento del PC avviene durante la fase di lettura dell istruzione e quindi la ALU non è impegnata. Soluzione 2: aggiungere percorsi addizionali: ad esempio percorsi diretti fra alcuni registri; aumento del numero dei segnali di controllo; microistruzioni e microcodice più complessi. Soluzione 3: aggiungere un bus addizionale. 45 Architettura a tre bus Le operazioni aritmetiche richiedono: un primo ciclo di clock per caricare un operando nel registro V; durante tale ciclo la ALU non viene utilizzata; un secondo ciclo di clock per eseguire l operazione. Un possibile miglioramento consiste nel rendere possibile la connessione diretta di tutti i registri con entrambi gli ingressi dati della ALU. Questa soluzione richiede l aggiunta di un ulteriore bus. L architettura risultante è dotata di tre bus: BUS A: lettura dei registri sull operando A della ALU BUS B: lettura dei registri i sull operando B della ALU BUS C: scrittura dell uscita della ALU sui registri L'unità di controllo deve oportunamente essere modificata per controllare correttamente un processore dotato di tre bus. 46 Pag. 23 23
bus A bus B bus C incrementatore PC banco di registri costante 4 M U X A B ALU R decodificatore di istruzioni IR MDR MAR linee di dato 47 linee di indirizzo Sequenza di controllo completa (3 bus) Consideriamo l istruzione ASM: ADD R, R Fetch (identica per tutte le istruzioni): Passo Comandi Operazione (in RTL). PC outb, MAR inc, enable B, read, PCinc Decode: MAR < [PC], PC < [PC] + 4, R = B, read 2. WMFC wait 3. MDR outb, enableb, IR in R = B, IR < [MDR] decodificare l IR; Execute: 4. R outa, R outb, Add, R inc, goto(fetch) R < [R] + [R] 48 Pag. 24 24