CMB的深入了解与实际应用.doc
《CMB的深入了解与实际应用.doc》由会员分享,可在线阅读,更多相关《CMB的深入了解与实际应用.doc(4页珍藏版)》请在三一文库上搜索。
1、CMB的深入了解与实际应用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/nvme0n
2、1 -H)。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的单位是多少,从下表中我们可以看到,只要dev
3、ice有足够的空间,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
4、 Queue Support(CQS)和Submission Queue Support(SQS)分别表示设备是否支持在CMB中实现Admin和IO的完成队列和发送队列。ssss3、CMB在NVMe PCIe驱动中的应用1)通常在主机内存中实现的发送队列会要求控制器到主机内存执行PCIe的读取操作来获取队列内容。而基于CMB实现的发送队列,则是主机将发送队列中的命令直接写入控制器的内部存储空间中,这样减少了一个控制器从主机读取命令的动作,可以减少命令执行的延迟。目前,在Linux Kernel 4.15中,NVMe驱动已经支持通过CMB发送SQ。2)同样,PRP list或SGL list需要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CMB 深入 了解 实际 应用
链接地址:https://www.31doc.com/p-3250533.html