Le CPU multi-core soffrono ancora di rendimenti decrescenti nel mondo di oggi?


8

È stato dimostrato in altre domande che, a causa dello stato delle applicazioni informatiche, i processori multi-core soffrono di rendimenti decrescenti. È ancora così nel mondo di oggi?

La maggior parte delle nuove applicazioni abbraccia il multi-threading e quindi sfrutta i core multipli? In caso contrario, l'aiuto del nuovo sistema operativo a 64 bit sfrutta i core assegnando attività / processi a core diversi? Oppure i processori multi-core continuano a soffrire degli stessi (o simili) rendimenti decrescenti?

Si prega di eseguire il backup di eventuali reclami con riferimenti.


2
Essere su un sistema operativo x64 non farebbe alcuna differenza quando si ha un programma con più thread. Le differenze nel panorama del compilatore tra il 2008 e il 2012 sono enormi. Fino a quando non c'era un modo semplice per eseguire un'azione su più thread, avere una CPU con la capacità di eseguire più thread contemporaneamente, è quasi inutile. Anche oggi non è ancora abbastanza facile farlo.
Ramhound,

Risposte:


7

Dipende fortemente da quello che fai.

Per Word, Excel, Minesweeper e qualsiasi altra cosa usi tua madre, un core è ancora abbastanza e più di due è un eccesso. Questi tipi di applicazioni trascorrono la maggior parte del tempo inattivi, in attesa dell'input dell'utente.

Per i giochi beneficerai di almeno due. Dopodiché dipende dal gioco. Teoricamente potresti far correre ogni avversario AI su un thread separato, ma la logica di gioco centrale non può essere facilmente parallelizzata - hai bisogno di un posto dove tutti i risultati sono messi insieme per formare uno stato di gioco coerente. Quindi di solito c'è un thread "principale" su cui tutti attendono.

Per il multimedia, il crunching dei numeri reali e la scienza ogni core conta. Si tratta di attività che sono intrinsecamente multithread o possono essere facilmente eseguite e gli sviluppatori hanno un forte incentivo a sfruttare tutta la potenza di elaborazione disponibile.

Agli utenti esperti piace il multitasking. Torrent, VirtualBox, cattura dello schermo, video, Minecraft e navigazione Web in esecuzione contemporaneamente. Quindi trarrai vantaggio da ogni app affamata di CPU che ha il suo core. Oggi è popolare livestream il tuo gioco. Quindi sono due core per il gioco, almeno uno in più per il thread dell'encoder e almeno uno in più per il resto del sistema. Sono almeno 4 core.


1
In generale, una buona intelligenza artificiale di gioco è molto più difficile della riconciliazione di più azioni. È solo un'aggiunta fantasiosa. In secondo luogo, si presume che i giochi abbiano un singolo stato di gioco centrale. Neanche questo è necessariamente vero. Anche se lo ha fatto, non è necessariamente una barriera al thread. Ad esempio, i calcoli della fisica vengono generalmente eseguiti in parallelo. E infine, i giochi hanno anche una grande parte di rendering grafico, che porta anche a thread.
MSalters,

Dubito che un singolo core sia sempre la scelta giusta (basta inserire una formula molto lenta in Excel ...) e penso che tu stia semplificando un po 'troppo. Che dire, ad esempio, della funzione Turbo Core (AMD) / Turbo Boost (Intel) sui processori più recenti? Permette al mio AMD hex-core di parcheggiare metà dei suoi core ed eseguire l'altra metà a un clock più veloce - e la versione di Intel è ancora più finemente definita, credo - quindi il processore può riottimizzare al volo per il lavoro richiesto da esso. Questo li rende una scelta migliore? Il problema può essere affrontato in modo accurato solo mediante misurazioni e parametri di riferimento reali.
DMA57361,

Sono completamente d'accordo con @ DMA57361 Alcuni anni fa mio zio ha acquistato diversi computer AMD single core per i suoi figli pre-adolescenti. I processi in background (Windows Update è l'offensore più eclatante) li rendevano regolarmente praticamente inutilizzabili per minuti alla volta massimizzando la CPU.
Dan Fiddling By Firelight,

Non dimenticare l'hyperthreading. Processori Intel più avanzati possono simulare core di processore aggiuntivo fornendo un set aggiuntivo di registri in ciascun core e consentendo ai thread di utilizzare parti diverse di ciascun core di processore contemporaneamente per aumentare ulteriormente le prestazioni del multitasking.
bwDraco,

Il rendering 3D è un altro che mostra un grande vantaggio. Se sei un animatore o un grafico e fai molti rendering; tutti i software di livello professionale hanno il vantaggio di sfruttare tutti i core che la tua macchina ha da offrire (e altro ancora nel caso di cluster in rete). Le prestazioni scaleranno linearmente con il numero di core.
Jason C,

5

Temo che la risposta sia, come sempre, "dipende da cosa stai facendo".

