Calcolatori Elettronici B a.a. 2008/2009 - RICHIAMI DI CALCOLATORI A Massimiliano Giacomin
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Calcolatori Elettronici B a.a. 2008/2009 RICHIAMI DI CALCOLATORI A Massimiliano Giacomin 1
IL LIVELLO HARDWARE istruzioni macchina ISA Organizzazione di Livello componenti per architetturale implementare ISA Reti logiche: registri, ALU, MUX… Modelli logici: Livello si parla di variabili, logico valori… binari! Porte logiche: NOT, AND, … Modelli elettronici: Livello si parla di circuitale tensioni, correnti, ecc. Transistor Modelli fisici: si parla di Livello dimensioni fisiche, del layout materiali, ecc. 2
Due tipi di unità funzionali • Elementi di tipo combinatorio: - valori di uscita dipendono solo da valori in ingresso - Es. Porte logiche, PLA • Elementi di memoria: - capaci di memorizzare un valore - Es. flip-flop, registri, memoria RAM Due tipi di reti • RETI COMBINATORIE - Contengono solamente elementi di tipo combinatorio Valori di uscita dipendono solo da valori di ingresso • RETI SEQUENZIALI - Contengono elementi di memoria Valori di uscita dipendono dalla storia del sistema (sequenza di tutti gli ingressi) – sintetizzata nel valore di stato contenuto negli elementi di memoria. 3
RETI COMBINATORIE Assumiamo n ingressi m uscite Specifica • Si possono specificare mediante due approcci alternativi: – tabelle di verità (n ingressi ⇒ 2n righe, per ciascuna si specificano tutte le m uscite) Es. A B C 0 0 0 (OR esclusivo) 0 1 1 1 0 1 1 1 0 – equazioni logiche (algebra booleana) Es. AB+AB 4
Realizzazione: Porte logiche, PLA, ROM, PLD (Programmable logic device) • Elettronica digitale: realizzazione degli elementi sopraindicati (es. Famiglie logiche TTL, CMOS) – noi non ce ne occupiamo direttamente • Determina parametri tecnologici che influenzano le prestazioni Tempo di propagazione x F(x) F Dal momento in cui l’ingresso è valido al momento in cui l’uscita è valida trascorre un certo intervallo temporale: Al max dopo Tcombinatorio x Tcombinatorio siamo sicuri che l’uscita è valida e stabile F(x) 5
RETI SEQUENZIALI Elementi di memoria • Flip-flop di tipo D D Q FLIP-FLOP C TIPO D Q Sensibile ai fronti: l’ingresso è memorizzato sul fronte (di salita) del clock - Vincoli sull’ingresso: tempo di setup e tempo di hold Ritardo sull’uscita: tempo di propagazione •Tutti i tempi riferiti D al fronte del clock Tsetup Thold C • In generale Thold < Tprop Tprop Q 6
TEMPORIZZAZIONE • Sistemi sincroni: segnale di clock comune determina aggiornamento elementi di stato CK CK B A F(A) D ST1 Q F D ST2 Q CLOCK B C D ST1(IN) A B C ST1(OUT) F(A) F(B) F(C) ST2(IN) F(A) F(B) ST2(OUT) • Al fronte di clock, un elemento di stato memorizza il valore di ingresso • Nel periodo di clock, un nuovo valore di ingresso viene propagato dalla parte combinatoria e sarà disponibile al successivo fronte 7
CK F(A) A D Q F CLOCK F(A) F2(A) F3(A) D A F(A) F2(A) Q 8
Temporizzazione e vincoli temporali CK CK D ST1 Q F D ST2 Q T1prop Tcombinatorio T2setup • Dopo T1prop + Tcombinatorio, ingresso a ST2 è stabile: anticipo di almeno T2setup Tclock ≥ T1prop + Tcombinatorio + T2setup • Vincolo per rispetto di T2hold : ingresso ST2 permane per almeno T2hold dopo il fronte T1prop + Tcombinatorio ≥ T2hold [verificato automaticamente perché Thold < Tprop ] 9
ESTENDENDO QUESTE CONSIDERAZIONI AD UNA RETE COMPLESSA… Occorre considerare il caso peggiore; in particolare il “cammino critico” vincola la lunghezza del periodo di clock e quindi limita la frequenza ottenibile! Tclock ≥ Tprop + Tcammino critico + Tsetup Nel caso peggiore! 10
Specifica di una rete sequenziale: macchine a stati finiti (FSM) Occorre definire: • L’insieme degli ingressi (dominio I) e delle uscite (dominio U) • L’insieme degli stati S • Dinamica (come si passa da uno stato all’altro): funzione f: S*I → S • Come si generano le uscite funzione η η: S → U Modello di Moore η: S*I → U Modello di Mealy S2: U2 I2 S4:U4 [Modello di Moore] I2 I1 I2 I1 S1:U1 I1 S3:U3 I1,I2 11
Implementazione di una rete sequenziale Logica combinatoria: Uscite Solo mod. Funzione Mealy di uscita η Ingressi Logica combinatoria: Funzione di stato futuro f clock Registro di stato 12
IL LIVELLO HARDWARE istruzioni macchina ISA Organizzazione di Livello componenti per architetturale implementare ISA Reti logiche: registri, ALU, MUX… Modelli logici: Livello si parla di variabili, logico valori… binari! Porte logiche: NOT, AND, … Modelli elettronici: Livello si parla di circuitale tensioni, correnti, ecc. Transistor Modelli fisici: si parla di Livello dimensioni fisiche, del layout materiali, ecc. 13
Nella progettazione della CPU, faremo riferimento alle seguenti istruzioni: • Istruzioni aritmetiche: add, sub, and, or, slt add rd, rs, rt // rd ← rs + rt slt rd, rs, rt // rd = 1 se rs < rt, 0 altrimenti • Istruzioni di accesso a memoria: lw rt, offset(rs) // rt ← M[rs+offset] sw rt, offset(rs) // M[rs+offset] ← rt • Istruzioni di salto condizionato: beq rs, rt, offset // se rs=rt salta a offset istruzioni rispetto a PC (aggiornato a istruzione corrente + 4 bytes!) in bytes: PC + (offset | | 00) • Salto incondizionato: j offset // salta all’indirizzo in istruzioni ottenuto da: 4 bit di PC | | offset [30 bit] indirizzo in byte è la concatenazione di 4 bit di PC | | offset | | 00 [32 bit] 14
Codifica delle istruzioni viste: 31 26 25 21 20 16 15 11 10 6 5 0 Op rs rt rd Shift_amount funct Aritmetiche: Tipo-R 000000 op 00000 ADD: 100 000 SUB: 100 010 AND: 100 100 OR: 100 101 SLT: 101 010 31 26 25 21 20 16 15 0 Op rs rt offset lw, sw, beq: Tipo-I 10x011 x = 0: lw + x = 1: sw 000100 PC + (offset || 00) beq = 31 26 25 0 Op offset J: Tipo-J PC || offset || 00 15
Glossario Visuale: indica le risorse individuate in base ad una prima analisi Segnali di controllo dati IRWrite Registro zero Istruzioni A Istruzione L P [31-26] U ris C Istruzione [25-21] AluCom Istruzione [20-16] Istruzione [15-0] AluOp funct UC [Se è necessario ALU memorizzare istruzione corrente] • Registri: capaci di memorizzare un insieme di bit (si possono ottenere mediante array di Flip-flop di tipo D) 16
• Register File: Read register • Lettura: asincrona rispetto al clock, number 1 Read data 1 senza segnale di controllo read Read register number 2 • Scrittura: attiva sul fronte del clock Register file Write register e solo quando write è affermato Read data 2 • Implementato con registri, multiplexer Write data Write (per read port) e decodificatore (per write port) • Memorie (per memorizzare quantità maggiori di dati) MemWrite Indirizzo • Lettura asincrona risp. clock, scrittura attiva sul fronte del clock Dato letto • NB: forma semplificata Dato scritto (cfr. SRAM, DRAM, ecc.) MemRead NB: il clock è presente ma non viene indicato per rendere le figure più chiare. 17
Schema del processore (e memoria) Durante l’esecuzione di un programma applicativo Pa, i circuiti interpretano le istruzioni del programma in linguaggio macchina costituito dal < Pa (tradotto) ° i servizi OS> Unità di controllo SEGNALI DI CONTROLLO Condizioni: segnali da Datapath a U.C. P Memoria Registro C Istruzioni indirizzo UNITA’ DI ELABORAZIONE Istruzione [31-26] (DATAPATH) Programma Pa Os Servizi 18
Controllo di un processore a singolo ciclo: l’idea di base controlli Unità di controllo combinatoria condizioni UNITA’ DI ELABORAZIONE (DATAPATH) P Memoria C indirizzo Programma Pa Os Servizi 19
Idea di base • Ad ogni ciclo di clock, la memoria istruzioni fornisce l’istruzione corrente • L’unità di controllo è una rete combinatoria che: - riceve in input l’istruzione corrente - produce in output segnali di controllo all’unità di elaborazione: controllo multiplexer, read e write ad elementi di memoria, controllo ALU • I segnali di controllo determinano, a seconda del tipo di istruzione: - il percorso sorgente-destinazione dei dati mediante: indirizzi e numeri registri + segnali di controllo ai multiplexer - le operazioni aritmetiche e logiche effettivamente svolte mediante: segnali di controllo alle ALU - se un elemento di memoria deve scrivere e/o leggere un dato mediante: segnali di tipo read/write • Avremo quindi la determinazione di un “percorso” del tipo: CK CK Sorgente F Dest. dove: - sorgente e destinazione possono coincidere - valore sorgente disponibile “nel corso” del ciclo, destinazione scritta alla fine 20
Il MIPS Instruction [25– 0] Shift Jump address [31– 0] left 2 26 28 0 1 PC+4 [31– 28] M M u u x x ALU Add result 1 0 Add Shift RegDst Jump left 2 4 Branch MemRead Instruction [31– 26] Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] Read Read register 1 PC address Read Instruction [20– 16] data 1 Read register 2 Zero Instruction 0 Registers Read ALU ALU [31– 0] 0 Read M Write data 2 result Address 1 Instruction u register M data u M memory Instruction [15– 11] x u 1 Write x Data data x 1 memory 0 Write data 16 32 Instruction [15– 0] Sign extend ALU control Instruction [5– 0] 21
Nota sui segnali di controllo: - i segnali di controllo sono determinati in modo “combinatorio” soltanto sulla base del campo Opcode - non è in generale possibile prevedere l’ordine di arrivo dei segnali di controllo: le operazioni non sono eseguite “in sequenza”, controllo combinatorio (è necessario che Tclock sia sufficientemente lungo) 22
Esempio: istruzione di tipo-R Instruction [25– 0] Shift Jump address [31– 0] left 2 26 28 0 1 PC+4 [31– 28] M M u u x x ALU Add result 1 0 Add Shift RegDst Jump left 2 4 Branch MemRead Instruction [31– 26] Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] Read Read register 1 PC address Read Instruction [20– 16] data 1 Read register 2 Zero Instruction 0 Registers Read ALU ALU [31– 0] 0 Read M Write data 2 result Address 1 Instruction u register M data u M memory Instruction [15– 11] x u 1 Write x Data data x 1 memory 0 Write data 16 32 Instruction [15– 0] Sign extend ALU control Instruction [5– 0] 23
Esempio: istruzione di load Instruction [25– 0] Shift Jump address [31– 0] left 2 26 28 0 1 PC+4 [31– 28] M M u u x x ALU Add result 1 0 Add Shift RegDst Jump left 2 4 Branch MemRead Instruction [31– 26] Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] Read Read register 1 PC address Read Instruction [20– 16] data 1 Read register 2 Zero Instruction 0 Registers Read ALU ALU [31– 0] 0 Read M Write data 2 result Address 1 Instruction u register M data u M memory Instruction [15– 11] x u 1 Write x Data data x 1 memory 0 Write data read 16 32 Instruction [15– 0] Sign extend ALU control Instruction [5– 0] 24
Esempio: istruzione beq Instruction [25– 0] Shift Jump address [31– 0] left 2 26 28 0 1 PC+4 [31– 28] M M u u x x ALU Add result 1 0 Add Shift RegDst Jump left 2 4 Branch MemRead Instruction [31– 26] Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] Read Read register 1 PC address Read Instruction [20– 16] data 1 Read register 2 Zero Instruction 0 Registers Read ALU ALU [31– 0] 0 Read M Write data 2 result Address 1 Instruction u register M data u M memory Instruction [15– 11] x u 1 Write x Data data x 1 memory 0 Write data 16 32 Instruction [15– 0] Sign extend ALU control Instruction [5– 0] 25
Esempi di processori che usano controllo a singolo ciclo: NESSUNO! Perché? • Periodo di clock: abbastanza lungo per garantire la stabilità dei segnali attraverso il percorso più lungo ⇒ tempo di esecuz. costante per diverse istruz. Istruzioni “più lente” limitano le istruzioni “più veloci”! Es. lw Memoria Reg. File Istruz. A Reg. File L Memoria Dati U Es. Tipo-R Memoria Reg. File A Reg. File Istruz. L U 26
Limitazione aggravata da - istruzioni che utilizzano decine di unità funzionali in serie, ad esempio comprendenti calcoli in virgola mobile! CPI = 1, ma Tclock alto, ovvero frequenza di clock molto bassa! Nel complesso, il tempo di esecuzione di una istruzione è sempre pari al caso peggiore, ovvero a quello dell’istruzione più complessa e lunga • Altro svantaggio: duplicazione dell’HW ⇒ costi elevati! Nell’esempio del MIPS, come visto: - occorrono due memorie diverse [dati e istruzioni] [NB: questo va comunque bene perché negli attuali calcolatori si usa memoria cache + pipeline] - occorrono tre ALU, una per istruzioni aritmetiche | confronto operandi in beq | calcolo indirizzo lw e sw, una per calcolare PC+4 ed una per calcolare indirizzo di salto beq [la cosa si complica considerando modalità di indirizzamento complesse, ad esempio quelle con autoincremento, o istruzioni che effettuano operazioni in virgola mobile] 27
CONTROLLO MULTICICLO: L’IDEA DI BASE Istruzione lunga Istruzione potenzialmente breve Tistruzione costante e pari a T medio di esecuzione per istruzione Suddividere le istruzioni in “fasi”: un ciclo di clock per una fase! T1esecuzione T2esecuzione NB: T2esecuzione (il caso peggiore) può in generale essere maggiore del precedente! Tuttavia, le istruzioni più lunghe sono anche meno frequenti: principio “rendere più veloce l’evento più frequente” comporta un guadagno! 28
Ciascuna fase deve essere sufficientemente breve (Tclock breve) Bilanciare la suddivisione in fasi, evitare di mettere in serie più unità funzionali lente. Faremo in modo di non mettere in serie più di una delle operazioni: - accesso in memoria (istruzioni o dati) - accesso al register file (due letture e una scrittura) - operazioni della ALU (NB: accesso/scrittura in un registro singolo considerato non oneroso) Ciascuna di queste unità [memoria, register file, ALU] necessita di registri temporanei per memorizzarne il risultato. - registri temporanei: salvano dati prodotti in un ciclo di clock e utilizzati dalla stessa istruzione in un ciclo di clock successivo - registri visibili al prog: dati utilizzati da istruzioni successive 29
Il MIPS (Vedi Lezione CalcA “CPU multiciclo”, lucidi 7—20, per la specifica progressiva) PCWriteCond PCSource PCWrite ALUOp IorD Outputs ALUSrcB MemRead ALUSrcA MemWrite Control RegWrite MemtoReg Op RegDst IRWrite [5–0] 0 M Jump 1 u Instruction [25–0] 26 28 address [31-0] x Shift left 2 2 Instruction [31-26] PC [31-28] PC 0 0 M Instruction Read [25–21] register 1 M u Address u x Read x Instruction Read A Zero 1 Memory [20–16] register 2 data 1 1 0 ALU ALU ALUOut MemData Registers Instruction M Write result Read B [15–0] Instruction u register data 2 0 Write Instruction [15–11] x 4 1 M data Write u register 1 data 2 x Instruction 0 3 [15–0] M u x Memory 1 data 16 32 ALU Sign Shift register control extend left 2 Instruction [5–0] NB: l’unità di controllo si può specificare e realizzare in vari modi… 30
Instruction decode/ Instruction fetch register fetch 0 MemRead 1 ALUSrcA = 0 IorD = 0 ALUSrcA = 0 Start IRWrite ALUSrcB = 11 ALUSrcB = 01 ALUOp = 00 ALUOp = 00 PCWrite PCSource = 00 e) ') -typ EQ (Op = 'J') = R 'B (O p = Memory address W ') p = 'S Branch (O Jump computation Op or ( Execution completion completion 'LW') = 2 (Op 6 8 9 ALUSrcA = 1 ALUSrcA = 1 ALUSrcA =1 ALUSrcB = 00 ALUSrcB = 10 PCWrite ALUSrcB = 00 ALUOp = 01 ALUOp = 00 PCSource = 10 ALUOp = 10 PCWriteCond PCSource = 01 (O (Op = 'LW') p = 'S W ') Memory Memory access access R-type completion 3 5 7 RegDst = 1 MemRead MemWrite RegWrite IorD = 1 IorD = 1 MemtoReg = 0 Write-back step 4 RegDst = 0 RegWrite MemtoReg = 1 31
Controllo di un processore-multiciclo: Riepilogo specifica e realizzazione Initial Finite state Microprogram representation diagram Sequencing Explicit next Microprogram counter control state function + dispatch ROMS Logic Logic Truth representation equations tables Implementation Programmable Read only technique logic array memory 32
Calcolo CPI e Prestazioni nei sistemi a singolo ciclo e multiciclo 1) Calcolo prestazioni nei sistemi a singolo ciclo CPI = 1 Tclock = max{Ta + … Tk} ovvero la serie più lenta di “operazioni atomiche” [cammino critico] Tesecuzione = #istruzioni * CPI * Tclock = #istruzioni * Tclock 2) Calcolo CPI e prestazioni nei sistemi multi-ciclo Dato un certo carico di lavoro con frequenze relative delle istruzioni f1, …, fn CPI = f1*CPI1 + f2*CPI2 + … + fn*CPIn Tclock = max{T1, … ,Tm} [operazioni atomiche eseguite in un ciclo di clock] Tesecuzione = #istruzioni * CPI * Tclock 3) Confronto di prestazioni tra sistemi diversi [su un carico/prog. determinato] T1esecuzione CPI1*T1clock = T2esecuzione CPI2*T2clock 33
Puoi anche leggere