Расширения архитектуры 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 | 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, 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 | |