> > > > GeForce GTX 970 – ограничения пропускной способности памяти (обновление 5)

GeForce GTX 970 – ограничения пропускной способности памяти (обновление 5)

Опубликовано:

В последние дни появляется всё больше информации о странностях с выделением памяти у видеокарты GeForce GTX 970. По сравнению с GeForce GTX 980, видеокарта GTX 970 не может использовать полные 4.096 Мбайт. Но скрупулезно проблему исследовать проблематично, поскольку идентичные игровые сцены с разным использованием памяти создать можно, но из-за погрешностей и природы игровых движков мы всё равно не получим 100-процентного соответствия настроек. Разница в производительности действительно наблюдается, но картину омрачает разная производительность двух GPU. Одном можно сказать точно: GeForce GTX 970 начинает вести себя странно при использовании более 3,5 Гбайт видеопамяти.

256-битный интерфейс памяти разделен на четыре 64-битных контроллеров у обеих видеокарт, но, судя по возникновению ограничений, техническая реализация разная. Впрочем, сегодня ситуация с GeForce GTX 970 прояснилась, поскольку NVIDIA подтвердила отличия в адресации памяти GeForce GTX 970 от GeForce GTX 980.

Watch DogsWatch Dogs

Разница в используемой памяти в Watch Dogs - GeForce GTX 970 (слева) и GTX 980 (справа) (скриншот: форум Anandtech)

Причина кроется в разных способах реализации мультипроцессоров SMM (Maxwell Streaming Multiprocessors). У GeForce GTX 980 или GPU GM204 используется четыре кластера GPC (Graphics Processing Clusters) x 4 SMM x 4 блока SMM x 32 АЛУ, что даёт 2.048 потоковых процессоров. У GeForce GTX 970 мы получаем 13 SMM x блока SMM x 32 АЛУ = 1.664 потоковых процессора. Отсутствующие SMM приводят к соответствующим "пробелам" в подсистеме памяти GPU. В результате на полной скорости адресуются только 3,5 Гбайт памяти из 4 Гбайт. В частности, NVIDIA использует два раздела памяти: на 512 Мбайт и на 3.584 Мбайт. Если игра требует 3,5 Гбайт памяти или меньше, то она может использовать только первый раздел. Если требуется больше 3,5 Гбайт, то GeForce GTX 970 использует оба раздела, но уже не на полной скорости, поэтому мы получаем разницу в производительности памяти между GTX 970 и GTX 980, которая не связана с разницей по числу текстурных блоков и потоковых процессоров.

Blockdiagramm der GeForce GTX 970Разница в диаграммах GeForce GTX 970 (слева) и GTX 980 (справа)

Разница в диаграммах GeForce GTX 970 (слева) и GTX 980 (справа)

NVIDIA также приводит некоторые результаты производительности, объясняющие ситуацию:

Производительность GeForce GTX 970
Игра/ настройки GeForce GTX 980 GeForce GTX 970
Shadow of Mordor    
<3,5 GB (2.688 x 1.512 Very High) 72 FPS 60 FPS
>3,5 GB (3.456 x 1.944) 55 FPS (-24%) 45 FPS (-25%)
Battlefield 4    
<3,5 GB (3.840 x 2.160 2xMSAA) 36 FPS 30 FPS
>3,5 GB (3.840 x 2.160 135% DSR) 19 FPS (-47%) 15 FPS (-50%)
Call of Duty: Advanced Warfare    
<3,5 GB (3.840 x 2.160 FSMAA T2x) 82 FPS 71 FPS
>3,5 GB (3.840 x 2.160 FSMAA T2x, Supersampling) 48 FPS (-41%) 40 FPS (-44%)

Приведённые значения должны демонстрировать небольшие отличия в производительности при использовании больших объёмов памяти. С этим можно согласиться. Проблема вряд ли затронет большое число пользователей. Но опасения вызывает другое: NVIDIA отреагировала на проблему только после того, как о данном факте стали сообщать многие пользователи.

