NVMe 1.3标准发布,引入八大新功能
这两年各种PCI-E NVMe SSD得到了飞速发展,不过之前最新的NVMe 1.2还是2014年11月公布的,到现在可能各种不足的地方,昨天晚上NVMe标准组织公布了最新的NVMe 1.3标准,为消费级与服务器带来了许多新功能,与之前的标准更新一样,大多数功能都是可选的,几个新的NVMe功能是基于其他存储接口如eMMC和ATA的现有功能,能帮助NVMe改善现有的一些不足。
新功能包括:
Device Self Tests设备自检
这个其实和ATA设备上的SMART自检功能类似,NVMe现在为系统提供了可选接口,指示设备执行自检。具体测试内容有设备供应商提供,设备必须提供不超过两分钟的快速自检和长时间的扩展自检两种自检方式,必须保留用户数据并且SSD必须在测试期间保持运行,对于扩展测试,SSD必须提供测试需要多长时间并在测试期间提供进度指示器。
Boot Partitions引导分区
这其实是eMMC上的功能,启动分区其实是为智能手机和平板电脑等使用这些使用嵌入式NVMe BGA SSD系统所准备的,NVMe 1.3引入了对可以使用NVMe协议的最小子集访问的引导分区的支持,引导分区旨在减少或消除主机系统需要包括其他存储设备来存储引导固件,相当于把BIOS里的UEFI系统整合到SSD里面,这样可降低这些设备的成本,实施引导分区功能的SSD将包括一对引导分区,以允许安全的固件更新写入次分区,并在交换哪个分区是活动的之前验证数据。引导分区也可以使用NVMe 1.2中引入的Replay Protected Memory Block功能进行防篡改。
Sanitize清理
Sanitize其实是比Secure Erase更加直接的清除数据命令,Secure Erase只会擦除映射表并标记无效数据,而Sanitize则是直接从block级别完全擦除SSD上的数据,这是SATA和SAS硬盘都支持的命令现在终于加入到NVMe协议上面了。
Virtualization虚拟化
先前版本的NVMe规范允许控制器通过单根I/O虚拟化(SR-IOV)支持虚拟化,但未指定实现细节。版本1.3引入了标准虚拟化功能集,定义了如何配置和使用SR-IOV功能。支持新的虚拟化增强功能的NVMe SSD将会将主控制器作为SR-IOV物理功能和一个或多个辅助控制器作为可分配给虚拟机的SR-IOV虚拟功能。
Namespace Optimal IO Boundary命名空间最优IO分界
大家可能知道SSD要4K对齐其实就是在分区时把扇区分配单元大小改成4KB,扇区大小等于NAND页面大小是SSD性能是最好的,不过现在的NAND闪存的页面大小其实已经不是4KB了,比如现在的3D NAND的页面大小就是16KB,这些东西其实没有多少人会了解的,现在NVMe 1.3就引入了命名空间最优IO分界,它会为系统提供性能最好的扇区大小指示,你看着指示来设置扇区大小就好了。
Directives and Streams指令与流
这功能可能是NVMe 1.3标准里面最用的,这可以为多线程工作负载提供更一致的写入性能,更好的读取预取和更低的写入放大。以前在执行多线程写入的时候主控不会管写入命令的来源是哪里直接把数据连续的写入到物理层上,结果就是导致不同来源的数据交错分布,现在会标识数据来源并把不同来源的数据连续的放在一齐,看图可能更好理解:
Non-Operational Power State Permissive Mode非操作电源状态允许模式
采用PCI-E通道的NVMe设备的电源状态操作远比SATA设备灵活,NVMe SSD有几种不同的功率状态,包括多个操作和非操作空闲状态,其实NVMe 1.1中就引入了APST电源控制功能,现在NVMe 1.3为电源管理增加了两个重要的新功能,第一个就是非操作电源状态允许模式,它是一个控制空闲状态下是否可以进行超过空闲功率限制执行垃圾回收等后台操作的开关,在最大化节能模式时会关闭这功能,而其他状态下系统可能会允许这一操作。
Host Controlled Thermal Management主机控制热管理
这是NVMe电源管理的第二大补充,之前SSD的过热保护是SSD自发的,与系统无关,新的主机控制热管理功能允许系统指定两个温度阈值,SSD应在此温度下执行轻度和严重的节流以降低SSD的温度。热节流的大部分细节仍然由供应商负责,包括SSD的各种温度传感器如何组合以形成阈值适用的复合温度,以及节流的滞后(低于温度阈值的距离在节流前停下来)。SSD将继续包含自己的内置温度限制以防止损坏,但现在像智能手机,平板电脑和超极本这样的紧凑型机器可以防止其SSD将其他组件提升到不良温度。