Fertigkeiten

Diese Seite führt aller Fertigkeiten auf, die Sie im Rahmen der Veranstaltung B-SYSP erwerben sollten. Die Fertigkeiten sind in Fertigkeitskategorien gegliedert, die in inhaltlichem Zusammenhang stehen. Beachten Sie bitte auch das Ende dieser Seite zur Erklärung des Begriffes `Verständnis'.

Diese Seite kann sich im Verlauf der Veranstaltung ändern, da nicht genau vorhersehbar ist, wieviel Material behandelt werden kann. Änderungen werden entsprechend vermerkt.

1. Grundkonzepte der Computerarchitektur

  1. Verständnis: Computerarchitektur (CPU, Eingabegeräte, Ausgabegeräte, Speicher)
  2. Verständnis: BIOS/Firmware
  3. Sie können Zweck und typischen Ablauf eines Bootvorganges erklären
  4. Verständnis: Coprozessor

2. Speicherrepräsentierung

  1. Verständnis: Hexadezimalsystem
  2. Verständnis: Abbildung von Zeichenketten im Speicher
  3. Verständnis: Byte-Reihenfolge / Endianness bei großen Zahlen
  4. Verständnis: Zweierkomplementdarstellung von ganzen Zahlen
  5. Verständnis: Speicherausrichtung
  6. Verständnis: Fließkommazahlen gemäß IEEE 754

3. Befehlssatzarchitekturen

  1. Sie können den Zusammenhang zwischen Assemblersprache und Maschinensprache beschreiben
  2. Verständnis: Befehlssatzarchitektur
  3. Verständnis: Spezialisierte Befehlssätze (Fließkomma-Befehlssätze, Vektor-Befehlssätze, Multimedia-Befehlssätze, ...)

4. RISC-Befehlssätze

  1. Verständnis: Prozessorregister
  2. Sie können den Unterschied zwischen Allzweckregistern und zweckgebundenen Registern erklären
  3. Mit einer Liste aller MIPS R2000-Befehle können Sie Algorithmen in MIPS-Code übersetzen und die Bedeutung von MIPS-Code-Sequezen interpretieren:
    1. Integer-Arithmetik
    2. Bitoperationen
    3. Bedingte Ausführungen
    4. Schleifen
    5. Definition von Subroutinen
    6. Aufruf von Subroutinen
    7. Programmcode, der anderen Programmcode modifiziert (unter Verwendung einer Maschinensprachetabelle)
  4. Verständnis: Aufrufkonventionen (insbesondere: Auswirkungen auf Stapelspeicher und Register)
  5. Sie sollten insbesondere die MIPS R2000-Aufrufkonventionen beherrschen und verwenden können

5. Performanz und Laufzeitmessung

  1. Verständnis: Speedup
  2. Verständnis: Normalisierung von Performanzmessung gegen Baseline, Aufsummierung (Mittelwert)
  3. Verständnis: Prozessor-Taktfrequenz
  4. Verständnis: Ahmdals Gesetz
  5. Verstandnis: Der Zusammenhang zwischen Befehlszyklen, CPI/IPC, Ausführungszeit, und Prozessor-Taktfrequenz
  6. Sie sollten aus der Beschreibung einer Benchmarkfolge abschätzen können, ob die Meßergebnisse für diese Folge Aussagen über ein gegebenes Programm zulassen können
  7. Sie sollten in der Lage sein, aussagekräftige Performanzmessungen durchzuführen
  8. Sie können mindestens sieben verschiedene Gründe für Unterschiede in der Messung eines Programmes angeben, darunter zwei, die den Prozessor betreffen, und zwei, die das Betriebssystem betreffen
  9. Verständnis: Kastendiagramm; insbesondere können Sie ein solches erklären und zwei Kastendiagramme vergleichen
  10. Verständnis: Aufwärmeffekt

6. Befehlsausführung in Pipelines

  1. Verständnis: Die fünf Pipeline-Phasen aus der Vorlesung
  2. Verständnis: Pipeline-Blasen und ihre Ursachen aus Daten- und Kontrollflußhazards
  3. Verständnis: Vermeidung von Kontrollfluß-Hazards durch statische Verzweigungsvorhersage
  4. Verständnis: Vermeidung von Kontrollfluß-Hazards durch verzögerte Verzweigung
  5. Verständnis: Vermeidung von Kontrollfluß-Hazards durch dynamische Verzweigungsvorhersage

7. Die Speicherhierarchie

  1. Sie wissen, in welche Richtung sich Größe, Geschwindigkeit, und Preis pro Byte ändern, wenn man sich in der Speicherhierarchie auf- oder abwärts bewegt
  2. Sie kennen die üblichen Komponenten der Speicherhierarchie in modernen Rechnersystemen
  3. Sie können das Konzept der temporalen Lokalität erklären und in einem Programm ausnutzen
  4. Sie können das Konzept der räumlichen Lokalität erklären und in einem Programm ausnutzen
  5. Sie verstehen die Begriffe Trefferrate, Fehlzugriffsrate, Zugriffszeit bei Treffer und Fehlzugriffsaufwand, und können sie verwenden, um die durchschnittliche Speicherzugriffszeit zu berechnen.
  6. Sie verstehen das Verhältnis zwischen Laufzeit und durchschnittlicher Speicherzugriffszeit.
  7. Verständnis: Direkt abgebildeter Cache.
  8. Verständnis: Vollassoziativer Cache.
  9. Verständnis: k-fach satzassoziative Caches.
  10. Verständnis: MMU, Seitentabelle, und TLB. Insbesondere verstehen Sie die Quellen der Ineffizienz bei TLB-Fehlzugriffen.
  11. Verständnis: Physikalische und virtuelle Adressen.

8. Fließkommazahlen

  1. Verständnis: Repräsentierung von Fließkommazahlen als Vorzeichen, Exponent, und Mantisse, wie z.B. gemäß IEEE-754
  2. Sie können beschreiben, warum und unter welchen Umständen Fließkommaadditionen ungenau sein können

9. Lader und Binder

  1. Sie verstehen den Unterschied zwischen Objektdateien und ausführbaren Programmen
  2. Verständnis: .text, .data, .bss-Segmente in Objektdateien
  3. Verständnis: lokale, globale, und externe Symbole
  4. Verständnis: Zweck des Binders
  5. Sie können mit Hilfe einer Symboltabelle, Relozierungstabelle, und einer Beschreibung der Relozierungstypen beschreiben, welche Speicheränderungen der Binder durchführen wird
  6. Verständnis: Nutzen von Programmbibliotheken
  7. Sie können die wesentlichen Unterschiede zwischen statischen und dynamischen Programmbibliotheken beschreiben

10. Die Programmiersprache C

  1. Sie können Variablen und Arrays in C deklarieren, initialisieren, lesen, und beschreiben, und Code lesen, der diese Konzepte verwendet
  2. Sie können die Unterschiede zwischen den integralen und Fließkommatypen erklären und ausnutzen
  3. Sie könnnen die unären und binären C-Operatoren verstehen und effektiv einsetzen
  4. Sie können die drei Schleifentypen und die if-Anweisung verstehen und effektiv einsetzen
  5. Sie können Typkonversionen verstehen und effektiv einsetzen
  6. Sie können structs und Zeiger in C deklarieren, initialisieren, lesen, und beschreiben, und Code lesen, der diese Konzepte verwendet
  7. Sie können das typedef-Konstrukt verstehen und effektiv einsetzen
  8. Verständnis: sizeof
  9. Verständnis: NULL
  10. Verständnis: Funktionen (Deklaration, Definition, Aufruf, Zeiger)
  11. Verständnis: Deklarationen und Definitionen
  12. Der Präprozessor
    1. Sie können die #include-Direktive verstehen und effektiv einsetzen
    2. Sie können die #define-Direktive verstehen und effektiv einsetzen
    3. Sie können die #if, #elif, und #endif-Direktiven verstehen und effektiv einsetzen
    4. Sie können defined im Präprozessorkontext einsetzen
  13. Qualifizierer:
    1. Sie können das restrict-Konstrukt erklären und effektiv einsetzen
    2. Sie können den Nutzen des volatile-Konstruktes erklären

11. Der C-Übersetzer

  1. Sie können die Bedeutung der Namensanalyse im Übersetzer erklären
  2. Sie können die Bedeutung der Typanalyse im Übersetzer erklären
  3. Optimierungen:
    1. Verständnis: Inlining
    2. Sie können erkennen und beschreiben, ob und wie ein gegebenes Programmstück durch Schleifenteilung optimiert werden kann
    3. Sie können erkennen und beschreiben, ob und wie ein gegebenes Programmstück durch Schleifenabwicklung optimiert werden kann
    4. Sie können erkennen und beschreiben, ob und wie ein gegebenes Programmstück durch Schleifenfusion optimiert werden kann
    5. Sie können erkennen und beschreiben, ob und wie ein gegebenes Programmstück durch Stapel-Inlining optimiert werden kann
    6. Verständnis: Verhinderung von Optimierungen durch fehlendes Wissen: Unbekannter Wert und Konstantheit unklar
    7. Verständnis: Verhinderung von Optimierungen durch Sprachsemantik: Assoziatitivät von Fließkommazahlen

12. Laufzeitsysteme

  1. Verständnis: Programmpause und malloc
  2. Verständnis: Ausführungsrahmen, Rücksprungadresse, und Rahmenzeiger
  3. Sie können in C setjmp und longjmp effektiv für nichtlokal Kontrollflußänderungen einsetzen
  4. Verständnis: Signale in C
  5. Verständnis: Speicherlecks und deren Ursprünge

13. Grundlagen der parallelen Ausführung

  1. Verständnis: Flynn-Taxonomie
  2. Verständnis: Vektoroperationen
  3. Verständnis: Nebenläufigkeit
  4. Sie können pthreads-Befehle verwenden, um Threads zu starten und per join auf deren Beendung zu warten, sowie Parameter und Rückgabewerte zu verwerten.
  5. Verständnis: Trivial-parallele Ausführung
  6. Verständnis: Fork-Join-Ausführung
  7. Verständnis: Kritische Sektion
  8. Verständnis: Wettlaufsituation (race condition)
  9. Verständnis: Locks, inklusive des Unterschiedes zwischen spinlocks und mutexes
  10. Verständnis: Deadlock nebenläufiger Prozesse
  11. Verständnis: Livelock nebenläufiger Prozesse
  12. Verständnis: Verhungern (starvation) nebenläufiger Prozesse

14. Technische Konzepte der parallelen Ausführung

  1. Sie kennen die Garantien, die von sequentieller Konsistenz gegeben werden, und können (a) anhand eines gegebenen Programmes beurteilen, ob eine bestimmte Speicherzugriffsfolge konsistent mit diesem Speicherkonsistenzmodell ist, und (b) zu einem gegebenen Programm Beispiele von konsistenten Speicherzugriffsfolgen angeben.
  2. Sie kennen die Garantien, die von Prozessor-Konsistenz gegeben werden, und können (a) anhand eines gegebenen Programmes beurteilen, ob eine bestimmte Speicherzugriffsfolge konsistent mit diesem Speicherkonsistenzmodell ist, und (b) zu einem gegebenen Programm Beispiele von konsistenten Speicherzugriffsfolgen angeben.
  3. Verständnis: Speicherbarrieren
  4. Verständnis: ll/sc-Operationen
  5. Verständnis: Die cas-Operation
  6. Sie können einen Lock-freien Algorithmus von einem Algorithmus mit Locks unterscheiden.

Verständnis

Die Fertigkeiten sind teilweise als Verständnis eines bestimmten Konzeptes definiert. Für den Zweck dieser Veranstaltung definiert sich das Verständnis eines Konzeptes wie folgt:

  1. Sie kennen alle notwendigen Bestandteile des Konzeptes und wissen, was deren Bedeutung innerhalb des Konzeptes ist.
  2. Falls das Konzept selbst notwendiger Bestandteil eines größeren Systems ist, kennen Sie ein Beispiel eines solchen Systems.
  3. Sie kennen mehrere Beispiele zu dem Konzept und können diese beschreiben und vergleichen.
  4. Sie können den Nutzen des Konzeptes anhand eines Beispieles erklären.
  5. Gegeben ein Beispiel zu dem Konzept, können Sie erklären, wie sich Änderungen an dem Beispiel auf andere Konzepte aus der gleichen Kompetenzkategorie auswirken.
Die Kompetenzangaben beinhalten teilweise weitere Begriffe in Klammern. Diese Begriffe sind Erläuterungen, Bestandteile, oder Beispiele. Angaben in Klammern sind aber üblicherweise unvollständig.