Što je memorijska koherencija?

Koherencija memorije je problem koji se javlja u računalu kada procesor pokuša pogledati memorijski sektor. Ovaj se problem javlja samo na višejezgrenim sustavima ili računalima koja imaju više od jedne središnje procesorske jedinice (CPU). Kada više procesora pogleda isti memorijski sektor i jedan ažurira sektor, drugi može ostati sa starom verzijom memorije računala. Za rješavanje ovog problema koriste se pravila dosljednosti kako bi se osiguralo da procesori ili ne pristupaju istoj memoriji ili da su ažuriranja dosljedna između njih. Postoji nekoliko različitih modela dosljednosti, tako da programeri i programeri računala moraju znati točan model koji se koristi.

Problem koherentnosti memorije je onaj koji se javlja samo na računalima koja koriste najmanje dva CPU-a zbog načina na koji pristupaju memoriji. Kada jedan CPU pristupa memorijskom sektoru, on je u stanju uzeti, koristiti i mijenjati memoriju bez ikakvog sukoba, jer nema drugih hardverskih dijelova koji se natječu za memoriju. Ako se koriste dva CPU-a, tada dva CPU-a mogu zgrabiti isti memorijski sektor. Iako nema problema s dva CPU-a koji dijele memoriju, problem nastaje ako jedan CPU ažurira memoriju. Ovo ostavlja drugi CPU sa zastarjelom memorijom koja, ako se ne označi, može uzrokovati da cijelo računalo ima dvije odvojene i sukobljene verzije memorije računala.

Postoje programske sheme napravljene posebno za ispravljanje skladnosti memorije, što može biti veliki problem. Oni su zajednički poznati kao pravila konzistentnosti memorije, a postoje mnoge verzije. Općenito, svaka verzija govori više CPU-a kako pravilno dijeliti memoriju računala bez izazivanja problema s skladnošću memorije. To se može učiniti ažuriranjem obje verzije memorije kada se jedna verzija promijeni ili sprečavanjem CPU-a da pristupaju istoj memoriji u isto vrijeme.

Dok korištenje pravila dosljednosti pomaže izbjeći problem usklađenosti memorije, iz ovoga proizlazi još jedan problem. Svaki skup konzistentnosti ima različito programiranje i različita pravila, tako da će programeri koji izrađuju programe ili pišu kod koji se izravno bavi CPU-ima morati prilagoditi kodiranje za točna pravila konzistentnosti. Ako ne, onda to može ili nadjačati dosljednost ili uzrokovati veliki sukob između programerovog kodiranja i pravila dosljednosti, a računalo može prestati funkcionirati.