性能提升来自“内功”:皓龙6200架构解析
DOIT原创 崔昊 发表于:12年12月14日 09:27 [原创] DOIT.com.cn
性能提升来自“内功”:皓龙6200架构解析
AMD皓龙6200处理器采用AMD两年前就已经预览过的新一代处理器架构Bulldozer(推土机)架构,AMD当初开发Bulldozer架构的初衷在于,经调查发现日常的IT应用主要集中于整数运算,而浮点运算相对较少。为了提高多线程处理的性能,AMD设想可不可以用2+1的方式来解决,即两个整数处理核心+1个浮点处理单元,以组成一个新架构的处理单元——Module(模块)。
由于这种2+1的核心设计,在Bulldozer的架构中,其核心(Core)的概念已经与传统认识有了较大的不同,单一的核心并不是一个具备完整功能的处理单位,所以AMD一直在用Bulldozer Module来表示Bulldozer处理器的处理单元,所以在后文的介绍中,对于Opteron 6200我们也将用模块和核心两个概念表述——在这里,核心是指组成模块中的整数处理单元,它们共享一个弹性浮点处理单元(Flex FP)。
在Bulldozer架构中,非常值得一提的是由两个整数处理核心共享的Flex FP处理单元与新增加的独家指令集。这一Flex FP由两个128bit FMAC(Fused Multiply–Add Capability,混合乘加)处理单元组成,之所以称为弹性(Flex),是因为这两个单元可以各自独立,为每个整数核心提供独享的128bit浮点处理单元(此时可以认为是两个具备有整数运算+128bit浮点运算单元的处理核心,组成了Bulldozer Module),也可以组合成一个256bit的浮点处理单元为一个模块提供服务,这其实给编程人员提供了很好的弹性,但也预示着对现有的应用需要进一步的优化。
简单来说,这种两个128bit单元弹性组合的方式,提供了有多种指令处理的模式,比如对于同时执行两个128bit的AVX指令,SandyBridge单一的256bit FP单元就不行了,而Flex FP则可以,同样的,这也适用于SSE指令。所以,AMD强调,除非是256bit的AVX指令环境,否则6200的单周期浮点处理能力是SandyBridge的两倍,显然灵活的可分拆也可组合的Flex FP功不可没。
而为了发挥Flex FP的强大的威力,AMD也专门开发了两套针对浮点运算的指令集FMA4与XOP,两者可以说都是为高性能计算所服务,但侧重点不太相同,FMA4更有针对性,比如向量和矩阵计算、多项式评估、数据信号处理等,而XOP则针对数学、多媒体应用等。目前,主流的编译器大多已经全部或部分支持AMD的新指令集,因此在发挥Bulldozer的浮点威力方面,还是很让人期待的。