Bei einer typischen Anwendung in der Signalverarbeitung werden die Daten von einem Peripheriegerät gelesen, verarbeitet und dann über ein anderes Peripheriegerät ausgegeben. Während die CPU Daten verarbeitet und auf den Puffersatz zugreift (z.B. InBuffA und OutBuffA), schreiben und lesen die Peripheriegeräte unabhängig davon Daten und verwenden hierzu einen anderen Puffersatz. Damit findet die DMA-Datenübertragung parallel zur CPU-Verarbeitung statt (Bild 6).
Wurde InBuffA durch das Peripheriegerät gefüllt, sehen die weiteren Schritte folgendermaßen aus:
Wenn bei demselben Pufferungsschema weitere Puffer im externen Speicher eingerichtet werden (Bild 7), sorgt der Cache-Controller nicht automatisch für Kohärenz, d.h., der Programmierer muss die Kohärenz manuell sicherstellen.
Befinden sich bei demselben Pufferungsszenario (Bild 6) die Puffer im externen Speicher, ist ebenfalls der Programmierer verantwortlich dafür, die Kohärenz manuell sicherzustellen, da dies nicht automatisch durch den Cache-Controller geschieht. Auch hier liest die CPU Daten aus einem Peripheriegerät ein, verarbeitet die Daten und schreibt diese dann mittels DMA auf ein anderes Peripheriegerät. Zusätzlich werden die Daten über den L2-Cache geleitet.
Wenn die Übertragungen bereits stattfanden, dann sind sowohl InBuff als auch OutBuff im L2-Cache und außerdem InBuff im L1D zwischengespeichert: Die CPU hat die Nutzung von InBuffB abgeschlossen, OutBuffB gefüllt und beginnt demnächst mit der Verarbeitung der A-Puffer. Vor der Verarbeitung übergibt die Funktion, mit der die neuen Daten in den Puffer InBuffB gelangen, die von der CPU in OutBuffB geschriebenen Daten an das Peripheriegerät.
Um zu gewährleisten, dass die Kohärenz zwischen dem externen Speicher (Bild 7) und dem L2-Cache sowie zwischen dem L2-Cache und L1D aufrechterhalten bleibt, muss derselbe Prozess wie im vorigen Beispiel ausgeführt werden. Außerdem müssen die Zeilen im L2-Cache und in L1D, die auf die Eingabepuffer im externen Speicher abgebildet werden, vor dem Beginn bzw. nach Abschluss der Übertragung auf „Ungültig“ gesetzt werden.
Die Chip Support Library (CSL) der C64x-DSPs stellt hierfür eine Reihe von Routinen bereit, mit deren Hilfe der Programmierer die Cache-Operationen initiieren kann. In diesem Fall sollte vor Beginn der Übertragung „CACHE_control“ (CACHE_L2, CACHE_INV, InBuffB, BUFSIZE) verwendet werden. Dafür müssen die Anfangsadresse des Puffers im externen Speicher und die Anzahl von Bytes angegeben werden.