it-swarm.com.de

Warum haben wir CPUs mit allen Kernen bei gleichen Geschwindigkeiten und nicht Kombinationen unterschiedlicher Geschwindigkeiten?

Wenn Sie einen neuen Computer kaufen, bestimmen Sie in der Regel anhand der erwarteten Arbeitslast, welchen Prozessor Sie kaufen möchten. Die Leistung in Spielen wird in der Regel durch die Geschwindigkeit einzelner Kerne bestimmt, während Anwendungen wie die Videobearbeitung durch die Anzahl der Kerne bestimmt werden.

In Bezug auf das, was auf dem Markt erhältlich ist, scheinen alle CPUs ungefähr die gleiche Geschwindigkeit zu haben, wobei die Hauptunterschiede darin bestehen, dass mehr Threads oder mehr Kerne vorhanden sind.

Zum Beispiel:

  • Intel Core i5-7600K, Grundfrequenz 3,80 GHz, 4 Kerne, 4 Threads
  • Intel Core i7-7700K, Grundfrequenz 4,20 GHz, 4 Kerne, 8 Threads
  • AMD Ryzen 5 1600X, Grundfrequenz 3,60 GHz, 6 Kerne, 12 Threads
  • AMD Ryzen 7 1800X, Grundfrequenz 3,60 GHz, 8 Kerne, 16 Threads

Warum sehen wir dieses Muster der zunehmenden Kerne mit allen Kernen die gleiche Taktfrequenz?

Warum haben wir keine Varianten mit unterschiedlichen Taktraten? Zum Beispiel zwei "große" Kerne und viele kleine Kerne.

Anstelle von beispielsweise vier Kernen mit 4,0 GHz (dh 4 × 4 GHz ~ 16 GHz Maximum) könnte eine CPU mit zwei Kernen mit beispielsweise 4,0 GHz und vier Kernen mit 2 GHz (dh 2 × 4,0 GHz) verwendet werden + 4x2,0 GHz ~ 16 GHz maximal). Wäre die zweite Option bei Workloads mit einem Thread nicht gleich gut, aber möglicherweise besser bei Workloads mit mehreren Threads?

Ich stelle diese Frage allgemein - nicht speziell zu den oben aufgelisteten CPUs oder zu einer bestimmten Arbeitslast. Ich bin nur neugierig, warum das Muster so ist, wie es ist.

79
Jamie

Sie fragen sich, warum derzeitige Systeme Symmetric Multiprocessing und nicht Asymmetric Multiprocessing verwenden.

Asymmetrisches Multiprocessing wurde früher verwendet, als ein Computer riesig war und über mehrere Einheiten verfügte.

Moderne CPUs werden als eine Einheit in einem Chip gegossen, wobei es viel einfacher ist, CPUs verschiedener Typen nicht zu mischen, da sie alle denselben Bus und denselben Arbeitsspeicher verwenden.

Es gibt auch die Einschränkung des Takts, der die CPU-Zyklen und den RAM -Zugriff regelt. Dies wird unmöglich, wenn CPUs mit unterschiedlichen Geschwindigkeiten gemischt werden. Experimentalcomputer ohne Uhr gab es und waren sogar ziemlich schnell, aber die Komplexität moderner Hardware erzwang eine einfachere Architektur.

Beispielsweise können Sandy Bridge- und Ivy Bridge-Kerne nicht gleichzeitig mit unterschiedlichen Geschwindigkeiten ausgeführt werden, da der L3-Cache-Bus mit derselben Taktrate wie die Kerne ausgeführt wird. Um Synchronisierungsprobleme zu vermeiden, müssen beide Kerne mit dieser Geschwindigkeit ausgeführt werden oder geparkt werden/off (Link: Intel Sandy Bridge Architecture Exposed ). (Auch in den Kommentaren unten für Skylake überprüft.)

[EDIT] Einige Leute haben meine Antwort so verstanden, dass es unmöglich ist, CPUs zu mischen. Zu ihrem Vorteil sage ich: Das Mischen unterschiedlicher CPUs ist nicht jenseits der heutigen Technologie, wird aber nicht durchgeführt - "warum nicht" ist die Frage. Wie oben beantwortet, wäre dies technisch kompliziert, daher kostspieliger und für zu wenig oder gar keinen finanziellen Gewinn, was die Hersteller nicht interessiert.

