交叉点存储器阵列寻址的制作方法

文档序号:15829155发布日期:2018-11-03 00:17阅读:241来源:国知局

本申请要求wonhochoi等人于2017年4月14日提交的标题为“cross-pointmemoryarrayaddressing”的美国临时专利申请第62/485,735号的权益;本申请还要求wonhochoi等人于2017年6月28日提交的标题为“cross-pointmemoryarrayaddressing”的美国专利申请第15/636,499号的权益,以上申请通过引用并入本文中。

在各种实施例中,本公开涉及非易失性和/或易失性存储器,并且更特别地涉及交叉点存储器寻址。

背景技术

对每个读取进行单独的感测操作可以将延迟引入到读取操作中。然而,存储器装置可能不具有足够大的缓冲器来储存比读取操作所请求的数据更多的数据,和/或可能不接收足够寻址信息来撷取比读取操作所请求的数据更多的数据。



技术实现要素:

呈现了用于存储器阵列寻址的设备。在一个实施例中,设备包含多个存储器区域的阵列。在某些实施例中,寻址电路配置为接收多个存储器区域的阵列上的操作的地址。在一些实施例中,地址包括行地址和列地址,两者复用到地址中并且与用于操作的激活命令一起被接收。在又一个实施例中,用于多个存储器区域的阵列的行缓冲器配置为储存来自多个存储器区域的由所复用的行和列地址识别的数据。在某些实施例中,基于与用于操作的随后的命令一起接收到的第二地址,从行缓冲器选择操作的数据。

呈现了用于存储器阵列寻址的一个或多个设备。在一个实施例中,设备包含用于将对于集成电路裸芯的非易失性存储器瓦片的阵列上的操作接收到的地址解码成阵列部分、行地址和/或列地址的构件。在某些实施例中,地址与用于操作的激活命令一起被接收。在又一个实施例中,装置包含构件用于将阵列部分、行地址和列地址所识别的数据加载到用于非易失性存储器瓦片的阵列的行缓冲器。在某些实施例中,行缓冲器设置为朝向与非易失性存储器瓦片的阵列相同的集成电路裸芯的边缘。在某些实施例中,设备包含用于使用来自行缓冲器的数据来服务用于操作的多个随后的命令的构件,并且多个随后的命令中的每一个包含附加的地址,该附加的地址用于识别来自行缓冲器的数据的子集。

呈现了用于存储器阵列寻址的方法。在一个实施例中,方法包含从用于存储器裸芯上的读取操作的激活命令的行地址提取行地址和列地址。在又一个实施例中,方法包含感测来自由存储器裸芯中的所提取的行地址和列地址识别的存储器单元的数据。在某些实施例中,方法包含将感测到的数据加载到存储器裸芯的行缓冲器中。在一个实施例中,方法包含响应于读取操作的读取命令,迭代地传输来自行缓冲器数据的部分。在一些实施例中,读取命令的行地址识别来自行缓冲器数据的部分。

呈现了包括非暂时性计算机可读储存介质的计算机程序产品。在某些实施例中,计算机可读储存介质储存计算机可用的程序代码,其可执行以进行关于本公开的方法、设备和系统所描述的操作中的一个或多个。

附图说明

参考附图中示出的具体实施例,下面包含更多具体的说明。应当理解,这些附图仅描绘了本公开的某些实施例,并且因此不被认为是对其范围的限制,通过使用附图利用附加特征和细节来描述和解释本公开,其中:

图1是示出交叉点存储器阵列寻址的系统的一个实施例的示意性框图;

图2是示出交叉点存储器阵列寻址的系统的另一个实施例的示意性框图;

图3是示出交叉点存储器阵列寻址的系统的又一个实施例的示意性框图;

图4是示出在交叉点存储器阵列上的操作的时序的实施例的示意性框图;

图5是示出交叉点存储器阵列的地址的一个实施例的示意性框图;

图6是示出交叉点存储器阵列寻址的方法的一个实施例的示意性流程图;以及

图7是示出交叉点存储器阵列寻址的方法的又一个实施例的示意性流程图。

具体实施方式

本公开的方面可以体现为设备、系统、方法或计算机程序产品。相应地,本公开的方面可以采取如下形式:整个硬件实施例、整个软件实施例(包含固件、驻留软件、微代码等)、或者将软件和硬件方面组合的实施例,该些形式总体上可以在本文中称为“电路”、“模块”、“设备”或“系统”。此外,本公开的方面可以采取计算机程序产品的形式,该计算机程序产品体现在储存计算机可读和/或可执行程序代码的一个或多个非暂时性计算机可读储存介质中。

已经将本说明书中所描述的许多功能性单元标记为模块,以便更特别地强调它们实现方式的独立性。例如,模块可以实现为包括定制的vlsi电路或门阵列的硬件电路,诸如逻辑芯片、晶体管或其它分立组件的现成的半导体。模块还可以实现为可编程的硬件装置,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置等。

模块还可以至少部分地实现为由各种类型的处理器执行的软件。例如,可执行代码的识别模块可以包括计算机指令的一个或多个物理块或者一个或多个逻辑块,该计算机指令例如可以组织为对象、进程或函数。尽管如此,识别模块的可执行文件不需要在物理上位于一起,但是可以包括储存在不同位置的不同的指令,当在逻辑上连接在一起时,该不同位置构成模块并且实现该模块所声明(state)的目的。

