關於Cache的write-through & write-back
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- storage儲存的cache快取相關機制write-though和write-back(write-caching)快取
- 關於mysql的query_cacheMySql
- MySQL 關於Table cache設定MySql
- 關於v$db_object_cacheObject
- 關於ORACLE裡的buffer cache 的命中率Oracle
- 關於CPU Cache:程式猿需要知道的那些
- page cache與buffer cache的關係
- 討論:關於The REBIND utility and the FLUSH PACKAGE CACHEPackage
- 白繕大師關於buffer cache系列
- 關於 PHP artisan config:cache 引發的 bugPHP
- 一個關於latch: library cache事件的處理事件
- 關於對MySQL的SQL_NO_CACHE的理解和用法舉例MySql
- 關於 http cache 的一個小問題以及引發的思考HTTP
- 關於計算buffer cache hit rate的精確演算法演算法
- 關於Jive論壇中CACHE Hash機制的一個疑問
- 關於cache_buffer_lru_chain的疑問,知道的給小弟解答一下。AI
- 資料讀取之邏輯讀簡單解析--關於BUFFER CACHE
- buffer cache與相關的latch等待事件事件
- zt_阿里張瑞jacky關於library cache的內部管理機制阿里
- 翻譯metalink關於WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK文章AIENQ
- 關於 Senparc.Weixin.Cache.Redis 引用的 StackExchange.Redis 版本不匹配的反饋測試Redis
- 關於學習jdon框架cache的疑問,請banq老師指點一下。框架
- 用於排查cache buffers chainsAI
- 【恩墨學院】深入剖析:關於cache buffers chains的經典案例處理詳解?AI
- 基於資源的HTTP Cache的實現介紹HTTP
- oracle library cache相關的等待事件及latchOracle事件
- 用於快取的新HTTP標準:Cache-Status和Target-Cache-Control快取HTTP
- library cache相關知識點
- 基於row cache object latch研究對於sga抖動的影響Object
- [20211026]關於18c row cache mutex.txtMutex
- Nginx下關於快取控制欄位cache-control的配置說明 - 運維小結Nginx快取運維
- PostgreSQL的shared_buffers和系統OS cache的關係SQL
- 關於AI、關於chatGPT的幾十種用法AIChatGPT
- 推薦:有關在JDBC cache最佳化的爭論。JDBC
- 關於CMP的關係,求教...
- 關於IT,關於技術
- Service Worker Cache 和 HTTP Cache 的區別HTTP
- 【Cache】將常用的“小表”快取到Buffer Cache快取