MMU管理機制

來源:互聯網
上載者:User

from: http://hi.baidu.com/ting160/blog/item/419ba1eb1bce7c38adafd574.html

MMU:儲存空間嵌入式管理單元

        *虛擬記憶體空間到實體儲存體空間的映射。在ARM中採用了頁式虛擬記憶體管理。它把虛擬位址空間分為一個個大小固定的塊,每一塊稱為一頁,把實體記憶體的地址空間也分成同樣大小的頁。頁的大小可以分為粗粒度和細粒度兩種,MMU就要實現從虛擬位址到物理地址的轉換。

        *儲存空間存取權限的控制。

        *設定虛擬儲存空間的緩衝特性。

       MMU可以將某些地址變換條目鎖定在TLB中(TLB(translation lookaside buffer)實現從虛擬位址到物理地址的頁表查詢的地址變換條目存放),從而使得進行與該地址變換條目相關的地址變換速度保持很快。在MMU中寄存器C10用於控制TBL內容的鎖存。

       MMU可以將整個儲存空間分為最多16個域(domain)。每個域對應一定的記憶體地區,該地區具有相同的存取控制屬性。MMU中寄存器C3用於控制與域相關的屬性配置。

                                   表1   與MMU操作相關的寄存器

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

儲存空間                                               作用

——————————————————————————————————————

寄存器C1中某些位                              用於配置MMU中一些操作

寄存器C2                                           儲存記憶體中頁表的基地址

寄存器C3                                           設定域(domain)的存取控制屬性

寄存器C4                                           保留(resvered)

寄存器C5                                           記憶體訪問失效狀態指示

寄存器C6                                            記憶體訪問失效時的地址

寄存器C7                                          

寄存器C8                                            控制與清除TLB內容相關的操作

寄存器C9                                          

寄存器C10                                         控制與鎖定TLB內容相關的操作

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

CP15的寄存器C1[0]設定為0時,禁止MMU,設定成1的時候enable MMU,如:

MRC P15, 0 ,R0 ,C1 ,0 ,0 ;從副處理器CP15的C1傳送到ARM處理器R0

ORR R0, #01   ;給COP15的寄存器C1[0]寫1

MCR P15 ,0 ,R0 ,C1 ,0 ,0;

