Що таке пам'ять ECC?

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

Що таке помилки пам’яті?

Помилки пам'яті - це проблема, коли значення, збережене в пам'яті, змінюється. Дані в ОЗП зберігаються в двійковому вигляді зі значеннями 1 або 0. Якщо значення 1 змінюється на 0 або навпаки, у процесі, який називається «переворот бітів», дані, які зберігаються в ОЗП, змінюються.

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

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

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

Наскільки поширені помилки пам’яті?

Більшість людей не бачать, що їхні комп’ютери виходять із ладу щодня, тому легко подумати, що це насамперед теоретичний ризик. Дослідження з гіпермасштабованих центрів обробки даних були використані для аналізу частоти інцидентів з перевертанням бітів. Дослідження, проведені Google у своїх центрах обробки даних, показали, що частота помилок становить приблизно 1 однобітову помилку на гігабайт оперативної пам’яті кожні 1,8 години.

Місія NASA Cassini-Huygens, яка була запущена в 1997 році для подорожі до Сатурна, була налаштована з двома однаковими льотними комп’ютерами з 2,5 Гб оперативної пам’яті кожен. Протягом перших двох з половиною років своєї подорожі космічний корабель спостерігав постійні 280 однобітових помилок на день. Протягом одного дня, коли Кассіні-Гюйгенс перебував на шляху сонячного спалаху, біта збільшилася в чотири рази. було виявлено помилки, що надає додаткові докази того, що Сонце є причиною більшості переворотів бітів питання.

Існували побоювання, що подальше збільшення щільності модулів RAM призведе до того, що пізніші версії RAM будуть все більш і більш вразливими до переворотів бітів. Останні дослідження показали, що насправді все навпаки, оскільки похибки зменшилися в міру зменшення геометрії процесу.

Як пам'ять ECC захищає від помилок?

Пам'ять ECC використовує коди для виправлення помилок, такі як коди Хеммінга, для виправлення однобітових помилок в ОЗП. Подвійні бітові помилки можна виявити, але не виправити. Коди Хеммінга, які виправляють помилки, працюють за допомогою масиву бітів парності. Разом ці біти парності можна використовувати для виявлення змін будь-яких бітів даних. Якщо біт визначається як перевернутий, він автоматично змінюється назад.

Порада: однобітова помилка — це інцидент перевороту бітів, коли перевертається лише один біт. У помилках double0bit два біти перевертаються. Два біти не потрібно перевертати в одному інциденті, другий переворот бітів має відбутися лише до того, як буде виправлено перший перевернутий біт.

У коди Хеммінга, що виправляють помилки, включено на один біт парності більше, ніж потрібно. Цей додатковий біт парності дає коду можливість виявляти подвійні бітові помилки, однак ці помилки не можна виправити.

Процес виявлення та виправлення помилок виконується на контролері пам'яті на борту RAM.

Доступність та підтримка споживачів

Більшість комп’ютерного обладнання споживчого класу не підтримує пам’ять ECC. Це частково як метод штучного відмежування серверного обладнання від споживчого обладнання. Однак ECC RAM коштує дорожче і працює трохи повільніше. Крім того, додаткова стабільність, яку він забезпечить домашнім споживачам, мінімальна, оскільки помилки перегортання бітів не є основною причиною збоїв системи.

Жоден з процесорів Intel для споживачів і ентузіастів не підтримує пам’ять ECC, а лише її серверні процесори, такі як процесори серії Xeon. Споживчі процесори AMD не підтримують ECC, однак процесори їх робочої станції та серверного рівня, Threadripper та EPYC відповідно, підтримують пам’ять ECC.