15 Jahre TecChannel - der beliebteste Artikel 1999

So funktioniert ein Prozessor

Cache-Organisation

Der direkt abgebildete (direct mapped) Cache im Bild unten ist die einfachste Form. Jedem Set ist nur ein Cache-Eintrag zugeordnet. Dadurch deckt man im Arbeitsspeicher einen Block von x+n Sets ab. Bei unserer tecChannel-CPU sind das die zuvor definierten 64 KByte. Fordert nun ein Programm außerhalb dieses 64-KByte-Blocks Daten oder Befehle an, führt das zu einem Cache Miss. Wurde der Eintrag dagegen gefunden, spricht man von einem Cache Hit.

Der Direct Mapped Cache hat einen Nachteil: Ist zum Beispiel die Cache Line 0 (ab Adresse 0000) im Cache gespeichert, führt ein Zugriff auf den Speicher ab Adresse 65.537 oberhalb des 64-KByte-Blocks nicht zum Cache Miss. Es muss zudem der gesamte Block neu geladen werden, weil das Tag keine eindeutige Identifizierung der Speicherstelle erlaubt. Da im Tag nur ein Teil der Adresse gespeichert ist, kann er nur innerhalb eines geschlossenen Speicherblocks von 64 KByte einzelne Cache Lines unterscheiden.

Der Briefträger hat dieses Problem ebenfalls: Wenn er einen Abstecher in eine Seitenstraße macht, muss er den nach Straßen vorsortierten Briefstapel zurücklegen und den für die Seitenstraße herausholen.

Die Lösung des Problems sind teilassoziative Mehrweg-Caches. Auch dieser Cache-Typ speichert nur einen Teil der Adresse im Tag ab. Taucht ein Tag aber nochmals auf, erfolgt kein Komplettaustausch des Speicherblocks. Die Hardware merkt sich den Eintrag wieder in der gleichen Set-Zeile. Allerdings erfolgt die Speicherung in einer weiteren Ebene (Weg), sodass die erste Zeile nicht überschrieben werden muss. Die Ebenen- oder Wegauswahl erfolgt über den Set-Adressteil.

Mit einer Mehrwegsortierung arbeitet auch der Briefträger schneller: Er hat sich die Post nicht nur in Straßenzüge (Tag) unterteilt, sondern nochmals mit einem Gummiband hinsichtlich der Straßenseite gebündelt (Set-Weg). Bei einem Abstecher in die Seitenstrasse greift er sich nur das Briefbündel für eine Straßenseite. Dafür legt er nur eines der zwei Bündel der alten Straße weg - und zwar das von der anderen Straßenseite. Wenn er aus der Seitenstrasse zurückkommt, hat er immer noch das Bündel der Seite in der Hand, bei der er abgebogen ist.

Ein Mehrweg-Cache ist ein vervielfachter Direct Mapped Cache. Der Schaltungsaufwand für einen teilassoziativen 2-Wege-Cache ist demnach doppelt so hoch wie bei der einfachen Version. Bei einem 4-Wege-Cache vervierfacht er sich.

Irgendwann sind jedoch auch die Ebenen eines Mehrweg-Caches voll. Mittels zusätzlich gespeicherter LRU-Bits kann der Cache dann feststellen, welcher Eintrag in welcher Ebene am längsten nicht mehr benutzt wurde. Dieser Wegeintrag wird dann überschrieben.