La macchina di Von Neumann
Architettura di un computer
n
n
Architettura organizzata secondo il modello della
macchina di von Neumann definita nei tardi anni ‘40
all’Institute for Advanced Study di Princeton.
È costituita da quattro elementi funzionali fondamentali:
n
n
n
n
Unità centrale di elaborazione (CPU);
Memoria Centrale;
Periferiche (I/O);
Bus di sistema.
CPU
MEMORIA
CENTRALE
Architettura computer
Bus di sistema
PERIFERICHE
Prof. Paolo Michelini
Elementi base
n
n
n
n
n
A fianco di Von Neumann l'elaboratore IAS di Princeton o macchina di Von
Neumann, ultimata nel 1952. Nella parte bassa dell'elaboratore si puo' vedere
una fila di tubi catodici (CRT) utilizzati come memoria. Nel 1955 tali memorie
vengono sostituite da quelle a nuclei di ferrite.
Architettura computer
Central Processing Unit (CPU)
La CPU contiene i dispositivi elettronici in grado di acquisire, interpretare
ed eseguire le istruzioni di ogni programma, trasformando i dati. Le
istruzioni vengono eseguite in sequenza. Dati ed istruzioni vengono
trasferiti da (e verso) la memoria centrale.
La memoria centrale contiene sia le istruzioni che i dati (informazioni
necessarie per eseguire un programma). Ha dimensioni limitate ed è
volatile (cioè le informazioni memorizzate vengono perse allo spegnimento
del computer).
SR
PC
Il bus di sistema collega questi elementi funzionali. Fornisce il supporto
fisico per la trasmissione dei dati tra i vari elementi.
Prof. Paolo Michelini
A
B
INTR
Le periferiche consentono uno scambio di informazioni fra l’elaboratore e
l’esterno (ingresso/uscita, memoria secondaria). In particolare, la memoria
secondaria (o memoria di massa) viene utilizzata per memorizzare grandi
quantità di informazioni in modo persistente. Ha dimensioni elevate, ma
l’accesso è meno rapido, rispetto alla memoria centrale.
Architettura computer
Prof. Paolo Michelini
ALU
IR
DR
Architettura computer
CU
AR
Clock
Prof. Paolo Michelini
1
Registri principali
Elementi della CPU
n
n
l’unità aritmetico-logica (Arithmetic Logic Unit, ALU) esegue le
operazioni aritmetiche e logiche richieste per l’esecuzione delle
istruzioni;
n
n
l’unità di controllo (Control Unit, CU), controlla e coordina l’attività
della CPU. In particolare, è responsabile del prelievo, della
decodifica delle istruzioni e dell’invio dei segnali di controllo per
effettuare i passi per l’esecuzione di un’istruzione;
n
il clock (orologio) “cadenza” le operazioni elementari, permettendo il
sincronismo delle operazioni;
n
vari registri (ad esempio, A, B, PC, SR, etc.). Un registro è una
locazione utilizzata per memorizzare dati, istruzioni, o indirizzi
all’interno della CPU. L’accesso ai registri è molto veloce.
n
n
n
n
n
Nei moderni sistemi di elaborazione la CPU è realizzata da un unico
circuito integrato (chip): il microprocessore.
Architettura computer
Prof. Paolo Michelini
DR (Data register o registro dati): viene utilizzato per trasferire
dati da e verso la memoria centrale.
AR (Address Register o registro indirizzi): viene utilizzato per
memorizzare l’indirizzo della cella corrente nella memoria
centrale (la sorgente/destinazione del trasferimento di dati).
PC (Program Counter), registro “contatore” del programma.
Contiene l’indirizzo della prossima istruzione da eseguire.
IR (Instruction Register), registro istruzione corrente. Contiene,
istante per istante, l’istruzione che è attualmente in esecuzione.
A, B: Registri accumulatori o di lavoro. Contengono operandi e
risultati delle operazioni svolte dalle ALU.
INTR (Interrupt Register o registro interruzioni): legato alla
richiesta di operazioni dalle periferiche di I/O.
SR (Status Register o registro di stato), i cui bit forniscono
informazioni sul risultato dell’ultima operazione eseguita dalla
ALU (overflow, zero, carry, segno).
Architettura computer
ALU (Atithmetic Logic Unit)
n
n
n
n
Esegue le operazioni aritmetiche, logiche ed
altre manipolazioni (es: scorrimento) sui dati.
Opera su alcuni registri specifici chiamati
accumulatori (es: A, B) e modifica i bit del
registro Status Register (SR).
Gli accumulatori contengono il valore degli
operandi ed il risultato finale dell’operazione.
I bit dello SR o flag permettono di capire l’esito
dell’operazione (es: overflow, risultato positivo o
negativo, ecc.)
Architettura computer
Prof. Paolo Michelini
Prof. Paolo Michelini
CU (Control Unit)
n
Sovraintende a tutte le attivita’ della CPU,
imponendo la corretta sequenzializzazione delle
operazioni da svolgere. In particolare:
n
n
n
Fetch
L’unità di controllo ha il compito di reperire dalla
memoria centrale le istruzioni di un programma (fetch)
da eseguire (il cui indirizzo è nel registro PC). Le
istruzioni sono organizzate in memoria in sequenza.
Decodifica
La CU interpreta l’istruzione che e’ stata caricata con il
fetch.
Execute
La CU manda in esecuzione (execute) l’istruzione
trovata (che è stata caricata nel registro IR).
Architettura computer
Prof. Paolo Michelini
2
Le memorie cache
n
Si dividono in
n
n
n
Le CPU sul mercato (2002)
n
Cache di primo livello o L1 interna alla CPU (es: 32
kB).
Cache di secondo livello o L2, (es: 64,128, 256,
512KB, 1 MB) e' esterna al processore.
La cache è una memoria speciale della CPU e,
a differenza della memoria centrale, è più
piccola e più veloce. Funziona come un buffer e
contiene la copia delle istruzioni e dei dati che
vengono maggiormente utilizzati. La sua
funzione e’ di velocizzare eventuali accessi
successivi sugli stessi dati appena ricercati.
Architettura computer
Prof. Paolo Michelini
n
n
n
Architettura computer
n
n
n
Intel: P4 3.2 GHz, 800MHz 32 bit system
bus, 8 kB L1 cache, 512-KB L2 Cache,
mPGA-478, 55 milioni di transistor;
AMD: Athlon 3200+, 400 MHz 32 bit
system bus, 128 kB L1 cache, 256 kB L2
cache, SockA, 54.3 milioni di transistor;
Motorola: PowerPC 7457, 1.3 GHz, 133
MHz 64 bit system bus, 512 kB L2 cache,
483 CBGA
Prof. Paolo Michelini
La memoria centrale
Le CPU sul mercato (2003)
n
Intel: P4 2.8 GHz, 533MHz 32 bit system bus,
8 kB L1 cache, 512-KB L2 Cache, mPGA-478,
42 milioni di transistor;
AMD: Athlon 2600+, 266 MHz 32 bit system
bus, 128 kB L1 cache, 256 kB L2 cache,
SockA, 37 milioni di transistor;
Motorola: PowerPC 7455, 1 GHz, 133 MHz 64
bit system bus, 256 kB L2 cache, 483 CBGA
Digital: Alpha EV68 1.25GHz, 16 MB L2 cache,
64 bit system bus
n
n
n
E’ chiamata anche RAM (Random Access Memory) ed e’ volatile
(tutte le informazioni vengono perse allo spegnimento).
Contiene i dati e le istruzioni relative al programma in
esecuzione. La CPU scambia informazioni solo con la memoria
centrale
E’ strutturata come una sequenza di celle (dette parole o word)
di dimensione prefissata (es: 8, 16, 32, 64 bit)
Ogni parola e’ univocamente identificata dal suo indirizzo
0
1
2
word
n
Architettura computer
Prof. Paolo Michelini
Architettura computer
Prof. Paolo Michelini
3
Indirizzamento della memoria
n
n
L’indirizzamento di una cella di memoria e’ fatta attraverso il
registro di idirizzi (AR)
Se AR dispone di k bit, saranno indirizzabili 2k celle (0..2k-1)
n
n
n
n
La memoria e’ realizzata con dispositivi a semiconduttore.
Il tempo di accesso ad una memoria e’ dell’ordine della decina
di nanosecondi.
Capacita’
n
Possono essere
n
n
n
Il valore della cella indirizzato da AR viene in
n
n
Es: k=10 -> celle indirizzabili = 210 = 1024
Caratteristiche delle memorie
Lettura (R): copiato nel registro dati
Scrittura (W): scaricato dal registro dati
n
Le operazioni (R/W) vengono coordinate dalla Control Unit
0
1
2
AR
0000000011
n
n
Word=16 bit
0110100010101101
W
n
0110100010101101
R
DR
n
Valori tipici: 32, 64, 128, 256, 512 MB
Dinamiche (DRAM): hanno bisogno di un segnale di refreh,
dell’ordine di millisecondi,per mantenere le informazioni in esse
contenute.
Statiche (SRAM): piu’ veloci delle precedenti, ma piu’ costose.
Normalmente utilizzate per le memorie cache.
SDRAM (Synchronous DRAM): permettono di diminuire i tempi di
attesa del processore durante la ricerca dei dati. Permettono inoltre
un acesso multiplo su locazioni differenti in memoria.
RDRAM (RAMBUS DRAM): create per gestire una grande quantita’
di informazioni per i processori di nuova generazione (gigabit/s).
Sono ottimizzate per accessi sequenziali ai dati.
DDR SDRAM (Double Data Rate SDRAM): evoluzione della
SDRAM con velocita’ doppia alla stessa.
n
Architettura computer
Prof. Paolo Michelini
Architettura computer
Moduli di memoria
n
n
n
Altre memorie
n
SIMM (Single Inline Memory module)
n
Moduli a 30 o 72 piedini (pin)
Normalmente montate in coppia per aumentare la
capacita’ di trasferimento
n
ROM (Read Only Memory)
n
n
DIMM (Dual Inline Memory Module)
n
n
Moduli a 168 pin
Attualmente i piu’ utilizzati con velocita’ e capacita’
maggiore delle precedenti
n
DIMM
Prof. Paolo Michelini
n
Non volatili: mantengono le informazioni anche
senza alimentazione (es: programma di
inizializzazione dei computer o boot)
PROM (Programmable ROM)
Permottono di essere programmate dall’utente
tramite dei dispositivi particolari (programmatori di
ROM)
EPROM (Erasable PROM)
n
Architettura computer
Prof. Paolo Michelini
Possono essere riscritte piu’ volte, cancellando il
loro contenuto con raggi ultravioletti.
Il software contenute in queste memorie e’
normalmente chiamato firmware
Architettura computer
Prof. Paolo Michelini
4
Bus di sistema
Bus di sistema
n
PERIFERICHE
n
n
n
Data bus
n
Address bus
Command bus
Architettura computer
n
Prof. Paolo Michelini
Esempi di bus
Bus dati (Data bus): bidirezionale. Utilizzato dalla CPU per
trasmettere dati dalla memoria al registro dati e viceversa o verso
le interfacce di I/O.
Bus indirizzi (Address bus): unidirezionale. Viene utilizzato dalla
CPU per trasmettere il contenuto del registro indirizzi alla memoria
o alle intefacce di I/O per selezionare il dispositivo da usare.
Bus comandi (Command bus): unidirezionale. Permette alla CPU
di inviare alla memoria o all’I/O i segnali di comando/consenso fra
le varie unita’ (es: lettura o scrittura).
Le uniche istruzioni che possono accedere direttamente alla
memoria centrale, sono quelle che trasferiscono i dati da e verso i
registri. Tutte le altre operano solo su registri.
Se la dimensione (numero di bit) del bus dati è uguale alla
dimensione della parola, si può trasferire in parallelo un intero dato.
Altrimenti occorrono più trasferimenti.
Architettura computer
Prof. Paolo Michelini
Esempio di operazione della CPU
+1
I piu’ comuni sono:
n
n
n
Memoria (a 8 bit)
Bus controllo
Circuiti di
controllo
Bus controllo
Registro istruzioni (8 bit)
Registro A
Registro B
Sommatore
Architettura computer
CU
PC (16 bit)
ISA = Industry Standard Architecture
(obsoleto)
EISA = Enhanced ISA (max 33 MB/s)
PCI = Peripheral Component Interconnect
(max 64 bit a 66 MHz = 528 MB/s di
trasferimento dati)
Prof. Paolo Michelini
Z (8 bit) W (8bit)
n
Architettura computer
Buffer indirizzi
MEMORIA
CENTRALE
Buffer dati
CPU
E’ composto da un insieme di linee lungo le quali viene trasferita
l’informazione. Collega due unità funzionali alla volta: una
trasmette e l’altra riceve (master-slave). Il trasferimento avviene
sotto il controllo della CPU (Control Unit).
Bus indirizzi
16 bit
3E
0
20
1
27
2
03
3
C6
3A
4
10
20
76
5
6
7
8
Bus dati
8 bit
ALU
Prof. Paolo Michelini
5
Esempio di operazione della CPU
n
Le istruzioni contenute in memoria
normalmente consistono di
Esempio di operazione della CPU
n
n
Codice operativo (operation code): serve ad
attivare un’azione opportuna (es: somma,
input/output, ecc.)
Operandi (operands): contiene gli indirizzi
degli operandi o gli operandi stessi coinvolti
nell’operazione (talvolta sottointesi)
n
n
I fetch
n
n
n
n
n
Architettura computer
Prof. Paolo Michelini
Architettura computer
Esempio di operazione della CPU
n
I esecuzione
n
n
n
n
III fase
n
II fetch
n
Viene eseguita l’istruzione all’indirizzo 2 (27H ) che
richiede di muovere nel registro B il dato 03H che
segue il codice operativo (PC =3). PC diventa 4.
Istruzione all4 (C6H) richiede di sommare il
contenuto di A e B e mettere il risultato in A.
Architettura computer
La CU da indicazione alla ALU di eseguire la
somma.
Prof. Paolo Michelini
L’istruzione all’indirizzo 5 (3AH) richiede di
acquisire l’indirizzo dell’operando. Il fetch
dell’indirizzo e’ fatta in 2 passi.
n
n
n
n
II esecuzione
n
Prof. Paolo Michelini
Esempio di operazione della CPU
n
Il dato nel buffer dati viene spostato nel registro A
della ALU.
Il contenuto del PC viene spostato nel buffer
indirizzi e viene comandata una lettura in memoria
(lettura della cella 0 = 3EH)
Il dato viene spostato nel registro istruzione
Il PC viene incrementato e diventa = 1
Il codice del registro istruzione viene decodificato
come: muovi nel registro A il dato che segue il
codice operativo.
Il PC viene spostato nel buffer indirizzi e viene
ordinata la lettura della cella corrispondente. Il
valore 20H viene spostato nel buffer dati.
Il PC viene incrementato e diviene = 2
n
Architettura computer
Viene letto il valore all’indirizzo 6 (10H) e messo in W e
quello 7 (20H) in Z
Il contenuto di W e Z viene interpretato come un unico
indirizzo a 16 bit (1020H)
Il contenuto di A viene messo nel buffer dati.
Viene ordinata una scrittura del dato (23H = 20H +
03H ) nell’indirizzo (1020H)
L’istruzione all’indirizzo 8 (76H) ordina l’halt della
macchina
Prof. Paolo Michelini
6
Linguaggio assembly
n
Linguaggio assembly
Programmare in formato binario o
esadecimale e’ molto difficoltoso. Sono
stati cosi’ creati i linguaggi assembly,
che utilizzano una codifica simbolica per
le operazioni appena descritte. Questi
linguaggi sono dipendenti dal tipo di
processore usato, non sono quindi
portabili fra macchine con CPU diverse.
n
La traduzione del precedente programma
in pseudo-linguaggio assembly potrebbe
essere:
LD A,20H
load A con il valore 20H
LD B,03H
load B con il valore 03H
ADD A,B
somma A e B e metti il risultato in A
LD (1020H),A sposta il contenuto di A all’indirizzo
1020H
HALT
Architettura computer
Prof. Paolo Michelini
Architettura computer
Prof. Paolo Michelini
7