Архитектура графических процессоров AMD (ATI) не подвергалась
существенным изменениям со времен серии Radeon HD 2000: вплоть до HD
6000 в GPU использовался VLIW-дизайн. Что это такое? Сначала вспомним,
как работает центральный процессор в наших персоналках. Современные CPU –
суперскалярные, то есть их вычислительные блоки могут выполнять
несколько инструкций из одного потока одновременно. Но инструкции при
этом должны быть независимыми друг от друга, поэтому процессор
непрерывно проверяет, когда можно выполнять параллельные операции, а
когда нужно подождать разрешения очередной зависимости. Кроме того, CPU
занимается предсказанием ветвлений и может делать часть работы заранее
(out-of-order). Оптимизация этих функций – сложная техническая задача, а
схемы, на которых они построены, занимают добрую часть кристалла CPU.
Увеличить
Но
есть другой путь: задать порядок исполнения инструкций на этапе
компиляции кода. Компилятор сам находит инструкции, которые можно
выполнять одновременно, и формирует из них длинные составные
конструкции. Отсюда и термин VLIW – very long instruction word. VLIW в
общем случае показывает высокую эффективность, когда код содержит мало
зависимостей, а ход программы предсказуем. Компилятор «знает» код от
начала до конца и может задать исполнение определенных фрагментов с
большим запасом по времени. Но планирование получается жестким, и в
случае когда ход программы зависит от внешних данных, хитроумная
компиляция уже мало помогает, исполнительные блоки простаивают и
производительность идет вниз.
Но рендеринг 3D-графики –
предсказуемая задача и отлично распараллеливается. Поэтому ставка на
VLIW, которую сделала тогда еще независимая канадская компания, себя
полностью оправдала. Переложив функции планировщика на компилятор, ATI
могла делать относительно компактные чипы с бешеными сотнями
исполнительных элементов внутри, и видеокарты в результате получились
относительно недорогими. Звездный час VLIW в исполнении AMD пришелся на
время Radeon HD пятитысячной серии, когда дебют архитектуры Fermi от
NVIDIA (GeForce 400) немного забуксовал. И неудивительно, ведь «зеленым»
приходится делать огромные чипы, вплоть до трех миллиардов
транзисторов. И даже сейчас, когда в адаптерах GeForce 500 архитектура
Fermi уже работает на полную мощность, а топовые ускорители NVIDIA
побеждают в бенчмарках продукцию AMD, шеститысячные Radeon все еще
обеспечивают отличную производительность в играх.
В таком случае,
зачем AMD решилась на столь резкий поворот? Казалось бы, достаточно
немного отполировать дизайн GPU, нарастить вычислительных блоков тут и
там, внедрить более тонкий технологический процесс — и VLIW будет жить
долго и счастливо. Зачем тратить время и деньги на разработку совершенно
новой архитектуры? Но дело не только и не столько в играх. GPU медленно
превращаются из устройств, предназначенных исключительно для
3D-рендеринга, в процессоры общего назначения (GPGPU – general purpose
GPU), которые можно использовать для любых массированных параллельных
вычислений. Однако на сегодняшний день вышло так, что если мы говорим
GPGPU, то подразумеваем CUDA. Ни родной для «красных» API под названием
ATI Stream, ни Open CL не имеют такой популярности, как CUDA от NVIDIA.
Между тем AMD очень хочет откусить кусок от этого рынка, но чтобы это
стало возможным, со старой доброй архитектурой VLIW придется расстаться.
Для неграфических вычислений она не подходит, ибо они менее
предсказуемы, чем 3D-рендеринг, и GPU просто не в состоянии работать в
полную силу.
Архитектура Graphics Core Next
Возьмем
последнего представителя VLIW-архитектуры от AMD, процессор Cayman,
который лежит в основе адаптеров Radeon HD 6950/6970/6990. Основным
компонентом шейдерного домена у него является SIMD Engine – блок из
шестнадцати потоковых процессоров. Все они одновременно исполняют одну
VLIW-инструкцию, но применительно к разным данным (потому и SIMD –
single instruction, multiple data). В свою очередь, в одной
VLIW-инструкции может быть упаковано вплоть до четырех скалярных
операций, что соответствует четырем ALU внутри одного потокового
процессора.
УвеличитьСтроительный
блок ядра Graphics Cores Next (GCN) называется Compute Unit, и он
устроен совершенно по-другому. В нем тоже 64 ALU, но они разделены на
четыре отдельных векторных SIMD-модуля по 16 штук плюс блок
планировщика. Проще говоря, раньше параллелизм был реализован за счет
нескольких операций в одной инструкции, а теперь за счет нескольких
отдельных SIMD-блоков. И если производительность старой архитектуры
зависит от того, сколько скалярных операций компилятор может
закодировать в одной VLIW-инструкции, то Compute Unit в ядре GCN может
динамически распределять нагрузку между SIMD-блоками.
Нагрузка
для параллельного исполнения в SIMD-блок поступает в виде массива
(wavefront) из 64 инструкций, который выполняется за четыре цикла. И
хотя одновременно в работе могут быть только четыре массива, еще 28
находятся у Compute Unit в прямом доступе, за счет чего планировщик и
получает пространство для маневра. В ситуации, когда зависимость в коде
мешает комбинированному SIMD-блоку VLIW-процессора работать на полную
мощность, отдельные SIMD-блоки чипа GCN просто переключатся на другие
массивы из той же задачи либо вовсе на другие задачи.
УвеличитьИзюминка
GCN – отдельный скалярный модуль в каждом Compute Unit. Он предназначен
для разовых операций, не укладывающихся в wavefront (что избавит
SIMD-модули от неэффективного использования), а еще – для контроля
исполнения программы: условных ветвлений, переходов и прочих событий,
которые Cayman переваривал с трудом. Скалярный модуль выполняет одну
операцию за цикл.
Кеш-память
Новая
конструкция исполнительных модулей требует более быстрой и объемной
кеш-памяти по сравнению c VLIW-дизайном. У каждого CU есть отдельный кеш
L1 объемом 16 Кбайт плюс хранилище для инструкций и данных на 16 и 32
Кбайт, общее для четырех CU, – буфер для разделения данных между
массивами. Еще есть полностью когерентный кеш L2, поделенный на порции
по 64 Кбайт между двухканальными контроллерами памяти. В нем хранятся
копии вышеупомянутых буферов
УвеличитьШины
кешей L1 и L2 имеют разрядность 64 байт. AMD сообщает, что пропускная
способность L1 достигает почти 2 Тбайт/с, а L2 – 700 Гбайт/с, и, судя по
всему, здесь имеется в виду суммарное значение для процессора с 32 CU.
Для сравнения: у Cayman каждый SIMD-модуль имеет кеш L1 объемом 8 Кбайт с шиной 16 Байт.
Обработка геометрии, растеризация
О
собственно графических компонентах чипа в презентациях AMD,
сопровождающих релиз, сказано немного. Судя по блок-схеме, их внутреннее
устройство не изменилась, только «Тесселятор» прокачался до девятой
версии и обеспечивает гигантский прирост быстродействия в
соответствующих задачах.
УвеличитьМежду
тем, если верить информации из посторонних источников и слайдам самой
AMD с июньского Fusion Development Summit, то изнутри Geometry Engine и
Tesselator выглядят совсем по-другому. Как и Cayman, ядро GCN содержит
два Graphics Engine, но если раньше они состояли из отдельных блоков для
растеризации, тесселяции и так далее, то теперь в каждом GE может быть
произвольное количество конвейеров для обработки пикселей и
геометрических примитивов.
УвеличитьВероятно,
такой дизайн поможет производителю легко наращивать графическую мощь
либо выпускать бюджетные GPU, урезанные по этой части. Быстрая работа с
геометрией придется в современных играх как нельзя кстати.
PCI-E 3.0
Заголовок
говорит за себя: AMD внедрила шину PCI-E нового поколения со вдвое
большей пропускной способностью. Непонятно, нужна ли она сегодня для
3D-рендеринга, но для неграфических расчетов наверняка пригодится. AMD
внесла в архитектуру GCN массу нововведений с далеким прицелом на такое
применение и специальную функцию графики, которая тоже отлично
сочетается с новым интерфейсом.
Новые функции GCN
В
GCN есть два дополнительных блока распределения команд под названием
Asynchronous Compute Engine, которые работают совершенно независимо друг
от друга и графического командного процессора. AMD планирует открыть
доступ к ACE через Open CL, и тогда в распоряжении программистов
окажутся три отдельных устройства, каждое со своей очередью команд.
Кроме того, по информации из третьих рук, ACE обеспечивает внеочередное
исполнение на уровне отдельных задач. Сами CU хоть и поумнели по
сравнению с SIMD-модулями VLIW-архитектуры, но могут обрабатывать свои
wavefront’ы строго в прямом порядке.
УвеличитьЯдро
GCN и центральный процессор компьютера могут иметь общее адресное
пространство. В таком случае все инструкции, которые попадают на
исполнение в GPU, указывают на адреса в пространстве x86-64, а он уже
самостоятельно перекодирует их в адреса локальной видеопамяти при помощи
специального модуля. В результате GPU получает прямой доступ к
системной памяти. Кроме того, ядро GCN наделили рядом функций для
поддержки языков высокого уровня: виртуальными функциями, указателями,
рекурсией и так далее. Это позволит программистам писать универсальный
код, пригодный для исполнения на CPU или на GPU.
Новые GPU
полностью совместимы с API OpenCL 1.2, DirectCompute 11.1 (и DirectX
11.1 как таковой) и C++ AMP. Появились специальные инструкции, полезные
для производства мультимедийного контента. Кроме того, чипы на базе
архитектуры GCN стали первыми GPU со встроенным кодировщиком видео
стандарта H.264, который можно будет использовать, как только AMD
выпустит необходимую библиотеку софта.
В свою очередь, декодер
приобрел поддержку нескольких дополнительных форматов: MVC, MPEG-4/DivX и
Dual Stream HD + HD. Вообще, видеокарты Radeon были сильны по части
воспроизведения видео еще во времена ATI. У семитысячной серии есть
масса «улучшайзеров» картинки, например алгоритм Steady Video,
устраняющий дрожание камеры.
Partially Resident Textures – еще
один трюк с виртуальной памятью, который предназначен уже для
3D-рендеринга: приложение или шейдер работают с адресным пространством,
превышающим объем набортной памяти адаптера, а она сама выступает лишь в
качестве быстрого кеша. Таким образом можно использовать текстуры
объемом до 32 Тбайт, порции которых GPU будет динамически подкачивать
поближе к себе. Поддержка со стороны ОС в этом не требуется.
Тормоза,
которые неизбежно возникнут при загрузке текстур из системной памяти,
AMD отчасти компенсирует использованием MIP mapping’a. Гигантская
текстура наверняка будет храниться в нескольких вариантах с различным
разрешением (mipmaps). Каждый из них разделен на фрагменты объемом 64
Кбайт. Когда адаптеру требуется определенный фрагмент, и он уже есть в
локальной видеопамяти, то нет проблем. Если же фрагмента не оказалось,
то программа может немедленно потянуть его из системной памяти, а может
отложить чтение и взять для текущего кадра соответствующую копию
фрагмента с низким разрешением (если он уже есть в видеопамяти).
УвеличитьНебольшое
дополнение к вопросу о тесселяции. В GCN реализован алгоритм Ptex
(Per-face texture mapping). В общем случае в 3D-моделировании текстура
накладывается на модель целиком и вершины необходимо аккуратно совмещать
с нужными участками двухмерного полотна. Нетрудно представить, как
аппаратная тесселяция, плодящая дополнительные вершины, усложняет задачу
дизайнера. При использовании Ptex на каждый полигон накладывается
отдельная текстура, в результате – никаких видимых стыков. Кроме того,
Ptex позволяет упаковывать в один файл текстуры с различным разрешением.
УвеличитьНаконец,
AMD немного поработала над анизотропной фильтрацией с целью устранить
едва заметное мерцание на текстурах высокого разрешения. Изменение
алгоритма не должно сказаться на быстродействии.
УвеличитьКонтроль энергопотребления
AMD
отмечает, что производители GPU и видеокарт всегда перестраховываются
на счет энергопотребления и устанавливают тактовые частоты с учетом
пиковой нагрузки, которая возможна лишь в самых жадных приложениях или
даже в стресс-тестах (FurMark. OCCT). А в обычных играх графический
процессор мог бы работать на более высокой частоте. Для того чтобы
всегда выжимать из GPU максимум, предназначена технология PowerTune
– калькулятор, который в реальном времени с интервалами в единицы
миллисекунд рассчитывает энергопотребление карты на основе анализа
выполняемой задачи (без всяких аналоговых сенсоров). И если есть
возможность, тактовая частота GPU увеличивается. Заметьте, это не сброс
частоты относительно номинала при достижении порога мощности, а наоборот
– точно выверенный динамический разгон.
УвеличитьА
еще ядро GCN умеет полностью отключаться, когда на экране долго ничего
нет, и останавливать кулер (технология ZeroCore). В конфигурации
CrossFire процессоры на дополнительных картах (и на одной – тоже) и
вовсе не работают без 3D-нагрузки.
УвеличитьEyefinity 2.0
Вместе
с Radeon HD 7000 дебютирует вторая версия технологии Eyefinity, которая
принесла массу нововведений. Многие представленные «фичи» не нуждаются в
комментариях, поэтому перечислим их кратко:
- Официально поддерживаются конфигурации с пятью дисплеями в ряд в альбомной или портретной ориентации.
- Центральный монитор в ряду теперь может быть больше остальных по вертикали.
- Одновременная работа Eyefinity, AMD HD3D и CrossFire.
- Максимальное разрешение комбинированного экрана – 15х15 тысяч пикселей.
- Произвольные разрешения.
- Перемещение панели задач Windows на любой экран.
- Вывод отдельных аудиопотоков на несколько дисплеев.
Новые
Radeon поддерживают DisplayPort 1.2, а значит – технологию
Multi-Stream. С ее помощью можно подключать к одному выходу три дисплея
по цепочке или через специальный хаб. Причем на выходе хаба может быть
не только DisplayPort, но и интерфейсы HDMI, DVI и VGA. AMD обещает, что
хабы появятся в продаже летом 2012 года.
УвеличитьHDMI-выход
соответствует стандарту 1.4а, поэтому может передавать двойной сигнал
на 3D-телевизор с частотой 24 кадра на каждый канал. А специально для
игр есть поддержка 3 GHz HDMI с частотой 60 Гц на канал.
Кроме того, стандарты DisplayPort 1.2 HBR 2 и 3 GHz HDMI пригодятся для подключения грядущих дисплеев с разрешением 4096x2160.
Radeon HD 7970
Технические характеристики
HD
7970 – одночиповый флагман линейки, представляющий архитектуру GCN во
всей мощи. Его GPU называется Tahiti и содержит 32 CU (Compute Units),
устройство которых подробно описано выше. Если пересчитать это на
количество отдельных ALU, как AMD делала до сих пор, то получится 2048
штук – в полтора раза больше, чем в ядре Cayman! И блоков TMU (texture
mapping units) в Tahiti тоже 128 против 96. Шина памяти – 384-битная
вместо 256-битной. Если учесть, сколько дополнительной логики добавили в
архитектуру, то совершенно не удивительно, что Tahiti состоит из 4,31
миллиарда транзисторов. Просто для сравнения: в Cayman – 2,64 миллиарда,
а в GF110 от NVIDIA – три. Работает все хозяйство на частоте 925 МГц.
УвеличитьОднако
чипы с архитектурой GCN печатают по техпроцессу 28 нм, так что по
электрической мощности новинка удержалась в рамках HD 6970 – те же 250
Вт, да и сам кристалл не выглядит устрашающе.
УвеличитьКарта
комплектуется видеопамятью GDDR5 объемом 3 Гбайт. Массив набран
микросхемами Hynix H5GQ2H24MFR со штатной частотой 1500 МГц (эффективная
частота – 6 ГГц), но здесь они работают на частоте 1375 (5500) МГц.
УвеличитьРекомендованная
цена HD 7970 составляет 549 долларов, что делает его самым дорогим
одночиповым адаптером Radeon за всю их историю.
Внешний вид, конструкция
УвеличитьВ
оформлении семитысячной серии AMD отступила от брутальных форм Radeon
HD 6000 и выбрала броский дизайн с плавными линиями и глянцевой
поверхностью кожуха. Вернулся узнаваемый красный текстолит, в этот раз –
с малиновым оттенком. По габаритам Radeon HD 7970 не отличается от
предшествующих одночиповых флагманов AMD/ATI.
УвеличитьПродукция кирпичного завода AMD
Карта
тяжелая. Берешь в руку – и чувствуется мощь. Все дело в системе
охлаждения с крупной испарительной камерой, приделанной к толстой раме.
Со времен Radeon HD 6970 конструкция не претерпела больших изменений,
разве что вентилятор-турбинка стал шире.
Увеличить
УвеличитьДля лучшего охлаждения с заглушки убрали один порт DVI, чтобы целиком занять слот выхлопной решеткой.
УвеличитьС задней стороны, как и раньше, есть прижимная крестовина. От сплошной крышки решили отказаться.
УвеличитьНа
печатной плате, как и у HD 6970, есть переключатель между основным и
резервным BIOS. А еще по задней поверхности разбросано несколько мелких
сдвоенных переключателей неизвестного назначения, которые мы, от греха
подальше, решили не трогать. Возможно, что перед нами лишь инженерный
образец HD 7970 и на серийных платах этих странных элементов уже не
будет.
Увеличить
УвеличитьВ хвосте платы расположены семь катушек индуктивности и восьмифазный контроллер напряжения CHiL CHL8228G, чему, без сомнения, будут рады оверклокеры, ведь он
уже использовался на картах Radeon HD 6970, . Скорее всего, и схема
питания карты организована по-старому: шесть фаз приходятся на GPU и
одна отдана для питания внутренних цепей микросхем GDDR5. В
противоположном углу платы находится двухфазный чип uP1509P от uP
Semiconductor со своей катушкой, который, по аналогии с HD 6970, должен
контролировать напряжение на буферах ввода-вывода видеопамяти.
Увеличить