Всем привет, дорогие друзья. Рад вас видеть! Сегодня поговорим про память с модулем коррекции ошибок, или про ECC-память. О ней я как-то упомянул в статье про зявоны, так вот - настало время разобраться в ее отличиях от обычной памяти.
И да, я буду писать это максимально простым языком (насколько получится), так что могут быть какие-то неточности. Поехали!
И так, ECC - это что?
ECC - это модуль коррекции ошибок, который позволяет либо просто опознать ошибку, либо еще и исправить ее. Коррекции поддается один бит на одно машинное слово, при этом если ошибок сразу две, то одна из них исправляется, а вторая просто опознается.
Например, мы летим в самолете, и в этот момент на его бортовом компьютере выполняется какая-то программа. На высоте в 10 километров количество солнечных лучиков (которые могут повлиять на память) в 300 раз выше, чем у самой земли, и если бы на самолете стояла память без коррекции ошибок - программа самолета сбоила бы максимально часто.
Модуль ECC, когда видит спонтанное изменение ячейки памяти, может скорректировать его до правильного состояния и выполнение кода продолжится. Память без коррекции ошибок передала бы неправильное значение.
Короче говоря, модуль коррекции ошибок за один такт контроллера памяти сверяет все значения и корректирует одно значение, если оно неправильное. Если неверны два значения, то модуль может сигнализировать об ошибке 2, тогда как ошибка 1 будет автоматически исправлена.
REG-ECC или NON-REG-ECC?
А что такое регистровая память? Это штука, которая имеет буфер между памятью и контроллером памяти. Память с коррекцией ошибок может быть регистровой, а может и не быть регистровой, однако вся регистровая память имеет модули ECC.
Фишка в том, что наличие буфера снижает нагрузку на контроллер памяти процессора, так что таких планок можно напихать по 8 штук в один канал памяти. Это дает нереальную масштабируемость, что нужно во всяких серверах и тому подобных вещах.
Но такая память стоит дороже, так как применяется далеко не везде (соответственно, не те масштабы производства). Опять же - не везде она нужна. И если обычная потребительская плата, скорее всего, сможет запустить не буферизованную ECC-память, то вот регистровая память запускается только с тем железом, где контроллер памяти поддерживает такую память.
Вот я - обычный пользователь. Почему мне не поставили ECC-память?
Да просто потому что это как бы и не особо нужно... В плане того, что такая память нужна только там, где нужна максимальная отказоустойчивость системы, то есть - в самолетах, серверах, на космических станциях и так далее.
Такая память работает несколько медленнее (на 2-3%), чем не буферизованная, так как на заполнение буфера требуется один такт контроллера памяти, а стоит при этом в несколько раз дороже.
При этом сюрприз-сюрприз - все программы для обычных пользователей при ошибке в памяти просто вылетят, либо одна ошибка не приведет к концу света. А вот если такую память использовать, скажем, в компьютере на МКС... То вся программа пойдет по бороде.
Вот так-то! Описал все крайне просто, так что мог допустить какую-нибудь неточность. До скорого!
Не забудь подписаться на на телеграм (там IT-новости), Ютуб (там иногда выходят прикольные видео), и группу ВК (там пока ничего нет, но это только пока).