Warum unterliegt das Hinzufügen von mehr Kernen nicht denselben physischen Einschränkungen wie das Beschleunigen der CPU?

110

Im Jahr 2014 hörte ich viele Programmiersprachen, die für ihre Parallelität angepriesen wurden. Die Nebenläufigkeit soll für die Leistungssteigerung entscheidend sein.

Bei dieser Aussage verweisen viele Menschen auf einen Artikel aus dem Jahr 2005 mit dem Titel „ Das kostenlose Mittagessen ist vorbei: Eine grundlegende Wende hin zur Parallelität in der Software“ . Das Hauptargument ist, dass es immer schwieriger wird, die Taktrate von Prozessoren zu erhöhen, aber wir können immer noch mehr Kerne auf einen Chip setzen, und dass für Leistungssteigerungen Software geschrieben werden muss, um die Vorteile mehrerer Kerne zu nutzen.

Einige wichtige Zitate:

Wir sind es gewohnt, dass 500-MHz-CPUs 1-GHz-CPUs 2-GHz-CPUs weichen und so weiter. Heute bewegen wir uns auf Standardcomputern im 3GHz-Bereich.

Die Schlüsselfrage lautet: Wann endet es? Schließlich sagt das Mooresche Gesetz ein exponentielles Wachstum voraus, und ein exponentielles Wachstum kann eindeutig nicht für immer andauern, bevor wir an harte physische Grenzen stoßen. Licht wird nicht schneller. Das Wachstum muss sich schließlich verlangsamen und sogar enden.

... Es ist immer schwieriger geworden, höhere Taktraten zu nutzen, da nicht nur eine, sondern mehrere physikalische Probleme aufgetreten sind, insbesondere Hitze (zu viel davon und zu schwer abzuleiten), Stromverbrauch (zu hoch) und Probleme mit Leckströmen.

... Die Zukunft von Intel und den meisten Prozessoranbietern liegt anderswo, da Chip-Unternehmen aggressiv die gleichen neuen Multicore-Richtungen verfolgen.

Bei Multicore geht es darum, zwei oder mehr aktuelle CPUs auf einem Chip zu betreiben.

Die Vorhersagen dieses Artikels scheinen zu stimmen, aber ich verstehe nicht warum. Ich habe nur sehr vage Vorstellungen darüber, wie Hardware funktioniert.

Mein vereinfachter Standpunkt lautet: "Es wird immer schwieriger, mehr Rechenleistung auf demselben Raum unterzubringen" (aufgrund von Problemen mit der Wärmeentwicklung, dem Stromverbrauch usw.). Ich würde die Schlussfolgerung als "daher müssen wir größere Computer haben oder unsere Programme auf mehreren Computern ausführen." (Und tatsächlich hören wir mehr über verteiltes Cloud-Computing.)

Ein Teil der Lösung scheint jedoch Multicore-Architekturen zu sein. Wenn Computer nicht größer werden (was sie nicht haben), scheint dies nur eine andere Möglichkeit zu sein, um zu sagen: "Packen Sie mehr Rechenleistung in den gleichen Raum".

Warum unterliegt "Hinzufügen von mehr Kernen" nicht den gleichen physischen Einschränkungen wie "Beschleunigen der CPU"?

Erklären Sie dies bitte in den einfachsten Begriffen, die Sie können. :)

Nathan Long
quelle
4
de.wikipedia.org/wiki/Moore%27s_law ist eine Lektüre wert - da wir über zwei verschiedene Dinge sprechen. Moores Gesetz geht es nicht um die Taktrate - es geht um die Anzahl der Transistoren
Geselle Geek
9
Stellen wir uns vor, es wäre 30 Jahre her und die CPUs liefen mit 4,77 MHz. Warum konnten Sie 1000 Computer mit 4-MHz-CPUs in den gleichen Raum stellen, obwohl es unmöglich war, eine 4-GHz-CPU zu bekommen?
user20574
3
@ NathanLong, aber es ist immer noch viel einfacher, mehr Platz (für mehr Computer) als einen schnelleren Computer zu bekommen.
user20574
5
Analogie: Ein Automotor kann nur mit so vielen Umdrehungen pro Minute hergestellt werden, aber zwei können problemlos zusammengeschraubt werden.
OJFord

