Для электронной аппаратуры космических систем, и в первую очередь устройств памяти, актуальна задача защиты от воздействия ионизирующего космического излучения и других внешних факторов, искажающих хранимую и обрабатываемую информацию. Радиационные эффекты и космические частицы создают большое число накапливающихся в устройствах памяти ошибок. Использование известных методов помехоустойчивого кодирования информации дает эффект в течение ограниченного времени, пока число ошибок не становится слишком большим. В ответственных системах используется ECC-память – (error-correcting code memory, память с коррекцией ошибок) – тип компьютерной памяти, которая автоматически распознаёт и исправляет спонтанно возникшие изменения (ошибки) битов памяти – одну ошибку в одном машинном слове. При длине машинного слова 64 бита количество исправляемых ошибок < 1,5%.

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

 Голографический метод восстановления информации

Голографический метод помехоустойчивого кодирования, исправляющий многократные ошибки, заключается в математическом моделировании цифровой голограммы виртуального объекта, представляющего собой блок входных данных. В процессе кодирования k-разрядный двоичный код входного блока данных преобразуется во вторичный блок – единичный позиционный код с числом позиций n=2k. При этом закладывается информационная избыточность с числом разрядов r=n-k. Вторичный блок имеет (n-1) нулей и одну единицу в позиции, заданной исходными данными. Таким образом, входной блок данных используется как адрес позиции единицы в последовательности нулей единичного позиционного кода вторичного блока. Голографическое кодирование заключается в формировании линейной голограммы вторичного блока, рассматриваемого как виртуальный оптический объект. Процедура формирования голограммы и восстановления исходного объекта по голограмме описана здесь. Рассмотрим возможность и эффективность применения голографического метода помехоустойчивого кодирования в устройствах памяти, подверженных воздействию внешних факторов, приводящих к появлению случайных и детерминированных (пакетных) ошибок.

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

Исследование корректирующей способности голографического кода проведено путем моделирования в среде MATLAB процесса искажения голограммы  HO  случайными и пакетными ошибками.

На рисунке 1 показан вид линейной голограммы 8-разрядного входного блока данных со значением X=99. При этом размер записываемой в память голограммы – 256 бит, коэффициент избыточности 32.

Рис. 1. Голограмма HO для X=99
Рис. 1. Голограмма HO для X=99

На рисунке 2 приведен результат декодирования AR, в котором позиция максимума Y=99 несет информацию о закодированном значении. В полученном массиве присутствует небольшой шум декодирования, обусловленный конечным числом дискретных значений голограммы, и не препятствующий выделению информационного значения.

Рис. 2. Восстановленный массив AR при n=256, Y=99
Рис. 2. Восстановленный массив AR при n=256, Y=99

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

Вид голограммы на входе декодера при стирании (потере) 75% голограммы размером n=256 приведен на рисунке 3.

Рис. 3. Голограмма HR для X=99. Потери 75%
Рис. 3. Голограмма HR для X=99. Потери 75%

Результат восстановления блока данных по оставшимся 25% приведен на рисунке 4. Точка максимума в позиции Y=99 соответствует переданному значению X=99 и однозначно определяет значение кодируемого блока.

Рис. 4. Восстановленный массив AR при потерях 75%, n=256, Y=99=X
Рис. 4. Восстановленный массив AR при потерях 75%, n=256, Y=99=X

Голографическое кодирование обеспечивает устойчивость не только к потерям информации, но и к случайным ошибкам. Возникновение ошибок смоделировано путем замены части голограммы двоичной случайной последовательностью (шумом). Массив, восстановленный по голограмме размером n=256, содержащей 75% шума, приведен на рисунке 5. Переданное значение успешно восстановлено.

Рис. 5. Восстановленный массив AR  при длине шумовой последовательности 75%, n=256, Y=99=X
Рис. 5. Восстановленный массив AR  при длине шумовой последовательности 75%, n=256, Y=99=X

Увеличение размера голограммы приводит к возрастанию помехоустойчивости. При n=214=16394 успешное восстановление информации происходит при длине шумовой последовательности до 95% от размера голограммы.

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

Наиболее сложная для декодирования ситуация – число случайных ошибок, приближающееся к 50%. Корректирующая способность голографического кода зависит от размера голограммы n. Статистика результатов моделирования показывает, что при n=256 вероятность ошибки декодирования составляет 10-3 при количестве ошибок на входе декодера 30%. При числе ошибок 25% и количестве испытаний 10 000 ошибки декодирования не зафиксированы. При n=1024 вероятность ошибки декодирования 10-3  достигается при 41% ошибок в голограмме.

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

