Mikroarchitektur Flashcards
Vorlesungsfolien
Speicherverwaltung
Welche Bereiche umfasst die Speicherverwaltung in einem Programm?
Programmtext (Java Byte Code), Statische Daten (Strings, Tabellen), Dynamische Daten (Heap), Stack (lokale Parameter einer Funktion)
Compiler und Assembler
Was erzeugt der Compiler aus einem Java-Programm?
Der Compiler erzeugt Assembler-Code, der anschließend in Byte Code umgewandelt wird
Byte Code
Was ist ein Byte Code und wie wird er erzeugt?
Byte Code ist eine Zwischenstufe, die vom Assembler erzeugt wird. Ein Beispiel ist der Opcode 0x15 für den ILOAD-Befehl, der die Variable j aus dem Stack liest.
Micro Code
Was ist Micro Code und welche Rolle spielt er in der CPU?
Micro Code ist Bestandteil der CPU und interpretiert den Java Byte Code. Er steuert den Interpreter und kann durch Updates CPU-Fehler beheben.
ALU (Arithmetic Logic Unit)
Welche Funktionen kann die ALU ausführen?
Die ALU kann AND, OR, ADD und INVERT Operationen ausführen. Sie hat zwei Eingänge (A und B) und verwendet 6 Bits zur Funktionsbestimmung.
Was ist das N-Bit und das Z-Bit in der ALU?
Was ist das N-Bit und das Z-Bit in der ALU?
Das N-Bit gibt an, ob das letzte Ergebnis der ALU negativ war, und das Z-Bit gibt an, ob das letzte Ergebnis der ALU 0 war. Beide Bits werden für Vergleiche verwendet.
Shifter
Welche Arten von Shifts kann der Shifter durchführen?
Der Shifter kann logische und arithmetische Shifts nach links und rechts durchführen. Logische Shifts füllen freigewordene Bits mit 0, arithmetische Shifts kopieren das Vorzeichenbit.
Microcode-Befehle
Was kann ein Microcode-Befehl in einem Taktzyklus erledigen?
Ein Microcode-Befehl kann mehrere Operationen durchführen, wie
- das Setzen von Werten auf den B-Bus und H-Bus
- Berechnungen mit der ALU
- Bit-Shifts
- das Schreiben von Ergebnissen auf den C-Bus und bedingte Sprünge.
Sprünge mit Microcode-Befehlen
Welche Sprungoptionen gibt es bei Microcode-Befehlen?
Es gibt fünf Sprungoptionen: Springen an die angegebene Adresse, abhängig vom N-Bit, abhängig vom Z-Bit, abhängig von beiden Bits und an die angegebene Adresse plus MBR.
Taktzyklus
Wie viele Takte benötigt das Speicherauslesen und was passiert in diesen Takten?
Das Speicherauslesen dauert 2 Takte. Im ersten Takt wird die Adresse berechnet und im zweiten Takt werden die Werte aus dem Speicher gelesen und in MDR oder MBR gespeichert.
Micro Code Interpreter
Was sind die Schritte eines Micro Code Interpreters?
Der Micro Code Interpreter besteht aus einer Endlosschleife von Fetch, Decode und Execute. Dabei wird der nächste Opcode ins MBR geladen, der entsprechende Micro Code Befehl ausgeführt und dann wieder zu Fetch zurückgesprungen.
Micro Code Interpreter: Beispiele
Was macht der IADD Java Byte Code Befehl?
IADD (Opcode 0x60) liest zwei Werte vom Stack, addiert sie und schreibt das Ergebnis zurück auf den Stack.
Micro Code Interpreter: Beispiele
Was macht der ILOAD Java Byte Code Befehl?
ILOAD (Opcode 0x15) liest ein Wort von der Adresse (LV + Operand) und schreibt es auf den Stack.
Register
Welche wichtigen Register gibt es in der CPU und was sind ihre Funktionen?
Wichtige Register sind SP (Stack Pointer), LV (Zeiger auf lokale Variablen), CPP (Zeiger auf Konstanten), TOS (Top of Stack) und OPC (Register zur freien Verwendung). Das MBR ist 8 Bit breit, andere Register sind 32 Bit breit.
Register
Was ist der Unterschied zwischen MAR und MDR?
MAR (Memory Address Register) hält Adressen, während MDR (Memory Data Register) die Daten an diesen Adressen speichert.