Architetture parallele - Università degli Studi di Roma "Tor Vergata"

Università degli Studi di Roma “Tor Vergata”
Facoltà di Ingegneria
Introduzione alle architetture parallele
Corso di Sistemi Distribuiti
Valeria Cardellini
Anno accademico 2009/10
Parallelismo
• Il parallelismo consente di migliorare le prestazioni
grazie all’esecuzione simultanea di più operazioni
• Vari tipi di parallelismo
– Parallelismo funzionale
• Deriva dalla logica di soluzione di un problema
– Parallelismo dei dati
• Deriva dalle strutture dati che consentono l’esecuzione
simultanea su più elementi nella soluzione di un problema
• Problemi di calcolo scientifico, elaborazione di immagini
• … che possono anche essere sfruttati
contemporaneamente
SD - Valeria Cardellini, A.A. 2009/10
1
Parallelismo (2)
•
Il parallelismo funzionale può essere visto a diversi
livelli di astrazione, corrispondenti a diverse soluzioni
architetturali:
1. Instruction-level parallelism (ILP): a grana fine
!
A livello di istruzioni
2. Loop-level parallelism: a grana fine
–
–
A livello di ciclo
Sfruttamento del parallelismo esistente tra le iterazioni di un
ciclo
for (i=1; i<=1000; i=i+1)
x[i] = x[i] + y[i]
3. Procedure-level parallelism: a grana intermedia
4. Program-level parallelism: a grana grossa
SD - Valeria Cardellini, A.A. 2009/10
2
Parallelismo a livello di istruzione (ILP)
• Più istruzioni (a livello macchina) dello stesso
programma vengono eseguite contemporaneamente
nello stesso processore
– Anche detto parallelismo intrinseco
– E’ stato l’obiettivo principale dei progettisti di processori a
partire dalla metà degli anni 80 e per circa 20 anni
• Due tecniche fondamentali per l’esecuzione parallela
di istruzioni
– Pipelining
– Replicazione dei componenti interni del calcolatore in modo
che sia possibile lanciare l’esecuzione di più istruzioni in
ogni stadio della pipeline
• … che possono coesistere nella stessa architettura di
un calcolatore
– Processori multiple-issue (ad emissione multipla), in
grado di lanciare ed eseguire più istruzioni in parallelo per
ciclo di clock (CPI < 1, CPI = Clock cycle Per Instruction)
SD - Valeria Cardellini, A.A. 2009/10
3
Pipelining
• Con il pipelining si ottiene la sovrapposizione
temporale dell’esecuzione di istruzioni
• Obiettivo: ridurre il tempo totale necessario al
completamento di una sequenza di istruzioni
– Tempo di CPU richiesto per l’esecuzione di un programma
Tempo di CPU = Cicli di CPU per il programma x Periodo di clock
Tempo di CPU = Numero di istruzioni x Cicli per istruzione x Periodo
di clock
In modo più sintetico: Tempo di CPU = IC x CPI x Tclock
dove Tclock = 1/fclock
• Perché funziona il pipelining? Non tutte le istruzioni
dipendono dai risultati prodotti dalle istruzioni
immediatamente precedenti
– E’ quindi possibile eseguire istruzioni completamente o
parzialmente in parallelo
SD - Valeria Cardellini, A.A. 2009/10
4
ILP: processori multiple issue
• Due tipi di processori multiple-issue: dinamici e statici
• Processori multiple-issue dinamici (superscalari)
– Il numero di istruzioni lanciate per ciclo di clock è variabile
– Tipicamente, scheduling dinamico delle istruzioni eseguito
dall’hardware
• Le istruzioni possono essere eseguite fuori ordine
– Esempio: Intel Pentium 4
• Processori multiple-issue statici
– Il numero di istruzioni lanciate per ciclo di clock è
tipicamente fisso
– Il compilatore identifica le istruzioni eseguibili in parallelo
– Istruzioni assemblate in pacchetti, che sono poi decodificati
ed eseguiti dal processore
– Il compilatore gestisce le criticità
– Esempio: Intel Itanium
SD - Valeria Cardellini, A.A. 2009/10
5
ILP e programmatore
• ILP: il parallelismo è intrinseco (o implicito)
• Il programmatore concepisce ancora il programma
che ha scritto per risolvere un certo problema come
una sequenza di istruzioni che verranno eseguite una
dopo l’altra dal processore
• Non sa (o non è tenuto a sapere) come queste
istruzioni verranno manipolate dal compilatore
(multiple-issue statico) o una volta entrate nel
processore (multiple-issue dinamico)
SD - Valeria Cardellini, A.A. 2009/10
6
Oltre l’ILP
• I processori multiple-issue supportano il parallelismo
a livello di istruzione (ILP)
• Ma incrementare ulteriormente le prestazioni del
singolo processore era diventato sempre più difficile
– A causa di: power wall, memory wall e ILP wall
Il gap tra legge di
Moore e
prestazioni
Legge di Moore: il
numero di
transistor su un
chip raddoppia
ogni 18 mesi
SD - Valeria Cardellini, A.A. 2009/10
7
Oltre l’ILP: perché?
ILP wall
Power wall
Memory wall
SD - Valeria Cardellini, A.A. 2009/10
8
Power wall
• Negli ultimi 50 anni l’aumento di velocità dei
transistor ha prodotto un aumento della frequenza di
clock
• Dal 2005 si sono cominciati a vedere i limiti di questo
approccio (problemi tecnologici e di consumo di
potenza)
• L’equazione del consumo di potenza P è:
P = !CVdd2f + VddIst + VddIleak
– Il consumo di potenza è funzione della potenza statica (che
cresce proporzionalmente al numero di transistor) e della
potenza dinamica (che è proporzionale al prodotto tra
numero di transistor che commutano e frequenza di
commutazione)
SD - Valeria Cardellini, A.A. 2009/10
9
Oltre l’ILP: come?
• Quale è l’approccio alternativo?
• Parallelismo esplicito
– In particolare, parallelismo a livello di thread (Thread Level
Parallelism o TLP)
• Parallelismo esplicito in varie forme:
• Multithreading
• Architetture multi-core
– Molti processori (più semplici) sullo stesso chip
• Architetture parallele
– Più processori collegati tra loro in un sistema complesso
– Le architetture multi-core rappresentano una particolare
tipologia di architettura parallela
SD - Valeria Cardellini, A.A. 2009/10
10
Limiti del parallelismo esplicito
• Molti problemi hanno una
soluzione che presenta
un’elevata quantità di
parallelismo nativo
(embarassingly parallel)
• Tuttavia (tranne che in
casi molto particolari)
l’incremento di prestazioni
(lo speed-up) ottenibile
usando un’architettura
parallela è meno che
lineare rispetto al numero
di processori disponibili
• Perché? C’è una parte di
lavoro che non può essere
svolta in parallelo
SD - Valeria Cardellini, A.A. 2009/10
11
Limiti del parallelismo esplicito (2)
• In modo formale: la legge di Amdhal
– Frazionemigliorato: la frazione del tempo di esecuzione che
può trarre vantaggio dal miglioramento
– Speedupmigliorato: il miglioramento che si ottiene nel modo di
esecuzione migliorato, ossia quanto verrebbe eseguito più
velocemente il programma se il modo di esecuzione
migliorato potesse essere utilizzato per l’intero programma
• Nel caso di architetture parallele:
– (1-Frazionemigliorato) è la frazione del programma che non
può essere parallelizzata
– Speedupmigliorato=N, dove N è il numero di nodi paralleli
SD - Valeria Cardellini, A.A. 2009/10
12
Limiti del parallelismo esplicito (3)
• In pratica, i problemi principali del parallelismo
esplicito sono due: uno software e uno hardware
1. La quantità limitata di parallelismo presente nei
programmi, o per lo meno la quantità di parallelismo
che si è in grado di esplicitare, e quindi di sfruttare
– Lo studio di algoritmi paralleli è un campo di ricerca molto
attivo, proprio per le sue potenzialità
2. Gli elevati costi delle comunicazioni tra
processori e memoria, che possono aumentare
enormemente il costo di un cache miss o di una
sincronizzazione tra thread che girano su processori
diversi
SD - Valeria Cardellini, A.A. 2009/10
13
Multithreading
• Esaminiamo la prima alternativa (o aggiunta) al
parallelismo a livello di istruzioni
• Un processore con multithreading (MT) non è, in
senso stretto, una architettura parallela
– Perché il multithreading è realizzato con un unico
processore
• Tuttavia, porta il programmatore a concepire e
sviluppare le sue applicazioni come formate da un
insieme di thread che possono girare virtualmente in
parallelo
SD - Valeria Cardellini, A.A. 2009/10
14
Multithreading: l’idea
• Il processore esegue contemporaneamente più thread
– Un thread ha le proprie istruzioni ed i propri dati
– Un thread può rappresentare un processo che è parte di un
programma parallelo oppure un programma indipendente
• Come nasce l’idea del multithreading?
– Dalla constatazione che anche un datapath progettato per
sfruttare grandi quantità di ILP vedrà spesso le proprie unità
funzionali inattive a causa di stalli o dipendenze nel codice
• Con il mutithreading molteplici thread condividono le
unità funzionali di un singolo processore
sovrapponendosi nell’esecuzione
– Il processore deve mantenere una copia distinta dello stato di
ciascun thread (registri, PC, tabella delle pagine)
– Occorre anche consentire il passaggio da un thread all’altro
(thread switching) in modo veloce
SD - Valeria Cardellini, A.A. 2009/10
15
Approcci per il multithreading
• Multithreading a grana fine (fine-grained
multithreading)
– Il processore esegue un’istruzione per ogni thread
• Multithreading a grana grossa (coarse-grained
multithreading)
– Il processore cerca di eseguire più istruzioni per thread,
passando ad un altro thread in occasioni di stalli lunghi
• Multithreading simultaneo (simultaneous
multithreading, SMT)
– Raffinamento del multithreading a grana fine
– Anche noto come hyperthreading nei processori Intel
SD - Valeria Cardellini, A.A. 2009/10
16
Multithreading a grana fine
• L’alternanza tra i vari thread avviene ad ogni
istruzione, indipendentemente dal fatto che ad es.
l’istruzione del thread in esecuzione abbia generato
un cache miss
• Lo “scheduling” tra le istruzioni dei vari thread
avviene secondo una politica round-robin, evitando
quelli in situazione di stallo
• Se vi è un numero sufficiente di thread, è possibile
che ve ne sia sempre almeno uno non in stallo ed il
processore può essere mantenuto sempre attivo
• Svantaggio principale: rallenta l’esecuzione di
ciascun singolo thread
• Altro svantaggio: ad ogni ciclo di clock si paga
l’overhead del thread switching (overhead molto
limitato, ma comunque non nullo)
• Usato in SUN Niagara
SD - Valeria Cardellini, A.A. 2009/10
17
Multithreading a grana grossa
• L’alternanza tra thread avviene solo quando il thread
in esecuzione genera uno stallo (di costo elevato)
• A questo punto viene effettuato lo switch ad un altro
thread
• Quando anche questo thread genererà uno stallo,
verrà schedulato un terzo thread (o eventualmente si
tornerà al primo) e così via
• Per ammortizzare i costi di inizializzazione della
pipeline, conviene solo per stalli di costo elevato (ad
es. un miss in una cache L2)
SD - Valeria Cardellini, A.A. 2009/10
18
Multithreading simultaneo (SMT)
• Il parallelismo a livello di istruzioni e quello a livello di
thread vengono sfruttati contemporaneamente, con
l’emissione di istruzioni di thread diversi durante un
singolo ciclo di clock
SMT = ILP + TLP
• Idea di base: i processori multiple-issue hanno più
unità funzionali di quante siano mediamente
sfruttabili dal singolo thread in esecuzione; sfruttando
il register renaming e lo scheduling dinamico,
istruzioni appartenenti a thread diversi possono
essere eseguite insieme
SD - Valeria Cardellini, A.A. 2009/10
19
Confronto tra approcci per multithreading
Fine-Grained Coarse-Grained
Multiprocessing
Simultaneous
Multithreading
Time (processor cycle)
Superscalar
Thread 1
Thread 3
Thread 5
Thread 2
Thread 4
Idle slot
SD - Valeria Cardellini, A.A. 2009/10
20
Confronto tra approcci per multithreading (2)
• Nei processori senza MT, il multiple issue può venire
vanificato dalla mancanza di sufficiente parallelismo
tra le istruzioni di ogni thread, e/o da un lungo stallo
che lascia il processore idle
• Nel coarse-grained MT, gli stalli lunghi sono
mascherati dal passaggio ad un altro thread, ma la
mancanza di parallelismo tra le istruzioni di ciascun
thread limita il grado di utilizzo delle risorse del
processore (ad es. non possono essere usati tutti gli
slot di issue disponibili)
• Anche nel fine-grained MT, la mancanza di ILP in
ciascun thread limita l’utilizzo delle risorse del
processore
• Nell’SMT le istruzioni appartenenti a thread diversi
sono (quasi) certamente indipendenti: se possiamo
lanciarle assieme aumentiamo il grado di utilizzo
delle risorse del processore
SD - Valeria Cardellini, A.A. 2009/10
21
Multithreading nei processori
• Intel: nel passaggio ai processori dual core
(microarchitettura Core) Intel aveva abbandonato
l’hyperthreading; tuttavia, lo ha reintrodotto a partire
dalla fine del 2008 (microarchitettura Nehalem)
• Altri processori commerciali che implementano il
multithreading sono:
– IBM Power 5 e Power 6: implementano l’SMT con due
thread contemporaneamente attivi
– SUN Niagara: supporta il fine-grained multithreading
SD - Valeria Cardellini, A.A. 2009/10
22
Prestazioni ed efficienza in processori
singoli multiple-issue (tratto da HP-CA4ed)
Processor
Micro architecture
Fetch /
Issue /
Execute
Functional
Units
Clock
Rate
(GHz)
Transistors,
Die size
Power
Intel
Pentium 4
Extreme
Speculative
dynamically
scheduled; deeply
pipelined; SMT
3/3/4
7 int.
1 FP
3.8
125 M,
122
mm2
115
W
AMD
Athlon 64
FX-57
Speculative
dynamically
scheduled
3/3/4
6 int.
3 FP
2.8
114 M,
115
mm2
104
W
IBM
Power5
(1 CPU
only)
Speculative
dynamically
scheduled; SMT;
2 CPU cores/chip
8/4/8
6 int.
2 FP
1.9
200 M,
300
mm2
(est.)
80 W
(est.)
Intel
Itanium 2
Statically scheduled
VLIW-style
6/5/11
9 int.
2 FP
1.6
592 M,
423
mm2
130
W
SD - Valeria Cardellini, A.A. 2009/10
23
Prestazioni sui benchmark SPECint2000
Itanium 2
Pentium 4
A MD A thlon 64
Pow er 5
3 5 0 0
3 0 0 0
SPEC Ratio
2 5 0 0
2 0 0 0
1 5 0 0
1 0 0 0
5 0 0
0
gzip
vpr
gcc
mcf
crafty
parser
eon
perlbmk
gap
vortex
bzip2
SD - Valeria Cardellini, A.A. 2009/10
twolf
24
Prestazioni sui benchmark SPECfp2000
14000
Itanium 2
Pentium 4
AMD Athlon 64
Power 5
12000
SPEC Ratio
10000
8000
6000
4000
2000
0
w upw is e
s w im
mgrid
SD - Valeria Cardellini, A.A. 2009/10
applu
mes a
galgel
art
equake
f ac erec
ammp
luc as
f ma3d
s ix trac k
aps i
25
Misure di efficienza
35
Itanium 2
Pentium 4
AMD Athlon 64
POWER 5
30
25
Rank
20
Int/Trans
FP/Trans
15
Int/area
10
FP/area
Int/Watt
5
FP/Watt
I
t
a
n
i
u
m
2
P
e
n
t
I
u
m
4
A
t
h
l
o
n
P
o
w
e
r
5
4
4
4
4
4
2
2
2
2
2
3
4
1
1
1
1
1
3
3
3
3
3
2
1
0
SPECInt / M
Transistors
SPECFP / M
Transistors
SPECInt /
mm^2
SPECFP /
mm^2
SPECInt /
Watt
SPECFP /
Watt
SD - Valeria Cardellini, A.A. 2009/10
26
Dal confronto emerge che…
• Nessuno dei processori multipli-issue esaminati (lo
stato dell’arte nel 2005) fornisce un vantaggio
decisivo
• Lo sfruttamento dell’ILP non può scalare facilmente
ed efficientemente molto più in là
– Si è raggiunto il punto in cui, tentando di sfruttare maggiori
quantità di ILP, si ottengono svantaggi superiori ai vantaggi
• Anche il multithreading non basta
Avvento dei processori multi-core (più core
su un unico chip) con eventuale
multithreading per core
SD - Valeria Cardellini, A.A. 2009/10
27