ARM存儲器之:高速緩沖存儲器Cache
15.3高速緩沖存儲器Cache
當第一代RISC微處理器剛出現時(shí),標準存儲器元件的速度比當時(shí)微處理器的速度快。很快,半導體工藝技術(shù)的進(jìn)展被用來(lái)提高微處理器的速度。標準DRAM部件雖然也快了一些,但其發(fā)展的主要精力則放在提高存儲容量上。
1980年,典型DRAM部件的容量為4KB。1981年和1982年開(kāi)發(fā)出了16KB芯片。這些部件的隨機訪(fǎng)問(wèn)速率為3MHz或4MHz,局部訪(fǎng)問(wèn)(頁(yè)模式)時(shí)速率大約快1倍。當時(shí)的微處理器每秒需要訪(fǎng)問(wèn)存儲器2M次。
到2000年,DRAM部件每片的容量到達256Mbit,隨機訪(fǎng)問(wèn)速率在30MHz左右。微處理器每秒需要訪(fǎng)問(wèn)存儲器幾百兆次。如果處理器速率遠高于存儲器,那么只能借助Cache才能滿(mǎn)足其全部性能。
Cache存儲器是一個(gè)容量小但存取速度非??斓拇鎯ζ?,它保存最近用到的存儲器數據拷貝。對于程序員來(lái)說(shuō),Cache是透明的。它自動(dòng)決定保存哪些數據、覆蓋哪些數據?,F在Cache通常與處理器在同一芯片上實(shí)現。Cache能夠發(fā)揮作用是因為程序具有局部性特性。所謂局部性就是指,在任何特定的時(shí)間,微處理器趨于對相同區域的數據(如堆棧)多次執行相同的指令(如循環(huán))。
Cache經(jīng)常與寫(xiě)緩存器(writebuffer)一起使用。寫(xiě)緩存器是一個(gè)非常小的先進(jìn)先出(FIFO)存儲器,位于處理器核與主存之間。使用寫(xiě)緩存的目的是,將處理器核和Cache從較慢的主存寫(xiě)操作中解脫出來(lái)。當CPU向主存儲器做寫(xiě)入操作時(shí),它先將數據寫(xiě)入到寫(xiě)緩存區中,由于寫(xiě)緩存器的速度很高,這種寫(xiě)入操作的速度也將很高。寫(xiě)緩存區在CPU空閑時(shí),以較低的速度將數據寫(xiě)入到主存儲器中相應的位置。
通過(guò)引入Cache和寫(xiě)緩存區,存儲系統的性能得到了很大的提高,但同時(shí)也帶來(lái)了一些問(wèn)題。比如,由于數據將存在于系統中的不同的物理位置,可能造成數據的不一致性;由于寫(xiě)緩存區的優(yōu)化作用,可能有些寫(xiě)操作的執行順序不是用戶(hù)期望的順序,從而造成操作錯誤。
15.3.1Cache的分類(lèi)
Cache有多種構造方法。在最高層次,微處理器可以采用下面兩種組織中的一組。
(1)統一Cache。指令和數據用同一個(gè)Cache。結構如圖15.8所示。
圖15.8統一的指令Cache和數據Cache
(2)指令和數據分開(kāi)的Cache。有時(shí)這種組織方式也被稱(chēng)為改進(jìn)的哈佛結構。
圖15.9顯示了這種組織方式。
這兩種組織方式各有優(yōu)缺點(diǎn)。統一Cache能夠根據當前程序的需要自動(dòng)調整指令在Cache存儲器的比例,比固定劃分的有更好的性能。另一方面,分開(kāi)的Cache使Load/Store指令能夠單周期執行。
15.3.2Cache性能的衡量
只有當所需要的Cache存儲器內容已經(jīng)在Cache時(shí),微處理器才能以高時(shí)鐘速率工作。因此,系統的總體性能就可以用存儲器訪(fǎng)問(wèn)中命中Cache的比例來(lái)衡量。當要訪(fǎng)問(wèn)的內容在Cache時(shí)稱(chēng)為命中(hit),而要訪(fǎng)問(wèn)的內容不在Cache時(shí)稱(chēng)為未命中(miss)。在給定時(shí)間間隔內,Cache命中的次數與總的存儲器請求次數的比值被稱(chēng)為命中率。
圖15.9指令Cache和數據分開(kāi)的Cache
命中率用下面的公式進(jìn)行計算:
命中率=(Cache命中次數÷存儲器請求次數)×100%
未命中率與命中率形式相似,即在給定時(shí)間間隔內,Cache未命中的總次數除以總的存儲器請求次數所得的百分比。未命中率與命中率之和等于100。
目前設計良好的處理器,Cache的未命中率只有百分之幾。未命中率依賴(lài)多個(gè)Cache參數,包括Cache大小和組織。
存儲器相關(guān)文章:存儲器原理
評論