对使用NVMe接口的装置同时进行的内核模式和用户模式访问制造方法及图纸

技术编号:16482926 阅读:61 留言:0更新日期:2017-10-31 15:32
提供了一种对使用NVMe接口的装置同时进行的内核模式和用户模式访问。公开了一种使得能够对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问的系统和方法。该方法包括:通过至少保留内核空间中的第一范围的存储器地址来创建第一组队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;响应于接收到对于用户模式访问的请求执行下列步骤:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组队列,以及向所述用户应用进程和NVMe装置的控制器提供所述第二组队列的位置地址和大小。

Kernel mode and user mode access for simultaneous use of NVMe interface devices

Provides a kernel mode and user mode access to devices that use the NVMe interface simultaneously. A system and method for enabling simultaneous access to kernel mode access and user mode access for NVMe devices using NVMe interfaces are disclosed. The method includes: the memory address at least the first range in kernel space to create the first cohort; providing a first set of location and size of the queue to the NVMe controller device; user application process running from the host computer system for receiving user access mode in response to receiving the request; for the user access pattern a request to perform the following steps: memory address mapping of the range of second to create second cohorts by at least retain the use of the user application process on the grounds, and to control the user application process and the NVMe device provides the second cohort location and size.

【技术实现步骤摘要】
对使用NVMe接口的装置同时进行的内核模式和用户模式访问本申请要求于2016年4月22日提交的申请号为62/326,459,标题为“用于提供操作系统内核模式和用户模式同时硬件队列访问的系统和方法”的美国临时专利申请以及于2016年10月19日提交的申请号为15/298,053的美国专利申请的优先权和利益,所述申请的全部内容通过引用合并于此。
本公开总体上涉及计算机硬件装置。具体地,本公开涉及一种提供对使用NVMe接口的装置的同时内核模式访问和用户模式访问的系统和方法。
技术介绍
目前,大多数硬盘驱动器(HD)和固态驱动器(SSD)被构造为通过串行高级技术附件(SATA)总线连接到主机计算机系统(或简称“主机”)。然而,由于技术的进步,SSD的访问速度已增加到SATA总线的最大传输速度已成为瓶颈的地步。这样,现在也存在被构造为通过周边组件互连高速(PCIe或PCI-E)总线连接到主机计算机系统的SSD,其中,所述周边组件互连高速(PCIe或PCI-E)总线比SATA总线提供更高的最大传输速度和带宽可扩展性。为了更充分地对PCIe总线所提供的进行利用,还开发了非易失性存储器高速(NVMe)规范。NVMe规范是一种为了访问通过PCIe总线附接的非易失性存储介质而开发的逻辑装置接口规范。相比于针对SATA总线而开发的高级主机控制器接口(AHCI)规范,NVMe规范提供了显著的优势,诸如更低的延迟和经过改善的多处理器核支持。在下文中,根据NVMe接口规范而采用和操作的装置被称为“NVMe装置”。NVMe装置提供超过启用SATA的装置的改善的性能的方法是通过利用多I/O队列。然而,这些I/O队列通常贮存在主机的存储器空间的内核空间中,这意味着它们仅可通过内核模式进程被访问。所以当仅具有用户模式访问并在主机的存储器空间的指定用户空间中运行的用户应用进程不得不在NVMe装置上执行输入/输出(I/O)操作(例如,读取或写入)时,用户应用进程将必须向内核空间中的一个或更多个内核模块进程提交I/O请求。也就是说,用户应用进程将必须使用内核模式访问对I/O队列进行间接访问。然而,通过内核进程对I/O队列进行访问涉及使I/O请求通过一个或更多个抽象层(例如,块I/O层)或者通过一个或更多个抽象层(例如,块I/O层)对I/O请求进行处理,并不可避免地产生延迟。
技术实现思路
本公开提供了一种使得能够通过主机计算机系统对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问的方法,其中,主机计算机系统包括被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间。根据示例实施例,所述方法包括:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,并向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。本公开还提供了一种非暂时性的存储有计算机可执行指令的计算机可读介质,其中,当所述计算机可执行指令被具有被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间的主机计算机系统执行时,使得能够对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问。根据示例实施例,执行所述指令使得主机计算机系统至少执行以下操作:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;以及响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,并向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。本公开还提供了一种主机计算机系统,其中,所述主机计算机系统支持对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问。根据示例实施例,所述系统包括操作系统和存储器装置驱动器。所述操作系统被配置为运行用户应用进程和内核模式进程,并创建被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间。所述存储器装置驱动器被配置为:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列,向NVMe装置的控制器提供第一组队列的位置地址和大小,从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求,并响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,并向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。附图说明作为本公开的一部分而被包括的附图示出了各种实施例,并与上文给出的总体描述和下文给出的各种实施例的详细描述一起用于解释和教导此处描述的原理。图1是描绘根据本公开的示例实施例的提供对NVMe装置同时进行内核模式访问和用户模式访问的主机计算机系统的软件抽象的框图。图2示出根据本公开的示例实施例的提供对NVMe装置同时进行内核模式访问和用户模式访问的主机计算机系统的高级操作的流程图。图3示出可用于实现本公开的实施例的示例计算机架构(例如,主机计算机系统)。附图中的图形不一定是按比例绘制的,在整个附图中为了说明的目的,类似结构或功能的元件通常由相同的参考标号来表示。附图仅旨在帮助此处描述的各种实施例的描述,而没有描述此处公开的教导的每个方面并且不限制权利要求的范围。具体实施方式此处公开的每个特征和教导可被单独使用或与其他特征和教导结合使用,以提供本系统和方法。参考附图单独地且相结合地描述了利用许多这些特征和教导的代表性示例。尽管此处的详细描述向本领域的普通技术人员示出用于实践本教导的多个方面的进一步的细节,但它不限制权利要求的范围。因此,在详细的描述中公开的特征的组合是本教导的代表性示例,且没有必要在最广泛的意义上实施本教导。本公开参考NVMe装置、NVMe规范和其他特定教导作为示例来示出此处的本系统和方法。然而,本系统和方法及其应用不限于这些示例,并可应用于依赖队列与主机计算机系统进行通信的其它装置。如之前讨论的,每个用户应用进程在主机的存储器空间的指定用户空间中运行,并且通常不能对主机的存储器空间的内核空间中的存储器位置进行访问。因此,当用于与NVMe装置进行通信的I/O队列贮存在内核空间中时,用户应用进程必须通过内核空间和各种抽象层来在NVMe装置上执行I/O操作,从而导致延迟。本公开的实施例通过使得能够对NVMe装置同时进行内核模式访问和用户模式访问而克服了延迟问题。这样,需要高性能和低延迟的用户应用进程可在内核进程保留对NVMe装置进行的内核模式访问的同时对NVMe装置进行用户模式访问。图1是描绘根据本公开的示例实施例的提供对NVMe装置同时进行内核模式访问和用户模式访问的主机计算机系统的软件抽象的框图。主机计算机系统(或简称为“主机”)100运本文档来自技高网
...
对使用NVMe接口的装置同时进行的内核模式和用户模式访问

