Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Юрий Владимирович самый уважаемы человек =)экза...doc
Скачиваний:
3
Добавлен:
12.09.2019
Размер:
1.41 Mб
Скачать

18. Регистры управления (Control Registers)

      Регистры управления CR0, CR1, CR2, CR3 и CR4 определяют поведение процессора и характеристики текущей задачи. Для быстрого перехода к описанию флагов используйте их обозначения на рисунке.

  

CR0 - содержит системные флаги управления, управляющие поведением и состоянием процессора.

  

CR1 - зарезервирован.

  

CR2 - содержит линейный адрес команды, вызвавшей страничное нарушение.

  

CR3 - содержит физический адрес начала каталога страниц и два флага: PCD и PWT. Этот регистр также называется PDBR (Page-Directory Base Register), он хранит 20 старших бит адреса каталога страниц (младшие подразумеваются равными 0, т.к. каталог страниц должен быть выровнен на границу страницы). Биты PCD и PWT управляют кэшированием каталога страниц во внутреннем кэше данных процессора, но не управляют TLB-кэшированием. При использовании расширения физического адреса, регистр CR3 содержит базовый адрес таблицы PDP (Page Directory Pointer).

  

CR4 - содержит набор флагов, разрешающих использование некоторых архитектурных расширений.

      Регистры управления можно прочитать или загрузить только с помощью команды MOV. В защищёном режиме работа с регистрами управления позволена только программам с нулевым уровнем привилегий.

      При загрузке значения в регистр управления, зарезервированные биты должны всегда иметь те значения, которые были получены при чтении.

      Флаги регистров управления имеют следующие функции:

PG

    Трансляция страниц (Paging), 31-й бит в CR0. Разрешает страничное преобразование, если установлен, иначе - запрещает. Когда страничное преобразование разрешено, все линейные адреса используются как физические. Флаг PG не действует, если не установлен флаг PE (0-й бит в CR0), тем не менее, установка флага PG при сброшенном PE вызывает генерацию исключения общей защиты (#GP). Подробно механизм страничного преобразования обсуждается в разделе "Управление памятью".

CD

    Отключение кэша (Cache Disable), 30-й бит в CR0. Когда флаги CD и NW сброшены, разрешено кэширование всей памяти во внутренних и внеших кэшах. Когда флаг CD установлен, кэширование ограничено (см. таблицу). Чтобы запретить процессору доступ к его кэшам, флаг CD должен быть установлен и кэши объявлены недостоверными. Дополнительно об этом см. раздел "Управление кэшами".

NW

    Отмена сквозной записи (Not Write-through), 29-й бит в CR0. Когда флаги NW и CD сброшены, обратная запись (write-back) для Pentium 4, P6 family и Pentium или сквозная запись (write-through) для Intel486 разрешена для записей, не попавших в кэш (см. таблицу о действиях флагов NW и CD).

AM

    Проверка выравнивания (Alignment Mask), 18-й бит в CR0. Когда установлен, разрешает автоматическую проверку выравнивания, иначе - запрещает. Проверка выравнивания выполняется только при следующих условиях:

флаг AM в CR0 установлен,

флаг AC в EFLAGS установлен,

CPL = 3,

процессор работает в P-Mode или V-Mode.

WP

    Защита от записи (Write Protect), 16-й бит CR0. Когда установлен, запрещает системным процедурам запись в пользовательские страницы с доступом только для чтения (когда флаг WP сброшен - разрешает).

NE

    Численная ошибка (Numeric Error), 5-й бит в CR0. Когда установлен, активизирует внутрипроцессорный механизм сообщений об ошибках x87 FPU, когда сброшен - механизм сообщений об ошибках x87 FPU PC-типа. При сброшенном флаге NE, немаскируемая ошибка x87 FPU приводит к генерации прерывания сразу же после следующей команды x87 FPU или команд WAIT/FWAIT.

ET

    Тип расширения (Extension Type), 4-й бит в CR0. Зарезервирован в процессорах Pentium 4, семейства P6 и Pentium и для них всегда установлен. В процессорах Intel386 и Intel486 этот флаг, если установлен, определяет наличие поддержки команд процессора Intel 387 DX (математического сопроцессора).

TS

    Переключение задач (Task Switched), 3-й бит в CR0. Устанавливается процессором каждый раз при переключении задач; сбрасывается только программно. Процессор проверяет, установлен ли этот флаг, при выполнении команд модулей x87 FPU, MMX, SSE и SSE2. Использование этого флага позволяет не менять текущий контекст модулей x87 FPU, MMX, SSE и SSE2, пока к ним не произойдёт обращение.

  

Если флаг TS установлен и флаг EM сброшен, то при попытке выполнения команд модулей x87 FPU, MMX, SSE и SSE2 будет генерироваться исключение неприсутствующего устройства (#NM). Однако, команды PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI и CLFLUSH могут выполняться.

  

Если флаг TS установлен, а флаги EM и MP сброшены, то исключение неприсутствующего устройства (#NM) не будет возникать для команды WAIT/FWAIT.

  

Если флаг EM установлен, то установка флага TS не влияет на выполнение команд модулей x87 FPU, MMX, SSE и SSE2.