77百科网
当前位置: 首页 生活百科

怎样查看nvme协议(NVMe技术架构深度分析)

时间:2023-08-14 作者: 小编 阅读量: 1 栏目名: 生活百科

在系统向某个NS提交IO命令之前,这个NS必须与某个控制器关联。SubmissionQueue由系统放置命令,CompletionQueue由控制器放置完成信息。由系统创建队列,队列最大数目可到主控器支持的上限。主控器从SQ中顺序取出64字节的命令,但之后对命令的执行可能是任何顺序。系统在处理好CQ条目后会释放该CQ条目并更新CQ的头指针。当共享命名空间的控制器存在并发访问该命名空间时,应设置控制器支持原子操作,并可采用不同的优先级。

NVM(Non-Volatile Memory)翻译过来为非易失存储器,是一类存储器的一般术语总称。而NVMe(Non-Volatile Memory Express)是一个可扩展的主控器芯片接口标准,主要为企业、数据中心以及客户端系统中应用PCIe接口的固态存储设备(SSD)设计,它的目标是最大限度的释放闪存的潜能。

NVMe接口属于逻辑设备接口,工作在支持NVMe的板卡上的主控器和主机端的对等层内,它规定了操作系统与NVM子系统之间的通信协议,定义了一套指令集和功能集。NVMe为基于PCIe的SSD带来了较低的时延,较高的IOPS和较低能耗的优势。

首先通过下图展示下NVMe在数据传输过程中的位置,有一部分位于PCIe之上,这部分也是NVMe驱动的主要部分,还有一部分位于用户态的软件层,用于应用层与NVMe驱动间的交互。

NVMe有以下几个关键属性:

  • 在命令提交(Command Submission)或者完成(Completion)的路径上不需要读取相关寄存器(不可缓存或MMIO寄存器);
  • 支持最多可达64K 的I/O 队列,每个队列支持64K的未处理命令命令;
  • 每个队列的的优先级拥有明确的仲裁机制;
  • 为确保超高效的IO操作,完成一个4KB读取请求需要的所有信息包含在64B的命令中;
  • 高效且流线型的指令集;
  • 支持MSI/MSI-X中断和中断聚合;
  • 支持多个命名空间;
  • 有效支持IO虚拟化架构,如SR-IOV;
  • 健全的错误报告和管理功能;
  • 支持多路径IO和命名空间共享;
  • 支持许多企业需求,如端到端的数据保护(与SCSI保护信息兼容)。

NVMe有很多关键概念,其中命名空间(Name Space简称NS),是一定量的NVM(Non-Volatile Memory)集合,这些NVM可被格式化为许多个逻辑块。一个NVMe控制器能支持多个由不同命名空间ID(简称NSID)标识的NS。

在系统向某个NS提交IO命令之前,这个NS必须与某个控制器关联。若NVM子系统支持NS管理,则NVM子系统内的NSID必须是唯一的(不管NS连接的是哪个控制器);若不支持,则不要求私有NS的ID唯一。NVM子系统包括N个控制器,M个命名空间,S个PCIe端口,一个NVM介质以及一个接口连接控制器与该介质。

NVMe是基于成对的Submission Queue(简称SQ)和Completion Queue(简称CQ)机制工作,它们存在于主机内存里。Submission Queue由系统放置命令,Completion Queue由控制器放置完成信息。

Admin Submission Queue和对应的Admin Completion Queue用来管理和控制主控器(如创建和删除IO队列,终止命令等),只有属于AdminCommand Set的命令才会被提交到AdminSubmission Queue。Admin Queue的ID都是0。

IO Submission Queues和对应的IOCompletion Queues用来处理IO命令,规范定义了一种IO Command Set,叫做NVM Command Set,与IO队列一起使用。系统在创建Submission Queue前必须先创建相关的Completion Queue,删除操作也要先于相关的Completion Queue。

下面两张图展示了主机、主控器与队列之间的配合关系。由系统创建队列,队列最大数目可到主控器支持的上限。通常情况下是根据主机的配置和预期的工作负载来创建,并将一对队列绑定到一个CPU核上,避免使用锁与更多的核间数据传递。从下面两张图中可以看出Admin永远是1对1的,而IO队列可以是多个SQ对应一个CQ。

