Как работают графические карты

Как работают графические карты

С тех пор, как 3dfx дебютировал в оригинальном ускорителе Voodoo, ни одна единица оборудования на ПК не имела такого влияния, как ваша машина могла играть как скромную графическую карту. В то время как другие компоненты абсолютно важны, компьютер верхнего уровня с 32 ГБ оперативной памяти, процессор стоимостью 500 долларов и хранилище на основе PCIe будут задыхаться и умирать, если его попросят запустить современные названия AAA на десятилетней карточке с современными разрешениями и деталями. Графические карты (также обычно называемые графическими процессорами или графическими процессорами) имеют решающее значение для производительности игры, и мы широко их охватываем. Но мы не часто погружаемся в то, что делает тик GPU и как работают карты.

По необходимости это будет обзор высокого уровня функциональности GPU и информации об обложке, общей для интегрированных графических процессоров AMD, Nvidia и Intel, а также любых дискретных плат, которые Intel может построить в будущем. Он также должен быть общим для мобильных графических процессоров, созданных компаниями Apple, Imagination Technologies, Qualcomm, ARM и другими поставщиками.

Почему мы не запускаем рендеринг с процессорами?

Первое, на что я хочу обратить внимание, - это то, почему мы не используем процессоры для рендеринга рабочих нагрузок в играх в первую очередь. Честный ответ на этот вопрос заключается в том, что вы можете запускать рабочие нагрузки рендеринга непосредственно на CPU, по крайней мере теоретически. Ранние 3D-игры, которые предшествовали широкой доступности графических карт, таких как Ultima Underworld, полностью работали на процессоре. UU - полезный справочный пример по нескольким причинам - у него был более продвинутый движок рендеринга, чем игры, такие как Doom, с полной поддержкой поиска вверх и вниз, а также с такими расширенными функциями, как отображение текстур. Но такая поддержка пришла по высокой цене - многим людям не хватало компьютера, который мог бы запустить игру.

Ultima Underworld. Изображение от GOG
Ultima Underworld. Изображение от GOG

В первые дни 3D-игр многие названия, такие как Half Life и Quake II, отличались программным рендерером, позволяющим игрокам без 3D-ускорителей играть в заглавие. Но причина, по которой мы отбросили этот вариант из современных названий, прост: процессоры предназначены для микропроцессоров общего назначения, что является еще одним способом сказать, что им не хватает специализированного оборудования и возможностей, предлагаемых графическими процессорами. Современный процессор может легко обрабатывать титры, которые имели тенденцию заикаться при запуске программного обеспечения 18 лет назад, но ни один процессор на Земле не мог легко справиться с современной игрой AAA с сегодняшнего дня, если будет работать в этом режиме. Не по крайней мере, без каких-либо радикальных изменений на сцене, разрешения и различных визуальных эффектов.

Что такое GPU?

Графический процессор - это устройство с набором конкретных аппаратных возможностей, которые призваны хорошо отображать способ, которым различные 3D-двигатели выполняют свой код, включая настройку и исполнение геометрии, сопоставление текстур, доступ к памяти и шейдеры. Существует взаимосвязь между тем, как работают 3D-двигатели, и тем, как разработчики графических процессоров создают оборудование. Некоторые из вас могут помнить, что семейство AMD 5000 HD использовало архитектуру VLIW5, в то время как некоторые high-end графические процессоры семейства HD 6000 использовали архитектуру VLIW4. С GCN AMD изменила свой подход к параллелизму во имя извлечения более полезной производительности за такт.

Первые два блока «GPU Evolution» относятся как к AMD, так и к NV; блок «3-й эры» уникален для AMD.
Первые два блока «GPU Evolution» относятся как к AMD, так и к NV; блок «3-й эры» уникален для AMD.

Nvidia впервые придумала термин «GPU» с запуском оригинальной GeForce 256 и поддержкой для выполнения расчетов аппаратного преобразования и освещения на графическом процессоре (это соответствовало примерно запуску Microsoft DirectX 7). Интеграция специализированных возможностей непосредственно в оборудование была отличительной чертой технологии раннего GPU. Многие из этих специализированных технологий по-прежнему используются (в самых разных формах), поскольку более эффективно и быстрее использовать выделенные ресурсы на чипе для обработки конкретных типов рабочих нагрузок, чем пытаться обрабатывать всю работу в одном массиве программируемых ядер.

Существует ряд различий между GPU и ядрами CPU, но на высоком уровне вы можете думать о них как это. Процессоры, как правило, предназначены для выполнения однопоточного кода как можно быстрее и эффективнее. Такие функции, как SMT / Hyper-Threading, улучшаются, но мы масштабируем многопоточную производительность, укладывая друг в друга более высокопроизводительные однопоточные ядра. 32-ядерные процессоры AMD с 32-ядерными процессорами Epyc являются крупнейшими, которые вы можете купить сегодня. Чтобы представить это в перспективе, низкоуровневый графический процессор Pascal от Nvidia имеет 384 ядра. «Ядро» на языке GPU относится к гораздо меньшему объему обработки, чем к типичному процессору.

Примечание. Вы не можете сравнивать или оценивать относительную производительность игр между AMD и Nvidia, просто сравнивая количество ядер GPU. В одном и том же семействе GPU (например, Nvidia GeForce GTX 10 или AMD RX 4xx или 5xx), более высокий показатель ядра GPU означает, что GPU более мощный, чем карта нижнего уровня.

Причина, по которой вы не можете сделать немедленные выводы о производительности GPU между производителями или базовыми семействами, основанными исключительно на подсчетах ядра, заключается в том, что разные архитектуры все более и более эффективны. В отличие от процессоров, графические процессоры предназначены для работы параллельно. Как AMD, так и Nvidia структурируют свои карты в блоки вычислительных ресурсов. Nvidia называет эти блоки SM (Streaming Multiprocessor), в то время как AMD относится к ним как к вычислительному модулю.

Потоковый многопроцессор Pascal (SM).
Потоковый многопроцессор Pascal (SM).

Каждый блок содержит группу ядер, планировщик, файл регистров, кэш команд, текстуру и кеш L1 и единицы отображения текстуры. SM / CU можно рассматривать как наименьший функциональный блок GPU. Он не содержит буквально все - видео-декодирует движки, выводит выходы, необходимые для фактического рисования изображения на экране, а интерфейсы памяти, используемые для связи с встроенным VRAM, выходят за рамки его компетенции, но когда AMD относится к APU как имеющему 8 или 11 Vega Compute Units, это (эквивалентный) блок кремния, о котором они говорят. И если вы посмотрите на блок-схему графического процессора, любого графического процессора, вы заметите, что SM / CU дублируется на изображении десяток или более раз.

И вот Паскаль, полное жирное издание.
И вот Паскаль, полное жирное издание.

Чем больше количество блоков SM / CU в графическом процессоре, тем больше работы он может выполнять параллельно за такт. Рендеринг - это тип проблемы, который иногда называют «смущающей параллелью», что означает, что он имеет потенциал для масштабирования вверх очень хорошо, так как увеличение сердечных сокращений увеличивается.

Когда мы обсуждаем проекты графического процессора, мы часто используем формат, который выглядит примерно так: 4096: 160: 64. Количество ядер GPU - это первое число. Чем больше, тем быстрее GPU, если мы сравниваем его в одном семействе (GTX 970 против GTX 980 против GTX 980 Ti, RX 560 против RX 580 и т. Д.).

Отображение и отображение текстур

Существуют два других основных компонента графического процессора: единицы отображения текстур и выходы рендеринга. Количество единиц текстурирования в дизайне диктует максимальный выход texel и как быстро он может адресовать и отображать текстуры на объекты. Ранние 3D-игры использовали очень мало текстурирования, потому что задача рисования трехмерных многоугольных фигур была достаточно сложной. Текстуры на самом деле не нужны для 3D-игр, хотя список игр, которые их не используют в современную эпоху, крайне мал.

Число единиц текстурирования в графическом процессоре обозначается второй цифрой в метрике 4096: 160: 64. AMD, Nvidia и Intel обычно меняют эти цифры, так как масштабируют семейство GPU вверх и вниз. Другими словами, вы действительно не найдете сценарий, когда один графический процессор имеет конфигурацию 4096: 160: 64, в то время как графический процессор выше или ниже его в стеке - это конфигурация 4096: 320: 64. Отображение текстур может быть абсолютно узким местом в играх, но на следующем максимальном графическом процессоре в стеке продуктов обычно будет предлагаться как минимум больше ядер GPU и блоков отображения текстур (независимо от того, имеют ли карты более высокого класса больше ROP в зависимости от семейства GPU и конфигурации карты ).

Выходы Render (также иногда называемые конвейерами растровых операций) - это то, где вывод графического процессора собран в изображение для отображения на мониторе или телевизоре. Количество выходов рендеринга, умноженное на тактовую частоту GPU, контролирует скорость заполнения пикселей. Более высокое количество ROP означает, что одновременно может выводиться больше пикселей. ROP также обрабатывают сглаживание, и включение AA - особенно суперсэмплинга AA - может привести к ограничению скорости заполнения.

Пропускная способность памяти, объем памяти

Последние компоненты, которые мы обсудим, это пропускная способность памяти и объем памяти. Предел пропускной способности памяти относится к тому, сколько данных можно скопировать в выделенный VRAM-буфер GPU и из него. Многие расширенные визуальные эффекты (и более высокие разрешения в целом) требуют большей пропускной способности памяти для работы с разумной частотой кадров, поскольку они увеличивают общий объем данных, которые копируются в ядро ​​GPU и из него.

В некоторых случаях нехватка полосы пропускания памяти может быть существенным узким местом для графического процессора. APU AMD, такие как Ryzen 5 2400G, сильно ограничены полосой пропускания, что означает, что увеличение тактовой частоты DDR4 может существенно повлиять на общую производительность. Выбор игрового движка также может оказать существенное влияние на пропускную способность памяти, которую требуется GPU, чтобы избежать этой проблемы, равно как и целевое разрешение игры.

Общий объем встроенной памяти - еще один важный фактор в графических процессорах. Если количество VRAM, необходимое для выполнения на заданном уровне детализации или разрешении, превышает доступные ресурсы, игра будет по-прежнему выполняться, но для хранения дополнительных данных текстуры потребуется использовать основную память центрального процессора, и она значительно увеличивает GPU извлекать данные из DRAM в отличие от своего бортового пула выделенного VRAM. Это приводит к массивному заиканию, так как игра шатается между вытягиванием данных из быстрого пула локальной памяти и общей системной ОЗУ.

Одна вещь, о которой нужно знать, это то, что производители графических процессоров будут иногда оснащать низкоуровневую или среднюю карту большим количеством VRAM, чем в противном случае стандартным, как способ взимать немного больше за продукт. Мы не можем сделать абсолютный прогноз относительно того, делает ли это GPU более привлекательным, потому что, честно говоря, результаты варьируются в зависимости от рассматриваемого GPU. Что мы можем вам сказать, так это то, что во многих случаях не стоит платить больше за карту, если единственная разница - это большой буфер RAM. Как правило, нижние конечные графические процессоры, как правило, сталкиваются с другими узкими местами, прежде чем они будут забиты ограниченной доступной памятью. Если вы сомневаетесь, проверьте отзывы о карте и посмотрите, сравнивается ли версия 2 ГБ с 4-граммовым ароматом или каким бы то ни было соответствующим объемом ОЗУ. Чаще всего, если предположить, что все остальные равны между двумя решениями, вы обнаружите, что более высокая загрузка ОЗУ не стоит платить.

Ознакомьтесь с нашей серией «Объяснения» для более глубокого освещения сегодняшних самых популярных тем.