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

25607
Jamie

Wenn Sie einen neuen Computer kaufen, legen Sie im Allgemeinen fest, welcher Prozessor entsprechend Ihrer erwarteten Arbeitslast zu kaufen ist. Die Leistung in Spielen wird in der Regel von der Geschwindigkeit der einzelnen Kerne bestimmt, wohingegen Anwendungen wie die Videobearbeitung von der 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 also dieses Muster zunehmender 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.

Zum Beispiel, statt vier Kernen bei 4,0 GHz (dh maximal 4 × 4 GHz ~ 16 GHz). Wie wäre es mit einer CPU mit zwei Kernen, die bei 4,0 GHz laufen, und vier Kernen bei 2 GHz (dh 2 × 4,0 GHz) + 4 × 2,0 GHz bis maximal 16 GHz). Wäre die zweite Option nicht gleichermaßen für Single-Threaded-Workloads geeignet, wäre sie möglicherweise besser für Multi-Threaded-Workloads?

Ich stelle diese Frage als einen allgemeinen Punkt - nicht speziell zu den oben aufgeführten CPUs oder zu einer bestimmten Arbeitslast. Ich bin nur neugierig, warum das Muster so ist wie es ist.

79
Es gibt viele Handys mit schnellen und langsamen Kernen, und bei fast allen modernen Multicore-Servern ist der CPU-Kern abhängig von der Last taktunabhängig. Einige Kerne schalten sogar Kerne ab, wenn sie nicht verwendet werden. Auf einem Universalcomputer, bei dem Sie nicht auf Energieeinsparung ausgelegt sind, jedoch nur zwei Arten von Prozessorkernen (CPU und GPU) aufweisen, wird die Plattform nur flexibler. eckes vor 6 Jahren 15
Bevor der Thread-Scheduler eine intelligente Entscheidung für den zu verwendenden Kern treffen kann, muss er feststellen, ob ein Prozess mehrere Kerne nutzen kann. Dies zu tun wäre sehr problematisch und fehleranfällig. Insbesondere wenn sich dies dynamisch an die Anforderungen der Anwendung anpassen kann. In vielen Fällen muss der Scheduler eine suboptimale Auswahl treffen, wenn der beste Kern verwendet wird. Identische Kerne machen die Sache einfacher, bieten maximale Flexibilität und haben im Allgemeinen die beste Leistung. LMiller7 vor 6 Jahren 5
Man kann nicht sagen, dass Taktraten in der von Ihnen beschriebenen Weise additiv sind. Wenn vier Kerne mit 4 GHz betrieben werden, bedeutet dies nicht, dass Sie insgesamt 16 GHz haben. Diese 16 GHz können auch in 8 Prozessoren mit 2 GHz oder 16 Prozessoren mit 1 GHz aufgeteilt werden. Bob Jarvis vor 6 Jahren 33
Auf ähnliche Weise sollten Sie bedenken, wie [Dreadnought-Schlachtschiffe] (https://en.wikipedia.org/wiki/Dreadnought), die eine einheitliche Hauptbatterie hatten, die [Vor-Dreadnought-Schlachtschiffe] (https: //en.wikipedia) ersetzten .org / wiki / Pre-dreadnought_battleship) mit einer Hauptbatterie der größten Geschütze, einer Zwischenbatterie, die kleiner war, und einer Anti-Torpedobootsbatterie, die noch kleiner war. Bob Jarvis vor 6 Jahren 1
4 Kerne bei 4 GHz bedeutet nicht, dass sie mit 16 GHz läuft. Parallelverarbeitung funktioniert nicht so. Und AFAIK AMD unterstützt sehr lange unterschiedliche Taktraten für verschiedene Kerne phuclv vor 6 Jahren 0
Die Prämisse der Frage ist einfach falsch. Moderne CPUs können Kerne mit unterschiedlichen Geschwindigkeiten ausführen phuclv vor 6 Jahren 16
Gewählt, um wieder zu öffnen. Auch sind big.LITTLE-Designs in ARM-SoCs üblich, bei denen die kleineren Kerne ein völlig anderes Design (manchmal andere Architektur) haben, niedriger getaktet sind und viel energieeffizienter sind, während die großen Kerne verwendet werden, während der Bildschirm für Apps in der angezeigt wird Vordergrund. Horn OK Please vor 6 Jahren 1
[Multi-Core-CPU: Kann ich sagen, dass ich eine 3 × 2,1 GHz = 6,3 GHz-CPU habe?] (Https://superuser.com/q/423596/241386), [Wie berechne ich die Taktrate in Multi-Core-Prozessoren? ] (https://superuser.com/q/167131/241386), phuclv vor 6 Jahren 4
Siehe die Diskussionen hier [big.LITTLE x86: Warum nicht?] (https://techreport.com/forums/viewtopic.php?t=115945), [Intel und das big.LITTLE-Konzept] (https: // forums.). anandtech.com/threads/intel-and-the-big-little-concept.2279950/) phuclv vor 6 Jahren 2
@ LưuVĩnhPhúc Natürlich funktioniert die Berechnung nicht so - wenn sie die Frage mit Gleichgestellten vergleichen würde, ist dies buchstäblich der gesamte Punkt der Frage. Das Beispiel dient einfach zu Vergleichszwecken. CPUs, die in der Lage sind, unterschiedliche Kerne mit unterschiedlichen Geschwindigkeiten zu betreiben, würden auf jede Kombination von Kernen zutreffen.- Trotzdem vielen Dank für die Links. Jamie vor 6 Jahren 0
Ein weiterer wichtiger Punkt ist, dass die meisten modernen CPUs von Intel und AMD die Taktrate je nach Aufgabe dynamisch skalieren können. Mein 4790K sitzt normalerweise bei etwa 2 GHz, wenn ich nur im Internet surfe, aber beim Spielen bis zu 4 GHz +. SGR vor 6 Jahren 1
@ LưuVĩnhPhúc intel ist es auch seit langem möglich, Kerne mit unterschiedlichen Taktraten zu betreiben. Baldrickk vor 6 Jahren 0
@Baldrickk AMD sind offensichtlicher, besonders bei FX und besonders bei nicht gesperrten "latenten" Kernen. Diese wurden aus einem bestimmten Grund gesperrt und müssen in der Regel gehobelt werden. mckenzm vor 6 Jahren 0
@ BobJarvis: 16 GHz lassen sich natürlich nicht genau in 8 Prozessoren von 2 GHz unterteilen, aber kommt das nicht ganz nah? im Gegensatz zur entgegengesetzten Richtung? Mehrdad vor 6 Jahren 0
Heutzutage haben die Leute solche Probleme bei der Interpretation dessen, was "Intel Core i5-7600K, Grundfrequenz 3,80 GHz, 4 Kerne, 4 Threads" bedeutet. Können Sie sich vorstellen, dass Sie eine Liste von Tech-Jargon über * jeden einzelnen Kern im Paket * hätten? Es wäre Marketing-Wahnsinn, und alle außer True Nerds wären verwirrt. Intel hat 30 Jahre lang versucht, die Chipkennzeichnungen den Verbrauchern zugänglich zu machen, weshalb sie kürzlich (etwas) zur i3 / i5 / i7-Kennzeichnung wechselten, weil die Leute sonst nicht wussten, ob ein bestimmter Prozess "schnell" oder "langsam" war ". Christopher Schultz vor 6 Jahren 0

12 Antworten auf die Frage

81
bwDraco

Dies wird als heterogenes Multiprocessing ( HMP ) bezeichnet und von mobilen Geräten weit verbreitet. 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 Takte), während andere energieeffizient, aber langsam sind ( langsamere Architektur und / oder niedrigere Uhren). Dies ist nützlich, da der Stromverbrauch tendenziell überproportional steigt, wenn Sie die Leistung erhöhen, sobald Sie einen bestimmten Punkt überschritten haben. Die Idee hier ist, Leistung zu erhalten, wenn Sie sie brauchen, und Akkulaufzeit, wenn Sie dies nicht tun.

Auf Desktop-Plattformen ist der Stromverbrauch weit weniger ein Problem, daher ist dies nicht unbedingt erforderlich. Die meisten Anwendungen erwarten von jedem Kern ähnliche Leistungsmerkmale, und die Planungsprozesse für HMP-Systeme sind wesentlich komplexer als die Planungen für herkömmliche SMP-Systeme. (Windows 10 bietet technisch gesehen Unterstützung für HMP, 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 nicht thermisch oder elektrisch auf den Punkt beschränkt, an dem einige Kerne selbst für kurze Ausbrüche schneller laufen müssen als andere. Wir haben im Grunde genommen eine Wand gegen die Geschwindigkeit, mit der wir einzelne Kerne herstellen können. Wenn einige Kerne durch langsamere ersetzt werden, können die verbleibenden Kerne nicht schneller laufen.

Zwar gibt es einige Desktop-Prozessoren, die über einen oder zwei Kerne verfügen, die schneller laufen können als die anderen, jedoch ist diese Funktion derzeit auf bestimmte sehr hochwertige Intel-Prozessoren (wie Turbo Boost Max Technology 3.0) beschränkt und bringt nur einen geringfügigen Leistungsgewinn mit sich für jene Kerne, die schneller laufen können.


Zwar ist es durchaus möglich, einen traditionellen x86-Prozessor mit sowohl großen, schnellen als auch kleineren, langsameren Kernen zu entwickeln, um für stark ausgelastete Workloads zu optimieren. Dies würde jedoch das Prozessordesign erheblich komplizieren, und Anwendungen werden es wahrscheinlich nicht richtig unterstützen.

Nehmen Sie einen hypothetischen Prozessor mit zwei schnellen Kaby Lake -Kernen (7. Generation) und acht langsamen Goldmont- Kernen (Atom). Sie hätten insgesamt 10 Kerne, und für diese Art von Prozessor optimierte Workloads mit starkem Threading könnten im Vergleich zu einem normalen Kaby Lake- Prozessor mit vier Kernen einen Leistungs- und Effizienzgewinn erzielen . Die verschiedenen Arten von Kernen weisen jedoch sehr unterschiedliche Leistungsstufen auf, und die langsamen Kerne unterstützen nicht einmal einige der Anweisungen, die von den schnellen Kernen unterstützt werden, wie beispielsweise AVX . (ARM vermeidet dieses Problem, indem sowohl der große als auch der kleine Kern dazu aufgefordert werden, dieselben Anweisungen zu unterstützen.)

Bei den meisten Windows-basierten Multithread-Anwendungen wird davon ausgegangen, dass jeder Kern das gleiche oder nahezu das gleiche Leistungsniveau aufweist und dieselben Anweisungen ausführen kann. Diese Art von Asymmetrie führt wahrscheinlich zu einer weniger als idealen Leistung, möglicherweise sogar zu Abstürzen es verwendet Anweisungen, die nicht von den langsamen Kernen unterstützt werden. Intel könnte zwar die langsamen Kerne ändern, um erweiterte Befehlsunterstützung hinzuzufügen, sodass alle Kerne alle Anweisungen ausführen können. Dies würde jedoch keine Probleme mit der Softwareunterstützung für heterogene Prozessoren lösen.

Ein anderer Ansatz beim Anwendungsdesign, der näher an dem liegt, worüber Sie wahrscheinlich in Ihrer Frage nachdenken, würde die GPU zur Beschleunigung von stark parallelen Anteilen von Anwendungen verwenden. Dies kann mithilfe von APIs wie OpenCL und CUDA erfolgen . Als Single-Chip-Lösung fördert AMD die Hardware-Unterstü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 Branche nicht viel Aufsehen erregte von einigen spezialisierten Anwendungen.

Windows hat bereits eine Vorstellung von "Apps", "Hintergrundprozessen" und "Windows-Prozessen". Das gilt also nicht für eine Hardware-Ebene? Jamie vor 6 Jahren 1
@ Jamie Ein "Hintergrund" -Prozess erhält kleinere Zeitscheiben und wird eher unterbrochen. In gewissem Umfang berücksichtigt Windows 10 HMP-Systeme, obwohl noch nicht genau bekannt ist, wie. Bob vor 6 Jahren 2
Also denke ich, dass @bwDraco nach dem edit so ziemlich alles für mich beantwortet hat. Wenn es einen 'gemischten' Prozessor gäbe, könnte dieser Befehl den gleichen Befehlssatz leicht unterstützen, wenn er auf diese Weise erstellt wurde. Daher benötigen wir eine Art Scheduler, um den richtigen Kern auszuwählen. Ich denke, dass die Anwendungen, die von vielen kleinen Kernen profitieren, wahrscheinlich noch mehr von vielen, vielen wirklich kleinen Kernen profitieren würden. Wir haben also eine GPU-Beschleunigung. Jamie vor 6 Jahren 0
Beachten Sie, dass der GPU-Fall nicht mit 2 großen Kernen gegen 10 kleine und langsame Kerne handelt, sondern das (sehr grobe) Äquivalent des Handels mit 2 großen Kernen für 1024 kleine und langsame Kerne. Massiv parallel, nicht nur etwas paralleler. Yakk vor 6 Jahren 3
Bei dieser Frage geht es um CPUs, aber ich denke, für die implizierte Frage ist es wichtig zu wissen, dass Computer dies bereits auf dem Motherboard tun. Während es nicht sinnvoll ist, die CPU mit unterschiedlichen Geschwindigkeiten zu betreiben, anstatt nur mit den schnellsten verfügbaren, laufen verschiedene Chips und Busse auf dem Motherboard bereits mit niedrigeren Taktraten, die für einen Kompromiss zwischen Materialkosten und Entwicklung gegenüber Leistung ausgelegt sind. JFA vor 6 Jahren 0
Intel könnte wahrscheinlich einen Goldmont-Kern dazu bringen, AVX2-Anweisungen ohne viel zusätzliches Silizium auszuführen (langsam, indem er zu Paaren von 128b-Ops ​​decodiert wird). Knight's Landing (Xeon Phi) verfügt über Kerne von Silvermont mit AVX512. Es ist also nicht so, dass es nicht unmöglich ist, Silvermont zu modifizieren. KNL fügt jedoch eine Out-of-Order-Ausführung für Vektoranweisungen hinzu, während normales Silber / Goldmont nur OOO für Ganzzahl macht, so dass sie es wahrscheinlich näher an Goldmont als an KNL entwerfen möchten. Inn Sets sind sowieso kein wirkliches Problem. Betriebssystemunterstützung und ein kleiner Vorteil sind die wahren Hindernisse, um den Die-Bereich für einen stromsparenden Kern auszugeben. Peter Cordes vor 6 Jahren 4
Wenn ich mir die individuelle Kerngeschwindigkeit anschaue, kann ich sehen, dass einige Kerne schneller laufen als andere, aber die Höchstgeschwindigkeit ist für alle Kerne gleich. Suici Doga vor 6 Jahren 0
66
harrymc

Sie fragen nach dem Grund, warum derzeitige Systeme symmetrisches Multiprocessing anstelle von asymmetrischem Multiprocessing verwenden .

Asymmetrisches Multiprocessing wurde früher eingesetzt, als ein Computer riesig war und mehrere Einheiten enthielt.

Moderne CPUs werden als eine Einheit in einem Chip gegossen, wobei es viel einfacher ist, CPUs verschiedener Typen nicht zu mischen, da sie alle den gleichen Bus und RAM haben.

Es gibt auch die Beschränkung der Uhr, die die CPU-Zyklen und den RAM-Zugriff steuert. Dies wird beim Mischen von CPUs unterschiedlicher Geschwindigkeit unmöglich. Taktlose Experimentalcomputer existierten und waren sogar ziemlich schnell, aber die Komplexität moderner Hardware erforderte eine einfachere Architektur.

Zum Beispiel können Sandy-Bridge- und Ivy-Bridge-Kerne nicht gleichzeitig mit unterschiedlichen Geschwindigkeiten ausgeführt werden, da der L3-Cache-Bus mit der gleichen Taktrate wie die Kerne läuft. Um Synchronisierungsprobleme zu vermeiden, müssen sie alle entweder mit dieser Geschwindigkeit arbeiten oder parken / ausschalten (Link: Intels Sandy Bridge Architecture Exposed ). (Auch in den Kommentaren unten für Skylake verifiziert.)

[EDIT] Einige Leute haben meine Antwort falsch verstanden mit der Aussage, dass das Mischen von CPUs unmöglich ist. Ich erkläre zu ihrem Vorteil: Das Mischen unterschiedlicher CPUs ist nicht über die heutige Technologie hinaus, wird aber nicht getan - "warum nicht" ist die Frage. Wie oben erwähnt, wäre dies technisch kompliziert, daher kostspieliger und für einen zu geringen oder keinen finanziellen Gewinn, so dass die Hersteller nicht interessiert sind.

Hier sind Antworten auf einige Kommentare:

Turbo - Boost ändert CPU - Geschwindigkeiten, so dass sie können geändert werden

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

Einige Telefone verfügen über mehr als eine CPU mit unterschiedlichen Geschwindigkeiten

Solche Telefone verfügen normalerweise über einen benutzerdefinierten Firmware- und Software-Stack, der jeder CPU zugeordnet ist, eher wie zwei getrennte CPUs (oder CPU und GPU), und es fehlt ihnen eine einzige Ansicht des Systemspeichers. Diese Komplexität ist schwer zu programmieren, weshalb die asymmetrische Multiprocessing-Technologie im mobilen Bereich verbleibt, da sie eine Hardware-nahe Hardware-Entwicklung erfordert, die von den Desktop-Betriebssystemen allgemeiner Art gemieden wird. Dies ist der Grund dafür, dass solche Konfigurationen im PC nicht gefunden werden (mit Ausnahme von CPU / GPU, wenn die Definition ausreichend erweitert wird).

Mein Server mit 2x Xeon E5-2670 v3 (12 Kerne mit HT) verfügt derzeit über Kerne bei 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 Kern ist entweder aktiv oder im Leerlauf. Alle gleichzeitig aktiven Kerne laufen auf derselben Frequenz. Was Sie sehen, ist nur ein Artefakt von Timing oder Mittelwertbildung. Ich habe auch selbst bemerkt, dass Windows keinen Kern lange Zeit parken kann, sondern alle Kerne getrennt voneinander weit schneller als die Aktualisierungsrate von Resource Monitor parkt / entparken kann, aber ich weiß nicht, warum dieses Verhalten wahrscheinlich dahintersteckt 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 - manche sind schneller. Schnellere Kerne erhalten etwas weniger Leistung, wodurch die Headroom zur Verfügung gestellt wird, um die Leistung zu verbessern, die schwächeren Kernen zugeteilt wird. Kernspannungsregler werden so niedrig wie möglich eingestellt, um die aktuelle Taktrate aufrechtzuerhalten. Die Power Control Unit in der CPU regelt Spannungen und überschreibt OS-Anforderungen, wenn dies für Kerne mit unterschiedlichen Qualitätsanforderungen erforderlich ist. Zusammenfassung: Einzelne Regler dienen dazu, dass alle Kerne bei der gleichen Taktrate wirtschaftlich arbeiten, und nicht zur Einstellung einzelner Kerngeschwindigkeiten

Ah. mehr Mshorter und auf den Punkt. +1 Hennes vor 6 Jahren 3
Meines Wissens ist es so, dass ein Kern, der eine Geschwindigkeit von 4,0 GHz hat, möglicherweise 40 * 100 MHz ausfällt. Wenn Sie also einen Kern bei 4,0 GHz und einen anderen Kern bei 2,0 GHz hätten, könnten sie nicht beide als 40 * 100 MHz und 20 * 100 MHz kaputt gehen? Ist es das, was Sie mit der "Uhr" meinen? Ist das also ein Problem? Das Argument, dass es einfacher ist, einen Würfel zu werfen, ist nur dann ein Argument, wenn der Guss von zwei unterschiedlich großen Kernen nicht ausreicht. Jamie vor 6 Jahren 0
Die Taktimpulse bestimmen alles, was die CPU tut, da Daten in Schritten fließen, die von der Uhr gesteuert werden. Die Uhr dient nicht zum Ermitteln der Zeit, sondern zum Markieren der Zeit zwischen dem Eintreten und Verlassen von Teilschaltungen, so dass Berechnungen von einem Schritt zum anderen sowie RAM-Zugriffsstufen durchlaufen werden. Die Uhr wird für die Synchronisation verwendet, und es wäre schwierig, zwei CPUs zu synchronisieren, die nicht das gleiche Timing zwischen Schritten oder gar dieselben Schritte haben. harrymc vor 6 Jahren 3
@ harrymc Es gibt Synchronisierblöcke, die es perfekt verwalten. DRAM läuft langsamer als die Kerngeschwindigkeit, und Intel-Kerne können auf demselben Chip mit unterschiedlichen Geschwindigkeiten laufen. pjc50 vor 6 Jahren 6
@Jamie die Taktmultiplikation (siehe "PLL") ist in der Regel "multipliziert mit X dividiert durch Y", wobei X auf einige Auswahlmöglichkeiten beschränkt ist und Y breiter variiert werden kann. Sie können einen Kern bei 4 GHz und einen anderen bei 2 GHz oder sogar 3,9 GHz haben, wenn Sie möchten, aber für das Überschreiten von Taktdomänen sind einige Zyklen erforderlich. pjc50 vor 6 Jahren 1
@ pjc50: Synchronisationsblöcke usw. zwischen CPUs führen zu einer viel zu komplizierten und kostspieligen Architektur. Jeder Preisvorteil, der bei der Erstellung einer solchen CPU der "Mittelklasse" erzielt wird, geht auf diese Weise verloren, sodass es keinen Sinn macht. Darüber hinaus sind die meisten Betriebssysteme heutzutage einzigartig auf symmetrische Multiprocessing ausgerichtet. harrymc vor 6 Jahren 1
Prozessoren der Intel Core-Serie laufen ständig auf demselben Chip mit unterschiedlichen Geschwindigkeiten. Nick T vor 6 Jahren 10
@NickT: Alle zur gleichen Zeit. harrymc vor 6 Jahren 0
@ Bob: Die Frage ist, warum sind die Prozessoren alle gleich. Es ist bekannt, dass moderne Betriebssysteme den Stromverbrauch und sogar Parkkerne variieren können. harrymc vor 6 Jahren 2
Die einzige Existenz von big.LITTLE-Architekturen und Core-Independent-Clock-Boosting beweist, dass Sie Unrecht haben. Heterogenes Multiprocessing ist Mainstream. Es kann gemacht werden **, es ist ** in Handys, aber ** aus irgendeinem Grund nicht auf Desktops. Agent_L vor 6 Jahren 9
@Agent_L: Der Grund ist die Komplexität. Desktop-CPUs sind bereits teuer. Also wiederhole ich: Alles ist möglich, aber die eigentliche Frage ist, warum es nicht getan wird, nicht ob es möglich ist. Greife mich nicht so an, als hätte ich behauptet, dies sei unmöglich - ich sage nur, dass es zu kompliziert und zu teuer ist und die Hersteller zu wenig gewinnen. harrymc vor 6 Jahren 9
Es ist jetzt besser, aber IMHO sollten Sie mehr in die Details eintauchen, warum dies bei Handys gemacht wird und weniger bei PCs. Ich glaube, das ist die Wurzel der Frage, und Sie haben sie nur erwähnt, ohne eine wirkliche Erklärung. Uhrenlose Designs zu erwähnen ist nur eine Ablenkung, ich würde es fallen lassen. Sie haben buchstäblich "unmöglich" geschrieben, und es ist immer noch beim RAM-Taktzugriff vorhanden - wenn dies auf Desktops eindeutig möglich und erledigt ist: Single-Core-Turbo-Boost führt zu Taktunterschieden. Niemand greift dich an, aber die offensichtlich falschen Aussagen, die du gemacht hast. Oder unterstütze sie besser, vielleicht bekomme ich einen falschen Turbo-Boost Agent_L vor 6 Jahren 2
@Agent_L: Ich weiß nicht genau, wie der Turbo-Boost durchgeführt wird, aber ich denke, es beschleunigt die Uhr und einige Multiplikatoren, genauso wie das Übertakten. Die Uhr wird geteilt, sodass die gesamte CPU und * alle ihre Kerne * beschleunigt werden. Für Telefone: Sie verfügen in der Regel über einen benutzerdefinierten Firmware- und Software-Stack, der jeder CPU zugeordnet ist, eher wie zwei separate CPUs (oder CPU und GPU), und es fehlt eine einzige Ansicht des Systemspeichers. Diese Komplexität ist schwer zu programmieren und hat AMP im mobilen Bereich gelassen, da sie eine Entwicklung von Hardware in der Nähe der Hardware erfordert, die von allgemeinen Desktop-Betriebssystemen gemieden wird. harrymc vor 6 Jahren 2
"Die Uhr wird von Kernen auf derselben CPU gemeinsam genutzt, sodass die gesamte CPU und alle ihre Kerne gleichmäßig beschleunigt werden." Falsch. Viele von uns haben viele Beweise dafür vorgelegt, dass diese verschiedenen Kerne gleichzeitig auf demselben Würfel zu unterschiedlichen Uhren laufen. So ziemlich jeder große moderne Prozessor macht das. Grant Wu vor 6 Jahren 3
Mein Server mit 2x Xeon E5-2670 v3 (12 Kerne mit HT) verfügt derzeit über Kerne bei 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. Tatsächlich kommt es selten vor, dass cat / proc / cpuinfo | grep MHz | uniq -c` zeigt immer Duplikate. Nick T vor 6 Jahren 2
@NickT: Ein Core ist entweder aktiv oder im Leerlauf. Alle gleichzeitig aktiven Kerne laufen auf derselben Frequenz. Was Sie sehen, ist nur ein Artefakt von Timing oder Mittelwertbildung. Zum Beispiel können Sandy-Bridge- und Ivy-Bridge-Kerne nicht gleichzeitig mit unterschiedlichen Geschwindigkeiten ausgeführt werden, da der L3-Cache-Bus mit der gleichen Taktrate wie die Kerne läuft. Um Synchronisierungsprobleme zu vermeiden, müssen sie alle entweder mit dieser Geschwindigkeit arbeiten oder abschalten ([link] (http://www.anandtech.com/show/3922/intels-sandy-bridge-architecture-exposed/4)). harrymc vor 6 Jahren 3
@Harrymc Danke, ich habe heute etwas Neues gelernt. Agent_L vor 6 Jahren 1
Bitte entfernen Sie die falschen Informationen zum E5-2670 v3. Http://ieeexplore.ieee.org/document/7284406/ zitieren: "Die kürzlich vorgestellten Prozessoren der Intel Xeon E5-1600 v3- und E5-2600 v3-Serie - Codename Haswell-EP - führen wesentliche Änderungen gegenüber ihren Vorgängern durch Änderungen sind integrierte Spannungsregler, die für jeden Kern individuelle Spannungen und Frequenzen ermöglichen. " Grant Wu vor 6 Jahren 1
@ GrantWu: Einzelne Spannungsregler unterscheiden sich von der Taktrate. Nicht alle Kerne sind identisch - manche sind schneller. Schnellere Kerne erhalten etwas weniger Leistung, wodurch die Headroom zur Verfügung gestellt wird, um die Leistung zu verbessern, die schwächeren Kernen zugeteilt wird. Kernspannungsregler werden so niedrig wie möglich eingestellt, um den * aktuellen Takt * zu erhalten. Die Power Control Unit in der CPU regelt Spannungen und überschreibt OS-Anforderungen, wenn dies für Kerne mit unterschiedlichen Qualitätsanforderungen erforderlich ist. Zusammenfassung: Einzelne Regler dienen dazu, dass alle Kerne bei der gleichen Taktrate wirtschaftlich arbeiten, und nicht zur Einstellung einzelner Kerngeschwindigkeiten. harrymc vor 6 Jahren 1
"das ermöglicht individuelle Spannungen und Frequenzen für jeden Kern" "Dies ermöglicht Pro-Core-Pstates (PCPS) [14] anstelle eines p-Zustands für alle Kerne wie in den vorherigen Produkten. Die feinere Granularität von Spannungs- und Frequenzbereichen ermöglicht energiebewusstes Verhalten Laufzeiten und Betriebssysteme, um den Stromverbrauch einzelner Kerne zu senken und gleichzeitig die Leistung anderer Kerne auf einem hohen Niveau zu halten. " "Frühere Intel-Prozessorgenerationen verwendeten entweder eine feste Uncore-Frequenz (Nehalem-EP und Westmere-EP) oder eine gemeinsame Frequenz für Cores und Uncore (Sandy Bridge-EP und Ivy Bridge-EP)." Grant Wu vor 6 Jahren 0
@ GrantWu: Das widerspricht nicht dem, was ich gesagt habe, es werden nur mehr Hardwaredetails angezeigt. harrymc vor 6 Jahren 1
Ja tut es. Es heißt für jeden Kern "individuelle ... Frequenzen". Oder schauen Sie unter https://stackoverflow.com/questions/2619745/mutli-core-processors-does-each-core-run-at-the-full-clock-speed-or-some-frac nach Grant Wu vor 6 Jahren 1
Oder werfen Sie einen Blick auf die Zusammenfassung von https://aspire.eecs.berkeley.edu/wp/wp-content/uploads/2014/07/Per-Core-DVFS-Mit-Switched-Capacitor.pdf " unabhängige Steuerung der Versorgung und der Taktfrequenz für jeden Kern ": Grant Wu vor 6 Jahren 0
@ GrantWu: Das ersetzt nicht den CPU-Takt - es wird nur verwendet, um die Geschwindigkeit an die Uhr anzupassen. Dies ist wahrscheinlich der Mechanismus, der zum Implementieren von Turbo-Boost und zum Homogenisieren der Kerne verwendet wird (die Leistung der Kerne kann unterschiedlich sein, da nicht alle Kerne bei der Herstellung identisch sind). harrymc vor 6 Jahren 1
Bei näherer Betrachtung denke ich, dass @ harrymc korrekt ist. Bei Skylake teilen sich alle Kerne noch eine Uhrendomäne. Die öffentlich zugängliche Literatur ist zwar ein wenig vage, ob sie sich nur auf die Basisuhr bezieht oder die Kerne auch einen Multiplikator teilen. Letzteres ist impliziert. Bob vor 6 Jahren 0
47
Matteo Italia

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 das gleiche Arrangement trägt - das ARM big.LITTLE funktioniert genauso wie Sie es beschrieben haben. Da ist es nicht nur eine Taktdifferenz, es kann sich um ganz andere Kerntypen handeln - die langsamer getakteten sind normalerweise sogar "dümmer" (keine Ausführung außerhalb der Reihenfolge und andere CPU-Optimierungen).

Es ist eine schöne Idee, im Wesentlichen Batterie zu sparen, hat aber ihre eigenen Mängel. Die Buchhaltung, um Sachen zwischen verschiedenen CPUs zu verschieben, ist komplizierter, die Kommunikation mit den übrigen Peripheriegeräten ist komplizierter und vor allem, um solche Kerne effektiv zu nutzen, muss der Taskplaner äußerst intelligent sein (und oft "richtig raten"). .

Die ideale Anordnung ist, 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 (wo die zusätzliche Zeit, die für die kleinen Kerne aufgewendet wird, zu wecken), aufzuwecken mehr Batterie essen) oder für mittelgroße interaktive Aufgaben, bei denen sich der Benutzer auf den kleinen Kernen schwerfällig fühlt.

Der Scheduler hat jedoch nur begrenzte Informationen über die Art der Arbeit, die jede Task ausführt, und muss auf eine Heuristik (oder externe Informationen, z. B. das Erzwingen einer Affinitätsmaske für eine bestimmte Task) zurückgreifen, um zu entscheiden, wo sie geplant werden sollen. Wenn dies der Fall ist, kann es sein, dass Sie viel Zeit / Energie für das Ausführen einer Aufgabe in einem langsamen Kern verschwenden und eine schlechte Benutzererfahrung bieten oder die "großen" Kerne für Aufgaben mit niedriger Priorität verwenden und somit Energie verschwenden. sie von Aufgaben stehlen, die sie brauchen würden.

Auf einem asymmetrischen Multiprocessing-System ist es in der Regel auch teurer, Aufgaben auf einen anderen Kern zu migrieren als auf einem SMP-System. Daher muss der Scheduler im Allgemeinen eine gute Schätzung machen, anstatt zu versuchen, auf einem beliebigen freien Kern zu laufen und sich zu bewegen es später herum.


Die Entscheidung von Intel ist stattdessen eine geringere Anzahl identischer intelligenter und schneller Kerne, jedoch 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 verkleinert sie, um zum niedrigsten Stromverbrauchsmodus zurückzukehren. Der Scheduler wird dadurch nicht besonders belastet und die oben beschriebenen schlechten Szenarien werden vermieden. Natürlich sind diese Kerne auch im Low-Clock-Modus "smart", also verbrauchen sie wahrscheinlich mehr als die "dummen" Low-Clock-Kerne.

Heuristiken sollten ziemlich einfach sein. Jede unfreiwillige Taskumschaltung (Verwendung von vollen Zeitscheiben) ist ein Hinweis darauf, dass die langsame CPU für die Task ungeeignet ist. Eine sehr geringe Auslastung und alle freiwilligen Taskwechsel deuten darauf hin, dass die Task auf die langsame CPU verschoben werden könnte. R.. vor 6 Jahren 1
Ein weiteres Problem ist, dass 4 dumme 2-GHz-Kerne mehr Chipgröße als 2 intelligente 4-GHz-Kerne benötigen, oder dass sie kleiner sind und viel weniger Energie benötigen als 4-GHz-Kerne, aber auch viel langsamer laufen phuclv vor 6 Jahren 3
@R .: Grundsätzlich stimme ich mit dir überein, aber selbst wenn ich einige grundlegende Scheduler-Unterstützung dafür aktiviere, sah ich lächerliche Grundstöße auf einer ARM-Platine, die ich benutzte, also musste etwas anderes da sein. Außerdem wird die meisten "regulären" Multithread-Software unter Berücksichtigung von SMP geschrieben. Daher ist es nicht untypisch, Thread-Pools so groß wie die Gesamtzahl der Kerne zu sehen, wobei Jobs auf die langsamen Kerne gezogen werden. Matteo Italia vor 6 Jahren 2
@Ramhound: Ein 120-W-10-Core-Bauteil hat ein Leistungsbudget von 12 W pro Kern (außer im Single-Core-Turbo-Modus). Daher finden sich die höchsten Single-Core-Uhren in den Quad-Core-Teilen, wo Intels [i7-6700k] (https://ark.intel.com/products/88195/Intel-Core-i7-6700K-Processor) zum Einsatz kommt -8M-Cache-up-to-4_20-GHz) hat ein Leistungsbudget von 91 W für 4 Kerne: 22,75 W pro Kerne, die bei allen Kernen aktiv sind (bei 4,0 GHz selbst bei einer AVX2 + FMA-Workload wie Prime95). Dies ist auch der Grund, warum der Single-Core-Turbo-Headroom nur einen zusätzlichen 0,2-GHz-Wert im Vergleich zu einem 22-Core-Broadwell E5-2699v4 mit 2,2-GHz-Basis bei 145 W und 3,6-GHz-Turbo bietet. Peter Cordes vor 6 Jahren 1
@Ramhound: [eine Antwort] hinzugefügt (https://superuser.com/questions/1222372/why-do-we-have-cpus-mit-all-the-cores-at-the-same-Geschwindigkeiten-und-nicht -kombinationen-o / 1223791 (1223791), die dies erweitert. Ein Many-Core-Xeon scheint * genau * das zu sein, wonach das OP sucht: Betreiben Sie möglichst viele Low-Power-Cores oder verbrauchen Sie einen Single-Thread-Strom, wenn möglich (Turbo). Peter Cordes vor 6 Jahren 0
14
Hennes

Die Leistung in Spielen wird tendenziell von der Geschwindigkeit des Einzelkerns bestimmt.

In der Vergangenheit (DOS-Ära-Spiele): Richtig.
In diesen Tagen ist es nicht mehr wahr. Viele moderne Spiele sind 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 dagegen von der Anzahl der Kerne bestimmt.

Irgendwie wahr.

Anzahl der Kerne * mal die Geschwindigkeit des Kerns * Effizienz.
Wenn Sie einen einzelnen identischen Kern mit einem Satz identischer Kerne vergleichen, sind Sie meistens richtig.

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, Basisfrequenz 3,80 GHz, 4 Kerne Intel Core i7 7700k, Basisfrequenz 4,20 GHz, 4 Kerne, 8 Gewinde AMD Ryzen 1600x, Basisfrequenz 3,60 GHz, 6 Kerne, 12 Gewinde AMD Ryzen 1800x, Basisfrequenz 3,60 GHz, 8 Kerne, 16 Fäden

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

Warum sehen wir also dieses Muster zunehmender Kerne, wenn alle Kerne die gleiche Taktrate haben?

Zum Teil, weil wir auf eine Barriere gestoßen sind. Durch die Erhöhung der Taktrate wird mehr Strom benötigt und mehr Wärme erzeugt. Mehr Wärme bedeutete noch mehr Kraft. Wir haben es so versucht, das Ergebnis war das schreckliche Pentium 4. Heiß und macht hungrig. Schwer zu kühlen. Und nicht einmal schneller als der intelligent entwickelte Pentium-M (A P4 bei 3.0 GHz war ungefähr so ​​schnell wie ein P-Mob bei 1,7 GHz).

Seitdem haben wir es vor allem aufgegeben, die Taktgeschwindigkeit zu erhöhen, und stattdessen bauen wir intelligentere Lösungen. Ein Teil davon bestand darin, mehrere Kerne über der Taktfrequenz zu verwenden.

Beispielsweise kann ein einzelner 4-GHz-Kern so viel Energie verbrauchen und so viel Wärme erzeugen wie drei 2-GHz-Kerne. Wenn Ihre Software mehrere Kerne verwenden kann, ist dies viel schneller.

Nicht jede Software kann das, aber moderne Software normalerweise.

Was teilweise antwortet, warum wir Chips mit mehreren Kernen haben und warum wir Chips mit unterschiedlicher Anzahl von Kernen verkaufen.

Ich denke, ich kann drei Punkte identifizieren:

  • CPUs mit geringem Stromverbrauch sind in einigen Fällen sinnvoll, deren Rohgeschwindigkeit nicht benötigt wird. ZB Domänencontroller, NAS-Setups, ... Für diese haben wir niedrigere Frequenz-CPUs. Manchmal sogar mit mehr Kernen (zB 8x Low-Speed-CPU ist für einen Webserver sinnvoll).
  • Im übrigen sind wir normalerweise nahe an der maximalen Frequenz, die wir tun können, ohne dass unser aktuelles Design zu heiß wird. (sagen Sie 3 bis 4 GHz mit aktuellen Designs).
  • Und noch dazu bunkern wir. Nicht alle CPU werden gleich generiert. Einige Prozessoren punkten schlecht oder punkten schlecht in einem Teil ihrer Chips, haben diese Teile deaktiviert und werden als anderes Produkt verkauft.

Das klassische Beispiel dafür war ein 4-Kern-AMD-Chip. Wenn ein Kern gebrochen wurde, wurde er deaktiviert und als 3-Kern-Chip verkauft. Als die Nachfrage nach diesen 3 Kernen hoch war, wurden sogar 4 Kerne als 3-Kern-Version verkauft, und mit dem richtigen Software-Hack konnte der 4. Kern wieder aktiviert werden.

Dies geschieht nicht nur mit der Anzahl der Kerne, sondern beeinflusst auch die Geschwindigkeit. Einige Chips laufen heißer als andere. Zu heiß und verkaufen Sie es als CPU mit niedrigerer Geschwindigkeit (wobei niedrigere Frequenz auch weniger Wärme erzeugt).

Und dann gibt es Produktion und Marketing, und das macht es noch schlimmer.

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

Wir tun Wo es sinnvoll ist (z. B. Mobiltelefone), haben wir oft einen SoC mit einer langsamen Kern-CPU (geringer Stromverbrauch) und ein paar schnellere Kerne. Bei einem typischen Desktop-PC wird dies jedoch nicht durchgeführt. Dies würde das Setup viel komplexer, teurer machen und es gibt keine Batterie zum Entladen.

Wie ich darauf hinwies - "Ich frage diese Frage als allgemeinen Punkt - nicht speziell über die oben aufgelisteten cpus", und es gab einen Grund, warum ich zwei Beispiele aus jeder Architektur nannte. Wenn wir die beiden Szenarien als 1. alle großen Kerne und 2. zwei große und zwei kleine behandeln, dann gelten alle Punkte, die Sie erwähnen, für beide Fälle - dh. theoretisch maximale Single-Core-Geschwindigkeit, Binning von Chips, Downclocking bei Nichtgebrauch. Jamie vor 6 Jahren 1
Ein einzelner Kern mit maximaler Geschwindigkeit ist nicht besonders interessant, wenn er nicht ausgewählt wird. Scheduler müssen aktualisiert werden, um den Hochgeschwindigkeitskern tatsächlich zu bevorzugen. Hennes vor 6 Jahren 0
10
David Schwartz

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

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

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

Das dachte ich mir. Warum sollten absichtlich einige minderwertige Komponenten verwendet werden, wenn sie alle Elite sein könnten? +1. MPW vor 6 Jahren 2
@MPW Die Wahl besteht nicht darin, einen großen Kern zu erstellen und ihn dann zu kastrieren, sondern zwischen großen und wenigen großen und vielen kleinen Kernen. Da Sie zwei konkurrierende Szenarien haben - Single-Thread-Leistung und Multi-Thread-Leistung -, sollten Sie beide nicht maximieren. Wissen wir, dass Sie mit wenigen großen und vielen kleinen Kernen keinen Chip herstellen können? Jamie vor 6 Jahren 1
@Jamie Sie könnten einen Chip mit ein paar großen und vielen kleinen Kernen herstellen. Die kleineren Kerne würden jedoch nicht mit einer niedrigeren Taktrate laufen. David Schwartz vor 6 Jahren 0
Sie würden es tun, wenn sie so gestaltet wären ... Die Frage ist, warum sie nicht von Grund auf so konstruiert sind, dass sie nicht einen bestehenden Fertigungsprozess übernehmen und ihn kastrieren. Jamie vor 6 Jahren 0
@ Jamie, ich verstehe nicht was du sagst. Die gesamte CPU muss mit dem gleichen Fertigungsprozess hergestellt werden, und die maximale Taktrate ist weitgehend ein Merkmal der Fertigungsprozesse. Kerne, die eine niedrigere Taktrate auf demselben Fertigungsniveau erfordern, wären im Allgemeinen * komplexer * und beanspruchen mehr Platz. Andernfalls benötigen sie eine niedrigere Taktrate. David Schwartz vor 6 Jahren 0
Vielleicht weiß ich nicht genug über den Herstellungsprozess, um zu verstehen. Könnten Sie nicht zwei verschiedene Kerne auf derselben CPU innerhalb desselben Fertigungsprozesses erstellen? - dh. ein 4,0 GHz (40 * 100 MHz) Kern und ein 2,0 GHz (20 * 100 MHz) Kern. Einige CPUs haben On-Chip-GPUs. Ist dies Teil des Herstellungsprozesses oder wird es später hinzugefügt? Das Hinzufügen von Komplexität ist eindeutig eine Währung - wenn sich das Endergebnis lohnt. Jamie vor 6 Jahren 0
@ Jamie Sicher, das könntest du tun. Der 2,0-GHz-Kern wäre jedoch wahrscheinlich größer und komplexer, so dass er mit einer niedrigeren Frequenz laufen muss. (Warum müsste es sonst mit einer niedrigeren Frequenz laufen, obwohl es mit dem gleichen Fertigungsprozess gebaut wurde?) David Schwartz vor 6 Jahren 0
9
Grant Wu

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

Nenntaktgeschwindigkeiten bedeuten für die meisten größeren Prozessoren heutzutage nicht wirklich viel, da sie alle die Fähigkeit haben, sich selbst auf und ab zu takten. Sie fragen, ob sie unterschiedliche Kerne unabhängig voneinander auf und ab takten können.

Ich bin irgendwie überrascht von vielen anderen Antworten. Moderne Prozessoren können und tun dies. Sie können dies testen, indem Sie beispielsweise CPU-Z auf einem Smartphone öffnen. Mein Google Pixel kann verschiedene Kerne mit unterschiedlichen Geschwindigkeiten ausführen:

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

In der Tat haben Mainstream-Intel-CPUs seit 2009 die Logik, die einzelnen Kerne zu steigern, während andere Kerne unterboten werden, wodurch eine bessere Leistung der einzelnen Kerne erzielt wird, während sie innerhalb eines TDP-Budgets bleiben: http://www.anandtech.com/show/2832/4

Bei neueren Intel-Prozessoren mit "Favored Core" (einem Intel-Vermarktungsbegriff) wurde jeder Kern im Werk charakterisiert, wobei die schnellsten Kerne in der Lage waren, extra hohe Werte zu erzielen: http://www.anandtech.com/show/11550/the-intel -skylakex-review-core-i9-7900x-i7-7820x-und -7-7800x-getestet / 7

AMDs Bulldozer-Chips hatten eine einfache Version davon: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

AMDs neue Ryzen-Chips haben dies wahrscheinlich auch, obwohl es hier nicht explizit angegeben ist: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive-dive -on-1800x-1700x-und-1700/11

Sie beantworten eine andere Frage. Die Frage betrifft viele große Kerne im Vergleich zu einigen großen Kernen und vielen kleinen Kernen - die Vorzüge der beiden Szenarien. In beiden Situationen können Sie je nach Bedarf auf und ab takten oder einen Kern ankurbeln. Jamie vor 6 Jahren 0
So habe ich die Frage nicht gelesen. In der Frage werden architektonisch unterschiedliche Kerne nicht erwähnt, obwohl die Wörter "groß" und "klein" verwendet werden. Es konzentriert sich ausschließlich auf die Taktrate. Grant Wu vor 6 Jahren 3
8
hobbs

Auf einem modernen System, das Sie oft tun alle Kerne haben sich mit unterschiedlichen Geschwindigkeiten laufen. Das Herunterfahren eines nicht stark beanspruchten Kerns reduziert den Stromverbrauch und die Wärmeleistung, was gut ist, und Funktionen wie "Turbo-Boost" sorgen dafür, dass ein oder zwei Kerne wesentlich schneller laufen, solange die anderen Kerne im Leerlauf sind und daher 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 gleichzeitig erreichen können. Und warum sollten alle Kerne die gleiche Höchstgeschwindigkeit haben? Nun, alle haben ein identisches Design, auf demselben physischen Chip, das mit demselben Halbleiterprozess ausgelegt ist. Warum sollten sie sich also unterscheiden?

Der Grund dafür, dass alle Kerne identisch sind, liegt darin, dass es am einfachsten ist, wenn ein Thread, der an einem Punkt auf einem Kern ausgeführt wird, an einem anderen Punkt auf einem anderen Kern ausgeführt wird. Wie schon an anderer Stelle erwähnt, gibt es häufig verwendete Chips, die nicht diesem Prinzip identischer Kerne folgen, nämlich den ARM "big.LITTLE" -CPUs. Obwohl meiner Meinung nach der wichtigste Unterschied zwischen den "großen" und "kleinen" Kernen nicht die Taktgeschwindigkeit ist (die "großen" Kerne sind tendenziell schickere, breitere, spekulativere Kerne, die mehr Anweisungen pro Takt erhalten, jedoch mit höheren Kosten Energieverbrauch, während die "kleinen" Kerne näher an ARMs Single-Issue-In-Order-Low-Power-Wurzeln herankommen, da sie "

Um in den Bereich des heterogenen Rechnens einzugreifen, ist es auch üblich, "CPU" - und "GPU" -Kerne auf demselben Chip zu sehen. Diese haben völlig unterschiedliche Designs, führen unterschiedliche Befehlssätze aus, werden unterschiedlich adressiert und im Allgemeinen auch unterschiedlich getaktet.

7
Peter Cordes

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

Es ist ein Broadwell mit 22 Kernen. Die Dauertaktrate beträgt 2,2 GHz, wobei alle Kerne aktiv sind (z. B. Videocodierung), der Single-Core-Max-Turbo beträgt jedoch 3,6 GHz.

Beim Ausführen einer parallelen Aufgabe verwendet es sein 145-W-Leistungsbudget als 22 6,6-W-Kerne. Wenn Sie jedoch eine Task mit nur wenigen Threads ausführen, lassen sich mit diesem Leistungsbudget einige Kerne bis zu 3,6 GHz beschleunigen. ( Aufgrund der geringeren Single-Core-Speicher- und L3-Cache-Bandbreite in einem großen Xeon läuft er möglicherweise nicht so schnell wie ein Desktop-Quad-Core bei 3,6 GHz. Ein Single-Core in einer Desktop-Intel-CPU kann viel mehr nutzen Gesamtspeicherbandbreite.)

Der 2,2-GHz-Nenntakt ist aufgrund thermischer 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 4- und 8-Kern-CPUs, die Sie in der Frage erwähnen, nicht sehr groß, da 8 nicht so viele Kerne sind und sie sehr hohe Energiehaushalte haben. Selbst begeisterte Desktop-CPUs zeigen diesen Effekt spürbar: Intels Skylake-X i9-7900X ist ein 10c20t-Teil mit 3,3 GHz-Basis und 4,5 GHz-Maximal-Turbo . Das ist viel mehr Single-Core-Turbo-Headroom als i7-6700k (4,0 GHz / 4,2 GHz-Turbo ohne Übertakten).

Durch die Frequenz- / Spannungsskalierung (DVFS) kann derselbe Kern über einen weiten Bereich der Leistungs- / Effizienzkurve arbeiten. Siehe auch diese IDF2015-Präsentation zum Skylake-Energiemanagement mit vielen interessanten Details darüber, was CPUs effizient tun können und Leistung und Effizienz sowohl statisch zur Entwurfszeit als auch im laufenden Betrieb mit DVFS abwägen.

Auf der anderen Seite des Spektrums haben Intel Core-M-CPUs eine sehr niedrige Dauerfrequenz, wie 1,2 GHz bei 4,5 W, können jedoch bis zu 2,9 GHz hochfahren. Wenn mehrere Kerne aktiv sind, lassen sie ihre Kerne mit einer effizienteren Taktfrequenz laufen, genau wie die riesigen Xeons.

Sie brauchen keine heterogene big.LITTLE-Architektur, um den größtmöglichen Nutzen zu erzielen. Die kleinen Kerne in ARM big.LITTLE sind ziemlich beschissene Kerne in der Reihenfolge, die für Rechenarbeit nicht geeignet sind. Es geht darum, eine Benutzeroberfläche mit sehr geringer Leistung auszuführen. Viele von ihnen wären nicht gut für die Videocodierung oder andere ernstzunehmende Zahlen. ( @Lưu Vĩnh Phúc fand einige Diskussionen darüber, warum x86 nicht groß ist . LITTLE . Grundsätzlich lohnt es sich nicht, zusätzliches Silizium für einen sehr langsamen, besonders langsamen Kern auszugeben, was für eine typische Verwendung von Desktop / Laptop erforderlich ist.)


Anwendungen wie die Videobearbeitung werden dagegen von der 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 dein Schlüsselmissverständnis. Sie scheinen zu denken, dass die gleiche Anzahl von Taktsignalen pro Sekunde sinnvoller ist, wenn sie auf mehrere Kerne verteilt ist. Das ist niemals der Fall. Es ist mehr wie

cores * perf_per_core * (scaling efficiency)^cores 

( perf_per_coreDies ist nicht das Gleiche wie die Taktfrequenz, da ein 3GHz Pentium4 pro Taktzyklus viel weniger Arbeit als ein 3GHz Skylake erhält.)

Noch wichtiger ist, dass der Wirkungsgrad sehr selten bei 1,0 liegt. Einige peinlich parallele Aufgaben skalieren fast linear (z. B. Kompilieren mehrerer Quelldateien). Aber Videocodierung 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 gehen, wird die Geschwindigkeit fast verdoppelt, aber von 32 auf 64 Kerne werden bei einer typischen 1080p-Kodierung viel weniger helfen. Der Punkt, an dem Geschwindigkeits-Plateaus auftreten, hängt von den Einstellungen ab. ( -preset veryslowführt mehr Analysen für jeden Frame durch und kann mehr Kerne beschäftigen als -preset fast).

Mit vielen sehr langsamen Kernen würden die Single-Threaded-Teile von x264 zu Engpässen werden. (z. B. die endgültige CABAC-Bitstream-Kodierung. Dies ist h.264 's Äquivalent von gzip und parallelisiert sich nicht.) Wenn Sie ein paar schnelle Kerne haben, wäre das Problem gelöst, wenn das Betriebssystem wusste, wie es geplant werden soll (oder wenn x264 die entsprechenden Threads feststeckt schnelle Kerne).

Mit x265 können mehr Kerne als mit x264 genutzt werden, da mehr Analysen erforderlich sind. Das WPP-Design von h.265 ermöglicht mehr Codierung und Decodierung von Parallelität. Aber selbst für 1080p ist der Parallelismus irgendwann einmal ausgenutzt.


Wenn Sie mehrere Videos kodieren möchten, sollten Sie mehrere Videos in paralleler Skalierung erstellen, mit Ausnahme der Konkurrenz um gemeinsam genutzte Ressourcen wie L3-Cache-Kapazität und -Bandbreite sowie Speicherbandbreite. Weniger schnellere Kerne könnten von demselben L3-Cache mehr profitieren, da sie nicht an so vielen verschiedenen Teilen des Problems gleichzeitig arbeiten müssten.

4
supercat

Es ist zwar möglich, Computer zu entwerfen, auf denen unterschiedliche Teile mit unterschiedlichen, unabhängigen Geschwindigkeiten laufen, die Arbitrierung von Ressourcen erfordert jedoch häufig eine schnelle Entscheidung, welche Anforderung zuerst bearbeitet werden muss, was wiederum erfordert, zu wissen, ob eine andere Anforderung früh genug eingetreten ist, um Priorität zu erhalten . Die Entscheidung über solche Dinge ist meistens ziemlich einfach. 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 einzige praktische Weg, dies zu tun, ist in vielen Fällen die Verwendung einer Entscheidung, die als "Synchronisierer" bezeichnet wird, die Mehrdeutigkeiten vermeiden kann, aber eine Verzögerung von zwei Zyklen einführt. Man könnte eine Caching-Steuerung entwickeln, die zuverlässig zwischen zwei Systemen mit separaten Takten entscheidet, wenn eines gewillt wäre, bei jeder Operation eine Verzögerung von zwei Zyklen zu tolerieren, um festzustellen, wer die Entscheidung gewonnen hat. Ein solcher Ansatz wäre jedoch weniger nützlich, wenn man möchte, dass ein Cache unmittelbar auf Anforderungen reagiert, wenn keine Konflikte vorliegen, da selbst unbestrittene Anforderungen immer noch eine Verzögerung von zwei Zyklen haben.

Wenn Sie alles auf einer gemeinsamen Uhr ablaufen lassen, müssen Sie nicht synchronisiert werden, wodurch die Kommunikationsverzögerung um zwei Zyklen jedes Mal vermieden wird, wenn Informationen oder Steuersignale zwischen den Uhrendomänen übertragen werden müssen.

4
Yakk

Desktop-Computer tun dies bereits.

Sie verfügen über (eine) CPU (s) mit 1-72 aktiven Threads gleichzeitig und (eine) GPU (s) mit 16-7168 Recheneinheiten.

Grafik ist ein Beispiel für eine Aufgabe, bei der massive parallele Arbeit als effizient befunden wurde. Die GPU ist so optimiert, dass sie die Art von Operationen ausführt, für die wir 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 für drei Kerne bei X / 2 FLOPS zu handeln. Der Handel eines Kerns bei X FLOPS gegen einhundert Kerne bei X / 5 FLOPS ist es jedoch sehr wert.

Bei der Programmierung 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 wahrscheinlich viel einfacher, Code für eine CPU zu schreiben, da massiv paralleler Code schwerer zu finden ist. 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 stark aus.

Jetzt machen mobile Geräte dies aus einem anderen Grund. Sie verfügen über Kerne mit niedriger Leistung, die erheblich langsamer sind, aber auch eine wesentlich geringere Leistung pro Recheneinheit benötigen. Dadurch können sie die Akkulaufzeit deutlich 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 immer noch eine Menge Arbeit des Betriebssystems und möglicherweise des Anwendungsschreibers, damit dies richtig funktioniert. Nur die große Auszahlung machte es wert.