Hier finden Sie Antworten auf einige Kommentare:

Turbo Boost ändert die CPU-Geschwindigkeit, sodass geändert werden kann

Turbo-Boost wird durch Beschleunigen der Uhr und Ändern einiger Multiplikatoren erreicht. Dies ist genau das, was die Leute beim Übertakten tun, mit der Ausnahme, dass die Hardware dies für uns erledigt. Die Uhr wird von Kernen auf derselben CPU gemeinsam genutzt, wodurch die gesamte CPU und alle ihre Kerne gleichmäßig beschleunigt werden.

Einige Telefone haben mehr als eine CPU mit unterschiedlichen Geschwindigkeiten

Solche Telefone haben normalerweise einen benutzerdefinierten Firmware- und Software-Stack, der jeder CPU zugeordnet ist, eher wie zwei separate CPUs (oder wie CPU und GPU), und es fehlt ihnen eine einzige Ansicht des Systemspeichers. Diese Komplexität ist schwer zu programmieren, weshalb Asymmetric Multiprocessing im mobilen Bereich belassen wurde, da eine hardwarenahe Softwareentwicklung auf niedrigem Niveau erforderlich ist, die von Allzweck-Desktop-Betriebssystemen gemieden wird. Dies ist der Grund, warum solche Konfigurationen auf dem PC nicht gefunden werden (außer für CPU/GPU, wenn wir die Definition ausreichend strecken).

Mein Server mit 2x Xeon E5-2670 v3 (12 Kerne mit HT) verfügt derzeit über Kerne mit 1,3 GHz, 1,5 GHz, 1,6 GHz, 2,2 GHz, 2,5 GHz, 2,7 GHz, 2,8 GHz, 2,9 GHz und vielen anderen Geschwindigkeiten.

Ein Core ist entweder aktiv oder inaktiv. Alle gleichzeitig aktiven Kerne laufen mit der gleichen Frequenz. Was Sie sehen, ist nur ein Artefakt des Timings oder der Mittelung. Ich selbst habe auch bemerkt, dass Windows einen Kern für eine lange Zeit nicht parkt, sondern alle Kerne weitaus schneller als die Aktualisierungsrate von Resource Monitor separat parkt/dekomprimiert, aber ich kenne den Grund für dieses Verhalten, das wahrscheinlich dahinter steckt, nicht die obige Bemerkung.

Intel Haswell Prozessoren verfügen über integrierte Spannungsregler, die für jeden Kern individuelle Spannungen und Frequenzen ermöglichen

Einzelne Spannungsregler unterscheiden sich von der Taktrate. Nicht alle Kerne sind identisch - einige sind schneller. Schnellere Kerne erhalten etwas weniger Strom, wodurch der Headroom erhöht wird, der schwächeren Kernen zur Verfügung steht. Kernspannungsregler werden so niedrig wie möglich eingestellt, um die aktuelle Taktrate beizubehalten. Die Power Control Unit in der CPU regelt die Spannungen und setzt Betriebssystemanforderungen außer Kraft, falls dies für Kerne mit unterschiedlicher Qualität erforderlich ist. Zusammenfassung: Einzelne Regler sorgen dafür, dass alle Kerne wirtschaftlich mit der gleichen Taktfrequenz arbeiten, und nicht für die Einstellung der einzelnen Kerngeschwindigkeiten

66
harrymc

Warum gibt es keine Varianten mit unterschiedlichen Taktraten? dh 2 "große" Kerne und viele kleine Kerne.

Es ist möglich, dass das Telefon in Ihrer Tasche genau diese Anordnung aufweist - das ARM big.LITTLE funktioniert genau so, wie Sie es beschrieben haben. Es ist nicht nur ein Unterschied in der Taktfrequenz, es können auch ganz andere Kerntypen sein - normalerweise sind die langsamer getakteten sogar "dümmer" (keine Ausführung außerhalb der Reihenfolge und andere CPU-Optimierungen).

