Dreamcast架构

Rodrigo Copetti 的实用分析

经典版 - 最后更新于:2024年11月3日

可用语言:🇬🇧 - English, 🇵🇱 - Polski, 🇭🇺 - Magyar, 🇹🇷 - Türkçe, 🇨🇳 - 简体字, 🇷🇺 - Русский, 👋 - 添加翻译


关于此版本

“经典版”是 “现代版” 的替代版本。 它不需要 Javascript、最新的 CSS 或复杂的 HTML 支持就能工作。 它更适合电子书用户、过时的浏览器或使用无障碍工具的读者阅读。另外,电子书用户现在可以从这里查看 电子书版

两个版本内容完全相同, 只是交互式部件被简化为纯 HTML。 如果读者想尝试“完整版”,可以使用切换回原始文章的链接。

和其他文章一样,这篇文章可在 Github 上查看,这样读者可以报告错误或提出修改。这里还有一个 前置阅读材料 可用来帮助理解该系列文章。作者还接受 捐助翻译 以帮助提高现有文章和即将发表的文章的质量。


目录

  1. 相关影像
  2. 简介
  3. 中央处理器 (CPU)
    1. 产品
      1. 特别工作
      2. 内存和访问
    2. 没有UMA,但是…
    3. 终局
  4. 图形
    1. 架构
    2. 构建
      1. 图块加速器
      2. PowerVR2 核心
    3. 全景
    4. 获取细节
    5. 视频模式
  5. 音频
    1. 进化
      1. 补充说明
    2. 保持活动状态
  6. 操作系统
    1. 交互界面
    2. Windows CE
  7. I/O
  8. 游戏
    1. 存储介质
    2. 在线平台
    3. 交互式存储卡
  9. 反盗版&自制
    1. 破解
  10. 这就是全部了,伙计们。
  11. Copyright and permissions
  12. 来源 / 继续阅读
  13. 参与贡献

相关影像

型号

Image
Dreamcast
1998年11月29日在日本发布,1999年9月9日在美国发布,1999年10月14日在欧洲发布。

主板

Image
主板
显示修订版本“VA1”。
虽然官方文档表明该系统包含128KB的闪存,但出于某种原因,这块主板上却包含了一个256KB的EEPROM芯片。
电池和手柄接口位于一个名为“前面板”的子板上。
Image
带有重要部件标签的主板

图示

Image
主架构图
重要的数据总线会标注其带宽和速度。

简介

世嘉 Dreamcast 与前代产品(Saturn,译注:即世嘉土星)相比推出了许多新功能,以吸引游戏开发商和游戏机玩家。 Dreamcast是世嘉最后一次尝试征服游戏主机市场,上面首创的一些技术延续了下来,并被未来的主流设备所采用。


中央处理器 (CPU)

日立公司的开发一切顺利,其标志性的SuperH系列芯片已经获得了多个客户,现在公司已经准备好推出该系列的第四代产品。 他们的新产品将嵌入式功能与3D游戏的功能相结合。

作为SuperH系列处理器的早期使用者之一,世嘉理所应当地选择了日立的最新产品来为自家的新游戏机提供动力 因此,Dreamcast搭载了一个以高达200 MHz[1] 运行的SH-4 CPU。 此外,这次为了让事情变得顺畅(译注:上一代土星是多cpu,带来了开发中的很大麻烦),将只采用一个更加齐备的CPU

产品

话虽如此,这款新处理器有什么有趣的地方呢?

好的,首先来说,SH-4作为先前型号的超集,意味着它继承了SuperH系列的所有现有特性,包括32位RISC架构五级流水线16位指令集。 不过它也继承了控制危害

Image
SH-4芯片

最重要的是,作为下一代CPU,它首次推出了许多超出嵌入式应用程序范围的改进[2]

特别工作

游戏机CPU的常见杂务包括处理游戏逻辑、运行敌方AI以及为GPU提供绘图任务。

您可以看到Dreamcast的GPU仅涵盖光栅化器的任务。 因此,CPU必须参与大多数图形管道。 这意味着CPU将处理大量几何数据(例如计算透视变换)。 现在,为了确保CPU能够承担这一角色,世嘉和日立合作将两个关键的附加功能整合到SH-4中。

第一个添加是专用的64位浮点单元(FPU)。 该组件计算符合IEEE-754标准的32位小数(所谓的“单精度”或“浮点数”)或64位小数(“双精度”或“双精度”类型)。 它的寄存器文件由32个32位寄存器组成,但它们也可以组合成不同的一组16个64位寄存器,这就是该单元能够双倍运行的原因。

如果这还不够,日立在FPU上向前迈进了一步,并采用了额外由八个128位寄存器组成的逻辑来形成另一个寄存器组。 在这其中,每个寄存器现在存储四个32位浮点数,或者换句话说,128位向量。 这种格式最适配图形化处理的相关操作。

为了充分利用新的向量,FPU包括乐操作它们的专门指令,当然也很像土星控制单元提供的那样,只不过行业现在更加标准化了。 这些新指令构成通常称为单指令多数据(SIMD),并且可以执行以下代数运算:

第二个添加是SH-4的外部总线,它现在是64位宽,使CPU能够同时传输32位键值对。 这是另一个改进用以增加这个CPU的整体性能。

内存和访问

Dreamcast包含16 MB的SDRAM,它使用100 MHz总线(CPU速度的一半)直接连接到CPU。

相对的,内存的数据总线只有32位宽[4]。 这是否意味着CPU闪亮的64位总线被浪费了? 并不是,因为RAM是使用两个8 MB存储体安装的。 因此,每个芯片都连接到CPU的一半总线。

Image
内存图

为了访问这个内存,CPU包括一个专用的内存管理单元或“MMU”用于虚拟寻址,这是很有效的,因为这个CPU的物理内存地址空间恰好是29位宽。 此外,由于结合了四个地址变换高速缓存(TLB),程序员可以使用32位地址而不会受到性能损失。

现在,由于寻址只需要29位,额外的三位分别控制内存保护、交替内存映射和绕过缓存[[5]][6]

最终,由程序员决定是否使用这些功能。 这个系统的游戏确实不需要内存保护,并且MMU(内存管理单元)必须在启动时手动启用。

没有UMA,但是…

虽然该系统不像其他知名竞争对手那样围绕严格的统一内存架构(UMA)设计,但它确实将I/O访问委托给GPU。 这意味着,如果CPU必须获取超出其专用RAM或串行接口(已连接)的任何内容,它将不得不请求GPU并在必要时等待。

该CPU还具有称为并行I/O或“PIO”的独特功能,用于同时操作多个I/O位置。 世嘉连接了这些引脚,以便CPU可以操作GPU的视频模式(更多详细信息将在本文“图形”部分中解释)。

终局

即便在描述了所有这些优点之后,恐怕SuperH系列在其最后一位主要用户Dreamcast离开市场后,并没有取得显著的进步。 SH-4普及后,日立(或瑞萨电子,目前的所有者)无法复制同样的成功水准,考虑到嵌入式/手持设备市场此后一直青睐ARM(多亏了StrongARM),我认为瑞萨不会很快在任意近期继续日立的发明。

然而,对于计算这件事的好处是,技术进步往往会超越品牌和公司的界限。 例如,SH的压缩指令技术延续了ARM的Thumb mode(辅助16位ISA)[7]。 此外,在2012年,一个志愿者驱动的项目开始生产与SuperH兼容的现代CPU,称为“J2”[8]


图形

GPU封装是一个名为Holly的定制芯片,运行频率为100 MHz。 与以前的内部设计不同,世嘉现在与VideoLogic(现称为Imagination Technologies)合作,由他们提供具有竞争力的3D加速器。

Image
Holly芯片(移除散热垫后)和视频编码器。

在Holly内部,我们可以找到VideoLogic的独家图形电路,称为PowerVR2(也称为“PowerVR Series2”和“CLX2”),它基于他们之前的PowerVR GPU,但是是专为Dreamcast量身定制的。

架构

VideoLogic选择了一种替代方法来构建他们的3D引擎,称为基于图块的延迟渲染(TBDR)。

TBDR不是一次渲染整个帧(如传统的即时模式渲染器或’IMR’做[9]),而是将渲染区域划分为称为“图块”的多个部分。 然后,它对每个图块单独执行渲染过程,并将结果组合起来形成最终帧[10]

Image
索尼克大冒险(1999)。

这种创新的设计带来了一些有趣的优势:

毫不奇怪,Imagination将这项高效技术向前推进,构建了4系列的PowerVR内核,为数量惊人的设备提供动力,包括第一代iPhone、iPhone3G、诺基亚N95和戴尔的Axim x51。

构建

让我们来看看Dreamcast的GPU的两个主要组件[11]

图块加速器

Image
图块加速器架构。

在渲染过程开始之前,称为图块加速器的组件执行预处理。 它首先分配了几个32x32的图块容器,几何图形将会被渲染到这些容器中。

然后,图块加速器将:

  1. 获取CPU发出的几何数据和绘图命令(使用DMA或传统传输)。
  2. 将此数据转换为内部格式。
  3. 根据其坐标将几何分布到每个容器。 被裁剪的几何图形也会被丢弃。
  4. 生成生成的显示列表。