1,結構:MMU儲存空間系統的結構允許對儲存空間系統的精細控制。大部分的控制細節由存在儲存空間中的轉換表提供。這些表的入口定義了從1KB 到1MB 的各種儲存空間地區的屬性。這些屬性包括:Ø         虛擬位址到物理地址映射ARM 處理器產生的地址叫虛擬位址,MMU 允許把這個虛擬位址映射到一個不同的物理地址去。這個物理地址表示了被訪問的主儲存空間的位置。如果使用了快速環境切換擴充(Fast Context Switch Extension),則在本文中的虛擬位址的意思應該是修改過的虛擬位址(Modified virtualaddress)這種方式允許我們用很多方式管理實體儲存體器的位置,例如:用具有潛在衝突的地址映射為不同的進程分配儲存空間;允許具有不連續地址的應用把它映射到連續的地址空間。Ø         儲存空間存取權限(permissions)控制對儲存空間地區的不可存取權限、唯讀許可權、讀寫權限。當訪問不可存取權限的儲存空間時,會有一個儲存空間異常通知ARM 處理器。    允許許可權受程式運行在使用者狀態還是特權狀態影響,還和是否使用了域有關。Ø         快取和緩衝位(Cachability and bufferability bits [C and B])這些在快取和緩衝一節講系統控制副處理器的寄存器允許對系統的進階控制,如轉換表的位置。他們也用來為ARM 提供記憶體異常的狀態資訊。尋找整個轉換表的過程叫轉換表遍曆。它由硬體制動進行,並需要大量的執行時間(至少一個儲存空間訪問,通常是兩個)。為了減少儲存空間訪問的平均消耗,轉換表遍曆結果被快取在一個或多個叫作Translation Lookaside Buffers(TLBs)的結構中。通常在ARM 的實現中每個記憶體介面有一個TLB。· 有一個儲存空間介面的系統通常有一個唯一的TLB· 指令和資料的記憶體介面分開的系統通常有分開的指令TLB 和資料TLB如果系統有快取, 快取的數量也通常是由同樣的方法確定的。所以在快取的系統中,每個快取一個TLB。當儲存空間中的轉換表被改變或選中了不同的轉換表(通過寫CP15 的寄存器2),先前快取的轉換表遍曆結果將不再有效。MMU 結構提供了重新整理TLB 的操作。MMU 結構也允許特定的轉換表遍曆結果被鎖定在一個TLB 中,這就保證了對相關的儲存空間地區的訪問絕不會導致轉換表遍曆,這也對那些把指令和資料鎖定在快取中的即時代碼有相同的好處。2,儲存空間訪問的順序當ARM 要訪問儲存空間時,MMU 先尋找TLB 中的虛擬位址表,如果ARM 的結構支援分開的地址TLB 和指令TLB,那麼它用:· 取指令使用指令TLB· 其它的所有訪問類別用資料TLB如果TLB 中沒有虛擬位址的入口,則轉換表遍曆硬體從存在主儲存空間中的轉換表中擷取轉換和存取權限,一旦取到,這些資訊將被放在TLB 中,它會放在一個沒有使用的入口處或覆蓋一個已有的入口。關於轉換表的資訊和轉換表遍曆的實現參見轉換過程一節。一旦為儲存空間訪問的TLB 的入口被拿到,這些資訊將被用於:1. C(快取)和B(緩衝)位被用來控制快取和寫緩衝,並決定是否快取。(如果系統中沒有快取和寫緩衝,則對應的位將被忽略)2. 存取權限和域位用來控制訪問是否被允許。如果不允許,則MMU 將向ARM 處理器發送一個儲存空間異常;否則訪問將被允許進行。存取權限、域和異常幾節有詳細描述。3. 對沒有快取的系統(包括在沒有快取系統中的所有儲存空間訪問),物理地址將被用作主儲存空間訪問的地址。對有快取的系統,在快取沒有選中的情況下,物理地址將被用行取(line fetch)的地址。如果選中了快取,則物理地址將被忽略。圖3-1 說明了這種快取系統2.1允許和禁止MMU通過寫系統控制副處理器的寄存器1 的第0 位可以允許和禁止MMU。在複位後這位是0,MMU 被禁止。當MMU 被禁止時,儲存空間訪問將被按如下處理:1. 由具體的實現確定當MMU 被禁止時是否能夠允許快取和寫緩衝。· 當MMU 被禁止時不能允許快取和寫緩衝時,C 和B 位不起作用。· 當MMU 被禁止時能允許快取和寫緩衝時:i. 訪問資料時被認為沒有快取和寫緩衝(C==0,B==0)ii. 取指令時:a) 當系統只有一個唯一的TLB 時,認為是沒有快取。(C==0)b) 當系統只有獨立的指令TLB 時,認為是有快取。(C==1)2. 沒有儲存空間存取權限的檢查,MMU 也不產生異常訊號。3. 物理地址與虛擬位址相同(即所謂的平坦地址映射模式)。在允許MMU 之前, 必須在記憶體中建立適當的轉換表,並且所有相關的CP15 寄存器要被初始化正確。允許和禁止MMU 直接改變了虛擬位址到物理地址的映射(除非轉換表被設定為平坦地址映射模式)。所以很可能在允許MMU 時所有的快取需要被重新整理。另外,如果允許MMU 的指令的物理地址和虛擬位址不同,取指令將變得複雜化。所以,強烈建議允許MMU 的指令具有相同的物理地址和虛擬位址。3轉換過程MMU 支援基於節或頁的儲存空間訪問: (Section) 構成1MB 的儲存空間塊支援3 中不同的頁尺寸: 微頁(Tiny page) 構成1KB 的儲存空間塊 小頁(Small page) 構成4KB 的儲存空間塊 大頁(Large page) 構成64KB 的儲存空間塊節和大頁是支援允許只用一個TLB 入口去映射大的儲存空間區間。小頁和大頁有附加的存取控制:小頁分成1KB 的子頁,和大頁分成16KB 的子頁。微頁沒有子頁,對微頁的存取控制是對整個頁。存在主儲存空間內的轉換表有兩個層級: 第一級表 儲存節轉換表和指向第二級表的指標。 第二級表 儲存大頁和小頁的轉換表。一種類型的第二級表格儲存體微頁轉換表。MMU 把CPU 產生的虛擬位址轉換成物理地址去訪問外部儲存空間,同時繼承並檢查存取權限。地址轉換有四條路徑。路徑的選取由這個地址是被標記成節映射訪問還是頁映射訪問確定。頁映射訪問可以是大、小和微頁的訪問。然而,轉換過程總是由下面所描述的那樣由第一級表的擷取開始。節映射的訪問只需要讀取第一級表,頁映射的訪問還需要讀取第二級表。3.1 轉換表基址當片上(on-chip)的TLB 中不包含被要求的虛擬位址的入口時,轉換過程被啟動。轉換表基底位址暫存器(CP15 的寄存器2)儲存著第一級轉換表基址的物理地址。只有bits[31:14]有效,bits[13:0]應該是零(SBZ)。 所以第一級表必須在16KB 的邊界。3.2 取第一級錶轉換表基底位址暫存器的bits[31:14]與虛擬位址的bits[31:20]和兩個0 位串連形成32 為物理地址,3-2。這個地址選擇了一個四位元組的轉換表入口,它是第一級描述符或是指向第二級頁表的指標。3.3 第一級描述符第一級表的每個入口是一個描述它所關聯的1MB 虛擬位址是如何映射的描述符。見表3-1,根據bits[1:0]的組合,有四種可能:· 如果bits[1:0]==0b00,所關聯的地址沒有被映射,試圖訪問他們將產生一個轉換錯(fault)。因為他們被硬體忽略,所以軟體可以利用這樣的描述符的bits[31:2]做自己的用途。推薦為描述符繼續保持正確的存取權限。· 如果bits[1:0]==0b10,這個入口是它所關聯地址的節描述符。見節描述符和轉換節參考中的細節。· 如果bits[0]==1,這個入口給出粗糙第二級表(bit[1]==0),或精細第二級表(bit[1]==1)。每一種類型的表描述了它所關聯的1MB 儲存地區的映射。粗糙第二級表較小,每個表1KB,每個精細第二級表4KB。然而粗糙第二級表只能映射大頁和小頁,精細第二級表可以映射大頁、小頁和微頁。  3.4 節描述符和轉換節參考如果第一級描述符是節描述符,那麼各個欄位有如下的意義:Bits[1:0] 描述符類型標識(0b10 表示節描述符)Bits[3:2] 快取和緩衝位Bits[4] 由具體實現定義Bits[8:5] 這個描述符控制的節的16 種域之一Bits[9] 現在沒有使用,應該為零Bits[11:10] 存取控制,見表3-3Bits[19:12] 現在沒有使用,應該為零Bits[31:20] 節基址,形成物理地址的高12 位元影像3-3 表示了節轉換的完整過程。註:---------------存取權限必須在物理地址產生之前去檢查,檢查存取權限的順序見存取權限一節。--------------------- 3.5 粗糙頁表描述符如果第一級描述符是粗糙頁表描述符,那麼各個欄位有如下的意義:Bits[1:0] 描述符類型標識(0b01 表示粗糙頁表描述符)Bits[4:2] 由具體實現定義Bits[8:5] 這個描述符控制的頁的16 種域之一Bits[9] 現在沒有使用,應該為零Bits[31:10] 頁表基地址是一個指向第二極粗糙頁表的指標,它給出第二級表訪問的基地址。而第二級粗糙頁表必須在1KB 邊界對齊。如果從第一級讀取到的是二級粗糙頁表描述符,那麼會象圖3-4 所示執行第二級描述符讀取。 3.6 精細頁表描述符如果第一級描述符是精細頁表描述符,那麼各個欄位有如下的意義:Bits[1:0] 描述符類型標識(0b11 表示精細頁表描述符)Bits[4:2] 由具體實現定義Bits[8:5] 這個描述符控制的頁的16 種域之一Bits[11:9] 現在沒有使用,應該為零Bits[31:10] 頁表基地址是一個指向第二級精細頁表的指標,它給出第二級表訪問的基地址。而第二級精細頁表必須在4KB 邊界對齊。如果從第一級讀取到的是二級精細頁表描述符,那麼會象圖3-5 所示執行第二級描述符讀取。  
3.7 第二級描述符
每個粗糙第二級表對映著以4KB 為單位的虛擬位址範圍市怎麼映射的,每個精細第二級表對映著以1KB 為單位的虛擬位址範圍市怎麼映射的。那些入口是頁描述符,他們能夠分別描述大於4KB 或1KB 的頁。在這種情況下,這個描述符必須被重複足夠次,以保證這個頁始終使用相同的描述符,不論訪問這個頁中的哪個虛擬位址。對於一個第二級描述符,有四種可能,由描述符的bits[1:0]選擇。見表3-2:· 如果bits[1:0]==0b00,說關聯的虛擬位址沒有被映射,任何對這些虛擬位址的訪問將會導致轉換錯(fault)。軟體可以利用這樣的描述符的bits[31:2]做自己的用途,因為他們被硬體忽略。推薦為描述符繼續保持正確的存取權限。· 如果bits[1:0]==0b01,這個入口是大頁描述符,描述64KB 的虛擬位址。見轉換大頁參考。一個大頁描述符在精細第二級表中必須被重複64 次,在粗糙第二級表中必須被重複16 次以保證所有的虛擬位址都被描述。· 如果bits[1:0]== 0b10,這個入口是小頁描述符,描述4KB 的虛擬位址。見轉換小頁參考。一個小頁描述符在精細第二級表中必須被重複4 次,以保證所有的虛擬位址都被描述。在粗糙第二級表中只有一個執行個體。· 如果bits[1:0]== 0b11,這個入口是微頁描述符,描述1KB 的虛擬位址。見轉換微頁參考。在精細第二級表中只需要一個微頁描述符的執行個體。微頁描述符不能在粗糙第二級表中出現,如果出現了,結果不可預測。  
大頁描述符欄位
大頁描述符的欄位有如下意義:bits[1:0] 表示描述符的類型bits[3:2] 高速緩促和緩衝位bits[11:4] 存取權限位。這些為控制對頁的訪問。關於這些位的解釋見表3-3。大頁被分成4 各子頁。AP0 編碼對第一個子頁的存取權限。AP1 編碼對第二個子頁的存取權限。AP2 編碼對第三個子頁的存取權限。AP3 編碼對第四個子頁的存取權限。bits[15:12] 現在沒有使用,應該為零。bits[31:16] 用來形成物理地址的對應位。 小頁描述符欄位小頁描述符的欄位有如下意義:bits[1:0] 表示描述符的類型bits[3:2] 高速緩促和緩衝位bits[11:4] 存取權限位。這些為控制對頁的訪問。關於這些位的解釋見表3-3。小頁被分成4 各子頁。AP0 編碼對第一個子頁的存取權限。AP1 編碼對第二個子頁的存取權限。AP2 編碼對第三個子頁的存取權限。AP3 編碼對第四個子頁的存取權限。bits[31:12] 用來形成物理地址的對應位。 微頁描述符欄位微頁描述符的欄位有如下意義:bits[1:0] 表示描述符的類型bits[3:2] 高速緩促和緩衝位bits[5:4] 存取權限位。這些為控制對頁的訪問。關於這些位的解釋見表3-3 關於微頁的解釋。bits[9:6] 現在沒有使用,應該為零。bits[31:10] 用來形成物理地址的對應位。 3.8 轉換大頁參考圖3-6 顯示了在粗糙第二級表中轉換一個64KB 的大頁的完整順序。在精細第二級表中的轉換順序頁相似,只是第二級描述符的地址如精細頁表描述符一節所決定。註:-----------------------------頁索引的高4 位和第二級表的低階4 位重疊,在粗糙頁表中大頁的每個頁表入口必須被重複16 次。在精細頁表中大頁的每個頁表入口必須被重複64 次。 
----------------------------------- 3.9 轉換小頁參考圖3-7 顯示了在粗糙第二級表中轉換一個4KB 的小頁的完整順序。在精細第二級表中的轉換順序頁相似,只是第二級描述符的地址如精細頁表描述符一節所決定。註:-----------------------------當小頁出現在精細第二級表中時,頁索引的高2 位和第二級表的低階2 位重疊,在精細頁表中小頁的每個頁表入口必須被重複4 次。-----------------------------------  
3.10 轉換微頁索引
圖3-8 顯示了在精細第二級表中轉換1KB 微頁的完整過程。註:---------------------------微頁不能出現在粗糙第二級表中。--------------------------------- 

