Einfache Antwort

Einfache Antwort

Im Jahr 2014 höre ich, wie viele Programmiersprachen für ihre Parallelitätsfunktionen gepriesen werden. Parallelität soll für Leistungssteigerungen entscheidend sein.

Bei dieser Aussage verweisen viele Menschen auf einen Artikel aus dem Jahr 2005 mit dem TitelDas kostenlose Mittagessen ist vorbei: Eine grundlegende Wende hin zur Parallelität in der SoftwareDas grundlegende Argument besteht darin, dass es immer schwieriger wird, die Taktfrequenz von Prozessoren zu erhöhen, wir aber immer noch mehr Kerne auf einen Chip packen können und dass zur Erzielung von Leistungssteigerungen Software geschrieben werden muss, die die Vorteile mehrerer Kerne nutzt.

Einige wichtige Zitate:

Wir sind es gewohnt, dass 500-MHz-CPUs durch 1-GHz-CPUs ersetzt werden, die dann durch 2-GHz-CPUs ersetzt werden usw. Heute liegen wir bei Mainstream-Computern im 3-GHz-Bereich.

Die entscheidende Frage ist: Wann wird es enden? Schließlich sagt Moores Gesetz exponentielles Wachstum voraus, und dieses kann offensichtlich nicht ewig so weitergehen, bevor wir harte physikalische Grenzen erreichen; Licht wird nicht schneller. Das Wachstum muss irgendwann langsamer werden und sogar enden.

... Es ist immer schwieriger geworden, höhere Taktfrequenzen auszunutzen, und zwar nicht nur aufgrund eines, sondern mehrerer physikalischer Probleme, insbesondere der Wärme (zu viel und zu schwer abzuleiten), des Stromverbrauchs (zu hoch) und von Stromleckproblemen.

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

...Bei Multicore geht es darum, zwei oder mehr aktuelle CPUs auf einem Chip auszuführen.

Die Vorhersagen dieses Artikels scheinen sich bewahrheitet zu haben, aber ich verstehe nicht, warum. Ich habe nur sehr vage Vorstellungen davon, wie Hardware funktioniert.

Meine vereinfachte Ansicht ist: „Es wird immer schwieriger, mehr Rechenleistung auf demselben Raum unterzubringen“ (aufgrund von Problemen mit Hitze, Stromverbrauch usw.). Ich würde erwarten, dass die Schlussfolgerung lautet: „Deshalb müssen wir größere Computer haben oder unsere Programme auf mehreren Computern ausführen.“ (Und tatsächlich hören wir immer mehr von verteiltem Cloud-Computing.)

Ein Teil der Lösung scheinen jedoch Multi-Core-Architekturen zu sein. Sofern die Computer nicht größer werden (was nicht der Fall ist), scheint dies nur eine andere Art zu sein, zu sagen: „Packen Sie mehr Rechenleistung in den gleichen Raum.“

Warum unterliegen die Optionen „mehr Kerne hinzufügen“ nicht denselben physikalischen Einschränkungen wie „die CPU schneller machen“?

Erklären Sie es bitte so einfach wie möglich. :)

Antwort1

Zusammenfassung

  • Wirtschaftlichkeit. Es ist billiger und einfacher, eine CPU mit mehr Kernen als mit einer höheren Taktfrequenz zu entwickeln, weil:

  • Deutlicher Anstieg des Stromverbrauchs. Der Stromverbrauch der CPU steigt schnell an, wenn Sie die Taktfrequenz erhöhen. Sie können die Anzahl der Kerne, die mit einer niedrigeren Geschwindigkeit arbeiten, im erforderlichen thermischen Raum verdoppeln, um die Taktfrequenz um 25 % zu erhöhen. Vervierfachen Sie sie für 50 %.

  • Es gibt noch weitere Möglichkeiten, die sequentielle Verarbeitungsgeschwindigkeit zu erhöhen, und die CPU-Hersteller machen von diesen auch regelmäßig Gebrauch.


Ich werde mich stark auf die hervorragenden Antworten stützen beidiese Frageauf einer unserer SE-Schwesterseiten. Also geben Sie ihnen ein Upvote!


Taktfrequenzbeschränkungen

Es gibt einige bekannte physikalische Einschränkungen der Taktfrequenz:

  • Übertragungszeit

    Die Zeit, die ein elektrisches Signal braucht, um einen Stromkreis zu durchlaufen, wird durch die Lichtgeschwindigkeit begrenzt. Dies ist eine harte Grenze, und es gibt keinen bekannten Weg, sie zu umgehen 1 . Bei Gigahertz-Takten nähern wir uns dieser Grenze.

    Aber so weit sind wir noch nicht. 1 GHz bedeutet eine Nanosekunde pro Takt. In dieser Zeit kann Licht 30 cm zurücklegen. Bei 10 GHz kann Licht 3 cm zurücklegen. Ein einzelner CPU-Kern ist etwa 5 mm breit, also werden wir diese Probleme erst ab 10 GHz haben.2

  • Schaltverzögerung

    Es genügt nicht, nur die Zeit zu berücksichtigen, die ein Signal braucht, um von einem Ende zum anderen zu gelangen. Wir müssen auch die Zeit berücksichtigen, die ein Logikgatter in der CPU braucht, um von einem Zustand in einen anderen zu wechseln! Wenn wir die Taktfrequenz erhöhen, kann dies zu einem Problem werden.

    Leider kenne ich mich mit den Einzelheiten nicht aus und kann auch keine Zahlen nennen.

    Offensichtlich kann das Einspeisen von mehr Leistung das Schalten beschleunigen, aber das führt sowohl zu Stromverbrauchs- als auch zu Wärmeableitungsproblemen. Mehr Leistung bedeutet auch, dass Sie voluminösere Leitungen benötigen, die diese ohne Beschädigung verarbeiten können.

  • Wärmeableitung/Stromverbrauch

    Das ist das große Thema. Zitat ausAntwort von fuzzyhair2:

    Neuere Prozessoren werden in CMOS-Technologie hergestellt. Bei jedem Taktzyklus wird Energie verbraucht. Höhere Prozessorgeschwindigkeiten bedeuten daher auch eine höhere Wärmeableitung.

    Es gibt einige schöne Messungen beidieser AnandTech-Forumsthread, und sie haben sogar eine Formel für den Stromverbrauch (der mit der erzeugten Wärme einhergeht) abgeleitet:

    Formel
    Gutschrift anEs ist mir egal

    Wir können dies in der folgenden Grafik visualisieren:

    Graph
    Gutschrift anEs ist mir egal

    Wie Sie sehen, steigt der Stromverbrauch (und die erzeugte Wärme) extrem schnell an, wenn die Taktfrequenz über einen bestimmten Punkt hinaus erhöht wird. Dies macht es unpraktisch, die Taktfrequenz 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. Auch die Spannung muss erhöht werden, um die Stabilität bei höheren Taktraten aufrechtzuerhalten. Dies ist möglicherweise nicht ganz richtig. Sie können in einem Kommentar gerne auf Korrekturen hinweisen oder diese Antwort bearbeiten.


Mehr Kerne?

Warum also mehr Kerne? Nun, das kann ich nicht definitiv beantworten. Das müssten Sie die Leute bei Intel und AMD fragen. Aber wie Sie oben sehen, wird es bei modernen CPUs irgendwann unpraktisch, die Taktfrequenz zu erhöhen.

Ja, Multicore erhöht auch den Stromverbrauch und die Wärmeableitung. Aber es vermeidet geschickt die Probleme mit Übertragungszeit und Schaltverzögerung. Und 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 Taktfrequenz um 25 % problemlos verdoppeln.

Einige Leute haben es getan - die aktuelleÜbertaktungs-Weltrekordliegt knapp unter 9 GHz. Es ist jedoch eine große technische Herausforderung, dies zu erreichen und gleichzeitig den Stromverbrauch in akzeptablen Grenzen zu halten. Die Entwickler haben irgendwann entschieden, dass das Hinzufügen weiterer Kerne, um mehr Arbeit zu erledigen,parallel zuwürde in den meisten Fällen eine effektivere Leistungssteigerung bewirken.

Hier kommt die Wirtschaftlichkeit ins Spiel - es war wahrscheinlich billiger (weniger Entwicklungszeit, weniger komplizierte Herstellung), den Multicore-Weg zu gehen. Und es ist einfach zu vermarkten - wer liebt nicht die brandneueOcta-CoreChip? (Natürlich wissen wir, dass Multicore ziemlich nutzlos ist, wenn die Software es nicht nutzt ...)

