Изобретение относител к вычислительной технике и может .быть испопь- зовано при построении нацежлых микропроцессорных систем,.нечувствительных к сбоям программы.
Цель изобретения - повышение достоверности контроля.
На чертеже изображена структурная схема устройства.
Устройство для контроля хода программ содержит первый блок 1 постоянной памяти, накапливающий сумматор 2. схему 3 сравнения, элемент И 4, дешифратор 5, комбинационный сумматор 6 и второй блок 7 постоянной памяти.
Устройство работает следующим образом.
Пусть необходимо контролировать ход программы некоторой микропроцессорной системы, Программа представляет собой совокупность команд и хранится в памяти команд. В качестве
последней обычно используется постоянное запоминающее устройство. Каждая команда занимает от одной до нескольких соседних ячеек памяти и информационно характеризуется массивом слов (байтов).
Процесс воспроизведения программы заключается в последовательном (шаг за шагом) извлечении из памяти команд слов программы, их декодировании и реализации- предписанных операций. При этом на каждом шаге программы извлечение очередного слова сопровождается тем, что на шине адреса системы устанавливается адрес указанного слова. Затем генерируется сигнал чтения, по которому адресуемое слово поступает на шину данных системы и принимается микропроцессором на декодирование.
Для реализации своих функций устройство подключается к микропроцессорной системе таким образом, что его
адресный вход соединяется с шиной адреса системы, информационный вход - с шиной данных, а на управляющий вход устройства подается сигнал чтения, Нарушение хода программы фиксируется путем генерации устройством на своем выходе сигнала ошибки.
Для обеспечения контроля в предлагаемом устройстве каждому адресу (каждой точке) программы ставится в соответствие некоторое контрольное число. Указанное число фактически является суммой (например, по модулю 256) всех слов программы, которые в, процессе корректных вычислений извле- каются из памяти команд системы к моменту прохождения программы через
гг
соответствующую точку. При этом контрольные числа вычисляются заранее и еще до начала работы устройства размещаются в первом блоке 1 постоянной памя ти.
В процессе реализации программы накапливающий сумматор 2 осуществля- ет суммирование всех извлекаемых микропроцессором.слов программы. Б результате этого в каждой точке программы вычисляются текущие суммы, которые сравниваются с контрольны- ми числами. Для обеспечения корректности операций сравнения необходимо, чтобы текущие суммы каждой точки программы не зависели от того, по какой траектории воспроизводилась программа к моменту прохождения через указанную точку. Это достигается тем, что в отдельных точках программы, находящихся в различных ее ветвях и, следовательно, принадлежа- щих различным траекториям, в устройстве осуществляется необходимая коррекция текущих сумм, Корректирующие коды так же, как и контрольные числа вычисляются заранее и размещаются во втором блоке 7 постоянной памяти,
Таким образом, при правильном исполнении программы текущие суммы (с учетом коррекции) всегда совпадают с контрольными числами и ошибка не фиксируется. При нарушении хода программы возникает несоответствие между текущими суммами и контрольными числами. Это приводит к появлению на выходе устройства сигнала ошибки,
Рассмотрим работу предлагаемого устройства на некотором шаге программы. В процессе реализации указанного шага на адресный вход устройства и, следовательно, на вход первого блока 1 постоянной памяти подается адрес, по которому в микропроцессорной системе из памяти команд извлекается очередное слово программы. Это обеспечивает появление на выходе первого блока 1 постоянной памяти контрольного числа, соответствующего данной точке программы.
Пусть на рассматриваемый момент времени в накапливающем сумматоре 2 накопилась некоторая сумма, характеризующая работу программы за предыдущее время. Указанная сумма и контрольное число с выхода первого блока 1 постоянной памяти поступают на схему 3. Схема 3 сравнивает поступившие числа и в случае их равенства формирует на своем выходе нулевой логический уровень, свидетельствующий о корректности выполняемых вычислений. С выхода схемы 3 указанный i сигнал поступает на вход элемента И 4.
Оценка корректности реализуемых программой вычислений осуществляется в процессе обращения микропроцессора, к памяти команд. Факт такого обращения устанавливается путем декодирования дешифратором 5 адресной информации системы. При этом на вход стробирования дешифратора 5 подается сигнал чтения, генерируемый.микропроцессором. Если на шине адреса системы установлен адрес памяти команд, то указанный сигнал вызывает срабатывание дешифратора 5. Сигнал с выхода дешифратора 5 стробирует элемент И 4, в результате чего на выход устройства передается информация с выхода схемы 3, При корректных вычислениях схема 3 фиксирует совпадение текущей суммы с контрольным числом и сигнал ошибки на выходе устройства не формируется.
В процессе обращения микропроцессора к памяти команд на информационный вход устройства подается текущее слово программы, Код указанного слова поступает на вход первого операнда комбинационного сумматора 6, На вход второго операнда комбинационного сумматора 6 поступает код с выхода второго блока 7 постоянной памяти. В обычных условиях, когда коррекция текущей суммы не требуется, указанный код является нулевым.
51
В результате сложения нулевого кода со словом программы последнее без изменений передается на выход комбинационного сумматора 6, откуда поступает на вход накапливающего сумматора 2.
После приема микропроцессором текущего слова программы с управляющего входа устройства снимается сиг- нал чтения. Это вызывает переключение дешифратора 5 в исходное состояние и снятие сигнала стробирова- ния элемента И 4. По заднему фронт-у указанного сигнала накапливающий сум матор 2 добавляет к хранящемуся в нем числу код с выхода комбинационного сумматора 6 (слово программы) и формирует на своем выходе новую сумму. При этом равенство кодов на входах схемы 3 нарушается и она формирует единичный логический уровень. Однако в этот момент времени элемент И 4 закрыт нулевым уровнем сигнала стробирования и распространение лож- ного сигнала ошибки блокировано.
На следующем шаге программы устройство выполняет аналогичные действия и т.д. В результате при правильной реализации программы на вы- ходе устройства никогда не появляется сигнал ошибки,
Нарушение нормального хоца программы может быть вызвано, например, сбоем счетчика команд в микропроцес- соре или отказом адресных линий в шине адреса. Это приводит к искажению информации на шине адреса и наруше- - нию последовательности выбора слов программы (ложный переход). Кроме того, возможны отказы ячеек памяти команд и отказы линии связи в шине данных. Это приводит к чтению некорректных слов программы из памяти команд системы (ложный код команды). Предлагаемое устройство обеспечивает выявление подобных нарушений нормального хода программы с высокой степенью достоверности.
Действительно, при искажении ин- формации на адресной шине микропроцессорной системы (ложный переход) и бпока 1 постоянной памяти будет извлечено контрольное число, не соответствующее верному состоянию накап- ливающего сумматора 2. При искажении информации на шине данных микропроцессорной системы (ложный код команды) состояние накапливающего сумматоМ6
pa 2 не будет соответствовать верному контрольному числу на выходе блока 1 постоянной памяти. В обоих случаях схема 3 зафиксирует неравенство чисел на входах путем установки на своем выходе единичного логического уровня. В результате в процессе обращения микропроцессора к памяти команд и появления сигнала стробнрова- ния на выходе дешифратора 5 открывается элемент И 4 и на выходе устройства формируется сигнал ошибки, который свидетельствует о нарушении нормального хода программы.
Однако таким образом устройство функционирует только при воспроизведении линейных участков программ, не содержащих точек слияния ветвей, В этом случае каждому слову-из памяти команд микропроцессорной систем может быть поставлено в соответствие только одно контрольное число. Указанное обстоятельство и дает возможность вычислить и разместить заранее в первом блоке 1 постоянной памяти устройства массив контрольных чисел, а затем использовать их.
Однако реальные программы, как правило, имеют более сложные структуры и содержат точки слияния ветвей. В указанных точках значения текущих сумм зависят от того, по какой траектории была реализована программа, В общем случае такие суммы, полученные при прохождении различных траекторий, не совпадают. Это приводит к тому, что каждой точке слияния должно быть поставлено в соответствие несколько контрольных чисел Эти числа должны выбираться в конце реализации соответствующих ветвей и размещаться по одному адресу первого блока 1 постоянной памяти, что невозможно.
Устранение указанного противоречия в предлагаемом устройстве обеспечивается за счет использования корректирующих кодов, генерируемых вторым блоком 7 постоянной памяти, При этом в различных ветвях контролируемой программы выделяются специальные точки, например такие, через которые программа проходит непосредственно перед слиянием ветвей, Каждой специальной точке, помимо контрольного числа, ставится в соответствие некоторый ненулевой код, уравнивающий между собой текущие
суммы, получаемые в процессе реализации различных сходящихся ветвей программы. Во втором блоке 7 постоянной памяти указанные коды размещены по соответствующим адресам (по адресам специальных точек). Остальным точкам программы при этом ставятся в соответствие нулевые коды.
В процессе реализации программы на вход второго блока 7 постоянной памяти через адресный вход устройства поступают адреса текущих точек. При этом при прохождении программы через обычные точки на выходе вто- рого блока 7 постоянной памяти навливаются нулевые коды п устройство работает обычным образом, т.е. аналогично описанному. При возбуждении специальной точки на выходе второго блока 7 постоянной памяти устанавливается корректирующий код. Указанный код посредством комбинационного сумматора 6 и накапливающего сумматора 2 складывается с теку- щим словом программы и со старой суммой. В результате на выходе накапливающегося сумматора 2 формируется новая сумма. При этом, поскольку сложение реализуется по модулю, то путем подбора корректирующего кода всегда можно получить нужное значе- ние суммы. Это дает возможность заранее установить и разместить во втором блоке 7 постоянной памяти такие корректирующие коды, при которых значения текущих сумм в точках слияния ветвей и, следовательно, во всех других точках программы не зависят от реализуемых программой траекторий При этом контрольные числа первого блока 1 постоянной памяти подбираются соответствующим образом, т.е. с учетом коррекции текущих сумм. Аналогичным образом устройство функцио- нирует и в процессе реализации программ, содержащих подпрограммы. При этом уравнивающие коды выбираются и расставляются с таким расчетом, чтобы обеспечить соблюдение следующих условий. Во-первых, в точках вызова каждой подпрограммы контрольные суммы (и, соответственно, контрольные числа в первом блоке 1 постоянной памяти) должны быть постоянными, напри мер нулевыми. Это дает возможность ; поставить в соответствие первой точке каждой подпрограммы фиксированное контрольное число, не зависящее от,
предыстории корректного хода программы, путем размещения в точке вызова подпрограммы соответствующего уравнивающего кода во втором блоке постоянной памяти 7. Во-вторых, в самих подпрограммах уравнивающие коды располагаются таким образом, чтобы контрольные суммы подпрограмм не зависели от траекторий их реализации (уравнивающие коды размещаются перед точками слияния ветвей) и имели фиксированные, например нулевые, значения. Это дает возможность заранее вычислить контрольные числа для точе возврата из подпрограмм.
Описанный механизм коррекции в предлагаемом устройстве используется также для снижения частоты повторяемости значений текущих сумм (контрольных чисел) различных точек программы, что позволяет еще больше повысить достоверность реализуемого контроля,
Для снижения частоты повторяемости значений текущих сумм в предлагаемом устройстве достаточно перед активацией соответствующих точек программы выполнить коррекцию текущих сумм. С этой целью по адресам предшествующих точек программы во втором блоке 7 постоянной памяти размещаются необходимые корректирующие коды. При достаточной разрядности накапливающего сумматора 2 это позволяет практически для всех точек программы установить уникальные значения текущих сумм (контрольных чисел) и исключить реализацию в системе необнаруживаемых ложных переходов программы.
Таким образом, в устройстве реализована возможность коррекции теку- щих сумм. При этом значения контрольных чисел и корректирующих кодов могут быть вычислены программистом в процессе разработки программы или получены автоматически с помощью транслятора.
В случае обнаружения ошибки в ходе программы на выходе предлагаемого устройства генерируется сигнал ошибки. Данный сигнал может быть использован в контролируемой системе для запуска, например„ по прерыванию программы устранения ошибок. В процессе обработки прерывания микропроцессор системы обеспечивает подачу на вход сброса устройства сигнала
начальной установки. Указанный сигнал поступает на вход сброса накапливающего сумматора 2 и производит обнуление (очистку) текущей суммы. После того, как сигнал начальной установки снимается, устройство вновь готово к работе. При этом запускае- 1 мая программа в первой своей точке должна иметь нулевую текущую сумму, Аналогичным образом происходит обнуление текущей суммы и в процессе начального запуска (сброса) контролируемой системы.
Формула изобретения Устройство для контроля хода про-, грамм, содержащее первый блок постоянной памяти, дешифратор, схему сравнения, элемент И и накапливающий сум- матор, причем выход дешифратора соединен с входом синхронизации накапливающего сумматора и первым входом элемента И, выход которого является выходом ошибки устройства, адресный вход устройства соединен с адресным
5
Q 5
входом первого блока памяти и информационным входом дешифратора, тактовый вход устройства соединен с входом синхронизации дешифратора, вход начальной установки устройства соединен с входом сброса накапливающего сумматора, выход которого соединен с первым входом схемы сравнения, выход неравенства которой соединен с вторым входом элемента И, выход первого блока памяти соединен с вторым входом схемы сравнения, отличающееся тем, что, с целью повышения достоверности контроля, в устройстве введены комбинационный сумматор и второй блок памяти, причем адресный вход устройства соединен с адресным входом- второго блока памяти, выход которого соединен с входом первого операнда комбинационного сумматора, выход которого соединен с входом накапливающего сумматора, вход кода текущего слова программы устройства соединен с входом второго операнда комбинационного сумматора.
название | год | авторы | номер документа |
---|---|---|---|
Устройство для контроля хода программ | 1988 |
|
SU1545223A1 |
Устройство для контроля хода программ | 1987 |
|
SU1481775A1 |
Устройство для контроля хода программ | 1984 |
|
SU1191912A1 |
Устройство для контроля хода программ | 1987 |
|
SU1508215A1 |
Устройство для контроля микропроцессорной системы | 1988 |
|
SU1605239A1 |
Устройство для контроля микропроцессорной системы | 1990 |
|
SU1700558A1 |
ФОРМИРОВАТЕЛЬ ТЕСТОВ | 1991 |
|
RU2012924C1 |
Устройство для контроля программ | 1986 |
|
SU1332323A1 |
Микропроцессорное устройство управления лучом плоской антенной решетки | 1984 |
|
SU1206797A1 |
Устройство микропрограммного управления | 1988 |
|
SU1536380A1 |
Изобретение относится к вычислительной технике и может быть использовано при построении надежных микропроцессорных систем. Цель изобретения - повышение достоверности контроля. Устройство позволяет осуществить глубокий контроль хода программы сложной структуры за счет применения механизма коррекции и за счет снижения частоты повторяемости значений текуших сумм (контрольных чис ел) . 1 ил.
Цифровой генератор периодических сигналов | 1984 |
|
SU1191904A1 |
Приспособление для точного наложения листов бумаги при снятии оттисков | 1922 |
|
SU6A1 |
СПОСОБ ПОЛУЧЕНИЯ АЗОТСОДЕРЖАЩИХ СОПОЛИМЕРОВ | 0 |
|
SU300479A1 |
Приспособление для точного наложения листов бумаги при снятии оттисков | 1922 |
|
SU6A1 |
, |
Авторы
Даты
1991-05-15—Публикация
1988-05-23—Подача