Was ist Gedächtniskohärenz?
Speicherkohärenz ist ein Problem, das in einem Computer auftritt, wenn ein Prozessor versucht, einen Speichersektor zu betrachten. Dieses Problem tritt nur auf Multicore-Systemen oder Computern mit mehr als einer Zentraleinheit (CPU) auf. Wenn sich mehrere Prozessoren denselben Speichersektor ansehen und einer den Sektor aktualisiert, verbleibt auf dem anderen möglicherweise eine alte Version des Computerspeichers. Um dieses Problem zu beheben, werden Konsistenzregeln verwendet, um sicherzustellen, dass die Prozessoren entweder nicht auf denselben Speicher zugreifen oder dass die Aktualisierungen zwischen ihnen konsistent sind. Es gibt verschiedene Konsistenzmodelle, daher müssen Programmierer und Computerentwickler das genaue verwendete Modell kennen.
Das Speicherkohärenzproblem tritt nur auf Computern auf, die mindestens zwei CPUs verwenden, da sie auf den Speicher zugreifen. Wenn eine CPU auf einen Speichersektor zugreift, kann sie den Speicher konfliktfrei nutzen und ändern, da keine anderen Hardwarekomponenten um den Speicher konkurrieren. Wenn zwei CPUs verwendet werden, greifen die beiden CPUs möglicherweise auf denselben Speichersektor zu. Während es keine Probleme mit den beiden CPUs gibt, die den Speicher gemeinsam nutzen, tritt ein Problem auf, wenn eine CPU den Speicher aktualisiert. Dies belässt die zweite CPU mit veraltetem Speicher, der, wenn er nicht markiert ist, dazu führen kann, dass der gesamte Computer über zwei separate und widersprüchliche Versionen des Computerspeichers verfügt.
Es gibt Programmierschemata, die speziell für die Korrektur der Speicherkohärenz entwickelt wurden. Dies kann ein großes Problem sein. Sie werden gemeinsam als Speicherkonsistenzregeln bezeichnet, und es gibt viele Versionen. Insgesamt teilt jede Version den mehreren CPUs mit, wie der Computerspeicher ordnungsgemäß freigegeben werden kann, ohne das Speicherkohärenzproblem zu verursachen. Dies kann erreicht werden, indem beide Versionen des Speichers aktualisiert werden, wenn eine Version geändert wird, oder indem verhindert wird, dass die CPUs gleichzeitig auf denselben Speicher zugreifen.
Während die Verwendung von Konsistenzregeln dazu beiträgt, das Speicherkohärenzproblem zu vermeiden, ergibt sich daraus ein weiteres Problem. Jeder Konsistenzsatz hat unterschiedliche Programmier- und Regeln, sodass Programmierer, die Programme erstellen oder Code schreiben, der sich direkt mit den CPUs befasst, die Codierung an die genauen Konsistenzregeln anpassen müssen. Wenn dies nicht der Fall ist, kann dies entweder die Konsistenz überschreiben oder einen schwerwiegenden Konflikt zwischen der Codierung des Programmierers und den Konsistenzregeln verursachen, und der Computer funktioniert möglicherweise nicht mehr.