Секрет чипов AMD из 2000-х: что объединяет Xbox 360, HTC HD2, Xperia Play и LG Optimus

Прокомментировать Просмотры: 3

Изучая исходные коды драйверов и техническую документацию старого железа, порой искренне поражаешься изяществу инженерной мысли прошлых десятилетий. Пожалуй, одним из самых интригующих примеров можно считать стратегию AMD в проектировании графических процессоров в нулевые годы.

В этом материале вас ждет увлекательное погружение: глубокий экскурс в историю, сопоставление косвенных улик, реверсивный анализ исходников и, наконец, ответ на интригующий вопрос: что же объединяет коммуникатор из 2007 года, смартфон образца 2009-го, лэптоп 2012-го и игровую консоль Xbox 360?

❯ Предыстория

Все началось в середине 1980-х, когда амбициозная «красная» компания выпустила свой дебютный видеоадаптер под названием Wonder. Разумеется, речь идет еще не об AMD, а об ATI, которую купят лишь в 2006 году. Серия Wonder славилась всесторонней совместимостью с актуальными тогда стандартами отображения (EGA, VGA, Hercules), а также впечатляющей для тех лет степенью интеграции: в устройствах конца 80-х умудрялись размещать телевизионный выход, интерфейсы для манипуляторов и даже встроенный аудиочип Sound Blaster!

Тем не менее, это были классические видеокарты, полностью лишенные какого-либо графического ускорения: их функционал сводился к простому копированию готового буфера кадра, сформированного центральным процессором, на экран монитора. Ситуация кардинально изменилась в 1990 году, когда ATI презентовала ускоритель на базе архитектуры Mach8. Это решение впервые привнесло аппаратное ускорение двумерной графики на персональные компьютеры благодаря встроенному блиттеру, заложив стандарты так называемых GUI-акселераторов. С программной точки зрения устройство являлось функциональным аналогом ранней разработки IBM — 8514A, как, впрочем, и большинство аналогичных графических ускорителей той эпохи.

Немного про GUI-акселлераторы

Изначально подобные чипы создавались для разгрузки графического интерфейса операционных систем вроде Windows, а вовсе не для видеоигр. Сама концепция во многом заимствовалась из архитектуры компьютеров Amiga, где мультимедийная подсистема изначально проектировалась невероятно мощной. К примеру, чипсет OCS поддерживал аппаратные спрайты в количестве до 8 штук, продвинутые палитры и собственный блиттер!

Впрочем, один-единственный аппаратный спрайт в стандартных GUI-акселераторах все же присутствовал — это системный курсор мыши 🙂

Видеокарта на базе ATI Mach8. Фото с сайта VGAMuseum.
Видеокарта на базе ATI Mach8. Фото с сайта VGAMuseum.

Вплоть до середины 90-х годов львиная доля трехмерных приложений и игр на ПК полагалась исключительно на процессорный рендеринг. Грамотная ассемблерная оптимизация под Pentium 1 позволяла добиться вполне играбельной трехмерной картинки в разрешении 320×200 при приемлемой частоте кадров, оставляя процессору крохи ресурсов на игровую логику, физику и искусственный интеллект. Однако примерно к 1996 году, опираясь на триумфальный опыт первой PlayStation и аркадных автоматов, производители видеокарт осознали неизбежность триумфа 3D-игр на персональных компьютерах. Возникла острая необходимость внедрения специализированных растеризаторов геометрии, способных взять на себя наиболее ресурсоемкие этапы визуализации.

Скрытый текст

Разумеется, первенцы среди видеоускорителей умели лишь текстурировать треугольники (далеко не всегда обеспечивая корректную перспективу) и интерполировать вершинные цвета для имитации простейшего динамического освещения.

Всю остальную тяжелую работу вплоть до 1999 года выполнял центральный процессор: скелетную анимацию моделей (чаще всего через морфинг), отсечение невидимых полигонов, матричные преобразования мировых координат в экранные, отсечение по плоскостям обзора и, само собой, трудоемкое перспективное деление. Именно массовое внедрение блоков T&L в чипах семейства GeForce 2 спроектировало лавинообразный рост полигональной сложности в видеоиграх.

Скриншот с сайта PlayGround.ru. Обратите внимание на цветовую гамму и отражения — последние реализовывались хитрым и очень быстрым трюком под названием Spherical environment mapping.
Скриншот с сайта PlayGround.ru. Обратите внимание на цветовую гамму и отражения — последние реализовывались хитрым и очень быстрым трюком под названием Spherical environment mapping.

