SLC/Non-SLC Cache

SLC/Non-SLC Cache

本文說明SSD設計原理中, SLC cache和non SLC cache(Direct Write to TLC)這兩種方法的優缺點,同時分析各種不同的做法與應用範圍。SLC cache的作法有相當多的變化,本文將會逐一分析。

如下圖所示,常見的NAND flash目前可分為三大類 – SLC、MLC和TLC。SLC一個cell只能儲存1bit,MLC可以存2bits,TLC則可存3bits。其中SLC的速度最快,壽命也最長,但價格也最為昂貴。TLC則剛好相反,速度慢、壽命短,但由於價格便宜,所以目前大多數的SSD皆採用TLC快閃記憶體來作為儲存媒介。

廉價的TLC使得SSD開始大量普及,但TLC的P/E次數(Program/Erase Count,寫入/抹除次數)是一個致命傷。隨著NAND Flash製程的進步,NAND中存儲數據的Cell(基本存儲單元)柵極上的氧化層化學鍵更難控制,導致P/E次數隨著製程前進而縮減,因此TLC NAND的P/E次數大概只有SLC的3~5%。

然而由於製程的持續演進,加上3D NAND技術的發展,NAND快閃記憶體的密度和容量仍可不斷提升。此外,SSD的讀寫原理為均衡磨損(Wear Leveling),這也意味著TLC NAND可以依靠不斷增大的容量來減少單個Cell的磨損,以延長產品的使用壽命。以相同的寫入量來說,240GB TLC SSD的壽命要比120GB長一倍,而480GB又會比240GB長一倍,所以隨著產品容量的提升,TLC SSD壽命較短的問題似乎有了解套辦法,畢竟未來SSD的容量可以不斷提升。

TLC SSD還有另一個致命的弱點,那就是讀寫速度較慢。但不論是參考各大SSD廠提出的官方數據,或是媒體的評測結果,SSD的最高讀寫速度都還在持續提升,似乎速度也不再是TLC SSD的問題了,但事實真是這樣嗎?以下將逐一分析SSD提速的常見作法。

TLC SSD為了解決讀寫較慢的問題,主要採用了「SLC Cache」的做法。而之所以稱為「SLC Cache」,是因為它並不是真正的SLC NAND Flash。我們知道SLC NAND Flash因為每個Cell只存儲1bit數據,所以讀寫速度能領先MLC和TLC。而TLC SSD裡面所配備的SLC Cache,實際上是在既有的TLC NAND Flash裡面劃出一部分空間,在其中的每個Cell中只寫入1bit的數據,藉以提升SSD的讀寫性能。

TLC SSD會依據SSD本身的容量劃分出一定比例的空間,來用以實現SLC Cache;而不同SSD廠商的算法也會有所差異。有些SSD會選擇劃定專屬空間來充當SLC Cache,而這塊空間的每個cell永遠只存1bit數據,無論在任何情況下都不會變成TLC區域,這樣做的好處便是設計簡單,不用動態切換SLC/TLC,而且專屬區域的P/E會比動態切換SLC/TLC的區域長很多。但由於需要額外的專屬空間,採用此種作法的SSD通常是不足容的,也就是使用者能用的容量會比NAND的容量少。另外這塊SLC Cache專屬區塊由於要處理最多數據量的讀寫,因此這區域的P/E也有可能會提早耗盡(SLC也有P/E)。

實現SLC Cache的另一種作法則是「全盤動態劃分」SLC Cache區域:SLC Cache的大小會隨著SSD實際的使用容量而變化,這樣SLC Cache的空間大小雖無法得到保證,但由於是均衡磨損,也不會對全盤NAND Flash的P/E過分消耗。無論是特別劃出SLC Cache的空間,還是採用動態全盤SLC Cache的方式,這些SLC Cache都能夠有效提升SSD的讀寫性能。

SLC Cache還有另一個好處,就是當發生了不正常的斷電時,如果正在將資料寫入TLC NAND,那會影響同一個cell裡面其他的bit,造成之前已經存入NAND的資料毀損;而SLC Cache由於一個cell只存1bit,就可避免這個問題。

但SLC Cache這種做法最大的缺點就是寫入的速度會不穩定。一旦寫入的資料量超過SLC Cache能存取的負載,就必須將資料轉而寫入TLC,這時寫入速度會大幅下降。若將此種作法的SSD用在影像儲存或監控器的領域,就有可能發生影像不連續的問題。如上圖所示,SLC Cache的作法在一開始的時候, 效能會非常的高,但一段時間後,則會下降非常多;而Non SLC Cache的作法就會非常平穩,不會有降速的問題。