Определение битого чипа памяти Samsung без выпаивания всех (на nvidia 5xx)

Имелось несколько видеокарт Nvidia GTX 5xx с чипами памяти Samsung, поведение которых указывало на проблемы с чипами памяти, причём не с единичными битами на модуль, а на проблемы периодического характера.

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

Если после включения компьютера не ставить драйвер и никаких нетривиальных команд на gpu не отправлять, то по идее на некоторый диапазон физической памяти, соответствующий наибольшему PCIe BAR видеокарты, отображён довольно большой кусок видеопамяти, как минимум 64 МБ.
А значит выполняя операции чтения/записи со стороны CPU можно посчитать количество сбойных байт в этом диапазоне.

Гипотеза была проверена - создан небольшой скрипт на python3, проводящий такой тест видеопамяти - github.com/galkinvv/galkinvv.github.io/blob/4997e7bff905a2029142cdcb697656...

(Скрипт для linux x64, потому что там проще всего работать с физической памятью из скрипта. Требует микро-допиливаний под конкретные адреса и размеры памяти).
Для минимизации влияния на gpu скрипт был запущен после загрузки linux в текстовом режиме, без всякого framebuffer. В процессе работы на экране был как и ожидалось шум, но по результатам он выдал количество ошибочных байт, позволяющее предположить что сбоит каждый 4 байт в одном из модулей (в предположении что на 64MB байты почти равномерно распределены по модулям)

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

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

Есть шанс что методика применима более широкого круга железа, поскольку опирается только на спецификации GDDR5 и PCIe.

Цитата:
Если после включения компьютера не ставить драйвер и никаких нетривиальных команд на gpu не отправлять, то по идее на некоторый диапазон физической памяти, соответствующий наибольшему PCIe BAR видеокарты, отображён довольно большой кусок видеопамяти, как минимум 64 МБ.
А значит выполняя операции чтения/записи со стороны CPU можно посчитать количество сбойных байт в этом диапазоне.

Хз, как по мне - вы не находите "некоей" ущербности в идее судить по небольшому куску о целом?
Цитата:
Требует микро-допиливаний под конкретные адреса и размеры памяти

Аха, всего-то ничего, мелочь, микро. Ню-ню.

Цитата:
позволяющее предположить что сбоит каждый 4 байт в одном из модулей (в предположении что на 64MB байты почти равномерно распределены по модулям)

А предположение на чем основано?
Цитата:
Также было замечено, что если во время работы активно потыкать земляным проводом на резисторы RESET или ZQ-контактов gddr5

А что так мелко? Можно же еще и не земляным "потыкать".
Цитата:
Складывая вместе эти 2 факта получилась следующая методика

Вы уверены, что на "методику" тянет?
Цитата:
Есть шанс что методика применима более широкого круга железа, поскольку опирается только на спецификации GDDR5 и PCIe.

Йопта, где вы этих спеках про метод тыканья земляным проводом сказано? А так, да, "метода" крайне универсальна, даже там, где нет "GDDR5 и PCIe", и многие хении ее пользуют.

P.S. а к hynix или elpida ваша "метода" не канает?

Цитата:
Хз, как по мне - вы не находите "некоей" ущербности в идее судить по небольшому куску о целом?
Абсолютно нет, ибо если не работает кусок модуля, то очевидно что не работает и целый. Если первые 128МБ работают видеопамяти работают целиком - очевидно что способ неприменим.

Цитата:
Цитата:
позволяющее предположить что сбоит каждый 4 байт в одном из модулей (в предположении что на 64MB байты почти равномерно распределены по модулям)
А предположение на чем основано?
На проведённых экспериментах с количеством появляющихся ошибок после RESET одного модуля.

Цитата:
А что так мелко? Можно же еще и не земляным "потыкать".
Не вижу смысла тыкать каким-то напряжением туда, где при штатной работе оно есть: вряд ли чип придёт во временно-неработоспособное состояние.
Признаю, откровенно протупил. Тыкать через малоомное сопротивление по идее гораздо безопаснее и оказалось что столь же эффективно.

Цитата:
Йопта, где вы этих спеках про метод тыканья земляным проводом сказано? А так, да, "метода" крайне универсальна, даже там, где нет "GDDR5 и PCIe", и многие хении ее пользуют.
С точки зрения модуля памяти про RESET сказано. Про него не сказано с точки зрения GPU - последний согласно спеке от этого имеет право погореть.

Цитата:
P.S. а к hynix или elpida ваша "метода" не канает?
Относительно RESET ситуация не меняется. А вот погорят ли они от заземления ZQ, которое менее рискованно для gpu, надо проверять.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей