Інструкції sse sse2 sse3 sse4. Процесор не підтримує SSE2 – що робити. Як увімкнути SSE2

Вступ На черговому черговому Intel Developers Forum був офіційно представлений Prescott - новий процесор фірми Intelпризначений для застосування в персональних комп'ютерах. Він представляється як Next Generation Processor - процесор нового покоління. Процесор виконаний за технологією 90 нанометрів, що дозволить досягти тактових частот 4-5 GHz. Розмір КЕШу другого рівня збільшено до 1MB - мабуть, таке збільшення стало виправданим з погляду собівартості завдяки новому технічному процесу. Розмір КЕШу першого рівня також подвоївся, і тут помітно позитивний вплив покращеної технології. Частота системної шинизросла до 800 МГц. В цілому, всі блоки процесора зазнали невеликі покращення. Але що цей вилизаний до блиску Pentium 4 несе нового для розробників програмного забезпечення? Збільшений КЕШ - це, звичайно, добре, треба трохи менше думати про швидкість читання-запису даних з пам'яті, що часто є серйозним фактором, що лімітує продуктивність. Але все одно всіх проблем не знімає, коли обсяг даних великий, збільшення КЕШу навіть вдвічі не принципово.
Зростаюча частота системної шини запевняє нас, що новий процесор від Intel буде досить збалансованим, в ньому не буде явно вузьких місць, що гальмують загальну продуктивність системи. Як це, на жаль, було з деякими минулими процесорами, коли збільшення частоти не давало пропорційного збільшення швидкості.
Однак, така річ, як новий семислийний дизайн процесора мало цікавить розробників програмного забезпечення. Їм набагато важливіше, які нові процесорні команди стали доступними, які оптимізаційні прийоми належить застосувати для досягнення максимальної продуктивності, або хоча б щоб не було повільніше, ніж на старому. Минулий процесор фірми Intel – Pentium 4 – вимагав суттєвої оптимізації програмного забезпечення для збільшення продуктивності. На широкому класі завдань Pentium 4 програвав Pentium IIIяк рівної частоти, а й значно меншою, до двох раз. Нижче ми детально розберемося, чому це відбувалося, можна лише одразу зазначити, що глобальна причина полягала у необхідності суттєвої зміни ядра з метою нарощування частоти.
Загалом процесорне ядро ​​не зазнало кардинальних змін. Все, що не любить Pentium 4 - в першу чергу, розгалуження - все дісталося у спадок модифікації на 90 технологічному нанометровому процесі. Навіть дещо посилилося. З метою збільшення частоти глибина конвеєра Prescott'а була збільшена, тому можна очікувати великих втрат при неправильному передбаченні умовних переходів, що веде до скидання конвеєра.
Але є й приємні новини, головна, це розширення набору процесорних інструкцій. Введення MMX, SSE, SSE2 було приємно розробникам програмного забезпечення тим, що задавало їм додаткову роботуз оптимізації програм. Інакше багато програм відмовлялися швидко виконуватися. Однак 13 нових інструкцій, що з'явилися в Prescott, істотно полегшують частку розробників.

MMX, 3DNow! SSE, SSE2 – принцип роботи та оптимізації

Перш, ніж ми розглянемо нові інструкції, зробимо короткий оглядпопередніх SIMD-розширень набору процесорних команд, насамперед, оцінимо можливий приріст продуктивності при використанні того чи іншого набору інструкцій. Ті, хто добре знайомий із предметом, можуть пропустити даний розділі одразу перейти до опису нових команд Prescott.
Ось, іноді в тестових оглядах говориться, що дана програма добре оптимізована під SSE, і завдяки цьому такий процесор показує хороші результати. А що таке SSE? Сама назва говорить про природу цього набору інструкцій. SSE - Streaming SIMD Extension. Потокове SIMD розширення. А що таке SIMD? SIMD – Single Instruction Multiple Data. Одна інструкція – кілька даних-оперендів.
Як зазвичай працюють процесори, як працювали процесори на кшталт 486, першого Pentium? Просто. Є кілька осередків-регістрів, в них зберігаються числа, в одному осередку - одне число, процесор виконує команди: скласти вміст двох регістрів, вийде нове число, порівняти це число з вмістом третього регістру, якщо більше виконати перехід за списком інструкцій. Однак, за такого підходу поступово стали виникати труднощі зі збільшенням продуктивності. Справа в тому, що процесор не може почати виконувати наступну інструкцію до того, як будуть обчислені попередні інструкції потрібні операнди. Можна помістити в процесор хоч сто блоків множення, він вважати швидше не стане, весь час працюватиме лише один блок, а інші чекатимуть на результати його обчислень. І, ось, вигадали робити операції не з однією парою операндів, а відразу з кількома парами. Як це виглядає на прикладі першого сучасного SIMD розширення у персональних комп'ютерах – MMX.

Операціячастина 3частина 2частина 1частина 0Реєстр
70 50 30 10 1 регістр
+
80 60 40 20 2 регістр
=
150 110 70 30 результат

