6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss....

95
© Lothar Thiele Computer Engineering and Networks Laboratory Technische Informatik 1 6 – Speicherhierarchie

Transcript of 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss....

Page 1: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

© Lothar ThieleComputer Engineering and Networks Laboratory

Technische Informatik 16 – Speicherhierarchie

Page 2: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 2

Arbeitsprinzipien

Page 3: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 3

Übersicht SpeicherhierarchieZiele:

Dem Benutzer möglichst viel Speicherkapazität zur Verfügung stellen. Möglichst kleine Zugriffszeit. Möglichst kostengünstig.

Zugriffszeit  0.25‐0.5ns                   0.5‐2.5ns                50‐70ns           0.1‐20msGrösse ~ 1kByte                ~ 16MByte              ~ 32GByte      ~ 1000GByteKosten/Mbyte 0.5 – 1.0$              0.01–0.02$     0.00005–0.0005$

SSD (solid state drive)HDD (hard disk drive)

Page 4: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 4

Plattenspeicher (Hard Disk Drive)

Page 5: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 5

DRAM Architektur

SRAM (statisch)

DRAM(dynamisch)

Page 6: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 6

Technologische TrendsDRAM (dynamic random access memory) Speicherbausteine:

Zugriffszeit sinkt mit etwa 6% pro Jahr Speicherkapazität  steigt mit etwa 45% pro Jahr

Page 7: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 7

Technologische TrendsZugriffszeit DRAM vs. Zykluszeit Prozessor

Lücke

Page 8: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 8

Ebenen der Speicherhierarchie

CD/DVD/Magnetband

Programm, Compiler1‐8 Bytes, 1 Taktzyklus

Cache Steuerung (Hardware)16‐128 Bytes, 10‐1000 Taktzyklen

Betriebssystem (Software)4000 ‐ 64000 Bytes, 10M‐100 M Taktzyklen

Anwendungsprogramm (Software)Mbytes, ‐

verantwortlich für ÜbertragungBlockgrösse Zugriffszeit schneller

grösser

Hauptspeicher

Cache Architektur

virtueller Speicher

sekundärer Speicher

Page 9: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 9

LokalitätDie Effizienz der hierarchischen Speicherarchitektur basiert auf dem Prinzip der Lokalität:

Programme greifen in einem Zeitintervall nur auf einen relativ kleinen, bisher noch nicht referenzierten Teil des Adressraumes zu. Dies gilt sowohl für Instruktionen als auch für Daten.

Es werden zwei unterschiedliche Arten der Lokalität unterschieden: Zeitliche Lokalität: Falls ein Datum oder eine Instruktion referenziert wird, so wird sie bald wieder referenziert.

Örtliche Lokalität: Falls ein Datum oder eine Instruktion referenziert wird, werden bald Daten oder Instruktionen mit nahgelegenen Adressen referenziert.

Page 10: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 10

Lokalität Zeitliche Lokalität: Falls ein Datum oder eine Instruktion referenziert wird, so 

wird sie bald wieder referenziert.    

Speichern von kürzlich benutzten Informationen näher am Prozessor, d.h. in einer oberen Ebene.

Örtliche Lokalität: Falls ein Datum oder eine Instruktion referenziert wird, werden bald Daten oder Instruktionen mit nahgelegenen Adressen referenziert.

Bewege Blöcke aus aufeinanderfolgenden Daten näher zum Prozessor, falls eines von Ihnen benutzt wird.

Page 11: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 11

Arbeitsprinzipien Daten werden nur zwischen aufeinanderfolgenden Ebenen kopiert. Übertragungseinheit oder Blockgrösse (z.B. Datenblock, Seite): Die kleinste 

Informationseinheit, die in den zwei benachbarten Hierarchieebenen vorhanden oder nicht vorhanden sein kann.

Beispiel: Cache / Hauptspeicher

Prozessor

Adresse

Daten (schreiben)

Daten (lesen)

Page 12: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 12

Arbeitsprinzipien1. Datenanfrage an die obere Ebene.2. Feststellen in der oberen Ebene, ob die gesuchten Daten vorhanden sind

Treffer (hit): Daten sind in der oberen Ebene vorhanden Fehlzugriff (miss): Daten müssen durch eine Datenanfrage aus der nächst 

unteren Ebene besorgt werden.3. Weiterleiten der gesuchten Daten an die anfragende Ebene.

Cache virtueller Speicher

Page 13: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 13

Terminologie Hit‐Rate: Relativer Anteil der Speicherzugriffe, die in der oberen Ebene 

erfolgreich sind. Hit‐Zeit: Zugriffszeit zur oberen Ebene:

Hit_Zeit = Zugriffszeit + Zeit_zur_Bestimmung_von_hit_miss

Miss‐Rate: Relativer Anteil der Speicherzugriffe, die in der oberen Ebene nicht erfolgreich sind:

Miss_Rate = 1 ‐ (Hit_Rate)

Miss‐Strafe:Miss_Strafe = Zeit_zum_Finden_eines_Blocks_in_der_unteren_Ebene

+ Zeit_zum_Übertragen_zur_oberen_Ebene

Mittlere Zugriffszeit: Mittlere_Zugriffszeit = Hit_Zeit + Miss_Strafe ∙ Miss_Rate

Page 14: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 14

ImplementierungsalternativenWo kann ein Block platziert werden, wie wird er gefunden ?

direkte Abbildung teilassoziativ vollassoziativ

Welcher Block sollte bei einem Miss ersetzt werden ? zufällig am längsten unbenutzt

Was geschieht beim Schreiben eines Blocks ? durchgängiges Schreiben zurückkopieren

Page 15: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 15

Cache Architekturen

Page 16: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 16

Direkte Abbildung

5 Bit lange Speicheradresse [4 … 0] : 32 Daten im HauptspeicherTeiladresse [2 … 0] : Cache Index (Adresse im Cache Speicher)Teiladresse [4 … 3] : Cache Tag (Marke zur Identifikation der Datenadresse)

