Architettura del Calcolatore - Lezione in semi-presenza

Lezione in semi-presenza

2. Idee fondamentali per costruire macchine universali

DiapositivaDiapositiva

DiapositivaDiapositiva

Diapositiva

Il problema ora è avere qualche cosa che elabori e poi risolva questi algoritmi.

Ci occorre un esecutore generale di tutti gli algoritmi. L’uomo è un esecutore generale di tutti gli algoritmi?

Sicuramente non è in grado di risolvere ogni algoritmo, ma alcuni li sa risolvere: eseguire una ricetta, fare una somma… quindi può venir considerato un esecutore generale di algoritmi. L’uomo risolve l’algoritmo se gli è possibile e se ne ha voglia.

Ma come fa l’uomo per risolvere questi algoritmi? Ha una strategia? Ad esempio, come facciamo a leggere?

Vediamo una serie di caratteri e li interpretiamo, poi li mettiamo insieme in un’unica parola che è generalmente delimitata da spazi bianchi, e poi leggiamo le righe, le pagine… quella di leggere da sinistra verso destra e di fare una micro pausa finita ogni parola, è una cosa che ci è stata insegnata quando abbiamo imparato a leggere.

Identica procedura che facciamo per leggere, si fa anche per risolvere un algoritmo: leggiamo la prima istruzione, la comprendiamo e poi la risolviamo, poi lo stesso procedimento per la seconda e per la terza, fino ad arrivare alla soluzione.

Esistono due idee fondamentali:

L’algoritmo vitale che è un algoritmo capace di eseguire gli altri algoritmi e fa 4 operazioni in sequenza: localizzazione, lettura, decodifica ed esecuzione.

Da un certo punto di vista, dati e algoritmi sono la stessa cosa perché gli algoritmi possono diventare dati per un altro algoritmo. Nel caso particolare, tutti gli algoritmi che “ mettiamo in campo” sono dei dati per l’algoritmo che esegue gli altri algoritmi. Perciò, dati e algoritmi li possiamo rappresentare allo stesso modo.

Non basta dire che ci sono dei dati iniziali in un algoritmo, in quanto vi sono anche dei dati che variano al procedere. Dati che non saranno presenti nel risultato finale, ma che porteranno a esso. Questi dati sono ad esempio i riporti, si tratta di dati interni all’algoritmo che non sono né i dati iniziali né il dato finale (il risultato).

La possibilità di poter mettere insieme dati e algoritmi, ci fa arrivare a dire che stanno nello stesso spazio, e questo spazio è chiamato memoria. I dati in ingresso si chiamano sempre dati in ingresso, ma il risultato prende il nome di dato (o dati) in uscita. L’algoritmo vitale, ovvero l’algoritmo che deve risolvere tutti gli altri algoritmi, non può trovarsi nella memoria insieme agli altri algoritmi.

Deve essere, piuttosto, patrimonio dell’esecutore, quest’algoritmo è nella CPU. Questa è la macchina di Von Neumann. L’esecutore nella macchina di Von Neumann è detto appunto central processing unit (CPU). Potremmo meglio dire che l’algoritmo privilegiato è il ciclo operativo che fa funzionare la CPU e che le insegna a risolvere gli altri algoritmi contenuti nella memoria.

E’ come se avessimo un cervello diviso in due parti: sinistra e destra. Ma queste due parti prima o poi dovranno comunicare. Si tratta di un approccio molto simile alla visione funzionalistica del cervello.

Alle macchine funzionali (come quella di Von Neumann) si contrappongono le macchine neuronali (formate da tutte unità simili), all’epoca c’era la possibilità di costruire un prototipo di entrambe, ma l’architettura dei calcolatori è basata sulla macchina di Von Neumann. Ma perché si è scelta l’ipotesi funzionalista?

Perché era più facile da controllare, inoltre, nell’altra ipotesi, non si riusciva bene a capire dove mettere l’elemento di controllo.