Метода коррекции ошибок ecc 200

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

Как работает коррекция ошибок ECC на SSD

Один из способов, которым NAND память стали самый дешевый всего, потому что это требует, чтобы исправление ошибок было выполнено от элемента вне самого чипа NAND; В случае SSD, ECC выполняется на контроллере .

Такое же исправление ошибок также помогает исправить битовые ошибки из-за носить на Память сами клетки , Истощение может вызвать «застревание» битов в том или ином состоянии (известное как «жесткая» ошибка или жесткая ошибка) и может увеличить частоту «мягких» ошибок.

Хотя это понятие не является слишком широким, сопротивление флэш-памяти является мерой того, сколько циклов стирания / записи может выдержать блок флэш-памяти, прежде чем начнут появляться «серьезные» ошибки. Очень часто эти сбои происходят только в отдельных битах, и очень редко происходит сбой всего блока. При достаточно высоком числе стирания / записи «мягкая» частота ошибок также увеличивается из-за ряда других механизмов в самом SSD.

Функции контролера SSD

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

Давайте рассмотрим пример: допустим, что неиспользуемый чип NAND имеет достаточно «мягких» ошибок, чтобы требовать 8 бит ECC, то есть при каждом считывании страницы может быть до 8 бит, которые были случайно повреждены (обычно из-за электрических помех, которые мы говорили о). вначале). ECC, используемый в этом чипе, может исправлять 12-битные ошибки, так что ECC не может решить эту проблему мы должны найти 8 «мягких» ошибок, связанных с электрическим шумом, плюс еще 5 «мягких» из-за износа.

Теперь производители флэш-памяти гарантируют, что первый из этих 5 сбоев произойдет через некоторое время после спецификации прочности SSD. Это означает, что ни один бит не выйдет из строя из-за износа, пока не будут превышены циклы стирания / записи, указанные производителем. Теперь имейте в виду, что спецификации не достаточно точны, чтобы предсказать, когда следующий бит выйдет из строя, и на самом деле это может занять несколько тысяч циклов стирания / записи выше спецификации, чтобы это произошло; помните, что производитель гарантирует, что это не произойдет до X циклов, но не тогда, когда это произойдет после их превышения.

Это означает, что это может занять много времени, прежде чем блок становится настолько коррумпированным что его необходимо удалить из службы (а также для этого на SSD обычно есть «дополнительные» блоки для замены поврежденных), что, в свою очередь, означает, что сопротивление исправлен от ошибок блок может быть во много раз больше указанного сопротивления, в зависимости от количества избыточных ошибок, которые ECC предназначен для исправления.

Какое влияние оказывает код исправления ошибок на SSD?

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

Phison-E16-controladora

Алгоритмы ECC имеют свое собственное математическое состояние в зависимости от контроллера (другими словами, нет никакого стандарта), и даже самые базовые кодировки ECC (Рида-Соломона и LDPC) довольно сложны для понимания. Когда кто-то говорит о пределе Шеннона (максимальное количество битов, которое может быть исправлено), это величина, которую, как вы не знаете от производителя в технических характеристиках, чрезвычайно сложно вычислить.

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

Оглавление

  • Вступление
  • Коррекция ошибок
  • Финансовая сторона
  • Тестовый стенд
  • Методика тестирования
  • Результаты тестирования
    • Тест памяти
    • 3DMark
    • 7Zip
    • Cinebench
    • CrystalMark
    • Fritz
    • LinX
    • wPrime
    • AIDA64 Extreme
  • Заключение

Вступление

На сегодняшний день на просторах Рунета можно встретить открытые темы на форумах с вопросами – стоит ли брать рабочую станцию с ECC-памятью или можно обойтись обычной? В данных ветках можно прочесть множество противоречивых утверждений, и часть из них говорит о том, что коррекция ошибок сильно замедляет память, а следовательно и ЦП. Но мало кто это проверял на деле на современных процессорах.

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

Коррекция ошибок

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

  • Аппаратные ошибки;
  • Случайные ошибки.

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

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

рекомендации

3060 дешевле 30тр в Ситилинке

3070 Gigabyte Gaming за 50 тр с началом

<b>13900K</b> в Регарде по СТАРОМУ курсу 62

3070 Gainward Phantom дешевле 50 тр

10 видов <b>4070 Ti</b> в Ситилинке — все до 100 тр

13700K дешевле 40 тр в Регарде

MSI 3050 за 25 тр в Ситилинке

13600K дешевле 30 тр в Регарде

4080 почти за 100тр — дешевле чем по курсу 60

12900K за 40тр с началом в Ситилинке

RTX 4090 за 140 тр в Регарде

Компьютеры от 10 тр в Ситилинке

3060 Ti Gigabyte дешевле 40 тр в Регарде

3070 дешевле 50 тр в Ситилинке

-7% на 4080 Gigabyte Gaming

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

В свое время было предложено много различных способов решения данной проблемы, но на сегодняшний день наибольшее распространение получил метод коррекции ошибок или ECC (Error-Correcting Code). Данный метод позволяет автоматически исправлять однобитовые ошибки в 64-битном слове – SEC (Single Error Correction) и детектировать двухбитовые – DED (Double Error Detection).

Физическая реализация ECC заключается в размещении дополнительной микросхемы памяти на модуле ОЗУ – соответственно, при одностороннем дизайне модуля памяти вместо восьми чипов располагается девять, а при двустороннем вместо шестнадцати – восемнадцать. Таким образом, ширина модуля становится не 64 бита, а 72 бита.

Метод коррекции ошибок работает следующим образом: при записи 64 бит данных в ячейку памяти происходит подсчет контрольной суммы, составляющей 8 бит. Когда процессор обращается к этим данным и производит считывание, проводится повторный подсчет контрольной суммы и сравнение с исходной. Если суммы не совпадают – произошла ошибка. Если она однобитовая, то неправильный бит исправляется автоматически, если двухбитовая – детектируется и сообщается ОС.

Финансовая сторона

Прежде чем приступить к тестированию, необходимо затронуть финансовый вопрос.

Стоимость обычного модуля памяти DDR3-1600 с напряжением 1.35 В и объемом 8 Гбайт составляет около 3600 рублей, а с коррекцией ошибок – 4800 рублей. На первый взгляд ECC-память выходит на 30-35% дороже, что, в целом, не позволяет их сравнивать в силу существенно большей стоимости последней. Но почему же тогда такой вопрос возникает при сборке рабочей станции? Все просто – необходимо смотреть на данный вопрос шире, а именно – смотреть на общую стоимость рабочей станции.

Ценник однопроцессорной станции на базе четырехъядерного восьмипоточного Xeon (настольные процессоры серий i5 и i7 не поддерживают ECC-память) с 32 Гбайтами памяти, материнской платы с чипсетом C222/С224/С226 (десктопные наборы логики Z87/Z97 и другие также не поддерживают память с коррекцией ошибок) будет превышать 70 000 рублей (при условии, что устанавливаются серверные SSD с повышенным ресурсом). А если включить в эту стоимость и дискретную видеокарту, и прочие сопутствующие компоненты, например, ИБП, то ценник из пятизначного превратится в шестиизначный, перевалив планку в 100 000 рублей.

Покупка 32 Гбайт памяти с коррекцией ошибок потребует дополнительных 4-6 тысяч рублей, что по отношению к общей стоимости рабочей станции не превышает 5%, то есть не является критичным. Также переход от десктопного к серверному железу предоставит и другие преимущества, например: интегрированные графические карты P4600 в процессорах Intel Xeon E3-1200 третьего поколения получили оптимизированные драйверы, которые должны повышать производительность в профессиональных приложениях, например, в CAD; поддержка технологии Intel VT-d, которая позволяет пробрасывать устройства в виртуальную среду, например, видеокарты; прочие серверные технологии – Intel AMT или IPMI, WatchDog и другие, которые также могут оказаться полезными.

Таким образом, хоть и сама ECC-память стоит заметно дороже обычной, в общей стоимости рабочей станции данная статья затрат является несущественной, и переплата не превышает 5%.

Тестовый стенд

Для данного обзора использовалась следующая конфигурация:

  • Материнская плата: Supermicro X10SAE (Intel C226, LGA 1150);
  • Процессор: Xeon E3-1245V3 (Turbo Boost – off, EIST – off, HT – on);
  • Оперативная память:
    • 2x Kingston DDR3-1600 ECC 8 Гбайт (KVR16LE11/8 CL11, 1.35 В);
    • 2x Kingston DDR3-1600 8 Гбайт (KVR16LN11/8 CL11, 1.35 В);
  • ОС: Windows 8.1 Pro 64-bit.

Методика тестирования

В рамках тестирования были произведены замеры производительности как при одноканальном режиме работы ИКП, так и при двухканальном. Суммарный объем ОЗУ составил 8 (один модуль) и 16 Гбайт (два модуля) соответственно.

