СПОСОБ ОБНАРУЖЕНИЯ ОШИБКИ ПРИ ЧТЕНИИ ЭЛЕМЕНТА ДАННЫХ
METHOD OF DETECTING ERROR WHEN READING DATA ITEM

Изобретение относится к способу обнаружения ошибки при чтении элемента данных и способу защиты процессора безопасности. Настоящее изобретение также относится к носителю информации и процессору безопасности для реализации этих способов.
Известные способы обеспечивают обнаружение ошибки считывания выполнением следующих этапов:
a) сохранение первой копии элемента данных в первой области электронной памяти и сохранение второй копии элемента данных во второй области электронной памяти, в ответ на запрос считать элемент данных:
b) чтение значений первой и второй копий элемента данных в первой и второй областях соответственно,
c) сравнение считанных значений первой и второй копий элемента данных,
d) если считанные значения первой и второй копий одинаковы, то никакой ошибки при чтении данного элемента данных не обнаружено.
Область памяти или место в памяти представляет собой электронную память или часть электронной памяти, разделенную на несколько блоков памяти. Каждый блок памяти предназначен для хранения элемента данных. Как правило, блок памяти является страницей или однократной страницей. Страница представляет собой наименьшее число октетов, которые могут быть записаны в одной операции записи. Таким образом, даже если хранящийся элемент данных в странице имеет меньший размер, чем страница, вся страница считается занятой данным элементом данных, и это не позволяет хранить любые дополнительные данные на этой странице.
Предшествующий уровень техники, относящийся к известным способам, например, описан в следующих заявках на патент: GB 2404261, US 2006053308, WO 2008 23297, US 20070033417, US 20050160310, US 2008/140962 A1 и US 2009/113546 A1.
Известные способы направлены только на защиту от последствий неисправности блока памяти. Таким образом, если значения первой и второй копий различны, то сигнализируется ошибка и инициируются корректирующие меры. Одна из типовых корректирующих мер состоит в коррекции значения хранимого элемента данных. Однако эти способы также обеспечивают обнаружение ошибки при чтении элемента данных. В случае наличия ошибки в чтении данных, отсутствие равенства между значениями первой и второй копий элемента данных не следует из искажений данных, хранящихся в областях памяти, но из ошибки во время процесса чтения этих данных. Здесь, термин искажения или искаженные данные используется, когда физически хранящееся значение этого элемента данных является ошибочным из-за сбоя в блоке памяти. Таким образом, хотя хранящиеся значения первой и второй копий совершенно одинаковы, на этапе с), как описано выше, выявляется, что значения различны. Например, ошибка чтения может быть спровоцирована нарушением сигналов шины считывания или искажением скопированных данных в энергонезависимой памяти после чтения в энергозависимой области памяти.
Известные способы не обеспечивают установление различий между этими двумя типами ошибок и систематически инициируют выполнение мер для устранения ошибки после обнаружения. Как правило, мера по устранению ошибки состоит в исправлении ошибочного значения. Однако, в случае наличия ошибки чтения, такая коррекция не имеет смысла и приводит к нерациональному использованию компьютерных ресурсов, такого как время реализации данного способа микропроцессором.
Что касается процессоров безопасности, то существуют также еще одна веская причина для обеспечения выявления различий этих двух типов ошибок. Процессор безопасности представляет собой электронный процессор, который используется для усиления противостояния возможным действиям хакеров. Поэтому он, как правило, используется для размещения конфиденциальных данных. Теперь, обычная атака на процессор безопасности состоит в искажении хранимых данных для провоцирования непредсказуемого функционирования процессора безопасности, который может раскрыть часть или все конфиденциальные данные, которые он содержит. Тем не менее, для хакеров проще спровоцировать ошибку чтения, чем исказить хранимые данные. Когда хакер намеренно провоцирует возникновение ошибки чтения, используя скачки напряжения или лазерный луч или иное, считается, что процессор безопасности стал целью атаки чтения. Таким образом, в контексте процессоров безопасности, ошибка чтения позволяет однозначно обнаружить попытку выполнением криптоанализа, тогда как сбой в блоке памяти может быть случайным и ошибка вызвана, например, старением.
Целью изобретения является устранение этого недостатка. Предметом является способ обнаружения ошибки считывания в соответствии с п. 1 формулы изобретения.
Описанный выше способ позволяет отличить ошибку считывания от ошибки, вызванной искажением хранимых данных, и, таким образом, обнаружить ошибку считывания. В самом деле, на второй итерации описанных ранее этапов b) и с) значения первой и второй копий обязательно отличаются, если по меньшей мере одно из этих значений искажено. С другой стороны, идентичность этих значений на второй итерации этапов b) и с) однозначно определяет ошибку считывания элемента данных.
Таким образом, можно реализовать различные соответствующие меры реагирования на ошибки считывания или искажение сохраненных данных. Например, факт обнаружения ошибки считывания позволяет не допустить неэффективную реализацию мер, направленных на исправление сохраненных данных, когда последние не искажены. Кроме того, в случае с процессором безопасности, обнаружение ошибки считывания делает возможным вызвать выполнение контрмер для предупреждения криптоанализа.
Варианты осуществления этого способа обнаружения могут включать в себя один или более признаков зависимых пунктов формулы изобретения.
Варианты осуществления вышеописанного способа обнаружения, более того, имеют следующие преимущества:
- использование кода обнаружения ошибки позволяет восстановить функциональность способа обнаружения ошибки считывания даже после сбоя в блоке памяти,
- использование кода коррекции ошибки позволяет восстановить функциональность способа обнаружения ошибки считывания даже после того, как значения первой и второй копий элемента данных были искажены, при ограничении хранимого количества кодов коррекции ошибки,
- выбор блоков памяти, в которых хранится новый элемент данных, только среди блоков памяти, в которых сохраняют данные без сбоя, что позволяет избежать повторного использования неисправных блоков памяти для хранения данных,
- хранение преобразованного значения в первой области памяти, отличного от сохраненного значения во второй области памяти, что позволяет увеличить вероятность, того, что значения для чтения первой и второй копий отличаются в случае атаки чтения.
Другим объектом изобретения является способ защиты процессора от атаки считывания в соответствии с п. 6.
Другим объектом настоящего изобретения является носитель информации, включающий в себя команды для осуществления описанного способа обнаружения или защиты, когда эти команды выполняются электронным компьютером.
Наконец, еще одним объектом настоящего изобретения является процессор безопасности в соответствии с п. 8.
Варианты осуществления данного процессора безопасности могут включать в себя один или более признаков зависимых пунктов формулы изобретения.
Изобретение будет лучше понятно из нижеследующего описания, приведенного только в качестве неограничивающего примера и со ссылкой на прилагаемые чертежи, на которых:
фиг. 1 представляет собой схематическое изображение приемного терминала скремблированного мультимедийного контента, ассоциированного с процессором безопасности,
фиг. 2 представляет собой схематическое изображение организации памяти процессора безопасности, показанного на фиг. 1;
фиг. 3 представляет собой блок-схему алгоритма фазы записи данных в память, как показано на фиг. 2;
фиг. 4 представляет собой блок-схему алгоритма способа защиты процессора безопасности, показанного на фиг. 1; и
фиг. 5 представляет собой блок-схему алгоритма другого варианта осуществления способа защиты процессора безопасности, показанного на фиг. 1.
На этих чертежах одинаковые ссылочные позиции используются для обозначения одинаковых элементов.
В остальной части этого описания, признаки и функции, хорошо известные специалистам в данной области техники, не описаны подробно. Кроме того, используется терминология систем условного доступа для мультимедийного контента. Для получения дополнительной информации относительно терминологии читатель может обратиться к следующему документу:
st
"Функциональная модель системы условного доступа", EBU обзор. Технический европейский вещательный союз, Брюссель, BE, N° 266, 21-го декабря 1995 года ("Functional Model of Conditional Access System", EBU Review, Technical European Broadcasting Union, Brussels, BE, n° 266, 21 December 1995).
Изобретение относится, в частности, к области контроля доступа для предоставления оплачиваемого мультимедийного контента, такого как платного телевидения.
Как известно, осуществляется трансляция нескольких видов мультимедийного контента одновременно. Для этого каждый мультимедийный контент транслируется на своем канале. Канал обычно соответствует телевизионному каналу.
В этом описании "мультимедийный контент" более конкретно обозначает аудио и/или видео контент, предназначенный для восстановления в форме, которая непосредственно воспринимается и понятна для человека. Как правило, мультимедийный контент соответствует последовательности изображений, образующих фильм, телевизионную программу или какую-либо рекламу. Мультимедийный контент также может быть интерактивным контентом, таким как игра.
Для повышения безопасности и осуществления визуализации мультимедийного контента на определенных условиях, таких как подписка на оказание платных услуг, например, вещание мультимедийного контента в зашифрованном виде, а не в открытом виде.
Точнее, каждый мультимедийный контент разделен на периоды действия криптографического ключа. В течение всей продолжительности периода действия криптографического ключа, условия доступа к скремблированному мультимедийному контенту остаются неизменными. В частности, в течение всей продолжительности периода действия криптографического ключа мультимедийный контент скремблируется тем же контрольным словом. Как правило, контрольное слово изменяется от одного периода действия криптографического ключа к следующему.
Более того, контрольное слово, как правило, является специфичным для мультимедийного контента, причем последнее генерировано случайным или псевдослучайным образом.
Здесь термины "скремблирование" и "шифрование" считаются синонимами. То же самое касается терминов «дескремблирование» и «дешифрование».
Мультимедийный контент в ясной форме соответствует мультимедийному контенту до скремблирования последнего. Поэтому последний может быть представлен непосредственно в понятной форме для человека, не прибегая к операции дешифрования и без его визуализация при соблюдении определенных условий.
Необходимые контрольные слова для дешифрования мультимедийного контента передаются синхронно с мультимедийным контентом. Для этого контрольные слова мультиплексируются со скремблированным мультимедийным контентом, например.
Для повышения безопасности передачи контрольных слов последние передаются в терминалы в виде криптограмм, содержащихся в ECMs (сообщения контроля титрования). Здесь, "криптограмма" обозначает информационный элемент недостаточный сам по себе для получения контрольного слова в незашифрованном виде. Таким образом, если передача контрольного слова перехватывается, знание криптограммы только одного контрольного слова не позволяет извлечь контрольное слово, позволяющее расшифровать мультимедийный контент.
Для извлечения контрольного слова в незашифрованном виде, то есть контрольное слово, которое делает возможным напрямую расшифровывать мультимедийный контент, оно должно быть соединено с секретным элементом информации. Например, криптограмму контрольного слова получают посредством шифрования незашифрованного текса контрольного слова криптографическим ключом. В этом случае, секретный элемент информации представляет собой криптографический ключ, позволяющий расшифровать данную криптограмму. Криптограмма контрольного слова также может ссылаться на контрольное слово, хранимое в таблице, содержащей множество возможных контрольных слов. В этом случае, секретный элемент информации является таблицей, ассоциированной с незашифрованным текстом контрольного слова в каждой ссылке.
Секретный элемент информации должен храниться в безопасном месте. Чтобы сделать это, как было уже предложено, необходимо хранить секретный элемент информации в процессорах безопасности, таких как смарт-карты, непосредственно соединенные с каждым терминалом.
Фиг. 1 представляет терминал 8, предназначенный для использования в такой типовой системе управления доступом. Терминал 8 декодирует канал для отображения информации в ясной форме для зрителя.
Терминал 8 содержит приемник 10 широковещательного мультимедийного контента. Этот приемник 10 соединен с входом демультиплексора 12, который передает мультимедийный контент в дескремблер 14 и ECMs и EMMs (сообщения контроля титрования) в процессор 16 безопасности.
Дескремблер 14 расшифровывает зашифрованный мультимедийный контент на основании контрольного слова, передаваемого процессором 16. Расшифрованный мультимедийный контент передается в декодер 18, который декодирует его. Распакованный или декодированный мультимедийный контент передается в видеокарту 20, которая управляет отображением данного мультимедийного контента для просмотра на устройстве 22 отображения, оснащенным экраном 24. Устройство 22 отображения отображает мультимедийный контент в ясной форме на экране 24. Например, устройство 22 отображения представляет собой телевизор, компьютер или стационарный или мобильный телефон. В данном примере, устройство 22 отображения представляет собой телевизор.
Как правило, интерфейс между терминалом 8 и процессором 16 содержит считыватель 26, управляемый модулем 28 управления доступом. Здесь, считыватель 26 представляет собой считывающее устройство смарт-карт. Модуль 28, в частности, управляет:
- передачей демультиплексированных ECMs и EMMs в процессор 16, и
- приемом контрольных слов, расшифрованных процессором 16, и их передачей в дескремблер 14.
Процессор 16 обрабатывает конфиденциальную информацию, такую как криптографические ключи или данные авторизации доступа к мультимедийному контенту. Для обеспечения конфиденциальности этой информации необходимо обеспечить высокий уровень защищенности от атак хакеров. Поэтому необходимо обеспечить наиболее высокий уровень защиты от этих атак по сравнению с другими компонентами терминала 8. В частности, память, которая включает в себя только имеющие доступ и используется данным процессором 16. Здесь, процессор 16 является процессором безопасности смарт-карты 30.
Процессор 16, в частности, содержит программируемый электронный компьютер 32, подключенный посредством шины 34 передачи информации к энергонезависимой электронной памяти 36 и в энергозависимой электронной памяти 38.
Память 36, как правило, известна под аббревиатурой RAM (запоминающее устройство с произвольной выборкой). Память 38 хранит данные, которые хранятся даже в отсутствие других источников питания процессора 16. Кроме того, память 38 является перезаписываемой памятью. Как правило, это EEPROM (электрически стираемое программируемое постоянное запоминающее устройство) или флэш-память. Память 38 содержит конфиденциальную информацию, необходимую для расшифровки мультимедийного контента. Здесь, также содержатся команды, необходимые для выполнения способа, показанного на фиг. 4 или фиг. 5.
Фиг. 2 показывает различные области памяти 38 в деталях. Здесь, память 38 содержит следующие области памяти:
- область 42 управления,
- область 44 хранения первых данных, и
- область 46 хранения вторых данных.
Каждая область памяти определяется начальным адресом и конечным адресом. Здесь, каждая область занимает ряд последовательных адресов в памяти 38. Каждая область делится на несколько блоков памяти. Например, области 42, 44 и 46, каждая, содержат более 100 или 400 блоков памяти. Размер каждого блока памяти составляет несколько октетов. Здесь, блоки памяти данных областей все имеют тот же размер. Например, этот размер больше или равен 64о или 128о. Размеры областей 44 и 46 идентичны.
1j
1j
Область 44 разделяется на блоки B памяти Р одинакового размера, где индекс j идентифицирует начальную позицию блока B по отношению к начальному адресу области 44.
2j
1j
2j
2j
1j
1j
2j
Область 46 также разделена на блоки B памяти Р такого же размера, что и блоки B. Индекс j определяет начальную позицию блока B по отношению к начальному адресу области 46. Здесь, для упрощения описания варианта осуществления, смещение между началом блока B и начальным адресом области 46 идентично смещению, которое существует между началом блока B и начальным адресом области 44. В этих условиях, блоки B и B называются "сдвоенными".
ij
ij
ij
Область 42 содержит блоки CB памяти 2Р одинакового размера. Каждый блок CB, ассоциирован с блоком B области 44 или 46. Индекс i принимает значение "1" для идентифицирования области 44 и значение "2" для идентифицирования области 46.
ij
Здесь, каждый блок CB, в частности, содержит следующую информацию:
ij
- указание того, является ли ассоциированный блок B свободным, т.е. он может быть использован для хранения нового элемента данных,
ij
ij
- где это применимо, указание следующего блока памяти, связанного с данным блоком B, или указание того, что этот блок B является последним блоком в цепочке связанных блоков,
ij
- код CD обнаружения ошибок,
ij
- маску MR и
ij
ij
- признак MD, указывающий, является ли блок B нерабочим.
ij
ij
ij
ij
Код CD создается исключительно из значения элемента данных, содержащегося в блоке B. Данный код CD добавляет достаточную избыточность элементу данных, содержащегося в блоке B, для того, чтобы можно обнаружить один или несколько ошибочных битов в значении элемента данных, хранящегося в этом блоке.
ij
ij
Например, код CD является кодом, которым осуществляется контроль при помощи циклического избыточного кода, более известного под аббревиатурой CRC. Например, код CD является CRC 32.
ij
ij
ij
ij
ij
ij
ij
ij
Маска MR является значением, используемым для обратного преобразования значения D элемента данных для сохранения в блоке B в трансформированном значении D', которое хранится в этом блоке B. Это преобразование является обратимым, так что из значения маски MR и преобразованного значения D' можно извлечь значение D элемента данных.
ij
ij
ij
Признак MD дает возможность запоминать, является или нет блок B в рабочем состоянии. Неисправный блок B является, например, блоком памяти, включающим в себя биты информации, чьи значения уже не могут быть переписаны или изменены, что приводит к появлению ошибок в хранимом значении в данном блоке памяти.
0
1
2
0
1
2
0
1
2
Область 42 также содержит коды коррекции ошибки СС, CC и СС. Код СС создается из контента областей 44 и 46. Он добавляет достаточную избыточность контенту, хранящемуся в областях 44 и 46, для того, чтобы можно не только обнаружить, но и исправить один или несколько ошибочных битов данных, хранящихся в этих областях 44 и 46. Аналогичным образом, коды CC и СС добавляют достаточную избыточность контенту областей 44 и 46 соответственно, чтобы сделать возможным корректировать ошибочные биты k в областях 44 и 46 соответственно, где k является натуральным целым числом, большим или равным единице и, предпочтительно, больше или равным пяти или десяти. В отличие от кода СС, коды CC и СС позволяют только откорректировать ошибочные биты в областях 44 и 46 соответственно. Например, эти коды коррекции ошибок являются кодами Рида-Соломона.
Фиг. 3 представляет собой фазу 50 хранения элемента конфиденциальных данных в памяти 38. Элемент конфиденциальных данных, как правило, представляет собой криптографический ключ для расшифровки контрольного слова или данные авторизации доступа или отсутствия авторизации, доступа и расшифровки мультимедийного контента.
ij
Если размер элемента данных больше, чем размер блока памяти, то элемент данных сначала делят на несколько частей, каждая из которых имеет меньший размер, чем размер блока памяти, с тем чтобы соответствовать элементу данных, имеющий размер, который меньше, чем размер блока памяти. В этом случае, различные части одного и того же элемента данных, например, соединены друг с другом с указанием в каждом блоке BC адреса следующего блока памяти.
ij
Прежде всего, на этапе 52, компьютер 32 выбирает из числа различных блоков памяти областей 44 и 46 пару блоков B памяти, удовлетворяющую следующим условиям:
1j
2j
- блоки B и B спарены,
1j
2j
- блоки B и B свободны, и
1j
2j
- блоки B и B не отмечены как неисправные.
1j
2j
1j
2j
Компьютер 32 проверяет факт того, что выбранные блоки B и B свободны и исправны на основании информации, содержащейся в блоках BC и BC области 42 управления.
1j
2j
1j
2j
В следующем тексте, значение элемента данных, хранящееся в блоках B и B, обозначается соответственно как D и D. Эти значения являются идентичными.
1j
2j
1j
2j
0
1
2
На этапе 54, компьютер 32 вычисляет новое значение кодов CD и CD, что позволяет обнаружить ошибку в значениях D и D соответственно. На этапе 54, компьютер 32 также вычисляет новые значения кодов CC, CC и СС коррекции ошибок и сохраняет их в области 42.
1j
2j
1j
2j
Новые значения кодов CD и CD хранятся в блоках BC и BC соответственно.
1j
2j
1j
2j
Компьютер 32 также хранит в его блоков BC и BC сигнал индикации о том, что согласно которому блоки B и B памяти больше не свободны.
1j
2j
1j
2j
1j
2j
1j
2j
1j
2j
1j
2j
1j
2j
Далее, на этапе 56, значения D и D преобразуются соответственно в значения D' и D' как функция значения масок MR и MR соответственно. Значение масок MR и MR содержится в блоках BC и BC. Значения масок MR и MR различны, так что преобразованные значения D' и D различны.
ij
ij
ij
Например, преобразование выполняется с использованием следующего соотношения: D'=D⊕MR, где "⊕" является XOR операцией.
1j
2j
1j
2j
Далее, на этапе 58, значения D' и D' физически хранятся в блоках B и B памяти соответственно. На этом фаза 50 завершается.
При использовании, процессор 16 выполняет программу, например, для расшифровки контрольных слов. При выполнении этой программы, команды используются для чтения элемента данных, хранящегося в памяти 38, такого как криптографический ключ или данные авторизации доступа. Затем выполняется способ, показанный на фиг. 4.
Вначале на этапе 66 адрес блока памяти для чтения сохраняется в энергонезависимом считывающим адресном регистре. Например, этот регистр, содержится в памяти 38.
1j
2j
1j
2j
Далее, выполняется этап 68 чтения элемента данных в памяти 38 по указанному адресу. Точнее, в операции 70, значения D' и D', содержащиеся в спаренных блоках B и B памяти, соответственно, считываются.
1j
2j
1j
2j
1j
2j
1j
2j
1j
2j
Далее, в ходе выполнения операции 72 компьютер 32 осуществляет обратное преобразование к тому выполнению способа, выполняемого на этапе 56, как показано на фиг. 3. Для реализации, используется значения масок MR и MR. Значения, полученные применением данного обратного преобразования значений D' и D', впоследствии будет обозначаться как значения D и D соответственно. Отметим, что в случае ошибки чтения или искажения хранящихся данных, значения D и D не обязательно идентичны значениям D и D, хранящимся в фазе 50 записи.
1j
2j
1j
1j
На этапе 74, значения чтения D и D сравниваются. Если эти величины равны, то процесс переходит на этап 76, в течение которого программа выполняется процессором 16, обрабатывая значение D, и продолжается нормальное выполнение процесса. Например, компьютер 32 расшифровывает контрольное слово с помощью значения D. На этапе 76, ошибка чтения не обнаружена. Более того, на этапе 76, регистр адреса считывания стирается.
1j
2j
И наоборот, если значения считывания D и D не идентичны, то процесс выполнения программы прерывается и выполняется процедура проверки компьютером 32. Например, процессор безопасности перезапускается и во время перезагрузки процессора безопасности систематически выполняется процедура проверки, если адресный регистр чтения не является пустым. Процедура проверки также может быть запущена изменением маршрута события в случае ошибки при выполнении программы.
После запуска данной процедуры проверки на этапе 78 компьютер 32 вновь пытается считать элемент данных, хранящийся в памяти 38. Новая попытка чтения состоит в чтении элемента данных, соответствующих адресу, сохраненному в регистре адреса считывания. Этап 78, например, идентичен этапу 68.
1j
2j
Далее, на этапе 80 компьютер переходит к новому сравнению новых значений D и D, считанных на этапе 78.
1j
2j
1j
2j
Если на этот раз, значения D и D идентичны, то на этапе 82, обнаружена ошибка считывания. Действительно, разница между значениями D и D, считанными на этапе 68, не вытекает из искажения данных, хранящихся в памяти 38. В самом деле, обнаружение ошибки считывания указывает, в случае процессора безопасности, с очень высокой степенью вероятности, на то, что первая попытка чтения на этапе 68 была выполнена неудачно в связи с атакой считывания.
Таким образом, в ответ, на этапе 84, компьютер 32 инициирует реализацию контрмер, ограничивая расшифровку мультимедийного контента. Как результат, осуществляется временное или постоянное ограничение на расшифровку мультимедийного контента с помощью процессора 16. Как правило, расшифровка контрольных слов заблокирована.
Точнее, противодействие может представлять собой реализацию одним из следующих контрмер:
- стирание конфиденциальных данных, содержащихся в памяти 38, таких как криптографические ключи и данные авторизации доступа,
- срабатывание самоуничтожения процессора 16, с тем чтобы окончательно вывести из строя процессора, и
- временное или окончательное прекращение выполнения процесса расшифровки контрольных слов.
На этапе 84, если процессор 16 по-прежнему используется, несмотря на реализацию контрмер, то адресный регистр чтения стирается.
1j
2j
Если значения D и D, считанные на этапе 78, различны, то это означает, что сохраненные данные, безусловно, искажены. Поэтому отсутствует ошибка чтения.
1j
1j
В этом случае, на этапе 86 компьютер 32 проверяет, является ли значение D ошибочным, используя код CD.
1j
1j
Если значение D не ошибочно, то на этапе 88 осуществляется сохранение значения D в новых парных блоках памяти областей 44 и 46. Например, операции на этапе 88 выполняются аналогично фазе 50 записи. Следовательно, это сохраненное значение в этих новых блоках будет использовано во время следующего чтения того же элемента данных.
1j
2j
1j
2j
1j
Далее, на этапе 90 обновляются признаки MD и MD, для индикации и сохранения в памяти информации того, что предыдущие блоки B и B неисправны. Здесь, блок B указывается как дефектный, в то время как значение, которое было сохранено, было корректным. Это позволяет продолжить управление процессом составления пар блоков памяти простым способом.
1j
На этапе 90 также стирается адресный регистр чтения. Далее, значение D обрабатывается программой, которую продолжают выполнять на этапе 76.
1j
2j
2j
Если на этапе 86 значение D является ошибочным, то далее выполняется операция на этапе 92 проверки, является ли значение D ошибочным или корректным, используя код CD.
2j
2j
1j
Если элемент D данных корректен, то выполняется операция на этапе 94, идентично на этапе 88 исключением того, что используется значение D, которое используется вместо значения D. Выполнение операций на этапе 94 также продолжается посредством выполнения операций на этапе 90.
1j
2j
0
c1j
c2j
1j
2j
Если значения D и D являются ошибочными, то компьютер продолжает выполнение операций на этапе 98, в течение которого осуществляется первая попытка корректировки этих значений, используя код CC. На этом этапе 98 компьютер 32 осуществляет коррекцию k ошибочных битов, распределенных в областях 44 и 46. Если существует менее, чем k ошибочных битов, то операция коррекции затем может рассматриваться как успешная. В этом случае получаются исправленные значения D и D для значений D и D соответственно.
c1j
c2j
В этом случае на этапе 100 компьютер 32 сравнивает значения D и D.
c1j
c2j
c1j
c1j
1j
Если значения D и D идентичны на этапе 102, то значение D сохраняется в двух новых блоков памяти областей 44 и 46 соответственно. Операции на данном этапе, например, идентичны операции на этапе 88, за исключением того, что это значение D используется вместо значения D.
1j
2j
Далее выполняется операция на этапе 104, в течение которого блоки B и B помечаются как неисправные. Операция на этапе 104 идентична, например, операции, выполняемой на этапе 90. Последовательность выполнения способа далее возвращается на этап 76.
c1j
c2j
0
1
c1j
1j
Если значения D и D различны или если исправление ошибок кодом CC не было выполнено, то компьютер 32 переходит на этап 108, в течение которого выполняется попытка исправления данных в области 44, используя код CC. Если коррекция прошла успешно, то компьютер 32 получает скорректированное значение D для значения D. Далее выполняется операция на этапе 110, которая идентична этапу 102. Операция на этапе 110 выполняется после выполнения операции на этапе 104.
1j
2j
2
c2j
c2j
2j
Если операция на этапе 108 не выполнена, т.е. не обеспечивается исправление значения D, то компьютер выполняет операцию на этапе 112, в течение которого осуществляется попытка исправить значение D, используя код СС. Если операция на этапе 112 выполнена успешно, то компьютер 32 получает скорректированное значение D. Далее выполняется операция на этапе 114, которая идентична операции на этапе 94 за исключением того, что это значение D используется вместо значения D. Операция на этапе 114 выполняется после выполнения операции на этапе 104.
1j
2j
1j
2j
Если не удалось исправить либо значение D, или значение D, то на этапе 116 компьютер 32 устанавливает факт того, что элемент данных потерян, поскольку последний является ошибочным и не может быть исправлен. На этом этапе 116, компьютер 32 отмечает блоки B и B как неисправные. Эта операция выполняется по отношению к этапу 90. Затем, либо программа может управлять процессом, для которого отсутствует значение для этого элемента данных, и в этом случае выполнение программы продолжается. Если выполнение программы не может продолжаться без значения элемента данных, то выполнение программы останавливается, и процессор безопасности, например, перезапускается.
1j
2j
Фиг. 5 представляет способ защиты процессора 16, который идентичен способу, показанному на фиг. 4, исключением того, что коды коррекции ошибок не используются. Таким образом, в этом способе, этапы с 98 по 114 опускаются. Кроме того, в случае когда оба значения D и D обнаружены как ошибочные, то процесс переходит непосредственно на этап 116.
Возможны многие другие варианты осуществления. Например, операции преобразования хранимого значения могут быть опущены. В этом случае этапы 56 и 72 опускаются.
Распределение памяти может быть логическим или физическим распределением памяти.
1j
2j
1j
2j
Алгоритм, используемый для обнаружения ошибки в значении D, может отличаться от алгоритма, используемого для обнаружения ошибки в значении D. В этом случае, значения кодов CD и CD различны.
В одном варианте осуществления, код обнаружения ошибки также используется после коррекции сохраненного значения, с помощью кода коррекции ошибок. Это предоставляет возможность осуществить проверку, при необходимости, того, что скорректированное значение является правильным.
0
1
2
В другом варианте осуществления, код CC опущен или, наоборот, коды CC и CC опущены или не используется код коррекции ошибок.
В другом варианте осуществления, код коррекции ошибок используется только для одной из областей памяти.
Код коррекции ошибок не обязательно является общими для всей области памяти. В варианте, код коррекции ошибок построен на ограниченной группе нескольких блоков области памяти. Код коррекции ошибок также может быть использован для каждого блока памяти и только для этого блока памяти. В этом случае, код коррекции ошибок, предпочтительно, заменяет код обнаружения ошибок. В самом деле, почти все коды коррекции ошибок также обеспечивают обнаружение ошибки.
1j
2j
Код коррекции ошибок также может быть общим для значений D и D.
Код коррекции ошибок также может быть построен в соответствии с другими алгоритмами, такими как алгоритмы Хэмминга или турбокода.
1j
2j
2j
2j
1j
2j
2j
1j
1j
Когда блок B памяти устанавливается как дефектный, то нет необходимости для блока B памяти, который запараллелен с ним, также должен систематически быть помечен как неисправен. В варианте, блок B помечается как неисправный, только если код CD, ассоциированный с этим блоком, подтверждает, что элемент данных также является ошибочным. В противном случае, таблица ассоциируется с адресом каждого блока B адресом спаренного блока B. В этом случае, данная таблица модифицируется для ассоциации по адресу блока B, новый блок B' используется для замены предыдущего блока B.
Область 42 управления может быть сохранена в блоках области 44. В этих условиях, как и все блоки этой области 44, дублируются в области 46. Таким образом, обеспечивается защита зоны управления против искажения данных или от появления ошибок чтения таким же способом, как любой другой блок этих областей 44 и 46.
ij
ij
Процесс преобразования значения D в значение D' может быть опущен или реализован лишь в одной из областей 44 или 46.
ij
ij
ij
ij
Порядок некоторых операций или этапов реализации способов, описанных здесь, могут быть изменены. Например, операция вычисления кода определения ошибок выполняется после операции преобразования значения D в трансформированное значение D'. В этом случае, во время чтения осуществляется проверка того, что элемент данных чтения корректен или ошибочен, на основании значения D', а не значения D.
ij
ij
В варианте осуществления, перед обновлением признака MD неисправного блока, компьютер проверяет, что блок B фактически неисправен. Например, он выполняет следующие операции:
ij
ij
α) запись значения D в блок B вызывающий сомнение, затем
ij
ij
β) чтение значения D хранимого в этом блоке B,
χ) сравнение записанного и прочитанного значений, и затем
δ) если эти значения равны, то операции с а) по с) повторяются, по меньшей мере, N раз.
ij
ij
В противном случае, признак MD обновляется для индикации того, что блок B неисправен.
Как правило, число N больше чем два и, предпочтительно, больше десяти.
ij
ij
ij
ij
ij
ij
Если предыдущие операции с а) по d) часто выполняются для одного и того же блока B, но предшествующая проверка обеспечивает работоспособность блока B, конкретное значение может быть выделено для признака MD о том, что этот блок B не защищен. В этих условиях, насколько это возможно, блок B затем не выбирается для хранения новых данных. С другой стороны, если отсутствуют любые другие доступные блоки памяти, которые являются более безопасными, то этот блок B будет использоваться для хранения элемента данных.
Каждый блок памяти, как описано здесь, может быть обеспечен в виде единого электронного компонента или объединения нескольких электронных компонентов, соединенных независимо друг от друга к компьютеру 32. Например, области 44 и 46 могут соответствовать двум отдельным физическим блокам памяти, каждый из которых связан собственной шиной считывания к компьютеру 32.
Более чем две резервные области памяти могут быть обеспечены. В этом случае, значение элемента данных, скопированного в этой памяти, копируется в каждую из этих областей памяти. Способы, описанные выше, могут быть легко адаптированы для случая W областей памяти, где W представляет собой целое число больше, чем два.
Предмет предшествующего описания также применим к энергонезависимой памяти.