CN109983443B - 实现分叉非易失性存储器快速驱动器的技术 - Google Patents

实现分叉非易失性存储器快速驱动器的技术 Download PDF

Info

Publication number
CN109983443B
CN109983443B CN201680091055.5A CN201680091055A CN109983443B CN 109983443 B CN109983443 B CN 109983443B CN 201680091055 A CN201680091055 A CN 201680091055A CN 109983443 B CN109983443 B CN 109983443B
Authority
CN
China
Prior art keywords
driver
kernel
memory
queue
space
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.)
Active
Application number
CN201680091055.5A
Other languages
English (en)
Other versions
CN109983443A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109983443A publication Critical patent/CN109983443A/zh
Application granted granted Critical
Publication of CN109983443B publication Critical patent/CN109983443B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/10Program control for peripheral devices
    • 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
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

系统、装置和方法可以提供分叉驱动器以管理一个或多个非易失性存储器(NVM)快速(NVMe)设备和/或文件系统储存器。更具体地,系统、装置和方法可以使用包括用户空间驱动器和内核空间驱动器的分叉NVMe驱动器来提供确保高输入输出性能的方式。系统、装置和方法可以提供分叉驱动器,以基于应用程序和/或由应用程序使用的文件的读取强度或写入强度中的一个或多个,将访问请求引导到用户空间驱动器和/或内核空间驱动器,以提供每秒高交易(TPS)性能。

Description

