Cache

Cache


Immer größer werdende Lücke zwischen Verarbeitungsgeschwindigkeit von Prozessoren und Zugriffsgeschwindigkeit der DRAM-Speicherchips des Hauptspeichers

Ein technologisch einheitlicher Speicher mit kurzer Zugriffszeit und großer Kapazität ist aus Kostengründen i. A. nicht realisierbar。

–> Lösung: Hierarchische Anordnung verschiedener Speicher und Verschiebung der Information zwischen den Schichten (Speicherhierarchie)





Speicherhierarchie

zum ==Ausgleich== der unterschiedlichen Zugriffszeiten der CPU und des Hauptspeichers.

2 Strategien:

  • ==Cache-Speicher==:

    Kurze Zugriffszeiten ——> Beschleunigung des Prozessorzugriffs.

  • ==Virtueller Speicher==:

    Vergrößerung des tatsächlich vorhandenen Hauptspeichers (z. B. bei gleichzeitiger Bearbeitung mehrerer Prozesse)

Speicherhierarchie
Register
on-chip Cache
secondary level Cache (SRAM)
Arbeitsspeicher (DRAM)
Sekundärspeicher(Platten, elektronishe Massenspeicher)
Archivspeicher(Platten, Bänder, optische Platten)

von Unten nach Oben:

  • Zunehmende Kosten/Byte

  • Abnehmende Kapazität

  • Abnehmende Zugriffszeit





Cache Speicher

Problem :

  • die Buszykluszeit moderner Prozessoren ist ==kuerzer== als die Zykluszeit preiswerter, großer DRAM-Bausteine

    ——–> dies zwingt zum Einfügen von Wartezyklen

  • SRAM-Bausteine hingegen, die ohne Wartezyklen betrieben
    werden können, sind jedoch klein und teuer. (存取週期tRC不等於訪問時間tAA是SRAM和DRAM的主要區別之一。)

    ——–> nur kleine Speicher können so aufgebaut werden

Lösung des Problems:

zwischen den Prozessor und den relativ langsamen, aber billigen Hauptspeicher aus DRAM-Bausteinen legt man einen kleinen, schnellen Speicher aus SRAM- Bausteinen, den sogenannten ==Cache-Speicher.==

Prozessor <—> ==Cache Speicher==(besteht aus SRAM)<–> Hauptspeicher

Auf den Cache-Speicher soll der Prozessor fast so schnell wie auf seine Register zugreifen können.


2 Arten (siehe Folien14 s10)


1. On-Chip-Cache: integriert auf dem Prozessorchip

  • Sehr kurze Zugriffszeiten (wie die der
    prozessorinternen Register)

  • Aus technologischen Gründen begrenzte Kapazität

2. Off-Chip-Cache: prozessorextern


Nutzen


  1. ==Verbesserung der Zugriffszeit des Hauptspeichers eines Prozessors== durch einen Cache ==zur Vermeidung von Wartezyklen== (CPU-Cache, Befehls- und Daten-Cache).

  2. Verbesserung der Zugriffszeit von Plattenspeichern durch einen Cache (Plattencache)


CPU-Cache-Speicher




Definition


ein kleiner, schneller ==Pufferspeicher==, in dem ==Kopien derjenigen Teile des Hauptsspeichers bereitgehalten werden==, auf die mit hoher Wahrscheinlichkeit von der CPU als nächstes zugegriffen wird.


Wieso kommt es zur einer Leistungssteigerung?


Ein CPU-Cache-Speicher bezieht seine Effizienz im wesentlichen ==aus der Lokalitätseigenschaft von Programmen (locality of reference)==,

d.h. es werden bestimmte Speicherzellen bevorzugt und wiederholt angesprochen (z.B. Programmschleifen)

程序的局部性原理(locality of reference):CPU當前所需要使用的指令或數據在存儲器中很可能是在同一地址的附近。

  • Zeitliche Lokalität

    Die Information, die in naher Zukunft angesprochen wird, ist mit großer Wahrscheinlichkeit ==schon früher einmal angesprochen worden== (Schleifen)

  • Örtliche Lokalität

    Ein zukünftiger Zugriff wird mit großer Wahrscheinlichkeit ==in der Nähe== des bisherigen Zugriffs liegen (Tabellen, Arrays).


