ARCHITETTURE DEI CALCOLATORI
Introduzione
Mariagiovanna Sami
20092009-10
1
Sistemi digitali: sessant’anni di
evoluzione…
‰
Il PC che si compera oggi per 500 dollari è più
potente, più veloce, dotato di maggiore memoria
di un calcolatore che vent’anni fa costava un
milione di dollari…
¾
¾
‰
‰
Tecnologie migliori, e anche
Architetture dei calcolatori sempre più evolute
Nelle prime generazioni: un’unica “classe” di
calcolatori;
Oggi: soluzioni che vanno dai microprocessori per
elettrodomestici (meno di un dollaro) a
supercomputer con decine di migliaia di
processori (milioni di dollari…)
-2-
20092009-10
Sistemi digitali: sessant’anni di
evoluzione…
‰
‰
Dalla programmazione in assembler si è passati
all’uso di (pochi) linguaggi ad alto livello Ö
maggiore portabilità del software
Dall’uso di sistemi operativi “proprietari” della
casa produttrice dei calcolatori si è passati a
sistemi open source quali Unix e Linux (che ne
deriva) Ö si riduce il costo per l’introduzione di
una nuova architettura.
-3-
20092009-10
Sistemi digitali: sessant’anni di
evoluzione…
Il miglioramento: solo una questione di tecnologia?
‰ Riferimento: il VAX 11/780 della DEC (1978):
¾
¾
¾
‰
Fatte 1 le prestazioni del VAX, misurando il tempo di
esecuzione per lo stesso insieme di programmi:
Nel 2005 le prestazioni dell’Intel XEON si valutavano a
6505
I microprocessori di fascia alta sono circa sette volte
più veloci di quanto non consentirebbe la sola
tecnologia!
Ö l’innovazione della architettura supera quella
della sola tecnologia.
-4-
20092009-10
Sistemi digitali: sessant’anni di
evoluzione…
Prestazioni (rif.: VAX 11/789)
10000
64-bit
Intel Xeon
AMD Opteron
6505
5764
1000
100
10
1978
VAX 780/11
1986
1992
-5-
20022004
20092009-10
Sistemi digitali: sessant’anni di
evoluzione…
‰
‰
‰
Prima del 1985: il miglioramento delle prestazioni
dipende essenzialmente dalla tecnologia (circa 25%
annuo);
Successivo miglioramento delle prestazioni:
essenzialmente dovuto alle variazioni architetturali (fino
al 2002 circa: incremento per un fattore pari a circa 7!)
DOPO IL 2002: vincoli riguardanti il consumo di
POTENZA, il parallelismo disponibile nelle applicazioni,
e la latenza delle memorie, hanno ridotto l’incremento
delle prestazioni a circa il 20% annuo.
-6-
20092009-10
Sistemi digitali: sessant’anni di
evoluzione…
‰
La grande variazione architetturale degli anni
’80:
¾
¾
¾
Passaggio ad architetture basate sul concetto RISC:
Architetture che non si sono adeguate alla nuova
visione: sono scomparse (caso estremo: l’architettura
VAX)
Architetture che hanno retto la sfida: es.: Intel, che
ha modificato l’architettura x86 traducendo le
istruzioni di macchina precedenti in un insieme tipo
RISC.
-7-
20092009-10
Architetture: quale
definizione?
‰
‰
‰
‰
Architettura astratta: specifica funzionale di
un calcolatore;
Architettura concreta: una implementazione
di una architettura astratta;
Normalmente, per architettura si intende una
architettura astratta. Architettura concreta:
spesso chiamata microarchitettura.
Architettura astratta: una specifica di
macchina “a scatola nera” può essere vista:
-8-
20092009-10
Definizione di architettura
‰
‰
Dal punto di vista del programmatore: si ha a
che fare con un modello di programmazione,
equivalente alla descrizione del linguaggio di
macchina;
Dal punto di vista del progettista: si ha a che
fare con un modello hardware (descrizione a
scatola nera fornita al progettista: deve
includere informazioni addizionali, es., sui
protocolli di interfaccia etc.).
-9-
20092009-10
Definizione di architettura
‰
‰
Instruction Set Architecture (ISA): architettura
astratta definita dall’insieme delle istruzioni che
il calcolatore è capace di decodificare ed
eseguire.
Una stessa ISA può essere implementata da
architetture hardware con caratteristiche
differenti (caso tipico: ISA X86, implementato
da architetture Intel, AMD, Transmeta…).
- 10 -
20092009-10
La definizione di paradigma
architetturale:
‰
‰
Paradigma architetturale: composizione dello
hardware e del modo di esecuzione del
programma;
Non include il software, ma implica il modo di
eseguire il codice oggetto!
- 11 -
20092009-10
Quali classi di calcolatori?
‰
‰
Anni ’60: “mainframe” – macchine che
costavano milini di dollari, erano utilizzate in
“centro di calcolo” da personale specializzato
per elaborazione dati di tipo gestionale e
scientifico;
Fine anni ’60-anni ’70: minicomputer – nato per
applicazioni di laboratorio, rapidamente usato
per applicazioni di tipo time-sharing e per
sistemi dedicati di controllo (es., controllo
numerico avanzato).
- 12 -
20092009-10
Quali classi di calcolatori?
‰
‰
Fine anni ’70: emergono i primi supercomputer –
sistemi ad alte prestazioni per calcolo scientifico
(prodotti in numero molto limitato, ma
introdussero concetti oggi adottati in macchine
di uso diffuso!);
1974; i primi microprocessori Ö la diffusione
dei dispositivi di seconda generazione (fine anni
’70 - primi anni ’80: dispositivi a 16 bit, con
capacità di Memory Management) porta al
personal computer.
- 13 -
20092009-10
Quali classi di calcolatori?
‰
‰
Il PC “singolo” su ogni scrivania porta alla scomparsa del
“time sharing” come uso simultaneo dello stesso
calcolatore (risorse di calcolo) da parte di più utenti Ö
nascono i server (calcolatori che forniscono a un gran
numerto di utenti servizi quali gestione e accesso a
memorie a lungo termine, gestione dei collegamenti a
Internet, etc.)
Anni ’90: nascono i dispositivi digitali “handheld” (PDA),
l’elettronica digitale ad alte prestazioni (dai videogiochi
a set-top box etc.), la telefonia cellulare avanzata Ö
emergono i sistemi embedded.
- 14 -
20092009-10
Quali classi di calcolatori?
‰
‰
Anni ’90: nascono i dispositivi digitali
“handheld” (PDA), l’elettronica digitale ad alte
prestazioni (dai videogiochi a set-top box etc.),
la telefonia cellulare avanzata Ö emergono i
sistemi embedded.
Anni 2000: si affermano i “Data Center” –
ambienti con la capacità di gestire e
memorizzare grandi masse di dati e collegamenti
in rete, più in generale fornire servizi per un
gran numero di calcolatori “remoti”.
- 15 -
20092009-10
La conseguenza:
‰
‰
Il progetto di sistemi hardware-software anche
di grande complessità si estende ben al di là del
centro di calcolo o anche del PC Ö studio e
progetto di architetture di calcolo diventano
componenti fondamentali nel progetto di
soluzioni elettroniche nei più diversi campi;
Si rende necessario valutare le architetture
esistenti fra cui scegliere, ed eventualmente
proporre nuove soluzioni.
- 16 -
20092009-10
Quali le caratteristiche?
‰
Segmento maggiore in termini di valore di
mercato ($$!): il personal computer:
¾
¾
¾
Costo: da 500 a 5000$ (approssimativamente);
Ottimizzato per il rapporto costo-prestazioni;
Ben caratterizzato per una mescolanza di applicazioni
di tipo generale e di computazione Web-centric.
- 17 -
20092009-10
Quali le caratteristiche?
‰
Server:
¾
¾
¾
¾
Sempre più essenziale per fornire servizi affidabili di
gestione di files e di calcolo;
Dependability (“disponibilità del servizio”): fattore
critico;
Altro aspetto essenziale: la scalabilità (possibilità di
aumentare memoria, sistema di I/O, capacità di
calcolo per soddisfare richieste crescenti);
Efficienza in termini di throughput (prestazioni
valutate in termini di transazioni o di pagine Web
servite in un minuto).
- 18 -
20092009-10
Quali le caratteristiche?
‰
Supercomputer: i più costosi (milioni di
dollari)…
¾
¾
¾
Prestazioni: focalizzate sul calcolo scientifico (Ö
operazioni in virgola mobile…);
Un tempo basati su tecnologie particolari – oggi
realizzati come sistemi multiprocessore di grandi
dimensioni (anche decine di migliaia di processori
cooperanti) realizzati in tecnologia standard;
Soluzioni come “cluster” di personal computers o
addirittura come il “grid” hanno sostituito per
numerose applicazioni i supercomputer.
- 19 -
20092009-10
Quali le caratteristiche?
‰
La frazione di mercato più grande (e
crescente) in termini di unità installate…
calcolatori embedded
¾
¾
applicazioni: dai telefoni cellulari all’automobile agli
elettrodomestici, dalle smart-card ai videogiochi alle
apparecchiature medicali…
Spettro di capacità di elaborazione e di costi molto
ampio – da dispositivi a 8 bit che costano poche
decine di centesimi a dispositivi di fascia alta per i
videogiochi che possono costare un centinaio di
dollari;
- 20 -
20092009-10
Embedded computing
‰
Requisito principale imposto dall’utente: spesso,
funzionamento in tempo reale – almeno per un
segmento dell’applicazione eseguita si impone un limite
massimo al tempo di esecuzione. Es.:
set-top box: il tempo per elaborare un’immagine è
strettamente limitato – il processore dovrà accettare ed
elaborare l’immagine immediatamente successiva in un
tempo rigorosamente predefinito (hard real time).
In alcuni casi il vincolo è meno stringente – sono possibili
alcune violazioni, purché in numero limitato (soft real
time).
- 21 -
20092009-10
Embedded computing
‰
Altri aspetti essenziali dell’embedded
computing:
¾
¾
Necessità di ridurre la quantità di memoria (in molte
applicazioni, la memoria diventa una componente
elevata del costo; spesso si vuole che tutta la
memoria necessaria stia sullo stesso chip del
processore) Ö vincolo sul software applicativo!
Necessità di ridurre il consumo di potenza (molti
sistemi sono alimentati a batteria, comunque
mancano sistemi di raffreddamento) Ö impatta sul
progetto della CPU, del sistema hardware e anche del
software.
- 22 -
20092009-10
Il punto di partenza:
‰
Alla base: il paradigma di Von Neumann (e la sua
alternativa di Harvard):
CPU: Central
Processing Unit;
ALU
MEMORIA
CPU
Unità di
controllo
I/O
- 23 -
ALU: Arithmetic- Logic
Unit;
I/O: Input/Output (a
seconda del contesto
indica la funzione
oppure l’unità che
esegue la funzione).
20092009-10
Il punto di partenza:
‰
‰
Schema iniziale: qualsiasi azione (I/O
incluso) viene iniziata da programma:
Estensione: paradigma reattivo (si
ammette che il calcolatore risponda ad
eventi esterni – es., gestione di I/O in
interrupt – asincroni rispetto all’esecuzione
del programma pri9ncipale) non modifica
sostanzialmente il paradigma di Von
Neumann.
- 24 -
20092009-10
Stile di programmazione: imperativo,
dominato dal flusso del controllo
‰
‰
Spazio di indirizzamento in memoria: unico.
L’informazione (istruzione o dato) è identificata
mediante il suo indirizzo. Il nome di una variabile
viene tradotto in un indirizzo.
Istruzioni di macchina: memorizzate
sequenzialmente. Ordine naturale di lettura
dalla memoria (fetching) ed esecuzione: secondo
valori crescenti degli indirizzi Ö esecuzione nello
stesso ordine sequenziale in cui le istruzioni
sono state scritte dal programmatore e
registrate in memoria.
- 25 -
20092009-10
Il flusso del controllo
‰
‰
‰
Il Contatore di Programma (PC) contiene l’indirizzo
della prossima istruzione da eseguire; l’Unità di
Controllo ne comanda la lettura dalla memoria;
L’U.C. decodifica l’istruzione e ne comanda
l’esecuzione inviando opportuni segnali ad ALU,
memoria (eventualmente I/O);
Simultaneamente, calcola l’indirizzo della prossima
istruzione da eseguire:
¾
¾
Di norma, istruzione immediatamente successiva (in ordine
sequenziale) Ö indirizzo calcolato incrementando il PC;
Un indirizzo diverso viene esplicitamente indicato mediante
una istruzione di controllo (salto condizionato o no, chiamata
a /rientro da sottoprogramma…).
- 26 -
20092009-10
Esecuzione dominata dal controllo
‰
Il controllo è determinato:
¾
¾
‰
‰
Implicitamente dall’ordinamento delle istruzioni
nel programma, oppure
Esplicitamente mediante istruzioni di controllo.
L’esecuzione è inerentemente sequenziale
e seriale (Ö le istruzioni vengono eseguite
in sequenza, e ogni istruzione viene letta e
avviata in esecuzione solo dopo che la
precedentemente è stata completata).
Tutte le azioni sono sincronizzate de facto
dall’esecuzione del programma.
- 27 -
20092009-10
La variante Harvard:
‰
Separa memoria di programma e memoria
dati; lo spazio di indirizzamento è
comunque unico, la separazione riguarda la
comunicazione fisica fra CPU e memorie
ALU
Memoria di
programma
Unità di
Controllo
Memoria Dati
I/O
- 28 -
20092009-10
Il problema delle prestazioni
‰
‰
‰
Per molte applicazioni (e per molto tempo):
prestazioni = principale parametro di
valutazione di un calcolatore
Fondamentalmente: con prestazioni si
indica il reciproco del tempo di risposta
(detto anche tempo di esecuzione). Tempo
di esecuzione minore Ö prestazioni migliori
(più elevate);
Per alcune applicazioni le prestazioni sono
riferite al throughput (= quantità totale di
lavoro eseguito per unità di tempo).
- 29 -
20092009-10
Quale tempo?
‰
‰
‰
Tempo di CPU: tempo durante il quale la
CPU sta eseguendo istruzioni (non include il
tempo passato per attendere la
disponibilità di unità di I/O etc.);
Tempo di CPU utente: tempo speso
eseguendo il programma utente;
Tempo di CPU di Sistema: tempo speso
eseguendo attività del Sistema Operativo
richieste dal programma.
- 30 -
20092009-10
La valutazione delle prestazioni
‰
‰
‰
‰
Riferita a un insieme di programmi benchmark
che possono essere:
L’applicazione reale;
Applicazioni modificate (scripted);
Kernel (nuclei) estratti da programmi reali;
Benchmark sintetici – tentano di replicare la
frequenza media di operazioni e operandi in un
ampio insieme di programmi reali.
- 31 -
20092009-10
La valutazione delle prestazioni
Si distinguono:
‰ Programma statico = il codice scritto dal
programmatore (o il codice oggetto
prodotto dal compilatore):
‰ Programma dinamico = sequenza
dinamica di istruzioni eseguite – tiene in
conto le dipendenze dai dati, i salti, le
ripetizioni dei cicli…
‰ Le prestazioni fanno riferimento al
programma dinamico!
- 32 -
20092009-10
La valutazione delle prestazioni
‰
‰
Calcolatori “vecchi” (strettamente Von
Neumann): per ogni istruzione nell’insieme
delle istruzioni di macchina (IS – Instruction
Set) è noto il tempo totale richiesto da
lettura + esecuzione (= latenza
dell’istruzione)
Fase di profiling: = esecuzione del
programma con opportuni insiemi di dati) Ö
genera il programma dinamico;
- 33 -
20092009-10
La valutazione delle prestazioni: macchina
di Von Neumann
‰
‰
Tempo di esecuzione del programma =
somma delle latenze di tutte le istruzioni
nel programma dinamico;
Ottimizzazione delle prestazioni:
ottenuta scegliendo l’algoritmo “migliore”
e usando le istruzioni più veloci nella
scrittura (/compilazione) del programma.
- 34 -
20092009-10
Approccio più generale: l’equazione
delle prestazioni della CPU
‰
‰
Architetture realistiche: includono come
minimo gerarchie di memoria e pipelining
Ö il tempo di esecuzione non può essere
calcolato come somma delle latenze;
Dati di partenza: tempo di ciclo della CPU
(clock cycle time), numero di cicli di
clock richiesti da un programma, numero
di istruzioni eseguite (Instruction Count IC).
- 35 -
20092009-10
L’equazione delle prestazioni della
CPU
‰
Tempo di CPU: espresso come:
CPUtime = (CPU_clock_cycles_for_a_program) *
Clock_cycle_time =
(CPU_clock_cycles_for_a_program)/clock_rate
‰
Parametro essenziale di valutazione:
numero di cicli di clock per istruzione
(Clock Cycles per Instruction – CPI):
CPI = (CPU_clock_cycles_for_a_program)/IC
- 36 -
20092009-10
L’equazione delle prestazioni della
CPU
‰
‰
CPI: cifra di merito che permette di valutare
diversi stili alternativi di implementazione
– usata in questo corso.
CPUtime = IC * clock_cycle_time*CPI
Espandendo…
- 37 -
20092009-10
L’equazione delle prestazioni
della CPU
Instructions clock _ cycles sec onds
×
×
=CPUtime
program
instructions program
Le prestazioni dipendono dal ciclo di clock, dal
numero di cicli di clock per istruzione e dal
numero di istruzioni eseguite (instruction
count).
- 38 -
20092009-10
L’equazione delle prestazioni
della CPU
‰
‰
‰
Ciclo di clock: dipende dalla tecnologia
hardware e dalla organizzazione della CPU;
CPI: dipende dall’organizzazione della CPU e
dall’Instruction Set Architecture;
Instruction Count: dipende dall’Instruction Set
Architecture e dalla tecnologia del compilatore.
- 39 -
20092009-10
Verso migliori prestazioni:
alcuni dei colli di bottiglia
1. “Logic-memory gap”: la memoria è più lenta
della logica – memorie più veloci sono più
costose:
¾
¾
Il gap continua ad aumentare;
Le applicazioni richiedono memorie sempre più
grandi.
- 40 -
20092009-10
Verso migliori prestazioni:
alcuni dei colli di bottiglia
2. “Esecuzione totalmente seriale”: nella
macchina di Von Neumann un’istruzione deve
essere completata prima che si possa leggere
l’istruzione successiva:
¾ La latenza di un’istruzione e le prestazioni
complessive sono dominate dalla tecnologia.
3. “Esecuzione totalmente sequenziale”: le
istruzioni vengono eseguite rigorosamente
nell’ordine in cui sono state previste dal
programmatore, una per volta.
- 41 -
20092009-10
Come migliorare le
prestazioni?
1. Modificare la struttura della memoria: il
programmatore deve vedere una memoria
indirizzabile molto ampia, la CPU deve vedere
una “memoria equivalente” molto veloce – e il
cliente finale deve trovare il costo accettabile!
Ö Ricorso al concetto di gerarchie di memorie.
- 42 -
20092009-10
Come migliorare le
prestazioni? (2)
2. Ottenere migliore efficienza nell’esecuzione
del programma Ö modificare il paradigma di
esecuzione della sequenza di istruzioni,
superando il paradigma di esecuzione Seriale e
sequenziale Ö introdurre qualche tipo di
parallelismo (= possibilità di eseguire più
funzionalità simultaneamente)
3. Superare il paradigma imperativo di esecuzione
Ö esecuzione dominata non più dal controllo
ma dalla disponibilità dei dati.
- 43 -
20092009-10
Come migliorare le
prestazioni? (3)
4. Superare il vincolo di esecuzione di un singolo
flusso di istruzioni Ö ricorso a varie forme di
parallelismo (a vari livelli) così da eseguire
simultaneamente più compiti differenti.
- 44 -
20092009-10
Di che cosa parleremo
‰
Gerarchie di memoria: si suppongono già noti da
corsi precedenti i concetti fondamentali:
¾
¾
‰
Finalità e architetture-base della cache.
Tecniche di gestione fondamentali.
Temi trattati:
¾
Valutazione delle prestazioni delle cache,
architetture ottimizzate, gestione ottimizzata
(inclusi gli aspetti relativi al compilatore).
- 45 -
20092009-10
Di che cosa parleremo (2)
‰
Come cambia il paradigma di esecuzione:
parallelismo “all’interno della CPU”.
¾
¾
¾
Il superamento del paradigma seriale: pipelining
(concetto che si presume noto);
Il superamento del paradigma sequenziale:
architetture con parallelismo a livello di istruzione,
soluzioni superscalari.
Il superamento dell’esecuzione “control-flow
dominated” verso una modalità “data flow
dominated”
- 46 -
20092009-10
Di che cosa parleremo (3)
‰
Parallelismo a livello di processo:
¾
‰
multithreading;
Sistemi multiprocessore:
¾
¾
Tassonomia dei sistemi multiprocessore;
Architetture fondamentali; problematiche e
prestazioni.
- 47 -
20092009-10
Testi
‰
‰
‰
‰
Sono disponibili in rete i lucidi del corso;
Testo di riferimento: Hennessy-Patterson
“Computer Architecture: a quantitave
approach” (terza edizione – quarta edizione)
Morgan-Kauffman ed.
Testo di consultazione: D.E.Culler, J.P. Singh
“Parallel Computer Architecture), MorganKauffman ed.
Eventuali altri riferimenti bibliografici verranno
indicati durante il corso.
- 48 -
20092009-10
Modalità di esame
‰
‰
‰
L’esame consta di una parte scritta seguita (se
superata) da un orale;
L’orale può (a scelta dello studente) riguardare
la materia del corso oppure essere la
discussione di un articolo scientifico messo a
disposizione dalla docente;
Verranno proposti nel prosieguo del corso dei
progetti: chi se ne fa carico può così sostituire
parte dell’esame finale.
- 49 -
20092009-10