что такое sse2 в процессоре
Что такое sse2 в процессоре
Особенности
Ссылки
Наборы расширения базовых инструкций процессоров семейства x86 |
---|
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES |
Полезное
Смотреть что такое «SSE2» в других словарях:
SSE2 — SSE2, Streaming SIMD Extensions 2, is one of the IA 32 SIMD (Single Instruction, Multiple Data) instruction sets. SSE2 was first introduced by Intel with the initial version of the Pentium 4 in 2001. It extends the earlier SSE instruction set,… … Wikipedia
SSE2 — (Streaming SIMD Extensions 2) ist eine x86 Befehlssatzerweiterung, die Intel mit dem Pentium 4 einführte. Die mit SSE eingeführten 128 Bit Register können in SSE2 auch mit MMX Operationen verwendet werden. SSE2 ermöglicht die Verarbeitung von… … Deutsch Wikipedia
SSE2 — Saltar a navegación, búsqueda SSE2 es el acrónimo de Streaming Single Instruction Multiple Data Extensions 2 es uno de los conjuntos de instrucciones de la arquitectura IA 32 SIMD. Fue utilizada por primera vez en la primera versión del Pentium 4 … Wikipedia Español
SSE2 — Streaming SIMD Extension 2 Streaming SIMD Extension 2, géné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 Register können in 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 Register können in SSE2 auch mit MMX Operationen verwendet werden. SSE2 ermöglicht die… … Deutsch Wikipedia
Streaming SIMD Extensions 2 — SSE2 (англ. Streaming SIMD Extensions 2, потоковое SIMD расширение процессора) это Pentium 4. SSE2 использует восемь 128 битных регистров (xmm0 до xmm7), включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2… … Википедия
Comparison of AMD processors — This list is incomplete; you can help by expanding it. Colors of the 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 microprocessors — This list is incomplete; you can help by expanding it. The Athlon 64 microprocessor from AMD is an eighth generation CPU targeted at the consumer market. Contents 1 Single core desktop processors 1.1 Athlon 64 … Wikipedia
Процессоры с поддержкой инструкций SSE2
Любой компьютер — это очень сложное устройство, которое состоит из десятков модулей. Сегодня мы разберём, какие процессоры работают и поддерживают инструкцию SSE2. А также что они собой представляют.
Что такое SSE2?
SSE2 являются SIMD — эта аббревиатура с английского языка переводится, как единая инструкция и множество данных. SIMD — это своего рода поток команд, который реализует параллелизм при работе с данными. Без них компьютеры нового поколения не смогли бы выполнять одновременно сотни процессов.
Без них компьютер лишается следующих возможностей:
SIMD представляет собой процессор, который часто называют контроллером. Практически во всех случаях он является главным и содержит дополнительные модули, в которых происходит обработка данных или числовые вычисления. Сам процессор ничего не вычисляет, он лишь даёт указания своим подопечным, чем им необходимо заниматься в данный момент. То есть играет роль аналитика и управляющего.
В свою очередь каждый управляемый модуль имеет собственную память. Когда основной процессор получает команду к вычислению, он переправляет её всем вычислительным элементам. После чего каждый свободный элемент принимается за работу. Подобную архитектуру используют в создании компьютерных процессоров не только Intel, но и AMD.
Какие процессоры поддерживают технологию SSE
Поддержка SSE2: | Пояснение: |
---|---|
Осуществляется в разных процессорах 32 и 64 бит. | Инструкции есть в линейках AMD K8 — серии AMD Ryzen, Ruion 64, Athlon 64, FX, Phenom, Sempron. |
Практически во всех Intel | Core i3, Core i5, Corei7, Duo-Core, а также процессоры, которые поддерживают технологию NetBurst (Celeron D, Xeon, Pentium 4, Celeron). |
В более бюджетных моделях. | Intel Atom, Pentium M и процессора Celeron M. |
Вполне возможно, что вскоре будут разработаны новые инструкции, которые придут на смену старым. В этом случае SSE2 исчезнет из списка так же, как и её предшественник.
Устройства, которые не имеют инструкций SSE2
Проверка наличия SSE2 в процессоре на ПК
После установки запустите утилиту и выберите вкладку « CPU » в том случае, если программа по умолчанию открыла другую.
Выберите вкладку CPU
Если вы покупаете процессор в магазине или в интернете, то эту информацию можно узнать у консультанта. Все процессоры, которые имеют поддержку инструкций (в том числе, SSE2), в интернет-магазине можно найти на странице с подробной информацией.
Например, на страницах популярного AliExpress достаточно выбрать модель процессора из списка, и найти эту информацию не составит труда.
Расширенные инструкции процессора: Разбираемся с SIMD (MMX,SSEx,3DNow!)
Перед тем, как процессор сгорит, в его памяти проносятся
все операции, которые он совершал в своей жизни (c)
Как известно одним из основных требований к компьютеру вообще и к процессору в частности является высокая производительность независимо от решаемой задачи. При обработке относительно больших объемов информации, показателем производительности процессора является количество информации, которую он может обработать за некоторый промежуток времени. При этом требуется минимизировать суммарное время, потраченное на обработку всего объема данных.
все операции, которые он совершал в своей жизни (c)
Как известно одним из основных требований к компьютеру вообще и к процессору в частности является высокая производительность независимо от решаемой задачи. При обработке относительно больших объемов информации, показателем производительности процессора является количество информации, которую он может обработать за некоторый промежуток времени. При этом требуется минимизировать суммарное время, потраченное на обработку всего объема данных.
За один такт процессор выполняет несколько инструкций над некоторым количеством исходных данных. Число тактов в единицу времени прямо пропорционально тактовой частоте, на которой работает процессор. Отсюда видно, что уменьшить время, требуемое на решение задачи можно несколькими способами: увеличив тактовую частоту, увеличив число исполняемых за такт команд или увеличить количество данных обрабатываемых каждой командой. Для реализации последнего способа необходимо чтобы единицы данных располагались последовательно и имели один и тот же тип (соответственно одинаковый размер). Именно это и наблюдается в мультимедиа контенте.
Мультимедийный файл представляет собой массив однородных элементов. Этому массиву предшествует некоторая описательная информация (заголовок), в котором содержится общая информация о файле. Так как в подобных массивах размер обычно одинаков, то их удобно обрабатывать группами, что ускоряет процесс решения задачи и уменьшает затраченное на него время. Аналогично и в области 3D-графики, где требуется рассчитать координаты вершин огромного количества полигонов, что также можно подвергнуть групповым вычислениям.
Для организации групповой обработки данных в процессорах используется SIMD расширения к х86 инструкциям. Аббревиатура SIMD расшифровывается как Single Instruction Multiple Data (одна инструкция – множество данных). Под SIMD расширением понимается программно-аппартное решение, представляющее собой совокупность дополнительных регистров и наборов инструкций процессора, предназначенных для групповой обработки данных. Также необходимо наличие соответствующих компиляторов, ”знающих” SIMD инструкции и способных оптимизировать под них код.
Поскольку каждый производитель процессоров по-своему улучшал архитекутуру, развитие микропроцессоров сопровождалось появлением нескольких вариантов SIMD расширений. Основные из них мы рассмотрим ниже.
MMX-расширение появилось в Pentium MMX (P55, январь 1997) и включало в себя 57 новых команд, предназначенных для обработки звуковых и видеосигналов. Позднее их поддержка появилась в K6 (Little Foot) от AMD и в 6х86MX от Cyrix.
MMX-расширение микропроцессора Pentium предназначено для поддержки приложений, ориентированных на работу с большими массивами данных целого типа, над которыми выполняются одинаковые операции. С данными такого типа обычно работают мультимедийные, графические, коммуникационные программы. По этой причине данное расширение архитектуры микропроцессоров Intel и названо MultiMedia eXtensions (MMX), что переводится как мультимедиа расширения.
Основа программной компоненты – система команд MMX-расширения (те самые 57 новых команд) и четыре новых типа данных. MMX-команды являются естественным дополнением основной системы команд микропроцессора. Основным принципом их работы является одновременная обработка нескольких единиц однотипных данных одной командой. Основа аппаратной компоненты – 8 MMX регистров, каждый размером в 64 бит = 8 байт. MMX работает только с целыми числами; поддерживаются данные размером в 1, 2, 4 или 8 байт. То есть, один MMX регистр может содержать 8, 4, 2 или 1 операнд соответственно.
Данные, содержащиеся в MMX-регистрах, можно покомпонентно складывать, умножать, вычитать, выполнять разнообразные специфические, необходимые для мультимедиа приложений, операции, вроде сложения без переполнения, вычисления среднего арифметического и производить логические операции с битами (побитовый and, or, xor). Делить, правда, нельзя, есть ещё ограничения. Но многие операции можно делать на порядок быстрее, даже больше. Однако, применение MMX в особенности требует специальной ручной оптимизации, никакой компилятор тут существенно не поможет. Под MMX, например, оптимизируются разнообразные кодеки аудио файлов, алгоритмы работы которых хорошо сочетаются с MMX. Причём, не вся программа целиком, а небольшая часть, выполняющая основную работу, и это обстоятельство упрощает оптимизацию.
Данное расширение появилось в Pentium III (ядро Katmai, сентябрь 1999) и насчитывало 70 новых команд. Позднее в Athlon XP (начиная с Palomino) его стали поддерживать и процессоры AMD. Аббревиатура SSE расшифровывается как Streaming SIMD Extensions (потоковые SIMD расширения).
SSE интересно прежде всего тем, что оперирует с данными вещественного типа, которые используются в геометрических расчётах, то есть, приложениях трёхмерной графики, компьютерных играх, редакторах вроде 3DStudioMax, и многих других. С тех пор как в компьютерных играх вроде Quake текстурирование треугольников стало производиться при помощи видеоускорителей, большая надобность в целочисленных вычислениях отпала. На первое место вышла скорость операций с плавающей точкой, вроде перемножения вещественного вектора на вещественную матрицу.
При внедрении SSE процессор получил в дополнение к стандартным регистрам архитектуры x87 8 новых больших регистров размером по 128 бит, в каждом из которых содержится 4 32-битных вещественных числа. С четвёрками операндов можно покомпонентно производить следующие операции: сложить две четвёрки чисел, вычесть, перемножить, разделить. Вычислить одновременно 4 (обратных) квадратных корня, точно или приближённо. Ещё можно тасовать содержимое регистров, перекладывать данные из одних частей регистра в другие и производить некоторые другие аналогичные операции. Однако перемещение данных происходит не быстрее их сложения, так что эффективное использование SSE возможно только на подготовленных правильно упакованных данных.
Если посчитать, что SSE-операция заменяет 4 аналогичных обыкновенных, то при оптимизации можно получить прирост производительности в 4 раза. Если быть более точным, то даже несколько больше, за счёт использования новых больших регистров. Однако, далеко не все вычисления можно эффективно оптимизировать под SSE. Как пример «хорошей» задачи следует привести умножение четырёхмерной матрицы на четырёхмерный вектор. Ускорение четырёхкратное без особых затрат.
В первую очередь использование SSE позволяет современным процессорам при выполнении трансформации вершин треугольников, составляющих трёхмерную сцену, успешно соревноваться с видеоускорителями. Другое дело, что у процессора много других задач, и лучше его по возможности разгрузить, чтобы он работал параллельно с видеоускорителем, и каждый выполнял свою задачу.
SSE2
Следующее расширение, являющееся логическим продолжением MMX и SSE появилось в Pentium 4 (начиная с Willamette). В Athlon 64 появилось начиная с Clawhammer.
В данное расширение включены 144 команды SSE2, ориентированные, в первую очередь, на работу с потоковыми данными. Подобно Pentium III, они также оперируют со 128-битными регистрами, но уже не только с четверками чисел одинарной точности, но и с любыми другими типами данных, которые умещаются в 128 бит. Это пары вещественных чисел двойной точности, шестнадцать однобайтовых целых, восьмерки двухбайтовых целых, пары восьмибайтовых целых etc. В результате получился некий симбиоз MMX и SSE.
Теперь те же 8 больших 128-битных регистров уже можно интерпретировать как содержащие не четыре 32-битных вещественных числа, а два 64-битных вещественных числа повышенной точности. Числа с повышенной точностью используются в тех случаях, когда вычисления с обычной точностью приводят к большим погрешностям. Все операции перенеслись с SSE, только работают не с четвёркой пар операндов, а с двойкой пар операндов.
В SSE2 регистры по сравнению с MMX удвоились, то есть, там стало помещаться не, например, 8 чисел, а 16. Поскольку скорость выполнения инструкций не изменилась, при оптимизации под SSE2 программа запросто получала двукратный прирост производительности. Надо отметить ещё следующее обстоятельство. Если программа уже была оптимизирована под MMX, то оптимизация под SSE2 даётся сравнительно легко в силу сходности системы команд.
Следующий набор появился в Pentium 4 начиная с Prescott и Athlon 64 начиная с Venice. Это расширение, имевшее поначалу имело рабочее название Prescott New Instruction, но получившее в итоге не совсем верное с технической точки зрения название SSE3, призвано облегчить оптимизацию программ под SSE и SSE2. Причём, в первую очередь, сделать более легкой полностью автоматическую оптимизацию программ средствами компилятора. То есть, для оптимизации необходимо будет просто перекомпилировать программу.
Некорректность названия SSE3 объясняется тем, что в отличие от других SIMD инструкций, где операции (например сложение) выполняются вертикально, здесь появилась возможность горизонтального выполнения операций.
Данный набор появился в новейших процессорах Intel Core 2. Конкретная информация по этим инструкциям пока отсутствует.
Кстати стоит отметить, что в новых интеловских процессорах появилась технология Intel Advanced Digital Media Boost, суть которой в ускорении выполнения SIMD инструкций. Если раньше каждая инструкция выполнялась за два такта (один такт для обработки старших 64 бит, а второй такт для младших), то теперь выполнение этой инструкции занимает один такт. Налицо двукратное ускорение, что должно сказываться на работе программ, оптимизированных под этот набор инструкций.
*Обновлено: информация о наборе инструкций SSE4 оказалась преждевременной, на самом деле SSE4 появится в процессорах поколения Penryn, которые предположительно должны появиться в четвертом квартале 2007 года.
Различают три поколения этого расширения инструкций: 3DNow!, Enhanced 3DNow! и 3DNow! Professional, однако очень часто их все называют просто 3DNow!
Набор инструкций 3DNow! появился в AMD K6-2 (Chomper). Данный набор, состоящий из 21 команды, был оптимизирован для еще более узкой области, нежели «универсально-мультимедийный» Intel MMX, а именно: для наиболее ресурсоемких расчетов, связанных с 3D-графикой. Даже в самом названии этого набора (3DNow!) отразилась область его применения. Это расширение во многом сходно с SSE, но так же имеет и значительные отличия. Регистров так же 8, но они размером не 128 бит, а 64. Соответственно, в них помещается не 4 числа, а только 2. Имеется аналогичный SSE набор арифметических операций с регистрами. Сложить-умножить-разделить две пары операндов и т.п. Есть и операции нахождения (обратного) квадратного корня, точные и более быстрые приближённые. Однако, есть ещё одно важное отличие расширения 3DNow! Можно складывать между собой содержимое одного регистра. То есть, так же как и в SSE3, производить не только вертикальные операции, но и горизонтальные.
В дальнейшем изменения блока 3DNow! произошли в К7. Он, как и раньше, работал с 64-битными регистрами, в которых находились пары вещественных чисел одинарной точности, зато его набор команд расширился еще на 24 инструкции (Enhanced 3DNow!). Последнее расширение этого набора до 3DNow! Professional появилось в ядре Thoroughbred.
На развитие набора 3DNow! негативно повлияло то, что у AMD первое время отсутствовал оптимизирующий компилятор, к тому же разработчики программ не торопились оптимизировать свои программы под эти инструкции.
Оценка прироста производительности.
После продолжительного поиска необходимые бенчмарки были найдены. Все они имеют возможность включать/отключать оптимизацию под определнные виды инструкций. Итак, тесты условно были поделены на четыре группы:
Материнская плата: Gigabyte GA-8I945P-G, BIOS v.F10
Процессор: Intel Pentium 4 630@3.600 MHz
Система охлаждения: TT Big Typhoon
Оперативная память: 512 Mb DDR2–667@638 Samsung Original (5-5-4-14), 512 Mb DDR2–667@638 Hynix (5-5-4-14)
Видеокарта: PCI-E Palit GeForce 6600GT@585/551 MHz
Дисковая подсистема: 160Gb SATA-II SAMSUNG HD160JJ, 40Gb Ultra-ATA/100 Seagate Barracuda ST340014A
Software: Windows XP SP2, ForceWare 91.28
Тест CPU RightMark достаточно редко встречается в обзорах, и я не удивлюсь если о нем слышали немногие (я сам только недавно его ”выловил”). Тест моделирует поведение притягивающихся и отталкивающих шаров в пространстве. Сам он представляет собой, по сути, два теста, объединенных в один. Модуль решателя (solver) рассчитывает физику взаимодействия тел, а модуль рендеринга (render) отображает это взаимодействие на экране. Нагрузку можно изменять и на модуль решателя (увеличивая количество рассчитываемых объектов), и на модуль рендеринга (изменяя количество источников света и качество текстур). В обоих модулях можно настраивать то, какие инструкции будут использованы при решении задачи. Тест больше оптимизирован под SSE/SSE3, поскольку требуется рассчитывать координаты объектов и силы их взаимодействия.
Как и ожидалось прирост от использования SIMD-инструкций в играх мал, и он тем меньше, чем лучше настройки графики.
Напоследок хочу привести таблицу десктопных ядер от Intel и AMD с указанием поддерживаемых наборов инструкций.
СОДЕРЖАНИЕ
Функции
Большинство инструкций SSE2 реализуют операции с целочисленными векторами, также присутствующие в MMX. Вместо регистров MMX они используют регистры XMM, которые шире и позволяют значительно улучшить производительность в специализированных приложениях. Другим преимуществом замены MMX на SSE2 является избежание штрафа за переключение режима для выдачи инструкций x87, присутствующих в MMX, поскольку он разделяет пространство регистров с x87 FPU. SSE2 также дополняет векторные операции с плавающей запятой набора инструкций SSE, добавляя поддержку типа данных двойной точности.
Другие расширения SSE2 включают в себя набор инструкций управления кешем, предназначенных в первую очередь для минимизации загрязнения кеша при обработке бесконечных потоков информации, и сложное дополнение инструкций преобразования числового формата.
Реализация SSE2 от AMD на платформе AMD64 ( x86-64 ) включает дополнительные восемь регистров, увеличивая их общее количество до 16 (от XMM0 до XMM15). Эти дополнительные регистры видны только при работе в 64-битном режиме. Intel приняла эти дополнительные регистры как часть своей поддержки архитектуры x86-64 (или, говоря языком Intel, «Intel 64») в 2004 году.
Различия между x87 FPU и SSE2
Инструкции FPU (x87) обеспечивают более высокую точность, вычисляя промежуточные результаты с точностью 80 бит по умолчанию, чтобы минимизировать ошибку округления в численно нестабильных алгоритмах (см. Обоснование конструкции IEEE 754 и ссылки в нем). Однако FPU x87 является только скалярным блоком, тогда как SSE2 может обрабатывать небольшой вектор операндов параллельно.
Если коды, разработанные для x87, перенесены в SSE2 с плавающей запятой двойной точности с более низкой точностью, определенные комбинации математических операций или входных наборов данных могут привести к измеримому числовому отклонению, которое может быть проблемой в воспроизводимых научных вычислениях, например, если результаты вычислений должны сравниваться по сравнению с результатами, полученными на другой архитектуре машины. Связанная с этим проблема заключается в том, что исторически языковые стандарты и компиляторы несовместимы при обработке 80-разрядных регистров x87, реализующих переменные двойной расширенной точности, по сравнению с форматами двойной и одинарной точности, реализованными в SSE2: округление промежуточных значений расширенной точности переменные с двойной точностью не были полностью определены и зависели от деталей реализации, например, когда регистры были перенесены в память.
Различия между MMX и SSE2
SSE2 расширяет инструкции MMX для работы с регистрами XMM. Следовательно, можно преобразовать весь существующий код MMX в эквивалент SSE2. Поскольку регистр SSE2 в два раза длиннее регистра MMX, может потребоваться изменить счетчики циклов и доступ к памяти, чтобы учесть это. Однако доступны 8-байтовые загрузки и сохранения в XMM, поэтому это не обязательно.
Хотя одна инструкция SSE2 может обрабатывать вдвое больше данных, чем инструкция MMX, производительность может незначительно повыситься. Две основные причины: доступ к данным SSE2 в памяти, не выровненной по 16-байтовой границе, может привести к значительным потерям, а пропускная способность инструкций SSE2 в более старых реализациях x86 была вдвое меньше, чем для инструкций MMX. Intel решила первую проблему, добавив инструкцию в SSE3, чтобы уменьшить накладные расходы на доступ к невыровненным данным и улучшить общую производительность несовпадающих нагрузок, и последнюю проблему, расширив механизм выполнения в своей микроархитектуре Core в Core 2 Duo и более поздних продуктах.
Поскольку файлы регистров MMX и x87 являются псевдонимами друг друга, использование MMX не позволит инструкциям x87 работать должным образом. После использования MMX программист должен использовать инструкцию emms (C: _mm_empty ()) для восстановления работы в регистровом файле x87. В некоторых операционных системах x87 используется не очень часто, но все же может использоваться в некоторых критических областях, таких как pow (), где требуется дополнительная точность. В таких случаях поврежденное состояние с плавающей запятой, вызванное отказом в выдаче emms, может остаться незамеченным для миллионов инструкций, прежде чем в конечном итоге приведет к сбою процедуры с плавающей запятой, возвращающей NaN. Поскольку проблема не проявляется локально в коде MMX, поиск и исправление ошибки может занять очень много времени. Поскольку SSE2 не имеет этой проблемы, обычно обеспечивает гораздо лучшую пропускную способность и предоставляет больше регистров в 64-битном коде, его следует предпочесть почти для всех работ по векторизации.
Использование компилятора
Начиная с GCC 3, GCC может автоматически генерировать скалярный код SSE / SSE2, если цель поддерживает эти инструкции. Автоматическая векторизация для SSE / SSE2 была добавлена с GCC 4.
Начиная с Microsoft Visual C ++ 2012, опция компилятора для генерации инструкций SSE2 включена по умолчанию.
Поддержка процессора
Следующие процессоры IA-32 поддерживают SSE2:
Следующие процессоры IA-32 были выпущены после разработки SSE2, но не реализовали его: