Sei sulla pagina 1di 4

ARCHITETTURA DEGLI ELABORATORI

L'architettura di Von Neumann è una tipologia di architettura hardware per computer digitali
programmabili. Facciamo riferimento al PC, anche se tutti i calcolatori hanno la stessa struttura.
I blocchi fondamentali dell’elaboratore sono formati da unità di input e di output. L’input è
analogico, viene convertito da unità di input in digitale. L’output è digitale, ma viene convertito in
analogico tramite unità di output. 5 componenti fondamentali: unità di input e output, unità di
elaborazione (microprocessore), memoria e bus.

1) Microprocessore = circuito che fisicamente esegue tutte le istruzioni (corrisponde all’unità di


elaborazione). Contiene miliardi di transistor (dispositivo che consente di realizzare circuiti).
Contiene circuiti per eseguire operazione su numeri interi, reali e operazioni logiche, circuiti per il
coordinamento dell’esecuzione delle istruzioni (per es. il loro sequenziamento e il controllo degli
errori). Contiene anche interfacce per spostare dati da/verso la memoria e da/verso unità di I/O.

Contiene poca memoria per memorizzare dati e istruzioni, lo stretto necessario per eseguire le
operazioni (per motivi di efficienza una parte della memoria è ospitata nel microprocessore).

 CPU = central processing unit; a sua volta è formata da un insieme di due unità:
- l’unità operativa esegue le operazioni elementari;
- l’unità di controllo
 Interfacce
 Memoria locale (cache)

La CPU è veloce e quindi lavora con operandi salvati dentro ai registri (piccole locazioni di memoria
usati per conservare temporaneamente dei dati), così non aspetta la cache e i dati in memoria. Per
es. in una somma servono tre registri, uno per ogni addendo e uno per il risultato. Ogni
trasferimento da processore a memoria e viceversa avviene tra registri e memoria.

L’unità operativa contiene la ALU (Arithmetic Logic Unit) che svolge calcoli su numeri interi. L’unità
FPU (Floating Point Unit) svolge operazioni aritmetiche su numeri reali, floating point. La FPU c’è
sempre, ma potrebbe mancare in dispositivi che svolgono specifiche mansioni (come la
macchinetta del caffè).

I registri comunicano con la memoria e I/O. Registri possono contenere dati e istruzioni (General
purpose, quindi accedere alla memoria a dati e istruzioni). Ci sono anche i registri dei flag,
aggiornati in automatico quando viene eseguita un’operazione. È un registro che contiene un
insieme di bit, e ogni singolo bit mi dice un’informazione differente, quindi accedo a ogni singolo
bit. Vengono usati per implementare alcune condizioni; i più comuni sono:

- Zero = segnala se il risultato dell’operazione è zero o diverso da zero. 0111 + 1011 =


0010. Ho tre registri; al termine di questa somma lo zero flag è Z = 0
- Segno = il flag che indica il segno dell’operazione (qui S = 0)
- Carry = se il risultato dell’operazione fra numeri senza segno eccede i limiti della
rappresentazione in binario puro (C = 1)
- Overflow = indica se il risultato dell'operazione fra numeri con segno eccede i limiti
della rappresentazione in complemento a 2 (O = 0 il primo numero è positivo e il
secondo è negativo)

L’unità di controllo = il cuore dell’elaboratore, in base alle istruzioni contenute nel programma che
esegue ed allo stato di tutte le unità decide l’operazione da eseguire ed emette gli ordini relativi.
Componenti dell’unità di controllo:

PC = program counter: registro che indica sempre l’indirizzo della cella di memoria che contiene la
prossima istruzione da eseguire.

IR = instruction register: memorizza temporaneamente l’operazione corrente da eseguire

Logica di controllo = interpreta il codice macchina in IR per decidere ed emette gli ordini che le
varie unità devono eseguire.

Esecuzione di un’istruzione: fetch, decode ed execute

1. Fetch
 IR  M [PC]
Preleva dalla memoria l’istruzione nella posizione indicata da PC
 PC  PC + 1
Incrementa il valore di PC (al passo successivo conterrà la prossima istruzione da
eseguire)
2. Decode
 Ordini  decode (IR)
3. Execute
 Attiva i blocchi interessati dall’istruzione

La velocità della CPU è data dal clock, che dà un riferimento temporale. L’inverso del periodo di
clock è dato dalla frequenza di clock (s^-1 = Hz), cioè un colpo di clock al secondo. Un ciclo-
macchina è l’intervallo di tempo in cui viene svolta un’operazione elementare ed è un multiplo
intero del periodo di clock. L’esecuzione di un’istruzione richiede un numero intero di cicli
macchina, variabile a seconda del tipo di istruzione. La prestazione complessiva del programma
dipende dal mix di istruzioni. Ci sono limiti fisici con cui la CPU lavora (che è la velocità della luce)

