• Keine Ergebnisse gefunden

Wie groß sollten Cache‐Blöcke sein?

N/A
N/A
Protected

Academic year: 2022

Aktie "Wie groß sollten Cache‐Blöcke sein?"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Quiz

Gegeben sei ein 16KB‐Cache mit 32 Byte Blockgröße.

Wie verteilen sich die Bits einer 32‐Bit‐Adresse auf:

Tag       Index      Byte‐Offset

32‐Bit‐Adresse

31 30 29      ...       2 1 0 31 30 29      ...       2 1 0

(2)

Quiz

Gegeben sei ein Cache mit 64 Blöcken mit Block‐Größe 16 Bytes.

Was ist die Cache‐Größe in KB?

(3)

Wie groß sollten Cache‐Blöcke sein?

• Je Länger die Blöcke desto größer die Konkurrenz.

(4)

Ergänzung: Split‐Caches

Split‐Cache: besteht aus zwei unabhängigen Caches

• Ein Cache für die Instruktionen

• Ein Cache für die Daten

Vorteil: die Cache‐Bandbreite (d.h. wie viel Daten pro Zeiteinheit  können ausgelesen/geschrieben werden) wird erhöht.

Erinnerung: unsere MIPS‐CPU konnte auch gleichzeitig einen  Instruction‐Fetch und einen Datenzugriff machen.

Nachteil: die Miss‐Rate erhöht sich, da die Aufteilung in Bytes für  Instruction‐ und Daten‐Cache fest ist und ggf. nicht optimal für  das aktuelle Programm ist.

Beispiel: Miss‐Raten für einen Intrinsity FastMATH Prozessor

• Split‐Cache (32 KB aufgeteilt): 3,24% Miss‐Rate

• Combined‐Cache (32 KB für einen Cache): 3,18% Miss‐Rate

(5)

Cache‐Grundlagen

Schreibender Cache‐Zugriff

(6)

Eine einfache Strategie

• Schreibt man nur in den Cache, werden Cache und darunter  liegender Speicher inkonsistent. Wie erreicht man Konsistenz?

• Write‐Through

Schreibe immer sofort in den Speicher zurück Einfach aber schlechte Performance

Beispiel: 10% Store‐Instruktionen, CPI ohne Miss = 1 und CPI bei  Speicherzugriff = 100. Was ist der Gesamt‐CPI‐Wert?

(7)

Verbesserungen

• Write‐Buffer

Ergänzung zu Write‐Through

Ausstehende Writes werden in einem kleinen Puffer zwischengespeichert CPU kann nach schreiben in den Puffer sofort weiter machen

Parallel werden Daten aus dem Puffer in den Speicher geschrieben CPU muss nur stallen, wenn der Puffer voll ist.

• Write‐Back

Alternative zu Write‐Through

Speichere Änderungen zunächst nur im Cache

Schreibe Änderung in Speicher nur dann, wenn der Cache‐Block ersetzt wird

(8)

Behandlung von Cache‐Misses

• Was passiert beim Schreiben (sowohl bei Write‐Through als auch  Write‐Back) eines Bytes bei einem Cache‐Miss?

• Eine naheliegende Lösung

Lade den gesamten Block aus dem Speicher Überschreibe das Byte in dem Block

• Alternative: No‐Write‐Allocate

Aktualisiere nur den darunter liegenden Speicher aber nicht den Cache Ist sinnvoll, wenn lesender Zugriff nicht zu erwarten ist

(9)

Cache‐Grundlagen

Speicherunterstützung für Caches

(10)

Motivation

Erinnerung: CPU und Speicher kommunizieren über einen Bus.

Was beeinflusst die Miss‐Penalty?

• Geschwindigkeit des Busses.

• Speicherorganisation (siehe gleich).

Ein angenommenes Beispiel von Speicherzugriffswerten:

• 1 Speicherbuszyklus die gewünschten Adressen zu senden

• 15 Speicherbuszyklen für jeden initiierten DRAM‐Zugriff

• 1 Speicherbuszyklus ein Datenwort zu senden

