CN108628777A - 动态和自适应中断合并的系统和方法 - Google Patents

动态和自适应中断合并的系统和方法 Download PDF

Info

Publication number
CN108628777A
CN108628777A CN201711346736.4A CN201711346736A CN108628777A CN 108628777 A CN108628777 A CN 108628777A CN 201711346736 A CN201711346736 A CN 201711346736A CN 108628777 A CN108628777 A CN 108628777A
Authority
CN
China
Prior art keywords
queue
memory device
host apparatus
interruption
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201711346736.4A
Other languages
English (en)
Other versions
CN108628777B (zh
Inventor
S.贝尼斯蒂
E.埃雷兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN108628777A publication Critical patent/CN108628777A/zh
Application granted granted Critical
Publication of CN108628777B publication Critical patent/CN108628777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2406Generation of an interrupt or a group of interrupts after a fixed or calculated time elapses

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于动态和自适应的中断合并的系统和方法。高速NVM(NVM Express,NVMe)实现了成对的提交队列和完成队列机制,其中主机装置上的主机软件将命令放入提交队列中。存储器装置经由中断向主机装置通知完成队列上的条目。然而,过多的中断会成为主机装置的负担。就此而言,存储器装置包含根据一个或多个参数的动态和自适应的中断合并的方法,所述一个或多个参数包含:完成队列;命令;队列深度;等待时间;以及存储器装置固件设定。以这种方式,存储器装置可以在仍及时通知主机装置的同时减少中断的数量。

Description

动态和自适应中断合并的系统和方法
相关申请的引用
本申请要求于2017年3月24日提交的申请号为15/468,620的美国申请的优先权,其全部内容通过引用合并于此。
背景技术
高速NVM(NVM Express,NVMe)是用于存取经由高速PCI(PCIExpress,PCIe)总线所附连的非易失性储存介质的标准。NVMe可以与诸如固态驱动器(SSD)的各种非易失性储存介质一起使用。NVMe的一个焦点与主机装置(其可以存取和/或写入非易失性储存介质)和存储器装置(其包含非易失性储存介质)之间的I/O通信相关。在这方面,NVMe实现成对的提交队列和完成队列机制,且主机装置上的主机软件将命令放置于提交队列中。完成由存储器装置控制器放置到相关联的完成队列上。
发明内容
高速数据传送的共同瓶颈是接收系统必须处理的高速率的中断。这些中断消耗了接收系统的(多个)总线上的信令资源,并且随着接收系统在“有效(productive)”工作和中断处理(其可以是每秒几千次)之间的来回转变,引入大量的CPU开销(overhead)。为减轻这种负载,NVMe标准包含用于中断合并的两个参数。特别地,NVMe标准限定可以在初始化阶段由主机装置配置的TIME和THR参数,如以下所示:
以上列出的两个参数对于所有被支持的中断矢量是全局的。因此,当使能该特征时,存储器装置在两个场景中发送中断:
THR完成条目被发布到相关完成队列;以及
自从第一次中断的聚集,过去了TIME。
根据这两个参数,当在短的时间帧中接收多个命令完成时,存储器装置控制器仅合并消息并且中断主机装置一次。相反地,在实现中断合并中,已经完成命令的存储器装置不立即向主机装置发送中断,而是等待一小段时间以防发布更多的命令完成。实际上,这两个参数导致静态中断合并方法。因此,使用这两个参数可以在等待时间上具有负面影响,且具有等待时间和负载减少之间的折衷。
在一个实现方式中,存储器装置根据一个或多个参数使用支持多个平台的动态和自适应中断合并方法。一个或多个参数可以包含以下的任何一个、任何组合或全部:
(i)完成队列的一个或多个方面(例如,完成队列ID(其可以指示特定完成队列的优先级,诸如相对优先级)、完成队列状态(例如,充满度的度量,诸如完成队列是充满的,还是几乎空的,亦或是在两者之间)等);
(ii)(多个)命令的一个或多个方面(例如,命令分类、存储器装置中的显著(outstanding)命令(例如,显著命令的执行的阶段)等);
(iii)队列深度(处理中的命令的数量,诸如在顺序队列门铃(doorbell)和完成队列发布之间的);
(iv)等待时间(例如,主机等待时间(例如,在存储器装置发布中断和主机装置响应于接收该中断从完成队列取回条目之间所经过的时间)、来自以往决定的反馈(逻辑可以是基于以往决定和等待时间结果来自适应的)等);以及
(v)存储器装置固件设定(例如,存储器装置内部阈值、水印级别等)。
关于(i),某些完成队列可以更改中断调度。特别地,管理员(Admin)完成队列(其可以被认为是最高优先级)和高优先级的I/O完成队列(其可以被认为是第二高优先级)可以更改中断调度(诸如将聚集阈值降低到更低级别或者甚至立即发布中断)。在确定何时发布中断时,存储器装置可以使用计数器,该计数器计数存储器装置已经向完成队列发布的条目的数量。如以下更详细讨论的,由于响应于中断的主机等待时间以及由于存储器装置在主机等待时间周期期间将额外条目发布到完成队列,存储器装置可以动态地更新计数器的值,以反映发布的额外条目已经由主机装置处理。
关于(ii),命令的一个或多个方面可以更改中断调度。例如,某些类型的命令可以被视为是紧急的,并且因此可以更改中断调度,诸如将聚集阈值降低到更低级别或者甚至立即发布中断调度。在一个实现方式中,存储器装置可以确定命令的类型,并且基于所确定的类型将中断指定为紧急的。例如,存储器装置可以将读取命令作为紧急对待,由于主机装置正“等待”待完成的读取命令。作为另一个示例,存储器装置可以将FUA(强制单元存取)命令作为另一种类型的命令对待,其中断可以被紧急对待(例如,将聚集阈值降低到更低级别或者甚至立即发布中断)。在另一个实现方式中,存储器装置可以分析命令的诸如LBA范围的其他方面,并且可以相应地修订中断调度。特别地,存储器装置可以检测特定LBA范围作为操作系统日志更新,并且响应于此,将中断作为紧急对待。在又另一个实现方式中,存储器装置可以分析命令的执行,因为其影响中断调度。特别地,如以下更详细讨论的,命令经历各种阶段。存储器装置可以分析各种命令的阶段(例如,深度排队、错误校正、来自闪存的感测或传送),并且估计完成各种命令的时间。继而,如以下更详细讨论的,存储器装置可以在确定何时将中断调度到主机装置以及是否合并中断时使用所估计的完成时间。
关于(iv),存储器装置可以采用若干方式中的一个来确定主机等待时间。以一种方式,存储器装置可以基于先前的通信传送(例如,从存储器装置中断的时间到主机装置通知已经查核完成队列条目的时间)估计主机等待时间。以另一种方式,存储器装置可以将主机等待时间确定为队列深度的函数。存储器装置可以使用主机等待时间上的信息,以便在存储器装置更新完成队列之前发布中断。例如,存储器装置可以发布中断,期望在考虑主机等待时间的因素后,主机装置将在完成队列上查核一定数量的新条目。
关于(v),存储器装置具有各种固件设定,诸如存储器装置内部阈值、水印级别等,其可以影响中断合并,如以下更详细讨论的。
就此而言,中断合并方法可以使用一个或多个参数:基于存储器装置的内部方面;基于动态方面(例如,在初始化阶段后);基于顺序队列(例如,基于顺序队列的优先级);和/或基于完成队列(例如,基于完成队列的优先级)。如以下更详细讨论的,中断合并方法可以应用于各种场景。例如,中断合并方法可以适配于NVMe系统的不同需求,诸如对于第一NVMe系统的低队列深度和对于第二NVMe系统的高队列深度。
附图说明
并入本说明书并构成本说明书的一部分的附图示出了本发明的各个方面,并与说明书一起用于解释其原理。在方便的情况下,在整个附图中将使用相同的附图标记来表示相同或相似的元件。
图1A是示例性非易失性存储器系统的框图。
图1B是包含多个非易失性存储器系统的储存模块和主机的框图。
图1C是层次结构式(hierarchical)储存系统的框图。
图2A是图1A的非易失性存储器系统的控制器的示例性部件的框图。
图2B是图1A的非易失性存储器系统的非易失性存储器裸芯的示例性部件的框图。
图3是主机装置和NVMe控制器的框图,其图示了主机装置和存储器装置请求和处理NVMe命令的序列。
图4是主机系统和存储器装置的其他示例性部件的框图。
图5是图示了完成队列和中断合并的框图。
图6是中断合并的第一示例方法的流程图。
图7是中断合并的第二示例方法的流程图。
图8是对中断合并使用计数器的示例方法的流程图。
图9是对中断合并分析队列深度的示例方法的流程图。
图10是对中断合并估计命令完成的时间和主机等待时间的示例方法的流程图。
具体实施方式
以下实施例描述用于命令的处理的非易失性存储器装置和相关方法。在转向这些和其他实施例前,以下段落提供了可以用于这些实施例的示例性非易失性存储器装置和储存模块的讨论。当然,这些仅仅是示例,并且可以使用非易失性存储器装置和/或储存模块的其他适当类型。
图1A是图示了非易失性存储器装置100的框图。非易失性存储器装置100可以包含控制器102和可以由一个或多个非易失性存储器104组成的非易失性存储器装置。如本文所用的,术语裸芯是指非易失性存储器单元和用于管理这些非易失性存储器单元的物理操作的相关电路的集合,其形成在单一半导体基板上。控制器102可以与主机装置或主机系统相接,并且将读取、编程和擦除操作的命令序列发送到(多个)非易失性存储器裸芯104。如以下所讨论的,命令可以包含逻辑和/或物理地址。
控制器102(其可以是闪存控制器)可以采取处理电路、微处理器或处理器以及计算机可读介质的形式,该计算机可读介质储存由例如(微)处理器、逻辑门、开关、应用专用集成电路(ASIC)、可编程逻辑控制器以及嵌入式微控制器可执行的计算机可读程序代码(例如,软件或固件)。控制器102可以配置有硬件和/或固件,以进行如下所述和在流程图中示出的各种功能。另外,示出为在控制器内部的部件中的一些也可以是在控制器外部储存的,并且可以使用其他部件。此外,短语“与……可操作地通信”可以意味着与之直接通信或者通过一个或多个部件(其可能在或可能不在本文中示出)间接(有线地或无线地)通信。
如本文所用的,闪存控制器是管理储存在闪存上的数据并且与诸如计算机或电子装置的主机通信的装置。闪存控制器可以具有除了本文所描述的特定功能之外的各种功能。例如,闪存控制器可以格式化闪存,以确保适当地操作存储器,映射出坏的闪存单元,以及分配空闲单元以替换将来失效的单元。空闲单元的一些部分可以用于保持固件,以操作闪存控制器并且实现其他特征。固件的一个示例是闪存转换层。在操作中,当主机装置需要从闪存读取数据或者将数据写入到闪存时,其将与闪存控制器通信。在一个实施例中,如果主机装置提供数据将读取/写入到的逻辑地址,则闪存控制器可以将从主机所接收的逻辑地址转换为闪存中的物理地址。闪存控制器还可以进行各种存储器管理功能,诸如但不限于磨损均衡(分布写入以避免磨损存储器的特定区块,否则将重复写入到该特定区块)和垃圾收集(在区块满了后,仅将数据的有效页移动到新的区块,因此可以擦除和重复使用满的区块)。
控制器102和(多个)非易失性存储器裸芯104之间的接口可以是任何适当的闪存接口,诸如触发模式(Toggle Mode)200、400或800。在一个实施例中,存储器装置100可以是基于卡(诸如安全数字(SD)或微型安全数字(micro-SD)卡)的系统。在替代实施例中,非易失性存储器装置100可以是嵌入式存储器装置的部分。
尽管在图1A中示出的示例中,非易失性存储器装置100可以包含在控制器102和(多个)非易失性存储器裸芯104之间的单一信道,本文所描述的主题不限于具有单一存储器信道。例如,在一些NAND存储器装置构架构中,根据控制器的能力,2、4、8或更多NAND信道可以存在于控制器和(多个)NAND存储器裸芯之间。在本文所描述的实施例的任一个中,即使在附图中示出了单一信道,多于一个信道也可以存在于控制器和(多个)存储器裸芯104之间。
图1B示出了包含多个非易失性存储器装置100的储存模块200。同样地,储存模块200可以包含与主机220相接并且与储存系统204相接的储存控制器202,储存系统204包含多个非易失性存储器装置100。在储存控制器202和非易失性存储器装置100之间的接口可以是总线接口,诸如串行高级技术附件(SATA)、外围部件接口高速(PCIe)接口、嵌入式多媒体卡(eMMC)接口、SD接口或通用串行总线(USB)接口。在一个实施例中,储存系统200可以是固态驱动器(SSD),诸如在诸如膝上型计算机和平板计算机以及移动电话的便携式计算装置中找到的。
图1C是图示层次结构式(hierarchical)储存系统250的框图。层次结构式储存系统250可以包含多个储存控制器202,其中的每一个控制相应的储存系统204。主机系统252可以经由总线接口存取层次结构式储存系统250内的存储器。示例总线接口可以包含例如高速非易失性存储器(NVMe)、以太网光纤通道(FCoE)接口、SD接口、USB接口、SATA接口、PCIe接口或eMMC接口。在一个实施例中,在图1C中示出的层次结构式储存系统250可以是机架可安装大容量储存系统(诸如将在需要大容量储存的数据中心或其他位置中找到的),其可被多个主机计算机存取。在一个实施例中,主机系统252可以包含在主机220中描述的功能。
图2A是更详细地图示控制器102的示例性部件的框图。控制器102可以包含与主机相接的前端模块108、与(多个)非易失性存储器裸芯104相接的后端模块110以及执行非易失性存储器装置100的各种功能的各种其他模块。总体上,模块可以是硬件或者硬件和软件的组合。例如,每个模块可以包含应用专用集成电路(ASIC),现场可编程门阵列(FPGA),电路,数字逻辑电路,模拟电路,分立电路、门、或者任何其他类型的硬件的组合,或其组合。另外或替代地,每个模块可以包含包括指令的存储器硬件,该指令通过处理器或处理器电路可执行,以实现模块的特征中的一个或多个。当模块中的任一个包含存储器的包括通过处理器可执行的指令的部分时,模块可以包括或可以不包括处理器。在一些示例中,每个模块可以仅是存储器的包括通过处理器可执行的指令的部分,以在模块不包含任何其他硬件的情况下实现对应的模块的特征。因为即使当所包含的硬件包含软件时,每个模块至少包含一些硬件,因此每个模块可以可互换地被称为硬件模块。
控制器102可以包含缓冲管理器/总线控制模块114,该缓冲管理器/总线控制模块管理在随机存取存储器(RAM)116中的缓冲器并且为在控制器102的内部的通信总线117上的通信控制内部总线判优。
只读存储器(ROM)118可以储存和/或存取系统启动代码。尽管在图2A示出为定位为与控制器112分离,但是在其他实施例中,RAM 116和ROM117中的一个或两者可以位于控制器102内。在其他实施例中,RAM 116和ROM 118的部分可以位于控制器102内且位于控制器102之外。另外,在一些实现方式中,控制器102、RAM 116和ROM 118可以位于分开的半导体裸芯上。如以下所讨论的,在一个实现方式中,提交队列和完成队列可以储存在控制器存储器缓冲器中,其可以容纳在RAM 116中。
此外,前端模块108可以包含主机接口120和物理层接口(PHY)122,其提供与主机或下个级别的储存控制器的电接口。主机接口120的类型的选择可以取决于正在使用的存储器的类型。主机接口120的示例类型可以包含但不限于SATA、高速SAST、SAS、光纤信道、USB、PCIe和NVMe。主机接口120可以典型地促进数据、控制信号和时间信号的传送。
后端模块110可以包含错误校正控制器(ECC)引擎124,该引擎将从主机接收的数据字节进行编码,并且将从(多个)非易失性存储器裸芯104读取的数据字节进行解码和错误校正。如以下更详细讨论的,ECC引擎可以是可调的,诸如基于模式来产生不同数量的ECC数据(例如,在普通编程模式中产生普通模式的ECC数据,以及在丛发(burst)编程模式中产生丛发模式的ECC数据,丛发模式的ECC数据比普通模式的ECC数据更大)。后端模块110还可以包含命令定序器126,命令定序器126产生要被发送到(多个)非易失性存储器裸芯104的命令序列(诸如编程、读取和擦除命令序列)。此外,后端模块110可以包含RAID(独立驱动器冗余式阵列)模块128,其管理RAID奇偶校验(parity)的产生和失效数据的恢复。RAID奇偶校验可以用作正在写入到非易失性存储器装置100中的数据的附加等级的完整性保护。在一些情况下,RAID模块128可以是ECC引擎124的部分。存储器接口130将命令序列提供给(多个)非易失性存储器裸芯104并且从(多个)非易失性存储器裸芯104接收状态信息。连同命令序列和状态信息,可以通过存储器接口130来通信要被编程到(多个)非易失性存储器裸芯104中和要从(多个)非易失性存储器裸芯读取的数据。在一个实施例中,存储器接口130可以是双数据速率(DDR)接口,诸如触发模式(Toggle Mode)200、400或800接口。闪存控制层132可以控制后端模块110的总体操作。
因此,控制器102可以包含用于管理储存系统100的操作的一个或多个管理表。管理表的一个类型包含逻辑-到-物理地址的映射表。逻辑-到-物理地址的映射表的大小可以随着存储器大小增长。就此而言,高容量储存装置(例如,大于32G)的逻辑-到-物理地址的映射表可能太大而不能储存在SRAM中,其可以连同用户和主机数据而储存在非易失性存储器104中。因此,对非易失性存储器104的存取可能首先需要从非易失性存储器104读取逻辑-到-物理地址的映射表。
图2A所示的非易失性存储器装置100的附加模块可以包含介质管理层138,其进行非易失性存储器裸芯104的存储器单元的磨损均衡。非易失性存储器装置100还可以包含其他分立部件140,诸如外部电接口、外部RAM、电阻器、电容器或可以与控制器102相接的其他部件。在替代实施例中,RAID模块128、介质管理层138和缓冲器管理/总线控制器114中的一个或多个是可选的部件,其在控制器102中可以不是必要的。
图2A所示的非易失性存储器装置100的另一个模块可以包含中断合并模块112。如以下更详细讨论的,存储器装置可以确定是否对主机装置合并中断,且存储器装置使用中断合并模块112以做出决定。
图2B是更详细地图示非易失性存储器裸芯104的示例性部件的框图。非易失性存储器裸芯104可以包含非易失性存储器阵列142。非易失性存储器阵列142可以包含多个非易失性存储器元件或单元,每个配置为储存一个或多个数据位。非易失性存储器元件或单元可以是任何适当的非易失性存储器单元,包含在二维和/或三维配置中的NAND闪存单元和/或NOR闪存单元。存储器单元可以采取固态(例如,闪存)存储器单元的形式,并且可以是一次性可编程的、少次可编程的或者多次可编程的。此外,存储器元件或单元可以配置为每个单元储存单一数据位的单级单元(SLC)、每个单元储存多个数据位的多级单元(MLC)、或其组合。对于一些示例配置,多级单元(MLC)可以包含每个单元储存三个数据位的三级别的单元(TLC)。
此外,闪存单元可以在阵列142中包含具有浮置栅极和控制栅极的浮置栅极晶体管(FGT)。浮置栅极由帮助保留浮置栅极中的电荷的绝缘体或绝缘材料围绕。在浮置栅极内的电荷的存在或不存在可以引起FGT的阈值电压上的转变,其用于区分逻辑级别。换言之,每个FGT的阈值电压可以表明存储器单元中储存的数据。以下,可以互换地使用FGT、存储器元件和存储器单元以指代相同的物理实体。
可以根据存储器单元的行和列的类矩阵结构,将存储器单元设置在存储器阵列142中。行和列的交点是FGT(或存储器单元)。FGT的列可以被称为串。串或列中的FGT可以串联地电连接。FGT的行可以被称为页。页或行中的FGT的控制栅极可以电连接在一起。
存储器阵列142还可以包含连接于FGT的字线和位线。FGT的每页耦合于字线。特别地,每个字线可以耦合于页中的FGT的控制栅极。此外,FGT的每个串可以耦合于位线。另外,单个串可以跨过多个字线,并且串中的FGT的数量可以等于区块中的页的数量。
非易失性存储器裸芯104还可以包含页缓冲器或数据缓存144,其将从存储器阵列142感测到的和/或要编程到存储器阵列142的数据缓存。非易失性存储器裸芯104还可以包含行地址解码器146和列地址解码器148。当从存储器阵列142中的存储器单元读取数据/将数据写入到存储器阵列142中的存储器单元时,行地址解码器146可以解码行地址并且选择存储器阵列142中的特定字线。列地址解码器148可以解码列地址以选择存储器阵列142中的要电耦合到数据缓存144的位线的特定组。
此外,非易失性存储器裸芯104可以包含外围电路150。外围电路150可以包含向控制器102提供状态信息的状态机151。状态机151的其他功能在下文更详细地描述。
图3示出了经由NVMe标准来执行命令的步骤的序列。如所示,主机装置300包含主机存储器302,并且存储器装置包含控制器,诸如NVMe控制器310。在一个实现方式中,主机存储器302包含提交队列304和完成队列306。另外,在一个实现方式中,提交队列和完成队列可以具有1:1的相关性。替代地,提交队列和完成队列不具有1:1的相关性。
实际上,在初始化阶段,主机装置300创建一个或多个提交队列和一个或多个对应的完成队列。特别地,主机装置300可以通过向存储器装置发送诸如每个队列的基地址的信息,来向存储器装置通知(多个)提交队列和(多个)完成队列。在此方面,每个提交队列具有对应的完成队列。当提交队列和完成队列驻留在主机装置中时,主机装置向存储器装置发送信息,以便存储器装置确定提交队列和完成队列在主机装置中的位置。在特定的实现方式中,主机装置发送指示提交队列和完成队列的创建的命令。命令可以包含PRP1指标,其是对主机装置上的特定提交队列或特定完成队列的位置的列表的指标。实际上,存储器装置使用PRP1来发送TLP读取请求,以便获得PRP列表,并且将PRP列表储存在存储器装置中,以确定在主机装置内的存储器位置,以在将来的命令中用于从特定提交队列读取或向特定完成队列写入。替代地,主机装置300可以指示存储器装置创建驻留在诸如控制器存储器缓冲器的存储器装置中的存储器中的(多个)提交队列和对应的(多个)完成队列。
提交队列304可以基于具有头指标和尾指标的环缓冲器。在创建(多个)提交队列并且向存储器装置通知所创建的(多个)提交队列后,主机装置300可以将命令(或若干命令)写入到提交队列。这在图3中被指示为步骤1,标记为“队列命令”。特别地,图3示出了将四个命令写入提交队列。在一个实现方式中,由于主机装置300更新其自己的主机存储器302,存储器装置未察觉到主机装置300已经采用4个命令更新了提交队列304。在另一个实现方式中(诸如当(多个)提交队列和(多个)完成队列驻留在控制器存储器缓冲器中时),存储器装置可以对于特定通信(诸如向驻留在存储器装置上的(多个)提交队列写入)而监控在主机装置300和存储器装置之间的通信接口。例如,存储器装置可以监控PCI高速总线上的传输层分组(TLP),以确定主机装置300是否已经发送引起控制器存储器缓冲器中驻留的提交队列更新的TLP。在此方面,存储器装置可以识别正在写入到(多个)提交队列的一个或多个条目。
在步骤2中,主机装置300写入到存储器装置中的提交队列尾门铃寄存器312。对提交队列尾门铃寄存器312的此写入向存储器装置向主机表示在该特定提交队列304中排队一个或多个命令(例如,如图3所示的4个命令)。对提交队列尾门铃寄存器312的此写入可以采取若干形式中的一个。以一种方式,主机装置300为提交队列304指示新的尾,从而指示了写入提交队列304的命令的数量。因此,由于存储器装置察觉到提交队列304的基地址,所以存储器装置仅需要知道尾地址来指示写入到提交队列304的新的命令的数量。在处理了命令(或命令的集合)后,然后存储器装置相应地设定提交队列304的新的头。所以,尾指标可以表现从头指标的“偏移”。以另一种方式,主机装置300指示写入到提交队列304的命令的数量。实际上,每个提交队列304具有在存储器装置中的对应的提交队列尾门铃寄存器,使得当主机装置300更新特定门铃寄存器(与特定提交队列304相关)时,存储器装置可以基于门铃寄存器确定已经更新了哪个特定提交队列304。
在步骤2(由此存储器装置被通知提交队列304上的(多个)命令)后并且在步骤3(由此存储器装置取回(多个)命令)前,存储器装置察觉到存在提交队列304中待决的(多个)命令。在通常情况下,可以存在几个提交队列(几个提交队列中具有可能多个待决的命令)。因此,在进行步骤3之前,存储器装置控制器可以在各种提交队列之间判优,以选择从之取回(多个)命令的特定提交队列。
响应于确定从哪个特定提交队列304取回(多个)命令,在步骤3中,存储器装置从特定提交队列304取回(多个)命令。实际上,存储器装置可以存取特定提交队列304的基地址加上在主机装置300中实现的当前头指标上的指标。
如上所述,提交队列或完成队列可以分配存储器的区域(诸如在主机装置中或者在存储器装置中的控制器存储器缓冲器中)。提交队列和完成队列可以包含多个条目,每个条目与特定命令相关联。每个条目的大小可以是预定的大小,诸如64Kb。就此而言,可以使用提交队列的基地址并且通过将基地址偏移条目的数量乘以每个条目的大小(例如,64Kb),来确定提交队列内的条目。
如上所述,已经经由步骤2通知,存储器装置察觉到尾指标。因此,存储器装置可以从提交队列304获得所有新的命令。在NVMe中,存储器装置可以发送TLP请求以从提交队列304获得(多个)命令。响应于TLP请求的接收,主机装置300将完成TLP消息与提交队列304中的命令一起发送。就此而言,在步骤3结束时,存储器装置从提交队列304接收(多个)命令。
在步骤4中,存储器装置处理命令。在一个实现方式中,存储器装置解析(parse)命令,并且确定执行命令的步骤(例如,读取/写入/等)。例如,命令可以包括读取命令。响应于读取命令的接收,存储器装置解析读取命令,实现地址转换并且存取闪存以接收数据。在接收数据后,基于命令中的信息(例如,以下所讨论的PRP 1),存储器装置使数据储存在主机装置上。作为另一个示例,命令可以包括写入命令。响应于写入命令的接收,存储器装置解析写入命令,确定主机装置上经受写入的数据的位置,从主机装置上的位置读取数据,并且将数据写入到闪存中。
特别地,存储器装置可以与PRP1指标一起接收读取命令或写入命令。例如,读取命令(其中主机装置请求存储器装置从闪存读取)包含PRP1指标,该PRP1指标指向PRP列表。存储器装置获得PRP1以便确定主机装置内要写入从闪存读取的数据的存储器位置。作为另一个示例,写入命令(其中主机装置请求存储器装置将数据写入到闪存)包含PRP1指标,该PRP1指标指向PRP列表。存储器装置获得PRP列表,以便确定主机装置内的要从之读取数据的存储器位置(并且此后将所读取的数据保存到闪存)。
PRP列表中的每个条目可以与主机装置存储器中的某区段相关联,并且可以是预定大小(诸如4Kb)。因此,在1Mb传送中,在PRP列表中可以存在250个参考,每个参考的大小是4Kb。实际上,存储器装置可以从序列中检索出数据。这可能是由于受检索的数据在几个闪存裸芯上,而裸芯对于数据检索在不同的时间可用。例如,在与检索1Mb传送的1-100Kb对应的数据之前,存储器装置可以检索与1Mb传送的100-200Kb对应的数据。然而,由于存储器装置具有PRP列表(并且因此知道存储器装置,主机装置期望将对应于100-200Kb的数据储存),在不首先检索与1Mb传送的0-100Kb对应的数据的情况下,存储器装置可以将与1Mb传送的100-200Kb对应的数据传送。
在NVMe中,可以存在多个高速PCI TLP,以将数据从存储器装置传送到主机装置300。典型地,基于命令中的指示(例如,命令包含储存所请求的数据的地址),将传送的数据储存在主机装置300的主机存储器302中。
在完成数据传送后,在步骤5中,存储器装置控制器将完成消息发送到相关的完成队列306。如上所述,在初始化阶段,主机装置300将提交队列与完成队列相关联。使得主机装置300基于存储器装置将写入哪个完成队列来察觉到在提交队列中完成的命令。完成消息可以包含关于(多个)命令的处理的信息,诸如命令是否成功完成或者在执行命令时是否存在错误。
在步骤5后,主机装置300未察觉到存储器装置发布到完成队列306。这是因为存储器装置使得数据写入到完成队列306。就此而言,在步骤6中,存储器装置通知主机装置300已经存在对完成队列306的更新。特别地,存储器装置将中断发布到主机装置300(例如,在NVMe中,主机装置300可以使用MSIe中断)。如以下更详细讨论的,存储器装置可以基于一个或多个因素合并中断。
响应于接收中断,主机装置300确定,在该完成队列306中存在对主机装置300待决的一个或多个完成条目。在步骤7处,则主机装置300处理完成队列306中的条目。
在主机处理来自完成队列306的条目后,在步骤8处,主机装置300将来自完成队列306的主机装置300所处理的条目通知存储器装置。这可以通过更新完成队列头门铃寄存器314来进行,该寄存器314将主机装置300处理来自完成队列306的一个或多个条目指示给存储器装置。当主机发布完成队列门铃写入时,可以更新相关中断合并矢量的参数以反映该改变。例如,完成队列的状态可以从几乎满的状态改变为几乎空的状态。因此,中断可以清除到(flush)主机装置。
响应于更新完成队列头门铃寄存器314,存储器装置更新完成队列306的头。鉴于新的头,存储器装置察觉到完成队列306中的哪些条目已经被主机装置300处理并且可以被覆写。
图4是主机系统400和存储器装置420的其他示例性部件的框图。主机系统400包含一个或多个处理器402和主机存储器404。主机存储器404可以包括物理区域页(PRP)406、数据缓冲器408、一个或多个提交队列410、一个或多个完成队列412和其他存储器414。
图4还示出了在主机装置400和存储器装置420之间的通信接口。在第一实现方式(未在图4中示出)中,在主机装置和存储器装置之间的通信接口是单工的,到存储器装置的通信和从存储器装置的通信在相同路径上。在第二实现方式(未在图4中示出)中,在主机装置400和存储器装置420之间的通信接口是双工的,具有分开的进入路径和分开的外出路径。从存储器装置420的角度看,进入路径包含从主机装置400到存储器装置420进入请求。相反地,从存储器装置420的角度看,外出路径包含从存储器装置420到主机装置400外送请求。
进入请求(从主机装置400到存储器装置420的请求)可以以不同方式分段,诸如引入读取请求和引入写入请求。例如,主机装置400可以经由进入路径发送读取请求,以读取存储器装置420中的存储器的区段,或者将写入请求写入到存储器装置420中的存储器的区段。同样地,存储器装置420可以经由外出路径将读取请求发送到主机装置400中的存储器的区段,或者将写入请求写入到主机装置400中的存储器的区段。
在实际使用NVMe中,可能存在一系列读取请求(由主机装置请求,以读取驻留在存储器装置上的数据,以及反之亦然)和一系列写入请求(由主机装置请求,以将数据写入到在存储器装置上驻留的位置,以及反之亦然)。特别地,在NVMe中,存储器装置和主机装置使用事务处理层分组(transaction layer packet,TLP)请求来相互通信,诸如用以在其他装置上进行读取的TLP读取请求,或者用以在其他装置上进行写入的TLP写入请求。在一个示例(提交队列和完成队列驻留在主机装置上)中,响应于由主机装置的对存储器装置上的门铃寄存器的TLP写入请求(经由进入路径发送)(写入到门铃寄存器指示了在提交队列上存在命令),存储器装置使用TLP读取请求(经由外出路径发送),以从提交队列(其驻留在主机装置上)取回写入命令。从而,写入命令是对存储器装置将数据写入到非易失性存储器的请求。然后存储器装置将信息的写入命令(诸如PRP指标(例如PRP1)的指示)解析到PRP列表。PRP列表是一系列信息,诸如指标或地址,其指示了主机装置中的数据的位置。存储器装置然后使用另一个TLP读取请求,以从PRP列表中的指标或地址读取数据。此后,存储器装置通过在存储器装置上的非易失性存储器(例如,闪存)中储存数据来进行写入。在储存数据后,存储器装置使用TLP写入请求以将条目写入到完成队列(指示了写入命令已经完成)。最后,存储器装置使用TLP写入请求以将中断产生到主机装置,中断将在完成队列上存在条目发信号到主机装置。响应于中断,主机装置读取完成队列上的条目,并且然后向CQ门铃写入寄存器发布TLP写入请求,指示主机装置已经查核完成队列上的条目。
作为另一个示例(提交队列和完成队列再次地驻留在主机装置上),响应于由主机对存储器装置上的门铃寄存器的TLP的写入请求(写入到门铃寄存器指示了在提交队列上存在命令),存储器装置使用TLP读取请求以从提交队列(其驻留在主机装置上)取回读取命令。从而,读取命令是用于存储器装置从非易失性存储器读取数据并将所读取的数据发送到主机装置的请求。存储器装置然后读取非易失性存储器(例如,闪存)以读取数据。采用串行操作中的每一个之间散布的储存缓冲器,存储器装置可以对数据进行一系列操作,诸如错误校正、加密/解密等。存储器装置然后可以将信息的读取命令(诸如PRP指标(例如PRP1)的指示)解析到PRP列表。PRP列表是一系列信息(诸如指标或地址),其指示主机装置中要储存从非易失性存储器读取(并且可选地被错误校正,加密等)的数据的位置。存储器装置使用TLP读取请求,以从PRP列表中的指标或地址读取数据。此后,存储器装置使用TLP写入请求,以写入从非易失性存储器读取的数据。在将数据写入到主机装置后,存储器装置使用TLP写入请求以将条目写入到完成队列(指示了读取命令已经完成)。最后,存储器装置使用TLP写入请求以将中断产生到主机装置,中断将在完成队列上存在条目发信号到主机装置。响应于中断,主机装置读取完成队列上的条目,并且然后向CQ门铃写入寄存器发布TLP写入请求,指示主机装置已经查核完成队列上的条目。
可选地,完成队列和提交队列可以驻留在存储器装置中,诸如在控制器存储器缓冲器(CMB)中。在该实例中,主机装置可以将TLP写入请求发送(经由进入路径发送)到存储器装置,以写入到提交队列。同样地,存储器装置可以发送(经由外出路径发送)TLP写入请求,以将中断产生到主机装置。
对主机存储器缓冲器中的提交队列和完成队列的存储器的分配可以在物理上是连续的或不连续的。在不连续的NVMe提交队列和/或完成队列的实例中,向存储器装置提供PRP列表。如以下更详细讨论的,PRP列表包含指标的列表,其描述了相关队列的每个物理区段的位置。实际上,PRP列表储存在主机装置存储器中并且在相关队列的整个寿命期间不被修改。此外,对PRP列表的指标可以用于指向PRP列表的至少部分。PRP列表和对PRP列表的指标中的每一个可以包含在PRP 406处。
存储器装置420包含存储器装置控制器422和存储器阵列450。存储器阵列450可以以各种方式分段,诸如以如图4所示的分段为10个区段。存储器装置控制器422可以包含一个或多个处理器424,并且并入PCIe MAC和PHY接口432中的一个或所有。
命令取回器434配置为从主机系统400上的提交队列410取回命令,并且将他们在排队到存储器装置420内部。命令执行器436配置为判优并且执行从提交队列410所取回的命令。数据传送调度器444配置为调度一个或多个类型的数据传送。作为一个示例,所读取的数据可以从不同的存储器阵列并行地到达。数据传送调度器444可以从不同的数据传送之中判优。
直接存储器存取(DMA)442配置为在主机系统400和存储器装置420之间进行实际的数据传送。闪存接口模块438配置为控制和存取存储器阵列450。在图4中,闪速接口模块438还包含低密度奇偶校验检查(LDPC)440,其是线性错误校正代码。用于错误校正的其他方法是可预期的。
命令采集器426可以分析当前由存储器装置420正在处理的命令。在一个实现方式中,命令采集器426可以使用阶段确定428来确定当前正在处理的命令的阶段。另外,命令采集器426可以使用完成估计时间430来确定当前由存储器装置420正在处理的命令中的一个或多个的估计的完成时间。
计数器452配置为将存储器装置已经放置在完成队列中的条目的数量计数。如以下更详细讨论的,由计数器452所反映的数量可以用于确定何时对主机装置发送通知完成队列上的条目的中断。另外,由于响应于中断的主机等待时间,可以调整计数器452的数量。例如,在将中断发送到主机装置之前,存储器装置可以包含5个条目的阈值。实际上,存储器装置使用计数器452以计数放置在完成队列上的条目的数量。当计数器452的数量等于5时,存储器装置:(i)将把完成队列上的条目通知主机装置的中断发送到主机装置;并且(ii)清零计数器452,使得计数器的数量等于0。在主机装置服务中断的同时,存储器装置可以将附加的条目(诸如2个附加的条目)放置在完成队列上,并且增量计数器(使得计数器等于2)。在主机装置将已经服务了完成队列上的条目通知存储器装置后,存储器装置可以确定完成队列上的7个条目已经由主机装置查核。就此而言,存储器装置可以减量计数器(从2到0),以反映在服务中断中的主机等待时间的期间主机装置已经处理的条目。
完成队列(CQ)和中断合并446配置为进行以下中的一个或多个:完成队列和中断发布;以及中断合并。中断合并反馈448配置为监控所发布的中断和主机系统400响应。基于反馈,中断合并反馈448可以调整或微调中断合并阈值和参数,如以下更详细讨论的。
合并方法可以取决于各种因素。在一个实现方式中,合并方法可以与相关完成队列的当前状态严格相关。更具体地,假设特定完成队列是空的或者是几乎空的,则存储器装置可以假设主机系统400上的(多个)处理器402不忙碌。在该实例中,存储器装置可以立即发布中断。另一方面,当完成队列是满的或者是几乎满的,存储器装置可以假设(多个)处理器402是忙碌的。在该实例中,为了减少主机系统400中的(多个)处理器402上的负担,存储器装置420可以合并中断。当完成队列既不是几乎空的也不是几乎满的,(多个)处理器402可以不超载,并且可以不处于空闲状态中。在这种情况下,存储器装置可以基于其他参数来部分地合并中断,如以下更详细讨论的。可选地或另外地,CQ和中断合并446可以使用完成估计时间430来估计命令的完成的时间,以便确定是否和/或如何合并中断,如以下更详细讨论的。
图5是图示了完成队列和中断合并的框图。特别地,图5示出了完成队列和中断合并算法之间的关系。对于每个完成队列,可以限定一个或多个水印级别。水印级别可以包括在特定阶段中的或正在处理的若干命令,诸如已经完成处理和/或已经具有发布到指示已经完成命令的处理的完成队列的条目的若干命令。如上所述,存储器装置可以在条目已经发布到完成队列后发送中断。在一个实现方式中,如图5所示,两个水印级别被限定为充满度的不同级别。低的水印级别可以表示几乎空的条件(指示了主机上的处理器具有额外的容量),而高的水印级别表示几乎满的条件(指示了主机上的处理器可能处于或超过容量)。就此而言,低的水印级别具有少于高的水印级别的数量。尽管示出了两个水印级别,但是一个水印级别或三个或更多水印级别是可预期的。
水印级别中的一个或多个(诸如图5中所示的高的水印级别和低的水印级别中一个或两个)可以基于一个或多个因素来动态适配或者改变。作为一个示例,可以基于主机等待时间来修改(多个)水印级别。特别地,基于发布到主机系统400的先前的中断和主机系统400对该发布的反应(例如,主机系统400用了多久来处理中断),可以修改高的水印级别和低的水印级别。作为另一个示例,可以基于完成队列中的命令的优先级来修改一个或多个水印级别。如上所述,响应于确定了完成队列中的高优先级命令,存储器装置可以立即发布中断。替代地,存储器装置可以基于完成队列中的命令的优先级来修改如图5所示的水印。
实际上,当相关联的完成队列的当前级别低于低水印级别时,由于假设了主机系统400是不忙碌的,可以立即发布中断。该方法还解决了低队列深度问题。在低队列深度中,完成队列的级别低于低水印级别,并且因此不合并中断。当相关联的完成队列的当前级别高于高水印级别时,可以基于一个或多个因素(例如,主机配置的TIME和THR参数)来完全合并中断。否则,中断可以部分地合并(例如,基于当前显著命令,可能存在中断合并但具有更低的TIME和THR值)。因此,可以部分地合并中断,使得在某些环境下合并中断并在其他环境下不合并中断。
图5示出了单一的部分合并区。在替代实施例中,完成队列中的部分合并区可以分裂成几个区,同时对于它们中的每一个具有不同的规则。作为一个示例,部分合并区可以分段成三个区,仅当估计了命令将要很快完成(例如,在预定数量的硬件循环内,诸如所读取的数据已经从闪存传送并且处于错误校正阶段中)时第一区合并中断。如果存在与相同的完成队列相关联的待决的命令,则第二区可以合并中断,即使数据未从闪存取回但调度为从闪存取回。如果存在与相同的完成队列相关联的任何待决的命令,则第三区可以合并中断,虽然其在等待服务的存储器装置中是深度排队的。在一个实现方式中,部分合并算法由主机装置配置的TIME和THR参数所限制。在一个替代实现方式中,部分合并算法不由主机装置配置的TIME和THR参数所限制。
图6是中断合并的第一示例方法的流程图600。在602处,存储器装置确定是否合并中断。如果不合并,在608处,立即发布中断。如果合并,分析一个或多个方面,诸如:完成队列的一个或多个(例如,完成队列ID、完成队列状态等);(多个)命令的一个或多个方面(例如,命令分类、存储器装置中的显著命令等);队列深度;以及等待时间(例如,主机等待时间、来自以往决定的反馈等)。在606处,存储器装置基于分析来确定是否合并中断。如果合并,在610处,至少部分地合并中断(例如,部分地或完全地合并中断)。如果不合并,在608处,立即发布中断。
图7是中断合并的第二示例方法的流程图700。特别地,图7实现动态中断合并算法。在702处,到完成队列的条目被发布并且使能中断。在一个实现方式中,在704处,可以在某些环境下合并中断,这些环境包含:使能合并特征;相关完成队列不被指定为高的优先级队列;命令被认为是不紧急的;以及命令正常完成。如果合并,在706处,立即发布中断。替代地,可以对高优先级队列进行条目的合并;然而,该合并方法(诸如水印级别)可以不同于更低优先级队列的合并方法。如上所述,存储器装置可以确定诸如完成队列的队列是否被认为是高优先级队列。高优先级队列的示例包含指定为管理员队列和由主机限定为高优先级队列的I/O队列的队列。当条目与高优先级队列相关联时,在一个实现方式中,存储器装置立即发布中断,因此忽略中断合并逻辑。
如果不合并,在708处,存储器装置确定相关联完成队列的当前级别是否低于低水印级别。如果低于低水印级别,在710处,如果已经合并,则存储器装置清空(flush)并立即发布中断。否则,在712处,存储器装置确定相关联完成队列的当前级别是否高于高水印级别。如果高于高水印级别,在714处,存储器装置基于主机配置的TIME和THR参数来完全合并中断。如果不是,在716处,诸如基于TIME和THR参数以及存储器装置的当前状态,部分合并中断(例如,基于当前的显著命令,可能存在更低的TIME和THR值的情况下的中断合并)。
图8是对中断合并使用计数器的示例方法的流程图800。在802处,存储器装置确定条目是否已经发布到完成队列。如果已经发布,在804处,增量计数器。此后,在806处,将计数器的值与预定数量进行比较。如果计数器的值比预定数量更大,则在808处,将中断发送到主机装置,通知完成队列的条目,并且在810处,计数器的值重设为0。
否则,在812处,存储器装置确定其是否已经接收来自主机装置的已经查核了完成队列上的条目(例如,图3中的步骤8)的确认。如果未接收,流程图800回环到802。如果已接收,在814处,存储器装置确定由主机装置查核的完成队列条目的数量。另外,在816处,存储器装置确定在814处所确定的数量是否大于预定数量+1。如果大于,这指示了,主机装置已经查核了在810处重设计数器后放置在完成队列中的条目。为了避免过早发送中断,在818处,调整计数器的值以反映当前在完成队列中尚未由主机装置所查核的条目的数量。
图9是对中断合并分析队列深度的示例方法的流程图900。如上所述,命令经受几个阶段。队列深度可以以几种方式中的一种来度量。以一种方式,可以由当前在存储器装置的操作控制下的阶段中的命令的数量来度量队列深度。例如,存储器装置可以通过进行各种操作来控制图3中的阶段3-6。因此,队列深度的一个度量是存储器装置已取回但尚未经由中断通知的被放置在完成队列上的命令的数量。在902处,存储器装置确定当前的队列深度(诸如图3的阶段3-6中的命令的当前数量)。在904处,存储器装置将当前的队列深度与期望的队列深度进行比较。在一个实现方式中,存储器装置可以具有期望的队列深度。期望的队列深度可以是预定的和静态的,或者可以基于存储器装置和/或主机装置的当前状态而是动态的。在一个示例中,期望的队列深度等于1,意味着存储器装置一次处理单个命令(诸如来自阶段3-6)。
在906处,存储器装置基于904处的比较来确定是否合并中断。例如,当前的队列深度可以少于期望的队列深度,使得存储器装置确定更多命令可以在阶段3-6内。因此,在910处,存储器装置合并中断。替代地,存储器装置可以确定当前的队列深度大于或等于期望的队列深度,使得存储器装置在908处立即将中断发送到主机装置。
图10是对中断合并估计命令完成的时间和主机等待时间的示例方法的流程图1000。在一个实现方式中,在确定何时将中断发送到主机装置中,存储器装置可以估计存储器装置上的操作。在另一个实现方式中,在确定何时将中断发送到主机装置中,存储器装置可以估计主机装置上的操作。例如,存储器装置可以基于主机等待时间来确定何时发送中断,使得主机装置查核完成队列上的预定数量的条目(例如,在完成队列上的10个条目)。在将所有预定数量的条目写入到完成队列之前,存储器装置可以发布中断,使得至主机装置服务中断时,所有预定数量的队列写入到完成队列(例如,在第10个条目写入到完成队列之前在具有足够的时间的情况下发布中断,使得由于主机等待时间,至主机装置服务中断时,存储器装置写入第10个条目)。在又另一个实现方式(在图10中示出)中,在确定何时将中断发送到主机装置中,存储器装置可以估计存储器装置和主机装置两者上的操作。在1002处,存储器装置确定当发送中断时是否考虑时间因素。如果不考虑,在1004处,存储器装置立即发送中断。如果考虑,在1006处,存储器装置可以由存储器装置来估计(多个)命令上的操作的完成的时间。例如,存储器装置可以分析图3的步骤4中的命令(处理命令)以便确定步骤4的估计的完成时间是否在预定周期内。
在1008处,响应于中断,存储器装置可以同样地估计主机装置等待时间。作为对主机装置上的操作的估计的部分,存储器装置可以编译统计并且投射/模拟主机完成队列处理速度。在一个实现方式中,存储器装置可以使用配置为在任意给定时间估计主机侧完成队列深度的硬件引擎。就此而言,除了从主机装置所发送的实际的指示,存储器装置可以在中断定时方法中把主机侧完成队列深度作为因素。硬件引擎的输出可以被考虑为“CQ的当前级别”并且可以在图10或者图7中的708处使用。在1010处,存储器装置可以基于1006处的估计的完成时间和1008处的估计的主机装置等待时间来发送中断。
作为一个示例,存储器装置可以估计在将来的预定时间中(诸如,在存储器装置的少量HW循环中),存储器装置将向相同的完成队列发布另一个完成。在这种情况下,存储器装置可以在发布第二完成条目后发布中断,从而节省了向主机的一个中断消息的发布。存储器装置还可以考虑主机装置的等待时间(包含PCIe周转时间),并且刚好在第二完成队列条目的发布之前将中断发送到主机装置。因此,存储器装置可以定时中断,使得当主机装置取回条目时第二完成条目在完成队列上。
最后,如上所述,可以使用任何适当类型的存储器。半导体存储器装置包含易失性存储器装置(诸如动态随机存取存储器(dynamic random access memory,“DRAM”)或静态随机存取存储器(static random access memory,“SRAM”)设备)、非易失性存储器装置(诸如电阻式随机存取存储器(resistive random access memory,“ReRAM”)、电可擦除可编程只读存储器(electrically erasable programmable read only memory、“EEPROM”)、闪存存储器(其也可以被认为是EEPROM的子集)、铁电式随机存取存储器(ferroelectricrandom access memory,“FRAM")和磁阻式随机存取存储器(magnetoresistive randomaccess memory,“MRAM”))以及其他能够存储信息的半导体元件。存储器装置的每种类型可以具有不同的配置。例如,快闪存储器装置可以配置为NAND或NOR配置。
存储器装置可以由无源和/或有源元件以任何组合形成。通过非限制性的示例,无源半导体存储器元件包含ReRAM设备元件,其在一些实施例中包含电阻率切换存储元件,诸如反熔丝、相变材料等,并且可选择地包含转向(steering)元件,诸如二极管等。进一步通过非限制性的示例,有源半导体存储器元件包含EEPROM和闪存存储器装置元件,其在一些实施例中包含含有电荷存储区域的元件,诸如浮置栅极、导电纳米颗粒、或电荷存储电介质材料。
多个存储器元件可以配置为使得它们串联连接或者使得每个元件单独可存取。通过非限制性的示例,NAND配置中的闪存器件(NAND存储器)典型地含有串联连接的存储器元件。可以配置NAND存储器阵列,使得阵列由存储器的多个串组成,其中串由共用单个位线的多个存储器元件组成并且作为组存取。可替代地,存储器元件可以配置为使得每个元件单独地可存取,例如,NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且存储器元件可以以其它方式配置。
位于基板内和/或基板上的半导体存储器元件可以布置为二维或三维,诸如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件被布置在单个平面中或单个存储器装置级别中。典型地,在二维存储器结构中,存储器元件被布置在实质上平行于支撑存储器元件的基板的主表面延伸的平面中(例如,在x-z方向平面中)。基板可以是晶片,存储器元件的层形成在晶片上或晶片中,或者基板可以是载体基板,其在形成存储器元件之后被附接至存储器元件。作为非限制性的示例,基板可以包含诸如硅的半导体。
存储器元件可能以有序阵列(诸如多个行和/或列)布置在单个存储器装置级中。但是,存储器元件可以排列成非正规或非正交的配置。存储器元件可以各自具有两个或多个电极或者诸如位线和字线的接触线。
布置三维存储器阵列,使得存储器元件占据多个平面或多个存储器装置级,从而形成三维的结构(即,在x、y和z方向,其中y方向实质上垂直于基板的主表面,且x方向和y方向实质上平行于基板的主表面)。
作为非限制性的示例,三维存储器结构可以垂直地布置为多个二维存储器装置级的堆叠体。作为另一个非限制性的示例,三维存储器阵列可以布置为多个垂直列(例如,实质上垂直于基板的主表面(即在y方向上)延伸的列),每列具有每列中的多个存储器元件。列可以布置为二维配置,例如,在x-z平面中,产生具有在多个垂直堆叠的存储器平面上的元件的存储器元件的三维布置。存储器元件的三维的其它配置也可以构成三维存储器阵列。
通过非限制性的示例,在三维NAND存储器阵列中,存储器元件可以耦合在一起以形成在单个水平(例如,x-z)存储器装置级内的NAND串。可替代地,存储器元件可以耦合在一起以形成穿越多个水平存储器装置级的垂直NAND串。可以设想其他的三维配置,其中一些NAND串含有单个存储器级中的存储器元件,而其他字符串含有跨越穿过多个存储器级的存储器元件。三维存储器阵列也可以设计为NOR配置和ReRAM配置。
典型地,在单片三维存储器阵列中,一个或多个存储器装置级形成在单个基板上。可选地,单片三维存储器阵列也可以具有至少部分在单个基板内的一个或多个存储器层。作为非限制性的示例,基板可以包含诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器装置级的层典型地形成在阵列的底层存储器装置级的层上。但是,单片三维存储器阵列的相邻的存储器装置级的层可以共享或者具有存储器装置级之间的中介层。
其次,二维阵列可以分开地形成,然后封装在一起以形成具有存储器的多个层的非单片存储器装置。例如,可以通过在分开的基板上形成存储器级然后在将堆叠存储器级相互堆叠来构建非单片堆叠存储器。可以在堆叠前将基板减薄或者从存储器装置级移除,但是由于存储器装置级最初在分开的基板上形成,产生的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以在分开的芯片上形成然后封装在一起以形成堆叠芯片存储器装置。
存储器元件的操作和与存储器元件的通信典型地需要相关联的电路。作为非限制性的示例,存储器装置可以具有用于控制和驱动存储器元件以完成诸如编程和读取的功能的电路。该相关联的电路可以与存储器元件在相同的基板上和/或在分开的基板上。例如,用于存储器读取-写入操作的控制器可以位于与存储器元件分开的控制器芯片上和/或在与存储器元件相同的基板上。
前述的详细描述意图被理解为本发明可以采取的所选择的形式的说明,而不是作为本发明的限定。仅以下权利要求(包含所有等同)意图限定所要求保护的本发明的范围。最后,应该注意的是,本文所描述的任何优选实施例的任何方面都可以单独使用或相互结合使用。

Claims (22)

1.一种方法,包括:
确定完成了存储器装置上的一个或多个命令的处理;
分析完成队列或所述一个或多个命令的一个或多个方面;
基于所述分析,确定何时向主机装置产生中断,所述中断向所述主机装置指示完成了所述完成队列上的一个或多个命令的处理;以及
响应于确定何时向所述主机装置产生所述中断,将所述中断发送到所述主机装置。
2.根据权利要求1所述的方法,其中确定何时向所述主机装置产生所述中断包括:
确定是否将第一命令的完成的通知与第二命令的完成的通知合并;以及
响应于确定不合并所述中断,将所述中断立即发送到所述主机装置。
3.根据权利要求1所述的方法,其中分析所述完成队列的一个或多个方面包括分析与所述完成队列相关联的标识;
其中与所述完成队列相关联的所述标识指示所述完成队列的优先级;并且
其中基于所述分析来确定何时向所述主机装置产生所述中断包括基于所述完成队列的所述优先级来确定何时向所述主机装置产生所述中断。
4.根据权利要求3所述的方法,其中与所述完成队列相关联的所述标识包括与提交队列相关联的标识;
其中所述完成队列的所述优先级包括所述提交队列的优先级;并且
其中确定何时向所述主机装置产生所述中断包括基于所述提交队列的所述优先级来确定何时向所述主机装置产生所述中断。
5.根据权利要求1所述的方法,其中分析所述完成队列的所述一个或多个方面包含分析所述完成队列的充满度。
6.根据权利要求5所述的方法,其中所述分析将所述完成队列的充满度的级别与至少两个级别比较。
7.根据权利要求6所述的方法,其中响应于确定所述充满度的级别低于第一级别,确定立即向所述主机装置产生所述中断;并且
其中响应于确定所述充满度的级别高于第二级别,确定等待向所述主机装置产生所述中断。
8.根据权利要求7所述的方法,其中响应于确定所述充满度的级别在所述第一级别与所述第二级别之间,确定部分地合并对所述主机装置的所述中断。
9.根据权利要求6所述的方法,其中所述两个级别是预定的。
10.根据权利要求6所述的方法,其中所述两个级别是动态地确定的。
11.根据权利要求1所述的方法,其中分析所述一个或多个命令的一个或多个方面包括确定命令的类型;并且
其中基于所述分析来确定何时向所述主机装置产生所述中断包括,基于命令的所述类型来确定是将所述中断与另一中断合并还是立即发送所述中断。
12.根据权利要求1所述的方法,其中分析所述一个或多个命令的一个或多个方面包括确定在所述存储器装置中受执行的显著的命令;并且
其中基于所述分析来确定何时向所述主机装置产生所述中断包括,基于所述受执行的显著命令来确定是将所述中断与另一中断合并还是立即发送所述中断。
13.一种非易失性存储器装置,包括:
非易失性存储器;
通信接口,配置为与主机装置通信,以便所述存储器装置将条目发布到完成队列;以及
控制器,与所述非易失性存储器和所述通信接口通信,所述控制器配置为:
通过所述存储器装置估计命令的处理的完成;
基于所估计的完成来确定是否合并去往所述主机装置的关于发布到所述完成队列的所述条目的通知;以及
响应于确定合并去往所述主机装置的通知,基于所述所估计的完成,定时向所述主机装置发送所述通知。
14.根据权利要求13所述的存储器装置,其中所述控制器还配置为估计主机等待时间,所述主机等待时间指示所述主机装置响应所述通知的时间周期;并且
其中所述控制器配置为基于所述所估计的完成和所述主机等待时间两者来定时发送所述通知。
15.根据权利要求14所述的存储器装置,其中所述控制器配置为基于所述主机装置对先前通知的响应来估计所述主机等待时间。
16.根据权利要求13所述的存储器装置,其中所述控制器还配置为响应于确定不合并对所述主机装置的所述通知,将所述通知立即发送到所述主机装置。
17.一种非易失性存储器装置,包括:
非易失性存储器;
通信接口,配置为与主机装置通信,以便所述存储器装置将条目发布到完成队列;
用于确定不合并对所述主机装置的中断的机构,所述中断向所述主机装置指示发布到所述完成队列的所述条目;
用于确定部分地合并对所述主机装置的所述中断的机构;以及
用于确定完全地合并对所述主机装置的所述中断的机构。
18.根据权利要求17所述的存储器装置,其中所述用于确定不合并的机构使用第一级别来确定不合并中断;
其中所述用于确定合并的机构使用第二级别来确定合并中断;并且
其中所述用于确定部分地合并的机构使用所述第一级别和所述第二级别来确定何时部分地合并中断。
19.根据权利要求18所述的存储器装置,还包括用于动态地确定所述第一级别和所述第二级别中的一个或两者的机构。
20.根据权利要求19所述的存储器装置,其中所述用于动态地确定所述第一级别和所述第二级别中的一个或两者的机构基于主机等待时间,所述主机等待时间指示所述主机装置响应所述中断的时间周期。
21.根据权利要求19所述的存储器装置,其中所述用于动态地确定所述第一级别和所述第二级别中的一个或两者的机构基于所述完成队列中的命令条目的优先级。
22.根据权利要求17所述的存储器装置,其中所述用于确定部分合并的机构基于一个或多个命令的处理的估计的完成时间。
CN201711346736.4A 2017-03-24 2017-12-15 动态和自适应中断合并的系统和方法 Active CN108628777B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/468,620 US10466903B2 (en) 2017-03-24 2017-03-24 System and method for dynamic and adaptive interrupt coalescing
US15/468,620 2017-03-24

Publications (2)

Publication Number Publication Date
CN108628777A true CN108628777A (zh) 2018-10-09
CN108628777B CN108628777B (zh) 2022-02-22

Family

ID=63450152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711346736.4A Active CN108628777B (zh) 2017-03-24 2017-12-15 动态和自适应中断合并的系统和方法

Country Status (3)

Country Link
US (1) US10466903B2 (zh)
CN (1) CN108628777B (zh)
DE (1) DE102017128939A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659122A (zh) * 2019-07-31 2020-01-07 杭州阿姆科技有限公司 一种ssd中断实现方法及装置
CN111142781A (zh) * 2018-11-06 2020-05-12 慧荣科技股份有限公司 数据储存装置与数据处理方法
CN111857996A (zh) * 2020-06-30 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种中断处理方法、系统、设备及计算机可读存储介质
CN114048156A (zh) * 2021-10-28 2022-02-15 山东云海国创云计算装备产业创新中心有限公司 一种多通道多映射中断控制器
CN115858018A (zh) * 2023-02-27 2023-03-28 珠海星云智联科技有限公司 一种嵌入式系统的自适应寄存器更新方法、设备及介质
CN117149278A (zh) * 2023-10-30 2023-12-01 苏州元脑智能科技有限公司 一种命令处理系统、控制方法及主机设备

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180069960A (ko) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10466904B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10387081B2 (en) * 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10261698B2 (en) * 2017-05-16 2019-04-16 Dell Products Systems and methods for hardware-based raid acceleration for variable-length and out-of-order transactions
US10558376B2 (en) * 2018-06-28 2020-02-11 Western Digital Technologies, Inc. Storage system and method for namespace reservation in a multi-queue single-controller environment
TWI676171B (zh) * 2018-09-18 2019-11-01 華邦電子股份有限公司 記憶體裝置及其中斷處理方法
US10657078B1 (en) 2018-10-30 2020-05-19 Micron Technology, Inc. Providing information for a controller memory buffer elasticity status of a memory sub-system to a host system
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US10825526B1 (en) * 2019-06-24 2020-11-03 Sandisk Technologies Llc Non-volatile memory with reduced data cache buffer
US11210089B2 (en) 2019-07-11 2021-12-28 Hewlett Packard Enterprise Development Lp Vector send operation for message-based communication
JP2021033845A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11068422B1 (en) * 2020-02-28 2021-07-20 Vmware, Inc. Software-controlled interrupts for I/O devices
US11467843B2 (en) 2020-06-18 2022-10-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for queue availability monitoring
US20220050629A1 (en) * 2020-08-13 2022-02-17 Micron Technology, Inc. Completion management
US11397699B2 (en) 2020-11-18 2022-07-26 Western Digital Technologies, Inc. Interrupt coalescing protection logic
US20220206971A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Interrupt and exception clustering in a processor using membership groups
US11762587B2 (en) 2021-05-05 2023-09-19 Samsung Electronics Co., Ltd Method and memory device for atomic processing of fused commands
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US11789654B2 (en) 2021-09-29 2023-10-17 Western Digital Technologies, Inc. Data storage device and method for file-based interrupt coalescing
CN116166415A (zh) * 2021-11-25 2023-05-26 三星电子株式会社 装置控制器、存储装置及其方法
US20230367513A1 (en) * 2022-05-13 2023-11-16 Silicon Motion, Inc. Storage device capable of dynamically determining whether to and when to send next interrupt event to host device
US20230409239A1 (en) * 2022-06-21 2023-12-21 Micron Technology, Inc. Efficient command fetching in a memory sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040515A (zh) * 2011-09-30 2014-09-10 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
US20150074677A1 (en) * 2013-09-06 2015-03-12 Seagate Technology Llc Load adaptive pipeline
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
CN106021147A (zh) * 2011-09-30 2016-10-12 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
US20170010992A1 (en) * 2015-07-10 2017-01-12 Apple Inc. Power saving feature for storage subsystems
CN106528461A (zh) * 2015-09-14 2017-03-22 三星电子株式会社 储存设备及其中断生成方法

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065089A (en) * 1998-06-25 2000-05-16 Lsi Logic Corporation Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency
US6654343B1 (en) 2001-03-19 2003-11-25 Turin Networks Method and system for switch fabric flow control
US6988268B2 (en) 2002-04-30 2006-01-17 Microsoft Corporation IO completion architecture for user-mode networking
US7659904B2 (en) 2003-04-07 2010-02-09 Ati Technologies Ulc System and method for processing high priority data elements
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US20060161733A1 (en) 2005-01-19 2006-07-20 Emulex Design & Manufacturing Corporation Host buffer queues
US7386674B1 (en) 2005-04-25 2008-06-10 Netapp, Inc. Method and apparatus to provide a unified readahead scheme for multiple sources
US20080109573A1 (en) 2006-11-08 2008-05-08 Sicortex, Inc RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
JP5460143B2 (ja) 2009-06-29 2014-04-02 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
US8588228B1 (en) 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US8881141B2 (en) 2010-12-08 2014-11-04 Intenational Business Machines Corporation Virtualization of hardware queues in self-virtualizing input/output devices
US8732406B1 (en) 2011-03-15 2014-05-20 Netapp, Inc. Mechanism for determining read-ahead length in a storage system
US9817761B2 (en) 2012-01-06 2017-11-14 Sandisk Technologies Llc Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer
US9069485B2 (en) 2012-12-20 2015-06-30 Oracle International Corporation Doorbell backpressure avoidance mechanism on a host channel adapter
US9003071B2 (en) 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US10063638B2 (en) 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9785545B2 (en) 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US20150046862A1 (en) 2013-08-11 2015-02-12 Silicon Graphics International Corp. Modifying binning operations
US20150067291A1 (en) 2013-08-30 2015-03-05 Kabushiki Kaisha Toshiba Controller, memory system, and method
US9348537B2 (en) 2013-09-10 2016-05-24 Qualcomm Incorporated Ascertaining command completion in flash memories
US9778859B2 (en) 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
US9513869B2 (en) 2013-09-18 2016-12-06 HGST Netherlands B.V. Doorbell-less endpoint-initiated protocol for storage devices
US9110786B2 (en) 2013-11-07 2015-08-18 Sandisk Technologies Inc. Read operation prior to retrieval of scatter gather list
US9317204B2 (en) 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US9052835B1 (en) 2013-12-20 2015-06-09 HGST Netherlands B.V. Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted
US20150186068A1 (en) 2013-12-27 2015-07-02 Sandisk Technologies Inc. Command queuing using linked list queues
US9459810B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US20160342545A1 (en) 2014-02-12 2016-11-24 Hitachi, Ltd. Data memory device
EP3117583A4 (en) 2014-03-08 2017-11-01 Diamanti, Inc. Methods and systems for converged networking and storage
US10635316B2 (en) 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US20170228173A9 (en) 2014-05-02 2017-08-10 Cavium, Inc. Systems and methods for enabling local caching for remote storage devices over a network via nvme controller
US20150363229A1 (en) 2014-06-11 2015-12-17 Futurewei Technologies, Inc. Resolving task dependencies in task queues for improved resource management
US9990313B2 (en) 2014-06-19 2018-06-05 Hitachi, Ltd. Storage apparatus and interface apparatus
KR101699377B1 (ko) 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
KR102330389B1 (ko) 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9563367B2 (en) 2014-08-26 2017-02-07 HGST Netherlands B.V. Latency command processing for solid state drive interface protocol
US9727239B2 (en) 2014-11-13 2017-08-08 Samsung Electronics Co., Ltd. Electronic system with partitioning mechanism and method of operation thereof
US9841902B2 (en) 2014-11-20 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express controllers configured with non-volatile memory express interfaces
US9489146B2 (en) 2014-12-09 2016-11-08 Sandisk Technologies Llc Memory system and method for selecting memory dies to perform memory access operations in based on memory die temperatures
US20160188510A1 (en) 2014-12-26 2016-06-30 Samsung Electronics Co., Ltd. METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES
US9524114B2 (en) 2015-01-27 2016-12-20 Futurewei Technologies, Inc. Optimizing synchronous write via speculation
GB2535493B (en) 2015-02-18 2021-02-24 Advanced Risc Mach Ltd Graphics processing systems
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US11042300B2 (en) 2015-03-31 2021-06-22 Toshiba Memory Corporation Command load balancing for NVME dual port operations
US10114675B2 (en) 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US10191691B2 (en) 2015-04-28 2019-01-29 Liqid Inc. Front-end quality of service differentiation in storage system operations
KR102403489B1 (ko) 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US10095442B2 (en) 2015-08-04 2018-10-09 Toshiba Memory Corporation Memory device that changes execution order of commands
US10019161B2 (en) 2015-08-31 2018-07-10 Sandisk Technologies Llc Out of order memory command fetching
US9703716B2 (en) 2015-08-31 2017-07-11 Sandisk Technologies Llc Partial memory command fetching
US10025532B2 (en) 2015-09-11 2018-07-17 Sandisk Technologies Llc Preserving read look ahead data in auxiliary latches
US9927983B2 (en) 2015-09-28 2018-03-27 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
US10866910B2 (en) 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
US9977623B2 (en) 2015-10-15 2018-05-22 Sandisk Technologies Llc Detection of a sequential command stream
KR102358691B1 (ko) 2015-10-30 2022-02-07 삼성전자주식회사 저장 장치의 요청 방법 및 호스트의 커맨드 발행 방법
US10235102B2 (en) 2015-11-01 2019-03-19 Sandisk Technologies Llc Methods, systems and computer readable media for submission queue pointer management
KR102450555B1 (ko) 2015-11-09 2022-10-05 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US10244070B2 (en) 2016-01-26 2019-03-26 Oracle International Corporation In-memory message sequencing
KR102549611B1 (ko) 2016-04-01 2023-06-30 삼성전자주식회사 스토리지 장치 및 그것의 이벤트 통지 방법
US20170322897A1 (en) 2016-05-06 2017-11-09 Sandisk Technologies Inc. Systems and methods for processing a submission queue
KR102353782B1 (ko) 2016-08-31 2022-01-19 삼성전자주식회사 NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
US11586565B2 (en) 2016-10-03 2023-02-21 Samsung Electronics Co., Ltd. Non-volatile storage system and data storage access protocol for non-volatile storage devices
KR20180045103A (ko) 2016-10-24 2018-05-04 삼성전자주식회사 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법
US10656873B2 (en) 2016-12-21 2020-05-19 Intel Corporation Technologies for prioritizing execution of storage commands
US10817191B2 (en) 2017-03-13 2020-10-27 Western Digital Technologies, Inc. Storage system and method for thermal throttling via command arbitration
JP2018160155A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 記憶装置
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10466904B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10296473B2 (en) 2017-03-24 2019-05-21 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
JP2018169810A (ja) 2017-03-30 2018-11-01 東芝メモリ株式会社 メモリシステムおよび制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104040515A (zh) * 2011-09-30 2014-09-10 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
CN106021147A (zh) * 2011-09-30 2016-10-12 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
US20150074677A1 (en) * 2013-09-06 2015-03-12 Seagate Technology Llc Load adaptive pipeline
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
US20170010992A1 (en) * 2015-07-10 2017-01-12 Apple Inc. Power saving feature for storage subsystems
CN106528461A (zh) * 2015-09-14 2017-03-22 三星电子株式会社 储存设备及其中断生成方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111142781A (zh) * 2018-11-06 2020-05-12 慧荣科技股份有限公司 数据储存装置与数据处理方法
CN111142781B (zh) * 2018-11-06 2023-06-09 慧荣科技股份有限公司 数据储存装置与数据处理方法
CN110659122A (zh) * 2019-07-31 2020-01-07 杭州阿姆科技有限公司 一种ssd中断实现方法及装置
CN111857996A (zh) * 2020-06-30 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种中断处理方法、系统、设备及计算机可读存储介质
CN111857996B (zh) * 2020-06-30 2023-04-07 山东云海国创云计算装备产业创新中心有限公司 一种中断处理方法、系统、设备及计算机可读存储介质
CN114048156A (zh) * 2021-10-28 2022-02-15 山东云海国创云计算装备产业创新中心有限公司 一种多通道多映射中断控制器
CN114048156B (zh) * 2021-10-28 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种多通道多映射中断控制器
CN115858018A (zh) * 2023-02-27 2023-03-28 珠海星云智联科技有限公司 一种嵌入式系统的自适应寄存器更新方法、设备及介质
CN117149278A (zh) * 2023-10-30 2023-12-01 苏州元脑智能科技有限公司 一种命令处理系统、控制方法及主机设备
CN117149278B (zh) * 2023-10-30 2024-02-06 苏州元脑智能科技有限公司 一种命令处理系统、控制方法及主机设备

Also Published As

Publication number Publication date
DE102017128939A1 (de) 2018-09-27
CN108628777B (zh) 2022-02-22
US10466903B2 (en) 2019-11-05
US20180275872A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
CN108628777A (zh) 动态和自适应中断合并的系统和方法
CN110088724B (zh) 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法
US9747029B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
US8949492B2 (en) Apparatus including buffer allocation management and related methods
EP2715730B1 (en) Apparatus including memory system controllers and related methods for memory management using blok tables
US9430373B2 (en) Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US8621113B2 (en) Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US11055022B2 (en) Storage system and method for early host command fetching in a low queue depth environment
US20180356996A1 (en) Storage system having an adaptive workload-based command processing clock
US11372543B2 (en) Zone-append command scheduling based on zone state
US20190079698A1 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
US10642746B2 (en) Controlling cached/non-cached memory access decisions based on memory access queue fill levels
US11941295B2 (en) Data storage device and method for providing an adaptive data path
US20210181980A1 (en) Storage System and Method for Improving Utilization of a Communication Channel between a Host and the Storage System
US11544107B2 (en) Storage system and method for multiprotocol handling

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