Group 2 NVM Command Set的第2项是Dataset Management command测试。
Case 1: Basic Operation
测试步骤:
- 检查SSD是否支持Dataset Management command,如果不支持,本测试无效;
- 配置Host发送Dataset Management command;
期望结果:
- 命令正确完成,SSD返回CQ;
Case 2: Deallocate
Dataset Management command可以通过设置Dword 11的Attribute-Deallocate(AD)字段deallocate一定范围的LBA,deallocate也就是通常所说的Trim。SSD收到AD字段为1的Dataset Management command后,会将相应范围的LBA Trim掉。如果Host针对被Trim的地址发送read命令,SSD应该返回全1,全0或者最后写入的数据。如果使能了deallocated 或 unwritten logical block error,当Host读取被deallocate区域时,SSD会返回该命令失败并且错误为unwritten或者deallocated logical block error
如果对一个被deallocate的LBA做写操作会导致deallocate状态消失,读操作则没有影响。
测试步骤:
- 检查SSD是否支持Dataset Management command,如果不支持,本测试无效;
- Host发送write command,写入指定pattern到某段LBA范围;
- Host发送Dataset Management command并将Attribute Deallocate字段置为1,对步骤2中写入pattern的LBA范围做Trim操作;
- Host发送read command,读取刚被Trim的LBA 范围;
- Host再发送1个read command,读取刚被Trim的LBA 范围;
- Host对被步骤3 trim的LBA范围再次写入与步骤2不同的另一组指定Pattern;
- Host发送read command,读取刚被写入的LBA 范围;
期望结果:
- 所有命令正确完成,SSD返回CQ;
- 步骤4,SSD返回的数据为全0,全1或者步骤2中写入的数据;
- 步骤5,SSD返回的数据与步骤4完全相同;
- 步骤7,SSD返回的数据与步骤6写入的相同;
Case 3: Deallocate out of range
测试步骤:
- 检查SSD是否支持Dataset Management command,如果不支持,本测试无效;
- Host发送Dataset Management command并将Attribute Deallocate字段置为1,并指定一个无效的LBA范围 (out of range)
期望结果:
- SSD上报错误 – LBA out of range
Case 4:NR Value is Maximum
测试步骤:
- 检查SSD是否支持Dataset Management command,如果不支持,本测试无效;
- Host发送Dataset Management command并将Number of Ranges (NR)字段设为全1;
期望结果:
- 命令正常完成
Case 5: Correct Range Deallocated
测试步骤:
- 检查SSD是否支持Dataset Management command,如果不支持,本测试无效;
- Host发送write command,写入指定pattern (例如 ‘AAAA‘)到3个连续LBA;
- Host发送Dataset Management command并将Attribute Deallocate字段置为1,对步骤2中刚写入pattern的中间那个LBA做Trim操作;
- Host发送read command,读取这3个LBA;
期望结果:
- 命令正常完成
- LBA1, 3返回刚写入的数据;
LBA2返回的数据为全0,全1或者刚写入的数据