"Новогодняя история с хэппи-эндом", или пара слов о программном ремонте Sapphire Radeon X1950Pro


Русский отдых - самый
бессмысленный и беспощадный
во всём мире.

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

Этот случай произошёл в ночь с 31 декабря на 3 "пьянваря" 2007 года. Обычная новогодняя вечеринка обычных IT-спецов, по поводу встречи нового 2007 года. Хозяин квартиры, на которой проводилось мероприятие, недавно делал апгрейд и не преминул похвастать гостям новым железом. Для этого, естественно, пришлось снять крышки системного блока, который в это время находился в рабочем состоянии, ибо служил MP3 плеером. "Что-то стало холодать, не пора ли нам поддать?!" - поинтересовался один из гостей, и вся компания вернулась к делам более насущным, нежели разглядывание внутренностей системника. Закрывать его обратно, естественно, никто не стал, ибо водка грелась, а девки стыли.

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

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

Следует отдать должное владельцу, который не растерялся и отправил видеокарту в ультразвуковую ванну, для промывки, т.к. химические свойства субстанции, оказавшейся на PCB, негативно влияли не только на её внешний вид, но и физическое состояние. В таком состоянии эта видеокарты и была подарена мне. Это был Sapphire Radeon X1950Pro 256Mb, PCI-E, с референсным дизайном и системой охлаждения. Попытки завести видеокарту приводили к показу фильма "Тайна чёрного экрана", не сопровождавшегося звуковым оформлением POST. Это навело меня на мысль, что пациент скорее жив, чем мёртв, ибо система не может однозначно указать на отсутствие видеокарты, но инициализацию она явно не проходила.

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

Для снятия чипов использовалось соответствующее оборудование для BGA пайки, но как показывает практика, провести эту процедуру можно и дома, при наличии электронагревательных приборов и пары рук, произрастающих не из того места, где ноги теряют своё гордое название. Установив систему охлаждения, я вновь попытался "завести" видеокарту. Фортуна была ко мне благосклонна, и после радостного короткого писка POST я увидел на мониторе картинку. Но она, естественно, была с артефактами. Для дальнейшей диагностики я установил X1950Pro второй видеокартой в рабочую систему. Установка драйвера прошла успешно, и заработала система автоматического регулирования оборотов вентилятора. Далее я воспользовался утилитой RaBiT для чтения BIOS видеокарты и Everest для ознакомления с тем, чем мнит себя видеокарта в данный момент. А посмотреть было на что!





512-битная шина памяти, 4Гб видеопамяти, 16TMU, частоты, в общем, всё говорило о том, что с душевным состоянием пациента было что-то не в порядке.

Убедившись в исправности системы питания видеокарты, я решил произвести запаивание заведомо рабочих чипов памяти. К сожалению, видеокарта вернулась в состояние показа "тайны чёрного экрана", что навело на мысль о неисправности PCB или самого GPU. Прозванивание резисторной матрицы чипов памяти показало, что проблема, скорее всего, в GPU. Вероятно, коротким замыканием был частично повреждён один из каналов памяти. Найти на замену отдельно исправный GPU представлялось маловероятным, поэтому было принято решение работать с тем, что есть. Уже любопытства и интереса ради, т.к. восстановление карты до исходного, полностью рабочего, состояния было невозможно по вышеописанным причинам.

В арсенале оставался единственный способ ремонта - программный. Была поставлена задача сконфигурировать контроллер памяти таким образом, чтобы не использовались выпаянные чипы. Изучение некоторой документации показало, что контроллер памяти имеет 8 каналов, разрядностью 32 бита, и каждый канал, на данной видеокарты, обслуживал одну микросхему памяти. Имелось четыре режима работы - 1 канал, 2 канала, 4 канала и 8 каналов, для получения шины 32, 64, 128 и 256 бит соответственно. За конфигурирование отвечали 2 бита. Требовалось "всего лишь" распаковать образ VGA BIOS, найти регистр, отвечающий за конфигурирование контроллера памяти и прописать нужное значение.

У меня не было необходимых знаний и документации для проведения данной работы самостоятельно, поэтому я обратился к человеку, чьё имя слишком известно, чтобы его называть. У него, как у автора утилиты по работе с видеокартами, были необходимые даташиты и знания, которыми он со мной, в определённой степени, поделился. Однако, я не имею права публиковать эту информацию. Отослав ему необходимые данные, я через некоторое время получил образа BIOS, где КП был сконфигурирован для работы с 1, 2 и 4-мя каналами. Прошивка последних двух приводила лишь к увеличению площади артефактов, а вот первая прошивка, с одним рабочим каналом, сработала.

