Vorlesung
1. Alles ist eins – außer der Null
Themen: Syllabus. Geschichtlicher Hintergrund. Zahlen- und Stellenwertsysteme. Binärsystem. Schaltungen und Wertetabellen. Logische Gatter. Halbaddierer und Addierer. Gatterverzögerung. Transistoren.
2. Struktur von Computersystemen und HW/SW-Schnittstellen
Themen: Hardware- und Softwareebenen. Literatur. Computeraufbau. Funktionsweise einer Maus als motivierendes Querschnitts-Beispiel für Hardware, Zustände, Schnittstellen, Datenübertragung, Berechnungen und Anzeige.
3. Minimierung und Endliche Automaten
Themen: Logikfunktionen und Boolesche Algebra. Minterme. Normalformen. Schaltungssynthese. Minimierung (algebraisch, KV-Diagramme, Quine-McCluskey-Algorithmus). Schaltwerke. Latches. Flipflops. Endliche Automaten (Moore und Mealy). Zeitdiagramme.
4. Rechnerarithmetik
Themen: Stellenwertsysteme. Oktal- und Hexadezimalzahlen. Ganze Zahlen im Einerkomplement, Zweierkomplement und Exzess-Code. Wertebereiche. Fest- und Gleitkommazahlen. Zeichendarstellung in ASCII, ISO-Latin-1 und Unicode.
5. Speicher
Themen: Arbeitsspeicher: Statisch und Dynamisch, Adressierung, Entwurfsziele. Performance-Lücke. Speicherhierarchie. Lokalität. Caches: Funktionsweise, Aufbau, Organisationsformen, Schreibverfahren, Ebenen, Austauschverfahren.
6. Von Bits zu Prozessoren
Themen: Wiederholung: Endliche Automaten, Kombinatorische Logik, Volladdierer, Multiplexer, Register. RISC-V als Prozessorarchitektur. Übersetzung von Hochsprachen in Assembler: Instruktionen, Direktiven, Pseudoinstruktionen, Kontrollfluss. Datenpfad eines RISC-V-Prozessors. Steuerwerk. Instruktionsaufbau mit Opcodes, Immediates, Registern, Formaten.
7. Von Pipelines und Kontrollpfaden
Themen: Wiederholung: RISC-Prozessorstruktur, Register, Programmzähler, Speicher, Instruktionsaufbau. Datenpfad einer Immediate-Instruktion. Steuerwerk: Multiplexer, Schreibsteuerung. Pipelining: Grundprinzip, Stufen, erweiterter Datenpfad, Konflikte. Prozessor-Performance: Latenz, Durchsatz, Zyklen pro Instruktion.
8. Ein- und Ausgabe
Themen: Ein- und Ausgabegeräte: Schnittstellen, Busse, Controller, I/O-Register. Beispiele: Tastatur, Grafikkarte, IDE-Festplatte, Ethernet. Character vs. Block Devices vs. Beschleuniger. Exceptions vs. Traps vs. Interrupts. Interrupts bei RISC-V: CLINT, PLIC, CSRs, mcause. Adressräume. Interrupts vs. Direct Memory Access vs. Polling bei Gerätetreibern. Betriebssystemaufgaben. Unix-API für Gerätezugriff: Everything is a file, Abstraktionen, Systemaufrufe, Gerätetreiber. Serielle und parallele Datenübertragung. UARTs und RS232.
9. Vom Programm zum Prozess
Themen: Schritte der Quellcode-Übersetzung. Präprozessor. Compiler: Lexikalische Analyse, Syntaxanalyse, Semantische Analyse, Codeerzeugung, Codeoptimierung. Assembler: Speichersektionen und -layout, Heap und Stack. Linker. Loader. ELF-Dateien und -sektionen. Funktionen bei RISC-V: Registerkonventionen, Stackstruktur, RÜcksprung, Label. Ausblick auf Betriebssysteme.