Fragen zur Prüfungsvorbereitung GRa SS2015
Ich habe hier gelesen, dass am kommenden Fragestunde für GRa ist, allerdings weiß ich noch nicht, ob ich das zeitlich hinbekomme, da zu sein und vielleicht lassen sich einige Fragen ja auch schon vorher klären. Wäre toll, wenn mir jemand dabei helfen könnte:
1.) Beim Paging gibt es ja insbesondere in den Altklausuren früherer Jahre zig Flags (Cache Disable, Execute Enable, Write Enable, Present) auch wenn sie immer mal wieder anders heißen. Wann würde mann denn das Cache disable Bit setzen? Für Grafik-/IO-Speicher?
Welche Flags würde man beim Paging für shared memory/libraries setzen?
2.) Ist es richtig, dass alle Flags aus der page table mit Ausnahme des present-Bits auch im TLB gespeichert werden? Das present-Bit ist im TLB schließlich überflüssig, aber der Rest doch notwendig.
3.) Beim Skizzieren von Page-Table-Hierarchien: Darf man die Anfangspositionen der Tabellen und die Adressen der Seitenrahmen (das Alignment beachtend) frei wählen und die restlichen, nicht-gesetzten Einträge einfach mit “…0” abkürzen? Gehört das PDBR auch zum Zeichnen der Tabellen-Hierarchie?
4.) Mir ist klar, dass eine nicht-vorhandene Seite (Present-Bit) einen Page-Fault auslöst. Aber welche Art von Fehler/Exception wird ausgelöst, wenn z.B. versucht wird, eine Adresse in einer Seite ohne Execute-Enable mit call aufzurufen oder zu schreiben ohne Write-enable?
5.)Paging bezeichnet ja das automatische Aus- und Einlagern von Seiten genauso wie das gesamte Verfahren der Verwaltung des virtuellen Speichers als einen großen in gleichgroße Zellen unterteilten Adressraum. Steht dann auch Segmentierung nicht nur für das Verfahren, mehrere unabhängig virtuelle Speicherbereiche anhand ihrer Segmentnummer und der dazu zugehörigen Anfangsadresse sowie Segmentlänge zu verwalten, sondern auch die automatische Aus- und Einlagerung der Segmente auf die/von der Festplatte?
6.) Sowohl bei Segmentierung als auch beim Paging ist die Hardware für die Umsetzung des Speicherschutzes unter Zuhilfenahme der Page-/Segment-Tabellen zuständig. Stimmt das so?
7.) In den Übungen gab es einmal die Frage, ob sich Speicherschutz ohne HW-Unterstützung realisieren lässt. Ich denke nicht, dass es möglich ist, im Kommentar des Korrektors stand aber nur, dass es nicht praktikabel sei, bei jedem Speicherzugriff eine Trap auszulösen. Ist es nur “nicht praktikabel” oder wirklich “(effektiv) unmöglich”?
8.)Zur Entwicklung von SDRAM bis DDR3:
Der Witz ist doch gerade, dass die Speicherzellen sich im Wesentlichen nicht verändert haben, oder? Lediglich durch Erhöhen des Prefetch pro Datenleitung, dem Übertragen von Daten auch bei der fallenden Flanke und Erhöhung des IO-Taktes um den höheren Prefetch pro Speichertakt auch übertragen zu können, sind die DDR1- bis DDR3-SDRAMs sukzessive schneller geworden?
9.) Virtuelle/physikalische Caches unterscheiden sich nur darin, welche Adresse der Daten zur Bestimmung der Index-Menge und für das Tag verwendet werden? Also virtuelle oder physikalische Adresse?
10.) Ist es beim Pipelining relevant in welcher Pipeline-Stufe Befehle aufgrund von Daten-/Steuerungshazards warten?
Bei Daten-Hazards sollten die nachfolgenden Befehle sicherlich vor der OH-Phase warten, aber wie sieht es z.B. mit bedingten Sprüngen aus? Auch wenn keine spekulative Ausführung vorhanden ist, wird dann in der BH-Phase schon der potentiell nächste Befehl bereit gehalten, auch wenn der bedingte Sprung noch nicht (in OH) ausgewertet ist?
Z.B. wenn wir eine BH-BD-OH-Pipeline haben und der Befehl jl ist jetzt in OH gerutscht. Dann ist ohne spekulative Ausführung der nächste Befehl sicherlich höchstens in BH und nicht in BD, d.h. wir haben einen leeren Pipeline Zyklus.
Ist denn dann in BH schon der sequentiell nächste Befehl vorhanden, auch wenn er nicht in BD wandert?
Und wann genau wird der passende Befehl zum bedingten Sprung geladen? Läd BH den richtigen Befehl im selben Takt in dem jl in OH kommt?
Also sodass zwischen dem passenden nachfolge-Befehl und dem bedingten Sprung nur einmal NOP steht, oder setzt der bedingte Sprung die richtige Instruktion erst für den darauffolgenden Takt, also sodass die nachfolgende Instruktion erst dann in BH kommt, wenn der bedingte Sprung in die nächste Stufe kommt (z.B. Ausführen 1)? Dann hätten wir zwischen dem bedingten Sprung und dem nachfolgenden Befehl zwei NOPs.
11.) Beim Übersetzen von Hochsprachen in if-goto-Code stand oft sowas wie “verändern Sie die Operationen nicht” dabei. Ist ein Übergang von
if(i>10)… zu if(!(i<=10))… eine Veränderung von Operationen? Oder ist nur gemeint, dass sich das Programm so verhalten soll wie zuvor?
12.) Definitionen sind ja immer so eine Sache. Vielleicht könnte jemand seinen Senf zu den folgenden geben:
Alignment: Alignment bezeichnet die Ausrichtung eines Objekts im Speicher. Ein (elementares) Objekt aus s Bytes ist korrekt aligned wenn seine Speicheradresse durch s teilbar ist.
Cache: Kleiner schneller Pufferspeicher zwischen Hauptspeicher und Prozessor zur Überbrückung der Prozessor-Speicherlücke bezüglich der Leistung/Geschwindigkeit.
Pipelining: Zeitüberlappte Ausführung von Befehlen, die sequentiell die einzelnen Stufen des Befehlszyklus auf unterschiedlichen Teilwerken durchlaufen. Die Teilwerke arbeiten streng Taktsynchron aber unabhängig voneinander, sodass sich theoretisch in jeder verschiedenen Stufe des Befehlszyklus gleichzeitig eine Instruktion befinden kann.
(geht das kürzer)
(Memory) Interleaving: Zeitüberlapptes Ansprechen verschiedener Speicherbänke zur Erhöhung des Durchsatzes an Daten. Möglich durch Anordnung aufeinanderfolgender Speicherworte in unterschiedlichen Speicherbänken.
13.) Wie berechnen sich die Bonuspunkte für die Klausur aus den Punkten, die wir in den Hausaufgaben erhalten haben? In der ersten Vorlesung war ja noch von 10 Blättern mit 150 Punkten die Rede, jetzt sind es ja insgesamt 180 geworden.
Soweit zu diesem Wust an Fragen, der beim Lernen aufgekommen ist. Es wäre toll, wenn mir jemand dabei helfen könnte, sonst schaue ich, dass ich am Freitag in die Fragestunde komme.
Danke im Voraus,
Reshief