monobogdan

monobogdan

Топовый автор
На Пикабу
Дата рождения: 25 сентября
LesnayaSosiska
LesnayaSosiska и еще 97 донатеров
в топе авторов на 272 месте
149К рейтинг 4530 подписчиков 1 подписка 508 постов 451 в горячем
Награды:
Пикабу 17 лет!5 лет на Пикабу За киноманство За участие в Авторской неделеболее 1000 подписчиков Высокий разум
120
TECHNO BROTHER

Я хотел стать автором ВК, но ВК этого не хотел

Привет! Думаю многие пикабушники меня знают как автора статей про ретро-железо, гаджеты и программирование. От других ретро-блогеров, мой контент отличается глубиной с аппаратной точки зрения - в статьях мы и схемы поковыряем, и проведем сложный ремонт. И недавно я захотел стать автором ВК.

Создал паблик и начал ежедневно постить туда мини-статьи на 5-6 абзацев, в основном причесанные выдержки из старых статей. Сначала охваты были просто суперские - первый же пост про китайскую N95 залетел на 200к просмотров. Неплохо для нулевого паблика!

Конечно охваты совсем не соответствовали с действиями аудитории. Читатели практически не писали комментарии, пост лайкали единицы, зато было все неплохо по репостам (5-6 стабильно на пост).

Для сравнения - на Ютубе видос с 200к просмотров обычно набирает 2-3к комментов, пару десятков тысяч лайков и около тысячи подписчиков. На Пикабу, в самом начале пути, пост на 200к приносил мне примерно 50-100 подписчиков, а у поста было под 1000 лайков и около 100 комментов. У ВК даже этого нет.

Забавно что в виральное залетали даже такие узконаправленные темы, как планшет с процессором в SO-DIMM разъеме или китайский айфон, который я оживил после воды и использовал как основной смартфон.

Но как мы видим, статистика не соответствует охватам

Но как мы видим, статистика не соответствует охватам

Апофеозом стал пост про процессор Тетриса, который залетел на 6 миллионов просмотров... и 3.8к лайков с 300 комментариями)) браво)) у кого то ещё есть сомнения, что охваты либо накрученные, либо просто ВК пихает пост вообще всем, при том что аудитория площадки не настроена читать посты длиннее 1 абзаца?

Аудитория в ВК потоксичнее даже чем Пикабу. Комментарии в духе "ты еблан? Какой процессор в Тетрисе? Там нет процессора!" и "автор дебил займись делом" это что то с чем то.

Аудитория в ВК потоксичнее даже чем Пикабу. Комментарии в духе "ты еблан? Какой процессор в Тетрисе? Там нет процессора!" и "автор дебил займись делом" это что то с чем то.

Ну и как итог эта лафа была ровно месяц. 9 июля залетел первый пост, 9 июля - последний. Теперь посты едва ли набирают по 600 просмотров, а значит ВК выкинул меня из рекомендаций в угоду постов перекупов авто, фото жоп и прочего щитпоста. Что-ж, продолжу писать годноту для Пикабу))

Показать полностью 6
339
TECHNO BROTHER

Тайна 3dfx Voodoo: изучаем архитектуру GPU из 90-х «по винтикам» [Длиннопост, про железо]

Недавно мне подарили настоящую легенду — STB 3dfx Voodoo 3 с двумя TMU, 16'ю мегабайтами видеопамяти и 2D-ускорителем. Как настоящий гик и любитель покопаться в ретро-железе, я сразу же нашел даташит и начал изучать внутреннюю архитектуру этого игрового монстра. И поверьте, здесь есть на что посмотреть!

В сегодняшней статье мы во всех деталях изучим архитектуру оригинальной 3dfx Voodoo, узнаем почему Nvidia выиграла в гонке видеокарт и почему игры с API Glide выглядели гораздо красивее, чем с D3D/OpenGL! Если любите настоящие технарские статьи без нейрослопа и рерайта — жду вас под катом!

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

Думаю многие мои читатели знают, что 3dfx стала одним из пионеров 3D-графики на ПК для геймеров. Их видеокарты не отличались поддержкой «шейдеров», как Rendition Verite, долгое время толком не поддерживали OpenGL, а первые модели для работы требовали отдельную 2D-видеокарту. Однако их успех был обусловлен двумя главными факторами: масштабируемость и производительность.

Rendition Verite V2200. Фото моё

Rendition Verite V2200. Фото моё

Первая 3dfx Voodoo появилась в 1996 году и несмотря на высокую цену в ~300$, почти сразу стала хитом. Во первых, из конкурентов у Voodoo был разве что NVidia NV1, Rendition Verite и PowerVR Midas. NV1 сразу провалился из-за использования растеризатором квадов вместо привычных разработчикам треугольников, PowerVR был достойным конкурентом, но его TBDR-растеризатор сильно терял филлрейт и подтормаживал при отрисовке полупрозрачных поверхностей типа заборов и решеток (чего в играх всегда хватало), и только Verite был реальным конкурентом. Однако Verite не поддерживал ни OpenGL, ни D3D (который тогда был в зачаточном состоянии) и требовал освоения весьма сложного графического API — SSpeedy3D.

3dfx Voodoo 1 с одним TMU. Фото с TechPowerUp

3dfx Voodoo 1 с одним TMU. Фото с TechPowerUp

Дело в том, что в те годы каждый производитель видеокарт предлагал своё графическое API для взаимодействия с видеокартой. У S3 это был Metal, у ATi — CIF, а у 3dfx — Glide. И в отличии от других API, Glide был максимально близок к стандартному и простому OpenGL, только с изначальным упором на игры. В те годы, разработчики игр были вынуждены адаптировать свой движок для каждой видеокарты отдельно и благодаря своей простоте и продуманности, Glide стал неким стандартом — любой уважающий себя движок вплоть до 2000-го года обязательно поддерживал видеокарты 3dfx.

Carmageddon — одна из BRender-игр с поддержкой Glide. Скриншот с форума CWABoard

Carmageddon — одна из BRender-игр с поддержкой Glide. Скриншот с форума CWABoard

Однако в 1997 году, у 3dfx уже появились серьезные конкуренты в лице ATi и Nvidia. 3dfx Voodoo мало того что сама стоила ~200-250$, так ещё и для работы требовала дополнительную внешнюю 2D-видеокарту, которая стоила еще баксов 50. За ~150$, Nvidia предлагала новенькую Riva 128 с 4МБ видеопамяти, встроенным 2D-ускорителем, а также аппаратным декодером DVD-видео. ATi Rage Pro стоила примерно столько-же, по тестам была чуток медленнее, чем Nvidia, но также предлагала ноутбучные версии с поддержкой LVDS. Так что ноутбуки с чипами ATi с натяжкой можно было назвать игровыми.

ATI Rage LT Pro в Compaq Armada M300. Фото моё

ATI Rage LT Pro в Compaq Armada M300. Фото моё

3dfx решила проблему необходимости 2D-видеокарты весьма интересным костылем: компания выпустила Voodoo Rush — связку из 2D-видеочипа от Alliance Semiconductor и обычной Voodoo 1. Ирония была в том, что на видеокарты ставили как 2D-чипы AT25, так и 3D-чипы AT3D — и получалось что в системе было аж два видеочипа с поддержкой 3D-ускорения (и AT3D был не так уж и плох).

3dfx Voodoo Rush с видеочипом AT25. Фото с сайта vintage3d

3dfx Voodoo Rush с видеочипом AT25. Фото с сайта vintage3d

