Calcolatori Elettronici LIVELLO ORGANIZZAZIONE: SCHEMI DI BASE ALU e REGISTER FILE Massimiliano Giacomin 1
DOVE CI TROVIAMO LIVELLO SIST. OP. Application Binary Interface (ABI) ISA Instruction Set Architecture (ISA) LIVELLO FUNZ.LE (RTL)? Componenti: registri, bus, memorie, LIVELLO DELLA LOGICA Strutture: registri, bus, memorie, Componenti: porte logiche, flip-flop, 2
ORGANIZZAZIONE DEL CALCOLATORE SECONDO IL MODELLO DI VON NEUMANN MEMORIA I/O Sistema di interconnessione CPU Sistema di interconnessione: uno o più bus 3
FOCUS SU MEMORIA I/O Sistema di interconnessione CPU 4
Schema del processore (e memoria) Unità di controllo PC Memoria (cache interna) IR Condizioni SEGNALI DI CONTROLLO UNITA DI ELABORAZIONE (DATAPATH) indirizzo dato letto s1 + s3 dato scritto s2 Es: add $s3, $s1, $s2 5
DATAPATH: DUE ASPETTI Progettare circuiti per: 1. Memorizzare ed elaborare i dati 2. Trasferire i dati da un punto ad un altro Vedremo: 1. Componenti del datapath - registri - ALU - ecc. ecc. 2. Modalità di interconnessione - punto-punto - a bus singolo - bus specializzati 6
Registro RegWrite Deve memorizzare valori a n bit: IN n n bit n OUT - n linee di ingresso - n linee di uscita Necessario poter memorizzare il valore in ingresso solo in determinati cicli di clock segnale RegWrite Controllo lettura in generale inutile: valore memorizzato sempre disponibile in uscita 7
Esempio RegWrite IN n n bit n OUT CLOCK RegWrite IN OUT V1 V2 V3 V0 V1 V3 8
REGISTRO: IMPLEMENTAZIONE RegWrite IN 0 FF 0 OUT 0 IN 1 FF 1 OUT 1...... IN n-1 FF n-1 OUT n-1 9
ALU (Arithmetic Logic Unit) Unità logico-aritmetica Effettua le operazioni logiche e aritmetiche all interno della CPU Progettiamo una ALU tenendo conto delle esigenze del MIPS ALU a 32 bit Operazioni aritmetiche: - somma - sottrazione - set on less than (slt) Operazioni logiche: - AND - OR - NOR 10
Operazione di somma Richiamo sui numeri in complemento a 2 con n bit: - positivi rappresentati normalmente, negativi in C.A.2 (si ottiene dal C.A.1 sommando 1) - estensione da n a n+k bit: estensione del segno - somma: normalmente scartando l eventuale riporto, overflow se pos+pos=neg o neg+neg=pos Vogliamo sommare bit a bit due numeri binari di n bit: a n-1 a i a 0 e b n-1 b i b 0 a 3 a 2 a 1 a 0 1 0 1 1 + b 3 b 2 b 1 b 0 0 1 1 1 = c 3 c 2 c 1 c 0 (1) 0 0 1 0 11
Una soluzione ad hoc Costruire un circuito digitale specializzato ad eseguire la somma di n bit Ad esempio, con n = 3 a 0 a 1 a 2 b 0 b 1 b 2 Sommatore a 3 bit c 0 c 1 c 2 Problemi: - complessità intrattabile per n grande (es. 32) - se si cambia n occorre costruire un altro circuito 12
Una soluzione basata sulla tecnica di decomposizione Decomposizione di funzioni in funzioni più semplici: - si ottengono reti combinatorie più semplici - si introducono nuove variabili booleane chiamate variabili di appoggio che permettono di connetterle tra loro Nel ns. caso: - decomposizione in reti combinatorie, dette full adder, ciascuna delle quali serve per ottenere c i (da a i e b i ) - variabili di appoggio = variabili di riporto r i 13
Full adder r i a i b i + c i r i+1 Tabella di verità a i b i r i c i r i+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 c i = a i b i r i + a i b i r i + a i b i r i + a i b i r i r i+1 = a i b i r i + a i b i r i + a i b i r i + a i b i r i = a i b i r i + a i b i r i + a i b i r i + a i b i r i + a i b i r i + a i b i r i = = b i r i (a i +a i )+ a i r i (b i +b i )+ a i b i (r i +r i ) = b i r i + a i r i + a i b i 14
Realizzazione circuitale: generazione di c i a i b i r i a i b i r i aibiri a i a i b i r i b i c i r i a i b i r i a i b i r i 15
Realizzazione circuitale: generazione di r i+1 a i a i r i b i b i r i r i+1 r i a i b i r i+1 = b i r i + a i r i + a i b i 16
Sommatore a n bit con n full-adder r 0 =0 a 0 b 0 + a 1 b1 + a n-1 bn-1 + r 1 r 2 r 1 c 0 c 1 c n-1 Per ogni i da 0 a n-1 il full-adder: somma a i + b i + r i (bit di riporto generato dalla somma nella posizione precedente) Genera in tal modo il bit c i di somma e il bit r i+1 di riporto per la somma in posizione successiva r n 17
Aggiunta delle operazioni logiche di AND e OR 18
Aggiunta di NOR e sottrazione NOR: a+b = a b sottrazione: a-b = a + (-b) b + 1 Posso sfruttare r 0! NB: per fare a-b seleziono: - Binvert - Operation=2 e pongo CarryIn 0 =1 19
Aggiunta di slt e overflow detection a<b sse a-b<0 20
Note sul lucido precedente - Overflow viene determinato secondo la regola dei segni - In realtà la determinazione di slt è più complicata se si tiene conto dell overflow: no overflow: a<b sse a-b<0 sse sign=1 overflow: implica che il segno vero è l opposto di sign ovr sign slt 0 0 0 0 1 1 1 0 1 1 1 0 21
Å 22
Aggiunta del bit di zero Utile per il test di eguaglianza (cfr. beq): a=b sse a-b=0 Nello schema BInvert e CarryIn sono combinati in Bnegate (ogni volta che nego B, se uso il sommatore è per sommare B) 23
NB: la ALU ottenuta è controllata secondo la tabella seguente AInvert Bnegate Operation 0 0 00 0 0 01 0 0 10 0 1 10 0 1 11 1 1 00 Function AND OR add subtract slt NOR 24
MODALITA DI INTERCONNESSIONE Trasferimento di informazione: da registro/i sorgente/i a registro destinazione passando per ALU o memoria Esistono diversi tipi di reti per realizzare l interconnessione: Punto-a-punto tra tutte le coppie sorgente-destinazione: non utilizzato a causa di complessità troppo elevata Bus singolo Bus specializzati 25
2) Interconnessione tramite bus singolo rdr m-1 rdr m-2 rdr 0 wrr m-1 wrr m-2 wrr 0 R m-1 R m-2 R 0 BUS Trasferimento da R i a R j : si attiva la linea di selezione dell i-esimo buffer tri-state (rdr i ) e quella di scrittura del registro R j (wrr j ) Il bus non consente di effettuare trasferimenti simultanei nello stesso ciclo di clock 26
NOTAZIONE: d ora in poi si indicheranno elementi che gestiscono fasci di n linee implementati con n elementi in parallelo (es: buffer tri-state) a 0 c 0 s Buffer tri-state A n n C... s basso ( 0 ) s alto ( 1 ) c i ºa i s a n-1 c n-1 s 27
Esempio: R3 R1+R2 con bus singolo R1 R2 R3 BUS R1, R2, R3 comandabili in lettura e scrittura Necessari Tmp1 e Tmp2 Servono 3 cicli di clock per eseguire l operazione! Tmp1 ALU Tmp2 F 28
3) Interconnessione con bus specializzati RegWrite1 ReadRegister1 RegWrite2 RegWrite3 R1 R2 R3 BS1 BS2 ALU ReadRegister2 BD Uso di più bus, p.es. per la ALU due bus sorgente + uno destinazione: sufficiente un ciclo di clock per eseguire l operazione! 29
Nota: Interconnessione Multiplexer Come prima, si usano multiplexer che selezionano tra più bus 30
Nota: decoder per la selezione della destinazione RegWrite WriteRegister Decoder ReadRegister1 R1 R2 ALU R3 ReadRegister2 31
Un nuovo componente: il register file RegWrite WriteRegister ReadRegister1 Decoder R1 R2 R3 ReadData1 ReadData2 ALU WriteData ReadRegister2 Ovviamente, il MIPS ha 32 registri a 32 bit 32
NB I registri sorgente/destinazione sono codificati da un numero (p.es. indicato nei campi dell istruzione). La selezione viene effettuata con: Multiplexer: per selezionare la sorgente (da inviare ad una destinazione prefissata) Decodificatore: per selezionare la destinazione (da sorgente prefissata) 33
Register file per il MIPS 32 32 32 Note: lettura asincrona, no segnale di read scrittura sincrona (edge-triggered), abilitata dal segnale RegWrite 34