Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero di istruzioni CPI Count (IC) Durata del ciclo di clock (T CLOCK ) Cicli di clock per istruzione Clock cycle Per (CPI) IC T CLOCK La progettazione del processore (unità di elaborazione e unità di controllo) determina Durata del ciclo di clock Cicli di clock per istruzione (CPI) Valeria Cardellini 1 L unità di elaborazione dati Implementazione di un sottoinsieme (detto ridotto ) delle istruzioni MIPS Istruzioni di accesso alla memoria: lw e sw Istruzioni logico-aritmetiche: add, sub, and, or e slt Istruzioni di branch: beq Istruzioni di jump: j Progettazione dell unità di elaborazione Quadro di insieme dell implementazione Cicli di clock e temporizzazione Unità funzionali I passi per progettare un processore 1 Analizzare il set di istruzioni requisiti dell unità di elaborazione Il significato di ciascuna istruzione è dato dai trasferimenti di registri L unità di elaborazione deve includere uno spazio di memorizzazione per i registri del livello ISA L unità di elaborazione deve supportare ogni trasferimento di registri 2 Selezionare l insieme di componenti dell unità di elaborazione e stabilire la metodologia di temporizzazione 3 Assemblare l unità di elaborazione rispettando i requisiti 4 Assemblare l unità di controllo Valeria Cardellini 2 Valeria Cardellini 3
Istruzioni del set ridotto I primi due passi da implementare sono comuni a tutte le istruzioni,indipendentemente dalla classe di istruzione: Inviare l uscita del Program Counter (PC) alla memoria che contiene il programma e caricare l istruzione (fetch) Lettura di un registro (lw/sw) o più registri (altre istruzioni) Gli altri passi dipendono dall istruzione Sono comunque raggruppabili per classi di istruzioni Vantaggio della semplicità nella progettazione Pochi formati di istruzione facilitano l implementazione dell unità di elaborazione Istruzioni del set ridotto (2) Dopo aver letto i registri, tutte le istruzioni usano l Le istruzioni di accesso alla memoria per calcolare l indirizzo Le istruzioni logico-aritmetiche per effettuare l operazione Poi il comportamento delle istruzioni si differenzia Istruzioni di accesso alla memoria Devono accedere alla memoria per leggere/scrivere il dato Istruzioni logico-aritmetiche Devono accedere ad un registro per scrivere il risultato Istruzioni di branch e jump Devono modificare il Program Counter Valeria Cardellini 4 Valeria Cardellini 5 I cinque passi delle istruzioni I cinque passi delle istruzioni da effettuare Fetch (caricamento) dell istruzione dalla memoria Decode dell istruzione e fetch dei registri Decodifica dell istruzione e lettura dei registri Execute Uso della (esecuzione dell operazione o calcolo dell indirizzo) Memory access Accesso ad un operando in memoria -back Scrittura del risultato in un registro Una visione astratta PC 5: write-back fecth Reg access Reg 1: fetch 2: decode e fetch 3: execute 4: mem/reg access Valeria Cardellini 6 Valeria Cardellini 7
I formati MIPS: riassunto Lunghezza formato: bit; i tre formati delle istruzioni: Tipo R Tipo I Tipo J 31 26 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 op target address 6 bits 26 bits I campi op: operazione dell istruzione rs, rt, rd: registri sorgente (due) e destinazione shamt: shift amount funct: seleziona la variante dell operazione nel campo op address/immediate: offset dell indirizzo o valore immediato target address: indirizzo dell istruzione di jump 21 Valeria Cardellini 8 16 11 6 add, sub add rd, rs, rt sub rd, rs, rt lw, sw lw rt, rs, imm16 lw rt, rs, imm16 beq beq rs, rt, imm16 Le istruzioni del set ridotto 31 26 21 16 11 6 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 21 16 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Valeria Cardellini 9 Unità funzionali Due tipologie di unità funzionali Circuiti combinatori Circuiti sequenziali Con uno stato memorizzato in uno o più elementi di stato Memoria (istruzioni e dati), registri, program counter Gli elementi di stato hanno almeno due ingressi ed una uscita Dato in ingresso da scrivere Clock per determinare l istante in cui il dato viene scritto Dato in uscita da leggere Metodologia di temporizzazione Definisce quando i segnali possono essere scritti/letti Si usa una metodologia di temporizzazione sensibile al fronte del clock (edge-triggered) I valori memorizzati vengono modificati solo in corrispondenza fronte del clock Clk Setup Hold Don t Care Setup Hold Valeria Cardellini 1 Cycle Time = CLK-to-Q + Longest Delay Path + Setup + Clock Skew (CLK-to-Q + Shortest Delay Path - Clock Skew) > Hold Time Valeria Cardellini 11
Progetto dell unità di elaborazione Primo approccio: un unità di elaborazione che elabora un operazione in un singolo ciclo di clock (single cycle) Questo comporta Un rallentamento del ciclo di clock (prestazioni basse) Necessità di duplicare unità che potrebbero essere riutilizzate Ad esempio, sommatore ed (necessarie due unità distinte) PC Valeria Cardellini 12 Sommatore Multiplexer (MUX) Componenti base Valeria Cardellini 13 A B A B Select OP Adder A Y B MUX Sum Carry Result Componenti base (2) Registri N bit di input e di output Enable negato (): Out non cambia asserito (1): Out diviene In Banco dei registri registri di bit Due bus di output a bit Un bus di input a bit 3 indirizzi di registri (a 5 bit) 1 segnale di busw Clk Enable In N Clk Out N RWRA RB Enable 5 5 5 -bit busa busb I blocchi della progettazione Blocchi da progettare (usando i componenti di base) NB: sono solo passi progettuali, non c è nessuna relazione con i passi di esecuzione di una istruzione! 1 Fase di fetch Accedere all istruzione ed incrementare PC 2 Decode, fetch e execute per formato R Istruzioni logico-aritmetiche 3 Decode, fetch e execute per accesso alla memoria Istruzioni di accesso alla memoria lw e sw Istruzioni di branch Valeria Cardellini 14 Valeria Cardellini 15
Blocco di fetch Memoria istruzioni: elementi di stato con indirizzo Program Counter: registro per indirizzo istruzione Sommatore: per calcolare l indirizzo successivo PC = PC + 4 Unità di elaborazione per fetch Un istruzione viene letta e l indirizzo della prossima istruzione viene calcolato e rimesso nel PC address Add PC Add Sum PC address 4 a b Program counter c Adder Valeria Cardellini 16 Valeria Cardellini 17 Decode, fetch e execute per formato R Banco dei registri Arithmetic Logic Unit () Unità di elaborazione per decode, fetch e execute per formato R I campi dell istruzione vanno nel banco dei registri I valori letti vanno nella, si effettua il calcolo e si scrive il risultato 2 1 2 Reg Valeria Cardellini 18 Valeria Cardellini 19
Decode, fetch e execute per formato I (lw/sw) Memoria Unità per l estensione del segno Necessaria perché l indirizzo nel campo è di 16 bit, mentre il valore di base nel registro è a bit Mem 16 Unità di elaborazione per decode, fetch e execute per formato I (lw/sw) I campi dell istruzione vanno nel banco dei registri I valori letti vanno nella, si effettua il calcolo e si scrive il risultato nel registro 2 Reg 1 2 Mem Mem 16 Mem a unit b -extension unit Valeria Cardellini 2 Valeria Cardellini 21 Unità di elaborazione per decode, fetch e execute per formato I (beq) Due registri da confrontare Offset da sommare a PC Occorre traslare l offset di 2 posizioni a sinistra perché esprime l offset in word Register numbers control 5 4 3 5 1 2 5 2 Shift left 2 Unità di elaborazione per decode, fetch e execute per formato I (beq) Legge i due registri, confronta con zero e calcola la destinazione (sommando al PC) se i registri sono uguali Reg PC Add Sum 16 Valeria Cardellini 22 Valeria Cardellini 23
Singolo ciclo di clock Obiettivo Progettare un unità di elaborazione che elabora tutte le istruzioni in un singolo ciclo di clock (single cycle) Conseguenze della scelta progettuale Nessuna risorsa/unità può essere utilizzata più di una volta per istruzione Occorre duplicare le risorse/unità che devono essere utilizzate più volte Ad esempio, memoria dati separata da memoria istruzioni, /sommatore Per condividere la stessa unità tra diverse classi di istruzioni si utilizza un multiplexer Permette di selezionare uno tra più input tramite segnali di controllo Esecuzione di add Esempio: add $t, $s1, $s2 Assumiamo che $s1=15 e $s2=21 I campi dell istruzione vanno nel banco dei registri I valori letti vanno nella, si effettua il calcolo e si scrive il risultato 17 18 8 2 1 1 2 Reg 15 21 36 Valeria Cardellini 24 Valeria Cardellini 25 Esecuzione di lw Esempio: lw $t, 12($s1) Assumiamo che $s1=16 e che la cella di indirizzo 1216 contenga il valore 26 I campi dell istruzione vanno nel banco dei registri I valori letti vanno nella, si effettua il calcolo e si scrive il risultato nel registro 17 8 26 2 Reg 12 1 1 2 16 16 12 43 1216 1 Mem Mem 26 Esecuzione di sw Esempio: sw $t, 12($s1) Assumiamo che $s1=16 e $t=25 I campi dell istruzione vanno nel banco dei registri I valori letti vanno nella, si effettua il calcolo e si scrive il risultato in memoria 17 8 2 Reg 12 1 2 16 16 12 43 1216 25 1 Mem Mem Valeria Cardellini 26 Valeria Cardellini 27
Esecuzione di beq Esempio: beq $t, $t1, 1 Assumiamo che $t=15 e $t1=21, (PC+4)=22 Legge i due registri, confronta con zero e calcola la destinazione (sommando al PC) se i registri sono uguali 22 62 PC Blocco 1: fetch address I blocchi fondamentali 4 Add Blocco 2: istruzioni formato R 2 1 2 9 8 1 4 15 21 1 Blocco 3: istruzioni lw/sw 43 Mem 1 2 2 Reg 16 Mem Reg Blocco 4: istruzioni branch 4 Valeria Cardellini 28 Valeria Cardellini 29 Composizione dei blocchi Uniamo il blocco relativo alle istruzioni di accesso alla memoria con quello per le istruzioni di tipo R Composizione dei blocchi (2) Aggiungiamo anche il blocco relativo al fetch delle istruzioni Blocco per il caricamento (fecth) delle istruzioni Add 4 Multiplexer per scegliere se il secondo operando è un indirizzo (tipo I) oppure il dato in un registro (tipo R) Multiplexer per scegliere se ai registri va il dato dalla memoria (tipo I) oppure il risultato dell operazione (tipo R) Valeria Cardellini 3 Mem PC address MemtoReg 2 1 Src 2 M ux M ux Reg 16 Mem Valeria Cardellini 31
Composizione dei blocchi (3) Aggiungiamo ora anche il blocco per l istruzione beq Multiplexer per scegliere tra il caricamento della prossima istruzione oppure dell istruzione calcolata nella beq Valeria Cardellini