In questa guida ti mostriamo cos’è una CPU, quali sono le componenti, come funziona e perché è essenziale per ogni dispositivo elettronico.
Che si tratti di uno smartphone, di un computer, di una SBC o anche di un NAS, uno dei pochi chip che hanno tutti in comune i dispositivi elettronici è la CPU. A differenza di chip specializzati (il modem per le comunicazioni, l’ISP per l’analisi dei segnali fotografici, il Secure Element per la gestione e la memorizzazione dei dati più sensibili, la GPU per la grafica ecc.), la CPU deve essere “brava a fare un po’ tutto”.
Le componenti di una CPU
Una CPU, o Central Processing Unit, è il cuore di ogni computer e smartphone. Si occupa di eseguire i calcoli e le istruzioni del software che utilizziamo ogni giorno. Una CPU è composta da diversi componenti, tra cui:
-
Il registro di programma: una memoria temporanea dove viene immagazzinato il codice del programma in esecuzione.
-
Il registro di dati: un’altra memoria temporanea dove vengono immagazzinati i dati che il programma utilizza durante l’esecuzione.
-
Il decodificatore di istruzioni: un circuito che legge le istruzioni del programma dal registro di programma e le converte in segnali elettrici che possono essere utilizzati dai circuiti della CPU.
-
Il circuito di controllo: un insieme di circuiti che gestisce l’esecuzione del programma, controllando il flusso delle istruzioni e determinando quali operazioni eseguire in quale ordine.
-
Gli ALU (Arithmetic Logic Unit): un insieme di circuiti che eseguono le operazioni matematiche e di confronto richieste dal programma.
-
I registri di stato: dei circuiti che tengono traccia dello stato attuale della CPU, come la posizione corrente nel programma o il risultato delle operazioni eseguite.
Come funziona
Quando avviamo un’applicazione, la CPU legge le istruzioni del programma dalla memoria e le immagazzina nel registro di programma. Il decodificatore di istruzioni converte quindi le istruzioni in segnali elettrici che possono essere utilizzati dai circuiti della CPU. Il circuito di controllo gestisce quindi l’esecuzione del programma, inviando le istruzioni all’ALU per essere eseguite e immagazzinando i risultati ottenuti nei registri di dati.
La velocità con cui una CPU esegue i calcoli dipende dalla sua frequenza di clock, ovvero il numero di volte al secondo in cui il circuito di controllo viene attivato. Più alta è la frequenza di clock (misurata in Herz), più veloce sarà la CPU.
Inoltre, la quantità di dati che una CPU può elaborare in un dato momento dipende dalla sua larghezza di banda della memoria, ovvero il numero di bit che può leggere o scrivere in una sola volta. Maggiore è la larghezza di banda della memoria, maggiore sarà la quantità di dati che la CPU può elaborare in un dato momento.
La memoria della CPU
La memoria della CPU è un componente essenziale per il corretto funzionamento del computer. Esistono diversi tipi di memoria, ognuno dei quali ha una specifica funzione all’interno del sistema:
-
Memoria cache: si tratta di una memoria ad accesso veloce situata all’interno della CPU stessa. La memoria cache viene utilizzata per immagazzinare temporaneamente i dati e le istruzioni che la CPU utilizza più frequentemente, in modo da ridurre il tempo di accesso alla memoria principale del sistema.
-
Memoria RAM (Random Access Memory): si tratta di una memoria volatile, ovvero che viene cancellata ogni volta che il computer viene spento. La RAM viene utilizzata per immagazzinare i dati e le istruzioni che il sistema sta attualmente utilizzando o che potrebbe utilizzare nel prossimo futuro. La RAM ha una capacità limitata e, quando viene riempita, il sistema può rallentare o diventare instabile.
-
Memoria ROM (Read-Only Memory): si tratta di una memoria non volatile, ovvero che non viene cancellata quando il computer viene spento. La ROM viene utilizzata per immagazzinare il codice del sistema operativo e altri dati che non devono essere modificati.
-
Memoria virtuale: si tratta di una tecnologia che permette di utilizzare la memoria del disco rigido come memoria RAM aggiuntiva. Se la RAM viene riempita, il sistema può trasferire alcuni dei dati meno utilizzati sulla memoria virtuale, liberando spazio nella RAM per i dati più importanti. Tuttavia, l’utilizzo della memoria virtuale può rallentare il sistema, poiché i dati devono essere letti e scritti su disco rigido, che è molto più lento della RAM.
In sintesi, la memoria della CPU è utilizzata per immagazzinare i dati e le istruzioni che il sistema sta utilizzando o che potrebbe utilizzare nel prossimo futuro. La memoria cache e la RAM sono ad accesso veloce e vengono utilizzate per immagazzinare i dati più importanti, mentre la memoria virtuale viene utilizzata come memoria aggiuntiva quando la RAM è piena. La ROM viene utilizzata per immagazzinare il codice del sistema operativo e altri dati che non devono essere modificati.
Tipi di gate
I gate o porte logiche sono dei circuiti elettronici utilizzati per eseguire operazioni booleane, ovvero operazioni di confronto che restituiscono un risultato vero o falso. I gate sono utilizzati in diverse parti della CPU, tra cui:
-
Porte AND: una porta AND restituisce vero solo se tutti gli input sono veri. Ad esempio, la porta AND (A, B) restituirà vero solo se A e B sono veri.
-
Porte OR: una porta OR restituisce vero se almeno uno degli input è vero. Ad esempio, la porta OR (A, B) restituirà vero se A è vero, se B è vero o se entrambi sono veri.
-
Porte NOT: una porta NOT inverte il valore di un input. Ad esempio, se l’input è vero, la porta NOT restituirà falso, e viceversa.
-
Porte XOR: una porta XOR (Exclusive OR) restituisce vero solo se uno degli input è vero, ma non entrambi. Ad esempio, la porta XOR (A, B) restituirà vero se A è vero e B è falso, o se A è falso e B è vero, ma non se entrambi sono veri o entrambi sono falsi.
-
Porte NAND: una porta NAND (NOT AND) è una porta AND a cui è stato applicato un invertitore. Ad esempio, la porta NAND (A, B) restituirà vero se A è falso o B è falso, o se entrambi sono falsi.
In sintesi, i gate sono utilizzati per eseguire operazioni booleane all’interno della CPU. I tipi di gate più comunemente utilizzati sono AND, OR, NOT, XOR e NAND. Ognuno di questi gate esegue una specifica operazione booleana in base allo stato degli input.
Le istruzioni: x86 vs ARM
Per poter funzionare correttamente, è bene fornire delle istruzioni che le CPU possano capire. x86 e ARM sono entrambi dei set di istruzioni utilizzati dalle CPU per eseguire il codice del software. Tuttavia, ci sono alcune importanti differenze tra i due:
-
Proprietà: x86 è un marchio di proprietà di Intel, mentre ARM è un marchio di proprietà di ARM Holdings.
-
Architettura: x86 è basata su un’architettura a 32 bit, mentre ARM è basata su un’architettura a 32 o 64 bit.
-
Utilizzo: x86 è utilizzato principalmente sui computer desktop e laptop, mentre ARM è utilizzato principalmente sui dispositivi mobili, come smartphone e tablet. Tuttavia, ARM sta diventando sempre più popolare anche sui computer, soprattutto sui sistemi a basso consumo energetico.
-
Performance: x86 tende ad avere una maggiore potenza di calcolo rispetto ad ARM, ma ARM tende ad essere più efficiente dal punto di vista energetico.
In sintesi, x86 e ARM sono due set di istruzioni utilizzati da microprocessori per eseguire il codice del software. x86 è utilizzato principalmente sui computer desktop e laptop, mentre ARM è utilizzato principalmente sui dispositivi mobili. Tuttavia, ARM sta diventando sempre più popolare anche sui computer. x86 tende ad avere una maggiore potenza di calcolo rispetto ad ARM, ma ARM tende ad essere più efficiente dal punto di vista energetico.