Hva er minnekoherens?
Minnekoherens er et problem som oppstår i en datamaskin når en prosessor prøver å se på en minnesektor. Dette problemet oppstår bare på flerkjernesystemer, eller datamaskiner som har mer enn en sentral prosesseringsenhet (CPU). Når flere prosessorer ser på den samme minnesektoren og den ene oppdaterer sektoren, kan den andre sitte igjen med en gammel versjon av datamaskinminnet. For å løse dette problemet brukes konsistensregler for å sikre at prosessorene enten ikke får tilgang til det samme minnet, eller at oppdateringene er konsistente mellom dem. Det er flere forskjellige konsistensmodeller, så programmerere og datamaskinutviklere må vite den eksakte modellen som er brukt.
Problemet med minnekoherens er et som bare oppstår på datamaskiner som bruker minst to prosessorer på grunn av hvordan de får tilgang til minnet. Når en CPU får tilgang til en minnesektor, er den i stand til å ta, bruke og endre minnet uten noen konflikt, fordi det ikke er andre maskinvarestykker som konkurrerer om minnet. Hvis det brukes to CPU-er, kan de to CPU-ene ta tak i den samme minnesektoren. Selv om det ikke er noen problemer med de to CPU-ene som deler minnet, oppstår det et problem hvis en CPU oppdaterer minnet. Dette etterlater den andre CPU-en med utdatert minne som, hvis den ikke er avkrysset, kan føre til at hele datamaskinen har to separate og motstridende versjoner av dataminne.
Det er programmeringsskjemaer laget spesielt for å korrigere minnesammenheng, noe som kan være et stort problem. De er kjent som regler for minnekonsistens, og det er mange versjoner. Totalt sett forteller hver versjon de flere prosessorene hvordan de skal dele datamaskinens minne ordentlig uten å forårsake problemer med minnekoherensen. Dette kan gjøres ved å oppdatere begge versjonene av minnet når en versjon endres, eller ved å forhindre at CPUene får tilgang til det samme minnet på samme tid.
Mens bruk av konsistensregler er med på å unngå hukommelseskoherensproblemet, oppstår et annet problem av dette. Hvert konsistenssett har forskjellig programmering og forskjellige regler, så programmerere som lager programmer eller skriver kode som handler direkte med CPU-ene, må skreddersy kodingen for de nøyaktige konsistensreglene. Hvis ikke, kan dette enten overstyre konsistensen eller forårsake en stor konflikt mellom programmererens koding og konsistensreglene, og datamaskinen kan slutte å fungere.