新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM存儲器之:存儲管理單元MMU

        ARM存儲器之:存儲管理單元MMU

        作者: 時間:2013-09-30 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257009.htm

        15.5

        在創建多任務嵌入式系統時,最好有一個簡單的方式來編寫、裝載及運行各自獨立的任務。目前大多數的嵌入式系統不再使用自己定制的控制系統,而使用操作系統來簡化這個過程。較高級的操作系統采用基于硬件的來實現上述操作。

        提供的一個關鍵服務是使各個任務作為各自獨立的程序在其自己的私有存儲空間中運行。在帶MMU的操作系統控制下,運行的任務無須知道其他與之無關的任務的存儲需求情況,這就簡化了各個任務的設計。

        MMU提供了一些資源以允許使用虛擬存儲器(將系統物理存儲器重新編址,可將其看成一個獨立于系統物理存儲器的存儲空間)。MMU作為轉換器,將程序和數據的虛擬地址(編譯時的連接地址)轉換成實際的物理地址,即在物理主存中的地址。這個轉換過程允許運行的多個程序使用相同的虛擬地址,而各自存儲在物理存儲器的不同位置。

        這樣存儲器就有兩種類型的地址:虛擬地址和物理地址。虛擬地址由編譯器和連接器在定位程序時分配;物理地址用來訪問實際的主存硬件模塊(物理上程序存在的區域)。

        15.5.1MMU概述

        內存管理單位MMU對處理器內存提供了很好的管理。這種管理主要是通過一個叫作傳輸表的數據結構來實現的。這個傳輸表存在于內存中,它有多個稱為Entry的入口,每個入口定義了存儲空間的一個頁,頁的大小從1KB到1MB,同時定義了這些頁的屬性。

        系統中,MMU主要完成以下工作:

        ①虛擬存儲空間到物理存儲空間的映射,它能夠實現從虛擬地址到物理地址的轉換;

        ②存儲器訪問權限的控制;

        ③設置虛擬存儲空間的緩存特性。

        MMU通過它的協處理器寄存器來確定傳輸表在內存中的位置,并通過這些寄存器來向處理器提供內存訪問錯誤信息。

        從虛擬地址到物理地址的變換過程是查詢傳輸表的過程,由于傳輸表放在內存中,這個查詢過程通常代價很大。這個訪問時間通常是1~2個內存周期。為了減少平均內存訪問時間,結構體系中采用一個容量更小(通常為8~16個字)、訪問速度和CPU中通用寄存器相當的存儲器件來存放當前訪問需要的地址變換條目,它是一個小容量的Cache。這個小容量的頁表Cache稱為TLB(TranslationLookasideBuffer)。

        注意

        如果系統中使用數據和指令統一存儲系統,那么TLB也將是統一的。如果系統是數據和指令分開的存儲系統,那么TLB也將分為數據TLB和指令TLB。

        MMU可以將整個存儲空間分為最多16個域(domain)。每個域對應一定的內存區域,該內存區域具有相同的訪問控制屬性。MMU中寄存器c3用于控制與域有關的屬性配置。

        表15.20列出了與MMU有關的協處理器寄存器及其作用。

        表15.20 與MMU有關的協處理器寄存器

        協處理器寄存器

        作用

        c1中某些位

        配置MMU中的一些操作

        c2

        保存內存中頁表基地址

        c3

        設置域訪問權限

        c4

        保留

        c5

        內存訪問失效狀態標準

        c6

        內存訪問失效時失效地址

        c8

        控制與清除TLB內容相關的操作

        c10

        控制與鎖定TLB內容相關的操作

        15.5.2MMU與MPU

        在ARM體系結構中,MMU將MPU的功能大大地增加,使系統內存管理更加靈活、方便。在MPU中引入了“域”的概念來管理內存,而且域是在專用寄存器中設置的。而MMU將域設置從寄存器移到了內存單位,這樣使域的設置更加靈活,但同時也增加了系統訪問時間。

        另外,除了提供內存保護功能外,MMU還增加了虛擬地址到物理地址的映射。在只有MPU的系統中,每個任務被編譯和運行在彼此不同的、固定的主存地址空間,每個任務只能在一個進程空間中運行,任何兩個任務都不能在主存中有重疊地址。為了運行一個任務,一個保護區域被設置在固定地址的程序上,以允許任務訪問由該區域定義的一段存儲空間。保護區域的放置使得該任務得以運行,而其他任務空間被保護。

        而使用MMU中虛擬地址到物理地址的映射功能,即使任務被編譯、連接、運行在主存中有重疊地址的區域中,它們仍然可以運行。MMU中對虛存的支持可使構建后的嵌入式系統具有多個虛擬存儲映射和單個物理存儲器映射。每個任務擁有自己的虛擬存儲器映射,以編譯和連接組成此任務的代碼和數據。內核層管理各個任務在物理存儲器中的放置,使得它們在物理存儲器中擁有彼此不同的地址,這個地址與其設計時的虛擬運行地址不一樣。

        15.5.3內存訪問過程

        當處理器產生一個內存訪問請求時,將傳輸一個虛擬地址給MMU,MMU首先遍歷TLB(如果使用分離的存儲系統,它將分別遍歷數據TLB和指令TLB)。如果TLB中不保護虛擬地址入口(Entry),那么它將轉入保存在內存中的傳輸主表,來獲得所有訪問地址的物理地址和訪問權限。一旦訪問成功,它將新的虛擬地址入口(Entry)信息保存在TLB中,以備下次查詢使用。

        當得到了地址變換入口(Entry)后,將進行以下操作:

        ①根據入口(Entry)中的C(cachable)控制位和B(Bufferable)控制位決定是否緩存該內存訪問結果。

        ②根據訪問權限控制位和域訪問控制位確定該內存訪問是否被允許。如果該內存訪問不被允許,CP15向ARM處理器報告存儲訪問中止。

        ③對應不允許緩存的存儲訪問,直接得到物理地址訪問內存。對于允許緩存的存儲訪問,如果在Cache命中,則忽略物理地址;如果Cache沒有命中,則使用物理地址訪問內存,并把該數據塊讀到Cache中。

        圖15.23為帶Cache的MMU存儲訪問示意圖。

        圖15.23帶Cache的MMU存儲訪問示意圖

        存儲器相關文章:存儲器原理



        上一頁 1 2 3 4 5 6 7 8 9 10 下一頁

        關鍵詞: ARM 存儲管理單元 MMU

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 商城县| 黄平县| 柯坪县| 崇阳县| 龙州县| 仁化县| 汉寿县| 青浦区| 博客| 嘉义市| 北川| 安宁市| 梅州市| 台湾省| 泸定县| 安泽县| 简阳市| 青河县| 汉川市| 定日县| 承德县| 大新县| 镇安县| 城步| 饶阳县| 海南省| 临高县| 郁南县| 翁源县| 昌宁县| 威远县| 贵定县| 陇川县| 盐池县| 九寨沟县| 台中市| 昭平县| 鹤山市| 东海县| 文水县| 凤山县|