緩衝存儲器

緩衝存儲器

緩衝存儲器(Cache)是一種高速緩衝存儲器,是為了解決CPU和主存之間速度不匹配而採用的一項重要技術。Cache是介於CPU和主存之間的小容量存儲器,但存取速度比主存快。目前主存容量配置幾百MB的情況下,Cache的典型值是幾百KB。Cache能高速地向CPU提供指令和數據,從而加快了程式的執行速度。從功能上看,它是主存的緩衝存儲器,由高速的SRAM組成。為追求高速,包括管理在內的全部功能均由硬體實現,因而對程式設計師是透明的。

簡介

當前隨著半導體器件集成度的進一步提高,緩衝存儲器已放入到CPU中,其工作速度接近CPU的速度,從而能組成兩級以上的Cache系統。

工作原理

緩衝存儲器工作原理要求它儘量保存最新數據。當一個新的主存塊需要複製到Cache,而允許存放此塊的行位置都被其他主存塊占滿時,就要產生替換。替換問題與Cache的組織方式緊密相關。對直接映射的Cache來說,因一個主存塊只有一個特定的行位置可存放,所以問題解決起來很簡單,只要把此特定位置上的原主存塊換出Cache即可。對全相聯和組聯Cache來說,就要從允許存放新主存塊的若干特定行中選取一行換出。

算法

如何選取就涉及到替換策略,又稱替換算法。通過硬體實現的常用算法主要有以下3種。

最不經常使用(LFU)算法

LFU算法認為應將一段時間內被訪問次數最少的那行數據換出。為此,每行設定一個計數器。新行建立後從0開始計數,每訪問一次,被訪問行的計數器增1。當需要替換時,對這些特定行的計數值進行比較,將計數值最小的行換出,同時將這些特定行的計數器都清零。這種算法將計數周期限定在對這些特定行兩次替換之間的間隔內,因而不能嚴格反映近期訪問情況。

近期最少使用(LRU)算法

LRU算法將近期內長時間未被訪問過的行換出。為此,每行也設定一個計數器,但它們是Cache每命中一次,命中行計數器清零,其他各行計數器增1。當需要替換時,比較各特定行的計數值,將計數值最大的行換出。這種算法保護了剛複製到Cache中的新數據行,符合Cache工作原理,因而使Cache有較高的命中率。

對2路級聯的Cache來說,LRU算法的硬體實現可以簡化。因為一個主存塊只能在一個特定組的兩行中做存放選擇,二選一完全不需要計數器,只需一個二進制位即可。例如,規定一組中的A行複製進新數據可將此位置“1”,B行複製進新數據可將此位置“0”。當需要置換時,只需檢查此二進制的位狀態即可:為0換出A行,為1換出B行,實現了保護新行的原則。奔騰CPU內的數據Cache是一個2路級聯結構,就採用這種簡潔的LRU替換算法。

隨機替換

隨機替換策略實際上是不要什麼算法,從特定的行位置中隨機地選取一行換出即可。這種策略在硬體上容易實現,且速度也比前兩種策略快。缺點是隨意換出的數據很可能馬上又要使用,從而降低命中率和Cache工作效率。但這個缺陷隨Cache容量的增大而減小。研究表明,隨機替換策略的功效僅稍遜於前兩種策略。

套用

緩衝存儲器在電腦上套用的比較多。每一個硬碟上面都含有一個緩衝存儲器,這個存儲器主要可以將硬碟內常使用的數據快取起來,以加速系統的讀取效能。 通常這個緩衝存儲器越大越好,因為緩衝存儲器的速度要比數據從硬碟中被找出來的速度快! 目前主流產品可達16MB 左右記憶體大小。

相關詞條

相關搜尋

熱門詞條

聯絡我們