Page 17: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 17

Direkte AbbildungIst der gesuchteBlock in der Cachzeile?

In welcher Cachezeilemuss ich suchen?

Wo sind die gesuchtenDaten im gefundenenBlock?

Page 18: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 18

Beispiele direkte AbbildungCachegrösse:

Wie gross ist ein direkter Cache für 64 kByte Nutzdaten, Blockgrösse = 1 Wort = 4 Byte, byteweise Adressierung, Adresslänge 32 Bit?

64 kByte = 216 Byte = 214 BlöckeCachegrösse = 214 (32 + (32 ‐ 2 ‐ 14) + 1) Bit = 803 kBit 100 kByte

Beispiel: Zugriffssequenz (8 Cacheblöcke, 32 Speicherblöcke):

Page 19: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 19

Beispiele direkte Abbildung

Page 20: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 20

Vergrösserung der BlockgrösseCacheblock: Cachedaten, die ihren eigenen Tag besitzen.Vergrösserung der Blockgrösse:

Vorteile: Ausnutzung der örtlichen Lokalität sowie effizientere Speicherung. Nachteile: weniger unabhängige Cacheblöcke im Cache und höhere Miss‐Strafe 

(Zeit zum Ersetzen eines Blocks ist grösser)Speichergrösse:

L Bit breite Adresse, byteweise Adressierung, Cache mit 2N Byte Nutzdaten, 2M Byte pro Block

Teiladressen: [L‐1 … N] Tag,  [N‐1 … M] Cache Index,  [M‐1 … 0] Block+Byte offset

Cachegrösse: (1 + (L‐N) + 82M) 2(N‐M) Bit = 2N Byte + (1 + L – N) 2(N‐M) Bit

Page 21: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 21

Vergrösserung der BlockgrösseDiagramm eines Caches mit direkter Abbildung, 16 kByte Nutzdaten, Blockgrösse 16 Worte, byteweise Adressierung, 32 Bit Adresslänge:  

Ist der gesuchteBlock in der Cachzeile?

In welcher Cachezeilemuss ich suchen?

Wo sind die gesuchtenDaten im gefundenenBlock?

Page 22: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 22

Vergrösserung der Blockgrösse: Vorteile und NachteileGrosse Blöcke nutzen die örtliche Lokalität besser. Auf der anderen Seite gibt es bei sehr grosser Blockgrösse nur relativ wenige Blöcke im Cache. Programme arbeiten aber nicht nur auf nebeneinanderliegenden Daten (Datencache); ausserdem springen sie zwischen verschiedenen Softwarekomponenten (Instruktionscache).

Page 23: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 23

Assoziativer CacheProbleme bei direkter Abbildung:

Häufiger Miss aufgrund eines Konfliktes (mehrere Speicherblöcke werden auf einen Cacheindex abgebildet). 

Ungünstige festgelegte Ersetzungsstrategie bei einem Miss. Abhilfe: grösserer Cache oder mehrere Einträge pro Index (assoziativer Cache).

Assoziativer Cache: K Einträge pro Index (K‐fache Assoziativität), K direkte Caches arbeiten parallel Der Cacheindex selektiert eine Menge von Blöcken, die Tags werden mit dem 

entsprechenden Adressanteil parallel verglichen, die Daten werden entsprechend dem Resultat des Vergleiches selektiert.

Page 24: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 24

Vergleich von Cachestrukturen

1‐fach assoziativ2‐fach assoziativ

4‐fach assoziativ

8‐fach assoziativvollassoziativ

Page 25: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 25

Diagramm eines teilassoziativen Caches

Ist der gesuchteBlock in der Cachzeile?

In welcher Cachezeilemuss ich suchen?

Wo sind die gesuchtenDaten im gefundenenBlock?

Page 26: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 26

Vorteil der Assoziativität

Page 27: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 27

ErsetzungstrategienDirekte Abbildung:

Jeder Speicherblock kann nur auf einen Cacheblock abgebildet werden ‐> keine Auswahl möglich

Assoziativer Cache: Jeder Speicherblock kann auf einen von K Cacheblöcken abgebildet werden; 

bei vollassoziativem Cache: in irgendeinen Cacheblock.

Einige Ersetzungsstrategien: Zufällige Auswahl des zu ersetzenden Blocks. Der am längsten unbenutzte Block wird ersetzt. Hardware speichert die 

jeweiligen Zugriffszeiten und ermittelt den ältesten Block (aufwändig).

Page 28: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 28

SchreibalternativenWas passiert beim Schreiben vom Cache? Wie werden Informationen im Cache und im Hauptspeicher konsistent gehalten?

Zurückkopieren („write back“):  Prozessor schreibt nur in den Cache; falls der Block bei einem Miss ersetzt wird, wird 

er in den Hauptspeicher kopiert. Ein “dirty bit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und 

Cache. Schreibgeschwindigkeit richtet sich nach der des Caches und nicht nach der des 

Hauptspeichers. Cache und Hauptspeicher können für lange Zeit inkonsistent sein (problematisch für 

Ein/Ausgabe von Daten und Mehrprozessor‐ und Multicoresysteme).

Page 29: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 29

SchreibalternativenDurchgängiges Schreiben („write through“): 

Mit jedem Schreibvorgang wird auch der Hauptspeicher beschreiben. Verlieren wir nicht den Vorteil eines Caches? Verwendung eines Pufferspeichers zwischen Prozessor und Speicher: Prozessor 

schreibt in Cache und Pufferspeicher; Pufferspeicher wird kontinuierlich in den Hauptspeicher übertragen.

Voraussetzung: mittlere_Speicherrate < 1/Hautpspeicher_Schreibzykluszeit

Prozessor Cache Hauptspeicher

Puffer

Page 30: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 30

Cache Architekturen ‐ Leistungsberechnungen

