Wat is geheugencoherentie?
Geheugencoherentie is een probleem dat zich in een computer voordoet wanneer een processor naar een geheugensector probeert te kijken. Dit probleem treedt alleen op bij multicore-systemen of computers met meer dan één centrale verwerkingseenheid (CPU). Wanneer de meerdere processoren naar dezelfde geheugensector kijken en de ene de sector bijwerkt, kan de andere een oude versie van het computergeheugen overhouden. Om dit probleem op te lossen, worden consistentieregels gebruikt om ervoor te zorgen dat de processors geen toegang hebben tot hetzelfde geheugen of dat de updates onderling consistent zijn. Er zijn verschillende consistentiemodellen, dus programmeurs en computerontwikkelaars moeten het exacte gebruikte model kennen.
Het geheugencoherentieprobleem is er een dat alleen optreedt op computers die ten minste twee CPU's gebruiken vanwege de manier waarop ze toegang krijgen tot het geheugen. Wanneer een CPU toegang krijgt tot een geheugensector, kan deze het geheugen zonder enig conflict opnemen, gebruiken en wijzigen, omdat er geen andere hardwarestukken concurreren om geheugen. Als twee CPU's worden gebruikt, kunnen de twee CPU's dezelfde geheugensector pakken. Hoewel er geen problemen zijn met de twee CPU's die het geheugen delen, doet zich een probleem voor als een CPU het geheugen bijwerkt. Dit laat de tweede CPU achter met verouderd geheugen dat, indien niet aangevinkt, ervoor kan zorgen dat de hele computer twee afzonderlijke en conflicterende versies van computergeheugen heeft.
Er zijn programmeringsschema's die specifiek zijn gemaakt om de geheugencoherentie te corrigeren, wat een groot probleem kan zijn. Ze staan gezamenlijk bekend als regels voor geheugenconsistentie en er zijn veel versies. Over het algemeen vertelt elke versie de meerdere CPU's hoe ze het computergeheugen correct kunnen delen zonder het probleem van de geheugencoherentie te veroorzaken. Dit kan worden gedaan door beide versies van het geheugen bij te werken wanneer een versie wordt gewijzigd of door te voorkomen dat de CPU's tegelijkertijd toegang krijgen tot hetzelfde geheugen.
Hoewel het gebruik van consistentieregels helpt om het geheugencoherentieprobleem te voorkomen, ontstaat hier een ander probleem. Elke consistentieset heeft verschillende programmering en verschillende regels, dus programmeurs die programma's maken of code schrijven die rechtstreeks met de CPU's omgaan, moeten de codering aanpassen aan de exacte consistentie-regels. Als dit niet het geval is, kan dit de consistentie opheffen of een groot conflict veroorzaken tussen de codering van de programmeur en de consistentieregels, en kan de computer stoppen met werken.