Мини-гайд по изменению таймингов видеопамяти на примере видеокарты Sapphire Radeon R9 390 Nitro 8Gb

Доброго времени суток, дорогие друзья!
Уже многие из вас знают, что имеется «чудо-биос» с форума Overclock.net, который повышает немного производительность на видеокартах Radeon R9 290(X), спроектированных на референсной плате, по большей части избавляет от ЧЭ (черный экран), BSOD'ов, имеет он и другие мелкие приятности, хотя бывают и обратные отзывы.
Оптимизаций в данном BIOS проведено много, о каждой можно написать свою заметку, но я остановлюсь об одной из них — таймингах видеопамяти.
Для себя и вас хочу отметить, что я решил не просто пересказать информацию с Overclock.net более простым и понятным языком, но и привести скриншоты и дать разумные инструкции по работе, чтобы сэкономить ваше время в изучении и подтолкнуть к вашему собственному энтузиазму. Поехали!

GDDR5 — современный и быстрый тип видеопамяти, массово использующийся в современных видеокартах. Если грубо и кратно, то как и любая другая память (оперативная), она обладает частотой и латентностью — временными задержками сигнала или проще таймингами. Сейчас мне сложно сказать как они отмечены в BIOS, как называются и в каком порядке располагаются, во всех этих вопросах нужно смотреть datasheet GDDR5, их технические характеристики, искать маркировки и т.п. А если учесть, что я наткнулся на информацию, что видеопамять таких видеокарт как 290(Х) и 390(Х) выпускаются разными заводами, то и их возможности немного отличаются.
Сейчас наиболее известны следующие модели:
  • Hynix H5GQ2H24AFR
  • Hynix H5GC2H24BFR
  • Hynix H5GC4H24AJR
  • Elpida EDW2032BBBG
  • Elpida EDW2032BBBG_DEBUG2
  • Elpida EDW4032BABG
  • Samsung K4G20325FD
Чтобы посмотреть какая видеопамять стоит у вас, вам стоит воспользоваться программой MemoryInfo, которая предоставит вам более точную информацию.

Основные отличия видеокарт Radeon R9 390(X) от 290(Х) не только в увеличенном объеме видеопамяти, но и использованных микросхемах. Так видеокарты 390(Х) используют только H5GC4H24AJR и EDW4032BABG, а 290(Х) — все оставшиеся пять. Стоит отметить где многие обычно по невнимательности зашивают BIOS с поддержкой H5GQ2H24AFR вместо H5GC4H24AJR, что обычно ведет к нестабильности в работе в лучшем случае :)
Поэтому также будьте внимательны при скачивании BIOS с коллекции с сайта Techpowerup. Внизу они отмечают какому устройству должна подойти та или иная версия.

Мое лирическое отступление закончено, переходим к самому интересному, и опасному :)

Инструменты

Нам понадобятся:
  • Прямые руки
  • Желание
  • Редактор Hex Workshop
Я перепробовал несколько программ, но больше всего мне понравился Hex Workshop: он может отмечать участки кода цветом, переводит в другом окне выделенные строчки в другие системы счисления и просто понятен.
И конечно же нам понадобится BIOS видеокарты, я советую править оригинальный BIOS, если у вас с ним не возникает проблем.
Скачиваем его с помощью GPU-Z:

Что мы делаем

Видеопамять как и оперативная память имеет частоты, но вот именно видеопамять имеет страпы, если грубо, то диапазоны частот, в которых зашиты определенные тайминги. Для последних видеокарт 290(х)/390(х):
— 150-400MHz
— 401-800MHz
— 801-900MHz
— 901-1000MHz
— 1001-1125MHz
— 1126-1250MHz
— 1251-1375MHz
— 1376-1500MHz
— 1501-1625MHz
— 1626-1750MHz
Как это работает: при дефолтной частоте для 290-ых равной 1250 МГц BIOS выставляет определенные тайминги, пусть будут X-Y-Z и они будут одинаковы на всем диапазоне 1126-1250 МГц.
Вы решаете сделать разгон и ставите 1375 МГц, активировался следующий страп с новыми таймингами, они чуть выше, что ведет к снижению производительности, но повышению стабильности. Падение производительности вы не ощущаете, так как сделали баф по частоте = + 125 МГц. Но! если вы разгоните до 1251 МГц, всего на 1 МГц, новый страп тоже активируется, прироста частоты вы не ощутите, а вот новые повышенные тайминги дадут о себе знать, понизив немного скорость.
Если на примере ОЗУ, то у нас с DDR3 бывает:
— 1333 МГц при 9-9-9-24
— 1600 МГц при 10-10-10-27
— 1866 МГц при 11-11-11-30
Вы разогнали автоматически до 1866, активировались 11-11-11, прирост есть. Вы вручную их понижаете до 9-9-9, система стабильна, прирост еще выше. Все счастливы.
На видеокартах так просто не сделаешь, но можно с помощью редактирования BIOS, чем мы и займемся. Наконец-то.

