• Non ci sono risultati.

Dispensa I.3

N/A
N/A
Protected

Academic year: 2021

Condividi "Dispensa I.3"

Copied!
14
0
0

Testo completo

(1)

Dispensa di Informatica – I.3

Dispensa I.3 versione 1.0 mail: lamonica@associatesonline.it Pagina 1

IL MICROPROCESSORE (CPU)

L’architettura del calcolatore secondo Von Neumann può essere schematizzata come segue.

I programmi sono composti da istruzioni e dati ed entrambi risiedono in memoria centrale.

L’esecuzione di un programma prevede che per ogni istruzione vengano seguiti i seguenti passi:

• Fetch: l’istruzione viene prelevata dalla memoria

• Decode: l’istruzione viene interpretata ed i relativi dati preparati

• Execute: l’istruzione viene eseguita sui dati precedentemente preparati,

ed il risultato (se previsto), viene scritto in memoria. Una vota che un ciclo FDE è terminato, si passa all’istruzione successiva.

Ogni istruzione è codificata all’interno della memoria come una stringa di bit contenente:

• il tipo di istruzione

• i registri o gli indirizzi di memoria degli operandi

• il registro o l’indirizzo di memoria destinazione

• eventuali altre informazioni

(2)

Es: istruzioni codificate su 32 bit

Ci sono principalmente tre gruppi di istruzioni principali:

• Spostamento dati registro-memoria, memoria-registro e registro-registro

• Operazioni aritmetico/logiche

• Operazioni di salto nel programma.

Ci sono principalmente due metodi per implementare l’esecuzione delle diverse istruzioni all’interno del microprocessore:

Esecuzione diretta, dove ogni possibile istruzione il microprocessore include un circuito in grado di eseguirla. Questo metodo permette:

• Hardware dedicato molto efficiente e veloce.

• Costi di produzione più alti.

• Complessità maggiore.

• Numero di possibili istruzioni limitato.

Interpretazione / microprogrammazione dove il microprocessore include circuiti in grado di eseguire un numero molto limitato di operazioni di base e le Operazioni più complesse richiedono l’esecuzione di un “microprogramma” contenuto nell’unità di controllo.

Ogni microprogramma è composto da una serie di operazioni di base. Questo permette:

• Maggiore flessibilità nel design del processore.

• Numero maggiore di possibili istruzioni.

• E’ semplice “aggiungere” nuove funzionalità ad un progetto esistente.

• Hardware più compatto.

(3)

Dispensa di Informatica

Dispensa I.3 versione 1.0

SCHEMATIZZAZIONE DELLA CPU

Il processore (CPU), secondo la classica Architettura di von Neumann, comunica con gli altri dispositivi o periferiche quali le memorie non volatili e i dispositivi di input

Bus di collegamento, generalmente in modalità pa

In particolare il processore, che è un dispositivo programmabile dall'esterno dall'utente, operazioni di elaborazione richieste sui dati

o locazioni di memoria.

Nello schema sopra riportato, vediamo le componenti schematizzate della architettura di una C

• Arithmetic Logic Unit (ALU);

• La Memoria;

• l'Internal Bus, il Data Bus e l'Address Bus;

• Registri del processore (o interni):

• Program Counter (PC);

• Memory Address Register (MAR);

• Memory Data Register (MDR);

• Instruction Register (IR);

• Status Register (SR);

• I registri generali R1..Rn.

Dispensa di Informatica – I.3

mail: lamonica@associatesonline.it

SCHEMATIZZAZIONE DELLA CPU

l processore (CPU), secondo la classica Architettura di von Neumann, comunica con gli altri ispositivi o periferiche quali le memorie non volatili e i dispositivi di input-output (I/O) tramite i Bus di collegamento, generalmente in modalità parallela.

In particolare il processore, che è un dispositivo programmabile dall'esterno dall'utente, operazioni di elaborazione richieste sui dati che - dal suo punto di vista - vede solo

Nello schema sopra riportato, vediamo le componenti schematizzate della architettura di una C Arithmetic Logic Unit (ALU);

l'Internal Bus, il Data Bus e l'Address Bus;

el processore (o interni):

Memory Address Register (MAR);

Memory Data Register (MDR);

Pagina 3 l processore (CPU), secondo la classica Architettura di von Neumann, comunica con gli altri

output (I/O) tramite i

In particolare il processore, che è un dispositivo programmabile dall'esterno dall'utente, eseguie le vede solo tramite indirizzi

Nello schema sopra riportato, vediamo le componenti schematizzate della architettura di una CPU.

(4)

I registri sono organi di memoria atti a memorizzare una serie di bit, che possono essere dati, indirizzi di memoria o istruzioni di programma prelevati dalla memoria del processore ed espresse in linguaggio macchina. Valori tipici del numero di bit che essi memorizzano sono: 8, 16, 32 o 64.

Poiché la memoria non volatile è in genere lenta l'uso di registri o locazioni di memoria aggiuntivi su cui appoggiare i dati provvisori è in generale una cosa molto utile per il funzionamento

efficiente del processore stesso. Nel seguito si descrivono nel dettaglio i vari componenti

raffigurati in figura ovvero cosa fanno i dispositivi principali del processore e cosa memorizzano in particolare i registri.

L'Unità di Controllo. è l'organo o unità che gestisce, controlla o presiede l'esecuzione di tutte le operazioni di elaborazione per il particolare programma da eseguire ovvero comanda tutte le altre parti del processore attraverso il pilotaggio dei componenti stessi (ALU ecc..) impartendo a questi comandi di input e facendo da supervisore; rappresenta la parte a logica sequenziale della

macchina a stati generale che, a sua volta, rappresenta la logica elettronica generale del

processore stesso. Ad essa spetta, ad esempio, l'interpretazione dell'istruzione che si trova di volta in volta nel registro IR; ad esso spetta abilitare alla lettura ed alla scrittura due registri tra i quali deve avvenire uno scambio di informazione. L'unità di controllo comprende una sottounità detta sequencer che altro non è che una macchina a stati che scandisce i passi o stati di un'istruzione, cominciando da una fase di fetch in cui viene recuperata e caricata una parte dell’istruzione o codice operativo che deve essere eseguita e proseguendo con la sequenza di operazioni da eseguire una volta ottenuta la decodifica dell'istruzione da parte del decodificatore di istruzione (instruction decoder). Terminata l’esecuzione dell’operazione lo stato del sequencer torna alla fase di fetch per l'esecuzione della successiva istruzione secondo il consueto ciclo del processore.

Tutte le fasi del ciclo del processore avvengono attraverso l'invio ai vari componenti di un insieme di impulsi di controllo, in una sequenza temporale ben precisa. Più precisamente, ad ogni colpo di clock le linee di controllo assumono un particolare stato; il susseguirsi dei diversi stati contribuisce all'esecuzione completa di un'istruzione. Per questo motivo si può dire che una singola istruzione in linguaggio macchina viene eseguita attraverso la opportuna composizione di più micro-

operazioni.

La ALU., l'unità logico-aritmetica, è l'organo deputato allo svolgimento delle operazioni

aritmetiche e dei confronti logici. Essa preleva gli operandi tipicamente dai registri generali, così come nei registri generali depone i risultati dei calcoli. Nelle architetture più semplici e generali è composta da blocchi che eseguono tutte le operazioni (Somma, Xor, And, Shift, Test) sugli input di dati ricevuti con un selettore in uscita che decide quale operazione desiderata selezionare

sull'output, anche se tutto ciò comporta inevitabilmente un certo spreco di potenza rispetto ad implementazioni più efficienti. Essa è accoppiata ad un accumulatore che è una sorta di registro in cui viene memorizzato un dato prima di essere elaborato dall'ALU stessa. In seguito ad un calcolo l'ALU ha anche il compito di impostare alcuni dei flags del SR (Status Register) in modo da tenere traccia di determinati eventi (es. riporto di una somma).

