Architettura degli Elaboratori a.a. 2006 - 07 Sviluppi e Tendenze Cenni a sviluppi sul livello dei processi Livello dei processi: complementi Modelli di cooperazione Ambiente locale, scambio di messaggi Ambiente globale, variabili condivise Modelli ai diversi livelli Processi ad ambiente locale STE ad ambiente globale Servizi ad ambiente locale Processi applicativi Servizi ad ambiente globale Processi applicativi X X X Servizio = processo gestore maschera completamente le variabili di stato del servizio (X) ai processi applicativi Servizio = procedura variabili di stato del servizio (X) condivise + meccanismi di sincronizzazione Spazi di indirizzamento e condivisione • Il problema dei puntatori condivisi – Indirizzi logici distinti – Indirizzi logici coincidenti – Indirizzi fisici • Controlli di protezione assenti o inefficienti • “Stato sistema” vs “stato utente” ! • (è solo una eventuale ottimizzazione dello spazio, di importanza minore) Spazi di indirizzamento e condivisione • Il problema dei puntatori condivisi – Soluzione con allocazione dinamica della memoria virtuale – Metodo a CAPABILITY • Un processo A passa un oggetto X ad un altro processo B, passandogli l’entrata di Tab_Ril_A (CAP) • B decide in quale posizione di Tab_Ril_B copiare CAP: così facendo, alloca dinamicamente X nella sua Memoria Virtuale e decide il valore dell’identificatore di pagina logica per X • Successivamente, B cancellerà tale entrata da Tab_Ril_B: così facendo, dealloca X dalla sua Memoria Virtuale – Esempi: tutti i PCB degli altri processi, scrittura diretta in variabile targa, descrittori di canale passati via channelname, ecc. Cenni a sviluppi sull’architettura di processori LOOP: Esempio LOAD RA, Ri, Ra LOAD RB, Ri, Rb ADD Ra, Rb, Ra for (i = 0; i < N; i++) STORE RC, Ri, Ra C[i] = A[i] + B[i] INCR Ri IF< Ri, RN, LOOP CPU “tradizionale” (accessi in memoria a domanda-risposta) Cache “perfetta” (prefetching); tc = 2t (caso ottimistico, come se tutta la cache fosse realizzata con il metodo diretto) Tc = N (22t + 9tc) = 43Nt T = Tc/6N ~ 7t P = 1/T = 1/(7t) Es: t = 0,25 nsec ; P ~ 571 MIPS “Domanda-risposta” è inefficiente … LOAD RB, Ri, Rb ADD Ra, Rb, Ra MMU-C istr dato istr … P LOAD RB, Ri, Rb accesso a cache ciclo di clock “utile” ciclo di clock “sprecato” ADD Ra, Rb, Ra Obiettivo: eliminare (minimizzare) i cicli di clock sprecati (P, MMU-C), facendo lavorare le unità della CPU “a pieno regime” CPU pipeline Stadi del pipeline = fasi dell’interprete firmware: 1. Chiamata istruzioni 2. Decodifica e preparazione operandi in registri 3. Eventuale lettura di valori in memoria 4. Esecuzione o eventuale scrittura in memoria 1 2 3 4 Cache Istruzioni (IC) Unità Istruzioni (IU) Cache Dati (DC) Unità Esecutiva (EU) Memoria intelligente: genera un flusso continuo di istruzioni in sequenza CPU pipeline 1 LOAD RA, Ri, Ra 2 1. Cache Istruzioni LOAD LOAD ADD 3 4 LOAD=RB, Rb1/2t P = 1/T 1/tRi,c = ADD Ra, Rb, Ra … 2. Unità Istruzioni Es : t = 0,25 nsec …… P = 2000 MIPS Le stesse MMU+Cache sono realizzate in pipeline. 3. Cache Dati Si può ottenere: 4. Unità Esecutiva P 1/t = fclock T Tc m T, per m (num. istr. eseguite) >> num. stadi pipeline Ora il Risc ha senso: la riduzione di T prevale sull’aumento di m CPU pipeline e superscalare • I valori di P precedenti sono IDEALI • In realtà, ci sono degradazioni di P dovute a dipendenze sui dati, istruzioni di salto, ecc • P 60% – 95% rispetto a Pid • Importanza dei COMPILATORI OTTIMIZZANTI • Per aumentare ancora P in modo significativo: CPU SUPERSCALARE • Cache Istruzioni legge più di una istruzione in un solo tempo di accesso (es: da 4 a 16): interleaving e/o parola lunga • tutte attraversano insieme il pipeline • P > (>>) 1/t !!! Es: Pid 8 – 32 GISP, con t = 0,25 nsec CPU superscalare: tecnologie in evoluzione • Multi-Threading • Hyper-Threading • Very Long Instruction Word (VLIW) • … Come “interallacciare” l’esecuzione di thread distinti su uno stesso processore Cenni a sviluppi e tendenze su architetture parallele “High Performance Computing”: motivi “Technology Push”: competitività e spinta tecnologica “Technology Pull”: requisiti di applicazioni “computation-intensive” e “data-intensive” • Controllo ambientale e prevenzione di disastri • Chimica, biotecnologie, medicina, ed altre scienze • Controlli real-time • Finanza, e-business, e-government … • Data Mining, motori di ricerca, … Necessità di performance superiori di più ordini di grandezza rispetto al tradizionale Multiprocessor a memoria condivisa M CPU M CPU CPU CPU ... CPU Aumenti di performance (speed-up) di un ordine di grandezza: P da decine di GIPS a centinaia/migliaia di GIPS Degradazione di performance dovuta a conflitti sulla memoria, sincronizzazioni, ecc. Multiprocessor su singolo chip (Multicore) C2 cache C1 cache P P P C1 cache P P P P P Multiprocessor a memoria condivisa (2 – 4 – 8 –16 processori) • Intel Pentium 4, Ithanium, iAPX • IBM CELL • SUN Niagara Tecnologia Multicore • Quale evoluzione ? – D’ora in poi il parallelismo sarà la regola, non l’eccezione • Qualunque CPU sarà un multiprocessor – Quale modello di programmazione ? – Quali strumenti di programmazione ? Sistemi distribuiti ad alte prestazioni Cluster di PC o di Workstation 2100 2100 2100 2100 • Configurazioni da 10 a 1000 nodi • S.O. Linux, Mac, Windows, Solaris • Performance da decine di GIPS fino ai 1000 GIPS ed oltre 2100 2100 2100 2100 • Costo contenuto • Rapporto P/costo molto favorevole Rete ad alta banda: 100 Mbit/sec – 1 Gbit/sec – 10 Gbit/sec su scala LAN (Fast Ethernet, Gigabit Ethernet, Myrinet, …) Entro pochi anni: 100 - 1000 Gbit/sec, anche su scala MAN (ottica) Reti ad alta banda Esempio su Pisa: una MAN con tecnologia fotonica, banda complessiva: 320 Gbit/sec, da 1 a 32 canali. Piattaforme abilitanti ad alte prestazioni Cluster omogenei, in generale con nodi multiprocessor Cluster eterogenei Virtual Private Networks (VPN), su scala LAN, MAN, WAN Grid Dom. amm. Dominio amministrativo 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 2100 Dom. amm. Linux / Pentium Power PC / MacOS 2100 2100 2100 2100 2100 2100 2100 2100 2100 SUN / Solaris Middleware “Non solo calcolatori”: tecnologia pervasiva e “ubiqua”, dispositivi mobili • Dispositivi mobili, PDA Miniaturizzazione, embedding Wearable Computing Un esempio di applicazione distribuita HPC: gestione delle emergenze Mobile Access Mobile Access Data & Knowledge Storage Mainframe + PC-Cluster In casofunzionalità di emergenza di non disponibilità delle Alcune sonooeffettuate in locale nelle unità base, richiede che La gestione delleunità emergenze mobili. le stesse unità mobili devono potermedici, cooperare lavoratori mobili e non (polizia, (magari, delegate, in gran numero) svolgere i servizi Altre in tempoper reale o post-process, vigilisono del fuoco, operatori ambientali, ecc.) più (cluster, critici. macchine a unità base più potenti parallele, mainframe): collaborino simulazioni complesse, classificazione Ciò richiede checritiche il sistemae abbia una grande del in situazioni pericolose, rischio, azioni proattive, ecc. capacità dinamica di autoadattamento avendo accesso ed elaborando sfruttando le risorse disponibili al meglio per Utilizzazione di più risorse eterogenee, dislocate su garantire la necessaria in tempo reale più siti, con modalità Qualità dele Servizio. dinamica adattiva una grande quantità di Visualising sfruttando le risorse disponibili al meglio per informazioni e conoscenza garantire la necessaria La capacità di autoadattamento deve estendersi Qualità del Servizio. a qualunque di risorsa di calcolo, allo scopo ditipo migliorare lo specifico memorizzazione, conoscenza e comunicazione processo di decisione. prevista e (momentaneamente) disponibile. Problemi tecnologici e di ricerca nel calcolo ad alte prestazioni • Tecnologia software, strumenti e ambienti di programmazione ad alto livello • Sviluppo di applicazioni indipendente dall’architettura parallela o distribuita, come nella programmazione su architetture tradizionali • Il problema di fondo: • Interoperabilità e Portabilità da coniugare con la Performance • Indirizzo didattico nella Laurea Specialistica in Tecnologie Informatiche Ambiente di programmazione ad alto livello per lo sviluppo di applicazioni ad alte prestazioni Department of Computer Science, University of Pisa ASSIST A Programming Environment for High-performance Portable Applications on Clusters, Large-scale Platforms, and Grids Projects: Implementations: • ASI-PQE2000 • CNR Agenzia 2000 • Heterogeneous Cluster/Beowulf (on top of ACE) • MIUR-CNR Strategic Programme L449/97, 1999 and 2000 • MIUR-FIRB Grid.it • SAIB – Atos Origin • CORBA interoperability • Grid version (on top of Globus) • On-going: High-performance Componentbased Grid-aware ASSIST Fine Parallelismo nell’elaborazione Casi tratti dalla vita di tutti i giorni Oggetti di input Oggetti di output Funzione F Elaborazione sequenziale Come eseguirla in parallelo? T = TF Tc = m TF Parallelismo nell’elaborazione Casi tratti dalla vita di tutti i giorni: “tutti uguali, un po’ per uno” Oggetti di input F Oggetti di output F ... F F T = TF / n Elaborazione parallela : “farm” Replicazione in n copie Tc ~ m TF / n es: n = 4 Parallelismo nell’elaborazione Casi tratti dalla vita di tutti i giorni : “catena di montaggio” Oggetti di input F1 Oggetti di output F2 F3 F4 Elaborazione parallela : “pipeline” Decomposizione in n stadi F = F4(F3(F2F1(…))) T = TF / n Tc ~ m TF / n es: n = 4