使用者:意識雪/沙盒/磁碟快取

16MB緩衝區的硬碟

磁碟快取(英語:Disk BufferDisk Cache)硬碟快取是硬碟控制器上的一塊主記憶體晶片,一般是DRAM。它具有極快的存取速度,對於硬碟的內部資料傳輸速度和外界裝置的傳輸速度的差異,它起到緩衝作用,從而減少CPU訪問硬碟時的等待時間。[1]

自二十世紀九十年代以來,電腦硬體技術的發展帶來了磁碟儲存密度每半年到一年提升一倍的速度,但沒有相應的技術能夠以同樣的速度縮短儲存媒介的訪問時間。[2]使用快取技術的目的是為了減少IO子系統的回應時間、增加系統吞吐量的解決方案。這種技術已被廣泛應用於儲存系統。[3]

目的

編輯
  1. 減少互動的通訊量:磁碟快取能縮小行程和網路間傳輸的資料量。
  2. 降低系統的處理量:記錄處理結果,避免資料的重複處理。
  3. 由於磁碟內部傳輸速率要小於外部傳輸速率,作業系統核心為提高效能,在主記憶體中快取的機械硬碟資料,從而降低機械硬碟使用率。[2]

類型

編輯

大部分作業系統在設計磁碟驅動程式時,都會優先考慮使用DRAM快取機械硬碟的資料。硬碟製造商在製造硬碟時,會在硬碟控制器中加入DRAM晶片。利用資料的空間局部性原理,硬碟控制器在處理 IO請求時讀取的資料量會略大於請求的資料量,讀取的資料會在DRAM進行快取,這樣當系統下次請求資料時,可以先在DRAM中搜尋上次讀取中多餘的資料。DRAM快取對於軟體而言是透明的,硬碟中的控制器負責管理快取,驅動不參與管理快取的過程。[2][4]

在資料的讀取過程中,硬碟的控制晶片發出指令,將系統正在讀取的簇的下一個或幾個簇的資料寫入快取里。當系統指令開始讀取下一個簇的資料時硬碟便不需要重新開始一個讀取的動作,而只需要將快取中的資料傳送到系統主主記憶體中去就行了。因為從硬碟快取到系統主主記憶體的資料傳輸是電子運動,所以速度比硬碟做讀取動作所需要的機械運動要快。而資料在硬碟碟片上的儲存是相對連續的,因此預讀的命中率很高。[5]

由於DRAM的揮發性限制,通常DRAM作為讀快取提高機械硬碟的效能,對寫效能幾乎沒有提高。如果也快取寫操作,為了避免待寫入機械硬碟的資料由於掉電而遺失,磁碟控制器或是驅動程式必須將資料持續的從DRAM寫回到機械硬碟,以降低資料遺失的風險。因此,使用DRAM進行寫快取面臨可靠性和讀寫效能間的兩難選擇,即快取越大效能提升越明顯,停留在

快取中的資料遺失的可能性也就越大。由於掉電的風險,任何快取系統都會限制快取中尚未寫入的資料的停留時間和所占比例。[2]

NVRAM具備非揮發性的據儲存數優勢,使得利用NVRAM作快取提升儲存系統寫效能成為可能。[2]

常用的策略是整合NVRAM快取與DRAM快取。寫操作時,同步寫入資料到兩種快取。NVRAM的非揮發性保證了資料的可靠性,DRAM的高效能保證了效能的提升。意外掉電情況發生時,NVRAM內的備份資料才會被啟用,並重新寫回到機械硬碟。[2]

另一種方法是合併DRAM和NVRAM為單個儲存空間,快取塊儲存於哪種類型的記憶體由演算法決定,涉及寫操作的資料塊必須存放於NVRAM。[2]

NVRAM的小容量特性,使得其對機械硬碟效能提升的貢獻非常有限。雖然近年來的技術革新帶來了NVRAM容量的不斷提高,但是相比於增長更為迅速的機械硬碟儲存空間,加上資料訪問時呈現出一次性的訪問特徵,使得基於NVRAM的機械硬碟快取命中率難以有大的提升,系統讀寫效能的提升效果有限。[2]

高轉速磁碟

編輯

機械硬碟中磁碟碟片的物理轉速直接決定了處理讀寫請求的速度。根據資料的訪問熱度、保留時間、優先級等指標,將訪問頻繁的熱資料儲存在轉速為10000-15000RPM的高效能SCSI機械硬碟中;訪問熱度低的冷資料則被儲存在轉速為5400-7200RPM的普通效能IDESATA機械硬碟中。但由於機械硬碟內部物理器件的限制,不同轉速碟片所帶來的效能差距並不顯著。而且,隨著固態硬碟的出現,這種混存系統已很少被使用。[2]

固態硬碟

編輯

固態硬碟和機械硬碟之間效能的良好互補性,固態硬碟技術日益成熟。微軟、LSI、Intel、EMC、IBM、Fusion IO等企業都已經或即將推出將固態硬碟作為快取的混合儲存方案。[2]

演算法

編輯

快取頁面替換演算法不斷更新快取內的資料,才能保證快取中的資料被再次訪問的概率最大,命中率才有保證。[2]

訪問時間

編輯

LRU(Least Recently Used)替換演算法通過快取塊最後一次訪問距離當前的時長進行決策。當快取沒有空閒空間時,替換出最近最不常使用的快取塊。該演算法實現時並不需要為每個快取塊記錄訪問時間,而是使用鏈結串列的方式組織快取塊。LRU的優點是替換演算法實現簡單,能夠以很低的效能開銷適應變化的資料訪問;缺點是經常訪問的資料也可能因為暫時不使用而被換出。[2]

使用頻度

編輯

LFU(Least Frequently Used)替換演算法利用快取塊的訪問頻數進行決策。當快取中不存在空閒的快取塊時,替換出歷史訪問頻度最小的快取塊。該演算法的缺點是實現難度略高於LRU,且需要一定策略對計數器進行清零,否則新加入快取塊訪問頻度就會偏低,而曾經被頻繁訪問的快取塊則無法及時地被清理出去。[2]

綜合演算法

編輯

此演算法使用冷、熱兩個鏈結串列管理快取塊。當冷鏈結串列已滿,而又要加入新的快取塊時,則從冷鏈中移出一部分快取塊以釋放空間,新的快取塊會加入到冷鏈的熱端。快取演算法會判斷被移出快取塊的參照計數,如果其參照計數大於一定數字,則清零其參照計數,並加入到熱鏈結串列的熱端;否則該快取塊空間將會被釋放。訪問計數增加時,將該資料塊移動到該鏈結串列的熱端。冷、熱鏈結串列內部完成LRU替換演算法,冷、熱鏈結串列之間完成LFU替換演算法。[2]

參考文獻

編輯
  1. ^ 劉登峰,吳果林. 硬盘缓存. 桂林航天工業高等專科學校學報. 2005, 39 (3): 22-23. 
  2. ^ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 閆林. 基于SSD的HDD缓存系统研究. 西安電子科技大學碩士學位論文. 2014. 
  3. ^ 汪小林, 賴榮鳳 , 王振林 , 羅英偉 , 李曉明. 基于SSD高速缓存的桌面虚拟机交互性能优化方法. 電腦應用與軟體. 2011, 28 (11). 
  4. ^ 蘇海冰, 吳欽章. 用SDRAM在高速数据采集和存储系统中实现海量缓存. 光學和精密工程. 2002, 10 (5). 
  5. ^ sEctiON 1. 图书馆里的故事—认识电脑中的Cache. 電腦愛好者. 2003, (17).