固態硬碟(SSD)
/ S-S-D /
硬碟是唱片機;固態硬碟比較像一大片微小電燈開關的格網,沒電也記得自己的位置。固態硬碟把資料存在快閃記憶體裡——數十億個用陷住電荷來保存位元的單元——而且完全沒有運動部件。因為沒有機臂要擺、沒有碟片要轉,就沒有尋道時間、沒有旋轉延遲:抵達任何位置都花差不多一樣短的時間。光是這一點,就是為什麼固態硬碟比磁碟感覺靈敏得多,尤其在隨機存取上。
快閃有它自己古怪的規則,得由硬碟藏起來。快閃組織成頁(你讀或寫的單位,幾 KB),頁再組成大得多的區塊(數百頁)。你可以自由地讀一頁、寫一頁空的,但問題來了:你不能就地覆寫一頁——要重寫它,必須先抹除,而抹除一次只能整個區塊一起。這就是「先抹除再寫入」。所以更新一頁意味著讀整個區塊、抹除它、再連同改動重寫——若天真地做,既慢又浪費。更糟的是,每個區塊在有限次抹除循環後就會耗損壞掉。兩段韌體馴服了這一切:快閃轉換層把邏輯區塊重新映射到實體頁,好讓寫入能落到已經空的空間;磨損平衡把抹除平均分散,好讓沒有區塊提早死去(見 flash-translation-layer 與 wear-leveling)。
結果是讀寫延遲以微秒而非毫秒計的儲存,隨機存取 IOPS 比硬碟高上數千倍——而 PCIe 上的 NVMe 固態硬碟把這推得更遠。誠實的提醒:因為先抹除再寫入,寫入比讀取更慢也更複雜;背景垃圾回收期間效能可能下滑;而且快閃單元會耗損,所以硬碟有有限的寫入壽命。儘管如此,對幾乎每一種工作負載,固態硬碟都壓倒性地勝過旋轉磁碟,這就是為什麼磁碟如今主要以便宜的大容量身分倖存。
更新一個已有資料的 4 KB 頁:固態硬碟不會就地覆寫它。快閃轉換層把新資料寫到一個全新的空頁,把舊頁標記為無效,稍後一次背景巡查再抹除整批無效頁的區塊以回收它們——這一切都藏在一個樸素的「寫第 N 號區塊」命令背後。
「覆寫」是個假象:快閃寫到別處、在背景抹除區塊,因為你無法就地重寫一頁。
固態硬碟並非樣樣神速:寫入比讀取昂貴,持續重度寫入在快取填滿後會落到較慢的穩態,而且每個單元都有有限的抹除循環壽命。耗損是被管理,而非被消除。