Sse2 или streaming simd extensions 2

Differences between x87 FPU and SSE2

FPU (x87) instructions provide higher precision by calculating intermediate results with 80 bits of precision, by default, to minimise roundoff error in numerically unstable algorithms (see and references therein). However, the x87 FPU is a scalar unit only whereas SSE2 can process a small vector of operands in parallel.

If codes designed for x87 are ported to the lower precision double precision SSE2 floating point, certain combinations of math operations or input datasets can result in measurable numerical deviation, which can be an issue in reproducible scientific computations, e.g. if the calculation results must be compared against results generated from a different machine architecture. A related issue is that, historically, language standards and compilers had been inconsistent in their handling of the x87 80-bit registers implementing double extended precision variables, compared with the double and single precision formats implemented in SSE2: the rounding of extended precision intermediate values to double precision variables was not fully defined and was dependent on implementation details such as when registers were spilled to memory.

Проверьте, поддерживает ли ваша система NX или SSE2

Чтобы проверить это, есть инструмент Windows Sysinternals Coreinfo, , утилита командной строки. Вы можете получить это отсюда. Запуск этого из командной строки предоставит необходимую информацию —

Поддерживаемая функция процессора будет иметь символ * , отображаемый рядом с именем компонента, и символ — , если он не поддерживается.

«Если PAE отображается как не поддерживаемый в выводе Coreinfo, ваша система имеет процессор, который не поддерживает PAE и не может поддерживать NX. Если PAE отображается как поддерживаемый, но NX отображается как не поддерживаемый в выводе Coreinfo:

  • Обратитесь к набору функций, опубликованному производителем ЦП, чтобы определить, поддерживается ли NX процессором в вашей системе.
  • Если процессор в вашей системе поддерживает NX, возможно, в вашей системе неправильно настроены параметры BIOS для поддержки NX.

Если в вашей системе поддерживается NX, его можно включить в настройках BIOS, если он не включен ».

Поэтому проверьте BIOS и включите функцию NX («No eXecute bit») или эквивалентную функцию XD («eXecute Disabled») в настройках BIOS. Смотрите их в настройках Advanced или Security в BIOS. Они могут называться различными именами в соответствии с BIOS manf. Их можно назвать «Не выполнять защиту памяти», «Выполнить защиту отключенной памяти», «EDB» («Выполнить отключенный бит»), «EVP» (улучшенная защита от вирусов) или другое имя. Так что проверяйте это.

Если в BIOS не отображается ни одна из этих опций для NX, проверьте в BIOS manf все обновления BIOS, которые могли бы добавить это. Очень старые процессоры могут не включать эту функцию.

Ошибка 0x0000260

Связанная ошибка также наблюдается при попытке установить Windows 8 на ВМ с ошибкой 0x0000260.

Для получения более подробной информации о требованиях к PAE/NX/SSE2 для Windows 8 корпорация Майкрософт опубликовала официальный документ — Руководство по поддержке требований к PAE/NX/SSE2 для Windows 8

В этом документе подробно описывается поддержка процессором для требования PAE/NX/SSE2 в Windows 8, случаи ошибок и сценарии, с которыми пользователи сталкиваются, когда машины не удовлетворяют требованиям, и что нужно сделать для установки Windows 8 на свои ПК. Информация, представленная в документе, относится к Windows 8 и Windows Server 2012.

Билл Филл (Microsoft Fill) из Microsoft подробно объяснил эту ошибку на форуме «Ответы». Он начинает с извинения за неудобства, вызванные этой проблемой, и благодарит пользователей за пробную версию Release Preview.Далее он говорит, что Microsoft может связаться с несколькими из тех, кто сообщил об этой проблеме, если требуется дополнительная информация, так как это может быть ошибкой, которую необходимо исправить до RTM.

Затем он описывает, что именно изменилось после CP, поскольку пользователи, которые могли запустить CP на своей машине, столкнулись с этой проблемой при установке RP на той же машине.

Временное решение

Прежде чем попробовать этот обходной путь , , проверьте и настройте NX в BIOS. Обходной путь использует ISO для установки.

Загрузите ISO-образ и запишите его на DVD-диск или создайте загрузочную флешку. Загрузитесь с носителя, который вы создали. Если ваш процессор не поддерживает NX, вы увидите код 5D синий экран перед началом установки. Это редко, но если это произойдет, мы не сможем помочь вам запустить Windows 8.

Этот обходной путь может быть успешным, поскольку Windows содержит два установщика: установщик конечного пользователя (setup.exe в корне DVD-диска Windows) и коммерческий установщик (setup.exe находится в каталоге \ sources на DVD-диске Windows). Коммерческий установщик запускается при загрузке ПК с DVD/USB-носителя и не выполняет проверки NX/SSE2 и пытается включить NX/SSE2 в поддерживаемых системах.

Эта проблема была подробно объяснена Microsoft. Если кто-то получает эту ошибку, он или она может сослаться на это и попробовать обходной путь.

SSE4.2

В SSE4.2 добавлены STTNI (новые инструкции для строк и текста), несколько новых инструкций, которые выполняют поиск и сравнение символов на двух операндах по 16 байт за раз. Они были разработаны (среди прочего) для ускорения анализа XML- документов. Он также добавил инструкцию CRC32 для вычисления циклических проверок избыточности, используемых в некоторых протоколах передачи данных. Эти инструкции были впервые реализованы в Nehalem -А Intel Core i7 продуктовой линейки и завершить набор инструкций SSE4. Поддержка указана через флаг CPUID.01H: ECX.SSE42 .

Инструкция Описание
CRC32 Накопите значение CRC32 C с использованием полинома 0x11EDC6F41 (или, без бит высокого порядка, 0x1EDC6F41).
PCMPESTRI Упакованное сравнение строк явной длины, индекс возврата
PCMPESTRM Упакованное сравнение строк явной длины, возвращаемой маски
PCMPISTRI Упакованное сравнение строк неявной длины, индекс возврата
PCMPISTRM Упакованное сравнение строк неявной длины, маска возврата
PCMPGTQ Сравните упакованные 64-битные данные для более крупных

Особенности

Процессор, поддерживающий SSE2, требуется для установки Windows 8 и Microsoft Office 2013, ОС и ряд других программ Windows..

  1. SSE2 использует восемь 128-битных регистров, включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности.
  2. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных.
  3. SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных xmm регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше.
  4. SSE2 включает в себя две части – продолжение SSE и продолжение MMX.
  5. Продолжение SSE работает с вещественными числами.
  6. Продолжение MMX работает с целыми. В SSE2 регистры по сравнению с MMX удвоились (64 бита -> 128 битов). Т.к. скорость выполнения инструкций не изменилась, при оптимизации под SSE2 программа получает двукратный прирост производительности. Если программа уже была оптимизирована под MMX, то оптимизация под SSE2 даётся сравнительно легко в силу сходности системы команд.
  7. SSE2 включает в себя ряд команд управления кэш, предназначенных для минимизации загрязнения кэша при обработке объёмных потоков данных.
  8. SSE2 включает в себя сложные дополнения к командам преобразования чисел.

Changes

The most notable change is the capability to work horizontally in a register, as opposed to the more or less strictly vertical operation of all previous SSE instructions. More specifically, instructions to add and subtract the multiple values stored within a single register have been added. These instructions can be used to speed up the implementation of a number of DSP and 3D operations. There is also a new instruction to convert floating point values to integers without having to change the global rounding mode, thus avoiding costly pipeline stalls. Finally, the extension adds LDDQU, an alternative misaligned integer vector load that has better performance on NetBurst based platforms for loads that cross cacheline boundaries.

Пример

Следующий пример демонстрирует перемножение четырёх пар чисел с плавающей точкой одной инструкцией mulps: (Программа написана на языке ANSI C++ с использованием ассемблерной вставки __asm и инструкций ассемблера для работы с SSE, аргументы записаны согласно стандарту Intel, а не AT&T)

__declspec(align(16)) float a4 = { 300.0, 4.0, 4.0, 12.0 };
__declspec(align(16)) float b4 = {   1.5, 2.5, 3.5,  4.5 };
 