Sì, ci sono rendimenti decrescenti dall'aggiunta di un numero sempre maggiore di core e lo sarà sempre se si esegue una sola applicazione alla volta .

Anche in un'applicazione multi-thread ben realizzata, molte delle attività che vengono sottoposte a thread vengono eseguite in modo da attendere i componenti più lenti della macchina - disco rigido, rete - senza influire sulle prestazioni apparenti per l'utente. Questi non possono essere migliorati da una maggiore parallelizzazione, quindi qualsiasi limite teorico di accelerazione è irraggiungibile a fini pratici.

Vale la pena notare che ci sono poche "grandi" applicazioni che non sono multi-thread (basta controllare l'equivalente del Task Manager del sistema operativo, dovrebbe essere in grado di dirti quante appartengono a ciascun processo - il mio Firefox attualmente sta usando 31, ad esempio ).

Naturalmente, l'esecuzione di più applicazioni non interdipendenti non è vincolata da questi limiti. Man mano che si aggiungono più core, è possibile eseguire più applicazioni contemporaneamente con un leggero calo delle prestazioni di elaborazione (disco rigido, rete, ecc. Le prestazioni non si adattano altrettanto bene). In pratica, anche questo è soggetto a rendimenti decrescenti in quanto vi è un inevitabile sovraccarico nella gestione della distribuzione del lavoro tra core, condotte di comunicazione e così via.

Ad esempio, questo post di Tom's Hardware (dal 2009) tenta di esaminare le prestazioni di alcuni processori multi-core in applicazioni simultanee - eseguendo un gioco insieme a una scansione AVG (entrambi probabilmente multi-thread). I processori quad-core, tri-core e dual-core funzionano tutti in modo simile solo con il gioco, ma aggiungono la scansione simultanea di AVG e le prestazioni (misurate da un FPS medio) diminuiscono rispettivamente del 22%, 40% e 59%.

Quindi, mentre un quad core non offriva alcun aumento delle prestazioni rispetto a un dual core quando si esegue un'applicazione intensiva, non appena è apparsa un'altra attività intensiva, è risultato essere due volte più performante. Sfortunatamente, non riesco a trovare molto altro che indaga su quanto questo si ridimensiona con più core e attività più intense.


E poi devi prendere nota delle moderne funzionalità dei processori come Turbo Boost / AMD Turbo Core di Intel. Queste particolari funzionalità consentono a un processore multi-core di parcheggiare i core (impostandoli in modalità più lenta, a bassa potenza,) e utilizzano l'energia di riserva per overcloccare i core che rimangono attivi, consentendo al processore di ottimizzare se stesso per fornire la stessa potenza di elaborazione il più possibile per il numero di compiti con cui è presentato.


2

Per aggiungere carburante al fuoco, ho letto qui che Android è in realtà rallentato avendo più di un core:

L'uso di processori multi-core può effettivamente rallentare i dispositivi Android, ha affermato Mike Bell, direttore generale del gruppo mobile e di comunicazione di Intel, che incolpa la capacità multi-threading di Android, o la sua mancanza, per la difficoltà del sistema operativo nel gestire efficacemente potenti CPU.

Più core ha un dispositivo, maggiore è la potenza richiesta - e, per il momento, tale quantità di energia è semplicemente troppo per essere bilanciata dai dispositivi Android.


Hmm, la modifica di questo nella tua domanda originale non avrebbe funzionato meglio?
Journeyman Geek

Sto pensando che tutto questo thread verrà convertito in una wiki / FAQ della community e ho pensato che sarebbe meglio lasciare la domanda così com'è e aggiungerla separatamente. @Moderatori: questa risposta deve essere unita alla domanda o lasciata così com'è?
rishimaharaj,

0

Certo, dipende da cosa stai facendo, ma sì, ci sono rendimenti decrescenti.

Le applicazioni semplici e quotidiane come l'elaborazione di testi o la navigazione Web traggono poco vantaggio dall'avere più di due core di processore. Le applicazioni scientifiche di elaborazione e gioco tendono a fare un uso migliore di quattro (o più) core e / o capacità di hyperthreading in quanto tendono a essere progettate per sfruttare al meglio l'hardware moderno, ma i vantaggi di più di quattro core sono limitati.

Inoltre, non tutto è limitato al calcolo. L'aggiunta di core del processore non aiuta se il carico di lavoro è associato all'I / O. Se hai mai installato un SSD per sostituire un disco rigido meccanico, probabilmente saprai che le prestazioni di elaborazione quotidiane sono limitate il più delle volte dalla memoria del tuo computer. In ambienti server occupati in cui viene utilizzato un numero elevato di core per consentire al sistema di gestire contemporaneamente un numero elevato di utenti e richieste, vengono utilizzati array di dischi specializzati, SSD e altri sistemi di archiviazione per garantire le massime prestazioni sotto carico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.