Es ist eine nette Idee, im Wesentlichen Batterie zu sparen, hat aber seine eigenen Mängel; die Buchhaltung Sachen zwischen verschiedenen CPUs zu bewegen ist komplizierter, die Kommunikation mit dem Rest der Peripherie komplizierter ist und, was am wichtigsten ist, solche Kerne effektiv die Taskplaner extrem intelligent sein muss, verwenden (und oft zu „erraten rechts“) .

Die ideale Anordnung ist nicht zeitkritische Hintergrundaufgaben oder relativ kleine interaktive Aufgaben auf dem „kleinen“ Kern und weckt die „großen“ nur für große, lange Berechnungen (wo der zusätzliche Zeitaufwand für die kleinen Kerne laufen endet essen mehr Batterie) oder für mittelgroße interaktive Aufgaben, bei denen der Benutzer auf den kleinen Kernen Trägheit verspürt.

Allerdings hat der Planer nur begrenzte Informationen über die Art der Arbeit jede Aufgabe ausgeführt werden kann, und hat bis zu einem gewissen heuristischen (oder externe Informationen, wie zum Beispiel zwingt eine gewisse Affinität Maske auf eine bestimmte Aufgabe) zurückgreifen, um zu entscheiden, wo sie zu planen. Wenn es dieses Unrecht bekommt, können Sie eine Menge Zeit/Leistung am Ende verschwenden, um eine Aufgabe auf einem langsamen Kern zu laufen, und geben ein schlechtes User Experience, oder mit dem „großen“ Kern für niedrige Priorität Aufgaben und damit Energie verschwenden/sie von Aufgaben zu stehlen, die sie benötigen würden.

Auch auf einem asymmetrischen Multiprocessing-System, es ist in der Regel teurer Aufgaben an einen anderen Kern zu wandern, als es auf einem SMP-System wäre, so der Planer hat in der Regel eine gute erste Schätzung zu machen, anstatt zu versuchen, auf einem zufälligen freien Kern zu laufen und bewegen es später herum.


Stattdessen setzt Intel auf eine geringere Anzahl identischer intelligenter und schneller Kerne mit sehr aggressiver Frequenzskalierung. Wenn die CPU ausgelastet ist, wird sie schnell auf die maximale Taktrate hochgefahren, erledigt die Arbeit so schnell wie möglich und skaliert sie dann herunter, um zum Modus mit dem geringsten Stromverbrauch zurückzukehren. Dies belastet den Scheduler nicht besonders und vermeidet die oben beschriebenen schlechten Szenarien. Natürlich sind diese Kerne auch im Niedrigtaktmodus "schlau", sodass sie wahrscheinlich mehr verbrauchen als die "dummen" Kerne mit niedrigem Takt. KLEINE Kerne.

47
Matteo Italia

Die Leistung in Spielen wird in der Regel durch die Single-Core-Geschwindigkeit bestimmt.

In der Vergangenheit (Spiele der DOS-Ära): Richtig.
In diesen Tagen ist es nicht mehr wahr. Viele moderne Spiele basieren auf Threads und profitieren von mehreren Kernen. Einige Spiele sind mit 4 Kernen bereits recht zufrieden und diese Zahl scheint mit der Zeit zu steigen.

anwendungen wie die Videobearbeitung werden durch die Anzahl der Kerne bestimmt.

Irgendwie wahr.

Anzahl der Kerne * mal Geschwindigkeit des Kerns * Effizienz.
Wenn Sie einen einzelnen identischen Kern mit einem Satz identischer Kerne vergleichen, haben Sie größtenteils recht.

In Bezug auf das, was auf dem Markt erhältlich ist, scheinen alle CPUs ungefähr die gleiche Geschwindigkeit zu haben, wobei die Hauptunterschiede darin bestehen, dass mehr Threads oder mehr Kerne vorhanden sind. Zum Beispiel:

