FTL垃圾回收,磨損平衡的學習筆記

原創內容,轉載請注明:  [http://www.od-music.com]  謝謝!

垃圾回收的概念其實是很簡單的,太多了資料可以看看就會明白,主要的經典算法就是Greedy policy,Cost-benefit policy, Cost-Age-Times(CAT)policy。這里我就簡單說一下需要掌握的幾個關鍵性概念:

1、預留空間 OP(Over Provisioning) 和 ?WAF(Write Amplification Factor)

由于WAF的大小和copy 有效數據有關,想要減少WAF的值出發點是減少copy。

2、掌握垃圾回收,沿著以下線路進行探索
(1)GC的原因:塊最終會被寫滿,必須時刻保證有free page 來滿足新的寫入需求
(2)GC的過程:When to GC 什么時候喚醒GC操作->
Which block選擇作為victim block, 這里的選擇方法就是上述提到的經典
算法以及改進->
How many blocks將要被erase 擦除,只要涉及到擦除,就會和磨損平衡
有關->
How to 寫回這些有效數據,Where to 分配這些有效數據,這里稱之為
Data redistribution policy數據再分配策略
Where 來分配新請求寫入的數據
想要改進GC的算法,最基本的簡單的就是按照上述來思考。

現如今的都是在經典算法上進行改良。我在學習的時候做過三種算法的模擬,后來自己加了一個Two-block? Policy 來實現block再分配,做了一個簡簡單單的改良,WAF寫放大,以及copy次數顯著減少。就是有兩類block,一類是host write block, 寫入的是從host發來的新數據;另一類是copy write block,寫入的是victim block上的有效數據。Z這樣簡單的分類對后續學習磨損平衡很有幫助。包括那些經常更新的數據還有不經常更新的數據怎么來做處理都是學習和思考的點。

對Wear Leveling 磨損平衡的認知:

在寫數據操作不斷更新的情況下,使得物理閃存塊的擦除操作頻繁發生,而每一個塊上的擦除操作次數不是無限的,是有一定壽命的,也就是經??吹降腜rogram/Erase Cycle 來衡量閃存的壽命。一個block擦除次數到達了一定的閾值,會使得這個塊報廢,降低閃存的壽命。磨損平衡的出發點是不能一直讓那幾個塊一直不斷的erase,應該讓所有的block平攤這個任務,最好的理想狀態就是每個block的擦除次數是平均的,達到平衡的效果,以此來延長閃存的壽命。

拿一張紙記筆記來說,如果不斷的更改內容在一處,不斷的用橡皮擦erase,用不了幾次,這里就會破掉,因此每次擦除盡量在整張紙上找剛擦一兩次的,這會延長紙張整體壽命。

關于閃存的預期壽命:

這個overhead是指文件系統和閃存管理數據結構的開銷。

在看了很多論文以及材料的時候以下是常常會接觸到的概念:

在研究磨損平衡的時候把擦除次數Erase Counts多的塊稱之為old blocks,這類塊年歲已高,壽命即將到達尾聲,因此盡量不要讓他們再經受擦除的折磨來長命百歲,任務就給那些擦出次數少的塊成為young block,年輕力壯,可以幫老人們多多承擔擦除的任務。

前面有提到,擦除是由于用戶寫入數據不斷更新而造成的,那些不斷更新的數據稱之為hot data,具有high locality,相對比,不常更新的稱之為cold data。

在研究了經典的CAT垃圾回收算法時,因為Copy的有效數據可以是cold data 也可以是hot data,而不斷更新的新的請求數據,那些也可以是cold data和hot data,那么怎樣處理這些數據,怎么樣分配閃存的 物理塊,能夠減少copy的次數,能夠延長閃存的壽命,這里就會啟發很多想法。

磨損平衡分為動態和靜態兩種:

動態磨損平衡:主要特點是下一次寫數據選擇那些擦除次數少的即young blocks來寫,但是那些存放cold data的塊的擦除次數是比存放hot data的少很多的,因此盡可能的把hot data 寫進young blocks上,但是cold data不能一直占用擦出次數少的塊,會造成失衡,因此需要靜態磨損平衡,冷熱數據的分離對性能影響很大。

靜態磨損平衡:主要做的就是追蹤所有的好塊,把cold data從young blocks里面copy 到 older blocks中,這樣可以讓young blocks歇一歇。我們要記得磨損平衡不是為了減少copy次數,而是為了延閃存的壽命。

二者的比較動態磨損平衡是低成本并且降低靜態磨損平衡的復雜度,靜態磨損平衡是最大化的延長了壽命,所以要將二者結合。

磨損平衡的終極目標就是:

Hot data -> young blocks

Cold data -> old blocks

Hot-Cold Swapping 技術

核心算法(結合CAT垃圾回收算法):

  1. 每個block都記錄著對應的擦出次數
  2. 定期檢查所有塊的擦出次數,這個激活期成為AP(Activation Period)
  3. 只要任何兩個塊的擦除次數之間的最大差異大于閾值,它們就會被交換

由于磨損平衡,會帶來的性能開銷會使得WAF增大。

分類目錄 存儲, 技術文章.
掃一掃二維碼或者微信搜索公眾號ssdfans關注(添加朋友->點最下面的公眾號->搜索ssdfans),可以經??吹絊SD技術和產業的文章(SSD Fans只推送干貨)。
ssdfans微信群介紹
技術討論群 覆蓋2000多位中國和世界華人圈SSD以及存儲技術精英
固件、軟件、測試群 固件、軟件和測試技術討論
異構計算群 討論人工智能和GPU、FPGA、CPU異構計算
ASIC-FPGA群 芯片和FPGA硬件技術討論群
閃存器件群 NAND、3D XPoint等固態存儲介質技術討論
企業級 企業級SSD、企業級存儲
銷售群 全國SSD供應商都在這里,砍砍價,會比某東便宜20%
工作求職群 存儲行業換工作,發招聘,要關注各大公司招聘信息,趕快來
高管群 各大SSD相關存儲公司高管和創始人、投資人

想加入這些群,請微信掃描下面二維碼,或搜索nanoarchplus,加阿呆為微信好友,介紹你的昵稱-單位-職務,注明群名,拉你進群。SSD業界需要什么幫助,也可以找阿呆聊。