大容量儲存與磁碟排程

儲存階層(the storage hierarchy)

想像按照拿取頻率來整理一間廚房。鹽和刀放在流理臺上,伸手可及。鍋子收在低矮的櫥櫃,一步之遙。大湯鍋則放在地下室。沒有人會把所有東西都堆在流理臺上——既沒空間,臺面又寶貴——所以你把最常用的擺得最近,至於難得用一次的就接受走遠一點。電腦正是以這種分層方式來安排它的記憶體與儲存,在速度與容量、成本之間取捨。

具體來說,這些層級從最上方又快又小又貴,排到最下方又慢又大又便宜:CPU 暫存器(數個字組,不到一奈秒)、CPU 快取(數 KB 到數 MB,數奈秒)、主記憶體或 RAM(數 GB,約 100 奈秒),以及最底層的大容量儲存——先 SSD 再 HDD(數 TB,SSD 是微秒級,硬碟是毫秒級)。往下每一步大約慢一個數量級以上,但每位元組卻大得多也便宜得多。最關鍵的那條分界線是:儲存層以上的一切都是揮發性的(斷電即失),而 CPU 能直接從中工作;最底層的大容量儲存是非揮發性的,但 CPU 無法直接從中執行。

為什麼重要:記憶體管理、快取與虛擬記憶體的全部工作,就是把這個階層藏起來,讓程式感覺自己擁有一塊又快又無限的記憶體。區域性(程式傾向重複使用相同與鄰近的資料)正是這個把戲奏效的原因:把熱門的東西留在階層的高處,大多數存取就會落在快速的層級上。如今這個階層又多了新的階梯,例如持久記憶體,模糊了揮發 RAM 與持久儲存之間那條原本清楚的界線。

把各層的粗略存取時間並排來看:暫存器不到 1 奈秒、L1 快取約 1 奈秒、RAM 約 100 奈秒、快速 SSD 約 100 微秒(比 RAM 慢一千倍)、硬碟約 10 毫秒(比 RAM 慢十萬倍)。每一次大幅跳躍,都是快取存在的理由。

順著階梯往下,速度、容量與價格三者一起改變。

快取由硬體管理而非作業系統,而 RAM 與大容量儲存才是作業系統的領地。這個階層是一條光譜,不只是兩個盒子——把快取、RAM 與硬碟混為一談,會導致對效能的直覺嚴重偏差。

又称
memory and storage hierarchy記憶體與儲存階層