CN107305534A - 对使用NVMe接口的装置同时进行的内核模式和用户模式访问 - Google Patents

对使用NVMe接口的装置同时进行的内核模式和用户模式访问 Download PDF

Info

Publication number
CN107305534A
CN107305534A CN201710178710.7A CN201710178710A CN107305534A CN 107305534 A CN107305534 A CN 107305534A CN 201710178710 A CN201710178710 A CN 201710178710A CN 107305534 A CN107305534 A CN 107305534A
Authority
CN
China
Prior art keywords
team
input
user
output
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710178710.7A
Other languages
English (en)
Other versions
CN107305534B (zh
Inventor
康斯坦丁·维谢特斯基
卡洛斯·欧莱·弗朗西斯科
马诺吉·哥达拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN107305534A publication Critical patent/CN107305534A/zh
Application granted granted Critical
Publication of CN107305534B publication Critical patent/CN107305534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

对使用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运行操作系统,并包括被至少划分为内核空间110以及第一用户空间120和第二用户空间130的主机存储器空间。内核空间110包括块I/O层111和NVMe装置驱动器112,它们每个都包括一个或更多个内核进程。内核空间110还包括第一组队列113,诸如管理提交队列ASQ、管理完成队列ACQ、I/O提交队列ISQ1和I/O完成队列ICQ1。内核空间110还包括第二组队列132,诸如I/O提交队列ISQ2和I/O完成队列ICQ2。然而,第一组队列113和第二组队列132不限于图1示出的那些。
ISQ1将I/O命令(例如,读取命令和写入命令)转发到NVMe装置200,ICQ1将那些I/O命令的完成状态转发回主机100。按照类似的方式,ASQ将管理命令转发到NVMe装置200,ICQ1将那些管理命令的完成状态转发回主机100。管理命令的示例包括用于创建和删除I/O提交/完成队列的命令。NVMe装置驱动器112可通过保留内核空间中的一范围的存储器地址并向NVMe控制器201提供第一组队列113的位置地址和大小(例如,通过向ASQ进行写入)来创建第一组队列113。
运行在第一应用空间120中的第一应用进程121可通过使用内核模式访问对第一组队列113进行间接读取和写入来在NVMe装置200上执行I/O操作。同时,在第二应用空间130中运行的第二应用进程131可通过使用用户模式访问对第二组队列132进行直接读取和写入来在NVMe装置200上执行I/O操作。第二用户应用进程131能够通过用户模式访问直接访问第二组队列132,这是因为NVMe装置驱动器112已将第二组队列132映射到第二用户空间130,使得第二用户应用进程131能够在无需内核介入的情况下访问队列。
第一应用进程121可通过将I/O请求提交到块I/O层111来在NVMe装置200上执行I/O操作,其中,块I/O层111随后对I/O请求进行处理并将I/O请求转发到NVMe装置驱动器112。尽管没有在图1中示出,但I/O请求在到达NVMe装置驱动器112之前可被其他层或子系统处理。
NVMe装置驱动器112可响应于接收到I/O请求将相应的I/O命令写入ISQ1的尾部位置。NVMe装置驱动器112还可对与ISQ1对应的ISQ1尾部门铃寄存器(tail doorbellregister)的值进行更新。新的值可以是指向经过更新的ISQ1的尾部位置的指针。ISQ1尾部门铃寄存器可以是NVMe控制器201中的多个寄存器202中的一个,并可通过存储器映射的I/O(MMIO)通信而被NVMe装置驱动器112访问。更新ISQ1尾部门铃寄存器的值或按响门铃的操作使MVMe控制器201知道新的I/O命令已在ISQ1中排队。
NVMe控制器201可在ISQ1的头部位置开始从ISQ1获得I/O命令并处理I/O命令。虽然NVMe控制器201可从ISQ1按照从头部到尾部的顺序获得I/O命令,但是它可以以任何顺序执行那些命令。在完成I/O命令的执行后,NVMe控制器201可将完成状态写入ICQ1的尾部位置,并对主机100产生例如MSI-X中断。
NVMe装置驱动器112可在ICQ1的头部位置开始从ICQ1获得完成状态。在获得与来自第一应用进程121的I/O请求对应的完成状态后,NVMe装置驱动器112可对请求的I/O操作的完成进行处理并使完成状态穿过块I/O层111(以及图1中未示出的可能的其他层或子系统)传回第一应用进程121。NVMe装置驱动器112还可对与ICQ1对应的ICQ1头部门铃寄存器的值进行更新。新的值可以是指向经过更新的ICQ1的头部位置的指针。ICQ1头部门铃寄存器可以是NVMe控制器201中的多个寄存器202中的一个寄存器,其中,所述一个寄存器可经由MMIO通信而被NVMe装置驱动器112访问。
如前所述,当第一应用进程121通过内核模式访问对第一组队列113进行间接访问时,第二应用进程131可通过用户模式访问对第二组队列132进行访问。然而,如第一组队列113,第二组队列132可能需要在使用前被创建。例如,第二应用进程131可向NVMe装置驱动器112提交针对用户模式访问的请求,其中,所述请求可包括用于创建第二组队列132的请求。该请求可通过输入/输出控制(IOCTL)系统调用而被发送到例如NVMe装置驱动器132。
NVMe装置驱动器112可通过保留被映射到第二用户空间130的内核空间110中的一范围的存储器地址并将第二组队列的位置地址和大小通过IOCTL系统调用提供给第二应用进程112并通过对ASQ的命令提供给NVMe控制器201来创建第二组队列132。例如,NVMe装置驱动器112可向ASQ写入第一命令以创建ISQ2,并向ASQ写入第二命令以创建ICQ2。NVMe装置驱动器112还可更新与ASQ对应的ASQ尾部门铃寄存器的值。新的值可以是指向ASQ的尾部位置的指针。ASQ提交尾部门铃寄存器可以是NVMe控制器201中的多个寄存器202中的一个。
NVMe控制201可在ASQ的头部位置开始从ASQ获得管理命令并处理管理命令。虽然NVMe控制器201可从ASQ按照从头部到尾部的顺序获得管理命令,但是它可以以任何顺序执行那些命令。在完成管理命令的执行后,NVMe控制器201可将完成状态写入ACQ的尾部位置,并对主机100产生例如MSI-X中断。
NVMe装置驱动器112可在ACQ的头部位置开始从ACQ获得完成状态。在获得与来自第二应用进程131的队列创建请求对应的完成状态后,NVMe装置驱动器112可通过IOCTL调用将完成状态传回第二应用进程131,其中,所述完成状态可伴随着第二组队列132的位置地址和大小。NVMe装置驱动器112还可对与ACQ对应的ACQ头部门铃寄存器的值进行更新。新的值可以是指向经过更新的ACQ的头部位置的指针。ACQ头部门铃寄存器可以是NVMe控制器201中的多个寄存器202中的一个。
在第二组队列132被创建后,第二应用进程131可通过用户模式访问对第二组列队132进行直接读取和写入,从而在NVMe装置200上执行I/O操作,同时绕过内核进程(诸如在块I/O层111中的那些)。第二应用进程121可通过将对应的I/O命令写入ISQ2的尾部位置而在NVMe装置200上执行I/O操作。NVMe装置驱动器112还可对与ISQ2对应的ISQ2尾部门铃寄存器的值进行更新。新的值可以是指向经过更新的ISQ2的尾部位置的指针。ISQ2尾部门铃寄存器可以是NVMe控制器201中的多个寄存器中的一个。对ISQ2尾部门铃寄存器的值进行更新的操作使NVMe控制器201知道新的I/O命令已在ISQ2中排队。
NVMe控制器201可在ISQ2的头部位置开始从ISQ2获得I/O命令并处理I/O命令。虽然NVMe控制器201可从ISQ2以从头部到尾部的顺序获得I/O命令,但是它可以以任何顺序执行那些命令。在完成I/O命令的执行之后,NVMe控制器201可将完成状态写入ICQ2的尾部位置,并对主机100产生例如MSI-X中断。
第二应用进程131可在ICQ2的头部位置开始从ICQ2获得完成状态。在获得与请求的I/O操作对应的完成状态之后,第二应用进程131可对请求的I/O操作的完成进行处理,并对与ICQ2对应的ICQ2头部门铃寄存器的值进行更新。新的值可以是指向经过更新的ICQ2的头部位置的指针。ICQ2头部门铃寄存器可以是NVMe控制器201中的多个寄存器202中的一个。
因此,根据本系统和方法的示例实施例的主机100提供对NVMe装置的同时的内核模式访问和用户模式访问。这样,使用对NVMe装置进行的用户模式访问来提供需要高性能和低延迟的用户应用进程,同时内核进程保留对NVMe装置的内核模式访问。
图2示出根据本公开的示例实施例的提供对NVMe装置同时进行内核模式访问和用户模式访问的主机计算机系统的高级操作的流程图。用户模式访问可包括:在NVMe装置上执行I/O操作,同时绕过主机计算机系统的内核空间中的块I/O层。主机计算机系统与NVMe装置之间的通信可遵守NVMe规范。
虽然主机计算机系统和NVMe装置的一个或更多个组件在下面被描述为执行所公开的操作,但是本系统和方法不局限于此,主机计算机系统和NVMe装置的其他组件可执行那些操作或相结合地执行那些操作。存储器装置驱动器通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列(在201)。第一组队列可至少包括:管理提交队列、管理完成队列、I/O提交队列和I/O完成队列。存储器装置驱动器向NVMe装置的控制器提供第一组队列的位置地址和大小(在202)。
存储器装置驱动器从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求(在203)。存储器装置器驱动器响应于接收到对于用户模式访问的请求,通过至少保留为由用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列(在204)。第二组队列可至少包括I/O提交队列和I/O完成队列。存储器装置驱动器还响应于接收到对于用户模式访问的请求向用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小(在205)。
在第一组队列和第二组队列被创建后,主机计算机系统上运行的用户应用进程可对第二组队列中的I/O提交队列执行I/O命令的虚拟存储器写入操作,并对与第二组队列中的I/O提交队列对应的提交尾部门铃寄存器的值进行更新。同时,内核模式进程可对第一组队列中的I/O提交队列执行I/O命令的虚拟存储器写入操作,并对与第一组队列中的I/O提交队列对应的提交尾部门铃寄存器的值进行更新。换言之,用户应用进程和内核模式进程可分别并行地执行以下操作:对第二组队列中的I/O提交队列的虚拟存储器写入操作和对第一组队列中的I/O提交队列的虚拟存储器写入操作。
图3示出可用于实现本系统和方法的实施例的示例计算机架构。该示例性计算机架构可用于实现本公开中描述的一个或更多个组件,包括但不限于主机计算机系统。架构300的一个实施例包括:系统总线320,用于传送信息;处理器310,与总线320连接以对信息进行处理。架构300还包括与总线320连接的随机存取存储器(RAM)或其他动态存储装置325(此处称为主存储器),用于存储信息和将由处理器310执行的指令。主存储器325还可用于在由处理器执行指令期间中存储临时变量或其他中间信息。架构300还可包括与总线320连接的只读存储器(ROM)和/或其他静态存储装置326,用于存储静态信息和由处理器310使用的指令。
数据存储装置321(诸如磁盘或光盘)及其对应驱动器也可连接到架构300以存储信息和指令。架构300还可通过I/O接口330连接到第二I/O总线350。多个I/O装置可与I/O总线连接,包括:显示装置343、输入装置(例如,字幕数字输入装置342、光标控制装置341和/或触摸屏装置)。
通信装置340允许通过网络访问其他计算机(例如,服务器或客户端)。通信装置340可包括一个或更多个调制解调器、网络接口卡、无线网络接口或其他接口装置(诸如用于连接到以太网、令牌环网或其他类型的网络的接口装置)。
此处的详细描述的一些部分是以对计算机存储器中的数据位的操作的算法和符号表示的形式呈现的。这些算法描述和表示是数据处理领域技术人员用来最有效地将他们的工作的实质传达给其他本领域技术人员的手段。此处的算法通常被认为是导致所需结果的自洽的序列的步骤。所述步骤是那些需要物理量的物理操作的。通常(虽然不必),这些物理量采用能够被进行存储、传输、组合、比较和其他操作的电信号或磁信号形式。主要出于通用的原因,将这些信号称为位、值、元素、符号、字符、术语、数字等已被多次证明是方便的。
然而,应该记住的是,所有这些及类似的术语将与适当的物理量关联,并仅仅是应用于这些量的方便标签。除非另有特别指出,否则正如从下面的描述显而易见,可以理解的是贯穿描述始终,使用诸如“处理”或“计算”或“运算”或“确定”或“显示”等的术语的讨论是指计算机系统或类似电子计算装置的动作和处理,其中,所述计算机系统或类似电子计算装置对表示为计算机系统的寄存器和存储器内的物理(电子)量的数据进行操作并将其转换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储器、传输或显示装置内的物理量的其他数据。
本公开还涉及一种用于执行此处操作的设备。该设备可以是专门为所需的目的而构造的,或者它可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可存储在计算机可读存储介质(诸如但不限于,任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或任何类型的适合于存储电子指令的介质,并且均被连接到计算机系统总线)中。
此处呈现的算法本质上不涉及任何具体的计算机或其他设备。各种通用系统、消息服务器或个人计算机可根据此处的教导使用程序,或构造更专用的设备来执行所需的方法步骤可能被证明是更方便。各种这些系统所需的结构出现在上面的描述中。各种编程语言可用于实现如此处描述的公开的教导。
此外,代表性示例和从属权利要求的各种特征可以以没有被具体且明确列举出的方式结合,以提供本教导的另外的实施例。图中所示的组件的尺寸和形状被设计为帮助理解本教导如何被实践,并且不限制在示例中示出的尺寸和形状。

Claims (18)

1.一种使得能够通过主机计算机系统对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问的方法,主机计算机系统包括被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间,所述方法包括:
通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;
向NVMe装置的控制器提供第一组队列的位置地址和大小;
从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;
响应于接收到对于用户模式访问的请求执行下列操作:
通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,
向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。
2.如权利要求1所述的方法,其中:
第一组队列至少包括管理提交队列和管理完成队列,
第一组队列和第二组队列中的每组至少包括输入/输出提交队列和输入/输出完成队列。
3.如权利要求2所述的方法,其中,来自所述用户应用进程的用户模式访问包括:在NVMe装置上执行输入/输出操作,同时绕过内核空间中的块输入/输出层。
4.如权利要求3所述的方法,还包括:
对第二组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第二组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
5.如权利要求4所述的方法,还包括:
对第一组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第一组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
6.如权利要求5所述的方法,其中,对第二组队列中的输入/输出提交队列的虚拟存储器写入操作与对第一组队列中的输入/输出提交队列的虚拟存储器写入操作被并行执行。
7.一种非暂时性的存储有计算机可执行指令的计算机可读介质,其中,当所述计算机可执行指令被具有被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间的主机计算机系统执行时,使得能够通过使主机计算机系统执行至少下列步骤来对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问:
通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列;
向NVMe装置的控制器提供第一组队列的位置地址和大小;
从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求;
响应于接收到对于用户模式访问的请求执行下列操作:
通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,
向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。
8.如权利要求7所述的非暂时性的计算机可读介质,其中:
第一组队列至少包括管理提交队列和管理完成队列,
第一组队列和第二组队列中的每组至少包括输入/输出提交队列和输入/输出完成队列。
9.如权利要求8所述的非暂时性的计算机可读介质,其中,来自所述用户应用进程的用户模式访问包括:在NVMe装置上执行输入/输出操作,同时绕过内核空间中的块输入/输出层。
10.如权利要求9所述的非暂时性的计算机可读介质,在其上还存储有使主机计算机系统进行以下操作的计算机可执行指令:
对第二组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第二组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
11.如权利要求10所述的非暂时性的计算机可读介质,在其上还存储有使主机计算机系统进行以下操作的计算机可执行指令:
对第一组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第一组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
12.如权利要求11所述的非暂时性的计算机可读介质,其中,所述计算机可执行指令还使主机计算机系统将对第二组队列中的输入/输出提交队列的虚拟存储器写入操作与对第一组队列中的输入/输出提交队列的虚拟存储器写入操作并行执行。
13.一种主机计算机系统,其中,所述主机计算机系统支持对使用NVMe接口的NVMe装置同时进行内核模式访问和用户模式访问,所述系统包括:
操作系统,被配置为:
运行用户应用进程和内核模式进程,
创建被至少划分为内核空间以及一个或更多个用户空间的主机存储器空间;
存储器装置驱动器,被配置为:
通过至少保留内核空间中的第一范围的存储器地址来创建第一组的一个或更多个队列,
向NVMe装置的控制器提供第一组队列的位置地址和大小,
从主机计算机系统上运行的用户应用进程接收对于用户模式访问的请求,
响应于接收到对于用户模式访问的请求执行下列操作:
通过至少保留为由所述用户应用进程使用而映射的第二范围的存储器地址来创建第二组的一个或更多个队列,
向所述用户应用进程和NVMe装置的控制器提供第二组队列的位置地址和大小。
14.如权利要求13所述的主机计算机系统,其中:
第一组队列至少包括管理提交队列和管理完成队列,
第一组队列和第二组队列中的每组至少包括输入/输出提交队列和输入/输出完成队列。
15.如权利要求14所述的主机计算机系统,其中,来自所述用户应用进程的用户模式访问包括:在NVMe装置上执行输入/输出操作,同时绕过内核空间中的块输入/输出层。
16.如权利要求15所述的主机计算机系统,还包括:所述用户应用进程,其中,所述用户应用进程被配置为:
对第二组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第二组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
17.如权利要求16所述的主机计算机系统,还包括:所述内核模式进程,其中,所述内核模式进程被配置为:
对第一组队列中的输入/输出提交队列执行输入/输出命令的虚拟存储器写入操作;
对与第一组队列中的输入/输出提交队列对应的提交尾部门铃寄存器的值进行更新。
18.如权利要求17所述的主机计算机系统,其中,所述用户应用进程和所述内核模式进程被配置为分别并行地执行以下操作:对第二组队列中的输入/输出提交队列的虚拟存储器写入操作和对第一组队列中的输入/输出提交队列的虚拟存储器写入操作。
CN201710178710.7A 2016-04-22 2017-03-23 同时进行内核模式访问和用户模式访问的方法 Active CN107305534B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662326459P 2016-04-22 2016-04-22
US62/326,459 2016-04-22
US15/298,053 US10379745B2 (en) 2016-04-22 2016-10-19 Simultaneous kernel mode and user mode access to a device using the NVMe interface
US15/298,053 2016-10-19

Publications (2)

Publication Number Publication Date
CN107305534A true CN107305534A (zh) 2017-10-31
CN107305534B CN107305534B (zh) 2022-02-18

Family

ID=60089010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710178710.7A Active CN107305534B (zh) 2016-04-22 2017-03-23 同时进行内核模式访问和用户模式访问的方法

Country Status (5)

Country Link
US (1) US10379745B2 (zh)
JP (1) JP7008422B2 (zh)
KR (1) KR20170121046A (zh)
CN (1) CN107305534B (zh)
TW (1) TWI747886B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107861894A (zh) * 2017-11-03 2018-03-30 郑州云海信息技术有限公司 NVMe协议的队列命令的执行方法、装置及存储介质
CN108762682A (zh) * 2018-05-31 2018-11-06 郑州云海信息技术有限公司 一种线程模型
CN109740310A (zh) * 2018-12-29 2019-05-10 北京嘉楠捷思信息技术有限公司 用于嵌入式操作系统的内核对象访问方法和装置
CN110221783A (zh) * 2019-06-12 2019-09-10 西安奥卡云数据科技有限公司 一种NVMe-oF用户空间直通后端存储的方法及系统
CN110247860A (zh) * 2018-03-09 2019-09-17 三星电子株式会社 多模式和/或多速度NVMe-oF装置
CN111630501A (zh) * 2018-01-19 2020-09-04 美光科技公司 访问非易失性存储器装置的用户当中的性能分配
WO2022021372A1 (zh) * 2020-07-31 2022-02-03 华为技术有限公司 一种处理器、ufs控制方法及计算机系统
CN114816701A (zh) * 2022-04-22 2022-07-29 苏州浪潮智能科技有限公司 线程管理方法、电子设备及存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113407244A (zh) * 2016-03-01 2021-09-17 华为技术有限公司 一种级联板、ssd远程共享访问的系统和方法
US11188496B2 (en) * 2018-09-13 2021-11-30 Toshiba Memory Corporation System and method for storing data using ethernet drives and ethernet open-channel drives
US10831684B1 (en) * 2019-07-31 2020-11-10 EMC IP Holding Company, LLC Kernal driver extension system and method
US11438497B2 (en) * 2019-12-13 2022-09-06 Sony Group Corporation Managing multiple image devices
US11604743B2 (en) * 2020-08-31 2023-03-14 International Business Machines Corporation Input/output queue hinting for resource utilization
CN112035071B (zh) * 2020-09-27 2023-06-06 万兴科技(湖南)有限公司 磁盘数据读取方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
CN101150486A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝缓冲区队列网络数据接收的管理方法
US20100174946A1 (en) * 2009-01-02 2010-07-08 International Business Machines Corporation Method for Debugging a Hang Condition in a Process Without Affecting the Process State
CN102902909A (zh) * 2012-10-10 2013-01-30 北京奇虎科技有限公司 一种防止文件被篡改的系统和方法
CN104094231A (zh) * 2012-03-26 2014-10-08 甲骨文国际公司 用于支持无限带网络中的虚拟机的动态迁移的系统和方法
CN104239225A (zh) * 2014-09-04 2014-12-24 浪潮(北京)电子信息产业有限公司 一种管理异构混合内存的方法及装置
CN104283938A (zh) * 2013-07-08 2015-01-14 英特尔公司 用于在存储服务器之间复制数据的技术

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317717A (en) * 1987-07-01 1994-05-31 Digital Equipment Corp. Apparatus and method for main memory unit protection using access and fault logic signals
US5771383A (en) * 1994-12-27 1998-06-23 International Business Machines Corp. Shared memory support method and apparatus for a microkernel data processing system
US6834325B1 (en) * 1999-07-16 2004-12-21 Storage Technology Corporation System and method for providing client-directed staging to improve non-sequential access performance in a caching disk storage system
US7032088B2 (en) * 2003-08-07 2006-04-18 Siemens Corporate Research, Inc. Advanced memory management architecture for large data volumes
US20050144422A1 (en) * 2003-12-30 2005-06-30 Mcalpine Gary L. Virtual to physical address translation
US7707362B2 (en) * 2005-06-30 2010-04-27 Seagate Technology Llc Context-free data transactions between dual operating systems embedded within a data storage subsystem
US7845009B2 (en) * 2006-05-16 2010-11-30 Intel Corporation Method and apparatus to detect kernel mode rootkit events through virtualization traps
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US9389952B2 (en) * 2008-06-18 2016-07-12 Super Talent Technology, Corp. Green NAND SSD application and driver
US9047351B2 (en) * 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9069658B2 (en) * 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
US9015353B2 (en) * 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
US9489316B2 (en) * 2013-03-15 2016-11-08 Freescale Semiconductor, Inc. Method and device implementing execute-only memory protection
US9311230B2 (en) * 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US9665296B2 (en) * 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
KR102308777B1 (ko) * 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
EP2985690B1 (en) * 2014-08-11 2018-07-18 Dot Hill Systems Corporation Method and apparatus for sequential stream i/o processing
CN104536701B (zh) * 2014-12-23 2018-02-06 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统
KR101936950B1 (ko) * 2016-02-15 2019-01-11 주식회사 맴레이 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
CN101150486A (zh) * 2007-11-15 2008-03-26 曙光信息产业(北京)有限公司 一种零拷贝缓冲区队列网络数据接收的管理方法
US20100174946A1 (en) * 2009-01-02 2010-07-08 International Business Machines Corporation Method for Debugging a Hang Condition in a Process Without Affecting the Process State
CN104094231A (zh) * 2012-03-26 2014-10-08 甲骨文国际公司 用于支持无限带网络中的虚拟机的动态迁移的系统和方法
CN102902909A (zh) * 2012-10-10 2013-01-30 北京奇虎科技有限公司 一种防止文件被篡改的系统和方法
CN104283938A (zh) * 2013-07-08 2015-01-14 英特尔公司 用于在存储服务器之间复制数据的技术
CN104239225A (zh) * 2014-09-04 2014-12-24 浪潮(北京)电子信息产业有限公司 一种管理异构混合内存的方法及装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107861894A (zh) * 2017-11-03 2018-03-30 郑州云海信息技术有限公司 NVMe协议的队列命令的执行方法、装置及存储介质
CN107861894B (zh) * 2017-11-03 2021-08-31 郑州云海信息技术有限公司 NVMe协议的队列命令的执行方法、装置及存储介质
CN111630501A (zh) * 2018-01-19 2020-09-04 美光科技公司 访问非易失性存储器装置的用户当中的性能分配
CN110247860B (zh) * 2018-03-09 2022-09-27 三星电子株式会社 多模式和/或多速度NVMe-oF装置
CN110247860A (zh) * 2018-03-09 2019-09-17 三星电子株式会社 多模式和/或多速度NVMe-oF装置
US11588261B2 (en) 2018-03-09 2023-02-21 Samsung Electronics Co., Ltd. Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) device
CN108762682A (zh) * 2018-05-31 2018-11-06 郑州云海信息技术有限公司 一种线程模型
CN109740310A (zh) * 2018-12-29 2019-05-10 北京嘉楠捷思信息技术有限公司 用于嵌入式操作系统的内核对象访问方法和装置
CN109740310B (zh) * 2018-12-29 2024-06-07 嘉楠明芯(北京)科技有限公司 用于嵌入式操作系统的内核对象访问方法和装置
CN110221783A (zh) * 2019-06-12 2019-09-10 西安奥卡云数据科技有限公司 一种NVMe-oF用户空间直通后端存储的方法及系统
WO2022021372A1 (zh) * 2020-07-31 2022-02-03 华为技术有限公司 一种处理器、ufs控制方法及计算机系统
CN114816701A (zh) * 2022-04-22 2022-07-29 苏州浪潮智能科技有限公司 线程管理方法、电子设备及存储介质
CN114816701B (zh) * 2022-04-22 2024-10-22 苏州浪潮智能科技有限公司 线程管理方法、电子设备及存储介质

