.: Метод следящего самоконтроля микроЭВМ на основе предварительного прогнозирования вариантов ее «поведения»:.
При использовании микроЭВМ в системе, работающей в реальном масштабе времени, не исключена возможность того, что в результате сбоя или отказа она
начнет беспорядочное «блуждание» по памяти, рассматривая числовые массивы как цепочки команд, команды — как данные или адреса и т.д. Поскольку
неправильное управление недопустимо для многих объектов, возникает задача быстрого обнаружения подобных «срывов».

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

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

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

Необходимо знать лишь адреса внешних входов в эту программу. В результате прогнозирования формируется массив вспомогательной информации о
программе. Формирование этого массива может производиться как на кроссистеме программирования, т.е. «вдали» от исполнительной микроЭВМ, так и на самой
исполнительной микроЭВМ (после трансляции программы).

При работе системы самоконтроля одновременно с выбором из основной памяти начальной команды некоторого линейного участка, из дополнительной памяти (по
отдельным шинам) извлекается служебная информация, которая помещается в аппаратные счетчики, содержимое их уменьшается по мере приближения к концу
данного линейного участка. (Разрядность счетчиков может быть небольшой; в этом случае ведется счет по модулю.) При выходе на начало другого линейного
участка счетчики проверяются на равенство нулю их содержимого, затем они вновь загружаются и т.д. Таким образом, ход выполнения любой, даже сильно
разветвленной, программы постоянно контролируется. «Срыв» не будет зарегистрирован только в том случае, если он произошел точно в конце какого-либо
линейного участка и микроЭВМ «ушла» точно на начало «чужого» линейного участка. Вероятность именно таких «точных» срывов мала. Время между
возникновением сбоя или отказа и его обнаружением не превышает времени прохождения линейного участка максимальной длины и, поскольку последний может
быть искусственно разбит на достаточно короткие звенья, может составлять, например, 100 мкс.

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



<------ Назад

 

Hosted by uCoz