DortIstein Nachteil von Multicore: Sie benötigen mehr physischen Platz, um den zusätzlichen Kern unterzubringen. Die CPU-Prozessgrößen schrumpfen jedoch ständig stark, sodass genügend Platz vorhanden ist, um zwei Kopien eines vorherigen Designs unterzubringen - der eigentliche Kompromiss besteht darin, dass keine größeren, komplexeren Einzelkerne erstellt werden können. Andererseits ist die zunehmende Kernkomplexität einschlechte SacheAus Designsicht bedeutet mehr Komplexität mehr Fehler/Bugs und Herstellungsfehler. Wir scheinen einen guten Mittelweg gefunden zu haben: effiziente Kerne, die einfach genug sind, um nicht zu viel Platz einzunehmen.

Wir haben bei der Anzahl der Kerne, die wir bei den aktuellen Prozessgrößen auf einen einzelnen Chip packen können, bereits eine Grenze erreicht. Wir könnten bald eine Grenze erreichen, wie weit wir die Dinge verkleinern können. Was kommt also als Nächstes? Brauchen wir mehr? Das ist leider schwer zu beantworten. Ist hier jemand Hellseher?


Andere Möglichkeiten zur Leistungssteigerung

Wir können also die Taktfrequenz nicht erhöhen. Und mehr Kerne haben einen weiteren Nachteil: Sie helfen nur, wenn die darauf laufende Software sie auch nutzen kann.

Was können wir also sonst noch tun? Wie können moderne CPUs bei gleicher Taktfrequenz so viel schneller sein als ältere?

Die Taktfrequenz ist eigentlich nur eine sehr grobe Schätzung der internen Funktionsweise einer CPU. Nicht alle Komponenten einer CPU arbeiten mit dieser Geschwindigkeit – manche arbeiten möglicherweise alle zwei Ticks usw.

Bedeutsamer ist die Zahl derAnweisungenSie können pro Zeiteinheit ausführen. Dies ist ein weitaus besserer Maßstab dafür, wie viel ein einzelner CPU-Kern leisten kann. Manche Anweisungen benötigen einen Taktzyklus, andere drei. Die Division ist beispielsweise erheblich langsamer als die Addition.

Wir könnten also die Leistung einer CPU steigern, indem wir die Anzahl der Befehle erhöhen, die sie pro Sekunde ausführen kann. Wie? Nun, man könnte einen Befehl effizienter machen - vielleicht dauert eine Division jetzt nur noch zwei Zyklen. Dann gibt esAnweisungs-Pipelining. Durch die Aufteilung jedes Befehls in mehrere Phasen ist es möglich, Befehle „parallel“ auszuführen. Jeder Befehl hat jedoch immer noch eine klar definierte, sequenzielle Reihenfolge in Bezug auf die Befehle davor und danach und erfordert daher im Gegensatz zu Multicore keine Softwareunterstützung.

Es gibtein andererWeg: spezialisiertere Anweisungen. Wir haben Dinge wie SSE gesehen, die Anweisungen zum Verarbeiten großer Datenmengen auf einmal bereitstellen. 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 aber eine nette Leistungssteigerung. Vor kurzem gab es AES-NI, das hardwarebeschleunigte AES-Verschlüsselung und -Entschlüsselung bietet, die viel schneller ist als eine Reihe in Software implementierter Arithmetik.


1 Jedenfalls nicht, ohne sich eingehend mit der theoretischen Quantenphysik zu befassen.

2 Es könnte sogar niedriger sein, da die Ausbreitung des elektrischen Felds nicht ganz so schnell ist wie die Lichtgeschwindigkeit im Vakuum. Und das gilt nur für geradlinige Entfernungen – es ist wahrscheinlich, dass es mindestens einen Weg gibt, der erheblich länger ist als eine gerade Linie.

Antwort2

Physik ist Physik. Wir können nicht ewig mehr Transistoren in immer kleinere Räume packen. Irgendwann wird es so klein, dass man es mit seltsamem Quantenkram zu tun hat. Irgendwann können wir nicht mehr packenzweimalso viele Transistoren pro Jahr wie früher (darum geht es beim Mooreschen Gesetz).

Rohe Taktraten bedeuten nichts. Mein alter Pentium M war etwa halb so schnell wie eine aktuelle Desktop-CPU (und dennoch in vielerlei HinsichtSchneller) – und moderne Systeme sindkaumnähern sich den Geschwindigkeiten von Systemen vor 10 Jahren an (und sind deutlich schneller). Im Grunde genommen bringt eine „einfache“ Erhöhung der Taktfrequenz in vielen Fällen keine wirkliche Leistungssteigerung. Es kann helfen inmancheSinglethread-Operationen, aber Sie sind besser dran, wenn Sie das Designbudget für eine bessere Effizienz in Bezug auf alles andere ausgeben.