Page 31: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 31

LeistungsberechnungenGrundlegende Gleichungen:

CPU_Zeit = (CPU_Instruktionszyklen + CPU_Wartezyklen)∙TaktperiodeCPU_Wartezyklen = Lese_Wartezyklen + Schreib_WartezyklenLese_Wartezyklen = 

Leseinstruktionen/Programm ∙ Lese_Miss_Rate ∙ Lese_Miss_Strafe/TaktperiodeSchreib_Wartezyklen = 

(Schreibinstruktionen/Programm ∙ Schreib_Miss_Rate ∙ Schreib_Miss_Strafe/Taktperiode) + Schreibpuffer_Wartezyklen

Vereinfachte Gleichung:CPU_Wartezyklen = 

Speicherinstruktionen/Programm ∙ Miss_Rate ∙ Miss_Strafe/Taktperiode + Instruktionen/Programm ∙ Miss/Instruktion ∙ Miss_Strafe/Taktperiode

Datencache

Instruktionscache

Page 32: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 32

BeispielGegeben:

Für ein bestimmtes Programm sind 33% aller Instruktionen Speicherinstruktionen, Miss‐Rate bei Instruktionen 5%, Miss‐Rate bei Daten 10%, CPIperfekt = 4, Miss_Strafe/Taktperiode 12 Zyklen.

Frage: Um wieviel schneller wäre ein Rechner mit perfektem Cache?

Antwort:Instruktions_Wartezyklen = Instruktionen ∙ 5% ∙ 12 = 0.6 ∙ InstruktionenDaten_Wartezyklen = Instruktionen∙33%∙10% ∙ 12 = 0.4 ∙ InstruktionenWartezyklen = 1.0 ∙ InstruktionenCPIwarten = (4 + 1) Zyklen/InstruktionCPU‐Zeit mit perfektem Cache ist um Faktor 5/4 besser.

Page 33: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 33

BeispielGegeben sind die gleichen Randbedingungen wie zuvor.Frage:

Wie steigt die Leistung des Rechners bei K‐facher Taktrate.Annahme: Speicher wird nicht schneller.

Antwort:Wartezyklen = K ∙ 1.0 ∙ Instruktionen = K InstruktionenCPIschnell = (4 + K) Zyklen/InstruktionCPU_Zeitlangsam / CPU_Zeitschnell =(Instruktionen∙CPIwarten∙Taktrate) / (Instruktionen∙CPIschnell∙Taktrate / K)= K ∙ 5/ (4 + K)

Beispiel: K = 6, Beschleunigungsfaktor = 3

Page 34: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 34

Mehrere CacheebenenL1 Cache:

klein,  schnell, möglichst kleine Hit_Time

L2 Cache: behandelt Misses vom L1 Cache grösser als L1, langsamer als L1, schneller als Hautspeicher möglichst kleine Miss_Rate um Hauptspeicherzugriff zu vermeiden

L3 Cache: findet sich vor allem in Multicore‐Prozessoren

Page 35: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 35

Mehrere CacheebenenBerechnungsbeispiel:

nur Instruktions‐Cache (in diesem Beispiel)Taktrate 4 GHz; CPI = 1 (mit perfekten Caches); L1 Miss_Rate = 2%Zugriffszeit L2 Cache = 5ns ; L2 Miss_Rate = 10 %Zugriffszeit Hauptspeicher = 100ns

Nur L1 Cache:  Miss_Strafe/Taktperiode = 100ns/0.25ns = 400 Zyklen CPI = 1 + 0.02 ∙ 400 = 9

Mit L1 und L2 Cache: L1 Miss mit L2 Hit: Miss_Strafe/Taktperiode = 5ns / 0.25ns = 20 Zyklen L1 Miss mit L2 Miss: 

Miss_Strafe/Taktperiode = 105ns / 0.25ns = 420 Zyklen CPI = 1 + 0.02 ∙ 0.9 ∙ 20 + 0.02 ∙ 0.1 ∙ 420 = 2.2

Page 36: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 36

Speicher und Bus

Die Kombination von Speicherarchitektur und Bussystem kann die Systemleistung stark beeinflussen.

Page 37: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 37

Speicher und BusAnnahmen:

1 Buszyklus zum Übertragen der Adresse 15 Buszyklen für jeden Hauptspeicherzugriff 1 Buszyklus pro Datentransfer

Beispiel 1 (Organisation a.): Blockgrösse 4 Worte, Speicher‐ und Busbreite 1 Wort Miss_Strafe = (1 + 4 ∙ 15 + 1) Buszyklen = 62 Buszyklen

Mittlere Bandbreite = [(4 ∙ 4) / 62] Bytes/Zyklus = 0.258 Bytes/Zyklus

•15 Zyklen

•15 Zyklen

•15 Zyklen

•15 Zyklen

Zeit

Page 38: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 38

Speicher und BusBeispiel 2 (Organisation b.):

Blockgrösse 4 Worte, Speicher‐ und Bus‐Breite 4 Worte Miss_Strafe = (1 + 15 + 1) Buszyklen = 17 Buszyklen Bandbreite = (4 ∙ 4) / 17 Bytes/Zyklus = 0.94 Bytes/Zyklus

Beispiel 3 (Organisation c.): Blockgrösse 4 Worte, 4 Speicherbänke mit einer Breite von je einem Wort, 

Busbreite 1 Wort Miss_Strafe = (1 + 15 + 4) Buszyklen = 20 Buszyklen Bandbreite = (4 ∙ 4) / 20 Bytes/Zyklus

= 0.8 Bytes/Zyklus•15 Zyklen

•15 Zyklen

•15 Zyklen

•15 Zyklen

Page 39: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 39

Speicherhierarchie BeispielIntel i7 920 Prozessor: 

Grösse 13.5 x 19.6 mm, 731 Millionen Transistoren. 

4 Prozessorkerne mit jeweils  32 KB L1 Instruktions‐ und 

