Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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:
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.
Logica di controllo = interpreta il codice macchina in IR per decidere ed emette gli ordini che le
varie unità devono eseguire.
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)
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).
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.
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).