Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технология защиты от сбоев

.pdf
Скачиваний:
52
Добавлен:
24.05.2014
Размер:
118.91 Кб
Скачать

Технологии защиты от сбоев.

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

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

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

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

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

2.Малозначительный сбой ведет за собой полную остановку системы и возможную потерю ценной информации (что особенно обидно в многозадачной среде).

3.Как ни грустно, к потере информации может привести ошибка в бите четности.

4.Метод никак не застрахован от двойных ошибок (одновременное изменение значений двух бит не влияет на контрольную сумму).

Логические операции над данными могут, вообще говоря, потребовать лишних тактов ожидания.

В результате, примерно в 1994 году стал происходить постепенный отход от использования "простой" схемы контроля четности. Подавляющее большинство настольных систем отказалось от контроля четности вообще, а в серверах стали применять более прогрессивный, с точки зрения сохранности данных, метод ECC. Для апгрейда старых систем, требовавших память с контролем четности, на рынке появилась "логическая четность". В настоящее время схема обычного контроля четности практически не применяется.

Как раз для работы с битами четности и использовался 9-ый бит в SIMM 30pin и 33-36 биты в SIMM 72pin.

Логическая четность (logic parity, известна также под названием bridge parity, parity emulation, наиболее правдивое название fake parity - "лож-

ная четность") - техническое решение, впервые примененное в 19941995 году. В это время происходил массовый переход индустрии PC на более дешевую память без четности. Обделенными при этом чувствовали себя владельцы еще относительно новых на тот момент 486-х компьютеров, подсистема памяти которых не позволяла использовать такое решение, в результате чего они без особой на то необходимости были вынуждены использовать дорогостоящую четность. Для них и была предназначена четность логическая.

Идея, в сущности, была довольно простая. Как мы уже упомянули, в рамках контроля четности для группы бит, записываемых в память, контроллер вычисляет контрольную сумму и записывает ее в виде специального бита четности. При считывании данных контрольная сумма вычисляется снова и сравнивается с хранящейся в бите четности, при совпадении двух сумм данные считаются верными. Необходимость хранения битов четности и удорожала всю систему. Модули с логической четностью вообще не имеют чипов четности, зато имеют логический чип, который при считывании данных сам вычисляет "контрольную" сумму и предъявляет ее контроллеру, как если бы эта сумма сохранялась в модуле. Понятно, что эта сумма всегда совпадает с той, которую вычислит сам контроллер, таким образом, фактически контроль четности отсутствует. Цена логической микросхемы по сравнению с чипами четности исчезающе мала, так что главную задачу - экономию - можно считать выполненной. Таким образом, вообще говоря, можно признать правомерным использование модулей с логической четностью там, куда они первоначально были предназначены - в устаревших настольных системах, в которых невозможно отключить контроль четности, однако отсутствует реальная необходимость его осуществлять. При условии, конечно, что эти модули там заработают - во многих системах такая память неработоспособна. Тому есть естественное объяснение - никакая логика не срабатывает мгновенно, соответственно, логическая четность вносит изменения во временные диаграммы модуля памяти, и эти изменения одобрит не всякий контроллер. Кроме того, бессмысленно было бы возражать

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

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

2.Сумматор в лучшем случае не ухудшит временные характеристики подсистемы памяти, но вполне может это сделать.

3.Установка ложной четности в сервер не рекомендуется ни под каким предлогом - даже если сервер и будет с ней работать, в конце концов, большие деньги за него платили именно во имя надежности, которой вы поступаетесь.

4.Наконец - имейте в виду, что уважающие себя производители НИКОГДА не выпускали SIMM с логической четностью - таким образом, вы покупаете продукт низшей, чем это возможно, категории качества.

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

Помимо памяти с контролем четности применялась, а главное, и сейчас применяется, так называемая ECC память. ECC обычно расшифровывается как Error Checking and Correction, существуют и другие версии перевода, но смысл заключается в том, что речь идет о схеме обнаружения И ИСПРАВЛЕНИЯ ошибок в памяти. За счет чего удается добиться таких потрясающих результатов? Идея, лежащая в основе метода, довольно проста - пусть каждый бит основной памяти входит БОЛЕЕ ЧЕМ В ОДНУ контрольную сумму. Это потребует увеличения числа контрольных бит (напомним - стандартный метод контроля четности реально не требует более 1 контрольного бита на всю шину), но даст возможность восстанавливать позицию (а, следовательно, и значение) сбойного бита по позициям не сошедшихся контрольных сумм. Предполагается, что контроллер

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

Разумеется, что память с ECC стоит заметно дороже обычной памяти и находит применение в первую очередь в серверах.