Об увеличении производительности видеокарт с помощью опции Resizable BAR/Smart Access Memory
Профессиональные видеокарты Nvidia, а также модели серии RTX3000 имеют функцию расширения размера регистра (Resizable BAR), теоретически увеличивающую производительность при проведении вычислительных операций с большими массивами данных, а также в играх. Современные видеокарты AMD поддерживают аналогичную технологию, называемую Smart Access Memory.
Для бесплатного увеличения производительности видеосистемы на компьютере стоит разобраться, что такое Resizable BAR и как включить этот параметр для получения дополнительных хешей/FPS.
Что такое Resizable BAR?
Возможность использования опции Resizable BAR появилась в 2008 году в стандарте PCI-E 2.0.
В устройствах AMD работа с Resizable BAR реализуется с помощью технологии Smart Access Memory (SAM). В некоторых конфигурациях включение SAM-технологии не увеличивает производительности системы, поэтому в большинстве случаев она отключена. Для новейших видеокарт серии AMD RX 6xxx поддержка этой технологии включена по умолчанию.
Иллюстрация выигрыша от использования опции Resizable BAR (Smart Access Memory) для видеокарт AMD:

У Nvidia функция расширения размера регистра раньше была доступна только на профессиональных видеокартах, например, Nvidia Tesla K40. Начиная с моделей Nvidia серии GeForce RTX 3000 опция Resizable BAR стала доступна и владельцам обычных видеокарт.Опция Resizable BAR расширяет доступные возможности работы устройств по шине PCI-Express. Это параметр, позволяющий оптимизировать порядок работы с BAR (Base Address Register) — базовыми адресами (регистрами) памяти или PCI I/O-диапазона.
За счет использования Resizable BAR появляется возможность одновременной работы центрального процессора с фрагментами памяти VRAM размером более 256MB, что увеличивает производительность приложений, работающих с большими массивами данных. Включение опции Resizable BAR позволяет ускорить обмен данными по шине PCI-E между аппаратным обеспечением и системными программами за счет оптимизации использования ограниченных ресурсов — памяти устройства и/или адресов шины ввода-вывода.
Неэффективное использование ресурсов может значительно уменьшить производительность видеокарт при вычислениях. На практике это проявляется в заниженном хешрейте при майнинге в сравнении с расчетным. Например, при тестировании видеоускорителя Nvidia Tesla K40 на алгоритме Ethash был получен хешрейт, равный единицам mh/s, хотя DAG генерировался со скоростью 275 MB/s, что соответствует 34 mh/s.
Как работает опция Resizable BAR?
Порядок работы с функцией Resizable BAR определяется установкой нужных значений регистров Capability и Control на PCI-E устройстве:

По умолчанию, для обеспечения совместимости, PCI-E устройства используют малый размер BAR (256 мегабайт), что снижает их производительность. Если использовать функцию расширения размера регистра (Resizable BAR), то можно изменять размер доступной процессору памяти видеокарты в диапазоне от 1 MB до 512 GB.
Для работы с функцией Resizable BAR на аппаратном уровне используется специальный регистр — Resizable BAR Capability register:

Доступный объем BAR-памяти определяется местонахождением бита регистра Resizable BAR Capability (от 4 до 23). При установке этого бита в положение 4, размер BAR равен одному мегабайту, если регистр Resizable BAR Capability равен 23, то возможна работа с адресами памяти до 512 GB.
Соответствие некоторых значений регистра Resizable BAR Capability и доступного размера адресов памяти:

Разработчики программ задают в них алгоритм, который на программном уровне определяет оптимальный размер задействующихся ресурсов и программирует его с помощью BAR Size field регистра Resizable BAR Control:

