Ця стаття не містить . (березень 2017) |
Advanced Vector Extensions (AVX) — розширення системи команд x86 для мікропроцесорів Intel і AMD. Intel запропонував їх у березні 2008 року і вперше втілив у процесорі Sandy Bridge, який вийшов у першому кварталі 2011 року, а пізніше компанія AMD у процесорі , який постачала у третьому кварталі 2011 року. AVX надає різні поліпшення, нові інструкції і нову схему кодування машинних кодів.
AVX2 (також відомий як Haswell New Instructions) розширює більшість цілочисельних команд до 256 біт і вводить нові інструкції. Вперше вони були додані Intel з процесорами Haswell, який вийшов у 2013 році.
AVX-512 розширює підтримку AVX до 512-біт за допомогою нового кодування , запропонованого Intel у липні 2013 року і вперше додані у співпроцесорі (Knights Landing), який вийшов у 2016 році. У звичайних процесорах AVX-512 був представлений із серверним Skylake та процесорами HEDT у 2017 році.
Нововведення AVX
Набір команд AVX запроваджує наступні нововведення:
- Нова схема кодування інструкцій VEX
- Ширина векторних регістрів SIMD збільшується з 128 (XMM) до 256 біт (регістри YMM0 - YMM15). Існуючі 128-бітові SSE інструкції будуть використовувати молодшу половину нових YMM регістрів, не змінюючи старшу частину. Для роботи з YMM регістрами додані нові 256-бітові AVX інструкції (новіший стандарт AVX-512 розширює векторні регістри SIMD до 512 біт). Процесорна архітектура Intel Larrabee мала векторні регістри ZMM шириною в 512 біт, і використовувала для роботи з ними SIMD команди з префіксами MVEX і VEX, але при цьому вони не підтримували AVX.
- Неруйнівні операції. Набір AVX інструкцій використовує триоперандний синтаксис. Наприклад, замість a = a + b можна використовувати c = a + b, при цьому регістр a залишається незміненим. У випадках, коли значення a використовується далі в обчисленнях, це підвищує продуктивність, оскільки позбавляє від необхідності зберігати перед обчисленням і відновлювати після обчислення регістр, що містив a, з іншого регістра або пам'яті.
- Для більшості нових інструкцій відсутні вимоги до вирівнювання операндів в пам'яті. Однак, рекомендується стежити за вирівнюванням на розмір операнда, щоб уникнути значного зниження продуктивності.
- Набір інструкцій AVX містить в собі аналоги 128-бітних SSE інструкцій для дійсних чисел. При цьому, на відміну від оригіналів, збереження 128-бітного результату буде обнуляти старшу половину YMM регістра. 128-бітові AVX інструкції зберігають інші переваги AVX, такі як нова схема кодування, триоперандний синтаксис і невирівняний доступ до пам'яті. Рекомендується відмовитися від старих SSE інструкцій на користь нових 128-бітних AVX інструкцій, навіть якщо достатньо двох операндів.
Нова схема кодування
Нова схема кодування інструкцій [en] використовують префікси VEX. Існують два таких префікси, довжиною 2 і 3 байти. Для 2-о байтового VEX префікса перший байт дорівнює 0xC5, для 3-и байтового 0xC4. У 64-бітному режимі перший байт VEX префікса унікальний. У 32-бітному режимі виникає конфлікт з інструкціями LES і LDS, який дозволяється старшим бітом другого байта, він має значення тільки в 64-бітному режимі, через непідтримувані форми інструкцій LES і LDS. Довжина наявних AVX інструкцій, разом з VEX префіксом, не перевищує 11 байт.
Нові інструкції
Інструкція | Опис |
---|---|
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 | Копіює 32-х, 64-х або 128-ми бітний операнд з пам'яті в усі елементи векторного регістра XMM або YMM. |
VINSERTF128 | Заміщає молодшу або старшу половину 256-ти бітного регістра YMM значенням 128-ми бітного операнда. Інша частина регістра-одержувача не змінюється. |
VEXTRACTF128 | Витягує молодшу або старшу половину 256-ти бітного регістра YMM і копіює в 128-ми бітний операнд-призначення. |
VMASKMOVPS, VMASKMOVPD | Умовно зчитує будь-яку кількість елементів з векторного операнда з пам'яті в регістр-одержувач, залишаючи інші елементи неліченими і обнуляючи відповідні їм елементи регістра-одержувача. Також може умовно записувати будь-яку кількість елементів з векторного регістра в векторний операнд в пам'яті, залишаючи інші елементи операнда пам'яті незміненими |
VPERMILPS, VPERMILPD | Переставляє 32-х або 64-х бітові елементи вектора згідно операнду-селектору (з пам'яті або з регістра). |
VPERM2F128 | Переставляє 4 128-бітних елементи двох 256-бітних регістрів у 256-бітний операнд-призначення з використанням безпосередньої константи (imm) як селектора. |
VZEROALL | Обнуляє всі YMM регістри і позначає їх як невикористовувані. Використовується при перемиканні між 128-ми бітним режимом і 256-ти бітовим. |
VZEROUPPER | Обнуляє старші половини всіх регістрів YMM. Використовується при перемиканні між 128-ми бітним режимом і 256-ти бітовим. |
Також в специфікації AVX описана група інструкцій (Parallel Carry-Less Multiplication, Parallel CLMUL)
- PCLMULLQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 00]
- PCLMULHQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 01]
- PCLMULLQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 02]
- PCLMULHQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 03]
- PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib]
Застосування
Підходить для інтенсивних обчислень з рухомою комою в мультимедіа програмах та наукових завданнях. Там, де можлива більш висока ступінь паралелізму, збільшує продуктивність з дійсними числами.
Підтримка в операційних системах
Використання YMM-регістрів вимагає підтримки з боку операційної системи. Наступні системи підтримують регістри YMM:
- Linux: підтримується, починаючи з версії ядра 2.6.30, що з'явилася 9 червня 2009 року.
- Windows 7: підтримка додана в (Service Pack 1)
- Windows Server 2008 R2: підтримка додана в Service Pack 1
AVX2
Цей розділ потребує доповнення. (серпень 2019) |
AVX-512
Див. також
Джерела
- Kanter, David (25 вересня 2010). . www.realworldtech.com (амер.). Архів оригіналу за 16 серпня 2019. Процитовано 17 лютого 2018.
- Hruska, Joel (24 жовтня 2011). . ExtremeTech (амер.). Архів оригіналу за 16 серпня 2019. Процитовано 17 лютого 2018.
- James Reinders (23 липня 2013), , Intel, архів оригіналу за 31 березня 2015, процитовано 20 серпня 2013
- . Intel ARK (Product Specs). Архів оригіналу за 7 вересня 2017. Процитовано 16 березня 2018.
- x86: add linux kernel support for YMM state, процитовано 13 липня 2009
- Linux 2.6.30 - Linux Kernel Newbies, архів оригіналу за 5 квітня 2012, процитовано 13 липня 2009
<ref>
з назвою "FogMicro", визначений у <references>
, не використовується в попередньому тексті.
Це незавершена стаття про апаратне забезпечення. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno berezen 2017 Advanced Vector Extensions AVX rozshirennya sistemi komand x86 dlya mikroprocesoriv Intel i AMD Intel zaproponuvav yih u berezni 2008 roku i vpershe vtiliv u procesori Sandy Bridge yakij vijshov u pershomu kvartali 2011 roku a piznishe kompaniya AMD u procesori yakij postachala u tretomu kvartali 2011 roku AVX nadaye rizni polipshennya novi instrukciyi i novu shemu koduvannya mashinnih kodiv AVX2 takozh vidomij yak Haswell New Instructions rozshiryuye bilshist cilochiselnih komand do 256 bit i vvodit novi instrukciyi Vpershe voni buli dodani Intel z procesorami Haswell yakij vijshov u 2013 roci AVX 512 rozshiryuye pidtrimku AVX do 512 bit za dopomogoyu novogo koduvannya zaproponovanogo Intel u lipni 2013 roku i vpershe dodani u spivprocesori Knights Landing yakij vijshov u 2016 roci U zvichajnih procesorah AVX 512 buv predstavlenij iz servernim Skylake ta procesorami HEDT u 2017 roci Novovvedennya AVXNabir komand AVX zaprovadzhuye nastupni novovvedennya Nova shema koduvannya instrukcij VEX Shirina vektornih registriv SIMD zbilshuyetsya z 128 XMM do 256 bit registri YMM0 YMM15 Isnuyuchi 128 bitovi SSE instrukciyi budut vikoristovuvati molodshu polovinu novih YMM registriv ne zminyuyuchi starshu chastinu Dlya roboti z YMM registrami dodani novi 256 bitovi AVX instrukciyi novishij standart AVX 512 rozshiryuye vektorni registri SIMD do 512 bit Procesorna arhitektura Intel Larrabee mala vektorni registri ZMM shirinoyu v 512 bit i vikoristovuvala dlya roboti z nimi SIMD komandi z prefiksami MVEX i VEX ale pri comu voni ne pidtrimuvali AVX Nerujnivni operaciyi Nabir AVX instrukcij vikoristovuye trioperandnij sintaksis Napriklad zamist a a b mozhna vikoristovuvati c a b pri comu registr a zalishayetsya nezminenim U vipadkah koli znachennya a vikoristovuyetsya dali v obchislennyah ce pidvishuye produktivnist oskilki pozbavlyaye vid neobhidnosti zberigati pered obchislennyam i vidnovlyuvati pislya obchislennya registr sho mistiv a z inshogo registra abo pam yati Dlya bilshosti novih instrukcij vidsutni vimogi do virivnyuvannya operandiv v pam yati Odnak rekomenduyetsya stezhiti za virivnyuvannyam na rozmir operanda shob uniknuti znachnogo znizhennya produktivnosti Nabir instrukcij AVX mistit v sobi analogi 128 bitnih SSE instrukcij dlya dijsnih chisel Pri comu na vidminu vid originaliv zberezhennya 128 bitnogo rezultatu bude obnulyati starshu polovinu YMM registra 128 bitovi AVX instrukciyi zberigayut inshi perevagi AVX taki yak nova shema koduvannya trioperandnij sintaksis i nevirivnyanij dostup do pam yati Rekomenduyetsya vidmovitisya vid starih SSE instrukcij na korist novih 128 bitnih AVX instrukcij navit yaksho dostatno dvoh operandiv Nova shema koduvannya Nova shema koduvannya instrukcij en vikoristovuyut prefiksi VEX Isnuyut dva takih prefiksi dovzhinoyu 2 i 3 bajti Dlya 2 o bajtovogo VEX prefiksa pershij bajt dorivnyuye 0xC5 dlya 3 i bajtovogo 0xC4 U 64 bitnomu rezhimi pershij bajt VEX prefiksa unikalnij U 32 bitnomu rezhimi vinikaye konflikt z instrukciyami LES i LDS yakij dozvolyayetsya starshim bitom drugogo bajta vin maye znachennya tilki v 64 bitnomu rezhimi cherez nepidtrimuvani formi instrukcij LES i LDS Dovzhina nayavnih AVX instrukcij razom z VEX prefiksom ne perevishuye 11 bajt Novi instrukciyi Instrukciya Opis VBROADCASTSS VBROADCASTSD VBROADCASTF128 Kopiyuye 32 h 64 h abo 128 mi bitnij operand z pam yati v usi elementi vektornogo registra XMM abo YMM VINSERTF128 Zamishaye molodshu abo starshu polovinu 256 ti bitnogo registra YMM znachennyam 128 mi bitnogo operanda Insha chastina registra oderzhuvacha ne zminyuyetsya VEXTRACTF128 Vityaguye molodshu abo starshu polovinu 256 ti bitnogo registra YMM i kopiyuye v 128 mi bitnij operand priznachennya VMASKMOVPS VMASKMOVPD Umovno zchituye bud yaku kilkist elementiv z vektornogo operanda z pam yati v registr oderzhuvach zalishayuchi inshi elementi nelichenimi i obnulyayuchi vidpovidni yim elementi registra oderzhuvacha Takozh mozhe umovno zapisuvati bud yaku kilkist elementiv z vektornogo registra v vektornij operand v pam yati zalishayuchi inshi elementi operanda pam yati nezminenimi VPERMILPS VPERMILPD Perestavlyaye 32 h abo 64 h bitovi elementi vektora zgidno operandu selektoru z pam yati abo z registra VPERM2F128 Perestavlyaye 4 128 bitnih elementi dvoh 256 bitnih registriv u 256 bitnij operand priznachennya z vikoristannyam bezposerednoyi konstanti imm yak selektora VZEROALL Obnulyaye vsi YMM registri i poznachaye yih yak nevikoristovuvani Vikoristovuyetsya pri peremikanni mizh 128 mi bitnim rezhimom i 256 ti bitovim VZEROUPPER Obnulyaye starshi polovini vsih registriv YMM Vikoristovuyetsya pri peremikanni mizh 128 mi bitnim rezhimom i 256 ti bitovim Takozh v specifikaciyi AVX opisana grupa instrukcij Parallel Carry Less Multiplication Parallel CLMUL PCLMULLQLQDQ xmmreg xmmrm rm 66 0f 3a 44 r 00 PCLMULHQLQDQ xmmreg xmmrm rm 66 0f 3a 44 r 01 PCLMULLQHQDQ xmmreg xmmrm rm 66 0f 3a 44 r 02 PCLMULHQHQDQ xmmreg xmmrm rm 66 0f 3a 44 r 03 PCLMULQDQ xmmreg xmmrm imm rmi 66 0f 3a 44 r ib Zastosuvannya Pidhodit dlya intensivnih obchislen z ruhomoyu komoyu v multimedia programah ta naukovih zavdannyah Tam de mozhliva bilsh visoka stupin paralelizmu zbilshuye produktivnist z dijsnimi chislami Pidtrimka v operacijnih sistemah Vikoristannya YMM registriv vimagaye pidtrimki z boku operacijnoyi sistemi Nastupni sistemi pidtrimuyut registri YMM Linux pidtrimuyetsya pochinayuchi z versiyi yadra 2 6 30 sho z yavilasya 9 chervnya 2009 roku Windows 7 pidtrimka dodana v Service Pack 1 Windows Server 2008 R2 pidtrimka dodana v Service Pack 1AVX2Cej rozdil potrebuye dopovnennya serpen 2019 AVX 512Dokladnishe AVX 512Div takozhDzherelaKanter David 25 veresnya 2010 www realworldtech com amer Arhiv originalu za 16 serpnya 2019 Procitovano 17 lyutogo 2018 Hruska Joel 24 zhovtnya 2011 ExtremeTech amer Arhiv originalu za 16 serpnya 2019 Procitovano 17 lyutogo 2018 James Reinders 23 lipnya 2013 Intel arhiv originalu za 31 bereznya 2015 procitovano 20 serpnya 2013 Intel ARK Product Specs Arhiv originalu za 7 veresnya 2017 Procitovano 16 bereznya 2018 x86 add linux kernel support for YMM state procitovano 13 lipnya 2009 Linux 2 6 30 Linux Kernel Newbies arhiv originalu za 5 kvitnya 2012 procitovano 13 lipnya 2009 Pomilka cituvannya Teg lt ref gt z nazvoyu FogMicro viznachenij u lt references gt ne vikoristovuyetsya v poperednomu teksti Ce nezavershena stattya pro aparatne zabezpechennya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi