黑耀镜の恶魔城

查看: 1330|回复: 3

[资源下载] 【科教】揭开次世代处理器革新风暴前奏——Cell处理器(不想了解者可以选择不回贴)

[复制链接]
发表于 2005-8-9 00:27:53 | 显示全部楼层 |阅读模式
2016-6-16 18:57 编辑 <br /><br /><P>靶心——Playstation 3游戏机</P>
<P>从纸面变成现实——历时五年的研发计划</P>
<P>2000年年中,日本索尼、东芝以及美国IBM开始探讨下一代游戏机处理器的构想,并于秋季达成了共识。次年3月,这三大巨头宣布正式启动位于美国得州奥斯汀的联合开发实验室——STI Design Center(位于IBM奥斯汀实验室ARL的三楼),一个新的Power PC联盟——STI(SONY,Toshiba,IBM)正式诞生。</P>
<P>这个实验室研究的项目进展似乎非常顺利,到了2002年3月份,索尼就首次向外界公布了初步的研究成果——Cell(细胞)的概况,并且很快就在同年的4月份宣布STI将共同开发新的芯片制造技术。</P>
<P>
从2001年起,超过400位美日工程师参与了Cell的研发</P>
<P>随着Cell项目进展,Cell研发团队也成倍增长,除了STI Design Center外,还启用了IBM远程站点的工程师,包括美国明尼苏达州Rochester、纽约Yorktown Heights、德国Boebingen以及以色列Haifa等地。之所以需要动用如此庞大的研发团队,原因在于Cell的效能目标定得相当高,没有现成的例子可以直接套用,IBM的工程师一再强调Cell是一个从零开始的计划。</P>
<P>AIM阵营理念的失落与STI阵营的宏伟目标</P>
<P>和十多年前的AIM(Apple、IBM、Motorola)阵营不同的是,当初的AIM是旨在合三家之力,利用RISC(精简指令集计算机)概念设计的PowerPC处理器能够击败CISC(复杂指令集计算机)中以x86为代表的Wintel阵营。不过由于微软略带阴谋的惰性、PC市场巨大的惯性以及传说中兼容x86的PowerPC 615遭遇流产,AIM阵营并没能在PC市场对Wintel阵营上形成有效的冲击。时至今日,苹果公司已经卖掉了一部分股票给微软以博取支持,摩托罗拉把芯片部门剥离出来,AIM阵营当初的豪言壮语已经没多少人能记起来了。</P>
<P>AIM阵营虽然没有达到预期中的目标,但是基于PowerPC/Power指令集的产品并没有像Alpha等同期的RISC处理器那样消亡掉,而是继续在扮演着重要的角色,是唯一依然在桌面电脑上不断更新换代保持着较强活力的RISC处理器,并成为Cell的重要构成元素之一。</P>
<P>STI阵营在2002年3月份的Cell主题演讲中,明确表示Cell是为索尼下一代游戏机(Playstation3)而提出的网络化计算概念,以大规模的片内MP(多处理)和高带宽连接架构等技术,把处理器的性能提升到空前的水平,配合开放式的软件环境,实现新的霸业。和AIM阵营相比,STI现在的目标更广阔,包括了游戏机、多媒体工作站以及网格计算,不再仅仅局限在某个领域。</P>
<P>第一代的Cell在运算能力领先英特尔为代表的x86体系三到五年时间,和当初PowePC/Alpha推出不久后就被Intel/AMD引入RISC内核反击相比,现在的Cell显然有更充足的时间来完成全盘的部署。Cell广阔的应用领域,正是Wintel阵营组合裂痕扩大的所在,微软的操作系统垄断优势在这里没有什么影响力,而PowerPC/Power处理器累计10年来的应用软件和开源软件却已经比较丰富。</P>
<P>索尼联合IBM与东芝的目的——各取所需</P>
<P>在Cell之前,任天堂已经采用了源自PowerPC的Gekko处理器作为GameCube的CPU,GameCube虽然并没有取得销量上的胜利,但是在市场上基本上还是能够达到和XBOX平分秋色的水平,保存了参与下一轮搏杀实力,作为一个几乎被边缘化的游戏机厂商来说,已经算是不错的结果了。这除了GameCube性能平衡的设计外,IBM提供的技术支持为开发人员提供了轻松的编程环境也是功不可没的。相比之下,索尼的Playstation2的编程便利性就一直受到开发人员的抱怨,STI阵营的组成,对于提高Playstation 3的开发效率无疑是有莫大的裨益,特别是IBM提供的SDK(软件开发包)。</P>
<P>IBM的Power架构其实包括三大系列:Power系列、PowerPC系列以及Star系列,三个系列的大部分指令是兼容的,其中的PowerPC是AIM阵营共同开发的,完全开放,其他厂商可以。Star系列已经停掉,由Power4取代。
在Playstation 3之前的Playstation1/2采用的都是MIPS指令集处理器(分别是LSI和Toshiba+LSI)提供的。</P>
<P>1988年,索尼开始了Playstation 1的前身——Super Disc的研发,当任天堂在1993年决定取消合作计划后,曾经为任天堂SNES设计了音频芯片的久夛良木健设计了基于MIPS R3000A的处理器(处理器内核授权来自SGI),作为索尼第一部游戏机Playstation的CPU。</P>
<P>在1993年的时候,AIM阵营刚刚成立,不过当时的Power指令集架构是完全封闭不对外开放的,而AIM的PowerPC 601还完全是一个新生儿。此外,索尼一直都抱有核心部件必须完全掌握在自己手里的企业理念,所以索尼选择早已开放并且直到1998年大部分时间依然是全球销量最大的RISC体系——MIPS指令集更加切合实际情况。</P>
<P>当索尼开发Playstation 2的时候,Playstaion 2被设计为Playstation1的升级版,Emotion Engine采用了MIPS指令集处理器内核。
</P>

