Контроль работы цифрового автомата
4.1. Кодирование информации каксредство обеспечения контроля работы автомата
Основные понятия контроля работы цифрового автомата
Коды как средство тайнописи появились в глубокой древности. Известно, что еще древнегреческий историк Геродот в V в. до н. э. приводил примеры писем, понятных лишь адресату. Секретная азбука использовалась Юлием Цезарем. Над созданием различных секретных шифров работали такие известные ученые средневековья, как Ф.Бэкон, Д.Кардано и др. Появлялись очень хитрые шифры и коды, которые, однако, с течением времени расшифровывались и переставали быть секретом. Первым кодом, предназначенным для передачи сообщений по каналам связи, был код С.Морзе, содержащий разное количество символов для кодирования букв и цифр. Затем появился код Ж.Бодо, используемый в телеграфии, в котором все буквы или цифры содержат одинаковое количество символов. В качестве символов может выступать наличие или отсутствие (пробел) импульса в электрической цепи в данный момент.
Коды, использующие два различных элементарных сигнала, называются двоичными. Эти сигналы удобно обозначать символами 0 и 1. Тогда кодовое слово будет состоять из последовательностей нулей и единиц.
При выполнении арифметических операций в цифровом автомате правильный результат будет получен только в случае, если машина работает без нарушений. При возникновении какого-либо нарушения нормального функционирования результат будет неверным, однако пользователь об этом не узнает, если не будут предусмотрены меры, сигнализирующие о появлении ошибки. Следовательно, с одной стороны, разработчиками машины должны быть предусмотрены меры для создания системы обнаружения возможной ошибки, а с другой стороны, должны быть проработаны меры, позволяющие исправить ошибки. Эти функции следует возложить на систему контроля работы цифрового автомата.
Система контроля – совокупность методов и средств, обеспечивающих определение правильности работы автомата в целом или его отдельных узлов, а также автоматическое исправление ошибки. Ошибки в работе цифрового автомата могут быть вызваны либо выходом из строя какой-либо детали, либо отклонением от нормы параметров, например изменением напряжения питания или воздействием внешних помех. Вызванные этими нарушениями ошибки могут принять постоянный или случайный характер. Постоянные ошибки легче обнаружить и выявить. Случайные ошибки, обусловленные кратковременными изменениями параметров, наиболее опасны, и их труднее обнаружить.
Поэтому система контроля должна строиться с таким расчетом, чтобы она позволяла обнаружить и по возможности исправить любые нарушения. При этом надо различать следующие виды ошибок результата:
1) возникающие из-за погрешностей в исходных данных;
2) обусловленные методическими погрешностями;
3) появляющиеся из-за возникновения неисправностей в работе машины.
Первые два вида ошибок не являются объектом для работы системы контроля. Погрешности перевода или представления числовой информации в разрядной сетке автомата приведут к возникновению погрешности в результате решения задачи. Эту погрешность можно заранее рассчитать и, зная ее максимальную величину, правильно выбрать длину разрядной сетки машины. Методические погрешности также учитываются предварительно.
Проверка правильности функционирования отдельных устройств машины и выявление неисправностей может осуществляться по двум направлениям:
– профилактический контроль, задача которого – предупреждение появления возможных ошибок в работе;
– оперативный контроль, предназначенный для проверки правильности выполнения машиной всех операций.
Решение всех задач контроля становится возможным только при наличии определенной избыточности информации. Избыточность может быть создана либо аппаратными (схемными), либо логическими или информационными средствами.
К методам логического контроля, например, можно отнести следующие приемы. В ЭВМ первого и второго поколений отсутствие системы оперативного контроля приводило к необходимости осуществления “двойного счета”, когда каждая задача решалась дважды и в случае совпадения ответов принималось решение о правильности функционирования ЭВМ.
Если в процессе решения какой-то задачи вычисляются тригонометрические функции, то для контроля можно использовать известные соотношения между этими функциями, например, sin2 a+cos2 a = 1. Если это соотношение выполняется с заданной точностью на каждом шаге вычислений, то можно с уверенностью считать, что ЭВМ работает правильно.
Вычисление определенного интеграла с заданным шагом интегрирования можно контролировать сравнением полученных при этом результатов с теми результатами, которые соответствуют более крупному шагу. Такой “сокращенный” алгоритм даст, видимо, более грубые оценки и, по существу, требует дополнительных затрат машинного времени.
Все рассмотренные примеры свидетельствуют о том, что такие методы контроля позволяют лишь зафиксировать факт появления ошибки, но не определяют место, где произошла эта ошибка. Для оперативного контроля работы ЭВМ определение места, где произошла ошибка, т. е. решение задачи поиска неисправности, является весьма существенным вопросом.
Основные понятия теории кодирования
Задача кодирования информации представляется как некоторое преобразование числовых данных в заданной системе счисления. В частном случае эта операция может быть сведена к группированию символов (представление в виде триад или тетрад) или представлению в виде символов (цифр) позиционной системы счисления. Так как любая позиционная система не несет в себе избыточности информации и все кодовые комбинации являются разрешенными, использовать такие системы для контроля не представляется возможным.
Систематический код – код, содержащий в себе, кроме информационных, контрольные разряды.
В контрольные разряды записывается некоторая информация об исходном числе. Поэтому можно говорить, что систематический код обладает избыточностью. При этом абсолютная избыточность будет выражаться количеством контрольных разрядов k, а относительная избыточность – отношением k/n , где n = m + k – общее количество разрядов в кодовом слове (m – количество информационных разрядов).
Понятие корректирующей способности кода обычно связывают с возможностью обнаружения и исправления ошибки. Количественно корректирующая способность кода определяется вероятностью обнаружения или исправления ошибки. Если имеем n-разрядный код и вероятность искажения одного символа р, то вероятность того, что искажены k символов, а остальные n – k символов не искажены, по теореме умножения вероятностей будет
.
Число кодовых комбинаций, каждая из которых содержит k искаженных элементов, равна числу сочетаний из n по k:
Тогда полная вероятность искажения информации
Так как на практике р=10-3...10-4, наибольший вес в сумме вероятностей имеет вероятность искажения одного символа. Следовательно, основное внимание нужно обратить на обнаружение и исправление одиночной ошибки.
Корректирующая способность кода связана также с понятием кодового расстояния.
Кодовое расстояние d(A,В) для кодовых комбинаций А и В определяется как вес третьей кодовой комбинации, которая получается поразрядным сложением исходных комбинаций по модулю 2.
Вес кодовой комбинации V(A) – количество единиц, содержащихся в кодовой комбинации.
Пример. Найти вес и кодовое расстояние для комбинаций А=011011100, В=100111001.
Решение. Вес для кодовых комбинаций
V(A) = = 5 ; V(B) = = 5 .
Находим кодовую комбинацию С=А В=111100101, для которой определяется вес, равный кодовому расстоянию для А и В:
V(C) = d(A, В) = = 6 .
Ответ: d(A, В) = 6 .
Коды можно рассматривать и как некоторые геометрические (пространственные) фигуры. Например, триаду можно представить в виде единичного куба, имеющего координаты вершин, которые отвечают двоичным символам (рис. 9). В этом случае кодовое расстояние воспринимается как сумма длин ребер между соответствующими вершинами куба (принято, что длина одного ребра равна 1). Оказывается, что любая позиционная система отличается тем свойством, что минимальное кодовое расстояние равно 1 (рис. 10, а).
Рис. 9. Геометрическое представление кодов
Рис. 10. Кодовые расстояния
В теории кодирования показано, что систематический код способен обнаружить ошибки только тогда, когда минимальное кодовое расстояние для него больше или равно 2 t, т. е.
dmin 2 t,
где t – кратность обнаруживаемых ошибок (в случае одиночных ошибок t =1 и т.д.).
Это означает, что между соседними разрешенными кодовыми словами должно существовать по крайней мере одно кодовое слово (рис. 10, б, в).
В тех случаях, когда необходимо не только обнаружить ошибку, но и исправить ее (т. е. указать место ошибки), минимальное кодовое расстояние должно быть
dmin 2 t+1.
Существуют коды, в которых невозможно выделить абсолютную избыточность. Неявная избыточность характерна, например, для кодов типа “k из n”. Примером является код “2 из 5”, который часто используется для представления информации. Суть его в том, что в слове из пяти разрядов только два разряда имеют единичное значение.