【技术保护点】
一种使得能够通过主机计算机系统对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问的方法,主机计算机系统包括被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间,所述方法包括:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。

【技术特征摘要】
2016.04.22 US 62/326,459;2016.10.19 US 15/298,0531.一种使得能够通过主机计算机系统对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问的方法,主机计算机系统包括被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间,所述方法包括:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。2.如权利要求1所述的方法,其中:第一组队列至少包括管理提交队列和管理完成队列,第一组队列和第二组队列中的每组至少包括输入/输出提交队列和输入/输出完成队列。3.如权利要求2所述的方法,其中,来自所述用户应用进程的用户模式访问包括:在NVMe装置上执行输入/输出操作,同时绕过内核空间中的块输入/输出层。4.如权利要求3所述的方法,还包括:对第二组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;对与第二组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。5.如权利要求4所述的方法,还包括:对第一组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;对与第一组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。6.如权利要求5所述的方法,其中,对第二组队列中的输入/输出提交队列的虚拟存储器写入操作与对第一组队列中的输入/输出提交队列的虚拟存储器写入操作被并行执行。7.一种非暂时性的存储有计算机可执行指令的计算机可读介质,其中,当所述计算机可执行指令被具有被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间的主机计算机系统执行时,使得能够通过使主机计算机系统执行至少下列步骤来对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问:通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;向NVMe装置的控制器提供第一组队列的位置地址和大小;从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;响应于接收到对于用户模式访问的请求执行下列操作:通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。8.如权利要求7所述的非暂时性的计算机可读介质,其中:第一组队列至少包括管理提交队列和管理完成队列,第一组队列和第二组队列中的每组至少包括输入/输出提交队列和输入/输出完成队列。9.如权利要求8所述的非暂时性的计算机可读介质,其中,来自所述用户应...

【专利技术属性】
技术研发人员:康斯坦丁·维谢特斯基卡洛斯·欧莱·弗朗西斯科马诺吉·哥达拉
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:韩国,KR

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1