Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

12
voti

Il modello di Von Neumann

Qualche tempo fa chiesi sul Forum lumi circa questo argomento. Dopo un po' di mesi eccomi qui cercando di rimettere ordine alle idee e di redigere un piccolo articolo che possa essere utile a chiunque sia interessato a questo tipo di argomento.

Indice

Introduzione

Consideriamo il seguente schema :


Questo è uno schema rappresentativo delle macchine tradizionali e prende il nome da John von Neumann, che lo propose nel 1945.

John Von Neumann

John Von Neumann


In sintesi i compiti dei quattro "componenti" dello schema che abbiamo visto sopra sono :


Queste unità fondamentali rappresentano l'hardware del computer, cioè i componenti elettronici, elettrici e meccanici che formano un sistema elaboratore.
Von Neumann aveva messo a punto un prototipo basato sul concetto di programma memorizzato. Esso funzionava quindi in questo modo : la macchina immagazzina nella sua memoria i dati sui quali poter lavorare e le istruzioni per il suo funzionamento.
Tra le caratteristiche di questa tipologia di sistema si riscontrano le seguenti :

  • semplice schema di funzionamento nelle sue linee generali;
  • esecuzione veloce ed affidabile degli algoritmi;
  • capacità di memoria adeguata;
  • costo favorevole.


La velocità di esecuzione, allo stato attuale, si attesta sui milioni di istruzioni svolte dalla CPU al secondo, adoperando quindi come unità di misura della capacità di elaborazione dei computer il MIPS, cioè milioni di istruzioni per secondo.
Parlando dell'affidabilità, un computer non commette errori e gli errori che sono causati da guasti o malfunzionamenti dell'hardware sono riscontrabili subito ed alcune volte anche in maniera automatica.
Quando si parla di memorizzazione delle informazioni ci si riferisce al compito della memoria di conservare le informazioni; per la CPU e può essere temporanea, permanente o definitiva.
La capacità di memoria è invece il numero di informazioni che possono essere gestite, ed è un numero che varia in funzione del tipo di memoria utilizzato, alla sua architettura e al tipo di informazione. La capacità è la misura del numero di informazioni immagazzinabili nella memoria ed attualmente si misura in numero di byte.
Per quanto riguarda il costo dei computer è ovvio considerare che esso è basso se paragonato ai tempi di lavoro che sono necessari all'uomo per compiere gli stessi compiti.
L'architettura di un computer è chiaramente più complessa, ma in linea generale il suo funzionamento può essere ricondotto allo schema che abbiamo presentato.
I dispositivi di input ed output interfacciano la CPU con l'ambiente esterno e provvedono a tutte le trasformazioni necessarie a rendere comprensibili le informazioni sia alla CPU che agli utenti esterni al computer.

Le memorie

La memoria può essere considerata come un insieme di contenitori fisici, i registri, che sono caratterizzati da dimensioni finite e fissate a cui si può fare riferimento tramite la posizione occupata nell'insieme, detta indirizzo di memoria.
La dimensione del registro si misura in numero di bit; il bit è un dispositivo in grado di assumere due sole condizioni:

  • nelle memorie di tipo elettronico sono circuiti detti flip-flop che mostrano un valore di tensione o uguale a 5 V o 0 V;
  • nelle memorie di tipo magnetico è una sorta di calamita polarizzata o positivamente o negativamente;
  • nelle memorie di tipo ottico è una superficie con o senza buco in modo tale da riflettere diversamente il raggio laser da cui è colpita.


Ad ogni modo il dispositivo di lettura deve essere in grado di associare allo stato del bit il valore 1 o il valore 0.
Memorie con registri di 8 bit sono dette a byte, con più di 8 bit sono dette a voce.
Su di un registro sono consentite operazioni di lettura e scrittura.
La lettura consente di prelevare l'informazione contenuta nel registro senza distruggerla, la scrittura permette di inserire un'informazione nel registro eliminando quella precedente.


La memoria quindi compie due fondamentali operazioni :

  • conservare il dato, depositandolo in un registro in caso di scrittura : è detta store;
  • fornire il dato, depositato in un registro in caso di lettura : è detta load.

Quello che segue è uno schema di massima che descrive il funzionamento per le operazioni load e store :


In pratica la CPU indica prima l'indirizzo del registro che occorre per l'operazione, la memoria decodifica questo indirizzo ed abilita solo il registro che corrisponde ad esso, in modo tale che:

  • per uno store copi il dato del buffer nel registro;
  • per un load copi il dato del registro nel buffer.


Il buffer è un'area di transito dei dati dalla CPU alla memoria e viceversa.


I tempi di attuazione di load e store fanno riferimento alle tecnologie impiegate per costruire le memorie e alle modalità di accesso.
Le prestazioni di un componente di memoria sono misurate in termini di tempi di accesso e load e store possono avere tempi di accesso diversi.
Nel caso di load il tempo di accesso misura il tempo che intercorre tra la selezione del registro di memoria e la disponibilità del suo contenuto nel registro di buffer.
Nel caso di store il tempo di accesso misura il tempo che occorre a selezionare il registro e a depositare il contenuto del registro di buffer al suo interno.
Le memorie devono avere tempi di accesso che siano adeguati alle capacità della CPU, cioè non devono addurre ritardi quando essa trasferisce i dati.


La selezione di un registro può essere :

  • causale, quando il tempo di accesso non dipende dalla posizione: si parla di memorie RAM (Random Access Memory);
  • sequenziale, quando il tempo di accesso dipende dalla posizione come avviene nei nastri magnetici.


Vi sono poi memorie che sono realizzate in modo tale da rendere possibile una sola scrittura di informazioni e si parla, in tal caso, di memorie ROM, che sta per Read Only Memory. L'uso di queste memorie si rende necessario qualora si voglia che determinati dati non vengano mai alterati o persi.


Più in generale le memorie vengono distinte in base alla capacità di conservare le informazioni, anche quando i sistemi che le contengono non sono alimentati. Si parla di :

  • memorie volatili, quando perdono le informazioni che sono registrate in esse quando il sistema viene spento (le memorie elettroniche sono volatili);
  • memorie permanenti, per tutti gli altri tipi di memorie (sono permanenti le memorie di tipo magnetico, ottico e tutti i tipi di ROM).


Lo schema iniziale di Von Neumann è stato modificato nel tempo affiancando alla memoria centrale delle unità di memorie ausiliarie caratterizzate da una elevata capacità, dette memorie di massa :


Le differenze fondamentali tra memoria centrale e memoria di massa sono :

  • le informazioni contenute nella memoria centrale possono essere direttamente prelevate dalla CPU, quelle contenute nella memoria di massa devono essere trasferite prima nella memoria centrale e dopo possono essere elaborate;
  • le informazioni prodotte dalla CPU, al contrario, devono essere depositate in memoria centrale per poi essere conservate nelle memorie di massa;
  • la memoria centrale è maggiormente veloce nella gestione dei dati rispetto alla memoria di massa.


Le memorie di massa hanno tempi di accesso maggiori per via delle tecnologie impiegate per realizzarle, che sono di natura magnetica e i maggiori tempi di accesso sono dovuti proprio alle diverse attivazioni dei componenti elettromeccanici che sono necessari a portare i dispositivi di lettura e scrittura nelle posizioni selezionate. Per ovviare alla differenza di velocità si ricorre ad aree di accumulo dei dati in transito verso tutti i dispositivi esterni, che vengono dette, come già preannunciato, buffer.
Il buffer di input accumula i dati in memoria ricevendoli da un dispositivo lenti prima che la CPU pensi ad elaborarli. La CPU poi accumula tutti i dati prodotti in un buffer di uscita prima di abilitarne il trasferimento. Grazie ai buffer si possono separare i compiti tra i vari componenti del modello di Von Neumann in modo tale da far cooperare dispositivi che presentano velocità di trattamento dei dati diverse tra loro.


Di solito le memorie di massa sono di tipo magnetico, come i nastri, i dischi e i tamburi oppure ottico (CD, DVD) al fine di mantenere permanentemente le informazioni.

nastro magnetico

nastro magnetico

CD

CD

La CPU

Nella CPU sono contenuti i dispositivi elettronici che permettono di acquisire, interpretare ed eseguire il programma contenuto nella memoria centrale consentendo la trasformazione dei dati.
E' formato da tre parti fondamentali :

  • CU, Unità di Controllo;
  • ALU, Unità Logico Aritmetica;
  • un insieme di registri "interni" per distinguerli da quelli della memoria centrale.


La CU interpreta le singole istruzioni e attiva i meccanismi necessari al loro espletamento. Essa preleva ogni istruzione dalla memoria centrale, la decodifica e preleva i dati dalla memoria se servono all'istruzione ed infine esegue l'istruzione. Dopo, la CU procede al prelievo dalla memoria della successiva istruzione secondo un ordine rigidamente sequenziale, cioè solo dopo che la precedente istruzione è stata portata a termine.


Affinché il sistema intero possa essere avviato la CU deve essere informata dell'indirizzo del registro di memoria che contiene la prima istruzione da eseguire. A partire da questa operazione iniziale, detta di boot, la CU esegue in maniera ininterrotta l'algoritmo detto ciclo del processore fino allo spegnimento del sistema.
Le tre fasi del ciclo sono dette :

  • fetch;
  • operand assembly;
  • execute.


L'ALU esegue operazioni aritmetiche, di confronto o bitwise sui dati della memoria centrale o dei registri interni. Appositi bit segnalano l'esito dei suoi calcoli in un registro detto Condition Code. L'ALU può essere molto complessa a seconda dei processori. Negli attuali sistemi l'ALU viene affiancata da processori dedicati alle operazioni sui numeri in virgola mobile detti processori matematici.


Il seguente schema ricalca il ciclo del processore :


La CU durante le sue elaborazioni può depositare informazioni nei suoi registri interni in quanto si possono individuare più facilmente ed hanno dei tempi di accesso minori rispetto a quelli dei registri della memoria centrale. Il numero e il tipo di questi registri varia a seconda dell'architettura della CPU.
Quelli che sono presenti in molte CPU sono :

  • IR, Istruction Register : contiene l'istruzione prelevata dalla memoria e che l'unità di controllo sta eseguendo;
  • PI, Prossima Istruzione : ricorda alla CU la posizione in memoria della successiva istruzione;
  • ACC, Accumulatore : funge da deposito di dati da parte dell'ALu;
  • CC, Condition Code : indica le condizioni che si verificano durante l'elaborazione, come risultato nullo, negativo ed overflow.

I bus

I bus, in numero di tre, sono dei canali grazie ai quali la CPU comunica con la memoria e tutti i dispositivi di input ed output.
Essi collegano due unità alla volta abilitandone una alla trasmissione ed una alla ricezione : il trasferimento delle informazioni avviene sotto il controllo della CPU.
In sostanza il bus è un canale di comunicazione che viene condiviso da più utilizzatori. E' costituito da uno o più fili su cui possono transitare uno o più bit contemporaneamente.
Si classificano, in base alle informazioni trasportate, in :

  • bus dati (data bus);
  • bus indirizzi (address bus);
  • bus comandi o di controllo (command o control bus).


Il control bus serve alla CU per indicare ai dispositivi quello che devono fare. I segnali tipici del control bus sono read e write, grazie ai quali la CU indica ai dispositivi se devono leggere un dato sul data bus o se devono scriverlo su di esso.
Il data bus consente il flusso dei dati dalla CPU al registro di memoria selezionato per operazioni di store o load.
L'address bus serve alla CU perm comunicare l'indirizzo del dispositivo interessato da una operazione di lettura o scrittura.
Tutti i componenti devono essere dotati della capacità di riconoscere sull'address bus il proprio indirizzo. In pratica la CU, tramite l'address bus, seleziona il dispositivo a cui sono rivolti i comandi ed i dati.
I bus realizzano lo scambio di informazioni tra tutti i componenti in base alle regole che seguono :

  • la CPU è l'unica che fornisce l'indirizzo all'address bus;
  • memorie e dispositivi di input ed output devono ascoltare l'address bus per attivarsi quando su di esso compare il proprio indirizzo identificativo nel caso della memoria l'attivazione avviene quando è riconosciuto l'indirizzo che corrisponde ad uno dei registri di cui essa è composta;
  • il dispositivo attivo deve interpretare i segnali del control bus per eseguire i comandi della CU;
  • le memorie prelevano dati dal data bus o immettono dei dati al suo interno in funzione del comando che viene dato dalla CU;
  • i dispositivi di input possono solo immettere dati sul data bus, quelli di output possono solo prelevare dati dal data bus.


Un bus formato da un solo filo è detto bus seriale e su di esso i bit transitano l'uno dietro l'altro.
Un bus formato da n fili è detto bus parallelo perché su di esso transitano n bit alla volta.
L'address ed il data bus sono paralleli e le loro dimensioni sono caratterizzanti dei sistemi di calcolo. Il numero di bit dell'address bus indica la capacità di indirizzamento della CPU, cioè la capacità di gestire la dimensione della memoria centrale ed il numero di dispositivi di input ed output.
La dimensione del data bus condiziona la velocità di scambio delle informazioni tra i vari dispositivi.

Il clock

