SIMD и векторизация
Коротко: SIMD («Single Instruction, Multiple Data») позволяет одной команде процессора обрабатывать сразу несколько значений.
Подробнее: Широкий регистр (128, 256 или 512 бит) вмещает, например, восемь 32-битных чисел. Одно сложение вычисляет все восемь сразу. Это сильно ускоряет обработку изображений, звука и матриц.
Подробности
- Наборы команд: SSE и AVX у x86, NEON и SVE у ARM, RVV у RISC-V.
- Автовекторизация: Компиляторы сами превращают простые циклы в код SIMD, если итерации независимы.
- Вручную: Через «intrinsics» (специальные функции) или библиотеки. Трудоёмко, но контролируемо.
- Тормоза: Невыровненный доступ к памяти, ветвления внутри цикла, зависимости по данным, слишком короткие циклы.
- Родственное: GPU развивают этот принцип гораздо дальше (SIMT). См. сравнение чипов ИИ.
- Энергопотребление: Очень широкие блоки могут снижать тактовую частоту (троттлинг AVX-512 у некоторых CPU).
См. также: устройство CPU