Перейти до вмісту

SSE

Архітектурний довідникFeex

SSE, Streaming SIMD Extensions, запровадило регістри x86 XMM та операції над упакованими числами з рухомою комою одинарної точності. Це перший компонент у послідовності незалежно визначених розширень SIMD.

Що потрібно знати

SSE, Streaming SIMD Extensions, запровадило регістри x86 XMM та операції над упакованими числами з рухомою комою одинарної точності. Це перший компонент у послідовності незалежно визначених розширень SIMD.

Як це працює

Регістр XMM містить 128 бітів. Упаковані операції одинарної точності працюють із 4 32-бітними значеннями з рухомою комою, тоді як скалярні форми діють на одне значення зі специфічною для інструкції поведінкою для решти бітів. SSE також запровадило середовище керування та стану MXCSR для винятків SIMD чисел із рухомою комою та округлення.

Де це корисно

Підпрограми графіки та звуку можуть застосовувати одну й ту саму операцію до кількох незалежних значень. Доріжки (lanes) SIMD є елементами даних усередині інструкції, а не ядрами ЦП чи потоками операційної системи. Навколишня програма все одно обробляє завантаження, збереження та виняткові значення.

Як перевірити підтримку та активацію

CPUID.01H:EDX біт 25 вказує на SSE. ОС має забезпечувати відповідне керування станом XMM/MXCSR. У звичайному підтримуваному ABI x86-64 SSE та SSE2 є базовими засобами, але 32-бітна програма має власну базову лінію розгортання.

Функція SIMD описує інструкції, а не додаткові ядра. Форма інструкції визначає розрядність елементів, знаковість, округлення, вирівнювання та те, які саме смуги взаємодіють. Програмне забезпечення має зберігати стан регістрів ABI та використовувати підтримуване середовище виконання.

Чого ця функція не гарантує

Сама лише SSE не гарантує цілочисельних операцій чи операцій подвійної точності SSE2, пізніших розширень SSE, AVX чи політики підтримки в ОС. Деякі застарілі інструкції вимагають специфічного вирівнювання пам'яті, якого програміст повинен дотримуватися.

Сумісність і продуктивність на практиці

Пізніші назви в сімействі SSE мають окремі біти функцій. Для розгорнутого бінарного файлу перевірте повний мінімальний набір функцій, включно з бібліотеками та кодом запуску. Резервний варіант корисний лише тоді, коли жодна непідтримувана інструкція не виконується до кроку вибору.

Практичний контрольний список для верифікації

  1. Зафіксуйте точну модель процесора або платформи, а також версії використовуваної програми, ОС і середовища виконання. Збережіть точне формулювання фактичної помилки або вимоги.
  2. Звіртеся з документацією виробника для цієї точної моделі, потім перевірте фактичні можливості та стан активації в середовищі, де виконується програма.
  3. Порівняйте кожну вимогу вибраного двійкового файлу або бекенда. Схожої назви функції, псевдоніма чи загального позначення технології недостатньо.
  4. Переконайтеся, що програма вибрала призначену реалізацію. Використовуйте її задокументовані засоби діагностики та підтримуваний резервний варіант, якщо вимоги не виконуються.
  5. Вносьте по одній підтримуваній зміні за раз і повторюйте те саме робоче навантаження. Зберігайте оригінальну конфігурацію та можливість відновлення.

Якщо функція вказана, але програмне забезпечення не може її використати

Почніть із компонента, у якому саме стався збій. База даних обладнання описує зафіксовані можливості; операційна система або гіпервізор можуть надавати інше фактичне середовище. Помилка неприпустимої інструкції також потребує дослідження фактичної інструкції, що викликала збій, і двійкової збірки, оскільки пошкодження даних або непов'язана непідтримувана інструкція можуть викликати схожий симптом.

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

Джерела та межі застосування цього пояснення

Intel 64 and IA-32 Architectures Software Developer's Manual · psABI x86-64: рівні архітектури та мікроархітектури процесора

Ці довідкові матеріали визначають архітектурну поведінку та вимоги до програмного забезпечення. Вони не перевіряють незалежно кожне значення функції на сторінці пов'язаної моделі обладнання. Щодо підтримки моделі використовуйте дані виробника на цій сторінці та перевіряйте фактичну конфігурацію системи. Ця стаття не містить бенчмарків, сертифікації чи дат незалежного огляду.

Джерела та верифікація

Власник авторських прав: Feex. Дата незалежної перевірки не зафіксована. Як ми проводимо дослідження.

Чи була ця стаття корисною?

Достатньо відповісти "так" або "ні". За бажанням виберіть причину або додайте коротку примітку.

Чи була ця стаття корисною?