nvme1.3 Namsepace

6 NVM Command Set

6.1 Namespaces

6.1.1 Namespace Overview

Namespace是Logical Block的集合,Logical Block的范围从0到Namespace大小-1.一个Namespace ID(NSID)是Controller用来提供对Namespace访问的标识符。

6.1.2 Vaild and Invaild NSIDs

Vaild NSIDs在一个NSIDs的范围内,这个范围内的ID能够被NVM subsystem中的Namespace所使用。除了0和大于Identify Namespace数据结构中Number of Namespace字段的值外,任何的NSID都是Valid的。NSID为FFFFFFFFh时代表一个广播值,用来指定所有的Namespace。Invalid NSIDs是除Valid NSIDs和FFFFFFFFh外的任何值。

Valid NSIDs是:

a).Allocated或者Unallocated的Namespace,NVM subsystem中。

b).Active或者Inacctive的Namespace,对于一个指定的Controller。

6.1.3 Allocated and Unallocated NSID Types

在NVM subsystem中,一个Valid NSID是:

a).一个Allocated NSID

b).一个Unallocated NSID

Allocated NSID绑定了一个在NVM subsystem中存在的Namespace。Unallocated NSID没有绑定在NVM subsystem中存在的Namespace。

6.1.4 Active and Inactive NSID Types

对于一个指定的Controller,一个Allocated NSID是:

a).一个Active NSID

b).一个Inactive NSID

对于一个Controller来说,Active NSID是被Attached到这个Controller的一个Namespace。Allocated NSID而且也是Inactive NSID的Namespace是为Attached到这个Controller的Namespace。

Unallocated NSID对于NVM subsystem中的所有Controller来说都是Inactive NSID。

在用一个NVM subsystem中,一个Allocated NSID可能对于一些Controller来说是Active NSID,而对于其他的Controller来说是Inative NSID。

6.1.5 NSID and Namespace Relationships

除非另有说明,否则如果在一个命令中使用的Namespace Identifier字段(CDW1.NSID)是一个Inactive NSID,那么Controller应该终止这条命令并且回复Invalid Field in Command。如果CDW1.NSID代表了一个Invalid NSID,则Controller应该终止这条命令并且回复Invalid Namespace or Format。

下表和图186展示了Valid NSID类型,并对这些类型进行了叙述。

Valid NSID Type

NSID relationship to namespace

Reference

Unallocated

Does not refer to any namespace that exists in the NVM subsystem

6.1.3

Allocated

Refers to a namespace that exists in the NVM subsystem

6.1.3

Inactive

Does not refer to a namespace that is attached to this controller1

6.1.4

Active

Refers to a namespace that is attached to this controller

6.1.4

NOTES:

1. If allocated, refers to a namespace that is not attached to this controller. If unallocated, does not refer to any namespace.

 

图186

6.1.6 NSID and Namespace Usage

如果Namespace Management功能被支持(参见8.12)。那么NSIDs在NVM subsystem中应该是唯一的(例如:不管哪一个Controller要访问NSID为3的Namespace,他们都是访问的同一个物理Namespace)。如果不支持Namespace Management功能,那么NSIDs:

a).被共享的Namespace是唯一的。

b).私有的Namespace不必须是唯一的。

Identify命令(参见5.15节)可能被用来确定某Controller的Active NSIDs和NVM subsystem中的Allocated NSIDs。

为一个特定的Controller确定哪些是Active NSIDs,Host可以遵循以下方式:

1.为每一个Valid NSID(基于Identify Controller命令中的Number of Namespace字段)发送一个CNS字段设置为00h的Identify命令。如果某个特定的NSID反悔了一个非0的数据结构,那么这个NSID是一个Active NSID。或者如下:

2.发送一个CNS字段为2的Identify命令去检索最大1024个Active NSIDs的列表。如果有超过1024个Active NSIDs,那么继续发送一个CNS字段为2h的Identify命令直到所有的Active NSIDs都被检索完成。

去确定NVM subsystem中的Allocated NSIDs,Host应该发送一个CNS字段设置为10h的Identify命令来检索最大1024个Allocated NSIDs的列表。如果有超过1024个Allocated NSIDs,那么继续发送一个CNS字段为10h的Identify命令直到所有的Allocated NSIDs都被检索完成。

Namespace IDs可能会随着断电时的情形而改变。然而为了避免影响到EFI或者操作系统,建议NamespaceIdentifiers在不同的断电情况下都能够保持不变。去确定是不是使用的同一个Namespace,Host可以按照以下方式:

a).如果配置了的话,可以使用Namespace Identification Descriptor(参见图113)的UUID字段。

b).如果配置了的话,可以使用Identify Namespace数据(参见图109)或者Namespace Identification Descriptor中的NGUID字段。

c). 如果配置了的话,可以使用Identify Namespace数据或者Namespace Identification Descriptor中的EUI64字段。

NSFEAT字段(参见图109)中的Bit3代表了NGUID和EUI64重复使用的特性。

在Identify Namespace数据结构中的Namespace Size字段定义了Namespace总共有多少个Logical Block(LBA 0到n-1)。Namespace Utilization 字段定义了当前在Namespace中Allocated的Logical Block的数量。Namespace Capacity字段定义了在精简模式下可以在某一时刻申请的作为Namespace一部分的最大Logical Block数量。下列关系是成立的:Namespace Size >= Namespace Capacity >= Namespace Utilization。

一个Namespace可能会也可能不会和一个Submission Queue相关联;这种关联是由Host确定的。Controller应该支持从任何Submission Queue中都能对任意Active Namespace进行访问。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值