确实,可执行代码的模块可以包含单个指令或许多指令,并且甚至可以分布在若干个不同代码段之上、不同程序之中、跨越若干个存储器装置等。在模块和模块的部分在软件中实现的情况下,可以将软件部分储存在一个或多个计算机可读和/或可执行储存介质上。可以利用一个或多个计算机可读储存介质中的任何组合。例如,计算机可读储存介质可以包含但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统的设备或装置,或前述的任何适当的组合,但是将不包含传播信号。在本文件的情景下,计算机可读和/或可执行储存介质可以是任何有形的和/或非暂时性的介质,其可以含有或储存由指令执行系统、设备、处理器或装置使用或与其组合使用的程序。

用于进行本公开的方面的操作的计算机程序代码可以以一种或多种程序语言的任何组合来编写,该程序语言包含诸如python、java、smalltalk、c++、c#、objectivec等的面向对象的程序语言,诸如“c”程序语言、脚本程序语言和/或其它类似的程序语言的常规进程程序语言。可以在用户的计算机中的一个或多个上、和/或数据网络等之上的远程计算机或服务器上部分地或完整地执行程序代码。

如本文所使用的组件包括有形的、物理的、非暂时性的装置。例如,组件可以实现为包括定制的vlsi电路、门阵列或其它集成电路的硬件电路,诸如逻辑芯片、晶体管或其它分立装置的现成的半导体装置,和/或其它机械的或电气装置。组件还可以实现为可编程的硬件装置,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置等。组件可以包括一个或多个硅集成电路装置(例如,芯片、裸芯、裸芯平面、封装)或其它分立电气装置,该组件通过印刷电路板(pcb)等的电线与一个或多个其它组件电通信。在某些实施例中,本文所描述的模块中的每一个可以替代地由组件来体现或者实现为组件。

如本文所使用的电路包括一个或多个电气的和/或电子的组件的集合,该组件提供一个或多个电流路径。在某些实施例中,电路可以包含电流的返回路径,使得该电路是闭合回路。然而,在另一个实施例中,不包含电流的返回路径的组件的集合可以称为电路(例如,开环回路)。例如,无论集成电路是否耦接到地(作为电流的返回路径),集成电路可以称为电路。在各种实施例中,电路可以包含集成电路的部分、集成电路、集成电路的集合、具有或不具有集成电路装置的非集成的电气和/或电气的组件的集合等。在一个实施例中,电路可以包含定制的vlsi电路、门阵列或其它集成电路,诸如逻辑芯片、晶体管或其它分立装置的现成的半导体装置,和/或其它机械的或电气的装置。电路还可以实现为可编程的硬件装置(诸如现场可编程门阵列、可编程的阵列逻辑、可编程逻辑装置等)中的综合电路(例如,实现为固件、网络列表等)。电路可以包括一个或多个硅集成电路装置(例如,芯片、裸芯、裸芯平面、封装)或其它分立电气装置,该电路通过印刷电路板(pcb)等的电线与一个或多个其它组件电通信。在某些实施例中,本文所描述的模块中的每一个可以由电路来体现或者实现为电路。

贯穿本说明书的对“一个实施例”、“实施例”或类似的语言的参考意味着结合实施例所描述的特定特征、结构或特性包含在本公开的至少一个实施例中。因而,除非以其它方式明确地指定,否则贯穿本说明书的短语“在一个实施例中”、“在实施例中”和类似的语言的出现可能但不一定都是指相同的实施例,而是意味着“一个或多个但非全部的实施例”。除非以其它方式明确地指定,否则术语“包含”、“包括”、“具有”及其变型意味着“包含但不限于”。除非以其它方式明确地指定,否则项目的列举列表不隐含任何或全部术语是互相排斥的和/或互相包容的。除非以其它方式明确指定,否则术语“一”,“一个”、“该”也指“一个或多个”。

下面参考根据本公开的实施例的方法、设备、系统和计算机程序产品的示例性流程图和/或示例性框图来描述本公开的方面。应当理解,可以通过计算机程序指令来实现示意性流程图和/或示意性框图中的每个框、以及示意性流程图和/或示意性框图中的框的组合。这些计算机程序指令可以提供给计算机的处理器或其它可编程数据处理设备以制造机器(producemachine),使得经由处理器或其它可编程数据处理设备执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个框中指定的功能和/或动作的构件。

还应该注意的是,在一些替代性实现方式中,框中所指出的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以实质上同时执行,或者框有时可以以相反的顺序执行。其它步骤和方法可以设想为在功能、逻辑或效果上等同于所示附图的一个或多个块或其部分。虽然在流程图和/或框图中可以采用各种箭头类型和线型,但是它们被理解为不限制相应实施例的范围。例如,箭头可以指示所描绘的实施例的列举步骤之间的未指定持续时间的等待或监控时段。

在以下的详细描述中,参考形成其一部分的附图。前述概述仅是说明性的,并不意图以任何方式进行限制。除了以上描述的说明性方面、实施例和特征,通过参考附图和以下的详细描述,其它方面、实施例和特征将变得明显。每个图中的元素的描述可以指代前面的图的元素。相同编号可以指图中的相同元件,包含相同元件的替代实施例。

图1是示出交叉点存储器阵列的系统100的一个实施例的框图。系统100包括非易失性的和/或易失性存储器装置120的一个或多个寻址电路150。在某些实施例中,替代或除了使用行地址和列地址来访问数据,该行地址与用于数据操作的激活命令(例如,行地址选择和/或ras)一起被接收,该列地址与随后的命令(例如,列地址选择和/或cas)一起被接收,寻址电路150配置为接收行地址和列地址的两者,它们复用到相同地址中并且与用于数据操作的激活命令一起被接收(例如,可以将行地址和列地址组合为相同ras信号/命令内的第一行地址和第二行地址)。在其它实施例中,寻址电路150所接收的相同地址还包含阵列部分,识别用于数据操作的多个存储器区域(例如,存储器块、瓦片、核心、存储条(bank)、存储条组、裸芯、裸芯平面)。

如本文所使用的激活命令包括命令、信号和/或请求,其触发、用信号通知和/或请求用于一个或多个随后的命令、信号和/或请求的准备行为。例如,激活命令可以包括预先定义的信号(例如,命令信号act是低;命令信号cs和ras是低,而命令信号cas和we是高;等等)、预先定义的命令(例如,打开行命令)等。对于诸如动态随机存取存储器(dram)、同步dram(sdram)等的易失性存储器,在某些实施例中,激活命令可以预充电和/或打开用于读取和/或写入命令的行。在某些实施例中,寻址电路150可以接收用于非易失性存储器阵列(诸如下面描述的储存类存储器(scm))的激活命令,并且在代替仅预先充电或打开行,寻址电路150可以将用于多个随后操作的数据加载、复制和/或预取到读取缓冲器中。例如,响应于激活命令,寻址电路150可以将来自多个存储器区域的数据加载到共享的行缓冲器中,以准备一个或多个随后的读取和/或写入/编程命令。在一个实施例中,寻址电路150可以支持两个或更多不同类型的激活命令,诸如快速页模式的激活命令,响应于该命令,寻址电路150预取和/或以其它方式加载比所请求的数据更多的数据来填充行缓冲器;遗留模式(legacymode)激活,响应于该命令,寻址电路150打开和/或激活所识别的行而不是将数据预取到行中;和/或其它类型的激活命令。

激活命令可以包括一个或多个地址(诸如行地址、存储条地址、存储条组地址和/或其它地址),来向寻址电路150指示为随后的命令、信号和/或请求准备的存储器位置。在接收第二地址(例如,cas信号/命令的行地址)之前,使用与激活命令一起接收到的地址(例如,使用行地址和列地址,其复用到所接收的地址中作为两个行地址和/或作为相同行地址的两个部分),寻址电路150可以将用于读取操作的数据加载(例如,对于读取操作感测来自存储器阵列的数据、对于编程或写入操作加载和/或锁存写入数据)到行缓冲器中。寻址电路150可以使用第二地址作为索引或偏移以用于撷取已经储存在行缓冲器中的数据。

在某些实施例中,寻址电路150可以与第一命令(例如,激活命令)一起接收较大的地址(例如,较多的地址位),并且与随后的命令(例如,读取和/或写入/编程命令)一起接收一个或多个较小的地址(例如,较少的地址位)。例如,在一个实施例中,激活命令可以包括具有阵列地址部分的地址(例如,瓦片地址和/或存储条地址)、第一行地址部分和第二行地址部分(例如,列地址),其中每一个一起复用到相同地址中(例如,阵列地址部分的4位、第一行地址部分的11位、第二地址部分的11位等);并且随后读取和/或写入/编程命令可以包括单个列地址(例如,用作识别已经在行缓冲器中的数据的索引或偏移的7位列地址)。在某些实施例中,通过在随后的命令中用较少的地址位在第一命令(例如,激活命令)中的前载(front-load)地址位随后的,寻址电路150可以将足够的数据预取和/或加载到行缓冲器中,用于多个随后的命令,这减少多个随后的命令的延迟,因为当随后的命令被寻址电路150接收时,数据已经在行缓冲器中。

行缓冲器中所储存的数据可以来自多个存储器区域(例如,存储器块、瓦片、核心、存储条(bank)、存储条组、裸芯、裸芯平面等),该多个存储器区域由与激活命令一起接收到的地址的阵列部分(例如,每存储器区域一位、每存储器区域一字节、或者每存储器区域的其它预先定义数量的位)来识别。例如,行缓冲器可以由多个存储器区域共享,而不是位于与单个存储器区域一起,并且可以位于集成电路裸芯和/或芯片的边缘,靠近输入/输出垫、drr电路、数据路径等。

以这种方式,在某些实施例中,因为在与用于一个或多个相关联数据操作的随后的命令(例如,读取命令、编程和/或写入命令等)一起接收到随后的地址之前,数据将已经储存在行缓冲器中,所以通过将行地址和列地址复用到与激活命令一起接收到的单个行地址中(例如,将行地址分成行地址和列地址),寻址电路150可以减少一个或多个相关联数据操作的延迟。在一个实施例中,在没有对于存储器阵列的存储器区域的附加的感测操作的情况(例如,减少trl时间或读取延迟)下,响应于接收到随后的地址(例如,cas信号/命令的列地址),可以从行缓冲器快速读取数据。

在其它实施例中,在行缓冲器储存来自多个不同存储器区域的数据(例如,来自多个所选择的存储器区域中的每一个的一位等)的情况下,该来自多个不同存储器区域的数据可以被并行地读取和/或同时读取,最小化trcd时间(例如,在接收具有诸如上面所述的所复用的地址的行地址的激活命令和接收具有列地址的随后的命令之间的时间)、同时读取多个随后的命令的数据(例如,响应于单个字节、八个字节等的请求,读取数据的页)。在某些实施例中,寻址电路150可以允许使用非易失性储存类存储器(scm)来代替诸如动态随机存取存储器(dram)等的易失性存储器(例如通过提供大约与易失性存储器一样低、与易失性存储器一样低、低于易失性存储器等的延迟;通过提供一次读取页和/或块的体读取能力;等等)。