Antworten:

143

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):

    Formel
    Dank an Idontcare

    Wir können dies in der folgenden Grafik visualisieren:

    Graph
    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.

Bob
quelle
22
In vielen Anwendungen ist der Engpass nicht die Rechenzeit, sondern die Verzögerungszeit zum Abrufen von Daten aus dem RAM (oder, Gott bewahre es, von der Festplatte). Eine weitere wichtige Beschleunigung ergibt sich aus größeren, schnelleren Prozessor-Caches.
Matteo Italia
2
@ MatteoItalia Yup. Außerdem gibt es Verbesserungen bei der Branchenvorhersage und wahrscheinlich noch viel mehr, von denen ich nichts weiß. Außerhalb des Prozessors haben wir auch schnellere Busse, schnelleren Speicher, schnellere Festplatten und zugehörige Protokolle usw.
Bob
2
Sie erwähnten, dass Probleme im Zusammenhang mit der "harten Grenze" der Lichtgeschwindigkeit bei "irgendwo über 20 GHz" auftreten werden. Ihre Berechnungen sind nicht korrekt. Elektrische Signale bewegen sich mit einer Geschwindigkeit, die niedriger als die Lichtgeschwindigkeit ist, abhängig von der Geometrie des Drahtes.
Giulio Muscarello
5
Bitte verwenden Sie nicht "exponentiell", wenn es für diese Beziehung völlig zutreffendere Wörter gibt (quadratisch, kubisch usw.) ...
Oliver Charlesworth
7
@OliCharlesworth Bitte lesen Sie die Fußnote. Das ist genau der Grund , warum die Fußnote dort ist und warum ich überall darauf verweise exponential. Dies ist eine vollkommen gültige Verwendung des Wortes, und es wäre tangential zum Punkt dieser Antwort, sich in mathematischen Details zu verlieren. Wenn Sie wirklich versuchen möchten, dies zu "korrigieren", können Sie eine Bearbeitung vorschlagen. Es liegt nicht an mir, ob es akzeptiert wird oder nicht, solange Sie die Bedeutung nicht wesentlich ändern.
Bob
14

Physik ist Physik. Wir können nicht immer mehr Transistoren in immer kleinere Räume packen. Irgendwann wird es so klein, dass man sich mit komischem Quantenmist auseinandersetzt. Irgendwann können wir nicht mehr doppelt so viele Transistoren pro Jahr einbauen wie früher (darum geht es in Moores Gesetz).

Rohe Taktraten bedeuten nichts. Mein alter Pentium M war ungefähr halb so schnell wie eine moderne Desktop-CPU (und dennoch in vielerlei Hinsicht schneller ) - und moderne Systeme nähern sich kaum den Geschwindigkeiten von Systemen vor 10 Jahren (und sind eindeutig schneller). Grundsätzlich führt ein 'einfaches' Erhöhen der Taktrate in vielen Fällen nicht zu einem echten Leistungszuwachs. Es kann bei einigen Operationen mit Singlethreading hilfreich sein , aber Sie sollten das Designbudget besser für eine höhere Effizienz in Bezug auf alles andere ausgeben.

Mit mehreren Kernen können Sie zwei oder mehr Aufgaben gleichzeitig ausführen, sodass Sie nicht warten müssen, bis eine Aufgabe für die nächste abgeschlossen ist. Kurzfristig können Sie einfach zwei vorhandene Kerne in dasselbe Paket einfügen (z. B. mit dem Pentium Ds und dessen MCM, das ein Übergangsdesign war), und Sie haben ein System, das doppelt so schnell ist. Die meisten modernen Implementierungen teilen sich natürlich Dinge wie einen Speichercontroller.

