緩衝存儲器檢視原始碼討論檢視歷史
一種高速緩衝存儲器
緩衝存儲器(Cache)是一種高速緩衝存儲器,是為了解決CPU和主存之間速度不匹配而採用的一項重要技術。Cache是介於CPU和主存之間的小容量存儲器,但存取速度比主存快。主存容量配置幾百MB的情況下,Cache的典型值是幾百KB。Cache能高速地向CPU提供指令和數據,從而加快了程序的執行速度。從功能上看,它是主存的緩衝存儲器,由高速的SRAM組成。為追求高速,包括管理在內的全部功能均由硬件實現,因而對程序員是透明的。
- 中文名:緩衝存儲器
- 外文名:cache
- 特 性:高速地向CPU提供指令和數據
- 功 能:主存的緩衝存儲器加快程序執行
簡介
當前隨着半導體器件集成度的進一步提高,緩衝存儲器已放入到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容量的增大而減小。研究表明,隨機替換策略的功效僅稍遜於前兩種策略。[1]
應用
緩衝存儲器在電腦上應用的比較多。每一個硬盤上面都含有一個緩衝存儲器,這個存儲器主要可以將硬盤內常使用的數據快取起來,以加速系統的讀取效能。 通常這個緩衝存儲器越大越好,因為緩衝存儲器的速度要比數據從硬盤中被找出來的速度快! 目前主流產品可達16MB 左右內存大小。 通信原理與基本技術
視頻
高速緩衝存儲器