发现很多人都喜欢参照某个个人网站的数据,实际上里面的数据和信息有不少不太正确的
所以花了点时间自己整理了一份
首先浮点性能不能完全代表图形的性能,尤其是在过去的主机或者PC上。现在的游戏开发主要都是基于引擎开发了,而引擎中shader非常重要,因此现在都非常注重shader性能,也就是GFLOPS这个参数,可以理解。但是在过去的游戏主机上,引擎开发还不普及,并且硬件架构也还不是shader,所以GFLOPS的意义也就不那么重要了,只能当作是一个参考,当然很多人纠结于这个数字,那就来整理一下。
下面逐个介绍和解析
N64:90MFLOPS
关于N64我以前写过介绍,下次发到吧里,现在就不多介绍了。需要注意的是,N64是首部拥有硬件浮点能力(FPU)的游戏主机,所以我们从N64开始,值得一提的是,后面的NDS是不支持硬件浮点的,所以就不收录了,不用考虑什么软模拟浮点,66MHz的ARM9,软模拟浮点?
Dreamcast:1.6GFLOPS
DC的GPU PowerVR CLX2是不支持硬件T&L的,T&L由CPU运算。而日立的CPU SH4包含一个专门用于3D图形计算的Vector Graphics Engine,如下图。200MHz的情况下有1.4GFLOPS的性能。
而Triangle Setup则又是在GPU上进行,额外可以提供200MFLOPS的性能,所以共计1.6GFLOPS。

PS2:6.2GFLOPS
PS2的GPU同样不支持硬件T&L,GPU专门负责光栅化。而在CPU Emotion Engine中,几何运算由CPU FPU和两颗专门的Vector Unit协同处理。每颗VU可以执行4 x MUL和4 x ADD,共计4.8GFLOPS,加上CPU FPU一共6.2GFLOPS。
NGC:7.5GFLOPS
和前两者不同,NGC的GPU支持硬件T&L,所以浮点性能主要来自GPU,就不需要考虑CPU了。ATI以前公布过整个系统也就是CPU+GPU共计10.5GFLOPS,还公布了GPU的细节:
view transform / multiply*3, add*3 / 32bit / 1 cycle/
perspective transform / multiply*2, add*1 / 32-bit / 1 cycle /
clipping / add*1 / 32-bit / 1 cycle /
(*ct* ) / division*1 / 32-bit / 1 cycle /
(*ct* ) / multiply*1 / 32-bit / 1 cycle /
viewport scalling / multiply*1, add*1 / 32-bit / 1 cycle /
texture cordinate / multiply*3, add*3 / 32-bit / 1 cycle /
re-normalization of texture cordinate / multiply*2, add*1 / 32-bit / 1 cycle /
2. Lighting
transform normal vector / multiply*3, add*3 / 20-bit / 1 cycle /
caliculate light vector / add*1 / 20-bit / 1 cycle /
(*ct* some lighting caliculations) / multiply*3, add*3 / 20-bit / 1 cycle /
(*ct* . pointlight/spotlight/specular section .)
(lighting) / multiply*5, add*2 / 20-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / multiply*5, add*2 / 20-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / division*2 / 20-bit / 4 cycle /
(normalize) / multiply*2 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(*ct* sum)
(lighting) / multiply*1 / 20-bit / 1 cycle /
(lighting) / add*x1 / 20-bit / 1 cycle /
(*ct* some bump mapping related caliculations)
(normalize) / multiply*1 / 20-bit / 1 cycle /
(scaling) / multiply*1 / 20-bit / 4 cycle /
(add offset) / add*1 / 32-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / float to int*1 / 32-bit / 1 cycle /
Flipper Total: 46.5 floating point operations per cycle, so 46.5 * 202.5 MHz = 9.4 Gflops
以上是00年来自日本某杂志的翻译内容,原作者表示有的术语他不懂,所以用*CT来表示
后来ATI宣布GPU Flipper降频至162MHz,所以相应的浮点性能降低至7.5GFLOPS。
Xbox:7.3GFLOPS
Xbox的数据来源于维基,我实在找不到NV2A的细节,所以用维基和英伟达公布过的一张PPT来作为参考了,如有大神清楚请务必补充

也许有人会奇怪和NGC的GPU差不多,理应不是比GC好么。说明一下GC的浮点运算并不都是FP32,而上面的数值基本都基于32bit浮点,所以说只能作为参考。
PSP:2.6GFLOPS
PSP浮点来源于CPU FPU + VFPU,VFPU类似于PS2的VU0。
Wii:11.2GFLOPS
关于Wii硬件的细节非常稀少,和当初NGC时期老任对技术细节津津乐道完全是两种态度,可能因为在PS360前完全不想谈参数了吧。。不过实际上Wii的硬件架构和NGC是一脉相承,并没有太多改变,当然也有加强,比如Pixel pipeline从4条提升到了8条,不过总体架构并没有太多变化,只是将频率提升了50%,那么相应的浮点也提升到11.2GFLOPS,当然这算的就比较粗略了。
Xbox 360:240GFLOPS
360我们就比较熟悉了,就不多说了。浮点性能 = 48 x SIMD(Vec4 + Scalar)x 2 x 500MHz = 240GFLOPS。
PS3:246.4GFLOPS
PS3的数据似乎有所争议,不过按标准算法的话应该是 (8 x VS(Vec4)+ 24 x PS(2 x Vec4))x 2 x 550MHz = 246.4GFLOPS。上图中老黄也把PS3和360放在了一个水平上。
3DS:3.2GFLOPS
3ds的浮点性能的计算方法我已经发过了,不过这里修正一下,Fragment pipeline部分的combiner可以做MAD操作,但是全做MAD只是假设,实际上的话更多是做interpolate操作,也就是AxC+Bx(1-C),并且并不是每个combiner都会参与计算,而且并不都是32bit操作,所以用现在的标准去衡量并不合适(架构太过时了。。参考NV10的Resister Combiner),所以就不计入其中了,只算Vertex Shader的话就是3.2GFLOPS。
另外说明:New 3ds和原版3ds相比GPU没有任何变化,所以New 3ds就不收录了。
PSVita:28.4GFLOPS
PSV的GPU频率最高为222MHz,以最高来计算的话就是4 x 4 x Vec4 x 2 x 222MHz = 28.4GFLOPS。
Wii U:320sp x 2 x 550MHz = 352GFLOPS
Xbox One:768sp x 2 x 854MHz = 1311.7GFLOPS
PS4:1152sp x 2 x 800MHz = 1843.2GFLOPS
PS4 Pro:2304sp x 2 x 911MHz = 4197.8GFLOPS
所以花了点时间自己整理了一份
首先浮点性能不能完全代表图形的性能,尤其是在过去的主机或者PC上。现在的游戏开发主要都是基于引擎开发了,而引擎中shader非常重要,因此现在都非常注重shader性能,也就是GFLOPS这个参数,可以理解。但是在过去的游戏主机上,引擎开发还不普及,并且硬件架构也还不是shader,所以GFLOPS的意义也就不那么重要了,只能当作是一个参考,当然很多人纠结于这个数字,那就来整理一下。
下面逐个介绍和解析
N64:90MFLOPS
关于N64我以前写过介绍,下次发到吧里,现在就不多介绍了。需要注意的是,N64是首部拥有硬件浮点能力(FPU)的游戏主机,所以我们从N64开始,值得一提的是,后面的NDS是不支持硬件浮点的,所以就不收录了,不用考虑什么软模拟浮点,66MHz的ARM9,软模拟浮点?
Dreamcast:1.6GFLOPS
DC的GPU PowerVR CLX2是不支持硬件T&L的,T&L由CPU运算。而日立的CPU SH4包含一个专门用于3D图形计算的Vector Graphics Engine,如下图。200MHz的情况下有1.4GFLOPS的性能。
而Triangle Setup则又是在GPU上进行,额外可以提供200MFLOPS的性能,所以共计1.6GFLOPS。

