Меню

Что такое ошибка паритета

Проверка чётности (Parity) и ЕСС для определения ошибок оперативной памяти компьютера.

Содержание:

  • 1 Parity Checking (Проверка четности)
    • 1.1 Как работает Parity Checking Works
  • 2 ECC

Parity Checking (Проверка четности)

Один из установленных для отрасли стандартов IBM заключается в том, что в банке чипа памяти находятся девять бит данных: 8 бит на символ плюс 1 дополнительный бит, называемый бит чётности.

Бит чётности позволяет схеме управления памятью следить за другими 8 битами — встроенной перекрёстной проверкой целостности каждого байта в системе.

Первоначально все ПК-системы, для обеспечения точности, использовали память с проверкой чётности. Но, начиная с 1994 года, большинство поставщиков стали продавать системы без проверки на чётность и любые другие способы обнаружения или исправления ошибок «на лету». В этих системах использовались более дешёвые nonparity модули, которые экономили на стоимости памяти для системы около 10% -15%.

Parity память приводит к увеличению первоначальной стоимости системы, в первую очередь из-за дополнительных бит памяти. Parity не может исправить системные ошибки, но поскольку чётность может обнаруживать ошибки, она может информировать пользователя об этих ошибках памяти, когда они происходят.

С тех пор Intel, AMD и другие производители поставляют поддержку памяти ECC, в основном на серверных чипсетах и процессорах. Чипсеты и процессоры для систем стандартного рабочего стола или ноутбука обычно не поддерживают parity или ECC.

Как работает Parity Checking Works

IBM, для проверки ошибок, первоначально установила стандарт чётности. Попробуем объяснить, что подразумевается под нечётным паритетом.

Поскольку в памяти, в байте хранятся 8 отдельных бит, генератор проверки чётности, который является либо частью ЦП, либо расположен в специальном чипе на материнской плате, оценивает биты данных способом суммирования числа в 1 байте.

Если найдено чётное число, генератор проверки чётности создаёт 1 и сохраняет его как девятый бит (бит чётности) в чипе памяти чётности. Сумма для всех 9 бит (включая бит чётности), даёт нечётное число.

Если исходная сумма из 8 бит данных — нечётное число, созданный бит чётности будет 0, сохраняя сумму для всех 9 бит нечётным числом. Основное правило заключается в том, что значение бит чётности всегда выбирается так, чтобы сумма всех 9 бит (8 бит данных плюс 1 бит чётности) хранилась как нечётное число.

Если бы система использовала чётность, пример был бы таким же, за исключением того, что бит чётности был бы создан для обеспечения чётной суммы. Не имеет значения, используется ли чётное или нечётное соотношение. Система использует то или другое и полностью прозрачна для чипов памяти.

Помните, что 8 бит данных в байте нумеруются 0 1 2 3 4 5 6 7.

Для понимания приведём следующие примеры:

Бит данных: 0 1 2 3 4 5 6 7 Бит чётности

Значение бита данных: 1 0 1 1 0 0 1 1 0

В этом примере, поскольку общее количество бит данных со значением 1 — нечётное число (5), чтобы обеспечить нечётную сумму для всех 9 бит, бит чётности должен иметь значение 0.

Вот другой пример:

Бит данных: 0 1 2 3 4 5 6 7 Бит чётности

Значение бита данных: 1 1 1 1 0 0 1 1 1

В этом примере потому что общее количество битов данных со значением 1 — чётное число (6), бит чётности для создания нечётной суммы всех 9 битов, должен иметь значение 1.

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

Система не может определить какой бит изменился и изменился ли только один бит. Например, если было изменено 3 бита, байт по-прежнему отметит ошибку проверки чётности. Однако, если изменились 2 бита, плохой байт может пройти незамеченным. Поскольку множественные битовые ошибки (в одном байте) редки, эта схема даёт разумное и недорогое указание на состояние памяти.

ECC

ECC — большой шаг за пределы обнаружения простых ошибок чётности. Вместо простого обнаружения ошибок, ECC позволяет исправлять одну битовую ошибку, что означает, система может продолжать работать без перерыва и без искажения данных.

Реализованное в большинстве ПК — ECC, может только обнаружить, не правильные, двухбитовые ошибки. Так как исследования показали, что примерно 98% ошибок памяти однобитовые, наиболее часто используемый тип ECC — это тот, в котором контроллер памяти обнаруживает и исправляет в доступных данных однобитовые ошибки. (Двухбитовые ошибки могут быть обнаружены, но не скорректированы.)

