Allgemeine Frage - Was macht eine CPU schnell?

Sixe44

PC-Selbstbauer(in)
Moin!

Mir ist gerade eine sehr einfache Frage in den Sinn gekommen, die ich aber selbst nicht vollständig beantworten kann.
Was genau entscheidet über die Geschwindigkeit eines Prozessors?
Ich habe einen Grundkurs in Technische Informatik an der Uni gehabt, verstehe also das grundsätzliche Gerüst von Prozessoren (ALUs, Logikgatter etc.)

Ich habe da 3 Faktoren im Sinn:
1. Die Fertigungsgröße: Je kleiner der Prozessor, desto geringer die Zeit, die der Strom braucht, um von Eingang zu Ausgang zu fließen.
2. Der Takt: Logisch, der Takt entscheidet über Geschwindigkeit - aber was entscheidet über den Takt? (Punkt 1?) Sind 1. und 2. direkt voneinander abhängig?
3. Cache-Takt: Die Geschwindigkeit, mit der neue Befehle geladen und durchgeführte Berechnungen gespeichert werden können, dürfte ja auch maßgeblichen Einfluss auf die Geschwindigkeit der CPU insgesamt haben.

Nachtrag zu 2.:
Bei einem Takt von 4GHz (4*10^9 (4 Milliarden) Rechenschritte jede Sekunde), einer Prozessorgröße von 37,5mm und einer angenommenen Lichtgeschwindigkeit für Elektronen (?) heißt das:
37,5mm = 0,0375m
4GHz => 0,00000000025s pro Rechenschritt
Vc= 300.000m/s
Der Strom würde die 0,0375m in 0,000000125s durchqueren und dabei würden 4 Milliarden Rechenschritte gemacht.
Ist das richtig? Ist das überhaupt noch zu schlagen?

Kann jemand die 3 Punkte in einen Zusammenhang bringen? Oder fehlt noch was Essentielles?

LG
 
Was genau entscheidet über die Geschwindigkeit eines Prozessors?

Im Wesentlichen 3 Dinge:
1.) Die Anzahl an Operationen die pro Sekunde ausgeführt werden können (= Takt)
2.) Die Menge an Instruktionen, die pro Taktzyklus ausgeführt werden können (= IPC)
3.) Die Geschwindigkeit und Wartezeiten, mit der Daten zur Verarbeitung bereitgestellt werden können (Speicherbandbreite und Latenz).

Zusätzlich wenns Richtung Praxis geht extrem wichtig:
4.) Wie gut die Architektur des Prozessors zur gestellten Aufgabe passt (deswegen gibt es CPUs, GPUs, ASICs,... für ihr jeweiliges Aufgabengebiet)


1. Die Fertigungsgröße: Je kleiner der Prozessor, desto geringer die Zeit, die der Strom braucht, um von Eingang zu Ausgang zu fließen.
Sind 1. und 2. direkt voneinander abhängig?

Punkt 1 ist quasi völlig irrelevant. Es geht nicht darum wie schnell Strom in der CPU fließen kann, es geht banal um die Menge an verbaubaren Transistoren pro Fläche und um Schaltzeiten von Transistoren, also wie lange ein Halbleiter braucht um bei angelegter Spannung zum Leiter oder Nichtleiter zu werden - und die werden nunmal geringer je weniger Material da ist. Das ist einer von vielen gründen warum bei kleineren Strukturen höhere Taktraten möglich sind. Andere Gründe sind beispielsweise Abwärme, Leckströme und vieles mehr. Das Thema ist sehr, sehr viel komplexer als du es dir offensichtlich vorstellst. ;)

Um auf "ist das noch zu schlagen" zu kommen: Man kann heutzutage Transistoren und Chips bauen die mit über 800 GHz laufen. Nur kann keiner Milliarden davon untereinander korrekt verschaltet auf nem Fingernagel unterbringen und dazu zwingen dann keine 10 kW Abwärme zu produzieren was für ne CPU nunmal nötig ist.
 
