Sei sulla pagina 1di 22

Università degli Studi di Palermo

Facoltà di Ingegneria

La macchina di Von Neumann

Edoardo Ardizzone & Ignazio Infantino

Appunti per il corso di


Fondamenti di Informatica

Corso di Laurea in Ingegneria Informatica


La macchina di Von Neumann

E’ il modello secondo il quale è organizzata la


maggior parte dei moderni elaboratori

Componenti della macchina di Von Neumann:

Bus di sistema

Memoria Interfaccia Interfaccia


CPU centrale periferica 1 periferica N

L’unità centrale di elaborazione o CPU è costituita dai


circuiti elettronici capaci di leggere (dalla memoria
centrale), decodificare (interpretare) ed eseguire
(impartendo gli opportuni comandi alle varie parti del
sistema) le istruzioni di un programma, una alla volta.

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 2


La macchina di Von Neumann
L’esecuzione delle istruzioni può comportare operazioni
di elaborazione di dati (per esempio, operazioni
aritmetiche) ovvero di trasferimento di dati (per esempio,
dalla memoria centrale all’interfaccia di una periferica).

La memoria centrale contiene le istruzioni di un


programma e i dati necessari alla sua esecuzione.

Le periferiche sono le apparecchiature che consentono


all’elaboratore di scambiare informazioni con il mondo
esterno, mediante operazioni di ingresso (verso
l’elaboratore) e uscita (verso l’esterno).

Vengono in realtà considerate appartenenti alla macchina


di Von Neumann solo le interfacce di collegamento verso
le periferiche, mentre le periferiche sono considerate
componenti separati.
E’ da notare come nel modello di Von Neumann anche le
memorie di massa siano incluse tra le periferiche, in
quanto funzionalmente analoghe a queste ultime, dal
punto di vista dell’interazione con l’elaboratore.

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 3


La macchina di Von Neumann
Il bus di sistema assicura la interconnessione tra gli
elementi della macchina di Von Neumann: tutti i
trasferimenti di dati avvengono attraverso il bus.

Il bus mette in collegamento logico i due elementi


coinvolti nel trasferimento, in funzione dell’operazione da
eseguire, mentre il collegamento fisico è sempre presente.

Le fasi di elaborazione si succedono in modo sincrono


rispetto alla cadenza imposta da un orologio di sistema
(clock): è l’unità di controllo, contenuta dentro la CPU,
che durante ogni intervallo di tempo coordina le attività
che vengono svolte dentro la stessa CPU o negli altri
elementi del sistema.

Il limite più evidente del modello di Von Neumann è la


rigida sequenzialità del suo funzionamento.

Le evoluzioni di questo modello prevedono per lo più


l’introduzione di forme di parallelismo nella esecuzione
delle attività di elaborazione.
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 4
Funzionamento della macchina di
Von Neumann
Dati e istruzioni di programma sono codificate in
forma binaria, cioè mediante sequenze finite di bit.

Una istruzione codificata si compone di due parti: il


codice operativo e uno o più operandi:
CO Op. 1 Op. n

Il codice operativo specifica, secondo una convenzione


dipendente dalla specifica macchina, l’istruzione da
eseguire. Per ogni macchina esistono tanti codici
operativi differenti quante sono le istruzioni presenti
nell’insieme (set) delle istruzioni che la macchina è in
grado di interpretare ed eseguire.

Gli operandi contengono, ancora in una forma codificata


dipendente dalla specifica macchina, le informazioni
necessarie a reperire i dati sui quali l’istruzione deve
operare.

Il linguaggio macchina è quindi strettamente legato alla


architettura della macchina.
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 5
Funzionamento della macchina di
Von Neumann
Memoria Centrale
Concettualmente, può essere vista come una sequenza
di celle: ogni cella di memoria contiene una parola o
word.

Le parole di un elaboratore hanno tutte la stessa


lunghezza, mentre elaboratori differenti possono avere
parole di lunghezza differente.

Valori tipici della lunghezza di parola: 8/16/32/64 bit.

Schematicamente, la memoria può essere rappresentata


come una tabella. Per esempio, con parole di 8 bit:

1a parola
2a parola
3a parola
4a parola

bit 1 2 3 8

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 6


Funzionamento della macchina di
Von Neumann
Ciascuna cella può essere indirizzata, ovvero
l’elaboratore può selezionare ognuna delle celle.
L’indirizzo di una cella è la sua posizione relativa
(numero d’ordine) rispetto alla prima cella, che
convenzionalmente assume indirizzo pari a 0.

