Разное

Ecc памяти: что это и как работает?

Содержание

что это и как работает?

Опубликовано 14.07.2019 автор — 0 комментариев

Всем привет! Тема сегодняшней публикации – поддержка ECC оперативной памяти: что это такое, как работает данная функция, зависит ли от процессора ее использование на ПК.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С уважением, автор блога Андрей Андреев.

Следует ли покупать память ECC? / Хабр

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

  1. В Google не использовали ECC, когда собирали свои серверы в 1999 году.
  2. Большинство ошибок ОЗУ — это ошибки систематические, а не случайные.
  3. Ошибки ОЗУ возникают редко, потому что аппаратное обеспечение улучшилось.
  4. Если бы память ECC имела на самом деле важное значение, то она использовались бы везде, а не только в серверах. Плата за такого рода опциональный материал явно слишком сомнительна.

Давайте рассмотрим эти аргументы один за другим:

1. В Google не использовали ECC в 1999 году

Если вы делаете нечто только из-за того, что когда-то это сделал Google, то попробуйте:

A. Поместите свои серверы в транспортные контейнеры.

Сегодня все ещё пишут статьи о том, что это — отличная идея, хотя Google всего лишь провёл эксперимент, который был расценен как неудачный. Оказывается, даже эксперименты Google не всегда удаются. Фактически, их известное пристрастие к «прорывным проектам» («луншоты») означает, что у них имеется больше неудачных экспериментов, чем у большинства компаний. По-моему, для них это существенное конкурентное преимущество. Не стоит делать это преимущество больше, чем оно есть, слепо копируя провалившиеся эксперименты.

B. Вызывайте пожары в своих собственных центрах обработки данных.

Часть поста Этвуда обсуждает, насколько удивительными были эти серверы:

Некоторые могут взглянуть на эти ранние серверы Google и увидеть непрофессионализм в отношении опасности пожара. Не я. Я вижу здесь дальновидное понимание того, как недорогое стандартное оборудование будет формировать современный интернет.

Последняя часть высказанного — это правда. Но и в первой части есть доля правды. Когда Google начал разрабатывать свои собственные платы, одно их поколение имело проблему «роста» (1), вызвавшую ненулевое число возгораний.

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

C. Создавайте серверы, которые травмируют ваших сотрудников

Острые грани одного из поколений серверов Google заработали им репутацию сделанных из «бритвенных лезвий и ненависти».

D. Создавайте свою погоду в ваших центрах обработки данных

После разговоров с сотрудниками многих крупных технологических компаний создаётся впечатление, что в большинстве компаний был такой климат-контроль, что в их центрах обработки данных образовывались облака или туман. Можно было бы назвать это расчётливым и коварным планом Google по воспроизведению сиэтловской погоды, чтобы переманивать сотрудников Microsoft. Как вариант, это мог быть план создания в буквальном смысле «облачных вычислений». А может и нет.

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

Когда Google использовал серверы без ECC в 1999 году, на них проявился ряд симптомов, которые, как в конце концов выяснилось, были вызваны повреждением памяти. В том числе индекс поиска, который возвращал фактически случайные результаты в запросы. Реальный режим сбоя здесь поучителен. Я часто слышу, что на этих машинах можно игнорировать ECC, потому что ошибки в отдельных результатах являются допустимыми. Но даже если вы считаете для себя случайные ошибки допустимыми, их игнорирование означает, что существует опасность полного повреждения данных, если только не проводить тщательный анализ с целью убедиться, что одна ошибка может лишь незначительно исказить один результат.

В исследованиях, проведённых на файловых системах, неоднократно было показано, что, несмотря на героические попытки создания систем, устойчивых к одной ошибке, сделать это крайне сложно. По существу, каждая сильно тестируемая файловая система может иметь серьёзный сбой из-за единственной ошибки (см. результаты работы исследовательской группы Андреа и Ремзи, Висконсин, если вам интересно это). Я не собираюсь нападать на разработчиков файловых систем. Они лучше разбираются в таком анализе, чем 99,9% программистов. Просто неоднократно уже было показано, что эта проблема настолько трудная, что люди не могут достаточно обоснованно обсуждать её, и автоматизированное инструментальное средство для такого анализа ещё далеко от процесса простого нажатия кнопки. В своём справочнике по компьютерной обработке складских данных Google обсуждает обнаружение и исправление ошибок, и память ECC рассматривается как самый правильный вариант, когда очевидно, что необходимо использовать исправление ошибок аппаратного обеспечения (2).

Google имеет отличную инфраструктуру. Из того, что я слышал об инфраструктуре в других крупных инфотехнологических компаниях, Google представляется лучшим в мире. Но это не значит, что следует копировать всё, что они делают. Даже если рассматривать только их хорошие идеи, для большинства компаний нет смысла копировать их. Они создали замену планировщику перехвата работ Linux, который использует как аппаратную информацию времени выполнения, так и статические трассировки, чтобы позволить им использовать преимущества нового оборудования в серверных процессорах Intel, что позволяет динамически разбивать кэш между ядрами. Если использовать это на всём их оборудовании, то Google сэкономит за неделю больше денег, чем компания Stack Exchange потратила на все свои машины за всю свою историю. Означает ли это, что вы должны скопировать Google? Нет, если на вас уже не свалилась манна небесная, например, в виде того, что ваша основная инфраструктура написана на высокооптимизированном C++, а не на Java или (не дай бог) Ruby. И дело в том, что для подавляющего большинства компаний написание программ на языке, который влечёт 20-кратное снижение производительности, — совершенно разумное решение.

2. Большинство ошибок ОЗУ — это систематические ошибки

Аргументация против ECC воспроизводит следующий раздел исследования ошибок DRAM (выделение дано Джеффом):

Наше исследование имеет несколько основных результатов. Во-первых, мы обнаружили, что приблизительно 70% сбоев DRAM является повторяющимися (например, постоянными) сбоями, тогда как только 30% является неустойчивыми (перемежающимися) сбоями. Во-вторых, мы обнаружили, что большие многобитовые сбои, такие как сбои, которые затрагивают всю строку, столбец или блок, составляют более 40% всех сбоев DRAM. В-третьих, мы обнаружили, что почти 5% отказов DRAM влияют на схемы на уровне платы, такие как линии данных (DQ) или стробирования (DQS). Наконец, мы обнаружили, что функция Chipkill уменьшила частоту отказов системы, вызываемих сбоями DRAM, в 36 раз.

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

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

Итак, как часто вы собираетесь запускать memtest на своих машинах в попытках поймать эти системные ошибки и сколько потерь данных вы готовы пережить? Одно из ключевых применений ECC состоит не в том, чтобы исправить ошибки, а в том, чтобы сигнализировать об ошибках, благодаря чему оборудование может быть заменено до того, как произойдёт «silent corruption» («скрытое повреждение данных»). Кто согласится закрывать всё на машине каждый день, чтобы запустить memtest? Это было бы намного дороже, чем просто купить ECC-память. И даже если бы вы смогли убедить гонять тестирование памяти, memtest не обнаружил бы столько ошибок, сколько сможет найти ECC.

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

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

Во всяком случае, после завершения анализа мы обнаружили, что memtest не мог обнаружить какие-либо проблемы, но замена ОЗУ на плохих машинах привела к уменьшению частоты ошибок на один-два порядка. У большинства сервисов нет такого рода контрольных сумм, которые были у нас; эти сервисы будут просто молча записывать повреждённые данные в постоянное хранилище и не увидят проблему, пока клиент не начнёт жаловаться.

3. Благодаря развитию аппаратного обеспечения ошибки стали очень редкими

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

Исследование 2012 года, которое цитирует Этвуд, имеет этот график по исправленным ошибкам (подмножество всех ошибок) на десяти случайно выбранных отказавших узлах (6% узлов имели по крайней мере один отказ):

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

Речь идёт о количестве ошибок от 10 до 10 тыс. для типичного узла, у которого происходит отказ, и это — тщательно отобранное исследование с поста, утверждающего, что вам не нужна память ECC. Обратите внимание, что здесь рассматриваются узлы с ОЗУ только 16 ГБ, что на порядок меньше, чем у современных серверов, и что исследование было проведено на более старом техпроцессе, который был менее уязвим для шума, чем нынешний.

Для тех, кто привык иметь дело с проблемами надёжности и просто хочет знать значение FIT (единица измерения интенсивности отказов): исследование показывает, что значение FIT составляет 0,057-0,071 сбоев на один мегабит (что — в противоположность утверждению Этвуда — не является поразительно низким числом).

Если взять самое оптимистичное значение FIT, равное 0,057, и провести расчёт для сервера не с самой большой оперативной памятью (здесь я использую 128 ГБ, поскольку серверы, которые я вижу в настоящее время, обычно имеют ОЗУ от 128 до 1,5 ТБ), то получим ожидаемое значение 0,057 * 1 000 * 1 000 * 8 760 /1 000 000 000 = 0,5 сбоя в год на каждый сервер. Обратите внимание, что это относится к сбоям, а не к ошибкам. Из графика выше видно, что сбой может легко вызвать сотни или тысячи ошибок в месяц. Ещё нужно отметить, что есть несколько узлов, у которых нет ошибок в начале исследования, но ошибки появляются позже.

Компания Sun/Oracle серьёзно столкнулась с этим несколько десятилетий назад. Транзисторы и конденсаторы DRAM становились всё меньше, как это происходит и сейчас, а использование памяти и кэши росли, так же как и в настоящее время. Столкнувшись, с одной стороны, со всё уменьшающимся транзистором, который был менее стойким к временному нарушению и более сложным в изготовлении, а, с другой стороны, с растущим встроенным кэшем, подавляющее большинство поставщиков серверов ввело ECC в свои кэши. Компания Sun решила сэкономить несколько долларов и не использовать ECC. Прямым результатом было то, что ряд клиентов Sun сообщил о периодических повреждении данных. В результате затем Sun несколько лет занималась разработкой новой архитектуры с кэшем на ECC и заставляла клиентов подписывать NDA для замены чипов.

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

Ещё одно замечание: когда вы платите за ECC, вы платите не просто за память ECC — вы платите за детали (процессоры, платы), которые являются более качественными. Такое легко можно видеть с частотой отказа дисков, и я слышал, что многие замечают такое в своих личных наблюдениях.

Если приводить общедоступные исследования: насколько помню, группа Андреа и Ремзи несколько лет назад выпустила документ SIGMETRICS, который показал, что вероятность сбоя при чтении у диска SATA в 4 раза выше, чем у диска SCSI, а вероятность скрытого повреждения данных — в 10 раз выше. Это соотношение сохранялось даже при использовании дисков одного изготовителя. Нет особой причины думать, что интерфейс SCSI должен быть более надёжным, чем интерфейс SATA, но речь идёт не об интерфейсе. Речь идёт о покупке высоконадёжных серверных компонентов по сравнению с клиентскими. Возможно, конкретно надёжность диска вас не интересует, потому что у вас всё на контрольных суммах, и повреждения легко находятся, но есть некоторые виды нарушений, которые обнаружить труднее.

4. Если бы память ECC имела, действительно, важное значение, то её использовали бы везде, а не только в серверах.

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

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

Одной из немногих областей, где нет каких-либо жизнеспособных конкурентов, является производство центральных процессоров и видеоускорителей. К счастью для крупных поставщиков, видеоускорители им обычно не нужны, нужны процессоры, много — уже давно так сложилось. Было несколько попыток поставщиков процессоров войти на серверный рынок, но всегда каждая такая попытка с самого начала имела фатальные недостатки, делавшие очевидной её обречённость (а это часто проекты, требующие не менее 5 лет, т.е. необходимо было потратить очень много времени без уверенности в успехе).

Усилия Qualcomm получили много шума, но, когда я общаюсь с моими контактами в Qualcomm, они все говорят мне, что сделанный в данный момент чип предназначен, по существу, для пробы. Так получилось, потому что компании Qualcomm нужно было узнать, как сделать серверный чип, у всех тех специалистов, которых она переманила из IBM, и что следующий чип будет первым, который, можно надеяться, станет конкурентоспособным. Я возлагаю большие надежды на Qualcomm, а также на усилия ARM по созданию хороших серверных компонентов, но эти усилия пока не дают желаемого результата.