Утверждение NVIDIA: "GeForce GTX 970 оснащена 4 Гбайт выделенной видеопамяти. Но у 970 используется другая конфигурация SM, отличающаяся от 980, подсистема памяти получает меньше ресурсов. Чтобы оптимально справляться с трафиком памяти в данной конфигурации, мы разделили видеопамять на сегменты 3,5 Гбайт и 0,5 Гбайт. GPU имеет приоритетный доступ к сегменту 3,5 Гбайт. Если игре требуется меньше 3,5 Гбайт видеопамяти на команды draw, то она получает доступ только к первому разделу. Некоторые утилиты сторонних разработчиков, которые измеряют использование памяти, сообщают о 3,5 Гбайт у GTX 970, при этом они могут сообщать о большем количестве памяти у GTX 980, если больший объём памяти задействуется другими командами. Когда игре требуется больше 3,5 Гбайт памяти, мы используем оба сегмента.

Мы понимаем, что возникают некоторые вопросы по поводу того, насколько быстро будет работать GTX 970 при доступе к сегменту 0,5 Гбайт. Лучше всего обратиться к производительности в играх. Мы сравнили GTX 980 и 970 в игре, которая использует меньше 3,5 Гбайт. Затем мы увеличили настройки, чтобы игра стала использовать более 3,5 Гбайт, после чего сравнили производительность 980 и 970 снова."

Конечно, было бы неплохо получить более глубокие технические пояснения NVIDIA. Обычным пользователям приведённой информации может быть достаточно, но нам было бы интересно "копнуть поглубже". В конце концов, NVIDIA должна прояснить ситуацию. Влияние на производительность действительно невелико, но подробности знать хотелось бы. Как можно видеть, намеренное замалчивание ограничения вряд ли положительно сказывается на имидже компании – ей всё же следует занимать открытую позицию.

Обновление:

Нам представилась возможность обсудить в деталях данную проблему с NVIDIA, поэтому мы рады поделиться новыми сведениями. Конечно, обидно, что NVIDIA не прояснила ситуацию во время анонса GeForce GTX 970. Всё внимание было приковано к GeForce GTX 980, поэтому небольшое ограничение по видеопамяти "младшей" модели осталось в тени, техническая и маркетинговая команды NVIDIA на нём внимание не заостряли.

Прежде всего, хотелось бы отметить, что утилитам сторонних разработчиков следует верить не всегда – точная функциональность обычно не раскрывается, от присутствия ошибок программирования нет никаких гарантий, и корректно считать используемые память и кэш не всегда представляется возможным. Это как раз касается и утилиты, которая отображает используемое пространство памяти GeForce GTX 980 и GTX 970. Как указывает NVIDIA, в адресации памяти не все так просто, поэтому выводимые значения некорректны. То есть из показаний утилиты не стоит делать вывод, что "GeForce GTX 970 в некоторых случаях сообщает о доступных всего 3,5 Гбайт видеопамяти". Это неверно.

Мы потратили сегодняшний день на проведение собственных тестов, но результаты оказались смешанными. Мы не смогли создать повторяемую ситуацию, в которой бы наблюдалось падение производительности при использовании памяти больше 3,5 Гбайт. Результаты, выводимые утилитами, тоже менялись от одного прогона к другому. К сожалению, пока нет утилиты, которая бы абсолютно точно и достоверно отображала характеристики, и здесь, наверное, самой NVIDIA следует поработать над предоставлением соответствующей информации.

Инструменты CUDA или программы, использующие интерфейс CUDA, не всегда подтверждают ограничение. Разработчик подобных утилит уже подтвердил, что они не могут дать достоверной информации о потреблении памяти или пропускной способности. "Мой тест сообщает совсем не то, что вы подразумеваете. Он сообщает о том, что ошибка VRAM не была обнаружена".

Сообщение о предположительно урезанном объёме кэша L2 до 1.792 кбайт, хотя у GPU GM204 объём кэша составляет 2.048 кбайт, тоже, скорее всего, является результатом ошибки утилиты. Если верить NVIDIA, GeForce GTX 970 обладает полностью адресуемой видеопамятью объёмом 4 Гбайт GDDR5 и 2 Мбайт кэша L2. В случае GeForce GTX 970 память поделена на разделы по 3.548 Мбайт и 512 Мбайт, которые в сумме составляют 4 Гбайт – это подтверждается официально. Причина меньшей отзывчивости раздела 512 Мбайт конкретно не называется, но, скорее всего, причина кроется в отсутствии нескольких SMM. Из-за разницы по времени между США и Европой американская команда только начала обсуждение проблемы с нашей редакцией, так что со временем, возможно, мы представим дополнительные сведения.

