Scienza dell’informazione Scuola di Specializzazione in Fisica Medica Lezione 3 Struttura di un computer Paolo Mastroserio 1 INDICE • La nascita dei calcolatori • La macchina di von Neumann • Il futuro: architetture non-von Neumann Paolo Mastroserio 2 I computer differiscono per … … dimensioni • • • • • • • Mainframe Minicalcolatori Workstation Desktop Portatili Palmari … Paolo Mastroserio … e per • Velocità • Capacità di memoria • Proprietà di ingresso/uscita • Software disponibile • … 3 Come le automobili … Le automobili, pur essendo diverse per dimensioni e prestazioni, hanno tutte la stessa tecnica di base e cioè hanno: – – – – Un motore a combustione interna L’alimentazione a benzina Un ruotante su un asse che fa girare le ruote … Paolo Mastroserio 4 Così tutti i calcolatori … Tutti i calcolatori, nessuno escluso, pur essendo molto diversi tra loro per dimensioni e prestazioni, sono basati su un unico modello teorico chiamato macchina di von Neumann Paolo Mastroserio 5 John von Neumann John von Neumann definì per la prima volta il concetto di elaboratore elettronico a programma memorizzato, la cosiddetta macchina di von Neumann. Neumann fu il primo a inquadrare in una teoria matematica coerente le macchine intelligenti e gli automi. Per questo è anche considerato ... IL PADRE DELL'INFORMATICA Paolo Mastroserio 6 L’EDVAC (Electronic Discrete Variable Computer) Nel 1946, John Von Neumann e altri realizzarono il primo vero computer: l'EDVAC (Electronic Discrete Variable Computer) dotato di un primo rudimentale "Sistema Operativo". Derivato dall'ENIAC, esso ne perfezionò il concetto di programmabilità, in quanto i programmi, anzichè essere inseriti dall'esterno, erano incorporati nella memoria della macchina e richiamabili a piacimento, grazie appunto al S.O. Paolo Mastroserio 7 Architettura di von Neumann L’architettura di una macchina di von Neumann è un modello basato su tre caratteristiche principali: 1. Un computer così costituito: • memoria • Processore (CPU) MEMORIA – unità aritmetico logica (ALU) – unità di controllo • unità di Ingresso/Uscita (I/O) I/O CPU = CONTROL UNIT + ALU 2. Il concetto di programma memorizzato 3. L’esecuzione sequenziale delle istruzioni Paolo Mastroserio 8 La memoria • RAM (Random Access Memory) – La ram è divisa in unità di dimensioni fisse chiamate celle e ad ognuna di queste è associato un identificatore intero positivo chiamato indirizzo – Gli accessi alla ram avvengono mediante gli indirizzi e le operazioni possono essere • di lettura (fetch) • di scrittura (store) – Il tempo di accesso alle celle è sempre lo stesso dovunque si trovino • ROM (Read Only Memory) – Le rom sono delle ram a cui è stata disabilitata la possibilità di scrittura Paolo Mastroserio 9 Quanto è grande una cella ? • L’unità di memoria è composta da celle con un numero fisso di bit • Il numero di bit è definito estensione della memoria e di solito si indica con la lettera W (word) • I primi calcolatori avevano valori di W = 6,8,12,16,24,30,32,36,48 e 60 bit • Oggi i costruttori non usano più il termine cella, diventato obsoleto, ma usano il termine byte come unità di base pari a 8 bit Paolo Mastroserio 10 Codifica dell’informazione • Con una cella a 8 bit l’intero più grande che si può scrivere è 255 • Per memorizzare dati utilizzando 16, 32 o 64 bit, i calcolatori con W=8 devono usare più celle, ovvero 2, 4 e 8 • Quelli con W=16 ne useranno 2 o 4 • È evidente che nei vari casi occorreranno numeri diversi di accessi alla memoria Paolo Mastroserio 11 Indirizzamento della memoria • Ogni cella di memoria è identificata univocamente da un numero che in binario sarà costituito da un certo numero N di bit • Con N bit utilizzabili, l’intero positivo massimo che si può ottenere è, in decimale, 2N-1 • Tale numero N è chiamato dimensione massima di memoria o spazio di indirizzamento di un calcolatore • Valori tipici di N sono 16, 20, 22, 24 e 32, 40 Paolo Mastroserio 12 Dimensioni massime indirizzamento memoria N. di bit Dim. Max RAM 16 65.536 (65 KB) 20 1.048.576 (1 MB) 22 4.194.304 (4 MB) 24 16.777.216 16 MB) 32 4.294.967.296 (4 GB) 40 1.099.511.627.776 (1 TB) Paolo Mastroserio 13 Ordini di grandezza Quantità N. di Byte 1 byte 100 1 kilobyte 103 1 megabyte 106 1 gigabyte 109 1 terabyte 1012 1 petabyte 1015 1 exabyte 1018 1 zettabyte Paolo Mastroserio 1021 Dimensione testo Un carattere Una pagina Due o tre racconti Una biblioteca personale Una biblioteca universitaria Tutte le biblioteche del Nord America Tutte le parole stampate nella storia dell’umanità 14 Indirizzo e contenuto • Non bisogna confondere la differenza tra indirizzo di una cella e il suo contenuto • Esistono operazioni che agiscono sugli indirizzi … • … e operazioni che agiscono sui contenuti di un indirizzo indirizzo 143 Paolo Mastroserio contenuto 435 15 Operazioni base sulla memoria • FETCH (indirizzo) recupera indirizzo e contenuto di una cella (fetch non distruttivo: il contenuto della memoria rimane invariato) • STORE (indirizzo, valore) memorizza il valore specificato nella memoria indicata dall’indirizzo (memorizzazione distruttiva) Paolo Mastroserio 16 I registri di memoria • I registri di memoria servono per implementare le operazioni di fetch e di store • Le operazioni di fetch e di store hanno bisogno di due operandi: – L’indirizzo della cella cui si deve accedere – Il valore da leggere o da scrivere Paolo Mastroserio 17 Il MAR e l’MDR MAR (Memory Address Register) – Contiene gli indirizzi delle celle – Deve avere una capacità di almeno N bit, dove 2N è lo spazio di indirizzamento del calcolatore MDR (Memory Data Register) – Contiene il valore dei dati da leggere o scrivere – La sua capacità è un multiplo di W (W=8) Paolo Mastroserio 18 Rivediamo l’operazione di FETCH • Carica l’indirizzo nel MAR • Decodifica l’indirizzo nel MAR • Copia il contenuto di quella locazione nell’MDR Paolo Mastroserio 19 Rivediamo l’operazione di STORE • • • • Carica l’indirizzo nel MAR Carica il valore nell’MDR Decodifica l’indirizzo nel MAR Memorizza il contenuto dell’MDR in quella locazione di memoria Paolo Mastroserio 20 Velocità di lettura/scrittura • Le operazioni di fetch e di store richiedono lo stesso tempo di esecuzione. • Questo tempo viene chiamato tempo di accesso alla memoria • Le attuali memorie possono eseguire operazioni di fetch e store in una decina di nsec Paolo Mastroserio 21 La CPU aspetta i dati dalla RAM … • Spesso succede che la CPU rimane inoperosa, in attesa che le vengano forniti dalla RAM i dati da elaborare • È possibile realizzare RAM più veloci ma costerebbero troppo, allora … Paolo Mastroserio 22 La memoria cache • Von Neumann nel suo modello incluse un solo tipo di memoria • I moderni calcolatori oltre alla RAM prevedono una o più memorie cache vicine al processore (L1, L2, … dell’ordine delle centinaia di kbyte o di qualche mega) • Le memorie cache hanno una velocità dalle cinque alle dieci volte superiore alle RAM Paolo Mastroserio 23 Il principio di località • Quando un programma effettua il fetch di un dato o di un’istruzione, vi è un’alta probabilità che esso, nell’immediato futuro, acceda alla stessa istruzione o dato. • Questa osservazione viene chiamata principio di località cioè, quando si usa un elemento, si pensa che molto probabilmente a breve verrà usato nuovamente. • Ciò suggerisce l’utilizzo di una memoria cache veloce e vicina al processore. Paolo Mastroserio #include <stdio.h> main() { int c; c = getchar(); while (c != 13) { putchar(c); c = getchar(); } } 24 Un tipo di architettura DDR Memory Controller L1 Instruction Cache Processor Core L2 Cache L1 Data Cache BUS Paolo Mastroserio 25 La RAM • RAM, acronimo usato nell‘informatica per Random Access Memory, è il supporto di memoria su cui è possibile leggere e scrivere informazioni con un accesso "casuale", ovvero senza dover rispettare un determinato ordine sequenziale, come ad esempio avviene per un nastro magnetico. • Termine correntemente attribuito a supporti di memoria a stato solido facenti parte dell‘hardware installato su un computer. • L'uso della memoria RAM è comune a tutte le archittetture hardware, sia monoprocessore che multiprocessore e costituisce la memoria primaria dell'elaboratore. Paolo Mastroserio 26 RAM privata e RAM primaria • A seconda dall'architettura usata, la CPU può accedere direttamente alla memoria oppure accedervi tramite appositi controller. • Nel caso di sistemi multiprocessore, la memoria primaria può essere condivisa da più processori oppure può essere partizionata, nel qual caso ogni processore dispone di una sua memoria privata. • Esistono anche architetture miste dove è presente sia una memoria primaria condivisa da tutti i processori che una memoria privata dedicata ad ognuno di essi. Paolo Mastroserio 27 CPU e RAM • Il processore carica dalla RAM, quando non presenti nella sua cache interna, le istruzioni da eseguire e i dati da elaborare per poi riscriverli nuovamente in RAM. • Poiché generalmente la RAM è più lenta del processore, la sua velocità è un fattore determinante per le prestazioni dell'intero calcolatore. Paolo Mastroserio 28 La RAM: memoria volatile • Caratteristica comune a tutti i tipi di RAM utilizzati per la memoria principale è quella di perdere il proprio contenuto nel momento in cui viene a mancare la corrente elettrica che le alimenta. • Sono allo studio altri tipi di memoria, basati su altri principi, che in futuro potrebbero consentire di superare questa limitazione. Paolo Mastroserio 29 Errori della RAM • Può accadere che, per interferenze interne al computer, un singolo bit della RAM cambi spontaneamente stato, passando a quello opposto. • Alcune ricerche hanno dimostrato che la maggior parte degli errori della RAM contenuti in un singolo bit sono causati da raggi cosmici, che possono cambiare il contenuto di una o più celle della memoria, o interferire col circuito di lettura/scrittura. • C'è la preoccupazione che con la miniaturizzazione di questa memoria e la diminuzione della tensione dei suoi circuiti, questi eventi possano accadere con frequenza sempre più alta, dato che particelle con minore energia potrebbero riuscire a interferire e provocare errori. • D'altro canto la miniaturizzazione rende le celle "bersagli" meno facili per queste particelle e quindi compensare questo fenomeno. Paolo Mastroserio 30 ECC: Error-Correcting Code • Nei sistemi cui è richiesta altissima affidabilità (per esempio server) o che sono esposti in modo particolare a radiazioni (satelliti) vengono usati moduli speciali di RAM, che includono bit extra di memoria: i controllori ECC possono così correggere gli errori che possono capitare. Paolo Mastroserio 31 Legge di crescita delle DRAM • Le RAM hanno avuto una notevole e costante crescita sia in termini di capacità che (in misura minore) di velocità di accesso. • L'industria delle RAM ha quadruplicato la capacità di memoria ogni 3 anni. Questa è stata chiamata la legge di crescita delle RAM. • Questa crescita è molto simile a quella conosciuta come legge di Moore in cui dall'osservazione empirica risulta che l'evoluzione elettronica porta a un raddoppio della capacità elaborativa dei computer ogni 18 mesi. • La legge di Moore si è mantenuta vera fino ad oggi, ma arriverà un momento in cui si andrà incontro al limite fisico dei materiali. Paolo Mastroserio 32 Prestazioni: le CPU superano le RAM • Anche se la crescita della capacità di memoria è andata di pari passo con l'incremento delle prestazioni dei processori, un problema grave è rimasto nel tempo di accesso: in origine le CPU funzionavano a frequenze simili a quelle delle memorie, ma negli ultimi anni il loro aumento di velocità è stato molto più rapido. • Un processore moderno funziona a frequenze anche 10 volte più elevate di quelle della RAM che gli fornisce i dati, creando un ovvio collo di bottiglia nell'esecuzione dei programmi. • Lo sviluppo di grandi memorie cache ha permesso di risolvere, sebbene solo in parte, questo problema (cache L1 e L2); il divario si va assestando sul 50% annuo). Paolo Mastroserio 33 Le RAM statiche: SRAM • Static Random Access Memory, ovvero RAM statica. In questo tipo di RAM ogni cella è costituita da un "flip flop" realizzato da due porte logiche. • Consentono di mantenere le informazioni per un tempo infinito, sono molto veloci, consumano poco e quindi dissipano poco calore. La necessità di usare molti componenti, però, le rende molto costose e difficili da impacchettare. • Sono solitamente usate per le memorie cache, dove elevate velocità e ridotti consumi sono caratteristiche fondamentali. Paolo Mastroserio 34 Alcuni tipi di RAM (da aggiornare continuamente) Tipo n. Pin Alim.in Volt BUS: n. Bit MHz I/O GByte/s DRAM 168 5 32 66 .528 SDRAM 168 3.3 64 100 .800 DDR SDRAM 184 2.5 64 100 1.6 DDR SDRAM 184 2.5 64 133 2.1 DDR SDRAM 184 2.5 64 166 2.7 DDR SDRAM 184 2.5 64 200 3.2 DDR2 SDRAM 184 1.8 64 200 3.2 DDR2 SDRAM 184 1.8 64 266 4.2 DDR2 SDRAM 184 1.8 64 333 5.3 DDR2 SDRAM 184 1.8 64 400 6.4 DDR2 SDRAM 667 nuove DDR3 SDRAM 184 1.2÷1.5 64 .8÷1.5 GHz ? (da annunciare) Paolo Mastroserio 35 Il controllore di I/O Processore RAM • Si occupa delle fasi di I/O sgravando il processore del carico di lavoro e dell’attesa di fine operazione. Buffer di I/O Controllo /logica • Usa: – Segnali di interrupt – Controllori di flusso Paolo Mastroserio I/O device 36 I BUS • Il bus è un canale attraverso cui diversi componenti elettronici (quali ad esempio le varie parti di un computer) dialogano fra loro; si tratta di una serie di connessioni elettriche ognuna delle quali può trasmettere cifre binarie (0 o 1) in successione • I dati trasmessi vengono interpretati dai vari componenti del sistema secondo protocolli prestabiliti. • Un bus che collega 2 componenti appartenenti alla stessa scheda integrata è detto bus interno (internal bus) (di solito proprietario), se collega due componenti generici è detto bus esterno (external bus). Se c’è un solo bus esterno è detto bus di sistema (system bus) • Il bus di sistema si divide in tre bus minori: – bus dati – bus indirizzi – bus controlli Paolo Mastroserio 37 Il BUS dati • È il bus sul quale transitano le informazioni • È usufruibile da tutti i componenti del sistema, sia in scrittura sia in lettura Paolo Mastroserio 38 Il BUS indirizzi • È il bus attraverso il quale la CPU decide in quale indirizzo andare a scrivere o a leggere informazioni; sia le celle di memoria (RAM) sia le periferiche di I/O (Input/Output) sono infatti divise in zone, ognuna delle quali ha un dato indirizzo. • Dopo aver comunicato l'indirizzo tramite, la scrittura o lettura avviene normalmente tramite il bus dati. Naturalmente questo bus è fruibile in scrittura solo dalla CPU ed in lettura dagli altri componenti, in quanto tramite questo bus viene dato solo l'indirizzo della cella, che è deciso dalla CPU. Paolo Mastroserio 39 Il BUS controlli • Il bus controlli è un insieme di collegamenti il cui scopo è coordinare le attività del sistema; tramite esso, la CPU può decidere quale componente deve scrivere sul bus dati in un determinato momento, quale deve leggere l'indirizzo sul bus indirizzi, quali celle di memoria devono scrivere e quali invece leggere, etc. • La memoria e tutti gli altri componenti comunicano con la CPU attraverso un unico bus condiviso; questo significa che senza un controllo da parte dalla CPU si verrebbero a creare dei conflitti e delle collisioni • Il motivo per cui gli elaboratori dispongono in genere di un solo bus è semplice: l'architettura a più bus, proposta teoricamente agli albori dell'informatica da John von Neumann, non è praticamente realizzabile, visto l'altissimo numero di connessioni che sarebbero necessarie. Paolo Mastroserio 40 Il BUS PCI PCI • PCI: acronimo di Peripheral Component Interconnect Bus • Bus di sistema PC, (ma anche Apple, Sun). Sviluppato dalla Intel nel 1992 (in sostituzione del bus ISA). • Nasce Frequenza 33 MHz a 32 bit, larghezza di banda 133 MB/s • Il trasferimento che avviene attraverso un bus PCI è parallelo ed è composto da una fase di indirizzamento e da una o più fasi di dato. Paolo Mastroserio 41 Il BUS AGP (1) AGP PCI • L'Accelerated Graphics Port (AGP) è stata sviluppata da Intel nel 1996 come modo per aumentare le prestazioni e velocità delle schede grafiche connesse ai PC • Si basa sullo standard PCI 2.1, e per questo la frequenza base a cui opera è di 66 MHz. • Il trasferimento dei dati avviene in modalità parallela, per cui non è possibile una comunicazione bidirezionale contemporanea. Paolo Mastroserio 42 Il BUS PCI Express • Il PCI Express è il successore (seriale) del bus di espansione PCI (parallelo) e sarà destinato a sostituire il bus AGP fino ad ora in uso per le schede grafiche. • Chiamato PCI-Express è in genere abbreviato in PCIe o PCIx (da non confondere con PCI-X che si trova in molte Mother Board attualmente in commercio). • L'architettura è completamente differente dal bus PCI classico. • E’ costituito da una serie di canali. Ciò consente una notevole modularità, in quanto possono essere aggregati più canali per aumentare la banda passante disponibile o per supportare particolari configurazioni come l'utilizzo di due o più schede video. Inoltre la bandwidth di ciascun canale è indipendente da quella degli altri. • Un canale PCIe ha una banda disponibile di 266 MByte/sec. • Nelle moderne schede video che utilizzano 16 canali PCIe la banda a disposizione è di circa 4 GByte/sec (il doppio del bus AGP 8x). Paolo Mastroserio 43 Il BUS USB • Bus per il collegamento di periferiche lente • Sviluppato nel ‘95 da un consorzio: Compact, HP, Intel, Lucent, Microsoft, Nec, Philips • Carateristiche: flessibilità, semplicità; un unico bus per molte periferiche; non sono necessari dispositivi di controllo e porte dedicate; facilmente espandibile; economico; connessioni a caldo; supporto dispositivi tempo reale (audio - telefono). • Il cavo è composto da 4 fili: massa, alimentazione (5V), Dati+, Dati• Larghezza di banda: – USB 1.0: 1,5 Mbit/s; – USB 1.1: 12 Mbit/s; – USB 2.0: 480 Mbit/s. Paolo Mastroserio 44 Il BUS SCSI • SCSI: acronimo di Small Computer System Interface • Collegamento per dispositivi interni o esterni al computer: dischi rigidi (dischi SCSI), ma anche CD - DVD – unità nastro - stampanti. • versioni: SASI (’79), SCSI-1, SCSI-2, Fast SCSI-2, Fast & wide SCSI-2, SCSI-3 Ultra, Ultra wide SCSI • frequenze: 5 – 10 – 20 – 40 – 80 – 160 MHz • linee di dati: 8 - 16 line • banda passante 5 - 320 MB/sec • Collega sino a 7- 15 controllori (unità) e massimo 2048 periferiche per controllore. • Collegamento a cascata, con terminatore. • Parte della logica delegata ai controllori. 50 fili - 25 di massa per eliminare disturbi (8 dati — 1 parità — 9 controllo — 7 alimentazione e usi futuri) • Asincrono: con protocollo di hand-shake Paolo Mastroserio 45 Il BUS Fire Wire (IEEE 1394) • Molte similitudini con l’USB: bus seriale con alimentazione (60W), sviluppato da un consorzio di aziende (1984 - Apple, 1995 Standard, ma con Royalties), connessioni a caldo, meccanismi di identificazione Paolo Mastroserio 46 Esempio di un disco magnetico • Ogni byte ha un unico indirizzo • Il tempo di accesso dipende dalla locazione fisica del byte e dallo stato corrente del dispositivo traccia Byte Il tempo di accesso dipende da • Tempo di ricerca: tempo che la testina impiega per raggiungere la traccia • Latenza: tempo necessario perché il settore ruoti sotto la testina • Tempo di trasferimento: tempo di lettura/scrittura Paolo Mastroserio settore 47 Un esempio reale • Velocità di rotazione: 7200 rpm, 10000 rpm, 15000 rpm (rpm = ring per minute) • Spostamento braccio: .02 msec • Numero tracce per superficie: 1000 • Numero di settori per tracce: 50 • Numero byte per settore: 512 Paolo Mastroserio 48 La riduzione delle dimensioni dei dischi rigidi richiede miglioramenti della tecnologia Paolo Mastroserio 49 Metodo longitudinale di magnetizzazione magnetica Paolo Mastroserio 50 Metodo perpendicolare di magnetizzazione magnetica Paolo Mastroserio 51 Tecnologie longitudinali e perpendicolari a confronto Perpendicular Longitudinal Lower Pole Return Pole Upper Pole Main Pole readelement Field from Narrow Gap write coil readelement Hard Recording Layer Soft Magnetic Underlayer • Il materiale del disco può essere più sottile • Un secondo strato sottostante permette una maggiore stabilità Paolo Mastroserio 52 Dischi rigidi di diverse dimensioni 1 inch Microdrive 1.8 inch Mobile 2.5 inch Mobile ATA & Serial ATA 3.5 inch ATA & SATA 3.5 inch SCSI, FC 8GB in previsione dischi da 60GB Pensato anche per cellulari, videocamere, lettori mp3 ecc. Paolo Mastroserio 53 La tecnologia RAID • La sigla RAID sta per Redundant Arrays of Independent Disks. (Schiere Ridondanti di Dischi Indipendenti) • Nel 1987 tre ricercatori della California University a Berkeley, Patterson, Gibson e Katz definirono 5 modi diversi di gestione di gruppi di hard disk. • Nel 1989 poi, gli stessi autori definirono altri due tipi di modalità di gestione degli array: il RAID 0 e il 6. • Le differenze tra l'uno e l'altro tipo ne determinano l'uso e le prestazioni. Paolo Mastroserio 54 RAID 5 (il più usato) • In RAID 5 i dati di verifica sono distribuiti sui vari dischi di seguito ai dati normali senza un disco dedicato esclusivamente ad essi anche se di fatto è necessaria l'equivalente presenza di un disco in più per gestire un array in RAID 5. Anche per il RAID 5 infatti sono necessari alla gestione di un array N+1 dischi. • Nella tabella sono riportati 4 stripe di dati composti da dati e controlli scritti di seguito distribuiti sui 4 dischi componenti dell'array che risulta così ad accesso indipendente con le informazioni di parità scritte e leggibili nella stessa operazione di scrittura o lettura essendo poste subito dopo i dati alle quali si riferiscono. Si raggiungono così velocità più che soddisfacenti anche in ambiente tipici dei server tanto è vero che il RAID 5 è la configurazione più usata in questo campo. Paolo Mastroserio 55 Le unità ad accesso sequenziale • Le unità a nastro dei computer si comportano esattamente come le cassette audio • Non sono molto utili per la gestione veloce dei dati • Si utilizzano principalmente per le copie di sicurezza (back-up) Paolo Mastroserio 56 Lentezza delle memorie di massa • RAM: tempo di accesso 50 10 ns • HD: tempo di accesso 10 ms • È del tutto evidente che questa differenza tra la velocità di una ram e i tempi di accesso a un disco rigido comporterebbe dei tempi di attesa inaccettabili per il processore Paolo Mastroserio 57 Il processore • CPU = Central Processor Unit • L’ALU e la CU oggi sono integrate in un unico componente chiamato processore. • Sono concettualmente diverse e pertanto verranno trattate in maniera separata Paolo Mastroserio 58 L’unità aritmetico/logica • L’ALU (Arithmetic Logic Unit) è il sottosistema che esegue le operazioni matematiche e logiche: – Addizione – Sottrazione – Confronto di uguaglianza Paolo Mastroserio 59 L’unità di controllo • Compito della CU (Control Unit) è di: – Eseguire il fetch (lettura) da memoria dell’istruzione da eseguire – Decodificarla – Eseguirla Paolo Mastroserio 60 L’ALU • L’ALU è composta di tre parti: – I registri – I collegamenti tra i componenti – La circuteria ALU Paolo Mastroserio 61 I registri • Il registro è una cella di memorizzazione che contiene gli operandi di un’operazione matematica • A operazione finita contiene i risultati Paolo Mastroserio 62 Differenza tra registro e RAM • Non hanno un indirizzo, sono accessibili da un designatore di registro come A, B, X, Y o R0 • Viene utilizzata una costosa circuteria per accedervi, sono raggiungibili in un tempo dalle due alle dieci volte inferiore rispetto a una RAM • Non servono per la memorizzazione generica ma per effettuare calcoli Paolo Mastroserio 63 Processori moderni • Processori come l’Alpha o il PowerPC hanno poche istruzioni macchina, dalle 30 alle 50 • Questo approccio minimizza la quantità di circuiteria hardware (porte logiche, transistor, ecc.) necessaria per costruire un processore • Un programma scritto per una macchina risc può richiedere più istruzioni per risolvere un problema • Ciò è compensato dal fatto che lo spazio sul chip risparmiato rende le istruzioni eseguibili più velocemente Paolo Mastroserio 64 Processori e sistemi operativi • I sistemi operativi unix-like, costituiti da un numero esiguo di funzionalità di base, risultano l’ideale per essere installati su processori di tipo risc • Costruttori di processori di tipo cisc tuttavia, vantavano prestazioni competitive anche con sistemi operativi di tipo unix Paolo Mastroserio 65 La Controll Unit • L’Unità di Controllo effettua le seguenti operazioni: – Trasferimento dati – Operazioni aritmetiche – Confronti Paolo Mastroserio 66 Riepilogo: computer fino agli anni ‘50 USA - GB Germania Usa: 1931-1944 Mark I – Marina Militare, Harvard University, dismesso nel 1959 Usa: 1939-1942 ABC (Atanasoff-Berry Computer), calcoli matematici GB: Colossus (Turing) Enigma Usa: 1943 Eniac Z1 (Konrad Zuse), simile all’Eniac, mai portato a termine Usa: 1946÷1950 Edvac (von Neumann) Edsac USA: 1951 Univac I (primo calcolatore ad essere venduto) Paolo Mastroserio 67 Generazioni di computer Prima (1950-1959) Seconda (1959-1965) Terza (1965-1975) Quarta (1975-1985) Quinta (1985-oggi) • Prime vendite • Primi linguaggi simbolici • Uso aritmetica binaria • Uso valvole • Prime schede perforate • Transistor • Riduzione dimensioni • Primi dischi • Primi linguaggi ad alto livello • Primi sistemi operativi • Nascita circuiti integrati • Ulteriore riduzione dimensioni • Primi minicalcolatori • Time sharing • Industria del software • Primi standard • LSI, VLSI • Ulteriore riduzione dimensione • Primi microcalcolatori • Nuovo software • Reti • Interfacce grafiche • ULSI • Supercalcolatori • Workstation • Palmari • WiFi • Tera-byte online • Intelligenza artificiale • Sistemi multimediali Paolo Mastroserio 68 Grafico della velocità dei calcolatori negli anni Paolo Mastroserio 69 Douglas Engelbart: l’inventore del mouse • Nel 1968, a 43 anni, Engelbart presenta la sua invenzione: un mouse in legno e con delle rotelline • Engelbart non ha solo agevolato l’uomo nell’utilizzo della macchina, ma ha costretto il progresso ad essere più attento alle esigenze dell’utente, rivoluzionando completamente il concetto di interfaccia. • Secondo Engelbart la tecnologia deve seguire le esigenze dell’uomo e adattarsi a lui, non vice versa. • Una filosofia rivoluzionaria alla base di un’idea altrettanto rivoluzionaria Paolo Mastroserio 70 Evoluzione dei PC Periodo MHz anni 80 1 2 anni 90 anni 00 12 25 75 100 200 400 600 800 1000 2000 3000 3800 Paolo Mastroserio BUS ISA AT MCA EISA PCI (AGP) RAM Floppy HD 64 KB 128 KB 256 KB 512 KB 1 MB 2 MB 4 MB 8 MB 16 MB 32 MB 64 MB 128 MB 256 MB 512 MB 1 GB 2 GB 4 GB > 8 GB 80 kB 1.4 MB 5 MB 10 MB 20 MB 40 MB 80 MB 170 MB 512 MB 1 GB 2 GB 4 GB 9 GB 18 GB 36 GB 75 GB 120 GB 250 GB 500 GB > 500 GB 71 Il futuro dei calcolatori • Si è visto che fino agli anni ’80 la crescita delle prestazioni dei calcolatori è stata esponenziale, successivamente si è avuto un calo; i motivi sono: – limite fisico della velocità dei processori – limite fisico nell’avvicinare le porte logiche tra loro • Nei chip VLSI le porte logiche sono distanti 3·10-6 metri • Al rallentare del tasso di crescita delle prestazioni delle macchine aumenta la dimensione dei problemi che si vuole risolvere Paolo Mastroserio 72 Elaborazione di filmati – Occorrono 24 frame al secondo – Ogni frame contiene generalmente 1000x1000 punti (pixel) – Per ogni pixel bisogna calcolare posizione colore e intensità – Per ogni secondo vanno elaborati 24.000.000 di pixel – Per il calcolo di ogni pixel occorrono diverse dozzine di istruzioni L’impossibilità del modello di von Neumann, che si basa sull’esecuzione di istruzioni in sequenza, di gestire problemi su larga scala, è detta collo di bottiglia di von Neumann Paolo Mastroserio 73 IPC: Instructions Per Cycle • L’aumento delle prestazioni dei processori non può essere più incentrato su aumenti della frequenza di clock • I consumi e le conseguenti necessità di dissipare enormi quantità di energia per mm2 rendono questa strada ormai quasi sbarrata intorno ai 4 GHz • I progettisti avevano cercato nuovi metodi e tecniche per aumentare il numero di istruzioni da eseguire per ogni ciclo di clock • Un metodo era quello di aumentare la dimensione in termini di bit dei registri (128), per potervi registrare più istruzioni da eseguire contemporaneamente • Questo approccio richiedeva lo sfruttamento di grosse aree sul silicio del processore e aumentava comunque la complessità dell’architettura con conseguente aumento dei costi di produzione Paolo Mastroserio 74 Architetture non – von Neumann Se non riesci a costruire qualcosa che funzioni a una velocità doppia, fai due cose contemporaneamente. Il risultato sarà identico SISD Single Instruction stream - Single SIMD Single Instruction stream - Multiple Data stream MISD Multiple Instruction stream - Single Data stream Data stream MIMD Multiple Instruction stream - Multiple Data stream Paolo Mastroserio 75 Il modello SIMD Nel modello SIMD esiste un solo programma in cui le istruzioni subiscono il ciclo fetch/decodifica/esecuzione in modo sequenziale mediante una sola unità di controllo. L’ALU viene replicata, ciascuna con una propria memoria Paolo Mastroserio CONTROL UNIT BUS ALU ALU ALU ALU MEM MEM MEM MEM 76 Il modello MIMD Nel modello MIMD, sono replicati tutti i processori e non soltanto l’ALU. Ogni processore è in grado di eseguire il proprio programma nella propria memoria alla propria velocità Paolo Mastroserio Rete di interconnessione CPU CPU CPU CPU MEM MEM MEM MEM 77 Tecnologia Dual-Core Da anni si è sviluppata una strada completamente diversa per aumentare le prestazioni dei sistemi di elaborazione di dati: utilizzare più nuclei di elaborazione all’interno dello stesso processore Paolo Mastroserio CPU0 CPU1 1MB L2 Cache 1MB L2 Cache System Request Interface Crossbar Switch Memory Controller HT0 HT1 HT2 78 Considerazioni sulla tecnologia Dual-Core • Un problema che si incontra con la tecnologia dual core è dato dal problema della condivisione delle risorse • Analizziamo alcune soluzioni Paolo Mastroserio 79 Soluzioni dual core a confronto Core 0 Core 1 Cache Cachefor for Core Core1 1 Memory Controller Cache for Cache for Core Core 0 0 BUS Core 0 BUS BUS Core 1 BUS RAM I/O Chipset I/O Chipset RAM other I/O links Paolo Mastroserio other I/O links 80 Gestione dei colli di bottiglia RAM CPU RAM 8 GB/S CPU CPU CPU 8 GB/S I/O Hub Memory PCI-E Controller Bridge Hub PCI-E Bridge PCI-E Bridge PCI-E Bridge 8 GB/S PCI-E Bridge PCI-E Bridge 8 GB/S USB I/O Hub PCI RAM Paolo Mastroserio 81 Come si misurano le prestazioni di un calcolatore ? • Non è facile stabilire in maniera oggettiva quale processore è più performante di un altro • La risposta può variare anche dalle specifiche esigenze di elaborazione di un singolo utente • Le prestazioni dipendono comunque dall’architettura generale dell’intero sistema e non solo da un suo singolo componente (es.: il processore) • Per avere qualche risposta si può consultare il sito www.spec.org Standard Performance Evaluation Corporation • Le valutazioni vengono effettuate facendo girare programmi di test utilizzando numeri interi (SPECint) e in virgola mobile (SPECfp) Paolo Mastroserio 82 Cos’è un benchmark ? • Un “computer benchmark” serve per valutare le prestazioni di un computer; è un programma che esegue un insieme di operazioni detto workload (carico di lavoro) e fornisce come risultato una metrica. Paolo Mastroserio 83 SPEC CPU • Spec CPU misura: – I processori (CPU) – L’architettura della memoria – I compilatori • Spec CPU si divide in: – CINT: Compute-intensive Integer – CFP: Compute-intensive Floating Point Paolo Mastroserio 84 I limiti dei benchmark • Servizi di sistema, attività di I/O, numero di dischi, ecc. possono influire sulle prestazioni generali • Nessun benchmark standardizzato potrà mai fornire un modello perfetto per tutte le realtà e comunità di utenti Paolo Mastroserio 85 Versioni di SPEC CPU • SPEC ha dichiarato obsoleta la suite 2000 • Le versioni pubblicate sono state: – CPU92 – CPU95 – CPU2000 • Da giugno è uscito CPU 2006 ma non ci sono ancora molti risultati Paolo Mastroserio 86 CINT2006: gli algoritmi di benchmark 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Paolo Mastroserio C C C C C C C C C C++ C++ C++ PERL Programming Language Compression C Compiler Combinatorial Optimization Artificial Intelligence: go Search Gene Sequence Artificial Intelligence: chess Physics: Quantum Computing Video Compression Discrete Event Simulation Path-finding Algorithms XML Processing 87 CFP2006: gli algoritmi di benchmark 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Paolo Mastroserio Fortran Fortran C Fortran C/Fortran C/Fortran Fortran C++ C++ C++ C++ C/Fortran Fortran Fortran C C/Fortran C Fluid Dynamics Quantum Chemistry Physics: Quantum Chromodynamics Physics/CFD Biochemistry/Molecular Dynamics Physics/General Relativity Fluid Dynamics Biology/Molecular Dynamics Finite Element Analysis Linear Programming, Optimization Image Ray-tracing Structural Mechanics Computational Electromagnetics Quantum Chemistry Fluid Dynamics Weather Prediction Speech recognition 88 Come compilare i benchmark? • SPEC produce i codici sorgenti dei suoi benchmark che poi vanno compilati • Ci sono varie opzioni di compilazione per ottimizzare e migliorare le prestazioni degli eseguibili • Occorre allora fissare delle specifiche precise di compilazione per poi confrontare tra loro i codici eseguibili Paolo Mastroserio 89 Base Metric e Peak Metric • Base Metric: le flag di compilazione sono rigidamente assegnate e sono indicate con un preciso ordine prestabilito • Peak Metric: le flag di compilazione sono libere, dipendono dai singoli compilatori e ottimizzano al massimo il codice eseguibile Paolo Mastroserio 90 Le metriche della SPEC SPEC INT SPECint2006 SPECint_base2006 SPECint_rate2006 SPECint_rate_base2006 SPEC FP SPECfp2006 SPECfp_base2006 SPECfp_rate2006 SPECfp_rate_base2006 Paolo Mastroserio tuning peak note Media geometrica di 12 rapporti normalizzati base Media geometrica di 12 rapporti normalizzati peak Media geometrica di 12 rapporti normalizzati base Media geometrica di 12 rapporti normalizzati tuning peak note Media geometrica di 17 rapporti normalizzati base Media geometrica di 17 rapporti normalizzati peak Media geometrica di 17 rapporti normalizzati base Media geometrica di 17 rapporti normalizzati 91 Esempi di SPECint2000 SPECint ® 2000 MHz Processor Name Submitting company Submission system 1666.0 3400.0 MHz Pentium 4 HT Extreme Edition Intel Corporation Intel D875PBZ motherboard (AA-206)(3.4 GHz, Pentium 4 Proces 1583.0 3200.0 MHz Pentium 4 HT Intel Corporation Intel D875PBZ (AA-206) motherboard (3.2 GHz, Pentium 4 proce 1570.0 3200.0 MHz Pentium 4 Dell Precision Workstation 360 (3.2 GHz Pentium 4 Extreme Edition 1570.0 3066.0 MHz Pentium Xeon Dell Precision Workstation 360 (3.2 GHz Pentium 4 Extreme Edition 1532.0 3200.0 MHz Xeon Dell Precision Workstation 650 (3.20 GHz Xeon, 2MB L3 Cache) 1408.0 1500.0 MHz Itanium 2 Hewlett-Packard Company HP Integrity Server rx2600 (1500 MHz, Itanium 2) 1405.0 2200.0 MHz Opteron Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) 148 1379.0 3000.0 MHz Xeon MP Dell PowerEdge 6600 (3.0 GHz Xeon MP) 1376.0 2200.0 MHz Athlon FX 51 Advanced Micro Devices ASUS SK8N Motherboard, AMD Athlon (TM) FX-51 1289.0 2000.0 MHz Opteron 146 HE Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) Model 146 HE 1266.0 2000.0 MHz Athlon 64 Advanced Micro Devices MSI K8 Neo (MS-6702) Motherboard, AMD Athlon (TM) 64 3200+ 1099.0 1500.0 MHz Itanium2 Dell Dell PowerEdge 3250 (1.5GHz/6MB, Itanium2) 1077.0 1700.0 MHz POWER4+ IBM Corporation IBM eServer pSeries 690 Turbo (1700 MHz, 1 CPU) 1044.0 2200.0 MHz Athlon XP Advanced Micro Devices ASUS A7N8X Motherboard rev. 2.0, AMD Athlon (TM) XP 3200+ 960.0 2167.0 MHz Athlon Advanced Micro Devices ASUS A7N8X Deluxe Motherboard, AMD Athlon (TM) XP 3000+ 960.0 2167.0 MHz Athlon AXDA3000DKV4D Advanced Micro Devices ASUS A7N8X Deluxe Motherboard, AMD Athlon (TM) XP 3000+ 948.0 1400.0 MHz Opteron 140 EE Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) Model 140 EE 845.0 1250.0 MHz Alpha Hewlett-Packard Company hp AlphaServer ES45 68/1250 822.0 1300.0 POWER4 IBM Corporation IBM eServer pSeries 655 Model Paolo Mastroserio 92 Esempi di SPECfp2000 SPECfp ® 2000 MHz Processor Name Submitting company Hewlett-Packard Company Submission system 2161.0 1500.0 MHz Itanium 2 1875.0 1500.0 MHz Itanium 2 Dell Dell PowerEdge 3250 (1.5GHz/6MB, Itanium2) 1642.0 1700.0 MHz POWER4+ IBM Corporation IBM eServer pSeries 655 (1700 MHz, 1 CPU) 1548.0 3400.0 MHz Pent ium 4 HT Extreme Edition Intel Corporation Intel D875PBZ motherboard (AA301) (3.4 GHz, Pentium 4 Proce 1505.0 2200.0 MHz Opteron Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) 148 1497.0 3200.0 MHz Pent ium 4 Dell Precision Workstation 360 (3.2 GHz Pent ium 4 Extreme Edition 1434.0 3200.0 MHz Pent ium 4 HT Intel Corporation Intel D875PBZ motherboard (AA301) (3.2E GHz, Pentium 4 Proc 1371.0 2200.0 MHz Athlon FX 51 Advanced Micro Devices ASUS SK8N Motherboard, AMD Athlon (TM) FX-51 1338.0 3200.0 MHz Xeon Dell Precision Workstation 650 (3.20 GHz Xeon, 2MB L3 Cache) 1306.0 2000.0 MHz Opteron 146 HE Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) Model 146 HE 1270.0 3000.0 MHz Xeon MP Dell PowerEdge 6600 (3.0 GHz Xeon MP) 1207.0 3200.0 MHz Pent ium Xeon Dell PowerEdge 2650 (3.2 GHz Xeon, 1MB L3) 1202.0 1300.0 MHz POWER4 IBM Corporation IBM eServer pSeries 690 Turbo (1300 MHz) 1180.0 2000.0 MHz Athlon 64 Advanced Micro Devices MSI K8 Neo (MS-6702) Motherboard, AMD Athlon (TM) 64 3200+ 1124.0 1150.0 MHz Alpha Hewlett-Packard Company AlphaServer GS1280 7/1150 1096.0 1350.0 MHz SPARC64 V Fujitsu Limited PRIMEPOWER650 (1350MHz) 1012.0 1400.0 MHz Opteron 140 EE Advanced Micro Devices ASUS SK8N Motherboard, AMD Opteron (TM) Model 140 EE 954.0 1280.0 MHz UltraSPARC IIIi Sun Microsystems Sun Fire V250 (1.28GHz) 953.0 1200.0 MHz UltraSPARC III Cu Sun Microsystems Sun Blade 2000 (1.2GHz) 873.0 2200.0 MHz Athlon XP Advanced Micro Devices ASUS A7N8X Motherboard rev. 2.0, AMD Athlon (TM) XP 3200+ 776.0 2167.0 Athlon Advanced Micro ASUS A7N8X Deluxe Paolo Mastroserio HP Integrity Server rx4640 (1500 MHz, Itanium 2) 93 Considerazioni finali • Gli algoritmi di SpecCPU2000 sono diversi da SpecCPU2006 • Le unità di misura sono diverse • Dai benchmark si evince che il clock del processore non è l’unico parametro per valutare le prestazioni di un computer • Al crescere dei core e dei chip l’incremento delle prestazioni non è lineare • Ogni computer va quindi valutato nel suo complesso! Paolo Mastroserio 94