Как код коррекции ошибок в памяти исправляет многочисленные битовые ошибки

Причины использовать ЕСС-память

Объективных причин использовать оперативную память с поддержкой ECC в настольных компьютерах нет. Так как вероятность возникновения ошибок данных крайне мала, то в обычных сценариях использования ПК крайне маловероятно, что возникновение ошибки приведёт к возникновению проблем или критических сбоев в работе ПК. Самый страшный сценарий — появление синего экрана смерти BSOD. Кроме того, использование ECC-ОЗУ затруднено тем, что настольные процессоры и материнские платы в своём большинстве не поддерживают данный тип оперативной памяти.

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

Причины появления ошибок в ОЗУ

Главная проблема для любого электронного устройства – невидимые космические лучи, от которых земная атмосфера не защищает должным образом. Элементарные частицы, которые пребывают в этом потоке, способны влиять на работу электроники. Под их воздействием физические свойства оперативки могут меняться, что уже ведет к размагничиванию. При смене данных, из единицы (заряженное состояние) на ноль (разряженное) уже появляется искажение.

А так как любой компьютер на самом «глубинном» уровне проводит все вычисления с помощью двоичных кодов, нарушения свойств электронных компонентов и провоцируют ошибки в работе.

Характерно, что чем выше от уровня моря, тем меньше плотность воздуха и соответственно, интенсивнее космическое излучение. Компьютерные системы, которые работают на большой высоте, требуют более эффективной защиты. Советую также почитать «Что такое ОЗУ в компьютере: из чего состоит и для чего служит?»(уже на сайте).

Очень часто при выборе комплектующих мы сталкиваемся с различными непонятными терминами и понятиями. При выборе оперативной памяти это может быть DDR, DDR2, DDR3, DDR4, RDRAM, RIMM и т. Если с основными типами ОЗУ всё более-менее понятно, а поддержка каждого типа указана в описании к материнской плате, то такой параметр, как ECC у многих вызывает некоторые вопросы. Что такое ECC-память? Можно ли использовать ECC оперативку на домашнем компьютере и в чём главное отличие ECC RAM и non-ECC RAM?

Это особый вид оперативной памяти со встроенными аппаратными средствами коррекции ошибок. Подобные модули памяти были разработаны специально для серверов, где требования к корректности данных и надёжности их обработки значительно выше чем на персональных компьютерах.

ECC-Ram автоматически распознаёт спонтанные изменения данных в блоках хранения, то есть возникшие ошибки. Обычная — десктопная память без поддержки механизмов коррекции называется non-ECC.

Как код коррекции ошибок в памяти исправляет многочисленные битовые ошибки

Почему искажается значение в ячейках памяти RAM?

Одна из основных причин искажения данных — космические лучи. Хотя мы находимся на Земле под защитой атмосферы, космические лучи несут с собой некие элементарные частицы, способные влиять на электронику, в том числе, на компьютерную память. Под действием энергии этих частиц возможно изменение состояния ячейки памяти, что ведёт к искажению данных и возникновению ошибок. Интересно, что воздействие космических лучей увеличивается с ростом высоты, поэтому компьютерные системы, находящиеся на большой высоте требуют лучшей защиты.

Как код коррекции ошибок в памяти исправляет многочисленные битовые ошибки

Как работает память с поддержкой ECC

Один из механизмов контроля ошибок в оперативной памяти — использовать технологию контроля чётности, что позволяет фиксировать факт возникновения ошибки в данных, но не позволяет скорректировать данные.

Для ECC коррекции используется код Хэмминга. ECC защищает компьютерные системы от некорректной работы в связи с порчей памяти и снижает вероятность критического отказа системы. Память с поддержкой ECC работает на 2-3 % медленнее чем non-ECC в зависимости от приложений.

Что такое ЕСС память

Аббревиатура происходит от английского названия error correcting code memory, то есть память с коррекцией ошибок кода. Такая ОЗУ распознает и устраняет спонтанно возникающие изменения в битах памяти, которых быть не должно.

Как правило, такая память может исправить изменения в одном бите одного машинного слова. При его чтении будет опознано то же значение, что и было записано, несмотря на возникающие «глюки».

