首页> 中国专利> 对持久性存储区域范围的一致访问

对持久性存储区域范围的一致访问

摘要

本发明题为“对持久性存储区域范围的一致访问”。本发明公开了一种用于保持DMA数据路径和NVMe数据路径之间的一致性的方法和系统。当在PMR区域中接收到DMA请求时,设备控制器将这些请求转换成具有专用队列的NVMe命令,该专用队列对主机隐藏,具有比该对应主机(NVMe)命令更高的优先级。从内部执行的NVMe命令返回的有效载荷存储在缓冲区中,该缓冲区用于完成该DMA请求。当提交存储器读取时,该控制器将标记对应的LBA范围以用于重叠,从而确保这些读取和来自其他队列的写入之间的一致性。由于内部PMR队列具有比面向主机的队列(例如,NVMe)更高的优先级,并且该PMR是只读的,因此可实现主机对同一区域的读取与写入的一致性。

著录项

  • 公开/公告号CN114968855A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 西部数据技术公司;

    申请/专利号CN202110648114.7

  • 发明设计人 S·班尼斯提;A·纳冯;J·G·哈恩;

    申请日2021-06-10

  • 分类号G06F13/16(2006.01);G06F13/28(2006.01);G06F13/42(2006.01);G06F12/02(2006.01);G06F12/0815(2016.01);G06F12/0866(2016.01);G06F3/06(2006.01);

  • 代理机构北京纪凯知识产权代理有限公司 11245;

  • 代理人徐东升

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 16:34:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G06F13/16 专利申请号:2021106481147 申请日:20210610

    实质审查的生效

说明书

相关申请的交叉引用

本申请是2017年12月19日提交的共同未决的美国专利申请序列号15/847,671的部分继续申请,该专利申请据此以引用方式并入本文。

背景技术

技术领域

本公开的实施方案整体涉及直接存储器访问,并且更具体地涉及将数据的数据一致性保持在PMR范围内。

计算机系统的存储器可由主存储器(诸如易失性存储器)和辅助存储器或存储器存储装置(诸如非易失性存储器)构成。存储器存储装置和计算机的中央处理单元(CPU)之间的通信由指定用于读取/写入访问的指令的命令集和协议以及由在其上传输那些命令的主机编程接口来定义。通信协议已被定义为使得通过总线(诸如外围计算机扩展总线)能够更快地采用连接到主机的存储器存储设备并实现存储器存储设备的互操作性。

CPU通过经由主机和存储器存储设备之间的各种物理层、链路层、主机接口层、存储器管理层、数据路径层和闪存转换层的通信来访问来自存储器存储设备的数据。主机和存储器存储设备之间的每次通信的时间延迟都会为数据获取/执行循环时间增加大量时间。

在直接存储器访问(DMA)模式下,主机设备(诸如CPU或GPU)可经由外围部件接口(PCI)总线访问映射到持久性存储区域(PMR)的非易失性存储器的一部分,以参与只读存储器事务。另外,此类主机还可经由非易失性存储器快速(NVMe)协议参与存储器事务。

常规地,DMA访问和NVMe访问发生在单独的路径上。这可能会导致具体实施中的复杂性,因为DMA访问和NVMe访问并行工作,当经由这两条路径访问相同数据时保持数据一致性。

因此,需要用于保持数据一致性的改进的系统和方法。

发明内容

本公开整体涉及一种用于在非易失性存储器(NVM)中保持NVM上的DMA存储器事务和NVMe存储器事务之间的数据一致性的方法和系统。当在PMR区域中接收到DMA请求时,设备控制器将这些请求转换成专用队列内的NVMe命令,该专用队列对主机隐藏,具有比对应主机(NVMe)命令更高的优先级。从内部执行的NVMe命令返回的有效载荷存储在缓冲区中,该缓冲区用于完成该DMA请求。当提交存储器读取时,控制器将标记对应的逻辑块地址(LBA)范围以用于重叠,从而确保这些读取和来自其他队列的写入之间的一致性。由于内部PMR队列具有比面向主机的队列(例如,NVMe)更高的优先级,并且该PMR是只读的,因此可实现主机对同一区域的读取与写入的一致性。

在一个实施方案中,公开了一种控制器,该控制器包括:存储器,该存储器包括用于由主机免驱动访问非易失性存储器设备的非易失性存储器的方法的计算机可读指令;和处理器,该处理器被配置为执行可执行指令。在某些实施方案中,可执行指令使控制器:初始化PCIe存储器空间,该PCIe存储器空间通过主机和非易失性存储器设备之间的PCIe链路将非易失性存储器的非易失性存储器的一部分映射到主机存储器空间;以及向PCIe存储器空间发送加载/存储命令以用于免驱动访问。可执行指令进一步使控制器:将加载/存储命令置于非易失性存储器设备的持久性存储区域(PMR)队列中;以及将PMR队列的加载/存储命令与非易失性存储器快速(NVMe)队列的一个或多个命令聚合。

在另一实施方案中,公开了一种数据存储设备,该数据存储设备包括控制器,该控制器被配置为执行由主机驱动访问和免驱动访问非易失性存储器设备的非易失性存储器的方法。在某些实施方案中,该方法包括:初始化PCIe存储器空间,该PCIe存储器空间通过主机和非易失性存储器设备之间的PCIe链路将非易失性存储器设备的非易失性存储器的一部分映射到主机存储器空间;利用非易失性存储器设备的配置信息来初始化PCIe配置空间;以及向PCIe存储器空间发送加载/存储命令以用于免驱动访问。该方法进一步包括:利用非易失性存储器设备的配置信息向主机的NVMe驱动器发送读取/写入命令以用于驱动访问;以及向聚合命令队列提供加载/存储命令和读取/写入命令以供非易失性存储器设备处理。

在另一实施方案中,公开了一种用于存储数据的系统,该系统包括:一个或多个非易失性存储器装置;和控制器装置,该控制器装置被配置为执行用以保持PMR和NVMe数据事务之间的一致性的方法。在某些实施方案中,该方法包括:在主机和非易失性存储器装置之间建立PCIe链路以及在主机和非易失性存储器装置之间建立NVMe链路;初始化PCIe存储器空间,该PCIe存储器空间通过主机和非易失性存储器装置之间的PCIe链路将非易失性存储器装置的非易失性存储器的一个或多个部分映射到主机存储器空间;以及向PCIe存储器空间发送加载/存储命令以用于免驱动访问。该方法进一步包括:将加载/存储命令置于非易失性存储器装置的持久性存储区域(PMR)队列中;以及将PMR队列的加载/存储命令与非易失性存储器快速(NVMe)队列的一个或多个读取/写入命令聚合。

附图说明

因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。

图1A描绘了包括启动器或主机和用于主机的非易失性存储器设备的系统的一个实施方案的示意图。

