2015年9月6日 星期日

[翻譯] Open-Channel Solid State Drives

Open-Channel Solid State Drives(OC-SSD) ,和一般SSD一樣透過邏輯位址空間操作實際快閃記憶體,但是包含部分原本實作在SSD 韌體層的特性。

一般的SSD是由 flash translation layer(FTL),bad block management,硬體元件: 集合了flash controller, host interface controller and flash chips 所組成。

然而,OC-SSD 提出把部分或是全部原本屬於FTL責任歸屬的項目移到Host system,也就是host system被允許管理諸如data placement, garbage collection and parallelism等行為;或者是留下可以增加效能的特性在SSD內。例如: bad block management,只實作相較一般SSD來說更輕量的FTL執行atomic IOs, metadata management等等。

Linux 系統的OC-SSD 系統架構圖如下所示,包括整合設備驅動程式,數個區塊管理者(block manager)以及數個目標(Target),這些目標可能是客製的或者是大家都有的特性以及一個核心(Core)。

為了要初始OC-SSD,我們需要儲存通訊協定例如:NVMe,所以在這樣的系統下會有共同的結構以及客製的指令集。如此一來,host就可以直接處理I/O去控制實體快閃記憶體,或是擴展、客製目標SSD有開放的特性。































區塊管理者(block manager) 負責管理設備上的快閃記憶體區塊。 會因為不同廠牌的快閃記憶體本身或是SSD製造商所擴展的特性而有所不同。  例如: OC-SSD需要去管理metadata 檔案系統;混合HDD及SSD的產品需要實作區塊管理,讓區塊管理者能夠從硬碟讀取區塊管理資訊。

OC-SSD架構下的目標(Target)需要在軟體層實作諸如: 記憶體轉換邏輯、資料該如何儲存在快閃記憶體以及設計Garbage collection(GC)等機制,因此可以擁有設計位址空間的彈性。例如: 以區塊、鍵值或是以物件來儲存管理。  OC-SSD劃分了區塊管理、資料儲存方式以及Garbage collection處理機制到host system上,硬體製造商就可以製造更通用的基礎或是說更簡單的產品讓OC-SSD架構下的目標(Target)去相容市場上的各種產品以及讓它去負責創造單一位址空間滿足全部此架構下的硬碟。

最後OC-SSD架構下有一個核心(Core),它作為設備驅動程式,區塊管理者以及目標之間的媒介。
核心負責實作共享於各個目標(Target)的功能。例如: 初始化、卸載或是效能計數器。


ref: http://openchannelssd.readthedocs.org/en/latest/

心得:  一個產品是否要把FTL原先負責的部分切到host端去實作,其實我覺得在技術面上不管是要在host還是device作都可行,既然一個產品 == 商品就得考慮到市場接受度,市場接受度來自於品牌、性價比,撇開品牌先不討論;就性價比討論,價錢來自於產品的開發生產成本,我們要思考的是這樣的架構是否會影響既有的產業鏈生態,廠商是否願意推動這樣的產品。 性能(效能)的部分,我們必須先思考既有的產品效能瓶頸在哪? 這樣的架構是否是解決此瓶頸的方法或是換成Open-Channel Solid State Drives(OC-SSD)的架構是否能創造出一種次世代的產品,直接取代了原先架構下的瓶頸點。   此篇提出了不同於 bache file system紀錄 對於快閃記憶體生態鏈的新思維。一直有各種對於資料儲存的研究,可見得對於"紀錄"一直是人類歷史上不可或缺的一塊。