ECC (Error Correction Code) или код коррекции ошибок, позволяет исправлять некоторые ошибки в процессе работы оперативной памяти. В том числе, случайные неточности, то есть те, которые могут возникать под воздействием электромагнитных помех или высокоэнергетических элементарных частиц. Подобная погрешность появляется из-за изменения значения одного бита в машинном слове. Результат такой ошибки может быть самым непредсказуемым. От изменения одного символа в набранном тексте до зависания всей системы. При чтении данных из памяти или записи в память код ECC позволяет исправлять одиночные битовые ошибки. Что повышает надежность работы памяти в окружениях, где это необходимо. Например, в серверах и рабочих станциях. Для кода ECC добавляются 8 дополнительных бит (64 базовых + 8 дополнительных = 72).
Применение технологии ECC необходимо для обнаружения и если это возможно, то исправления подобных проблем. Память, не имеющая поддержки коррекции ошибок, обозначается non-ECC.
Алгоритм ECC позволяет исправлять битовые ошибки, а также определять два ошибочных бита, но уже не исправлять их. Технологии Chipkill или Advanced ECC расширяют алгоритм ECC, позволяя корректировать до 4 ошибочных битов и определять до 8 ошибочных битов. Если ошибок будет много, то данная функция позволяет скрыть сбойный чип в системе без перезагрузки (отсюда и название "Chipkill"), при этом сервер продолжает стабильную работу. Технологии Chipkill или Advanced ECC работают как массив RAID на жестких дисках, опираясь на распределенное избыточное хранение данных.
Технология Memory Scrubbing производит постоянную проверку памяти на наличие ошибок, результаты отправляются серверным утилитам управления, например, IPMI (Intelligent Platform Management Interface) в BMC (Baseboard Management Controller).
Но для работы ECC вместе с функцией ChipKill/Advanced ECC необходимо чтобы процессор, материнская плата с BIOS и оперативная память поддерживали ECC. Данная технология обязательна для всех RDIMM, но также встречаются и UDIMM с ECC.
RDIMM - Регистровой памятью (Registered DIMM, RDIMM) называют модули ОЗУ, которые имеют на «борту» отдельный регистр для адресов «оперативки» и команд. Контроллер ОЗУ в процессоре обращается к регистрам, регистры же направляют информацию в микросхемы памяти. Такая организация «оперативки» позволяет увеличить количество модулей на канал RAM за счет снижения электрической нагрузки на контроллер памяти. Контроллер находится либо в северном мосту материнской платы, либо в процессоре. Также вдвое уменьшается емкость модулей памяти, если модуль содержит два регистра.
Регистровая память отличается от обычной, небуферизованной ОЗУ, более высокими задержками при чтении и записи информации в модулях ОЗУ. Это происходит из-за того, что модули содержат дополнительный промежуточный узел — буфер. Чтение/запись производит контроллер памяти в процессоре или северном мосту материнской платы. Работа с этим узлом, естественно, требует дополнительного времени работы. Но при этом отметим то, что уменьшается нагрузка на процессор, так как буфер отвечает за непосредственную работу с банками памяти.
Регистровая и буферизованная память — одно и то же
Регистровая память — это буферизованная память. Как было обозначено выше — регистр — это буфер для адресов и команд при работе с памятью. Процессор или северный мост материнской платы отправляют данные, адреса ячеек памяти и команды. Регистры выполняют команды по указанным адресам.
Такая память стоит дороже обычной, небуферизованной памяти. Используется она исключительно в серверах, потому что позволяет получить больший объем памяти на один процессор в сервере.
LRDIMM (Load Reduced Dual In-Line Memory Modules) - модуль со сниженной нагрузкой, относительно новый тип памяти для серверов. Поддерживается процессорами Intel Xeon E5 и AMD Opteron 6200 начиная с 2012 года.
Модули LRDIMM очень похожи на "обычные" модули памяти типа Registered DIMM (RDIMM) и даже используют те же печатные платы и чипы памяти DRAM. Однако принцип работы модулей существенно различается.
Смешивать в одной системе LRDIMM и DIMM модули категорически запрещено! (система не запустится).
В режиме работы с модулями типа DIMM контроллер памяти подключается параллельно и управляет непосредственно каждым набором микросхем, которые подключены к управляющей линии модуля. И чем больше этих наборов у модуля (так называемые ранги), тем больше нагрузка на контроллер.
При работе контроллера с модулями LRDIMM управление сводится к отправке пакетной информации (данные и команды) в буфер модуля - iMB (Isolation Memory Buffer). В свою очередь, именно буфер управляет всеми операциями чтения и записи в микросхемах DRAM. Проще говоря, за счет иного механизма "общения" модуля памяти с контроллером памяти нагрузка многорангового модуля становится в два раза ниже (то есть Quad Rank модуль контроллер воспринимает как Dual Rank, а Octal Rank модуль - как Quad Rank).
На практике LRDIMM становится полезен для увеличения скорости работы большого объема памяти и/или вообще возможности организации большого объема памяти. Для большей ясности приведем конкретный пример.
Процессоры Intel Xeon E5 v1, v2, v3 и v4 содержат четырехканальный контроллер памяти и поддерживают до восьми логических рангов на канал. Итого можно установить максимум восемь Quad Rank модулей объемом 32 Гб на каждый процессор (по 2 на каждый канал). Суммарный объем памяти на двухпроцессорной плате в этом случае не может превышать 512 ГБ. Одноранговых или двуранговых модулей можно поставить больше (до 3 модулей на канал), но эти модули будут иметь меньшую емкость.
Если использовать физически Quad Rank модули LRDIMM, которые контроллер памяти "воспринимает" как двуранговые, то можно использовать максимум 12 модулей по 32 Гб на процессор. Итого 768 ГБ памяти, которая, к тому же, сможет работать на более высокой частоте.
Процессоры третьего и четвертого поколения (Intel Xeon E5 v3 и v4) совместимы с модулями 3DS LRDIMM. Объем каждого модуля такой памяти может составлять 128 ГБ. Значит, двухпроцессорные системы с 24 слотами памяти могут использовать до 3 ТБ оперативной памяти. А планками RDIMM, при прочих равных, можно достичь только 768 ГБ.
NVDIMM (non-volatile DIMM) - Модули NVDIMM явили собой пример комплексного использования двух технологий: оперативной и энергонезависимой памяти. Сам по себе стандарт не является новинкой: он был утвержден в 2014 году, и многие компании уже представили свои модули памяти с «батарейкой». Однако, в связи с активным развитием микросхем Flash, современный NVDIMM стал включать в себя достаточный объем NAND-памяти. Теперь NVDIMM позволяет не только сохранить целостность данных на момент аварийного отключения питания, но и кэшировать все проходящие через ОЗУ данные на лету.
Энергонезависимая память NVDIMM бывает разных видов: NVDIMM-N, NVDIMM-F, NVDIMM-P. Модуль типа NVDIMM-N включает в себя как микросхему SDRAM (ОЗУ), так и микросхему флеш-памяти (SSD) для резервного хранения данных ОЗУ на случай аварии.
Если NVDIMM-N — это «оперативка» с расширенным функционалом, то NVDIMM-F – это своего рода хранилище. В «F» модулях нет ячеек ОЗУ, они содержат только микросхемы Flash-памяти. NVDIMM-P комбинирует функции NVDIMM-F и NVDIMM-N в рамках одного модуля. Доступ идёт одновременно как к DRAM, так и к NAND на одной планке. Все три конфигурации позволяют существенно увеличить производительность при работе с большими данными, HPC и т.д.
В 2017 году произошел своего рода прорыв в отношении памяти NVDIMM в серверном сегменте. Компания Micron представила новые модули емкостью 32 Гбайт. Эти модули работают на частоте DDR4-2933 с задержками CL21 — что гораздо быстрее других DDR4 для серверного применения. Несколько раньше были выпущены модули памяти на 8 и 16 Гбайт.
В конфигурации с двумя контроллерами любой из NVDIMM-N модулей заменяется вместе с контроллером в любой удобный момент, без прерывания доступа к данным. Когерентность NVDIMM может быть обеспечена не только программными, но и аппаратными средствами. Таким образом, исчезает необходимость обслуживать аккумуляторы (BBU в старых RAID-контроллерах или UPS). При вертикальном и горизонтальном масштабировании решения больше не требуется переоценка рисков потери данных!
DCPMM - Intel Optane DC (DCPMM), которая имеет большую емкость, чем DRAM, а её производительность выше, чем у SSD и HDD. Иными словами, это некий гибрид между модулем оперативной памяти и накопителем. И он стирает грань между DRAM и хранилищем данных при вычислениях в памяти.
Другое преимущество — Intel Optane DC сохраняет данные, если пропало питание сервера или оно нестабильно. При этом сохраняется производительность DRAM. Таким образом, данные сохраняются в оперативной памяти после выключения устройства.
Для работы с OLTP, базами данных в памяти и других сложных задач нужно использовать ресурсы процессора, и памяти по максимуму и при этом сокращать задержки при передаче информации. Решения по базе энергонезависимой памяти (NVM) не могут до конца решить эту проблему. Выходом может стать энергонезависимая память NVRAM/NVDIMM, в том числе Intel Optane DCPMM.
Разработка DCPMM началась в середине 2000-х. В 2012 году Intel и Micron объединили усилия для совместной работы. В июле 2015 технология была показана широкой публике.
Тогда технология называлась 3D XPoint («Трехмерная точка пересечения»).
Идея заключалась в создании памяти, которая бы отвечала следующим критериям:
Энергонезависимость
Надежность
Скорость выше, чем у Flash
По сути, инженеры разработали новый класс модулей, который позволил поставщикам информационно-коммуникационных технологий преодолеть ограничения классической трехуровневой модели хранения «горячих, теплых и холодных» данных. В итоге появляется четвертый слой для «полугорячих» данных, которые пользователи и получают при включении компьютера.
Новый слой NVRAM оказывается между двумя «кольцами»: SSD (хранение данных) и DRAM с CPU (запуск приложения). Модули DCPMM фактически переопределяют привычную иерархию памяти и хранения. На практике необходимая для запуска приложений информация оказывается доступна в течение сотен наносекунд по сравнению с десятками микросекунд для SSD и миллисекунд для HDD.
Ещё одно существенное преимущество технологии: модули Intel Optane DCPMM устанавливаются в те же стандартные слоты памяти, что и DRAM.
Модули Intel Optane DCPMM были выпущены в апреле 2019 года вместе со вторым поколением процессоров Intel Xeon Scalable. Одной из первых компаний, которая получила новые процессоры и DCPMM стала Fujitsu. Компания внедрила новшества в системы PRIMERGY и PRIMEQUEST.
Покупатели устройств этих линеек могут выбрать один из трех режимов работы, которые лучше всего отвечают текущим потребностям.
В режиме Memory Mode вся емкость DCPMM работает как «классическая» ОЗУ. В этом случае операционная система и приложения рассматривают её как пул энергозависимой памяти, а DRAM используется в роли кэша.
Процессор контроллера памяти обрабатывает все операции управления кэшем. Это означает, что при запросе данных из памяти, он сначала проверяет кэш DRAM. Если данные присутствуют, скорость передачи и время ожидания идентичны DRAM. В противном случае данные считываются из модулей DCPMM с немного большей задержкой. К слову, наличие в сервере планок памяти DRAM обязательно.
MM предпочтителен, когда нужно увеличить объем основной памяти. Например, в средах с высокой степенью виртуализации, модули DCPMM могут вмещать больше виртуальных машин и в то же время предоставлять больше памяти для каждой из них. При этом затрачивается меньше средств, чем на сравнительную по эффективности конфигурацию DRAM.
То же самое относится к рабочим нагрузкам с высокой степенью ввода-вывода, таким как аналитические и бизнес-приложения, а также большой набор устаревшего программного обеспечения.
Режим App Direct позволяет приложениям напрямую взаимодействовать с частями DCPMM. Таким образом, все важные данные хранятся в постоянной памяти в непосредственной близости от процессора, а значит сразу же доступны при загрузке части программного обеспечения.
В этом режиме ОС распознает два отдельных пула памяти и обрабатывает их соответствующим образом: часть DCPMM, резервируется для AD как постоянная память, а SDRAM функционирует как основная память.
Еще одним преимуществом такой конфигурации: DCPMM с поддержкой AD выполняет роль постоянного запоминающего устройства, но адресация проходит по байтам, как SDRAM.
Кроме того, данные из пространства App Direct DCPMM кэшируются в памяти ЦП точно так же, как из SDRAM. Система получается более согласованной, а все ядра ЦП в системе сразу получают одинаковые данные.
Ещё одна возможность: пространство App Direct можно монтировать непосредственно в ОС как сверхбыстрый SSD, делая его доступным для неизменяемых приложений.
AD Mode максимально использует DCPMM с точки зрения производительности, емкости, гибкости и простоты использования. Поэтому неудивительно, что эксперты считают этот режим работы предпочтительным для сценариев, в которых устойчивость систем и приложений, а также быстрое время загрузки/перезапуска имеют первостепенное значение.
DCPMM в конфигурациях AD особенно хорошо работает с приложениями, которые в значительной степени зависят от объема и производительности памяти, такими как базы данных в памяти и приложения для сверхбыстрого хранения.
Смешанный режим (Mixed Mode) — разновидность AD. В этом случае можно настроить DCPMM таким образом, чтобы одна часть работала в режиме памяти (Memory Mod), а другая — в режиме App Direct.
Ключевое отличие от AD: «разделение» емкости и функциональности должно быть с самого начала, чтобы поддерживать приложения с различными требованиями, которые должны выполняться параллельно.
В смешанном режиме приложения могут пользоваться преимуществами высокопроизводительного хранилища без задержки, которую вызывает перемещение данных на шину ввода-вывода и обратно.