注意:本文翻译仅为学习交流用,版权归原文作者所有。
原文出处。
NVM命令集
- NVM子系统由多个控制器组成;
- 每个控制器访问多个NS;
- 每个NS由多个逻辑块组成;
- 逻辑块是控制器读写的最小单位,逻辑块大小通常为512B,1KiB,2KiB,4KiB,8KiB。逻辑块大小在
Identify NS
中查询。
Host在controller就绪(有Controller Status reg->CSTS.RDY
指示)时,在IO提交队列和完成队列被创建之后提交命令。
在本章节将解释SQE的CDW10-15和CQE CDW0的cmd spec field的含义。
在compare,read,verify,write,write zeros cmd
中,Host通过Limited Retry bit(LR)
设定错误恢复的上限时间。
NVM Command Set如下:
————————————————
注:
- 指定数据传输的方向,00b=no data transfer, 01b=host to controller, 10b=controller to host, 11b=bidirect
6.5 End-to-end Protection Information
包含数据传输的命令可能包含端到端的数据保护。
Bits | Desc |
---|---|
03 | Protection Information Action(PRACT): 对保护信息采取何种行为 (1)PARCT_VALUE=1b,META_SIZE=8B,保护信息被条带化读或者插入写 (2) PARCT_VALUE=1b,META_SIZE>8B,保护信息被读跳过,或者被meta的前8B或者后8B替代。 (3) PARCT_VALUE=0b,META_SIZE=any,跳过 |
02:00 | Protection Info Check(PRCHK): 变量应该被作为端到端数据保护的一部分被校验。 (1) bit=02,校验 Guard 变量(2) bit=01,校验 Application Tag 变量(3) bit=00,校验 Logical Block Reference 变量 |
6.6 Compare command
…
6.7 Dataset Management cmd
…
6.8 Flush cmd
flush
命令用于将非易失写缓存中的内容持久化。
如果非易失写缓存被赋能,flush
命令提交data和meta到非易失介质。
6.9 Read cmd
read
命令读data和meta
read
命令使用CDW10,11,12,13,14,15- 如果使用PRPs用于数据传输,则使用Meta Pointer,PRP Entry1/2
- 如果使用SGLs用于数据传输,则使用Meta SGL Segment Pointer和SGL Entry1
Read - meta pointer
Bits | Desc |
---|---|
63:00 | Metadata Pointer(MPTR): 是指元数据传输方式(PRP,SGL) |
Read - data pointer
Bits | Desc |
---|---|
127:00 | Data Pointer(DPTR): PRP/SGL |
Read - CDW10,11
Bits | Desc |
---|---|
63:00 | Starting LBA(SLBA): 起始逻辑块地址(64-bit地址) |
Read - CDW12
Bits | Desc |
---|---|
31 | Limited Retry(LR): 设置为1,则尝试有限次retry |
30 | Force Unit Access(FUA): 向非易失介质提交data/meta,和从非易失介质中读取data/meta |
Read - CDW13
Dataset Mgnt.对要读的LBA做数据管理。
Bits | Desc |
---|---|
07 | 逻辑块上的数据是否被压缩 |
06 | 是否顺序请求 |
05:04 | 访问时延 |
03:00 | 访问频率 |
Read - CDW14
Bits | Desc |
---|---|
31:00 | Expected Init Logical Block Reference Tag(EILBRT): 在端到端保护信息中被使用 |
Read - CDW15
Bits | Desc |
---|---|
31:16 | Expected Logical Block Application Tag Mask(ELBATM): 在端到端数据保护中被使用 |
15:00 | Expected Logical Block Application Tag (ELBAT):在端到端数据保护中被使用 |
——————————————————————
总结 :对于Read/Write/Verify,cdw10和cdw11组合表示64-bit请求地址,cdw12(15:00)表示Number of LB(nlb)请求的逻辑块个数。
——————————————————————