I Computer Come si è giunti alle moderne scelte architetturali. Michelangelo Lamonica Storia dell'informatica e del calcolo automatico Ambientazione Il presente documento è progettato per introdurre ad una visione complessiva dello sviluppo della tecnologia attualmente presente sul mercato . Esso è di compendio alle attività didattiche tradizionali ed è destinato a studenti che stanno terminando il corso di studi di scuola superiore. Storia dell'informatica e del calcolo automatico Prerequisiti Avere comprensione della terminologia tecnica legata ai Personal Computer. Avere interesse nel comprendere il percorso storico che ha portato alla attuale tecnologia. Storia dell'informatica e del calcolo automatico Obiettivi Dare il quadro storico dello sviluppo della tecnologia legata ai Processori. Permettere di comprendere le scelte tecnologiche relativamente tali tecnologie. Storia dell'informatica e del calcolo automatico Materiale Materiale Cartaceo disponibile Slides in PowerPoint® Bibliografia Storia dell'informatica e del calcolo automatico Si parte …. Mettetevi comodi ….. Storia dell'informatica e del calcolo automatico L’osso di Lupo Risale al 30000 a.c. un osso di lupo in cui sono state incise 55 tacche a gruppi di 5. Si pensa sia stato impiegato come base di calcolo (in base 5 … come le dita). Rappresenta il primo tentativo (conosciuto) dell’essere umano di sistematizzare l’universo dei numeri, primo passo per il dominio dei dati e delle informazioni. Storia dell'informatica e del calcolo automatico L’abaco La prima macchina calcolatrice risale a 5000 anni fa, e permetteva di eseguire calcoli utilizzando le perline che scorrono sulla tastiera. Storia dell'informatica e del calcolo automatico La Pascalina Molto dopo Blaise Pascal (1623-1662), figlio diciottenne di un esattore delle tasse francese, inventa la calcolatrice ad ingranaggi. Storia dell'informatica e del calcolo automatico Caratteristiche usava otto ingranaggi mobili somma numeri fino ad otto cifre I numeri erano in base 10 Utilizza ruote dentate ( a 10 denti ) Utile solo per le addizioni !!!!!!! Storia dell'informatica e del calcolo automatico Difference Engine ed Analitycal Machine “I wish to God these calculations had been executed by steam” Il matematico inglese Charles Babbage (17911871) presentò una macchina per le equazioni differenziali, detta “Difference Machine”. L'assistente di Babbage, Augusta Ada King, figlia del poeta inglese Lord Byron, fu la prima programmatrice della storia creando una routine di istruzioni della Analitical Machine, precursore del moderno Calcolatore. Storia dell'informatica e del calcolo automatico Caratteristiche Alimentate a vapore grandi quanto una locomotiva Dotate di oltre 50000 componenti Input con schede perforate Archivio di memoria per 1000 numeri La Analitical Machine conteneva anche un'unità di elaborazione con un'unità di controllo che consentiva di processare istruzioni in ogni sequenza. Storia dell'informatica e del calcolo automatico Nota Storica Nel 1889, un inventore americano, Herman Hollerith (1860-1929), applicò il concetto delle schede perforate al censimento degli Stati Uniti (che fu terminato in sei settimane invece dei 10 anni previsti !!!!). Hollerith nel 1886 fondò la Tabulating Machine Company che divenne International Business Machine (IBM) nel 1924. Storia dell'informatica e del calcolo automatico Differencial Analyzer Il prof Vannevar Bush ed altri docenti del MIT progettano il “Differential Analyzer”, il primo calcolatore di uso pratico alimentato elettricamente. Da questo momento in poi, i prototipi di macchinari computazionali si susseguono quasi annualmente fino ai giorni nostri. Storia dell'informatica e del calcolo automatico Evoluzione Da allora si susseguono una serie di scoperte e innovazioni che portano all’affinamento delle tecniche per la realizzazione dei computer. Il problema principale dell’epoca era l’eccessivo ingombro dei macchinari dovuto essenzialmente alla difficoltà di rappresentazione dei numeri e delle relazioni tra questi. Il problema fu risolto realizzando Computer tramite la semplice (e ripetitiva) algebra Binaria. Storia dell'informatica e del calcolo automatico Nota Storica Il sistema Binario era noto già in Cina nel 1100 a.c. Il gesuita padre Bouvet descrive per corrispondenza tale sistema a Leibnitz Leibnitz (fine 1600) realizza che qualsiasi informazione può essere formalizzata in binario. Il matematico Boole (fine 1800) costruisce la sua logica sul lavoro di Leibnitz. Nel 1931 il tedesco Zose costruisce il primo computer elettromeccanico sulla logica binaria (Relè) Nel 1939 l’americano Atanasoff realizza il primo computer elettronico sulla logica binaria (Valvole) Negli anni ’50 von Neumann formalizza l’architettura ancora oggi utilizzata. Storia dell'informatica e del calcolo automatico La architettura Negli anni ’50 von Neumann definisce la architettura dei Computer; tale architettura è tutt’ora alla base dei moderni Calcolatori. In particolare, viene definita la la distinzione tra memoria primaria (ROM) e secondaria (RAM), e lo stile di programmazione mediante diagrammi di flusso. Storia dell'informatica e del calcolo automatico Considerazioni Da quanto fino ad ora visto: Dall’inizio dei tempi si comprende che operazioni complesse possono essere scomposte in operazioni semplici ripetute un numero elevato di volte. Lo sforzo degli scienziati è quello di utilizzare le scoperte tecnologiche per potenziare i calcolatori (dalle ruote dentate alle valvole fino ai circuiti integrati) utilizzando una architettura definita a grandi linee già del 1600 Ai calcolatori viene tutt’ora chiesto di realizzare cose semplici, ma in quantità tale da poter poi effettuare operazioni molto complesse. Storia dell'informatica e del calcolo automatico Le generazioni Prima Generazione (1945-1956) Valvole Termoioniche Seconda Generazione (1956-1963) Transistor Terza Generazione (1964-1971) Circuiti Integrati Quarta Generazione (1971-Oggi) Integrazione su larga scala Storia dell'informatica e del calcolo automatico I moderni Processori Tralasciando le realizzazioni effettuate nelle precedenti generazioni, viene di seguito riproposto un “excursus” sulle scelte legate alla realizzazione dei processori della “quarta generazione”. In particolare risulta interessante comprendere come non sempre il prodotto migliore è risultato vincente subito e come, architetture diverse, sono state valutate e scelte in base a motivazioni “storiche” che hanno condizionato l’attuale stato di fatto. Storia dell'informatica e del calcolo automatico Problemi di Spazio Studi effettuati da informatici come Andrew Tanenbaum dimostrarono che le CPU prodotte allora erano molto sovradimensionate rispetto alle reali esigenze dei programmi. Tanenbaum dimostrò che il 98% delle costanti in un programma poteva essere memorizzato con parole di 13 bit sebbene la maggior parte delle CPU utilizzasse parole a multipli di 8 bit (quindi 8/16/24 etc.) e quindi sprecasse spazio. Storia dell'informatica e del calcolo automatico Anni ’80 – Il Panico All'inizio degli anni 80 si era diffusa l'idea che l'architettura dei processori avesse raggiunto il suo limite teorico di velocità. Da qui lo sforzo di trovare nuove tecnologie e tecniche in grado di realizzare processori che potessero superare tale limite. Le direzioni prese furono: La realizzazione di un processore con un set ridotto di operazioni base (RISC) La realizzazione di architetture parallele (TRANSPUTER) Storia dell'informatica e del calcolo automatico Il problema l’integrazione Dunque con la realizzazione di processori su Circuiti Integrati viene evidenziata agli inizi degli anni ’80 la necessità di non poter aumentare ulteriormente la scala di integrazione e di conseguenza non poter garantire il trend di crescita prefissato. Per tal motivo i tecnici in quel periodo si realizzano i primi processori RISC (Berkeley 1980) che, tramite la combinazione di un numero finito di funzioni, riescono a gestire tutte le operazioni richieste. Storia dell'informatica e del calcolo automatico CISC e RISC CISC (Complex Instruction Set Computers) è la architettura che prevede all’interno del processore la realizzazione di una grande quantità di funzioni. RISC (Reduced Instruction Set Computers) è la architettura che prevede all’interno del processore la realizzazione di solo una minima quantità di funzioni, le quali, combinate, permettono la realizzazione di operazioni complesse. (le uniche operazioni in grado di accedere alla memoria sono le operazioni di load e di store) Storia dell'informatica e del calcolo automatico La evoluzione sul mercato. Dopo un decennio ( 1980-1989 ) di studio si colma il divario e all'inizio degli anni 90 i processori RISC superano i processori CISC praticamente in ogni campo. Tuttavia scelte commerciali portano la INTEL ( e la AMD ) a continuare a mantenere una architettura CISC, prefendo demandare ai compilatori la scomposizione delle istruzioni complesse in istruzioni più semplici (RISC) Attualmente – tranne il mondo x86 - la restante componente di processori è RISC. (i-pod, decoder tv, x-box, etc ) Storia dell'informatica e del calcolo automatico Parallelizzazione Contemporaneamente alla realizzazione di processori RISC, un’altra direzione - per ovviare al problema della saturazione della velocità raggiungibile - fu quella della parallelizzazione delle operazioni. Una CPU a basso costo, pensata in quest'ottica, avrebbe permesso di aumentare la velocità di calcolo di una macchina aggiungendo altri processori simili, scelta potenzialmente molto più economica di una basata su un singolo e più potente processore. Storia dell'informatica e del calcolo automatico I Trasputer Il INMOS Transputer era un pionieristico design di un microprocessore per il calcolo parallelo prodotto dalla INMOS, una piccola azienda inglese, negli anni '80. L'obiettivo era di produrre una famiglia di chip, limitati in costo e potenza, che avrebbero potuto poi essere connessi tra loro per formare un computer completo. Il nome era stato scelto per indicare il ruolo che il singolo Transputer avrebbe avuto: molti di loro sarebbero stati usati come "mattoni di base", proprio come i transistor lo erano stati precedentemente. Storia dell'informatica e del calcolo automatico Set di Istruzioni Interne Il set di istruzioni macchina del Trasputer conteneva la codifica dell'istruzione, rendendolo un vero RISC. Inoltre le istruzioni meno frequentemente utilizzate erano supportate tramite la codifica di istruzioni chiamata Operate (Opr), la quale decodificava la costante di dati come un codice di operazione esteso, fornendo un'espansione del set di istruzione facile e quasi infinita. Storia dell'informatica e del calcolo automatico OCCAM Per la programmazione dei transputer, la INMOS ha progettato un linguaggio apposito, chiamato Occam. In effetti è più corretto dire che il Transputer fu progettato specificatamente per eseguire codice Occam, come molti processori CISC dell'epoca erano pensati per eseguire Pascal o C. Storia dell'informatica e del calcolo automatico La evoluzione sul mercato. Nel 1983 esce in commercio il primo trasputer la cui architettura e performances erano nettamente superiori a “cugini” x86. Nel 1987 esce il T9000, dotato di virgola mobile e supporto alla “superscalarità”. Nel 1989 il progetto fallisce e la INMOS viene acquisita dalla SGS-Thomson. Storia dell'informatica e del calcolo automatico Considerazioni. Nei primi anni '80 sembrava che le CPU convenzionali avessero raggiunto il loro limite riguardo alle performance. Le soluzioni proposte (RISC e TRASPUTER) benchè realizzassero forti miglioramenti non avevano fatto i conti con: Diffusione della architettura x86 (CISC) Costo del processore prodotto (TRASPUTER) Storia dell'informatica e del calcolo automatico Considerazioni. I problemi ipotizzati nel 1980 (integrazione) si sono riproposti 15 anni dopo. Gli studi effettuati in quegli anni sono stati dunque elaborati ed applicati ai moderni processori. A tendere, le innovazioni introdotte negli anni ’80 sono riuscite ad imporsi. Storia dell'informatica e del calcolo automatico RISC in maniera Software I moderni processori x86 - pur mantenendo (per compatibilità con le versioni precedenti) una architettura CISC – lasciano ai compilatori la scomposizione delle istruzioni complesse in istruzioni più semplici (RISC). I nuovi x86 a 64 bit prevedono una ISA ottimizzata in questa direzione. Storia dell'informatica e del calcolo automatico Parallelizzazione nei x86 La parallelizzazione dei processi è stata anche essa rielaborata ed utilizzata nei moderni processori. Il compito di “parallelizzare” non viene però demandato al programmatore ma al S.O. che gestisce più core in parallelo. Di nuovo viene preferita la compatibilità con quanto presente attualmente sul mercato. Storia dell'informatica e del calcolo automatico Cosa abbiamo tralasciato. La analisi ivi proposta è ad alto livello e non tiene conto delle innovazioni avvenute nello stesso periodo a livello di integrazione. Il numero di transistor presenti sui chip varia in maniera incrementale secondo la nota “legge di Moore” Finchè il trend di integrazione non varia (diminuendo) le architetture non avranno sensibili variazioni. Storia dell'informatica e del calcolo automatico Bibliografia Von Neumann Sist. Binario C.P.U. Integrazione http://it.wikipedia.org/wiki/John_von_Neumann http://it.wikipedia.org/wiki/Sistema_numerico_binario http://it.wikipedia.org/wiki/CPU http://en.wikipedia.org/wiki/Very-large-scale_integration http://it.wikipedia.org/wiki/INMOS_Transputer X86 http://it.wikipedia.org/wiki/Architettura_x86 ISA http://it.wikipedia.org/wiki/Instruction_set Legge di Moore http://it.wikipedia.org/wiki/Legge_di_Moore Trasputer Storia dell'informatica e del calcolo automatico