(5)

Dispensa di Informatica – I.3

Dispensa I.3 versione 1.0 mail: lamonica@associatesonline.it Pagina 5 La Memoria. Contiene un numero in genere molto elevato di registri nei quali vengono

memorizzati i dati e le istruzioni di un programma (sottoinsieme del set completo di istruzioni in linguaggio macchina del processore) attraverso uno spazio di indirizzamento. Il tempo impiegato per accedere ad un registro di memoria è generalmente molto superiore a quello impiegato per l'accesso ad uno dei registri del processore. È per questo motivo che, per quanto possibile, si tenta di utilizzare i registri interni per effettuare le operazioni, limitando gli accessi in memoria allo stretto necessario. Pur contenendo la memoria un numero molto elevato di registri, in ciascun istante temporale solo uno di questi è abilitato a partecipare ad operazioni di lettura o scrittura:

quello il cui indirizzo è contenuto nel registro MAR. Per sopperire alla lentezza della memoria RAM storicamente è stata inventata anche la memoria cache.

L'Internal Bus. È un canale di comunicazione principale condiviso dai suddetti componenti ed attraverso il quale essi possono dialogare scambiandosi informazioni quali comandi di input, output ecc.. In questo contesto, il dialogo consiste nello scambio di dati binari tra registri secondo una modalità parallela. Ciò significa che un certo numero di bit viene contemporaneamente trasferito attraverso il bus da un registro mittente ad un registro destinatario. Durante

un'operazione di trasferimento, i due registri implicati nella comunicazione si trovano in uno stato di lettura (destinatario) e scrittura (mittente) in modo tale da poter acquisire il dato presente sul bus e da potercelo scrivere, rispettivamente. Tutti gli altri registri sono in uno stato di “riposo” nel quale non possono né leggere i dati che circolano sul bus né influenzare lo stato del bus con i dati che contengono. Il numero di bit contemporaneamente trasferiti indica il parallelismo del bus ed è pari al numero di bit contenuti in un singolo registro. Esso caratterizza anche il parallelismo

interno del processore.

Il Data Bus e il registro MDR. Il Data Bus è un bus che collega la memoria con il registro MDR (Memory Data Register). Esso serve a trasferire dati in entrambi i sensi, sempre secondo una modalità parallela. Tutti i dati e le istruzioni che dalla memoria devono essere elaborati nel processore, transitano inoltre attraverso il registro MDR e solo successivamente da questo

raggiungono gli opportuni registri per l'elaborazione vera e propria. Analogamente, tutti i risultati (output) di un'elaborazione che devono essere immagazzinati in memoria transitano prima per il registro MDR e solo successivamente da esso raggiungono l'esatta posizione (cella) di memoria.

L'Address Bus e il registro MAR. Durante un accesso alla memoria, sia in fase di lettura che in fase di scrittura, il registro MAR (Memory Address Register) contiene l'indirizzo della posizione di memoria che viene acceduta. Questo indirizzo, trasferito all'organo memoria attraverso l'Address Bus, abilita alla comunicazione una sola tra tutte le locazioni di memoria (celle) disponibili

(tipicamente in numero molto elevato). Queste funzioni di indirizzamento sono gestite generalmente da un'unità del processore detta Address Logic.

Il registro PC. (Program Counter). Il valore memorizzato nel registro PC rappresenta per

definizione l'indirizzo della locazione di memoria contenente la successiva istruzione da eseguire.

Esso viene interrogato tipicamente all'inizio di ogni fase di fetch ed immediatamente dopo viene aggiornato alla posizione di memoria “seguente” preparandolo così per il prelievo dell'istruzione

(6)

successiva. Può accadere comunque che l'istruzione prelevata rientri nella categoria delle

