Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей Новиков Алексей Сергеевич

Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей
<
Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей
>

Данный автореферат диссертации должен поступить в библиотеки в ближайшее время
Уведомить о поступлении

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - 240 руб., доставка 1-3 часа, с 10-19 (Московское время), кроме воскресенья

Новиков Алексей Сергеевич. Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей : диссертация ... кандидата технических наук : 05.13.15.- Владивосток, 2002.- 133 с.: ил. РГБ ОД, 61 03-5/2890-4

Содержание к диссертации

Введение

1 Функциональное тестирование памяти 8

2 Маршевый тест для одноразрядной памяти

2.1 Модель неисправностей одноразрядной памяти 23

2.2 Маршевый тест для одноразрядной памяти 24

3 Маршевый тест для многоразрядной памяти 35

3.1 Модель неисправностей многоразрядной памяти 35

3.2 Маршевый тест для многоразрядной памяти 36

4 Программная реализация результатов исследований 44

4.1 Особенности тестирования памяти с учетом кэширования 47

Заключение 57

Список литературы 58

Модель неисправностей одноразрядной памяти

С начала шестидесятых годов начинаются интенсивные исследования, направленные на диагностирование аппаратуры цифровых устройств (ЦУ), а не отдельных его операций. Так появились структурные методы, базирующиеся на различных видах моделей цифровых устройств. Эти методы достигли высокой степени формализации. Наибольшее применение они нашли в производстве и ремонте отдельных блоков ЦУ, а также оказали определенное влияние на методику разработки испытательных программ. Для применения в полном объеме для цифровой вычислительной машины в целом они были достаточно громоздки и трудоемки.

Появление на рынке в больших количествах устройств, построенных на БИС, в том числе микропроцессорах, привело к тому, что старые структурные модели уменьшили свое значение. БИС имеет большое число контактов внутри и ограниченное число внешних выходов. Это стало первой причиной ограничивающей применение структурных моделей. Второй и главной причиной существенного ограничения сферы их применения явилось то, что для широкого пользователя и разработчика аппаратуры структура БИС является "черным ящиком", и единственное, что ему хорошо известно - это система команд (микрокоманд).

Потребовались новые подходы к построению тестов. Естественно, что после того как структурные методы себя исчерпали, развитие пошло по пути формализации в рамках функционального подхода, когда модель объекта строится на основе системы его команд.

Методы, основанные на структурном подходе теряют свою эффективность в применении к микропроцессорам и устройствам на них вследствие непомерно большого числа логических элементов и связей БИС при весьма ограниченном числе их внешних контактов. Кроме того детальная структура БИС бывает редко доступна пользователю или разработчику систем. В промышленности чаще всего используются интуитивные функциональные тесты, осуществляющие выполнение каждой операции ЦПУ на некотором множестве операндов, либо конкретные программы пользователей. Память является важнейшим элементом микропроцессорных систем. Как правило, она представляет собой конструктивно и/или функционально законченный блок, представляющий из себя сочетание собственно матриц памяти и некоторого управления ими. Поэтому целесообразно рассматривать ее при тестировании как единое целое, несмотря на то, что память может охватывать три функции: передачу данных, маршрутизацию данных, хранение данных и управление памятью.

Безусловно, самым важным элементом запоминающих устройств является сама матрица памяти, которая и привлекает наибольшее внимание разработчиков тестов во всем мире. Ниже рассмотрены разнообразные подходы к решению проблемы тестирования памяти, определены проблемы и обоснован выбор модели для дальнейших исследований.

Память является одним из самых дорогостоящих элементов современного компьютера. Требования миниатюризации привели к тому, что на одном кристалле размещаются сотни мегабайтов, а то и больше единиц информации. Разумеется, высокая плотность никак не повышает надежность, поэтому проблема тестирования памяти остается одной из самых актуальных в процессе производства и эксплуатации вычислительных средств. Память как компонент компьютера, достаточно специфична. Размещение ее на кристалле обладает не только высокой плотностью, что повышает вероятность возникновения дефектов, но и высокой регулярностью, что облегчает задачу построения тестов. Тесты для памяти выделяются в отдельный класс, однако простота тестирования памяти только кажущаяся. Такая простота породила большое число интуитивных тестов никак или почти никак не учитывающих специфику памяти как физического объекта. При разработке этих тестов не строилась строгая модель памяти как объекта тестирования и тем более модель дефектов. Построение этих тестов основано в основном на интуитивных предположениях и опыте эксплуатации устройств памяти. В [41] приводится большое число таких тестов. О том, на какие модели неисправностей они ориентированы, остается только предполагать. Вот некоторые из них:

Тест "все нули" ("все единицы"). Во все ячейки ОЗУ производится запись нулей (единиц), после чего производится последовательное считывание и проверка этой информации.

Тест "адресный". В каждую ячейку ОЗУ записывается код собственного адреса, затем производится последовательное считывание и проверка записанной информации. Адресный тест обеспечивает проверку адресных дешифраторов ОЗУ.

Тест "шахматный". В ОЗУ записывается информация, имеющая шахматное распределение нулей и единиц. То есть бит памяти, установленный в единицу, окружен битами, установленными в ноль, и наоборот. При неисправности ячейки памяти, есть большая вероятность "стекания" заряда (либо 1 в 0, либо наоборот). Затем производится последовательное считывание и проверка записанной информации. Шахматный тест используется для проверки взаимовлияния соседних ячеек, содержащих информацию, записанную в обратном коде.

Маршевый тест для одноразрядной памяти

Если кэш-память организована так, что часто необходимые процессору команды и данные уже находятся в ней, то это значительно уменьшает среднее время доступа к памяти. Программы выполняются быстрее, если большинство операций - это передачи в наиболее быструю кэш-память и из нее.

Для увеличения количества кэш-попаданий процессор использует блочную выборку. Кэш-контроллер разбивает основную память на блоки (известные также как длина строки) длиной в 2, 4, 8, 16 и т.д. байт. Размер блока является одним из наиболее важных параметров при проектировании системы с кэш-памятью. Если блок слишком мал, то уменьшается эффективность выборки из основной памяти и процент кэш-попаданий. Слишком большой блок (для определенности ниже будем называть его строкой данных кэш-памяти) уменьшает количество строк, помещающихся в кэш-памяти. При таком подходе требуется более широкая разрядность шины между основной и кэш-памятью, а также больший объем статической и динамической памяти, что приводит к увеличению стоимости.

Эффективная кэш-память должна обеспечивать большой процент кэш-попаданий, иначе вообще теряется смысл в ее использовании, ведь общее ускорение системы "процессор-память" и достигается за счет того, что процессор большую часть времени оперирует с быстрой кэшпамятью и обращается к медленно действующей основной памяти лишь, когда информация не находится в кэш-памяти.

Кэш-память является аппаратно прозрачной и процессор может вообще не иметь прямого доступа к ее функционированию. Всей работой кэшпамяти управляет контроллер кэш-памяти. Контроллер «перехватывает» обращения к памяти и отрабатывает их непосредственно сам без передачи запросов шине. В результате снижается трафик шины и ускоряется доступ к памяти.

Размеры кэша второго уровня могут варьировать в широких пределах : от 64 Кбайт до 512 Кбайт, а в новейших системах, возможно, и более.

Программа "не знает" ничего про использование в системе кэш-памяти. Она прекрасно бы работала и при отсутствии в системе кэш-памяти вообще, разве что немного медленнее. Вся забота о правильном функционировании кэш ложится на аппаратное обеспечение, в частности на контроллер кэш-памяти. Таким образом, оперируя с основной памятью, мы неявным образом изменяем содержимое кэш-памяти.

Итак, средства программной поддержки подсистемы кэша должны сохранять прозрачность основного программного обеспечения, чтобы гарантировалась его совместимость с существующим программным продуктом и не появлялось препятствий для возможных дальнейших усовершенствований.

Вопросы взаимосвязи размера кэша, организации его обслуживания и производительности системы интенсивно обсуждаются специалистами. Однако ясно, что структура кэша целиком зависит от класса программ, которые в основном будут исполняться системой, поэтому кэш следует настраивать по трассам адресов наиболее часто используемых прикладных программ. Как правило кэш-память большего объема предпочтительнее кэша меньшего объема, поскольку дает лучший коэффициент удачных обращений и производительность. Независимо от типа кэша в системе должен быть обеспечен быстрый доступ к часто используемым данным и кодам программ, как при работе системы с быстродействующим статическим ОЗУ. Вообще в персональном компьютере память представлена иерархией средств: кэш первого уровня (встроенный в процессор), кэш второго уровня, оперативное запоминающее устройство (ОЗУ), винчестер (дисковый накопитель) и др. Таким образом процессор оперирует с основной памятью посредством кэшей первого и второго уровней.

Стоит задача тестирования кэш-памяти первого и второго уровней и основной памяти, причем желательно выявить тип неисправности и указать, где обнаружена неисправность. То есть надо как-то отличать ошибки кэша первого уровня [75] от ошибок кэша второго уровня и от таковых в ОЗУ.

К примеру, внутренний кэш МП Intel486 построен по Принстонской (смешанной) архитектуре кэш-памяти (см. Приложение , она используется как для чтения команд так и для переноса данных. Это ассоциативная по множеству кэш-память, работающая по методу сквозной записи. Обращение к кэш-памяти и к внешней памяти происходит по физическим адресам, которые являются результатом преобразования логических адресов блоком управления памятью -MMU, поддерживающим страничную организацию памяти, а также представление памяти как системы сегментов и блоков. Причем программа "не знает" про кэш, а считает, что обращение было произведено непосредственно к основной памяти.

Маршевый тест для многоразрядной памяти

Работая с кэш-памятью, необходимо помнить, что одновременно будут существовать две копии одних и тех же данных: одна в кэшпамяти, а другая в основной памяти. Ведь кэш-память является аппаратно прозрачной и процессор может вообще не иметь прямого доступа к ее функционированию. Всей работой кэш-памяти управляет контроллер кэш-памяти. Если изменяется только одна из копий, то по одному и тому же адресу будут существовать два различных набора информации. Если не применять специальных методов управления, то может нарушиться целостность хранимых данных. Кэш-память должна содержать систему обновления для предотвращения использования устаревших данных в качестве достоверных. Для согласования содержимого кэш-памяти с основной памятью используются три общих метода: сквозная запись, буферизованная сквозная запись и обратная запись. Эти методы гарантируют, что любое обращение к данным закончится возвратом в главную память нового текущего значения данных. Рассмотрим их..

При обновлении кэш-памяти методом сквозной записи контроллер кэш-памяти одновременно обновляет содержимое основной памяти. Иначе говоря, основная память отражает текущее содержимое кэшпамяти. Быстрое обновление позволяет перезаписывать любой блок в кэш-памяти в любое время без потери данных. Система со сквозной записью проста, но время, требуемое для записи в основную память, снижает производительность и увеличивает количество обращений по шине (что особенно заметно с мультизадачной системе). Выигрыш от кэширования в этом случае имеет место лишь при операциях чтения, при условии кэш-попадания. Тогда процессор не входит в режим ожидания, а сразу получает необходимые данные. При записи нового значения в память выигрыша во времени не происходит, поскольку время, требуемое на запись нового значения в память определяется количеством времени, нужным для записи нового значения в медленную основную память. При записи процессор вынужден простаивать, что весьма сказывается на производительности вычислительной системы в целом.

С схеме обновления с буферизованной сквозной записью любая запись в основною память буферизуется, то есть информация задерживается в кэш-памяти перед записью в основную память (схемы кэш-памяти управляют доступом к основной памяти асинхронно по отношению к работе процессора). Для процессора в этом случае операция записи заканчивается фактически мгновенно, поскольку кэшпамять может работать на скоростях, соотносимых со скоростью процессора. Затем процессор начинает новый цикл, не дожидаясь завершения цикла записи в основную память. Если за записью следует чтение данных, находящихся в кэш-памяти (кэш-попадание), то чтение может быть выполнено в то время, когда контроллер кэш-памяти занят обновлением основной памяти. Эта буферизация позволяет избежать снижения производительности, характерного для системы со сквозной записью.

У этого метода есть один существенный недостаток. Так как обычно буферизуется только одиночная запись, то две последовательные записи в основную память требуют цикла ожидания процессора (пока не освободится буфер, содержащий в этот момент предыдущую запись). Скорость очистки буфера записи определяется количеством времени, нужным для записи нового значения в медленную основную память Кроме этого, если после операции записи сразу следует чтение, и возникает ситуация кэш-промаха, процессор вынужден перейти в состояние ожидания, поскольку обмен данными кэш-памяти с основной памятью осуществляется через системную шину, а она в этот момент занята для выполнения записи в основную память. Состояние ожидания - это внутреннее состояние, в которое входит процессор при отсутствии синхронизирующих сигналов. Состояние ожидания используется для синхронизации процессора с медленной памятью.

В схеме обновления с обратной записью используется бит "изменения" в поле тэга. Этот бит устанавливается, если блок был обновлен новыми данными и является более поздним, чем его оригинальная копия в основной памяти. Перед тем как записать блок из основной памяти в кэш-память, контроллер проверяет состояние этого бита. Если он установлен, то контроллер переписывает данный блок в основную память перед загрузкой новых данных в кэшпамять.

Обратная запись быстрее сквозной, так как обычно число случаев, когда блок изменяется и должен быть переписан в основную память, меньше числа случаев, когда эти блоки считываются и перезаписываются. Например, если в кэш-памяти записана переменная, которая многократно должна быть изменена в ходе выполнения программы, тогда все ее изменения (даже, если операции записи в нее следуют последовательно одна за другой) для процессора будут выполняться мгновенно, поскольку изменяться будет лишь копия, находящаяся в кэш-памяти, а в основной памяти значение остается неизменным. Значение в основной памяти будет изменено только, если на данную строку кэш-памяти претендует другая строка данных из основной памяти (происходит вытеснение). В то время, как при сквозной записи, процессор бы каждый раз ожидал окончания изменения данных в основной памяти.

Однако обратная запись имеет несколько недостатков. Во-первых, все измененные блоки должны быть переписаны в основную память перед тем, как другое устройство сможет получить к ним доступ, иначе, обращение произойдет к недостоверным данным. Во-вторых, в случае катастрофического отказа, например, отключения питания, когда содержимое кэш-памяти теряется, но содержимое основной памяти сохраняется, нельзя определить, какие места в основной памяти содержат устаревшие данные, это может привести к краху системы. Наконец, контроллер кэш-памяти для обратной записи содержит больше (и более сложных) логических микросхем, чем контроллер для сквозной записи. Например, когда система с обратной записью осуществляет запись измененного блока в память, то она формирует адрес записи из тэга и выполняет цикл обратной записи точно так же, как и вновь запрашиваемый доступ.

Особенности тестирования памяти с учетом кэширования

При обнаружении несоответствия между записанной в память информации и считанной по тому же адресу, возникает подозрение на неисправность кэш или ОЗУ. Проверять достаточно до возникновения первой ошибки. Для уточнения источника ошибки, ничто не мешает нам спроецировать кэш на другую область ОЗУ и повторить операцию чтения/записи, предварительно запомнив номер блока кэш, которому соответствовала обнаруженная ошибка. Если при повторном тестировании не возникло ошибок, либо обнаруженная ошибка соответствовала блоку кэш с другим номером, можно с большой вероятностью утверждать, что произошла ошибка ОЗУ, и указать номер мегабайта, который неисправен. Если же и во второй раз произошла ошибка, соответствующая тому же блоку, то для большей уверенности можно проверить и в третий раз, и уж тогда со всей определенностью утверждать, что кэш второго уровня машины неисправен.

Как видно в теории все просто, но на практике при выполнении тестирующей программы, блоки основной памяти, содержащие коды команд, также проецируются в кэш. То есть, если решать задачу теста "в лоб", нельзя утверждать, что в тестируемом блоке в данный момент находится тестовая последовательность. Этот блок кэш в данный момент может быть занят кодами исполнительного модуля. И тогда, запись будет производиться прямо в основную память, минуя кэш, что нас, конечно, не устраивает. Для того, чтобы данные находились в кэш памяти, они должны быть считаны.

На самом деле, данной проблемы можно избежать, если тестировать кэш в несколько этапов. Для этого важно знать точное местоположение в памяти (адреса от начала и до завершения) самого тестирующего блока (его размер не должен превышать третьей части кэш памяти второго уровня). В этом цикле команд будут тестироваться лишь те блоки кэш-памяти, на которые не претендуют командные коды тестирующего цикла.

Затем коды команд должны быть перенесены в памяти на другое место (по примеру самомодифицирующихся программ). Теперь можно проверить связи между ячейками памяти, которые ранее были заняты кодами команд (назовем их начально занятыми) и частью ячеек, в данный момент ими не занятыми. После этого опять коды команд должны быть перенесены на новое место, чтобы можно было проверить связи между начально занятыми и вторично занятыми (но ныне уже свободными от кодов команд) ячейками памяти.

Когда тестирование кэшей завершено, ничто не мешает нам проверить исправность всей (кроме части первого мегабайта) основной памяти, находящейся в системе. При этом, любая ошибка однозначно указывает на неисправность ОЗУ. Можно указать мегабайт памяти, где найдена неисправность. Следует особо отметить, что эту самую часть первого мегабайта мы уже проверили при проверке кэш памяти второго уровня. А связи ячеек этой области памяти с другими ячейками всей оставшейся памяти можно проверить, аналогично тому, как мы это сделали для кэша второго уровня, и в этом научная новизна подхода, поскольку подобного решения проблемы тестирования при наличии кодов программы в тестируемой памяти при анализе существующей литературы мной встречено не было. Все вышесказанное не относится к памяти, организованной по принципу обратной записи (см. Приложение 1.). В приложении 4 приводится текст тестирующей программы. Сама программа располагается на загрузочной дискете в виде двух модулей -загрузчика и тестера, при рестарте начинается процесс тестирования, результаты выдаются на монитор. После окончания тестирования продолжения загрузки не производится, необходим перезапуск. Тестирование проходит в течение нескольких секунд, сначала программа определяет объем оперативной памяти, установленной на компьютере, затем производится часть теста, предназначенная для поиска неисправностей сцепления между битами внутри ячеек памяти, затем - часть теста, для поиска неисправностей оставшихся типов, согласно модели неисправностей для многоразрядной памяти, при этом на мониторе отображается текущий маршевый элемент, в настоящее время работающий на памяти. Конечно, в идеале нужно производить тестирование отдельным аппаратным блоком, чтоб не мучиться с расположением самой тестирующей программы в памяти, а также наличием некоторых областей, недоступных для записи, но это -перспективы.

Похожие диссертации на Методы и алгоритмы тестирования памяти ЭВМ с обнаружением кратных функциональных неисправностей