直奔主題:

為了讓更多的朋友對Open-Channel SSD 有所了解,補充介紹如下。
什么是Open-Channel SSD呢?
所謂Open-Channel SSD指的是FTL(Flash translation layer)不在device 端, 而是由Host的操作系統(tǒng)維護(hù)的SSD。Linux內(nèi)核從4.4開始已經(jīng)支持 Open-Channel SSD了, 并提供了符合NVMe協(xié)議的抽象層——lightNVM。 (維基百科)
目前,NVM Express (NVMe) 1.3, 定義了寄存器級別的接口可以讓host軟件通過PCI Express管理非易失性存儲介質(zhì)。Open-Channel SSD2.0 的spec,使SSD將內(nèi)部的并行機制暴露給Host,從而Host 可以控制數(shù)據(jù)的物理位置并進(jìn)行I/O調(diào)度(這些原來是SSD內(nèi)部Firmware的事情)。spec 可以從官網(wǎng)下載openchanelssd spec(http://lightnvm.io/docs/OCSSD-2_0-20180129.pdf),spec 提供了符合NVMe協(xié)議的物理地址命令集(Physical Page Address Command Set)。
基本術(shù)語
Logical block,邏輯塊,讀寫命令所面對的最小數(shù)據(jù)單位,這里的概念從NVMe來,而不是NAND上的物理block。PU (parallel unit),指的是存儲介質(zhì)中的最小并行操作單元,SSD中擁有大量的PU,這個PU 與傳統(tǒng)SSD 中LUN或者DIE 的概念相似。Group,指的是一組共享同一傳輸總線的PU。與傳統(tǒng)SSD 中的Lane 或者Channel 的概念類似。
Chunk,
指一系列連續(xù)的邏輯塊(contiguous logical blocks)。chunk 是可以被reset(參見后面基本命令集)的最小單元。
Write unit,write unit 是一次寫的最少邏輯塊數(shù)目。LBA,即logical block address,指邏輯塊地址又稱為LBA。值得說明的是,Open-Channel SSD使用的LBA包含了SSD內(nèi)部的拓?fù)湫畔ⅲ热鏟U,Group,Chunk等信息。

SSD 里的物理拓?fù)浣Y(jié)構(gòu)可以用上述邏輯概念抽象出來,如下圖所示。

Open-Channel SSD有哪些好處?
Host 更主動
這是顯然的,對于open-channel SSD,drive 將自己的物理結(jié)構(gòu)信息和內(nèi)部控制能力開放給Host,使得Host可以精準(zhǔn)的控制SSD里的并行單元。spec指出,Host 可以根據(jù)自己的業(yè)務(wù)來控制drive的并行度,SSD firmware不應(yīng)當(dāng)對任何形式的workload(比如傳統(tǒng)意義上的順序?qū)懀S機寫)進(jìn)行優(yōu)化處理。
I/O 隔離
對于多租戶的應(yīng)用架構(gòu)(multitenant architecture)中,I/O隔離有助于解決nosiy neighbor 問題(指的是由于物理資源的共享,本來邏輯隔離的業(yè)務(wù)性能上難以避免地彼此影響),而Open-ChannelSSD里面的每個PU在物理上是隔離的,先天適合這種應(yīng)用場景。
可預(yù)測latency
Host 知道每一個PU上的正在執(zhí)行的(或者pending的)所有命令,對latency就有準(zhǔn)確的把握。
Physical Page Address Command Set基本命令
Admin Commands
Geometry 命令
Geometry 命令可以讓Host了解SSD 內(nèi)部的物理信息,比如 Groups,PU和Chunks的個數(shù)。

Get Log Page - Chunk Information
SSD中所有Chunk的信息都可以通過Get Log Page命令獲得。

這里說一下chunk的管理:
一個chunk 可以接受的命令有Read, Write 和Reset等。(具體見下文I/O commands)。
在一個chunk中Host 必須順序?qū)懀ǖ强瓷蠄D中,貌似為random 寫留了一條通道),而且寫的最小單位是write unit。
一個chunk寫完后,Host 要想重新往這個chunk寫數(shù)據(jù)必須先reset 這個chunk。
跟chunk相關(guān)的信息有:
SLBA,startLBA,每個chunk都有唯一的SLBA。
NLB,number of logical blocks,chunk里面的logical block 個數(shù)。
WP,write pointer。
SLBA, NLB 和 WP 的邏輯關(guān)系如下圖:

CS,chunkstate,又可以分為:
1. Free,WP 為0 的情況下,chuck的狀態(tài)為free。
2. Open, WP 不等于0,并且可以繼續(xù)寫入。
3. Closed,不可以繼續(xù)寫。
4. Offline,不可以再用的chunk。可能是wear leveling 的結(jié)果。
狀態(tài)切換如下圖所示:

I/O commands
命令集如下:

所有的命令都遵守正規(guī)NVMe的命令結(jié)構(gòu)格式。其中Write 和 Read 命令可以直接從NVMe 1.3中可以看到具體描述。可以利用Dataset Management command中的deallocate多個chunk的lba range 來實現(xiàn)多個chunk的reset。
值得一提的是,Vector Chunk commands 系列是通過SGL(scatter-gather logical block address)指定一個或多個LBA list 來執(zhí)行相應(yīng)的reset,write,read 和 copy 命令。
以Vector Chunk Copy 命令為例子(其他commands 請參看spec),命令通過SSD 內(nèi)部buffer實現(xiàn)數(shù)據(jù)從一個數(shù)據(jù)源LBA(可以是LBA list)到目標(biāo)LBA(或者LBA list)的拷貝。



注:本文圖片摘選自 openchanelssd spec
-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129966 -
SSD
+關(guān)注
關(guān)注
21文章
3109瀏覽量
122221
原文標(biāo)題:一張圖了解Open-Channel SSD 2.0
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
慧榮科技總經(jīng)理茍嘉章:客制化Open Channel SSD主控 讓管理數(shù)據(jù)更容易
慧榮科技發(fā)布PCIe NVMe SSD控制芯片解決方案SM2270
Stellar P6 SARADC模塊,Internal channel/Test channel/External channel的都有那些區(qū)別呢?
SSD201 / SSD202D為什么能在IP廣播得到廣泛應(yīng)用呢
如何為工業(yè)應(yīng)用設(shè)計NVMe SSD呢
阿里巴巴下一代存儲架構(gòu)邁出了關(guān)鍵一步,也為創(chuàng)新的Open Channel生態(tài)系統(tǒng)奠定了基礎(chǔ)
Open Channel如何使用SSD構(gòu)建存儲系統(tǒng)的?
寶存科技Open Channel SSD發(fā)布,為客戶提供了前所未有的性能增益和嶄新功能
探討未來的數(shù)據(jù)中心SSD發(fā)展趨勢
ssd硬盤有什么好處
基于Shannon Open-Channel的高性能KV存儲應(yīng)用實踐
什么是Open-Channel SSD呢?有哪些好處?
評論