La CU della CPU coordina i vari componenti del modello di Von Neumann in base a sequenze prestabilite che sono corrispondenti alle sue diverse capacità. A ciascuna delle operazioni che la CU riesce a svolgere corrispondono delle sequenze ben prefissate di attivazione dei vari dispositivi.
Vi è però presente un orologio interno detto clock che scandisce i ritmi di lavoro e soprattutto sincronizza tra di loro le attività dei vari dispositivi.
Il clock è quindi un segnale periodico caratterizzato da periodo fisso, un'onda quadra caratterizzata da un periodo T, detto ciclo, e da una frequenza f = 1 / T, misurata in Hertz (Hz).
Negli attuali sistemi la frequenza dei clock può andare dai MHz ai GHz.
il clock è un segnale che raggiunge tutti i dispositivi in modo tale che possa essere fornita la cadenza temporale per eseguire le operazioni elementari.
La frequenza del clock influenza la velocità di elaborazione di una CPU : tanto più accelerato è il battito del clock, tanto più grande è la velocità di esecuzione.
Inoltre, alla frequenza del clock è legato anche il numero di operazioni elementari che sono eseguite nell'unità di tempo dalla CU.
le operazioni di load e di store avvengono sotto il controllo della CU.
In caso di load la CU procede come segue :

  • con il primo battito di clock pone l'indirizzo del registro di memoria del quale vuole leggere il contenuto sull'address bus;
  • con il secondo battito segnala alla memoria che si tratta di operazione di read;
  • con il terzo battito prende dal data bus il dato.


In caso di store :

  • con il primo battito pone l'indirizzo del registro di memoria del quale vuole leggere il contenuto sull'address box;
  • con il secondo battito deposita il dato sul data bus;
  • con il terzo battito segnala alla memoria che si tratta di una operazione di write e quindi che il dato è pronto per essere depositato nel registro selezionato.


In questo esempio si è ipotizzato che la memoria sia capace di gestire sia l'inserimento che il prelievo del dato sul e dal data bus in un solo ciclo di clock.
In realtà, però, le memorie possono essere più lente e possono subentrare dei ritardi che fanno sì che la stessa operazione impieghi un numero maggiore di clock per essere completata.
La memoria centrale è realizzata, infatti, con moduli che hanno prestazioni inferiori rispetto alla tecnologia adoperata per costruire le CPU.

Bibliografia

Quanto esposto è tratta da :
Alla scoperta dei fondamenti dell'informatica. Un viaggio nel mondo dei BIT - Chianese, Moscato, Picariello.

14

Commenti e note

Inserisci un commento

di ,

che nostalgia!

Rispondi

di ,

Von Neumann è il padre dei sistemi!!! Ricordo al mio terzo anno di ITIS (ora ITST) quando il prof. di sistemi ci scoppiava con Von Neumann...che ricordi...

Rispondi

di ,

Grazie ancora a tutti, grazie Lele :).

Rispondi

di ,

Il poliedrico asdf colpisce ancora :D Bravo e continua così ;)

Rispondi

di ,

Von Neumann! Molto genio, ma anche fuori di testa.

Rispondi

di ,

Per chi sa l'inglese consiglio di leggere "Turing's Cathedral" di George Dyson. E' la storia di come Von Neumann riusci ad implementare la "macchina di Turing" a Princeton con la costruzione della "IAS Machine". http://www.randomhouse.com/book/44425/turings-cathedral-by-george-dyson

Rispondi

di ,

Grazie anche a te gohan :) .

Rispondi

di ,

Bravo! ;)

Rispondi

di ,

Cavoli Guerra :) !. Grazie mille per avermi segnalato l'errore. Correggo immediatamente. Grazie ancora :) .

Rispondi

di ,

Mi raccomando: redigere non "redarre", redigere. :)

Rispondi

di ,

Grazie mille DADO91 :) .

Rispondi

di ,

Da ricordare che il modello di Von Neumann, è una concretizzazione delle macchine RAM (Random Access Machine), che proprio per mano di Von Neumann furono descritte come conseguenza dell'ipotetica macchina di (Alan) Turing (altro grande fondatore dell'informatica). Quest'ultima formalizzata da Turing per formalizzare la sua teoria sul problema dell'arresto e della sua indecidibilità, in parola povere, non è possibile capire a priori se un programma termini. Comunque ottimo lavoro asdf!

Rispondi

di ,

Grazie a te Carlo :) .

Rispondi

di ,

John von Neumann, quanti ricordi ... Grazie asdf!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.