quote:
Видеокарты.
Прежде всего хочу сказать, что у современных видеокарт имеются два
показателя производительности: скорость заполнения сцены (fillrate), назовем
его Ф для краткости и скорость блока обработки геометрии (throughput),
назовем его Т. Ф измеряется в мегапикселах (минимальный элемент экрана) в
секунду (Mpixels/sec), Т - в миллионах треугольников (или полигонов) в
секунду (Mtriangle/s, Mt/s). Хитрые производители, у чипов видеокарт которых
на конвейере два и более текстурников (GF2GTS, GF2MX, Radeon), любят
указывать Ф в мегатекселях (минимальный элемент текстуры) в секунду. Еще бы.
При этом величина Ф увеличивается в два раза. Но такое происходит только в
режиме наложения двух текстур на пиксел (мультитекстурирования). В случаях
монотекстурирования второй текстурник будет простаивать, а этого
производители писать не любят. У ATI Radeon третий текстурник простаивает
почти всегда (единственная игра, которая его использует - это Serious Sam).
Величина Ф очень зависит от пропускной способности видеопамяти, а она
зависит от разрядности видеопамяти и ее типа (DDR, SDR). У GF2MX, например,
производительность по Ф упирается в пропускную способность видеопамяти.
Проще говоря, в основном текстурники GF2MX (4 штуки) курят бамбук. Особенно
на GF2MX200. В 32-битном цвете видеокарта Riva TNT2Ultra даст бОльшую
производительность. Это и не удивительно, GF2MX200 разрабатывался на замену
TNT2M64 и Vanta. Применение DDR на GF2MX эффекта не даст, поскольку ширина
шины памяти падает до 64 бит (если бы MXу DDR 128бит память, он бы убил
GF256DDR, который в свое время позиционировался, как ускоритель среднего
класса, а NVIDIA это не выгодно). У GF2GTS и выше стоит DDR память, но и ее
скорости не хватает, ведь текстурников у него вдвое больше - 8 штук (4
конвейера по два текстурника на каждом). На Radeon DDR и GF3 положение
обстоит лучше, у обоих применяется технология, сберегающая пропускную
способность памяти (HyperZ и Hidden Surface Removal, HSR). Теперь о том,
почему скорость на GF2MX200 и GF2MX получается почти одинаковой. Особенно в
симуляторах. Прежде всего - симуляторы в основном представляют собой игры с
относительно небольшим объемем текстур и большим количеством треугольников
(у MSTS, MSFS даже не используется мультитекстурирование, зато объектов в
кадре очень много). В Ил-2, например, хорошо заметно падение
производительности при полете над городами - когда количество объектов (и
треугольников соответственно) сильно увеличивается. То есть симуляторы очень
чувствительны к Т видеокарты. Казалось бы, Т современных видеокарт за
глаза - GF256 - 15 Mt/s, GF2MX - 25Mt/s, GF2GTS - 31 Mt/s. Но очень хитрые
производители видеокарт никогда не пишут, какой процессор необходим для
достижения положенного Т. Ведь процессор должен готовить данные для
видеокарты, о том, что разбиение объектов на треугольники всегда (даже при
использовании блока TCL) производится ЦП системы производители видеокарт
скромно умалчивают. Возьмем, например старый 3D акселератор Вуду-1. Его Т
приблизительно равен 1 Mt/s. Полностью обеспечивается данными процессором
PII-233. Вуду-2 с его 3 Mt/s полностью загружается процом PII-600. И того
выводим простейшую зависимость - приблизительно 200 МГц на 1 Mt/s. С учетом
более продвинутой архитектуры современных процессоров - 150 МГц на 1 Mt/s. И
того, для загрузки геометрическими данными видеокарты GF256 нужен проц 2.25
ГГц. А ведь процу надо считать AI, физику игры, готовить данные для звука и
делать еще много полезных вещей. На самом деле, насыщение для GF256 наступит
чуть раньше - где-то в районе 2 ГГц проца P-4 или 1500 МГц Атлона (из-за
влияния других факторов, например, того, что видеокарте, кроме
треугольников, еще и текстуры обрабатывать надо, да и пропускная способность
системной шины играет не последнюю роль). Но эти данные верны только для
GF256 с его 15 млн Mt/s. А геометрическая скорость у GF2Ultra и GF3 уже под
35-40 Mt/s! Представьте, какой им нужен процессор (а уже и GF4 с частотой
300 и 330 МГц вышли). Положение способен исправить геометрический
сопроцессор (GPU, он же блок transform & light, T&L, TCL), имеющийся на
GeForce . В каком-то обзоре было написано, что в первую очередь от
применения геометрического сопроцессора (GPU) выиграют симуляторы (почему,
см. выше). Беда в том, что GPU в современных играх используется от силы на
30%. Если вообще используется. Даже тест 3Dmark2001 и тот утилизирует GPU
процентов на 45. Скорость вырастает в 1.5-2 раза в зависимости от условий
тестирования. В играх же скорость вырастает едва ли на 25-50%. В тесте
Nvidia Treemark хорошо виден эффект использования GPU, разница до 10 раз! Но
это синтетический тест, в реале скорость должна вырасти раз в 5-6, что тоже
немало. Большой выигрыш также может дать применение инструкций SIMD (AMD
3DNow или Intel SSE). Но и здесь дело обстоит плачевно. Оптимизация делается
формально, а то и вообще не делается. В итоге мы имеем почти одинаковую
скорость GF2MX200 и GF2MX400. Но если загрузить fillrate видеокарты на
полную мощность: поставить разрешение повыше, 32-битный цвет, включить
трилинейную фильтрацию (ее хорошо видно во Flanker-2 на взлетной полосе) -
разница налицо. Можно еще антиалиасинг для колорита включить. Тогда разница
будет огромной (например, 5 FPS против 15 FPS, антиалиасинг загружает
филлрэйт на всю катушку).
Я попытался вкратце рассмотреть аспекты производительности видеокарт в
зависимости от видеокарты и мощности центрального процессора системы.
PS. В тесте 3Dmark 2001 High Polygon Count при программном обсчете
треугольников используются упрощенные алгоритмы, работающие с ухудшением
качества. Поэтому и получаются результаты, одинаковые с теми, что получаются
при использовании аппаратного GPU.