25
CAPITOLO 7 Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali si è introdotto il concetto generale di circuito sequenziale, chiamato anche macchina a stati finiti:si è infatti visto che un generico circuito sequenziale è costituito da una sezione di logica combinatoria e da una sezione di memoria individuata dai FLIP-FLOP. Si è anche affrontato il problema della sincronicità delle macchine a stati finiti facendo in modo che i cambiamenti di stato avvenissero in corrispondenza dei cicli di clock. Abbiamo visto che il principale inconveniente delle macchine a stati è quello di essere poco versatili in quanto al variare del problema da risolvere si è costretti a cambiare il comportamento delle transizioni degli stati e quindi cambiare la macchina. In questo capitolo si tratterà l’argomento relativo alle macchine programmabili che possiamo definire come delle macchine a stati finiti viste in precedenza, ma che a differenza di quelle viste nel capitolo 6, hanno la caratteristica che oltre ad avere n ingressi rappresentati dai fili o bit ed m uscite, come per le reti combinatorie e sequenziali, contengono un programma in cui le informazioni date in ingresso non sono solamente relative al problema da risolvere, ma riguardano anche il modo con cui risolvere il problema. Quindi a differenza delle reti finora viste, i dati inviati alle macchine programmabili non coincidono con gli ingressi finora visti per le reti combinatorie e sequenziali, poiché si è visto che questi sono semplici input selezionati a sua volta dai vari comandi di controllo al fine di ottenere uno o più valori di uscita, ma contengono anche le informazioni su ciò che la macchina deve fare per risolvere il problema. La macchina programmabile è dunque una macchina a stati particolare, generata non per risolvere un problema specifico, come invece facevano le reti combinatorie e quella sequenziali, ma per effettuare una qualunque elaborazione in base a delle istruzioni che vengono inviate in ingresso. Quindi le macchine programmabili dovendo risolvere qualunque problema, per cui non sono però in grado di conoscere a priori quanti gli stati necessari per risolvere il problema stesso.

Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

CAPITOLO 7 Le macchine programmabili

7.1 Le Macchine Programmabili

Nel capitolo precedente trattando le reti sequenziali si è introdotto il concetto

generale di circuito sequenziale, chiamato anche macchina a stati finiti:si è

infatti visto che un generico circuito sequenziale è costituito da una sezione di

logica combinatoria e da una sezione di memoria individuata dai FLIP-FLOP. Si è

anche affrontato il problema della sincronicità delle macchine a stati finiti facendo

in modo che i cambiamenti di stato avvenissero in corrispondenza dei cicli di

clock.

Abbiamo visto che il principale inconveniente delle macchine a stati è quello di

essere poco versatili in quanto al variare del problema da risolvere si è costretti a

cambiare il comportamento delle transizioni degli stati e quindi cambiare la

macchina.

In questo capitolo si tratterà l’argomento relativo alle macchine programmabili

che possiamo definire come delle macchine a stati finiti viste in precedenza, ma

che a differenza di quelle viste nel capitolo 6, hanno la caratteristica che oltre ad

avere n ingressi rappresentati dai fili o bit ed m uscite, come per le reti

combinatorie e sequenziali, contengono un programma in cui le informazioni

date in ingresso non sono solamente relative al problema da risolvere, ma

riguardano anche il modo con cui risolvere il problema. Quindi a differenza delle

reti finora viste, i dati inviati alle macchine programmabili non coincidono con gli

ingressi finora visti per le reti combinatorie e sequenziali, poiché si è visto che

questi sono semplici input selezionati a sua volta dai vari comandi di controllo al

fine di ottenere uno o più valori di uscita, ma contengono anche le informazioni

su ciò che la macchina deve fare per risolvere il problema.

La macchina programmabile è dunque una macchina a stati particolare, generata

non per risolvere un problema specifico, come invece facevano le reti

combinatorie e quella sequenziali, ma per effettuare una qualunque elaborazione

in base a delle istruzioni che vengono inviate in ingresso.

Quindi le macchine programmabili dovendo risolvere qualunque problema, per cui

non sono però in grado di conoscere a priori quanti gli stati necessari per

risolvere il problema stesso.

Page 2: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 189

Prima di vedere in dettaglio come si compone una macchina programmabile

introduciamo il concetto di memoria. Anche se l’argomento in realtà è già stato

introdotto quando si è parlato delle reti sequenziali: si è infatti visto che le reti

combinatorie non sono dotate di memoria, mentre le reti sequenziali necessitano

di una memoria per mantenere gli stati codificati da bit e graficamente

rappresentati dai cerchi dell’automa a stati finiti.

Si è poi identificata la memoria con un circuito chiamato FLIP FLOP che fissa lo

stato corrente in attesa che il segnale di clock lo faccia passare a stato

successivo, per cui lo stato corrente viene fissato per il periodo di tempo

impiegato dal clock per passare al fronte di salita successivo.

7.2 La memoria

Si è visto dunque che i dati inviati alla macchina programmabile, sono composti

anche da istruzioni che definiscono una serie di azioni che la macchina deve

eseguire su un particolare insieme di dati allo scopo di risolvere un problema.

Per questo tipo di dati si fa riferimento a dei registri in cui si memorizzano

sequenze di bit in celle di memoria. Per comprendere il concetto di memoria,

consideriamo un semplice esempio di memoria in grado di memorizzare due bit:

demux

F.F. 0

F.F. 1

mux

s0s2 s3 s1

1/0U

Figura 7.1: esempio di memoria a due celle di memoria

in figura 7.1 abbiamo un ingresso dato da un bit che può essere assumere o il

valore 1 o il valore 0. Il dato in ingresso entra in un circuito demultiplexer che

con un filo di selezione decide su quale dei due fili di uscita il dato deve essere

copiato in uno dei due FLIP FLOP, i quali a sua volta, restituiranno in uscita il

Page 3: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 190

dato entrante quando ricevono l’impulso del clock. Una volta ricevuto il segnale

dal clock, il dato viene messo in uscita.

Abbiamo dunque un primo selezionatore S2 che comanda quale bit di ingresso

entra nel circuito, un demultiplexer che indirizza il dato nei singoli registri che

realizzano le diverse celle di memoria, ossia i FLIP FLOP, e un selettore

