一张图了解Open-Channel SSD 2.0

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

作者:Marx

直奔主题:

为了让更多的朋友对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 (NVMEe) 1.3, 定义了寄存器级别的接口可以让host软件通过PCI Express管理非易失性存储介质。Open-Channel SSD 2.0 的spec,使SSD将内部的并行机制暴露给Host, 从而Host 可以控制数据的物理位置并进行I/O调度(这些原来是SSD内部Firmware的事情)。spec 可以从官网下载openchanel ssd spec, 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 内部的拓扑信息,比如PU,Group,Chunk等信息。

SSD 里的物理拓扑结构可以用上述逻辑概念抽象出来,如下图所示。

Open-Channel SSD 有哪些好处?

  • Host 更主动

这是显然的,对于open-channel SSD,drive 将自己的物理结构信息和内部控制能力开放给Host,使得Host可以精准的控制SSD里的并行单元。spec指出,Host 可以根据自己的业务来控制drive的并行度,SSD firmware不应当对任何形式的workload(比如传统意义上的顺序写,随机写)进行优化处理。

  • I/O 隔离

对于多租户的应用架构(multi tenant architecture)中,I/O 隔离有助于解决 nosiy neighbor 问题(指的是由于物理资源的共享,本来逻辑隔离的业务性能上难以避免地彼此影响),而Open-Channel SSD里面的每个PU在物理上是隔离的,先天适合这种应用场景。

  • 可预测 latency

Host 知道每一个PU上的正在执行的(或者pending的)所有命令,对latency就有准确的把握。

Physical Page Address Command Set基本命令

Admin Commands

  • Geometry 命令

Geomery 命令可以让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,start LBA,每个chunk 都有唯一的SLBA。
    • NLB,number of logical blocks,chunk 里面的logical block 个数。
    • WP, write pointer。

SLBA, NLB 和 WP 的逻辑关系如下图:

  • CS,chunk state,又可以分为:
    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)的拷贝。

注:本文图片摘选自 openchanel ssd spec

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarch,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。