CPU
pagina
iniziale
L'unità centrale di elaborazione, in sigla CPU (dal corrispondente termine
inglese Central Processing Unit), anche chiamata, esclusivamente nella sua
implementazione fisica, processore, è uno dei due componenti principali della
macchina di von Neumann, il modello su cui sono basati la maggior parte dei
moderni computer.
Compito della CPU è quello di leggere i dati dalla memoria ed eseguirne le
istruzioni; il risultato dell'esecuzione dipende dal dato su cui opera e dallo
stato interno della CPU stessa, che tiene traccia delle passate operazioni.
Famiglie di CPU
In base all'organizzazione della memoria si possono distinguere due famiglie di CPU:
- con architettura di von Neumann classica, in cui dati e istruzioni risiedono nella stessa memoria (è dunque possibile avere codice automodificante). Questa architettura è la più comune, perché è più semplice e flessibile.
- con architettura Harvard, in cui dati e istruzioni risiedono in due memorie separate. Questa architettura garantisce migliori prestazioni poiché le due memorie possono lavorare in parallelo ma è più complessa da gestire. È tipicamente utilizzata nei DSP.
Struttura della CPU
Una generica CPU contiene:
- una ALU (Arithmetic Logic Unit) che si occupa di eseguire le operazioni logiche e aritmetiche;
- una Unità di Controllo CU (control unit) che legge dalla memoria le istruzioni, se occorre legge anche i dati per l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un registro della CPU.
- dei registri, speciali locazioni di memoria interne alla CPU, molto veloci, a cui è possibile accedere molto più rapidamente che alla memoria: il valore complessivo di tutti i registri della CPU costituisce lo stato in cui essa si trova attualmente. Due registri sempre presenti sono:
- il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in memoria della prossima istruzione da eseguire;
- il registro dei flag: questo registro non contiene valori numerici convenzionali, ma è piuttosto un insieme di bit, detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita. I flag più importanti sono:
- Flag di stato:
- Overflow: indica se il risultato dell'operazione precedente era troppo
grande per il campo risultato: 0 assenza di overflow,1 overflow
- Zero: vale 1 se l'ultima operazione ha avuto risultato zero, altrimenti vale
0.
- Carry: vale 1 se l'ultima operazione ha ecceduto la capacità del registro che
contiene il risultato, altrimenti - vale 0 (esempio: in un registro a 8 bit, che
può rappresentare solo numeri da 0 a 255, la somma 178+250 darebbe come
risultato 172, cioè 428 - 256, e il carry verrebbe posto a 1 insieme al flag di
overflow).
- Segno: indica il segno del risultato dell'operazione precedente: 0 risultato
positivo,1 risultato negativo
- Flag di controllo:
- Interrupt: se a questo flag viene assegnato valore 1, la CPU smette di rispondere alle richieste di servizio esterne delle periferiche (i segnali delle linee IRQ) finché non viene ripristinato al valore 0, o finché non arriva dall'esterno un segnale di RESET.