Was ist die Miss‐Penalty bei einem Cache mit vier Word Breite und  sequentiellem Zugriff auf ein DRAM mit einem Word Breite?

Kann man das verbessern?

(11)

Bessere Unterstützung durch das DRAM

Was ist die Miss‐Penalty für zweimal breiteren Bus  und Speicher?

Bezeichnet  man auch als  Interleaving.

(12)

Bessere Unterstützung durch das DRAM

Was ist die Miss‐Penalty für Speicherorganisation  mit 4 parallelen Bänken aber unverändertem Bus?

Bezeichnet  man auch als  Interleaving.

(13)

Entwicklungen der letzten Jahre

Organisation des Speichers in Zeilen und Spalten.

Vorhalten einer ganzen Zeile in einem schnelleren RAM‐internen SRAM.

(14)

Verbessern der Cache‐Performance 

(15)

Verbesserte Cache Strategien

Im Folgenden betrachten wir eine Verbesserung von Direct‐

Mapped‐Caching.

Zur Darstellung der Verbesserung verwenden wir folgende  vereinfachte Cache‐Darstellung:

Tag Data 0

1 2 3 4

Speicher‐Blöcke 0 : ...

1 : ...

2 : ...

. .

(16)

Fully‐Associative‐Cache

Beobachtung: bei Direct‐Mapped‐

Cache kann ein Speicherblock nur an einer Stelle gespeichert werden.

Konsequenz: wechselhafter Zugriff auf zwei Speicherblöcke die auf die selbe Stelle gemappt werden, führt

permanent zu Cache‐Misses.

Praktisch wäre doch folgender Cache:

Ein Eintrag kann überall stehen.

Nachteil: Durchsuchen des Cache dauert länger und mehr  Hardware‐Aufwand! Wie wäre es mit einem Kompromiss: ...

Tag Data 0

1 2 3 4 5 6 7

Speicher‐Blöcke 0 : ...

1 : ...

2 : ...

. .

8 : ...

9 : ...

10 : ...

.

Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

(17)

(N‐Wege)‐Set‐Associative‐Cache

Tag Data 0

1 2 3 4 5 6 7

Direct‐Mapped

Set Tag Data Tag Data

0 1 2 3

Set Tag Data Tag Data Tag Data Tag Data

0 1

Two‐Way‐Set‐Associative Speicher‐Blöcke

0 : ...

1 : ...

2 : ...

. .

8 : ...

9 : ...

10 : ...

.

(18)

Zwischenbilanz

Finden der Cache‐Zeile c des Speicher‐Blocks n in einem Direct‐

Mapped‐Cache der Größe k?

(Vergleiche anschließend n mit dem in Zeile c gespeicherten Tag)

Finden der Set s des Speicher‐Blocks n in einem N‐Way‐Set‐

Associative‐Cache mit k Sets?

(Durchlaufe dann die Set s und suche nach einem Tag der n  entspricht)

(19)

Eine Frage ist noch zu klären

Annahme die Set eines N‐Way‐Set‐Associative‐Cache ist voll (bzw. 

der Fully‐Associative‐Cache ist voll). Wo kann ein neuer  Speicherblock abgelegt werden?

Tag Data Tag Data Tag Data Tag Data

24 ... 66 ... 20 ... 16 ...

Tag Data 44 ...

???

(20)

Mehr Wege resultieren in weniger Misses

Beispiel: betrachte Cache‐Varianten mit vier Speicherblöcken

Wie viele Cache‐Misses erzeugt die folgende Sequenz von  Speicherblockzugriffen?

0 , 8 , 0 , 6 , 8

Tag Data Tag Data Tag Data Tag Data Tag Data

0 1 2 3

Set Tag Data Tag Data 0

1

Direct‐Mapped Set‐Associative Fully‐Associative

(21)

Mehr Wege resultieren in weniger Misses

Beispiel: Direct‐Mapped

Speicherblockzugriffe:  0 , 8 , 0 , 6 , 8       (Speicherblockinhalt = M[i])

Tag Data 0

1 2 3

Zugriff Hit oder  Miss

Inhalt der Cache‐Blöcke nach der Referenz

0 1 2 3

0 8

Block‐Adresse Cache‐Block 0

6 8

Vorüberlegung: Auf welchen Cache‐Block  werden die Block‐Adressen gemapped?

(22)

Mehr Wege resultieren in weniger Misses

Beispiel: Set‐Associative

Speicherblockzugriffe:  0 , 8 , 0 , 6 , 8       (Speicherblockinhalt = M[i])

Zugriff Hit oder  Miss

Inhalt der Cache‐Blöcke nach der Referenz Set 0 Set 0 Set 1 Set 1 0

8 0 6 8

Block‐Adresse Cache‐Set 0

6 8

Vorüberlegung: In welche Set werden die  Block‐Adressen gemapped?

Set Tag Data Tag Data 0

1

(23)

Mehr Wege resultieren in weniger Misses

Beispiel: Fully‐Associative

Speicherblockzugriffe:  0 , 8 , 0 , 6 , 8       (Speicherblockinhalt = M[i])

Zugriff Hit oder  Miss

Inhalt der Cache‐Blöcke nach der Referenz Block 0 Block 1 Block 2 Block 3 0

8

Tag Data Tag Data Tag Data Tag Data

(24)

Wie Aufwendig sind mehr Wege?

Offset 2 Bits

(25)

Wie viele Wege sind sinnvoll?

Feste Zahl kann hier nicht genannt werden. Tradeoff: 

Zeit/Hardware‐Aufwand versus Miss‐Raten.

Beobachtung:

(64KB Cache, 16‐Word‐Blöcke)

(26)

CPU

Multi‐Level‐Caches

First‐Level‐Cache

Second‐Level‐Cache

Speicher

Optimiert auf geringe  Hit‐Time (und damit 

recht klein)

Optimiert auf geringe  Miss‐Ratio (also mehr  und größere Blöcke und  

damit höhere Hit‐Time)

(27)

Virtueller Speicher

(28)

Die Idee

Speicherblock 0

Virtuelle Adressen

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6 Speicherblock 7

...

Speicherblock n Prozess 1

Speicherblock 0

Virtuelle Adressen

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6 Speicherblock 7

...

Speicherblock n Prozess 2

Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5

...

Speicherblock m

Virtueller Speicher Sekundärer Speicher  Virtueller Speicher (Festplatte oder SSD)

Physikalischer Speicher Address‐

Translation

Address‐

Translation

(29)

Abbilden von virtuellen auf physikalische Adressen

Virtuelle Seitennummer Seiten‐Offset

Translation

Physikalische Seitennummer Seiten‐Offset

31 30 29 28 27 ... 15 14 13 12 11 10 9 8 ...  3 2 1 0 Virtuelle Adresse

29 28 27 ... 15 14 13 12 11 10 9 8 ...  3 2 1 0 Physikalische Adresse

Quiz: Größe x des virtuellen Adressraumes, Größe y des physikalischen Adressraumes und 

(30)

Weitere Details zur Address‐Translation

(31)

Page‐Faults

Page‐Fault: die Page muss in eine freie Page im Speicher geladen  werden. Was, wenn keine Page mehr frei ist?

Andere Page im Speicher muss ausgelagert werden. Mögliche  Ersetzungsstrategie: LRU (siehe voriges Thema Caching).

Woher weiß man eigentlich, welche Page schon lange nicht mehr  adressiert wurde?

Manche Prozessoren können die Page‐Table mit einem 

Reference/Use‐Bit taggen. Den Rest muss das Betriebssystem 

Referenzen

ÄHNLICHE DOKUMENTE

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6

Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock 5 Speicherblock 6

1 Emden 2 Osnabrück 3 Wilhelmshaven 4 Oldenburg (Oldb.) 5 Delmenhorst 6 Salzgitter 7 Braunschweig 8

(Es wird entweder im 3.Semester KW-4 oder KW-5 studiert; im 5 Semester wird entweder KW-7 oder KW-8 studiert). 1 2 3 4 5

1.FS 2.FS 3.FS 4.FS 5.FS 6.FS