資料介紹
15.5 存儲管理單元MMU
在創(chuàng)建多任務嵌入式系統(tǒng)時,最好有一個簡單的方式來編寫、裝載及運行各自獨立的任務。目前大多數(shù)的嵌入式系統(tǒng)不再使用自己定制的控制系統(tǒng),而使用操作系統(tǒng)來簡化這個過程。較高級的操作系統(tǒng)采用基于硬件的存儲管理單元MMU來實現(xiàn)上述操作。
MMU提供的一個關鍵服務是使各個任務作為各自獨立的程序在其自己的私有存儲空間中運行。在帶MMU的操作系統(tǒng)控制下,運行的任務無須知道其他與之無關的任務的存儲需求情況,這就簡化了各個任務的設計。
MMU提供了一些資源以允許使用虛擬存儲器(將系統(tǒng)物理存儲器重新編址,可將其看成一個獨立于系統(tǒng)物理存儲器的存儲空間)。MMU作為轉(zhuǎn)換器,將程序和數(shù)據(jù)的虛擬地址(編譯時的連接地址)轉(zhuǎn)換成實際的物理地址,即在物理主存中的地址。這個轉(zhuǎn)換過程允許運行的多個程序使用相同的虛擬地址,而各自存儲在物理存儲器的不同位置。
這樣存儲器就有兩種類型的地址:虛擬地址和物理地址。虛擬地址由編譯器和連接器在定位程序時分配;物理地址用來訪問實際的主存硬件模塊(物理上程序存在的區(qū)域)。
15.5.1 MMU概述
內(nèi)存管理單位MMU對處理器內(nèi)存提供了很好的管理。這種管理主要是通過一個叫作傳輸表的數(shù)據(jù)結構來實現(xiàn)的。這個傳輸表存在于內(nèi)存中,它有多個稱為Entry的入口,每個入口定義了存儲空間的一個頁,頁的大小從1KB到1MB,同時定義了這些頁的屬性。
ARM系統(tǒng)中,MMU主要完成以下工作:
?、?虛擬存儲空間到物理存儲空間的映射,它能夠?qū)崿F(xiàn)從虛擬地址到物理地址的轉(zhuǎn)換;
② 存儲器訪問權限的控制;
?、?設置虛擬存儲空間的緩存特性。
MMU通過它的協(xié)處理器寄存器來確定傳輸表在內(nèi)存中的位置,并通過這些寄存器來向ARM處理器提供內(nèi)存訪問錯誤信息。
從虛擬地址到物理地址的變換過程是查詢傳輸表的過程,由于傳輸表放在內(nèi)存中,這個查詢過程通常代價很大。這個訪問時間通常是1~2個內(nèi)存周期。為了減少平均內(nèi)存訪問時間,ARM結構體系中采用一個容量更小(通常為8~16個字)、訪問速度和CPU中通用寄存器相當?shù)拇鎯ζ骷泶娣女斍霸L問需要的地址變換條目,它是一個小容量的Cache。這個小容量的頁表Cache稱為TLB(Translation Lookaside Buffer)。
注意如果系統(tǒng)中使用數(shù)據(jù)和指令統(tǒng)一存儲系統(tǒng),那么TLB也將是統(tǒng)一的。如果系統(tǒng)是數(shù)據(jù)和指令分開的存儲系統(tǒng),那么TLB也將分為數(shù)據(jù)TLB和指令TLB。
MMU可以將整個存儲空間分為最多16個域(domain)。每個域?qū)欢ǖ膬?nèi)存區(qū)域,該內(nèi)存區(qū)域具有相同的訪問控制屬性。MMU中寄存器c3用于控制與域有關的屬性配置。
表15.20列出了與MMU有關的協(xié)處理器寄存器及其作用。
表15.20 與MMU有關的協(xié)處理器寄存器
協(xié)處理器寄存器作 用
c1中某些位配置MMU中的一些操作
c2保存內(nèi)存中頁表基地址
c3設置域訪問權限
c4保留
c5內(nèi)存訪問失效狀態(tài)標準
c6內(nèi)存訪問失效時失效地址
c8控制與清除TLB內(nèi)容相關的操作
c10控制與鎖定TLB內(nèi)容相關的操作
15.5.2 MMU與MPU
在ARM體系結構中,MMU將MPU的功能大大地增加,使系統(tǒng)內(nèi)存管理更加靈活、方便。在MPU中引入了“域”的概念來管理內(nèi)存,而且域是在專用寄存器中設置的。而MMU將域設置從寄存器移到了內(nèi)存單位,這樣使域的設置更加靈活,但同時也增加了系統(tǒng)訪問時間。
另外,除了提供內(nèi)存保護功能外,MMU還增加了虛擬地址到物理地址的映射。在只有MPU的系統(tǒng)中,每個任務被編譯和運行在彼此不同的、固定的主存地址空間,每個任務只能在一個進程空間中運行,任何兩個任務都不能在主存中有重疊地址。為了運行一個任務,一個保護區(qū)域被設置在固定地址的程序上,以允許任務訪問由該區(qū)域定義的一段存儲空間。保護區(qū)域的放置使得該任務得以運行,而其他任務空間被保護。
而使用MMU中虛擬地址到物理地址的映射功能,即使任務被編譯、連接、運行在主存中有重疊地址的區(qū)域中,它們?nèi)匀豢梢赃\行。MMU中對虛存的支持可使構建后的嵌入式系統(tǒng)具有多個虛擬存儲映射和單個物理存儲器映射。每個任務擁有自己的虛擬存儲器映射,以編譯和連接組成此任務的代碼和數(shù)據(jù)。內(nèi)核層管理各個任務在物理存儲器中的放置,使得它們在物理存儲器中擁有彼此不同的地址,這個地址與其設計時的虛擬運行地址不一樣。
15.5.3 內(nèi)存訪問過程
當處理器產(chǎn)生一個內(nèi)存訪問請求時,將傳輸一個虛擬地址給MMU,MMU首先遍歷TLB(如果使用分離的存儲系統(tǒng),它將分別遍歷數(shù)據(jù)TLB和指令TLB)。如果TLB中不保護虛擬地址入口(Entry),那么它將轉(zhuǎn)入保存在內(nèi)存中的傳輸主表,來獲得所有訪問地址的物理地址和訪問權限。一旦訪問成功,它將新的虛擬地址入口(Entry)信息保存在TLB中,以備下次查詢使用。
當?shù)玫搅说刂纷儞Q入口(Entry)后,將進行以下操作:
?、?根據(jù)入口(Entry)中的C(cachable)控制位和B(Bufferable)控制位決定是否緩存該內(nèi)存訪問結果。
?、?根據(jù)訪問權限控制位和域訪問控制位確定該內(nèi)存訪問是否被允許。如果該內(nèi)存訪問不被允許,CP15向ARM處理器報告存儲訪問中止。
?、?對應不允許緩存的存儲訪問,直接得到物理地址訪問內(nèi)存。對于允許緩存的存儲訪問,如果在Cache命中,則忽略物理地址;如果Cache沒有命中,則使用物理地址訪問內(nèi)存,并把該數(shù)據(jù)塊讀到Cache中。
圖15.23為帶Cache的MMU存儲訪問示意圖。

