ВступлениеНа проходившем недавно очередном Intel Developers Forum был официально представлен Prescott – новый процессор фирмы Intel, предназначенный для применения в персональных компьютерах. Он представляется как next generation processor - процессор нового поколения. Процессор выполнен по технологии 90 нанометров, что позволит достичь тактовых частот 4-5 GHz. Размер КЭШа второго уровня увеличен до 1MB - видимо, такое увеличение стало оправдано с точки зрения себестоимости благодаря новому техническому процессу. Размер КЭШа первого уровня так же удвоился, и тут заметно положительное влияние улучшенной технологии. Частота системной шины возросла до 800MHz. В целом, все блоки процессора претерпели небольшие улучшения. Но что этот вылизанный до блеска Pentium 4 несёт нового для разработчиков программного обеспечения? Увеличенный КЭШ – это, конечно, хорошо, надо несколько меньше думать о скорости чтения-записи данных из памяти, что часто является серьёзным лимитирующим производительность фактором. Но, всё равно, всех проблем не снимает, когда объём данных велик, увеличение КЭШа даже в два раза не принципиально.
Возросшая частота системной шины уверяет нас, что новый процессор от Intel будет достаточно сбалансированным, в нём не будет явно узких мест, тормозящих общую производительность системы. Как это, увы, было с некоторыми прошлыми процессорами, когда увеличение частоты не давало пропорционального прироста скорости.
Однако, такая вещь, как новый семислойный дизайн процессора мало интересует разработчиков ПО. Им гораздо важнее, какие новые процессорные команды стали доступны, какие оптимизационные приёмы предстоит применить для достижения максимальной производительности, или хотя бы, чтобы не было медленнее, чем на старом. Прошлый процессор фирмы Intel – Pentium 4 – требовал существенную оптимизацию программного обеспечения для увеличения производительности. На широком классе задач Pentium 4 проигрывал Pentium III не только равной частоты, но и значительно меньшей, до двух раз. Ниже мы детально разберёмся, почему это происходило, можно только сразу отметить, что глобальная причина состояла в необходимости существенного изменения ядра в целях наращивания частоты.
В целом, процессорное ядро не претерпело кардинальных изменений. Всё, что не любит Pentium 4 – в первую очередь, ветвления – всё досталось в наследство модификации на 90 нанометровом технологическом процессе. Даже несколько усилилось. В целях увеличения частоты глубина конвейера Prescott’а была увеличена, поэтому можно ожидать большие потери при ведущем к сбросу конвейера неправильном предсказании условных переходов.
Но есть и приятные новости, главная, это расширение набора процессорных инструкций. Введение MMX, SSE, SSE2 было приятно разработчикам программного обеспечения тем, что задавало им дополнительную работу по оптимизации программ. Иначе многие программы отказывались быстро выполняться. Однако, появившиеся в Prescott 13 новых инструкций существенно облегчают долю разработчиков.
Операция | часть 3 | часть 2 | часть 1 | часть 0 | Регистр |
---|---|---|---|---|---|
70 | 50 | 30 | 10 | 1 регистр |
|
+ | |
||||
80 | 60 | 40 | 20 | 2 регистр |
|
= | |
||||
150 | 110 | 70 | 30 | результат |
часть 3 | часть 2 | часть 1 | часть 0 | |
---|---|---|---|---|
регистр 7 |
||||
регистр 6 |
||||
регистр 5 |
||||
регистр 4 |
||||
регистр 3 |
||||
* | * | * | * | регистр 2 |
2 | 55.9 | -1.9e10 | 1.567e-6 | регистр 1 |
0.7 | -100.0 | 11.2 | 0.5 | регистр 0 |
часть 1 | часть 0 | |
---|---|---|
регистр 7 |
||
регистр 6 |
||
регистр 5 |
||
регистр 4 |
||
* | * | регистр 3 |
10000.1 | 6.7 | регистр 2 |
-0.5 | 1.5e7 | регистр 1 |
2.0 | 1.0 | регистр 0 |
часть 1 | часть 0 | |
---|---|---|
регистр 7 |
||
регистр 6 |
||
регистр 5 |
||
регистр 4 |
||
регистр 3 |
||
* | * | регистр 2 |
-1.5e10 | 0.00001 | регистр 1 |
1e-25 | 5.5 | регистр 0 |
y2 | x2 |
|
ADDSUBPD | |
|
y1 | x1 |
|
= | |
|
y1+y2 | x1-x2 |
Инструкция | Описание |
---|---|
Горизонтальные операции с регистрами
|
|
HADDPS | горизонтальное сложение содержимого SSE регистров |
HSUBPS | горизонтальное вычитание содержимого SSE регистров |
HADDPD | сложение двух элементов одного SSE2 регистра |
HSUBPD | вычитание одного из другого двух элементов SSE2 регистра |
Во всех отношениях полезные команды, которых давно ждали разработчики, серьёзно упрощающие автоматическую и ручную оптимизацию.
|
|
Команды загрузки данных
|
|
MOVSHDUP | загружает данные в регистр-приёмник, копируя только 2 и 4 32- битный элемент |
MOVSLDUP | загружает данные в регистр-приёмник, копируя только 1 и 2 32-битный элемент |
MOVDDUP | загружает данные в регистр-приёмник, копируя и удваивая первую половину регистра-источника |
Полезно для автоматической и ручной оптимизации.
|
|
Комбинированное сложение-вычитание
|
|
ADDSUBPS | (x1,y1,z1,w1) * (x2,y2,z2,w2) = (x1-x2,y1+y1,z1-z2,w1+w2) |
ADDSUBPD | (x1, y1) * (x2, y2) = (x1-x2, y1+y2) |
Значительно упрощает реализацию операций с комплексными числами. Помогает в автоматической оптимизации программ.
|
|
Для относительно редкой тонкой ручной и автоматической оптимизации.
|
|
Преобразование данных
|
|
FISTTP | Единственная новая x87 инструкция. Осуществляет быстрое преобразование содержимого стека сопроцессора к целому типу. |
Полезно для автоматической оптимизации программы при компиляции. Когда-то давным-давно эту инструкцию забыли добавить в стандартный набор x87 инструкций, и теперь это упущение восполнено.
|
|
Улучшение поддержки Hyper-threading
|
|
MONITOR/MWAIT | Процессор отслеживает событие записи в указанный диапазон памяти и активирует «уснувший» поток. |
Упрощает оптимизацию программ и сервисов операционной системы для поддержки технологии Hyper-Threading и, в целом, multi-threading. |
До января 2020 года. Хотя корпорация не собирается пересматривать сроки поддержки операционной системы, выпущенной в 2009 году, похоже, что Редмонд пытается вынудить пользователей обновиться до новых версий Windows за счет ограничения поддержки и игнорирования проблем, обнаруженных в последних обновлениях.
В этом месяце Microsoft заявила, что агенты технической поддержки больше не будут оказывать услуги поддержки пользователям на форумах Windows 7 и Windows 8 на сайте сообщества Microsoft, несмотря на тот факт, что данные операционные системы все еще поддерживаются компанией.
Автор популярных книг про Windows Вуди Леонард (Woody Leonhard) сообщил о другом инциденте - Microsoft завершила поддержку некоторых систем Windows 7 с определенными типами процессоров. Во Вторник Патчей в марте 2018 года вышло очередное обновление для Windows 7, которое имело известную ошибку, затрагивающую устройства с процессорами, не поддерживающими SSE2:
Стоп-ошибка возникает на компьютерах, которые не поддерживают инструкции SSE2 (Streaming SIMD Extensions 2).
Данная ошибка сохранялся и в списках известных проблем патчей в апреле, мае и июне 2018 года. До последнего момента Microsoft сообщала, что над устранением данной ошибки ведется работа:
Microsoft занимается разработкой решений и предоставит обновления в будущих выпусках патчей.
На прошлой неделе заметки к июньскому обновлению для Windows 7 были изменены. Компания убрала данную ошибку из известных проблем, но не предоставила никакой дополнительной информации по данному вопросу. Была ли ошибка исправлена?
Чтобы разобраться в данном вопросе, нужно открыть заметки к прошлым обновлениям, например к майскому KB4103718 . Можно заметить, что данная стоп-ошибка числится в списке, но вместо информации о том, что проводится работа над исправлением ошибки, Microsoft просто отмечает, что на устройствах без поддержки SSE2 нужно заменить процессор на более современный или использовать виртуализацию.
Установите на устройство процессор, который поддерживает SSE2 или используйте виртуализацию машины.
Другими словами, Microsoft без лишней огласки завершила поддержку Windows 7 для устройств с процессорами, которые не поддерживают SSE2. Корпорация не собирается исправлять данную проблему и даже удалила информацию из заметок к последнему обновлению, из-за чего пользователи и администраторы остаются в неведении.
Поддержка SSE2 - необходимое условие для установки Windows 8 и более новых систем Windows 10, но никогда SSE2 не являлось условием для установки Windows 7. На официальной странице системных требований для Windows 7 нет ни слова о данном ограничении.
Данное изменение затрагивает устройства с процессорами Pentium III. Общее количество таких устройств неизвестно, но из-за этого пользователи находятся в затруднительном положении. Windows 7 продолжит работать как обычно, но если последние исправления не будут установлены, то система не получит новейшие обновления безопасности.
Переход на новые операционные системы Windows без аппаратного обновления невозможен, потому что для них также требуется поддержка SSE2. У пользователей затронутых устройств остается три возможных варианта дальнейших действий: продолжать использовать неподдерживаемую систему, обновить процессор / ПК или переключиться на Linux.
На момент выхода Windows 7 Pentium III уже считался устаревшим процессором. По всей видимости Microsoft провела анализ затрат, чтобы оценить целесообразность разработки патча для устройств с процессорами без поддержки SSE2 и в итоге решила просто отказаться от поддержки данных ПК.
Microsoft очень часто действует скрытно, без лишнего шума. Вместо того, чтобы открыто сообщить об изменениях пользователям, компания просто удалила известную проблему из статьи о последнем обновлении, чем она вводит в заблуждение многих пользователей.
Люди заплатили за операционную систему и им гарантировали поддержку до 2020 года. Microsoft должна уважать своих пользователей и выполнять взятые на себя обязательства.
Нашли опечатку? Выделите и нажмите Ctrl + Enter
No-eXecute (NX)
No-eXecute (NX) - это функция процессора, которая позволяет отмечать страницы памяти, как не содержащие исполняемый код. Эта функция позволяет ЦП обеспечивать защиту системы от атак вредоносных программ. Функция NX предотвращает размещение вредоносного программного кода в доступных областях памяти. Windows 8 требует, чтобы системы имели процессоры, которые поддерживают NX, и функция NX должна быть включена для обеспечения надлежащей безопасности и во избежание возможных уязвимостей.
В этом разделе термин NX относится непосредственно к биту процессора NX, который определен AMD, или эквивалентному биту процессора XD, который определен Intel для поддержки функции предотвращения запуска данных (DEP) в Microsoft Windows.
DEP позволяет предотвращать запуск вредоносного кода со страниц памяти. содержащих данные. 32-разрядная версия Windows использует один из следующих функций для поддержки DEP:
Функция процессора для защиты страниц от запуска исполняемого кода (NX)
Функция бита eXecute Disable (XD), определенная Intel.
Для использования этих функций процессора процессор x86 (32-разрядный) должен работать в режиме расширения физических адресов (PAE). 64-разрядная версия Windows использует функцию процессора NX для 64-разрядных расширений и определенные значения поля прав доступа PTE для процессоров семейства Intel Itanium (IPF).
Помимо DEP функция случайного выбора расположения адресного пространства (ASLR) перемещает исполняемые образы в случайные места при загрузке системы, что усложняет возможность преднамеренного запуска вредоносного кода. ASLR и DEP эффективны только при совместном использовании. Для эффективной работы этих двух важных мер безопасности Windows должна быть включена функция NX. Дополнительные сведения см. в разделе Меры обеспечения безопасности программ для Windows независимыми поставщиками программных продуктов .
Процессор должен работать в режиме расширения физических адресов (PAE) для использования функции процессора NX. PAE - это функция процессора, которая позволяет процессорам x86 получать доступ к более чем 4 ГБ физической памяти на поддерживающих эту функцию версиях Windows. Архитектуры процессоров Intel Itanium и x64 естественным образом могут получать доступ к более чем 4 ГБ физической памяти, поэтому не имеют эквивалента PAE. PAE поддерживается 32-разрядными версиями Windows, работающими исключительно на системах x86.
Если функция DEP включена на системе, процессор который поддерживает функцию NX, функция PAE включается автоматически.
Все процессоры, которые поддерживают NX, также поддерживают расширения SIMD 2 (SSE2). SSE2 - это дополнительный набор инструкций процессора SIMD. AMD также включает поддержку SSE2 в линейки Opteron и Athlon 64 своих процессоров AMD64. Все процессоры, которые поддерживают NX, также поддерживают SSE2. Многие приложения Windows 8 имеют пути кода с набором инструкций SSE2. SSE2 является обязательным требованием для Windows 8.
Все современные процессоры поддерживают функцию NX. Функция NX может быть отключена в BIOS. На основе доступных данных телеметрии на одном проценте всех систем под управлением Windows® 7 функция NX отключена из-за неправильной настройки BIOS.
Для работы NX в 32-разрядных версиях Windows требуется наличие процессоров, поддерживающих PAE. Все 64-разрядные процессоры поддерживают NX, поскольку поддерживают AWE. Поэтому использование более старых 32-разрядных процессоров, которые не поддерживают PAE, не влияет на WOA или Windows Server (Windows Server 2012 является исключительно 64-разрядной системой). Требование к процессору не влияет на клиентов, использующих современные системы, или на системы, которые соответствуют требованиям к эмблеме Windows 7, поскольку эти системы оснащены поддерживающими PAE 32-битными процессорами, которые также поддерживают функцию NX и ее включение. Это затронет только небольшое число клиентов, у которых Windows 7 работает на очень старых 32-битных процессорах без поддержки PAE/NX.
Для Windows 8 и Windows Server 2012 наличие PAE является обязательным. Это требование влияет на небольшое число пользователей, которые используют более старое оборудование, не поддерживающее PAE. Ошибки возникают, когда Windows 8 устанавливается на неправильно настроенных виртуальных машинах (ВМ). Установка Windows завершается с ошибкой 0xc0000260 и откатывается до Windows 7.
Visual Studio предоставляет инструкции SSE2 по умолчанию. Приложения, которые обращаются к этим инструкциям, завершаются со сбоем на системах с более старыми процессорами, которые не поддерживают SSE2, как описано в разделе Инструкции SSE2 создаются при указании параметра /arch:SSE .
В этом разделе описаны меры, которые проверяют поддержку требований к PAE, NX и SSE2 процессорами систем, работающих под управлением Windows 8.
Требование сертификации оборудования для Windows 8 требует, чтобы все драйверы работали вместе с защитой предотвращения выполнения данных для обеспечения надлежащего поведения системы устройства и драйвера. Драйверы не должны выполнять код из стека, выгружаемого пула и пула сеансов. Драйверы не должны давать сбои при загрузке, если включен режим PAE. Во встроенном ПО системы должна быть включена функция NX, а для политики DEP должно быть установлено значение Всегда выключено . Включен сертификационный тест, подтверждающий, что система соответствует этому требованию к поддержке NX.
Дополнительные сведения см. в разделе Требования к сертификации оборудования для Windows .
Программа установки Windows имеет средство проверки совместимости оборудования для поддержки PAE, NX и SSE2 в устанавливаемой системе. Системы, которые не соответствуют требованию к поддержке процессором PAE, NX и SSE2, отмечаются как блокировки по оборудованию для Windows 8 в отчете о проблемах совместимости, при этом отображается сообщение Процессор вашего компьютера не совместим с Windows 8 .
Рис. 1. Сообщение об ошибке, связанной с несовместимостью процессора
Примечание
Эта проверка требований к поддержке доступна только в новой программе установки Windows и помощнике по обновлению. Windows 8 включает альтернативную версию программы установки и папке Sources на установочном носителе, которая не выполняет подобной проверки. Клиенты, которые попытаются использовать эту альтернативную версию программы установки Windows в системе, не соответствующей требованиям к поддержке PAE/NX/SSE2, увидят сообщение об ошибке во время установки, после чего будет выполнен откат к предыдущей версии операционной системы.
При загрузке с носителя или из сети, например с помощью служб развертывания Windows (WDS) во время установки Windows проверка совместимости не выполняется. При таких сценариях система без поддержки NX и SSE2 выдаст критическую ошибку (которая описана в следующем разделе Улучшения ядра ), когда программа установки попытается загрузить Windows.
В целях проверки соответствия требованию поддержки инструкций SSE2 и функции NX для работы Windows 8 ядро этой операционной системы проверяет наличие этих функций во время инициализации. Системы, которые не поддерживают NX или SSE2, не могут инициализировать ядро Windows 8. В системах, которые могут отключить NX во встроенном ПО, этот параметр переопределяется, поэтому неправильно настроенное встроенное ПО не приводит к сбою загрузки. Попытка загрузить систему без поддержки NX или SSE2 приведет к возникновению критической ошибки. В 32-разрядной системе пользователи получают ошибку кода UNSUPPORTED_PROCESSOR (0x0000005D) вместе с 4 информационными строками:
Строка 1 - код, указывающий отсутствующую функцию и идентификатор ЦП
Строки 2 - 4 - строки идентификатора поставщика
В 64-разрядной системе критическая ошибка показывает тот же код UNSUPPORTED_PROCESSOR, что и на 32-разрядной системе вместе со следующими четырьмя информационными строками:
Строка 1 - содержимое регистра стандартных функций
Строка 2 - содержимое регистра расширенных функций
Строки 3 - 4 - обе со значением 0
Вы можете использовать средство командной строки Coreinfo для получения сведений о процессоре системы и просмотреть записи PAE, NX и SSE2 в выходном списке. Символ * отображается рядом с названием поддерживаемой функции. Символ - отображается, если функция не поддерживается. Например:
Coreinfo v3.04 - Dump information on system CPU and memory topology Copyright (C) 2008-2012 Mark Russinovich Sysinternals - www.sysinternals.com AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ x86 Family 15 Model 75 Stepping 2, AuthenticAMD HTT* Hyperthreading enabled HYPERVISOR - Hypervisor is present VMX - Supports Intel hardware-assisted virtualization SVM * Supports AMD hardware-assisted virtualization EM64T * Supports 64-bit mode SMX - Supports Intel trusted execution SKINIT - Supports AMD SKINIT EIST - Supports Enhanced Intel Speedstep NX * Supports no-execute page protection PAGE1GB - Supports 1 GB large pages PAE * Supports > 32-bit physical addresses PAT * Supports Page Attribute Table PSE * Supports 4 MB pages PSE36 * Supports > 32-bit address 4 MB pages PGE * Supports global bit in page tables SS - Supports bus snooping for cache operations VME * Supports Virtual-8086 mode FPU * Implements i387 floating point instructions MMX * Supports MMX instruction set MMXEXT * Implements AMD MMX extensions 3DNOW * Supports 3DNow! instructions 3DNOWEXT * Supports 3DNow! extension instructions SSE * Supports Streaming SIMD Extensions SSE2 * Supports Streaming SIMD Extensions 2 SSE3 * Supports Streaming SIMD Extensions 3 SSSE3 - Supports Supplemental SIMD Extensions 3 SSE4.1 - Supports Streaming SIMD Extensions 4.1 SSE4.2 - Supports Streaming SIMD Extensions 4.2 …….. ……..
Если в выходных данных команды Coreinfo PAE отображается как неподдерживаемая функция, это означает, что процессор системы не поддерживает PAE и не может поддерживать NX. Если PAE отображается как поддерживаемое, но функция NX отображается в выходных данных команды Coreinfo как не поддерживаемая:
Если процессор поддерживает NX, возможно, настройки BIOS этой системы неправильно определены для поддержки NX.
Изучите руководство производителя системы и зайдите на системе, которая поддерживает NX, в BIOS, чтобы найти параметр NX или XD в разделе Безопасность , а затем включить поддержку NX. Если в системе нет параметров BIOS, включающих поддержку NX, возможно, следует обратиться к производителю, чтобы обновить BIOS.
Примечание
Если NX поддерживается 64-разрядной системой, параметры конфигурации системы не позволяют установить для политики DEP значение Всегда выключено . Дополнительные сведения о системной конфигурации DEP см. в разделе .
Для успешной загрузки Windows 8 процессоры системы должны поддерживать NX и SSE2. Если система поддерживает эти функции, но параметры настроены неверно, эти параметры переопределяются перед загрузкой системы ядром.
Если виртуальная машина размещена на системе, которая поддерживает NX, необходимо включить PAE/NX в параметрах ВМ или диспетчере конфигураций при настройке виртуальной машины Windows 8. Инструкции по включению PAE/NX для виртуальной машины см. в руководстве по установке продукта виртуализации.
Примечание
Если при попытке установить Windows 8 на виртуальной машине, размещенной в системе под управлением Windows, где функция NX отключена, необходимо выполнить инструкции в разделах и , чтобы включить NX в системе до включения PAE/NX для виртуальной машины.
В современных процессорах инструкции используются для ускорения работы и оптимизации исполняемых алгоритмов.
AMD64 (x86-64)
EM64T (x86-64)
Extended 3DNow!
IA-32 (x86-32)
MIMD
MISD
SIMD
SISD
SSE2
SSE3
SSE4
SSE4.1
SSE4.2
SSE4A
SSSE3
MMX (Multimedia Extensions - мультимедийное расширение) - коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х.
SIMD (англ. Single Instruction, Multiple 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:
- Ускорение видео (3 инструкции)
- Векторные примитивы (5 инструкций)
- Вставки/извлечения (4 инструкции)
- Скалярное умножение векторов (2 инструкции)
- Смешивания (4 инструкции)
Проверки бит
- Округления (2 инструкции)
Чтение WC памяти
SSE4.2 состоит из 7 инструкций.
- Обработка строк (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 инструкции)
3DNow! - дополнительное расширение MMX для процессоров AMD, начиная с AMD K6 3D. Причиной создания 3DNow! послужило стремление завоевать превосходство над процессорами производства компании Intel в области обработки мультимедийных данных. Хотя это расширение является разработкой AMD, его также интегрировали в свои процессоры IBM, Cyrix и другие.
Технология 3DNow! ввела 21 новую команду процессора и возможность оперировать 32-битными вещественными типами в стандартных MMXрегистрах. Также были добавлены специальные инструкции, оптимизирующие переключение в режим MMX/3DNow! (femms, которая заменяла стандартную инструкцию emms) и работу с кешем процессора. Таким образом технология 3DNow! расширяла возможности технологии MMX, не требуя введения новых режимов работы процессора и новых регистров.
Перед началом работы с расширением 3DNow! следует убедиться, что ЦП их поддерживает. Для этого используется инструкция CPUID. Общий порядок действий при проверке выглядит следующим образом:
1. Убедиться, что процессор поддерживает инструкцию CPUID. Если нет, то ЦП не поддерживает и 3DNow!.
2. Выполнить инструкцию cpuid со значением EAX = 0 - это необходимо для следующего шага.
3. Выполнить CPUID со значением EAX = 80000000h. Если после выполнения инструкции в EAX будет значение меньше 1, то 3DNow! не поддерживается.
4. Выполнить CPUID с EAX = 80000001h. Если после выполнения бит 31 регистра EDX будет установлен в 1, то 3DNow! поддерживается. Иначе - нет.
Всем привет Поговорим сегодня о том как узнать какие инструкции SSE поддерживает процессор. Но что такое SSE вы знаете? Я вот не знаю и не то чтобы не знаю, я даже понять не могу что это такое. Ну то есть я понимаю, что это инструкция процессора, которая нужна для оптимизации его работы, то есть чтобы при одной и тоже частотой проц с этой инструкцией мог больше обрабатывать команд. Но это так, грубо говоря так бы сказать…
Про SSE я вообще не знаю где в жизни он нужен, может быть для игр? Я знаю что такое Hyper-threading (правда это не инструкция процессора, это технология), что такое VT-x, VT-d, что такое EM64T знаю, а вот что такое SSE не знаю! Ну вот такие пироги ребята
Короче ребята, я вам скажу сразу, что есть небольшой обломчик с этим делом, это я имею ввиду то, что штатными средствами винды такую штуку как SSE нельзя узнать есть она или нет. Тут нужно качать специальную прогу. Но вы не переживайте, эта супер пупер прога бесплатная, весит очень мало, комп вообще никак не грузит, но при этом она МЕГА ПОЛЕЗНАЯ и зовут ее CPU-Z (кстати скачать можно тут: cpuid.com/softwares/cpu-z.html, это официальный сайт).
Итак ребята, скачали CPU-Z, установили и потом запускаем. И вот сразу же вы все узнаете, вот сколько у меня этих SSE:
Не одна и не две, а целых шесть, огогошеньки ребята
Кстати, как видите тут еще много есть всякой полезной инфы, видите? Если срочно нужно узнать что-то о своем проце, то вы быстро запускаете CPU-Z и опа, все что вам нужно у вас под рукой! Говорю же что прога CPU-Z это одна годнота! Не верите? Ну нет проблем, я вам щас докажу. Смотрите, вот вы знаете когда у вас была выпущена та или иная планка памяти? Ну то есть дату ее выпуска на заводе так бы сказать. Или вам это не интересно? Ну некоторым очень интересно, вот мне например очень интересно! И вот прога CPU-Z может показать такую инфу! Итак ребята, смотрите, запустили CPU-Z, идете на вкладку SPD, там выбираете слот с планкой (слева), ну то есть разьем куда она установлена и смотрите инфу по выбранной планке. У меня вот стоит одна планка на 8 гигов в четвертом слоту и вот какую инфу показала прога CPU-Z:
Тут видно, что моя планка была выпущена в 30-тую неделю 2014-го года. Также написано что производитель у меня это Hyundai Electronics, ну это планка Hynix так называется
Ну короче CPU-Z это супер, если нужно быстро посмотреть вообще самую важную инфу о железе компа или ноута, она все это покажет без приколов! Короче рекомендую ребята!
И еще, забыл кое что написать про SSE. Включить или отключить SSE нельзя. Ибо эта инструкция или есть или нет. Вот например Hyper-threading включить/отключить можно, а SSE нет!
На этом все ребята, надеюсь что все вам тут было понятно, а если что-то не так, то прошу прощения. Эта инфа была вам полезной, только честно? Я буду всем сердцем надеется что да! Удачи вам в жизни, чтобы вы были здоровы и не болели, удачи
09.12.2016