Funktionsweise


Cache工作原理:

當CPU需要數據或指令時, 它首先訪問Cache,看看所需要的數據或指令是否存在於Cache中,方法是:

將CPU提供的數據或指令在內存中存放位置的內存地址 與 Cache中已存放的數據或指令的地址相比價。

  • 相等

    –> 說明可以在Cache中找到所需的數據或指令(cache命中)–> 不需要任何等待狀態, Cache直接把信息傳給CPU

  • 不相等

    –> CPU所需的數據或指令不在Cache中(未命中),需要到內存中提取:

    存儲器控制電路從內存中取出數據或指令傳送給CPU,==同時在Cache中拷貝一份副本==。(爲了防止CPU以後在訪問同一信息時又會出現不命中的情況,從而降低CPU訪問速度相對較慢的內存的概率)。

換而言之,Cache命中率越高,系統性能越好 –> 這要求任何時刻cache控制器都要知道cache中存儲的是什麼指令、數據。

Cache的命中率取決於下面三個因素:

  • Cache的大小

    容量相對較大的Cache,命中率會相應的提高

  • Cache的組織結構

  • 程序的特性

    遵循局部性原理(locality of reference, Lokalitätseigenschaft von Programmen)的程序在運行時,Cache命中率也會很高。


Lseszugriff(siehe Folien14 s16)

Vor jedem Lesezugriff prüft der μP, ob das Datum im Cache steht.

  • Wenn ja: ==Treffer (read hit)==

    das Datum kann ohne Wartezyklen aus dem Cache entnommen werden.

  • Wenn nein: ==kein Treffer (read miss)==

    das Datum wird mit Wartezyklen aus dem Arbeitsspeicher gelesen und ==gleichzeitig in den Cache eingefügt.==

Schreibzugriffe

  • Liegt beim Schreiben ein ==Cache-Miss (write miss)== vor, wird das Datum sowohl in den Arbeitsspeicher als auch in den Cache geschrieben.

  • Liegt beim Schreiben jedoch ein ==Cache-Hit (write hit)== vor, d.h. ein im Cache stehendes Datum wird durch den Prozessor verändert

—> verschiedene Organisationsformen:

  1. ==Durchschreibverfahren: (write through policy)==

    Ein Datum wird von der CPU ==immer gleichzeitig== in den ==Cache-== und in den ==Arbeitsspeicher== geschrieben.

    • Vorteil: garantierte Konsistenz zwischen Cache- und Arbeitsspeicher.

    • Nachteil: Schreibzugriffe benötigen immer die langsame Zykluszeit des Hauptspeichers und belasten den Systembus.

    1.直寫式(write through)

    即CPU在向Cache寫入數據的同時,也把數據寫入主存以保證Cache和主存中相應單元數據的一致性,其特點是簡單可靠,但由於CPU每次更新時都要對主存寫入,速度必然受影響。

  2. ==Gepuffertes Durchschreibverfahren: (buffered write through policy)==

    Zur Milderung des Nachteils beim Durchschreibverfahren wird ein kleiner ==Schreib-Puffer== verwendet, der die zu schreibenden Daten temporär aufnimmt.

    Diese Daten werden dann ==automatisch vom Cache- Controller in den Hauptspeicher übertragen==, während der Prozessor parallel dazu mit weiteren Operationen fortfährt.

    2.緩寫式(post write)

    即CPU在更新Cache時不直接更新主存中的數據,而是把更新的數據送入一個緩存器暫存,在適當的時候再把緩存器中的內容寫入主存。在這種方式下,CPU不必等待主存寫入而造成的時延,在一定程度上提高了速度,但由於緩存器只有有限的容量,只能鎖存一次寫入的數據,如果是連續寫入,CPU仍需要等待。

  3. ==Rückschreib-Verfahren: (write back policy)==

    Ein Datum wird von der CPU ==nur in den Cachespeicher geschrieben== und durch ein spezielles Bit (altered bit, modified bit, dirty bit) gekennzeichnet.

    Der Arbeitsspeicher wird nur geändert, wenn ein so gekennzeichnetes Datum aus dem Cache verdrängt wird.

    • Vorteil:
      auch Schreibzugriffe können mit der schnellen Cache-Zykluszeit abgewickelt werden.

    • Nachteil:
      Konsistenzprobleme zwischen Cache- und Hauptspeicherspeicher .

    3.回寫式(write back)

    即CPU只向Cache寫入,並用標記加以註明,==直到Cache中被寫過的塊要被進入的信息塊取代時,才一次寫入主存。==這種方式考慮到寫入的往往是中間結果,每次寫入主存速度慢而且不必要。其特點是速度快,避免了不必要的冗餘寫操作,但結構上較複雜。


