0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CMB的深入了解与实际应用

SSDFans 来源:ZF 2019-04-21 11:10 次阅读

1、什么是CMB

在NVMe Express 1.2 Spec中开始支持一个特性,那就是CMB(Controller Memory Buffer),是指SSD控制器内部的读写存储缓冲区,与HMB(Host Memory Buffer)的不同处在于所使用的内存地址位于控制器自己的内存中,而不是位于主机内存中,但它们使用队列的方式都是一样的。

2、如何获取CMB的配置信息

在NVMe SSD Controller 中有两个寄存器CMBLOC和CMBSZ是描述CMB的基本信息。在主机中可以使用NVMe-cli工具查看寄存器信息(nvme show-regs /dev/nvme0n1 -H)。

CMB的深入了解与实际应用

1)CMBLOC(Controller Memory Buffer Location),是指存储区的位置信息,其中OFST(Offset)表示存储区的偏移地址,单位是CMBSZ.SZ,注意要是4KB对齐。BIR(Base Indicator Register)则表示PCI BAR(基地址寄存器)的序号,上图中使用的是Bar0空间。

2)CMBSZ(Controller Memory Buffer Size),是指存储区的大小信息。其中Size是指CMB中可用空间的长度,注意单位也是CMBSZ.SZ。Size Units(SZU)表示CMB的单位是多少,从下表中我们可以看到,只要device有足够的空间,CMB的大小可以配置得非常大的。

CMB的深入了解与实际应用

例如Size Units是4KB,那么CMB大小是512x*4KB=2MB,偏移地址是0x100*4KB=1MB。

3)接下来的几个bit就表示该设备支持CMB的哪些用途

a、Write Data Support(WDS),表示是否支持主机直接将data和meta_data发送到设备的CMB。Read Data Support(RDS),表示是否支持主机从设备的CMB中读取data和meta_data。

b、PRP SGL List Support,表示是否支持主机将PRP list或者SGL list写入到设备的CMB中。

c、Completion Queue Support(CQS)和Submission Queue Support(SQS)分别表示设备是否支持在CMB中实现Admin和IO的完成队列和发送队列。ssss

3、CMB在NVMe PCIe驱动中的应用

1)通常在主机内存中实现的发送队列会要求控制器到主机内存执行PCIe的读取操作来获取队列内容。而基于CMB实现的发送队列,则是主机将发送队列中的命令直接写入控制器的内部存储空间中,这样减少了一个控制器从主机读取命令的动作,可以减少命令执行的延迟。目前,在Linux Kernel 4.15中,NVMe驱动已经支持通过CMB发送SQ。

2)同样,PRP list或SGL list需要在PCIe协议上需要进行单独的读取操作,这也可以通过将PRP或SGL写入控制器内存缓冲区来减少控制器的读取动作。

3)在协议中有提到让主机将data或meta data写入控制器内存缓冲区,而不是让控制器从主机内存中获取数据或元数据。后面我们有实验可以看到CMB在少量数据的写入方面比较有利,所以CMB在meta data的写入上可能也会有一定的提升。

4、CMB在NVMe Over Fabric/TCP中的应用

因为CMB在PCIe上读操作比写操作慢很多,所以NVMe PCIe驱动中没有采用通过CMB读取CQ的办法。不过在NVMe的另外分支Over Fabric和Over TCP上,CMB可以更好地发挥自身优势,减少网络传输的交互次数,提高包含多个交换机的PCI Express结构拓扑的效率。

5、CMB的性能测试

1)运行环境:Ubuntu 18.04.1 LTS

2)内核版本:4.15.0-45-generic

3)控制器芯片:Starblaze STAR1000

4) 说明:以下测试进行NVMe和CMB的小数据读写测试对比。因为基于STAR1000的OC方案是4KBytes的physical_block_size,所以NVMe命令的最小数据长度是基于4K的,要实现小于4K的数据传输,则会损失一部分带宽。以下的对比测试都是QD1的读写。

• 测试写带宽

CMB的深入了解与实际应用

• 测试写IOPS

CMB的深入了解与实际应用

• 测试读带宽

CMB的深入了解与实际应用

• 测试读IOPS

CMB的深入了解与实际应用

• 测试4K数据的稳定性

CMB的深入了解与实际应用

从以上的测试可以看到:

在性能方面,CMB 64Bytes的写带宽能达到1.063GiB/s,对应的IOPS是16.6M,最高的IOPS(8Bytes写)能到19.07M,是NVMe命令实现的340倍;读的性能相比写要低一些,但是8Bytes读的IOPS也能达到1.06M,是NVMe命令实现的23倍。相比NVMe命令的IOPS,CMB的读写延迟有明显的优势。

