本帖最后由 datedate 于 2011-5-23 15:11 编辑
千万不要买第一代I3 I5 I7 因为其中没有整合AVX指令集
下面介绍一下AVX FMA4 XOP指令集
自进入北岛Cayman后,AMD的R600构架进入了新的体系,4D VLIW.VLIW4单元的运算功能主要可以分为(如下面所示)
1个周期能够执行:(与通用运算无关的特殊功能不记入讨论)
四次24-bit 整数乘加,乘法或加法运算
四次32-bit 整数加法或逐位操作.
一次32-bit 整数乘法,乘加
一次64-bit 整数加法.
四次32-bit 浮点乘加,乘法或加法
二次64-bit 浮点加法
一次64-bit 浮点乘加或乘法运算.

接着,再来介绍Flex FP(弹性浮点运算单元).虽然新一代CPU引入了新的AVX指令集能提供256bit浮点指令.但需要澄清的是,并没有什么所谓的“256位命令”。单精度命令都是32位的,双精度则是64位。使用今天标准的128位浮点单元,可以在一个时钟周期内并行执行四个单精度命令或者两个双精度命令。有了AVX效率就可以翻一番,亦即每时钟周期内执行八个32位单精度命令,或者两个64位双精度命令。而在应用程序不支持AVX指令集的情况下,256位浮点单元只会运行在128位模式下——正因为如此,AMD提出了弹性浮点单元Flex FP。
Flex FP弹性浮点单元由两个128位FMAC(乘法累加器)组成,每一个都可以在每时钟周期内执行FMAC、FADD(浮点加法)、FMUL(浮点乘法),而Intel的架构中只能通过单个FADD管线执行FADD指令,FMUL亦然。有了FMAC单元,乘法和加法命令不会像标准FADD、FMUL那样拥堵在一起,两个单元都可以灵活处理这些计算命令。如果一个程序只使用FADD,那么两个FMAC单元都可以全力执行FADD。
Flex FP的美妙之处在于它既是单个256位浮点单元,又被两个整数核心所共享。每个时钟周期内,每个整数核心都可以通过两个128位指令或者一个256位指令来来操作256位并行数据,或者每个整数核心同时执行128位命令。
(以上摘自推土机构架介绍白皮书)
----------------------------------------------------------------------------------------------------------------------------------------------------------
最后说一下FMA4,FMA4是AMD在新构架CPU——开发代号Bulldozer中增加的新指令集.它能让处理器一个周期执行四次乘加运算.关于FMA4指令集的详细有兴趣的话可以参考下WIKI.地址:http://en.wikipedia.org/wiki/FMA4_instruction_set .简单的说d=a+bxc,FMA4可以让a,b,c,d使用四个不同的寄存器,而Intel的FMA3则需要a,b,c使用同一个寄存器.FMA4指令能实现非破坏性DEST,降低寄存器的压力;消除中间反复步骤,提高精确度.
----------------------------------------------------------------------------------------------------------------------------------------------------------
因为并没有什么所谓的“256位命令”。单精度命令都是32位的,双精度则是64位。所以Bulldozer体系的2个128bit FMAC单元都能被拆分成2个64bit FMAC单元即总共4个64bit FMAC。而4个32bit FMAC单元,跟Cayman的VLIW4是何奇的"雷同",一个VLIW4单元一个周期执行一次64bit双精度运算。配合CPU强大的分支处理能力跟运算能力。VLIW4可以拆分掉SFU跟分支单元.转而向倍频发展。达到完全融合的话就能运行在CPU的频率上。如果VLIW4再扩展为充满弹性的Flex FP的话......那么Bulldozer体系的一个Module将能放入4个Flex VLIW4.即使16个Flex SP。再通过FMA4指令集,这些Flex SP将拥有更灵活的寄存器操作。
根据推测,推土机可能运行在4.0G~4.5G的高频(虽然官方标准3.5G+)。即使我们保守点,假设推土机运行在4GHz。那么四个Module的推土机处理器的理论浮点运算能力至少为2(Flops/cycle)*4(module)*16(Flex SP/module)*4(GHz)=512GFlops。相对如今最高端的Intel Core i7 980X 6核处理器的理论浮点性能仅为4(Flops/cycle)*6(cores)*3.33(GHz)=79.92GFlops. 理论性能的差距大概为(512-79.92)/79.92*100%=540.6406%。 也就是融合体系,浮点性能的提升是非常暴力的.而512GFlops.在现阶段也超越了所有低端GPU能带来的浮点性能.并且由于本身是CPU,性能的发挥完全不受"驱动"的影响.也相对GPU来说更容易发挥出自身的性能.
当然,以上的事实只是本人对技术稍有皮毛的理解后进行的展望,也可以说是我在臆淫.我觉得未来的趋势应该是这样.虽然AMD最先提出了"融合"这个构思,但是Intel的"异构运算"也是有异曲同工之妙.根据最新技术文档,Intel也在自己的SandyBridge自带的GPU中引入了CISC指令集(传说中的X86 for Larrabee即Larrabee ISA,拉拉比指令集).也就是Intel将一直领跑,走在"融合""异构运算"的前方.
1、XOP 指令集产生的背景:
AMD 抢出推出 SSE5 指令集,但 Intel 打着如意算盘,却不跟进,推出了全新的 AVX 指令集。AVX 借鉴了一些 SSE5 的思想,但进行了扩充改良。客观地说,AVX 比 SSE5 更优,但 SSE5 既然有 Intel 值得学习的地方。AMD 是知道的。
AMD 最终决定跟进 Intel,除了兼容 AVX 指令外,另外推出一套 XOP 指令集(或者说是 XOP 指令扩展)、FMA4 和 CVT16 指令。XOP 指令集的产生是 AMD 也不愿 SSE5 被全盘推翻,保留了一些 SSE5 指令的优秀的地方。
目前,AMD 指令集方面的策略的是:全面兼容 Intel 的 AVX 指令,还保留自已一些独到的地方,产生了 XOP / FMA 指令。XOP 指令集是 AVX 以外的另一个指令集扩展。
2、XOP 指令集的特点
(1)XOP prefix 代替 VEX prefix
XOP prefix 是 3 bytes 的,固定以 8F。
(2)XOP prefix 格式实际上与几乎一样
除了以 8F 开头,固定为 3 bytes 外,其它基本没什么区别
(3)XOP prefix 同样起了集成 prefix 的作用
(4)XOP 指令的格式比 VAX 指令更灵活,体现在 operands 的寻址上。
|