L’indirizzamento della memoria si effettua mediante il


registro indirizzi (AR), che si trova dentro la CPU.

Un registro è un dispositivo elettronico capace di


memorizzare una sequenza di bit, normalmente utilizzato
come elemento di memoria che può essere letto o scritto
molto velocemente.
Se la capacità (o lunghezza) del registro indirizzi è di K
bit, ed il suo contenuto viene interpretato come un
numero intero, si possono specificare tutti gli indirizzi tra
0 e 2K – 1:
K bit => 2K indirizzi => 2K celle
Il numero di parole indirizzabili, ovvero la dimensione
dello spazio degli indirizzi, è dunque legata alla capacità
dell’AR. Per esempio, se K=10, si hanno 210 = 1024
parole indirizzabili, quindi una dimensione di un “kilo-
parole”. Se invece K=20, si hanno 220 = 1048576 parole
indirizzabili, quindi una dimensione di un “mega-parole”
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 7
Funzionamento della macchina di
Von Neumann
Le capacità di indirizzamento dei processori reali sono
quindi esprimibili come multipli di kilo o mega-parole,
ma normalmente, per avere caratteristiche paragonabili,
si parla di capacità espresse in Kbyte o Mbyte.

Si noti che, negli elaboratori reali, la capacità di


indirizzamento è un limite superiore alla memoria fisica
che può equipaggiare la macchina.

Selezionare una specifica cella significa scrivere il suo


indirizzo (in bit) nel registro degli indirizzi.

In relazione alla memoria centrale, due operazioni sono


possibili: la lettura di una cella della memoria e la
scrittura in una cella della memoria.

Per la lettura e la scrittura si utilizza anche un altro


registro della CPU, il registro dati (DR), di lunghezza
uguale a quella di una word di memoria

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 8


Funzionamento della macchina di
Von Neumann
Durante la lettura, il contenuto della cella di memoria
viene copiato nel DR (caricamento del DR).

Durante la scrittura, il contenuto del DR viene


depositato nella cella di memoria

LETTURA => “Load” del DR con una parola


SCRITTURA => “Store” di una word in una cella

Riassumendo, se K è la lunghezza del registro indirizzi e


H è la lunghezza del registro dati, si ha per esempio:

0
H=16

AR S DR
L

K=10 H=16

1023
Memoria

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 9


Funzionamento della macchina di
Von Neumann
Bus di sistema
Il bus è costituito da un insieme di linee lungo le quali
viene trasferita l’informazione.
Topologicamente, è un collegamento aperto (non
limitato ad un estremo), cui si collegano le varie unità
funzionali della macchina di Von Neumann

In ogni istante di tempo, il bus collega due unità


funzionali: una trasmette dati e l’altra li riceve.
Le possibili interconnessioni sono tra l’unità centrale e
la memoria centrale, oppure tra l’unità centrale e
l’interfaccia di una periferica

Il bus lavora sotto il controllo dell’unità centrale di


elaborazione, che sceglie il collegamento da attivare e
l’operazione da compiere.
La modalità di funzionamento del bus è master-slave:
l’unità di elaborazione funge da dispositivo master,
mentre le altre unità funzionali assumono, una per
volta, il ruolo di slave.

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 10


Funzionamento della macchina di
Von Neumann
Il bus è assegnato ad uno specifico collegamento per il
tempo necessario a svolgere l’operazione da compiere:
più piccolo è questo tempo, più alta è la velocità del
bus.
Funzionalmente, le linee del bus possono essere divise
in tre categorie, a seconda del tipo di informazione
trasportata: dati, indirizzi e segnali di controllo.

Si identificano pertanto tre bus:


