Влияние шин PCI-e и внутренней шины видеокарты на производительность

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

И ещё я попереключал версии PCI-e до первой и запустил видеокарту, в том числе и на одной линии разных версий PCI-e.

И закончилось всё тем, что оказывается на одной линии PCI-e первой версии производительность игр не такая как при нормальном подключении видеокарты и я пообещал, что расскажу, а главное покажу как это происходит. И для этого мне как раз нужна возможность создавать на видеокарте дисковый раздел и отбирая возможности шин видеокарты, задавая нагрузку на них через накопитель мы в реальном времени сможем увидеть как менялась бы производительность видеокарты, если бы у неё была другая битность шины или более узкая шина PCI-e.

И этим мы с вами сможем лучше узнать как ведёт себя карта, когда есть проблемы с шириной PCI-e или проблемы с внутренними шинами между видеопамятью и графическим чипом. Допустим нужен ли видеокарте PCI-e четвёртой версии и как в тестах может выглядеть эта нужда. Или я, например, хочу узнать как выглядит в тестах когда возникает голод по данным у графического чипа из-за узкой шины памяти. 

Что за шины, и что они делают?

Чтобы объяснить что я могу изменить и то почему изменились результаты для начала я представлю вам схему связки процессора и видеокарты.

У меня тут i9 9900k у него есть внутренняя кольцевая шина и в стоке процессора где-то на 350 ГБайт/с по данным скорости кеша L3 у процессора на все 8 ядер.

Процессор связан с оперативной памятью северным мостом встроенным в процессор. Память у меня в разгоне и выдаёт где-то 60 ГБайт/с на пару встроенных контроллеров.

Кроме того процессор связан с видеокартой.

Шина соединяющая одно с другим  в реальности около 12 ГБайт/с если говорить про 16 линий PCI-e третьей версии.

В самой же видеокарте есть своя память, собственно эту память мы и будем мучить. Она с графическим чипом соединена шиной на 448 ГБайт/с (для моей RTX 2070). Это теоретически. Практически мне сандра от сисофтвер говорит, что удалось ей измерить ширину около 350 ГБайт/с.

Естественно у графического процессора есть и внутренняя шина, точно так же как и центрального процессора. И она ограничивает работу уже в том числе и с кеш памятью.

Данных по ней у меня нет, но она в несколько раз быстрее, чем шина между графической памятью и графическим процессором. Допустим не так давно эту цифру рассказали в AMD, говоря про инфинити кеш в новых картах.

Не знаю как там память по иерархии, эксклюзивная или инклюзивная, не факт, что можно складывать ширину памятей как это сделали AMD, но суть в том, что теоретическая пропускная способность видеопамяти у карты 512 ГБайт в секунду, а внутренняя шина получается около 1150 ГБайт в секунду.

Но в целом — в этой схеме конкретные цифры особо не важны.

Важны соотношения.

Нажмите для увеличения

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

Как оценить что происходит, если шины слишком узкие?

И тут возвращаемся к основной теме. Возможность работы с видеопамятью как с накопителем позволяет задать на эти

(выделены красным)

части высокую мусорную нагрузку, забирающую производительность этих шин, что позволит мне показать вам недостаточности ширины шин максимально наглядно, то есть задаю мусорную нагрузку на шины и производительность падает. Снимаю нагрузку — производительность возвращается в норму.

Ограничение внутренней шины видеокарты

Начнём с PCI-e X16 третьей версии.

Напомню, что вот обычная производительность.

Эта программа начинает спамить на накопитель и с него вначале мелкие файлы, потом файлы становятся крупнее, крупнее и т.д. То есть в самом начале давая максимальную нагрузку на контроллер накопителя (он же контроллер памяти видеокарты) и тестируя гибкость внутренней иерархии памяти. И уже ближе к концу — нагрузка идёт не на контроллер, а на сами возможности памяти и на ширину пропускания канала памяти.

То есть включение этого бенчмарка диска отбирает часть прыткости и PCI-e и внтурненней шины между памятю и графическим процессором, а так же грузит излишне контроллер памяти, так как работа с памятью идёт через встроенные в графический процессор контроллеры.

