Group 2 NVM Command Set的第3项是Read command测试。
Case 1: Valid Read, LR (Limited Retry)=0,FUA (Force Unit Access)=0
测试步骤:
1. Host 向SSD向某个LBA写入指定数据;
2. Host发送readcommand读取该LBA,并设置LR=0,FAU=0;
3. SSD返回的所有Reserved字段应为0;
期望结果:
· 所有命令正确完成;
· 步骤3读回的数据与步骤2写入的数据相同;
Case2: SLBA out of Range
测试步骤:
· Host向SSD发送Identifycommand获取Identify Controller data structure
· Host发送readcommand,并指定SLBA (Start LBA)超出SSD LBA范围
期望结果:
- SSD上报错误 – LBA OutOf Range
Case 3:SLBA in range,NLB goes outof range
测试步骤:
· Host向SSD发送Identifycommand获取Identify Controller data structure
· Host发送readcommand,并指定SLBA (Start LBA)在SSD LBA范围内,但是指定一个NLB(Number of logic block)使其加在SLBA上后该read command超出SSD LBA范围;
期望结果:
· 如果NLB超过MDTS,SSD上报错误– Invalid Field;
· 如果NLB不超过MDTS,但使Read command超出SSD LBA范围,SSD上报错误– LBA Out Of Range
Case 4:SLBA out of range,NLB>MDTS
测试步骤:
· Host向SSD发送Identifycommand获取Identify Controller data structure, 如果MDTS为0,本测试无效;
· Host发送readcommand,并指定SLBA (Start LBA)在超出SSD LBA范围,同时NLB>MDTS;
期望结果:
- SSD上报错误 – InvalidField 或者LBA Out Of Range
Case 5: SLBA out of Range,but lower dword=00000000
测试步骤:
· 如果LBA FFFFFFFF00000000h在SSD LBA范围内,本测试无效;
· Host向SSD发送Identifycommand获取Identify Controller data structure
· Host发送readcommand,并指定SLBA =FFFFFFFF00000000h, 当作为64位值时超出超出SSDLBA范围,
期望结果:
- SSD上报错误 – LBA OutOf Range
Case 6: Invalid namespace ID
测试步骤:
· 检查SSD在Identify Controller Data Structure里上报的NN值 (支持的namespace数量),如果NN=0xFFFFFFFF,本测试无效;
· Host向SSD发送Identifycommand获取Identify Controller data structure
· Host向SSD发送readcommand,读取LBA 0000h;
· Host向SSD发送readcommand,并指定一个无效的Namespace ID (大于SSD支持的最大Namespace ID)
期望结果:
- SSD上报错误 – InvalidNamespace or Format
Case 7: Invalid Namespace ID and SLBA outof range
测试步骤:
· 检查SSD在Identify Controller Data Structure里上报的NN值 (支持的namespace数量),如果NN=0xFFFFFFFF,本测试无效;
· Host向SSD发送Identifycommand获取Identify Controller data structure
· Host向SSD发送readcommand,读取LBA 0000h;
· Host向SSD发送readcommand,并指定一个无效的Namespace ID (大于SSD支持的最大Namespace ID),同时指定SLBA值超出SSD LBA范围。
期望结果:
- SSD上报错误 – InvalidNamespace or Format 或者LBA out of range
Case 8:Valid Read,LR=0,FUA=1
测试步骤:
· Host 向SSD向某个LBA写入指定数据;
· Host发送readcommand读取该LBA,并设置LR=0,FAU=1;
· SSD返回的所有Reserved字段应为0;
期望结果:
· 所有命令正确完成;
· 步骤3读回的数据与步骤2写入的数据相同;
Case 9:Valid Read,LR=1,FUA=0
测试步骤:
· Host 向SSD向某个LBA写入指定数据;
· Host发送readcommand读取该LBA,并设置LR=1,FAU=0
· SSD返回的所有Reserved字段应为0;
期望结果:
· 所有命令正确完成;
· 步骤3读回的数据与步骤2写入的数据相同;
Case 10:Valid Read,LR=1,FUA=1
测试步骤:
· Host 向SSD向某个LBA写入指定数据;
· Host发送readcommand读取该LBA,并设置LR=1,FAU=1
· SSD返回的所有Reserved字段应为0;
期望结果:
· 所有命令正确完成;
· 步骤3读回的数据与步骤2写入的数据相同;
Case 11:Valid Read, Invalid PRPaddress offset
测试步骤:
· Host 读取SSD的CC.MPS获取SSD支持的MemoryPage Size
· Host发送readcommand,并指定第一个PRP List Entry为非Qword对齐;
期望结果:
- SSD上报错误 – PRPOffset Invalid