圖15.23 帶Cache的MMU存儲訪問示意圖
15.5.4 MMU的使能與禁止
MMU的使能/禁止可以通過CP15寄存器的c1的bit[0]來控制。
· bit[0]=0,MMU禁止。
· bit[0]=1,MMU使能。
下面的例子顯示了典型的MMU使能過程。
【例15.4】典型的MMU使能過程。
MRC p15,0,r0,c1,0,0
ORR r0,#01
MCR p15,0,r0,c1,0,0
當MMU被禁止時,存儲訪問執(zhí)行下列過程。
?、?當禁止MMU時,存儲系統(tǒng)是否支持Cache和寫緩存,根據(jù)不同芯片設計不同而有所不同(ARM公司將設計權交給芯片廠商)。
· 如果芯片規(guī)定當禁止MMU時禁止Cache和寫緩存,則存儲訪問不考慮C、B控制位。
· 如果芯片規(guī)定禁止MMU時使能Cache和寫緩存,則數(shù)據(jù)訪問被視為無Cache(uncachable)和寫緩存(unbufferable)的,即C=0、B=0。讀取指令時,如果系統(tǒng)是統(tǒng)一的TLB,則C=0;如果使用分開的TLB,則C=1。
?、?存儲訪問不受權限控制,MMU也不會產(chǎn)生存儲訪問中止信號。
?、?所有物理地址和虛擬地址相等,即使用平板存儲模式。
使能/禁止MMU時需要注意以下幾個問題。
· 在使能MMU之前,正確的傳輸表要在內(nèi)存中事先建立,CP15的相關寄存器必須完成初始化操作。
· 如果使用的不是平板存儲模式(物理地址和對應虛擬地址相等),在禁止/使能MMU時,虛擬地址和物理地址的對應關系發(fā)生變化,這時應該清除(Flush)Cache中的當前地址變換入口(Entry)。
· 如果完成禁止/使能MMU的代碼的物理地址和虛擬地址不同,則禁止/使能MMU將帶來很大麻煩,因此建議完成使能/禁止MMU的代碼的物理地址和虛擬地址相同。
在創(chuàng)建多任務嵌入式系統(tǒng)時,最好有一個簡單的方式來編寫、裝載及運行各自獨立的任務。目前大多數(shù)的嵌入式系統(tǒng)不再使用自己定制的控制系統(tǒng),而使用操作系統(tǒng)來簡化這個過程。較高級的操作系統(tǒng)采用基于硬件的存儲管理單元MMU來實現(xiàn)上述操作。
MMU提供的一個關鍵服務是使各個任務作為各自獨立的程序在其自己的私有存儲空間中運行。在帶MMU的操作系統(tǒng)控制下,運行的任務無須知道其他與之無關的任務的存儲需求情況,這就簡化了各個任務的設計。
MMU提供了一些資源以允許使用虛擬存儲器(將系統(tǒng)物理存儲器重新編址,可將其看成一個獨立于系統(tǒng)物理存儲器的存儲空間)。MMU作為轉(zhuǎn)換器,將程序和數(shù)據(jù)的虛擬地址(編譯時的連接地址)轉(zhuǎn)換成實際的物理地址,即在物理主存中的地址。這個轉(zhuǎn)換過程允許運行的多個程序使用相同的虛擬地址,而各自存儲在物理存儲器的不同位置。
這樣存儲器就有兩種類型的地址:虛擬地址和物理地址。虛擬地址由編譯器和連接器在定位程序時分配;物理地址用來訪問實際的主存硬件模塊(物理上程序存在的區(qū)域)。
15.5.1 MMU概述
內(nèi)存管理單位MMU對處理器內(nèi)存提供了很好的管理。這種管理主要是通過一個叫作傳輸表的數(shù)據(jù)結構來實現(xiàn)的。這個傳輸表存在于內(nèi)存中,它有多個稱為Entry的入口,每個入口定義了存儲空間的一個頁,頁的大小從1KB到1MB,同時定義了這些頁的屬性。
ARM系統(tǒng)中,MMU主要完成以下工作:
?、?虛擬存儲空間到物理存儲空間的映射,它能夠?qū)崿F(xiàn)從虛擬地址到物理地址的轉(zhuǎn)換;
② 存儲器訪問權限的控制;
?、?設置虛擬存儲空間的緩存特性。
MMU通過它的協(xié)處理器寄存器來確定傳輸表在內(nèi)存中的位置,并通過這些寄存器來向ARM處理器提供內(nèi)存訪問錯誤信息。
從虛擬地址到物理地址的變換過程是查詢傳輸表的過程,由于傳輸表放在內(nèi)存中,這個查詢過程通常代價很大。這個訪問時間通常是1~2個內(nèi)存周期。為了減少平均內(nèi)存訪問時間,ARM結構體系中采用一個容量更小(通常為8~16個字)、訪問速度和CPU中通用寄存器相當?shù)拇鎯ζ骷泶娣女斍霸L問需要的地址變換條目,它是一個小容量的Cache。這個小容量的頁表Cache稱為TLB(Translation Lookaside Buffer)。

