Описание тега sse2
См. Вики- страницу по тегам x86 для получения руководств и других ресурсов по программированию и оптимизации программ с использованием векторных расширений x86, а также вики- страницу тегов SSE для других ресурсов, связанных с SSE и SSE2.
SSE2- это одно из семейства SSE расширений набора инструкций x86.
SSE2 добавляет поддержку двойной точности с плавающей запятой и упакованных целых чисел (элементы от 8 до 64 бит) в регистрах XMM. Это базовый уровень для x86-64, поэтому 64-битный код всегда может предполагать поддержку SSE2 без необходимости проверки. 32-битный код все еще может быть запущен на процессоре до 2003 года (Athlon XP или Pentium III), который не поддерживает SSE2, но это маловероятно для большинства недавно написанного кода. (И поэтому резервный вариант MMX или оригинального SSE писать не стоит.)
Большинство задач, которые вообще выигрывают от векторов, могут быть выполнены достаточно эффективно, используя только инструкции до SSE2. Это к счастью, поскольку для широкой поддержки более поздних версий SSE потребовалось время. Использование более поздних расширений SSE обычно сохраняет пару инструкций здесь и там, обычно с незначительным ускорением. Примечательно, что отсутствовал, пока SSSE3 не былPSHUFB
, перемешивание, работа которого контролируется элементами в регистре, а не константой времени компиляции imm8
. Он может делать то, что SSE2 не может делать эффективно.
AVX предоставляет версии всех инструкций SSE2 с тремя операндами.
История
Intel представила SSE2 со своим Pentium 4 в 2001 году.
SSE2 был принят AMD для своей линейки 64-битных процессоров в 2003/2004 году. По состоянию на 2009 год осталось мало процессоров x86 (по крайней мере, в значительном количестве), которые не поддерживают набор инструкций SSE2, что делает его чрезвычайно привлекательным на платформе ПК с Windows, предлагая большой набор функций, который практически можно считать приемлемым. "минимальное требование", которое будет вездесущим (которое, однако, хотя бы в 32-битном режиме, не устраняет необходимости проверять характеристики процессора).
В более поздних наборах команд используется меньше функций, которые часто являются узкоспециализированными, и в то же время поддерживаются непоследовательно между производителями значительно меньшей долей процессоров (10-50% в 2009 г.).
SSE2 не предлагает инструкций для горизонтального сложения, которые необходимы для некоторых геометрических вычислений (например, скалярное произведение) и сложной арифметики. Эту функциональность необходимо эмулировать с помощью одного или нескольких перемешиваний, которые, однако, часто не намного медленнее, чем специальные инструкции в более высоких версиях.