; 915
 楼主| 发表于 2005-8-9 00:29:00 | 显示全部楼层
2016-6-16 18:57 编辑 <br /><br /><P>然而,接下来的问题让索尼头痛不已。PS2采用的Emotion Engine采用了一个全新的体系架构,引入的两个VU(向量单元)在当时缺乏高级工具,影响了性能上的发挥。
90纳米制造工艺,钯/SOI半导体,8层铜内连以及1层局部内连
Cell原型(DD1,ISSCC 2005上展示的)管芯面积为221平方毫米,正式的量产版[DD2]为235平方毫米
用散热片把芯片内部温度控制在85摄氏度时,1.1伏特电压能运行于4.06GHz
8个SPE(Synergistic Processor Elements),支持单精度和双精度运算
双通道XDR内存控制器,支持256MB XDR内存
把上述单元连接在一起的EIB(Elements Interface Bus)
</P>

; 067
 楼主| 发表于 2005-8-9 00:30:00 | 显示全部楼层
2016-6-16 18:57 编辑 <br /><br /><P>Playstation 2的Emotion Engine架构图
Cell融合了索尼PS2的Emotion Engine、IBM的网络处理器以及70年代中开始兴起的向量处理器概念。在七、八十年代,许多电脑系统都引入了针对环网的数据串处理功能,例如美国空军JSTAR计划中的Programable Signal Processor(源自CDC公司AFP(先进灵巧处理器)的构想);麻省理工在七十年代用封包通信架构开发的Project MAC数据流处理器,就是把捆绑了一条指令和两个操作数的“指令Cell”透过一个路由网络传递给一系列执行元件处理的。这类系统不仅在设计上看上去非常复杂性,而且在编程方面也是相当困难的。相对目前用于大型机的处理器来说,STI的Cell虽然看上去非常独特,但是其设计其实还是基于在过往二十年的研发积累。</P><P>为了能够达成设计一枚拥有大量并行处理单元并能提供确定性指令执行时间的芯片,就必须摒弃某些“理所当然”的微处理器设计概念。为此,PPE中的Power内核(PXU)去掉了乱序执行;SPE中的Local Store去掉了用来减缓cache命中失败性能损失的硬件cache一致性侦测。</P><P>Cell采用了RAMBUS授权的XDR内存总线和用于I/O和多处理内核连接的FlexIO总线,25.6GB/s的XDR内存带宽为Cell看上去“吝啬”的512KB L2 Cache提供了强大的性能支持。</P><P>和IBM使用较旧工艺生产的第一代蓝色基因(BlueGene/L,或者说PowerPC 440)处理器不同的是,Cell并没有集成网络控制器、周边设备控制器以及大型的内存矩阵(PowerPC 440集成了eDRAM,而Cell的local store虽说是内存,不过却是由更快但是容量更小的SRAM构成)。每一枚Cell必须做到具备比一枚BlueGene更强大的性能,因为PS3或者一台工作站能采用的Cell只能是一枚或者几枚,而BlueGene的设计初衷就是明确地以数千枚甚至数万芯片组成Peta等级运算能力的超级电脑。</P><P>Cell架构是在确定了性能和管芯面积目标的情况下来设计的。为了让Cell处理器能达成价格点,IBM必须顾虑到管芯面积。Cell原型版的管芯面积是221平方毫米(量产版为235平方毫米),略小于Playstation2第一代Emotion Engine(250纳米工艺)的240平方毫米。为了达到最佳的性能和管芯面积,IBM必须动用90纳米工艺和SOI技术,而这样的制造工艺并不支持eDRAM。</P><P>把网络等周边I/O控制放在处理器之外的芯片,能够给设计师提供更多发挥的空间。搭配不同的周边I/O,就可以在电视、工作站或者超级电脑中使用Cell了。索尼Playstation 3采用的周边I/O芯片应该是索尼自己的产品,具体的细节有待公布。</P><P>
控制中枢Power Processor Element</P><P>Cell的大脑是Power架构内核。如果我们把Cell看作是一枚网络处理器,那么Power内核就是一个控制平面处理器。这是一个重新设计的64位in-order、2-issue超标量Power内核,专门针对Cell设计,并非其他Power架构处理器的“老翻”。</P><P>由这个Power内核(即PXU,Power eXecution Unit)和512KB L2 cache组成的单元被称作PPE(Power Processor Element),在最初的Cell专利文档中,PPE被称作PU(processor unit)。PPE支持Power指令集和AltiVec扩展指令集,具备多线程,可同时对两个线程进行调度执行。</P><P>虽然STI曾经探讨过其他处理器内核,不过毫无疑问,由于IBM已经在Power上倾注10年的心血,拥有丰富的经验,因此Power指令集的采用几乎是不二的选择,但是STI并没有选择仅仅弄一个PowerPC 970FX(Apple机上的PowerPC G5)的SoC版了事。</P><P>Cell的Power内核是在“频率指标已死”的论调蔓延之前的年代就开始设计的,设计伊始的时候,STI就把Cell的时钟频率目标定在了4GHz以上。STI设计团队为此做了一个简化了的Power内核(例如in-order、2-issue超标量),并且在一些关键的计时部件上采用动态逻辑电路。
而PowerPC 970流水线深度为16级,时钟周期间隔为13个FO4延迟</P><P>PPE遵循PowerPC指令集架构2.02版(以及2.01的公开发布版),设计上采取了与PowerPC 970不同的、独特的管芯面积、时钟频率和体系架构效率平衡点。这个Power内核拥有相对较长的流水线(21级流水线深度,时钟周期间隔为11个FO4),就好像Power4和PowerPC 970的差别,但是PPE并不具备很宽的流水线,同时也没有很多的功能单元。</P><P>PPE具备硬件细密化(fine-grained)多线程(FGMT),支持以“轮讯”方式进行线程调度实现“细密化”多线程处理。当两个线程都是活跃的时候,那么处理器就会依次在各线程中拾取指令。当出现一个线程不活跃或者发射(issue)不出指令的时候,另一个活跃的线程就会被允许每个周期都发射出一条指令。多线程执行增加了大约7%的管芯面积,因为这需要增加寄存器文件、程序计数器以及指令解码工位之前的并行指令缓存。IBM的Power5具备吞吐效率更高的Simultaneous Multithreading(SMT),但是增加的芯片面积为24%(和Pentium4的Hyper-Threading不同,Power5的SMT具备动态SMT),而且Power5的超标量能力是4-issue per core,采用SMT的性能回报较高(+40%),把SMT用在只有2-issue的PPE上似乎不太合算。</P><P>多线程执行的好处是众所周知的,对于高带宽和游戏内容来说,我们应该可以比较容易地从软件中“提取”出多条并发的线程。在出现分支预测失败的时候,PPE会出现8个周期的流水线性能损失以及4个周期的数据cache装载存取时间损失。如果有一个线程出现分支预测失败的话,第一个线程通常可以马上执行,把流水线停滞的性能损失填补回来,从而实现更高的体系架构效率和更高的处理器资源利用率。</P><P>PPE拥有32 KB 2-way关联的L1 指令cache和32KB 4-way关联的L1 数据cache,cache存取延迟为一个周期。</P><P>值得注意的是,Cell的内存数据排列是big-endian(一个word的高位byte放在该word在内存区段中的最低地址处,word即字,是指处理器一次处理的指令长度,Cell的字长是64位)方式。虽然Power指令架构可以支持big-endian和little-endian(一个word的低位byte放在该word在内存区段中的最低地址处),但是Cell只支持big-endian。我们PC的软件一直以来都是little-endian,不过当年闹“RISC革命”后,所有的RISC处理器都采用了big-endian,像Apple机的软件就是big-endian的。所以,如果把Cell的软件或者Cell本身是弄到Apple上,内存数据的存放地址顺序并不是什么大的软件障碍。big-endian和little-endian本质上并没有什么相对的优势,不过little-endian比较方便人们的代码阅读。
</P>

; 105
 楼主| 发表于 2005-8-9 00:31:00 | 显示全部楼层
2016-6-16 18:57 编辑 <br /><br /><P>PPE的中断机制有些类似于PowerPC,当SPE和MFC(内存流控制器,SPE的DMA单元,不是微软炸鸡...)发出中断事件的时候,Cell会把这些中断以外部中断的形式传递给PPE。PPE还可以透过一个支持虚拟处理、比操作系统低阶的管理程序运行多个操作系统。</P><P>
爆裂筋肉Synergistic Processor Elements
SPE的Local Store采用eSRAM
但是没有复杂的cache控制电路
控制任务交给程序员和编译器来完成</P><P>
从LS中取指的长度也是128个字节(由32个4字节组组成),不过为了提高取指带宽的效率,这些指令会以64个字节为排列边界存放在latch中,latch的两端就能同时写入、读取指令了。正是因为这样的设计,local store的load和store动作之间的延迟时间被最小化。IBM认为,只要采用优化的代码,local store的利用率可以达到80~90%的水平。</P><P>如果要对Local store进行存取,是要按照轻重次序排队的,PPE发出的load-store DMA传输被定义为最高的优先次序,其次是SPE的load-store,SPE的指令拾取次序则会被安排到最后。SPE在遇到一个分支预测失败的时候,会造成相对较长的性能损失(18个周期),不过SPE有大容量的local store,因此IBM鼓励编程人员把循环(loop)代码展开(unrolling),减少因为分支预测失败造成的性能损失。SPE里有一些对分支有帮助的措施,例如branch hint(分支提示)指令,一个三源按位选择。如果分支被正确选取和提示(hint),那么SPE可以看作是能够做到性能无损的分支预测。</P><P>Cell的设计师力求简化以达到较佳的性能/晶体管比例,因此尽管IBM坚持SPE能够做CPU能做的任何事情,但是本质上还是更加类似DSP。SPE采用了in-oreder的流水线,去掉了动态分支预测,但是和大多数的流水线式CPU(例如PowerPC 603)一样,还是能够做静态分支预测的。 </P><P>Cell的架构可以把LS映射到系统主内存中的实地址空间,由拥有“特权”的程序对内存的映射作控制。在Cell中,内存映射是一个2-stage(二阶段)的过程:先使用SLB(区段监视缓存,segment lookaside buffer)把有效地址(effective address)转换成虚拟地址(virtual address);然后使用TLB(translation lookaside buffer)把虚拟地址转换成实地址。在PowerPC架构里,是由“特权”软件程序管理SLB,硬件管理TLB。SPE的内存管理是PowerPC的超集,TLB除了能够由硬件来管理外,也可以让“特权”软件来管理。软件管理能够提供更大的内存页面表灵活度,但是需要更多的性能开销。顺便一提的是,PPE的MMU执行方式PowerPC架构保持一致。</P><P>在SPE中,如果出现一个定点操作或者一个浮点操作是按照偶数字长(even-word)来排列,并且load指令是奇数字长(odd-word)排列的时候,那么此时的SPE就具备了一定限度的双指令发射(dual instruction-issue)能力,这样的架构安排有些类似老Pentium,并且隐约间透露出一点(V)LIW的痕迹。</P><P>SPU单元从一开始就被设计成可以塞到一个包含进很多执行单元的矩阵中,其编程模型并没有被预先定死,对流水线(pipeline,或者说streaming,流式)和并行(parallel)式处理模式都提供了支持。</P><P>在流水线处理执行模式下,数据会轮流在各SPU上跑不同的操作,跑出来的中间结果会传给下一个编号(SPU的编号有0~7)的SPU跑。SPU采用流水线执行模式的好处是可以让各SPU执行的代码相当“细小”,整个运作比较好管理,更居预见性。可预见性是设计Cell处理器时的重要目标,也是SPU为何有内存(虽然是SRAM)而没有cache的原因之一。不过流水线方式缺点是难以做到每个阶段上SPU分配到的任务所需要的时间和复杂度都是等同的,如果其中某个SPU分配到的任务非常复杂,那么整个“流水线”的效率就会受到这个SPU影响(其他阶段的SPU会停下来等待)。</P><P>并行模式的灵活性要更高,但是任务的完成时间更加难以确定。每个程序通常都由一枚指定的SPU来全部完成,这样提高数据存放的本地化程度减少数据的复制次数,整体的吞吐量也比较高。缺点是需要更多的线程管理和数据一致性管理开销。不过一颗90nm的Cell有多达8枚SPU,我们可以把上述的两种执行方式混合起来运用,例如多媒体的处理和通用计算是存在差别的,其数据形态更具并行性。</P><P>不管是流水线模式还是并行模式,Cell的内存模型都支持对内存位置的共享,某个SPE中local store的有效地址可以被Cell中的其他处理单元另命别名(alias)。由于有大量的128位寄存器和内存转址缓存,前后关系交换(context switch)的时间成本和存储空间成本会非常“昂贵”,因此IBM的工程师高度建议给每个SPU分配的是一个能单独完成的任务,程序编写的时候要做到每个SPU都能够获得要完成任务所需的全部指令和数据。</P><P>SPU和MFC之间的通信是透过一条SPE Channel(SPE通道)实现的,每条SPE Channle都是一条具备多种查询深度的单向通道,可以配置成块方式(blocking)或者非块方式(non-blocking)。SPU命令必须按照SPU的接受顺序来执行。SPU透过这条通道和一个外部事件控制器,SPU可以设置为执行或者等待状态。SPU和PPE之间的通信可以透过MFC提供的两个mailbox(邮箱)队列来实现,这些32位的mailbox信息是由用户定义的,在PPE中,这些mailbox在内存中被映射到I/O空间地址。</P><P>虽然SPE在各类数据的处理、load和store的控制以及分支处理等方面都相当了得,但是SPE并不是设计成跑操作系统的,和Cavium Networks公司的16个MIPS-64bit内核处理器Octeon相比,这的确简化了SPE的设计。为了达成运行高时频的目标,SPU在某方面的设计也有些类似于PPE,例如用in-order的执行机制简化电路和减少数据相依性的检查,但是分支预测失误造成的损失要比PPE高的多。IBM还在SPE中应用了动态逻辑电路来实现低耗能高频运行。</P><P>Cell没有引入专门用于安全事务处理的单元,而是交给了SPU来完成这个任务,不过对于SPE是如何达成这个任务,STI目前还没有透露。我们前面提到,Cell有一个别具特色的设计,可以利用硬件保护功能把各个SPE隔离开来,在这样的模式下,SPU(s)被专门用于安全运算,不受系统其他单元的侵扰,拥有受专门保护不会被其他进程访问的内存。该特性将成为未来数码版权管理(DRM)的执行方式,SPU的“信任计算”所在。</P><P>
内存流控制器(Memory Flow Controller)</P><P>让我们继续从生物学的观点来看看Cell的其他部件:Cell的心脏——MFC(内存流控制器)以及Cell的血管系统——EIB(执行单元内连总线,Element Interconnect Bus)。为了维持Cell处理器的运行,MFC可以支持超过128个未决内存请求,而要让SPE保持较高的利用率同样需要MFC提供对大量事务流的同步。</P><P>MFC有自己的内存管理单元(MMU),属于PXU MMU的子集,具备64位虚拟内存寻址能力,新引入了16KB和64MB的页面大小,传输包的数据大小可以从1个字节到16KB,不过IBM的工程师表示尽量不要采用小于一条cache-line(128个字节)的传输包以获取最佳的效能。MFC支持分散/收集(scatter/gather)以及交错式(interleaved)操作。</P><P>根据IBM在Cell的DMA命令Lis机制(用来确定DMA命令列表存放在local store中什么地方并递交给DMA单元异步执行)的经验来看,对于那些在达至SPE运算极限能力之前就先受制于内存带宽的SPE程序,是可以从大跨度内存空间定址和预拾取(Prefetch)上获益良多。MFC采用的DMA-list机制有些类似于显示卡上采用的dislplay-list。</P><P>MFC在SPE和内存之间的数据传输使用的是get和put命令,每条命令都能有一个指令修改符(instruction modifier,有一个"s"前缀),用来指示SPE在这次传输完成后的程序计数器寄存器开始处理指令。MFC可以直接从SPE获取数据并装填到PPE的L2 cache中,让PPE更快的获得关键数据。</P>

; 367
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|主页

GMT+8, 2024-12-22 20:53

Powered by Discuz! X3.4

Copyright © 2003 CVCV.NET. all rights reserved.

快速回复 返回顶部 返回列表