图1B描绘了主机的存储器地址空间和非易失性存储器设备的非易失性存储器的存储器映射的一个实施方案的示意图。

图2描绘了示出对非易失性存储器设备的非易失性存储器的驱动访问和免驱动访问的一个实施方案的示意图。

图3描绘了示出外围设备对非易失性存储器设备的非易失性存储器的驱动访问和免驱动访问的一个实施方案的示意图。

图4描绘了示出主机对非易失性存储器设备的非易失性存储器的免驱动访问的写入路径的一个实施方案的示意图。

图5描绘了示出以免驱动访问模式操作NVM设备的方法的一个实施方案的示意图。

图6描绘了具有异常检测器模块的非易失性存储器设备的控制器的一个实施方案的示意图。

图7描绘了示出以直接访问模式操作非易失性存储器设备并检测潜在安全违规行为的方法的一个实施方案的示意图。

图8描绘了存储器映射区域的一个实施方案的示意图。

图9A和图9B描绘了NVMe队列结构的一个实施方案的示意图。

图10A和图10B描绘了PMR队列结构的一个实施方案的示意图。

图11描绘了示出访问PMR的方法的一个实施方案的示意图。

图12描绘了示出NVM的免驱动访问方法的一个实施方案的示意图。

为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。

具体实施方式

在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。

本公开提供了用于在非易失性存储器(NVM)中保持NVM上的DMA存储器事务和NVMe存储器事务之间的数据一致性的方法和系统。当在PMR区域中接收到DMA请求时,设备控制器将这些请求转换成具有专用队列的NVMe命令,该专用队列对主机隐藏并且具有比对应主机(例如,NVMe)命令更高的优先级。从内部执行的NVMe命令返回的有效载荷存储在缓冲区中,该缓冲区用于完成该DMA请求。当提交存储器读取时,该控制器将标记对应的LBA范围以用于重叠,从而确保这些读取和来自其他队列的写入之间的一致性。由于内部PMR队列具有比面向主机的队列(例如,NVMe)更高的优先级,并且PMR是只读的,因此可实现主机对同一区域的读取与写入的一致性。

图1A描绘了包括启动器或主机150和用于主机150的NVM设备102(诸如SSD)的系统的100的一个实施方案的示意图。主机150可利用包括在NVM设备102中的NVM 106来写入数据和读取数据,诸如用于存储器存储装置、主存储器、高速缓存存储器、备份存储器或冗余存储器。NVM设备102可以是内部存储驱动器,诸如笔记本硬盘驱动器或台式机硬盘驱动器。NVM设备102可以是可移除的大容量存储设备,诸如但不限于,手持式可移除存储器设备,诸如存储卡(例如,安全数字(SD)卡、微安全数字(micro-SD)卡、或多媒体卡(MMC))或通用串行总线(USB)设备,前提是此类存储设备支持能够直接访问存储器的通信协议。NVM设备102可采用嵌入在主机150中的嵌入式大容量存储设备(诸如eSD/eMMC嵌入式闪存驱动器)的形式。NVM设备102还可以是任何其他类型的内部存储设备、可移除存储设备、嵌入式存储设备、外部存储设备、或网络存储设备。

主机150可包括各种各样的设备,诸如计算机服务器、网络附联存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机(即“智能”平板电脑)、机顶盒、电话手机(即“智能”电话)、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备和汽车应用(即地图绘制、自主驾驶)。在某些实施方案中,主机150包括具有处理单元或能够处理数据的任何形式的硬件的任何设备,包括通用处理单元、专用硬件(诸如专用集成电路(ASIC))、可配置硬件(诸如现场可编程门阵列(FPGA))、或由软件指令、微代码或固件配置的任何其他形式的处理单元。

主机150包括中央处理单元(CPU)152,该CPU通过根复合体153连接到存储器地址空间154(诸如DRAM或其他主存储器)。根复合体153可与CPU 152集成,或者可以是分立的部件。应用程序可存储在存储器地址空间154中,以便由主机150的部件执行。主机150包括总线156(诸如存储设备接口),该总线与NVM设备102的主机接口101交互。总线156和主机接口101在通信协议118、120(诸如外围部件接口Express(PCIe)串行通信协议或其他合适的通信协议)下操作。其他合适的通信协议包括以太网或与远程直接存储器访问(RDMA)相关的任何协议,诸如Infiniband、iWARP或基于融合以太网的RDMA(RoCE)以及其他合适的串行通信协议。

在PCIe通信协议中,主机150发送命令作为事务分组(TLP)。TLP包括地址字段,该地址字段指定正在寻求的读取或写入信息位于NVM设备102的NVM 106中。TLP可包括其他字段,诸如Fmt字段、类型字段、TC字段、TD字段、CRC字段、长度字段、请求方ID字段、标签字段和其他字段。控制器110可使用地址字段访问指定位置处的数据。

NVM设备102的NVM 106可被配置用于作为非易失性存储器空间的信息的长期存储,并且在通电/断电循环后保留信息。NVM 106可由NAND闪存存储器的一个或多个管芯组成。非易失性存储器的其他示例包括相变存储器、ReRAM存储器、MRAM存储器、磁介质(包括叠瓦式磁记录)、光盘、软盘、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和其他固态存储器。磁介质非易失性存储器可为NVM设备102中的一个或多个磁盘。每个盘片可以包含由一个或多个数据轨道组成的一个或多个区域。NVM 106可包括一种或多种类型的非易失性存储器。

控制器110管理非易失性存储器设备102的操作,诸如写入NVM 106和从NVM读取。控制器110可包括一个或多个处理器130,该一个或多个处理器可为多核处理器。处理器130通过固件代码来处理NVM设备102的部件。控制器110通过主机接口101与主机150交互,该主机接口可包括mac部件和phy部件。主机接口101通过NVM接口114与NVM 106交互。

控制器110可在NVM Express(NVMe)协议下进行操作,但其他协议也可适用。NVMe是为SSD开发的用于对通过PCIe接口连接的主机和存储设备进行操作的通信接口/协议。该接口为SSD(诸如具有NAND闪存存储器的NVM 106的SSD)提供命令队列和完成路径。NVMe包括对企业能力的支持,诸如端到端数据保护、增强的错误报告和虚拟化。

控制器110还包括易失性存储器112或高速缓存缓冲区,用于在NVM设备102的操作期间的短期存储装置或暂时存储器。如果断电,则易失性存储器112不保持所存储的数据。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和其他形式的易失性存储器。

控制器110执行计算机可读程序代码(例如,软件或固件)可执行指令(在本文中称为“指令”)。指令可由控制器110的各种部件执行,该部件诸如处理器130、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器、嵌入式微控制器以及控制器110的其他部件。

