Multiprocessing: Funktion & Besonderheiten

Cache-Konsistenz durch MESI

Alle Prozessoren eines SMP-Systems besitzen Zugriff auf den gemeinsamen Arbeitsspeicher. Mit exklusiven Ressourcen wie den lokalen Prozessor-Caches kann es dabei zu Problemen kommen: Befinden sich die Daten eines bestimmten Speicherbereiches im Cache von Prozessor 0, greift dieser bei einem erneutem Zugriff auf diese Daten in seinen schnellen Cache zurück. Hier kann es aber zu Inkonsistenzen kommen, wenn Prozessor 1 zwischenzeitlich den entsprechenden Speicherbereich mit neuen Daten überschrieben hat.

SMP-Systeme verfügen deshalb über ein Cache-Kohärenz-Protokoll: Es gewährleistet, dass die Daten im Arbeitsspeicher und den Caches der Prozessoren immer konsistent sind. Ein für Multiprozessor-Systeme weit verbreitetes Protokoll ist MESI (Modified, Exclusive, Shared und Invalid). Jede Cache-Line befindet sich durch das MESI-Protokoll in einem der vier Zustände:

  • Modified: Die Cache-Line findet sich nur in einem Prozessor und enthält modifizierte Daten. Der Inhalt stimmt nicht mehr mit dem Arbeitsspeicher überein.

  • Exclusive: Die Cache-Line ist nur in einem Prozessor gespeichert. Die Daten sind aber nicht verändert und stimmen mit dem entsprechenden Bereich im Arbeitsspeicher überein.

  • Shared: Eine Cache-Line ist in mehreren Prozessoren vorhanden. Schreibbefehle erfolgen jetzt über ein write-through in den Arbeitsspeicher. Bei diesem Vorgang werden die Cache-Lines der übrigen Prozessoren ungültig.

  • Invalid: Der Inhalt der Cache-Line ist ungültig. Ein Lesezugriff auf eine Cache-Line mit Invalid-Status erzeugt einen Cache Miss. Der Prozessor holt darauf die Daten aus dem Arbeitsspeicher.