Бақылау регистрі - Control register

A бақылау тізілімі Бұл процессор тіркелімі а-ның жалпы мінез-құлқын өзгертетін немесе басқаратын Орталық Есептеуіш Бөлім немесе басқа сандық құрылғы. Бақылау регистрлері орындайтын жалпы есептерге мыналар жатады үзу басқару, ауыстыру мекен-жай режимі, пейджинг басқару және сопроцессор бақылау.

Бақылау регистрлері x86 серия

CR0

CR0 регистрінің ұзындығы 32 бит 386 және жоғары процессорлар. Қосулы x64 процессорлар ұзақ режим, оның (және басқа басқару регистрлерінің) ұзындығы 64 бит. CR0 процессордың негізгі жұмысын өзгертетін әр түрлі басқару жалаушаларына ие.

Бит Аты-жөні Толық аты Сипаттама
0 PE Қорғалған режим қосылады Егер 1 болса, жүйе кіреді қорғалған режим, әйтпесе жүйе кіреді нақты режим
1 МП Қосымша процессорды бақылау WAIT / FWAIT нұсқауларының CR0-да TS жалаушасымен өзара әрекеттесуін басқарады
2 EM Еліктеу Егер орнатылған болса, x87 жоқ өзгермелі нүкте бірлігі бар, егер анық болса, x87 FPU бар
3 TS Тапсырма ауыстырылды X87 нұсқасы қолданылғаннан кейін ғана тапсырма ауыстырғышында x87 тапсырмасының контекстін сақтауға мүмкіндік береді
4 ET Кеңейту түрі 386-да сыртқы математикалық процессордың an 80287 немесе 80387
5 NE Сандық қате Ішкі күйді қосыңыз x87 орнатылған кезде өзгермелі нүкте қателігі туралы есеп беру, әйтпесе ДК стиліндегі x87 қателерін анықтауға мүмкіндік береді
16 WP Қорғаңыз Орнатылған кезде, артықшылық деңгейі 0 болғанда, CPU тек оқуға болатын беттерге жаза алмайды
18 AM Туралау маскасы Түзетуді тексеру қосулы, егер AM орнатылған болса, айнымалы ток жалаушасы (in.) ҚОЛДАНБАЛАР тіркелу) орнатылған, ал артықшылық деңгейі - 3
29 NW Жазбаңыз Ғаламдық деңгейде қосады / ажыратады жазбаша кэштеу
30 CD Кэш өшіру Жады кэшін ғаламдық деңгейде қосады / ажыратады
31 PG Пейджинг Егер 1 болса, қосыңыз пейджинг және қолданыңыз § CR3 тіркеліңіз, әйтпесе пейджингті өшіріңіз.

CR1

Резервтелген, CPU # шығарадыУД оған қол жеткізуге тырысу кезінде ерекшелік.

CR2

Беттің қателіктері (PFLA) деп аталатын мән бар. Беттің ақаулығы орын алған кезде, бағдарлама кіруге тырысқан мекен-жай CR2 регистрінде сақталады.

CR3

CR3-ті мекен-жай аудармасында 4 қолдануKiB беттер

Қашан қолданылады виртуалды мекен-жай PG биті CR0-ге орнатылған кезде қосылады. CR3 процессорға сызықтық адрестерді физикалық адрестерге парақтың каталогын және орналастыру арқылы аударуға мүмкіндік береді парақ кестелері ағымдағы тапсырма үшін. Әдетте, CR3 жоғарғы 20 биті айналады бет каталогының негізгі регистрі (PDBR), ол каталогтың бірінші парағына физикалық адресті сақтайды. Егер PCIDE кірсе CR4 орнатылған, ең төменгі 12 бит үшін қолданылады процесс-контекст идентификаторы (PCID).[1]

CR4

Қорғалған режимде виртуалды-8086 қолдау сияқты операцияларды басқару үшін қолданылады, енгізу-шығару тоқтату нүктелерін қосады, бет өлшемін кеңейту және машинамен тексеруге арналған ерекшеліктер.