Для коррекции ошибок, возникающих при хранении информации широко используются помехоустойчивые коды. Одним из самых эффективных является код Рида-Соломона (РС-код), широко применяемый  в системах восстановления данных с компакт-дисков, при создании архивов с информацией для восстановления в случае повреждений, в помехоустойчивом кодировании. Предел корректирующей способности РС-кода определен границей Синглтона, в соответствии с которой для исправления  ошибок код должен иметь не менее  двух проверочных символа на одну ошибку. При большой степени избыточности число исправляемых ошибок приближается к 50% от длины кодового слова. Особенностью РС-кода является то, что столь высокую исправляющую способность он демонстрирует только для пакетных ошибок, уступая, например, коду Рида-Маллера (РМ-код) в исправлении независимых случайных ошибок. РМ-код с длиной кодового слова n=2m  исправляет  2m-2-1  ошибок любого вида, занимающих почти  25% кодовой комбинации.

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

Сама по себе задача исправления 100% ошибок является тривиальной – для этого достаточно инвертировать каждый разряд кодового слова. Однако здесь для всех кодов, кроме голографического, возникает проблема выбора одного из двух равновероятных результатов декодирования – прямого или инвертированного. Голографический же код дает совпадающий результат декодирования, как для неискаженного кодового слова, так и для кодового слова, содержащего 100% ошибок. На рисунке 6 приведен результат декодирования инвертированного блока, содержащего 100% ошибок. Отсюда видно, что пакетные ошибки приводят к инверсии максимума в восстановленном массиве, но позиция его сохраняется, поэтому восстановление информации происходит правильно.

Рис. 6. Восстановленный массив AR (Y=100), число ошибок – 256 (100%)
Рис. 6. Восстановленный массив AR (Y=100), число ошибок – 256 (100%)

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

Рис. 7. Результаты работы четырех декодеров
Рис. 7. Результаты работы четырех декодеров

На рисунок 8 показан фрагмент одного из четырех массивов при декодировании голограммы, содержащей 128 ошибок при n=256 (50% ошибок), кодируемое значение Y=100. Из него видно, что, несмотря на отсутствие экстремума в точке Y=100, значение входного блока  можно восстановить по характерной комбинации симметрично расположенных четырех боковых максимумов.

Рис. 8. Фрагмент гистограммы восстановленного массива AR (Y=100)

Моделирование показало, что универсальный декодер, содержащий 4 декодера и блок выделения максимума, исправляет любое количество пакетных ошибок – от 0 до 100% записанного блока данных. Этот декодер эффективен при устранении случайных и пакетных ошибок. При числе ошибок менее 50% они являются случайными и декодер обеспечивает восстановление информации при 41% ошибок в кодовом слове. При числе ошибок более 50% они  являются зависимыми и формируют правую часть графика (рисунок 9). 

Рис. 9. Вероятность ошибки на выходе декодера в зависимости от числа ошибок на входе декодера для голограмм размером n=256 и n=1024
Рис. 9. Вероятность ошибки на выходе декодера в зависимости от числа ошибок на входе декодера для голограмм размером n=256 и n=1024

Таким образом, голографическое кодирование исправляет ошибки, если их количество составляет менее 40 или более 60 процентов от длины кодового слова при n = 1024 (рисунок 9). Это позволяет повысить надежность восстановления данных в системах хранения информации, подверженных воздействию ионизирующего излучения, температуры и других факторов, вызывающих деградацию параметров элементной базы.

 Заключение

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

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

Комментарии (12)


  1. gaussssss
    28.11.2025 14:47

    одну ошибку в одном машинном слове. При длине машинного слова 64 бита количество исправляемых ошибок < 1,5%.

    Вы 1.5 процента получили из 1/64? Насколько мне известно ошибки в 1 бите на слово встречаются чаще чем в 2, в 2 - чаще чем в 3 и так далее. Поэтому процент исправляемых ошибок не 1.5, иначе смысла использовать такую коррекцию было бы мало.


    1. ALT0105 Автор
      28.11.2025 14:47

      Это свойство используемого в ECC-памяти кода Хэмминга. Ошибки могут встречаться с любой частотой, но код Хэмминга исправляет только одну ошибку в блоке. Если размер блока 4 бита, то число исправляемых ошибок - 25% от длины слова (при избыточности 75%), если блок 64 бита, то исправляется 1,56% при избыточности 11%. Корректирующих кодов много и все разные, выбрать можно любой. Я предлагаю голографический.


      1. gaussssss
        28.11.2025 14:47

        Ошибки могут встречаться с любой частотой

        И ошибка в большем числе битов встречается реже чем в меньшем числе битов.

        Если размер блока 4 бита, то число исправляемых ошибок - 25% от длины слова

        Неа. Статистика ошибок не так работает.


        1. ALT0105 Автор
          28.11.2025 14:47

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


          1. gaussssss
            28.11.2025 14:47

            Речь не о статистике ошибок, а о возможностях кода Хэмминга

            Который не использовался бы, если б вероятность появления ошибки любой длины была одинаковая. Однако это не так.

            Это значит, что если по статистике ошибок возможно появление более одной ошибки в слове, то код Хэмминга бесполезен

            Для вас нет разницы насколько велика эта вероятность? Типа (цифры с потолка) ошибки в 1 бите возникают каждую секунду, ошибки в 2 битах раз в час и для вас кодирование исправляющие 1 бит сразу стало бесполезным?

            Для понимания важности статистики ознакомьтесь например со статьей "DRAM Errors in the Wild: A Large-Scale Field Study".

            Космос не для него

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


            1. ALT0105 Автор
              28.11.2025 14:47

              Который не использовался бы, если б вероятность появления ошибки любой длины была одинаковая. Однако это не так.

              Естественно, не так. Вероятность ошибки в каждом случае своя и корректирующий код выбирают исходя из вида ошибок и интенсивности их потока. Например, для серверной памяти (ECC) на земле, в системе ГЛОНАСС в космосе и во множестве других случаев используется код Хэмминга, для записи компакт-дисков, в передатчиках на космических аппаратах Вояджер и во многих системах связи используется код Рида-Соломона, в 5G - LDPC код и т.д.

              Для понимания важности статистики ознакомьтесь например со статьей "DRAM Errors in the Wild: A Large-Scale Field Study".

              Приводится статистика - тысячные доли процента в час на мегабайт. Конечно, здесь достаточно кода Хэмминга в ECC-памяти.

              Можете подсказать где ознакомиться с статистикой ошибок в том же ддр в космосе? 

              1.На космическом аппарате Кассини-Гюйгенс установлены два идентичных устройства записи, каждое из которых содержит 2,5 гигабита памяти. На протяжении первых 2,5 лет полёта регистрировалось примерно постоянное количество ошибок каждый день: примерно 280 ошибок в день.

              2.Для статической памяти 537–ой серии объёмом 32 кбайт, используемой в системном контроллере бортовой вычислительной системы, ожидаемая средняя интенсивность сбоев для высоких орбит может доходить в сутки до 0,0001 сбоя, а пиковая —  до 1 сбоя. Сбои динамической памяти объёмом 2–4 Мбайт могут достигать интенсивности 0,01 сбоя в сутки, а флэш–памяти —  0,0000001 сбоя в сутки. Постоянные запоминающие устройства контроллеров, не использующие зарядовое хранение информации, подобным сбоям не подвержено [1].

              [1]. Отчет о научно–исследовательской работе «Разработка и исследование надёжных методов хранения информации в аэрокосмических системах и комплексах» / промежуточный / № госрегистрации 114103140062б / номер темы С8, код проекта 2716. —  Санкт Петербург, 2015, — 164 с.


              1. gaussssss
                28.11.2025 14:47

                Приводится статистика - тысячные доли процента в час на мегабайт. Конечно, здесь достаточно кода Хэмминга в ECC-памяти.

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

                примерно 280 ошибок в день.

                Каких именно ошибок? Если в 1 бите - хэмминга хватит


                1. ALT0105 Автор
                  28.11.2025 14:47

                  Код Хэмминга по принципу действия исправляет одну ошибку в кодовом слове. Кодовое слово - это информационные биты плюс служебные. Проценты как средство измерения здесь плохо подходят, но раз уж начал: если в слове 7 бит, то одна ошибка занимает 14% длины слова, и эти 14% он исправляет. Если слово длиной 64+8 бит, то ошибка занимает менее 1,5%. Другие коды исправляют больше ошибок. Код Рида-Малера, например, исправляет ошибки, занимающие 25% длины большого слова (десятки бит).


      1. ALT0105 Автор
        28.11.2025 14:47

        Поправка. В коде Хэмминга при числе информационных бит 4 добавляются 3 служебных, а исправляется одна ошибка на их сумму, т.е. на 7 бит. Итого - 14% исправляемых ошибок, не 25. Для блока 64 бита добавляются 8 бит, исправляется менее 1,5℅ ошибок


  1. VT100
    28.11.2025 14:47

    Голограмма на рис. 1 выглядит симметричной относительно 99. Вероятно, и для остальных Y так. Как мы определим, что фрагмент с потерей 75 % на рис. 3 относится к голограмме с Y=99?
    Т.е. какова помехоустойчивость определения границ голограмм?
    Коды Mathlab публикуете?


    1. ALT0105 Автор
      28.11.2025 14:47

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


    1. ALT0105 Автор
      28.11.2025 14:47

      Коды Mathlab публикуете?

      Просто показать коды мало, нужны будут пояснения. Мягкий декодер, работающий при 100% ошибок, имеет более 2000 строк.