Одночасно складається не одна пара чисел, а чотири. Також можна віднімати, множити тощо. Одночасно кілька пар операндів, кожен із яких перебуває у одному регістрі. Введення цієї технології дозволяє легко збільшити продуктивність процесора шляхом збільшення кількості обчислювальних модулів без збільшення тактової частоти. Точніше, не кількість модулів збільшується, а в них з'являється здатність працювати відразу з кількома парами операндів. Але для програмування це не має значення.
Однак, для застосування SIMD технології потрібна підтримка на рівні самого коду програми. Процесор сам не може розмістити декілька даних із подібними операціями в одному регістрі. Програміст повинен, як кажуть, ручками при написанні програми явно вказати, що процесор завантажує такі дані з пам'яті в MMX регістри і робить з ними такі SIMD операції. Для цього він повинен сам підготувати дані в пам'яті належним чином, щоб вони добре лягали в регістри. У деяких випадках можливо ефективне використанняспеціальних SIMD-оптимізують компіляторів, які автоматично створюють код, який використовує високоефективні SIMD-команди. Але, як правило, для ефективної компіляції код програми повинен бути написаний з дотриманням певних правил.
Але не всі алгоритми в принципі можуть бути добре адаптовані до SIMD розширень. Спробуйте обчислити такий вираз – (a+b*c)*d. Менше, ніж трьома командами, не обійтися. У ті три команди можна укласти знаходження суми чотирьох векторів виду (x,y,z,w). (x1+x2+x3+x4, y1+y1+y3+y4, z1+z2+z3+z4, w1+w2+w3+w4). За умови, що SIMD операції виконуються приблизно з такою ж швидкістю, що й звичайні, що реально, оскільки процесору все одно нема чого робити, можна побачити багаторазове збільшення швидкості при виконанні програм, добре оптимізованих під SIMD.
З точки зору розробника можна виділити кілька типів SIMD-оптимізації. Пряма ручна оптимізація коду, високоефективна та досить трудомістка. «Договор» компілятора генерувати замість звичайного SIMD-код, що виходить зі змінним успіхом. І використання процесорів, що надаються виробниками, заздалегідь оптимізованих бібліотек функцій, що виконують стандартні поширені операції. Зрозуміло, що останній варіант найкращий.
Чим відрізняються SIMD розширення, чим MMX відрізняється від 3DNow! та SSE тощо? В першу чергу, вони відрізняються типами даних, що підтримуються, розміром і кількістю регістрів і наборами можливих операцій. Тип даних – це саме важлива відмінність, оскільки інші параметри більш-менш подібні до різних розширень.
Процесор працює з числами в декількох форматах, в першу чергу дані діляться на числа з плаваючою десятковою точкою і цілі числа. Різні завданнявимагають різного представлення даних. Другий параметр – це розмір у байтах. Дані як чисел з плаваючою точкою з деякою точністю наближають довільні речові числа, що більше байт приділяється одне число, то вище точність. Чим більше байт приділяється ціле число, тим більшому діапазону значень воно може належати.

MMX

Розширення MMX з'явилося досить давно і стало стандартним для персональних комп'ютерів. MMX розшифровується як Multi Media Extensions. Розширення, призначене для роботи з мультимедійними даними, із зображенням та звуком.
У процесорах з технологією MMX є 8 MMX регістрів, кожен розміром 64 біт = 8 байт. MMX працює лише з цілими числами; підтримуються дані розміром 1, 2, 4 або 8 байт. Тобто один MMX регістр може містити 8, 4, 2 або 1 операнд.


І т.д. Дані, що містяться в MMX регістрах, можна покомпонентно складати, множити, віднімати, виконувати різноманітні специфічні, необхідні для multi media додатків, операції, на кшталт складання без переповнення, обчислення середнього арифметичного та проводити логічні операціїіз бітами. Побітовий and, or, xor. Ділити, щоправда, не можна, є ще обмеження. Але багато операцій можна робити набагато швидше, навіть більше. Однак, застосування MMX особливо вимагає спеціальної ручної оптимізації, ніякий компілятор тут значно не допоможе. Під MMX, наприклад, оптимізуються різноманітні кодеки аудіо файлів, алгоритми роботи яких добре поєднуються з MMX. Причому не вся програма цілком, а невелика частина, яка виконує основну роботу, і ця обставина спрощує оптимізацію.

SSE2 - цілочисленні операції

Як це ми відразу перескочили з MMX, яке з'явилося бозна коли, на новацію, що прийшла відносно недавно разом з Pentium 4? Минули і SSE, і 3DNow! Просто SSE2 включає дві принципово різні частини - продовження SSE і продовження MMX. Продовження SSE працює з речовими числами, продовження MMX – з цілими. У SSE2 регістри порівняно з MMX подвоїлися, тобто там стало поміщатися не, наприклад, 8 чисел, а 16. Оскільки швидкість виконання інструкцій не змінилася, при оптимізації під SSE2 програма запросто отримувала дворазовий приріст продуктивності. Потрібно відзначити ще таку обставину. Якщо програма вже оптимізована під MMX, то оптимізація під SSE2 дається порівняно легко в силу подібності системи команд.
У Athlon XP немає підтримки SSE2, тому можна було спостерігати цікаву картину, коли спочатку Pentium 4 під час кодування програвав Athlon XP, а після оптимізації кодеку під SSE2 починав вигравати. Можна визнати вдалою ідеюрозширення MMX в SSE2, оскільки під MMX оптимізується не дуже багато програм, а ті, що оптимізуються, оптимізуються як слід. Слід зазначити, що Intel відзначилася у наданні розробникам програмного забезпечення майже безкоштовно оптимізованих під SSE2 бібліотек функцій, що виконують деякі типові для кодування операції. І ця обставина відіграла важливу роль у порятунку продуктивності процесорів Pentium 4.

SSE

Розглянемо набір інструкцій SSE. Він з'явився разом із процесорами Pentium III, але повністю «розквіт» після випуску Pentium 4, на якому використання SSE давало радикальне збільшення до продуктивності.
SSE цікаво насамперед тим, що оперує з даними речовинного типу, які використовуються в геометричних розрахунках, тобто додатках тривимірної графіки, комп'ютерних іграх, редакторів на кшталт 3DStudioMax, та багатьох інших. Відколи в комп'ютерних іграх на кшталт Quake текстурування трикутників стало проводитися за допомогою відеоприскорювачів, велика потреба в цілих обчисленнях відпала. На перше місце вийшла швидкість операцій з плаваючою точкою, як перемноження речовинного вектора на речовинну матрицю. Подивимося тепер, що може запропонувати SSE розробнику.
При впровадженні SSE процесор отримав на додаток до стандартних регістрів архітектури x87 8 нових великих регістрів розміром по 128 біт, у кожному з яких міститься 4 32-бітових речових числа.

частина 3частина 2частина 1частина 0
регістр 7
регістр 6
регістр 5
регістр 4
регістр 3
* * * * регістр 2
2 55.9 -1.9e101.567e-6регістр 1
0.7 -100.0 11.2 0.5 регістр 0