4域域是節、大頁和小頁的集合。ARM 結構支援16 個域。對域的訪問由域存取控制寄存器的兩個位欄位控制。因為每個欄位對訪問對應的域的使能非常迅速,所以整個儲存空間區間能很快地交換進出虛擬儲存空間。這裡支援2 種域訪問方式:客戶域的使用者(執行程式,訪問資料),被形成這個域的節或頁來監督存取權限。管理者控制域的行為(域中的當前節和頁,對域的訪問),不被形成這個域的節或頁來監督存取權限。一個程式可以是一些域的客戶,也是另外一些域的管理者,同時沒有對其它域的存取權限。這允許對程式訪問不同儲存空間資源的非常靈活的儲存空間保護。表3-4 說明了域存取控制寄存器的位編碼方式。 5 CP15 寄存器MMU 由系統控制寄存器的2、3、4、5、6、8、10 號寄存器和1 號寄存器的一些位控制。 5.1 對副處理器寄存器的操作ARM寄存器到副處理器的資料傳誦指令和反向傳送指令分別為MCR和MRCu       MCRMCR指令將ARM處理器的寄存器中的資料傳送到副處理器的寄存器中。若副處理器不能成功執行該操作,將產生未定義指令異常中斷。指令格式如下:MCR{cond} coproc,opcode1,Rd,CRn,CRm{,opcode2}其中 coproc 指令操作的副處理器的名稱,標準名為pn,n為0~15,這裡為p15     opcode1 副處理器的特定作業碼     Rd      做源的ARM處理器寄存器     CRn     存放第一個運算元的副處理器寄存器     CRm     存放第二個運算元的副處理器寄存器     opcode2 可選的副處理器作業碼指令舉例如下:    MCR p6,2,R7,c1,c2MCR p7,0,R1,c3,c2,1u       MRCMRC指令將副處理器的寄存器中的資料傳送到ARM理器的寄存器中。若副處理器不能成功執行該操作,將產生未定義指令異常中斷。指令格式如下:MRC{cond} coproc,opcode1,Rd,CRn,CRm{,opcode2}其中 coproc 指令操作的副處理器的名稱,標準名為pn,n為0~15,這裡為p15     opcode1 副處理器的特定作業碼     Rd      做目標的ARM處理器寄存器     CRn     存放第一個運算元的副處理器寄存器     CRm     存放第二個運算元的副處理器寄存器     opcode2 可選的副處理器作業碼指令舉例如下:    MRC p6,2,R7,c1,c2MCR p7,0,R1,c3,c2,1 5.2 寄存器1 的MMU 控制位寄存器1 的如下這些位用來控制MMU:M(bit[0]) 使能MMU0 = 禁止MMU1 = 允許MMU在沒有MMU 和保護單元的系統上,這個位應該讀出為0,並忽略寫。A(bit[1]) 使能對齊錯檢查0 = 禁止1 = 允許S(bit[8]) 這是系統保護位,見3-4 節。R(bit[9]) 這是ROM 保護位,見3-4 節。 5.3 寄存器2:轉換表基地址 
讀CP15 寄存器2 時,在bits[31:14]返回當前活動的第一級轉換表的物理地址,bits[13:0]不確定。讀CP15 寄存器2 時,CRm 和運算元2 被忽略,並應該是0。寫CP15 寄存器2 時,在bits[31:14]更新當前活動的第一級轉換表的物理地址,bits[13:0]應該寫0 或先前讀回的值。寫CP15 寄存器2 時,CRm 和運算元2 被忽略,並應該是0。 5.4 寄存器3:域存取控制 
讀CP15 寄存器3 時,返回域存取控制寄存器的值。CRm 和運算元2 被忽略,並應該是0。寫CP15 寄存器3 時,更新網域存取控制寄存器的值。CRm 和運算元2 被忽略,並應該是0。域存取控制寄存器包含16 個2 位的欄位,它定義了對應域的存取權限。見3-5節。 5.5 寄存器4:保留讀寫CP15 寄存器4 不可預料結果。 5.6 寄存器5:錯誤狀態 FSR讀CP15 寄存器5 時,返回FSR 寄存器的值。FSR 包含最近一次資料錯的資訊。只有低9 位有效,高23 位不確定。FSR 指出異常發生時的域和試圖訪問的類型。bit[8] 返回0bit[7:4] 指出錯位發生時訪問的域bit[3:0] 試圖訪問的類型,這些位的編碼見表3-5FSR 在資料錯時更新。由具體實現確定取指令異常是否更新FSR。見3.6.2 節的“錯誤地址寄存器(FAR)和錯誤狀態寄存器(FSR)”。CRm 和運算元2 被忽略,並應該是0。寫FSR 將把FSR 設定成寫的值。這對於程式調試器非常有用,可以用來恢複FSR 的值。高24 位應該寫0 或上次讀到的值。CRm 和運算元2 被忽略,並應該是0。 5.7 寄存器6:錯誤地址 FAR 
讀CP15 寄存器6 返回FAR 的值。FAR 儲存著錯誤產生時訪問的虛擬位址。在資料錯時更新FAR。由具體實現確定取指令異常是否更新FSR。見3.6.2 節的“錯誤地址寄存器(FAR)和錯誤狀態寄存器(FSR)”。CRm 和運算元2 被忽略,並應該是0。寫FSR 將把FAR 設定成寫的值。這對於程式調試器非常有用,可以用來恢複FAR 的值。高24 位應該寫0 或上次讀到的值。CRm 和運算元2 被忽略,並應該是0。---注------如果使用了第六章描述的快速環境切換擴充(FCSE),那麼:· 當儲存空間錯更新FAR 時,寫入FAR 的是修改的虛擬位址。· 當用MRC 指令讀或用MCR 指令寫FAR 時,它的值被當作資料對待,所以沒有由FCSE 產生的地址修改。------------ 5.8 寄存器8:TLB 功能當CP15 的寄存器8 用來控制TLB 時是唯讀寄存器。表3-6 顯示了定義的TLB 功能和在MCR 指令中用的CRm 和第二個朝運算元<opcode2>的值。使用沒有在表中的CRm 和opcode2 的組合將導致不可預料的結果。如果下面的任何操作被用在單一TLB 的實現中,則在單一TLB 中實現相同的功能:· 無效的指令TLB (Invalidate instruction TLB)· 無效的指令單一入口 (Invalidate instruction single entry)· 無效的整個資料TLB (Invalidate entire data TLB)· 無效的資料單一入口 (Invalidate data single entry)否則,如果執行一個與特定實現不相關的功能,會導致不確定的結果。試圖用MRC 指令讀CP15 寄存器8 的結果不確定。當只有很少量的儲存空間被重新對應時,無效的單一入口操作能被用來在一些實現中改善效能。對每個被重新對應的儲存空間地區(節、小頁或大頁),無效的單一入口需要在儲存空間地區的虛擬位址上執行。效能的改善來源於不用重新裝載與沒有被重新對應的儲存空間地區相關的TLB 入口。---注------無效的單一入口操作的效能改善並不被保證。具體實現可以是單一請求入口無效,直到使整個TLB 無效。--------------小心------當儲存空間被重新對應時必須使與舊的映射相關的TLB 入口無效。如果不這樣,可能會進入兩個TLB 入口覆蓋虛擬位址範圍的狀態。在最好的情況下訪問這樣的覆蓋虛擬位址範圍會有不可預料的結果;在某些實現中甚至會物理損壞MMU。強烈建議在重新對應儲存空間時要加倍小心使TLB 適當地失效。

