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.

Ohne Operanden weiterleiten
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
Mit Operanden weiterleiten
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]

Mit Operand weiterleitet (erweitert)
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

  1. ^ "CMSC 411 Vortrag 19, Pipelining -Datenweiterleitung". Universität von Maryland Baltimore County Informatik und Elektrotechnik Abteilung. Abgerufen 2020-01-22.
  2. ^ "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.
  3. ^ Gurpur M. Prabhu. "Computerarchitektur -Tutorial". Abschnitte"Weiterleiten". und"Datengefahrklassifizierung".
  4. ^ Dr. Orion Lawlor."Pipelining, Pipeline -Stände und Operandenweiterungen".
  5. ^ Larry Snyder."Pipeline Review".

Externe Links