Руководства, Инструкции, Бланки

Что Такое Sse2 Инструкции img-1

Что Такое Sse2 Инструкции

Категория: Инструкции

Описание

Что такое sse2 инструкции

SSE2 (англ.   Streaming SIMD Extensions 2. потоковое SIMD-расширение процессора) — это SIMD (англ. Single Instruction, Multiple Data, Одна инструкция — множество данных) набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium 4. 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 включает в себя сложные дополнения к командам преобразования чисел.
Процессоры Поддерживают Не поддерживают

Поскольку SSE2 — расширение IA-32. процессоры, не поддерживающие IA-32, не поддерживают SSE2. Все известные процессоры x86-64 также поддерживают SSE2. [2] [3]

Кроме того, не поддерживают IA-32-совместимые процессоры, появившиеся до SSE2:

Другие статьи

Практическое применение SSE расширения

Практическое применение SSE расширения.

Этой статьей я как обычно попытаюсь угодить обоим категориям читателей: начинающим, дав общее понимание SIMD принципов, лежащих в основе таких расширений как MMX, SSE, SSE2, 3DNOW! и Enhanced 3DNOW!,более опытным - поделившись некоторыми на мой взгляд интересными фактами и примерами с которыми я столкнулся в процессе работы над темой. Однако основной упор будет сделан именно на SSE расширение и его практическом применении. Как всегда, вполне допустимо пропускать те абзацы, которые содержат информацию, в которой читатель достаточно хорошо ориентируется. Статья содержит большое количество материала, поэтому рекомендуется разбирать ее постепенно, разбивая на отдельные шаги.

Не стоит рассматривать статью как достаточно обширный и всеобъемлющий материал - это только толчок к дальнейшему исследованию и применению темы, развиваемой в статье.

В статье могут встречаться недочеты и ошибки, от которых никто не застрахован. Но думаю, что вместе, мы сможем решить все возникшие недоразумения и найти правильное решение проблемы.

Знания и инструментарий

Статья предполагает, что у читателя есть знания базовых принципов программирования на языке ассемблера и Си. В остальном, я полагаю, что после внимательного изучения данной статьи и примера, читатель будет в состоянии самостоятельно писать процедуры, используя SSE расширение. Тем не менее, поскольку статья представляет из себя лишь вводный экскурс, для более полного понимания проблемы, желательно изучение документации и справочников (как минимум презентаций и CBT (computer based training)) которые можно получить с сайта Intel (http://developer.intel.com ).

В качестве компилятора для примера был использован MS VC 6. Тем не менее, пример нормально компилируется в VC 7 (.Net). Да, именно – Си. Самое время удивиться, а лучше продолжим чтение статьи. В случае 6 версии на VC должны быть установлены SP 4 или 5 а также соответствующий для этого сервис пака процессор пак (Processor pack). Все это может быть получено с сайта Microsot (http://www.microsoft.com ). Так как в примере использованы специфичные для Microsoft директивы, другие компиляторы без корректировки исходного кода примера использовать скорее всего не удастся. Компиляция примера выполнялась с использованием одного единственного ключа /O2 - оптимизация по скорости исполнения. Кстати, именно с ключем /O2 в MS VC 6+SP 5 связана одна из ошибок компилятора, обнаруженная в процессе создания примера.

Для отладки приложения использовался встроенный в Visual Studio отладчик. Конечно же, ему далеко по функциональности до небезызвестного Soft Ice от NuMega, тем не менее, это достаточно качественная программа, кроме того, интегрированная в Visual Studio. В качестве неплохого бесплатного отладчика/дизассемблера могу порекомендовать OllyDbg (http://home.t-online.de/home/Ollydbg ), который так же позволяет отлаживать приложения, использующие SSE расширение (позволяет просматривать содержимое XMM регистров и дизассемблирует инструкции SSE). На момент начала написания статьи на сайте была доступна версия 1.08b.

SIMD расширения - что это?

SIMD (single instruction multiple data) - общий принцип лежащий в основе всех перечисленных до этого расширений - одной инструкцией выполняется действие сразу над некоторой группой однотипных операндов. Тем самым главные предметы изучения расширения - его архитектура, а именно представление данных и дополнительные наборы команд.
[tr=code]На заметку:

Все информация и определения справедливы для архитектуры IA-32 и совместимых с ней процессоров - то есть, грубо говоря, для "32-битных" процессоров Intel, AMD и некоторых других о которых уже никто наверное и не помнит.

Начиная с процессоров Pentium Pro (MMX) поддерживается MMX расширение от Intel. Включает в себя 8 (MM0-MM7) 64-битных регистров (Ты не знаешь что такое регистры? Ниже мы поговорим об этом освежив твою память, однако это ещё один знак того, что тебе следует поднять уровень знаний в рассматриваемой области если ты хочешь до конца понять статью) и позволяет производить целочисленные операции над парами нескольких новых типов данных:

- восемь упакованных байт
- четыре упакованных слова
- два двойных слова
- учетверенное слово

Другими словами, одной инструкцией MMX расширения программист может например сложить между собой два двойных слова. Физически никаких новый регистров не было добавлено. MM0-MM7 это мантиссы (младшие 64 бита) стека 80 битных FPU (floating point unit - сопроцессор) регистров.
[tr=code]На заметку:

В целом маркетинговый успех MMX расширения обошел в несколько раз его практическое применение - достаточно вспомнить те бури страстей и рекламного ажиотажа задолго до появления процессоров с поддержкой MMX.

Расширение от AMD впервые появилось в процессорах K6-2. По сути, являясь подмножеством того же MMX расширения (использует те MMX регистры), основным его достоинством являлось то, что расширение позволяло выполнять одновременные операции над двумя парами float чисел (32 битные операнды). При этом, как утверждало AMD, без дополнительных затрат могли выполняться одновременно две операции такого рода за такт, что выводит 3DNOW! на уровень сравнимый по производительности с SSE расширением от Intel. Само по себе расширение было достаточно революционным, хотя и не смогло вывести эту модель на конкурентоспособный уровень с процессорами-аналогами от Intel, что связанно не с самим расширением конечно, а лишь с недостатками самого процессора. Того количества игр, под которые были выпущены патчи или в которых уже была поддержка 3DNOW! было явно недостаточно для того, чтобы полностью доказать пользователям и программистам его преимущества. Начиная с процессоров Athlon (да здравствует здоровая конкуренция!) процессоры AMD поддерживают Enhanced 3DNOW! - более производительный блок и новый набор инструкций для 3DNOW! расширения. 3DNOW! (и его Enhanced реинкарнация) поддерживается лишь процессорами фирмы AMD.

Виновник появления этой статьи, SSE расширение от Intel поддерживается как процессорами от Intel так и c некоторых пор некоторыми моделями от AMD. Аппаратно расширение включает в себя 8 (XMM0-XMM7) 128 битных регистров.
[tr=code]На заметку:

Архитектурно пайплайн SSE очень схож с гибким пайплайном шейдеров на современных GPU(видеокартах), не так ли?

SSE расширение позволяет одновременно выполнять операции над 4 парами float чисел. Начиная с процессоров Pentium 4 нам доступно расширение SSE2 - выполнение операций над двумя парами double (числа с плавающей точкой двойной точности - 64 бита) чисел. Кроме того, SSE2 расширяет MMX влияние, позволяя оперировать над целыми числами размерностью до 128-и бит.
[tr=code]На заметку:

Возвращаясь к игроделью - многие драйверы современных видеокарт уже имеют поддержку расширенных инструкций на своем вооружении. Зачем тогда нам его изучать? А как же наш с вами программный код?

26 августа 2003

Терминология - SSE2

SSE2 (Streaming SIMD Extensions 2 ) - потоковые SIMD-расширения. SIMD расшифровывается как «Single Instruction, Multiple Data» (единая инструкция — множественные данные). Данная технология представляет собой пакет инструкций, расширяющий первоначальный набор SSE (первая версия). Основной целью данного пакета является полное вытеснение MMX. В SSE2 имеются 144 новые команды, в дополнение к первой версии SSE, в которой было заложено лишь 70.

Создателем данной технологии является компания Intel. Впервые она была реализована в процессорах Pentium 4.

Отличительные черты
  • В SSE2 применяется восемь 128-битных регистров (xmm0 до xmm7), которые включены в архитектуру x86 с вводом расширения SSE. Каждое из них трактуется как два последовательных значения с плавающей точкой двойной точности;
  • В SSE2 включен пакет инструкций, производящих операции со скалярными и упакованными типами данных;
  • В SSE2 включены инструкции для потоковой обработки целочисленных данных в 128-битных xmm-регистрах. Это делает данное расширение более привлекательным для вычислений целочисленного характера, по сравнению с набором инструкций MMX;
  • В SSE2 заложено как продолжение SSE, так и продолжение MMX:
    • Продолжение SSE - для вещественных чисел;
    • Продолжение MMX - для целых чисел. В сравнении с MMX, SSE2 обладает удвоенными регистрами, поскольку скорость выполнения инструкций осталась неизменной. При оптимизации под SSE2, программа обеспечена двукратным приростом производительности. Кроме того, возможна довольно-таки легкая оптимизация под SSE2 оптимизированных изначально под MMX программ. Этого удалось добиться за счет сходства системы команд.
  • В SSE2 включен ряд команд управления кэшем. Они предназначаются для минимизации загрязнения кэша, в случае обработки неопределенных потоков данных;
  • В SSE2 включены также и дополнения к командам преобразования чисел.

ООО "Альтербит", 197183, Санкт-Петербург, Комендантский проспект, 2 схема проезда
Телефон: (812) 309-2602 ← Звони если хочешь купить сервер, схд, компьютер

Команды SSE ( начиная с Pentium III )

Команды SSE ( начиная с Pentium III )

Команды SSE делятся на 4 категории:

  • SIMD-команды для данных одинарной точности с плавающей запятой (SPFP-команды);
  • Дополнительные SIMD-команды для целочисленных данных;
  • Команды управления кэшированием;
  • Команды сохранения и восстановления компонент состояния процессора.

Одна SIMD-команда с плавающей запятой может обрабатывать одновременно четыре 32-разрядных числа одинарной точности с плавающей запятой (называемых SPFP-элементами данных).

SIMD-команды для работы с SPFP-данными используют восемь новых 128-разрядных регистров - XMM-регистров. Команды обращаются к XMM-регистрам по именам: XMM0, XMM1. XMM7.

Каждое 32-разрядное число с плавающей запятой имеет 1 знаковый бит, 8 битов порядка и 23 бита мантиссы, что соответствует стандарту IEEE-754 на формат представления чисел одинарной точности с плавающей запятой.

SIMD-команды поддерживают два типа операций над упакованными данными с плавающей запятой - параллельные и скалярные.

Параллельные операции, как правило, действуют одновременно на все четыре 32-разрядных элемента данных в каждом из 128-разрядных операндов. В именах команд, выполняющих параллельные операции, присутствует суффикс PS.

Скалярные операции действуют на младшие (занимающие разряды 0-31) элементы данных двух операндов. Остальные три элемента данных в выходном операнде не изменяются (исключение составляет команда скалярного копирования MOVSS). В имени команд, выполняющих скалярные операции, присутствует суффикс SS.

SSE-команды имеют следующий синтаксис: instruction [dest, src]

Здесь instruction - имя команды, dest обозначает выходной операнд, src - входной операнд.

Доступны следующие SSE-команды (обозначения: xmm - XMM-регистр; mm - MMX-регистр; m - память; imm - 8-битный непосредственный операнд; ir32 - целочисленный регистр):

команда попарно складывает упакованные элементы данных и записывает суммы в соответствующие элементы XMM-регистра.

команда вычитает элементы входного операнда из элементов первого регистра и записывает полученные разности в соответствующие элементы первого регистра.

команда попарно перемножает упакованные элементы. Произведения записываются в соответствующие элементы XMM-регистра.

команда делит элементы первого операнда на соответствующие элементы входного операнда. Результаты деления записываются в XMM-регистр на место делимых.

команда складывает младшие элементы данных и записывает результат в младший элемент XMM-регистра. Остальные элементы выходного операнда не меняются.

команда вычитает младший элемент входного операнда из соответствующего элемента выходного операнда и записывает разность в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

команда перемножает младшие элементы данных и записывает результат в младший элемент XMM-регистра. Остальные элементы выходного операнда не меняются.

команда делит младший элемент выходного операнда на соответствующий элемент входного операнда и записывает результат в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

SQRTPS xmm, xmm/m

команда вычисляет квадратный корень для каждого из четырех чисел во входном операнде и записывает результаты в выходной операнд.

SQRTSS xmm, xmm/m

команда вычисляет квадратный корень из младшего элемента входного операнда и записывает результат в младший элемент в выходной операнд. Остальные элементы выходного операнда не меняются.

команда определяет приближенное обратное значение для каждого из четырех чисел входного операнда и записывает результаты в XMM-регистр.

RSQRTPS xmm, xmm/m

команда вычисляет приближенное обратное значение для квадратного корня из каждого из четырех чисел входного операнда и записывает результаты в XMM-регистр.

команда определяет приближенное обратное значение для числа, находящегося в младшем элементе входного операнда и записывает результат в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

RSQRTSS xmm, xmm/m

команда вычисляет приближенное обратное значение для квадратного корня из числа. находящегося в младшем элементе входного операнда и записывает результат в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

команда попарно сравнивает элементы данных и записывает большее значение из каждой пары в соответствующий элемент выходного операнда.

команда попарно сравнивает элементы данных и записывает меньшие значения из каждой пары в соответствующие элементы выходного операнда.

команда сравнивает младшие элементы данных и записывает большее из значений в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

команда сравнивает младшие элементы данных и записывает меньшее из значений в младший элемент выходного операнда. Остальные элементы выходного операнда не меняются.

SHUFPS xmm, xmm/m, imm

команда с непосредственным операндом выбирает из первого операнда два элемента с 2-битными номерами из непосредственного операнда (непосредственный операнд делится справа налево на 4 2-битовых числа) и записывает их в младшие элементы выходного операнда. Из второго операнда выбираются два элемента со следующими 2-битными номерами и записываются в старшие элементы выходного операнда. Перестановка всех элементов происходит одновременно.

UNPCKHPS xmm, xmm/m

команда копирует третьи элементы входного и выходного операндов в соседние младшие элементы выходного операнда, а четвертые элементы входного и выходного операндов - соответственно, в старшие элементы выходного операнда. Распаковка элементов выполняется одновременно.

UNPCKLPS xmm, xmm/m

команда копирует первые элементы входного и выходного операндов в соседние младшие элементы выходного операнда, а вторые элементы входного и выходного операндов - соответственно, в старшие элементы этого операнда. Распаковка элементов выполняется одновременно.

Оставить комментарий Комментарии

No SSE2 - Файлы - патч, демо, demo, моды, дополнение, русификатор, скачать бесплатно

Описание и инструкции

Неплохой сюрприз для пользователей с давно устаревшей конфигурацией компьютеров, для тех, кто тяжело вздыхает при выходе очередной игры и не имеет возможности ее запустить!
Вашему вниманию предлагается, так называемое "лекарство" для процессоров, не поддерживающих SSE2-инструкции (например Sempron 2600+ и т.п.). В архиве три dll-библиотеки, которые помогают запустить некоторые игры, в частности использующие движок Unreal Engine 3. Из проверенных мною лично, в данный список входят такие игры:

Borderlands
Saw: The Video Game
Alien Breed: Impact (2010)

Подобных игр вполне может быть больше. Дело экспериментов ;)

1) Данное "лекарство" запускает игры, имеющие в корневом каталоге папку Binaries и библиотеки на основе nvtt.dll (характерно для большинства игр на движке Unreal Engine 3).
2) Устанавливаются обычным копированием в папку Binaries с заменой файлов.
Пример. \Games\Borderlands\Binaries

А че оно графику упрощает чтоли?

Огромное спасибо, хотя качал не отсюда :)

Вы уверены что хотите удалить этот комментарий?

  • Мы в социальных сетях
Обратная связь

Copyright © 2001-2016 Все права защищены законодательством РФ. Использование материалов сайта возможно только с прямой ссылкой на источник.