正在發展中的Open-Channel SSD架構,可說是當前固態硬碟(SSD) 架構的一次翻轉,把傳統SSD藉由控制器韌體快閃記憶體翻譯Flash Translation LayerFTL)執行的工作,一部份轉移給主機端執行,可幫助克服困擾傳統SSD的寫入放大問題,以及背景作業造成的效能不穩定問題,進而改善SSD的存取延遲與效能,可望成為未來SSD發展的一個新方向。

FTL層的功與過

FTL層是SSD控制器韌體的核心環節,也是讓硬體架構完全不同於硬碟的SSD,得以直接應用在傳統IT架構中的功臣。

SSD的物理組成與存取機制均與硬碟不同,但當前的IT儲存架構,如檔案系統等,都是基於硬碟的特性而設計,無法直接應用到SSD上,所以是透過FTL層的中介,來搭配SSD運作。

如名稱所示,FTL的基本功能是「翻譯」,也就是把SSD的空間「翻譯」 成檔案系統等上層應用看得懂的型式,將SSD模擬成硬碟讓檔案系統、應用程式等上層應用使用。另外,FTL還會針對NAND Flash記憶體的特性,協調與管理資料寫入工作,例如NAND Flash記憶體無法在同一位址進行寫入更新(in-place-update),因此FTL會將重複更新的資料寫入至其他位址存放,配合使用映射表(Mapping table)記錄更新後的位址。當所有區塊都被寫入資料,沒有額外空間可以寫入資料時,FTL會呼叫背景執行的Garbage Collection(GC)動作,來清除不使用的區塊頁面,回收空間以供新資料寫入。

同時,FTL也會進行資料的錯誤校正(Error Correction),檢驗寫入資料的正確性,還會提供平均損耗處理功能,在Flah記憶體區塊間分散寫入負荷,藉此延長Flash記憶體生命週期。

也就是說,正是依靠FTL層,既有的檔案系統與應用程式才能直接使用SSD,FTL也決定了SSD的性能、可靠性與壽命,但FTL的功能與架構也相當複雜,不下於一套檔案系統。

但FTL同時也是制約SSD效能發揮的瓶頸所在,首先是造成寫入放大(write amplification),從主機端的應用程式與檔案系統,到SSD的FTL,整個資料寫入環節的每一層,都會觸發類似的資料完整性保護機制,連帶的一次寫入動作,會被放大許多倍,最上層應用程式寫入的1筆資料,實際落到底層SSD上時,會變成幾十倍甚至上百倍大。另外FTL在背景執行的Garbage Collection作業,也會導致SSD產生額外寫入動作,給效能帶來難以預測的影響。

Open-Channel SSD的基本概念

要克服傳統SSD FTL層的副作用,一個思路是把FTL的部份工作轉到上層的主機端去執行,讓上層的系統能直接定址寫入SSD的區塊頁面,並執行Garbage Collection等背景作業,藉此得到許多效益。

一來,應用程式可以繞開檔案系統與FTL層,把原本需經過3層的寫入作業合併為1層,避免寫入放大。

二來,上層系統可以繞開FTL層的重新映射,直接得知底層各NAND Flash晶片的狀態,可實現I/O隔離。

其他優點還包或可提供更低、且可預測的延遲,改善寫入效能,從而提高SSD整體性能,以及大幅簡化SSD的控制器架構等。

在Open-Channel SSD架構問世之前,前述「把部份FTL工作移到上層系統」概念,其實很早就被應用在部份全快閃儲存陣列產品,以及SSD裝置上。

多數全快閃儲存陣列產品,都是由SSD自身來執行Flash記憶體頁面管理,以及Garbage Collection、Flash記憶體層次的損耗均衡等背景作業,但有部份全快閃儲存廠商則有不同做法,認為不應該在SSD這一層來執行這些背景作業,而應該由儲存陣列系統介入,幫助SSD管理Flash記憶體區塊頁面,並在儲存陣列系統層執行Garbage Collection等背景工作,至於底層只需要最簡單的「裸」SSD即可,藉此還能減少容量超額供應(Overprovisioning)的需求,並降低SSD的複雜性與成本。

早期有些SSD裝置也是採用這個概念,不是由SSD控制器,而是由安裝在作業系統中的驅動程式軟體,來執行位址映射與背景作業。

開放的Open-Channel SSD標準

「把部份FTL工作移到SSD之外,由上層系統執行」的概念,雖然已應用在部份全快閃儲存陣列產品上,但這些產品都是使用自身專屬的儲存系統平臺,搭配專門訂製的SSD硬體來實作這個架構,難以推廣與普及。而Open-Channel SSD的出現,目的正是要把這個概念開放化與通用化,利用開放的標準,來普及這種新的SSD架構。

Open-Channel SSD的標準已發布了2個版本,首先是2016年4月的1.2版,然後是2018年1月的2.0版。配合Open-Channel SSD架構,也出現了一個搭配Linux環境的LightNVM軟體,目前LightNVM已被納入Linux Kernel,可結合Linux Kernel的物理區塊層(Physical Block Device,pblk),存取與管理Open-Channel SSD裝置。

目前無論Open-Channel SSD還是LightNVM,都還在早期發展階段,不過今年初傳出一起實用化的消息,那就是中國的阿里巴巴,在今年3月推出了一款AliFlash V3雙模式SSD產品,聲稱藉由其專屬的Fusion Engine儲存引擎,可同時支援既有的NVMe架構,以及Open-Channel SSD架構,既可由SSD控制器來執行FTL作業,也能改由主機端來執行FTL。

Open-Channel SSD的基本概念

傳統SSD的控制器韌體,必須執行資料定位(Data Placement)、I/O排序(I/O Scheduling)與背景作業(Background Operation)、損耗均衡(Wear-Leveling)、Metadata管理、錯誤處理(Error Handling)、XOR、ECC運算,以及SMART健康監控等作業,功能相當複雜。前端主機也不是直接存取SSD記憶體區塊(block)的頁面(page),而是存取經由FTL層轉換的邏輯區塊定址空間。

而Open-Channel SSD的基本概念,則是把資料定位、I/O排序與背景作業等幾項韌體核心功能,轉到主機端去執行,SSD本身的控制器只保留最基本的硬體監控管理功能,成為一種「裸」的SSD,不再承擔複雜的處理功能。而主機端則透過LightVM之類的中介軟體,來存取Open-Channel SSD。

資料來源:CNEX Lab

熱門新聞

Advertisement