Calcolatori Elettroni
(5 crediti)
R. Beraldi
a.a. 2003/2004
Informazione generali sul corso
•
•
•
Obiettivo del corso:
– Conoscenza del funzionamento di un calcolatore elettronico
Verifica
– Prova scritta (4-5 domande) + orale
Libri di testo
– Tanenbaum, “Architettura dei computer un approccio strutturato”,
IV edizione, UTET Libreria
– Cioffi-Jorno-Villani - “Il processore PD32”, MASSON
•
Sito del corso
– http://www.dis.uniroma1.it/~beraldi/didattica.html
•
Materiale integrativo
– Trasparenze del corso, disponibili sul sito del corso
Calcolatori Elettronici, Beraldi, aa 03/04
Programma del corso
•
Introduzione
•
Struttura di un calcolatore
•
Rappresentazione numerica e codici
•
Il livello logico digitale
•
Il processore PD-32
Calcolatori Elettronici, Beraldi, aa 03/04
Introduzione
Calcolatore elettronico: i punti di vista…
•
Utente finale del calcolatore
•
Programmatore
– Utilizza i programmi (o applicazioni), ex: word processor..
– Scrive le applicazioni per il calcolatore
• Singolo, gruppo
Calcolatori Elettronici, Beraldi, aa 03/04
Introduzione
Calcolatore elettronico: i punti di vista…
• Utente finale del calcolatore
– Utilizza i programmi (o applicazioni), ex: word processor..
• Programmatore
– Scrive le applicazioni per il calcolatore
• Singolo, gruppo
• Gestore del calcolatore (sistemista)
– Ha il compito di far funzionare correttamente il calcolatore
• Installare sw, ottimizzazione prestazioni, aggiornamenti, backup dati,..
– A seconda delle dimensione del calcolatore può coincidere con l’utente
finale o con un gruppo di persone..
•
Progettista
–
•
Progetta nuovi calcolatori
Il teorico
–
Studia a livello astratto le proprietà del “calcolo”
•
Esistenza e complessità di algoritmi (programmi) per risolvere un problema
Calcolatori Elettronici, Beraldi, aa 03/04
Introduzione
Hardware e Software
•
Hardware (HW)
–
L’insieme dei componenti elettronici di un calcolatore
•
Circuititi elettronici (Memoria, dispositivi I/O, collegamenti fisici,..)
• Software (SW)
–
Insieme di programmi eseguibili da un calcolatore
–
Software di base (sistema operativo)
•
•
•
•
–
Windows (98, NT,2K,..)
MAC OS
Unix / Linux
…
Applicazioni utente
• Microsoft Office..
–
sw per lo sviluppo di applicazioni
• Compilatori, ambienti integrati di sviluppo (IDE)
• HW e SW sono logicamente equivalenti
Calcolatori Elettronici, Beraldi, aa 03/04
Introduzione
Gamma dei sistemi di calcolo
•
Sistemi “ embedded ”
•
PDA (Personal Digital Assistant)
– Sistemi di calcolcolo incorporati in altri sistemi (ex: automobili,..)
– Agenda elettronica
•
Personal Computer, PC
– Automazione d’ufficio
•
Stazioni di lavoro (Workstation ,WS)
– Progettazione Assistita dal Computer (CAD)
•
Server
– Applicazioni usate da molti utenti, ex web server
•
Mainframe
– Sistemi per la gestione del sistema informativo di una organizzazione (es:banca)
•
Supercalcolatore
– Previsione del tempo
•
Reti di Workstation (NOW)
– Aumento della potenza di calcolo mediante il collegamento di PC o WS mediante rete
ad alta velocità
Calcolatori Elettronici, Beraldi, aa 03/04
Introduzione
Esempio d’impiego di calcolatori
• Posta elettronica
Server
Applicazione
Client di posta
Calcolatori Elettronici, Beraldi, aa 03/04
Server
Client
Breve storia del calcolo automatico
Gli antenati (1642-1944)
•
Prima macchina da calcolo: Pascalina, costruita da B.Pascal(1623-1662)
•
Progetto della prima macchina programmabile, la macchina analitica,
da parte di C. Babbage nel 1834
– basata su dischi meccanici combinatori in movimento per effettuare
operazioni di addizione
– Programmazione delle operazioni con memorizzazione dei risultati intermedi
– Uso di schede perforate per ingresso dati, già impiegate per “la
programmazione” dei telai da Jaquard
– Prima attività di programmazione da parte di Ada Lovelace (nome dato ad
un linguaggio di programmazione attuale, ADA)
•
Primi tentativi d’impiego di dispositivi elettromeccanici (relè) per
lavorare su grandezze binarie, calcolatore Z1 (Stibbitz,1937 - Zuse)
•
Aiken progetta e porta a termine Mark I (1944)
– Primo calcolatore “general purpose”
Calcolatori Elettronici, Beraldi, aa 03/04
Breve storia del calcolo automatico
Prima generazione – valvole termoioniche (1945-1955)
• COLOSSUS
– Calcolatore Special-purpose impiegato per la decodifica di messaggi in
codice durante la II guerra mondiale
– Partecipazione di A. Turing
– Primo calcolatore digitale al mondo (funzionante già nel 1943)
•
ENIAC (Electronic Numerical Integrator and Calculator)
•
IAS : Primo calcolatore con programma memorizzato (1952)
– primo calcolatore elettronico programmabile, realizzato da Eckert e
Mauchly (Moore School della Pennsylvania University)
– Pensata per calcoli balistici durante la II guerra mondiale
– 18.000 tubi a vuoto, 30 tonnellate, forma da U, 1900 somme al secondo
– Programmabile mediante collegamento di cavi esterni
– Esistenza resa nota alla fine della guerra (1946)
– John v. Neumann (“architettura di von Neumann”)
Calcolatori Elettronici, Beraldi, aa 03/04
Breve storia del calcolo automatico
La macchina di von Neumann
Memoria (dati e programmi)
Unità logica aritmetica con
registro accumulatore
Unità di controllo
Dispositivo ingresso
Dispositivo di uscita
Esempio di programma
Load (INPUT)
//Copia il contenuto dell’input nell’accumulatore
Add B
//Somma il contenuto dell’accumulatore con il contenuto di B, risultato
//nell’accumulatore
Store (OUTPUT)
//Copia l’accumulatore in uscita
Calcolatori Elettronici, Beraldi, aa 03/04
Breve storia del calcolo automatico
Seconda generazione
• Seconda generazione (1955-1965), basata sui transistor
–
TX-0 / TX-2 macchine sperimentali
–
Nasce la DEC, Digital Equipment Corporation
• PDP-1 (simile al TX-0)
• PDP-8 Primo minicomputer, annunciato nel 1965
– Usa un bus (unico) per collegare tutte le parti
– 50.000 esemplari venduti
–
Nasce la CDC, Control Data Corporation
• Supercomputer (Cray-1)
Calcolatori Elettronici, Beraldi, aa 03/04
Breve storia del calcolo automatico
Terza generazione
• Terza generazione (1965-1980), circuiti integrati
–
–
IBM S/360 prima “famiglia” di calcolatori
•
Immesso sul mercato nel 1964
•
Idea nuova: Compatibilità fra elementi della famiglia
Intel 4004 (1971)
•
Primo microprocessore
Calcolatori Elettronici, Beraldi, aa 03/04
Breve storia del calcolo automatico
Quarta generazione –integrazione a larga scala (VLSI)
•
1980: Inizia la diffusione dei Personal Computer (PC)
•
Progressiva riduzione dell’importanza dei centri di calcolo (CED), unico
luogo in cui sono gestiti e calcolatori
•
IBM diffuse il progetto dei processori dando luogo alla creazione di
“cloni” del PC IBM
•
Altre ditte in campo (Apple, Amiga, Atari,..)
•
La diffusione del PC si accompagna al successo del Sistema Operativo
Windows derivato dal SO OS/2 simile a quello legato ai PC Apple
Calcolatori Elettronici, Beraldi, aa 03/04
Alcune foto
PDP-8 (1965)
ENIAC- (1946)
primo minicalcolatore
primo calcolatore moderno
Ampiamente diffuso
Calcolatori Elettronici, Beraldi, aa 03/04
COLOSSUS
Usato per decifrare i messaggi dei tedeschi
Sembra il primo vero computer
Calcolatori Elettronici, Beraldi, aa 03/04
Personal Computer
CRAY-1 (1974)
PDA
primo supercalcolatore vettoriale
Calcolatori Elettronici, Beraldi, aa 03/04
Calcolatore elettronico oggi…
•
Sistema elettronico digitale programmabile
–
Sistema
• Parti (o componenti) che interagiscono in modo organico fra loro
–
Elettronico digitale
• Sfrutta componenti elettronici digitali (porte logiche)
• In particolare lavora su grandezze binarie (bit) che possono cioè assumere due
soli valori, indicati convenzionalmente con 0 e 1
–
Programmabile
• Il comportamento del sistema è flessibile e specificato mediante un programma,
ossia un insieme di ordini
• Si fonda sull’ Architettura di von Neumann
–
Altre architetture (ex: calcolatori paralleli, multiprocessore, .. sono possibili
man non trattate nel corso)
Calcolatori Elettronici, Beraldi, aa 03/04
La nozione di macchina …
• Per studiare l’architettura di un calcolatore è conveniente introdurre la
nozione astratta di macchina
• Essa è un’entità in grado di eseguire istruzioni appartenenti ad un
insieme, detto set istruzioni o linguaggio
– Una macchina può essere fisica o virtuale
– Spesso si usa il termine livello è per indicare una macchina
• Macchina ⇔ Linguaggio
• Una macchina è composta da un insieme di risorse che sono controllare
e gestite dalle istruzioni
– Il significato di ogni istruzione è dato facendo riferimento alle risorse
• Ammettiamo di aver definito un linguaggio L1, come realizzare la
macchina che esegue le istruzioni di L1?
Calcolatori Elettronici, Beraldi, aa 03/04
L’hw come supporto all’esecuzione
• Possiamo considerare l’insieme di componenti elettronici (porte logiche,
elementi di memoria) come una macchina (macchina fisica,o di livello
0, M0) dotata concettualmente di un linguaggio L0, costruita per
eseguire materialmente tutte le istruzioni di L1
– In realtà il linguaggio L0, che controlla le risorse di M0 è solo concettuale
poiché il comportamento di M0 è “scritto” nei circuiti elettronici
• Se P è un programma scritto in L1, tale macchina esamina una
istruzione di P per volta e la esegue (è un interprete di L1 realizzato in
hw)
– Ogni istruzione in L1 corrisponde ad una sequenza di istruzioni in L0, ossia
una serie di attività dei circuiti elettronici
P
Macchina
fisica
Calcolatori Elettronici, Beraldi, aa 03/04
“Interprete” di L1
che esegue le istruzioni di L1
L’hw come supporto all’esecuzione
•
Da un punto di vista astratto è conveniente pensare di avere a
disposizione una macchina virtuale M1, composta da opportune risorse,
programmabile mediante il linguaggio L1
•
La macchina M1 è gerarchicamente superiore ad M0, nel senso che è
essa è più astratta (anche se non di molto) di M0
M1,L1
M0,L0
Calcolatori Elettronici, Beraldi, aa 03/04
Il livello 1
microarchitettura
•
Le risorse principali di tale livello sono
•
Registri (in grado di memorizzare gruppi di bit, ex: 16-32 bit)
•
ALU (Unità Aritmetica Logica)
•
Data-path (connessioni per il trasferimento dei dati)
•
A questo livello esiste un programma (microprogramma) per il controllo
del data-path. Il programma è un interprete del linguaggio di livello 2
–
Nota: in alcune architetture tale interprete sw non esiste ed il data-path è
controllato direttamente dall’hw
Calcolatori Elettronici, Beraldi, aa 03/04
Realizzazione di una macchina virtuale
Interpretazione
•
E’ possibile ora scrivere un programma in L1 che sia un interprete di un
altro linguaggio L2
•
In questo modo “realizzo” la macchina virtuale M2
Programma scritto in L2
P
M2,L2
M2
Interpretazione
Interprete di L2
scritto in L1
M1,L1
Esecuzione via hw
Macchina
fisica
M0,L0
Calcolatori Elettronici, Beraldi, aa 03/04
Interpretazione
•
equivalenti
•
∈ L2
σ(IST)={i1,..,im} ij ∈ L1
In generale ad una istruzione IST
corrisponde una sequenza di istruzioni
Dato un programma in L2, l’interprete esamina la prima istruzione del
programma ed esegue la sequenza equivalente, poi esamina la seconda
istruzione e cosi via..
Istruzione
macchina
µI
µI
µI
Istruzione L2
…
µI
Sequenza equivalente
σ
Il livello 2
ISA (Instruction Set Architecture)
•
Il livello 2 è il livello più basso al quale un utente possa programmare un
calcolatore
–
•
Registri, locazioni di memoria, ..
In alcuni casi la macchina di livello ISA è realizzata direttamente poggiandosi
sull’hw (nelle cosiddette macchine RISC);
–
•
La macchina del livello microarchitettura
non è programmabile
In altri è ottenuta nel modo descritto, ossia mediante un interprete sw
(microprogramma) eseguito dall’hw (macchine CISC)
livello ISA
livello ISA
Interprete
Macchina fisica
Macchina fisica
Realizzazione mediante
logica cablata
Realizzazione mediante
Calcolatori Elettronici, Beraldi, aa 03/04
logica microprogrammata
Riepilogo primi tre livelli
ISA
•
Interprete sw o controllo cablato
microarchitettura
dispositivi logici
Calcolatori Elettronici, Beraldi, aa 03/04
CPU
Il Sistema operativo (livello 3)
•
Il Sistema Operativo (SO) consente all’utente di usare l’elaboratore ragionando
in termini molto più astratti rispetto ai livelli precedenti
•
Ad esempio, il SO fornisce l’interfaccia mediante la quale un utente interagisce
con l’elaboratore (spesso interfaccia grafica)
•
–
Ad esempio l’utente “ordina all’elaboratore” di fare qualcosa
–
..fornisce l’astrazione del file
Il sistema operativo viene caricato in memoria all’accensione del calcolatore
(fase di bootstrap) e rimane residente in memoria, diventando il gestore delle
risorse
•
E’ un interprete ibrido (alcune istruzioni sono quelle del livello ISA, altre sono
realmente interpretate)
•
Le “istruzioni” nuove del SO si chiamano “system
–
call”
Ad esempio trasferisci un blocco dati dal disco alla memoria
Calcolatori Elettronici, Beraldi, aa 03/04
Un esempio “storico”
Istruzioni del SO
Calcolatori Elettronici, Beraldi, aa 03/04
Sistemi operativi
Multitasking (nozioni di base)
• E’ una tecnica che consente l’esecuzione “contemporanea” di diversi programmi
(task)
• Il SO assegna a turno la CPU ai vari task secondo qualche politica (scheduling)
• Per esemplificare, ogni task usa la CPU per un tempo fisso ∆t (es: ~ms) e dopo
aspetto il proprio turno. Gli utenti che interagisco con i task hanno l’impressione
che essi progrediscano in parallelo
task
task
task
task
Macchina
Virtuale
dedicata
Macchina
Virtuale
dedicata
servizi
forniti dal SO
Sistema Operativo
Hardware
≡
Realizzazione di una macchina virtuale
Traduzione
•
Un altro modo per realizzare una macchina virtuale è mediante la
tecnica della traduzione
•
Se M è la macchina da realizzare, un qualunque programma P scritto
i
i
in L viene eseguito nel seguente modo:
i
–
Ogni istruzione di Pi viene sostituita con la sequenza equivalente in di
istruzioni in Li-1
–
Il programma risultante da tutte le sostituzioni (traduzione), sia esso Pi , è
eseguito da Mi-1
•
Impiegato di norma per implementare i livelli 4 e 5
Pi
Calcolatori Elettronici, Beraldi, aa 03/04
traduttore
Pi-i
Livello assembler
•
E’ una rappresentazione simbolica di uno dei livelli sottostanti
•
Di norma è la rappresentazione simbolica della macchina ISA
–
Ogni istruzione è rappresentata simbolicamente (codice assembler), ad
esempio ADD A,B
–
La macchina mette a disposizione delle “macro” (gruppi di istruzioni) e delle
pseudo-istruzioni (direttive per l’assemblatore)
Programma
in codice
assembler
Assemblatore
ADD A,B
Programma
eseguibile dal
Livello ISA
01010101001
Calcolatori Elettronici, Beraldi, aa 03/04
Livello applicativo
• E’ il livello “visto” normalmente da chi scrive applicazioni per uno
specifico problema (es programmi in java)
int i;
i=i+2;
…
Programma
in Java
bytecode
Compilatore
Programma
eseguibile
dall’interprete
java (jvm)
JVM
eseguita da
Macchina ISA
Calcolatori Elettronici, Beraldi, aa 03/04
Architettura a livelli di un calcolatore
Macchina virtuale Mn e
linguaggio macchina Ln
• Un calcolatore è costituito da varie
macchine virtuali
• Architettura di un calcolatore è la
descrizione delle caratteristiche
delle varie macchine virtuali (livelli)
Macchina virtuale M1 e
linguaggio macchina L1
Macchina fisica MO e
linguaggio macchina L0
Calcolatori Elettronici, Beraldi, aa 03/04
Tipica divisione a livelli di un calcoltare
•
Livello 5: Linguaggi di alto livello
–
–
•
•
C,C++,Java,..
…
Il livello 2: (macchina ISA- Instruction
set Architecture) è il più basso livello
al quale un utente può programmare
la macchina
•
Livello 1: Le istruzioni di questo livello
si chiamano microistruzioni (µI). Il
microprogramma (se presente) è un
interprete della macchina M2 e
controlla il data path
•
La macchina di livello 0 è composta
da elementi fisici (componenti
elettronici digitali, detti porte logiche)
Calcolatori Elettronici, Beraldi, aa 03/04
Approfondimenti e curiosità
• Leggere capito 1 del Tanenbaum
Calcolatori Elettronici, Beraldi, aa 03/04