Доклады БГУИР
2010 № 1 (47)
УДК 681.326.7
АНАЛИЗ ИТЕРАТИВНОГО АЛГОРИТМА НЕРАЗРУШАЮЩЕГО ТЕСТИРОВАНИЯ ОЗУ
А.А. ИВАНЮК, С Б. МУСИН
Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь
Поступила в редакцию 3 ноября 2008
На каждой итерации исследуемого алгоритма неразрушающего тестирования оперативных запоминающих устройств (ОЗУ) инвертируются ячейки с адресами, выделенными по маске, которая формируется исходя из номера итерации алгоритма. Для сжатия тестовых реакций используется метод адаптивного сигнатурного анализа. В качестве целевых неисправностей определены многократные константные неисправности ОЗУ. Показано, что обнаруживающая способность повышается с увеличением итераций алгоритма. Определена формула вычисления верхней границы обнаруживающей способности и предельного количества итераций.
Ключевые слова: ОЗУ, неразрушающее тестирование, адаптивный сигнатурный анализ.
Введение
Для своевременного выявления неисправностей и сбоев при эксплуатации устройств критических приложений, где требования надежности и времени функционирования чрезвычайно высоки, используются методы контроля и неразрушающего тестирования ОЗУ. Методы контроля основаны на применении достаточно разработанной к настоящему времени теории помехоустойчивых кодов. При их использовании уменьшается полезная емкость устройства вследствие необходимости хранения проверочных разрядов. Кроме того, специфика работы ОЗУ требует быстрого и параллельного кодирования и декодирования информации. Процедуры контроля оказывают негативное влияние на временные параметры операций чтения и записи данных, поэтому на практике используются схемы кодирования и декодирования простых кодов: проверка на четность и код Хемминга. Таким образом, корректируются однократные ошибки, обнаруживаются ошибки 1-2 и нечетной кратности.
Методы неразрушающего тестирования основаны на алгоритмах генерации тестовых воздействий (маршевые алгоритмы тестирования) и анализа реакций ОЗУ (сигнатурный анализ). Маршевые алгоритмы имеют линейную сложность и позволяют выявлять многообразные целевые неисправности ОЗУ. Сигнатурный анализ (СА) строится на базе циклического кода и, в свою очередь, позволяет избежать сравнения с эталоном большого количества тестовых реакций путем их сжатия с определенной степенью достоверности в компактную оценку — сигнатуру. Применение СА для оперативного контроля ОЗУ существенно снижает производительность, так как необходимо повторное вычисление сигнатуры при каждом изменении хранимых данных.
В последнее время в научной литературе активно обсуждается проблема обнаружения многократных ошибок ОЗУ [1-6]. Дело в том, что уменьшение размеров запоминающих элементов, увеличение их плотности упаковки на кристалле и уменьшение напряжения питания является движущей силой полупроводниковой промышленности, платой за которую является снижение надежности устройства [4]. Снижение уровня критического заряда вызывает высо-
кую вероятность появления нерегулярных ошибок ОЗУ. Приведенные в [4, 5] результаты исследований показали, что кратность таких ошибок может быть четной и они не могут быть обнаружены.
Эффективность контроля при наличии нерегулярных ошибок может быть обеспечена путем использования композиционных кодов, а также кодов Рида-Маллера [1, 2].
Исследования, проведенные в работах [6, 7], показали, что эффективность тестирования может быть улучшена за счет многократного применения маршевых тестов. Улучшение обнаруживающей способности достигается за счет изменения содержимого ОЗУ в процессе его функционирования по назначению. Следует отметить, что, как показывают экспериментальные данные, полученные в рамках работы [8], даже при существенной нагрузке на систему, имеются блоки памяти, которые не подвержены существенным изменениям.
В настоящее время наблюдается также тенденция объединения методов тестирования и контроля. Так, в работах [9, 10] предлагается совместно использовать неразрушающие маршевые тесты ОЗУ и встроенную схему помехоустойчивого кодирования.
В [11] для контроля и тестирования используется метод адаптивного сигнатурного анализа (АСА). Развитием этого подхода стала работа [12], в которой предлагается использовать метод АСА для обнаружения неисправностей, проявление которых обеспечивает периодическое инвертирование содержимого ОЗУ. Экспериментальным путем было установлено, что для увеличения покрывающей способности теста при многократном его применении на каждой итерации следует инвертировать не все ячейки памяти. Инвертируются те ячейки, в двоичном представлении адреса которых бит, соответствующий номеру итерации, установлен в единицу. В данной статье проводится детальный анализ этого алгоритма с применением методики, предложенной в [13].
Алгоритм
Шаг 1: ОЗУ функционирует по назначению. При осуществлении операции записи данных производится сравнение предыдущего (хранимого) значения ячейки ОЗУ с новым (записываемым) значением. В случае неравенства этих значений выполняется адаптация эталонной сигнатуры ОЗУ.
Шаг 2: При необходимости тестирования хранимых данных функционирование ОЗУ приостанавливается.
Шаг 3: Осуществляется расчет рабочей сигнатуры с инвертированием содержимого памяти в соответствии со значением маски. Изначально инвертируются все ячейки памяти. На следующих итерациях значение маски увеличивается на единицу. Таким образом, будут инвертироваться ячейки с адресом, в двоичном представлении которого установлены в единицу биты соответствующие двоичному представлению номера итерации.
Шаг 4: Рабочая сигнатура сравнивается с эталонной. Результат сравнения определяет наличие либо отсутствие неисправностей в ОЗУ.
Шаг 5: Если нет необходимости в прерывании тестирования, перейти к 3. В противном случае ОЗУ переводится в режим функционирования по назначению, переход к 1.
Восстановление исходных (не инвертированных) значений хранимых данных не производится, так как они могут быть адаптированы при чтении в соответствии со значением маски. Таким образом, выполнение алгоритма может быть продолжено с той итерации, на которой было произведено прерывание.
Формализация
В качестве основного принимаем сформулированный нами в статье [13] постулат, согласно которому адресное пространство ОЗУ представляет собой проверочную матрицу кода Хемминга. В отличие от классического представления, где хранимые в ОЗУ данные считаются сообщением, которое передается по каналу связи, в нашей модели хранимые данные рассматриваются в качестве кодового слова линейного кода.
Принимаем, что изначально содержимое ОЗУ является корректным кодовым словом. Запись информации в ОЗУ будем рассматривать как санкционированное изменение первона-
чального кодового слова, поэтому данная операция сопровождается соответствующим изменением сигнатуры (синдрома кодового слова линейного кода). Для вычисления сигнатуры достаточно использовать адрес ячейки памяти, так как он эквивалентен соответствующему столбцу проверочной матрицы кода Хемминга (за исключением нулевого адреса) [14]. Вследствие необходимости учета данных и по нулевому адресу будем использовать проверочную матрицу расширенного кода Хемминга.
Представим набор данных, хранимых ОЗУ, как двоичный вектор-столбец v. Сжатие вектора v осуществляется с использованием проверочной матрицы H. Сигнатурой s вектора v будем называть двоичный вектор-столбец, полученный следующим образом: s=Hv.
Пусть ОЗУ v содержит 2т ячеек памяти (т — разрядность шины адреса), Тогда vaev — значение, хранящееся в ячейке по адресу а. Адаптация эталонной сигнатуры sre/ является последовательным вычислением произведения Hv, причем вместо столбцов матрицы расширенного кода Хемминга используется двоичное представление адреса, дополненное ведущей "1": sre/^sre/@(l а).
При тестировании аналогичным образом вычисляется рабочая сигнатура stest, но предварительно к данным применяется тест — инвертирование в соответствии со значением маски mask.
На основании изложенного формализуем, приведенный в предыдущем разделе, алгоритм неразрушающего тестирования ОЗУ.
Инициализация: mask <— О, S геу <-0. Шаг 1: если v^ • va", то Sre/ Sref © (1 а). Шаг 2\ п <— 0, <- 0. Шаг 3: пока п < 2™ повторять
если (п & mask) © mask = 0, то vn <— vn, stest <— © (1 a). n<^n +1.
Шаг 4\ если Srey Ф Stest, то обнаружена неисправность. Шаг 5: если не продолжать тестирование, то переход на шаг 1. mask <— mask +1. если mask = 2m, то mask <— 0. переход на шаг 3.
Пусть вектор столбец umask содержит единичные значения для компонент, координат соответствующих маске mask, и нулевые для остальных компонент. Тогда, можно записать, что S(ev( = H(v + unMv/.). На первой итерации выполнения алгоритма инвертируются все ячейки памяти. Но далее только те ячейки, адреса которых соответствуют номеру итерации алгоритма: инвертируются ячейки, младший бит адреса которых установлен в единицу (1i0=12), далее второй бит адреса (210=102), затем оба бита (310=112) и т.д. Так как маски последовательно выбираются из столбцов матрицы H (последовательность двоичных чисел), вектор umask является кодовым словом кода Хемминга и, следовательно, Humask=0. Поэтому, если ОЗУ не содержит неисправностей, изменение данных в соответствии с umask не оказывает влияние на сигнатуру,
stoi = Н v + umask = Hv + Ниmask = Hv + 0 В противном случае umask позволяет проявить неисправности. Для увеличения кратности проявляемых неисправностей значение маски изменяется от итерации к итерации, stesffl=H(v+U0), stest1=H(v+U1), stest2=H(v+U2), stest3=H(v+U3) и т.д. Объединив полученные на каждой итерации сигнатуры в один вектор stests, получим
sie,i, = ^ioWWW-- =[н v + u0 Н v + Uj н v + u2 Н v + u3 ...] = Hv + Hu0 Hv + Huj Hv + Hu2 Hv + Hu3 ... = H v v v v ... + u0 Uj u2 u3 ... .
Введем обозначение и=[и0 и1 и2 и3 ...]. Матрица тестовых воздействий и позволяет оценить кратность целевых неисправностей, поэтому в следующем разделе проводится ее детальный анализ.
Анализ
Пусть е — вектор неисправностей ОЗУ. Если ОЗУ содержит в неисправностей, то и^(е)=е, где и — (е) — вес вектора е. Определим критерий маскирования неисправностей е как $/ел,-$«,/Л=0. при И'(е)^0. Тогда
Н V V V V ... + е е е е ... +и -Н V V V V ... =0 => Н е е е е ... +и =0 > II е е е е ... =111
Следовательно, неисправности [е е е е ... ] будут проявлены в результате тестовых воздействий и при условии линейной независимости 8 столбцов матрицы и, т.е. минимальное расстояние линейного кода с проверочной матрицей и превышает количество неисправностей.
Рассмотрим гипотетическое ОЗУ, которое содержит 8 ячеек памяти, т=3. Тогда матрица тестовых воздействий будет иметь следующий вид:
11= 11п
и,
и.
и,
и.
и.
и.
и, =
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
1 1 1 1 0 0 0 0
1 0 0 0 1 0 0 0
1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0
1 1 1 1 1 1 1 1
Заметим, что и3 = и1 и2, и5=и1и4, и6=и2 и4, и7=и1и2 и4. Перегруппировав столбцы, получили, что транспонированная матрица тестовых воздействий и7 совпадает с порождающей матрицей кода Рида-Маллера третьего порядка, г=3 и^Сявд [14].
Таким образом, матрица и является проверочной матрицей кода дуального коду Рида-Маллера (3,3). Минимальное расстояние такого кода определяется по формуле
й* =2
_ г\т—{т—г— 1) _ /~)Г+1 _
= 2™ =16.
Как видим, в проведении всех итераций алгоритма тестирования нет необходимости. Так как имеется всего 8 ячеек, а обнаруживаются неисправности до 16 кратности, для полного тестирования достаточно проведения лишь 4 шагов.
В общем случае при увеличении количества итераций теста происходит добавление новых столбцов в матрицу тестирования и. Общее количество шагов теста определяется количеством строк матрицы и и вычисляется следующим образом:
к = 1 + 1Х-
¿=1
С ростом количества итераций растет порядок дуального кода Рида-Маллера г и соответственно количество обнаруживаемых неисправностей. Верхняя граница диапазона изменения г равна т—1, она определяется исходя из величины С™ '. При этом обнаруживаются все
2 т-1+1 ът =2 .
В случае максимального количества итераций т-1, обнаруживаются все неисправности
2 т
.
Например, для обнаружения неисправностей до 16 кратности в 16 ячейках памяти достаточно 7 итераций теста, при этом матрица тестовых воздействий будет иметь следующий вид:
U =
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
Заключение
Проведенный в статье анализ и математическая формализация итеративного алгоритма неразрушающего тестирования ОЗУ показал, что количество обнаруживаемых неисправностей растет с увеличением количества итераций алгоритма. Причем предельной величиной количества итераций будет значение т-1, где 2т — количество ячеек ОЗУ. Для вычисления количества обнаруживаемых неисправностей следует использовать формулу определения минимального расстояния дуального кода Рида-Маллера.
Для дальнейших исследований алгоритма определены следующие направления: типы и адреса и взаимное расположение неисправностей с учетом отображения физического адреса ячейки на адрес блока, строки и столбца, а также характер изменений содержимого ОЗУ при функционировании по назначению.
ESTIMATION OF ITERATIVE ALGORITHM FOR TRANSPARENT RAM TESTING
A.A. IVANIUK, SB. MUSIN
Литература
1. Argyrides С., Himona S. L., Pradhan D.K. // Proc. of Computing Frontiers. Italy, 2008. P. 353-358.
2. Argyrides C., Zarandi H.R., Pradhan D.K. // IEEE Int. Sym. on Circuits and Systems. USA, 2007. P. 356-358.
3. AlzahraniF., Chen T. // Proc. of the 1994 IEEE Int. Conf. on Computer Design: VLSI in Computer & Processors. 1994. P. 132-137.
4. DennardB. // IEEE Design & Test of Computers. 2008. Vol. 25. P.188-191.
5. LiX., HuangM.C., Shen K., Chu L. // Proc. of the 3rd Workshop on Hot Topics in System Dependability. 2007. P. 13-19.
6. MrozekI., Yarmolik V.N. // Proc. 6th Int. Conf. Computer Information Systems and Industrial Management Applications. Poland, 2003. P. 180-187.
7. Yarmolik S.V., Kurbatskii A.N., Yarmolik V.N. // Automatic Control and Computer Sciences. 2008. Vol. 42. P. 120-125.
8. Solomon J.M., Huebner E., Bem D., Szezynska M. // The Int. Journal of Digital Forensics & Incident Response. 2007. Vol. 4. P. 68-72.
9. Thaller K., Steininger A. // IEEE Transactions on Reliability. 2003. Vol 52, P. 413-422.
10. Li J.-F. Transparent-test methodologies for random access memories with/without ECC.
11. Yarmolik V.N., Ivaniuk A.A., KripsM. 5th Int. Workshop IEEE DDECS. Czech Rep., 2002. P. 360-365.
12. Yarmolik V.N., Ivaniuk A.A., Petronenko D.S. // Proc. Of Conf. on Mixed Design of Integrated Circuits and Systems. Poland, 2003. P. 360-363.
13. ИванюкА.А., Мусин С.Б., ЯрмоликВ.Н. // Микроэлектроника. 2007. № 3. С. 246-253.
14. Блэйхут, Р. Теория и практика кодов, контролирующих ошибки. М., 1986.