Ich habe da 3 Faktoren im Sinn:
1. Die Fertigungsgröße: Je kleiner der Prozessor, desto geringer die Zeit, die der Strom braucht, um von Eingang zu Ausgang zu fließen.
2. Der Takt: Logisch, der Takt entscheidet über Geschwindigkeit - aber was entscheidet über den Takt? (Punkt 1?) Sind 1. und 2. direkt voneinander abhängig?
3. Cache-Takt: Die Geschwindigkeit, mit der neue Befehle geladen und durchgeführte Berechnungen gespeichert werden können, dürfte ja auch maßgeblichen Einfluss auf die Geschwindigkeit der CPU insgesamt haben.

1: Nein. Bei der Fertigungsgröße geht es weniger darum wie lang die Wege sind, sondern darum dass man mehr Transistoren verbauen kann die weniger Strom verbrauchen und/oder höhere Taktfrequenzen zulassen.
2 .Siehe 1. Viel wichtiger aber und einer der Gründe warum derzeit Intels bei gleichem Takt schneller sind als AMDs: die Anzahl der Instruktionen die pro Takt durchgeführt werden.
3: Ja, Caches und RAM spielen auch eine Rolle. Um diesen Einfluss zu verringern findet Prefetching statt. Es wird "geraten" welche Daten als nächstes benötigt werden und diese werden schonmal vorab in die entsprechende Cache-Stufe geladen so dass im Idealfall die Daten schon zur Verfügung stehen wenn sie angefordert werden.

Alles in Allem ist das aber ein deutlich komplexeres Thema. 3 Stichpunkte reichen leider nicht um abzuklopfen wie schnell eine CPU ist.
 
Der Takt ist auch von der Pipeline und damit der Befehlsarchitektur abhängig.

Beim Takt ist nicht die Bewegungsgeschwindigkeit der Elektronen selbst entscheidend. Bei CMOS fließt Strom immer nur dann, wenn die Transistoren umschalten. Ein Teil des Transistors wirkt wie eine Kapazität und die muss entladen bzw. umgeladen werden.
Deshalb, je keiner der Transistor ist, umso weniger Elektronen müssen bewegt werden und umso kleiner kann die Spannung ausfallen. Aber auch die maximale Spannung (Durchschlagsspannung) sinkt.


Zur Pipeline:

Erklärung der Abkürzungen:
Abkürzungen:
IF = Instruction Fetch (Befehl in die Pipeline laden)
ID = Instruction Decode (Befehl decodieren)
EX = Execute (Befehl ausführen, also z.b. etwas berechnen)
LS = Load/Store (Daten aus dem (Haupt)-Speicher holen oder schreiben)
WB = WriteBack (Ergebnis der Berechnung ins Zielregister zurückschreiben)

Eine 4-Stufige Pipeline sieht z.B. so aus:
IF->ID->EX->WB

In jedem Takt rückt der Befehl eine Stufe weiter. Im optimalen Fall, hat man also wenn die Pipeline angelaufen (also der 1. Befehl am Ende angekommen), ist immer einen Befehl pro Takt.

Bei Sprüngen hat man aber das Problem, dass man die Befehle, die sich schon in der Pipeline dahinter befinden verwerfen muss. Deshalb gibt es die Sprungvorhersage, um ein Anhalten oder gar Verwerfen der Pipeline möglichst selten machen zu müssen.

Allerdings kann man in der Pipeline auch Parallelität ermöglichen, das ist dann die sogenannte Pipelineparallelität.
Dafür hat man dann z.B. 2 EX Einheiten parallel.

IF->ID->EX->LS->WB
_______->EX->
 
Zuletzt bearbeitet:
Dass die Geschwindigkeit vom Takt abhängt schreibe ich ja oben - aber wovon hängt der Takt ab? Lediglich von den Schaltzeiten?

