Arm核920T效能優化之Cache

2021-05-27 15:10:15 字數 3584 閱讀 3153

文件整理自arm system developer's guide

程式在執行過程中會頻繁的執行小範圍的迴圈**,而這些迴圈又會對資料儲存器的區域性區域反覆訪問。

cache同時使用了時間和空間的區域性性原理。如果對儲存器的訪問受時間影響,在時間上有連續性,則這種時間上密集的訪問被稱為時間區域性性訪問;如果多次對儲存器的位址訪問相近,則這種空間上鄰近的訪問被稱為空間區域性性訪問。

一.儲存層次:

最頂層:儲存層次的最頂層在處理器核心中,該儲存器被稱為暫存器檔案。這些暫存器被整合在處理器核心中,在系統中提供最快的儲存訪問。

一級儲存:緊耦合儲存器(tcm),一級cache和主存在這一級。

二級儲存:輔助儲存器(輔助儲存器),用來儲存正在執行的較大的程式未被使用的部分,或者存放當前沒有執行的程式。

二.寫緩衝器作為臨時緩衝幫助cache釋放儲存空間。

三.邏輯mmu與物理mmu

如果帶cache的處理器核支援虛擬儲存,那麼cache就可以放在處理器核心和儲存管理單元mmu之間或者mmu與物理儲存器之間。

邏輯cache在虛擬位址空間儲存資料,它位於處理器和mmu之間。處理器可以直接通過邏輯cache訪問資料而無需通過mmu。

物理cache使用實體地址儲存資料,它位於mmu和主存之間。當處理器訪問儲存器時,mmu必須先把虛擬位址轉化為實體地址,cache儲存器才可向核心提供資料。

從arm7~arm10都是使用邏輯cache,arm11使用物理cache。

四.cache的結構

帶有cache的arm核心採用了2種匯流排結構:馮諾依曼結構和哈佛結構。在使用馮諾依曼結構的處理器核心中,只有乙個資料和指令公用的cache,這種cache被稱作統一cache。哈佛結構將指令匯流排和資料匯流排分離,存在指令cache(i-cache)和資料cache(d-cache),這種型別的cache被稱作分離cache。上邊的圖是統一cache,cache的兩個主要組成部分cache控制器和cache儲存器。cache儲存器是乙個專用的儲存器陣列,其訪問單元稱為cache行。cache有3個主要的部分:目錄儲存段(directory store),狀態資訊段(status information),資料項段(data section)。每乙個cache行都由這3部分組成。cache使用目錄儲存段來記錄每個cache行是由主存的什麼地方拷貝而來。該目錄項被稱為「cache標籤」。狀態位用來記錄狀態資訊,2個常見的狀態位是有效位(valid bit)和髒位(dirty bit)。cache儲存器必須儲存來自主存的資訊,這些資訊被放在資料項段裡。

五.cache與主存的關係

1)直接對映

主存的每個位址都對應著cache儲存器的唯一的一行。如圖,組索引(set index)可以確切的指出所有以0x824結尾的記憶體位址在cache中所唯一對應的儲存位址;資料索引域可以確定字,半字或者位元組在該cache行中的位置;標籤域用來與cache行中的cache-tag相比較。

直接對映這種設計使每個主存塊在cache中只有乙個特定的行可以存放,那麼如果程式同時用到對應於cache同一行的2個主存塊,那麼就會發生衝突。衝突的結果就是導致cache行的頻繁置換。這就是直接對映cache的顛簸問題(thrashing)。重複的cache失效導致cache控制器連續不斷的將當前不用的過程置換出cache,這就是cache顛簸。

2)組相聯

為了減少cache的顛簸頻率,某些cache使用了其他設計。將cache分成一些容量相同的小單元,稱作路(way)。這裡乙個組索引對應多個cache行,即在每一路裡都有乙個cache行與之對應,組索引相同的cache行被稱作處於同乙個組(set)裡,這也是組索引命令的由來。擁有相同組索引的cache行稱為組相聯的。在cache的同乙個組當中,資料放置的位置具有排他性,可以防止同樣的資料被重複放在乙個組的不同的cache行。

3)全聯

隨著cache控制器的相聯度提高,衝突的可能性減小了。理想的目標是,盡量提高組相聯程度,使主存位址能夠對映到任意cache行,這樣的cache被稱為全相聯cache。

