Рад приветствовать Вас на своём канале! В этой статье поговорим про ЕСС-память, и зачем она нужна в серверах и рабочих станциях. Кстати, некоторые используют её и в домашних ПК, но это скорее исключение.
Также разберёмся, что такое буферизованная (регистровая) память и чем она отличается от небуферизованной (unbuffered).
Возникновение ошибок и битых данных
В предыдущей статье я рассказал Вам о причинах возникновения ошибок в оперативной памяти. Кратко напомню, что любая плашка ОЗУ представляет собой печатную плату, на которой смонтированы микросхемы памяти, каждая ячейка которых представляет собой конденсатор. Если конденсатор заряжен, значит в ячейке логическая единица, если разряжен - логический ноль.
Из-за несовершенства технологии, конденсаторы склонны к саморазряду и самозаряду, а в дополнении к этому - транзисторы, которые являются ключами доступа к ячейкам памяти, могут иметь повышенный ток утечки. Всё это приводит к тому, что после очередной операции записи данных, уже спустя несколько наносекунд, часть ячеек может изменить своё логическое состояние.
Для того, чтобы решить эту проблему, было предложено использовать дополнительный девятый чип микросхемы памяти, в котором будет содержаться контрольная сумма данных, загружаемых в ОЗУ.
Как именно это работает
Давайте чуть-чуть абстрагируемся и представим, что каждая микросхема на плате ОЗУ представляет собой не огромный банк памяти на несколько гигабайт данных, а всего лишь 8 битное хранилище. То есть, в каждой микросхеме всего 8 ячеек памяти (конденсаторов). Введём ещё одно упрощение, пусть у нас будет не 8 микросхем, а 2.
Теперь вернёмся в основы информатики и вспомним как производится бинарное сложение:
Не буду вдаваться в детали, рассчитываю что Вы это помните (или быстро смекнёте).
Вполне очевидно, что обратным методом мы можем произвести вычитание. Вы уже догадались, к чему я веду?) Именно! Используя дополнительную микросхему памяти, мы всегда можем сопоставить данные, хранящихся в ячейках самой ОЗУ с контрольной суммой, которая вычислена и помещена в чип №9:
Представим, что в некоторый Такт X процессор записал данные в чипы памяти ОЗУ, а также записал их контрольную сумму, вычисленную сложением, в чип ЕСС (чип контрольной суммы). Но из-за плохого контакта/космического излучения/иной аномалии, старший разряд памяти изменил своё значение с 1 на 0. При обращении ЦПУ к ОЗУ на Такте Х+1 процессор прочитает битые данные! Но не стоит паниковать, ведь благодаря дополнительному чипу с контрольной суммой (где всё ещё хранится результат 1+0=1), данные будут восстановлены.
И да, справедливо отметить, что вычисление контрольной суммы не сводится к банальному сложению двух чисел, а устроено несколько сложнее. Но нам с Вами эти знать не обязательно, т.к. всё выполняется аппаратно и пользователь не принимает никакого участия в таком процессе.
А как процессор поймёт, что информация некорректная?
Действительно, как он это поймёт? Ведь многие знают, что оперативная память имеет ширину данных в 64 бита - именно столько токоведущих дорожек на печатной плате отходят от разъёма для установки ОЗУ в сторону процессора.
Так вот здесь стоит пояснить, что оперативная память с коррекцией ошибок (ECC) имеет ширину данных в 72 бита: 64 основных + 8 бит для контроля чётности. А чтобы процессор мог понимать такую информацию, он должен поддерживать ЕСС память.
Память ЕСС поддерживают, как правило, все серверные процессоры, некоторые модели Intel, а также большинство Ryzen в сокетах АМ4 и АМ5 (обычный бытовые процессоры). Но есть нюансы: если серверные материнские платы предполагают трассировку 72-линий передачи данных между ЦПУ и ОЗУ, то производители бытовых материнок реализуют это редко. По моей информации, лишь AsRock и некоторые модели ASUS имеют соответствующую топологию. В прочем, эта тема для отдельной статьи про материнские платы, поэтому не забудьте подписаться на канал, чтобы не пропустить свежий выпуск!) А мне будет очень приятно)
Краткое резюме: как работает оперативная память с коррекцией ошибок ECC
Ширина линии данных ЕСС-памяти составляет 72 бита, против 64 у обычной. Процессор (контроллер памяти), прежде чем записать данные в ОЗУ, вычисляет их контрольную сумму. Затем осуществляет запись самих данных по 64-битной линии, а контрольную сумму записывает в дополнительный девятый чип памяти по 8-битной шине. При считывании данных происходит обратный процесс: данные с 64-битной шины сопоставляются с контрольной суммой из девятого чипа. Если данные не совпадают - значит, произошла ошибка. Если ошибка имеется лишь в 1 бите, она будет исправлена. Если в двух битах - информация будет передана в операционную систему.
Таким образом, допускается возникновение одной ошибки на каждые 8 бит данных. Таки ошибки будут устранены автоматически (аппаратно).
Какой бывает оперативная память с коррекцией ошибок?
Глобально существует два типа такой памяти: регистровая (buffered) и нерегистровая (unbuffered, unregistered). И здесь всё намного проще.
Регистровая память предназначена для работы исключительно с серверными процессорами, так как содержит дополнительные микросхемы регистров (буферов), позволяющие увеличить доступный объём одной плашки ОЗУ до 128Гб. Грубо говоря, микросхема регистра - это своего рода многоканальный переключатель со встроенным дешифратором, позволяющий управлять доступом тому или иному банку памяти:
Естественно, так как ЦПУ требуется сперва передать нужный адрес Банка памяти, а лишь затем произвести запись/чтение информации, буферизованная память несколько медленнее обычной (нерегистровой). Зато позволяет организовать на сервере аж под Терабайт оперативки!
В отличие от регистровой (registered), небуферизованная память имеет более высокую скорость работы, но позволяет разместить на одной "плашке" микросхем памяти лишь на 32Гб. Поэтому, все современные "бытовые" ПК не могут получить больше 128Гб ОЗУ.
Кстати, в моём домашнем сервере, о котором я не так давно снимал видеовыпуск, установлено 128Гб ЕСС unREG - максимально возможный объём. И да, там трудится вполне "бытовой" Ryzen 3600, но он поддерживает ECC-память.
Зачем нужна ECC-память?
Отвечу кратко: для исключения возникновения ошибок данных. Ладно, если ошибка возникнет у обычного пользователя во время игры - он может это и пережить, так как это выразится в небольшом зависании, либо вылете игры. В худшем случае - выскочит синий экран "смерти":
Но может статься и так, что при работе с документами, если ошибка возникнет во время сохранения обычного вордовского файла, он больше не откроется, так как на жёсткий диск (или ssd) записались битые данные.
Вполне понятно, что при построении сервера или рабочей станции такие риски необходимо сводить к минимуму. Одно дело потерять пару файлов (фото или документы) на отдельно взятом юзерском ПК, и другое дело получить ошибку в Базе данных, которая потом будет ретранслирована на другие сервера.
Заключение
У меня обязательно выйдет ещё одна статья, посвящённая DDR4 и DDR5, сравнению их характеристик и анализу необходимости и целесообразности перехода на новый стандарт памяти. Скажу лишь, что в DDR5 ЕСС имеется на всех планках - это связано с повышенными частотами работы памяти. Помните, в предыдущей статье я говорил о том, что паразитная ёмкость линий связи "заваливает" фронты цифрового сигнала. Так вот для DDR5 это почти что норма. В прочем, об этом мы поговорим уже в другой раз)
Кстати, не могу не заметить, что разгон оперативной памяти повышает шанс возникновения ошибок. И я уже хотел было написать в этой статье истинную причину, но.... Понял, что материал получается очень объёмный, поэтому разгону ОЗУ будет посвящена отдельная статья.
Итак, краткое резюме сегодняшнего выпуска:
- коррекция ошибок позволяет исправлять однобитные ошибки (аппаратно) и сообщать операционной системе о двухбитных ошибках;
- для работы ECC-памяти требуется её поддержка со стороны ЦПУ + материнская плата должна иметь соответствующую топологию (наличие 72 дорожек от разъёмов для установки ОЗУ к ЦП, вместо 64 для обычной ОЗУ без контроля чётности);
- ECC-память бывает буферизованной (регистровой) и небуферизованной (нерегистровой). С регистровой умеют работать, как правило, лишь серверные процессоры;
- ошибки в памяти могут возникать из-за некачественных банок (и ячеек) памяти, плохого контакта, космического излучения, неблагоприятной внешней электромагнитной обстановки.
Небольшой комментарий от меня: в своём сервере я устанавливать исключительно ЕСС-память, так как храню на нём важные для себя данные. Многие могут сослаться на то, что и без ЕСС у них всё хорошо - и я буду за них очень рад! Я же решил руководствоваться позицией "Бережёного Бог бережёт".
Послесловие от автора
Уважаемые подписчики и читатели! Я искренне рад, что мои выпуски находят отклик у аудитории. Мне очень приятно писать для Вас! В уходящем 2023 году я хотел бы пожелать Вам крепкого здоровья, семейного счастья и гармонии самих с собой! И в качестве небольшого подарка оставляю ниже красивую ёлку из оперативной памяти, фотографию которой нашёл на просторах интернета:
С наступающим Вас 2024 годом! Пусть он принесёт нам всем удачу!
А на этом у меня всё, с Вами был Народный ДОобЗОР, всем пока!)