arm是統一編址的,也就是外設和記憶體進行統一的編址,共同形成了4g實體地址空間(32位為例子)。
大家知道操作外設時,實際上操作的是讀寫裝置相關的暫存器,這些與外設相關的暫存器與不同操作模式下r0-r15那些暫存器是不同的,這些暫存器並不是所謂的物理上的暫存器,實際上是所謂的io埠,通常會有控制、狀態、資料的分類。他們被連續地編址,對於其編址的方式有兩種一種是io對映、一種是記憶體對映。io對映是對x86為例的複雜指令集來說的,需要專門的io控制指令,不詳談。
記憶體對映是對於統一編址的精簡指令集計算機arm等來說的。具體的方法就是將io埠對映成和記憶體一樣的實體地址,然後與記憶體一起進行統一編址,或者說成為了記憶體的一部分,當然還可以理解記憶體對映的意思是可以用訪問記憶體的方式進行io位址的訪問,記憶體和io位址一起編碼為cpu識別的位址哦。然後記憶體+io埠位址=4gb的定址空間。
那麼接下來還有個問題就是這種編址的硬體實現?這就要詳見arm的amba(advanced microcontroller busarchitecture)了,這是目前晶元匯流排的主流標準。共定義了3組匯流排:高效能匯流排(advanced high performance bus,ahb)、系統匯流排(advanced system bus,asb)和外設匯流排(advanced peripheral bus,apb)。不同的匯流排上掛接著不同的外設和儲存器,大部分由三態門控制。比如,當ahb匯流排上的主裝置讀寫從裝置時,發出的位址經過ahb匯流排的解碼器產生該位址所對應從裝置的選擇訊號,選中從裝置;這樣就可以對從裝置進行讀寫啦。或者可以這樣想ahb匯流排上的解碼器根據位址產生相應的片選訊號,選中對應的裝置。對於硬體的實現我們這是簡單地理解以便更好地體會上述編址。涉及到具體的硬體讀寫操作,位址的硬體實現會提到很多的解碼器、三態門、匯流排、還有時序等等具體情況具體分析,在此不做詳述。
cache與記憶體的對映
cache與記憶體的對映 無敵寶貝 cache高速緩衝儲存器 一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問。儲存器的高速緩衝儲存器儲存了頻繁訪問的 ram 位置的內容及這些資料項的儲存位址。當 處理器引用儲存器中的某位址時,高速緩衝儲存器便檢查是否存有該位址。如果存有該位址,則將資...
ARM的儲存器對映與儲存器重對映機制
arm的儲存器對映與儲存器重對映機制 今天終於明白了arm的儲存器對映與儲存器重對映機制,我覺得這一切都是為了中斷向量得到有效的執行啊。下面可以進一步了學習啦!先前在課上在聽老師講arm的儲存器對映與儲存器重對映時,聽明白了arm的儲存器對映是怎麼個回事!1.儲存器對映 處理器產生的位址按其某種規則...
struct class和STL的統一記憶體管理
利用c 的new和delete操作符過載特性,可以對自定義的struct和class進行統一記憶體管理,再加上stl allocator的開放特性,便可以將stl容器物件的記憶體管理併入struct和class的記憶體管理,進而將這三者的記憶體管理統一。首先實現自定義的記憶體管理演算法框架,開放介面...