Comprensione dei processori per computer: CPU vs vCPU e thread vs core

Comprensione dei processori per computer: CPU vs vCPU e thread vs core

Le unità di elaborazione centrale (CPU) sono il cervello dei nostri computer. Elaborano tutto ciò che facciamo quotidianamente, dall'apertura di un'applicazione alla visione di un film. Ma cos'è esattamente una CPU? Come funziona? E qual è la differenza tra le CPU e le vCPU sempre più popolari?

Capire il cervello dei computer

I primi computer elettronici furono creati all'inizio del 1800. Tuttavia questi computer erano grandi e costosi e potevano essere utilizzati solo da matematici e scienziati qualificati.

Charles Babbage è accreditato per aver inventato la prima macchina informatica, il Difference Engine, che potrebbe essere programmato per eseguire qualsiasi calcolo che potrebbe essere eseguito manualmente. Tuttavia, il progetto Difference Engine non è mai stato completato a causa della mancanza di fondi.

Nel 1937, Babbage menzionò per la prima volta il motore analitico, che sarebbe diventato il primo computer meccanico multiuso al mondo. "Il motore analitico incorporava tutti gli elementi di un computer moderno: un'unità logica aritmetica, flusso di controllo sotto forma di ramificazioni e loop condizionali e memoria integrata".

Un componente chiave dei computer odierni è la CPU o l'unità di elaborazione centrale. La CPU è responsabile dell'esecuzione delle istruzioni fornite da software come un sistema operativo o un'applicazione. In parole povere, puoi pensare alla CPU come un cervello del tuo computer. La CPU è composta da due parti principali: l'unità di controllo e l'unità logica aritmetica (ALU). 

L'unità di controllo ha il compito di recuperare le istruzioni dalla memoria, decodificarle e quindi inviarle all'unità logica aritmetica per l'esecuzione. L'ALU esegue operazioni aritmetiche e logiche sui dati memorizzati nei registri, che sono unità di memoria interna all'interno della CPU.

Scopri i processori più venduti su AMAZON

Le moderne CPU contengono anche una cache, che è una piccola quantità di memoria ad alta velocità che memorizza le istruzioni e i dati utilizzati di frequente. Le cache sono suddivise in livelli; le cache di livello 1 (L1) è incorporata nella CPU stessa, la cache di livello 2 (L2) si trova un chip separato vicino alla CPU e la cache di livello 3 (L3) si trova più lontano dalla CPU sul proprio chip o anche su il proprio circuito stampato.

CPU vs vCPU

Con l'ascesa dei servizi cloud è arrivata l'avvento dell'unità di elaborazione centrale virtuale, o vCPU in breve. 

Le macchine virtuali sono fondamentalmente sistemi operativi autonomi che vengono eseguiti all'interno di un altro sistema operativo come se fossero applicazioni. Le macchine virtuali vengono utilizzate per una varietà di scopi, come testare nuovi software in un ambiente sicuro, eseguire più sistemi operativi sullo stesso computer o consolidare più server fisici in un unico server per risparmiare spazio e ridurre i costi.

Quindi, una vCPU è un'implementazione software di una CPU; non esiste fisicamente all'interno del tuo computer come fa una vera CPU. L'hypervisor, che è il software che crea e gestisce le VM, assegna le vCPU alla macchina virtuale. Ogni vCPU è vista dal sistema operativo all'interno della VM come un vero e proprio core della CPU.

Tuttavia, poiché le vCPU sono basate su software, non sono efficienti come le vere CPU. Pertanto, è importante specificare quanti core ha il tuo processore quando acquisti un computer. La stessa regola si applica quando si sceglie un server privato virtuale (VPS) o un piano di hosting di server dedicato.

La principale differenza tra CPU e vCPU è che le CPU sono basate su hardware mentre le vCPU sono basate su software. Ciò significa che le CPU esistono fisicamente all'interno del tuo computer mentre le vCPU no; vengono invece creati degli hypervisor quando necessario. A causa di questa differenza nell'implementazione, le CPU sono molto più efficienti delle vCPU; non hanno il sovraccarico associato all'esecuzione del software.

Dall'inizio degli anni 2000, le vCPU sono diventate sempre più popolari perché sono più economiche e più facili da assegnare rispetto alle CPU fisiche; tuttavia, se stai cercando prestazioni, è meglio utilizzare un computer con più core della CPU poiché ogni core può elaborare le istruzioni in modo indipendente.

Core contro Thread

Una CPU può avere uno o più core, che è l'unità di elaborazione che esegue le attività in un momento specifico. Il core manterrà l'ordine di esecuzione delle attività, i registri e la cache (se applicabile) ed eseguirà le operazioni tramite l'ALU. La CPU controlla i core, ma il core esegue ogni processo software o thread pianificato dal sistema operativo. Un thread è una sequenza indipendente di istruzioni che possono essere elaborate da una CPU.

Più thread possono esistere all'interno dello stesso processo e condividere lo stesso spazio di memoria. Ciò consente di comunicare tra loro più facilmente che se fossero in esecuzione all'interno di processi separati. I thread vengono spesso utilizzati per migliorare le prestazioni delle applicazioni multithread consentendo a diverse parti del programma di essere eseguite contemporaneamente su diversi core o processori.

Il termine "filo" è stato usato nella terminologia informatica per molti anni; tuttavia, è stato solo all'inizio degli anni 2000 che il supporto a livello hardware per i thread è stato introdotto nei processori. Ciò ha consentito di eseguire più thread contemporaneamente su core separati. In precedenza, era possibile eseguire un solo thread alla volta su un singolo core, indipendentemente dal numero di core presenti nel processore. I processori multicore sono ormai comuni e la maggior parte dei sistemi operativi fornisce un certo livello di supporto per l'esecuzione di programmi come thread multipli.

Riepilogo dei problemi principali

Per riassumere, le CPU sono il cervello basato sull'hardware dei nostri computer, mentre la loro controparte virtuale, le vCPU, sono basate su software e create da hypervisor per funzionare all'interno di macchine virtuali. I core sono le unità di elaborazione basate su hardware all'interno di una CPU, mentre i thread sono le istruzioni basate su software che possono essere elaborate da una CPU.

I thread possono essere eseguiti contemporaneamente su core separati, il che consente a diverse parti del programma di essere eseguite contemporaneamente. Ciò può migliorare le prestazioni hardware poiché è possibile elaborare più attività contemporaneamente anziché in sequenza.

Torna al blog