硬體設計者提高相聯度的一種方法就是使用內容定址儲存器cam(content addressable memory)。在arm920t處理器核中,arm使用了cam來定位cache-tag。arm920t中的cache是64路組相聯的。cam使用一組比較器,以比較輸入的標籤位址和儲存在每乙個有效cache行中的cache-tag。cam採用了與ram相反的工作方式:ram是得到乙個位址後再給出資料;而cam則是在檢測到給定的資料值在儲存器中後,再給出該資料的位址。如圖是arm940t的cache結構圖。訪問位址的tag部分被作為4個cam的輸入,輸入標籤同時與儲存在64路中的所有cache標籤相比較。如果有乙個匹配,那麼資料就由cache儲存器提供;如果沒有匹配,儲存器控制器就會產生乙個失效(miss)訊號。

六.cache策略

cache策略包括寫策略,替換策略及分配策略。

1)寫策略

寫策略包括直寫法(writethrough)和回寫法(writeback)。

直寫法:

如果cache控制器使用直寫策略,那麼處理器核寫cache命中時,將同時修改cache和主存中的內容,以確保cache和主存資料的一致性。

回寫法:

如果cache控制器使用回寫策略,那麼處理器核寫cache命中時,只向cache儲存器寫資料而不立即寫入主存。配置成回寫法的cache要使用到cache行的狀態資訊塊中的乙個或多個髒位(dirty bit)。當回寫cache控制器向cache儲存器中某一行寫入資料時,它會將髒位設定為1。如果cache控制器要將乙個髒位被置位的cache行替換出cache儲存器,那麼該cache行資料會自動被寫到主存單元中去。

2)替換策略

帶cache的arm核支援兩種替換策略:偽隨機替換法和輪轉法。當乙個cache訪問失效時,cache控制器必須從當前有效的組中選擇乙個cache行來儲存從主存中取得的新資訊。被選中的cache行被稱為丟棄者(victim)。如果丟棄者中包含有效的髒資料,那麼在該cache行被寫入新資料之前,控制器必須把該行的資料寫入到主存。選擇和替換丟棄cache行的過程被稱作淘汰(eviction)。

3)分配策略

在cache失效發生時,arm的cache可以採取兩種策略來分配cache行:第一種叫做讀操作分配(read-allocate)策略;第二種叫做讀/寫操作分配(read-write-allocate)策略。如果cache未命中,那麼對於讀操作分配策略,只有進行儲存器讀操作時,才分配cache行。如果被替換的cache行包含有效資料,那麼在該行被新的資料替換之前,要先把原來的內容寫入主存中。

採用讀/寫操作分配策略時,不管是儲存器讀操作,還是儲存器寫操作,在cache未命中時,都將分配cache行。

七.清除(flush)和清理(clean)cache

清除cache的意思是清除cache中儲存的全部資料,對處理器而言,清除操作只要清零相應cache的有效位即可。然而,對於採用回寫策略的d-cache,就需要使用清理(clean)操作。

八.cache鎖定

cache鎖定是將cache中的部分**和資料標記為非替換(exempt of eviction)的。被鎖定的**和資料有更快的系統反應能力,因為這些資料和**一直存放在cache中。cache在正常操作時,經常會涉及到行替換,這種替換會帶來**執行時間不確定的問題,而cache鎖定會避免這種不確定性。arm核心為cache鎖定分配固定的cache單元。一般來講,分配cache鎖定的cache單元是乙個路(way)。

基於ARM920T核的電磁流量儀表的開發

0 引言 隨著流量檢測儀器的技術發展,對流量的測量儀表提出了更高的應用需求。傳統的流量檢測儀表一般依據各自的測量機理,通過簡單的資訊分析處理來完成測量工 作。因此,在處理能力 測量精度 誤差修正 功能擴充套件等方面都存在著侷限性。新一代流量檢測儀器將以更優良的效能取而代之。目前,高速 高精度 大容量...

ARM核的命名規則

arm x 系列 x 7表示arm7處理器 x 9表示arm9處理器 x 10表示arm10處理器 x 11表示arm11處理器 y 儲存單元 保護單元。y 2表示帶cache和mmu y 3表示實體地址標記的cache和mmu y 4表示cache和mpu y 6表示寫緩衝但無cache大小。z ...

ucOS II基於ARM920T的中斷處理過程

程式清單 ucos ii 基於arm920t 的中斷處理過程 ucos irqhandler 中斷入口位址,在中斷向量表初始化時被設定 此時已處於中斷模式 在arm處理器中,當中斷發生時,cpu自動儲存cpsr到spsr irq,並切換到中斷模式 因此sp為中斷模式下的棧指標 如上所說,arm具有中...