8. Коды для арифметических устройств
Излагавшаяся до сих пор теория кодирования представляет собой теорию кодов, предназначенных для обнаружения и исправления ошибок в каналах связи, т. е. для повышения надежности связи. Методы повышения надежности вычислений, выполняемых вычислительными машинами и другими устройствами, развивались независимо в двух следующих направлениях.
Первое направление восходит к работам фон Неймана [1] и связано с построением надежных устройств из ненадежных элементов. Результаты развития этого направления были подытожены Виноградом и Коэном [2]. Во всех работах, относящихся к этому направлению, повышение надежности достигается различными методами введения так называемой структурной избыточности.
Если задачей первого направления является повышение надежности вычислений путем повышения надежности самого вычислительного устройства, то отличительной особенностью второго направления является то, что само вычислительное устройство не модифицируется, а данные, которые в него вводятся, кодируются так, чтобы на выходе можно было осуществить обнаружение и исправление ошибок, возникших в процессе вычислений. Как показал Элайс [3], такое кодирование эффективно не для всякого вычислительного устройства; однако оно с успехом применяется, например, в устройствах, которые оперируют с целыми числами. В данном случае речь идет об арифметических кодах, называемых также -кодами, начало исследованию которых было положено работами Дайямонда [4] и Брауна [5]. К числу кодов этого типа относятся также так называемые коды в остаточных классах (residue class code) и линейные вычетные коды (linear residue code).
В случае AN-кодов сообщения (данные) обычно представляются в виде целых чисел. Кодовыми словами -кода являются -ичные представления чисел-сообщений, умноженных на некоторое фиксированное число (модуль) А, так что кодовое слово суммы и разности двух чисел всегда будет соответственно суммой и разностью кодовых слов, соответствующих исходным числам. Благодаря этому -коды могут обнаруживать и исправлять как обычные ошибки, возникающие каналах связи,
так и ошибки, возникающие в вычислительных устройствах. Поэтому такие коды могут применяться в каналах передачи данных, соединяющих вычислительные машины. В данной книге -кодам посвящены эта и следующая главы.