32 KB L1 Daten‐Cache  sowie einem 512 KB L2 Cache. 

Die 4 Prozessorkerne teilen sich einen gemeinsamen 8 MB L3 Cache.

Page 40: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 40

Speicherhierarchie Beispiel

Write‐allocate: Bei einem Write‐Misswird der (alte) Block zunächst aus der unteren Ebene in den Cache geschriebenund dann durch das Write überschrieben:

Write‐Miss = Read‐Miss + Write‐Hit

Page 41: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 41

Cache Kohärenz

Page 42: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 42

Cache KohärenzInkohärente Daten in Caches und Hauptspeicher:

Problem bei Multiprozessorsystemen mit gemeinsamem Speicher, z.B. Multicoresystemen.

Page 43: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 43

Cache Kohärenz

Page 44: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 44

Cache Kohärenz

Page 45: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 45

Cache Kohärenz1. Falls ein Prozessor P den Inhalt einer Speicherzelle X liest, nachdem er sie mit 

dem Wert w beschrieben hat, dann ist der gelesene Wert w, sofern die Speicherzelle in der Zwischenzeit nicht durch einen anderen Prozessor beschrieben wurde.

2. Falls ein Prozessor P den Inhalt einer Speicherzelle X zur Zeit t1 liest, nachdem ein anderer Prozessor die Speicherzelle mit dem Wert w zur Zeit t0 beschrieben hat, dann ist der gelesene Wert w, sofern t1‐t0 genügend gross ist, und die Speicherzelle in der Zeit zwischen t0 und t1 nicht neu beschrieben wurde.

3. Alle Prozessoren beobachten die gleiche Reihenfolge zweier Schreibbefehle auf die gleiche Speicherposition.

Page 46: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 46

Cache Kohärenz: Snooping ProtokollAlle Prozessoren beobachten Datenübertragungen zwischen jedem Cache und dem gemeinsamen Speicher.

Page 47: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 47

Cache Kohärenz: Snooping Protokolle Erweiterung der Status‐Bits jeder Cachezeile. Zusätzliche Cache‐Controller, die das jeweilige Cachekohärenz‐Protokoll 

implementieren. Zur Vermeidung von Zugriffskonflikten zwischen CPU und Bus werden Adressen‐

Tags und Status‐Bits dupliziert (Snoop tag). Protokolle werden üblicherweise durch endliche Automaten dargestellt. Die 

Zustände sind den Cachezeilen zugeordnet und repräsentieren die aktuelle Situation.

Protokollbeispiele:  Write invalidate für „write through“ Write invalidate für „write back“ MESI (Modified, Exclusive, Shared Invalid) für „write back“

Page 48: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 48

Cache Kohärenz: Write invalidate/Write through 

Das Zustandsdiagramm ist auf eine Cachezeile von Prozessor P bezogen. Speicherung des Zustands durch ein Bit pro Cachezeile.

invalid valid

RM

WM

SHW

RH

WM

RH:      Read HitRM:  Read MissWH:  Write HitWM:  Write MissSHW:  Snoop Hit on Write

Cache Line FillWrite Cache and Memory 

RM

WH

Block, in den von einem anderemProzessor geschrieben wird,ist in der Cachezeile

Auffüllen der Cachezeileaus dem Hauptspeicher

Speichern in die Cachezeileund in den Hauptspeicher

verursacht durchZugriff auf einenanderen Cache(remote cache)

Page 49: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 49

Cache Kohärenz: MESIWeit verbreitetes Write Invalidate Protokoll für Zurückkopieren (write back): MESI (Modified, Exclusive, Shared, Invalid).

Modified: Es gibt nur eine Cachekopie mit Schreibberechtigung, Cacheinhalt stimmt nicht mit Hauptspeicher überein.

Exclusive: Es gibt nur eine Cachekopie mit Schreibberechtigung, Cacheinhalt stimmt mit Hauptspeicher überein.

Shared: Kein Prozessor hat Schreibberechtigung, Cacheinhalt stimmt mit Hauptspeicher überein.

Invalid: Jeder Zugriff führt zu einem Miss.

Page 50: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 50

Cache Kohärenz : MESI

Zustände einer Cachezeile:

Page 51: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 51

Cache Kohärenz : MESI Read Hit: Lokale Operation

Read Miss: Prozessor signalisiert Read Miss auf dem Bus und initiiert einen Lesevorgang aus dem Hauptspeicher. Falls der Block in einem anderen Prozessor exclusive ist, wird er in beiden 

Prozessoren zu shared. Falls der Block in anderen Prozessoren shared ist, wird er in allen diesen 

Prozessoren zu shared. Falls der Block in einem anderen Prozessor modified ist, wird er zunächst in den 

Hauptspeicher geschrieben und dann in beiden Prozessoren zu shared. Falls der Block in keinem anderen Prozessor ist, wird er zu exclusive. 

Page 52: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 52

Cache Kohärenz : MESI Write Hit:

Falls der Block shared ist, geht er in modified über. Hierzu signalisiert er „intent‐to‐modify“ und alle Prozessoren invalidieren den Block.

Falls der Block exclusive ist, wird der Cache beschrieben und auf modifiedgeändert.

Falls der Block modified ist, wird der Cache beschrieben. Write Miss: 

Der Prozessor signalisiert zunächst „intent‐to‐modify“. Falls der Block in einem anderen Prozessor modified ist, wird er von ihm zunächst 

in den Hauptspeicher geschrieben und dann zu invalid. Falls der Block in anderen Prozessoren shared oder exclusiv ist, wird er in diesen 

Caches zu invalid. Anschliessend wird der Block in den Cache geschrieben und zu modified.

Page 53: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 53

Cache Kohärenz : MESI•Lokale Cache Operationen

modified

RH: Read HitRMS: Read Miss SharedRME: Read Miss ExclusiveWH: Write HitWM: Write MissSHW: Snoop Hit on Intent-to-ModifySHRM: Snoop Hit on Read Miss

Cache Line FillLine CopybackIntent-to-Modify

invalid

shared

exclusive

WH

RMS

RH

RH

WM

RME

RMS

RMSRME

WM

RMS

WMWH

RME

RME

WHRH

WM

Block ist in keinemanderen Cache

Block ist in einem anderenCache “exclusive”, “modified”oder “shared”.

Page 54: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 54

Cache Kohärenz : MESI•Remote Cache Operationen

invalid

shared

exclusive

SHW

SHW

SHRM

SHW

modified

SHRM

RH: Read HitRMS: Read Miss SharedRME: Read Miss ExclusiveWH: Write HitWM: Write MissSHW: Snoop Hit on Intent-to-ModifySHRM: Snoop Hit on Read Miss

Cache Line FillLine CopybackIntent-to-Modify

Page 55: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 55

Virtueller Speicher

Page 56: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 56

Ebenen der Speicherhierarchie

CD/DVD/Magnetband

Programm, Compiler1‐8 Bytes, 1 Taktzyklus

Cache Steuerung (Hardware)16‐128 Bytes, 10‐1000 Taktzyklen

Betriebssystem (Software)4000 ‐ 64000 Bytes, 10M‐100 M Taktzyklen

Anwendungsprogramm (Software)Mbytes, ‐

verantwortlich für ÜbertragungBlockgrösse Zugriffszeit schneller

grösser

Hauptspeicher

Cache Architektur

virtueller Speicher

sekundärer Speicher

Page 57: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 57

Prozess«Prozess»: Die Instanz eines Programms (oder eines Teils davon), die vom Prozessor zu einem gewissen Zeitpunkt mit konkreten Eingabedaten ausgeführt wird.  Ein Prozess besteht aus dem zugehörigen Programm‐Code sowie demderzeitigen Zustand.

Eigenschaften: Ein Prozess hat seinen eigenen 

privaten Adressraum. Zu seinem Zustand gehören zum 

Beispiel die Prozessor‐Register, der Programmzähler und Daten.

In Kapitel 7 werden wir uns genauer mit der (quasi)‐parallelen Abarbeitungmehrerer Prozesse beschäftigen.

typischer Adressraum eines Prozesses

Stack 

Text 

Static data

Dynamic data

0000 0000hex

7FFF FFFFhex

Page 58: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 58

Gründe für die Verwendung virtueller Speicher

1. Manche Prozesse passen einschliesslich ihrer Daten nicht in den Hauptspeicher. 

2. Viele Betriebssysteme erlauben die (quasi) gleichzeitige Ausführung mehrerer unabhängiger Prozesse, die jeweils ihren eigenen Adressraum (Bereich der Speicheradressen, auf die der Prozess zugreifen kann) haben.  Falls nur ein Prozess den Hauptspeicher besetzt, kann ein Prozesswechsel zu 

erheblichen Startzeiten (Zeit, bis die erste Instruktion ausgeführt wird) führen. Damit alle Prozesse in den Hauptspeicher passen, müsste er sehr gross sein. Der Adressraum eines Prozesses sollte vom Zugriff anderer Prozesse geschützt 

werden (unabhängige Adressräume).

Page 59: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 59

Virtueller Speicher ‐ Grundprinzipien

Page 60: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 60

Grundprinzip

virtuelleSeite

physikalischeSeite

Adressraumaus der Sichteines Prozesses

Adressraum aus der Sichtvon Hauptspeicher undsekundärem Speicher

Jeder Prozess hatseine eigene, privateAdressübersetzung

Page 61: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 61

Virtueller Speicher vs. CacheCache

Die verschiedenen Cacheblöcke gehören üblicherweise zum gleichen Prozess. Cache‐Misses werden von der Hardware gelöst.

Virtueller Speicher Ein Speicherblock wird als Seite (page) bezeichnet, ein Miss als Seitenfehler (page

fault). Ein Prozess kann quasi gleichzeitig mit anderen Prozessen ausgeführt werden. 

Prozesse haben voneinander unabhängige virtuelle Speicherbereiche. Die Adressumsetzung (virtueller auf physikalischer Adressraum) erfolgt durch 

Hardware und Software. Seitenfehler werden über Software gelöst.

Page 62: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 62

Adressabbildung

Adressierung innerhalbeiner Seite

Abbildung von virtueller Seiteauf physikalischeSeite.

Seitengrösse 212 Byte = 4 KBytemaximale Zahl physikalischer Seiten 218maximale Zahl virtueller Seiten 220;

adressierbarer physikalischer Speicher 1 GByteGrösse des virtuellen Adressraums 4 GByte

Page 63: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 63

ImplementierungsalternativenWo kann ein Block platziert werden, wie wird er gefunden ?

Üblicherweise vollassoziative Platzierung da die Kosten zur Beseitigung eines Seitenfehlers sehr hoch sind (10 – 100 Millionen Taktzyklen).

Auffinden einer Seite im Hauptspeicher erfolgt üblicherweise über eine Tabelle (Seitentabelle), die virtuelle auf physikalische Adressen abbildet.

Jeder Prozess besitzt seine eigene Seitentabelle.

Welcher Block sollte bei einem Miss ersetzt werden ? Üblicherweise LRU (least recently used, am längsten unbenutzt) oder eine 

Annäherung mit weniger Speicher‐ und Rechenaufwand.

Was geschieht beim Schreiben eines Blocks ? Zurückkopieren, da das Schreiben in den sekundären Speicher zu lange dauert und 

zudem Seitenfehler im Vergleich zu Cache‐Misses selten sind.

Page 64: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 64

Seitentabelle

Jeder Prozess besitzt seine eigeneSeitentabelle. Zunächst gehen wir davon aus, dass die Seitentabellen im Hauptspeichergespeichert sind.Im Beispiel besitzt eine Seitentabelle220 Einträge.

Zeiger auf die Seitentabelle desderzeit ausgeführten Prozesses.

Eine Zeile der Seitentabelle enthältüblicherweise noch Bits, dieInformationen über Zugriffsrechteenthalten.

zumindest istnoch ein “dirty bit” notwendig

Page 65: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 65

SeitenfehlerWie wird ein Seitenfehler erkannt?

Das Valid‐Bit in der Seitentabelle ist ‘0’. Eine Unterbrechung des Prozessablaufs wird erzeugt und die Kontrolle an das 

Betriebssystem übergeben. Es ist verantwortlich für die gesamte Prozessorganisation und somit auch für die Organisation des virtuellen Speichers.

Wo ist die Seite im sekundären Speicher? Betriebssystem unterhält eine Datenstruktur, in der diese Information enthalten 

ist.  Diese Information kann auch in die Seitentabelle integriert sein.Welche Seite im Hauptspeicher wird ersetzt?

Üblicherweise wird eine Annäherung an LRU (least recently used) benutzt: Ein Referenz‐Bit für eine Seite wird auf ‘1’ gesetzt, falls die Seite benutzt wird (genaue Erklärung folgt später).

Wann wird die zu ersetzende Seite in den sekundären Speicher kopiert? Falls in die Seite geschrieben wurde; dies wird durch ein Dirty‐Bit signalisiert.

Page 66: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 66

Eine Seite wird in den sekundären Speichergeschrieben, falls sie ersetzt wird und sie zuvor beschrieben wurde (Dirty =‘1’).

Seitenfehler

Bei einem Seitenfehler wird eine gültige Seite(Valid = ‘1’) mit Ref = ‘0’ ersetzt.

Page 67: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 67

Performanz ‐ SeitenfehlerAnnahmen:

Die Architektur besitzt keinen Cache. Falls der Zugriff auf die Seitentabelle zu einem Seitenfehler führt, dann wird er 

zunächst behoben und dann erfolgt ein neuer Zugriff auf die Seitentabelle. Seitenfehler‐Rate: p mit 0  p 1 . Falls p == 0 dann gibt es keine Seitenfehler; falls 

p==1 dann ist jeder Zugriff ein Seitenfehler. Mittlere Zugriffszeit zum Hauptspeicher: h Mittlere Seitenfehler‐Bearbeitungszeit: f

Effektive Speicherzugriffszeit (Effective Access Time EAT):EAT = 2 • h + p • (h + f) 

in jedem Fall erfolgt der Zugriff auf die Seitentabelle (imHauptspeicher) und der Zugriff auf die gesuchten Daten.

erster Zugriff auf die Seitentabelle (Fehlerwird danach festgestellt) sowie Beheben des Fehlers.

Page 68: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 68

Rechenbeispiel – Performanz SeitenfehlerSpeicherzugriffszeit  200 NanosekundenMittlere Seitenfehler‐Bearbeitungszeit  8 MillisekundenSeitenfehler‐Rate  10‐3

EAT = 2  • 200 ns + p • (8 ms + 200 ns) = 400 ns + 8000 ns + 0.2 ns = 8400.2 ns

Für p = 10‐3 beträgt die EAT also etwa 8.4 µs. Dies ist eine Verlangsamung etwa um den Faktor 42 gegenüber einem direkten

Speicherzugriff.

Wie hoch ist die effektive Speicherzugriffszeit?

Page 69: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 69

Problem 1: Grösse der SeitentabelleBeispiel für einen Prozess: 

32 Bit virtueller Adressraum, Seitengrösse 212 Byte, 4 Bytes pro Tabelleneintrag:Zahl der Einträge = 232 / 212 = 220 ; Grösse der Tabelle = 220 * 22 Bytes = 4 Mbyte 

Eigentlich müssten die Seitentabellen aller Prozesse im Hauptspeicher liegen.Möglichkeiten der Abhilfe:

Durch geeignete Datenstrukturen werden entweder nur die Einträge der tatsächlich verwendeten virtuellen Seiten gespeichert oder die Grösse der Tabelle entspricht der maximalen Zahl an Seiten im Hauptspeicher (wird in der Vorlesung nicht weiter behandelt).

Die Verwaltung aller Tabellen wird in einem Prozess ausgeführt, der Teil des Betriebssystems ist. Dieser Prozess verwendet ebenfalls einen virtuellen Adressraum, d.h. die Seitentabellen sind ihrerseits auf virtuelle Seiten aufgeteilt und können im sekundären Speicher liegen.

Page 70: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 70

Hierarchischer Aufbau einer Seitentabelle

Die Seitentabelle wird in Teiltabellen (innere Seitentabellen) aufgeteilt.

Ziel: Es werden lediglich diejenigen inneren Seitentabellen (inner page table) gespeichert, die tatsächlich genutzten virtuellen Speicherbereichen zugeordnet sind.

Die äussere Seitentabelle enthält Einträge, die auf die inneren Seitentabellen zeigen.

Vorteil: Für ungenutzte virtuelle Speicherbereiche ist nicht notwendigerweise eine innere Seitentabelle erforderlich.

•inner page •table

•outer page •table

inner pagetables

Page 71: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 71

Beispiel – Zweistufige Seitentabelle

Annahmen: • Seitengrösse 4kB• 4 Bytes pro Eintrag in der 

«inner page table»

physikalischeSeite: 4 kB

210 Zeilen

210 Zeilen

Page 72: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 72

Problem 2: Aufwändige ErsetzungsstrategieWelche Seite soll ersetzt werden, falls keine freie physikalische Seite verfügbar ist? Ziel: Algorithmus mit minimaler Zahl von Seitenfehlern. Problem: LRU (least recently used) ist aufwendig, da jeweils die physikalische Seite 

bestimmt werden muss, die am längsten unbenutzt ist. Eine mögliche Lösung: Approximation mittels Referenz‐Bit («second chance»):