指令存储在非暂态计算机可读存储介质中。在某些实施方案中,指令存储在NVM设备102的非暂态计算机可读存储介质中,诸如只读存储器(ROM)113或NVM 106。可在没有从主机150添加的输入或指示的情况下执行存储在NVM设备102中的指令。在其他实施方案中,从主机150传输指令。所存储的指令可全部或部分地存储到控制器110的易失性存储器112中以供控制器执行。控制器110被配置有用于执行本文所述和附图所示的各种功能的硬件和指令。

NVM设备102还可通过开关或桥连接到主机150。系统100还可包括外围设备190(诸如相机),该外围设备连接到主机150的总线156或通过开关或桥连接到主机150。系统100还可包括第二主机(未示出),该第二主机通过开关或桥连接到主机150。

图1B是图1A的主机150的存储器地址空间154和NVM设备102的NVM 106的存储器映射155的示意图。存储器映射155是参考系统100来描述的,但其他系统也可适用。存储器映射155示出了由主机150建立的NVM设备102的NVM 106的免驱动访问模式和驱动访问模式两者。

在驱动访问模式下,主机150可激活在对应于DeviceA_bar0的PCIe配置空间中实现的NVM设备102的一个BAR 124。PCIe配置空间存储NVM设备102的配置信息。主机150访问NVM设备102的配置信息以通过主机150和NVM设备102的NVMe驱动层实现驱动访问,从而访问NVM设备102的NVM部分106A至106E。

在免驱动访问模式下,主机150可激活在对应于DeviceA_bar2的PCIe存储器空间或虚拟存储器空间中实现的NVM设备102的另一BAR 124。主机150将NVM部分106B的内部寄存器映射到主机150的存储器地址空间154B。主机150可直接对存储器地址空间154B的地址进行读取和写入,其中PCIe通信协议将读取命令和写入命令自动传送到NVM设备102。主机150可以免驱动访问模式激活NVM设备102的附加BAR 124,以提供对NVM设备102的NVM 106的另一部分的访问。例如,主机可激活在对应于DeviceA_bar4的PCIe存储器空间中实现的NVM的附加BAR 124,以将NVM部分106D的内部寄存器映射到主机150的存储器地址空间154C。

主机150可建立对第二设备(诸如外围设备或第二NVM设备)的免驱动访问和/或驱动访问。例如,第二PCIe设备可激活在对应于DeviceB_bar0的PCIe配置空间中实现的BAR,以提供对第二PCIe设备的驱动访问。

图2描绘了示出参考图1的系统100所描述的对NVM设备202的NVM 230的基于NVMe的主机访问200或驱动访问的一个实施方案的示意图,但其他系统也可适用。基于NVMe的主机访问200包括主机250通过由主机250的应用程序210发起的命令来管理NVM设备202。主机250的应用程序210向主机250的文件系统层212发送命令,诸如读取或写入命令。文件系统层212将命令传递到主机250的NVMe设备驱动器214。NVMe设备驱动器214可从主机250的DRAM 216加载队列消息并将队列消息存储到主机的DRAM。NVMe驱动器214将读取/写入命令传递到主机250的PCIe层218,该PCIe层在PCIe通信协议下操作。

NVM设备202的PCIe层220从主机250接收命令,并将该命令传递到NVM设备202的NVMe层222。NVMe层222将命令转换为NVMe协议并将该命令传递到NVM设备202的前端层224。NVM设备202的前端层224可包括NVM设备202的NVM 230的高速缓存管理和一致性管理。前端层224将读取/写入命令传递到NVM设备202的数据路径层226。数据路径层226访问闪存转换层(FTL)模块228以确定与命令的逻辑地址相关联的物理地址。数据路径层226访问NVM 230以读取或写入与命令相关联的数据。数据路径层226从前端层224接收命令并从FTL模块228接收地址信息以发起对NVM 230的读取/写入操作。总之,当应用程序210向NVM设备202提供基于NVMe的访问命令时,该命令从应用程序210传递到文件系统层212、传递到NVMe驱动器214、传递到主机的PCIe层218、传递到NVM设备的PCIe层220、传递到NVMe层222、传递到前端、传递到访问FTL模块228的数据路径层226,传递到NVM 230。

图2还示出了到NVM 230的免驱动访问路线240的一个实施方案,其中NVM 230被映射到主机250的存储器空间。例如,主机250的应用程序210将免驱动访问命令传递到主机250的PCIe层218。NVM设备202的PCIe层220从主机250接收免驱动访问命令,并将该免驱动访问命令传递到NVM设备202的数据路径层226。数据路径层226模块发起对NVM 230的读取/写入操作。总之,当应用程序210向NVM设备202提供免驱动访问命令时,该命令从应用程序210传递到主机的PCIe层218,传递到NVM设备的PCIe层220,传递到数据路径层226,传递到NVM 230。

在免驱动访问路线240中,指示控制器110绕过NVMe文件系统表并将BAR视为虚拟到物理地址映射。例如,对应于NVM 230的物理部分的BAR可动态地映射到逻辑块地址。PCIe协议使得能够将LBA范围映射到其自己的虚拟存储器地址空间,并允许使用PCIe事务处理对这些LBA进行免驱动访问,从而绕过NVMe层。PCIe协议用于通过映射特定LBA范围来绕过NVMe层,然后通过PCIe层直接寻址那些LBA。主机250可经由PCIe直接访问该地址空间,并且对该地址空间进行读取或写入。

在某些实施方案中,在免驱动访问路线240中,控制器110可将多个免驱动访问请求聚合或绑定到对NVM接口114的突发操作中。多个免驱动访问命令可聚合在易失性存储器112中。NVM接口114可将突发操作作为对NVM 106的单个请求来执行。对于包括NAND闪存的NVM 106,突发操作可增加性能,因为NAND闪存管芯的空闲时间可减少。

在某些方面,PCIe将NVM设备202中的NVM 230转换为存储器孔,将存储器孔暴露于主机250中的存储器地址空间。PCIe协议将存储器孔映射到主机250上的存储器地址空间。NVM 230对于CPU 152而言可表现为简单存储器,从而减少提交和完成延迟并增加有效带宽利用率。

在某些实施方案中,串行PCIe用于将物理存储器的分配部分动态地映射到主机设备中的虚拟地址空间。例如,在系统在PCIe协议或其任何一种派生协议下操作的实施方案中,设备可经由BAR映射到主机存储器地址空间。

在免驱动访问模式下,NVM 230的一部分被映射到主机250的存储器空间中一定时间段。NVM 230的被分配的部分可以是NVM 230的子集以降低复杂性。免驱动访问路线240可包括与FTL模块228的协作,其中数据路径层226访问FTL模块228以用于地址转换。在其他实施方案中,免驱动访问路线240可包括绕过FTL模块228。通过绕过NVM设备202的FTL模块228,主机250诸如通过执行和管理地址转换来直接管理NVM 230。

