Обмен технологиями

Управление базой данных — выпуск 218 Память сервера (20240711)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Управление базой данных — выпуск 218 Память сервера (20240711)

Автор: Аквариум толстоголовой рыбы (Инь Хайвэнь)
Oracle ACE Pro: База данных (Oracle и MySQL)
Партнер PostgreSQL ACE
10 лет опыта работы в индустрии баз данных, в настоящее время в основном занимается услугами баз данных.
Имеет OCM 11g/12c/19c, MySQL 8.0 OCP, Exadata, CDP и другие сертификаты.
Мо Тяньлун MVP, Звезда года Moli, сертифицированный эксперт ITPUB, член Экспертной группы 100, лектор OCM, технический консультант сообщества открытого исходного кода PolarDB, внешний технический консультант HaloDB, член группы наблюдения OceanBase, Молодежная ассоциация Технологическое сообщество MOP (Молодежная база данных) Ассоциация взаимной помощи обучения) Технический консультант
У него в кругу такие титулы, как «Директор», «Охранник» и «Самый большой враг внутренней базы данных», и он не является известным социальным террористом (социальным террористом).
Публичный аккаунт: Аквариум для толстоголовых рыб; CSDN: Аквариум для толстоголовых рыб (Инь Хайвэнь): Аквариум для толстоголовых рыб; ITPUB: yhw1809.
Если не перепечатано с разрешения и не указан источник, это «незаконный» плагиат.

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

1 воспоминание

Память является важным компонентом компьютера. Она используется для временного хранения расчетных данных в ЦП и обмена данными с внешними запоминающими устройствами, такими как жесткие диски. Это мост между внешней памятью и процессором. Все программы компьютера выполняются в памяти. Пока компьютер начинает работать, операционная система передает данные, которые необходимо вычислить, из памяти в ЦП для расчета. Когда расчет будет завершен, ЦП передаст результаты.
Появление памяти в основном связано с огромной разницей в пропускной способности и задержке между внешним хранилищем и встроенным кешем ЦП (т. е. L1, L2, L3). По сути, он больше, чем встроенный кеш ЦП, но в целом. намного меньше, чем внешнее хранилище. Промежуточное устройство передачи данных может заранее ускорить подготовку данных из более медленного внешнего хранилища, сокращая или даже устраняя время ожидания ЦП для получения данных.
Память, которую мы сейчас в основном используем на серверах, — это память DDR. Я не буду вдаваться в подробные объяснения того, что такое DDR. Основные поколения памяти — это DDR4 и DDR5. Помимо общей памяти, существует также энергонезависимая память PMEM на основе интерфейса памяти (или интерфейса PCIe) (на примере Intel Optane), которая обеспечивает больший объем данных между памятью и внешним хранилищем и близка к Скорость области кэш-памяти.

2 ECC-памяти

Вообще говоря, на серверах находятся важные бизнес-системы. Во время работы электронного оборудования возникают сильные электромагнитные помехи. Эти электромагнитные помехи могут вызвать переключение битов (то есть обмен 0 и 1) во время взаимодействия данных между памятью и памятью. Таким образом, при выполнении данных возникнут ошибки. Если это общее программное обеспечение или программа для ПК, оно может даже сообщить об ошибке или сбое. Однако, если эта проблема возникнет в важной системе, это приведет к более серьезным последствиям. (ведь банк не хочет, чтобы ваши активы увеличивались без причины. Несколько 0, вы не хотите, чтобы ваши активы уменьшались).
Затем появилась память ECC, которая активно обнаруживала ошибки в данных и исправляла их.

3 принципа

Вот два относительно примитивных решения:

3.1 Передача нескольких копий

То есть фрагмент данных передается в 3-х копиях. Если где-то в определенной копии есть проблема, ее можно исправить:
изображение.png
Но также возникли проблемы. Хотя вероятность возникновения очень мала, если два фрагмента данных имеют перестановку битов в одной и той же позиции, то возникнут проблемы с проверкой данных и исправлением ошибок:
изображение.png
Самая большая проблема при использовании этого метода — потеря пропускной способности ввода-вывода.

3.2 Код исправления ошибок

