Processori a più core: più è sempre meglio?

Aggiunta di più core a un singolo processore offre vantaggi significativi grazie alla natura multitasking dei moderni sistemi operativi. Tuttavia, per alcuni scopi, esiste un limite pratico superiore al numero di core che producono miglioramenti rispetto al costo della loro aggiunta.

Progressi tecnologici multi-core

PAE-NX-SSE2-CPU-Windows
TobiasD / Pixabay

I processori multi-core sono stati disponibili in computer personale dai primi anni 2000. I progetti multi-core hanno affrontato il problema dei processori che raggiungono il limite del loro fisico limitazioni in termini di velocità di clock e di quanto efficacemente potrebbero essere raffreddati e mantenuti precisione. Passando a core extra su un singolo chip del processore, i produttori hanno evitato problemi con le velocità di clock moltiplicando efficacemente la quantità di dati che potevano essere gestiti dal processore.

Quando sono stati originariamente rilasciati, i produttori offrivano solo due core in una singola CPU, ma ora ci sono opzioni per quattro, sei e persino 10 o più. Oltre ad aggiungere core, le tecnologie multithreading simultanee, come l'Hyper-Threading di Intel, possono raddoppiare i core virtuali che il

sistema operativo vede.

Processi e thread

UN processi è un'attività specifica, come un programma, in esecuzione su un computer. Un processo è costituito da uno o più thread.

UN filo è semplicemente un singolo flusso di dati da un programma che passa attraverso il processore del computer. Ogni applicazione genera uno o più thread a seconda di come è in esecuzione. Senza multitasking, un processore single-core può gestire solo un singolo thread alla volta, quindi il sistema passa rapidamente da un thread all'altro per elaborare i dati in modo apparentemente simultaneo.

Il vantaggio di avere più core è che il sistema può gestire più di un thread contemporaneamente. Ogni core può gestire un flusso di dati separato. Questa architettura aumenta notevolmente le prestazioni di un sistema che esegue applicazioni simultanee. Poiché i server tendono a eseguire molte applicazioni simultanee in un dato momento, la tecnologia è stata originariamente sviluppata per il cliente aziendale, ma poiché i personal computer sono diventati più complessi e il multitasking è aumentato, anche loro hanno tratto vantaggio dall'avere nuclei in più.

Ogni processo, tuttavia, è governato da un thread primario che può occupare solo un singolo core. Pertanto, la velocità relativa di un programma come un gioco o un renderer video è fortemente limitata alla capacità del core che consuma il thread primario. Il thread primario può assolutamente delegare i thread secondari ad altri core, ma un gioco non diventa due volte più veloce quando si raddoppiano i core. Pertanto, non è insolito per un gioco raggiungere il massimo di un core (il thread principale) ma vedere solo l'utilizzo parziale di altri core per i thread secondari. Nessuna quantità di raddoppio del core aggira il fatto che il core primario è un limitatore di velocità per il tuo applicazione e le app sensibili a questa architettura funzioneranno meglio delle app che non lo sono.

Dipendenza dal software

Mentre il concetto di processori multi-core sembra attraente, c'è un grosso avvertimento su questa tecnologia. Per poter godere dei veri vantaggi dei processori multipli, il software in esecuzione sul computer deve essere scritto per supportare il multithreading. Senza il software che supporta tale funzionalità, i thread verranno eseguiti principalmente attraverso un singolo core, degradando così l'efficienza complessiva del computer. Dopotutto, se può essere eseguito solo su un singolo core in un processore quad-core, potrebbe effettivamente essere più veloce eseguirlo su un processore dual-core con velocità di clock di base più elevate.

Tutti i principali sistemi operativi attuali supportano la capacità di multithreading. Ma il multithreading deve essere scritto anche nel software applicativo. Il supporto per il multithreading nel software consumer è migliorato nel corso degli anni, ma per molti è semplice programmi, il supporto multithreading non è ancora implementato a causa della complessità del software costruire. Ad esempio, è improbabile che un programma di posta o un browser Web ottenga enormi vantaggi dal multithreading quanto un programma di grafica o di editing video, in cui il computer elabora calcoli complessi.

Un buon esempio per spiegare questa tendenza è guardare un tipico gioco per computer. La maggior parte dei giochi richiede una qualche forma di motore di rendering per visualizzare ciò che sta accadendo nel gioco. Inoltre, una sorta di intelligenza artificiale controlla eventi e personaggi nel gioco. Con un single-core, entrambe le attività vengono eseguite passando da una all'altra. Questo approccio non è efficiente. Se il sistema fosse caratterizzato da più processori, il rendering e l'intelligenza artificiale potrebbero essere eseguiti ciascuno su un core separato, una situazione ideale per un processore a più core.

8 > 4 > 2?

Andare oltre i due core presenta vantaggi misti, dato che la risposta per un determinato acquirente di computer dipende dal software che utilizza in genere. Ad esempio, molti giochi classici offrono ancora poche differenze di prestazioni tra due e quattro core. Anche i giochi moderni, alcuni dei quali presumibilmente richiedono o supportano otto core, potrebbero non funzionare meglio di una macchina a sei core con un maggiore velocità di clock di base, dato che l'efficacia del thread primario governa l'efficienza del multithreaded prestazione.

D'altra parte, un programma di codifica video che transcodifica i video probabilmente vedrà enormi vantaggi come il rendering dei singoli frame può essere passato a diversi core e quindi raccolto in un unico flusso dal Software. Quindi avere otto core sarà ancora più vantaggioso che averne quattro. In sostanza, il thread primario non ha bisogno di risorse relativamente ricche; invece, può affidare il duro lavoro ai thread figli che massimizzano i core del processore.

Velocità di clock

Task manager che mostra l'utilizzo della CPU

In termini generali, una velocità di clock più elevata significherà un processore più veloce. Le velocità di clock diventano più nebulose se si considerano le velocità relative a più core perché i processori elaborano più dati thread grazie ai core aggiuntivi, ma ognuno di questi core funzionerà a velocità inferiori a causa delle restrizioni termiche.

Ad esempio, un processore dual-core può supportare velocità di clock di base di 3,5 GHz per ciascun processore mentre un processore quad-core può funziona solo a 3.0 GHz. Basta guardare un singolo core su ciascuno di essi, il processore dual-core è il 14% più veloce rispetto al quad core. Pertanto, se si dispone di un programma che è solo a thread singolo, il processore dual-core è effettivamente più efficiente. Inoltre, se il tuo software può utilizzare tutti e quattro i processori, il processore quad-core sarà effettivamente circa il 70% più veloce di quel processore dual-core.

Conclusioni

Per la maggior parte, avere un processore con un numero di core più elevato è generalmente migliore se il tuo Software e i casi d'uso tipici lo supportano. Per la maggior parte, un processore dual-core o quad-core sarà più che sufficiente per un utente di computer di base. La maggior parte dei consumatori non vedrà vantaggi tangibili dall'andare oltre i quattro core del processore perché così poco software non specializzato ne trae vantaggio. Il miglior caso d'uso per i processori ad alto numero di core riguarda macchine che eseguono attività complesse come l'editing video desktop, alcune forme di giochi di fascia alta o programmi scientifici e matematici complicati.

Dai un'occhiata ai nostri pensieri su Quanto è veloce un PC di cui ho bisogno? per avere un'idea migliore di quale tipo di processore si adatta meglio alle tue esigenze di elaborazione.