multiplexer che decide quale dei due fili il circuito deve dare in uscita.

Con riferimento alla figura 7.1, supponiamo che venga messo in ingresso il bit 1,

viene allora attivato il selezionatore S2 che supponiamo vada a 0, in questo caso

il demultiplexer indirizza l’ingresso 1 al FLIP FLOP FF0 che lo memorizza . Poi ogni

volta che il filo S1 viene messo a 0 il valore 1 viene a copiato in uscita dal

multiplexer.

demux

F.F. 0

F.F. 1

mux

s0s2 s3 s1

1

1

1

1

Figura 7.2: esempio di memoria a due celle di memoria con un ingresso pari a 1

I due FLIP FLOP inseriti in questo esempio di memoria a due bit, possono essere

immaginati come due caselle di una tabella in cui viene memorizzato un solo bit

che può essere o 0 o 1. Nell’esempio della figura l’ingresso pari a 1 è stato

indirizzato e memorizzato nel FLIP FLOP FF0 e quando il bit S1 va a 0, l’uscita

riporta il contenuto che è stato memorizzato nel FLIP FLOP FF0. Quindi all’interno

del FLIP FLOP FF0 è stata fatta una scrittura del bit 1 mentre con il selettore

multiplexer S1 = 0 è stato letto il contenuto della casella copiandolo in uscita.

La memoria che abbiamo descritto è caratterizzata dalla presenza di un congruo

numero di celle identificate da un numero (detto indirizzo), ciascuna di queste

in grado di contenere informazioni codificate in bit.

Avendo a disposizione due celle di memoria in cui vengono registrati i dati e poi

restituiti in uscita, con l’esempio dato dalla figura 7.2, si è attuato un

indirizzamento mediante la selezione del FLIP FLOP o cella di memoria che si

Page 4: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 191

vuole scrivere o leggere a seconda del valore del bit S1 selezionato dal

multiplexer.

Nell’esempio dell’ingresso pari a 1, si è memorizzato dentro il FLIP FLOP FF0 il

valore del bit pari ad 1 che rimane fino a che il multiplexer lo seleziona in lettura,

dandolo come valore di uscita.

Quindi la memoria è data da una serie di n celle numerate dove vengono

registrati i vari input entranti che rimangono disponibili nel tempo fino a quando

non vengono imputati altri nuovi ingressi.

Lo schema della figura 7.2 considera solamente due celle di memoria ma in realtà

ce ne possono essere molte di più le quali vengono sempre selezionate attraverso

meccanismi di demultiplexer che per scrittura restituiscono in uscita il dato a sua

volta registrato nelle celle di memoria.

Osservando la figura 7.2, notiamo che le reti combinatorie date dal multiplexer e

demultiplexer e la macchina a stati composta dai FLIP FLOP, sono tutte

relazionate tra di loro mediante dei fili che le collegano dando origine così alla

memoria.

Quindi una memoria, al di come è poi realizzata all’interno, è una macchina a

stati in cui si distinguono l’ingresso, l’uscita, un filo che stabilisce se si vuole

scrivere nella memoria (fase di WRITE) o se si vuole leggere la memoria (fase

READ), e un indirizzo che corrisponde ai comandi S3 ed S1 della figura 7.2, cioè

quelli che decidono rispettivamente su quale FLIP FLOP (S3) si va a leggere (S1)

il dato che è stato memorizzato.

Figura 7.3: configurazione di una memoria

Nell’esempio abbiamo considerato solamente due FLIP FLOP, ma si è appena

detto che normalmente ci possono essere più celle di memoria, se ad esempio

considerassimo n FLIP FLOP, è evidente che i fili necessari alle due reti

Page 5: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 192

combinatorie demultiplexer e multiplexer per smistare ed eventualmente leggere

il dato in uscita, sarebbero log2N dove N è il numero di celle in cui vengono

memorizzati i bit in ingresso.

Supponendo allora che in figura 2 ci siano 4 celle di memoria ossia 4 FLIP FLOP,

avremo dunque due bit di indirizzo e supponendo che con il bit 0 il bit

READ/WRITE dia il comando “leggi” e con il bit 1, il comando “scrivi”, allora con

ingresso pari ad 1 e con un valore del bit READ/WRITE pari a 0, l’input 1 viene

indirizzato e poi memorizzato nella cella 1 ovvero nel FLIP FLOP 1, senza avere

alcuna uscita.

Figura 7.4: memoria a quattro bit

Se poi in un secondo momento si attribuisce 0 al filo che comanda la lettura o la

scrittura del dato, quindi viene dato un comando di lettura, l’indirizzo che

abbiamo ha selezionato la cella 1, darà in uscita il dato pari a 1.

La memoria descritta dalla figura 7.4 è detta memoria a 4 celle per 1 bit per cui

ciascuna cella di memoria registra un bit.

7.2.1Memoria a 8 bit

Ora dati che vengono imputati in ingresso e che potrebbero essere un carattere

ASCII, un numero intero, o un numero in virgola mobile ad esempio, in realtà

sono vettori di n bit che vengono inviati in input al sistema, e non dunque singoli

bit come invece abbiamo considerato nelle figure prese in esempio per descrivere

le macchine programmabili, quindi difficilmente in un sistema troviamo una

memoria organizzata ad un solo bit.

Pertanto la cella di memoria fino ad ora descritta, anziché essere vista come una

casella in cui viene registrato un solo bit, è più corretto considerarla come una

memoria che registra un vettore di n bit, ad esempio di 8 bit. Possiamo quindi

immaginare una qualsiasi cella in questo modo:

Page 6: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 193

indirizzo Codice istruzione 8 bit = 1 byte

0 1 0 1 0 0 0 0 0 1 2 … …

Figura 7.5: la memoria principale a 8 bit

Ciascuna cella è caratterizzata da un indirizzo che corrispondono all’ordinamento

nelle celle della sequenza. Gli indirizzi sono numerati con numeri interi partendo

da zero e codificati in bit, ciascuna cella contiene un vettore di otto bit1.

Detto questo possiamo allora in generale definire una memoria come un

dispositivo in grado di immagazzinare informazioni (istruzioni e dati) codificate in

forma binaria.

La memoria è pensabile dal punto di vista logico come una sequenza finita di

