2016-10-18 更新
最近再上advance computer architecture,之前做的基本上都是application-based的应用,对通用处理器架构没什么接触,上了这门课程之后逐渐对microarchitecture有了深入的理解。
对这个问题也产生了新的思考,对之前肯定的答案有所保留。
之前的答案主要是从计算能力(特别是浮点计算能力)上进行分析,考虑通过资源换速度的方式来用FPGA等效高频的通用处理器和浮点处理器,这本质上相当于通过并行处理来替换串行处理(虽然现代处理器基本上都是superscalar OOO架构处理器,但和FPGA这种并行相比并行程度还是很低,浮点处理器GPU并行程度要高于CPU,但仍会低于FPGA),这里能够实现并行化有一个非常重要的前提,那就是程序是否有足够多的parallelism,在architecture里面对应一个很重要的概念就是ILP(instruction level parallelism),从70年代到90年代有很多在ILP上的研究,对ILP的争论从1.58-90,甚至上千。其中一些很有意思的idea推动了microarchitecture的发展(cache, branch predictor, compiler, superscalar, OOO这些都是现代processor重要部分),然而ILP同样还和程序本身的workload有重要的关系,也就是程序本身是否有足够的并行程度,或者说程序自身运算和控制逻辑是否有足够的independency,如果控制逻辑和计算逻辑有大量的前后依赖关系(dependency),那么程序肯定没有足够的ILP,即便运算资源再多也无法实现并行处理。
回到本题FPGA能够用资源优势去实现PS3甚至PS4的一个重要前提是跑在PS3上面的软件(操作系统加游戏,或者更抽象一些不一定要有操作系统就是最终能将游戏运行出来的任务)是否有足够的ILP?这个我没有做过游戏,还真回答不出。
======================================================================
2016-07-31 更新
这里根据评论区 @oz01 的指正,增加了对PS3 GPU浮点运算能力的相关说明。
======================================================================
这个问题对我来说很有意思。因为今天之前我从来没有仔细了解过PlayStation,对游戏机的认识也还停留在红白机阶段(捂脸),今天看到这个问题,简单搜索了一下PS3,赫然发现接近250GFLOPS的浮点运算能力,闲置时进行蛋白质折叠效应的科学计算。这显然已经超出了人们对一般电子消费品的认识。
下面我们来详细分析分析楼主的问题,FPGA是否可以全速模拟PS3。
1,运算能力
这里我们首先来了解一下PS3处理器架构。
PS3采用cell微处理器,由一个主频3.2GHz的PowerPC架构的处理单元PPE(power processing element)和6个浮点协处理单元SPE(Synergistic Processing Elements)构成。本身cell处理器有8个SPE单元,除了上述的6个外,第七个负责操作系统和安全方面的运算,第八个由于良率原因屏蔽。
上述文字来源PlayStation 3 technical specifications,此外还有一个NVIDIA G70架构的GPU,这里GPU主要提供极高的存储带宽,并没有显示提供浮点运算能力。注:这里对GPU架构了解不多,仅参考维基百科给出的参数。根据评论区@oz01的指正,这里PS3的GPU-RSX也担负着很多的浮点运算需求,这里主要包含图形渲染处理,在GPU中主要以shader运算衡量计算能力,根据文章PS3的GPU-RSX纯技术分析的计算公式,PS3的RSX浮点运算能力约为400.4GFLOPS.
对于PS3来讲核心的运算能力是浮点运算能力,主要计算能力由cell处理器给出,cell处理器实际上是一个异构处理器,根据specification可知其单精度浮点运算能力为230.4GFLOPS,等效双精度浮点运算能力15GFLOPS.
综上,整个PS3的浮点运算能力约为631GFLOPS.
下面对应的我们再来看一下,Xilinx/Altera最新FPGA的浮点运算能力。
本图摘自Xilinx官网DSP,我们核心关注最大浮点运算能力,这里图中给出的3个系列的FPGA均超过了631GFLOPS,两个系列FPGA远远超过了该数值。图中还有一个最新的ultrascale+ MPSOC系列的数据没有给出单精度浮点运算能力为1333GFLOPS.当然这里图中给出的应该是该系列FPGA中最大规模的片子对应的处理能力。
下面再来看一下当初产品发布时轰动一时(虽然现在还没量产)的Altera Stratix10的技术指标。
从图中看出,Altera直接使用了TFLOPS为单位,也就是说Stratix10的FPGA全系列单精度浮点运算能力都超过了1000GFLOPS.
从数据结论上,单片FPGA的浮点运算能力足够支持PS3运算需求。
2,内存接口能力
根据ps3_百度百科PS3住内存容量256MB,绘图内存容量256MB,主内存带宽25.6GB/s,绘图内存22.4GB/s。
对于FPGA来讲,相对通用处理器最大优势之一就是其借口能力。Altera和Xilinx最新一代的FPGA基本都支持DDR4内存接口,可以达到2400MHz的时钟外频,也就是说32位内存总线即可达到25.6GB/s的内存带宽,因此挂两片内存颗粒即可满足PS3系统内存需求。
3,外部接口能力
PS3支持BD,DVD,CD等存储介质,包含千兆以太网,WIFI,蓝牙等接口。
对于FPGA来讲,这些都是小意思,即便小容量的FPGA也完全有支持上述全部接口的能力,还是那句话,FPGA相对通用处理器接口能力是优势。
4,系统架构分析
说完了一些技术指标,其实都是纸面上的东西,如果真正要用FPGA去模拟PS3,核心还是系统架构的设计,或者说用什么样的硬件架构,软件接口来实现PS3的功能。
我们首先看硬件架构,
PS3的cell处理器,他包含一个PowerPC架构的通用处理器来跑操作系统,实现一些控制,调度的功能,核心的浮点运算应该在6个协处理器上实现,显示方面由显存和显卡负责。
对应FPGA,实际上可以从硬件上克隆这种架构,现在最新架构的FPGA基本上都带有硬核(叫做FPGA SOC),比如Xilinx的ultra+mpsoc,Altera的Stratix10和Arria10 FPGA SOC都有硬嵌4个ARM A53核心,有的还包含GPU单元。此外,纯FPGA也可通过microblaze或者nios II软核来实现通用处理器的功能(当然这里处理能力可能达不到PS3的需求)。这部分可以等效替代PowerPC架构的处理器,然后利用FPGA大量的片内资源(主要是DPS资源)来实现浮点协处理器单元,根据第一部分的运算能力估算,等效6-8个相同运算能力的协处理不成问题。这种方案可以看作完全模仿PS3的cell处理器架构。
除了上述方案,其实还可以有更开放的实现架构,FPGA的优势是分布式的海量的逻辑资源,因此可以不局限于6个协处理器的架构,可以充分利用FPGA并行运算的优势,采用更扁平化的架构对FPGA逻辑资源或者说浮点运算单元进行抽象。这样可能原来PS3需要大量顺序处理在FPGA新的实现架构上可以直接并行处理,一定程度上个可以削减CPU的调度逻辑和一些应用的实现复杂度,从而减少CPU的负荷。总而言之,在不考虑软件接口这一层面的东西时,FPGA在硬件架构上可以带来很大的想象空间。
当然软件接口是非常重要的一方面,因为可能对整个系统来讲绝大部分工作都是在软件上面实现。通常从底层硬件到应用层软件的层次结构如下:
PS3在PowerPC的CPU上面跑的系统内核内核,针对其游戏相面的应用应该还有一些独特的多媒体相关的东西。
对于上述两种FPGA硬件架构实现方案,从软件接口实现难度上来讲还是第一种更为容易一些,因为他就相当于在FPGA上实现一个cell处理器,软件上可以尽量兼容,对于ARM A53架构处理器已经在手机等移动设备上大量使用,因此一定有大量的软件资源可以直接使用,只要将FPGA片内资源尽可能的做的和cell的些处理单元兼容就可以在软件接口上节约大量的工作。当然由于FPGA没有ASIC那么高的主频,因此从实现角度上会存在大量资源换速度的情况,因此接口上不能做到完全的一致,但是理论上可以做到上层应用完全兼容。
对于第二种更加开放的硬件架构可能在软件接口实现上就很难做到兼容了,这就意味着大量软件接口需要重新设计,在操作系统这一层可以给出更加丰富的API供应用层使用,实现复杂度和难度也会提升,但实际上并没有什么太大意义。
5,最后我们看一看价格
PS3 06年上市,现在我查amazon基本上是200-300刀的价格,上市价格还请资深玩家给出。而对于Altera/Xilinx的高端FPGA,能达到PS3性能需求的官网报价应该都在大几千刀,实际市场价也绝对在千刀以上,这还只是一个处理器的价格,而作为产品是包括各种外设,电路板,包装等等。
所以说用FPGA来模拟PS3别的不说,绝对是一件很贵的事情。
PS3毕竟是10年前的产品了,而相应比较的FPGA基本上都是这几年的产品(有的仍未量产),我们可以再来看看13年上市的PS4的一些技术指标,PS4主要浮点运算能力在GPU上,达到1.8TFLOPS,内存为一块8GB GDDR5共享内存,存储带宽176GB/s,单从性能指标上来看理论上还是有单片FPGA可以支持的,但是实际上由于时间比较近ASIC的性能优势巨大,可能需要FPGA很多资源去换速度上的性能,因此成本和实现难度也会大大提升。