|
楼主 |
发表于 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 |
|