Sunteți pe pagina 1din 53

Corso di

Architettura degli Elaboratori 1

Lezione 1 Evoluzione storica dei computer


(Cap. 1 del libro di testo)

A.A. 2018-2019
Alcuni termini: Informatica
Per Informatica (computer science) si intende l’acronimo di
INFORMAzione automaTICA.
Si vuole studiare sia la rappresentazione che l’elaborazione
automatica della informazione. L’Informatica è preesistente
all’elaboratore. Possiamo dire che l’Informatica è una scienza
come la Fisica?
– Approccio scientifico: Sì, perché fa uso di rigorosi metodi
scientifici;
– Approccio epistemologico: No, perché una disciplina che fa
uso di metodi scientifici (come ad esempio la psicologia o
l’astrologia) non è necessariamente una scienza.
• Il problema è oggetto di discussione
Alcuni termini: Algoritmo e programma

Se un algoritmo è una sequenza finita di azioni in grado


di risolvere un problema in un tempo finito, un
programma è la codifica di un algoritmo scritta in un
linguaggio comprensibile dalla macchina che lo esegue.
Alcuni termini

• Per computer (elaboratore) si intende un mezzo


strumentale (macchina) usato per:

• Rappresentare;
• Memorizzare;
• Elaborare delle informazioni:
– Semplici (caratteri, numeri, ecc.);
– Complessi (video, suoni, grafici, emoticon, ecc.)
Bit

• Poiché a livello fisico gli stati sono solo due («acceso»


o «spento», «cunetta» o «superficie piatta», ecc.).,
inevitabilmente la rappresentazione delle
informazioni passa attraverso un sistema di
numerazione a base 2 = {0, 1}
• Ciascun elemento (0,1) viene detto bit
Byte e parole

• Quanti bit sono necessari per rappresentare le


informazioni numeriche, alfabetiche, punteggiature,
lettere accentate, ecc.?
– Con 1 bit -> 21 = 2 informazioni: {0, 1}
– Con 2 bit -> 22 = 4 informazioni: {00, 01, 10, 11}
– Con 3 bit -> 23 = 8 inf.: {000, 001, 010, 011, …, 111}
–…
– Con 8 bit ->28 = 256 informazioni, che sono sufficienti.
• Questa configurazione (8 bit) prende il nome di byte;
• Una parola può essere costituita da 1 o più byte
Il problema
• C’è una dicotomia tra quello che gli esseri umani vogliono fare (X) e
ciò che i computer possono fare Y;
• Soluzione: progettare nuove modalità di lavoro per i computer che
siano più convenienti (richiedano meno sforzi per il loro utilizzo) per
gli esseri umani;
• Il computer usa un linguaggio L0; gli esseri umani preferiscono L1.
• Come eseguire i programmi (un insieme di istruzioni) scritti in L1?
Utilizzando un:
– Traduttore: un componente che sostituisce ciascuna istruzione
di L1 con un’istruzione di L0 oppure
– Interprete: un programma in L0 che riceve programmi L1 in
input ed esegue ciascuna istruzione di L1 utilizzando
un’istruzione in L0
Il problema
• Si può pensare ad una macchina virtuale M1 (che esegue
un interprete) che lavora in L1 e a una macchina fisica M0
che lavora in L0, assumendo per ragioni di praticità che
L0 e L1 non siano troppo differenti:
– Abbiamo risolto il problema o lo abbiamo solo
ridimensionato?
• Possiamo pensare ad una seconda macchina M2 dotata di un
linguaggio L2, più vicino al nostro modo di pensare;
• E così via, creando una serie di livelli
• Solo L0 è eseguito dalla macchina; programmi scritti in
L1, L2, … vengono interpretati o tradotti;
– Chi scrive a livello n non è veramente interessato a
sapere cosa succede nei livelli inferiori
Macchina multilivello (1/2)
Macchine multilivello
• Livello 0 logico digitale: è il più basso;
• Livello 1 micro-architettura, composto da una memoria locale e un
circuito in grado di calcolare semplici operazioni aritmetiche;
• Livello 2, detto Instruction Set Architecture (ISA). E’ il livello del
linguaggio macchina;
• Livello 3, che contiene un misto di istruzioni del Livello 2 più alcune
interamente nuove. E’ detto Ibrido;
• Il livello 4, detto Assembly, è la prima forma di linguaggio simbolico
(o linguaggio di basso livello). Programmi scritti a questo livello
sono tradotti da un assembler ai livelli 1, 2 o 3 e poi interpretati;
• Il livello 5 è quello dei linguaggi ad alto livello (C, C++, Java, ecc.),
che vengono tradotti a livello 4 o 3 da un compilatore
(occasionalmente da un interprete, come accade in Java).
Macchina multilivello (2/2)

