Введение в архитектуру компьютеров

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


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

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

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

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

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

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

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

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

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

Недостатки:

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

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

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



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

Общие принципы МС- проверок сформулировать трудно, ибо многое зависит от конкретной задачи и искусства программиста.

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

Способ подстановки.

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

Дополнительные связи переменных.

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



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

Проверка предельных значений.

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

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

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



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

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

сом входа в блок А равен Nвх.  А = А + 2А.

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


Содержание раздела