Konsistenzprobleme


Ebenfalls können andere Systemkomponenten Daten im Hauptspeicher ändern, während die CPU noch mit den alten Daten im Cachespeicher arbeitet.

–> ==aufwendige Verfahren bei der Cache-Steuerung zur Verhinderung solcher Inkonsistenzen sind erforderlich==
(z. B. muss die Cache-Steuerung über jede Datenänderung im Hauptspeicher informiert werden).

Begriffe

  1. ==Hit-Rate==

    Die Hit-Rate bezeichnet die Trefferquote im Cache:

    Hit-Rate = Anzahl Treffer / Anzahl Zugriffe
    
  2. ==mittlere Zugriffszeit==

    Die mittlere Zugriffszeit berechnet sich annähernd wie
    folgt:

    tAccess = (Hit-Rate) * tHit + (1 - Hit-Rate) * tMiss
    
    tHit : Zugriffszeit des Caches
    tMiss : Zugriffszeit ohne den Cache


Aufbau eines Cache-Speichers(Folien14 s27)


Grob Struktur

Ein Cache-Speicher besteht aus zwei Speicher-Einheiten:

  • ==Datenspeicher==:

    enthält die im Cache abgelegten Daten

  • ==Adressspeicher==:

    enthält die Adressen dieser Daten im Arbeitsspeicher


Daten

  • ==Jeder Dateneintrag== besteht aus ==einem ganzen Datenblock==(一行) (==cache-line==, bis 64 Byte).

  • Mit jedem Datum, auf das der Prozessor zugreift, wird die Umgebung miteingelagert (Hoffnung auf Lokalität von Programmen).

  • Im Adressspeicher wird die Basisadresse jedes Blocks abgelegt

  • Jede Cache-Zeile enthält ==ein (Adress-, Daten-)Paar und Statusbits==.

    eine Cache-Zeile:

    Adressspeicher(Tag) Statusbits Daten
    Adresse(Adress der Daten in HauptSpeicher) valid + dirty Daten
  • Ein (Daten)-Block ist eine **==zusammengehörende Reihe
    von Speicherzellen (Cache-line).==**

  • Dazugehörig wird ein ==Adressetikett (Cache-Tag), enthält die Adresse des aktuellen Blocks im Hauptspeicher,== im
    Adress-Speicher ablegt.

  • Die ==Statusbits== sagen aus, ob die Daten im Cache gültig sind.


Komparator

ermittelt, ob das zu einer auf dem Adressbus liegende Adresse gehörende Datum auch im Cache abgelegt worden ist, durch ==Adressvergleich mit den Adressen im Adressspeicher==

Dieser Adressvergleich muss ==sehr schnell gehen (möglichst in einem Taktzyklus)==, da sonst der Cachespeicher effektiv langsamer wäre als der Arbeitsspeicher.




Drei Techniken für den Adressvergleich ��—> 3 Cache-Typen:

1. Voll-Assoziativer Cache(Folien14 s33 & s35)

werden heute nur für ==sehr kleine auf dem Chip integrierte Caches== mit ==32 bis 128== Einträgen verwendet.

