悶! 來分析SSD Freeze的成因

最近覺得很悶.
因為hardware不配合, 我的SSD的研發案停了. 除非要再開Sata 3的SSD控制IC, 我想應該不可能再碰SSD的研發了. 所以雖然解決了SSD Freeze的問題,但我的產品也無法面世.
因為很悶,所以來分析一下為什麼SSD會freeze. 但我只能從已公開的資訊來分析. 怎麼解決是我的Know how和公司機密, 就不能說了. 這篇文章將從基礎開始,再討論Align 為何能改善,但並無法徹底解決Freeze. 及為什麼SandForce在Random write上比其他controller快很多的原因.最後再看Trim

要分析SSD Freeze的問題必需從Nand Flash的基礎架構看起. Nand Flash的操作上,要重新對一個Page寫入資料必需要先對其Erase. 但不同於Nor flash, NandFlash的Program單位和Erase單位為不對等的.
一般是128 Pages或256 pages一個Block. 如果我們要重新寫入一個Page時,要Erase整個Block,會導致其他127或255 page的資料消失. 所以為保存其他的不應該被Erase的page, 就要將page copy到其他的Block保存.當然,實際操作起來更為複雜.這些是各家演算法的精髄所在.不好說明.

所以在Worse case下,例如100% 4K Random write時,就會發生為了寫入一個page而需要copy 其他127或256page的現象. 現今MLC的program time約為1ms左右.所以再怎麼快, 也要0.1秒到0.3秒間才能處理掉1個worse case的page program. 且由於演算法對其他Sequential 或 File system最佳化的情況下, worse case的情況會被放大到一次要處理上百個不同block的page. 算一算至少要10秒以上. 這就是問題的成因. 做得差的會直接被OS timeout掉. 這個現象在早期走usb flash drive架構的SSD非常明顯.

再來探討Align有沒有辦法解決Freeze的問題. 為什麼要做Align? File system是以cluster為基本單位操作, 最常見大小約為4K bytes. Nand Flash目前最常見的Page size也為4K. 但...OS的LBA是以512 bytes為單位在跑. 所以Cluster常跟Nand flash的page不對齊. 所以一個Cluster常會橫跨2個Flash page. 當為random write時, 就會發現資源被以2倍的速度消耗. 所以如果將cluster對齊,可以減緩這個問題.不然就以最新的4K sector來定義LBA也行. 但是Freeze的問題並沒有因此完全解決. 因為即使以一倍的速度消耗資源, 還是會用到完. 用完後就可能又回到worse case的情況下. 所以只會拉高平均值,但問題仍在.

再來是Sandforce的Controller為什麼在Random write上表現得比Intel好,但卻還是存在Freeze的問題. 我查過容量和Flash顆粒的關係, 一般SSD在保留容量的百分比為6.8%, 但SandForce低容量為12.x%, 高容量為27%. 所以在資源消耗速度相同下, 自然會晚點進入worse case的情況.

但不可否認,一旦進入worse case後, SandForce和Intel的Controller還是有著高人一等的處理方式. 就我從測試的結果來看, intel和SandForce的處理方法是同等級的.只有一句高明可以形容.所以Freeze的情況並不像早期的直接死給你看.
其實, 這也是為什麼SSD使用久了效能會下降的原因,當可用資源變少後,要回收重整是需要時間的.一旦把這些時間算下去, 平均效能就會變差. 所以拿全新的SSD和用過一陣子的SSD是無法相比較. 全新的SSD其可使用的容量空間遠大於使用過的.尤其是惡操過的.

這時就要提到Trim了. Trim是建立在ATA上的新Feature. 其作用在讓OS直接指定一區段的資料不需保留. 一般而言, SSD或HDD是無從得知OS要不要放棄那區資料. 所以要視所有已存在的資料為需保留. 但Trim給了SSD一個能力, 可以放棄一大片資料. 回到剛剛worse case的部分,如果我們改了一下條件. 這127 page中, 有64個page被OS指定要放棄. 所以就只需要花一半的時間來保留資料. 所以重整時間就縮短.
但trim不是萬能, 原因是OS support及worse case仍會發生. 只要worse case仍會發生, 就跑不掉Freeze的現象.

以上就是我對目前SSD的現象分析. 這也是為什麼我自己做SSD,卻從不採用SSD做我私人用途的原因.
其實還有些內幕.讓我只對Intel的SSD有信心. 唯一讓我佩服的SSD設計.



是的 沒有錯,,不管是SSD或是 其它 有用NAND FLASH 的控制器,,會偷偷等到系統 沒有傳資料時候

去做資料整合(搬移工作) 這時候 又很擔心 瞬間power OFF ,,

longyeekimo wrote:
最近覺得很悶.因為h...(恕刪)



寫得很棒

不過太多專業術語

看不太懂


倒是後半段有看過PCADV解釋過

比較好懂
建議你快刪此篇吧!!沒看到鴻X工友被告嗎?
鄉民很厲害的會把你挖出來..[惡魔]
布小哥 wrote:
建議你快刪此篇吧!!...(恕刪)


這不用擔心...完全不包括機密在裡面的..
一開始就說明了,完全是公開資訊可以找到的.

至於機密部分,我可沒那麼笨.這是我吃飯的傢伙...這是不可能跟任何人說的. (公司的核心研發除外)

寫得很棒

不過太多專業術語

看不太懂


倒是後半段有看過PCADV解釋過

比較好懂


不懂沒關係...
其實整篇只有一個重點. Nand Flash做SSD會 Freeze的起因為物理限制.
沒得解的. 只能技巧性的分散. 所以就有順和不順的差別.
longyeekimo wrote:
最近覺得很悶.
因為...(恕刪)


真是一篇補充常識的好文章啊

小弟想請教SLC的Partial Page program功能現在是否還有?
如果slc能Partial Page program,加上本身的特性,是不是就不會freeze呢?
看完第一段就決定"回文+加分+收藏"
5分奉上
難怪最近一些 SSD 的問題開始浮出來了,
可能跟版大說的有一定程度的關係啊!!!
因為一年多前會衝下去使用 SSD 的, 相信多數是熱血玩家,
理所當然是要拼速度, 要拼速度, 就會狠操狂操吧??
那一年多後的現在, 症狀.....也該浮出來囉!!!

所以囉.....物理性的限制不可解, 只可能降低其影響程度,
但是累積到一定的程度後, 一樣得發病??
那麼, SSD 說真的, 不就是短期內拿來玩爽的?? 燒錢啊!!!
我還是乖乖用我的萬轉 Veloci Raptor 實在一點....
longyeekimo wrote:

其實還有些內幕.讓我只對Intel的SSD有信心. 唯一讓我佩服的SSD設計.


比較想了解這個,除了Intel的SSD,其他的ssd的設計是哪有問題?會影響到什麼?
文章分享
評分
複製連結
請輸入您要前往的頁數(1 ~ 12)