Почти полная непригодность текущих вариантов ARM (и POWER) (не считая гипотетических вариантов впечатляющего чипа ARM от Apple) для большинства рабочих нагрузок серверов с точки зрения производительности на доллар совокупной стоимости владения (TCO) — эта тема немного в стороне, поэтому я оставлю её для другой публикации. Но дело в том, что Intel имеет такую позицию на рынке, что может заставить людей платить сверху за серверные функции. И Intel это делает. Кроме того, некоторые функции действительно важнее для серверов, чем для мобильных устройств с несколькими гигабайтами оперативной памяти и энергетическим бюджетом в несколько ватт, мобильных устройств, от которых всё равно ожидают периодические вылеты и перезагрузки.

Заключение

Следует ли покупать ECC-ОЗУ? Это зависит от многого. Для серверов это, вероятно, хороший вариант, учитывая затраты. Хотя на самом деле трудно провести анализ затрат/выгод, потому что довольно сложно определить ущерб от скрытого повреждения данных или затраты на риск потерять полгода времени разработчика на отслеживание перемежающихся сбоев, только чтобы обнаружить, что они вызваны использованием памяти без ECC.

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

Спасибо Прабхакару Рагде, Тому Мерфи, Джею Вайскопфу, Лии Хансон, Джо Уайлдеру и Ральфу Кордерою за обсуждение / комментарии / исправления. Кроме того, спасибо (или, может быть, не-спасибо) Лии за то, что убедила меня написать этот устный экспромт как пост в блоге. Приносим извинения за любые ошибки, отсутствие ссылок и возвышенную прозу; это, по существу, запись половины обсуждения, и я не объяснил условия, не предоставил ссылки или не проверил факты на том уровне детализации, как я обычно делаю.

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

Давным давно жил да был производитель полупроводниковых устройств, который немного поторописля со своим производственным процессом и несколько чрезмерно уменьшил допуски в некотором технологическом поколении. Через несколько месяцев (или лет) соединение между двумя концами подобной перемычки смогло снова появиться и восстановить его. Если вам повезёт, то такая перемычка будет чем-то вроде старшего бита множителя тактовой частоты, который в случае его изменения будет выводить чип из строя. Если не повезёт, то это приведёт к скрытому повреждению данных.

Я слышал от многих людей в разных компаниях о проблемах в этом технологическом поколении этого производителя, так что это не были отдельные случаи. Когда я говорю, что это забавно, я имею в виду, что забавно услышать эту историю в баре. Менее забавно обнаружить через год тестирования, что некоторые из ваших чипов не работают, потому что их установки для перемычек бессмысленны, и необходимо переделать ваш чип и отложить выпуск на 3 месяца. Кстати, эта ситуация с восстановлением плавкой перемычки — ещё один пример класса ошибок, остроту которых можно сгладить с помощью ECC.

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

2. Если вы не хотите копаться во всей книге, то вот нужный фрагмент:

В системе, которая может выдержать ряд отказов на программном уровне, минимальное требование, предъявляемое к аппаратной части, заключается в том, что сбои этой части всегда обнаруживаются и сообщаются программному обеспечению достаточно своевременно, чтобы позволить программной инфраструктуре ограничить их и принять соответствующие действия по восстановлению. Необязательно, чтобы аппаратное обеспечение явно справлялось со всеми сбоями. Это не означает, что оборудование для таких систем должно быть спроектировано без возможности исправления ошибок. Всякий раз, когда функциональные возможности исправления ошибок могут быть предложены с разумной ценой или сложностью, поддержка их часто окупается. Это означает, что, если аппаратная коррекция ошибок была бы чрезвычайно дорогостоящей, то система могла бы иметь возможность использования более дешёвой версии, которая предоставляла бы возможности только обнаружения. Современные системы DRAM являются хорошим примером ситуации, в которой мощная коррекция ошибок может быть предоставлена при очень низких дополнительных затратах. Однако смягчение требования об обнаружении аппаратных ошибок было бы намного сложнее, поскольку это означало бы, что каждый программный компонент был бы обременён необходимостью проверки его собственного правильного выполнения. На начальном этапе своей истории Google пришлось иметь дело с серверами, на которых у DRAM отсутствовал даже контроль чётности. Создание индекса веб-поиска состоит, по существу, из очень большой операции сортировки/слияния, использующей длительно несколько машин. В 2000 году одно из ежемесячных обновлений веб-индекса Google не прошло предварительную проверку, когда обнаружилось, что некоторое подмножество проверенных запросов возвращает документы, по-видимому, случайным образом. После некоторого исследования в новых индексных файлах была выявлена ситуация, которая соответствовала фиксации бита на нуле в определённом месте в структурах данных, что было негативным побочным эффектом потоковой передачи большого количества данных через неисправный чип DRAM. В структуры данных индекса были добавлены проверки непротиворечивости, чтобы свести к минимуму вероятность повторения этой проблемы, и в дальнейшем проблем такого характера не было. Однако следует отметить, что этот способ не гарантирует 100% обнаружения ошибок в проходе индексации, так как не все позиции памяти проверяются — инструкции, например, остаются без проверки. Это сработало потому, что структуры данных индекса были настолько больше, чем все другие данные, участвующие в вычислении, что наличие этих самоконтролируемых структур данных делало очень вероятным, что машины с дефектным DRAM будут идентифицированы и исключены из кластера. Следующее поколение машин в Google уже содержало обнаружение чётности в памяти, и как только цена памяти с ECC опустилась до конкурентного уровня, все последующие поколения использовали ECC-DRAM.

Типы оперативной памяти. Небуферизированная память, с ECC, регистровая с ECC.

  1. Домой
  2. Статьи
  3. Компьютерное железо
  4. Типы оперативной памяти. Небуферизированная память, с ECC, регистровая с ECC.

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

