ARM儲存管理

2021-06-23 06:15:31 字數 2316 閱讀 4668

本文對arm儲存管理進行簡要歸納,不涉及具體對映和暫存器設定。

一、mmu

記憶體管理部件使用記憶體對映技術實現虛擬空間到物理空間的對映。嵌入式系統中通常把異常中斷向量表存放在ram中。當系統加電時,將rom/flash對映為位址0,這樣可以進行一些初始化處理;當這些初始化處理完成後將sdram對映為位址0,並把系統程式載入到sdram中執行,這樣很好的解決了嵌入式系統的需求。

arm中,儲存系統通常是通過系統控制協處理器cp15完成的。cp15包含16個32位的暫存器。

arm中採用頁式虛擬儲存管理。頁的大小分為粗粒度和細粒度兩種。頁表是實現位址轉換的手段,位於記憶體中。

arm支援的儲存塊大小有:

段:大小為1mb的儲存塊

大頁:大小為64kb的儲存塊

小頁:大小為4kb的儲存塊

極小頁:大小為1kb的儲存塊

二、高速緩衝儲存器和寫緩衝區

基於時間區域性性和空間區域性性原理,在主儲存器和cpu之間新增高速緩衝儲存器(cache)和寫緩衝區(write buffer),來提高儲存系統的效能。但由於資料將存在於系統中不同的物理位置,可能造成資料的不一致性,由於寫緩衝區的優化作用,可能有些寫操作的執行順序不是使用者期望的順序,從而造成操作錯誤。

1.        寫通(write-through)cache和寫回(write-back)cache

寫通:cpu在執行寫操作時,必須把資料同時寫入cache和主存。

寫回:cpu在執行寫操作時,被寫的資料只寫入cache,不寫入主存。

2.         緩衝技術的注意事項

cache通常需要儲存器件具有下面的特性:

ø         讀取操作將返回最後一次寫入的內容,而且沒有其他的***。

ø         寫操作除了影響目標單元的內容外,沒有其他***。

ø         對同一目標單元的兩次連續讀取操作將得到相同的結果。

ø         對同一目標單元的兩次連續寫操作將會把第二次寫操作的值寫入目標單元,第一次寫操作將沒有意義。

在arm中,i/o操作通常被對映成儲存器操作,i/o空間與儲存器空間不加區分,所以這些儲存器對映的i/o空間就不滿足cache所要求的上述特性。因而對於儲存器對映的i/o空間不能使用cache技術。由於寫緩衝技術可能推遲寫操作,因此儲存器對映的i/o空間也不能用寫緩衝。將儲存器對映的i/o空間設定成uncached是為了有效的防止硬體系統優化師刪除掉有用的儲存訪問操作。如果用c語言訪問儲存器的i/o空間時,僅僅將儲存器對映的i/o空間設定成uncached是不夠的,還需要使用volatile關鍵字來防止編譯器在優化時刪掉有用的儲存器訪問操作。

3、  儲存系統的一致性問題

1)        位址對映關係變化造成的資料不一致

l           如果資料cache為寫回型別的cache,清空該資料cache

l           使資料cache中相應塊無效

l           使指令cache中相應塊無效

l           將寫緩衝中被延遲的寫操作全部執行

l           有些情況可能還要求相關的儲存區域被設定成非緩衝的

2)      dma造成的資料不一致

l           將dma訪問的儲存區域設定成非緩衝的(uncachable及unbufferable)

l           將dma訪問的儲存區域所涉及的資料cache中塊設定成無效,或者清空資料cache

l           清空寫緩衝區(執行寫緩衝區中延遲的所有寫操作)

l           在dma操作期間限制處理器訪問dma的儲存區域。

三、快速上下文切換(fcse)

1.      fcse原理

通過修改系統中不同程序的虛擬位址,避免在程序間切換時造成的虛擬位址到實體地址的重對映(涉及重建mmu中的頁表,使tlb和cache失效),從而提高系統效能。

2.      fcse實現

arm系統將4gb虛擬位址空間分為128個程序空間塊,每個程序空間塊大小為32mb。每個程序空間塊可以包含乙個程序,該程序可以使用虛擬位址空間0x00000000-0x01ffffff,這個位址範圍就是cpu看到的程序的虛擬空間,系統128個不同程序空間塊的編號0—127,編號為i的程序空間塊中的程序實際使用的虛擬位址空間為(i×0x02000000-- i×0x02000000+0x01ffffff),這個位址空間是系統中除了cpu之外的其他部分看到的該程序所占用的虛擬位址空間。

ARM儲存管理(二)

4 二級描述符 每個二級粗表項對應 4kb虛擬位址的對映,而二級細表項對應 1kb虛擬位址對映。每一項都是乙個頁描述符,分別可以描述一塊大於 4kb或 1kb大小的頁,此時同乙個描述符會被多次使用,以確保不同虛擬位址都訪問相同的物理頁。根據二級描述符的最低兩位 l位 1 0 0b00 此時所關聯的虛...

arm電源管理

由於arm系統中沒有bios裝置,所以只能為arm系統建立乙個虛擬的字元裝置與使用者空間進行通訊.這就是 arch arm kernel amp.c 1.工作原理 這個apm中實現乙個misc裝置,實質上也是乙個字元裝置,misc裝置的主裝置號是10,而apm bios作為一 個misc裝置,次裝置...

ARM儲存器介紹

arm授權給晶元廠商的arm的ip核主要有ahp和apb兩條匯流排,各廠商在這兩條匯流排上新增各種外設和儲存器。大端 小端 目前幾乎所有的mcu的程式儲存都是flash,分為片內和片外。而片內的ram為sram,速度較sdram快。外擴flash種類 1 nor flash nor flash 讀取...