Страница 5: Graphics Core Next (1)

presentation-01-rs

Мы уже упомянули вывод новой архитектуры GPU вместе с линейкой Radeon HD 7000. Разработка архитектуры "Graphics Core Next" (GNC) началась пять лет назад, вскоре после объявления GPU R600, который использовался в семействе Radeon HD 2000 и 3000. По информации AMD, архитектура GNC будет использоваться в ближайшие годы, она призвана заменить старые архитектуры VLIW4 и VLIW5. GNC будет использоваться и в high-end GPU, и в интегрированных экономичных решениях. Чтобы понять причины разработки GNC, нам нужно вернуться к принципам VLIW.

presentation-13-rs

VLIW означает "Very Long Instruction Word" и соответствует структуре команд, в которой последовательное выполнение программы может быть распараллелено разделением команд на мелкие инструкции. Для этой цены необходимо, чтобы компилятор разбивал команды на мелкие инструкции, выполнял их группами, а в конце суммировал результат. Данная работа выполняется аппаратными средствами, но не всегда идеально, поэтому в группы попадают и пустые инструкции. AMD попыталась устранить эту проблему изменением VLIW5 (семейство Radeon HD 6800) на VLIW4 (семейство Radeon HD 6900), но было понятно, что использование подобной архитектуры перспектив не имеет. Кроме того, архитектура VLIW недостаточно эффективна для выполнения вычислений на GPU - а эта область для AMD и NVIDIA стала довольно важной. Причина кроется в том, что данным необходимо пройти через несколько этапов, которые вносят задержки и конфликты регистров (кэш и т.д.).

presentation-12-rs

В GNC используется совершенно иной подход. Самый маленький блок в архитектуре GNC - это "Compute Unit" (CU). Каждый CU, в свою очередь, состоит из четырех векторных процессоров. Эти векторные процессоры составляют вместе четыре блока SIMD (single instruction, multiple data - одна инструкция, много данных), каждый из которых содержит 16 АЛУ. Все вместе вычислительные блоки и составляют 2048 потоковых процессоров у Radeon HD 7970 (32 CU x 4 SIMD x 16 АЛУ).

Для четырех векторных процессоров внутри CPU используются четыре 64-кбайт векторных регистра. Они также используют 64 кбайт локального кэша Local Data Share, который в два раза превышает возможности старой архитектуры. Данный кэш находится посередине между векторными процессорами, чтобы максимально снизить любые задержки. Кроме того, у CU присутствует и скалярный блок "Scalar Unit" с 4-кбайт регистром. Скалярный блок можно рассматривать как своего рода сопроцессор. Есть и планировщик "Scheduler", который равномерно распределяет задачи по блокам SIMD. Есть и дополнительный блок ветвления "Branch unit", который может выставлять приоритеты векторным процессорам в планировщике, соответственно и SIMD.

presentation-19-rs

Ещё одной важной частью GPU являются текстурные блоки. В случае GPU "Tahiti" их используется по четыре на CU, в результате чего у Radeon HD 7970 мы получаем 128 текстурных блоков. На каждый текстурный блок, в свою очередь, приходятся четыре блока запроса текстур "Texture Fetch Load / Store Units", работающие совместно с "родительским" текстурным блоком. Ещё одним компонентом являются блоки растрового вывода "Render Output Units" или конвейеры растровых операций "Raster Operations Pipelines", сокращенно ROP. Их у GPU семейства Radeon HD 7900 "Tahiti" используется по одному на CU. Первый кэш в иерархии L1 используется у каждого CU и составляет 16 кбайт. Данные на CU он может передавать со скоростью 16 Гбайт/с.

presentation-14-rs

Выше по иерархии кэша находится уровень, где на каждые четыре CU присутствует 16 кбайт кэша инструкций (Instruction Cache) и 32 кбайт кэша скалярных данных (Scalar Data Cache). Данные блоки "quad-GCN SIMD" обмениваются данными через кэш L2. Кэш L1 может записывать 64 байт данных за такт в кэш L2. Кэш L2 состоит из нескольких блоков и, в случае "Tahiti", размер составляет до 786 кбайт. Блок кэша всегда подключается через 64-битный интерфейс к графической памяти. Видеопамять играет важную роль в вычислительной производительности, да и в игровой производительности тоже. По 384-битному интерфейсу данных графический процессор AMD может передавать данные со скоростью до 264 Гбайт/с, что является серьёзным приростом по сравнению с предшественником (до 176 Гбайт/с у AMD Radeon HD 6970) и конкурентом. Память GDDR5 у NVIDIA GeForce GTX 580 работает на меньших тактовых частотах, и при идентичном с AMD Radeon HD 7970 интерфейсе даёт всего до 192 Гбайт/с. Так что по пропускной способности памяти новинка AMD находится в лидерах.