關於Cache的write-through & write-back

wisdomone1發表於2010-04-22
write  through:  upon  write,  update  data  in  cache  and  at  the  same time,   update   data   in   memory.   
write   back:   upon   write,   update   data   in   cache,   and   flush   the   data   into   memory   when   the   cache   line   is   to   be   replaced,   or   flush   cache   instructions   are   executed   explicitly.
 
A method in which modifications to data in the cache aren't copied to the cache source until absolutely necessary. Write-back caching is available on many , including all since the 80486. With these microprocessors, data modifications (e.g., operations) to data stored in the aren't copied to until absolutely necessary. In contrast, a write-through cache performs all write operations in parallel -- data is written to main memory and the L1 cache simultaneously.

Write-back caching yields somewhat better performance than write-through caching because it reduces the number of write operations to main memory. With this performance improvement comes a slight risk that data may be lost if the system crashes. 

A write-back cache is also called a copy-back cache.

原理

Cache一詞來源於1967年的一篇電子工程期刊論文。其作者將法語詞"cache"賦予“safekeeping storage”的涵義,用於電腦工程領域。

當處 理資料時,它會先到Cache中去尋找,如果資料因之前的操作已經讀取而被暫存其中,就不需要再從(Main memory)中讀取資料——由於CPU的執行速度一般比主記憶體的讀取速度快,在許多CPU週期內只存在極少的週期為讀取主記憶體。因此若要存取主記憶體的 話,就必須等待數個CPU週期從而造成浪費。

提供「快取記憶體」的目的是為了讓資料存取的速度適應CPU的處理速度,其基於的原理是記憶體中「程式執行與資料訪問的局域性行為」,即一定程式執行時 間和空間內,被訪問的程式碼集中於一部分。為了充分發揮快取記憶體的作用,不僅依靠“暫存剛剛訪問過的資料”,還要使用硬體實現的與技術——儘可能把將要使用的資料預先從記憶體中取到快取記憶體裡。

CPU的快取記憶體曾經是用在上的一種高階技術,不過現今電腦上使用的的或微 處理器都在晶片內部整合了大小不等的資料快取記憶體和指令快取記憶體,通稱為L1快取記憶體(L1 Cache 即 Level 1 Cache,第一級快取記憶體);而比L1更大容量的L2快取記憶體曾經被放在CPU外部(或者CPU介面卡上),但是現在已經成為CPU內部的標準元件;更昂貴的頂級家用和CPU甚至會配備比L2快取記憶體還要大的L3快取記憶體。

地址映 象與變換

由於容量遠大於快取記憶體的容量,因此兩者之間就必須按一定的規則對應起來。快取記憶體的地址映象就 是指按某種規則把主存塊裝入快取記憶體中。地址變換是指當按某種映象方式把主存塊裝入快取記憶體後,每次訪問快取記憶體時,如何把主存的實體地址 (Physical address)或虛擬地址(Virtual address)變換成快取記憶體的地址,從而訪問快取記憶體中的資料。

映象和變換的方式有四種:直接映象、全相連映象、組相連映象、區段相連映象。

概念的擴充

現在快取記憶體的概念已被擴充,不僅在CPU和主記憶體之間有Cache而且在記憶體和之間也有Cache(磁碟快取記憶體),乃至在硬碟與之間也有某種意義上的 Cache - 臨時資料夾 ── 凡是位於速度相差較大的兩種之間的,用於協調兩者資料傳輸速度差異的結構,均可稱之為Cache。

程式的區域性性原理,即程式的地址訪問流有很強的時序相關性,未來的訪問模式與最近已發生的訪問模式相似。根據這一區域性性原理,把主儲存器中訪問機率 最高的內容存放在Cache中,當CPU需要讀取資料時就首先在Cache中查詢是否有所需內容,如果有則直接從Cache中讀取;若沒有再從主存中讀取 該資料,然後同時送往CPU和Cache。

cache n. 高速緩衝儲存器 一種特殊的儲存器子系統,其中複製了頻繁使用的資料以利於快速訪問。儲存器的高速緩衝儲存器儲存了頻繁訪問的 RAM 位置的內容及這些資料項的儲存地址。當處理器引用儲存器中的某地址時,高速緩衝儲存器便檢查是否存有該地址。如果存有該地址,則將資料返回處理器;如果沒 有儲存該地址,則進行常規的儲存器訪問。因為高速緩衝儲存器總是比主RAM 儲存器速度快,所以當 RAM 的訪問速度低於微處理器的速度時,常使用高速緩衝儲存器。。【英】A special memory subsystem in which frequently used data values are duplicated for quick access. A memory cache stores the contents of frequently accessed RAM locations and the addresses where these data items are stored. When the processor references an address in memory, the cache checks to see whether it holds that address. If it does hold the address, the data is returned to the processor; if it does not, a regular memory access occurs. A cache is useful when RAM accesses are slow compared with the microprocessor speed, because cache memory is always faster than main RAM memory.

Cache的出現是基於兩種因素:首先,是由於CPU的速度和效能提高很快而主存速度較低且價格高,第二就是程式執行的區域性性特點。因此,才將速度 比較快而容量有限的SRAM構成Cache,目的在於儘可能發揮CPU的高速度。很顯然,要儘可能發揮CPU的高速度就必須用硬體實現其全部功能

 

Cache中的內容隨命中率的降低需要經常替換新的內容。替換演算法有多種,例如,先入後出(FILO)演算法、隨機替換(RAND)演算法、先入先出 (FIFO)演算法、近期最少使用(LRU)演算法等。這些替換演算法各有優缺點,就以命中率而言,近期最少使用(LRU)演算法的命中率最高。

 

CPU與cache之間的資料交換是以字為單位,而cache與主存之間的資料交換是以塊為單位。一個塊由若干定長字組成的。當CPU讀取主存中一 個字時,便發出此字的記憶體地址到cache和主存。此時cache控制邏輯依據地址判斷此字當前是否在 cache中:若是,此字立即傳送給CPU;若非,則用主存讀週期把此字從主存讀出送到CPU,與此同時,把含有這個字的整個資料塊從主存讀出送到 cache中。由始終管理cache使用情況的硬體邏輯電路來實現LRU替換演算法

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-660464/,如需轉載,請註明出處,否則將追究法律責任。

相關文章