Verständnisfrage: serielle CPU vs. parallele GPU

Hallo,
ich hoffe, ihr könnt mir helfen. Ich habe eine ganz grundlegende Frage zu CPUs.

Es heißt ja, eine GPU kann prozentual mehr Chipoberfläche für Fließkommaberechnungen zur Verfügung stellen als eine CPU. Die GPU kann diese ja auch ausnutzen, da sie parallel arbeitet. Wofür braucht aber die CPU so viele Fließkommaberechnungen, wenn sie eh nur seriell arbeitet? Wenn nur ein Thread zur Zeit ausgeführt werden kann, wie können dann zusätzliche Rechenressourcen genutzt werden? Können innerhalb eines Threads Berechnungen parallel ausgeführt werden auch wenn die CPU eigentlich seriell arbeitet? Multitherading gibt es ja erst seit relativ kurzer Zeit und mit vergleichsweise wenig Threads. Das kann ja noch nicht alles sein. Also, wofür braucht die CPU so viele Transistoren?

Ich nehme an die Antwort ist ganz einfach und ich habe bloß irgendwo einen Denkfehler.

Vielen Dank im Voraus.

MfG
Tatjana

Hallo,

Der Rechenkern einer CPU ist so aufgebaut, das pro Kern eine mehrstufige Berechnungsfolge in 16 / 32 / 64… Bit parallel stattfinden kann. ( sogenannte Pipelines )
Dieses sind meistens auch komplexere Berechnungen, wo meist mit Zwischenergebnissen gearbeitet wird, die auf dem CPU - Die in Speicherzellen festgehalten werden.

Den größten Anteil an den Transistoren der CPU machen die mittlerweile mehrere MB großen L2 ( teils auch L3 ) Caches aus.
Wenn Du dann eine CPU mit mehreren Kernen hernimmst, dann steigt die Transistoranzahl dementsprechend nahezu 1:1.

Bei AMD sitzt der Speichercontroller mittlerweise auch in der CPU.
( was früher die Southbridge des Mainboard - Chipsatzes übernahm )

Eine aktuelle GPU hat sehr viel mehr parallele Pipelines ( Shadereinheiten ) als eine CPU, allerdings sehr viel einfacher ( kürzer ) gehalten. Bei den aktuellsten GPUs kommen wir auch auch auf über 2 Mrd. Transistoren für teils mehr als 1600 Shadereinheiten.

Hier ist im Gegensatz zur CPU allerdings nur sehr wenig Speicherplatz ins GPU-Die integriert.

Multithreading gibt es im Consumer-Bereich ( Desktop ) seit dem Pentium IV, im Profibereich ( z.B. Server ) schon weitaus länger. In Servern werden Einzelrechner zu sogenannten Clustern parallel zusammengeschaltet.

Warum letztlich die einfache Architektur der GPU keine CPU ersetzt:

Die GPU kann nur sehr einfache Berechnungen in ihren einzelnen Shader - Pipelines durchführen. Das würde zu extrem vielen Zwischenergebnissen führen, die bis sie irgendwann benötigt werden zwischengespeichert werden müßten. Fehlt einem Kern ein Ergebnis und er darauf warten muss, dann könnten hunderte Shadereinheiten dadurch ausgebremst werden.

Das ist der Vorteil der CPU, denn sie kann pro Kern einen kompletten Thread durchrechnen.