Бит Аты-жөні Толық аты Сипаттама
0 VME Виртуалды 8086 режимінің кеңейтімдері Орнатылған болса, виртуалды-8086 режимінде виртуалды үзіліс жалаушасын (VIF) қолдауды қосады.
1 PVI Қорғалған режимдегі виртуалды үзілістер Орнатылған болса, қорғалған режимде виртуалды үзіліс жалаушасын (VIF) қолдауға мүмкіндік береді.
2 TSD Уақыт белгісі Өшіру Орнатылған болса, RDTSC нұсқау тек болған кезде ғана орындалуы мүмкін қоңырау 0, әйтпесе RDTSC кез келген артықшылық деңгейінде қолданыла алады.
3 DE Жөндеу Кеңейтімдер Орнатылған болса, түзету регистріне негізделген үзілістерді қосады Енгізу / шығару ғарышқа қол жетімділік.
4 PSE Бет өлшемінің кеңейтілуі Егер орнатылмаған болса, парақтың өлшемі 4 KiB құрайды, әйтпесе парақтың өлшемі 4 MiB дейін ұлғайтылады

Егер PAE қосылса немесе процессор x86-64 болса ұзақ режим бұл бит еленбейді.[2]

5 PAE Физикалық мекенжайды кеңейту Орнатылған болса, 32-биттік виртуалды мекен-жайларды кеңейтілген 36-биттік физикалық адрестерге аудару үшін бет кестесінің орналасуын өзгертеді.
6 MCE Машинаны тексеру ерекшеліктері Егер орнатылған болса, машиналық тексеруде үзілістердің пайда болуына мүмкіндік береді.
7 PGE Бет жаһандық қосылған Орнатылған болса, мекенжай аудармалары (PDE немесе PTE жазбалары) мекенжай кеңістігі арасында бөлісілуі мүмкін.
8 PCE Өнімділікті бақылау есептегішін қосыңыз Егер орнатылған болса, RDPMC кез-келген артықшылық деңгейінде орындалуы мүмкін, әйтпесе RDPMC тек 0 қоңырауында қолданыла алады.
9 OSFXSR FXSAVE және FXRSTOR нұсқауларына арналған операциялық жүйені қолдау Егер орнатылса, қосады Ағымдағы SIMD кеңейтімдері (SSE) нұсқаулары және жылдам FPU сақтау және қалпына келтіру.
10 OSXMMEXCPT Қапталған SIMD өзгермелі нүктелік ерекшеліктеріне арналған операциялық жүйені қолдау Егер орнатылса, маскаланбаған SSE ерекшеліктерін қосады.
11 UMIP Пайдаланушы режимінің нұсқаулығының алдын-алу Егер орнатылған болса, CPL> 0 болса, SGDT, SIDT, SLDT, SMSW және STR нұсқауларын орындау мүмкін емес.[1]
12 LA57 (көрсетілмеген) Егер орнатылса, 5 деңгейлі пейджингті қосады.[3]
13 VMXE Виртуалды машиналық кеңейтімдерді қосу қараңыз Intel VT-x x86 виртуалдандыру.
14 SMXE Қауіпсіз режим кеңейтімдерін қосу қараңыз Сенімді орындау технологиясы (ЖАЗУ)
16 FSGSBASE RDFSBASE, RDGSBASE, WRFSBASE және WRGSBASE нұсқаулықтарын қосады.
17 PCIDE PCID қосыңыз Орнатылған болса, процесс-контекст идентификаторларын (PCID) қосады.
18 OSXSAVE XSAVE және процессордың кеңейтілген күйлері қосылады
20 ШОБ[4] Супервайзер режимінің орындалуын қорғауды қосыңыз Орнатылған болса, кодтың жоғарырақ орындалуы сақина а жасайды Кінә.
21 SMAP Супервайзер режиміне кірудің алдын алу Қосу Егер орнатылған болса, жоғары сақинадағы деректерге қол жетімділік а жасайды Кінә.[5]
22 PKE Қорғаныс кілтін қосыңыз Intel 64 және IA-32 Architectures Software Developer нұсқаулығын қараңыз.

CR5-7

Резервтелген, CR1 сияқты жағдай.

Қосымша бақылау тіркелімдері x86-64 серия

EFER