Программное обеспечение:

  • 3DMark 2006 1.2;
  • 7Zip 9.20;
  • AIDA64 Extreme 5.20.3400;
  • Cinebench R15;
  • CrystalMark 2004R3;
  • Fritz 4.20;
  • LinX 0.6.5;
  • wPrime 2.10.

Результаты тестирования

Тест памяти

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

550x378 31 KB. Big one: 1019x701 26 KB

При изучении результатов можно заключить, что производительность ECC- и non-ECC- памяти находится на одном и том же уровне в рамках погрешности.

550x147 18 KB. Big one: 1017x273 11 KB

Если в предыдущем тесте от замера к замеру выигрывал то один, то другой тип памяти, то при замере латентности ECC-память постоянно показывает большие задержки. Но разница несущественна – всего лишь 1 нс.

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

3DMark

Тестовый пакет 3DMark содержит подтесты как для процессора, так и для графической карты. Здесь и кроется самое интересное – давно известно, что встроенному видеоядру не хватает существующей ПСП в 25.6 Гбайт/с, поэтому именно в графических подтестах можно выявить негативное влияние коррекции ошибок, если оно вообще есть,…

550x880 50 KB. Big one: 1037x1661 64 KB

… но разницы нет – что ECC, что non-ECC. Ни процессор, ни интегрированное ядро никак не реагируют на замену обычной памяти на DDR с коррекцией ошибок – результаты одинаковы в рамках погрешности. Среднеарифметическая разница составила 0.02% в пользу ECC-памяти для одноканального режима и 1.6% для двухканального режима.

При этом нельзя сказать, что встроенная видеокарта P4600 не зависит от скорости ОЗУ – при одноканальном доступе общий результат почти на 30% ниже, чем при двухканальном. Другими словами, скорость ОЗУ критична для графического ядра, но сами по себе «ECC-версии» не влияют ни на скорость ОЗУ, ни на видеокарту.

7Zip

Архиваторы, как известно, чувствительны к памяти, поэтому, возможно, здесь получится зафиксировать влияние типа памяти на производительность.

550x293 23 KB. Big one: 1027x548 20 KB

Ситуация с архивацией неоднозначная: с одной стороны – в одноканальном режиме (как при распаковке, так и при сжатии) ECC-память уверенно оказывается медленнее на 2%; с другой – в двухканальном режиме при сжатии ECC-память уверенно быстрее, а при распаковке – медленнее, а среднее арифметическое – быстрее на 0.65%.

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

Cinebench

Тестовый пакет Cinebench содержит подтест как процессора, так и видеокарты.

550x293 20 KB. Big one: 1026x547 20 KB

Но ни первый, ни вторая никак не отреагировали на ECC-память.

Зато налицо явная зависимость видеокарты от ПСП – при одноканальном доступе результат в OpenGL оказался на 25% ниже, чем при двухканальном. Вспоминая результаты 3DMark и смотря на нынешние, можно заключить, что производительность интегрированной видеокарты хоть и зависит от ПСП, но ECC-память не оказывает на нее негативного влияния.

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

Другой, более
коварный тип отказа 
нерегулярная ошибка (сбой). Это непостоянный
отказ, который не происходит при
повторении условий функционирования
или через регулярные интервалы.

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

В настоящее время
производители памяти почти полностью
устранили источники альфа-частиц. И
многие стали думать, что проверка
четности не нужна вовсе. Например, сбои
в памяти емкостью 16 Мбайт из-за альфа-частиц
случаются в среднем только один раз за
16 лет! Однако сбои памяти происходят
значительно чаще.

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

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

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

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

  • Использование
    неверного типа или параметра быстродействия
    памяти.
    Тип
    памяти должен поддерживаться конкретным
    набором микросхем и обладать определенной
    этим набором скоростью доступа.

  • Радиочастотная
    интерференция.

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

  • Статические
    разряды.

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

  • Ошибки
    синхронизации.
    Не
    поступившие своевременно данные могут
    стать причиной появления программных
    ошибок. Зачастую причина заключается
    в неверных параметрах BIOS,
    оперативной памяти, быстродействие
    которой ниже, чем требуется системой,
    «разогнанных» процессорах и прочих
    ситемных компонентах.

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

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

  • контроль четности;

  • коды коррекции
    ошибок (ECC).

Соседние файлы в папке Сватов лабы

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Контроль четности и коды коррекции ошибок (ECC).

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

Другой, более коварный тип отказа — нерегулярная ошибка (сбой). Это непостоянный отказ, который не происходит при повторении условий функционирования или через регулярные интервалы.

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

В настоящее время производители памяти почти полностью устранили источники альфачастиц. И многие стали думать, что проверка четности не нужна вовсе. Например, сбои в памяти емкостью 16 Мбайт из-за альфа-частиц случаются в среднем только один раз за 16 лет! Однако сбои памяти происходят значительно чаще.

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

Эксперимент, проверяющий степень влияния космических лучей на появление ошибок в работе микросхем, показал, что соотношение “сигнал–ошибка” (signal-to-error ratio — SER) для некоторых модулей DRAM составило 5950 единиц интенсивности отказов (failure units — FU) на миллиард часов наработки для каждой микросхемы. Измерения проводились в условиях, приближенных к реальной жизни, с учетом длительности в несколько миллионов машиночасов. В среднестатистическом компьютере это означало бы появление программной ошибки памяти примерно каждые шесть месяцев. В серверных системах или мощных рабочих станциях с большим объемом установленной оперативной памяти подобная статистика указывает на одну ошибку (или даже более) в работе памяти каждый месяц! Когда тестовая система с теми же модулями DIMM была размещена в надежном убежище на глубине более 15 метров каменной породы, что полностью устраняет влияние космических лучей, программные ошибки в работе памяти вообще не были зафиксированы. Эксперимент продемонстрировал не только опасность влияния космических лучей, но и доказал, насколько эффективно устранять влияние альфалучей и радиоактивных примесей в оболочках модулей памяти.

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

Хотя космические лучи и радиация являются причиной большинства программных ошибок памяти, существуют и другие факторы:

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

2. Использование неверного типа или параметра быстродействия памяти. Тип памяти

должен поддерживаться конкретным набором микросхем и обладать определенной

этим набором скоростью доступа.

3. Электромагнитные помехи. Возникают при расположении радиопередатчиков рядом с

компьютером, что иногда приводит к генерированию паразитных электрических сигна-

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

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

4. Статические разряды. Вызывают моментальные скачки в энергоснабжении, что может

повлиять на целостность данных.

5. Ошибки синхронизации. Не поступившие своевременно данные могут стать причиной

появления программных ошибок. Зачастую причина заключается в неверных парамет-

рах BIOS, оперативной памяти, быстродействие которой ниже, чем требуется систе-

мой, “разогнанных” процессорах и прочих системных компонентах.

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

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

— контроль четности;

— коды коррекции ошибок (ECC).

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

Байт данных с контролем четности включает в себя 9, а не 8 бит, поэтому стоимость памяти с контролем четности выше примерно на 12,5%. Кроме того, контроллеры памяти, не требующие логических мостов для подсчета данных четности или ECC, обладают упрощенной внутренней архитектурой. Портативные системы, для которых вопрос минимального энергопотребления особенно важен, выигрывают от уменьшенного энергопотребления памяти благодаря использованию меньшего количества микросхем DRAM. И наконец, шина данных памяти без контроля четности имеет меньшую разрядность, что выражается в сокращении количества буферов данных. Статистическая вероятность возникновения ошибок памяти в современных настольных компьютерах составляет примерно одну ошибку в несколько месяцев. При этом количество ошибок зависит от объема и типа используемой памяти. Подобный уровень ошибок может быть приемлемым для обычных компьютеров, не используемых для работы с важными приложениями. В этом случае цена играет основную роль, а дополнительная стоимость модулей памяти с поддержкой контроля четности и кода ECC себя не оправдывает.

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

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

Контроль четности

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

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

— контроль четности оберегает от последствий проведения неверных вычислений на базе некорректных данных;

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

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

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

Код коррекции ошибок

Коды коррекции ошибок (Error Correcting Code — ECC) позволяют не только обнаружить ошибку, но и исправить ее в одном разряде. Поэтому компьютер, в котором используются подобные коды, в случае ошибки в одном разряде может работать без прерывания, причем данные не будут искажены. Коды коррекции ошибок в большинстве ПК позволяют только обнаруживать, но не исправлять ошибки в двух разрядах. Но приблизительно 98% сбоев памяти вызвано именно ошибкой в одном разряде, т.е. она успешно исправляется с помощью данного типа кодов. Данный тип ECC получил название SEC)DED (single-bit error-correction double-bit error detection — одноразрядная коррекция, двухразрядное обнаружение ошибок). В кодах коррекции ошибок этого типа для каждых 32 бит требуется дополнительно семь контрольных разрядов при 4-байтовой и восемь — при 8-байтовой организации (64-разрядные процессоры Athlon/Pentium). Реализация кода коррекции ошибок при 4-байтовой организации, очевидно, дороже реализации проверки нечетности или четности, но при 8-байтовой организации стоимость реализации кода коррекции ошибок не превышает стоимости реализации проверки четности.

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

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

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

