Control Register — Änderungen 4470 → 4513

Zeile 1: Zeile 1:
−
Die Control Register sind spezielle Register der Intel Architektur (x86 und x86-64), die den Betriebsmodus und einige Eigenschaften der CPU festlegen.
+
Die Control Register sind spezielle Register der [[IA32]] und [[AMD64]] Architekturen, die den Betriebsmodus und einige Eigenschaften der CPU festlegen. In der AMD64-Architektur haben sie eine Breite von 64 Bit, wobei die unteren 32 Bit, den der IA32 Architektur entsprechen.
 +
Der Zugriff auf diese Register ist wie bei den Segment Registern auch nur mit einem Umweg über Allzweckregister möglich.
  
 
==CR0==
 
==CR0==
−
 
+
{| align="right"
−
{| border=1
+
|
−
!Bit
+
{| {{Prettytable}} width="100%"
−
!Funktion
+
|- align="center"
−
|-
+
! 63-32
−
| Bit 0
+
|- bgcolor="#bbb" align="center"
−
| '''PE''' ''Protection Enable''
 
−
Schaltet den Protected-Mode Ein/Aus
 
−
|-
 
−
| Bit 1
 
−
| '''MP''' ''Monitor Coprocessor''
 
−
|-
 
−
| Bit 2
 
−
| '''EM''' ''Emulation''
 
−
|-
 
−
| Bit 3
 
−
| '''TS''' ''Task Switched''
 
−
|-
 
−
| Bit 4
 
−
| '''ET''' ''Extension Type
 
−
|-
 
−
| Bit 5
 
−
| '''NE''' ''Numeric Error''
 
−
|-
 
−
| Bit 6-15
 
 
| ''Reserviert''
 
| ''Reserviert''
 +
|}
 
|-
 
|-
−
| Bit 16
+
|
−
| '''WP''' ''Write Protect''
+
{| {{Prettytable}} width="100%"
−
|-
+
|- align="center"
−
| Bit 17
+
! width='3.125%' | 31
−
| ''Reserviert''
+
! width='3.125%' | 30
−
|-
+
! width='3.125%' | 29
−
| Bit 18
+
! width='31.25%' | 28-19
−
| '''AM''' ''Alignment Mask''
+
! width='3.125%' | 18
−
|-
+
! width='3.125%' | 17
−
| Bit 19-28
+
! width='3.125%' | 16
−
| ''Reserviert''
+
! width='31.25%' | 15-6
−
|-
+
! width='3.125%' | 5
−
| Bit 29
+
! width='3.125%' | 4
−
| '''NW''' ''Not Write-throgh''
+
! width='3.125%' | 3
−
|-
+
! width='3.125%' | 2
−
| Bit 30
+
! width='3.125%' | 1
−
| '''CD''' ''Cache Disable''
+
! width='3.125%' | 0
−
|-
+
|- align="center"
−
| Bit 31
+
| PG || CD || NW || bgcolor="#bbb" | ''Reserviert'' || AW || bgcolor="#bbb" | || WP || bgcolor="#bbb" | ''Reserviert''  
−
| '''PG''' ''Paging''
+
| NE || ET || TS || EM || MP || PE
−
Schaltet den Paging-Meschanismus Ein/Aus
+
|}
 
|}
 
|}
−
==CR1==
+
* PE - ''Protection Enbale'' Flag schaltet den [[Protected Mode]] ein bzw. aus (Genaueres siehe [[Umschalten in Protected Mode | hier]])
−
''Reserviert''
+
* MP - Mit dem ''Monitor Coprocessor'' Flag kann festgelegt werden ob bei Gesetztem TS-Flag der Aufruf von WAIT/FWAIT einen Exception auslösen oder nicht (bei gesetztem MP-Flag wird die Exception ausgelöst).
 +