Редактирование

Погнали! Открываем наш биос Hawaii.rom с помощью редактора Hex Workshop.

Комбинацией Ctrl+F вызываем быстрый поиск, тип выставляем Hex Values, значение (value) 7771. Этот критерий сразу нас отнесет к нужному участку кода, искать нужные строки по смещению (offset) почти бесполезно: они отличаются от серии видеокарт и порой от самих биосов.

Кликаем ОК, и та-дам! Мы в нужной секции.

Для удобства дальнейшего использования выделяем перед найденными значениями по четыре пары чисел. Цвет вызывается на Ctrl+M. Сам редактор Hex Workshop в правом окне если что переводит числа, если вы же постараетесь это сделать в инженерном калькуляторе, то у вас ничего не получится: здесь все написано задом наперед :)
Стоит отметить, что раз у 390(х) четвертаря пара = 00, то в поле int32 значение частоты трактуется верно, в случае 290(х) — там 01 или 02, выделять их тоже нужно, но если хотите посмотреть какое значение получается в int32, то в калькуляторе от Windows переходите в режим «Программист». Далее наше число, к примеру, 48 E8 01 01 или 48 E8 01 02 (в обоих случаях это касается только Radeon 290 и 290Х) преобразуем:
  1. обнуляем четвертое число и получаем 48 E8 01 00
  2. записываем его в обратном порядке 00 01 E8 48
  3. в калькуляторе идем в Вид-программист, выставляем счисление Hex и пишем наше число 00 01 E8 48. Нули первые затрутся — это нормально.
  4. переводим его в счисление Dec и получаем на выходе наше значение 1250.00

Можно этого не делать, просто тогда редактор Hex Workshop засчитает 01 или 02 как еще одно число, и вместо, к примеру, 1250.00 вы увидите что-то похожее на 16914716. А с помощью калькулятора владельцы карт 290(х) могут убедится, что делают все правильно. Повторюсь, владельцам 390(х) этого можно не делать.
Выделяем числа как на рисунке.

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

Если у кого-то возникли трудности, то пишу их значения и код:
  • 40 9C 00 00 = 400 МГц
  • 80 38 01 00 = 800 МГц
  • 90 5F 01 00 = 900 МГц
  • A0 86 01 00 = 1000 МГц
  • 74 B7 01 00 = 1125 МГц
  • 48 E8 01 00 = 1250 МГц
  • 1C 19 02 00 = 1375 МГц
  • A4 2C 02 00 = 1425 МГц
  • F0 49 02 00 = 1500 МГц
  • C4 7A 02 00 = 1625 МГц
  • 98 AB 02 00 = 1750 МГц
  • 40 0D 03 00 = 2000 МГц
Как вы заметили конце везде повторяются числа 00 — это указатель какую использовать видеопамять: на видеокартах Radeon R9 390(x) цифра будет всегда 00, на 290(х) либо 01, либо 02. Это означает, что видеокарты 290(х) имеют две секции с описанием таймингов, вам надо знать какую редактировать, чтобы не править обе и не тратить время. Какую нужно — подскажет программа MemoryInfo выше.
Кстати если прокрутить редактор чуть выше, то можно найти обозначение, поддержка какой памяти присутствует.

В моем случае Hynix H5GC4H24AJR.
Чтобы в глазах не мерцало, выделил серым цветом.

Добавлю подписи для наглядности.