Обычная память, то есть non-ECC, этого делать не умеет.

Этот тип памяти используется в компьютерах, для которых важна бесперебойная работа, включая крупные серверные станции. Для использования такого режима необходима поддержка контроллером ОЗУ – как встраиваемого в чипсет, так и реализованном на кристалле вместе с ядрами.

Базовый алгоритм, который используется чаще всего, основан на коде Хемминга – самоконтролирующемся  двоичном коде, названном в честь предложившего такую систему американского математика.

Существуют алгоритмы, способные исправлять более одной ошибки, но используются они реже. С технологической точки зрения такая система предполагает использование модулей ОЗУ, в которых на каждые 8 микросхем памяти приходится один компонент, хранящий ЕСС-коды (то есть 8 бит на каждые 64 бита).

CrystalMark

Хоть тестовый пакет CrystalMark является устаревшим, он позволяет протестировать как процессор, так и память с видеокартой.

Но ни один из шести тестов не показал существенной разницы между ECC- и non-ECC- памятью. Зато зависимость интегрированного графического ядра от пропускной способности памяти снова налицо – в графическом тесте OGL разница составила около 10% в пользу двухканального режима.

Fritz

В целом, ситуация в Fritz не меняется – коррекция ошибок не накладывает существенных штрафов на производительность процессора.

LinX

Пиши на наш сайт и зарабатывайПоследние 3070 за 50 тр – успей забратьРухнула цена i9 12900K на треть-20 000р на 3070 Ti MSI в Ситилинке12700KF за копейки в Ситилинке3060 Gigabyte дешевле 40 тр3070 Gigabyte за 60 тр в Регарде3050 MSI дешевле 30 тр в СитилинкеRX 6600 за 30тр в РегардеВ ДВА раза подешевела 3070 Gigabyte3080 Ti Gigabyte Gaming дешевле 90 трКомпьютеры дешевле 10 тр в Ситилинке

При одноканальном доступе разница составила 1. 27% в пользу обычной памяти, при двухканальном – 0. 4% (что по большому счету находится в рамках погрешности самого тестового пакета LinX: от прохода к проходу значение «гигафлопсов» колеблется в этих диапазонах).

Читайте также:  Ошибка 31-4302 в Геншин Импакт

Стоит заметить, что одноканальный доступ не позволяет раскрыть весь потенциал стендового процессора – при двухканальном режиме работы ИКП производительность CPU поднимается на 55%. То есть у LinX есть высокая зависимость от ПСП, но при этом ECC не оказывает никакого влияния на производительность ЦП.

WPrime

Несмотря на многопоточность теста, влияния ПСП на скорость вычислений не наблюдается – если уж wPrime не видит разницы между ПСП в 12. 8 и 25. 6 Гбайт/с, то что говорить о памяти с коррекцией ошибок и с чуть большей латентностью?

AIDA64 Extreme

Начнем с основных тестов.

В целом, все повторяется – процессору без разницы с каким типом памяти работать. Зато зависимость от ПСП есть в тесте CPU PhotoWorxx – здесь двухканальный доступ повышает производительность ЦП практически вдвое относительно одноканального. При этом, несмотря на такую сильную зависимость от ПСП на ECC-память реакции нет.

GPGPU-вычисления все больше и больше набирают обороты и здесь (AIDA64 GPGPU Benchmark) будет интересно посмотреть на влияние ECC-памяти на них.

А разницы нет. Более того стоит заметить, что видеоядро также не показывает зависимости от ПСП. То есть при графической нагрузке видеокарта показывает зависимость от ПСП и при переходе с одноканального доступа на двухканальный поднимает свою производительность на 15-30%, а при вычислительной ей хватает и одного канала памяти. По крайней мере, это касается P4600.

Выполнение GPGPU-теста на процессоре не показывает влияния типа памяти на его производительность, с другой стороны, и ПСП также не влияет на нее в данном тесте.

Заключение