Wenn man dann die Spannung erhöht, hieße das nicht, dass der Takt erhöht wird oder werden kann, da der Übergang nicht-leitend/leitend schneller überwunden werden kann?
Wovon hängt die Menge der Befehle ab? Lediglich von den Kernen, oder hat jeder Kern noch mal eine Unterteilung?

Ich ahne, wie unfassbar komplex das Ganze ist, finde das ganze aber unfassbar interessant. Gibt es gute Informationsquellen für Laien? Muss halt nicht detailliert sein, das erschlägt es vermutlich, aber runtergebrochen auf die wichtigsten Strukturen.
 
Recht hübsch aufbereitet finde ich das hier:
Eingebundener Inhalt
An dieser Stelle findest du externe Inhalte von Youtube. Zum Schutz deiner persönlichen Daten werden externe Einbindungen erst angezeigt, wenn du dies durch Klick auf "Alle externen Inhalte laden" bestätigst: Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit werden personenbezogene Daten an Drittplattformen übermittelt.
Für mehr Informationen besuche die Datenschutz-Seite.
 
aber wovon hängt der Takt ab?

Von Anzahl der Transistoren, ihrer Architektur, der Fertigungsgröße, der Packungsdichte, der Anzahl nötiger Schaltungen pro Zeiteinheit und Transistor (nicht alle Transistoren dürfen bei jedem Takt schalten, die CPU würde in einer Sekunde verbrennen), der Sauberkeit der Spannungsversorgung und vielem vielem mehr.

Wenn man dann die Spannung erhöht, hieße das nicht, dass der Takt erhöht wird oder werden kann, da der Übergang nicht-leitend/leitend schneller überwunden werden kann?
Doch. Aber nur innerhalb der Grenzen die den Chip nicht zerstören....

Wovon hängt die Menge der Befehle ab?
Die eine CPU pro Takt abarbeiten kann? Davon, wie sie intern aufgebaut ist (Pipelinelänge, Superskalarität, Out-of-Order-Execution,...
Es hat einen Grund, warum eine heutige CPU beim gleichen Takt ein Vielfaches schneller ist als eine CPU vor 20 Jahren. Mit der heutigen Fertigungstechnik wäre es kein Problem, etwa einen Pentium4 zu bauen der über 10 GHz läuft - was aber Käse ist weil ein Skylake-Celeron bei 2 GHz schon schneller ist.
 
Die eine CPU pro Takt abarbeiten kann? Davon, wie sie intern aufgebaut ist (Pipelinelänge, Superskalarität, Out-of-Order-Execution,...
Es hat einen Grund, warum eine heutige CPU beim gleichen Takt ein Vielfaches schneller ist als eine CPU vor 20 Jahren. Mit der heutigen Fertigungstechnik wäre es kein Problem, etwa einen Pentium4 zu bauen der über 10 GHz läuft - was aber Käse ist weil ein Skylake-Celeron bei 2 GHz schon schneller ist.

Wobei allerdings mit dem erhöhten Takt die Spannung erhöht werden muss. Und die Verlustleistung steigt sowohl linear mit dem Takt (da öfter umgeschalten wird und dabei dann immer etwas Strom fließt), als auch quadratisch mit der Spannung.
 
Ich könnte dir meine Folien aus Rechnerarchitektur 2 zukommen lassen. Da ging es hauptsächlich um solche Dinge wie Pipeline, Befehlsarchitekturen, IPC- und PeakPerformance (FLOPS)-Berechnung usw.

Ansonsten sollte so etwas ja dann auch in deinem Studium vorkommen.
 
Ja, die Folien nehme ich gerne!

Ich studiere Wirtschaftsingenieurwesen, leider haben wir nur einen Grundkurs in TI, alles Folgende behandelt vor allem Software-Engineering - also nein, im Studium werde ich es nicht mehr lernen :/

Ich schick dir meine Mail-Adresse per Nachricht. Danke dir!
 
Zurück