Sie können auch auf verschiedene Arten intelligenter bauen. ARM macht Big-Little - mit 4 "schwachen" Low-Power-Kernen, die zusammen mit 4 leistungsstärkeren Kernen arbeiten, haben Sie das Beste aus beiden Welten. Mit Intel können Sie Drosseln (für eine bessere Energieeffizienz) oder bestimmte Kerne übertakten (für eine bessere Single-Thread-Leistung). Ich erinnere mich, dass AMD etwas mit Modulen macht.

Sie können auch Dinge wie Speichercontroller (so dass Sie eine geringere Latenz haben) und E / A-bezogene Funktionen (die moderne CPU hat keine Nordbrücke) sowie Video (was bei Laptops und AIW-Design wichtiger ist) verschieben. Es ist sinnvoller, diese Dinge zu tun, als die Geschwindigkeit immer weiter zu steigern.

Irgendwann funktionieren 'mehr' Kerne möglicherweise nicht mehr - obwohl GPUs Hunderte von Kernen haben.

Mit Multicores als solchen können Computer auf all diese Arten intelligenter arbeiten .

Geselle Geek
quelle
1
Es sollte beachtet werden, dass GPU-Kerne für einen ganz bestimmten Zweck entwickelt wurden, im Gegensatz zu CPU-Kernen, die eher für allgemeine Zwecke gedacht sind. Es sollte auch beachtet werden, dass Grafikkartenplatinen erheblich größer sind als CPUs (dh auch wenn die Kerne nicht den gesamten Raum auf der Platine nutzen, haben sie immer noch VIEL mehr Platz, um die Wärme abzuleiten).
user2366842
3
stimmt, aber das ist ein Beispiel, bei dem Sie Kerne extrem hochskalieren. Ich werde diese Antwort wahrscheinlich morgen früh noch einmal
lesen
msgstr "Sie können einfach zwei vorhandene Kerne in dasselbe Paket einfügen". Aber wie schaffen sie es, ohne mehr Platz für die zusätzlichen Kerne zu verbrauchen ?! Magie? Einhörner? Welpen? (Von Ihrem Avatar, ich vermute das letztere)
Dieser Brasilianer
Pentium Ds waren das de.wikipedia.org/wiki/Pentium_D im Grunde
Geselle Geek
6
wierd quantum crap+ 1 für das allein!
Dave
9

Einfache Antwort

Die einfachste Antwort auf die Frage

Warum unterliegt "Hinzufügen von mehr Kernen" nicht den gleichen physischen Einschränkungen wie "Beschleunigen der CPU"?

befindet sich tatsächlich in einem anderen Teil Ihrer Frage:

Ich würde die Schlussfolgerung als "daher müssen wir größere Computer haben oder unsere Programme auf mehreren Computern ausführen."

Im Wesentlichen sind mehrere Kerne mit mehreren "Computern" auf demselben Gerät vergleichbar.

Komplexe Antwort

Ein "Kern" ist der Teil des Computers, der tatsächlich Anweisungen verarbeitet (Addieren, Multiplizieren "und" Injizieren "usw.). Ein Core kann immer nur einen Befehl gleichzeitig ausführen. Wenn Sie möchten, dass Ihr Computer "leistungsstärker" ist, können Sie zwei grundlegende Dinge tun:

  1. Durchsatz erhöhen (Taktrate erhöhen, physische Größe verringern usw.)
  2. Verwenden Sie mehr Kerne in demselben Computer

Die physikalischen Grenzen von Nr. 1 sind in erster Linie die Notwendigkeit, Wärme abzuleiten, die durch die Verarbeitung und die Geschwindigkeit eines Elektrons in der Schaltung verursacht wird. Sobald Sie einige dieser Transistoren auf einen separaten Kern aufteilen, verringern Sie das Wärmeproblem weitgehend.

Bei # 2 gibt es eine wichtige Einschränkung: Sie müssen in der Lage sein, Ihr Problem in mehrere unabhängige Probleme aufzuteilen und dann die Antwort zu kombinieren. Auf einem modernen Personalcomputer ist dies kein wirkliches Problem, da es ohnehin eine Menge unabhängiger Probleme gibt, die sich alle um Rechenzeit mit den Kernen wetteifern. Bei intensiven Rechenproblemen helfen jedoch mehrere Kerne nur dann wirklich, wenn das Problem gleichzeitig auftreten kann.

Jason Brubaker
quelle
"Mehrere Kerne sind wie mehrere" Computer "auf demselben Gerät." Richtig, aber meine Verwirrung war, wie passt ihr sie alle da rein? Ich dachte, "wir können nicht schneller fahren" sei ein Symptom für "wir können nicht viel mehr schrumpfen".
Nathan Long
Mehrere Kerne nehmen mehr Platz ein, die Chips werden größer. Die Last wurde von der CPU auf den Software-Entwickler verlagert. Um auf einem dieser riesigen Multi-Core-CPUs schneller zu laufen, muss die Software so geschrieben werden, dass Sie ihre Arbeit halbieren und beide Hälften unabhängig voneinander ausführen können.
James
1
Eine kurze Antwort ist, dass der Stromverbrauch proportional zum Würfel der Taktrate ist. Bei Signalen, die größere Entfernungen zurücklegen, wird es schwieriger, die Illusion eines einzelnen Threads aufrechtzuerhalten. Die ausführliche Antwort: amazon.com/
Rob
6

Warum unterliegt "Hinzufügen von mehr Kernen" nicht den gleichen physischen Einschränkungen wie "Beschleunigen der CPU"?

Sie sind mit denselben physischen Einschränkungen konfrontiert, aber die Umstellung auf Multicore-Design gibt uns eine gewisse Atempause, bevor wir einige von ihnen treffen. Gleichzeitig treten andere durch diese Einschränkungen verursachte Probleme auf, die jedoch leichter zu überwinden sind.

Fakt 1: Der Stromverbrauch und die abgegebene Wärme wachsen schneller als die Rechenleistung. Wenn Sie eine CPU von 1 GHz auf 2 GHz schalten, steigt der Stromverbrauch von 20 W auf 80 W, ebenso wie die abgegebene Wärme. (Ich habe gerade diese Zahlen erfunden, aber es ist ganz so, wie es funktioniert)

Fakt 2: Wenn Sie eine zweite CPU kaufen und beide mit 1 GHz betreiben, verdoppeln Sie Ihre Rechenleistung. Zwei CPUs mit 1 GHz könnten dieselbe Datenmenge verarbeiten wie eine 2-GHz-CPU, aber jede verbraucht nur 20 W Energie, das sind insgesamt 40 W.

Profit: Die Verdoppelung der CPU-Anzahl anstelle der Taktfrequenz spart Energie und wir sind der "Frequenzbarriere" nicht mehr so ​​nahe wie bisher.

Problem: Sie müssen die Arbeit auf zwei CPUs aufteilen und die Ergebnisse später kombinieren.

Wenn Sie dieses Problem in akzeptabler Zeit und mit weniger Energie lösen können, als Sie gerade eingespart haben, dann haben Sie gerade durch den Einsatz mehrerer CPUs profitiert.

Jetzt müssen Sie nur noch zwei CPUs zu einer Dual-Core-CPU zusammenführen und schon sind Sie zu Hause. Dies ist von Vorteil, da Kerne einige Teile der CPU gemeinsam nutzen können, z. B. Cache ( verwandte Antwort ).

gronostaj
quelle
Wir treffen physikalische Einschränkungen auf 1000 verschiedene Arten, Größe des Chips (für Multi-Cores, was zu einem kleineren Herstellungsprozess führt), Größe des Mobos (für Multi-CPU), durch die Leiterbahnen gezogene Verstärker (beide). Es ist nicht so, dass Sie 2 CPU auf einem M-ATX oder 4 und Speicher auf einem ATX-Board platzieren könnten. Ich stimme dem Rest zu.
Rostol
@Rostol Das ist ein guter Punkt, ich habe die Antwort bearbeitet.
Gronostaj
5

Lange Rede, kurzer Sinn: Die Beschleunigung einzelner Kerne ist an ihre Grenzen gestoßen. Wir verkleinern sie und fügen weitere hinzu, bis sie an ihre Grenzen stoßen oder wir auf bessere Materialien umsteigen können (oder einen grundlegenden Durchbruch erzielen, der die etablierte Technologie umstürzt, wie z Quanten-Computing (in häuslicher Größe, tatsächlich arbeitend, Quanten-Computing).

Ich denke, dieses Problem ist mehrdimensional und es wird etwas Schreibarbeit erfordern, um ein vollständigeres Bild zu zeichnen:

  1. Physikalische Einschränkungen (durch die tatsächliche Physik auferlegt): Wie Lichtgeschwindigkeit, Quantenmechanik, all das.
  2. Herstellungsprobleme: Wie fertigen wir immer kleinere Strukturen mit der erforderlichen Präzision? Rohstoffbedingte Probleme, Materialien zum Aufbau von Schaltkreisen usw., Haltbarkeit.
  3. Architekturprobleme: Wärme, Inferenz, Stromverbrauch etc.
  4. Wirtschaftliche Probleme: Was ist der billigste Weg, um dem Benutzer mehr Leistung zu bieten?
  5. Anwendungsfälle und Wahrnehmung der Leistung durch den Benutzer.

Es kann noch viel mehr geben. Eine Mehrzweck-CPU versucht, eine Lösung zu finden, um all diese Faktoren (und mehr) in einen massenproduzierbaren Chip zu verwandeln, der 93% der auf dem Markt befindlichen Subjekte erfüllt. Wie Sie sehen, ist der letzte wichtige Punkt, die Kundenwahrnehmung, die direkt von der Art und Weise abgeleitet wird, wie der Kunde die CPU nutzt.

Fragen Sie sich, was ist Ihre übliche Anwendung? Vielleicht: 25 Firefox-Registerkarten, von denen jede einige Anzeigen im Hintergrund abspielt, während Sie Musik hören, während Sie auf Ihren Build-Auftrag warten, den Sie vor ungefähr zwei Stunden gestartet haben, um ihn zu beenden. Das ist eine Menge Arbeit, und dennoch möchten Sie eine reibungslose Erfahrung. Aber Ihre CPU kann zur Zeit EINE Aufgabe bewältigen! Auf einzelne Sache. Also, was Sie tun, ist, Sie teilen die Dinge auf und stellen eine lange Schlange, und jeder bekommt seinen eigenen Anteil und alle sind glücklich. Mit Ausnahme von dir, weil alle Dinge träge und überhaupt nicht glatt werden.

Sie beschleunigen also Ihre CPU, um mehr Operationen in der gleichen Zeit auszuführen. Aber wie Sie sagten: Wärme- und Stromverbrauch. Und hier kommen wir zum Rohstoffteil. Silizium wird leitfähiger, wenn es heißer wird, was bedeutet, dass beim Aufheizen mehr Strom durch das Material fließt. Transistoren haben einen höheren Stromverbrauch, wenn Sie sie schneller schalten. Auch hohe Frequenzen verschlechtern das Übersprechen zwischen kurzen Kabeln. Wie Sie sehen, wird die Beschleunigung zu einer "Kernschmelze" führen. Solange wir keine besseren Rohstoffe als Silizium oder viel bessere Transistoren haben, stecken wir dort fest, wo wir uns mit Single-Core-Geschwindigkeit befinden.

Dies bringt uns wieder dorthin zurück, wo wir angefangen haben. Parallel dazu Dinge erledigen. Fügen wir einen weiteren Kern hinzu. Jetzt können wir tatsächlich zwei Dinge gleichzeitig tun. Lassen Sie uns also die Dinge ein wenig abkühlen und einfach Software schreiben, die ihre Arbeit auf zwei weniger leistungsfähige, aber funktionalere Kerne aufteilen kann. Dieser Ansatz hat zwei Hauptprobleme (abgesehen davon, dass die Softwarewelt Zeit benötigt, um sich daran anzupassen): 1. Vergrößern Sie den Chip oder verkleinern Sie den einzelnen Kern. 2. Einige Aufgaben können einfach nicht in zwei Teile aufgeteilt werden, die gleichzeitig ausgeführt werden. Fügen Sie so lange Kerne hinzu, wie Sie sie verkleinern können, oder vergrößern Sie den Chip, um das Hitzeproblem in Schach zu halten. Oh und lasst uns den Kunden nicht vergessen. Wenn wir unsere Verwendungszwecke ändern, müssen sich die Branchen anpassen. Sehen Sie sich all die glänzenden "neuen" Dinge an, die sich die Mobilbranche ausgedacht hat.

Ja, diese Strategie wird an ihre Grenzen stoßen! Und Intel weiß das, deshalb heißt es, die Zukunft liege woanders. Aber sie werden es so lange tun, wie es billig, effektiv und machbar ist.

Last but not least: Physik. Die Quantenmechanik begrenzt das Schrumpfen der Späne. Die Lichtgeschwindigkeit ist noch keine Grenze, da sich Elektronen in Silizium nicht mit Lichtgeschwindigkeit fortbewegen können. Tatsächlich ist sie viel langsamer. Es ist auch die Impulsgeschwindigkeit, die die Hardcap-Geschwindigkeit eines Materials erhöht. So wie sich Schall im Wasser schneller ausbreitet als in der Luft, breiten sich elektrische Impulse beispielsweise in Graphen schneller aus als in Silizium. Dies führt zurück zu Rohstoffen. Graphen ist hinsichtlich seiner elektrischen Eigenschaften hervorragend. Es wäre ein viel besseres Material, CPUs daraus zu bauen, leider ist es sehr schwer, große Stückzahlen zu produzieren.

Paradoxon
quelle
2

Angenommen, Sie haben (als unrealistisches Beispiel, sollten es aber dennoch verdeutlichen) eine CPU mit 100F. Normalerweise funktioniert Multicore, indem die Taktfrequenz der CPU, die mit 100F läuft, verringert und damit die Geschwindigkeit verringert wird. Da es nicht mehr so ​​heiß ist, können sie ein zweites, drittes oder sogar viertes direkt daneben platzen, ohne die Gesamttemperatur der CPU wesentlich zu beeinflussen und die Vorteile von Multicore zu nutzen. Dies ist natürlich mit einem gewissen Aufwand verbunden, da die Kerne immer noch von einem Ort aus von einem Kern aus gesteuert werden müssen. Je mehr Kerne Sie hinzufügen, desto mehr Aufwand entsteht. Bei einzelnen Kernen wird umso mehr Wärme erzeugt, je höher die Drehzahl ist. Dies hat offensichtlich physikalische Einschränkungen (dh nach einem bestimmten Punkt beginnt es nachteilig für die Leistung zu werden,

Im Laufe der Zeit haben sie Möglichkeiten gefunden, die physische Größe der CPUs zu verringern. Aus diesem Grund haben wir den Bedarf an mehr Speicherplatz noch nicht wirklich erfüllt, obwohl beispielsweise 16 Kern-CPUs nicht wirklich vorhanden sind (at außerhalb von Geräten der Server-Klasse aufgrund der physischen Größenbeschränkungen, da Prozessoren der Server-Klasse physisch erheblich größer sind als Standard-Consumer-Prozessoren.

user2366842
quelle
2

CPU = Automotor: Es ist einfacher, ein leistungsstärkeres Auto mit 16 Ventilen, dh einen Lamborghini, herzustellen, als ein Auto mit hoher Drehzahl, das ein riesiges Ventil / Zylinder bei 100.000 U / min hätte.

Die Gründe dafür sind physikalisch und chemisch. Silizium muss durch einen Raketentreibstoff ersetzt werden, um das Gleichgewicht zwischen Anzahl der Kerne und Kerngeschwindigkeit zu verändern.

Predatflaps
quelle
2

Ich würde sagen, dass die primäre Beschränkung der Rechenleistungsgrenzen in erster Linie mit der Grenze der Geschwindigkeit zusammenhängt, mit der wir das Elektron durch einen Kreis bewegen können ( Geschwindigkeit der Lichtelektronendrift ). Es gibt viele weitere Faktoren, wie Sie erwähnt haben.

Das Hinzufügen zusätzlicher Kerne würde den Prozessor nicht schneller machen, obwohl er in der gleichen Zeit mehr verarbeiten kann.

Moores Gesetz ist eine sehr interessante und informative Lektüre. Insbesondere dieses Zitat ist hier relevant:

Man könnte auch die theoretische Leistung eines eher praktischen "ultimativen Laptops" mit einer Masse von einem Kilogramm und einem Volumen von einem Liter einschränken. Dies erfolgt unter Berücksichtigung der Lichtgeschwindigkeit, der Quantenskala, der Gravitationskonstante und der Boltzmann-Konstante, was eine Leistung von 5,4258 × 10 50 logischen Operationen pro Sekunde bei ungefähr 10 31 Bits ergibt .

jredd
quelle
2
Im Übrigen bewegen sich Elektronen tatsächlich sehr langsam ("Driftgeschwindigkeit"), in der Größenordnung von Millimetern pro Sekunde IIRC. Sie beziehen sich eher auf die Geschwindigkeit, mit der sich das elektrische Feld ausbreitet.
Bob
2
Ich wusste, dass ich es nicht wagen sollte, so zu handeln, wie ich die Physik im geringsten verstehe. :) Vielen Dank, dass Sie mich diesbezüglich korrigiert / informiert haben.
15.
Die tatsächlichen Taktraten, bei denen die Ausbreitungsgeschwindigkeit einen signifikanten Effekt hat, liegen bei mehr als 10 GHz. Es gibt andere Gründe, warum moderne Prozessoren Mehrfachkerne höheren Takten vorziehen.
Bob
1

Lange Geschichte noch kürzer:

Wir brauchen wirklich keine schnelleren CPUs. Abgesehen von einigen hochspezialisierten Anwendungen * war die CPU seit Jahren kein Engpass mehr - alle Peripheriebits wie Speicher, Speicher und Netzwerk lassen die CPU normalerweise auf Millionen von Taktzyklen warten, in denen sie andere Aufgaben ausführen kann. Ein zweiter Kern kann mehr "andere Dinge" tun, wodurch für den Benutzer eine Wahrnehmung höherer Leistung erzeugt wird.

Viele mobile Geräte, Laptops usw. übertakten die CPU, um eine längere Akkulaufzeit und niedrigere Temperaturen zu erzielen. Kein großer Anreiz, einen 3,5-GHz-ARM-Kern zu entwickeln, wenn Ihr Hauptkunde ihn mit 1,3 GHz betreibt.

  • Diese spezialisierten Anwendungen kaufen nicht genug, um die Entwicklung eines 5-GHz-Kerns zu rechtfertigen. Sie kümmern sich auch nicht um Hitze oder Strom - kaufen Sie den schnellsten, übertakten Sie ihn und schrauben Sie einen wassergekühlten Kühlkörper in der Größe eines Toasters an.
Peter
quelle
1
Es ist nicht "Wahrnehmung", sondern "bessere Latenz". Ich denke, dies ist eines der Hauptprobleme, die wir haben. Ein starker Single-Threaded-Durchsatz kostet um jeden Preis Mentalität. Consumer-Betriebssysteme sind noch nicht auf Echtzeit oder Parallelität ausgerichtet.
Rob
@peter Du machst einen sehr guten Punkt und danke, dass du das erklärt hast. Es ist etwas, an das ich mich als Programmierer erinnern muss. :) Für die Zwecke dieser Frage ist es jedoch immer noch ein Nebenproblem. Meine Frage war, warum wir keine schnelleren Taktraten bekommen können. Bei Ihrer Antwort geht es darum, warum wir das derzeit nicht brauchen.
Nathan Long
1
@ NathanLong "kann nicht" und "muss nicht" sind verknüpft. Sie können keine schnelleren Prozessoren bekommen, da niemand bereit ist, die Milliarden oder Fünf zu investieren, die für die Entwicklung benötigt werden (5 GHz ist wahrscheinlich ohnehin ein Übermaß an physischen Grenzen). Keiner ist bereit zu investieren, da es keinen realistischen Markt gibt, wenn die Prozessorgeschwindigkeit insgesamt sinkt. Einige der aktuellen Desktops gehören zur 1,5-GHz-Klasse (vor 10 Jahren noch top of the line), weil sie für diesen Markt billiger, kühler und schnell genug sind Segment.
Peter
1

Kurze und einfache Antwort:

Warum gibt es nicht die gleichen physischen Einschränkungen, wenn Sie von einem Lastwagen 100 Mal so viel transportieren wie von einem Lastwagen mit 160 km / h auf einen Lastwagen mit 150 km / h?

Beantworten Sie diese Frage, und Ihre Frage wird ebenfalls beantwortet. Das Konzept ist ungefähr dasselbe.

Alex D
quelle
1

Ich denke, ein weiterer Faktor ist die Temperatur. Wenn Sie die Taktfrequenz erhöhen, steigt die Kerntemperatur. Wenn Sie mehr Kerne hinzufügen, obwohl der Stromverbrauch steigt, wird dieser auf die Kerne verteilt, sodass die Temperatur gleich bleibt (wie wenn Sie zwei heiße Flüssigkeiten mit der gleichen Temperatur zueinander hinzufügen, bleibt die Temperatur gleich) ).

Ein weiterer Grund ist, dass eine Erhöhung der Taktfrequenz den Stromverbrauch in der Regel um das Quadrat des Faktors erhöht, mit dem Sie die Frequenz erhöhen (abhängig davon, auf welche anderen Barrieren Sie an einem bestimmten Punkt treffen). Wenn Sie also die Taktfrequenz erhöhen, erhöht sich der Stromverbrauch um ein Quadrat, wenn Sie mehr Kerne hinzufügen, wird er nur linear erhöht.

Morty
quelle
0

Die Antwort auf die Frage, warum "nicht mehr Kerne hinzufügen" denselben physischen Einschränkungen unterliegt wie die Frage "CPU schneller machen", lautet, dass ein Multicore-System genau denselben Einschränkungen unterliegt wie eine Single-Core-CPU. Wir haben einen Punkt erreicht, an dem wir nicht wirklich die Möglichkeit haben, ein Single-Core-System schneller zu machen. Wir haben es also so gemacht, dass wir mehr Dinge auf einmal tun können. Die Herausforderungen in Bezug auf Größe und Koordination sind derzeit einfacher zu lösen als schneller zu werden. Der Nachteil ist, wenn eine Aufgabe nicht in Teile zerlegt werden kann, werden wir möglicherweise nicht viel schneller als ein Single-Core-System.

Philip Tinney
quelle
0

Sie können eine CPU nicht schneller machen, indem Sie einfach mehr Gates einbauen. Letztendlich müssen Befehle ausgeführt werden, und jeder Befehl erfordert mehrere "Umschalt" -Operationen. Es gibt grundlegende physikalische Grenzen (Quantenmechanik - das Uncertainty-Prinzip), die es sehr schwierig machen, die "Taktrate" einer CPU über die Geschwindigkeit aktueller Top-End-Systeme hinaus zu erhöhen.

Daniel R Hicks
quelle