В 1996 году компания ATI выкатила свой первый полноценный графический адаптер с аппаратной поддержкой трехмерной графики — 3D Rage (I). Архитектурно он базировался на старой добронной двумерной платформе Mach64, к которой инженеры прикрутили треугольный растеризатор, модуль текстурной фильтрации и аппаратный декодер MPEG. По уровню производительности новинка заметно проигрывала легендарной 3dfx Voodoo (хотя и опережала сомнительную S3 Virge) и испытывала трудности с полноценной поддержкой OpenGL, тем не менее добившись коммерческого успеха.

Фото с сайта TechPowerUp.
Фото с сайта TechPowerUp.

Однако уже год спустя компания Nvidia ответила сокрушительным ударом, выпустив гораздо более производительную Riva 128, которая играючи превосходила Rage Pro. В течение последующих трех лет талантливая команда инженеров «зеленых» стремительно эволюционировала графические стандарты ПК, буквально вытесняя с рынка всех конкурентов в лице S3, Intel, SiS и даже культовой 3dfx. На десктопном поле у Nvidia осталась лишь соперница в лице ATI да постепенно теряющая позиции Matrox, вскоре сошедшая с дистанции из-за сырого программного обеспечения.

За счёт чего NV выдавили других производителей?

Успех Nvidia строился на технологическом лидерстве: пока остальные вендоры упорно специализировались на базовой растеризации, инженеры NV пошли ва-банк.

В модели GeForce 256 они впервые перенесли тригонометрические расчеты геометрии и световых схем непосредственно на кремний графического процессора, радикально разгрузив центральный камень. Кроме того, была внедрена аппаратная поддержка кубических карт окружения для динамических отражений, алгоритмы компрессии текстур (позволявшие удваивать разрешение ассетов без дополнительных затрат памяти) и, в 2000 году, рельефное текстурирование (бамп-маппинг). Довершало картину безупречное качество OpenGL-драйверов, критически важное для культовых игр на движках id Software.

