ARCHITETTURE DEI CALCOLATORI Introduzione Mariagiovanna Sami 20092009-10 1 Sistemi digitali: sessant’anni di evoluzione… Il PC che si compera oggi per 500 dollari è più potente, più veloce, dotato di maggiore memoria di un calcolatore che vent’anni fa costava un milione di dollari… ¾ ¾ Tecnologie migliori, e anche Architetture dei calcolatori sempre più evolute Nelle prime generazioni: un’unica “classe” di calcolatori; Oggi: soluzioni che vanno dai microprocessori per elettrodomestici (meno di un dollaro) a supercomputer con decine di migliaia di processori (milioni di dollari…) -2- 20092009-10 Sistemi digitali: sessant’anni di evoluzione… Dalla programmazione in assembler si è passati all’uso di (pochi) linguaggi ad alto livello Ö maggiore portabilità del software Dall’uso di sistemi operativi “proprietari” della casa produttrice dei calcolatori si è passati a sistemi open source quali Unix e Linux (che ne deriva) Ö si riduce il costo per l’introduzione di una nuova architettura. -3- 20092009-10 Sistemi digitali: sessant’anni di evoluzione… Il miglioramento: solo una questione di tecnologia? Riferimento: il VAX 11/780 della DEC (1978): ¾ ¾ ¾ Fatte 1 le prestazioni del VAX, misurando il tempo di esecuzione per lo stesso insieme di programmi: Nel 2005 le prestazioni dell’Intel XEON si valutavano a 6505 I microprocessori di fascia alta sono circa sette volte più veloci di quanto non consentirebbe la sola tecnologia! Ö l’innovazione della architettura supera quella della sola tecnologia. -4- 20092009-10 Sistemi digitali: sessant’anni di evoluzione… Prestazioni (rif.: VAX 11/789) 10000 64-bit Intel Xeon AMD Opteron 6505 5764 1000 100 10 1978 VAX 780/11 1986 1992 -5- 20022004 20092009-10 Sistemi digitali: sessant’anni di evoluzione… Prima del 1985: il miglioramento delle prestazioni dipende essenzialmente dalla tecnologia (circa 25% annuo); Successivo miglioramento delle prestazioni: essenzialmente dovuto alle variazioni architetturali (fino al 2002 circa: incremento per un fattore pari a circa 7!) DOPO IL 2002: vincoli riguardanti il consumo di POTENZA, il parallelismo disponibile nelle applicazioni, e la latenza delle memorie, hanno ridotto l’incremento delle prestazioni a circa il 20% annuo. -6- 20092009-10 Sistemi digitali: sessant’anni di evoluzione… La grande variazione architetturale degli anni ’80: ¾ ¾ ¾ Passaggio ad architetture basate sul concetto RISC: Architetture che non si sono adeguate alla nuova visione: sono scomparse (caso estremo: l’architettura VAX) Architetture che hanno retto la sfida: es.: Intel, che ha modificato l’architettura x86 traducendo le istruzioni di macchina precedenti in un insieme tipo RISC. -7- 20092009-10 Architetture: quale definizione? Architettura astratta: specifica funzionale di un calcolatore; Architettura concreta: una implementazione di una architettura astratta; Normalmente, per architettura si intende una architettura astratta. Architettura concreta: spesso chiamata microarchitettura. Architettura astratta: una specifica di macchina “a scatola nera” può essere vista: -8- 20092009-10 Definizione di architettura Dal punto di vista del programmatore: si ha a che fare con un modello di programmazione, equivalente alla descrizione del linguaggio di macchina; Dal punto di vista del progettista: si ha a che fare con un modello hardware (descrizione a scatola nera fornita al progettista: deve includere informazioni addizionali, es., sui protocolli di interfaccia etc.). -9- 20092009-10 Definizione di architettura Instruction Set Architecture (ISA): architettura astratta definita dall’insieme delle istruzioni che il calcolatore è capace di decodificare ed eseguire. Una stessa ISA può essere implementata da architetture hardware con caratteristiche differenti (caso tipico: ISA X86, implementato da architetture Intel, AMD, Transmeta…). - 10 - 20092009-10 La definizione di paradigma architetturale: Paradigma architetturale: composizione dello hardware e del modo di esecuzione del programma; Non include il software, ma implica il modo di eseguire il codice oggetto! - 11 - 20092009-10 Quali classi di calcolatori? Anni ’60: “mainframe” – macchine che costavano milini di dollari, erano utilizzate in “centro di calcolo” da personale specializzato per elaborazione dati di tipo gestionale e scientifico; Fine anni ’60-anni ’70: minicomputer – nato per applicazioni di laboratorio, rapidamente usato per applicazioni di tipo time-sharing e per sistemi dedicati di controllo (es., controllo numerico avanzato). - 12 - 20092009-10 Quali classi di calcolatori? Fine anni ’70: emergono i primi supercomputer – sistemi ad alte prestazioni per calcolo scientifico (prodotti in numero molto limitato, ma introdussero concetti oggi adottati in macchine di uso diffuso!); 1974; i primi microprocessori Ö la diffusione dei dispositivi di seconda generazione (fine anni ’70 - primi anni ’80: dispositivi a 16 bit, con capacità di Memory Management) porta al personal computer. - 13 - 20092009-10 Quali classi di calcolatori? Il PC “singolo” su ogni scrivania porta alla scomparsa del “time sharing” come uso simultaneo dello stesso calcolatore (risorse di calcolo) da parte di più utenti Ö nascono i server (calcolatori che forniscono a un gran numerto di utenti servizi quali gestione e accesso a memorie a lungo termine, gestione dei collegamenti a Internet, etc.) Anni ’90: nascono i dispositivi digitali “handheld” (PDA), l’elettronica digitale ad alte prestazioni (dai videogiochi a set-top box etc.), la telefonia cellulare avanzata Ö emergono i sistemi embedded. - 14 - 20092009-10 Quali classi di calcolatori? Anni ’90: nascono i dispositivi digitali “handheld” (PDA), l’elettronica digitale ad alte prestazioni (dai videogiochi a set-top box etc.), la telefonia cellulare avanzata Ö emergono i sistemi embedded. Anni 2000: si affermano i “Data Center” – ambienti con la capacità di gestire e memorizzare grandi masse di dati e collegamenti in rete, più in generale fornire servizi per un gran numero di calcolatori “remoti”. - 15 - 20092009-10 La conseguenza: Il progetto di sistemi hardware-software anche di grande complessità si estende ben al di là del centro di calcolo o anche del PC Ö studio e progetto di architetture di calcolo diventano componenti fondamentali nel progetto di soluzioni elettroniche nei più diversi campi; Si rende necessario valutare le architetture esistenti fra cui scegliere, ed eventualmente proporre nuove soluzioni. - 16 - 20092009-10 Quali le caratteristiche? Segmento maggiore in termini di valore di mercato ($$!): il personal computer: ¾ ¾ ¾ Costo: da 500 a 5000$ (approssimativamente); Ottimizzato per il rapporto costo-prestazioni; Ben caratterizzato per una mescolanza di applicazioni di tipo generale e di computazione Web-centric. - 17 - 20092009-10 Quali le caratteristiche? Server: ¾ ¾ ¾ ¾ Sempre più essenziale per fornire servizi affidabili di gestione di files e di calcolo; Dependability (“disponibilità del servizio”): fattore critico; Altro aspetto essenziale: la scalabilità (possibilità di aumentare memoria, sistema di I/O, capacità di calcolo per soddisfare richieste crescenti); Efficienza in termini di throughput (prestazioni valutate in termini di transazioni o di pagine Web servite in un minuto). - 18 - 20092009-10 Quali le caratteristiche? Supercomputer: i più costosi (milioni di dollari)… ¾ ¾ ¾ Prestazioni: focalizzate sul calcolo scientifico (Ö operazioni in virgola mobile…); Un tempo basati su tecnologie particolari – oggi realizzati come sistemi multiprocessore di grandi dimensioni (anche decine di migliaia di processori cooperanti) realizzati in tecnologia standard; Soluzioni come “cluster” di personal computers o addirittura come il “grid” hanno sostituito per numerose applicazioni i supercomputer. - 19 - 20092009-10 Quali le caratteristiche? La frazione di mercato più grande (e crescente) in termini di unità installate… calcolatori embedded ¾ ¾ applicazioni: dai telefoni cellulari all’automobile agli elettrodomestici, dalle smart-card ai videogiochi alle apparecchiature medicali… Spettro di capacità di elaborazione e di costi molto ampio – da dispositivi a 8 bit che costano poche decine di centesimi a dispositivi di fascia alta per i videogiochi che possono costare un centinaio di dollari; - 20 - 20092009-10 Embedded computing Requisito principale imposto dall’utente: spesso, funzionamento in tempo reale – almeno per un segmento dell’applicazione eseguita si impone un limite massimo al tempo di esecuzione. Es.: set-top box: il tempo per elaborare un’immagine è strettamente limitato – il processore dovrà accettare ed elaborare l’immagine immediatamente successiva in un tempo rigorosamente predefinito (hard real time). In alcuni casi il vincolo è meno stringente – sono possibili alcune violazioni, purché in numero limitato (soft real time). - 21 - 20092009-10 Embedded computing Altri aspetti essenziali dell’embedded computing: ¾ ¾ Necessità di ridurre la quantità di memoria (in molte applicazioni, la memoria diventa una componente elevata del costo; spesso si vuole che tutta la memoria necessaria stia sullo stesso chip del processore) Ö vincolo sul software applicativo! Necessità di ridurre il consumo di potenza (molti sistemi sono alimentati a batteria, comunque mancano sistemi di raffreddamento) Ö impatta sul progetto della CPU, del sistema hardware e anche del software. - 22 - 20092009-10 Il punto di partenza: Alla base: il paradigma di Von Neumann (e la sua alternativa di Harvard): CPU: Central Processing Unit; ALU MEMORIA CPU Unità di controllo I/O - 23 - ALU: Arithmetic- Logic Unit; I/O: Input/Output (a seconda del contesto indica la funzione oppure l’unità che esegue la funzione). 20092009-10 Il punto di partenza: Schema iniziale: qualsiasi azione (I/O incluso) viene iniziata da programma: Estensione: paradigma reattivo (si ammette che il calcolatore risponda ad eventi esterni – es., gestione di I/O in interrupt – asincroni rispetto all’esecuzione del programma pri9ncipale) non modifica sostanzialmente il paradigma di Von Neumann. - 24 - 20092009-10 Stile di programmazione: imperativo, dominato dal flusso del controllo Spazio di indirizzamento in memoria: unico. L’informazione (istruzione o dato) è identificata mediante il suo indirizzo. Il nome di una variabile viene tradotto in un indirizzo. Istruzioni di macchina: memorizzate sequenzialmente. Ordine naturale di lettura dalla memoria (fetching) ed esecuzione: secondo valori crescenti degli indirizzi Ö esecuzione nello stesso ordine sequenziale in cui le istruzioni sono state scritte dal programmatore e registrate in memoria. - 25 - 20092009-10 Il flusso del controllo Il Contatore di Programma (PC) contiene l’indirizzo della prossima istruzione da eseguire; l’Unità di Controllo ne comanda la lettura dalla memoria; L’U.C. decodifica l’istruzione e ne comanda l’esecuzione inviando opportuni segnali ad ALU, memoria (eventualmente I/O); Simultaneamente, calcola l’indirizzo della prossima istruzione da eseguire: ¾ ¾ Di norma, istruzione immediatamente successiva (in ordine sequenziale) Ö indirizzo calcolato incrementando il PC; Un indirizzo diverso viene esplicitamente indicato mediante una istruzione di controllo (salto condizionato o no, chiamata a /rientro da sottoprogramma…). - 26 - 20092009-10 Esecuzione dominata dal controllo Il controllo è determinato: ¾ ¾ Implicitamente dall’ordinamento delle istruzioni nel programma, oppure Esplicitamente mediante istruzioni di controllo. L’esecuzione è inerentemente sequenziale e seriale (Ö le istruzioni vengono eseguite in sequenza, e ogni istruzione viene letta e avviata in esecuzione solo dopo che la precedentemente è stata completata). Tutte le azioni sono sincronizzate de facto dall’esecuzione del programma. - 27 - 20092009-10 La variante Harvard: Separa memoria di programma e memoria dati; lo spazio di indirizzamento è comunque unico, la separazione riguarda la comunicazione fisica fra CPU e memorie ALU Memoria di programma Unità di Controllo Memoria Dati I/O - 28 - 20092009-10 Il problema delle prestazioni Per molte applicazioni (e per molto tempo): prestazioni = principale parametro di valutazione di un calcolatore Fondamentalmente: con prestazioni si indica il reciproco del tempo di risposta (detto anche tempo di esecuzione). Tempo di esecuzione minore Ö prestazioni migliori (più elevate); Per alcune applicazioni le prestazioni sono riferite al throughput (= quantità totale di lavoro eseguito per unità di tempo). - 29 - 20092009-10 Quale tempo? Tempo di CPU: tempo durante il quale la CPU sta eseguendo istruzioni (non include il tempo passato per attendere la disponibilità di unità di I/O etc.); Tempo di CPU utente: tempo speso eseguendo il programma utente; Tempo di CPU di Sistema: tempo speso eseguendo attività del Sistema Operativo richieste dal programma. - 30 - 20092009-10 La valutazione delle prestazioni Riferita a un insieme di programmi benchmark che possono essere: L’applicazione reale; Applicazioni modificate (scripted); Kernel (nuclei) estratti da programmi reali; Benchmark sintetici – tentano di replicare la frequenza media di operazioni e operandi in un ampio insieme di programmi reali. - 31 - 20092009-10 La valutazione delle prestazioni Si distinguono: Programma statico = il codice scritto dal programmatore (o il codice oggetto prodotto dal compilatore): Programma dinamico = sequenza dinamica di istruzioni eseguite – tiene in conto le dipendenze dai dati, i salti, le ripetizioni dei cicli… Le prestazioni fanno riferimento al programma dinamico! - 32 - 20092009-10 La valutazione delle prestazioni Calcolatori “vecchi” (strettamente Von Neumann): per ogni istruzione nell’insieme delle istruzioni di macchina (IS – Instruction Set) è noto il tempo totale richiesto da lettura + esecuzione (= latenza dell’istruzione) Fase di profiling: = esecuzione del programma con opportuni insiemi di dati) Ö genera il programma dinamico; - 33 - 20092009-10 La valutazione delle prestazioni: macchina di Von Neumann Tempo di esecuzione del programma = somma delle latenze di tutte le istruzioni nel programma dinamico; Ottimizzazione delle prestazioni: ottenuta scegliendo l’algoritmo “migliore” e usando le istruzioni più veloci nella scrittura (/compilazione) del programma. - 34 - 20092009-10 Approccio più generale: l’equazione delle prestazioni della CPU Architetture realistiche: includono come minimo gerarchie di memoria e pipelining Ö il tempo di esecuzione non può essere calcolato come somma delle latenze; Dati di partenza: tempo di ciclo della CPU (clock cycle time), numero di cicli di clock richiesti da un programma, numero di istruzioni eseguite (Instruction Count IC). - 35 - 20092009-10 L’equazione delle prestazioni della CPU Tempo di CPU: espresso come: CPUtime = (CPU_clock_cycles_for_a_program) * Clock_cycle_time = (CPU_clock_cycles_for_a_program)/clock_rate Parametro essenziale di valutazione: numero di cicli di clock per istruzione (Clock Cycles per Instruction – CPI): CPI = (CPU_clock_cycles_for_a_program)/IC - 36 - 20092009-10 L’equazione delle prestazioni della CPU CPI: cifra di merito che permette di valutare diversi stili alternativi di implementazione – usata in questo corso. CPUtime = IC * clock_cycle_time*CPI Espandendo… - 37 - 20092009-10 L’equazione delle prestazioni della CPU Instructions clock _ cycles sec onds × × =CPUtime program instructions program Le prestazioni dipendono dal ciclo di clock, dal numero di cicli di clock per istruzione e dal numero di istruzioni eseguite (instruction count). - 38 - 20092009-10 L’equazione delle prestazioni della CPU Ciclo di clock: dipende dalla tecnologia hardware e dalla organizzazione della CPU; CPI: dipende dall’organizzazione della CPU e dall’Instruction Set Architecture; Instruction Count: dipende dall’Instruction Set Architecture e dalla tecnologia del compilatore. - 39 - 20092009-10 Verso migliori prestazioni: alcuni dei colli di bottiglia 1. “Logic-memory gap”: la memoria è più lenta della logica – memorie più veloci sono più costose: ¾ ¾ Il gap continua ad aumentare; Le applicazioni richiedono memorie sempre più grandi. - 40 - 20092009-10 Verso migliori prestazioni: alcuni dei colli di bottiglia 2. “Esecuzione totalmente seriale”: nella macchina di Von Neumann un’istruzione deve essere completata prima che si possa leggere l’istruzione successiva: ¾ La latenza di un’istruzione e le prestazioni complessive sono dominate dalla tecnologia. 3. “Esecuzione totalmente sequenziale”: le istruzioni vengono eseguite rigorosamente nell’ordine in cui sono state previste dal programmatore, una per volta. - 41 - 20092009-10 Come migliorare le prestazioni? 1. Modificare la struttura della memoria: il programmatore deve vedere una memoria indirizzabile molto ampia, la CPU deve vedere una “memoria equivalente” molto veloce – e il cliente finale deve trovare il costo accettabile! Ö Ricorso al concetto di gerarchie di memorie. - 42 - 20092009-10 Come migliorare le prestazioni? (2) 2. Ottenere migliore efficienza nell’esecuzione del programma Ö modificare il paradigma di esecuzione della sequenza di istruzioni, superando il paradigma di esecuzione Seriale e sequenziale Ö introdurre qualche tipo di parallelismo (= possibilità di eseguire più funzionalità simultaneamente) 3. Superare il paradigma imperativo di esecuzione Ö esecuzione dominata non più dal controllo ma dalla disponibilità dei dati. - 43 - 20092009-10 Come migliorare le prestazioni? (3) 4. Superare il vincolo di esecuzione di un singolo flusso di istruzioni Ö ricorso a varie forme di parallelismo (a vari livelli) così da eseguire simultaneamente più compiti differenti. - 44 - 20092009-10 Di che cosa parleremo Gerarchie di memoria: si suppongono già noti da corsi precedenti i concetti fondamentali: ¾ ¾ Finalità e architetture-base della cache. Tecniche di gestione fondamentali. Temi trattati: ¾ Valutazione delle prestazioni delle cache, architetture ottimizzate, gestione ottimizzata (inclusi gli aspetti relativi al compilatore). - 45 - 20092009-10 Di che cosa parleremo (2) Come cambia il paradigma di esecuzione: parallelismo “all’interno della CPU”. ¾ ¾ ¾ Il superamento del paradigma seriale: pipelining (concetto che si presume noto); Il superamento del paradigma sequenziale: architetture con parallelismo a livello di istruzione, soluzioni superscalari. Il superamento dell’esecuzione “control-flow dominated” verso una modalità “data flow dominated” - 46 - 20092009-10 Di che cosa parleremo (3) Parallelismo a livello di processo: ¾ multithreading; Sistemi multiprocessore: ¾ ¾ Tassonomia dei sistemi multiprocessore; Architetture fondamentali; problematiche e prestazioni. - 47 - 20092009-10 Testi Sono disponibili in rete i lucidi del corso; Testo di riferimento: Hennessy-Patterson “Computer Architecture: a quantitave approach” (terza edizione – quarta edizione) Morgan-Kauffman ed. Testo di consultazione: D.E.Culler, J.P. Singh “Parallel Computer Architecture), MorganKauffman ed. Eventuali altri riferimenti bibliografici verranno indicati durante il corso. - 48 - 20092009-10 Modalità di esame L’esame consta di una parte scritta seguita (se superata) da un orale; L’orale può (a scelta dello studente) riguardare la materia del corso oppure essere la discussione di un articolo scientifico messo a disposizione dalla docente; Verranno proposti nel prosieguo del corso dei progetti: chi se ne fa carico può così sostituire parte dell’esame finale. - 49 - 20092009-10