Ця стаття містить , але походження тверджень у ній через практично повну відсутність . |
SSE (англ. Streaming SIMD Extensions, потокове SIMD-розширення) — розширення архітектури мікропроцесорів x86, що реалізує паралельне виконання однакових команд (англ. Single Instruction, Multiple Data, одна інструкція — багато даних).
Історія
Технологія була розроблена Intel як відповідь на аналогічний набір інструкцій 3DNow! від AMD, який був представлений роком раніше. Вперше реалізована в процесорі серії Pentium III. Початкова назва цих інструкцій була KIN, що розшифровувалося як Katmai New Instructions (Katmai — назва першої версії ядра процесора Pentium III).
Технологія SSE дозволяла вирішити 2 основні проблеми MMX:
- під час операцій MMX неможливо було одночасно виконувати інструкції співпроцесора (оскільки деякі регістри були об'єднаними)
- MMX обмежувалася лише цілочисельними операціями.
Архітектура
SSE включила в архітектуру процесора вісім 128-бітових регістрів (xmm0 до xmm7), кожен з яких трактується, як послідовність 4 значень із рухомою комою одиничної точності, та набір інструкцій, які виконують операції зі скалярними й пакованими типами даних.
Перевага у швидкості обчислень досягається в тому випадку, коли необхідно виконати одну і ту ж послідовність дій над різними даними.
Реалізація блоків SIMD виконується розпаралелюванням обчислювального процесу між даними. Тобто коли через один блок даних проходить по черзі багато потоків даних.
Приклад
Наступний приклад демонструє перемноження чотирьох пар чисел з рухомою комою однією командою mulps: (Програма написана мовою ANSI C++ з використанням асемблерної вставки __asm і інструкцій асемблера для роботи з SSE)
float a[4] = { 300.0, 4.0, 4.0, 12.0 }; float b[4] = { 1.5, 2.5, 3.5, 4.5 }; _asm { movups xmm0, a ; // помістити 4 змінні з рухомою комою із a в регістр xmm0 movups xmm1, b ; // помістити 4 змінні з рухомою комою із b в регістр xmm1 mulps xmm1, xmm0 ; // перемножити пакети рухомих ком: xmm1=xmm1*xmm0 ; // xmm10 = xmm10*xmm00 ; // xmm11 = xmm11*xmm01 ; // xmm12 = xmm12*xmm02 ; // xmm13 = xmm13*xmm03 movups a, xmm1 ; // вивантажити результати із регістра xmm1 по адресам a };
Подальший розвиток
Цей розділ потребує доповнення. |
Див. також
Посилання
- Intel® 64 and IA-32 Architectures Optimization Reference Manual [ 10 січня 2017 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya mistit perelik posilan ale pohodzhennya tverdzhen u nij zalishayetsya nezrozumilim cherez praktichno povnu vidsutnist vnutrishnotekstovih dzherel vinosok Bud laska dopomozhit polipshiti cyu stattyu peretvorivshi dzherela z pereliku posilan na dzherela vinoski u samomu teksti statti SSE angl Streaming SIMD Extensions potokove SIMD rozshirennya rozshirennya arhitekturi mikroprocesoriv x86 sho realizuye paralelne vikonannya odnakovih komand angl Single Instruction Multiple Data odna instrukciya bagato danih IstoriyaTehnologiya bula rozroblena Intel yak vidpovid na analogichnij nabir instrukcij 3DNow vid AMD yakij buv predstavlenij rokom ranishe Vpershe realizovana v procesori seriyi Pentium III Pochatkova nazva cih instrukcij bula KIN sho rozshifrovuvalosya yak Katmai New Instructions Katmai nazva pershoyi versiyi yadra procesora Pentium III Tehnologiya SSE dozvolyala virishiti 2 osnovni problemi MMX pid chas operacij MMX nemozhlivo bulo odnochasno vikonuvati instrukciyi spivprocesora oskilki deyaki registri buli ob yednanimi MMX obmezhuvalasya lishe cilochiselnimi operaciyami ArhitekturaSSE vklyuchila v arhitekturu procesora visim 128 bitovih registriv xmm0 do xmm7 kozhen z yakih traktuyetsya yak poslidovnist 4 znachen iz ruhomoyu komoyu odinichnoyi tochnosti ta nabir instrukcij yaki vikonuyut operaciyi zi skalyarnimi j pakovanimi tipami danih Perevaga u shvidkosti obchislen dosyagayetsya v tomu vipadku koli neobhidno vikonati odnu i tu zh poslidovnist dij nad riznimi danimi Realizaciya blokiv SIMD vikonuyetsya rozparalelyuvannyam obchislyuvalnogo procesu mizh danimi Tobto koli cherez odin blok danih prohodit po cherzi bagato potokiv danih PrikladNastupnij priklad demonstruye peremnozhennya chotiroh par chisel z ruhomoyu komoyu odniyeyu komandoyu mulps Programa napisana movoyu ANSI C z vikoristannyam asemblernoyi vstavki asm i instrukcij asemblera dlya roboti z SSE float a 4 300 0 4 0 4 0 12 0 float b 4 1 5 2 5 3 5 4 5 asm movups xmm0 a pomistiti 4 zminni z ruhomoyu komoyu iz a v registr xmm0 movups xmm1 b pomistiti 4 zminni z ruhomoyu komoyu iz b v registr xmm1 mulps xmm1 xmm0 peremnozhiti paketi ruhomih kom xmm1 xmm1 xmm0 xmm10 xmm10 xmm00 xmm11 xmm11 xmm01 xmm12 xmm12 xmm02 xmm13 xmm13 xmm03 movups a xmm1 vivantazhiti rezultati iz registra xmm1 po adresam a Podalshij rozvitokCej rozdil potrebuye dopovnennya Dokladnishe SSE2 SSE3 SSSE3 SSE4 ta Advanced Vector ExtensionsDiv takozhSISD MIMDPosilannyaIntel 64 and IA 32 Architectures Optimization Reference Manual 10 sichnya 2017 u Wayback Machine