Che cos'è un processore multicore?

click fraud protection

Dalla metà degli anni '20, le CPU desktop offrono più core CPU in un unico pacchetto. Questo è un processore multicore. Mentre i primi progetti erano limitati a due o quattro core CPU, le CPU moderne offrono fino a 64 core fisici su una singola CPU. I conteggi dei core così alti non sono standard per le CPU desktop e sono generalmente riservati a workstation o server di fascia alta. I conteggi di core tipici nelle moderne CPU desktop sono compresi tra 4 e 16. Ma di cosa si tratta nelle CPU multicore che le rendono dominanti nei computer moderni?

Single core

Storicamente, una CPU single core era limitata all'esecuzione di una sola attività alla volta. Questo viene fornito con tutta una serie di problemi. Ad esempio, su un computer moderno è in esecuzione un'enorme quantità di processi in background. Se una CPU può elaborare solo una cosa alla volta, significa che questi processi in background devono sottrarre tempo di elaborazione al processo in primo piano. Inoltre, la mancanza di cache significa che i dati devono essere recuperati da - relativamente - RAM lenta. Durante il periodo in cui i dati vengono recuperati dalla RAM, il processore rimane semplicemente inattivo, poiché non può fare nulla finché non ottiene i dati. Ciò blocca il processo in esecuzione e tutti gli altri processi in attesa del completamento.

Sebbene i moderni processori single-core non siano davvero una cosa grazie all'aumento delle CPU multicore economiche, sarebbero in grado di utilizzare altri trucchi moderni per operare più velocemente. Una pipeline consentirebbe di utilizzare simultaneamente ogni diversa parte della gestione di un'istruzione, fornendo un significativo aumento delle prestazioni rispetto all'utilizzo di una sola fase della pipeline per clock ciclo. Un'ampia pipeline vedrebbe la possibilità di gestire più istruzioni in ogni fase della pipeline per ciclo di clock. L'elaborazione fuori servizio consentirebbe di programmare le istruzioni in un modo più efficiente in termini di tempo. Un predittore di diramazione sarebbe in grado di prevedere il risultato di un'istruzione di diramazione ed eseguire preventivamente la risposta presunta.

Tutti questi fattori funzionerebbero bene e fornirebbero alcune prestazioni. L'aggiunta di uno o più core, tuttavia, consente tutto ciò e in un colpo solo consente l'elaborazione del doppio dei dati contemporaneamente.

Multicore

L'aggiunta di un secondo core suona come se dovesse raddoppiare le prestazioni grezze. Le cose, purtroppo, sono più complicate di così. La logica del programma è spesso a thread singolo, il che significa che c'è solo una cosa che un programma tenta di fare alla volta. Ciò che può accadere, tuttavia, è che altri processi possano utilizzare l'altro core contemporaneamente. Sebbene non vi sia un aumento delle prestazioni intrinseco alla maggior parte dei singoli programmi, la fornitura di un extra risorsa di elaborazione, riduce efficacemente la concorrenza per una risorsa limitata, che fornisce a aumento delle prestazioni. Questo aumento delle prestazioni, dovuto semplicemente alla riduzione della concorrenza per il tempo della CPU, è più evidente quando si salta da un singolo per una CPU dual-core, ci sono rendimenti decrescenti dall'aumentare ulteriormente il conteggio dei core, sebbene in generale lo sia di più meglio.

Per sfruttare adeguatamente i sistemi multicore e vedere effettivamente un solido aumento delle prestazioni, i programmi devono essere programmati per utilizzare più thread di elaborazione. La logica multithread è notoriamente difficile da eseguire in modo affidabile poiché spesso è difficile da imparare e ci sono molte potenziali insidie. Un esempio di trappola è noto come race condition. In una condizione di competizione, un processo presuppone che un altro processo avviato funzioni senza intoppi, quindi tenta di fare qualcosa che si basa sull'esecuzione regolare dell'altro processo. Ad esempio, immagina che un processo avvii un altro processo per chiudere un documento e aprirne un altro. Se il processo originale non verifica correttamente se il secondo processo è stato completato, ciò può comportare risultati imprevisti. Se si è verificato un problema durante la chiusura del primo documento, ad esempio, potrebbe essere ancora aperto quando il processo originale scrive semplicemente più dati su di esso.

