1. SIMD 的工作原理,单指令多数据如何在寄存器宽度内并行计算?
解释 SIMD 的工作原理:单指令多数据如何在寄存器宽度内并行计算?
- SIMD 概念
- 向量寄存器
- 数据并行
SIMD(Single Instruction, Multiple Data,单指令多数据)用一条指令同时处理多个相同类型的数据。原理:CPU 提供宽向量寄存器(如 SSE 128 位、AVX 256 位、AVX-512 512 位),把寄存器的位宽拆分成多个 lane,每个 lane 放一个数据元素(如 128 位寄存器可放 4 个 float 或 2 个 double)。一条 SIMD 指令对寄存器内所有 lane 同时执行同一运算(如 4 个 float 同时相加),硬件的一个执行单元(vector ALU)在单周期内并行完成所有 lane 的运算。这样单次指令完成多个标量运算,数据并行地提升吞吐量。前提是数据可并行处理(元素间无依赖),适合图像、数组、矩阵等。
SIMD 的并行是"数据级并行"(DLP):同一操作施加到多个数据。寄存器宽度决定 lane 数,指令只译码一次但对所有 lane 执行,是"一指令多数据"的本质。