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

Как Включить Sse2 Инструкции img-1

Как Включить Sse2 Инструкции

Рейтинг: 4.6/5.0 (1932 проголосовавших)

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

Описание

Помогите! Что такое SSE2 instruction set? Архив - Большой Воронежский Форум

Ребят помогите пжлста - очень надо. пытаюсь установить Adobe premiere Pro (разные версии пробовал), а комп всё время спрашивает про какой-то SSE2 instruction set. Если дословно. cannot run on this computer because the processor doesn't support the SSE2 instruction set. чего делать-то надо, помогите пжлста! Оычень сильно и очень срочно надо.

Материал из Википедии — свободной энциклопедии

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

SSE2 использует восемь 128-битных регистров (xmm0 до xmm7), включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Также SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных xmm регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше.

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

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

Эмуляция SSE2

После очередного обновления Steam, а именно 17 сентября 2013 года, разработчики небезызвестного командного шутера Counter-Strike Source отказались от инструкции SSE. На замену пришло SSE2 инструкция.
Таким образом пользователи и я в том числе, которые годами проводили иногда по вечерам свой досуг, стали заложниками такого вот поведения разработчиков. Хотя в системных требованиях к игре и словом не сказано за процессор с поддержкой SSE2. Но это уже лирика, давно нужно уже обновиться и не задумываться.

Но назрел вопрос. В свое время, когда у меня не было возможности купить хорошую видеокарточку для той или иной игры, а игра например требовала наличие shader model 3.0, я выходил из положения с помощью эмуляции этих же шейдеров с помощью программы 3d analyzer. И так и сяк, но играть можно было.

Так вот. Существует ли средство для эмуляции SSE2 инструкции? Не эмуляции всего IA-32-совместимого процессора целиком, а именно не достающей инструкции?

Разумеется, умом понимаю, что это практически не возможно. Но.

Моя системная конфигурация:

AMD Sempron 2600+
Gigabyte GA-7VA KT400 Triton
Hynix ddr-400 512mb pc-3200 - 3 модуля
GeForce 7300 GT AGP X8 256 mb
Power Master 300W

Заранее спасибо. Всячески буду благодарен, за оказанную помощь.

SSE - набор инструкций, SIMD расширение процессора

SSE( Streaming SIMD Extensions )набор инструкций и SIMD расширение процессора ( Single Instruction, Multiple Data. одна инструкция — множество данных). впервые представленные в процессорах Pentium III ( Katmai ). в ответ на выпущенные годом ранее инструкции 3 DNow! от AMD. Изначально, набор назывался KNI ( Katmai New Instructions ), но позже приобрёл своё сегодняшнее название. Технология впервые была введена в массовое производство в 1999 году, с выходом PIII ( Katmai ).

Применяются инструкции, когда нужно совершить одни и те же действия над разными данными. Благодаря SSE получается очень большой выигрыш в производительности, благодаря распараллеливанию вычислительных потоков данных (4 вычисления за такт).

В отличии от MMX и 3 DNow ! Инструкций, SSE может одновременно использовать свои инструкции вместе с инструкциями сопроцессора, так как регистры SSE и сопроцессора не являются общими. Это ещё одно неоспоримое преимущество, впрочем, как и возможность работать не с целыми числами ( MMX могла работать только с целыми).

Использование SSE возможно только если операционная система поддерживает данные инструкции.

SIMD расширение добавляет восемь(или 16. если процессор 64 -битный) 128 -битных регистров XMM ( XMM 0- XMM 7), разделённых на четыре 32 -битных (одинарной точности)регистра с плавающей точкой. Также, в составе есть 32 -битный (в x 86-6464 -битный) регистр управления и контроля, который также нужен для проверки состояния SSE инструкций.

Так как каждый регистр имеет 128 -бит, может хранить всего 4 из 32 -разрядных чисел с плавающей точкой (1бит знака, 8-бит экспоненты. 23 -х разрядная мантисса). На самом деле, за один такт могут выполняться любые данные помещающиеся в 128 бит (буквы, целые числа, байты, с двойной точностью и т.д.) и всё зависит от оптимизации программы под определённую задачу.

SSE может выполнять 70 новых инструкций. которые и работают на этих 128 битах, MMX и даже обычными 32 -битными регистрами, если SIMD простаивает без дела.

SSE 2 инструкции, появились с выходом первых Pentium 4 и значительно усовершенствовали SSE первого поколения. Включает в себя возможность использовать операции со скалярными и упакованными типами данных. Присутствуют инструкции для потоковой обработки целочисленных MMX данных в 128 -битных XMM регистрах SSE. Новый набор инструкций значительно упростил работу программистов и даже родилась поговорка – « SSE должен был родиться таким, как SSE 2 ».