Mehrere Kerne ermöglichen Ihnenzwei oder mehrere Dinge gleichzeitig, sodass Sie nicht warten müssen, bis eine Sache fertig ist, bevor Sie mit der nächsten beginnen können. Kurzfristig können Sie einfach zwei vorhandene Kerne in dasselbe Paket packen (zum Beispiel mit demPentium Ds und ihr 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 andere Weise intelligenter bauen. ARM macht Big-Little – 4 „schwache“ Kerne mit geringem Stromverbrauch arbeiten neben 4 leistungsstärkeren Kernen, sodass Sie das Beste aus beiden Welten haben. Intel ermöglicht Ihnen, die Leistung zu reduzieren (für eine bessere Energieeffizienz) oder zu übertaktenSpezifischKerne (für bessere Einzelthread-Leistung). Ich erinnere mich, dass AMD etwas mit Modulen macht.

Sie können auch Dinge wie Speichercontroller (damit Sie eine geringere Latenz haben) und IO-bezogene Funktionen (die moderne CPU hat keine Northbridge) sowie Video (was bei Laptops und AIW-Design wichtiger ist) verschieben. Es ist sinnvoller, diese Dinge zu tun, als „nur“ die Taktrate weiter zu erhöhen.

Irgendwann werden mehr Kerne nicht mehr funktionieren – obwohl GPUsHundertevon Kernen.

Multicores als solche lassen Computer arbeitenintelligenterauf all diese Arten.

Antwort3

Einfache Antwort

Die einfachste Antwort auf die Frage

Warum unterliegen die Optionen „mehr Kerne hinzufügen“ nicht denselben physikalischen Einschränkungen wie „die CPU schneller machen“?

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

Ich würde erwarten, dass die Schlussfolgerung lautet: „Deshalb müssen wir größere Computer haben oder unsere Programme auf mehreren Computern ausführen.“

Im Wesentlichen sind mehrere Kerne so, als ob sich auf demselben Gerät mehrere „Computer“ befänden.

Komplexe Antwort

Ein „Kern“ ist der Teil des Computers, der tatsächlich Anweisungen verarbeitet (Addieren, Multiplizieren, „und“ usw.). Ein Kern kann jeweils nur eine Anweisung 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. Mehr Kerne im selben Computer nutzen

Die physikalischen Einschränkungen bei Nr. 1 sind in erster Linie die Notwendigkeit, die durch die Verarbeitung und die Geschwindigkeit eines Elektrons im Schaltkreis verursachte Wärme abzuführen. Wenn Sie einige dieser Transistoren auf einen separaten Kern aufteilen, verringern Sie das Wärmeproblem erheblich.

Es gibt eine wichtige Einschränkung bei Punkt 2: Sie müssen in der Lage sein, Ihr Problem in mehrereunabhängigProbleme und kombinieren Sie dann die Antwort. Auf einem modernen PC ist das kein wirkliches Problem, da es ohnehin jede Menge unabhängiger Probleme gibt, die alle um Rechenzeit mit den Kernen konkurrieren. Aber bei rechenintensiven Problemen helfen mehrere Kerne nur dann wirklich, wenn das Problem parallel ausgeführt werden kann.

Antwort4

Lange Rede, kurzer Sinn: Die Beschleunigung einzelner Kerne hat ihre Grenzen erreicht, also verkleinern wir sie weiter und fügen mehr davon hinzu, bis wir an ihre Grenzen stoßen oder auf bessere Materialien umsteigen können (oder einen grundlegenden Durchbruch erzielen, der die etablierte Technologie überholt, wie etwa einen Quantencomputer im Heimformat, der tatsächlich funktioniert).

Ich denke, dass dieses Problem mehrdimensional ist und dass einiges an Textarbeit nötig ist, um ein vollständigeres Bild zu zeichnen:

  1. Physikalische Einschränkungen (auferlegt durch die tatsächliche Physik): Wie Lichtgeschwindigkeit, Quantenmechanik und all das.
  2. Fertigungsprobleme: Wie können wir immer kleinere Strukturen mit der erforderlichen Präzision herstellen? Rohstoffbezogene Probleme, Materialien zum Bau von Schaltkreisen usw., Haltbarkeit.
  3. Architekturprobleme: Hitze, Interferenz, Stromverbrauch usw.
  4. Wirtschaftliche Probleme: Was ist der kostengünstigste Weg, um dem Benutzer mehr Leistung zu bieten?
  5. Anwendungsfälle und Benutzerwahrnehmung der Leistung.

Es kann noch viel mehr geben. Eine Mehrzweck-CPU versucht, eine Lösung zu finden, um all diese Faktoren (und mehr) in einem massenproduzierbaren Chip zu vereinen, der 93 % der auf dem Markt erhältlichen Produkte abdeckt. Wie Sie sehen, ist der letzte Punkt der wichtigste: die Kundenwahrnehmung, die sich direkt aus der Art und Weise ergibt, wie der Kunde die CPU verwendet.

Fragen Sie sich, was Ihre übliche Anwendung ist? Vielleicht: 25 Firefox-Tabs, von denen jeder im Hintergrund Werbung abspielt, während Sie Musik hören und gleichzeitig darauf warten, dass Ihr Build-Job, den Sie vor etwa 2 Stunden begonnen haben, fertig wird. Das ist eine Menge Arbeit, und Sie möchten trotzdem ein reibungsloses Erlebnis. Aber Ihre CPU kann EINE Aufgabe gleichzeitig bewältigen! Für eine einzige Sache. Sie teilen die Dinge also auf und erstellen eine laaaange Warteschlange, und jeder bekommt seinen Anteil, und alle sind glücklich. Außer Ihnen, denn alles wird langsam und überhaupt nicht reibungslos.

Sie beschleunigen also Ihre CPU, um mehr Operationen in derselben Zeit ausführen zu können. Aber wie Sie sagten: Wärme und Stromverbrauch. Und da kommen wir zum Rohstoffteil. Silizium wird leitfähiger, wenn es heißer wird, was bedeutet, dass mehr Strom durch das Material fließt, wenn Sie es erhitzen. Transistoren haben einen höheren Stromverbrauch, wenn Sie sie schneller schalten. Außerdem verschlimmern hohe Frequenzen das Übersprechen zwischen kurzen Drähten. Sie sehen also, der Ansatz, die Dinge zu beschleunigen, wird zu einer „Kernschmelze“ führen. Solange wir keine besseren Rohstoffe als Silizium oder viel bessere Transistoren haben, bleiben wir bei der Single-Core-Geschwindigkeit stecken, wo wir sind.

Damit sind wir wieder da, wo wir angefangen haben. Dinge parallel erledigen. Fügen wir einen weiteren Kern hinzu. Jetzt können wir tatsächlich zwei Dinge gleichzeitig tun. Lassen wir es also etwas ruhiger angehen und schreiben wir einfach Software, die ihre Arbeit auf zwei weniger leistungsstarke, aber funktionalere Kerne aufteilen kann. Dieser Ansatz hat zwei Hauptprobleme (außerdem braucht die Softwarewelt Zeit, sich daran zu gewöhnen): 1. Machen Sie den Chip größer oder verkleinern Sie einzelne Kerne. 2. Manche 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 oder den Chip vergrößern und das Hitzeproblem in Schach halten können. Oh, und vergessen wir nicht den Kunden. Wenn wir unsere Anwendungsfälle ändern, müssen sich die Branchen anpassen. Sehen Sie sich all die glänzenden „neuen“ Dinge an, die sich der Mobilsektor ausgedacht hat. Deshalb wird der Mobilsektor als so entscheidend angesehen und jeder möchte ihn in die Finger bekommen.

Ja, diese Strategie WIRD an ihre Grenzen stoßen! Und Intel weiß das, deshalb sagt man, die Zukunft liege woanders. Aber sie werden so lange daran festhalten, wie es billig, effektiv und machbar ist.

Und zu guter Letzt: Physik. Die Quantenmechanik wird die Schrumpfung von Chips begrenzen. Die Lichtgeschwindigkeit ist noch keine Grenze, da Elektronen sich in Silizium nicht mit Lichtgeschwindigkeit fortbewegen können, sondern tatsächlich viel langsamer. Außerdem ist es die Impulsgeschwindigkeit, die die Geschwindigkeit eines Materials begrenzt. So wie sich Schall in Wasser schneller fortbewegt als in Luft, so bewegen sich elektrische Impulse beispielsweise in Graphen schneller als in Silizium. Dies führt uns zurück zu den Rohstoffen. Graphen ist, was seine elektrischen Eigenschaften betrifft, großartig. Es wäre ein viel besseres Material zum Bau von CPUs, leider ist es sehr schwer, es in großen Mengen herzustellen.

verwandte Informationen