locazioni (o celle) della dimensione di uno o più byte; ogni locazione prende il

nome di parola (word).Ogni cella di memoria deve essere in qualche modo

identificata univocamente, per potervi accedere senza essere confusa con le

altre. Ogni cella viene cosi ad avere un proprio numero identificativo, che viene

detto indirizzo2

Per la memoria della figura 7.5 ogni indirizzo identifica univocamente un byte

all'interno della memoria, quindi se in un ipotetico sistema di elaborazione si

avessero a disposizione ad esempio 4 linee di indirizzo, sarebbe possibile

collegare memorie della dimensione massima di 24 = 16 byte.

Con riferimento alla figura 7.5 in corrispondenza di ciascuna cella (data dalle

righe numerate) verrà registrato allora un carattere a 8 bit, che costituirà l’unità

informativa indirizzabile più piccola in termini di bit impiegati, tant’è che questa

unità di otto bit prende il nome di byte, quindi si considerano vettori di 8 bit che

vengono letti contemporaneamente.

Vediamo allora come si indirizza una memoria che anziché contenere un solo bit,

contiene un byte, ossia una sequenza di 8 bit presi contemporaneamente.

In questo caso sarà sufficiente prendere tanti FLIP FLOP come quelli dati dalla

figura 2, condividere con loro un indirizzo e metterli tutti in parallelo come la

seguente figura:

1 Si considerano vettori di 8 bit perché ad essi si associa un carattere codificato in maniera standard, come ad esempio il carattere ASCII

2 Per fare un paragone con una cassettiera, il contenuto della locazione di memoria è ciò che è contenuto all'interno del cassetto, mentre l'indirizzo è l'etichetta

che identifica il cassetto stesso.

Page 7: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 194

M0

M1

M2

M3

M4

M5

M6

M7

0

1

3

0

1

3

0

1

3

0

1

0

0

0

0

0

0

0

1

1

ind irizzo

Figura 7.6: composizione di una cella di memoria a un byte

si aggregano otto unità di memoria, ovvero otto FLIP FLOP in cui entrano otto fili

ciascuno collegato ad uno stesso indirizzo, per cui ogni cella di memoria della

figura 5, memorizza un singolo bit come componente del vettore di otto bit,

ovvero come componente del byte.

Spesso però nella rappresentazione dell’informazione non sempre si considerano

sufficienti 8 bit perché non sono molti gli oggetti da essi rappresentabili, si è

infatti visto che ad esempio il floating point standard dei numeri impiega 32 bit,

per cui in realtà spesso si usano più di otto bit per rappresentare un dato base.

Si osserva però, che una volta che si è organizzata in byte la memoria, se ad

esempio si impiegano 10 bit per codificare l’informazione inserita nel programma,

si ha un problema di allineamento dei bit nelle varie celle di memoria:

osservando la figura 4 infatti, con informazioni codificate ad esempio con 10 bit,

le celle non sarebbero più occupate interamente e così si andrebbe a perdere

l’allineamento tra i dati e l’indirizzo; infatti una parte del dato (esattamente i

primi otto bit) verrà smistata ad un determinato indirizzo, mentre il resto del

dato, (gli ultimi 2 bit) va ad essere smistata ad un indirizzo diverso.

Avendo dunque scelto il byte come unità indirizzabile, siamo poi vincolati a far si

che i dati più grossi di un byte affinché possano essere gestiti facilmente e

quindi collocati correttamente nella memoria, devono essere multipli di 8 bit, per

cui ad esempio un dato di 16 bit non darà problemi in quanto si fanno due letture

Page 8: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 195

della memoria occupata interamente nelle otto microcelle di cui è composta,

senza averne nemmeno una scoperta in quanto il dato è codificato in maniera

tale da occupare interamente l’indirizzo della memoria.

Ciò ha portato ad individuare altri vettori di bit, oltre al byte, che sono a sua

volta multipli del byte: più esattamente:

2 byte = 16 bit corrispondono ad una WORD

4 byte = 32 bit corrispondono ad una DWORD o double word

8 byte = 64 bit corrispondono ad una QWORD o quadrupla word

Si è visto che con il byte l’indirizzamento porta a selezionare una cella che

memorizza il dato inviato in entrata.

Alla luce delle osservazioni appena fatte è utile impostare la memoria in modo

tale che quando si chiede al sistema di dare il contenuto di una determinata cella

che contiene ad esempio una word, la memoria risponda dando come uscita due

byte.

7.2.2 La memoria R.A.M.

La memoria che abbiamo descritto nei paragrafi precedenti è la memoria R.A.M.

La memoria R.A.M. (Random Access Memory) è un dispositivo di

memorizzazione ad accesso casuale che viene generalmente utilizzato per

realizzare la memoria centrale del computer e consente all’utente di effettuare

sulle singole celle entrambe le operazioni di lettura e scrittura.

Con il termine memoria ad accesso casuale si riferisce al fatto che si può

accedere direttamente a qualsiasi parola di memoria in contrasto con il concetto

di memoria ad accesso sequenziale dove per raggiungere una parola è necessario

leggere tutte le precedenti3. Random infatti sta a significare che l’accesso al dato

può essere fatto senza alcun vincolo, nel senso che possiamo scegliere

liberamente l’indirizzo dove andare a leggere il dato memorizzato.

Con la memoria R.A.M si attua invece un meccanismo di selezione che permette

di scegliere il FLIP FLOP interrogato con un solo selettore del multiplexer o del

demultiplexer a seconda che il dato sia di sola lettura o anche di scrittura, senza

così dover seguire un percorso obbligato come invece impone un circuito

sequenziale.

3Si pensi per esempio ai vecchi calcolatori che utilizzavano i nastri per memorizzare tutti dati, per cui ogni volta che si doveva leggere a un dato bisognava

per forza scorrere il nastro fino ad individuare la posizione del dato memorizzato e qyindi averlo in lettura.

Page 9: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 196

Questo modo di salvare uno stato di una macchina a stati, ossia tramite l’impiego

della memoria R.A.M., random access machine, è talmente importante che ha

dato il nome di R.A.M. alla macchina programmabile, ma in realtà è quest’ultima

ad essere collegata ad una memoria R.A.M., infatti la macchina programmabile è