Ещё через год, в 1998 году, 3dfx выпустила Voodoo 2, которая стала ещё круче за счёт масштабируемости. Во первых, к GPU стало возможным подключить второй текстурный юнит, благодаря чему стало возможным наносить сразу две текстуры за один проход. А во вторых, теперь можно было объединить сразу две видеокарты с помощью технологии SLI, благодаря чему общая производительность теоретически увеличивалась в два раза. Причём SLI был реализован просто и гениально: первая видеокарта рисовала четные сканлайны, вторая — нечетные, и всё это делалось асинхронно, благодаря чему увеличивался общий филлрейт.

3dfx Voodoo 2 в исполнении Diamond Multimedia. Фото из Википедии

3dfx Voodoo 2 в исполнении Diamond Multimedia. Фото из Википедии

Однако Voodoo 2 всё ещё требовала внешнюю 2D-видеокарту и на момент 1998 года это было уже ни в какие ворота. S3 Savage, ATi Rage 128, NVidia Riva TNT, Matrox G200, Trident 3DImage, Rendition Verite V2200, Intel i740, SiS 6326 — абсолютно все эти видеокарты имели в себе приличный 2D-ускоритель. Причем Riva TNT также поддерживала мультитекстурирование, вплотную подбиралась к Voodoo 2 в бенчмарках и, в отличии от видеокарты от 3dfx, поддерживала рендеринг в 24х-битном формате. Это был главный конкурент Voodoo 2, который местами его заметно превосходил.

S3 ViRGE. Фото моё

S3 ViRGE. Фото моё

В 1999 году появилась 3dfx Voodoo 3, в которой наконец-то появилось 2D-ядро, а благодаря переходу на более продвинутый техпроцесс удалось засунуть сам GPU и два текстурных юнита в один чип. Кроме того, инженерам 3dfx удалось повысить частоту работы видеоядра с 90МГц до 130+. Наконец, благодаря интеграции всех компонентов в один кристалл, стало возможным сделать бюджетную видеокарту — Velocity 100, которая представляла из себя Voodoo 3 с уменьшенным объёмом видеопамяти с 16МБ до 8, а также одним отключенным текстурным юнитом (который включается обратно твиком в реестре :)). Эта версия стоила ~80$ и стала первой доступной Voodoo «для всех».

STB Velocity 100. Фото моё

STB Velocity 100. Фото моё

Но... было уже поздно. 3dfx Voodoo 3 была популярной за счёт остаточной славы и поддержки играми Glide, но с точки зрения функционала, видеокарты от Nvidia и ATi их давно уже уделывали вчистую. В 1999 году, у Nvidia в GeForce 256 уже появился T&L, кубмапы (возможность реализации полноценных отражений), бамп-маппинг и некоторые другие продвинутые техники. Voodoo 4, вышедшая в 2000 году перед банкротством компании, не смогла спасти ситуацию — она хоть и поддерживала 24х-битный цвет, но отсутствие T&L сильно било по производительности в играх с заметно возросшей полигональностью. По итогу, 3dfx обанкротилась и была выкуплена мелким зеленым стартапом — Nvidia :)

❯ Аппаратная архитектура

Как я уже говорил ранее, видеокарты 3dfx не имели каких-то архитектурных особенностей типа возможности загрузки микрокода в GPU или тайлового рендеринга. На практике это были простейшие Fixed-Function сканлайн-растеризаторы, где внешний вид каждого треугольника задавался набором регистров, и кроме отрисовки примитивов GPU больше ничего не умел. Почти во всех остальных картах того периода архитектура была точно такой-же и функционально Voodoo не так сильно отличался от условного S3 ViRGE или Intel i740, просто инженерам 3dfx удалось выжать максимальную производительность.

Однако на аппаратном уровне, видеокарты 3dfx заметно отличались от современников за счет того, что состояли как минимум из трех чипов:

  1. TMU — тот самый текстурный юнит, о котором я говорил в вводной части статьи. В его задачи входит сэмплинг текстур, при этом он занимается не просто выборкой пикселей из видеопамяти, но и мип-маппингом, фильтрацией, а также перспективной коррекцией. В Voodoo 2 на одной видеокарте может быть сразу 3 TMU — что позволяет рисовать геометрию аж с 3-мя текстурами одновременно за один проход. Чисто технически, TMU тоже является полноценным растеризатором, так что его можно считать «мини-GPU».

    Если игра рисует примитив с мультитекстурированием (например стенку с наложенной текстурой кирпича и пыли) — рендеринг работает параллельно: сначала первый TMU нарисует стенку с кирпичом, затем второй нарисует с пылью — в конце FBI смешает их и получится пыльная кирпичная стена! Без мультитекстурирования, игре пришлось бы сначала нарисовать кирпичную стенку, затем включить дорогой альфа-блендинг в режиме умножения ((SRCCOLOR * DESTCOLOR) + (DESTCOLOR * 0)) и нарисовать эту же стенку с текстурой пыли ещё раз.

    Кроме того, TMU умел в проективные текстуры и всякие трюки с UV-координатами, благодаря чему можно было реализовать проективные попиксельные тени в реальном времени, металлические поверхности за счёт сферических карт отражений (помните отражающиеся машинки в NFS HP?) и некоторые другие фишки.

  2. FBI — сам GPU, выполняющий роль растеризатора и управляющий текстурными юнитами, а также линейным доступом к видеопамяти. Даже у FBI образца 1996 года был весьма богатый функционал: и освещение по Гуро, и попиксельный туман, и дизеринг, и Z-буфер/стенсил-буфер, и даже полноэкранное сглаживание! В общем, было всё необходимое для игр, разве что линии с антиальясингом не поддерживались.

    Но были и минусы — FBI первых версий не поддерживал float'ы и оперировал исключительно целыми числами и fixed-point арифметикой, а ещё у него не было понятия Clip-Space — всё рисовалось исключительно в абсолютных экранных координатах. Но об этом чуть позже.

  3. RAMDAC — чип, выводивший фреймбуфер из видеопамяти на экран. Работало это весьма забавно: когда пользователь использует 2D-окружение — RAMDAC в 3dfx Voodoo отключается и VGA-сигнал с 2D-видеокарты коммутируется напрямую на VGA-разъём в Voodoo. Когда пользователь запускает 3D-игру (а в первых 3dfx Voodoo 3D-режим был эксклюзивным) — FBI переключал линии на свой RAMDAC. Получается что в ПК работало сразу два RAMDAC'а одновременно :)

Не менее интересной была и организация памяти. Дело в том, что все 4/8/16 мегабайт видеопамяти были отдельно поделены между TMU и FBI. Каждому TMU отдельно отводилось по 2-16 мегабайт VRAM, которые использовались только для хранения текстурных данных. У FBI была своя память объёмом в 2-4МБ, которая использовалась для фреймбуфера, Z-буфера и Stencil-буфера. От объёма VRAM для TMU зависело сколько текстур и какого разрешения можно загрузить на текущем уровне в игре, а от объёма памяти для FBI зависело максимальное разрешение изображения и возможность использования техник типа Stencil-зеркал или теней.

Схема из даташита 3dfx Voodoo 2

Схема из даташита 3dfx Voodoo 2

Главной проблемой 3dfx Voodoo был примитивный конвейер, который по большей части ложился на процессор. Для отрисовки каждого треугольника, процессору приходилось:

  1. Посчитать степень освещенности каждого треугольника по алгоритму Гуро и Фонгу. То есть как минимум N ⋅ L.

  2. Перемножить каждую вершину модели на матрицу модели-вида-проекции, чтобы получить позицию треугольника в пространстве экрана — так называемом Clip-Space. Каждую координату нужно было вручную поделить на W-компоненту вершины.

  3. Затем ему нужно было произвести так называемый процесс клиппинга — разбиения наполовину-видимых треугольников, которые пересекают ближнюю плоскость отсечения (или «нос» игрока, если говорить простыми словами). Самый простой пример — это оружие в Quake: если клиппинг не делать, то задняя (невидимая нам) часть пушки просто инвертирует свои координаты и будет отображаться «перевернутой» уходя вдаль, хотя она должна просто скрыться из виду. Это самый тяжелый алгоритм, поскольку требует поиска точки пересечения треугольника с границей экрана и разбиения его на два новых.

  4. Далее ему нужно было преобразовать Clip-Space координаты с плавающей точкой в абсолютные координаты ((((x * 0.5) + 0.5) * width) + (width / 2)). 3dfx Voodoo 2 наконец-то научился в floating-point координаты в Clip-Space, но для совместимости всё равно лучше было использовать «старый» подход.

  5. И только затем пинать его в видеокарту, вручную записывая параметры каждого треугольника в регистры FBI по одному. Помните glBegin/glEnd? Вот это как раз оттуда :)

