Почему memtest показывает один и тот же бит на нескольких адресах?

410
Styil

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

Мемест-лог пастибин.

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

2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 1, Address: 252A019F8, Expected: FEF7FFFF, Actual: FFF7FFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 1, Address: 253201A38, Expected: FEFEFFFF, Actual: FFFEFFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 255641A98, Expected: FEF7FFFF, Actual: FFF7FFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 255E41CB8, Expected: 00000000, Actual: 01000000 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 257641A78, Expected: FEF7FFFF, Actual: FFF7FFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 257E41C98, Expected: 00000000, Actual: 01000000 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259201A58, Expected: FEFEFFFF, Actual: FFFEFFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259201B58, Expected: FEEFFFFF, Actual: FFEFFFFF 2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259645310, Expected: 01004000, Actual: 00004000 2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259A01A18, Expected: FEFFF7FF, Actual: FFFFF7FF 2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259A01AD8, Expected: FEFFBFFF, Actual: FFFFBFFF 2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 25B201A38, Expected: FEFEFFFF, Actual: FFFEFFFF 2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 25B201B38, Expected: FEEFFFFF, Actual: FFEFFFFF 

Я проверил ОЗУ на двух разных компьютерах и вывел ту же ошибку. Эти результаты говорят мне что-нибудь об ошибке во внутренней логике, которая происходит? Я думаю, это потому, что набор байтов использует одинаковую логику адресации, но я ожидал бы, что сбои будут последовательными в байтах памяти. Или может быть, что бит сбоя по всем этим адресам одинаков и по какой-то причине одному и тому же байту присваивается другой адрес при каждом повторном запуске?

Во-вторых, memtest провалил только несколько тестов, в частности, тесты с 0 по 2 не прошли, даже после нескольких тестов. У меня есть только базовые знания о том, что делает каждый тест, но я удивлен, что первые несколько тестов никогда не приводили к ошибке. Есть причина почему?

0

1 ответ на вопрос

1
Kamil Maciorowski

Это может быть из-за расположения, описанного в этой статье Википедии: молоток строки .

В динамическом ОЗУ (DRAM) каждый бит хранимых данных занимает отдельную ячейку памяти […]

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

image

Источник изображения (общественное достояние)

Гипотеза: что-то не так с одним битом определенного буфера строк (красные квадраты); влияет на чтение любой строки, которой соответствует буфер. Я не утверждаю, что это будет происходить каждый раз, для каждой строки и любых записанных данных; тем не менее, я считаю, что эта матричная форма и буфер строк (или что-то подобное) как-то связаны с тем фактом, что это всегда последний бит первого байта, который не удался.


Во-вторых, memtest провалил только несколько тестов, в частности, тесты с 0 по 2 не прошли […]. Я удивлен, что первые несколько тестов никогда не приводили к ошибке. Есть причина почему?

Это руководство объясняет, что такое тесты:

  • Тест 0 [Адресный тест, ходячие, без кеша]

Проверяет все биты адреса во всех банках памяти, используя шаблон адреса «ходящих».

  • Тест 1 [Адресный тест, собственный адрес, последовательный]

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

  • Тест 2 [Тест адреса, собственный адрес, Параллель]

То же, что и в тесте 1, но тестирование выполняется параллельно с использованием всех процессоров и с использованием перекрывающихся адресов.

Я понимаю, что тесты 0-2 предназначены для выявления ошибок адресации, а не фактических ошибок данных. Обратите внимание, что если бы они смогли отловить все ошибки, дальнейшее тестирование не потребовалось бы.

Похожие вопросы