Видеокарта выдавала корректные данные диагностическим утилитам, прошла тесты Direct3D в системной утилите dxdiag, и даже 3DMark2001SE, набрав 10600 очков. 32 бита, 32 Мбайта - таков был достигнутый результат. Всё вроде бы хорошо, видеокарта хоть как-то, но работает, но я решил идти до победного, выжав из железки всё, на что она может быть способна.

Дальнейшее изучение документации выявило ещё одну особенность контроллера памяти у RV570. Возможно, было не только конфигурирование разрядности шины памяти посредством изменения числа каналов, но и выбор используемых каналов. Значение задавалось так же двумя битами, и, следовательно, было 4 варианта. В документации было обозначено 4 хоста на RingBus - A0, A1, B0, B1, каждый из которых состоял из пары 32 битных каналов. По умолчанию в режиме с двумя каналами работали хосты A0 и B0. Нюансов работы хостов при использовании четырёх каналов не было, однако их можно было, аналогично, конфигурировать 4-мя способами.

Начать было решено с двухканального режима. В неработоспособности варианта A0B0 я уже убедился, поэтому были изготовлены прошивки для использования хостов A0A1, A1B1, B0B1. Первый же удар "попал в цель", и прошивка для A0A1 восстановила работоспособность видеокарты при использовании 64-битного доступа к памяти.





К сожалению, оставшиеся прошивки - A1B1, B0B1 не оказывали должного эффекта, артефакты сохранялись. Исходя из этого, я сделал вывод, что хосты B0 и B1 повреждены. Следовательно чипы, хоть и стояли рядом на PCB, принадлежали к разным хостам, и, скорее всего были распределены следующим образом - 8,1 - А0; 2,3 - А1; 4,5 - В0; 6,7 - В1. Повреждение чипов 5 и 6 привело к полной неработоспособности хостов B0 и B1, что косвенно подтверждало мою теорию о коротком замыкании, повредившем GPU.

Было решено перейти к реализации четырёхканального режима. Как я уже сказал, документации по конфигурированию хостов для этого режима не было, поэтому хоть прошивки и были поименованы аналогичным образом, это вовсе не означало, что были задействованы именно те хосты, чьи названия указаны. Итак, 4 канала, прошивки A0A1, A1B1, B0B1. Опять напоминаю, что дефолтная A0B0 не приводила к восстановлению работоспособности. Шьём A0A1 - результат отрицательный, A1B1 - аналогично, B0B1 - работает. РАБОТАЕТ!!! Далее следовала "непереводимая игра слов на местном наречии". Цель была достигнута, видеокарта заработала при использовании 128-битной шины памяти.

В конечном итоге получилось что-то среднее между Radeon1950Pro и Radeon1650XT, если не учитывать объём памяти, который стал равен 128 Мб. Блиц тестирование в 3Dmark 2001SE и 2006 выявило 15000 и 1700 попугаев соответственно.

Не так много, как я предполагал. Вероятно дело в драйвере, который использует тактику, пригодную только для полноценных карт.





Теперь пару слов о контроллере памяти. Очевидно, что если хосты B0 и B1 неработоспособные, но именно эта прошивка оказалась рабочей, то схема использования хостов при четырёхканальном режиме иная, и использованная схема именования неверна. Я бы предположил, что более корректно эта схема конфигурирования для четырёхканального режима выглядела так - A1B0, B0B1, B1A0, A0A1, или так - B1A0, B0B1, A1B0, A0A1.

Схематично контроллер памяти можно представить так:

Итак, осталось только сделать выводы.

  1. Даже если вы пролили "Бордо" двадцатилетней выдержки на видеокарту во время её работы, и она задымилась, то не следует отчаиваться и вешать её на брелок.
  2. Программный ремонт аппаратно повреждённой видеокарты возможен.
  3. На полученном обрезке ещё вполне можно играть. Ну, или на крайний случай, использовать как тестовую\запасную видеокарту.
  4. Получено некоторое представление об организации контроллера памяти на RingBus.
  5. Кот - враг оверклокера номер один. Неспроста изображение именно этого животного присутствует на аватарах многих мемберов и модераторов нашей конференции, врага надо знать в лицо.

А вот и сами прошивки.

За сим - всё!

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

TheJudge


Обсудить материал в конференции

Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Страницы материала
Страница 1 из 0
Оценитe материал
рейтинг: 4.8 из 5
голосов: 148

Теги



Возможно вас заинтересует

Популярные новости

Сейчас обсуждают