Архитектура Dreamcast

Практический анализ от Rodrigo Copetti

Автор перевода: AbsurdlySuspicious

Если вы используете инструменты специальных возможностей, электронные книги или устаревшие браузеры, то переключитесь на "классическую" версию.




Опорные изображения

Модель

Image
Dreamcast
Выпущен 29/11/1998 в Японии, 09/09/1999 в Америке и 14/10/1999 в Европе

Материнская плата

Image
Материнская плата
Ревизия 'VA1'
Официальная документация указывает что система включает в себя 128КБ флеш-памяти, однако на этой материнской плате вместо этого по неизвестной причине находится EEPROM чип на 256КБ
Батарейка и порты контроллеров находятся на дочерней плате под названием 'Front panel' ('Передняя панель')
Image
Vатеринская плата с помеченными важными частями

Диаграмма

Image
Диаграмма основной архитектуры
Для важных шин данных отмечены их ширина и скорость.

Введение

Sega Dreamcast представил множество новых возможностей, по сравнению со своим предшетственником (Saturn) чтобы привлечь к себе разработчиков и обычных игроков. Хоть это и была последняя попытка Sega завоевать консольный рынок, некоторые технологии, впервые появившиеся в Dreamcast, были развиты в последующих устройствах уже других компаний.


Процессор

Неудивительно, что Sega снова выбрала Hitachi для разработки своего CPU. Если вы читали предыдущую статью о Sega Saturn, то узрите! Я представляю вам следующее поколение процессоров SH: SH-4 работающем на космических 200 МГц. Итак, что в нём интересного?

Дополнительная работа

Основными задачами процессора игровой консоли обычно является обработка логики игры, просчитывание ИИ противников и снабжение GPU инструкциями. В Dreamcast, SH-4 также принимает участие в большей части графического конвейера обрабатывая геометрические данные, например, вычисляя перспективные трансформации. Поэтому он включает в себя 128-битный SIMD (одиночный поток команд, множественный поток данных, ОКМД), который позволяет ускорять векторные операции.

Улучшение доступа к памяти

Процессор включает в себя Memory Management Unit (Блок Управления Памятью) или ‘MMU’ для виртуальной адресации, это полезно, так как ширина физического пространства адреса памяти составляет 29 бит. А благодаря четырём буферам ассоциативной трансляции (TLB) программисты могут использовать 32-битные адреса без снижения производительности.

Поскольку для адресации необходимы только 29 бит, три оставшиеся бита управляют защитой памяти, изменяя карту распределения памяти (memory map) и включая обход кэша соответственно.

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

Без UMA, но…

Несмотря на то, что эта система не основана на архитектуре единой памяти (Unified Memory Architecture), как делает её широко известный конкурент, она тем не менее делегирует ввод-вывод графическому чипу (GPU). Это означает что если процессору необходимо извлечь что-либо за пределами своей выделенной памяти или последовательного интерфейса (serial interface), он должен сделать запрос графическому чипу и, если требуется, подождать своей очереди.

Особые запросы

Процессор так же поддерживает уникальный функционал под названием Parallel I/O (параллельный ввод-вывод) или ‘PIO’, который используется для одновременных манипуляций над несколькими I/O адресами. Sega использовала PIO выводы процессора чтобы управлять видео режимом GPU (больше деталей об этом далее).


Графика

Графический процессор представляет собой кастомный чип под названием Holly работающий на частоте 100 МГц. Он был спроектирован VideoLogic (ныне известной как Imagination Technologies) и произведен компанией NEC. 3D ядром Holly стал PowerVR2 от VideoLogic (также известный как ‘PowerVR Series2’ или ‘CLX2’).

Image
Sonic Adventure (1999)

VideoLogic выбрала альтернативный подход к архитектуре своего 3D ядра под названием Tile-Based Deferred Rendering (TBDR, отложенная отрисовка основанная на тайлах).

Вместо отрисовки всего кадра за раз (как это делают традиционные Immediate Mode Renderers или ‘IMR’), TBDR нарезает область отрисовки на несколько секций называемых ‘тайлами’. Процесс отрисовки выполняется отдельно для каждого тайла, после чего результат комбинируется вместе для составления конечного кадра.

Этот инновационный дизайн привносит интересные преимущества:

Неудивительно, что Imagination и далее использовала эту эффективную технологию в видео-ядрах Series 4 PowerVR, которые использовались на невероятном количестве устройств, включая первое поколение iPhone, iPhone 3G, Nokia N95 и Dell Axim x51.

Архитектура

Давайте рассмотрим два основных компонента графического чипа Dreamcast:

Tile Accelerator

Image
Архитектура Tile Accelerator

Прежде чем начнется процесс отрисовки, компонент известный как Tile Accelerator (тайловый ускоритель) производит предварительную обработку. Сперва он аллоцирует несколько 32x32 групп тайлов в которые будет отрисовываться геометрия.

Затем ускоритель:

  1. Забирает (при помощи прямого доступа к памяти (DMA) или обычной передачи) геометрические данные и команды отрисовки (drawing commands) сгенерированные процессором.
  2. Конвертирует эти данные в свой внутренний формат.
  3. Распределяет геометрию в каждую из групп тайлов в зависимости от их координат. Геометрия вне поля видимости отбрасывается на этом этапе.
  4. Генерирует окончательные списки отрисовки (Display Lists).

Списки отрисовки затем интерпретируются 3D ядром: PowerVR2.

PowerVR2

Image
Архитектура PowerVR2

Здесь графика начинает свою жизнь. Руководствуясь списками отрисовки полученными от Tile Accelerator, 3D ядро отрисовывает каждый тайл в свой внутренний кадровый буфер (framebuffer). Этот процесс выглядит так:

  1. Image Synthesis Processor (процессор синтеза изображения) или ‘ISP’ извлекает примитивы (треугольники либо четырехугольники) и выполняет удаление скрытых поверхностей (Hidden-Surface Removal) чтобы убрать скрытые полигоны. Затем, после рассчета их Z-буферов и трафаретных (stencil) буферов, данные проходят через тест глубины (Depth Testing) чтобы избежать отрисовки полигонов которые скрыты другими и трафаретный тест (Stencil Tests) чтобы отбросить геометрию которая не будет видна если расположена за двухмерными полигонами (так же называемыми масками).
    • Обратите внимание, что эти тесты фактически выполняются в самом начале конвейера. Для сравнения, предыдущие консоли использующие поздний z-buffering отбрасывают скрытую геометрию в конце конвейера. Подход ISP предотвращает обработку геометрии которая в последствии будет отброшена, сохраняя ресурсы.
  2. Texture and Shading Processor (процессор текстурирования и шейдирования) или ‘TSP’ окрашивает и затеняет (shading) тайлы, а так же применяет к ним различные эффекты.
    • Текстуры не применяются пока тайл не экспортирован. Это означает что накопленный overdraw (если он присутствует к этому этапу) не снизит скорость заполнения.

После завершения этого процесса, отрисованный тайл записывается в основной кадровый буфер находящийся в видео-памяти (VRAM). Этот процесс повторяется пока все тайлы не будут отрисованы. После завершения отрисовки, конечный кадр читается Video encoder -ом (кодировщиком видео) из кадрового буфера и отправляется на видеовыход.

Общая картина

Кроме очевидных архитектурных различий, у TSP есть еще много способностей, из которых ясно, насколько эта консоль далека от своего предшественника Saturn. Вот некоторые из его самых выдающихся возможностей:

Больше деталей

Holly может отрисовать в ~10 раз больше полигонов чем его предшественник, вот примеры до и после, которые показывают насколько менее ограничен теперь дизайн моделей. Попробуйте поиграться с ними!

КаркасПоверхностьТекстурированный
3D model
Sonic R (1997) для Saturn
286 треугольников (или 185 четырёхугольников)
КаркасПоверхностьТекстурированный
3D model
Sonic Adventure (1999) для Dreamcast
1001 треугольников

Видео режимы

Подсистема вывода видео была спроектирована с поддержкой нескольких типов экранов и выходных форматов, так video encoder выводит видео на единый выходной порт, который поддерживает следующие форматы:

Dreamcast не может кодировать все эти форматы одновременно, поэтому у GPU и аудиопроцессора есть регистр Image Mode, который указывает какие аудио/видео шины должны быть активированы чтобы генерировать нужный сигнал. Процессор проверяет тип подключенного кабеля (проверяя какие “select bits” пины видео коннектора подключены) и записывает нужные значения в регистр GPU. Эти значения так же передаются аудиопроцессору.

Учитывая что VGA это исключительно прогрессивный формат (в противовес традиционному чересстрочному), у игр предполагавших использование только чересстрочной развертки проявились проблемы совместимости. Такие игры явно указывают в своем коде что не будут работать с VGA, чтобы процессор приостановил игру пока пользователь не сменит VGA кабель на другой.


Звук

Аудио обрабатывается кастомным чипом AICA от Yamaha, это улучшенная версия SCSP, использованного в Saturn. Он состоит из четырех компонентов:

Для облегчения разработки, официальный SDK включал в себя несколько драйверов для разных задач (секвенсор, декодер и т.д.).

Эволюция

Чтобы показать, как сильно продвинулся прогресс в области синтеза звука со времен Mega Drive/Genesis, вот пример двух игр, одной для Mega Drive и другой для Dreamcast, использующих одну и ту же композицию:

Sonic 3D Blast (1996) для Mega Drive
Предшественник использует FM синтез для генерации звука на лету
Sonic Adventure (1999) для Dreamcast
Новая аудио подсистема без труда обрабатывает PCM семплы

Вместо программирования чипа FM модуляции, композиторы Sonic Adventure сыграли саундтрек сами и затем закодировали его в ‘ADX’, формат с потерей качества (lossy) разработанный CRI Middleware. Благодаря этому он использует только два из 64 PCM каналов (стерео).

Сжатие ADX позволяет игре декодировать аудио поток с GD-ROM прямо в Sound IC не тратя память и пропускную способность. Драйвер для этих целей может быть реализован множеством разных путей, так как существует несколько подходов к балансированию нагрузки между основным процессором и ARM7.

Оставаясь в живых

По какой-то причине, этот чип так же отвечает за часы реального времени (RTC) для BIOS. Он подключен к батарейке, чтобы продолжать работать без питания от сети.


Операционная система

2 МБ прошивки (System ROM) хранят BIOS, который отвечает за загрузку игры либо небольшой оболочки после включения консоли.

BIOS так же содержит готовые функции для упрощения использования I/O операций в играх, как например чтение с GD-ROM диска.

Оболочка

Если диск с игрой не вставлен, консоль загружает графическую оболочку.

Image
Оболочка, которая запускается если включить консоль без диска

В оболочке есть простой графический интерфейс для выполнения базовых, но необходимых задач:

  • Запустить игру, если она еще не запущена.
  • Управление сохранениями хранящимися на VMU (больше информации про это устройство далее!).
  • Включить музыку, если вставлен аудио CD.
  • Изменение настроек (дата, время, настройки звука, и т.д.).

Windows CE

С самого анонса Dreamcast говорилось, о том, что консоль сможет запускать Windows CE: урезанную версию Windows для встраиваемых устройств. Это немного вводило в заблуждение, ведь некоторые пользователи ожидали увидеть полную среду рабочего стола Windows CE на своей консоли.

Image
Лого Windows CE на передней панели корпуса консоли

На самом деле, предназначение этой ‘ОС’ было очень похоже на то, что Nintendo сделала с Nintendo 64: предоставление программистам более богатого слоя абстракций для упрощения определенных операций.

Microsoft работала вместе с Sega чтобы портировать Windows CE на Dreamcast. Результатом была еще более урезанная версия Windows CE с минимальным набором компонентов, необходимых для работы с графикой, звуком и отладкой. Это включало в себя использование для разработки звездной IDE от Microsoft, Visual Studio.

Часть разработчиков сочла эту возможность очень привлекательной. Так как аудиовизуальный фреймворк поставляемый вместе с Windows CE был ничем иным, как DirectX 6, тысячи игр для ПК той эры могли быть, в теории, легко портированы на Dreamcast…

Тем не менее различия в архитектуре между Dreamcast и обычными ПК были слишком велики чтобы их игнорировать. Кроме того, включение этой системы увеличивало время загрузки игр (ведь ‘ОС’ загружалась с диска) и Windows CE, в итоге, тратила на себя значительную часть ресурсов Dreamcast (не удивительно, ПК на тот момент уже страдали от этого).

В конечном итоге ‘Windows CE для Dreamcast’ просто был еще одним вариантом SDK на выбор разработчикам (который принято называть Dragon SDK). Тем не менее заметное количество игр для Dreamcast в итоге использовали API Windows CE и DirectX.


I/O

GPU включает в себя еще один модуль для выполнения большей части I/O: System Bus (системная шина). Он предоставляет следующие интерфейсы:


Игры

Игры в основном разрабатывались на языках C или C++. Первое время для разработки рекомендовался C, поскольку компиляторы C++ доступные на то время были сильно ограничены в функциональности.

Sega предоставляла станцию (девкит) для разработчиков в форме корпуса ПК под названием Sega Katana Development Box. Это был Dreamcast с дополнительными I/O интерфейсами необходимыми для разработки. В комплекте шел CD диск с официальным Katana SDK и другими инструментами для установки на ПК с Windows 98.

В случае если разработчики выбирали Dragon SDK, им так же были доступны DirectX 6.0 и Visual C++ 6.0.

Носитель

Игры распространялись на GD-ROM дисках, которые являются обычными CD-ROM дисками с большей плотностью записи (достигая 1 ГБ в объеме). Диски читаются со скоростью 12x, что не так плохо по сравнению с 2x CD дисководом в Saturn.

Онлайн-платформа

Dreamcast распространялся с модулем модема, который могли использовать игры чтобы “звонить” на dial-up сервисы для онлайн игры. Sega предоставляла два сервиса: SegaNet (для Америки и Японии) и Dreamarena (Европейский аналог).

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

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

