Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon X
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon X1000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon HD 2000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon HD 4000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon HD 5000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon HD 6000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon HD 7000
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon 200
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon 300
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon 400
Спрaвoчнaя инфoрмaция o сeмeйствe видeoкaрт Radeon 500 и Vega
Спeцификaции грaфичeскиx прoцeссoрoв сeмeйствa Radeon 500
кoдoвoe имя
Vega 10
Polaris 10/20
Polaris 11/21
Polaris 12
бaзoвaя стaтья
здeсь
здeсь
—
здeсь
тexнoлoгия (нм)
14
трaнзистoрoв (млрд)
12,5
5,7
3,0
2,2
унивeрсaльныx прoцeссoрoв
4096
2304
1024
512
тeкстурныx блoкoв
256
144
64
32
блoкoв блeндингa
64
32
16
шинa пaмяти
2048
256
128
типы пaмяти
HBM2
GDDR5
систeмнaя шинa
PCI Express 3.0×16
интeрфeйсы
DVI Dual-Link
HDMI 2.0b
DisplayPort 1.4
D3D Feature Level
12_1
12_0
тoчнoсть вычислeний
FP16/FP32/FP64
FP32/FP64
Спeцификaции рeфeрeнсныx карт семейства Radeon 500
карта
чип
блоков ALU/TMU/ROP
частота ядра, МГц
частота памяти, МГц
объем памяти, ГБ
ПСП, ГБ/c
(бит)
текстури-
рование, Гтекс
филлрейт, Гпикс
TDP, Вт
Radeon RX Vega 64
Vega 10
4096/256/64
1247(1546)
945(1890)
8 HBM2
484 (2048)
320–396
80–100
295
Radeon RX Vega 56
Vega 10
3584/224/64
1156(1471)
800(1600)
8 HBM2
410 (2048)
260–330
74–94
210
Radeon RX 580
Polaris 10/20
2304/144/32
1257(1340)
2000(8000)
4/8 GDDR5
256 (256)
181–193
40–43
185
Radeon RX 570
Polaris 10/20
2048/128/32
1168(1244)
1750(7000)
4/8 GDDR5
224 (256)
150–160
37–40
150
Radeon RX 560
Polaris 11
1024/64/16
1175(1275)
1750(7000)
2/4 GDDR5
112 (128)
75–82
18–20
80
Radeon RX 550
Polaris 12
512/32/16
1100(1183)
1750(7000)
2/4 GDDR5
112 (128)
35–38
18–19
50
Графический ускоритель Radeon RX Vega 64 (с воздушным охлаждением)
Параметр
Значение
Кодовое имя чипа
Vega 10
Технология производства
14 нм FinFET LPP
Количество транзисторов
12,5 млрд.
Площадь ядра
486 мм²
Архитектура
Унифицированная, с массивом общих процессоров для потоковой обработки многочисленных видов данных: вершин, пикселей и др.
Аппаратная поддержка DirectX
DirectX 12, с поддержкой уровня возможностей Feature Level 12_1
Шина памяти
2048-битная шина памяти с поддержкой стандарта High Bandwidth Memory второго поколения
Частота графического процессора
1274 (1546) МГц
Вычислительные блоки
64 вычислительных блока GCN, состоящих в целом из 4096 ALU для расчетов с плавающей запятой (поддерживаются целочисленные и плавающие форматы INT8, INT16, FP16, FP32 и FP64)
Блоки текстурирования
256 текстурных блоков, с поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов
Блоки растеризации (ROP)
64 блока ROP с поддержкой режимов сглаживания с возможностью программируемой выборки более чем 16 сэмплов на пиксель, в том числе при FP16- или FP32-формате буфера кадра. Пиковая производительность до 64 отсчетов за такт, а в режиме без цвета (Z only) — 256 отсчетов за такт
Поддержка мониторов
Интегрированная поддержка до шести мониторов, подключенных по интерфейсам DVI, HDMI 2.0b и DisplayPort 1.4
Спецификации референсной видеокарты Radeon RX Vega 64
Параметр
Значение
Частота ядра
1274 (1546) МГц
Количество универсальных процессоров
4096
Количество текстурных блоков
256
Количество блоков блендинга
64
Эффективная частота памяти
1890 (2×945) МГц
Тип памяти
HBM2
Шина памяти
2048-бит
Объем памяти
8 ГБ
Пропускная способность памяти
484 ГБ/с
Вычислительная производительность (FP32)
до 12,7 терафлопс
Теоретическая максимальная скорость закраски
99 гигапикселей/с
Теоретическая скорость выборки текстур
396 гигатекселей/с
Шина
PCI Express 3.0
Разъемы
Один разъем HDMI и три DisplayPort
Энергопотребление
до 295 Вт
Дополнительное питание
Два 8-контактных разъема
Число слотов, занимаемых в системном корпусе
2
Рекомендуемая цена
$499 (для рынка США)
Спецификации референсной видеокарты Radeon RX Vega 56
Параметр
Значение
Частота ядра
1156 (1471) МГц
Количество универсальных процессоров
3584
Количество текстурных блоков
224
Количество блоков блендинга
64
Эффективная частота памяти
1600 (2×800) МГц
Тип памяти
HBM2
Шина памяти
2048-бит
Объем памяти
8 ГБ
Пропускная способность памяти
410 ГБ/с
Вычислительная производительность (FP32)
до 10,5 терафлопс
Теоретическая максимальная скорость закраски
94 гигапикселей/с
Теоретическая скорость выборки текстур
330 гигатекселей/с
Шина
PCI Express 3.0
Разъемы
Один разъем HDMI и три DisplayPort
Энергопотребление
до 210 Вт
Дополнительное питание
Два 8-контактных разъема
Число слотов, занимаемых в системном корпусе
2
Рекомендуемая цена
$399 (для рынка США)
Названия новых моделей видеокарт компании AMD изменили принятую ранее систему наименований. Во-первых, они снова (как и Fury ранее) имеют имя собственное — Vega, во-вторых, цифра после названия семейства теперь означает количество активных исполнительных блоков архитектуры GCN в графическом процессоре — 64 или 56 для урезанной версии. Так что цифр типа 560, 570 и 580 в этот раз нет. А вот начальные буквы RX остались, и это немного странно. Они ведь раньше показывали уровень видеокарты: R7 были медленнее, чем R9, например. Похоже, что теперь AMD просто понравилось сочетание RX, и они продолжили его использовать.
Модели нового семейства Vega заняли в текущей линейке компании самые верхние позиции, дополняя семейство Polaris (Radeon 500) на рынке. Vega 64 и 56 относятся к верхнему ценовому уровню, выше старшей из них разве что её вариант Liquid Cooled Edition с ещё несколько большей производительностью (и ценой, соответственно). Давайте посмотрим на цены всех представленных решений:
Разброс в цене представленных решений немалый — от $399 за RX Vega 56 до $699 за топовую видеокарту с водяным охлаждением. Но в данном случае речь идёт уже не только о видеокарте, а целом паке, который обходится в лишнюю сотню долларов. Что же предлагает AMD за дополнительные $100? В компании считают, что таким образом помогут пользователям решиться на апгрейд игровых систем, добавив возможность приобрести современный монитор, процессор и системную плату со значительной скидкой. А кроме этого, в комплекте будут предлагаться ещё и бесплатные игры.
В частности, в предложение компании входит $200 скидка на приобретение ультраширокоформатного современного монитора Samsung CF791 с диагональю 34» и поддержкой технологии FreeSync, $100 скидка на некоторые процессоры Ryzen 7 в комплекте с системными платами на чипсете X370 — уже только это даёт экономию в $300, а они ещё и предлагают игры в комплекте, который будет зависеть от региона (для США их стоимость в рознице составляет ещё $120).
На бумаге предложение выглядит неплохо. В принципе, для тех, кто планирует сделать большой апгрейд, подобное предложение выглядит отличным вариантом для того, чтобы сэкономить свои деньги, а если кто просто хочет купить себе новую Radeon RX Vega, то заплатит на сотню меньше. В реальности есть некоторые детали — во-первых, нужно учитывать региональные особенности (кое-где никаких мониторов вам не предложат, а набор игр будет не таким привлекательным), а во-вторых — в некоторых случаях, предложенная скидка на приобретение монитора просто не имеет смысла, так как можно купить аналогичную модель за те же деньги и без каких-то скидок.
Кстати, внимательный читатель заметит, что показанные на слайдах видеокарты с воздушным охлаждением существуют двух видов: с серебристым корпусом системы охлаждения и чёрным, причём, по одной цене. В действительности, отличия между ними есть только по корпусу, а по остальным характеристикам они идентичны. Первые выпущены ограниченной серией и закончатся в продаже довольно быстро, если уже не (есть такие данные, что первые партии уже в основном распроданы).
Референсный вариант Radeon RX Vega 64 предлагается по рекомендованной цене в $499, и эту цену нельзя назвать слишком уж привлекательной, ведь на рынке по схожей цене давно продаётся такая модель, как GeForce GTX 1080, в том числе и в виде фабрично разогнанных версий. Именно с ними и конкурирует новинка.
По понятным причинам, видеокарты Radeon RX Vega 64 существуют исключительно в версиях с 8 ГБ памяти типа HBM2, и даже Vega 56 не отличается по этому параметру. Решение по установке именно 8 ГБ памяти на новые GPU вполне практично. 4 ГБ на топовую карту ставить нельзя, даже на картах семейства Fury этого было маловато, но и 16 ГБ кажутся расточительством с учётом огромной себестоимости HBM2-памяти. Так что 8 ГБ можно считать «золотой серединой», и это хоть и не оставляет особого запаса на будущее, но в ближайшее время будет вполне достаточно, особенно учитывая, что видеопамять у Vega можно расширить за счёт системной памяти (подробнее см. далее).
Для дополнительного питания референсные платы используют два 8-контактных разъема, и значение типичного энергопотребления для модели Radeon RX Vega 64 на основе полноценного графического процессора Vega 10 при воздушном охлаждении установлено на уровне 295 Вт (210 Вт для Vega 56). С одной стороны, два разъёма оставляют полезный запас на случай разгона, с другой — выглядят довольно пугающе. Как бы не получилось так, что по потреблению энергии платы на чипе Vega 10 станут рекордсменами надолго (как минимум, в своём классе).
Архитектурные особенности Vega
Анонсированные решения AMD основаны на первом графическом процессоре новой архитектуры Vega, который произведён по 14 нм FinFET LPP техпроцессу и содержит 12,5 миллиардов транзисторов. Этот сложный чип получил название Vega 10 и он содержит в себе в целом порядка 45 МБ SRAM-памяти, разработан для работы на высокой тактовой частоте вплоть до 1,7 ГГц (при условии жидкостного охлаждения), а внутренние связи используют уже известную нам по процессорам компании шину Infinity Fabric. Площадь немаленького чипа составляет 486 мм2 и на следующей фотографии можно наглядно оценить размеры кристаллов Vega (справа), по сравнению с кристаллами Fiji (видеокарты семейства Fury):
Графический процессор Vega 10 относится к архитектуре Graphics Core Next, хоть и значительно модифицированной. Базовым блоком архитектуры является вычислительный блок Compute Unit (CU), из которых собраны все графические процессоры AMD. Вычислительный блок CU имеет выделенное локальное хранилище данных для обмена данными или расширения локального регистрового стека, а также кэш-память первого уровня с возможностью чтения и записи и полноценный текстурный конвейер с блоками выборки и фильтрации, он разделен на подразделы, каждый из которых работает над своим потоком команд. Каждый из таких блоков занимается планированием и распределением работы самостоятельно.
Полноценный графический процессор Vega 10 содержит 4 движка асинхронного исполнения команд, 4 модифицированных геометрических движка и 64 вычислительных блока Compute Unit нового поколения — серьёзно переделанные, по сравнению с предыдущими архитектурами, как заверяют представители AMD. Всего в составе этих вычислительных блоков находится 4096 потоковых процессоров, 256 текстурных блоков и 64 блока ROP. Соответственно, по количество блоков можно понять, что это топовый GPU, предназначенный сразу для нескольких рынков: игрового, вычислительного, профессиональной графики и т.д. Рассмотрим схему нового графического процессора (по клику на изображении доступна увеличенная версия иллюстрации):
Хотя по количеству блоков Vega 10 повторяет чип Fiji, новое решение отличается специальными оптимизациями для работы на повышенной частоте, а также включает множественные архитектурные модификации, улучшающие производительность и энергоэффективность. К примеру, самая мощная модель Radeon RX Vega 64 Liquid Cooled Edition с жидкостным охлаждением способна дать производительность в 13,7 терафлопс при вычислениях с одинарной точностью и 27,4 терафлопс для 16-битных вычислений половинной точности, поддержка которых появилась в Vega.
При проектировании нового чипа для снижения задержек инженеры AMD воспользовались опытом создания архитектуры Zen, на 8% сократив внутренние задержки, получив на 18% меньшую площадь на кристалле для внутренних линий с почти вдвое меньшим потреблением энергии. Все линии данных в чипе на критических участках были укорочены и оптимизированы, основные ALU имеют четыре стадии, чип оптимизирован по утечкам, и в результате (вклад нового техпроцесса также учитываем) Vega 10 может работать на частоте до 1,7 ГГц, хотя предыдущие 28 нм чипы довольствовались частотой порядка 1,0–1,3 ГГц.
Графический процессор Vega 10 стал первым, в котором используется внутренняя шина Infinity Fabric, имеющая низкие задержки и предназначенная для соединения всех блоков процессора друг с другом. Так как эта шина стала стандартной для всех современных решений AMD, то она позволяет использовать гибкий модульный подход при создании различных чипов, в которых можно использовать любые блоки. В представленном GPU каналы данных Infinity Fabric соединяют основное графическое ядро с другими логическими блоками, такими как контроллеры памяти, контроллер PCI Express, дисплейный движок, движок обработки видеоданных. Благодаря использованию Infinity Fabric во всех них, встраивать возможности архитектуры Vega в будущие чипы (кто сказал APU?) будет намного проще.
Новая иерархия памяти с высокопроизводительным кэшем
В графическом процессоре Vega 10 используется HBM2-память с поддержкой ECC, важной для профессиональных применений, расположенная на одной подложке с самим GPU. Новый чип имеет HBM2-память, работающую по 2048-битной шине при тактовой частоте, близкой к 1 ГГц, что даёт высокую пропускную способность в 484 ГБ/с. В достижениях именно HBM2-памяти, по сравнению с первым поколением высокопроизводительной памяти — теоретически еще большая пиковая пропускная способность. HBM второго поколения может быть вдвое быстрее первого (хотя в случае Vega решили оставить ПСП на том же уровне). Также доступна до восьми раз большая емкость на каждый стек чипов памяти, что было наибольшим недостатком и самым обидным ограничением HBM1-памяти, известным по графическим процессорам Fiji, на которых основаны видеокарты серии Fury.
Отметим и традиционные преимущества HBM2 перед GDDR5-памятью, вроде более чем вдвое меньшего физического размера, занимаемого на печатной плате — именно поэтому и стало возможно создание таких малогабаритных плат, как Radeon R9 Nano и планируемой к выпуску RX Vega Nano (название условное, мы сами придумали). Также сотрудники AMD заявляют, что новый тип памяти, который планируется применять в Vega, до четырех-пяти раз более энергоэффективен, по сравнению с привычной GDDR5-памятью.
Теоретически возможен объем памяти до 32 ГБ, раз нам говорят о восьмикратном приросте поддерживаемого объёма на стек. Пока что в AMD решили поставить на игровые чипы 8 ГБ HBM2-памяти, а на профессиональные решения для высокопроизводительных вычислений — 16 ГБ. Это и понятно, ведь себестоимость этой новой памяти весьма велика, а 8 ГБ до сих пор хватает практически всем играм почти в любых условиях и настройках. А если и не хватит, то Vega будет использовать системную память, и вот об этой возможности мы сейчас и поговорим.
Самое любопытное в подсистеме памяти Vega то, что HBM2-память можно использовать как кэш-память для данных, которые находятся на медленных носителях. По сути, HBM2 в Vega используется как кэш-память последнего уровня для системной памяти и накопителей данных. По словам представителей AMD, высокопроизводительный кэш и его контроллер позволяют использовать плоскую виртуальную адресацию до 512 терабайт данных на разных носителях, и его работа полностью прозрачна для пользовательских приложений. 512 ТБ — это 49-битный доступ, но почему именно столько? Потому что этого как раз достаточно для того, чтобы с большим запасом покрыть 48-битную виртуальную адресацию современных CPU вместе с локальной видеопамятью GPU, что позволяет получить доступ к полному и единому адресному пространству памяти CPU и GPU, а также к дополнительным данным на накопителях.
При рендеринге, GPU требуется доступ ко всем ресурсам и данным, используемым в сцене, и обычно все они должны помещаться в локальную видеопамять. Альтернативный подход предлагает подкачивать недостающие данные из системной памяти по PCI Express шине, но зачастую такой метод не обеспечивает достаточной ПСП и имеет большие задержки. Конечно, игровые разработчики стараются обходить эти ограничения при помощи специальных хаков в коде, но сложное управление памятью — явно не то, чем бы они хотели заниматься, а объём локальной видеопамяти всегда ограничен.
По исследованиям AMD, игры The Witcher Wild Hunt и Fallout 4 в 4K-разрешении при ультра-настройках качества в реальности используют примерно вдвое меньше данных из локальной видеопамяти, чем они заполнили ее объема. К примеру, если игра заняла всю имеющуюся локальную видеопамять объемом в 8 ГБ, то при рендеринге кадра в реальности осуществляется доступ к ресурсам, занимающим вдвое меньший объем. То есть, играм технически совсем не обязательно было занимать все 8 ГБ, можно было бы обойтись и 4 ГБ локальной памяти. Иными словами, в играх видеопамять зачастую уже и так используется как общее адресное пространство, которое графический движок заполняет геометрией и текстурами. Фактически, можно хранить только самые важные данные в быстрой кэш-памяти, постепенно подгружая из более медленной все новые и новые ресурсы, требуемые при работе над кадром.
А ведь в дальнейшем объемы, занимаемые ресурсами игр и других приложений, продолжат свой неумолимый рост, и этот вопрос нужно как-то решать. Путь тупого наращивания объема видеопамяти — самый простой, но неоптимальный вариант, да и при этом потребление энергии микросхемами памяти будет расти слишком быстро, поэтому в AMD и решили пойти другим путем, предложив быстрый кэш, подгружающий ресурсы с более медленной памяти большего объема. Важно, что их решение не требует какого-либо вмешательства со стороны разработчиков программного обеспечения, и аппаратная кэш-память сама определяет, какие ресурсы будут нужны в каждый момент времени, подгружая их в быструю память по мере необходимости.
Такой подход позволяет использовать больший объем данных, чем помещается в видеопамяти, но лишь при правильной работе контроллера кэш-памяти. И то — вряд ли он сможет решить все проблемы, когда объем данных, требуемых при работе над сценой, значительно превышает объем быстрой кэш-памяти. Но в теории все выглядит красиво — с точки зрения ПО будет некая общая память, размещением данных в каждой из составляющих которой, и их менеджментом не нужно заниматься разработчику, а всё делается графическим процессором автоматически.
Для того, чтобы HBM2-память работала как кэш для системной памяти, энергонезависимой памяти (твердотельные SSD-накопители) или даже сетевых накопителей, нужно специальное управление всей этой иерархией — чтобы GPU брал данные из одного места и сохранял их в других по мере необходимости. Для решения этих задач в графический процессор Vega был внедрен новый контроллер высокопроизводительной кэш-памяти — High Bandwidth Cache Controller (HBCC).
Архитектура виртуальной памяти Vega использует страницы памяти разного размера (размер страниц настраивается, большие страницы лучше подойдут для последовательного доступа, а маленькие для случайного), неактивные перемещаются в более медленное хранилище, освобождая кэш для активных страниц памяти. При этом не требуется сложного управления памятью со стороны приложения, да и хранить все данные в быстрой локальной памяти (кэше) не обязательно. Такой подход позволяет использовать виртуально бесконечный объём ресурсов из многих миллионов треугольников и сотен гигабайт текстурных данных. В принципе, это похоже на поддержку виртуальной памяти в графических процессорах конкурента, но его решения имеют подобные возможности только для вычислительных применений, но не в графических задачах.
Если GPU пытается получить доступ к данным, не находящимся в локальной памяти, он подтягивает только требуемые страницы памяти по шине PCI Express, и сохраняет их в высокопроизводительном кэше (она же HBM2-память), вместо того, чтобы заставить весь чип простаивать до копирования ресурса целиком (например, если это большая текстура на несколько мегабайт) по шине. Разница между подходами в том, что маленькие страницы памяти меньше текстур и других ресурсов целиком, и их можно скопировать в кэш намного быстрее. А уже после копирования в кэш, любой доступ к данным внутри страницы будет максимально быстрым, так как она целиком находится в HBM2.
AMD называет такую новую архитектуру памяти революционной и для игровых и для профессиональных применений. Процессоры, основанные на архитектуре Vega, потенциально имеют лучший аппаратный менеджмент памяти, по сравнению с привычными программными решениями. К примеру, весьма интересно выглядит профессиональная карта Radeon Pro SSG с SSD-накопителями на борту, которые позволяют иметь видеопамять очень большого объёма (терабайты!), со сниженными задержками и высокой ПСП. Подобные решения могут использоваться при качественном рендеринге и редактировании видеоданных в 8К-разрешении и уже применяются в профессиональной сфере.
Важно, что можно использовать различные режимы работы высокопроизводительного кэша HBM2: inclusive и exclusive, с иерархической или плоской моделью памяти, а также устанавливать необходимый размер страниц, которые оптимизируются для частных случаев: маленькие страницы для случайного доступа и большие для последовательного.
Доступ к большому объёму видеопамяти с аппаратным менеджментом в теории позволит игровым разработчикам создавать уникальные игровые миры большого размера с высокой детализацией, лучшим освещением и анимацией, без традиционных опасений вылететь за пределы имеющегося объёма локальной видеопамяти. Но пока что это лишь теория, а практически новой технологией компании AMD заинтересовались, к примеру, в компании Bethesda, известной по играм с виртуальными мирами огромного размера, и наверняка какие-то их грядущие проекты будут использовать возможности HBCC.
Чтобы получить максимум от новой иерархии памяти в Vega, все исполнительные блоки нового GPU получили доступ к кэш-памяти второго уровня (L2), что отличается от предыдущих чипов архитектуры GCN, в которых пиксельные движки имели собственные независимые кэши. Это также важно для различных техник, использующих рендеринг в текстуры, например (карты теней, отложенное затенение и многое другое. А также, так как L2-кэш теперь играет ещё более важную роль в новой иерархии памяти и из-за применения тайловой растеризации (см.далее), то в AMD решили вдвое увеличить его объём — до 4 МБ, по сравнению с 2 МБ у предыдущих GPU компании.
Ещё одно важное отличие Vega от ранних графических архитектур, которое мы отметим — если пиксельные и текстурные блоки предыдущих GPU не могли обращаться к памяти одновременно (когерентность памяти), то теперь блоки растеризации RBE (render back-end) имеют быстрый доступ к кэш-памяти второго уровня и используют ее для экономии ПСП видеопамяти. Все это в теории должно помочь серьезно увеличить производительность в игровых и профессиональных приложениях, использующих отложенное затенение (deferred shading), в частности.
Геометрические движки нового поколения
Нововведения в графической архитектуре Vega многочисленны, и связаны они не только с подсистемой памяти. Также в новом GPU были сделаны и улучшения в геометрическом конвейере, более гибком и программируемом, чем предыдущие. Не секрет, что одной из наиболее существенных проблем 3D-графики с давних времён является так называемый overdraw — многократная прорисовка одних и тех же пикселей на экране, относящихся к разным поверхностям и моделям, которые загораживают друг друга так, что камере виден лишь ближайший пиксель.
После всех оптимизаций в кадре и так присутствует несколько миллионов полигонов, но если прорисовывать всю геометрию уровня, то это значение вырастет в десятки раз, и графический процессор большую часть времени будет заниматься бесполезной работой по отрисовке тех пикселей, которые пользователь никогда не увидит. Для оптимизации существует большое количество алгоритмов, включающих сравнение Z-координат и другие методы, предназначенные для отбрасывания невидимой геометрии, но её всё равно остаётся больше, чем необходимо.
Новый программируемый геометрический движок в графическом процессоре Vega 10 включает несколько нововведений, позволяющих увеличить итоговый темп обработки геометрии — по данным AMD, новый GPU способен обрабатывать геометрию значительно быстрее, по сравнению с решениями предыдущих поколений. Если графический процессор Fiji имеет четыре движка геометрии и обрабатывает четыре полигона за такт, то GPU новой архитектуры Vega с тем же количеством геометрических движков способен обрабатывать до 17 полигонов за такт (в определённых условиях). Также специалисты компании AMD смогли улучшить балансировку загрузки различных вычислительных блоков работой при помощи продвинутого блока распределения работы.
Более того, AMD уже некоторое время выступает за довольно радикальное изменение существующего геометрического конвейера и введение новых типов шейдеров. Каждая стадия существующего графического конвейера имеет свои недостатки, обусловленные ограничениями старых GPU, но новые графические процессоры их не имеют и являются более гибкими. Специалисты компании предлагают ввести Primitive Shaders — новую аппаратную стадию конвейера, которая объединяет проходы вершин и примитивов и позволит отбрасывать невидимые примитивы очень рано, повысив общую эффективность работы.
Эти новые шейдеры могут работать над различными типами примитивов (вершины, полигоны, патчи), и у них много потенциальных применений, кроме отбрасывания невидимых примитивов: для ускорения исполнения вершинных шейдеров, при рендеринге карт теней, систем частиц, рендеринге с переменным разрешением и т.д. И хотя Vega и сама по себе быстрее Fiji обрабатывает геометрию, предлагаемое изменение конвейера позволяет повысить скорость ещё втрое-вчетверо! Хотя Vega 10 имеет четыре геометрических движка, которые в обычных условиях могут обрабатывать четыре же примитива за такт, это значение вырастает до 17 и более при условии применения шейдеров примитивов.
Новый тип шейдеров не заменяет предыдущий подход с традиционным конвейером, а дополняет его. Шейдеры примитивов невозможно использовать в рамках текущих API и приложений без соответствующих изменений, но компания сотрудничает с ведущими разработчиками для того, чтобы заинтересовать их. Плюс к этому, специалисты AMD могут использовать новый подход для специфических оптимизаций под конкретные приложения в своих драйверах.
Произошли и изменения, связанные с новой иерархией памяти (кэширования данных). Геометрические движки теперь могут использовать начиповую кэш-память второго уровня для хранения вершинных данных. Эта возможность дополняет имеющийся выделенный кэш параметров, который удвоился в объеме, по сравнению с решениями предыдущего поколения Polaris. Возможности кэширования геометрии стали более гибкими и они позволяют видеодрайверу выбрать оптимальный подход для различных вариантов использования.
Ещё одно изменение в обработке геометрии в Vega — улучшенная балансировка нагрузки между несколькими имеющимися геометрическими движками. Для этого в новом GPU есть специальный блок — интеллектуальный диспетчер intelligent workload distributor (IWD), который максимизирует загрузку движков, настраивает параметры геометрического конвейера в зависимости от вызовов функций отрисовки (draw calls), которые он получает от ПО. Диспетчер IWD старается минимизировать простои геометрических движков, связанные с переключениями контекста при выполнении вызовов функций отрисовки и пакует несколько небольших вызовов, которые не заполняют wavefront из 64 потоков, в один большой пакет.
Вычислительные блоки NCU и двойной темп для 16-битных вычислений
Из других важных изменений Vega 10 отметим улучшения, связанные с вычислительными блоками нового поколения, которые назвали Vega NCU — Next-Generation Compute Unit. Одной из самых важных новых возможностей вычислительного блока следующего поколения является Rapid Packed Math — двойной темп операций вычислений над целочисленными данными и данными с плавающей запятой половинной точности — то есть, INT16 и FP16 (по сравнению с общепринятыми в графических процессорах FP32).
Каждый из имеющихся в новом графическом процессоре Vega блоков NCU умеет исполнять 128 операций с привычной 32-битной точностью (FP32) за такт, или вдвое больше — 256 уже 16-битных (FP16 или INT16) операций, так называемых packed-вычислений. То же самое касается и операций над 8-битными данными, которые могут выполняться с еще более высоким темпом — учетверённым.
Вычисления в форматах INT16 и FP16 имеют вполне достаточную точность для использования во множестве современных задач, таких как машинное зрение и обучение, а удвоенный темп их исполнения, по сравнению с FP32, позволяет ускорить такие вычисления ровно вдвое, в отличие от предыдущих поколений GPU, не имеющих такой особенности. Также сниженная точность вычислений может подойти и для некоторых игровых применений, не требующих привычной точности 32-битных вычислений, и в этом очень поможет поддержка ускоренных 16-битных вычислений современными консолями, которые никогда не испытывают избытка вычислительных ресурсов. На это есть большая надежда, так как решения AMD применяются чуть ли не во всех консолях текущего поколения.
Интересно, что в решениях конкурирующей с AMD компании Nvidia аналогичная аппаратная возможность FP16-вычислений с двойным темпом появилась в графических процессорах даже несколько раньше, но… только в профессиональных и мобильных решениях, но не в GPU, предназначенных для установки в массовые настольные ПК. Так что у вышедших видеокарт на чипе Vega появилось потенциальное преимущество, которое раскроется, если разработчики действительно начнут использовать INT16 и FP16 массово. Правда, вычисления со сниженной точностью в играх применимы далеко не во всех алгоритмах и эффектах — помнится, несколько лет назад за подобный подход критиковали решения Nvidia того времени.
Лишь небольшая часть алгоритмов и техник в графических задачах может довольствоваться сниженной точностью вычислений, в том числе и потому, что ошибки накапливаются при нескольких проходах. Даже если на 16-битные «рельсы» переведут значимую часть вычислительных алгоритмов в играх, то реальное влияние на общую производительность вряд ли превысит десяток процентов. По замерам специалистов AMD, использование FP16 и INT16, а также смешанной точности вычислений даёт в некоем бенчмарке 3DMark Serra при постобработке до 20–25% преимущества, по сравнению с полной FP32-точностью — и это без видимых потерь в качестве. В указанном тесте целочисленные 16-битные данные используются при генерации процедурных поверхностей и в алгоритме шума для объёмного освещения, дающие 25% прироста производительности, а также 16-битные операции с плавающей запятой в алгоритме постобработки Bloom, что даёт 20% прирост скорости рендеринга.
Самое главное, что 16-битные форматы данных и операций уже сейчас можно использовать в существующих графических API, и при оптимизации мультиплатформенных игр велика вероятность того, что ПК-версии также получат соответствующие оптимизации, связанные с применением 16-битных вычислений там, где это не приводит к деградации изображения. А уж чисто вычислительные задачи нового поколения, вроде распознавания образов, машинного зрения и обучения, совершенно точно получат приличный прирост в скорости от удвоенного темпа 16-битных вычислений.
Всего же в архитектуру Vega добавили 40 новых инструкций. Кроме операций над 16-битными данными, служащими для повышения количества исполняемых операций за такт, были добавлены 32-битные целочисленные инструкции, восемь инструкций для адресации памяти и хеширования, используемых в задачах криптографии и майнинге криптовалют, а также новые ADD/SUB инструкции, полезные для минимизации использования регистров.
NCU также поддерживает набор 8-битных целочисленных операций SAD (Sum of Absolute Differences), QSAD (счетверённый SAD), объединяющая SAD с операторами сдвига для увеличения производительности и энергоэффективности, а также «маскируемую» инструкцию MQSAD,