09/09/94 03:59pm
tst_mem.lek
Ю.М.Смирнов серия "Перспективы
развития вычислительной
техники" книга 7
"Полупроводниковые запоминающие
устройства" М "Высшая школа"
1989
Тестирование памяти.
К вопросу
контроля работоспособности ОЗУ
можно подходить с аппаратной и
программной точек зрения. При
аппаратном контроле основным
параметром является соответствие
временных характеристик сигналов
эталонам; такой контроль
осуществляется при изготовлении
модулей памяти и у конечного
пользователя не производится.
Другим вариантом аппаратного
контроля является контроль
считанной информации по ПАРИТЕТУ.
Аппаратный контроль требует
значительных затрат оборудования.
Далее будут рассмотрены некоторые вопросы организации программного контроля работоспособности ОЗУ. Такие тесты поводит BIOS перед загрузкой ОС с целью определения количества доступной памяти и для поиска неисправной микросхемы.
Работоспособность БИС ОЗУ и блоков памяти определяется посредством контроля статических и динамических параметров при помощи АЛГОРИТМИЧЕСКИХ ФУНКЦИОНАЛЬНЫХ ТЕСТОВ (АФТ). АФТ содержат последовательность элементарных тестов, изменяемых по некоторому алгоритму. Заключение о правильности функционирования делают либо по результатам выполнения очередного элементарного теста (останов по ошибке с индикацией места и характера неисправности - задача диагностики), либо по конечному результату выполнения полного теста (при отсутствии неисправностей); кроме этого при тестировании решается задача РЕВИЗИИ - определения количества доступной памяти.
Требования к АФТ:
Полнота контроля и достоверность результатов.
Ограниченность по времени.
Для полного контроля необходимо перебрать все 2**(N*K) возможных состояния (тестовых комбинаций) ОЗУ, где N - число адресов (слов) K - длина слова памяти; при этом после каждой операции записи необходимо производить считывание всех ячеек памяти (проверка на отсутствие "слипания адресов").
Реальные тесты разделены на группы по числу циклов обращения к тестируемому ОЗУ, выраженному через его информационную емкость N слов:
Линейные алгоритмы (тип N) используются для предварительного контроля на отсутствие катастрофических неисправностей.
Квадратичные алгоритмы (тип N**2) пригодны для контроля функционирования ОЗУ всех типов и обнаруживают статические и динамические отказы.
Промежуточные (тип N**(3/2)) являются компромиссом между длительностью и достоверностью и используются для контроля ОЗУ большей емкости.
Специальные - используются для контроля времени регенерации динамического ОЗУ и позволяют фиксировать паузы между циклами обращения к памяти.
ЗАМЕЧАНИЕ: При проектировании теста необходимо учитывать физическую структуру запоминающего массива микросхем ОЗУ. Выбор запоминающей ячейки современной БИС происходит последовательно: МИКРОСХЕМА -> МАССИВ -> СТРОКА -> СТОЛБЕЦ, что делает результат тестирования зависимым от порядка перебора адресов.
Алгоритмы некоторых тестов (алгоритмы приведены для слова длиной 1 бит; язык - аналог Паскаля):
1 "МАРШ" (длительность 10N):
{тест проводится для всех возможных исходных значений}
for t:=0 to 1 do
begin
{запись фонового значения "t" во все ячейки памяти}
for a:=0 to n-1 do mem(a):= t
{контроль и изменение значения}
for a:=0 to n-1 do
if mem(a) = t
then mem(a):=^t
else ERROR
{повторное сканирование}
for a:=0 to n-1 do
if mem(a) = ^t
then mem(a):=t
else ERROR
end
2 "ГАЛОП" (длительность 2(3N**2+3N) ):
{тест проводится для всех возможных исходных значений}
for t:=0 to 1 do
{тест проводится для всех контрольных адресов}
for i:=0 to n-1 do
begin
{запись в контрольную ячейку}
mem(i):=^t
{запись фона в остальные ячейки}
for a:=0 to n-1 do
if a <> i then mem(a):=t
{контроль - три считывания!}
for a:=0 to n-1 do
if a <> i then
if (mem(a) <> t) or (mem(i) <> ^t) or (mem(a) <> t)
then ERROR
end
3 "БЕГУЩИЙ СТОЛБЕЦ" (длительность 2(N**(3/2)+3N) ):
{тест проводится для всех возможных исходных значений}
for t:=0 to 1 do
{тест проводится для всех пересечений столбец - строка}
for r:=0 to x-1 do {количество столбцов}
begin
{заполнение массива}
for i:=0 to x-1 do
for j:=0 to y-1 do {количество строк}
if i = r
then mem(i,j):=^t {заполнение столбца}
else mem(i,j):=t {фон}
{контроль}
for i:=0 to x-1 do
for j:=0 to y-1 do
if (mem(i,j) <> ^t) and (i = r) or
(mem(i,J) <> t) and (i <> r)
then ERROR
end
При тестировании памяти с длиной слова K-бит тест должен быть выполнен 2*K раз (отдельно для каждого бита, при остальных равных последовательно "0" и "1" ).
На практике достаточно часто применяется упрощенный алгоритм (2N), смысл которого заключается в записи в каждое слово памяти его адреса. Записываемое значение незначительно модифицируется для чередования четных и нечетных кодов. Последуюшее чтение тестируемого массива позволяет оценить работоспособность памяти и определить ошибочный бит. Этот тест обнаруживает и ошибки дешифрации.
Дле реализации специального теста используют контроллер прамого доступа к памяти, генератор сигналов и схему контроля по паритету. Процессор настраивает перечисленные устройства и отключается. Выводы делаются по окончании циклов ПДП или при возникновении ошибки нарушения паритета.