История вопроса
Со времени публикации первой статьи о
процессорозависимости видеосистемы прошло довольно много времени. Тогда мы выяснили, что если производительность видеосистемы более чем достаточна, то результаты тестов в FPS практически линейно зависят от частоты центрального процессора. И наоборот, если мощность видеокарты недостаточна, график результатов с определенного момента выходит на горизонтальную «полочку», и практически не зависит от частоты центрального процессора.
Однако один момент в то время остался без внимания и с тех пор не давал покоя. Чтобы проиллюстрировать, о чем именно идет речь, приведем один из графиков старой статьи.
Как видите, линия результатов для режима 1024х768 No AA/AF идет очень близко к наклонной синей линии, иллюстрирующей линейную зависимость от частоты CPU. В дальнейшем, для определенности, будем называть этот участок графика зависимости FPS от частоты CPU – линейным участком. Второй важный участок графика – горизонтальная «полочка», которую вы можете видеть в правой части графика, на примере линии для режима 1600x1200 4AA/16AF. Как видите, переход между этими крайностями происходит плавно, без изломов. Это хорошо видно по линиям результатов для режимов 1600х1200 No AA/AF и 1280х1024 4AA/16AF, например.
Область между линейной и горизонтальной частями графика назовем «переходной». Откуда она берется? Почему мы наблюдаем плавный изгиб линий, а не четкий излом? Чем это обусловлено? Ответы на эти вопросы мы и попытаемся найти.
Предварительные замечания
Как показывает опыт, какую бы видеокарту мы не взяли, на каком бы стенде и в каких режимах не проводили тестирование – в большинстве случаев график зависимости среднего FPS от частоты CPU будет иметь все три области – линейную, переходную и горизонтальную. Конечно, в отдельных случаях какие-то из указанных областей могут быть выражены не так четко. Например - если видеокарта не ограничивает производительность системы, то мы, разумеется, получим зависимость FPS от частоты CPU близкую к линейной. И наоборот, если видеокарта «слаба», а CPU довольно мощный, то график FPS от частоты CPU выродится в горизонтальную линию. Впрочем, эти две крайности являются частыми вариантами более общего случая, указанного выше.
Почему график зависимости среднего FPS от частоты CPU имеет именно такую «каноническую» форму? Для того, чтобы ответить на этот вопрос, давайте детально рассмотрим исходные данные, на которых он строится. Если вы читали предыдущие статьи этой серии, то метод получения этих данных вам должен быть знаком. Мы будем использовать данные о времени рендеринга каждого кадра, предоставляемые утилитой FRAPS так, как это описано в статье
Методика тестирования видеокарт 2007. Использование FRAPS.
Тестовый стенд по нынешним меркам не самый современный, но вполне достаточный, чтобы продемонстрировать все ключевые идеи и выявить необходимые закономерности.
Шина |
PCI-E |
AMD Athlon64 X2 3800+ @ FSB=270 MHz |
ASUS EN8800GTS 320 Mb |
ASUS A8N-SLI Premium |
Hynix PC3200 2x1024 Мб |
WinXP + SP2 + DirectX 9.0c |
FSP 400 Вт |
В качестве тестового приложения будем использовать игру F.E.A.R. Выводы, которые мы получим, легко применимы и к любой другой игре. Итак, приступим.
рисунок 1
Как и прежде, график зависимости FPS от частоты CPU строился путем изменения множителя процессора в сторону понижения, остальные параметры не изменялись. Средние FPS, полученные при каждой частоте CPU, отложены на графике. Как видите, для выбранного графического режима график имеет вид, близкий к «каноническому», хотя и не является в полном смысле «идеальным».
Дальнейшие рассуждения могут показаться несколько пространными, но они важны для существа дела. Позже мы подкрепим их графиками и диаграммами. Что есть средний FPS? По определению, это количество воспроизведенных кадров в демо-сцене, деленное на время длительности этой демо-сцены. Размерность этой величины – «1/сек». Если мы возьмем какой-то один кадр и разделим единицу на время рендеринга этого единственного кадра, то получим некую величину с той же размерностью, что и у среднего FPS. Давайте назовем полученную величину «мгновенным FPS», соответствующим данному конкретному кадру. То есть, если кадр рендерился в течение 20 миллисекунд, «мгновенный FPS» для этого кадра будет 1/0,02 секунды = 50 FPS. Зачем мы лезем такие дебри? А вот зачем. Понятно, что средний FPS будет тем выше, чем меньше время рендеринга сцены, то есть, чем меньше времени рендерится каждый кадр. Или же, говоря по-другому, чем выше доля кадров с высоким мгновенным FPS. От чего зависит время рендеринга каждого кадра? Казалось бы, ответ очевиден – от того, насколько видеокарта быстро этот самый кадр рисует. Но что будет, если видеокарта, говоря примитивно, способна очень быстро рисовать кадры? В какой-то момент ей придется ждать, пока поступят новые данные от центрального процессора. Если взять процессор более быстрый, то в такой ситуации просчет каждого кадра будет выполнятся быстрее, и наоборот. То есть, скорость центрального процессора определенным образом влияет на время отрисовки кадра, но насколько существеннен этот вклад в итоговое значение среднего FPS, и при каких именно условиях - пока сказать сложно. Перейдем к наглядной демонстрации.
рисунок 2
Это диаграмма распределения значений мгновенных FPS для частоты процессора равной 2700 МГц. Строится она следующим образом – берем время рендеринга каждого кадра, рассчитываем на его основе мгновенный FPS, а затем подсчитываем, сколько значений мгновенных FPS находятся в пределах определенного диапазона. В нашем случае диапазон FPS был выбран равен единице. А высота каждого столбика на диаграмме как раз и показывает, сколько мгновенных FPS из всей демо-сцены укладываются в каждый диапазон. На диаграмме мы также провели вертикальную красную линию, которая обозначает средний FPS. Как видите, разброс значений мгновенных FPS очень высок – от 35 до 300. Однако, большая часть значений сосредоточена в левой половине диаграммы.
Что будет, если мы уменьшим частоту центрального процессора? По идее, теперь расчет кадров должен выполняться чуточку медленнее. Но более всего это должно сказаться на тех кадрах, чей мгновенный FPS близок к максимальным. Давайте попробуем на основе диаграммы распределения, изображенной на рисунке 2 построить график средних FPS, аналогичный графику 1, но с важным условием – мы будем шаг за шагом «отбрасывать» все значения мгновенных FPS, которые больше некоторого уровня, то есть не будем включать их в расчет среднего FPS. Что из этого получится, вы можете видеть на рисунке ниже.
рисунок 3
Здесь по оси Х вместо частоты центрального процессора откладывается «уровень отсечки». Понятно, что этот график искусственен, причем по построению. Более того, способ отбрасывания «мгновенных FPS» прямо влияет на величину среднего FPS, рассчитываемого таким образом. И вот почему. Можно просто отбросить некоторое количество кадров, оставляя общее время рендеринга демо-сцены неизменным, а можно вместе с отбрасываемыми кадрами из общего времени рендеринга вычесть и время, потраченное на их отрисовку. Возникает вопрос – какой из способов «достовернее»? В реальности, при уменьшении частоты CPU «быстрые» кадры не пропадают, просто они рендерятся дольше. С другой стороны, общее время рендеринга увеличивается, и это тоже надо бы учитывать. Впрочем, сейчас мы не будем глубоко вдаваться в эти подробности. Свой "выдуманный" график мы можем строить так, как захотим (для определенности отметим, что мы использовали первый из вышеприведенных способов). А уж насколько он коррелирует с реальным положением дел, скоро станет известно.
Что касается переходной области, то на примере построения данного графика становится понятна причина ее возникновения. Если постепенно наращивать мощность процессора (увеличивая его частоту, например), то увеличивается доля кадров, с высоким мгновенным значением FPS, а значит и средний FPS постепенно растет. Однако, все большее увеличение частоты CPU приводит к тому, что главным сдерживающим фактором уже становится видеокарта. Поэтому темп прироста «быстрых кадров» падает. Когда потенциал видеокарты раскрыт полностью и она уже не способна выдать больше кадров чем может, увеличение частоты CPU больше никак не сказывается на приросте среднего FPS, и в итоге мы получаем горизонтальную «полочку» на графике зависимости среднего FPS от частоты CPU.
Реальная картина
В дополнение к рисунку 2 построим еще несколько диаграмм распределения мгновенных FPS, в зависимости от реальной частоты центрального процессора.
рисунок 4
Некоторые изменения в картине распределения есть, но далеко неочевидные. Идем дальше. Понизим множитель CPU (а значит и его частоту) еще на ступень.
рисунок 5
Здесь уже более заметно, что плотность значений в правой части диаграммы заметно меньше, чем на рисунке 2. В то время как остальная часть диаграммы не претерпевает качественных изменений и средний FPS остается почти тем же самым.
рисунок 6
Как видите, с уменьшением частоты CPU столбики распределения смещаются все левее и левее. То есть, доля кадров с низким временем рендеринга (большим мгновенным FPS) падает. Причем становится заметен скачок величины среднего FPS.
Обратите внимание на крайние левые столбики диаграммы распределения. Фактически, это минимальный FPS, который мы наблюдаем в демо-сцене. Если сравнить его со значениями на предыдущих диаграммах, видно, что несмотря на снижение частоты CPU почти в полтора раза, минимальный FPS по-прежнему находится на уровне примерно 35 FPS. То есть, изменение частоты CPU не сказывается на времени рендеринга самых «медленных» кадров, а значит, оно полностью определяется «мощностью» видеокарты. Сохранится ли такое положение дел и дальше? Простая логика подсказывает, что рано или поздно снижение частоты CPU должно сказаться и на значении минимального FPS. Ведь в предельном случае, когда частота CPU равна 0 МГц, мы вообще не получим ни одного отрендеренного кадра, то есть и средний, и максимальный, и минимальный FPS будут равны нулю. Понизим частоту CPU на еще одну ступень.
рисунок 7
Как видите, диаграмма явственно смещается влево. Исчезают не только кадры с мгновенным FPS больше 270, но и «главный колокол» распределения сдвигается влево. Минимальный FPS равен уже не 35, а около 30. Смотрим дальше.
рисунок 8
рисунок 9
Тенденция сохраняется. Доля кадров со значениями мгновенных FPS выше 150 пренебрежимо мала. Минимальный FPS при этом составляет всего лишь 20 FPS.
Таким образом, в реальности получается, что с уменьшением частоты CPU диаграмма распределения FPS не только «сжимается» за счет исчезновения «быстрых» кадров (кадров с высоким значением мгновенного FPS), но и сдвигается влево по оси Х. Это несколько расходится с нашими предположениями, исходя из которых мы строили искусственный график на рисунке 3. Тем не менее, давайте попробуем совместить реальный и искусственный графики вместе, чтобы оценить степень расхождения теории и реальности.
рисунок 10
К графику на рисунке 3 мы добавили реальные значения среднего FPS, из графика 1. При этом мы постарались совместить оба графика, насколько это возможно. Поскольку максимальные значения FPS этих двух графиков одинаковые, достаточно было чуть изменить масштаб графика 1 по оси Х (начала координат у обоих графиков совпадают). Как видите, несмотря на все допущения и предположения, графики довольно хорошо совпадают друг с другом.
Какие практические выводы можно извлечь из всех этих построений? Например такие… Из только что приведенного примера совмещения графиков видно, что если мы хотим получить график зависимости среднего FPS от частоты CPU, нам необязательно измерять средний FPS для каждого значения частоты CPU, достаточно это сделать для максимальной частоты процессора (где значения FPS выходят на горизонтальную «полочку»), и для минимально возможной частоты CPU, где средний FPS уже находится на линейном участке. После этого путем вышеизложенных манипуляций с отбрасыванием «быстрых» кадров можно получить искусственный график и останется совместить его с точками, соответствующими замеренным значениям среднего FPS. Насколько этот подход универсален и применим ко всем подобным графикам, тема для отдельного исследования. Однако, если данный подход верен, тестеры смогут сэкономить изрядное количество времени, при этом получив исчерпывающую информацию о поведении среднего FPS при разных частотах центрального процессора.
Для обычных пользователей тоже есть приятные новости. Очень часто в письмах, которые приходят к нам в редакцию, да и на нашем форуме, поднимается вопрос – «какой процессор потянет ту или иную видеокарту?». Такая постановка вопроса не совсем корректна. Ведь если процессор слабый, видеокарта не перестанет «показывать» или работать хуже. Правильнее было бы говорить – «какой процессор сможет раскрыть потенциал такой-то видеокарты наилучшим образом?». Теперь мы можем ответить на этот вопрос. Конечно, речь идет не о том, что для каждой видеокарты мы возьмем и прямо сейчас укажем минимально необходимый CPU (возможно, со временем такая статистика и появится на сайте). Но теперь мы знаем, каков критерий «достаточности» CPU. Как показывалось выше, при снижении частоты CPU до определенного значения, уровень минимального FPS «приходит в движение» и начинает уменьшаться. Такое значение частоты CPU можно назвать «критической». При частотах CPU меньше «критической» минимальный FPS начинает заметно падать, то есть снижается комфортность игры. При частотах CPU выше «критической» средний FPS может быть и больше, но его прирост достигается за счет увеличения числа «быстрых» кадров, что мало сказывается на комфортности геймплея, поскольку «главный колокол» распределения FPS остается на прежнем месте. Если же особая точность не нужна, «критическую» частоту CPU можно определить еще проще - когда график среднего FPS стремится принять вид горизонтальной полочки, это и есть «критическая» частота CPU. В нашем примере, для данного тестового стенда и выбранного графического режима получается, что для комфортной игры в F.E.A.R. достаточно процессора Athlon 64 X2 с частотой около 1900 МГц (Athlon 64 X2 3800+).
Аналогичные рассуждения можно провести для любого другого компьютера, игры, графического режима. Возьмем, к примеру, игру Crysis. Хит осени 2007 года является серьезной нагрузкой для любого современного компьютера. Конечно, конфигурация данного стенда слабовата, но общие принципы работают и здесь. Мы использовали встроенный в игру тест видеосистемы. Ниже приведен график значений среднего FPS для режима 1024х768 No AA/AF.
рисунок 11
Как видите, в данном случае мы наблюдаем линейный участок (совпадает с пунктирной прямой из начала координат) и переходную область. Горизонтальная полочка отсутствует, поскольку запаса частоты CPU для этой игры в данном режиме оказалось недостаточно. Точками отмечены значения среднего FPS, а черточки снизу соответствуют значениям минимального FPS. Приведенный график далек от стремления к горизонтальной «полочке» в правой части. С другой стороны, если вам достаточен минимальный FPS порядка 40, то даже на этом компьютере при таких настройках графики можно с комфортом играть при частоте CPU около 2000 МГц.
Если мы увеличим разрешение экрана до 1280х1024, то получим похожий график, который совпадает с предыдущим в левой части, но имеет существенные отличие в правой.
рисунок 12
Посмотрите, теперь крайние правые точки образуют горизонтальную «полочку». Это говорит о том, что видеокарта вышла на свой предел, и при увеличении частоты CPU не способна отрисовывать кадры с большей скоростью. Тем не менее, и для этого разрешения «критическая» частота CPU осталась прежней – около 2000 МГц.
рисунок 13
С настройками качества графики «medium detailes», картина заметно меняется. FPS существенно падает, поскольку видеокарта явно «не тянет». Об этом говорит горизонтальная «полочка» в правой части. Однако, если следовать выведенному нами критерию, и здесь «критическая» частота CPU составляет порядка 2000 МГц. В то же время минимальный FPS находится на уровне около 20, что довольно мало. Впрочем, и средний FPS равный 40 для «шутера» комфортным не назовешь. Вывод прост. Для данного режима процессора достаточно, а видеокарта - «не тянет».
Заключение
График зависимости среднего FPS от частоты процессора уже не раз давал нам пищу для размышлений. В первой части статьи мы вывели «критерий корректного сравнения производительности видеокарт», согласно которому для разных видеокарт правильно сравнивать те значения среднего FPS, которые лежат на горизонтальной «полочке» графика. Впрочем, данный критерий необходим скорее тестерам для получения корректных результатов и их сравнения. В этот раз мы рассмотрели другой участок графика – переходную область между участком линейного роста и горизонтальной «полочкой». Результаты, полученные в данной статье, имеют четкую практическую направленность и могут быть полезны для большинства пользователей. Речь идет о «критической частоте» центрального процессора, которая определяет CPU минимально необходимой производительности, способный раскрыть наибольшую часть потенциала видеокарты. Используя данную методику, каждый сможет определить, насколько конфигурация его компьютера сбалансирована, насколько центральный процессор раскрывает потенциал видеокарты, и не пора ли его менять. А может, пришло время заменить видеокарту, а не центральный процессор?