«Interleaver» redirects here. For the fiber-optic device, see optical interleaver.

In computing, telecommunication, information theory, and coding theory, an error correction code, sometimes error correcting code, (ECC) is used for controlling errors in data over unreliable or noisy communication channels.[1][2] The central idea is the sender encodes the message with redundant information in the form of an ECC. The redundancy allows the receiver to detect a limited number of errors that may occur anywhere in the message, and often to correct these errors without retransmission. The American mathematician Richard Hamming pioneered this field in the 1940s and invented the first error-correcting code in 1950: the Hamming (7,4) code.[2]

ECC contrasts with error detection in that errors that are encountered can be corrected, not simply detected. The advantage is that a system using ECC does not require a reverse channel to request retransmission of data when an error occurs. The downside is that there is a fixed overhead that is added to the message, thereby requiring a higher forward-channel bandwidth. ECC is therefore applied in situations where retransmissions are costly or impossible, such as one-way communication links and when transmitting to multiple receivers in multicast. Long-latency connections also benefit; in the case of a satellite orbiting around Uranus, retransmission due to errors can create a delay of five hours. ECC information is usually added to mass storage devices to enable recovery of corrupted data, is widely used in modems, and is used on systems where the primary memory is ECC memory.

ECC processing in a receiver may be applied to a digital bitstream or in the demodulation of a digitally modulated carrier. For the latter, ECC is an integral part of the initial analog-to-digital conversion in the receiver. The Viterbi decoder implements a soft-decision algorithm to demodulate digital data from an analog signal corrupted by noise. Many ECC encoders/decoders can also generate a bit-error rate (BER) signal, which can be used as feedback to fine-tune the analog receiving electronics.

The maximum fractions of errors or of missing bits that can be corrected are determined by the design of the ECC code, so different error correcting codes are suitable for different conditions. In general, a stronger code induces more redundancy that needs to be transmitted using the available bandwidth, which reduces the effective bit-rate while improving the received effective signal-to-noise ratio. The noisy-channel coding theorem of Claude Shannon can be used to compute the maximum achievable communication bandwidth for a given maximum acceptable error probability. This establishes bounds on the theoretical maximum information transfer rate of a channel with some given base noise level. However, the proof is not constructive, and hence gives no insight of how to build a capacity achieving code. After years of research, some advanced ECC systems as of 2016[3] come very close to the theoretical maximum.

Forward error correction[edit]

In telecommunication, information theory, and coding theory, forward error correction (FEC) or channel coding[4][3] is a technique used for controlling errors in data transmission over unreliable or noisy communication channels. The central idea is that the sender encodes the message in a redundant way, most often by using an ECC.

The redundancy allows the receiver to detect a limited number of errors that may occur anywhere in the message, and often to correct these errors without re-transmission. FEC gives the receiver the ability to correct errors without needing a reverse channel to request re-transmission of data, but at the cost of a fixed, higher forward channel bandwidth. FEC is therefore applied in situations where re-transmissions are costly or impossible, such as one-way communication links and when transmitting to multiple receivers in multicast. FEC information is usually added to mass storage (magnetic, optical and solid state/flash based) devices to enable recovery of corrupted data, is widely used in modems, is used on systems where the primary memory is ECC memory and in broadcast situations, where the receiver does not have capabilities to request re-transmission or doing so would induce significant latency. For example, in the case of a satellite orbiting Uranus, a re-transmission because of decoding errors would create a delay of at least 5 hours.

FEC processing in a receiver may be applied to a digital bit stream or in the demodulation of a digitally modulated carrier. For the latter, FEC is an integral part of the initial analog-to-digital conversion in the receiver. The Viterbi decoder implements a soft-decision algorithm to demodulate digital data from an analog signal corrupted by noise. Many FEC coders can also generate a bit-error rate (BER) signal which can be used as feedback to fine-tune the analog receiving electronics.

The maximum proportion of errors or missing bits that can be corrected is determined by the design of the ECC, so different forward error correcting codes are suitable for different conditions. In general, a stronger code induces more redundancy that needs to be transmitted using the available bandwidth, which reduces the effective bit-rate while improving the received effective signal-to-noise ratio. The noisy-channel coding theorem of Claude Shannon answers the question of how much bandwidth is left for data communication while using the most efficient code that turns the decoding error probability to zero. This establishes bounds on the theoretical maximum information transfer rate of a channel with some given base noise level. His proof is not constructive, and hence gives no insight of how to build a capacity achieving code. However, after years of research, some advanced FEC systems like polar code[3] achieve the Shannon channel capacity under the hypothesis of an infinite length frame.

How it works[edit]

ECC is accomplished by adding redundancy to the transmitted information using an algorithm. A redundant bit may be a complex function of many original information bits. The original information may or may not appear literally in the encoded output; codes that include the unmodified input in the output are systematic, while those that do not are non-systematic.

A simplistic example of ECC is to transmit each data bit 3 times, which is known as a (3,1) repetition code. Through a noisy channel, a receiver might see 8 versions of the output, see table below.

Triplet received Interpreted as
000 0 (error-free)
001 0
010 0
100 0
111 1 (error-free)
110 1
101 1
011 1

This allows an error in any one of the three samples to be corrected by «majority vote», or «democratic voting». The correcting ability of this ECC is:

  • Up to 1 bit of triplet in error, or
  • up to 2 bits of triplet omitted (cases not shown in table).

Though simple to implement and widely used, this triple modular redundancy is a relatively inefficient ECC. Better ECC codes typically examine the last several tens or even the last several hundreds of previously received bits to determine how to decode the current small handful of bits (typically in groups of 2 to 8 bits).

Averaging noise to reduce errors[edit]

ECC could be said to work by «averaging noise»; since each data bit affects many transmitted symbols, the corruption of some symbols by noise usually allows the original user data to be extracted from the other, uncorrupted received symbols that also depend on the same user data.

  • Because of this «risk-pooling» effect, digital communication systems that use ECC tend to work well above a certain minimum signal-to-noise ratio and not at all below it.
  • This all-or-nothing tendency – the cliff effect – becomes more pronounced as stronger codes are used that more closely approach the theoretical Shannon limit.
  • Interleaving ECC coded data can reduce the all or nothing properties of transmitted ECC codes when the channel errors tend to occur in bursts. However, this method has limits; it is best used on narrowband data.

Most telecommunication systems use a fixed channel code designed to tolerate the expected worst-case bit error rate, and then fail to work at all if the bit error rate is ever worse.
However, some systems adapt to the given channel error conditions: some instances of hybrid automatic repeat-request use a fixed ECC method as long as the ECC can handle the error rate, then switch to ARQ when the error rate gets too high;
adaptive modulation and coding uses a variety of ECC rates, adding more error-correction bits per packet when there are higher error rates in the channel, or taking them out when they are not needed.

Types of ECC[edit]

A block code (specifically a Hamming code) where redundant bits are added as a block to the end of the initial message

A continuous code convolutional code where redundant bits are added continuously into the structure of the code word

The two main categories of ECC codes are block codes and convolutional codes.

  • Block codes work on fixed-size blocks (packets) of bits or symbols of predetermined size. Practical block codes can generally be hard-decoded in polynomial time to their block length.
  • Convolutional codes work on bit or symbol streams of arbitrary length. They are most often soft decoded with the Viterbi algorithm, though other algorithms are sometimes used. Viterbi decoding allows asymptotically optimal decoding efficiency with increasing constraint length of the convolutional code, but at the expense of exponentially increasing complexity. A convolutional code that is terminated is also a ‘block code’ in that it encodes a block of input data, but the block size of a convolutional code is generally arbitrary, while block codes have a fixed size dictated by their algebraic characteristics. Types of termination for convolutional codes include «tail-biting» and «bit-flushing».

There are many types of block codes; Reed–Solomon coding is noteworthy for its widespread use in compact discs, DVDs, and hard disk drives. Other examples of classical block codes include Golay, BCH, Multidimensional parity, and Hamming codes.

Hamming ECC is commonly used to correct NAND flash memory errors.[5]
This provides single-bit error correction and 2-bit error detection.
Hamming codes are only suitable for more reliable single-level cell (SLC) NAND.
Denser multi-level cell (MLC) NAND may use multi-bit correcting ECC such as BCH or Reed–Solomon.[6][7] NOR Flash typically does not use any error correction.[6]

Classical block codes are usually decoded using hard-decision algorithms,[8] which means that for every input and output signal a hard decision is made whether it corresponds to a one or a zero bit. In contrast, convolutional codes are typically decoded using soft-decision algorithms like the Viterbi, MAP or BCJR algorithms, which process (discretized) analog signals, and which allow for much higher error-correction performance than hard-decision decoding.

Nearly all classical block codes apply the algebraic properties of finite fields. Hence classical block codes are often referred to as algebraic codes.

