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