Cache-Speicher sorgen dafür, dass schnelle Prozessoren nicht lange auf Daten warten müssen

Cache-Optimierung in eingebetteten Systemen

29. Juli 2009, 9:38 Uhr | Robert Oshana
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 5

Cache-Optimierung in eingebetteten Systemen

In ähnlicher Weise müssen die Daten vom L2-Cache zurück in den externen Speicher geschrieben werden, bevor OutBuffB zum Peripheriegerät übertragen wird. Dies geschieht durch Ausgabe eines „CACHE_control“-Befehls (CACHE_L2, CACHE_WB, OutBuffB, BUFSIZE). Dies ist notwendig, da die CPU die Ausgangsdaten nur in den L2-Cache schreibt. Der im Arbeitsspeicher vorhandene Out-BuffB muss durch den „CACHE_control“-Befehl aktualisiert werden.

Maßnahmen zur Steuerung der Cache-Kohärenz sollten dann angewendet werden, wenn CPU- und DMA-Controller einen zwischenspeicherungsfähigen Teil des externen Speichers gemeinsam nutzen. Das ist der Fall, wenn die CPU Daten liest, die mittels DMA geschrieben wurden, und umgekehrt. Die sicherste Methode ist hier, vor DMA-Übertragungen zum und vom externen Speicher einen globalen WRITEBACK-INVALIDATE-Befehl auszugeben. Der Hauptnachteil ist dabei die Verzögerung durch den Overhead, der sich aus unnötigen Operationen an den Cache-Zeilen ergibt.

Software-Änderungen zur Cache-Optimierung

Eine gute Strategie zur Optimierung der Cache-Perfomance ist das Top-Down-Prinzip. Dabei beginnt man auf der Anwendungsebene, geht zur Prozedurebene über und nimmt nötigenfalls noch Optimierungen auf Algorithmenebene vor. Im Falle der Software für Signalverarbeitung sind Steuerung und Datenfluss bei der DSP-Verarbeitung hinreichend bekannt und ermöglichen eine Optimierung. Mithilfe von DMA kann „streaming data“ in den chipinternen Speicher übertragen und eine bestmögliche Performance erzielt werden.

Bei Mehrzweckcode gelten etwas andere Verfahren. Mehrzweckcode enthält in großem Umfang linearen Code und bedingte Verzweigungen. Es gibt keine parallele Verarbeitung, und die Ausführung lässt sich nicht vorhersagen. Unter diesen Umständen sollte der L2-Cache häufiger verwendet werden.

Aus der Funktionsweise der Cache-Speicher lassen sich unmittelbar mehrere einfache Prinzipien ableiten. Zunächst sollte ein Programm jedes Wort jeder einzelnen Cache-Zeile nutzen, auf die das Programm zugreift. Ist dies nicht der Fall, beansprucht das Laden nicht genutzter Zeilenbereiche unnötig Zeit. Außerdem sollte ein Programm eine Cache-Zeile intensiv nutzen und nicht später zu dieser zurückkehren. Ruft ein Programm nach einer bestimmten Zeit eine Cache-Zeile zum zweiten Mal auf, wurde diese möglicherweise bereits durch andere Daten überschrieben. Beim Warten auf dieselben Daten kommt es damit zweimal zu Programmverzögerungen. jk


  1. Cache-Optimierung in eingebetteten Systemen
  2. Cache-Optimierung in eingebetteten Systemen
  3. Cache-Optimierung in eingebetteten Systemen
  4. Gültigkeitsprüfung der zwischengespeicherten Daten
  5. Doppelte Pufferung
  6. Cache-Optimierung in eingebetteten Systemen

Jetzt kostenfreie Newsletter bestellen!