mmu就是記憶體管理單元,ppc上有兩種方式來實現mmu,block方式和segment方式。兩種方式在乙個嵌入式系統中可以並存,但block方式優先於segment方式。
利用block方式,ppc需要利用到bat,可以稱之為block暫存器(是一種spr)。在ppc750中一共有16個bat,分成2類,分別是ibat與dbat(指令與資料),這兩類中又分為四組,每組由lower bat和upperbat組成。ppc定址時,通過lowerbat與upperbat來找到實體地址,通過暫存器中的bit來判斷是否進行記憶體保護等功能。
segment方式也就是段頁式方式,首先由os產生乙個頁表,其大小應該由實際的物理記憶體決定。利用段頁式定址比較簡單:ppc首先查詢tlb(硬體實現的頁表快取),如果在tlb中找不到,就去查詢頁表。頁表由若干個pteg組成,乙個pteg又由8個pte組成,pte也就是每個頁的資訊。
vxworks有自己的mmu實現,但我們的系統中是自己開發的,通過syslib.c中的block和頁資訊影射來設定具體記憶體的管理方式,然後在系統啟動後,接管vxworks的頁表和bat,並通過我們的程式來實現mmu。
mmu是很有意思的一部分,有時間會詳細把這部分內容翻譯過來。
MMU記憶體管理單元簡介
mmu 全稱叫做 memory manage unit,也就是記憶體管理單元。在老版本的 linux 中要求處理器必須有 mmu,但是現在 linux 核心已經支援無 mmu 的處理器了。mmu 主要完成的功能如下 虛擬位址 va,virtual address 實體地址 pa,physcicala...
mmu的理解(一)
對於想理解mmu的軟硬體所有機制的人來說,理解mmu很蛋疼,就和理解網絡卡工作一樣疼!一點點來吧。首先,頁 是實際物理記憶體管理的基本單位,頁 的大小和體系結構相關,大多數32位機器支援4kb大小的頁,1g記憶體就被分成262144個頁,64位的一般支援8kb大小的頁。ucos不支援mmu,linu...
mmu的理解(二)
實際cpu在執行某程式時,不會在載入記憶體的程式段中全段隨機亂飛亂跳,而是會在某段時間內集中在程式的某段 中執行。這樣就有mmu換入換出的意義了,mmu將 執行集中段 載入記憶體,而在需要別的段時再載入,而不會出現我以前認為的程式段將頻繁的換入換出反而造成執行緩慢。此外,可執行程式在載入記憶體後,t...