- UID
- 2413758
- 主题
- 1
- 阅读权限
- 40
- 帖子
- 1190
- 精华
- 0
- 积分
- 595
- 金钱
- 1135
- 荣誉
- 0
- 人气
- 4
- 在线时间
- 424 小时
- 评议
- 0
- 帖子
- 1190
- 精华
- 0
- 积分
- 595
- 金钱
- 1135
- 荣誉
- 0
- 人气
- 4
- 评议
- 0
|
AVX(Advanced Vector Extensions)是下一代Intel CPU中一个重要的新技术,抽空看了一点,记一些笔记。
增加了256-bit的SIMD寄存器,YMM0~YMM15, 其中低128-bit即 以前的XMM。
新增了FMA(fused-multiply-add)等指令以加强浮点运算能力, 如VFMADD132PD ymm0, ymm1, ymm2/256将 ymm0和ymm2/mem中双精度浮点数相乘和ymm1相加并存入ymm0中。两步并一步。该指令有相应的Intrinsic VFMADD132PD_m256d_mm234_fmadd_pd(_m256d a, _m256d b, _m256d c); Intel Compiler V11.1已支持AVX指令集。
新增了PCLMULQDQ等指令以加强对AES(Advanced Encryption Standard)算法支持,如PCLMULQDQ xmm1, xmm2/m128, imm8将xmm1的高或低64bit乘xmm2的高或低64bit并存回xmm1, imm8决定xmm1和xmm2的高低64bit。
内存对齐,一个老话题。前几代CPU的性能或多或少得受它影响,AVX中以VEX前缀编码的算术指令和内存访问指令在访问内存时更灵活,即可访问对齐的或未对齐数据,当然访问未对齐数据,会有惩罚(penalty),具体多少参考未说,想必要小。 在Core i7访问跨行未对齐的数据的惩罚为4~5cycles,不跨行的为2cycles。
顺便提一下,Nehalem的store-forwarding对数据对齐的要求也宽松了许多,起始地址不是数据长度整数倍的数据也可被forward了。
原文 http://software.intel.com/zh-cn/blogs/2009/12/29/avx/ |
|