SIMD
SIMD
SIMD 是 Single Instruction, Multiple Data,中文一般叫 单指令多数据流。
它的核心意思很简单:
一条指令,同时处理多个数据。
比如普通标量加法一次只能做一个:
a[i] = b[i] + c[i];
如果不用 SIMD,CPU 可能是这样做:
- 先算
b[0] + c[0] - 再算
b[1] + c[1] - 再算
b[2] + c[2]
但如果用了 SIMD,比如一个 128 位寄存器一次能放 4 个 int,那就可以一条加法指令同时算:
b[0] + c[0]b[1] + c[1]b[2] + c[2]b[3] + c[3]
也就是“批量并行”。
所以 SIMD 特别适合这种场景:
- 数组遍历
- 向量加减乘除
- 图像处理
- 音视频处理
- 矩阵运算
- 机器学习里的底层数值计算
- 字符串/字节批量比较
常见指令集有:
- x86 上的
SSE、AVX、AVX2、AVX-512 - ARM 上的
NEON
你可以简单理解成:
- 标量计算:一次处理 1 个数据
- SIMD:一次处理一批数据

浙公网安备 33010602011771号