Информационные основы контроля работы цифрового автомата

advertisement
ЛЕКЦИЯ № 8
Тема: Информационные основы контроля работы цифрового автомата
1. Информационные основы контроля работы цифрового автомата
2. Основные принципы помехоустойчивого кодирования
3. Методы помехоустойчивого кодирования
4. Систематические коды
5. Кодирование по методу четности-нечетности
6. Коды Хэмминга
1
Лекция № 8
Тема: Информационные основы контроля работы цифрового автомата.
1. Информационные основы контроля работы цифрового автомата
Алгоритмы выполнения арифметических операций обеспечат правильный
результат только в случае, если машина работает без нарушений. При возникновении какого-либо нарушения нормального функционирования результат будет неверным, однако пользователь об этом не узнает, если не будут
предусмотрены меты для создания системы обнаружения возможной ошибки, а с другой стороны, должны быть проработаны меры, позволяющие исправить ошибки. Эти функции следует возложить на систему контроля работы цифрового автомата.
Система контроля - совокупность методов и средств, обеспечивающих
определение правильности работы автомата в целом или его отдельных узлов, а также автоматическое исправление ошибки.
Ошибки в работе цифрового автомата могут быть вызваны либо выходом
из строя какой-то детали, либо отклонением от нормы параметров (например,
изменение напряжения питания) или воздействием внешних помех. Вызванные этими нарушениями ошибки могут принять постоянный или случайный
характер. Постоянные ошибки легче обнаружить и выявить. Случайные
ошибки, обусловленные кратковременными изменениями параметров,
наиболее опасны и их труднее обнаружить.
Поэтому система контроля должна строится с таким расчетом, чтобы она
позволяла обнаружить и по возможности исправить любые нарушения. При
этом надо различать следующие виды ошибок результата:
1) возникающие из-за погрешностей в исходных данных;
2) обусловленные методическими погрешностями;
3) появляющиеся из-за возникновения неисправностей в работе машины.
Первые два вида ошибок не являются объектом для работы системы контроля. Конечно, погрешности перевода или представления числовой информации в разрядной сетки автомата приведут к возникновению погрешности в
результате решения задачи. Эту погрешность можно заранее рассчитать и,
зная её максимальную величину, правильно выбрать длину разрядной сетки
машины. Методические погрешности также учитываются предварительно.
Проверка правильности функционирования отдельных устройств машины
и выявление неисправностей может осуществляться по двум направлениям:
 профилактический контроль, задача которого – предупреждение появления ошибок в работе;
 оперативный контроль, задача которого – проверка правильности
