Управляющий регистр CR4 впервые появился в микропроцессорах Pentium (?). Он содержит флаги, управляющие различными расширениями базовых возможностей процессора и имеет следующий формат:
Назначение его разрядов описано ниже.
VME | Расширения режима виртуального процессора 8086 (бит 0). Когда установлен, задействует расширения режима виртуального процессора 8086, позволяющие обрабатывать возникающие прерывания прямо в программе, исполняющейся в этом режиме. Подробнее об этом сказано в разделе Обработка прерываний в режиме виртуального процессора 8086. |
PVI | Виртуальные прерывания защищённого режима (бит 1). Когда установлен, разрешает аппаратную поддержку флага виртуального прерывания VIF, находящегося в регистре флагов. Подробнее об этом сказано в разделе Обработка прерываний в режиме виртуального процессора 8086. |
TSD | Запрет отметки времени (бит 2). Когда установлен, позволяет использовать инструкцию RDTSC только программам, выполняющимся на нулевом текущем уровне привилегий. Когда сброшен, эту инструкцию может использовать любая программа. |
DE | Отладочные расширения (бит 3). Когда установлен, обращения к отладочным регистрам DR4 и DR5 вызывают генерацию прерывания по недопустимому коду операции (#UD, вектор 6). Подробнее это описано в разделе Отладочные возможности. |
PSE | Расширение размера страниц (бит 4). Когда установлен, разрешает использование страниц размером 4 Мбайта, когда сброшен — только 4 Кбайта. |
PAE | Расширение физических адресов (бит 5). Когда установлен, разрешает страничному механизму использовать 36-разрядные физические адреса; когда сброшен, ограничивает физические адреса длиной в 32 бита. Должен обязательно устанавливаться для использования режима IA-32e. |
MCE | Разрешение машинного контроля (бит 6). Когда установлен, разрешает возникновение прерываний от схем контроля работоспособности процессора. Подробнее это описано в разделе Средства машинного контроля. |
PGE | Разрешение глобальных страниц (бит 7). Когда установлен, страницы виртуальной памяти могут быть объявлены глобальными. Информация о таких страницах не удаляется из буферов быстрой переадресации (TLB) при перезагрузке управляющего регистра CR3. Перед установкой этого флага надо обязательно включить страничный механизм установкой бита PG управляющего регистра CR0. |
PCE | Разрешение счётчика мониторинга производительности (бит 8). Когда установлен, разрешает использовать инструкцию RDPMC любым программам; когда сброшен, ею могут пользоваться только программы, работающие на нулевом текущем уровне привилегий. |
OSFXSR | Поддержка инструкций FXSAVE и FXRSTOR (бит 9). Когда установлен, показывает, что ОС поддерживает использование инструкций FXSAVE и FXRSTOR. При этом разрешается сохранение и восстановление регистров XMM и MXCSR вместе с содержимым регистров сопроцессора и MMX, а также выполнение команд SSE, за исключением PAUSE, PREFETCHn, SFENCE, LFENCE, MFENCE, MOVNTI и CLFLUSH (эти команды выполняются всегда независимо от состояния данного разряда).
Если этот флаг сброшен, команды FXSAVE и FXRSTOR будут сохранять и восстанавливать содержимое регистров сопроцессора и MMX, но не регистров XMM и MXCSR. Кроме того, процессор будет генерировать исключение по недопустимой операции (#UD, вектор 6) при попытке выполнить команды SSE, за исключением PAUSE, PREFETCHn, SFENCE, LFENCE, MFENCE, MOVNTI и CLFLUSH. |
OSXMMEXCPT | Поддержка незамаскированных исключений вещественной арифметики SIMD (бит 10). Когда установлен, указывает, что ОС поддерживает обработку незамаскированных исключений вещественной арифметики SIMD с помощью специального обработчика (#XF, вектор 19). Эти исключения генерируются только командами групповой обработки данных из наборов SSE. Если он сброшен, при обнаружении такого исключения происходит прерывание по недопустимому коду операции (#UD, вектор 6). |
VMXE | Разрешение виртуализации (бит 13). Когда установлен, включает расширения, предназначенные для поддержки виртуальных машин. |
SMXE | Разрешение средств повышения безопасности (бит 14). Когда установлен, разрешает использование средств повышения безопасности. |