- •Краткий справочник терминов, упоминающихся в статье
- •Текстурные блоки g80
- •Заключение
- •Краткий глоссарий некоторых терминов, использованных в статье
- •Новая микроархитектура Graphics Core Next и видеокарта amd Radeon hd 7970
- •Немного истории
- •Общие сведения
- •Архитектура унифицированных шейдерных процессоров
- •Понятие vliw-архитектуры
- •Понятие программных нитей и wavefront
- •Новая архитектура Graphics Core Next
- •Блок Compute Unit
- •Графический процессор с архитектурой Graphics Cores Next
- •Графический процессор amd Radeon hd 7970
Текстурные блоки g80
В G80 текстурные блоки всё ещё плотно привязаны к своим кластерам шейдерных процессоров. Это несколько снижает производительность, т.к. процессоры не могут использовать "чужие" текстурники, даже когда те свободны.
Каждый текстурный блок состоит из 4 блоков адресации, 8 (32 в терминологии R600) блоков выборки и 8 блоков фильтрации. Выборка из FP16 текстуры выполняется на половинной скорости, из FP32 текстуры - в четыре раза медленнее, чем выборка INT8. Блоки фильтрации способны аппаратно фильтровать любые форматы текстур. Некоторые примеры возможностей: каждый текстурный блок способен либо выполнить 4 билинейные AF 2x с форматом INT8 (да, бесплатная AF 2x, если нужные тексели оказались в L1 кеше), либо 4 билинейные фильтрации с форматом FP16, либо 2 билинейные фильтрации с форматом текстуры FP32. Текстурный блок может наложить до 128 текстур за проход.
Текстурные блоки имеют L1 кеши по 8 КБ каждый. L2 кеш, объём которого равен 128 КБ, текстурные блоки делят с блоками ROP. По всей видимости, текстурные блоки G80 используются для доступа к буферам констант шейдерными процессорами, что может негативно сказаться на производительности DirectX 10 приложений.
Текстурные блоки G80 также управляются арбитрами отдельно от шейдерных процессоров.
В чипах G84 и G92, появившихся после G80, каждый кластер шейдерных процессоров уже включает по 8 блоков адресации текстур.
Заключение
Сравним некоторые пиковые теоретические возможности текстурных блоков R580+, R600 и G80 таблицей.
Чип |
R580+ |
R600 |
G80 |
Видеокарта |
Radeon X1950 XTX |
Radeon HD 2900 XT 1 GB |
GeForce 8800 Ultra |
Частота |
650 МГц |
825 МГц |
612 МГц |
Текстурных блоков |
16 |
4 |
8 |
Кеш L1 |
2 КБ * 16 |
32 КБ * 4 + вершинный |
8 КБ * 8 |
Кеш L2 |
? |
256 КБ |
128 КБ |
Текстур за проход |
16 |
128 |
128 |
Блоков адресации |
1 * 16 (16) |
8 * 4 (32) |
4 * 8 (32) |
Блоков выборки (в единицах AMD) |
4 * 16 (64) |
20 * 4 (80) |
32 * 8 (256) |
Блоков фильтрации |
1 * 16 (16) |
4 * 4 (16) |
8 * 8 (64) |
INT8 выборок за такт для билинейной фильтрации |
4 * 16 (64) |
16 * 4 (64) |
32 * 8 (256) |
FP16 выборок за такт |
½ * 4 * 16 (32) |
1 * 20 * 4 (80) |
½ * 32 * 8 (128) |
FP32 выборок за такт |
¼ * 4 * 16 (16) |
1 * 20 * 4 (80) |
¼ * 32 * 8 (64) |
Трилинейных фильтраций INT8 за такт |
½ * 1 * 16 (8) |
½ * 4 * 4 (8) |
½ * 8 * 8 (32) |
Билинейных фильтраций FP16 за такт |
- |
1 * 4 * 4 (16) |
½ * 8 * 8 (32) |
Билинейных фильтраций FP32 за такт |
- |
½ * 4 * 4 (8) |
¼ * 8 * 8 (16) |
Билинейных фильтраций одноканальных FP32 за такт |
- |
1 * 4 * 4 (16) |
¼ * 8 * 8 (16) |
Трилинейных фильтраций INT8 в секунду |
8 * 650 * 10^6 (5.2 млрд) |
8 * 825 * 10^6 (6.6 млрд) |
32 * 612 * 10^6 (19.6 млрд) |
Билинейных фильтраций FP16 в секунду |
- |
16 * 825 * 10^6 (13.2 млрд) |
32 * 612 * 10^6 (19.6 млрд) |
Билинейных фильтраций одноканальных FP32 в секунду |
- |
16 * 825 * 10^6 (13.2 млрд) |
16 * 612 * 10^6 (9.8 млрд) |
Хотя R600 значительно отстаёт от G80 по мощности текстурных блоков, в его пользу выступают более крупные кеши, повышенная тактовая частота, а также менее жёсткая привязанность текстурных блоков к конкретным шейдерным процессорам.
Но всё же R600 является заметным шагом вперёд по сравнению с R580+.
Судя по предварительным данным, Fetch4 будет включена в состав DirectX 10.1 под названием Gather4. В отличие от PCF, уже включенной в состав DX 10, это позволит напрямую передавать неотфильтрованные тексели одноканальных текстур блокам АЛУ (PCF передаёт блокам АЛУ только отфильтрованный результат). Начиная с RV530, продукты AMD уже поддерживают Fetch4, а компании nVidia придётся изменить их текстурные блоки для поддержки этой технологии.