閃存壽命是以P/E次數來計算的,而WL就是確保閃存內每個塊被寫入的次數相等的一種機制。若沒有這個機制,SSD內的閃存顆粒就無法在同一時間內掛掉,那對用戶來說就是災難。
會出現這種情況的原因在于,用戶在LBA空間里的數據更新速度是不同的,有部分是經常需要更新,而有些卻長期不需要變更,因此若沒有WL,很顯然那些經常被更新的數據所在的閃存壽命會首先被消耗完畢,而不怎么需要變更的數據所在的閃存損耗就要小得多。
為了避免出現這種狀況,便需要WL這個機制來保持SSD內的每個閃存顆粒的磨損程度在相對一致的狀態且最后同時報廢,但由于顆粒本身也有其個體差異,因此這里說的也只是最理想的狀態。
WL技術依賴于LBA和PBA的轉換:也就是說,每次主機上應用程序請求相同的邏輯頁地址時,閃存控制器動態的映射邏輯頁地址到另一個不同的物理頁地址,并把這個映射的指向存放在一個特定的“映射表”里。而之前過期的物理頁地址就被標記為“無效”并等待隨后的擦除操作。這樣一來,所有的物理塊就能被控制在一個相同磨損范圍,并同時“老化”。
WL算法有動態及靜態兩種,簡單來說動態WL是每次都挑最年輕的閃存塊使用,老閃存塊盡量不用。靜態WL就是把長期沒有修改的老數據從年輕的閃存塊里搬出來,重新找個最老的閃存塊存放,這樣年輕的閃存塊就能再次被經常使用,概念很簡單,只是這么一句話,但實現起來卻非常的復雜,特別是靜態WL,而且也只有靜態WL才算是真正的全盤WL。
由上圖我們可知道,如果固態硬盤沒有WL,那耐久度就無從可提。