NVMe协会发布了最新的NVMe 1.4 draft版本,其中NVMe 1.4中增加的最重要的一个内容应该就是IO determinism。IO determinism主要包含两部分一个是NVM Sets一个是PLM(Predictable Latency Mode)。
不同的NVM Set使用的物理资源可以是独立的,每个NVM Set可以包含多个channel多个die,不同的NVM Set读写,擦除等都是相互独立互不干扰,可以提供更好的QoS。
同一个NVM Set内部可以包含一个或者多个NS(name space)。
PLM是IO determinism中另外一个组成部分,主要用于优化系统的读写延时,提高系统的QoS。在PLM有效之后系统划分为DTWIN(Deterministic Window)NDWIN(Non-Deterministic Window)两种时间窗口,在DTWIN时间窗口内,SSD系统提供为读写指令提供deterministic latency,以提高系统的QoS,在NDWIN时间窗口内,SSD系统不需要提供deterministic latency,以完成SSD系统内部的GC等操作。
SSD系统提供在DTWIN可以执行read(rand 4K read)/write(Optimal Write Unit Size)的command的typical值。Host可以通过log page得到SSD系统在DTWIN窗口内剩余的可执行的read/write command的能力(Reliable Estimate)。
以read command为例,typical与reliable estimate的关系如下图。
由于在read过程中会出现数据错误,而数据出错的比例的不同造成data recovery的时间也会不同,所以为了实现PLM,NVMe协议规定在支持PLM的时候需要同时支持Read Recovery Level Config。不同的Read Recovery Level对应不同的read latency。