Multi-Streams多流
多流是企业级SSD的一个新特性,通过使用多流特性,可以显著提高SSD的垃圾回收效率,从而提高性能和延长寿命。
在SSD的应用场景中,可能有多个不同的应用在对SSD进行写操作,包括热数据和冷数据,包括随机写数据和顺序写数据,包括大块写数据和小块写数据,如果把这些数据都混在同一个NAND块里面,显然不利于垃圾回收处理,一个很自然的想法是把这些数据进行分类。NVMe协议里面有两种方法可以对数据进行分类,其中一个是通过Dataset Management,另一个就是Multi-Streams。
Dataset Management把SSD的逻辑容量分成不同的Range,不同的Range有不同的属性,包括Sequential Write,Sequential Read,Access Latency,Access Frequency等,如何利用这些属性来优化数据写入NAND的方式,由SSD内部决定。而Multi-Streams则是由Host明确告诉SSD,当前的数据属于哪个Stream ID,SSD会把对应不同Stream ID的数据写入不同的NAND块。
下图是Multi-Streams在SSD内部的使用方式
Directives
NVMe 2.0只支持两种Directive Type即00h Identify和01h Streams,在使用Streams特性前,需要先通过Identify Directives使能Streams,其中00h Ident