Mis on mälu sidusus?

Mälu sidusus on probleem, mis ilmneb arvutis, kui protsessor proovib vaadata mälusektorit. See probleem ilmneb ainult mitmetuumalistes süsteemides või arvutites, millel on rohkem kui üks keskprotsessor (CPU). Kui mitu protsessorit vaatavad sama mälusektorit ja üks seda sektorit värskendab, võib teisele jääda arvutimälu vana versioon. Selle probleemi lahendamiseks kasutatakse järjepidevuse reegleid tagamaks, et protsessorid ei pääseks juurde samale mälule või et värskendused oleksid nende vahel järjepidevad. On mitmeid erinevaid järjepidevuse mudeleid, seega peavad programmeerijad ja arvutiarendajad teadma täpselt kasutatavat mudelit.

Mälu sidususe probleem ilmneb mälule juurdepääsu tõttu ainult arvutites, mis kasutavad vähemalt kahte protsessorit. Kui üks protsessor kasutab mälusektorit, on see võimeline võtma, kasutama ja muutma mälu ilma konfliktideta, kuna ükski teine ​​​​riistvaraosa ei konkureeri mälu pärast. Kui kasutatakse kahte protsessorit, võivad need kaks protsessorit haarata sama mälusektori. Kuigi kahe mälu jagamisega protsessoriga probleeme pole, tekib probleem, kui üks protsessor mälu värskendab. See jätab teisele CPU-le vananenud mälu, mille märkimata jätmisel võib kogu arvutil olla kaks erinevat ja vastuolulist arvutimälu versiooni.

On olemas programmeerimisskeemid, mis on loodud spetsiaalselt mälu sidususe parandamiseks, mis võib olla suur probleem. Neid nimetatakse ühiselt mälu järjepidevuse reegliteks ja versioone on palju. Üldiselt ütleb iga versioon mitmele protsessorile, kuidas arvutimälu õigesti jagada, ilma mälu sidususe probleemi põhjustamata. Seda saab teha mälu mõlema versiooni värskendamisega, kui ühte versiooni muudetakse, või takistades protsessoritel korraga samale mälule juurde pääseda.

Kuigi järjepidevuse reeglite kasutamine aitab vältida mälu sidususe probleemi, tuleneb sellest veel üks probleem. Igal konsistentsikomplektil on erinev programmeerimine ja erinevad reeglid, nii et programmeerijad, kes loovad programme või kirjutavad koodi, mis tegelevad otse protsessoritega, peavad kohandama kodeeringu täpsete järjepidevuse reeglite järgi. Kui ei, siis võib see kas järjepidevuse tühistada või põhjustada suure konflikti programmeerija kodeerimise ja järjepidevuse reeglite vahel ning arvuti võib lakata töötamast.