Vollparalleler Vergleich aller Adressen im Adressspeicher in einem einzigen Taktzyklus

  • Vorteile:

    • ein Datum kann an beliebiger Stelle im Cache abgelegt werden
    • Optimale Cache-Ausnutzung, völlig freie Wahl der Strategie bei
      Verdrängungen
  • Nachteile:

    • ==Hoher Hardwareaufwand== (für jede Cache-Zeile ein Vergleicher) ��
      –> nur für sehr kleine Cachespeicher realisierbar

    • Die große Flexibilität der Abbildungsvorschrift erfordert eine weitere Hardware, welche die Ersetzungsstrategie (welcher Block soll überschrieben werden, wenn der Cache voll ist) realisiert.

    全相連映像方式Cache

    任意主存單元的數據或指令可以存放到Cache的任意單元中去,兩者之間的對應關係不存在任何限制。

    • 在Cache中,用於存放數據或指令的靜態存儲器SRAM稱爲 ==內容Cache(Daten Cache,Daten Speicher)==
    • 用於存放數據或指令在內存中所在單元的==地址==的靜態存儲器稱爲 ==標識Cache(tag Cache,Tag Speicher)==

    假設主存地址是16位,每個存儲單元8位(64k * 8 Organisation)。假設內容Cache的容量是 128 Byte, 即有128個單元(128行),每個單元(每行)的寬度爲8位;表示Cache(Tag Cache)也應該由128個單元(128 行),爲了存放主存單元的地址,Tag Cache每個單元(每行)的寬度應爲16位。

    當CPU要訪問內存時, 它送出的16位地址先與Tag Cache中的128個地址比較。

    • 若所需數據或指令的==地址在Tag Cache中==
      –> 命中!
      –> 從內容Cache與之對應的單元(行)中讀出數據或指令傳給CPU

    • 若所需數據或指令的==地址不在Tag Cache中==
      –> 從主存中讀出所需的數據或指令傳給CPU,同時在Cache中存一份副本(==即將數據或指令寫入內容Cache,並將該數據或指令所在的內存單元的地址寫入Tag Cache==

    顯然,對於全相連映像Cache,Cache中存儲的數據越多,命中率越高。但增加Cache容量帶來的問題是:每次訪問內存都要進行大量的地址比較,既耗時效率也低。

    另一方面,若Cache容量太小,如16個單元(行),由於命中率太低,CPU就要頻繁的等待操作系統將Cache中的信息換入換出,因爲在向Cache中寫入新信息之前,必須將Cache中已有的信息保存在主存中。



2. Direct-mapped-Cache(Folien14 s37,38 & 41)

Beim Direct Mapped Cache erhält jede Stelle des Hauptspeichers einen eindeutigen und festen Platz im Cache(kommt auf den Index an)

  • Nachteil

    Ständige Konkurrenz der Blöcke (z. B. 0, 64, 128,…), obwohl andere Blöcke im Cache frei sein können.

    因爲內存中的某一個單元定位對應Cache中的一個Block的地址是由Index(地址的低n位部分決定), 即 內存中的某一個單元的低n位地址 = Cache中的一個Cache Zeile的地址。 這意味着,只要內存中的兩個不同單元的地址的低n位相同,就會定位到同一個Cache Zeile,儘管它們的高位地址並不相同。

  • Vorteil

    Geringer Hardwareaufwand für die Adressierung, da nur ein Vergleicher für alle Tags benötigt wird.

  • Merkmale

    • Einfache Hardware-Realisierung (nur ein Vergleicher und ein Tag-Speicher)

    • Der Zugriff erfolgt schnell, weil das Tag-Feld ==parallel== mit dem zugehörigen Block gelesen werden kann

    • Es ist keine Ersetzungsstrategie erforderlich, weil die direkte Zuordnung keine Alternativen zulässt

    • Auch wenn an anderer Stelle im Cache noch Platz ist, erfolgt ==wegen der direkten Zuordnung eine Ersetzung==

    • Bei einem abwechselnden Zugriff auf Speicherblöcke, deren Adressen den ==gleichen Index-Teil== haben, erfolgt ==laufendes Überschreiben== des gerade geladenen Blocks.

直接映像Cache與全相連映像Cache完全相反,它只需要做一次地址比較即可確定是否命中。
在這種Cache結構中,地址分爲兩部分:

  • 索引(Index): 地址的低位部分,直接作爲內容Cache的地址,定位到內容Cache的相應單元。

  • 標識(Tag): 存儲在標識Cache中

例:假設CPU送出的內存地址爲16位,A0 - A10爲索引 , A11 - A15爲標識。

現在CPU給出的地址是 E898H (1110 1000 1001 1000),則000 1001 1000爲索引, 11101爲標識。

  1. 索引000 1001 1000作爲地址,用作在內容Cache和標識Cache中各確定一個單元(行),即這兩個單元都是由000 1001 1000譯碼得到的(就是用000 1001 1000確定一個Cache Zeile)。這樣在內容Cache中,就確定了一個存放數據的單元(行);同時在Cache中,也確定了一個存放標識的單元(行),此時並不讀出數據

  2. 接着拿根據000 1001 1000確定的標識Cache中存放的標識與CPU給出的地址中的標識11101 比較

    • 相等 –> 命中!將內容Cache中存放的數據讀入CPU。

    • 不相等 –> CPU要等待存儲器控制器將地址爲 E898H 主存單元的內容讀入,同時在Cache複製一份副本(包括標識),供CPU將來使用。

要注意:索引號000 1001 1000只對應這一個Cache單元,但可能有32(2 ^ 5 = 32)
種標識,即Tag Cache中的五位標識有可能對應這32個地址中的某一個,從0000 1000 1001 10001111 1000 1001 1000。只要標識不匹配(即根據索引找到的Tag Cache中的那一行的標識CPU給出的地址中的標識(在這裏有32種可能性) 不相等),就表示Cache未命中。

==缺點:==
直接映像方式的Cache實質上要求 主存的某一個單元,比如說是A單元(假設地址爲 0000 0000 1001 1000)只能與Cache中的一個特定單元(行)(地址爲 000 1001 1000(索引))發生聯繫,而不能與其他Cache單元發生聯繫。

–> 主存的低11位地址(A0 - A10)決定了與它發生關聯的那個Cache單元的地址。

如果此時這個Cache單元正被其他低11位地址與A相同的內存單元所佔用,比如說B單元(假設B地址爲 0000 1000 1001 1000,注意A和B的低11位地址相同(Index相同,Tag不同))。那麼即使當時Cache中存在其他空閒的單元,A單元的內容也不能被放到Cache中。

這就是直接映像Cache的缺點:==儘管地址比較的次數是一次,但 不同的內存單元卻肯恩共有相同的Cache索引,不同的Cache標識使得Cache仍未命中,仍需訪問主存。==
��



3. n-way-set-assoziativer Cache


Kompromiss zwischen direct-mapped-Cache und vollassoziativen Cache.

Zum Auffinden eines Datums müssen alle ==n== Tags mit demselben Index ==parallel== verglichen werden

——–> der Aufwand steigt mit der Zahl n;
für große n nähert sich der Aufwand den voll-assoziativen Caches

  • Verbesserte Trefferrate, da hier eine Auswahl möglich ist (der zu verdrängende Eintrag kann unter n ausgewählt

Ersetzungssstrategie(notwendig nur bei ==voll-== oder ==n-fach satzassoziativer== Cachespeicherorganisation)

Ersetzungsstrategie gibt an, welcher Teil des Cachespeichers nach einem Cache-Miss durch eine neu geladene Speicherportion überschrieben wird.

  • ==Zyklisch== (der zuerst eingelagerte Eintrag wird auch wieder
    verdrängt, FIFO-Strategie)

  • ==LRU-Strategie== (least recently used) der am längsten nicht mehr benutzte Eintrag wird entfernt.

  • Zufällig (durch Zufallsgenerator)

Meist wird die sehr einfache Strategie gewählt:

Die am längsten nicht benutzte Speicherportion wird ersetzt (==LRU-Strategie, Least Recently Used==).


組相連映像Cache

組相連映像Cache**是介於全相連映像和直接映像Cache之間的一種結構。在直接映像Cache**中,每個索引在Cache只能存放一個標識。而在==組相連映像==中,對應每個索引,在Cache中==能夠存放的標識數量增加了,從而增加了命中率==

例如在2路組相連映像Cache中,每個索引在Cache中能存放兩個標識,即在Cache中可以存放兩個具有相同索引的內存的單元的內容(這兩個內存單元地址的低位部分(Index-teil)相同,但高位部分(Tag)不同)。

例:

CPU請求訪問地址爲 4518H (0100 0101 0001 1000) 主存單元的內容,在2路組相連映像Cache中,與索引01 0001 1000對應的標識可以有2個,Cache電路將2個標識分別與0100 01比較:

  • 若其中有一個匹配,則命中 –> 將索引01 0001 1000所對應的數據讀入CPU中。

  • 若兩個標識中任何一個都不是0100 01的話 –> 未命中 –> Cache控制器從內存中讀入所需內容,同時在Cache中備份一份副本。

類似的,在4路組相連映像Cache中,假設CPU要訪問的地址也是4518H (0100 0101 0001 1000),需要把四個標識與 0100 010 比較。與2路相比,4路Cache的命中率又提高了50%。

從例子中可以看出,在組相連映像Cache中,比較的次數與相關聯的程度有關。
==n路組相連映像比較次數爲n==
==組的數目越多,性能越高。==但用作標識Cache的SRAM容量也相應增加了,從而加大了成本。8、16路組相連映像Cache中所增加的成本與提高的命中率相比是不划算的;而且增加組的數目,也增加了Tag的比較次數。==目前絕大多數Cache系統實現的時4路==




Ursachen für die Fehlzugriffe


  1. ==Erstzugriff (compulsory - obligatorisch)==:

    Beim ersten Zugriff auf einen Cache-Block befindet sich dieser noch nicht im Cache- Speicher und muss erstmals geladen werden

    –> ==Kaltstartfehlzugriffe (cold start misses)== oder ==Erstbelegungsfehlzugriffe (first reference misses).==

  2. ==Kapazität (capacity)==:

    Falls der Cache-Speicher nicht alle benötigten Cache-Blöcke aufnehmen kann, müssen Cache-Blöcke verdrängt und eventuell später wieder geladen werden.

  3. ==Konflikt (conflict) :==

    treten nur bei direkt abgebildeten oder satzassoziativen Cache-Speichern beschränkter Größe auf

    ein Cache-Block wird verdrängt und später wieder geladen, falls zu viele Cache-Blöcke auf denselben Satz abgebildet werden

    –> ==Kollisionsfehlzugriffe (collision misses)== oder ==Interferenzfehlzugriffe (interference misses).==



Erzielbare Cache-Trefferquoten


  1. Je größer der Cachespeicher, desto größer die Trefferquote

    Eine Cache-Trefferquote von circa 94% kann bei einem
    64 kByte großen Cachespeicher erreicht werden

  2. Getrennte Daten- und Befehls-Cachespeicher sind bei sehr kleinen Cachespeichergrößen vorteilhaft

  3. Bei Cachespeichergrößen ab 64 KByte sind Direct Mapped Cachespeicher mit ihrer Trefferquote nur wenig schlechter als Cachespeicher mit Assoziativität 2 oder 4.

Voll-assoziative Cachespeicher werden heute nur für ==sehr kleine auf dem Chip integrierte Caches mit 32 bis 128 Einträgen== verwendet.

Bei größeren Cachespeichern findet sich zur Zeit ein Trend zur ==Direct Mapped Organisation== oder ==2 - 8 fach assoziativer Organisation.==



Anbindung des Caches an den Systembus (Folien15 s35)


1. Cache-Controller

==Cache-Controller = Tag-RAM + Steuerung + Tag-Komparator==

  • ==auf einem Chip integriert==(Da dieser sehr schnell sein muß)

  • Cache-Controller übernimmt die Steuerung der Treiber zum Systembus (Systembuszugriff nur bei Cache-Miss, sonst ist der Systembus für andere Komponenten frei), sowie der Systembussignale zur Einfügung von Wartezyklen bei Cache-Miss (READY, HOLD, HOLDA, …)

2. Cachespeicher

selbst ist seperat mit SRAM-Bausteinen aufgebaut.



Verwendung mehrerer Caches(Folien15 s34)


1.First-Level-Cache (On-Chip-Cache)

Häufig getrennte On-Chip-Caches**(Harvard-Architektur**) :

  • ==Befehlscache==

    für die Befehle

  • ==Datencache==

    für die Daten.

    paralleler Zugriff auf Programm und Daten

–> Zusammenfassen:

  • integriert auf dem Prozessorchip

  • Sehr kurze Zugriffszeiten (wie die der prozessorinternen Register)

  • Aus technologischen Gründen begrenzte Kapazität


2. Secondary- Level-Cache (On-Board-Cache, 64 - 1024 KByte groß)

  • Außerhalb des Prozessor-Chips(prozessorextern)

  • größer als On-Chip-Cache

  • Der Secondary-Level-Cache kann parallel zum Hauptspeicher an den Bus angeschlosssen werden (Look-Aside-Cache). Er sorgt dafür, dass bei einem First-Level-Cache-Miss ==die Daten schnell nachgeladen== werden können



Cache-Kohärenzproblem


  • Gültigkeitsproblem, das beim Zugriff mehrerer Verarbeitungselemente (z. B. Prozessoren) auf Speicherworte des Hauptspeichers entsteht.

  • ==Kohärenz== bedeutet das korrekte Voranschreiten des Systemzustands durch ein abgestimmtes Zusammenwirken der Einzelzustände.

  • Im Zusammenhang mit dem Cache muss das System dafür sorgen, dass immer die aktuellsten Daten und nicht veraltete Daten aus dem Cache gelesen werden.

Ein System ist ==konsistent==, wenn alle Kopien eines Datums im Hauptspeicher und den verschiedenen Cachespeichern ==identisch== sind. Dadurch ist auch die Kohärenz sichergestellt, jedoch entsteht ein hoher Aufwand.

–> konsistent == Datums in Hauptspeicher und deren Kopien in Cache muss ==identisch== sein!!!

在計算機科學中,緩存一致性(英語:Cache coherence,或cache coherency),又譯爲緩存連貫性、緩存同調,是指保留在高速緩存中的共享資源,保持數據一致性的機制。

在一個系統中,當許多不同的設備共享一個共同存儲器資源,在高速緩存中的數據不一致,就會產生問題。這個問題在有數個CPU的多處理機系統中特別容易出現。

緩存一致性可以分爲三個層級:

  • 在進行每個寫入運算時都立刻採取措施保證數據一致性
  • 每個獨立的運算,假如它造成數據值的改變,所有進程都可以看到一致的改變結果
  • 在每次運算之後,不同的進程可能會看到不同的值(這也就是沒有一致性的行爲)



Bus-Schnüffeln (Bus-Snooping)


In Mehrprozessorsystemen, bei denen mehrere Prozessoren mit lokalen Cachespeichern an einen gemeinsamen Bus/Hauptspeicher angeschlossen sind, verwendet man das sogenannte ==Bus-Schnüffeln==

Die ==Schnüffel-Logik== jedes Prozessors hört am Bus die Adressen mit, die die anderen Prozessoren auf den Bus legen. Die Adressen auf dem Bus werden mit den Adressen, der im Cache gespeicherten Daten, verglichen

Bei Adressübereinstimmung am Bus geschieht folgendes:

  • Schreibzugriff

    Wenn ein Schreibzugriff auf dieselbe Adresse vorliegt, dann wird der im Cache gespeicherte Cacheblock für „ungültig“ erklärt (Write- Invalidate-Verfahren), oder mit aktualisiert (Write-Update- Verfahren).

  • ==Lesezugriff==

    Wenn ein Lesezugriff auf dieselbe Adresse mit einer modifizierten Datenkopie im Cachespeicher festgestellt wird, dann legt der Cache- Controller ein ==Snoop Status Signal (SSTAT)== auf den Bus.

    1. Der Prozessor, der die Adresse auf den Bus gelegt hat, unterbricht seine Bustransaktion.

    2. Der „schnüffelnde“ Cache-Controller übernimmt den Bus und schreibt den betreffenden Cacheblock in den Hauptspeicher.

    3. Dann wird die ursprüngliche Bustransaktion erneut durchgeführt.

個人理解:

處理器上的Schnüffel-Logik監聽着Bus上的別的處理器放上去的地址,Bus上的地址會被拿來跟Cache保存的地址比較

若Bus中的Adresse和Cache中Tag Speicher中的某個地址相同。

而且現在多核處理器的某一個處理器對Bus上的這個Adress執行Schreibzugriff

–> Cache中的這個地址的內存單元的內容將被改變

–> 造成了:同一個地址,Hauptspeicher中的內容和Cache中的內容不一致(Kohärenz kaputt)

–> 所以這個地址對應的Cache中的Block(Cache-Zeile)要標上„ungültig“(Write- Invalidate-Verfahren) 或者 aktualisiert (Write-Update- Verfahren) 來表明
數據不一致

–> 要訪問這個地址的處理器(已經把這個地址放到地址總線Adressbus)終止這次Transaktion

–> Cache Controller接管Bus,把相關的被修改的Block(Cache Zeile)寫到內存中相同地址對應的內存單元。

–> 然後剛纔被跳過的BusTransaktion重新執行。





Fragen, die sich ein Speicherhierarchie-Designer stellen muss。

1.Block-Abbildungsstrategie

Wohin kann ein Block abgebildet werden?

  • Voll-assoziativ

  • Satz-Assoziativ

  • Direct-Mapped


2.Block-Identifikation

Wie kann ein Block gefunden werden?

  • Tag/Block


3.Block-Ersetzungsstrategie

Welcher Block soll bei einem Miss ersetzt werden?

  • Random

  • FIFO

  • LRU

4.Schreibe-Strategie

Was passiert bei einem Schreibzugriff?

  • Durchschreibverfahren(write through policy)

  • Gepuffertes Durchschreibverfahren: (buffered write through policy)

  • Rückschreib-Verfahren: (write back policy)



Cache-Steuerung(Cache controller)

Cache-Steuerung prüft, ob

  • Bedingung 1:

    Der zur Speicheradresse gehörende Hauptspeicherinhalt als Kopie im Cache steht

  • Bedingung 2:

    Dieser Cache-Eintrag durch das Gültigkeits-Bit (Valid- Bit) als gültig gekennzeichnet ist

Prüfung führt zu einem Cache-Treffer oder zu einem Fehlzugriff.

==Cache-Fehlzugriff (Cache-miss)==: eine der beiden Bedingungen ist nicht erfüllt.

  • Lesezugriffe (read miss), Dann:

    1. Lesen des Datums aus dem Hauptspeicher und Laden des Cache-Speichers
    2. Kennzeichnen der Cache-Eintrag als gültig (V-Bit setzen)
    3. Speichern der Adressinformation im Adress-Speicher des Cache-Speichers
  • Schreibzugriffe (write miss)

    Aktualisierungsstrategie bestimmt, ob

    • der entsprechende Block in den Cache geladen und dann mit dem zu schreibenden Datum aktualisiert wird

    oder

    • nur der Cache aktualisiert wird und der Hauptspeicher unverändert bleibt

    —> 3 Strategie :

    1. Durchschreibverfahren (write through)

    2. Gepuffertes Schreibverfahren (write buffer)

    3. Rückschreibverfahren (write back)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章