在稳定性方面,读写的抖动是很小的。

6

Open Channel SSD与CMB的结合

ss

目前忆芯科技的OCSSD与CMB结合应用的一个场景就是持久性内存(Persistent Memory),它具有非易失性、较低延迟、可Bytes寻址的特性,使数据管理具有更大的灵活性。它非常适合需要频繁访问复杂数据集的环境,以及因电源故障或系统崩溃导致停机的敏感环境。现有PM方案提供以下几个特性:

1)易用的API

▪ int nvm_pm_write(struct nvm_pm_dev* dev, void* buf,unsigned int length, unsigned int offset)

▪ int nvm_pm_read(struct nvm_pm_dev* dev, void* buf,unsigned int length, unsigned int offset)

2)异常掉电保护

目前Star-OCSSD为CMB提供的默认掉电保护空间是2MiB(可以根据具体需求调整),固件会在掉电前保证将数据写入到Nand Flash中,并在下一次上电时加载到CMB区域。

3)Byte访问

当前忆芯科技的STAR1000和STAR100P两款控制器的CMB支持PCIe最大有效负载大小的burst传输,支持Byte访问,也支持任意byte对齐访问。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2737

    浏览量

    72614
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2657

    浏览量

    115295
  • HMB
    HMB
    +关注

    关注

    0

    文章

    3

    浏览量

    9148

原文标题:NVMe又有新花样!CMB vs HMB

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深入了解示波器

    深入了解示波器
    发表于 11-14 22:32

    专家开讲:深入了解电池技术 ──Part 1

    。笔者不会一一详细介绍所有的电池技术,只选择一些常见或是值得认识的;而在接下来的专栏里,笔者将开始介绍电池分类、常见规格以及专业术语,如果你有特别想知道的电池技术,欢迎留言!扩展阅读:专家开讲:深入了解
    发表于 08-18 09:33

    专家开讲:深入了解电池技术──Part 3

    资深工程师 Ivan Cowie 的「深入了解电池技术」专栏Part 3来啰!这次要介绍的是铅酸电池(lead-acidbatteries)技术。铅酸电池是在1859年由法国物理学家Gaston
    发表于 08-18 09:37

    单片机的深入了解

    项目名称:单片机的深入了解!项目是否开源:否申请开发板数量:1 块申请人团队介绍:我们团队由五个人组成,我们打算开始着手单片机的程序改编,设计一些比较特殊新颖的东西!希望给以支持!
    发表于 10-12 20:00

    深入了解LabVIEW FPGA资料分享

    深入了解LabVIEW FPGA
    发表于 05-27 08:35

    深入了解单片机汇编重要吗?

    不学汇编,只用C语言,能不能深入了解单片机?
    发表于 07-21 10:38

    深入了解示波器|泰克内部资料

    深入了解示波器|泰克内部资料,分享给大家。
    发表于 03-03 09:28

    深入了解主动电扫描阵列(AESA)雷达系统

    深入了解主动电扫描阵列(AESA)雷达系统
    发表于 05-24 06:51

    示波器的深入了解

    示波器的深入了解 引言自然界运行着各种形式的正弦波,比如海浪、地震、声波、爆破、空气中传播的声音,或者身体运转的自然节律。物理世界里,能
    发表于 11-04 11:53 52次下载
    示波器的<b class='flag-5'>深入了解</b>

    带你深入了解光耦

    电子发烧友网带你深入了解光耦相关知识,讲述光耦的作用,光耦原理及各种光耦型号和替代型号,让大家全面了解光电耦合器
    发表于 03-16 16:43
    带你<b class='flag-5'>深入了解</b>光耦

    深入了解示波器入门手册

    深入了解示波器入门手册
    发表于 03-27 17:43 239次下载
    <b class='flag-5'>深入了解</b>示波器入门手册

    深入了解电感与磁珠的异同

    模拟电子的相关知识学习教材资料——深入了解电感与磁珠的异同
    发表于 09-27 15:19 0次下载

    带你深入了解示波器

    带你深入了解示波器
    发表于 02-07 14:26 18次下载

    深入了解安全光栅

    深入了解安全光栅
    的头像 发表于 06-25 13:53 689次阅读
    <b class='flag-5'>深入了解</b>安全光栅

    深入了解 GaN 技术

    深入了解 GaN 技术
    的头像 发表于 12-06 17:28 2987次阅读
    <b class='flag-5'>深入了解</b> GaN 技术