ECC

Этот тип ECC известен как исправление однобитовых ошибок с обнаружением двухбитовых ошибкой (SEC-DED) и требует дополнительных 7 проверочных бит над 32 битами в 4- байтовую систему и ещё 8 контрольных битов на 64 бита в 8-байтовой системе

Если в системе используется SIMM, для каждого банка добавляются два 36-битных (чётность) SIMM, которые составляют 72 бита, и ECC — на уровне банка. Если система использует DIMM, в качестве банка используется один 72-разрядный DIMM с контролем чётности/ECC и предоставляет дополнительные биты.

RIMM, в зависимости от чипсета и материнской платы, устанавливаются в одиночку или в парах. Если требуется чётность/ECC, они должны быть 18-битными версиями.

ECC предполагает, что контроллер памяти вычисляет контрольные биты в операции записи в память. Выполняет сравнение между считываемыми и вычисленными контрольными битами в операции чтения и, при необходимости, исправляя неправильные биты.

Дополнительная логика ECC в контроллере памяти не очень значительна в этой недорогой высокопроизводительной логике VLSI, но ECC фактически влияет на производительность памяти при записи.

Это связано с тем, что операция должна быть рассчитана на ожидание вычисления контрольных битов и, когда система дожидается исправленных данных, чтения. При написании части слова все слово должно быть сначала прочитано, пострадавший байт(ы) переписан, а затем вычислены новые контрольные биты. Это превращает операции замещения части слова в более медленную чтение-изменение записи. К счастью, удар по производительности небольшой, порядка нескольких процентов, поэтому компромисс для повышения надёжности хороший.

Большинство ошибок памяти имеют однобитовый характер, который ECC может исправить. Включение этого отказоустойчивого метода обеспечивает высокую надёжность системы и доступность обслуживания.

Система на базе ECC хороший выбор для серверов, рабочих станций или критически важных приложений, в которых стоимость потенциальной ошибки памяти перевешивает дополнительную память и стоимость исправления системы, а также гарантирует, что она не будет снижать надёжность системы.

К сожалению, большинство стандартных настольных и переносных ПК, материнских плат (чипсетов) и модулей памяти не поддерживают ECC.

Если вы хотите поддерживающую ECC систему, убедитесь, что все задействованные компоненты поддерживают ECC. Обычно это означает покупку более дорогих процессоров, материнских плат и оперативной памяти, предназначенных для серверных или высокопроизводительных приложений для рабочих станций.

Мы знаем, что биты 0 и 1 соответствуют двум разным диапазонам аналоговых напряжений. Таким образом, во время передачи двоичных данных из одной системы в другую, шум также может быть добавлен. Из-за этого могут быть ошибки в полученных данных в другой системе.

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

  • Коды обнаружения ошибок
  • Коды исправления ошибок

Коды обнаружения ошибок – используются для обнаружения ошибок, присутствующих в принятых данных (битовом потоке). Эти коды содержат некоторые биты, которые включены (добавлены) в исходный поток битов. Эти коды обнаруживают ошибку, если она произошла во время передачи исходных данных (потока битов). Пример – код четности, код Хэмминга.

Коды исправления ошибок – используются для исправления ошибок, присутствующих в полученных данных (битовом потоке), чтобы мы получили исходные данные. Коды исправления ошибок также используют аналогичную стратегию кодов обнаружения ошибок. Пример – код Хэмминга.

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

Код паритета

Легко включить (добавить) один бит четности либо слева от MSB, либо справа от LSB исходного битового потока. Существует два типа кодов четности, а именно четный код четности и нечетный код четности, в зависимости от типа выбранной четности.

Четный код

Значение четного бита должно быть равно нулю, если в двоичном коде присутствует четное количество единиц. В противном случае он должен быть один. Таким образом, четное число единиц присутствует в четном коде четности . Четный код четности содержит биты данных и четный бит четности.

В следующей таблице приведены коды четности, соответствующие каждому 3-битному двоичному коду. Здесь бит четности включен справа от LSB двоичного кода.

Бинарный код Четный бит Четный код
000 0 0000
001 1 0011
010 1 0101
011 0 0110
100 1 1001
101 0 1010
110 0 1100
111 1 1111

