RL11: Umakishore Ramachandran, William D. Leahy, Jr.: Computer Systems

  • 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