在講解固態硬碟(SSD)前,我們先講幾個術語(名詞)。就像我們如果講解機械硬碟,我們要明白磁碟和磁頭,讀寫部分的機械結構等。
反正吧,磨刀不誤砍柴工。
為了更好地展開說明,列舉一些容易混淆的概念並加以說明。
- 固態儲存(Solid State Storage) :使用矽晶半導體技術,而不是藉助於機械旋轉對磁碟、光碟或者磁帶進行操作,從而實現資料存取的儲存方式 。 記憶體(RAM)、快閃記憶體(Flash)、相變儲存(Phase Change Memory, 簡稱為 PCM)等都被稱為固態儲存 。當前,因為快閃記憶體在價格、容量、可靠性等多方面達到了相對領先的平衡,因此被 廣泛應用於固態儲存領域。
- 快閃記憶體: 一種非易失性的半導體儲存器件。所謂“非易失性”,是指在斷電情況下仍能保持所儲存的資料資訊,分NOR快閃記憶體和NAND快閃記憶體。NOR快閃記憶體常用於存放系統啟動程式,在嵌入式裝置中較為常見;NAND快閃記憶體主要用於資料儲存,固態硬碟中使用的就是NAND快閃記憶體。
- 固態硬碟(SSD):由控制器、記憶體、快閃記憶體顆粒(前面提到,因其多方面達到了領先的平衡,被廣泛用於固態儲存)等單元組成。控制器提供了外部主機介面、內部快閃記憶體管理介面,並透過內嵌的 CPU 來執行SSD韌體,它管理著主機可見的儲存地址空間、快閃記憶體物理空間、垃圾回收、磨損均衡等。記憶體用於執行SSD韌體,並儲存在地址空間虛擬化所需要的各種表項。快閃記憶體只是最終的儲存資訊的實體,多顆快閃記憶體顆粒分佈在SSD的電路板上,共同為SSD提供儲存空間 。
快閃記憶體介紹
上面提到快閃記憶體在固態硬碟的廣泛應用,所以在講解固態硬碟的各種演算法前需要重點介紹一下快閃記憶體的特性。
- 概念與原理
快閃記憶體使用三端器件作為儲存單元,分別為源極、漏極和柵極,主要利用電場的效應來控制源極與漏極之間的通斷;在柵極 與矽襯底之間增加了一個浮置柵極,浮置柵極可以儲存電荷,利用電荷儲存來存 儲記憶。
擦除:釋放浮置柵極的電荷,從而使之變成‘1’,這個動作被稱為“擦除”。
程式設計:向浮置柵極注入電荷,從而使之變成‘0’,這個動作被稱為“程式設計”。
2. 內部組織結構
快閃記憶體顆粒內部一般由成千上萬個大小相同的塊(Block) 所組成,塊大小一般為數百 KB 倒數 MB。每一個塊的內部又分為若干個大小相同的頁(Page),頁的大小一般為 4KB 或者 8KB。
3. 資料寫入
- 向快閃記憶體中寫入資料時,只能以頁為粒度進行寫入,如果快閃記憶體中某個頁已經被寫入了資料,那麼不能向這個頁中再次直接寫 入資料,只能在這個頁的資料被清空以後才能再次寫入。
- 快閃記憶體進行資料清空的力度是塊,即一次清空動作會將一個塊的資料全部抹除。清空動作對應著快閃記憶體的擦除動作,即擦除了一個塊的資料後,這 個塊中所有的 bit 位都變成了 1。
- 寫入動作對應著快閃記憶體的程式設計動作,將資料寫入頁時,將特定的 bit 位從 1 變成 0,就使得這個頁儲存了相應的資料。
- 快閃記憶體就工作在這樣的“擦除”和“程式設計”迴圈中,一次這樣的迴圈,被 稱為一次擦寫(Program/Erase,簡稱為 P/E)。快閃記憶體中每個塊的 P/E 次數有限;當某個塊的 P/E 次數達到上限後,就無法保證能夠繼續有效地存取資料。
4. 資料讀出
- 快閃記憶體中儲存的資料,經過一段時間後,可能存在若干 bit 位的錯誤。如果直接將頁中讀出的資料返回給上層業務,就可能造成業務失敗。
- 為了保證返回給上層業務的資料是正確有效的,快閃記憶體內部預留了部分空間用於儲存業務資料的 ECC(Error Correcting Code,糾錯碼)。每當讀取資料時,控制器會使用相應的 ECC 對這些資料進行錯誤檢查和糾正。
- 受限於控制器的計算能力,ECC 的糾錯範圍有限,只能在頁面資料中出現bit 位錯誤的數量不超過一定的上限時才有效。當前主流的 ECC 糾錯能力一般是 24bit/1KB,即每 1KB 資料(包含業務資料和 ECC 校驗資料) 內出現了 bit 位錯誤不超過24個時,控制器可以透過計算的方式得出正確有效的業務資料。
- 當某個頁中的 bit 位錯誤數超過控制器的計算能力後,該頁的業務資料無法被正確讀出,此時便產生一個 UNC(Uncorrectable)錯誤,UNC 錯誤只能被更高層級的 RAID 機制所修復。
在通電 40°C 和斷電 30°C 溫度下,SSD 將將資料保留 52 周,即一年。如表所示,資料保留與活動溫度成正比,與斷電溫度成反比,這意味著較高的斷電溫度將導致保留率下降。該活動溫度僅為 25-30°C 且斷電為 55°C 的最壞情況下,資料保留時間可能短至一週,這是許多網站所炒作“資料在幾天內丟失”的言論。是的,它在技術上可能發生,但不是在典型的使用者環境中。
在現實中,55°C 的斷電溫度對於客戶端使用者來說根本不現實,因為SSD很可能在室溫下儲存在室內某處(壁櫥、地下室、車庫等),溫度往往低於 30°C。另一方面,活動的溫度通常至少為 40°C,因為電腦中的硬碟和其他元件會產生熱量,使之超過室溫
Control Gate: 控制柵
ONO: 氧化層
Floating Gate: 浮動柵
Tunnel Oxide: 隧道氧化層
Silicon: 矽
與一般原理一樣,資料保留的時長是有技術解釋的。半導體的導電率隨溫度而變化,這對NAND來說是個壞訊息,因為當它不通電時,電子不應該移動,因為這會改變單元(cell)的電荷。換句話說,隨著溫度的升高,電子更快地從浮動柵中逸出,最終改變單元的電壓狀態,使資料不可讀(即SSD不再保留資料)。
對於正常通電使用時,溫度具有相反的效果。由於較高的溫度使矽導電性更高,因此在程式設計/擦除操作過程中電流較高,對隧道氧化層的壓力較小,從而提高了單元(cell)的耐久性,因為隧道氧化層保持電子在浮動柵內的能力實際上決定了SSD的耐久性[壽命]。
總之,在典型的客戶環境中,絕對沒有理由擔心 SSD 資料保留時長。請記住,此處提供的數字適用於已透過其耐久性考核的SSD(寫入量達到標稱值)[潛臺詞就是隧道氧化層將電子控制在浮動柵的能力已經變得較差了]。因此對於新SSD,資料保留時長要久得多,通常對於基於全新的MLC NAND的SSD來說,資料保留時長通常會超過十年。如果你今天買了一個SSD,並存儲資料,SSD本身將變得完全過時比它將失去它的資料更快。此外,考慮到 SSD 的成本,將它們用於冷儲存無論如何都不經濟高效,因此,如果您希望存檔的資料,我建議僅出於成本原因使用機械硬碟。