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
CPU
L’unità di elaborazione centrale, (In inglese Central Processing Unit, da qui la sigla)
o più comunemente detto processore, è il “cervello” della macchina. Il suo compito
è quello di coordinare altri elementi hardware di elaborazione dati e,
contemporaneamente, eseguire le istruzioni presenti nella memoria centrale
restituendo il risultato.
La CPU è suddivisa in un’unità aritmetico logica (ALU), un’unità di controllo (CU), e
dei registri, spazi di memoria limitati con accesso rapido. La CU analizza le istruzioni
in memoria e genera gli eventi di sistema necessari per realizzarle. L’ALU poi
compie le richieste aritmetiche e logiche prodotte dall’unità di controllo.
I registri invece svolgono ben quattro operazioni essenziali:
- (A) Accumulazione: per memorizzare i dati di un’elaborazione;
- (R) Riferimento alla RAM: per accedere a locazioni di memoria di interesse;
- (PC) Riferimento alle istruzioni: per contenere gli indirizzi delle istruzioni;
- (IR) Caricamento delle istruzioni: atti a contenere le istruzioni vere e
proprie.
RAM
La RAM (Random Access Memory) è una memoria volatile ad accesso casuale, ossia
un tipo di memoria che è molto veloce rispetto a memorie di archiviazione come
Hard Disk o memorie USB, ma che
ha lo svantaggio di perdere tutte le
informazioni quando non viene più
alimentata.
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
12 Il suo compito è quello di ampliare
la capacità di memorizzazione
volatile del processore (anche se
con una velocità minore rispetto ai
registri). Per poter accedere a
specifici indirizzi che contengono le
informazioni richieste dal
processore, entra in gioco il Memory
(MAR),
Address Register che attiva
la locazione richiesta. Infine le
informazioni vengono trasferite
attraverso un buffer di memoria
(MBR).
BUS (Binary Unit System)
Il BUS, o Binary Unit Sistem, è un canale di comunicazione (di solito è un circuito
stampato, ma può essere anche un normalissimo cavo) che permette la
comunicazioni tra i componenti hardware e le varie periferiche I/O. Si distinguono
tre tipologie di BUS:
- BUS processore-memoria
Sono progettati in maniera tale da massimizzare la velocità di
trasferimento dati. Hanno una lunghezza molto ridotta. In particolare le
linee di indirizzo riportano un feedback sul tipo di informazione che viaggia
sulle linee dati, le quali trasmettono le informazioni, mentre attraverso le
linee di indirizzo la CPU indirizza le sue richieste verso la RAM oppure
delle periferiche. Si divide ancora in:
BUS collettore: collega i registri di CPU alle linee di ingresso dell’ ALU;
BUS indirizzi: Indirizza le unità periferiche e le locazioni di memoria;
BUS di controllo: Seleziona le operazioni;
BUS distributore: Instrada i dati dell’elaborazione;
BUS dati: Trasferisce le operazioni tra la CPU e la RAM.
- I/O BUS
Caratterizzati da una lunghezza maggiore e anche da una velocità ridotta,
si connettono al BUS processore – memoria o al backplane BUS
- Backplane BUS
Sono BUS generici di sistema, usati spesso per connettere varie
periferiche, memorie, processori, e in generale tutte le componenti interne
dell’elaboratore che non siano già interfacciate da altre tipologie di BUS.
I BUS possono essere distinti poi tra BUS Sincroni e BUS asincroni:
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
13
Prestazioni
migliori prestazioni significano un maggior numero di compiti svolti nell’unità di
tempo. Se il calcolatore esegue più programmi contemporaneamente, possiamo
sapere il tempo necessario al singolo processo tramite il tempo di CPU (cicli di clock
* tempo di clock). Poniamo il caso che un calcolatore qualunque abbia una CPU con
una frequenza di clock pari a 200 MHz, capace di eseguire una certa operazione in
un tempo pari a 8 secondi. Il numero di cicli di clock necessari per portare a termine
6
l’operazione è di cicli. Per poter velocizzare il processo, è possibile
8∗200∗10
aumentare la frequenza di clock del processore. Questa tecnica viene chiamata
overclock.
Per valutare le prestazioni di un’architettura si prendono in considerazione quattro
parametri:
Tempo di attività
1. della CPU per eseguire varie istruzioni di un programma;
Throughput di sistema,
2. quantità di dati trasmessi in una unità di tempo
stabilita;
Tempo di risposta,
3. Il tempo che il sistema impiega dalla richiesta di
un’esecuzione a dare una prima risposta;
Turnaround,
4. tempo che intercorre tra l’inizio di un processo ed il suo termine.
Fetch e Execute
L’elaborazione di dati può essere sintetizzata come un ciclo di istruzioni presenti
nella memoria principale che vengono prelevate dalla CPU, che provvederà ad
eseguirle riportando il risultato finale dell’elaborazione in memoria principale.
Queste due fasi prendono il nome di FETCH e EXECUTE.
Per prima cosa, il sistema operativo avvia l’eseguibile, il quale inserisce all’interno
del Program Counter l’indirizzo della prima cella di memoria che contiene le
istruzioni necessarie a continuare il ciclo. Successivamente la CPU carica le
istruzioni dalla memoria principale nella MBR nel registro istruzione del processore,
da dove poi esse potranno essere eseguite.
FETCH
CPU RAM
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
14 EXECUTE
ARCHITETTURE MIPS
Un’architettura MIPS è un particolare tipo di architettura sviluppata e diffusa dalla
embedded
MIPS Technologies Inc. che trova posto nei sistemi di tipo (sistemi non
riprogrammabili per scopi diversi da quelli originali). Essa utilizza un particolare
metodo per incrementare le prestazioni del sistema detto Pipelining MIPS, una
tecnica capace di incrementare il throughput di sistema parallelizzando alcune
operazioni. In aggiunta, Gli 8 registri della CPU dell’architettura di Von Neumann
diventano 32 (ciascuno dei quali ha una capacità di 4 byte), mentre lo spazio di
30
memoria RAM allocabile aumenta a locazioni.
2
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
15
Ha un suo personale set di istruzioni che si dividono per il tipo di formato:
Formato R, sono istruzioni aritmetico logiche che contengono solo riferimenti
immediati agli operandi o ai registri di CPU, quindi la loro esecuzione non
comporta accessi alla RAM;
Formato I, (salto condizionato) operazioni che permettono l’accesso alla RAM;
Formato J, (salto incondizionato) sono operazioni di riscrittura del Program
Counter.
Per ogni istruzione poi, vi sono ben 5 fasi:
1) Ciclo fetch (prelievo dell’istruzione dalla memoria principale);
2) Decodifica dell’istruzione, lettura dai registri sorgente e calcolo dell’indirizzo
di salto;
3) Calcolo del risultato;
4) Scrittura del risultato nel registro di destinazione;
5) Scrittura del risultato in memoria.
Per quanto riguarda l’accesso e la scrittura nella RAM, non possono essere trascritti
singoli bit di memoria, ma è consentito il solo caricamento di una stringa che sia
formata complessivamente di 32 bit.
Pipelining MIPS
Il funzionamento di un’architettura MIPS con pipelining può essere paragonata a
quella di una catena di montaggio: la CPU ad ogni stadio provvede a svolgere in
maniera sequenziale un solo compito specifico per l'elaborazione di una certa
istruzione, in questo modo ad ogni ciclo di clock dall'ultimo stadio verrà completata
un'istruzione. Nello stesso istante ogni unità sta già elaborando in parallelo i diversi
stadi di successive altre istruzioni. In sostanza, quindi, si guadagna una maggior
velocità di esecuzione a prezzo di una maggior complessità circuitale del
processore, che non deve essere più composto da una sola unità, ma da cinque
unità che devono collaborare tra loro.
Il pipeline non è però esente da alcune problematiche. Ci si può imbattere in due
problemi principalmente:
Il primo problema deriva dal lavoro parallelo delle unità.
Supponiamo che la CPU debba eseguire il seguente frammento di codice:
1. C = A + B
2. D = C - 1
La prima istruzione deve prelevare i numeri contenuti nelle variabili A e B, sommarli
e porli nella variabile C. La seconda istruzione deve prelevare il valore contenuto
nella variabile C, sottrarlo di uno e salvare il risultato in D. Ma la seconda istruzione
non potrà essere elaborata fino a quando il dato della prima operazione non sarà
disponibile in memoria e quindi la seconda operazione dovrà bloccarsi per attendere
il completamento della prima. Questo problema può essere attenuato facendo in
modo che i dati elaborati dalla prima istruzione siano resi disponibili alla seconda
istruzione prima del solo salvataggio definitivo in memoria. Questo si ottiene
inserendo dei registri temporanei nell'unità di esecuzione dove salvare dati che
serviranno all'istruzione successiva. Un problema simile è quando due istruzioni
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
16
utilizzano gli stessi registri per operare. In questo caso si utilizza la rinominazione
dei registri, una tecnica che elimina la maggior parte degli stalli.
Il secondo problema consiste nei salti condizionati.
I programmi contengono delle istruzioni condizionate che, nel caso in cui una
specifica condizione logica è verificata, provvedono a interrompere il flusso
sequenziale del programma e a mandare in esecuzione un altro pezzo di
programma indicato dall'istruzione di salto. Ogni volta che questo accade, la CPU si
trova a dover eseguire un nuovo flusso di operazioni, costringendola a riscrivere il
contenuto del Program Counter. Ovviamente queste operazioni fanno sprecare cicli
di clock. Per ridurre questo problema le CPU adottano un’apposita unità hardware:
l’unità di predizione delle diramazioni (in inglese Branch Prediction Unit) che crea
delle previsioni sul flusso del programma andando a ridurre notevolmente i cicli
persi per i salti. CIRCUITI
Nome cognome, Architettura dei Calcolatori Elettronici, Anno Accademico 2017 / 2018
17
Per vedere il calcolatore in modo diverso, questo si può definire come un insieme di
porte logiche connesse tra loro. Tutte le porte logiche hanno un solo elemento in
output che, nel caso in cui venga collegata in serie o in parallelo ad un’altra porta,
fungerà da input a quest’ultima e