每个SQ都是一个有着固定“槽位”大小的循环缓冲区,系统用它来提交命令来等待控制器执行。当系统提交了一批新的等待执行的命令时,系统将更新SQ尾部Doorbell寄存器通知主控器,这时主控器将重写主控器内部对应SQ尾部的值。主控器从SQ中顺序取出64字节的命令,但之后对命令的执行可能是任何顺序。

内存中将分配PRP(Physical Region Page)条目或Scatter Gather Lists(SGL)用于数据传输,每个命令包括两个PRP条目或一个SGL部分。如果需要更多的PRP条目则需要提供一个指向PRP链表的指针,而对于SGL则在SGL部分提供一个指向下一个SGL部分的指针。

每个CQ也都是一个有着固定“槽位”大小的循环缓冲区,控制器用它来投递已完成命令的状态信息。一个已完成的命令由相关的SQ ID和CQ ID唯一标识,SQ和CQ的ID由系统分配。系统在处理好CQ条目后会释放该CQ条目并更新CQ的头指针。

在CQ条目中,有一Bit(Phase简称P)是用来表示该条目是否是刚刚投递来的,这样做可以帮助系统决定该新条目是前一轮还是当前一轮的完成通知。每次处理CQ时,遍历完所有CQE条目后,控制器都会将Phase值取反。

多路径IO指的是一个主机和一个命名空间之间存在多条完全独立的PCIe路径。命名空间共享指的是多个主机可以通过不同的NVMe控制器接入同一个命名空间,要求NVM子系统包含多个控制器。

下图(1)是没有多路径IO和命名空间共享的情况,NVMe控制器下的NSID互不相同。图(2)是有命名空间共享没有多路径IO的情况,两个控制器用一个PCIe端口(一个为Func0一个为Func1),共享一个命名空间(在控制器内必须用相同的ID)。当共享命名空间的控制器存在并发访问该命名空间时,应设置控制器支持原子操作,并可采用不同的优先级。

图2-3(3)是有多路径IO和命名空间共享的情况,这样的情境中,两个PCIe端口是完全独立的。

NVMe对SR-IOV的支持示意图(不一定只有一个PCIe端口)如下。图中可看出NVM子系统只有一个物理Func0,其余4个均为虚拟Func(0, x)。

每个虚拟Func都有一个与之关联的NVMe控制器,且每个控制器有一个私有的命名空间和同一个共享的命名空间。通过这样的方法,实现了PCIe的扩展,允许上层运行的虚拟机能够高效的共享PCIe的硬件资源。

硬件形态上,和传统SCSI盘比较,NVMe子系统直接通过PCIe总线和主机连接,路径中不再需要HBA卡,降低了系统开销。

NVMe子系统内部组成:

  • 至少一个PCIe port,用于外部连接
  • 至少一个NVMe controller,该controller是实现了NVMe逻辑的PCI function
  • 名字空间标识(NSID)即LUN号
  • 名字空间(NS)即LBA
  • NAND Flash介质 (上图未标出)

NVMe和传统SCSI体系比较,在主机侧,NVMe子系统减少了IO调度层,单独的命令层,IO路径更短,为低延迟提供了保障。

NVMe存储设备涉及的主机侧软件栈包括: NVMe驱动,虚拟块管理层,文件系统层。NVMe规范重新设计定义了I/O队列机制及相应的仲裁机制,较传统的SCSI体系软件栈减少了实现排队功能的通用IO的调度层。NVMe驱动同时实现了底层传输和设备操作命令,较传统SCSI体系减少了单独的命令层。