К сожалению, SegaNet и Dreamarena были отключены через два года после запуска. Из-за этого игры которые полагались исключительно на эти сервисы стали неиграбельны, если не эмулировать сервисы внешними средствами. (например, при помощи DreamPi - образа для Raspberry Pi который повторяет функционал этих сервисов с помощью серверов поддерживаемых сообществом).

Интерактивная карта памяти

Еще одним новшеством Dreamcast был Visual Memory Unit или ‘VMU’. Он подключался к контроллеру и, кроме того что работал как карта памяти для сохранений, был полностью автономным устройством, включавшим в себя:

Image
VMU не подключенный к контроллеру
Image
Контроллер без VMU
Image
Контроллер с подключенным VMU
  • Sanyo LC86K87: 8-битный процессор с низким энергопотреблением.
  • 32x48 Монохромный LCD с четыремя дополнительными иконками: Использующий 196 Байт XRAM (внешняя ОЗУ) в качестве кадрового буфера.
  • Два последовательных коннектора: Один для IN (вход) и другой для OUT (выход).
  • Шесть физических кнопок: Используются когда VMU не вставлен в контроллер.
  • 16 КБ Mask-ROM: Хранит BIOS-IPL (загрузочную прошивку).
  • 64 КБ Flash памяти: 32 КБ для хранения одной программы (полученной из консоли) и 32 КБ для игровых сохранений.
  • 512 Байт ОЗУ: 256 Байт зарезервировано для системы, оставляя только 256 Байт для программ.

VMU имеет два режима работы:


Борьба с пиратством и хоумбрю

Использование проприетарного формата GD-ROM помогло предотвратить производство несанкционированных копий игр (и их запуск на других консолях). В добавок к этому, игры Dreamcast регионально заблокированы, что означает невозможность запуска игр на консоли, если их регионы не совпадают.

Победа пиратов

На практике меры против пиратства были совершенно бесполезны, так как Sega оставили огромную лазейку открытой: MIL-CD. Музыкальный Интерактивный Live-CD или ‘MIL-CD’ - это формат, созданный Sega для расширения Аудио-CD интерактивными программами… и Dreamcast совместим с ним.

Неавторизованные коммерческие диски (программы для загрузки читов, видео плееры, и т.д.) маскировались под MIL-CD чтобы те могли запускаться на консоли без разрешения Sega. Позднее, сообщества взломщиков изучили этот эксплоит и нашли обходной путь, чтобы запускать пиратские игры с обычных CD-ROM дисков. Это вызвало непреодолимую волну ISO образов игр выкладываемых в интернете.

Проблемы проявились позже: GD-ROM диски могли вмещать 1 ГБ данных, а обычные CD - только около 700 МБ, так каким же образом “рипперы” ужимали большие игры, чтобы вместить их на CD? Пережимая музыку и графику пока игра не влезет в рамки CD. Так же были попытки разделять игры на два диска. В конце концов, игры больше не представляют собой один большой пласт данных (как старые картриджи), а организованы в иерархию из файлов из директорий.


Вот и всё, ребята

Image
Dreamcast, который мне пришлось добыть, чтобы написать эту статью
Не так плох для своего возраста!

Надеюсь, вам понравилась эта статья. Я закончил писать её в начале моего последнего учебного года в университете.

Теперь я, скорее всего, буду очень занят, но мне нравится писать эти статьи, так что, надеюсь, вы увидите еще одну в течение нескольких недель!

До следующего раза!
Rodrigo


Помощь проекту

Эта статья является частью серии Архитектура консолей . Если вы нашли ее интересной, пожалуйста, подумайте о пожертвовании. Ваш взнос будет использован для финансирования покупки инструментов и ресурсов, которые помогут мне улучшить качество существующих и предстоящих статей.

Donate with PayPal
Become a Patreon

Вы также можете купить цифровую версию книги на английском языке. Я отношусь к прибыли как к пожертвованиям.

Image

Перечень желательных инструментов и последних приобретений для этой статьи отслеживается здесь:

### Interesting hardware to get (ordered by priority)

- Nothing else, unless you got something in mind worth checking out

### Acquired tools used

- A Dreamcast console with controllers and VMUs (£40)
- A game (Sonic Adventure, £9)

В качестве альтернативы, вы можете помочь, предлагая изменения и/или добавляя перевод.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-dreamcast,
    url = {https://www.copetti.org/writings/consoles/dreamcast/},
    title = {Dreamcast Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Dreamcast Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://www.copetti.org/writings/consoles/dreamcast/. [Accessed: day- month- year].
Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Источники / Продолжить чтение

Борьба с пиратством

Процессор

Игры

Графика

Фотографии


Rodrigo Copetti

Rodrigo Copetti

Надеюсь, вам понравилась эта статья! Если вы хотите узнать больше об авторе, нажмите сюда и если вы хотите поддержать его, то нажмите сюда

rsslinkedintwittergithubfacebookreddit