然后由3D引擎解释这些显示列表:PowerVR2。

PowerVR2 核心

Image
PowerVR2 核心架构。

在这里图形被赋予了生命,从TA(译注:纹理地址单元/Texture Address Unit)接收到的显示列表告诉核心使用内部帧缓冲区 来渲染单个图块的几何图形。 过程如下:

  1. 图像合成处理器或“ISP”获取基元(三角形或四边形)并执行隐藏表面去除以去除看不见的多边形。 然后,在计算其Z轴缓冲区和模板缓冲区后,数据通过深度测试以避免渲染会出现在其他多边形后面的多边形,如果它们位于2D多边形后面则不可见的几何图形(也称为遮罩),就会通过模板测试以剔除。
    • 请注意这些测试是如何在管道开始时有效执行的。 与之相对的,以前的主机 使用懒加载z轴缓冲在管道末端丢弃几何形状。 ISP可以防止处理最终将被丢弃的几何图形[12],从而节省资源。
  2. 纹理和阴影处理器或“TSP”在图块区域上应用着色、阴影和多种效果。
    • 在导出图块之前不会应用纹理,这意味着出现的重绘(如果有)不会降低填充率。

这些操作完成后,渲染好的图块被写入VRAM中的主帧缓冲区。 这一过程将一直重复直到所有图块都得到处理为止。 一旦完成,生成的帧缓冲区由视频编码器拾取并通过视频信号发送。

全景

除了明显的架构差异之外,纹理和着色处理器还具有许多功能,可以让人们了解这台游戏机与旧的土星差距多大。 以下是一些值得注意的例子:

获取细节

Holly现在可以绘制比其前代多10倍的多边形,这里有一个之前和之后示例,展示了模型设计如何不再受限制。 试着调整他们!

Image Image Image “现代版本”中可用的互动模型
土星的索尼克竞速(1997)。
286个三角形(或185个四边形)。
Image Image Image “现代版本”中可用的互动模型
Dreamcast的索尼克大冒险(1999)。
1001个三角形。

视频模式

视频系统被设计为支持多种类型的屏幕和格式,因此视频编码器输出到一个统一形状的插口,该插口支持以下类型的信号:

Dreamcast 无法同时对所有这些信号进行编码,因此 GPU 和音频处理器包含了一个名为 图像模式 的寄存器,用于协调哪些视频/音频总线会被激活以生成所需的信号。 CPU检测插入的电缆类型(通过检查视频连接器的哪些“选择位”处于活动状态)并将所需值写入GPU。 最后,这些值被转发到音频处理器。

由于VGA严格来说是一种逐行信号(与传统的隔行扫描相反),因此仅为隔行扫描视频设计的游戏会出现一些兼容性问题。 这些游戏会在其代码中明确声明不会在VGA上显示,这将让CPU阻止游戏执行,直到用户将VGA电缆换成另一种类型。


音频

音频功能由雅马哈制造的名为AICA的定制芯片处理,它是土星中使用的SCSP的改进版本,由四个组件组成:

为了帮助开发,官方SDK包含多个满足不同需求(排序、解码等)的声音驱动程序。

进化

自从Mega Drive/Genesis(译注:日版和美版MD)问世以来,我们已经走了这么远,为了展示声音合成取得了很大的进步。这里有两个游戏的例子,一个是Mega Drive,另一个是Dreamcast,它们使用了相同的作品:

索尼克3D:爆炸(1996)用于Mega Drive/Genesis。
前身执行FM合成以动态生成音频信号。
Dreamcast的索尼克冒险(1999)。
新的音频子系统能够无烦恼地处理PCM样本。

如果您想在播放乐谱时在两者之间切换,也可以尝试此小部件:

“现代版本”中的互动播放器
音频采样
MegaDrive/Genesis:索尼克3D:爆炸(1996)。
Dreamcast:索尼克大冒险(1999)。

补充说明

索尼克大冒险的作曲家并没有对FM芯片进行编程,而是在内部制作了他们的配乐,然后将其编码为“ADX”,这是一种由CRI中间件开发的有损格式。 因此,它只使用64个PCM通道(立体声)中的两个。

ADX压缩使游戏能够解码并将数据从GD-ROM流式传输到声卡IC,而不会运行内存溢出或带宽。 此外,也可以通过多种方式实现相应的驱动程序,因为有多种方法可以平衡主CPU和ARM7的工作负载。

保持活动状态

不知何故,该芯片还负责为BIOS提供实时时钟(RTC),它还连接到时钟电池以在没有交流电源的情况下继续工作。


操作系统

2 MB的“系统ROM”存储BIOS。 这是CPU在启动时读取的第一个位置。 ROM中包含的代码指示CPU要么启动游戏,要么显示交互界面。

此外,BIOS还包含游戏可用于简化I/O功能的例程[13],例如从GD-ROM驱动器读取数据。

交互界面

就像世嘉土星一样,如果没有插入有效的游戏光盘,游戏机将启动一个可视交互界面。

Image
没有放入光盘时的界面

界面包含一个简单的图形用户交互界面,使用户能够执行基本但必要的任务,例如:

Windows CE

自从Dreamcast宣布之后,就被传成该游戏机是运行Windows CE的。 事实上,您只需查看游戏机的A面即可注意到Microsoft的logo…… 这是怎么回事?

Image
有机械正面Windows CE的logo。 巧合的是,你可能会在同一时代的其他手持设备上发现类似的logo。

首先,Windows CE到底是什么? 这只是微软在90年代中期开始的众多项目之一,旨在征服传统个人电脑市场之外的领域。 随着比x86更高效的中央处理器架构和手持设备的出现,微软的一个新团队负责将Windows生态系统引入这些新设备[14]

这导致了Windows CE的诞生:一个完整的操作系统,从头开始开发,同时还提供了现有Windows API、开发工具和服务的子集。

Image
Windows CE 3.0(2000),与桌面和几个业务应用程序捆绑在一起。

与Windows 95或NT不同,新系统具有以下优点:

Image
一台运行Windows CE 2.0的掌上电脑HP 360LX(1997年), 我在 2024 年 8 月访问英国剑桥的计算历史中心时发现了它, 巧合的是,这个Palmtop拥有一个 SH-3 CPU!

此外,Windows CE作为一组构建块出售给制造商,允许他们挑选要捆绑的组件。 然后,制造商可以将其集成到各种硬件中(例如手持设备、零售点终端甚至汽车系统里)。 不管怎样,Windows CE作为掌上电脑(PDA的前身)的操作系统获得了重要的关注,有效地与Apple Newton和Palm竞争。

随着90年代后期手机行业的蓬勃发展,微软利用Windows CE的模块化构建了PocketPC,这是另一个完全专注于PDA和手机的操作系统(后来称为“Windows Mobile”)。

Image
Windows CE 2.11’掌上电脑版’1.2(1999)
Image
PocketPC(2000),基于Windows CE 3。
微软试图将Windows CE推向PDA市场。

那么,所有这些和Dreamcast有什么关系呢? 在那阶段的某个时候,微软和世嘉提出了为Dreamcast[16] 制作Windows CE包的想法。 毕竟,Windows CE已经运行在日立的CPU之上。 最后,这并没有在完整的桌面界面或与微软在线服务的集成中实现。 与之替代的是,它是作为充当可选抽象层以简化硬件操作而存在的。

与任天堂提供的Nintendo 64类似,微软发布了一个基于Windows CE的SDK(通常称为Dragon SDK),用于为世嘉Dreamcast编写应用程序。 这些库包括CE的一个子集,其中包含辅助图形、音频和调试所需的最少组件。 作为“加入微软俱乐部”的一部分,开发人员现在可以利用微软的明星IDE(Visual Studio 6.0)和VisualC++6.0进行开发。

一些开发人员发现这个选项非常有吸引力。 由于CE中包含的音频/图形框架正是DirectX 6,因此理论上,大量PC游戏可以轻松移植到Dreamcast。 然而,Dreamcast和传统PC之间的架构差异太大,不容忽视。 因此最终,程序员必须经过大量优化才能达到最佳性能[17]。 此外,由于Dreamcast的BIOS没有捆绑任何Microsoft的框架,因此SDK必须静态链接到游戏。 因此,与世嘉接近硬件级别的库相比,Dragon SDK增加了游戏的加载时间(毕竟,必须从游戏光盘上加载一个单独的操作系统层),并且在整个游戏运行过程中,Windows CE层消耗了大量的资源。

总之,“Windows CE for Dreamcast”只是开发人员选择的辅助SDK。 尽管如此,相当多的Dreamcast游戏最终还是利用了它。

顺便说下,如果你对Windows CE和Windows Mobile的命运感到好奇,那么可以告诉你,微软在手持设备市场的情况并不特别好。 Windows CE于2013年被放弃。 而在前一年,Windows Mobile基于CE的核心也被Windows NT取代(与基于桌面的Windows 8保持一致)。 尽管如此,Windows Mobile最终宣告了对新平台(安卓和iOS)的败北宣言,并于2019年停产。


I/O

GPU还包括另一个用于处理大部分I/O的模块,称为系统总线。 它提供以下接口:


游戏

开发主要用CC++开发完成。 起初,C是最被推荐的选择,因为可用的C++编译器最初在功能(和质量)上非常有限。

世嘉还提供了开发硬件,形式类似于一台PC塔式机,被称为Sega Katana 开发盒(译注:当年妖刀katana也是DC的开发代号)。 这包含用于开发的增强I/O的Dreamcast硬件。 它还附带一张CD,其中包含要安装在Windows 98 PC上的官方Katana SDK

如前所述,开发人员还可以选择在Sega之上采用Microsoft的Dragon SDK。 在这种情况下,DirectX 6.0和VisualC++6.0也可以用。

存储介质

游戏存储在GD-ROM中,它们只是具有更高坑密度(达到千兆字节容量)的CD-ROM。 速度是12倍速,与土星的2倍速光驱相比,这至少不算太寒酸。

在线平台

Dreamcast附带安装了调制解调器模块,游戏可以使用该模块“拨号联网”在线游戏的拨号服务。 世嘉提供了两项服务:世嘉网(在美国和日本使用)和梦幻竞技场(欧洲同行)。

玩家使用DreamKey注册服务,这是与一些游戏捆绑在一起的额外光盘。 DreamKey提供了一个网络浏览器来注册一个帐户。 最初,DreamKey是根据地区预设的服务,但后来的修订允许用户更改其ISP设置以连接到其中任何一个。

还有一个Dreamcast品牌的键盘和鼠标可供购买,方便喜欢用PC风格上网的用户。

不幸的是,世嘉网和梦想竞技场在推出两年后就停止服务了。 因此,完全依赖它们的游戏变得无法使用,除非使用额外的工具(如DreamPi,一种在用户社区维护的服务器的帮助下复制它们的树莓派映像)来模拟这些服务。

交互式存储卡

Dreamcast的另一个创新功能是视觉记忆单元或称之为“VMU”。 它连接到控制器上,并且除了作为记忆卡之外,还是一个完全功能的设备,包括[18]

Image
未连接的VMU。
Image
未连接VMU的手柄。
Image
已经插上VMU的手柄

VMU有两种操作模式:


反盗版&自制

使用专有的GD-ROM格式有助于禁止生产未经授权的游戏副本(并在其他游戏机上运行它们)。 Dreamcast游戏也是区域锁定的,这意味着游戏机将拒绝运行不同区域的游戏。

破解

实际上,由于世嘉留下了一个巨大的后门:MIL-CD,这将导致其反盗版措施完全没用。 音乐互动直播光盘或“MIL-CD”是世嘉创建的一种格式,用于通过互动节目扩展音频光盘… Dreamcast被设计与它兼容[19]

最终,未经世嘉批准,未经授权的商业光盘(作弊加载器、电影播放器等)伪装成MIL-CD在游戏机上运行。 后来,不同的黑客社区剖析了这个漏洞,并想出了一个使用CD-ROM启动盗版游戏的变通方法。 这引起了一股势不可挡的ISO网上发布浪潮。

之后出现了一些问题:尽管GD-ROM可以存储1GB的数据,但CD-ROM只能容纳大约700MB,那么“破解者”如何才能将较大的游戏压缩以适应CD呢? 最终想出了通过重新压缩音乐和图形,直到它缩减到合适的大小。 他们甚至尝试将其分成两张盘来解决这个问题。 毕竟,游戏数据不再是一个单一的整体(像旧式的卡带那样),而是现在被组织成文件和目录的层级结构。


这就是全部了,伙计们。

Image
为了在这里写很多东西,我必须得到一个Dreamcast。
对它的年龄来说不算太糟糕!

我希望你喜欢这篇文章。 我在大学最后一年开始时完成了它。

从现在开始我可能会很忙,但是我确实喜欢写这些文章,所以希望你能在几周内收到下一篇文章!

下篇文章见!
Rodrigo


参与贡献

这篇文章是 游戏主机架构 系列的一部分。如果您觉得我的文章很有趣,请考虑捐赠。您的资助将用于购买工具和资源,以帮助我提高现有文章和即将发表的文章的质量。

Donate with PayPal
Become a Patreon

你也可以购买英语版本的电子书。我会将获得的利润视为捐赠。

Image

在这里追踪本文所需工具和最新购置情况:

Interesting hardware to get (ordered by priority)

Acquired tools used

或者,您可以通过 建议更改添加翻译 来提供帮助。


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://classic.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://classic.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.


来源 / 继续阅读

反盗版

CPU

游戏

图形

操作系统

影像