Драйвер пытается ограничить игры 3,5 Гбайт, он добавляет 512 Мбайт памяти только в случае необходимости, как указывает NVIDIA. Но при этом все 4 Гбайт памяти являются адресуемыми, игры могут использовать полный объём памяти. Если при этом и наблюдается падение производительности, оно составляет 1-4 процента. Большая разница по производительности связана не с памятью, а с различием в архитектуре (разное количество потоковых процессоров и т.д.).

MSI сообщила нам в письме, что выпустила обновление BIOS для GeForce GTX 970 Gaming 4G, которое должно решить проблему. По нашему вопросу компания не смогла ответить, как именно проблема была решена. NVIDIA отрицает прямую связь. Меньшая скорость адресации сегмента 512 Мбайт, о которой идёт речь, не решается обновлением BIOS, поскольку ограничение связано с архитектурой, и программным образом не решается

Итог таков: у GeForce GTX 970 доступен полный объём 4 Гбайт видеопамяти, который могут использовать игры. Но вопрос падения производительности при работе с сегментом 512 Мбайт требует детального изучения. Здесь мы ждём более подробной информации от NVIDIA. Не помешало бы полное техническое объяснение данной проблемы, хотя NVIDIA, возможно, не захочет углубляться в детали, чтобы не выдать специфические особенности работы архитектуры. Повторимся, что самые большие нарекания здесь вызывает замалчивание данной проблемы со стороны NVIDIA. Будем надеяться, что компания сделает выводы, и в будущем NVIDIA будет реагировать иначе.

Обновление 2:

MSI ответила на наш запрос: "[Обновление BIOS] обеспечивает только корректное определение 4 Гбайт видеопамяти в разных приложениях, которые из-за изменённого процесса выделения памяти выводили неправильное значение".

Это, по крайней мере, объясняет, поскольку в Сети ходит столь много противоречивых результатов по поводу использования памяти. Скорее всего, разные утилиты используют разные механизмы для получения информации. Но пока всё равно не понятно, какие механизмы получения информации будут корректно работать после обновления BIOS.

Обновление 3:

PC Perspective взял интервью с Йоханом Албеном (Jonah Alben), старшим вице-президентом команд по инжинирингу GPU. Он прояснил некоторые технические детали, в том числе взаимодействие видеопамяти, кэша, SMM и crossbar-контроллера, которые участвуют во взаимодействии потоковых процессоров и памяти.

Memory Crossbar der GM204-GPU auf der GeForce GTX 970
Crossbar-контроллер памяти GPU GM204 на GeForce GTX 970

Интересны и иллюстрации, представленные Йоханом. GeForce GTX 970 оснащена 13 активными мультипроцессорами SMM, каждый имеет по 128 потоковых процессоров. В результате мы получаем 1.664 потоковых процессора у GPU GM204. На предыдущих диаграммах crossbar-контроллер не фигурировал, однако именно он обеспечивает взаимодействие потоковых процессоров с кэшем L2 и контроллерами памяти. Как можно видеть, подключение к crossbar-контроллеру осуществляется через восемь портов. Из-за отключения мультипроцессоров SMM по сравнению с GeForce GTX 980 один из этих портов пришлось отключить. Это повлияло на количество конвейеров растровых операций и кэш L2.

Сравнение GPU GM204
МодельGeForce GTX 980GeForce GTX 970
GPU Maxwell (GM204) Maxwell (GM204)
Техпроцесс 28 нм 28 нм
Число транзисторов 5,2 млрд. 5,2 млрд.
Потоковые процессоры 2.048 1.664
Текстурные блоки 128 104
Конвейеры растровых операций (ROP) 64 56
Кэш L2 2.048 кбайт 1.792 кбайт
Объём памяти 4 GB 4 GB
Ширина шины памяти 256 бит 256 бит
Пропускная способность памяти 224 Гбайт/с 224 Гбайт/с

Видеокарта GeForce GTX 970 оснащена меньшим количеством конвейеров растровых операций (ROP) и меньшим кэшем L2, чем сообщалось ранее. Вместо 64 у видеокарты используются только 56 ROP, и вместо 2.048 кбайт кэша L2 – 1.792 кбайт. Но SMM, несмотря на снижение числа ROP, всё равно остаются ограничивающим фактором, поскольку в данном случае дополнительные ROP не принципиальны. SMM в GPU могут вычислять только 52 пикселя на такт, в случае подключения восьми ROP к каждому SMM мы получаем 56 пикселей за такт. Пропускная способность памяти по-прежнему указывается как 224 Гбайт/с, она указывает на максимальную скорость обмена между GPU и видеопамятью.

Каждый блок кэша L2 и ROP взаимодействуют с 32-битным интерфейсом, к которому подключены 512 Мбайт видеопамяти. В отличие от архитектуры "Kepler", NVIDIA в "Maxwell" может отключать определенные области кэша L2 и ROP без выключения соответствующего интерфейса памяти. Но это приводит к своим недостаткам: через один открытый порт crossbar-контроллера приходится адресовать два 32-битных раздела контроллера памяти.

Урезание кэша L2 и связанного с ним доступа к памяти
Урезание кэша L2 и связанного с ним доступа к памяти

Обычные операции доступа в память выполняются по всей ширине интерфейса памяти, что у GeForce GTX 980 хорошо сбалансировано, SMM и блоки кэша L2/ROP гармонично связаны. В случае GeForce GTX 970 картина меняется. Седьмому порту crossbar-контроллера приходится работать с памятью в два раза большего объёма, чем оставшимся шести портам. И в случае очереди запросов на доступ к данным в памяти архитектуре придётся ждать, пока седьмой порт справится с повышенной нагрузкой, в худшем случае ему потребуется в два раза больше времени на работу с памятью, чем остальным портам.

Именно по этой причине NVIDIA разделила память на два сегмента по 3.584 и 512 Мбайт. Доступ к разделу памяти 3,5 Гбайт через crossbar-контроллер выполняется сбалансированно. Но если требуется объём памяти выше 3,5 Гбайт, то 512-Мбайт область доступна только через упомянутый занятый порт.

Результаты тестов Nai (иллюстрация: PC Perspective)
Результаты тестов Nai (иллюстрация: PC Perspective)

Часто цитируемые результаты теста Nai хорошо подчеркивают проблему, но данный способ памяти отличается от того, как игра или операционная система взаимодействуют с памятью. Здесь большие объёмы данных просто записываются в память – данный сценарий относится к худшему синтетическому случаю, в реальности же всё обстоит иначе. На самом деле выделение и использование памяти следуют эвристической модели, на основе ряда принципов и правил. Система учитывает характер нагрузки и другие факторы, именно по этой причине два идентичных теста могут каждый раз выдавать разные результаты. Данные в памяти могут постоянно перемещаться из одной области в другую, в зависимости от их важности, сжатия и т.д. Здесь нет заранее детерминированной схемы, эвристическая модель редко даёт повторяемые результаты.

Как выполняется доступ к памяти на GeForce GTX 970 (и на всех других видеокартах)? Операционная система и драйверы могут обращаться к нескольким областям памяти. А именно к видеопамяти (которая у GTX 970 состоит из разделов по 3,5 и 0,5 Гбайт) и к оперативной памяти через интерфейс PCI Express. Скорость областей памяти разная, поэтому система выставляет приоритеты использования памяти. Самая быстрая память – на видеокарте, в том числе и в кэше. Но если объёма этой памяти не хватает, данные могут передаваться по шине PCI Express в оперативную память и считываться из неё. Даже "медленный" 512-Мбайт раздел GeForce GTX 970 работает во много раз быстрее, чем оперативная память через интерфейс PCI Express. NVIDIA выставляет приоритеты в драйвере, поэтому на первом месте находится раздел на 3,5 Гбайт, на втором – 512 Мбайт, а затем оперативная память через интерфейс PCI Express.

