Si deve a von Neumann la prima descrizione formale (a blocchi) delle componenti essenziali di un
calcolatore come oggi lo intendiamo.
Il punto fondamentale che discrimina un computer da una macchina per fare conti è il fatto che un
computer è programmabile, ossia la sua funzionalità dipende da un codice che può essere immesso dall’esterno e non dalla particolare configurazione o implementazione delle sue componenti meccaniche od elettroniche. Dal punto di vista storico, questo modello ha il
pregio di mettere in posizione centrale l’unità capace di eseguire un programma.
Più che il macchinario fisico capace di eseguire i calcoli, è fondamentale quindi il programma che lo fa funzionare.
Dal punto di vista logico e formale questo modello è certamente funzionale, dal punto di vista
pratico non è la miglior caratterizzazione possibile.I dati, per raggiungere le diverse componenti devono percorrere strade diverse, e ad ognuna di esse deve corrispondere un trasporto fisico appropriato.Al crescere del numero di componenti crescerà il numero di possibili collegamenti, in
maniera esponenziale.
Con il termine modello di Von Neumann (o macchina di Von Neumann) si indica uno
schema a blocchi che descrive il comportamento di un “esecutore sequenziale a
programma memorizzato”).
Questo modello, ideato dal ricercatore americano di origine tedesca nel corso della
seconda guerra mondiale per la realizzazione dei primi elaboratori, è adatto anche per
una descrizione elementare del principio di funzionamento delle moderne CPU.
In realtà le CPU moderne, pur rispettando in linea di massima questo principio,
aggiungono molte nuove funzionalità che derogano soprattutto al concetto di
sequenzialità introducendo concetti di parallelismo (cache, pipeline, prefetch, branch
prediction ...).
Trascurando questi aspetti, che peraltro sono invisibili per il softwarista applicativo, il
modello di Von Neumann resta ancora valido per capire come funziona una CPU.
Analizziamo con cura la definizione: “esecutore sequenziale a programma memorizzato”
Il termine
esecutore sta ad indicare che la CPU compie delle azioni nei confronti degli
altri dispositivi, prendendo o modificando il contenuto della memoria, prendendo
informazioni dagli ingressi o fornendo informazioni in uscita.
Il termine
sequenziale significa che le azioni sono svolte dalla CPU una alla volta. Le
azioni che realizzano una funzione nel suo complesso quindi si succedono una dopo l’altra
anche se l’utente ha una percezione di immediatezza e contemporaneità. Ciò è dovuto al
fatto che la CPU esegue la sequenza delle azioni con grande rapidità. La misura della
rapidità con cui sono eseguite le azioni è data dalla frequenza di clock che indica il numero
di azioni al secondo eseguite da una CPU.
Il termine
programma indica che la CPU esegue le azioni che sono indicate in una lista
di istruzioni codificate (algoritmo). Questo concetto è legato al concetto di esecutore: un
esecutore non sa cosa deve fare a priori ma esegue una lista di istruzioni.
Il termine
memorizzato indica che il programma deve essere
memorizzato in memoria centrale sotto forma di numeri binari affinché la CPU possa
leggere le istruzioni ed eseguirle. In memoria centrale oltre alle istruzioni codificate dei
programmi in corso di esecuzione ci sono anche i dati associati a tali programmi.
Fonti: Me.
Non so perché il testo me lo formatta andando a capo in modo strano!