Calcolatori Elettronici (G.B.) Architettura 1
ARCHITETTURA elementi di base
• Contenuto della lezione
– Richiami sulla struttura del calcolatore (CPU) – Logica cablata/microprogrammazione
– Repertorio istruzioni (RISC/CISC) – Prestazioni
– Classificazione architetture
Struttura (anni 70)
CPU
I/O bus bus di I/O
CPU
(HP 2100) MINI MAINFRAME
(IBM 370)
modulo modulo I/O
I/O modulo
I/O modulo I/O
controllore canale di
MEMORIA MEMORIA
Calcolatori Elettronici (G.B.) Architettura 3
Struttura PDP-11 (anni 70-80)
MICROCOMPUTER PDP-11
MODULO DI MEMORIA LETTURA/SCRITTURA
MODULO MEMORIA SOLA LETTURA
REAL TIME CLOCK
MODULO INTERFACCIA LINEA SERIALE
( CONSOLE )
MODULI OPZIONALI SUPPORTI MAGNETICI ROTANTI
STAMPANTE AD ALTA VELOCITA'
CONVERTITORE A/D CONVERTITORE D/A INTERFACCIA PARALLELA INTERFACCIA SERIALE INTERFACCIA DMA ACCESSORI
BACKPLANE
POWER SUPPLY
UNIBUS
MODULO
La console è su linea
seriale RS-232
memoria I/O
MEMORIA CPU
PC bus scheda madre
Struttura PC (anni 80)
• E’ sparita la console RS232
• Il Video e la tastiera sono collegati direttamente alla scheda madre.
• Per il video c’è una RAM apposita
• Memoria di espansione e
periferici sono su schede
collegate sul bus
Calcolatori Elettronici (G.B.) Architettura 5
Struttura PC (non più) corrente
Struttura PC (non più) corrente
Calcolatori Elettronici (G.B.) Architettura 7
Struttura PC corrente
Di recente si
tende al single
chip
Struttura PC corrente
Calcolatori Elettronici (G.B.) Architettura 9
Schema di riferimento
• Per Il momento lo schema di riferimento sarà quello di figura
• Corrisponde allo schema dei PC anni 80
• Tuttora in largo uso nei sistemi di controllo
Transazioni sul bus
Calcolatori Elettronici (G.B.) Architettura 11
Architettura di Von Neuman
• memoria indifferenziata per dati o istruzioni, solo
l'interpretazione da parte di CPU stabilisce se una data
configurazione di bit è da riguardarsi come un dato o come
un'istruzione
Architettura Harward
• Due memorie distinte: la memoria istruzioni e la memoria dati.
• Il comando di lettura della memoria istruzioni è superfluo, in
quanto si può immaginare che questa memoria sia sempre e
soltanto letta
Calcolatori Elettronici (G.B.) Architettura 13
Schema aggregato della CPU
Fetch-Esecuzione
• Fetch: Prelievo e decodifica dell’istruzione
– Fase comune a tutte le istruzioni
• Esecuzione: Fase in cui vengono eseguite le azioni previste dal codice di operazione
– Fase diversa da istruzione a istruzione
Calcolatori Elettronici (G.B.) Architettura 15
Componenti essenziali
Registri di CPU
• IR: usato per contenere l'istruzione in corso di esecuzione.
Caricato in fase di fetch. Rappresenta l'ingresso che determina le azioni svolte durante la fase di esecuzione.
• PC: tiene traccia dell'esecuzione del programma
• MAR: contiene l'indirizzo della locazione di memoria da leggere o scrivere.
– La dimensione di MAR determina l'ampiezza dello spazio di memoria fisica; dalla fine degli anni '80 vengono prodotti microprocessori con bus indirizzi a 32 bit
• MDR: registro attraverso il quale viene scambiata l'informazione tra la memoria e la CPU
– Tradizionalmente MDR dà la misura del grado di parallelismo della
macchina (8, 16, 32, 64 bit) La dimensione di
Calcolatori Elettronici (G.B.) Architettura 17
Fase di Fetch
Organizzazione a singolo bus interno
Calcolatori Elettronici (G.B.) Architettura 19
Registri
Commutazione Registri
Calcolatori Elettronici (G.B.) Architettura 21
Trasferimento registro registro
RA RB
T1: RB out , RA in
FF comandati
dal fronte di
discesa
Altre operazioni
• Impiego ALU (DR RA+RB)
• T1: RA
out, TI
in• T2: RBout, ADD, TOin
• T3: TOout, Rdin
• Registro DTR
• T1: DTRout Lettura (verso l’interno)
• T1: SELDTRdir, DTRin Scrittura (verso l’esterno)
• Aggiornamento PC
• T1: Pcout, SEL4, ADD, Toin
• T2: TOout, PCin
Calcolatori Elettronici (G.B.) Architettura 23
Lettura memoria
• Ipotesi la memoria risponde entro il clock successivo a quello in cui viene asserito MRD (Memory Read)
• T1: PCout, MARin
• T2: MDR
• T3: MDR, DTRin
• T4: DTRout, Irin
• Sfruttiamolo bene:
• T5: PCout, MARin, SEL4, ADD, TOin
• T6: MDR
• T7: MDR, DTRin
• T8: DTRout, Irin
Data Path - 1 bus
Esecuzione in più passi.
Esempio: ADD R3,R1,R2
Richiede Almeno tre periodi di clock:
• R1_out; TEMPI_in
• R2_out; TEMPI_out; ADD;
TEMPO_in
• TEMPO_out; R3_in
Calcolatori Elettronici (G.B.) Architettura 25
Data Path - 3 bus
L’istruzione ADD R3,R2,R1 viene eseguita in un solo clock:
• R1_out1; R2_out2; ADD;
R3_in
Logica cablata
Calcolatori Elettronici (G.B.) Architettura 27
Logica cablata
• Progetto
– Come sintesi di rete sequenziale
• ingressi: IR, stato di UO
(e di eventuali altre parti esterne, p.e. memoria)• uscite: comandi
– Uso di ROM. La rete combinatoria ha come
• ingressi (indirizzi alla ROM): IR, stato di UO, stato di UC
• uscite: comandi, ingressi di eccitazione dei FF di stato – Logica programmabile (PLA)
– Progettazione con CAD per VLSI – Per composizione di parti
• Misura della complessità di UC:
N_stati x N_ingressi x N_uscite
UC microprogrammata
Calcolatori Elettronici (G.B.) Architettura 29
UC microprogrammata
• Tecnica affermatasi negli anni 70
• UC è una sorta di calcolatore nel calcolatore
• La memoria di controllo contiene le microistruzioni:
• mPC: contatore di microprogramma. Contiene l’indirizzo della prossima microistruzione
– All’inizio della fase di fetch mPC contiene l’indirizzo (I
0) del tratto di microprogramma corrispondente al fetch
– Alla fine della fase di fetch mPC viene aggiornato con il contenuto (o una opportuna decodifica) di IR in modo da
puntare alla microroutine che effettua le azioni richieste dalla particolare istruzione
– Al termine, mPC viene di nuovo caricato con (mI0)
UC microprogrammata
• Differenti soluzioni:
– sequenza di micro control word (CW) – microprogramma con subroutine
– microistruzioni che contengono codificato al loro interno l’indirizzo della prossima microistruzione
– nanoprogrammazione: le microistruzioni sono a loro volta interpretate da una unità nanoprogrammata (68000)
• Microprogrammazione orizzontale:
– ogni bit di una CW corrisponde ad una linea di comando
• Microprogrammazione verticale
– le CW contengono i comandi in forma convenientemente
codificata
Calcolatori Elettronici (G.B.) Architettura 31
Cablata o microprogrammata?
• Fino a fine anni ‘60: logica cablata (PDP8, HP 2116)
• Anni ‘70: microprogrammazione (VAX, Z80, 8086, 68000) – Repertorio di istruzioni molto esteso e variato: CISC
– Il VAX 11/789 (Digital) e il 370/168 (IBM) avevano oltre 400.000 bit di memoria di controllo
• Dagli anni ‘80 si è tornati alla logica cablata;
– Affermazione delle macchine RISC
• Istruttivo è esaminare l’evoluzione dell’architettura Intel: da
CISC a (praticamente) RISC
Ragioni per le CISC
• Un repertorio di istruzioni esteso è preferibile perché:
– Istruzioni potenti semplificano la programmazione
– Riduce il gap tra linguaggio di macchina e linguaggio di alto livello
– Software crisis
• L’uso efficiente della memoria (all’epoca era costosa) era la preoccupazione principale:
– meglio avere codici compatti
• Essendo (allora) la memoria di controllo molto più
veloce della memoria centrale, portare funzionalità
nella prima avrebbe migliorato le prestazioni della
Calcolatori Elettronici (G.B.) Architettura 33
...Tuttavia
• Memorie RAM: molto più veloci delle precedenti a nuclei
• Cache: riducono ulteriormente i tempi di esecuzione
• Comportamento dei programmi:
– l'80% delle istruzioni eseguite corrispondeva al solo 20% del repertorio.
conviene investire nella riduzione dei tempi di esecuzione di quel 20%, anziché aggiungere raffinate istruzioni, quasi mai usate, ma responsabili dell'allungamento del tempo di ciclo di macchina
conviene costruire processori molto veloci, necessariamente con repertori semplici, e contare sull’ottimizzazione del
compilatore
Criteri di progetto per le RISC
• Le istruzioni devono essere semplici
– Se l'introduzione di una operazione di macchina fa crescere del 10% il periodo di clock, allora essa deve produrre una riduzione di almeno un 10% del numero totale di cicli
eseguiti.
• Con memorie attuali le istruzioni di macchina possono essere eseguite alla stessa o maggior velocità delle microistruzioni
– non c'è vantaggio a spostare le funzionalità a livello di
microcodice; ciò ha solo l'effetto di rendere più difficoltose modifiche e cambiamenti
– molto meglio modificare una libreria di sistema che
Calcolatori Elettronici (G.B.) Architettura 35
Criteri di progetto per le RISC
• Tutte le istruzioni occupano lo stesso spazio di memoria (una parola)
• Ristretto numero di formati
– l'interpretazione del codice avviene attraverso un semplice decodificatore (una rete AND-OR)
– la codificate ``ordinata'' consente accorgimenti per
velocizzare l'esecuzione (pipeline), difficilmente applicabili a repertori di istruzioni complesse
• La semplificazione del repertorio tende a far aumentare la dimensione del codice
– non è un problema, vista la tendenza alla riduzione dei costi e all'aumento della densità delle memorie
– dal punto di vista della velocità i guadagni che si ottengono nel semplificare le istruzioni sono superiori all'effetto
negativo del maggior numero di istruzioni per programma.
Criteri di progetto per le RISC
• Compilatori ottimizzati.
– in grado di produrre sequenze ottimizzate di semplici operazioni di macchina, indipendentemente dalla complessità del linguaggio
– Il compilatore sbroglia in modo automatico e efficiente tutte le complicazioni che possono sorgere nel tradurre da
linguaggio di alto livello a linguaggio di basso livello
– Il compilatore è motivo di semplificazione del repertorio di
istruzioni anziché di complicazione
Calcolatori Elettronici (G.B.) Architettura 37
Criteri di progetto per le RISC
• Conclusioni
• L'architettura dovrebbe prevedere solo operazioni tra registri (e non tra registri e memoria o tra memoria e memoria) e semplici operazioni di lettura/scrittura in memoria, con ridotte modalità di indirizzamento
• Il compilatore deve essere costruito in modo da fare il miglior uso dei registri, tenendo, per quanto possibile, le variabili nei registri stessi, riducendo al minimo il traffico con la memoria
• Per il precedente motivo la CPU dovrebbe presentare un
consistente numero di registri
Impatto sull’architettura X86
• L’8086 è un tipico rappresentante dell’architettura CISC. I modelli successivi si avvicinano sempre più ai RISC
– Pipeline: una (vera) pipeline appare con il 486 – Cache: con il 486
– Predizione dei salti con il Pentium – Dal Pentium Pro:
• Esecuzione fuori ordine (speculativa)
• Superscalarità
• Register renaming
Calcolatori Elettronici (G.B.) Architettura 39
Prestazioni (della CPU)
Si consideri un generico programma
– N: numero di cicli di clock richiesti per la sua esecuzione – f: frequenza del clock
– t: tempo di CPU richiesto per l'esecuzione
t = N / f
– I: numero totale di istruzioni di macchina eseguite per portare a termine la computazione
– CPI: numero medio di clock per istruzione di macchina
CPI=N / I
t= I * CPI * T t= I * CPI * T
Architettura Architettura Repertorio
Repertorio
Compilatore Compilatore
Dipendenza Dipendenza
Tecnologia
Tecnologia
Calcolatori Elettronici (G.B.) Architettura 41
Prestazioni
t= I * CPI/f = I* CPI * T
• I dipende dal repertorio di istruzioni e dal grado di ottimizzazione del compilatore.
– Compilatori diversi possono dare luogo a I diversi.
– Uno stesso compilatore, che genera codice per due macchine diverse, dà I diversi.
– Un repertorio CISC favorisce il miglioramento delle
prestazioni (riduce I).
Prestazioni
t= I * CPI/f = I* CPI * T
• f è legata alla tecnologia e all'organizzazione architetturale della CPU
– Oggi f >2 GHz è la norma nei PC
– Istruzioni complesse richiedono di norma frequenze di più basse
– Istruzioni semplici (RISC) permettono di diminuire i ritardi di
propagazione nella logica di controllo e, quindi, di diminuire
Calcolatori Elettronici (G.B.) Architettura 43
Prestazioni
t= I * CPI/f = I* CPI * T
• CPI dipende dall'architettura e dal repertorio delle istruzioni
– Istruzioni semplici richiedono un minor numero di cicli.
• In un macchina convenzionale CPI >= 1
– Attraverso tecniche come la pipeline è possibile portare CPI ad un valore molto vicino ad 1.
– L'aggiunta di più unità di esecuzione in parallelo (macchine
superscalari) permette di rendere CPI minore di 1.
Indici di prestazione
• MIPS (Milioni di istruzioni al secondo)
MIPS = I / (t*10
6)
E’ un indice che ha poco significato
• MFLOPS (Milioni di istruzioni in virgola mobile al secondo) MFLOPS = I_vm / (t*10
6)
• Ci sono indici migliori, ottenuti con programmi campione (benchmark)
– I benchmark posso essere di diversa natura e complessità e mirare a raccogliere indici differenziati delle prestazioni
– In particolare ci sono quelli forniti da SPEC (Standard Performance
Evaluation Corporation) : SpecCPU 2006, SpecWeb 2009, …..
Calcolatori Elettronici (G.B.) Architettura 45
Repertorio stile RISC
• Il PowerPC
ADD RD,RA,RB (OE=0, Rc=0) ADD. RD,RA,RB (OE=0, Rc=1) ADDO RD,RA,RB (OE=1, Rc=0) ADDO. RD,RA,RB (OE=1, Rc=1)
Formato x86 (a 32 bit)
Esempio
CLI 1 solo byte
PUSH EAX 1 solo byte
PUSH Var[EBX] fino a 6 byte
MOV EAX, ES:V[EBX+ESI] 6 byte (probabilmente)
Calcolatori Elettronici (G.B.) Architettura 47
Modello di programmazione (386)
Classificazione architetture
• In base al modello di esecuzione, ovvero al modo in cui la CPU accede e manipola gli oggetti
dell'elaborazione
– determina il numero di operandi esplicitamente o implicitamente rappresentati nell'istruzione
• Modello a stack
• Modello registro-registro
• Modello registri-memoria
• Modello memoria-memoria
Calcolatori Elettronici (G.B.) Architettura 49
Confronto
In riferimento all’istruzione di alto livello a=b+c (somma)
STACK REGISTRO-REGISTRO MEMORIA- REGISTRO (*)
MEMORIA- MEMORIA
PUSH B LOAD R1, B LOAD B ADD A,B,C PUSH C LOAD R2,C ADD C
ADD ADD R3,R1,R2 STORE A POP A STORE A, R3
(*) Assume un registro accumulatore