Startseite » wie man » Warum haben alle CPU-Kerne die gleiche Geschwindigkeit anstelle von unterschiedlichen?

    Warum haben alle CPU-Kerne die gleiche Geschwindigkeit anstelle von unterschiedlichen?

    Wenn Sie schon einmal einen großen Vergleichseinkauf für eine neue CPU durchgeführt haben, haben Sie vielleicht bemerkt, dass alle Kerne die Geschwindigkeit zu haben scheinen und nicht eine Kombination verschiedener. Warum das? Der heutige Q & A-Beitrag von SuperUser hat die Antwort auf die Frage eines neugierigen Lesers.

    Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

    Die Frage

    SuperUser-Leser Jamie möchte wissen, warum CPU-Kerne alle die gleiche Geschwindigkeit haben, anstatt verschiedene:

    Wenn Sie einen neuen Computer kaufen, legen Sie im Allgemeinen fest, welcher Prozessor gekauft werden soll. Dies hängt von der erwarteten Arbeitslast des Computers ab. Die Leistung in Videospielen wird in der Regel von der Geschwindigkeit des einzelnen Kerns bestimmt, während Anwendungen wie die Videobearbeitung von der Anzahl der Kerne bestimmt werden. In Bezug auf das, was auf dem Markt verfügbar 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 zunehmender Kerne, obwohl 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, maximal 16 GHz), wie wäre es mit einer CPU mit zwei Kernen, die bei 4,0 GHz laufen, und vier Kernen, die bei 2,0 GHz laufen (dh 2 × 4,0 GHz + 4 × 2,0) GHz, maximal 16 GHz)? Wäre die zweite Option für Single-Threaded-Workloads gleichermaßen geeignet, für Multi-Threaded-Workloads möglicherweise besser?

    Ich stelle dies als allgemeine Frage und nicht speziell in Bezug auf die oben aufgelisteten CPUs oder einen bestimmten Workload. Ich bin nur neugierig, warum das Muster so ist, wie es ist.

    Warum haben CPU-Kerne alle die gleiche Geschwindigkeit und keine unterschiedlichen?

    Die Antwort

    SuperUser-Mitwirkender bwDraco hat die Antwort für uns:

    Dies wird als heterogenes Multi-Processing (HMP) bezeichnet und von mobilen Geräten weit verbreitet. Bei ARM-basierten Geräten, die big.LITTLE implementieren, enthält der Prozessor Kerne mit unterschiedlichen Leistungs- und Leistungsprofilen, dh 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, dass jeder Kern ähnliche Leistungsmerkmale aufweist, und Planungsprozesse für HMP-Systeme sind viel komplexer als die Planung für herkömmliche symmetrische Multi-Processing-Systeme (SMP-Systeme). Technisch unterstützt Windows 10 HMP, ist jedoch hauptsächlich für mobile Geräte gedacht Geräte, die ARM big verwenden (wenig).

    Außerdem sind die meisten Desktop- und Laptop-Prozessoren heutzutage nicht thermisch oder elektrisch auf den Punkt beschränkt, an dem einige Kerne schneller laufen müssen als andere, selbst für kurze Ausbrüche. Wir haben im Grunde genommen eine Wand gestellt, wie schnell wir einzelne Kerne herstellen können. Wenn also 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 (bekannt als Turbo Boost Max Technology 3.0) beschränkt und bringt nur einen geringen Gewinn mit sich Leistung für diejenigen 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 die für diese Art von Prozessor optimierten Workloads mit hohem Thread könnten einen Leistungszuwachs und eine Effizienz gegenüber einem normalen Quad-Core-Prozessor von Kaby Lake 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 AVX (ARM vermeidet dieses Problem, indem sowohl die großen als auch die kleinen Kerne die gleichen Anweisungen unterstützen ).

    Auch bei den meisten Windows-basierten Multithread-Anwendungen wird davon ausgegangen, dass jeder Kern das gleiche oder nahezu das gleiche Leistungsniveau aufweist und die gleichen Anweisungen ausführen kann. Diese Art von Asymmetrie führt daher wahrscheinlich zu einer weniger als idealen Leistung, möglicherweise sogar sogar stürzt ab, wenn Anweisungen verwendet werden, die nicht von den langsameren 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 beheben.

    Ein anderer Ansatz beim Anwendungsdesign, der näher an dem liegt, woran Sie wahrscheinlich in Ihrer Frage denken, 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 in demselben Chip vereint wie die heterogene Systemarchitektur, obwohl dies außerhalb der Branche nicht viel Aufsehen erregte von einigen spezialisierten Anwendungen.


    Haben Sie der Erklärung etwas hinzuzufügen? Sound off in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.

    Bildnachweis: Mirko Waltermann (Flickr)