Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
(R).
Tale tecnica richiede che l’istruzione abbia due campi indirizzo, e che almeno uno sia esplicito.
Il valore, A, di un campo indirizzo è usato direttamente. L’aItro campo indirizzo, o un riferimento
implicito basato sul codice operativo, si riferisce a un registro il cui contenuto viene sommato ad A
per produrre l’indirizzo effettivo. Tre dei più comuni utilizzi:
• indirizzamento relativo
• indirizzamento base-registro
• indicizzazione
Indirizzamento relativo Nell’indirizzamento relativo, il registro implicitamente referenziato è il
program counter (PC). In altre parole, l’indirizzo dell'istruzione corrente viene sommato al campo
indirizzo per produrre l’EA. Qui il campo indirizzo viene trattato come un numero in complemento a
due. Pertanto, l’indirizzo effettivo è uno spiazzamento relativo rispetto all’indirizzo dell’istruzione.
L’indirizzamento relativo sfrutta il concetto di località. Se la maggior parte dei riferimenti alla
memoria sono relativamente vicini all’istruzione in esecuzione, allora l’uso dell’indirizzamento
relativo risparmia bit di indirizzo nell’istruzione.
Indirizzamento registro-base Il registro referenziato contiene un indirizzo di memoria e il campo
indirizzo contiene uno spiazzamento (solitamente un intero senza segno) rispetto a tale indirizzo. Il
riferimento al registro può essere esplicito o implicito. L’indirizzamento registro-base sfrutta
anch’esso la località degli accessi alla memoria. Si tratta di un metodo adatto all’implementazione
della segmentazione. In alcune implementazioni, si utilizza implicitamente un registro segmento-
base. In altre, il programmatore può scegliere un registro per contenere l’indirizzo base di un
segmento, e l’istruzione deve fare riferimento esplicito a tale registro. In quest’ultimo caso, se la
lunghezza del campo indirizzo è K e il numero di registri possibili è N, allora un’istruzione può
k
accedere a ciascuna delle N aree delle 2 parole.
Architettura degli elaboratori Maria Loreta La Barbera
22
Indicizzazione il campo indirizzo rappresenta un indirizzo di memoria centrale e il registro
referenziato contiene uno spiazzamento positivo da tale indirizzo. Si noti che questa descrizione è
l’opposto dell’interpretazione dell’indirizzamento base-registro. Un utilizzo importante
dell’indicizzazione consiste nel fornire un meccanismo efficiente per eseguire operazioni iterative.
Indirizzamento a pila Una pila è una sequenza lineare di locazioni riservate di memoria.
Associato alla pila troviamo un puntatore (contenuto nel registro SP, stack pointer) il cui valore è
l’indirizzo della cima della pila. In alternativa, i due elementi più in alto nella pila si possono trovare
nei registri della CPU. In tal caso SP referenzia il terzo elemento della pila. Pertanto, i riferimenti
alle locazioni della pila nella memoria sono di fatto indirizzi a registro indiretto. Questa tecnica è
una forma di indirizzamento implicito. Le istruzioni macchina operano implicitamente sulla cima
della pila senza accedere alla memoria.
Linguaggio assembly
Un processore può interpretare ed eseguire istruzioni macchina costituite da stringhe binarie
memorizzate nel calcolatore. Per programmare direttamente in linguaggio macchina occorre quindi
immettere il programma in forma binaria. Consideriamo il semplice comando BASIC N = I +J + K.
Supponiamo di voler programmare questo comando in linguaggio macchina e di inizializzare I, J e
K rispettivamente a 2, 3 e 4. Il programma inizia all’indirizzo esadecimale 101. Viene riservata
memoria per le quattro variabili a partire dall’indirizzo 201. Il programma consiste di quattro
istruzioni:
1. carica i contenuti della locazione 201 in AC
2. somma i contenuti della locazione 202 ad AC
3. somma i contenuti della locazione 203 ad AC
4. memorizza i contenuti di AC nella locazione 204.
Si tratta di un processo chiaramente tedioso e molto incline agli errori. Un leggero miglioramento
consiste nello scrivere il programma in notazione esadecimale anziché binaria. Potremmo
riscrivere il programma come una serie di istruzioni che contengono l’indirizzo di una cella di
memoria e la rappresentazione esadecimale del valore da memorizzare in tale locazione. Poi è
necessario un programma che legge questo input, lo traduca in forma binaria e lo memorizzi nella
cella specificata. Per un ulteriore miglioramento, si può far uso di nomi simbolici (o mnemonici) per
le istruzioni. Ne consegue il programma simbolico. Lo sviluppo dei linguaggi assemblativi
rappresenta una pietra miliare nell’evoluzione della tecnologia dei calcolatori, in quanto si tratta del
primo passo verso gli odierni linguaggi ad alto livello.
CAPITOLO 12: Struttura e funzione del processore
Organizzazione del processore
I requisiti dei compiti che deve svolgere:
• Prelevare istruzioni: il processore legge un’istruzione dalla memoria.
• Interpretare istruzioni: l’istruzione viene decodificata per determinare l’azione richiesta.
• Prelevare dati: l’esecuzione di un’istruzione può richiedere la lettura dei dati dalla memoria
o da un modulo di I/O.
• Elaborare dati: l’esecuzione di un’istruzione può richiedere di effettuare alcune operazioni
aritmetiche o logiche sui dati.
• Scrivere dati: i risultati dell’esecuzione possono richiedere la scrittura di dati in memoria in
un modulo di I/O.
Le componenti principali del processore sono l’unità aritmetico-logica (ALU) e l’unità di controllo.
L’ALU effettua la vera e propria elaborazione sui dati. L’unità di controllo gestisce il trasferimento
dati e istruzioni da e verso il processore, e controlla le operazioni dell’ALU.
Organizzazione dei registri
Architettura degli elaboratori Maria Loreta La Barbera
23
I registri del processore svolgono due ruoli.
• Registri utente: consentono al programmatore di minimizzare i riferimenti alla memoria
centrale ottimizzando l’uso dei registri.
• Registri di controllo e di stato: sono usati dall'unità di controllo per monitorare le
operazioni del processore e dai programmi del sistema operativo per controllare
l’esecuzione dei programmi.
Registri utente
I registri utente possono essere referenziati per mezzo del linguaggio macchina che il processore
esegue. Possiamo suddividere tali registri nelle seguenti categorie:
• generici
• dati
• indirizzi
• codici di condizione.
I registri generici possono essere assegnati a varie funzioni da parte del programmatore.
Talvolta il loro impiego rispetto all’insieme di istruzioni è ortogonale all’operazione. In altre parole,
ogni registro generico può contenere l’operando di ciascun codice operativo. Questo consente
l’uso di registri veramente generici. Spesso si pongono delle restrizioni. In alcuni casi, i registri
generici possono essere usati per l’indirizzamento (registro indiretto o spiazzamento). In altri casi,
esiste una distinzione tra i registri dati e i registri indirizzo. I registri dati dovrebbero essere usati
per contenere dati e non per il calcolo dell’indirizzo degli operandi. I registri indirizzo possono
essere di uso generale oppure dedicati a una specifica modalità di indirizzamento. Tra i possibili
esempi:
• Puntatori a segmento: nelle macchine con indirizzamento segmentato i registri di
segmento contengono l’indirizzo iniziale dei segmenti. Ci può essere un registro di
segmento per il sistema operativo e uno per il processo in esecuzione.
• Registri indice: sono utilizzati per l’indirizzamento con indice e possono essere
autoindicizzati.
• Puntatore alla pila: se l’indirizzamento alla pila è visibile all’utente, allora generalmente
esiste un registro dedicato (stack pointer) che punta alla cima della pila. Ciò consente l
indirizzamento implicito; ossia push, pop e altre istruzioni sulla pila che non richiedono un
operando esplicito.
Registri di controllo e di stato
Vari registri del processore vengono utilizzati per controllare le operazioni del processore stesso. In
genere questi registri non sono visibili all’utente. Alcuni possono essere utilizzati dalle istruzioni
macchina eseguite in modalità controllo o in modalità sistema operativo. Ovviamente, macchine
diverse avranno differenti organizzazioni dei registri e useranno la propria terminologia. Per
l’esecuzione delle istruzioni, sono essenziali quattro registri:
• Program counter (PC): contiene l’indirizzo della prossima istruzione da eseguire.
• Instruction register (IR): contiene l’ultima istruzione prelevata.
• Memory address register (MAR): contiene l’indirizzo di una locazione in memoria.
• Memory buffer register (MBR): contiene un dato da scrivere nella memoria o proveniente
da questa.
Non tutti i processori hanno registri dedicati come MAR ed MBR1 ma tutti possiedono i circuiti in
grado di scrivere sul bus e di leggere e registrare dati dal bus.
Architettura degli elaboratori Maria Loreta La Barbera
24
Ciclo esecutivo delle istruzioni
Un ciclo esecutivo include le seguenti fasi:
• Fetch: legge l’istruzione successiva dalla memoria e la pone nel processore.
• Esecuzione: interpreta il codice operativo ed esegue l’operazione indicata.
• Interrupt: se viene raccolto un interrupt, salva lo stato del processo corrente e serve
l’interrupt.
Ciclo indiretto
L’esecuzione di un’istruzione può coinvolgere uno o più operandi in memoria, ciascuno dei quali
richiede un accesso alla memoria. Inoltre, l’indirizzamento indiretto richiede accessi aggiuntivi alla
memoria.
Possiamo pensare al prelievo di indirizzi indiretti come a un sottociclo di un’istruzione. La
principale linea d’azione consiste nell’alternare prelievi di istruzioni ed esecuzioni di istruzioni.
L’istruzione prelevata viene esaminata per determinare se comporta un indirizzamento indiretto; in
questo caso gli operandi richiesti vengono prelevati in tal modo. Dopo l’esecuzione, si può gestire
un interrupt prima del successivo fetch.
Altro modo di interpretar il processo Una volta che un’istruzione viene prelevata, si devono
identificare i suoi operandi. Questi vengono letti dalla memoria, e il processo può richiedere il
calcolo dell’indirettezza.
Gli operandi che si trovano nei registri non richiedono prelievi. Al completamento della fase
esecutiva propriamente detta può essere necessario ripetere il processo di memorizzazione del
risultato.
Flusso di dati
La sequenza esatta di eventi durante l’esecuzione di un