Architetture parallele Macchina di von Neumann Modello di calcolo: macchina di von Neumann. Control unit Arithmetic logic unit Input Output Limite alle prestazione ottenibili: un unica operazione in esecuzione una sola parte attiva Ricerca di nuove architetture con più operazioni in esecuzione allo stesso istante. Accumulator (Architettura degli Elaboratori) Architetture parallele 1 / 71 (Architettura degli Elaboratori) Architetture parallele 2 / 71 Cenni storici Molte proposte per architetture parallele: Reti neuronali, Date flow machine, Calcolatori vettoriali, Connection machine, Illiac IV. Scarso successo commerciale. I calcolatori vettoriali usate per supercomputer per il calcolo scientifico. Approcci rivoluzionari, difficili da usare, richiedono nuovi stili di programmazione. (Architettura degli Elaboratori) Architetture parallele 3 / 71 Cenni storici Macchine parallele a larga diffusione: anni 90. ipeline, superscalari Approcci conservativi, mantengo il codice. processore multi-core, sistemi multiprocessore, cluster di calcolatori. Ultime evoluzioni, conseguenze della: legge di Moore, vincoli sui consumi energetici. er sfruttare a piene il parallelismo devo usare algoritmi concorrenti distribuiti. (Architettura degli Elaboratori) Architetture parallele 4 / 71
Illustreremo problematiche e aspetti generali del parallelismo; classificazione dei calcolatori paralleli; esempi di calcolatori paralleli, idee architetturali attualmente in uso. Migliorare le prestazioni: Motivazioni per il parallelismo problemi che richiedo molta potenza computazionale: algoritmi di simulazione; il software tende a sfruttare tutte le risorse disponibili. Aumento delle prestazioni mediante: nuove tecnologie (porte logiche più veloci). nuove architetture (computazione più efficiente, maggior parallelismo) (Architettura degli Elaboratori) Architetture parallele 5 / 71 (Architettura degli Elaboratori) Architetture parallele 6 / 71 Altri vantaggi: Motivazioni per il parallelismo tolleranza ai guasti: più unita di calcolo, un guasto non necessariamente blocca il calcolatore, architettura scalabile: posso aumentare le prestazioni aggiungendo nuove unità di calcolo. (Architettura degli Elaboratori) Architetture parallele 7 / 71 arallelismo su un singolo chip ipeline: divisione della (micro-)istruzione in stadi. S1 S2 S3 S4 S5 Instruction fetch unit Instruction decode unit S1: S2: S3: S4: S5: Operand fetch unit (a) 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 Instruction execution unit 1 2 3 4 5 6 7 8 9 Time (Architettura degli Elaboratori) Architetture (b) parallele 8 / 71 Write back unit
rocessori superscalari Integer pipeline Execute Cache N 1 N 2 Fetch Decode Group N 3 Write Register X 1 X 2 X 3 Floating-point/graphics pipeline iù istruzioni iniziate contemporaneamente restazioni: aumento di un fattore circa dieci arallelismo a livello di istruzione iù istruzioni, di uno stesso processo, eseguite contemporaneamente. Vantaggi: si utilizza codice sequenziale, facile da utilizzare, non è necessario riscrivere il codice. Svantaggi: difficile ottenere un elevato grado di parallelismo. (Architettura degli Elaboratori) Architetture parallele 9 / 71 (Architettura degli Elaboratori) Architetture parallele 10 / 71 Altre tecniche il parallelismo: arallelismo su di un singolo chip rocessori VLIW Very Long Instruction Words On-Chip Multi-threading Single-Chip Multiprocessor Multiprocessori omogenei Multiprocessori eterogeneo (Architettura degli Elaboratori) Architetture parallele 11 / 71 VLIW Very Long Instruction Words Nuovi linguaggi macchina adatti alla computazione parallela. Sfruttano al meglio le tecnologie esistenti. I nuovi linguaggi macchina usano: VLIW Very Long Instruction Words ossia istruzioni molto lunghe, ciascuna composta da una sequenza di istruzioni base. Istruzione base da eseguire in parallelo contemporaneamente. Senza controllare che siano indipendenti tra loro. Sposto il lavoro dal processore al compilatore. (Architettura degli Elaboratori) Architetture parallele 12 / 71
TriMedia rocessore sviluppato dalla hilips, per dispositivi embedded di audio-video (DVD player - recorder, camcorder,.... Una singola istruzione è composta da 5-8 sotto-istruzioni: operazioni aritmetiche, load-store, multimediali (vettoriali). Itanium IA-64 Intel, candidato a sostituire l IA-32 (entium, Core). INSTRUCTION 1 INSTRUCTION 2 INSTRUCTION 3 TEMLATE INSTRUCTION 1 INSTRUCTION 2 INSTRUCTION 3 TEMLATE INSTRUCTION 1 INSTRUCTION 2 INSTRUCTION 3 TEMLATE R1 R2 R3 Instructions can be chained together REDICATE REGISTER (Architettura degli Elaboratori) Architetture parallele 13 / 71 iù istruzioni possono essere collegate assieme ed eseguiti contemporaneamente, senza controllare l indipendenza. (Architettura degli Elaboratori) Architetture parallele 14 / 71 Itanium IA-64 Istruzioni condizionate, per evitare le istruzioni di salto. Centinaia di registri, evito: accessi in memoria, dipendenza tra istruzioni. Caricamenti speculativi, anticipo gli accessi in memoria. a meno di page-fault. oco successo commerciale, il mercato ha preferito x86-64 (o AMD 64) scelta conservativa. (Architettura degli Elaboratori) Architetture parallele 15 / 71 Multi-threading ermette di sfruttare meglio le capacità di calcolo dei processori superscalari (con più pipeline). Il processore esegue più thread (processi (con memoria condivisa)) contemporaneamente. Utile nel caso un programma rallenti per: dipendenze tra istruzioni, istruzioni che bloccano, per alcuni cicli di clock l esecuzione (accessi alla memoria principale, cache III livello) (Architettura degli Elaboratori) Architetture parallele 16 / 71
Multi-threading uò essere utilizzato in processori con singola pipeline. iù utile in processore superscalari. In determinati istanti il processore commuta da un thread ad un altro. Due tecniche possibili; m. grana fine: si commuta su ogni, numero elevato di commutazione di contesti, si anticipano i possibili blocchi. m. grana grossa: si cerca di eseguire più istruzioni per thread, riduco le commutazioni. (Architettura degli Elaboratori) Architetture parallele 17 / 71 Multi-threading rocessore con una singola pipeline: rocessore superscalare: (Architettura degli Elaboratori) Architetture parallele 18 / 71 Ripartizione risorse Come le risorse del processore vengono ripartite tra i vari thread. Esempi: ogni thread disponi di un suo insieme di registri: risorse condivise: memoria cache risorse partizionate: le pipeline di un processore super-scalare In generale: Ripartizione risorse condivisione ripartita: ogni thread un insieme privato di risorse, condivisione totale, condivisione a soglia; un limite alle risorse acquisibili da un thread. Multi-threading usato su molti processori: Core i7: hyper-threading, 2 thread/core, UltraSparcT3: 16 core, 8 thread/core (Architettura degli Elaboratori) Architetture parallele 19 / 71 (Architettura degli Elaboratori) Architetture parallele 20 / 71
Multiprocessori omogenei su un singolo chip Evoluzione del multi-threading, ogni thread un core. Totale separazione delle risorse tra i thread. Solo a memoria cache resta comune. Intel Core i7 La tecnologia attuale permette di inserire più processori su di un chip. (Architettura degli Elaboratori) Architetture parallele 21 / 71 Maggior numero di core: - UltraSparc - Celle (Sony, Toshiba, IBM) (Architettura degli Elaboratori) Architetture parallele 22 / 71 Co-processori arallelismo ottenuto delegando alcuni compiti a processori ausiliari. DMA (Direct Access): controllore DMA complesso, co-processore, si fa carico della gestione I/O. Scheda video: generazione di immagini. Co-processori multimediali: la gestione dei dati audio video gravosa: codifica - decodifica (MEG, M3), elaborazione del segnale. Scheda di rete: controllo degli errori, instradamento dei messaggi. Cripto-processori. (Architettura degli Elaboratori) Architetture parallele 23 / 71 Multipr. eterogenei su singolo chip In un chip: core principale di controllo co-processori specializzati su particolari applicazioni bus di interconnessione, diversi standard alternativi: CoreConnect IBM, AMBA (Advance Microcontroller Bus Architecture) CU ARM, VCI (Virtual Component Interconncect) Chip progettato combinando i progetti delle singole componenti (core). (Architettura degli Elaboratori) Architetture parallele 24 / 71 Dispositivi embedded: SoC (System on Chip),
arallelismo su più chip Multiprocessori iù processori su più circuiti integrati. Maggiori aumenti di prestazioni. Necessità di nuovo codice (o di un adatto SO), nuove problematiche. Considereremo due principali approcci: multiprocessori e multicomputer. Sistemi a memoria condivisa. Shared memory CU (a) (b) (Architettura degli Elaboratori) Architetture parallele 25 / 71 (Architettura degli Elaboratori) Architetture parallele 26 / 71 Multiprocessori Le CU dividono lo stesso spazio di memoria. Comunicazione tra CU attraverso l accesso alla memoria condivisa LOAD, STORE. Non è necessario ripartire i dati tra le CU Accesso alla memoria limita le unità di computazione (il grado di parallelismo). Esempi: C con multi-processore, server. Sistemi a memoria distribuita: M M M M M M M M Message- passing interconnection network M M M M rivate memory CU M M M M Multicomputer Message- passing interconnection network CU (a) (b) (Architettura degli Elaboratori) Architetture parallele 27 / 71 (Architettura degli Elaboratori) Architetture parallele 28 / 71
Multicomputer Ogni CU ha un proprio spazio di memoria. Comunicazione attraverso scambio di messaggi: SEND, RECEIVE. iù semplice integrare numerose CU, numero unità limitato dalla capacità della rete di interconnessione. iù difficili da programmare. Machine 1 Machine 2 Application Language run-time Operating Hardware Application Language run-time Operating Hardware Simulazione memoria condivisa Machine 1 Machine 2 Application Language run-time Operating Hardware Application Language run-time Operating Hardware Machine 1 Machine 2 Application Language run-time Operating Hardware Application Language run-time Operating Hardware Shared memory Shared memory Shared memory (Architettura degli Elaboratori) Architetture parallele 29 / 71 (a) (b) (c) (Architettura degli Elaboratori) Architetture parallele 30 / 71 Simulazione memoria condivisa 1 Memoria condivisa hardware. 2 Memoria condivisa tramite memoria virtuale, paginazione. Una pagina può trovarsi: nel memoria della CU, in memoria disco, nella memoria locale di un altra CU. DSM (Distributed Shared ). 3 Memoria condivisa tramite librerie. Linda: programmi con tuple condivise. Orca: programmi con oggetti condivisi. (Architettura degli Elaboratori) Architetture parallele 31 / 71 Catalogazione del parallelismo Granularità: complessità delle computazioni eseguite in parallelo (e dei circuiti che le eseguono) Fine: semplici istruzioni, Instruction Level arallelism (IL). Es. processori con pipeline. Grossa (coarse): procedure, rocess Level arallelism (L). Es. processori multi-threading, sistemi multiprocessori. (Architettura degli Elaboratori) Architetture parallele 32 / 71
Livello di accoppiamento Forte: unità fortemente connesse, notevole scambio di dati. Es. processori superscalari, multiprocessori. Debole: unità più indipendenti. Es. multicomputer. Scalabilità Una stessa idea architetturale può essere implementata con un numero variabile di unità di calcolo. Un architettura è scalabile se funziona correttamente con molte unita di calcolo. CU Bus (a) (b) (c) (d) (Architettura degli Elaboratori) Architetture parallele 33 / 71 (Architettura degli Elaboratori) Architetture parallele 34 / 71 roblemi: Miglioramento delle prestazioni Le unità di calcolo devono sincronizzarsi tra di loro, overhead di computazione (lavoro extra). Memoria, o altre risorse condivise, creano conflitti tra le unità di calcolo. Conseguenze: difficilmente n unità svolgono un lavoro n volte più velocemente, a volte un aumento delle unità di calcolo porta a un peggioramento delle prestazioni. (Architettura degli Elaboratori) Architetture parallele 35 / 71 restazione Scalabilità dipende sia dall architettura che dai problemi considerati: Speedup 60 50 40 30 20 10 Linear speedup N-body problem Skyline matrix inversion 0 (Architettura 0 degli 10 Elaboratori) 20 30 40 Architetture 50 parallele 60 36 / 71 Number of CUs Awari
Componenti di un calcolatore parallelo Unità di calcolo. Si usano processori standard. Unità di memoria. Spesso partizionata per poter essere condivisa tra più processori. Rete di interconnessione. Nei multiprocessori collegano processori e moduli di memoria. Nei multicomputer collegano le unità di calcolo. Memoria Composta da diverse unità operanti in parallelo. Struttura complessa, dati replicati: ogni core possiede una cache locale, cache di alto livello comune a più core, memoria principale comune a più processori, eventualmente divisa su più unità. Tempi di accesso ai dati dipendo dalla loro posizione rispetto al processore. er preservare l efficienza, sono ammessi accessi alla memoria fuori ordine: i dati disponibili vengono subito letti o scritti. (Architettura degli Elaboratori) Architetture parallele 37 / 71 (Architettura degli Elaboratori) Architetture parallele 38 / 71 Consistenza della memoria Una memoria con comportamento ideale (esecuzione in ordine, tutti i processore hanno la stessa visione della memoria) è troppo lenta. Ma l ordine di accesso ai dati in memoria non può essere arbitrario, vanno stabilite regole minime per rendere prevedibile il comportamento del codice. Sequenziale: tutte le CU vedono lo stesso ordine. Di processore: preserva: le scritture di ogni CU, la scrittura di ogni indirizzo. Debole: prevede richieste di sincronizzazione, (Architettura Dopo degli Elaboratori) il rilascio: sincronizzazione Architetture parallele locale. 39 / 71 Reti di interconnessione Equivalente sofisticato dei bus. Componente fondamentale: a volte la componente più costosa del calcolatore. Composte da: Link (connessioni - cavi - bus) paralleli o seriali Switch (instradatori - commutatori) Interfacce (rocessori - rete - memorie) (Architettura degli Elaboratori) Architetture parallele 40 / 71
Switch Metodi di comunicazione: Circuit switching, Store and forward: messaggio diviso in pacchetti. input, output, common buffering Routing: determinazione del percorso. (a) (c) (b) (d) Topologie di rete CU 1 Input port Output port A B End of packet (e) (f) C D Four-port switch Middle of packet CU 2 (g) (h) Front of packet (Architettura degli Elaboratori) Architetture parallele 41 / 71 (Architettura degli Elaboratori) Architetture parallele 42 / 71 Topologie di rete Modo di strutturare le unità di calcolo: Obiettivi massimizzare la ampiezza di banda, evitare colli di bottiglia, minimizzare le distanze (in numero di archi): diametro. Configurazione: stella, completamente interconnessa, albero, griglia, doppio toroide, ipercubo. geometria fissa o variabile Tassonomia dei computer paralleli Classificazione di Flynn (1972) SISD Single Instruction Single Data (macchina di von Neumann) SIMD Single Instruction Multiple Date (Computer Vettoriali) MIMD Multiple Instruction Multiple Data (Multiprocessori e multicomputer) MISD Multiple Instruction Multiple Data (nessun esempio) (Architettura degli Elaboratori) Architetture parallele 43 / 71 (Architettura degli Elaboratori) Architetture parallele 44 / 71
Una classificazione più fine arallel computer architectures SIMD: Array processor Control unit Broadcasts instructions SISD SIMD MISD MIMD (Von Neumann)? Vector processor Array processor Multi- processors Multi- computers UMA COMA NUMA M COW rocessor 8 8 rocessor/memory grid Bus Switched CC-NUMA NC-NUMA Grid Shared memory Hyper- cube Message passing iù processori controllati da una unità: ILLIAC IV (Architettura degli Elaboratori) Architetture parallele 45 / 71 (Architettura degli Elaboratori) Architetture parallele 46 / 71 GU (General urpose Unit) Le schede grafiche sono un implementazione moderna degli array processor. La computazione nelle GU (Graphical process uniti) avviene secondo lo schema array processor: la stessa operazione eseguita da semplici core su dati diversi. struttura della memoria complessa: ogni core ha una memoria privata, gruppi di core condividono una memoria locale, esiste una memoria comune a tutti i core. (Architettura degli Elaboratori) Architetture parallele 47 / 71 GGU (General urpose GU) Con i GGU si utilizzano le GU per calcoli generici (non grafici), solo alcuni tipi di calcolo adatti a questo tipo di computazione, si sfruttano l elevato numero di core (Nvidia Fermi - 512 Core). nuovi linguaggi di programmazione su GGU CUDA (Nvidia) OpenCL (Generico, usabile su più schede grafiche). (Architettura degli Elaboratori) Architetture parallele 48 / 71
Nvidia Fermi SIMD: Vector processor Input vectors Vector ALU Gerarchia di memoria: locale al singolo core, condivisa tra gruppi di core, memoria comune. ALU e Registri operano su vettori: CRAY. (Architettura degli Elaboratori) Architetture parallele 49 / 71 (Architettura degli Elaboratori) Architetture parallele 50 / 71 SIMD instruction I processori attuali implementano istruzioni vettoriali. Estensioni ai linguaggi macchina. ISA x86: MMX (MultiMedia extension) SSE (Streaming SIMD Extension),..., SSE4 AVX (Advance Vector extension) Utilizzati registri molto lunghi, centinaia di bit, contenenti vettori di dati (byte, half-word, word) su cui operare con istruzioni vettoriali. Si distingue tra: SIMD instruction istruzioni multimediali: lunghezza fissa. istruzioni vettoriali: insiemi di dati di lunghezza variabile, parametriche Vantaggi: si sfrutta la legge di Moore (i tanti transistor a disposizione), istruzioni vettoriali permettono un codice più compatto. (Architettura degli Elaboratori) Architetture parallele 51 / 71 (Architettura degli Elaboratori) Architetture parallele 52 / 71
Calcolatori MIMD Multiprocessori UMA multiprocessor UMA Uniform Access NUMA Non Uniform Access COMA Cache Only Access multicomputer M Massive arallel rocessor COW Cluster Of Workstation (NOW Network Of W.) Tutti i processori hanno stessi tempi di accesso alla memoria, SM (Symmetric Multi rocessor): quando i processori hanno la stessa visione della memorie e dei dispositivi I/0: (Architettura degli Elaboratori) Architetture parallele 53 / 71 (Architettura degli Elaboratori) Architetture parallele 54 / 71 Shared memory SM con singolo bus CU CU M CU CU M CU CU M Bus Cache rivate memory (a) (b) (c) Shared memory L implementazione più semplice di un sistema multiprocessore. Bus limita il numero di CU utilizzabili (16). Cache di grosse dimensioni per limitare l accesso al bus. Necessità di mantenere la coerenza della cache. (Architettura degli Elaboratori) Architetture parallele 55 / 71 Snooping cache Le cache spia il traffico sul bus per garantire la coerenza. Diverse implementazioni: Write through Read Miss Lettura dalla memoria. Read Hit Dati locali. Write Miss Aggiorna memoria - Invalida altre linee. Write Hit Aggiorna memoria e cache Invalida altre linee. Molti accessi al bus: semplice ma poco efficiente. (Architettura degli Elaboratori) Architetture parallele 56 / 71
Snooping cache: protocollo MESI rotocollo write back. Utilizzato nei processori Core. Ogni linea di cache viene marcato in uno tra 4 modi: (a) (b) CU 1 CU 2 CU 3 A Exclusive Cache CU 1 CU 2 CU 3 A Bus MESI, esempio CU 1 reads block A CU 2 reads block A Exclusive (sola copia in cache); Shared (linea presente in altre cache); Modified (linee cache diversa da quella in memoria); Invalid (linea non valida). (c) (d) Shared Shared Bus CU 1 CU 2 CU 3 A Modified Bus CU 1 CU 2 CU 3 A A Shared Shared Bus CU 2 writes block A CU 3 reads block A (Architettura degli Elaboratori) Architetture parallele 57 / 71 CU 1 CU 2 CU 3 (e) (Architettura degli Elaboratori) CU 2 writes block A Architetture parallele 58 / 71 A Modified Bus UMA con crossbar switch rocessori e memorie connesse con un crossbar switch, (Sun Fire E25K). Rete non bloccante. Elevato numero di switch. (O(n 2 )) CUs 000 001 010 011 100 101 110 111 000 001 010 Memories 011 100 101 110 111 (b) Crosspoint switch is open Crosspoint switch is closed (c) Closed crosspoint Open switch crosspoint (Architettura degli Elaboratori) switch Architetture parallele 59 / 71 (f) CU 1 CU 2 CU 3 A Modified Bus UMA con reti a commutazione CU 1 writes block A Rete Omega Rete bloccante. Limitato numero di switch. (O(n log n)) CUs 000 001 010 011 100 101 110 b a 1A 1B 1C b 3 Stages 2A 2B 2C 111 1D 2D 3D a a 111 (Architettura degli Elaboratori) Architetture parallele 60 / 71 b 3A 3B 3C a b Memories 000 001 010 011 100 101 110
Multiprocessori NUMA Multiprocessori NUMA Not Uniform Access CU CU MMU Local bus Local bus CU Local bus CU Local bus Memoria locale e remota Un unico spazio di indirizzamento maggiore scalabilità: superano il limite delle 100 CU necessità di ridistribuire i dati System bus Hardware DSM Distributed Shared. (Architettura degli Elaboratori) Architetture parallele 61 / 71 (Architettura degli Elaboratori) Architetture parallele 62 / 71 Si dividono in: CC-NUMA presenza di caching limita gli accessi remoti directory (invece di snoooping cache) per garantire la coerenza NC-NUMA assenza di caching aumentano gli accessi paginazione sofisticata page scanner, per ridistribuire i dati COMA Cache Only Access la memoria locale è vista come una grande memoria cache problemi recupero dati. (Architettura degli Elaboratori) Architetture parallele 63 / 71 Multicomputer CU con spazio privato di memoria, non direttamente accessibile Vantaggi: maggiore scalabilità, efficienti nell eseguire in parallelo processi indipendenti (o con poca dipendenza). Es. server web. Caratteristiche: sistemi fault-tollerance, i singoli computer possono essere SM con bus singolo. (Architettura degli Elaboratori) Architetture parallele 64 / 71
CU Communication processor Local interconnect Disk and I/O Node Multicomputer Local interconnect High-performance interconnection network Si dividono in due categorie. Disk and I/O Massive arallel rocessor M Gli attuali supercomputer Un elevato numero di processori standard Rete di interconnessione sofisticata Librerie software parallelo Fault tollerance: necessario per l elevato numero di componenti Esempi: BlueGene: : 400K CU, Red Storm 10K CU Opeteron. (Architettura degli Elaboratori) Architetture parallele 65 / 71 (Architettura degli Elaboratori) Architetture parallele 66 / 71 BlueGene rogetto IBM. Record di prestazioni teoriche ed effettive. Campi d applicazione: scacchi, simulazione: protein-unfolding, sistemi biologici (cervello, cuore), cosmologia. Cluster of workstation COW Rete di interconnessione standard: si sfruttano i progressi nelle reti. Dispositivi economici, facilmente assemblabili, possono raggiungere prestazioni paragonabile ai M. Centralizzati o decentralizzati. (Architettura degli Elaboratori) Architetture parallele 67 / 71 (Architettura degli Elaboratori) Architetture parallele 68 / 71
Esempio: Cluster Google Esempio: Cluster Google Un numero limitato di datacenter (12) di grosse dimensioni. Il progetto poco pubblicizzato. rincipi costruttivi: utilizzare componenti economici (desk-top, rete Ethernet) di largo uso, con il miglior rapporto: prestazioni/(prezzo + consumi); (consumi 100MW) l affidabilità ottenuta attraverso ridondanza, la rottura di un componente non compromette il sistema. (Architettura degli Elaboratori) Architetture parallele 69 / 71 (Architettura degli Elaboratori) Architetture parallele 70 / 71 Grid computing Livello successivo di computazione parallela: Computazione distribuita su calcolatori connessi via web. meccanismi di protezione, gestione della risorse di calcolo, distribuzione del carico, sistemi di calcolo non omogenei, definizione di uno standard comune. (Architettura degli Elaboratori) Architetture parallele 71 / 71