物理地址到应用程序210的虚拟地址空间的映射通过CPU的加载/存储存储器事务而不是通过定期读取/写入主机事务提供对特定地址范围的免驱动访问。加载/存储存储器事务被路由到NVM设备102,而不是被路由到DRAM 216。通过绕过主机250的NVMe驱动器214和NVM设备202的NVMe层222,对NVM 230的免驱动访问减少了主机250和NVM设备202之间的延迟。

图3描绘了示出参考图1的系统所描述的外围设备390(诸如相机)对NVM设备302的NVM 330的基于NVMe的主机访问300或驱动访问的一个实施方案的示意图,但其他系统也可适用。例如,外围设备390(诸如PCIe外围设备)可提供要写入到DRAM 316的数据。DRAM 316将数据发送到文件系统层312。文件系统层312将数据传递到主机350的NVMe驱动器314。NVMe驱动器314将数据传递到主机350的PCIe层318。NVM设备302的PCIe层320从主机350接收数据并将该数据传递到NVM设备302的NVMe层322。NVMe层322将数据传递到NVM设备302的前端层324。NVM设备302的前端层324将数据传递到NVM设备302的数据路径层326。数据路径层326访问FTL模块328以确定与数据的逻辑地址相关联的物理块地址。数据路径层326访问NVM 330以将数据写入到NVM 330。总之,当外围设备390提供对NVM 330的基于NVMe的访问时,数据从外围设备390传递到DRAM 316、传递到文件系统层312、传递到NVMe驱动器314、传递到主机的PCIe层318、传递到NVM设备的PCIe层320、传递到NVMe层322、传递到前端层324、传递到访问FTL模块328的数据路径层326,传递到NVM 330。

图3还示出了到NVM 330的免驱动访问路线340的写入路径的一个实施方案。在免驱动访问路线340的写入路径的一个实施方案中,外围设备提供要写入到主机350的PCIe层318的数据。NVM设备302的PCIe层320从主机350接收数据,并将数据传递到NVM设备302的数据路径层326。数据路径层326访问NVM 330以将数据写入到NVM 330。总之,当外围设备390向NVM 330提供免驱动写入数据时,该数据从外围设备390传递到PCIe层318、传递到NVM设备302的PCIe层320、传递到数据路径层326,传递到NVM 330。

由免驱动访问路线340启用短得多的PCIe至PCIe路线。在免驱动访问路线340中,指示控制器110绕过NVMe文件系统表并将所分配的BAR视为虚拟到物理地址映射。PCIe协议使得能够将LBA范围映射到其自己的虚拟存储器地址空间,并允许使用PCIe事务对这些LBA直进行接访问,从而绕过NVMe层。PCIe协议用于通过映射特定LBA范围来绕过NVMe层,然后通过PCIe层直接寻址那些LBA。主机350可经由PCIe直接访问该地址空间,并且对该地址空间进行读取或写入。

在某些实施方案中,在免驱动访问路线340中,控制器110可将多个免驱动访问请求聚合或绑定到对NVM接口114的突发操作中。多个免驱动访问命令可聚合在易失性存储器112中。NVM接口114可将突发操作作为对NVM设备102的单个请求来执行。对于包括NAND闪存的NVM设备102,突发操作可增加性能,因为NAND闪存管芯的空闲时间可减少。

免驱动访问路线340可包括与FTL模块328的协作,其中数据路径层326访问FTL模块328以用于地址转换。在其他实施方案中,免驱动访问路线340可包括绕过FTL模块328。通过绕过NVM设备302的FTL模块328,主机350诸如通过执行和管理地址转换来直接管理NVM330。

物理地址到分配到外围设备390的虚拟地址空间的映射通过CPU的加载/存储存储器事务而不是通过定期读取/写入主机事务提供对特定地址范围的免驱动访问。通过绕过主机350的NVMe驱动器314和NVM设备302的NVMe层322,对NVM 330的免驱动访问减少了外围设备390和NVM设备302之间的延迟。

在某些实施方案中,主机350可将外围设备390配置为对应于NVM设备102的NVM106的分配部分的BAR,诸如将配置命令写入到主机350和/或NVM设备302的PCIe控制器。在某些实施方案中,可由外围设备390(或第二主机)访问所分配的BAR存储器,而不涉及主机350的操作系统,诸如通过主机350的固件或其他部件访问所分配的BAR存储器。

在某些方面,免驱动访问路线340避免路由数据(诸如要写入的数据),该数据将在DRAM 316中缓冲,然后路由到文件系统层312、NVMe驱动器314,然后路由到PCIe层318。如果进行了BAR分配,则数据可通过存储器孔直接路由到NVM设备302的NVM 330。

在某些方面,免驱动访问路线340为将数据从外围设备390(诸如相机)顺序写入到NVM设备302的NVM 330中提供了改进的性能。例如,数据的顺序写入可包括写入到NVM 330的页面的顺序模式的大量数据。免驱动访问路线340可通过绕过通信协议(诸如NVMe)以及主机350和NVM设备302中的其他层来提供对NVM 330的低延迟、高带宽访问。

免驱动访问路线340还可用于对存储在外围设备390上的代码进行就地代码执行。例如,在基于NVMe的主机访问300中,外围设备390可将待执行命令提供到DRAM 316。DRAM316将待执行命令发送到文件系统层312。文件系统层312将待执行命令传递到主机350的NVMe驱动器314。NVMe驱动器314将待执行命令传递到主机350的PCIe层318。NVM设备302的PCIe层320从主机350接收待执行命令,并将待执行命令传递到NVM设备302的NVMe层322以供执行。

在免驱动访问路线340中,外围设备390可将待执行命令从存储在外围设备390上的代码提供到主机350的PCIe层318。PCIe层318直接将待执行命令发送到NVM设备302的PCIe层320。NVM设备302的PCIe层320执行命令。免驱动访问路线340允许直接执行来自存储在外围设备390上的代码的命令,并且避免将代码存储到主机350的DRAM 316以及绕过主机350和NVM设备302的其他层。因此,免驱动访问路线340可提供存储在外围设备390上的代码的低延迟执行。

图4描绘了示出参考图1的系统100所描述的由主机150访问NVM设备102的NVM 106的方法400的一个实施方案的示意图,但其他系统也可适用。方法400包括由主机150在驱动访问模式和免驱动访问模式两者下访问NVM设备102的NVM 106。可通过CPU 152、控制器110或其他控制器执行存储在NVM设备102或主机150中的计算机可读程序代码(例如,软件或固件)可执行指令来执行方法400的一个或多个框。

在框410处,由主机150通过通信协议(诸如通过PCIe协议)将NVM 106的一部分动态映射到主机150的存储器地址空间154中。可由主机基于主机的要求或需求来动态地分配NVM的该部分的大小。主机150可通过激活对应于NVM设备102的NVM 106的各个部分的一个或多个BAR来将NVM 106动态地映射到主机150的存储器地址空间154中。

在框420处,NVM设备102的控制器110接收免驱动访问命令。例如,可通过存储器孔236接收免驱动访问命令,该存储器孔将NVM 106的该部分映射到存储器地址空间154中。

