Schema di funzionamento

Il ciclo Fetch e Execute: il linguaggio macchina

Il processore è l'elemento attivo che opera eseguendo le istruzioni in linguaggio macchina che sono contenute nella memoria.

La memoria è costituita da una sequenza di celle o parole, ognuna delle quali è capace di contenere un certo numero di bit. Tale numero è detto lunghezza della parola. Ogni parola è identificata da un numero detto indirizzo.

Il processore contiene al proprio interno dei registri, capaci anch'essi di memorizzare un certo numero di bit come le celle di memoria. Il numero e il tipo dei registri posseduto varia da un tipo ad un altro di processore, ma praticamente tutti i processori possiedono un registro particolare detto contatore di programma o PC (Program Counter), che è destinato a contenere l'indirizzo della parola di memoria che contiene la prossima istruzione da eseguire.

Il processore opera eseguendo un ciclo fondamentale di interpretazione delle istruzioni, che può essere schematizzato nel modo seguente:

  1. legge in memoria l'istruzione contenuta all'indirizzo contenuto nel registro PC;

  2. interpreta l'istruzione letta e la esegue;

  3. determina il nuovo valore di PC e torna al passo 1.

E' importante tenere presenti alcune osservazioni rispetto a questo ciclo:

  • all'inizio (cioè all'avviamento del processore) il registro PC deve contenere l'indirizzo della prima istruzione eseguibile dal programma;

  • durante l'interpretazione dell'istruzione il processore può accedere a celle di memoria che contengono gli operandi; la memoria contiene quindi sia le istruzioni che gli operandi del programma;

  • nel determinare il nuovo valore del PC normalmente il processore suppone che la prossima istruzione sia contenuta nella cella successiva di memoria, quindi si limita ad incrementare il valore del PC stesso; però se l'istruzione appena eseguita è di salto, allora il prossimo valore del PC viene determinato dall'istruzione stessa.

Le istruzioni che possono essere eseguite sono molto elementari, ad esempio:

  • trasferisci il contenuto di una cella di memoria in un registro o viceversa;

  • somma il contenuto di due registri (o analogamente altre operazioni aritmetiche o logiche);

  • salta all'esecuzione di un'istruzione posta a un certo indirizzo (questa istruzione modifica il registro PC);

  • come sopra, ma il salto deve essere eseguito solamente se vale una certa condizione (salto condizionato); una tipica condizione è che un certo registro abbia un contenuto uguale (oppure maggiore o minore) di zero;

Le istruzioni di salto (condizionato e non) sono di fondamentale importanza per realizzare in linguaggio macchina i costrutti di controllo (cicli, if-then, ecc...) di un linguaggio di programmazione. Si tenga presente che, anche se la maggior parte dei processori possiede un numero elevato di istruzioni, un linguaggio macchina completo, nel senso di un linguaggio sufficiente per realizzare tutte le funzioni richieste dalla traduzione di qualsiasi linguaggio di alto livello, può essere costituito da 5 o 6 istruzioni solamente, di cui almeno una deve essere di salto condizionato. Moltissime operazioni possono essere infatti realizzate utilizzando istruzioni più elementari (ad esempio la sottrazione tramite la negazione e somma, la moltiplicazione tramite somme ripetute, ecc...).

I diversi processori differiscono moltissimo in base al tipo di istruzioni che possono eseguire, ma possiamo affermare che tutti i processori operano secondo lo schema illustrato sopra e che i tipi di istruzione che eseguono sono sufficienti per svolgere tutte le funzioni richieste da un programma eseguibile ottenuto dalla traduzione (compilazione e collegamento) di un programma qualsiasi scritto in un linguaggio di programmazione di alto livello.

Intorno agli anni 40 del secolo scorso lo scienziato John von Neumann (Budapest, 28 dicembre 1903 – Washington, 8 febbraio 1957), progettando i primi calcolatori (allora enormi) definisce l'architettura generale dei computer che da allora subirà solo evoluzioni ma rimarrà sostanzialmente identica. Per questo si parla di architettura di Von Neuman per descrivere l'architettura generale dei computer.

Architettura attuale dei computer:

Lo schema si basa su cinque componenti fondamentali:

  1. CPU (o unità di lavoro) che si divide a sua volta in unità aritmetica e logica (o ALU) e Unità di controllo;

  2. Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory);

  3. Unità di input, tramite la quale i dati vengono inseriti nel calcolatore per essere elaborati;

  4. Unità di output, necessaria affinché i dati elaborati possano essere restituiti all'operatore;

  5. Bus, un canale che collega tutti i componenti fra loro.

Last updated