Intel Core i5 7600k, Basisfrequenz 3,80 GHz, 4 Kerne Intel Core i7 7700k, Basisfrequenz 4,20 GHz, 4 Kerne, 8 Threads AMD Ryzen 1600x, Basisfrequenz 3,60 GHz, 6 Kerne, 12 Threads AMD Ryzen 1800x, Basisfrequenz 3,60 GHz, 8 Kerne, 16 Threads

Der Vergleich verschiedener Architekturen ist gefährlich, aber in Ordnung ...

Warum sehen wir dieses Muster der zunehmenden Kerne, wenn alle Kerne die gleiche Taktrate haben?

Zum Teil, weil wir auf eine Barriere gestoßen sind. Je höher die Taktrate, desto mehr Strom wird benötigt und desto mehr Wärme wird erzeugt. Mehr Wärme bedeutete, dass noch mehr Strom benötigt wurde. Wir haben es so versucht, das Ergebnis war das schreckliche Pentium 4. Heiß und macht hungrig. Schwer zu kühlen. Und nicht schneller als der clever designte Pentium-M (ein P4 mit 3,0 GHz war ungefähr so ​​schnell wie ein P-Mob mit 1,7 GHz).

Seitdem haben wir es größtenteils aufgegeben, die Taktfrequenz zu erhöhen, und stattdessen haben wir intelligentere Lösungen entwickelt. Ein Teil davon bestand darin, mehrere Kerne über die reine Taktrate zu verwenden.

Z.B. Ein einzelner 4-GHz-Kern verbraucht möglicherweise so viel Strom und erzeugt so viel Wärme wie drei 2-GHz-Kerne. Wenn Ihre Software mehrere Kerne verwenden kann, ist sie viel schneller.

Das kann nicht jede Software, aber moderne Software kann es in der Regel.

Das beantwortet teilweise, warum wir Chips mit mehreren Kernen haben und warum wir Chips mit einer unterschiedlichen Anzahl von Kernen verkaufen.

In Bezug auf die Taktrate kann ich drei Punkte identifizieren:

  • Low-Power-CPUs sind in vielen Fällen sinnvoll, in denen keine rohe Geschwindigkeit benötigt wird. Z.B. Domänencontroller, NAS Setups, ... Für diese haben wir CPUs mit niedrigerer Frequenz. Manchmal sogar mit mehr Kernen (z. B. 8x langsame CPU macht Sinn für einen Webserver).
  • Im übrigen befinden wir uns normalerweise in der Nähe der Maximalfrequenz, die wir erreichen können, ohne dass unser aktuelles Design zu heiß wird. (sagen wir 3 bis 4 GHz mit aktuellen Designs).
  • Und obendrein binning wir. Nicht alle CPUs werden gleich generiert. Einige CPUs erzielen schlechte oder schlechte Ergebnisse in einem Teil ihrer Chips, haben diese Teile deaktiviert und werden als ein anderes Produkt verkauft.

Das klassische Beispiel dafür war ein 4-Kern-AMD-Chip. Wenn ein Kern defekt war, wurde er deaktiviert und als 3-Kern-Chip verkauft. Wenn die Nachfrage nach diesen 3 Kernen hoch war, wurden sogar 4 Kerne als 3-Kern-Version verkauft, und mit dem richtigen Software-Hack konnten Sie den 4. Kern wieder aktivieren.

Dies hängt nicht nur von der Anzahl der Kerne ab, sondern wirkt sich auch auf die Geschwindigkeit aus. Einige Chips laufen heißer als andere. Zu heiß und als CPU mit niedrigerer Geschwindigkeit zu verkaufen (wobei niedrigere Frequenz auch weniger erzeugte Wärme bedeutet).

Und dann gibt es Produktion und Marketing, und das bringt es noch mehr durcheinander.

Warum gibt es keine Varianten mit unterschiedlichen Taktraten? dh 2 "große" Kerne und viele kleine Kerne.

Wir tun An Orten, an denen dies sinnvoll ist (z. B. bei Mobiltelefonen), haben wir häufig einen SoC mit einer langsamen Kern-CPU (geringer Stromverbrauch) und einigen schnelleren Kernen. In einem typischen Desktop-PC ist dies jedoch nicht der Fall. Dies würde das Setup viel komplexer und teurer machen und es gibt keinen Akku, der entladen werden müsste.