__asm {
    movups xmm0, a    ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0
    movups xmm1, b    ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1
    mulps xmm0, xmm1  ; // перемножить пакеты плавающих точек: xmm0 = xmm0 * xmm1
                      ; // xmm00 = xmm10 * xmm00
                      ; // xmm01 = xmm11 * xmm01
                      ; // xmm02 = xmm12 * xmm02
                      ; // xmm03 = xmm13 * xmm03
 
    movups a, xmm0    ; // выгрузить результаты из регистра xmm0 по адресам a
};

Тот же пример, но ассемблерная вставка asm выполнена в стандарте AT&T (GNU Assembler)

float a4 = { 300.0, 4.0, 4.0, 12.0 };
float b4 = {   1.5, 2.5, 3.5,  4.5 };
 
 __asm__ volatile
 (
  "movups %, %%xmm0\n\t"	// поместить 4 переменные с плавающей точкой из a в регистр xmm0
  "movups %, %%xmm1\n\t"	// поместить 4 переменные с плавающей точкой из b в регистр xmm1
  "mulps %%xmm1, %%xmm0\n\t"	// перемножить пакеты плавающих точек: xmm0 = xmm0 * xmm1
				// xmm00 = xmm00 * xmm10
				// xmm01 = xmm01 * xmm11
				// xmm02 = xmm02 * xmm12
				// xmm03 = xmm03 * xmm13
  "movups %%xmm0, %\n\t"	// выгрузить результаты из регистра xmm0 по адресам a
  
   a"m"(*a), b"m"(*b)
   "%xmm0", "%xmm1"
 );

Intel SHA

Intel Secure Hash Algorithm extensions (SHA) – набор инструкций процессора, разработанных компанией Intel для ускорения работы приложений, используемых алгоритмы шифрования SHA. Включает 7 инструкций, 4 из которых ускоряют работу SHA-1, остальные 3 – SHA-256. Ускорение может составлять 150-200 % и более (в зависимости конкретного приложения).


Эти алгоритмы используются в системах контроля версий и электронных подписей, а также для построения кодов аутентификации. SHA-1 является более распространённым и применяется в самых разнообразных криптографических программах. Подробнее.

Advanced Configuration and Power Interface (ACPI) – стандарт, разработанный компаниями HP, Intel, Microsoft, Phoenix и Toshiba. Используется в компьютерной технике с 1996 года, постепенно дополняясь и совершенствуясь. Определяет общий подход к управлению питанием и обеспечивает взаимодействие между устройствами компьютера, его операционной системой и BIOS/UEFI в целях снижения уровня энергопотребления.

Стандарт ACPI предусматривает несколько режимов работы процессора. В зависимости от модели, они могут поддерживаться процессором в полном объеме или только какая-то их часть. Подробнее.

System Management Mode (SMM) – режим, при котором процессор приостанавливает исполнение любого кода (в том числе и операционной системы) и запускает специальную программу, хранящуюся в зарезервированной области оперативной памяти.

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

Dynamic Front Side Bus Frequency Switching (DFFS) – одна из технологий снижения энергопотребления компьютерных систем. Она позволяет операционной системе компьютера, в зависимости от нагрузки, которую он испытывает, понижать частоту системной шины FSB, что влечет за собой также и снижение частоты процессора. Подробнее.

Differences between MMX and SSE2

SSE2 extends MMX instructions to operate on XMM registers. Therefore, it is possible to convert all existing MMX code to an SSE2 equivalent. Since an SSE2 register is twice as long as an MMX register, loop counters and memory access may need to be changed to accommodate this. However, 8 byte loads and stores to XMM are available, so this is not strictly required.

Although one SSE2 instruction can operate on twice as much data as an MMX instruction, performance might not increase significantly. Two major reasons are: accessing SSE2 data in memory not aligned to a 16-byte boundary can incur significant penalty, and the throughput of SSE2 instructions in older x86 implementations was half that for MMX instructions. Intel addressed the first problem by adding an instruction in SSE3 to reduce the overhead of accessing unaligned data and improving the overall performance of misaligned loads, and the last problem by widening the execution engine in their Core microarchitecture in Core 2 Duo and later products.

Since MMX and x87 register files alias one another, using MMX will prevent x87 instructions from working as desired. Once MMX has been used, the programmer must use the emms instruction (C: _mm_empty()) to restore operation to the x87 register file. On some operating systems, x87 is not used very much, but may still be used in some critical areas like pow() where the extra precision is needed. In such cases, the corrupt floating-point state caused by failure to emit emms may go undetected for millions of instructions before ultimately causing the floating-point routine to fail, returning NaN. Since the problem is not locally apparent in the MMX code, finding and correcting the bug can be very time consuming. As SSE2 does not have this problem, usually provides much better throughput and provides more registers in 64-bit code, it should be preferred for nearly all vectorization work.

New instructions

Common instructions

Arithmetic

  • ADDSUBPD — (Add-Subtract-Packed-Double)
    • Input: { A0, A1 }, { B0, B1 }
    • Output: { A0 − B0, A1 + B1 }
  • ADDSUBPS — (Add-Subtract-Packed-Single)
    • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
    • Output: { A0 − B0, A1 + B1, A2 − B2, A3 + B3 }

AOS ( Array Of Structures )

  • HADDPD — (Horizontal-Add-Packed-Double)
    • Input: { A0, A1 }, { B0, B1 }
    • Output: { A0 + A1, B0 + B1 }
  • HADDPS (Horizontal-Add-Packed-Single)
    • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
    • Output: { A0 + A1, A2 + A3, B0 + B1, B2 + B3 }
  • HSUBPD — (Horizontal-Subtract-Packed-Double)
    • Input: { A0, A1 }, { B0, B1 }
    • Output: { A0 − A1, B0 − B1 }
  • HSUBPS — (Horizontal-Subtract-Packed-Single)
    • Input: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
    • Output: { A0 − A1, A2 − A3, B0 − B1, B2 − B3 }
  • LDDQU — As stated above, this is an alternative misaligned integer vector load. It can be helpful for video compression tasks.
  • MOVDDUP, MOVSHDUP, MOVSLDUP — These are useful for complex numbers and wave calculation like sound.
  • FISTTP — Like the older x87 FISTP instruction, but ignores the floating point control register’s rounding mode settings and uses the «chop» (truncate) mode instead. Allows omission of the expensive loading and re-loading of the control register in languages such as C where float-to-int conversion requires truncate behaviour by standard.

Intel instructions


MONITOR, MWAIT — These optimize multi-threaded applications, giving processors with Hyper-threading better performance.

Trending Stocks

Create Alert Add to Portfolio Add to/Remove from a Portfolio  

Add to Watchlist Add Position

Position added successfully to:

Create Alert New! Create Alert Website

  • As an alert notification
  • To use this feature, make sure you are signed-in to your account

Mobile App

  • To use this feature, make sure you are signed-in to your account
  • Make sure you are signed-in with the same user profile
  Name Last High Low Chg. Chg. % Vol. Time
Bodycote 577.75 593.00 572.75 +-8.75 +-1.49% 9.30K 21/08
Qinetiq 288.00 294.60 285.94 -0.80 -0.28% 384.91K 21/08
BP 271.00 278.20 272.75 -5.75 -2.08% 3.72M 21/08
Tesco 227.00 228.10 224.20 +2.00 +0.89% 440.97K 21/08
Tullow Oil 22.38 23.98 21.61 +-1.05 +-4.48% 12.95M 21/08
BAE Systems 530.00 533.00 520.60 +1.40 +0.26% 278.71K 21/08
Rolls-Royce Holdings 256.00 261.40 253.40 0.00 0.00% 1.99M 21/08
HSBC 327.00 329.20 324.70 -1.95 -0.59% 1.09M 21/08
Lloyds Banking 28.00 28.33 27.73 -0.14 -0.48% 22.01M 21/08
John Wood 217.00 222.50 212.79 -0.40 -0.18% 102.99K 21/08

Набор команд

SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть в процессорах Penryn). Полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) доступен в процессорах Intel с микроархитектурой Nehalem, которые были выпущены в середине ноября 2008 года и более поздних редакциях. Начиная с процессоров на базе Барселоны , AMD представила набор инструкций SSE4a , который содержит 4 инструкции SSE4 и 4 новых инструкции SSE. Эти инструкции не найдены в процессорах Intel, поддерживающих SSE4.1, а процессоры AMD только начали поддерживать SSE4.1 и SSE4.2 от Intel (полный набор инструкций SSE4) на процессорах FX на базе Bulldozer . С SSE4a была также введена несогласованная функция SSE, которая означала, что инструкции с невыложенной загрузкой были такими же быстрыми, как выровненные версии на выровненных адресах. Это также позволило отключить проверку выравнивания для операций SSE без нагрузки, обращающихся к памяти.Позднее Intel представила аналогичные усовершенствования скорости для неуравновешенного SSE в своих процессорах Nehalem, но не вводила неверный доступ с помощью инструкций SSE без нагрузки до AVX .

History

SSE, first introduced with the Pentium III in 1999, was Intel’s reply to AMD’s 3DNow extension in 1998.

The original-SSE added vector single-precision floating point math. Integer instructions to operate on xmm registers (instead of 64bit mmx regs) didn’t appear until SSE2.

Original-SSE can be considered somewhat half-hearted insofar as it only covered the most basic operations and suffered from severe limitations both in functionality and performance, making it mostly useful for a few select applications, such as audio or raster image processing.

Most of SSE’s limitations have been ameliorated with the SSE2 instruction set, the only notable limitation remaining to date is the lack of horizontal addition or a dot product operation in both an efficient way and widely available. While SSE3 and SSE4.1 added horizontal add and dot product instructions, they’re usually slower than manual shuffle+add. Only use them at the end of a loop.

The lack of cross-manufacturer support made software development with SSE a challenge during the initial years. With AMD’s adoption of SSE2 into its 64bit processors during 2003/2004, this problem gradually disappeared. As of today, there exist virtually no processors without SSE/SSE2 support. SSE2 is part of x86-64 baseline, with twice as many vector registers available in 64bit mode.

Streaming SIMD Extensions (SSE) basics


Together, the various SSE extensions allow working with 128b vectors of float, double, or integer (from 8b to 64b) elements. There are instructions for arithmetic, bitwise operations, shuffles, blends (conditional moves), compares, and some more-specialized operations (e.g. SAD for multimedia, carryless-multiply for crypto/finite-field math, strings (for and so on)). FP sqrt is provided, but unlike the x87 FPU, math library functions like must be implemented by software. SSE for scalar FP math has replaced x87 floating point, now that hardware support is near-universal.

Efficient use usually requires programs to store their data in contiguous chunks, so it can be loaded in chunks of 16B and used without too much shuffling. SSE doesn’t offer loads / stores with a stride, only packed. (SoA vs. AoS: structs-of-arrays vs. arrays-of-structs). Alignment requirements on memory operands can also be a hurdle, even though modern hardware has fast unaligned loads/stores.

While there are many instructions available, the instruction set is not very orthogonal. It’s not uncommon to find the operation you need, but only available for elements of a different size than you’re working with. Another good example is that floating point shuffles () have different semantics than 32b-integer shuffles ().

CPU support

SSE2 is an extension of the IA-32 architecture, based on the x86 instruction set. Therefore, only x86 processors can include SSE2. The AMD64 architecture supports the IA-32 as a compatibility mode and includes the SSE2 in its specification. It also doubles the number of XMM registers, allowing for better performance. SSE2 is also a requirement for installing Windows 8 (and later) or Microsoft Office 2013 (and later) «to enhance the reliability of third-party apps and drivers running in Windows 8».

The following IA-32 CPUs support SSE2:

  • Intel NetBurst-based CPUs (Pentium 4, Xeon, Celeron, Pentium D, Celeron D)
  • Intel Pentium M and Celeron M
  • Intel Atom
  • AMD Athlon 64
  • Transmeta Efficeon
  • VIA C7

The following IA-32 CPUs were released after SSE2 was developed, but did not implement it:

  • AMD CPUs prior to Athlon 64, such as Athlon XP
  • VIA C3
  • Transmeta Crusoe
  • Intel Quark

Turbo Boost, Turbo Core

Turbo Boost и Turbo Core – похожие по своей сути технологии, автоматически повышающие тактовую частоту процессора выше номинальной, когда в этом есть необходимость. Turbo Boost используется в процессорах Intel, Turbo Core – в процессорах AMD. В целом, они обеспечивают значительный прирост быстродействия в большинстве приложений.

Несмотря на одинаковое предназначение, Turbo Boost и Turbo Core существенно отличаются. Подробнее.


TXT (англ. Trusted eXecution Technology – технология доверенного выполнения) – разработанная компанией Intel и используемая в ее процессорах технология, обеспечивающая аппаратную защиту компьютера от вредоносных программ.

Это абсолютно новая концепция безопасности. В ее основе лежит эксклюзивное использование части ресурсов компьютера каждым конкретным приложением. Она охватывает практически все подсистемы компьютера: выделение памяти, мониторинг системных событий, связь чипсета и памяти, хранение данных, устройства ввода (клавиатура и мышь), вывод графической информации. Подробнее.

TSX (Transactional Synchronization eXtensions) – набор инструкций многоядерного процессора, разработанный компанией Intel, который повышает эффективность взаимодействия ядер между собой при осуществлении общего доступа к одним и тем же данным и, в конечном счете, увеличивает общую производительность компьютера. Подробнее.

One Step Only

Since 128-bit xmm registers may treated as vector of 16 bytes, shifting techniques such as in all eight directions can be done more efficiently with respect to wraps from a- to the h-file or vice versa. It is recommend to write a own SSE2-wrapper class with overloaded operators in C++ to encapsulate a vector of two bitboards.

  northwest    north   northeast
  noWe         nort         noEa
          +7    +8    +9
              \  |  /
  west    -1 <-  0 -> +1    east
              /  |  \
          -9    -8    -7
  soWe         sout         soEa
  southwest    south   southeast

Veritcal steps as usual with 64-byte shift a rank each:

__m128i nortOne(__m128i b) {
   b = _mm_slli_epi64 (b, 8);
   return b;
}

__m128i soutOne(__m128i b) {
   b = _mm_srli_epi64 (b, 8);
   return b;
}

Unfortunately there is no byte-wise shift in the SSE2-instruction set (as well as MMX), but using byte-wise parallel add avoids using the wrap masks, which need otherwise load from memory or computed. Applying the wraps mask takes two instructions.

__m128i butNotA(__m128i b) {
   b = _mm_srli_epi64 (b, 1);
   b = _mm_add_epi8   (b, b);
   return b;
}

__m128i butNotH(__m128i b) {
   b = _mm_add_epi8   (b, b);
   b = _mm_srli_epi64 (b, 1);
   return b;
}

This is how the east direction are computed based on parallel byte-wise add. Either one or two SSE2-instructions:

__m128i eastOne(__m128i b) {
   b = _mm_add_epi8   (b, b);
   return b;
}

__m128i noEaOne (__m128i b) {
   b = _mm_add_epi8   (b, b);
   b = _mm_slli_epi64 (b, 8);
   return b;
}

__m128i soEaOne (__m128i b) {
   b = _mm_add_epi8   (b, b);
   b = _mm_srli_epi64 (b, 8);
   return b;
}

West directions need a leading not A-file and take three instructions each:

__m128i westOne(__m128i b) {
   b = _mm_srli_epi64 (b, 1);
   b = _mm_add_epi8   (b, b);
   b = _mm_srli_epi64 (b, 1);
   return b;
}

__m128i soWeOne (__m128i b) {
   b = _mm_srli_epi64 (b, 1);
   b = _mm_add_epi8   (b, b);
   b = _mm_srli_epi64 (b, 9);
   return b;
}

__m128i noWeOne (__m128i b) {
   b = _mm_srli_epi64 (b, 1);
   b = _mm_add_epi8   (b, b);
   b = _mm_slli_epi64 (b, 7);
   return b;
}

CPUs with SSE3

  • AMD:
    • Opteron (since Stepping E4)
    • Sempron (since Palermo. Stepping E3)
    • Athlon 64 (since Venice Stepping E3 and San Diego Stepping E4)
    • Athlon 64 FX (since San Diego Stepping E4)
    • Athlon 64 X2
    • Phenom 64 X2
    • Turion family
    • K10 family
    • APU family (including without GPU)
    • FX Series
    • Zen
    • Zen+
    • Zen2
  • Intel:
    • Celeron D
    • Celeron (starting with Core microarchitecture)
    • Pentium 4 (since Prescott)
    • Pentium D
    • Pentium Extreme Edition (but NOT Pentium 4 Extreme Edition)
    • Pentium Dual-Core
    • Pentium (starting with Core microarchitecture)
    • Core
    • Xeon (since Nocona)
    • Atom
  • VIA/Centaur:
    • C7
    • Nano
  • Transmeta Efficeon TM88xx (NOT Model Numbers TM86xx)

SSE PLC Company Profile

IndustryElectric Utilities SectorUtilities Employees

11714

Equity Type

ORD

SSE PLC is an energy company. The Company is engaged in the generation, transmission, distribution and supply of electricity, in the production, storage, distribution and supply of gas and in other energy services. Its segments include Electricity Transmission, Electricity Distribution, Gas Distribution, Renewables, Thermal Generation, Gas Storage, Business Energy, Airtricity, Enterprise and Energy Portfolio Management (EPM). It owns, maintains and invests in the electricity transmission network in the north of Scotland. It holds shares in Scotia Gas Networks, which operates two regulated gas distribution networks in Scotland and the South of England. It is also engaged in the generation of power from renewable sources, such as onshore and offshore windfarms and run of river and pumped storage hydro assets in the United Kingdom and Ireland. The Company engages in the storage of gas for the purpose of benefitting from market price fluctuations.

Read More

SSE Comments

Your ability to comment is currently suspended due to negative user reports. Your status will be reviewed by our moderators. Please wait a minute before you try to comment again.

Disclaimer: Fusion Media would like to remind you that the data contained in this website is not necessarily real-time nor accurate. All CFDs (stocks, indexes, futures), cryptocurrencies, and Forex prices are not provided by exchanges but rather by market makers, and so prices may not be accurate and may differ from the actual market price, meaning prices are indicative and not appropriate for trading purposes. Therefore Fusion Media doesn’t bear any responsibility for any trading losses you might incur as a result of using this data.

Fusion Media or anyone involved with Fusion Media will not accept any liability for loss or damage as a result of reliance on the information including data, quotes, charts and buy/sell signals contained within this website. Please be fully informed regarding the risks and costs associated with trading the financial markets, it is one of the riskiest investment forms possible.

Новые инструкции SSE4.2

Обработка строк

Эти инструкции выполняют арифметические сравнения между всеми возможными парами полей (64 или 256 сравнений) из обеих строк, заданных содержимым xmm1 и xmm2/m128. Затем булевые результаты сравнений обрабатываются для получения нужных результатов. Непосредственный аргумент imm8 управляет размером (байтовые или unicode строки, до 16/8 элементов каждая), знаковостью полей (элементов строк), типом сравнения и интерпретацией результатов.

Ими можно производить в строке (области памяти) поиск символов из заданного набора или в заданных диапазонах. Можно сравнивать строки (области памяти) или производить поиск подстрок.

Все они оказывают влияние на флаги процессора: SF устанавливается если в xmm1 не полная строка, ZF — если в xmm2/m128 не полная строка, CF — если результат не нулевой, OF — если младший бит результата не нулевой. Флаги AF и PF сбрасываются.

PCMPESTRI , xmm1, xmm2/m128, , , imm8 — ()

Явное задание размера строк в <eax>, <edx> (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре ecx.

PCMPESTRM , xmm1, xmm2/m128, , , imm8 — ()

Явное задание размера строк в <eax>, <edx> (берётся абсолютная величина регистров с насыщение до 8/16, в зависимости от размера элементов строк. Результат в регистре xmm0.

PCMPISTRI , xmm1, xmm2/m128, imm8 — ()

Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре ecx.

PCMPISTRM , xmm1, xmm2/m128, imm8 — ()

Неявное задание размера строк (производится поиск нулевых элементов к каждой из строк). Результат в регистре xmm0.

Подсчет популяции единичных битов

POPCNT r, r/m* — (Return the Count of Number of Bits Set to 1)

Подсчет числа единичных битов. Три варианта инструкции: для 16, 32 и 64-битных регистров. Также присутствует в SSE4A от AMD.

Векторные примитивы

PCMPGTQ xmm1, xmm2/m128 — (Compare Packed Qword Data for Greater Than)

Проверка 64-битных полей на «больше чем» и выдача 64-битных масок.


С этим читают