推荐阅读:

  • 阿里大牛深入分析分布式事务
    推荐阅读
  • 结香花怎么繁殖 结香如何扦插繁殖

    扦插时应选在每年春季进行,生长旺季枝条的萌发能力强,生根速度会更快。想要分株在植株萌芽前就应从老株上截取健壮的小苗,截取之后根系要消毒处理。晾干伤口后和母株分开栽种就行。

  • 船到桥头自然直啥意思(船到桥头自然直的解释)

    船到桥头自然直的意思是:弯弯的河道,疑似到桥下过不了,但到了跟前就会发现,船会自然垂直于桥通过事先不用着急,到时候问题总会迎刃而解读音:chuándàoqiáotóuzìránzhí,下面我们就来聊聊关于船到桥头自然直啥意思?接下来我们就一起去了解一下吧!

  • 联想电脑怎么设置密码(如何设置联想电脑密码)

    下面更多详细答案一起来看看吧!联想电脑怎么设置密码演示机型:联想ThinkPad,系统版本:win10。在电脑的搜索栏中搜索控制面板,打开控制面板跳转出的界面,找到用户账户。在“用户账户”页面我们找到并点击“为您的账号创建密码”。输入自己的密码,并确认后点击“创建密码”,密码即创建成功。再重启电脑,就可看到设置已经生效,电脑输入密码才能进入。

  • 青椒是什么季节种(青椒怎么种)

    青椒是什么季节种?采取措施使秧苗根系发达。首先配制通气良好肥沃的床土。其次分苗次数不宜过多,且应注意保护根系,避免伤根过重。一次分苗宜保证较大的营养面积。定植:定植时期必须在晚霜结束,日平均气温稳定在17℃左右时开始。青椒的栽植密度依品种及生长期长短而不同。

  • 蓝色的寓意是什么(蓝色代表的意义是什么)

    蓝色的寓意是什么蓝色非常纯净,通常让人联想到海洋、天空、水、宇宙。在伊斯兰教中,蓝色是一种纯洁的颜色。欧洲的贵族往往被称为有“蓝色的血”。有人认为这个称呼来自于他们苍白的皮肤。男孩的衣服、玩具、幼儿车等往往是淡蓝色的。曾有一个传说,讲述的是一个少女为了等她的爱人回来。

  • 我国每年的两会是指

    由于两场会议会期基本重合,而且对于国家运作的重要程度都非常的高,故简称做两会。两会代表是代表着广大选民的一种利益的,代表着选民在召开两会期间,向政府有关部门提出选民们自己的意见和要求。

  • 艾尔登法环使者的扇形笛子属性介绍

    艾尔登法环使者的扇形笛子属性介绍,这是三把笛子里最大的一把,但是不是很好用,攻击力和削韧还行,就是出手速度太慢了,下面一起来看一下本站小编带来的艾尔登法环使者的扇形笛子属性介绍。

  • 白萝卜和胡萝卜能一起吃吗(你知道答案了吗)

    下面内容希望能帮助到你,我们来一起看看吧!白菜具有消食下气,清热除烦的功效,而胡萝卜具有健脾胃、化积滞,明目的作用,一起食用对身体具有一定的调节作用。白菜和胡萝卜是日常生活中较为常见的两种食材,一起食用不仅可以提高二者的口感,还可以为身体提供更多容易被人体吸收的营养物质,是白菜和胡萝卜的营养价值有所提高。

  • 怎样炖肉使肉嫩滑不柴(炖肉时多加2料牢记6个技巧)

    要适当吃点肉,补充一些蛋白质和脂肪,这样才能保证营养,腿脚有劲精力旺。经过长时间的炖煮,肉的营养得到充分释放,而且口感变得特别烂乎,最适合孩子和老人吃。肉中含有丰富的蛋白质和脂肪,经过煸炒后就能激发出香味,尤其是油香味。炖肉一定要先放盐,这样肉才能入味。说肉炖不烂的,肯定是没炖够时间。经过长时间的炖煮,肉中的肌肉纤维结合力变得越来越低,肉就会变得软烂了。

  • 刚怀孕需要注意什么(有什么好的建议)

    刚怀孕需要注意什么刚确定怀孕,最好及时的到医院检查,排除一下宫外孕的可能,以及胎心胎芽情况。确定怀孕后,后期还要注意定期的遵医嘱按时产检。及时在医生指导下,继续补充叶酸,刚怀孕可能会出现早孕反应,此时最好注意少食多餐。怀孕初期还要多注意保暖,不要着凉感冒,不要自己私自进行服药,如果身体出现不适的情况,还要及时的去就医。