CMB和HMB简介——《深入浅出SSD》

CMB:Controller Memory Buffer,控制器存储器缓冲区;

HMB:Host Memory Buffer,主机内存缓冲区

1.CMB简介

在NVMe协议中,允许SSD控制器将SSD内部的通用缓冲区映射到主机端,从而让主机端直接通过PCIe memory read/write的形式访问。这样做有如下好处:

1)充分利用设备内部的RAM存储空间

2)在某些场合下,节省了主机端进行PCIe DMA的次数,如将NVMe SQ建立在CMB上,主机端更i性能SQE(Submission Queue Entry)只需一次写入。设备取SQE时不再经过PCIe总线。

3)SSD内部通用缓冲区可以作为网卡设备到NVMe存储设备的缓冲区(在NVM-oF场景中),通过PCIe点到点技术,减少CPU的开销和数据访问的延时。

具体来说:

SSD可以选择是否支持CMB,这体现在NVMe寄存器CAP.CMBS上;

主机端如果想要使用CMB,会设置CMDMSC.CRC位

主机端需要CMBSZ和CMBLOC寄存器的支持;

使能CMB之后,主机端发送的PCIe地址访问请求一旦命中CMB配置的PCIe地址范围,SSD将会把该PCIe地址的内存读写请求转换成相应的CMB的读写请求。

2.HMB简介

NVMe协议提供了一种机制让主机端分配一部分内存给SSD控制器使用。SSD控制器在识别控制器(identify controller)命令上表达自己对HMB的诉求。主机端可能没办法提供任何HMB或只能提供很小的HMB,SSD表示理解,并承诺就算没有HMB也能正常工作。

HMB的使用场景很多,其中最重要的就是DRAM-less的SSD,出于价格和成功考虑,DRAM-less的SSD内部配置的可用RAM很小,。HMB在其中可充当如下角色。

1)数据缓冲区

2)FTL缓冲区(如之前按提到的HMB存储映射表数据)

使用HMB的具体流程如下:

a) 主机端软件通过Identify controller命令了解SSD对HMB的诉求

b)主机端通过set feature命令把分配的HMB信息告诉SSD,同时使能HMB

c) 主机端保证从此不写这些分配的HMB信息

d) SSD控制器自由使用HMB以提升自己的性能,主机端通过set feature命令来让SSD控制器释放HMB。SSD回复sef feature CQE(Completion Queue Entry,完成队列条目)时,就不能访问HMB了。所以SSD在回复CQE之前,一定要保证要访问HMB的业务已经完成。

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值