Методы контроля памяти: ECC и четность для повышения стабильности системы

Динамическая память, несмотря на свою популярность и широкое распространение, имеет серьезный недостаток — вероятность ошибок при считывании данных из ячеек памяти. Для обнаружения и исправления таких ошибок применяются специальные схемы контроля целостности данных. Существует два основных метода контроля ошибок памяти: с помощью бита четности и с помощью кода коррекции ошибок (ECC - Error Correction Code или Error Checking and Correction). Второй метод является более надежным, однако они сильно различаются по принципу работы и возможностям.

При применении метода проверки по четности (который используется как в режиме POST, так и в обычном режиме работы системы), каждый байт данных в памяти получает дополнительный девятый разряд. Этот разряд устанавливается так, чтобы общее количество единичных битов в байте всегда оставалось нечетным. Когда данные считываются из памяти, проверяется, сохраняется ли этот критерий четности. Модули памяти, поддерживающие проверку по четности, должны включать дополнительный элемент для хранения этой информации. Если обнаруживается ошибка, генерируется немаскируемое прерывание NMI, которое невозможно заблокировать, и система завершает свою работу. На экране появляется сообщение об ошибке памяти, например, «PARITY ERROR AT 0AB5:00BE SYSTEM HALTED».

Недостаток этого метода очевиден: на его основе невозможно исправить ошибки, лишь обнаружив их. Метод ECC, который применяется на более высокоуровневых ПК и серверах, позволяет не только обнаруживать, но и исправлять однобитовые ошибки в памяти. Двухбитные ошибки также обнаруживаются, но не исправляются. В отличие от метода четности, при применении ECC каждый бит данных входит в несколько контрольных сумм, что позволяет восстанавливать адрес ошибки и корректировать ее. Однако стоит отметить, что не все чипсеты поддерживают коррекцию ошибок, и с середины 90-х годов схемы контроля четности стали встречаться все реже. ECC не является абсолютным решением всех проблем с памятью и предназначено в основном для исправления случайных ошибок.

Метод контроля четности по модулю 2 используется в компьютерных системах уже давно. В более сложных системах, таких как военная техника и системы передачи данных, используются более сложные методы, например, контроль по модулю 15. Также существуют методы коррекции ошибок, такие как коды Хэмминга и циклические коды с образующим полиномом, которые давно применяются в телемеханике и других системах передачи данных.

SmartCorrect — технология автоматической коррекции ошибок, разработанная корпорацией Distributed Processing Technology (DPT), предназначена для защиты подсистемы массовой памяти. Используя платы памяти с системой автокоррекции ошибок, высокопроизводительные адаптеры компании DPT могут обнаруживать и устранять любые нарушения целостности данных, возникающие на уровнях кэш-памяти адаптера или в процессе передачи данных.

CPU Level 2 Cache ECC Check

Опция включения/отключения коррекции ошибок для кэша второго уровня у процессоров архитектуры Pentium II и выше, поддерживающих эту функцию. Например, процессоры Pentium II поддерживают коррекцию ошибок при частоте от 333 МГц и выше. Включение ECC-коррекции повышает надежность системы, однако может незначительно снизить ее производительность. Тем не менее, замедление работы системы будет минимальным, и эта опция не должна быть причиной отказа от включения коррекции ошибок. Если система поддерживает эту функцию, рекомендуется включить ее, особенно в сетевых средах, где надежность и стабильность являются приоритетными. Однако для систем с "разогнанными" процессорами следует внимательно следить за стабильностью работы.

При отсутствии кэш-памяти второго уровня или ее блокировке данная опция будет недоступна, но такая ситуация встречается редко, так как системы с кэшем второго уровня — обычное дело. Опция может иметь следующие значения:

Опция может быть представлена также под другими названиями: "CPU Level 2 ECC checking", "CPU L2 Cache ECC Checking" и "L2 Cache ECC Support". В "AMI BIOS" существует аналогичная настройка с названием "Cache Bus ECC". Еще одна опция — "ECC CPU Checking".

CPU Level 2 Cache ECC Check

Data Integrity (PAR/ECC)

Опция, отвечающая за разрешение или запрет проверки памяти на наличие ошибок. Для включения контроля целостности данных требуется поддержка памяти с использованием технологий ECC или четности. Она может принимать следующие значения:

DRAM Data Integrity Mode

Опция для включения или отключения проверки целостности данных в памяти DRAM. Включение этой опции позволяет системе отслеживать и исправлять однобитовые ошибки, а также обнаруживать двухбитные ошибки без их исправления. Включение коррекции ошибок повышает стабильность системы, однако может незначительно снизить производительность. Если в системе не используются ECC-модули памяти, эту опцию следует отключить. Однако, если производительность не является критичной, рекомендуется использовать режим коррекции. Опция может принимать значения:

В "Phoenix BIOS" аналогичная опция называется "ECC Control". Если параметр установлен в "Enabled", коррекция ошибок разрешена, если в "Disabled" - запрещена. В "AMI BIOS" также есть опция "Memory Error Detection", с аналогичными параметрами "Enabled" и "Disabled".

DRAM ECC/PARITY Select

Эта опция появляется в BIOS только тогда, когда чипсет поддерживает ECC, и может быть использована только в случае установки модулей памяти с настоящей четностью. Опция позволяет выбрать режим проверки памяти на ошибки. В некоторых версиях BIOS этот параметр устанавливает только вид проверки, а разрешение на проверку регулируется через параметр "Data Integrity (PAR/ECC)" или аналогичный. Опция может принимать следующие значения:

В "Phoenix BIOS" аналогичная опция называется "Parity Mode" (или "Memory Parity Mode") с параметрами:

В "AMI BIOS" также есть два варианта опции "Memory Error Detection", где параметры "Disabled", "ECC" и "Parity" используются для контроля целостности данных.

Memory Parity/ECC Check

Опция разрешения или запрета проверки целостности данных. Она может принимать следующие значения: "Enabled" - разрешена проверка памяти на ошибки, "Disabled" - запрещена проверка, а также "Auto", который автоматически активирует проверку, выбирая подходящий режим в зависимости от возможностей модулей памяти. В случае включения опции и отсутствии подходящих модулей памяти, загрузка системы может быть прервана с сообщением "Parity Error".

Single Bit Error Report

Если включен режим коррекции ошибок, установка этой опции в "Enabled" позволяет системе выводить сообщение об однобитовой ошибке и ее коррекции. Если опция отключена, сообщение об ошибке не выводится, но коррекция продолжает работать.