- an integrate approach to architecture and operating systems.
- Pearson 2011. isbn 10: 0-321-62480-7
2. Processor Architectur
Design an Instruction Set (für High Level Language Constructs
- where to keep Operands: Statt 3 MemoryAddressen, RegisterAdressen, sind viel kürzer
- addressing mode: register, oder verschiedene Varianten (Stufen von Indirektion) auf Memory. Z.B. base + offset = RegisterContents + offset
- operand width: word, halfWord, Byte usw.
- conditional und unconditional branches für Loops
- function calls: state des callers (alle oder notwendige Registers, ++) muss (typischerweise in Stack) gespeichert / reaktiviert werden
- Instruktionen mit 0 - 3 Operanden
- Instruktionen mit konstanter oder variabler Länge
3. Processor Implementation
Circuits
- combination logic: nur and/or/usw. Gates, Ouput ist Funktion des Inputs, kein State
- sequential logic: output ist Komination von Input und State, z.B. FlipFlop
- edge triggered logic: der Inhalt eines Register ändert bei einem bestimmten clock Signal
- level logic: change solang clockSignal high
- edge triggered: change only on rising bzw. falling edge (des clockSignals)
Datapath = combinational und sequential logic elements für Prozessor:
- ALU = Arithmetic and Logic Unit
- Register File
- PC = Programm counter (next instruction address)
- IR = Instruction Register für aktuelle Instruktion
- DataPath Elements werden typischerweise durch einen (oder mehrere) Bus verbunden
- FSM = Finite State Machine um Instruktionen auszuführen (z.B. 3 Schritte fetch instr, decode, execute)
Simple 1 Bus dataPath design: jedes Element hat Input/Output auf Bus, mit entsprechenden Steuerbits/Kabeln:
- PC Register: LdPc = load Bus from Bus, DrPC = Drive PC (send to Bus)
- zwei InputRegister A und B vor Alu: LdA = Load A from Bus, LdB = Load B from Bus, func = Funtion (add, and etc.), DrALU = send ALU output to bus
- Register File: WrREG = load Register RegNo from Bus, regNo = RegisterSelector , DrREG = send Register RegNo to bus
- MAR = Memory Address Register vor MemoryAddressEingang: LdMar = send Bus to MAR, WrMEM, write Bus to contents for Memory[MAR], DrMEM: send Memory output to bus
- IR: LdIR: load IR from Bus, DrOFF: send Literal/Addresspart of IR to Bus (
- Z (Bus Value = 0) Register (1 Bit): LdZ = Load Z 0/1 if Bus Value = 0 (Z Register geht zu Control Unit)
Control Unit = Microprogramm
- gibt für jeden FSM Macro State (Fetch, Decode, Execute) (bzw. MicroState) die entsprechenden Steuerbits ==> brauchen StateRegister
- MicroProgrammed ROM Implementierung: im ROM sind and der Adresse des Macro/Micro States die Steuerbits (und der NextState) gespeichert
- Alternative: HardWired Control (d.h. TruthTable für alle Signale)
4. Interrupts, Traps and Exceptions
Discontinuities
- Interrupts: verursacht durch externe Devices (IOComplete usw.)
- Exceptions: Programmfehler (wie divide by zero) oder absichtlich exceptions (throw)
- Traps = Software Interrupts um SystemCalls aufzufufen
Probleme/Spezialität
- können irgendwann innerhalb einer Instruktion passieren
- haben häufig nichts mir dem aktuellen Programm zu tun ==> Hardware muss PC und (alle) weiteren Register savewn
- Hardware muss Adresse des richtigen InterruptHandlers bestimmen und dahinverzweigen
- Handler muss herausfinden, wie das unterbrochene Programm weiterlaufen kann (via implizit geSavtes PC etc.)
Kooperation von OS und Hardware
- IVT = Interrupt Vector Table: Tabelle in Adresse der InterruptHandler pro Interrupt
- ETR = ExceptionTrapRegister: Exceptin/Trap legt seine Nummer da reinzeigt auf IVT
- Externe Interrupts nur in clean state, z.B. nach jeder Instruktion abhandeln
- für geschachtelte (oder zufällig gleichzeitige) Interrupts brauchen wir Instruktionen enable/disable Interrupts
- brauchen return from interrupt Instruktion, die atomar unterbrochenes Programm fortsetzt und Interrupts wieder enabl't
- typischerweise user/system Stack um User Calls und Interrupts, SystemCalls zu trennen
5- Processor Performance and Pipeline Processor Design
Hazards
- structural hazard: verschieden PipeStages benötigen dieselbe Resource
- data hazard: früher stage einer Instruktion braucht Ouptur (später stage) einer VorgängerOperation
- control hazard: vor allem conditional branches, die Output der Vorgänger Instruktion brauchen, da gibt es verschiedene Stragegien
- delayed branch: Hardware geht davon aus, das sequentiel Nächste Instruktion ausgeführt wird - Compiler soll so optimieren
- branch prediction (und pipeline flush falls falsch), z.B. mit branch target buffer
6.Processor Scheduling
- process = ausführendes Programm mit address space
- PCB = Process Control Block, Datenstruktur des OS mit Process Attributen u.a. für den Scheduler
Nonpreemptive scheduling Algos
- First Come First Serve
- Shortest Job First
- Priority
Preemptive scheduling Algos
- Round Robin Scheduler
- Priority & Preemptive
7+8+9. Memory Management
- improve resource utilitzation
- independence and protection
- memory shareing by concurrent processes
- separation of user and kernel
- static relocation: Memory bounds werden zur LinkZeit gesetzt
- dynamic relocation: Memory bounds werden zur LaufZeit verändert ==> brauchen also Registers dafür
- fixed/variable size partitions
- paging: pageTable transparent für Programm
- segmentatiton: programm hat verschiedene AdressBereiche (die alle bei 0 starten)
- TLB Translation Lookaside Buffer = Buffer mit recent address translation
- Memory Organization: Hierarchy von Caches mit verschiedenen Adressierungs und update Varianten
10. Input/Output
- Device Controller, braucht ein paar Status und Daten Bits
- Memory Mapped IO: für die Device Controller Felder sind fix MemoryAdressen definiert ==> es braucht keine Hardware Instruktionen für IO
- Programmed IO: DeviceTreiber Programm, dass immer wieder Status Flags prüft und nötige Datentransfers usw. macht
- DMA = Direct Memory Access: Controller kann Daten direkt ins Memory schreiben oder dorther lesen (für schnelle Devices)
- IO Processor = nimmt dem Prozessor IO-Arbeit ab, Channels (oder Multiplexer)
- Disk Scheduling Variants:
- first come first serve
- shortest seek time first
- scan (elevator algo)
- circular scan
11 File System
12 Multithreaded programming & Multi Processors
- process mit eigenem TCB und Address Space
- threads eines Processen im Process Address Space, und reduziertem TCB
- Synchronisierung ... mit hardware support z.B. atomare testAndSet Instruktion
MultiProcessors: SingleInstructionMultiData, heute v.a. MultiInstructionMultiData. Verschiedene Memory Topologien. Wird mit MultiCore Chips natürlich immer wichtiger ... 13. Networking