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

Typisk användning av CR3 i adressöversättning med 4 KiB -sidor

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

externa länkar