記憶體快取 磁碟快取 記憶體傻傻分不清

2021-09-10 06:35:09 字數 2005 閱讀 2867

快取記憶體(英語:cache,英語發音:/kæʃ/ kash [1][2][3],簡稱快取),其原始意義是指訪問速度比一般隨機訪問儲存器(ram)快的一種ram,通常它不像系統主存那樣使用dram技術,而使用昂貴但較快速的sram技術。

cache一詞**於2023年的一篇電子工程期刊**。其作者將法語詞「cache」賦予「safekeeping storage」的涵義,用於電腦工程領域。

當cpu處理資料時,它會先到cache中去尋找,如果資料因之前的操作已經讀取而被暫存其中,就不需要再從隨機訪問儲存器(main memory)中讀取資料——由於cpu的執行速度一般比主記憶體的讀取速度快,主儲存器週期(訪問主儲存器所需要的時間)為數個時鐘週期。因此若要訪問主記憶體的話,就必須等待數個cpu週期從而造成浪費。

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

cpu的快取曾經是用在超級計算機上的一種高階技術,不過現今電腦上使用的的amd或intel微處理器都在晶元內部整合了大小不等的資料快取和指令快取,通稱為l1快取(l1 cache即level 1 on-die cache,第一級片上高速緩衝儲存器);而比l1更大容量的l2快取曾經被放在cpu外部(主機板或者cpu介面卡上),但是現在已經成為cpu內部的標準元件;更昂貴的cpu會配備比l2快取還要大的l3快取(level 3 on-die cache第**高速緩衝儲存器)。

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

主條目:cpu快取#組相聯

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

主條目:cpu快取#置換策略、分頁和快取檔案置換機制

主存容量遠大於cpu快取,磁碟容量遠大於主存,因此無論是哪一層次的快取都面臨乙個同樣的問題:當容量有限的快取的空閒空間全部用完後,又有新的內容需要新增進快取時,如何挑選並捨棄原有的部分內容,從而騰出空間放入這些新的內容。解決這個問題的演算法有幾種,如最久未使用演算法(lru)、先進先出演算法(fifo)、最近最少使用演算法(lfu)、非最近使用演算法(nmru)等,這些演算法在不同層次的快取上執行時擁有不同的效率和代價,需根據具體場合選擇最合適的一種。

磁碟快取是為了減少cpu透過i/o讀取磁碟機的次數,提公升磁碟i/o的效率,用一塊記憶體來儲存訪問較頻繁的磁碟內容;因為記憶體的訪問是電子動作,而磁碟的訪問是i/o動作,感覺上磁碟i/o變得較為快速。

相同的技巧可用在寫入動作,我們先將欲寫入的內容放入記憶體中,等到系統有其它空閒的時間,再將這塊記憶體的資料寫入磁碟中。

現在的磁碟通常有32mb或64mb快取。舊的硬碟則有8mb或16mb。

200 from memory cache

不訪問伺服器,直接讀快取,從記憶體中讀取快取。此時的資料時快取到記憶體中的,當kill程序後,也就是瀏覽器關閉以後,資料將不存在。

但是這種方式只能快取派生資源。

200 from disk cache

不訪問伺服器,直接讀快取,從磁碟中讀取快取,當kill程序時,資料還是存在。

這種方式也只能快取派生資源

304 not modified

訪問伺服器,發現資料沒有

更新,伺服器返回此狀態碼。然後從快取中讀取資料。

訪問-> 200 -> 退出瀏覽器

再進來-> 200(from disk cache) -> 重新整理 -> 200(from memory cache

iOS記憶體快取和磁碟快取的區別

快取分為記憶體快取和磁碟快取兩種,其中記憶體是指當前程式的執行空間,快取速度快容量小,是臨時儲存檔案用的,供cpu直接讀取,比如說開啟乙個程式,他是在記憶體中儲存,關閉程式後記憶體就又回到原來的空閒空間 磁碟是程式的儲存空間,快取容量大速度慢可持久化與記憶體不同的是磁碟是永久儲存東西的,只要裡面存放...

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...

iOS快取 記憶體快取

為了減少與伺服器的連線溝通次數,提高應用程式的執行速度,使用了ios的快取機制 import youngviewcontroller.h inte ce youngviewcontroller end implementation youngviewcontroller void viewdidlo...