hostprofi.ru
Подобрать хостинг
Термин·буква E

ECC-память

краткое определение

Error-Correcting Code Memory — оперативная память с аппаратной коррекцией ошибок: дополнительные биты на каждые 8 бит данных позволяют автоматически обнаружить и исправить однобитовые ошибки, возникающие из-за космических лучей или электромагнитных помех.

ECC-память (Error-Correcting Code, память с коррекцией ошибок) — тип серверной RAM, оснащённой дополнительными чипами памяти для хранения контрольных кодов. При записи данных вычисляется контрольная сумма по алгоритму Хэмминга и сохраняется вместе с данными. При чтении контрольная сумма пересчитывается: однобитовая ошибка исправляется автоматически, двухбитовая — обнаруживается и вызывает аппаратное прерывание. Без ECC ошибки в RAM приводят к повреждению данных или BSOD («синему экрану»), с ECC — корректируются прозрачно.

Как работает

Стандартная ECC-память добавляет 1 чип к каждым 8 основным чипам модуля: 72-битная шина данных вместо 64-битной. Дополнительные 8 бит хранят код Хэмминга. Алгоритм Хэмминга (7,4) исправляет 1 ошибку и обнаруживает 2 ошибки в каждом 64-битном слове. Частота возникновения спонтанных ошибок в памяти (soft errors) — около 1 ошибки на 1 ГБ памяти за 1 000 часов работы по данным исследований Google и Microsoft.

ECC требует поддержки как модулем памяти, так и контроллером памяти CPU. Серверные Intel Xeon и AMD EPYC поддерживают ECC, потребительские Intel Core i/K — нет (исключение — Threadripper Pro). Использование non-ECC памяти в сервере с активной базой данных — прямой риск повреждения данных без уведомления.

Существуют два типа ECC: UDIMM с ECC (Unbuffered ECC DIMM) — для рабочих станций и небольших серверов, и RDIMM (Registered DIMM) с ECC — для enterprise-серверов с большим числом слотов. RDIMM добавляет регистровый буфер, снижающий электрическую нагрузку на контроллер памяти и позволяющий использовать больше модулей.

История

Коды исправления ошибок разработаны Ричардом Хэммингом (Bell Labs) в 1950 году — алгоритм Хэмминга (7,4) стал базой для ECC. В памяти ECC начали применяться в мейнфреймах IBM в 1960–1970-х годах. В PC-сервера ECC пришла с платформами Pentium Pro (1995) и AMD Opteron (2003). Исследование Google 2009 года показало, что soft errors в серверах — не редкость: у 8% DIMM за год возникает хотя бы одна ошибка. Это окончательно закрепило ECC как обязательный стандарт для production-серверов.

ECC vs non-ECC для хостинга

ПараметрECCNon-ECC
Исправление ошибокДа (1-бит автоматически)Нет
Цена модуляНа 10–20% дорожеДешевле
ПрименениеСерверы, рабочие станцииПотребительские ПК
Надёжность данныхВысокаяРиск тихого повреждения

На что обращать внимание

Качественный хостинг всегда использует ECC-память. Это особенно важно для баз данных (PostgreSQL, MySQL): ошибка в RAM при записи транзакции без ECC приведёт к тихому повреждению данных. При выборе VPS-хостинга спрашивайте про ECC — ответственные провайдеры прямо указывают это в спецификациях серверов.

История ECC-памяти

ECC-память появилась в 1980-х годах в мейнфреймах IBM. В серверный сегмент x86 ECC внедрилась в 1990-х с появлением Intel Pentium Pro. Алгоритм SECDED (Single Error Correct, Double Error Detect) стал стандартом: исправляет 1-битовые ошибки, обнаруживает 2-битовые. Код Хэмминга (разработан Ричардом Хэммингом в 1950 году) лёг в основу алгоритма. Современные серверные RAM-модули формата RDIMM и LRDIMM поставляются исключительно с ECC.

Типичные ошибки

Основная ошибка — считать ECC необязательным для VPS-серверов. Космические лучи и электрические наводки вызывают примерно 1 ошибку на 8 ГБ в год в типичных условиях ЦОД. Без ECC эта ошибка приведёт к повреждению данных или случайному сбою процессов. Для PostgreSQL и финансовых систем non-ECC память неприемлема.

Другие термины