Architetture Parallele

963 views
867 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
963
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Architetture Parallele

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  26. 26. Architetture parallele Esempio Unità Funzionale Add Floating Point CP 0 .... B(3) B(2) B(1) do i = 1, N .... C(3) C(2) C(1) A(i) = CP 1 .... B(4) B(3) B(2) B(1) B(i)+C(i) .... C(4) C(3) C(2) C(1) end do CP 2 .... B(5) B(4) B(3) B(2) B(1) .... C(5) C(4) C(3) C(2) C(1) V0 V1 + V2 CP 3 .... B(6) B(5) B(4) .... C(6) C(5) C(4) B(3) B(2) B(1) C(3) C(2) C(1) CP 4 .... B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 5 .... B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(8) C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 6 .... B(9) B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) .... C(9) C(8) C(7) C(6) C(5) C(4) C(3) C(2) C(1) CP 7 .... B(10) B(9) B(8) B(7) B(6) B(5) B(4) B(3) B(2) B(1) + C(1) .... C(10) C(9) C(8) C(7) C(6) C(5) C(4) C(3) C(2) Giovanni Erbacci 50 Architetture parallele Supercalcolatori Vettoriali . Giovanni Erbacci 51 34
  27. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×