istruzioni di salto: in questo caso si procede ad un ulteriore aggiornamento del PC durante la fase di execute dell'istruzione. Da questo deriva che lo scopo di un'istruzione di salto (condizionato) è esclusivamente quello di alterare (eventualmente) il valore del PC. Spesso il registro PC è chiamato anche IP (Instruction Pointer).

Il registro IR.(Instruction Register). Questo registro ha il compito di accogliere dalla memoria (attraverso il MDR), durante una fase di fetch, l'istruzione da eseguire, quella cioè puntata dal PC.

Una volta in questo registro, l'istruzione deve essere interpretata dall'unità di controllo per procedere alla eventuale fase di preparazione degli operandi ed alla fase di esecuzione.

Il registro SR. Lo Status Register è un registro che memorizza una serie di bit indicativi dello stato corrente del processore. Può indicare, ad esempio, se il risultato dell'ultima operazione aritmetica effettuata dall'ALU ha dato risultato nullo, o se ha generato un riporto.

I registri generali. I registri generali non hanno un preciso ruolo come gli altri, e da ciò scaturisce il loro nome. Sono utilizzati per contenere i dati in transito per un'elaborazione: gli addendi di un'addizione che l'ALU sta per effettuare, il risultato di un calcolo che l'ALU ha effettuato, un indirizzo di memoria in cui si trova un dato che dovrà essere acceduto in seguito, ecc. Un numero elevato di tali registri conferisce maggiore flessibilità nella programmazione, ma complica la struttura del processore dal punto di vista architetturale.

(7)

Dispensa di Informatica

Dispensa I.3 versione 1.0

COMPORTAMENTO DEL PROCESSORE IN

Con riferimento al ciclo del processore,

informazioni, nell'ambito dell'architettura esposta, in un caso reale.

Supponiamo che, durante la sua elaborazione, il processore si trovi ad un certo istante a dover eseguire, ad esempio, un'istruzione che abbia lo scopo di spostare il contenuto corrente registro generale R1 nella posizione di memoria avente indirizzo D.

Rappresentiamo simbolicamente una tale ope

Una tale istruzione, per essere eseguita, deve fare par

questione e, come tale, essere opportunamente rappresentabile in linguaggio macchina. Si immagini, dunque, che l'istruzione sia rappresentata i

I passi necessari ad eseguire questa operazione sono:

Dispensa di Informatica – I.3

mail: lamonica@associatesonline.it

OMPORTAMENTO DEL PROCESSORE IN UN CASO REALE

Con riferimento al ciclo del processore, sopra riportato, analizziamo come avviene lo scambio di informazioni, nell'ambito dell'architettura esposta, in un caso reale.

Supponiamo che, durante la sua elaborazione, il processore si trovi ad un certo istante a dover eseguire, ad esempio, un'istruzione che abbia lo scopo di spostare il contenuto corrente registro generale R1 nella posizione di memoria avente indirizzo D.

Rappresentiamo simbolicamente una tale operazione con il seguente comando mov R1,D

Una tale istruzione, per essere eseguita, deve fare parte del bagaglio assembly del processore in questione e, come tale, essere opportunamente rappresentabile in linguaggio macchina. Si immagini, dunque, che l'istruzione sia rappresentata in memoria così come riportato

I passi necessari ad eseguire questa operazione sono:

Pagina 7 , analizziamo come avviene lo scambio di

Supponiamo che, durante la sua elaborazione, il processore si trovi ad un certo istante a dover eseguire, ad esempio, un'istruzione che abbia lo scopo di spostare il contenuto corrente del

razione con il seguente comando:

te del bagaglio assembly del processore in questione e, come tale, essere opportunamente rappresentabile in linguaggio macchina. Si

n memoria così come riportato di seguito:

(8)

1. PC → MAR 2. Inc(PC)

3. Memory Read 4. MDR → IR 5. PC → MAR 6. Inc(PC)

7. Memory Read 8. MDR → MAR 9. R1 → MDR 10. Memory Write

