為了從 ARM710a 和 StrongARM SA-110 等處理器獲得最大性能,必須啟用緩存。例如,應(yīng)用程序可以通過系統(tǒng)上的底層微內(nèi)核來完成這項(xiàng)工作。但是,如果沒有這樣的內(nèi)核,應(yīng)用程序?qū)⒉坏貌蛔约簡(jiǎn)⒂镁彺妗?/p>
ARM 處理器上使用了兩種主要的緩存系統(tǒng)。這些都是:
內(nèi)存管理單元(例如 ARM610、ARM710a、SA-110)
保護(hù)單元(例如 ARM940T)
本應(yīng)用筆記提供了一些示例代碼,用于在兩種類型的 ARM 處理器上啟用緩存,并概述了 ARMulator 的 PageTables 模塊。它還討論了:
@armasm@ 和 @tasm@ 中的重復(fù)組裝
@armasm@ 和 @tasm@ 條件匯編
@armasm@ 和 @tasm@ 中的宏
帶有 C 編譯器的內(nèi)聯(lián)匯編器
內(nèi)聯(lián)函數(shù)
內(nèi)存管理單元 (MMU)
內(nèi)存管理單元提供完整的虛擬內(nèi)存系統(tǒng)。有關(guān)更完整的說明,請(qǐng)參閱 ARM 體系結(jié)構(gòu)參考手冊(cè) (ARM DDI 0100)。簡(jiǎn)而言之,它使用片外頁(yè)表向處理器描述:
虛擬到物理地址映射
訪問權(quán)限
緩存和寫緩沖區(qū)控制。
支持三種頁(yè)面大?。?MB、64kB 和 4kB)。(還提供了 16kB 和 1kB 的子頁(yè)面用于訪問控制。)“域”的附加系統(tǒng)用于在多線程環(huán)境中提供有效的訪問保護(hù)。
例如,該系統(tǒng)允許多個(gè)具有按需分頁(yè)和交換的虛擬地址空間。UNIX 操作系統(tǒng)的風(fēng)格已經(jīng)移植到使用這種內(nèi)存管理單元的 ARM 計(jì)算機(jī)上。
該系統(tǒng)的優(yōu)點(diǎn)是:
以細(xì)粒度完全控制內(nèi)存
基于域的保護(hù)
虛擬到物理地址轉(zhuǎn)換。
主要缺點(diǎn)是它需要內(nèi)存頁(yè)表(如果不啟用 MMU,則無法啟用緩存)。
保護(hù)單元 (PU)
保護(hù)單元為更嵌入式的環(huán)境提供訪問和緩存控制。有關(guān)更完整的說明,請(qǐng)參閱 ARM940T 數(shù)據(jù)表 (ARM DDI 0092)。
簡(jiǎn)而言之,保護(hù)單元有一組片上寄存器,其中包含以下描述:
訪問權(quán)限
最多八個(gè)(可編程)內(nèi)存區(qū)域的緩存和寫緩沖區(qū)控制。
該系統(tǒng)允許在例如嵌入式應(yīng)用程序中使用基本的內(nèi)存保護(hù)和緩存控制。
該系統(tǒng)的優(yōu)點(diǎn)是:
訪問控制完全在片上(不需要任何片外表)
提供四級(jí)訪問控制、緩存和寫緩沖區(qū)控制
對(duì)指令和數(shù)據(jù)緩存的單獨(dú)控制。
缺點(diǎn)是:
區(qū)域數(shù)量少
區(qū)域大小和對(duì)齊的限制。
例子
內(nèi)存布局
盡管兩個(gè)系統(tǒng)不同,但都使用協(xié)處理器 15 來控制系統(tǒng)。兩個(gè)系統(tǒng)都有足夠的通用功能來區(qū)分正在使用的系統(tǒng)。例如,考慮圖 1 所示的內(nèi)存映射。
底部的 16MB 內(nèi)存被標(biāo)記為可緩存。這是應(yīng)用程序代碼和堆的基礎(chǔ)。
緊鄰 2GB 的 1MB 內(nèi)存也被標(biāo)記為可緩存,因?yàn)檫@是放置堆棧的地方。
其余內(nèi)存既不可緩存也不可緩沖。真實(shí)系統(tǒng)也可能將該內(nèi)存標(biāo)記為“不可訪問”(中止生成)。
編輯:hfy
-
ARM處理器
+關(guān)注
關(guān)注
6文章
360瀏覽量
41634
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論