我们暂且不说AMD官方资料的真实性,就单论模块化设计而言,推土机架构确实已经有了里程碑似的意义。当然除了这些新的设计之外。指令集的添加也是不可或缺的。要知道Intel新推出的Sandy Bridge架构在添加了新指令集之后。其游戏和多媒体性能得到了倍增。仅凭架构上的改变推土机架构显然还不足以与竞争对手对抗。那么他都加入了哪些指令集呢?
Snady Bridge架构中的AVX指令集也被推土机所使用了
推土机架构加入支持的指令集有,SSSE3、SSE 4.1/4.2、AVX、AES、FMA4、XOP、PCLMULQDQ等等,其中最关键的就是AVX。
AVX指令集在Sandy Bridge架构中我们已经进行过反复介绍了。但作为一款新产品,笔者认为还是有必要在这里介绍一些AVX指令集的。AVX,即Advanced Vector Extensions高级矢量扩展指令。AVX的特点由以下几个方面展现:
>>从128bit扩展到256bit的SIMD运算单元;
>>增强的数据重排,单个操作可同时处理8个32-bit共256bit数据
>>单条指令支持3操作数和4操作数
>>支持弹性的访存地址不对齐
>>AVX指令支持VEX前缀
AVX指令集可以执行256位浮点指令,但需要澄清的是,并没有什么所谓的“256位命令”。单精度命令都是32位的,双精度则是64位。使用今天标准的128位浮点单元,可以在一个时钟周期内并行执行四个单精度命令或者两个双精度命令。有了AVX效率就可以翻一番,亦即每时钟周期内执行八个32位单精度命令,或者两个64位双精度命令。AVX指令集的加入目的非常明确,就是为了提高处理器的浮点运算能力。当然为了配合这一指令集,推土机架构也进行了一些相关的改进。
在浮点运算单元方面,推土机架构准备了两个整合的128bit SIMD单元,这将兼容Intel的256bit AVX指令集,AVX将在这两个128bit SIMD单元中执行。AMD已经确定改变了原有在Bulldozer上的SSE5计划,将支持英特尔的256bit的SIMD指令集AVX。而对于浮点运算单元来说,每个时钟循环中都可以在两个处理器核心之间单独或共享使用。
除了通过指令集来提升浮点运算性能外,推土机架构还改进了其FPU(浮点单元),将其升级为了Flex FP。据AMD官方表示,每个Flex FP均拥有自己的调度器,并不依赖整数调度器来调度FP指令,或者会使用整数资源来调度256-bit执行。这将有助于确保FP单元在浮点指令发生时保持完整。Flex FP的最大优势在于其单个256-bit FPU可被2个整数核心共享。每一个循环任何一个核心将可以通过2条128-bit指令或者一条256-bit指令运行256 bits并行数据,或者每个整数核心能够同时执行128-bit指令。