Analizziamone nel dettaglio il significato. Trovandoci all'inizio della fase di fetch, bisogna prelevare l'istruzione dalla memoria: essa, per definizione, è contenuta all'indirizzo puntato dal registro PC. Il passo 1 copia il contenuto del PC nel MAR in modo da preparare la memoria ad un accesso alla giusta posizione. Il passo 2, in maniera del tutto generale, incrementa il PC in modo che esso punti alla posizione di memoria successiva, essendo questa la posizione da leggere nel seguito con la maggiore probabilità. Il passo 3 ordina alla memoria di scrivere sul Data Bus e,

contemporaneamente, al MDR di leggere dal Data Bus. In seguito a questa operazione il MDR conterrà la prima parte dell'istruzione da eseguire. Essa, per essere interpretata, deve comunque essere trasferita nel IR. Questo avviene al passo 4. Una volta che l'istruzione è stata interpretata, l'unità di controllo “capisce” che l'istruzione è stata prelevata solo parzialmente e bisogna

prelevarne un altro frammento. Qui la fase di fetch termina ed inizia la fase di preparazione degli operandi. Nel passo 5, di nuovo il PC viene copiato nel MAR per permettere un nuovo accesso alla memoria; immediatamente dopo, nel passo 6, viene nuovamente incremementato così da farlo puntare alla successiva istruzione, quella che verrà prelevata ed eseguita durante il ciclo

successivo. Nel passo 7 la memoria viene letta e l'indirizzo D viene copiato nel MDR. Qui termina anche la fase di preparazione degli operandi ed inizia la fase di esecuzione vera e propria

dell'istruzione. Dal momento che la scrittura deve avvenire proprio all'indirizzo ora contenuto nel MDR, questo viene copiato nel passo 8 sul MAR. Nel passo 9 il contenuto del registro R1 viene copiato nel MDR e infine da qui, nel passo 10, viene copiato in memoria alla giusta posizione attraverso un'operazione di scrittura. Termina così anche la fase di esecuzione. A questo punto il PC punta alla successiva istruzione da eseguire, ed una nuova fase di fetch può avere inizio.

(9)

Dispensa di Informatica – I.3

Dispensa I.3 versione 1.0 mail: lamonica@associatesonline.it Pagina 9

PROCESSORI RISC – CISC

Storicamente si sono scontrate due progettazione dei microprocessori CISC e RISC.

CISC - Complex Instruction Set Computer

Forte uso di microprogrammazione tramite la realizzazione di un progessore con un numero elevato di operazioni già progettate e dunque dotato di un insieme di istruzioni molto esteso.

• Ogni istruzioni richiede diversi cicli di clock per l’esecuzione

• Istruzioni che lavorano sia sui registri che (soprattutto) in memoria

• Sviluppare i programmi è più semplice (meno istruzioni per programma)

• Eseguire in modo ottimizzato istruzioni molto complesse rende difficile sfruttare tecniche di pipelining.

RISC - Reduced Instruction Set Computer

Questa filosofia di progettazione prevede la realizzazione di processori dotati di un Set di istruzioni limitato a poche semplici opzioni.

• Queste poche istruzioni sono implementate direttamente in hardware

• Ogni istruzioni viene eseguita in un solo ciclo di clock

• Istruzioni che lavorano solo sui registri

• I programmi diventano più complessi (più istruzioni semplici per realizzare

• una funzione più complessa)

• La predicibilità delle poche operazioni implementate permette l’utilizzo di

• pipeline molto lunghe

Attualmente la differenza tra RISC e CISC si sta assottigliando.

(10)

PIPELINING

L’architettura vista fino ad ora prevede che venga eseguita una singola istruzione alla volta, passo dopo passo, fino al suo completamento, dunque le parti del circuito che non vengono coinvolte da una specifica parte del ciclo di esecuzione rimangono inattive.

