Sistemi e Reti
DidatticaSistemi e Reti → Il Modello Von Neumann



Il Modello Von Neumann


L’architettura della maggior parte dei calcolatori si basa sul modello sviluppato dal matematico Von Neumann nella prima metà del ventesimo secolo. Il modello prevede le seguenti macro componenti di base:
  • unità di elaborazione: è l’unità che si occupa di eseguire una serie di istruzioni;
  • memoria: che contiene le informazioni (istruzioni e dati);
  • periferiche: che consentono lo scambio di informazioni tra l’unità di elaborazione e l’esterno;
  • bus di sistema: che è il collegamento tra le varie componenti funzionali;



Fig. 1 - Schema del modello Von Neumann

Il modello di Von Neumann (Fig. 1), così progettato, aveva dei limiti legati alla sequenzialità delle operazioni che rendevano la macchina lenta. Nei decenni a venire sono state introdotte delle migliorie a tale modello.
  • La prima è stata quella di adottare ulteriori memorie oltre a quella centrale (memoria di massa, memoria cache).
  • La seconda è stata l’introduzione di processori dedicati che sgravassero il microprocessore di specifici compiti.
  • La terza è stata l’introduzione di più microprocessori in parallelo che eseguissero lo stesso tipo di compiti simultaneamente.
Tali modelli sono anche detti modelli di architetture non Von Neumann.

Modello di Harvard

Il modello di Von Neumann prevede che istruzioni e dati vengano memorizzati nella memoria centrale.
Esiste un modello alternativo detto modello di Harvard che prevede la presenza di due memorie separate: una per le istruzioni ed una per i dati. Questo accorgimento, introduce una maggiore efficienza anche se risulta essere più costoso. Un esempio di applicazione del modello di Harvard sono i microcontrollori PIC (Programmable Interface Controller).

Unità di elaborazione: CPU (Central Processing Unit) o Microprocessore

E’ un blocco funzionale che riceve in ingresso informazioni in forma binaria e dopo averle elaborate mediante un apposito programma (insieme di istruzioni), fornisce il prodotto dell’elaborazione.
Il microprocessore tramite opportune interfacce può essere collegato a una grande varietà di periferiche come stampanti, modem, tastiere, console con cui comunica in base ad opportuni segnali di controllo. Il microprocessore è composto da tre componenti fondamentali, la ALU (Unità aritmetico-logica), la CU (Unità di controllo) e i registri.

Memoria centrale

L’unità di memoria è costituita da celle (locazioni) inidirizzabili attraverso una sequenza binaria. La dimensione della sequenza binaria indica il numero totale di celle indirizzabili (e quindi la capacità della memoria). Ad esempio se l’indirizzo di locazione di una cella della memoria è di 5 bit totali, avremo 32 celle in totale in quanto 25 = 32. L’unità di memoria può essere di due tipologie:
  • ROM (Read Only Memory);
  • RAM (Random Access Memory);
La ROM è un particolare ciruito integrato con dati specifici già impostati in fase di costruzione. Questo vuol dire che è una memoria di sola lettura il cui contenuto non è modificabile. I dati inseriti in essa sono scritti in maniera permanente in fase di cotruzione.
La ROM contiene un insieme di programmi detto firmware composto dal BOOT che permette il caricamento del Sistema Operativo nella memoria RAM all'avvio del Computer e BIOS e Autotest che effettuano la diagnostica rispettivamente delle periferiche e delle componenti hardware del Computer.
La RAM, invece, è una memoria di tipo volatile; i dati contenuti in essa vengono cancellati allo spegnimento del computer. Nella RAM i dati possono essere memorizzati, imossi ed utilizzati durante l’esecuzione di un programma. Più grande è la memoria RAM e più veloce è l’esecuzione di un programma. Le due operazioni che possono essere effettuate sono lettura e scrittura.
In un microprocessore l’informazione (istruzione o dato) giunge come sequenza di N bit detta parola.

AN-1 AN-2 AN-3 ... A2 A1 A0


La più piccola unità è composta da 8 bit (1 byte), l’insieme di due byte forma una parola detta word e l’insieme di 4 byte forma la parola detta double word. Ad esempio,
10010011: parola di 8 bit (1 byte)
11011010 01011001: parola di 16 bit (2 byte) detta word
11101101 00100101 00100101 01001010: parola di 32 bit (4 byte) detta double word

Dobbiamo immaginare la memoria come un grande contenitore suddiviso in scompartimenti chiamati celle di memoria a cui sono associati dei numeri identificativi espressi generalmente in esadecimale.

000h cella 0
001h cella 0
002h cella 0
... ...
3FFh cella 0

Indirizzare una cella di memoria significa puntare alla cella individuata con quello specifico indirizzo(numero identificativo associato) per poter leggerne il dato contenuto oppure scrivervi uno nuovo.
Ogni cella di memoria ha le dimensioni di una parola.
Le parole, in base al loro contenuto informativo, si distinguono in:
  • Parole di indirizzamento (indirizzi)
  • Parole indirizzate (Istruzioni di programmi e dati)

Parole di indirizzamento

Per poter operare il microprocessore deve poter accedere all’unità di memoria che contiene dati ed istruzioni.
Sia N il numero di bit della parola di indirizzamento, il numero totale di celle di memoria sarà pari a K.