在框430处,路由免驱动访问命令以绕过主机接口协议层,诸如NVMe层。

在框440处,响应于免驱动访问命令,访问映射到主机150的存储器地址空间154中的NVM 106的部分。例如,可通过存储器孔236访问映射到存储器地址空间154中的NVM 106的部分。主机150和NVM设备102可在对齐大小上对齐以完成免驱动访问命令。在某些实施方案中,对于由多个字节编程和读取的NVM,诸如当NVM包括NAND闪存时,对齐大小可大于一个字节。

可重复框410、420、430、440以通过通信协议将NVM 106的另一部分重新映射到主机150的存储器地址空间154中。例如,可激活对应于NVM 106的另一部分的第二BAR。可通过通信协议将NVM 106重新映射到主机150的存储器地址空间154中,以改变NVM 106的分配大小。

在框450处,接收由非易失性存储器设备的控制器执行的驱动访问命令。驱动访问命令可通过主机接口,诸如NVMe接口。

在框460处,将驱动访问命令路由到主机接口协议层。例如,将驱动访问命令通过NVM设备102的通信协议路由到主机的主机接口协议层。

在框470处,响应于驱动访问命令,通过主机接口协议层访问NVM设备102的NVM106的另一部分。在一个实施方案中,可同时分配NVM的两个单独部分以用于框440处的免驱动访问以及框470处的驱动访问。例如,可通过激活对应于NVM设备102的NVM 106的用于免驱动访问的一部分的BAR来将NVM 106的一部分映射到主机150的存储器地址空间154中,并且可将NVM 106的另一部分分配用于驱动访问。

在另一实施方案中,可分配NVM 106的重叠部分用于框440处的免驱动访问以及框470处的驱动访问。例如,对应于NVM 106的用于免驱动访问的部分的一个BAR可以是主动的,而驱动访问可以是非主动的。类似地,对应于NVM 106的用于免驱动访问的部分的一个BAR可以是非主动的,而驱动访问可以是主动的。

方法400使用相同的通信协议(诸如PCIe通信协议)向NVM设备102提供免驱动访问和驱动访问两者。NVM设备102可通过相同的通信协议,使用不同的LBA范围同时完成免驱动访问命令和驱动访问命令。NVM设备102可通过相同的通信协议,使用重叠的LBA范围在不同的时间完成免驱动访问命令和驱动访问命令。

在某些实施方案中,驱动访问可以是通过PCIe的基于NVMe的访问。在某些实施方案中,可通过由PCIe BAR(诸如PCIe BAR4)将NVM 106映射到主机150的存储器地址空间154来实现免驱动访问。主机150可将NVMe命令排队,同时还向映射到NVM 106的PCIe BAR发送加载/存储直接访问命令。

主机150或外围设备190可使用免驱动访问来减少延迟。可使用免驱动访问来减少对NVM 106的顺序数据写入/读取的延迟,因为可避免对所访问数据的缓冲。由于在主机150和NVM设备102中绕过了NVMe层和其他层,因此可使用免驱动访问来减少任何类型的数据的延迟(顺序的或随机的)。方法400可应用于NVM设备102的NVM 106的任何访问命令,诸如单个访问命令或多个访问命令。

图5描绘了示出参考图1的系统100所描述的以免驱动访问模式操作NVM设备102的方法500的一个实施方案的示意图,但其他NVM设备也可适用。可通过控制器110执行存储在NVM设备102或主机150中的计算机可读程序代码(例如,软件或固件)可执行指令来执行方法500的一个或多个框。

在框510处,初始化PCIe存储器空间,该PCIe存储器空间将NVM设备102的NVM 106的一部分映射到主机存储器空间154。通过主机150与NVM设备102之间的PCIe链路进行映射。

在框520处,由NVM设备102通告或传输可用或优选的对齐模式。可在激活BAR之前或之后协商对齐大小。NVM设备102可通告优选对齐模式的列表。由于对于其中NVM由多个字节编程和读取的实施方案,字节访问对于NVM 106不是最佳的,因此NVM设备102可在对齐大小上对齐。例如,NVM设备102可传输或通告64字节或更大的优选对齐大小,诸如NAND存储器的一个页面或多个页面的大小。NVM设备102可进一步提供所支持的其他对齐参数的列表。

在框530处,由NVM设备102接收对对齐大小的对齐选择。对齐选择来自主机150或连接到主机150的外围设备190。在协商对齐大小之后,以对齐大小或对齐大小的倍数传输事务分组以完成免驱动访问命令。

NVM设备102可接收对其他对齐参数的对齐模式选择。作为该协商的一部分,可建立免驱动访问模式。例如,NVM设备102可与主机150以动态对齐方式对齐,其中对齐大小根据主机150的要求或需求而变化。例如,以一个对齐大小进行一个或多个免驱动访问命令,并且以另一对齐大小进行一个或多个其他免驱动访问命令。在其他实施方案中,NVM设备102可与主机150以静态对齐方式对齐,其中每个免驱动访问命令以相同对齐大小进行(即,以对齐大小或对齐大小的倍数传输事务分组)。

如果在超时周期之后NVM设备102未接收到对齐选择,则可以默认对齐大小建立免驱动访问模式。在其他实施方案中,可在以默认对齐大小建立的免驱动访问模式下跳过框520和530。

在框540处,激活对应于NVM设备102的NVM 106的一部分的BAR。在激活BAR之后,由主机150和NVM设备102以对齐大小或对齐大小的倍数传输事务分组。寻址到主机存储器空间154的逻辑地址的事务分组将绕过NVM设备102的NVMe层发送到NVM设备102。可停用该BAR以提供对NVM设备102的NVM 106的相同部分的驱动访问。可重复框510、520、530和540以激活NVM设备102的其他BAR 124。可重复框510、520、530和540,以利用NVM设备102的NVM 106的不同大小和/或不同对齐大小重新建立对BAR的免驱动访问模式。

在框550处,NVM设备102在免驱动访问模式下以对齐的对齐大小或默认对齐大小接收对激活的BAR的访问请求。

在方法500的某些方面,NVM设备102就访问对齐大小与主机150或外围设备190协商并对齐。NVM设备102可以非字节(多于一个字节)分辨率向主机150或外围设备190提供免驱动访问。例如,对于由NAND闪存制成的NVM 106,难以支持单字节或几个字节的事务大小,因为若干字节是按NAND闪存阵列的页面编程和读取的。主机150或外围设备190可基于性能或应用程序要求来选择哪个访问对齐大小。在某些方面,免驱动存储器访问允许使用动态读取/写入对齐大小。通过查看主机计划的操作,主机150与NVM设备102之间的流水线可被配置为通过选择性地使用对存储器孔236的免驱动访问来提高性能。

