Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика и ВТ Брукшир.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.07 Mб
Скачать

1.9 Ошибки передачи данных

Когда информация передается между различными частями компьютера, или с Земли на Луну и обратно, или просто оставляется на запоминающем устройстве, существует вероятность того, что полученный двоичный код не тождественней исходному коду. Частицы пыли или жира на магнитном носителе или сбой схемы могут привести к неправильной записи или к неправильному чтению данных. Кроме того, фоновое излучение некоторых устройств может привести к изменению кода, хранящегося в оперативной памяти машины.

Для решения таких проблем было разработано большое количество методов кодирования, позволяющих обнаружить и даже исправить ошибки. Сегодня эти методы включены во внутренние составляющие вычислительных машин и не видны пользователю. Тем не менее их наличие является важным и составляет значительную часть научных исследований. Поэтому мы рассмотрим некоторые из этих методов, обеспечивающих надежность современного компьютерного оборудования.

1.9.1Контрольный разряд четности

Простой метод обнаружения ошибок основывается на том принципе, что если известно, что обрабатываемый двоичный код должен содержать нечетное число единиц, а полученный код содержит четное число единиц, то произошла ошибка. Для того чтобы использовать этот принцип, нам нужна система, в которой каждый код содержит нечетное число единиц. Этого легко достичь, добавив дополнительный разряд, контрольный разряд соответствия (parity bit), на место старшего разряда. (Следовательно, каждый 8-битовый код ASCII станет 9-битовым, а 16-битовой дополнительный код станет 17-битовым.) В каждом случае мы присваиваем этому разряду значение 1 или 0, так чтобы весь код содержал нечетное число единиц. Например, ASCII-код буквы А становится 101000001 (контрольный разряд четности 1), а код буквы F становится 001000110 (контрольный разряд четности 0) (рис. 1.28). Хотя 8-битовый код А содержит четное число единиц, а 8-битовый код F — нечетное, 9-битовый код этих символов содержит нечетное количество единиц. Теперь, когда мы модифицировав нашу систему кодирования, код с четным числом единиц будет означать, что произошла ошибка и что обрабатываемый двоичный код — неправильный.

Система контроля, описанная выше, называется контролем нечетности (odd parity), так как мы построили нашу систему таким образом, что каждый код со-

держит нечетное число единиц. Существует также метод-антипод — контроль четности (even parity). В таких системах каждый двоичный код содержит четное число единиц, и, следовательно, об ошибке говорит появление кода с нечетным числом единиц.

Сегодня использование контрольных разрядов четности в оперативной памяти компьютера довольно распространено. Хотя мы говорили, что ячейка памяти машин состоит из восьми битов, на самом деле она состоит из девяти битов, один из которых используется в качестве контрольного бита. Каждый раз, когда 8-битовый код передается в запоминающую схему, схема добавляет контрольный бит соответствия и сохраняет получающийся 9-битовый код. Если код уже был получен, схема проверяет его на четность. Если в нем нет ошибки, память убирает контрольный бит и возвращает 8-битовый код. В противном случае память возвращает восемь информационных битов с предупреждением о том, что возвращенный код может не совпадать с исходным кодом, помещенным в память.

Длинные двоичные коды часто сопровождает набор контрольных битов четности, которые образуют контрольный байт. Каждый разряд в байте соответствует определенной последовательности битов, находящейся в коде. Например, один контрольный бит может соответствовать каждому восьмому биту кода, начиная с первого, а другой может соответствовать каждому восьмому биту, начиная со второго. В этом случае больше вероятность обнаружить скопление ошибок в какой-либо области исходного кода, поскольку они будут находиться в области действия нескольких контрольных битов четности. Разновидностью контрольного байта являются такие схемы для обнаружения ошибок, как контрольная сумма и циклический избыточный код.