Эволюция современных графических процессоров началась с появления в 1995 году первых 3D-карт, за которым последовало широкое распространение 32-битных операционных систем и недорогих персональных компьютеров.
До этого индустрия графики в основном состояла из более прозаичных двухмерных неперсональных компьютерных архитектур. Графические платы чаще всего были известны по алфавитно-цифровым обозначениям чипов и отличались огромной стоимостью. 3D-игры и компьютерная графика постепенно объединились, возникнув из таких разнообразных источников, как аркадные и консольные игры, проекты оборонной промышленности, робототехника и космические симуляторы, а также медицинская визуализация.
Первые дни потребительской 3D-графики были Диким Западом конкурирующих идей: от способов реализации оборудования до использования различных техник рендеринга и интерфейсов приложений и данных. У первых графических систем имелся фиксированный конвейер функций (fixed function pipeline, FFP) и архитектура, следовавшая по очень строгому пути обработки; при этом графические API практически у каждого производителя 3D-чипов были собственные.
3D-графика превратила довольно унылую PC-индустрию в шоу света и магии, но своим существованием она обязана многим поколениям инноваций. В этой серии статей мы подробно рассмотрим историю GPU: первые дни потребительской 3D-графики, совершившую переворот 3Dfx Voodoo, консолидацию отрасли в начале века и современные GPGPU.
1976 — 1995 годы: первые дни потребительской 3D-графики
Первая настоящая 3D-графика появилась с возникновением контроллеров дисплея, называемых video shifter или генераторами адресов видео (video address generators). Они выполняли роль посредника между центральным процессором и дисплеем. Входящий поток данных преобразовывался в последовательность выходных битовых видеоданных, таких как яркость и цвет, а также в вертикальную и горизонтальную композитную синхронизацию, которые хранили строку пикселей и синхронизировали каждую последующую строку и интервал гасящего импульса (время между завершением одной растровой строки и началом новой).
Разнообразные конструкции таких устройств появились во второй половине 1970-х и заложили основы известной нам 3D-графики.
Atari 2600, выпущенная в сентябре 1977 года
Например, видеочип «Pixie» (CDP1861), выпущенный компанией RCA в 1976 году, был способен выводить совместимый с NTSC видеосигнал с разрешением 62×128 или 64×32 для оказавшейся непопулярной консоли RCA Studio II.
За видеочипом спустя один год последовал телевизионный интерфейсный адаптер (Television Interface Adapter, TIA) 1A, который был интегрирован в Atari 2600 для генерации изображения экрана, звуковых эффектов и считывания информации с контроллеров ввода. Разработкой TIA руководил Джей Майнер, который позже занимался проектированием чипов для компьютера Commodore Amiga.
В 1978 году Motorola объявила о выпуске генератора адресов видео MC6845. Он стал основой для карт Monochrome/Color Display Adapter (MDA/CDA) компьютера IBM PC, выпущенного в 1981 году. Этот генератор выполнял те же функции и в компьютере Apple II. Позже в том же году Motorola добавила генератор видеодисплея MC6847, который начал использоваться во множестве персональных компьютеров первого поколения, в том числе и в Tandy TRS-80.
Monochrome Display Adapter компьютера IBM PC
Похожее устройство VIC, произведённое подразделением Commodore MOS Tech, обеспечивало вывод графики в домашних компьютерах Commodore 1980-83 годов.
В ноябре следующего года дебютировали используемые в компьютерах Atari 400 контроллер ANTIC (Alphanumeric Television Interface Controller) и сопроцессор CTIA/GTIA (Color/Graphics Television Interface Adaptor). ANTIC при помощи прямого доступа к памяти (DMA) обрабатывал 2D-команды изображений. Как и большинство сопроцессоров работы с видео, он мог генерировать графику игрового поля (фоны, экраны заставки, отображение очков), а CTIA генерировал цвета и подвижные объекты. Yamaha и Texas Instruments тоже поставляли производителям первых домашних компьютеров похожие интегральные схемы.
Следующие этапы эволюции графики в основном происходили в профессиональных отраслях.
Компания Intel использовала свой графический чип 82720 в качестве основы для Video Graphics Controller Multimode Board (платы контроллера видеографики с различными режимами) iSBX 275 стоимостью 1000 долларов. Устройство могло отображать данные восьми цветов с разрешением 256×256 (или монохромные цвета с разрешением 512×512). 32 килобайт памяти дисплея было достаточно для отрисовки линий, дуг, прямоугольников и текстовых символов. Чип также имел функции зума, разделения экрана на части и скроллинга.
Вскоре после этого компания SGI выпустила IRIS Graphics для рабочих станций — графическую плату GR1.x с возможностью подключения отдельных (дочерних) плат, позволяющих расширить количество цветов, использовать геометрию, Z-буфер и оверлеи/подложки.
В то время уже достаточно развитой была промышленная и оборонная 3D-визуализация. IBM, General Electric и Martin Marietta (которая позже, в 1992 году, купила аэрокосмический отдел GE), вместе с подрядчиками министерства обороны, технологическими институтами и НАСА разрабатывали различные проекты, требовавшие технологий для военных и космических симуляций. Также в 1951 году ВМФ разработала лётный симулятор с использованием 3D-визуализации на основе компьютера Whirlwind Массачусетского технологического института.
Кроме оборонных подрядчиков существовали компании, поставлявшие на рынки военной продукции профессиональную графику.
Evans & Sutherland, поставлявшая такие серии профессиональных графических карт, как Freedom и REALimage, также поставляла графику для лётного симулятора CT5, который стоил 20 миллионов долларов и управлялся мейнфреймом DEC PDP-11. Один из основателей компании, Айван Сазерленд, разработал в 1961 году компьютерную программу под названием Sketchpad, позволявшую с помощью светового пера рисовать геометрические фигуры и отображать их на ЭЛТ-экране в реальном времени.
Это был прародитель современного графического интерфейса пользователя (Graphic User Interface, GUI).
В менее закрытой отрасли персональных компьютерах появилась серия чипов 82C43x компании Chips and Technologies, использовавшаяся в EGA (Extended Graphics Adapter) и ставшая конкурентом адаптеров IBM. В 1985 году эти адаптеры устанавливались во многие клоны PC/AT. Этот год был примечательным и для компьютера Commodore Amiga, выпущенного с чипсетом OCS. Чипсет состоял из трёх основных чипов, Agnus, Denise и Paula, позволявших частично снизить зависимость от ЦП при вычислениях графики и звука.
В августе 1985 года трое иммигрантов из Гонконга, Kwok Yuan Ho, Lee Lau и Benny Lau, создали в Канаде компанию Array Technology Inc. К концу года название изменили на ATI Technologies Inc.
В следующем году у ATI появился первый продукт — OEM Color Emulation Card. Он использовался для вывода монохромного зелёного, янтарного или белого фосфорного текста на чёрный фон TTL-монитора через 9-контактный разъём DE-9. Карта была оснащена 16 КБ памяти. Она в большой степени поспособствовала тому, что в первый год работы ATI компания заработала 10 миллионов канадских долларов. Основной причиной этого был контракт на еженедельную поставку 7000 чипов для компьютеров Commodore.
Появление цветных мониторов и отсутствие единых стандартов привели к образованию ассоциации Video Electronics Standards Association (VESA), одним из членов-основателей которой стали ATI, а также NEC и ещё шесть других производителей графических адаптеров.
В 1987 году ATI добавила в свою линейку продуктов серию Graphics Solution Plus, предназначенную для OEM. В ней использовалась 8-битная ISA-шина IBM PC/XT для IBM PC на основе Intel 8086/8088. Чип поддерживал графические режимы MDA, CGA и EGA, настраиваемые с помощью dip-переключателей. По сути, она являлась клоном платы Plantronics Colorplus, но с местом для 64 КБ памяти. Выпущенные в 1987 году PEGA1, 1a и 2a (256 КБkB) компании Paradise Systems тоже были клонами Plantronics.
ATI EGA 800: 16-цветная эмуляция VGA, поддержка разрешения 800×600
В марте появилась серия EGA Wonder (модели с 1 по 4) стоимостью 399 долларов. Она имела 256 КБ DRAM и была совместимой с эмуляцией CGA, EGA и MDA в разрешении до 640×350 и с 16 цветами. Режим Extended EGA был доступен в сериях 2,3 и 4.
Уровень высокотехнологичных устройств занимала EGA Wonder 800 с 16-цветной эмуляцией VGA и поддержкой разрешения 800×600 и карта VGA Improved Performance (VIP), которая по сути являлась EGA Wonder с модулем ЦАП (DAC), добавленным для обеспечения ограниченной совместимости с VGA. Последняя стоила 449 долларов плюс 99 долларов за модуль расширения Compaq.
ATI была далеко не единственной компанией, оседлавшей волну нарастающих потребностей потребителей в персональных компьютерах.
В том году появились многие новые компании и продукты… Среди них были Trident, SiS, Tamerack, Realtek, Oak Technology, LSI G-2 Inc., Hualon, Cornerstone Imaging и Winbond — все они образовались в 1986-87 годах. В тот же временной период свои первые графические устройства начали изготавливать такие компании, как AMD, Western Digital/Paradise Systems, Intergraph, Cirrus Logic, Texas Instruments, Gemini и Genoa.
На протяжении нескольких следующих лет в серии Wonder компании ATI продолжали появляться новые удивительные продукты.
В 1988 году в продажу вышли Small Wonder Graphics Solution с возможностью подключения игрового контроллера и композитного выхода (для эмуляции CGA и MDA), EGA Wonder 480 и 800+ с поддержкой Extended EGA и 16-битного VGA, а также VGA Wonder и Wonder 16 с добавленной поддержкой VGA и SVGA.
Wonder 16, оснащённая 256 КБ памяти, продавалась в розницу за 499 долларов, а версия с 512 КБ стоила 699 долларов.
В 1989 году появилась усовершенствованная серия VGA Wonder/Wonder 16, в том числе VGA Edge 16 (серия Wonder 1024) по сниженной цене. Среди новых функций были порт шина-мышь и поддержка VESA Feature Connector. Это был разъём с позолоченными контактами, похожий на укороченный разъём слота шины данных, соединяемый кабелем с другим контроллером видео для обхода перегруженной шины данных.
Обновления серии Wonder продолжили появляться в 1991 году. Карта Wonder XL добавила совместимость с цветом VESA 32K и Sierra RAMDAC, что увеличило максимальное разрешение дисплея до 640×480 при 72 Гц или 800×600 при 60 Гц. Цены варьировались в широком диапазоне: 249 долларов за модель с 256 КБ, 349 долларов за 512 КБ, и 399 долларов за версию с 1 МБ ОЗУ. Версия со сниженной ценой называлась VGA Charger и была основана на Basic-16 предыдущего года.
ATI Graphics Ultra ISA (Mach8 + VGA)
ATI создала разновидность Wonder XL, на расширенной печатной плате которой расположился чип Creative Sound Blaster 1.5. Устройство под названием VGA Stereo-F/X было способно симулировать стереозвук из монофонических файлов Sound Blaster примерно в качестве FM-радио.
В мае того же года появилась серия Mach, начавшаяся с устройства Mach8. Оно продавалось как чип или как плата, позволявшая при помощи программного интерфейса (AI) брать на себя часть 2D-операций отрисовки, например, рисование линий, заливку цветом и комбинирование битовых карт (Bit BLIT).
Графические карты наподобие ATI VGAWonder GT обеспечивали возможность работы с 2D и 3D, сочетая в себе Mach8 с графическим ядром (28800-2) карты VGA Wonder+, выполнявшим 3D-операции. Благодаря Wonder и Mach8 компания ATI превзошла планку выручки в 100 миллионов канадских долларов, в основном благодаря переходу пользователей на Windows 3.0 и повысившимися нагрузками на 2D-операции.
В начале 1989 года была создана S3 Graphics, изготовившая спустя 18 месяцев свой первый чип 2D-ускорителя и графическую карту S3 911 (или 86C911). Важными особенностями последней стали 1 МБ VRAM и поддержка 16-битного цвета.
В том же году S3 911 была вытеснена картой 924 — по сути, это была модернизированная версия 911 с поддержкой 24-битного цвета; на следующий год она снова была улучшена в версии 928, добавившей поддержку 32-битного цвета; также были выпущены ускорители 801 и 805. Ускоритель 801 использовал интерфейс ISA, а 805 — VLB. В промежутке времени между выпуском 911 и появлением 3D-ускорителя рынок был заполнен 2D-картами для работы с GUI, основанными на оригинальном устройстве S3. Самые примечательные из них выпущены Tseng labs, Cirrus Logic, Trident, IIT, ATI (Mach32) и Matrox (MAGIC RGB).
В январе 1992 года Silicon Graphics Inc (SGI) выпустила OpenGL 1.0 — многоплатформенный, независимый от поставщика интерфейс программирования приложений (API) для 2D- и 3D-графики.
OpenGL эволюционировал из собственного API компании SGI под названием IRIS GL (Integrated Raster Imaging System Graphical Library). Идея заключалась в том, чтобы сохранить неграфические функции IRIS, и позволить API работать на системах, выпускаемых другими компаниями, потому что на горизонте появились конкуренты, поставлявшие собственные проприетарные API.
Изначально OpenGL был нацелен на профессиональные UNIX-рынки, но благодаря удобству реализации расширений он быстро адаптировался под 3D-игры.
Microsoft разрабатывала собственный конкурирующий API под названием Direct3D, а поэтому не прилагала особых усилий для того, чтобы OpenGL работал в Windows наилучшим образом.
Эта ситуация подошла к критической точке несколько лет спустя, когда Джон Кармак из id Software, ранее выпустившей революционную для PC-рынка игру Doom, портировал Quake на Windows при помощи OpenGL и открыто раскритиковал Direct3D.
Переместимся в будущее: выпущенный в 1997 году GLQuake и оригинальный Quake
Microsoft была непреклонной — компания отказалась лицензировать Mini-Client Driver (MCD) OpenGL для Windows 95, позволявший производителям выбирать, какие функции могут иметь доступ к аппаратному ускорению. SGI ответила на этот ход, разработав Installable Client Driver (ICD), который не только обеспечивал ту же функциональность, но и делал это намного лучше, потому что MCD обеспечивал только растеризацию, а ICD добавил функции освещения и преобразований (lighting and transform, T&L).
В процессе развития OpenGL, изначально ставшего популярным на рабочих станциях, Microsoft внимательно наблюдала за рождением игрового рынка и разрабатывала собственный проприетарный API. В феврале 1995 года компания приобрела RenderMorphics, Reality Lab API которой получил поддержку сторонних разработчиков и превратился в ядро Direct3D.
В то же самое время Брайан Хук из 3dfx писал Glide API, который позже превратится в доминирующий API для игр. Частично это было вызвано участием Microsoft в проекте Talisman (экосистемы рендеринга на основе тайлов), из-за которого компании пришлось ограничить ресурсы, предназначавшиеся для DirectX.
Благодаря всё более широкому распространению Windows интерфейс D3D становился всё популярнее, и такие проприетарные API, как S3d (S3), Matrox Simple Interface, Creative Graphics Library, C Interface (ATI), SGL (PowerVR), NVLIB (Nvidia), RRedline (Rendition) и Glide начали терять любовь разработчиков.
Им не помогло даже то, что некоторые из разработчиков этих проприетарных API объединились с производителями плат из-за постоянной потребности в расширении списка функций. Среди них были увеличение экранных разрешений, повышение глубины цвета (с 16-битного до 24-битного, а потом и до 32-битного) и такие способы улучшения качества изображения, как anti-aliasing. Все эти функции были необходимы вследствие увеличившейся пропускной способности, эффективности графики и повышению скорости циклов разработки продуктов.
1993 год ознаменовал появление новых конкурентов на рынке графики, самым заметным из которых была Nvidia, основанная в январе того же года Дженсеном Хуангом, Кёртисом Приемом и Крисом Малаховски. Хуанг ранее был руководителем Coreware в LSI, а Прием и Малаховски пришли из Sun Microsystems, где работали над графической архитектурой GX, основанной на SunSPARC.
Вскоре после этого к Nvidia присоединились коллеги-новички Dynamic Pictures, ARK Logic и Rendition.
Из-за переменчивости рынка многие графические компании уже прекратили свой бизнес или были поглощены конкурентами. Среди них были Tamerack, Gemini Technology, Genoa Systems, Hualon, Headland Technology (купленная SPEA), Acer, Motorola и Acumos (купленная Cirrus Logic).
Однако единственной компанией, шедшей от победы к победе, оставалась ATI.
В ноябре того же года было объявлено о выпуске компанией ATI чипа декодера 68890 PC TV, впервые появившегося внутри карты Video-It!.. Чип мог выполнять захват видео с разрешением 320×240 при 15 fps, или 160×120 при 30 fps, а также сжимать/распаковывать его в реальном времени благодаря встроенному Intel i750PD VCP (Video Compression Processor). Также он мог связываться с графической платой по шине данных, избавляя от необходимости в дополнительных платах, портах или кабелях.
Video-It! продавалась в розницу за 399 долларов; также линейку продуктов дополняла модель Video-Basic с меньшим количеством функций.
Пять месяцев спустя, в марте, ATI запоздало выпустила 64-битный ускоритель — Mach64.
Финансовый год не был для ATI хорошим, она потерпела убытки в 2,7 миллиона канадских долларов, потеряв из-за сильной конкуренции долю рынка. Среди плат-конкурентов можно назвать S3 Vision 968, выбранную многими производителями плат, и Trio64, получившую OEM-контракты с Dell (Dimension XPS), Compaq (Presario 7170/7180), AT&T (Globalyst), HP (Vectra VE 4) и DEC (Venturis/Celebris).
Vision 968: первый ускоритель видео S3
Выпущенный в 1995 году Mach64 во многом стал первым. Он стал первым графическим адаптером, доступным и для PC, и для Mac в формате Xclaim (450 или 650 долларов, в зависимости от объёма памяти); как и S3 Trio, он обеспечивал ускорение воспроизведения видео.
Также Mach64 стала предтечей первых профессиональных графических карт ATI — 3D Pro Turbo и 3D Pro Turbo+PC2TV, стоивших по 599 долларов за версию с 2 МБ и 899 долларов за 4 МБ.
ATI Mach64 VT с поддержкой ТВ-тюнера
В следующем месяце на сцене появился технологический стартап под названием 3DLabs, родившийся, когда отдел пиксельной графики DuPont купил подразделение своей родительской компании вместе с процессором GLINT 300SX, способным выполнять рендеринг OpenGL, обработку фрагментов и растеризацию. Из-за высокой стоимости карты компании изначально были нацелены на профессиональный рынок. Fujitsu Sapphire2SX 4MB в розницу продавалась за 1600-2000 долларов, а 8-мегабайтная ELSA GLoria 8 — за 2600-2850 долларов. Однако 300SX была предназначена для игрового рынка.
В выпущенной в 1995 году игровой карте GLINT 300SX память была снижена до 2 МБ. 1 мегабайт использовался под текстуры и Z-буфер, а всё остальное — под буфер кадров. За 50 дополнительных долларов сверх изначальных 349 долларов карта также имела возможность расширения VRAM для совместимости с Direct3D. Продукту не удалось проложить себе дорогу на уже переполненный рынок, но 3DLabs уже работала над его потомком в серии Permedia.
В то время казалось, что S3 повсюду. На OEM-рынке high-end доминировали чипсеты Trio64 с интегрированными в один чип ЦАП, графическим контроллером и синтезатором тактов. Они использовали общий буфер кадров и поддерживали аппаратные функции оверлеев видео (выделенную часть графической памяти для рендеринга видео, требуемого приложению). Trio64 и его 32-битный брат Trio32 продавались как OEM-устройства и отдельные карты такими компаниями, как Diamond, ELSA, Sparkle, STB, Orchid, Hercules и Number Nine. Цены на Diamond Multimedia варьировались от 169 долларов за карту на основе ViRGE до 569 долларов за Diamond Stealth64 Video с 4 МБ VRAM на основе Trio64+.
В мейнстримной части рынка также присутствовали продукты Trident, давнего OEM-поставщика незатейливых графических 2D-адаптеров, недавно добавившего в свою линейку чип 9680. Чип мог похвастаться большинством функций Trio64, а платы обычно продавались за 170-200 долларов. В своей нише они обеспечивали приемлемую 3D-производительность и хорошие функции воспроизведения видео.
Среди других новичков мейнстримного рынка были Power Player 9130 компании Weitek и ProMotion 6410 компании Alliance Semiconductor (обычно применявшаяся в Alaris Matinee или в FIS OptiViewPro). Обе платы обеспечивали превосходное масштабирование со скоростью ЦП, а последняя сочетала в себе мощный движок масштабирования со схемой предотвращения блокировок для получения плавного воспроизведения видео, которое стало гораздо лучше, чем в предыдущих чипах наподобие ATI Mach64, Matrox MGA 2064W и S3 Vision968.
В мае Nvidia выпустила свой первый графический чип NV1, ставший первым коммерческим графическим процессором, способным выполнять 3D-рендеринг, ускорение видео и встроенное ускорение GUI.
Компания заключила партнёрское соглашение с ST Microelectronic о производстве чипа по её 500-нанометровому процессу, и последняя выпустила версию чипа STG2000. Несмотря на отсутствие большого успеха, он обеспечил компании первую прибыль. К сожалению для Nvidia, сразу после начала первых продаж поставщиками (в частности, карты Diamond Edge 3D) в сентябре, Microsoft завершила работу над DirectX 1.0 и выпустила его.
Графический API D3D был основан на рендеринге треугольных полигонов, а NV1 использовала наложение текстур на четырёхугольники. При помощи драйвера была добавлена ограниченная совместимость с D3D: треугольники превращались в четырёхугольные поверхности, но нехватка игр, предназначенных для NV1, обрекла его на поражение: чип был мастером на все руки, но ни в одной области не достиг превосходства.
Большинство игр портировалось с Sega Saturn. NV1 с 4 МБ и интегрированными портами для Saturn (по два на плату расширения, соединённую с картой кабелем) появился в сентябре 1995 года по цене примерно в 450 долларов.
Поздние изменения Microsoft и выпуск DirectX SDK не позволили производителям плат получать прямой доступ к воспроизведению цифрового видео. Это означало, что почти все дискретные графические карты имели проблемы с работой в Windows 95. Драйверы для Win 3.1 множества производителей, напротив, были в целом безупречны.
В ноябре 1995 года ATI объявила о выпуске своего первого чипа 3D-ускорителя 3D Rage (также известного как Mach 64 GT).
Первая публичная демонстрация чипа была проведена на видеоигровой конференции E3 в Лос-Анджелесе в мае следующего года. Сама карта появилась месяц спустя. 3D Rage соединила в себе 2D-ядро Mach64 с 3D-функциями.
Поздние правки в спецификациях DirectX привели к тому, что 3D Rage имела проблемы совместимости со многими играми, использовавшими этот API — в основном отсутствовала буферизация глубин. При буфере кадров EDO RAM с 2 МБ работа с 3D была ограничена 640x480x16-бит или 400x300x32-бит. Попытка включения 32-битного цвета в 600×480 обычно приводила к повреждению содержимого экрана, а максимальное 2D-разрешение составляло 1280×1024. В играх производительность была посредственной, зато возможность полноэкранного воспроизведения видео MPEG в какой-то мере её уравновешивала.
ATI переработала чип и в сентябре был выпущен Rage II. Он устранил проблемы с D3DX первого чипа и добавил поддержку воспроизведения MPEG2. Однако первые карты по-прежнему поставлялись с 2 МБ памяти, снижавшими производительность, а также имели проблемы с перспективными/геометрическими преобразованиями. Когда серия устройств расширилась благодаря Rage II+DVD и 3D Xpression+, максимальная ёмкость памяти увеличилась до 8 МБ.
Хотя ATI первая вышла на рынок с графическим 3D-чипом, на сцене быстро появились конкуренты с другими подходами к реализации 3D. В частности, 3dfx, Rendition и VideoLogic.
Выпущенный в 1996 году Screamer 2, запущенный на Windows 95 с картой 3dfx Voodoo 1
В гонке по выпуску новых продуктов на рынок 3Dfx Interactive победила Rendition и VideoLogic. Однако гонка по производительности была завершена ещё до начала — 3Dfx Voodoo Graphics по сути уничтожила всех конкурентов.
Это первая из четырёх статей про историю видеопроцессоров. В следующей части мы вспомним дни славы 3Dfx, Rendition, Matrox и молодой компании под названием Nvidia.