Доступный размер BAR в диапазоне от 1 MB до 512 GB, записывается в бит 12:8. Затем устройство и программа взаимодействуют между собой, согласуя порядок работы с BAR-ами.
Если используется совместимое аппаратное и программное обеспечение, при включении опции Resizable BAR устройство может задействовать больше ресурсов и тем самым обеспечить более высокую производительность. Нужно понимать, что на нужды других устройств станет выделяться меньше ресурсов, что иногда может привести к падению общей производительности. В связи с этим, при использовании видеокарт, работающих с опцией Resizable BAR, на компьютере требуется обеспечить наличие значительно большего объема системной памяти. Ее должно быть не меньше, чем доступный размер VRAM плюс память на нужды операционной системы и прикладных программ.
Как включить на компьютере опцию Resizable BAR?
Чтобы использовать потенциал функции Resizable BAR, оборудование компьютера должно уметь работать в соответствующем режиме.
Обычно для этого требуется установка видеокарты в полноценный слот PCI-E (без райзера или с устройством, способным обеспечить высокую скорость передачи данных по всем линиям PCI-E), наличие большого объема системной памяти (больше размера VRAM), а также поддержка этой технологии процессором и чипсетом. Также требуется включение соответствующих опций в BIOS видеокарты/материнской платы и поддержка на уровне драйвера/операционной системы.
Resizable BAR Capability работает с памятью размером более 4 GB только в режиме 64-bit, поэтому технология Resizable BAR работает только при использовании современной 64-битной операционной системы.
Для видеокарт GeForce RTX 3060 Ti, 3070, 3080, или 3090 первых выпусков для работы с Resizable BAR может понадобиться обновление BIOS. Подробная инструкция о работе с Resizable BAR есть на странице сайта Nvidia.
Официально технологию Resizable BAR на видеокартах Nvidia 3000-й серии поддерживают:
Теоретически работать с опцией Resizable BAR могут и более старые компьютеры с процессорами, которые поддерживают работу с инструкциями PDEP (PCI-E full-rate _pdep_u32/64). К ним относятся процессоры AMD с архитектурой Zen 3, 5 и выше, а также процессоры Intel 4-го поколения Haswel и новее.
Важным условием совместимости является поддержка материнской платой опции 4G Decoding.
Основные требования, которым должен соответствовать Windows-компьютер для полноценной работы видеокарт Nvidia серии RTX 30 с Resizable BAR (для GPU AMD требования идентичны):
- видеокарта должна быть вставлена в полноценный слот PCI-E материнской платы (или через PCI-E 3.0 x16 райзер);
- на компьютере под управлением 64-разрядной версии Windows 10 должны быть установлены драйвера Game Ready или NVIDIA Studio, поддерживающие опцию Resizable BAR (лучше Nvidia GPU driver версии 465.89 и выше);
О наличии поддержки опции Resizable BAR можно узнать в описании конкретной версии драйверов на сайте Nvidia:

- BIOS материнской платы должен поддерживать работу с Resizable BAR (может понадобиться обновление), соответствующая функция должна быть включена пользователем. У разных производителей эта опция BIOS называется по разному, например, на платах фирмы ASRock — это опция Clever Access Memory, у ASUS — Re-Size BAR Support, у Gigabyte — Resizable BAR Support;
Включение опции CAM (Clever Access Memory) в BIOS материнской платы ASRock (меню Advanced — Chipset Configuration):
Включение опции Re-Size BAR Support в обновленном BIOS материнской платы ASUS (меню Advanced — PCI Subsystem Settings):

- видеокарта должна иметь BIOS, поддерживающий работу с функцией расширения размера регистра. Компания Nvidia начала выпуск видеокарт RTX 3060 с обновленным BIOS-ом с 25 февраля 2021 года;
- в BIOS материнской платы должны быть включены опции Above 4G Decoding и Resizable BAR (Clever Access Memory), выключен модуль Compatibility Support Module (опция CSM), а также включен самый высокий уровень поддержки (не ниже PCI-E Gen 3.0 или 4.0) ;
- загрузка операционной системы должна производится с GPT-диска (не MBR!) с UEFI-BIOS.
Чтобы проверить соответствие компьютера/видеокарты нужным требованиям, нужно использовать утилиту Nvidia Resizable BAR Firmware Update Tool. Эта же программа поможет обновить видеокарты с неподходящим BIOS. Для видеокарт различных производителей может понадобиться специальное программное обеспечение, которое можно найти по ссылкам на этой странице.
Если компьютер поддерживает работу с Resizable BAR, программа NVIDIA Control Panel на вкладке System Information покажет одноименную строку, в которой будет написано Yes:

В диспетчере устройств на вкладке ресурсов видеокарты, поддерживающей работу в режиме Resizable BAR, должна быть видна опция Large Memory Range:

Как использовать функцию Resizable BAR в операционных системах с ядром Linux?
Чтобы включить поддержку Resizable BAR для видеокарт Nvidia, AMD, а также Intel в Linux, нужно обеспечить выполнение аппаратных и программных требований, описанных выше.
Работа устройств с увеличенным объемом ресурсов в операционных системах семейства Linux возможна благодаря встроенной в ее ядро поддержке Resizable BAR/Smart Access Memory.
Современные версии Linux (в том числе ОС для майнинга HiveOS) при работе в связке с драйвером amdgpu обычно сами меняют значение BAR0 для каждой видеокарты AMD таким образом, чтобы зарезервировать для CPU весь доступный размер VRAM. Если в системе нет достаточных ресурсов (адресного пространства), то соответствующим образом уменьшается и значение Resizable BAR.
Чтобы увидеть размер BAR, который на практике используется системой Linux, можно использовать команду:
При правильной конфигурации BIOS, на компьютере под управлением Linux для видеокарт AMD опция Resizable BAR доступна даже при включении видеокарт через райзер PCI-E x1.
В данном случае размер BAR равен 4096 мегабайтам, что соответствует объему VRAM видеокарты AMD Radeon RX584:

На компьютере, не поддерживающем работу с Resizable BAR, размер BAR равен 256 мегабайтам, независимо от объема VRAM видеокарт АМД:

При работе с видеокартами Nvidia в Linux система также сама пытается подобрать оптимальный размер BAR, но на практике это происходит значительно хуже чем у AMD.
Более полную информацию о видеокартах можно получить с помощью команды
Фрагмент информации, отображающейся о видеокарте AMD Radeon RX584 с включенной поддержкой Resizable BAR/Smart Access Memory (видно, что доступен весь размер памяти, равный 4 GB):

Пример информации о видеокарте GeForce GTX 1060 6GB, отображающейся по команде sudo lspci -s 0000:01:00.0 -vv (поддержка Resizable BAR отсутствует, доступно только 256 MB VRAM):
Пример информации, отображающейся в Linux по команде sudo dmesg | grep BAR на компьютере с видеокартами Nvidia GTX1066:
Заключение
Для использования опции Resizable BAR пользователь должен использовать совместимое оборудование и программы, которые должны быть настроены соответствующим образом. Так как алгоритм практической реализации работы с регистрами Resizable BAR задается в прикладном программном обеспечении, выигрыш от включения этой технологии не всегда одинаков (если он вообще есть).
В настоящее время подтвержден выигрыш в игровой производительности (до 12%) видеокарт Nvidia трехтысячной серии в Windows после включения Resizable BAR. Так как эта опция улучшает производительность подсистемы памяти, то выигрыш теоретически должен быть и при майнинге. К сожалению, на практике его получить не так легко, так как для этого программы для майнинга должны не только уметь работать с функцией расширения размера регистра, но и обходить ограничения относительно криптовалютных вычислений, налагаемые компанией Nvidia на видеокарты серии RTX 30xx.
В операционных системах на ядре Linux ситуация несколько лучше, так как поддержка Resizable BAR в них реализуется на уровне ядра. Для этого желательно использовать самые новые ядра Linux, а также иметь достаточный объем доступных аппаратных ресурсов (ОЗУ).
Исходя из сравнения производительности видеокарт, у которых работает опция Resizable BAR (в Linux) с такими, в которых используется стандартный размер BAR, равный 256 мегабайтам, можно сказать, что прирост хешрейта при использовании обычных программ для майнинга отсутствует.
Вам также может понравиться