MMU可以將整個存儲空間分為最多16個域(domain)。每個域?qū)欢ǖ膬?nèi)存區(qū)域,該內(nèi)存區(qū)域具有相同的訪問控制屬性。MMU中寄存器c3用于控制與域有關的屬性配置。
表15.20列出了與MMU有關的協(xié)處理器寄存器及其作用。
表15.20 與MMU有關的協(xié)處理器寄存器
協(xié)處理器寄存器作 用
c1中某些位配置MMU中的一些操作
c2保存內(nèi)存中頁表基地址
c3設置域訪問權限
c4保留
c5內(nèi)存訪問失效狀態(tài)標準
c6內(nèi)存訪問失效時失效地址
c8控制與清除TLB內(nèi)容相關的操作
c10控制與鎖定TLB內(nèi)容相關的操作
15.5.2 MMU與MPU
在ARM體系結構中,MMU將MPU的功能大大地增加,使系統(tǒng)內(nèi)存管理更加靈活、方便。在MPU中引入了“域”的概念來管理內(nèi)存,而且域是在專用寄存器中設置的。而MMU將域設置從寄存器移到了內(nèi)存單位,這樣使域的設置更加靈活,但同時也增加了系統(tǒng)訪問時間。
另外,除了提供內(nèi)存保護功能外,MMU還增加了虛擬地址到物理地址的映射。在只有MPU的系統(tǒng)中,每個任務被編譯和運行在彼此不同的、固定的主存地址空間,每個任務只能在一個進程空間中運行,任何兩個任務都不能在主存中有重疊地址。為了運行一個任務,一個保護區(qū)域被設置在固定地址的程序上,以允許任務訪問由該區(qū)域定義的一段存儲空間。保護區(qū)域的放置使得該任務得以運行,而其他任務空間被保護。
而使用MMU中虛擬地址到物理地址的映射功能,即使任務被編譯、連接、運行在主存中有重疊地址的區(qū)域中,它們?nèi)匀豢梢赃\行。MMU中對虛存的支持可使構建后的嵌入式系統(tǒng)具有多個虛擬存儲映射和單個物理存儲器映射。每個任務擁有自己的虛擬存儲器映射,以編譯和連接組成此任務的代碼和數(shù)據(jù)。內(nèi)核層管理各個任務在物理存儲器中的放置,使得它們在物理存儲器中擁有彼此不同的地址,這個地址與其設計時的虛擬運行地址不一樣。
15.5.3 內(nèi)存訪問過程
當處理器產(chǎn)生一個內(nèi)存訪問請求時,將傳輸一個虛擬地址給MMU,MMU首先遍歷TLB(如果使用分離的存儲系統(tǒng),它將分別遍歷數(shù)據(jù)TLB和指令TLB)。如果TLB中不保護虛擬地址入口(Entry),那么它將轉(zhuǎn)入保存在內(nèi)存中的傳輸主表,來獲得所有訪問地址的物理地址和訪問權限。一旦訪問成功,它將新的虛擬地址入口(Entry)信息保存在TLB中,以備下次查詢使用。
當?shù)玫搅说刂纷儞Q入口(Entry)后,將進行以下操作:
?、?根據(jù)入口(Entry)中的C(cachable)控制位和B(Bufferable)控制位決定是否緩存該內(nèi)存訪問結果。
?、?根據(jù)訪問權限控制位和域訪問控制位確定該內(nèi)存訪問是否被允許。如果該內(nèi)存訪問不被允許,CP15向ARM處理器報告存儲訪問中止。
?、?對應不允許緩存的存儲訪問,直接得到物理地址訪問內(nèi)存。對于允許緩存的存儲訪問,如果在Cache命中,則忽略物理地址;如果Cache沒有命中,則使用物理地址訪問內(nèi)存,并把該數(shù)據(jù)塊讀到Cache中。
圖15.23為帶Cache的MMU存儲訪問示意圖。

