Содержание
Не так давно я наткнулся на новость о том, что какая-то стримерша запустила крайзис 3, установленный в память видеокарты. Захожу я в эту новость в надежде узнать чем же дело закончилось, а оказалось ничем не закончилось, потому что новость оказалось не о чём и никаких толковых результатов в новости нет.
Но любопытство было уже не унять, так что я решил, что данное мероприятие можно провести более качественно, ну и надо это дело как-то с чем-то сравнить.
Единственное у меня нет видеокарты на 24 гига, а есть только 8 гиговая RTX 2070, что существенно снижает спектр возможных для установки игр.
Что касается игр — естественно будет меняться только скорость загрузки, а учитывая то, что сейчас нет видеокарт на 150 гигов чтобы записать туда какую-нибудь RDR2 с большими локациями, то практический смысл запуска игр в целом довольно сомнительный.
Что касается игр сравнивать мы будем вирам диск с рам диском, ну и ещё с SSD и жёстким диском в придачу. В общем я устанавливал игры, не только в видеокарту, но и в оперативную память.

Как создать дисковый раздел в видепамяти?
И для начала я покажу, как вообще создать раздел в видеопамяти, мало ли кому то тоже захочется это сделать.
А делается это из под винды очень просто.
Заходите на гитхаб. И скачиваете утилиту GpuRamDrive.
Качаете самый свежий релиз. На момент написания статьи самая свежая версия — 0.4.
Утилита эта не самостоятельная, и требует для установки ещё программу ImDisk.
При установки ImDisk никакие галочки не трогайте, устанавливаете как есть.
После установки ImDisk просто запускаете нужную для вашей системы версию GPURAMDRIVE — указываете размер диска, выбираете для него букву, а так же в специальной области указываете в какую файловую систему вы хотите отформатировать вновь создаваемый раздел. У меня тесты будут в файловой системе NTFS.

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

Кроме того я могу ещё уменьшить число линий PCI-e до одной, используя рейзер.

16 Линий PCI-e третьей версии должна давать теоретическую пропускную способность около 16 ГБайт в секунду, практическая составляет где-то около 12.

1 Линия PCI-e первой версии имеет пропускную способность в 250 Мбайт в секунду, то есть чуть медленнее, чем сата 2.

Итого имеется возможность менять ширину канала к vRAM диску в 64 раза между самым быстрым и самым медленным.
Специфика установки игр
Решил я поставить GTA SanAndreas.

Она занимает около 4,5 Гигов и без проблем помещается в видеопамяти. Благо со Steam очень легко переносить игры, надо только откопипастить файлы игры, добавить в «стиме» путь к игре и он автоматом подтянет всё необходимое для запуска.

Это решает вопрос с обнулением дисков после перезагрузки компьютера, а сохранения лежат в документах, так что в целом — это даже можно использовать в реальности.
Ну и в общем-то игры запускается самым обычным образом.
Игровой процесс есть на видео ниже:
Никаких особенностей у геймплея я не заметил. Я пробовал и на скорости ездить чтобы заставить игру подгружать локации, но учитывая объёмы данных для этой игры — сложно было бы ожидать каких-то проблем.
Что касается времени загрузки, я так понял, что у анимации загрузки есть максимально возможная скорость ползунка загрузки. И от потемнения экрана после выбора сохранения до завершения движения полосы загрузки это 3,5 секунды. vRAM диск и RAM диск показывают равную скорость загрузки в 3,5 секунды.

Но тут ничего невероятного нет. Ещё игру я поставил на довольно быстрый NVME накопитель. Загрузка те же 3,5 секунды.

Я уже сказал, что ещё есть эксперименты по версиям PCI-e и числу линий. Естественно я игру проверил на нескольких вариантах подключения. На PCI-e v3 на одной линии — загрузка те же 3,5 секунды. И только на одной линии PCI-e v1 время загрузки увеличилось до 3,667 секунды. Для сравнения я игру установил на обычный жёсткий диск. Время загрузки на нём составило 4,1 секунды.

Замеры быстродействия vRAM диска
Так же естественно надо посмотреть на производительность этих всех накопителей.
Начнём с более традиционных систем. Покажу на что способен SSD, на который я ставил игру чтобы было с чем сравнивать.


Результаты vRAM диска.


