10.1.3. Регистры управления процессором

Пять 32-битных регистров CRO - CR4 управляют функционированием про­цессора и работой отдельных его внутренних блоков.

CRO: флаги управления системой

бит 31: PG - включает и выключает режим страничной адресации , бит 30: CD - запрещает заполнение кэша. При этом чтение из кэша все равно будет происходить

бит 29: NW - запрещает сквозную запись во внутренний кэш - данные, запи­сываемые в кэш, не появляются на внешних выводах процессора

бит 18: AM - разрешает флагу АС включать режим, в котором невыровненные обращения к памяти на уровне привилегий 3 вызывают исключение #АС

бит 16: WP - запрещает запись в страницы, помеченные как «только для чте­ния» на всех уровнях привилегий (если WP = 0, защита распространя­ется лишь на уровень 3). Этот бит предназначен для реализации мето­да копирования процесса, популярного в UNIX, в котором вся память нового процесса сначала полностью совпадает со старым, а затем, при попытке записи, создается копия страницы, к которой происходит

обращение

бит 5: NE - включает режим, в котором ошибки FPU вызывают исключение #MF,aHeIRQ13

бит 4: ЕТ - использовался только на 80386DX и указывал, что FPU присут­ствует

бит 3: TS - устанавливается процессором после переключения задачи. Если затем выполнить любую команду FPU, произойдет исключение #NM, обработчик которого может сохранить/восстановить состояние FPU, очистить этот бит командой CLTS и продолжить программу

бит 2: ЕМ - эмуляция сопроцессора. Каждая команда FPU вызывает исклю­чение #NM

бит 1: МР - управляет тем, как исполняется команда WAIT. Должен быть установлен для совместимости с программами, написанными для 80286 и 80386 и использующими эту команду бит 0: РЕ - если он равен    процессор находится в защищенном режиме (остальные биты зарезервированы, и программы не должны изменять их зна­чения)

CR1: зарезервирован

CR2: регистр адреса ошибки страницы

Когда происходит исключение #PF, из этого регистра можно прочитать линей­ный адрес, обращение к которому вызвало

CR3 (PDBR): регистр основной таблицы страниц

биты 31-11: 20 старших бит физического адреса начала каталога страниц, если бит РАЕ в CR4 равен нулю, или

биты 31-5: 27 старших бит физического адреса таблицы указателей на ка­талоги страниц, если бит РАЕ = 1

бит 4 (80486+): бит PCD (запрещение кэширования страниц) - этот бит зап­рещает загрузку текущей страницы в кэш-память (например, если произошло прерывание и система не хочет, чтобы обра­ботчик прерывания вытеснил основную программу из кэша)

бит 3 (80486+): бит PWT (бит сквозной записи страниц) - управляет методом

записи страниц во внешний кэш

CR4: этот регистр (появился только в процессорах Pentium) управляет новы­ми возможностями процессоров. Все эти возможности необязательно присут­ствуют, и их надо сначала проверять с помощью команды CPUID бит 9: FSR - разрешает команды быстрого сохранения/восстановления состо­яния FPU/MMX FXSAVE и FXRSTOR (Pentium II) бит 8: РМС - разрешает выполнение команды RDPMC для программ на всех уровнях привилегий (при РМС = 0 - только на уровне 0) - Pentium Pro и выше

бит 7: PGE - разрешает глобальные страницы (бит 8 атрибута страницы),

которые не удаляются из TLB при переключении задач и записи в CR3

(Pentium Pro и выше)

бит 6: МСЕ — разрешает исключение #МС

бит 5: РАЕ - включает 36-битное физическое адресное пространство -

Pentium Pro и выше

бит 4: PSE - включает режим адресации с 4-мегабайтными страницами бит 3: DE - запрещает отладочные прерывания по обращению к портам бит 2: TSD - запрещает выполнение команды RDTSC для всех программ, кро­ме программ, выполняющихся на уровне привилегий О бит 1: РУ1 - разрешает работу флага У1Б в защищенном режиме, что может позволить некоторым программам, написанным для уровня привилегий О, работать на более низких уровнях

бит 0: УМЕ - включает расширения режима У86 - разрешает работу флага для