新聞中心

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

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

        作者: 時間:2013-09-30 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257011.htm

        15.3.3Cache工作原理

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

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

        為了加快Cache訪問的速度,又將多個Cache行劃分成一個Cache組(CacheSet)。Cache組中包含的Cache行的個數通常也為2的N次方的倍數。為了方便起見,取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地址空間。具體的說,就是把存放在主存中的程序按照某種規則裝入到Cache中,并建立主存地址到Cache地址之間的對應關系。而地址變換是指當程序已經裝入到Cache后,在實際運行過程中,把主存地址變換成Cache地址。

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

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

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

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

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

        圖15.11主存和Cache的直接映射

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

        (2)組相聯映射方式

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

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

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

        圖15.12顯示了一個Cache與主存儲器的組相聯映射

        圖15.12Cache與主存儲器組相聯映射

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

        (3)全相聯映射方式

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

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

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

        圖15.13ARM940T64路組相聯Cache

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

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

        15.3.5Cache的寫策略

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

        ·直寫法(write-through);

        ·回寫法(write-back)。

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

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

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

        表15.12比較了直寫法和回寫法的優缺點。

        表15.12 直寫法與回寫法

        寫策略

        直寫法

        回寫法

        可靠性

        與主存的通信量

        控制的復雜性

        簡單

        復雜

        硬件實現代價

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

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

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

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

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

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




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 遂昌县| 镇安县| 奎屯市| 左贡县| 临海市| 五原县| 九龙城区| 三明市| 吴江市| 嘉祥县| 塔河县| 武安市| 碌曲县| 县级市| 鞍山市| 龙门县| 历史| 怀集县| 循化| 巴林右旗| 永宁县| 建平县| 孝感市| 晋宁县| 元朗区| 天气| 宁晋县| 龙门县| 崇州市| 疏勒县| 墨玉县| 旺苍县| 富源县| 百色市| 德化县| 海兴县| 平塘县| 高唐县| 莫力| 小金县| 郎溪县|