.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

7.4. Контроль данных

 

Проблема обеспечения достоверности функционирования ВС имеет много общего с проблемой достоверности передачи дискретной информации по каналам связи (КС). В обоих случаях она включает две группы мероприятий:

·  совершенствование элементов аппаратуры в целях снижения вероятности появления ошибок;

·  разработку эффективных методов контроля, т. е. методов обнаружения ошибок и их исправления.

 

7.4.1. Специфика передачи информации
в вычислительных системах

 

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

1. К достоверности ВС предъявляются более высокие требования. Работа в ВС осуществляется автоматически, без участия человека, как это иногда бывает при приеме текста, и исправить ошибку "по здравому смыслу" нельзя.

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

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

4. Обычно каждой выполняемой операции предшествуют поиск и выборка из ЗУ очередной команды и операнда. Искажение адреса – и будет выполнена не та команда или не над теми операндами. Возникает задача контроля адресного тракта.

5. Все элементы ВС в отличие от КС находятся территориально, как правило, в одном месте. Исправление ошибки может начаться незамедлительно после ее обнаружения.

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

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

 

7.4.2. Классификация ошибок и их характеристики

 

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

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

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

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

Пример. Пусть правильный результат ~ 101111, а нами получен ~ 110000. Результаты отличаются в пяти позициях, но их разность равна 000001. Следовательно, ошибка одиночная.

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

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

Наиболее просто обнаруживать и исправлять одиночные ошибки. Поэтому важно выяснить законы распределения вероятностей ошибок в числе или слове. Наиболее просто это сделать для компьютера параллельного действия. Здесь каждый двоичный разряд передается по отдельному каналу и обрабатывается в отдельных устройствах, связанных друг с другом только цепями переноса. Следовательно, возникновение ошибок в отдельных двоичных разрядах можно считать независимыми случайными событиями, имеющими одинаковую вероятность. Тогда для ошибок i-й кратности в n-разрядном числе справедлив биномиальный закон распределения:

(3)

где Qi – вероятность ошибки i-й кратности в числе; q – вероятность ошибки в одном разряде при выполнении одной операции.

Формула (3) позволяет определить вероятность ошибки i-й кратности при условии, что в остальных n–i разрядах ошибок нет. Из формулы (3) следует, что для очень малых значений q наибольшую вероятность имеет случай одиночной ошибки.

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

То же можно сказать о ЗУ на НМЛ и НМД. Запись и чтение информации с них обычно выполняются последовательным или последовательно-параллельным способом. Кроме того, причиной ошибок могут быть различные механические повреждения магнитной поверхности. При большой плотности записи последняя ситуация является источником целой группы ошибок.

 

7.4.3. Методы обнаружения и исправления ошибок в ЭВМ

 

Автоматический контроль функционирования ЭВМ предполагает получение каким-либо способом информации об ошибках. Причем для исправления ошибок требуется более полная информация.

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

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

Достоинства программных методов:

·  простота реализации;

·  отсутствие дополнительного оборудования;

·  возможность применения в любом компьютере.

Недостатки:

·  значительное снижение производительности компьютера;

·  проблематичность использования в компьютерах, работающих в режиме управления.

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

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

Недостатки: необходимость увеличения объема аппаратуры.

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

Достоинства комбинированного метода:

·  производительность компьютера снижается незначительно, ибо исправляющая программа включается редко;

·  объем дополнительного оборудования гораздо меньше того, который требуется при схемном методе.

 

7.4.4. Программные методы контроля

 

Программные методы базируется на использовании специальных методов и пакетов контролирующих программ. Различают тестовый и программно-логический контроль. Тестовый контроль осуществляется в ЭВМ периодически с помощью программ-тестов. Тесты бывают:

·  наладочные – для комплексной наладки компьютера;

·  проверочные – для проверки устойчивости близких к отказу элементов во время профилактики ЭВМ;

·  программы контрольных задач – пропускаются во время решения задачи в целях проверки работоспособности компьютера;

·  диагностические – для локализации обнаруженных отказов путем программного анализа ошибок.

Программно-логический контроль ставит цель – непосредственно проверить правильность решения задачи при выполнении основной программы. Можно вводить некоторые операции дополнительно для контроля всех выполняемых операций. Рассмотрим ряд способов такого контроля.

Контроль решений методом двойного счета. Суть метода состоит в повторном вычислении всей задачи или отдельных ее частей. Результаты сравниваются и их совпадение считается признаком достоверности результата. При несовпадении результатов решение повторяется до двух одинаковых результатов, которые считаются верными.

Если решение задачи – таблица, то получается некоторая контрольная сумма и производится сравнение этих контрольных сумм.

Достоинство метода в простоте, однако необходимо предварительно предусмотреть контрольные точки.

Недостатки:

·  время с контролем Т¢ намного больше времени решения задачи без контроля;

·  использовать метод можно лишь тогда, когда исходные данные при решении задачи не разрушаются или могут быть легко восстановлены;

·  исправляются лишь случайные ошибки, как результат сбоя.

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

Рассмотрим некоторые типовые примеры.

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

Дополнительные связи переменных. Суть: используются некоторые дополнительные связи между искомыми величинами. Типичные примеры – связи между тригонометрическими функциями:

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

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

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

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

Пример. Пусть программа разделена на ряд вычислительных блоков, начальные адреса которых хранятся в виде таблицы. Основная функция общей части программы – правильно определить вход в эту таблицу.

Пусть таблица имеет 8 входов. Выберем для их хранения 8 из 16 последовательных ячеек ЗУ, которые имеют адреса с четным числом единиц (см. табл. 11.5). Во все остальные ячейки поместим одну и ту же команду перехода к исправляющей программе ПкИП. Определить вход в таблицу несложно. Вот одна из возможностей. Для определения номера входа (N) надо брать все числа от 0 до 7, складывать их с числом, сдвинутым влево на один разряд. Таким образом, номер ячейки Nвх. А с адресомвхода в блок А равен Nвх. А = А + 2А.

 

 

N ячейки

 

 

0000

0

ПкИП

0001

 

ПкИП

0010

 

 

0011

3

ПкИП

0100

 

 

0101

5

 

0110

6

ПкИП

0111

 

ПкИП

1000

 

 

1001

15

 

1010

10

ПкИП

1011

 

 

1100

12

ПкИП

1101

 

ПкИП

1110

 

 

1111

9

 

Таблица 7.5. Пример адресного кодирования

 

Вычислим номера ячеек, в которых записаны адреса входов во все восемь блоков.

1)   000

 

2)   001

 

3)   010

 

4)   011

 

5)   100

 

6)   101

 

7)   110

 

8)   111

000

 

001

 

010

 

011

 

100

 

101

 

110

 

111

 

000

 

 

011

 

 

110

 

 

101

 

 

1100

 

 

11111

 

 

1010

 

 

1001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N=0

 

N=3

 

N=6

 

N=5

 

N=12

 

N=15

 

N=10

 

N=9

Замечание. Межразрядные переносы и выходы за интервал при выполнении операции не учитываются. Одиночная ошибка (любая) при определении входа в блок передает управление к повторному вычислению ее номера.

Упражнения

1. Разработайте n-значный код Хемминга, создайте и реализуйте алгоритм обнаружения и исправления k-кратной ошибки.

2. Разработайте алгоритм сжатия простого текстового документа.

3. Разработайте и реализуйте алгоритм сжатия цветного изображения.

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

5. Разработайте и реализуйте алгоритм защиты от дизассемблера, используя:

·  механизм самогенерируемых кодов;

метод динамического изменения кода исполняемого модуля.

На главную