- Cache-Algorithmus
-
Ein Cache-Algorithmus ist ein Algorithmus zur Steuerung eines Cache, mit dem Speicherzugriffe und Inkonsistenzprobleme zwischen einer CPU und dem Arbeitsspeicher optimiert werden sollen.
Ursprünglich galt der Cache als ein Zwischenpuffer zwischen CPU und Hauptspeicher. Da die Taktfrequenzen immer mehr voneinander abwichen, wurde es nötig einen Puffer (Cache) einzuführen. Man erkannte aber früh, dass man mit dem Cache einen beträchtlichen Teil der Bandbreite des Speicher-Bus sparen kann.
Dazu werden die Daten nicht direkt in den Speicher geschrieben sondern in den Cache. Die Methode nennt sich write-back (copy-back, store-in). Wird ein Block im Cache überschrieben, findet allerdings auch ein Schreiben in den Hauptspeicher statt. Wird ein Block im Cache verfehlt (write-miss), wird er zuerst in den Cache kopiert. Dann wird entweder nur in den Cache geschrieben (write-allocate) oder direkt in den übergeordneten Hauptspeicher (no-write-allocate).
Diese Methode wird in der Regel in Rechnerarchitekturen mit einem Prozessor eingesetzt. Allerdings kann es hier zu Inkonsistenzen bei I/O-Operationen kommen.
Inhaltsverzeichnis
Multiprozessorsysteme
Bei Multiprozessorsystemen hat üblicherweise jeder Prozessor seinen eigenen Cache und greift darüber auf einen zentralen, gemeinsamen Speicher zu. Um Probleme durch Inkonsistenzen zwischen den Caches und dem Hauptspeicher zu verhindern, sorgt ein Cache-Algorithmus für Cache-Kohärenz.
Write Through (Write Thru)
Es wird am Cache vorbei in den Hauptspeicher geschrieben. Die Cacheline verliert dabei ihre Gültigkeit. Daher folgt beim nächsten Lesen aus der Cacheline ein cache-miss.
Write Back
Die Daten werden in den Cache zurück geschrieben und das DirtyBit wird gesetzt. Der Abgleich mit dem Hauptspeicher kann durch ein FLUSH ausgelöst werden. Außerdem werden die Daten in den Hauptspeicher zurück geschrieben, wenn die Cacheline für andere Daten verwendet werden soll. Diese Technik ist zwar aufwändiger, allerdings auch schneller als Write Through. DirtyBit = Daten im Hauptspeicher und Cache sind nicht konsistent
Write allocate
Tritt beim Schreiben ein cache-miss auf, so kommt write-allocate zum Zug. Dabei werden die Daten direkt an den Hauptspeicher durchgeschrieben. Der Cache-Controller sorgt anschließend dafür, dass die eben geschriebenen Daten in den Cache nachgeladen werden.
Wikimedia Foundation.