ARM儲存嵌入式管理單元MMU和儲存保護單元MPU

來源:互聯網
上載者:User
MMU提供的一個關鍵服務是,能使各個任務作為獨立的程式在其自己的私人儲存空間運行.地址轉換過程允許啟動並執行多個程式使用相同的虛擬位址,而各自儲存在實體儲存體器的不同位置.     地區可以是活躍的,也可以是睡眠的:活躍地區包含當前系統正在使用的代碼或資料;睡眠地區包含當前不使用,但可能在短時間內變為活躍的代碼或資料.睡眠區 域是被保護的,因此當前正在啟動並執行任務是不能訪問的.MPU和MMU的主要區別是,MMU中增加了額外的硬體,以支援虛存.     一個重定位寄存器只能轉換一Block Storage空間.這Block Storage空間的大小由虛擬位址的位移量部分所佔的位元所決定.ARM的MMU中臨時存放轉換資料的一組重定位寄存 器實際上是一個由64個重定位寄存器組成的全相聯cache.這個cache就是轉換旁路緩衝器--TLB.TLB緩衝最近被訪問的頁的轉換資料.MMU 還使用主存中的表來存放描述系統中用到的虛擬儲存空間映射資料,這些轉換資料的表就是頁表.頁表中的每個項代表了將虛擬儲存空間的一個頁轉換到實體儲存體器的一 個頁幀所需要的所有資訊.     在MMU中,地區被定義為一組頁表的集合,並作為虛存中的連續頁完全由軟體控制.除了L1一級頁表外,所有其他的頁表都代表虛存的1MB空間.如果一個區 域的大小大於1MB或者它跨過頁表的1MB邊界地址,那麼就必須使用一組頁表來描述這個地區.頁表可以駐留在儲存空間中,而不必映射到MMU硬體.     當在2個應用程式任務間實現環境切換時,處理器其實要發生多次環境切換.它先從使用者模式任務切換到核心模式任務,以處理準備運行下一個應用程式任務時的上下文資料的移動;然後,它從核心模式任務切換到下一個內容相關的新的使用者模式任務.     MMU在轉換一個地址時失敗,就會產生一個中止異常.MMU只有在轉換失敗,許可權錯誤和域錯誤時,才會中止.     L1住頁表包含2種類型的頁表項:儲存指向二級頁表起始地址指標的頁表項和儲存用於轉換1MB頁的頁表項.L1頁表也稱為段頁表.當L1頁表作為頁目錄 時,其頁表項包含的是1MB虛擬空間的L2粗頁表或L2細頁表指標;當L1頁表用於轉換一個1MB的段時,其頁表項包含的是實體儲存體器中1MB頁幀的首地 址.目錄頁表項和1MB的段頁表項可以共存於L1首頁表.CP15:c2寄存器儲存轉換表基地址TTB--指向L1首頁表在虛存中的位置.     TLB只支援兩種類型的命令:清除TLB和鎖定TLB中的轉換資料.儲存空間訪問時,MMU將虛擬位址的一部分與TLB中的所有值進行比較.如果TLB中已 有所要的轉換資料,即為一次TLB命中,則由TLB提供物理地址的轉換資料.如果TLB中不存在有效轉換資料,即為一次TLB失效,則MMU會由硬體自 動處理TLB失效,通過主存中的頁表搜尋有效轉換資料,並將其裝入TLB的64行的一行.如果TLB中的某一行是鎖定的,則當TLB清除命令發出時,它 仍然保留在TLB中. 在受保護的系統中,主要有兩類資源需要監視:儲存空間系統和外圍裝置.儲存空間中對地區的訪問可以是讀/寫,唯讀或不可訪問,基於當時的處理器模式--管理模 式或使用者模式,還有一些附加的許可權.地區還有控制cache和寫緩衝器屬性的cache寫策略.當處理器訪問主存的一個地區時,MPU比較該地區的訪問權 限屬性和當時的處理器模式.如果請求符合地區訪問標準,則MPU允許核心讀/寫主存;如果儲存空間請求導致儲存空間訪問違例,則MPU產生一個異常訊號.     地區與核心是馮.諾依曼結構還是哈佛結構無關.每個地區通過0~7的號碼來標識和引用.地區的屬性如下:
(1)地區可以相互重疊;
(2)每個地區都分配有一個優先順序,該優先順序與分配地區的許可權無關;
(3)當地區重疊時,具有最高優先順序的地區的屬性可以覆蓋其他地區的屬性,優先順序僅作用於重疊部分的地址;
(4)地區的起始地址必須是其大小的倍數;
(5)地區的大小可以是4KB~4GB之間的任何2的乘冪;
(6)訪問所定義地區外的儲存空間將產生異常.如果是核心預取指令,則MPU產生預取指令中止異常;如果是儲存空間資料請求,則產生資料中止異常.
    
    在啟用儲存空間保護單元之前,必須至少定義一個資料區域和一個指令地區,而且必須在啟用cache和寫緩衝器之前(或同時)啟用儲存空間保護單元.控制器通過 設定CP15的主寄存器c1~5來配置MPU.通過配置寄存器c2和c3來設定地區的cache和寫緩衝器的屬性,寄存器c5控制地區的存取權限,在寄存 器c6裡有8個或16個次寄存器用來定義每個地區的大小和位置.初始化MPU,cache和寫緩衝器需要以下步驟:
(1)使用CP15:c6來定義指令和資料區域的大小和位置
(2)使用CP15:c5來設定每個地區的存取權限
(3)分別使用CP15:c2和CP15:c3來設定每個地區的cache和寫緩衝器屬性
(4)使用CP15:c1來使能cache和MPU     每個核心有3個CP15寄存器用來控制地區的cache和寫緩衝器屬性.其中CP15:c2:c0:0和CP15:c2:c0:1兩個寄存器儲存D- cache和I-cache地區屬性;第三個寄存器,CP15:c3:c0:0用於儲存地區寫緩衝器屬性,並應用於儲存空間資料區域.當配置資料區域時,區 域的cache位和寫緩衝器位一起決定地區的策略.寫緩衝器位有2個用途:使能和禁止地區的寫緩衝器和設定地區的cache策略.地區的cache位控制 寫緩衝器位的作用.當cache位為0時,寫緩衝器位為1,則使能寫緩衝器;寫緩衝器位為0,則禁用寫緩衝器.當cache位為1時,cache和寫緩衝 器都被使能,此時寫緩衝器位決定cache策略.若寫緩衝器位為0,則地區使用直寫策略;若寫緩衝器位為1,則地區使用回寫策略.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.