Mikroarchitektur Flashcards

Vorlesungsfolien

1
Q

Speicherverwaltung

Welche Bereiche umfasst die Speicherverwaltung in einem Programm?

A

Programmtext (Java Byte Code), Statische Daten (Strings, Tabellen), Dynamische Daten (Heap), Stack (lokale Parameter einer Funktion)​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Compiler und Assembler

Was erzeugt der Compiler aus einem Java-Programm?

A

Der Compiler erzeugt Assembler-Code, der anschließend in Byte Code umgewandelt wird

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Byte Code

Was ist ein Byte Code und wie wird er erzeugt?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Micro Code

Was ist Micro Code und welche Rolle spielt er in der CPU?

A

Micro Code ist Bestandteil der CPU und interpretiert den Java Byte Code. Er steuert den Interpreter und kann durch Updates CPU-Fehler beheben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

ALU (Arithmetic Logic Unit)

Welche Funktionen kann die ALU ausführen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist das N-Bit und das Z-Bit in der ALU?

Was ist das N-Bit und das Z-Bit in der ALU?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Shifter

Welche Arten von Shifts kann der Shifter durchführen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Microcode-Befehle

Was kann ein Microcode-Befehl in einem Taktzyklus erledigen?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sprünge mit Microcode-Befehlen

Welche Sprungoptionen gibt es bei Microcode-Befehlen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Taktzyklus

Wie viele Takte benötigt das Speicherauslesen und was passiert in diesen Takten?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Micro Code Interpreter

Was sind die Schritte eines Micro Code Interpreters?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Micro Code Interpreter: Beispiele

Was macht der IADD Java Byte Code Befehl?

A

IADD (Opcode 0x60) liest zwei Werte vom Stack, addiert sie und schreibt das Ergebnis zurück auf den Stack.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Micro Code Interpreter: Beispiele

Was macht der ILOAD Java Byte Code Befehl?

A

ILOAD (Opcode 0x15) liest ein Wort von der Adresse (LV + Operand) und schreibt es auf den Stack.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Register

Welche wichtigen Register gibt es in der CPU und was sind ihre Funktionen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Register

Was ist der Unterschied zwischen MAR und MDR?

A

MAR (Memory Address Register) hält Adressen, während MDR (Memory Data Register) die Daten an diesen Adressen speichert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Speicheradressen und Alignment

Was ist Word-Alignment bei Speicheradressen und warum ist es wichtig?

A

Word-Alignment bedeutet, dass Speicherzugriffe auf Wortgrenzen (Vielfache von 4 Bytes) ausgerichtet sind. Dies ist wichtig, weil das MAR immer 4 Byte auf einmal liest, was die Effizienz erhöht.

17
Q

ALU-Funktionalität

Wie bestimmt die ALU, welche Operation ausgeführt werden soll?

A

Die ALU verwendet 6 Bits zur Bestimmung der Funktion und die Eingänge A und B zur Durchführung von Operationen wie AND, OR, ADD und INVERT.

18
Q

Vergleichsoperationen

Wie werden Vergleiche in der ALU durchgeführt?

A

Vergleiche werden durch Subtraktion durchgeführt und das Ergebnis wird anhand des N-Bits und Z-Bits interpretiert. Beispiel: a - b, wenn Z-Bit 1 ist, dann a = b, wenn N-Bit 1 ist, dann a < b.

19
Q

Shift-Operationen

Wie unterscheiden sich logische und arithmetische Shifts?

A

Logische Shifts verschieben Bits und füllen freigewordene Stellen mit 0, während arithmetische Shifts das Vorzeichenbit an die freigewordene Stelle kopieren.

20
Q

Microcode-Befehlsstruktur

Wie ist ein Microcode-Befehl aufgebaut?

A

Ein Microcode-Befehl kann mehrere Operationen in einem Takt ausführen, darunter das Setzen von Werten auf den B-Bus und H-Bus, ALU-Berechnungen, Bit-Shifts und bedingte Sprünge.

21
Q

Bedingte Sprünge

Was passiert, wenn eine Bedingung bei einem bedingten Sprung nicht erfüllt ist?

A

Wenn die Bedingung nicht erfüllt ist, wird an die angegebene Adresse gesprungen. Ist die Bedingung erfüllt, wird an die angegebene Adresse plus 256 gesprungen.

22
Q

Bedingte Sprünge

Wie wird die Sprungadresse berechnet, wenn das JMPC-Bit gesetzt ist?

A

Wenn das JMPC-Bit gesetzt ist, bestimmt das MBR-Register die Sprungadresse. Die Adresse berechnet sich aus ADDR und MBR.

23
Q

Taktzyklus und Speicherzugriffe

Warum dauert das Speicherauslesen 2 Takte?

A

Das Speicherauslesen dauert 2 Takte, da im ersten Takt die Adresse berechnet und im zweiten Takt der Speicher ausgelesen wird und die Werte in MDR oder MBR gespeichert werden.

24
Q

Micro Code Interpreter: Ablauf

Wie sieht der Ablauf eines Micro Code Interpreters aus?

A

Der Ablauf eines Micro Code Interpreters besteht aus den Schritten Fetch (nächsten Opcode ins MBR laden), Decode (an die entsprechende Stelle im Micro Code springen) und Execute (Opcode ausführen).

25
Q

Micro Code Interpreter: Beispiele

Wie interpretiert der Micro Code Interpreter den ILOAD Befehl?

A

Der ILOAD Befehl lädt ein Wort von der Adresse (LV + Operand) und schreibt es auf den Stack. Der Opcode 0x15 wird dabei verwendet.

26
Q

Micro Code Interpreter: Beispiele

Wie interpretiert der Micro Code Interpreter den IADD Befehl?

A

Der IADD Befehl liest zwei Werte vom Stack, addiert sie und schreibt das Ergebnis zurück auf den Stack. Der Opcode 0x60 wird dabei verwendet.

27
Q

Funktion von Registern

Was ist die Funktion des Stack Pointers (SP)?

A

Der Stack Pointer (SP) zeigt auf die Spitze des Stacks.

28
Q

Funktion von Registern

Welche Aufgabe hat das Memory Byte Register (MBR)?

A

Das Memory Byte Register (MBR) speichert 8-Bit-Werte und kann auf 32 Bit erweitert werden. Es enthält die Daten, die im aktuellen Speicherzugriff gelesen oder geschrieben werden.

29
Q

Microcode-Sprünge

Was passiert bei einem bedingten Sprung in Abhängigkeit des Z-Bits?

A

Bei einem bedingten Sprung in Abhängigkeit des Z-Bits wird gesprungen, wenn das Z-Bit gesetzt ist (Z = 1).

30
Q

Microcode-Sprünge

Wie beeinflusst das N-Bit den Vergleich in der ALU?

A

Das N-Bit gibt an, ob das Ergebnis einer Subtraktion negativ ist. Wenn N-Bit 1 ist, dann a < b, andernfalls ist a ≥ b.