cache叫做高速緩衝記憶體,是介於中央處理器和主記憶體之間的高速小容量記憶體,一般由高速SRAM構成;這種局部記憶體是面向CPU的,引進它是為減少或消除CPU與記憶體之間的速度差異對系統效能帶來的影響。 Cache容量小但速度快,記憶體速度較低但容量大,透過最佳化調度演算法,系統的效能會大幅提升。
本教學操作環境:windows7系統、Dell G3電腦。
cache是什麼記憶體
Cache記憶體:電腦中為高速緩衝記憶體,位於CPU和主記憶體DRAM(Dynamic Random Access Memory )之間,規模較小,但速度很高的記憶體,通常由SRAM(Static Random Access Memory靜態記憶體)組成。
如圖3.28所示,cache是介於CPU和主記憶體M2之間的小容量記憶體,但存取速度比主存快,容量遠小於主存。 cache 能高速地向CPU提供指令和數據,從而加快了程式的執行速度。從功能上看,它是主記憶體的緩衝記憶體,由高速的SRAM組成。為追求高速,包括管理在內的全部功能由硬體實現,因而對程式設計師是透明的。
目前,隨著半導體裝置整合度的進步提高,可以將小容量的cache與CPU 整合到同一晶片中,其工作速度接近CPU的速度,從而組成兩級以上的cache系統。
cache的功能
Cache的功能是提高CPU資料輸入輸出的速率。 Cache容量小但速度快,記憶體速度較低但容量大,透過最佳化調度演算法,系統的效能會大大改善,彷彿其儲存系統容量與記憶體相當且存取速度近似Cache。
CPU的速度遠高於內存,當CPU直接從內存中訪問數據時要等待一定時間週期,而Cache則可以保存CPU剛用過或循環使用的一部分數據,如果CPU需要再次使用該部分數據時可從Cache中直接調用,這樣就避免了重複訪問數據,減少了CPU的等待時間,從而提高了系統的效率。 Cache又分為L1Cache(一級快取)和L2Cache(二級快取),L1Cache主要是整合在CPU內部,而L2Cache整合在主機板上或是CPU上。
cache的基本原則
cache除包含SRAM外,還要有控制邏輯。若cache在CPU晶片外,它的控制邏輯一般與主記憶體控制邏輯合成在一起,稱為主記憶體/chace控制器;若cache在CPU內,則由CPU提供它的控制邏輯。
CPU與cache之間的資料交換是以字為單位,而cache與主記憶體之間的資料交換是以區塊為單位。一個塊由若干字組成,是定長的。當CPU讀取記憶體中一個字時,便發出此字的記憶體位址到cache和主記憶體。此時cache控制邏輯依據位址判斷此字目前是否在cache中:若是,則cache命中,此字立即傳送給CPU;若非,則cache缺失(未命中),用主存讀週期把此字從主存讀出送到CPU,同時,把含有這個字的整個資料塊從主記憶體讀出送到cache中。
圖3.29顯示了cache的原理圖。假設cache讀出時間為50ns,主存讀出時間為250ns。儲存系統是模組化的,主記憶體中每個8K模組和容量16字的cache相聯繫。 cache分為4行,每行4個字(W)。分配給cache的位址存放在一個相聯記憶體CAM中,它是按內容尋址的記憶體。當CPU執行存取指令時,就把所要存取的字的位址送到CAM;如果W不在cache中,則將W從主記憶體傳送到CPU。同時,把包含W的由前後相繼的4個字所組成的一行資料送入cache,替換原來cache中的一行資料。在這裡,由始終管理cache使用情況的硬體邏輯電路來實現替換演算法。
cache的命中率
從CPU來看,增加cache的目的,就是在效能上讓主記憶體的平均讀出時間盡可能接近cache的讀出時間。為了達到這個目的,在所有的記憶體存取中由cache滿足CPU需求的部分應佔很高的比例,即cache的命中率應接近1。由於程式存取的局部性,實現這個目標是可能的。
在一個程式執行期間,設Nc表示cache完成存取的總次數,Nₘ表示主記憶體完成存取的總次數,h定義為命中率,則有h=Nc/(Nc+Nₘ)
若tc表示命中時的cache存取時間,tₘ表示未命中時的主記憶體存取時間,1-h表示未命中率(缺失率),則cache/主記憶體系統的平均存取時間tₐ為
tₐ=htc+(1−h)tₘ
我們追求的目標是,以較小的硬體代價使cache/主存系統的平均存取時間tₐ越接近 tc越好。設 r=tₘ/tc表示主記憶體與cache的訪問時間之比,e表示訪問效率,則有
e=tc/ta=tc/(htc+(1−h)tm)=1/(h+(1−h)r)=1/(r+(1−r)h)
由此式看出,為提高訪問效率,命中率h越接近1越好。 r值以5~10為宜,不宜太大。
命中率h與程式的行為、cache的容量、組織方式、區塊的大小有關。
cache結構設計必須解決的問題
#從cache的基本運作原理可以看出, cache的設計需要遵循兩個原則:一是希望cache的命中率盡可能高,實際應接近於1;二是希望cache對CPU而言是透明的,即不論是否有cache, CPU訪存的方法都是一樣的,軟體不需增加任何指令就可以存取cache。解決了命中率和透明性問題,就CPU存取的角度而言,記憶體將具有主記憶體的容量和接近cache的速度。為此,必須增加一定的硬體電路完成控制功能,也就是cache控制器。
在設計cache結構時,必須解決幾個問題:①主存的內容調入cache時如何存放?②訪存時如何找到cache中的信息?③當cache空間不足時如何替換cache中已有的內容?④需要寫入操作時如何改寫cache的內容?
其中,前兩個問題是相互關聯的,即如何將主存資訊定位在cache中,如何將主存位址變換為cache位址。與主記憶體相比, cache的容量很小,它保存的內容只是主記憶體內容的子集,且cache與主記憶體的資料交換是以區塊為單位。為了把主存塊放到cache中,必須應用某種方法把主記憶體位址定位到cache中,稱為位址對映。 「映射」一詞的物理意義是確定位置的對應關係,並用硬體來實現。這樣當CPU存取記憶體時,它所給的一個字的記憶體位址就會自動變換成cache的位址,也就是cache位址變換。
cache替換問題主要是選擇和執行替換演算法,以便在cache不命中時取代cache中的內容。最後一個問題涉及cache的寫入操作策略,重點是在更新時保持主記憶體與cache的一致性。
更多相關知識,請造訪常見問題欄位!
以上是cache是什麼記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!