Also Published As

Publication number Publication date
TWI747886B (zh) 2021-12-01
JP2017194959A (ja) 2017-10-26
CN107305534B (zh) 2022-02-18
JP7008422B2 (ja) 2022-01-25
TW201738763A (zh) 2017-11-01
US20170308298A1 (en) 2017-10-26
KR20170121046A (ko) 2017-11-01
US10379745B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
CN107305534A (zh) 对使用NVMe接口的装置同时进行的内核模式和用户模式访问
EP3698294B1 (en) Machine learning runtime library for neural network acceleration
CN104583933B (zh) Gpu和fpga组件之间的直接通信的方法和系统
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
DE112005001512B4 (de) Vorrichtung und Verfahren für den Hochleistungs- Zugriff auf einen flüchtigen Plattenlaufwerkspeicher unter Einsatz einer integrierten Direkt-Speicherzugriffs-Einrichtung
US9304938B2 (en) Storage device and data transferring method thereof
CN111427808A (zh) 用于管理存储设备和主机单元之间的通信的系统和方法
CN105830026A (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US8966130B2 (en) Tag allocation for queued commands across multiple devices
US9317445B2 (en) Rapid memory buffer write storage system and method
CN106776358A (zh) Dimm ssd寻址性能技术
CN101243396A (zh) 用于在虚拟化环境中支持通用串行总线装置的方法和设备
CN110275840A (zh) 在存储器接口上的分布式过程执行和文件系统
CN104123236A (zh) 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统
US6212543B1 (en) Asymmetric write-only message queuing architecture
CN116670661A (zh) 图形处理器的缓存访问方法、图形处理器及电子设备
CN107944564B (zh) 深度学习作业处理方法、装置、设备及存储介质
RU2643622C1 (ru) Вычислительный модуль
CN115563053A (zh) 高性能片上内存控制器及其执行的方法
US7333106B1 (en) Method and apparatus for Z-buffer operations
US9715466B1 (en) Processing input/output operations in a channel using a control block
US9841912B1 (en) Memory efficient block allocation map to support online growth of different storage attributes
CN105320610B (zh) 数据储存装置及操作数据储存装置的方法
US12032844B2 (en) Management of flash storage media
CN107391447A (zh) 一种电脑加速系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant