GeeksforGeeks
Um die Leistung einer CPU zu verbessern, haben wir zwei Möglichkeiten:
1) Verbessern Sie die Hardware durch Einführung schnellerer Schaltungen.2) Ordnen Sie die Hardware so an, dass mehr als eine Operation gleichzeitig ausgeführt werden kann.
Da die Geschwindigkeit der Hardware begrenzt ist und die Kosten für schnellere Schaltungen recht hoch sind, müssen wir die 2. Option verwenden.
Pipelining : Pipelining ist ein Prozess der Anordnung von Hardwareelementen der CPU, so dass ihre Gesamtleistung erhöht wird. Die gleichzeitige Ausführung von mehr als einer Anweisung findet in einem Pipelineprozessor statt.
Sehen wir uns ein Beispiel aus der Praxis an, das das Konzept des Pipelinebetriebs behandelt. Betrachten Sie eine Wasserflaschenverpackungsanlage. Es seien 3 Stufen, die eine Flasche durchlaufen soll, Einsetzen der Flasche (I), Füllen von Wasser in die Flasche (F) und Verschließen der Flasche (S). Betrachten wir diese Stufen als Stufe 1, Stufe 2 und Stufe 3. Lassen Sie jede Stufe 1 Minute dauern, um den Vorgang abzuschließen.
Jetzt wird in einem Nicht-Rohrleitungsbetrieb zuerst eine Flasche in die Anlage eingeführt, nach 1 Minute wird sie in Stufe 2 bewegt, wo Wasser gefüllt wird. Jetzt, in Stufe 1, passiert nichts. Wenn sich die Flasche in Stufe 3 bewegt, befinden sich sowohl Stufe 1 als auch Stufe 2 im Leerlauf. Im Rohrleitungsbetrieb kann jedoch, wenn sich die Flasche in Stufe 2 befindet, eine andere Flasche in Stufe 1 geladen werden. In ähnlicher Weise kann, wenn sich die Flasche in Stufe 3 befindet, jeweils eine Flasche in Stufe 1 und Stufe 2 vorhanden sein. Nach jeder Minute erhalten wir am Ende von Stufe 3 eine neue Flasche. Daher beträgt die durchschnittliche Zeit für die Herstellung von 1 Flasche:
Ohne Pipelining = 9/3 Minuten = 3m
I F S | | | | | || | | I F S | | || | | | | | I F S (9 minutes)
Mit Pipelining = 5/3 Minuten = 1,67m
I F S | || I F S || | I F S (5 minutes)
Somit erhöht der Pipelinebetrieb die Effizienz eines Systems.
Design einer Basispipeline
- In einem Pipelineprozessor hat eine Pipeline zwei Enden, das Eingangsende und das Ausgangsende. Zwischen diesen Enden befinden sich mehrere Stufen / Segmente, so dass der Ausgang einer Stufe mit dem Eingang der nächsten Stufe verbunden ist und jede Stufe eine bestimmte Operation ausführt.
- Schnittstellenregister werden verwendet, um den Zwischenausgang zwischen zwei Stufen zu halten. Diese Schnittstellenregister werden auch als Latch oder Buffer bezeichnet.
- Alle Stufen in der Pipeline werden zusammen mit den Schnittstellenregistern von einem gemeinsamen Takt gesteuert.
Ausführung in einem Pipelineprozessor
Die Ausführungsreihenfolge von Anweisungen in einem Pipelineprozessor kann mithilfe eines Raum-Zeit-Diagramms visualisiert werden. Betrachten Sie zum Beispiel einen Prozessor mit 4 Stufen und lassen Sie 2 Anweisungen ausführen. Wir können die Ausführungssequenz durch die folgenden Raum-Zeit-Diagramme visualisieren:
Nicht überlappende Ausführung:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
S1 | I1 | I2 | ||||||
S2 | I1 | I2 | ||||||
S3 | I1 | I2 | ||||||
S4 | I1 | I2 |
Total time = 8 Cycle
Overlapped execution:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
S1 | I1 | I2 | |||
S2 | I1 | I2 | |||
S3 | I1 | I2 | |||
S4 | I1 | I2 |
Total time = 5 Zyklus
Pipeline Stufen
RISC prozessor hat 5 bühne anweisung pipeline auszuführen alle anweisungen in die RISC anweisung set. Im Folgenden sind die 5 Stufen der RISC-Pipeline mit ihren jeweiligen Operationen aufgeführt:
- Stufe 1 (Befehlsabruf)
In dieser Phase liest die CPU Anweisungen von der Adresse im Speicher, deren Wert im Programmzähler vorhanden ist. - Stage 2 (Instruction Decode)
In dieser Phase wird der Befehl decodiert und auf die Registerdatei zugegriffen, um die Werte aus den in der Anweisung verwendeten Registern abzurufen. - Stufe 3 (Anweisung ausführen)
In dieser Stufe werden ALU-Operationen ausgeführt. - Stufe 4 (Speicherzugriff)
In dieser Stufe werden Speicheroperanden von / in den Speicher gelesen und geschrieben, der in der Anweisung vorhanden ist. - Stufe 5 (Zurückschreiben)
In dieser Stufe wird der berechnete / abgerufene Wert in das in den Anweisungen vorhandene Register zurückgeschrieben.
Leistung eines Pipeline-Prozessors
Betrachten Sie eine ‚k‘-Segment-Pipeline mit Taktzykluszeit als ‚Tp‘. Lassen Sie im Pipeline-Prozessor ’n‘ Aufgaben ausführen. Nun wird die erste Anweisung ‚k‘ Zyklen benötigen, um aus der Pipeline zu kommen, aber die anderen ’n – 1′ Anweisungen benötigen jeweils nur ‚1‘ Zyklus, dh insgesamt ’n – 1′ Zyklen. Zeit zum Ausführen von ’n‘ Anweisungen in einem Pipelineprozessor:
ETpipeline = k + n – 1 cycles = (k + n – 1) Tp
Im selben Fall beträgt die Ausführungszeit von ’n‘ Anweisungen für einen Nicht-Pipelineprozessor für einen Nicht-Pipelineprozessor:
ETnon-pipeline = n * k * Tp
Beschleunigung (En) des Pipelineprozessors gegenüber einem Nicht-Pipelineprozessor, wenn ’n‘ Aufgaben auf demselben Prozessor ausgeführt werden prozessor ist:
S = Performance of pipelined processor / Performance of Non-pipelined processor
Da die Leistung eines Prozessors umgekehrt proportional zur Ausführungszeit ist, haben wir
S = ETnon-pipeline / ETpipeline => S = / S = /
Wenn die Anzahl der Aufgaben ’n‘ signifikant größer als k ist, dh n >> k
S = n * k / n S = k
wobei ‚k‘ die Anzahl der Stufen in der Pipeline ist.
Also, Effizienz = Gegebene Geschwindigkeit / Maximale Geschwindigkeit = S / Smax
Wir wissen, dass, Smax = k
Also, Effizienz = S / k
Durchsatz = Anzahl der Anweisungen / Gesamtzeit zum Abschließen der Anweisungen
Also, Durchsatz = n / (k + n – 1) * Tp
Hinweis: Der CPI-Wert (Cycles per Instruction) eines idealen Pipeline-Prozessors beträgt 1
2 für Abhängigkeiten und Daten und Set 3 für Pipeline-Typen und Stalling.