Come abbiamo già visto in precedenza, per ogni nuova istruzione, infatti il registro chiamato Program Counter (PC) contiene l'indirizzo di memoria della prossima istruzione da eseguire. Per eseguire la "fetch" (caricamento) dell'istruzione, il processore copia tale indirizzo nel registro degli indirizzi e preleva l'istruzione dal bus dati del computer. L'istruzione prelevata viene depositata in un altro registro detto Current Instruction Register (CIR). L'istruzione caricata viene quindi

decodificata ed eseguita. L'esecuzione comporta anche l'invio di segnali di controllo a un certo numero di unità interne del processore, a seconda del significato dell'istruzione da eseguire.

È possibile aumentare la velocità complessiva dell’elaboratore permettendo al microprocessore di eseguire fasi diverse di istruzioni diverse contemporaneamente. Questa tecnica è detta

pipelining.

Si basa sull’idea di non lasciare mai nessuna parte della CPU inutilizzata.Le operazioni successive

(11)

Dispensa di Informatica – I.3

Dispensa I.3 versione 1.0 mail: lamonica@associatesonline.it Pagina 11 necessariamente terminata; ovviamente più la pipeline è “lunga”, ovvero è composta da un

numero di stadi indipendenti maggiore, maggiore è la sua efficacia.

(12)

La presenza di istruzioni “incompatibili” tra loro può portare la pipeline ad entrare in stallo per un certo numero di cicli di clock.

Esistono principalmente due strategie per ridurre la probabilità di stallo nella pipeline:

• Progettare set di istruzioni più “compatibili” (vantaggio per i RISC)

• Ridurre la dipendenza tra operazioni successive all’interno dei programmi

• Rioridinare dinamicamente il codice del programma per massimizzare le prestazioni della pipeline

I processori CISC, con un set istruzioni molto ampio e variegato, rendono più difficoltosa

l’implementazione di pipeline “lunghe” mentre in generale i processori RISC riescono a gestire e mantenere “piene” pipelines composte da alcune decine di stadi con minori difficoltà.

Un sistema “ovvio” per incrementare ulteriormente la capacità di calcolo del microprocessore è quello di introdurre diverse copie di uno stesso componente.

• Più pipeline eseguono parallelamente istruzioni diverse.

• Alcune pipeline possono essere specializzate

(13)

Dispensa di Informatica – I.3

Dispensa I.3 versione 1.0 mail: lamonica@associatesonline.it Pagina 13 Portando questa strategia all’estremo è possibile realizzare calcolatori in cui è presente più di un microprocessore.

• architetture multiprocessore

• architetture multi-core

(14)

Considerando che le architetture composte da un altissimo numero di microprocessori sono spesso troppo costose, per aumentare maggiormente le prestazioni di sistemi di elaborazione, si è infine fatto cooperare più elaboratori attraverso una rete di interconnessione (multicomputer)

Riferimenti

Documenti correlati

• quando il processo in esecuzione cerca di accedere a una pagina alla quale non è assegnato alcun page frame, tale pagina viene copiata dallo swap space a un frame libero;.. •

all’interno della lower level page table situata all’indirizzo appena ottenuto, si accede alla entry specificata dai bit centrali dell’indirizzo logico, che contiene il numero del

Descrivendo i preparativi di Manuele per la guerra contro i Normanni nella prima- vera del 1148, dopo aver dato circostanziata notizia della nomina di Stefano Contoste- fano a

notevolmente le prestazioni servendo prima tutte le richieste che sono vicine alla posizione attuale della testina. • Su questa ipotesi è basato l’algoritmo Shortest Seek Time

Paginazione a più livelli: allocazione non contigua della tabella delle pagine -> si applica ancora la paginazione alla tabella della

–  Allocazione della memoria ai singoli job –  Protezione dello spazio di indirizzamento –  Condivisione dello spazio di indirizzamento –  Gestione dello swap.. • 

Inoltre, quando l’unità centrale richiede l’accesso a una locazione di memoria virtuale non presente in una cella di memoria reale, si rende necessario effettuare

Claudio SARZOTTI, Professore Ordinario in Filosofia del Diritto Università di Torino. Direttore del Carcere di Saluzzo