Так что же такое страп? Это выделенный участок кода между двумя соседними зелеными парами чисел — границами.
В итоге и получаем.
— 401-800MHz
— 801-900MHz
— 901-1000MHz
— 1001-1125MHz
— 1126-1250MHz
— 1251-1375MHz
— 1376-1500MHz
— 1501-1625MHz
— 1626-1750MHz

В чем же смысл?

Он достаточно прост. Представим вы разогнали видеопамять до 1500 МГц у 290Х или же до 1750 МГц у 390Х, как я, и думаете: что бы еще оптимизировать или разогнать. Напряжение памяти нам пока недоступно, только контроллера (VDDCI), поэтому стали править тайминги — заменять повышенные тайминги данного страпа пониженными из предыдущего страпа. Это сказывается на эффективности и скорости памяти. Правим очень просто. Выделяем кусок серого кода из прошлого страпа и обычным Ctrl+V вставляем в нужный.
К примеру, я выделил кусок кода 1501-1625MHz и вставил его вместо кода 1626-1750MHz. Теперь видеопамять при 1750 МГц заработает на таймингах от 1501 МГц.
Теперь код, выделенный синим, соответствует коду красному.

Дальше только прошивка видеокарты, о ней писать я не буду. Проверка тестами, бенчмарками и играми.
Я провел несколько итераций тестов, не скажу что много, но выводы сделать можно. В целом получилось с видеокартой Sapphire Radeon R9 390 Nitro 8Gb, частота ядра везде =1000 МГц:
  • даунклок памяти до 1250 МГц (чтобы для себя сравнить с Radeon 290) — valid
  • дефолт 1500 МГц — valid
  • разгон 1750 МГц — valid
  • частота 1500 МГц (тайминги от 1250) — valid
  • частота 1750 МГц (тайминги от 1250) — valid
  • частота 1750 МГц (тайминги от 1125) — invalid
  • частота 1650 МГц (тайминги от 1125) — valid
  • частота 1500 МГц (тайминги от 1000) — invalid
Добавлено
Забыл упомянуть: после редактирования BIOS слетает его контрольная сумма. Такой BIOS вряд ли программа-прошивальщик согласится прошивать, поэтому нужно сделать одну простую вещь: открыть измененный BIOS утилитой HawaiiBiosReader

Там увидите эту страшную строку. Ваша задача всего лишь пересохранить BIOS, утилита сама поправит контрольную сумму. Теперь его можно шить :)

Результаты тестов

Ради сохранения собственного времени приведу лишь результаты графического теста 3DMark 2013 Fire Strike 1.5.915 (64-bit)


Да, я знаю, что результаты теста могут «гулять» туда-сюда да и погрешность никто не отменял, но я старался снизить все внешние факторы к минимуму, да и просто надеюсь к уважению к чужим трудам ;)

Рубрика «Вопрос-ответ»

  1. Что лучше: частота или тайминги?
  2. В основном частота.
  3. Что лучше: частота или частота+тайминги?
  4. Частота+тайминги.
  5. Стоит ли игра свеч? Нужно ли этим заморачиваться?
  6. Руки никогда не стоит опускать, рост производительности не более 3%, но если и его можно добиться, то почему бы и нет?)

Заключение

Я на своей практике познакомился наконец-то с редактированием BIOS через Hex, все манипуляции лично у меня заняли 20 минут.
Относительно вопроса таймингов я постарался ответить в материале. Из всех предложенных вариантов для своей видеокарты я оставлю частоту 1750 МГц при таймингах от страпа 1250. Конечно же чувствовалось, что при страпе 1150 и частоте 1750 МГц результат был бы лучше, но не все тесты видеокарта прошла: были черные полосы, пропадало изображение. Но если тест проходился, то результат был еще заманчивее.

