Как определить ecc память

Обновлено: 02.07.2024

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

реклама

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

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

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

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

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

MSI RTX 3070 сливают дешевле любой другой, это за копейки Дешевая 3070 Gigabyte Gaming - успей пока не началось

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

В свое время было предложено много различных способов решения данной проблемы, но на сегодняшний день наибольшее распространение получил метод коррекции ошибок или 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 и другие, которые также могут оказаться полезными.

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

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

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

  • Материнская плата: 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 В);

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

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

    • 3DMark 2006 1.2;
    • 7Zip 9.20;
    • AIDA64 Extreme 5.20.3400;
    • Cinebench R15;
    • CrystalMark 2004R3;
    • Fritz 4.20;
    • LinX 0.6.5;
    • wPrime 2.10.

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

    Тест памяти

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

    550x378 31 KB. Big one: 1019x701 26 KB

    реклама

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

    550x147 18 KB. Big one: 1017x273 11 KB

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

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

    3DMark

    реклама

    Тестовый пакет 3DMark содержит подтесты как для процессора, так и для графической карты. Здесь и кроется самое интересное – давно известно, что встроенному видеоядру не хватает существующей ПСП в 25.6 Гбайт/с, поэтому именно в графических подтестах можно выявить негативное влияние коррекции ошибок, если оно вообще есть,…

    550x880 50 KB. Big one: 1037x1661 64 KB

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

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

    реклама

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

    550x293 23 KB. Big one: 1027x548 20 KB

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

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

    Cinebench

    реклама

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

    550x293 20 KB. Big one: 1026x547 20 KB

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

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

    Мне нужно заменить память в моей системе, и я не совсем уверен, как определить, является ли память ECC или Non-ECC. Как я могу это определить?

    для Windows 7 Вы можете запустить следующую команду в командной строке:

    wmic MEMORYCHIP get DataWidth,TotalWidth

    если значение TotalWidth больше, чем значение DataWidth у вас есть память ECC.

    лучший способ определить это с помощью следующей команды:

    wmic memphysical get memoryerrorcorrection

    возвращает код по типу установленной памяти:

    для FreeBSD (и, вероятно, большинства unix-подобных платформ):

    Total Width: 72 bits часть вы ищете.

    более подробную информацию о том, как работает код исправления ошибок можно найти в этом простом посте где Я показал, как можно использовать дополнительные биты для обнаружения и исправления ошибок. Это почему мы имеем DIMMs которые 64 бита широкого (8 байт данных широких) или 72 бита широкого (64 данные плюс экстренные биты для того чтобы хранить резервная информация).

    Если вы посмотрите на модуль физической памяти, ECC обычно будет иметь 9 (иногда больше) фишки. Не-ECC будет иметь только 8 (или редко, 8x2=16).

    ECC vs non-ECC

    (Изображение предоставлено Puget Systems)

    на Mac вы можете посмотреть в Сведения О Системе применение для того чтобы определить состояние ECC компьютера и каждого модуля RAM.

    выберите памяти на правой панели, в разделе "Оборудование".

    затем с выбранным списком "слоты памяти". Окно ниже должно показать статус ECC.

    см. рисунок ниже:

    System Information App window

    также как FYI каждый слот ОЗУ будет иметь статус поле если в модуле оперативной памяти обнаружена проблема, статус будет отличаться от "OK"

    Оперативная память (ОЗУ) — важнейший компонент компьютера. В ней выполняются запущенные приложения и обрабатываются данные собственно операционной системы или какие-либо другие данные. Обычно она представляет собой отдельные устанавливаемые на материнскую плату модули. Они могут быть разного формата (DIMM или SO-DIMM), могут иметь различный объём, иметь различное предназначение.

    Существует несколько видов модулей. В этой статье мы рассмотрим ECC-память, узнаем чем она отличается от обычной (non-ECC), а также какую именно память поддерживает ваша материнская плата. Этот вопрос актуален, так как ECC-память зачастую значительно дешевле обычной, что делает её покупку более выгодной. Однако, ECC-память требует совместимого с ней оборудования (материнской платы и процессора), это тоже надо иметь ввиду.

    Поддержка ECC памяти материнской платой

    Для начала хорошо бы узнать, что такое ECC-память. Это оперативная память с автоматическим обнаружением и коррекцией спонтанно возникающих ошибок. Их причиной могут быть электромагнитные помехи или что-либо другое. ECC-память может быть также и серверной (в названии появляется приставка Registered). Модули такой памяти будут работать только на серверных материнских платах, поддерживающих ECC Registered.

    Практически во всех случаях наличие поддержки ECC-памяти указывается производителем в спецификациях материнской платы. Зайдите на сайт производителя платы для того, чтобы посмотреть эти спецификации. Сделать это можно в посвящённом материнским платам разделе на сайте AMD (в данном случае, естественно, только для чипсетов AMD):


    Указав название платы в строке поиска, перейдите на сайт производителя по ссылке:


    В спецификациях платы ищите пункт, содержащий информацию о поддержке памяти. Там и будет сказано о наличии или отсутствии поддержки ECC-памяти. Для данной статьи в качестве примера была взята материнская плата ASRock B450 Pro4:


    Однако, работоспособность ECC-памяти зависит не только от материнской платы, но и от установленного на неё процессора. Нужно чтобы и материнская плата, и процессор имели поддержку ECC-памяти одинакового типа (Registered или не Registered). Без этого ничего работать не будет. Также стоит отметить, что модули non-ECC (обычной) и ECC-памяти несовместимы между собой.

    Выводы

    Теперь вы знаете как узнать поддерживает ли материнская плата ECC память. При выборе оперативной памяти, материнской платы и процессора нужно быть внимательным. Если вы захотите использовать ECC-память, убедитесь, что ваши материнская плата и процессор поддерживают такой вид памяти. Информация об этом имеется в документации к этим комплектующим, а также на сайте производителя. Узнайте предназначение приобретаемых модулей памяти. Если они создавались для использования в сервере (имеют приставку Registered), проверьте совместимость этого вида памяти с вашими материнской платой и процессором.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Память с коррекцией ошибок (Error correction code - ECC) – это тип памяти, использующийся в рабочих станциях и серверах. В первую очередь она предназначена для бизнеса и профессиональных задач где критически важна работа с данными. Такая память позволяет исправлять ошибки в памяти и бороться с повреждением данных. Также предполагается, что она может сократить количество сбоев в работе сервера или рабочей станции. Все это позволяет использовать ECC RAM в профессиональных сферах и бизнесе, включая финансовые институты и облачные вычисления, где ошибки с данными и простои недопустимы.

    Память ECC против обычной памяти

    Физически ECC память отличается от обычной не ECC памяти (та, что используется в потребительских компьютерах и ноутбуках) наличием 9 чипов памяти с одной стороны вместо 8 (чипы памяти используются для хранения данных, которые при вызове отправляются в ЦПУ). Дополнительный чип памяти как раз используется для обнаружения и исправления ошибок в других 8 чипах.

    Какое оборудование поддерживает ECC память?

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

    И опять же ECC память в первую очередь предназначена для серверов и рабочих станций, поэтому для ее работы вам потребуется производительный процессор. Из модельного ряда Intel только серверная линейка Xeon предназначена для работы с ECC памятью и компания таким образом пытается отделить потребительские продукты от профессиональных. С другой стороны, компания AMD предлагает для энтузиастов многопоточные чипы Threadripper, которые поддерживают работу с таким типом памяти.

    Недостатки ECC памяти

    Возможно это покажется странным, но ECC память несколько медленней обычной памяти из-за того, что для проверки данных на ошибки требуется время. Вместе с тем, в 2014 году компания Puget провела исследования, согласно которым ECC память оказалась на 0,25 процента медленнее обычной памяти, а регистровая ECC память на 0,44 процента медленней. На наш взгляд данное исследование больше доказывает, что различия в производительности весьма незначительны.

    Как работает ECC память?

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

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

    Большинство вычислительных систем перемещают данные большими блоками по 64 бита (они называются «машинным словом»). Вместо генерации одного дополнительного бита четности для каждых восьми битов данных, ECC генерирует семь дополнительных битов на 64 бита данных. Система выполняет сложный математический алгоритм на дополнительных семи битах данных, чтобы гарантировать, что остальные 64 бита являются правильными. В случае, если один бит неверен (однобитовая ошибка), алгоритм ECC может восстановить данные. Однако при более крупных ошибках (два или более бит) такой алгоритм может лишь уведомить систему.

    Регистровая память

    ECC память не всегда является регистровой, но с другой стороны любая регистровая память всегда является ECC памятью.

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

    Читайте также: