Garbage Collection
垃圾資料回收機制
GC是SSD主要元件NAND Flash記憶體的儲存空間管理機制,是把已經存在NAND Flash某位置的資料,轉移到NAND Flash的其他位置,並將無用的資料抹除的過程,對於SSD的耐用度及效能,GC機制的設計優良與否至關重大。
NAND Flash無法以覆蓋舊有無效資料的方式將新資料寫入,必須先將區塊內原有的無效資料抹除(Erase)後,才可以寫入新的資料。但是,NAND Flash的最小寫入單位是頁(Page);最小抹除單位是區塊(Block, 1 Block = 64 or 128 Pages),也就是說若要抹除數據則需要以整個區塊為單位來抹除。
GC的運作機制,就是當區塊內有需要被抹除的無效資料時,它會將區塊內的有效資料複製、合併到另一個空閒的區塊中,這樣原來區塊中的無效資料才能夠以區塊為單位進行抹除,抹除後就形成了一個空白區塊(Free Block)。
假如Block X裡,A-F 6個Page有資料,A、B、C要修改成A’、B’、C’;D、E、F的資料要刪除,那麼SSD的運作方式將會是:
(1) 將A’、B’、C’存入到空白的Page,並且標注A、B、C、D、E、F是Garbage
(2) 將A’、B’、C’另存到Block Y裡的空白Page
(3) 執行Garbage Collect,抹除整個Block X,所有的Page都成為空白Page
GC的目的是要不斷的清出更多的空白區塊,以維持SSD的寫入效能,因為有更多的空白區塊,寫入速度就不會變慢。但又因為NAND Flash的區塊抹寫次數(P/E Cycle)是有上限的,如果單一個區塊不斷被寫入和抹除,該區塊就會過度耗損,造成讀寫速度變慢,嚴重者甚至會損壞而產生壞塊(Bad Block)。
所以GC設計除了要能高效率釋放區塊,還要和WL技術,以及TRIM指令完美地搭配,才能發揮最大的綜效,兼顧讀寫效能和耐用度。