Способ обеспечения отказоустойчивости элементов памяти
METHOD FOR ENSURING FAULT TOLERANCE OF MEMORY ELEMENTS

Изобретение относится к вычислительной технике и автоматике, и может быть использовано в ответственной аппаратуре, имеющей повышенные требования к надежности и не имеющей доступа для ремонта, например, в космических аппаратах.
Известен «Способ повышения надежности модулей памяти» (Буханова Г.В. «Высоконадежные оперативные запоминающие устройства, тенденции развития. Автоматика и телемеханика», 1993 год, выпуск 2, стр.23), заключающийся в том, что производится запись и считывание прямых и обратных кодов с последующим поразрядным сравнением.
Недостатком указанного способа является низкая надежность, связанная с тем, что отказ одного модуля памяти вызывает отказ всего устройства.
Также известен «Способ повышения надежности модулей памяти» (Горшков В.Н. «Надежность оперативных запоминающих устройств ЭВМ». Л.: Энергоатомиздат, 1987), заключающийся в том, что для резервирования двух рабочих модулей памяти вводится резервный модуль, в который записываются кодовые комбинации, полученные путем сложения по модулю 2 двух слов из рабочих модулей памяти с одинаковыми адресами. При отказе одного из рабочих модулей памяти для исправления слова, записанного в нем, производится обращение к работоспособному и резервному модулям памяти, а истинное слово получается  сложением выбранных слов по модулю 2.
Недостатком этого способа является низкая надежность, так как при отказе в цепи одного любого разряда шины данных (обрыв, короткое замыкание) в элементы памяти будет записываться и считываться ложная информация.
(прототипом)
Наиболее близким к заявляемому решению по технической сущности и достигаемому техническому результату  является «Способ обеспечения отказоустойчивости элементов памяти с использованием трехканального мажоритарного резервирования» (Буханова Г.В. «Высоконадежные оперативные запоминающие устройства, тенденции развития. Автоматика и телемеханика», 1993, выпуск 2, стр.13), в котором обращение в режимах записи и считывания производится одновременно ко всем трем элементам памяти, в режиме считывания информация с элементов памяти мажорируется по совпадению большинства выходных сигналов.
Недостатком этого способа является низкая надежность, так как при отказе в цепи одного любого разряда шины данных (обрыв, короткое замыкание) во все три элемента памяти будет записываться и считываться ложная информация.
Технической проблемой является
повышение надежности элементов памяти.
Техническая проблема решается за счет того, что
в способе обеспечения отказоустойчивости элементов памяти с использованием трехканального мажоритарного резервирования, информацию записывают в три элемента памяти последовательно: в первый элемент – без изменений в прямом коде, во второй элемент в инверсном коде, в третий элемент в прямом коде, но с перестановкой местами разрядов первой и второй половины шины данных; чтение осуществляют последовательно из первого, второго, третьего элементов памяти, считанную информацию c второго элемента памяти инвертируют, а информацию первой и второй половины разрядов шины данных c третьего элемента памяти переставляют местами, затем считанную информацию c первого элемента памяти и преобразованную информацию со второго и третьего элементов памяти поразрядно мажорируют. Далее, считанную информацию проверяют на достоверность, для чего информацию с первого, второго, третьего элементов памяти поразрядно сравнивают. Причем, если считанная информация в разряде совпала со всех трех элементов памяти, то данный разряд на шине данных неисправен, а если число таких разрядов расположенных только в первой или только во второй половине шины данных составляет половину или менее числа разрядов шины данных, то информация является достоверной.
Техническим результатом будет являться
создание способа, повышающего надежность за счет достоверности записи и считывания информации в элементы памяти при наличии неисправностей в цепях шины данных.
Сущность заявленного способа поясняется следующим образом.
Пусть необходимо запомнить код:
1   1   0   1   1   0   0   1   1   1   1   1   1   1   1   1
1   2   3   4   5   6   7   8   9  10 11 12 13 14 15 16  - номера разрядов шины данных.
Допустим, в разрядах шины данных первой, второй, четвертой, пятой, восьмой неисправность типа постоянный «0», а в разрядах шины данных третьей, шестой, седьмой неисправность типа постоянный «1», тогда записываемая информация будет следующая (последовательность):
1) в первый элемент памяти (в прямом коде)
0
0
1
0
0
1
1
0
1   1   1   1   1   1   1   1
1   2   3   4   5   6   7   8   9  10 11 12 13 14 15 16
2) во второй элемент памяти  (инвертируемая информация)
0
0
1
0
0
1
1
0
0   0   0   0   0   0   0   0
1   2   3    4   5   6   7   8   9  10 11 12 13 14  15 16
3) в третий элемент памяти (в прямом коде, но первый байт меняем местами со вторым)
0
0
1
0
0
1
1
0
1   1   0   1   1   0   0   1
1   2   3   4   5   6   7   8   9  10 11 12 13 14 15 16
При считывании информация будет следующая (последовательность):
1) с первого элемента памяти
0
0
1
0
0
1
1
0
1   1   1   1   1   1   1   1
2) со второго элемента памяти
0
0
1
0
0
1
1
0
0   0   0   0   0   0   0   0
3) с третьего элемента памяти
0
0
1
0
0
1
1
0
1   1   0   1   1   0   0   1 .
Затем информацию второго элемента памяти инвертируем:
1   1   0   1   1   0   0   1   1   1   1   1   1   1   1   1
В информации третьего элемента памяти первый байт меняем местами со вторым:
0
0
1
0
0
1
1
0
1   1   0   1   1   0   0   1
Теперь информацию, полученную с первого элемента памяти, инвертируемую информацию со второго элемента памяти и переставленную информацию с третьего элемента памяти поразрядно мажорируем «2 из 3»:
0   0   1   0   0   1   1   0   1   1   1   1   1   1   1   1
1   1   0   1   1   0   0   1   1   1   1   1   1   1   1   1
1   1   0   1   1   0   0   1   0   0   1   0   0   1   1   0
1   1   0   1   1   0   0   1   1   1   1   1   1   1   1   1
.
- результат поразрядного мажорирования
1   2   3   4   5   6   7   8   9 10  11 12 13 14 15 16 - номера разрядов шины данных.
Значение в первом, втором, третьем четвертом, пятом, шестом, седьмом, восьмом разряде восстановились. То есть информация сохранена верно, парировано восемь неисправностей в первой половине шины данных.
Проверяем правильность (достоверность) принятой информации, путем поразрядного сравнения информации с первого, второго, третьего элементов памяти:
0   0   1   0   0   1   1   0   1   1   1   1   1   1   1   1       с первого элемента памяти,
0   0   1   0   0   1   1   0   0   0   0   0   0   0   0   0       со второго элемента памяти,
0   0   1   0   0   1   1   0   1   1   0   1   1   0   0   1      с третьего элемента памяти.
1   1   1   1   1   1   1   1  0   0   0   0   0   0   0   0        результат поразрядного сравнения, где: 1 – совпадение результата сравнения, а 0 – не совпадение.
1  2   3   4   5   6   7   8   9  10  11  12  13 14 15 16      номера разрядов шины данных. Все единицы в первой половине шины данных указывают на неисправность шины (8 разрядов, в которых предполагали неисправности), однако, так как число разрядов с совпавшей информацией не превышают половины разрядов шины данных, то данные достоверны.
Аналогично исправляется информация при неисправностях во второй половине шины данных (во втором байте).
Данный способ позволяет парировать отказы в шине данных, в устройствах ввода-вывода формирующих шину данных, а также в элементах памяти.
Способ особенно эффективен для программируемого постоянного запоминающего устройства, где необходимо считывать достоверную информацию через длительные промежутки времени без записи, например, после пропадания питания.