stringtranslate.com

Контрольный регистр

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

История

Ранние ЦП не имели выделенных регистров управления и полагались на ограниченный набор внутренних сигналов и флагов. [1] Когда IBM разработала страничную версию [примечание 1] System /360 , они добавили 16 регистров управления [2] [3] в конструкцию того, что стало 360/67 . IBM не предоставляла регистры управления на других моделях S/360, но сделала их стандартной частью [4] System /370 , хотя и с другими назначениями регистров и битов. По мере того, как IBM добавляла новые функции в архитектуру, например, DAS , S/370-XA , S/370-ESA , ESA/390 , они добавляли дополнительные поля в регистры управления. С z/Architecture IBM удвоила размер регистра управления до 64 бит.

Регистры управления в IBM 360/67

В 360/67 регистры CR0 и CR2 используются для трансляции адресов, регистры CR 4-6 содержат различные флаги, включая маски прерываний и расширенный режим управления [3] , а регистры CR 8-14 [5] содержат настройки переключателей на блоке конфигурации 2167.

М67 CR0

Регистр управления 0 содержит адрес таблицы сегментов для динамической трансляции адресов.

М67 CR2

Регистр управления 2 — это регистр адреса исключения перемещения.

М67 CR4

CR4 — это расширенный регистр маски для каналов 0-31. Каждый бит — это маска канала 1/0 для соответствующего канала.

М67 CR5

CR5 зарезервирован для расширенного регистра маски для каналов 32–63. Каждый бит — это маска канала 1/0 для соответствующего канала.

М67 CR6

CR6 содержит два флага режима и расширения битов маски PSW.

М67 CR8

Регистр управления 8 содержит назначения блоков памяти процессора 1–4 центральным процессорам (ЦП) и контроллерам каналов (КК).

М67 CR9

Регистр управления 9 содержит назначения блоков памяти процессора 5–8 центральным процессорам (ЦП) и контроллерам каналов (КК).

М67 CR10

Регистр управления 10 содержит коды назначения адресов памяти процессора.

М67 CR11

Регистр управления 11 содержит назначения контроллера канала (CC).

М67 CR12

CR12 содержит разделение блока управления вводом/выводом.

М67 CR13

CR13 содержит разделение блока управления вводом/выводом.

М67 CR14

CR14 содержит индикаторы.

Регистры управления в IBM S/390

Регистры управления ESA/390 [6] на IBM S/390 являются эволюционным усовершенствованием регистров управления на более ранних процессорах ESA/370 , [7] S/370-XA [8] и S/370 [9] . Подробности о том, какие поля зависят от конкретных функций, см. в разделе Принципы работы. [10]

Регистры управления в IBM z/Architecture

Регистры управления z/Architecture [11] являются эволюционным усовершенствованием регистров управления более раннего ESA/390 на процессорах IBM S/390 . Подробности о том, какие поля зависят от конкретных функций, см. в Principles of Operation. [12] Поскольку z/Architecture расширяет регистры управления с 32 бит до 64, нумерация бит отличается от нумерации в ESA/390.

Регистры управления в Intelx86ряд

CR0

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

CR1

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

CR2

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

CR3

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

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

CR4

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

  1. ^ В ранних черновиках спецификации Intel SGX бит 15 CR4 назывался «CR4.SEE» и описывался как бит включения инструкций анклава SGX. [17] В более поздних версиях этой спецификации ссылки на этот бит были удалены. [18]

CR5–7

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

Дополнительные регистры управления в Intelx86-64ряд

ЭФЕР

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

CR8

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

Архитектура 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, или Extended Control Register 0, — это регистр управления, который используется для переключения сохранения или загрузки регистров, связанных с определенными функциями ЦП, с использованием инструкций XSAVE/XRSTOR. Он также используется с некоторыми функциями для включения или выключения способности процессора выполнять соответствующие инструкции. Его можно изменить с помощью привилегированной инструкции XSETBV, прочитанной с помощью непривилегированной инструкции XGETBV. [21]

  1. ^ Нижние 128 бит всех регистров YMM хранятся в состоянии SSE.
  2. ^ Нижние 256 бит регистров ZMM от ZMM0 до ZMM15 хранятся в состояниях SSE и AVX.
  3. ^ Несмотря на то, что Intel APX указан через бит 19 XCR0, на самом деле он записан через XSAVE (в несжатой форме) в неиспользуемом пространстве размером 128 байт, оставшемся после Intel MPX.

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

Смотрите также

Примечания

  1. ^ IBM никогда не поставляла 360/64 или 360/66, только 360/67.

Ссылки

Руководства IBM
M67предварительный
System/360 Model 67 — Система разделения времени — Предварительное техническое резюме (PDF) . Systems Reference Library (Первое издание). IBM . C20-1647-0 . Получено 8 мая 2023 г. .
М67
IBM System/360 Model 67 — Функциональные характеристики (PDF) . Systems Reference Library (Третье изд.). IBM . Февраль 1972 г. A27-2719-0 . Получено 8 мая 2023 г. .
С/370
IBM System/370 — Принципы работы (PDF) (Одиннадцатое изд.). IBM . Сентябрь 1987 г. GA22-7000-10 . Получено 8 мая 2023 г.
S/370-XA
IBM System/370 Extended Architecture Principles of Operation (PDF) (Второе издание). IBM . Январь 1987 г. SA22-7085-1 . Получено 8 мая 2023 г.
S/370-ESA
IBM Enterprise Systems Architecture/370 Principles of Operation (PDF) (Первое издание). IBM . Август 1988 г. SA22-7200-0 . Получено 8 мая 2023 г.
S/390-ESA
IBM Enterprise Systems Architecture/390 Principles of Operation (PDF) (Девятое изд.). IBM . Июнь 2003 г. SA22-7201-08 . Получено 8 мая 2023 г.
z/Архитектура
z/Architecture - Principles of Operation (PDF) (четырнадцатое изд.). IBM . Май 2022 г. SA22-7832-13 . Получено 8 мая 2023 г. .
  1. ^ "lab4.pdf" (PDF) . Uppsala University . 17 марта 2024 г. Архивировано (PDF) из оригинала 17 января 2021 г. . Получено 16 марта 2024 г. .
  2. ^ M67prelim, стр. 25-26, Регистры управления.
  3. ^ ab M67, стр. 16, Таблица 4. Регистры управления.
  4. S/370, стр. 4-8-4-11, Регистры управления.
  5. M67, стр. 31–35, Назначение битов регистра управления для обнаружения.
  6. ^ S/390-ESA.
  7. ^ S/370-ESA.
  8. S/370-XA.
  9. С/370.
  10. S/390-ESA, стр. 4-6-4-10, Регистры управления.
  11. ^ z/Архитектура.
  12. ^ z/Architecture, стр. 4-9–4-12, Регистры управления.
  13. ^ ab Intel Corporation (2016). "4.10.1 Идентификаторы контекста процесса (PCID)". Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 (PDF) . Том 3A: Руководство по системному программированию, часть 1.
  14. ^ ab "Руководство программиста по архитектуре AMD64, том 2: системное программирование" (PDF) . AMD . Сентябрь 2012 г. стр. 127 и 130 . Получено 04.08.2017 .
  15. ^ "5-уровневый пейджинг и 5-уровневый EPT" (PDF) . Intel . Май 2017. стр. 16 . Получено 2018-01-23 .
  16. ^ abc "Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32" (PDF) . Корпорация Intel®. 2021-06-28 . Получено 2021-09-21 .
  17. ^ Intel, Справочник по программированию расширений Software Guard, ссылка № 329298-001, сентябрь 2013 г. — главы 1.7 и 6.5.2 описывают CR4.SEE.
  18. ^ Intel, Справочник по программированию расширений Software Guard, ссылка № 329298-002, октябрь 2014 г. — не упоминает CR4.SEE.
  19. ^ Фишер, Стивен (2011-09-21). "Защита выполнения в режиме супервизора" (PDF) . Конференция NSA Trusted Computing 2011 . National Conference Services, Inc. Архивировано из оригинала (PDF) 2016-08-03 . Получено 2017-08-04 .
  20. ^ Anvin, H. Peter (2012-09-21). "x86: Supervisor Mode Access Prevention". LWN.net . Получено 2017-08-04 .
  21. ^ "Глава 13, Управление состоянием с помощью набора функций Xsave" (PDF) . Руководство разработчика программного обеспечения для архитектур Intel(R) 64 и IA-32, том 1: Базовая архитектура . Корпорация Intel (2019) . Получено 23 марта 2019 г. .

Внешние ссылки