控制寄存器(CR0,CR1,CR2,CR3)

控制寄存器
(控制寄存器(CR0,CR1,CR2,CR3)用於控制和確定處理器的操作模式以及當前執行任務的特性。)
    從上表可見,80386有四個32位的控制寄存器,分別命名位CR0、CR1、CR2和CR3。但CR1被保留,供今後開發的處理器使用,在 80386中不能使用CR1,否則會引起無效指令操作異常。CR0包括指示處理器工作方式的控制位,包含啓用和禁止分頁管理機制的控制位,包含控制浮點協處理器操作的控制位。CR2及CR3由分頁管理機制使用。CR0中的位5—位30及CR3中的位0至位11是保留位,這些位不能是隨意值,必須爲0。  
控制寄存器CR0的低16位等同於80286的機器狀態字MSW。  
    1.CR0中的保護控制位
    控制寄存器CR0中的位0用PE標記,位31用PG標記,這兩個位控制分段和分頁管理機制的操作,所以把它們稱爲保護控制位。PE控制分段管理機制。 PE=0,處理器運行於實模式;PE=1,處理器運行於保護方式。PG控制分頁管理機制。PG=0,禁用分頁管理機制,此時分段管理機制產生的線性地址直接作爲物理地址使    用;PG=1,啓用分頁管理機制,此時線性地址經分頁管理機制轉換位物理地址。由此可知,如果要啓用分頁機制,那麼PE和PG標誌都要置位。
    下表列出了通過使用PE和PG位選擇的處理器工作方式。由於只有在保護方式下才可啓用分頁機制,所以儘管兩個位分別爲0和1共可以有四種組合,但只有三種組合方式有效。PE=0且PG=1是無效組合,因此,用PG爲1且PE爲0的值裝入CR0寄存器將引起通用保護異常。需要注意的是,PG位的改變將使系統啓用或禁用分頁機制,因而只有當所執行的程序的代碼和至少有一部分數據在線性地址空間和物理地址空間具有相同的地址的情況下,才能改變PG位。   
    2.協處理器控制位
    控制寄存器CR0中的位1—位4分別標記爲MP(算術存在位)、EM(模擬位,用於選擇與協處理器進行通信所使用的協議,即指明系統中是用的是80386還是80286協處理器)、TS(任務切換位) 和ET(擴展類型位),它們控制浮點協處理器的操作。  
    當處理器復位時,ET位被初始化,以指示系統中數字協處理器的類型。如果系統中存在 80387協處理器,那麼ET位置1;如果系統中存在80287協處理器或者不存在協處理器,那麼ET位清0。EM位控制浮點指令的執行是用軟件模擬,還是由硬件執行。EM=0時,硬件控制浮點指令傳送到協處理器;EM=1時,浮點指令由軟件模擬。TS 位用於加快任務的切換,通過在必要時才進行協處理器切換的方法實現這一目的。每當進行任務切換時,處理器把TS置1。TS=1時,浮點指令將產生設備不可用(DNA)異常。 MP位控制WAIT指令在TS=1時,是否產生DNA異常。MP=1和TS=1時,WAIT產生異常;MP=0時,WAIT指令忽略 TS條件,不產生異常。  
    在系統剛上電時,處理器被複位成pe=0,pg=0(即實模式狀態),以允許引導代碼在啓用分段和分頁機制之前能夠初始化這些寄存器和數據結構。對於這類寄存器的使用是在實模式下方可使用。
    3.CR2和CR3
    控制寄存器CR2和CR3由分頁管理機制使用。  
    CR2用於發生頁異常時報告出錯信息。當發生頁異常時,處理器把引起頁異常的線性地址保存在CR2中。操作系統中的頁異常處理程序可以檢查CR2的內容,從而查出線性地址空間中的哪一頁引起本次異常。  
    CR3 用於保存頁目錄表頁面的物理地址,因此被稱爲PDBR。由於目錄是頁對齊的,所以僅高20位有效,低12 位保留供更加高級的處理器使用。向CR3中裝入一個新值時,低12位必須爲0;但從 CR3中取值時,低12位被忽略。每當用MOV指令重置CR3的值時,會導致分頁機制高速緩衝區的內容無效,用此方法,可以在啓用分頁機制之前,即把PG 位置1之前,預先刷新分頁機制的高速緩存。CR3寄存器即使在CR0寄存器的PG位或PE位爲0時也可裝入,如在實模式下也可設置CR3,以便進行分頁機制的初始化。在任務切換時,CR3要被改變,但是如果新任務中CR3的值與原任務中CR3的值相同,那麼處理器不刷新分頁高速緩存,以便當任務共享頁表時有較快的執行速度。 

 

 原文地址 http://www.zxbc.cn/html/20070524/20653.html
發佈了20 篇原創文章 · 獲贊 4 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章