Materia:Architetture degli elaboratori: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix
m Bot : carattere di codifica fissa
Riga 70:
 
== Presunzione ==
Si presume che queste lezioni siano indipendenti nella loro stesura, questo per descrivere nel modo piùpiù definito possibile i livelli della Architettura.
 
Si utilizzeràutilizzerà come esempio due architetture particolari. La prima éé quella del MIPS e la seconda éé una versione SEMPLIFICATA di quella che éé l'architettura della [http://www.java.sun.com Java Virtual Machine]. Si presume che, per visonarne al meglio le differenze, lo studente conosca i principi fondamentali della programmazione in ambiente C/C++ e Java.
 
 
== Introduzione al corso di Architetture ==
Prima di parlare in maniera dettagliata di come sia fatta l'architettura a livelli che vogliamo studiare ` necessario fare una introduzione storica. I computer non esistono da sempre. Il primo che uomo che abbia realizzato un computer èè il francese [[w:Blaise_Pascal|Blaise Pascal]] (nel cui onore éé stato battezzato un linguaggio di qualche tempo fa..) che nel 1642 - a soli 19 anni - progettòprogettò e realizzòrealizzò un meccanismo di contabilitàcontabilità. Era un aggeggio completamente meccanico; un computer a manovella!! Le sole operazioni che era in grado di compiere erano addizione e sottrazione. Passaronon 30 anni prima che [[Leibniz]] aggiungesse a quella macchina le operazioni moltiplicazione e divisione che costruirono la prima vera calcolatrice del mondo. Trecento anni fa..
 
Nulla successe poi per quasi 150 anni..
 
Quando un giorno un tizio di nome [[w:Charles_Babbage|Babbage]] dall'UnivesitàUnivesità di Cambrige creòcreò 'difference engine' un dispositivo meccanico che come quello di Pascal poteva soltanto sottrarre e addizionare. Esso venne utilizzato per la navigazione marittima.
 
La cosa piùpiù interessante del 'difference engine' era il suo modo di produrre output. Esso stampava su un disco (non un vinile!!) grazie all'ausilio di una punta in ferro. Era pertanto in grado di produrre dischi perforati che potevano anche essere re-introdotti nell'elaboratore.
 
L'evoluzione di 'difference engine' fu 'analytical engine', un dispositivo composto di una memoria, un mill (unitàunità di calcolo), la possibilitàpossibilità di ricevere input (da schede prestampate) e la possibilitàpossibilità di produrre un output (sempre su schede).
 
Questo dispositivo éé stato il primo dispositivo programmabile!!
E contrariamente a quello che la presunzione maschile induce a pensare, il primo hacker fu donna! [[w:Ada_Lovelace|Ada Augusta Lovelace]] (figlia di un [[w:Lord_Byron|poeta famoso]]). In suo onore un moderno linguaggio di programmazione ha preso il suo nome.
 
Riga 94:
Questi gli inizi.
 
Poi negli anni '30 (1930) un tedesco di nome [[w:Konrad_Zuse|Konrad Zuse]] costruìcostruì una macchina computazionale automatica utilizzando dispositivi elettromagnetici. Questi suoi studi, non di certo finanziati dal governo, vennero considerati di secondo piano rispetto alla guerra che stava per iniziare.. Ci si aspettava (in Germania) che la guerra finisse presto e, vincitori, si sarebbe potuto sviluppare il progetto. CosìCosì non fù. Il progetto di Zuse fu vittima dei bombardamenti e non influenzòinfluenzò in modo utile le macchine che vennero dopo. Nonostante tutto éé necessario menzionarlo, in quanto anche le sue idee erano innovative.
 
Diversi furono gli studiosi che si cimentarono nell'evoluzione di questi dispositivi calcolatori. Tra questi spicca Howard Aiken che nel 1944 all'UniversitàUniversità di Harvard presentòpresentò Mark I, una macchina in grado di gestire 72 parole di 23 digits ciascuna. Era in grado di svolgere una operazione (istruzione) in 6 secondi circa.
 
Gli studi continuarono fino a produrre Mark II.
Riga 103:
 
=== Prima Generazione (1945-1955) ===
Il primo computer, purtroppo, non fu costruito per fare qualcosa di veramente utile. I primi computers infatti (costruiti durante la Guerra Mondiale) erano destinati alla traduzione di codici per sventare attacchi, da questo a quel popolo. Ricordiamo tra queste ENIGMA (Germania) ma anche COLOSSUS (Gran Bretagna). Nel 1943 viene creato ENIAC (Electronic Numerical Integrator And Computer). Consisteva di 18.000 valvole e di 1500 releèreleè, pesava qualcosa come 30 tonnellate e consumava 140 KiloWatts. Architetturalmente era costituito da 20 registri da 10 digits nei quali venivano rappresentati numeri interi. "Sfortunatamente" la sua completa realizzazione avvenne al termine della Guerra (1946) ed i suoi scopi bellici non erano piùpiù utili.
 
