CN109933283B - 直接主机访问存储装置存储空间 - Google Patents
直接主机访问存储装置存储空间 Download PDFInfo
- Publication number
- CN109933283B CN109933283B CN201811322092.XA CN201811322092A CN109933283B CN 109933283 B CN109933283 B CN 109933283B CN 201811322092 A CN201811322092 A CN 201811322092A CN 109933283 B CN109933283 B CN 109933283B
- Authority
- CN
- China
- Prior art keywords
- host
- nvm
- memory
- access
- drive
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
本发明提供了由主机直接访问存储装置的存储空间的装置和方法。在一个实施方案中,主机对非易失性存储器装置的非易失性存储器的免驱动访问的方法包括初始化PCIe存储空间,将非易失性存储器装置的非易失性存储器的一部分映射到主机内存空间。通过主机和非易失性存储器装置之间的PCIe链路映射非易失性存储器。将加载/存储命令发送到PCIe存储空间以进行免驱动访问。该方法还包括协商最小事务分组大小的对准大小以完成加载/存储命令。
Description
本公开的背景技术
发明领域
本公开的实施方案整体涉及由主机直接访问存储装置的存储空间的装置和方法。
相关领域的描述
计算机系统的存储器可由主存储器(诸如易失性存储器)和辅助存储器或存储器存储装置(诸如非易失性存储器)组成。存储器存储装置和计算机的中央处理单元(CPU)之间的通信由指定用于读/写访问的指令的命令集和协议以及由通过其发送那些命令的主机编程接口定义。已经定义了通信协议以实现在总线(诸如外围计算机扩展总线)上连接到主机的存储器存储装置的更快采用和互操作性。
CPU通过主机和存储器存储装置之间经由各种物理层、链路层、主机接口层、存储器管理层、数据路径层和闪存转换层的通信来访问来自存储器存储装置的数据。主机和存储器存储装置之间的每次通信的时间延迟为数据获取/执行周期时间增加了大量时间。
因此,需要用于由主机访问存储器存储装置的存储空间的改进的装置和方法。
本公开的发明内容
提供了由主机直接访问存储装置的存储空间的装置和方法。在一个实施方案中,主机对非易失性存储器装置的非易失性存储器的免驱动访问的方法包括初始化PCIe存储空间,将非易失性存储器装置的非易失性存储器的一部分映射到主机内存空间。通过主机和非易失性存储器装置之间的PCIe链路映射非易失性存储器。加载/存储命令被发送到PCIe存储空间以用于免驱动访问。该方法还包括协商最小事务分组大小的对准大小以完成加载/存储命令。
在另一实施方案中,主机对非易失性存储器装置的非易失性存储器进行驱动器访问和免驱动访问的方法包括初始化PCIe存储空间,将非易失性存储器装置的非易失性存储器的一部分的映射到主机内存空间。通过主机和非易失性存储器装置之间的PCIe链路映射非易失性存储器。还利用存储装置的配置信息初始化PCIe配置空间。加载/存储命令被发送到PCIe存储空间以用于免驱动访问。读/写命令被发送到主机的NVMe驱动器,以利用存储装置的配置信息进行驱动器访问。
在另一个实施方案中,一种通过主机访问非易失性存储器装置的非易失性存储器的方法包括在主机和非易失性存储器装置之间建立第一PCIe链路以及在主机和外围设备之间建立第二PCIe链路。通过第一PCIe链路初始化PCIe存储空间,将非易失性存储器装置的非易失性存储器的一个或多个部分映射到主机内存空间。通过对映射非易失性存储器装置的非易失性存储器的一个或多个部分的PCIe存储空间进行寻址,将数据从外围设备通过第二PCIe链路路由到第一PCIe链路。
在一个实施方案中,计算机系统包括主机装置和非易失性存储器装置。主机装置包括主机内存空间。非易失性存储器装置包括非易失性存储存储器和耦接到非易失性存储存储器的控制器。主机装置被配置为动态地激活和去激活映射到主机内存空间以供主机装置直接访问的非易失性存储存储器的一个或多个部分。
在一个实施方案中,非易失性存储器装置包括链路接口、非易失性存储器和耦接到非易失性存储器的控制器。链路接口被配置为链接到主机。控制器被配置为接收免驱动访问命令并路由免驱动访问命令以绕过主机接口协议层。控制器还被配置为接收驱动器访问命令并将驱动器访问命令路由到主机接口协议层。
附图说明
因此,可通过参考实施方案获得上面简要概述的本公开的更具体的描述、可详细地理解本公开的上述特征结构的方式,其中一些实施方案在附图中示出。然而,应注意,附图仅示出了本公开的典型实施方案,因此不应视为限制本发明的范围,因为本公开可允许其他同等有效的实施方案。
图1A是包括引发剂或主机和用于主机的非易失性存储器装置的系统的一个实施方案的示意图。
图1B是主机的存储器地址空间的存储器映射和非易失性存储器装置的非易失性存储器的一个实施方案的示意图。
图2是示出对非易失性存储器装置的非易失性存储器的驱动器访问和免驱动访问的一个实施方案的示意图。
图3是示出外围设备对非易失性存储器装置的非易失性存储器的驱动器访问和免驱动访问的一个实施方案的示意图。
图4是示出主机对非易失性存储器装置的非易失性存储器的免驱动访问的写入路径的一个实施方案的示意图。
图5是示出在免驱动访问模式下操作NVM设备的方法的一个实施方案的示意图。
图6是具有异常检测器模块的非易失性存储器装置的控制器的一个实施方案的示意图。
图7是示出以直接存取模式操作非易失性存储器装置并检测潜在安全违规的方法的一个实施方案的示意图。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解,本公开不限于具体描述的实施方案。相反,设想了以下特征结构和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可实现优于其他可能的解决方案和/或优于现有技术的优点,但是否通过给定实施方案实现特定优点不是对本公开的限制。因此,以下方面、特征结构、实施方案和优点仅是例示性的,并且不被认为是所附权利要求的元素或限制,除非在权利要求中明确地陈述。同样,对“本公开”的引用不应被解释为本文公开的任何发明主题的概括,并且不应被视为所附权利要求的元素或限制,除非在权利要求中明确叙述。
本公开的实施方案整体涉及由主机直接访问存储装置的存储空间的装置和方法。主机可通过免驱动命令和驱动器命令两者访问该存储空间,诸如NAND闪存空间。免驱动访问和驱动器访问可被提供给计算机设备、计算机系统或计算机网络,或者可被提供给与其连接的任何外围设备。
图1A是系统100的一个实施方案的示意图,系统100包括引发剂或主机150和用于主机150的NVM装置102,诸如SSD。主机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包括通过根复合体153连接到内存地址空间154(诸如DRAM或其他主存储器)的中央处理单元(CPU)152。根复合体153可与CPU 152集成,或者可是分立组件。应用程序可存储到内存地址空间154以供主机150的组件执行。主机150包括总线156,诸如存储装置接口,其与NVM装置102的主机接口101交互。总线156和主机接口101在通信协议118,120(诸如外围组件接口快速(PCIe)串行通信协议或其他合适的通信协议)下操作。其他合适的通信协议包括以太网、串行连接SCSI(SAS)、串行AT附件(SATA)、与远程直接存储器访问(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的写入和读取。控制器110可包括一个或多个处理器130,其可是多核处理器。处理器130通过固件代码处理NVM装置102的组件。控制器110通过主机接口101与主机150交接,主机接口101可包括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中。存储在NVM装置102中的指令可在没有来自主机150的附加输入或指示的情况下执行。在其他实施方案中,指令从主机150发送。存储的指令可全部或部分存储在控制器110的易失性存储器112中,以供控制器执行。控制器110配置有硬件和指令,以执行本文描述并在附图中示出的各种功能。
NVM装置102还可通过交换机或网桥连接到主机150。系统100还可包括连接到主机150的总线156或者通过交换机或网桥连接到主机150的外围设备190,诸如相机。系统100还可包括通过交换机或网桥连接到主机150的第二主机(未示出)。
图1B是图1A的主机150的内存地址空间154和NVM装置102的NVM 106的存储器映射155的示意图。参考系统100描述存储器映射155,但是可应用其他系统。存储器映射155示出了由主机150建立的对NVM装置102的NVM 106的免驱动访问模式和驱动器访问模式两者。
在驱动器访问模式中,主机150可激活在与DeviceA_bar0对应的PCIe配置空间中实现的NVM设备102的一个BAR 124。PCIe配置空间存储NVM装置102的配置信息。主机150访问NVM装置102的配置信息以通过主机150的NVMe驱动器层和NVM装置102实现驱动器访问,以访问NVM装置102的NVM部分106A至106E。
在免驱动访问模式中,主机150可激活在PCIe存储空间或对应于DeviceA_bar2的虚拟内存空间中实现的NVM装置102的另一个BAR124。主机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的NVM230的基于NVMe的主机访问200或驱动器访问的一个实施方案的示意图,但其他系统可适用。基于NVMe的主机访问200包括通过由主机250的应用程序210发起的命令来管理NVM装置202的主机250。主机250的应用程序210将命令(例如读取或写入命令)发送到主机250的文件系统层212。文件系统层212将命令传递给主机250的NVMe设备驱动器214。NVMe设备驱动器214可从主机250的DRAM 216加载队列消息并将队列消息存储到主机250的DRAM 216。NVMe驱动器214将读/写命令传递到在PCIe通信协议下操作的主机250的PCIe层218。
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到NVM230。
图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范围并且然后通过PCIe层直接寻址这些LBA来绕过NVMe层。主机250可通过PCIe直接访问该地址空间,并读取和写入该地址空间。
在某些实施方案中,在免驱动访问路由240中,控制器110可将多个免驱动访问请求聚合或绑定成到NVM接口114的猝发操作。多个免驱动访问命令可聚集在易失性存储器112中。NVM接口114可将猝发操作执行为对NVM 106的单个请求。对于包括NAND闪存的NVM106,猝发操作可以提高性能,因为可减少NAND闪存管芯的空闲时间。
在某些方面,PCIe将NVM装置202中的NVM 230转换成存储器孔,将存储器孔暴露给主机250中的内存地址空间。PCIe协议将存储器孔映射到主机250上的内存地址空间。NVM230可作为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,而不是路由到DRAM216。对NVM 230的免驱动访问通过绕过主机250的NVMe驱动器214和NVM装置202的NVMe层222来减少主机250和NVM装置202之间的等待时间。
图3是示出参考图1的系统描述的外围设备390诸如相机对NVM装置302的NVM 330的基于NVMe的主机访问300或者驱动器访问的一个实施方案的示意图,但是其他系统可适用。例如,诸如PCIe外围设备的外围设备390可提供要写入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访问NVM330以将数据写入NVM 330。总之,当外围设备390提供对NVM 330的基于NVMe的访问时,数据从外围设备390传递到DRAM 316到文件系统层312到NVMe驱动器314到主机的PCIe层318到NVM装置的PCIe层320到NVMe层322到前端层324到访问FTL模块328的数据路径层326到NVM330。
图3还示出了免驱动访问路由340到NVM 330的写入路径的一个实施方案。在免驱动访问路由340的写入路径的一个实施方案中,外围设备提供要写入主机350的PCIe层318的数据。NVM装置302的PCIe层320从主机350接收数据并将数据传递到NVM装置302的数据路径层326。数据路径层326访问NVM 330以将数据写入NVM 330。总之,当外围设备390向NVM330提供免驱动写数据时,数据从外围设备390传递到PCIe层318到NVM装置302的PCIe层320到数据路径层326到NVM 330。
通过免驱动访问路由340启用更短的PCIe到PCIe路由。在免驱动访问路由340中,指示控制器110绕过NVMe文件系统表并将分配的BAR视为虚拟到物理地址映射。PCIe协议允许将LBA范围映射到其自己的虚拟内存地址空间,并允许使用PCIe事务直接访问这些LBA,从而绕过NVMe层。PCIe协议用于通过映射特定LBA范围并且然后通过PCIe层直接寻址这些LBA来绕过NVMe层。主机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直接管理NVM 330,例如通过执行和管理地址转换。
将物理地址映射到分配给外围设备390的虚拟地址空间通过CPU的加载/存储存储器事务而不是通过读/写常规主机事务来提供对特定地址范围的免驱动访问。对NVM 330的免驱动访问通过绕过主机350的NVMe驱动器314和NVM装置302的NVMe层322来减少外围设备390和NVM装置302之间的等待时间。
在某些实施方案中,主机350可将外围设备390配置为与NVM装置102的NVM 106的所分配部分相对应的BAR,此类写配置发命令到主机350和/或NVM装置302的PCIe控制器。在某些实施方案中,所分配的BAR存储器可由外围设备390(或第二主机)访问而不涉及主机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提供要执行的命令。DRAM 316将要执行的命令发送到文件系统层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。方法400的一个或多个框400可由CPU 152、控制器110或执行存储在NVM装置102或主机150中的计算机可读程序代码(例如,软件或固件)可执行指令的其他控制器来执行。
在框410处,NVM 106的一部分由主机150通过通信协议(诸如通过PCIe协议)动态映射到主机150的内存地址空间154中。NVM部分的大小可由主机基于主机的要求或需求动态地分配。主机150可通过激活对应于NVM装置102的NVM 106的各个部分的一个或多个BAR,将NVM 106动态映射到主机150的内存地址空间154中。
在框420处,NVM装置102的控制器110接收免驱动访问命令。例如,可通过将NVM106的一部分映射到内存地址空间154中的存储器孔236来接收免驱动访问命令。
在框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的NVM106的一部分对应的BAR将NVM 106的一部分映射到主机150的内存地址空间154中,并且可分配另一部分NVM 106用于驱动器访问。
在另一个实施方案中,NVM 106的重叠部分可被分配用于框440处的免驱动访问和框470处的驱动器访问。例如,与用于免驱动访问的NVM106的一部分对应的一个BAR可是活动的,而驱动器访问可是不活动的。类似地,与用于免驱动访问的NVM 106的一部分对应的一个BAR可是不活动的,而驱动器访问可是活动的。
方法400使用相同的通信协议(诸如PCIe通信协议)向NVM装置102提供免驱动访问和驱动器访问。在相同通信协议上的NVM装置102可使用不同的LBA范围同时完成免驱动访问命令和驱动器访问命令。在相同通信协议上的NVM装置102可使用重叠LBA范围在不同时间完成免驱动访问命令和驱动器访问命令。
在某些实施方案中,驱动器访问可是在PCIe上的基于NVMe的访问。在某些实施方案中,免驱动访问可通过由PCIM BAR(诸如PCIe BAR4)将NVM 106映射到主机150的内存地址空间154来实现。主机150可将NVMe命令排队,同时还将加载/存储直接访问命令发送到映射到NVM 106的PCIe BAR。
主机150或外围设备190可使用免驱动访问来减少等待时间。免驱动访问可用于减少对NVM 106的顺序数据写入/读取的延迟,因为可避免对所访问数据的缓冲。免驱动访问可用于减少任何类型的数据(顺序或随机)的延迟,因为NVMe层和其他层在主机150和NVM装置102中被绕过。方法400可应用于NVM装置102的NVM 106的任何访问命令,诸如单个访问命令或多个访问命令。
图5是示出在参考图1的系统100所描述的免驱动访问模式下操作NVM装置102的方法500的一个实施方案的示意图,虽然其他NVM装置可适用。方法500的一个或多个框可通过控制器110执行存储在NVM装置102或主机150中的计算机可读程序代码(例如,软件或固件)可执行指令来执行。
在框510处,初始化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的其他BAR124。框510,520,530,540和可以重复以重新建立无人驾驶访问模式至具有NVM设备102的不同大小的NVM106和/或不同的对准尺寸的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的部分以用于免驱动访问。例如,映射NVM 106的一部分的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的NVM106的免驱动访问、通过PCIe协议的其他免驱动访问、通过PCIe协议的其他直接访问或通过其他通信协议的其他直接访问(统称为“直接访问”)可能使NVM装置102易受安全违规的影响。直接访问可会降低在主机级别运行的标准安全保护工具的有效性。例如,在主机150和NVM装置102之间建立的直接访问模式中,未授权或黑客设备或程序可绕过许可、NVMe安全协议和其他安全层。黑客设备或程序可识别与主机150处于直接访问模式,并且可尝试通过NVM 106到主机150的内存地址空间154的映射存储器孔建立其自己与NVM装置102的访问。黑客设备或程序可控制NVM106的映射部分。通过存储器孔访问NVM装置102的黑客设备或程序可能具有对关键区域(诸如系统文件、引导文件、密码、管理表、固件和擦除/无效数据)的不期望的读和写访问。此类安全违规可能难以检测。
图6是具有异常检测器模块620的NVM装置的控制器610的一个实施方案的示意图。控制器610可在图1的NVM装置102中实现,但其他NVM装置可适用。
图7是示出由图6的控制器610操作NVM装置的方法700的一个实施方案的示意图,但是其他NVM装置可适用。方法700包括以直接访问模式提供对NVM装置102的NVM 106的访问并检测潜在的安全违规。参考系统100和控制器610描述方法700,但是可使用其他系统和控制器。方法700的一个或多个框可通过控制器610执行存储在NVM装置102中的计算机可读程序代码(例如,软件或固件)可执行指令来执行。
在框710处,控制器610的参数跟踪模块630跟踪或监视与主机150的直接访问命令相关的一个或多个参数。一个可能的参数包括直接访问事务中访问的逻辑块地址(即,起始LBA地址和结束LBA地址)。另一个可能的参数包括直接访问命令的定时(即,当直接访问事务发生时)。另一个可能的参数包括在直接访问事务中访问的数据的大小。另一个可能的参数包括直接访问事务的源(即,是来自主机150或来自外围设备190的命令的源)。另一个可能的参数包括访问命令的类型(即,读访问、写访问)。跟踪或监视的其他参数是可能的。在其他实施方案中,NVM装置102可跟踪在直接访问事务中编程或读取的数据的内容。例如,NVM装置102可跟踪在直接访问事务中写入的0的模式、写入的1的模式和/或写入的0和1的比率。
从提供对NVM 106的直接访问的控制器610的PCIe层690跟踪一个或多个参数。跟踪或监视主机150的直接访问事务可包括跟踪或监视所有直接访问事务,或者可包括跟踪或监视直接访问事务的样本或一部分。在某些实施方案中,可跟踪或监视多个事务以创建事务的历史。对于跟踪或监视的多个事务的每个事务,可跟踪或监视一个或多个参数。可在多个交易的过程中确定一个或多个参数的变化率。例如,可跟踪或监视访问某些逻辑块地址的速率。
在框720处,控制器610的正常模式拟合模块640确定正常行为模式的阈值。可通过在框710处跟踪的一个或多个参数、通过在框710处跟踪的访问数据的内容、通过在性能测试处累积的数据和/或通过离线设置来确定正常行为模式的阈值。随着从框710累积新信息,可更新正常行为模式的阈值。在一个方面,NVM装置102确定在框710处收集的参数的模式或事务的统计或概率或事务的参数发生。
在一个实施方案中,当NVM装置102在运行时,可在线进行框720。在另一个实施方案中,当NVM装置102在操作中时,可通过用户模式页面设置阈值行为模式。在另一个实施方案中,框720可离线进行,诸如在NVM装置102的鉴定期间。例如,可离线创建查找表或正常行为的字典并将其上载到NVM装置102。
在框730处,控制器110的异常确定模块650确定是否已经超过在框720处确定的阈值行为模式的正常行为模式的阈值。例如,异常确定模块650确定事务是否是在框720处确定的模式的异常值。在某些实施方案中,确定是否已经超过正常行为模式的阈值可基于以下类别的技术中的一者或多者:无监督学习操作(基于确定模式的操作)、监督学习操作(基于正常和异常事务两者的数据集示例的操作)或半监督学习操作。
在某些实施方案中,确定是否已经超过阈值可基于以下技术中的一种或多种:基于密度的技术(例如,k-最近邻居、局部异常因子)、高维数据的子空间和基于相关的异常值检测、一类支持向量机、复制器神经网络、基于聚类分析的异常值检测、与关联规则和频繁项目集的偏差、基于模糊逻辑的异常值检测和集合技术(即,使用特征套袋、分数归一化、不同的多样性来源等)。例如,对地址空间的一小部分的过多数量的读/写可指示可疑的直接访问事务。在另一个实施例中,具有隔离的写入事务的多个读取事务的模式可指示可疑的直接访问事务。
在框740处,如果在框730处确定超过阈值,则控制器610的对策模块660可执行对策。对策的一个实施例包括在超过阈值或检测到异常时提供警报。警报可被发送到主机150。警报还可包括检测到的异常是低安全风险、中等安全风险还是高安全风险的置信度。警报还可启用关于主机是批准还是不批准可疑交易的反馈。
对策的另一实施例包括通过检查通过根复合体153识别的源来识别有问题的访问命令的源,诸如查看枚举信息。对策的另一个实施例包括选择性地阻止有问题的所识别的直接访问事务的源。对策的另一个实施例包括选择性地限制或延迟对有问题的所识别的直接访问交易的源的访问。如果可疑的直接访问命令继续,则可能会增加限制或延迟访问。
对策的另一实施例包括创建警报的日志或超过阈值或检测到异常的实例。该日志可包括在框710处跟踪的一个或多个参数。日志可包括警报的历史或超过阈值或检测到异常的实例。该日志可包括检测到的异常是低安全风险、中等安全风险还是高安全风险的置信度。日志可存储在NVM 106中。在一个实施方案中,主机150可查看日志。在另一个实施方案中,控制器610可将该日志与其他对策结合使用。例如,在警报的一定数量、速率(即,很快一个接一个)和/或级别或者阈值的实例被超过或者检测到异常之后,NVM装置102可增加对策的严重性。异常检测器模块620可从任何对策开始并且增加到任何其他对策。例如,异常检测器模块620可以节流作为对策开始,然后如果异常继续或增加则增加阻塞的对策。
在某些实施方案中,提供了NVM装置102的NVM 106的直接访问的异常检测。NVM装置102的异常检测可识别主机150不能识别或没有识别的潜在安全违规。对异常检测的对策可是静态动作,诸如通知主机150,或主动动作,诸如限制访问或阻止访问。在某些实施方案中,如果可疑的直接访问命令继续,则对策可从静态动作切换到主动动作。
在某些实施方案中,NVM装置102提供关于直接访问交易的安全保护。安全保护可包括识别可疑交易,并且可包括识别可疑直接访问命令的来源。安全保护可包括在识别可疑直接访问事务时实施对策。在某些方面,在直接访问模式下可能无法绕过这些安全保护。
在一个实施方案中,用于提供对非易失性存储器装置的非易失性存储器的访问的方法包括接收存储器请求。如果所接收的存储器请求是直接存取存储器请求,则绕过非易失性存储器装置的主机接口协议层。如果所接收的存储器请求是非直接存取存储器请求,则将非直接存取存储器请求发送到主机接口协议层。在某些实施方案中,主机接口协议层是NVM Express协议层。在某些实施方案中,该方法还包括建立到主机的PCIe链路。在某些实施方案中,该方法还包括在非易失性存储器内为直接存储器请求分配物理地址空间。物理地址空间可由用于非易失性存储器装置的基地址寄存器确定。物理地址空间的大小可动态分配。非易失性存储器装置内的物理地址空间可重新分配给新的存储器请求。可通过直接访问存储器请求和新的非直接访问请求来直接访问和非直接访问部分或更多物理地址空间。
在一个实施方案中,用于提供对非易失性存储器装置的非易失性存储器的访问的方法包括跟踪与非易失性存储器的多个直接访问事务有关的参数。基于跟踪的参数确定主机活动的阈值行为模式。检查直接访问事务以确定是否超过阈值行为模式。可通过在线跟踪所跟踪参数的变化率来确定阈值行为模式。可通过离线生成查找表来确定阈值行为模式。阈值行为模式可由用户模式页面设置。可通过分析来自直接访问事务的编程数据来确定阈值行为模式。所跟踪的参数可是访问的LBA地址、直接访问事务的定时、直接访问事务的事务大小、直接访问事务的源、直接访问事务中请求的访问类型,或其他合适的参数。可为每个直接访问事务跟踪多个参数。可利用机器学习来确定直接访问事务之一是否已超过阈值行为模式。
在另一个实施方案中,用于提供对非易失性存储器装置的非易失性存储器的访问的方法包括监视与非易失性存储器的直接访问事务有关的参数。检查直接访问事务以确定是否超过阈值行为模式。执行对超过阈值行为模式的直接访问事务的对策。对策可包括发送直接访问事务已超过阈值行为模式的警报。警报可包括直接访问事务是安全违规的置信度。该对策还可包括接收对直接访问交易是否被授权的确认。对策可包括识别超过阈值行为模式的直接访问事务的源。可限制提供给超过阈值行为模式的直接访问事务的所识别的源的直接访问。可阻止提供给超过阈值行为模式的直接访问事务的所识别的源的直接访问。如果继续超过阈值行为模式,则可增加对策的严重性。
在一个实施方案中,非易失性存储器装置包括控制器。非易失性存储器耦接到控制器。控制器可操作以提供对非易失性存储器的直接访问。控制器包括异常检测器模块,以确定是否已超过用于直接访问的阈值行为模式。可通过监视多个直接访问事务的参数来确定阈值行为模式。可从模式页面设置确定阈值行为模式。可以从查找表确定阈值行为模式。可基于机器学习确定超过阈值行为模式。
在另一个实施方案中,非易失性存储器装置包括控制器。控制器包括异常检测器装置。非易失性存储器耦接到控制器。控制器可操作以提供对非易失性存储器的直接访问。异常检测器装置可操作以检测可疑的直接访问事务。异常检测器装置可监视直接访问的参数。异常检测器装置可标记可疑的直接访问事务。
虽然前述内容针对本公开的实施方案,但是可在不脱离本公开的基本范围的情况下设计本公开的其他和进一步的实施方案,并且本公开的范围由所附权利要求确定。
Claims (27)
1.一种由主机对非易失性存储器装置即NVM装置的非易失性存储器即NVM进行免驱动访问的方法,所述NVM装置具有NVM驱动器,所述主机具有主机驱动器和主机动态随机存取存储器即DRAM,所述方法包括:
通过激活与所述NVM装置的所述NVM的物理区域对应的基地址寄存器,初始化PCIe存储空间,以通过所述主机和所述NVM装置之间的PCIe链路将所述NVM装置的所述NVM的一部分映射到主机内存空间;
协商最小事务分组大小的对准大小以完成加载/存储命令;
将加载/存储命令发送到所述PCIe存储空间以通过绕过所述主机DRAM、所述主机驱动器以及所述NVM驱动器进行所述NVM的免驱动访问;以及
将读/写命令发送到所述主机的所述主机驱动器以用于路由通过所述主机DRAM、所述主机驱动器以及所述NVM驱动器的驱动器访问。
2.根据权利要求1所述的方法,其中所述对准大小通过以下步骤协商:
通告所述NVM装置支持的对准模式;以及
接收所述主机对所述对准模式的选择。
3.根据权利要求1所述的方法,其中所述对准大小通过以下步骤协商:
通告所述NVM装置支持的对准模式;以及
响应于在超时时段内未收到对准模式选择,则以默认对准模式继续进行。
4.根据权利要求1所述的方法,其中所述加载/存储命令通过所述PCIe链路发送到所述NVM装置的控制器。
5.根据权利要求1所述的方法,其中将所述加载/存储命令发送至控制器的数据路径层以访问所述NVM装置的所述NVM。
6.根据权利要求5所述的方法,其中所述数据路径层访问闪存转换层以根据所述加载/存储命令在所述NVM中执行读/写操作。
7.根据权利要求5所述的方法,其中所述数据路径层将所述加载/存储命令聚合在到非易失性存储器接口的猝发操作中以执行读/写操作。
8.一种由主机对非易失性存储器装置即NVM装置的非易失性存储器即NVM进行驱动器访问和免驱动访问的方法,所述NVM装置具有NVM驱动器,所述主机具有主机驱动器和主机动态随机存取存储器即DRAM,所述方法包括:
通过激活与所述NVM装置的所述NVM的物理区域对应的基地址寄存器,初始化PCIe存储空间,以通过所述主机和所述NVM装置之间的PCIe链路将所述NVM装置的所述NVM的一部分映射到主机内存空间;
用所述NVM装置的配置信息初始化PCIe配置空间;
将加载/存储命令发送到所述PCIe存储空间用于绕过所述主机DRAM、所述主机驱动器以及所述NVM驱动器的免驱动访问;
以及
将读/写命令发送到所述主机的所述主机驱动器以用于使用所述NVM装置的所述配置信息的路由通过所述主机DRAM、所述主机驱动器以及所述NVM驱动器的驱动器访问。
9.根据权利要求8所述的方法,其中所述主机驱动器向所述NVM装置的所述NVM驱动器发送读/写命令。
10.根据权利要求8所述的方法,还包括在所述NVM的不同部分中并行执行所述加载/存储命令和所述读/写命令。
11.根据权利要求8所述的方法,还包括对所述NVM的重叠部分顺序执行所述加载/存储命令和所述读/写命令。
12.根据权利要求8所述的方法,还包括通过将所述NVM的另一部分映射到所述主机的逻辑地址,重新初始化所述PCIe存储空间以用于对所述NVM装置的免驱动访问。
13.根据权利要求12所述的方法,其中所述PCIe存储空间被重新初始化以改变所述NVM的映射大小以用于免驱动访问。
14.一种由主机访问非易失性存储器装置的非易失性存储器的方法,包括:
在所述主机和所述非易失性存储器装置之间建立第一PCIe链路,以及在所述主机和外围设备之间建立第二PCIe链路;
初始化PCIe存储空间,通过所述主机和所述非易失性存储器装置之间的所述第一PCIe链路将所述非易失性存储器装置的所述非易失性存储器的一个或多个部分映射到主机内存空间;以及
通过寻址映射所述非易失性存储器装置的所述非易失性存储器的一个或多个部分的所述PCIe存储空间,将数据从所述外围设备通过所述第二PCIe链路路由到所述第一PCIe链路。
15.根据权利要求14所述的方法,其中所路由的数据绕过所述主机的易失性存储器。
16.根据权利要求14所述的方法,其中所路由的数据绕过所述非易失性存储器装置的驱动器层。
17.根据权利要求14所述的方法,其中所述数据通过所述第二PCIe链路并通过所述第一PCIe链路从所述外围设备路由到所述非易失性存储器装置的数据路径层。
18.根据权利要求17所述的方法,其中所述数据路径层对所述数据执行到所述非易失性存储器的顺序写入操作。
19.一种计算机系统,包括:
主机装置,所述主机装置包括主机内存空间;和
非易失性存储器装置,所述非易失性存储器装置包括非易失性存储存储器和耦接到所述非易失性存储存储器的控制器,
其中所述主机装置被配置为动态地激活和去激活所述非易失性存储存储器的映射到所述主机内存空间用于所述主机装置的直接访问的一个或多个部分。
20.根据权利要求19所述的计算机系统,其中所述主机装置可操作以通过映射到所述主机内存空间的存储器孔访问所述非易失性存储器装置。
21.根据权利要求19所述的计算机系统,其中所述主机装置包括将所述非易失性存储存储器连接到所述主机内存空间中的存储器孔的通信链路。
22.根据权利要求19所述的计算机系统,其中所述主机装置可操作以将加载/存储命令发送到所述主机内存空间以访问所述非易失性存储存储器。
23.根据权利要求19所述的计算机系统,其中所述主机装置还被配置为建立对所述非易失性存储存储器的驱动器访问。
24.一种非易失性存储器装置,包括,
链路接口,所述链路接口被配置为连接到主机;
非易失性存储器;和
控制器,所述控制器耦接到所述非易失性存储器,其中所述控制器被配置为:
接收免驱动访问命令;
路由所述免驱动访问命令以绕过主机接口协议层;
接收驱动器访问命令;以及
将所述驱动器访问命令路由到所述主机接口协议层。
25.根据权利要求24所述的装置,其中所述主机接口协议层包括NVMExpress接口协议层。
26.根据权利要求24所述的装置,其中所述链路接口是PCIe链路接口。
27.根据权利要求24所述的装置,其中所述主机动态地激活和去激活一个或多个BAR,以便为所述免驱动访问命令提供免驱动访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/847,671 US10929309B2 (en) | 2017-12-19 | 2017-12-19 | Direct host access to storage device memory space |
US15/847,671 | 2017-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933283A CN109933283A (zh) | 2019-06-25 |
CN109933283B true CN109933283B (zh) | 2022-06-28 |
Family
ID=66674941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811322092.XA Active CN109933283B (zh) | 2017-12-19 | 2018-11-08 | 直接主机访问存储装置存储空间 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10929309B2 (zh) |
KR (1) | KR102335063B1 (zh) |
CN (1) | CN109933283B (zh) |
DE (1) | DE102018123817A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10956071B2 (en) | 2018-10-01 | 2021-03-23 | Western Digital Technologies, Inc. | Container key value store for data storage devices |
US10769062B2 (en) | 2018-10-01 | 2020-09-08 | Western Digital Technologies, Inc. | Fine granularity translation layer for data storage devices |
US10740231B2 (en) | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
US10860333B1 (en) | 2019-10-14 | 2020-12-08 | Western Digital Technologies, Inc. | Interleaved host reset and next re-initialization operations |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
US11487544B2 (en) * | 2020-01-15 | 2022-11-01 | Western Digital Technologies, Inc. | Method and device for simultaneously decoding data in parallel to improve quality of service |
US11249921B2 (en) | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
CN111783163A (zh) * | 2020-07-01 | 2020-10-16 | 联想(北京)有限公司 | 一种主机保护区的实现方法、装置和电子设备 |
US11733931B1 (en) * | 2020-07-13 | 2023-08-22 | Meta Platforms, Inc. | Software defined hybrid flash storage memory controller |
CN114816263A (zh) * | 2020-09-18 | 2022-07-29 | 星宸科技股份有限公司 | 存储访问方法及智能处理装置 |
CN112256601B (zh) * | 2020-10-19 | 2023-04-21 | 苏州凌云光工业智能技术有限公司 | 数据存取控制方法、嵌入式存储系统及嵌入式设备 |
CN114968855A (zh) * | 2021-02-18 | 2022-08-30 | 西部数据技术公司 | 对持久性存储区域范围的一致访问 |
CN112835842B (zh) * | 2021-03-05 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
US11640335B2 (en) | 2021-06-15 | 2023-05-02 | Western Digital Technologies, Inc. | Multiple function level reset management |
US20230056018A1 (en) * | 2021-08-23 | 2023-02-23 | Infineon Technologies Ag | Anamoly detection system for peripheral component interconnect express |
US11922034B2 (en) | 2021-09-02 | 2024-03-05 | Samsung Electronics Co., Ltd. | Dual mode storage device |
CN114003170B (zh) * | 2021-09-17 | 2024-03-19 | 方一信息科技(上海)有限公司 | 一种基于FPGA的Raid卡驱动方法 |
US11841767B2 (en) | 2021-11-24 | 2023-12-12 | Samsung Electronics Co., Ltd. | Controller controlling non-volatile memory device, storage device including the same, and operating method thereof |
US20230409234A1 (en) * | 2022-05-17 | 2023-12-21 | Western Digital Technologies, Inc. | Data Storage Device and Method for Host Multi-Command Queue Grouping Based on Write-Size Alignment in a Multi-Queue-Depth Environment |
CN117453279B (zh) * | 2023-12-26 | 2024-03-19 | 中国人民解放军国防科技大学 | 一种适用于太空强辐射环境下的星载设备硬件架构 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257714B1 (en) * | 1999-10-19 | 2007-08-14 | Super Talent Electronics, Inc. | Electronic data storage medium with fingerprint verification capability |
CN101515472A (zh) * | 2008-02-19 | 2009-08-26 | 南亚科技股份有限公司 | 存取存储器芯片的方法 |
CN102810068A (zh) * | 2011-05-30 | 2012-12-05 | 三星电子株式会社 | 存储装置、存储系统和使存储装置虚拟化的方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN105005536A (zh) * | 2015-07-01 | 2015-10-28 | 忆正科技(武汉)有限公司 | 固态存储设备、主机的工作方法及固态存储设备、主机 |
CN105164980A (zh) * | 2014-04-04 | 2015-12-16 | 华为技术有限公司 | 众核下网络数据的分发方法及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001247225A1 (en) | 2000-03-17 | 2001-10-03 | Emperative, Inc. | Communications services provisioning method and apparatus and object programminglanguage for developing provisioning models |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US7861122B2 (en) | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US8775718B2 (en) | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
CN102308282A (zh) | 2011-07-20 | 2012-01-04 | 华为技术有限公司 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
US10037272B2 (en) | 2012-08-08 | 2018-07-31 | Avalanche Technology, Inc. | Storage system employing MRAM and array of solid state disks with integrated switch |
US8966172B2 (en) | 2011-11-15 | 2015-02-24 | Pavilion Data Systems, Inc. | Processor agnostic data storage in a PCIE based shared storage enviroment |
WO2013163612A1 (en) | 2012-04-27 | 2013-10-31 | Magpie Sensing Llc | Environmental monitoring |
US20130343131A1 (en) * | 2012-06-26 | 2013-12-26 | Lsi Corporation | Fast tracking for flash channels |
US20140101370A1 (en) | 2012-10-08 | 2014-04-10 | HGST Netherlands B.V. | Apparatus and method for low power low latency high capacity storage class memory |
US8880771B2 (en) * | 2012-10-25 | 2014-11-04 | Plx Technology, Inc. | Method and apparatus for securing and segregating host to host messaging on PCIe fabric |
US20140237156A1 (en) * | 2012-10-25 | 2014-08-21 | Plx Technology, Inc. | Multi-path id routing in a pcie express fabric environment |
CN103838676B (zh) | 2012-11-22 | 2017-10-17 | 华为技术有限公司 | 数据存储系统、数据存储方法及pcm桥 |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US8949486B1 (en) | 2013-07-17 | 2015-02-03 | Mellanox Technologies Ltd. | Direct memory access to storage devices |
WO2017031126A1 (en) * | 2015-08-17 | 2017-02-23 | Brocade Communications Systems, Inc. | Pci express connected network switch |
US20170139849A1 (en) | 2015-11-17 | 2017-05-18 | HGST Netherlands B.V. | Driverless storage device using serially-attached non-volatile memory |
-
2017
- 2017-12-19 US US15/847,671 patent/US10929309B2/en active Active
-
2018
- 2018-09-26 DE DE102018123817.7A patent/DE102018123817A1/de active Pending
- 2018-09-27 KR KR1020180115194A patent/KR102335063B1/ko active IP Right Grant
- 2018-11-08 CN CN201811322092.XA patent/CN109933283B/zh active Active
-
2021
- 2021-01-05 US US17/142,027 patent/US11681634B2/en active Active
-
2023
- 2023-04-26 US US18/139,912 patent/US20240078188A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257714B1 (en) * | 1999-10-19 | 2007-08-14 | Super Talent Electronics, Inc. | Electronic data storage medium with fingerprint verification capability |
CN101515472A (zh) * | 2008-02-19 | 2009-08-26 | 南亚科技股份有限公司 | 存取存储器芯片的方法 |
CN102810068A (zh) * | 2011-05-30 | 2012-12-05 | 三星电子株式会社 | 存储装置、存储系统和使存储装置虚拟化的方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN105164980A (zh) * | 2014-04-04 | 2015-12-16 | 华为技术有限公司 | 众核下网络数据的分发方法及系统 |
CN105005536A (zh) * | 2015-07-01 | 2015-10-28 | 忆正科技(武汉)有限公司 | 固态存储设备、主机的工作方法及固态存储设备、主机 |
Also Published As
Publication number | Publication date |
---|---|
US11681634B2 (en) | 2023-06-20 |
US20210124692A1 (en) | 2021-04-29 |
US20240078188A1 (en) | 2024-03-07 |
US10929309B2 (en) | 2021-02-23 |
CN109933283A (zh) | 2019-06-25 |
KR102335063B1 (ko) | 2021-12-02 |
US20190188153A1 (en) | 2019-06-20 |
DE102018123817A1 (de) | 2019-06-19 |
KR20190074194A (ko) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933283B (zh) | 直接主机访问存储装置存储空间 | |
US11720283B2 (en) | Coherent access to persistent memory region range | |
US11354454B2 (en) | Apparatus and method of detecting potential security violations of direct access non-volatile memory device | |
US8041940B1 (en) | Offloading encryption processing in a storage area network | |
US11663328B2 (en) | Detection of compromised storage device firmware | |
US8190815B2 (en) | Storage subsystem and storage system including storage subsystem | |
US11714548B2 (en) | System and method for identifying SSDs with lowest tail latencies | |
US11544205B2 (en) | Peer storage devices sharing host control data | |
US10216447B1 (en) | Operating system management for direct flash over fabric storage devices | |
CN114968855A (zh) | 对持久性存储区域范围的一致访问 | |
US20160026582A1 (en) | Encrypt data of storage device | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
US20240037233A1 (en) | Ransomware and malicious software protection in ssd/ufs by nvme instructions log analysis based on machine-learning | |
EP4148572B1 (en) | Computational storage device and storage system including the computational storage device | |
US20240045958A1 (en) | Anti-malware algorithm and hw/fw for internal ssd health and storage space protection against cyber-attacks | |
EP3992799A1 (en) | Electronic device and automotive device | |
US20230144135A1 (en) | Trusted computing device and operating method thereof | |
US20230152988A1 (en) | Storage device and operation method thereof | |
CN115910161A (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 |