1 miliardo di colpi di clock/s = 1 giga Hz. 1 miliardesimo di secondo = nanosecondo. Ogni


nanosecondo c’è un colpo di clock. 1 milione di colpi di clock/s = 1 mega Hz. 1 milionesimo di
secondo = microsecondo. 1 migliaio di colpi di clock/s = 1 kilo Hz. 1 millesimo di secondo =
millisecondo
Le istruzioni più semplici come le istruzioni aritmetiche vengono eseguite con un colpo di clock, già
le somme tra floating point possono richiedere 15 colpi di clock, per accedere alla memoria 5 colpi
di clock e per I/O 100 colpi di clock.

Il microprocessore contiene i registri e la memoria locale = cache, memoria veloce ma di


dimensioni ridotte. Ma non possono essere inserite grandi quantità di memoria.

2) Memoria

Memorizza dati e istruzioni necessarie all’elaboratore per operare. È necessaria per motivi
intrinseci di memorizzazione (memoria di massa, più grande e più lenta) e per motivi di efficienza
(memoria principale). Quindi la memoria è organizzata in una struttura gerarchica (la memoria più
veloce ma più piccola sono i registri).

Caratteristiche della memoria:

 Indirizzamento: la memoria è organizzata in celle (minima unità accessibile


direttamente) e ogni cella della memoria è associata ad un indirizzo numerico;
 Parallelismo: ogni cella contiene una determinata quantità di informazione, che è
una quantità fissa di bit, identica per tutte le celle (di una certa unità di memoria),
accessibile con un’unica istruzione ed è un multiplo del byte. Tipicamente la
dimensione della cella di memoria coincide con quella dei registri per consistenza e
semplicità.
 Modalità di accesso (casuale, diretto, sequenziale) e tempi di accesso

Gerarchia di memoria: una memoria dovrebbe essere grande, veloce, economica e che mantenga
le informazioni indefinitamente (anche in assenza di alimentazione), non volatili. Ma le memorie
sono volatili e hanno costo alto; quelle non volatili sono molto lente.

È necessaria una gerarchia di memoria: per ottimizzare tempo medio di accesso e costo medio si
organizza la memoria a livelli. Più vicino al processore le memorie più veloci, costose (e anche
volatili, per motivi tecnologici); più lontane dal processore le memorie più lente, economiche e
non volatili.

RAM = random access memory: accedere ad ogni indirizzo di memoria è uguale; è una memoria
volatile. Quella con cui produciamo la cache. SRAM = static RAM: memoria volatile che riesce a
mantenere l’informazione senza essere rinfrescata. DRAM = dinamic RAM, deve essere rinfrescata
continuamente. La cache immagazzina i dati con cui la CPU sta lavorando in quel momento

SSD = solid-state drive: è una memoria basata sul semiconduttore e non è volatile. HDD = hard disk
drive: memoria magnetica.
3) Le interconnessioni (bus)

I bus sono le interconnessioni, la linea punto-punto non è pratica e quindi si usa un’unica linea di
connessione per connettere tutti i componenti, che sono fisicamente agganciati a quella linea. I
vantaggi sono i costi ridotti, l’estendibilità (facile aggiungere nuovi dispositivi) e la
standardizzabilità (regole per la comunicazione da parte di dispositivi diversi).

Svantaggi: lentezza, per l’utilizzo in mutua esclusione del bus e sovraccarico del processore (CPU),
che funge da master sul controllo del bus.

Caratteristiche del bus:

 Trasporto di un solo dato per volta;


 Frequenza: numero di dati trasportati al secondo;
 Ampiezza: numero di bit di cui è costituito un singolo dato (dovrebbe corrispondere al
parallelismo della memoria);
 Se mal dimensionato, il bus potrebbe essere un collo di bottiglia.

Un singolo bus è suddiviso in tre “sotto bus”:

 Bus dati (DBus). La dimensione del DBus indica la dimensione di una cella di memoria;
 Bus degli indirizzi (ABus, address bus). La dimensione dell’address bus determina il
massimo numero di celle di memoria indirizzabili;
 Bus di controllo (Cbus).

Per determinare la massima memoria interna: max mem = 2^|ABus| * |DBus| bit

Per determinare la memoria di ogni singola cella è capacità della memoria RAM / numero di celle
(ABus).

Potrebbero piacerti anche