Kontrollregister
Ett kontrollregister är ett processorregister som ändrar eller styr det allmänna beteendet hos en CPU eller annan digital enhet. Vanliga uppgifter som utförs av styrregister inkluderar avbrottsstyrning , växling av adresseringsmod , personsökningsstyrning och samprocessorstyrning .
Styrregister i x86 -serien
CR0
CR0-registret är 32 bitar långt på 386 och högre processorer. På x64- processorer i långt läge är den (och de andra kontrollregistren) 64 bitar långa. CR0 har olika kontrollflaggor som modifierar processorns grundläggande funktion. Register CR0 är 32-bitarsversionen av det gamla registret för maskinstatusord (MSW). MSW-registret utökades till kontrollregistret med utseendet av i386-processorn.
Bit | namn | Fullständiga namn | Beskrivning |
---|---|---|---|
0 | PE | Aktivera skyddat läge | Om 1 är systemet i skyddat läge , annars är systemet i verkligt läge |
1 | MP | Övervaka medprocessor | Styr interaktionen av WAIT/FWAIT-instruktioner med TS-flaggan i CR0 |
2 | EM | Tävlan | Om inställt finns ingen x87 flyttalsenhet , om den är klar, x87 FPU närvarande |
3 | TS | Uppgift bytte | Tillåter att spara x87-uppgiftskontext på en uppgiftsväxling endast efter att x87-instruktioner använts |
4 | ET | Typ av tillägg | På 386:an tillät den att specificera om den externa matematiska samprocessorn var en 80287 eller 80387 |
5 | NE | Numeriskt fel | Aktivera intern x87 flyttal-felrapportering när den har ställts in, annars möjliggör PC-stil x87-feldetektering |
16 | WP | Skrivskydda | När den är inställd kan CPU:n inte skriva till skrivskyddade sidor när behörighetsnivån är 0 |
18 | AM | Justeringsmask | Justeringskontroll aktiverad om AM är inställd, AC-flagga (i EFLAGS- registret) inställd och behörighetsnivån är 3 |
29 | NW | Inte-skriv igenom | genomskrivningscache globalt |
30 | CD | Cache inaktivera | Aktiverar/inaktiverar minnescache globalt |
31 | PG | Personsökning | Om 1, aktivera personsökning och använd § CR3- registret, annars inaktivera personsökning. |
CR1
Reserverad, CPUn kommer att kasta ett # UD- undantag när den försöker komma åt den.
CR2
Innehåller ett värde som kallas Page Fault Linear Address (PFLA). När ett sökningsfel uppstår lagras adressen som programmet försökte komma åt i CR2-registret.
CR3
Används när virtuell adressering är aktiverad, alltså när PG-biten är inställd i CR0. CR3 gör det möjligt för processorn att översätta linjära adresser till fysiska adresser genom att lokalisera sidkatalogen och sidtabellerna för den aktuella uppgiften. Vanligtvis blir de övre 20 bitarna av CR3 sidkatalogbasregistret (PDBR), som lagrar den fysiska adressen för den första sidkatalogen. Om PCIDE-biten i CR4 är inställd, används de lägsta 12 bitarna för process-context identifier ( PCID).
CR4
Används i skyddat läge för att styra operationer som stöd för virtuell-8086, möjliggörande av I/O-brytpunkter, sidstorleksförlängning och undantag för maskinkontroll .
Bit | namn | Fullständiga namn | Beskrivning |
---|---|---|---|
0 | VME | Virtual 8086 Mode Extensions | Om det är inställt, aktiveras stöd för den virtuella avbrottsflaggan (VIF) i virtuellt-8086-läge. |
1 | PVI | Virtuella avbrott i skyddat läge | Om inställt, aktiverar stöd för den virtuella avbrottsflaggan (VIF) i skyddat läge. |
2 | TSD | Tidsstämpel inaktiverad | Om den är inställd kan RDTSC- instruktion endast utföras när den är i ring 0 , annars kan RDTSC användas på vilken behörighetsnivå som helst. |
3 | DE | Felsökning av tillägg | Om inställt, aktiverar felsökningsregisterbaserade avbrott på I/O- utrymmesåtkomst. |
4 | PSE | Sidstorleksförlängning | Om inställt, aktiverar 32-bitars personsökningsläge för att använda 4 MiB enorma sidor utöver 4 KiB-sidor. Om PAE är aktiverat eller processorn är i x86-64 långt läge ignoreras denna bit. |
5 | PAE | Fysisk adressförlängning | Om inställt ändras sidtabelllayouten för att översätta 32-bitars virtuella adresser till utökade 36-bitars fysiska adresser. |
6 | MCE | Undantag för maskinkontroll | Om inställt, gör det möjligt för maskinkontrollavbrott att inträffa. |
7 | PGE | Sida globalt aktiverad | Om inställt kan adressöversättningar (PDE- eller PTE-poster) delas mellan adressutrymmen. |
8 | PCE | Aktivera prestandaövervakningsräknare | Om inställt kan RDPMC exekveras på vilken behörighetsnivå som helst, annars kan RDPMC endast användas i ring 0. |
9 | OSFXSR | Operativsystemstöd för FXSAVE och FXRSTOR instruktioner | Om det är inställt, aktiverar Streaming SIMD Extensions (SSE) instruktioner och snabb FPU spara och återställa. |
10 | OSXMMEXCPT | Operativsystemstöd för omaskerade SIMD-undantag med flytande poäng | Om det är inställt, aktiveras omaskerade SSE-undantag. |
11 | UMIP | Förebyggande av instruktioner i användarläge | Om inställt kan SGDT, SIDT, SLDT, SMSW och STR instruktionerna inte utföras om CPL > 0. |
12 | LA57 | 57-bitars linjära adresser | Om det är inställt, aktiverar 5-nivå personsökning. |
13 | VMXE | Aktivera virtuella maskintillägg | se Intel VT-x x86- virtualisering . |
14 | SMXE | Säkrare lägestillägg aktivera | se Trusted Execution Technology (TXT) |
16 | FSGSBASE | Aktiverar instruktionerna RDFSBASE, RDGSBASE, WRFSBASE och WRGSBASE. | |
17 | PCIDE | PCID aktivera | Aktiverar processkontextidentifierare (PCID) om den är inställd. |
18 | OSXSAVE | XSAVE och Processor Extended States aktivera | |
20 | SMEP | Supervisor Mode Execution Protection Aktivera | genererar exekvering av kod i en högre ring ett fel . |
21 | SMAP | Aktivera åtkomstförhindrande för supervisorläge | Om den är inställd, genererar åtkomst av data i en högre ring ett fel . |
22 | PKE | Skyddsnyckel aktivera | Se Intel 64 och IA-32 Architectures Software Developer's Manual. |
23 | CET | Kontrollflödesteknik | Om den har ställts in, aktiverar tekniken för kontrollflödestillämpning. |
24 | PKS | Aktivera skyddsnycklar för sidor i supervisor-läge | Om inställt är varje linjär adress i supervisorläge associerad med en skyddsnyckel när 4-nivå eller 5-nivå personsökning används. |
CR5-7
Reserverat, samma fall som CR1.
Ytterligare kontrollregister i x86-64 -serien
EFER
Extended Feature Enable Register (EFER) är ett modellspecifikt register som lagts till i AMD K6- processorn, för att möjliggöra aktivering av SYSCALL /SYSRET-instruktionen och senare för att gå in i och lämna långt läge . Detta register blir arkitektoniskt i AMD64 och har antagits av Intel som IA32_EFER. Dess MSR-nummer är 0xC0000080.
Bit | Syfte |
---|---|
0 | SCE (System Call Extensions) |
1 | DPE (endast AMD K6: Data Prefetch Enable) |
2 | SEWBED (endast AMD K6: Speculative EWBE# Disable) |
3 | GEWBED (endast AMD K6: Global EWBE# Disable) |
4 | L2D (endast AMD K6: L2 Cache inaktiverad) |
5-7 | Reserverad, Läs som noll |
8 | LME (Long Mode Enable) |
9 | Reserverad |
10 | LMA (Långt läge aktivt) |
11 | NXE ( No-Execute Enable) |
12 | SVME ( Secure Virtual Machine Enable) |
13 | LMSLE (Long Mode Segment Limit Enable) |
14 | FFXSR (Snabb FXSAVE/FXRSTOR) |
15 | TCE (Translation Cache Extension) |
16 | Reserverad |
17 | MCOMMIT (aktivera MCOMMIT-instruktioner) |
18 | INTWB (Avbrottbar WBINVD/WBNOINVD aktivera) |
19 | Reserverad |
20 | UAIE (Upper Address Ignore Enable) |
21 | AIBRSE (Automatic IBRS Enable) |
22–63 | Reserverad |
CR8
CR8 är ett nytt register tillgängligt i 64-bitarsläge med REX-prefixet. CR8 används för att prioritera externa avbrott och kallas för uppgiftsprioritetsregistret (TPR).
AMD64 - arkitekturen tillåter mjukvara att definiera upp till 15 externa avbrottsprioritetsklasser. Prioritetsklasserna är numrerade från 1 till 15, där prioritetsklass 1 är den lägsta och prioritetsklass 15 den högsta. CR8 använder de fyra lågordningens bitar för att specificera en uppgiftsprioritet och de återstående 60 bitarna är reserverade och måste skrivas med nollor.
Systemprogramvara kan använda TPR-registret för att tillfälligt blockera lågprioriterade avbrott från att avbryta en högprioriterad uppgift. Detta åstadkommes genom att ladda TPR med ett värde som motsvarar det avbrott med högst prioritet som ska blockeras. Till exempel, laddning av TPR med ett värde på 9 (1001b) blockerar alla avbrott med en prioritetsklass på 9 eller mindre, samtidigt som alla avbrott med en prioritetsklass på 10 eller mer kan identifieras. Att ladda TPR med 0 möjliggör alla externa avbrott. Att ladda TPR med 15 (1111b) inaktiverar alla externa avbrott.
TPR nollställs till 0 vid återställning.
XCR0 och XSS
XCR0, eller Extended Control Register 0, är ett kontrollregister som används för att växla mellan lagring eller laddning av register relaterade till specifika CPU-funktioner med hjälp av XSAVE/XRSTOR-instruktionerna. Den används också med vissa funktioner för att aktivera eller inaktivera processorns förmåga att utföra motsvarande instruktioner. Den kan nås med de privilegierade XSETBV- och icke-privilegierade XGETBV-instruktionerna.
Bit | Syfte |
---|---|
0 | X87 (x87 FPU/MMX State, notera, måste vara '1') |
1 | SSE (XSAVE-funktionsuppsättning aktiverar för MXCSR- och XMM-regler) |
2 | AVX (AVX-aktiverad och XSAVE-funktionsuppsättning kan användas för att hantera YMM-registreringar) |
3 | BNDREG (MPX-aktiverad och XSAVE-funktionsuppsättning kan användas för BND-regler) |
4 | BNDCSR (MPX-aktiverad och XSAVE-funktionsuppsättning kan användas för BNDCFGU- och BNDSTATUS-regler) |
5 | opmask (AVX-512 aktivera, och XSAVE funktionsuppsättning kan användas för AVX opmask, AKA k-mask, regs) |
6 | ZMM_hi256 (AVX-512 aktiverad och XSAVE-funktionsuppsättning kan användas för övre halvor av de nedre ZMM-reglagen) |
7 | Hi16_ZMM (AVX-512 aktiverad, och XSAVE-funktionsuppsättning kan användas för de övre ZMM-reglerna) |
8 | Reserverad |
9 | PKRU (XSAVE-funktionsuppsättningen kan användas för PKRU-registret, som är en del av skyddsnycklarnas mekanism.) |
10 | Reserverad (måste vara '0') |
11 | Control-flow Enforcement Technology (CET) Användarstatus |
12 | Kontroll-flöde Enforcement Technology (CET) Supervisor State |
13-16 | Reserverad (måste vara '0') |
17 | Advanced Matrix Extensions (AMX) TILECFG State |
18 | Advanced Matrix Extensions (AMX) TILEDATA Status |
19–63 | Reserverad (måste vara '0') |
Det finns också IA32_XSS MSR, som finns på adressen 0DA0h. IA32_XSS MSR styr bitar av XCR0 som anses vara "övervakare" och bör vara osynliga för vanliga program. Den arbetar med de privilegierade XSAVES- och XRSTORS-instruktionerna genom att lägga till supervisor-tillstånd till data de arbetar med. Enkelt uttryckt, om X87-tillståndet var aktiverat i XCR0 och PT-tillståndet var aktiverat i IA32_XSS, skulle XSAVE-instruktionen endast lagra X87-tillståndet, medan det privilegierade XSAVES-tillståndet skulle lagra både X87- och PT-tillstånd. Eftersom det är en MSR kan den nås med RDMSR- och WRMSR-instruktionerna.
Bit | Syfte |
---|---|
0–7 | Reserverad; måste vara 0. |
8 | PT (Möjliggör att spara och ladda nio MSR:er för processorspårning.) |
9–12 | Reserverad; måste vara 0. |
13 | HDC (Möjliggör att spara och ladda IA32_PM_CTL1 MSR.) |
14–63 | Reserverad; måste vara 0. |
Se även
- Allmänt register
- Testregister
- Modellspecifikt register
- Felsökningsregister
- Flagga byte
- Statusregister