Видеокарты и математика

24.06.2003


Введение

Более полугода прошло с момента опубликования статьи "Пропускная способность видеопамяти: комплексный подход к проблеме". Многое с того момента изменилось в мире видеокарт, в том числе вышел NV30 память которого оказалась вовсе не 256-битной и даже NV35, который исправил это досадное недоразумение. В этом смысле статья конечно отстала от жизни. Но, что меня обрадовало гораздо больше, не возникало повода усомниться в правильности и логичности изложенных в ней мыслей.

В этой статье я хочу продолжить рассказ об отношениях рассмотренных в вышеуказанной статье. В этот раз я постараюсь изложить материал более просто и понятно, с комментариями, примерами и аналогиями, а также обновить его в соответствии с современной ситуацией на рынке видеокарт.

Используемые сокращения и обозначения

ПСП — пропускная способность памяти;
ТЭПСП — технология экономии ПСП;
ОВП — объем видеопамяти;
к/с — кадров в секунду;
ЧОК — частота обновления кадров;
ГП — графический процессор.

Я решил сменить обозначения отношений, так как двухбуквенные запоминать и читать было не очень удобно. Теперь отношение bv будет обозначаться V, а отношение fv — F.

Цели

Вопросы на которые должна ответить данная статья два:

  1. Как оценить максимальный объем памяти, который будет эффективным для данной карты?
  2. Как оценить сбалансированность карты (соответствие ПСП скорости ГП)?

Об отношении "ПСП / ОВП" (V)

Много памяти это всегда хорошо. По одной простой причине — карта с большим объемом памяти ничего не теряет. Карта же, с объемом памяти недостаточным для хранения всех текстур в локальной видеопамяти, будет вынуждена работать с обычной памятью (ОЗУ), что катастрофически скажется на ее производительности. Казалось бы все просто: больше памяти — лучше! Ну, так бы оно и было, если бы карты с разным объемом памяти стоили одинаково. К сожалению, это не так. Тогда возникает вопрос: а нужен ли данной карте такой объем памяти? Ответ на этот вопрос поможет найти соотношение "ПСП / ОВП" (V).

Сначала стоит задаться вопросом, а что же в видеокарте такого особенного что начиная с некоторого объема память на ней становится лишней? Ведь если провести аналогию с ПК, то, даже если на довольно медленный процессор (скажем P-II 233) поставить 1 Gb памяти, то при определенных задачах он будет все же быстрее компьютера с меньшим объемом. А дело все именно в определенных задачах! Ведь если компьютер, в общем, считает задачи самого разного рода, то видеокарта — очень узкий класс. Причем это класс задач "реального времени". Если вычислительная задача выполнится скажем, вместо одного часа за полчаса это будет значительно быстрее, в то время как если скорость обновления будет 2 к/с вместо 1 к/с, это в любом случае будет неприемлемо (хоть и в 2 раза быстрее). Итак, для видеокарты важен не только объем, но и возможность его использования в реальном времени, скажем не менее 20-30 к/с. Именно из этих теоретических посылок исходит потребность в соотношении V.

Соотношение V вычисляется по следующей формуле:

     ПСП / ОВП ([байт/с]/байт)

Размерность получающейся величины 1/c или Гц. Полученная величина это количество раз, сколько за 1 секунду может быть считана вся память видеокарты. Теоретически это максимальная ЧОК при полностью заполненной памяти. Как известно ограничением ЧОК может быть не только пропускная способность, но и многие другие параметры, например, филлрейт — про это не стоит забывать. Таким образом, в нашем вычислении отношения V, мы предполагаем, что временных потерь на обработку кадра графическим процессором не существует.