14
Hennes

Warum gibt es keine Varianten mit unterschiedlichen Taktraten? Zum Beispiel zwei "große" Kerne und viele kleine Kerne.

Wenn wir uns nicht sehr um den Stromverbrauch sorgen, wäre es nicht sinnvoll, alle mit einem zusätzlichen Kern verbundenen Kosten in Kauf zu nehmen und nicht so viel Leistung wie möglich aus diesem Kern herauszuholen. Die maximale Taktrate wird weitgehend durch den Herstellungsprozess bestimmt, und der gesamte Chip wird durch denselben Prozess hergestellt. Was wäre der Vorteil, wenn einige der Kerne langsamer wären als der unterstützte Herstellungsprozess?

Wir haben bereits Kerne, die langsamer werden können, um Strom zu sparen. Was wäre der Punkt, um ihre Spitzenleistung zu begrenzen?

10
David Schwartz

Warum gibt es keine Varianten mit unterschiedlichen Taktraten? Zum Beispiel zwei "große" Kerne und viele kleine Kerne.

Nominale Taktraten bedeuten für die meisten größeren Prozessoren heutzutage nicht mehr viel, da sie alle die Möglichkeit haben, sich selbst auf und ab zu takten. Sie fragen sich, ob sie verschiedene Kerne unabhängig voneinander auf und ab takten können.

Ich bin ein bisschen überrascht von vielen anderen Antworten. Moderne Prozessoren können und tun dies. Sie können dies zum Beispiel testen, indem Sie CPU-Z auf einem Smartphone öffnen. Mein Google Pixel ist perfekt in der Lage, verschiedene Kerne mit unterschiedlichen Geschwindigkeiten auszuführen:

Es ist nominell 2,15 GHz, aber zwei Kerne sind bei 1,593 GHz und zwei sind bei 1,132 GHz.

Tatsächlich haben Mainstream-Intel-CPUs seit 2009 die Logik, einzelne Kerne höher zu takten und gleichzeitig andere Kerne zu übertakten, um eine bessere Single-Core-Leistung bei Einhaltung des TDP-Budgets zu erzielen: http://www.anandtech.com/show/2832/4

Bei neueren Intel-Prozessoren mit "Favored Core" (ein Intel-Marketingbegriff) wird jeder Kern werkseitig charakterisiert, wobei die schnellsten Kerne in der Lage sind, einen zusätzlichen Anstieg zu erzielen: http://www.anandtech.com/show/11550/the -intel-skylakex-review-core-i9-7900x-i7-7820x-und-i7-7800x-getestet/7

Die Bulldozer-Chips von AMD hatten eine primitive Version davon: http://www.anandtech.com/show/4955/the-bulldozer-review-AMD-fx8150-tested/4

AMDs neue Ryzen-Chips wahrscheinlich haben dies auch, obwohl es hier nicht explizit angegeben ist: http://www.anandtech.com/show/11170/the-AMD-zen-and-ryzen-7 -Rückblick-auf-1800x-1700x-und-1700/11

9
Grant Wu

Auf einem modernen System laufen häufig alle Kerne do mit unterschiedlichen Geschwindigkeiten. Durch das Herunterfahren eines nicht stark genutzten Kerns werden Stromverbrauch und Wärmeleistung gesenkt, was gut ist. Durch Funktionen wie "Turbo Boost" können ein oder zwei Kerne erheblich schneller ausgeführt werden, solange die anderen Kerne im Leerlauf sind, und somit der Stromverbrauch und Heizleistung des gesamten Pakets nicht zu hoch. Bei einem Chip mit einer solchen Funktion ist die in der Liste angezeigte Geschwindigkeit die höchste Geschwindigkeit, die Sie mit allen Kernen gleichzeitig erzielen können. Und warum sollten alle Kerne die gleiche Höchstgeschwindigkeit haben? Nun, sie haben alle ein identisches Design auf demselben physischen Chip, der mit demselben Halbleiterprozess erstellt wurde. Warum sollten sie also unterschiedlich sein?