Для сравнения, в GeForce 256 ни один из этих этапов вообще не нужен был. Геометрию можно загрузить в специальную область в видеопамяти и отправить команду на отрисовку, после чего видеокарта сама всё сделает. Именно поэтому 3dfx Voodoo хорошо себя показывал в старых играх, где сцены были 4000-10000 треугольников, но вот когда игры пошли 30-40 тысяч полигонов... тут уже нагрузка на процессор была слишком высокой.

Между слов...

От схожей проблемы страдали и GPU от Intel. Тот же GMA900 был отнюдь не самым слабым видеочипом, но отсутствие аппаратного вершинного конвейера и установка в бюджетные ноутбуки с слабыми процессорами сделало своё дело...

Аппаратный конвейер в Intel'ах появился только начиная с GMA 500 — и то это на самом деле был PowerVR SGX535 :)

Интересно и то, что в 3dfx Voodoo 2 уже были зачатки 2D-движка в виде аппаратного блиттера, причем с возможностью блиттить как из оперативной памяти ПК, так и видеопамяти, но API для него в Glide я не нашел. Судя по всему, 3dfx просто не успела доделать полноценный VGA-совместимый контроллер в 1998 году, оставив в видеочипе только блиттер.

Схема из даташита 3dfx Voodoo 2.

Схема из даташита 3dfx Voodoo 2.

На самом низком уровне, управление 3dfx Voodoo происходило в основном с помощью замаппленых в память регистров. Драйвер искал PCI-устройство, выделял ему Base Address Register и затем конфигурировал FBI относительно текущего видеорежима. Когда игра хотела нарисовать следующий треугольник, драйвер записывал параметры вершин в соответствующие регистры FBI и TMU (да, регистры, связанные с вершинами у них дублировались) и отправлял команду TRIANGLECMD.

Вот он, D3D11_INPUT_ELEMENT_DESC! Скриншот из даташита 3dfx Voodoo 2

Вот он, D3D11_INPUT_ELEMENT_DESC! Скриншот из даташита 3dfx Voodoo 2

Да, всё было настолько просто. Как я уже говорил, так было не только у 3dfx, но и у S3 (о ViRGE я писал отдельную статью), Intel, SiS, ATi и Nvidia до GeForce 256. Отличался только Rendition Verite, но о нём мы с вами поговорим как-нибудь в другой раз.

❯ Программная архитектура

С точки зрения софта, у 3dfx Voodoo тоже всё было не так однозначно. Конечно основным графическим API был Glide, однако в 1997-1998 году стандартизацию и влияние OpenGL и Direct3D отрицать было глупо. Всё больше и больше игр использовали D3D, поддержку которого 3dfx поспешно добавила в 1997 году. Тут важно отметить то, что в те годы каждая версия Direct3D очень сильно друг от друга отличалась. Direct3D 5 оперировал командными буферами на манер современных видеокарт (Microsoft глядели в воду!), Direct3D7 уже был больше похож на OpenGL/D3D9, и обратной совместимости, как в случае с D3D11/D3D10/D3D9 у них не было — 3dfx приходилось писать новый драйвер под новые версии DirectX.

Ещё про командные буферы

Назывались они Execute-буферами и имели тот же функционал, что и списки в OpenGL. Microsoft надеялась что рано или поздно Execute-буферы можно будет выполнять напрямую на GPU - и угадала примерно к 1999-2000 году.

Самое забавное что сама концепция не прижилась и вплоть до D3D11 в видеокартах не было нормальных буферов команд.

Не путайте командные буферы с стейтблоками - это разные вещи.

Лого 3dfx. Взято с ныне почившего сайта компании

Лого 3dfx. Взято с ныне почившего сайта компании

С OpenGL тоже было всё не так гладко, поскольку в 1996 году его перспективы в играх всё ещё были туманны из-за ориентира на профессиональные рабочие станции. В конце-концов, кому в играх нужен был рендеринг на сервере? Однако игра поколения, Quake, использовала именно это графическое API и 3dfx пришлось сделать небольшой костыль вместо полноценного драйвера — MiniGL.

MiniGL работал поверх нативного графического API (т.е Glide) и предоставлял игре минимально-необходимый для работы набор функций — то есть рисование треугольников/квадов, работу с текстурами, матрицы и... ну, по сути все. Другие игры также могли использовать MiniGL, но у них не было доступа ни к функциям работы с туманом, ни к освещению в реальном времени, ни к мультитекстурированию, ни к Stencil-буферу. Немного позже другие производители видеокарт тоже начали реализовывать свои драйверы MiniGL и это стало своеобразным MiniAPI внутри Quake.

Полноценный нативный ICD-драйвер (так в те годы называли полноценные драйвера OpenGL) для OpenGL вышел только в 1998 году в виде бета-версии... и по сравнению с MiniGL, он был нереально тормозным и глючным! Часть функционала была забагованной, производительность была не ахти и даже в Quake на ICD видеокарта показывала себя хуже, чем с MiniGL. Но в целом, 3dfx за это винить не стоит — в те годы нормальные драйвера для OpenGL были только у Nvidia, S3 и Intel (иронично). Даже у ATi с OpenGL всё было очень плохо...

Поэтому главным секретом успеха 3dfx стало API Glide. Как я и говорил ранее, оно как две капли воды было похоже на упрощенный OpenGL, но отличалось отсутствием математической библиотеки, клиппера геометрии (да, программист был вынужден писать его сам, в отличии от D3D и GL) и... аллокатора текстур! Да, вы все правильно поняли — предполагалось что именно программист будет вручную управлять видеопамятью каждого текстурного юнита и ручками писать логику выделения/освобождения памяти.

С игровой точки зрения, Glide был функционально богаче D3D и OpenGL, и обгонял их на несколько лет вперед. Уже в 1998 году, в Glide была поддержка мультитекстурирования и комбайнеров, хромакея вместо альфа-теста (который требовал дополнительный цветовой компонент и занимал драгоценную видеопамять) и прямого доступа к фреймбуферу. Зато не поддерживались текстуры с разрешением выше 256x256 и соотношением сторон, отличающимся от 1:1 и 2:1...

В остальном, Glide был практически прямым интерфейсом к видеокарте, благодаря чему работал быстро. Но к 2000 году, Glide окончательно устарел концептуально, вместе с архитектурой оригинального 3dfx Voodoo, из-за чего компания и разорилась. ATi и Nvidia оказались шустрее...

❯ Заключение

Вот такой была 3dfx: сначала компания влетела на рынок игровых видеокарт с двух ног, успела стать стандартом ПК-гейминга, но всего через 3 года её архитектура устарела настолько быстро, что в 2000 году её поглотил какой-то там стартап с зеленым логотипом... Увы и ах, остается только надеяться, что инженеры 3dfx приложили руку к таким легендарным видеокартам, как GeForce 3 и GeForce 4! Хотя кто знает, может кто-то из них сейчас разрабатывает RTX 6xxx? :)

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

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

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. <a href="https://pikabu.ru/story/tayna_3dfx_voodoo_izuchaem_arkhitekturu_gpu_iz_90kh_po_vintikam_dlinnopost_pro_zhelezo_14225111?u=https%3A%2F%2Fpikabu.ru%2Fstory%2Fnoutbuk_v_1990e_godyi_4031566%3Futm_source%3Dlinkshare%26utm_medium%3Dsharing&t=%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA&h=47e3f04a044bd34c2939ae07315aacaf2dc2cae1" title="https://pikabu.ru/story/noutbuk_v_1990e_godyi_4031566?utm_source=linkshare&utm_medium=sharing" target="_blank" >Источник</a>

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