PS2:6.2GFLOPS
PS2的GPU同样不支持硬件T&L,GPU专门负责光栅化。而在CPU Emotion Engine中,几何运算由CPU FPU和两颗专门的Vector Unit协同处理。每颗VU可以执行4 x MUL和4 x ADD,共计4.8GFLOPS,加上CPU FPU一共6.2GFLOPS。
NGC:7.5GFLOPS
和前两者不同,NGC的GPU支持硬件T&L,所以浮点性能主要来自GPU,就不需要考虑CPU了。ATI以前公布过整个系统也就是CPU+GPU共计10.5GFLOPS,还公布了GPU的细节:
view transform / multiply*3, add*3 / 32bit / 1 cycle/
perspective transform / multiply*2, add*1 / 32-bit / 1 cycle /
clipping / add*1 / 32-bit / 1 cycle /
(*ct* ) / division*1 / 32-bit / 1 cycle /
(*ct* ) / multiply*1 / 32-bit / 1 cycle /
viewport scalling / multiply*1, add*1 / 32-bit / 1 cycle /
texture cordinate / multiply*3, add*3 / 32-bit / 1 cycle /
re-normalization of texture cordinate / multiply*2, add*1 / 32-bit / 1 cycle /
2. Lighting
transform normal vector / multiply*3, add*3 / 20-bit / 1 cycle /
caliculate light vector / add*1 / 20-bit / 1 cycle /
(*ct* some lighting caliculations) / multiply*3, add*3 / 20-bit / 1 cycle /
(*ct* . pointlight/spotlight/specular section .)
(lighting) / multiply*5, add*2 / 20-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / multiply*5, add*2 / 20-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / division*2 / 20-bit / 4 cycle /
(normalize) / multiply*2 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(lighting) / multiply*1 / 20-bit / 4 cycle /
(*ct* sum)
(lighting) / multiply*1 / 20-bit / 1 cycle /
(lighting) / add*x1 / 20-bit / 1 cycle /
(*ct* some bump mapping related caliculations)
(normalize) / multiply*1 / 20-bit / 1 cycle /
(scaling) / multiply*1 / 20-bit / 4 cycle /
(add offset) / add*1 / 32-bit / 4 cycle /
(normalize) / division of square root*1 / 20-bit / 4 cycle /
(lighting) / float to int*1 / 32-bit / 1 cycle /
Flipper Total: 46.5 floating point operations per cycle, so 46.5 * 202.5 MHz = 9.4 Gflops
以上是00年来自日本某杂志的翻译内容,原作者表示有的术语他不懂,所以用*CT来表示
后来ATI宣布GPU Flipper降频至162MHz,所以相应的浮点性能降低至7.5GFLOPS。
Xbox:7.3GFLOPS
Xbox的数据来源于维基,我实在找不到NV2A的细节,所以用维基和英伟达公布过的一张PPT来作为参考了,如有大神清楚请务必补充

也许有人会奇怪和NGC的GPU差不多,理应不是比GC好么。说明一下GC的浮点运算并不都是FP32,而上面的数值基本都基于32bit浮点,所以说只能作为参考。
PSP:2.6GFLOPS
PSP浮点来源于CPU FPU + VFPU,VFPU类似于PS2的VU0。
Wii:11.2GFLOPS
关于Wii硬件的细节非常稀少,和当初NGC时期老任对技术细节津津乐道完全是两种态度,可能因为在PS360前完全不想谈参数了吧。。不过实际上Wii的硬件架构和NGC是一脉相承,并没有太多改变,当然也有加强,比如Pixel pipeline从4条提升到了8条,不过总体架构并没有太多变化,只是将频率提升了50%,那么相应的浮点也提升到11.2GFLOPS,当然这算的就比较粗略了。
Xbox 360:240GFLOPS
360我们就比较熟悉了,就不多说了。浮点性能 = 48 x SIMD(Vec4 + Scalar)x 2 x 500MHz = 240GFLOPS。
PS3:246.4GFLOPS
PS3的数据似乎有所争议,不过按标准算法的话应该是 (8 x VS(Vec4)+ 24 x PS(2 x Vec4))x 2 x 550MHz = 246.4GFLOPS。上图中老黄也把PS3和360放在了一个水平上。
3DS:3.2GFLOPS
3ds的浮点性能的计算方法我已经发过了,不过这里修正一下,Fragment pipeline部分的combiner可以做MAD操作,但是全做MAD只是假设,实际上的话更多是做interpolate操作,也就是AxC+Bx(1-C),并且并不是每个combiner都会参与计算,而且并不都是32bit操作,所以用现在的标准去衡量并不合适(架构太过时了。。参考NV10的Resister Combiner),所以就不计入其中了,只算Vertex Shader的话就是3.2GFLOPS。
另外说明:New 3ds和原版3ds相比GPU没有任何变化,所以New 3ds就不收录了。
PSVita:28.4GFLOPS
PSV的GPU频率最高为222MHz,以最高来计算的话就是4 x 4 x Vec4 x 2 x 222MHz = 28.4GFLOPS。
Wii U:320sp x 2 x 550MHz = 352GFLOPS
Xbox One:768sp x 2 x 854MHz = 1311.7GFLOPS
PS4:1152sp x 2 x 800MHz = 1843.2GFLOPS
PS4 Pro:2304sp x 2 x 911MHz = 4197.8GFLOPS