Кеңейтілген мүмкіндіктерді қосу регистрі (EFER) - бұл нақты модель қосылды AMD K6 мүмкіндік беретін процессор SYSCALL / SYSRET нұсқаулығы, кейінірек кіру және шығу үшін ұзақ режим. Бұл тіркелім архитектуралық болады AMD64 және қабылдаған Intel IA32_EFER ретінде. Оның MSR нөмірі - 0xC0000080.

Бит Мақсаты
0 SCE (жүйелік қоңырау кеңейтімдері)
1 DPE (тек AMD K6: деректерді алдын ала алуды қосу)
2 SEWBED (тек AMD K6: алыпсатарлық EWBE # өшіру)
3 GEWBED (тек AMD K6: Global EWBE # өшіру)
4 L2D (тек AMD K6: L2 кэшін өшіру)
5-7 Сақталған, нөл ретінде оқыңыз
8 LME (ұзақ режимді қосу)
9 Резервтелген
10 LMA (ұзақ режим белсенді)
11 NXE (Орындалмайды Қосу)
12 SVME (Қауіпсіз виртуалды машина Қосу)
13 LMSLE (ұзақ режим сегментінің шегі қосылады)
14 FFXSR (жылдам FXSAVE / FXRSTOR)
15 TCE (Аударма кэшін кеңейту)
16–63 Резервтелген

CR8

CR8 - бұл REX префиксі арқылы 64 биттік режимде қол жетімді жаңа регистр. CR8 сыртқыға басымдық беру үшін қолданылады үзілістер және бірінші кезектегі тапсырма (TPR) деп аталады.[2]

The AMD64 архитектура бағдарламалық жасақтамаға үзілістерге басымдық беретін 15 сыныпты анықтауға мүмкіндік береді. Приоритетті сыныптар 1-ден 15-ке дейін нөмірленеді, бірінші кезектегі сыныптар 1 ең төменгі, ал приоритетті сыныптар 15 жоғары. CR8 а-ны көрсету үшін төрт төменгі ретті битті қолданады тапсырманың басымдығы және қалған 60 бит сақталған және оларды нөлдермен жазу керек.

Жүйелік бағдарламалық жасақтама TPR регистрін төмен басымдылықтағы үзілістерді жоғары басымдылықты тоқтатуға уақытша блоктау үшін қолдана алады. Бұны блоктау керек басымдықты үзіліске сәйкес келетін мәнмен TPR жүктеу арқылы жүзеге асырады. Мысалы, 9 (1001b) мәнімен TPR жүктеу басымдық сыныбы 9 немесе одан төмен барлық үзілістерді блоктайды, бұл ретте 10 немесе одан жоғары басымдық класы бар барлық үзілістерді тануға мүмкіндік береді. TPR-ді 0-ге жүктеу барлық сыртқы үзілістерге мүмкіндік береді. TPR-ді 15 (1111b) арқылы жүктеу барлық сыртқы үзілістерді өшіреді.

Қалпына келтіру кезінде TPR 0-ге дейін тазартылады.

XCR0 және XSS

XCR0 немесе кеңейтілген басқару регистрі 0 - бұл XSAVE / XRSTOR нұсқауларын қолдана отырып, белгілі бір CPU мүмкіндіктеріне байланысты регистрлердің сақталуын немесе жүктелуін ауыстыру үшін қолданылатын басқару регистрі. Сондай-ақ, ол кейбір мүмкіндіктермен бірге процессордың тиісті нұсқауларды орындау мүмкіндігін қосу немесе өшіру үшін қолданылады. Оған XSETBV артықшылықты және XGETBV артықшылықсыз нұсқаулықтары арқылы қол жеткізуге болады.[6]

Бит Мақсаты
0 X87 (x87 FPU / MMX күйі, ескерту '1' болуы керек)
1 SSE (MXCSR және XMM регламенттеріне арналған XSAVE мүмкіндіктер жиынтығы)
2 AVX (AVX қосу және XSAVE мүмкіндіктер жиынтығы YMM регулдерін басқару үшін пайдаланылуы мүмкін)
3 BNDREG (MPX қосу және XSAVE мүмкіндіктер жиынтығы BND регламенттері үшін пайдаланылуы мүмкін)
4 BNDCSR (MPX қосу және XSAVE мүмкіндіктер жиынтығы BNDCFGU және BNDSTATUS ережелері үшін пайдаланылуы мүмкін)
5 opmask (AVX-512 қосу және XSAVE мүмкіндіктер жиынтығы AVX opmask, AKA k-mask, regs үшін пайдаланылуы мүмкін)
6 ZMM_hi256 (AVX-512 қосу және XSAVE мүмкіндіктер жиынтығы төменгі ZMM регламенттерінің жоғарғы жартысы үшін қолданыла алады)
7 Hi16_ZMM (AVX-512 қосу және XSAVE мүмкіндіктер жиынтығы жоғарғы ZMM регламенттері үшін қолданыла алады)
8 Резервтелген
9 PKRU (XSAVE мүмкіндіктер жиынтығы) PKRU регистрі үшін пайдаланылуы мүмкін, оның бөлігі болып табылады қорғау кілттері механизм.)
10 Резервтелген ('0' болуы керек)
11 Басқару ағындарын күшейту технологиясы (CET) пайдаланушы күйі
12 Басқару ағынының орындалуын бақылау технологиясы (CET)
13 XAAD (анклавты қосалқы асинхронды анықтау мүмкіндігі, анклавтық тостерді қосу мүмкіндігі)[7] криптографиялық процедуралар үшін.)
14–63 Резервтелген ('0' болуы керек)

0DA0h мекен-жайында орналасқан IA32_XSS MSR бар. IA32_XSS MSR «супервайзер» күйі болып саналатын XCR0 биттерін басқарады және олар кәдімгі бағдарламаларға көрінбеуі керек. Ол жұмыс істейтін деректерге супервайзер күйін қосу арқылы артықшылықты XSAVES және XRSTORS нұсқауларымен жұмыс істейді. Қарапайым тілмен айтсақ, егер X87 күйі XCR0-де, ал PT күйі IA32_XSS-те қосылса, онда XSAVE нұсқаулығы тек X87 күйін сақтайды, ал артықшылықты XSAVES-де X87 және PT күйлері сақталады. Бұл MSR болғандықтан, оған RDMSR және WRMSR нұсқаулары арқылы қол жеткізуге болады.

Бит Мақсаты
0–7 Резервтелген; 0 болуы керек.
8 PT (тоғыз процессорлық Trace MSR сақтау және жүктеуді қосады.)
9–12 Резервтелген; 0 болуы керек.
13 HDC (IA32_PM_CTL1 MSR сақтау және жүктеуді қосады.)
14–63 Резервтелген; 0 болуы керек.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ а б Intel корпорациясы (2016). «4.10.1 Мәтіндік-контексттік идентификаторлар (PCID)». Intel 64 және IA-32 Architectures Software Developer's Manual (PDF). 3А томы: жүйелік бағдарламалау жөніндегі нұсқаулық, 1 бөлім.
  2. ^ а б «AMD64 сәулет бағдарламашысының нұсқаулығы 2-том: жүйелік бағдарламалау» (PDF). AMD. Қыркүйек 2012. б. 127 & 130. Алынған 2017-08-04.
  3. ^ «5 деңгейлі пейджинг және 5 деңгейлі EPT» (PDF). Intel. Мамыр 2017. б. 16. Алынған 2018-01-23.
  4. ^ Фишер, Стивен (2011-09-21). «Супервайзер режимін орындауды қорғау» (PDF). NSA сенімді есептеу конференциясы 2011 ж. Ұлттық конференция қызметтері, Inc. мұрағатталған түпнұсқа (PDF) 2016-08-03. Алынған 2017-08-04.
  5. ^ Анвин, Х.Питер (2012-09-21). «x86: супервайзер режиміне кіруге жол бермеу». LWN.net. Алынған 2017-08-04.
  6. ^ «13-тарау, Xsave мүмкіндіктер жиынтығын пайдалану күйін басқару» (PDF). Intel (R) 64 және IA-32 Architectures бағдарламалық жасақтамасын әзірлеушіге арналған нұсқаулық, 1 том: Негізгі сәулет. Intel корпорациясы (2019). Алынған 23 наурыз 2019.
  7. ^ https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_secure_enclave

Сыртқы сілтемелер