DWPD (每日全碟寫入次數)

DWPD (每日全碟寫入次數)

本文說明SSD中,DWPD(Drive Writes Per Day)所代表的意義與正確的計算方式,並分析各種影響DWPD的變因和增加DWPD的方法,同時也說明哪些應用領域需要較大的DWPD。

要判斷SSD是否適用,除了容量和效能之外,壽命長短也是非常重要的一個指標,而SSD的壽命通常跟寫入的資料總量有關 – 越頻繁寫入,SSD就越快損壞。衡量SSD壽命主要有兩個指標,一是TBW(Total Bytes Written),代表SSD在損壞前,總共可以寫入多少Bytes。由於一般SSD大多可以寫入幾十到幾百Terabytes,因此TBW也有人當成Tera Bytes Written,代表SSD總共可以寫入多少Terabytes。而另一個指標就是DWPD,代表在保固期內,用戶每天可以全碟寫入多少次。假設SSD的容量是256GB,DWPD是1.5,只要用戶每天平均寫入的資料量不超過256GB x 1.5 = 384GB,則SSD在保固期內不會損壞。

不同SSD的TBW和DWPD,通常跟SSD韌體演算法、NAND Flash種類,以及SSD的預留空間有關。一般而言,計算公式如下:

NAND Size(TB)是指SSD所連接的NAND flash總容量,以Terabytes為單位;PE Cycle是NAND能寫入抹除的次數、WAF(Write Amplification Factor)是寫入放大比,而Wear Level Factor則是指平均抹除的參數。WAF和Wear Level Factor主要跟SSD韌體的演算法有關、SSD Capacity(TB)是SSD的容量、Warranty day則是保固的天數。由上述公式可知,要增加SSD的DWPD,除了改善韌體的演算法,就只有兩種方法,一是使用PE Cycle較高的NAND flash,例如SLC NAND的PE Cycle通常是20K - 60K,而TLC NAND則只有1K - 2K,但SLC的價格比TLC高非常多。另一種方法則是增加SSD的預留空間,也就是增加OP(Over Provisioning),這兩種方法都會增加SSD的成本。因此有較高的DWPD的SSD,售價通常也會比較高。

目前的SSD為了提高效能和穩定性,常會將TLC NAND的某些block開成Pseudo SLC,當成SLC cache使用,而SLC cache也分為Static SLC和Dynamic SLC兩種。如上圖所示,Static SLC代表這些block永遠都是當Pseudo SLC,Dynamic SLC則是有可能動態切換成TLC使用。若採用這種作法,上述計算DWPD的方式則會有些問題,因為Pseudo SLC跟TLC的PE Cycle有很大的不同,同時計算WAF時,是否有將SLC cache的影響加入,各家控制器廠商的算法也不盡相同,為了避免這些問題,應該採用下面的公式來計算DWPD:

上述公式是將Static SLC跟TLC兩個區域分開計算,因為這兩個區域互相之間不會做wear leveling,所以只要有任一個區域到達PE Cycle,則SSD的壽命就到盡頭了。因此取兩個區域的TBW的最小值,最後再計算DWPD。在此需注意:由於Dynamic SLC區域的PE Cycle應該跟TLC一樣,而且會跟TLC block做wear leveling,所以需合併計算TBW。有些SLC cache的作法是round robin(循環制),每一個block的erase count都一樣,所以Wear Level Factor就是1。在此請注意,上述公式若是只有一個區域,則會與前一頁的公式相同。

而在計算DWPD時所寫入的模式時,JEDEC有定義兩種workload(作業量),一種是client workload,屬於消費型的應用領域;另一種則是enterprise workload,主要是用於企業級的SSD。這兩種workload隨機寫入的範圍,對SSD WAF的影響非常大。

在計算出DWPD之後,若要驗證此數據是否正確,則有以下數種方法:

  1. 直接將SSD寫到損壞,但缺點是測試時間很長。
  2. 使用NAND的協定分析儀,確認NAND的erase count,以驗證SSD controller所提供的erase count是否正確。
  3. 暫時停用SSD的wear leveling功能,集中寫入小範圍的區域;但此方法的準確性會跟SSD的演算法相關。

 

通常雲端和監控這類的應用領域,因為寫入較頻繁,所以需要採用有較高DWPD的固態硬碟,通常DWPD值要有1-3。而一般使用者,或是以讀取為主的應用領域,因為不太可能每日都大量寫入資料,所以選用DWPD 0.2至0.5左右的固態硬碟就已足夠。