Стоит отметить, что в вычислениях используется теоретическая, а не эффективная ПСП, которая может быть выше за счет использования ТЭПСП. Таким образом, забегая немного вперед, скажем, что например для GeForce4 Ti4200 64 Мб V = 106+, а не строго 106, т.к. величина стоящая в числителе (ПСП) отношения может, в принципе, принимать и большие значения. С другой стороны лично я считаю что более правильным, по крайней мере на данный момент, не учитывать ТЭПСП по причине того, что не всегда и не везде ТЭПСП дает эффект и он не всегда одинаков. В то время как величина без учета ТЭПСП дает, в некотром роде, гарантированное значение. Таким образом усливимся использовать "чистые" значения ПСП в своих вычислениях, а "+" держать в уме.

Ниже приведен график отношений для различных карт фирмы nVIDIA с объемами видеопамяти от 32 до 512 Мб:

ПСП / ОВП (V) - nVIDIA

Дадим некоторые пояснения к графику. "Вершина" каждого цвета это величина V для объема указанного в легенде. "Низ", соответственно, является величиной V для вдвое меньшего объема памяти. То есть, для карты объемом Х Мб область "эффективного" V (использование памяти 50-100%) будет соответствовать диапазону цвета графика "Х".

Что же можно сказать по полученным величинам? А можно сказать, например, что рациональность установки 32 Мб на GeForce2 MX примерно такая же как и 64 Мб на GeForce2 GTS и примерно такая же, как 128 Мб на GeForce4 Ti4600. Рациональность, подчеркиваю, с чисто технической точки зрения, независимо от того, требуют игры такой объем памяти или нет. Можно также сказать, что рациональность установки 64 Мб на GeForce2 MX сомнительна, ибо в этом случае, несмотря на то, что скорость ее работы при объемах текстур порядка 64 Мб будет несравненно выше чем на карте с 32 Мб, максимум скорости будет равен 40 к/с. В этом случае лучше просто уменьшить объем текстур до 32 Мб и играть с нормальной скоростью. Однако очевидно, что объем текстур это достаточно произвольное значение, и он может быть например 38 Мб. В этом случае карта с 32 Мб будет неспособна работать с нормальной производительностью, в то время как карта с 64 Мб будет чувствовать себя достаточно неплохо. Это не стоит упускать из виду. И именно поэтому график оформлен так, что выделены именно диапазоны объемов, а не максимальные величины.

Для удобства эти же величины в табличной форме:

ПСП / ОВП (V) - nVIDIA

В примечании звездочкой отмечены карты с ТЭПСП.

Таблица отношения V для некоторых карт фирмы ATi:

ПСП / ОВП (V) - ATi

Стоит отметить любопытный факт: для Radeon 9800Pro установка 256 Мб (о которых сейчас идет так много споров) не более "нелогична" чем 32 Мб на Radeon 32 Mb SDR. Теоретически карта способна "ворочать" такими объемами при скорости 40-80 кадр/с (даже без учета ТЭПСП).

Еще один любопытный момент: обратим внимание на карту о которой было последнее время сказано очень много — Radeon 9500 (256 bit). 256 bit версия Radeon 9500 известна тем, что существует возможность переделать ее программным способом в Radeon 9700. Перспектива заманчивая. Нетрудно заметить что на этом графике показатели 9700 и 9500 (256 bit) совпадают. Мы вернемся к этим картам при рассмотрении отношения F.

Для удобства эти же величины в табличной форме:

ПСП / ОВП (V) - ATi

В примечании звездочкой отмечены карты с ТЭПСП.

Итак, подведем некоторый итог. Отвечая на поставленный нами вопрос: "Как оценить максимальный объем памяти, который будет эффективным для данной карты?", даем такой ответ: чтобы оценить максимальный объем памяти, который будет эффективным для данной карты необходимо посчитать соотношение V для возможных вариантов и оценить абсолютный возможный максимум ЧОК при этом объеме. Выберите тот, который устраивает вас (как известно у разных пользователей требования тоже разные).