И так — в качестве эталонной нагрузки я выбрал комбустер с минимальным разрешением и без сглаживания у крутящегося бублика. Он сам по себе требователен к контроллеру памяти, несмотря на то что сам стресс тест не занимает много памяти в видеокарте. Ну и тут чем больше FPS тем выше удельная нагрузка на контроллер памяти и память, поэтому низкое разрешение и без сглаживания.

PCI-e x16 v3 без нагрузки

И RTX 2070 выдаёт 600 FPS, но стоит включить нагрузку на контроллер памяти как FPS падает до 400.

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

Собственно сейчас мы с вами наблюдаем виртуально RTX 2070 с уменьшенной пропускной способностью внутренней шины между чипами памяти и графическим процессором. Карта по мониторингу загружена одинаково, а производительность разная. В данном случае отличить нагрузку можно только по FPS и по температурам карты. Естественно, что из-за голода данных начинаются в карте простои, так как задачи есть — загрузка показывается высокой, но на деле нагрузка падает.

Кроме того я сделал замеры и в 3D Mark TS.

Без нагрузки но уже с выделенной под диск областью я получил около 9 тысяч баллов. С лишней нагрузкой на контроллер памяти и память — около 8 тысяч баллов.

В имитации реальной нагрузки разница уже не такая большая, как в комбустере на низком разрешении, ну на то я его и выбрал, чтобы показать какая разница может быть.

И с увеличением объёмов данных важность ширины шины между графическим процессором и видеопамятью увеличивается. Этот эффект многие из вас видели в сравнительных тестах разных видеокарт в разных разрешениях.

Допустим есть две карты имеющие схожие производительности и предположим, одинаковой памятью. Но одна — это топовое решение прошлого поколения с большой битностью шины между видеопамятью и графическим чипом, а другая карта — это среднее решение нового поколения с меньшей шириной шины.

И карты имея схожую производительность, допустим, в FullHD показывают равную производительность, но в 4К топ прошлого поколения уже становится быстрее новинки.

Причина как раз в том, что я и показал — в 4К нагрузка на контроллер памяти и память вырастает и несмотря на равную теоретическую производительность, у карты с меньшей шириной шины реальная производительность падает.

Чаще, конечно, это видно в видеокартах разных уровней производительности. В FullHD у них может быть разница 20-30%, но в 4К разница увеличивается уже до 50%.

Это тот же эффект, что я и показал — карта не вывозит нагрузку по памяти и из-за простоев от голода памяти производительность не та, которая должна быть.

Но в данном случае, на PCI-e x16 третьей версии, тут вносит в уменьшение производительности только внутренняя шина видеокарты, а не сам PCI-e просто в силу того, что накопитель работает в скорости x4 и ширину канала существенно он не забивает, а нагрузка просто мешает работе контроллера памяти видеокарты, который перестаёт вывозить от мусорной нагрузки.

Смешанное влияние и на PCI-e и на внутреннюю шину

И запас по шине PCI-e x16 третей версии для обычных задач игровой видеокарты на самом деле довольно приличный.

Путем использования рейзера я уменьшил эту шину по ширине в 16 раз. И такие уменьшения не так чтобы трагично сказываются на производительности. В 3D Mark в тесте с рендерингом в 1440р естественно уже производительность начала падать на RTX 2070. И вместо 9 тысяч баллов я уже получаю 7,7 тысяч баллов.

PCi-e x1 v3

То есть уменьшение шины в 16 раз, не учитывая, естественно, вопросов подгрузок крупных локаций при недостатке видеопамяти и кешировании их в оперативной только начинает сказываться на недостаточности канала самого PCI-e на приличной по производительности видеокарте.

Для игрового процесса объёмы перемещающихся через PCI-e данных кроме текстур в целом не очень большие. Видеокарта с процессором, естественно, постоянно обмениваются данными по вызовам на отрисовку, данные перемещаются о подготовленных для начала отрисовки кадрам и в целом во многом нагрузка зависит от сложности геометрии и количества объектов в игре и количеству FPS, так как нагрузка получается пропорциональная FPS. И только уменьшив шину PCi-e в 16 раз, то есть с 16 линий до одной, уже эта постоянная текущая, удельная на каждый кадр, нагрузка на PCI-e начала хоть как-то влиять на само ограничение FPS.

Естественно в данном случае — включив ещё и нагрузку на видеопамять как на накопитель — мы начинаем мешать и контроллеру памяти, то есть снижаем эффективность шины между видеокпамятью и графическим чипом, но вдобавок ещё и отбираем часть ширины канала PCI-e, которая и так уже начала вызывать проблемы с производительностью.

То есть тут мы видим промежуточный вариант, когда нагрузка оказывает влияние на обе шины в схеме. И в 3D Mark количество баллов упало уже до 6700.

То есть случай сильного влияния только на внутренюю шину мы рассмотрели.

Случай влияния через обе шины тоже.

И остаётся теперь случай, когда основное влияние будет оказывать только PCI-e.

Влияние PCI-e на производительность

Переходим на одну линию PCI-e первой версии.

Без нагрузки 3D Mark уже показывает только 5 тысяч баллов.

Опять же напомню, что теоретическая производительность карты одна и та же. То есть графический процессор не становится медленнее. Просто он из-за ожидания данных или ожидания завершения отправки данных которые стоят в пробке из-за PCI-e стоит в простое.

Если же ещё добавить лишнюю нагрузку на PCI-e используя vRAM диск, то количество баллов падает ниже трёх тысяч.

То есть одна и так же карта, имея одну и ту же производительность показывает производительность различающуюся в три раза просто из-за простоев от голода данных, но по мониторингу во всех случаях имея загрузку в 100%.

Вот такие дела.

Ещё немного издевательств над видеокартой

На одной линии PCI-e первой версии на самом деле видеокарте становиться уже очень сильно плохо.

И это видно даже не в нагрузке на диск специальной программой, а просто при копировании данных.

Производительность карты резко снижается. А при работе бенчмарка диска больше всего падает производительность когда этот бенчмарк создаёт выделенную область в памяти, то есть передаёт целый гигабайт мусорных данных грубо говоря одним файлом, то есть с минимальной нагрузкой на контроллер памяти видеокарты, который уже в начале работы бенчмарка позволяет из-за задержек самой памяти уменьшать объёмы данных через PCI-e.

29 FPS против 600 для карты подключенной обычным способом и без нагрузки на контроллер памяти

Более того бенчмарк для дисков попеременно даёт нагрузки на чтение и запись. И тут уже видно, что у комбустера, то есть программы с лохматым бубликом — не симметричное задействование PCI-e. от чего и отличаются FPS на бублике при чтении и записи дискового бенчмарка.

Ещё сильнее эту асимметрию использования PCI-e было видно в 3D Makr, в котором вообще без труда можно различить моменты когда бенчмарк диска переходит с тестов чтения на тесты записи и обратно. Стабильность фреймрейта меняется крайне сильно в разных этапах работы.

И для этого понадобилось всего лишь уменьшить ширину шины данных в 64 раза и параллельно пользоваться видеопамятью как накопителем.

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

Естественно можно косвенно судить об этом, но в наборах тестов. То есть если сравнить одну и ту же карту на PCI-e 3 версии и 4-ой версии, то будет понятно, что PCI-e третьей версии либо достаточно, либо недостаточна. Так же и с шиной между видеопамятью и графическим чипом. Если взять две видеокарты и в FullHD у них одно соотношение производительностей, а в 4К — другое соотношение при нормальных тестах видеокарты в FullHD, то есть без упора в процессор, то по изменению разрыва можно судить о недостатке шины видеопамяти.

Видео на YouTube канале "Этот компьютер"

One Comment on “Влияние шин PCI-e и внутренней шины видеокарты на производительность”

  1. Это просто охренеть, я в восторге от такого глубокого копания в железе и рано или поздно тоже начну снимать видосы вдохновившись этим всем. Ваша работа заслуживает памятника при жизни, а не простой похвалы.

Добавить комментарий