实现分叉非易失性存储器快速驱动器的技术
技术领域
实施例总体上涉及非易失性存储器技术。具体而言,实施例涉及使用分叉非易失性存储器(NVM)快速(NVMe)驱动器来提供高输入输出性能以管理一个或多个文件系统储存和NVMe设备储存的方式。
背景技术
非易失性存储器(NVM)快速(NVMe)技术允许在由主机硬件和软件利用的现代固态驱动器(SSD)中发现的并行级别。与可包括多个长命令队列的先前逻辑设备接口相比,NVMe技术可用于在数据中心中存储数据,减少输入输出开销并提供各种性能改进以及减少的等待时间。然而,由于资源需求应用(例如,读密集型应用和/或写密集型应用),现有NVMe解决方案的软件栈可能面临满足不断增长的性能要求(例如,功耗和处理能力)的挑战。
附图说明
通过阅读以下说明书和所附权利要求,并参考以下附图,实施例的各种优点对于本领域技术人员将变得显而易见,其中:
图1是根据实施例的分叉非易失性存储器(NVM)快速(NVMe)驱动器架构的示例的图示;
图2是根据实施例的初始化内核空间驱动器的方法的示例的流程图;
图3是根据实施例的初始化分叉驱动器的方法的示例的流程图;
图4是根据实施例的用于数据库应用程序的每秒高读取事务(TPS)的示例的框图;
图5是根据实施例的具有大文件访问使用的应用的示例的框图;
图6是根据实施例的共享NVMe设备的两个独立应用的示例的框图;
图7是根据实施例的处理器的示例的框图;以及
图8是根据实施例的计算系统的示例的框图。
具体实施方式
图1示出了根据实施例的分叉非易失性存储器(NVM)快速(NVMe)驱动器架构100的示例的图示。与可能在中断模式下工作的传统内核驱动器相比,可以使用用户空间NVMe轮询模式驱动器(例如,INTEL的储存性能开发工具包),以减轻由于NVMe固态驱动器(SSD)性能提升而导致的中央处理单元(CPU)利用率瓶颈,并利用由快速储存后端(例如,结构NVMF上的NVMe储存设备和/或NVMe)提供的性能改进。
分叉NVMe驱动器架构100可以包括主机存储器102,主机存储器102包括易失性存储器或非易失性存储器中的一个或多个。非易失性存储器可以包括文件系统设备储存器104和块设备储存器106(例如,一个或多个NVMe设备)。分叉NVMe驱动器架构100还可以包括通信地耦合到包括文件系统设备储存器104和块设备储存器106的非易失性存储器的存储器控制器108(例如,NVMe控制器)。在一个实施方式中,主机存储器102包括文件系统设备储存器104和块设备储存器106中的一个或多个的至少一部分,而文件系统设备储存器104或块设备储存器106中的一个或多个的另一部分可以由一个或多个应用程序110、112使用。
存储器控制器108(例如,NVMe控制器)可以使用分叉驱动器114来处理访问非易失性存储器(包括文件系统设备储存器104或块设备储存器106中的一个或多个)的一个或多个存储器访问请求。分叉驱动器114可以包括通信地耦合到内核文件系统118的内核空间驱动器116,以及经由块服务守护进程122通信地耦合到块设备储存器106(例如,一个或多个NVMe设备)的用户空间驱动器120(例如,INTEL储存性能开发包(SPDK)NVMe驱动器),和配置工具124(例如,带外配置工具或NVMe配置工具以使用专用信道来管理网络设备)。对于带外管理,分叉NVMe驱动器架构100可以将数据与命令和事件分开,使得数据可以通过主机到控制器接口传输,而命令和事件可以通过管理端口以太网电缆来传输。
分叉NVMe驱动器架构100可以包括驱动器分叉器(例如,可配置逻辑和/或固定功能硬件逻辑)以生成分叉驱动器114。驱动器分叉器可以在内核(例如,操作系统)中执行、管理和/或驻留。驱动器分叉器可以取回用于配置分叉驱动器114、内核空间驱动器116和用户空间驱动器120的用户配置信息。用户配置信息可以包括标识多个管理队列对126的元数据(例如,提交队列和完成队列)、输入输出队列128、130、132、134和多个分叉器命名空间对,该分叉器命名空间对包括用于内核空间驱动器116或用户空间驱动器120中的一个或多个的内核命名空间136和用户命名空间138。可以从被修改以使用分叉驱动器114的一个或多个应用程序110、112接收一个或多个存储器访问请求。一个或多个应用程序110、112可以包括读密集型应用程序或写密集型应用程序中的一个或多个。
驱动器分叉器可以初始化内核空间驱动器116。内核空间驱动器116可以提供对使用内核文件系统118来访问文件系统储存设备(例如,块设备储存器106)的支持。驱动器分叉器可以在主机存储器102的共享存储器空间140中生成数据结构(例如,分叉数据结构)。主机存储器102可以包括内核,其中内核通过分叉驱动器来管理内核空间驱动器。共享存储器空间140可以由分叉器命名空间对访问,分叉器命名空间对包括内核命名空间和用户命名空间。数据结构可以包括数据结构元数据,其包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。共享存储器空间140可以由分叉器命名空间对(包括内核命名空间136和用户命名空间138)访问。
驱动器分叉器可以在主机存储器102中生成内核命名空间136、一个或多个内核队列对126、128、130、用户命名空间138和一个或多个用户空间队列对132、134。驱动器分叉器可以将内核命名空间136和一个或多个内核队列对126、128、130分配给内核空间驱动器116,使用标识内核命名空间136和一个或多个内核队列对126、128、130的内核队列对元数据来更新数据结构,并向内核注册设备,其中该设备是NVMe块设备储存器。
一个或多个内核队列对126、128、130可以包括管理队列对126中的一个或多个以及内核输入输出队列对128、130中的一个或多个,管理队列对126包括管理提交队列和管理完成队列,内核输入输出队列对128、130可以包括内核提交队列和内核完成队列。一个或多个用户空间队列对132、134可以包括用户空间提交队列和用户空间完成队列。可以经由块服务守护进程114访问块设备储存器106。
驱动器分叉器可以使用数据结构元数据初始化用户空间驱动器120。用户空间驱动器120可以是轮询模式驱动器。驱动器分叉器可以取回用户配置信息和数据结构元数据,基于用户配置信息和数据结构元数据生成设备,利用用户空间队列对元数据更新数据结构,并向用户空间驱动器120注册到设备的块设备接口(例如,块服务守护进程114)。
在初始化之后,内核空间驱动器116和用户空间驱动器120被绑定到各个设备、文件系统设备储存器或NVMe块设备储存器中的一个或多个。分叉驱动器114和/或内核(例如,操作系统)可以将读取请求和写入请求引导到内核空间驱动器116或用户空间驱动器120中的一个或多个,以执行相对应的读取操作和/或写入操作。用户空间驱动器120可以通信地耦合到存储器控制器108(例如,NVMe控制器)。
分叉驱动器114可以从一个或多个应用程序110、112接收一个或多个存储器访问请求以访问文件系统设备储存器或NVMe块设备储存器中的一个或多个,处理一个或多个存储器访问请求,基于一个或多个存储器访问请求使用更新内核命名空间136、用户命名空间138、一个或多个内核队列对126、128、130或一个或多个用户空间队列对132、134中的一个或多个,并且使用存储器控制器108(例如,NVMe控制器)同步共享存储器空间140中的数据结构。
当一个或多个存储器访问请求是读取请求时,分叉驱动器114、内核和/或内核空间驱动器116可以将一个或多个存储器访问请求引导到用户空间驱动器120。在一个实施例中,内核空间驱动器116可以操作用户空间驱动器120的控制器。当一个或多个存储器访问请求是写入请求时,分叉驱动器114、内核和/或内核空间驱动器116可以将一个或多个存储器访问请求引导到内核空间驱动器116。
可以基于用户的配置信息(例如,一个或多个应用程序和应用程序类型,包括读密集型和/或写密集型应用程序)通过内核文件系统110向内核空间驱动器116和/或通过分叉驱动器114向用户空间驱动器120(例如,SPDK磁盘驱动器)发送磁盘读/写命令。因为传统实现的NVMe驱动器可以独占地控制(例如,占用)NVMe设备,所以例如在没有实现分叉驱动器114的情况下存储器控制器108(例如,NVMe控制器)可能不会被另一个驱动器(例如,内核驱动器)使用(例如,共享)。
应用程序110(例如,传统储存应用程序)可以将内核空间驱动器116用于文件系统储存,而另一个应用程序112(例如,高性能应用程序)可以将用户空间驱动器120用于块设备储存器。应用程序110(例如,传统储存应用程序)和应用程序112(例如,高性能应用程序)都可以受益于使用NVMe设备,例如块设备储存器106。传统储存应用程序(例如应用程序110)可以使用便携式操作系统接口(POSIX)兼容系统调用,而高性能应用程序(例如应用程序112)可以在CPU使用有限的情况下实现更高的每秒输入/输出操作(IOPS)。
内核、分叉驱动器114或内核空间驱动器116可以初始化一个或多个储存设备,包括PCI设备探测,生成一个或多个命名空间和队列对,以及用于相关数据结构的存储器分配。内核空间驱动器116可以通过用户的配置信息声明分叉器命名空间136、138和输入输出队列对128、130、132、134。例如,用户可以将内核命名空间136和内核队列对126、128、130分配给内核驱动器,因此内核驱动器可以探测内核命名空间136,然后,为内核队列对126、128、130分配中断例程功能。内核空间驱动器116可以将PCI设备信息(包括分叉器命名空间136、138和内核队列对126、128、130信息)以及用户配置信息更新到共享存储器140中。
当启动(例如,初始化)用户空间驱动器120时,用户空间驱动器120可以不执行PCI设备初始化工作(例如,任务),但是可以从共享存储器空间140读取PCI设备信息并生成逻辑NVMe设备。用户空间驱动器120可以使用分配给用户空间驱动器120的指定命名空间信息和输入输出队列。输入输出队列128、130、132、134可以用于输入输出提交和完成轮询。分叉驱动器114运行时开销可能很小或不存在,并且可以改善使用文件系统的应用程序的磁盘输入输出性能。
在一个示例中,尝试共享NVMe设备(例如,块设备储存器106)的内核空间驱动器116和用户空间驱动器120(例如,NVMe驱动器)可以操作以支持可以使用文件系统118(例如,传统储存器,文件系统储存密集型应用程序)的应用程序110。根据应用程序是读密集型还是写密集型,NVMe设备读取性能可能是应用程序性能的关键因素。通常,与NVMe设备读取相比,NVMe设备写入可能具有更多的文件系统依赖性。使用更多读取操作和更少写入操作的应用程序(例如,块设备储存器106)可以利用分叉驱动器114。
在另一个示例中,应用程序(例如,应用程序112)可能相比写密集型更多为读密集型(例如,诸如数据库应用程序的高性能储存应用程序)。应用程序112可以将本地和/或分布式储存用于数据去重系统中的哈希表。当没有重复时,可以写入哈希密钥一次,但是在哈希表查找期间每次都读取。因此,哈希表查找的性能可能是数据去重系统性能的关键因素。数据库的本地和/或分布式储存可以用于元数据和/或数据库原始数据。元数据可以存储一次,但是多次读取。并且元数据储存的读取性能可以是数据库性能的关键。应用程序112可以将分叉驱动器114配置为向用户空间驱动器(例如,SPDK NVMe驱动器)发送读取请求。分叉驱动器114可以向内核空间文件系统发送写入请求。当使用分叉驱动器114时,NVMe写入请求可以通过文件系统被引导到内核空间驱动器,并且NVMe读取请求可以通过块接口被引导到用户空间驱动器,并且使用共享存储器来同步NVMe读/写地址的映射。用户空间驱动器可以保证NVMe读取性能。与处理NVMe读取的传统内核空间驱动器相比,在共享存储器中维护映射的运行时开销可以很小。开发用户空间文件系统的成本和时间可能超过NVMe读/写同步的开发开销/成本。
在又一示例中,诸如应用程序110、112的两个应用程序可以共享NVMe设备,诸如块设备储存器106,其中应用程序110使用来自内核文件系统118的文件系统支持,并且应用程序112不需要文件系统支持。分叉驱动器114可以将来自应用程序110的NVMe读/写命令引导到内核空间驱动器116以使用内核文件系统118,并将来自应用程序112的NVMe读/写命令引导到用户命名空间138以使用用户空间驱动器120。
使用分叉驱动器114可以导致没有或有限的运行时开销来初始化配置而没有开发开销/成本。由于传统内核驱动器和用户空间驱动器(例如,NVMe驱动器)之间的硬件寄存器冲突,在没有使用分叉驱动器(例如分叉驱动器114)的益处的情况下,两个或多个应用程序可能无法使用多个名称空间来共享一个或多个NVMe设备(例如,硬件)。
在另一示例中,可以开发和实现用户空间文件系统以使用用户命名空间中的NVMe驱动器(例如,INTEL SPDK NVMe驱动器)来尝试加速NVMe读取或读取和写入操作。然而,实现用户空间文件系统的开发可能相当耗时且高成本,存在文件系统的不稳定和质量的风险。作为另一示例,使用传统的内核空间驱动器来使用成熟的内核空间文件系统执行NVMe写入和NVMe读取,可能无法保证NVMe读取和/或NVMe读取和写入操作性能。而且,要是不使用分叉驱动器(例如分叉驱动器114)来解决的话,可能需要相对昂贵的对应部件(例如,更快的CPU,9-10xCPU)来克服缺陷并实现最大的NVMe硬件性能。开发用户空间文件系统和/或使用性能更高的部件(例如,更快的CPU,9-10xCPU)也可能由于任何一种方法导致的低效软件堆栈而增加成本。
在又一示例中,用户空间驱动器120(例如,NVMe驱动器)可以服务于一个或多个虚拟机,并且可以向储存网络中的NVMe设备(诸如块设备储存器106)提供块服务。广泛使用NVMe驱动器可以限制到块接口类型设备的储存,而内核空间驱动器116可以用于由内核提供并且可以由诸如应用程序110的应用程序使用的特征(例如,文件系统支持)。但是,针对具有低CPU利用率且没有或有限的文件系统要求的高性能读取而设计的应用程序(例如应用程序112)可以使用用户空间驱动器120,而内核空间驱动器和用户空间驱动器120都不能满足可能需要相对相等的文件系统(例如,写密集操作)支持和块级设备支持的应用程序的要求。
图2是根据实施例的初始化内核空间驱动器的方法的示例的流程图。方法200可以实现为存储在非暂时性机器或计算机可读储存介质中(例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)、可配置逻辑中(例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))、使用电路技术的固定功能硬件逻辑中(例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术)、或其任何组合中的逻辑指令集中的模块或相关部件。例如,用于执行方法200中所示的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,包括诸如JAVA、SMALLTALK、C++等的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言的传统的过程编程语言。
所示的处理块202提供用于初始化耦合到内核文件系统的内核驱动器。所示的处理块204提供用于加载用户的配置信息,包括队列和命名空间划分信息。所示的处理块206提供用于生成多个NVMe硬件队列对,并且当命名空间不存在时,在主机存储器的共享存储器空间中的数据结构中生成一个或多个命名空间(例如,一个或多个分叉器命名空间对)。主机存储器可以包括易失性存储器或非易失性存储器中的一个或多个,其中主机存储器包括内核,其中内核通过分叉驱动器管理内核空间驱动器。非易失性存储器可以包括文件系统设备储存器和NVMe块设备储存器。共享存储器空间可以由包括内核命名空间和用户命名空间的分叉器命名空间对、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对访问。所示的处理块206还提供用于在主机存储器中生成内核命名空间、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对。所示的处理块208提供用于将内核命名空间和一个或多个内核队列对分配给内核空间驱动器。所示的处理块210提供用于为命令完成过程分配输入输出队列中断例程。所示的处理块212提供用于将队列对分配给用户空间驱动器。所示的处理块214提供用于将存储器控制器标识结构(例如,NVMe控制器标识结构)、输入输出队列结构和命名空间标识数据结构输出到共享存储器,并利用标识内核命名空间和一个或多个内核队列对的内核队列对元数据来更新数据结构。所示的处理块216提供用于向内核注册设备,其中该设备是NVMe块设备储存器。
现在转向图3,示出了根据实施例的初始化分叉驱动器的方法300的流程图的示例。分叉驱动器可以如上关于如图1所示的分叉驱动器114所描述的那样。方法300可以被实现为存储在以下中的逻辑指令集中的模块或相关部件:非暂时性机器或计算机可读储存介质(例如RAM、ROM、PROM、固件、闪存等)、可配置逻辑(例如PLA、FPGA、CPLD)、使用电路技术的固定功能硬件逻辑(例如ASIC、CMOS或TTL技术)、或其任何组合。
所示的处理块302提供用于使用来自共享存储器空间的数据结构元数据来提供初始化用户空间驱动器。所示的处理块304提供用于从共享存储器加载/取回用户的配置信息和存储器控制器标识信息(例如,NVMe控制器标识信息),包括例如数据结构元数据,包括存储器控制器标识结构(例如,NVMe控制器标识结构)。所示的处理块306提供用于加载输入输出队列数据结构、输入输出队列结构和命名空间标识数据结构、以及内核队列对元数据。所示的处理块308提供用于基于用户配置信息和数据结构元数据(例如,命名空间信息)生成设备(例如,NVMe块设备)。用户空间驱动器可以是轮询模式驱动器。所示的处理块310提供用于轮询线程以进行输入输出和完成更新,以及利用用户空间队列对元数据来更新数据结构。所示的处理块312提供用于向用户空间驱动器注册到设备的块设备接口(例如,块服务守护进程),其中该设备是NVMe块设备储存器。
图4是根据实施例的用于数据库应用程序的每秒高读取事务(TPS)的示例的框图400。分叉驱动器402可以向用户空间驱动器404和内核空间驱动器406提供对NVMe设备(诸如以上关于如图1所示的块设备储存器106所描述的那样)的同时访问,以为数据库应用程序408提供高TPS。用户空间驱动器404和内核空间驱动器406可以共享设备的命名空间410,使得用户空间驱动器404和内核空间驱动器406可以读/写逻辑块寻址(LBA)(例如,磁盘容量的偏移,指定存储在储存设备上的数据块的位置)。内核空间驱动器406可以使用内核文件系统412为小型专用数据库应用程序文件(例如,平均文件容量<1GB)(例如预写日志文件414和重做日志文件416)提供读/写支持。对于非常大的数据库应用程序文件(例如,平均文件容量>=1GB),例如数据库排序字符串表(SST)文件418,数据库应用程序408可以使用内核空间驱动器406进行写入,并且数据库应用程序408可以使用用户空间驱动器404进行读取。指导使用用户空间驱动器404和内核空间驱动器406中的哪一个可以基于应用程序和/或由应用程序使用的文件的读取强度或写入强度中的一个或多个以增加读取TPS(例如,用于读取密集型工作量)。
图5是根据实施例的具有大文件访问使用的应用程序502的示例的框图500。分叉驱动器504可以包括用户空间驱动器506和内核空间驱动器508。应用程序502可以使用大文件访问来存储(例如,写入)和访问(例如,读取)可能是本地的而不是远程的键值引擎510中的元数据。使用分叉驱动器504,NVMe设备可以配置有多个命名空间,包括例如内核命名空间512,其可以用于使用内核文件系统514的键值引擎后端储存(例如,小容量文件,平均文件容量<1GB);和用户命名空间516,其可以用于使用块设备储存器的数据储存(例如,对于大文件,平均文件容量>=1GB)。块设备储存器可以如上关于如图1所示的块设备储存器106所描述的那样。
图6是根据实施例的共享NVMe设备的两个独立应用程序602、604的示例的框图600。NVMe设备可以如上关于如图1所示的块设备储存器106所描述的那样。分叉驱动器606可以包括具有内核文件系统610支持的内核空间驱动器608和用户空间驱动器612,并提供和/或生成分配给由内核空间驱动器608和用户空间驱动器612服务的各个应用程序602、604的多个逻辑分区,包括内核命名空间614和用户命名空间616。
图7是根据一实施例的处理器核心701的示例的框图700。处理器核心701可以是任何类型的处理器的核心,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或执行代码的其他设备。尽管图7中仅示出了一个处理器核心701,但处理元件可以替代地包括多于一个的图7中所示的处理器核心701。处理器核心701可以是单线程核心,或者对于至少一个实施例,处理器核心701可以是多线程的,因为它可以包括每个核心多于一个的硬件线程上下文(或“逻辑处理器”)。
图7还示出了耦合到处理器核心701的存储器707。存储器707可以是本领域技术人员已知或以其他方式可获得的各种存储器(包括存储器层级结构的各种层)中的任一种。存储器771可以包括将由处理器核心701执行的一个或多个代码713指令,其中代码713可以实现已经讨论过的方法200(图2)和/或方法300(图3)。处理器核心701遵循由代码713指示的程序指令序列。每个指令可以进入前端部分711并由一个或多个解码器721处理。解码器721可以生成作为其输出的微操作,例如预定义格式的固定宽度微操作,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。所示的前端部分711还包括寄存器重命名逻辑725和调度逻辑731,它们通常分配资源并对与转换指令相对应的操作进行排队以便执行。
处理器核心701被示出为包括具有一组执行单元755-1到755-N的执行逻辑751。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。所示出的执行逻辑751执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑761退出代码713的指令。在一实施例中,处理器核心701允许无序执行但需要按顺序退出指令。退出逻辑765可以采用本领域技术人员已知的各种形式(例如,重新排序缓冲器等)。以这种方式,处理器核心701可以在代码713的执行期间至少在由解码器生成的输出、由寄存器重命名逻辑725使用的硬件寄存器和表、以及由执行逻辑751修改的任何寄存器(未示出)方面进行变换。
尽管未在图7中示出,但处理元件可以包括在具有处理器核心701的芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑以及处理器核心701。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。
存储器可以在处理器外部(例如,外部存储器),和/或可以通过例如存储器总线耦合到处理器。另外,存储器可以实现为主存储器。存储器可以包括例如易失性存储器、非易失性存储器等,或其组合。例如,存储器可以包括被配置为一个或多个存储器模块的动态随机存取存储器(DRAM)(例如,双列直插式存储器模块(DIMM)、小型DIMM(SODIMM)等)、只读存储器(ROM)(例如,可编程只读存储器(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)等)、相变存储器(PCM)等,或其组合。存储器可以包括以行和列布置的存储器单元阵列,其被划分成可独立寻址的储存位置。处理器和/或操作系统可以将辅助存储器储存与存储器一起使用以改善性能、容量和灵活性。
非易失性存储器的非限制性示例可以包括以下中的任何一个或组合:固态存储器(诸如平面或三维(3D)NAND闪存或NOR闪存)、3D交叉点存储器、使用硫属化物相变材料(例如,硫属化物玻璃)的储存设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)和磁储存存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉点处,可单独寻址,并且其中位储存基于体电阻的变化。在特定实施例中,具有非易失性存储器的存储器模块可以符合联合电子设备工程委员会(JEDEC)颁布的一个或多个标准,例如JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(本文引用的JEDEC标准可在jedec.org上获得)。
易失性存储器是需要电力来维持介质存储的数据状态的储存介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,存储器模块的DRAM符合JEDEC颁布的标准,例如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F或用于DDR4SDRAM的JESD79-4A(这些标准可在www.jedec.org上获得)。这些标准(和类似标准)可以被称为基于DDR的标准,并且实现这种标准的储存设备的通信接口可以被称为基于DDR的接口。
现在参考图8,示出了根据实施例的计算系统800实施例的框图。图8中所示是包括第一处理元件870和第二处理元件880的多处理器系统800。虽然示出了两个处理元件870和880,但是应该理解,系统800的实施例也可以仅包括一个这样的处理元件。
系统800被示为点对点互连系统,其中第一处理元件870和第二处理元件880经由点对点互连850耦合。应当理解,图8所示的任何或所有互连可以实现为多分支总线而不是点对点互连。
如图8所示,处理元件870和880中的每一个可以是多核处理器,包括第一和第二处理器核心(即,处理器核心874a和874b以及处理器核心884a和884b)。这样的核心874a、874b、884a、884b可以被配置为以类似于上面结合图7所讨论的方式执行指令代码。核心可以执行一个或多个指令,诸如读指令、写指令、擦除指令、移动指令、算术指令、控制指令等,或其组合。例如,核心可以执行一个或多个指令以在高速缓存或寄存器(未示出)与存储器和/或辅助存储器储存之间移动数据(例如,程序数据、操作代码、操作数等),从存储器读取数据,将数据写入存储器,使用数据执行算术运算(例如,加、减、逐位运算、比较等),以执行与数据相关联的控制操作(例如,分支等)等,或其组合。指令可以包括任何代码表示,例如二进制代码、八进制代码和/或十六进制代码(例如、机器语言)、符号代码(例如汇编语言)、十进制代码、字母数字代码、高级编程语言代码等,或其组合。因此,例如,十六进制代码可用于表示x86指令集的操作代码(例如,操作码),其包括用于加法运算的字节值“00”,用于移动操作的字节值“8B”,用于递增/递减操作的字节值“FF”等。
每个处理元件870、880可以包括至少一个共享高速缓存899a、899b。共享高速缓存899a、899b可以存储分别由处理器的一个或多个部件(例如核心874a、874b和884a、884b)使用的数据(例如,指令)。例如,共享高速缓存899a、899b可以本地缓存在存储器832、834中存储的数据,以便由处理器的部件更快地访问。在一个或多个实施例中,共享高速缓存899a、899b可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级4(L4)或其他级别的高速缓存,最后一级高速缓存(LLC)和/或其组合。
虽然仅示出了两个处理元件870、880,但是应该理解,实施例的范围不限于此。在其他实施例中,一个或多个附加处理元件可以存在于给定处理器中。可替换地,处理元件870、880中的一个或多个可以是除处理器之外的元件,例如加速器或现场可编程门阵列。例如,附加处理元件可以包括与第一处理器870相同的附加处理器、与第一处理器870异构或不对称的附加处理器、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理元件。在包括架构、微架构、热、功耗特性等的优点度量的范围方面,处理元件870、880之间可存在各种差异。这些差异可以有效地表现为处理元件870、880之间的不对称性和异构性。对于至少一个实施例,各种处理元件870、880可以驻留在相同的管芯封装中。
第一处理元件870还可以包括存储器控制器逻辑(MC)872和点对点(P-P)接口876和878。类似地,第二处理元件880可以包括MC 882和P-P接口886和888。如图8所示,MC 872和882将处理器耦合到各自的存储器,即存储器832和存储器834,它们可以是本地连接到各自处理器的主存储器的一部分。虽然MC 872和882被示为集成到处理元件870、880中,但是对于替代实施例,MC逻辑可以是处理元件870、880外部的分立逻辑,而不是集成在其中。
第一处理元件870和第二处理元件880可以分别经由P-P互连876、886耦合到I/O子系统890。如图8所示,I/O子系统890包括P-P接口894和898。此外,I/O子系统890包括用于将I/O子系统890与高性能图形引擎838耦合的接口892。在一实施例中,可以使用总线849将图形引擎838耦合到I/O子系统890。可替换地,点对点互连可以耦合这些部件。
反过来,I/O子系统890可以通过接口896耦合到第一总线816。在一实施例中,第一总线816可以是外围部件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线的总线,但实施例的范围不限于此。
如图8所示,各种I/O设备814(例如,扬声器、照相机、传感器)可以耦合到第一总线816以及可将第一总线816耦合到第二总线820的总线桥818。在一实施例中,第二总线820可以是低引脚数(LPC)总线。在一实施例中,各种设备可以耦合到第二总线820,包括例如键盘/鼠标812、通信设备826、以及数据储存单元819,例如可以包括代码830的磁盘驱动器或其他大容量储存设备。所示的代码830可以实现已经讨论的方法200(图2)和/或方法300(图3),并且可以类似于已经讨论的代码713(图7)。此外,音频I/O 824可以耦合到第二总线820,并且电池810可以向计算系统800供电。
注意,可以预期其他实施例。例如,代替图8的点对点架构,系统可以实现多分支总线或另一种这样的通信拓扑。而且,可以替代地使用比图8中所示的更多或更少的集成芯片来划分图8的元件。
附加说明和示例:
示例1可以包括一种系统,包括主机存储器,该主机存储器包括易失性存储器或非易失性存储器中的一个或多个,以及通信地耦合到主机存储器的存储器控制器,该存储器控制器包括分叉驱动器,用于处理访问存储器的一个或多个存储器访问请求,其中分叉驱动器包括通信地耦合到内核文件系统的内核空间驱动器,以及通信地耦合到设备的用户空间驱动器。
示例2可以包括示例1的系统,还包括用于生成分叉驱动器的驱动器分叉器,其中驱动器分叉器取回用于配置分叉驱动器的用户配置信息,其中,用户配置信息包括用于内核空间驱动器和用户空间驱动器的多个输入输出队列和多个命名空间,其中,一个或多个存储器访问请求从被修改为使用分叉驱动器的一个或多个应用程序接收,并且其中,一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个。
示例3可以包括示例2的系统,其中,驱动器分叉器初始化内核空间驱动器,其中,驱动器分叉器在主机存储器的共享存储器空间中生成数据结构,其中,主机存储器包括内核,其中,内核通过分叉驱动器管理内核空间驱动器,其中,共享存储器空间可由命名空间对访问,分叉器命名空间对包括内核命名空间和用户命名空间,其中,非易失性存储器包括文件系统设备储存器和非易失性存储器(NVM)快速(NVMe)块设备储存器。驱动器分叉器在主机存储器中进一步生成内核命名空间、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对,将内核命名空间和一个或多个内核队列对分配给内核空间驱动器,使用标识内核命名空间和一个或多个内核队列对的内核队列对元数据来更新数据结构,以及向内核注册设备,其中,设备是NVMe块设备储存器。
示例4可以包括示例3的系统,其中,数据结构包括数据结构元数据,该数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
示例5可以包括示例3的系统,其中,一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且其中,一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
示例6可以包括示例3的系统,其中,驱动器分叉器使用数据结构元数据初始化用户空间驱动器,其中,用户空间驱动器是轮询模式驱动器,其中,驱动器分叉器取回用户配置信息和数据结构元数据,基于用户配置信息和数据结构元数据生成设备,利用用户空间队列对元数据更新数据结构,以及向用户空间驱动器注册到设备的块设备接口。
示例7可以包括示例3的系统,其中,分叉驱动器通信地耦合到存储器控制器,并且其中,分叉驱动器从一个或多个应用程序接收一个或多个存储器访问请求以访问文件系统设备储存器或NVMe块设备储存器中的一个或多个,使用分叉驱动器处理一个或多个存储器访问请求,基于一个或多个存储器访问请求使用更新内核命名空间、用户命名空间、一个或多个内核队列对或一个或多个用户空间队列对中的一个或多个,并且使用存储器控制器来同步数据结构。
示例8可以包括示例3的系统,其中,易失性存储器包括随机存取存储器(RAM),其包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或同步动态随机存取存储器(SDRAM)中的一个或多个,并且其中,非易失性存储器包括非易失性随机存取存储器,其包括固态存储器、3D交叉点存储器、使用硫属化物相变材料的一个或多个储存设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、包括铁电聚合物存储器的聚合物存储器、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、或电可擦除可编程只读存储器(EEPROM)中的一个或多个,其中,固态存储器包括平面或三维(3D)NAND闪存或NOR闪存中的一个或多个,其中,3D交叉点存储器包括至少一个无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉点处,并且存储器单元可单独寻址,位储存基于体电阻的变化。
示例9可以包括示例8的系统,其中,当一个或多个存储器访问请求是读取请求时,分叉驱动器将一个或多个存储器访问请求引导到用户空间驱动器。
示例10可以包括示例2至8中任一个的系统,其中,当一个或多个存储器访问请求是写入请求时,分叉驱动器将一个或多个存储器访问请求引导到内核空间驱动器。
示例11可以包括共享非易失性存储器(NVM)快速(NVMe)设备的方法,包括使用耦合到主机存储器的处理器生成分叉驱动器,其中,主机存储器包括易失性存储器或非易失性存储器中的一个或多个,其中,分叉驱动器包括通信地耦合到内核文件系统的内核空间驱动器,以及通信地耦合到设备的用户空间驱动器,以及使用分叉驱动器处理访问非易失性存储器的一个或多个存储器访问请求。
示例12可以包括示例11的方法,还包括从被修改为使用分叉驱动器的一个或多个应用程序接收一个或多个存储器访问请求,其中,生成分叉驱动器包括使用驱动器分叉器取回用于配置分叉驱动器的用户配置信息,其中,用户配置信息包括用于内核空间驱动器和用户空间驱动器的多个输入输出队列和多个命名空间,其中,一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个,并且其中,一个或多个存储器访问请求包括读取请求或写入请求中的一个或多个。
示例13可以包括示例12的方法,初始化内核空间驱动器,包括在主机存储器的共享存储器空间中生成数据结构,其中,主机存储器包括内核,其中,内核通过分叉驱动器管理内核空间驱动器,其中,共享存储器空间可由命名空间对访问,命名空间对包括内核命名空间和用户命名空间,其中,非易失性存储器包括文件系统设备储存器和NVMe块设备储存器。初始化内核空间驱动器还包括在主机存储器中生成内核命名空间、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对,将内核命名空间和一个或多个内核队列对分配给内核空间驱动器,使用标识内核命名空间和一个或多个内核队列对的内核队列对元数据来更新数据结构,并向内核注册设备,其中,设备是NVMe块设备储存器。
示例14可以包括示例13的方法,其中,数据结构包括数据结构元数据,该数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
示例15可以包括示例13的方法,其中,一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且其中,一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
示例16可以包括示例13的方法,还包括使用数据结构元数据初始化用户空间驱动器,其中,用户空间驱动器是轮询模式驱动器,初始化用户空间驱动器包括取回用户配置信息和数据结构元数据,基于用户配置信息和数据结构元数据生成设备,利用用户空间队列对元数据来更新数据结构,以及向用户空间驱动器注册到设备的块设备接口。
示例17可以包括示例13的方法,还包括由分叉驱动器从一个或多个应用程序接收一个或多个存储器访问请求以分别访问文件系统设备储存器或NVMe块设备储存器中的一个或多个,使用分叉驱动器处理一个或多个存储器访问请求,基于一个或多个存储器访问请求使用通信地耦合到分叉驱动器的存储器控制器来更新内核命名空间、用户命名空间,一个或多个内核队列对或一个或多个用户空间队列对中的一个或多个,以及使用存储器控制器同步数据结构。
示例18可以包括示例13的方法,其中,易失性存储器包括随机存取存储器(RAM),其包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或同步动态随机存取存储器(SDRAM)中的一个或多个,并且其中,非易失性存储器包括非易失性随机存取存储器,其包括固态存储器、3D交叉点存储器、使用硫属化物相变材料的一个或多个储存设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、包括铁电聚合物存储器的聚合物存储器、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、或电可擦除可编程只读存储器(EEPROM)中的一个或多个,其中,固态存储器包括平面或三维(3D)NAND闪存或NOR闪存中的一个或多个,其中,3D交叉点存储器包括至少一个无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉点处,并且存储器单元可单独寻址,位储存基于体电阻的变化。
示例19可以包括示例12至18中的任何一个,其中,当一个或多个存储器访问请求是读取请求时,使用分叉驱动器将一个或多个存储器访问请求引导到用户空间驱动器,并且其中,当一个或多个存储器访问请求是写入请求时,使用分叉驱动器将一个或多个存储器访问请求引导到内核空间驱动器。
示例20可以包括至少一个计算机可读储存介质,其包括指令集,所述指令集当由计算设备执行时,使得计算设备使用耦合到主机存储器的处理器生成分叉驱动器,其中,主机存储器包括易失性存储器或非易失性存储器中的一个或多个,其中,分叉驱动器包括通信地耦合到内核文件系统的内核空间驱动器、以及通信地耦合到设备的用户空间驱动器;以及使用分叉驱动器处理访问非易失性存储器的一个或多个存储器访问请求。
示例21可以包括示例20的至少一个计算机可读储存介质,其中,指令在被执行时使得计算设备从被修改为使用分叉驱动器的一个或多个应用程序接收一个或多个存储器访问请求,使用驱动器分叉器生成分叉驱动器包括取回用于配置分叉驱动器的用户配置信息,其中,用户配置信息包括用于内核空间驱动器和用户空间驱动器的多个输入输出队列和多个命名空间,其中,一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个,并且其中,一个或多个存储器访问请求包括读取请求或写入请求中的一个或多个。
示例22可以包括示例21的至少一个计算机可读储存介质,其中,所述指令在被执行时还使得所述计算设备初始化内核空间驱动器,其中,初始化内核空间驱动器还使得计算设备在主机存储器的共享存储器空间中生成数据结构,其中,主机存储器包括内核,其中,内核通过分叉驱动器管理内核空间驱动器,其中,共享存储器空间可由命名空间对访问,该命名空间对包括内核命名空间和用户命名空间,其中,非易失性存储器包括文件系统设备储存器和非易失性存储器(NVM)快速(NVMe)块设备储存器。初始化内核空间驱动器可以使得指令在被执行时进一步使计算设备在主机存储器中生成内核命名空间、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对,将内核命名空间和一个或多个内核队列对分配给内核空间驱动器,使用标识内核命名空间和一个或多个内核队列对的内核队列对元数据来更新数据结构,并向内核注册文件系统设备储存器,其中,设备是NVMe块设备储存器。
示例23可以包括示例22的至少一个计算机可读储存介质,其中,数据结构包括数据结构元数据,该数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
示例24可以包括示例22的至少一个计算机可读储存介质,其中,一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且其中,一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
示例25可以包括示例22的至少一个计算机可读储存介质,其中,所述指令在被执行时使得计算设备使用数据结构元数据初始化用户空间驱动器,其中,用户空间驱动器是轮询模式驱动器,其中初始化用户空间驱动器还使得计算设备取回用户配置信息和数据结构元数据,基于用户配置信息和数据结构元数据生成设备,利用用户空间队列对元数据更新数据结构,以及向用户空间驱动器注册到设备的块设备接口。
示例26可以包括示例22的至少一个计算机可读储存介质,其中,易失性存储器包括随机存取存储器(RAM),其包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或同步动态随机存取存储器(SDRAM)中的一个或多个,并且其中,非易失性存储器包括非易失性随机存取存储器,其包括固态存储器、3D交叉点存储器、使用硫属化物相变材料的一个或多个储存设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、包括铁电聚合物存储器的聚合物存储器、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、或电可擦除可编程只读存储器(EEPROM)中的一个或多个,其中,固态存储器包括平面或三维(3D)NAND闪存或NOR闪存中的一个或多个,其中,3D交叉点存储器包括至少一个无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉点处,并且存储器单元可单独寻址,位储存基于体电阻的变化。
示例27可以包括示例22至26中任一个的至少一个计算机可读储存介质,其中,所述指令在被执行时使得计算设备通过由分叉驱动器从一个或多个应用程序接收一个或多个存储器访问请求以访问文件系统设备储存器或NVMe块设备储存器中的一个或多个,使用分叉驱动器处理一个或多个存储器访问请求,基于一个或多个存储器访问请求使用通信地耦合到分叉驱动器的存储器控制器来更新内核命名空间、用户命名空间,一个或多个内核队列对或一个或多个用户空间队列对中的一个或多个,并且使用存储器控制器同步数据结构,其中,当一个或多个存储器访问请求是读取请求时,使用分叉驱动器将一个或多个存储器访问请求引导到用户空间驱动器,并且其中,当一个或多个存储器访问请求是写入请求时,使用分叉驱动器将一个或多个存储器访问请求引导到内核空间驱动器。
示例28可以包括一种系统,包括用于以下的模块:使用耦合到主机存储器的处理器生成分叉驱动器,其中,主机存储器包括易失性存储器或非易失性存储器中的一个或多个,其中,分叉驱动器包括通信地耦合到内核文件系统的内核空间驱动器以及通信地耦合到设备的用户空间驱动器,以及使用分叉驱动器处理访问非易失性存储器的一个或多个存储器访问请求。
示例29可以包括示例28的系统,还包括用于从被修改为使用分叉驱动器的一个或多个应用程序接收一个或多个存储器访问请求的模块,其中,用于生成分叉驱动器的模块包括使用驱动器分叉器取回用于配置分叉驱动器的用户配置信息,其中,用户配置信息包括用于内核空间驱动器和用户空间驱动器的多个输入输出队列和多个命名空间,其中,一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个,并且其中,一个或多个存储器访问请求包括读取请求或写入请求中的一个或多个。
示例30可以包括示例28的系统,还包括用于初始化内核空间驱动器的模块,包括用于在主机存储器的共享存储器空间中生成数据结构的模块,其中,主机存储器包括内核,其中,内核通过分叉驱动器管理内核空间驱动器,其中,共享存储器空间可由分叉器命名空间对访问,分叉器命名空间对包括内核命名空间和用户命名空间,其中,非易失性存储器包括文件系统设备储存器和NVMe块设备储存器。初始化内核空间驱动器还可以包括用于在主机存储器中生成内核命名空间、一个或多个内核队列对、用户命名空间和一个或多个用户空间队列对的模块,用于将内核命名空间和一个或多个内核队列对分配给内核空间驱动器的模块,用于使用标识内核命名空间和一个或多个内核队列对的内核队列对元数据来更新数据结构的模块,以及用于向内核注册文件系统设备储存器的模块,其中,设备是NVMe块设备储存器。
示例31可以包括示例30的系统,其中,数据结构包括数据结构元数据,该数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
示例32可以包括示例30的系统,其中,一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个,以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且其中,一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
示例33可以包括示例30的系统,其中,易失性存储器包括随机存取存储器(RAM),其包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或同步动态随机存取存储器(SDRAM)中的一个或多个,并且其中,非易失性存储器包括非易失性随机存取存储器,其包括固态存储器、3D交叉点存储器、使用硫属化物相变材料的一个或多个储存设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、包括铁电聚合物存储器的聚合物存储器、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、或电可擦除可编程只读存储器(EEPROM)中的一个或多个,其中,固态存储器包括平面或三维(3D)NAND闪存或NOR闪存中的一个或多个,其中,3D交叉点存储器包括至少一个无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉点处,并且存储器单元可单独寻址,位储存基于体电阻的变化。
示例34可以包括示例30至33中任一个的系统,还包括用于使用数据结构元数据初始化用户空间驱动器的模块,其中,用户空间驱动器是轮询模式驱动器,初始化用户空间驱动器包括用于取回用户配置信息和数据结构元数据的模块,用于基于用户配置信息和数据结构元数据生成设备的模块,用于利用用户空间队列对元数据来更新数据结构的模块,用于向用户空间驱动器注册到设备的块设备接口的模块。初始化用户空间驱动器还包括用于由分叉驱动器从一个或多个应用程序接收一个或多个存储器访问请求以访问文件系统设备储存器或NVMe块设备储存器中的一个或多个的模块、用于使用分叉驱动器处理一个或多个存储器访问请求的模块、用于基于一个或多个存储器访问请求使用通信地耦合到分叉驱动器的存储器控制器来更新内核命名空间、用户命名空间、一个或多个内核队列对或一个或多个用户空间队列对中的一个或多个的模块、以及用于使用存储器控制器同步数据结构的模块,其中,当一个或多个存储器访问请求是读取请求时,使用分叉驱动器将一个或多个存储器访问请求引导到用户空间驱动器,并且其中,当一个或多个存储器访问请求是写入请求时,使用分叉驱动器将一个或多个存储器访问请求引导到内核空间驱动器。
实施例适用于所有类型的半导体集成电路(“IC”)芯片。这些IC芯片的示例包括但不限于处理器、控制器、芯片组部件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器ASIC等。另外,在一些附图中,信号导线用线表示。一些可以是不同的,以指示更多组成信号路径,具有附图标记,以指示多个组成信号路径,和/或在一端或多端具有箭头,以指示主要信息流方向。然而,这不应以限制方式解释。相反,可以结合一个或多个示例性实施例使用这种附加细节,以便于更容易地理解电路。任何表示的信号线,无论是否具有附加信息,实际上,可以包括可以在多个方向上传播的一个或多个信号,并且可以用任何合适类型的信号方案来实现,例如,用差分对、光纤线和/或单端线实现的数字或模拟线路。
可以给出示例性尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如,光刻)随时间的推移而成熟,预期可以制造更小尺寸的器件。另外,为了简化说明和讨论,并且为了不使实施例的某些方面难以理解,可以在图中示出或不示出到IC芯片和其他部件的公知的电源/接地连接。此外,可以以框图形式示出布置以免使实施例难以理解,并且还考虑到关于这种框图布置的实现的细节高度依赖于其中将实现该实施例的计算系统的事实,即,这些细节应该完全在本领域技术人员的能力范围内。在阐述具体细节(例如,电路)以便描述示例性实施例的情况下,对于本领域技术人员来说显而易见的是,可以在没有这些具体细节或变更这些具体细节的情况下实践实施例。因此,该说明被认为是例示性的而非限制性的。
术语“耦合”在本文中可用于指代所讨论的部件之间的任何类型的直接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或其他连接。另外,除非另有说明,否则本文可以使用术语“第一”、“第二”等仅仅是为了便于讨论,并且不带有特定的时间或时间顺序意义。
如在本申请和权利要求中所使用的,由术语“一个或多个”连接的项目列表可以表示所列术语的任何组合。例如,短语“A、B或C中的一个或多个”可以表示A;B;C;A和B;A和C;B和C;或A,B和C。
通过前面的说明,本领域技术人员将理解,实施例的广泛技术可以以各种形式来实现。因此,虽然已经结合其具体示例描述了实施例,但是实施例的真实范围不应受此限制,因为在研究了附图、说明书和所附权利要求之后,其他修改对于本领域技术人员将变得显而易见。

Claims (25)

1.一种包括主机存储器的系统,所述主机存储器包括易失性存储器或非易失性存储器中的一个或多个,所述系统还包括:
存储器控制器,通信地耦合到所述主机存储器,所述存储器控制器包括分叉驱动器,以用于处理访问所述非易失性存储器的一个或多个存储器访问请求,其中,所述分叉驱动器包括通信地耦合到内核文件系统的内核空间驱动器、以及通信地耦合到设备的用户空间驱动器,以及
用于生成所述分叉驱动器的驱动器分叉器,其中,所述驱动器分叉器取回用于配置所述分叉驱动器的用户配置信息。
2.根据权利要求1所述的系统,
其中,所述用户配置信息包括用于所述内核空间驱动器和所述用户空间驱动器的多个输入输出队列和多个命名空间,
其中,所述一个或多个存储器访问请求从被修改为使用所述分叉驱动器的一个或多个应用程序接收,并且
其中,所述一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个。
3.根据权利要求2所述的系统,其中,所述驱动器分叉器初始化所述内核空间驱动器,其中,所述驱动器分叉器:
在所述主机存储器的共享存储器空间中生成数据结构,其中,所述主机存储器包括内核,其中,所述内核通过所述分叉驱动器管理所述内核空间驱动器,其中,所述共享存储器空间可由分叉器命名空间对访问,所述分叉器命名空间对包括内核命名空间和用户命名空间,其中,所述非易失性存储器包括文件系统设备储存器和非易失性存储器快速块设备储存器;
在所述主机存储器中生成所述内核命名空间、一个或多个内核队列对、所述用户命名空间和一个或多个用户空间队列对;
将所述内核命名空间和所述一个或多个内核队列对分配给所述内核空间驱动器;
使用标识所述内核命名空间和所述一个或多个内核队列对的内核队列对元数据来更新所述数据结构;以及
向所述内核注册所述设备,其中,所述设备是所述非易失性存储器快速块设备储存器。
4.根据权利要求3所述的系统,其中,所述数据结构包括数据结构元数据,所述数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
5.根据权利要求3所述的系统,
其中,所述一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且
其中,所述一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
6.根据权利要求3所述的系统,其中,所述驱动器分叉器:
使用所述数据结构元数据初始化所述用户空间驱动器,其中,所述用户空间驱动器是轮询模式驱动器,其中,所述驱动器分叉器:
取回所述用户配置信息和所述数据结构元数据;
基于所述用户配置信息和所述数据结构元数据生成所述设备;
利用所述用户空间队列对元数据来更新所述数据结构;以及
向所述用户空间驱动器注册到所述设备的块设备接口。
7.根据权利要求3所述的系统,
其中,所述分叉驱动器通信地耦合到所述存储器控制器,并且
其中,所述分叉驱动器:
从所述一个或多个应用程序接收用于访问所述文件系统设备储存器或所述非易失性存储器快速块设备储存器中的一个或多个的所述一个或多个存储器访问请求;
处理所述一个或多个存储器访问请求;
基于所述一个或多个存储器访问请求使用更新所述内核命名空间、所述用户命名空间、所述一个或多个内核队列对或所述一个或多个用户空间队列对中的一个或多个;以及
使用所述存储器控制器同步所述数据结构。
8.根据权利要求7所述的系统,其中,当所述一个或多个存储器访问请求是读取请求时,所述分叉驱动器将所述一个或多个存储器访问请求引导到所述用户空间驱动器。
9.根据权利要求2-7中任一项所述的系统,其中,当所述一个或多个存储器访问请求是写入请求时,所述分叉驱动器将所述一个或多个存储器访问请求引导到所述内核空间驱动器。
10.一种共享非易失性存储器快速设备的方法,包括:
使用耦合到主机存储器的处理器生成分叉驱动器,其中,所述主机存储器包括易失性存储器或非易失性存储器中的一个或多个,其中,所述分叉驱动器包括:
通信地耦合到内核文件系统的内核空间驱动器,以及
通信地耦合到设备的用户空间驱动器;以及
使用所述分叉驱动器处理访问所述非易失性存储器的一个或多个存储器访问请求,
其中,生成所述分叉驱动器包括使用驱动器分叉器取回用于配置所述分叉驱动器的用户配置信息。
11.根据权利要求10所述的方法,还包括从被修改为使用所述分叉驱动器的一个或多个应用程序接收所述一个或多个存储器访问请求,
其中,所述用户配置信息包括用于所述内核空间驱动器和所述用户空间驱动器的多个输入输出队列和多个命名空间,
其中,所述一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个,以及
其中,所述一个或多个存储器访问请求包括读取请求或写入请求中的一个或多个。
12.根据权利要求11所述的方法,还包括:
初始化所述内核空间驱动器,包括:
在所述主机存储器的共享存储器空间中生成数据结构,其中,所述主机存储器包括内核,其中,所述内核通过所述分叉驱动器管理所述内核空间驱动器,其中,所述共享存储器空间可由分叉器命名空间对访问,所述分叉器命名空间对包括内核命名空间和用户命名空间,其中,所述非易失性存储器包括文件系统设备储存器和非易失性存储器快速块设备储存器;
在所述主机存储器中生成所述内核命名空间、一个或多个内核队列对、所述用户命名空间和一个或多个用户空间队列对;
将所述内核命名空间和所述一个或多个内核队列对分配给所述内核空间驱动器;
使用标识所述内核命名空间和所述一个或多个内核队列对的内核队列对元数据来更新所述数据结构;以及
向所述内核注册所述设备,其中,所述设备是所述非易失性存储器快速块设备储存器。
13.根据权利要求12所述的方法,其中,所述数据结构包括数据结构元数据,所述数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
14.根据权利要求12所述的方法,
其中,所述一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且
其中,所述一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
15.根据权利要求12所述的方法,还包括:
使用所述数据结构元数据初始化所述用户空间驱动器,其中,所述用户空间驱动器是轮询模式驱动器,初始化所述用户空间驱动器包括:
取回所述用户配置信息和所述数据结构元数据;
基于所述用户配置信息和所述数据结构元数据生成所述设备;
利用所述用户空间队列对元数据来更新所述数据结构;以及
向所述用户空间驱动器注册到所述设备的块设备接口。
16.根据权利要求12所述的方法,还包括:
由所述分叉驱动器从所述一个或多个应用程序接收用于访问所述文件系统设备储存器或所述非易失性存储器快速块设备储存器中的一个或多个的所述一个或多个存储器访问请求;
使用所述分叉驱动器处理所述一个或多个存储器访问请求;
基于所述一个或多个存储器访问请求使用通信地耦合到所述分叉驱动器的存储器控制器来更新所述内核命名空间、所述用户命名空间、所述一个或多个内核队列对或所述一个或多个用户空间队列对中的一个或多个;以及
使用所述存储器控制器同步所述数据结构。
17.根据权利要求11-16中任一项所述的方法,
其中,当所述一个或多个存储器访问请求是读取请求时,使用所述分叉驱动器将所述一个或多个存储器访问请求引导到所述用户空间驱动器,并且
其中,当所述一个或多个存储器访问请求是写入请求时,使用所述分叉驱动器将所述一个或多个存储器访问请求引导到所述内核空间驱动器。
18.一种用于共享非易失性存储器快速设备的系统,包括用于以下的模块:
使用耦合到主机存储器的处理器生成分叉驱动器,其中,所述分叉驱动器包括:
通信地耦合到内核文件系统的内核空间驱动器,以及
通信地耦合到设备的用户空间驱动器;以及
使用所述分叉驱动器处理访问非易失性存储器的一个或多个存储器访问请求,
其中,用于生成所述分叉驱动器的模块包括使用驱动器分叉器取回用于配置所述分叉驱动器的用户配置信息。
19.根据权利要求18所述的系统,还包括用于从被修改为使用所述分叉驱动器的一个或多个应用程序接收所述一个或多个存储器访问请求的模块,
其中,所述用户配置信息包括用于所述内核空间驱动器和所述用户空间驱动器的多个输入输出队列和多个命名空间,
其中,所述一个或多个应用程序包括读密集型应用程序或写密集型应用程序中的一个或者多个,并且
其中,所述一个或多个存储器访问请求包括读取请求或写入请求中的一个或多个。
20.根据权利要求19所述的系统,还包括:
用于初始化所述内核空间驱动器的模块,包括:
用于在所述主机存储器的共享存储器空间中生成数据结构的模块,其中,所述主机存储器包括内核,其中,所述内核通过所述分叉驱动器管理所述内核空间驱动器,其中,所述共享存储器空间可由分叉器命名空间对访问,所述分叉器命名空间对包括内核命名空间和用户命名空间,其中,所述非易失性存储器包括文件系统设备储存器和非易失性存储器快速块设备储存器;
用于在所述主机存储器中生成所述内核命名空间、一个或多个内核队列对、所述分叉器命名空间和一个或多个用户空间队列对的模块;
用于将所述内核命名空间和所述一个或多个内核队列对分配给所述内核空间驱动器的模块;
用于使用标识所述内核命名空间和所述一个或多个内核队列对的内核队列对元数据来更新所述数据结构的模块;以及
用于向所述内核注册所述设备的模块,其中,所述设备是所述非易失性存储器快速块设备储存器。
21.根据权利要求20所述的系统,其中,所述数据结构包括数据结构元数据,所述数据结构元数据包括提交队列物理地址、完成队列物理地址、队列大小或队列门铃寄存器物理地址中的一个或多个。
22.根据权利要求20所述的系统,
其中,所述一个或多个内核队列对包括包含管理提交队列和管理完成队列的管理队列对中的一个或多个、以及包含内核提交队列和内核完成队列的内核输入输出队列对中的一个或多个,并且
其中,所述一个或多个用户空间队列对包括用户空间提交队列和用户空间完成队列。
23.根据权利要求20-22中任一项所述的系统,还包括:
用于使用所述数据结构元数据初始化所述用户空间驱动器的模块,其中,所述用户空间驱动器是轮询模式驱动器,初始化所述用户空间驱动器包括:
用于取回所述用户配置信息和所述数据结构元数据的模块;
用于基于所述用户配置信息和所述数据结构元数据生成块设备的模块,以及
用于利用所述用户空间队列对元数据来更新所述数据结构的模块。
24.根据权利要求23所述的系统,还包括:
用于向所述用户空间驱动器注册到所述设备的块设备接口的模块;
用于由所述分叉驱动器从所述一个或多个应用程序接收用于访问所述文件系统设备储存器或所述非易失性存储器快速块设备储存器中的一个或多个的所述一个或多个存储器访问请求的模块;以及
用于使用所述分叉驱动器处理所述一个或多个存储器访问请求的模块。
25.根据权利要求24所述的系统,还包括:
用于基于所述一个或多个存储器访问请求使用通信地耦合到所述分叉驱动器的控制器来更新所述内核命名空间、所述分叉器命名空间、所述一个或多个内核队列对或所述一个或多个用户空间队列对中的一个或多个的模块;以及
用于使用所述控制器同步所述数据结构的模块,
其中,当所述一个或多个存储器访问请求是读取请求时,使用所述分叉驱动器将所述一个或多个存储器访问请求引导到所述用户空间驱动器,并且
其中,当所述一个或多个存储器访问请求是写入请求时,使用所述分叉驱动器将所述一个或多个存储器访问请求引导到所述内核空间驱动器。
CN201680091055.5A 2016-12-23 2016-12-30 实现分叉非易失性存储器快速驱动器的技术 Active CN109983443B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2016111736 2016-12-23
CNPCT/CN2016/111736 2016-12-23
PCT/CN2016/113701 WO2018113030A1 (en) 2016-12-23 2016-12-30 Technology to implement bifurcated non-volatile memory express driver

Publications (2)

Publication Number Publication Date
CN109983443A CN109983443A (zh) 2019-07-05
CN109983443B true CN109983443B (zh) 2024-03-08

Family

ID=62624352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680091055.5A Active CN109983443B (zh) 2016-12-23 2016-12-30 实现分叉非易失性存储器快速驱动器的技术

Country Status (3)

Country Link
CN (1) CN109983443B (zh)
DE (1) DE112016007538T5 (zh)
WO (1) WO2018113030A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111444113B (zh) * 2019-01-16 2023-06-13 阿里巴巴集团控股有限公司 非易失性存储介质共享方法、装置、电子设备及存储设备
US11409439B2 (en) 2020-11-10 2022-08-09 Samsung Electronics Co., Ltd. Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device
CN112667565B (zh) * 2020-12-30 2021-12-03 湖南博匠信息科技有限公司 一种基于fuse的存储单元文件管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189615A (zh) * 2005-04-22 2008-05-28 微软公司 受保护计算环境
CA2687695A1 (en) * 2008-12-07 2010-06-07 Trend Micro Incorporated Method and system for detecting data modification within computing device
US8533376B1 (en) * 2011-07-22 2013-09-10 Kabushiki Kaisha Yaskawa Denki Data processing method, data processing apparatus and robot

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4548505B2 (ja) * 2008-04-16 2010-09-22 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9535870B2 (en) * 2013-09-18 2017-01-03 HGST Netherlands B.V. Acknowledgement-less protocol for solid state drive interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189615A (zh) * 2005-04-22 2008-05-28 微软公司 受保护计算环境
CA2687695A1 (en) * 2008-12-07 2010-06-07 Trend Micro Incorporated Method and system for detecting data modification within computing device
US8533376B1 (en) * 2011-07-22 2013-09-10 Kabushiki Kaisha Yaskawa Denki Data processing method, data processing apparatus and robot

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Mechanism of determining page faults instantaneously via device driver based approach in Linux;Shaikh Mohd. Laeeq等;《2012 IEEE Students" Conference on Electrical, Electronics and Computer Science》;20120423;全文 *
内存文件系统综述;张学成等;《计算机研究与发展》;20151215;全文 *
基于ARM的数据采集系统并行总线的驱动设计;刘少真等;《核电子学与探测技术》;20110420;第31卷(第4期);全文 *

