О понимании технических характеристик видеокарт (или непреходящие ценности и ретро)
ВМЕСТО ПРЕДИСЛОВИЯ
Какой должна быть видеокарта для CG и игр?
Вопрос не такой простой, поскольку тесно связан не только с оценкой технических показателей устройства, но и с вопросом цены. В сети немало материалов на эту тему, но мы все же обратимся к ней еще раз и постараемся рассмотреть ее комплексно, учесть наиболее важные факторы и их взаимосвязи. Чтобы извлечь из этого максимум пользы, возьмем отстраненный от сегодняшнего дня пример, видеокарту, которая уже стала историей: Sapphire Radeon X1650 PRO (RV535). Этот пример уже не может вызывать бурных споров, цена устройства тоже теперь не имеет значения, поэтому на него можно смотреть достаточно трезво.
В этом разговоре мы остановимся на технических характеристиках и их значении. Мы не станем вдаваться в нюансы, а сосредоточимся на главном. При этом постараемся рассмотреть это кратко и просто. Тех, кто помнит и знает, я приглашаю к ностальгической рефлексии и вспомнить, как это было, кто не помнит или не знает - узнать, а всех вместе - задуматься над тем, как же должно все-таки быть. Одновременно не будем забывать о важности вопроса стоимости характеристик видеокарт, который отложим на будущее.
Ответ на поставленный в первом абзаце вопрос определяется множеством характеристик видеокарты. Кроме того, видеокарта - это не вещь в себе, она является частью более сложной системы - компьютера. Несбалансированные характеристики системы (наиболее типичный источник проблем), даже если сами по себе выглядят привлекательно, могут в итоге оказаться дорогим и малополезным решением. Как известно, наиболее удачное приложение для просмотра характеристик видеокарты - GPU-Z. Используем его для наглядности.
На примере этого рисунка разберем по порядку ключевые характеристики выбранной для примера видеокарты. Для ясности будем указывать в скобках конкретные значения параметров, списывая их с рисунка.
ЧАСТЬ 1
GPU Clock (594 MHz) - тактовая частота видеочипа в герцах. Чем выше, тем производительнее карта.
Memory Clock (1391 MHz) - тактовая частота видеопамяти. Влияние на производительность такое же.
Memory Type (GDDR3) - тип видеопамяти. Чем новее тип, тем выше частота памяти.
Memory Size (256 MB) - объем памяти (здесь - в Мбайтах). Чем выше значение, тем больше текстур сможет хранить видеокарта в собственной памяти. Если ширина шины видеокарты шире ширины шины интерфейса подключения видеокарты к компьютеру (см. ниже), то этот параметр оказывает очень заметное влияние на производительность. Если ширина шины видеокарты такая же, или даже ниже, чем у интерфейса подключения, то влияние малозначительно.
Bus Width (128 bit) - ширина внутренней шины видеокарты. Очень важный параметр. Чем шире шина, тем выше ее пропускная способность, т. е. способность пропустить через себя определенное количество информации. Сегодня 128 бит - это минимум, необходимый для комфортной работы с CG и игр. С этой ширины начинаются решения среднего класса. Предпочтительно выбирать карты с внутренней шиной 192, 256 и более бит. Сегодня предлагается очень много видеокарт с шириной шины 64 бита. Часто такие карты снабжаются высокопроизводительными памятью и процессором, большим объемом видеопамяти, но по существу их покупать для задач CG и игр не следует. Это бюджетные решения (хотя порой они могут стоить не так уж и мало), которые являются хорошим вариантом для домашнего и офисного компьютера, нетребовательных игр и просмотра фильмов. В этом плане заметным преимуществом таких устройств может стать их абсолютная бесшумность (зачастую они не снабжаются кулерами).
Bandwidth (44,5 GB/s) - пропускная способность шины видеокарты. Этот параметр производен от частоты и ширины шины видеопамяти: ширина * частота / 8. В нашем случае 128 * 1400 / 8 = 22 400 (т. е. 22,4 GB/s; как видно, GPU-Z тут ошибается, выдавая 44,5 GB/s). Чем больше пропускная способность, тем выше производительность видеокарты.
Bus Interface (AGP 8x @ 8x) - интерфейс подключения видеокарты к материнской плате. Мы говорили о нем выше. Его характеристики следует сравнивать с пропускной способностью шины самой видеокарты. Интерфейс AGP сегодня устарел и в новых машинах его нет. Однако принципы оценки интерфейса для современных карт те же, что и для AGP, и для любых других интерфейсов. Разберем наш пример. AGP 8x работает на частоте 66 MHz и обладает шириной шины 32 бита. Это немного, однако благодаря ряду хитрых решений AGP 3.0 (он же 8x) может передавать 2 GB/s. И все равно этого мало. Как видно, это в 10 раз меньше, чем пропускная способность шины обсуждаемой видеокарты. Значит, в нашем конкретном случае объем видеопамяти является критичным. Это означает, что на данном интерфейсе карта с теми же характеристиками, но бо'льшим объемом видеопамяти будет значительно производительнее.
Почему это так? В общем виде все достаточно просто. Когда видеокарте не хватает собственной памяти для хранения данных (например, текстур), они хранятся в системной памяти. Мы помним, что в нашем примере обмен данными с системной памятью идет на скорости 2 GB/s, а с видеопамятью - на скорости 22,4 GB/s. Поэтому очевидно, что при визуализации конкретной трехмерной сцены обращение не к видео-, а к системной памяти снизит скорость обработки данных примерно в 10 раз. Именно поэтому видеопамяти должно быть достаточно много. Точности ради надо заметить, что такой линейной зависимости вы все равно почти никогда не обнаружите, потому что реальная схема обмена процессора с памятью не так груба, как в нашем рассуждении. Однако общая схема не меняется: а) карта должна получить некоторое количество данных из системной памяти; б) карта должна заполнить этими данными видеопамять; в) видеочип будет работать с этими данными, пока не потребуются другие данные; г) порядок обмена данными с системной памятью и видеопамятью определяет общую скорость и логику обработки данных.
В современных компьютерах используется шина PCI-Express. Пропускная способность ее последней версии достигает 64 GB/s. Видеокарта из нашего примера (а похожих решений для PCI-Express достаточно много, поэтому пример вполне актуален) просто не даст раскрыться возможностям такой шины. Видеокарта будет работать на пределе, а процессор, системная шина и память будут "недозагружены".
Наш вывод на этом этапе: главное - сбалансированность характеристик компонентов системы. Если ее не будет, это означает, что вы переплатили либо за материнскую плату, либо за видеокарту. При этом одно устройство будет "недорабатывать", а другое - работать на пике своих возможностей, что сделает всю систему менее стабильной и сократит срок жизни отдельных ее компонентов. Никто, кроме нас самих (ни тематический форум, но оценки потребителей, ни тесты на производительность, ни критические или хвалебные обзоры, ни авторы компьютерных сборок в магазинах) - никто на самом деле не заинтересован в том, чтобы проследить сбалансированность характеристик нашей машины. Это только наша задача. Что хорошо на одной машине и для одних целей, то вполне может быть плохо в других условиях.
ЧАСТЬ 2
На нашем рисунке осталось еще несколько не рассмотренных позиций.
DirectX Support (9.0c / SM3.0) - пункт показывает, какую версию DirectX и модель шейдеров (SM) поддерживает видеокарта. Чем старше версия, тем лучше. DirectX - это совокупность библиотек обработки мультимедиа контента, в том числе звука и видео. От версии библиотек зависит производительность системы и качество картинки в видеоиграх. Разные версии DirectX сориентированы на разные процессорные архитектуры и операционные системы. Например, 10 версия DirectX практически не работает с WindowsXP, хотя при желании из нее (из DirectX) можно вытащить ряд библиотек, совместимых с XP (народным умельцам это удалось). А вот DirectX 11 ни в каком виде на этой операционной системе работать не будет. В свою очередь, производители программ тоже ориентируются на возможности DirectX со всеми вытекающими из этого последствиями. Шейдерная модель (SM) видеокарты взаимодействует с DirectX. Шейдеры - это специализированные инструкции/процессоры видеокарты, выполняющие те или иные виды обработки картинки.
Shaders (12 Pixel / 5 Vertex) - количество шейдерных процессоров на видеокарте. В современных видеокартах уже не используется специализация шейдеров на пиксельных (Pixel Shader обрабатывает цвет и глубину пикселей) или вершинных (Vertex Shader обрабатывает вершины, т. е. геометрию объектов) выборках, а применяются универсальные процессоры. В ходе обработки данных видеокарта сама определяет, как перераспределить задачи между шейдерными процессорами. В нашем примере мы имеем всего 17 шейдерных процессоров. По современным меркам это, конечно, неприлично мало. У разных производителей шейдерные процессоры устроены по-разному, поэтому сравнивать чипы Ati и Nvidia между собой по количеству шейдеров некорректно. Но в пределах решений одного производителя работает правило - чем больше шейдерных процессоров, тем выше производительность видеокарты.
Pixel Fillrate (2.4 GPixel/s) - количество пикселей, которые может отрендерить видеокарта за 1 секунду. Эта характеристика определяет максимально возможное разрешение, при котором видеокарта теоретически обеспечит необходимую частоту смены кадров. Считается, что для человека комфортной является смена кадров с частотой не менее 24/s. Исходя из этого определим количество пикселей на 1 кадр: 2.4 / 24 = 0.1 GPixel. Это 100 MPixel. Остается узнать, какое это разрешение. К примеру, FullHD это 1920 * 1080 = 2 073 600 Pixel, т. е. округленно это 2 MPixel. Получается, что в "запасе" у нас еще 98 Mpixel на каждый кадр. С этим карта справится без проблем, но только в том случае, если мы не будем иметь в сцене никаких текстур. Однако на каждый объект послойно спроецированы карты текстур, а каждый слой - это плоское изображение определенного разрешения (растр), отвечающее за какой-либо визуальный эффект (основной цвет, неровности, блики и пр.). Таким образом, видеокарта обрабатывает геометрию объектов (по вершинам) и информацию о цвете и глубине пикселей, получаемую из различных карт текстур, для попиксельной отрисовки и раскраски объектов сцены. Поэтому надо различать пиксели как часть результирующего растра (кадра) и пиксели как составные элементы текстур объектов (тексели).
(Между прочим, не будем забывать также, что комфортность восприятия частоты смены кадров зависит от выводящего картинку устройства. Для старых ламповых мониторов нормальной считалась частота развертки в районе 80 - 100 Гц. В современных жидкокристаллических мониторах в качестве стандарта используется частота 60 Гц. Поскольку частота развертки - это количество обновлений экрана в секунду, очевидно, что наилучшее восприятие движущейся картинки будет обеспечено, если частота смены кадров кратна частоте развертки. Например, для частоты 60 кадров наибольший комфорт будет достигнут при частоте 30 и 60 кадров в секунду. Частота в 15 кадров тоже кратна 60, но она заметно ниже комфортных для глаза 24 кадров в секунду. Частота выше 60 кадров не имеет смысла, если монитор не способен ее поддерживать. Более того, любой выход за пределы кратности будет неизбежно приводить к дефектам изображения, так как какие-то кадры будут "выпадать" и не выводиться монитором. Поэтому наилучшим выходом является принудительный рендеринг с жестко заданной частотой, который в настройках видеокарты получил название "вертикальная синхронизация". Существуют и некоторые другие нюансы, связанные с технологией обновления жидкокристаллического экрана, которые снижают комфорт от просмотра даже тогда, когда видеокарта уверенно "держит планку" в 60 кадров, заведомо превышающую комфортные для глаза 24 кадра в секунду. Выражается это в том, что обновление экрана происходит не мгновенно, и предыдущий кадр как бы растворяется в последующем. При ближайшем просмотре глаз это фиксирует и воспринимает как размытость кадров. Поэтому для игровых мониторов стандарт частоты развертки увеличивается, поэтому и VR требует как минимум стабильных 90 кадров в секунду. Ведь матрица в шлеме находится очень близко от глаз и эффекты размытия чрезвычайно заметны и даже способны приводить к нежелательным последствиям, таким как головокружение, тошнота и пр.)
Вернемся к пикселям и текселям.
Texture Fillrate (2.4 GTexel/s) - количество текселей, обрабатываемых картой за 1 секунду. Надо учитывать, что количество текселей отнюдь не равно количеству пикселей на экране. Разберем простой пример. Допустим, что мы видим кадр в разрешении FullHD, ПОЛОВИНУ которого занимает стена. При этом положим, что текстура стены тоже сделана в разрешении FullHD. Означает ли это, что видеокарте надо отренедрить текстуру стены в каком-то "половинном" разрешении (т. е. FullHD/2)? Нет! Если в сцене мы наблюдаем две стены, каждая из которых занимает половину экрана и "покрыта" текстурой FullHD, видеокарта будет рендерить 2*FullHD текселей. И так со всеми объектами, а их в сцене сотни. Предположим условно, что надо отрендерить 100 объектов, для каждого из которых используется по одной текстурной карте с разрешением 1024х1024. Тогда получим 104 857 600 текселей, или округленно 0,1 GTexel (на каждый кадр). Значит, наша карта сможет обеспечить для такой сцены частоту 2.4 / 0,1 = 24 кадра в секунду. Таким образом, мы нашли верхний предел возможностей карты обеспечить более-менее комфортное восприятие движущейся картинки. Разумеется, здесь речь не идет о комфортном выводе изображения на жидкокристаллический монитор (60 кадров) или в шлем VR (90 кадров).
Проблема ограничения возможностей карты по количеству обрабатываемых текселей в секунду остроумно решается в играх с открытым миром (например, от Bethesda), где необходимо выводить на экран огромные пространства и тысячи объектов. Для человека естественно видеть то, что находится далеко, размытым и нечетким. Столь же естественно просто терять из виду мелкие объекты. Поэтому очевидным было решение скрывать удаленные мелкие объекты, а текстуры высокого разрешения заменять на текстуры низкого разрешения, что и обеспечивает возможность одновременно вывести на экран сотни объектов, уложив их обработку в некий заданный пользовательскими настройками текстур лимит Texture Fillrate. Для поддержки высокой частоты кадров при обработке вершин (выполняемой шейдерными процессорами) используется аналогичное решение - заменять геометрию удаленных объектов с детальной на упрощенную.
Из всего сказанного выше можно сделать простой практический вывод. Основные ресурсы видеокарты уходят на обработку геометрии и вычисление проекционных координат текстур и их визуализацию. Поэтому скорость отрисовки трехмерной сцены зависит не столько от разрешения результирующего кадра (см. "запас" Pixel Fillrate), сколько от количества и размера карт текстур и сложности топологии объектов. Миллионы пикселей (текселей) больших карт занимают в памяти много места (1024 * 1024 = 1 048 576 пикселей) и требуют много процессорного времени для обработки. Более частая, густая сетка каркаса объекта содержит больше вершин - следовательно, опять же больше данных для обработки.
ROPs / TMUs (4 / 4) - количество блоков растеризации / текстурирования, отвечающих за отправку просчитанных кадров в буфер видеокарты (т. е. уже в сторону вывода на экран) и их постобработку / выборку данных из памяти. Количество блоков в видеокарте влияет на ее производительность. В частности, число ROP определяет Pixel Fillrate, а от числа TMU зависит скорость выборки текстур из памяти и, соответственно, показатель Texture Fillrate. Исходя из того, что мы уже сказали про оба показателя, можно сделать вывод, что наиболее критичным является Texture Fillrate и, следовательно, количество блоков TMU.
ВМЕСТО ЗАКЛЮЧЕНИЯ
Итак, мы обсудили все ключевые параметры видеокарты и постарались ясно описать их взаимосвязь между собой и с другим оборудованием компьютера.
В следующем разговоре мне хотелось бы перейти к финансовой стороне вопроса и описать методику сопоставления стоимости характеристик видеокарт, которая позволяет взвесить характеристики разных видеокарт и соотнести их (характеристики) с ценами на устройства.
В заключение приглашаю отдать дань ретро-устройствам и полюбоваться на дизайн видеокарты, которая верно послужила нам в качестве примера (на фотографии слева).
Любое использование данной статьи должно содержать ссылку на эту публикацию.