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