K = 2N

Quindi se le parole di indirizzamento hanno una dimensione di N = 10 bit, allora avremo in totale 210 locazioni di memoria pari a 1024. In tal caso gli indirizzi sono compresi tra 0 e 1023 che solitamente sono espressi in base esadecimale:
0 = 00016 e 1023 = 3FF16
Il valore K determina la capacità di indirizzamento della memoria.

Parole indirizzate

Sono le parole costituite da M bit memorizzate a partire da una determinata locazione di memoria.
Il numero M determina il parallelismo del microprocessore cioè il massimo numero di bit che il processore può elaborare contemporaneamente.
Il valore K per la dimensione delle parole di indirizzamento è chiaramente differente dal valore M della dimensione delle parole indirizzate. Questo ci fa capire che la dimensione delle parole che un microprocessore può elaborare e la dimensione delle parole di indirizzamento con cui recupera i dati e le istruzioni dalla memoria possono essere diverse.
Quindi capacità di indirizzamento e parallelismo possono essere differenti.
Ad esempio possiamo avere un microprocessore con parallelismo ad 8 bit e una capacità di indirizzamento di 16 bit e quindi di 216 = 65536 locazioni di memoria. Oggi si è arrivati ad avere una capacità di indirizzamento e un parallelismo pari a 64bit.

Tipi di memorizzazione

Per la memorizzazione della parola in memoria sono utilizzati due formati:
  • Big-endian
  • Little-endian
La differenza sta nell’ordine con cui vengono salvati i byte della parola nella memoria. Nel caso di big-endian (adottato da IBM e Sun) viene salvato (e letto) prima il byte più significativo fino ad arrivare al meno significativo. Mentre nella rappresentazione little-endian (adottata da Intel e Digital), si memorizza (e legge) prima il byte meno significativo fino ad arrivare a quello più significativo.


Fig. 2 - Rappresentazione dei dati in memoria in a) big-endian e b) little-endian


Interfacce e Periferiche

Il microprocessore non deve comunicare solo con le unità di memoria ma anche con altre componenti dette unità periferiche (porte di incresso/uscita) che sono dei circuiti integrati programmabili di notevole complessità. Esistono due categorie di porte che consentono di collegare le periferiche al Computer: porte parallele (P I/O) e porte seriali (S I/O).
Le prime hanno la caratteristica di poter ricevere o inviare gli M bit in modo parallelo attraverso più connettori. Le seconde, invece, hanno un unico connettore attraveso cui viaggia un solo bit per volta. Tra gli ultimi si sono diffuse anche le porte USB (Universal Serial Bus) che sono tipi di porte seriali universali utilizzabili per più scopi.
Queste porte connettono i dispotivi così detti di input/output.
Esempi di dispositive di input sono: tastiera, mouse, scanner, webcam, microfono. Esempi di dispositivi di output sono: monitor, stampante, altoparlanti, proiettore. Vi sono anche dispositivi sia di input che di output come: touchscreen e LIM.

BUS

I bus sono dei connettori (fili di rame) che connettono le varie componenti dello schema di Von Neumann.
Essi si divisono in tre tipologie:
  • Bus dei dati
  • Bus degli indirizzi
  • Bus di controllo
che a loro volta possono essere interni al processore oppure esterni.

Regitri

I registri sono piccole unità di memoria direttamente connesse alla CPU utili a facilitare le operazioni di calcolo del processore e la programmazione. Fungono quindi da supporto per le operazioni logico-aritmetiche.

Scheda madre

Tutte le componenti poggiano o sono collegate ad una scheda detta motherboard o scheda madre: una metropoli in miniature su cui sono posizionati processore, slot delle RAM, ROM, schede di interfacciamento con dispositive di I/O e bus attraverso cui viaggiano le informazioni. Analizzeremo, le componenti appena introddotte nel dettaglio, nelle successive unità didattiche.

Cosa abbiamo imparato da questa lezione

Conoscenze
  • Cos'è e cosa rappresenta il Modello Von Neumann
  • Quali sono le componenti del Modello Von Neumann
  • Cosa sono le architetture non Von Neumann e differenze con il Modello Von Neumann
  • Cos'è il Modello di Harvard e differenze con il Modello Von Neumann
  • Cos'è, come è composta e cosa fa una CPU
  • Cos'è una memoria e tipologie di memoria
  • Qual è la differenza tra parole di indirazzamento e parole indirizzate
  • Cosa si intende per capacità di memorizzazione e di parallelismo
  • Qual è la differenza tra tipi di memorizzazione Big-endian e Little-Endian
  • Cosa sono le Periferiche di I/O
  • Cosa sono i BUS e quali le tipologie
  • Cosa sono i Registri
  • Cos'è una Scheda Madre
Abilità
  • Siamo in grado di distinguere le varie componenti hardware di un Computer
  • Siamo in grado, per ogni componente, di definire i meccanismi generici di funzionamento
  • Siamo capaci di definire la capacità di memorizzazione e il grado di parallelismo di un Computer
Competenze
  • Siamo in grado di assemblare le componenti base di un Computer secondo le opportune esigenze
  • Siamo in grado di riconoscere ed individuare i limiti prestazionali di un Computer