Software für Multi-Core-CPUs optimieren

Programmieren für Multi-Core-Prozessoren

Caching

Um schneller an Daten und Instruktionen heranzukommen, werden außerdem Zwischenspeicher (Caches) eingesetzt. Diese sind heute immer mehrstufig aufgebaut und werden meist als first, second oder third Level Cache bezeichnet.

Generell gilt: Je näher der Cache an der CPU ist, umso schneller kann diese darauf zugreifen, aber umso kleiner ist er auch. Bei heutigen Systemen umfassen die Level-1-Caches circa 32 KByte, Level-2-Caches reichen schon an einige MBytes heran und Level-3-Caches können mehr als 16 MByte groß sein.

In keinem Fall allerdings wird der Cache jemals die Größe des Arbeitsspeichers erreichen, der heute mehrere Gigabyte umfasst. Der Cache dient, wie erwähnt, nur dem schnelleren Zugriff auf benötigte Daten und Instruktionen.

Bei Verzweigungen, also der Fortführung des Codes an einer anderen Stelle, sorgen spekulative Ausführung und Branch Prediction dafür, dass der Cache rechtzeitig mit den benötigten Inhalten gefüllt wird. Die Verwaltung der Caches erfolgt durch die CPU und läuft unbemerkt vom Programmcode.

Dennoch sollte sich ein Software-Entwickler über die Existenz und Arbeitweise des Caches unbedingt im Klaren sein, denn viele Verzweigungen oder Sprünge im Code ziehen unweigerlich viele Cache-Operationen nach sich. Auch beim parallelen Zugriff auf Daten muss der Inhalt des Caches berücksichtigt werden.