Продолжение. Первая часть материала
В преддверии выхода AMD Vega и уже случившегося релиза архитектуры Volta мы начали рассматривать историю видеокартостроения, так как новые железки во многом революционны и оценить все изменения, не держа в голове ретроспективу, довольно сложно. В первой части статьи мы рассказывали про зарождение графических ускорителей и остановились на моменте, когда набор разнородного железа превратился в полноценный Graphics Processing Unit. Настало время продолжить наш путь.
Итак, в конце лета 1999 года NVIDIA представила GeForce 256 — первую серийную видеокарту с аппаратным T&L, соответствующим возможностям DirectX 7.0. С этого момента и началась эпоха классических GPU.
Теоретическая часть: игры и графический конвейер
GeForce 256 в целом определил развитие графики в играх и методы отрисовки на десятилетие вперед. Разберем их.
Откуда вообще берутся новые кадры? Если рассматривать некоторый абстрактный случай в вакууме, то с окончанием загрузки уровня игра по очереди выполняет четыре простых действия для каждого из кадров.
1) Симулирует взаимодействия и физику;
2) В соответствии с результатами п.1 отрисовывается сцена с результатом симуляции и выводится на экран;
3) Система регистрирует реакцию пользователя на картинку: зажатые клавиши, движения мышью, вот это все;
4) Игровой движок обновляет переменные и заново выполняет расчеты в п.1.
Эта круговерть повторяется раз за разом, в некоторых киберспортивных играх — более 300 циклов за секунду. Симуляция — отрисовка — получение реакции — изменение условий симуляции — симуляция… Чем эффективнее используются ресурсы ПК (и чем их больше), тем выше кадровая частота. Отсюда и точность реакции, и отсутствие эффекта «курсора на резинке», когда движения камеры запаздывают за мышью и вам приходится постоянно компенсировать излишки.
При грамотной сборке ПК самым медленным из сегментов цикла будет как раз тот, что грузит расчетами видеокарту — а все из-за сложности происходящего внутри волшебного словосочетания «отрисовка сцены».
Формирование кадра в игре
Ранние 3D-игры использовали примитивные модели для окружения и объектов. Невысокое число полигонов успевал обрабатывать центральный процессор, а видеокарта занималась нанесением текстур, расчетом освещенности и сборкой полученной картинки в единое целое для вывода на экран. С ростом сложности моделей ресурсов одного CPU стало мало и на сцену вышел аппаратный T&L с фиксированным набором команд. Процессор указывал, где и какие модели необходимо разместить, а GPU брал под козырек и делал. Так появился базовый 3D-конвейер: небольшой виртуальный завод, превращающий текстуры, модели и программный код в плоскую картинку для вашего монитора.
Видеокарта загружает видимые пользователем на экране модели и расставляет их на сцене в соответствии с результатами расчета физики. Сперва мир и объекты, затем — персонажи, после — дополнительные модели для спецэффектов. Далее в игру вступает один из самых значимых модулей конвейера — аппаратный Z-буфер. Он выполняет сортировку моделей и составляет карту удаления объектов от зрителя, отбрасывая всю перекрываемую геометрию.
Благодаря этой стадии видеокарта не будет тратить ресурсы на нанесение текстур и отрисовку спецэффектов там, где пользователь этого не увидит. Исторически у Z-буфера были проблемы с полупрозрачными эффектами и материалами, но их научились эффективно решать, а полноценных альтернатив этому способу отрисовки до сих пор не найдено, даже несмотря на огромное потребление памяти в процессе работы.
После составления карты глубины, начинается стадия работы с освещением и текстурами. Оставшиеся видимыми полигоны превращаются в проекции на плоскость, видеокарта еще раз проверяет видимость каждого пикселя (чтобы не выполнять лишнюю работу), после чего приступает к расчету освещения и наложению текстур. Блоки текстурирования масштабируют, искажают и применяют плоские текстуры на те участки изображения, которые соответствуют видимым участкам моделей. Шейдеры изменяют цвета пикселей в соответствии с заданными параметрами.
Последняя стадия — постобработка. Цветовые фильтры, motion blur, блики на экране, нанесение GUI, капельки на стекле. Параллельно идет запись отрисованных строк кадра в соответствующий буфер и вывод его на экран.
Смерть 3Dfx
В 3Dfx были отличные технари, но не было хороших маркетологов. Отсутствие внятной модели в среднем ценовом сегменте, активная работа конкурентов и неудачная стратегия «производим и продаем сами» привели к тому, что Voodoo4 и Voodoo5 вышли на рынок с полугодовым опозданием и были вынуждены противостоять обновленным моделям NVIDIA и ATI.
Естественно, новинкам не составляло труда разбить результаты опоздавшей линейки видеоускорителей в пух и прах. А потенциально неплохую флагманскую Voodoo5 6000 убила Intel, убрав из Pentium 4 поддержку AGP с напряжением 3.3 Вольта — исправить видеокарту 3Dfx не успевали, а без денег, которые могли бы принести эти карточки, продолжать самостоятельное существование и работу над новым перспективным GPU не представлялось возможным.
За $70 млн NVIDIA получила акции и патенты конкурента. Инженеров, заинтересованных в продолжении работы над видеокартами, быстро трудоустроили в отдел перспективных разработок. Некоторые ушли в ATI и другие компании. А далее началась эпоха интенсивного апгрейда имеющихся технологий и тихой разработки некстгена.
Radeon DDR — лучший на 24 часа
25 апреля 2000 года ATI показала миру Radeon DDR — самую мощную видеокарту для PC в истории. На тот момент, разумеется. Новинка действительно впечатляла: рабочая частота ядра — 200 МГц, 64 МБ высокоскоростной (183 МГц) видеопамяти, бескомпромиссная производительность в режимах с высоким разрешением (таковым считалось все, что больше 1024*768) и 32-битным цветом.
Ее T&L модуль был на голову выше всего, что существовало на рынке и даже несколько опережал развитие софтовых технологий: еще на стадии проектировки в него заложили некоторые фичи из DirectX 8.0, который вышел уже после видеокарты. Правда, ответка от NVIDIA прилетела буквально через сутки, а полки магазинов Radeon DDR увидел лишь через полгода после демонстрации. Причем не в лучшем виде: ради стабильного выхода рабочих чипов тактовые частоты порезали c 200 до 183 МГц, а первые драйверы для Windows вышли такого качества, что актуальные пару лет назад мемы про качество ПО у «красных» нормально зашли бы и в конце 2000 — начале 2001 года.
GeForce 2, плюрализм версий и первые суперфлагманы
GeForce 2 GTS — первая ласточка крайне плодовитого семейства вторых «жирафов» была не так крута, как Radeon DDR, но NVIDIA знала толк в маркетинге и имела оптимизированный цикл разработки и производства.
С одной стороны, ничего революционного в ней не было — ее процессор NV15 внутри был очень похож на NV10, использовавшийся в GeForce 256. Главное, что отличало новинку — второй блок выборки текстур, на каждом из 4 пиксельных конвейеров.
Говорят, что он был в структуре чипа еще при разработке GeForce 256, но мультитекстурирования первая полноценная видеокарта так и не дождалась: для 220-нм техпроцесса это оказалось слишком — ядра банально перегревались, да и брака было много. А вот на 180 нм все было в порядке и нововведения отлично заработали. Официального подтверждения этим слухам NVIDIA так и не дала, но, как бы то ни было, GeFroce 2 GTS показывал неплохие результаты для своих $350-400, особенно если учесть качество работы более дорогой (от $400) Radeon DDR на старте.
Разделяй и властвуй
И вновь маркетинг компании NVIDIA показал игру на высшем классе. Да, GTS была чуть медленнее Radeon, но не флагманами едиными жив рынок. Вслед за сравнительно дорогой картой мир увидел GeForce 2 MX — мэйнстримовое решение. Карту обрезали по всем фронтам: частота ядра упала до 175 МГц, пропускная способность памяти, как и объем — вдвое, из 4 пиксельных конвейеров осталось только 2. Главное, что видеокарта поддерживала все новые технологии и все равно была быстрее и Voodoo4, и мэйнстрима от ATI, фактически оккупировав средний ценовой диапазон.
Легендарный Max Payne выдавал 30+ FPS на средних/высоких настройках в разрешении 1024х768, Quake 3 Arena — все 60. Что еще надо было для счастья?
Wunderwaffe
Завоевание рынка бюджетных игровых компьютеров показалось NVIDIA недостаточным достижением, наступление шло сразу по двум фронтам. Одновременно с выходом GeForce 2 MX «зеленые» выкатили GeForce 2 Ultra. Никаких аппаратных отличий от базовой GTS не было — лишь полировка внутреннего устройства чипа, качественный отбор лучших образцов и заводской разгон.
В связке с Atlhon XP суперфлагман показывал не просто результаты «чуть лучше», чем обычная GTS. В ряде игр прирост был чуть ли не двукратный! Более того, у ATI в запасе не было козырей, чтобы хоть как-то ответить на выход «Ультры», и любители всего самого-самого моментально сменили один лагерь на другой.
PlayStation 2
И вновь мы вспоминаем о PlayStation несколько позже релиза. Не потому что не любим — приставка была хороша и даже очень. Просто на старте продаж ее было очень тяжело купить, в игровом мире она, считай, отсутствовала. Первые версии приставок были несовершенны, состояли из нескольких плат, требующих отдельных проверок перед сборкой, производство процессоров задерживалось…
С точки зрения современных PS2 компьютеров ее графическая система использовала архаичный подход к формированию картинки. 16 пиксельных конвейеров выглядели достойно по сравнению с 2/4 у видеокарт того времени, но выделенных блоков текстурирования в видеоядре Graphics Synthesizer не было. Как же тогда наносились текстуры? Половина пиксельных конвейеров могла производить закраску треугольников, работая в качестве TMU.
Несмотря на всю дикость конструкции, консоль продержалась на рынке добрых 13 лет, сменив более 18 ревизий, весь жизненный цикл пользовалась огромным спросом и до сих пор удерживает рекорд по количеству проданных единиц.
ATI 8500 vs GeForce 3 — на словах ты Лев Толстой, а на деле… все не так просто
Эксплуатировать потенциал GeForce 2 бесконечно было нельзя (хотя у NVIDIA неплохо это получалось) и для дальнейшего развития производительности железа требовалось не только количественное «быстрее и больше», на новом техпроцессе, но и качественные изменения в архитектуре. Их дал GeForce 3.
В восьмой версии DirectX Microsoft отказались от фиксированного набора T&L-инструкций, представив язык вершинных шейдеров. С одной стороны, разработчики получили гибкий инструмент по работе с треугольниками: исчезла привязка к конкретным реализациям T&L блоков в видеокартах. С другой — новая фича требовала внедрить в GPU программируемый вершинный конвейер, что не лучшим образом сказывалось на производительности. По крайней мере, первое время.
Даже с переходом от фиксированного набора геометрических функций к управляемому конвейеру GPU был достаточно эффективен, хоть и уступал топовым вариантам GeForce 2 в бенчмарках DX 7.0 с примитивной геометрией, которую приходилось оборачивать в вершинный шейдер «на лету».
Новый подход к формированию картинки открыл проблемы в подсистеме памяти и ее обновлению было уделено максимальное внимание. Вместо классического, большого и сложного контроллера памяти NVIDIA применила несколько более простых и независимых, объединив их в Crossbar Memory Controller. Это позволило устранить задержки в работе с памятью и распараллелить задачи — на низких разрешениях и настройках графики разницы почти не было, а вот с ростом нагрузки эффект проявлялся все сильнее. Сама память получила расширенный набор инструкций, реализующий сжатие Z-буфера и отбрасывание невидимой геометрии.
К слову, группы небольших контроллеров памяти вместо одного сложного мы видим в видеокартах до сих пор:
Конкуренты старались не отставать, и презентация ATI Radeon 8500 встряхнула рынок: спецификации видеокарты на бумаге выглядели очень и очень круто.
Вот только все это железное великолепие в играх еле-еле догоняло упрощенный GeForce 3 Ti 200: по доброй традиции драйверы линейки AMD были просто катастрофой. В итоге на разработку нормального ПО ушел почти год — и уже в конце жизненного цикла R8500 неплохо справлялся с играми и мог вполне успешно конкурировать с GeForce 3. Благо все наработки по драйверам пригодились в следующем поколении железа.
Xbox
Успехи Sony в создании по-настоящему удобной и качественной платформы для игр не остались незамеченными за океаном. PS1 успешно завоевала рынки Азии, Европы и Америки, вышедшая вслед за ней PS2 закрепила успех, чем ущемила чувство гордости некоторых американских компаний. Как так вышло, что какие-то азиаты, проигравшие войну, могут делать игровые приставки, а мы — нет?! Тем не менее из всех компаний только у Microsoft нашлись ресурсы и на создание своей игровой платформы с нуля, ведь железо не главное, главное — софт.
Доминирование Windows на рынке ПК привело к появлению большого числа активных разработчиков, знакомых с этой платформой и DirectX. Дело было за малым — создать консоль, архитектурно похожую на среднестатистический системник и снабдить ее знакомым софтом. А дальше армия уже обученных девелоперов легко портирует старые игры и напишет новые. Если кто не в курсе, изначально консоль даже называлась DirectXbox, но с таким названием не разгуляешься и «Direct» пошло под нож.
Начинка Xbox была очень, очень близка к обычным ПК, разве что железо использовалось специально заточенное под потребности новой консоли и ее планируемую стоимость. С низкоуровневыми API ресурсов хватало с головой, а практика субсидирования железа продажами софта тогда еще не была сильно распространена.
Процессор — Intel Pentium III, работающий на частоте 733 МГц и получивший незначительные упрощения: достаточно быстрый и дешевый, плюс уже освоенный в массовом производстве.
Поставщиком GPU для консоли стала NVIDIA: чип NV20A (или NV2A) практически ничем не отличался от такового в GeForce 3. Основные отличия были в техпроцессе и способах работы с памятью.
Оперативная память (скромные 64 МБ) использовалась совместно для данных и нужд видеоускорителя. Разработка под первый Xbox была достаточно простой —
приставка использовала максимально упрощенную версию Windows 2000 с игровым потребностям оптимизациями. По сравнению с игровыми ПК-монстрами тех времен «Билли-Бокс» мог похвастаться разве что неплохим GPU, впрочем, у PS2 все было еще хуже, и это не останавливало игроделов — слабенькое железо компенсировалось низкоуровневым доступом к нему и невысокими накладными расходами при графических операциях.
Запущенные Microsoft эксклюзивы обеспечили новой консоли успех как на домашнем рынке, так и за его пределами: за четыре года производства было продано более 24 млн Xbox по всему миру.
2002: GeForce 4 и Radeon 9000 — последние солдаты старой гвардии
Говорят, многие компании умирают из-за косности мышления менеджмента. Найдя успешную стратегию, руководство раз за разом эксплуатирует ее, выжимая все соки и не оставляя ресурсов на инновации. Вспомните Kodak — некогда компанию на рынке фотопленки. Первую цифровую камеру создал именно инженер Kodak Стивен Сассон. Вес в 3 кг, разрешение 100х100 точек, запись одного кадра — 23 секунды на ленту компакт-кассеты. Совет директоров задал ему лишь два вопроса: кто купит ЭТО и в своем ли он уме, предлагая компании производить камеру, которой не нужна пленка, — основной источник дохода Kodak. Спустя 10 лет Kodak попытались наверстать упущенное, но было слишком поздно — Sony, Canon и Nikon ухватились за идею фотографии-без-пленки, а еще через 10 лет Kodak потеряла рынок любительской фотографии. Нужно ли говорить, где эта прекрасная компания могла находиться сейчас, не отмахнись она от перспективной разработки в 1975 году?
NVIDIA не совершала подобных ошибок. Да, менеджеры продолжали активно давить сразу на все сегменты рынка (бюджетный, мэйнстримовый и топовый), но и про разработку новых технологий не забывали. Вышедший в начале 2002 года GeForce 4Ti на базе NV25 продолжал эксплуатировать общую концепцию GeForce 2, обрастая жирком и новыми функциями.
Улучшенный техпроцесс вновь позволил поднять частоты, и флагман GeFroce 4600Ti разносил в пух и прах результаты прошлогодних карт, показывая до 60% прирост производительности в играх. MX-серия бюджетных ускорителей была не так хороша: в угоду маркетингу и снижению издержек она не получила поддержки DirectX 8, и по сути, была переизданием GeForce 2 на 150-нанометровом техпроцессе. Основную выручку NVIDIA получала со сравнительно доступной мэйстримовой GeForce 4 Ti4200.
При цене в 200 баксов она была быстрее прошлогоднего GeForce 3 Ti 500, поддерживала все фичи DirectX 8.0 и быстро завоевала симпатии игровых изданий вместе с пользователями. Еще бы, сравнительно доступная железка со всеми современными фичами, с которой игры без проблем идут на максимальных настройках. Истребление конкурентов в чартах и бенчмарках продлилось чуть меньше полугода, пока ATI не нанесла ответный удар.
Radeon 9700 Pro стал одной из первых видеокарт с AGP 8x, первой с поддержкой DirectX 9.0 и шейдеров второй версии и вообще отличался от предыдущего поколения настолько, насколько это вообще было возможно и целесообразно в те времена.
Вместо привычных индустрии двух блоков текстурирования на пиксельный конвейер (коих у Radeon было обычно 2 или 3) чип R300 использовал 8 (восемь!) конвейеров с одним блоком текстурирования на каждом. При этом видеокарта не потеряла возможности мультитекстурирования и не стала медленнее. Специальный микрокэш позволял каждому TMU (Texture Mapping Unit) наносить до 16 текстур за один кадр, причем одновременно с использованием анизотропной фильтрации и всех модных технологий.
Более эффективные, гибкие и точные шейдеры второй версии, появившиеся вместе с DirectX 9 обеспечивали потрясающую картинку, недостижимую на предыдущих API. Четыре модуля выполнения вершинных операций в ряде случаев показывали 250% производительности в работе с геометрией по сравнению с предыдущим поколением железа — Radeon 8500 / Ti 4600.
Чип был настолько сложный, что его перестали распаивать классическим способом (с «лапками» по бокам) вместо этого выводы наносились сразу на подложку кристалла, а с печатной платой они соединялись через BGA-пайку.
Это был качественный апперкот зазевавшемуся менеджменту NVIDIA, но самое интересное ждало обе компании впереди.
Разгон для слабаков, моддинг — наше все
Все мы знаем, как нынче делают бюджетные видеокарты. Есть 3-4 основных модели (условный суперфлагман, топовая популярная карточка и мэйнстрим), для них изготавливают огромное количество очень сложных чипов. Внутри микросхем еще на этапе проектировки выполняют интеграцию дополнительных, не несущих нагрузки в работе структур, позволяющих тестировать полученный кристалл после производства. Чипы для средних карточек получают путем отбраковки не самых удачных экземпляров для топовых решений. Отключают часть функциональных блоков, проводят тесты и, если все хорошо, условная 1080 превращается в 1070 и используется по назначению.
Кстати, отсутствие таких диагностических «закладок» было одной из причин большого количество брака и высокой себестоимости производства чипов 3Dfx, что внесло свой вклад в стремительную кончину компании.
Так вот, все семейство Radeon 9000 собиралось на одном и том же процессоре и отличалось BIOS’ами видеокарт и материнскими платами. Как только эта информация вскрылась, сотни энтузиастов по всему миру начали дорабатывать видеокарты с помощью напильника и такой-то матери: при удачном стечении обстоятельств и руках, растущих из нужных мест можно было превратить бюджетную Radeon 9500 в полноценную 9700, а 9800 SE 256 MB за 250 баксов во вдвое более дорогую 9800 Pro. В основном апгрейд производился заменой печатной платы на копию референса старшей модели, с полным набором дорожек к чипам памяти, но было множество случаев апгрейда и простым перепаиванием резистора + правкой BIOS видеокарты. Чуть позже народные умельцы научились конвертировать различные версии 9800 в «профессиональные» карточки FireGL X2, которые стоили совершенно других денег. Сколько денег недополучила ATI из-за моддинга — неизвестно. Явление явно было не массовым, так как требовало определенных знаний, навыков и лишало вас гарантии на железо, но ударило по самому высокомаржинальному направлению: флагманам и видеокартам для профессионалов.
Экзотика: Matrox Parhelia и Sis Xabre
Компания Matrox, которую нежно любили профессионалы за потрясающее качество картинки на аналоговом выходе в 2002 году все еще пыталась конкурировать с гигантами GPU-индустрии. Не самое удачное развитие старых идей (видеокарта G450 из-за ряда упрощений получилась медленнее, чем G400, хоть и была немного дешевле) решено было отбросить, и создать нечто по-настоящему крутое. Так родилась Matrox Parhelia: видеокарта, которая одновременно опередила свое время и… появилась слишком поздно.
Чип видеокарты был очень сложен и содержал 4 конвейера с 4 блоками текстурирования на каждом. Несмотря на не самые высокие тактовые частоты, «Паргелия» показывала неплохие результаты в самых сложных и нагруженных сценах, а общая производительность находилась на уровне Radeon 8500 и GeForce 3.
Проблема заключалась в том, что на рынке уже присутствовало семейство GeForce 4, а «тройки» и 8500-е были почти вдвое дешевле, чем детище Matrox. Не спасали видеокарту и уникальные фичи — поддержка до трех мониторов одновременно и умение выводить десятибитный цвет. А вышедшие полгода спустя Radeon 9000 окончательно поставили крест на будущем этого GPU. Вот так и вышло, что Parhelia не могла противостоять более мощным новинкам и упавшим в цене прошлогодним карточкам, и при этом была слишком сложна в производстве, из-за чего страдал и частотный потенциал чипов, и общая производительность.
Сопротивляться гегемонии ATI, NVIDIA и Intel (последняя имела около 20% рынка GPU со встроенными в чипсет материнских плат решениями) пыталась и компания SiS. Видеокарты под именем Xabre не имели аппаратного блока для работы с вершинными шейдерами и полностью полагались на софтверную эмуляцию этих функций в драйверах. Производительность в простых играх была на уровне младших Radeon 9000-й серии и GeForce MX-440, но как только дело доходило до современных проектов, активно использовавших шейдеры и возможности DirectX 8.0… В общем, не будем о грустном.
У ATI и NVIDIA была репутация надежных производителей, ресурсы для написания драйверов и их оптимизации, а также четкое представление о будущем своих продуктов и какая-никакая, но поддержка игроделов. Уникальные же фичи малых производителей разработчики оставляли без внимания, так что экзотика оставалась экзотикой. Сказать, почему люди вообще брали эти видеокарты, а не мэйнстрим, очень сложно — видимо, это были такие IT-хипстеры начала 2000-х.
NVIDIA FX-series
DirectX 9 был эффективнее предшественников и выдавал куда более приятную картинку. Результаты Radeon 9700 были наглядной демонстрацией того, как новые технологии поднимают одновременно планку и производительности, и качества. Долгих три года специалисты выкупленной 3Dfx работали над прорывным GPU. В ход шли и наработки для перспективного поколения видеокарт-наследниц Voodoo, и внутренние продукты NVIDIA, и даже экспериментальные проекты в виде незаконченных спецификаций API.
GeForce FX 5800 Ultra поражала воображение. Двухэтажный кулер! Огромных размеров печатная плата! Полная поддержка DX 9.0 в железе, причем с превышением спецификаций! Использование сверхскоростной DDR2, разработанной совместно с Samsung специально для применения в этой карточке! Всяких красивых фраз с восклицательными знаками на конце можно было написать еще много, но давайте спустимся с небес на землю.
Во-первых, за размеры и шум системы охлаждения при работе видеокарту сразу окрестили «пылесосом». Во-вторых, производство сложных и дорогих чипов NV30 буксовало: изначально FX 5800 должна была дебютировать примерно в то же время, что и заряженный Radeon 9800 Pro. В-третьих, на старте продаж купить FX 5800 Ultra было практически невозможно, так как NVIDIA создала искусственный дефицит готовых процессоров, да вдобавок отдала половину (!) готовых кристаллов под профессиональную линейку Quadro.
В результате обновленная линейка Radeon 9000 успешно продавалась и дальше, оставив NVIDIA не у дел в том году: в реальных задачах топовые FX уступали конкурентам и были дороже на $100. Самым распространенным FX стала карта с индексом 5200 — она не ставила рекордов производительности, но обеспечивала неплохие результаты в старых играх + позволяла играть во все новое, требовавшее поддержки DX9.0 и Shader Model 2.0.
ATI — сердце консолей, часть 1: Nintendo GameCube и Wii
Пока в США два производителя видеокарт выясняли, у кого продажи длиннее и фанаты преданней, в стране восходящего солнца Nintendo вела священную войну с Sony. На стороне первых были раскрученные франшизы, концептуальный геймплей и армия фанатов, а вторые брали графикой, удобством и активной поддержкой сторонних разработчиков. Когда Nintendo понадобился GPU для новой приставки GameCube, те обратились к ATI: внутренних ресурсов на разработку кастомного чипа, как у Sony попросту не было. ATI передали задачу недавно поглощенной, но еще не полностью интегрированной в структуру графического гиганта компании ArtX. Так родился Flipper — заточенный под простые консольные радости чип. Из 51 млн транзисторов примерно половина была отведена на 3 МБ внутренней кэш-памяти (2 МБ для Z-буфера и 1 МБ для текстурного кеша), а оставшиеся 25 млн содержали 1 вершинный конвейер, 4 пиксельных с одним блоком выборки текстур на каждом, 4 блока растеризации, простенький контроллер памяти и всякую сервисную требуху, требующуюся для обмена командами и переключения режимов работы GPU.
Ограниченный набор команд и зашитых в железо примитивных спецэффектов позволял выдавать до 20 млн полигонов в секунду: графика была простенькой, но GameCube все равно успешно продавался. Спустя два года этот же GPU, но с другим кодовым именем (Hollywood), увеличенными частотами и на другом техпроцессе использовался внутри комбинированного процессора Nintendo Wii.
Впрочем, в 2003 году у ATI был куда более интересный проект: создание графической подсистемы для Xbox 360 совместно с IT-гигантом Microsoft.
Трехсотшестидесятке предстояло конкурировать с монструозной PS3 — следовательно, и железо требовалось соответствующее.
DirectX 9.0c
Выход DX9 вместе с Radeon 9000-й серии сам по себе был неплохим рывком вперед по части графики и удобства разработки: зашитые в GPU примитивные шейдерные функции превратились в полностью программируемые. Для создателей игровых движков это означало более плотный контроль за тем, что и как делает видеокарта, для пользователей — улучшение графики и появление реалистичных спецэффектов. Вскоре после релиза в библиотеках нашлась дыра, которую активно использовал Worm.Blaster, устроивший настоящую эпидемию среди ПК весной-летом 2003 года. DX 9.0a и 9.0b устраняли обнаруженные уязвимости и дорабатывали кое-какие мелочи, а вот 9.0c добавил новые фичи непосредственно в работу с графикой. Язык шейдеров третьей версии, улучшенная работа с микрокодом, и, разумеется, поддержка GPU новой консоли — Xbox 360. Но перед ней были интересные видеокарты и не менее интересные технологии, которые легли в основу легендарной приставки. Одно только техдемо будущего Half-Life 2 вызывало бурю эмоций.
После короткой перепалки обновленными флагманами (FX 5900 Ultra у NVIDIA и Radeon 9800 Pro у ATI) стало очевидно, что индустрия топчется на месте и дальнейшее развитие по принципу «накинем частот к прошлогодним карточкам» не дает нужного эффекта.
PCI-Express
Видеокарты с интерфейсом AGP использовались со времен Pentium MMX вплоть до Pentium 4 — срок, надо заметить, немалый. Процессоры за это время со средних 120 МГц выросли до нескольких гигагерц и обзавелись поддержкой новых инструкций. Параллельные интерфейсы, дававшие преимущества на невысоких тактовых частотах, все чаще заменялись на последовательные — они были проще в производстве, эксплуатации и написании к ним ПО, и к 2004 году AGP уже выглядел как средневековый арбалет на передовой Первой мировой. Убить, конечно, можно было и им, но пулемет Льюиса был куда эффективнее.
Более того, несовместимость AGP по напряжению с новым железом заставляла городить на материнских платах сложную обвязку и извращаться с пробросом функций AGP через куда более распространенный и быстрее развивающийся PCI, что не только добавляло сложности в производстве, но и увеличивало накладные расходы.
Замену морально устаревшему интерфейсу предложила компания Intel: взяла набор программной логики от PCI и завернула в высокоскоростной разъем, оборудованный несколькими линиями передачи данных с топологией точка-точка. Полный дуплекс, обязательная синхронизация при передаче данных, универсальный форм-фактор — PCI Express был спроектирован с большим запасом и в целом выглядел перспективной технологией. Как показала практика, расчет оправдался полностью и за 13 лет PCI-Express практически вытеснил все другие виды связи железа внутри ПК, а сейчас потихоньку подминает под себя и подключение высокоскоростных накопителей.
GeForce 6-series
Вы еще не забыли про 3Dfx, которую поглотила NVIDIA? Перекупленным инженерам удалось создать не только концептуально-новый GPU в серии FX, используя минимум наработок из GeForce 2/3/4, но и значительно улучшить его всего за год. В технологическом плане NV40 был намного сложнее своего предшественника, но даже эти изменения сложно назвать главными. С появлением нового интерфейса PCI Express перед производителями видеоускорителей вновь открылись возможности использованию сразу нескольких GPU в одном ПК, чем NVIDIA не преминула воспользоваться, возродив технологию SLI.
Не стоит путать старый SLI (Scan-Line Interleaving), разработанный 3Dfx для аналоговых выводов Voodoo с новым, ориентированным на цифровую эпоху. NVIDIA SLI (Scalable Link Interface — масштабируемый интерфейс для связи) и расшифровывался иначе, и работал совсем по-другому.
Две видеокарты объединялись внешним SLI-мостом, драйвер управлял режимом работы связки: либо раздельный рендеринг кадров (экран делился на два блока в соотношении 50/50 или 60/40 в зависимости от жанра и нагрузки, и каждая видеокарта отрисовывала свой блок), либо отрисовка кадров по очереди (четные на одной видеокарте, нечетные на другой).
К сожалению, второй год подряд NVIDIA подводили просто ужасного качества драйверы. У энтузиастов, потративших почти $1000 на новую материнскую плату и пару видеокарт, регулярно отваливался SLI. Одинарные GeForce 6800, использовавшие новый и не до конца освоенный PCI-Express, были медленнее аналогичных AGP-версий в ряде случаев и почти всегда проигрывали Radeon, использовавшим проверенный временем (или пропахший нафталином, это как посмотреть) AGP.
Radeon X-серия
Младшие Radeon X-серии (X300 и X600) на базе RV370 мало отличались от соответствующих им Radeon 9500 и 9600 соответственно. Уменьшенный техпроцесс, чуть более высокие частоты, поддержка PCI-Express — эдакий конкурент шеститысячной серии NVIDIA.
Старшая X800 (чип RV400) имела много общего с RV370, просто была построена по принципу «запихнем всего побольше»: больше исполнительных блоков, больше мегагерц, больше всего. В целом линейка не пользовалась большим успехом, так как владельцы AGP-видеокарт ждали более весомого повода для полного апгрейда системника и основным потребителем новых GPU стали OEM-сборщики, продававшие новые ПК с X-серией внутри.
Куда более важным событием на арене ПК-графики стал выход в конце 2005 года видеокарт Radeon серии X1000. Полная поддержка DirectX 9.0с, потребовавшая незначительной правки непосредственно исполнительных блоков, значительные изменения в устройстве кристалла (здесь пригодились полученные при проектировании RV400 навыки и опыт) и главное — безумная производительность. Самое интересное, само собой, было под капотом новинки: в какой-то степени X1800 и ее производные стала родителем многих концепций, которые до сих пор используются в создании видеокарт.
Дело вот в чем. При проектировании нового GPU в ATI отказались от классического подхода «навалим всего и побольше». Во-первых, технические возможности производящих сами чипы компаний не позволяли сильно увеличить транзисторный бюджет, во-вторых, рано или поздно метод грубой силы просто перестает действовать и необходимы качественные изменения.
Ключевой особенностью R(V)520 была новая система распределения нагрузки и разбиения задач по исполнительным блокам. Небольшой модуль Ultra-Threaded Dispatch Processor разбивал работу над изображением на небольшие сегменты 4х4 пиксела. К каждому из таких сегментов UTDP прикреплял набор задач. Когда шейдерные процессоры заканчивали обработку одной группы пикселов, результат моментально сохранялся в кэше общего назначения. Вместо простоя в ожидании завершения расчетов, исполнительные блоки получали новую задачу. Такой подход позволил значительно увеличить загрузку железа вычислительными задачами и эффективность работы в целом.
Для обеспечения постоянной загрузки вычислительных модулей GPU потребовалось пересмотреть устройство подсистемы памяти. Вместо разовой загрузки / выгрузки данных было необходимо сделать их доступными постоянно и с низкими задержками.
Флагманская видеокарта имела две 256-битных кольцевых шины, работающих в противоположных направлениях. На обеих шинах было четыре точки входа-выхода (подключенных к чипам памяти) и упрощенная пятая для обмена данными с «внешним миром» через PCI-Express. Нагрузка равномерно распределялась между несколькими микросхемами GDDR3, а их задержки перестали играть сколько-нибудь существенную роль в работе GPU.
Ну и напоследок инженеры разделили работу пиксельных шейдеров и блоков текстурирования. Неравномерность нагрузки в игровых сценариях (часть объектов использовала простые текстуры и материалы, другая же — много слоев и сложные шейдеры) приводила к простою части блоков текстурирования, в то время как весь конвейер бездействовал, ожидая завершения вычислений для сложных участков. Теперь же видеокарта могла назначить освободившиеся TMU на помощь еще работающим, ускоряя работу над кадром в целом.
GeForce 7-series
Сердце 7-й серии, чип G70, по ряду характеристик не сильно отличался от NV40. В процессе разработки он даже назывался RV47. Улучшили параллелизм (подсмотрев концепцию у Radeon), снизили энергопотребление, ввели функции отключения неактивных блоков для уменьшения тепловыделения. Лучшее слово, которым можно описать G70, — оптимизированный. Пиксельные конвейеры, блоки растеризации, блоки текстурирования — всюду миллион маленьких изменений, призванных максимально эффективно утилизировать вычислительные мощности видеокарты при работе с DirectX 9.0c и шейдерами третьей версии.
Радикального пересмотра устройства GPU, как это было с Radeon X1000 не было, видеокарта показывала лишь неплохой прирост производительности без каких-либо неожиданностей. Самой запоминающейся новинкой серии стали двухголовые GeForce 7900 и 7950GX2, в которых два процессора были объединены в SLI-связку на одной плате.
Xbox 360, PS3 и рождение некстгена
Специально для перспективной консоли Xbox 360 ATI разработала графический процессор Xenos на базе чипа RV520, использовавшегося в Radeon X1800 XL. Главным из внесенных в новинку изменений стала замена выделенных вершинных / пиксельных шейдерных блоков на 3 группы универсальных вычислительных блоков, способных применять одну инструкцию к нескольким наборам данных. По сути, данное изменение стало основой для следующих поколений видеокарт в ПК и ознаменовало переход к новейшей истории в компьютерном железе. Можете смело называть Xbox 360 дедушкой всех нынешних Radeon и GeForce одновременно.
В паре с видеоядром на подложке располагался чип с 10 МБ специальной памяти eDRAM. Небольшой объем компенсировался высокой пропускной способностью и специальным блоком из 192 сопроцессоров, обеспечивающих практически бесплатное с точки зрения общей производительности консоли полноэкранное сглаживание, обработку и сжатие данных на лету.
В связке с центральным процессором на базе архитектуры PowerPC приставка могла выдавать до 500 млн полигонов в секунду и выполнять до 48 млрд шейдерных операций.
PS3
Microsoft с их Xbox 360 ушел из стана «зеленых» к «красным», Sony же, напротив, обратились за помощью в создании GPU к NVIDIA. В результате Xbox 360 начал продаваться почти на полгода раньше, чем PlayStation 3 и тому есть логичное объяснение. Внутреннее устройство PS3 было просто мозговыносящим и сохраняло некоторые, скажем так, «восточные практики», появившиеся еще в PS2.
Восьмиядерный CPU Cell работал в связке с чипом RSX, прозванным «Синтезатор реальности». Связь между CPU и GPU обеспечивалась через два раздельных банка памяти, 256 МБ XRD-памяти, доступной на высокой скорости центральному процессору, и столько же GDDR 3 для GPU. Последний был несколько измененным G70: ключевое отличие десктопного GPU от консольного заключалось как раз в системе, обеспечивающей работу с двумя наборами разной памяти и огромном интегрированном кэше, доступном различным модулям внутри GPU. Так как над картинкой трудились оба чипа, а скорость доступа к данным отличалась в зависимости от источника данных и его места назначения, от разработчиков требовалось прикладывать множество усилий для обеспечения правильного размещения данных и оптимизации игрового движка к непростому консольному железу.
В остальном GPU оставался верен старой архитектуре с раздельными пиксельными и вершинными конвейерами, что вкупе с чересчур усложненной подсистемой памяти еще больше замедляло освоение консоли. В итоге очень малый процент игр использовал высокоуровневый язык PSGL, так как высокие накладные расходы и непредсказуемое поведение подсистемы памяти не давало достичь приемлемых результатов в скорости работы. Большинство разработчиков предпочитало куда более сложную и низкоуровневую библиотеку LibGCM, позволявшую напрямую контролировать каждый аспект работы чипа RSX и принудительно размещать данные в памяти нужным образом.
Конец прекрасной эпохи
С выходом консолей седьмого поколения закончилась история классических GPU: AMD сделали первый шаг к универсальной архитектуре и спустя некоторое время воплотили ее в железе для пользователей ПК. NVIDIA поступила аналогичным образом, представив Cuda, новые видеокарты GeForce 8800, микроархитектуру Tesla и концепцию GPGPU, которой все мы пользуемся до сих пор. Новейшую историю видеокарт и подробный разбор перспективных Volta и Vega ждите в следующей серии.
Продолжение следует.