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

Arbeitsprinzipien

6 ‐ 2

Übersicht Speicherhierarchie Ziele:  Dem Benutzer möglichst viel Speicherkapazität zur Verfügung stellen.  Möglichst kleine Zugriffszeit.  Möglichst kostengünstig.

SSD (solid state drive) HDD (hard disk drive) Zugriffszeit  0.25‐0.5ns                   0.5‐2.5ns                50‐70ns           0.1‐20ms Grösse ~ 1kByte                ~ 16MByte              ~ 32GByte      ~ 1000GByte Kosten/Mbyte 0.5 – 1.0$              0.01–0.02$     0.00005–0.0005$ 6 ‐ 3

Plattenspeicher (Hard Disk Drive)

6 ‐ 4

DRAM Architektur DRAM (dynamisch)

SRAM (statisch)

6 ‐ 5

Technologische Trends DRAM (dynamic random access memory) Speicherbausteine:  Zugriffszeit sinkt mit etwa 6% pro Jahr  Speicherkapazität  steigt mit etwa 45% pro Jahr

6 ‐ 6

Technologische Trends Zugriffszeit DRAM vs. Zykluszeit Prozessor

Lücke

6 ‐ 7

Ebenen der Speicherhierarchie verantwortlich für Übertragung Blockgrösse Zugriffszeit

Cache Architektur

schneller

Programm, Compiler 1‐8 Bytes, 1 Taktzyklus Cache Steuerung (Hardware) 16‐128 Bytes, 10‐1000 Taktzyklen

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

sekundärer Speicher Anwendungsprogramm (Software) Mbytes, ‐

virtueller Speicher

CD/DVD/Magnetband

grösser

6 ‐ 8

Lokalität Die Effizienz der hierarchischen Speicherarchitektur basiert auf dem Prinzip der  Lokalität:  Programme greifen in einem kleinen Zeitintervall auf einen relativ kleinen,  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.

6 ‐ 9

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.

6 ‐ 10

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 Adresse

Prozessor

Daten (schreiben) Daten (lesen)

6 ‐ 11

Arbeitsprinzipien 1. 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

6 ‐ 12

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

6 ‐ 13

Implementierungsalternativen Wo 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 6 ‐ 14

Cache Architekturen

6 ‐ 15

Direkte Abbildung

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

Direkte Abbildung

6 ‐ 17

Beispiele direkte Abbildung Cachegrö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 Worte Cachegrösse = 214 (32 + (32 ‐ 2 ‐ 14) + 1) Bit = 803 kBit  100 kByte

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

6 ‐ 18

Beispiele direkte Abbildung

6 ‐ 19

Vergrösserung der Blockgrösse Cacheblock: 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) + 82M)  2(N‐M) Bit = 2N Byte + (1 + L – N)  2(N‐M) Bit

6 ‐ 20

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

6 ‐ 21

Vergrösserung der Blockgrösse: Vorteile und Nachteile Grosse Blöcke nutzen die örtliche Lokalität besser. Auf der anderen Seite gibt es bei  grossen Blockgrösse nur wenige Blöcke im Cache. Programme arbeiten nicht nur  auf nebeneinanderliegenden Daten (Datencache) und springen auch zwischen  verschiedenen Softwarekomponenten (Instruktionscache).

6 ‐ 22

Assoziativer Cache Probleme 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.

6 ‐ 23

Vergleich von Cachestrukturen 1‐fach assoziativ

2‐fach assoziativ

4‐fach assoziativ

8‐fach assoziativ vollassoziativ

6 ‐ 24

Diagramm eines teilassoziativen Caches

6 ‐ 25

Vorteil der Assoziativität

6 ‐ 26

Ersetzungstrategien Direkte 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).

6 ‐ 27

Schreibalternativen Was 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 des Hauptspeichers.  Cache und Hauptspeicher können für lange Zeit inkonsistent sein (problematisch für  Ein/Ausgabe von Daten und Mehrprozessor‐ und Multicoresysteme).

6 ‐ 28

Schreibalternativen Durchgä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