Вы не знаете что значит U в маркировке оперативной памяти, что значит E, что значит R или F? Этими буквами обозначается тип памяти — U (Unbuffered, небуферизированная), E (память c коррекцией ошибок, ECC), R (регистровая память, Registered), F (FB-DIMM, Fully Buffered DIMM — полностью буферизованная DIMM). Теперь рассмотрим все эти типы подробнее.

Типы памяти используемые в компьютерах:

1. Небуферизированная память. Обычная память для обычных настольных компьютеров, её ещё называют UDIMM. На планке памяти как правило имеется 2, 4, 8 или 16 микросхем памяти с одной или двух сторон. У такой памяти маркировка обычно заканчивается буквой U (Unbuffered) или вообще без буквы, например DDR2 PC-6400, DDR2 PC-6400U, DDR3 PC-8500U или DDR3 PC-10600. А у памяти для ноутбуков маркировка заканчивается буквой S, видимо это сокращение от SO-DIMM, например DDR2 PC-6400S. Фото небуферизированной памяти можно видеть ниже.

Нажмите для увеличения изображения Нажмите для увеличения изображения

2. Память c коррекцией ошибок (Память с ECC). Обычная Небуферизованная память с коррекцией ошибок. Такая память ставится обычно в фирменные (брендовые) компьютеры продаваемые в Европе (НЕ СЕРВЕРА), плюсом этой памяти является её большая надёжность при работе. Большинство ошибок при работе памяти удаётся исправить во время работы, даже если они появляются, не теряя данные. Обычно на каждой планке такой памяти 9 или 18 микросхем памяти, добавляется одна или 2 микросхемы. Большинство обычных компьютеров (не серверов) и материнских плат могут работать с ECC памятью. У такой памяти маркировка как правило заканчивается буквой E (ECC), например DDR2 PC-4200E, DDR2 PC-6400E, DDR3 PC-8500E или DDR3 PC-10600E. Фото небуферизированной памяти c ECC можно видеть ниже.

Нажмите для увеличения изображения

Различие памяти с ECC и памяти без ECC можно видеть на фото:

Нажмите для увеличения изображения

Хоть большинство продаваемых плат и поддерживают эту память, но совместимость с конкретной платой и процессором лучше узнать заранее до покупки. Из личного опыта 90-95% материнских плат и процессоров могут работать с памятью ECC. Из тех, что НЕ могут работать: платы на чипсетах Intel G31, Intel G33, Intel G41, Intel G43, Intel 865PE. Все материнские платы и процессоры начиная с первого поколения Intel Core все могут работать с ECC памятью и от материнских плат это не зависит. Под AMD процессоры вообще практически все материнские платы могут работать с ECC памятью, за исключением случаев индивидуальной несовместимости (такое бывает в редчайших случаях).

3. Регистровая память (Registered). СЕРВЕРНЫЙ тип памяти. Обычно он всегда выпускается с ECC (коррекцией ошибок) и c микросхемой «Буфером». Микросхема «буфер» позволяет увеличить максимальное количество планок памяти, которые можно подключить к шине не перегружая её, но это уже лишние данные, не будем углубляться в теорию. В последнее время понятия буферизованный и регистровый почти не различают. Если утрировать: регистровая память = буферизованная. Эта память работает ТОЛЬКО на серверных материнских платах способных работать с памятью черем микросхему «буфер».

Обычно на планках регистровой памяти с ECC установлено 9, 18 или 36 микросхем памяти и ещё 1, 2 или 4 микросхемы «буфера» (они обычно в центре, отличаются по габаритам от микросхем памяти). У такой памяти маркировка как правило заканчивается буквой R (Registered), например DDR2 PC-4200R, DDR2 PC-6400R, DDR3 PC-8500R или DDR3 PC-10600R. Ещё в маркировке регистровой (серверной) (буферизированной) памяти обычно присутствует сокращение слова Registered — REG. Фото буферизированной (регистровой) памяти c ECC можно видеть ниже.

Нажмите для увеличения изображения Нажмите для увеличения изображения Нажмите для увеличения изображения

Помните! Регистровая память с ECC со 100% вероятностью НЕ РАБОТАЕТ на обычных материнских платах. Она работает только на серверах!

4. FB-DIMM Fully Buffered DIMM (Полностью буферизованная DIMM), — стандарт компьютерной памяти, который используется для повышения надёжности, скорости, и плотности подсистемы памяти. В традиционных стандартах памяти линии данных подключаются от контроллера памяти непосредственно к линиям данных каждого модуля DRAM (иногда через буферные регистры, по одной микросхеме регистра на 1-2 чипа памяти). С увеличением ширины канала или скорости передачи данных, качество сигнала на шине ухудшается, усложняется разводка шины. Это ограничивает скорость и плотность памяти. FB-DIMM использует другой подход для решения этих проблем. Это дальнейшее развитие идеи registered модулей — Advanced Memory Buffer осуществляет буферизацию не только сигналов адреса, но и данных, и использует последовательную шину к контроллеру памяти вместо параллельной.

Модуль FB-DIMM имеет 240 контактов и одинаковую длину с другими модулями DDR DIMM, но отличается по форме выступов. Подходит только для серверных платформ.

Спецификации FB-DIMM, как и другие стандарты памяти, опубликованы JEDEC.

Компания Intel использовала память FB-DIMM в системах с процессорами Xeon серий 5000 и 5100 и новее (2006—2008 годы). Память FB-DIMM поддерживается серверными чипсетами 5000, 5100, 5400, 7300; только с процессорами Xeon, основанными на микроархитектуре Core (сокет LGA771).

В сентябре 2006 года компания AMD также отказалась от планов по использованию памяти FB-DIMM.

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

Память с пониженным питанием, «L» память

Многие пользователи компьютеров и ноутбуков на основе процессоров Intel 3-го, 4-го и последующих поколений процессоров сталкиваются с ещё одним видом памяти, так называемой, «L» памятью. Это память DDR3L, DDR4L. Маркируется эта память с дополнительной буквой «L», вот примеры её маркировки: DDR3L-1600, DDR4L-2133 и подобные. Что же обозначает дополнительная буква «L» в маркировке памяти? Всё очень просто. Эта маркировка говорит нам о том, что микросхемы памяти на этом модуле, как и сам модуль, могут работать на пониженном питании, обычно на 20% ниже чем у стандарта. Тем самым экономится расход электроэнергии и уменьшается нагрев во время работы. Особенно актуально это для переносных устройств, например, ноутбуков и ультрабуков. Пониженное напряжение питания составляет 1.35 вольта для DDR3L и 1.05 вольта для DDR4L, в то время как стандартное напряжение питания памяти DDR3 составляет 1.5 вольта, и для DDR4 — 1.2 вольта.

Могут ли работать модули DDR3 вместе с DDR3L? И можно ли ставить модули DDR3L вместо DDR3? Да, в большинстве случаев эти модули имеют обратную совместимость и могут быть взаимозаменяемыми, но есть и исключение. Объясню этот момент более подробно. Если взять, например, спецификацию на модуль памяти SODIMM 4GB DDR3L Kingston KVR16LS11/4 1Rx8 512M x 64-Bit PC3L-12800CL11 204-Pin, то в ней указано, что питание на модуль возможно двух стандартов:

JEDEC standard 1.35V (1.28V ~ 1.45V) and 1.5V (1.425V ~1.575V) Power Supply;
VDDQ = 1.35V (1.28V ~ 1.45V) and 1.5V (1.425V ~ 1.575V)

Как видим, питание на модуль может составлять от 1.28 вольт и до 1.575 вольта. При этом напряжении питания гарантируется нормальная работа модуля памяти, работа модуля памяти при этом напряжении протестирована и гарантируется производителем. Если же вы более подробно найдёте спецификацию на сами микросхемы памяти, которые распаяны в конкретном модуле, то вполне вероятно, что диапазон допустимых напряжений ещё шире и память может выдержать и более высокие/низкие напряжения питания, но это уже будет экстремальный режим работы. Посмотрим, например, спецификацию микросхем у модуля Kingston KVR16S11S6/2. В данном модуле распаяны микросхемы D2516JC4BXGGBU, спецификация этих микросхем в PDF файле. Тут указано, что модуль работает при напряжении VDD от 1.283 вольта (стандартно 1.35 для DDR3L) и до 1.575 вольта (стандартно 1.5 для DDR3). А абсолютное максимально возможное напряжение для микросхемы вообще составляет 1.975 вольт, по превышению которого микросхема памяти просто обязана сгореть, если верить спецификации. 🙂 То же самое произойдёт если перепутать полярность и подать обратное напряжение в -0.4 вольта, но такое маловероятно осуществить.

Нажмите для увеличения изображения

Из всего этого можно сделать выводы:

  1. На ПК и ноутбуках, где материнская плата (или контроллер памяти в процессоре) может работать как со стандартным напряжением питания, так и пониженным, стандарта «L», на таких системах возможна работа модулей памяти как с пониженным питанием («L») так и со стандартным питанием (без «L»). Скорее всего, система формирования питания памяти подаст стандартное (высокое) напряжение на все модули, и все модули будут работать на этом уровне напряжения питания.
  2. Если же материнская плата (или же процессор) расчитана только на работу с памятью «L» стандарта, то память с стандартным питанием (без «L») скорее всего работать не будет, т.к. достаточного уровня напряжения не будет. В этом случае вам надо ставить только модули с пониженным питанием, «L»-ки.

Узнать о том, какой же стандарт напряжения памяти поддерживается в вашей системе можно из её спецификации. Обычно это спецификация или материнской платы, или же процессора. Например, у вас в ноутбуке установлен процессор Intel® Core™ i5-4300U. Открываем его спецификацию на сайте Intel и смотрим, что данный процессор поддерживает память DDR3L 1333/1600 и LPDDR3 1333/1600 — это всё память с пониженным питанием. Значит, Вы не сможете установить в систему с таким процессором память с обычным напряжением питанием (без буквы «L» в маркировке) — она не будет работать! А если и будет, то может сбоить и сыпать ошибками, т.к. на неё будет подаваться недостаточное напряжение питания.

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

Примечание: Я не рекомендую ставить «L» модули вместе с оверклокерскими модулями, т.к. оверклокерские модули рассчитаны наоборот на повышенное напряжение, а оно может быть выше верхнего предела напряжения для «L» модулей. В таком случае «L» память может не выдержать и перестать функционировать навсегда.

P.S.: В последнее время появился ещё один дешевый и интересный тип памяти — я её называю «Китайская Подделка». Кто ещё не сталкивался — расскажу. Это такая память, которую можно всегда узнать по её контактам, обычно они окисленные и даже если их очистить, то за месяц-два они опять окисляются, становятся мутными, грязными и память при этом может сбоить или совсем не работать. Золотом на контактах этой памяти даже и не пахнет. Ещё одним отличием этой памяти от оригинальной является то, что она работает на определённых материнских платах или процессорах, например ТОЛЬКО на АМД, или только строго на каких-то чипсетах. Причём перечень этих чипсетов очень мал. В чём секрет этой «памяти» мне пока не ясно, но многие покупают — ведь она на 40-50% дешевле аналогичной. И что самое удивительное, новая «Китайская Подделка» обычно стоит дешевле оригинальной памяти Б/У 🙂 Надёжность и долговечность работы рассказывать не буду, тут и так всё ясно.

Теги этой статьи

Близкие по теме статьи:

Microsoft пока никак не комментирует ситуацию. Несмотря на то, что поддержка Windows XP закончилась еще 6 лет тому назад, до сих пор эта ОС используется на большом количестве как домашних компьютеров,…

Читать полностью

Компания NVIDIA представила аппаратно-программный комплекс Reviewer Toolkit for Graphics Performance, позволяющий проводить мониторинг производительности в играх, численно оценивать задержки вывода изображения…

Читать полностью

Samsung объявила о начале массового производства на своей второй производственной линии в корейском Пхёнтхэке первых в отрасли мобильных 16-Гбит чипов DRAM LPDDR5. Для печати используется техпроцесс Samsung…

Читать полностью

Что такое ECC-память? Зачем нужна оперативная память с коррекцией ошибок.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вам интересно узнать?

