Расширения архитектуры x86
Расширения архитектуры x86 (x86 extended features) — инженерные решения, разрабатываемые различными производителями микропроцессоров архитектуры x86 для собственных процессоров, которые, зачастую, присутствуют в одних моделях и отсутствуют в других. Разработчики программного обеспечения, прежде чем использовать их в собственных программах, должны выполнить специальную команду CPUID, которая сообщает о наличии тех или иных расширений. Если расширение не поддерживается, программа должна либо завершить работу, либо использовать другие алгоритмы, не использующие расширений.
Иногда расширения становятся часто используемыми в популярных программах, тогда их начинают включать в свои процессоры практически все производители.
Наиболее известные из расширений MMX, SSE, 3DNow!, Hyper-threading. В основном, новые расширения разрабатываются фирмой Intel и затем подхватываются другими производителями. Но иногда бывает так, что сама Intel включает в свои процессоры расширения, созданные иными фирмами. К примеру, так было с архитектурой x86-64, впервые разработанной компанией AMD, а уже впоследствии реализованная Intel как Intel64/EM64T.
Стандартный набор расширений («от Intel»)
- CPUID, EAX=00000001H
Расширение | Флаг 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 | EDX[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, EAX=80000001H
Расширение | Флаг 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 из стандартного набора