TeraScale — кодовое название семейства микроархитектур графических процессоров , разработанных ATI Technologies / AMD, и их второй микроархитектуры, реализующей унифицированную модель шейдеров после Xenos . TeraScale заменила старые микроархитектуры с фиксированным конвейером и напрямую конкурировала с первой унифицированной микроархитектурой шейдеров от Nvidia под названием Tesla . [1] [2]
TeraScale использовался в Radeon HD 2000, изготовленных по 80 нм и 65 нм , Radeon HD 3000, изготовленных по 65 нм и 55 нм, Radeon HD 4000, изготовленных по 55 нм и 40 нм, Radeon HD 5000 и Radeon HD 6000, изготовленных по 40 нм. TeraScale также использовался в AMD Accelerated Processing Units под кодовыми названиями "Brazos", "Llano", "Trinity" и "Richland". TeraScale даже встречается в некоторых последующих брендах видеокарт.
TeraScale — это архитектура VLIW SIMD , в то время как Tesla — это архитектура RISC SIMD, похожая на преемника TeraScale Graphics Core Next . TeraScale реализует HyperZ . [3]
Генератор кода LLVM (т.е. бэкэнд компилятора) доступен для TeraScale, [4] но, похоже, отсутствует в матрице LLVM. [5] Например, Mesa 3D использует его.
На конференции SIGGRAPH 08 в декабре 2008 года сотрудник AMD Майк Хьюстон описал некоторые особенности микроархитектуры TeraScale. [6]
На FOSDEM09 Маттиас Хопф из технологического партнера AMD SUSE Linux представил слайд, посвященный программированию драйвера с открытым исходным кодом для R600. [7]
Предыдущие архитектуры GPU реализовали фиксированные конвейеры, т. е. для каждого типа шейдера были отдельные шейдерные процессоры . TeraScale использует множество гибких шейдерных процессоров, которые могут быть запланированы для обработки различных типов шейдеров, тем самым значительно увеличивая пропускную способность GPU (в зависимости от набора инструкций приложения, как указано ниже). Ядро R600 обрабатывает вершинные, геометрические и пиксельные шейдеры, как описано в спецификации Direct3D 10.0 для Shader Model 4.0 в дополнение к полной поддержке OpenGL 3.0. [8]
Новая унифицированная функциональность шейдера основана на архитектуре очень длинных командных слов (VLIW), в которой ядро выполняет операции параллельно. [9]
Кластер шейдеров организован в 5 блоков обработки потоков. Каждый блок обработки потоков может вывести готовую инструкцию одинарной точности с плавающей точкой MAD (или ADD или MUL) за такт, скалярное произведение (DP и специальный случай путем объединения ALU) и целочисленное ADD. [10] Пятый блок более сложен и может дополнительно обрабатывать специальные трансцендентные функции, такие как синус и косинус . [10] Каждый кластер шейдеров может выполнять 6 инструкций за такт (пик), состоящих из 5 инструкций затенения плюс 1 ветвь. [10]
Примечательно, что архитектура VLIW приносит с собой некоторые классические проблемы, присущие конструкциям VLIW, а именно, поддержание оптимального потока инструкций. [9] Кроме того, чип не может совместно выдавать инструкции, когда одна зависит от результатов другой. Производительность графического процессора сильно зависит от смеси инструкций, используемых приложением, и того, насколько хорошо компилятор реального времени в драйвере может организовать эти инструкции. [10]
Ядро R600 включает 64 шейдерных кластера, тогда как ядра RV610 и RV630 имеют 8 и 24 шейдерных кластера соответственно.
TeraScale включает в себя несколько блоков, способных выполнять тесселяцию . Они похожи на программируемые блоки Xenos GPU , которые используются в Xbox 360.
Тесселяция была официально определена в основных API, начиная с DirectX 11 и OpenGL 4. Графические процессоры на базе TeraScale 1 (серии HD 2000, 3000 и 4000) совместимы только с Direct3D 10 и OpenGL 3.3 и, следовательно, реализуют другой принцип тесселяции, который использует расширения API, специфичные для поставщика. [11] Графические процессоры на базе TeraScale 2 (начиная с серии Radeon HD 5000 ) были первыми, которые соответствовали как Direct3D 11, так и технике тесселяции OpenGL 4.0. [12] Хотя тесселятор TeraScale 1 проще по конструкции, AMD описывает его как подмножество более позднего стандарта тесселяции. [13]
Тесселяторы TeraScale позволяют разработчикам брать простую полигональную сетку и подразделять ее с помощью функции оценки криволинейной поверхности. Существуют различные формы тесселяции, такие как поверхности Безье с N-патчами , B-сплайны и NURBS , а также некоторые методы подразделения поверхности, которые обычно включают карту смещения или своего рода текстуру. [14] По сути, это позволяет простой, низкополигональной модели значительно увеличить плотность полигонов в реальном времени с очень небольшим влиянием на производительность. Скотт Уоссон из Tech Report отметил во время демонстрации AMD, что полученная модель была настолько плотной с миллионами полигонов, что казалась сплошной. [9]
Тесселятор TeraScale напоминает ATI TruForm , торговую марку раннего аппаратного блока тесселяции, изначально использовавшегося в Radeon 8500. [15]
ATI TruForm получил мало внимания от разработчиков программного обеспечения. Несколько игр (такие как Madden NFL 2004 , Serious Sam , Unreal Tournament 2003 и 2004 , а также неофициально Morrowind ) имели поддержку технологии тесселяции ATI. Такая медленная адаптация связана с тем, что это не была функция, общая с графическими процессорами NVIDIA, поскольку те реализовали конкурирующее решение тесселяции с использованием патчей Quintic-RT, которые получили еще меньшую поддержку от основных разработчиков игр. [16] Поскольку графический процессор Xbox 360 основан на архитектуре ATI, Microsoft рассматривала аппаратно-ускоренную тесселяцию поверхности как основную функцию GPU. Пару лет спустя функция тесселяции стала обязательной с выпуском DirectX 11 в 2009 году. [14] [17]
Хотя принцип тесселяции, представленный в TeraScale, не был частью требований OpenGL 3.3 или Direct3D 10.0, а конкуренты, такие как серия GeForce 8, не имели аналогичного оборудования, Microsoft добавила функцию тесселяции как часть своих будущих планов DirectX 10.1. [17] Наконец, Microsoft представила тесселяцию как обязательную возможность не с DirectX 10.1, а с DirectX 11. [18]
Геометрический процессор GCN — это новейшее решение компании AMD (которая приобрела бизнес ATI по производству графических процессоров) для выполнения тесселяции с использованием графического процессора.
Хотя R600 значительно отличается от предыдущих разработок, он по-прежнему разделяет многие функции со своим предшественником Radeon R520 . [9] Сверхпоточный диспетчерский процессор является основным архитектурным компонентом ядра R600, как и в графических процессорах Radeon X1000. Этот процессор управляет большим количеством потоков в полете трех различных типов (вершинные, геометрические и пиксельные шейдеры) и переключается между ними по мере необходимости. [9] При одновременном управлении большим количеством потоков можно реорганизовать порядок потоков для оптимального использования шейдеров. Другими словами, диспетчерский процессор оценивает, что происходит в других частях R600, и пытается поддерживать эффективность обработки как можно выше. Существуют также более низкие уровни управления; каждый массив SIMD из 80 потоковых процессоров имеет свой собственный секвенсор и арбитр. Арбитр решает, какой поток обрабатывать следующим, в то время как секвенсор пытается переупорядочить инструкции для наилучшей возможной производительности в каждом потоке. [9]
Текстурирование и конечный вывод на борту ядра R600 похожи, но также отличаются от R580. R600 оснащен 4 текстурными блоками, которые отделены (независимы) от шейдерного ядра, как в графических процессорах R520 и R580. [9] Блоки вывода рендеринга (ROP) серии Radeon HD 2000 теперь выполняют задачу сглаживания Multisample (MSAA) с программируемыми сетками выборок и максимум 8 точками выборки, вместо использования пиксельных шейдеров, как в серии Radeon X1000 . Также новой является возможность фильтрации текстур FP16, популярных в освещении HDR , на полной скорости. ROP также может выполнять трилинейную и анизотропную фильтрацию для всех форматов текстур. На R600 это составляет 16 пикселей за такт для текстур FP16, в то время как более точные текстуры FP32 фильтруют на половинной скорости (8 пикселей за такт). [9]
Возможности сглаживания на R600 более надежны, чем на серии R520. В дополнение к возможности выполнять 8× MSAA, по сравнению с 6× MSAA на R300 через R580, R600 имеет новый режим сглаживания с помощью настраиваемого фильтра (CFAA). CFAA относится к реализации небоксовых фильтров, которые смотрят на пиксели вокруг конкретного обрабатываемого пикселя, чтобы вычислить окончательный цвет и сгладить изображение. [10] CFAA выполняется шейдером, а не в ROP. Это значительно улучшает программируемость, поскольку фильтры можно настраивать, но также может привести к потенциальным проблемам с производительностью из-за использования ресурсов шейдера. С момента запуска R600 CFAA использует фильтры с широким и узким тентом. С их помощью образцы из-за пределов обрабатываемого пикселя взвешиваются линейно в зависимости от их расстояния от центроида этого пикселя, при этом линейная функция корректируется в зависимости от выбранного широкого или узкого фильтра. [10]
Контроллеры памяти подключены через внутреннюю двунаправленную кольцевую шину, обернутую вокруг процессора. В Radeon HD 2900 это 1024-битная двунаправленная кольцевая шина (512-битное чтение и 512-битная запись) с 8 64-битными каналами памяти для общей ширины шины 512 бит на 2900 XT.; [9] в Radeon HD 3800 это 512-битная кольцевая шина; в Radeon HD 2600 и HD 3600 это 256-битная кольцевая шина; в Radeon HD 2400 и HD 3400 кольцевая шина отсутствует.
Серия получила обновление на половину поколения с вариантами с усадкой кристалла (55 нм): RV670, RV635 и RV620. Все варианты поддерживают PCI Express 2.0, DirectX 10.1 с функциями Shader Model 4.1, выделенный ATI Unified Video Decoder (UVD) для всех моделей [19] и технологию PowerPlay для настольных видеокарт. [20]
За исключением серии Radeon HD 3800, все варианты поддерживали 2 интегрированных выхода DisplayPort, поддерживая 24- и 30-битные дисплеи с разрешением до 2560 × 1600. Каждый выход включал 1, 2 или 4 полосы на выход со скоростью передачи данных до 2,7 Гбит/с на полосу.
ATI утверждает, что поддержка DirectX 10.1 может повысить производительность и эффективность обработки за счет снижения ошибки округления (0,5 ULP по сравнению со средней ошибкой 1,0 ULP как допустимой ошибкой), улучшения детализации и качества изображения, глобального освещения (техника, используемая в анимационных фильмах, а также другие усовершенствования потребительских игровых систем, обеспечивающие более реалистичный игровой процесс. [21] )
(см. список чипов на этих страницах)
TeraScale 2 (VLIW5) был представлен в графических процессорах серии Radeon HD 5000 поколения «Evergreen».
На HPG10 Марк Фаулер представил «Evergreen» и заявил, что, например, 5870 (Cypress), 5770 (Juniper) и 5670 (Redwood) поддерживают максимальное разрешение 6 раз по 2560×1600 пикселей, в то время как 5470 (Cedar) поддерживает 4 раза по 2560×1600 пикселей, что важно для поддержки нескольких мониторов AMD Eyefinity . [22]
С выпуском Cypress архитектура графического движка Terascale была модернизирована с удвоенным количеством потоковых ядер, текстурных блоков и блоков ROP по сравнению с RV770. Архитектура потоковых ядер в основном не изменилась, но добавляет поддержку возможностей DirectX 11/ DirectCompute 11 с новыми инструкциями. [23] Также аналогично RV770, четыре текстурных блока привязаны к 16 потоковым ядрам (каждый имеет пять процессорных элементов, что в общей сложности составляет 80 процессорных элементов). Эта комбинация называется ядром SIMD .
В отличие от предшественника Radeon R700 , поскольку DirectX 11 требует полного контроля разработчика над интерполяцией, выделенные интерполяторы были удалены, полагаясь вместо этого на ядра SIMD. Потоковые ядра могут обрабатывать более высокую точность округления слитых инструкций умножения-сложения (FMA) как с одинарной, так и с двойной точностью, что увеличивает точность по сравнению с умножением-сложением (MAD) и соответствует стандарту IEEE 754-2008 . [24] Инструкция суммы абсолютных разностей (SAD) была изначально добавлена в процессоры. Эта инструкция может использоваться для значительного повышения производительности некоторых процессов, таких как кодирование и перекодирование видео на 3D-движке. Каждое ядро SIMD оснащено 32 КБ локального общего доступа к данным и 8 КБ кэша L1, [23] в то время как все ядра SIMD совместно используют 64 КБ глобального общего доступа к данным.
Каждый контроллер памяти связан с двумя счетверенными ROP , по одному на 64-битный канал, и выделенным кэшем L2 объемом 512 КБ. [23]
AMD PowerPlay поддерживается, см. здесь.
TeraScale 3 (VLIW4) заменяет предыдущие 5-канальные VLIW-дизайны на 4-канальный VLIW-дизайн. Новый дизайн также включает дополнительный блок тесселяции для улучшения производительности Direct3D 11.
TeraScale 3 представлен в видеокартах под брендом Radeon HD 6900 , а также реализован в APU Trinity и Richland .
AMD PowerTune, динамическое масштабирование частоты для графических процессоров, было представлено в серии Radeon HD 6900 15 декабря 2010 года и продолжает развиваться, как это задокументировано в некоторых обзорах AnandTech . [25] [26] [27] [28]
На HPG11 в августе 2011 года сотрудники AMD Майкл Мантор (старший научный сотрудник-архитектор) и Майк Хьюстон (научный сотрудник-архитектор) представили Graphics Core Next — микроархитектуру, пришедшую на смену TeraScale. [29]
1 Двойные чипы, такие как R680 (2x RV670) и R700 (2x RV770) не указаны. [94] [95] [96] [97]
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка )