Алгоритм - Учебный центр
Заполните форму ниже! Мы вам перезвоним!

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


Тесты памяти (алгоритмы проверки памяти).

Тесты памяти (алгоритмы проверки памяти).

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

  • простое чтение и запись;

  • тест последовательных чисел;

  • циклический тест;

  • галопирующий тест;

  • двухадресный тест;

  • тест суммирования;

Рассмотрим несколько подробнее каждый из алгоритмов.

Тест на простое чтение и запись. Самый применяемый тест для тестирования оперативной памяти ПК и видеопамяти. Суть этого теста заключается в записи определенного байта данных в каждую ячейку памяти с последующим чтением каждой ячейки. Если память исправна, то естественно, что при чтении должен быть получен тот же самый байт. Записываемый байт может быть абсолютно любым (на усмотрение разработчика теста), но чаще всего используются такие, как 00h (0000 0000), FFh (1111 1111), 55h (0101 0101), AAh (1010 1010). Это самый простой и быстрый тест, поэтому его применяют для проверки больших объемов памяти, емкость которой составляет сотни Кбайт и даже Мбайты. Однако проверку с помощью этого теста нельзя считать полностью достоверной, так как она не исключает возможности целого ряда ошибок в ОЗУ. Этот тест обычно применяют для первичного тестирования памяти и в основном с помощью него проверяется исправность шины данных памяти. Неисправность шины адреса памяти этим тестом часто невозможно определить. Кроме того следует отметить, что некоторые ошибки памяти невозможно определить этим тестом, если записывается только одно значение в память. Так, например, очень часто при обрыве контакта на шине данных в микросхемах динамической памяти при считывании этот разряд воспринимается как “1”. И поэтому если тестировать память тольк записью байта 1111 1111, то такая ошибка не будет выявлена. Исходя из сказанного, следует, что при тестировании памяти этим тестом лучше пользоваться такими байтами данных как 55h или ААh или тестировать память в несколько проходов записыванием различных значений (что предпочтительнее).

Тест последовательных чисел. Этот тест дает более достоверную информацию об исправности оперативной памяти. Тест заключается в последовательной записи двоичных числовых комбинаций 8-битового слова в блок памяти из 256 ячеек. Затем, начиная с первой ячейки, данные считываются и проверяются сравнением их с байтом, который там должен быть (т.е. с эталонным значением). Другими словами, в ячейку памяти с младшим байтом адреса 00h должно быть занесено значение 00h и в последствии прочитаный байт должен сравниваться с числом 00h. Аналогичным образом в ячейку памяти с адресом 01h заносится число 01h и прочитанное значение сравнивается с числом 01, в ячейку 02h число 02 и т.д. После заполнения 256 ячеек памяти, в 257 ячейку снова заносится число 00h и блок данных повторяется. С помощью этого теста определяются как ошибки шины данных (и обрыв и замыкание) так и ошибки шины адреса (обрыв и замыкание). Поэтому можно считать этот тест наиболее эффективным (с точки зрения и достоверности и скорости проверки) для тестирования значительных обемов памяти, так как достаточно одного прохода для выявления неисправных ячеек памяти.

Циклический тест. Циклический тест проверяет, не приведет ли установка одного из восьми битов байта данных к неправильной установке другого бита этого байта. Так например, в ячейку памяти с нулевым адресом записывается сначала двоичное значение 0000 0001 и затем из этой ячейки производится считывание байта и полученное значение сравнивается с двоичным числом 0000 0001. Далее в эту же ячейку записывается двоичное значение 0000 0010 и при чтении из ячейки мы должны так же получить значение 0000 0010. После этого в ту же ячейку памяти записывается число 0000 0100 и т.д.. После того как будет записано и прочитано значение 1000 0000 переходят к следующей ячейки памяти. Таким образом этот тест заключается в загрузке и считывании двоичных чисел от 0000 0001 до 1000 0000 (причем в каждом последующем числе “1” циклически сдвигается влево) в каждую ячейку памяти, начиная с младшего адреса ОЗУ. Естественно, что этот тест занимает большие ресурсы времени, однако дает достаточно достоверную информацию о работоспособности памяти. Этот тест в основном используется для проверки на отсутствие замыкания между собой соседних контактов в шине данных. Стоит отметить что некоторые разработчики тестов используют циклический сдвиг вправо, а некоторые предпочитают циклически сдвигать “0” после заполнения ячейки значением 1111 1110.

Галопирующий тест. Этот тест в значительной степени напоминает циклический тест. Вначале в ячейку памяти записывется байт 0000 0000. После этого в эту же ячейку памяти заносится двоичное число 0000 0001 и проверяется и не изменились ли нулевые значения остальных 7 бит на единичные, т.е должны сравнить прочитанный байт с эталонным значением 0000 0001. Далее по этому же адресу загружается число 0000 0010, и снова проверяются остальные 7 бит. Этот процесс повторяется до загрузки по этому адресу числа 1000 0000 (эта часть теста аналогична циклическому тесту). После этого в ту же самую ячейку памяти заносится значение 1111 1111 и далее значение 1111 1110. После этого процесс начинается заново с циклической проверкой на 0. Таким образом для каждой ячейки памяти проводится два циклических теста с проверкой на “1” и “0”. Этот тест работает очень медленно и может потребовать десятки (!) часов на объемах памяти в сотни Кбайт, поэтому такой алгоритм проверку ОЗУ целесообразно использовать на объемах памяти не превышающих 4-8 Кбайт. Применение этого теста аналогично циклическому тесту.

Двухадресный тест. Этот тест работает следующим образом: сначала все ячейки памяти заполняются значением 00h (0000 0000), затем в первую ячейку памяти записывается значение FFh (1111 1111) и проверяется, не появились ли ошибочно единицы в каких либо других ячейках, т.е. байт прочитанный из всех остальных ячеек должен сравниваться с эталонным значением 00h. Если ошибок не обнаружено, то в проверенную ячейку снова заносится значение 00h, а тестирование переходит на следующую ячейку памяти: записывается в нее 1111 1111 и проверяются остальные ячейки памяти и т.д.

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


Лицензия