Ma l'interesse nei calcolatori elettronici era stato svegliato..
 
Nel 1949 venne creato EDSAC dall'UniversitàUniversità di Cambridge.
Il suo successore: EDVAC (Electronic Discrete Variable Automatic Computer).
 
Dal progetto ENIAC un professore del Princeton's Institute od Advanced Studies noto col nome di [[w:John_von_Neumann|John Von Neumann]] creòcreò un progetto che éé rimasto ai giorni nostri, e dal quale inizieremo a discutere il nostro corso..
 
Egli descrisse [[w:Architettura_di_von_Neumann|una architettura di nome IAS]] che poteva essere generalizzata per la costruzione di questi dispositivi. Vennero introdotti nel discorso congegni come un accumulatore, una memoria, una unitàunità di controllo, dispositivi di input e di output.
 
Nel nostro excursus storico appare una Azienda che inizialmente costruiva carte meccaniche scrivibili (schede perforabili): IBM. Gli interessi di IBM nei calcolatori era molto leggero, fino ad arrivare al 1953 quando produsse 701.
Riga 123:
=== Seconda Generazione (1955-1965) ===
Nel 1948 i Bell Labs inventarono i transistors.
Gli inventori (John Bardeen, Walter Brattain, William Shockley) ricevettero il premio {{Nobel}} per la Fisica (1956). In poco piùpiù di un decennio i transistors (transistori in Italiano) rivoluzionarono il mercato dai computer fino a rendere obsoleti, alla fine degli anni '50, i computers costruiti con le valvole.
 
Il primo calcolatore a transistors fu costruito nei laboratori del M.I.T. e prese il nome di TX-0 (Transistored eXperimental computer 0). Da questo progetto prese spunto anche Kenneth Olsend che fondòfondò una societàsocietà di nome DEC (Digital Equipment Corporation) che creòcreò il PDP-1 (1961).
 
PDP-1 era un computer composto da 4K di memoria da parole a 18 bits e cicli di risposta per produrre un output di circa 5 micro-secondi.
Riga 131:
Come costi di produzione il PDP-1 costava circa $120,000 mentre il 7090 (successore di 709 by IBM) costava milioni di dollari!!! Questo fece la fortuna di DEC che vendette diversi modelli del suo PDP-1.
 
Tra questi modelli venduti almeno uno finìfinì al M.I.T. che produsse una innovazione che al giorno d'oggi sembra quasi scontata: il display!
Uno schermo di 512x512 punti!! PiùPiù che sufficiente per creare il primo videogioco: SPACEWAR!
 
Diversi anni dopo nacque PDP-8 che costava molto meno ($16,000) e che aveva una caratteristica evolutiva molto importante: il BUS. Una raccolta di cavi paralleli utilizzati per connettere i dispositivi interni del computer.
Riga 145:
 
Anche B5000 (prodotto dall'Azienda Burroughs) e' da menzionare.
Questa macchina, in particolare, prevedeva la possibilitàpossibilità di impiegare un linguaggio antecedente al Pascal (Algol 60) e includeva nel suo hardware la possibilitàpossibilità di compilare un programma.
 
Era nata l'era del software cosìcosì come la intendiamo noi.
Sfortunatamente B5000 fu abbandonata subito..
 
Riga 153:
 
=== Terza Generazione (1965-1980) ===
Correva l'anno 1958 quando [[w:Robert_Noyce|Robert Noyce]] riuscìriuscì a sistemare diversi transistors in un'unica unitàunità chiamata : CHIP.
 
Questo permetteva di costruire computers di dimensioni ristrette, piùpiù veloci dei loro predecessori e nello stesso tempo meno cari. Questa terza generazione di computers produsse il primo dei problemi che riscontriamo al giorno d'oggi e che èè il collo di bottiglia che ci impedisce di evolvere in modo esponenziale: la retro-compatibilitàcompatibilità.
 
Infatti nel 1964 IBM produsse due modelli di computer (7094 e 1401) che, incredibilmente, non erano compatibili tra loro. Scrivere un programma per 7094 non significava che esso potesse funzionare anche 1401. Quando venne il tempo di aggiornare questi prodotti, IBM introdusse una singola linea di produzione chiamata System/360 che veniva predisposta sia per i calcoli matematici piùpiù utili che per la computazione commerciale.
 
I due modelli antecedenti potevano essere sostituiti dai nuovi modelli System/360.
Riga 163:
Il modello 75 era grande e veloce (ed anche molto costoso), ma il software creato su un System/360 era compatibile anche con gli altri della stessa serie. Ovviamente un programma scritto su una macchina modello 30 funzionava benissimo sul modello 75, ma non viceversa. Infatti il programma costruito sul modello 75 poteva non riuscire a stare completamente all'interno della memoria del modello 30.
 
Tre sono le novitànovità introdotte da queste architetture:
 
* Introdurre la <b>multiprogrammazione</b>.
Riga 169:
 
* Introdurre la <b>microprogrammazione</b>.
Strumento molto utile in quanto defin&igrave;definì due grandi famiglie di microarchitetture.
 
* <b>Riuscire ad indirizzare 2 alla 24 (16 MB) indirizzi di memoria</b>.
Che per allora era quasi infinito.
 
Nel trascorrere del tempo e nelle nuove innovazioni tecnologiche 16MB di memoria indicizzabile non furon pi&ugrave;più sufficienti per i programmatori. In particolare a met&agrave;metà degli anni '80 IBM abbandon&ograve;abbandonò questa quantit&agrave;quantità preferendo costruire una memoria di 2 alla 32 bytes.
 
Nonostante questa introduzione, utilizzare 4GB di memoria divenne a sua volta un posto piuttosto stretto dove mettere i dati.
 
DEC produsse il suo PDP-11 il successore a 16 bit del PDP-8.
In molti aspetti PDP-11 era "fratello" di System/360. Avevano in comune ad esempio la possibilit&agrave;possibilità di utilizzare registri a parole e memorie organizzate in Byte, dai costi veramente irrisori rispetto agli inizi.
 
=== Quarta Generazione (1980-???) ===
Dagli anni '80 fece la sua apparizione VLSI (Very Large Scale Integration).
Questo rese possibile integrare nei ciruiti prima decine di migliaia, poi centinaia di migliaia ed infine milioni di transistors su un singolo chip. Questo conduce a computers sempre pi&ugrave;più piccoli e veloci. Siamo entrati nell'era dei nostri computers moderni.
 
Prima del PDP-1 i computers erano giganteschi, composti di una infinit&agrave;infinità di valvole ed eccessivamente costosi. Soltanto alcuni dipartimenti erano in grado di acquistare un computer.
 
Con l'avvento di VLSI chiunque (potenzialmente) poteva avere un Centro di Elaborazione Dati (CED) in azienda. Cos&igrave;Così inizia l'era dei personal computers (computers personali).
 
Con essi arriva anche la possibilit&agrave;possibilità di creare le proprie applicazioni, utilizzare fogli di calcolo, produrre immagini (anche se all'inizio non di elevatissima risoluzione).
 
== Componentistica ==
Osservando l'architettura proposta da Von Neumann possiamo descrivere un computer come la somma di alcune componenti indispensabili.
 
Il profano che osserva l'interno di un computer per la prima volta si perde nell'osservare tutti i collegamenti, le scatolette scintillanti.. Lo studente di questo corso, invece dovr&agrave;dovrà osservare con maggiore attenzione.
 
Ecco alcuni schemi logigi di un computer moderno:
Riga 208:
 
== Architettura a Livelli ==
Per poter meglio descrivere cosa sia e come funzioni un computer &eacute;é necessario osservarlo ed astrarlo in modo pi&ugrave;più consono. L'immagine sottostante chiarisce come viene pensato e come &eacute;é strutturato:
 
[[Immagine:Architettura_a_livelli.jpg|center|Livelli Architetturali]]
 
Ogni livello &eacute;é una particolare branca dell'informatica moderna. Durante il [Corso di Fondamenti d'Informatica] abbiamo potuto osservare al meglio il Livello 0 (Logica Digitale) e abbiamo scoperto come semplici porte logiche possano formare dei circuiti che sono in grado di memorizzare l'informazione (latch,flip-flop,..) ma anche di trasformarla (shifter,ALU).
 
== Il livello 0: Logica Digitale ==
Riga 219:
 
== Il livello 3: Il Sistema Operativo ==
Questo livello verr&agrave;verrà discusso meglio nel Corso di Sistemi Operativi e nel relativo Laboratorio.
 
 
Riga 231:
* Etc..
 
Non &eacute;é nel nostro interesse visionare questo livello, se non con riferimenti
semplici provenienti dalla stesura di codice MIC / MAL.