Der Grund dafür, dass alle Kerne identisch sind, besteht darin, dass es für einen Thread, der auf einem Kern an einem Punkt ausgeführt wird, am einfachsten ist, an einem anderen Punkt mit der Ausführung auf einem anderen Kern zu beginnen. Wie an anderer Stelle erwähnt, gibt es häufig verwendete Chips, die nicht diesem Prinzip identischer Kerne folgen, nämlich die ARM "big.LITTLE" -CPUs. Obwohl in meinen Augen der wichtigste Unterschied zwischen den "großen" und "kleinen" Kernen nicht die Taktgeschwindigkeit ist (die "großen" Kerne sind tendenziell schicker, breiter und spekulativer, da sie mehr Anweisungen pro Takt erhalten, was höhere Kosten verursacht) Stromverbrauch, während sich die "kleinen" Kerne näher an die Single-Issue-Roots von ARM (in-order, low-power) annähern, da sie unterschiedliche Designs auf demselben Chip haben, weisen sie im Allgemeinen auch unterschiedliche maximale Taktraten auf.

Und um noch weiter in den Bereich des heterogenen Rechnens vorzudringen, werden häufig auch "CPU" - und "GPU" -Kerne auf demselben Chip integriert. Diese haben völlig unterschiedliche Designs, führen unterschiedliche Befehlssätze aus, werden unterschiedlich angesprochen und im Allgemeinen auch unterschiedlich getaktet.

8
hobbs

Schnelle Single-Thread-Leistung und sehr hoher Multi-Thread-Durchsatz sind genau das, was Sie mit einer CPU wie Intels Xeon E5-2699v4erreichen.

Es ist ein 22-Kern Broadwell. Die anhaltende Taktrate beträgt 2,2 GHz, wobei alle Kerne aktiv sind (z. B. Videocodierung), aber der maximale Single-Core-Turbo beträgt 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 Task mit nur wenigen Threads ausführen, können mit demselben Strombudget einige Kerne auf 3,6 GHz aufgeladen werden. (Die geringere Single-Core-Speicher- und L3-Cache-Bandbreite in einem großen Xeon - bedeutet, dass es möglicherweise nicht so schnell läuft wie ein Desktop-Quad-Core mit 3,6 GHz. Ein einzelner Core in einer Desktop-Intel-CPU kann eine viel mehr von der gesamten Speicherbandbreite.)

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 aufweist und sie sehr hohe Leistungsbudgets haben. Auch begeisterte Desktop-CPUs zeigen diesen Effekt spürbar: Intels Skylake-X i9-7900X ist ein 10c20t-Teil mit Basis 3,3 GHz, maximaler Turbo 4,5 GHz . Das ist viel mehr Headroom für einen Single-Core-Turbo als für einen 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 darüber, was CPUs effizient leisten können, und einem 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 Kerne in der richtigen Reihenfolge, 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 einen typischen Desktop/Laptop nicht wert, zusätzliches Silizium für einen besonders langsamen Kern mit sehr geringem Stromverbrauch auszugeben Verwendungszweck.)


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 ist nicht das Gleiche wie die Taktrate, da ein 3GHz Pentium4 pro Taktzyklus viel weniger Arbeit erhält 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 Videokodierung ist nicht so. Für x264 ist die Skalierung bis auf wenige Kerne sehr gut, wird jedoch mit mehr Kernen schlechter. z.B. Wenn Sie von 1 auf 2 Kerne wechseln, wird die Geschwindigkeit fast verdoppelt, wenn Sie jedoch von 32 auf 64 Kerne wechseln, wird dies bei einer typischen 1080p-Codierung viel weniger helfen. 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. (zB 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 es dies plant (oder wenn x264 die entsprechenden Threads anheftet) schnelle Kerne).

x265 kann mehr Kerne als x264 nutzen, da es mehr zu analysierende Aufgaben hat und das WPP-Design von h.265 mehr Codierungs- und Decodierungsparallelität 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.

7
Peter Cordes