Как узнать, является ли моя память ECC или Non-ECC?

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

источник

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

wmic MEMORYCHIP get DataWidth,TotalWidth

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

пример:

//ECC Memory
DataWidth  TotalWidth
64         72

//Non-ECC Memory
DataWidth  TotalWidth
64         64

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

wmic memphysical get memoryerrorcorrection

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

Value Meaning 
0 (0x0) Reserved 

1 (0x1) Other 

2 (0x2) Unknown 

3 (0x3) None 

4 (0x4) Parity 

5 (0x5) Single-bit ECC 

6 (0x6) Multi-bit ECC 

7 (0x7) CRC

отвечен KronoS 2015-03-25 08:18:36

источник

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

dmidecode -t 17

пример:

# dmidecode 2.12
SMBIOS 2.5 present.

Handle 0x1100, DMI type 17, 28 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 2048 MB
        Form Factor: DIMM
        Set: 1
        Locator: DIMM1
        Bank Locator: Not Specified
        Type: DDR2
        Type Detail: Synchronous
        Speed: 667 MHz
        Manufacturer: AD00000000000000
        Serial Number: 00002062
        Asset Tag: 010839
        Part Number: HYMP125P72CP8-Y5
        Rank: 2

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

более подробную информацию в обнаружении этого в Linux можно найти здесь на нашем родственном сайте unix.stackexchange.com.

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

отвечен Hennes 2017-04-13 12:37:10

источник

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

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

источник

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

/Applications/Utilities/System Information

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

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

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

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

отвечен MrDaniel 2015-03-27 01:26:02

источник

inxi можно сделать так:

$ sudo inxi -m -xxx
Memory:    Array-1 capacity: 32 GB devices: 4 EC: None
           Device-1: ChannelA-DIMM0 size: 4 GB speed: 1333 MHz type: DDR3 (Synchronous)
           bus width: 64 bits manufacturer: Kingston part: KHX1600C9D3/4GX serial: B7ED5A53

...

здесь используются модули, отличные от ECC-RAM EC: None

источник

вы также можете попробовать бесплатное приложение, как Belarc. Дает кучу больше информации о вашей системе тоже…

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

Я не могу предоставил снимок экрана результатов, потому что он содержит конфиденциальные данные, но веб-сайт должен предоставить некоторые примеры. Его довольно прямо вперед (и быстро), скачать файл, запустить его и результаты представлены.

отвечен htm11h 2015-03-26 16:34:41

источник

ECC-память — Википедия. Что такое ECC-память

DIMM для ECC памяти обычно содержит девять чипов памяти на каждой стороне, на один больше, чем для обычной памяти[1]

ECC-память (англ. error-correcting code memory, память с коррекцией ошибок) — тип компьютерной памяти, которая автоматически распознаёт и исправляет спонтанно возникшие изменения (ошибки) битов памяти. Память не поддерживающая коррекцию ошибок, обозначается non-ECC.

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

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

Наиболее базовый алгоритм коррекции ошибок основан на коде Хэмминга. Однако существуют и другие алгоритмы, способные исправлять более одной ошибки.

На практике широко применяется DDR* SDRAM ECC-память для серверов с кодом класса SECDED (исправление одиночных и детектирование двойных ошибок). На модулях памяти на каждые 8 микросхем добавляется ещё по одной микросхеме, которая хранит ECC-коды размером 8 бит на каждые 64 бита основной памяти[2].

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

Описание проблемы

Электромагнитные помехи внутри компьютерной системы способны спонтанно поменять состояние ячейки компьютерной памяти. Самой частой причиной такого изменения являются нейтроны из космических лучей[3]. Поэтому частота ошибок в компьютерных системах возрастает при увеличении высоты. Так, поток нейтронов в 3,5 раза больше на высоте 1,5 км и в 300 раз больше на высоте 10-12 км (типичной высоте полёта пассажирских самолётов), чем на уровне моря[4]. Поэтому системы, работающие на большой высоте, требуют большей защиты.

Например, на космическом аппарате Кассини-Гюйгенс установлены два идентичных устройства записи, каждое из которых содержит 2,5 гигабита памяти. На протяжении первых 2,5 лет полёта регистрировалось примерно постоянное количество ошибок каждый день: примерно 280 ошибок в день. Однако в течение одного дня (6 ноября 1997 года) число ошибок возросло в четыре раза. Считается, что это произошло из-за геомагнитной бури[5] (также, протонная буря[en]), которая была зафиксирована спутником GOES 9[6].

Существуют опасения, что тенденция к уменьшению физических размеров модулей памяти приведёт к увеличению частоты возникновения ошибок из-за того, что частицы меньших энергий будут способны изменить бит[4]. С другой стороны, компактные размеры памяти уменьшают вероятность попадания частиц в неё. Кроме того, переход на такие технологии, как кремний на изоляторе, может сделать память более устойчивой[7].

Исследование, проведённое на большом количестве серверов Google, показало, что количество ошибок может быть в пределах от 25 000 до 70 000 ошибок за миллиард рабочих часов (англ. device hours) на мегабит (то есть 2,5-7,0 × 10−11 ошибок / бит·час)[8].

Технология

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

Более надёжным является подход, при котором используется коды с коррекцией ошибок. Самым часто используемым кодом с коррекцией ошибок, является код Хэмминга.
Большинство памяти с коррекцией ошибок, используемых в современных компьютерах, могут исправлять ошибку одного бита в одном 64-битном машинном слове и определить, но не исправить, ошибку в двух битах в одном 64-битном слове[9].

Наиболее эффективный подход к исправлению ошибок зависит от вида ожидаемых ошибок. Часто предполагается, что изменение различных битов происходят независимо. В этом случае вероятность двух ошибок в одном слове пренебрежительно мала. Однако это предположение не выполняется для современных компьютеров. Память, основная на технологии коррекции ошибок Chipkill[en] (IBM), позволяет исправлять несколько ошибок, в том числе и при порче целого чипа памяти. Другие технологии коррекции памяти, которые не предполагают независимость ошибок в разных битах, включают Extended ECC[en] (Sun Microsystems), Chipspare[en] (Hewlett-Packard) и SDDC[en] (Intel).

Многие старые системы не сообщали об исправленных ошибках, сообщая только об обнаруженных ошибках, которые невозможно было исправить. Современные системы записывают как исправленные ошибки (CE, англ. correctable errors), так и неисправляемые ошибки (UE, англ. uncorrectable errors). Это позволяет вовремя заменить испорченную память: несмотря на то, что большое количество исправленных ошибок при отсутствии неисправляемых ошибок не влияет на корректность работы памяти, это может свидетельствовать о том, что для данного модуля памяти вероятность появления неисправляемых ошибок в будущем возрастёт[10].

Преимущество и недостатки

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

Память с коррекцией ошибок работает на 2-3 % медленнее (часто для проверки сумм требуется один дополнительный такт контроллера памяти), чем обычная память, в зависимости от приложений[11]. Дополнительная логика, реализующая подсчет, проверку ECC и исправление ошибок, требует логических ресурсов и времени на свою работу либо в самом контроллере памяти, либо в интерфейсе между CPU и контроллером памяти[12].

См. также

Примечания

  1. Werner Fischer. RAM Revealed. admin-magazine.com. Проверено 20 октября 2014.
  2. ↑ http://www.ece.umd.edu/courses/enee759h.S2003/lectures/Lecture13.pdf#page=12
  3. ↑ Single Event Upset at Ground Level, Eugene Normand, Member, IEEE, Boeing Defense & Space Group, Seattle, WA 98124-2499
  4. 1 2 «A Survey of Techniques for Modeling and Improving Reliability of Computing Systems», IEEE TPDS, 2015
  5. ↑ Кузнецов В. В. Солнечно-земная физика (курс лекций для студентов физиков). Лекция 7. Солнечная активность. // Солнечные бури. Горно-Алтайский государственный университет. 2012
  6. ↑ Gary M. Swift and Steven M. Guertin. «In-Flight Observations of Multiple-Bit Upset in DRAMs». Jet Propulsion Laboratory
  7. ↑ Borucki, «Comparison of Accelerated DRAM Soft Error Rates Measured at Component and System Level», 46th Annual International Reliability Physics Symposium, Phoenix, 2008, pp. 482–487
  8. (2009) «DRAM Errors in the Wild: A Large-Scale Field Study» (PDF). SIGMETRICS/Performance (ACM). Lay summary – ZDNet.
  9. ↑ Using StrongArm SA-1110 in the On-Board Computer of Nanosatellite. Tsinghua Space Center, Tsinghua University, Beijing. Проверено 16 февраля 2009. Архивировано 2 октября 2011 года.

  10. Doug Thompson, Mauro Carvalho Chehab.
    «EDAC — Error Detection And Correction» Архивировано 5 сентября 2009 года..
    2005—2009.
    «The ‘edac’ kernel module goal is to detect and report errors that occur
    within the computer system running under linux.»
  11. ↑ Discussion of ECC on pcguide. Pcguide.com (17 апреля 2001). Проверено 23 ноября 2011.
  12. ↑ AMD-762™ System Controller Software/BIOS Design Guide, p. 179. AMD (2002). «The additional logic to support the ECC function is costly in both silicon real estate and system timing. In the ECC modes that support data correction, one additional system clock must be used to generate the corrected data … AMD Athlon processor checks for its own errors»

Ссылки

Процессоры Ryzen поддерживают память ECC

Мы уже рассказывали нашим читателям о том, что по некоторым неофициальным сведениям контроллер памяти DDR4, входящий в состав процессоров AMD Ryzen, будет способен работать с модулями, оснащёнными функцией коррекции ошибок ECC. Такие модули иногда называются 72-битными, поскольку содержат дополнительный чип, хранящий ECC-коды: 8 бит на каждые 64 бита основных данных. Такой подход позволяет исправлять один ошибочный бит и определять двойной, чего достаточно для подавляющего большинства задач, требующих повышенной надёжности подсистемы памяти.

Блок-схема платформы AM4, чипсет X370 (B350 не поддерживает деление линий PCIe 3.0 и имеет 6 линий PCIe 2.0)

Технология ECC широко применяется в серверах и рабочих станциях, но почему-то почти не встречается в настольных ПК, хотя соответствующие модули DIMM стоят ненамного дороже и, против общепринятого мнения, не уступают модулям без поддержки коррекции ошибок в производительности. В настоящее время Advanced Micro Devices официально признала, что интегрированный в Ryzen контроллер памяти полностью поддерживает память с коррекцией ошибок. Соответствующие модули должны без проблем работать с новыми процессорами при условии, что производитель системной платы развёл соответствующие дорожки на PCB. AMD также заявляет, что официальной валидации память ECC в случае с Ryzen не имеет, во всяком случае, пока.

Ничего удивительного в такой поддержке нет, поскольку блок контроллера памяти у Ryzen и Naples, скорее всего, общий, но в последнем случае используется больше каналов и имеется поддержка регистровых модулей (RDIMM). Теоретически, ничто не мешало бы реализовать поддержку последних и в Ryzen, поскольку зависит она исключительно от BIOS, а её наличие позволило бы использовать модули большей ёмкости в большем количестве, но, скорее всего, такой поддержки в BIOS плат с разъёмом AM4 не будет: регистровая память считается исключительно серверной и используется именно потому, что позволяет увеличить количество модулей на канал контроллера памяти без опасности его перегрузки. 

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

Что такое память ECC в ОЗУ? Базовое определение

Память с кодом коррекции ошибок

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

Память ECC и память без ECC

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

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

Предполагается, что системы с памятью ECC будут меньше давать сбой. В 2014 году компания Puget Systems провела тесты и обнаружила, что память ECC имеет 0.Частота отказов 09 процентов, по сравнению с 0,6 процентами отказов памяти без ECC.

Что поддерживает память ECC?

(Изображение предоставлено Дмитрием Ма / Shutterstock)

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

Опять же, память ECC предназначена для рабочих станций и серверов корпоративного уровня. Таким образом, для поддержки памяти ECC необходим такой же мощный процессор. Что касается процессоров Intel, только линейка Xeon поддерживает ECC, пытаясь отличить процессоры уровня энтузиастов от процессоров корпоративного уровня. Между тем, линейка AMD core — изобилие Threadripper поддерживает память ECC.

