Inhaltsverzeichnis

Prozessoren

Busse

Architekturen

Akkumulator

Memory-memory

Stack

Load-store

CPU Aufbau

Register

Einheiten

Sprachliche Begriffe

North Bridge

Caches

Hardware

DRAM SRAM
billiger teurer
langsamer schneller
kleiner größer
weniger Energie mehr Energie
Kondensatoren Flip Flops

Lokalität

Mapping

Jeweils Present-Bit ob Daten vorhanden/aktuell.

Amdahls Gesetz

\[ T = \frac{P}{N} + (1 - P) \]

\[ S = \frac{1}{T} = \frac{1}{\frac{P}{N} + (1 - P)} \]

Pipelines

Konflikt = Hazzard

Die Technick nent sich stalling, bei der eine bubble in der Pipeline für einen delay sorgt.

http://www.cs.umb.edu/cs641/notes25.html

Schöne Pipeline „Schaltung“: http://en.wikibooks.org/wiki/Microprocessor_Design/Pipelined_Processors

Hazzards & Pielining: http://en.wikipedia.org/wiki/Classic_RISC_pipeline

Problem Lösung
Kontrollflusskonflikt (Sprünge) * Warten (doof)
* Sprungvorhersage
- statisch: Meistens wird gesprungen (loop)
- dynamisch: Statistiken erstellen (meh)
* Delayed Branch (es wird immer noch der nächste Befehl nach dem Sprung ausgeführt, egal was ist)
Datenkonflikt * Out of order Execution (Umordnen)
* stalling with bubbles (Warten (doof))
* Forwarding/Bypassing (Daten auf die gewartet wird direkt aus der Stufe der jüngeren Instruktion abgezapft, anstadt zu warten bis es am ende ankommt (eine abkürzung / nicht rein ins register, raus aus dem register))
Resourcenkonflikt
(z.B. 2 Stufen brauchen gleichzeitig die ALU)
* stalling with bubbles (Warten (doof))
* Superskalare Architektur (langsame Stufen vervielfachen)
* Ausbalanzierte Pipeline Stufen
Cache miss * stalling with bubbles (Warten (doof))
Interrupt

MIPS Architektur legt nicht fest wie die Pipelines aufgebaut sind. Jeder hersteller kann es Implementieren wie er will (das beeinflust auch nicht die Programmierung):

  1. Instruction Fetch: Fetch Instruction, Increment PC
  2. Instruction Decode: Decode Instruction, Read Registers
  3. Execute:
    • Mem-ref: Calculate Address
    • Arith-log: Perform Operation
  4. Memory:
    • Load: Read Data from Memory
    • Store: Write Data to Memory
  5. Write Back: Write Data to Register

Paraleles Rechnen

Hyper-Threading

Multi Core

Flynn's taxonomy

http://en.wikipedia.org/wiki/Flynn's_taxonomy

Single Data Multiple Data
Single Instruction SISD
Alte, normale CPUs
SIMD
Normale CPUs mit SSE/3Dnow
Vektorprozessoren / Arrayprozessoren
Multiple Instruction MISD
Fehlertolerante Rechner (Flugzeuge)
MIMD
Normale Multicore CPUs
Rechnerverbunde (Supercomputer)

Vernetzung

Art der Verbindung

Adressierung

Hypercube

Mit XOR die Differenzen zwischen aktueller Adresse und Ziel finden, ein Bit der untersciede fixen und da hingehen.