Während es möglich ist, Computer mit unterschiedlichen Teilen zu entwerfen, die mit unterschiedlichen unabhängigen Geschwindigkeiten ausgeführt werden, muss bei der Zuteilung von Ressourcen häufig schnell entschieden werden, welche Anforderung zuerst bearbeitet werden soll, was wiederum erfordert, dass bekannt ist, ob eine andere Anforderung möglicherweise früh genug eingegangen ist, um Priorität zu erlangen . Solche Entscheidungen zu treffen, meistens , ist ziemlich einfach. So etwas wie eine "Quiz-Summer" -Schaltung könnte mit nur zwei Transistoren implementiert werden. Das Problem ist, dass es schwierig ist, schnelle Entscheidungen zu treffen, die zuverlässig eindeutig sind. Der einzig praktikable Weg, dies zu tun, ist in vielen Fällen die Verwendung einer Entscheidung, die als "Synchronisierer" bezeichnet wird, wodurch Mehrdeutigkeiten vermieden werden können, jedoch eine Verzögerung von zwei Zyklen eingeführt wird. Man könnte einen Caching-Controller entwerfen, der zuverlässig zwischen zwei Systemen mit getrennten Takten vermittelt, wenn man bereit wäre, bei jeder Operation eine Verzögerung von zwei Zyklen zu tolerieren, um zu bestimmen, wer die Entscheidung gewonnen hat. Ein solcher Ansatz wäre jedoch weniger nützlich, wenn ein Cache-Speicher bei Nichtbeachtung von Konflikten sofort auf Anforderungen reagieren soll, da selbst unbestrittene Anforderungen immer noch eine Verzögerung von zwei Zyklen aufweisen würden.

Wenn Sie alles von einer gemeinsamen Uhr aus betreiben, müssen Sie nicht synchronisieren. Dadurch entfällt jedes Mal, wenn Informationen oder Steuersignale zwischen Uhrendomänen ausgetauscht werden müssen, eine Verzögerung von zwei Kommunikationszyklen.

4
supercat

Desktop-Computer tun dies bereits.

Sie haben eine (mehrere) CPU (s) mit 1-72 gleichzeitig aktiven Threads und eine (mehrere) GPU (s) mit 16-7168 Recheneinheiten.

Grafik ist ein Beispiel für eine Aufgabe, bei der wir festgestellt haben, dass massive parallele Arbeit effizient ist. Die GPU ist für die Art von Operationen optimiert, die wir für Grafiken ausführen möchten (dies ist jedoch nicht darauf beschränkt).

Dies ist ein Computer mit ein paar großen Kernen und vielen kleinen Kernen.

Im Allgemeinen lohnt es sich nicht, einen Kern bei X FLOPS gegen drei Kerne bei X/2 FLOPS zu tauschen. Aber es lohnt sich sehr, einen Kern bei X FLOPS gegen hundert Kerne bei X/5 FLOPS zu tauschen.

Bei der Programmierung hierfür generieren Sie sehr unterschiedlichen Code für die CPU und für die GPU. Es wird viel Arbeit geleistet, um die Arbeitslast zu teilen, sodass die GPU Aufgaben erhält, die am besten auf der GPU erledigt werden, und die CPU Aufgaben erhält, die am besten auf der CPU erledigt werden.

Es ist wohl viel einfacher, Code für eine CPU zu schreiben, weil es schwieriger ist, massiv parallelen Code zu finden. Nur wenn die Auszahlung groß ist, lohnt es sich, Single-Core-Performance für Multi-Core-Situationen zu tauschen. GPUs zahlen sich bei richtiger Verwendung aus.

Mobilgeräte tun dies aus einem anderen Grund. Sie haben stromsparende Kerne, die deutlich langsamer sind, aber auch deutlich weniger Strom pro Recheneinheit verbrauchen. Auf diese Weise können sie die Akkulaufzeit erheblich verlängern, wenn sie keine CPU-intensiven Aufgaben ausführen. Hier haben wir eine andere Art von "großer Auszahlung"; Nicht Leistung, sondern Energieeffizienz. Es erfordert noch viel Arbeit des Betriebssystems und möglicherweise des Programmierers, damit dies richtig funktioniert. nur die große Auszahlung hat es sich gelohnt.

4
Yakk