Zusammenfassung
Wirtschaft. Es ist billiger und einfacher, eine CPU mit mehr Kernen als einer höheren Taktrate zu entwerfen, weil:
Deutliche Steigerung des Stromverbrauchs. Der CPU-Stromverbrauch steigt schnell an, wenn Sie die Taktrate erhöhen. Sie können die Anzahl der Kerne verdoppeln, die mit einer niedrigeren Geschwindigkeit im erforderlichen thermischen Raum arbeiten, um die Taktrate um 25% zu erhöhen. Vervierfachen Sie für 50%.
Es gibt andere Möglichkeiten, die Geschwindigkeit der sequentiellen Verarbeitung zu erhöhen, und die CPU-Hersteller nutzen diese.
Ich werde mich stark auf die hervorragenden Antworten zu dieser Frage auf einer unserer Schwester-SE-Sites stützen. Also stimmen Sie ihnen zu!
Einschränkungen der Taktrate
Es gibt einige bekannte physikalische Einschränkungen für die Taktrate:
Übertragungszeit
Die Zeit, die ein elektrisches Signal benötigt, um einen Stromkreis zu durchlaufen, ist durch die Lichtgeschwindigkeit begrenzt. Dies ist eine harte Grenze, und es ist kein Weg dahin bekannt 1 . Bei Gigahertz-Uhren nähern wir uns dieser Grenze.
Wir sind jedoch noch nicht da. 1 GHz bedeutet eine Nanosekunde pro Takt. In dieser Zeit kann das Licht 30 cm lang sein. Bei 10 GHz kann das Licht 3 cm lang sein. Ein einzelner CPU-Kern ist ungefähr 5 mm breit, daher treten diese Probleme irgendwo nach 10 GHz auf. 2
Schaltverzögerung
Es reicht nicht aus, nur die Zeit in Betracht zu ziehen, die ein Signal benötigt, um von einem Ende zum anderen zu gelangen. Wir müssen auch die Zeit berücksichtigen, die ein Logikgatter in der CPU benötigt, um von einem Zustand in einen anderen zu wechseln! Wenn wir die Taktrate erhöhen, kann dies ein Problem werden.
Leider bin ich mir bei den Einzelheiten nicht sicher und kann keine Zahlen nennen.
Anscheinend kann das Einpumpen von mehr Strom das Umschalten beschleunigen, aber dies führt sowohl zu Problemen mit dem Stromverbrauch als auch mit der Wärmeableitung. Mehr Leistung bedeutet auch, dass Sie sperrigere Leitungen benötigen, die in der Lage sind, diese ohne Beschädigung zu handhaben.
Wärmeableitung / Stromverbrauch
Das ist der Große. Zitat aus der Antwort von fuzzyhair2 :
Neuere Prozessoren werden mit CMOS-Technologie hergestellt. Jedes Mal, wenn es einen Taktzyklus gibt, wird die Leistung abgeführt. Höhere Prozessorgeschwindigkeiten bedeuten daher eine höhere Wärmeableitung.
In diesem AnandTech-Forenthread gibt es einige schöne Messungen , und sie haben sogar eine Formel für den Stromverbrauch abgeleitet (die mit der erzeugten Wärme einhergeht):
Dank an Idontcare
Wir können dies in der folgenden Grafik visualisieren:
Dank an Idontcare
Wie Sie sehen, steigt der Stromverbrauch (und die erzeugte Wärme) extrem schnell an, wenn die Taktrate über einen bestimmten Punkt hinaus ansteigt. Dies macht es unpraktisch, die Taktgeschwindigkeit grenzenlos zu erhöhen.
Der Grund für den schnellen Anstieg des Stromverbrauchs hängt wahrscheinlich mit der Schaltverzögerung zusammen - es reicht nicht aus, die Leistung einfach proportional zur Taktrate zu erhöhen. Die Spannung muss ebenfalls erhöht werden, um die Stabilität bei höheren Takten zu gewährleisten. Dies ist möglicherweise nicht ganz richtig. Sie können in einem Kommentar auf Korrekturen hinweisen oder diese Antwort bearbeiten.
Mehr Kerne?
Warum also mehr Kerne? Nun, das kann ich nicht definitiv beantworten. Sie müssten die Leute bei Intel und AMD fragen. Aber Sie können oben sehen, dass es bei modernen CPUs irgendwann unpraktisch wird, die Taktrate zu erhöhen.
Ja, Multicore erhöht auch den Stromverbrauch und die Wärmeableitung. Aber es vermeidet ordentlich die Übertragungszeit- und Schaltverzögerungsprobleme. Wie Sie aus der Grafik ersehen können, können Sie die Anzahl der Kerne in einer modernen CPU bei gleichem thermischen Overhead wie bei einer Erhöhung der Taktrate um 25% auf einfache Weise verdoppeln.
Einige Leute haben es geschafft - der aktuelle Overclocking-Weltrekord liegt bei knapp 9 GHz. Dies zu tun, ist jedoch eine erhebliche technische Herausforderung, während der Stromverbrauch in akzeptablen Grenzen gehalten wird. Irgendwann beschlossen die Designer, dass das Hinzufügen von mehr Kernen, um mehr Arbeiten parallel auszuführen , die Leistung in den meisten Fällen effektiver steigern würde.
Hier kommt die Wirtschaftlichkeit ins Spiel - es war wahrscheinlich billiger (weniger Entwicklungszeit, weniger kompliziert in der Herstellung), den Multicore-Weg zu gehen. Und es ist einfach zu vermarkten - wer mag den brandneuen Octa-Core- Chip nicht? (Natürlich wissen wir, dass Multicore ziemlich nutzlos ist, wenn die Software es nicht nutzt ...)
Es ist ein Nachteil mehradrige: Sie mehr physischen Raum brauchen den zusätzlichen Kern zu setzen. Die CPU-Prozessgrößen schrumpfen jedoch ständig stark, sodass ausreichend Platz für zwei Kopien eines früheren Designs vorhanden ist. Der eigentliche Nachteil besteht darin, dass keine größeren, komplexeren Einzelkerne erstellt werden können. Andererseits ist die Erhöhung der Kernkomplexität vom Standpunkt des Designs aus eine schlechte Sache - mehr Komplexität = mehr Fehler / Bugs und Herstellungsfehler. Wir scheinen ein glückliches Medium mit effizienten Kernen gefunden zu haben, die einfach genug sind, um nicht zu viel Platz in Anspruch zu nehmen.
Mit der Anzahl der Kerne, die bei den aktuellen Prozessgrößen auf einen einzelnen Chip passen, sind wir bereits an eine Grenze gestoßen. Wir könnten an eine Grenze stoßen, wie weit wir die Dinge bald schrumpfen können. Was kommt als nächstes? Brauchen wir mehr Das ist leider schwer zu beantworten. Ist hier jemand ein Hellseher?
Andere Möglichkeiten zur Verbesserung der Leistung
Daher können wir die Taktrate nicht erhöhen. Und mehr Kerne haben einen zusätzlichen Nachteil: Sie helfen nur, wenn die auf ihnen laufende Software sie nutzen kann.
Was können wir also noch tun? Wie sind moderne CPUs bei gleicher Taktrate so viel schneller als ältere?
Die Taktrate ist eigentlich nur eine sehr grobe Annäherung an das interne Funktionieren einer CPU. Nicht alle Komponenten einer CPU arbeiten mit dieser Geschwindigkeit - einige arbeiten möglicherweise alle zwei Ticks.
Bedeutsamer ist die Anzahl der Anweisungen, die Sie pro Zeiteinheit ausführen können. Dies ist ein weitaus besseres Maß dafür, wie viel ein einzelner CPU-Kern leisten kann. Einige Anweisungen; Einige werden einen Taktzyklus benötigen, andere drei. Die Teilung zum Beispiel ist erheblich langsamer als die Addition.
Wir können also die Leistung einer CPU verbessern, indem wir die Anzahl der Befehle erhöhen, die pro Sekunde ausgeführt werden können. Wie? Nun, Sie könnten eine Anweisung effizienter gestalten - vielleicht dauert die Aufteilung jetzt nur noch zwei Zyklen. Dann gibt es Instruktions-Pipelining . Indem jeder Befehl in mehrere Stufen unterteilt wird, ist es möglich, Befehle "parallel" auszuführen - aber jeder Befehl hat immer noch eine genau definierte, sequentielle Reihenfolge in Bezug auf die Befehle davor und danach, sodass keine Softwareunterstützung wie Multicore erforderlich ist tut.
Es gibt einen anderen Weg: spezialisiertere Anweisungen. Wir haben Dinge wie SSE gesehen, die Anweisungen zur gleichzeitigen Verarbeitung großer Datenmengen enthalten. Es werden ständig neue Befehlssätze mit ähnlichen Zielen eingeführt. Diese erfordern wiederum Softwareunterstützung und erhöhen die Komplexität der Hardware, bieten jedoch einen schönen Leistungsschub. Vor kurzem gab es AES-NI, das eine hardwarebeschleunigte AES-Ver- und -Entschlüsselung bietet, die viel schneller ist als eine Reihe von in Software implementierten Berechnungen.
1 Jedenfalls nicht ohne tief in die theoretische Quantenphysik einzusteigen.
2 Es könnte tatsächlich niedriger sein, da die Ausbreitung des elektrischen Feldes nicht ganz so schnell ist wie die Lichtgeschwindigkeit im Vakuum. Dies gilt auch nur für geradlinige Entfernungen - wahrscheinlich gibt es mindestens einen Pfad, der erheblich länger ist als eine gerade Linie.