Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33_Metodicheskie_ukazania_po_laboratornym_rabot...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
706.56 Кб
Скачать

Сущность тестирования памяти.

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

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

  1. Записать некоторое значение в ячейку памяти.

  2. Записать в соседние ячейки один либо более раз некоторое значение.

  3. Проверить не изменилось ли значение хранимое в первой ячейке.

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

Алгоритм диагностирования памяти в тесте Memtest86.

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

  1. Заполнить память согласно шаблону.

  2. Начать с наименьшего адреса.

    1. Проверить на совпадение с шаблоном.

    2. Записать изменение шаблона.

    3. Увеличить значение адреса.

Повторить 2a - 2c

  1. Начать с наибольшего адреса.

    1. Проверить на совпадение шаблон.

    2. Записать изменение шаблона.

    3. Увеличить значение адреса.

Повторить 3a - 3c

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

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

Описание возможных тестов памяти(на основе программы MemTest86).

Для поиска ошибок в этом пакете используется несколько тестов. В каждом из которых используется комбинация алгоритма тестирования, шаблона данных и кэширования. Опишем подробнее каждый из тестов:

Test 0 [Тест адресов, один проход, без кэширования]

Тестирование всех адресных битов во всех банках памяти с использованием одного прохода и одним набором шаблона данных.

Test 1 [Тест адресов, проверка собственных адресов]

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

Test 2 [Инверсионное перемещение, один проход и запись нулями]

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

Test 3 [Инверсионное перемещение, 8 bit шаблон]

Работа этого теста схожа с работой теста 1, но используется 8-и битовый шаблон для одиночного прохода (Шаблон состоит из нулей). Этот тест лучше выявляет слабо уловимые ошибки в “больших” чипах памяти.

Test 4 [Инверсионное перемещение, случайный шаблон]

Этот тест так же использует алгоритм схожий с алгоритмом теста 1, но данные из шаблона – случайные числи и их дополнения. Этот тест позволяет определить трудные в выявлении и обнаружении ошибки. Всего используется 60 шаблонов. Случайные числа из шаблона различаются от прохода к проходу, что улучшает эффективность теста.

Test 5 [Перемещение блока, 64 перемещения]

Это стрессовый тест памяти использующий перемещение блока данных с использованием команды movsl и основан на алгоритме Роберта Редельмейера (Robert Redelmeier's burnBX test). Память инициализируется сдвигаемым шаблоном, который инвертируется каждые 8 байт. Затем 4MB блок памяти перемещается используя инструкцию movsl. Псле перемещение данные проверяются. Ввиду того, что данные проверяются только после перемещения невозможно определить где произошла ошибка. И выдается адрес, где было обнаружено несовпадение шаблона.

Test 6 [Инверсионное перемещение, 32 bit шаблона]

Это вариант инверсионного перемещения, который сдвигает данные в лево на один бит на каждый значимый адрес. Начальное расположение битов сдвигается влево при каждом проходе. Таким образом для использования всех возможных шаблонов необходимо сделать 32 прохода. Тесть эффективен для полного выявления ошибок, но время его выполнения весьма высоко.

Test 7 [Modulo 20, один проход с нулями]

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

Test 8 [Тест исчезновения битов, 90 min, 2 шаблона]

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

Test 8 [Тест случайной записью]

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

Варианты лабораторных работ (по номеру в журнале):

Варианта

Задание

1,6,11

Тест адресов, проверка собственных адресов

2,7,12

Инверсионное перемещение, один проход и запись нулями

3,8,13

Тест адресов, один проход, без кэширования

4,9,14

Тест адресов, один проход, без кэширования

5,10,15

Тест случайной записью

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]