Jede Seite erhält ein Referenz‐Bit. Falls eine Seite benutzt wird, wird Ref=‘1’ gesetzt. Ein Zeiger auf die Einträge der Seitentabelle wird definiert. Die folgende Schritt wird bei jedem Seitenfehler so oft durchgeführt, bis eine Seite 

ersetzt wird: Falls der Zeiger auf eine Seite mit ‘0’ zeigt, dann diese Seite ersetzen, das Referenz‐Bit auf 

‘1’ setzen und den Zeiger inkrementieren (auf die nächste gültige Seite zeigen, zirkulär). Falls der Zeiger auf eine Seite mit ‘1’ zeigt, dann das Referenz‐Bit auf ‘0’ setzen und den 

Zeiger inkrementieren (auf die nächste gültige Seite zeigen, zirkulär).

Page 73: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 73

Problem 2: Aufwändige ErsetzungsstrategieSeitenfehler:

diese Seitewirdersetzt

1

Page 74: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 74

Virtueller Speicher –Translation Lookaside Buffer (TLB)

Page 75: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 75

Problem 3: ZugriffsgeschwindigkeitJeder Speicherzugriff besteht nun aus zwei Zugriffen: Bestimmung der physikalischen Adresse sowie Datenzugriff.Abhilfe:

Spezieller Hardware‐Cache für die Seitentabelle: Translation Lookaside Buffer (TLB).

Damit gibt es zwei Klassen von Misses: TLB‐ Miss sowie Seitenfehler. TLBs verwenden üblicherweise «Zurückkopieren» (write back), da Misses selten 

sind.

Page 76: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 76

TLB als Cache für die Seitentabellen

voll‐assoziativoder auchteil‐assoziativ

Page 77: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 77

Überblick Cache ‐ TLBDatenpfad undKontrollpfad

translation lookasidebuffer (TLB)

1. Cache‐Ebene

2. Cache‐Ebene

Bus: Verbindung zwischen Komponenten

Hauptspeicher

Page 78: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 78

Beispiel: Cache – TLB

voll‐assoziativer TLB

Cache mit direkter Abbildung

getrennter Tag‐ und Daten‐Zugriffim Cache (kein Multiplexer)

Page 79: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 79

Verarbeitung von Lesen und durchgängigem Schreiben

Write Access Bit schützt gewisse Seiten vor dem Schreibzugriff; Teil des Speicher‐Schutzes (später mehr dazu …)

Annahme: Der Cache ist «physikalisch» organisiert(Tags und Indizes). Er könnte auch virtuell organisiert sein (Indizes und eventuell auch Tags);dies wird hier nicht weiter ausgeführt.

Page 80: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 80

Performanz – TLB Miss ohne SeitenfehlerAnnahmen:

Die Architektur besitzt keinen Cache. Es tritt kein Seitenfehler auf. Falls der Zugriff auf den TLB zu einem Miss führt, dann wird er zunächst behoben 

und dann erfolgt ein erneuter Zugriff auf den TLB. Zugriffs‐ und Suchzeit im assoziativen TLB: s Miss‐Rate: m mit 0 m 1  Mittlere Zugriffszeit zum Hauptspeicher: h Mittlere TLB Miss‐Bearbeitungszeit: o

Effektive Speicherzugriffszeit (Effective Access Time EAT):

EAT = (s + h) + m • (s + o)

Page 81: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 81

Virtueller Speicher – TLB Miss und Seitenfehler

Page 82: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 82

Seitenfehler und TLB MissAuflösen von TLB Miss und Seitenfehler: Der gesamte Vorgang ist komplex und stellt hohe Anforderungen an die Hardware‐ und Softwarearchitektur, z.B. exakte Unterbrechungen von Instruktionen sowie Unterbrechungen der Betriebssystemprozesse. Es folgt eine von vielen Möglichkeiten:TLB Miss

Ein TLB Miss führt zu einer Programmunterbrechung (Ausnahmefehler). Die Kontrolle wird an das Betriebssystem übergeben, das folgende Aktionen 

ausführt: Eine Zeile im TLB wird ausgewählt, die ersetzt werden soll.  Aus der Adresse der fehlenden virtuellen Seite sowie der Basisadresse der derzeit 

gültigen Seitentabelle wird der im TLB fehlende Adresseintrag in der Seitentabelle ermittelt.

Dieser fehlende Eintrag wird in die freie Zeile im TLB übertragen. Zurückkehren zum unterbrochenen Prozess.

Page 83: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 83

Seitenfehler und TLB MissSeitenfehler (page fault)

Der Zugriff auf eine Speicheradresse führt im TLB auf einen Eintrag mit Valid == ‘0’. 

Eine Unterbrechung des Programmablaufs wird erzwungen und das Betriebssystem führt drei Schritte durch:1. Der Eintrag in der Seitentabelle führt zum Ort der fehlenden Seite im 

sekundären Speicher.2. Eine Seite im Hauptspeicher wird ausgewählt, die ersetzt werden soll. Ist die 

Seite verändert worden (Dirty == ‘1’), wird sie zunächst in den sekundären Speicher geschrieben und die Einträge in der Seitentabelle und im TLB aktualisiert (Valid = ‘0’).

3. Die fehlende Seite wird vom sekundären Speicher in den Hauptspeicher kopiertund die entsprechende Einträge in der Seitentabelle und im TLB werden aktualisiert.

•83

Page 84: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 84

Ablauf einer Seitenfehler‐Behandlung

TLB

Processor

1. Prozessor sendet virtuelle Adresse (VA) an TLB. Annahme TLB Miss. 2.‐3. Laden des fehlenden Seitentabellen‐Eintrages (PTE) mit der Adresse PTEA in den TLB.

TLB miss exception

TLB fault handling

Page 85: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 85

Ablauf einer Seitenfehler‐Behandlung

TLB

Processor