寻址电路150可以是非易失性和/或易失性存储器元件123的部件,并且可以与非易失性和/或易失性存储器介质控制器126、装置驱动器等通信。在一些实施例中,寻址电路150可以至少部分地在计算装置110的非易失性和/或易失性存储器系统102上操作和/或与其通信,这可以包括处理器111、易失性存储器112和通信接口113。处理器111可以包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个应用专用处理器、一个或多个虚拟处理器(例如,计算装置110可以是主机内操作的虚拟机)、一个或多个处理核心等。通信接口113可以包括一个或多个网络接口,其配置为将计算装置110和/或存储器控制器126通信地耦接到通信网络115,诸如互联网协议(ip)网络、储存区域网络(san)、无线网络、有线网络等。

在各种实施例中,存储器装置120可以设置在相对于计算装置110的一个或多个不同位置中。在一个实施例中,存储器装置120包括一个或多个非易失性和/或易失性存储器元件123,诸如在一个或多个印刷电路板上设置的半导体芯片或封装或其它集成电路装置、储存壳体、和/或其它机械的和/或电气的支撑结构。例如,存储器装置120可以包括一个或多个直插式存储器模块(dimm)卡、一个或多个扩展卡和/或子卡、存储器卡、通用串行总线(usb)驱动器、固态驱动器(ssd)或其它硬盘驱动器装置,和/或可以具有其它存储器和/或储存装置形式因素。存储器装置120可以与计算装置110的母板集成和/或安装在计算装置110的主板上,安装在计算装置110的端口和/或插槽中,安装在不同的计算装置110和/或网络115上的专用储存装置上,通过外部总线(例如,外部硬盘驱动器)与计算装置110通信等。

在一个实施例中,存储器装置120可以设置在处理器111的存储器总线上(例如,在与易失性存储器112相同的存储器总线上、在与易失性存储器112不同的存储器总线上、代替易失性存储器112等)。在又一个实施例中,存储器装置120可以设置在计算装置110的外围总线上,诸如外围组件互连快速(pciexpress或pcie)总线、串行高级技术附件(sata)总线、并行高级技术附件(pata)总线、小型计算机系统接口(scsi)总线、火线(firewire)总线、光纤通道连接、通用串行总线(usb)、pcie高级开关(pcie-as)总线等。在另一个实施例中,存储器装置120可以设置在数据网络115上,诸如以太网、无限带宽(infiniband)网络、网络115之上的scsirdma、储存区域网络(san)、局域网(lan)、诸如因特网之类的广域网(wan)、其它有线和/或无线网络115等。

计算装置110还可以包括非暂时性计算机可读储存介质114。计算机可读储存介质114可以包括可执行指令,其配置为使得计算装置110(例如,处理器111)来进行本文中所公开的一个或多个方法的步骤。替代地或附加地,寻址电路150可以接收和/或执行在非暂时性储存介质114上储存的一个或多个计算机可读指令。

在一个实施例中,寻址电路150可以包括非易失性和/或易失性存储器元件123的逻辑硬件、用于非易失性和/或易失性存储器元件123的其它可编程逻辑固件、用于由非易失性和/或易失性存储器元件123执行的微代码等。在另一个实施例中,寻址电路150可以包括、接收、执行和/或储存可执行软件代码,该可执行软件代码储存在计算机可读储存介质上,由非易失性和/或易失性存储器元件123的逻辑硬件来执行。在又一个实施例中,寻址电路150可以包含逻辑硬件和可执行代码的组合。

在一个实施例中,一个或多个寻址电路150配置为:经由一个或多个总线125、127、存储器介质控制器126等,从主机计算装置110、储存客户端116、装置驱动器、可执行应用程序等接收请求和/或命令。寻址电路150还可以配置为:经由总线125向/从主机计算装置110、储存客户端116、装置驱动器、可执行应用程序等传送数据。相应地,在一些实施例中,寻址电路150可以包括一个或多个直接存储器访问(dma)模块、远程dma模块、总线控制器、网桥(bridge)、缓冲器等,和/或与其通信,以促进传送储存请求和相关联数据。在另一个实施例中,寻址电路150可以从储存客户端116接收作为api调用(call)的储存请求,像io-ctl命令等。

根据各种实施例,存储器控制器126可以管理一个或多个存储器装置120和/或存储器元件123。(多个)存储器装置120可以包括记录、存储器和/或储存装置,诸如布置和/或划分成多个可寻址介质储存位置的(多个)固态储存装置和/或(多个)半导体储存装置。如本文所使用的,介质储存位置是指存储器的任何物理单元(例如,存储器装置120上的任何数量的物理储存介质)。存储器单元和/或区域可以包含但不限于:页、存储器分区、块、扇区、物理储存位置的集(collection)或集合(例如,逻辑页、逻辑块)、瓦片、核心、存储条、存储条组、裸芯、裸芯平面、芯片等。

在某些实施例中,装置驱动器和/或存储器介质控制器126可以向储存客户端呈现逻辑地址空间134。如本文所使用的,逻辑地址空间134是指存储器资源的逻辑表示。逻辑地址空间134可以包括多个(例如,范围)逻辑地址。如本文所使用的,逻辑地址是指参考存储器资源(例如,数据)的任何标识符,包含但不限于逻辑块地址(lba)、柱面/报头(header)/扇区(chs)地址、文件名、对象标识符、索引节点(inode)、通用唯一标识符(uuid)、全局唯一标识符(guid)、散列码(hashcode)、签名、索引条目、范围、程度等。

用于存储器装置120的装置驱动器可以维护诸如逻辑到物理地址映射结构的元数据135,以将逻辑地址空间134的逻辑地址映射到在(多个)存储器装置120上的介质储存位置。装置驱动器可以配置为向一个或多个储存客户端116提供储存服务。储存客户端116可以包含在计算装置110上操作的本地储存客户端116、和/或经由网络115和/或网络接口113可访问的远程储存客户端116。储存客户端116可以包含但不限于:操作系统、文件系统、数据库应用程序、服务器应用程序、内核级进程、用户级进程、应用程序等。

