Operand forwarding
Operand forwarding (oder Datenweiterleitung) ist eine Optimierung in Pipeline CPUs Leistungsdefizite zu begrenzen, die aufgrund von auftreten Pipeline Stände.[1][2] A Datengefahr kann zu einem führen Pipeline -Stall Wenn der aktuelle Betrieb auf die Ergebnisse eines früheren Vorgangs warten muss, der noch nicht abgeschlossen ist.
Beispiel
Fügen Sie a b c #a = b+c sub d c a #d = c-a hinzu
Wenn diese beiden Montage Pseudocode -Anweisungen werden in einer Pipeline ausgeführt, nachdem die Pipeline abgeholt und dekodiert wurde, und wartet, bis das Ergebnis geschrieben und gelesen wurde.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
Fetch hinzufügen | Decodieren Sie add | Operanden lesen | Add ausführen | Schreibergebnis | |||
Sub holen | Dekodieren sub | Stall | Stall | Operanden Sub lesen | Sub ausführen | Schreibergebnis |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
Fetch hinzufügen | Decodieren Sie add | Operanden lesen | Add ausführen | Schreibergebnis | ||
Sub holen | Dekodieren sub | Stall | Lesen Sie Operanden Sub: Verwenden Sie das Ergebnis aus dem vorherigen Betrieb | Sub ausführen | Schreibergebnis |
In einigen Fällen können alle Stände von solchen Datengefahren nach dem Schreiben durch die Weiterleitung von Operanden vollständig beseitigt werden:[3][4][5]
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
Fetch hinzufügen | Decodieren Sie add | Operanden lesen | Add ausführen | Schreibergebnis | |
Sub holen | Dekodieren sub | Lesen Sie Operanden Sub: Verwenden Sie das Ergebnis aus dem vorherigen Betrieb | Sub ausführen | Schreibergebnis |
Technische Erkenntnis
Die CPU Steuergerät Muss eine Logik implementieren, um Abhängigkeiten zu erkennen, bei denen die Weiterleitung von Operand sinnvoll ist. EIN Multiplexer kann dann verwendet werden, um das richtige auszuwählen registrieren oder Flip Flops Um den Operanden zu lesen.
Siehe auch
Verweise
- ^ "CMSC 411 Vortrag 19, Pipelining -Datenweiterleitung". Universität von Maryland Baltimore County Informatik und Elektrotechnik Abteilung. Abgerufen 2020-01-22.
- ^ "High Performance Computing, Notizen der Klasse 11". hpc.serc.iisc.ernet.in. September 2000. archiviert von das Original Am 2013-12-27. Abgerufen 2014-02-08.
- ^ Gurpur M. Prabhu. "Computerarchitektur -Tutorial". Abschnitte"Weiterleiten". und"Datengefahrklassifizierung".
- ^ Dr. Orion Lawlor."Pipelining, Pipeline -Stände und Operandenweiterungen".
- ^ Larry Snyder."Pipeline Review".