1. Architetture parallele
Giovanni Erbacci - g.erbacci@cineca.it
Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie
1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008
Architetture parallele
Argomenti
Il modello di von Neumann
I primordi del parallelismo
Verso il parallelismo effettivo
Pipelining
Classificazione di Flynn
Architetture vettoriali
Architetture Parallele
Giovanni Erbacci 1
9
2. Architetture parallele
Modello di von Neumann
Calcolatore Convenzionale
Controllo
Input Memoria Output
Unità Aritm.
Logica
Le istruzioni vengono processate sequenzialmente:
1 un istruzione viene caricata dalla memoria (fetch) e decodificata
2 vengono calcolati gli indirizzi degli operandi;
3 vengono prelevati gli operandi dalla memoria;
4 viene eseguita l'istruzione;
5 il risultato viene scritto in memoria (store).
Giovanni Erbacci 2
Architetture parallele
Calcolatori più Veloci
Performance
Processori
Gap
Memoria
Tempo
Giovanni Erbacci 3
10
3. Architetture parallele
Velocità dei Componenti
Ciclo macchina
Si definisce ciclo macchina o clock period l'intervallo temporale che regola la
sincronizzazione delle operazioni in un calcolatore
Unit temporale di base di un calcolatore (si misura in ns - 10-9 s)
Si calcola come l inverso della frequenza di clock (misurata in MHz)
Tutte le operazioni all interno del processore durano un multiplo di .
CDC 6600 100 ns
Cyber 76 27.5 ns
IBM ES 9000 9 ns
Cray Y-MP C90 4.1 ns
Intel i860 20 ns
PC Pentium 1 ns
Giovanni Erbacci 4
Architetture parallele
Legge di Moore
Legge empirica che afferma che la complessità dei dispositivi (numero di transistor
per sqare inch nei microprocessori) raddoppia ogni 18 mesi.
Gordon Moore, co-founder di Intel, 1965
Si stima che la legge di Moore valga ancora almeno per questo decennio.
Giovanni Erbacci 5
11
4. Architetture parallele
Arithmetic-
Logical Unit Control
ALU Unit
Dati
Indirizzi
Memoria
Centrale
Device
Oltre alla potenza del processore, altri fattori influenzano le prestazioni degli
elaboratori:
- dimensione della memoria
- larghezza di banda (bandwidth) fra memoria e processore
- larghezza di banda verso il sistema di I/O
- dimensione e larghezza di banda della cache
- latenza fra processore, memoria e sistema di I/O
Giovanni Erbacci 6
Architetture parallele
Primordi del Parallelismo
Miglioramenti architetturali
Memoria bit-parallel e Aritmetica bit-parallel
Processori indipendenti per l’attività di I/O
Memoria interleaved
Gerarchie di memoria
Unità funzionali multiple
Unità funzionali segmentate
Pipelining
Miglioramenti software
Multiprogrammazione e
Look-ahead e scheduling delle istruzioni
Giovanni Erbacci 7
12
5. Architetture parallele
Verso il Parallelismo effettivo
Sistemi vettoriali
Array processors
Architetture sistoliche
Very Long Instruction Word (VLIW)
Sistemi Multiprocessore
Sistemi Multicomputer
Giovanni Erbacci 8
Architetture parallele
Memoria e Aritmetica Bit-parallel
Nei primi calcolatori elettronici, i bit di una word venivano letti singolarmente dalla
memoria
L'aritmetica bit-parallel divenne possibile con l'introduzione delle memorie bit parallel
(IBM 701, 1953)
L'IBM 704 (1955) fu il primo calcolatore commerciale ad usare memoria a nuclei di ferrite.
Consentiva:
– accesso bit-parallel alla memoria
– non volatilità
– velocità a costi ragionevoli.
Giovanni Erbacci 9
13
6. Architetture parallele
Processori di I/O (Canali)
Nei calcolatori della prima generazione, le
istruzioni di I/O venivano eseguite
dalla CPU Input Output
Questa inefficienza fu risolta
introducendo processori separati per
gestire le operazioni di I/O
I/O Processor
I processori di I/O (canali) ricevono le
istruzioni di I/O dalla CPU poi
operano in modo indipendente,
liberando la CPU
Memory Control Unit
CPU Memory
(Multiplexer)
Giovanni Erbacci 10
Architetture parallele
Memoria Interleaved o banchi che possono essere acceduti
Unità di memoria suddivisa in moduli
simultaneamente
Ogni banco ha la propria circuiteria di indirizzamento
Gli indirizzi delle istruzioni e dei dati sono interleaved così si ha la possibilità di fetch in
parallelo
L'IBM STRETCH (1961) è stato il primo calcolatore ad avere una memoria interleaved (2
banchi).
Il CDC 6600 (1964) aveva una memoria suddivisa in 32 banchi indipendenti
Banchi di 0 1 2 3
memoria
0000 0001 0010 1011
0100 0101 0110 0111
indirizzo
contenuto 1000 1001 1010 1011
Giovanni Erbacci 11
14
7. Architetture parallele
Gerarchie di Memoria
Tempo di accesso alla memoria: indica la velocità
con la quale si può referenziare una locazione
di memoria
Registri
Registri
Tempo di ciclo della memoria: indica il tempo che
Maggior Capacità
deve trascorrere prima di un nuovo accesso a
una stessa locazione di memoria Cache
Cache
Maggior velocità
Negli ultimi anni questi tempi sono molto migliorati Memory
Minor costo
Memory
rendendo possibili sistemi di memoria più veloci
ma al tempo stesso è diminuito anche il tempo Memoria
Memoria
di clock del processore:
– IBM PC XT (1980) 4.77 MHz = 210 ns Primaria
Primaria
Commodity DRAM T. acc. 200 ns
– Pentium II (1998) 300 MHz = 3.3 ns
Commodity DRAM T. acc. 50 ns
Memoria
Memoria
La performance dei processori raddoppia ogni 18 Secondaria
Secondaria
mesi mentre quella della memoria raddoppia
circa ogni 6 anni.
Giovanni Erbacci 12
Architetture parallele
Gerarchie di Memoria / 1
La capacità dei dispositivi di memoria secondaria è dell’ordine dei Gbyte
(capacità di circa 10-100 Gbyte per singolo disco).
La capacità della memoria centrale è dell’ordine delle Mword-Gword
mentre la capacità della cache memory è dell’ordine dei KByte-MByte.
Il tempo di accesso fra memoria primaria e memoria secondaria (ad
es.dischi) è dell’ordine dei µsecondi (se si sfruttano meccanismi di
caching su disco o su memoria primaria) o addirittura dei msecondi
quando si accede direttamente all’informazione localizzata sul disco.
Il tempo di accesso dalla cache memory alla memoria centrale è
dell’ordine dei nanosecondi (1 ns = 10-9 s).
Giovanni Erbacci 13
15
8. Architetture parallele
Cache Memory
Unità di memoria di dimensioni ridotte usata come buffer per i dati che
vengono scambiati fra la memoria centrale e il processore.
L'instruction buffer del CDC
– località temporale: una istruzione o un dato possono essere 6600 era costituito da 8
referenziati più volte registri di 60 bit ciascuno
(istruzioni di 15 o 30 bit).
– località spaziale: quando si referenzia una locazione di Il Cray Y-MP aveva 4
memoria, è molto probabile che vengano instruction buffer di 128
referenziate anche le locazioni adiacenti. parcel (16 bit) per CPU
(istruzioni di 1, 2, o 4 parcel).
Ogni processsore del Cray
T3E ha una cache per le
istruzioni di 8 KByte, una per i
dati di 8KByte e di una di
l'istruzione viene prelevata dalla cache anzich dalla memoria. secondo livello di 96KByte.
un'istruzione può essere eseguita ripetutamente senza ulteriori
riferimenti alla memoria principale.
Giovanni Erbacci 14
Architetture parallele
Cache Memory / 1
E' demandato all'abilità del sistema far
rientrare le istruzioni che compongono
un kernel computazionale pesante (es.
un loop) all’interno della cache, se Registri 2 ns
queste possono esservi contenute per
L1 On-chip 4 ns
intero.
L2 On-Chip 5 ns
Lo stesso vale per i dati, ma in questo L3 Off-Chip 30 ns
caso l’opera di ottimizzazione coinvolge
Memoria 220 ns
anche il programmatore
Giovanni Erbacci 15
16
9. Architetture parallele
Organizzazione della Cache
La cache è divisa in slot della stessa dimensione (linee)
Ogni linea contiene k locazioni di memoria consecutive (es. 4 word).
Quando è richiesto un dato dalla memoria, se questo non è già in cache,
viene caricata dalla memoria l’intera linea di cache che lo contiene,
sovrascrivendo così il contenuto precedente della linea.
Memoria
Cache
Giovanni Erbacci 16
Architetture parallele
Organizzazione della Cache / 1
Quando si modifica un dato memorizzando un
nuovo valore in cache, occorre aggiornare il
dato anche in memoria principale:
– Cache write-back - i dati scritti nella cache vi M
rimangono finché la linea di cache non è
richiesta per memorizzare altri dati quando si P1 P2
deve rimpiazzare la cache il dato viene
scritto in memoria; comune nei sistemi
mono-processore.
– Cache write-through – i dati vengono scritti Cache P1 Cache P2
immediatamente nella cache e nella memoria
principale.
Nei sistemi con più processori occorre gestire la
coerenza della cache: per accedere a dati
aggiornati i processori devono essere a
conoscenza dell’attività delle cache locali
Giovanni Erbacci 17
17
10. Architetture parallele
Mapping
Poiché in ogni istante temporale la cache
può contiene solo un sotto-insieme della Memoria
memoria, occorre sapere quale: si tratta
di associare un insieme di locazioni di
memoria ad una linea di cache
(mapping).
In base al mapping la cache può essere
organizzata in uno dei seguenti modi:
– - Direct mapped
- Fully associative
- Set associative
Il modo con cui le locazioni di memoria vengono Cache
mappate nelle linee di cache può incidere sulle
prestazioni dei programmi (due locazioni di
memoria pesantemente usate possono essere
mappate oppure no sulla stessa linea).
Giovanni Erbacci 18
Architetture parallele
Cache Direct Mapping
1 1.9
Con questo schema, se ad 2 725
es. la dimensione della 3 51.9
cache è di 8 Kbyte e la 4 -18.5
5 1.7
memoria centrale ha word
6 -25.3
di 8 Byte, la prima … ……
Linea 1 1.9 725 51.9 -18.5
locazione di memoria (word 1024
Linea 2 1.7 -25.3
1025
1) viene mappata sulla Linea 3
1026
linea 1, così come la 1027
Linea 4
locazione d+1, 2d+1, 3d+1 1028
Linea 5
…..… ……
ecc. (dove d = N° linee * 1029
Linea 256
1030
N° word per linea).
….
2048 Cache
2049
2050
Memoria
Giovanni Erbacci 19
18
11. Architetture parallele
Cache Direct Mapping / 1
Indirizzo
Contenuto
Indica la 0 0000 000 00 1.9
parola 1 0000 000 01 725
all’interno
2 0000 000 10 51.9
della linea Indica
3 0000 000 11 -18.5
la
linea 4 0000 001 00 1.7
5 0000 001 01 -25.3
Linea 0 1.9 725 51.9 -18.5
.. …. … .. ……
Linea 1 1.7 -25.3
10 0000 010 10
Linea 2
11 0000 010 11
Memoria
12 0000 011 00 Linea 3
.. …. … .. …… Linea 4
29 0000 111 01 Linea 5
30 0000 111 10
Linea 6
31 0000 111 11
Linea 7
32 0001 000 00
33 0001 000 01
.. …. … .. …… Cache
62 0001 111 10 8 linee
63 0001 111 11 4 word per linea
64 0010 000 00
65 0010 000 01
Giovanni Erbacci 20
Architetture parallele
Cache Direct Mapping / 2
Quando si hanno riferimenti di memoria che alternativamente puntano alla stessa
linea di cache (es. word 1, word 1025, word 1, word 1025, ripetutamente), ogni
riferimento causa un cache miss e si deve rimpiazzare la linea appena inserita.
Si genera parecchio lavoro aggiuntivo (overhead); questo fenomeno è detto
thrashing.
Giovanni Erbacci 21
19
12. Architetture parallele
Cache Fully Associative
Con questo schema, ogni locazione di memoria può essere mappata in
qualsiasi linea di cache, senza tener conto dell’indirizzo di memoria.
Il nome deriva dal tipo di memoria usata per costruire questo tipo di cache
(memoria associativa).
Quando il processore richiede un dato questo viene richiesto a tutte le
linee di cache contemporaneamente.
Se una linea contiene il dato, questo viene fornito, diversamente si ha un
cache miss.
In genere la linea usata meno recentemente (politica LRU) è destinata ad
essere sovrascritta con il nuovo dato.
Le cache fully associative sono costose ma garantiscono un utilizzo
superiore se confrontate con le cache direct mapped.
Giovanni Erbacci 22
Architetture parallele
Cache Set Associative
Si tratta praticamente di una cache direct mapped replicata in più copie
(banchi).
In genere si hanno 2 o 4 banchi separati di cache (two-way, four-way set
associative).
Con questo schema, se una locazione di memoria viene mappata sulla
linea k, un successivo riferimento a una locazione di memoria sempre
mappato sulla stessa linea, verrà allocato sulla linea K di un diverso
banco.
Una cache set associative è meno predisposta a cache thrashing rispetto
a una cache direct mapped della stessa grandezza. Infatti una
locazione di memoria verrà mappata in una linea che può essere scelta
su banchi differenti.
Giovanni Erbacci 23
20
13. Architetture parallele
Cache Set Associative
1 1.9
2 725
Memoria
3 51.9 2 way set associative
4 -18.5
2048 word, linee di 4 word
5 1.7
6 -25.3
… ……
1024 Linea 1 66 71 33 100
1025 66 Linea 2 17
1026 71
Linea 1 1.9 725 51.9 -18.5
1027 33
Cache
Linea 2 1.7 -25.3
1028 100
Linea 3
1029 17
Linea 4
1030
Linea 5
….
…..… …… Banco 2
2048
Linea 256
2049
2050 Banco 1
Giovanni Erbacci 24
Architetture parallele
Quesito
E’ più efficiente una cache set associative a k vie oppure una chache direct
mapping con la stessa capienza e con lo stesso numero di word per linea?
Dare una dimostrazione della risposta data.
Giovanni Erbacci 25
21
14. Architetture parallele
Multiprogrammazione e Time Sharing
Giovanni Erbacci 26
Architetture parallele
Look ahead delle Istruzioni
Il concetto di look ahead consiste nel rendere disponibili diverse istruzioni
decodificate e pronte per l'esecuzione, prima che vengano effettivamente
richieste.
– L'IBM STRETCH è stato il primo sistema ad introdurre questa possibilità: era possibile
prelevare le istruzioni, decodificarle, calcolare gli indirizzi degli operandi, fare il fetch
degli operandi, diverse istruzioni in anticipo rispetto alla loro esecuzione effettiva.
– L'IBM 360/91 inoltre ammetteva il prefetch di un'istruzione condizionale e di alcune
delle istruzioni successive, in modo da mantenere l'unità di esecuzione piena dopo
ogni salto condizionale.
Il look ahead delle istruzioni è necessario per migliorare le prestazioni nei sistemi
con più unità funzionali.
Giovanni Erbacci 27
22
15. Architetture parallele
Compilatori e Look-ahead
Per migliorare le prestazioni i compilatori riorganizzano la sequenza delle istruzioni
affinchè in esecuzione sfruttino il look ahead.
FETCH R1, B FETCH R1, B
A B + C FETCH R2, C FETCH R2, C
D E + F ADD R1, R2 FETCH R3, E
STORE A, R1 FETCH R4, F
FETCH R3, E ADD R1, R2
FETCH R4, F ADD R3, R4
ADD R3, R4 STORE A, R1
STORE D, R3 STORE D, R3
Giovanni Erbacci 28
Architetture parallele
Unità Funzionali Multiple
Nei calcolatori tradizionali, la CPU è costituita da un insieme di
registri generali, da alcuni registri speciali (es. il program
counter) e dall'unità aritmetico logica (ALU) che, una per volta,
calcola le operazioni.
Un primo passo verso il parallelismo consiste nel suddividere le
funzioni dell'ALU e progettare unità indipendenti capaci di
operare in parallelo (unità funzionali indipendenti).
E' compito del compilatore esaminare le istruzioni e stabilire quali
operazioni possono essere fatte in parallelo, senza alterare la
semantica del programma.
Giovanni Erbacci 29
23
16. Architetture parallele
Unità Funzionali Multiple / 1
10 Functional Units
Peripheral Processors
PP 0 Add
PP 1 Central Multiply
Multiply
PP 2
PP 3 Storage Divide
12 24 Fixed Add
PP 4 Registers
Peripheral PP 5 Increment
Channels PP 6 Increment
PP 7 Boolean
PP 8 Shift
PP 9 Branch
Instruction
Stack Scoreboard
I/O Subsystem Memory Central Processor
Giovanni Erbacci 30
Architetture parallele
Pipelining
Il concetto di pipelining è analogo a quello di catena di montaggio
dove in una linea di flusso (pipe) di stazioni di assemblaggio gli
elementi vengono assemblati a flusso continuo.
Idealmente tutte le stazioni di assemblaggio devono avere la
stessa velocità di elaborazione altrimenti la stazione più lenta
diventa il bottleneck dell'intera pipe.
Giovanni Erbacci 31
24
17. Architetture parallele
Pipelining / 1
Un task T viene scomposto in un insieme di sotto task {T1,T2,...Tk}
legati da una relazione di dipendenza: il task Tj non può partire
finchè tutti i sotto task precedenti {Ti , ij} non sono terminati
Spazio
i
Tj j mo subtask del task i mo
S4 T
4
1
T
4
2
T
4
3
T
4
4
T
4
5
....
5
S3 T
3
1
T
3
2
T
3
3
T
3
4
T
3
....
S2 T
2
1
T
2
2
T
2
3
T
2
4
T
2
5
....
S1 T
1
1
T
1
2
T
1
3
T
1
4
T
1
5
....
0 1 2 3 4 5 6 7 8 9 10
Tempo(cicli)
Giovanni Erbacci 32
Architetture parallele
Struttura di un Processore a
Pipeline
L L L L L
INPUT OUTPUT
S1 S2 .... Sk
C
L: latch Si : stage i mo
C: clock
Un processore a pipeline consiste di una cascata di stages di elaborazione.
Gli stages sono circuiti che eseguono le operazioni aritmetiche o logiche sulla
corrente di dati che fluisce attraverso la pipe.
Gli stages sono separati da interfacce (latches) cioè da registri veloci che
contengono i risultati intermedi fra gli stages.
Le informazioni fluiscono fra stages adiacenti sotto il controllo di un clock
comune applicato a tutti i latches simultaneamente
Giovanni Erbacci 33
25
18. Architetture parallele
Prestazione della Pipeline
Sia i il delay temporale relativo all'insieme dei circuiti logici che
compongono ciascun stage Si e sia l il delay temporale di ciascun
latch di interfaccia.
Il clock period (ciclo macchina) di una pipeline è definito da:
= max{i, i = 1, k} + l
Si definisce frequenza di una pipeline il reciproco del clock period:
f=1/
La pipe, una volta riempita, produce un risultato per clock period,
indipendentemente dal numero di stages che la compongono
Idealmente, una pipe con k stages processa n tasks in
tk = k + (n-1)
clock periods; di questi, k servono a riempire la pipe cioè a
completare l'esecuzione del primo task (tempo di start up).
Giovanni Erbacci 34
Architetture parallele
Pipeline di
Istruzioni
S1 S2 S3 S4 S5
Fetch Decodifica Fetch Esecuzione Store
istruzioni operandi risultato
0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
I1 Time
I2
I3
I4
I5
I6
I7
I8
........
0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
I1 Time
I2
I3
I4
I5
I6
I7
I8
........
Giovanni Erbacci 35
26
19. Architetture parallele
Esempio
Il CDC 6600 aveva unit funzionali segmentate.
Riordinando il codice si poteva sfruttare il pipelining (pipelining delle
istruzioni scalari) in maniera efficiente.
A = B*C+D*E
K = W*X-Y*Z
B*C S1-S1+S2
D*E S3-S3*S4
(B*C)+(D*E) S1-S1+S3
W*X S5-S5*S6
Y*Z S7-S7*S8
(W*X)-(Y*Z) S5-S5-S7
Tempo
Giovanni Erbacci 36
Architetture parallele
Esempio / 1
B*C S1-S1*S2
D*E S3-S3*S4
W*X S5-S5*S6
Y*Z S7-S7*S8
(B*C)+(D*E) S1-S1+S3
(W*X)-(Y*Z) S5-S5-S7
Tempo
Giovanni Erbacci 37
27
20. Architetture parallele
Modelli di Elaborazione
Somma di due vettori A e B
Elementi floating point
Ci = Ai + Bi per i = 1, …., n
Ai = fi x 2pi
L’operazione di somma comporta lo svolgimento Bi = gi X 2ri
di 4 azioni in sequenza:
confronto degli esponenti (ri - pi)
allineamento delle mantisse
addizione delle mantisse
normalizzazione del risultato
Supponiamo che ogni azione duri esattamente 1 ciclo macchina
Giovanni Erbacci 38
Architetture parallele
Elaborazione Sequenziale
A1 B1
Elaborazione sequenziale:
un risultato ogni 4 cicli
Tempo
C1
A2 B2
C2
A3 B3
C3
………
Giovanni Erbacci 39
28
21. Architetture parallele
Elaborazione Pipelining
Unità funzionale in pipelining
Dopo la fase di start-up si ha un risultato per ciclo
A1 B1
A2 B2
A3 B3
Tempo
=1 A4 B4
=2 A5 B5
=3
=4
=5
=6 C1
=7 C2
=8 C3
C4
……… C5
Giovanni Erbacci 40
Architetture parallele
Elaborazione Parallela
Sincrona
A1 B1 A2 B2 A3 B3 A4 B4 A5 B5
Tempo
=1
=2
=3 Sincronizzazione
=4
ad ogni passo
C1 C2 C3 C4 C5
……… Clock
Con P processori si producono P risultati ogni 4 cicli
Giovanni Erbacci 41
29
22. Architetture parallele
Elaborazione Parallela
Asincrona
A1 B1 A2 B2 A3 B3 A4 B4 A5 B5
Tempo
=4
C1 C2 C3 C4 C5 Sincronizzazione
finale
………
Con P processori si producono P risultati ogni 4 cicli
Giovanni Erbacci 42
Architetture parallele
Classificazione di Flynn
M. J. Flynn
Very high speed computing systems, proceedings of the IEEE (1966).
Some computer organizations and their effectiveness, IEEE Transaction on Computers.(1972).
The moltiplicity is taken as the maximum possible number of simultaneous operations (instructions) or operands (data)
being in the same phase of execution at the most constrained component of the organization
SISD, SIMD, MISD, MIMD
Giovanni Erbacci 43
30
23. Architetture parallele
Sistemi SISD
Sistemi Sequenziali
- Corrisponde alla classica architettura di von Neumann.
- Sistemi scalari monoprocessore.
- L'esecuzione delle istruzioni può essere pipelined (Cyber 76).
- Ciascuna istruzione aritmetica inizia un'operazione aritmetica
IS DS
CU PU MM
CU Control Unit
PU Processing Unit
MM Memory Module
DS Data stream
IS Instruction Stream
Giovanni Erbacci 44
Architetture parallele
Sistemi SIMD
DS1
PU1 MM1
IS DS2
CU PU2 MM2
. .
. .
. .
DSn
PUn MMn
CU Control Unit
PU Processing Unit
MM Memory Module
DS Data stream
IS Instruction Stream
Giovanni Erbacci 45
31
24. Architetture parallele
Sistemi MIMD
IS1 DS1
CU1 PU1 MM1
IS2 DS2
CU2 PU2 MM2
. . .
. . .
. . DSn .
ISn
CUn PUn MMn
ISn
IS2
IS1
CU Control Unit
PU Processing Unit
MM Memory Module
DS Data stream
IS Instruction Stream
Giovanni Erbacci 46
Architetture parallele
Calcolatori Vettoriali
Dispongono di un set di istruzioni vettoriali che si
aggiunge al set di istruzioni di istruzioni
scalari.
Le istruzioni vettoriali specificano una particolare
operazione che deve essere eseguita su un
determinato insieme di operandi detto vettore.
In questo contesto un vettore è una lista ordinata
di valori scalari.
Le unità funzionali che eseguono istruzioni
vettoriali sfruttano il pipelining per esegure la
stessa operazione su tutte le coppie di
operandi.
Giovanni Erbacci 47
32
25. Architetture parallele
Calcolatori Vettoriali / 1
Organizzazione da memoria a memoria
Le unità funzionali floating point possono comunicare
direttamente con la memoria principale per ricevere o trasferire
dati.
I sistemi Cyber 205 e ETA10 adottavano questa soluzione.
Organizzazione da registro a registro
Le unità funzionali interfacciano i registri; occorre un set di registri
vettoriali, ciascuno dei quali è in grado di contenere più di un
elemento.
Il path con la memoria viene attivato attraverso i registri.
Giovanni Erbacci 48
Architetture parallele
Registri Vettoriali
Un registro vettoriale è un particolare registro in grado di contenere più dati di uno
stesso tipo.
si tratta di un insieme fisso di locazioni di memoria, che fa parte di una speciale
memoria sotto il controllo utente.
Il numero di elementi che può contenere un registro vettoriale è detto vector length.
– Cray Y-MP: 8 registri vettoriali di 64 elementi a 64 bit
– Cray C90: 8 registri vettoriali di 128 elementi a 64 bit
– IBM ES 9000: 16 registri vettoriali di 256 elementi a 32 bit opure 8 a 64 bit.
Registri Elementi
Registri vettoriali configurabili 32 256
64 128
128 64
256 32
512 16
1024 8
Giovanni Erbacci 49
33
27. Architetture parallele
Chaining nei Calcolatori Vettoriali
S0
V0 1
... MOLTIPLICAZIONE
29
30
... 27 25 23 21 19 17
128
do i = 1, n 28 26 24 22 20 18
A(i) = B(i) + C(i) * 0.5
V1
end do 1
...
15
MEMORIA 16 SOMMA
...
128
13 11 9 7 5 3
14 12 10 8 6 4
V2 1
...
15
16
...
128
V3
1
2
...
14
...
128
Giovanni Erbacci 52
Architetture parallele
Array Processors
Un array processor è costituito da un set di processing element (PE)
identici, che operano in modo sincrono, capaci di eseguire
simultaneamente la stessa operazione su dati differenti.
Gli array processor costituiscono un altro modo classico di realizzare
sistemi di elaborazione in grado di operare su array.
Sono sistemi ormai fuori commercio ma che negli anni ’70-’80 hanno
avuto un loro successo.
Con questa soluzione, ogni elemento vettoriale viene elaborato da un
differente PE.
Alcuni array processor sono concepiti come sistemi indipendenti, altri,
chiamati attached array processor, richiedono un sistema ospite.
Giovanni Erbacci 53
35
28. Architetture parallele
Esempi
Illiac IV
progettato nella seconda met degli anni '60, Universit dell'Illinois
256 processori elementari, ciascuno con una propria memoria locale di 2K
word, suddivisi in 4 quadranti ciascun quadrante prevedeva un'unit di controllo
che supervisionava l'array di 8 x 8 processori di quel quadrante solo nel 1972 la
Burroughs ne realizzò una versione a un solo quadrante.
Altri esempi
Staran e MPP goodyear (1975),
PEPE (1976), realizzato da Burroughs come attached per il Cyber 76
BSP Burroughs (1978),attached per il Burroughs B7800
ICL DAP (Inghilterra, 1979) attached per i sistemi della serie ICL 2900.
Gli attached processor pi noti sono i sistemi prodotti dalla Floating Point
System Inc, come ad es. AP-120 (1976) e FPS-164 (1980).
Gli attached processor FPS non sono strutturati come array di PE, ma sfruttano
il pipelining.
Giovanni Erbacci 54
Architetture parallele
Progetto APE
APE: computer SIMD a parallelismo massiccio
Il progetto APE nasce verso la metà degli anni 80 ad opera di un gruppo
di fisici italiani dell`INFN. Potenza di calcolo di 1 Gflops.
Intorno al 1988 nasce il progetto di APE100, evoluzione di APE,
determinato da una più forte richiesta di potenza di calcolo (primi prototipi
realizzati nel 1990).
APE100, commercializzato da QSW (ALENIA) con il nome di Quadrics, è
scalabile da 8 a 2048 nodi
Ogni nodo di elaborazione è composto da:
– processore floating point a 32 bit (MAD),
– banco di memoria RAM da 4 a 16 Mbytes,
– logica di comunicazione node-to-node
e può raggiungere una potenza di calcolo pari a 50 Mflops.
La configurazione completa di APE100 era costituita da 2048 nodi
(potenza di picco di 100 Gflops)
Giovanni Erbacci 55
36
29. Architetture parallele
Progetto APE / 1
Nel 1994 nasce il progetto APEmille: come APE100 è una macchina
parallela scalabile, tridimensionale di tipo SIMD
Architettura tridimensionale basata su una griglia cubica di nodi di
elaborazione.
Ogni nodo è connesso direttamente con i 6 nodi più vicini attraverso dei
canali di comunicazione dati sincroni.
I nodi sono ottimizzati per eseguire aritmetica in floating point a singola
precisione, ma sono supportate anche operazioni intere e in floating point
a doppia precisione (non presenti su APE100).
APE NEXT
Giovanni Erbacci 56
Architetture parallele
CM 2
Sistema SIMD prodotto da Connection Machine Corporation nel 1987
Prevede fino a 64k processori (bit procesor)
Architecture
The machines consist of an array
of simple proprietary bit-serial
processors directly connected to
local memory. Groups of 32
processors may optionally share
a floating point accelerator unit.
The memory uses commercially
available dynamic RAM. The
machine is driven by a Sun, Vax
or Symbolics 3600-series
machine.
Giovanni Erbacci 57
37
30. Architetture parallele
Array Sistolici
Il concetto di architettura sistolica è stato sviluppato da H. Kung alla
Carnegie Mellon University, all'inizio degli anni '80.
Un array sistolico consiste di un insieme di celle identiche, interconnesse,
ciascuna capace di eseguire un set di operazioni elementari.
Il flusso dei dati scorre fra le celle in una sorta di pipeline e la comunicazione
col mondo esterno avviene solo nelle celle di frontiera.
Ad intervalli regolari, ogni cella riceve da più direzioni dati che combina e poi
ripropaga alle altre celle.
I dati dalla memoria vengono spinti attraverso l'array di celle, in modo
analogo a come opera la contrazione cardiaca, da cui deriva il nome
sistolico.
Giovanni Erbacci 58
Architetture parallele
Esempio
Moltiplicazione di una matrice a bande
a11 a12 0 0 0 0 ... b11 b12 b13 0 0 0 ... c11 c12 c13 c14 0 0 ...
a 21 a 22 a 23 0 0 0 ... b21 b 22 b 23 b24 0 0 ... c 21 c 22 c 23 c 24 c 25 0 ...
a 31 a 32 a 33 a 34 0 0 ... 0 b32 b33 b34 b35 0 ... c 31 c 32 c 33 c 34 c 35 c 36 ...
0 a 42 a 43 a 44 a 45 0 ... 0 0 b 43 b44 b45 b46 ... = c 41 c 42 c 43 c 44 c 45 c 46 ...
0 0 a 53 a 54 a 55 a 56 ... 0 0 0 b54 b55 b56 ... 0 c 52 c 53 c 54 c 55 c 56 ...
0 0 0 a 64 a 65 a 66 ... 0 0 0 0 b65 b66 ... 0 0 c 63 c 64 c 65 c 66 ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
A = B = C
A ha una banda lungo la diagonale principale di (3+2)-1=4
B ha una banda lungo la diagonale principale di (2+3)-1=4
C avrà una banda lungo la diagonale principale di (4+4)-1=7
Cijout = Cijin + aik bkj
Giovanni Erbacci 59
38
31. Architetture parallele
Esempio
È richiesta una griglia di 4 x 4 celle di Cijout = Cijin + aik bkj
tipo esagonale, ogni cella ha 3 input
e 3 output.
Gli elementi di A = (aij) e B = (bij)
entrano nelle celle lungo le due
diagonali. Entrano anche gli
elementi C = (cij) che inizialmente
hanno valore cij = 0.
I dati fluiscono attraverso l'array in
modalità pipeline e dall'alto escono i
risultati.
Se il delay temporale per ogni cella è
unitario, l'array sistolico può
terminare la computazione in un
tempo T = 3n + min(4, 4),
linearmente proporzionale alla
dimensione della matrice (n).
Giovanni Erbacci 60
Architetture parallele
VLIW
Joseph-Fisher Yale University
Very Long Instruction Word architectures,
Multiflow Computer (1984)
Architetture RISC con un numero elevato di unità funzionali
pipeline per sovrapporre l'esecuzione di operazioni
indipendenti
Il controllo è centralizzato
Le risorse sono completamente controllate dal compilatore.
Giovanni Erbacci 61
39
32. Architetture parallele
VLIW / 1
Giovanni Erbacci 62
Architetture parallele
Sistemi Paralleli di classe MIMD
Mainframes multiprocessor
A metà degli anni '70 si diffondono i primi mainframes multiprocessore: Univac 1100/80
(1976), Burroughs B-7800 (1978), Cyber 170/720 (1979), IBM 3081 (1980).
Solo il gestore del sistema beneficia del miglioramento del throughput (numero di
lavori completati per unità di tempo).
Rimane il von Neumann bottelneck.
Sistemi multiprocessor ed elaborazione parallela
E' interessante invece disporre di sistemi multiprocessore in cui le diverse CPU
possono essere attive in modo concorrente nella soluzione di un singolo problema
(elaborazione parallela).
Multicomputer
Un sistema multicomputer consiste di più calcolatori autonomi che possono comunicare
o meno l'uno con l'altro (distributed memory system).
Multiprocessor
In un sistema multiprocessor le diverse CPU che compongono il sistema condividono
una memoria centrale unica (shared memory system).
Giovanni Erbacci 63
40
33. Architetture parallele
Esempi di Sistemi MIMD
Cray Y MP/8, Cray C90/16, Cray T90/32
Cray T3D, Cray T3E
IBM ES900-530-VF
IBM SP1, SP2, SP3, SP4
Ipercubi N-Cube
Ipercubi Intel
Paragon Intel
KSR1
Meiko
Parsytec GC-2
Thinking Machine Corp. CM5
Fujitsu AP 100 e VPP500
NEC SX4, SX5
SGI Origin 3800
Giovanni Erbacci 64
Architetture parallele
Classificazione in Base alla Memoria
M M
P P
P P
M
P
P P N P
M
M
Sistema a Memoria P P
Condivisa M M
Sistema a Memoria Distribuita
Giovanni Erbacci 65
41
34. Architetture parallele
Sistemi a Memoria Condivisa
I processori coordinano la loro attività, accedendo ai dati e alle istruzioni in
una memoria globale (shared memory), condivisa da tutti i processori
Uniform Memory Access (UMA)model = SMP: Symmetric Multi Processors
L’accesso alla memoria è uniforme: i processori presentano lo stesso tempo
di accesso per tutte le parole di memoria
l’interconnessione processore-memoria avviene tramite common bus,
crossbar switch, o multistage network.
ogni processore può disporre di una cache locale, le periferche sono
condivise.
Alcuni esempi: ETA10, Cray 2, Cray C90, IBM 3090/600 VF, NEC SX-5
I sistemi a memoria condivisa presentano un numero limitato di processori
(da 2 a 32) molto potenti (possoo presentare anche un’architettura vettoriale)
Questi multiprocessori sono chiamati tightly coupled systems per l’alto grado
di condivisione delle risorse
Giovanni Erbacci 66
Architetture parallele
Sistemi a Memoria Distribuita
La memoria è distribuita fisicamente tra i processori (local memory).
tutte le memorie locali sono private e può accedervi solo il processore
locale
La comunicazione tra i processori avviene tramite un protocollo di
comunicazione a scambio di messaggi (message passing).
I messaggi che vengono instradati sulla rete di interconnessione
In genere si tratta di sistemi che presentano un numero elevato di
processori (da poche decine ad alcune migliaia), ma di potenza non
troppo elevata, chiamati nodi di elaborazione.
Giovanni Erbacci 67
42
35. Architetture parallele
Sistemi NUMA
Non Uniform Memory Access (NUMA) model
La memoria è fisicamemte distribuita fra tutti i processori (ogni
processore ha una propria memoria locale)
L’insieme delle memorie locali forma uno spazio di indirizzi globale,
accessibile da tutti i processori
Supporto hw per far si che ogni processore possa indirizzare la memoria
di tutti i processori
Il tempo di accesso dal processore alla memoria non è uniforme:
– l’accesso è più veloce se il processore accede alla propria memoria
locale;
– quando si accede alla memoria dei processori remoti si ha un delay
dovuto alla rete di interconnessione.
Giovanni Erbacci 68
Architetture parallele
Il concetto di Nodo
P P
M
P P
Nodo SMP
Giovanni Erbacci 69
43
36. Architetture parallele
Condivisione Fisica e Logica
Condivisione fisica della memoria
le CPU hanno lo stesso spazio di indirizzamento
i valori scritti in una parola da una CPU possono essere letti da
un'altra.
Condivisione logica della memoria
determinata da come il sw, in opposizione all'hw, vede il
sistema.
Quando due processi (programmi in esecuzione) condividono la
stessa memoria logica, le informazioni scritte in una struttura
dati da uno di questi, possono essere lette dall'altro.
Quando non c' condivisione logica i processi devono
comunicare con forme di I/O (read e write di buffer) o tramite
message passing.
Giovanni Erbacci 70
Architetture parallele
Condivisione Fisica e Logica / 1
Memoria fisica Memoria logica Esempi
(Hw) (Sw)
non condivisa non condivisa Message passing tra processori disgiunti
non condivisa condivisa memoria virtuale distribuita (Linda)
condivisa non condivisa message passing simulato da buffer condivisi
condivisa condivisa multiprocessori a memoria condivisa
In sistemi a memoria fisica condivisa il software può usare il message passing.
Simulazione di memoria condivisa logicamente su macchine che possono
comunicare solo tramite message passing.
Linda è un modello di programmazione basato su uno spazio astratto di tuple.
Ogni tupla contiene uno o più elementi dati, come un record Pascal. Tutti i
processi condividono logicamente lo stesso spazio delle tuple, non importa
dove risiede.
Giovanni Erbacci 71
44
37. Architetture parallele
Rete di Interconnessione:
definizioni
Grafo aciclico:
un grafo che non contiene cicli
grado:
il grado è il numero di linee connesse a un nodo in una data topologia. E’ equivalente al
numero di primi vicini del nodo. E’ un indice della connettività
Un grado grande è un benefico perché identifica una molteplicità di paths.
Diametro:
il diametro di una rete è la distanza tra i due nodi più lontani (percorso più lungo tra
due nodi)
Un diametro piccolo corrisponde a una latenza bassa.
Neighbor:
Due nodi si dicono vicini se c un link che li connette.
Giovanni Erbacci 72
Architetture parallele
Rete di Interconnessione
Cos una rete di interconnessione?
È l’insieme dei cavi che definiscono come i diversi processori di un calcolatore parallelo sono connessi
tra loro e con le unità di memoria.
Il tempo richiesto per trasferire i dati dipende dal tipo di interconnessione.
Il tempo di trasferimento è detto communication time.
La massima distanza che devono percorrere i dati scambiati tra due processori che comunicano
incide sulle prestazioni della rete.
Caratteristiche di una rete di interconnessione
Bandwidth: identifica la quantità di dati che possono essere inviati per unità di tempo sulla rete. Occorre
massimizzare la bandwidth
Latenza: identifica il tempo necessario per instradare un messaggio tra due processori. Si definisce
anche come il tempo necessario per trasferire un messaggio di lunghezza nulla.
Occorre minimizzare la latenza
Altri aspetti da considerare
- Costo
- Scalabilità
- Affidabilità
- Diametro
- Degree
Giovanni Erbacci 73
45
38. Architetture parallele
Connettività
Interconnessione completa (ideale)
– Ogni nodo può comunicare direttamente con tutti
gli altri nodi (in parallelo)
– con n nodi si ha un'ampiezza di banda
proporzionale a n2.
– il costo cresce proporzionalmente a n2.
Giovanni Erbacci 74
Architetture parallele
Bus Network
La topologia Bus è costituita da
un cavo coassiale (bus) al
quale vengono connessi tutti I
dispositivi
I benefici di una rete basata su
Bus sono la semplicità di
costruzione e il costo molto
basso.
Gli aspetti negativi sono il rate di
trasmissione dati limitato e di
conseguenza la non
scalabilità in termini di
performance.
Giovanni Erbacci 75
46
39. Architetture parallele
Cross-bar Switch Network
Un cross-bar switch è una network che opera secondo un meccanismo
di switching per connettere dispositivi ad altri dispositivi (processori,
memoria).
Meccanismo analogo a quello adottato dai sistemi telefonici. Scala
meglio del bus ma ha costi maggiori
Giovanni Erbacci 76
Architetture parallele
Multi-Stage Switching Network
In questa topologia diversi layers di switches connettono N nodi di un tipo
a N nodi di un altro tipo.
Il Multi-Stage Switching una Network configurabile dinamicamente. Ciò
significa che gli switches che connettono i vari processori possono
esssere cambiati dinamicamente, a seconda di dove va inviato il
messaggio.
Giovanni Erbacci 77
47
40. Architetture parallele
Topologia Mesh
In una network a griglia, i nodi sono disposti secondo un reticolo a k
dimensioni (k dimensional lattice) di ampiezza w, per un totale di wk
nodi.
– k=1 (array lineare)
– k=2 (2D array) es. ICL DAP, Intel Paragon,
La comunicazione diretta è consentita solo tra i nodi vicini.
I nodi interni comunicano direttamente con altri 2k nodi.
Giovanni Erbacci 78
Architetture parallele
Topologia Toroidale
Alcune varianti del
modello a mesh
presentano connessioni
di tipo wrap-around fra i
nodi ai bordi della mesh
(topologia toroidale).
Il Cray T3E adotta una
topologia toroidale 3D.
Giovanni Erbacci 79
48
41. Architetture parallele
Topologia Ipercubo
Una topologia ipercubo (cube-connected) formata da n =2k nodi connessi
secondo i vertici di un cubo a k dimensioni.
Ogni nodo connesso direttamente a k altri nodi.
Il degree di una topologia ipercubo log n ed anche il diametro log n.
Esempi di calcolatori con questo tipo di network sono la CM2, NCUBE-2, Intel
iPSC860, SGI Origin.
Giovanni Erbacci 80
Architetture parallele
Topologia Ipercubo / 1
Giovanni Erbacci 81
49
42. Architetture parallele
Gray Coding
In un ipercubo a k dimensioni, ciascuno dei 2k vertici etichettato
con un numero intero binario di k bit.
Coordinate cartesiane nello spazio k-dimensionale.
Gli identificatori di due nodi adiacenti differiscono di un solo bit.
La distanza tra due nodi qualsiasi uguale al numero di bit
differenti nei loro identificatori.
Fra coppie di nodi non adiacenti sono possibili pi percorsi.
Occorre un algoritmo di instradamento (routing).
Esempio: XOR(Natt., Ndest)
I bit a 1 indicano gli assi su cui i nodi si diversificano
Il messaggio va inviato lungo uno di questi assi
XOR(100,001) = 101
lungo il 1° asse
oppure lungo il 3°
Giovanni Erbacci 82
Architetture parallele
Topologia Tree
I processori sono I nodi terminali (foglie) di un
albero
Il degree di una network con topologia ad
albero con N nodi è log2N e il diametro è
2 log 2(N) - 2
Fat tree
la bandwidh della network aumenta
all aumentare del livello della rete.
Esempi: CM-5, Network Myrinet e QSNet
Piramide
Una network piramidale di ampiezza p un
albero 4-rio completo con livelli, dove i
nodi di ciascun livello sono collegati in una
mesh bi-dimensionale.
Giovanni Erbacci 83
50
43. Architetture parallele
Architetture RISC
RISC : Reduced Instruction Set Computer
contrapposto a
CISC: Complex Instruction Set Computers
CISC RISC
IBM 370/168 VAX 11/780 XEROX IBM Berkeley Stanford
Dorado RISC I MIPS
Anno di completamento 1973 1978 1978 801 1981 1983
Istruzioni 208 303 270 1980 39 55
54 K 61 K 17 K 120 0 0
Dimensione 2-6 2 - 57 13 0 4 4
Microcodice
Dimensione Istruzioni Reg– Reg Reg - Reg Stack 4 Reg-Reg Reg-Reg
Reg - Mem Reg - Mem
Mem - Mem Mem - Mem
Giovanni Erbacci 84
Architetture parallele
Architetture RISC /
1
CISC RISC
Istruzioni complesse che richiedono Istruzioni semplici che richiedono un
più cicli ciclo
Ogni istruzione può far riferimento Solo le istruzioni di load e store
alla memoria possono far riferimento alla
memoria
Nessun o poco pipelining Molto pipelining
Istruzioni interpretate dal Istruzioni eseguite dall’hardware
microprogramma
Istruzioni a formato variabile Istruzioni a formato fisso
Molte istruzioni e modalità Poche istruzioni e modalità
La complessità è nel La complessità è nel compilatore
microprogramma
Insieme di registri singoli Insieme di registri multipli
Giovanni Erbacci 85
51
44. Architetture parallele
Architetture RISC / 2
Superscalari
Un processore superscalare ha più unità funzionali (pipeline multiple).
Più istruzioni per volta vengono caricate, decodificate, eseguite.
In genere: operazione Integer / operazione Floating Point / Load
Pipelining delle istruzioni.
Esempi di sistemi RISC superscalari:
– DEC Alpha, HP PA-RISC, IBM RS/6000, (Intel Pentium), SGI Origin,
IBM Power IV e Power V
Giovanni Erbacci 86
52