一、什么是SIMD?
SIMD全称Single Instruction Multiple Data,单指令多数据流,即一条指令处理多条数据,帮助CPU实现数据并⾏,提⾼运算效率,是对CPU基本指令集的扩展。
二、SIMD指令类别
- MMX,Multi-Media Extension, 即多媒体扩展,为了支持MPEG视频解码。MMX将64位寄存当作2X32或8X8来用,只能处理整型计算。64位的寄存器不是单独设置的,借用FPU寄存器,因此MMX指令不能与浮点数操作同时工作。
- SSE,有专属16个128位长的寄存器,被称为XMM0-XMM15,其中XMM8-XMM15只有系统是64位模式时才有效。SSE指令要求数据是16byte对齐的。
- SSE2,进一步支持双精度浮点数,由于寄存器长度没有变长,所以只能支持2个双精度浮点计算或是4个单精度浮点计算。另外,它在这组寄存器上实现了整型计算,从而代替了MMX。
- SSE3,支持一些更加复杂的算术计算。
- SSE4,增加了更多指令,并且在数据搬移上下了一番工夫,支持不对齐的数据迁移。
- AVX2,同时执行256位数据
- AVX512,同时执行512位数据
三、SIMD指令使用
1、gcc编译器使用
创建4个int数据同时处理的数据类型,typedef定义v4si数据类型,16代表16个字节
<