выполнения машиной всех операций.
Решение всех задач контроля становится возможным только при наличии
определенной избыточности. Избыточность может быть либо аппаратными
(схемными) средствами, либо логическими или информационными средствами. К методам логического контроля можно отнести следующие приемы. В
ЭВМ первого и второго поколений отсутствие системы оперативного кон2
троля приводило к необходимости осуществления «двойного счета», когда
каждая задача решалась дважды, и в случае совпадения ответов принималось
решение о правильности функционирования ЭВМ.
Если в процессе решения какой-то задачи вычисляются тригонометрические функции, то для контроля можно использовать известные соотношения
между этими функциями, например, sin 2   cos2   1. Если это соотношение
выполняется заданной точностью на каждом шаге вычислений, то можно с
уверенностью читать, что ЭВМ работает правильно.
Вычисление определенного интеграла с заданным шагом интегрирования
можно контролировать сравнением полученных при этом результатов с теми
результатами, которые соответствуют более крупному шагу. Такой «сокращенный» алгоритм даст, видимо, более грубые оценки и по существу требует
дополнительных затрат машинного времени.
Все рассмотренные примеры свидетельствуют о том, что такие методы
контроля позволяют лишь зафиксировать факт появления ошибки, но не
определяют место, где произошла эта ошибка. Для оперативного контроля
работы ЭВМ определение места, где произошла ошибка, т.е. решение задачи
поиска неисправности, является весьма существенным вопросом.
2. Основные принципы помехоустойчивого кодирования.
Помехоустойчивые коды – одно из наиболее эффективных средств обеспечения высокой верности передачи дискретной информации. Создана специальная теория помехоустойчивого кодирования, быстро развивающаяся в
последнее время.
Бурное развитие теории помехоустойчивого кодирования связано с внедрением автоматизированных систем, у которых обработка принимаемой информации осуществляется без участия человека. Использование для обработки информации электронных цифровых вычислительных машин предъявляет
очень высокие требования к верности передачи информации.
Теорема Шеннона для дискретного канала с помехами утверждает, что вероятность ошибок за счет действия в канале помех может быть обеспечена
сколь угодно малой путем выбора соответствующего способа кодирования
сигналов. Из этой теоремы вытекает весьма важный вывод о том, что наличие помех не накладывает принципиально ограничений на верность передачи.
Однако в теореме Шеннона не говорится о том, как нужно строить помехоустойчивые коды.
На этот вопрос отвечает теория помехоустойчивого кодирования.
Рассмотрим сущность помехоустойчивого кодирования, а также некоторые теоремы и определения, относящиеся к теории такого кодирования.
Под помехоустойчивыми или корректирующими кодами понимают коды,
позволяющие обнаружить и устранить ошибки, происходящие при передаче
из-за влияния помех.
3
Для выяснения идеи помехоустойчивого кодирования рассмотрим двоичный код, нашедший на практике наиболее широкое применение.
Напомним, что двоичный код – это код с основание m=2.
Количество разрядов n в кодовой комбинации принято называть длиной
или значностью кода. Каждый разряд может принимать значение 0 или 1.
Количество единиц в кодовой комбинации называют весом кодовой комбинации и обозначают  .
Например, кодовая комбинация 100101100 характеризуется значностью
n=9 и весом  =4.
Степень отличия любых двух кодовых комбинаций данного кода характеризуется так называемым расстоянием между кодами d. Оно выражается
числом позиций или символов, в которых комбинации отличаются одна от
другой. Кодовое расстояние есть минимальное расстояние между кодовым
комбинациями данного кода, оно определяется как вес суммы по модулю два
кодовых комбинаций. Например, для определения расстояния между комбинациями 100101100 и 110110101 необходимо просуммировать их по модулю
два
100101100
+
110110101
010011001
Полученная в результате суммирования новая кодовая комбинация характеризуется весом  =4. Следовательно, расстояние между исходными кодовыми комбинациями d=4.
Ошибки, вследствие воздействия помех, появляются в том, что в одном
или нескольких разрядах кодовой комбинации нули переходят в единицы и,
наоборот, единицы переходят в нули. В результате создается новая ложная
кодовая комбинация.
Если ошибки происходят только в одном разряде кодовой комбинации, то
такие ошибки называются однократными. При наличии ошибок в двух, трех
и т.д. разрядах ошибки называются двукратными, трехкратными и т.д.
Для указания мест в кодовой комбинации, где имеются искажения симво_
лов, используется вектор ошибки e . Вектор ошибки n-разрядного кода – это
n-разрядная комбинация, единицы в которой указывают положение искаженных символов кодовой комбинации. Например, если для пятиразрядного кода
_
вектор ошибки имеет e =01100, то это значит, что имеют место ошибки в третьем и четвертом разрядах кодовой комбинации.
Вес вектора ошибки  e характеризует кратность ошибки. Сумма по модулю для искажений кодовой комбинации и вектора ошибки дает исходную неискаженную комбинацию.
Помехоустойчивость кодирования обеспечивается за счет введения избыточности в кодовые комбинации. Это значит, что из n символов кодовой
комбинации для передачи информации используется k<n символов. Следовательно, из общего числа N 0  2 n возможных кодовых комбинаций для передачи информации используется только N  2 k комбинаций. В соответствии с
4
этим все множества N 0  2 n возможных кодовых комбинаций делятся на две
группы. В первую группу входит множество N  2 k разрешенных комбинаций. Вторая группа включает в себя множество ( N 0  N )  2 n  2 k запрещенных
комбинаций.
Если на приемной стороне установлено, что принятая комбинация относится к группе разрешенных, то считается, что сигнал пришел без искажений.
В противном случае делается вывод, что принятая комбинация искажена.
Однако это справедливо лишь для таких помех, когда исключена возможность перехода одних разрешенных комбинаций в другие.
В общем случае каждая из N разрешенных комбинаций может трансформироваться в любую из N0 возможных комбинаций, т.е. всего имеется N*N0
возможных случаев передачи (рис.1), из них N случаев безошибочной передачи (на рис. 1 обозначены жирными линиями), N(N-1) случаев перехода в
другие разрешенные комбинации (на рис. 1 обозначены пунктирными линиями) и N(N0- N) случаев перехода в запрещенные комбинации (на рис. 7.3
обозначены штрих пунктирными линиями).
Таким образом, не все искажения могут быть обнаружены. Доля обнаруживаемых ошибочных комбинаций составляет
N (N0  N )
N
 1