装置驱动器可以通信地耦接到一个或多个存储器装置120。一个或多个存储器装置120可以包含不同类型的存储器装置,其包括但不限于:固态储存装置、半导体储存装置、san储存资源、易失性存储器装置、非易失性存储器装置等。一个或多个存储器装置120可以包括一个或多个相应的存储器介质控制器126和存储器介质122。装置驱动器可以经由传统的块i/o接口131来提供对一个或多个存储器装置120的访问。另外,装置驱动器可以通过scm接口132提供对增强功能的访问。元数据135可以用于管理和/或跟踪通过块i/o接口131、scm接口132、缓存接口133或其它相关的接口中的任何接口来进行的数据操作。

高速缓存接口133可以暴露可经由用于存储器装置120的装置驱动器可访问的缓存专用特征。另外,在一些实施例中,呈现给储存客户端116的scm接口132提供对数据变换的访问(access),该数据变换由一个或多个存储器装置120和/或一个或多个储存介质控制器126实现。

装置驱动器可以通过一个或多个接口向储存客户端116呈现逻辑地址空间134。如以上所讨论的,逻辑地址空间134可以包括多个逻辑地址,每个逻辑地址对应于一个或多个存储器装置120上的相应的介质位置。装置驱动器可以维护包括逻辑地址与介质位置之间的任意到任意映射的元数据135等。

装置驱动器还可以包括存储器装置接口139和/或与其通信,该储存装置接口139配置为通过总线125向一个或多个存储器装置120传送数据、命令和/或查询,该总线可以包含但不限于:处理器111的存储器总线、高速外围组件互连(pciexpress或pcie)总线、串行高级技术附件(ata)总线、并行ata总线、小型计算机系统接口(scsi)、火线、光纤通道、通用串行总线(usb)、pcie高级开关(pcie-as)总线、网络115、无限带宽、scsirdma等。存储器装置接口139可以使用(多个)输入-输出控制(io-ctl)命令、(多个)io-ctl命令扩展、远程直接存储器访问等来与一个或多个存储器装置120通信。

通信接口113可以包括一个或多个网络接口,其配置为将计算装置110和/或存储器控制器126通信地耦接到网络115和/或一个或多个远程网络可访问储存客户端116。储存客户端116可以包含在计算装置110上操作的本地储存客户端116,和/或可经由网络115和/或网络接口113访问的远程储存客户端116。存储器控制器126是一个或多个存储器装置120的一部分和/或与一个或多个存储器装置120通信。虽然图1描绘了单个存储器装置120,但是本公开在这方面不受限制,并且可以适用于并入任何数量的存储器装置120、一个或多个易失性存储器装置120和一个或多个非易失性存储器装置120的组合等。

存储器装置120可以包括存储器介质122的一个或多个元件123。在一个实施例中,储存介质122的元件123包括易失性储存介质122,诸如随机存取存储器(ram)、动态ram(dram)、同步dram(sdram)、双倍数据速率(ddr)sdram、静态ram(sram)、晶闸管ram(t-ram)、零电容器ram(z-ram)等。在某些实施例中,存储器介质122的元件123包括非易失性存储器介质122,诸如reram、忆阻器存储器、可编程金属化单元存储器、相变存储器(pcm、pcme、pram、pcram、双向统一存储器、硫族化物ram或c-ram)、nand闪存存储器(例如2dnand闪存存储器、3dnand闪存存储器)、nor闪存存储器、纳米随机存取存储器(纳米ram或nram)、基于纳米晶体线的存储器、基于硅氧化物的亚10纳米工艺存储器、石墨烯存储器、硅-氧化物-氮化物-氧化物-硅(sonos)、可编程金属化单元(pmc)、导电桥接ram(cbram)、磁阻ram(mram)、磁储存介质(例如,硬盘、磁带)、光储存介质等。在某些实施例中,储存介质122中的一个或多个元件123包括储存类存储器(scm)。

在一个实施例中,尽管诸如nand闪存存储器之类的遗留技术可以是块和/或页可寻址的,但是储存级存储器是字节可寻址的。在其它实施例中,储存级存储器可以比nand闪存存储器更快和/或具有更长的寿命(例如,耐久性);与dram相比,可以具有更低的成本、使用更少的功率和/或更高的储存密度;可以具有与dram一样低的或低于dram的读取延迟;可以具有体读取能力以一次读取一个或多个页和/或块的数据;和/或当与其它技术比较时提供一个或多个其它益处或改进。例如,储存类存储器可以包括如下的一个或多个非易失性存储器元件123:reram、忆阻器存储器、可编程金属化单元存储器、相变存储器、纳米ram、基于纳米晶体线的存储器,基于硅氧化物的亚10纳米工艺存储器、石墨烯存储器、sonos存储器、pmc存储器、cbram、mram和/或其变型。

在各种实施例中,虽然非易失性存储器介质122在本文中称为“存储器介质”,但是非易失性存储器介质122可以更通常地包括能够记录数据的一个或多个非易失性记录介质(其可以称为非易失性储存介质)、非易失性储存介质等。此外,在各种实施例中,非易失性存储器装置120可以包括非易失性记录装置、非易失性存储器装置、非易失性储存装置等。类似地,在各种实施例中,非易失性存储器元件123可以包括非易失性记录元件、非易失性存储器元件、非易失性储存元件等。