BUS DATI: trasferisce dati dall’unità master all’unità
slave e/o viceversa. Se per esempio lo slave è la
memoria centrale, i dati viaggiano da una cella di
memoria al DR (lettura), oppure dal DR ad una cella di
memoria (scrittura).
BUS INDIRIZZI: trasferisce indirizzi dall’unità di
elaborazione allo slave. Per esempio, se deve essere
scelta una locazione di memoria per un’operazione di
lettura o scrittura, le informazioni vanno dall’unità
centrale (registro AR) alla memoria.
BUS CONTROLLI: trasferisce dal master allo slave il
comando (codificato) corrispondente all’operazione da
eseguire, e dallo slave al master informazioni relative
all’avvenuto espletamento dell’operazione richiesta.
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 11
Funzionamento della macchina di
Von Neumann
Riepilogando, per una operazione di lettura:
-l’unità centrale deve: a) caricare l’indirizzo della
parola di memoria da leggere nel registro AR e
trasmetterlo alla memoria attraverso il bus indirizzi; b)
inviare alla memoria il comando di lettura attraverso il
bus controlli;
- la memoria deve:c) eseguire l’operazione di lettura,
che trasferisce il contenuto della locazione indirizzata
nel registro DR attraverso il bus dati; d) segnalare
all’unità centrale, attraverso il bus controlli, che
l’operazione è stata effettuata e che il dato è
disponibile nel registro DR.
Invece, per una operazione di scrittura:
-l’unità centrale deve: a) caricare l’indirizzo della
parola di memoria in cui si vuole scrivere nel registro
AR e trasmetterlo alla memoria attraverso il bus
indirizzi; b) caricare il dato da scrivere nel registro DR;
c) inviare alla memoria il comando di scrittura
attraverso il bus controlli;
-la memoria deve: d) eseguire l’operazione di scrittura,
che trasferisce il contenuto del registro DR (attraverso
il bus dati) nella locazione indirizzata; e) segnalare
all’unità centrale, attraverso il bus controlli, che
l’operazione è terminata.
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 12
Funzionamento della macchina di
Von Neumann
Unità di elaborazione

SR

A
PC
ALU
B

INTR

CIR CU

Clock

DR AR

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 13


Funzionamento della macchina di
Von Neumann
I componenti funzionali della CPU sono:
• UNITA’ DI CONTROLLO (CU): è responsabile del
prelievo delle istruzioni dalla memoria centrale, della
loro decodifica e dell’invio dei segnali di controllo che
danno luogo alle operazioni necessarie per
l’esecuzione dell’istruzione decodificata.
• OROLOGIO DI SISTEMA (Clock): sincronizza le
operazioni rispetto ad una certa frequenza.
• UNITA’ ARITMETICO-LOGICA (ALU): effettua le
operazioni aritmetiche e logiche (eventualmente)
richieste per l’esecuzione dell’istruzione

La CPU contiene inoltre diversi registri. I principali sono:


• REGISTRO DATI (DR), lungo H bit
• REGISTRO INDIRIZZI (AR), lungo K bit
• REGISTRO ISTRUZIONE CORRENTE (CIR),
lungo H bit: contiene in ogni istante l’istruzione in
esecuzione
• CONTATORE DI PROGRAMMA (PC), lungo K bit:
contiene l’indirizzo della successiva istruzione da
eseguire

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 14


Funzionamento della macchina di
Von Neumann
• REGISTRO INTERRUZIONI (INTR), contiene
informazioni sullo stato di funzionamento delle
periferiche
• Registri contenenti operandi e risultato delle
operazioni aritmetico-logiche (per esempio, A e B)
• Registri di lavoro, contenenti dati ed istruzioni di uso
frequente, ovvero risultati intermedi
• REGISTRO DI STATO (SR), contiene indicazioni
indicazioni relative al risultato delle operazioni
effettuate dalla ALU. Tra queste:
– Bit di carry o riporto (indica la presenza di un riporto)
– Bit di zero (è 1 se c’è un valore nullo in A),
– Bit di segno (è il segno del risultato di un’operazione)
– Bit di overflow (è 1 quando il risultato dell’ultima
operazione aritmetica supera il massimo valore
rappresentabile, cioè 2H, se H è la lunghezza di A)

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 15


Funzionamento della macchina di
Von Neumann
Le moderne ALU sono in grado di eseguire operazioni
molto sofisticate, ma per semplicità supponiamo che la
nostra sia capace di eseguire le 4 operazioni aritmetiche.
E’ l’unità di controllo che, dopo aver disposto il
caricamento di A e B con i due operandi, invia alla ALU
il codice relativo all’operazione da eseguire.
Al termine dell’esecuzione dell’operazione, che
impegna un certo numero di periodi del clock, il registro
A è caricato con il risultato, mentre il registro B ha un
contenuto non definito (tranne che per la divisione
intera, per la quale B contiene il resto).

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 16


Funzionamento della macchina di
Von Neumann
Interfacce di I/O
Sono gli elementi circuitali che consentono la
connessione tra l’elaboratore e le periferiche.
Esistono molti tipi di interfaccia, in dipendenza del tipo
di periferica (dischi, nastri, stampanti, terminali, scanner,
plotter, sensori e attuatori per robot, sistemi di
acquisizione dati, etc.) e del grado di ‘intelligenza’ della
periferica.
Le periferiche possono infatti essere dotate di proprie
unità di controllo, capaci di effettuare conversioni o
anche elaborazioni di dati.
Interfacce intelligenti possono sgravare la CPU da alcuni
compiti (evoluzioni della macchina di Von Neumann).

