22
La macchina di Von Neumann Edoardo Ardizzone & Ignazio Infantino Appunti per il corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Informatica Università degli Studi di Palermo Facoltà di Ingegneria

La macchina di Von Neumann - tti.unipa.itricrizzo/dispense/VonNeumann.pdf · Le fasi di elaborazione si succedono in modo sincrono rispetto alla cadenza imposta da un orologio di

Embed Size (px)

Citation preview

La macchina di Von Neumann

Edoardo Ardizzone & Ignazio Infantino

Appunti per il corso di

Fondamenti di Informatica

Corso di Laurea in Ingegneria Informatica

Università degli Studi di Palermo

Facoltà di Ingegneria

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

E’ il modellosecondo il quale è organizzata la maggior parte dei moderni elaboratori

Componenti della macchina di Von Neumann:

La macchina di Von Neumann

CPUMemoriacentrale

Interfacciaperiferica 1

Interfacciaperiferica N

Bus di sistema

L’ unità centrale di elaborazioneo 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 3

La macchina di Von Neumann

L’esecuzione delle istruzioni può comportare operazioni di elaborazionedi dati (per esempio, operazioni aritmetiche) ovvero di trasferimentodi dati (per esempio, dalla memoria centrale all’interfaccia di una periferica).

La memoria centralecontiene le istruzioni di un programma e i dati necessari alla sua esecuzione.

Le periferichesono 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 interfaccedi collegamento verso le periferiche, mentre le periferiche sono considerate componenti separati.

E’ da notare come nel modello di Von Neumann anche le memorie di massasiano 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 4

La macchina di Von Neumann

Il bus di sistemaassicura 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 sincronorispetto 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 parallelismonella esecuzione delle attività di elaborazione.

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

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 operativoe uno o più operandi:

Funzionamento della macchina di Von Neumann

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 6

Memoria CentraleConcettualmente, 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:

Funzionamento della macchina diVon Neumann

1a parola

3a parola

4a parola

2a parola

1 2 3 8bit

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

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 celleIl 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”

Funzionamento della macchina diVon Neumann

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

Funzionamento della macchina diVon 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 9

Funzionamento della macchina diVon Neumann

Durante la lettura, il contenuto della cella di memoria viene copiato nel DR (caricamentodel DR).

Durante la scrittura, il contenuto del DR viene depositatonella cella di memoria

LETTURA => “Load” del DR con una parolaSCRITTURA => “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:

K=10 H=16

H=160

1023

Memoria

AR DRSL

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

Funzionamento della macchina diVon Neumann

Bus di sistemaIl 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 11

Funzionamento della macchina diVon 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 12

Funzionamento della macchina diVon Neumann

Riepilogando, per una operazione di lettura:-l’unità centraledeve: 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 memoriadeve: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à centraledeve: 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 memoriadeve: 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 13

Funzionamento della macchina diVon Neumann

Unità di elaborazione

ARDR

CIR

INTR

PC

SR

A

B

Clock

CU

ALU

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

Funzionamento della macchina diVon 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 15

Funzionamento della macchina diVon 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 16

Funzionamento della macchina diVon 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 17

Interfacce di I/OSono 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 leggereREGISTRO COMANDO della periferica (PCR): in esso l’unità di elaborazione scrive il codice corrispondente all’operazione da eseguireREGISTRO di STATO della periferica (occupata, pronta, in situazione di errore, …)

Funzionamento della macchina diVon Neumann

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

Esecuzione dei programmiPer 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 0100000000100001 0100000000100012 0100000000100103 0100000000100114 000000000010000………………………………………………………………15 110100000000000 halt16 00000000001000117 00000000001001018 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.

Istruzioni

Dati

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

Esecuzione dei programmiLa macchina esegue il programma una istruzione alla volta, ripetendo per ogni istruzione una sequenza di operazioni svolte nella CPUL’esecuzione di una istruzione consiste infatti di trefasi distinte:

•Acquisizione dalla memoria centrale (Fetch)•Interpretazione o decodifica (Decode)•Esecuzione (Execute)

La fase di fetchconsiste 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 20

Esecuzione dei programmiDurante 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:

00 0000 0000PC

00 0000 0000AR

1

0100 0000 0001 0000

0100 0000 0001 0001

0100 0000 0001 0010

0

1

2

0100 0000 0001 0000

2

DR

0100 0000 0001 0000CIR

3

00 0000 0001PC 4

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

Esecuzione dei programmiDurante la fase di interpretazionel’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:

0000 0001 0000CIR 0100

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 CPUPer 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 22

Esecuzione dei programmi

00 0001 0000AR

0001 0000 0001 111116

PDR

DR

00 0001 0000CIR 0100 00

0001 0000 0001 1111

0001 0000 0001 1111

(standard input)

16 è l’indirizzo dell’operando