Расширения архитектуры x86 (x86 extended features) — инженерные решения, разрабатываемые различными производителями микропроцессоров архитектуры x86 для собственных процессоров, которые, зачастую, присутствуют в одних моделях и отсутствуют в других. Разработчики программного обеспечения, прежде чем использовать их в собственных программах, должны выполнить специальную команду CPUID, которая сообщает о наличии тех или иных расширений. Если расширение не поддерживается, программа должна либо завершить работу, либо использовать другие алгоритмы, не использующие расширений.

Иногда расширения становятся часто используемыми в популярных программах, тогда их начинают включать в свои процессоры практически все производители.

Наиболее известные из расширений MMX, SSE, 3DNow!, Hyper-threading. В основном, новые расширения разрабатываются фирмой Intel и затем подхватываются другими производителями. Но иногда бывает так, что сама Intel включает в свои процессоры расширения, созданные иными фирмами. К примеру, так было с архитектурой x86-64, впервые разработанной компанией AMD, а уже впоследствии реализованная Intel как Intel64/EM64T.

Стандартный набор расширений («от Intel»)

CPUID, EAX=00000001H

Расширение Флаг CPUID Описание FPUEDXВстроенное устройство с плавающей точкой VMEEDXРасширение режима V86 DEEDXУлучшенные средства отладки PSEEDXБольшие страницы (4MiB/2MiB) TSCEDXВстроенный счетчик времени (машинных тактов) MSREDXМоделезависимые регистры PAEEDXРасширение физического адреса MCEEDXГенерация исключения машинного контроля CX8EDXПоддерживается инструкция CMPXCHG8B APICEDXВстроенный локальный контроллер прерываний SEPEDXПоддерживаются инструкции SYSENTER и SYSEXIT MTRREDXИмеется возможность задавать тип кэша для определённых областей памяти в специальных регистрах PGEEDXПоддерживается флаг глобальных страниц (не сбрасываемых в TLB при переключении контекстов) EDXПоддерживаются средства машинного контроля CMOVEDXПоддерживаются инструкции условной пересылки данных EDXПоддерживаются расширенные атрибуты кэширования для отдельных страниц PSE36EDXБольшие страницы (4MiB) по физическим адресам выше 4GiB PSNEDXИмеется возможность чтения серийного номера процессора CLFLEDXПоддерживается инструкция CLFLUSH DTESEDXDebug Trace and EMON Store MSRs ACPIEDXИмеются средства измерения температуры процессорного ядра MMXEDXПоддерживается набор инструкций технологии Intel MMX FXSREDXЕсть возможность сохранять/восстанавливать расширенный контекст SSEEDXПоддерживается набор инструкций технологии SSE SSE2EDXПоддерживается набор инструкций технологии SSE2 SSEDXSelf-snoop HTTEDXПоддерживается технология HyperThreading. TM1EDXПоддерживаются расширенные средства контроля температуры с генерацией прерывания IA-64EDXПрограмма запущена в режиме эмуляции на процессоре Itanium PBEEDXPending break event SSE3ECXПоддерживается набор инструкций технологии SSE3 PCLMULECXПоддерживается инструкция PCLMUL DTES64ECX 64-bit Debug Trace and EMON Store MSRs MONECXПоддерживаются инструкции MONITOR/MWAIT DSCPLECXCPL-qualified Debug Store VMXECXПоддерживается технология виртуализации Intel VT (Vanderpool) SMXECXПоддерживается технология управления доверием Intel TXT (LaGrande) ESTECXПоддерживается Enhanced SpeedStep Technology TM2EDXПоддерживаются расширенные средства контроля температуры с генерацией прерывания и регистр THERM2_CONTROL SSSE3ECXПоддерживается набор инструкций технологии SSSE3 CIDECXcontext ID: the L1 data cache can be set to adaptive or shared mode FMAECXПоддерживается набор инструкций FMA CX16ECXПоддерживается инструкция CMPXCHG16B ETPRDECXMISC_ENABLE.ETPRD PDCMECXPerformance Debug Capability MSR DCAECXDirect Cache Access (that is, the ability to prefetch data from MMIO) SSE4.1ECXПоддерживается набор инструкций технологии SSE4.1 SSE4.2ECXПоддерживается набор инструкций технологии SSE4.2 x2APICECXРасширение локального APIC, 32-битный ID, регистры APIC доступны как MSR MOVBEECXПоддерживается инструкция MOVBE POPCNTECXПоддерживается инструкция POPCNT AESECXПоддерживается аппаратное ускорение для алгоритма шифрования AES XSAVEECXРасширенная поддержка полного или частичного сохранения/восстановления расширенных контекстов OSXSAVEECXФлаг, указывающий приложению, что операционная система способна сохранять/восстанавливать расширенные контексты (регистры XMM и т.п) AVXECXПоддерживается набор векторных инструкций AVX и кодирование с помощью префикса VEX

Дополнительный набор расширений («от AMD»)

CPUID, EAX=80000001H

Расширение Флаг CPUID Некоторые флаги аналогичны флагам расширений из стандартного набора, они здесь не упомянуты. Описание SYSCALLEDXПоддерживаются инструкции SYSCALL и SYSRET EDXПоддерживаются инструкции условной пересылки данных с плавающей точкой (FPU)На процессорах K7 флаг свидетельствует о наличии расширения PAT из стандартного набора. MPEDXПоддерживаются многопроцессорные конфигурации NXEDXПоддерживается атрибут страницы, запрещающий исполнение программного кода. MMX+EDXПоддерживаются расширения технологии MMX от AMD MMX+От CyrixEDXПоддерживаются расширения технологии MMX от CyrixНа не-Cyrix процессорах флаг свидетельствует о наличии расширения FXSR из стандартного набора. FFXSREDXПоддерживается быстрое сохранение/восстановление расширенных контекстов PG1GEDXГигантские страницы (1GiB) TSCPEDXУлучшенная поддержка встроенного счетчика времени LMEDXДлинный режим 3DNOW+EDXПоддерживается расширение набора инструкций технологии 3DNow! 3DNOWEDXПоддерживается набор инструкций технологии 3DNow! AHF64ECXИнструкции LAHF/SAHF доступны из 64-битного режима CMPECXHTT=1 indicates HTT (0) or CMP (1) SVMECXПоддерживается технология виртуализации AMD-V (Pacifica) EASECXПоддерживается расширение APIC (APIC_VER.EAS, EXT_APIC_FEAT, и т.д.) CR8DECXРегистр CR8 доступен из наследственного режима LZCNTECXПоддерживается инструкция LZCNT SSE4AECXПоддерживается набор инструкций технологии SSE4A MSSEECXДопустимо отсутствие выравнивания в SSE 3DNow!ECXПоддерживается инструкция PREFETCH/PREFETCHHW OSVWECXOS-visible workaround IBSECXinstruction based sampling SKINITECXПоддерживается технология управления доверием в AMD-V WDTECXПоддерживается встроенный сторожевой таймерПоддерживается аппаратное ускорение для алгоритма шифрования SHA

Примечания

Ссылки http://asm.inightmare.org/opcodelst/index.php?op=CPUID

*