相关影像
简介
世嘉 Dreamcast 与前代产品(Saturn,译注:即世嘉土星)相比推出了许多新功能,以吸引游戏开发商和游戏机玩家。 Dreamcast是世嘉最后一次尝试征服游戏主机市场,上面首创的一些技术延续了下来,并被未来的主流设备所采用。
中央处理器 (CPU)
日立公司的开发一切顺利,其标志性的SuperH系列芯片已经获得了多个客户,现在公司已经准备好推出该系列的第四代产品。 他们的新产品将嵌入式功能与3D游戏的功能相结合。
世嘉作为SuperH的早期采用者之一,所以他们选择日立的新芯片来为自家的新游戏机提供动力,一点也不让人意外。 因此,Dreamcast搭载了一个以高达200 MHz[1] 运行的SH-4 CPU。 此外,这次为了让事情变得顺畅(译注:上一代土星是多cpu,带来了开发中的很大麻烦),将只采用一个更加齐备的CPU。
产品
话虽如此,这款新处理器有什么有趣的地方呢?
好的,首先来说,SH-4作为先前型号的超集,意味着它继承了SuperH系列的所有现有特性,包括32位RISC架构、五级流水线和16位指令集。 不过它也继承了控制危害。
最重要的是,作为下一代CPU,它首次推出了许多超出嵌入式应用程序范围的改进[2]:
- 2路超标量流水线:一种新颖的并行技术,其中CPU可以在流水线的每个阶段处理多个指令(在本例中为两个)。 这使得每秒可以执行更多指令。
- 在幕后,CPU将两条指令分发到两个不同的(可用的)执行单元。 因此,除了一个非常小的组之外,所有指令都必须具有不同的类型(即分支、算术等)才能并行化[3]。 否则,它们只能按顺序执行。 不管怎样,SH-4还展示了一个永远无法并行化的指令子集,因为它们包含太多依赖项而无法使其可并行。
- 8 KB指令高速缓存和16 KB数据高速缓存:这个比例相当奇怪,因为游戏机往往包含比数据高速缓存更多的指令高速缓存。 不过,SH-4允许将数据高速缓存分成两个部分:8 KB的Scratchpad(快速RAM)和8 KB的数据高速缓存。
特别工作
游戏机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的一半总线。
为了访问这个内存,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加速器。
在Holly内部,我们可以找到VideoLogic的独家图形电路,称为PowerVR2(也称为“PowerVR Series2”和“CLX2”),它基于他们之前的PowerVR GPU,但是是专为Dreamcast量身定制的。
架构
VideoLogic选择了一种替代方法来构建他们的3D引擎,称为基于图块的延迟渲染(TBDR)。
TBDR不是一次渲染整个帧(如传统的即时模式渲染器或’IMR’做[9]),而是将渲染区域划分为称为“图块”的多个部分。 然后,它对每个图块单独执行渲染过程,并将结果组合起来形成最终帧[10]。
这种创新的设计带来了一些有趣的优势:
- 它可以大大进行并行化,从而显着降低带宽和功耗。
- 它通过自动从前到后对多边形进行排序,然后在管道的第一阶段执行z轴测试,从而实现了对可见性问题的巧妙解决方案。 这些任务的组合不仅解决了原来的问题,而且可以防止多次绘制(隐藏多边形的光栅化),毕竟重绘将会浪费资源并降低性能。
毫不奇怪,Imagination将这项高效技术向前推进,构建了4系列的PowerVR内核,为数量惊人的设备提供动力,包括第一代iPhone、iPhone3G、诺基亚N95和戴尔的Axim x51。
构建
让我们来看看Dreamcast的GPU的两个主要组件[11]:
图块加速器
在渲染过程开始之前,称为图块加速器的组件执行预处理。 它首先分配了几个32x32的图块容器,几何图形将会被渲染到这些容器中。
然后,图块加速器将:
- 获取CPU发出的几何数据和绘图命令(使用DMA或传统传输)。
- 将此数据转换为内部格式。
- 根据其坐标将几何分布到每个容器。 被裁剪的几何图形也会被丢弃。
- 生成生成的显示列表。
然后由3D引擎解释这些显示列表:PowerVR2。
PowerVR2 核心
在这里图形被赋予了生命,从TA(译注:纹理地址单元/Texture Address Unit)接收到的显示列表告诉核心使用内部帧缓冲区 来渲染单个图块的几何图形。 过程如下:
- 图像合成处理器或“ISP”获取基元(三角形或四边形)并执行隐藏表面去除以去除看不见的多边形。 然后,在计算其Z轴缓冲区和模板缓冲区后,数据通过深度测试以避免渲染会出现在其他多边形后面的多边形,如果它们位于2D多边形后面则不可见的几何图形(也称为遮罩),就会通过模板测试以剔除。
- 纹理和阴影处理器或“TSP”在图块区域上应用着色、阴影和多种效果。
- 在导出图块之前不会应用纹理,这意味着出现的重绘(如果有)不会降低填充率。
这些操作完成后,渲染好的图块被写入VRAM中的主帧缓冲区。 这一过程将一直重复直到所有图块都得到处理为止。 一旦完成,生成的帧缓冲区由视频编码器拾取并通过视频信号发送。
全景
除了明显的架构差异之外,纹理和着色处理器还具有许多功能,可以让人们了解这台游戏机与旧的土星差距多大。 以下是一些值得注意的例子:
- Alpha混合:组合重叠图层的颜色以实现透明效果。
- 在这个系统中所使用的实现透明度的方法被称为顺序无关透明度 该算法在混合颜色之前自动对图元进行排序,虽然这减慢了渲染过程,但避免了依赖游戏本身手动进行的所有排序。 也因为如此,Dreamcast游戏擅长显示透明对象。
- 结合基于图块的系统,顺序独立透明度完全解决了以前的显示灾难。
- Mip-Map:根据所需的详细级别自动选择纹理的缩小版本。 这样做是为了防止处理远离相机的大纹理(这将浪费处理能力并产生锯齿现象)。
- 环境映射:对纹理应用反射。
- 双线性、三线性和各向异性过滤:这些是用于平滑纹理和防止像素化的不同算法。 它们按“最差”到“最佳”排序,其中每一个的结果质量与所需的计算量成正比。
- 这是从土星以来一个巨大的进步,因为前者没有提供任何纹理过滤器!
- 凹凸映射:在不额外消耗多边形的情况下模拟表面缺陷。
获取细节
Holly现在可以绘制比其前代多10倍的多边形,这里有一个之前和之后示例,展示了模型设计如何不再受限制。 试着调整他们!
线框 | 表面 | 纹理 |
点击启用交互功能 |
286个三角形(或185个四边形)。
线框 | 表面 | 纹理 |
点击启用交互功能 |
1001个三角形。
视频模式
视频系统被设计为支持多种类型的屏幕和格式,因此视频编码器输出到一个统一形状的插口,该插口支持以下类型的信号:
- 复合视频接口(译注:就是AV线):将显示视频所需的三个信号(色度、亮度和同步)组合成一个信号,只需要一根单针电缆。
- 这是用于旧的PAL和NTSC电视与RCA连接。
- S-Video:结合亮度和同步,同时保持色度分离(总共两条视频线)。
- RGB:发送单独的红-绿-蓝信号并提供不同的同步类型可供选择(复合同步或从视频合成或S-Video中提取)。
- SCART电缆将使用这种类型。
- VGA:将RGB与两个同步信号(水平和垂直)相结合,总共徐亚五条视频线。 这使得能够在逐行模式下显示尽可能高的分辨率(720x480),因此这种模式通常被称为‘480p’。 VGA在当时实际上已经成为计算机显示器使用的标准格式/介质一段时间了。
- 为了使用这种类型,世嘉提供了一个VGA适配器作为额外的配件。
Dreamcast 无法同时对所有这些信号进行编码,因此 GPU 和音频处理器包含了一个名为 图像模式 的寄存器,用于协调哪些视频/音频总线会被激活以生成所需的信号。 CPU检测插入的电缆类型(通过检查视频连接器的哪些“选择位”处于活动状态)并将所需值写入GPU。 最后,这些值被转发到音频处理器。
由于VGA严格来说是一种逐行信号(与传统的隔行扫描相反),因此仅为隔行扫描视频设计的游戏会出现一些兼容性问题。 这些游戏会在其代码中明确声明不会在VGA上显示,这将让CPU阻止游戏执行,直到用户将VGA电缆换成另一种类型。
音频
音频功能由雅马哈制造的名为AICA的定制芯片处理,它是土星中使用的SCSP的改进版本,由四个组件组成:
- 声音集成电路或“IC”:一组模块(合成器、DSP和混音器),用于生成音频信号并对其施加效果。 它支持多达64个PCM通道,分辨率为16或8位,采样率为44.1 kHz。 总的来说,这是播放音频的最佳质量。
- 此外,它还包括一个ADPCM解码器,用以减轻CPU的部分工作负担。
- 奇怪的是,它还提供了两个MIDI引脚来连接MIDI乐器,尽管这是在开发过程中使用的。
- 2 MB的SDRAM:存储声音数据和程序。 它由主CPU使用DMA填充。
- 运行频率为~2.82 MHz的ARM7DI:控制声音IC。 该CPU通过启动存储在SRAM中的小型软件(称为驱动程序)进行编程,该软件解释音频数据并相应地操作声音IC。
- 如果您想知道的话,在Game Boy Advance中也可以找到类似但更强大的CPU。
- 内存控制器:接口连接2 MB的SDRAM。
为了帮助开发,官方SDK包含多个满足不同需求(排序、解码等)的声音驱动程序。
进化
自从Mega Drive/Genesis(译注:日版和美版MD)问世以来,我们已经走了这么远,为了展示声音合成取得了很大的进步。这里有两个游戏的例子,一个是Mega Drive,另一个是Dreamcast,它们使用了相同的作品:
前身执行FM合成以动态生成音频信号。
新的音频子系统能够无烦恼地处理PCM样本。
如果您想在播放乐谱时在两者之间切换,也可以尝试此小部件:
MegaDrive / Genesis | Dreamcast | |
点击启用交互功能 |
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驱动器读取数据。
交互界面
就像世嘉土星一样,如果没有插入有效的游戏光盘,游戏机将启动一个可视交互界面。
界面包含一个简单的图形用户交互界面,使用户能够执行基本但必要的任务,例如:
- 开始游戏,如果它并没有在执行。
- 操作存储在VMU中的保存数据(稍后会解释有关此设备的更多详细信息)。
- 如果插入了音频CD,则播放音乐。
- 更改某些设置,如日期、时间、声音等。
Windows CE
自从Dreamcast宣布之后,就被传成该游戏机是运行Windows CE的。 事实上,您只需查看游戏机的A面即可注意到Microsoft的logo…… 这是怎么回事?
首先,Windows CE到底是什么? 这只是微软在90年代中期开始的众多项目之一,旨在征服传统个人电脑市场之外的领域。 随着比x86更高效的中央处理器架构和手持设备的出现,微软的一个新团队负责将Windows生态系统引入这些新设备[14]。
这导致了Windows CE的诞生:一个完整的操作系统,从头开始开发,同时还提供了现有Windows API、开发工具和服务的子集。
与Windows 95或NT不同,新系统具有以下优点:
- 它运行在各种CPU架构[15] 上,包括SuperH甚至NEC/MIPS VR4300(任天堂64使用)。
- 它的设计考虑了受限的硬件,例如有限的电源(AA电池)、内存(2 MB RAM)和存储(4 MB ROM)。
此外,Windows CE作为一组构建块出售给制造商,允许他们挑选要捆绑的组件。 然后,制造商可以将其集成到各种硬件中(例如手持设备、零售点终端甚至汽车系统里)。 不管怎样,Windows CE作为掌上电脑(PDA的前身)的操作系统获得了重要的关注,有效地与Apple Newton和Palm竞争。
随着90年代后期手机行业的蓬勃发展,微软利用Windows CE的模块化构建了PocketPC,这是另一个完全专注于PDA和手机的操作系统(后来称为“Windows Mobile”)。
那么,所有这些和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的模块,称为系统总线。 它提供以下接口:
- G1接口:可以访问BIOS ROM及其保存的配置和GD-ROM内容。
- G2接口:提供对调制解调器和声音控制器的访问。
- Maple接口:在控制器(以及连接到它们的附件)和CPU之间传输数据块。 它是一个串行总线并提供专用的DMA。
- SH-4接口:连接主CPU以进行通用通信。
- DDT接口:控制CPU总线以在DMA传输期间访问其主存储器。
- PVR接口:使用专用DMA将CPU与图块加速器连接起来。
游戏
开发主要用C或C++开发完成。 起初,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]:
- ASanyo LC86K87:8位低功耗CPU。
- 具有四个附加图标的32x48单色LCD:使用196 BXRAM(外部RAM)作为帧缓冲区命令。
- 两个串行连接器:一个用于输入,另一个用于输出。
- 六个物理按钮:当VMU与控制器分离时使用。
- A16 KB Mask-ROM:存储BIOS-IPL。
- 64 KB的Flash:32 KB用于存储单个程序(从游戏机传输),另32 KB用于保存Dreamcast的游戏存档。
- RAM的512 B:为系统保留256 B,只留下256 B可用于程序。
VMU有两种操作模式:
- 插在手柄上:官方手柄有两个插槽来连接VMU和其他形状相同的配件,如果VMU插入第一个插槽(从手柄正面可见),它可以在游戏过程中显示图像。 此外,Dreamcast可以在VMU上存储存档和程序。
- 与控制器分离:该小工具变成了带有时钟和保存管理器的类似Tamagotchi(译注:宠物蛋,万代南梦宫出的,俗称拓麻歌子)的设备,并且还可以运行Dreamcast之前传输的任何程序。 两个VMU也可以连接以共享内容。
反盗版&自制
使用专有的GD-ROM格式有助于禁止生产未经授权的游戏副本(并在其他游戏机上运行它们)。 Dreamcast游戏也是区域锁定的,这意味着游戏机将拒绝运行不同区域的游戏。
破解
实际上,由于世嘉留下了一个巨大的后门:MIL-CD,这将导致其反盗版措施完全没用。 音乐互动直播光盘或“MIL-CD”是世嘉创建的一种格式,用于通过互动节目扩展音频光盘… Dreamcast被设计与它兼容[19]。
最终,未经世嘉批准,未经授权的商业光盘(作弊加载器、电影播放器等)伪装成MIL-CD在游戏机上运行。 后来,不同的黑客社区剖析了这个漏洞,并想出了一个使用CD-ROM启动盗版游戏的变通方法。 这引起了一股势不可挡的ISO网上发布浪潮。
之后出现了一些问题:尽管GD-ROM可以存储1GB的数据,但CD-ROM只能容纳大约700MB,那么“破解者”如何才能将较大的游戏压缩以适应CD呢? 最终想出了通过重新压缩音乐和图形,直到它缩减到合适的大小。 他们甚至尝试将其分成两张盘来解决这个问题。 毕竟,游戏数据不再是一个单一的整体(像旧式的卡带那样),而是现在被组织成文件和目录的层级结构。
这就是全部了,伙计们。
对它的年龄来说不算太糟糕!
我希望你喜欢这篇文章。 我在大学最后一年开始时完成了它。
从现在开始我可能会很忙,但是我确实喜欢写这些文章,所以希望你能在几周内收到下一篇文章!
下篇文章见!
Rodrigo