细读PS3之CPU-BE架构 - 图文 下载本文

个应用是Sony的Playstation 3,那么PPE的简单是不出奇的。如果Cell想要进军PC的话,那PPE显然必须得到加强,或至少搭配多个PPE才行。

Cell的Die的主要部分由八个Synergistic Processing Element(SPE)组成。如果把PPE看作是通用微处理器的话,那么SPE就是稍微有些特殊侧重点的通用处理器了。

每个SPE是一个功能完整的独立微处理器,但被极度简化了,并且不像PPE那样通用。SPE没有缓存,但每个SPE却拥有256KB的局部存储器(稍后我们将讨论局部存储器和缓存之间的差异)。每个SPE还拥有总共达7个的执行单元,包括一个整数单元,所以SPE能够执行整数运算以及SIMD浮点计算。 SPE是双流程的,也就是说它们最多能够执行2条并行的指令。SPE和PPE两者都采用双流程,引起了对Cell晶体管数量和芯片大小的关注,因为增加流程宽度直接关系到这两个关键的项目。

SPE没有分支预报器,意味着它们完全依靠软件分支预报。编译器有方法能够消除分支,而SPE构架非常有助于像解开回路这样的事情。任何初级程序员对回路都很熟悉,在那里一行或多行代码被重复,直到满足某个条件为止。那个条件(例如i < 100)的校验通常会导致分支,所以消除那个分支的一个办法是简单地解开回路。如果在一个应该执行100次的回路中有一条语句,那要么可以把它留在回路中并照样执行,

要么可以取消回路并简单地复制该语句100次。最终结果是相同的 - 唯一的差别是在一种情况下有分支条件,而另一种情况导致了更多行待执行的代码。

打开回路具有的问题是需要很多寄存器来解开若干循环,那就是每个SPE拥有128个寄存器的原因了。SPE原先应该使用VMX(Altivec) ISA,但由于需要多于32个的寄存器,SPE执行了新的ISA,支持128个寄存器。

每个SPE在每个时钟只能够处理两条指令,也就是说每个SPE最多能够同时执行两条指令。微处理器的流程宽度在很大程度上可以决定微处理器将有多大;例如,Itanium 2采用6流程核心,所以作为2流程核心的SPE明显小于大多数的通用微处理器。

最后,我们在SPE上看到的是它们牺牲了一些正常的改进ILP的技巧,以便能够在一个单独的Die上塞进更多的SPE,为了更大的TLP而有效地牺牲掉一些ILP。既然行业前进的方向是这样,那么向极其侧重TLP设计的迁移是很有意义的,但同时,它将相当依赖于使用非常特殊的开发模型的开发商。

很明显,Cell的设计师把SPE当作运行高度并行化工作量的手段,正如Derek Wilson在他关于AGEIA PhysX PPU的文章中所提到的:“特征很好地适应PC内专门的处理器的图形,它的性质之一就是任务是可无限并行化的。每个帧需要处理数十万,甚至上亿个的像素。渲染需要处理得越细致,并行任务就变得越多。这对物理模型同样成立。相对于现实世界,物理世界是连续的,而不是离散的。拥有越多的处理能力,就能够立刻模拟更多的东西,从而能够越实际地逼近现实世界。”

由于NVIDIA为Playstation 3提供GPU,所以Cell的SPE阵列在游戏控制台中由一个明确的目的 - 物理及AI处理。许多人认为,SPE的阵列能够接管GPU的像素处理工作量,但对于高性能控制台来说,那不是很有意义的选择。SPE阵列能够提供更好的基于CPU的3D渲染,但对于这个SPE阵列来说,那将是艰苦的工作,不如使用专门的GPU硬件。

Cell的On-Die内存控制器

多年以来,我们知道Rambus的内存和接口技术远远领先于竞争对手。问题是它以前从未在PC上得到很好地实现。在RDRAM用于PC的早期,Rambus品牌收到了相当负面的评价,并且由于Rambus对DDR世界的诉讼使得该公司的形象变得更差了。

Rambus在许多消费电子设备中已经获得了成功,例如HDTV及Playstation 2,所以当Cell宣布大量使用Rambus技术的时候,并不让人太过吃惊。正如我们早先报导的,在Cell上大约90%的针脚用到了Rambus技术。剩下的10%大部分是测试针脚,所以Rambus基本上掌握了出入Cell处理器的所有数据。它们以两个方法来做到这一点:

首先,Cell包含了一个On-Die双通道XDR内存控制器,每条通道有36-bit宽(ECC为32-bit)。Cell的XDR内存总线运行在 400MHz下,但XDR内存以8倍于内存总线时钟的速度传输数据 - 那意味着获得了3.2GHz数据通讯数据。最终结果是类似于GPU显存带宽的25.6GB/s。我们知道,在增加处理器核心数量的时候,内存带宽需求会惊人地增长 - 由于Cell中的9个核心,XDR是理想的选择。注意到GeForce 6800GT就向它的GPU提供了32GB/s的显存带宽,所以看到Playstation 3的GPU搭配它自己的局部存储器以及能够共享系统内存和带宽也不会太令人吃惊。

标注为MIC的模块是XDR内存控制器,而XIO模块是物理层 - 所有的输入接收器和输出驱动器都在XIO模块中。数据管线也放在了XIO模块中。

正如在AMD的Athlon 64上已经看到的,拥有On-Die内存控制器显著减少了内存延时,这也发生在Cell上。

Cell的On-Die FlexIO接口

Cell另一个重要的I/O技术也受Rambus控制 - FlexIO接口。Cell配备了两个可配置的FlexIO接口,每个为48-bit宽,拥有6.4GHz数据通讯速度。

BEI模块是北桥接口,而FlexIO模块是物理FlexIO层。

“可配置”这个词是特别重要的,因为它意味着无需连接每条线路。进一步解释这个概念,就是不要把FlexIO接口看作只能连接到一个芯片的,而是具有不同宽度FlexIO接口的多个芯片。