Рассмотрим пример: например вы выбираете карту GeForce Ti4200, но не знаете с каким объемом виодеопамяти 64 или 128 Мб. Смотрим график для карты с 64 Мб V = 53-106 к/с, а для карты с 128 Мб V = 26-53 к/с. В действительности ЧОК скорее всего будет ниже в силу ряда причин (одну из которых мы рассмотрим при анализе отношения F), а выше, наоборот, скорее всего не будет. Таким образом если вас не устраивает ЧОК в 53 к/с, то ваш выбор карта с 64 Мб, но будьте готовы к проблемем если настройки игры не позволяют снизить объем требуемой видеопамяти ниже 64 Мб. Иначе соответственно 128 Мб. В этом случае следует оценить вероятность появления игр с такими требованиями к видеопамяти, если их просто не будет, то и деньги будут потрачены зря.

Об отношении "филлрейт / ПСП" (F)

Если соотношение V достаточно простое и очевидное, то вопрос баланса карты гораздо более сложный. В первую очередь, конечно, из-за множества факторов влияющих на это.

Рассмотрим теоретические обоснования, опираясь на которые мы будем вести дальнейшие рассуждения. Как и при рассмотрении отношения V зададимся вопросом: а что дает нам право утверждать, что данная карта сбалансирована, а эта нет? Проведем аналогию с компьютерами: если например процессор Pentium 4 или Athlon XP, снабдить памятью PC66, то очевидно, что процессор не будет работать на полную мощность, ему просто ну будет хватать данных для обработки. Хотя с другой стороны существует ряд задач где и этой скорости памяти хватит. Но ведь как раз на видеокартах, как мы уже отмечали при рассмотрении отношения V, класс решаемых задач очень узок, поэтому в отличие от простого процессора, связь "скорость ГП — ПСП" гораздо более жесткая. Остается определить основную работу которую выполняет ГП. Это в первую очередь операция текстурирования, которая по совместительству является и наиболее требовательной к ПСП операцией. Именно это положение является базовым в теории отношения F.

Таким образом под сбалансированностью карты будем понимать соотношение мощности ГП, которая у нас будет ассоциироваться со скоростью текстурирования, с пропускной способностью памяти. Сбалансированность карты можно разбить на 3 условные категории :

  1. ПСП выше потребностей ГП
  2. ПСП соотвествует потребностям ГП
  3. ПСП ниже потребностей ГП

Соотношение F вычисляется по следующей формуле:

     филлрейт / ПСП ([текс/с]/[байт/с]).

Размерность получающейся величины текс / байт. Полученная величина это количество обработанных текселей на 1 байт переданных данных, если предполагать, что чип загружен на 100%.

Поскольку в современных видеокартах используются ТЭПСП, эффективная ПСП становится выше теоретической. Это также необходимо по возможности учитывать. Таким образом, забегая немного вперед, скажем, что F у GeForce4 Ti4200 равно не 0.282, а 0,282-, т.к. величина в знаменателе (ПСП) может, в принципе, принимать и большие значения. Как и в аналогичной ситуации в отношении V, лично я считаю, что более правильным, по крайней мере на данный момент, не учитывать ТЭПСП по причине того, что не всегда и не везде ТЭПСП дает эффект и он не всегда одинаков. В то время как величина F без учета ТЭПСП дает, в некотром роде, гарантированное значение. Таким образом усливимся использовать "чистые" значения ПСП в своих вычислениях, а "-" держать в уме.

Чем больше отношение F, тем менее ограничен филлрейтом максимальная ЧОК видеокарты. Большое отношение не значит что карта хороша, скорее наоборот — она несбалансированна (категория 3). Малое значение F свидетельствует о малом филлрейте карты и ее несбалансированности с этой стороны (категория 1).

Можно привести очень наглядную аналогию: представим две последовательно соединенные трубы, по которым течет вода, первая труба символизирует ПСП, вторая — мощность ГП. Если первая труба будет шире второй, то поток воды будет ограничен второй трубой — это категория 1. Если трубы будут одинакового диаметра, то поток воды не ограничивается ничем кроме собственно диаметра труб — это категория 2. Если вторая труба шире второй, то поток воды будет ограничен первой трубой — это категория 3.

Оценивая известную для некоторых карт сбалансированность полученную практическим путем, можно предположить, что для карт без ТЭПСП оптимальное значение F находится около 0.2, а в картах с такими технологиями — около 0.2-0.25. Повторюсь, что единственным надежным способом определения сбалансированности карты являются практические испытания. Однако, отношение F может быть удобным для сравнения и предварительной оценки. Например, известно, что GeForce2 GTS сильно несбалансированная карта — у нее недостаточная пропускная способность памяти. Сразу можно оценить какая карта из всего семейства будет более сбалансированной.

Хотелось бы отметить влияние такой популярной опции как анизотропная фильтрация на оптимальное значение отношения F. Здесь все просто — анизотропия требует лишних тактов ГП при текстурировании, а сколь-нибудь заметного увеличения требований к ПСП не происходит (видимо за счет эффективного кэширования). Таким образом, требуется увеличение мощности ГП при прежней ПСП, а значит увеличение оптимального F. Строго говоря, для каждого типа ГП множитель увеличения свой. Более того, нельзя даже утверждать что переход с 2х на 8х анизотропию на разных ГП потребует одинакового увеличения множителя F — сказываются различия как в самих алгоритмах реализации анизотропной фильтрации, так и в архитектурах ГП. Но можно очень приблизительно сказать, что, на данный момент, требуется увеличение F в 1.5-2 раза для достижения сбалансированности видеокарты при высоких степенях анизотропии (8х-16х). Отмечу что выше- и нижеприведенные оптимальные значения этот множитель анизотропии не учитывают.

Ниже приведен график отношения F для различных карт фирмы nVIDIA:

филлрейт / пропускная способность (F)

Например если взглянуть на соотношение V для GeForce DDR, то можно смело утверждать, что 64 Мб для ее шины памяти "по зубам". Однако если мы взглянем на соотношение F для этой карты — 0.100, будет понятно что карта сильно несбалансирована по филлрейту с пропускной способностью памяти. Поэтому 64 Мб памяти на ней это скорее излишество. В то же время, при примерно равном с ней V, у GeForce2 GTS соотношение F значительно больше — 0.300. Поэтому 64 Мб памяти на GeForce2 GTS более уместны.

Также можно отметить, что на графике хорошо заметна несбалансированность карт GeForce FX 5600/5200 [Ultra], которые из-за этого в проигрывают "реальной жизни" своим "младшим братьям" GeForce 4 Ti4x00. Можно сказать, что теория получила свое практическое подтверждение.

Для удобства эти же величины в табличной форме:

филлрейт / пропускная способность (F)

В примечании звездочкой отмечены карты с ТЭПСП.

График отношения F для различных карт фирмы ATi:

филлрейт / пропускная способность (F)

Честно говоря, мне было очень любопытно узнать, насколько эмпирически полученные величины оптимального F подойдут к картам другой фирмы. Владельцы ATi буду ли я прав, если скажу, что большинство карт ATi дают хороший прирост при разгоне чипа, и что одни из самых сбалансированных карт это Radeon 8500/LE/9100/9500Pro? Судить вам.

А теперь вернемся, как и обещали к Radeon 9500 (256 bit). Как видно по графику ее показатели в случае неудачи при переделке в Radeon 9700 будут очень плохими. Стоить отметить что карта не будет медленее Radeon 9500 (128 bit) как это может показаться на первый взгляд из графика (значение F у неё в 2 раза ниже). Карта будет такой же по скорости, возможно даже местами немного быстрее, а отношение показывает лишь то, что сбалансированность карты будет в 2 раза хуже. А если учесть что сбалансированность даже Radeon 9500 (128 bit) не на высоте, то можно считать что в случае неудачи при переделке в Radeon 9700, 256 bit шина памяти уйдет, как и ваши деньги, что называется "коту под хвост". В этом смысле их с гораздо большей пользой можно было бы потратить на Radeon 9500Pro — отличную по сбалансированности карту.