un’altro sistema che si relaziona con la memoria R.A.M.

7.3. Funzionamento di una macchina programmabile

Fatte queste premesse vediamo allora come funziona una macchina

programmabile: consideriamo la seguente figura:

indirizzo Codice istruzione 8 bit = 1 byte

0

1 0 0 1 0 0 0 0 1

2

i

i+1

n

Figura 7.7: struttura della memoria R.A.M.

La figura 7.7 rappresenta la R.A.M., ossia una tabella che elenca gli indirizzi delle

informazioni codificate da un byte.

Si è detto inizialmente che la macchina programmabile, oltre a ricevere in

ingresso i dati relativi ad un determinato problema, riceve anche le istruzioni

relative alle modalità con cui risolvere il problema.

La memoria R.A.M allora, contiene due tipi di dati separati che corrispondono ai

dati del problema e alle istruzioni che servono a risolvere il problema. Per cui in

una parte di memoria ci saranno i dati e in una parte di memoria ci saranno le

istruzioni

Dati

Page 10: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 197

istruzioni su come la macchina programmabile deve comportarsi per risolvere il

problema.

7.4. le Fasi di esecuzione di un’istruzione

Per avere idea di come funziona una macchina programmabile, supponiamo che

venga inviata alla macchina la seguente serie di istruzioni:

1. “scrivi il numero 4 nella cella 100”

2. “scrivi il numero 6 nella cella 101”

3. “somma il contenuto della cella 101 con il contenuto della 100”

4. “scrivi il risultato nella cella 100”

In questo caso il sistema ricevendo in ingresso le istruzioni, le eseguirà scrivendo

il numero 4 in binario usando 8 bit e selezionando con l’indirizzo la casella 100, la

stesa cosa farà per la seconda istruzione. Successivamente eseguirà la somma

dei due numeri e scriverà il risultato nella cella 100, “eliminando” il numero 4

scritto prima, e inserendo un dato nuovo dato dal risultato della somma,

selezionata sempre tramite l’indirizzo.

Questo esempio fa capire come il semplice fatto di aver dato delle precise

istruzioni alla memoria R.A.M, ha comandato al sistema di eseguire una somma

senza che il sistema stesso fosse a priori progettato come sommatore, ma si è

comportato in maniera tale semplicemente imputando al sistema un’istruzione di

come comportarsi. Per cui se come istruzione di ingresso veniva imputato un

altro dato, chiedendo al sistema di comportarsi ad esempio come sottrattore,

esso avrebbe letto ed eseguito l’istruzione comportandosi esattamente come un

sottrattore.

Vediamo allora come fa la macchina programmabile ad eseguire i vari ingressi e a

restituire i risultati dati dagli ingressi.

Innanzitutto bisogna delimitare il numero di istruzioni base le quali saranno

codificate: ad esempio per la prima istruzione data “scrivi il numero 4 nella cella

100”, ci sarà una sequenza di bit che codifica tale informazione. Le istruzioni

base sono quelle che la macchina esegue indipendentemente dal problema e dati

inviati in ingresso.

Una volta codificate le informazioni da inviare come ingressi attraverso il

programma, la macchina programmabile che riceve le istruzioni sarà una

macchina a stati che svolgerà le operazioni seguenti:

Page 11: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 198

FATCH

DECODEEXECUTE

Figura 7.8: fasi di esecuzione dell’istruzione

La figura 7.8 rappresenta un automa a stati finiti con tre stati, dove il primo stato

è dato dalla fase di lettura della memoria definita fase di FETCH, in questa

prima operazione, il sistema ha inserito l’istruzione dentro ad una memoria

interna della macchina programmabile; l’istruzione è dunque pronta per essere

interpretata ovvero, dati una sequenza di bit in ingresso si comanda che cosa

deve fare la macchina.

A questo punto si passa al secondo stato che si chiama “decodifica

dell’istruzione” detta anche operazione DECODE, cioè si interpretano le

operazioni dettate dalla configurazione di bit date in istruzione che la macchina

dovrà svolgere internamente.

Si passa poi alla fase di esecuzione EXECUTE, che esegue le istruzioni date in

entrata.

L’automa descritto in figura 7.8 viene eseguito continuamente in maniera ciclica,

cioè ad un primo ingresso la macchina legge, decodifica ed esegue, poi quando

ricomincia a leggere l’istruzione seguente a partire dalla cella di memoria

immediatamente successiva, per cui quando inseriamo la generica istruzione

“leggi l’istruzione dalla memoria all’indirizzo i” la macchina si comporta secondo

quanto indicato in figura 7.8, e una volta compiuto le tre fasi di FATCH; DECODE

ed EXECUTE, prima di eseguire l’istruzione successiva, il sistema incrementerà di

1 il numero che individua l’indirizzo della cella di memoria contenente l’istruzione

appena eseguita.

In generale dunque il sistema prima legge l’istruzione all’indirizzo i=0, poi legge

l’istruzione all’indirizzo i=2, poi all’indirizzo i=3, e così via prende cioè dalla

memoria l’istruzione una dopo l’altra eseguendo secondo l’ordine, ogni volta per

ciascuna istruzione, le tre fasi individuate dalla figura 5.

Nella seconda fase della figura 7.8, ossia la fase di DECODE o decodifica

dell’istruzione, viene interpretatala la sequenza di bit inviati in ingresso e

Page 12: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 199

convertita in segnali interni, ossia una volta letta l’istruzione in fase di FATCH, il

sistema attiva delle sottounità secondo quanto dato e letto in comando alla prima

fase di ingresso dell’istruzione.

Se ad esempio l’istruzione iniziale era quella di fare la somma ad esempio tra due

numeri, allora in fase di decodifica, il sistema collocherà i dati presi dalla memoria

R.A.M., in un’unità interconnessa alle unità che fanno i calcoli.

Se dunque nel sistema c’è un circuito che fa la somma, a tale circuito dovrà

essere connesso anche il registro dove stanno gli operandi, per cui se ci sono

tanti luoghi in cui si memorizzano gli operandi, ci sarà anche una rete di

selezione che invierà in ingresso al sommatore gli operandi giusti attivando una

serie di fili o di controlli che permettono di attuare l’istruzione così come è stata

definita.

Per cui una somma in realtà corrisponderà ad una serie di operazioni: quella di

interconnettere il sommatore nel registro dove sta l’operando, scrivere il risultato

in uscita dal sommatore in un registro specifico e tutto questo mediante una

serie di fili interconnessi attraverso multiplexer o demultiplexer che consentono il

funzionamento della macchina.

Le tre fasi della figura 7.8 attivano ciascuna delle parti del processore.

7.5 La macchina di Von Newman.

Si è visto che la R.A.M. è una macchina su cui è possibile scrivere dei dati e

leggerli mantenendo questi dati in apposite celle di memoria ciascuna delle quali

contiene 8 bit o anche byte.

La macchina programmabile è una macchina che si connette ad una memoria

R.A.M. da cui prende non solo i dati, ma anche le istruzioni dove ciascuna

istruzione dice alla macchina programmabile che cosa deve fare. Quindi in una

macchina programmabile ci saranno alcune celle che terranno i dati che vengono

elaborati e che possono essere considerati gli ingressi delle macchine finora viste,

e altre celle l’una in fila all’altra, che si troveranno in una parte della memoria e

che saranno numerate continuamente in base alla sequenza di istruzioni da

eseguire.

Il modo per rappresentare una memoria R.A.M. è quella di considerare un a

tabella che numera le righe date dagli indirizzi e dove ad ogni indirizzo è

associato un contenuto composto da celle di memoria da 8 bit o byte:

Page 13: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 200

indirizzo b0 b1 b2 b3 b4 b5 b6 b7 I0 I1 I2 ..... In

Figura 7.9: la memoria R.A.M.

In alcune celle della R.A.M., abbiamo detto che ci sono bit che hanno significato

di istruzione, altri invece che hanno significato di dati. Quindi anche l’istruzione

diventa un dato.

Se per esempio abbiamo un programma di 6 istruzioni, queste si troveranno nelle

prime 6 celle di memoria, quando poi verrà imputata la prima istruzione, questa

verrà letta nella fase di fatc, poi decodificata nella fase di decode, e una volta

interpretata l’istruzione dalla macchina, ci sarà la fase di esecuzione o fase

execute che consisterà nell’abilitazione di certe unità all’interno della macchina

programmabile che eseguono esattamente l’istruzione ricevuta.

La sequenza con cui vengono svolte queste operazioni, non sta dentro la

macchina programmabile, ma sta nel programma. Questa idea di portare la logica

di funzionamento della macchina, fuori dalla macchina è il salto di qualità

introdotto dall’idea di Von Newman.

La macchina che stiamo per descrivere è quella che fu ideata dal matematico e

fisico John Von Neumann che portò a definire le basi dei moderni calcolatori:

John Von Neumann definì per la prima volta il concetto di elaboratore elettronico

a programma memorizzato, la cosiddetta 'macchina di von Neumann'. Neumann

fu il primo a inquadrare in una teoria matematica coerente le 'macchine

intelligenti e gli automi. Per questo è anche il padre dell'informatica.

7.5.1 La macchina di Von Neumann: elementi

Prima di descrivere il funzionamento della macchina programmabile, vediamo di

capire come è composta la macchina di Von Neumann. Si consideri la seguente

figura:

Page 14: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 201

Figura 7.10:l’architettura della macchina di Von Newman

la macchina di Von Neumann è composta da tre tipologie di componenti

funzionali:

1. L'unità centrale di elaborazione (CPU) è la parte del sistema che contiene

gli elementi circuitali necessari al funzionamento dell’elaboratore.

Questa esegue i programmi che risiedono nella memoria centrale, prelevando,

decodificando ed eseguendo le istruzioni in essi contenute e coordinando il

trasferimento dei dati tra le varie unità funzionali;

La struttura generale di una CPU può essere a sua volta così schematizzata:

CPU = CU + ALU + Registri.

L’unità di controllo (o controller) è un dispositivo in grado di generare segnali sia

per i circuiti esterni alla CPU (ad esempio segnali di lettura/scrittura per le

memorie) che per i circuiti interni (ad esempio per l’ALU). Questa unità esamina

il codice operativo dell’istruzione da eseguire e decide quali sono i vari passi che

consentono l’esecuzione dell’istruzione stessa. In altre parole, l’unità di controllo

interpreta un’istruzione del programma per volta e comanda l’esecuzione

dell’istruzione inviando alle altre unità appropriati segnali di controllo.

L'unità aritmetico-logica (ALU):

Questa unità riceve in ingresso due operandi e, a seconda del tipo di segnale

proveniente dall’unità di controllo (CU), esegue una delle operazioni aritmetiche

(somma, sottrazione, …) o logiche (and, or, not, …). In generale l’ALU è in grado

Page 15: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 202

di eseguire anche operazioni quali lo shift a destra o a sinistra: tutti i bit di un

operando vengono spostati di una posizione verso destra o verso sinistra.

2. La memoria centrale è la memoria interna al calcolatore, direttamente

accessibile dalla CPU, essa contiene i programmi e i dati necessari

all'esecuzione dei programmi. Per memoria si intende un dispositivo in grado di

immettere, conservare ed estrarre informazioni. La memoria centrale a cui

riferiamo, è la memoria R.A.M.

3: Il bus di sistema è il mezzo che, sotto il diretto controllo della CPU, collega

le varie unità funzionali della macchina di Von Neumann.

Tramite il bus è possibile collegare solo due unità funzionali alla volta, una che

trasmette dati e una che riceve.

E’ la CPU che tramite i suoi organi assegna il bus ad uno specifico collegamento.

Nelle implementazioni concrete il bus di sistema è costituito da tre parti distinte:

una monodirezionale dal processore alla memoria detta bus degli indirizzi,

una bidirezionale dal processore alla memoria e viceversa detta bus dei dati ed

una monodirezionale dal processore alle altre unità funzionali detto bus dei

comandi

Fatte queste premesse, vediamo di descrivere in maniera generica il

funzionamento di una macchina programmabile di Von Neumann

7.5.2 Funzionamento della macchina di Von Neumann

Come si è detto in precedenza, l'esecuzione di ogni programma della macchina

programmabile avviene attraverso le tre fasi operative di fetch, decode ed

