Расширения архитектуры x86 (x86 extended features) — инженерные решения, разрабатываемые различными производителями микропроцессоров архитектуры x86 для собственных процессоров, которые, зачастую, присутствуют в одних моделях и отсутствуют в других. Разработчики программного обеспечения, прежде чем использовать их в собственных программах, должны выполнить специальную команду CPUID, которая сообщает о наличии тех или иных расширений. Если расширение не поддерживается, программа должна либо завершить работу, либо использовать другие алгоритмы, не использующие расширений.
Иногда расширения становятся часто используемыми в популярных программах, тогда их начинают включать в свои процессоры практически все производители.
Наиболее известные из расширений MMX, SSE, 3DNow!, Hyper-threading. В основном, новые расширения разрабатываются фирмой Intel и затем подхватываются другими производителями. Но иногда бывает так, что сама Intel включает в свои процессоры расширения, созданные иными фирмами. К примеру, так было с архитектурой x86-64, впервые разработанной компанией AMD, а уже впоследствии реализованная Intel как Intel64/EM64T.
Стандартный набор расширений («от Intel»)
Расширение
|
Флаг CPUID
|
Описание
|
FPU
|
EDX[0]
|
Встроенное устройство с плавающей точкой
|
VME
|
EDX[1]
|
Расширение режима V86
|
DE
|
EDX[2]
|
Улучшенные средства отладки
|
PSE
|
EDX[3]
|
Большие страницы (4MiB/2MiB)
|
TSC
|
EDX[4]
|
Встроенный счетчик времени (машинных тактов)
|
MSR
|
EDX[5]
|
Моделезависимые регистры
|
PAE
|
EDX[6]
|
Расширение физического адреса
|
MCE
|
EDX[7]
|
Генерация исключения машинного контроля
|
CX8
|
EDX[8]
|
Поддерживается инструкция CMPXCHG8B
|
APIC
|
EDX[9]
|
Встроенный локальный контроллер прерываний
|
SEP
|
EDX[11]
|
Поддерживаются инструкции SYSENTER и SYSEXIT
|
MTRR
|
EDX[12]
|
Имеется возможность задавать тип кэша для определённых областей памяти в специальных регистрах
|
PGE
|
EDX[13]
|
Поддерживается флаг глобальных страниц (не сбрасываемых в TLB при переключении контекстов)
|
MCA[англ.]
|
EDX[14]
|
Поддерживаются средства машинного контроля
|
CMOV
|
EDX[15]
|
Поддерживаются инструкции условной пересылки данных
|
PAT[англ.]
|
EDX[16]
|
Поддерживаются расширенные атрибуты кэширования для отдельных страниц
|
PSE36
|
EDX[17]
|
Большие страницы (4MiB) по физическим адресам выше 4GiB
|
PSN
|
EDX[18]
|
Имеется возможность чтения серийного номера процессора
|
CLFL
|
EDX[19]
|
Поддерживается инструкция CLFLUSH
|
DTES
|
EDX[21]
|
Debug Trace and EMON Store MSRs
|
ACPI
|
EDX[22]
|
Имеются средства измерения температуры процессорного ядра
|
MMX
|
EDX[23]
|
Поддерживается набор инструкций технологии Intel MMX
|
FXSR
|
EDX[24]
|
Есть возможность сохранять/восстанавливать расширенный контекст
|
SSE
|
EDX[25]
|
Поддерживается набор инструкций технологии SSE
|
SSE2
|
EDX[26]
|
Поддерживается набор инструкций технологии SSE2
|
SS
|
EDX[27]
|
Self-snoop
|
HTT
|
EDX[28]
|
Поддерживается технология HyperThreading.
|
TM1
|
EDX[29]
|
Поддерживаются расширенные средства контроля температуры с генерацией прерывания
|
IA-64
|
EDX[30]
|
Программа запущена в режиме эмуляции на процессоре Itanium
|
PBE
|
EDX[31]
|
Pending break event
|
SSE3
|
ECX[0]
|
Поддерживается набор инструкций технологии SSE3
|
PCLMUL
|
ECX[1]
|
Поддерживается инструкция PCLMUL
|
DTES64
|
ECX[2]
|
64-bit Debug Trace and EMON Store MSRs
|
MON
|
ECX[3]
|
Поддерживаются инструкции MONITOR/MWAIT
|
DSCPL
|
ECX[4]
|
CPL-qualified Debug Store
|
VMX
|
ECX[5]
|
Поддерживается технология виртуализации Intel VT (Vanderpool)
|
SMX
|
ECX[6]
|
Поддерживается технология управления доверием Intel TXT (LaGrande)
|
EST
|
ECX[7]
|
Поддерживается Enhanced SpeedStep Technology
|
TM2
|
EDX[8]
|
Поддерживаются расширенные средства контроля температуры с генерацией прерывания и регистр THERM2_CONTROL
|
SSSE3
|
ECX[9]
|
Поддерживается набор инструкций технологии SSSE3
|
CID
|
ECX[10]
|
context ID: the L1 data cache can be set to adaptive or shared mode
|
FMA
|
ECX[12]
|
Поддерживается набор инструкций FMA
|
CX16
|
ECX[13]
|
Поддерживается инструкция CMPXCHG16B
|
ETPRD
|
ECX[14]
|
MISC_ENABLE.ETPRD
|
PDCM
|
ECX[15]
|
Performance Debug Capability MSR
|
DCA
|
ECX[18]
|
Direct Cache Access (that is, the ability to prefetch data from MMIO)
|
SSE4.1
|
ECX[19]
|
Поддерживается набор инструкций технологии SSE4.1
|
SSE4.2
|
ECX[20]
|
Поддерживается набор инструкций технологии SSE4.2
|
x2APIC
|
ECX[21]
|
Расширение локального APIC, 32-битный ID, регистры APIC доступны как MSR
|
MOVBE
|
ECX[22]
|
Поддерживается инструкция MOVBE
|
POPCNT
|
ECX[23]
|
Поддерживается инструкция POPCNT
|
AES
|
ECX[25]
|
Поддерживается аппаратное ускорение для алгоритма шифрования AES
|
XSAVE
|
ECX[26]
|
Расширенная поддержка полного или частичного сохранения/восстановления расширенных контекстов
|
OSXSAVE
|
ECX[27]
|
Флаг, указывающий приложению, что операционная система способна сохранять/восстанавливать расширенные контексты (регистры XMM и т.п)
|
AVX
|
ECX[28]
|
Поддерживается набор векторных инструкций AVX и кодирование с помощью префикса VEX
|
Дополнительный набор расширений («от AMD»)
Расширение
|
Флаг CPUID[1]
|
Описание
|
SYSCALL
|
EDX[11]
|
Поддерживаются инструкции SYSCALL и SYSRET
|
FCMOV[англ.]
|
EDX[16]
|
Поддерживаются инструкции условной пересылки данных с плавающей точкой (FPU)[2].
|
MP
|
EDX[19]
|
Поддерживаются многопроцессорные конфигурации
|
NX
|
EDX[20]
|
Поддерживается атрибут страницы, запрещающий исполнение программного кода.
|
MMX+
|
EDX[22]
|
Поддерживаются расширения технологии MMX от AMD
|
MMX+[3]
|
EDX[24]
|
Поддерживаются расширения технологии MMX от Cyrix[4].
|
FFXSR
|
EDX[25]
|
Поддерживается быстрое сохранение/восстановление расширенных контекстов
|
PG1G
|
EDX[26]
|
Гигантские страницы (1GiB)
|
TSCP
|
EDX[27]
|
Улучшенная поддержка встроенного счетчика времени
|
LM
|
EDX[29]
|
Длинный режим
|
3DNOW+
|
EDX[30]
|
Поддерживается расширение набора инструкций технологии 3DNow!
|
3DNOW
|
EDX[31]
|
Поддерживается набор инструкций технологии 3DNow!
|
AHF64
|
ECX[0]
|
Инструкции LAHF/SAHF доступны из 64-битного режима
|
CMP
|
ECX[1]
|
HTT=1 indicates HTT (0) or CMP (1)
|
SVM
|
ECX[2]
|
Поддерживается технология виртуализации AMD-V (Pacifica)
|
EAS
|
ECX[3]
|
Поддерживается расширение APIC (APIC_VER.EAS, EXT_APIC_FEAT, и т.д.)
|
CR8D
|
ECX[4]
|
Регистр CR8 доступен из наследственного режима
|
LZCNT
|
ECX[5]
|
Поддерживается инструкция LZCNT
|
SSE4A
|
ECX[6]
|
Поддерживается набор инструкций технологии SSE4A
|
MSSE
|
ECX[7]
|
Допустимо отсутствие выравнивания в SSE
|
3DNow!
|
ECX[8]
|
Поддерживается инструкция PREFETCH/PREFETCHHW
|
OSVW
|
ECX[9]
|
OS-visible workaround
|
IBS
|
ECX[10]
|
instruction based sampling
|
SKINIT
|
ECX[12]
|
Поддерживается технология управления доверием в AMD-V
|
WDT
|
ECX[13]
|
Поддерживается встроенный сторожевой таймер
|
SHA[англ.]
|
|
Поддерживается аппаратное ускорение для алгоритма шифрования SHA
|
Примечания
- ↑ Некоторые флаги аналогичны флагам расширений из стандартного набора, они здесь не упомянуты.
- ↑ На процессорах K7 флаг свидетельствует о наличии расширения PAT из стандартного набора
- ↑ От Cyrix
- ↑ На не-Cyrix процессорах флаг свидетельствует о наличии расширения FXSR из стандартного набора
Ссылки