------------ 
---注------如果使用了第六章描述的快速環境切換擴充(FCSE),那麼表3-6 中的一些功能傳遞給CP15 的虛擬位址被當作資料。這意味著對它們來說沒有由FCSE 產生的地址修改。------------ 5.9 寄存器10:TLB 鎖定轉換表遍曆的執行需要一定的時間,特別當訪問慢速的主儲存空間時。在即時中斷處理常式中,當TLB 不包含中斷處理常式的轉換和/或要訪問的資料時,中斷延遲回大量加長。TLB 鎖定是一些ARM 儲存空間系統的特性,它允許把特定的轉換表遍曆的結果裝載到TLB 中。這種方式不會被後來的轉換表遍曆的結果覆蓋。由CP15 寄存器10 設定。設 W=LOG2(TLB 入口數),如果需要的話取整(round-up),則CP15 寄存器10 的格式為:如果具體的實現有分開的指令和資料TLB,那麼有2 個不同的寄存器,由訪問寄存器10 的MCR 或MRC 指令中的opcode2 欄位選擇:opcode2 == 0 選擇資料TLB 鎖定寄存器opcode2 == 1 選擇指令TLB 鎖定寄存器如果具體的實現只有唯一的TLB,那麼只有1 個寄存器,opcode2 欄位應該為0。訪問寄存器10 的MCR 或MRC 指令中的CRm 總應該為0。寫寄存器10 有如下結果:victim 欄位表示下次TLB 失敗(miss)時,轉換表遍曆的結果替代哪個TLB 入口。Base 欄位包含TLB 替換的策略,只使用從(base)到(TLB 入口-1)的TLB 入口,victim 應該在這個區間。轉換表遍曆的結果在寫到TLB 入口時,若P==1 則它被保護起來,不能被寄存器8的使整個TLB 失效操作影響;若P==0 則會被那些操作給失效掉。---注------如果TLB 的入口不是2 的N 次方,那麼寫到大於或等於TLB 入口數的TLB 入口的base 或victim 的值將不確定。-----------讀寄存器10 將返回它的值。 TLB 鎖定過程通常鎖定N 個TLB 入口的過程如下:1. 禁止中斷等,來保證當這個過程執行時不會產生異常2. 如果一個指令TLB 或唯一TLB 被鎖定,用base==N、index==N 和P==0 寫到適當版本的寄存器10。如果可能,把另指令預取很難理解的分枝預測功能關掉。3. 使要被鎖定的整個TLB 失效。4. 如果是指令TLB 鎖定,要確保剩下的鎖定過程所要預取的指令相關的TLB 入口都被裝載。(要注意鎖定是從哪裡開始的,通常可能一個TLB 入口包含所有這些。這時TLB 被失效後的第一條指令能完成這個功能)如果是資料TLB 鎖定,要確保剩下的鎖定過程所要訪問資料的相關的TLB 入口都被裝載。這包含被代碼用到的嵌入文字(inline literals)(通常最好避免在鎖定過程中使用嵌入文字,並把所有的資料放在由一個TLB 入口所包含的地區,然後從那裡載入一個資料)如果一個唯一TLB
被鎖定,執行以上所有的過程。5. i 從0 到N-1 迴圈a. 用base==i、index==i 和P==1 寫到寄存器10。b. 強迫被鎖定到TLB 入口i 處的轉換表遍曆結果的儲存空間地區發生轉換表遍曆:* 如果是資料TLB 或唯一TLB 被鎖定,從那個地區載入一個資料* 如果是指令TLB 被鎖定,用B5-15 頁所描述的指令預取高速緩衝寄存器7 來在那個地區產生指令預取。6. 用base==N、index==N 和P==0 寫到寄存器10。---注------如果你使用FCSE,要注意第5b 步,因為:· 如果是資料TLB 鎖定或唯一TLB 鎖定,載入資料指令的地址是會被FCSE 修改的。· 如果是指令TLB 鎖定,用在寄存器7 的地址被當作資料,所以不會被FCSE 修改。為了減少混淆,建議鎖定過程應該是:· 從禁止FCSE 開始(設定PID 為0)· 把適當的PID 值OR 到使用的虛擬位址的高7 位來自己產生修改的虛擬位址。----------- TLB 解鎖過程用上面的過程解鎖被鎖定的TLB 部分:1. 用寄存器8 的操作使每個被鎖定的單一入口失效2. 用base==0、index==0 和P==0 寫到寄存器10。---注------第一步是為了保證P==1 的入口在TLB 中不在被剩下。如故它們被剩在TLB 中,後續的TLB 鎖定過程中使整個TLB 失效(第三步)將不會有預期的結果。

MMU管理機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.