Wenn Sie einen neuen Computer kaufen, bestimmen Sie im Allgemeinen 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 mehr Threads oder mehr Kerne 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, wenn alle Kerne die gleiche Taktrate haben?
Warum gibt es keine Varianten mit unterschiedlichen Taktraten? Zum Beispiel zwei "große" Kerne und viele kleine Kerne.
Anstelle von beispielsweise vier Kernen bei 4,0 GHz (dh 4 × 4 GHz ~ 16 GHz Maximum) könnte eine CPU mit zwei Kernen bei beispielsweise 4,0 GHz und vier Kernen bei 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.
Antworten:
Dies ist als heterogenes Multiprozessing ( HMP ) bekannt und wird von Mobilgeräten in großem Umfang eingesetzt. In ARM-basierten Geräten, die big.LITTLE implementieren , enthält der Prozessor Kerne mit unterschiedlichen Leistungs- und Leistungsprofilen. Einige Kerne laufen schnell, verbrauchen jedoch viel Strom (schnellere Architektur und / oder höhere Taktraten), während andere energieeffizient, aber langsam sind ( langsamere Architektur und / oder niedrigere Uhren). Dies ist nützlich, da der Stromverbrauch in der Regel überproportional ansteigt, wenn Sie die Leistung steigern, sobald Sie einen bestimmten Punkt überschritten haben. Die Idee dabei ist, Leistung zu erhalten, wenn Sie sie benötigen, und die Akkulaufzeit, wenn Sie dies nicht tun.
Auf Desktop-Plattformen spielt der Stromverbrauch eine viel geringere Rolle, sodass dies nicht unbedingt erforderlich ist. Die meisten Anwendungen erwarten, dass jeder Kern ähnliche Leistungseigenschaften aufweist, und das Planen von Prozessen für HMP-Systeme ist viel komplexer als das Planen für herkömmliche SMP-Systeme. (Windows 10 unterstützt HMP technisch, ist jedoch hauptsächlich für mobile Geräte gedacht, die ARM big.LITTLE verwenden.)
Außerdem sind die meisten Desktop- und Laptop-Prozessoren heutzutage weder thermisch noch elektrisch auf den Punkt beschränkt, an dem einige Kerne selbst für kurze Bursts schneller als andere laufen müssen. Wir haben im Grunde genommen eine Frage gestellt, wie schnell wir einzelne Kerne herstellen können. Wenn Sie also einige Kerne durch langsamere ersetzen, können die verbleibenden Kerne nicht schneller ausgeführt werden.
Während es einige Desktop-Prozessoren gibt, die einen oder zwei Kerne haben, die schneller als die anderen laufen können, ist diese Fähigkeit derzeit auf bestimmte Intel-Prozessoren der Spitzenklasse (wie Turbo Boost Max Technology 3.0) beschränkt und bringt nur einen geringen Leistungszuwachs mit sich für jene Kerne, die schneller laufen können.
Zwar ist es durchaus möglich, einen herkömmlichen x86-Prozessor mit großen, schnellen Kernen und kleineren, langsameren Kernen zu entwerfen, um für Workloads mit hohem Threading-Aufwand optimiert zu werden, dies würde jedoch zu einer erheblichen Komplexität des Prozessordesigns führen, und es ist unwahrscheinlich, dass Anwendungen dies ordnungsgemäß unterstützen.
Nehmen Sie einen hypothetischen Prozessor mit zwei schnellen Kaby Lake -Kernen (Kern der 7. Generation) und acht langsamen Goldmont- Kernen (Atom-Kernen). Sie hätten insgesamt 10 Kerne, und für diesen Prozessortyp optimierte Workloads mit starkem Threading erzielen möglicherweise einen Leistungs- und Effizienzgewinn gegenüber einem normalen Vierkern- Kaby-Lake- Prozessor. Die verschiedenen Arten von Kernen weisen jedoch sehr unterschiedliche Leistungsniveaus auf, und die langsamen Kerne unterstützen nicht einmal einige der Anweisungen, die die schnellen Kerne unterstützen, wie z . B. AVX . (ARM vermeidet dieses Problem, indem sowohl der große als auch der KLEINE Kern dieselben Anweisungen unterstützen müssen.)
Wiederum gehen die meisten Windows-basierten Multithread-Anwendungen davon aus, dass jeder Kern dieselbe oder nahezu dieselbe Leistung aufweist und dieselben Anweisungen ausführen kann. Daher führt diese Art von Asymmetrie wahrscheinlich zu einer weniger als idealen Leistung, wenn nicht sogar zu Abstürzen Es werden Anweisungen verwendet, die von den langsamen Kernen nicht unterstützt werden. Während Intel die langsamen Kerne so modifizieren könnte, dass erweiterte Anweisungsunterstützung hinzugefügt wird, so dass alle Kerne alle Anweisungen ausführen können, würde dies Probleme mit der Softwareunterstützung für heterogene Prozessoren nicht lösen.
Ein anderer Ansatz für das Anwendungsdesign, der eher dem entspricht, woran Sie in Ihrer Frage wahrscheinlich denken, würde die GPU zur Beschleunigung von hochparallelen Teilen von Anwendungen verwenden. Dies kann mit APIs wie OpenCL und CUDA erfolgen . Bei einer Single-Chip-Lösung fördert AMD die Hardwareunterstützung für die GPU-Beschleunigung in seinen APUs, die eine herkömmliche CPU und eine integrierte Hochleistungs-GPU auf demselben Chip wie die heterogene Systemarchitektur kombinieren , obwohl dies außerhalb der Industrie kaum Akzeptanz gefunden hat von einigen spezialisierten Anwendungen.
quelle
Was Sie fragen, ist, warum aktuelle Systeme symmetrische Mehrfachverarbeitung anstelle von asymmetrischer Mehrfachverarbeitung 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 zusammengefasst, wobei es viel einfacher ist, CPUs unterschiedlicher 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 existierten 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 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.
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 verbleibt, da es eine hardwarenahe Softwareentwicklung auf niedrigem Niveau erfordert, die von Allzweck-Desktop-Betriebssystemen gemieden wird. Dies ist der Grund, warum solche Konfigurationen auf dem PC nicht gefunden werden (außer bei CPU / GPU, wenn wir die Definition ausreichend strecken).
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 Mittelwertbildung. 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.
Einzelne Spannungsregler unterscheiden sich von der Taktrate. Nicht alle Kerne sind identisch - einige sind schneller. Schnellere Kerne erhalten etwas weniger Strom, wodurch der Headroom für schwächere Kerne erhöht wird. Kernspannungsregler werden so niedrig wie möglich eingestellt, um die aktuelle Taktrate beizubehalten. Die Power Control Unit in der CPU regelt die Spannungen und überschreibt bei Bedarf die Betriebssystemanforderungen für Kerne mit unterschiedlicher Qualität. Zusammenfassung: Einzelne Regler sorgen dafür, dass alle Kerne wirtschaftlich mit der gleichen Taktfrequenz arbeiten, nicht für die Einstellung der einzelnen Kerngeschwindigkeiten
quelle
Es ist möglich, dass das Telefon in Ihrer Tasche genau diese Anordnung aufweist - der ARM big.LITTLE funktioniert genau so, wie Sie es beschrieben haben. Es ist nicht nur ein Unterschied in der Taktrate, es können auch ganz andere Kerntypen sein - normalerweise sind die langsamer getakteten sogar "langweilig" (keine Ausführung außerhalb der Reihenfolge und andere CPU-Optimierungen).
Grundsätzlich ist es eine gute Idee, die Batterie zu schonen, hat aber auch ihre eigenen Mängel. Die Buchhaltung zum Verschieben von Dingen zwischen verschiedenen CPUs ist komplizierter, die Kommunikation mit den übrigen Peripheriegeräten ist komplizierter, und um solche Kerne effektiv zu nutzen, muss der Taskplaner äußerst intelligent sein (und häufig richtig raten). .
Die ideale Anordnung besteht darin, nicht zeitkritische Hintergrundaufgaben oder relativ kleine interaktive Aufgaben auf den "kleinen" Kernen auszuführen und die "großen" nur für große, lange Berechnungen aufzuwecken (wobei die zusätzliche Zeit, die für die kleinen Kerne aufgewendet wird, endet essen mehr Batterie) oder für mittelgroße interaktive Aufgaben, bei denen der Benutzer auf den kleinen Kernen Trägheit verspürt.
Der Scheduler verfügt jedoch nur über begrenzte Informationen über die Art der Arbeit, die von jeder Aufgabe ausgeführt wird, und muss auf eine Heuristik (oder externe Informationen, z. B. das Erzwingen einer Affinitätsmaske für eine bestimmte Aufgabe) zurückgreifen, um zu entscheiden, wo sie geplant werden sollen. Wenn dies nicht der Fall ist, verschwenden Sie möglicherweise viel Zeit / Energie, um eine Aufgabe auf einem langsamen Kern auszuführen und eine schlechte Benutzererfahrung zu erzielen, oder verwenden die "großen" Kerne für Aufgaben mit niedriger Priorität und verschwenden somit Energie. sie von Aufgaben zu stehlen, die sie benötigen würden.
Bei einem asymmetrischen Multiprozessorsystem ist die Migration von Aufgaben auf einen anderen Kern normalerweise kostspieliger als bei einem SMP-System. Daher muss der Scheduler im Allgemeinen eine gute anfängliche Schätzung treffen, anstatt zu versuchen, einen zufälligen freien Kern auszuführen und sich zu 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 "intelligent", sodass sie wahrscheinlich mehr verbrauchen als die "dummen" Kerne mit niedrigem Takt. KLEINE Kerne.
quelle
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.
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.
Der Vergleich verschiedener Architekturen ist gefährlich, aber in Ordnung ...
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 machtgierig. 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.
Beispielsweise kann ein einzelner 4-GHz-Kern so viel Strom verbrauchen und so viel Wärme erzeugen 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:
Das klassische Beispiel hierfü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.
Wir tun An Orten, an denen es sinnvoll ist (z. B. bei Mobiltelefonen), haben wir oft 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.
quelle
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?
quelle
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 testen, indem Sie zum Beispiel 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 besonders hohen Boost 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
Die neuen Ryzen-Chips von AMD haben dies wahrscheinlich auch, obwohl es hier nicht ausdrücklich angegeben ist: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -auf-1800x-1700x-und-1700/11
quelle
Auf einem modernen System , das Sie oft tun alle Kerne haben sich mit unterschiedlichen Geschwindigkeiten laufen. 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 die Wärmeleistung des gesamten Pakets ist nicht zu hoch. Bei einem Chip mit einer solchen Funktion ist die Geschwindigkeit, die Sie in der Liste sehen, die höchste Geschwindigkeit, die Sie mit allen Kernen auf einmal erreichen 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 diesem Prinzip identischer Kerne nicht 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 die "kleinen" Kerne näher an ARMs Single-Issue-Roots (in-order, Low-Power-Roots) heranrücken, da sie
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.
quelle
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.)
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
(
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.
quelle
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 . Meistens ist es ziemlich einfach, solche Entscheidungen zu treffen . So etwas wie eine "Quiz-Summer" -Schaltung könnte mit nur zwei Transistoren implementiert werden. Das Problem ist, dass schnelle Entscheidungen getroffen werden, die zuverlässig sindeindeutig ist schwer. Der einzig praktikable Weg, dies zu tun, besteht in vielen Fällen in der 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.
quelle
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 Parallelarbeit 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 Core bei X FLOPS gegen drei Cores bei X / 2 FLOPS zu tauschen. Es lohnt sich jedoch 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 aufzuteilen, 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. Also nur , wenn die Auszahlung ist groß lohnt es sich , den Handel Single-Core - Leistung für Multi-Core - Situationen. 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.
quelle
Der Grund, warum gängige Systeme Kerne mit der gleichen Geschwindigkeit haben, ist ein einfaches mathematisches Problem. Eingabe- und Ausgabe-Timing (mit Optimierungen) basierend auf einem einzelnen Satz von Konstanten (die skalierbar = multiplizierbar mit einer Anzahl von Einheiten sind).
Und jemand sagte hier, mobile Geräte haben Multi-CPU mit unterschiedlichen Geschwindigkeiten. Das stimmt einfach nicht. Es ist keine Zentraleinheit, wenn es nicht die Zentraleinheit ist. Egal was der Hersteller sagt oder nicht. In diesem Fall [keine CPU] handelt es sich nur um ein "Support-Paket".
quelle
Ich glaube nicht, dass das OP die Grundelektronik versteht. Alle Computer benötigen eine Funktion - eine Uhr. Von einer internen Uhr erzeugte Taktzyklen sind das Metronom für die Bewegung aller Daten. Um Synchronität zu erreichen, müssen alle Operationen an eine gemeinsame Uhr gebunden sein. Dies gilt sowohl für die interne Datenausführung auf einem isolierten Computer als auch für ganze Netzwerke.
Wenn Sie Kerne auf einer CPU isolieren möchten, indem Sie sie mit unterschiedlichen Frequenzen ausführen, können Sie mit Sicherheit eine solche Plattform entwerfen. Es müsste jedoch eine Motherboard-Lösung entwickelt werden, die jeden einzelnen Kern mit einer eigenen isolierten Untergruppe von Motherboard-Funktionen verbindet. Ihnen bleiben 4 einzelne Computer anstelle eines Quad-Core-Computers.
Alternativ können Sie, wie eine andere Person bereits betont hat, Ihrem Kernel Code hinzufügen, der die Kernfrequenz individuell anpasst. Dies führt jedoch zu Leistungseinbußen. Sie können Geschwindigkeit oder Energieeffizienz haben - aber Sie können nicht beide haben.
quelle