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