Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Регистр управления представляет собой регистр процессора , который изменяет или контролирует общее поведение процессора или другого цифрового устройства. Общие задачи, выполняемые регистрами управления, включают управление прерываниями , переключение режима адресации , управление поисковым вызовом и управление сопроцессором .

Регистры управления в серии x86 [ править ]

CR0 [ править ]

Регистр CR0 имеет длину 32 бита на процессорах 386 и выше. На процессорах x64 в длинном режиме он (и другие регистры управления) имеет длину 64 бита. CR0 имеет различные управляющие флаги, которые изменяют базовую работу процессора.

CR1 [ править ]

Зарезервировано, ЦП выдаст исключение # UD при попытке доступа к нему.

CR2 [ править ]

Содержит значение, называемое линейным адресом ошибки страницы (PFLA). Когда происходит сбой страницы, адрес, к которому программа пыталась получить доступ, сохраняется в регистре CR2.

CR3 [ править ]

Типичное использование CR3 при трансляции адресов со страницами 4  КиБ

Используется, когда включена виртуальная адресация , следовательно, когда бит PG установлен в CR0. CR3 позволяет процессору преобразовывать линейные адреса в физические адреса, находя каталог страниц и таблицы страниц для текущей задачи. Как правило, старшие 20 бит CR3 становятся базовым регистром каталога страниц (PDBR), в котором хранится физический адрес записи каталога первой страницы. Если бит PCIDE в CR4 установлен, младшие 12 битов используются для идентификатора контекста процесса (PCID). [1]

CR4 [ править ]

Используется в защищенном режиме для управления такими операциями, как поддержка virtual-8086, включение точек останова ввода-вывода, увеличение размера страницы и исключения машинной проверки .

CR5-7 [ править ]

Зарезервировано, тот же случай, что и CR1.

Дополнительные регистры управления в серии x86-64 [ править ]

ЭФЕР [ править ]

Регистр включения расширенных функций (EFER) - это регистр для конкретной модели, добавляемый в процессор AMD K6 , чтобы разрешить включение инструкции SYSCALL / SYSRET, а затем для входа и выхода из длительного режима . Этот регистр становится архитектурным в AMD64 и принят Intel как IA32_EFER. Его номер MSR - 0xC0000080.

CR8 [ править ]

CR8 - это новый регистр, доступный в 64-битном режиме с использованием префикса REX. CR8 используется для определения приоритета внешних прерываний и называется регистром приоритета задач (TPR). [2]

Архитектура AMD64 позволяет программному обеспечению определять до 15 классов приоритета внешних прерываний. Классы приоритета пронумерованы от 1 до 15, причем класс приоритета 1 является самым низким, а класс приоритета 15 - самым высоким. CR8 использует четыре младших бита для определения приоритета задачи, а оставшиеся 60 бит зарезервированы и должны быть записаны с нулями.

Системное программное обеспечение может использовать регистр TPR, чтобы временно блокировать прерывания с низким приоритетом от прерывания задачи с высоким приоритетом. Это достигается путем загрузки TPR со значением, соответствующим прерыванию с наивысшим приоритетом, которое должно быть заблокировано. Например, загрузка TPR со значением 9 (1001b) блокирует все прерывания с классом приоритета 9 или меньше, в то же время позволяя распознавать все прерывания с классом приоритета 10 или более. Загрузка TPR с 0 разрешает все внешние прерывания. Загрузка TPR с 15 (1111b) отключает все внешние прерывания.

При сбросе TPR сбрасывается на 0.

XCR0 и XSS [ править ]

XCR0 или расширенный контрольный регистр 0 - это контрольный регистр, который используется для переключения хранения или загрузки регистров, связанных с конкретными функциями ЦП, с помощью инструкций XSAVE / XRSTOR. Он также используется с некоторыми функциями для включения или отключения способности процессора выполнять соответствующие инструкции. Доступ к нему можно получить с помощью привилегированных инструкций XSETBV и непривилегированных XGETBV. [6]

Также есть IA32_XSS MSR, который находится по адресу 0DA0h. IA32_XSS MSR управляет битами XCR0, которые считаются состоянием «супервизора» и должны быть невидимы для обычных программ. Он работает с привилегированными инструкциями XSAVES и XRSTORS, добавляя состояние супервизора к данным, с которыми они работают. Проще говоря, если состояние X87 было включено в XCR0, а состояние PT было включено в IA32_XSS, инструкция XSAVE сохраняла бы только состояние X87, в то время как привилегированный XSAVES сохранял бы состояния X87 и PT. Поскольку это MSR, к нему можно получить доступ с помощью инструкций RDMSR и WRMSR.

См. Также [ править ]

  • Реестр общего назначения
  • Регистр испытаний
  • Реестр для конкретной модели
  • Регистр отладки
  • Байт флага
  • Регистр статуса

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

  1. ^ a b Корпорация Intel (2016 г.). «4.10.1 Идентификаторы контекста процесса (PCID)». Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 (PDF) . Том 3A: Руководство по системному программированию, часть 1.
  2. ^ a b "Руководство программиста по архитектуре AMD64, том 2: Системное программирование" (PDF) . AMD . Сентябрь 2012. с. 127 и 130 . Проверено 4 августа 2017 .
  3. ^ «5-уровневый пейджинг и 5-уровневый EPT» (PDF) . Intel . Май 2017. с. 16 . Проверено 23 января 2018 .
  4. Фишер, Стивен (21 сентября 2011 г.). «Защита выполнения в режиме супервизора» (PDF) . NSA Trusted Computing Conference 2011 . National Conference Services, Inc. Архивировано из оригинального (PDF) 03.08.2016 . Проверено 4 августа 2017 .
  5. ^ Anvin, H. Peter (2012-09-21). «x86: Предотвращение доступа в режиме супервизора» . LWN.net . Проверено 4 августа 2017 .
  6. ^ «Глава 13, Управление состоянием с помощью набора функций Xsave» (PDF) . Руководство разработчика программного обеспечения для архитектур Intel (R) 64 и IA-32, том 1: Базовая архитектура . Корпорация Intel (2019) . Проверено 23 марта 2019 года .
  7. ^ https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_secure_enclave

Внешние ссылки [ править ]

  • Руководство разработчика архитектур Intel 64 и IA-32: Vol. 3А
  • Руководства разработчика программного обеспечения для архитектур Intel 64 и IA-32
  • Техническая документация: AMD64
  • Мир Вятта: взлом Pentium III (28 мая 1999 г.)