虽然英特尔率先推出了整合显卡的Core i5/i3处理器,不过,正如初的Pentium D双核处理器一样,英特尔这种"CPU+GPU"的设计具有两个独立的芯片,仅仅是两个功能模块的简单叠加,属于一种过渡方案,并非原生的单芯片解决方案。而AMD的APU则是采用更先进的原生方案——将CPU和GPU内核完全融为一体的单芯片方案,这样让内核之间的数据交换效率更高。
Fusion APU主要由x86架构的CPU核心(先上市的Ontario和Zacate APU处理器将基于“Bobcat”架构)、DirectX 11 SIMD引擎阵列、UVD高清视频引擎、数据总线和DDR3内存控制器等几个模块封装在一个核心内构成。CPU和GPU各司其职,各自分别拥有独立缓存。CPU和GPU通过切换开关互相连接,而整个APU内部的各个组件之间通过HyperTransport总线连接成一个整体。CPU和GPU可以直接访问存储器,CPU和内存之间,以及GPU和内存之间均使用交叉开关进行连接,并且CPU和GPU可通过共享内存进行数据交换。APU这一设计的大优势是可以消除现有AMD平台上各部分之间的互连瓶颈。在目前的AMD整合平台上,原本位于北桥芯片的总线控制器和内存控制器都已经集成到CPU内部,但是内存控制器与内存之间的带宽仅有17GB/s左右,北桥与集成显卡之间的带宽更是仅仅只有7GB/s左右,这已成为瓶颈所在。更为严重的是,集成显卡与内存通信时还需要绕道北桥部分,增加了通信延时。AMD APU在将所有这些功能模块全部整合到一块晶片后,将可以提升各组件之间的带宽。APU内部的GPU图形阵列、UVD解码引擎与北桥模块及内存控制器之间的通道高达27GB/s,内存控制器和内存之间的带宽也同样达到了27GB/s。另外,GPU与内存之间也可以直接通信,带宽增加了三倍,大大提高了GPU的执行效率。
尽管Fusion APU是一个全新的CPU和GPU的融合方案,GPU部分将采用与目前AMD Radeon HD 6300M/6250M相同级别的图形核心,除了支持DirectX 11外,还能通过OpenCL支持GPU加速运算。Fusion APU内核架构大的亮点是引入了全新的“Bobcat”架构。
Bobcat是AMD全新架构的新一代处理器核心,与Bulldozer一样,Bobcat也将整数运算执行单元和浮点单元分别独立开来,只不过Bobcat内核的整数运算“簇”比Bulldozer更少。那么,什么是整数运算“簇”呢?在这里有必要解释一个Bulldozer架构中所采用的新内核设计理念。
Bulldozer的内核引入了灵活的模块化设计:在现有的设计中,每个物理核心对应单一独占的整数运算单元和128bit浮点运算单元。而在Bulldozer架构中,每个物理核心具有两个整数运算单元和一个共享的256bit的浮点运算单元。同时,这个256bit的浮点运算单元可以根据需要拆分为2个128bit的浮点运算单元,供两个整数运算单元搭配使用;或是以1个256bit浮点运算单元的模式供某个整数单元独占。这样一个单独的单元被AMD称为“核心模块”,这也就是Bulldozer所谓“1.5核”说法的由来。而当多个Bulldozer处理器并联时(这在服务器领域几乎是必然的),两个“核心模块”组成的“簇”便成为了AMD集群多线程技术中的基本单位。而Bobcat处理核心中的“核心模块”则只包含了一个整数单元和一个浮点,并不支持集群多线程技术,故每两个核心模块才只拥有一个“簇”单元。简单来说,“簇”在这里被定义为整数计算能力,每两个整数单元等同于一个“簇”。
AMD为什么要在核心设计中单独增加整数单元的数目?这与AMD的异构计算策略不无关系。简单来说,现有的GPU具有远远强于CPU的浮点计算能力。在AMD提出的GPU与CPU协同计算的平台战略下,与其事倍功半地提升CPU的浮点计算能力,不如将浮点计算交与GPU完成。在这种情况下,整数计算能力将成为制约整个平台性能的瓶颈,那么,有意识地提升APU的整数计算能力无疑就是一种必然的选择。
上图左为Bobcat的一个“簇”,它的整数单元(INT)只相当于Bulldozer(上图右)的半个“簇”。
AMD的Bulldozer和Bobcat架构通过将两个线程的整数运算独立开来,从而达到了大幅度提升基本应用的性能。需要说明的,尽管在架构上有所缩减,Bobcat架构依然保留了Bulldozer架构的基本规格,比如每个核心配备64KB一级缓存(32KB指令缓存+32KB数据缓存)和512KB二级缓存,并完整支持ISA、SSE1/2/3、SSSE3指令集和虚拟化技术。