在計算機(jī)技術(shù)發(fā)展過程中,主存儲器存取速度一直比中央處理器操作速度慢得多,使中央處理器的高速處理能力不能充分發(fā)揮,整個計算機(jī)系統(tǒng)的工作效率受到影響。有很多方法可用來緩和中央處理器和主存儲器之間速度不匹配的矛盾,如采用多個通用寄存器、多存儲體交叉存取等,在存儲層次上采用高速緩沖存儲器也是常用的方法之一。
很多大、中型計算機(jī)以及新近的一些小型機(jī)、微型機(jī)也都采用高速緩沖存儲器。高速緩沖存儲器的容量一般只有主存儲器的幾百分之一,但它的存取速度能與中央處理器相匹配。根據(jù)程序局部性原理,正在使用的主存儲器某一單元鄰近的那些單元將被用到的可能性很大。因而,當(dāng)中央處理器存取主存儲器某一單元時,計算機(jī)硬件就自動地將包括該單元在內(nèi)的那一組單元內(nèi)容調(diào)入高速緩沖存儲器,中央處理器即將存取的主存儲器單元很可能就在剛剛調(diào)入到高速緩沖存儲器的那一組單元內(nèi)。于是,中央處理器就可以直接對高速緩沖存儲器進(jìn)行存取。在整個處理過程中,如果中央處理器絕大多數(shù)存取主存儲器的操作能為存取高速緩沖存儲器所代替,計算機(jī)系統(tǒng)處理速度就能顯著提高。
1. 根據(jù)程序局部性規(guī)律可知:程序在運行中,總是頻繁地使用那些最近被使用過的指令和數(shù)據(jù)。這就提供了替換策略的理論依據(jù)。綜合命中率、實現(xiàn)的難易及速度的快慢各種因素,替換策略可有隨機(jī)法、先進(jìn)先出法、最近最少使用法等。
(1).隨機(jī)法(RAND法)隨機(jī)法是隨機(jī)地確定替換的存儲塊。設(shè)置一個隨機(jī)數(shù)產(chǎn)生器,依據(jù)所產(chǎn)生的隨機(jī)數(shù),確定替換塊。這種方法簡單、易于實現(xiàn),但命中率比較低。(2).先進(jìn)先出法(FIFO法)先進(jìn)先出法是選擇那個最先調(diào)入的那個塊進(jìn)行替換。當(dāng)最先調(diào)入并被多次命中的塊,很可能被優(yōu)先替換,因而不符合局部性規(guī)律。這種方法的命中率比隨機(jī)法好些,但還不滿足要求。先進(jìn)先出方法易于實現(xiàn),(3).最近最少使用法(LRU法)LRU法是依據(jù)各塊使用的情況, 總是選擇那個最近最少使用的塊被替換。這種方法比較好地反映了程序局部性規(guī)律。 實現(xiàn)LRU策略的方法有多種。
2 在多體并行存儲系統(tǒng)中,由于 I/O 設(shè)備向主存請求的級別高于 CPU 訪存,這就出現(xiàn)了 CPU 等待 I/O 設(shè)備訪存的現(xiàn)象,致使 CPU 空等一段時間,甚至可能等待幾個主存周期,從而降低了 CPU 的工作效率。為了避免 CPU 與 I/O 設(shè)備爭搶訪存,可在 CPU 與主存之間加一級緩存,這樣,主存可將 CPU 要取的信息提前送至緩存,一旦主存在與 I/O 設(shè)備交換時, CPU 可直接從緩存中讀取所需信息,不必空等而影響效率。3 目前提出的算法可以分為以下三類(第一類是重點要掌握的):(1)傳統(tǒng)替換算法及其直接演化,其代表算法有 :①LRU( Least Recently Used)算法:將最近最少使用的內(nèi)容替換出Cache ;②LFU( Lease Frequently Used)算法:將訪問次數(shù)最少的內(nèi)容替換出Cache;③如果Cache中所有內(nèi)容都是同一天被緩存的,則將最大的文檔替換出Cache,否則按LRU算法進(jìn)行替換 。④FIFO( First In First Out):遵循先入先出原則,若當(dāng)前Cache被填滿,則替換最早進(jìn)入Cache的那個。(2)基于緩存內(nèi)容關(guān)鍵特征的替換算法,其代表算法有:①Size替換算法:將最大的內(nèi)容替換出Cache②LRU— MIN替換算法:該算法力圖使被替換的文檔個數(shù)最少。設(shè)待緩存文檔的大小為S,對Cache中緩存的大小至少是S的文檔,根據(jù)LRU算法進(jìn)行替換;如果沒有大小至少為S的對象,則從大小至少為S/2的文檔中按照LRU算法進(jìn)行替換;③LRU—Threshold替換算法:和LRU算法一致,只是大小超過一定閾值的文檔不能被緩存;④Lowest Lacency First替換算法:將訪問延遲最小的文檔替換出Cache。(3)基于代價的替換算法,該類算法使用一個代價函數(shù)對Cache中的對象進(jìn)行評估,最后根據(jù)代價值的大小決定替換對象。其代表算法有:①Hybrid算法:算法對Cache中的每一個對象賦予一個效用函數(shù),將效用最小的對象替換出Cache;②Lowest Relative Value算法:將效用值最低的對象替換出Cache;③Least Normalized Cost Replacement(LCNR)算法:該算法使用一個關(guān)于文檔訪問頻次、傳輸時間和大小的推理函數(shù)來確定替換文檔;④Bolot等人 提出了一種基于文檔傳輸時間代價、大小、和上次訪問時間的權(quán)重推理函數(shù)來確定文檔替換;⑤Size—Adjust LRU(SLRU)算法:對緩存的對象按代價與大小的比率進(jìn)行排序,并選取比率最小的對象進(jìn)行替換。