NVMe 协议之Multi-Streams和Directives

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 Identify是默认必须支持的。

Identify Directive


 Host可以通过Return Parameters读取SSD支持的Directive Type (NVMe2.0只支持Streams 01h)和当前的Enable状态,也可以通过Enable Directive使能某个Directive Type(例如Stream)。

Streams Directive


 Host可以通过Return Parameters读取SSD支持的Streams能力,包括Stream Write Size,Stream Granularity Size和Stream resources等。

Get Status操作可以返回Host当前的Streams状态,包括哪些stream是open的。

Host通过Allocate Resources操作申请Streams并返回当前可以分配的Streams数量。

Release Identifier允许Host释放某个Streams。

Release Resources允许Host释放所有申请的Streams。

使用Multi-Streams
Write命令通过在命令参数中设置Directive Type字段为01h,Directive Specific字段为对应Stream Id使用Multi-Streams。

Write命令参数如下图:

 参考:

1. NVM Express Base Specification 2.0b
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NVMe(Non-Volatile Memory Express)是一种基于PCIe总线的高性能存储接口标准。NVMe SCSI(Small Computer System Interface)是在NVMe基础上将SCSI命令映射到NVMe的一种实现方式。 NVMe SCSI是一种在NVMe存储设备上执行SCSI命令的协议。其中,NVMe SCSI Primary Commands - 5是一组用于执行传输数据、控制设备和查询设备信息的SCSI命令。 这组命令包括读取命令(Read Command)、写入命令(Write Command)、写入长命令(Write Long Command)、写入同步命令(Write Synchronization Command)和预取命令(Prefetch Command)。 读取命令用于从存储设备中读取数据。可以通过设置数据传输长度和传输起始位置来指定需要读取的数据范围。 写入命令用于向存储设备中写入数据。与读取命令类似,可以设置数据传输长度和传输起始位置来指定写入的数据范围。 写入长命令用于写入长数据。相比于写入命令,写入长命令支持更大的数据传输长度。 写入同步命令用于在写入数据之前先进行一个或多个同步确认。这样可以确保之前的所有写入操作都完成后再进行下一个写入操作。 预取命令用于指定设备预取机制的信息,以优化读取性能。 总之,NVMe SCSI Primary Commands - 5是一组在NVMe设备上执行SCSI命令的指令集,用于实现数据读取、写入、同步和预取等操作,提供了高性能和效率的存储访问方式。 ### 回答2: NVMe(Non-Volatile Memory Express)是一种高性能存储接口协议,它的SCSI(Small Computer System Interface)主要命令集中的第5个命令被称为NVMe SCSI Primary Command - 5。 具体而言,NVMe SCSI Primary Command - 5是用于完成与NVMe设备通信的主要命令之一。它允许主机与NVMe设备之间进行读写操作,以获取或修改存储在设备上的数据。 通过进行读取操作,NVMe SCSI Primary Command - 5命令可以传输存储在NVMe设备中的数据到主机中。这对于从存储设备中获取文件和信息非常有用。主机可以指定读取的起始地址和读取的数据长度,以确保获取正确的数据。 与读取操作相反,NVMe SCSI Primary Command - 5也支持写入操作。主机可以将数据写入NVMe设备,以便在存储中创建、修改或更新文件和信息。通过指定写入的起始地址和写入的数据长度,主机可以确保写入正确的位置和适当的数据。 总的来说,NVMe SCSI Primary Command - 5命令是与NVMe设备通信的关键命令之一。它通过读取和写入操作,允许主机与NVMe设备之间高效地传输数据。 ### 回答3: NVMe SCSI primary commands - 5,是指NVMe(Non-volatile Memory Express)SCSI(Small Computer System Interface)主要命令的第五个版本。 第五版的NVMe SCSI primary commands扩展了之前版本的功能,提供了更高的性能和更丰富的功能支持。这些命令是用于与NVMe设备进行通信和控制的指令集。 NVMe是一种针对固态存储器(SSD)的高速、低延迟、高吞吐量的连接协议。SCSI是一种通用的存储设备接口,用于连接计算机和外部存储设备。 NVMe SCSI主要命令-5包括了以下几个方面的功能: 1. 带宽管理:命令集提供了更灵活的带宽管理功能,可以根据需要灵活地分配和管理带宽资源,以最大程度地提高系统性能。 2. 多路径支持:命令集扩展了多路径支持的功能,使得在多条路径之间进行负载平衡和故障转移更加灵活和可靠。 3. 电源管理:命令集增加了更多的电源管理命令,以支持设备的低功耗状态和快速唤醒。 4. 安全性增强:命令集引入了更多的安全性增强功能,包括加密、数据完整性保护等,以保护存储数据的安全性。 5. 性能优化:命令集提供了更多的性能优化命令,包括请求队列管理、命令优先级管理等,以提高系统性能和响应速度。 总之,NVMe SCSI主要命令-5是为了更好地满足NVMe设备的高性能和高可靠性需求而设计的指令集。通过扩展功能和提供更多的控制能力,它可以提供更优秀的存储性能和多样化的应用场景支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值