« »

Mengenassoziative Caches

In dieser Aufgabe geht es um mengenassoziative Caches (en. set-associative). Die Adressierung erfolgt wortweise. Unser System nutzt 64-Bit-Adressen.

Diese Aufgabe stammt aus Kapitel 5.3 von "Computer Organization and Design. The Hardware/Software Interface. RISC-V Edition" (Patterson & Hennessy, 2018).

a)

Level 3: Anwenden

Konstruieren Sie gedanklich einen mengenassoziativen Cache mit drei Wegen. Die Cache-Blöcke sollen zwei Worte groß sein. Der gesamte Cache soll eine Kapazität von 48 Worten haben. Wie viele Cache-Zeilen gibt es und wie breit sind sie? Wie viele Bits werden für Tag, Index und Offset benötigt?

Lösung
  • Aufbau des Caches:
    • zwei Worte je Block
    • ein Block je Weg
    • drei Wege je Zeile
    • somit sechs Worte je Zeile
    • in Summe 48/6 = 8 Zeilen
  • Aufbau der Adressen:
    • wortweise Adressierung → 0 Bit Word Offset
    • zwei Worte je Block → 1 Bit Block Offset
    • acht Zeilen → 3 Bit Index
    • verbleibende Bits für den Tag

b)

Level 3: Anwenden

Vollziehen Sie die Funktionsweise des Caches aus der ersten Teilaufgabe nach. Nehmen Sie als Ersetzungsstrategie „Least Recently Used“ (LRU) an. Identifizieren Sie für jede Referenz

  • die binäre Wortadresse,
  • den Tag,
  • den Index und
  • den Offset.

Geben Sie weiterhin an,

  • ob es sich um einen Hit oder einen Miss handelt und
  • welchen Inhalt der Cache nach der Behandlung des Zugriffs hat.

Hinweis: $T[x]$ ist der Tag an Index x.

BinärTagIndexOffsetHit?Weg 0Weg 1Weg 2
0x030000.0011
0xb41011.0100
0x2b0010.1011
0x020000.0010
0xbe1011.1110
0x580101.1000
0xbf1011.1111
0x0e0000.1110
0x1f0001.1111
0xb51011.0101
0xbf1011.1111
0xba1011.1010
0x2e0010.1110
0xce1100.1110

Nutzen Sie für diese Aufgabe die folgende Sequenz von Worten:

0x03, 0xb4, 0x2b, 0x02, 0xbe, 0x58, 0xbf, 
0x0e, 0x1f, 0xb5, 0xbf, 0xba, 0x2e, 0xce
Lösung
BinärTIOH?W0W1W2
0x030000.001100011MT[1]=0
0xb41011.0100b0100MT[1]=0
T[2]=b
0x2b0010.101121011MT[1]=0
T[2]=b
T[5]=2
0x020000.001000010HT[1]=0
T[2]=b
T[5]=2
0xbe1011.1110b1110MT[1]=0
T[2]=b
T[5]=2
T[7]=b
0x580101.100051000MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
0xbf1011.1111b1111HT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
0x0e0000.111001110MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[7]=0
0x1f0001.111111111MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[7]=0T[7]=1
0xb51011.0101b0101HT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[7]=0T[7]=1
0xbf1011.1111b1111HT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[7]=0T[7]=1
0xba1011.1010b1010MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[5]=b
T[7]=0
T[7]=1
0x2e0010.111021110MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[5]=b
T[7]=2
T[7]=1
0xce1100.1110c1110MT[1]=0
T[2]=b
T[4]=5
T[5]=2
T[7]=b
T[5]=b
T[7]=2
T[7]=c

T = Tag, I = Index, O = Offset, H = Hit, M = Miss, W = Weg
Angaben bei Tags und Wegen in Hexadezimaldarstellung

Lernziele

In dieser Aufgabe …

  • wiederholen die Studierenden den Aufbau mengenassoziativer Caches.
  • leiten die Studierenden aus gegebenen Anforderungen einen Cache-Entwurf ab.
  • simulieren die Studierenden die Funktionsweise des Caches.