新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM存儲器之:高速緩沖存儲器Cache

ARM存儲器之:高速緩沖存儲器Cache

作者: 時間:2013-09-30 來源:網(wǎng)絡 收藏

本文引用地址:http://butianyuan.cn/article/257011.htm

15.3.3Cache工作原理

Cache的基本存儲單元為Cache行(Cacheline)。存儲系統(tǒng)把Cache和主存儲器都劃分為相同大小的行。Cache與主存儲器交換數(shù)據(jù)是以行為基本單位進行的。每一個Cache行都對應于主存中的一個存儲塊(memoryblock)。

Cache行的大小通常是2L字節(jié)。通常情況下是16字節(jié)(4個字)和32字節(jié)(8個字)。如果Cache行的大小為2L字節(jié),那么對主存的訪問通常是2L字節(jié)對齊的。所以對于一個虛擬地址來說,它的bit[31∶L]位,是Cache行的一個標識。當CPU發(fā)出的虛擬地址的bit[31∶L]和Cache中的某行bit[31∶L]相同,那么Cache中包含CPU要訪問的數(shù)據(jù),即成為一次Cache命中。

為了加快Cache訪問的速度,又將多個Cache行劃分成一個Cache組(CacheSet)。Cache組中包含的Cache行的個數(shù)通常也為2的N次方的倍數(shù)。為了方便起見,取N=S。這樣,一個Cache組中就包含2S個Cache行。這時,虛擬地址中的bit[L+S-1∶L]為Cache組的標識。虛擬地址中余下的位bit[31∶L+S]成為一個Cache標(Cache-tag)。它標識了Cache行中的內容和主存間的對應關系。

圖15.10顯示了Cache的訪問過程。

圖15.10Cache訪問過程

15.3.4Cache與主存的關系

在Cache中采用地址映射將主存中的內容映射到Cache地址空間。具體的說,就是把存放在主存中的程序按照某種規(guī)則裝入到Cache中,并建立主存地址到Cache地址之間的對應關系。而地址變換是指當程序已經(jīng)裝入到Cache后,在實際運行過程中,把主存地址變換成Cache地址。

地址的映射和變換是密切相關的。采用什么樣的地址映射方法,就必然有與之對應的地址變換。

常用的地址映射和變換方式包括直接映射和變換方式、組相聯(lián)映射和變換方式以及全相聯(lián)和變換方式。

(1)直接(direct-mapped)映射方式

直接映射是一種最簡單,也是最直接的映射方式。主存中的每個地址都對應Cache存儲器中惟一的一行。由于主存的容量遠遠大于Cache存儲器,所以在主存中很多地址被映射到同一個Cache行。

圖15.11顯示了主存與Cache的直接映射關系。

圖15.11主存和Cache的直接映射

直接映射Cache是一種簡單的解決方法,但這種設計使得每個主存塊在Cache中只有一個特定的行可以存放。如果程序同時用到對應于Cache同一行的兩個主存塊,那么就會發(fā)生沖突,沖突的結果是導致Cache行的頻繁變換。這種由直接映射導致的Cache存儲器中的軟件沖突稱為顛簸(thrashing)問題。

(2)組相聯(lián)映射方式

為了減少顛簸問題,有些Cache使用了組相聯(lián)的映射策略。在組相聯(lián)的地址映射和變換中,把主存和Cache按同樣大小劃分成組(set),每個組都由相同的行數(shù)組成。

由于主存的容量比Cache容量大得多,因此,主存的組數(shù)要比Cache的組數(shù)多。從主存的組到Cache的組之間采用直接映射方式。主存中的一組與Cache中的一組之間建立了之間映射方式后,在兩個對應的組內部采用全相聯(lián)映射方式。

中采用的是組相聯(lián)的地址映射和變換方式。如果Cache的行大小為2L,則同一行中各地址的bit[31∶L]是相同的。如果Cache中組的大小(每組中包含的行數(shù))為2S,則虛地址位bit[L+S∶L]用于選擇Cache中的某個組。

圖15.12顯示了一個Cache與主存儲器的組相聯(lián)映射

圖15.12Cache與主存儲器組相聯(lián)映射

擁有相同組索引的Cache行稱為組相聯(lián)的(setassociative)。主存中的程序或代碼段可以在不影響程序執(zhí)行的情況下被分配到Cache中的某一組中。也就是說,將數(shù)據(jù)或代碼存入Cache行中的操作不會影響程序的執(zhí)行。

(3)全相聯(lián)映射方式

隨著Cache控制器的相聯(lián)度的提高,沖突的可能性減少了。理想的目標是,盡量提高組相聯(lián)程度,使主存地址能夠映射到任意Cache行。這樣的Cache被稱為全相聯(lián)Cache。然而,隨著相聯(lián)度的提高,與之相匹配的硬件的復雜度也在提高。硬件設計者提高Cache相聯(lián)度的一種方法就是使用內容尋址寄存器CAM(ContentAddressableMemory)。

