Created by David Bratschke
over 6 years ago
|
||
Question | Answer |
Wann kann eine Datenabhängigkeit zu einem Datenkonflikt in einer Befehlspipeline führen? | wenn es durch die Pipeline zu einer falschen Zugriffsreihenfolge auf Register und damit einem fehlerhaften Ablauf des Programms kommt. |
Wovon hängt es grundsätzlich ab, ob aus einer Datenabhängigkeit auch ein Datenkonflikt in der Pipeline wird? | Davon wie dicht die Befehle beieinander liegen und ob es genügend viele Stufen in der Pipeline gibt |
Welche drei Arten von Datenabhängigkeiten gibt es? | - echte Datenabhängigkeiten (RAW) - Gegenabhängigkeiten (WAR) - Ausgabeabhängigkeiten (WAW) |
Was ist eine "echte Datenabhängigkeit"? | Diese besteht wenn ein Befehl \(I_1\) seine Ausgabe in ein Register schreibt, welches von einem Befehl \(I_2\) als Eingaberegister verwendet wird |
Aus welcher Abhängigkeit entsteht ein "Read After Write"-Konflikt? | Aus einer echten Datenabhängigkeit |
Was ist eine Gegenabhängigkeit? | Diese besteht zwischen zwei Befehlen bei dem ein Befehl \(I_1\) Daten aus einem Register liest, welches anschließend von dem anderen Befehl \(I_2\) überschrieben wird |
Aus welcher Datenabhängigkeit entsteht ein "Write-After-Read"-Konflikt? | Aus einer Gegenabhängigkeit |
Wann besteht eine Ausgabeabhängigkeit zwischen zwei Befehlen? | Diese besteht zwischen zwei Befehlen wenn beide Befehle in das gleiche Register zurückschreiben |
Bei welcher Datenabhängigkeit treten "Write-After-Write"-Konflikte auf? | Bei den Ausgabeabhängigkeiten |
Was ist ein Abhängigkeitsgraph? | Eine graphische Darstellung von Datenabhängigkeiten zwischen Befehlen |
Wie stellt ein Abhängigkeitsgraph die Abhängigkeiten zwischen Befehlen dar? | Ein Graph dessen Knoten aus den Befehlen des Programms bestehen. Zwischen datenabhängigen Befehlen werden dann gerichtete Kanten vom abhängigen zum vorherigen Befehl eingezeichnet. |
Mit was werden die Kanten in einem Abhängigsgraph bezeichnet? | Mit einer Abkürzung für die entsprechende Art der Datenabhängigkeit: ED / GA / AA |
Was sind "scheinbare" bzw. "falsche" Datenabhängigkeiten? | So werden Gegen- und Ausgabeabhängigkeiten bezeichnet, weil sie z.B. durch Variablenumbenennungen bzw. -umordnungen relativ einfach aufzulösen sind |
Wie werden scheinbare Datenabhängigkeiten noch genannt? | Namensabhängigkeiten |
Wie werden echte Datenabhängigkeiten noch genannt? | einfache Datenabhängigkeiten |
Welche Datenabhängigkeit repräsentiert den eigentlichen Datenfluss durch ein Programm? | die echte Datenabhängigkeit |
Wovon hängt es ab, wie weit zwei Befehle auseinander liegen müssen, damit kein Datenkonflikt auftritt? | Von der Pipelinestruktur, insbes. der Anzahl der Stufen |
Warum sind WAR-Konflikte bei der MIPS-Pipeline ausgeschlossen? | Weil diese nur auftreten können, wenn ein nachfolgender Befehl sein Resultat bereits in ein Register schreibt, bevor der vorherige Befehl den Registerinhalt als Operanden liest. Das ist bei der MIPS Pipeline ausgeschlossen |
Bei welcher Art von Prozessoren müssen WAR-Konflikte beachtet werden? | Bei moderner Superskalarprozessoren |
Warum treten in der MIPS-Pipeline keine WAW-Konflikte auf? | Weil bei der MIPS-Pipeline das Schreiben in die Register nur in der WB-Stufe möglich und das „Überholen“ von Befehlen ausgeschlossen ist |
Welche Datenabhängigkeiten sind bei einfachen skalaren Pipelines wie der MIPS-Pipeline einzig und allein von Bedeutung und warum? | Nur die echten Datenabhängigkeiten, da die Befehle stehts "in-order" ausgeführt werden |
Welche Arten der Datenabhängigkeiten müssen bei Superskalarprozessoren beachtet werden? | Alle drei Arten: Echte Datenabhängigkeiten, Gegenabhängigkeiten, Ausgabeabhängikeiten |
Warum kommt es bei einer Single-Cycle-Architektur nicht zu einem Konflikt bei einer echten Datenabhängigkeit? | Weil ein Befehl erst dann in die IF-Stufe eintritt, wenn der vorherige Befehl die WB-Stufe bereits verlassen hat |
Welche zwei Möglichkeiten gibt es Datenkonflikte auf Software-Ebene aufzulösen? | Das Einfügen von Leerbefehlen und Die statische Befehlsumordnung |
Wie funktioniert das Einfügen von Leerbefehlen als Softwarelösung für einen Datenkonflikt? | Der Compiler untersucht den Programmcode auf (echte) Datenabhängigkeiten und fügt entsprechend Leerbefehle ein, bis der Abstand zwischen zwei datenabhängigen Befehlen groß genug ist |
Durch das Einfügen von welchem Befehl kann der Compiler bzw. Assemblerprogrammierer einen Datenkonflikt innerhalb einer Pipeline verhindern? | Durch eine Nullanweisung oder "No Operation" (nop) |
Was ist der Nachteil der Lösung von Datenkonflikten durch Eimfügen von Leerbefehlen? | Es verringert den effektiven Durchsatz ded Pipeline, da das Programm um zusätzliche (eigentlich nicht benötigte) Befehle erweitert wird |
Wie funktioniert die statische Befehlsumordnung? | Wird eine Datenabhängigkeit erkannt, so wird der Abstand zwischen den beiden Befehlen statt durch neue Leerbefehle durch bereits im Programmcode vorhandene Befehle erweitert |
Warum muss der Compiler in der Regel auf das Einfügen von Leerbefehlen als Softwarelösung für Datenkonflikte zurückgreifen? | Weil in der Realität aufgrund häufig vorkommender Datenabhängigkeiten die statische Befehlsumordnung kaum genutzt werden kann |
Welchen Nachteil haben Hardwarelösungen von Datenabhängigkeiten? | Diese erhöhen die Komplexität der Pipeline-Organisation |
Welche Art der Lösung von Datenkonflikten funktioniert zur Laufzeit? | Die Hardwarelösungen |
Welche unterschiedlichen Hardwarelösungen gibt es zur Lösung von Datenkonflikten? | - Leerlauf der Pipeline - Forwarding - Forwarding mit Interlocking - Dynamische Befehlsumordnung |
Wie wird das Anhalten bzw. der Leerlauf der Pipeline bei einem Datenkonflikt noch genannt? | Interlocking(Sperrung) bzw. Stalling (Anhalten) |
Für wieviele Takte wird die MIPS-Pipeline beim Interlocking angehalten? | Für zwei Takte |
Wie funktioniert das sogenannte "Forwarding" als Hardwarelösung von Datenkonflikten? | Wenn ein Datenkonflikt erkannt wird, sorgt eine Hardwareschaltung dafür, dass der entsprechende Operand nicht aus dem Architekturregister, sondern direkt aus dem ALU-Ausgaberegister geladen wird |
Für welche Befehle funktioniert Forwarding als Hardwarelösung von Datenkonflikten und für welche nicht? | Für Register-Register-Befehle, aber nicht für Lade-/Speicherbefehle |
Warum funktioniert Forwarding bei Lade-/Speicherbefehlen nicht? | Weil bei diesen in der EX-Phase Stufe nicht der zu ladende (speichernde) Wert berechnet somdern lediglich die effektive Adresse berechnet wird |
Wie können Datenkonflikte bei Lade-/Speicherbefehlen gelöst werden? | Durch Forwarding mit Interlocking |
Wie funktioniert Forwarding mit Interlocking zur Lösung von Datenkonflikten von Lade/Speicherbefehlen? | die Pipeline wird so lange angehalten, bis das Ergebnis des Lade(Speicher)befehls am Ende der MEM-Stufe bereit steht. Danach kann Forwarding genutzt werden, um das Ergebnis bereits vor der WB-Stufe zur Verfügung zu stellen |
Was muss bei Lade- /Speicherbefehlen zwingend hinzugefügt werden, um Datenkonflikte zu verhindern? | Mind. ein Leerbefehl |
Was ist der Nachteil von Forwarding? | Viel Hardwareaufwand |
Wie kann in der MIPS-Pipeline Forwarding implementiert werden? | - Vergleichen der Register-Zieladressen der beiden Befehle, die sich in EX-und MEM-Phase befinden mit den Register-Quelladressen des Befehls in der ID-Stufe. - Bei Übereinstimmung, entsprechenden Pfad schalten, der den Wert des ALU-Ausgaberegisters (EX-Stufe) bzw. des Ladewertregisters (MEM-Stufe) in das ALU-Eingaberegister (ID-Stufe) übernimmt. |
Wie funktioniert die dynamische Befehlsumordnung zur Auflösung von Datenkonflikten? | Grds. genauso wie die statische Befehlsumordnung durch den Compiler, nur durch Hardware zur Laufzeit (also einfach eine Änderung der Befehlsreihenfolge) |
Warum funktioniert eine dynamische Befehlsumordnung nicht bei der MIPS-Pipeline? | weil bei dieser Befehle immer einzeln geholt und dekodiert werden |
Bei welcher Art von Prozessoren kann eine dynamische Befehlsumordnung als Hardwarelösung von Datenkonflikten umgesetzt werden? | Bei Prozessoren bei den mehrere Befehle gleichzeitig geholt werden, wie z.B. Superskalarprozessoren |
Was ist der Nachteil einer dynamischen Befehlsumordnung? | ein erheblicher Hardwareaufwand |
Want to create your own Flashcards for free with GoConqr? Learn more.