Когерентність пам’яті.

Когерентність пам’яті – це проблема, яка виникає на комп’ютері, коли процесор намагається звернутися до сектору пам’яті. Ця проблема виникає тільки в багатоядерних системах або на комп’ютерах з більш ніж одним центральним процесором (ЦП). Коли кілька процесорів звертаються до одного й того ж сектору пам’яті, і один ЦП оновлює сектор, інший може бути залишений старою версією пам’яті комп’ютера. Щоб усунути цю проблему, застосовуються правила узгодженості для забезпечення того, щоб процесори або не зверталися до однієї і тієї ж пам’яті, або що б поновлення були узгоджені між ними.
Існує кілька різних моделей узгодженості, тому програмісти і розробники комп’ютерів повинні знати точну використовувану модель.

Проблема когерентності пам’яті – це проблема, яка виникає тільки на комп’ютерах, які використовують як мінімум два процесора через те, як вони звертаються до пам’яті. Коли один процесор звертається до сектору пам’яті, він може приймати, та внесення змін до пам’ять без будь-яких конфліктів, тому що немає інших апаратних компонентів, що конкурують за пам’ять. Якщо використовуються два процесори, два процесори можуть захопити один і той же сектор пам’яті. Незважаючи на відсутність проблем з двома CPU, що використовують пам’ять, виникає проблема, якщо один процесор оновлює пам’ять. Це залишає другий процесор із застарілою пам’яттю, яка, якщо її не зупинити, може привести до того, що весь комп’ютер буде мати дві окремі і конфліктуючі версії комп’ютерної пам’яті.

Існують схеми програмування, спеціально призначені для корекції пам’яті, що може бути серйозною проблемою. Вони відомі разом як правила узгодженості пам’яті, і існує багато версій. В цілому, кожна версія повідомляє декільком процесорам, як правильно обмінюватися пам’яттю комп’ютера, не викликаючи проблеми узгодженості пам’яті. Це може бути зроблено шляхом поновлення обох версій пам’яті при зміні однієї версії або одночасного доступу центральних процесорів до однієї і тієї ж пам’яті.

Хоча використання правил узгодженості допомагає уникнути проблеми узгодженості пам’яті, виникає інша проблема. Кожен набір узгодженості має різне програмування і різні правила, тому програмісти, які створюють програми або пишуть код, який безпосередньо пов’язаний з процесорами, повинні будуть підганяти кодування для точних правил узгодженості. Якщо немає, то це може або перевизначити узгодженість, або викликати серйозний конфлікт між кодами програміста і правилами узгодженості, і комп’ютер може перестати функціонувати.

Ссылка на основную публикацию