Also Published As

Publication number Publication date
WO2018113030A1 (en) 2018-06-28
CN109983443A (zh) 2019-07-05
DE112016007538T5 (de) 2019-09-26

Similar Documents

Publication Publication Date Title
EP3754498B1 (en) Architecture for offload of linked work assignments
US20210042219A1 (en) Apparatuses and methods for memory address translation during block migration
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
US10228874B2 (en) Persistent storage device with a virtual function controller
US11379374B2 (en) Systems and methods for streaming storage device content
US8266337B2 (en) Dynamic logical data channel assignment using channel bitmap
US20140331014A1 (en) Scalable Matrix Multiplication in a Shared Memory System
US10983833B2 (en) Virtualized and synchronous access to hardware accelerators
US10152275B1 (en) Reverse order submission for pointer rings
US11853787B2 (en) Dynamic platform feature tuning based on virtual machine runtime requirements
US9367478B2 (en) Controlling direct memory access page mappings
CN109983443B (zh) 实现分叉非易失性存储器快速驱动器的技术
US20220092013A1 (en) Memory sub-system with multiple ports having single root virtualization
US9886327B2 (en) Resource mapping in multi-threaded central processor units
US9767024B2 (en) Cache closure and persistent snapshot in dynamic code generating system software
US9792042B2 (en) Systems and methods for set membership matching
US10180800B2 (en) Automated secure data and firmware migration between removable storage devices that supports boot partitions and replay protected memory blocks
CN114945984A (zh) 扩展存储器通信
Zou et al. DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing
US10664396B2 (en) Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes
US10565133B2 (en) Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels
US11385926B2 (en) Application and system fast launch by virtual address area container
US20200167086A1 (en) Exit-less host page table switching and virtual machine function detection
CN114258534A (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