Рейтинг@Mail.ru

Контроль четности и коррекция ошибок. Как это работает?

Всего просмотров: 37286. Сегодня: 12.      Опубликовано: 10 декабря 2000 в 00:00

Необходимость проверки ошибок.

Первоначально IBM PC требовали использование модулей памяти с контролем четности, так как они были разработаны инженерами хорошо знакомыми с потребностями пользователей использующих большие универсальные компьютеры или т.н. мэйнфреймы. Полупроводники, производимые в то время, как считалось, были не столь надежны, как сегодняшние, поэтому существовала потребность убедиться, что каждый доступ к памяти содержал правильные данные.

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

Apple подошла к этому вопросу по другому. Они посчитали, что для среднего, домашнего пользователя, для которого разработаны компьютеры Apple (не путать с современными Apple Macintosh), возникновение случайной ошибки не будет носить столь серьезный характер. По этой причине было принято решение не включать в схему компьютера модули памяти с контролем четности. Это позволило уменьшить стоимость на 12%, что по тем временам очень существенно, ведь 4MB памяти стояли несколько сотен долларов.

Производители IBM PC клона компьютеров, посчитали, что они также могут постепенно отказаться от использования моделей памяти с контролем четности, и впервые стали использовать их в 386 машинах. С появлением 486 процессора, большинство компьютеров использовали модули памяти без контроля четности.

Сегодня практически все компьютеры используют модули без проверки четности. Современные чипы памяти могут вызвать случайную ошибку с вероятностью один раз в десять лет или даже реже.

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

Как работает проверка ошибок?

Проверка четности – довольно простой метод обнаружения ошибок памяти, без возможности восстановления. Каждый байт данных связан с одним битом четности или так называемым паритетным битом. Этот бит устанавливается во время записи, и затем рассчитывается и сравнивается во время чтения. Изменение состояния этого бита говорит о возникшей ошибке. Этот метод ограничен определением изменения состояния одиночного бита в байте. В случае изменения состояния двух битов, возможна ситуация, когда вычисление паритетного бита совпадет с записанным. В этом случае система не определит ошибку, и произойдет экстренная остановка системы.

Так как приблизительно 90% всех нерегулярных ошибок происходит именно с одиночным разрядом, проверки четности бывает достаточно для большинства ситуаций.

К сожалению необходимость в дополнительных вычислениях паритетного бита требует некоторых затрат процессорного времени, что несколько снижает производительность всей системы.

Более интересным методом проверки ошибок работы памяти является т.н. ECC или коррекция ошибок или код исправления ошибок. Этот метод включает определение ошибки не только в одиночном разряде, но и двух, трех и четырех разрядах. Кроме того ECC может также исправлять ошибку в одиночном разряде. ECC может быть реализован или на модуле памяти (ECC – on – Simm, или EOS) или в чипсете. Однако модули EOS встречаются крайне редко.

ECC основывается на алгоритме «хешинга», который работает одновременно с 8 байтами (64 бита), и размещает результат в 8-ми разрядное ECC слово. Во время считывания результат ECC слова сравнивается с рассчитанным, подобно тому, как происходит в методе проверки четности. Основное различие состоит в том, что в проверке четности каждый бит связан с одним байтом, в то время как ECC слово связана со всеми 8 байтами. Это означает, что разрядные значения для ECC не будут теми же, что и индивидуальные биты для проверки четности для тех же восьми байтов, поэтому модули ECC не могут использоваться в режиме четности (однако, паритетные модули, могут использоваться в режиме ECC, как описано ниже). Обратите внимание, что это описание для ECC основано на ширине памяти 64 бита. Если ECC реализуется на 486 процессоре (32-х разрядная шина), то это требует 7-ми битного ECC слова.

Модули с проверкой четности против ECC модулей.

Паритетные и ECC модули могут работать практически на любой системной плате, которая не имеет поддержки parity/ECC. В этом случае контрольные биты просто игнорируются.

Модули SIMM могут быть с и без проверки четности, а также с поддержкой ECC. DIMM модули бывают только с или без ECC.

Паритетные SIMM могут использоваться на любой системной плате, поддерживающей четность или ECC (при условии правильной реализации BIOS).

ECC модули могут использоваться на не паритетный и на ECC/ non-ECC платах. Модуль ECC не может использоваться в режиме проверки четности. Причина этого является схемотехническая реализация модуля ECC. Он не может устанавливать отдельные биты, поэтому чипсет не будет записывать правильные данные в ECC слово.

Физические характеристики

Прежде чем идти дальше давайте определимся с условными обозначениями. Мы будем называть «MB» - мега байты, и «Mb» - мега биты.

Рассматривая дизайн 16MB SIMM с контролем четности, мы видим 12 чипов. Восемь 16Mb чипов для данных и четыре 4Mb – для битов четности. Такая конфигурация необходима потому, что SIMM выдает одновременно на шину 32 бита т.е. 4 байта.

Четыре 4Mb чипа позволяют синхронно работать с этими четырьмя байтами.

В Pentium системах ситуация практически аналогичная, за исключением необходимости одновременной обработки 64 бит данных. Поэтому в этом случае необходимо использовать два модуля SIMM.

16MB модуль ECC работает примерно по той же схеме. Только вместо четырех 4Mb чипов используется один 16Mb в конфигурации 4Mb x 4.

64MB ECC DIMM модуль использует восемь 64Mb чипа и один 64Mb чип в конфигурации 8Mb x 8 для реализации ECC.

Заключение.

Этот материал, носит ознакомительный характер. Сегодня даже самые быстродействующие чипы памяти практически исключают вероятность появления ошибки. Но если Вы все же хотите быть на 100% уверены в том, что ошибки не будет, рекомендуем воспользоваться знаниями, полученными в этой статье.