DRAM | SRAM |
---|---|
billiger | teurer |
langsamer | schneller |
kleiner | größer |
weniger Energie | mehr Energie |
Kondensatoren | Flip Flops |
Jeweils Present-Bit ob Daten vorhanden/aktuell.
ram-address mod cache-size = cache-adress
(Adress Rest wird auch im cache gespeichert)\[ T = \frac{P}{N} + (1 - P) \]
\[ S = \frac{1}{T} = \frac{1}{\frac{P}{N} + (1 - P)} \]
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):
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) |
Mit XOR die Differenzen zwischen aktueller Adresse und Ziel finden, ein Bit der untersciede fixen und da hingehen.