З четвірками операндів можна покомпонентно виконувати такі операції: скласти дві четвірки чисел, відняти, перемножити, розділити. Обчислити одночасно 4 (зворотні) квадратні корені, точно або приблизно. Ще можна тасувати вміст регістрів, перекладати дані з одних частин регістру до інших і проводити деякі інші аналогічні операції. Однак переміщення даних відбувається не швидше за їх складання, так що ефективне використання SSE можливе тільки на підготовлених правильно упакованих даних.
І на процесорі Pentium 4 одна SSE операція виконується стільки ж, скільки аналогічна звичайна. Тобто за оптимізації можна отримати приріст продуктивності в 4 рази. Якщо бути точнішим, то навіть дещо більше, за рахунок використання нових великих регістрів. Однак далеко не всі обчислення можна ефективно оптимізувати під SSE. Як приклад «хорошої» завдання слід навести множення чотиривимірної матриці на чотиривимірний вектор. Прискорення чотириразове без особливих витрат.
Насамперед використання SSE дозволяє сучасним процесорам при виконанні трансформації вершин трикутників, що становлять тривимірну сцену, успішно змагатися з найновішими відеоприскорювачами. Інша річ, що процесор має багато інших завдань, і краще його по можливості розвантажити, щоб він працював паралельно з відеоприскорювачем.
А що ж Athlon XP? Власне, одним із головних нововведень у порівнянні зі звичайним Athlon було саме впровадження технології SSE. Очікується приблизно дворазове прискорення порівняно зі звичайним кодом. Потрібно, однак, відзначити, що це не SSE реалізовано у Athlon XP "гірше", а виконання звичайного коду відбувається вкрай ефективно. На одній частоті при використанні лише SSE інструкцій Athlon XP та Pentium 4 мають схожу продуктивність. Athlon XP має перевагу при виконанні умовних переходів, так що зовсім для нього добре виходить. Але Pentium 4 досягає більш високих частот, що при використанні SIMD інструкцій дозволяє йому іноді значно вигравати у швидкості.

3DNow! та 3 помилки стратегії AMD

Розглянемо тепер у сенсі конкурента SSE – фірмове розширення процесорних команд від AMD. Можливо, скоріше правильніше назвати SSE конкурентом 3DNow! оскільки воно згодом з'явилося. Нагадаю, 3DNow! вперше було реалізовано у процесорах AMD k6-2-3D, конкурентах Intel Pentium II. Власне, вони й одержали через введення 3DNow! приставку або, якщо завгодно, постфікс 3D. Чому 3DNow! ли сміливо назвати конкурентом SSE? Справа не тільки в різній «фірмовій» приналежності цих розширень, зрештою, вони могли бути створені і одним виробником процесорів. Обидва розширення оперують з речовими числами і розраховані для застосування в геометричних додатках.
Отже, 3DNow! Це розширення багато в чому схоже на SSE, але так само має і значні відмінності. Реєстрів так само 8, але вони розміром не 128 біт, а 64. Відповідно, в них міститься не 4 числа, а лише 2. Є аналогічний SSE набір арифметичних операційз регістрами. Скласти-помножити-розділити дві пари операндів тощо. Є й операції перебування (зворотного) квадратного кореня, Точніші та швидші наближені.

частина 1частина 0
регістр 7
регістр 6
регістр 5
регістр 4
* * регістр 3
10000.1 6.7 регістр 2
-0.5 1.5e7регістр 1
2.0 1.0 регістр 0

Як можна здогадатися, на ділянках коду, повністю оптимізованих під 3DNow!, очікується дворазового приросту продуктивності за рахунок одночасного виконання операцій з двома парами операндів. Начебто менш перспективно, ніж при використанні SSE. Дійсно, якщо вже оптимізувати, тим більше, вручну, то краще шукати максимальний приріст продуктивності. Ця обставина разом із традиційно більшою часткою процесорів Intel на ринку стала одним з важливих факторів, що завадили поширенню 3DNow! серед розробників.
Звичайно, «частка» фактора більшої частки SSE-процесорів за впливом на поширення 3DNow! максимальна. Вибачте за каламбур. Тим більше, що приріст від використання SSE у Pentium III – минулих конкурентах процесорів Athlon c 3DNow! - приблизно вдвічі нижче, ніж на Pentium 4. І аналогічний ефект від використання 3DNow! в AMD Athlon.
Однак є ще одна важлива відмінність розширення 3DNow! Можна складати між собою вміст одного регістру. Тобто робити не тільки «вертикальні» операції, а й горизонтальні. Спробуйте виконати на SSE одну з основних геометричних операцій – скалярний добуток двох тривимірних векторів. Нічого хорошого не вийде. Елементи довгого регістра SSE просто не скласти, треба задіяти додаткові регістри. Вийде нітрохи не швидше, ніж без будь-якого SSE, може, навіть повільніше. А скалярний твір дуже часто зустрічається, у тому числі при знаходженні норми вектора відстані між точками. Щодо цього 3DNow! виглядає кращим завдяки більшій гнучкості.
Інша важлива обставина, що говорить на користь 3DNow!, це можливість ефективної автоматичної оптимізації засобами компілятора. SSE занадто громіздко – розміри регістрів великі – для автоматичної організації даних. На коді, наповненому обчисленнями з плаваючою точкою, можна було б безкоштовно отримати приблизно півторний приріст продуктивності. Але AMD не перейнялася створенням такого компілятора, в той час, як Intel посилено просувала свій власний компілятор, що оптимізує, підтримує SSE, і, природно, ні про яке 3DNow! не знаючий. Дійшло до того, що AMD використовувала Intel'івський компілятор для компіляції вихідних кодів процесорних тестів Spec (www.spec.org). Свого немає, доводиться для досягнення максимальної продуктивності тестового додаткувикористовувати найефективніший компілятор.
Розробники, звичайно, не прагнули зайвий раз оптимізувати програми, і так повно клопоту з бажаною оптимізацією під найпоширеніші процесори фірми Intel. Виходило, що або взагалі не було SIMD-оптимізації, тоді процесор Athlon показував себе добре, особливо, в порівнянні з Pentium 4. Або була оптимізація під SSE (2), тоді Athlon умовно програвав.
Можна сказати, що AMD серйозно прорахувалося з 3DNow!, звичайно, був певний локальний ефект при першій презентації. В основному рекламний, оскільки з оптимізованих популярних додатківможна було відзначити хіба що OpenGL драйвера, у яких спостерігався суттєвий приріст швидкості. Краще б вони, якщо вже не можуть «пробити» своє розширення команд, суворо реалізовували б у процесорах всі нововведення Intel. Реалізували б замість 3DNow, що не використовується! в Athlon XP система команд SSE2, нехай навіть не так ефективно. Золотий був би процесор майже без слабких місць.
Забігаючи вперед, скажу, що нарешті життя змусило AMD перейматися компілятором для своїх процесорів. Оскільки нова архітектура AMD x86-64 потребує перекомпіляції існуючих програм для використання нових можливостей. У процесорах AMD Athlon 64 також збереглася 3DNow!, так що з'явилася можливість порівняти ефективність автоматичної оптимізації під SSE та 3DNow! Буде справді цікаво.

