searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

NVMe协议常用命令集介绍

2023-05-25 08:44:08
847
0

NVMe是一种针对PCIe SSD的高性能、可扩展的主机控制器接口。它的显著特征是支持通过多队列来处理IO命令,达到显著提高性能的效果。NVMe协议制定了Host与SSD控制器之间交互的命令,以及命令是如何执行的。命令有两种:一种叫Admin Command,用于Host管理和控制NVMe SSD;另一种叫I/O Command,用于Host和NVMe SSD之间数据的传输。

1. 管理命令

下面是NVMe 1.3支持的管理命令列表:

1)Delete I/O Submission Queue/Delete I/O Completion Queue/Create I/O Submission Queue/Create I/O Completion Queue

创建或删除IO提交,完成队列。

2)Get Log Page

获取指定log page的内容,比如smart log,self test log,error log等信息都是通过这个命令获取。

3)Identify

Identify命令返回一个数据缓冲区,其中描述了有关NVM子系统、controller或namespace的信息。比如active的namespace,所有的namespace,当前的controller等信息。

4)Abort

Abort命令用于终止先前提交给Admin Submission Queue或I/O Submission Queue的特定命令。要中止的命令可能已经完成,当前正在执行,或者可能处于队列中。

5)Set Features/Get Features

指定或获取Feature的属性。feature包括电源状态,温度阈值等。

6)Asynchronous Event Request

 

2. I/O命令

下面是NVMe 1.3支持的I/O命令列表:

1) Flush

Flush命令用于请求将易失性写缓存的内容变为非易失性。 如果启用了易失性写缓存,那么Flush命令将把与指定命名空间相关的数据和元数据刷到非易失性介质中。

2)Write

写data到NVMe controller提供的LBA,如果SSD支持的话,也可以写入meta。Host也可以指定要包含的保护信息(PI)作为写操作的一部分。

3)Read

从NVMe controller提供的LBA中读取data,如果SSD支持的话,也可以读取meta。Host也可以在读的时候检查PI信息。

4)Write Uncorrectable

字面意思是写如错误,实际上是标记指定范围的LBA为invalid。当LBA被标记为invalid后,如果读到这个LBA,会返回读失败(Unrecovered Read Error status)。如果要清除invalid标记,需要在被标记的LBA上执行Write命令,“覆盖”之前的标记。

5)Compare

Compare命令从存储介质中读取指定的LBA,并将读取的数据与传入的比较数据缓冲区(Compare命令传入的)进行比较。如果读取的数据和比较数据缓冲区中的数据是相同的,则命令返回成功。如果存在任何不同,则命令返回Compare Failure。

6)Write Zeroes

将指定LBA范围的数据写0.

7)Dataset Management

用于指定LBA范围的属性。包括数据读写频率、访问大小和其他可用于优化性能和可靠性的信息。不是常用命令。

8)Reservation Register/Reservation Release/Reservation Acquire/Reservation Report

Reservation提供了一整套可以让一个、两个或者更多的Hosts共同访问一个shared namespace的机制。Reservation权限就像是一个shared namespace 的管理员权限,得到reservation权限的host 对这个shared namespace 可以做任意的读写操作。但是在成为管理员之前需要先用Reservation Register命令注册成为注册人员(registrant),从而建立host和namespace之间的连接, 这个操作的意义相当于通过register 的key 建立起host id 和namespace 之间的register 关系。Reservation Release是让Host放弃这个namespace的管理员权限。Reservation Acquire是获取对应的权限。Reservation Report会返回当前的reservation状态。

 

0条评论
作者已关闭评论
曹****飞
2文章数
0粉丝数
曹****飞
2 文章 | 0 粉丝
曹****飞
2文章数
0粉丝数
曹****飞
2 文章 | 0 粉丝
原创

NVMe协议常用命令集介绍

2023-05-25 08:44:08
847
0

NVMe是一种针对PCIe SSD的高性能、可扩展的主机控制器接口。它的显著特征是支持通过多队列来处理IO命令,达到显著提高性能的效果。NVMe协议制定了Host与SSD控制器之间交互的命令,以及命令是如何执行的。命令有两种:一种叫Admin Command,用于Host管理和控制NVMe SSD;另一种叫I/O Command,用于Host和NVMe SSD之间数据的传输。

1. 管理命令

下面是NVMe 1.3支持的管理命令列表:

1)Delete I/O Submission Queue/Delete I/O Completion Queue/Create I/O Submission Queue/Create I/O Completion Queue

创建或删除IO提交,完成队列。

2)Get Log Page

获取指定log page的内容,比如smart log,self test log,error log等信息都是通过这个命令获取。

3)Identify

Identify命令返回一个数据缓冲区,其中描述了有关NVM子系统、controller或namespace的信息。比如active的namespace,所有的namespace,当前的controller等信息。

4)Abort

Abort命令用于终止先前提交给Admin Submission Queue或I/O Submission Queue的特定命令。要中止的命令可能已经完成,当前正在执行,或者可能处于队列中。

5)Set Features/Get Features

指定或获取Feature的属性。feature包括电源状态,温度阈值等。

6)Asynchronous Event Request

 

2. I/O命令

下面是NVMe 1.3支持的I/O命令列表:

1) Flush

Flush命令用于请求将易失性写缓存的内容变为非易失性。 如果启用了易失性写缓存,那么Flush命令将把与指定命名空间相关的数据和元数据刷到非易失性介质中。

2)Write

写data到NVMe controller提供的LBA,如果SSD支持的话,也可以写入meta。Host也可以指定要包含的保护信息(PI)作为写操作的一部分。

3)Read

从NVMe controller提供的LBA中读取data,如果SSD支持的话,也可以读取meta。Host也可以在读的时候检查PI信息。

4)Write Uncorrectable

字面意思是写如错误,实际上是标记指定范围的LBA为invalid。当LBA被标记为invalid后,如果读到这个LBA,会返回读失败(Unrecovered Read Error status)。如果要清除invalid标记,需要在被标记的LBA上执行Write命令,“覆盖”之前的标记。

5)Compare

Compare命令从存储介质中读取指定的LBA,并将读取的数据与传入的比较数据缓冲区(Compare命令传入的)进行比较。如果读取的数据和比较数据缓冲区中的数据是相同的,则命令返回成功。如果存在任何不同,则命令返回Compare Failure。

6)Write Zeroes

将指定LBA范围的数据写0.

7)Dataset Management

用于指定LBA范围的属性。包括数据读写频率、访问大小和其他可用于优化性能和可靠性的信息。不是常用命令。

8)Reservation Register/Reservation Release/Reservation Acquire/Reservation Report

Reservation提供了一整套可以让一个、两个或者更多的Hosts共同访问一个shared namespace的机制。Reservation权限就像是一个shared namespace 的管理员权限,得到reservation权限的host 对这个shared namespace 可以做任意的读写操作。但是在成为管理员之前需要先用Reservation Register命令注册成为注册人员(registrant),从而建立host和namespace之间的连接, 这个操作的意义相当于通过register 的key 建立起host id 和namespace 之间的register 关系。Reservation Release是让Host放弃这个namespace的管理员权限。Reservation Acquire是获取对应的权限。Reservation Report会返回当前的reservation状态。

 

文章来自个人专栏
存储技术
2 文章 | 2 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0