1. Prozessor sendet virtuelle Adresse (VA) an TLB. Annahme TLB Miss. 2.‐3. Laden des fehlenden Seitentabellen‐Eintrages (PTE) mit der Adresse PTEA in den TLB.4. Annahme Seitenfehler (Valid == ‘0’). Verzweigung zum Programm, das die Ausnahme behandelt.

page fault exception

Page 86: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 86

Ablauf einer Seitenfehler‐Behandlung

TLB

Processor

page fault exception

1. Prozessor sendet virtuelle Adresse (VA) an TLB. Annahme TLB Miss. 2.‐3. Laden des fehlenden Seitentabellen‐Eintrages (PTE) mit der Adresse PTEA in den TLB.4. Annahme Seitenfehler (Valid == ‘0’). Verzweigung zum Programm, das die Ausnahme behandelt.5. Fehlerbehandlungsprogramm bestimmt eine Seite im Hauptspeicher, deren Inhalt ersetzt werden soll.Annahme: sie wurde zuvor nicht beschrieben (Dirty == ‘0’).

Page 87: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 87

Ablauf einer Seitenfehler‐Behandlung

TLB

Processor

page fault exception

1. Prozessor sendet virtuelle Adresse (VA) an TLB. Annahme TLB Miss. 2.‐3. Laden des fehlenden Seitentabellen‐Eintrages (PTE) mit der Adresse PTEA in den TLB.4. Annahme Seitenfehler (Valid == ‘0’). Verzweigung zum Programm, das die Ausnahme behandelt.5. Fehlerbehandlungsprogramm bestimmt eine Seite im Hauptspeicher, deren Inhalt ersetzt werden soll.Annahme: sie wurde zuvor nicht beschrieben (Dirty == ‘0’). 

6. Die neue Seite wird in den Hauptspeicher geschrieben und Seitentabelle/TLB werden aktualisiert.

Page 88: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 88

Ablauf einer Seitenfehler‐Behandlung

1. Prozessor sendet virtuelle Adresse (VA) an TLB. Annahme TLB Miss. 2.‐3. Laden des fehlenden Seitentabellen‐Eintrages (PTE) mit der Adresse PTEA in den TLB.4. Annahme Seitenfehler (Valid == ‘0’). Verzweigung zum Programm, das die Ausnahme behandelt.5. Fehlerbehandlungsprogramm bestimmt eine Seite im Hauptspeicher, deren Inhalt ersetzt werden soll.Annahme: sie wurde zuvor nicht beschrieben (Dirty == ‘0’). 

6. Die neue Seite wird in den Hauptspeicher geschrieben und Seitentabelle/TLB werden aktualisiert.7. Der «page fault handler» kehrt zum ursprünglichen Prozess zurück.

page fault exception

TLB

Page 89: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 89

Kommunikation zwischen Komponenten

Page 90: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 90

Ein/Ausgabe (Input/Output – I/O)

Page 91: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 91

Befehle vom Prozessor an die E/A‐EinheitSpeicheradressierte Ein/Ausgabe (memory mapped I/O): 

Teile des Adressraumes sind den E/A‐Einheiten zugewiesen. Schreiben und Lesen zu diesen Adressen bzw. Registern wird als Befehl an die E/A‐

Einheit interpretiert:  Steueradressen veranlassen die E/A‐Einheit zu agieren, Statusadressen zeigen die derzeitige Aktivität oder Fehlermeldungen an, Datenadressen dienen dem Datentransfer zwischen Prozessor und E/A‐Einheit

Benutzerprogrammen ist es oft nicht erlaubt, direkt auf E/A‐Adressen zuzugreifen. Sie werden vom Betriebssystem verwaltet (siehe Kapitel 7).

Page 92: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 92

Übersicht speicheradressierte Ein/AusgabeDatenpfad undKontrollpfad

translation lookasidebuffer (TLB)

1. Cache‐Ebene2. Cache‐Ebene

Bus: Verbindung zwischen Komponenten

Hauptspeicher

E/A Einheit

Page 93: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 93

Information von der E/A‐Einheit an ProzessorEin Prozess muss wissen, wann

die E/A‐Einheit eine Operation abgeschlossen hat oder  die E/A‐Operation einen Fehler verursacht hat.

Diese Information kann auf zwei Arten übermittelt werden: Polling: Die E/A‐Einheit gibt Informationen in ein Statusregister, periodisches 

Abfragen der Statusadresse.

E/A Unterbrechung: Falls die E/A‐Einheit Aufmerksamkeit vom Prozessor benötigt, unterbricht sie ihn im laufenden Programm (siehe Kapitel 3).

Page 94: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 94

Datenaustausch zwischen I/O Einheit und ProzessorProblem: 

Belastung des Prozessors mit Datenaustausch zwischen Speicher und anderen Komponenten, z.B. Netzwerkzugang, externer Speicher.

Abhilfe:  spezieller Ein/Ausgabe‐Prozessor, der für die Datenübertragung zuständig ist: DMA 

(direct memory access).DMA: 

ausserhalb der CPU angesiedelt (logisch, nicht unbedingt physikalisch) überträgt Datenblöcke zu oder vom Speicher unabhängig vom Prozessor unterbricht den Prozessor, falls der gesamte Datentransfer abgeschlossen ist

Page 95: 6 · Ein “dirtybit” für jeden Cacheblock zeigt an, ob der Block zurückkopiert werden muss. Aufwändige Steuerung aber kleiner Bandbreitenbedarf zwischen Hauptspeicher und Cache.

6 ‐ 95

DMAPrinzipieller Aufbau und Ablauf:

Der Prozessor sendet die Startadresse der Daten, das Ziel der Übertragung und die Zahl der Daten zur DMA Komponente.

Die DMA Komponente liefert die Steuersignale und die fortlaufenden Adressen, die über den Bus zu den beteiligten Komponenten(z.B. Speicher und Ein/Ausgabe Einheit) geleitet werden.

Bus