Стоит ли «ковырять» BIOS или нет — решать только вам. Все же есть и резервная микросхема, и я постарался осветить все сложности в скриншотах, так что попробовать стоит. Плюс бесценный опыт никто не отменял ;)
35 комментариев
А этот же метод будет работать, допустим с 270х и эльпидой? Не интересовались?
комментарий был удален
Проверил только что — можно и на других картах, только диапазонов меньше. 
За работу плюс, но все в пределах погрешности, как по мне проще подразогнать карту.
Вот и крайность вопроса: если достигнут предел по частоте? Что делать? Моя видеопамять погналась до 1775 МГц, с 1751 МГц активировались новые тайминги, которые при частоте 1775 МГц отбросили меня по производительности как при обычной 1650 МГц. Можно было откатиться на старую частоту в 1750 МГц и забить на это дело:) я же решил оптимизировать до конца. 
С оперативкой обычной это даёт какой-то профит. Интересно если заведомо повысить тайминги видеопамяти возможен ли больший ее разгон(а-ля ram)?(заменять повышенные тайминги данного страпа еще более высокими из следующего страпа)
А вы не забывайте, что разгон видеокарт — это парный разгон ядра и памяти, поэтому разгон ядра даст еще побольше очков)
Как с ОЗУ — может даст, а может не даст повышение таймингов. 
В любом случае это довольно интересная тема. Повышенные тайминги априори повышают вероятность пикового разгона.
Мне кажется это будет интересно тому, кто хочет показать экстремальный разгон) А как мне важнее производительность.
Спасибо за подробный материал. многим пригодится.
Жаль ты на стороне красных))) +1
Отличная статья, жаль я продал свою 290х...
На моей XFX R9 290X референс, память стоит Elpida EDW2032BBBG
да, в ЛС тоже скинули BIOS с такой маркой. За всеми не уследить, но спасибо за наводки :)
А разблокировать до х не пробовал? 
390 почти не разблокируются( Моя тоже. 
хм, а я не понял, обязателен модифицированный биос и можно ли изменить тайминги у 7770? 
Не понял про «обязателен», и да, можно.
Серьезный подход! Респект камрад!
Работа с таймингами 7900, 200 от The Stilt
https://litecointalk.org/index.php?topic=12369.0
https://litecointalk.org/index.php?topic=15902.0
https://litecointalk.org/index.php?topic=12830.0
Может будет интересно)
Я это видел) Он майнер, оттуда и пришел, чтобы ради оптимизации хешей, стал разбираться в карте, объединился с другими участниками и сейчас на Overclock.net неплохо беседуют.
комментарий был удален
Откуда такая неприязнь к майнерам?
Почему из-за них страна в упадке?
Вы хотите поговорить об этом в этой ветке?
комментарий был удален
комментарий был удален
запоздавший видимо вопросик...
а если открыть 2 гаваи биос ридера на вкладочке мемори тайминг и там скопировать значения... разве это не приведет к тому же результату? :-)
:) Только когда я это делал в Hawaii BIOS Reader ребята еще не ввели эту функцию) Она запоздала в сравнении с моим материалом на полгода, а теперь везде ее включают. Просто нужно время, чтобы найти все страпы в BIOS, задача средней тяжести, но нудная :) А потом еще в код утилиты вшить.
Актуальность материал потерял месяца 2-3 назад)
но на скрине то вкладочка эта есть ;-)
А, я понял) Да, но два но
1) в старых версиях там были просто одно число, а не группы чисел, которые так никто и не расшифорал) ПОэтому там не трогали ничего
2) в новой версии — наоборот — убрали вкладку тайминги)

вот найду старую версию и покажу вам xD
хм... у меня в закромах такая же версия завалялась, как и у вас...
и вкладка есть, и не одно число, а группа чисел под каждый страп...
Спорить не стану — это оно и есть, хотя в более поздних она упразднена.
Только у меня вопрос: как сработает программа на BIOS от 290(х)? Там ведь зашиты две памяти каждая со своими значениями. Тут не все так просто. Но вы правы: проще делать это через утилиту, а не BIOS.
про две таблицы это да — большой вопрос. видимо меняет первую. у себя на сапфире 290х пробовал — разницы не увидел. получается заменило первую таблицу, а у меня вторая используется...
какая точно у меня память на сапфире не скажу, а мемориинфо к сожалению работает только на 1ую карту
Memoryinfo, да, с первой картой работает. Попробуй скачай любой HEX-редактор и поиском поищи память. Выше я привожу ее наименование в тексте BIOS, и находятся они в соседних разделах, а в поиске можно вбить для начала «H5GC»
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.