In questa condizione di competizione, il valore di una variabile viene letto una seconda volta prima che il nuovo valore venga scritto su di essa, portando a una risposta complessiva errata.

Problemi termici

Uno dei maggiori problemi con cui i processori multicore finiscono per lottare è il calore. Mentre un core della CPU non emette molto calore, due ne emettono di più. Nelle CPU con un numero elevato di core, questa concentrazione di calore può comportare un boost clock inferiore, poiché la CPU gestisce la sua temperatura. Un boost clock inferiore causerà prestazioni inferiori nelle applicazioni a thread singolo. Questo può essere visto spesso nei benchmark delle prestazioni di gioco. I videogiochi spesso dipendono fortemente da un singolo thread. Pertanto, le prestazioni a thread singolo sono spesso fondamentali per i giochi. Le CPU ad alto numero di core come i modelli a 16 core provengono spesso da contenitori ad alte prestazioni. Nonostante ciò, è possibile riscontrare regolarmente che sono superate dalle CPU "minori" con un numero di core inferiore nei benchmark a thread singolo. Questo problema è ancora più evidente nelle CPU con un numero di core ultra elevato come l'AMD Threadripper a 64 core, dove la velocità di clock è notevolmente inferiore rispetto alle CPU desktop di fascia alta.

Successi

Molte applicazioni sono in grado di utilizzare correttamente più core della CPU. Ad esempio, il rendering della CPU è un'attività relativamente facile da parallelizzare. I miglioramenti delle prestazioni possono essere visti fino a 64 core e oltre, sebbene nessuna singola CPU offra attualmente più di 64 core. Molte applicazioni semplicemente non possono essere multithread poiché dipendono dalla logica sequenziale. Anche se questi non vedono da nessuna parte vicino alla velocità di un programma multithread, il fatto che i programmi multithread e altri programmi a thread singolo possono utilizzare altri core della CPU liberando tempo del processore, consentendo di migliorare prestazione.

Opzioni architettoniche

Nei processori desktop, ogni core della CPU all'interno di una CPU multicore è stato generalmente identico. Questa omogeneità semplifica il lavoro di pianificazione sui core. L'utilizzo dello stesso design ripetuto aiuta anche a contenere i costi di sviluppo. I processori mobili, tuttavia, utilizzano da tempo architetture core eterogenee. In questo design, ci sono due o anche tre livelli di core della CPU. Ogni livello può eseguire gli stessi processi, tuttavia, alcuni sono progettati per l'efficienza energetica e altri sono ottimizzati per le prestazioni. Questo si è rivelato una ricetta per il successo per i dispositivi alimentati a batteria, poiché molte attività possono essere utilizzate più lentamente core efficienti dal punto di vista energetico, aumentando la durata della batteria, mentre i processi ad alta priorità possono ancora essere eseguiti ad alta velocità Quando necessario.

Anche l'architettura della CPU desktop si sta muovendo nella direzione di un design di base eterogeneo. Alder Lake 12 di Intelth la linea Core CPU di generazione è la prima CPU desktop a farlo. In questo caso, il principale fattore trainante dei core più piccoli non è necessariamente l'efficienza energetica ma l'efficienza termica, sebbene queste siano due facce della stessa medaglia. Avere più core potenti offre prestazioni elevate, mentre molti core efficienti possono gestire attività in background senza influire troppo sui core principali.

Conclusione

Una CPU multicore è una CPU che presenta più core di elaborazione in un unico pacchetto, spesso, anche se non esclusivamente, sullo stesso die. Le CPU multicore non offrono un aumento diretto delle prestazioni a molti programmi, tuttavia, aumentando il numero di core, i programmi a thread singolo non devono competere tanto per il tempo della CPU. Alcuni programmi possono sfruttare appieno più core, utilizzando direttamente quanti sono disponibili. Ciò fornisce un grande aumento delle prestazioni, sebbene a causa dei vincoli termici e di potenza questo aumento non sia necessariamente un raddoppio diretto delle prestazioni con un raddoppio dei core.