In contrast to classical block codes that often specify an error-detecting or error-correcting ability, many modern block codes such as LDPC codes lack such guarantees. Instead, modern codes are evaluated in terms of their bit error rates.

Most forward error correction codes correct only bit-flips, but not bit-insertions or bit-deletions.
In this setting, the Hamming distance is the appropriate way to measure the bit error rate.
A few forward error correction codes are designed to correct bit-insertions and bit-deletions, such as Marker Codes and Watermark Codes.
The Levenshtein distance is a more appropriate way to measure the bit error rate when using such codes.
[9]

Code-rate and the tradeoff between reliability and data rate[edit]

The fundamental principle of ECC is to add redundant bits in order to help the decoder to find out the true message that was encoded by the transmitter. The code-rate of a given ECC system is defined as the ratio between the number of information bits and the total number of bits (i.e., information plus redundancy bits) in a given communication package. The code-rate is hence a real number. A low code-rate close to zero implies a strong code that uses many redundant bits to achieve a good performance, while a large code-rate close to 1 implies a weak code.

The redundant bits that protect the information have to be transferred using the same communication resources that they are trying to protect. This causes a fundamental tradeoff between reliability and data rate.[10] In one extreme, a strong code (with low code-rate) can induce an important increase in the receiver SNR (signal-to-noise-ratio) decreasing the bit error rate, at the cost of reducing the effective data rate. On the other extreme, not using any ECC (i.e., a code-rate equal to 1) uses the full channel for information transfer purposes, at the cost of leaving the bits without any additional protection.

One interesting question is the following: how efficient in terms of information transfer can an ECC be that has a negligible decoding error rate? This question was answered by Claude Shannon with his second theorem, which says that the channel capacity is the maximum bit rate achievable by any ECC whose error rate tends to zero:[11] His proof relies on Gaussian random coding, which is not suitable to real-world applications. The upper bound given by Shannon’s work inspired a long journey in designing ECCs that can come close to the ultimate performance boundary. Various codes today can attain almost the Shannon limit. However, capacity achieving ECCs are usually extremely complex to implement.

The most popular ECCs have a trade-off between performance and computational complexity. Usually, their parameters give a range of possible code rates, which can be optimized depending on the scenario. Usually, this optimization is done in order to achieve a low decoding error probability while minimizing the impact to the data rate. Another criterion for optimizing the code rate is to balance low error rate and retransmissions number in order to the energy cost of the communication.[12]

Concatenated ECC codes for improved performance[edit]

Classical (algebraic) block codes and convolutional codes are frequently combined in concatenated coding schemes in which a short constraint-length Viterbi-decoded convolutional code does most of the work and a block code (usually Reed–Solomon) with larger symbol size and block length «mops up» any errors made by the convolutional decoder. Single pass decoding with this family of error correction codes can yield very low error rates, but for long range transmission conditions (like deep space) iterative decoding is recommended.

Concatenated codes have been standard practice in satellite and deep space communications since Voyager 2 first used the technique in its 1986 encounter with Uranus. The Galileo craft used iterative concatenated codes to compensate for the very high error rate conditions caused by having a failed antenna.

Low-density parity-check (LDPC)[edit]

Low-density parity-check (LDPC) codes are a class of highly efficient linear block
codes made from many single parity check (SPC) codes. They can provide performance very close to the channel capacity (the theoretical maximum) using an iterated soft-decision decoding approach, at linear time complexity in terms of their block length. Practical implementations rely heavily on decoding the constituent SPC codes in parallel.

LDPC codes were first introduced by Robert G. Gallager in his PhD thesis in 1960,
but due to the computational effort in implementing encoder and decoder and the introduction of Reed–Solomon codes,
they were mostly ignored until the 1990s.

LDPC codes are now used in many recent high-speed communication standards, such as DVB-S2 (Digital Video Broadcasting – Satellite – Second Generation), WiMAX (IEEE 802.16e standard for microwave communications), High-Speed Wireless LAN (IEEE 802.11n),[13] 10GBase-T Ethernet (802.3an) and G.hn/G.9960 (ITU-T Standard for networking over power lines, phone lines and coaxial cable). Other LDPC codes are standardized for wireless communication standards within 3GPP MBMS (see fountain codes).

Turbo codes[edit]

Turbo coding is an iterated soft-decoding scheme that combines two or more relatively simple convolutional codes and an interleaver to produce a block code that can perform to within a fraction of a decibel of the Shannon limit. Predating LDPC codes in terms of practical application, they now provide similar performance.

One of the earliest commercial applications of turbo coding was the CDMA2000 1x (TIA IS-2000) digital cellular technology developed by Qualcomm and sold by Verizon Wireless, Sprint, and other carriers. It is also used for the evolution of CDMA2000 1x specifically for Internet access, 1xEV-DO (TIA IS-856). Like 1x, EV-DO was developed by Qualcomm, and is sold by Verizon Wireless, Sprint, and other carriers (Verizon’s marketing name for 1xEV-DO is Broadband Access, Sprint’s consumer and business marketing names for 1xEV-DO are Power Vision and Mobile Broadband, respectively).

Local decoding and testing of codes[edit]

Sometimes it is only necessary to decode single bits of the message, or to check whether a given signal is a codeword, and do so without looking at the entire signal. This can make sense in a streaming setting, where codewords are too large to be classically decoded fast enough and where only a few bits of the message are of interest for now. Also such codes have become an important tool in computational complexity theory, e.g., for the design of probabilistically checkable proofs.

Locally decodable codes are error-correcting codes for which single bits of the message can be probabilistically recovered by only looking at a small (say constant) number of positions of a codeword, even after the codeword has been corrupted at some constant fraction of positions. Locally testable codes are error-correcting codes for which it can be checked probabilistically whether a signal is close to a codeword by only looking at a small number of positions of the signal.

Interleaving[edit]

«Interleaver» redirects here. For the fiber-optic device, see optical interleaver.

A short illustration of interleaving idea

Interleaving is frequently used in digital communication and storage systems to improve the performance of forward error correcting codes. Many communication channels are not memoryless: errors typically occur in bursts rather than independently. If the number of errors within a code word exceeds the error-correcting code’s capability, it fails to recover the original code word. Interleaving alleviates this problem by shuffling source symbols across several code words, thereby creating a more uniform distribution of errors.[14] Therefore, interleaving is widely used for burst error-correction.

The analysis of modern iterated codes, like turbo codes and LDPC codes, typically assumes an independent distribution of errors.[15] Systems using LDPC codes therefore typically employ additional interleaving across the symbols within a code word.[16]

For turbo codes, an interleaver is an integral component and its proper design is crucial for good performance.[14][17] The iterative decoding algorithm works best when there are not short cycles in the factor graph that represents the decoder; the interleaver is chosen to avoid short cycles.

Interleaver designs include:

  • rectangular (or uniform) interleavers (similar to the method using skip factors described above)
  • convolutional interleavers
  • random interleavers (where the interleaver is a known random permutation)
  • S-random interleaver (where the interleaver is a known random permutation with the constraint that no input symbols within distance S appear within a distance of S in the output).[18]
  • a contention-free quadratic permutation polynomial (QPP).[19] An example of use is in the 3GPP Long Term Evolution mobile telecommunication standard.[20]

In multi-carrier communication systems, interleaving across carriers may be employed to provide frequency diversity, e.g., to mitigate frequency-selective fading or narrowband interference.[21]

Example[edit]

Transmission without interleaving:

Error-free message:                                 aaaabbbbccccddddeeeeffffgggg
Transmission with a burst error:                    aaaabbbbccc____deeeeffffgggg

Here, each group of the same letter represents a 4-bit one-bit error-correcting codeword. The codeword cccc is altered in one bit and can be corrected, but the codeword dddd is altered in three bits, so either it cannot be decoded at all or it might be decoded incorrectly.

With interleaving:

Error-free code words:                              aaaabbbbccccddddeeeeffffgggg
Interleaved:                                        abcdefgabcdefgabcdefgabcdefg
Transmission with a burst error:                    abcdefgabcd____bcdefgabcdefg
Received code words after deinterleaving:           aa_abbbbccccdddde_eef_ffg_gg

In each of the codewords «aaaa», «eeee», «ffff», and «gggg», only one bit is altered, so one-bit error-correcting code will decode everything correctly.

Transmission without interleaving:

Original transmitted sentence:                      ThisIsAnExampleOfInterleaving
Received sentence with a burst error:               ThisIs______pleOfInterleaving

The term «AnExample» ends up mostly unintelligible and difficult to correct.

With interleaving:

Transmitted sentence:                               ThisIsAnExampleOfInterleaving...
Error-free transmission:                            TIEpfeaghsxlIrv.iAaenli.snmOten.
Received sentence with a burst error:               TIEpfe______Irv.iAaenli.snmOten.
Received sentence after deinterleaving:             T_isI_AnE_amp_eOfInterle_vin_...

No word is completely lost and the missing letters can be recovered with minimal guesswork.

Disadvantages of interleaving[edit]

