




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 NVMe技术架构深度分析 NVM(Non-Volatile Memory)翻译过来为非易失存储器,是一类存储器的一般术语总称。而NVMe(Non-Volatile Memory Express)是一个可扩展的主控器芯片接口标准,主要为企业、数据中心以及客户端系统中应用PCIe接口的固态存储设备(SSD)设计,它的目标是最大限度的释放闪存的潜能。NVMe接口属于逻辑设备接口,工作在支持NVMe的板卡上的主控器和主机端的对等层内,它规定了操作系统与NVM子系统之间的通信协议,定义了一套指令集和功能集。NVMe为基于PCIe的SSD带来了较低的时延,较高的IOPS和较低能耗的优势。首先通过下图展示
2、下NVMe在数据传输过程中的位置,有一部分位于PCIe之上,这部分也是NVMe驱动的主要部分,还有一部分位于用户态的软件层,用于应用层与NVMe驱动间的交互。NVMe有以下几个关键属性:在命令提交(Command Submission)或者完成(Completion)的路径上不需要读取相关寄存器(不可缓存或MMIO寄存器);支持最多可达64K 的I/O 队列,每个队列支持64K的未处理命令命令;每个队列的的优先级拥有明确的仲裁机制;为确保超高效的IO操作,完成一个4KB读取请求需要的所有信息包含在64B的命令中;高效且流线型的指令集;支持MSI/MSI-X中断和中断聚合;支持多个命名空间;有效
3、支持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唯一。
4、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 Que
5、ue。Admin Queue的ID都是0。IO Submission Queues和对应的IOCompletion Queues用来处理IO命令,规范定义了一种IO Command Set,叫做NVM Command Set,与IO队列一起使用。系统在创建Submission Queue前必须先创建相关的Completion Queue,删除操作也要先于相关的Completion Queue。下面两张图展示了主机、主控器与队列之间的配合关系。由系统创建队列,队列最大数目可到主控器支持的上限。通常情况下是根据主机的配置和预期的工作负载来创建,并将一对队列绑定到一个CPU核上,避免使用锁与更多的核
6、间数据传递。从下面两张图中可以看出Admin永远是1对1的,而IO队列可以是多个SQ对应一个CQ。每个SQ都是一个有着固定“槽位”大小的循环缓冲区,系统用它来提交命令来等待控制器执行。当系统提交了一批新的等待执行的命令时,系统将更新SQ尾部Doorbell寄存器通知主控器,这时主控器将重写主控器内部对应SQ尾部的值。主控器从SQ中顺序取出64字节的命令,但之后对命令的执行可能是任何顺序。内存中将分配PRP(Physical Region Page)条目或Scatter Gather Lists(SGL)用于数据传输,每个命令包括两个PRP条目或一个SGL部分。如果需要更多的PRP条目则需要提供
7、一个指向PRP链表的指针,而对于SGL则在SGL部分提供一个指向下一个SGL部分的指针。每个CQ也都是一个有着固定“槽位”大小的循环缓冲区,控制器用它来投递已完成命令的状态信息。一个已完成的命令由相关的SQ ID和CQ ID唯一标识,SQ和CQ的ID由系统分配。系统在处理好CQ条目后会释放该CQ条目并更新CQ的头指针。在CQ条目中,有一Bit(Phase简称P)是用来表示该条目是否是刚刚投递来的,这样做可以帮助系统决定该新条目是前一轮还是当前一轮的完成通知。每次处理CQ时,遍历完所有CQE条目后,控制器都会将Phase值取反。多路径IO指的是一个主机和一个命名空间之间存在多条完全独立的PCIe
8、路径。命名空间共享指的是多个主机可以通过不同的NVMe控制器接入同一个命名空间,要求NVM子系统包含多个控制器。下图(1)是没有多路径IO和命名空间共享的情况,NVMe控制器下的NSID互不相同。图(2)是有命名空间共享没有多路径IO的情况,两个控制器用一个PCIe端口(一个为Func0一个为Func1),共享一个命名空间(在控制器内必须用相同的ID)。当共享命名空间的控制器存在并发访问该命名空间时,应设置控制器支持原子操作,并可采用不同的优先级。图2-3(3)是有多路径IO和命名空间共享的情况,这样的情境中,两个PCIe端口是完全独立的。NVMe对SR-IOV的支持示意图(不一定只有一个PC
9、Ie端口)如下。图中可看出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)即LBANAND Flash介质 (上图未标出)NVMe和传统SCSI体系比较,在主机侧,NVMe子系统减少了IO调度层,单独的命令层,IO路径更短,为低延迟提供了保障。NVMe存储设备涉及的主机侧软件栈包括: NVMe驱动,虚拟块管理层,文件系统层。NVMe规范重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同模板-星河图书馆场地借用协议(星河)
- 2025中学设施设备采购合同范本
- 2025年柔性制造单元(FMC)项目建议书
- 2025年肠外营养药项目合作计划书
- 2025年玛丽珍鞋合作协议书
- 2025劳动合同终止不想续约需提交辞职申请
- 2025自动化设备维护、修理合同
- 2025年杀虫杀螨混剂项目建议书
- 2025年聚砜及其合金合作协议书
- 2025年镀锡板卷(马口铁)合作协议书
- 研发部发展规划方案
- GB/T 24834-20231 000 kV交流架空输电线路金具技术规范
- 物业各阶段的工作计划及目标
- PENTACAM的原理和应用手册-【眼科特殊检查】
- 2024电力人工智能样本存储技术要求
- 县中医院妇科重点专科建设汇报
- 全国优质课一等奖初中音乐《深情》课件
- 碳捕集、利用与封存技术
- 产品系统设计课件-
- 带状疱疹护理查房
- 档案移交目录表
评论
0/150
提交评论