СПОСОБ ОБНАРУЖЕНИЯ СЛУЧАЙНЫХ "БЛУЖДАНИЙ" В МИКРОЭВМ
METHOD OF DETECTING RANDOM "WANDERINGS" IN MICROCOMPUTER

Изобретение относится к цифровой вычислительной технике и предназначено для решения задачи обнаружения случайных срывов процессора с заданной программы функционирования, что может быть вызвано действием случайных помех.
Наиболее близким по технической сути является способ обнаружения случайных «блужданий» в микроЭВМ, представленный в [Европейский патент EP 0.359.849 A1, МКИ G11F 11/00], [Шевкопляс Б.В. Микропроцессорные структуры. Инженерные решения: Справочник. М.: Радио и связь, 1993. - 256 с., стр.89].
Данный способ обнаружения случайных «блужданий» в микроЭВМ заключается в том, что программу работы процессора в виде блока из его машинных кодов размещают с каких-либо адресов постоянного запоминающего устройства, в котором затем последовательно располагают блоки, содержащие машинные коды данных, необходимые для исполнения программы, и непрерывный блок-ловушку случайных «блужданий» процессора, в ячейки которого для обнаружения случайных «блужданий» и целенаправленной реакции на них записывают самые короткие машинные коды одних и тех же команд.
Случайные «блуждания» процессора возникают тогда, когда он срывается с заданной программы функционирования, интерпретируя машинные коды данных как коды команд, а коды команд - как операнды или как коды их адресов. Полагается, что при таком блуждании с некоторой вероятностью процессор извлечет данные из непрерывного блока-ловушки и интерпретирует их как код команды. Предлагается заполнять непрерывный блок-ловушку массивами самых коротких машинных кодов одних и тех же команд, например «Сброс» или «Безусловный переход к команде с адресом А», что позволит обнаружить факт наличия случайного блуждания процессора и автоматически вернуть его к началу рабочей программы или некоторой заданной точке А программы.
При правильном функционировании процессора его обращение к непрерывному блоку-ловушке исключается, что обеспечивается в процессе разработки программы работы микроЭВМ.
При случайном срыве процессора с заданной программы функционирования не возможно предсказать точку его входа в постоянное запоминающее устройство. Можно лишь предположить, что такой точкой входа с равной вероятностью может быть любая ячейка постоянного запоминающего устройства. Тогда эффективность данного способа обнаружения случайных «блужданий» процессора микроЭВМ можно оценить величиной Н, определяемой как
,
где L - количество ячеек непрерывного блока-ловушки;
N - общее количество ячеек постоянного запоминающего устройства.
Очевидно, что
L≤N,
и величина Н изменяется в диапазоне от 0 до 1, причем ее равенство 0 соответствует тому случаю, когда в постоянном запоминающем устройстве размещены только блок из машинных кодов программы работы процессора и блоки кодов данных.
Известно, что в составе команд любой микроЭВМ содержатся команды условных и безусловных переходов, а так же команды организации циклических процессов. Это приводит к тому, что при возникновении срыва процессора с заданной программы функционирования траектория его случайного «блуждания» может длительное время находиться в блоке кодов рабочей программы или в блоках кодов данных. Такие ситуации либо принципиально не могут быть определены данным способом обнаружения случайных «блужданий», либо будут обнаружены через значительные промежутки времени, в течение которых может быть выполнена последовательность команд с непредсказуемыми последствиями.
Недостатком данного способа обнаружения случайных «блужданий» в микроЭВМ является ограниченная оперативность обнаружения факта случайных «блужданий».
Изобретение направлено на расширение функциональных возможностей способа обнаружения случайных «блужданий» за счет повышения оперативности обнаружения факта случайных «блужданий» и адекватной реакции на них.
Это достигается тем, что непрерывный блок-ловушку делят на множество локальных блоков-ловушек, которые равномерно размещают внутри блоков машинных кодов программ и кодов данных, при этом размер каждого локального блока-ловушки выбирают в полтора-два раза большим, чем размер машинного кода самой длинной команды микроЭВМ.
На фиг. представлена предлагаемая схема размещения в постоянном запоминающем устройстве локальных блоков-ловушек в блоках рабочей программы и блоках данных.
Заявляемый способ осуществляется следующим образом. Без разрушения целостности программы работы процессора и данных, необходимых для исполнения программы, в блоки постоянного запоминающего устройства, содержащие их, дополнительно и равномерно размещают локальные блоки-ловушки, размер (R) и количество (К) которых определяют из следующих соотношений:
R=(1,5…2)*c,
K=S/R,
где с - размер самой длинной команды процессора,
S - общий размер свободных областей постоянного запоминающего устройства, используемых как блоки-ловушки.
При одинаковых общих размерах S и L блоков-ловушек способ-прототип и заявляемый способ эквивалентны в смысле соотношения (1). Однако широко известно, что общее количество команд переходов и организации циклических процессов в типовой микроЭВМ значительно меньше, чем количество команд, реализующих линейную последовательность их выполнения. Отсюда логично следует, что при более частом и равномерном распределении локальных блоков-ловушек случайных «блужданий» процессора по всему постоянному запоминающему устройству время обнаружения «блужданий» и, следовательно, время адекватной реакции на них будет уменьшаться. При этом объем локальных «ловушек» должен быть не менее чем в полтора-два раза больше, чем размер машинного кода самой длинной команды микроЭВМ. Выполнение данного условия позволяет обнаружить блуждание процессора даже в том случае, если часть кодов из локальных «ловушек» будет интерпретирована процессором как операнды самой длинной предшествующей команды микроЭВМ.
Техническим результатом от использования заявляемого изобретения является расширение функциональных возможностей способа обнаружения случайных «блужданий» в микроЭВМ и повышение оперативности обнаружения случайных «блужданий», вызванных воздействием случайных помех.