Calcolatori Elettronici CPU a singolo ciclo assimiliano Giacomin
Schema del processore (e memoria) Unità di controllo Condizioni SEGNALI DI CONTROLLO PC emoria indirizzo IR dato letto UNITA DI ELABORAZIONE (DATAPATH) dato scritto 2
Processore a singolo ciclo: idea di base Unità di controllo COBINATORIA Condizioni SEGNALI DI CONTROLLO PC ES: istrzione add rd, rs, rt emoria indirizzo dato letto rs rt rd Regwrite Reg. File Src2 Src ALUctrl dt dato scritto 3
Spiegazione lcido precedente I segnali di controllo determinano, a seconda del tipo di istrzione: - il percorso sorgente-destinazione dei dati mediante: indirizzi e nmeri registri + segnali di controllo ai mltipleer - le operazioni aritmetiche e logiche effettivamente svolte mediante: segnali di controllo alle ALU - se n elemento di memoria deve scrivere e/o leggere n dato mediante: segnali di tipo read/write Avremo qindi la determinazione di n percorso del tipo: CK Sorgente F Dest. CK dove: - sorgente e destinazione possono coincidere - valore sorgente disponibile nel corso del ciclo, destinazione scritta alla fine 4
Temporizzazione PC emoria istrzioni fornisce istrzione corrente all nità di controllo Unità di controllo prodce in otpt segnali di controllo al datapath: controllo UX, read e write ad elementi di memoria, controllo ALU è si crea n percorso stabile sorgente-destinazione Valori all ingresso della destinazione (registri o memoria) stabili prima della fine del ciclo Valori in ingresso scritti nella destinazione: disponibili in lettra drante il prossimo ciclo 5
PROGETTAZIONE DATAPATH (CASO IPS) 6
Nella progettazione della CPU, faremo riferimento alle segenti istrzioni: Istrzioni aritmetiche: add, sb, and, or, slt add rd, rs, rt // rd rs + rt slt rd, rs, rt // rd = se rs < rt, altrimenti Istrzioni di accesso a memoria: lw rt, offset(rs) // rt [rs+offset] sw rt, offset(rs) // [rs+offset] rt Istrzioni di salto condizionato: beq rs, rt, offset // se rs=rt salta a offset istrzioni rispetto a PC (aggiornato a istrzione corrente + 4 bytes!) in bytes: PC + (offset ) Salto incondizionato: j offset // salta all indirizzo in istrzioni ottento da: 4 bit di PC offset [3 bit] indirizzo in byte è la concatenazione di 4 bit di PC offset [32 bit] 7
Codifica delle istrzioni viste: 3 26 25 22 6 5 Op rs rt rd Shift_amont fnct Aritmetiche: Tipo-R ADD: op 6 5 SUB: AND: OR: SLT: 3 6 5 Op rs rt offset = : lw = : sw beq 26 25 22 = + PC + (offset ) lw, sw, beq: Tipo-I 3 26 25 Op offset J: Tipo-J PC offset 8
Note slla codifica tili per la progettazione - Aritmetiche e logiche - lw, sw - beq - j Tipo-R Tipo-I Tipo-J 3 26 25 Op rs rt rd Shift_amont fnct 3 26 25 22 22 6 5 6 5 Op rs rt offset 6 5 Tipo-R Tipo-I 3 26 25 Op offset Tipo-J La progettazione è facilitata dal fatto che: - Campo Op sempre in [3-26] - i registri da leggere sono sempre in rs e rt - il registro base [da sommare] per lw e sw è rs [primo ingresso della ALU] - l offset a 6 bit da sommare per beq, lw, sw è in [5-] Il registro s ci scrivere pò essere rd (per operaz. di TIPO-R) o rt (per lw) 9
Le fasi (informalmente) Fetch (gale per ttte le istrzioni) Lettra registri: - Tipo-R, beq, sw: rs e rt - lw: rs Uso della ALU: - Tipo-R (per esegire l operazione): rs e rt - accesso alla memoria (per calcolare l indirizzo): rs e offset - beq (per confrontare i registri): rs e rt Uso della memoria - lw: in lettra (per prelevare rt) - sw: in scrittra (per memorizzare rt) Scrittra registri - Tipo-R: rd - lw: rt
Consideriamo inizialmente solo le istrzioni aritmetiche (es. add) FETCH
Consideriamo inizialmente solo le istrzioni aritmetiche (es. add) READ WRITE EX 2
Integrazione delle altre istrzioni Ogni elemento sato più di na volta nell eseczione di na istrzione dplicato: - emoria dati (lw, sw) emoria programmi (fase di fetch di ttte le istrzioni) - ALU (lw, sw, beq, aritmetiche) Sommatore PC + 4 (ttte le istrzioni) Sommatore PC+offset (beq) Per integrare i diversi elementi: - ALU principale deve effettare diverse operazioni a seconda dell istrzione - servono UX per selezionare i dati s ci n elemento fnzionale lavora (diversi da istrzione a istrzione) 3
Integrazione della lw e sw ALUoper 4
Integrazione della beq ALUoper 5
Integrazione della j Shift left 2 2 ALUoper 6
PROGETTAZIONE UNITA DI CONTROLLO 7
Il controllo (combinatorio) della ALU Unità di controllo è critica dal pnto di vista delle performance più livelli di controllo: dimensioni, velocità fnct A L U ALU control zero ris AlOper AlOp opcode ALUOp Operation fnct ALU fnction ALU Oper lw load word XXXXXX add sw store word XXXXXX add beq branch eqal XXXXXX sbtract R-type add add sbtract sbtract AND AND OR OR set-on-less-than set-on-less-than 8
Shift left 2 2 9
Semplificazione segnale di controllo per beq (senza la j) Shift left 2 Branch 2
Semplificazione segnale di controllo per beq e j + CONTROLLO! Instrction [25 ] Shift Jmp address [3 ] left 2 26 28 4 Add PC+4 [3 28] Instrction [3 26] Control RegDst Jmp Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add ALU reslt PC address Instrction memory Instrction [3 ] Instrction [25 2] Instrction [2 6] Instrction [5 ] register data register 2 Registers data 2 register data Zero ALU ALU reslt Address data Data memory data Instrction [5 ] 6 Sign 32 etend ALU control Instrction [5 ] 2
Nota si segnali di controllo: - i segnali di controllo sono determinati in modo combinatorio soltanto slla base del campo Opcode - non è in generale possibile prevedere l ordine di arrivo dei segnali di controllo: le operazioni non sono esegite in seqenza, controllo combinatorio (è necessario che T clock sia sfficientemente lngo) Prima di progettare l nità di controllo, vediamo allora alcni esempi di eseczione delle istrzioni 22
Esempio: istrzione di tipo-r Instrction [25 ] Shift Jmp address [3 ] left 2 26 28 4 Add PC+4 [3 28] Instrction [3 26] Control RegDst Jmp Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add ALU reslt PC address Instrction memory Instrction [3 ] Instrction [25 2] Instrction [2 6] Instrction [5 ] register data register 2 Registers data 2 register data Zero ALU ALU reslt Address data Data memory data Instrction [5 ] 6 Sign 32 etend ALU control Instrction [5 ] 23
Esempio: istrzione lw Instrction [25 ] Shift Jmp address [3 ] left 2 26 28 4 Add PC+4 [3 28] Instrction [3 26] Control RegDst Jmp Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add ALU reslt PC address Instrction memory Instrction [3 ] Instrction [25 2] Instrction [2 6] Instrction [5 ] Instrction [5 ] register data register 2 Registers data 2 register data 6 Sign 32 etend ALU control Zero ALU ALU reslt Address data read Data memory data Instrction [5 ] 24
Esempio: istrzione beq Instrction [25 ] Shift Jmp address [3 ] left 2 26 28 4 Add PC+4 [3 28] Instrction [3 26] Control RegDst Jmp Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add ALU reslt PC address Instrction memory Instrction [3 ] Instrction [25 2] Instrction [2 6] Instrction [5 ] register data register 2 Registers data 2 register data Zero ALU ALU reslt Address data Data memory data Instrction [5 ] 6 Sign 32 etend ALU control Instrction [5 ] 25
Progetto e realizzazione dell nità di controllo principale RegDst Istrzione[3-26]: campo opcode Jmp Branch emread emtoreg ALUOp em ALUSrc Reg E na rete combinatoria: - slla base di opcode (istrzione da esegire) deve selezionare i valori dei segnali di controllo Pò essere specificata da tabella di verità e implementata nei modi visti (porte logiche, PLA, RO) 26
ISTRUZ RegDst Jmp Branch em emto Reg ALUOp em ALUSrc Tipo-R lw sw X X beq X X j X X X XX X Opcode [6 bit] Reg 27
PRESTAZIONI DEL PROCESSORE SINGOLO CICLO Prestazioni di n processore valtate slla base del tempo di eseczione di n dato programma T CPU = #istrzioni * T istrzione Per n processore a singolo ciclo T CPU = #istrzioni * T clock T clock = ma {T I } = ma {T I a + T Ik } I istrzioni I istrzioni cammino critico T clock determinato dall istrzione più lnga 28
Esempio: istrzione di tipo-r Instrction [25 ] Shift Jmp address [3 ] left 2 26 28 4 Add PC+4 [3 28] Instrction [3 26] Control RegDst Jmp Branch em emtoreg ALUOp em ALUSrc Reg Shift left 2 Add ALU reslt PC address Instrction memory Instrction [3 ] Instrction [25 2] Instrction [2 6] Instrction [5 ] register data register 2 Registers data 2 register data Zero ALU ALU reslt Address data Data memory data Instrction [5 ] 6 Sign 32 etend ALU control Instrction [5 ] 29
Tipo-R emoria Istrz. Reg. File A L U Reg. File sw emoria Istrz. Reg. File A L U emoria Dati lw emoria Istrz. Reg. File A L U emoria Dati Reg. File Istrzione più lnga: lw 3