Riva 128. Фото из Википедии, у меня до сих пор такой нет, хотя очень хочется :(
Riva 128. Фото из Википедии, у меня до сих пор такой нет, хотя очень хочется 🙁

К 2000 году компания ATI сумела настичь конкурента, представив знаковую линейку Radeon на базе чипа R100. Канадским инженерам удалось реализовать полноценный аппаратный T&L, зачатки программируемых пиксельных блоков (через так называемые «комбайнеры»), а также нативную поддержку бамп-маппинга. Прямого доступа разработчиков к шейдерам еще не существовало, но архитектура стремительно развивалась. Уже в R200 появились полноценные вершинные и пиксельные программы стандарта SM1.1, в R300 — революционная поддержка DirectX 9 и SM2.0 (памятные многим Radeon 9500 и 9600), а ближе к 2005 году инженеры приступили к разработке принципиально нового семейства R400 под кодовым именем Crayola…

…и на этом этапе стоит задержаться подробнее. Дело в том, что графические процессоры поколений R100–R400 (имеется в виду классический десктопный R400 из линейки Radeon X800) базировались на устоявшейся парадигме начала десятилетия: обособленный пул вершинных конвейеров, отдельный блок пиксельных шейдеров, а у раннего R100 — еще и фиксированный конвейер (FFP). Однако в 2005 году параллельно разрабатывался «альтернативный» R400 под личинкой Crayola, радикально переосмыслявший всю философию старых Radeon. Этот проект впервые внедрял концепцию ATI Xenos. Это доработанный R400 в паре с eDRAM.

ATI Xenos. Это доработанный R400 в паре с eDRAM.

❯ ATI Crayola

Разумеется, сфера интересов ATI не исчерпывалась исключительно рынком персональных компьютеров. У корпорации существовало специализированное подразделение Imageon, проектировавшее графические ускорители для КПК, коммуникаторов и мобильных терминалов. Их функциональный набор существенно отличался от настольных GPU: во главу угла ставились двумерное ускорение, контроллеры дисплеев и матриц камер, а также аппаратное декодирование медиапотоков. Чипы Imageon можно было встретить в телефонах Motorola (знаменитые E398, E1, в то время как в RAZR V3 трудился конкурент от Nvidia), карманных компьютерах HTC (HP iPaq HX4700, HTC X7500) и ряде других портативных гаджетов.

В 2004 году подразделение ATI Imageon презентовало свой первый мобильный видеочип с поддержкой трехмерной графики — 2300. Точно охарактеризовать его внутреннее ядро затруднительно, однако графический процессор уверенно справлялся с геометрическими трансформациями, мультитекстурированием и пиксельными комбайнерами, демонстрируя возможности на уровне настольных Rage 128 Pro и GeForce 256. Компания Nvidia старалась не отставать и в тот же период выкатила чип GoForce 4500, где вместо традиционного фиксированного набора элементов использовались подлинные программируемые вершинные и пиксельные шейдеры. И это в 2004 году, когда даже культовая портативная консоль Sony PSP продолжала использовать устаревший фиксированный конвейер уровня эпохи GeForce 256!

Gizmondo единственной устройство с GoForce 4500. Моя мечта и просто крутая консоль, фото из Википедии.
Gizmondo — единственное устройство с GoForce 4500. Моя заветная мечта и культовая консоль, фото из Википедии.

И вот тут впору вспомнить про глобальные амбиции Imageon. Мы помним, что материнская ATI активно выстраивала новую микроархитектуру R400 с унифицированными шейдерами, ставшую фундаментом для Xenos в Xbox 360. Стратегической задачей компании была сквозная унификация этой платформы для всех типов устройств: мобильных телефонов, смартфонов, домашних приставок и персональных компьютеров. Все они должны были нести в себе генеалогический код Crayola. Именно эта разработка легла в основу семейства архитектур TeraScale, определявшего облик графики AMD с 2007 по 2014 год вплоть до прихода эффективных ядер GCN.

Иллюстрация работы унифицированных шейдеров в TeraScale. Скриншот с Реддита.
Принцип работы унифицированных шейдеров в TeraScale. Иллюстрация с Reddit.

Если с ПК и Xbox 360 всё предельно прозрачно, то мобильный сектор таил куда больше сюрпризов. На заре нулевых гигант Qualcomm сделал ставку на полноценное внедрение трехмерного ускорения в массовые кнопочные аппараты. В ту эпоху большинство сотовых устройств довольствовалось средой Java, платформой Mophun или вообще обходилось без них. Решением от Qualcomm стала проприетарная среда BREW, дававшая возможность запускать нативный код на C++. В период 2002–2003 годов компания выпустила чипсет MSM6250, укомплектованный собственным графическим ядром Stargate3D.

Ниже продемонстрирован порт Need for Speed Underground 2 под среду BREW, задействующий ресурсы Stargate3D:

Примерно в 2005 году Qualcomm устремилась на рынок коммуникаторов, выпустив чип MSM7200. Помимо интегрированного сотового модема, мощного процессорного ядра ARM11 и богатых мультимедийных возможностей, новинка содержала графический ускоритель свежей линейки — Adreno 130. Модели MSM7200, 7200A и 7201A нашли применение в колоссальном парке устройств тех лет: здесь и первый в истории Android-смартфон от Samsung (i7500 Galaxy), и пионер экосистемы Android HTC Dream, и культовая линейка коммуникаторов HTC Touch Dual, TyTN II, Touch Diamond 2, а также масса иных аппаратов. Самое удивительное заключается в том, что Adreno 130 создавалась силами ATI и прямо происходила от наработок по мобильным чипам Imageon 2300/2380.

Небольшая история с драйверами на Adreno

В 2007 году на рынок вышло несколько коммуникаторов HTC под управлением Windows Mobile на базе процессора MSM7200. Устройства были великолепны всем, кроме откровенно лагающего интерфейса и полного отсутствия 3D-ускорения. Причина крылась в банальном упущении: вендор попросту забыл включить драйверы D3DM и OpenGL ES в состав системного дистрибутива, забросив дальнейшую поддержку.

Полноценную трехмерную графику энтузиасты позже вернули варварским методом, извлекая бинарники драйверов из прошивок более свежих аппаратов на MSM7200A. С историей HTC Dream ситуация повторилась: родных драйверов в поставке не было, поэтому сообщество позаимствовало их из ПО стороннего девайса на платформе 7201A, вероятнее всего — того же Galaxy.

Об этом говорит Vendor String и поддержка ATI'шных расширений. Также здесь есть поддержка вершинных шейдеров, но нет пиксельных, что говорит о родстве с 2300, где был T&L (а скорее всего и полноценный вершинный конвейер).
Об этом свидетельствует строка производителя (Vendor String) и фирменные расширения ATI. Наличие поддержки вершинных шейдеров при полном отсутствии пиксельных прямо указывает на родство с моделью 2300, обладавшей аппаратным T&L (и, вероятнее всего, полноценным вершинным трактом).

Следом за релизом TeraScale, в 2008 году подразделение Imageon представило новейший трехмерный акселератор Z430, поддерживавший OpenGL ES 2.0 и Direct3D 9.0c. Он обладал унифицированной шейдерной топологией из восьми вычислительных ядер, рендерил до 22 миллионов полигонов в секунду и по своему быстродействию вплотную подбирался к десктопным картам класса GeForce FX 5200. Догадались, на какой элементной базе он спроектирован? 🙂 Совершенно верно — в народе его метко прозвали «карманным Xenos», поскольку Z430 представлял собой миниатюрную, урезанную версию графического чипа из Xbox 360.

В отличие от предшественников, Z430 уже активно лицензировался как готовое IP-ядро сторонним производителям полупроводников. Автору известны три ключевые однокристальные системы с этим GPU: это линейки Qualcomm MSM72xx/QSD82xx, а также процессоры Freescale i.MX8. Однако уже год спустя, в 2009-м, компания AMD по неизвестным причинам продала подразделение Imageon корпорации Qualcomm. Новоиспеченные владельцы оперативно переименовали Z430 в графику Adreno 200/205 и продолжили активно эксплуатировать архитектуру в бюджетных (и не только) смартфонах вплоть до 2013 года — ровно тогда, когда с конвейера сходила финальная ревизия Xbox 360, а сама AMD триумфально переводила десктопный сегмент на рельсы GCN. Символично донельзя.

Все эти смартфоны используют GPU Adreno 200/205, который архитектурно очень близок к Xbox 360. И это далеко не весь список моделей — их сотни! Думали ли вы раньше, что они имеют в себе частичку вашей мощной видеокарты от AMD в ПК или Xbox 360? Узнали хоть один? :)
Все эти мобильные устройства оснащены графикой Adreno 200/205, архитектурно родственной Xbox 360. И это лишь верхушка айсберга — счет идет на сотни моделей! Могли ли вы представить, что в вашем карманном гаджете бьется сердце легендарного видеочипа от AMD? Узнали кого-нибудь? 🙂