Подводя итог, необходимо сначала привести цифры: среднеарифметическая разница по всем тестам для одноканального режима составила 0. 29% в пользу обычной памяти, а для двухканального – 0. 06% в пользу ECC-памяти. Таким образом, тип памяти не влияет на производительность как процессора, так и встроенного графического ядра – причем даже в тех тестах, где наблюдается сильная зависимость от ПСП. По крайней мере, данное утверждение верно для ECC-памяти и двухканального контроллера Haswell.

Суммируя все вышесказанное, существенным отличием ECC-памяти от обычной является только ее стоимость. В абсолютных цифрах планка на 8 Гбайт с коррекцией ошибок стоит на 30-35% дороже относительно ОЗУ со схожими характеристиками. Но этот вопрос следует рассматривать в разрезе общей стоимости рабочей станции – тогда покупка памяти с коррекцией ошибок лишь незначительно повышает ее общую стоимость – не более 5%.

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

Как код коррекции ошибок в памяти исправляет многочисленные битовые ошибки

Что такое память ECC?

Для серверов в компаниях и центрах обработки данных крайне важно минимизировать
ошибки в данных, и это является целью памяти ECC (Error Correcting Code). ECC – это метод обнаружения, а затем исправления однобитовых ошибок памяти.

Существует два типа однобитовых ошибок памяти: жесткие ошибки и программные ошибки. Серьезные ошибки вызваны физическими факторами, такими как чрезмерное изменение
температуры, напряжение напряжения или физическое напряжение, воздействующее на биты
памяти. Мягкие ошибки возникают, когда данные записываются или считываются не так, как
первоначально предполагалось, например, изменения напряжения на материнской плате,
космические лучи или радиоактивный распад, что может привести к переворачиванию битов в
памяти. Поскольку биты сохраняют свое запрограммированное значение в форме
электрического заряда, помехи этого типа могут изменять заряд бита памяти, вызывая ошибку. На серверах существует множество мест, где могут возникать ошибки: на накопителе, в ядре
ЦП, через сетевое соединение и в различных типах памяти.

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

