EMZETT.
Войти

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