Le prestazioni veloci a thread singolo e l'altissima velocità di trasmissione multi-thread sono esattamente ciò che ottieni con una CPU come Xeon E5-2699v4 di Intel .
È un Broadwell a 22 core. La velocità di clock sostenuta è di 2,2 GHz con tutti i core attivi (ad es. Codifica video), ma il turbo max single-core è 3,6 GHz.
Pertanto, durante l'esecuzione di un'attività parallela, utilizza un budget di potenza di 145 W come 22 core da 6,6 W. Ma durante l'esecuzione di un'attività con pochi thread, lo stesso budget di potenza consente a pochi core di turbo fino a 3,6 GHz. (La memoria single-core inferiore e la larghezza di banda della cache L3 in un grande Xeon significano che potrebbe non funzionare così velocemente come un quad-core desktop a 3,6 GHz. Un singolo core in una CPU Intel desktop può usare molto di più larghezza di banda di memoria totale.)
La velocità di clock nominale di 2,2 GHz è così bassa a causa dei limiti termici. Più core ha una CPU, più lentamente devono funzionare quando sono tutti attivi. Questo effetto non è molto grande nelle CPU a 4 e 8 core menzionate nella domanda, perché 8 non sono così tanti core e hanno budget di potenza molto elevati. Anche le CPU desktop appassionate mostrano chiaramente questo effetto: Intel Skylake-X i9-7900X è una parte 10c20t con base 3.3GHz, turbo massimo 4.5GHz . È molto più headroom turbo single-core di i7-6700k (turbo 4.0GHz sostenuto / 4.2GHz senza overclocking).
Il ridimensionamento di frequenza / tensione (DVFS) consente allo stesso core di funzionare su un'ampia gamma della curva prestazioni / efficienza. Vedi anche questa presentazione IDF2015 sulla gestione dell'alimentazione Skylake , con molti dettagli interessanti su ciò che le CPU possono fare in modo efficiente e scambiando le prestazioni contro l'efficienza sia staticamente in fase di progettazione, sia al volo con DVFS.
All'altra estremità dello spettro, le CPU Intel Core-M hanno una frequenza sostenuta molto bassa, come 1,2 GHz a 4,5 W , ma possono turbo fino a 2,9 GHz. Con più core attivi, eseguiranno i loro core a una velocità di clock più efficiente, proprio come i giganteschi Xeon.
Non hai bisogno di un'architettura eterogenea in stile big.LITTLE per ottenere il massimo beneficio. I piccoli core in ARM big.LITTLE sono core in ordine piuttosto scadenti che non sono buoni per il lavoro di calcolo. Il punto è solo di eseguire un'interfaccia utente con una potenza molto bassa. Molti di loro non sarebbero perfetti per la codifica video o altri gravi scricchiolii di numeri. ( @ Lưu Vĩnh Phúc ha trovato alcune discussioni sul perché x86 non ha grandi dimensioni . PICCOLO . Fondamentalmente, spendere silicio extra su un core molto lento a bassissima potenza non varrebbe la pena per il tipico uso desktop / laptop.)
mentre le applicazioni come l'editing video sono determinate dal numero di core. [Non sarebbe meglio 2x 4.0 GHz + 4x 2.0 GHz con carichi di lavoro multi-thread rispetto a 4x 4GHz?]
Questo è il tuo malinteso chiave. Sembra che tu stia pensando che lo stesso numero di tick di clock totali al secondo sia più utile se distribuito su più core. Non è mai così. È più simile
cores * perf_per_core * (scaling efficiency)^cores
( perf_per_core
non è la stessa cosa della velocità di clock, perché un Pentium4 3GHz otterrà molto meno lavoro per ciclo di clock rispetto a uno Skylake 3GHz.)
Ancora più importante, è molto raro che l'efficienza sia 1.0. Alcune attività parallele in modo imbarazzante si adattano in modo quasi lineare (ad es. Compilazione di più file di origine). Ma la codifica video non è così. Per x264, il ridimensionamento è molto buono fino a pochi core, ma peggiora con più core. ad esempio, passare da 1 a 2 core quasi raddoppierà la velocità, ma passare da 32 a 64 core aiuterà molto meno per una tipica codifica 1080p. Il punto in cui i piani di velocità dipendono dalle impostazioni. ( -preset veryslow
esegue più analisi su ciascun frame e può tenere occupati più core di -preset fast
).
Con molti core molto lenti, le parti a thread singolo di x264 diventerebbero colli di bottiglia. (ad esempio la codifica bitstream CABAC finale. È l'equivalente di gzip di h.264 e non si parallelizza.) Avere alcuni core veloci lo risolverebbe, se il sistema operativo sapesse come programmarlo (o se x264 fissasse i thread appropriati a core veloci).
x265 può sfruttare più core di x264, poiché ha più analisi da fare, e il design WPP di h.265 consente più codifica e decodifica parallelismo. Ma anche per 1080p, a un certo punto esaurisci il parallelismo per sfruttarlo.
Se hai più video da codificare, esegui più video in scala parallela, ad eccezione della concorrenza per risorse condivise come la capacità e la larghezza di banda della cache L3 e la larghezza di banda della memoria. Un numero inferiore di core più veloci potrebbe trarre maggiori benefici dalla stessa quantità di cache L3, dal momento che non avrebbero bisogno di lavorare su così tante diverse parti del problema contemporaneamente.