Таким образом, код исправления ошибок добавляется в начале данных, то есть код исправления ошибок добавляется перед каждым фрагментом данных. Когда количество единиц в данных является четным, код исправления ошибок равен. 0, а когда число нечетное, код исправления ошибок равен 1.
изображение.png
Если код исправления ошибок не соответствует количеству единиц, данные передаются повторно.
изображение.png
Это также создает проблему. Каждая проверка может только определить, в порядке ли все данные. Теоретически исправление ошибок не производится, и повторная передача приведет к увеличению задержки.
В то же время, если одновременно возникают две ошибки данных, цель проверки все равно не может быть достигнута.

3.3 Код Хэмминга

Код Хэмминга — это основной метод проверки и исправления ошибок, используемый в настоящее время в памяти ECC.
Давайте пройдемся по шагам и упорядочим 16-битные данные следующим образом. Предположим, что бит 2 отвечает за проверку четности в правой части, тогда эти данные имеют две единицы, а бит 2 равен 0. Если в данных есть ошибка и проверка четности определяет, что в правой половине нет проблем, то проблема в левой половине, в противном случае проблема в правой половине.
изображение.png
Как показано на рисунке ниже, бит 1 выполняет проверку четности в столбцах 2 и 4, затем бит 1 сохраняет 1. Если проблема с проверкой четности в столбцах 2 и 4, то проблема в столбцах 2 и 4, иначе проблема в столбцах 1 и 3.
изображение.png
Сочетание двух вышеуказанных методов позволяет легко определить, в каком столбце данных возникла проблема:
изображение.png
Далее используйте аналогичный метод, используя бит 4 для проверки строк 2 и 4 и бит 8 для проверки нижней половины. Путем разделения строк и проверки четности раздела можно найти конкретное место ошибки и выполнить исправление ошибок (переворот). Вот и все.
изображение.png
Однако предпосылка вышеизложенного решения заключается в том, что существует проблема с данными по умолчанию. После того, как описанный выше метод используется для определения, бит данных № 0 не включается в защиту, не влияет на то, является ли он неправильным. приведенный выше результат проверки четности. Поэтому мы используем бит 0 для проверки всего блока данных, используя метод 3.2.
изображение.png
В этом случае при наличии двух ошибок результаты полной проверки четности диска и проверки четности раздела будут конфликтовать. Определить место ошибки невозможно, но можно определить, что весь блок данных ненормален. Просто повторите передачу данных.
изображение.png
Но когда есть три ошибки в данных, судить становится невозможно.
изображение.png
По-другому мы обнаружим, что все позиции проверочных кодов равны 2 в N-й степени:
изображение.png
Проверочный код необходимо разместить только в N-й позиции степени 2. Чем больше блок, тем меньше содержимого занимает код исправления ошибок, но тем больше вероятность многократного переворота бита. Общий размер блока передачи ECC составляет 72 бита, 64 бита — данные, а 8 бит — код исправления ошибок. Следовательно, обычно для памяти емкостью 8 ГБ требуется только восемь частиц памяти емкостью 1 ГБ, тогда как для памяти ECC емкостью 8 ГБ требуется девять частиц памяти емкостью 1 ГБ. Дополнительный 1 ГБ используется для хранения дополнительной емкости кода исправления ошибок.
Однако компьютерная коррекция ошибок определенно не будет вычислять позицию ошибки обычным «глупым» способом. Этого можно добиться, используя прелесть двоичного кода. Мы представляем позицию в двоичном формате:
изображение.png
Мы удаляем все позиции, равные 1, и выполняем вертикальную двоичную операцию ИЛИ, чтобы напрямую получить проблемную позицию:
изображение.png

Приложение: Существует также LDPC (код проверки четности низкой плотности), который представляет собой код проверки четности низкой плотности. Конкретный принцип реализации здесь не будет объясняться. Этот метод может определить проблему многобитового переворота и часто используется. используется для проверки SSD. Из-за высокой скорости и стоимости реализации памяти для реализации ECC до сих пор используются коды Хэмминга.

Подведем итог

В этом выпуске кратко описывается, как память ECC реализует коррекцию ошибок.
Старое правило — знать, что написано.