12
Una storia (parziale) del calcolo automatico

1. Generazione 0: Calcolatori meccanici (1642-1945)


2. I Generazione: valvole (1945-1955)
– L’architettura di von Neumann
3. II Generazione: transistor (1955-1965)
4. III Generazione: Circuiti integrati (1965-1980)
– Il personal Computer
5. IV Generazione: PC e VLSI
6. V Generazione
Calcolatori meccanici (1642-1945)
Calcolatori meccanici (1642-1945)
• Blaise Pascal (1623-1662), matematico, fisico, filosofo e
teologo francese (Pensieri).

• Pascalina: calcolatrice meccanica a manovella. Eseguiva


addizioni e sottrazioni; usata per aiutare il padre, un
contabile.
Calcolatori meccanici (1642-1945)
• Gottfried von Leibniz (1646-1716): matematico, fisico, teologo e
filosofo tedesco. Insieme a Newton, scopre il calcolo infinitesimale.
Propone un metodo meccanico che dimostri la correttezza formale
di un argomento in caso di disputa (Calculemus!).

• Calcolatrice meccanica in grado di eseguire le quattro operazioni


aritmetiche.
Calcolatori meccanici (1642-1945)
Epoca Vittoriana: Charles Babbage (1792-1871):
Dopo progetti preliminari iniziò la costruzione della
macchina Analytical Engine (1834).

La macchina aveva quattro componenti:


– il magazzino (memoria 1000 numeri da 40
decimali);
– il mulino (unità di calcolo);
– la sezione di input (a schede perforate);
– la sezione di output (su bande perforate o su
stampa).

Babbage non riuscì a costruire la sua macchina a causa


della mancanza di fondi. Costruita in tempi moderni, si
può ammirare al museo della Scienza di Londra
Calcolatori meccanici (1642-1945)

Era progettata con 5.000 ruote


dentate per eseguire 1
addizione/secondo (alcuni
disegni originali si trovano
all’Accademia delle scienze di
Torino) .

La macchina prevedeva un
linguaggio di programmazione
che includeva istruzioni loop e
branching.
Ada Lovelace The countess of computing
• Per programmare la sua macchina Babbage
assunse Ada Lovelace, matematica figlia del
poeta romantico inglese Lord Byron.

• Il suo contributo fu senz’altro importante,


perché Lovelace capì che la macchina
esprimeva un potenziale maggiore del
semplice calcolo.

• Chi conosce l’inglese può approfondire la


sua storia nel bel documentario prodotto
dalla BBC4, Calculating Ada.

• Un linguaggio di programmazione porta il


suo nome.
Calcolatori meccanici (1800 - 1945)
• IBM H. Hollerith (1869 - 1929)
Costruì un sistema elettromeccanico a
schede perforate per l’analisi dei dati del
censimento USA del 1890. E’ ricordato
come fondatore dell’IBM (International
Business Machines).

• Il relè. Konrad Zuse:


Verso la fine degli anni ‘30 costruì una
macchina funzionante a relè (un
deviatore che viene azionato da
un elettromagnete). Il suo lavoro andò
distrutto nel ‘44 in un bombardamento
durante la II guerra mondiale e non ebbe
molta influenza.
Calcolatori meccanici (1800 - 1945)
• Sistema binario J. Atanasoff e G. Stibbitz
negli Stati Uniti stavano lavorando al progetto
di calcolatori: Atanasoff fu il primo a proporre
l’uso del codice binario, ma il suo calcolatore
non divenne mai operativo. Stibbiz riuscì a
costruire una macchina funzionante che
mostrò in pubblico nel ’40
• MARK-1 Howard Aiken
Si ispirò ai lavori di Babbage e costruì una
macchina a relè chiamata MARK-1 (1944):
– 72 parole di 23 cifre decimali;
– tempo di esecuzione: 1 istruzione in 6
sec;
– I/O su nastro di carta perforato.
Seguì il MARK-II ma la tecnologia dei relè
stava oramai diventando obsoleta.
II Guerra Mondiale: Enigma, Colossus e Alan Turing

