GC垃圾回收是什么?
垃圾回收(Garbage Collection, GC)是針對(duì)固態(tài)硬盤(pán)(SSD)核心組件NAND閃存存儲(chǔ)器的一種空間管理機(jī)制。它的核心任務(wù)是將NAND閃存中有效數(shù)據(jù)移動(dòng)到新的位置,并擦除無(wú)效數(shù)據(jù)(不再使用的數(shù)據(jù),或稱(chēng)“垃圾”)及其所在的整個(gè)存儲(chǔ)塊。GC機(jī)制設(shè)計(jì)的優(yōu)劣對(duì) SSD 的耐用性和性能至關(guān)重要。
為什么需要GC垃圾回收?
閃存單元本質(zhì)上是一個(gè)金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)晶體管。由于NAND閃存的物理結(jié)構(gòu)限制,浮柵被絕緣層包圍,電子無(wú)法直接“覆蓋”。因此,想要在NAND中寫(xiě)入新數(shù)據(jù),必須先擦除數(shù)據(jù)。
整個(gè)過(guò)程的本質(zhì)就是在釋放電子,通過(guò)在P型襯底上施加高壓,從而吸出電子。并且由于整個(gè)塊都共用一個(gè)P型襯底,閃存都是以“塊”為單位進(jìn)行擦除數(shù)據(jù)的。于是就造成了Flash最小寫(xiě)入單位為頁(yè)(Page)但最小的擦除單位為塊(Block)的寫(xiě)入放大(Write Amplification)現(xiàn)象。
因此,當(dāng)需要更新或刪除頁(yè)中的部分?jǐn)?shù)據(jù)時(shí),SSD 無(wú)法原地改寫(xiě)或擦除單頁(yè)數(shù)據(jù),只能將更新后的數(shù)據(jù)(有效數(shù)據(jù))寫(xiě)入新的空白頁(yè),并將原頁(yè)標(biāo)記為“無(wú)效”。長(zhǎng)此以往,存儲(chǔ)塊中會(huì)積累大量無(wú)效數(shù)據(jù)頁(yè)。當(dāng)空白頁(yè)不足時(shí),就必須啟動(dòng)GC來(lái)回收這些散布著無(wú)效數(shù)據(jù)的塊空間。
GC垃圾回收的運(yùn)行原理
天碩工業(yè)級(jí)SSD垃圾回收過(guò)程的具體步驟如下:
識(shí)別目標(biāo)塊: 天碩自研主控會(huì)先識(shí)別出包含大量無(wú)效數(shù)據(jù)的存儲(chǔ)塊。
遷移有效數(shù)據(jù): 將該塊中剩余的有效數(shù)據(jù)頁(yè)讀取出來(lái)。
寫(xiě)入新位置: 將這些有效數(shù)據(jù)復(fù)制并寫(xiě)入到新的空白頁(yè)或具有空白頁(yè)的新塊。
擦除原塊: 待有效數(shù)據(jù)安全遷移后,對(duì)該原存儲(chǔ)塊執(zhí)行整塊擦除操作,將其空間徹底釋放為空塊,可供后續(xù)寫(xiě)入新數(shù)據(jù)。
更新映射表: 天碩的自研主控會(huì)實(shí)時(shí)更新內(nèi)部的數(shù)據(jù)映射表,將指向原有效數(shù)據(jù)位置的邏輯地址更新到新的物理位置。
垃圾回收是SSD和HDD之間的顯著區(qū)別。當(dāng)新數(shù)據(jù)被編程到包含無(wú)效數(shù)據(jù)的頁(yè)面時(shí),SSD 不會(huì)覆蓋現(xiàn)有數(shù)據(jù),而是執(zhí)行GC,但它會(huì)導(dǎo)致NAND額外磨損。此問(wèn)題的解決方案之一是 Trim 命令。它可以幫助 SSD 預(yù)測(cè)來(lái)自用戶或操作系統(tǒng)的“文件刪除”任務(wù)。這會(huì)降低寫(xiě)入放大、提高吞吐量并提高 SSD 耐用性。