Введение

Биты, добавленные к двоичной строке для обнаружения ошибок. 7 бит данных (количество 1 бит) 8 бит, включая паритет, четный нечетный 0000000 0 00000000 00000001 1010001 3 10100011 10100010 11010014 11010010 11010011 1111111 7 11111111 11111110

Бит паритета, или контрольный бит, – это бит, добавляемый к строке двоичного кода. Биты паритета представляют собой простую форму кода обнаружения ошибок. Биты паритета обычно применяются к наименьшим единицам протокола связи, как правило, 8-битным октетам (байтам), хотя они также могут применяться отдельно ко всей строке сообщения из битов. Бит паритета обеспечивает, чтобы общее количество единичных битов в строке было четным или нечетным. Соответственно, существует два варианта битов паритета: бит четного паритета и бит нечетного паритета. В случае четного паритета для заданного набора битов подсчитываются биты со значением 1. Если этот подсчет нечетный, значение бита паритета устанавливается в 1, что делает общее количество единиц во всем наборе (включая бит паритета) четным числом. Если количество единиц в заданном наборе битов уже четное, значение бита паритета равно 0. В случае нечетного паритета кодирование происходит наоборот. Для заданного набора битов, если количество битов со значением 1 четное, значение бита паритета устанавливается в 1, что делает общее количество единиц во всем наборе (включая бит паритета) нечетным числом. Если количество битов со значением 1 нечетное, подсчет уже нечетный, поэтому значение бита паритета равно 0. Четный паритет является частным случаем циклического избыточного кода (CRC), где 1-битный CRC генерируется многочленом x+1.

Паритет

В математике паритет может относиться к четности или нечетности целого числа, которая, при записи числа в двоичной форме, может быть определена путем анализа только его младшего бита. В информационных технологиях паритет относится к четности или нечетности количества единичных битов в любом наборе двоичных цифр. Поскольку паритет определяется состоянием каждого бита, это свойство паритета – зависимость от всех битов и изменение значения с четного на нечетный при изменении любого одного бита – позволяет использовать его в схемах обнаружения и исправления ошибок. В телекоммуникациях паритет, используемый некоторыми протоколами, предназначен для обнаружения ошибок. Передающая среда предварительно настроена на обоих концах для согласования использования либо нечетного, либо четного паритета. Для каждой строки битов, готовых к передаче (пакета данных), отправитель вычисляет бит паритета (0 или 1), чтобы привести ее в соответствие с согласованным паритетом – четным или нечетным. Получатель пакета сначала проверяет, соответствует ли паритет всего пакета предварительной договоренности, а затем, в случае обнаружения ошибки паритета в пакете, запрашивает его повторную передачу. В информатике паритетная полоса или паритетный диск в RAID обеспечивает исправление ошибок. Биты паритета записываются из расчета один бит паритета на n битов, где n – количество дисков в массиве. При возникновении ошибки чтения каждый бит в поврежденной области пересчитывается на основе набора из n битов. Таким образом, использование одного бита паритета создает "избыточность" для области размером от одного бита до размера одного диска. См. ниже. В электронике транскодирование данных с использованием паритета может быть очень эффективным, поскольку XOR-вентили выдают эквивалент контрольного бита, создающего четный паритет, а логические схемы на основе XOR легко масштабируются для любого количества входов. Структуры XOR и AND составляют основу большинства интегральных схем.

Использование

Из-за своей простоты паритет используется во многих аппаратных приложениях, где операцию можно повторить в случае возникновения проблем или просто полезно обнаружить ошибку. Например, шины SCSI и PCI используют паритет для обнаружения ошибок передачи, а многие кэши инструкций микропроцессоров включают защиту паритетом. Поскольку данные кэша инструкций являются лишь копией основной памяти, их можно отбросить и повторно запросить, если обнаружено повреждение. В последовательной передаче данных распространенным форматом является 7 бит данных, бит четности и один или два стоповых бита. Этот формат позволяет разместить все 7-битные символы ASCII в 8-битном байте. Возможны и другие форматы: 8 бит данных плюс бит паритета могут передавать все 8-битные байтовые значения. В контексте последовательной связи паритет обычно генерируется и проверяется аппаратным интерфейсом (например, UART), а при приеме результат становится доступным процессору, такому как ЦП (а также, например, операционной системе), через бит статуса в аппаратном регистре интерфейса. Восстановление после ошибки обычно выполняется путем повторной передачи данных, детали которой обычно обрабатываются программным обеспечением (например, подпрограммами ввода-вывода операционной системы). Когда общее количество передаваемых битов, включая бит паритета, четное, нечетный паритет имеет преимущество, поскольку шаблоны, состоящие только из нулей или только из единиц, обнаруживаются как ошибки. Если общее количество битов нечетное, обнаруживается только один из шаблонов как ошибка, и выбор можно сделать, исходя из того, какая ошибка ожидается чаще.

История

Паритный трек присутствовал на первой магнитной ленте для хранения данных в 1951 году. Парность в этой форме, применяемая к нескольким параллельным сигналам, известна как поперечная проверка избыточности. Её можно комбинировать с паритетом, вычисляемым по нескольким битам, передаваемым по одному сигналу – продольной проверкой избыточности. В параллельной шине на каждый параллельный сигнал приходится один бит продольной проверки избыточности. Паритет также использовался как минимум в некоторых системах ввода данных с бумажной перфоленты (которые предшествовали системам магнитной ленты). В системах, продаваемых британской компанией ICL (ранее ICT), бумажная лента имела 8 отверстий, расположенных поперек ленты, при этом восьмое отверстие предназначалось для паритета. Для данных использовалось 7 позиций, например, 7-битный ASCII. В восьмой позиции пробивалось отверстие в зависимости от количества пробитых отверстий в позициях данных.