在某些方面,可针对主机150、针对NVM设备102或针对主机150和NVM设备102两者来实现减少的延迟。绕过主机250、350的NVMe驱动器214、314和NVM设备202、302的NVMe层222、322可为主机150和/或NVM设备302提供减少的延迟。随着延迟的减少,可实现数据访问写入/读取的吞吐量的增加。随着延迟的减少,可实现主机150和/或NVM设备102的功率消耗的减少。

在某些方面,可确定映射期间的服务质量(QoS)水平或每秒输入/输出操作(IOPS)水平。例如,可将NVM设备102的NVM 106的一部分或全部映射到主机150的存储器地址空间154,以提供灵活的QoS或IOPS级别。主机150可通信以在商定的或某些参数下分配资源。在某些实施方案中,如果期望低延迟,则可将NVM 106的大部分分配给免驱动访问模式。在某些实施方案中,可根据需要动态地分配NVM 106的各部分以用于免驱动访问。例如,可对NVM106的一部分动态地进行BAR映射和重新映射,以调整主机150所需的存储空间的量。

在某些实施方案中,主机150通过绕过若干硬件和固件部件通过存储器孔236发送命令来向NAND闪存发送免驱动命令,以执行调试操作并消除NVM设备102的NVM 106中的错误。NVM 106的免驱动访问(诸如NAND闪存管芯的免驱动访问)可通过集中于NVM 106的关键部件并绕过连接主机150和NVM 106的物理链路和电路来减少调试工作。

在某些实施方案中,可在动态基础上访问NVM设备102(即,同一NVM设备可同时提供驱动访问模式和免驱动访问模式)。这两种模式可并行操作,例如,用于NVM设备102的NVM106的一部分的BAR可被分配用于免驱动访问,并且NVM设备102的NVM 106的另一部分可被分配用于驱动访问。换句话讲,免驱动访问和驱动访问可以是访问NVM设备102的NVM 106的不同物理地址。

在某些实施方案中,对NVM设备102的NVM 106的免驱动访问可通过从主机150所接收的加载/存储命令进行,并且驱动访问可通过从主机150所接收的读取/写入命令进行。

在某些实施方案中,NVM 106在免驱动访问模式下表现为CPU 152的存储器。在任选的实施方案中,用于免驱动访问模式的通信协议可由中间控制器执行。中间控制器可任选地执行错误检查、传入命令的缓冲和/或磨损均衡。可对在通信协议下操作的任何系统100执行免驱动访问,以减少提交和完成延迟并增加有效带宽利用率。

与经由应用程序处理器和/或芯片组的主存储器(即,DRAM)路由数据相比,绕过主机150的芯片组的一个或多个部件可减少在主机150和NVM设备102之间传输数据的时间量。通过在数据传输期间绕过芯片组的一个或多个部件,可降低芯片组的功率消耗。

在一些实施方案中,主机150和NVM设备102之间的通信可通过若干电链路,每个电链路由互连开关或协议桥适配器连接。在此类实施方案中,可根据不同协议协商沿每个链路的通信。例如,置于命令队列中的命令可被路由通过PCIe根端口,经由网络适配器切换到计算机联网通信标准链路,然后在到达NVM设备102之前切换回PCIe。

在某些方面,在本文所述的实施方案中提供对NVM设备102的NVM 106的免驱动访问、通过PCIe协议的其他免驱动访问、通过PCIe协议的其他直接访问或通过其他通信协议的其他直接访问(统称为“直接访问”)可使NVM设备102容易受到安全违规的影响。直接访问可能会降低在主机级别操作的标准安全保护工具的有效性。例如,在主机150和NVM设备102之间建立的直接访问模式下,未授权或黑客设备或程序可绕过权限、NVMe安全协议和其他安全层。黑客设备或程序可识别NVM设备102与主机150处于直接访问模式,并且可尝试通过NVM 106的映射存储器孔建立其自身与NVM设备102的访问,以进入主机150的存储器地址空间154中。黑客设备或程序可控制NVM 106的映射部分。通过存储器孔访问NVM设备102的黑客设备或程序可能具有对关键区(诸如系统文件、引导文件、密码、管理表、固件和擦除/无效数据)的不期望的读取和写入访问。此类安全违规行为可能难以检测。

图6示出了具有异常检测器模块620的NVM设备的控制器610的一个实施方案的示意图。控制器610可在图1的NVM设备102中实现,但其他NVM设备也可适用。

图7描绘了示出通过图6的控制器610操作NVM设备的方法700的一个实施方案的示意图,但其他NVM设备也可适用。方法700包括以直接访问模式提供对NVM设备102的NVM 106的访问,以及检测潜在的安全违规行为。方法700是参考系统100和控制器610来描述的,但也可使用其他系统和控制器。可通过控制器610执行存储在NVM设备102中的计算机可读程序代码(例如,软件或固件)可执行指令来执行方法700的一个或多个框。

在框710处,控制器610的参数跟踪模块630跟踪或监视与主机150的直接访问命令相关的一个或多个参数。一种可能的参数包括在直接访问事务中访问的逻辑块地址(即,开始LBA地址和结束LBA地址)。另一个可能的参数包括直接访问命令的定时(即,当直接访问事务发生时)。另一个可能的参数包括在直接访问事务中访问的数据的大小。另一个可能的参数包括直接访问事务的来源(即,来自主机150或来自外围设备190的命令的来源)。另一个可能的参数包括访问命令的类型(即,读取访问、写入访问)。跟踪或监视的其他参数也是可能的。在其他实施方案中,NVM设备102可跟踪在直接访问事务中编程或读取的数据的内容。例如,NVM设备102可跟踪在直接访问事务中写入的零模式、写入的一模式和/或写入的零与一的比率。

从控制器610的PCIe层690跟踪一个或多个参数,从而提供对NVM 106的直接访问。跟踪或监视主机150的直接访问事务可包括跟踪或监视所有直接访问事务,或者可包括跟踪或监视样本或直接访问事务的一部分。在某些实施方案中,可跟踪或监视多个事务以创建事务的历史。对于所跟踪或所监视的多个事务中的每个事务,可跟踪或监视一个或多个参数。可在多个事务的过程中确定一个或多个参数的变化率。例如,可跟踪或监视访问某些逻辑块地址的速率。

在框720处,控制器610的正常模式拟合模块640确定正常行为模式的阈值。可通过在框710处跟踪的一个或多个参数、通过在框710处跟踪的访问数据的内容、通过在性能测试中累积的数据、和/或通过离线设置来确定正常行为模式的阈值。正常行为模式的阈值可随着从框710累积新信息而更新。在一个方面,NVM设备102确定在框710处收集的参数的模式或事务的统计数据或概率或事务发生的参数。

在一个实施方案中,框720可在NVM设备102在操作中时在线进行。在另一实施方案中,当NVM设备102在操作中时,可由用户模式页面设置阈值行为模式。在另一实施方案中,框720可离线进行,诸如在NVM设备102的认证期间进行。例如,可离线创建正常行为的查找表或字典并将其上传到NVM设备102。

在框730处,控制器110的异常确定模块650确定在框720处确定的阈值行为模式确定是否已超过正常行为模式的阈值。例如,异常确定模块650确定事务是否是在框720处确定的模式的异常值。在某些实施方案中,可基于以下技术类别中的一种或多种来确定是否已超过正常行为模式的阈值:无监督学习操作(基于确定模式的操作)、监督学习操作(基于正常事务和异常事务两者的数据集示例的操作)或半监督学习操作。

在某些实施方案中,确定是否已超过阈值可基于以下技术中的一种或多种技术:基于密度的技术(例如,K最近邻、局部异常因子);用于高维数据的基于子空间和相关性的异常值检测;一类支持向量机;复制器神经网络;基于聚类分析的异常值检测;与关联规则和频繁项目集的偏差;基于模糊逻辑的异常值检测和集合技术(即,使用特征装袋、得分归一化、不同的多样性来源等)。例如,对地址空间的一小部分的过量读取/写入可指示可疑的直接访问事务。在另一示例中,具有隔离的写入事务的多个读取事务的模式可指示可疑的直接访问事务。

如果在框730处确定超过阈值,则在框740处,控制器610的对策模块660可执行对策。对策的一个示例包括当超过阈值或检测到异常时提供警告。警告可被发送到主机150。警告还可包括检测到的异常是低安全风险、中安全风险还是高安全风险的置信水平。警告还可启用关于主机是否批准或不批准可疑事务的反馈。

对策的另一示例包括通过检查通过根复合体153识别的来源来识别有问题的访问命令的来源,诸如检查枚举信息。对策的另一示例包括选择性地阻止有问题的直接访问事务的已识别来源。对策的另一示例包括选择性地限制或延迟对有问题的直接访问事务的已识别来源的访问。如果可疑的直接访问命令继续,则可能会增加限制或延迟访问。

对策的另一示例包括创建警告或超过阈值或检测到异常的实例的日志日志可包括在框710处跟踪的一个或多个参数。日志可包括警告或超过阈值或检测到异常的实例的历史。日志可包括检测到的异常是低安全风险、中安全风险还是高安全风险的置信水平。日志可存储在NVM 106中。在一个实施方案中,主机150可查看日志。在另一实施方案中,控制器610可结合其他对策使用日志。例如,在超过一定数量、速率(即,一个很快接着另一个)和/或严重性的警告或阈值的实例或检测到异常之后,NVM设备102可增加对策的严重性。异常检测器模块620可从任何对策开始并且增加到任何其他对策。例如,异常检测器模块620可从限制作为对策开始,然后如果异常继续或增加,则增加对策以进行阻止。

在某些实施方案中,提供了对NVM设备102的NVM 106的直接访问的异常检测。NVM设备102进行的异常检测可识别主机150无法识别或未识别的潜在安全违规行为。来自异常检测的对策可以是静态动作,诸如对主机150的通知,或主动动作,诸如限制访问或阻止访问。在某些实施方案中,如果可疑的直接访问命令继续,则对策可从静态动作切换到主动动作。

在某些实施方案中,NVM设备102提供关于直接访问事务的安全保护。安全保护可包括识别可疑事务并且可包括识别可疑直接访问命令的来源。安全保护可包括在识别到可疑直接访问事务时实施对策。在某些方面,在直接访问模式下可能无法绕过这些安全保护。

图8描绘了存储器映射区域800的一个实施方案的示意图。存储器映射区域800包括设备映射存储器810和主机映射存储器820。设备映射存储器810包括配置(config)空间812、NVMe寄存器814、MSI-X表816和持久性存储区域(PMR)818。设备映射存储器810可由主机和对等体(诸如GPU)访问。主机映射存储器820包括提交队列(SQ)和完成队列(CQ)对822、主机数据区824和对等映射空间826。使用位于主机DRAM中的物理地址,数据存储设备可访问主机映射存储器820。

主机(诸如图1A的主机150)能够利用配置空间812来使用PCIe协议配置寄存器。同样,主机150能够配置NVMe寄存器814。MSI-X表816用于中断,诸如命令执行期间生成的中断。PMR 818是专用于主机150的非易失性存储器的区,用于只读DMA操作,其受掉电保护。

SQ和CQ对822存储在提交队列中尚未执行的命令和在完成队列中执行的命令的完成消息。主机数据区824存储主机数据,并且对等映射空间826是系统的处理器(诸如图1A的处理器130)能够访问的存储区域。

图9A和图9B描绘了NVMe队列结构的一个实施方案的示意图。SQ和CQ保持在主机存储器中,诸如图8的SQ和CQ对822。每个块表示SQ条目或CQ条目的位置。在当前实施方案中,每个队列具有相等的权重和1的突发大小。从每个队列顺序地拉出命令。其他组合也是可能的,诸如更高的队列深度、每个队列中的可变权重以及不同的突发大小,这将反映在从每个队列检索的命令的数量中。在某些实施方案中,一些命令将具有比其他命令更高的优先级,并且将被置于更靠近给定队列的头部的位置。例如,管理员命令具有比输入/输出(I/O)命令更高的优先级,但通常这些命令并不聚合到I/O队列中,而是具有单独的内部队列。

参考图9B,聚合I/O队列包括SQ命令中的每个SQ命令(例如,根据优先级),其中SQ命令从左到右聚合到聚合I/O队列中。例如,第一命令取自SQ1,第二命令取自SQ2,第三命令取自SQ3,第四命令取自SQ4,并且第五命令取自SQ1。该过程继续,直到SQ中不再有命令。

图10A和10B描绘了PMR队列结构的一个实施方案的示意图。图10A和10B类似于图9A和图9B。然而,如图10A所示,从NVM设备(诸如图1A的NVM设备102)映射PMR范围。图10A的PMR范围中的条目被映射到PMR队列中,如图10B所示。当在PMR区域中接收到直接存储器访问(DMA)请求时,控制器(诸如图1A的控制器110)将自动将这些请求转换成虚拟NVMe命令(即,间接命令)并将它们存储在PMR队列内。在某些实施方案中,存储在PMR队列中的此类命令具有比存储在SQ中的对应的主机命令更高的优先级。从内部执行的虚拟NVMe命令返回的有效载荷存储在缓冲区中,该缓冲区用于完成DMA请求。

当提交存储器读取时,控制器110将标记对应的LBA范围以用于重叠,由此确保这些读取和来自其他队列的写入之间的一致性。根据某些实施方案,由于PMR队列具有比面向主机的队列(即,SQ)更高的优先级,因此可保持主机对NVM(诸如图1A的NVM 106)的同一区域的读取与写入的一致性。如图10B所示,PMR范围条目被置于PMR队列中并且首先被拉入聚合I/O队列中。在一些示例中,如果命令已开始聚合队列中的处理,则控制器110可抢占PMR排队命令。此外,PMR队列可包括用于PMR排队命令的提交队列和命令队列两者。

