Quanto è veloce un microprocessore?
Per rispondere a questa domanda dobbiamo prima renderci conto della relazione che intercorre tra il clock di un sistema a microprocessore e l’effettiva velocità di esecuzione di un programma. Andiamo per gradi.
Quando un microprocessore esegue del codice, lo fa ripetendo continuamente lo stesso ciclo:
- leggi l’istruzione corrente
- esegui l’istruzione corrente
- punta all’istruzione successiva
al termine riparte dal punto 1.
Queste tre semplici frasi riassumono operazioni che hanno una loro complessità, cosa intendiamo con i verbi leggere ed eseguire? cosa significa istruzione corrente ed istruzione successiva?
Ogni sistema a microprocessore è dotato di una memoria in cui è contenuto il codice del programma, possiamo pensare alla memoria come ad una lista di elementi identificati da un numero progressivo (un array). Ogni sistema a microprocessore è anche dotato di un registro (chiamato program counter) che indirizza la memoria di programma, cioè punta ad un elemento della lista.
L’operazione 1 indica il trasferimento dell’elemento puntato dal program counter in uno speciale registro che chiameremo registro istruzioni.
Con l’operazione 2 il contenuto del registro istruzioni viene decodificato e viene eseguita una operazione che dipende dal contenuto del registro stesso. In base al tipo di microprocessore avremo da poche decine a svariate centinaia di possibili istruzioni.
L’operazione 3 incrementa il registro istruzioni affinchè questo punti alla successiva istruzione.
Eseguendo all’infinito questo ciclo vengono svolte sequenzialmente tutte le istruzioni contenute nella memoria di programma.
Sappiamo che un generico algoritmo non contiene solo sequenze lineari di operazioni ma possiamo avere diramazioni oppure cicli. Per alterare la sequenza lineare di esecuzione del codice di programma è sufficiente disporre di istruzioni che alterino il program counter, quando il ciclo visto prima riparte dal punto 1 non leggerà l’istruzione successiva ma piuttosto quella puntata dal valore assunto in quell’istante dal program counter.
In queste poche righe abbiamo descritto l’essenza del funzionamento di qualsiasi sistema a microprocessore. Abbiamo anche capito che il funzionamento di ogni programma è conseguenza dell’esecuzione delle singole istruzioni contenute nella memoria di programma.
In base al tipo di microprocessore ogni istruzione elementare richiede un numero variabile di cicli di clock per la sua esecuzione.
(segue)