Вот как работает память ECC. В вычислениях данные принимаются и передаются через биты –
наименьшую единицу данных в компьютере – которые выражаются в двоичном коде с
использованием единицы или нуля. Когда биты группируются вместе, они создают двоичный код, или «слова», которые
представляют собой единицы данных, которые адресуются и перемещаются между памятью и
процессором. Например, 8-битный двоичный код – 10110001
В памяти ECC есть дополнительный бит ECC, который известен как бит четности. Этот
дополнительный бит четности заставляет двоичный код считывать 101100010, где последний
ноль является битом четности и используется для идентификации ошибок памяти. Если сумма
всех 1 в строке кода является четным числом (не включая бит четности), то строка кода
называется четной четностью. Безошибочный код всегда имеет четную четность. Однако
четность имеет два ограничения: она способна обнаруживать только нечетные числа ошибок
(1, 3, 5 и т. ) И позволяет передавать четные числа ошибок (2, 4, 6 и т. Четность также не
может исправлять ошибки – она только способна их обнаруживать. Вот где ECC память вступает
в игру. Память ECC использует биты четности для хранения зашифрованного кода при записи данных
в память, и код ECC сохраняется одновременно. Когда данные считываются, сохраненный код
ECC сравнивается с кодом ECC, который был сгенерирован во время чтения данных. Если
прочитанный код не соответствует сохраненному коду, он дешифруется битами четности,
чтобы определить, какой бит был ошибочным, и этот бит немедленно исправляется. Таблицы
синдрома – это математический способ определения этих битовых ошибок и их исправления. Когда данные обрабатываются, память ECC постоянно сканирует код по специальному
алгоритму для обнаружения и исправления ошибок в однобитовой памяти. В критически важных отраслях, таких как финансовый сектор, память ECC может иметь
огромное значение. Представьте, что вы редактируете конфиденциальную информацию о
клиенте, а затем обмениваетесь этими данными с другими финансовыми учреждениями. Когда вы отправляете данные, скажем, двоичная цифра переворачивается из-за электрических
помех. Двоичный код, который получит другое финансовое учреждение, может быть 100100011,
который передает информацию, отличную от той, которую вы изначально предполагали, – это
ошибка. Третья цифра была переключена с 1 на 0 из-за электрических помех. Таким образом,
сумма первых восьми битов теперь составляет 3, что даже не является четностью, а это
означает, что отправленные вами конфиденциальные данные могут быть повреждены (или
ваша система подвержена риску сбоя системы). Однако, если установлена память ECC, она
сможет обнаружить ошибку и исправить ее, изменив третью двоичную цифру обратно на 1
(исходный код). Обнаруживая и исправляя однобитовые ошибки, память сервера ECC помогает сохранить
целостность ваших данных, предотвратить повреждение данных и предотвратить сбои и сбои
системы.

Читайте также:  Ea код ошибки 721 не удалось подключиться к серверам battlefront 2

Оглавление

  • Вступление
  • Коррекция ошибок
  • Финансовая сторона
  • Тестовый стенд
  • Методика тестирования
  • Результаты тестирования
  • Заключение

Вступление

На сегодняшний день на просторах Рунета можно встретить открытые темы на форумах с вопросами – стоит ли брать рабочую станцию с ECC-памятью или можно обойтись обычной? В данных ветках можно прочесть множество противоречивых утверждений, и часть из них говорит о том, что коррекция ошибок сильно замедляет память, а следовательно и ЦП. Но мало кто это проверял на деле на современных процессорах.

Сегодня мы разберемся в этом вопросе и сравним производительность серверного процессора с обоими типами памяти. Но для начала небольшой экскурс.

Коррекция ошибок

Для чего необходима коррекция? И почему в работе памяти возникают ошибки? Перед ответом на эти вопросы следует разделить ошибки на два типа:

  • Аппаратные ошибки;
  • Случайные ошибки.

Причиной появления аппаратных ошибок является дефектная микросхема DRAM, а случайные ошибки возникают под воздействием излучения, альфа-частиц, элементарных частиц и прочего. Соответственно, первые в принципе неисправимы – если чип дефектный, то поможет только его замена; а вот вторые могут быть исправлены.

Почему же так необходима коррекция ошибок в рабочих станциях и серверах? Однобитовая ошибка в 64-битном слове меняет содержимое ячейки памяти, а в конечном итоге на жесткий диск может быть записано другое число, другие данные, при этом компьютер не зафиксирует эту подмену. А изменение бита в оперативной памяти может вызвать сбой программы, что для рабочей станции и сервера недопустимо.

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

В свое время было предложено много различных способов решения данной проблемы, но на сегодняшний день наибольшее распространение получил метод коррекции ошибок или ECC (Error-Correcting Code). Данный метод позволяет автоматически исправлять однобитовые ошибки в 64-битном слове – SEC (Single Error Correction) и детектировать двухбитовые – DED (Double Error Detection).

Физическая реализация ECC заключается в размещении дополнительной микросхемы памяти на модуле ОЗУ – соответственно, при одностороннем дизайне модуля памяти вместо восьми чипов располагается девять, а при двустороннем вместо шестнадцати – восемнадцать. Таким образом, ширина модуля становится не 64 бита, а 72 бита.

Метод коррекции ошибок работает следующим образом: при записи 64 бит данных в ячейку памяти происходит подсчет контрольной суммы, составляющей 8 бит. Когда процессор обращается к этим данным и производит считывание, проводится повторный подсчет контрольной суммы и сравнение с исходной. Если суммы не совпадают – произошла ошибка. Если она однобитовая, то неправильный бит исправляется автоматически, если двухбитовая – детектируется и сообщается ОС.

Финансовая сторона

Прежде чем приступить к тестированию, необходимо затронуть финансовый вопрос.

Стоимость обычного модуля памяти DDR3-1600 с напряжением 1. 35 В и объемом 8 Гбайт составляет около 3600 рублей, а с коррекцией ошибок – 4800 рублей. На первый взгляд ECC-память выходит на 30-35% дороже, что, в целом, не позволяет их сравнивать в силу существенно большей стоимости последней. Но почему же тогда такой вопрос возникает при сборке рабочей станции? Все просто – необходимо смотреть на данный вопрос шире, а именно – смотреть на общую стоимость рабочей станции.

Ценник однопроцессорной станции на базе четырехъядерного восьмипоточного Xeon (настольные процессоры серий i5 и i7 не поддерживают ECC-память) с 32 Гбайтами памяти, материнской платы с чипсетом C222/С224/С226 (десктопные наборы логики Z87/Z97 и другие также не поддерживают память с коррекцией ошибок) будет превышать 70 000 рублей (при условии, что устанавливаются серверные SSD с повышенным ресурсом). А если включить в эту стоимость и дискретную видеокарту, и прочие сопутствующие компоненты, например, ИБП, то ценник из пятизначного превратится в шестиизначный, перевалив планку в 100 000 рублей.

Покупка 32 Гбайт памяти с коррекцией ошибок потребует дополнительных 4-6 тысяч рублей, что по отношению к общей стоимости рабочей станции не превышает 5%, то есть не является критичным. Также переход от десктопного к серверному железу предоставит и другие преимущества, например: интегрированные графические карты P4600 в процессорах Intel Xeon E3-1200 третьего поколения получили оптимизированные драйверы, которые должны повышать производительность в профессиональных приложениях, например, в CAD; поддержка технологии Intel VT-d, которая позволяет пробрасывать устройства в виртуальную среду, например, видеокарты; прочие серверные технологии – Intel AMT или IPMI, WatchDog и другие, которые также могут оказаться полезными.

Тестовый стенд

Для данного обзора использовалась следующая конфигурация:

  • Материнская плата: Supermicro X10SAE (Intel C226, LGA 1150);
  • Процессор: Xeon E3-1245V3 (Turbo Boost – off, EIST – off, HT – on);
  • Оперативная память:
  • 2x Kingston DDR3-1600 ECC 8 Гбайт (KVR16LE11/8 CL11, 1.35 В);
  • 2x Kingston DDR3-1600 8 Гбайт (KVR16LN11/8 CL11, 1.35 В);
  • ОС: Windows 8.1 Pro 64-bit.

Методика тестирования

В рамках тестирования были произведены замеры производительности как при одноканальном режиме работы ИКП, так и при двухканальном. Суммарный объем ОЗУ составил 8 (один модуль) и 16 Гбайт (два модуля) соответственно.

  • 3DMark 2006 1.2;
  • 7Zip 9.20;
  • AIDA64 Extreme 5.20.3400;
  • Cinebench R15;
  • CrystalMark 2004R3;
Читайте также:  НЕ СКАЧИВАЕТСЯ ВАЙБЕР КОД ОШИБКИ 403

Результаты тестирования

Перед тем, как приступить к тестированию, проведем замер пропускной способности памяти и латентности.

При изучении результатов можно заключить, что производительность ECC- и non-ECC- памяти находится на одном и том же уровне в рамках погрешности.

Если в предыдущем тесте от замера к замеру выигрывал то один, то другой тип памяти, то при замере латентности ECC-память постоянно показывает большие задержки. Но разница несущественна – всего лишь 1 нс.

Таким образом, замер ПС и латентности памяти не показал особых различий между ECC- и non-ECC-памятью. Посмотрим, повторится ли это в последующих тестах.

3DMark

но разницы нет – что ECC, что non-ECC. Ни процессор, ни интегрированное ядро никак не реагируют на замену обычной памяти на DDR с коррекцией ошибок – результаты одинаковы в рамках погрешности. Среднеарифметическая разница составила 0. 02% в пользу ECC-памяти для одноканального режима и 1. 6% для двухканального режима.

При этом нельзя сказать, что встроенная видеокарта P4600 не зависит от скорости ОЗУ – при одноканальном доступе общий результат почти на 30% ниже, чем при двухканальном. Другими словами, скорость ОЗУ критична для графического ядра, но сами по себе «ECC-версии» не влияют ни на скорость ОЗУ, ни на видеокарту.

7Zip

Архиваторы, как известно, чувствительны к памяти, поэтому, возможно, здесь получится зафиксировать влияние типа памяти на производительность.

Ситуация с архивацией неоднозначная: с одной стороны – в одноканальном режиме (как при распаковке, так и при сжатии) ECC-память уверенно оказывается медленнее на 2%; с другой – в двухканальном режиме при сжатии ECC-память уверенно быстрее, а при распаковке – медленнее, а среднее арифметическое – быстрее на 0. 65%.

Скорее всего, причина в следующем – пропускной способности памяти при одноканальном доступе процессору явно недостаточно, и поэтому чуть большая латентность ECC-памяти сказывается на производительности; а при двухканальном доступе ПСП полностью покрывает нужды CPU и поэтому чуть большая латентность памяти с коррекцией ошибок не сказывается на производительности. В любом случае зафиксировать существенного влияния на скорость архивации не получилось.

Cinebench

Тестовый пакет Cinebench содержит подтест как процессора, так и видеокарты.

Но ни первый, ни вторая никак не отреагировали на ECC-память.

Зато налицо явная зависимость видеокарты от ПСП – при одноканальном доступе результат в OpenGL оказался на 25% ниже, чем при двухканальном. Вспоминая результаты 3DMark и смотря на нынешние, можно заключить, что производительность интегрированной видеокарты хоть и зависит от ПСП, но ECC-память не оказывает на нее негативного влияния.

Стоит ли использовать ЕСС память

Объективных причин для использования такой ОЗУ на домашнем ПК нет.

Несмотря на то, что земной диск медленно дрейфует по Космическому океану, покоясь на спинах трех китов, вероятность искажения данных под воздействием вредоносных лучей, на самом-то деле крайне мала. При этом самое страшное, что может случиться при таких неполадках – вылет операционной системы в синий экран.

Впрочем, это может быть действительно страшно – например, в случае, если вы в течение пары часов монтировали видеоролик, забывая сохраняться в процессе, или же у вас последний и решительный бой, от которого зависит судьба клана, в какой-нибудь ММОРПГ.

Такая память работает медленнее обычной – в среднем, на 2-3%, так как для проверки контрольных сумм необходим один дополнительный такт контроллера. Такой режим работы требует больше логических ресурсов.

Как уже сказано выше, в основном такая память почти всегда регистровая (Registered), то есть имеет дополнительный регистр для считывания и хранения двоичных кодов. Существуют модули ECC памяти без регистров (UDIMM), которые можно использовать в домашних ПК.

Однако учтите, что такое удовольствие обойдется дороже, так как цена на такие модули ОЗУ обычно выше. Кроме того, требуется наличие материнской платы, чипсета и процессора (к слову, такие модели есть и у Intel, и у AMD), поддерживающих ЕСС память. Стоят они внезапно тоже, как правило, дороже.

И если вы решили проапгрейдить комп для использования ЕСС памяти, проверьте спецификации упомянутых выше компонентов. Если в описании написано что нет поддержки такого режима, деталь придется менять на более подходящую, что значит дополнительные расходы.

Не исключено, что придется менять и мать, и «камень», и планки оперативки. При сборке нового компьютера несколько проще: можно сразу купить соответствующие компоненты. Однако, на мой взгляд, это уже лишнее – страховка от мнимых сбоев не стоит потери быстродействия.

Также советую на эту тему ознакомиться с публикациями «Влияние тактовой частоты оперативной памяти в компьютере»(уже на блоге) и «Тайминги и частота оперативной памяти: кто важнее и влиятельней?». Буду признателен всем, кто расшарит эту статью в социальных сетях. До завтра!

На что способна ECC-память и как это работает?

Память с коррекцией ошибок может определить и исправить 1 бит изменённых данных в каждом машинном слове. Что это значит? Если данные между записью и чтением были по каким-либо причинам изменены (то есть возникла ошибка), то ECC ОЗУ скорректирует значение до верного. Подобная функциональность требует поддержки со стороны контроллера оперативной памяти. Эта поддержка может быть организована со стороны чипсета материнской платы, встроенного контроллера ОЗУ в современные процессоры.

Как код коррекции ошибок в памяти исправляет многочисленные битовые ошибки

Алгоритм исправления ошибок основан на коде Хэмминга, но для исправления более одной ошибки применяются прочие алгоритмы. На практике используются модули памяти, где для каждых 8 микросхем памяти добавляется ещё по одной микросхеме, хранящей ECC-коды (8 бит на каждые 64 бита основной памяти).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *