国民党 |
2006-06-01 15:43 |
经过本人的一些修改 与网上查证 收集改写的 作者:本人国民党 真实姓名不告
Dreamcast一词是由Dream以及及Boardcast两个单词所组成的,按照世嘉的解释,就是要将建 立一个庞大的游戏网络,让各位Dreamcast玩家可以在上面自由地进行互动。
DC的图形芯片"PowerVR2DC"与DC的系统控制器(这个控制器的主要作用是把内存以及周边的部 件连接在一起)是集成在一起的,位于整个DC底板的中央,从实物上来看的话,是整个DC底板 中最大的一块IC。如果我们按照PC系统芯片组的分类来看,这个IC属于整合了图形内核以及总 线控制器、I/O控制器的整合型芯片组。
案s日立SH4
PowerVR2DC图形内核使用了Tile渲染体系(Tile Base Rendering),在这种渲染体系中,屏幕 会被划分为许多像素块(或者说Tiles)。3D引擎会检视每个三角形的顶点坐标,以确定哪一个 是可以完全置于或者是部分置于tile中,接下来,就会采用一个拣选算法,按照深度来存放这 些顶点坐标。当拣选完成以后,3D引擎就会在tile中对每个像素进行"预演",以确定该像素属 于哪个三角形,并且对其进行渲染。当每个在tile中的像素被渲染以后,这个tile就会被写入 到帧缓冲中,然后就按照这样的步骤继续进行下一个tile的渲染。这种方式的一个好处是,只 要tile的尺寸分得足够细小,所有的Z-buffer数据就可以完全置入到显示芯片的内部cache中去, 彻底免除了由于对大Z-Buffer进行读取、写入的操作,并且较传统方式来说,可以在每个像素 Render之前就进行Z-test来提升渲染效能的,从而免除了overdraw(无效渲染),显著地提升 有效带宽。
(注解:所谓的Overdraw--无效渲染是指在3D游戏中的场景在大多数的时候,从玩家的视角来看, 前面可能会存在一些"障碍物",例如:墙壁、怪物以及其他的物件,甚至玩家手中的武器也可以 视作是阻挡视线的障碍物。在传统的渲染体系中,这些障碍物之间的关系使用被称作深度缓冲的 东东来描述,而最常用的深度缓冲被称作Z-Buffer。有了Z-Buffer以后,物体之间的前后关系就 可以确定下来。加上传统渲染体系的的渲染方式是从里到外的,也就是说,先渲染场景中最远的 物件,然后在往外渲染,这意味着,如果远处的物体在玩家的视角里有物件遮挡的时候,远处的 物体也依然在是被渲染引擎全部渲染,而事实上,这个远处的物体对于玩家来说其实可能只有部 分是可见甚至是完全看不到的,这就意味着,对这个远端物体进行渲染其实是在做废功,这就是 所谓的Overdraw了。不同的3D游戏中,Overdraw的程度是不同的,根据玩家与场景中最远端物体 之间的层次关系,我们可以大致确定并且描述该场景的复杂程度--depth complexity。在PC游戏 Quake3中,大多数的情况下,其复杂程度大约是3.5倍,大致的意思就是有玩家视角到最远端物件 之间有大约两堵墙壁以及其他一些物体在遮。Overdraw所造成的浪费主要包括了图形内核的渲染 能力以及显存的带宽。)
PowerVR2DC拥有8MB独立的SDRAM作为帧缓冲和材质缓冲(如果使用传统的渲染体系的话,应该还 会包含存放深度值的Z-Buffer,不过由于DC使用的是Tile渲染体系,所以也就免除了这个外部的 深度缓冲),显存运行的频率是100MHz,总线宽度是64位,也就是说,这8MB的显存所能提供的 物理峰值带宽是:100MHzX64bits/8=800MB/s,当游戏中的场景复杂程度达到3.5(也有可能是更 高或者更低)的时候,可以达到的等效带宽约等于3.5X800MB/s=2800MB/s=2.8GB/s,当然,这只 是理想的数值而已,实际的情况肯定不会有这么高的。
不过,我要在此说明的是,PowerVR2DC依然存在Z-Buffer,只不过这个Z-buffer是非常的小,而 且这个Z-Buffer在任何情况下都是以24位精度运作的(如果考虑到Stencil-Buffer的话, PowerVR2DC内部的深度缓冲就是32位了)。 PowerVR2 DC除了应用Tile方式来解决Overdraw导致的带宽浪费外,还具备(vector quantization) 材质压缩功能,可以实现的最高压缩倍率是10:1。引入了材质压缩功能以后,就可以降低对显存 的材质缓冲占用,有效降低对显存带宽的占用。综合以上特性,Power2DCVR的渲染效能相对于传统 的渲染方式来看,可以看作是具备1Gtexels/s的渲染能力。
PowerVR2DC支持4种API: SEGA自己的图形API:Dragon; Videologic的PowerSGL Direct Microsoft的Direct 3D Silicon Graphics的OpenGL
DC使用的CPU是来自日立的SH-4:
注解:SH4之所以不能提供持续的1400MFLOPS是由于SH4的数据cache在数据重载速度方面并不能持 续满足其浮点单元数据装载速度需求。 在SH4中,包含了三个主要的运算单元:负责整数的CPU、负责浮点的FPU以及一个128位VGE (Vector Graphics Engine,主要擅长的是向量运算)。与其前辈SH-2、SH-3相比,SH4最大特 色在于前两者都不具备的Vector Graphics Engine。Vector Graphics Engine本身其实是一个专 为矩阵运算(matrix arrays)设计的浮点单元,我们可以把这个Vector Graphics Engine看作是 Nvidia GeForce256图形芯片中的T&L单元(不同的是,DC的向量处理单元是与CPU在同一个芯片中, 而GeForce256则是独立于系统中的图形芯片)。由于在3D游戏中的图形变换操作(Transformations) 会涉及大量的矩阵运算,这意味着具备Vector Graphics Engine的SH4将可以在这方面较其前几代 产品出色得多。在日立的技术文档中,SH4能够每秒实现5百万个多边形。在大多数情况下,我们 会把SH4的FPU和VGE都归纳入到SH4的FPU去。世嘉号称DC是128位的主机中的这个128位其实就是出 自于此。
世嘉声称,SH4使用的是16位固定长度的指令有助于降低对存储空间的需求(对此做法我有保留)。 5段流水线:指的是CPU完成第一条指令所需要的时间是5个周期,但是从第六个周期起,就可以实 现每个周期都完成一条指令。
2-ways超标量:所谓的超标量,其实就是指该处理器能够在同一时间内执行2条或者更多的指令。 SH4的指令被分为4组:integer(整数)、simple integer/load/store(简单整数/装载/存储)、 branch(分支)以及floating point(浮点)。任何两个来自不同组的指令都可以并行地处理, 例如:一个整数以及一个浮点指令可以并行地处理,而如果两个都是分支指令的话就不能并行地 执行了。
SH4中的MMU(内存管理单元)完全兼容微软的Windows CE操作系统。内存可以划分为1 Kbyte、 4 Kbyte、64 Kbyte以及1 Mbyte等不同的页面,这些页面会被WindowsCE作为内存分区(跟我们 说的硬盘分区类似)并且在SH4执行不同的处理之间提供内存保护。内存保护是非常重要的,因 为如果不同的线程(类似于子程序)对彼此的内存空间造成干扰的话,操作系统以及程序都会 崩溃。
SH4之前(即98年1月之前)的所有RISC体系处理器都只有一个浮点乘法单元,而SH4则拥有4个浮 点乘单元,所以能够比之前的RISC处理器提供4倍的浮点乘性能。由于SH4的浮点单元是全流水线 的,所以能够在每个周期里执行一条指令就能够同时驱动这四个浮点单元。这意味着在200MHz (*4)的情况下,SH4可以每秒计算800百万条乘法操作。就此而言,SH4的速度是其前辈SH2 (Saturn)的40倍。 由于世嘉希望DC能够成为一个建立在互联网上的平台,所以SH4还被赋予了一个特殊的任务:软 件Modem。 DreamCast的音频子系统使用了两枚运算芯片:45MHz的ARM7TDMI(采用32-bit RISC体系,英国公 司ARM设计,已经授权给YAMAHA了;具备40MIPS的运算能力)以及一枚DSP(数字信号处理器), 综合起来就是所谓的Yamaha AICA。世嘉公司的大部分游戏平台产品都采用了YAMAHA公司的音频 解决方案,例如:DC的上一代产品Saturn以及Model 2、Model3街机底板。AICA拥有2MB的音频 内存。 部分资料引用 2002 2004年 2006年发表修改 |
|