Также имели название PNI (Prescott New Instructions ). Добавлены дополнительные 13 инструкций. которые расширяют математические возможности DSP и поток управления инструкциями. Больше походит на косметическое улучшение. чем на практическое, которым было предыдущее обновление.

Дополнительное обновление для SSE 3. которое включает 16 новых инструкций. Позволяет умножать 16 -ти разрядные числа с фиксированной точкой и правильным округлением, вносить слова в инструкции и переставлять байты в них.

Добавлены 54 инструкции. но с оговорками. В SSE 4.1 (появилась в Intel Penryn ) содержится урезанный набор из 47 инструкций. а в SSE 4.2 – полный, из 54 (+7. добавлены в архитектуре Nehalem ).

Инструкции работают только с 128 -битными XMM 0- XMM 15. Добавлены POPCNT и дополнительные целочисленные инструкции & etc. SSE 4 привнесла практически столько нововведений, как в своё время привнесла первая SSE. Основным направлением при разработке было расширение мультимедийных возможностей — декодирование игр, ускорение физических и векторных расчётов для игр, ускорение обработки фото, музыки & etc.

robot

Как включить SSE2 Instructions? SSE - SSE2 Instructions BIOS - Настройка BIOS

Настройка BIOS - NastrojkaBios.ru Включаем SSE2 Instructions в компьютере

Опция SSE - SSE2 Instructions - должна быть всегда включена Enabled (On). так как поддержка SSE и SSE2 – инструкций является стандартом для современных приложений, при отключении Disabled (Off) процессор будет использовать инструкции MMX – внедренные еще в 90 годы, с более чем значительным падением производительности ЦП. Отключение применялось в ранних версиях чипсетов АМД для решения некоторых программно-аппаратных проблем.

Встречается данная опция БИОС на системных платах с процессорами AMD. У Интела данные инструкции как правило включены всегда (естественно если поддерживаются архитектурой процессора).

Данная опция обычно находится на вкладке: «SSE Tweaks» далее «AMD Athlon MP» или «SSE Control» далее «SSE Enable»

SSE2 (Streaming SIMD Extensions 2) – потоковое множество SIMD данных - набор инструкций для процессора. SIMD (Single Instruction, Multiple Data) - одна инструкция - множество данных.

Intel впервые внедрил в процессорах серии Pentium 4. SSE2 расширяет набор инструкций SSE с целью полностью вытеснить MMX. Набор SSE2 добавил 144 новых команды к SSE, в котором было только 70 команд процессору.

В настоящий момент без поддержки процессором SSE2, не возможно поставить ОС и ряд программ Windows начиная с Windows 8 и Microsoft Office 2013 .

Процессоры поддерживающие SSE2:

  1. Линейка AMD K8. ( Athlon 64. Sempron 64. Turion 64. ) AMD Phenom
  2. Процессоры, основанные на Intel NetBurst ( Pentium 4. Xeon. Celeron. Celeron D. )
  3. Intel Pentium M и Celeron M
  4. Линейка Intel Core (включая Intel Core 2. Intel Core i5. Intel Core i7 )
  5. Intel Atom
  6. Transmeta Efficeon
  7. VIA C7
  8. VIA Nano
  9. Процессоры не поддерживающие SSE2:
  10. Не поддерживают IA-32-совместимые процессоры, появившиеся до SSE2:
  11. Всё AMD до Athlon 64
  12. Всё Intel до Pentium 4
  13. VIA C3
  14. Transmeta Crusoe
  1. SSE2 использует 128 битные регистровы включённых в архитектуру x86 с вводом расширения SSE. каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности.
  2. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных.
  3. SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных XMM регистрах, что делает это расширение более предпочтительным для целочисленных вычислений. нежели использование набора инструкций MMX. появившегося гораздо раньше.
  4. Продолжение SSE работает с вещественными числами.
  5. SSE2 включает в себя ряд команд управления кэшем, предназначенных для минимизации загрязнения кэша при обработке объёмных потоков данных.
  6. SSE2 включает в себя сложные дополнения к командам преобразования чисел.

Еще по настройке БИОС (БИОЗ) плат:

AMD Athlon XP и SSE2

Solution 2: Edit the Setup.ini file.

You can edit the Setup.ini file for Adobe Production Studio so it will not check for an SSE2 enabled CPU before it attempts to install. Once you have installed Adobe Production Studio using the modified Setup.ini, you can successfully run After Effects 7.0, Audition 2.0, Illustrator CS2, and Photoshop CS2.

Note: If you edit the Setup.ini file in order to install Adobe Production Studio, you will not be able to run Premiere Pro 2.0 or Encore DVD 2.0 unless you upgrade your processor to one that supports the SSE2 instruction set.

To edit the Setup.ini file:

1. Copy the contents of all of the Adobe Production Studio DVDs to a folder on your hard drive. For instructions on copying the content of these DVDs to your hard drive, see document 328850. "Troubleshoot installation problems (Adobe Production Studio on Windows)."

2. In Notepad, open the Setup.ini file that you copied in Step 1. This file is located in the Adobe Production Studio folder you created in Step 1.

3. Remove the section of the file requiring SSE2 by deleting the following four lines:

Requirement6MsgFailure="$$$/ACS/ReqCheckFailureCPUReqSSE2=The Adobe Production Studio needs a processor that supports the SSE2 instruction\nset in order to run properly. Please upgrade your processor or install on a different computer.\n\nThe minimum system requirements for the Adobe Production Studio are:\n\t- Windows XP Service Pack 2\n\t- Intel Pentium 4 processor or better\n\t- 4 GB of hard disk space\n\t- 512 MB of RAM\n\t- CPU supporting the SSE/SSE2 instruction set"

4. Save and close the file.

5. Run the Adobe Production Studio Setup.exe file from the folder you created in Step 1.

На сколько я знаю, в частности Adobe нужно SSE а не SSE2
SSE2 Adobe так же требует, но процессор работает, просто есть определенные ошибки. Поэтому считаю проблему Papercut. заключается в том, что функция SSE не включенна.
Вот ссылка на устранение некоторых проблем Adobe Premiere при использовании процессора Athlon XP при работе на SSE2

SYSTEM REQUIREMENTS Intel® Pentium® III or 4 or Intel Centrino™ (or other SSE-enabled) processor (Pentium 4 or other SSE2-enabled processor required for video)

Часть 1 к посту Ment69.

Edit the Setup.ini file. You can edit the Setup.ini file for Adobe Production Studio so it will not check for an SSE2 enabled CPU before it attempts to install. Once you have installed Adobe Production Studio using the modified Setup.ini, you can successfully run After Effects 7.0, Audition 2.0, Illustrator CS2, and Photoshop CS2. Note: If you edit the Setup.ini file in order to install Adobe Production Studio, you will not be able to run Premiere Pro 2.0 or Encore DVD 2.0 unless you upgrade your processor to one that supports the SSE2 instruction set.

Обход проверки процессора на наличие PAE

Обход проверки процессора на наличие PAE/NX/SSE2 Support - Windows 8, 8.1

29.08.2012, 15:28 Обход проверки процессора на наличие PAE/NX/SSE2 Support

Господа Умельцы из Форума программистов и сисадминов CyberForum.ru, не могли бы Вы пересобрать установочные загрузчики в Windows 8 Release Previewх86, Windows 8 RTM Enterprise х86, Windows 8 RTM Pro x86 и Windows 8 RTM x86, чтобы они при установке системы не проверяли процессор на наличие PAE/NX/SSE2 Support. Проще говоря, сделать так, чтобы не выскакивала надпись «Ваш ЦП не поддерживает Windows 8» или при установке из БИОСа не появлялось:
Your PC needs to restart.
Please hold down the power button.
Error Code: 0x0000005D
Parameters:
0x030F0401
0x756E6547
0x49656E69
0x6C65746E
И выложить исправленные дистрибутивы где желаете или дать ссылку (в том числе и на почту).
Для информации:
На форуме Microsoft Answers был такой ответ:
«Vlad62 ответил: июля 6, 2012
Звезда сообщества
Добрый день Игорь.
В установщике Windows 8 Release Previev есть ошибка в определении возможностей процессора при определённых условиях*.
Всё что можно предложить, установка на виртуальную машину, либо, установка WDP\WCP (Windows Developer Preview и Windows Consumer Preview).
* Просто говоря, путается в обвязке процессора.
REM: Есть метод, но он подойдёт специалисту. В двух словах: Надо скопировать содержимое install.wim в раздел, восстановить загрузчик W8.»
И еще:
«Vlad62 ответил: июля 8, 2012
Звезда сообщества
Добрый день.
Нет, это не моё. Эта ошибка обсуждалась в блогах разработчиков Windows 8. Да, о ней уже известно. Однако в Windows 8 Release Previev её исправлять наверное уже не будут. Это не ошибка установщика, это ошибка сбора данных о конфигурации оборудования.
Ошибка интернациональна. Начните установку английской версии, получите результат работы гугла с английской фразой.
Возможно в русской части интернета я озвучил её первым.»
27.08.12г. в 22 часа по Москве, на сайте Microsoft было указано:
«Загрузка и установка
Какие требования к системе для Windows 8 Release Preview?
Windows 8 Release Preview подходит для компьютеров, поддерживающих работу на Windows 7.
Процессор: 1 гигагерц (ГГц) или больше
ОЗУ: 1 гигабайт (ГБ) для 32-разрядной версии или 2 ГБ для 64-разрядной версии.


