Rechnerarchitektur (Subject) / Pipelining (Lesson)
There are 22 cards in this lesson
parallele Abarbeitung
This lesson was created by fuchsik.
This lesson is not released for learning.
- Pipelining für einzelne Tätigkeiten innerhalb eines Prozesses werden unabhängige Einheiten zur Verfügung gestellt teilweise parallele Abarbeitung von Tätigkeiten Effektivierung von Prozessen Ausführungszeit pro Phase bleibt gleich Pipeline-Geschwindigkeit wird durch langsamste Stufe bestimmt Pipelinestufen mit unterschiedlicher Länge reduzieren Durchsatz
- Befehlszyklus Befehl holen Befehl dekodieren Operand holen Befehl ausführen Ergebnis speichern
- Latenz Zeit, die ein Befehl zum Durchlaufen der Pipeline benötigt ideal: jede Pipeline-Stufe benötigt genau einen Takt
- Durchsatz Anzahl der Befehle, die pro Takt die Pipeline verlassen Idealfall: lim T = 1 (lim Na->unendlich)
- Um wieviel wird ein Befehl in einem Prozessor mit p-stufiger Pipeline schneller abgearbeitet als in einem ansonsten identischen Prozessor ohne Pipeline-Betrieb - Begründung! um p da nach dem Füllen zu jedem Taktzylkus ein Befehl fertig gestellt wird
- Pipelining-Paradoxon Fließbandverarbeitung verbessert nicht die Ausführungszeit eines einzelnen Befehls > gegenüber sequentieller Abarbeitung kann Bearbeitungszeit eines einzelnen Befehls ansteigen, wenn Ausführungszeit der einzelnen Stufen unterschiedlich lang ist, denn langsamste aktive Stufe muss fertig werden erhöht den Durchsatz schnellere Abarbeitung einer Folge von Befehlen
- Konflikt-Klassen/Probleme struktureller Konflikt Hardware kann gewünschte Kombination von Befehlen nicht unterstützen Datenkonflikt Befehl ist von Ergebnis abhängig, das in vorherigem Befehl in Pipelineberechnet wurde Steuerungskonflikt folgender Befehl ist nicht Befehl, der als nächstes ausgeführt werden soll
- Belegungsmatrix Darstellung der Ressourcennutzung> welches Pipelinsegment greift zu welcher Zeit auf welche Hardware zu um Konflikte zu erkennen
- unifunktionale Pipelinestruktur / multifunktional wenn alle Befehle durch ein Belegungsschema repräsentiert werden sonst multifunktional
- lineares Pipelineschema wenn jede Hardwareineheit nur in einer Pipelinestufe benötigt wird
- RISC weitgehend lineares Schema weitgehend unifunktionales Schema seltene Speicherzugriffe Load/Store-Architektur einheitliche Befehlsformatlänge, gleiche Dauer aller Befehle wenige homogene Adressmodi
- strukturelle Konflikte ergeben sich aus Nichtlinearität von PipelinestrukturenLösungen: Pipeline anhalten 2 Speicher mehr Hardware Übertaktung: Ressourcen erlauben mehrere Zugriffe nacheinander im selben Taktzyklus
- strukturelle Konflikte -> Lösung Harvard-Architektur Speicher wird benötigt bei Stufe 1 (IF) und 4 (MA) man benötigt pro Befehl einmal Zugriff zum Speicher: bei IF wird Befehl aus dem Speicher geholt bei Load- oder Store-Befehl benötigt man zusätzlichen Speicherzugriff Lösung: verschiedene Speicher für Daten und Instruktionen (Harvard)
- Datenkonflikte durch zu schnelle Arbeitung wird evtl. auf veraltete Daten zugegriffen bei Programmierung sequentieller Programme geht man von strikter Nacheinanderausführung der Befehle aus werden Befehle parallel ausgeführt, kann dies scheitern
- Datenkonflikte Lösungsansätze Einfügen von NOP semantikinvariantes Umsortieren Scoreboarding Forwarding
- Scoreboarding für jedes Register wird Buch geführt, ob der Befehl, der Register beschreibt, in Pipeline ist will ein weiterer Befehl auf Register zugreifen > diesen Befehl verzögern
-
- Forwarding Erweiterung der Pipeline durch zusätzliche Verbindungspfade + Scoreboarding Ergebnisse liegen in bestimmter Stufe vor und können weitergegeben werden
- Wodurch werden die Multiplexer gesteuert? Scoreboarding
- Datenkonflikte:Vergleich Lösungsanätze Softwarelösung: • Probleme werden auf Compiler abgewälzt • simpler Compiler > schlechter Code • guter Code > etwas langsamerer CompilerScoreboard: • leicht auf Coprozessoren erweiterbarForwarding: • elegante Lösung, verzögerungsfrei, • zusätzliche Datenwege (teuer) + Scoreboard • Erweiterung um Coprozessoren schwierig
- Steuerkonflikte treten auf bei: Sprüngen (inkl. Unterprogrammen) + Interrupts ob Befehl ein Sprung ist, steht erst am Ende vom 2. Befehl (DR) fest> nachfolgender, bereits geholter Befehl muss annulliert werden wenn wir merken, dass gesprungen werden soll, ist es zu spät weitere Phasen der Abarbeitung des Befehls, die er trotzdem durchläuft, müssen wirkungslos bleiben
- Delayed Branching Lösungsansatz für Steuerkonflikte Befehl nach Sprungbefehl wird stets ausgeführt
- Delayed Branching Lösungsansatz für Steuerkonflikte Befehl nach Sprungbefehl wird stets ausgeführt