NN 0
N0
(7.27)
Для использования данного кода в качестве исправляющего множество
запрещенных кодовых комбинаций разбивается на N непересекающихся
подмножеств Mk . Каждое из множеств Mk ставится в соответствие одной из
разрешенных комбинаций.
Если принятая запрещенная комбинация принадлежит подмножеству Mi ,
то считается, что передана комбинация Ai (рис. 7.3).
Рис. 1
А1
В1
Аi
Bi}Mi
Aj
Bj}Mj
B2 n
A2 x
Ошибка будет исправлена в
тех случаях, когда полученная
комбинация
действительно
образовалась из комбинации
Ai. Таким образом, ошибка
исправляется в ( N 0  N ) случаях, равных количеству запрещенных комбинаций. Доля
исправляемых
ошибочных
комбинаций от общего числа
обнаруживаемых ошибочных
комбинаций составляет
N0  N
1
 .
N (N0  N ) N
7.28
5
Способ разбиения на подмножества зависит от того, какие ошибки должны
исправляться данным кодом.
3. Методы помехоустойчивого кодирования.
Рассмотрим простые практические способы построения кодов, способных
обнаруживать и исправлять ошибки. Ограничимся рассмотрением двоичных каналов и равномерных кодов.
Метод контроля четности. Это простой способ обнаружения некоторых
из возможных ошибок. Будем использовать в качестве разрешенных половину возможных кодовых комбинаций, а именно те из них, которые имеют
четное число единиц (или нулей). Однократная ошибка при передаче через
канал неизбежно приведет к нарушению четности, что и будет обнаружено
на выходе канала. Очевидно, что трехкратные, пятикратные и вообще
ошибки нечетной кратности ведут к нарушению четности и обнаруживаются этим методом, в то время как двукратные, четырехкратные и вообще
ошибки четной кратности – нет.
Практическая техника кодирования методом контроля четности следующая. Из последовательности символов, подлежащих передаче через канал,
выбирается очередной блок из k-1символов, называемых информационными, и к нему добавляется k-й символ, называемый контрольным. Значение
контрольного символа выбирается так, чтобы обеспечить четность получаемого кодового слова, т.е. чтобы сделать его разрешенным.
Метод контроля четности представляет значительную ценность и широко
применяется в тех случаях, в которых вероятность появления более одной
ошибки пренебрежимо мала (во многих случаях, если наверняка знать, что
кодовое слово принято с ошибкой, имеется возможность запросить повторную передачу). В то же время избыточность кода увеличивается минимально и незначительно при больших k(в k/( k-1)раз).
Метод контрольных сумм. Рассмотренный выше метод контроля четности
может быть применен многократно для различных комбинаций разрядов
передаваемых кодовых слов – и это позволит не только обнаруживать, но и
исправлять определенные ошибки.
Пример:
Будем из входной последовательности символов брать по четыре информационных символа а1а2а3а4, дополнять их тремя контрольными символами а5а6а7 и получившееся семисимвольное слово посылать в канал. Контрольные символы будем подбирать так, чтобы были четными следующие
суммы:
s1= а1 +а2 +а3 + a5,
s2= а1 +а2 +а4 + a6,
s3= а1 +а3 +а4 + a7.
6
В каждую сумму входит по оному контрольному символу, поэтому данное
требование всегда выполнимо.
Благодаря «маленьким хитростям», предусмотренным при формировании
контрольных сумм, проверка их четности на выходе канала позволяет однозначно установить, была ли допущена при передаче однократная ошибка и какой из разрядов был при этом искажен (ошибками большей кратности пренебрегаем).Действительно, если один из семи символов был искажен, то по крайней мере одна из сумм обязательно окажется нечетной, т.е.
четность всех контрольных сумм s1, s2, s3 свидетельствует об отсутствии
однократных ошибок. Далее, лишь одна сумма будет нечетной в том, (и
только в том) случае, если искажен входящий в эту сумму один из трех
контрольных символов (a5, a6 или a7). Нечетность двух или трех сумм
означает, что искажен тот из информационных символов а2, а3 или а4, который входи в обе эти суммы. Наконец, нечетность всех трех сумм означает, что неверно принят входящий во все суммы символ а1.
Итак, в данном примере метод контрольных сумм, увеличивая длину кода
в 7/4=1,75 раза за счет введения избыточности, позволяет исправить любую однократную ошибку (но не ошибку большей кратности). Основываясь на этой идее, в принципе, можно построить коды, исправляющие все
ошибки большей (но всегда ограниченной) кратности.
4. Систематические коды
Как уже указывалось, функции контроля можно осуществить при информационной избыточности. Такая возможность появляется при использовании
специальных методов кодирования информации. В самом деле, некоторые
методы кодирования информации допускают наличие разрешенных и запрещенных комбинаций. В качестве примера можно привести двоичнодесятичные системы представления числовой информации (Д-коды). Появление запрещенных комбинаций для подобного представления свидетельствует об ошибке в результатах решения задачи. Такой метод можно использовать для контроля десятичных операций. Однако он является частным
примером и не решает общей задачи.
Задача кодирования информации представляется как некоторое преобразование числовых данных в заданной программе счисления. В частном случае эта операция может быть сведена к группированию символов (представление в виде триад и тетрад) или представлению в виде символов позиционной системы счисления. Так как любая позиционная система счисления не
несет в себе избыточности информации, и все кодовые комбинации являются
разрешенными, то использовать такие системы для контроля не представляется возможным.
Систематический код – код, содержащий в себе кроме информационных
контрольные разряды.
В контрольные разряды записывается некоторая информация об исходном
числе. Поэтому можно говорить, что систематический код обладает избы7
точностью. При этом абсолютная избыточность будет выражаться количеством контрольных разрядов k, а относительная избыточность – отношением
k/n, где n=m+k – общее количество разрядов в кодовом слове (m – количество информационных разрядов).
Понятие корректирующей способности кода обычно связывают с возможностью с возможностью обнаружения и исправления ошибки. Количественно
корректирующая способность кода определяется вероятностью обнаружения
или исправления ошибки. Если имеем n- разрядный код и вероятность искажения одного символа будет P, то вероятность того, что искажены k символов, а остальные n-k символов не искажены, по теореме умножения вероятностей будет
W=Pk(1-P)n-k.
Число кодовых комбинаций, каждая из которых содержит k искаженных
элементов, равна числу сочетаний из n по k:
Cnk 
n!
.
i!( n  k )!
Тогда вероятность искажения
k
n!
P 
Pi (1  P)n i .

i 1 i!(n  i )
Так как на практике P=10-3÷10-4, наибольший вес в сумме вероятностей
имеет вероятность искажения одного символа. Следовательно, основное
внимание нужно обратить на обнаружение и исправление одиночной ошибки.
Корректирующая способность кода связана также с понятием кодового
расстояния.
Кодовое расстояние d(A,B) кодовых комбинаций А и В определяется
как вес такой третьей кодовой комбинации, которая получается сложением
исходных комбинаций по модулю 2.
Вес кодовой комбинации V(A) – количество единиц, содержащихся в кодовой комбинации.
Коды можно рассматривать и как некоторые геометрические (пространственные) фигуры. Например, триаду можно представить в виде единичного
куба, имеющего координаты вершин, которые отвечают двоичным символам
(рис. 4.1) в этом случае кодовое расстояние воспринимается как сумма длин
ребер между соответствующими вершинами куба (принято, что длина одного
ребра равна 1). Оказывается, что любая позиционная система отличается тем
свойством, что минимальное кодовое расстояние равно 1.
В теории кодирования показано, что систематический код обладает способностью обнаружить ошибки только тогда, когда минимальное кодовое
расстояние для него больше или равно 2t, т.е. dmin  2t , где t – кратность обнаруживаемых ошибок t=1 (в случае обнаружения одиночных ошибок t=1). Это
означает, что между соседними кодовыми комбинациями должна существовать по крайней мере одна кодовая комбинация (рис. 4.2).
8
001
011
а)
101
d=1
d=1
110
000
100
010
A1
A2
A3
110
Рис. 4.1 Геометрическое
представление кодов
Рис. Кодовые расстояния для позиционной системы
5. Кодирование по методу четности-нечетности
Если в математическом коде выделен один контрольный разряд (k=1), то к
каждому двоичному числу добавляется один избыточный разряд и в него записывается 1 или 0 с таким условием, чтобы сумма цифр в каждом числе была по модулю 2 равна 0 для случая нечетности. Появление ошибки в кодировании обнаружится по нарушению четности (нечетности). При этом допускается, что может возникнуть только одна ошибка. В самом деле, для случая
четности правильным будет только половина возможных комбинаций. Чтобы
одна допустимая комбинация превратилась в другую, должно возникнуть, по
крайней мере, два нарушения или четное число нарушений. Пример реализации метода четности представлен в табл. 4.1.
Число
10101011
11001010
10010001
11001011
Контрольный разряд
1
0
1
0
Проверка
0
0
0
1-нарушение
Такое кодирование имеет минимальное кодовое расстояние, равное 2.
Можно представить и несколько видоизмененный способ контроля по методу четности – нечетности. Длинное число разбивается на группы. Контрольные разряды выделяются всем группам по строкам и по столбцам согласно следующей схеме:
а1
а6
а11
а16
а21
k6
а2
a7
а12
а17
а22
k7
а3
a8
а13
а18
а23
k8
а4
a9
а14
а19
а24
k9
а5
а10
а15
а20
а25
k10
k1
k2
K3
k4
k5
9
Увеличение избыточности информации приводит к тому, что появляется
возможность не только обнаружить ошибку, но и исправить её. В самом деле,
пусть произошла неисправность в каком-то из разрядов этого числа (представим, что разряд а18 изменил состояние, т.е. а18=1). Это приводит к тому, что
при проверке на четность сумма  ai  ki по соответствующим строка измеi
нится для значений, которые содержат элемент а18, т.е. это будет четвертая
сверху строка и третий слева столбец. Следовательно, нарушение четности
по этой строке и столбцу можно зафиксировать, что в конечном счете означает обнаружение не только самой ошибки, но и места, где возникла ошибка.
Изменив содержимое отмеченного разряда (в данном случае а18) на противоположное, можно исправить ошибку.
Контроль по методу четности-нечетности широко используют в ЭВМ для
контроля записи, считывания информации в запоминающих устройствах на
магнитных носителях.
6. Коды Хэмминга
Коды, предложенные американским ученым Р. Хэммингом, обладают
способностью не только обнаружить, но и исправить одиночные ошибки. Эти
коды – систематические.
Предложим, что имеется код, содержащий m информационных разрядов и
k контрольных разрядов. Запись на k позиций определяется при проверке на
четность каждой из проверяемых k групп информационных символов. Пусть
было произведено k проверок. Если результат проверки свидетельствует об
ошибке, запишем 0, если ошибка – запишем 1. Запись полученной последовательности символов образует двоичное число.
Свойство кодов Хэмминга таково, что контрольное число указывает номер позиции, где произошла ошибка. При отсутствии ошибок в данной позиции последовательность будет содержать только нули. Полученное число таким образом описывает n=(m+k+1) событий.
Следовательно, справедливо неравенство
(4.1.)
2k  (m  k  1).
Определить максимальное значение m для данного n можно из следующего:
n
……
1 2 3 4… 8…15
16…31
32…63 64
m
……
0 0 1 1… 4…11
11…26
26…57 57
k
……
1 2 2 3… 4…4
5…5
6…6
7
Определим теперь позиции, которые надлежит проверить в каждой из k
проверок. Если в кодовой комбинации ошибок нет, контрольное число содержит только нули. Если в первом разряде контрольного числа стоит 1, это
означает, что в результате первой проверки обнаружена ошибка. Имея таблицу двоичных эквивалентов для десятичных чисел, можно сказать, что,
например, первая проверка охватывает позиции 2, 3, 6, 7, 10.
Проверка
Проверяемые разряды
10
1…
1,3,5,7,9,11,13,15…
2…
2,3,6,7,10,11,14,15,18,19,22,23.
3…
4,5,6,7,12,13,14,15,20,21,22,23.
4…
8,9,10,11,12,13,14,15,24…
…
…
Теперь нужно решить, какие из позиций целесообразнее применить для
передачи информации, а какие – для её контроля. Преимущество использования позиций 1,2,4,8,… для контроля в том, что данные позиции встречаются
только в одной проверяемой группе символов.
В табл. 4.2 представлены примеры кодирования информации по етоду
Хэмминга для семизарядного кода.
Таблица 4.2.
Разряды двоичного кода
Кодируемая
1
2
3
4
5
6
7
десятичная
k1
k2
m1
k3
m2
m3
m4
информация
0
0
0
0
0
0
0
0
1
0
1
1
0
1
0
1
0
1
0
0
1
0
1
1
1
0
0
1
1
0
1
0
0
1
1
0
0
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
0
1
0
0
1
0
1
1
0
1
0
0
1
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
1
1
0
0
1
1
0
0
10
1
0
0
1
1
1
0
1
0
1
0
1
0
1
1
1
0
1
0
1
1
2
3
4
5
6
7
8
0
1
11
12
13
14
15
Как видно из табл. 4.2, в этом случае n=7, m=4, k=3 и контрольными будут
разряды 1,2,4.
По методу Хэмминга могут быть построены коды разной длины. При этом
чем больше длина кода, тем меньше относительная избыточность. Например,
для контроля числа, имеющего 48 двоичных разрядов. Коды Хэмминга используют в основном для контроля передачи информации по каналам связи,
что имеет место в вычислительных системах с телеобработкой данных или в
системах коллективного пользования.
11
Download