New 3DS出这么久了,一直都没写过什么总结,主要就把以前发过的零散内容整理一下吧

硬件配置方面,New 3DS其实相比原3DS有不少提升的,总结如下图

上一代老3DS采用了TSMC的40nm工艺,考虑到这次New 3DS中新加入了CPU核心,L2 Cache以及提升了三倍的频率,但是封装面积变化不大并且续航还加强了,所以猜测极有可能升级到了TSMC的28nm,具体工艺不知。在前代掌机NDSi和GBM中均有升级工艺制程的先例。
CPU对比老3DS首先提升了三倍的频率,从268MHz提升到804MHz,然后还增加了2MB L2 Cache,由所有核心共享。然后还新增加了两颗CPU核心,并且新增核心的L1 Cache由16KB/16KB提升到32KB/32KB,也就是说Core0和Core1是16+16的一缓,而Core2和Core3是32+32。
New 3DS CPU核心具体工作方式为
Core 0 : 负责运行应用程序/游戏
Core 1 : 负责运行系统(但是可以调用其中30%的性能用于运行游戏,老版3DS就已经支持)
Core 2 : 系统屏蔽(完全不开放不工作)
Core 3 : 专用于增强版3D功能(Super-Stable)的处理
也就是说New 3DS虽然一共具有4个核心,但是活动核心只有3个,另一个被完全屏蔽掉了,这就是为什么核心数是4-1的原因。并且这些核心都是异步工作的,只有1个核心专用于游戏的运行,另外系统专用的核心可以调用30%的性能用于游戏运行,这就是游戏可用核心数是1.3个的原因。另外值得一提的是,New 3DS具有两种运行模式,性能模式和兼容模式,Core2和Core3不受影响,毕竟一个被屏蔽掉了,另一个要专注于增强3D的处理。而在兼容模式下Core0和Core1就会回到老3DS的运行模式,频率降至268MHz,并且关闭L2 Cache,但是系统界面和游戏载入默认开启性能模式。
然后是GPU,GPU相比老3DS完全没有任何变动。不过此前的媒体报导对于这款GPU都有点片面,我们再来总结一下。
首先PICA200标称只支持OpenGL ES 1.1,但实际上还支持部分OpenGL ES 2.0,和2.0以外的特性,具体点来讲Vertex流水线支持Vertex Shader和Geometry Shader以及GPGPU特性。但Fragment流水线不支持Shader,所以只支持1.1的特性,不过DMP对Fragment流水线作了拓展,加入了独家的Maestro技术,包括轮廓生成、粒子系统、过程纹理、fragment光照/凹凸贴图/环境贴图、法线贴图、烟雾渲染、自投影和软阴影、多边形细分这8个功能的硬件加速支持。
老任把PICA200的硬件特性打包进接口DMPGL,混合了OpenGL ES 1.1,部分OpenGL ES 2.0和Maestro的集合,使用这个API,好处是功能强大,开发非常方便,但坏处是对CPU的负载很大,而老3DS的CPU性能又很捉急,所以老任不建议使用这个API,而建议使用NW4C这个API。
API方面简单介绍下,GX是老任的图形库,3DS中又包含多个子集,分别是GR,NW4C,GD,DMPGL以及直接命令操作,直接命令操作就是不通过图形库直接对硬件寄存器操作,这个难度最大,优化最困难,需要开发者对GPU流水线和寄存器架构了如指掌,但优点是可以最大限度挖掘硬件性能。其余的API,按性能排列的话,就是GR>NW4C>GD>DMPGL,如果按照开发便利度排列的话则相反。
另外这是一颗可拓展的GPU,可在1-4个Vertex Shader,1-4个Texture unit和多种Maestro功能之间做选配,而老任用了顶配版,也就是4 x Vertex Shader,4 x Texture Unit以及全部Maestro。
最近很多人都喜欢用浮点性能来参考GPU性能,可能主要因为这几年游戏厂商都喜欢宣传浮点性能吧。那我们来看一下PICA200的浮点性能。
3DS一共4 x Vertex Shader,每个Vertex Shader = 4 x FP24 MAD(之前以为PICA中的shader不能MAD),一共为4 x 4 = 16 FP24 MAD x 268MHz = 8.576GFLOPS,这是FP24下的数值,因为PICA200的Vertex Shader硬件是基于FP24计算,但是开发中使用的一般是FP32,硬件会等效转换成FP24,为了方便开发者,老任的SDK里还自带了一个专门用来查看Vertex Shader的FP32浮点性能的profile,等效转换成FP32即为6.432GFLOPS。
之前的内容:【然后是Fragment,PICA200的Fragment不是shader,为固定流水线,其有6 x Texture Combiner,Combiner可以算是shader的雏形吧,可以用来计算fragment相关的数据,3DS中的Combiner用途很广,纹理,ROP,Maestro等相关的计算都会用到combiner,所以运算类型,数据精度都不一,并且Combiner未必全部都能参与实际运算,会消耗1-3个用来接收和提交数据。】所以觉得这部分还是不要计入shader浮点性能里,那么3DS的浮点性能就大致为6.4GFLOPS,和之前相比数值没变,不过计算方法修正了。

硬件配置方面,New 3DS其实相比原3DS有不少提升的,总结如下图

上一代老3DS采用了TSMC的40nm工艺,考虑到这次New 3DS中新加入了CPU核心,L2 Cache以及提升了三倍的频率,但是封装面积变化不大并且续航还加强了,所以猜测极有可能升级到了TSMC的28nm,具体工艺不知。在前代掌机NDSi和GBM中均有升级工艺制程的先例。
CPU对比老3DS首先提升了三倍的频率,从268MHz提升到804MHz,然后还增加了2MB L2 Cache,由所有核心共享。然后还新增加了两颗CPU核心,并且新增核心的L1 Cache由16KB/16KB提升到32KB/32KB,也就是说Core0和Core1是16+16的一缓,而Core2和Core3是32+32。
New 3DS CPU核心具体工作方式为
Core 0 : 负责运行应用程序/游戏
Core 1 : 负责运行系统(但是可以调用其中30%的性能用于运行游戏,老版3DS就已经支持)
Core 2 : 系统屏蔽(完全不开放不工作)
Core 3 : 专用于增强版3D功能(Super-Stable)的处理
也就是说New 3DS虽然一共具有4个核心,但是活动核心只有3个,另一个被完全屏蔽掉了,这就是为什么核心数是4-1的原因。并且这些核心都是异步工作的,只有1个核心专用于游戏的运行,另外系统专用的核心可以调用30%的性能用于游戏运行,这就是游戏可用核心数是1.3个的原因。另外值得一提的是,New 3DS具有两种运行模式,性能模式和兼容模式,Core2和Core3不受影响,毕竟一个被屏蔽掉了,另一个要专注于增强3D的处理。而在兼容模式下Core0和Core1就会回到老3DS的运行模式,频率降至268MHz,并且关闭L2 Cache,但是系统界面和游戏载入默认开启性能模式。
然后是GPU,GPU相比老3DS完全没有任何变动。不过此前的媒体报导对于这款GPU都有点片面,我们再来总结一下。
首先PICA200标称只支持OpenGL ES 1.1,但实际上还支持部分OpenGL ES 2.0,和2.0以外的特性,具体点来讲Vertex流水线支持Vertex Shader和Geometry Shader以及GPGPU特性。但Fragment流水线不支持Shader,所以只支持1.1的特性,不过DMP对Fragment流水线作了拓展,加入了独家的Maestro技术,包括轮廓生成、粒子系统、过程纹理、fragment光照/凹凸贴图/环境贴图、法线贴图、烟雾渲染、自投影和软阴影、多边形细分这8个功能的硬件加速支持。
老任把PICA200的硬件特性打包进接口DMPGL,混合了OpenGL ES 1.1,部分OpenGL ES 2.0和Maestro的集合,使用这个API,好处是功能强大,开发非常方便,但坏处是对CPU的负载很大,而老3DS的CPU性能又很捉急,所以老任不建议使用这个API,而建议使用NW4C这个API。
API方面简单介绍下,GX是老任的图形库,3DS中又包含多个子集,分别是GR,NW4C,GD,DMPGL以及直接命令操作,直接命令操作就是不通过图形库直接对硬件寄存器操作,这个难度最大,优化最困难,需要开发者对GPU流水线和寄存器架构了如指掌,但优点是可以最大限度挖掘硬件性能。其余的API,按性能排列的话,就是GR>NW4C>GD>DMPGL,如果按照开发便利度排列的话则相反。
另外这是一颗可拓展的GPU,可在1-4个Vertex Shader,1-4个Texture unit和多种Maestro功能之间做选配,而老任用了顶配版,也就是4 x Vertex Shader,4 x Texture Unit以及全部Maestro。
最近很多人都喜欢用浮点性能来参考GPU性能,可能主要因为这几年游戏厂商都喜欢宣传浮点性能吧。那我们来看一下PICA200的浮点性能。
3DS一共4 x Vertex Shader,每个Vertex Shader = 4 x FP24 MAD(之前以为PICA中的shader不能MAD),一共为4 x 4 = 16 FP24 MAD x 268MHz = 8.576GFLOPS,这是FP24下的数值,因为PICA200的Vertex Shader硬件是基于FP24计算,但是开发中使用的一般是FP32,硬件会等效转换成FP24,为了方便开发者,老任的SDK里还自带了一个专门用来查看Vertex Shader的FP32浮点性能的profile,等效转换成FP32即为6.432GFLOPS。
之前的内容:【然后是Fragment,PICA200的Fragment不是shader,为固定流水线,其有6 x Texture Combiner,Combiner可以算是shader的雏形吧,可以用来计算fragment相关的数据,3DS中的Combiner用途很广,纹理,ROP,Maestro等相关的计算都会用到combiner,所以运算类型,数据精度都不一,并且Combiner未必全部都能参与实际运算,会消耗1-3个用来接收和提交数据。】所以觉得这部分还是不要计入shader浮点性能里,那么3DS的浮点性能就大致为6.4GFLOPS,和之前相比数值没变,不过计算方法修正了。