Свободное место на жестком диске: 16 гигабайт (ГБ) для 32-разрядной версии или 20 ГБ для 64-разрядной версии.
Графический адаптер: графическое устройство Microsoft DirectX 9 с драйвером WDDM.
Дополнительные требования для использования некоторых функций
Для использования сенсорных возможностей требуется планшет или монитор с поддержкой мультисенсорной технологии.
Чтобы получить доступ к Магазину Windows для загрузки и запуска приложений, требуется активное подключение к Интернету и разрешение экрана не менее 1024 x 768 пикселей.
Чтобы прикреплять приложения, необходимо разрешение экрана не менее 1366 x 768 пикселей.
Доступ к Интернету (может взиматься плата поставщиком услуг Интернета) .»
Совсем недавно(!) появилась пояснение:
«Что такое PAE, NX и SSE2 и почему мой компьютер должен поддерживать их для использования Windows 8 Release Preview?
Расширение физического адреса (PAE), поддержка технологии NX bit и потоковое SIMD-расширение процессора (SSE2) — это возможности процессора. С помощью PAE 32-разрядные процессоры могут адресовать более 4 ГБ физической памяти в совместимых версиях Windows, что является обязательным условием использования технологии NX. NX позволяет процессору защитить компьютер от атак вредоносных программ. SSE2 (уже давно используется в процессорах) — это набор инструкций, все чаще используемый в приложениях и драйверах сторонних производителей. Из соображений безопасности необходимо устанавливать Windows 8 на компьютере с процессором, который поддерживает технологию NX, что гарантирует надежную работу компонентов защиты от вредоносных программ. Кроме того, чтобы повысить надежность работы приложений и драйверов сторонних производителей в Windows 8, потребуется поддержка SSE2. Если ваш компьютер не поддерживает технологии PAE, NX и SSE2, вам не удастся установить Windows 8 Release Preview.»( Windows 8 Release Preview подходит для компьютеров, поддерживающих работу на Windows 7.)!?
И сразу же. «Будут ли мои устройства и программы работать с Windows 8 Release Preview?
Windows 8 Release Preview должна работать с теми же устройствами и программами, что и Windows 7.
Возможно, потребуется обновить устройства и программы или удалить некоторые программы, а затем снова установить их после установки Windows 8 Release Preview. Программа установки Windows 8 Release Preview выполнит проверку компьютера, чтобы определить совместимые устройства и программы, и предоставит отчет, который можно сохранить или распечатать. Перед запуском программы установки убедитесь, что соответствующие устройства подключены к компьютеру и включены. Сведения о совместимости с определенным устройством или программой см. в Центре совместимости Windows 8 Release Preview .»


Ну и где же логика?!
«Windows 8 Release Preview подходит для компьютеров, поддерживающих работу на Windows 7», «Windows 8 Release Preview должна работать с теми же устройствами и программами, что и Windows 7», и тут же «Если ваш компьютер не поддерживает технологии PAE, NX и SSE2, вам не удастся установить Windows 8 Release Preview».
Может не стоит доверять на слово ледям и джентельменам из Microsoft, а просто необходимо проверить, и не копать так глубоко в системе? Сомневаюсь, что они переписали всю систему после Windows Developer Preview и Windows Consumer Preview за такой короткий срок перед выходом Windows 8 Release Preview! Потому, что и Windows 7, и Windows Developer Preview и Windows Consumer Preview, устанавливались в подавляющем большинстве почти у всех, на любом, даже самом древнем железе!

NX-бит является самым старшим разрядом элемента 64-битных таблиц страниц, используемых процессором для распределения памяти в адресном пространстве. 64-разрядные таблицы страниц используются операционными системами, работающими в 64-битном режиме, либо с включенным расширением физических адресов (PAE). Если ОС использует 32-разрядные таблицы, то возможности использовать защиту страниц от исполнения нет.

Расширения SSE

Расширения SSE Общие сведения

SSE (Streaming SIMD Extensions ) - расширение инструкций процессора для потоковой обработки в режиме SIMD (Single Instruction Multiple Data ), т.е. когда требуется применять однотипные операции к потоку данных.

Расширение SSE разработано компанией Intel и было впервые применено в процессоре Intel Pentium III с ядром Katmai. Отсюда изначальное название KNI (Katmai New Instructions). Технология SSE позволила преодолеть проблемы MMX - при использовании MMX невозможно было одновременно использовать инструкции сопроцессора, так как его регистры задействовались для MMX и работы с вещественными числами.

В общем случае, к архитектуре процессора добавляется ряд самих инструкций и несколько 128-битных регистров с различной интерперетацией. Тем не менее, хотя изначально каждый регистр трактуется как два значения с плавающей точкой двойной точности (2*64-бит), операции могут применяться практически ко всем типам, "помещающимся" в 16 байт:

Это означает, например, что появляется возможность одновременно сложить или умножить с помощью всего одной инструкции два операнда из четырех чисел с плавающей точностью одинарной точности, двух - с двойной, двух 64-битных целочисленных, 16 8-битных целых и т.п.

Таким образом, для получения максимальной отдачи от SSE, следует использовать такие структуры данных, чтобы они максимально укладывались в эти 128-битные регистры. Если это не удается сделать изначально, то среди SSE существуют и специальные для этих целей инструкции.

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

Более подробно об этом можно прочитать в документе Using SSE and SSE2: Misconceptions and Reality на сайте Intel.

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

SSE

SSE включает в архитектуру процессора восемь 128-битных регистров (с xmm0 до xmm7), каждый из которых трактуется как 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных.

SSE2

SSE2 использует восемь 128-битных регистров (с xmm0 до xmm7), включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Также SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных xmm регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели MMX, появившийся гораздо ранее.

SSE3

Набор SSE3 содержит 13 инструкций: FISTTP (x87), MOVSLDUP (SSE), MOVSHDUP (SSE), MOVDDUP (SSE2), LDDQU (SSE/SSE2), ADDSUBPD (SSE), ADDSUBPD (SSE2), HADDPS (SSE), HSUBPS (SSE), HADDPD (SSE2), HSUBPD (SSE2), MONITOR (нет аналога в SSE3 для AMD), MWAIT (нет аналога в SSE3 для AMD).

SSE4

SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (только они появятся в процессорах Penryn). Ожидается, что полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) будет доступен в процессорах Nehalem. Ни одна из SSE4 инструкций не работает с 64-х битными mmx регистрами (только с 128-ми битными xmm0-15).

Компилятор языка Си от Intel начиная с версии 10 будет генерировать инструкции SSE4 при задании опции -QxS.

Более подробную информацию по SSE4 можно найти на сайте Intel по ссылке.

CPU Специализация инструкции - Мои статьи - Каталог статей

CPU. Специализация. инструкции

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

- 3DNow!
- AMD64 (x86-64)
- Cpuid
- EM64T (x86-64)
- Extended 3DNow!
- IA-32 (x86-32)
- MIMD
- MISD
- MMX
- SIMD
- SISD
- SSE
- SSE2
- SSE3
- SSE4
- SSE4.1
- SSE4.2
- SSE4A
- SSSE3

3DNow! — дополнительное расширение MMX для процессоров AMD, начиная с AMD K6 3D. Причиной создания 3DNow! послужило стремление завоевать превосходство над процессорами производства компании Intel в области обработки мультимедийных данных. Хотя это расширение является разработкой AMD, его также интегрировали в свои процессоры IBM, Cyrix и другие.

Технология 3DNow! ввела 21 новую команду процессора и возможность оперировать 32-битными вещественными типами в стандартных MMX-регистрах. Также были добавлены специальные инструкции, оптимизирующие переключение в режим MMX/3DNow! (femms, которая заменяла стандартную инструкцию emms) и работу с кешем процессора. Таким образом технология 3DNow! расширяла возможности технологии MMX, не требуя введения новых режимов работы процессора и новых регистров.

В 3DNow! компания AMD добавила новый тип данных — 32-битные вещественные числа, инструкции для работы с этим типом, а также некоторые инструкции для манипулирования стандартными типами MMX.


Проверка поддержки 3DNow! процессором.

Перед началом работы с расширением 3DNow! следует убедиться, что ЦП их поддерживает. Для этого используется инструкция CPUID. Общий порядок действий при проверке выглядит следующим образом:

1. Убедиться, что процессор поддерживает инструкцию CPUID. Если нет, то ЦП не поддерживает и 3DNow.
2. Выполнить инструкцию cpuid со значением EAX = 0 — это необходимо для следующего шага.
3. Выполнить CPUID со значением EAX = 80000000h. Если после выполнения инструкции в EAX будет значение меньше 1, то 3DNow! не поддерживается.
4. Выполнить CPUID с EAX = 80000001h. Если после выполнения бит 31 регистра EDX будет установлен в 1, то 3DNow! поддерживается. Иначе — нет.

AMD64 (также x86-64/Intel64/EM64T/x64) — 64-битная архитектура микропроцессора и соответствующий набор инструкций, разработанные компанией AMD. Это расширение архитектуры x86 с полной обратной совместимостью. Набор инструкций x86-64 в настоящее время поддерживается процессорами AMD Athlon 64, Athlon 64 FX, Athlon 64 X2, Turion 64, Opteron, последними моделями Sempron. Интересно, что этот набор инструкций был поддержан основным конкурентом AMD — компанией Intel под названием Intel 64 (ранее известные как EM64T и IA-32e) в поздних моделях процессоров Pentium 4, а также в Pentium D, Pentium Extreme Edition, Celeron D, Core 2 Duo и Xeon. Корпорации Microsoft и Sun Microsystems используют для обозначения этого набора инструкций термин x64.

Разработанный компанией AMD набор инструкций x86-64 (позднее переименованный в AMD64) — расширение архитектуры Intel IA-32 (x86-32). Основной отличительной особенностью AMD64 является поддержка 16-ти 64-битных регистров общего назначения (против 8-и 32-битных в x86-32), 64-битных арифметических и логических операций над целыми числами и 64-битных виртуальных адресов. Для адресации новых регистров для команд введены так называемые «префиксы расширения регистра», для которых был выбран диапзон кодов 40h-4Fh, использующихся для команд INC <регистр> и DEC <регистр> в 32- и 16-битных режимах. Команды INC и DEC в 64-битном режиме должны кодироваться в более общей, двухбайтовой форме.


Архитектура x86_64 имеет:
- 16 целочисленных 64-битных регистра общего назначения (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15)
- 8 80-битных регистров с плавающей точкой (ST0 — ST7)
- 8 64-битных регистров Multimedia Extensions (MM0 — MM7, имеют общее пространство с регистрами ST0 — ST7)
- 16 128-битных регистров SSE (XMM0 — XMM15)
- 64-битный указатель RIP
- 64-битный регистр флагов RFLAGS.


Смерть и возрождение сегментной модели организации памяти.

Разрабатывая архитектуру x86-64, инженеры корпорации AMD решили навсегда покончить с главным "рудиментом" архитектуры x86 — сегментной моделью памяти, которая передавалась по наследству ещё со времён 8086/80286. Однако, как потом оказалось, они очень погорячились. Архитектура стала абсолютно невиртуализуемой. При разработке новой версии своего продукта для виртуализации программисты компании VMWare столкнулись с непреодолимыми трудностями при реализации 64-битной виртуальной машины. Поскольку, для отделения кода монитора от кода «гостя» программой использовался механизм сегментации, эта задача стала практически неразрешимой. Осознав свою ошибку, AMD вернула ограниченный вариант сегментной организации памяти начиная с ревизии D архитектуры AMD64, что позволило запускать 64-битные ОС в виртуальных машинах. Intel, однако, этому примеру не последовала, и поэтому ни на одном её процессоре, не поддерживающем средства аппаратной виртуализации, запустить 64-битную виртуальную машину нельзя. С целью проверки того, возможен ли на данном процессоре запуск 64-битных гостевых ОС или нет, VMWare предоставляет вместе со своими продуктами специальную утилиту. Также следует отметить, что первоначально попавшие «под нож» команды LAHF и SAHF, которые также активно используются ПО виртуализации, затем также были возвращены в систему команд. С распространением средств аппаратной виртуализации (Intel VT, AMD-V) потребность в сегментации вновь постепенно отпадет, однако VMWare по-прежнему активно её использует, и поддержки AMD-V даже на сегодняшний день в её продуктах нет.

CPUID (CPU Identification) — ассемблерная инструкция процессоров x86, используется для получения информации о процессоре. Используя её, программа может определить тип ЦП и его возможности (например, можно определить, какие расширения поддерживаются процессором).

Инструкция CPUID впервые появилась в процессорах i486. Потом она начала поддерживаться всеми процессорами начиная с Intel 80486DX/SX/DX2 SL, AMD 80486DX4, Cyrix M1, UMC U5S.

Проверка поддержки инструкции CPUID процессором:

Так как инструкция CPUID отсутствовала в первых процессорах архитектуры x86, перед её использованием следует удостоверится что ЦП ее поддерживает. Для этого производится попытка изменить бит 21 (ID) регистра EFLAGS. Если бит успешно поменяется, то инструкция CPUID процессором поддерживается.

Приведенный ниже исходный код проверяет поддержку инструкции CPUID:

pushfd ; размещение регистра EFLAGS в стэке
pop eax ; извлечение значения EFLAGS в EAX
mov ebx, eax ; сохранение значения в EBX
xor eax, 200000h ; изменение 21-го бита
push eax ; размещение нового значения в стэке
popfd ; сохранение нового значения в EFLAGS
pushfd ; снова размещение EFLAGS в стэке
pop eax ; значение EFLAGS теперь в EAX
xor eax, ebx ; проверка 21-го бита
je no_cpuid ; если он не изменился, то CPUID не поддерживается
В данном примере используется инструкция XOR, так как она непременно поменяет только 21-й флаг ID не затронув другие. Обратите внимание что здесь используются 32-битные инструкции, поэтому рекомендуем сначала проверить поддерживает ли процессор 32-битные директивы.

Инструкция CPUID по содержимому регистра EAX определяет какого рода информацию о процессоре необходимо вернуть. Первый раз её следует вызывать со значением EAX = 0. При этом будет возвращено максимально допустимое значение параметра инструкции, поддерживаемое данным процессором.

Для того, чтобы получить информацию о дополнительных функциях, имеющихся в процессорах, в регистре EAX перед вызовом CPUID должен быть установлен бит 31. Например, чтобы определить максимально допустимое значение параметра для дополнительных функций, необходимо выполнить CPUID со значением EAX = 80000000h.

EAX = 0: Получить идентификатор производителя процессора
При EAX = 0 ЦП возвращает идентификатор производителя процессора (англ. Vendor ID) в виде 12 символов ASCII, содержащихся в регистрах EBX, ECX, EDX (именно в таком порядке). В регистре EAX же возвращается максимально допустимое значение EAX при вызове CPUID.

Вот некоторые идентификаторы производителей процессоров:

ASCii-строка HEX-значения EBX:EDX:ECX Название
производителя
"GenuineIntel" 756E6547:49656E69:6C65746E Intel
"AuthenticAMD" 68747541:69746E65:444D4163 AMD
"CyrixInstead" 69727943:736E4978:64616574 Cyrix
"CentaurHauls" 746E6543:48727561:736C7561 Centaur
"SiS SiS SiS " 20536953:20536953:20536953 SiS
"NexGenDriven" 4778654E:72446E65:6E657669 NexGen
"GenuineTMx86" 756E6547:54656E69:3638784D Transmeta
"RiseRiseRise" 65736952:65736952:65736952 Rise
"UMC UMC UMC " 20434D55:20434D55:20434D55 UMC
"Geode by NSC" 646F6547:79622065:43534E20 National Semiconductor

EM64T (Extended Memory 64 Technology) - реализация 64-битных расширений AMD64 процессорной архитектуры IA-32 (архитектуры x86-совместимых процессоров) фирмы Intel. Основное улучшение, обеспечиваемое EM64T — 64-битная адресация оперативной памяти, что позволяет снять присущее 32-битным процессорам ограничение в 4 гигабайта адресуемой напрямую памяти.

EM64T обеспечивает поддержку:
- 64-битового линейного действительного адресного пространства;
- 64-битовых указателей;
- 64-битовые регистры общего назначения;
- 64-битовых целых чисел;
- поддержку до 1 терабайта адресного пространства платформы.

MMX (Multimedia Extensions — мультимедийное расширение) — коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х.

SIMD (англ. Single Instruction, Multiple Data) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных.

SISD (англ. Single Instruction, Single Data) — архитектура компьютера, в которой один процессор выполняет один поток команд, оперируя одним потоком данных. Относится к фон-Неймановской архитектуре.

SSE (англ. Streaming SIMD Extensions, потоковое SIMD-расширение процессора) — это SIMD (англ. Single Instruction, Multiple Data, Одна инструкция — множество данных) набор инструкций, разработанный Intel, и впервые представленный в процессорах серии Pentium III как ответ на аналогичный набор инструкций 3DNow! от AMD, который был представлен годом раньше. Первоначально названием этих инструкций было KNI что расшифровывалось как Katmai New Instructions (Katmai — название первой версии ядра процессора Pentium III).

Технология SSE позволяла преодолеть 2 основных проблемы MMX — при использовании MMX невозможно было одновременно использовать инструкции сопроцессора, так как его регистры использовались для MMX и работы с вещественными числами.

SSE включает в архитектуру процессора восемь 128-битных регистров (xmm0 до xmm7), каждый из которых трактуется как 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных.

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

Реализация блоков SIMD осуществляется распараллеливанием вычислительного процесса между данными. То есть когда через один блок проходит поочерёдно множество потоков данных.

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

SSE2 использует восемь 128-битных регистров (xmm0 до xmm7), включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Также SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных xmm регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше.

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

SSE3 (PNI — Prescott New Instruction) — третья версия SIMD-расширения Intel, потомок SSE, SSE2 и x87. Впервые представлено 2 февраля 2004 года в ядре Prescott процессора Pentium 4. В 2005 AMD предложила свою реализацию SSE3 для процессоров Athlon 64 (ядра Venice и San Diego).

Набор SSE3 содержит 13 инструкций:
- FISTTP (x87)
- MOVSLDUP (SSE)
- MOVSHDUP (SSE)
- MOVDDUP (SSE2)
- LDDQU (SSE/SSE2)
- ADDSUBPD (SSE)
- ADDSUBPD (SSE2)
- HADDPS (SSE)
- HSUBPS (SSE)
- HADDPD (SSE2)
- HSUBPD (SSE2)
- MONITOR (нет аналога в SSE3 для AMD)
- MWAIT (нет аналога в SSE3 для AMD).

SSE4 это набор команд Intel Core микроархитектуры, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD). Он был анонсирован 27 Сентября 2006, однако детальное описание стало доступно только весной 2007.

SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть только в процессорах Penryn). Ожидается, что полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) будет доступен в процессорах Nehalem. Ни одна из SSE4 инструкций не работает с 64-х битными mmx регистрами (только с 128-ми битными xmm0-15).

Компилятор языка Си от Intel начиная с версии 10 генерирует инструкции SSE4 при задании опции -QxS.

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

SSE4.1 это расширенный набор команд SSE4 от Intel.

Ниже приведены инструкции, входящие в SSE4.1:
- Ускорение видео (3 инструкции)
- Векторные примитивы (5 инструкций)
- Вставки/извлечения (4 инструкции)
- Скалярное умножение векторов (2 инструкции)
- Смешивания (4 инструкции)
- Проверки бит
- Округления (2 инструкции)
- Чтение WC памяти

SSE4.2 это расширенный набор команд SSE4 от Intel.

SSE4.2 состоит из 7 инструкций. Ожидается, что полный набор команд будет доступен в процессорах Nehalem.

Инструкции SSE4.2:
- Обработка строк (4 инструкции)
- Подсчет CRC32
- Подсчет популяции единичных бит
- Векторные примитивы

SSE4A это расширенный набор команд SSE4 от AMD, разработанный скорее не как дополнение, а как альтернатива инструкциям SSE4 от Intel.

SSSE3 (Supplemental Streaming SIMD Extension 3) — это обозначение данное Intel 4-му расширению системы команд. Предыдущее имело обозначение SSE3 и Intel добавил ещё один символ 'S' вместо того, чтобы увеличить номер расширения, возможно потому, что они посчитали SSSE3 простым дополнением к SSE3. Часто, до того как стало использоваться официальное обозначение SSSE3, эти новые команды назывались SSE4. Также их называли кодовыми именами Tejas New Instructions (TNI) и Merom New Instructions (MNI) по названию процессоров, где впервые Intel намеревалась поддержать эти новые команды. Появившись в Intel Core Microarchitecture, SSSE3 доступно в сериях процессоров Xeon 5100 (Server и Workstation версии), а также в процессорах Intel Core 2 (Notebook и Desktop версии).

Новыми в SSSE3, по сравнению с SSE3, являются 16 уникальных команд, работающих с упакованными целыми. Каждая из них может работать как с 64-х битными (MMX), так и с 128-ми битными (XMM) регистрами, поэтому Intel в своих материалах ссылается на 32 новые команды.

Вот некоторые из них:
- Работа со знаком (2 инструкции)
- Сдвиги
- Перемешивание байт
- Умножения (2 инструкции)
- Горизонтальные сложения/вычитания целых (4 инструкции)