面壁UNH IOL NVMe一致性测试之1 – Identify Command

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

UNH IOL的全称是University of New Hampshire Interoperability Laboratory,中文翻译过来就是新罕布什尔大学互操作性实验室。从2012年开始UNH IOL与NVMe组织联合开始推出NVMe Conformance Test (NVMe一致性测试)。

前期SSDFans曾经简单介绍过UNH IOL测试, 但是阿呆表示没有体现深入浅出的精神,要求进一步深挖,并许诺文章写的好的话来年xxx,xxx云云。领导的指示要全心全意的落实,就拿出面壁思过的精神学习一下UNH IOL NVMe一致性测试的具体项目。

这里系列可能会很长,有时间我们就整点。

我们先从UNH IOL PC Edition 开始,这是一个Linux下GUI测试程序,启动后从界面里可以看到,测试项目一共有10个Group,分别是:

  • Group 1: Admin Command Set
  • Group 2: NVM Command Set
  • Group 3: NVM Features
  • Group 4: Controller Registers
  • Group 5: System Memory Structure
  • Group 6: Controller Architecture
  • Group 7: Reservations
  • Group 8: Autonomous Power State Transitions
  • Group 9: Namespace Management
  • Group 10: PCI Express Capability Registers

Group 1: Admin Command Set主要是测试NVMe的Admin command命令集,一共有9个case,分别测试:

  • Identify Command
  • Set/Get Feature
  • Get Log Page Command
  • Create/Delete IO SQ & CQ
  • Abort Command
  • Format NVM Command
  • Asynchronous Event
  • Get Feature Select
  • Feature saved across reset

Group1 Admin Command Set的第一项是Identify Command,一共有5个case,分别是:

  • Case1: Identify Namespace Data Structure
    • 测试方法:向该SSD的每一个Namespace发送Identify命令,将CNS设置为00h (Identify Namespace)
    • 期望结果:
      • SSD正确返回Namespace data structure,Admin CQ收到CQ post
      • 对于无效的Namespace ID,SSD返回的Namespace data structure应该为全“0”填充
      • Namespace data structure所有Reserved Field的值应该为“0”
      • 假设NLBAF(Number of LBA format)位值为n,Namespace data structure的Bytes 128 – 191指定的各个LBA Format中,从第n+1个开始,其内容应该为全“0“
    • Case2: Identify Controller Data Structure
      • 测试方法:向该SSD发送Identify命令,将CNS设置为01h (Identify Controller)
      • 期望结果:
        • SSD正确返回controller data structure,Admin CQ收到CQ post
        • 返回的data structure所有Reserved Field的值应该为“0”
        • 如果SSD支持NVMe 1.2或者更高版本,检查CAP Register与Controller Data Structure里声明的版本是否一致
        • 假设SSD支持的Power State数量为n,从第n+1开始的Power State,其Descriptor所有位应该为全“0“
        • 所有的返回的ASCII字符串都是靠左对齐并且用空格填充
      • Case3: Namespace List
        • 测试方法:
          • 向该SSD发送Identify命令,将CNS设置为02h, 并且NSID=0 (要求SSD返回Namespace List)
          • 对Namespace List里列出的每一个Namespace,发送Identify命令,其CNS位值为00h (Identify Namespace)
        • 期望结果:
          • SSD正常返回Namespace List,Admin CQ收到CQ post
          • 针对每一个Identify Namespace命令,SSD正常返回Namespace data structure,且均为非0填充
          • 返回的data structure所有Reserved Field的值应该为“0”
        • Case4: Identify to invalid Controller ID
          • 测试方法:针对每个Namespace,发送Identify命令,将DW10中的CNTID(Controller ID)设置为无效值
          • 期望结果:
            • SSD返回CQ,Status Code =02h (”Invalid Field in command”)
          • Case5: Identify to reserved CNS Value
            • 测试方法:针对每个Namespace,发送Identify命令,将CNS设置为 FFh
            • 期望结果:
              • SSD返回CQ,Status Code =02h (”Invalid Field in command”)
            • Case6: Namespace Identification Descriptors (仅针对支持版本3以上的SSD)

 

  • 测试方法:针对每个Namespace,发送Identify命令,将CNS设置为 03h,以使SSD返回该Namespace 的Identification Descriptors data structure
  • 期望结果:
    • 检查SSD返回的Identification Descriptors data structure为4096 Byte

确保SSD不会针对某个Namespace ID返回多个Descriptors data structure

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

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