1. Nennen und erklären Sie die 3 wichtigsten Unterkomponenten der Steuereinheit
- Instruction register - enthält den aktuellen Befehl
- Instruction Counter (IC/PC) - verweist auf den nächsten aus dem Speicher zu holenden Befehl
- Instruction decoder - dekodiert den von der ALU auszuführenden Befehl
2. Was ist eine Funktionseinheit? Nennen Sie 4 gängige Typen von FUs
Die Aufteilung der Operanden bei scalaring (int, addressing, floating, comparing) Einige Recheneinheiten (FUnctional Units) sind für spezielle Operationen zuständig.
3. Was ist der Unterschied zwischen einem Barrel Shifter und einem Matrix Multiplier?
Barrel Shifter: verwendet mehrere 1-Bit-Addierer und UND-Gatter zur Multiplikation zweier ganzer Zahlen
Matrix-Multiplikator: enthält eine ROM-Tabelle, deren Zellen direkt durch die Operanden der Multiplikation ausgewählt werden (Zeile/Zelle) - die entsprechende Zeile/Zellen-Kreuzung enthält das Multiplikationsergebnis (keine Berechnung, Ergebnis wird nur gelesen)
4. Was sagt uns das Amdahlsche Gesetz? Nennen Sie ein anschauliches Beispiel
Das Amdahl'sche Gesetz sagt aus, wie viel Leistungssteigerung man durch zusätzliche CPU-Kerne erhält. Für den Programmierer hängt es davon ab, wie viel Prozent seines Programms parallelisierbar sind. Wenn z.B. ein Programm zu 10% parallelisierbar ist, würde es für diesen Teil einen erheblichen Unterschied machen, aber der Rest des Programms würde die gleiche Zeit benötigen.
5. Was ist NVRAM? Nennen Sie zwei Möglichkeiten, NVRAM zu implementieren
NVRAM ist ein Typ von RAM, der seinen Inhalt bei Stromausfall nicht verliert. Es gibt 2 verschiedene Möglichkeiten, um NVRAM zu erhalten: 1. die Kombination von SRAM und einer Lilon-Batterie. Oder 2. die Verwendung verschiedener physikalischer Effekte, um Daten zu speichern, wobei es keine Rolle spielt, ob der Speicher einmal mit Strom versorgt wurde oder nicht.
6. Erläutern Sie das Konzept des Super-Pipelining. Wie verhält es sich zu superskalaren CPUs?
Beim Super-Pipelining wird jede Stufe eines Befehls in kleinere Schritte unterteilt, so dass die CPU die Aufgaben in einer Super-Pipeline abarbeiten kann. Sie führt immer noch einen Befehl pro Zyklus aus, schafft aber mehr Zyklen pro Sekunde.
Beim Superskalieren werden die Aufgaben in verschiedene Operationen unterteilt, z. B. Integer-Operationen, Float-Operationen, Tests (Verzweigungen) oder Adressierung. Jede Operation hat eine eigene Funktionseinheit, die sie bearbeitet.
Es gibt heute super-pipelined super-scalar CPUs, die beide Funktionen kombinieren.
7. Erklären Sie das Konzept der Out-of-Order Execution (OOO)
- Die CPU nimmt die Umordnung in der Hardware vor (zur Laufzeit).
- Hier betrachtet die CPU eine Gruppe von Anweisungen und ordnet sie neu an, so dass die Pipeline so weit wie möglich mit sicher benötigten Anweisungen gefüllt wird
- Dies muss geschehen, ohne die Programmlogik zu verändern oder gegen gegenseitige Abhängigkeiten zu verstoßen - Out-of-order Execution/ Dynamic instruction scheduling
8. Beschreiben Sie, wie eine 1-Bit-Speicherzelle funktioniert. Wie unterscheidet sie sich von einer dynamischen 1-Bit-Speicherzelle?
Eine statische Speicherzelle benötigt bis zu 5 oder 6 Transistoren, um das Schreiben von W/R zu ermöglichen und "select" muss auf "1" gesetzt werden. Die dynamische Speicherzelle ist viel einfacher aufgebaut, sie besteht nur aus Datenleitung, Lese-/Wirteleitung, einem Transistor und einem Kondensator. (Die dynamische Speicherzelle ist billiger in der Herstellung, deshalb wird sie hauptsächlich im Vergleich zu der zuverlässigeren statischen Zelle verwendet.
9. Was ist der Unterschied zwischen synchronen und asynchronen Bussen? Welcher Typ wird normalerweise in modernen Computersystemen verwendet?
Synchrone Busse haben einen Oszillator, der im Bereich von 5-300 MHz taktet und damit langsamer ist als eine typische moderne CPU.
Asynchrone Busse haben eine Master- und Slave-Synchronisation und müssen sich treffen, um ein "synchronisiertes Handshake" zu erhalten, dann wird ein Takt für beide Komponenten vereinbart.
Die meisten Busse sind aus Gründen der Einfachheit in Design, Implementierung und Kommunikation synchron.
10. Beschreiben Sie die beiden gängigen Arten der Verzweigungsvorhersage und nennen Sie deren Vor- und Nachteile. Wie hoch ist die Strafe für eine falsche Vorhersage?
-Statische Verzweigungsvorhersage: Der Compiler markiert die Verzweigung zur Kompilierzeit, von der er annimmt, dass sie mit größerer Wahrscheinlichkeit auftreten wird, und die CPU folgt dieser Markierung.
-Dynamische Verzweigungsvorhersage: Hier beschreibt die CPU zur Programmlaufzeit, welche Verzweigung sie nehmen soll, indem sie die "Verzweigungsvorhersagetabelle" des Chips verwendet.
"wenn ich falsch geraten habe" - die bereits ausgeführten Anweisungen sind nutzlos, und die CPU muss am Anfang der anderen Verzweigung beginnen.
"wenn ich richtig geraten habe" - die CPU kann mit voller Geschwindigkeit fortfahren.
-Mispredict Penalty: Anweisungen, die gestrichen werden, wenn sie falsch geraten wurden
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
11. Nennen Sie die 5 möglichen Zustände eines Linux-Benutzerraumprozesses
R(Running): läuft oder ist lauffähig
D(Uninterruptible sleep): in E/A
S(Unterbrechbarer Schlaf): Wartet auf die Ausführung eines Ereignisses
Z(Defunct/ Zombie): Beendet, aber nicht von den Eltern geerntet
T(Angehalten): Aufgabe ist derzeit angehalten
12. Erklären Sie die kooperative Interaktion zwischen CPU, Speicherverwaltungseinheit, Übersetzungspuffer und Festplatte
Da moderne CPUs mehrstufige Seitentabellen verwenden, würde der Zugriff auf eine Seite einen enormen Leistungsverlust bedeuten (man müsste auf mindestens 2 Tabellen zugreifen, bevor man an die physische Speicheradresse gelangt)
Daher ist der Translation Lookaside Buffer ein Cache innerhalb der CPU, der die am häufigsten verwendeten Seitentabelleneinträge enthält. Falls nicht im TBL, wird die angeforderte Seitentabelle im TLB gespeichert.
13. Unter welchen Umständen wird ein Programm als relocatable bezeichnet?
Wenn eine relative Speicheradressierung durchgeführt wird
= Basisadresse + Offset
14. Was ist die Multi-Level-Feedback-Warteschlange?
Prozesse werden in verschiedene Warteschlangen eingeteilt. (hohe oder niedrige Priorität)
Eine Art von Rückmeldung sagt, ob die Warteschlange zur Laufzeit geändert werden muss
15. Beschreiben Sie den Linus-Benutzeradressraum (Prozessspeicherlayout). Nennen Sie alle Speichersegmente und beschreiben Sie, für welche Arten von Daten sie jeweils verwendet werden
- Region ganz oben im virtuellen Adressraum
- Stack wächst im Speicher nach unten
- Stack ist eine LIFO-Struktur (Last in, first out)
- Elemente werden auf den Stapel geschoben (oben auf dem Stapel hinzugefügt - niedrigste Adresse)
- Elemente werden vom Stapel gepoppt (oberstes Element wird entfernt)
- Es kann immer nur das oberste Element entfernt werden, nichts dazwischen
Speichersegmente:
- Stack - wird für funktionslokale Variablen verwendet
- Heap - dient der dynamischen Zuweisung
- .bss - enthält alle nicht-initialisierten Daten
- .data - enthält alle initialisierten Daten
- .text - enthält ausführbaren Code
a. Erklären Sie, wie ein Funktionsaufruf in Assembly funktioniert
Ausführung einer Funktion
- Speichern des Basis-Zeigers (EBP)
- Auf Stack schieben
- Basiszeiger aktualisieren
- Kopieren von ESP zu EBP
Bereich zwischen EBP und ESP wird als Stack Frame einer Funktion bezeichnet
b. wie sieht der Stack nach einem Funktionsaufruf mit 3 String-Argumenten aus, wobei die Funktion 2 funktionslokale .long-Variablen deklariert?
c. Zeigen Sie, wie auf Argumente und lokale Variablen zugegriffen werden kann
Addition der Anzahl von benötigten Byes für die Argumente vom EBP
Subtraktion der Anzahl von benötigten Bytes für die lokale(n) Variable(n) vom EBP
16. Erklären Sie, wie ein Scheduler mit dynamischer Neupriorisierung und Deadline-Scheduling funktioniert
- Ein Prozess mit niedriger Priorität kommt in die Warteschlange und wird mit einer Frist td versehen.
- Wenn td/2 verstrichen ist, ohne dass der Prozess ausgeführt wurde - Priorität + 1, wird td halbiert
- Garantiert, dass der Prozess innerhalb der Frist ausgeführt wird
17. Was sind die Hauptunterschiede zwischen MBR und GPT?
MBR: maximal 4 primäre Partitionen; eine einzelne Partition ist auf 2 TiB Speicherplatz begrenzt (232 Festplattenblöcke zu je 512 Byte)
GPT: (theoretisch) unbegrenzte Anzahl von Partitionen (Windows: max. 128); jede Partition kann bis zu 1.000.000 TiB (264 Festplattenblöcke) aufnehmen
18. Was ist Thrashing und in welchen Situationen kann es auftreten?
Wenn eine CPU mehr Zeit für das Auslagern und Auswechseln von Seiten benötigt und sicherstellt, dass die richtige Seite verfügbar ist, als sie für die Verarbeitung verwenden kann. Dieser Vorgang wird als Thrashing bezeichnet. Das Working Set wird eingeführt, es enthält alle Frames, die ein aktueller Prozess benötigt, um reibungslos zu laufen. Um Thrashing zu vermeiden, wird sichergestellt, dass jeder Prozess die Frames innerhalb seiner Arbeitsgruppe austauscht.
19. Was ist der Zweck einer mehrstufigen Seite und wie funktioniert sie? Wofür wird das Dirty-Bit verwendet?
Die Seitentabelle wird zur Übersetzung von virtuellen in physische Speicheradressen verwendet. (von Seiten zu Frames) Heutzutage haben wir viel größeren Speicher und größere Wortgrößen, eine einzelne Seitentabelle würde nicht ausreichen. Die Seitentabelle ist unterteilt in das Seitenverzeichnis (Outer Page Table) und die eigentliche Seitentabelle (Inner Page Table) - das Seitenverzeichnis "verweist" auf die Seitentabellen
Das Dirty-Bit gibt Auskunft darüber, ob die Seite in einen sekundären Speicher wie die Festplatte ausgelagert wurde.
Zuletzt geändertvor 2 Jahren