NVMe协议——Atomic Write特性

1 协议关键点

1.1 Identify Controller structure

  1. Atomic Write Unit Normal (AWUN):原子写命令的大小
  2. Atomic Write Unit Power Fail (AWUPF):供电异常情况下原子写命令的大小
  3. Atomic Compare & Write Unit (ACWU):原子比较&写命令的大小

1.2 Identify Namespace structure

Namespace Atomic Write Unit Normal (NAWUN):NS的原子写命令的大小

Namespace Atomic Write Unit Power Fail (NAWUPF):供电异常情况下NS原子写命令的大小

​​​​​​​​​​​​​​Namespace Atomic Compare & Write Unit (NACWU):NS原子比较&写命令的大小

​​​​​​​​​​​​​​Namespace Atomic Boundary Size Normal (NABSN):NS原子写边界大小

​​​​​​​​​​​​​​Namespace Atomic Boundary Offset (NABO):NS第一个原子写边界开始的LBA

​​​​​​​​​​​​​​Namespace Atomic Boundary Size Power Fail (NABSPF):指示特定于NAWUPF的原子边界大小

1.3 说明

  • Namespace Features (NSFEAT) 字段的NSABP(bit1)为0时,所有NS使用Controller的原子写参数,NS的原子写相关参数无效。
  • NS原子写的Boundary Offset和Boundary Size用于约束主机原子写命令的范围。不满足该约束的原子写命令当做普通写处理。

  • 两个并发的原子写命令存在空间重叠时,命令执行完成后的结果。不可以出现A、B命令的数据在重叠空间共存的情况。

  • 掉电情况下,原子写命令A(写LBA0~LBA1)的执行结果。

2 SSD实现Atomic Write的关键点

2.1 协议实现

  • 设置Identify Controller structure的3个字段AWUN、AWUPF和ACWU。
  • Namespace Features (NSFEAT)字段的Bit 1 (NSABP) 清零,不支持NS的不同Atomic属性(Atomic相关的字段也要清零)。
  • 设置NABSN、NABO和NABSPF字段。

2.2 代码实现

比较典型的实现方式由2种思路:

  • 思路一:先将所有原子写的数据从Host的内存DMA到SSD的缓存,再写入NAND FLASH。

        优点:错误处理简单,只需要保证数据全部DMA进入SSD缓存后,能够写入NAND FLASH。

        缺点:需要较多的SSD缓存,限制了支持的原子写大小。

  • 思路二:与普通写命令写入数据的方式相同,先按照Page大小从Host DMA数据,并以流水的方式写入NAND FLASH。

        优点:不需要比普通写额外的SSD缓存,不用单独限制原子写大小。

        缺点:错误处理复杂,如果出现中途DMA数据失败(如PCIe相关错误、掉电等),需要将已经写入NAND FLASH的数据、元数据回退。如果支持的原子写大小很大,掉电的场景数据的写入消耗较多时间,也存在数据丢失的风险。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值