Конечно, для геймеров важен вопрос падения производительности в тех ситуациях, когда используются дополнительные 512 Мбайт. Здесь однозначного ответа нет. В тестах NVIDIA мы видим падение на единицы процентов. Но вполне допустимы некоторые сценарии, когда в других играх и в других настройках мы получим иные результаты из-за эвристической модели работы с памятью. К сожалению, ни у журналистов, ни у пользователей нет возможности протестировать видеокарты GeForce GTX 970 с активным блоком кэша L2/ROP, чтобы сравнить результаты с выключенным блоком.

В целом, интересны три сценария:

1. Если требуется меньше 3,5 Гбайт видеопамяти, то процесс выделения памяти проходит совершенно обычно.

2. Если требуется больше 4 Гбайт, то у GeForce GTX 970 мы получаем те же проблемы, что и у любой другой видеокарты с 4 Гбайт видеопамяти – использование оперативной памяти через PCI Express.

3. Самое интересное – если требуется от 3,5 до 4 Гбайт видеопамяти. Именно этот вопрос мы постараемся исследовать в ближайшие дни.

Что полученная информация означает для пользователей? Стоит ли отказаться от покупки GeForce GTX 970? Мы так не думаем, поскольку производительность GeForce GTX 970 определяется далеко не только скоростью работы с одной областью памяти. Разве что можно обвинить NVIDIA в намеренном сокрытии фактов. Почему детальная информация появилась только сегодня, а не в момент объявления GeForce GTX 980 и GTX 970? Из-за отсутствия достоверной информации многие пользователи стали ошибочно полагать, что у GeForce GTX 970 объём адресуемой памяти ограничен 3,5 Гбайт.

Пример из прошлого показывает, что есть и другой путь. Видеокарты GeForce GTX 550 Ti и GTX 660 Ti по-своему адресуют память. 192-битный интерфейс работает с 2 Гбайт видеопамяти. При этом к 128-битной части привязаны 1,5 Гбайт видеопамяти, а к 64-битной – оставшиеся 512 Мбайт. В прошлом подобная разница не скрывалась, хотя она интересовала только ограниченное число энтузиастов, интересующихся всеми характеристиками производительности. Как нам кажется, NVIDIA могла пойти таким же путём и с видеокартой GeForce GTX 970.

Обновление 4:

На собственном форуме GeForce NVIDIA объявила, что работает над обновлённым драйвером, который оптимизирует выделение памяти. Конечно, архитектуру GeForce GTX 970 изменить возможности нет, но, вероятно, какой-то потенциал для улучшения работы с памятью имеется – особенно это касается подъёма лимита раздела с 3,5 до 4 Гбайт. Но точные детали NVIDIA пока не разглашает.

"Привет,

Хотелось бы сразу сообщить, что я не просто энтузиаст, а работаю на NVIDIA в Санта-Кларе.

Мне не совсем понятно, почему многие пользователи разочарованы. Мы напутали с некоторыми характеристиками в reviewer kit и не совсем корректно пояснили архитектуру памяти. Я понимаю, что многие из вас принимают решение о покупке на основе обзоров видеокарт, и здесь мы подвели.

Обидно, поскольку мы гордимся видеокартой. GTX970 – впечатляющая видеокарта, и я уверен, что за свои деньги вы не купите видеокарты лучше. Мы работаем над обновлением драйвера, в котором мы оптимизируем процесс выделения памяти для дальнейшего увеличения производительности.

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

--Питер"

Обновление 5:

Ситуация с GeForce GTX 970 за выходные не изменилась, проблема по-прежнему горячо обсуждается. Многие магазины изменили свою позицию по возврату. Помимо простого возврата против NVIDIA может быть подан коллективный иск в США. Юридическая контора Bursor & Fischer в данное время занимается сбором доказательств, указывающих на ограничение доступа к памяти. Так что у покупателей в США могут открыться дополнительные возможности не только вернуть деньги обратно, но и получить компенсацию от NVIDIA.