Eine schnelle Single-Thread-Leistung und ein sehr hoher Multi-Thread-Durchsatz sind genau das, was Sie mit einer CPU wie dem Intel Xeon E5-2699v4 erreichen .
Es ist ein 22-Kern Broadwell. Die dauerhafte Taktfrequenz beträgt 2,2 GHz, wobei alle Kerne aktiv sind (z. B. Videocodierung), der maximale Single-Core-Turbo jedoch 3,6 GHz.
Während eine parallele Task ausgeführt wird, verwendet sie ihr 145-W-Leistungsbudget als 22 6,6-W-Kerne. Wenn Sie jedoch eine Aufgabe mit nur wenigen Threads ausführen, können mit demselben Strombudget einige Kerne auf 3,6 GHz aufgeladen werden. ( Aufgrund des niedrigeren Single-Core-Speichers und der geringeren L3-Cache-Bandbreite in einem großen Xeon -System ist die Leistung möglicherweise mit 3,6 GHz nicht so hoch wie bei einem Desktop-Quad-Core. Ein einzelner Core in einer Intel-Desktop-CPU kann jedoch viel mehr Leistung verbrauchen.) Gesamtspeicherbandbreite.)
Die Nenntaktrate von 2,2 GHz ist aufgrund der thermischen Grenzen so niedrig. Je mehr Kerne eine CPU hat, desto langsamer müssen sie laufen, wenn sie alle aktiv sind. Dieser Effekt ist bei den in der Frage erwähnten 4- und 8-Kern-CPUs nicht sehr groß, da 8 nicht so viele Kerne hat und sie sehr hohe Leistungsbudgets haben. Sogar begeisterte Desktop-CPUs zeigen diesen Effekt spürbar: Intels Skylake-X i9-7900X ist ein 10-c20-t-Teil mit einer Basis von 3,3 GHz und einem maximalen Turbo von 4,5 GHz . Das ist viel mehr Single-Core-Turbo-Headroom als bei i7-6700k (4,0-GHz-Dauerturbo / 4,2-GHz-Turbo ohne Übertaktung).
Mit der Frequenz- / Spannungsskalierung (DVFS) kann derselbe Kern über einen weiten Bereich der Leistungs- / Effizienzkurve betrieben werden. Siehe auch diese IDF2015-Präsentation zum Skylake-Power-Management mit vielen interessanten Details zu den effizienten Funktionen von CPUs und dem Kompromiss zwischen Leistung und Effizienz, sowohl statisch zur Entwurfszeit als auch im laufenden Betrieb mit DVFS.
Am anderen Ende des Spektrums haben Intel Core-M-CPUs eine sehr niedrige Dauerfrequenz , wie 1,2 GHz bei 4,5 W , können aber bis zu 2,9 GHz turbo. Wenn mehrere Kerne aktiv sind, betreiben sie ihre Kerne mit einer effizienteren Taktrate, genau wie die riesigen Xeons.
Sie benötigen keine heterogene big.LITTLE-Architektur, um den größten Nutzen daraus zu ziehen. Die kleinen Kerne in ARM big.LITTLE sind ziemlich beschissene in-order-Kerne, die für die Rechenarbeit nicht gut sind. Es geht nur darum, eine Benutzeroberfläche mit sehr geringem Stromverbrauch zu betreiben. Viele von ihnen wären nicht gut für die Videokodierung oder andere ernsthafte Zahlenverarbeitungen geeignet. ( @ Lưu Vĩnh Phúc fand einige Diskussionen darüber, warum x86 nicht groß ist . WENIG . Grundsätzlich wäre es für eine typische Desktop- / Laptop-Nutzung nicht wert, zusätzliches Silizium für einen extra langsamen Kern mit sehr geringem Stromverbrauch auszugeben.)
Anwendungen wie die Videobearbeitung werden durch die Anzahl der Kerne bestimmt. [Wäre 2x 4,0 GHz + 4x 2,0 GHz bei Multithread-Workloads nicht besser als 4x 4 GHz?]
Dies ist Ihr Hauptmissverständnis. Sie scheinen der Meinung zu sein, dass die gleiche Anzahl an Takten pro Sekunde sinnvoller ist, wenn Sie sie auf mehrere Kerne verteilen. Das ist niemals der Fall. Es ist eher so
cores * perf_per_core * (scaling efficiency)^cores
( perf_per_core
Dies ist nicht das Gleiche wie die Taktrate, da ein 3GHz Pentium4 pro Taktzyklus viel weniger Arbeit benötigt als ein 3GHz Skylake.)
Noch wichtiger ist, dass der Wirkungsgrad sehr selten 1,0 beträgt. Einige peinlich parallele Aufgaben werden fast linear skaliert (z. B. das Kompilieren mehrerer Quelldateien). Aber die Videokodierung ist nicht so. Für x264 ist die Skalierung bis auf wenige Kerne sehr gut, wird jedoch mit mehr Kernen schlechter. Wenn Sie beispielsweise von 1 auf 2 Kerne wechseln, wird die Geschwindigkeit fast verdoppelt, wenn Sie jedoch von 32 auf 64 Kerne wechseln, wird dies für eine typische 1080p-Codierung viel weniger hilfreich sein. Der Punkt, an dem Geschwindigkeitsplateaus auftreten, hängt von den Einstellungen ab. ( -preset veryslow
Führt mehr Analysen für jeden Frame durch und kann mehr Kerne beschäftigen als -preset fast
).
Bei vielen sehr langsamen Kernen würden die Single-Thread-Teile von x264 zu Engpässen. (z. B. die endgültige CABAC-Bitstream-Codierung. Sie entspricht gzip in h.264 und wird nicht parallelisiert.) Ein paar schnelle Kerne würden das lösen, wenn das Betriebssystem wüsste, wie man es plant (oder wenn x264 die entsprechenden Threads anpinnt) schnelle Kerne).
x265 kann mehr Kerne als x264 nutzen, da es mehr zu analysierende Aufgaben hat und das WPP-Design von h.265 mehr Parallelität beim Codieren und Decodieren ermöglicht. Aber selbst für 1080p ist die Parallelität nicht mehr ausreichend, um sie irgendwann auszunutzen.
Wenn Sie mehrere Videos zum Codieren haben, können Sie mehrere Videos parallel skalieren, mit Ausnahme des Wettbewerbs um gemeinsam genutzte Ressourcen wie L3-Cache-Kapazität und -Bandbreite sowie Speicherbandbreite. Weniger schnellere Kerne könnten mehr Nutzen aus der gleichen Menge an L3-Cache ziehen, da sie nicht an so vielen verschiedenen Teilen des Problems gleichzeitig arbeiten müssten.