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体系减少了单独的命令层。

推荐阅读:

  • 阿里大牛深入分析分布式事务
    推荐阅读
  • 怎么救活回芽下山桩(下山桩回芽补救)

    要救活回芽下山桩,栽培土壤可用腐叶土、沙土、木屑以少量饼肥水来混合。期间要处在一个合适的温度环境中,将其摆放在半阴通风处,不可进行施肥。因其喜欢生长在疏松透气、排水良好、富含腐殖质的土壤中,所以可用四份腐叶土、一份沙土、一份木屑,并加入适量饼肥水来进行均匀混合配制。一般来说还是保持盆土略微干燥,等活过来后方可进行正常浇水。

  • 重度听障人士用助听器管用吗(被忽视的助听器)

    老年听力障碍会产生一系列负面影响。老年听力障碍还是引起老年痴呆的重要危险因素。孟照莉也表示,广义的老年性听力损失包括所有原因导致的老年人听力下降。对此孟照莉表示,广义的老年性听力损失包括很多原因,她还是建议老年人应该先到医院进行听力学检查、诊断,首先弄清楚听力下降的原因,排除需要医学治疗的听力损失。与此同时,验配师的收入和销售额挂钩是行业常态,这导致诱导销售、以次充好等情况屡见不鲜。

  • 关于毒教材事件的议论文(关于毒教材)

    赛道股崩盘可能跟估值过高以及中报披露结束有关,不过情绪上最直接的影响还是巴菲特的减持。而且更让市场担心的是,老巴目前只卖了100多万股,手里还有2亿多股的货,未来会不会继续砸也是个问题。今年老巴最受关注的动作就是疯狂加仓西方石油,前前后后买了100亿美元左右,西方石油周一创下2018年以来的新高,这一波又赢麻了。

  • 考驾照科目一技巧口诀有哪些

    同向2车道的最低时速为:左侧车道100公里。同向3车道的最低时速为:左侧车道110公里,中间车道90公里;右侧车道60公里。在开启雾灯、近光灯、示廓灯、前后位灯、危险报警闪光灯时,最高车速20公里,并从最近的出口尽快驶离高速公路。使用软连接牵引装置时,两车之间的距离大于4米小于10米。车速为100公里时,最小横向间距为1.5米;安全距离为100米;危险车间距为50米。

  • 上腹部腹胀厌食(腹胀腹痛厌食老不好)

    十二指肠淤积症主要表现为上腹部疼痛、饱胀、厌食等症状,病情严重的可伴有进食过程中或进食后的恶心、呕吐。蒋涛表示,儿童以急性发病为主,常伴有厌食及呕吐;成人以慢性起病为主,症状相对较轻。蒋涛副主任医师提醒,如果腹胀、腹痛、厌食等症状长期出现,常规治疗手段不佳,需要考虑十二指肠淤积症,特别是瘦长体型的青中年女性及小朋友们,可以及时进行胃肠道超声造影检查明确诊断,避免耽误治疗。

  • 五花肉怎么做才软烂(五花肉怎样做才软烂不油腻)

    五花肉肥瘦相间,口感上有瘦肉的紧致,肥肉的软糯,吃着特别过瘾。今天要分享的是一道农家的五花肉做法,出锅的五花肉肥瘦相间,入口即化,吃着肥而不腻。这次做的五花肉就适合这个季节食用,吃到肚子暖乎乎的,热量充足,丝毫不畏惧寒冷。

  • 酥皮怎么做好吃(酥皮做法)

    紫薯去皮后切块蒸制十五分钟,今天小编就来聊一聊关于酥皮怎么做好吃?接下来我们就一起去研究一下吧!酥皮怎么做好吃紫薯去皮后切块。紫薯捣碎,加入牛奶、炼乳。搅拌均匀,舀入裱花袋并系好。取一张酥皮切条备用。将条状酥皮摆成网状。将多余部分去掉后放入烤盘,刷上鸡蛋液。静置十分钟放入烤箱中下层烤制25分钟。

  • 罗汉果连续喝多久为宜(罗汉果连续喝适宜的时间)

    接下来我们就一起去研究一下吧!罗汉果清宣肺热,可治疗肺燥咳嗽痰多,咽干口燥等症,通常每次泡饮喝半个,连续冲泡2—3次,每日饮罗汉果水1000—2000毫升左右,大约1周左右可缓解,而慢性支气管炎、慢性咽喉炎的患者需要1个月左右才能缓解治疗病症。当自身病情稍有好转后,即可停用,健康人群不宜长期、大量饮用罗汉果茶,以免加重身体寒气,刺激肠胃,反而导致身体不适。

  • 黄河中华民族的母亲河(中华文化符号黄河)

    黄河文化是中华文明的重要组成部分,是中华民族的根和魂。黄河文明以其根源性、连续性、包容性等文化特质,成为中华文明的根脉和中华民族共享的根源性文化符号。黄河为宗,地位尊崇。中华民族5000多年的文明史上,黄河流域地区有3000多年是全国的政治、经济、文化中心。黄河文化在形成发展过程中,始终彰显着强烈的文化自信。黄河文化对推进世界文明进程产生的巨大影响力和作出的突出贡献,成为彰显中华民族文化自信的重要标志。

  • 香蕉的营养价值 香蕉的营养价值高吗

    香蕉当中含有水果纤维素和果胶,而纤维素和果胶不能被人体消化和吸收,但是可以起到促进肠壁蠕动,并且有助于食物消化及粪便的排出。