* EM - Bei gesetztem ''Emulation'' Flag löst die CPU für jede [[FPU]]-Instruktion eine [[Exception|#NM-Exception]] aus. Für Multimedia-Instruktionen wird eine [[Exception|#UD-Exception]] ausgelöst. Damit wird es dem Betriebssystem ermöglicht eine FPU zu emulieren. (WAIT/FWAIT lösen keine Exception aus)
 +
* TS -  Das ''Task Switched'' Flag wird bei einem [[Multitasking|Hardware-Taskswitch]] von der CPU gesetzt und kann für Software Multitasking auch von Hand gesetzt werden. Wenn bei gesetztem TS-Flage versucht wird eine FPU- oder Multimedia-Instruktion auszuführen, dann löst die CPU eine #NM-Exception aus. Dadurch können die FPU- bzw. Multimedia-Register, die bei normalen Taskswitchs nicht beachtet werden, entsprechend gesichert und geladen werden bevor sie verwendet werden.
 +
* ET - ''Extension Type''
 +
* NE - ''Numeric Error''
 +
* WP - ''Write Protect''
 +
* AM - ''Alignment Mask''
 +
* NW - ''Not Write-throgh''
 +
* CD - ''Cache Disable''
 +
* PG - ''Paging'' schaltet den Paging-Meschanismus Ein/Aus
  
−
==CR2==
+
== CR2 ==
−
Enthält nach einem Page-Fault die lineare Adresse, die den Fehler verursacht hat.
+
Bevor die CPU eine [[Exception|Page-Falut Exception]] auslöst, lädt sie die virtuelle Adresse, die den Fehler verursacht hat, in das CR2 Register.
  
 
==CR3==
 
==CR3==
 
Das CR3-Register enthält primär die Adresse des Page Directories, sowie 2 Flags, die das interne Caching innerhalb der CPU (nicht im TLB) steuern. Wenn [[Physical Address Extension]] (PAE) aktiviert ist, wird die Adresse des Page Directories ersetzt durch die um 7 Bits größere Adresse zur Page-Directory Pointer Table.
 
Das CR3-Register enthält primär die Adresse des Page Directories, sowie 2 Flags, die das interne Caching innerhalb der CPU (nicht im TLB) steuern. Wenn [[Physical Address Extension]] (PAE) aktiviert ist, wird die Adresse des Page Directories ersetzt durch die um 7 Bits größere Adresse zur Page-Directory Pointer Table.
−
{| border=1
+
{| {{Prettytable}}
−
!Bit
+
!Bit !! Funktion !!Funktion mit aktivierter [[PAE]]
−
!Funktion
+
|- bgcolor="#bbb"
−
!Funktion mit aktivierter [[PAE]]
+
| Bit 0-2 || colspan="2" |  ''Reserviert''
−
|-
 
−
| Bit 0-2
 
−
| colspan="2" |  ''Reserviert''
 
 
|-
 
|-
−
| Bit 3
+
| Bit 3 || colspan="2" | '''PWT''' ''Page-level Writes Transparant''
−
| colspan="2" | '''PWT''' ''Page-level Writes Transparant''
 
 
|-
 
|-
−
| Bit 4
+
| Bit 4 || colspan="2" | '''PCD''' ''Page-level Cache Disable''
−
| colspan="2" | '''PCD''' ''Page-level Cache Disable''
 
 
|-
 
|-
−
| Bit 5-11
+
| Bit 5-11 || bgcolor="#bbb" | ''Reserviert'' || rowspan="2" | '''Page-Directory-Pointer-Table Base'''
−
| ''Reserviert''
 
−
| rowspan="2" | '''Page-Directory-Pointer-Table Base'''
 
 
Basis-Adresse der PDPT
 
Basis-Adresse der PDPT
 
|-
 
|-
−
| Bit 12-31
+
| Bit 12-31 || '''Page-Directory Base''' Basis Adresse des Page-Directorys
−
| '''Page-Directory Base'''
 
−
Basis Adresse des Page-Directorys
 
 
|}
 
|}
  
 
==CR4==
 
==CR4==
−
{| border=1
+
{| {{Prettytable}}
−
!Bit
+
!Bit !!Funktion
−
!Funktion
 
−
|-
 
−
| Bit 0
 
−
| '''VME''' ''Virtual 8086 Mode Extension''
 
 
|-
 
|-
−
| Bit 1
+
| Bit 0 || '''VME''' ''Virtual 8086 Mode Extension''
−
| '''PVI''' ''Protected Mode Virtual Interrupt''
 
 
|-
 
|-
−
| Bit 2
+
| Bit 1 || '''PVI''' ''Protected Mode Virtual Interrupt''
−
| '''TSD''' ''Time Stamp Disable''
 
 
|-
 
|-
−
| Bit 3
+
| Bit 2 || '''TSD''' ''Time Stamp Disable''
−
| '''DE''' ''Debugging Extension''
 
 
|-
 
|-
−
| Bit 4
+
| Bit 3 || '''DE''' ''Debugging Extension''
−
| '''PSE''' ''Page Size Extension''
 
 
|-
 
|-
−
| Bit 5
+
| Bit 4 || '''PSE''' ''Page Size Extension''
−
| '''PAE''' ''Physical Address Extension''
 
 
|-
 
|-
−
| Bit 6
+
| Bit 5 || '''PAE''' ''Physical Address Extension''
−
| '''MCE''' ''Machine Check Enable''
 
 
|-
 
|-
−
| Bit 7
+
| Bit 6 || '''MCE''' ''Machine Check Enable''
−
| '''PGE''' ''Page Global Enable''
 
 
|-
 
|-
−
| Bit 8
+
| Bit 7 || '''PGE''' ''Page Global Enable''
−
| '''PCE''' ''Performance Monitoring Counter Enable''
 
 
|-
 
|-
−
| Bit 9
+
| Bit 8 || '''PCE''' ''Performance Monitoring Counter Enable''
−
| '''OSFXSR''' ''Operating System Support for FXSAVE and FXSTOR''
 
 
|-
 
|-
−
| Bit 10
+
| Bit 9 || '''OSFXSR''' ''Operating System Support for FXSAVE and FXSTOR''
−
| '''OSXMMEXCPT''' ''Operating System Support for Unmasked SIMD Exception''
 
 
|-
 
|-
−
| Bit 11-31
+
| Bit 10 || '''OSXMMEXCPT''' ''Operating System Support for Unmasked SIMD Exception''
−
| ''Reserviert''
+
|- bgcolor="#bbb"
 +
| Bit 11-31 || ''Reserviert''
 
|}
 
|}
  
 
== CR8 ==
 
== CR8 ==
−
{| border=1
+
{| {{Prettytable}}
−
!Bit
+
!Bit !!Funktion
−
!Funktion
 
 
|-
 
|-
−
| Bit 0-3
+
| Bit 0-3 || '''TPL''' ''Task Priority Level''
−
| '''TPL''' ''Task Priority Level''
+
|- bgcolor="#bbb"
−
|-
+
| Bit 3-31 || ''n/a''
−
| Bit 3-31
 
−
| ''n/a''
 
 
|}
 
|}
 +
 +
== CR1, CR5-CR7 und CR9-CR15 ==
 +
Die Register CR1, CR5-CR7 und CR9-CR15 sind reserviert. Versucht Software dennoch darauf zuzugreifen löst die CPU eine [[Exception|#UD-Exception]] aus.
  
 
== Weblinks ==
 
== Weblinks ==
 
* [http://www.intel.com/products/processor/manuals/index.htm Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide] (Kapitel 2.5)
 
* [http://www.intel.com/products/processor/manuals/index.htm Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide] (Kapitel 2.5)
 +
* [http://developer.amd.com/documentation/guides/Pages/default.aspx#Manuals AMD64 Architecture Programmer's Manual Volume 2: System Programming](Kapitel 3.1)