execute, si è visto che tali fasi sono costituite da un certo numero di azioni

elementari sequenzilamente eseguite dalla CPU.

Abbiamo anche visto che i dati che sono imputati alla macchina possono essere

o dati o istruzioni, consideriamo il caso in cui vengano imputate solamente le

istruzioni, ossia descriviamo la fase di fetch. Si consideri al riguardo la seguente

figura:

Page 16: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 203

DEMUX

Registro IR

Controller

MUX

P.C.

MEMORIA R.A.M.

R.W.

Dati

IndirizzoN

Figura7.11: fase di fetch

Supponiamo che la macchina legga la prima istruzione Io data, di indirizzo 0, ci

troviamo cioè nel filo relativo all’indirizzo da dove proviene l’indicazione, e

supponendo che n sia pari ad 8 bit (quindi i possibili indirizzi che possono entrare

nella R.A.M. sono 28= 256 righe di programma o byte) ci saranno allora 8 fili in

indirizzo che danno tutti 0 in uscita: in questa fase dunque, la macchina comanda

alla memoria una lettura del contenuto della cella 0, e il terzo filo che collega la

macchina alla R.A.M. assumerà un certo valore. A questo input la memoria

risponde dando in uscita una sequenza di otto bit

La prima istruzione I0 è data dunque da una serie di 8 bit che vengono

interpretati dalla macchina programmabile come un’istruzione: volendo

riprendere l’esempio fatto precedentemente, supponiamo che la prima istruzione

equivalga a dire “leggi dalla cella 100 il valore che c’è dentro”. Vediamo allora di

capire dove finisce la prima istruzione I0. A questo punto, con riferimento alla

figura 7.11, il controllore comanderà al demultiplexer, al quale sono collegati vari

fili di uscita e che riceve tutti i dati dalla memoria R.A.M. provenienti dalla prima

istruzione, di fare uscire l’informazione su un apposito registro chiamato

instruction register: con riferimento alla figura il controller fa in modo che il

demultiplexer colleghi uno dei suoi vari fili di uscita con il registro dove viene

memorizzata la prima istruzione.

I registri sono dispositivi di memorizzazione usati per le elaborazioni interne alla

CPU e sono sequenze di n celle di memoria nelle quali si può leggere e scrivere

un dato di n bit. Ogni cella di memoria elementare è costituita da un flip-flop, in

Page 17: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 204

grado di memorizzare un bit (1 o 0). I registri possono memorizzare un numero

piuttosto limitato di bit (8, 16, 32 o 64).

Figura7.12: esempio di registro

Il sistema carica l’istruzione all’indirizzo 0 che sta dentro la R.A.M., dentro un

registro attraverso il controller che comanda al demultiplexer di collegarsi con il

registro dove memorizzare il primo indirizzo, in quanto l’informazione dovrà

rimanere memorizzata per tutto il tempo dell’esecuzione dell’istruzione.

La prima istruzione inviata dalla macchina programmabile è quella contenuta

nella cella di memoria R.A.M. di indirizzo zero; c’ è infatti un’altro registro

chiamato program counter o contatore di programma, che comanda alla

memoria di caricare il dato di indirizzo 0.

Il progam counter, o contatore di programma, è una macchina a stati che conta

le istruzioni in sequenza e in ordine di arrivo, passando cioè sempre all’istruzione

immediatamente successiva una volta che la macchina ha eseguito la generica

istruzione i, il contatore dunque determina l’indirizzo sommando 1 ad ogni

istruzione successiva. Quindi Il Program Counter è il registro che contiene

l'indirizzo della prossima istruzione da eseguire. Tale registro deve essere

aggiornato almeno una volta per ciclo macchina, fase di fatc, decode ed execute,

(comunque mai più di due), puntando all'istruzione successiva a quella

attualmente in esecuzione,

A questo punto Il controllore comanda al mutilplexer collegato con il program

counter di selezionare il numero dato in uscita dal program counter per poi

inviarlo alla R.A.M. al fine di metterla nelle condizioni di dare la prima istruzione.

Page 18: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 205

DEMUX

Registro IR

Controller

MUX

P.C.

MEMORIA R.A.M.

R

Dati

Indirizzo0

m

R.W.

Figura: 7.13

Riassumendo il controllore invia alla memoria R.A.M. la lettura del dato e

comanda di prendere l’indirizzo dal program counter, a questo punto alla

memoria R.A.M. arriva una richiesta di lettura del dato dall’indirizzo 0 per cui

essa provvederà a prelevare dalla tabella contenente, sia le istruzioni che i dati,

l’istruzione I0, la trasmette nel filo dei dati e quando il controllore riceve la

conferma del dato restituito in uscita dalla R.A.M., lo inserisce dentro

l’instruction register.

In questa fase di fetch, la memoria accede alla cella indirizzata, il cui contenuto

di (ovvero l’istruzione) viene inviato dalla R.A.M. e trasferito, siu comando del

controller nell’instruction register tramite il demultiplexer. Nel frattempo il

controller comanda al program counter di incrementare di 1 l’indirizzo della prima

istruzione, affinché identifichi la successiva istruzione da eseguire.

In questa fase di fetch, la CU preleva dalla memoria l’istruzione che deve essere

eseguita, il cui indirizzo è contenuto nel Program Counter (PC), la pone

nell’Instruction Register (IR) ed incrementa il valore del PC per prepararsi poi ad

eseguire l’istruzione successiva;

In questa fase il controllore svolge il compito di attivare le varie unità, in modo

tale che la memoria riceva una richiesta di lettura e il dato che esce dalla

memoria venga messo nel registro di istruzione. In questa fase dunque entrano

in gioco le unità il multiplexer il demultiplexer e la memoria che collegano

temporaneamente il program counter alla linea di indirizzo della R.A.M. e

l’instruction register alla linea di uscita della memoria R.A.M..

Page 19: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 206

Dopo che l’indirizzo di memoria è stato utilizzato, quindi è stata caricata

l’istruzione I0 nella memoria R.A.M., il program counter incrementa di una unità il

valore del byte in esso contenuto, per cui il program counter, da 0 diventa 1

pronto per l’istruzione successiva.

Attenzione però che la memoria R.A.M. non vedrà questo cambiamento, perché il

controller comanderà al multiplexer di non dare in uscita il valore ricevuto dal

program counter, quindi si aggiorna il contatore ma il valore assunto da questo

non viene visualizzato in uscita dalla R.A.M., in quanto il multiplexer selezionerà

un’altro ingresso, ma non quello relativo al program counter.

Una volta che l’istruzione è stata memorizzata nel registro, bisogna capire che

cosa deve fare a questo punto la macchina programmabile.

Si è visto che la macchina programmabile è una macchina a stati che sulla base

di un certo ingresso dato dai bit dell’istruzione pilota le varie unità i cui essa è

composta (vedi paragrafo precedente): quindi l’operazione di leggere l’istruzione,

decodificarla ed eseguirla va sempre attuata indipendentemente dal programma

poiché è una procedura che sta scritta dentro la macchina programmabile, in che

cosa poi consiste l’esecuzione dell’istruzione è una cosa che varia sempre e

dipende da quale è l’istruzione data.

Fatte queste premesse, si passa alla seconda fase, ossia la fase di DECODE; in

questa fase la CU interpreta il codice operativo dell’istruzione da eseguire

contenuta in Instruction Register.

L’Instruction Register che contiene l’istruzione ricevuta in prima fase, verrà

decodificato attraverso un decoder facente parte del controller: il decoder

dunque legge l’istruzione e informa il controller che cosa deve attivare in seguito

all’istruzione che il decoder ha letto. Il decoder provvede a decodificare

l'istruzione presente nell'apposito registro in veri e propri segnali da inviare ai

componenti della macchina.

All’interno del processore ci sono un certo numero finito di registri detti registri

di memoria che, come quello visto in figura 7.13, sono le unità di accesso

minime alla memoria contenenti 8 bit ossia un solo dato e la cui funzione è quella

di memorizzare un dato alla volta. Supponiamo allora di considerare una

macchina programmabile che contiene quattro registri come la seguente figura:

Page 20: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 207

DEMUX

Controller

DEMUX1

MEMORIA R.A.M.

R/W

Dati

Indirizzo

decoder

MUX

R1 R2 R3 R3 R4

Figura 7.14: fase di decode

La figura 7.14 è la stessa figura 7.13 (e anche della 7.12), solo che ai fini

esplicativi della fase di decode e di esecuzione che si sta descrivendo, vengono

evidenziate solamente le unità coinvolte, fermo restando che le parti omesse per

ragioni di spazio, sono elementi sempre presenti nella macchina programmabile.

Nella macchina della figura 7.14 ci sono quattro registri che chiameremo R1, R2,

R3, R4.

Supponendo ad esempio che la prima istruzione sia “leggi il dato dalla cella 100”,

l’istruzione è incompleta perché deve anche indicare in quale dei quattro registri

deve essere memorizzato il dato.

In questo caso dunque entra in gioco un’altro demultiplexer collegato al

demultiplexer che prima ha indirizzato su comando del controller l’istruzione zero

all’Instruction register, questo ultimo demultiplexer, sempre controllato dal

controller, si collegherà con il demux1 che smisterà il dato dentro ad uno dei

quattro registri. Se dunque l’istruzione iniziale era “leggi il dato dalla cella 100 e

scrivi il dato in R3”, in fase di decodificata il controller attiverà tutte le operazioni

necessarie per prendere dalla cella di indirizzo 100 il dato D0 in essa contenuto.

L’indirizzo, a differenza di prima non viene dal program counter, ma viene

direttamente dato dal decoder che ha letto l’istruzione I0.

Il decoder ha letto l’istruzione dall’instruction register, il controller produce

l’indirizzo 100, quindi nel filo relativo all’indirizzo uscirà 100 che a sua volta

entrerà nella memoria R.A.M.. A questo punto la memoria R.A.M. ricevendo dalla

macchina una richiesta di lettura del dato D0 alla cella 100, restituisce al sistema

Page 21: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 208

il valore D0 (sempre un dato di otto bit) e visto che l’istruzione precisa di inserirlo

in R3, il controller attiverà il demultiplexer demux in maniera tale che il dato non

finisca dentro l’instruction register, ma venga trasmesso direttamente al

demultiplexer demux1 il quale si attiverà secondo quanto stabilito dall’istruzione,

ossia inserendo D0 dentro il registro R3.

Quindi in seguito all’attivazione dei fili di controllo evidenziati in figura 7.14, la

macchina programmabile o processore, ha richiesto alla memoria di prendere il

dato e di memorizzarlo all’interno di uno specifico registro.

Le azioni che avvengono nella fase di esecuzione dipendono dall’istruzione da

eseguire. L’unità di controllo, su suggerimento del decoder, genera la necessaria

sequenza di segnali di controllo e trasferimento dati alle altre unità

Terminata l’esecuzione dell’istruzione I0, l’elaborazione riprende ciclicamente con

la fase di fetch dell’istruzione successiva I1.

Quando il sistema riceve la successiva istruzione, il contatore incrementerà di 1,

e l’istruzione I1 verrà inserita dentro l’instruction register con la stessa procedura

di prima. L’unica cosa che è cambiato, è l’indirizzo, perché dopo il fetch

precedente, si è comandato al program counter di incrementare di 1, per cui se

questo non si fosse incrementato, il sistema avrebbe letto nuovamente

l’istruzione zero.

Anche in questo caso, dopo aver decodificato l’istruzione I1, la macchina si

attiverà per eseguirla.

Supponendo che I1 sia “leggi dalla cella 101 e metti il dato in R2”, la decodifica

eseguirà la stessa operazione di prima, l’istruzione verrà inviata alla memoria che

a sua volta risponde inviando il dato D1 contenuto nella cella 101.

Successivamente il decodificatore comanderà al demultiplexer demux1 di

selezionare il filo in uscita che connette il registro R3, memorizzando così D1 nel

registro R3. (vedi figura 7.15)

Page 22: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 209

DEMUX

Controller

DEMUX1

D0

MEMORIA R.A.M.

R/W

Dati

Indirizzo100

decoder

MUX

R1 R2 R3 R3 R4

D0D1

D1

101

Figura: 7.15: fase di execute

Quindi il comportamento della macchina è come quello di prima, ma trattandosi