Результаты не обнадеживающие.
Естественно тут причина в софтверной составляющей. Кроме того по скорости работы памяти видно, что видеокарта ограничена 4-мя линиями PCI-e. При этом я убедился в том, что видеокарта не переходила в энергосберегающие режимы работы, когда версия PCI-e на современных картах падает с третьей на первую. Видеокарта адекватно на всех нагрузках на vRAM диск переходила на PCI-e третьей версии. Если абстрагироваться от работы с видеопамятью через накопитель, а замерять скорость работы памяти используя средства замера скорости работы памяти специальные для видеокарт, то мы получаем 64 ГБайт в секунду, а не жалкие 3. Естественно с точки зрения работы диска мы бы не смогли получить больше 12, из-за PCI-e. 12, это, конечно, не 64, но и не 3. Но так или иначе — я нашёл только одну утилиту, которая позволяет разметить как дисковый раздел видеопамять, так что каких-то альтернатив всё равно нет.
Ну и полученные цифры — это не ограничения у бенчмарков для дисков. Допустим с RAM диском, то есть диском на оперативной памяти — цифры значительно выше.


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

Перейдя на PCI-e второй версии оставив все 16 линий Sandra от SiSoftware уже определила эффективную пропускную способность шины в 6 ГБайт в секунду.


Однако, опять же — скорость всё равно не 6 ГБайт в секунду, а два с половиной. В целом — работа памяти замедлилась как на крупных, так и на мелких файлах.
Переход на PCI-e первой версии снизил определяемую сандрой эффективную пропускную способность шины до 3 ГБайт в секунду.


Скорость упали ещё сильнее.

По цифрам — это естественно уже гораздо ниже, чем показывают хорошие SSD. Но не надо забывать, что у SSD то что показывают такие бенчмарки — это скорость работы буфера, а не реальные данные по памяти. так что если вдруг вы когда-то купили себе офисную затычку на 4 Гига видеопамяти, и у вас фобия на счёт файлов подкачки на SSD накопителе, то вы можете подключить такую видеокарту в свободный слот и использовать её память для размещения файла подкачки, у видеопамяти нет ресурса на перезапись, в отличие от SSD. Кстати о том, почему у SSD есть ограничение ресурса было отдельное видео на канале.
Это были тесты на слотах X16. Естественно можно используя рейзер ограничить число линий до одной.
К сожалению система не хотела стартовать на этом рейзере, когда он подключен в процессорный слот PCI-e, даже несмотря на то что у меня рейзер с доп питанием, и такие работают устойчивее.

Пришлось переключиться на чипсетный порт PCI-e.

Для чипсета точно так же как и для процессорного слота я могу в биосе поменять версию PCI-e.

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

Одна линия PCi-e третьей версии даёт нам накопитель по скорости как средненький sata SSD накопитель. В общем — невероятными скоростями здесь уже не пахнет.


Стоит сказать, что на этом этапе сандра уже отказалась считать ширину доступа к видеокарте, но GPU-Z определял версию PCI-e правильно.
Накопитель на одной линии второй версии не дотягивает уже и до бюджетных SATA SSD накопителей. Вернее если у вас на материнской плате SATA 2, а не SATA 3, то какие-то такие цифры вы увидите для накопителей.

Одна линия PCI-e первой версии по последовательному чтению и записи не может впечатлить даже жёсткие диски, а не то что SSD накопители.



На одной линии PCI-e первой версии я тоже запустил GTA San Andreas. И FPS между PCI-e x16 v3 и PCI-e x1 v1 изменился. При обычном подключении FPS был между 110-170, а с x1 v1 между 60-110. При этом могу сказать, что тут причина не в том, что игра установлена в видеокарту. Если установить игру как обычно, то FPS будет почти такой же, то есть ниже, чем при нормальном подключении к видеокарте.
Естественно тут уже причина в узкой ширине шины одной линии PCI-e первой версии. И в целом — для видеокарты сложно оценить, что будет если бы, например на одной и той же видеокарте была ниже битность шины между видеопамятью и видеокартой, или где вообще тот предел по нагрузке на PCI-e когда порт начинает влиять на производительность. И как вообще выглядит ограничения по производительности этими шинами. Например тут видно, что в SanAndreas на одной линии PCI-e первой версии видеокарта загружена на 100% и FPS ниже, чем на x16 третьей версии. При этом на PCI-e x16 третей версии игра упиралась в одно ядро процессора, так как игра однопоточная, и из-за этого видеокарта не нагружалась в силу простой графики в старой игре. То есть FPS был бы ещё выше, а на узком PCI-e загрузка на видеокарту только выросла по мониторингу, а FPS упал. Вот такие вот пироги.
И к счастью доступ к видеопамяти как к накопителю даёт много возможностей по тому чтобы отбирая производительность шин и контроллеров памяти у видеокарты — имитировать уменьшение ширины шин, а значит мы можем посмотреть как ведут себя игры и видеокарта в условиях, когда, допустим, производитель урезает битность шины памяти.
И в общем-то такие магические работы я провёл, когда внезапно 100% загрузки одной и той же видеокарты получаются на кардинально различных производительностях, и главное с объяснением того как это происходит, но выделил я это в отдельную статью.
Видео на YouTube канале "Этот компьютер"













