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