automa a programma
automa a programma automa universale che opera secondo un programma di calcolo, cioè secondo una successione di istruzioni espresse in un linguaggio di programmazione. Il suo operare, a differenza di quello di una macchina di → Turing, non avviene perciò sulla base di una matrice che ne indica tutte le transizioni (o di un grafo di transizione), ma su una base di istruzioni che indicano all’automa quali transizioni selezionare tra quelle possibili e in quale ordine. Il suo disegno logico è costituito da più automi elementari e da un controllo che, a seconda dell’istruzione da eseguire, attiva uno di tali automi, fino a giungere allo stato finale (risultato del calcolo). Esso è perciò caratterizzato da:
• una memoria analoga al nastro della macchina di Turing; alcune parti della sua memoria sono però individuabili con un «nome» e sono dette registri, ognuno dei quali contiene un numero;
• una unità di calcolo, detta unità aritmetico-logica, che può leggere un numero in un registro, trasferire un numero da un registro a un altro, eseguire operazioni aritmetiche con i numeri dei registri, confrontarli con 0;
• un particolare registro P che memorizza soltanto numeri interi positivi e ha una funzione di contatore di programma; esso contiene il numero dell’istruzione che deve essere eseguita e il suo valore iniziale è 1.
Il registro P è collegato a un automa elementare che, letto il numero contenuto in P, seleziona la corrispondente istruzione (quella indicata con tale numero); una volta selezionata essa è comunicata all’unità aritmetico-logica. Un automa universale di questo tipo è spesso detto automa di von Neumann, dal matematico J. von Neumann che elaborò il suo schema logico ed è per questo considerato uno dei padri dei moderni computer. Complessivamente in un automa a programma si distinguono due parti essenziali. La prima è l’unità centrale di elaborazione che comprende l’unità aritmetico-logica e una unità di controllo, quella cioè che individua l’istruzione da eseguire leggendone il numero nel registro P, la comunica all’unità aritmetico-logica per l’esecuzione e passa alla successiva. La seconda è la memoria.
Lo schema logico degli attuali computer è ancora sostanzialmente quello di un elaborato automa a programma. Nella terminologia attuale, la memoria si distingue a sua volta in due parti fondamentali: quella non accessibile all’utente, che contiene istruzioni di gestione fondamentali, detta rom, e quella di lavoro vero e proprio, nella quale sono «caricati» i programmi e i dati che vuole l’utente, detta ram. L’unità centrale di elaborazione è correntemente detta microprocessore (→ computer; → processore).