ASUS Vega56 с точки зрения PCI Express

27 Июл 2018

Мощные видеокарты в продвижении не нуждаются — обо всем уже по­за­бо­ти­лись май­не­ры. Но к ар­хи­тек­ту­ре этих слож­ней­ших уст­ройств ос­та­ет­ся ряд во­про­сов из об­лас­ти «хард­вер­но­го экс­три­ма». И ес­ли в на­шей тес­то­вой ла­бо­ра­то­рии по­я­вил­ся 3D-ус­ко­ри­тель от ASUS, по­ст­ро­ен­ный на ба­зе гра­фи­че­ско­го про­цес­со­ра AMD Radeon RX Vega 56, по­ста­ра­ем­ся ос­ве­тить их. В этом нам по­мо­жет про­грам­мный ин­стру­мен­тарий RWEverything, с по­мо­щью ко­то­ро­го бу­дем ана­ли­зи­ро­вать про­грам­мную мо­дель PCIe-контроллера, от­вет­ст­вен­но­го за ком­му­ни­ка­цию CPU с GPU.

Итак, знакомство в ROG Strix RX Vega 56 Gaming принесло две новости. Хорошая в том, что диапазон доступа к ви­део па­мя­ти лежит выше 32-битного лимита в 4GB. Плохая — в том, что размер диапазона всего 256MB, и это пред­по­ла­га­ет постраничный доступ к видео памяти вместо плоской линейной адресации ее полного объема.

Исследуемые объекты

Проанализируем дамп конфигурационных регистров устройства ASUS ROG Strix RX Vega 56 Gaming. Нас в первую очередь будет интересовать содержимое 64-битного регистра BAR0, задающее один из диапазонов доступа к ви­део па­мя­ти, а также структура Resizable BAR Capability, позволяющая управлять размером адресуемых ди­а­па­зо­нов.

BAR0 представлен в дампе PCI-пространства в виде последовательности байтов, после перевода в 64-битное чис­ло его значение определяется как 000000400000000Ch. Расшифруем его согласно диаграмме, определяющей по­ля регистра PCI BAR, как это регламентирует документ PCIe Specification.

Хорошая новость в том, что базовый адрес (4000000000h) находится в диапазоне, расположенном вне 32-битного адресного пространства, верхний 4GB-лимит которого ограничен адресом 100000000h. Под самым пристальным вниманием — атрибуты базового регистра — биты [3-0] = 1100b:

  • D3 = 1 — единица означает, что для диапазона разрешены спекулятивные операции, такие как опе­ре­жа­ю­щее чтение (prefetch) и группировка нескольких циклов записи малой разрядности в один цикл сум­мар­ной раз­ряд­нос­ти (write-combining).
  • D[2,1]=10b — означает поддержку 64-битной адресации, при этом 32-битный регистр BAR1, расположенный после BAR0 используется как расширение BAR0, а конкатенация двух 32-битных регистров BAR0, BAR1 оп­ре­де­ля­ет 64-битный адрес.
  • D0 = 0 — Memory space — для обозначения диапазонов памяти этот бит обнулен.

О максимальных и используемых возможностях

Пользуясь документами «Expanded Resizable BARs» и «Resizable BAR Capability» расшифруем содержимое струк­ту­ры Resizable BAR Capability, акцентируя внимание на битовых полях, декларирующих максимальный под­дер­жи­ва­е­мый и те­ку­щий установленный размеры диапазонов доступа к видео памяти. Одноименный регистр Resizable BAR Capability, расположенный по смещению 4 относительно начала структуры (выделенной красным пря­мо­у­голь­ни­ком) содержит байты 00, F0, 03, 00, что соответствует 32-битному числу 0003F000h. Акцентируем внимание на том, что установлены биты от 12 до 17.

Согласно диаграмме Resizable BAR Capability Register это означает, что видео контроллер способен предоставлять диапазоны доступа к видео памяти, размер которых составляет от 256MB до 8GB. Регистр Resizable BAR Control, расположенный по смещению 8 относительно начала структуры (выделенной красным прямоугольником) со­дер­жит байты 40, 08, 00, 00, что соответствует 32-битному числу 840h или 0000.0000.0000.0000.0000.1000.0100.0000b в двоичном коде.

Согласно диаграмме Resizable-BAR-Control-Register это означает, что текущий — запрограммированный UEFI или (не)перенастроенный драйвером — диапазон составляет 256 Мегабайт, так как содержимое битового поля [12-8] соответствует десятичному числу 8. Если в рабочем документе PCI SIG смущает обилие редакторских правок, све­рим­ся по последней версии PCIe Specification 4.0:

Запустив диспетчер устройств, своими глазами убедимся в том, какие ресурсы выделены графическому адап­те­ру ROG Strix RX Vega 56 Gaming в операционной системе Windows:

Как видим, диапазон расположен по адресам 4000000000h-400FFFFFFFh выше 32-битного лимита 4GB, но его раз­мер всего лишь 256 MB.

Выводы

Видео адаптер ROG Strix RXVEGA56 08G Gaming декларирует способность включать диапазоны доступа к ло­каль­ной памяти до 8GB, но программное обеспечение использует только ограниченный режим в 256 MB.

Вместе с тем, не следует преувеличивать значимость этого факта, ведь он влияет на представление ресурсов ви­део контроллера в адресном пространстве CPU и не влияет на bus-master операции GPU, выполняющего соб­ст­вен­ный командный поток в собственном программном контексте, за исключением сценария peer-to-peer вза­и­мо­дей­ст­вия между PCIe-устройствами, например несколькими GPU, когда это обстоятельство приобретает важ­ность.

Теги: