Corso di Realizzazione del path path a ciclo singolo Anno Accademico 26/27 Francesco Tortorella (si ringrazia il prof.. De Santo per il materiale presente in qeste slides) Realizzazione del data path. Analizzare l instrction set => Specifiche sl datapath il significato di ciascna istrzione è dato dai register transfers il datapath deve incldere elementi di memoria per i registri necessari alla ISA il datapath deve spportare ciascn trasferimento tra registri 2. Selezionare l insieme di componenti del datapath e stabilire na metodologia di tempificazione 3. Costrire il datapath rispettando le specifiche 4. Analizzare l implementazione di ciascna istrzione per determinare i pnti di controllo che abiliteranno i trasferimenti 5. Costrire la control logic path -
Formati Istrzioni del IPS R-type I-type 3 26 2 6 op rs rt rd shamt fnct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 3 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits 3 26 J-type op target address 6 bits 26 bits path - 2 Passo a: Il sottoinsieme IPS-lite 3 ADD e SUB addu rd, rs, rt sbu rd, rs, rt 3 OR Immediato: ori rt, rs, imm LOAD e STORE Word3 lw rt, rs, imm sw rt, rs, imm BRANCH: 3 beq rs, rt, imm 26 2 op rs rt rd shamt fnct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits 6 path - 3
Trasferimenti tra Registri Forniscono il significato delle istrzioni Ttto comincia con il fetch op rs rt rd shamt fnct = E[ PC ] op rs rt Imm = E[ PC ] inst Register Transfers ADDU R[rd] R[rs] + R[rt]; PC PC + 4 SUBU R[rd] R[rs] -- R[rt]; PC PC + 4 ORi R[rt] R[rs] + zero_et(imm); PC PC + 4 LOAD R[rt] E[ R[rs] + sign_et(imm)]; PC PC + 4 STORE E[ R[rs] + sign_et(imm) ] R[rt]; PC PC + 4 BEQ if ( R[rs] == R[rt] ) then PC PC + sign_et(imm)] else PC PC + 4 path - 4 Passo2: Componenti del path emoria instrzioni & dati Registri ( ) read RS read RT Write RT o RD PC Etender (estensione in segno) Addiz e Sottraz di registri o di immediati (estesi) Somma 4 o immediati estesi al PC path - 5
Passo2: Componenti del path Elementi Combinatori Elementi di emoria tempificazione (Clocking methodology) path - 6 Elementi Combinatori Adder A B CarryIn Adder Sm Carry UX Selec t A Y B UX OP path - 7 A B Risltato
Elementi di emoria: Registro Registro Ingressi N-bit Write Enable Write Enable: Write Enable In negato (): Ot non cambia asserito (): Ot diventa In N Ot N path - 8 Elementi di emoria: Banco di Registri Il Banco di Registri consiste di registri: RWRARB Write Enable De bs a -bit di otpt: 5 5 5 bsa e bsb Un bs di inpt a -bit : bsw bsw Registri a -bit Un Registro viene selezionato da: RA seleziona il registro da mettere sl bsa RB seleziona il registro da mettere sl bsb RW seleziona il registro da scrivere mediante il bsw qando Write Enable è Il Clock (CLK) Il CLK è significativo SOLO drante le operazioni di write Drante le operazioni di read, il Banco si comporta come se fosse combinatorio: RA o RB validi => bsa o bsb validi dopo n tempo di accesso (access time) path - 9 bsa bsb
Elementi di emoria: Banco di Registri Banco di registri: schema di accesso in lettra path - Elementi di emoria: Banco di Registri Banco di registri: schema di accesso in scrittra path -
Un modello ideale di emoria Write Enable Indirizzo emoria (ideale) Un bs di inpt: In In Ot Un bs di otpt: Ot Accesso a na parola di emoria : Indirizzo seleziona la parola da inviare s Ot Se Write Enable = : indirizzo seleziona la parola di memoria da scrivere mediante il bs In Clock inpt (CLK) Il CLK è significativo SOLO drante le operazioni di write Drante le operazioni di read, la emoria si comporta come se fosse combinatoria: Indirizzo valido => Ot valido dopo n tempo di accesso path - 2 Passo 3 Specifiche dei Trasferimenti tra Registri Assemblaggio del path Fetch Leggi gli Operandi ed Esegi l Operazione path - 3
3a: Unità di Fetch Operazioni previste Fetch dell Istrzione: mem[pc] Aggiornamento del program conter: Codice Seqenziale: PC PC + 4 Branch e Jmp: PC qalcos altro PC Net Address Logic Address Word path - 4 3b: Add & Sbtract R[rd] R[rs] op R[rt] Esempio: addu rd, rs, rt Ra, Rb e Rw dai campi rs, rt e rd dell istrzione ctr e RegWr: dalla control logic dopo la decodifica dell istrzione 3 26 2 6 op rs rt rd shamt fnct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits RegWr bsw Rd Rs 5 5 5 Rw Ra Rb -bit Registers Rt bsa bsb ctr Reslt path - 5
PC Register-Register Timing Rs, Rt, Rd, Op, Fnc ctr Val. Prec. -to-q Val. Scc. Val. Prec. Val. Prec. Tempo di Accesso alla Val. Scc. Ritardo introdotto dalla Control Logic Val. Scc. RegWr bsa, B bsw bsw RegWr Val. Prec. Val. Prec. Val. Prec. Rd Rs Rt 5 5 5 Rw Ra Rb Registri a -bit path - bsa bsb Val. Scc. Tempo di accesso Banco di Registri Val. Scc. ctr Ritardo Val. Scc. Reslt Qi avviene il Register Write 3c: Operazioni Logiche con Immediati R[rt] R[rs] op ZeroEt[imm] ] Rd Rt RegDst Rs RegWr 5 5 5 bsw imm Rw Ra Rb Registri a -bit path - 7 3 op rs rt immediate bsb ZeroEt 26 bsa 2 6 bits 5 bits 5 bits rd? bits 3 5 bits Src ctr Risltato immediate bits
3d: Operazioni di Load R[rt] em[r[rs] + SignEt[imm]] Esempio: lw rt, imm(rs) Rd Rt RegDst Rs RegWr 5 5 5 bsw imm 3 Rw Ra Rb Registri a -bit 26 2 op rs rt immediate 6 bits 5 bits 5 bits rd bits bsb Etender bsa Src ctr In emwr WrEn Adr W_Src path - 8 EtOp 3e: Operazioni di Store em[ R[rs] + SignEt[imm] R[rt] ] Esempio: sw rt, imm(rs) RegDst bsw 3 Rd 26 RegWr 5 5 2 op rs rt immediato 6 bits 5 bits 5 bits bits imm Rt Rs Rt 5 Rw Ra Rb Registri a -bit bsb Etender bsa ctr In emwr WrEn Adr W_Src path - 9 EtOp Src
3f: L Istrzione di Branch 3 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits beq rs, rt, imm mem[pc] Fetch dell istrzione dalla memoria Eqal R[rs] == R[rt] Calcolo della condizione di branch if (COND eq ) Calcolo indirizzo prossima istrzione PC PC + 4 + ( SignEt(imm) 4 ) else PC PC + 4 path - 2 path per Operazioni di Branch beq rs, rt, imm 3 26 2 op rs rt immediate 6 bits 5 bits 5 bits bits Indirizzo Istrzione Cond 4 imm PC Et npc_sel Adder Adder PC Rs Rt RegWr 5 5 5 bsa Rw Ra Rb bsw Registri a -bit bsb Eqal? path - 2
Single Cycle path Inst Adr Rs <2:25> Rt <:2> Rd <:5> <:5> Imm <3:> imm 4 PC Et Adder Adder npc_sel PC path - 22 RegDst Rd Rt RegWr Rs Rt 5 5 5 bsw bsa Rw Ra Rb Registri a -bit bsb imm Etender EtOp Eqal Src ctr = emwr WrEn Adr In emtoreg Passo 4: Realizzazione del Controllo <3:> Inst Adr <2:25> <26:3> Op Fn <:5> <:5> <:2> <2:25> Rt Rs Rd Imm Logica di Controllo npc_selregwr RegDst EtOp Src ctr emwr emtoreg Eqal DATA PATH path - 23
Significato dei Segnali di Controllo Rs, Rt, Rd e Imm sono cablati nel datapath npc_sel: => PC PC + 4; => PC PC + 4 + SignEt(Im) n= net npc_sel Inst Adr 4 imm PC Et Adder Adder PC path - 24 Significato dei Segnali di Controllo EtOp: zero, sign src: => regb; => immed ctr: add, sb, or RegDst Rd Rt RegWr Rs Rt 5 5 5 bsw bsa Rw Ra Rb Registri da - bit bsb imm path - 25 Etender EtOp Eqal Src emwr: write memory emtoreg: =>; => em RegDst: => rt ; => rd RegWr: write dest register ctr = emwr WrEn Adr In emtoreg
Control Signals inst Register Transfer ADD R[rd] <-- R[rs] + R[rt]; PC <-- PC + 4 src = RegB, ctr = add, RegDst = rd, RegWr, npc_sel = +4 SUB R[rd] <-- R[rs] -- R[rt]; PC <-- PC + 4 src = RegB, ctr = sb, RegDst = rd, RegWr, npc_sel = +4 ORi R[rt] <-- R[rs] + zero_et(imm); PC <-- PC + 4 src = Im, Etop = Z, ctr = or, RegDst = rt, RegWr, npc_sel = +4 LOAD R[rt] <-- E[ R[rs] + sign_et(imm)]; PC <-- PC + 4 src = Im, Etop = Sn, ctr = add, emtoreg, RegDst = rt, RegWr, npc_sel = +4 STORE E[ R[rs] + sign_et(imm)] <-- R[rs]; PC <-- PC + 4 src = Im, Etop = Sn, ctr = add, emwr, npc_sel = +4 BEQ if ( R[rs] == R[rt] ) then PC <-- PC + sign_et(imm)] else PC <-- PC + 4 npc_sel = EQUAL, ctr = sb path - 26 Passo 5: Logica per ciascn segnale di controllo npc_sel <= if (OP == BEQ) then EQUAL else src <=if (OP == ) then regb else immed ctr <= if (OP == ) then fnct elseif (OP == ORi) then OR elseif (OP == BEQ) then sb else add EtOp <= if (OP == ORi) then zero else sign emwr <= (OP == Store) emtoreg<= (OP == Load) RegWr: <= if ((OP == Store) (OP == BEQ)) then else RegDst: <= if ((OP == Load) (OP == ORi)) then else path - 27
La tabella di verità per il controllo op 6 RegDst Src emtoreg RegWrite emwrite PCSrc Jmp EtOp op (Symbolic) path - 28 RegDst fnc Src ctr ain 6 : Control 3 Control op (Local) 3 op R-type ori lw sw beq jmp R-type Or Add Add Sbtract op <2> op <> op <> La tabella di verità per RegWrite op R-type ori lw sw beq jmp RegWrite RegWrite = R-type + ori + lw =!op<5> &!op<4> &!op<3> &!op<2> &!op<> &!op<> (R-type) +!op<5> &!op<4> & op<3> & op<2> &!op<> & op<> (ori) + op<5> &!op<4> &!op<3> &!op<2> & op<> & op<> (lw) op<5>.. op<5>.. op<5>.. op<5>.. op<5>.. op<5>.. <> <> <> <> <> op<> R-type ori lw sw beq jmp RegWrite path - 29
Implementazione PLA del controllo op<5>.. op<5>.. op<5>.. op<5>.. op<5>.. op<5>.. <> <> <> <> <> op<> R-type ori lw sw beq jmp RegWrite Src RegDst emtoreg emwrite Branch Jmp EtOp op<2> op<> op<> path - 3 Vista Astratta dell Implementazione Net Address Ideal Address PC Rd 5 Rs 5 Rw Ra Rt 5 Rb -bit Registers A B Controllo Control Signals path Conditions Address In Ideal Ot path - 3
Schema del datapath con le linee di controllo PCSrc 4 Add RegWrite Shift left 2 Add reslt PC address [3 ] memory [25 2] [2 ] [5 ] RegDst [5 ] register register 2 Write register Write data data data 2 Registers Sign etend Src control Zero reslt emwrite Address Write data memory em data emtoreg [5 ] Op path - Schema del datapath con l nità di controllo Add reslt 4 Add RegDst Branch Shift left 2 PCSrc em [3 26] Control emtoreg Op emwrite Src RegWrite PC address memory [3 ] [25 2] [2 ] [5 ] register register 2 Registers Write register Write data data data 2 Zero reslt Address Write data memory data [5 ] Sign etend control [5 ] path - 33
odifica per implementare jmp [25 ] Shift Jmp address [3 ] left 2 26 28 PC+4 [3 28] Add reslt 4 Add RegDst Jmp Branch Shift left 2 [3 26] Control em emtoreg Op emwrite Src RegWrite PC address memory [3 ] [25 2] [2 ] [5 ] register register 2 Registers Write register Write data data data 2 Zero reslt Address Write data memory data [5 ] Sign etend control [5 ] path - 34 Vista astratta del critical path Definisce la ma freqenza di clock Net Address Ideal Address PC Rd 5 Rs 5 Rt 5 Rw Ra Rb -bit Registers Critical Path (istr. LOAD) = Ritardo tra e ot PC (FFs) + Access Time della em. Istrzioni + Access Time del banco registri+ Tempo di ritardo (add bit) + Access Time della em. Dati + Tempo di hold per il Register File Write Imm A B Address In Ideal path - 35
Riassmendo 5 passi per progettare n processore. Analizzare l instrction set => Specifiche sl datapath 2. Selezionare l insieme di componenti del datapath stabilire na metodologia di clocking 3. Costrire il datapath rispettando le specifiche 4. Analizzare l implementazione di ciascna istrzione per determinare i pnti di controllo che abiliteranno i trasferimenti 5. Costrire la control logic il IPS rende più semplice il progetto Le Istrzioni sono ttte della stessa dimensione I registri sorgente sempre nello stesso posto dell istrzione Gli Immediati stessa dimensione, posizione Le Operazioni sempre s registri/immediati path - 36 Valtazione del data path a ciclo singolo L implementazione realizzata prevede implicitamente che occorra n solo ciclo di clock per esegire na qalnqe istrzione. Sebbene tale implementazione fnzioni correttamente, non è tilizzata in pratica perché inefficiente (qal è il motivo?) Consideriamo n esempio nmerico path - 37
Valtazione del data path a ciclo singolo Assmiamo che i tempi di ritardo di ttti i componenti nel datapath siano trascrabili tranne: Unità di memoria: 2 ps e addizionatori: ps Register file (read e write): 5 ps Confrontiamo le prestazioni di de diverse implementazioni: Implementazione a ciclo singolo di lnghezza fissa Implementazione a ciclo singolo di lnghezza variabile (solzione solo teorica) path - 38 Valtazione del data path a ciclo singolo Spponiamo la segente distribzione per le istrzioni: Load: 25 % Store: % Istrzioni logico-aritmetiche: 45 % Branch: 5 % Jmp: 5 % path - 39
Valtazione del data path a ciclo singolo Tipo di istrzione Unità fnzionali sate Logico aritmetiche Instr. fetch Accesso ai registri Accesso ai registri Load Instr. fetch Accesso ai registri Accesso alla memoria Accesso ai registri Store Instr. fetch Accesso ai registri Accesso alla memoria Branch Instr. fetch Accesso ai registri Jmp Instr. fetch path - 4 Valtazione del data path a ciclo singolo Tipo di istrzione memory Register operation memory Register write Totale (ps) Logico aritmetiche 2 5 5 4 Load 2 5 2 5 6 Store 2 5 2 55 Branch 2 5 35 Jmp 2 2 path - 4
Valtazione del data path a ciclo singolo Ciclo di lnghezza fissa: necessario allinearsi all istrzione che richiede maggior tempo di eseczione. T f = 6 ps Ciclo di lnghezza variabile: occorre valtare il tempo medio di eseczione. T v = 447.5 ps T v = 6*.25+55*.+4*.45+35*.5+2*.5 Consideriamo il rapporto T f /T v =.34 path - 42 Valtazione del data path a ciclo singolo Problemi dell implementazione del data path a ciclo singolo di lnghezza fissa: Condizionato dal worst case (istrzione più lenta) Ogni nità fnzionale è sata na volta sola per ciclo (necessario replicare alcne fnzionalità, es. adder) Sitazione anche peggiore se si considera l introdzione di altre nità necessarie (FPU). Solzioni possibili? Implementazione mlticiclo: ciclo più breve legato al tempo di ritardo dell nità fnzionale più lenta. Le nità vengono sate per più compiti, ma l eseczione di n istrzione richiede più cicli di clock. Implementazione pipeline: data path simile all implementazione a ciclo singolo. Permette l eseczione contemporanea di più istrzioni incrementando l tilizzazione dell hardware e amentando le prestazioni. path - 43