Здесь число битов, присутствующих в четных кодах четности, равно 4. Таким образом, возможное четное число единиц в этих четных кодах четности равно 0, 2 и 4.

  • Если другая система получает один из этих четных кодов четности, то в полученных данных нет ошибки. Биты, отличные от четного бита, совпадают с битами двоичного кода.

  • Если другая система получит коды, отличные от четных, то в полученных данных возникнет ошибка (и). В этом случае мы не можем предсказать исходный двоичный код, потому что мы не знаем битовую позицию (ы) ошибки.

Если другая система получает один из этих четных кодов четности, то в полученных данных нет ошибки. Биты, отличные от четного бита, совпадают с битами двоичного кода.

Если другая система получит коды, отличные от четных, то в полученных данных возникнет ошибка (и). В этом случае мы не можем предсказать исходный двоичный код, потому что мы не знаем битовую позицию (ы) ошибки.

Поэтому четный бит четности полезен только для обнаружения ошибки в принятом коде четности. Но недостаточно исправить ошибку.

Код нечетного паритета

Значение нечетного бита четности должно быть нулевым, если в двоичном коде присутствует нечетное число единиц. В противном случае, он должен быть один. Так что нечетное количество единиц присутствует в нечетном коде четности . Нечетный код четности содержит биты данных и нечетный бит четности.

В следующей таблице показаны нечетные коды четности, соответствующие каждому 3-битному двоичному коду. Здесь нечетный бит четности включен справа от LSB двоичного кода.

Бинарный код Нечетный бит четности Код нечетного паритета
000 1 0001
001 0 0010
010 0 0100
011 1 0111
100 0 1000
101 1 1011
110 1 1101
111 0 1110

Здесь число битов, присутствующих в нечетных кодах четности, равно 4. Таким образом, возможное нечетное число единиц в этих нечетных кодах четности равно 1 и 3.

  • Если другая система получает один из этих нечетных кодов четности, то в полученных данных нет ошибки. Биты, отличные от нечетного бита четности, совпадают с битами двоичного кода.

  • Если другая система получает не четные коды четности, то в полученных данных есть ошибка (и). В этом случае мы не можем предсказать исходный двоичный код, потому что мы не знаем битовую позицию (ы) ошибки.

Если другая система получает один из этих нечетных кодов четности, то в полученных данных нет ошибки. Биты, отличные от нечетного бита четности, совпадают с битами двоичного кода.

Если другая система получает не четные коды четности, то в полученных данных есть ошибка (и). В этом случае мы не можем предсказать исходный двоичный код, потому что мы не знаем битовую позицию (ы) ошибки.

Следовательно, нечетный бит четности полезен только для обнаружения ошибки в принятом коде четности. Но недостаточно исправить ошибку.

Код Хэмминга

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

Минимальное значение «k», для которого следующее соотношение является правильным (действительным), является не чем иным, как требуемым количеством битов четности.

2k geqn+k+1

Куда,

«n» – количество бит в двоичном коде (информация)

‘k’ – количество бит четности

Следовательно, количество битов в коде Хэмминга равно n + k.

Пусть код Хэмминга равен bn+kbn+k1.....b3b2b1 и битам четности pk,pk1,....p1. Мы можем поместить биты четности ‘k’ только в степени 2 позиции. В оставшихся битовых позициях мы можем разместить n бит двоичного кода.

Исходя из требований, мы можем использовать четную или нечетную четность при формировании кода Хемминга. Но тот же метод контроля четности следует использовать для того, чтобы определить, присутствует ли какая-либо ошибка в полученных данных.

Выполните эту процедуру для поиска битов четности .

  • Найдите значение p 1 , основанное на количестве единиц, присутствующих в позициях битов b 3 , b 5 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 0 .

  • Найдите значение p 2 , основанное на количестве единиц, присутствующих в позициях битов b 3 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 1 .

  • Найдите значение p 3 , основанное на количестве единиц, присутствующих в позициях битов b 5 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 2 .

  • Аналогично найдите другие значения битов четности.

Найдите значение p 1 , основанное на количестве единиц, присутствующих в позициях битов b 3 , b 5 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 0 .

Найдите значение p 2 , основанное на количестве единиц, присутствующих в позициях битов b 3 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 1 .

Найдите значение p 3 , основанное на количестве единиц, присутствующих в позициях битов b 5 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 2 .

Аналогично найдите другие значения битов четности.