圖15.23 帶Cache的MMU存儲訪問示意圖
15.5.4 MMU的使能與禁止
MMU的使能/禁止可以通過CP15寄存器的c1的bit[0]來控制。
· bit[0]=0,MMU禁止。
· bit[0]=1,MMU使能。
下面的例子顯示了典型的MMU使能過程。
【例15.4】典型的MMU使能過程。
MRC p15,0,r0,c1,0,0
ORR r0,#01
MCR p15,0,r0,c1,0,0
當MMU被禁止時,存儲訪問執(zhí)行下列過程。
?、?當禁止MMU時,存儲系統(tǒng)是否支持Cache和寫緩存,根據(jù)不同芯片設計不同而有所不同(ARM公司將設計權交給芯片廠商)。
· 如果芯片規(guī)定當禁止MMU時禁止Cache和寫緩存,則存儲訪問不考慮C、B控制位。
· 如果芯片規(guī)定禁止MMU時使能Cache和寫緩存,則數(shù)據(jù)訪問被視為無Cache(uncachable)和寫緩存(unbufferable)的,即C=0、B=0。讀取指令時,如果系統(tǒng)是統(tǒng)一的TLB,則C=0;如果使用分開的TLB,則C=1。
?、?存儲訪問不受權限控制,MMU也不會產(chǎn)生存儲訪問中止信號。
?、?所有物理地址和虛擬地址相等,即使用平板存儲模式。
使能/禁止MMU時需要注意以下幾個問題。
· 在使能MMU之前,正確的傳輸表要在內(nèi)存中事先建立,CP15的相關寄存器必須完成初始化操作。
· 如果使用的不是平板存儲模式(物理地址和對應虛擬地址相等),在禁止/使能MMU時,虛擬地址和物理地址的對應關系發(fā)生變化,這時應該清除(Flush)Cache中的當前地址變換入口(Entry)。
· 如果完成禁止/使能MMU的代碼的物理地址和虛擬地址不同,則禁止/使能MMU將帶來很大麻煩,因此建議完成使能/禁止MMU的代碼的物理地址和虛擬地址相同。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- (網(wǎng)盤)ARM嵌入式Linux系統(tǒng)開發(fā)詳解
- 如何配置存儲器保護單元(MPU) 13次下載
- ARM920T的MMU與Cache介紹 14次下載
- ARM公司的內(nèi)核種類詳細資料說明 16次下載
- AM1707 ARM微處理器英文原版資料詳細概述 0次下載
- 基于OTP存儲器存儲單元讀取閥值 11次下載
- uCOS_ARM移植要點詳解 11次下載
- ARM_C語言程序設計詳解 32次下載
- ARM存儲器 1次下載
- 基于ARM 的汽車電子控制系統(tǒng)單元設計
- ARM指令集詳解
- arm指令詳解手冊(精華)
- ARM 內(nèi)存管理單元MMU詳細圖解資料
- arm匯編指令詳解
- S3C2410內(nèi)存管理單元MMU基礎實驗
- MMU內(nèi)存管理單元的工作原理和作用 2496次閱讀
- Arm SoC的電源和時鐘管理詳解 1847次閱讀
- ARM SMMU Data structures概述 1047次閱讀
- 為什么沒有MMU就無法運行Linux系統(tǒng) 936次閱讀
- 動態(tài)隨機存儲器集成工藝(DRAM)詳解 9562次閱讀
- RTOS多線程必須要MMU才行? 2478次閱讀
- 開啟MMU會出現(xiàn)的問題及解決方案 2233次閱讀
- 詳解MMU相關概念及工作原理 7486次閱讀
- 一文詳解ARM7_ARM9和ARM11的區(qū)別 4w次閱讀
- ARM程序的執(zhí)行過程詳解 7240次閱讀
- 嵌入式Linux系統(tǒng)移植的實現(xiàn) 2284次閱讀
- 淺談ARM MMU工作原理和過程 3719次閱讀
- 對MMU和頁表工作機制的簡單評析 1.1w次閱讀
- E2PROM的存儲單元 1593次閱讀
- 熔絲型PROM的存儲單元 2386次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7藍牙設備在嵌入式領域的廣泛應用
- 0.63 MB | 3次下載 | 免費
- 89天練會電子電路識圖
- 5.91 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論