Letztlich ist es auch eine Frage der Programmierung, in wie viele sinnvolle Threads sich die einzelnen Anwendungen aufteilen ( parallelisieren ) lassen. Es gibt ja einige Anwendungen, ( z.B. " Cloud " und manche Bildprogramme, die die enorme Rechenleistung der GPU nutzen können, aber die CPU muss auch diese etlichen Rechenfragmente letztlich wider zusammensetzen.

mfg

nutzlos

Hallo nutzlos.
Vielen Dank für deine Antwort.

Das hat mich schon ein Stück weiter gebracht, allerdings bin ich mir noch unsicher, ob ich alles richtig verstanden habe.

Die CPU verwendet also einen Großteil der Transistoren für Caches, Decoder etc. und relativ wenig auf den eigentlichen Rechnerkern, der die Gleitkommaoperationen durchführt.

Die CPU hat wenige, aber komplexe Pipelines. Die GPU hat viele, kürzere Pipelines. In eine Pipeline kommen nacheinander die Befehle eines Threads. Sobald eine Stufe der Pipeline frei wird, rückt soweit möglich der nächste Befehl nach.

Irgendwann kommen alle (?) Programme an den Punkt an dem die ALU verwendet wird. Ich weiß, dass bei einer GPU ein Kern nicht besonders groß ist. Bei nvidia scheinen z.B. alle Kerne zwei Arithmetisch-logische Einheiten und eine Gleitkommaeinheit zu besitzen. Eine CPU hat wesentlich weniger (jedoch größere) Kerne und auch weniger ALUs.

Die Anzahl der Bits gibt die Berechnungsbreite der ALU an. Mit mehr Bit kann man genauer rechnen und mehr Arbeitsspeicher verwalten(?).

Soweit so gut (hoffentlich). Ich habe jetzt noch etwas Probleme die Funktionsweise der ALU nachzuvollziehen:

Unterscheiden sich die ALUs der CPU und der GPU? In schematischen Darstellungen von CPUs und GPUs scheint die CPU immer wesentlich größere ALUs zu haben als die GPU. Wenn jetzt aber nur ein Befehl zur Zeit ausgeführt werden kann und nur wenige Threads parallel ausgeführt werden, erschließt sich mir nicht wozu eine größere ALU gut sein könnte.

Vielen Dank
Tatjana

Hallo,

Selle Dir das mal praktisch vor:

Du hast 2 Arbeitskolonnen von je 40 Mann und einen Auftrag, wo Deine Truppe diverse Arbeiten in verschiedenen Gewerken ausführen würde.

_ Das CPU - Team: _
Du hast Deine Arbeitskolonnen so aufgeteilt, das es jeweils einen Kolonnenführer je Einheit gibt, der Dir Meldung gibt, wenn irgendwo etwas haken würde. Du kannst " im Fluß " entscheiden, das die betroffenen Kolonnen an anderer Stelle unverzüglich weiterarbeiten und alle MA optimal zum Gelingen / Zeitplan beitragen.

Das wäre eine komplexe Befehlskette, die durch eine leitende Instanz koordiniert und von A - Z zum Ende geführt werden könnte. Jeder einzelne MA. merkt sich seiner Aufgabe entsprechend, was wichtig zum reibungslosem Ablauf nötig wäre.

Das GPU - Team :

Du versuchst alle Deine Arbeiter auf alle möglichen Arbeitsbereiche gleichzeitig zu verteilen, ohne zu berücksichtigen, das manche Arbeiten auf die vorherige Ausführung anderer Gewerke angewiesen wären.
Das könnte also nur dann effektiv parallel funktionieren, wenn Du nur ein einziges Gewerk vertreten würdest und nirgendwo Rücksprache mit anderen Gewerken gehalten werden müßte.
Würdest Du hier also mehrere Gewerke gleichzeitig ausführen lassen wollen, dann hinge in der Reihenfolge einfacher Befehlsketten doch zunächst mal alles am 1. Gewerk.

Da die Koordination komplexer Sachverhalte allerdings an den Firmenleiter ginge, wäre er doch wider in de Funktion als " CPU " gefragt.

Die " FPU " bleibt auch genau so lediglich ein Bestandteil der CPU, wie dei Lohnabrechnung beim Unternehmer…was die GPU evtl. gar nicht könnte.

Der Unternehmer ( CPU ) kann aber je nach Auftragslage ( vgl. Programmierung ) koordinieren, ob und an wie vielen Schauplätzen er mit wie vielen Mitarbeitern er gleichzeitig seine Aufträge efüllen könnte.

Du erkennst also, das eine CPU eher " Hausmeister einer komplexen Anlage ) sein könnte, eine GPU eher der spezialisierte Fachmann für einen bestimmten Arbeitsbereich, wo nur viele helfende Hände zum gewünschten Ergebnis führen.

Die weiteren Suchen traue ich Dir als " CPU " allerdings zu. :wink:

mfg

nutzlos

Hallo nutzlos,

Ich denke, ich habe jetzt einigermaßen verstanden wie das ganze funktioniert. Danke, dass du dir so viel Zeit für genommen hast.

MfG
Tatjana

Dafür sind wir ja da…
:wink:

mfg

nutzlos