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