SSE2

І, нарешті, розглянемо SSE2 – останнє з існуючих зараз на ринку x86-сумісних персональних комп'ютерів SIMD-розширення. Цілочисельну складову ми вже обговорили раніше. Але у складі SSE2 з'явилися як інструкції до роботи з цілими числами. Ті ж 8 великих 128-бітових регістрів тепер можна інтерпретувати як такі, що містять не чотири 32-бітних речових числа, а два 64-бітних речових числа підвищеної точності. Числа з підвищеною точністювикористовуються у тих випадках, коли обчислення зі звичайною точністю призводять до великих похибок. Всі операції перенеслися з SSE, тільки працюють не з четвіркою пар операнда, а з двійкою пар операнда. Щоправда, наближене обчислення квадратного кореня зникло, звісно.

частина 1частина 0
регістр 7
регістр 6
регістр 5
регістр 4
регістр 3
* * регістр 2
-1.5e10 0.00001 регістр 1
1e-25 5.5 регістр 0

Вийшов як би аналог 3DNow!, але без гнучкої операції складання між собою вмісту одного регістра.
А що щодо швидкості? Один науковий співробітник якось запитав мене, як краще оптимізувати свою розрахункову функцію під SSE, він десь почув, що можна досягти прискорення на порядок. Я зацікавився, який тип даних він використовує? Виявилося, що з підвищеною точністю, щоб вкотре бути впевненим у коректності обчислень. Тоді йому слід використовувати для оптимізації SSE2 і задовольнятися лише двократним збільшенням продуктивності.
Можна вивести просте правило для оцінки продуктивності розрахункових програм, якщо програма спеціально оптимізована під SSE2, буде більш-менш швидко виконуватися на процесорах Pentium 4 щодо Athlon XP. На найвищій частоті переганяти. Якщо немає спеціальної оптимізації, програватиме процесору Athlon XP із відповідним рейтингом.

Нові інструкції Prescott

Настав час познайомитися з нововведеннями у звичайний набір команд, які будуть реалізовані в процесорі Prescott, та оцінити їхню корисність.
Насамперед, а що ми, власне, хочемо? Я маю на увазі насамперед розробників програмного забезпечення.
Практично у всіх розробників тривимірних програм, насамперед комп'ютерних ігор, є невелика мрія: мати зручну швидку бібліотеку класів, що представляють геометричні об'єкти, вектори та матриці.

class Vector
{
float x,y,z;

public:

inline friend Vector operator +(const Vector &a, const Vector &b); //додавання

inline float norm() const; // Довжина вектора
inline float norm2() const; // Довжина вектора в квадраті

inline friend float Dot(const Vector &a, const Vector &b); // скалярний добуток
};


Щоб можна було просто писати a = b + c, а не набирати набір a.x = b.x + c.x; a.y=b.y+c.y; a.z=b.z+c.z; І завжди на заваді цього щось знаходилося. Або поганий компілятор так погано компілював виклики функції додавання векторів, що накладні витрати продуктивності переважали зручності написання. Потім виявилося, що за допомогою SSE зручно складати вектори, а вважати скалярний і векторний твір зовсім незручно та повільно.
І ось трапилося невелике диво, нові інструкції повинні зробити значно легшою оптимізацію під SSE та SSE2, у тому числі, і векторної математики.
Розглянемо більш предметно.
Найголовніше: зрештою з'явилася можливість досить ефективно складати елементи одного SSE регістру між собою.


Так можна просто трьома командами обчислити скалярний добуток двох векторів або норму вектора без використання додаткових регістрів. Звісно, ​​залишаються побоювання щодо продуктивності такої команди горизонтального додавання. Вона не повинна бути великою, якщо команда реалізована. Сподіватимемося, що виконання цієї інструкції не скидає конвеєр процесора.
Аналогічно можна не складати, а віднімати елементи одного регістру.
З'явилася можливість складати та віднімати між собою два числа, що знаходяться в одному SSE2 регістрі. Також з'явилася інструкція комбінованого складання-віднімання двох елементів.

y2x2
ADDSUBPD
y1x1
=
y1+y2x1-x2

Поява цієї інструкції завдячує природі множення комплексних чисел. (a+bi)*(c+di)=a*c-b*d+(b*c+a*d)i Тепер значно спростилася оптимізація під SSE2 обчислень із комплексними числами. По суті, SSE2 стало аналогічно 3DNow! тільки працює з числами з підвищеною точністю.

Наведемо таблицю нових вказівок.

ІнструкціяОпис
Горизонтальні операції з регістрами
HADDPSгоризонтальне додавання вмісту SSE регістрів
HSUBPSгоризонтальне віднімання вмісту SSE регістрів
HADDPDскладання двох елементів одного SSE2 регістру
HSUBPDвіднімання одного з інших двох елементів SSE2 регістру
У всіх відношеннях корисні команди, на яких давно чекали розробники, що серйозно спрощують автоматичну та ручну оптимізацію.
Команди завантаження даних
MOVSHDUPзавантажує дані в регістр-приймач, копіюючи тільки 2 і 4 32-бітний елемент
MOVSLDUPзавантажує дані в регістр-приймач, копіюючи тільки 1 і 2 32-бітний елемент
MOVDDUPзавантажує дані в регістр-приймач, копіюючи і подвоюючи першу половину регістра-джерела
Корисно для автоматичної та ручної оптимізації.
Комбіноване складання-віднімання
ADDSUBPS(x1, y1, z1, w1) * (x2, y2, z2, w2) =
(x1-x2, y1 + y1, z1-z2, w1 + w2)
ADDSUBPD(x1, y1) * (x2, y2) =
(x1-x2, y1+y2)
Значно спрощує реалізацію операцій із комплексними числами. Допомагає автоматичної оптимізації програм.

Для відносно рідкісної тонкої ручної та автоматичної оптимізації.
Перетворення даних
FISTTPЄдина нова x87 інструкція. Здійснює швидке перетворення вмісту стека співпроцесора до цілого типу.
Корисно для автоматичної оптимізації програми під час компіляції. Колись давно цю інструкцію забули додати в стандартний набір x87 інструкцій, і тепер цей недогляд заповнено.
Поліпшення підтримки Hyper-threading
MONITOR/MWAITПроцесор відстежує подію запису в вказаний діапазонпам'яті і активує потік, що «заснув».
Спрощує оптимізацію програм та сервісів операційної системи для підтримки технології Hyper-Threading та загалом multi-threading.

Оцінка нововведень та порівняння з AMD x86-64

Дивлячись на доповнення до систем команд можна сміливо сказати, що набір інструкцій процесора Prescott придбав деяку стрункість і завершеність. З ним можна жити довгий часдо появи радикальних нововведень. На жаль, кількість регістрів не збільшилася, але це було важко зробити без втрати сумісності через обмеження формату машинних інструкцій архітектури x86. Дороблено всякі приємні дрібниці, на кшталт команди ефективної конвертації fisttp. Значно спрощено автоматичну генерацію SIMD-оптимізованого коду. У процесора, окрім невідомої ціни, може бути лише одне слабке місце – велика глибина конвеєра і, отже, сильна «нелюбов» до умовних переходів. Однак, подовження конвеєра це, мабуть, неминуче зло переходу до вищих частот. Мені особисто здається, що це найкрасивіший процесор від Intel за останні роки. Ми зараз не торкаємося питань споживання потужності, вимоги до охолодження – сподіватимемося, що із цим проблем не буде. А щодо ціни, є підстави вважати, що вона не буде надмірною. Погляньмо на обсяг КЕШу другого рівня - 1MB, що ж тоді представлятиме відповідний Celeron? Він, що, матиме 512KB КЕШу? Це буде вже не Celeron, а якийсь кишеньковий монстр. Для багатьох програм достатньо і 256KB КЕШу, так що є великий запас зниження собівартості. Що й казати, перехід до нового технологічного процесу обіцяє великі вигоди.
Однак є одна обставина, яка може різко підняти ціну процесора. Чи будуть у нього гідні конкуренти? В особі такого конкурента нам хотілося б бачити новий 64-бітний процесор від AMD – Athlon 64. технічні характеристикивже багато сказано, подивимося, чим може залучити розробників.
AMD нарешті реалізувала підтримку SSE2, це приємно. Тепер у процесорів Intel не буде виграшу лише за рахунок одного факту використання у програмі SSE2. Як відомо, Athlon 64 має кілька режимів роботи – режим сумісності та 64-бітовий режим, що відкриває, власне, всі можливості нової архітектури AMD x86-64. У режимі сумісності новий процесор представляється з погляду розробника ПЗ Pentium'ом 4 з прикрученим 3DNow! І позбавленим деяких специфічних недоліків, якось огидне виконання не SIMD-оптимізованого коду та велика не любов до розгалужень. Можна сміливо сказати, що новий процесор AMD буде гідним суперником звичайного Pentium 4, якщо, звичайно, зможе дістатися рингу.
Можна навіть безперечно передбачити, що звичайному процесору Pentium 4 знадобиться дуже істотна перевага в частоті, щоб зрівнятися за продуктивністю з новим Athlon в інтегральних тестах, що охоплюють широкий спектр додатків. Так, власне, хоча процесора ще немає на ринку, повно тестів дослідних зразків, де коефіцієнт продуктивності на частоту вдвічі вищий у Athlon 64.
Але що пропонує розробнику новий ексклюзивний 64-бітний режим? Крім приємної перекомпіляції всього і вся, є три головні речі – подвоєння кількості регістрів, 64-бітова арифметика та розширений за межі 2GB віртуальний адресний простір програми. 64-бітова арифметика приємна сама по собі, але на сьогоднішній день має досить вузьку область застосування в настільних системах. Переважній кількості додатків цілком достатньо 32 біт. AMD виявила одне досить актуальне поле застосування 64-бітної цілої арифметики – виконання деяких завдань криптографії прискорюється в рази.
Розширення адресного простору, безумовно, буде затребуване в недалекому майбутньому та в настільних додаткахАле в найближчі роки персональних комп'ютерів з обсягом пам'яті більше 2GB буде, швидше за все, не дуже багато.
Залишилося збільшення удвічі кількості регістрів. З'являються додаткові можливостізі зберігання змінних у регістрах без зайвого звернення до пам'яті. Можна буде ефективно передавати за допомогою регістрів параметри функцій. Причому розробнику не потрібно про це турбуватися, все зробить компілятор, що оптимізує. Збільшення кількості регістрів також дозволить більш ефективно розміщувати в коді незалежні команди, що дозволить щільніше завантажити процесор. І це теж ляже на витривалі плечі компілятора. Мені останнє видається найбільш вагомою перевагою. Справа в тому, що у сучасних процесорівІснує велика кількість так званих буферів відкладеного запису, які дозволяють досить ефективно організувати swap регістрів без завантаження пам'яті. Дані, відправлені на згадку і відразу затребувані, не очікуються з пам'яті, а миттєво завантажуються з буфера. У Prescott, до речі, кількість таких буферів збільшена.
Так, можна сміливо уявити хороші перспективи нового процесора AMD в серверних системах. Розгалуження його не лякають, адресний простір велике, регістрів достатньо, вміє швидко шифрувати. Все це дуже добре для сервера якої-небудь бази даних. Відносно невисока ціна може зробити його ідеальним у певній ніші.
Однак, розглянемо його перспективи у обчислювально важких графічних додаткахдля персональних комп'ютерів, насамперед, у тривимірних комп'ютерних іграх. Власне, із чого складається продуктивність у сучасній грі? З двох основних компонентів: високорівневої інтелектуальної обробки сцени, відсікання невидимих ​​примітивів за допомогою портальної технології тощо, розрахунку AI та фізичної моделі. І другий компонент – вміння швидко заштовхати дані у відеоприскорювач. Величезна тактова частота та висока частотасистемні шини не повинні підвести новий процесор від Intel у проблемі «годівлі» VPU. З продуктивністю власне ігрового двигуна все складніше. На стороні AMD більш лояльне ставлення до розгалужень, які в коді такого сорту зустрічаються дуже часто. Велика кількістьвипадкових розгалужень може нівелювати будь-яку перевагу в частоті. І, нарешті, має проявити себе 3DNow!, Досить зручний набір інструкцій для оптимізації геометричних розрахунків, якими повні сучасні ігри. До того ж, оскільки для AMD Athlon 64 бажана перекомпіляція додатків для використання нових можливостей x86-64, оптимізація під 3DNow! буде здійснюватися автоматично компілятором, що оптимізує, не вимагаючи зусиль розробника.
Не з'явись у процесорі Intel Prescott новихзручних інструкцій, що істотно полегшують оптимізацію, я віддав би попередню перевагу процесору AMD, позбавленому, на перший погляд, відверто слабких місць, властивих Pentium 4. А так - подивимося, важко заздалегідь сказати.
Корпорація Intel надає розробникам великий набір оптимізованих функцій, вони отримають максимальне прискорення від застосування нових інструкцій. AMD теж пішла цим шляхом, анонсувавши свій набір бібліотек, що повністю використовують можливості x86-64.
Мені ось що подумалося, ходили дивні чутки, що Intel має намір впровадити в процесорах Prescott архітектуру AMD x86-64, особливо, у разі успіху. Це неймовірно, такого ніколи не було. Навпаки, чому б AMD, якщо вона все одно затримує випуск процесорів, не включити в нові Athlon додаткові інструкціїпроцесора Prescott? Тоді всі оптимізовані для Intel бібліотекифункцій будуть чудово працювати на процесорах AMD. Процесор Prescott не матиме жодної переваги за рахунок зручних інструкцій. Тим більше, що це на перший погляд не дуже складно зробити, процесори AMD виконують уже давно гнучкі операції 3DNow! Швидше, можна було очікувати від AMD запровадження подібних «горизонтальних» операцій з даними, в силу більш підходящої архітектури процесорного ядра, в першу чергу, меншої частоти, більшої кількостівиконуючих модулів тощо.
Я сподіваюся, що цей значний недогляд буде виправлено, тим більше, що все одно потім AMD доведеться, як це завжди було, реалізовувати у своїх процесорах розширення SSE.

SSE2 розширює набір інструкцій SSE, щоб повністю витіснити MMX. Набір SSE2 додав 144 нових команд до SSE, в якому було лише 70 команд.

Особливості

  • SSE2 використовує вісім 128-бітових регістрів (xmm0 до xmm7), включених в архітектуру x86 з введенням розширення SSE , кожен з яких трактується як 2 послідовні значення з плаваючою точкою подвійної точності.
  • SSE2 включає набір інструкцій, який проводить операції зі скалярними і упакованими типами даних.
  • SSE2 містить інструкції для потокової обробки цілих даних у тих же 128-бітових xmm регістрах, що робить це розширення більш кращим для цілих обчислень, ніж використання набору інструкцій MMX, що з'явився набагато раніше.
  • SSE2 включає дві частини – продовження SSE і продовження MMX .
    • Продовження SSE працює з речовими числами.
    • продовження MMX працює з цілими. У SSE2 регістри порівняно з MMX подвоїлися (64 біти -> 128 бітів). Т.к. швидкість виконання інструкцій не змінилася, при оптимізації під SSE2 програма отримує дворазовий приріст продуктивності. Якщо програма вже оптимізована під MMX, то оптимізація під SSE2 дається порівняно легко в силу подібності системи команд.
  • SSE2 включає ряд команд управління кешем, призначених для мінімізації забруднення кеша при обробці невизначених потоків інформації.
  • SSE2 включає складні доповнення до команд перетворення чисел

Посилання


Розширення базових інструкцій процесорів сімейства x86
MMX | MMXEXT | SSE | SSE2| SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES

Wikimedia Foundation. 2010 .

Дивитись що таке "SSE2" в інших словниках:

    SSE2- SSE2, Streaming SIMD Extensions 2, is one of the IA 32 SIMD (Single Instruction, Multiple Data) instruction sets. SSE2 був першим випущений Intel з ініціативною версією Pentium 4 в 2001 році.

    SSE2- (Streaming SIMD Extensions 2) ist eine x86 Befehlssatzerweiterung, die Intel mit dem Pentium 4 einführte. Die mit SSE eingeführten 128 Bit Registr können в SSE2 auch mit MMX Operationen verwendet werden. SSE2 ermöglicht die Verarbeitung von… … Deutsch Wikipedia

    SSE2










    SSE2 es el acrónimo de Streaming Single Instruction Multiple Data Extensions 2 es un dels conjuntos d'instrucciones de l'arquitectura IA 32 SIMD. Fue utilizada por primera vez en la primera versió del Pentium 4 … Wikipedia Español

    SSE2- Streaming SIMD Extension 2 Streaming SIMD Extension 2, genéralement abrégé SSE2. Elle est composée de 144 instructions et fait son apparition avec le Pentium 4 d Intel. Elle gère des registres 128 bits pour les entiers et les flottants… … Wikipédia en Français

    SSE2- Streaming Single Instruction, Multiple Data Extensions 2 (Computing) … Abbreviations dictionary

    SSE 2- SSE2 (Streaming SIMD Extensions 2) ist eine x86 Befehlssatzerweiterung, die Intel mit dem Pentium 4 einführte. Die mit SSE eingeführten 128 Bit Registr können в SSE2 auch mit MMX Operationen verwendet werden. SSE2 ermöglicht die Verarbeitung… … Deutsch Wikipedia

    Streaming SIMD Extensions 2- SSE2 (Streaming SIMD Extensions 2) ist eine x86 Befehlssatzerweiterung, die Intel mit dem Intel Pentium 4 einführte. Die mit SSE eingeführten 128 Bit Registr können в SSE2 auch mit MMX Operationen verwendet werden. SSE2 ermöglicht die… … Deutsch Wikipedia

    SSE2 (англ. Streaming SIMD Extensions 2, потокове SIMD розширення процесора) це Pentium 4. SSE2 використовує вісім 128 бітних регістрів (xmm0 до xmm7), включених в архітектуру x86 з введенням розширення SSE, кожен з яких трактується як 2… … Вікіпедія

    Comparison of AMD processors- Цей list is incomplete; Ви можете допомогти expanding it. Colors of processor code names indicate same core. Archi tecture Family Code Name Model Group Speed ​​(MHz) Socket Process (nm) Cores FSB/HT (MHz) Cache (KiB) Memory Controller … Wikipedia

    List of AMD Athlon 64 мікропроцесорів- Цей list is incomplete; Ви можете допомогти expanding it. The Athlon 64 мікропроцесор від AMD є вісім generation CPU targeted at consumer market. Contents 1 Single core desktop processors 1.1 Athlon 64 … Wikipedia

Багато користувачів при установці різних програм, стикаються з повідомленням “Процесор не підтримує набір інструкцій SSE2”. Ця помилка зустрічається на комп'ютерах зі старим залізом і вводить у ступор користувачів – начебто Windows працює без проблем, але програма встановлюватися не хоче. Ми постараємось зрозумілою мовоюрозповісти, що це за технологія SSE2 і які її функції PC. Також ви дізнаєтесь, чи можна увімкнути підтримку SSE2 Instructions у Windows.

Що таке SSE2 на комп'ютері?

Технологія SSE2- Це розширення 32 бітної архітектури, що виконує набір інструкцій у процесорі. Чим ширший набір інструкцій, тим більше можливостей обробки процесором системних запитів. Наприклад, набір команд у першій РЄ дорівнював 70, а друга версія підтримує вже 144.

Інструкції SSE2 не доступні для ранніх лінійок процесорів, а це: АМД (до Атлону 64), Інтел (до Пентіуму 4), а також VIA C3 і Transmeta Crusoe. Дедалі пізніші лінійки підтримують цю технологію. Ось повний списокпристроїв.

Що робити із проблемою?

Як вже зрозуміло – помилка “This program requires a computer that supports SSE2 instructions” виникає під час спроби встановити додаток, виконання якого підтримає процесором, зважаючи на його “давнини”. Найчастіше ця проблема зустрічається при встановленні актуальних версій браузерів (Firefox, Opera, Chrome, Internet Explorer), сторонніх додатків(Office, Skype, антивірус Nortonі т.д.), або при перевстановленні Windows.


Якщо ви отримали цю помилку, то вибору тут не багато: оновлювати залізо крайньому випадку материнську платуі процесор, або ж встановлювати більше ранню версіюсофту. Якщо ви не бажаєте докупляти нові деталі на ПК, тоді знайдіть для своєї програми старіші версії, які будуть сумісні з вимогами процесора. Наприклад, версії браузерів, що не вимагають SSE2: Опера 20.0.1387.91, Хром 35.0.1870.2, Файєрфокс нижче 48 версії. Ось повний перелік.

Слід врахувати, що шифрування та протоколи багатьох сайтів не підтримуватимуться у старих версіях браузерів. Також не забудьте вимкнути автооновлення для таких софтін. Є безліч інструкцій, щодо відключення апдейтів, пошукайте в Мережі.

Чи можна увімкнути SSE2?

Багато користувачів після появи цієї помилки шукають інструкції, які давали б можливість включити цю “опцію” в системі, хтось розбирається трохи більше звичайного і лізе в BIOS. Десь навіть зустрічаються згадки про патчі, які дозволять увімкнути ССЕ2 в комп'ютері, але крім додаткового навантаження вони не дадуть ефекту. Такі моди зустрічаються як рішення для помилки

Ви можете використовувати програму CPU-Z, щоб переглянути параметри вашого процесора Якщо в рядку Instructions не буде вказано SSE2, тоді нічого не поробиш.


Програма CPU-Z – перевірка характеристик процесора

Висновок

Дуже часто комп'ютер потрібен лише для деяких цілей, таких як роздруківка, обмежений серфінг в інтернеті, документація - тому можна обмежитися завантаженням відповідної версії софту, що вирішить помилку "Процесор не підтримує SSE2". Але будь-який заліз має момент вироблення, тому будьте готові до оновлення апаратної частини PC.

Якось мені знадобився бюджетний, тобто недорогий комп'ютер для Інтернету.Жирним я виділив недарма, раніше і досібув такий термін, який характеризував слабенький ПК, який ні для чого більше не підходив, як сидіти в інтернеті.

То чому цей термін був? Справа в тому, що різко всі компанії перестали оновлювати свій софт для користувачів з windows xp і процесорами, що не підтримують sse2. Прикольно? Та ні, не дуже! Навіть сумно.

Якщо процесор не підтримує sse2, Ви:

  1. Не можете встановити актуальну версію windows. Точніше, навіть не встановіть windows 7.
  2. Не встановіть жодного браузера, навіть нікому непотрібного аміго та сафарі. Мені чисто пощастило, що у мене була збірка XP chip 2010, і там були старі браузери, які я зміг встановити.
  3. Не відкрийте 30% сайтів, а з 70, що залишилися, половина буде частково не працюючими.
  4. Не зможете дивитись фільми онлайн. На половині сайтів вас пошлють… ​​оновлюватись у сенсі, а на другій половині кожна секунда фільму йтиме 2-5 сек.

Я так можу довго перераховувати, але в цьому немає потреби. І так усе зрозуміло. Так що - комп'ютери для інтернету вимерлиЗалишилися лише слабенькі та нормальні.

Процесор не підтримує sse2 – що робити?

У мережі повно інформації, яка вводить в оману, наприклад - обхід перевірки процесора на sse2. Маячня, її обійти не можна, вірніше можна, але потрібно змінити дуже багато коду, і це для кожної програми окремо. Тобто. не можна! Можна тільки змінити відсоток, якщо це дозволяє мати, а в моєму випадку ні.

Завантажити браузер, який не вимагає sse2

Друзі, я вам дуже шкодую, і тому ділюся з вами старими браузерами (opera, mozila firefox, google chrome) При установці у вас не повинні з'явитися помилки. Завантажити безкоштовно

Лох не мамонт, він не вимре

Компи вимерли, а лохи ніколи! Ось наочний приклад – Я. Здавалося б, як вебмайстер, можна навіть сказати програміст, а це г... купив. Як це, бро? Прикинь, відкрив олх, дивлюся - ПК 1.8 ГРЦ, 2 гб ОЗУ, 512 відео, 500 ВТ БП, 120 ХДД, і все це за 20 $. Я швидко рвонув, т.к. аналоги коштують у 2 рази дорожче, купив, думаю у лохи, а я п…. Приїхав додому, намагаюся все встановити, а мені суцільні error'и, подумав дрова, а виявилося sse2. Смуток одним словом.

До січня 2020 року. Хоча корпорація не збирається переглядати терміни підтримки операційної системи, випущеної в 2009 році, схоже, що Редмонд намагається змусити користувачів оновитись до нових версій Windows за рахунок обмеження підтримки та ігнорування проблем, виявлених в останніх оновленнях.

Цього місяця Microsoft заявила, що агенти технічної підтримки більше не надаватимуть послуги підтримки користувачам на форумах Windows 7 і Windows 8 на сайті спільноти Microsoft, незважаючи на той факт, що ці операційні системи все ще підтримуються компанією.

Автор популярних книг про Windows Вуді Леонард (Woody Leonhard) повідомив про інший інцидент – Microsoft завершила підтримку деяких систем Windows 7 з певними типами процесорів. У вівторок Патчей у березні 2018 року вийшло чергове оновлення для Windows 7, яке мало відому помилку, що зачіпає пристрої з процесорами, які не підтримують SSE2:

Стоп-помилка виникає на комп'ютерах, які не підтримують інструкцію SSE2 (Streaming SIMD Extensions 2).

Ця помилка зберігалася і в списках відомих проблем патчів у квітні, травні та червні 2018 року. До останнього моменту Microsoft повідомляла, що над усуненням цієї помилки ведеться робота:

Microsoft займається розробкою рішень та надасть оновлення у майбутніх випусках патчів.

Минулого тижня нотатки до червневого оновлення для Windows 7 було змінено. Компанія прибрала цю помилку з відомих проблем, але не надала жодної додаткової інформаціїпо данному питанню. Чи була помилка виправлена?

Щоб розібратися в цьому питанні, потрібно відкрити нотатки до попередніх оновлень, наприклад, до травневого KB4103718 . Можна помітити, що ця стоп-помилка значиться у списку, але замість інформації про те, що проводиться робота над виправленням помилки, Microsoft просто зазначає, що на пристроях без підтримки SSE2 потрібно замінити процесор більш сучасний або використовувати віртуалізацію.

Встановіть на пристрій процесор, який підтримує SSE2, або використовуйте віртуалізацію машини.

Іншими словами, Microsoft без зайвого розголосу завершила підтримку Windows 7 для пристроїв із процесорами, які не підтримують SSE2. Корпорація не збирається виправляти цю проблему і навіть видалила інформацію із нотаток до останнього оновлення, через що користувачі та адміністратори залишаються у невіданні.

Підтримка SSE2 - необхідна умовадля установки Windows 8 і більше нових систем Windows 10, але ніколи SSE2 не було умовою для встановлення Windows 7. офіційній сторінцісистемних вимог для Windows 7 немає жодного слова про дане обмеження.

Ця зміна стосується пристроїв з процесорами Pentium III. Загальна кількість таких пристроїв невідома, але через це користувачі перебувають у скрутному становищі. Windows 7 продовжить працювати як завжди, але якщо останні виправлення не будуть встановлені, система не отримає нові оновленнябезпеки.

Перехід на нові операційні системи Windows без апаратного оновлення неможливий, тому що також потрібна підтримка SSE2. У користувачів порушених пристроїв залишається три можливі варіанти подальших дій: продовжувати використовувати систему, що підтримується, оновити процесор / ПК або переключитися на Linux.

Висновок

На момент виходу Windows 7 Pentium III вже вважався застарілим процесором. Очевидно, Microsoft провела аналіз витрат, щоб оцінити доцільність розробки патча для пристроїв з процесорами без підтримки SSE2 і в результаті вирішила просто відмовитися від підтримки даних ПК.

Microsoft дуже часто діє потай, без зайвого шуму. Замість того, щоб відкрито повідомити про зміни користувачам, компанія просто видалила відому проблему зі статті про останнє оновленнячим вона вводить в оману багатьох користувачів.

Люди заплатили за операційну систему та їм гарантували підтримку до 2020 року. Microsoft повинна поважати своїх користувачів та виконувати взяті на себе зобов'язання.

Знайшли друкарську помилку? Виділіть та натисніть Ctrl+Enter