AVX-512 — Вікіпедія

AVX-512 це набір SIMD-інструкцій для x86 процесорів Intel та AMD, що розширюють 256 бітові інструкції Advanced Vector Extensions 512-бітовими. Набір було запропоновано Intel у липні 2013 року та вперше реалізовано у співпроцесорі Intel Xeon Phi x200 (Knights Landing) в 2016 році[1], а потім у ряді центральних процесорів AMD та Intel.

Набір AVX-512 складається блоку інструкцій AVX-512F (AVX-512 Foundation) що вимагається для всіх реалізацій AVX-512, а також інших інструкцій, не всі з яких були реалізовані в різних процесорах.[2] Ця політика є відходом від історичної вимоги впровадження всього блоку інструкцій.

Окрім розширення більшості 256-бітних інструкцій, AVX-512 додає різні нові операції, такі як нові конверсія (перетворення даних), операції розсіювання (scatter) та перестановки.[2] Кількість регістрів AVX збільшена з 16 до 32, а також додано 8 нових "маскових регістрів", які дозволяють гнучко обирати та комбінувати результати інструкцій. У процесорах з розширенням векторної довжини (VL), яке присутнє у більшості CPU з підтримкою AVX-512, ці інструкції можна використовувати також для роботи з векторами розміром 128 та 256 біт. Варто зазначити, що AVX-512 – не перший 512-бітний набір SIMD-інструкцій від Intel. Раніші 512-бітні SIMD-інструкції, що використовувались у копроцесорах Xeon Phi, першого покоління (розроблені на базі проекту Larrabee), мають схожу поведінку, але не сумісні з AVX на двійковому рівні.[1]

Набір інструкцій

[ред. | ред. код]

Набір інструкцій AVX-512 складається з кількох окремих наборів, кожен із яких має власний унікальний біт в функції CPUID; однак вони зазвичай групуються за поколінням процесорів, які їх реалізують.

F, CD, ER, PF - Були впроваджені в Xeon Phi x200 (Knights Landing) та процесорах Xeon Gold/Platinum (Skylake SP "Purley")

  • AVX-512 Foundation (F) – це базова група, вона розширює більшість 32 бітових та 64 бітових AVX інструкцій за допомогою схеми кодування що називається EVEX (enhanced vector extension). Це дозволяє використовувати регістри розміром 512 біт, маски операцій для гнучкого керування даними, а також вбудоване округлення та контроль помилок.
  • AVX-512 Conflict Detection Instructions (CD) – інструкції для ефективного виявлення конфліктів під час виконання векторних операцій.
  • AVX-512 Exponential and Reciprocal Instructions (ER) – інструкції для обчислення експонент та обернених величин. Вони допомагають реалізувати складні математичні обчислення.[1]
  • AVX-512 Prefetch Instructions (PF) – нові інструкції для попереднього завантаження даних у кеш процесора.

VL, DQ, BW - Представлені в Skylake X та Cannon Lake.

  • AVX-512 Vector Length Extensions (VL) - розширює функціональність більшості інструкцій AVX-512, дозволяючи їм працювати з 128-бітними (XMM) та 256-бітними (YMM) регістрами.[3]
  • AVX-512 Doubleword and Quadword Instructions (DQ) – додає нові 32 бітові та 64 бітові AVX-512 інструкції.[3]
  • AVX-512 Byte and Word Instructions (BW) – розширює AVX-512 на 8 бітові та 16 бітові операції з цілими числами[3]
Така група команд дозволяє працювати з числами що не потребують 512 бітової точності чи діапазону значень.

IFMA, VBMI - Представлені в Cannon Lake.[4]

  • AVX-512 Integer Fused Multiply Add (IFMA) – операції "перемножити та додати" цілих 52 бітових чисел (цей тип використовується в арифметиці javascript, яка базується на числах з рухомою комою подвійної точності.
  • AVX-512 Vector Byte Manipulation Instructions (VBMI) - інструкції для маніпуляції окремими байтами та словами даних. Вони дозволяють виконувати завантаження, збереження та конкатенацію даних зі здвигами. Це корисно для обробки текстових даних, графічних зображень та інших задач, де потрібні детальні операції з окремими бітами чи байтами.

4VNNIW, 4FMAPS — Представлені в Knights Mill.[5][6]

  • AVX-512 Vector Neural Network Instructions Word variable precision (4VNNIW) – векторні інструкції для глибинного навчання, що працюють зі словом змінної точності.
  • AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) – векторні інструкції для глибинного навчання, що працюють з даними з рухомою комою одинарної точності.

VPOPCNTDQ - Інструкція для підрахунку кількості одиничних бітів у кожному елементі вектора. Використовується для обробки бітових масок, та різних алгоритмів.[7]

VNNI, VBMI2, BITALG - Представлені в Ice Lake.[7]

  • AVX-512 Vector Neural Network Instructions (VNNI) – векторизовані інструкції для "глибокого навчання".
  • AVX-512 Vector Byte Manipulation Instructions 2 (VBMI2) – інструкції для маніпуляції окремими байтами та словами даних для 1-2 байтових змінних.
  • AVX-512 Bit Algorithms (BITALG) – набір інструкцій для роботи з бітами даних на рівні байтів та слів. Вони розширюють можливості VPOPCNTDQ, дозволяючи виконувати більш складні маніпуляції з бітами.

VP2INTERSECT - Представлені в Tiger Lake.

  • AVX-512 Vector Pair Intersection to a Pair of Mask Registers (VP2INTERSECT) - порівнює маски регістри. Використовується в алгоритмах обробки зображень, комп'ютерної графіки та інших задач, де потрібно визначати спільні області в двох наборах даних.

GFNI – інструкції для роботи з полями Галуа, що використовується в криптографії..

VPCLMULQDQ (Carry-Less Multiplication of Quadwords) - цілочислове множення дуже великих чисел.

VAES (VEX та EVEX-encoded AES) - інструкції, що дозволяє виконувати шифрування та дешифрування даних за стандартом AES з високою продуктивністю. Представлені в Ice Lake.[7]

Процесори з AVX-512

[ред. | ред. код]
  • Intel
    • Knights Landing (Xeon Phi x200): [1] [8] AVX-512 F, CD, ER, PF
    • Knights Mill (Xeon Phi x205): [7] AVX-512 F, CD, ER, PF, 4FMAPS, 4VNNIW, VPOPCNTDQ
    • Skylake-SP, Skylake-X : [9] [10] [11] AVX-512 F, CD, VL, DQ, BW
    • Cannon Lake : [7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI
    • Cascade Lake : AVX-512 F, CD, VL, DQ, BW, VNNI
    • Cooper Lake : AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
    • Ice Lake, [7] Rocket Lake : [12] [13] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
    • Tiger Lake (офіційно за винятком Pentium і Celeron):[14] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
    • Alder Lake (офіційно ніколи не підтримувався Intel, повністю видалено в новіших ЦП Note 1 ): [15] [16] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16, VP2INTERSECT, FP16
    • Sapphire Rapids : [17] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16, FP16
  • Centaur Technology[en]
    • "CNS" ядро : [18] [19] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI
  • AMD
    • Zen 4 : [20] [21] [22] [23] [24] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16
    • Zen 5 : [25] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, BF16, VP2INTERSECT

Примітки

[ред. | ред. код]
  1. а б в г James Reinders (23 липня 2013). AVX-512 Instructions. Intel. Процитовано 20 серпня 2013.
  2. а б Kusswurm, 2022, с. 223.
  3. а б в James Reinders (17 липня 2014). Additional AVX-512 instructions. Intel. Процитовано 3 серпня 2014.
  4. Anton Shilov. Intel 'Skylake' processors for PCs will not support AVX-512 instructions. Kitguru.net. Процитовано 17 березня 2015.
  5. Intel will add deep-learning instructions to its processors. 14 жовтня 2016.
  6. Intel Architecture Instruction Set Extensions Programming Reference (PDF). Intel. Процитовано 29 січня 2014.
  7. а б в г д е Intel Architecture Instruction Set Extensions and Future Features Programming Reference. Intel. Процитовано 16 жовтня 2017.
  8. Intel Xeon Phi Processor product brief. Intel. Процитовано 12 жовтня 2016.
  9. Intel unveils X-series platform: Up to 18 cores and 36 threads, from $242 to $2,000. Ars Technica (амер.). Процитовано 30 травня 2017.
  10. Intel Advanced Vector Extensions 2015/2016: Support in GNU Compiler Collection (PDF). Gcc.gnu.org. Процитовано 20 жовтня 2016.
  11. Patrizio, Andy (21 вересня 2015). Intel's Xeon roadmap for 2016 leaks. Itworld.org. Архів оригіналу за 21 жовтня 2016. Процитовано 20 жовтня 2016. [Архівовано 2016-10-21 у Wayback Machine.]
  12. Intel Core i9-11900K Review - World's Fastest Gaming Processor?. www.techpowerup.com. 30 березня 2021.
  13. "Add rocketlake to gcc" commit. gcc.gnu.org.
  14. Using the GNU Compiler Collection (GCC): x86 Options. GNU. Процитовано 14 жовтня 2019.
  15. Cutress, Ian; Frumusanu, Andrei. The Intel 12th Gen Core i9-12900K Review: Hybrid Performance Brings Hybrid Complexity. www.anandtech.com. Процитовано 5 листопада 2021.
  16. Larabel, Michael. Intel Core i9 12900K "Alder Lake" AVX-512 On Linux. www.phoronix.com. Процитовано 8 листопада 2021.
  17. Larabel, Michael. AVX-512 Performance Comparison: AMD Genoa vs. Intel Sapphire Rapids & Ice Lake. www.phoronix.com. Процитовано 19 січня 2023.
  18. The industry's first high-performance x86 SOC with server-class CPUs and integrated AI coprocessor technology. 2 серпня 2022. Архів оригіналу за 12 грудня 2019.{{cite web}}: Обслуговування CS1:Сторінки з посиланнями на джерела, що мають непридатні URL (посилання)
  19. x86, x64 Instruction Latency, Memory Latency and CPUID dumps (instlatx64). users.atw.hu.
  20. AMD Zen 4 Based Ryzen CPUs May Feature Up to 24 Cores, Support for AVX512 Vectors. Hardware Times (амер.). 23 травня 2021. Процитовано 2 вересня 2021.
  21. Hagedoorn, Hilbert (18 травня 2021). AMD working on a prodigious 96-core EPYC processor. Guru3D.com (амер.). Процитовано 25 травня 2021.
  22. clamchowder (23 серпня 2021). Details on the Gigabyte Leak. Chips And Cheese (амер.). Процитовано 10 червня 2022.
  23. ((W1zzard)) (26 травня 2022). AMD Answers Our Zen 4 Tech Questions, with Robert Hallock. TechPowerUp (амер.). Процитовано 29 травня 2022.
  24. Larabel, Michael (26 вересня 2022). AMD Zen 4 AVX-512 Performance Analysis On The Ryzen 9 7950X. www.phoronix.com.
  25. Larabel, Michael (10 лютого 2024). AMD Zen 5 Compiler Support Posted For GCC - Confirms New AVX Features & More. www.phoronix.com (амер.).