In una interfaccia standard sono normalmente presenti i


seguenti registri:
REGISTRO DATI della periferica (PDR): in esso
vengono depositati i dati da scrivere o da leggere
REGISTRO COMANDO della periferica (PCR): in esso
l’unità di elaborazione scrive il codice corrispondente
all’operazione da eseguire
REGISTRO di STATO della periferica (occupata, pronta,
in situazione di errore, …)
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 17
Esecuzione dei programmi
Per essere eseguito dalla macchina di Von Neumann,
un programma, che è costituito da una sequenza di
istruzioni e dai dati, deve essere presente nella
memoria centrale, in forma di sequenze di bit allocate
in parole successive di memoria.
Per esempio, supponendo che il caricamento avvenga a
partire dalla locazione di indirizzo 0:

0 010000000010000
1 010000000010001
2 010000000010010
3 010000000010011 Istruzioni
4 000000000010000
………………………………
………………………………
15 110100000000000 halt
16 000000000010001
17 000000000010010
Dati
18 000000000010000
………………………………
………………………………
La parte istruzioni e la parte dati sono nell’esempio
separate dalla istruzione di halt, una istruzione
particolare che arresta il funzionamento della
macchina.

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 18


Esecuzione dei programmi
La macchina esegue il programma una istruzione alla
volta, ripetendo per ogni istruzione una sequenza di
operazioni svolte nella CPU
L’esecuzione di una istruzione consiste infatti di tre
fasi distinte:

•Acquisizione dalla memoria centrale (Fetch)


•Interpretazione o decodifica (Decode)
•Esecuzione (Execute)

La fase di fetch consiste di quattro passi, ognuno dei


quali comporta un trasferimento di dati fra registri della
CPU e/o locazioni della memoria centrale:
1.Il contenuto del PC viene trasferito in AR.
2.Viene letta la cella di memoria corrispondente
all’indirizzo presente in AR, e il contenuto viene
trasferito in DR attraverso il bus.
3. Il contenuto del DR viene trasferito nel CIR.
4. Il contenuto del PC viene incrementato di 1,
predisponendolo per la fase di acquisizione
dell’istruzione successiva. E’ tuttavia possibile che
durante la fase di esecuzione dell’istruzione corrente il
contenuto del PC sia ancora modificato (per esempio,
ciò avviene per le istruzioni di salto)
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 19
Esecuzione dei programmi
Durante la fase di acquisizione della prima istruzione
del programma di esempio avvengono pertanto le
seguenti cose, tenendo presente che, poiché il
programma è caricato a partire dalla locazione di
indirizzo 0, il contenuto iniziale di PC è 0:

PC 00 0000 0000
1
AR 00 0000 0000

2
0 0100 0000 0001 0000

1 0100 0000 0001 0001


DR 0100 0000 0001 0000
2 0100 0000 0001 0010
3

CIR 0100 0000 0001 0000

PC 00 0000 0001 4
E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 20
Esecuzione dei programmi
Durante la fase di interpretazione l’istruzione,
presente adesso nel CIR, viene decodificata: a tal fine,
la macchina esamina la parte codice operativo
dell’istruzione, per determinare le azioni da eseguire.
Per la prima istruzione dell’esempio, supponendo che il
campo CO sia lungo 4 bit:

CIR 0100 0000 0001 0000

Supponiamo anche che il codice operativo 0100


corrisponda ad una operazione di lettura dalla
periferica standard di ingresso.

Mentre le fasi precedenti si ripetono sempre uguali, la


fase di esecuzione è diversa per ogni istruzione, anche
se consiste comunque di trasferimenti di dati da o verso
la memoria o da o verso una delle periferiche, oppure
di operazioni eseguite dalla ALU, con il supporto di
registri interni alla CPU
Per esempio, durante la fase di esecuzione della prima
istruzione dell’esempio avvengono le seguenti cose,
tenendo presente che il valore depositato nel campo
operandi dell’istruzione è 16 (… 010000):

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 21


Esecuzione dei programmi
16 è l’indirizzo dell’operando

CIR 0100 00 00 0001 0000

AR 00 0001 0000

PDR (standard input)

0001 0000 0001 1111

0001 0000 0001 1111 0001 0000 0001 1111


16
DR

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 22

Potrebbero piacerti anche