Use of interleaving techniques increases total delay. This is because the entire interleaved block must be received before the packets can be decoded.[22] Also interleavers hide the structure of errors; without an interleaver, more advanced decoding algorithms can take advantage of the error structure and achieve more reliable communication than a simpler decoder combined with an interleaver[citation needed]. An example of such an algorithm is based on neural network[23] structures.

Software for error-correcting codes[edit]

Simulating the behaviour of error-correcting codes (ECCs) in software is a common practice to design, validate and improve ECCs. The upcoming wireless 5G standard raises a new range of applications for the software ECCs: the Cloud Radio Access Networks (C-RAN) in a Software-defined radio (SDR) context. The idea is to directly use software ECCs in the communications. For instance in the 5G, the software ECCs could be located in the cloud and the antennas connected to this computing resources: improving this way the flexibility of the communication network and eventually increasing the energy efficiency of the system.

In this context, there are various available Open-source software listed below (non exhaustive).

  • AFF3CT(A Fast Forward Error Correction Toolbox): a full communication chain in C++ (many supported codes like Turbo, LDPC, Polar codes, etc.), very fast and specialized on channel coding (can be used as a program for simulations or as a library for the SDR).
  • IT++: a C++ library of classes and functions for linear algebra, numerical optimization, signal processing, communications, and statistics.
  • OpenAir: implementation (in C) of the 3GPP specifications concerning the Evolved Packet Core Networks.

List of error-correcting codes[edit]

Distance Code
2 (single-error detecting) Parity
3 (single-error correcting) Triple modular redundancy
3 (single-error correcting) perfect Hamming such as Hamming(7,4)
4 (SECDED) Extended Hamming
5 (double-error correcting)
6 (double-error correct-/triple error detect) Nordstrom-Robinson code
7 (three-error correcting) perfect binary Golay code
8 (TECFED) extended binary Golay code
  • AN codes
  • BCH code, which can be designed to correct any arbitrary number of errors per code block.
  • Barker code used for radar, telemetry, ultra sound, Wifi, DSSS mobile phone networks, GPS etc.
  • Berger code
  • Constant-weight code
  • Convolutional code
  • Expander codes
  • Group codes
  • Golay codes, of which the Binary Golay code is of practical interest
  • Goppa code, used in the McEliece cryptosystem
  • Hadamard code
  • Hagelbarger code
  • Hamming code
  • Latin square based code for non-white noise (prevalent for example in broadband over powerlines)
  • Lexicographic code
  • Linear Network Coding, a type of erasure correcting code across networks instead of point-to-point links
  • Long code
  • Low-density parity-check code, also known as Gallager code, as the archetype for sparse graph codes
  • LT code, which is a near-optimal rateless erasure correcting code (Fountain code)
  • m of n codes
  • Nordstrom-Robinson code, used in Geometry and Group Theory[24]
  • Online code, a near-optimal rateless erasure correcting code
  • Polar code (coding theory)
  • Raptor code, a near-optimal rateless erasure correcting code
  • Reed–Solomon error correction
  • Reed–Muller code
  • Repeat-accumulate code
  • Repetition codes, such as Triple modular redundancy
  • Spinal code, a rateless, nonlinear code based on pseudo-random hash functions[25]
  • Tornado code, a near-optimal erasure correcting code, and the precursor to Fountain codes
  • Turbo code
  • Walsh–Hadamard code
  • Cyclic redundancy checks (CRCs) can correct 1-bit errors for messages at most 2^{n-1}-1 bits long for optimal generator polynomials of degree n, see Mathematics of cyclic redundancy checks#Bitfilters

See also[edit]

  • Code rate
  • Erasure codes
  • Soft-decision decoder
  • Burst error-correcting code
  • Error detection and correction
  • Error-correcting codes with feedback

References[edit]

  1. ^ Glover, Neal; Dudley, Trent (1990). Practical Error Correction Design For Engineers (Revision 1.1, 2nd ed.). CO, USA: Cirrus Logic. ISBN 0-927239-00-0.
  2. ^ a b Hamming, Richard Wesley (April 1950). «Error Detecting and Error Correcting Codes». Bell System Technical Journal. USA: AT&T. 29 (2): 147–160. doi:10.1002/j.1538-7305.1950.tb00463.x. S2CID 61141773.
  3. ^ a b c Maunder, Robert (2016). «Overview of Channel Coding».
  4. ^ Charles Wang; Dean Sklar; Diana Johnson (Winter 2001–2002). «Forward Error-Correction Coding». Crosslink. The Aerospace Corporation. 3 (1). Archived from the original on 14 March 2012. Retrieved 5 March 2006. How Forward Error-Correcting Codes Work
  5. ^ «Hamming codes for NAND flash memory devices» Archived 21 August 2016 at the Wayback Machine. EE Times-Asia. Apparently based on «Micron Technical Note TN-29-08: Hamming Codes for NAND Flash Memory Devices». 2005. Both say: «The Hamming algorithm is an industry-accepted method for error detection and correction in many SLC NAND flash-based applications.»
  6. ^ a b «What Types of ECC Should Be Used on Flash Memory?» (Application note). Spansion. 2011. Both Reed–Solomon algorithm and BCH algorithm are common ECC choices for MLC NAND flash. … Hamming based block codes are the most commonly used ECC for SLC…. both Reed–Solomon and BCH are able to handle multiple errors and are widely used on MLC flash.
  7. ^ Jim Cooke (August 2007). «The Inconvenient Truths of NAND Flash Memory» (PDF). p. 28. For SLC, a code with a correction threshold of 1 is sufficient. t=4 required … for MLC.
  8. ^ Baldi, M.; Chiaraluce, F. (2008). «A Simple Scheme for Belief Propagation Decoding of BCH and RS Codes in Multimedia Transmissions». International Journal of Digital Multimedia Broadcasting. 2008: 1–12. doi:10.1155/2008/957846.
  9. ^ Shah, Gaurav; Molina, Andres; Blaze, Matt (2006). «Keyboards and covert channels». USENIX. Retrieved 20 December 2018.
  10. ^ Tse, David; Viswanath, Pramod (2005), Fundamentals of Wireless Communication, Cambridge University Press, UK
  11. ^ Shannon, C. E. (1948). «A mathematical theory of communication» (PDF). Bell System Technical Journal. 27 (3–4): 379–423 & 623–656. doi:10.1002/j.1538-7305.1948.tb01338.x. hdl:11858/00-001M-0000-002C-4314-2.
  12. ^ Rosas, F.; Brante, G.; Souza, R. D.; Oberli, C. (2014). «Optimizing the code rate for achieving energy-efficient wireless communications». Proceedings of the IEEE Wireless Communications and Networking Conference (WCNC). pp. 775–780. doi:10.1109/WCNC.2014.6952166. ISBN 978-1-4799-3083-8.
  13. ^ IEEE Standard, section 20.3.11.6 «802.11n-2009» Archived 3 February 2013 at the Wayback Machine, IEEE, 29 October 2009, accessed 21 March 2011.
  14. ^ a b Vucetic, B.; Yuan, J. (2000). Turbo codes: principles and applications. Springer Verlag. ISBN 978-0-7923-7868-6.
  15. ^ Luby, Michael; Mitzenmacher, M.; Shokrollahi, A.; Spielman, D.; Stemann, V. (1997). «Practical Loss-Resilient Codes». Proc. 29th Annual Association for Computing Machinery (ACM) Symposium on Theory of Computation.
  16. ^ «Digital Video Broadcast (DVB); Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other satellite broadband applications (DVB-S2)». En 302 307. ETSI (V1.2.1). April 2009.
  17. ^ Andrews, K. S.; Divsalar, D.; Dolinar, S.; Hamkins, J.; Jones, C. R.; Pollara, F. (November 2007). «The Development of Turbo and LDPC Codes for Deep-Space Applications». Proceedings of the IEEE. 95 (11): 2142–2156. doi:10.1109/JPROC.2007.905132. S2CID 9289140.
  18. ^ Dolinar, S.; Divsalar, D. (15 August 1995). «Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations». TDA Progress Report. 122: 42–122. Bibcode:1995TDAPR.122…56D. CiteSeerX 10.1.1.105.6640.
  19. ^ Takeshita, Oscar (2006). «Permutation Polynomial Interleavers: An Algebraic-Geometric Perspective». IEEE Transactions on Information Theory. 53 (6): 2116–2132. arXiv:cs/0601048. Bibcode:2006cs……..1048T. doi:10.1109/TIT.2007.896870. S2CID 660.
  20. ^ 3GPP TS 36.212, version 8.8.0, page 14
  21. ^ «Digital Video Broadcast (DVB); Frame structure, channel coding and modulation for a second generation digital terrestrial television broadcasting system (DVB-T2)». En 302 755. ETSI (V1.1.1). September 2009.
  22. ^ Techie (3 June 2010). «Explaining Interleaving». W3 Techie Blog. Retrieved 3 June 2010.
  23. ^ Krastanov, Stefan; Jiang, Liang (8 September 2017). «Deep Neural Network Probabilistic Decoder for Stabilizer Codes». Scientific Reports. 7 (1): 11003. arXiv:1705.09334. Bibcode:2017NatSR…711003K. doi:10.1038/s41598-017-11266-1. PMC 5591216. PMID 28887480.
  24. ^ Nordstrom, A.W.; Robinson, J.P. (1967), «An optimum nonlinear code», Information and Control, 11 (5–6): 613–616, doi:10.1016/S0019-9958(67)90835-2
  25. ^ Perry, Jonathan; Balakrishnan, Hari; Shah, Devavrat (2011). «Rateless Spinal Codes». Proceedings of the 10th ACM Workshop on Hot Topics in Networks. pp. 1–6. doi:10.1145/2070562.2070568. hdl:1721.1/79676. ISBN 9781450310598.