非易失性存储器介质122可以包括一个或多个非易失性存储器元件123,其可以包括但不限于:芯片、封装、平面、裸芯等。非易失性存储器介质控制器126可以配置为管理非易失性存储器介质122上的数据操作,并且可以包括一个或多个处理器、可编程处理器(例如,fpga)、asic、微控制器等。在一些实施例中,非易失性存储器介质控制器126配置为将数据储存在非易失性存储器介质122上和/或从非易失性存储器介质122读取数据,将数据传送到非易失性存储器装置120或从非易失性存储器装置120传送数据等。

非易失性存储器介质控制器126可以通过总线127通信地耦接到非易失性存储器介质122。总线127可以包括用于将数据传递到非易失性存储器元件123/传递来自非易失性存储器元件的数据的i/o总线。总线127还可以包括用于将寻址和其它命令以及控制信息传递到非易失性存储器元件123的控制总线。在一些实施例中,总线127可以并行地将非易失性存储器元件123通信地耦接到存储器介质控制器126。该并行访问可以允许将非易失性存储器元件123作为组进行管理,形成逻辑存储器元件129。可以将逻辑存储器元件划分成相应的逻辑存储器单元(例如逻辑页)和/或逻辑存储器分区(例如,逻辑块)。可以通过逻辑地组合非易失性存储器元件中的每一个的物理存储器单元来形成逻辑存储器单元。

非易失性存储器控制器126可以包括在计算装置110上执行的装置驱动器和/或与其通信。装置驱动器可以经由一个或多个接口131、132和/或133向储存客户端116提供储存服务。在一些实施例中,装置驱动器提供块-装置i/o接口131,储存客户端116通过该块-装置i/o接口131进行块级别的i/o操作。替代地或附加地,装置驱动器可以提供储存类存储器(scm)接口132,其可以向储存客户端116提供其它储存服务。在一些实施例中,scm接口132可以包括对块装置接口131的扩展(例如,储存客户端116可以通过对块装置接口131的扩展或附加来访问scm接口132)。替代地或附加地,可以提供scm接口132作为单独的api、服务和/或库。装置驱动器还可以配置为提供用于使用非易失性存储器系统102来缓存数据的缓存接口133。如以上所述,装置驱动器还可以包括非易失性存储器装置接口139,该非易失性存储器装置接口139配置为通过总线125将数据、命令和/或查询传送到非易失性存储器介质控制器126。

图2示出了可以包含一个或多个存储器裸芯或芯片212的非易失性储存装置210的实施例。非易失性储存装置210可以实质上类似于参考图1所描述的非易失性存储器装置120。在一些实施例中,存储器裸芯212包含存储器单元200、裸芯控制器220和读取/写入电路230a/230b的阵列(二维或三维)。在一个实施例中,由各种外围电路对存储器阵列200的访问以对称的方式在阵列的相对侧上实现,使得每一侧上的访问线和电路的密度减少一半。在又一个实施例中,读取/写入电路230a/230b包含多个感测块250,其允许并行地读取或编程存储器单元的页。

在各种实施例中,存储器阵列200可以经由行解码器240a/240b通过字线来寻址,以及经由列解码器242a/242b通过位线来寻址。在一些实施例中,控制器244被包含在与一个或多个存储器裸芯212相同的存储器装置210(例如,可移动储存卡或封装)中。命令和数据经由线232在主机与控制器244之间传送,并且以及经由线234在控制器与一个或多个存储器裸芯212之间传送。一个实现方式可以包含多个芯片212。

在一个实施例中,裸芯控制器220与读取/写入电路230a/230b协作,以进行存储器阵列200上的存储器操作。在某些实施例中,裸芯控制器220包含寻址电路150、状态机222、片上地址解码器224和功率控制电路226。

在一个实施例中,状态机222提供存储器操作的芯片级控制。片上地址解码器224提供地址接口,以在由主机或存储器控制器所使用的地址与由解码器240a、240b、242a、242b所使用的硬件地址之间进行转换。在存储器操作期间,功率控制电路226控制了供应到字线和位线的功率和电压。在一个实施例中,功率控制电路226包含可以创造大于供电电压的电压的一个或多个电荷泵。

在某些实施例中,状态机222和/或感测块250包含寻址电路150的实施例。在某些实施例中,寻址电路150可以包含感测块250、裸芯控制器220和/或状态机222的硬件、固件和/或可执行代码。

在一个实施例中,裸芯控制器220、寻址电路150、功率控制电路226、解码器电路224、状态机电路222、解码器电路242a、解码器电路242b、解码器电路240a、解码器电路240b、读取/写入电路230a、读取/写入电路230b和/或控制器244可以称为一个或多个管理电路。

图3描绘了交叉点存储器阵列300的一个实施例。在所描绘的实施例中,阵列300的存储器单元设置在行和列、字线和位线等的交叉点处,以用于二维和/或三维存储器阵列300。在某些实施例中,存储器阵列300包含多个存储器区域302(例如,存储器瓦片、核心、块、存储条、存储条组、扇区、裸芯、裸芯平面等等)、寻址电路150、行缓冲器310和列解码器312。在所描绘的实施例中,每个存储器区域302包含第一行解码器304、第二行解码器306和感测放大器308。

在某些实施例中,寻址电路150配置为接收多个存储器区域302的阵列300上的操作的地址。该地址可以包括第一行解码器304的第一行地址和第二行解码器306的第二行地址(例如,列地址),两者复用到相同地址中并且与用于数据操作的激活命令一起被接收。在所描绘的实施例中,因为第一行解码器304和第二行解码器306两者接收和解码来自与激活命令一起接收到的行地址的地址位(例如,其中在其内复用行地址和列地址),所以第一行解码器304和第二行解码器306都称为“行解码器”。然而,在其它实施例中,即使第二行解码器306接收到的列地址复用到行地址中并且与激活命令一起被接收,第二行解码器306可以称为列解码器306,以将它与位于离第二行解码器306的存储器区域302的垂直侧上的第一行解码器304区分开。