图11描绘了示出访问PMR的方法1100的一个实施方案的示意图。在框1110处,由控制器(诸如图1A的控制器110)接收PMR访问请求。在某些实施方案中,可经由主机(诸如图1A的主机150)和NVM设备(诸如图1A的NVM设备102)之间的PCIe链路接收PMR访问请求。可在NVM设备启动期间初始化PCIe链路,其中PCIe存储器空间将NVM(诸如NVM 106)的一部分映射到主机存储器空间。PMR访问请求可用于免驱动访问。PMR访问请求或命令可以是直接访问命令(即,DMA请求)。此外,处理器可被配置为完成与控制器110相同的任务。在框1120处,控制器110将命令转换为命名空间(NS)/LBA偏移和长度。在框1130处,为命令有效载荷分配NVM中的内部存储器。

在框1140处,为PMR访问请求生成加载/存储命令。加载/存储命令是虚拟NVMe间接命令。加载/存储命令被置于PMR队列(诸如图10B中所述的PMR队列)中。在框1150处,仲裁PMR队列的命令和SQ的命令,其中PMR队列具有最高优先级。仲裁队列可类似于图10B所示的聚合I/O队列。此外,SQ可以是NVMe队列。在框1160处,使用正常读取路径处理仲裁队列中的加载/存储命令。然而,利用内部存储器目标处理加载/存储命令。在框1170处,完成来自内部存储器的PMR访问。

图12描绘了示出NVM的免驱动访问的方法1200的一个实施方案的示意图。图1A的各方面可在以下描述中作为非限制性示例来参考。在框1210处,控制器110初始化PCIe存储器空间,该PCIe存储器空间通过主机150与NVM设备102之间的PCIe链路将NVM设备102的NVM106的一部分映射到主机存储器空间。通过激活对应于NVM设备102的NVM 106的物理区域的BAR 124来初始化PCIe存储器空间。在框1220处,控制器110向PCIe存储器空间发送加载/存储命令以用于免驱动访问(即,直接存储器访问请求)。加载/存储命令是生成的用于与直接存储器访问请求相关联的间接访问的虚拟NVMe命令。

在框1230处,将加载/存储命令置于NVM设备102中的PMR队列中。PMR可被映射到NVM设备102的易失性存储器112,诸如DRAM。在框1240处,将位于PMR队列中的加载/存储命令与NVMe队列的一个或多个命令(诸如多个SQ)聚合。聚合命令可类似于图10B的聚合I/O队列。

通过包括任意范围的支持存储的存储器的PMR,可改善直接访问和NVMe访问之间的一致性,从而改善数据存储设备操作。

在一个实施方案中,公开了一种控制器,该控制器包括存储器和处理器,该存储器包括用于由主机免驱动访问非易失性存储器设备的方法的计算机可读指令,该处理器被配置为执行可执行指令。在某些实施方案中,可执行指令使控制器初始化PCIe存储器空间,该PCIe存储器空间通过主机与非易失性存储器设备之间的PCIe链路将非易失性存储器设备的一部分映射到主机存储器空间,并且向PCIe存储器空间发送加载/存储命令以用于免驱动访问。可执行指令进一步使得控制器将加载/存储命令置于非易失性存储器设备的持久性存储区域(PMR)队列中,并且将PMR队列的加载/存储命令与非易失性存储器快速(NVMe)队列的一个或多个命令聚合。

处理器被进一步配置为使系统使用NVMe读取路径处理加载/存储命令。处理器被进一步配置为使系统在非易失性存储器设备的持久性存储区域(PMR)处处理加载/存储命令。加载/存储命令中的至少一个加载/存储命令接收比NVMe队列的一个或多个命令中的至少一个命令更高的优先级。加载/存储命令中的每个加载/存储具有被分配以符合NVMe命令有效载荷大小的附加存储器。PMR队列包括提交队列和命令队列。加载/存储命令由非易失性存储器设备的控制器置于PMR队列中。

在另一实施方案中,公开了一种数据存储设备,该数据存储设备包括控制器,该控制器被配置为执行由主机对非易失性存储器设备进行驱动访问和免驱动访问的方法。在某些实施方案中,该方法包括:初始化PCIe存储器空间,该PCIe存储器空间通过主机和非易失性存储器设备之间的PCIe链路将非易失性存储器设备的一部分映射到主机存储器空间;利用非易失性存储器设备的配置信息来初始化PCIe配置空间;以及向PCIe存储器空间发送加载/存储命令以用于免驱动访问。该方法进一步包括:利用非易失性存储器设备的配置信息向主机的NVMe驱动器发送读取/写入命令以用于驱动访问;以及向聚合命令队列提供加载/存储命令和读取/写入命令以供非易失性存储器设备处理。

通过激活对应于非易失性存储器设备的物理区域的BAR来初始化PCIe存储器空间。NVMe驱动器向非易失性存储器设备的NVMe层发送读取/写入命令。加载/存储命令中的至少一个加载/存储命令接收比读取/写入命令中的至少一个读取/写入命令更高的优先级。加载/存储命令中的每个加载/存储命令具有被分配以符合读取/写入命令的命令有效载荷大小的附加存储器。加载/存储命令被提供到持久性存储区域(PMR)队列。PMR队列包括提交队列和完成队列。加载/存储命令由非易失性存储器设备的控制器置于PMR队列中。

在另一实施方案中,公开了一种用于存储数据的系统,该系统包括:一个或多个非易失性存储器装置;和控制器装置,该控制器装置被配置为执行用以保持PMR和NVMe数据事务之间的一致性的方法。在某些实施方案中,该方法包括:在主机和非易失性存储器装置之间建立PCIe链路以及在主机和非易失性存储器装置之间建立NVMe链路;初始化PCIe存储器空间,该PCIe存储器空间通过主机和非易失性存储器装置之间的PCIe链路将非易失性存储器装置的一个或多个部分映射到主机存储器空间;以及向PCIe存储器空间发送加载/存储命令以用于免驱动访问。该方法进一步包括:将加载/存储命令置于非易失性存储器装置的持久性存储区域(PMR)队列中;以及将PMR队列的加载/存储命令与非易失性存储器快速(NVMe)队列的一个或多个读取/写入命令聚合。

该方法包括接收比NVMe队列的一个或多个读取/写入命令中的至少一个读取/写入命令更高优先级的加载/存储命令中的至少一个加载/存储命令。该方法进一步包括在非易失性存储器装置的PMR处处理加载/存储命令。该方法进一步包括使用NVMe读取路径处理加载/存储命令。加载/存储命令中的每个加载/存储命令具有被分配以符合NVMe读取/写入命令有效载荷大小的附加存储器。

虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号