CN108885584A - 使用主机存储器缓冲区的无序读取传输 - Google Patents
使用主机存储器缓冲区的无序读取传输 Download PDFInfo
- Publication number
- CN108885584A CN108885584A CN201780021530.6A CN201780021530A CN108885584A CN 108885584 A CN108885584 A CN 108885584A CN 201780021530 A CN201780021530 A CN 201780021530A CN 108885584 A CN108885584 A CN 108885584A
- Authority
- CN
- China
- Prior art keywords
- host
- memory
- data
- memory buffers
- buffers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0656—Data buffering arrangements
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储器设备,该存储器设备可利用主机存储器缓冲区对提交队列中的命令进行重新排序。使用不同大小的主机虚拟缓冲区的提交队列中的无序命令可能是难以搜索的。因此,在被放入主机虚拟缓冲区之前,提交队列中的命令可在主机存储器缓冲区中被正确排序。当命令有序时,改进针对特定数据的搜索操作。
Description
技术领域
本专利申请整体涉及存储器设备。更具体地,本专利申请涉及命令队列的处理和存储器设备的数据传输。
背景技术
非易失性存储器系统诸如闪存存储器已被广泛用于消费产品中。闪存存储器能够以不同形式存在,例如,以在主机设备之间或作为嵌入主机设备中的固态盘(SSD)承载的便携式存储器卡的形式。闪存设备控制器接收来自主机的命令诸如读取命令。命令可包括管理命令(例如,用于设备配置和维护的命令)以及操作命令(例如,用于访问NAND介质的命令,包括擦除命令、写入命令和读取命令)。可存在针对提交命令的提交队列和等待执行命令的命令队列。复杂的协议诸如非易失性存储器高速(NVMe)可提供特定的排队机制以便递送最佳性能。但是,根据使用的协议,这些机制可能会导致效率低下。例如,当使用散集列表(SGL)机制时,待执行命令中的无序数据可能难以搜索/访问。由于对高性能存储的需求来自各种应用,诸如云计算、高性能计算和视频广播,需要改进的命令处理和数据传输。
发明内容
存储器设备可利用主机存储器缓冲区对提交队列中的命令进行重新排序。使用不同大小的主机虚拟缓冲区的提交队列中的无序命令可能是难以搜索的。因此,在被放入主机虚拟缓冲区之前,提交队列中的命令可在主机存储器缓冲区中被正确排序。当命令有序时,改进针对特定数据的搜索操作。
在一个实施方案中,存储器设备中的数据传输可包括从主机接收一个或多个读取命令。为所接收的读取命令动态地分配主机存储器缓冲区。所分配的主机存储器缓冲区的大小基于读取命令的传输大小。与读取命令相关联的数据被有序地存储在主机存储器缓冲区中。将所存储的数据从主机存储器缓冲区写入由主机分配的主机缓冲区,其中主机缓冲区与主机存储器缓冲区不同。可将所存储的数据传输到不同大小的多个主机缓冲区。主机缓冲区和主机存储器缓冲区被存储在主机的存储器中。主机存储器中的物理存储器位置基于散集列表(SGL)。SGL列表包括多个区段,该多个区段中的每个区段包括指向后续区段的指针。将数据存储在主机存储器缓冲区中包括将适当的偏移存储在所分配的主机存储器缓冲区中。每个区段包括描述符,该描述符包括指向由主机分配的主机缓冲区中的一个主机缓冲区的指针以及对该缓冲区的大小的指示。从主机接收的读取命令包括无序数据,并且主机存储器缓冲区中的数据当在主机存储器缓冲区中时被重新排序。
附图说明
图1A是示例性的非易失性存储器系统的框图。
图1B是包括多个非易失性存储器系统的存储模块的框图。
图1C是分级存储系统的框图。
图2A是非易失性存储器系统的控制器的示例性部件的框图。
图2B是非易失性存储器存储系统的非易失性存储器的示例性部件的框图。
图3是闪存设备控制器的框图。
图4是示出物理区域页面固定大小(PRP)条目的框图。
图5是示出散集列表(SGL)的框图。
图6示出了示例性SGL描述符的示例性类型。
图7是设备控制器操作的流程图。
具体实施方式
主机存储器缓冲区(HMB)可以是分配给存储器设备使用的主机存储器的一部分。具体地,存储器设备可在主机上使用HMB以用于任何数据存储。如本文所述,无序数据的数据传输可临时存储在HMB中,在该HMB中,在无序数据前进到初始分配的缓冲区之前对该无序数据进行重新排序。换句话讲,HMB可以是存储器设备与可对数据进行排序的原始主机缓冲区之间的中间存储装置。如果不在HMB中进行临时存储,则正被传输至最初分配的缓冲区的数据将会变得无序。由于主机缓冲区的大小不同,在使用散集列表(SGL)布置进行搜索时,无序数据可能会造成效率低下。不同大小的主机缓冲区中的有序数据可被更有效地访问。
图1A-2B是示例性存储器系统,其可实现在将主机存储器缓冲区中的数据传输至最初分配的主机缓冲区之前对该数据进行存储和重新排序。图1A为示出非易失性存储器系统的框图。非易失性存储器系统100包括控制器102和非易失性存储器,该非易失性存储器可由一个或多个非易失性存储器管芯104组成。如本文所用,术语管芯是指在单个半导体衬底上形成的一组非易失性存储器单元以及用于管理那些非易失性存储器单元的物理操作的相关电路。控制器102与主机系统交接,并将用于读取操作、编程操作和擦除操作的命令序列传输至非易失性存储器管芯104。非易失性存储器管芯104可存储主机的操作系统。
主机系统的示例包括但不限于个人计算机(PC),诸如台式计算机或膝上型计算机和其他便携式计算机、平板电脑、移动设备、蜂窝电话、智能电话、个人数字助理(PDA)、游戏设备、数字静态相机、数字摄影机和便携式媒体播放器。对于便携式存储器卡应用,主机可包括用于一个或多个类型存储器卡或闪存驱动器的内置插座,或主机可需要供存储器卡插入的适配器。存储器系统可包括其自身的存储器控制器和驱动程序,但是也可具有一些仅存储器系统,该仅存储器系统并非通过由主机执行的与存储器连接的软件来控制。在包含控制器的一些存储器系统中,尤其是嵌入主机内的那些存储器系统中,存储器、控制器和驱动程序通常在单个集成电路芯片上形成。主机可使用任何通信协议诸如但不限于安全数字(SD)协议、记忆棒(MS)协议和通用串行总线(USB)协议与存储器卡进行通信。
控制器102(其可以是闪存存储器控制器或设备控制器)可采取以下形式:例如,处理电路、微处理器或处理器和存储可由(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器。控制器102可被配置有硬件和/或固件以执行下文所述以及流程图中所示的各种功能。此外,部件中的被显示为位于控制器内部的一些部件还可被存储在控制器外部,并且也可使用其他部件。另外,短语“与…操作地通信”可指与一个或多个部件直接通信或间接通信(有线或无线),该部件可在或可不在本文中示出或描述。
如本文所用,闪存存储器控制器是管理存储在闪存存储器中的数据并与主机诸如计算机或电子设备通信的设备。除了本文所述的具体功能之外,闪存存储器控制器还可具有各种功能。例如,闪存存储器控制器可格式化闪存存储器,以确保存储器正常运行,标出坏的闪存存储器单元,以及分配备用单元以供将来替代故障的单元。备用单元的一部分可用于保持固件以操作闪存存储器控制器并实现其他特征。在操作中,当主机需要从闪存存储器读取数据或向其写入数据时,该主机将与闪存存储器控制器通信。如果主机提供待读取/写入数据的逻辑地址,则闪存存储器控制器可将从主机接收的逻辑地址转换为闪存存储器中的物理地址。(或者,主机可提供物理地址)。闪存存储器控制器还可执行各种存储器管理功能,诸如但不限于磨损均衡(分散写入以避免原本将被反复写入的特定存储器块用尽)和垃圾收集(在块满后,仅将有效的数据页移动到新块,使得可擦除和重新使用整个块)。
非易失性存储器管芯104可包括任何合适的非易失性存储介质,包括NAND闪存存储器单元和/或NOR闪存存储器单元。存储器单元可采取固态(例如,闪存)存储器单元的形式,并且可以是一次可编程、几次可编程或多次可编程的。存储器单元也可为单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或使用现已知或后来开发的其他存储器单元级技术。另外,存储器单元能够以二维或三维方式制造。
在控制器102和非易失性存储器管芯104之间的接口可以是任何合适的闪存接口。在一个实施方案中,存储器系统100可以是嵌入式存储器系统的一部分。例如,闪存存储器可嵌入主机内,诸如以安装在个人计算机中的固态盘(SSD)驱动器的形式。在另一个实施方案中,存储器系统100可以是基于卡的系统,诸如安全数字(SD)或微型安全数字(micro-SD)卡。
虽然在图1A中所示的示例中,非易失性存储器系统100包括单个信道,该单个信道位于控制器102和非易失性存储器管芯104之间,但本文所述的主题不限于具有单个存储器信道。例如,在一些NAND存储器系统架构中,诸如在图1B和1C中,2个、4个、8个或更多个NAND信道可存在于控制器和NAND存储器设备之间,具体取决于控制器能力。在本文所述的实施方案中的任何一个实施方案中,即使附图中示出了单个信道,但在控制器和存储器管芯之间可存在不止单个信道。
图1B示出了包括多个非易失性存储器系统100的存储模块200。因此,存储模块200可包括存储器控制器202,该存储器控制器与主机以及与存储系统204交接,该存储系统包括多个非易失性存储器系统100。存储器控制器202和非易失性存储器系统100之间的接口可以是总线接口,诸如串行高级技术附件(SATA)或外围组件接口快速(PCIe)接口。在一个实施方案中,存储模块200可以是固态驱动器(SSD),该固态驱动器诸如存在于便携式计算设备诸如膝上型计算机和平板电脑中。
图1C为示出分级存储系统的框图。分级存储系统210包括多个存储器控制器202,该多个存储器控制器各自控制相应的存储系统204。主机系统212可通过总线接口访问分级存储系统内的存储器。在一个实施方案中,总线接口可以是非易失性存储器高速(NVMe)接口或以太网光纤通道(FCoE)接口。在一个实施方案中,图1C中所示的系统可以是可由多个主机计算机访问的可机架安装的海量存储系统,诸如将存在于数据中心或者需要海量存储的其他位置中。
图2A是更详细地示出控制器102的示例性部件的框图。控制器102包括与主机交接的前端模块108、与一个或多个非易失性存储器管芯104交接的后端模块110,以及执行将在下文详细描述的功能的各种其他模块。前端模块108可与主机(例如,与HMB)通信。
模块可采取以下形式:例如被设计成与其他部件一起使用的封装的功能硬件单元、可由通常执行相关功能中的特定功能的(微)处理器或处理电路执行的程序代码(例如软件或固件)的一部分,或与较大系统交接的独立的硬件或软件部件。例如,每个模块可包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、栅极、或任何其他类型的硬件或其组合。作为另外一种选择或除此之外,每个模块可包括存储器硬件,诸如存储器104的一部分,该存储器的一部分例如包括能够利用处理器执行的指令以实现模块的一个或多个特征。当模块中的任何一个模块包括具有可利用处理器执行的指令的存储器的一部分时,该模块可包括或可不包括处理器。在一些示例中,每个模块可只是包括可利用处理器执行的指令以实现对应模块的特征的存储器104的一部分或其他物理存储器。
控制器102可包括寻址电路112。寻址电路112可利用来自主机的HMB以用于临时存储数据,该数据在被传输至先前分配的缓冲区之前可被重新排序。在一个实施方案中,寻址电路112可以是主机接口120和/或前端模块108的一部分。在另一个实施方案中,寻址电路112可以是在数据传输之前排队的命令的一部分。下文关于图7进一步描述该过程。
再次参考控制器102的模块,缓冲区管理器/总线控制器114管理随机存取存储器(RAM)116中的缓冲区并控制控制器102的内部总线仲裁。只读存储器(ROM)118存储系统引导代码。尽管图2A中示出了与控制器102分开定位,但在其他实施方案中,RAM 116和ROM118中的一者或两者可位于控制器内。在其他实施方案中,RAM和ROM的部分可位于控制器102内和控制器外。另外,在一些具体实施中,控制器102、RAM 116和ROM 118可位于独立的半导体管芯上。
前端模块108包括主机接口120和物理层接口(PHY)122,该主机接口和物理层接口提供与主机或下一级存储器控制器的电气接口。主机接口120的类型的选择可取决于使用的存储器的类型。主机接口120的示例包括但不限于SATA、SATA Express、SAS、光纤通道、USB、PCIe和NVMe。主机接口120通常有利于数据、控制信号和定时信号的传输。如本文所述,可通过主机接口120来促进到主机的HMB的数据传输。
后端模块110包括错误校正控制器(ECC)引擎124,该ECC引擎对从主机接收的数据字节进行编码,并且对从非易失性存储器读取的数据字节进行解码和错误校正。命令定序器126生成命令序列,诸如程序命令序列和擦除命令序列,以将其传输至非易失性存储器管芯104。RAID(独立驱动器冗余阵列)模块128管理RAID奇偶校验的生成和故障数据的恢复。RAID奇偶校验可作为针对被写入非易失性存储器系统100的数据的附加级别的完整性保护。在一些情况下,RAID模块128可以是ECC引擎124的一部分。存储器接口130向非易失性存储器管芯104提供命令序列以及从非易失性存储器管芯104接收状态信息。在一个实施方案中,存储器接口130可以是双数据速率(DDR)接口。闪存控制层132控制后端模块110的总体操作。
图2A中示出的系统100的附加部件包括闪存转换层(“FTL”)138,其执行非易失性存储器管芯104的存储器单元的磨损均衡。系统100还包括其他分立部件140,诸如外部电接口、外部RAM、电阻器、电容器或可与控制器102交接的其他部件。在另选的实施方案中,物理层接口122、RAID模块128和缓冲区管理/总线控制器114中的一者或多者是控制器102中非必需的任选部件。
FTL 138也可称为介质管理层(“MML”)。FTL 138可被集成为闪存管理或闪存控制层132的可处理闪存错误以及与主机交接的一部分。具体地,FTL可为负责NAND管理的内部构件的电路。具体地,FTL 138可包括存储器设备的固件中的功能或算法,该功能或算法将从主机读取/写入转换为读取/写入到闪存存储器104。FTL 138可接收命令(或访问命令队列)以用于执行(例如编程到非易失性存储器104或从非易失性存储器104读取)。通过访问命令队列,FTL 138可最佳地且高效地选择何时以及如何执行来自队列的命令。在一个示例中,FTL 138可将命令分组以提高访问非易失性存储器104的效率。
非易失性存储器系统100的后端(例如后端模块110、FTL 138或寻址电路112)的命令队列可包括来自前端(例如前端模块108)队列的所有命令。当命令包括无序数据时,该数据可被传输到主机的HMB以对其进行重新排序。
图2B是更详细地示出非易失性存储器管芯104的示例性部件的框图。非易失性存储器管芯104包括外围电路141和非易失性存储器阵列142。非易失性存储器阵列142包括非易失性存储器单元,该非易失性存储器单元用于存储数据并且可被布置在平面中。在一实施方案中,每个非易失性存储器芯片104可包括一个或多个平面。非易失性存储器单元可以是任何合适的非易失性存储器单元,包括处于二维和/或三维构型的NAND闪存存储器单元和/或NOR闪存存储器单元。外围电路141包括状态机152,该状态机152向控制器102提供状态信息。非易失性存储器管芯104还包括对数据进行缓存的数据高速缓存156。示例性外围电路141可包括时钟、泵、ESD、支路电流、电流接收器和/或密集的逻辑电路。
图3可为图1的一部分或可示出另选的实施方案。图3示出了设备控制器102、其内部块及其相互作用的实施方案。主机212使用将主机连接到存储器设备控制器102的物理接口发送命令到设备控制器102。行业中存在针对该接口定义的许多协议,诸如外围组件互连高速(PCIe)、SATA等。主机接口(MAC和PHY)302可实现三个低协议层(事务层、数据链路层和物理层)。主机接口302的责任可以是确保在主机212和存储器设备控制器102之间传输分组,而不出现在那些层中定义的错误。在一个实施方案中,存储器可以是闪存存储器或NAND存储器。
主机212可包括主机存储器缓冲区(HMB)300和主机缓冲区301。与数据的中间存储装置HMB 300相比,主机缓冲区301可以为多个虚拟存储器位置,该多个虚拟存储器位置最初被分配以用于与主机进行数据传输。HMB300可以是主机212的随机存取存储器(RAM)(例如DRAM)的一部分。主机存储器缓冲区300可以是被分配以由设备控制器102使用的缓冲区,该缓冲区不同于通常被分配用于数据传输的主机缓冲区。换句话说,设备控制器102访问主机212存储器。如下文进一步所述,主机存储器缓冲区300可被用作待传输数据的临时存储装置。临时存储可作为对无序数据进行重新排序以用于更高效操作的一种方式。
HMB 300是被分配以由存储器设备控制器在主机存储器中使用的缓冲区。其可以是能够被访问以由存储器设备控制器专用的主机存储器(除了所分配的主机缓冲区之外)。主机保证数据将有效并且有义务在可能导致数据丢失(断电、主机可能需要该缓冲区等)的任何操作之前通知控制器。主机必须在数据丢失之前让控制器确认该操作。在一个实施方案中,NVMe指定针对HMB的要求,该要求规定HMB被分配给控制器专用,并且保证数据有效。
命令解析器304接收操作以及管理主机命令,解析它们并检查主机命令的正确性。该命令解析器可与队列管理器306进行交互,以便将命令排队到适当的队列。在执行之前,主机命令可使用队列管理器306来等待执行。队列管理器可包括用于对待由命令执行器308执行的命令进行优先排序的仲裁机制。FTL 138可优化队列中的命令。可同时存在多次读取和写入访问(命令队列中所列出的),这可需要通过由队列管理器306提供的仲裁或优化机制来管理。仲裁机制可用于确定队列中命令的优先级,以用于确保高优先级命令在较低优先级命令之前排队等待执行。命令解析器304或队列管理器306可负责通过对队列中的请求或命令进行排序来控制控制器和设备之间的数据流。该顺序可基于请求的优先级、用于处理请求的资源的可用性、请求所需的地址、请求的年龄或者请求者的访问历史。
命令队列可以是用于按照优先级顺序、先进先出或以任何其他顺序延迟命令执行的队列。程序仅将命令放在队列中并可在队列被执行时执行其他进程,而不是在发送下一个命令之前等待每个命令被执行。队列可用于控制控制器与设备之间的数据流。命令可被放置在命令队列中并由队列管理器306进行排序。该顺序可基于请求的优先级、用于处理请求的资源的可用性、请求所需的地址、请求的年龄或请求者的访问历史。命令队列可由FTL138访问以用于执行。尽管图3中未示出,但命令分析器304、队列管理器306和命令执行器308可为主机接口模块(HIM)的一部分,诸如图2A中所示的主机接口120,该主机接口是前端108的一部分。主机接口302可包括主机层303或与主机层耦接以用于从主机212传输命令。HIM可包括主机接口MAC&PHY 302。另选地,队列管理器306可以是存储器后端(例如,闪存接口模块110)的一部分。
命令执行器308可以是FTL 138的负责命令选择和执行的一部分。待执行的命令可由队列管理器306进行仲裁,以通过向闪存接口模块(“FIM”)110发送感测和传输请求来选择下一个用于执行的命令。在一个实施方案中,FIM 110可生成至闪存104的感测/传输或程序操作。FIM 110通过发送闪存命令与闪存存储器104进行交互。
来自闪存转换层(FTL)138的闪存管理可负责内部存储器管理操作,诸如地址转换。FTL 138也可称为介质管理层(MML)。设备控制器可包括读取/写入直接存储器访问(DMA)310,其可负责在主机和设备之间传输数据。命令解析器304、队列管理器306、闪存管理138和命令执行器308可负责处理设备中的控制路径,而读取/写入DMA 310处理设备中的数据路径。设备固件124可控制和管理该逻辑的功能。在初始化阶段,固件可配置设备控制器102。在操作期间,固件124控制逻辑并管理闪存存储器104。固件124还可有助于命令解析和队列存储和访问。
在一个实施方案中,命令执行者308可将感测和传输请求排队到闪存命令队列312。FIM 110可使用该信息将命令发送至闪存存储器116。感测/传输请求可包括辅助FIM110的其他参数。例如,感测请求可包括闪存地址,而传输请求可包括待从闪存存储器104读取的数据的量。
本文所述的排队机制可在支持排队的架构或协议中使用,诸如利用排队机制的协议。此类存储器协议的一个示例是非易失性存储器高速(NVMe)。NVMe仅为使用排队的协议的一个示例,并且其他协议是可能的。为简单起见,下文所述的软件排队可指NVMe,但可适用于许多其他协议或架构。NVMe可减少延迟并利用支持安全和端到端数据保护来提供更快的性能,并且为企业和客户端平台提供灵活的架构。NVMe仅为主机控制器接口的一个示例,其中寄存器接口和命令集可适用于使用外围组件互连高速(PCIe)固态盘(SSD)的系统。NVMe可包括基于多队列的与主机和控制器的通信,从而写入主机存储器中的提交队列和完成队列。NVMe是基于提交/完成队列的协议,其中命令由主机创建并被放置在提交队列中。完成队列可发送信号到主机,通知其命令已被执行。当提交命令在提交队列中准备就绪时,设备从主机存储器中获取提交命令。可根据使用仲裁方案定义的优先级来执行提交命令。
NVMe可基于配对的提交和完成队列机制。命令由主机软件放置到提交队列中。完成项由控制器放置到相关联的完成队列中。提交队列和完成队列在主机存储器中被分配。主机存储器中的用于数据传输的物理存储器位置可使用物理区域页面固定大小(PRP)条目或散集列表(SGL)来指定。PRP相对于图4描述,并且SGL相对于图5描述。
图4是示出物理区域页面固定大小(PRP)条目的框图。每个命令可包括两个PRP条目。如果多于两个PRP条目是描述数据缓冲区所必需的,则可提供指向用于描述PRP条目的列表的PRP列表的指针。PRP方法假定每个主机缓冲区除了第一个主机缓冲区之外同样具有相同的固定大小,如图4所示。PRP列表将主机物理存储器映射到虚拟存储器(即最初分配的用于数据传输的主机缓冲区),如控制器所看到的。如下所述,当使用无序数据传输时,数据传输操作可被简化。针对PRP,每个主机缓冲区的大小是固定的,因此不需要实施搜索以在PRP列表中找到主机物理存储器地址。例如,如果主机缓冲区大小是固定的,并且设备控制器需要传输第四缓冲区(C3),则数据位于PRP列表的第三行,如图4所示。
命令可以是提交命令,该提交命令包括指向PRP列表的指针。PRP列表可包括多个命令。命令可包括缓冲区指针(bufPtr),该缓冲区指针指向主机存储器中的缓冲区。偏移标识符在缓冲区内所在的位置就是所需的数据所在的位置。缓冲区的大小是固定的,所以(即使是无序的)数据的传输可被简化。
图5是示出散集列表(SGL)的框图。虽然未显示,但主机缓冲区的大小可能会有所不同。每个缓冲区可由专用SGL数据块描述符来描述,其中指定了缓冲区的地址和大小。如果需要多于一个SGL区段来描述数据缓冲区,则SGL区段提供指向下一个SGL区段的指针。
图6示出了示例性SGL描述符的示例性类型。NVMe标准定义了图6中所示的几种类型的示例性SGL描述符。例如,SGL数据块描述符可描述单个主机缓冲区。SGL描述符可在主机存储器中连续存储。每组SGL描述符可称为SGL区段并可由SGL区段描述符来描述。可存在SGL供应商特定描述符,其可在替代实施方案中被定义。当设备控制器中的易失性存储器被限制时,可在传输数据之前从主机存储器中获取SGL,并且可仅获取相关信息,而不是预先获取整个SGL列表并提前将其存储在内部。代码可指十六进制值。SGL区段和SGL上一区段可为指向下一个SGL区段的指针。SGL数据块可包括指向缓冲区的指针和缓冲区的大小。
重新参考图5,示出了示例性的SGL使用。NVMe命令包含SGL区段描述符,该描述符指向一组SGL数据块描述符。此组中的上一个描述符是SGL上一个区段描述符,该描述符指向上一组SGL数据块描述符。鉴于缓冲区的大小不同,搜索待访问的主机缓冲区的地址可能需要设备控制器遍及整个SGL描述符列表以找到该地址。每个主机缓冲区的大小未知并且可以是SGL寻址的任何值,因此可能需要地址搜索。可在每次传输与命令相关联的数据时需要该搜索过程。地址搜索要求PCIe总线上的额外流量,这降低了总体性能并增加了功率。此外,地址搜索增加了延迟。在设备控制器等待所请求的SGL描述符时,主机DMA可能被阻止,因为它等待主机缓冲区地址以便完成到主机操作的写入。
图7是设备控制器操作的流程图。具体地,图7示出了当执行读取命令时所提议的NVMe设备控制器操作。每个读取数据都被写入HMB,从HMB读取,然后再次写入适当的主机缓冲区,之后才能在HMB中有序地累积完整的数据。HMB中的累积数据被排序,使得在处理SGL时不需要搜索过程。在一个实施方案中,仅当数据无序并且/或者当SGL正被使用时才可使用HMB。通过使用HMB所获得的效率是通过对数据进行重新排序,这些数据否则将被无序地放入主机缓冲区中并难以搜索/寻址。
在一个示例性实施方案中,数据被传输至HMB以及从HMB传输。在框702中,存储器设备控制器发起读取命令的数据传输阶段。可从主机接收读取命令。基于该读取命令,该读取命令的存储空间在框704中在HMB中被分配。HMB的所分配的大小可基于读取命令的总传输大小。具体地,HMB的所分配的大小可等于读取命令的总传输大小。在框706中,将当前数据组或数据块传输到主机,该主机包括所分配的存储器中的偏移。在框708中,可在预先分配的HMB块中以适当的偏移存储当前数据块。例如,当命令的大小为16KB并因此该设备在HMB中分配16KB,其中地址为X,第二个4KB的数据块首先准备就绪,因此该设备传输此块并将其写入到主机存储器中的地址X+4KB。
在框710中,执行检查以确定何时接收到针对所分配的HMB的最后数据。换句话讲,由于为HMB分配的量是已知的,因此一旦它已满,则针对该命令的数据传输已完成。如果HMB还未满,则继续将数据传输到HMB。当所有数据在HMB中均为可用的时,在框712-716中将数据传输至适当的主机缓冲区。在框712中,从HMB读取数据。在框714中,读取SGL描述符,并且在框716中,基于SGL描述符将数据写入到最初分配的主机缓冲区。SGL描述符可标识正确的主机缓冲区。从HMB读取数据可与读取SGL列表、SGL描述符并行,以及与基于SGL列表将数据写入正确的地址点并行。在框718中,一旦数据被传输出去,则解除对HMB的分配。
主机缓冲区可在SGL描述符中被描述或标识,并由命令提供。主机缓冲区可以是主机物理存储器的一部分,并且主机缓冲区不同于HMB。当主机将命令排队到提交队列时,主机期望在由该主机使用SGL描述符分配的主机缓冲区上获得数据。但是,该数据暂时被传递到HMB以进行重新排序。当数据从HMB被读取时,其被传输到先前分配的主机缓冲区,主机期望从该主机缓冲区读取数据。
在一个实施方案中,存储器设备可以是NVMe设备控制器,该NVMe设备控制器支持HMB和无序数据传输。设备控制器为每个待执行的读取命令动态地分配HMB存储器,而所分配的存储器的大小等于命令的整个传输大小的大小。HMB可用于将与命令相关联的每个数据组/数据块存储在适当位置,以便在进程结束时,数据将有序地存储在HMB中。当与主机读取命令相关联的数据在所分配的缓冲区中可用时,该设备控制器从HMB获取数据并将其写入已由主机使用SGL分配的适当的主机缓冲区。设备控制器可被配置为等待累积在HMB中的最后一个数据组/数据块,然后将数据从HMB写入主机缓冲区。
位于衬底内和/或上方的半导体存储器元件能够以二维或三维方式诸如二维存储器结构或三维存储器结构来布置。在二维存储器结构中,半导体存储器元件被布置在单个平面或单个存储器设备级别中。通常,在二维存储器结构中,存储器元件被布置在平面中(例如,在x-z方向平面中),该平面基本上平行于支撑存储器元件的衬底的主表面延伸。衬底可以是供存储器元件层在其上或其中形成的晶片,或者其可以是在形成后附接到存储器元件的承载衬底。作为非限制性示例,衬底可包括半导体诸如硅。
存储器元件能够以有序阵列诸如以多个行和/或列被布置在单个存储器设备级别中。然而,存储器元件能够以不规则构型或非正交构型布置。存储器元件可各自具有两个或多个电极或接触线,诸如位线和字线。
三维存储器阵列被布置成使得存储器元件占据多个平面或多个存储器设备级别,从而在三个维度(即,在x,y和z方向上,其中y方向基本上垂直于衬底的主表面,并且x和z方向基本上平行于衬底的主表面)上形成结构。作为非限制性示例,三维存储器结构可被竖直布置为多个二维存储器设备级别的叠层。作为另一个非限制性示例,三维存储器阵列可被布置为多个竖直列(例如,基本上垂直于衬底的主表面的列,即,在y方向上),其中每个列在每个列中具有多个存储器元件。列可被布置成二维构型,例如,在x-z平面中,从而形成元件位于多个竖直堆叠的存储器平面上的存储器元件的三维布置。三维方式的存储器元件的其他构型也可构成三维存储器阵列。
作为非限制性示例,在三维NAND存储器阵列中,存储器元件可耦接在一起以在单个水平(例如,x-z)存储器设备级别内形成NAND串。另选地,存储器元件可耦接在一起以形成竖直的NAND串,该竖直的NAND串横贯多个水平存储器设备级别。可设想到其他三维构型,其中一些NAND串包含单个存储器级别中的存储器元件,而其他串则包含跨多个存储器级别的存储器元件。三维存储器阵列也可被设计为处于NOR构型以及处于ReRAM构型。
通常,在单片三维存储器阵列中,一个或多个存储器设备级别在单个衬底上方形成。任选地,单片三维存储器阵列还可具有一个或多个存储器层,该一个或多个存储器层至少部分地位于单个衬底内。作为非限制性示例,衬底可包括半导体诸如硅。在单片三维阵列中,构成阵列中的每个存储器设备级别的层通常形成于阵列中的底层存储器设备级别的层上。然而,单片三维存储器阵列的相邻存储器设备级别的层可在存储器设备级别之间共享或具有居间层。
然后,二维阵列可单独形成,随后被封装在一起以形成具有多个存储器层的非单片存储器设备。例如,非单片堆叠的存储器可通过在单独的衬底上形成存储器级别并将存储器级别堆叠在彼此之上来构造。衬底可在堆叠前被减薄或从存储器设备级别移除,但由于存储器设备级别初始形成在独立的衬底上,因此所得的存储器阵列不是单片的三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片的)可形成在单独的芯片上,并随后封装在一起以形成叠层芯片存储器设备。
通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制和驱动存储器元件以实现诸如编程和读取之类功能的电路。该相关电路可与存储器元件位于同一衬底上和/或位于单独的衬底上。例如,用于存储器读写操作的控制器可位于单独的控制器芯片上和/或与存储器元件位于相同的衬底上。
本领域的技术人员将认识到,本发明不限于本文所述的二维和三维示例性结构,但涵盖如本文所述以及如本领域的技术人员所理解的本发明的实质和范围内的所有相关的存储器结构。
在本申请中,半导体存储器设备诸如在本申请中所述的那些可包括易失性存储器设备诸如动态随机存取存储器(“DRAM”)设备或静态随机存取存储器(“SRAM”)设备、非易失性存储器设备诸如电阻式随机存取存储器(“ReRAM”)、电可擦可编程只读存储器(“EEPROM”)、闪存存储器(其也可被视为EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”)以及能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的构型。例如,闪存存储器设备能够以NAND或NOR构型来配置。
存储器设备可由无源元件和/或有源元件以任何组合形成。作为非限制性示例,无源半导体存储器元件包括ReRAM设备元件,在一些实施方案中,该ReRAM设备元件包括电阻率切换存储元件诸如反熔丝相变材料等,以及任选地导引元件诸如二极管等。进一步通过非限制性示例,有源半导体存储器元件包括EEPROM和闪存存储器设备元件,其在一些实施方案中包括包含电荷存储区的元件,诸如浮栅、导电纳米粒子或电荷存储介电材料。
多个存储器元件可被配置为使得该多个存储器元件串联或使得每个元件能被单独访问。通过非限制性示例,处于NAND构型(NAND存储器)的闪存存储器设备通常包含串联连接的存储器元件。NAND存储器阵列可被配置为使得该阵列由多个存储器串组成,其中每个串由共享单根位线并作为群组被访问的多个存储器元件组成。另选地,存储器元件可被配置为使得每个元件均能够被单独访问,例如,NOR存储器阵列。NAND和NOR存储器构型是示例性的,并且存储器元件能够以其他方式配置。
“计算机可读介质”、“机器可读介质”、“传播信号”介质和/或“信号承载介质”可包括任何设备,该任何设备包括、存储、传送、传播或传输软件以由指令可执行系统、装置或设备使用或结合指令可执行系统、装置或设备使用。机器可读介质可选择性地为但不限于电子、磁性、光学、电磁、红外或半导体系统、装置、设备或传播介质。机器可读介质的示例的不完全列表将包括:具有一根或多根导线的电连接“电子器件”、便携式磁盘或光盘、易失性存储器诸如随机存取存储器“RAM”、只读存储器“ROM”、可擦可编程只读存储器(EPROM或闪存存储器)或光纤。机器可读介质还可包括其上印刷软件的有形介质,因为软件能够以电子形式存储为图像或呈另一种形式(例如,通过光学扫描),然后被编译和/或解释或以其他方式处理。经处理的介质随后可被存储在计算机和/或机器存储器中。在另选的实施方案中,专用硬件实现,诸如专用集成电路、可编程逻辑阵列和其他硬件设备,可被构造成执行本文所述方法中的一个或多个方法。可包括各种实施方案的装置和系统的应用程序可广泛地包括各种电子系统和计算机系统。本文所述的一个或多个实施方案可利用两个或多个特定互连的硬件模块或设备来实现功能,所述硬件模块或设备具有可在模块之间和通过模块传送的相关控制信号和数据信号,或者作为专用集成电路的一部分。因此,本系统涵盖软件、固件和硬件实现。
本文所述的实施方案的图示旨在提供对各种实施方案的结构的大体理解。这些图示不旨在用作对利用本文所述的结构或方法的装置和系统的所有元件和特征的完整描述。在查看本公开时,许多其他实施方案对于本领域的技术人员而言可能是显而易见的。其他实施方案可被利用并源自本公开,使得可在不脱离本公开的范围的情况下作出结构和逻辑替代和改变。另外,图示仅仅是代表性的,并且可能不按比例绘制。图示内的某些比例可被夸大,而其他比例可被最小化。因此,本公开和附图应被认为是示例性的而非限制性的。
旨在将前述详细描述理解为本发明可采取的而非作为本发明的定义的所选形式的图示。仅以下权利要求,包括所有等同物,旨在定义受权利要求书保护的本发明的范围。最后,应当指出本文所述的任何优选实施方案的任何方面可单独使用或彼此结合使用。
Claims (20)
1.一种用于存储器设备中数据传输的方法,包括:
从主机接收一个或多个读取命令;
为所接收的读取命令动态地分配主机存储器缓冲区,其中所分配的主机存储器缓冲区的大小基于所述读取命令的传输大小;
使用偏移将与所述读取命令相关联的数据存储在所述主机存储器缓冲区中;
写入来自所述主机存储器缓冲区的所存储的数据。
2.根据权利要求1所述的方法,其中所述主机存储器缓冲区为从所述主机上的存储器分配的一部分。
3.根据权利要求1所述的方法,其中所述写入还包括:将来自所述主机存储器缓冲区的所存储的数据传输至由所述主机分配的主机缓冲区,其中所述主机缓冲区不同于所述主机存储器缓冲区。
4.根据权利要求3所述的方法,其中所存储的数据被传输至不同大小的多个主机缓冲区。
5.根据权利要求3所述的方法,其中所述主机缓冲区和所述主机存储器缓冲区存储在所述主机的存储器中。
6.根据权利要求3所述的方法,其中主机存储器中的物理存储器位置基于散集列表(SGL)。
7.根据权利要求6所述的方法,其中将所述数据存储在所述主机存储器缓冲区中包括在所分配的主机存储器缓冲区中使用所述偏移以确定所述数据的顺序。
8.根据权利要求7所述的方法,其中所述SGL列表包括多个区段,所述多个区段中的每个区段包括指向后续区段的指针。
9.根据权利要求8所述的方法,其中所述区段中的每个区段包括描述符,所述描述符包括指向由所述主机分配的所述主机缓冲区中的一个主机缓冲区的指针以及对所述缓冲区的大小的指示。
10.根据权利要求1所述的方法,其中从所述主机接收的所述一个或多个读取命令包括无序数据。
11.根据权利要求10所述的方法,其中通过在所述主机存储器缓冲区中使用所述偏移来对所述主机存储器缓冲区中的数据进行重新排序。
12.一种主机设备,所述主机设备连接至存储器设备,所述主机设备包括:
一个或多个主机缓冲区,所述一个或多个主机缓冲区用于接收来自读取命令的数据,所述读取命令为从所述主机设备发布至所述存储器设备;和
主机存储器缓冲区,所述主机存储器缓冲区基于所述读取命令的传输大小来分配,其中在将所述数据传输至所述一个或多个主机缓冲区之前,所述主机存储器缓冲区临时存储并且使用偏移以用于对来自所述读取命令的所述数据进行排序。
13.根据权利要求12所述的主机设备,其中所述存储器设备利用非易失性存储器高速(NVMe)协议。
14.根据权利要求13所述的主机设备,其中所述主机存储器缓冲区为根据NVMe协议而位于所述主机设备中的存储装置。
15.一种用于存储器中数据传输的系统,所述系统包括:
用于接收读取命令的装置;
用于为所接收的读取命令分配主机存储器缓冲区的装置,其中所分配的主机存储器缓冲区的大小基于所述读取命令的传输大小;
用于使用偏移将与所述读取命令相关联的数据存储在所述主机存储器缓冲区中以确定所存储数据的顺序的装置;和
用于写入来自所述主机存储器缓冲区的所存储的数据的装置。
16.根据权利要求15所述的系统,还包括:
用于将来自所述主机存储器缓冲区的所存储的数据传输至由所述主机分配的主机缓冲区的装置。
17.根据权利要求16所述的系统,其中主机存储器中的物理存储器位置基于散集列表(SGL)。
18.根据权利要求17所述的系统,其中由所述主机分配的所述主机缓冲区的大小基于所述读取命令而变化。
19.根据权利要求16所述的系统,其中所述主机存储器缓冲区和所述主机缓冲区为主机设备处的存储器。
20.根据权利要求15所述的系统,其中从所述主机接收的所述读取命令包括数据,所述数据是无序的并且是使用所述主机存储器缓冲区进行重新排序的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/088,692 | 2016-04-01 | ||
US15/088,692 US10642496B2 (en) | 2016-04-01 | 2016-04-01 | Out of order read transfer with host memory buffer |
PCT/US2017/019397 WO2017172145A1 (en) | 2016-04-01 | 2017-02-24 | Out of order read transfer with host memory buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108885584A true CN108885584A (zh) | 2018-11-23 |
CN108885584B CN108885584B (zh) | 2022-09-27 |
Family
ID=58264631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780021530.6A Active CN108885584B (zh) | 2016-04-01 | 2017-02-24 | 使用主机存储器缓冲区的无序读取传输 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10642496B2 (zh) |
CN (1) | CN108885584B (zh) |
WO (1) | WO2017172145A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109845A (zh) * | 2019-04-26 | 2019-08-09 | 深圳忆联信息系统有限公司 | 缓存数据管理方法、装置、计算机设备及存储介质 |
WO2021062982A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息系统有限公司 | 管理hmb内存的方法、装置、计算机设备及存储介质 |
CN112988623A (zh) * | 2019-12-17 | 2021-06-18 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
WO2023087861A1 (zh) * | 2021-11-16 | 2023-05-25 | 深圳忆联信息系统有限公司 | 基于固态硬盘的写放大优化方法、装置及计算机设备 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339079B2 (en) * | 2014-06-02 | 2019-07-02 | Western Digital Technologies, Inc. | System and method of interleaving data retrieved from first and second buffers |
US10482010B2 (en) * | 2017-06-29 | 2019-11-19 | Intel Corporation | Persistent host memory buffer |
US10372378B1 (en) | 2018-02-15 | 2019-08-06 | Western Digital Technologies, Inc. | Replacement data buffer pointers |
US10613778B2 (en) | 2018-03-21 | 2020-04-07 | Western Digital Technologies, Inc. | Dynamic host memory allocation to a memory controller |
US10824568B2 (en) | 2018-07-25 | 2020-11-03 | Western Digital Technologies, Inc. | Speculative pre-fetching of flash translation layer tables for use with solid state systems |
KR20200046264A (ko) | 2018-10-24 | 2020-05-07 | 삼성전자주식회사 | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 |
KR20200050169A (ko) | 2018-11-01 | 2020-05-11 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 |
KR102599176B1 (ko) | 2018-11-14 | 2023-11-08 | 삼성전자주식회사 | 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법 |
JP7155028B2 (ja) * | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7143232B2 (ja) | 2019-01-29 | 2022-09-28 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11199992B2 (en) * | 2019-07-15 | 2021-12-14 | Western Digital Technologies, Inc. | Automatic host buffer pointer pattern detection |
US11144450B2 (en) * | 2019-12-19 | 2021-10-12 | Micron Technology, Inc. | Maintaining sequentiality for media management of a memory sub-system |
JP2021111210A (ja) * | 2020-01-14 | 2021-08-02 | キヤノン株式会社 | 情報処理装置、およびその制御方法 |
US11200180B2 (en) | 2020-01-31 | 2021-12-14 | Western Digital Technologies, Inc. | NVMe SGL bit bucket transfers |
US11537320B2 (en) | 2020-02-03 | 2022-12-27 | Western Digital Technologies, Inc. | Storage system and method for host memory access |
US11379151B2 (en) | 2020-03-31 | 2022-07-05 | Western Digital Technologies, Inc. | Flow control of large sequential host read commands based on a queue threshold |
US11507309B2 (en) * | 2020-05-04 | 2022-11-22 | Western Digital Technologies, Inc. | Storage system and method for using memory allocated in a host for read data as a host memory buffer |
US11403163B2 (en) | 2020-06-04 | 2022-08-02 | Western Digital Technologies, Inc. | Storage system and method for crash analysis |
US11500581B2 (en) | 2020-09-25 | 2022-11-15 | Western Digital Technologies, Inc. | Efficient TLP fragmentations in extended LBA environment |
US11537524B2 (en) | 2020-11-20 | 2022-12-27 | Western Digital Technologies, Inc. | Effective PCIe utilization by PCIe TLP coalescing |
US11853218B2 (en) | 2020-11-20 | 2023-12-26 | Western Digital Technologies, Inc. | Semi and cached TLP coalescing |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
US11698751B2 (en) | 2021-06-07 | 2023-07-11 | Western Digital Technologies, Inc. | Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer |
US11966343B2 (en) | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
US11861224B2 (en) * | 2021-10-26 | 2024-01-02 | Western Digital Technologies, Inc. | Data transfer management from host buffers |
US20240086108A1 (en) * | 2022-09-13 | 2024-03-14 | Western Digital Technologies, Inc. | Parallel fragmented sgl fetching for hiding host turnaround time |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040268017A1 (en) * | 2003-03-10 | 2004-12-30 | Silverback Systems, Inc. | Virtual write buffers for accelerated memory and storage access |
US20060203570A1 (en) * | 2005-03-09 | 2006-09-14 | Karl Meier | System and method for storing a sequential data stream |
CN103262054A (zh) * | 2010-12-13 | 2013-08-21 | 弗森-艾奥公司 | 用于自动提交存储器的装置、系统和方法 |
US20160026406A1 (en) * | 2014-06-05 | 2016-01-28 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for providing flexible host memory buffer |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5283880A (en) * | 1991-01-02 | 1994-02-01 | Compaq Computer Corp. | Method of fast buffer copying by utilizing a cache memory to accept a page of source buffer contents and then supplying these contents to a target buffer without causing unnecessary wait states |
US6640269B1 (en) * | 1998-06-19 | 2003-10-28 | Cisco Technology, Inc. | Method and apparatus for assisting communication of information between two processes |
US6167551A (en) * | 1998-07-29 | 2000-12-26 | Neomagic Corp. | DVD controller with embedded DRAM for ECC-block buffering |
JP3861964B2 (ja) * | 1998-09-16 | 2006-12-27 | セイコーエプソン株式会社 | プリンタ及び該プリンタにおける画像データの処理方法 |
US6651113B1 (en) * | 1999-12-22 | 2003-11-18 | Intel Corporation | System for writing data on an optical storage medium without interruption using a local write buffer |
US6598143B1 (en) * | 2000-02-24 | 2003-07-22 | International Business Machines Corporation | Method to increase performance of acquiring free memory pages |
US6745283B1 (en) | 2002-04-16 | 2004-06-01 | Western Digital Technologies, Inc. | Disk drive for dynamically allocating memory accessed concurrently by a host interface and a disk interface to facilitate large host commands |
US7307998B1 (en) * | 2002-08-27 | 2007-12-11 | 3Com Corporation | Computer system and network interface supporting dynamically optimized receive buffer queues |
US7738451B2 (en) * | 2005-07-01 | 2010-06-15 | Faraday Technology Corp. | Method and device for flexible buffering in networking system |
US8001338B2 (en) * | 2007-08-21 | 2011-08-16 | Microsoft Corporation | Multi-level DRAM controller to manage access to DRAM |
US8832354B2 (en) * | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
WO2011148223A1 (en) * | 2010-05-27 | 2011-12-01 | Sandisk Il Ltd | Memory management storage to a host device |
US8423590B2 (en) * | 2010-05-30 | 2013-04-16 | International Business Machines Corporation | File generation for testing single-instance storage algorithm |
US9135192B2 (en) | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
US9069660B2 (en) | 2013-03-15 | 2015-06-30 | Apple Inc. | Systems and methods for writing to high-capacity memory |
US11074169B2 (en) * | 2013-07-03 | 2021-07-27 | Micron Technology, Inc. | Programmed memory controlled data movement and timing within a main memory device |
US9858007B2 (en) * | 2013-11-12 | 2018-01-02 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Decoupling host and device address maps for a peripheral component interconnect express controller |
US10268584B2 (en) * | 2014-08-20 | 2019-04-23 | Sandisk Technologies Llc | Adaptive host memory buffer (HMB) caching using unassisted hinting |
US9563367B2 (en) | 2014-08-26 | 2017-02-07 | HGST Netherlands B.V. | Latency command processing for solid state drive interface protocol |
US10019161B2 (en) * | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
US9910798B2 (en) * | 2015-10-05 | 2018-03-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage controller cache memory operations that forego region locking |
-
2016
- 2016-04-01 US US15/088,692 patent/US10642496B2/en active Active
-
2017
- 2017-02-24 CN CN201780021530.6A patent/CN108885584B/zh active Active
- 2017-02-24 WO PCT/US2017/019397 patent/WO2017172145A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040268017A1 (en) * | 2003-03-10 | 2004-12-30 | Silverback Systems, Inc. | Virtual write buffers for accelerated memory and storage access |
US20060203570A1 (en) * | 2005-03-09 | 2006-09-14 | Karl Meier | System and method for storing a sequential data stream |
CN103262054A (zh) * | 2010-12-13 | 2013-08-21 | 弗森-艾奥公司 | 用于自动提交存储器的装置、系统和方法 |
US20160026406A1 (en) * | 2014-06-05 | 2016-01-28 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for providing flexible host memory buffer |
Non-Patent Citations (1)
Title |
---|
陈昊罡等: "面向虚拟机的远程磁盘缓存", 《计算机科学与探索》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109845A (zh) * | 2019-04-26 | 2019-08-09 | 深圳忆联信息系统有限公司 | 缓存数据管理方法、装置、计算机设备及存储介质 |
CN110109845B (zh) * | 2019-04-26 | 2021-03-05 | 深圳忆联信息系统有限公司 | 缓存数据管理方法、装置、计算机设备及存储介质 |
WO2021062982A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息系统有限公司 | 管理hmb内存的方法、装置、计算机设备及存储介质 |
CN112988623A (zh) * | 2019-12-17 | 2021-06-18 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
WO2023087861A1 (zh) * | 2021-11-16 | 2023-05-25 | 深圳忆联信息系统有限公司 | 基于固态硬盘的写放大优化方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US10642496B2 (en) | 2020-05-05 |
US20170285940A1 (en) | 2017-10-05 |
WO2017172145A1 (en) | 2017-10-05 |
CN108885584B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885584A (zh) | 使用主机存储器缓冲区的无序读取传输 | |
US10521118B2 (en) | Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB) | |
CN110088725B (zh) | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 | |
CN110088723B (zh) | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 | |
CN110447009B (zh) | 用于自适应命令获取聚合的系统和方法 | |
US10296473B2 (en) | System and method for fast execution of in-capsule commands | |
US10025532B2 (en) | Preserving read look ahead data in auxiliary latches | |
US9880783B2 (en) | System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller | |
CN108628777A (zh) | 动态和自适应中断合并的系统和方法 | |
US9870153B2 (en) | Non-volatile memory systems utilizing storage address tables | |
CN108572933A (zh) | 用于直接存储器存取的数据缓冲器指针找取 | |
US20170123991A1 (en) | System and method for utilization of a data buffer in a storage device | |
US10846017B2 (en) | Secure digital (SD) to NVMe buffer manager | |
US20170123721A1 (en) | System and method for utilization of a data buffer by command completion in parts | |
US20170075572A1 (en) | Extending hardware queues with software queues | |
US10725697B2 (en) | Round robin system with interleaved weighted and priority arbiters to serve on-demand bandwidth of a storage system | |
CN113760789A (zh) | 使用多循环队列的主机控制器接口及其操作方法 | |
US10740243B1 (en) | Storage system and method for preventing head-of-line blocking in a completion path | |
US11126367B2 (en) | Storage system and method for determining ecosystem bottlenecks and suggesting improvements | |
US10416886B2 (en) | Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same | |
US10379781B2 (en) | Storage system and method for improved command flow | |
US20230130884A1 (en) | Method of scheduling commands for memory device and memory system performing the same | |
US11720280B2 (en) | Storage system and method for improving utilization of a communication channel between a host and the storage system | |
US11914900B2 (en) | Storage system and method for early command cancelation | |
TWI597728B (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 |