Further reading[edit]

  • MacWilliams, Florence Jessiem; Sloane, Neil James Alexander (2007) [1977]. Written at AT&T Shannon Labs, Florham Park, New Jersey, USA. The Theory of Error-Correcting Codes. North-Holland Mathematical Library. Vol. 16 (digital print of 12th impression, 1st ed.). Amsterdam / London / New York / Tokyo: North-Holland / Elsevier BV. ISBN 978-0-444-85193-2. LCCN 76-41296. (xxii+762+6 pages)
  • Clark, Jr., George C.; Cain, J. Bibb (1981). Error-Correction Coding for Digital Communications. New York, USA: Plenum Press. ISBN 0-306-40615-2.
  • Arazi, Benjamin (1987). Swetman, Herb (ed.). A Commonsense Approach to the Theory of Error Correcting Codes. MIT Press Series in Computer Systems. Vol. 10 (1 ed.). Cambridge, Massachusetts, USA / London, UK: Massachusetts Institute of Technology. ISBN 0-262-01098-4. LCCN 87-21889. (x+2+208+4 pages)
  • Wicker, Stephen B. (1995). Error Control Systems for Digital Communication and Storage. Englewood Cliffs, New Jersey, USA: Prentice-Hall. ISBN 0-13-200809-2.
  • Wilson, Stephen G. (1996). Digital Modulation and Coding. Englewood Cliffs, New Jersey, USA: Prentice-Hall. ISBN 0-13-210071-1.
  • «Error Correction Code in Single Level Cell NAND Flash memories» 2007-02-16
  • «Error Correction Code in NAND Flash memories» 2004-11-29
  • Observations on Errors, Corrections, & Trust of Dependent Systems, by James Hamilton, 2012-02-26
  • Sphere Packings, Lattices and Groups, By J. H. Conway, Neil James Alexander Sloane, Springer Science & Business Media, 2013-03-09 – Mathematics – 682 pages.

External links[edit]

  • Morelos-Zaragoza, Robert (2004). «The Correcting Codes (ECC) Page». Retrieved 5 March 2006.
  • lpdec: library for LP decoding and related things (Python)


25 октября 2022, 13:52



3848 просмотров

Правительство внесло изменения в требования к качеству маркировки продукции

Правительство утвердило поправки в правила маркировки табачных изделий, обуви, одежды, молочной продукции, шин, фотоаппаратуры и воды. Соответствующее постановление от 19.10.2022 № 1861 опубликовано на Официальном интернет-портале правовой информации, пишет buh.ru.

Источник: ЦРПТ

Источник: ЦРПТ

Документ дополняет действующие правила маркировки новыми положениями, которые регулируют порядок передачи сведений в систему маркировки.

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

Также дополнены требования к качеству маркировки продукции средствами идентификации. В частности, преобразование кода маркировки в средство идентификации продукции должно осуществляться с использованием метода коррекции ошибок ECC 200 ASCII кодирования, соответствующего требованиям ГОСТ Р ИСО/МЭК 16022–2008. При этом качество печати средства идентификации продукции должно соответствовать требованиям ГОСТ Р ИСО/МЭК 15415–2012.

По новым правилам средство идентификации потребительской упаковки должно формироваться в виде двумерного штрихового кода в формате GS1-DataMatrix в соответствии с требованиями национального стандарта ГОСТ Р ИСО/МЭК 16022–2008, при преобразовании кода маркировки в средство идентификации должна применяться символика ECC 200 с использованием знака FNC1.

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

Новые нормы будут внесены в правила маркировки:

  • табачной и никотинсодержащей продукции (постановление от 28.02.2019 № 224);
  • обувных товаров (постановление от 05.07.2019 № 860);
  • фотокамер (кроме кинокамер), фотовспышек и ламп-вспышек (постановление ‎от 31.12.2019 № 1953);
  • товаров легкой промышленности (постановление от 31.12.2019 № 1956);
  • духов и туалетной воды (постановление от 31.12.2019 № 1957);
  • шин (‎постановление от 31.12.2019 № 1958);
  • молочной продукции (постановление от 15.12.2020 № 2099);
  • упакованной воды (постановление от 31.05.2021 ‎№ 841).

Согласно постановлению, новые положения вступят в силу с 1 марта 2023 года, за исключением отдельных поправок.

При работе с маркированным товаром рознице может понадобиться обновление программного обеспечения. Стоимость такого обновления зависит от поставщика ПО. Напоминаем, что обновления типовых решений одной из самых распространенных систем «1С:Предприятие 8» пользователи могут получить в сервисе «1С:Обновление программ». Для получения доступа к обновлениям программа должна находиться на официальной поддержке https://portal.1c.ru/support.

Маркировка: что важно знать сейчас?

Обязательная маркировка обуви: как не нарушить закон после 1 марта 2020 года.

Поделиться публикацией:

Подписывайтесь на наши новостные
рассылки,
а также на каналы 
Telegram
,
Vkontakte

,
Яндекс.Дзен

чтобы первым быть в курсе главных новостей Retail.ru.

Добавьте «Retail.ru» в свои источники в
Яндекс.Новости

В нашей стране активно внедряется проект по маркировке и прослеживаемости товаров «Честный Знак». Каждый товар, подлежащий маркировке, получает свой индивидуальный номер, по которому можно проследить весь его путь от импортера или производителя до потребителя.

Самым распространенным вариантом нанесения этого уникального номера на упаковку с товаром является штрихкодирование в формате DataMatrix. Это так называемый «двухмерный» штрих код, который способен содержать в себе большое количество данных при относительно некрупном размере. С задачей массовой печати этого кода сейчас столкнулись тысячи производителей и импортеров товаров в нашей стране. Способов печати кода DataMatrix множество, но очень важно, чтобы напечатанный код в дальнейшем могли бы свободно прочитать и использовать все участники оборота – оптовики, дистрибьюторы, логистические операторы и ритейлеры.

Сегодня мы рассмотрим, какие требования к нанесению и качеству печати кода определяет оператор маркировки компания ЦРПТ и как проверить код на соответствие этим требованиям.

Требования к формату кода маркировки

Формат кода маркировки и состав его данных сильно отличается в зависимости от товарной категории. Например, на табак в такой код включают МРЦ (минимальную розничную цену), по одежде и обуви – часть кода ТН ВЭД товарной категории, по молочной продукции – дату выпуска и срок годности. Также сильно варьируется размерность кода, которая зависит от состава данных в коде и от разрешения принтера, на котором будет вестись печать.  Все эти требования прописаны в Постановления о правилах маркировки той или иной товарной категории.

Требования к штрих коду при этом, как правило, остаются неизменными:

средство идентификации наносится в виде двухмерного штрихового кода в соответствии с требованиями национального стандарта Российской Федерации ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix».

К качеству маркировки товаров предъявляются следующие требования:

нанесение печатью с использованием метода коррекции ошибок ECC-200 в соответствии с требованиями национального стандарта Российской Федерации ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix»;

использование ASCII кодирования на основе национального стандарта Российской Федерации ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix».

Метод коррекции ошибок ECC-200 – это новейшая версия штрих кода DataMatrix, в которой информация кодируется таким образом, что ее возможно восстановить даже при разрушении до 20% поверхности кода. Это достигается добавлением избыточных кодовых слов, располагаемых в разных местах по площади штрих кода.

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

Требования к качеству кода маркировки

Товар, код маркировки на котором невозможно считать, является немаркированным и запрещается к дальнейшей продаже. Его необходимо вернуть поставщику или перемаркировать самостоятельно и за свой счет. И если для одежды или обуви — это сделать не так сложно, то для таких массовых категорий, как молочная продукция и табак практически нереально из-за больших объемов такой продукции. Некоторые ритейлеры уже оценили затраты на контроль, отбраковку и возврат маркировки в 5% от ее оборота, что является колоссальной суммой.

Выше мы говорили о том, что штрих код может быть неидеальным еще на этапе печати. На качество печати кода влияет множество факторов – влажность, качество краски, температура окружающего воздуха, скорость нанесения, условия хранения нанесенного кода, качество этикетки, степень нагрева и уровень прижимания термоголовки принтера и т.д. За всеми этими параметрами при печати нужно постоянно следить и корректировать их.

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

В стандарте GS1, по которому работает маркировка «Честный Знак», есть четкие рекомендации, какого качества («класса», по терминологии ГОСТ) должен быть штрих код на этапе печати, чтобы он в дальнейшем гарантированно оставался бы читаемым во всех звеньях логистической цепи.

Класс качества печати должен быть не менее «С». Что же это означает?

Требования к качеству печати кода маркировки

Обычно, качество отпечатанного штрих кода проверяют просто сканером. Если код считывается, то он считается «годным». Но такой способ не является достоверным признаком качества, он говорит лишь о том, что данный сканер считал данный штрих код. И все. Другой сканер – другого производителя, другой модели и ценового диапазона – может этот код и не прочитать.  Сканер не проверяет соответствие штрих кода стандарту, не оценивает «запас» по качеству на предмет возможных повреждений и не дает оценку качества печати.

Для определения качества печати под требования ЦРПТ необходим другой прибор – верификатор штрих кода. Именно верификатор способен, в виде буквенной и цифровой оценок, показать, насколько хорошим получился штрих код. Шкала оценок (Классов) получается следующей: *

  • А (4.0): высший класс качества исходной печати, к которому надо стремиться; наибольший запас по качеству на случай повреждений.
  • В (3.0): очень хороший класс качества, обеспечивающий надежное сканирование;
  • С (2.0): удовлетворительный, приемлемый класс качества;
  • D (1.0): велика вероятность отказа при считывании символа штрихового кода. Символы такого качества неприемлемы для использования в цепи поставки т.к. запаса на случай повреждения при логистике товара практически нет;
  • F (0.0): брак – символы штрихового кода указанного класса являются непригодными, их нельзя «выпускать» с предприятия – даже если такой код прочитался сканером!

* Для 2D штрих кода Datamatrix. Для линейного штрих кода (в данной статье не рассматривается) шкала будет немного иной.

Верификатор присваивает штрих коду тот или иной Класс качества на основе измеренных параметров, список которых определен в международных стандартах ISO и российских ГОСТ-ах. Детальное описание этих параметров выходит за рамки данной статьи, но при желании вы всегда можете обратиться к нам за консультацией по качеству штрих кода.

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

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

Чтобы избежать конфликтов, и привести качество печати штрих кода в соответствие с требованиями ЦРПТ производителям маркированного товара необходимо проводить выборочную верификацию наносимых кодов, и делать это регулярно, по каждой партии продукции. Это поможет не только избежать споров с вашими партнерами в цепочке поставок, но и вам самим быть уверенными, что выпускаемая вами продукция соответствует всем требования ЦРПТ и товар не вернется из за невозможности считывания штрих кода на каком-нибудь из этапов движения продукции.

Как проводить верификацию штрих кода маркировки

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

Наша компания сертифицирована на продажу и обслуживание верификаторов компании Axicon Auto ID — мирового лидера в области верификации штрих кодов, разрабатывающий и выпускающий собственную линейку устройств, предназначенных для проверки качества как линейных, так и двумерных штрих кодов.

Также мы можем выполнить такую верификацию кода для вас. Это может быть удобно, если вы работаете с небольшими партиями маркированной продукции.

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


Читайте еще по теме

DataMatrix — матричный штрихкод, имеющий два измерения (оси X и Y). Представляет из себя группу монохромных (черно-белых) квадратов, объединенных в группу, как правило, квадратной формы. Датаматрикс предназначен для кодирования информации (текстовой или иной). Редкую область промышленности можно представить без использования различных штрих-кодов. Маркировка Datamatrix (или DMC), QR коды и пр. встречается на продукции различного типа. Технология автоматической идентификации закодированной информации позволяет многократно ускорить процесс считывания информации о товаре для ведения учета, организации логистики, обслуживания клиентов и других процессов.

Разновидности баркодов

Все штрихкоды международной системы GS1 можно разделить две группы: линейные и двумерные. Большинство пользователей сталкиваются в быту с линейными штрихкодами GS1 (1D), которые используют все супермаркеты и продуктовые магазины. Такие штрихкоды считываются в одном направлении, они весьма простые и недорогие в использовании. Однако у них есть существенный недостаток – небольшой объем кодируемых данных, как правило, это символы, представляющие собой цифровой ключ к записи во внешней информационной базе.

Для того чтобы решить эту проблему были созданы двумерные 2D коды GS1, такие как QR-Code, Datamatrix, Microsoft Tag и другие. Они считываются как по горизонтали, так и по вертикали. Кроме идентификационного ключа таким способом можно зашифровать любые дополнительные данные о товаре, например, срок годности, дату и место изготовления, вес и прочее. В сравнении с линейными вариантами, двухмерные матричные коды обладают и другими преимуществами, кроме возможности закодировать больше информации:

  • более высоким уровнем коррекции данных;
  • улучшенной удобочитаемостью;
  • меньшими размерами.

Двухмерный GS1 Code можно нанести разными способами: гравировкой, струйной и лазерной печатью, можно использовать в электронном варианте. QR-Code больше раскручен с коммерческой стороны и потому более известен простым пользователям. Однако в промышленности все чаше используются метки Data matrix.

Общая характеристика и особенности DataMatrix code

Пример кода Datamatrix

Пример кода QR

Визуально barcode GS1 Data matrix, как и QR Code, выглядит как квадрат, состоящий из множества светлых и темных маленьких квадратиков. От QR-Code он отличается изображением шаблона поиска, который расположен слева в символе «L» (в QR коде это три угловых квадратных символа). С помощью Datamatrix можно закодировать до 3 килобайт информации (объем зависит от используемых символов). В стандартных символиках системы GS1 кодируются цифры, латинские буквы и некоторые избранные символы. Минимальный размер квадратного кода – 10х10 модулей, максимальный – 144х144, шаг увеличения – 2 модуля в каждом направлении. Для QR-Code шаг составляет 4 модуля.

Особенности штрихкода Data matrix:

  • Сертифицирован по международному стандарту ISO/IEC16022.
  • Сканеры GS1 Datamatrix обладают высокой скоростью распознавания метки и извлечения информации.
  • Допустимы две графические формы расположения модулей – квадратная и прямоугольная, что позволяет легче разместить штрихкод на изделии.
  • Не требует свободного пространства вокруг метки, в то время как для QR-Code обязательно нужно пространство размером от 2 до 4 модулей.
  • Метка может быть нанесена не только на идеально ровную поверхность, требования к качеству основы для размещения кода довольно низкие.
  • Распознавание GS1 DMC не зависит от фона, на котором размещены модули.

Этикетки с нанесением Data matrixРазмер этикетки с нанесенным Data matrix

Кроме основных данных, в структуру кода входят также модули с информацией для восстановления, что позволяет при небольшом повреждении баркода не потерять закодированные символы. Для коррекции ошибок код использует стандарт ECC 200, основанный на кодирующем алгоритме Рида-Соломона, применяемом и для шифрования данных в QR-Code.

Преимущества и перспективы использования Datamatrix в промышленности

В различных отраслях промышленности все чаще используют для маркировки штрих-коды DMC. В основном это сферы, где необходимо маркировать небольшие предметы: фарминдустрия, почтовые пересылки, косметическая индустрия, пр. Популярность промышленного использования GS1 Data matrix объясняется рядом преимуществ в сравнении с другими баркодами:

  • В среднем, по независимой экспертной оценке, DMC занимает на 30–60% меньшую площадь, чем QR код, поэтому промаркировать таким способом можно даже очень маленькие элементы.
  • Стандартизация GS1 Datamatrix обладает более высоким уровнем коррекции ошибок, позволяет восстановить до 30% информации при повреждении метки.
  • Большая емкость кода позволяет уместить до 3000 символов на маленькой площади, что существенно облегчает маркировку продукции.

Тенденции развития GS1 баркодов состоят в том, чтобы больший объем данных можно было зашифровать в коде минимального формата.

Вариант этикеток Datamatrix - 1Вариант этикеток Data matrix - 2

В последние годы активно разрабатываются различные приложения для смартфонов, позволяющие считывать баркоды datamatrix и QR коды и получать информацию о продукте или услуге. В качестве зашифрованных таким образом данных нередко выступают ссылки на интернет-ресурсы. Используются двумерные штрихкоды Data matrix не только для маркировки товаров, но и при идентификации персональных данных для доступа к различным онлайн-сервисам.

В связи с введением единой национальной системы маркировки Федеральным законом от 31.12.2017 № 487-ФЗ возникла необходимость проверки качества печати средств идентификации в соответствии с государственными стандартами. Средство идентификации присваивается каждой единице продукции, подлежащей обязательной маркировке: по нему осуществляется ее прослеживание на протяжении всего пути от производителя (или импортера) до потребителя.

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

  • нанесение печатью с использованием метода коррекции ошибок ECC-200 в соответствии с требованиями национального стандарта Российской Федерации ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix»;
  • использование кодирования ASCII на основе национального стандарта Российской Федерации ГОСТ Р ИСО/МЭК 16022-2008 «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix».

