Содержание
На сайте есть статья, где я создавал в видеопамяти дисковый раздел и устанавливал в него игры, так же я показал как такой раздел вообще можно сделать, и так же мы с вами сравнили и производительность получившегося из видеокарты накопителя, кроме того установили на него игру и запустили игру на видеокарте в видеопамяти которой эта самая игра и была установлена.
И ещё я попереключал версии 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 тем выше удельная нагрузка на контроллер памяти и память, поэтому низкое разрешение и без сглаживания.
И 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 тысяч баллов.
То есть уменьшение шины в 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.
Более того бенчмарк для дисков попеременно даёт нагрузки на чтение и запись. И тут уже видно, что у комбустера, то есть программы с лохматым бубликом — не симметричное задействование PCI-e. от чего и отличаются FPS на бублике при чтении и записи дискового бенчмарка.
Ещё сильнее эту асимметрию использования PCI-e было видно в 3D Makr, в котором вообще без труда можно различить моменты когда бенчмарк диска переходит с тестов чтения на тесты записи и обратно. Стабильность фреймрейта меняется крайне сильно в разных этапах работы.
И для этого понадобилось всего лишь уменьшить ширину шины данных в 64 раза и параллельно пользоваться видеопамятью как накопителем.
Ну и, к сожалению, нельзя просто так в тестах понять — влияет ли одна или другая шина на производительность видеокарты и в какой степени из за шин мы недополучаем производительность.
Естественно можно косвенно судить об этом, но в наборах тестов. То есть если сравнить одну и ту же карту на PCI-e 3 версии и 4-ой версии, то будет понятно, что PCI-e третьей версии либо достаточно, либо недостаточна. Так же и с шиной между видеопамятью и графическим чипом. Если взять две видеокарты и в FullHD у них одно соотношение производительностей, а в 4К — другое соотношение при нормальных тестах видеокарты в FullHD, то есть без упора в процессор, то по изменению разрыва можно судить о недостатке шины видеопамяти.
Это просто охренеть, я в восторге от такого глубокого копания в железе и рано или поздно тоже начну снимать видосы вдохновившись этим всем. Ваша работа заслуживает памятника при жизни, а не простой похвалы.