CAM使用一組比較器,以比較輸入的標簽地址和存儲在每一個有效Cache行中的標簽位。CAM采取了與RAM相反的工作方式;RAM在得到一個地址后再給出數(shù)據(jù);而CAM則是在檢測到給定的數(shù)據(jù)值在存儲器中后,再給出該數(shù)據(jù)的地址。使用CAM允許同時比較更多的地址中的標簽位,從而增加了可以包含在一個組中的Cache行數(shù)。

920T和940T存儲器核中,ARM使用了CAM來定位地址中的標簽域。ARM920T和ARM940T中的Cache是64組組相聯(lián)的。圖15.13所示為ARM940T的Cache結構圖。Cache控制器把地址標簽域作為CAM的輸入,它的輸出選擇了包含有效Cache行的組。

圖15.13ARM940T64路組相聯(lián)Cache

訪問地址的標簽部分被作為4個CAM的輸入,輸入標簽的同時與存儲在64組中的所有Cache標簽比較。如果有一個匹配,那么數(shù)據(jù)就由Cache寄存器提供;如果沒有匹配,存儲器就會產生一個失效(misss)信號。

控制器使用組索引位(setindex)在4個CAM中選擇一個。被選中的CAM會在Cache存儲器中選擇一個Cache行,該地址的數(shù)據(jù)索引部分(dataindex)在該Cache行中選擇出所需的字、半字或者字節(jié)。

15.3.5Cache的寫策略

當CPU更新了Cache內容時,要將結果寫回到主存中,通常有兩種方法:

·直寫法(write-through);

·回寫法(write-back)。

直寫法是指,當CPU在執(zhí)行寫操作時,必須把數(shù)據(jù)同時寫入Cache和主存,以確保Cache和主存數(shù)據(jù)一致。在這種寫策略下,處理器在每次寫Cache時也要寫相應的主存單元。由于要訪問主存,直寫法的速度比回寫法要慢一些。

回寫法是指,當處理器和寫Cache命中時,只向Cache存儲器寫數(shù)據(jù),而不立即寫入主存。這樣,主存儲器與相應的Cache行數(shù)據(jù)有可能不一致。Cache中的數(shù)據(jù)是新的,而主存中的數(shù)據(jù)可能是較早的、沒有被更新過的。

配置成回寫法的Cache要使用Cache行的狀態(tài)信息塊中的一個或多個臟位(dirtybit)。當回寫Cache控制器向Cache存儲器中的某一行寫入數(shù)據(jù)時,它會將臟位設置為1。如果控制器內核此后訪問該Cache行,那么通過臟位的狀態(tài)就可以知道該Cache行中含有主存儲器中沒有的數(shù)據(jù)。如果Cache控制器要將一個臟位被設置的Cache行替換出Cache存儲器,那么該Cache行數(shù)據(jù)會自動被寫入主存單元中??刂破魍ㄟ^這種方法來防止只存在于Cache中而主存中沒有的重要信息的丟失。

表15.12比較了直寫法和回寫法的優(yōu)缺點。

表15.12 直寫法與回寫法

寫策略

直寫法

回寫法

可靠性

與主存的通信量

控制的復雜性

簡單

復雜

硬件實現(xiàn)代價

下面分析產生這些性能差異的原因。

·可靠性。直寫法要優(yōu)于回寫法。這是因為直寫法始終保證Cache是主存的正確副本。當Cache發(fā)生錯誤時,可以從主存中糾正。

·與主存的通信量。一般情況下,回寫法少于直寫法。這是因為,一方面,Cache的命中率很高,對于回寫法來說,CPU絕大多數(shù)操作只需要寫Cache,不必寫主存。另一方面,當Cache失效時,要將Cache中的行替換到主存,而直寫法每次只寫一個字到主存??偟膩碚f,由于直寫法在每次寫Cache時,同時寫主存,從而增加了寫操作的開銷。而回寫法是把與主存的數(shù)據(jù)交換集中到一次主存操作,可能要一次性的進行多個字的操作。

·控制的復雜性。直寫法必回寫法簡單。直寫法在Cache的行狀態(tài)表中不需要修改位。同時,直寫法的糾錯技術相對簡單。

·硬件代價?;貙懛ū戎睂懛ê?。因為直寫法中,每次寫操作都要寫主存,因此為了節(jié)省寫主存所花費的時間,通常要采用一個高速小容量的緩存存儲器,把要寫的數(shù)據(jù)和地址寫到這個緩存中。在每次讀主存時,也要首先判斷所讀的數(shù)據(jù)是否在這個緩存中。而回寫法不需要上述操作,相對硬件代價要小。

存儲器相關文章:存儲器原理




評論


相關推薦

技術專區(qū)

關閉