Для удобства эти же величины в табличной форме:

филлрейт / пропускная способность (F)

В примечании звездочкой отмечены карты с ТЭПСП, а двумя звездочками те карты, у которых, при расчете отношения F, учитывались только 2 блока блока текстурирования из трех.

Итак, подведем некоторый итог. Отвечая на поставленный нами вопрос: "Как оценить сбалансированность карты (соответствие ПСП скорости графического процессора)?", даем такой ответ: чтобы оценить сбалансированность карты, необходимо вычислить соотношение F и оценить в какую из категорий сбалансированности вы попали.

Рассмотрим пример: например вы выбираете между картами GeForce 4 Ti4200 и GeForce FX 5200. По графику сразу видно что более оптимальной является карта GeForce 4 Ti4200, как хорошо сбалансированная, в то время как у GeForce FX 5200 проблемы с нехваткой филлрейта.

О других прикладных применениях отношений V и F

О совместном их использовании мы мимоходом уже упоминали при описании соотношения F. Итак, соотношение V дает нам оценку разумного объема памяти. Соотношение F же является как бы критерием его истинности. Если при данном V, F <= 0.1 (явно низкое), то значение V не будет соответствовать действительности и лучше взять карту с меньшим объемом памяти. Если же F >= 3.0 (явно высокое), то соотношение V будет соответствовать действительности, но лучше по возможности поискать модель карты с более быстрой памятью или меньшей частотой ядра (в обоих случаях соотношение F уменьшается), так как в таком случае работа карты будет более эффективной (а вам возможно удасться съэкономить немного денег). При F ~= 0.2 значение V близко к действительному и карта достаточно хорошо сбалансирована. Любителям же анизотропной фильтрации нужно сделать соответствующие поправки этих значений.

В других словах, при формулировке определения отношения V мы упоминали, что полагаем что временных потерь на обработку кадра ГП не существует, так вот, чем больше отношение F, тем больше это положение соответствует действительности. Это очевидно — чем больше филлрейт, тем меньше времени нужно ГП для текстурирования (в нашем вычислении V мы имеем некоторый гипотетический ГП с бесконечно большим филлрейтом).

Для любителей "разгона" пользу представляет отношение F. По нему можно определить, какую часть карты лучше разгонять, и какую в этом случае лучше карту покупать. Например, соотношение F велико, в этом случае лучше разгонять память. Поэтому лучшим решением будет купить карту с минимально наносекундной памятью и/или с хорошим охлаждением памяти. При малом F, соответственно, все наоборот — лучше запастись хорошим кулером для чипа и упор делать на разгон последнего.

Заключение

В заключение хотелось бы сказать следующее. Конечно, отношения V и F сильно упрошают некоторые вещи и игнорируют множество факторов. У отношения F под вопросом его оптимальное значение. Но тем не менее, даже столь упрощенные, они все же дают согласующиеся с рельностью результаты, а также очень эффективны для сравнительного анализа, где абсолютное значение не играет роли.

Приложение

В качестве приложения к статье, рекомендуем воспользоваться программой Math (366 Кб), вычисляющей соотношения V и F (и некоторые промежуточные величины) по заданным исходным данным. Программа обладает более широкими возможностями чем графики и таблицы, представленные в статье. В частности, есть возможность ввести коэффициент средней экономии полосы пропускания и вычислять V и F как с его учетом, так и без; а также вычислять значение F с испольованием всех ТМ конвейера графического процессора (а не только двух). Программа обладает интуитивно понятным интерфейсом и не должна вызвать трудностей в использовании. Дополнительная документация к программе содержится в файле readme.txt, входящим в архив с программой.



djpython

Автор выражает благодарность
Bishop'у за редакторскую и прочие правки,
Cooler'у за таблицу со спецификациями видеокарт фирмы ATi.


Обсудить/дополнить в конференции