Выполните эту процедуру для поиска контрольных битов .

  • Найдите значение c 1 , основанное на количестве единиц, присутствующих в битовых позициях b 1 , b 3 , b 5 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 0 .

  • Найдите значение c 2 , основанное на количестве единиц, присутствующих в позициях битов b 2 , b 3 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 1 .

  • Найдите значение c 3 , основанное на количестве единиц, присутствующих в позициях битов b 4 , b 5 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 2 .

  • Аналогично найдите другие значения контрольных битов.

Найдите значение c 1 , основанное на количестве единиц, присутствующих в битовых позициях b 1 , b 3 , b 5 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 0 .

Найдите значение c 2 , основанное на количестве единиц, присутствующих в позициях битов b 2 , b 3 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 1 .

Найдите значение c 3 , основанное на количестве единиц, присутствующих в позициях битов b 4 , b 5 , b 6 , b 7 и так далее. Все эти битовые позиции (суффиксы) в их эквивалентном двоичном файле имеют «1» в значении места 2 2 .

Аналогично найдите другие значения контрольных битов.

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

Пример 1

Найдем код Хемминга для двоичного кода: d 4 d 3 d 2 d 1 = 1000. Рассмотрим четные биты четности.

Количество битов в данном двоичном коде равно n = 4.

Мы можем найти необходимое количество бит четности, используя следующее математическое соотношение.

2k geqn+k+1

Подставим n = 4 в вышеприведенном математическом соотношении.

 Rightarrow2k geq4+k+1

 Rightarrow2k geq5+k

Минимальное значение k, удовлетворяющее указанному выше соотношению, равно 3. Следовательно, нам требуется 3 бита четности p 1 , p 2 и p 3 . Следовательно, количество битов в коде Хэмминга будет равно 7, поскольку в двоичном коде 4 бита и 3 бита четности. Мы должны поместить биты четности и биты двоичного кода в код Хэмминга, как показано ниже.

7-битный код Хэмминга : b7b6b5b4b3b2b1=d4d3d2p3D1р2bp1

Подставляя биты двоичного кода, код Хэмминга будет b7b6b5b4b3b2b1=100p3Op2p1. Теперь давайте найдем биты четности.

p1=b7 oplusb5 oplusb3=1 oplus0 oplus0=1

p2=b7 oplusb6 oplusb3=1 oplus0 oplus0=1

p3=b7 oplusb6 oplusb5=1 oplus0 oplus0=1

Подставляя эти биты четности, код Хэмминга будет иметь значение b7b6b5b4b3b2b1=1001011.

Пример 2

В приведенном выше примере мы получили код Хэмминга в виде b7b6b5b4b3b2b1=1001011. Теперь давайте найдем позицию ошибки, когда полученный код равен b7b6b5b4b3b2b1=1001111.

Теперь давайте найдем контрольные биты.

c1=b7 oplusb5 oplusb3 oplusb1=1 oplus0 oplus1 oplus1=1

c2=b7 oplusb6 oplusb3 oplusb2=1 oplus0 oplus1 oplus1=1

c3=b7 oplusb6 oplusb5 oplusb4=1 oplus0 oplus0 oplus1=0

Десятичное значение контрольных битов дает позицию ошибки в полученном коде Хэмминга.

c3c2c1= left(011 right)2= left(3 right)10

Следовательно, ошибка присутствует в третьем бите (b 3 ) кода Хэмминга. Просто добавьте значение, присутствующее в этом бите, и удалите биты четности, чтобы получить исходный двоичный код.

Бит четности является параметром со значением 0 или 1 , который используется в способе обнаружения ошибок передачи , в которой 0 или 1 добавляется к каждой группе 7-8 битов (байт). Цель состоит в том, чтобы каждый байт всегда имел нечетное общее количество «1» или четное общее количество «1» в соответствии с установленной четностью.

Четность — это метод обнаружения ошибок, используемый в асинхронной связи. Он используется для проверки целостности каждого байта в передаваемом потоке. Например, если установлена ​​нечетная четность, любой байт, полученный из передачи с общим числом «1», который является четным, должен содержать ошибку.

Источник: pixabay.com

Используются два типа проверки на четность: проверка на четность, при которой бит четности 1 добавляется, если в предыдущем байте имеется нечетное общее количество битов «1», и проверка на четность, когда выполняется обратное. С помощью этого метода вы сможете узнать только то, что произошла ошибка, но вы не узнаете, где произошла ошибка.

Для чего нужен бит четности?

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

Следовательно, необходимо реализовать некоторый метод, чтобы проверить, ошибочны ли полученные коды или байты.