Ремонт вентиляторов с оторванной обмоткой статора
27 ноября, 2020 
NVIDIA выпустила обновлённый BIOS с поддержкой Resizable BAR
Новый микрокод уже доступен всем обладателям линейки GeForce RTX 3000. Для того, чтобы активировать данную технологию, вам нужно обзавестись соответствующим железом, иметь актуальный BIOS и скачать свежий драйвер (456.89+). Помимо этого компания расширила список игр, поддерживающих ReBAR.
NVIDIA заявляет, что Resizable BAR может обеспечит прирост производительности до 12%. На практике прирост меньше, однако получить халявных 3-10% производительности никто не откажется.
Судя по первым тестам от энтузиастов, технология обеспечивает более 5% прироста производительности в 1080p, 5% в 1440p и около 3,2% в 4K.
Набор логики AMD и Intel, поддерживающий Resizable BAR (требуется обновить BIOS):
Список игр поддерживающих Resizable BAR выглядит следующим образом:
- Assassin’s Creed Valhalla;
- Battlefield V;
- Borderlands 3;
- Control;
- Cyberpunk 2077;
- Death Stranding;
- DIRT 5;
- F1 2020;
- Forza Horizon 4;
- Gears 5;
- Godfall;
- Hitman 2;
- Hitman 3;
- Horizon Zero Dawn;
- Metro Exodus;
- Red Dead Redemption 2;
- Watch Dogs Legion.
Подробную инструкцию по установке и эксплуатации Resizable BAR вы сможете найти тут.
Грустно что только 5ххх рязани поддерживаются
3000 тоже, обнови BIOS
Короче, спеки:
мать asus tuf b450 pro gaming,
ВК rtx 3080 eagle oc,
проц 3900x.
Всё установилось и завелось. везде показывает что r-BAR активен. Из заметного, в вальгалле в 1440р фпс стал стабильно выше 60. Раньше было на грани и частенько падал до 55 сейчас ниже 65 редко опускается. Из грустного, в киберпанке с последним патчем фпс стал в два раза ниже( не знаю, что произошло. Других игр установленных нет, да и фпс я в них не помню, поэтому точно сравнить не смогу. Но штука явно работает, по вальгалле очень заметно, а с кибером разобраться нужно. У меня частенько был баг, когда при сворачивании, или при изменении разрешения и разворачивании игры, фпс падал в два-три раза .
ASUS включает поддержку изменяемого размера BAR на мат.платах Intel Z490, H470 и B460 с помощью обновления BIOS

ASUS является первым производителем, который включил поддержку Resizable BAR или технологию памяти AMD Smart Access на платформе Intel. Эта технология позволяет производителям материнских плат использовать как процессоры Intel Core 10-го поколения, так и видеокарты серии AMD Radeon RX 6000 для обеспечения более высокой производительности графического процессора в играх и приложениях.
В течение последних нескольких недель мы слышали сообщения о том, что несколько материнских плат Intel серии 400 от ASUS получили поддержку указанной технологии в последней бета-версии BETA. Поддержка AMD Smart Access Memory (BAR) теперь доступна на всех материнских платах ASUS Z490, H470 и B460.
Бета-версия BIOS — 1002 (1601), которую можно загрузить для соответствующей материнской платы серии 400 через веб-страницу ASUS. Tomshardware показали, что для полного использования технологии её необходимо активировать через BIOS. Эта функция по умолчанию отключена и в настоящее время работает только с видеокартами AMD Radeon RX 6000.
Представитель ASUS Крис Веферз (через Videocardz) также представил диаграмму производительности, демонстрирующую преимущества поддержки BAR на платформе Intel. Похоже, что прирост производительности такой же огромный, как и прирост AMD, который составляет около 10-15%. Forza Horizon 4 использовался в качестве тестового сценария, который показал прирост на 13,37% с включенной BAR (память интеллектуального доступа). Платформа Intel работала под управлением материнской платы ROG Maximus XII HERI (WIFI) вместе с процессором Intel Corre i7-10700K. Графический процессор был AMD Radeon RX 6800 XT.