Multicore und Synchronisation

Warum wird in Systemen mit vielen Kernen statt des Snooping-Verfahrens Kohärenz nach dem Directory-Verfahren verwendet?

  1. AWeil sich die Kommunikation verringern lässt, indem festgehalten wird, welcher Kern welche Zeile besitzt, und nur die betroffenen Kerne benachrichtigt werden
  2. BWeil beim Directory-Verfahren kein Cache nötig ist
  3. CWeil beim Directory-Verfahren bei jedem Schreiben alle Kerne benachrichtigt werden können
Antwort und Erläuterung anzeigen

Antwort: A. Weil sich die Kommunikation verringern lässt, indem festgehalten wird, welcher Kern welche Zeile besitzt, und nur die betroffenen Kerne benachrichtigt werden

Beim Directory-Verfahren wird für jede Zeile eine Tabelle (Directory) geführt, in der festgehalten ist, welche Kerne Kopien besitzen und in welchem Zustand. Bei einem Schreibvorgang werden anhand des Directory Invalidierungsanforderungen nur an die Kerne mit Kopien gesendet. Da dies weniger Kommunikation erfordert als Snooping, bei dem alle Caches gleichzeitig informiert werden, wird es z. B. bei Server-CPUs mit mehreren zehn und mehr Kernen verwendet.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Kohärenzprotokolle gibt es als Invalidierungstyp und als Update-Typ. Was ist der treffendste Grund, warum viele CPUs den Invalidierungstyp verwenden?
  2. Welche Aussage zum in Multithread-Programmen auftretenden False Sharing ist richtig?
  3. In einem Array von Zählern je Thread wie „long cnt[8];“ tritt False Sharing auf. Welche Gegenmaßnahme ist am besten geeignet?
  4. Welche Aussage zu einem Data Race (Datenwettlauf) ist richtig?
  5. Wird der obige Code gleichzeitig in zwei Threads ausgeführt, kann der Endwert von counter kleiner als 200000 sein. Welcher Grund ist richtig?

Vergleiche zu diesem Thema