Минусы памяти ECC

Возможно, удивительно, что ОЗУ с ECC на ощупь медленнее, чем ОЗУ без ECC, поскольку для проверки ошибок требуется дополнительное время.В том же исследовании 2014 года, процитированном выше, Пьюджет обнаружил, что ОЗУ с ECC было на 0,25 процента медленнее, чем ОЗУ без ECC, а ОЗУ с зарегистрированным ECC было на 0,44 процента медленнее (однако они определили, что разница в производительности в пользу без ECC является «крошечной»).

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

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

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

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

Зарегистрированная / буферизованная память

ECC-память не всегда регистрируется / буферизуется. Однако вся зарегистрированная память — это память ECC.

ОЗУ ECC часто использует зарегистрированную, также известную как буферизованную, память. В зарегистрированной памяти используется «регистр», который расположен между ОЗУ системы и контроллером памяти. Это снижает нагрузку на контроллер памяти, а также позволяет использовать больше модулей ОЗУ, чем было бы в противном случае.

Эта статья является частью Tom’s Hardware Glossary .

Дополнительная литература:

.

ECC и память без ECC — разница между

Обновлено 23 февраля 2018 г.

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

Определения

Память ECC

Память ECC с девятью микросхемами памяти (на одну больше, чем не-ECC)

Также известная как память с четностью, память ECC — это компьютерное хранилище данных, предназначенное для обнаружения и исправления внутренних повреждений данных или данных ошибка.В нем больше микросхем памяти, чем в без ECC. Обычно он используется для компьютерных систем, которые хранят ценные данные и где повреждение данных недопустимо. Он защищает вашу систему памяти от однобитовых ошибок, когда одна единица данных изменяется во время передачи данных из-за ошибки сетевой связи. Принимая «1» в качестве единицы выборки в качестве отправленных данных в вашей системе, если вместо этого она получила «0»; это то, что вы называете однобитовой ошибкой.

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

Образец памяти ECC, который сейчас продается, — это ваш Crucial 16 ГБ (8 ГБ x 2), который будет стоить вам около 120 долларов.

Память без ECC

Память без ECC с восемью микросхемами памяти (на одну меньше, чем с ECC)

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

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

Образец памяти без ECC, который сейчас продается, — это Kingston ValueRAM 16 ГБ (8 ГБ x 2), который стоит около 74 долларов.

Память с ECC и память без ECC

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

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

Вы также должны принять к сведению, что объединение памяти с ECC и без ECC отключит автоматическое обнаружение ECC и исправление ошибок / повреждений памяти. Так что лучше всего будет объединить память ECC с памятью ECC.

Сравнительная таблица

Память ECC Память без ECC
Авто обнаруживает ошибки памяти и исправляет их Не может исправлять ошибки, но некоторые способны обнаруживать
Подробнее дорого Дешевле
2% недостаток производительности 2% преимущество производительности
Рекомендуется для систем с важными данными (серверы и рабочие станции) Рекомендуется для стандартного использования (домашняя система)

.

памяти ECC — это … Что такое память ECC?

  • Очистка памяти — это процесс обнаружения и исправления битовых ошибок в памяти компьютера с помощью кодов обнаружения ошибок, таких как ECC. Содержание 1 Мотивация для очистки 2 Поддержка ECC для очистки 3 Очистка более подробно… Wikipedia

  • Архитектура памяти — описывает методы, используемые для реализации электронного хранения компьютерных данных таким образом, который представляет собой комбинацию самого быстрого, самого надежного, самого надежного и наименее дорогостоящего способа хранения и извлечения информации.В зависимости от конкретного…… Wikipedia

  • ECC — может быть аббревиатурой или аббревиатурой от: Медицина * Кариес в раннем детстве, медицинский синдром * Центр неотложной помощи, см. Отделение неотложной помощи * Связь с сокращением возбуждения * Наружное сжатие сердца, см. Сердечно-легочная реанимация *…… Википедия

  • Memory ProteXion — Memory ProteXion, встречающийся в серверах IBM xSeries, является формой избыточного управления битами. Эта технология использует избыточные биты в пакете данных для восстановления после сбоя DIMM.Memory ProteXion отличается от обычного исправления ошибок ECC тем, что … … Wikipedia

  • Упорядочивание памяти — это группа свойств современных микропроцессоров, характеризующая их возможности в переупорядочивании операций с памятью. Это вид внеочередного исполнения. Переупорядочение памяти может использоваться для полного использования различных банков кеш-памяти и памяти.…… Wikipedia

  • ECC — (Код исправления ошибок) код, который проверяет, идентифицирует и исправляет ошибки данных в компьютере (путем присоединения его к каждой единице данных, хранящейся в памяти, и повторной проверки данных при повторных чтениях)… Современный английский словарь

  • Ранг памяти — Ранг памяти — это набор DRAM, подключенных к одному и тому же выбору микросхемы, и поэтому доступ к ним осуществляется одновременно.На практике они также разделяют все другие сигналы управления и контроля, и только выводы данных для каждой DRAM являются отдельными (но…… Wikipedia

  • Геометрия памяти — В конструкции современных персональных компьютеров геометрия памяти описывает внутреннюю структуру оперативной памяти. Геометрия памяти вызывает озабоченность у потребителей, модернизирующих свои компьютеры, поскольку старые контроллеры памяти могут быть несовместимы с…… Wikipedia

  • ECC-DIMM — Двухрядный модуль памяти с кодом коррекции ошибок… Сокращения

  • ECC-DIMM — Двухрядный модуль памяти с кодом коррекции ошибок… Аббревиатуры от A до Z

  • ECC — сокр.комп. Проверка ошибок и исправление памяти комп. Проверка и исправление ошибок комп. Проверка и контроль ошибок комп. Возможность проверки ошибок комп. Код коррекции ошибок комп. Склеп встроенного канала управления. Криптография эллиптических кривых…… Словарь сокращений английского языка

  • .

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

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