Расширения архитектуры 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[en] EDX[14] Поддерживаются средства машинного контроля
CMOV EDX[15] Поддерживаются инструкции условной пересылки данных
PAT[en] 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[en] 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[en] Поддерживается аппаратное ускорение для алгоритма шифрования SHA

Примечания править

  1. Некоторые флаги аналогичны флагам расширений из стандартного набора, они здесь не упомянуты.
  2. На процессорах K7 флаг свидетельствует о наличии расширения PAT из стандартного набора
  3. От Cyrix
  4. На не-Cyrix процессорах флаг свидетельствует о наличии расширения FXSR из стандартного набора

Ссылки править