面壁UNH IOL NVMe一致性测试之19 – System Memory Structure

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

Group 5 测试 System Memory Structure

Test 5.1 – Page Base Address and Offset (PBAO)

测试步骤

  1. Host发送Identify command(包含正确的PRP entry)

期望结果

  1. SSD正常返回CQ;

Test 5.2 – Completion Queue Entry

测试步骤

  1. Host创建2个IO SQ以及1个对应的IO CQ;
  2. Host发送1个write command到第一个IO SQ;
  3. Host发送1个write command到第二个IO SQ;
  4. Host连续向第一个IO SQ发送write command,直到数量达到该SQ支持的最大命令数量;

期望结果

  1. 针对每一个命令,SSD正常返回CQ;
  2. SSD针对某个命令返回的CQ,其Dword 2中的Submission Queue Identifier (SQID)字段(bits 31:16),为提交该命令的SQ;
  3. CQ Dword3中的Phase Tag (P)字段 (bit 16),在第一轮CQ返回时被置为1,在第二轮CQ返回时被清为0;
  4. CQ Dword3中的Command Identifier (CID)字段(bits 15:00),与Host提交的命令到SQ时分配的command id匹配;

 

Test 5.3 – Status Field Definition

测试步骤

  1. Host发送Identify Command给SSD;
  2. SSD返回数据以后,从Admin CQ中提取该命令对应的CQ Entry并解析;

期望结果

  1. SSD正常回复CQ;
  2. CQ的Status Code Type (SCT)字段为0h,Status Code (SC)字段为0h — 代表命令执行成功;

 

Test 5.4 – Generic Command Status Definition

测试步骤

  1. 针对上面两张表里列出的每一种status code,Host发送相应命令使SSD能够在CQ中回复相应的Status Code;

期望结果:

  1. SSD正常回复CQ;
  2. CQ的Status Code Type (SCT)字段为0h,Status Code (SC)字段内容与Host发送命令期望产生的结果匹配;

Test 5.5 – Command Specific Error Definition

当Status Code Type =01h (Command specific Errors)时,代表发生了与某个command opcode有关的错误,需要进一步干预,相关的错误定义在下表中。

针对下面两张表的定义,Host发送相应命令使SSD能够在CQ中回复相应的Status Code。

Case 1: Abort Command Limit Exceeded

测试步骤

  1. 检查Identify Controller Data Structure获取Abort Command Limit Exceed value (n);
  2. Host发送n+1个Abort command给SSD;

期望结果:

  1. 针对所有Abort command,SSD正常返回CQ;
  2. 只有一个abort command的SCT=03h;

 

 

Case 2:Asynchronous Event Request Limit Exceeded

测试步骤:

  1. 检查Identify Controller Data Structure获取Asynchronous Event Request Limit Exceed value (n);
  2. Host发送n+1个Asynchronous Event Request command给SSD;

期望结果:

  1. 针对所有Asynchronous Event Request command,SSD正常返回CQ;
  2. 只有一个Asynchronous Event Request command的SCT=05h;

 

Case 3:Invalid Firmware Slot

测试步骤

  1. 检查Identify Controller Data Structure的Firmware Update字段获取SSD支持的Firmware slots(n);
  2. Host发送Firmware Commit,将Slot ID设置为 >n;
    1. 如果SSD支持多个slots,检查Slot 1是否为只读。如果是,发送一个Firmware Commit到slot 1。如果Slot 1不是只读,本测试无效;

期望结果:

  1. SSD正常返回CQ;
  2. SCT=06h;

 

Case 4:Feature Identifier Not Saveable

测试步骤

  1. Host针对每一个支持的Feature ID;发送Get Feature Command;
  2. 针对“Not Saveable“的Feature,发送Set Feature Command去尝试save feature;

期望结果

  1. SSD正常返回CQ;
  2. SCT=0Dh;

 

Case 5: Feature Not Changeable

测试步骤

  1. Host针对每一个支持的Feature ID;发送Get Feature Command;
  2. 针对“Not Changeable“的Feature,发送Set Feature Command去尝试change feature;

期望结果

  1. SSD正常返回CQ;
  2. SCT=0Eh;

 

Case 6: Feature Not Namespace Specific IV=1

测试步骤

  1. Host发送Set Feature – Interrupt Vector Configuration command给SSD,设置IV=1,CD=0;

期望结果:

  1. SSD正常返回CQ;
  2. SCT=0Fh;

 

Case 7:Overlapping Range

测试步骤

  1. Host发送一个带有overlapping LBA range的Set Feature command给SSD;

期望结果

  1. SSD正常返回CQ;
  2. SCT=14h;

 

Test 5.6 – Media and Data Integrity Errors Definition

测试步骤

  1. 针对上面2个表格里定义的每一个Status Code,Host发送相应命令使SSD能够在CQ中回复相应的Status Code;

期望结果

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

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