在所描绘的实施例中,行缓冲器310设置在存储器区域302的外面,但是与存储器区域302设置在相同的集成电路裸芯123和/或芯片123上。行缓冲器310可以配置为储存由来自多个存储器区域302的来自寻址电路150的所复用的行和列地址和/或第一和第二行地址所识别的数据(例如,对于读取操作从感测放大器308接收数据,对于写入操作从i/o线接收数据等)。例如,行缓冲器310可以储存由来自寻址电路150的阵列部分(例如,瓦片地址)所识别的来自每个存储器区域302的一位数据(例如,与激活命令一起被接收作为与所复用的行和列地址和/或第一和第二行地址相同的地址的部分),这意味着所复用的行和列地址和/或第一和第二行地址识别了由阵列部分(例如,瓦片地址)所识别的每个存储器区域302中的一位(例如,一个所选择的交叉点)。在某些实施例中,通过将第二地址发送到列解码器312等随后的,寻址电路150基于与用于数据操作的随后的命令一起接收到的第二地址(例如,列地址)来从缓冲器310选择数据操作的数据。

行缓冲器310可以选通或锁存数据,以响应于与用于操作的多个附加随后的命令(例如,针对数据的相同逻辑行的读取命令,每个读取命令具有参考在行缓冲器310内的不同偏移处的数据的列地址等)一起接收的多个附加列地址。在某些实施例中,响应于与随后的写入和/或编程命令一起接收的多个附加列地址,行缓冲器310可选通或锁存用于写入或编程到多个存储器区域302的数据(例如,储存和/或缓冲数据)。

图4描绘了交叉点存储器阵列300上的操作的时序400的一个实施例。在所描绘的实施例中,寻址电路150与激活命令402一起接收第一地址404。第一地址404包含阵列部分(例如,阵列地址、存储条组(bg)地址、存储条地址和/或瓦片地址)和行地址。在某些实施例中,行地址包含所复用的行和列地址、所复用的第一和第二行地址等。通过将一个地址循序地附加到第二地址、通过对两个地址进行散列、和/或通过以其它方式可逆地组合这两个地址,可以将两个地址复用到单个地址中。

响应于激活命令402,寻址电路150选择由第一地址404的阵列部分所识别的多个存储器区域302,向第一行解码器302提供来自第一地址404的所复用的行地址,并且向第二行解码器306提供所复用的列地址(例如,第二行地址),并且使用感测放大器308将第一地址404所识别的数据读取到行缓冲器310中。以这种方式,在某些实施例中,在trcd时间段期间,读取和/或感测数据的延迟和/或延时出现一次,并且不会对于随后接收到的读取命令406的随后的trl时间段增加延迟。

在所描绘的实施例中,寻址电路150接收多个随后的读取命令406,每个随后的读取命令406与随后的地址408一起(例如,列地址)。寻址电路150向列解码器312提供随后的地址408(例如,列地址),来从行缓冲器310内选择所请求的偏移处的数据410并且选通和/或锁存数据(例如,在一个或多个dq线或其它数据总线上)。以这种方式,在某些实施例中,储存类存储器阵列300可以与易失性存储器访问协议(例如,ddr3、ddr4和/或ddr5规范等)兼容和/或具有易失性存储器访问协议的一个或多个益处,当与其它非易失性存储器访问技术相比时,易失性存储器访问协议具有减少的延迟。

图5描绘了交叉点存储器阵列300的地址500、510的一个实施例。在某些实施例中,寻址电路150接收第一地址500作为用于存储器阵列300上的操作的激活命令的部分。在所描绘的实施例中,第一地址500包含阵列部分502(例如,4位,以从16k瓦片一次识别和/或选择1024个瓦片等)、行地址504(例如,4mb瓦片的11位)、以及列地址506和/或第二行地址506(例如,4mb瓦片的11位)。在一些实施例中,寻址电路150接收多个随后的第二地址510(例如,列地址510a、510b、510c),每个随后的第二地址510与诸如读取命令等的随后的命令一起。在所描绘的实施例中,随后的第二地址510和/或列地址510包括7位地址(例如,识别来自1kb行缓冲器310的8个字节或64位等)。

在一个实施例中,寻址电路150提供在激活命令的时候复用的地址,将行地址500分成两个或多个块502、504、506并将它们分开馈送到存储器核心、瓦片等。在某些实施例中,响应于请求(例如,以预取方案)单个字节,寻址电路150读取整个页。在一个实施例中,寻址电路150将整个页移动到行缓冲器310,行缓冲器310位于ddr电路输)入/输出垫附近(例如,朝向诸如集成电路裸芯、裸芯平面、芯片等的存储器元件123的边缘;在阵列的存储器单元与集成电路裸芯、裸芯平面、芯片等的输入/输出触点之间)。因此,在某些实施例中,从寄存器(例如,行缓冲器310)到输出(例如,输入/输出垫或触点)的时序是简单的逻辑延迟,没有附加的存储器感测操作等。在一个实施例中,响应于接收到列地址510(例如,在用于相同读取操作的随后的读取命令中),可以发送下一个字节。

在某些实施例中,存储器阵列122包括可字节寻址的“交叉点”储存类存储器(例如,具有在字线和位线的阵列的交叉点处的存储器单元等)。在一个实施例中,使用位于靠近存储器瓦片302和/或核心302的外面的“行缓冲器”310的列解码器312,使用“列地址”510来访问数据,而不是参考存储器瓦片302和/或核心302中的实际列的列地址。

图6描绘了用于存储器阵列寻址的方法600的一个实施例。方法600开始并且寻址电路150接收602阵列122、200上的操作的地址。在一个实施例中,寻址电路150与用于该操作的激活命令一起接收602作为行地址的地址。接收到的602地址可以包括复用和/或编码到相同的单个地址中的阵列部分502、行地址504、列地址506等中的一个或多个。

寻址电路150将接收到的602地址(例如,通过复用和/或编码到接收到的602地址中的阵列部分502、行地址504和/或列地址506)所识别的数据储存604在行缓冲器310中。寻址电路150接收606包括一个或多个第二和/或随后的地址(例如,列地址510)的一个或多个随后的命令(例如,读取命令、写入命令等),寻址电路150可以使用该一个或多个第二和/或随后的地址来识别行缓冲器310中的数据(例如,行缓冲器310中的偏移,行缓冲器310中的储存来自阵列122、200的存储器单元的读取数据的位置,行缓冲器310中储存编程到阵列122、200的存储器单元的写入数据的位置等)。寻址电路150可以使用来自行缓冲器310和/或接收到的602、606地址的所储存的604的数据,来服务一个或多个接收到的606的随后的命令。方法600结束。

图7描绘了用于存储器阵列寻址的方法700的一个实施例。方法700开始,并且寻址电路150接收702具有数据操作(例如,用于读取操作、写入操作、其它数据操作等)的行地址500的激活命令。寻址电路150从接收到的702激活命令的行地址500提取704和/或解码704阵列部分502、行地址504和列地址506中的一个或多个(例如,用作列地址506等的第二行地址506)。

如果寻址电路150确定706数据操作是读取操作,则寻址电路150(例如,使用感测放大器250,读取/写入电路230等)感测708和/或读取708来自存储器单元的数据,该存储器单元由所提取的704阵列部分502、行地址504和/或列地址506识别或与所提取的704阵列部分502、行地址504和/或列地址506相关联(例如,阵列部分502所识别的每个存储器瓦片的位等)。寻址电路150将感测到的708数据加载710、锁存710和/或储存710到行缓冲器310中。响应于接收到712用于数据操作的读取命令,寻址电路150基于列地址510或接收到的712读取命令来传输714、锁存714、传送714和/或发送714来自行缓冲器310数据的部分。寻址电路150可以继续接收712并且服务附加的读取命令,直到寻址电路150确定716读取操作完成为止(例如,响应于停用或关闭命令、响应于从行缓冲器310传输714所有读取数据等),并且方法700可以继续进行一个或多个随后的数据操作。

如果寻址电路150确定706数据操作是写入操作,则寻址电路150接收718一个或多个写入命令,并且在基于接收到的718一个或多个写入命令中的每一个的列地址510所选择的位置处,将写入数据加载到行缓冲器310中。响应于确定722写入操作完成(例如,响应于停用或关闭命令、响应于行缓冲器310已满等),寻址电路150将写入数据从行缓冲器310写入724和/或编程724到存储器单元,该存储器单元由所提取的704阵列部分502、行地址504和/或列地址506识别或与所提取的704阵列部分502、行地址504和/或列地址506相关联(例如,阵列部分502所识别的每个存储器瓦片的位等),并且方法700可以继续进行一个或多个随后的数据操作。

在各种实施例中,用于将对于集成电路裸芯123的非易失性存储器瓦片302的阵列122上的操作接收到的地址500解码和/或提取到阵列部分502、行地址504和/或列地址506中的构件可以包含寻址电路150、裸芯上控制器220、片上地址解码器224、状态机222、装置控制器126、集成电路装置123(例如,存储器裸芯、存储器芯片等)、第一行解码器304、第二行解码器306和/或列解码器306、处理器111、fpga、asic、其它逻辑硬件、和/或储存在计算机可读储存介质上的其它可执行代码。其它实施例可以包含类似的或等同的构件,用于解码和/或提取对于集成电路裸芯123的非易失性存储器瓦片302的阵列上的操作接收到的地址500。

在各种实施例中,用于将阵列部分502、行地址504和/或列地址506(和/或第二行地址506)所识别的数据加载到用于非易失性存储器瓦片302的阵列122的行缓冲器310的构件可以包含寻址电路150、裸芯上控制器220、片上地址解码器224、状态机222、装置控制器126、集成电路装置123(例如,存储器裸芯、存储器芯片等)、感测放大器308、列解码器312、处理器111、fpga、asic、其它逻辑硬件、和/或储存在计算机可读储存介质上的其它可执行代码。其它实施例可以包含类似的或等同的构件,用于将阵列部分502、行地址504和/或列地址506(和/或第二行地址506)所识别的数据加载到用于非易失性存储器瓦片302的阵列122的行缓冲器310中。

在各种实施例中,用于使用来自行缓冲器310的数据来服务用于操作的多个随后的命令的构件可以包含寻址电路150、列解码器312、裸芯上控制器220、片上地址解码器224、状态机222、装置控制器126、集成电路装置123(例如,存储器裸芯、存储器芯片等)、输入/输出垫和/或触点、处理器111、fpga、asic、其它逻辑硬件、和/或储存在计算机可读储存介质上的其它可执行代码。其它实施例可以包含类似的或等同的手段,用于使用来自行缓冲器310的数据来服务用于操作的多个随后的命令。

在不脱离其精神或基本特征的情况下,本公开可以以其它具体形式来体现。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都将被包含在其范围内。

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