В ходе подготовки этого материала я детально изучил исходный код эмулятора Xenia, открытый проект драйверов Freedreno, а также занялся реверс-инжинирингом проприетарного GLES-драйвера Adreno под Android. Анализ показал, что Adreno и графическое ядро Xenon оперируют поразительно схожим пулом аппаратных регистров и даже идентичными идентификаторами опкодов:

Архитектура TeraScale демонстрирует схожую систему команд, хотя числовые значения и состав опкодов уже разнятся — что вполне закономерно, учитывая эволюционный путь развития Crayola:

❯ Заключение

В последующие годы руководство Qualcomm приняло решение отказаться от дальнейшего использования технологического задела Radeon, и семейство Adreno 3xx представляло собой уже полностью собственную разработку с суперскалярной архитектурой и тайловым рендерингом (TBDR). Так в 2013 году окончательно закрылась глава в истории ATI Crayola… однако AMD вовсе не собиралась навсегда покидать мобильный сегмент. В 2022 году передовая графика RDNA триумфально интегрировалась в платформу Exynos 2200, ознаменовав долгожданное возвращение «красных» на рынок карманных видеоускорителей! Ну а смартфоны с частичкой Xbox 360 навсегда останутся в нашей памяти.

Между тем, мне было бы искренне интересно препарировать аппаратные платформы вроде Nvidia ION, Radeon Xpress Graphics, VIA Chrome9 HC или Trident Blade, а в перспективе — написать кастомную 3D-демонстрацию прямо «на железе». Если у вас залеживаются интересные компактные клиенты, раритетные ноутбуки на необычной элементной базе или комплектующие AMD времен платформ 939 и 462 — смело пишите в личные сообщения, с удовольствием подготовлю новый материал!

Надеюсь, это путешествие в прошлое было вам по душе. Подписывайтесь на блог, чтобы не пропускать свежие публикации каждую неделю! А если вас привлекают темы аппаратного ремонта, модификаций и программирования ретро-гаджетов, добро пожаловать в мой Telegram-канал «Клуб фанатов балдежа», где публикуются закулисье работы над статьями, анонсы и прочие полезности. Видеоролики (не всегда дублирующие текстовые обзоры) можно найти на моем YouTube-канале.

Кроме того, если вы хотите безвозмездно передать в дар какое-нибудь интересное железо и увидеть про него подробную статью — жду вас в Telegram. Меня невероятно привлекают самые разнообразные гаджеты: от игровых консолей, аксессуаров, мобильных телефонов, КПК до олдскульных компьютеров и портативных ПК. Кто знает, возможно, героем следующего подобного материала окажется редкий лэптоп из 90-х? 🙂

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник
Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

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

Фото Nokia 9300 с сайта mobile-review.com
Фото Nokia 9300 с сайта mobile-review.com

Кстати, в моем распоряжении имеется консоль GameBoy Advance SP, под которую страсть как хочется написать собственную игру. К сожалению, этот экземпляр пострадал от воды и кофе. Быть может, у кого-то найдется плата-донор с мертвым текстолитом, откуда можно выпаять контроллер питания? Ищу запчасть под ревизию AGS-101.

Перейти
Перейти

Свежие новости, продуктовые обзоры и конкурсы от команды Timeweb.Cloud — теперь в нашем Telegram-канале ↩

 

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов