动态和自适应中断合并的系统和方法与流程

文档序号:15615352发布日期:2018-10-09 21:14阅读:453来源:国知局

本申请要求于2017年3月24日提交的申请号为15/468,620的美国申请的优先权,其全部内容通过引用合并于此。



背景技术:

高速nvm(nvmexpress,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之间的接口可以是任何适当的闪存接口,诸如触发模式(togglemode)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分离,但是在其他实施例中,ram116和rom117中的一个或两者可以位于控制器102内。在其他实施例中,ram116和rom118的部分可以位于控制器102内且位于控制器102之外。另外,在一些实现方式中,控制器102、ram116和rom118可以位于分开的半导体裸芯上。如以下所讨论的,在一个实现方式中,提交队列和完成队列可以储存在控制器存储器缓冲器中,其可以容纳在ram116中。

此外,前端模块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)接口,诸如触发模式(togglemode)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)命令,并且确定执行命令的步骤(例如,读取/写入/等)。例如,命令可以包括读取命令。响应于读取命令的接收,存储器装置解析读取命令,实现地址转换并且存取闪存以接收数据。在接收数据后,基于命令中的信息(例如,以下所讨论的prp1),存储器装置使数据储存在主机装置上。作为另一个示例,命令可以包括写入命令。响应于写入命令的接收,存储器装置解析写入命令,确定主机装置上经受写入的数据的位置,从主机装置上的位置读取数据,并且将数据写入到闪存中。

特别地,存储器装置可以与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中,可以存在多个高速pcitlp,以将数据从存储器装置传送到主机装置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中,存储器装置和主机装置使用事务处理层分组(transactionlayerpacket,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列表的指标中的每一个可以包含在prp406处。

存储器装置420包含存储器装置控制器422和存储器阵列450。存储器阵列450可以以各种方式分段,诸如以如图4所示的分段为10个区段。存储器装置控制器422可以包含一个或多个处理器424,并且并入pciemac和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周转时间),并且刚好在第二完成队列条目的发布之前将中断发送到主机装置。因此,存储器装置可以定时中断,使得当主机装置取回条目时第二完成条目在完成队列上。

最后,如上所述,可以使用任何适当类型的存储器。半导体存储器装置包含易失性存储器装置(诸如动态随机存取存储器(dynamicrandomaccessmemory,“dram”)或静态随机存取存储器(staticrandomaccessmemory,“sram”)设备)、非易失性存储器装置(诸如电阻式随机存取存储器(resistiverandomaccessmemory,“reram”)、电可擦除可编程只读存储器(electricallyerasableprogrammablereadonlymemory、“eeprom”)、闪存存储器(其也可以被认为是eeprom的子集)、铁电式随机存取存储器(ferroelectricrandomaccessmemory,“fram")和磁阻式随机存取存储器(magnetoresistiverandomaccessmemory,“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配置。

典型地,在单片三维存储器阵列中,一个或多个存储器装置级形成在单个基板上。可选地,单片三维存储器阵列也可以具有至少部分在单个基板内的一个或多个存储器层。作为非限制性的示例,基板可以包含诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器装置级的层典型地形成在阵列的底层存储器装置级的层上。但是,单片三维存储器阵列的相邻的存储器装置级的层可以共享或者具有存储器装置级之间的中介层。

其次,二维阵列可以分开地形成,然后封装在一起以形成具有存储器的多个层的非单片存储器装置。例如,可以通过在分开的基板上形成存储器级然后在将堆叠存储器级相互堆叠来构建非单片堆叠存储器。可以在堆叠前将基板减薄或者从存储器装置级移除,但是由于存储器装置级最初在分开的基板上形成,产生的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以在分开的芯片上形成然后封装在一起以形成堆叠芯片存储器装置。

存储器元件的操作和与存储器元件的通信典型地需要相关联的电路。作为非限制性的示例,存储器装置可以具有用于控制和驱动存储器元件以完成诸如编程和读取的功能的电路。该相关联的电路可以与存储器元件在相同的基板上和/或在分开的基板上。例如,用于存储器读取-写入操作的控制器可以位于与存储器元件分开的控制器芯片上和/或在与存储器元件相同的基板上。

前述的详细描述意图被理解为本发明可以采取的所选择的形式的说明,而不是作为本发明的限定。仅以下权利要求(包含所有等同)意图限定所要求保护的本发明的范围。最后,应该注意的是,本文所描述的任何优选实施例的任何方面都可以单独使用或相互结合使用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1