После обзоров устройства не продаются, а остаются в моей коллекции. Когда-нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности? :)

Фото Nokia 9300 с сайта <a href="https://pikabu.ru/story/tayna_3dfx_voodoo_izuchaem_arkhitekturu_gpu_iz_90kh_po_vintikam_dlinnopost_pro_zhelezo_14225111?u=http%3A%2F%2Fmobile-review.com%2F&t=mobile-review.com&h=d243eca0e692d21eddecfcc5ee9e485559811208" title="http://mobile-review.com/" target="_blank" rel="nofollow noopener">mobile-review.com</a>

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

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

Что думаете о 3dfx Voodoo?
Всего голосов:
Что думаете о таком формате статей?
Всего голосов:
Показать полностью 19 2
246
TECHNO BROTHER
IT

Как разрабатывают смартфоны и что для этого используют [Длиннопост, про железо]

Вы когда-нибудь хотели узнать, как инженеры разрабатывают смартфоны и что для этого используют? Сегодня об этом я вам расскажу!

Девкит Variscite SD410

Девкит Variscite SD410

Начинается все с выбора аппаратной платформы. Телефоны с нуля ещё с самого начала 2000-х никто не разрабатывает, предпочитая использовать уже готовую платформу - собственной разработки (как Sony Ericsson с платформой DB2xxx в нулевых или Samsung с Exynos в наше время) или сторонней (MediaTek/UniSoc). Платформа представляет из себя специальную отладочную плату, называемую Development Kit, которая включает в себя:

  1. Процессор, память и контроллер питания, чаще всего разведённые на отдельной миниатюрной плате, которая вставляется в основную. Сделано это для возможности быстрой замены вышедшего из строя процессора (как в ПК!). Процессоры, к слову, в таких платах обычно инженерные и у них с завода разблокирован загрузчик на уровне BootROM.

  2. Несколько гребенок, где выведены все нужные сигнальные линии с процессора и контроллера питания. Это нужно как для отладки, так и для возможности "на соплях" подключить модуль в процессе написания драйвера и формирования окончательной схемы. Иногда модули подключают просто Dupont-проводками, как в Arduino 😎

  3. Набор разъемов по типу SATA и PCI-E, при условии что процессор их поддерживает. Сбоку платы располагается разъем для питания, RJ-45 для подключения к сети, COM-порт для отладки через UART, несколько USB и 3.5мм Джек.

  4. Обязательно дисплей и клавиатуру (если это кнопочник). В ранних телефонах дисплей мог быть подключен по SPI/I2C/8080, из за чего экран другого типа приходилось колхозить самому, сейчас же все дисплеи подключаются через MIPI DSI, что позволяет обойтись лишь адаптером на конкретную матрицу.

Референсный смартфон на Ti OMAP. На фоне виднеется Android 1.5.

Референсный смартфон на Ti OMAP. На фоне виднеется Android 1.5.

Вместе с девкитом, инженеры получают референсную прошивку (в наше время обычно AOSP), документацию (раньше она шла на дисках) и схему референсной платы, по образу которой будет создана конечная плата телефона.

Редкий прототип E398 на Linux

Редкий прототип E398 на Linux

Когда необходимый функционал обкатали на девките, в производство пускают прототипы - причем за время производство телефона их может быть сразу несколько ревизий. На прототипах обкатывают схемотехнику (да, забытый где-то в RF-фронтэнде резистор может сломать всю радиочасть телефона), удачность конструкции (в некоторых Siemens'ах 65'ой серии, нажатие на клавиатуру сгибало плату в области процессора и со временем рвала пятаки под ним) и адаптируют под них софт. Ключевое отличие ранних прототипов от релизных устройств - наличие отладочной гребёнки, куда можно подключить отладчик, а также потыкать осциллографом или лог. анализатором.

Если прототип показывает жизнеспособность, то его пускают в серию, при этом прообразы финального устройства отправляют в утилизацию. Чаще всего это шреддер, из за чего многие прототипные устройства повреждены. Но бывает что сотрудники утаскивают целые и порой даже идеальные телефоны - как в случае с растащенного R&D центра Motorola в РФ, откуда утащили редчайший прототип E398 на Linux :)

Подытожив, можно сделать вывод что телефон на самом деле разрабатывает производитель процессора. Именно MediaTek, Qualcomm, Unisoc и HiSilicon проектируют как аппаратную часть половины всех современных телефонов, так и пишут программную - портируют Android и Linux, пишут прошивку для модема и даже алгоритмы для DSP камеры. Условные Poco, Tecno и Xiaomi в большинстве случаев лишь разрабатывают корпуса, выбирают какие компоненты установить и портируют на телефоны свою оболочку...

А что вы думаете о процессе разработки телефонов? Было интересно почитать, или не очень? Каким смартфоном пользуетесь на повседнев? Пишите свое мнение в комментариях!

Что думаете?
Всего голосов:
Показать полностью 7 1
80
TECHNO BROTHER
IT

Этот чип от Samsung сломал сотни тысяч смартфонов в 2010-х... и возможно даже ваш! [Длиннопост, про железо]

В 2010 году, производители смартфонов активно переходили с классической NAND-памяти на eMMC. Концептуально, eMMC была обычной MicroSD-флэшкой: все тот же протокол, все та же шина (только теперь она могла быть 8-битной), изменения в основном касались работы в качестве загрузочного устройства и хранения шифрованных данных для привязки к конкретному процессору (RPMB). Главным отличием от обычной NAND было то, что теперь коррекцией ошибок и переназначением бэдблоков занимался не драйвер NAND в ОС, а контроллер в самой eMMC - и он же решал когда микросхеме памяти пора "на покой".

Одним из основных производителей чипов eMMC была Samsung - и они считались самыми ненадежными в начале 2010-х. Дело в том, что их контроллер eMMC вел внутри флэшки некоторое подобие S.M.A.R.T. в жёстких дисках, и мониторил износ ячеек памяти. По логике инженеров, если износ превышал допустимую норму - флэшка должна была уйти в режим "только для чтения" и сохранить данные для дальнейшего вычитывания на программаторе. Когда флэшка падала в этот режим - смартфон больше не загружался и бесконечно висел на логотипе. Но в контроллере был баг и новые флэшки практически без износа умудрялись ломаться через полгода-год использования смартфона, уводя их в вечную "загрузку".

Секрет раскрылся когда разработчики программатора Z3x получили доступ к прошивкам контроллера и документации на сервисный режим Samsung'овских чипов памяти. Выяснилось, что после прошивки чипов, они оживали и работали как ни в чем не бывало. Кроме того, прошивка позволяла стереть блок RPMB и использовать флэшку из донора для ремонта другого смартфона.

Хотя, конечно, уход в режим "только для чтения" был лучшим исходом. Иногда флэшки Samsung полностью переставали выходить на связь с процессором - и вот тогда все данные в миг терялись. От косяков инженеров Samsung пострадали тысячи устройств, включая Samsung Galaxy S3, Galaxy S4, Galaxy S4 Mini, Note 2, Galaxy Tab и десятки, если не сотни, моделей других брендов. И если S3/S4 ещё можно найти живыми (не на всех были дефектные флэшки), то вот S4 Zoom сломались практически все, без исключения. Доходило до абсурда - Samsung ставила микросхемы памяти рядом с процессором на специальный герметик - компаунд, из-за чего мастера просто спиливали нерабочий чип памяти дремелем😁

Недавно я купил себе уникальный игровой смартфон из 2013'ого с тем самым чипом от Samsung. Аппарат не загружался и не прошивался, рапортуя об ошибках записи eMMC. Я сдул старый чип памяти, нашел в доноре идентичный (мог поставить Hynix, но у него было меньше ОЗУ), отреболлил, припаял и прошил смартфон. Теперь у меня есть полностью рабочий JXD S5800... Эх, как же хорошо было, когда не было привязок флэшки к процессору 🤗

После 2015, Samsung исправились и теперь у них одни из самых надёжных микросхем памяти, а их чипы все также массово используются в современных смартфонах.

А как вы считаете, повальный отказ eMMC в 2012 это чистая случайность, инженерная оплошность или намеренно заложенный срок службы? Ремонтировали ли вы смартфон с "отвалом" памяти? Был ли у вас Galaxy S3/S4? Пишите свое мнение в комментариях!

Почему отказывали чипы Samsung?
Всего голосов:
Показать полностью 7 1
91
TECHNO BROTHER
Игры

Эта консоль положила начало Anbernic и R36s... [Длиннопост, про железо]

На фото - Dingoo A320, ретро-консоль вышедшая в 2009 году по невероятно низкой цене в 99$ или около 3.000 рублей по тому курсу. Консоль официально продавалась в Ашане и позиционировалась как ультимативный комбайн, совмещающий функционал игровой консоли, плеера, FM-приемника и даже электронной книги!

Отличительной особенностью A320'ой было мощное, для своего ценового сегмента, железо. Консоль работала на базе уникального процессора Ingenic JZ4732, который был построен на базе одного MIPS-ядра с кастомной архитектурой XBurst, способного работать на частоте в ~336МГц. К слову PSP тоже работала на процессоре с архитектурой MIPS, однако там использовалось более старое ядро R4000. В консоли было 32МБ SDRAM-памяти (снова как в PSP, правда только "фатке"), 4ГБ постоянной флэш-памяти, а в качестве дисплея использовалась неплохая TFT-матрица с диагональю 2.8" и разрешением в 240x320, точь в точь как на китайских подделках Nokia TV E71. По чистой производительности, A320 ближе всего к поздним Pentium II.

Конечно A320'ая была не первым таким мультимедийным комбайном. Примерно в 2006 году, небольшие китайские фабрики начали выпускать MP3-плееры с встроенными эмуляторами NES, а одним из первых комбайнов был QUMO GameBox LE - консоль в формате слайдера (который потом Sony успешно позаимствовала в PSP Go), где помимо Денди также была Сега и SNES. Но у консоли от Dingoo была своя фишка: во первых, для A320 был выпущен свободный SDK, который позволял писать свои нативные игры и программы для консоли, что позволило расширить набор эмуляторов за счёт энтузиастов. А во вторых, Dingoo сама выпускала игры и причем очень даже неплохие - например легендарный "мобильный" клон Resident Evil под названием "7 Days Salvation" как раз дело рук Dingoo Games.

Но главной фишкой A320'ой стал порт Linux... Дело в том, что производитель процессора, компания Ingenic, не скрывала от сообщества документацию на свои процессоры и референсные платы, их можно было свободно скачать с FTP-сервера компании. В 2010 году, испанский инженер заметил что плата консоли разведена на основе отладочной платы Caetus, для которой был готовый порт Linux. Инженер смог сначала запустить ядро без изображения и ввода, затем написал драйвер дисплея и кнопок, ну а далее появился дистрибутив Dingux...

И вот тут то маленькая консоль превратилась в почти полноценный компьютер с многозадачной операционной системой. К консоли прикручивали интернет через UART, портировали эмуляторы Спектрума, Commodore 64 и других ретро-компьютеров, и даже запускали полноценный DOS. Немного позже компания Ben выпустила миниатюрный, но не бесполезный ноутбук Nanonote на базе все той же аппаратной платформы.

А потом уже пошло-поехало. Сначала появился Ritmix RZX-50, затем консоли на Android с процессорами Amlogic и Rockchip, а ближе к 2020 году снова случился бум Linux ретро-консолей. Так что Dingoo A320 - прямой дедушка вашего Anbernic RG350, R36S/R36H и даже TrimUI Smart Pro!

Что думаете о "динге"? Была у вас такая? Перепрошивали ее на Linux? Считаете ли вы ее чудом инженерной мысли, учитывая цену на момент 2009 года?

Что думаете о Dingoo A320?
Всего голосов:
Показать полностью 7 1
512
TECHNO BROTHER
История

Подробная история развития 2D-графики в PC [Длиннопост, про железо]

Сейчас в сети можно найти много статей и видеороликов о становлении 3D-графики в обычных пользовательских ПК. Даже я в своем блоге веду соответствующую рубрику, где мы с вами не только вспоминаем историю знаковых видеокарт из 90-х, но и во всех подробностях изучаем их архитектуру, возможности и графические API. Однако всё это время мы с вами обходили тему 2D-ускорителей на ПК, которые тоже очень сильно эволюционировали и изменились со времен самой первой видеокарты в IBM PC.

Если вам интересно узнать о том, зачем видеокарте нужен был свой собственный BIOS, как работали цветные режимы в первых видеокартах и почему объём VRAM в те годы решал больше, чем сейчас — жду вас под катом!

❯ Часть 1. Оригинальный IBM PC

Оригинальный IBM PC появился в далёком 1981 году и стал основоположником для всех современных персональных компьютеров. Десятки лет наследие PC кочевало из одного поколения компьютеров в другое, а аппаратная платформа какого-нибудь ноутбука на Intel Core 2 Duo была почти полностью обратно-совместима с оригинальным ПК — вплоть до того, что процессор мог почти нативно исполнять 16-битный код, а BIOS и первичный загрузчик операционной системы могли исполняться только в реальном режиме.

Фото из Википедии.

Фото из Википедии.

Дело в том, что оригинальный IBM PC был достаточно модульным и собран из целой солянки компонентов. Это сейчас мы привыкли к тому, что в процессоре есть встроенный контроллер прерываний, DMA, таймер, контроллер памяти и графическое ядро. В те годы за таймер отвечал отдельный чип Intel i8254, роль математического сопроцессора выполнял i8087, и даже DMA-контроллер был внешним чипом под маркировкой i8257. При разработке следующих поколений PC приходилось сохранять обратную совместимость с прошлыми моделями, в том числе за счёт использования всё тех же чипов или их аналогов с идентичной логикой. Благодаря популярности IBM PC и доступности микросхем логики Intel, сторонние производители тоже начали делать свои собственные аналоги IBM PC, которые назывались «клонами» и могли комплектоваться другими, более продвинутыми модулями.

История, к слову, почти как с Dendy и NES — в 90-х компания UMC умудрилась сначала скопировать процессор и PPU, а затем полностью засунуть всю консоль в единую систему на кристалле. С x86 было очень похоже — компания Chips разработала первый чипсет 82c206 в 1986'ом году, что позволило делать клоны IBM PC уже без оригинальных чипов от Intel и при этом с значительно более высокой степенью интеграции. В 1997 году, Cyrix представила x86-процессор MediaGX, который интегрировал в себе контроллер памяти и 2D-ускоритель, что даёт право называть его прямым предком современных APU.

Интересно и то, что аналоги многих компонентов системной логики производились в СССР — например, тот же 8257.

Плата оригинального IBM PC. Несмотря на обилие компонентов (в основном это память), плата куда проще любого современного ПК или смартфона. Фото с Википедии.

Плата оригинального IBM PC. Несмотря на обилие компонентов (в основном это память), плата куда проще любого современного ПК или смартфона. Фото с Википедии.

