Выпуск ATI Radeon X1800, а за ним и X1900 с 16-ю пиксельными конвейерами породил много споров об оправданности их архитектры в сравнении с конкурентной в виде GeForce 7800 GT и GTX, имеющей большее количество пиксельных конвейеров и текстурных модулей, но такое же количество render backends. В данной заметке я хочу проанализировать плюсы и минусы обоих подходов, рассматривайте её как дополнение к
GeForce 6600 и 7800: в чём фишка? Ближайшие перспективы NVidia и ATI.
Начнём с простейшего варианта - рендеринга без сглаживания и анизотропии. В этом случае архитектура G70 имеет неоспоримое преимущество. Максимальный темп выдачи фрагментов у 6 квадов пиксельных конвейеров значительно превышает таковой у R520, даже несмотря на преимущество последнего в тактовых частотах. Можно провести численное сравнение: 24 фрагмента за такт при 550 МГц даёт 13.2 миллиарда фрагментов в секунду у GeForce 7800GTX 512; 16 фрагментов на 625 МГц у X1800XT - "всего" 10 миллиардов. Но, если GeForce может выводить на экран лишь 8.8 гигапиксела в секунду (далее Гп/с), то Radeon все 10.
Однако, здесь необходимо учитывать особенность квадовой организации пиксельных конвейеров: они всегда рендерят 4 соседних пиксела, независимо от того, должны ли быть видны все пикселы четвёрки или только один, все принадлежат одному треугольнику или разным. Уже по окончании обработки четвёрки фрагментов невидимые будут "аннулированы", принадлежащие соседнему встанут в очерель на отрисовку заново, и только оставшиеся попадут на ROP. Вот тут-то и проявится слабая сторона X1800 - он просто не сможет загрузить все свои render backends. Этого никогда не случится с X1900, благодаря утроенному количеству fragment processors он легко достигает своих 10 Гп/с. Кстати, при обработке теневых объёмов GeForce тоже имеет преимущество, потому что его ROP за один такт могут сделать вдвое больше работы, т.е. 17.6 Гп/с.
Всё меняется при включении сглаживания. Мультисемплинг подразумевает многократный рендеринг подлежащих сглаживанию пикселов (обычно лишь границы полигонов) с небольшим изменением их координат и последующим усреднением результа. Render backends обретают возможность "проглатывать" по два фрагмента за такт, но ROP GeForce 7800 теряют возможность обработки z-буфера с удвоенной скоростью и Radeon X1800 получает преимущество за счёт тактовых частот. Для пикселов, не подлежащих сглаживанию, цвет рассчитывается только один раз; вот тут-то архитектура X1800 проявляет себя с лучшей стороны. Пока render backends переваривают удвоенное, учетверённое или ушестерённое количество фрагментов для пикселов, не подлежащих сглаживанию, fragment processors подсчитывают множество фрагментов для сглаживаемых.
С пресловутыми текстурными модулями тоже не всё так просто. Да, у GeForce 7800 их больше, но они "посвящены" конкретным квадам пиксельных конвейеров, а у ATI назначаются динамически, т.е. используются более эффективно, а также работают на большей частоте. Кстати, частота для них гораздо важнее, чем количество, когда речь идёт об анизотропной фильтрации, благодаря принадлежащим каждому текстурному модулю собственным кэшам текстур. В общем, 16 текстурных модуля (точнее 4 "квадовых" текстурных юнита) являются неплохим компромиссом: они способны билинейно отфильтровать 4 разных текстуры за такт и выдать все 16 сэмплов любой четвёрке пиксельных процессоров. Тогда как текстурные модули GeForce 7800GTX могут выдавать лишь по 4 сэмпла из текстуры за такт каждому из 6 квадов. Но это лишь теоретически, глядя на флуктуации скорости текстурирования в зависимости от количества тектур у NVidia, можно заподозрить более сложную, чем 1:1, организацию текстурных модулей.