Однако как получатель может узнать, ошибочен ли полученный код? Получатель не может узнать код до его получения.

Например, предположим, что отправитель передает код 01100110, но после прохождения через зашумленную линию получатель получает код 00100110. Получатель не будет знать, что он получил код с ошибкой во втором бите.

Получатель не может знать, что сообщение содержит ошибку в первом бите, потому что это будет означать, что получатель уже знает сообщение от передатчика до передачи.

Контроль ошибок

Проблема, с которой приемник может проверить наличие ошибки, может быть решена с помощью кодирования с контролем ошибок.

Основная идея кодирования с контролем ошибок заключается в добавлении дополнительного бита в информацию, которая должна быть отправлена, чтобы ошибка обнаруживалась и исправлялась. Есть много кодировок обработки ошибок. Самый простой — это бит четности.

Бит четности добавляется к каждому передаваемому байту. Этот бит используется для проверки того, что информация была доставлена ​​точно.

Бит четности для каждого байта устанавливается так, чтобы все байты имели нечетное число или четное число битов «1».

пример

Предположим, что два диска обмениваются данными с проверкой четности, которая является наиболее распространенной формой проверки четности.

В зависимости от единицы передачи он отправляет байты и сначала подсчитывает количество битов «1» в каждой группе из семи битов (байтах). Если количество битов «1» четное, установите бит четности в 0. Если количество битов «1» нечетное, установите бит четности в 1. Таким образом, каждый байт будет иметь четное количество битов «1».

Приемник проверяет каждый байт, чтобы убедиться, что он имеет четное количество битов «1». Если в байте обнаружено нечетное количество битов «1», приемник будет знать, что во время передачи произошла ошибка.

Ранее и получатель, и отправитель должны были договориться об использовании проверки четности и о том, должна ли четность быть нечетной или четной. Если обе стороны не настроены с одинаковым чувством паритета, связь будет невозможна.

Обнаружение ошибок

Проверка четности — самый простой метод обнаружения ошибок связи.

Однако, хотя он может обнаруживать множество ошибок, он не является безошибочным, поскольку он не способен обнаруживать компоновку, когда четное количество битов в одном и том же байте изменяется из-за электрического шума.

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

Как это работает?

Предположим, у вас есть 7-битные коды данных и дополнительный бит, который является битом четности, добавлен для формирования 8-битного кода данных. Можно использовать два метода: четность и нечетность.

В качестве образца можно взять метод четности. Вы поступили бы наоборот, если бы выбрали метод нечетной четности.

Метод четной четности

Этот метод указывает, что добавляемый бит четности должен быть таким, чтобы общая сумма «1» в окончательном коде была четной. Например:

Следовательно, для первого 7-битного кода: 0010010 с четным количеством «1» (2) переданный 8-битный код будет: 00100100 с четным количеством «1» (2).

Для 7-битного кода 1110110 с нечетным количеством «1» (5) переданный 8-битный код будет 11101101 с четным количеством «1» (6).

После того, как получатель получит 8 битов, он проверит количество «1» в полученном коде, если количество «1» четное, это означает, что ошибки нет, если количество нечетное, это означает, что ошибка.

Когда вычисленная четность полученного байта не совпадает со значением принятого бита четности, считается, что произошла ошибка четности, и обычно байт отбрасывается.

В случае ошибки приемник предупредит передатчик, чтобы он отправил код еще раз.

Не безошибочный

Однако у этих методов контроля четности есть недостаток: если код 1110110 преобразуется шумом линии в 11111001, вызывая 2-битную ошибку, то этот метод не может обнаружить, что ошибка произошла.

Четность хороша при обнаружении ошибок и всегда обнаруживает любое нечетное количество ошибок в полученном байте. Однако при четном количестве ошибок средство проверки четности не сможет найти ошибку.

Ссылки

  1. Ванги Бил (2019). Проверка четности. Webopedia. Взято с: webopedia.com.
  2. Группа исследований электроники (2019). Четность символов. Взято с: erg.abdn.ac.uk.
  3. Словарь (2019) .. Бит паритета. Взято с сайта vocabulary.com.
  4. Ангмс (2013). Самый простой код контроля ошибок — Parity Bit. Взято с сайта angms.science.
  5. Кристенсон, (2011). Определение бита четности. Techterms. Взято с: techterms.com.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Что такое ошибка параллакса
  • Что такое ошибка пакета установщика windows