Когда встал вопрос графики, оригинальный IBM PC предлагал целых две видеокарты (или в терминологии тех лет — «видеоадаптера») — монохромный MDA и цветной CGA. MDA был очень примитивным: он не только выводил картинку всего лишь в двух цветах, но ещё и не поддерживал графические режимы. По сути, это был обычный знакогенератор с несколькими текстовыми режимами и поддержкой примитивного аппаратного скроллинга. При этом никаких кастомных ASIC'ов там не было: видеокарта была собрана на базе микросхемы MC6845 — условно говоря, это таймер, который формирует сигнал на той же частоте, что пиксель клок текущего видеорежима, а также управляет выборкой пикселей из памяти видеокарты — т. е. фреймбуфера. Чип был очень популярным и использовался во многих других компьютерах, помимо IBM PC.

Принцип работы видеокарт на MC6845

Концептуально MC6845 был контроллером CRTC — он формировал так называемый пиксельклок и сигналы HSYNC/VSYNC. Внутри были регистры, которые задавали тайминги пиксельклока, прямого и обратного хода луча, а также смещение фреймбуфера в памяти. При этом сам MC6845 на дисплей ничего не выводит, этим занимается отдельная логика — в случае MDA, это знакогенератор, который рисует знаки из CHRROM.

Общение с CGA и EGA происходило посредством портов 0x3B4 и 0x3B5, куда BIOS оригинального IBM PC при старте записывал референсные тайминги, но при желании программист мог общаться с видеокартой напрямую.

Фото с сайта computinghistory

Фото с сайта computinghistory

Текстовые режимы по своей натуре были очень простыми: процессор лишь записывал номера символов и атрибуты по адресу 0xB0000 (0xB8000 в CGA и выше), после чего видеокарта сама занималась выводом текста. Никакой нагрузки на процессор не было. CGA же был собран на базе всё того же MC6845, однако помимо текстовых режимов предлагал ещё и графические, а также умел выводить до 16 цветов одновременно. При этом интересен формат организации пикселей: по сути, каждая компонента цвета однобитная — то есть зеленый, красный и синий либо включены, либо выключены, что при смешивании позволяло получать дополнительные цвета, как на физической палитре.

Фото с Википедии

Фото с Википедии

Из графических режимов, CGA поддерживала такие разрешения, как 160x100/160x200 (полная 16-цветная графика, разрешение почти в два раза ниже, чем в NES), 320x200 (самый популярный, однако усекал 16 цветов до 8-и) и 640x200 — почти как 4K в наше время, но только монохромный. В отличие от игровых консолей, в CGA не было ни аппаратных спрайтов, ни блиттера — поэтому процессор вручную занимался отрисовкой каждого кадра, и именно поэтому реализация аппаратного скроллинга в играх была такой сложной.

Commander Keen — одна из тех игр, где пришлось идти на ухищрения со скроллингом ради производительности

Commander Keen — одна из тех игр, где пришлось идти на ухищрения со скроллингом ради производительности

Отдельного упоминания стоит видеокарта Hercules, появившаяся в 1982 году. Как и MDA, она была монохромной, однако поддерживала графические режимы (причём максимальным был 720x348 — как 8K в наше время) и несмотря на полную несовместимость с CGA, смогла стать неким стандартом. В 1984'ом появился EGA (Enhanced Graphics Adapter), который хоть и мог выводить всего 16 палитровых цветов в каждом видеорежиме, но теперь цвета в палитре можно было изменять — и впервые каждой компоненте цвета отводилось аж по 2 бита (что позволяло получить 4 тона для каждого базового цвета - красный, зеленый и синий). И вот тут была загвоздка: помимо новых цветовых режимов, EGA также поддерживал огромное, по тем временам, разрешение в 640x350 — которое просто не влезало в 64-килобайтное адресное окно процессора. Поэтому был придуман интересный хак:

Каждый пиксель состоит из 4-х бит, которые формируют индекс в цветовой палитре, в сумме это 112КБ для видеорежима 640x350. Чтобы уместится в 64-килобайтное окно между процессором и видеопамятью, инженеры IBM решили использовать концепцию «плоскостей»: программист сначала пишет в видеокарту маску того номера бита (0b0001, 0b0010 и т.д.), который нужно сейчас записать, затем записывает нужный цвет по адресу 0xA0000, далее переключает маску на следующий бит и так пока не запишем все 4 бита.

Помимо этого, EGA стала первой видеокартой со своим собственным BIOS'ом. Дело в том, что для работы с видеокартой в IBM PC изначально было отведено специальное API — прерывание 0x10. Концептуально это был специальный драйвер, к которому обращался как сам BIOS, так и DOS с прикладными программами. Во времена CGA/MDA, 0x10 был реализован в BIOS самого компьютера (из-за использования одного контроллера — MC6845), однако с появлением EGA, реализация 0x10 переехала в ROM видеокарты и стала называться Video BIOS. При включении компьютера, основной BIOS передаёт управление VBIOS видеокарты, который регистрирует обработчик 0x10 и проводит первичную инициализацию, причем точно такой же подход использовался для первых сетевых видеокарт и реализации NetBIOS. Назывался этот подход Option ROM и был доступен для любой ISA-карты расширения. Такой вот Plug'n'Play из 80-х.

Важно понимать, что Option ROM исполнялся именно центральным процессором с максимальными привилегиями, а не видеокартой. Поэтому в VBIOS теоретически можно загрузить вирусы и другую бяку.

Интересно и то, что в EGA появилась возможность загрузки кастомных шрифтов. До этого, шрифты (обычно латинские) были жестко прошиты в ROM видеокарты и для локализации необходимо было физически менять чип с CHRROM. EGA же позволил переназначить ROM знакогенератора на RAM и таким образом реализовать поддержку кодовых страниц.

❯ Часть 2. VGA

В 1987'ом появилась видеокарта, которая изменила всё и стала новым стандартом — VGA. Палитры в VGA уже были 18-битными, по 6 бит на каждую компоненту цвета, что позволяло получить уже не 64 цвета, как в EGA, а целых 262144. Помимо этого, VGA научился работать в огромном, по меркам тех лет, видеорежиме 640x480 при 16 цветах одновременно, а в видеорежиме 320x200 можно было использовать уже 256 цветов, что при грамотном квантовании позволяло смотреть цветные фотографии с почти реальной цветопередачей.

Фото с Википедии.

Фото с Википедии.

Главным отличием VGA от EGA был переход на аналоговый интерфейс. Дело в том, что MDA/CGA/EGA подключались к монитору посредством цифровой шины — например в разъёме EGA присутствовали сигнальные линии R1/R2, G1/G2 и B1/B2, где каждый отвечал за свой бит в текущем выводимом пикселе. В VGA же на физическом уровне цвет пикселя стал аналоговым и по сути, видеокарта стала простым RAMDAC'ом. Сделано это было для того, чтобы не менять разъём на мониторах при появлении новых цветовых режимов и не тянуть полноценную 24х-битную параллельную шину.

Что такое RAMDAC?

RAMDAC — специальный вид ЦАП'а, который читает пиксели из фреймбуфера и преобразует их в аналоговый сигнал. Например, у нас есть пиксель представленный тремя 8-битными числами, где каждая компонента цвета может иметь интенсивность от 0 до 255:

128 0 128 — это пурпурный цвет

В VGA логические уровни имеют пиковое напряжение в 0.7В, поэтому формулу преобразования пикселя для ЦАП'а можно представить так:

color / 255 * 0.7

То есть для 128 0 128, на выходе сигнал будет иметь напряжение 0.35В 0В 0.35В для каждой компоненты. Именно от качества RAMDAC зависела четкость и цветность картинки на мониторе, а от его частоты зависело максимальное разрешение!

В 1989 году, компания NEC создала организацию VESA, которая начала продвигать дальнейшее развитие VGA под названием SuperVGA. SVGA наконец стандартизировал VGA-мониторы (и тот самый синий разъём), добавил поддержку более высоких разрешений (вплоть до 800x600 при 256 цветах) и дополнил BIOS видеокарты новым API — VBE. По сути, VBE был расширением функционала знакомого нам прерывания 0x10, однако добавлял новые функции и, что самое главное — видеорежимы! Уже в 1991 году, VBE 1.2 поддерживал 1280x1024 с аж 16млн цветов! Это был прорыв... ну, если у вас видеопамяти хватало, конечно :)

S3 805. Фото с Википедии.

S3 805. Фото с Википедии.

Но вот незадача: VGA, несмотря на все свои преимущества, всё ещё не мог аппаратно ускорять отрисовку графики. Ни отрисовки линий, ни примитивов, ни даже базового блиттинга обычные VGA/SVGA-видеокарты чаще всего не умели, из-за чего вся нагрузка ложилась на и без того загруженный процессор. Например реализация платформера с параллакс-фоном и большим количеством тайлов уже была проблемой и если просто «в лоб» перерисовывать весь кадр каждый раз заново, то игра заметно подтормаживала. Однако у VGA/CGA/EGA была одна очень интересная фича — возможность задавать смещение фреймбуфера в видеопамяти, что позволяло «бесплатно» скроллить картинку по вертикали и горизонтали. Джон Кармак в игре Commander Keen воспользовался этой особенностью для того, чтобы рисовать кусочки уровня «за экраном», затем по мере движения персонажа скроллить их путем записи смещения в регистр SAR и когда камера доходила до границы — просто смещал фреймбуфер влево и перерисовывал не весь экран, а только один-два вертикальных столбца.

Кроме того, видеочипы упирались в низкую производительность 16-битной шины ISA, которая работала на частоте всего в 8МГц и достигала производительности в 1-2МБ/с. Для решения этой проблемы, VESA даже разработали расширение ISA под названием VLB, которое подключалось напрямую в 32х-битную адресную шину процессора, в обход контроллера ISA. Это позволило поднять скорость шины до 80МБ/с и значительно ускорить обмен данных с процессором.

❯ Часть 3. DirectDraw и GDI

Несмотря на то, что частота работы и производительность процессоров росла, программная отрисовка графики всё ещё оставалась одной из самых тяжелых операций. Даже для простейшей операции блиттинга (отрисовки изображения) частично прозрачного изображения, процессору приходилось итерироваться по каждому пикселю, проверять его цвет и если он отличался от ColorKey'я — то копировать его на экран. Для спрайтов 8x8 и 16x16 это не было особой проблемой, но когда разрешения подросли до 640x480, а в играх начали применять графику 32x32 или даже 64x64 в паре с параллакс фонами — здесь уже процессору становилось несладко. А уж если дело доходило до полупрозрачных изображений или аффинных трансформаций (поворот, растягивание) — то тут уже напрягался и без того небыстрый FPU.

Age of Empires. Скриншот с сайта игры.

Age of Empires. Скриншот с сайта игры.

Решение появилось ещё в 1984 году, на видеокарте IBM PGC, где была добавлена операция BitBLT для аппаратного блиттинга. Но был один нюанс — это профессиональная видеокарта ценой в 2.995$ на момент выхода, предназначенная специальная для CAD, ни о каких играх тут и речи ни шло. Причем IBM не стали делать отдельный ASIC для аппаратного ускорения графики, а поставили еще один процессор Intel 8088 со своей оперативной памятью. Таким образом, PGC можно считать первой программируемой видеокартой с условным подобием шейдеров.

IBM PGC, выполненная как бутерброд из трех плат. Фото с Википедии.

IBM PGC, выполненная как бутерброд из трех плат. Фото с Википедии.

В 1991 году, операционная система Windows становилась всё более популярной благодаря наличию многозадачности, хорошей совместимостью, удобному режиму выполнения DOS-программ и простоте разработки нового софта для Win16/Win32. Графическая подсистема Windows состояла главным образом из подсистемы GDI (которая практически в неизменном виде существует даже в Windows 11), которая управляла отрисовкой графики как на монитор, так и на принтеры. Microsoft сразу заложила возможность реализации аппаратного ускорения отрисовки за счёт введения концепции DIB и DDB.

Windows 3.11. Скриншот из Википедии.

Windows 3.11. Скриншот из Википедии.

И в 1991 году начали появляться первые GUI-акселлераторы, которые не только поддерживали аппаратное ускорение блиттинга, но и линий, прямоугольников и даже иногда других примитивов. Самым первым таким был S3 911 и он очень серьезно разгружал процессор при отрисовке как интерфейса, так и игр. Впервые окошки при перетаскивании не подтормаживали, а игры могли особо не заморачиваться с оптимизацией скроллинга и каждый кадр полностью перерисовывать весь экран.

Видеокарта Trident TGUI. Фото из Википедии.

Видеокарта Trident TGUI. Фото из Википедии.

В последующие годы случился бум GUI-акселdfлераторов и разные компании начали выходить на рынок видеокарт. Второй компанией, выпустившей GUI-акселлератор была легендарная ATi с видеочипом Mach32 (прапрапрадед Radeon XT :)). Особенно ценились видеокарты S3 и Oak за доступную цену, Tseng labs и Matrox за высокое качество цветопередачи, а также NeoMagic в ноутбуках за безупречную производительность и интеграцию VRAM.

В 1995 году появился DDraw, который был предназначен специально для игр и был частично совместим с видеокартами для GDI. Основной фишкой DDraw была возможность перевода видеокарты в эксклюзивный видеорежим (позволяло использовать почти всю VRAM и рисовать картинку в обход оконной системы, что было заметно быстрее), блиттинг с различными операциями, а также почти прямой доступ к видеопамяти. Почти все уважающие себя видеокарты в середине-конце 90-х поддерживали DirectDraw, который активно использовался для игр вплоть до начала 2000-х годов.

Схема из документации Microsoft.

Схема из документации Microsoft.

А в 2000 году нужда в 2D-видеокартах отпала: 3D видеокарты итак поддерживали ускорение GDI/DDraw, а поскольку сами 2D-игры стали сложнее и в них начала появляться полупрозрачность, освещение, а также аффинные трансформации — двухмерную графику начали рисовать через трехмерные API (Direct3D/OpenGL), представляя 2D-изображения как плоские прямоугольники, которые всегда смотрят в камеру. Таким образом, 2D стал частным случаем 3D и по сей день остаётся таковым — весь интерфейс в вашем смартфоне рисуется именно 3D-ускорителем вашего GPU!

❯ Заключение

Вот такой была история 2D-видеокарт на ПК. Как мы с вами видим, они прошли долгий путь от примитивных знакогенераторов и простейших цветных адаптеров, до сложных ASIC'ов с аппаратным ускорением 2D. Ну а в наше время 2D стало частным случаем 3D...

В общем я подумываю на досуге реализовать интересный проект: самодостаточная игра-ОС, которую можно записать на дискетку и запустить как обычную операционку. В «движок» будет заложен драйвер для работы с дискетками, видеокартой, звуком и даже щедуллер с многозадачностью! Игру мы будем тестировать на какой-нибудь 286'ой или 386'ой машине, если такую удастся найти. Что думаете, хотели бы почитать о таком проекте?

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

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

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

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

После обзоров устройства не продаются, а остаются в моей коллекции. Когда-нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности? :)

Фото Nokia 9300 с сайта <!--noindex--><a href="https://pikabu.ru/story/podrobnaya_istoriya_razvitiya_2dgrafiki_v_pc_dlinnopost_pro_zhelezo_14204740?u=http%3A%2F%2Fmobile-review.com&t=mobile-review.com&h=1fde8ca1c191d4188ef05046460bd9ea1105cc5c" title="http://mobile-review.com" target="_blank" rel="nofollow noopener">mobile-review.com</a><!--/noindex-->

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

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

Что думаете о статье?
Всего голосов:
Что думаете о проекте с игрой под 286'ой?
Всего голосов:
Показать полностью 16 2
410
TECHNO BROTHER
IT

Видели ли вы когда-нибудь планшеты со съёмным процессором? Да причем ещё и в слоте DDR2? Нет? А они были!

В моей коллекции есть крайне необычный планшет 2010 года, который внешне напоминает iPad. На практике, это очень дешёвый девайс, который на релизе стоил около 100$ и предлагал практически весь функционал полноценного планшета: полноценный веб, прослушивание музыки, просмотр видео и даже какие-никакие игры. В качестве операционной системы использовалась Android 1.6 - эту версию скорее всего никто из читателей не застал!

По железу все тоже было весьма неплохо... ну, за свою цену конечно. Дисплей был TFT-TN 7" 800x480 от автомобильного навигатора, тачскрин по классике резистивный, с стеклянной подложкой, оперативной памяти было всего 128МБ типа DDR1 (этого хватало впритык для работы первых версий Android), постоянной - 4ГБ NAND, а в качестве сердца устройства использовался процессор WonderMedia WM8505.

И вот тут то самое интересное: внутри планшета процессор вставлялся в ноутбучный слот DDR2, почти как слотовые Pentium II в ретро-компьютерах. Звучит как что-то диковинное? На самом деле все предельно просто: на процессорной плате расположился не только сам чипсет, но и оперативная память, SPI-флэшка с загрузчиком ("биосом"), а также кварцевые резонаторы и обвязка типа резисторов с конденсаторами.

По сути, это уже полноценный компьютер на небольшой плате - такой подход называется SoM (System on Module) и повсеместно используется в промышленном оборудовании, чтобы при необходимости можно было быстро заменить или проапгрейдить вышедший из строя модуль. Поскольку такие процессорные платы стоили копейки, их часто можно было встретить на первых китайских планшетах и ARM-ноутбуках.

На остальной плате было разведено питание (чаще всего это 2S чарджер + несколько понижающих DC-DC для формирования питания процессора и памяти + LDO'шки для всякой мелочи), Ethernet-контроллер VIA (WonderMedia - дочерняя компания VIA) в паре с PHY-интерфейсом, аудиокодек и иногда USB-хаб. За сеть отвечал встроенный RJ-45 (да, в планшет реально можно было вставить Ethernet!) и Wi-Fi модуль, подключенный к USB.

Вот таким был планшет с процессором в DDR2-слоте. Что думаете о нем? Пишите свое мнение в комментариях, постараюсь всем ответить ;)

Показать полностью 6
748
TECHNO BROTHER
IT

Тайна Siemens C65: как моддеры превращали обычный кнопочник в смартфон и почему его железо мощнее, чем в Symbian-смартфонах Nokia

Телефоны Siemens получили статус культовых в наших краях. Немецкие аппараты славились неплохим качеством сборки, надёжностью, симпатичным дизайном, а также инновациями - ведь первый слайдер и телефон с цветным дисплеем сделала именно Siemens.

Первые телефоны Siemens были построены на базе собственной платформы Infineon E-Gold. Помимо модемной части и контроллера питания, своим там также было процессорное ядро C166s, работавшее на частоте аж в 52МГц и заметно обгонявшее по производительности популярный в те годы ARM7TDMI. К слову это же ядро по сей день используется в ЭБУ автомобилей LADA, так что у вашей Гранты и C65 есть кое-что общее 🤗

E-Gold с различными модификациями использовался с ~1998 по 2009-2010 год, однако последним флагманским телефоном на этой платформе был Siemens S55/M55. В 2004'ом году, Infineon представила новую платформу под названием S-Gold, которая была построена на базе самого современного и мощного ядра на момент выхода - ARM926EJ-S. Пока большинство других кнопочников (Motorola, Samsung, Nokia) работало на базе устаревшего ARM7TDMI с частотой 28-54МГц, 926'ой в стоке работал на частоте 104МГц и без особых проблем гнался до 208МГц, а в некоторых случаях мог работать и на частоте в 416МГц...

Конечно в те годы ядра ARM9 уже активно освоили коммуникаторы и смартфоны, и устройства от Nokia не исключение. Nokia 6600, 7610, 3650, N-Gage и N-Gage QD - все эти аппараты использовали процессор WD2 от Texas Instruments с ядром ARM920T, работавшем на частоте 104МГц. При этом процессор C65'ого уже в стоке работал на той же самой частоте, а при установке специального патча гнался аж в два раза - до 208МГц, что делало бюджетный кнопочник мощнее полноценных смартфонов-современников, не говоря уже об обычных кнопочниках.

Читатель может возразить: мол если Сименсы были такими мощными, почему они так сильно лагали по сравнению с Symbian'ами? Ответ был прост: кривые руки тех инженеров, которые разрабатывали сам телефон и писали прошивку. Например несмотря на наличие интерфейса MMC в процессоре телефона, SD-карту зачем-то подключили через внешний чип Epson (выполнявший роль контроллера камеры), который ещё и к карточке был подключен через однобитный интерфейс SPI, из за чего любая работа с флэшкой была очень медленной. Ещё одна больная тема - это поддержка MP3: в 71'ой серии ее реализовали программно (как и нужно), в CX75 поставили внешний аппаратный декодер с отвратительным качеством, а в 65'ой серии вообще поддержки MP3 не было. По программной части у прошивки были проблемы с оптимизацией, из-за чего мы часто видели надпись «пожалуйста, подождите» (и она тоже отключается патчем, заметно ускоряя телефон), а также в телефонах была относительно медленная Java-машина.

Конечно энтузиастов и моддеров всея СНГ это не устраивало и они захотели прокачать свои телефоны по полной. Сначала разблокировали загрузчик, разгадав алгоритм генерации спец. ключа. Затем начали писать первые патчи по типу отключения кнопки запуска браузера и разблокировки всех дисков в проводнике, ну а венцом моддинг сцены стало появление библиотеки функций и загрузчика ELF-программ - «эльфятника», который позволил писать кроссплатформенные нативные программы на C вместо Java.

По своей сути, ОС во всех телефонах тех лет были многозадачными. Эльфятник позволял запускать параллельно несколько программ и переключаться между ними с помощью диспетчера задач - то есть простой кнопочник превращался в настоящий смартфон. И софт этим активно пользовался: был клиент аськи NatICQ с обновлением сообщений в фоне (да, почти как пуши!), клиент электронной почты, а также различные виджеты для рабочего стола. Были написаны новые игры, портированы эмуляторы ретро-консолей (да, на C65 можно было запустить эмулятор Денди) и игра... которую вы все знаете (и если знаете какая - то напишите в комментариях!). Софта было просто куча.

Казалось бы, Сименсы после патчей уже были идеальными смартфонами... да вот только MP3 не поддерживали. Студенту Ilya_ZX это надоело, он изучил как работает аудиотракт в прошивке телефона и написал свой собственный MP3-плеер - который в том числе работал и на C65. Мы кстати даже спорили с блогером MaddyMURK на этот счёт и я спор выиграл😎

Вот так группа энтузиастов и хакеров превращала культовые кнопочники в почти настоящие смартфоны. И я уверен, среди моих читателей есть те, кто лично патчил своего «Семёна»!

А что вы думаете по поводу такого моддинга и хаккинга? Был ли у вас патченый Сименс? Пишите свое мнение в комментариях 😏

Что думаете о C65?
Всего голосов:
Показать полностью 7 1 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества