推土机架构分析

      推土机”将采用32nmSOI工艺,这让“推土机”相比“马尼库尔”皓龙处理器可以在不增加功耗的前提下增加33%的核心数量、增加50%的吞吐量。与AMD之前所有处理器都有所不同的是,“推土机”采用了“模块化”的设计,每个“模块”包含两个处理器核心,这有些像一个启用了SMT的单核处理器。每个核心具有各自的整数调度器和四个专有的管线,两个核心共享一个浮点调度器和两个128位FMAC乘法累加器。 所不同的,在K10架构中,ALU和AGU共享三个管线(平均1.5个),“推土机”中每个核心整数单元管线的数量增加为4个,2个AGU专有、2个ALU专有。L1缓存也有所不同,在K10架构中,每个核心具有64KB L1指令缓存和64KB L1数据缓存;而“推土机”每个核心具有16KBL1数据缓存、每个模块具有64KB双向L1指令缓存,至于减小的L1缓存是否会影响性能还有待观察。两个核心共享L2缓存,模块之间共享L3缓存及北桥。 AMD“推土机”模块 “模块”和“核心”,这让我们不免会产生混淆,实际对于用户们来说,没必要去刻意的关注“模块”的概念,这只不过是AMD在设计上的称谓,而当产品投放市场的时候,依旧会以核心数量为标识,比如我们说采用推土机架构的“Interlagos”服务器处理器具有16个核心,而不会说是8个模块。对于为何采用这种“模块”设计的主要原因,AMD表示是“为了减少CPU的冗余电路”。
       如果采用CMP的方式,随着核心数量的增加,CPU的核心面积也会越来越大,重复的电路也会越来越多,功耗也会随之增加——因为CMP是采用复制核心的方式。而采用“模块”设计可以大大减少冗余电路,这对核心的大量增加很有意义。比如“推土机”,两个核心共享浮点部分,对于大部分服务器应用来说,整数运算的部分要远远高于浮点运算(高性能计算除外),所以将浮点执行单元共享并不会影响大多数应用中的性能。而整数部分则不是共享的,否则会造成瓶颈。 上文我们回顾过CMP和SMT设计的特点,我们可以把AMD“推土机”架构看做是介于这两种之间的一种设计:两个线程(核心)共享浮点执行单元,但是各自具有独立的整数执行资源。这看上去像是SMT的另一种形式,或者说是经过AMD改良的一种“AMD式的第三种方式”。但与传统的SMT设计不同,SMT仅仅复制的是核心的存储部分,一个线程一个存储模块(registerfile),而AMD“推土机”架构中,每个线程复制的是完整的整数执行单元硬件,一个线程具有一个存储模块(registerfile)和一组完整的整数执行单元。 AMD“推土机”核心架构的一些特性 每个线程具有独立的整数执行单元是AMD“推土机”和双线程SMT设计的主要区别。不过从“推土机”的设计来看,这并不像真正意义上的“CMP双核”,毕竟两个核心还要共享浮点执行单元,或者可以称之为“1.5核”。这样设计的好处就是能够大大节省晶体管的数量、降低核心面积和功耗,同时降低成本。即使不是真正的“双核”,但不难想象这样的设计要比SMT更加高效,相比之下,传统的SMT设计可以称之为是一种“1.2核”的设计。 AMD表示平均计算下,一个单独的“推土机”核心执行两个线程可以达到1.8核CMP的效率,但是,这样的数字也是要依赖于负载情况。虽然“推土机”的模块设计要比传统的SMT设计在执行效率上更高,但是增加的整数执行单元也提高了成本和能耗。另外,没有意外的话,AMD“推土机”应该具备很好的浮点计算性能。AMD表示虽然FPU是被两个线程共享的一个部分,如果给予足够的内存带宽,芯片将具有很高的浮点运算能力。


相关标签:推土机
上一条   下一条