L’elaboratore 01.a Un po’ di storia Storia del calcolo automatico 1 Legata allo sviluppo della tecnologia: ● Generazione -1: La preistoria ● Generazione 0: Meccanica ● Generazione 1: Elettromeccanica ● Generazione 2: Valvole termoioniche ● Generazione 3: Transistors ● Generazione 4: Circuiti integrati ● Generazione 5: VLSI Architettura degli Elaboratori 51 ????-1642 1642-1935 1935-1945 1945-1955 1955-1965 1965-1980 1980-???? © 2009 Generazione -1: preistoria (…-1642) Oggetti usati come strumenti di calcolo (es: conchiglie per rappresentare pecore) 2 51 = stessa cardinalità = rappresentano lo stesso numero © 2009 Architettura degli Elaboratori Generazione -1: preistoria (…-1642) operazioni aritmetiche come procedure “manuali”: A rappresentazione del numero “2” B rappresentazione del numero “1” 3 51 B rappresentazione del numero “3” Procedura: sposta il contenuto del sacco A nel sacco B Risultato: il sacco B contiene ora la rappresentazione di … Nome della procedura manuale : “addizione di numeri interi” Architettura degli Elaboratori © 2009 Generazione -1: preistoria (…-1642) Osservazioni: • manipolando conchiglie, si possono manipolare numeri… • e fare calcoli (addizioni, sottrazioni…) 4 51 • procedure semplici, soggette ad errore, lente Architettura degli Elaboratori Generazione -1: preistoria (…-1642) © 2009 5 Meccanismo più sofisticato: l’abaco (2700 aC) 51 usa il concetto di notazione posizionale. Valore delle cifre Peso di ciascuna cifra (potenze di 10) Architettura degli Elaboratori © 2009 Generazione -1: preistoria (…-1642) 6 Solo più tardi il far di conto diventa un processo astratto che utilizza numeri rappresentati in 51 forma scritta da simboli (cifre). Le procedure per eseguire le operazioni aritmetiche sono eseguite su … papiro. 111 – 010 = 101 Si possono fare operazioni più complesse. Procedure ancora manuali, ma più veloci. Ancora soggette ad errore meno che con le conchiglie! © 2009 Architettura degli Elaboratori Generazione -1: preistoria (…-1642) 7 Nel IX secolo: Muhammad ibn Musa 51 Al-Khwārizmī sviluppa il concetto di definizione scritta di un procedimento da seguire per ottenere un risultato XIII secolo, traduzione latina: algoritmo Architettura degli Elaboratori © 2009 Generazione -1: preistoria (…-1642) 8 Per secoli il problema principale era stato: come riuscire ad eseguire 51 9Un dato algoritmo 9In modo non-manuale (automatico) 9Possibilmente più velocemente che a mano 9Possibilmente più affidabile (senza errori) Architettura degli Elaboratori Generazione -1: preistoria (…-1642) Codex Madrid - Leonardo Da Vinci (~1500) − scoperto per caso a Madrid nel 1967 − progetto di un calcolatore meccanico...? Architettura degli Elaboratori © 2009 9 51 © 2009 Generazione -1: preistoria (…-1642) 10 Codex Madrid - Leonardo Da Vinci (~1500) ● Guatelli (New York) lo costruì nel 1968 Architettura degli Elaboratori 51 © 2009 Generazione 0: Meccanica (1642-1935) Blaise Pascal, figlio di un esattore delle tasse, costruì a 19 anni una macchina addizionatrice con riporto automatico. Le cifre degli operandi venivano inserite nelle ruote inferiori, la somma eseguita dagli ingranaggi interni, le cifre del risultato apparivano nelle finestre superiori Architettura degli Elaboratori 11 51 © 2009 Generazione 0: Meccanica (1642-1935) Joseph-Marie Jacquard inventò nel 1801 un telaio automatico con trama e ordito controllati da schede perforate Architettura degli Elaboratori 12 51 © 2009 Generazione 0: Meccanica (1642-1935) 13 La macchina di Jacquard (1801) operava secondo uno schema prefissato. 51 L’output era funzione del “programma” scritto nelle schede perforate ● Primo esempio di un software (istruzioni su schede perforate) ● Nessuno raccolse questa invenzione geniale di Jacquard (considerata una minaccia alla occupazione nell’industria tessile) Architettura degli Elaboratori © 2009 Generazione 0: Meccanica (1642-1935) 14 Charles Babbage nel 1822 ottenne dal governo 51 britannico un finanziamento per costruire una macchina (difference engine) intesa a calcolare rapidamente e senza errori le tavole numeriche usate per la navigazione. Primo esempio di finanziamento della ricerca in Computer Science. Architettura degli Elaboratori © 2009 Generazione 0: Meccanica (1642-1935) 15 51 Architettura degli Elaboratori © 2009 Generazione 0: Meccanica (1642-1935) 16 Il Difference Engine progettato da Babbage doveva calcolare e stampare tavole di valori di 51 polinomi fino al sesto grado, con la precisione di 20 cifre decimali Oggi si chiamerebbe: application specific hard-coded machine Nonostante il finanzimento Babbage non riuscì a costruire il Difference Engine: dopo 10 anni, nel 1832, abbandonò il progetto e ne intraprese un altro (Analitical Engine) Architettura degli Elaboratori © 2009 Generazione 0: Meccanica (1642-1935) Nel 1853 (più di 20 anni dopo) lo svedese Georg Scheutz, costruì una versione limitata del Difference Engine di Babbage Architettura degli Elaboratori 17 51 © 2009 Generazione 0: Meccanica (1642-1935) Nel 1989-91, fu costruita una versione completa del Difference Engine, sulla base del progetto originale di Babbage Architettura degli Elaboratori 51 © 2009 Generazione 0: Meccanica (1642-1935) L’Analytical Engine (il nuovo progetto di Babbage) è il primo vero “computer” della storia: Un dispositivo programmabile con la struttura dei computer moderni: 9Organi di Input (schede perforate) per dati e istruzioni 9Organi di Output (ruote predisposte per stampare) 9Organi di Memoria (the Store), posizione delle ruote dentate (1000 colonne di 50 ruote: ~200Kbit) 9Una unità aritmetica (the Mill), 9Un modulo di controllo, per stabilire la sequenza delle operazioni. Nonostante le energie (e il denaro) speso, Babbage non riuscì a costruire nemmeno la Analitical Engine: come per Leonardo, la tecnologia non era ancora matura. Architettura degli Elaboratori 18 19 51 © 2009 Generazione 0: Meccanica (1642-1935) Nel 1842, la contessa Ada Lovelace, scrisse il primo programma per la Analytical Engine di Babbage. 20 51 Può essere considerata la prima programmatrice della storia. Architettura degli Elaboratori © 2009 Generazione 0: Meccanica (1642-1935) Nel 1890 Herman Hollerith vinse la gara per la fornitura delle apparecchiature di calcolo necessarie al governo americano per elaborare i dati del censimento 21 51 Nel 1914, la società da lui fondata, Hollerith Tabulating Company, insieme ad altre due, costituì la Calculating-Tabulating-Recording (C-T-R) che, nel 1924, prese il nome di IBM. Architettura degli Elaboratori © 2009 Generazione 1: Elettrom. (1935-1945) nel 1935 Konrad Zuse (Berlino) costruì nel salotto dei genitori lo Z-1. Era basato su relè e utilizzava l’aritmetica binaria. Tempo di esecuzione delle istruzioni: 6 s ~ 0.17 Hz). Architettura degli Elaboratori 22 51 © 2009 Teoria della computabilità 23 1936: Alan M. Turing getta le basi della teoria della computabilità. La teoria è basata sulla macchina di Turing, una macchina molto semplice ma “universale”, cioè in grado di calcolare qualsiasi funzione computabile. 51 Il problema ingegneristico di produrre macchine diverse per svolgere compiti diversi è sostituito dal lavoro di programmare la macchina universale per i vari compiti. Architettura degli Elaboratori © 2009 Generazione 1: Elettrom. (1935-1945) Fine degli anni 30: Howard Aiken costruì lo Harvard Mark I (IBM Automatic Sequence Control Calculator o ASCC) il primo calcolatore elettromeccanico “general purpose” messo in commercio. Le istruzioni venivano lette da banda perforata, come previsto nell’Analytical Engine di Babbage. 24 51 © 2009 Architettura degli Elaboratori Generazione 1: Elettromeccanica (1935-1945) 25 51 Nell’Harvard MARK I Grace M. Hopper trovò il primo bug (scarafaggio) ucciso tra le ganasce di un relay. L’insetto fu da lei incollato nel logbook del computer e da allora, ad ogni guasto della macchina, era solita dire ad Howard Aiken che dovevano "debug the computer” Architettura degli Elaboratori © 2009 Generazione 2: Valvole (1945-1955) John Atanasoff and Clifford Berry costruirono, tra il 1939 e il 1942, il primo elaboratore digitale elettronico alla università dello Iowa. The ABC conteneva molte innovazioni tra cui l’aritmetica binaria, l’elaborazione parallela, le memorie dinamiche e la separazione tra la memoria e le funzioni di calcolo. 26 ABC - Il primo elaboratore elettronico Architettura degli Elaboratori © 2009 Generazione 2: Valvole (1945-1955) 27 "It was at an evening of scotch and 100 mph car rides, when the concept came, for an electronically operated machine, that would use base-two (binary) numbers instead of the traditional base-10 numbers, condensers for memory, and a regenerative process to preclude loss of memory from electrical failure.” John Atanasoff scrisse la maggior parte dei concetti del primo elaboratore moderno sul retro di un tovagliolino da cocktail. Il prototipo funzionante non fu mai brevettato per l’inizio della II Guerra mondiale. Eckert and Mauchly furono i primi a brevettare un elaboratore digitale, l’ENIAC. Architettura degli Elaboratori 51 51 © 2009 Generazione 2: Valvole (1945-1955) 28 Nel 1943 iniziò il 51 progetto per costruire ENIAC (Electronic Numerical Integrator and Computer) Mauchly (1907-1980) e Eckert (1919-1995) Architettura degli Elaboratori Generazione 2: Valvole (1945-1955) ENIAC 18’000 valvole, 1’500 relay, 30 tonnellate, 140 kW, 20 registri da 10 cifre decimali. Programmi cablati (6’000 interruttori, tonnellate di fili). Soggetto a guasti: negli ultimi 6 anni, in media 100 ore/sett. di operatività: availability = 60% Architettura degli Elaboratori © 2009 29 51 © 2009 Generazione 2: Valvole (1945-1955) 30 Nel 1945, John von Neumann progettò un “stored program computer”: il programma non è più definito da interruttori e cavi o da schede perforate, ma si trova in memoria (la stessa 51 che contiene i dati). L’architettura di von Neumann prevede: - un modulo di controllo, - un modulo ALU con accumulatore, - una memoria per contenere programmi e dati, - l’uso dell’aritmetica binaria al posto di quella decimale. I computer odierni sono ancora basati sull’architettura di von Neumann (in realtà deriva da Babbage). Questa architettura presenta il cosiddetto (Backus, 1977) “von Neumann bottleneck” tra la memoria e le unità di controllo e calcolo; tutte le nuove architetture cercano di rimuovere questo collo di bottiglia. Architettura degli Elaboratori © 2009 Generazione 2: Valvole (1945-1955) 31 John von Neumann nel 1952 con il suo EDVAC (“Electronic Discrete Variable Automatic Computer”) Architettura degli Elaboratori 51 © 2009 Generazione 2: Valvole (1945-1955) Altre macchine: Manchester Mark I, il primo “stored program” computer ad essere operativo (nel 1948) all’Università di Manchester. Architettura degli Elaboratori Generazione 2: Valvole (1945-1955) Altre macchine: nel 1951, il Whirlwind computer (MIT) fu il primo ad impiegare memorie magnetiche (nuclei di ferrite) Architettura degli Elaboratori 32 51 © 2009 33 51 © 2009 Generazione 2: Valvole (1945-1955) 34 51 memoria (da 256 bit) a nuclei di ferrite Architettura degli Elaboratori © 2009 Generazione 2: Valvole (1945-1955) 35 Nel 1952 Grace Hopper, nell’articolo intitolato “The Education of a Computer”, (Proc. ACM Conference, Annals of the History of Computing Vol. 9, No.3-4, pp. 271-281) descrive il concetto di compilatore. Architettura degli Elaboratori 51 © 2009 Generazione 2: Valvole (1945-1955) 36 Nel 1954, John Backus (IBM) sviluppò il primo linguaggio di programmazione di alto livello (FORTRAN) con cui gli utenti potevano definire i problemi in termini di formule matematiche Il primo compilatore FORTRAN era costituito da 2’000 schede perforate (2000 righe di codice non documentato) Molti programmi scientifici sono tuttora scritti in FORTRAN Architettura degli Elaboratori 51 © 2009 Generazione 3: Transistor (1955-1965) Nel 1947 W. Shockley, J. Bardeen, e W. Brattain inventano il dispositivo transfer resistance in seguito chiamato transistor Architettura degli Elaboratori 37 51 © 2009 Generazione 3: Transistor (1955-1965) 38 51 Nel 1955, l’IBM produsse un computer mainframe (IBM 704), usando transistor discreti. Il primo computer con aritmetica floating point (5 kFlops, clock: 300 kHz) Architettura degli Elaboratori © 2009 Generazione 4: ICs (1965-1980) 39 Nel 1958, J. Kilby della Texas Instruments (premio Nobel per la fisica nel 2000) dimostrò la possibilità di integrare un transistor insieme con resistenze e capacità su un singolo chip di semiconduttore (~1 cm2), per ottenere un oscillatore phase shift. Architettura degli Elaboratori 51 © 2009 Generazione 4: ICs (1965-1980) 40 Nel 1961, Fernando Corbató (MIT) produsse CTSS (Compatible Time Sharing System) per il computer IBM 7090/94: il primo sistema operativo (time-sharing) della storia. 51 Nel 1962 all’Università di Manchester fu operativo il computer Atlas: il primo ad usare le tecniche di memoria virtuale, di paging e di pipelining; possedeva moduli separati per l’aritmetica intera e floating-point, (prestazioni di ~200 kFLOPS). Architettura degli Elaboratori Generazione 4: ICs (1965-1980) Nel 1964 l’IBM annunciò il System/360, la prima famiglia di computer compatibili . Architettura degli Elaboratori © 2009 41 51 © 2009 Generazione 4: ICs (1965-1980) 42 Nel 1965, la DEC (Digital Equipment 51 Corporation) produsse il PDP-8, il primo minicomputer. Si diffuse presto nei sistemi di controllo dei processi © 2009 Architettura degli Elaboratori Generazione 5: VLSI (1980-?) 43 Nel 1971, Ted Hoff produsse l’Intel 4004, il primo microprocessore, cioè il primo processore (a 4 bit) integrato su un singolo chip Architettura degli Elaboratori 51 © 2009 Generazione 5: VLSI (1980-?) 44 Nel 1975 MITS produsse l’Altair 8800, il primo personal computer (memoria di 256 byte). 51 Più tardi, Bill Gates and Paul Allen scrissero il primo compilatore BASIC per l’Altair. Nel 1976: Apple I (ne furono prodotti 200). Nel 1981: il primo PC IBM. © 2009 Architettura degli Elaboratori Generazione 5: VLSI (1980-?) 45 Nel 1984, lo Xerox PARC (Palo Alto 51 Research Center) presentò ALTO, il primo computer con un nuova interfaccia utente (GUI): finestre, icone, mouse Architettura degli Elaboratori © 2009 Generazione 5: VLSI (1980-?) 46 51 Nel 1986: il Cray-XMP supercomputer con 4 processori (840 Mflops). (raffreddato ad acqua) Architettura degli Elaboratori Generazione 5: VLSI (1980-?) © 2009 47 51 Prestazioni simili a quelle del Pentium III (2000) Architettura degli Elaboratori © 2009 Sony Playstation 2000 48 51 © 2009 Architettura degli Elaboratori CPU: Emotion Engine 49 128-bit RISC - MIPS IV-subset + 128-bit multimedia extension 64-bit integer unit (2-way superscalar), 107 multimedia 128-bit instructions 32 128-bit registers, 48 double entries memory management unit (TLB) 64 entries branch target address cache (BTAC) Clock Cache Scratch pad RAM Memory Direct Rambus DMA CoCo-processor Vector unit VU0 (4KB/4KB) Vector unit VU1 (16KB/16KB) Decoder Size 51 300MHz (294.912MHz) 16KB instruction (2(2-way) - 8KB data (2(2-way) 16KB (1K× (1K×128, dual port) port) 32MB (2 channels at 800MHz) 3.2GB/sec 10 channels FPU MAC ×1, FPU DIV ×1 FPU MAC ×4, FPU DIV ×1 FPU MAC ×9, FPU DIV ×3 MPEG2 226mm2 (240mm2) Performance: 6.2 Gflops 66 Mpoly/s (geometric and perspective transformations) 38 Mpoly/s (lighting) / 36 Mpoly/s (fog) 16 Mpoly/s (curved surface, Bezier) Architettura degli Elaboratori © 2009 Imaging: Graphic Synthesizer ▪ ▪ ▪ ▪ ▪ ▪ Pixel engines Clock Video RAM DRAM bandwidth DRAM bus width RGB:Alpha:Z Buffer 50 16 in parallel 150MHz (147.456MHz) 4MB (embedded) 48GB/sec 2560-bit (1024+1024+512) 24:8:32 42.7Mtransistors 183mm2 (279mm2) Performance: 75 Mpoly/sec (small polygons) 51 50 Mpoly/sec (48 pix quad, 24-bit, Alpha, Z) 30 Mpoly/sec (50 pix triangle, Alpha, Z) 25 Mpoly/sec (48 pix quad, Alpha, Z, texture) Particle drawing 150 Mpixels/sec Sprite drawing 18.75 M/s (8x8 pixels) (8x speed for 640x480 at 60fps) Architettura degli Elaboratori © 2009 Cosa sta accadendo oggi: un esempio 51 2005: Sony, Toshiba e IBM annunciano il microprocessore CELL 51 • Più unità di calcolo indipendenti sul chip (multi-core) • Parallelismo Architettura degli Elaboratori © 2009 Applicazioni del CELL (1 di 2) 52 51 11 novembre 2006: Sony mette sul mercato Playstation 3, basata sul microprocessore CELL Architettura degli Elaboratori © 2009 Applicazioni del CELL (2 di 2) 53 25 maggio 2008: IBM RoadRunner, un progetto ibrido con CPU CELL e AMD Opteron, supera la barriera del PetaFLOPS 51 (1'000'000'000'000'000 operazioni/secondo) Architettura degli Elaboratori © 2009 Direzioni di sviluppo 54 • Parallelismo ad ogni livello 51 • Continua l'integrazione (“system-on-a-chip”) • Un computer in ogni dispositivo (“ubiquitous computing”) ? Architettura degli Elaboratori © 2009 Fine 01.a Un po’ di storia