Kontrol kaydı - Control register
Bir kontrol kaydı a, işlemcinin kayıt değişiklikleri ya da genel davranışı kontrol CPU veya diğer dijital aygıt. Kontrol kayıtları tarafından gerçekleştirilen ortak görevler arasında kesinti kontrolü, adresleme modunun değiştirilmesi , sayfalama kontrolü ve yardımcı işlemci kontrolü bulunur.
x86 serisindeki kontrol kayıtları
CR0
CR0 kaydı, 386 ve daha yüksek işlemcilerde 32 bit uzunluğundadır . On x64 işlemciler uzun modunda , bu (ve diğer kontrol kayıtları) 64 bit uzunluğundadır. CR0, işlemcinin temel çalışmasını değiştiren çeşitli kontrol bayraklarına sahiptir.
Biraz | İsim | Ad Soyad | Açıklama |
---|---|---|---|
0 | PE | Korumalı Modu Etkinleştir | 1 ise sistem korumalı modda ise sistem gerçek moddadır. |
1 | milletvekili | Yardımcı işlemciyi izleyin | WAIT/FWAIT komutlarının CR0'da TS bayrağıyla etkileşimini kontrol eder |
2 | EM | öykünme | Ayarlanırsa, x87 kayan nokta birimi yok , temizse x87 FPU mevcut |
3 | TS | Görev değiştirildi | Yalnızca x87 talimatı kullanıldıktan sonra bir görev anahtarına x87 görev bağlamının kaydedilmesine izin verir |
4 | ET | Uzantı türü | 386'da , harici matematik yardımcı işlemcisinin 80287 veya 80387 olup olmadığını belirlemeye izin verildi. |
5 | NE | sayısal hata | Ayarlandığında dahili x87 kayan nokta hata raporlamasını etkinleştirin , aksi takdirde PC stili x87 hata algılamayı etkinleştirin |
16 | WP | Yazma koruması | Ayarlandığında, ayrıcalık seviyesi 0 olduğunda CPU salt okunur sayfalara yazamaz |
18 | NS | hizalama maskesi | AM ayarlanmışsa, AC bayrağı ( EFLAGS kaydında) ayarlanmışsa ve ayrıcalık seviyesi 3 ise hizalama kontrolü etkinleştirilir |
29 | KB | Yazmamak | Genel olarak yazma yoluyla önbelleğe almayı etkinleştirir/devre dışı bırakır |
30 | CD | Önbelleği devre dışı bırak | Bellek önbelleğini genel olarak etkinleştirir/devre dışı bırakır |
31 | PG | sayfalama | 1 ise, sayfalamayı etkinleştirin ve § CR3 kaydını kullanın , aksi takdirde sayfalamayı devre dışı bırakın. |
CR1
Ayrılmış, CPU, erişmeye çalışırken # UD istisnası atar .
CR2
Sayfa Hatası Doğrusal Adresi (PFLA) adlı bir değer içerir. Bir sayfa hatası oluştuğunda, programın erişmeye çalıştığı adres CR2 kaydında saklanır.
CR3
Kullanılır sanal adresleme etkinleştirildiğinde, dolayısıyla PG bit CR0 içinde ayarlandığında. CR3, işlemcinin geçerli görev için sayfa dizinini ve sayfa tablolarını bularak doğrusal adresleri fiziksel adreslere çevirmesini sağlar . Tipik olarak, CR3'ün üst 20 biti , ilk sayfa dizini girişinin fiziksel adresini saklayan sayfa dizini taban kaydı (PDBR) olur. İçinde PCIDE bit ise CR4 ayarlanır, en düşük 12 bit için kullanılan işlem-bağlam tanımlayıcı (PCID).
CR4
Virtual-8086 desteği, I/O kesme noktalarının etkinleştirilmesi, sayfa boyutu uzantısı ve makine denetimi istisnaları gibi işlemleri kontrol etmek için korumalı modda kullanılır .
Biraz | İsim | Ad Soyad | Açıklama |
---|---|---|---|
0 | VME | Sanal 8086 Modu Uzantıları | Ayarlanırsa, virtual-8086 modunda sanal kesme bayrağı (VIF) desteğini etkinleştirir. |
1 | PVI | Korumalı mod Sanal Kesintiler | Ayarlanırsa, korumalı modda sanal kesme bayrağı (VIF) desteğini etkinleştirir. |
2 | TSD | Zaman Damgası Devre Dışı | Ayarlanırsa , RDTSC komutu yalnızca 0 halkasındayken yürütülebilir , aksi takdirde RDTSC herhangi bir ayrıcalık düzeyinde kullanılabilir. |
3 | DE | Hata Ayıklama Uzantıları | Ayarlanırsa, G/Ç alanı erişimindeki kesintilere dayalı hata ayıklama kaydı etkinleştirir . |
4 | PSE | Sayfa Boyutu Uzantısı | Ayarlanmadıysa, sayfa boyutu 4 KiB'dir, aksi takdirde sayfa boyutu 4 MiB'a yükseltilir
PAE etkinleştirilirse veya işlemci x86-64 uzun modundaysa bu bit yok sayılır. |
5 | PAE | Fiziksel Adres Uzantısı | Ayarlanırsa, 32 bit sanal adresleri genişletilmiş 36 bit fiziksel adreslere çevirmek için sayfa tablosu düzenini değiştirir. |
6 | MCE | Makine Kontrolü İstisnası | Ayarlanırsa, makine kontrol kesintilerinin gerçekleşmesini sağlar. |
7 | PGE | Sayfa Global Etkin | Ayarlanırsa, adres çevirileri (PDE veya PTE kayıtları) adres boşlukları arasında paylaşılabilir. |
8 | PCE | Performans İzleme Sayacı etkinleştirme | Ayarlanırsa, RDPMC herhangi bir ayrıcalık düzeyinde yürütülebilir, aksi takdirde RDPMC yalnızca halka 0'da kullanılabilir. |
9 | OSFXSR | FXSAVE ve FXRSTOR komutları için işletim sistemi desteği | Ayarlanırsa , Akış SIMD Uzantıları (SSE) talimatlarını ve hızlı FPU kaydetme ve geri yüklemeyi etkinleştirir . |
10 | OSXMMEXCPT | Maskelenmemiş SIMD Kayan Nokta İstisnaları için İşletim Sistemi Desteği | Ayarlanırsa, maskesiz SSE istisnalarını etkinleştirir. |
11 | UMIP | Kullanıcı Modu Talimatı Önleme | Ayarlanırsa, CPL > 0 ise SGDT, SIDT, SLDT, SMSW ve STR komutları yürütülemez. |
12 | LA57 | (belirtilmemiş) | Ayarlanırsa, 5 Düzeyli Çağrıyı etkinleştirir. |
13 | VMXE | Sanal Makine Uzantılarını Etkinleştir | bkz. Intel VT-x x86 sanallaştırma . |
14 | SMXE | Daha Güvenli Mod Uzantıları Etkinleştir | bkz. Güvenilir Yürütme Teknolojisi (TXT) |
16 | FSGSBASE | RDFSBASE, RDGSBASE, WRFSBASE ve WRGSBASE yönergelerini etkinleştirir. | |
17 | PCİDE | PCID Etkinleştir | Ayarlanırsa, süreç bağlam tanımlayıcılarını (PCID'ler) etkinleştirir. |
18 | OSXSAVE | XSAVE ve İşlemci Genişletilmiş Durumları Etkinleştir | |
20 | SMEP | Yönetici Modu Yürütme Korumasını Etkinleştir | Ayarlanırsa, kodun daha yüksek bir halkada yürütülmesi bir hata oluşturur . |
21 | SMAP | Süpervizör Modu Erişim Engelleme Etkinleştir | Ayarlanırsa, daha yüksek bir halkadaki verilere erişim bir hata oluşturur . |
22 | PKE | Koruma Anahtarını Etkinleştir | Intel 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzuna bakın. |
CR5-7
Ayrılmış, CR1 ile aynı durumda.
x86-64 serisinde ek Kontrol kayıtları
EFER
Genişletilmiş Özellik Etkinleştirme Kaydı (EFER), SYSCALL /SYSRET komutunun etkinleştirilmesine ve daha sonra uzun moda girmek ve çıkmak için AMD K6 işlemcisine eklenen modele özgü bir kayıttır . Bu kayıt mimari hale AMD64 ve tarafından kabul edilmiştir Intel IA32_EFER olarak. MSR numarası 0xC0000080'dir.
Biraz | Amaç |
---|---|
0 | SCE (Sistem Çağrı Uzantıları) |
1 | DPE (yalnızca AMD K6: Veri Önceden Getirmeyi Etkinleştir) |
2 | SEWBED (yalnızca AMD K6: Spekülatif EWBE# Devre Dışı Bırakma) |
3 | GEWBED (yalnızca AMD K6: Global EWBE# Devre Dışı Bırakma) |
4 | L2D (yalnızca AMD K6: L2 Önbelleği Devre Dışı Bırakma) |
5-7 | Ayrılmış, Sıfır Olarak Oku |
8 | LME (Uzun Mod Etkinleştirme) |
9 | Rezerve |
10 | LMA (Uzun Mod Aktif) |
11 | NXE ( Yürütme Yok Etkinleştirme) |
12 | SVME ( Güvenli Sanal Makine Etkinleştirme) |
13 | LMSLE (Uzun Mod Segment Sınırı Etkin) |
14 | FFXSR (Hızlı FXSAVE/FXRSTOR) |
15 | TCE (Çeviri Önbelleği Uzantısı) |
16–63 | Rezerve |
CR8
CR8, REX öneki kullanılarak 64 bit modunda erişilebilen yeni bir kayıttır. CR8, harici kesmelere öncelik vermek için kullanılır ve görev öncelikli kayıt (TPR) olarak adlandırılır.
AMD64 mimari yazılım 15 dış kesme öncelikli sınıfları kadar tanımlamasına izin verir. Öncelik sınıfları 1'den 15'e kadar numaralandırılmıştır, öncelik sınıfı 1 en düşük ve öncelik sınıfı 15 en yüksektir. CR8, bir görev önceliği belirtmek için dört düşük sıralı biti kullanır ve kalan 60 bit rezerve edilir ve sıfırlarla yazılmalıdır.
Sistem yazılımı, düşük öncelikli kesintilerin yüksek öncelikli bir görevi kesintiye uğratmasını geçici olarak engellemek için TPR kaydını kullanabilir. Bu, engellenecek olan en yüksek öncelikli kesmeye karşılık gelen bir değerle TPR yüklenerek gerçekleştirilir. Örneğin, TPR'yi 9 (1001b) değerinde yüklemek, öncelik sınıfı 9 veya daha düşük olan tüm kesmeleri engellerken, öncelik sınıfı 10 veya daha fazla olan tüm kesmelerin tanınmasına izin verir. TPR'yi 0 ile yüklemek, tüm harici kesmeleri etkinleştirir. TPR'yi 15 (1111b) ile yüklemek, tüm harici kesmeleri devre dışı bırakır.
Sıfırlama sırasında TPR 0 olarak temizlenir.
XCR0 ve XSS
XCR0 veya Genişletilmiş Kontrol Kaydı 0, XSAVE/XRSTOR talimatlarını kullanarak belirli CPU özellikleriyle ilgili kayıtların depolanmasını veya yüklenmesini değiştirmek için kullanılan bir kontrol kaydıdır. Ayrıca, işlemcinin ilgili talimatlarını yürütme yeteneğini etkinleştirmek veya devre dışı bırakmak için bazı özelliklerle birlikte kullanılır. Ayrıcalıklı XSETBV ve ayrıcalıksız XGETBV talimatları kullanılarak erişilebilir.
Biraz | Amaç |
---|---|
0 | X87 (x87 FPU/MMX Durumu, not, '1' olmalıdır) |
1 | SSE (MXCSR ve XMM kayıtları için XSAVE özellik seti etkinleştirme) |
2 | AVX (AVX etkinleştirme ve XSAVE özellik seti, YMM kayıtlarını yönetmek için kullanılabilir) |
3 | BNDREG (MPX etkinleştirme ve XSAVE özellik seti, BND kayıtları için kullanılabilir) |
4 | BNDCSR (MPX etkinleştirme ve XSAVE özellik seti, BNDCFGU ve BNDSTATUS kayıtları için kullanılabilir) |
5 | opmask (AVX-512 etkinleştirme ve XSAVE özellik seti, AVX opmask, AKA k-mask, regs için kullanılabilir) |
6 | ZMM_hi256 (AVX-512 etkinleştirme ve XSAVE özellik seti, alt ZMM kayıtlarının üst yarısı için kullanılabilir) |
7 | Hi16_ZMM (AVX-512 etkinleştirme ve XSAVE özellik seti, üst ZMM kayıtları için kullanılabilir) |
8 | Rezerve |
9 | PKRU (XSAVE özellik seti, koruma anahtarları mekanizmasının bir parçası olan PKRU kaydı için kullanılabilir .) |
10 | Ayrılmış ('0' olmalıdır) |
11 | Kontrol Akışı Uygulama Teknolojisi (CET) Kullanıcı Durumu |
12 | Kontrol Akışı Uygulama Teknolojisi (CET) Süpervizör Durumu |
13–63 | Ayrılmış ('0' olmalıdır) |
Ayrıca 0DA0h adresinde bulunan IA32_XSS MSR vardır. IA32_XSS MSR, "süpervizör" durumu olarak kabul edilen ve normal programlara görünmez olması gereken XCR0 bitlerini kontrol eder. Çalıştığı verilere süpervizör durumu ekleyerek ayrıcalıklı XSAVES ve XRSTORS komutları ile çalışır. Basitçe söylemek gerekirse, X87 durumu XCR0'da ve PT durumu IA32_XSS'de etkinleştirildiyse, XSAVE komutu yalnızca X87 durumunu depolarken, ayrıcalıklı XSAVES hem X87 hem de PT durumlarını depolayacaktır. Bir MSR olduğu için RDMSR ve WRMSR komutları kullanılarak erişilebilir.
Biraz | Amaç |
---|---|
0–7 | Rezerve; 0 olmalıdır. |
8 | PT (Dokuz İşlemci İzleme MSR'sinin kaydedilmesini ve yüklenmesini sağlar.) |
9–12 | Rezerve; 0 olmalıdır. |
13 | HDC (IA32_PM_CTL1 MSR'nin kaydedilmesini ve yüklenmesini sağlar.) |
14–63 | Rezerve; 0 olmalıdır. |