• La seconda guerra mondiale


diede un grande impulso allo
sviluppo dei calcolatori;
• Impiego della scienza per fini
militari;
• A. Turing (1912 -1954) fu un
matematico e uno dei padri
dell’Informatica;
• Risolse alcuni problemi che
cambiarono le sorti del conflitto
ENIGMA
• Il lavoro di Turing a Bletchley Park
(UK) consisteva nel tentativo di
risolvere il codice di Enigma, una
macchina per codificare i messaggi
dei sommergibili tedeschi che di
fatto effettuavano un blocco navale
dell’Inghilterra.
• Alcuni matematici polacchi avevano
capito come “leggere” i messaggi di
Enigma, con il risultato che i
Tedeschi decisero di cambiare il
sistema di encrittazione tutti i
giorni;
La «bomba»
• Turing realizzò un sistema
elettromeccanico chiamato «bomba» in
grado di compiere una ricerca esaustiva
di tutte le possibili combinazioni del
codice Enigma in tempi ragionevoli;
• Era un armadio di una tonnellata di
peso;
• La missione di Turing fu un successo.
Enigma fu decifrato e le sorti del
controllo dell’oceano Atlantico volsero a
favore dell’Inghilterra;
• Una macchina Enigma è presente al
Museo Navale di Tortona (aperto solo il
Sabato)
I calcolatori durante la guerra

Il COLOSSUS fu costruito per


decifrare i messaggi in codice dei
tedeschi (1943) come progetto
segreto del governo britannico.
La sua esistenza venne svelata
solamente negli anni ’70.

A questo progetto partecipò


anche Alan Turing.
Turing e l’Intelligenza Meccanica

• Nel 1950, Turing scrisse un articolo


miliare sulla rivista Mind dal titolo
Computing machinery and
intelligence che proponeva l’idea di
un’intelligenza meccanica (con il
passare degli anni, il termine si
trasformò in artificiale, acquisendo
sfumature controverse) e un test (il
test di Turing, basato su un gioco di
imitazione) per stabilire se il
comportamento di una macchina
fosse intelligente o meno
Sulla vita di Turing

• Sia cinema che divulgazione


hanno affrontato la vita di Alan
Turing. Alcuni film:
– «The imitation game», 2014
– «Enigma», 2001
– «Breaking the code», 1996
• Tra le biografie:
– Andrew Hodges, «Alan
Turing. Storia di un enigma»
La prima generazione
I Generazione: valvole (1945-1955)
I tubi a vuoto J.W. Mauchley e J.P. Eckert:
Costruirono, presso la Università della Pennsylvania, e
su finanziamenti del DoD una macchina a tubi a vuoto
(amplificatore) chiamata ENIAC (Electronic numerical
Integrator and Computer).
• Era costruita con 18.000 valvole termoioniche,
1.500 relè, era lunga 25 m ed alta 3, per 25
tonnellate di peso e richiedeva 140 KW di potenza.
• Disponeva di 20 registri in grado di memorizzare
numeri da 10 cifre decimali.
• La programmazione avveniva modificando
manualmente la posizione di 6.000 interruttori e
connessioni elettriche. Era capace di 5.000
operazioni/sec.
I Generazione: valvole (1945-1955)

La macchina fu ultimata
nel 1946, e diede origine
ad una grande fioritura
di iniziative.
J.W Mauchley e J.P. Eckert
fondarono nel 1951 una
compagnia per
commercializzare le loro
macchine: tale compagnia
diverrà la Unisys (computer
UNIVAC)
I Generazione: valvole (1945-1955)
• EDSAC M. Wilkes:
Costruì nel 1949 la macchina EDSAC presso la
Università di Cambridge (UK).

• J. Von Neumann (1903-1957):


Ungherese e probabilmente tra i più grandi
matematici del secolo scorso. Si interessò di
calcolatori presso l’Università di Princeton
(USA), e costruì la macchina IAS.
Per la prima volta le istruzioni erano
codificate in modo da risiedere nella stessa
memoria dei dati.
L’architettura "Von Neumann" è diventata lo
standard per le macchine a processore
singolo.
A proposito di von Neumann
• A 6 anni parlava già molte lingue. A 23
era già laureato in ingegneria Chimica
e aveva un dottorato in Matematica;
• Negli anni ’30, a causa delle leggi
razziali, si trasferisce negli USA, dove
si occupa di meccanica quantistica e
più avanti, della teoria dei giochi;
• Partecipa al progetto Manhattan per
la costruzione della prima bomba
nucleare;
• Diventa consigliere della CIA nel 1951
ed è membro della Commissione
dell’Energia Automatica
Chi era veramente von Neumann?
I pareri sono discordanti. In Italia, ha molti
ammiratori:
– Giorgio Israel ha scritto una biografia
positiva di Von Neumann («Il mondo
come gioco matematico», ed.
Boringhieri)
ma non mancano i denigratori:
– Piergiorgio Odifreddi lo giudica
severamente in
http://didattica.uniroma2.it/assets/up
loads/corsi/38779/John_von_Neuman
n,_Lapprendista_stregone_.pdf
– Von Neumann è stato spesso
paragonato allo scienziato pazzo e
criminale Dr. Stranamore
nell’omonimo film di S. Kubrick
Architettura di von Neumann

4096 parole da 40
bit
Istruzioni codificate
su 20 bit
I Generazione: valvole (1945-1955)

• IBM:
La IBM era una piccola
azienda che costruiva
macchine per
l’ordinamento
meccanico di schede
perforate. Nel 1953
produsse il suo primo
calcolatore a tubi a
vuoto denominato
701.
Seconda generazione
II Generazione: transistor (1955-1965)
• Il Transistor fu inventato nei laboratori Bell
Telephone nel 1948 da J. Bardeen, W. Brattain e W.
Shockley (che ricevettero il premio Nobel per la
fisica nel 1956).

• Il transistor (transconductance varistor), è un


componente elettronico realizzato come silicio e
germanio (semiconduttori). Al corpo del transistor
sono collegati tre terminali utilizzati per connettere
il dispositivo al circuito esterno: applicando una
tensione elettrica a due dei terminali è possibile
regolare il flusso di elettroni che attraversa il
transistor stesso, potendo così che la tensione o la
corrente elettrica in uscita sia superiore a quella in
entrata.

• Detto in altre parole, il transistor si trova un circuito


elettrico come amplificatore o come interruttore.
II Generazione: transistor (1955-1965)
La IBM produsse una versione a
transistor delle sue macchine
precedenti con la sigla 7090 (e poi
7094), che diventò la macchina
dominante per applicazioni
scientifiche negli anni ’60.

Contemporaneamente, l’IBM iniziò


la produzione di una nuova linea di
calcolatori (con la sigla 1401) di più
piccole dimensioni e orientati ad
applicazioni aziendali e commerciali,
con poca potenza di calcolo.
II Generazione: transistor (1955-1965)
Nel 1957 Kenneth Olsen fondò la DEC (Digital Equipment Corporation) e
commercializzò nel 1961 il PDP-1. Fu una macchina estremamente innovativa
soprattutto per il basso costo: era nato il primo mini-calcolatore. Aveva 4K
parole a 18 bit con tempo di ciclo di 5 microsec (eseguiva 200.000 istr/sec).
II Generazione: transistor (1955-1965)

• Pochi anni dopo DEC introdusse il modello PDP-8


molto più economico. Il PDP-8 introdusse una novità
architetturale consistente nell’avere un unico bus.
II Generazione: transistor (1955-1965)

• ALGOL 60 Borroughs B5000 (1963) macchina pensata


per eseguire linguaggi ad alto livello (Algol 60): per la
prima volta si investe sullo sviluppo del software,
oltre che dell’hardware.

• CDC 6600 (1964) progettato da Seymour Cray era il


primo calcolatore con funzioni in parallelo pensato
per eseguire calcoli ad alta velocità (super calcolatori).
Terza generazione
Il circuito integrato

• Un circuito integrato è una piastrina di silicio (o chip,


di dimensioni comprese tra 5 × 5 mm e 1 × 1 cm),
sulla cui superficie vengono realizzati e collegati
transistor e dunque porte logiche, che realizzano uno
o più circuiti digitali;
• La piastrina integra:
– i transistor;
– i collegamenti tra i transistor;
– i collegamenti con i morsetti di ingresso/uscita del
chip
III Generazione: Circuiti Integrati (1965-1980)

• L’IBM commercializzò una famiglia di


calcolatori sotto la sigla Sistema /360.
Fu la prima macchina ad adottare la
multiprogrammazione:
– (più programmi possono risiedere
contemporaneamente in memoria
centrale)

• La DEC lanciò il PDP-11 che vantava un


rapporto costo/prestazioni favorevole e
si diffuse in università, centri di ricerca e
aziende.
La quarta generazione
IV Generazione: PC e VLSI (1980 - …)

• La capacità di compattamento di più transistor in un


singolo circuito integrato cresce rapidamente negli
anni.
Denominazione Trans/chip
SSI Small Scale Integration < 10
MSI Medium Scale Integration 10 − 100
LSI Large Scale Integration 100 − 100.000
VLSI Very Large Scale Integration > 100.000
Il Personal Computer (PC)
L’evento che ha avuto il
maggior impatto sulla
diffusione capillare dei
sistemi informatici è
stato l’avvento dei PC
(Personal Computer).
Calcolatori
meccanici ed
elettromeccanici
I generazione
Primo computer con microprogramma
Valvole
CALCOLATORI ELETTRONICI

II generazione
Transistor

III generazione
Circuiti Integrati

IV generazione
VLSI
Quinta Generazione (1981)
• All’inizio degli anni ‘80, il governo
giapponese investe 500 M$ per
costruire macchine basate
sull’Intelligenza Artificiale in grado di
sorpassare le macchine «stupide» della
generazione precedente;
• Il progetto è un fiasco (un po’ come la
macchina di Babbage) perché è
visionario e troppo in anticipo sui
tempi, ma raggiunge almeno uno
scopo:
– La miniaturizzazione dei computer:
PDA, smartphones, ecc.
Fattori tecnologici chiave
I fattori tecnologici che hanno giocato un ruolo
fondamentale nello sviluppo della società informatizzata
sono molteplici e di varia natura.
Tra i più importanti vanno annoverati:
• La diminuzione delle dimensioni;
• L’aumento della velocità;
• La diminuzione dei costi.
L’aumento della densità di integrazione è dovuto ad una
riduzione delle dimensioni.
La riduzione delle dimensioni favorisce un aumento della
velocità di commutazione e una diminuzione dei costi.
Denominazione Trans/chip
SSI Small Scale Integration < 10
MSI Medium Scale Integration 10 − 100
LSI Large Scale Integration 100 − 100.000
VLSI Very Large Scale Integration > 100.000

Gordon Moore (cofondatore Intel) osservò che ogni nuova


generazione di chip (ogni 3 anni) aveva il quadruplo di
capacità di memoria, e predisse che questo andamento
sarebbe continuato nei decenni a venire (legge di Moore,
anche se è più corretto parlare di osservazione empirica)
Legge di Moore (1/3)
• La legge di Moore predice l’andamento nel tempo
dell’evoluzione della capacità di integrazione
(Gordon Moore, cofondatore Intel, formulò la sua prima «legge» nel 1965)

Dimensioni delle
memorie in bit

Il numero di transistor
integrati in un chip
RADDOPPIA ogni 18 mesi.
SCALA LOGARITMICA
LIMITI FISICI

L’andamento esponenziale della densità di integrazione


e della velocità dei processori è destinato a fermarsi a
causa di limiti fisici:
– Lo spessore di un transistor potrebbe diventare
eguale a pochi atomi;
– Sviluppo di calcolatori basati sulla meccanica
quantistica
Fattori innovativi nell’evoluzione delle
architetture
L’aumento della complessità dell’hardware ha consentito un
parallelo sviluppo di elementi innovativi nel software, e
nelle architetture dei sistemi di calcolo.
In generale, gli elementi innovativi sono tesi ad aumentare
il numero di istruzioni eseguibili in una unità di tempo a
parità della frequenza di clock del processore:
• Time sharing;
• Memorie cache;
• Pipeline;
• Esecuzione parallela;
• Sistemi distribuiti.