快取(Cache memory)是硬碟控制器上的一塊記憶體晶片,具有極快的存取速度,它是硬碟內部存儲和外界接口之間的緩衝器。由於硬碟的內部數據傳輸速度和外界介面傳輸速度不同,快取在其中起到一個緩衝的作用。快取
|
硬碟的快取主要起三種作用:
一是預讀取。當硬碟受到CPU指令控制開始讀取數據時,硬碟上的控制晶片會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到快取中(由於硬碟上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬碟則不需要再次讀取數據,直接把快取中的數據傳輸到記憶體中就可以了,由於快取的速度遠遠高於磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;
二是對寫入動作進行快取。當硬碟接到寫入數據的指令之後,並不會馬上將數據寫入到碟片上,而是先暫時存儲在快取里,然後傳送一個“數據已寫入”的信號給系統,這時系統就會認為數據已經寫入,並繼續執行下面的工作,而硬碟則在空閒(不進行讀取或寫入的時候)時再將快取中的數據寫入到碟片上。雖然對於寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在快取里的時候突然掉電,那么這些數據就會丟失。對於這個問題,硬碟廠商們自然也有解決辦法:掉電時,磁頭會藉助慣性將快取中的數據寫入零磁軌以外的暫存區域,等到下次啟動時再將這些數據寫入目的地;
三是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬碟內部的快取會將讀取比較頻繁的一些數據存儲在快取中,再次讀取時就可以直接從快取中直接傳輸。
快取容量的大小不同品牌、不同型號的產品各不相同,早期的硬碟快取基本都很小,只有幾百KB,已無法滿足用戶的需求。2MB和8MB快取是現今主流硬碟所採用,而在伺服器或特殊套用領域中還有快取容量更大的產品,甚至達到了16MB、64MB等。
大容量的快取雖然可以在硬碟進行讀寫工作狀態下,讓更多的數據存儲在快取中,以提高硬碟的訪問速度,但並不意味著快取越大就越出眾。快取的套用存在一個算法的問題,即便快取容量很大,而沒有一個高效率的算法,那將導致套用中快取數據的命中率偏低,無法有效發揮出大容量快取的優勢。算法是和快取容量相輔相成,大容量的快取需要更為有效率的算法,否則性能會大大折扣,從技術角度上說,高容量快取的算法是直接影響到硬碟性能發揮的重要因素。更大容量快取是未來硬碟發展的必然趨勢。