di un’altra istruzione, per essa ci sarà un’altro percorso per il dato D1, in quanto

viene memorizzato in un registro diverso.

Tecnicamente il percorso che viene comandato dal controller per memorizzare il

dato della R.A.M. in un registro, viene DATA PATH. La cosa che vale la pena

osservare è che questo percorso è configurabile.

Vediamo allora cosa succede quando diamo l’istruzione I2 che comanda ad

esempio, “somma il dato 0 con il dato 1”, ovvero “somma il contenuto della cella

100 e della cella 101”. Poiché il contenuto della cella 100 e della cella 101 sono

state memorizzate nei registri R2 ed R3, l’istruzione “somma il dato 0 con il dato

1”, equivale anche a sommare i valori contenuti nei due registri.

Naturalmente l’istruzione I2 viene presa dal sistema con le stesse modalità viste

per le due precedenti.

Consideriamo la solita figura ancora una volta modificata per evidenziare cosa

succede per la terza istruzione

Page 23: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 210

Controller

MEMORIA R.A.M.

R/W

Dati

Indirizzo

decoder

MUX3

R1 R2 R3 R4

D0D1

MUX2

D0+D1

MUXA

LU

Figura: 7.16

in figura 8.6 è stata introdotta una rete combinatoria definita ALU che sta per

Arithmetic Logic Unit. L’ALU è un’unità aritmetico-logica che esegue le

operazioni elementari necessarie per l’esecuzione delle istruzioni. Tipicamente,

comprendono operazioni aritmetiche come la somma, la sottrazione, la

moltiplicazione, la divisione e altre operazioni logiche come AND, OR e NOT.

Nell’ALU entrano dei fili che indicano 8 possibili operazioni che l’unità può fare.

I due multiplexer collegati all’ALU, sono anch’essi pilotati da un’unità di controllo

e collegati ai quattro registri: essi ricevono in ingresso i dati contenuti nei due

registri R2 ed R3, e sulla base di fili di selezione dei due multiplexer, selezionano i

dati contenuti nel registri inviati in ingresso e restituendoli in uscita come

operandi nell’unità ALU.

L’istruzione I2: “somma R2 con R3” significa che sulla base dell’istruzione

decodificata, viene attivato il filo connesso al registro R2 contenente il dato D1 sul

multiplexer mux2 il quale da in uscita il dato D1 come ingresso dell’ unità ALU.

Allo stesso modo il secondo multiplexer mux3, sempre sulla base del contenuto

dell’istruzione, attiva il filo connesso con R3 contenente D2 che lo porta in uscita e

quindi come ingresso dell’ ALU.

Sulla base di questa terza istruzione l’ALU si trova dunque in ingresso D1 e D2

che sono il contenuto di R2 e di R3 . A questo punto il controller verificato che i

dati sono pronti nei vari registri, attiva il multiplexer affinché invii in entrata

all’ALU i due dati contenuti nei registri selezionati dal multiplexer mux2 e mux3,

Page 24: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 211

e con un altro filo, il controller attiva la funzione di somma all’ALU, poiché il

decoder, in fase di decodifica, ha suggerito al controller che l’istruzione I0

chiedeva l’operazione di somma, se l’istruzione avesse chiesto la sottrazione ad

esempio, il controller avrebbe attivato il filo della sottrazione comandando così

all’ALU di fare la sottrazione dei due dati. Per renderci meglio conto di

quest’ultima operazione, evidenziamo in figura la fase di trasmissione dei dati dai

registri all’ALU:

Figura: 7.16

Il risultato della somma sarà a sua volta messo in un registro dei risultati.

Normalmente nell’istruzione di somma identificata nell’esempio con I2, c’è anche

la specifica di dove mettere il risultato, per cui in realtà l’istruzione I2 sarà

“somma il dato D1 con il dato D2 e scrivi il contenuto in R1”. In questo caso ci sarà

un filo che collegherà il registro dei risultati con un multiplexer che a sua volta è

connesso al demultiplexer demux 1, cioè quello che seleziona i registri, e che

copierà dunque il risultato nel registro specificato nell’istruzione, ossia R1.

Vediamo allora che in fase di esecuzione (execute), la CU genera i segnali di

controllo necessari per l’esecuzione dell’istruzione, avvengono i trasferimenti tra

registri e/o memoria (ad esempio vengono letti altri dati dalla memoria e posti

nei registri); si attuano poi le operazioni che coinvolgono l’ALU, cioè invio di

Page 25: Le macchine programmabili - DEIpanico/APPUNTI/cap7- Elaborazione... · Le macchine programmabili 7.1 Le Macchine Programmabili Nel capitolo precedente trattando le reti sequenziali

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione” Prof . Nicola Zingirian 212

segnali opportuni all’ALU in grado di attivare una particolare operazione

aritmetica o logica.

Quando vengono inviate le istruzioni alla macchina, vediamo che in fase di

decodifica, l’unità di controllo mette in atto una sequenza di segnali dati dai fili

che partono dal controller e che attivano le varie unità richieste per l’esecuzione

delle istruzioni impartite dalla R.A.M.: questi segnali o fili, vengono chiamati

CONTROL PATH: essi specificano quali sono le leve dei comandi che l’unità di

controllo deve attivare per eseguire l’operazione al microprocessore che è la

macchina programmabile.

Ci sarà infine un’ultima istruzione I3 che dice” scrivi il dato D1+ D2 dentro la cella

100 della memoria” in questo caso il dato D0 contenuto nella cella 100, sarà

cancellato o sovrascritto e aggiornato con il valore del risultato della somma. In

tal caso il decoder capisce che l’istruzione di scrivere il contenuto di R1 nella cella

100 è data in scrittura, per cui predispone il terzo filo che collega la macchina alla

R.A.M. in scrittura, la R.A.M. ricevendo la richiesta, provvederà ad immettere

l’istruzione nel sistema, mentre dai registri ci sarà un’altro multiplexer che farà

andare il dato D1+ D2 memorizzato in R1 su un canale di uscita verso la memoria

R.A.M. nella cella di indirizzo 100.

Quindi l’istruzione di scrivere il contenuto di R1 dentro la memoria farà si che il

controller preparerà attraverso i fili di controllo, il percorso per cui il dato potrà

uscire verso la memoria .