В методических рекомендациях для каждой товарной группы дополнительно содержится еще одно требование: нанесение с уровнем класса качества C или выше в соответствии со стандартом ИСО 15415 (ГОСТ Р ИСО/МЭК 15415-2012).

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

Основные требования к проведению измерений

ГОСТ Р ИСО/МЭК 15415-2012 строго регламентирует оптическую схему и параметры устройств для верификации.

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

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

Оптическая ось датчика (камеры и т. п.) должна быть перпендикулярна зоне контроля и проходить через ее центр (рис. 1). Зона контроля должна включать сам код и прилегающие к нему свободные зоны. При этом центр области проверки должен быть как можно ближе к центру зоны контроля. Важно следить за тем, чтобы изображение кода всегда было в фокусе.

Базовая оптическая схема

Рис. 1. Базовая оптическая схема (вид сбоку):
1 — светочувствительный элемент;
2 — объектив с увеличением 1:1;
3 — зона контроля;
4 — источник освещения;
ϑ — угол падения светового пучка к плоскости символа (по умолчанию 45°, допускается 30°, при диффузном излучении — 90°)

Измерительная апертура обычно указывается в спецификации по применению исходя из размера кода и требований к условиям сканирования. Размер апертуры должен быть указан в отчете о проведенных испытаниях наряду с классом символа и характеристикой излучения — с целью обозначения условий, при которых проводились измерения.

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

Определение грейда

ГОСТ Р ИСО/МЭК 15415-2012 устанавливает количественную основу для представления классов качества по нисходящей шкале с обозначением от 4 до 0, где 4 соответствует наивысшему классу качества.

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

Соотношение буквенных и цифровых обозначений полных классов качества

Рис. 2. Соотношение буквенных и цифровых обозначений полных классов качества

Если сканирование показало, что средство идентификации имеет несоответствующий формат, то полный класс качества кода, независимо от отдельных параметров оценки, равен 0. В противном случае полный класс качества равен наименьшему из классов качества отдельных параметров.

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

Таблица 1. Оценка грейда кода

Параметр

Описание

Возможные причины снижения качества

Декодирование

Возможность декодировать код с помощью стандартного
алгоритма

Программные ошибки системы печати

Контраст символов

Разница между значениями самых светлых и темных элементов, а также между «свободной» зоной
и элементами периметра
(рис. 3)

Низкие значения коэффициента отражения подложки или светлых модулей, обусловленные следующими факторами:

  • несоответствующая подложка, например голубая бумага при освещении в красной области спектра;
  • глянцевое покрытие.

Высокие значения коэффициентов отражения темных модулей, обусловленные следующими факторами:

  • низкое поглощение падающего светового излучения краской для печати (несоответствие фактуры/цвета);
  • недостаточное покрытие краской при печати (например, отсутствие перекрытия точек в точечном рисунке);
  • неподходящий угол освещения

Модуляция

Однородность светлых
и темных элементов по всему коду (рис. 4)

  • Приращение/сокращение при печати.
  • Слишком большой размер измерительной апертуры.
  • Неравномерность коэффициента отражения подложки.
  • Неравномерность нанесения краски при печати.
  • Просвечивание (краски или подложки).

Повреждения фиксированных шаблонов

Любое повреждение шаблона, «свободной» зоны
и направляющих кода (рис. 5)

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

Осевая
неоднородность

Отклонение по основным осям элементов кода (рис. 6)

  • Несоответствие скорости печати размерам символов.
  • Программные ошибки при печати.
  • Ось верификатора не перпендикулярна плоскости кода

Неоднородность сетки

Отклонение ячейки кода от сетки теоретически идеального кода (рис. 7)

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

Уровень печати

Отклонение фактического размера элемента от предполагаемого из-за проблем с печатью (рис. 8, 9)

  • Покрытие с несоответствующей абсорбцией краски.
  • Нарушение размера точки.
  • Неправильные настройки термопечатающей головки

Неиспользованная коррекция ошибок

Количество доступных исправлений ошибок в коде

  • Физическое повреждение (образование царапин, обрыв, стирание).
  • Битовые ошибки из-за дефектов печати.
  • Избыточное приращение при печати по одной из двух осей.
  • Локальная деформация.
  • Смещение модулей

Код с плохим контрастом элементов

Рис. 3. Код с плохим контрастом элементов

Код с плохой модуляцией, вызванной нерегулярными темными областями

Рис. 4. Код с плохой модуляцией, вызванной нерегулярными темными областями

Повреждение фиксированного шаблона

Рис. 5. Повреждение фиксированного шаблона

Проблема осевой неоднородности

Рис. 6. Проблема осевой неоднородности

Проблема неравномерности сетки

Рис. 7. Проблема неравномерности сетки

 Слишком большой рост печати

Рис. 8. Слишком большой рост печати

Потеря печати

Рис. 9. Потеря печати

Оборудование для оценки качества печати кода

Во многих решениях для оценки качества печати применяются считыватели кодов или камеры машинного зрения. При этом анализ параметров для определения грейда выполняется с помощью специализированного программного обеспечения, интегрированного в само устройство чтения кодов или устанавливаемого на ПК. Наиболее распространенным алгоритмом оценки качества печати кодов являются метрики контроля процессов (PCM). Данный — безусловно, полезный — инструмент не позволяет выполнить полноценную верификацию. Хотя он проверяет те же параметры качества, что и верификатор, но результаты на выходе уникальны для конкретных установок считывателя, в первую очередь для подсветки. Метрики контроля процессов настраиваются под определенный процесс, при этом некоторые параметры могут быть пропущены или модифицированы, то есть вполне могут отклоняться от стандартов. Верификатор же, в свою очередь, проверяет все параметры качества, использует специфическую настройку подсветки и требует регулярной калибровки, что обеспечивает очень высокую точность оценки.

Недавно компания Cognex анонсировала возможность обновления некоторых считывателей кода новым инструментом — классификацией на основе стандартов (SBG). Этот инструмент позволяет осуществлять дополнительные проверки качества печати кодов. Однако считыватели с функцией SBG все равно не являются полноценными верификаторами.

Ключевые особенности верификатора по сравнению с другим оборудованием для оценки качества печати кодов:

  • Имеет встроенную калибровку.
  • Подсветка верификатора выполнена по стандартам ISO29158 (AIMDPM), ISO15415 или ISO15416. В формируемом отчете о верификации содержится информация о типе использованной подсветки и углах падения светового пучка к плоскости кода.
  • Генерирует отчет, присваивающий кодам не только грейд, но и оптическую характеристику, включающую угол подсветки, длину световой волны и размер диафрагмы.
  • Проверяет корректность форматирования данных в коде.
  • Выдает воспроизводимые результаты.

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

Функция

Считыватель

PCM
(оценка грейда)

SBG

Верификация

Считыватель

PCM (оценка грейда)

SBG

SBG

Считывание кода

+

+

+

+

Валидация данных

+

+

+

+

Оценка качества кода

+

+

+

Оценка параметров по ISO

Частично

+

+

Калибровка

+

+

Расширенная диагностика кода

+

+

Эталонный алгоритм декодирования ISO

+

+

Фиксированный угол освещения

+

Полное соответствие стандарту ISO

+

Верификаторы, в отличие от считывателей с инструментами РСМ или SBG, выдают абсолютную оценку качества маркировки в соответствии с отраслевыми стандартами качества. Верификаторы полностью гарантируют правильность полученной оценки, поскольку нормализуют все условия при анализе изображения кода.

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

Подавляющее большинство верификаторов, представленных на рынке, способно выполнять лишь выборочную проверку образцов при статических испытаниях. Произвести верификацию непосредственно на производственной линии стало возможно после выхода нового продукта компании Cognex — DataMan 475V, который позволяет осуществлять полноценную верификацию кодов со скоростью до 10 кодов/с (в случае с 2D-кодами) при максимальной скорости линии 1,1 м/с.

Тем не менее возможностей данного верификатора может быть недостаточно в условиях высокоскоростных широкоформатных типографических производственных линий. Для таких случаев компания «Малленом Системс» предлагает использовать решение с применением инструмента РСМ (или SBG, где это возможно) непосредственно на линии и с выборочной верификацией продукции на выходе. По оценке технических специалистов «Малленом Системс», значения грейда кода, полученные в результате использования инструмента PCM в оборудовании и программном обеспечении Cognex, в большинстве случаев совпадают или незначительно (на 1 уровень) отличаются от значений, полученных в результате верификации на выходе. Таким образом, использование данного решения позволит значительно снизить уровень брака непосредственно в процессе производства и уменьшить число претензий со стороны потребителей. При необходимости в решение можно добавить дополнительные функции, например контроль дубликатов кодов.

Понравилась статья? Поделить с друзьями:
  • Метод эйлера ошибка
  • Методологическая литература лексическая ошибка
  • Метод указывания на ошибки
  • Методические ошибки это ошибки
  • Методические ошибки учителя английского