OCP NVME SSD规范解读-2.复位与控制器配置要求-part2

  1. Maximum Data Transfer Size (MDTS):设备应支持至少256KB的最大数据传输大小。

  2. CSTS.CFS Reporting: 设备固件应支持报告CSTS.CFS(Controller Status and Capabilities Field in the Status Register)。

  3. Queue Depths: 每个提交队列的SQ最小支持队列深度应为1024,且最小I/O队列对数应为512。

  4. Namespace Unique Identifiers: 默认的单个命名空间应在Identify Namespace数据结构的EUI64字段中有一个唯一的非零值。对于在工厂配置的初始命名空间之外创建的每个命名空间,设备应将Identify Namespace数据结构中的EUI64字段清零。

  5. Non-Zero NGUID per Namespace: 设备应支持每个命名空间的非零NGUID,并且这个值永远不会被重用(即Identify Namespace数据结构的Common Namespace Features字段中的UIDREUSE位应设置为'1')。

  6. Doorbell Stride and Location: Doorbell Stride字段应清零,所有Doorbells应放置在单一连续的4096字节MMIO空间中,并且对齐到4096字节边界。

Doorbells在NVMe系统中扮演着关键的角色。当主机想要向NVMe设备提交新的I/O请求时,它会通过写入相应的Doorbell寄存器来通知设备。每个提交队列都有一个关联的Doorbell寄存器。主机写入该Doorbell寄存器的值通常表示要处理的新命令的数量或者队列头部的更新位置。

由于Doorbell寄存器的位置和布局是标准化的,所以主机软件可以很容易地找到并操作这些寄存器,从而有效地与NVMe设备交互。这有助于提高数据传输的效率和性能。

Doorbell Stride and Location在NVMe(Non-Volatile Memory Express)控制器配置中是非常重要的参数,它们影响着主机如何与NVMe设备进行通信。

Doorbell Stride:

Doorbell Stride,也称为Doorbell Shift Count或Doorbell Register Stride,是描述在MMIO(Memory Mapped Input/Output)空间中相邻Doorbell寄存器之间的偏移量的字段。这个值通常以字节为单位。在NVMe规范中,要求将Doorbell Stride字段(CAP.DSTRD)清零,这意味着Doorbell寄存器之间没有偏移,即它们是连续排列的。

Doorbell Location:

Doorbell Location是指在MMIO空间中Doorbell寄存器开始的位置。根据NVMe规范的要求,所有Doorbells应放置在单一连续的4096字节MMIO空间中,并且对齐到4096字节边界。这意味着Doorbell寄存器的起始地址应该是4096的倍数。

  1. Controller Memory Buffer (CMB) Support: 如果支持CMB,实施应符合NVM Express Base 2.0 Specification或更高版本的要求,包括默认禁用CMB的要求。禁止使用符合NVM Express Base Specification 1.4版本之前的任何版本的CMB实现。

CMB被纳入到NVMe 1.2标准中,其目的是减少主机和设备之间的数据移动 。CMB是控制器内部的一块专用内存,通过PCIe总线访问。当CPU需要访问存储设备的数据时,它可以通过内存读写事务层封装(MRd或MRw)直接访问CMB,而不需要将整个数据块传输到主机内存。

  1. Controller Power Scope: 控制器能力属性中的Controller Power Scope字段应设置为11b,表示它是NVM子系统的范围(即NVM子系统不支持多个域)。

  2. NVM Command Set Support: 设备应支持NVM命令集(即Controller Capabilities属性中的Command Sets Supported字段应设置位0为1b,且Identify Controller数据结构中的Controller Type字段应设置为01h)。

  3. Submission and Completion Queue Entry Sizes: 设备应支持最大64字节的提交队列条目大小和最大16字节的完成队列条目大小。

  4. Memory Page Size Minimum: 设备应将Memory Page Size Minimum字段清零(表示最小页面大小为4 KiB)。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角"关注 "并点击"分享 "、"在看",非常感谢!

精彩推荐:

相关推荐
千宇宙航8 分钟前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
onceco36 分钟前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
2401_826097623 小时前
JavaEE-Linux环境部署
java·linux·java-ee
jndingxin3 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
Sweet锦4 小时前
零基础保姆级本地化部署文心大模型4.5开源系列
人工智能·语言模型·文心一言
(:满天星:)4 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
小陶来咯4 小时前
【仿muduo库实现并发服务器】Acceptor模块
运维·服务器
爱莉希雅&&&4 小时前
shell编程之awk命令详解
linux·服务器·git
笑稀了的野生俊4 小时前
在服务器中下载 HuggingFace 模型:终极指南
linux·服务器·python·bash·gpu算力
渡我白衣4 小时前
Linux操作系统之文件(四):文件系统(上)
linux