
Разблокировка потоковых процессоров у видеокарт AMD Radeon RX460 и 560
Производители видеокарт проводят политику сегментирования выпускаемой продукции по классам производительности. Так как при производстве используются автоматическая сборка, типовые печатные платы и стандартизированные схемотехнические решения ограниченной номенклатуры, иногда модели видеокарт, относящиеся к разным уровням, имеют одинаковую элементную базу. Их производительность ограничивается аппаратным (лазерное выжигание лишних ядер) или программным (отключение ядер/занижение производительности в BIOS/драйверах) способами.
Часто ограничения, сделанные программным способом, могут быть успешно сняты с помощью «обработки напильником» (модификации) BIOS.
В данной статье описывается процесс разблокирования дополнительных вычислительных ядер видеокарт AMD Radeon RX 460/560D (у полноценных видеокарт доступно 16 compute units, а у обрезанных — 14).
Изучить количество вычислительных единиц можно в программе GPU-Z, либо в некоторых майнерах. Например, программа SRBMiner-Multi при инициализации оборудования отображает информацию о памяти и количестве CU:
В приведенном выше примере GPU1 (видеокарта Radeon RX560), подключенная к слоту PCI-E номер 02, имеет 2036 MB VRAM и 14 CU. Полноценные видеокарты с ядром Baffin должны иметь по 16 CU (в данном случае это GPU0 и GPU4).
Отключенные ядра негативно влияют на производительность при проведении вычислений, снижая хешрейт при майнинге.
Видеокарта Radeon RX560D с отключенными ядрами (GPU1) обеспечивает намного меньший хешрейт, чем аналогичные «полноприводные» видеокарты (GPU0 и GPU4):
Для устранения безобразия нужно сохранить BIOS проблемной видеокарты (плюс дополнительно сделать резервную копию BIOS для аварийного восстановления в случае неудачной модификации) и отредактировать часть кода, отвечающую за блокировку вычислительных ядер.
В Windows это удобно делать с помощью программ типа AtiFlash/AtiWinFlash, в Linux — программой amdvbflash. Редактирование кода BIOS можно производить в любом HEX-редакторе.
Редактирование кода BIOS видеокарты Radeon RX560D для разблокирования вычислительных ядер
В любом HEX-редакторе открываем сохраненный файл BIOS видеокарты и запускаем поиск значения 6F 22 70 22.
Пример редактирования BIOS видеокарты AMD Radeon RX560 с 2 GB VRAM в редакторе Ghex в xubuntu 18.04:
В открытом для редактирования файле нужно изменить число 6F 22 70 22 до вида 6F 22 6F 22 (заменить значение 70 на 6F) и сохранить полученный файл под другим именем, например, с названием unlocked.rom.
Затем модифицированный файл bios нужно прошить в микросхему флеш-памяти видеокарты. Это делается с помощью программ AtiFlash/AtiWinFlash (amdvbflash) или им подобных.
Перед прошивкой нужно обязательно проверить номер прошиваемого адаптера, иначе можно по ошибке прошить BIOS в другую видеокарту, что гарантированно ее «окирпичит».
Для изучения номеров видеоадаптеров в программе AtiFlash вводят ее название и ключ -i для отображения информации о подключенных видеоадаптерах:
AtiFlash -i
В Linux для программы amdvbflash в терминале вводят команду
sudo ./amdvbflash -i
Программа выдаст информацию о ее версии и таблицу с данными о подключенных видеоадаптерах фирмы AMD:
AMDVBFLASH version 4.69, Copyright (c) 2020 Advanced Micro Devices, Inc. adapter seg bn dn dID asic flash romsize test bios p/n ======= ==== == == ==== =============== ============== ======= ==== ================ 0 0000 01 00 67EF Polaris11 M25P20/c 40000 pass 113-C99401-XXX 1 0000 02 00 67EF Polaris11 M25P20/c 40000 pass 113-234813E-U11 2 0000 03 00 67DF Polaris10 M25P20/c 40000 pass 113-1E3660EU-O55 3 0000 04 00 67DF Polaris10 W25X40 80000 pass - 4 0000 05 00 67EF Polaris11 GD25Q41B 80000 pass - 5 0000 06 00 67DF Polaris10 W25X20 40000 pass 115-D009PI0-100
Для уточнения номера видеоадаптера можно ориентироваться на номеру PCI-E, к которому подключена видеокарта. При этом можно использовать информацию от сторонних программ или майнеров. В данном случае искомая видеокарта подключена ко второму номеру шины PCI-E (столбец bn) — это видеокарта (asic) Polaris11 с микросхемой флеш-памяти M25P20 с серийным номером BIOS 113-234813E-U11.
Прошивка BIOS производится в программе с графическим интерфейсом AtiWinFlash или консольной программой AtiFlash.
Синтаксис команды для прошивки bios:
AtiFlash -p 1 unlocked.rom
где цифра после буквы обозначает номер видеоадаптера.
Если при прошивке возникает ошибка:
Newer ROM version already programmed ERROR: 0FL01
нужно использовать ключ принудительной прошивки -f.
Пример команды для принудительной прошивки BIOS в linux в программе amdvbflash (для запуска из директории,в которой находится программа и файл BIOS):
sudo ./amdvbflash -f -p 1 unlocked.rom
В процессе прошивки программа выдаст следующую информацию:
AMDVBFLASH version 4.69, Copyright (c) 2020 Advanced Micro Devices, Inc. Old DeviceID: 67EF New DeviceID: 0 Old Product Name: New Product Name: Old BIOS Version: New BIOS Version: Flash type: M25P20/c Burst size is 256 40000/40000h bytes programmed 40000/40000h bytes verified Restart System To Complete VBIOS Update.
После этого нужно перезагрузить компьютер. Прошитая разблокированным BIOS-ом видеокарта порадует увеличенной мощностью благодаря появлению дополнительных вычислительных ядер (GPU1 теперь имеет 16 CU вместо 14):

