一張圖瞭解Open-Channel SSD 2.0

ssdfans2018-05-14 13:22:59

直奔主題:


為了讓更多的朋友對Open-Channel SSD 有所瞭解,補充介紹如下。


什麼是 Open-Channel SSD 呢?

所謂Open-Channel SSD指的是FTL(Flash translation layer)不在device 端, 而是由Host的操作系統維護的SSD。Linux內核從4.4開始已經支持 Open-Channel SSD了, 並提供了符合NVMe協議的抽象層——lightNVM。 (維基百科)


目前,NVM Express (NVMe) 1.3, 定義了寄存器級別的接口可以讓host軟件通過PCI Express管理非易失性存儲介質。Open-Channel SSD2.0 的spec,使SSD將內部的並行機制暴露給Host,從而Host 可以控制數據的物理位置並進行I/O調度(這些原來是SSD內部Firmware的事情)。spec 可以從官網下載openchanelssd spec(http://lightnvm.io/docs/OCSSD-2_0-20180129.pdf),spec 提供了符合NVMe協議的物理地址命令集(Physical Page Address Command Set)。


基本術語

 Logical block, 
邏輯塊,讀寫命令所面對的最小數據單位,這裏的概念從NVMe來,而不是NAND上的物理block。
PU (parallel unit), 
指的是存儲介質中的最小並行操作單元,SSD中擁有大量的PU,這個PU 與傳統SSD 中LUN或者DIE 的概念相似。
Group,
指的是一組共享同一傳輸總線的PU。與傳統SSD 中的Lane 或者Channel 的概念類似。

Chunk, 

指一系列連續的邏輯塊(contiguous logical blocks)。chunk 是可以被reset(參見後面基本命令集)的最小單元。

Write unit, 
write unit 是一次寫的最少邏輯塊數目。
LBA
 logical block address指邏輯塊地址又稱為 LBA。值得説明的是,Open-Channel SSD 使用的LBA 包含了SSD 內部的拓撲信息,比如PUGroupChunk等信息。




SSD 裏的物理拓撲結構可以用上述邏輯概念抽象出來,如下圖所示。



Open-Channel SSD 有哪些好處?

Host 更主動

這是顯然的,對於open-channel SSD,drive 將自己的物理結構信息和內部控制能力開放給Host,使得Host可以精準的控制SSD裏的並行單元。spec指出,Host 可以根據自己的業務來控制drive的並行度,SSD firmware不應當對任何形式的workload(比如傳統意義上的順序寫,隨機寫)進行優化處理。


I/O 隔離

對於多租户的應用架構(multitenant architecture)中,I/O隔離有助於解決nosiy neighbor 問題(指的是由於物理資源的共享,本來邏輯隔離的業務性能上難以避免地彼此影響),而Open-ChannelSSD裏面的每個PU在物理上是隔離的,先天適合這種應用場景。


可預測latency

 Host 知道每一個PU上的正在執行的(或者pending的)所有命令,對latency就有準確的把握。


Physical Page Address Command Set基本命令


Admin Commands

Geometry 命令

Geometry 命令可以讓Host瞭解SSD 內部的物理信息,比如 Groups,PU和Chunks的個數。



Get Log Page - Chunk Information

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



這裏説一下chunk的管理:

 一個chunk 可以接受的命令有Read, Write 和Reset等。(具體見下文I/O commands)。

在一個chunk中Host 必須順序寫(但是看上圖中,貌似為random 寫留了一條通道),而且寫的最小單位是write unit。

 一個chunk寫完後,Host 要想重新往這個chunk寫數據必須先reset 這個chunk。


 跟chunk相關的信息有:

SLBA,startLBA,每個chunk都有唯一的SLBA。

NLB,number of logical blocks,chunk裏面的logical block 個數。

WP,write pointer。


 SLBA, NLB WP 的邏輯關係如下圖:



CS,chunkstate,又可以分為:


1. Free,WP 為0 的情況下,chuck的狀態為free。

2. Open, WP 不等於0,並且可以繼續寫入。

3. Closed,不可以繼續寫。

4. Offline,不可以再用的chunk。可能是wear leveling 的結果。


狀態切換如下圖所示:



I/O commands


命令集如下:



所有的命令都遵守正規NVMe的命令結構格式。其中Write 和 Read 命令可以直接從NVMe 1.3中可以看到具體描述。可以利用Dataset Management command中的deallocate多個chunk的lba range 來實現多個chunk的reset。


值得一提的是,Vector Chunk commands 系列是通過SGL(scatter-gather  logical block address)指定一個或多個LBA list 來執行相應的reset,write,read 和 copy 命令。


Vector Chunk Copy 命令為例子(其他commands 請參看spec),命令通過SSD 內部buffer實現數據從一個數據源LBA(可以是LBA list到目標LBA(或者LBA list)的拷貝。





 注:本文圖片摘選自 openchanelssd spec



看閃存、AI、區塊鏈、物聯網好文,點擊文末“閲讀原文”或登陸

 www.ssdfans.com


ssdfans微信羣介紹

閃存技術羣

覆蓋5000多位全球華人圈閃存技術精英

存儲羣

全閃存、軟件定義存儲SDS、超融合

AI羣

討論人工智能和GPU、FPGA、CPU異構計算

區塊鏈羣

區塊鏈技術與產業討論

物聯網羣

聯網、5G技術與產業討論

市場羣

閃存等存儲產品報價、行情、渠道分享

ASIC-FPGA羣

芯片和FPGA硬件技術討論羣

存儲介質羣

DRAM、NAND、3D XPoint等各類存儲介質討論

固件測試羣

固件和測試技術討論

銷售羣

全國DRAM、NAND、SSD等供應商、採購商交流

招聘羣

存儲行業換工作,發招聘,要關注各大公司招聘信息,趕快來

高管羣

各大閃存相關存儲公司高管和創始人、投資人

各地分羣

江浙滬、北京、廣東、四川、陝西、湖北、台灣、山東、美國


想加入這些羣,長按或掃描下面二維碼加nanoarchplus為微信好友,介紹你的姓名-單位-職務註明羣名,拉你進羣。



閲讀原文

TAGS:可以命令閃存存儲介質