Il calcolatore 01.a Un po’ di storia 1 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 1 51 ????-1642 1642-1935 1935-1945 1945-1955 1955-1965 1965-1980 1980-???? © 2005 2 Generazione -1: preistoria (…-1642) Oggetti usati come strumenti di calcolo (es: conchiglie per rappresentare pecore) 2 51 = stessa cardinalità = rappresentano lo stesso numero © 2005 Architettura degli Elaboratori 1 3 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 1 © 2005 4 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 1 © 2005 5 Generazione -1: preistoria (…-1642) Meccanismo più sofisticato: l’abaco usa il concetto di notazione posizionale. 5 51 Valore delle cifre Peso di ciascuna cifra (potenze di 10) Architettura degli Elaboratori 1 © 2005 6 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! © 2005 Architettura degli Elaboratori 1 7 Generazione -1: preistoria (…-1642) 7 Nel XII secolo: Muhammad ibn Musa 51 Al'Khowarizmi sviluppa il concetto di definizione scritta di un procedimento da seguire per ottenere un risultato Da cui il nome: algoritmo Architettura degli Elaboratori 1 © 2005 8 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 1 © 2005 9 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 1 9 51 © 2005 10 Generazione -1: preistoria (…-1642) 10 Codex Madrid - Leonardo Da Vinci (~1500) ● Guatelli (New York) lo costruì nel 1968 Architettura degli Elaboratori 1 51 © 2005 11 Generazione 0: Meccanica (1642-1935) Blaise Pascal, figlio di un esattore delle tasse, costruì nel 1642 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 1 11 51 © 2005 12 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 1 12 51 © 2005 13 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 1 © 2005 14 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 1 © 2005 15 Generazione 0: Meccanica (1642-1935) 15 51 Architettura degli Elaboratori 1 © 2005 16 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 1 © 2005 17 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 1 17 51 © 2005 18 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 1 18 51 © 2005 19 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 1 19 51 © 2005 20 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 1 © 2005 21 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 1 © 2005 22 Generazione 1: Elettrom. (1935-1945) nel 1935 Konrad Zuse (Berlino), costruì, nel salotto dei genitori, lo Z-1 un calcolatore a relay, utilizzante aritmetica binaria (tempo di esecuzione delle istruzioni: 6 s ~ 0.17 Hz) Architettura degli Elaboratori 1 22 51 © 2005 23 Generazione 1: Elettrom. (1935-1945) Fine degli anni 30: Howard Aiken costruì lo Harvard Mark I (IBM Automatic Sequence Control Calculator ASCC) il primo calcolatore elettromeccanico “general purpose” messo in commercio. Le istruzioni venivano lette da banda perforata (come previsto dalla Analitical Engine di Babbage). Architettura degli Elaboratori 1 23 51 © 2005 24 Generazione 1: Elettromeccanica (1935-1945) 24 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 1 © 2005 25 1936 25 1936: Alan M. Turing definisce un modello di computabilità: 51 Macchina di Turing Una macchina “universale” molto semplice: in grado di calcolare qualsiasi funzione computabile: la complessità richiesta sta tutta nel software 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 1 © 2005 26 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 1 51 © 2005 27 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 1 51 © 2005 28 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 1 © 2005 29 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 1 29 51 © 2005 30 Generazione 2: Valvole (1945-1955) 30 Nel 1946, 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, - viene usata l’aritmetica binaria, anziché quella decimale I computer odierni sono ancora basati su questa architettura di von Neumann (in realtà deriva da Babbage) Questa architettura presenta il “von Neumann bottleneck”, tra la memoria e il resto del computer; tutte le nuove architetture cercano di rimuovere questo collo di bottiglia. Architettura degli Elaboratori 1 © 2005 31 Generazione 2: Valvole (1945-1955) John von Neumann (1952) e il suo EDVAC Electronic Discrete Variable Automatic Computer Architettura degli Elaboratori 1 31 51 © 2005 32 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 1 32 51 © 2005 33 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 1 33 51 © 2005 34 Generazione 2: Valvole (1945-1955) 34 51 memoria (da 256 bit) a nuclei di ferrite Architettura degli Elaboratori 1 © 2005 35 Generazione 2: Valvole (1945-1955) 35 Nel 1952 Grace Hopper in un articolo intitolato: 51 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 1 © 2005 36 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 1 51 © 2005 37 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 1 37 51 © 2005 38 Generazione 3: Transistor (1955-1965) 38 51 Nel 1955, l’IBM produsse un computer mainframe (IBM704), usando transistor discreti. Il primo computer con aritmetica floating point (5 kFlops, clock: 300 kHz) Architettura degli Elaboratori 1 © 2005 39 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 1 51 © 2005 40 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 1 © 2005 41 Generazione 4: ICs (1965-1980) Nel 1964 l’IBM annunciò il System/360, la prima famiglia di computer compatibili . Architettura degli Elaboratori 1 41 51 © 2005 42 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 © 2005 Architettura degli Elaboratori 1 43 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 1 51 © 2005 44 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 © 2005 Architettura degli Elaboratori 1 45 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 1 © 2005 46 Generazione 5: VLSI (1980-?) 46 51 Nel 1986: il Cray-XMP supercomputer con 4 processori (840 Mflops). (raffreddato ad acqua) Architettura degli Elaboratori 1 © 2005 47 Generazione 5: VLSI (1980-?) 47 51 Prestazioni simili a quelle del Pentium III (2000) Architettura degli Elaboratori 1 © 2005 48 Sony Playstation 2000 48 51 © 2005 Architettura degli Elaboratori 1 49 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 1 © 2005 50 Emotion Engine 50 Toshiba (51%) + Sony (49%) [email protected] 17.0x14.1mm2 (ISSCC’99) 10.5M transistors (13M now) 15W 540-pin PBGA 51 © 2005 Architettura degli Elaboratori 1 51 Imaging: Graphic Synthesizer ▪ ▪ ▪ ▪ ▪ ▪ Pixel engines Clock Video RAM DRAM bandwidth DRAM bus width RGB:Alpha:Z Buffer 51 16 in parallel 150MHz (147.456MHz) 4MB (embedded) 48GB/sec 25602560-bit (1024+1024+512) 24:8:32 42.7Mtransistors 183mm2 (279mm2) Performance: 75 Mpoly/sec (small polygons) 51 50 Mpoly/sec (48 pix quad, 2424-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 1 © 2005 52 Fine 01.a Un po’ di storia 53