Содержание к диссертации
Введение
Глава 1. Сравнительный анализ кодер-декодеров, исправляющих однократные ошибки, применяемых для повышения сбоеустойчивости оперативных запоминающих устройств 14
1.1. Обзор основных методов помехоустойчивого кодирования для ОЗУ
1.2. Алгоритмические и схемотехнические особенности кодов и кодер-декодеров 23
1.3. Моделирование и синтез декодеров 26
1.4. Тестовая структура ОЗУ 39Кх39 по нормам проектирования 0,25 мкм КМОП КНИ с кодер-декодером Хсяо (39, 32) 32
1.5. Разработка кодер-декодеров для ОЗУ КЭШ-памяти второго уровня микропроцессора 36
Выводы 38
Глава 2. Снижение аппаратурных затрат и повышение быстродействия декодера Хсяо 40
2.1. Алгоритмические и схемотехнические особенности кодов и кодер-декодеров 41
2.2. Сравнение вариантов декодеров Хсяо с минимизированными по составу элементами 51
Выводы 56
Глава 3. ОЗУ с кодер-декодерами, исправляющими двукратные смежные ошибки 57
3.1. Особенности применения помехоустойчивых кодов для исправления двукратных смежных ошибок 60
3.2. Оптимизация SEC-DAEC кодов по критерию помехоустойчивости 62
3.3. Моделирование и сравнительный анализ кодер-декодеров SEC-DAEC кодов 63
Выводы 67
Глава 4. Повышение устойчивости подсистемы динамической памяти микропроцессора к временному функциональному отказу одной из СБИС ДОЗУ 69
4.1. Технология CHIPKILL 71
4.2. Методы с использованием помехоустойчивых кодов, исправляющих смежные ошибки 73
4.3. Сравнительный анализ методов повышения устойчивости к временному функциональному отказу одной из СБИС ДОЗУ 78
Выводы 82
Глава 5. Снижение числа служебных запросов в сбоеустойчивых ДОЗУ с функцией перезаписи данных 83
5.1. Разработка устройства регенерации данных в ДОЗУ с элементами помехоустойчивого кодирования 83
5.2. Поведенческое моделирование подсистемы динамической памяти 87
Выводы 90
Заключение 91
Список использованной литературы 93
- Моделирование и синтез декодеров
- Сравнение вариантов декодеров Хсяо с минимизированными по составу элементами
- Моделирование и сравнительный анализ кодер-декодеров SEC-DAEC кодов
- Поведенческое моделирование подсистемы динамической памяти
Моделирование и синтез декодеров
В результате воздействия ионизирующего излучения на интегральные схемы возможно возникновение одиночных радиационных эффектов, вызывающих временные и постоянные сбои в микроэлектронных изделиях. Наиболее подверженными воздействиям ионизирующего излучения элементами цифровой электроники являются элементы памяти вследствие их плотного расположения в ИС и длительного времени хранения данных. Одним из методов снижения количества сбоев при чтении данных из элементов являются алгоритмические методы, включающие в себя помехоустойчивое кодирование.
Помехоустойчивое кодирование данных, применяемое в ОЗУ, повышает их сбоеустойчивость. Кодер-декодеры, построенные на основе проверочных матриц помехоустойчивых кодов, отличаются задержкой прохождения сигналов и количеством используемых проверочных битов. При этом в литературе отсутствует сравнительный анализ кодер-декодеров для субмикронных КМОП ОЗУ, включающий в себя как кодер-декодеры, исправляющие только однократные ошибки, так и кодер-декодеры, дополнительно обнаруживающие все двойные. Проведен сравнительный анализ кодер-декодеров 64-битового информационного слова, исправляющих однократные ошибки. Для сравнительного анализа были взяты кодер-декодеры, не обнаруживающие все двойные ошибки: кодер-декодер Хэмминга, кодер-декодер итеративного прямоугольного кода, кодер-декодер итеративного треугольного кода; а также кодер-декодеры, обнаруживающие все двойные ошибки: модифицированный кодер-декодер Хэмминга, кодер-декодер Хсяо, расширенный кодер-декодер Хсяо с дополнительными проверочными битами. В процессе исследования принималось допущение, что сам кодер-декодер работает без ошибок. В реальной субмикронной микросхеме вероятность сбоя в кодер-декодере Действительно мала относительно вероятности сбоя в банке памяти, так как схема кодер-декодера является асинхронной и не хранит информацию в течение сколько-нибудь длительного времени. При необходимости повышения сбоеустойчивости самого кодер-декодера допускается использовать конструктивные и схемотехнические методы защиты от сбоев.
Общий вид кодер-декодера блочного линейного кода Кодер-декодеры всех рассмотренных ниже блочных линейных кодов имеют схожую структуру, представленную на рис. 1.1. Для вычисления проверочных битов используется кодер, выполняющих сложение по модулю два, исходя из вида Н-матрицы.
При декодировании происходит вычисление синдрома ошибки -процедура, аналогичная кодированию за исключением того, что вместо информационных битов для вычисления проверочных производится сложение по модулю два информационных битов вместе с соответствующими проверочными для вычисления битов синдрома. Синдром представляет из себя вектор разрядности к, в случае однократной ошибки совпадающий со столбцом Н-матрицы, номер которого соответствует номеру испорченного бита. При вычислении вектора ошибки определяется номер ошибочного бита (в случае одиночной ошибки) на основании синдрома. Вектор ошибки представляет собой маску, которая накладывается на информационное слово с целью исправления ошибки. Ошибочный бит в маске равен единице, остальные - нулю. В случае отсутствия ошибок все биты вектора равны нулю. Если кратность ошибки больше кратности, которая однозначно исправляется данным декодером, вектор ошибки может содержать больше одного ненулевого бита. При исправлении производится маскирование кодового слова, в результате чего на выходе декодера в случае однократной ошибки формируется исправленное информационное слово, а при наличии ошибки большей кратности может сформироваться слово, имеющее еще большее количество ошибок, чем это было до декодирования. При формировании сигналов ошибки вычисляются сигналы исправимой (исправленной) ошибки и неисправимой ошибки.
Кодер-декодер линейного блочного кода представляет собой цифровую комбинационную схему, состоящую из двух частей - кодера и декодера. Кодер располагается на входной шине данных ОЗУ (см. рис. 1.1) и формирует проверочные биты на основании записываемых в память данных - информационного слова (информационных битов). Полученные из кодера проверочные биты записываются в ОЗУ по тому же адресу, что и информационные биты, формируя кодовое слово. Декодер располагается на выходной шине данных ОЗУ и при операции чтении данных из памяти обрабатывает кодовое слово, формируя сигналы ошибки и выходные данные, исправленные в случае возникновения в них исправимой ошибки.
Количество информационных битов обозначается проверочных битов - к, общая длина кодового слова - п, количество проверочных битов -(п — к) . Помехоустойчивый код обозначается как «%Название_кода% (п, /с)». Например, код Хэмминга (71,64).
Блочная схема кодер-декодера линейного блочного кода представлена на рис. 1.2. Более подробно кодер и декодер будут рассмотрены на примере кода Хэмминга (7,4).
В кодере каждому информационному слову, записываемому в массив памяти, в соответствии с проверочной матрицей кода вычисляется набор проверочных битов. Для кода Хэмминга (7,4) проверочная матрица выглядит следующим образом:
Сравнение вариантов декодеров Хсяо с минимизированными по составу элементами
Кодер-декодеры Хсяо отличаются от кодер-декодеров Хэмминга возможностью обнаруживать двойные ошибки. Недостатком кодер-декодеров Хсяо является меньшее быстродействие, характеризуемое большими задержками прохождения сигнала по сравнению с кодер-декодерами Хэмминга. Это обусловлено большим, чем у кодер-декодеров Хэмминга, количеством функциональных элементов и связей, обеспечивающих обнаружение двойных ошибок.
Существует ряд помехоустойчивых кодов, применяемых в ОЗУ. Кодер-декодеры, построенные на основе проверочных матриц этих кодов, отличаются временем задержки прохождения сигналов и количеством необходимых проверочных битов.
Сравнительный анализ кодер-декодеров 64-битового информационного слова, исправляющих однократные ошибки, был проведен на кодер-декодерах, не обнаруживающих все двукратные ошибки: кодер-декодер Хэмминга, кодер-декодер итеративного прямоугольного кода, кодер-декодер итеративного треугольного кода; а также на кодер-декодерах, обнаруживающих все двукратные ошибки: это модифицированный кодер-декодер Хэмминга, кодер-декодер Хсяо, кодер-декодер расширенного кода Хсяо с дополнительными проверочными битами.
Кодер Хсяо основан на элементах ИСКЛ-ИЛИ, проверочные биты формируются на основании записываемых в ОЗУ данных -информационного слова (информационных битов) размера к бит. При формировании каждого проверочного бита информационные биты выбираются в соответствии с проверочной матрицей кода. Полученные на выходе кодера проверочные биты записываются в ОЗУ по тому же адресу, что и информационные биты, формируя кодовое слово размера п бит. Помехоустойчивый код Хсяо обозначается при этом как (п, к), где п -размер кодового слова, к - размер информационного слова в битах. На рис. 2.1 приведена функциональная схема декодера Хсяо (п, к). Декодер преобразует при чтении данных кодовое слово с выходной шины ОЗУ, формируя сигналы ошибки и выходные данные, исправленные в случае возникновения в них ошибки. При чтении кодового слова (а\.. .а„) из ОЗУ с помощью блока вычисления синдрома ошибки осуществляется повторное вычисление проверочных битов с последующим побитовым сравнением их с проверочными битами, считанными из ОЗУ. Результат сравнения - синдром ошибки - участвует в формировании сигналов ошибки, а также является входным для блока вычисления вектора ошибки, который представляет собой неполный дешифратор (п-к) в п - ДШ1 (см. рис. 2.1). Выходом дешифратора ДШ1 является вектор ошибки, маскирующий входные данные с помощью побитового сложения по модулю два в блоке коррекции, исправляя однократную ошибку в кодовом слове. Вектор ошибки также участвует в формировании сигналов ошибки. Выходным словом декодера на рис. 2.1 является исправленное в случае однократной ошибки кодовое слово (bi...b„), SL также сигналы наличия ошибки и неисправимой ошибки.
На рис. 2.1 представлена функциональная схема декодера кода Хсяо (8, 4), где цифра 8 - общее количество информационных и проверочных битов, записываемых в ОЗУ, а 4 - количество информационных битов; а!...а4 - информационные, а5...а8 - проверочные биты. При чтении информационных и проверочных битов (ai...ag) из ОЗУ с помощью схемы вычисления синдрома ошибки осуществляется повторное вычисление проверочных битов с последующим побитовым сравнением их со считанными из ОЗУ. Результат сравнения - синдром ошибки - участвует в формировании сигналов ошибки и является входом для схемы вычисления вектора ошибки, которая представляет собой неполный дешифратор 4 в 8 ДШ1. Выходом дешифратора ДШ1 является вектор ошибки. Он маскирует входные данные с помощью побитового сложения по модулю два в схеме коррекции, исправляя однократную ошибку данных.
При проектировании декодеров в зависимости от предъявляемых требований могут использоваться различные варианты схем блоков коррекции, вычисления вектора ошибки и блока формирования сигналов ошибки, а также различные варианты связей между элементами - синдром ошибки и вектор ошибки.
Далее при оценке аппаратурных затрат будут учитываться только схемы, состоящие из двухвходовых элементов.
Схема вычисления синдрома ошибки представляет собой кодер с дополнительными двухвходовыми элементами ИСКЛ-ИЛИ на выходе для сравнения вычисленных в декодере проверочных битов с считанными из памяти. Количество двухвходовых элементов ИСКЛ или вычисляется по следующей формуле:
Схема блока коррекции декодера Хсяо (п, к) может быть как полной, так и укороченной и состоять из п или из к двухвходовых элементов ИСКЛ-ИЛИ. Полная схема коррекции представлена на рис. 2. Декодер Хсяо (п, к) с укороченной схемой блока коррекции используется в случае, когда нет необходимости передавать на выход декодера проверочные биты, и отличается тем, что его выход будет состоять из четырех битов (Ьі...Ьк). Декодер с укороченной схемой блока коррекции не может применяться в ОЗУ, если необходимо считывание исправленных проверочных битов, например, при использовании каскадного декодирования, отладке кодер-декодера в составе подсистемы памяти или для анализа сбоев в ячейках ОЗУ.
Моделирование и сравнительный анализ кодер-декодеров SEC-DAEC кодов
На основании проверочных матриц кодов для 32- и 64-разрядного информационного слова было проведено моделирование с помощью специально разработанного прикладного ПО CheckMatrix. Также с использованием генетических алгоритмов [63] были получены коды, превосходящие коды Ричтера по количеству правильно детектируемых двукратных несмежных ошибок. На основании проверочных матриц полученных кодов также было проведено моделирование и результаты представлены для анализа.
Был проведен сравнительный анализ среди SEC-DAEC кодов. Анализ проводился по трем критериям: аппаратная избыточность, характеризуемая количеством 2-входовых элементов ИСКЛ-ИЛИ в кодере; быстродействие, характеризуемое максимальным количеством единиц в строке проверочной матрицы; сбоеустойчивость, характеризуемая вероятностью ошибочной коррекции двукратных ошибок. Сравнительные характеристики кодов Дутта, Ричтера и предложенного кода для 32- и 64-разрядных информационных слов представлены в табл. 3.1.
По результатам сравнительного анализа предложенный код обладает наилучшей сбоеустойчивостью (детектирует до 27% больше несмежных двукратных ошибок) при худших характеристиках быстродействия и занимаемой площади на кристалле. Таблица 3.1 Сравнительные характеристики SEC-DAEC кодов
Также среди рассмотренных схемотехнических решений повышения сбоеустойчивости элементов памяти был определен метод дополнительных столбцов [63]. Метод заключается в том, что при проектировании топологии памяти в массив вводятся дополнительные столбцы и мультиплексоры, позволяющие при возникновении многократных сбоев в каком либо столбце заменять его дополнительным. Этот схемотехнический метод можно дополнить алгоритмическим: дополнительные столбцы, пока они не используются для замены, можно использовать для хранения дополнительных проверочных битов кодового слова, внеся соответствующие изменения в кодер и декодер. К таким кодам относятся коды Датта [65] и коды Чоя [66].
Было проведено моделирование кодов Датта, Чоя и предложенного кода. Результаты анализа полученных в ходе моделирования характеристик кодов представлены в табл. 3.2 - для 32-разрядного информационного слова, и в табл. 3.2 - для 64-разрядного информационного слова.
По результатам сравнительного анализа определено, что предложенный код обладает наилучшей сбоеустойчивостью (детектирует до 20% больше несмежных двукратных ошибок) при худших характеристиках быстродействия и занимаемой площади на кристалле.
Для всех вариантов предложенного кода были разработаны и промоделированы RTL-модели на языке описания аппаратуры Verilog. Таблица 3.2. Сравнительные характеристики SEC-DAEC кодов для 32-разрядного информационного слова, использующих дополнительные проверочные биты
Было проведено моделирование различных помехоустойчивых кодов, применяемых для исправления двукратных смежных ошибок в СОЗУ. Также предложен собственный помехоустойчивый код. По результатам сравнительного анализа предложенный код обладает наилучшей сбоеустойчивостью (детектирует до 27% больше несмежных двукратных ошибок) при худших характеристиках быстродействия и занимаемой площади на кристалле. Для всех вариантов предложенного кода, а кодов Датта и Чоя были разработаны и промоделированы RTL-модели на языке описания аппаратуры Verilog. Предложенные коды могут эффективно решать проблему возникновения двукратных смежных ошибок в элементах памяти суб-100 нм микропроцессорных систем.
Моделирование кодер-декодеров, исправляющих двукратные смежные ошибки, на основе проверочных матриц предложенного кода показало что, предложенный код детектирует на 2.. .20% (2% для матриц кода (75, 64) по сравнению с кодом Чоя, 20% для матрицы кода (40, 32) по сравнению с кодам Датта) больше несмежных двукратных ошибок в 32- и 64-разрядных информационных словах по сравнению с аналогами. Это достигается за счет использования при подборе проверочной матрицы более сложных эвристических алгоритмов.
Сравнительный анализ кодер-декодеров на основе проверочных SEC-DAEC кодов проведен по двум параметрам-критериям: 1) задержка преобразования (быстродействие), характеризуемая максимальным количеством единиц в строке проверочной матрицы, и 2) исправляющая способность, характеризуемая вероятностью ошибочной коррекции двукратных ошибок (чем меньше вероятность ошибочной коррекции, тем выше исправляющая способность). При этом аппаратная избыточность, необходимая для реализации каждого из кодер-декодеров, характеризуется в наибольшей степени количеством проверочных битов, что позволяет говорить об идентичности ко дер-декодеров по этому критерию.
Сравнительные характеристики кодер-декодеров Дутта, Ричтера и кода, оптимизированного с помощью генетического алгоритма, полученные для 32- и 64-разрядных информационных слов, приведены на рис. 3.3. На рис. 3.3 приведены диаграммы нормированных задержек прохождения сигналов, характеризуемых максимальным количеством единиц в строке проверочной матрицы (значения по левой оси), полученные в результате моделирования, а также значения вероятности ошибочной коррекции двукратных ошибок упомянутыми декодерами (значения маркеров графика отложены по правой вертикальной оси).
Проведен сравнительный анализ кодер-декодеров на основе проверочных SEC-DAEC кодов. Анализ проводился по двум критериям: быстродействие, характеризуемое максимальным количеством единиц в строке проверочной матрицы и исправляющая способность, характеризуемая вероятностью ошибочной коррекции двукратных ошибок (чем меньше вероятность ошибочной коррекции, тем выше исправляющая способность). При этом аппаратная избыточность, необходимая для реализации каждого из кодер-декодеров, характеризуется (в наибольшей степени) количеством проверочных битов, что позволяет сравнивать идентичность кодер-декодеров по этому критерию.
На основании полученных данных следует, что получение проверочных матриц SEC-DAEC кодов с применением генетических алгоритмов позволяет получить кодер-декодеры, обнаруживающие больше двукратных несмежных ошибок по сравнению с декодерами Дутта. Вероятность ошибочной коррекции двукратных ошибок по сравнению с декодерами Дутта снижается с 53% до 35%, но в сравнении с декодерами Ричтера выигрыш практически незначителен. Это свидетельствует о хорошей эффективности использования на практике как кодов Ричтера, так и полученных с применением генетических алгоритмов.
Поведенческое моделирование подсистемы динамической памяти
Важной проблемой при работе внешней динамической памяти является то, что в процессе хранения данных под действием внешних факторов может происходить накопление ошибок, в результате чего они могут переходить в разряд ошибок высокой кратности и не исправляться средствами помехоустойчивого кодирования. Вероятность появления неисправимой ошибки Рош отложена на рис. 4.9 по оси у . По оси х отложено отношение частоты прохода всей памяти с целью проверки на ошибки Fscrab к частоте возникновения единичных ошибок в секунду FBER.
На рис. 5.1 представлено 4 случая: если встроенный декодер исправляет однократную, двукратную и трёхкратную ошибки в кодовом слове, а также применение тройного модульного резервирования. В системах с низким значением FBER достаточно естественного обновления памяти в результате работы микропроцессорной системы. Однако при снижении проектных норм FBER увеличивается, и введение периодического чтения позволяет повысить сбоеустойчивость подсистемы памяти. Причем независимо от количества ошибок, исправляемых встроенными средствами помехоустойчивого кодирования. Целесообразно применять код с исправлением однократных ошибок, так как прочие требуют больших дополнительных аппаратных затрат и ухудшают временные параметры работы подсистемы памяти, и при этом уменьшить время полного прохода памяти с проверкой на возникшие ошибки.
Разработка устройства регенерации данных в ДОЗУ с элементами помехоустойчивого кодированияС целью борьбы с накоплением ошибок в динамической памяти было внедрено устройство регенерации и защиты от сбоев, функциональная схема которого представлена на рис 5.2. Устройство осуществляет автоматическое периодическое считывание и запись данных в динамической памятиФункциональная схема устройства регенерации и защиты от сбоев Недостатком использования метода перезаписи данных является необходимость дополнительных обращений в память, не связанных напрямую с работой микропроцессорной системы, что сужает полосу пропускания динамической памяти. Устройство регенерации и защиты от сбоев производит считывание с частотой, равной четырёхкратной или восьмикратной частоте регенерации памяти, так как в обычном цикле регенерации обновляются все 4 или 8, в зависимости от организации микросхемы, банка памяти, а в случае обычного обращения - строка в одном банке. Таким образом, отпадает необходимость в отдельных служебных запросах на регенерацию динамической памяти. Следовательно, снижается общее количество служебных запросов, необходимых для функционирования системы динамической памяти с защитой от накопления ошибок.
С целью снижения количества служебных запросов с наивысшим приоритетом в контроллере динамической памяти микропроцессора алгоритм работы и функциональная схема устройства регенерации и защиты от сбоев были модифицированы следующим образом (см. рис. 5.3): 1. При подаче запроса с наивысшим приоритетом на чтение данных из ДОЗУ запрос на обратную запись подается с наинизшим приоритетом, что в случае наличия запросов от прочих устройств приводит к освобождению шины ДОЗУ сразу после подачи команды на чтение. 2. Запись производится с наивысшим приоритетом в том случае, когда ошибка обнаружена и исправлена, но данные не записаны обратно до следующей операции перезаписи. 3. В устройство регенерации и защиты от сбоев добавлен буфер для хранения данных в течение ожидания обратной записи. 4. В устройство регенерации и защиты от сбоев добавлена схема прослушивания адреса, снимающая запрос на обратную запись в случае, если по адресу, ожидающему записи, произведена запись от постороннего устройства. Особенностью разработанного устройства является наличие механизма откладывания записи. Чтение из памяти невозможно отложить, так как при этом снижается частота регенерации. Операцию записи обработанных декодером данных можно отложить, если динамическая память требуется для более приоритетных операций. Запрос в арбитр доступа к памяти на чтение подается с высшим приоритетом, а на запись -с низшим. Во время, пока устройство регенерации и защиты от сбоев ожидает разрешение запроса на запись, осуществляется прослушивание шины адреса. Если по адресу, по которому осуществляется запись, происходит запись от другого устройства, то устройство регенерации и защиты от сбоев сбрасывает свой запрос.
Устройство регенерации и защиты от сбоев было разработано в НИИСИ РАН в рамках работ по повышению сбоеустойчивости микропроцессорных систем и позволяет повысить эффективность разрабатываемых вычислительных систем индустриального и специального применения.
Известен способ периодической перезаписи данных (scrubbing) для борьбы с накоплением ошибок в массиве памяти. Недостатком этого способа является необходимость дополнительных обращений в память, не связанных напрямую с работой микропроцессорной системы. Предложено использовать обращения к памяти для перезаписи данных вместо циклов регенерации оперативной памяти. При этом частота обращений к памяти для перезаписи данных должна равняться частоте обращений регенерации, умноженной на количество банков памяти, и они должны последовательно обращаться ко всем банкам. Таким образом, отпадает необходимость в отдельных служебных запросах на регенерацию динамической памяти, что снижает общее количество служебных запросов, необходимых для функционирования системы динамической памяти с защитой от накопления ошибок.
В динамической памяти существует команда refresh (несколько видов), которая там необходима для функционирования. Так как при scrubbing происходит чтение с последующими исправлением и записью данных обратно в память, то по этому адресу в этом банке происходит автоматическая операция refresh после закрытия строки, с которой проводилась работа. При команде refresh происходит refresh строки во всех банках памяти. Существует метод «слияния» scrubbing с refresh в динамической памяти, заключающийся в том, что обращения scrubbing идут в память с частотой, не меньшей, чем частота refresh х количество банков памяти, при этом команда на чтение-перезапись подается с наивысшим приоритетом, как раньше подавалась команда refresh.