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 T clock dove T clock = 1/f clock 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 ILPl 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: l 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 =!CV dd2 f + V dd I st + V dd I leak 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: l 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 Frazione migliorato : la frazione del tempo di esecuzione che può trarre vantaggio dal miglioramento Speedup migliorato : 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-Frazione migliorato ) è la frazione del programma che non può essere parallelizzata Speedup migliorato =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 ideal 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 Superscalar Fine-Grained Coarse-Grained Multiprocessing Simultaneous Multithreading Time (processor cycle) Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 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 Processor Intel Pentium 4 Extreme AMD Athlon 64 FX-57 IBM Power5 (1 CPU only) Intel Itanium 2 Prestazioni ed efficienza in processori singoli multiple-issue (tratto da HP-CA4ed) Micro architecture Speculative dynamically scheduled; deeply pipelined; SMT Speculative dynamically scheduled Speculative dynamically scheduled; SMT; 2 CPU cores/chip Statically scheduled VLIW-style Fetch / Issue / Execute 3/3/4 3/3/4 8/4/8 6/5/11 Functional Units 7 int. 1 FP 6 int. 3 FP 6 int. 2 FP 9 int. 2 FP Clock Rate (GHz) 592 M, 423 mm 2 SD - Valeria Cardellini, A.A. 2009/10 23 3.8 2.8 1.9 1.6 Transistors, Die size 125 M, 122 mm 2 114 M, 115 mm 2 200 M, 300 mm 2 (est.) Power 115 W 104 W 80 W (est.) 130 W
Prestazioni sui benchmark SPECint2000 Itanium 2 Pentium 4 A MD A thlon 64 Pow er 5 3500 3000 2500 SPEC Ratio 2000 1500 1000 500 0 gzip vpr gcc mcf crafty parser eon perlbmk gap vortex bzip2 twolf SD - Valeria Cardellini, A.A. 2009/10 24 Prestazioni sui benchmark SPECfp2000 14000 Itanium 2 Pentium 4 AMD Athlon 64 Power 5 12000 10000 SPEC Ratio 8000 6000 4000 2000 0 w upw ise sw im mgrid applu mesa galgel art equake facerec ammp lucas fma3d sixtrack apsi SD - Valeria Cardellini, A.A. 2009/10 25
Misure di efficienza 35 30 25 Itanium 2 Pentium 4 AMD Athlon 64 POWER 5 Rank 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 20 Int/Trans 4 2 1 3 15 FP/Trans 4 2 1 3 Int/area 4 2 1 3 10 FP/area 4 2 1 3 5 Int/Watt 4 3 1 2 FP/Watt 2 4 3 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