非易失性存储器中的耗损均衡的制作方法

文档序号:15104574发布日期:2018-08-04 16:34阅读:125来源:国知局

本技术一般涉及非易失性存储器的耗损均衡(wear levelling),特别是非易失性存储器设备中的小块上的耗损均衡。



背景技术:

非易失性存储器(NVM)是存储器单元或元件在供给到单元/元件的电源被移除之后不丢失其状态的类型的存储器。非易失性存储器设备的例子包括闪存(flash memory)、磁性计算机存储设备(例如硬盘、软盘和磁带)和光盘。NVM设备的其他例子包括相变存储器(PCM/PCRAM)设备、电阻式随机存取存储器(RRAM/ReRAM)设备和相关电子材料(CEM/CeRAM)设备。在相变存储器设备中,编程(写入)涉及加热存储器单元以熔化它(这导致电阻的变化)以及冷却到导电结晶状态或非导电非晶状态。在电阻式RAM设备中,编程涉及改变跨电介质固态材料的电阻。CeRAM设备由相关电子材料(CEM)形成(全部或部分),该相关电子材料表现出由电子关联而非固态结构相变引起的突然的导电或绝缘状态转变。

一般来说,NVM单元或设备可以被电擦除和重新编程。然而,由于重复擦除和重新编程循环,NVM单元或设备随着时间的推移经常耗损。这种耗损会导致更高的位错误,并且最终可能导致NVM设备的一部分无法存储数据。闪存典型地具有105个编程/擦除循环的耐久性,PCM典型地在107和109个编程/擦除循环之间,CeRAM有望为109个编程/擦除循环的量级,而动态随机存取存储器(DRAM)支持至少1015个编程/擦除循环。取决于存储器设备的类型,耗损有不同的原因。PCM典型地由于在书写时使用的高温而耗损。高温导致PCM单元物理膨胀和收缩,这对单元中的材料施加压力。闪存由于连续的编程/擦除循环损耗位单元(bit cell)中的金属氧化物层而耗尽。



技术实现要素:

本申请人已经认识到,需要改进的技术以增加经受大量编程/擦除循环的NVM设备的寿命。

根据本技术的第一方面,提供一种对存储器阵列进行耗损均衡的方法,该方法包括:确定物理存储器的第一块的第一物理存储器地址,物理存储器的第一块存储来自写操作的数据;混洗(shuffle)要存储于存储器阵列内的写数据以提供混洗数据(shuffled data);以及将混洗数据写到物理存储器的第一块。

根据本技术的第二方面,提供一种用于对存储器阵列进行耗损均衡的装置,该装置包括:物理存储器阵列;第一部件,被配置为确定物理存储器的第一块的第一物理存储器地址,物理存储器的第一块存储来自写操作的数据;第二部件,被配置为混洗要存储于存储器阵列内的写数据,以提供混洗数据;以及第三部件,被配置为将混洗数据写到物理存储器的第一块。

如本领域技术人员所理解的,本技术可以体现为系统、方法或计算机程序产品。因此,本技术可以采取完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。

此外,本技术可以采取体现在计算机可读介质中的计算机程序产品的形式,该计算机可读介质上体现了计算机可读程序代码。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备或以上的任何合适的组合。

用于实施本技术的动作的计算机程序代码可以以一种或更多种编程语言的任何组合来编写,包括面向对象的编程语言和常规的程序化编程语言。代码组件可以体现为过程或方法等,并且可以包括子组件,这些子组件可以在任何抽象层次上采取指令或指令序列的形式,从本地指令集的直接机器指令到高级编译或特写语言结构。

附图说明

在附图中以示例的方式图解地例示了技术,其中:

图1显示了耗损均衡装置的框图;

图2示出了使用图1的装置的存储器块耗损均衡的例子;

图3示出了使用图1的装置的存储器块耗损均衡的另一例子;

图4示出了使用图1的装置的示例性存储器块耗损均衡的示意图;

图5显示了在图1的耗损均衡装置的存储器中块重写的步骤的示意图;

图6显示了从图1的耗损均衡装置的存储器读取块的步骤的示意图。

具体实施方式

广义地说,本技术的实施例提供用于非易失性存储器(NVM)设备中的改善的耗损均衡的装置和方法。特别地,与常常重新映射大数据块(例如,几千字节)的普通耗损均衡相比,本耗损均衡技术以更精细的尺度/粒度在存储器设备内的小块上运行。

术语“非易失性存储器”在这里与术语“非易失性存储器设备”、“非易失性随机存取存储器”、“非易失性存储器单元”、“非易失性存储器阵列”、“非易失性存储器元件”、“闪存”、“相变存储器”、“电阻式随机存取存储器”、“相关电子材料存储器”或“CeRAM”可互换使用。

术语“编程”在这里与术语“写入”或“重写”互换使用。术语“擦除”在这里与术语“删除”或“清除”可互换使用。术语“耗损均衡”在这里与术语“重新映射”或“重新分布”可互换使用。

如上所述,非易失性存储器设备在执行了许多编程/擦除循环之后耗尽。各种技术已经被用来增加非易失性存储器设备的寿命。例如,主动耗损均衡被用来确保对存储器阵列的写入均匀分布在整个阵列上,使得存储器阵列的特定部分不比其他部分更频繁地被写入。然而,这种技术通常局限于块级别上的耗损均衡。此外,已知的耗损均衡技术需要相当大的花费以处理耗损均衡操作。例如,计数器通常在存储器阵列中按行或块使用,以计数特定行/块已被写入多少次,以便将写入分布在存储器阵列上。因此,这种技术经常使用大量的元数据来记录每个行/块的使用,这可能是昂贵的。另一种技术包括抑制不改变存储器阵列的位单元或部分的状态的写入,以避免不必要地用未改变的信息重写位单元。然而,在写入循环期间实现和/或导致高延迟可能是昂贵的。另一种技术包括主动检测存储器阵列内的错误,以确保即使存在少量的缺陷位单元,存储器阵列仍能正确地工作。然而,这实现起来可能是昂贵的,因为它需要分别监测存储器块。

本技术的实施例针对支持随机存取(即,不需要单独的擦除循环)的非易失性存储器设备提供了一种改进的耗损均衡技术。特别地,本耗损均衡技术在存储器设备内的小块上运行,并且,在实施例中,与常常重新映射大数据块(例如,几千字节)的普通耗损均衡相比,以更精细的尺度/粒度运行。虽然与重新映射较小的块的情况相比,重新映射大块可能需要较少的花费来处理耗损均衡操作,但是对大数据块执行耗损均衡可能不是增加存储器设备的寿命的最佳方式。已经观察到,与在已知的耗损均衡方法中使用的大数据块相比,存储器负载失衡发生在小得多的(更精细的)粒度上。例如,在典型的32位数据字中,已经观察到字中的较低的8位典型地比字中的较高的位更频繁地被使用(即,编程/擦除)。(这些更频繁使用的位或字节可以称为“热位”或“热字节”。)这意味着,在32位字中,四个字节之一(即热字节)比其他三个字节更频繁地被更新。因此,重新分布(重新映射)大数据块(千字节)的耗损均衡技术可能不能有效地重新映射较低的8位,这样,在大的块内,某些(例如,较低)位或字节仍然比其他(例如更高)位或字节更频繁地被重新映射。

图1显示了根据本技术的一个实施例的耗损均衡装置10的框图。耗损均衡装置10包括物理存储器阵列14。物理存储器阵列优选为非易失性存储器阵列。在实施例中,物理存储器阵列可以包括闪存、相变存储器、电阻式随机存取存储器或相关电子材料存储器。(在后面提供相关电子材料存储器的背景信息)。存储器阵列典型地被配置为在位于等间距地址的块中存储数据。图1中的存储器阵列14包括多个存储器块14a、14b、…、14n,每个存储器块能够存储写数据。每个存储器块14a、14b、…、14n由其物理存储器地址(PA)寻址,使得可以通过将写数据发送到相关联的物理存储器地址来将写数据写到存储器阵列14中的特定块。

存储器阵列14被耦接到第一部件12,该第一部件12被配置为接收数据的逻辑地址作为输入,并将逻辑地址(LA)转译为物理存储器地址(PA),以便从存储器阵列14读取数据或将数据写到存储器阵列14。特定实施例中的第一部件12也可以充当耗损均衡器以对存储器阵列14中的耗损进行整平。耗损均衡器12可以用于读和写/编程操作中。

在写操作(也称为“编程操作”,或“编程/擦除操作”,或本文的“重写操作”)中,耗损均衡器12被配置为接收要写到存储器阵列14的写数据的逻辑地址(LA)。耗损均衡器可以确定来自所接收的逻辑地址的数据以前没有被写到存储器阵列。在这种情况下,耗损均衡器12选择可以写入写数据的存储器阵列中的物理位置。可替代地,耗损均衡器12可以确定来自所接收的逻辑地址的数据当前存储于存储器阵列14中。在这种情况下,耗损均衡器12可以确定存储器阵列14中与所接收的逻辑地址对应的物理位置。即,耗损均衡器12确定对应于逻辑地址(LA)的存储器块的物理存储器地址(PA)。作为例子,存储器块是存储来自先前的写操作的写数据(所接收的逻辑地址相同)的存储块14a。在重写操作期间,存储于存储器块14a中的数据(或如果发生了部分重写操作,则为数据中的一些)将被擦除,并在同一存储块中被新的(或部分新的)写数据替换。然而,为了防止存储器块14A耗尽,装置10被配置为在重写到存储器块时将数据混洗,使得频繁使用的位/字节的数据(“热位”/“热字节”)可能不总是位于存储器块内的相同物理位置上。可以理解,存储器阵列14中的存储器块的尺寸可以是任意尺寸,例如,几个位、半字节、字节、字、双字、千字节等。

如前面所解释的,与常常重新映射大数据块(例如,几千字节)的普通耗损均衡相比,本耗损均衡技术可以在小块上并且以更精细的尺度/粒度运行。例如,在典型的32位的数据字中,已经观察到字中较低的8位可能典型地比字中的更高的比特更频繁地被使用(即编程/擦除)。这意味着,在32位的字中,四个字节之一比其他三个字节更频繁地被更新。

因此,为了在存储器块内进行耗损均衡,耗损均衡装置10被配置为在要存储于存储器块内的新的写数据被写到存储器块之前对其进行混洗。即,新的写数据在被写到存储器块之前被混洗,使得在写操作期间在存储器块(即,块内)内均衡耗损。以这种方式,与仅移动/重新映射存储器阵列内的存储器块的普通耗损均衡技术相比,可以在更精细的粒度上实现耗损均衡。

装置10还包括被配置为执行块内混洗以提供细粒耗损均衡的第二部件16。第二部件16也被称为“混洗器”,并且通常可以被配置为混洗要存储于存储器块(例如存储器块14a)中的写数据,以提供用于存储于存储器块中的混洗数据。以下将更详细地描述混洗器16所使用的混洗技术。在实施例中,第二部件/混洗器16被配置为在混洗数据被存储于存储器阵列14中的存储器块之前对要存储于存储器阵列14中的数据块内的写数据进行混洗。在特定的实施例中,混洗器/第二部件16可以被配置为对要存储于存储器块内的写数据的位或数据字节或者“热位”或“热字节”进行混洗。但是,应当理解,本技术可以被应用于任何尺寸的存储器块以及任何粒度(例如,位级别、字节级别、字级别、块级别等)。

装置10还包括被配置为将(已经由混洗器16输出的)混洗数据写到物理存储器的存储器块(例如,存储器块14A)的第三部件(未示出)。在实施例中,该功能可以由耗损均衡器12和/或由混洗器16而非分开的部件执行。

因此,在本技术的一个实施例中,对存储器阵列14进行耗损均衡的方法包括确定(例如,使用耗损均衡器12)物理存储器的第一块(例如,存储器块14a)的第一物理存储器地址,物理存储器的第一块被配置为存储来自写操作的数据。新的(或部分新的)写数据将被写入物理存储器的第一块。该方法可以包括混洗(通过使用混洗器16)存储于第一块内的新的(或部分新的)写数据以提供混洗数据。该方法可以包括将混洗数据写到物理存储器的第一块(例如,存储器行14a)。这些步骤可以由耗损均衡器12或由混洗器16执行,或者由装置10的上述第三部件执行。

在实施例中,混洗器16通过使用配置函数确定块内混洗方案并将确定的块内混洗方案应用于写数据,来混洗要存储于存储器块内的写数据。

在实施例中,(混洗器)使用配置函数的步骤包括使用配置函数从多个预定义的块内映射方案确定块内映射方案。

在实施例中,混洗器可以通过将写数据的逻辑地址输入到配置函数中来确定块内混洗方案。附加或替代地,混洗器可以通过将写数据的逻辑地址和第一物理存储器地址输入到配置函数中来确定块内混洗方案。至少使用逻辑地址作为配置函数的输入可能意味着可以在不需要任何附加信息的情况下确定块内映射方案。当从存储器阵列读数据时,可以容易地重新确定块内映射方案,因为只需要逻辑地址或者逻辑地址和物理地址,这是已知的信息,并且很容易从数据存储区22获得(如下所述)。此外,由于输入到配置函数中的地址可能已经存储于数据存储区22中,因此存储于数据存储区22中的用于确定和重新确定向特定数据应用的块内映射方案的信息量可以不增加。

在一些实施例中,配置函数可义不依赖于写数据的逻辑地址(或逻辑地址和物理存储器地址),而可以是从多个预定义的块内映射方案选择块内映射方案的简单函数。为了读取需要解混洗(撤消混洗过程)的数据,可以存储所选的块内映射方案的指示。指示数据指示哪个预定义的块内映射方案被应用于具有特定逻辑地址的特定数据。因此,指示数据可以与将逻辑地址映射到物理地址的数据一起存储。为了从特定的物理地址读数据,装置10可以被配置为在数据存储区(data store)、表、页表或类似物中查找物理地址和对应的指示数据,以确定哪个块内映射方案被应用于物理地址上的数据。

该装置10可以被预先配置为使用特定的配置函数,例如,不依赖于写数据的逻辑/物理地址的配置函数、依赖于逻辑地址的配置函数或者依赖于写数据的逻辑和物理地址的配置函数。因此,对于一个装置10,耗损均衡器12和混洗器16向写到第一装置的存储器阵列的所有数据应用相同的配置函数,并且,对于第二个装置10,可以向写到第二装置的存储器阵列的所有数据应用不同的配置函数。

可选地,块内混洗技术可以与常规的块重新映射技术相结合。在这样的实施例中,写数据不仅被混洗,而且还被写到存储器阵列14中的完全不同的存储器块,即,被写到存储器阵列中的不同物理位置。因此,耗损均衡器12可以被进一步配置为识别存储器阵列14中的物理存储器的空闲块的物理存储器地址。作为例子,并且参照图1,存储器的空闲块是存储器块14b。在写操作期间,新的(或部分新的)写数据将被混洗并被写到空闲的存储器块14B,并且存储器块14a中的旧数据将被删除/擦除。

在这种组合的块重新映射和块内混洗技术中,耗损均衡器12可以确定物理存储器的第一块的存储器重新映射方案,并且可以识别物理存储器的空闲的第二块(例如,存储器块14b)的第二物理存储器地址。组合技术可以进一步包括:混洗要存储于存储器阵列内的数据以提供混洗数据;将第二物理存储器地址分配给混洗数据;以及将混洗数据写到物理存储器的第二块。

在实施例中,第一部件/耗损均衡器12进一步被配置为将(第二)空闲物理存储器地址分配给由混洗器16输出的混洗数据。耗损均衡器12可以被配置为更新地址映射表24,以将逻辑地址映射到正在重写数据的新的空闲物理存储器地址。

装置10可以包括缓冲器18(也称为“写入缓冲器”或“块缓冲器”或“缓冲存储器”)。写入缓冲器18可以被用作新的写数据的临时保持位置,该新的写数据将在被写到物理存储器阵列之前被混洗。在实施例中,写数据临时被写到写入缓冲器18(例如,耗损均衡器12、混洗器16或上述第三部件)。然后,混洗器16对存储于写入缓冲器中的写数据进行操作,以提供混洗数据。然后,写入缓冲器18中的混洗数据被写到正在编程/擦除的物理存储器的第一块,或者可选地,被写到存储器阵列中由耗损均衡器12识别的新的第二空闲块。写过程可以由上述第三个部件(其可以是用于写到存储器和缓冲器18的专用部件)、混洗器16或耗损均衡器12执行。因此,在具有写入缓冲器18的装置10的实施例中,第一部件(耗损均衡器12)可以被配置为将要存储于物理存储器内的写数据写到写入缓冲器,第二部件(混洗器16)可以被配置为对写入缓冲器中的数据进行混洗以提供混洗数据,并且第三部件(或第一部件和/或第二部件)可以被配置为将来自写入缓冲器的混洗数据写到物理存储器的第一块或第二块(取决于块内混洗是否与块重新映射组合)。

装置10可以进一步包括多路复用器20(或MUX)。在实施例中,多路复用器可以被耦接到物理存储器阵列14和混洗器16(第二部件)。在实施例中,多路复用器20用于从存储器阵列14中选择存储器块或位或字节。由于多路复用器能够选择来自存储器阵列14的数据位或字节,因此混洗器16可以在实施例中被耦接到多路复用器20,以使混洗器16在位或字节级别上执行块内或行内混洗。在附加或替代实施例中,混洗器16可以被耦接到耗损均衡器12,或成为其部分。在这种情况下,块内混洗可以由耗损均衡器12执行,但是在装置结构中的这个级别上,混洗可以仅在字节级别上执行。

在实施例中,物理存储器阵列14可以是或者可以包括非易失性存储器(NVM)阵列。附加或替代地,物理存储器阵列14包括闪存、相变存储器、电阻式随机存取存储器或相关电子材料存储器中的任意一种。

装置10可以可选地包括被配置为存储例如地址映射表24的单独的数据存储区或存储介质22。在替代性实施例中,数据存储区22可以被设置在耗损均衡器12内或装置10的另一个元件内。地址映射表24被配置为存储将逻辑地址(LA)转译为物理存储器地址(PA)的映射。如上所述,耗损均衡器12被配置为接收指示要写到存储器阵列14的新的写数据或者存储的哪个数据要被读取(取决于是正在执行写操作还是读操作)的逻辑地址(LA)作为输入。耗损均衡器12可以进一步被配置为在地址映射表24中查找所接收的逻辑地址,以确定对应的物理存储器地址。

类似地,耗损均衡器12可以被配置为在已经出现涉及块重新映射(除了块内混洗以外)的编程/擦除操作时更新地址映射表24。例如,在使用组合的块内混洗和块重新映射技术使得存储器块14a已经被擦除并且新的写数据被混洗并被写存储器块14b的情况下,耗损均衡器12可以被配置为更新地址映射表24,使得逻辑地址映射到新的物理存储器地址(即,存储器块14B的),而不是旧的物理存储器地址(即,存储器块14A的)。因此,在特定的实施例中,装置10包括地址映射表24,其中耗损均衡器12(第一部件)进一步被配置为:接收逻辑存储器地址(LA);在地址映射表中查找所接收的逻辑存储器地址;以及从地址映射表确定对应于逻辑存储器地址的第一物理存储器地址(PA)。

数据存储区22可以被进一步配置为存储块内映射方案表26。(如上所述,在替代性的实施例中,数据存储区22可以被设置在耗损均衡器12内。)混洗器16可以通过使用配置函数对存储器块内的数据进行混洗以确定块内混洗方案,并将块内混洗方案应用于写数据。可以从多个预定义的块内映射方案确定块内映射方案。在实施例中,配置函数使用写数据的地址(物理和/或逻辑),以从预定义的块内映射方案确定/选择块内映射方案。因此,块内映射方案表26可以存储多个预定义的块内映射方案。在这些实施例中,如前面所解释的,可以存储所选择/确定的块内映射方案的指示。然而,在配置函数不依赖于写数据的地址的实施例中,可以存储选择哪个块内映射方案的指示。在这种情况下,混洗器16可以从存储多个预定义的块内映射方案的表中确定块内映射方案,并将数据存储于指示所确定的预定义的块内映射方案的表中。作为替代,指示数据可以与写数据的逻辑地址一起存储于地址映射表24中。

在实施例中,耗损均衡器12或混洗器16可以通过使用配置函数在块内映射方案表26中选择所存储的映射方案之一,来确定块内映射方案,使得动态地确定向写数据应用的映射方案。例如,向特定的数据块应用的块内映射方案可以通过使用配置函数被动态确定,该配置函数接收写数据的逻辑地址(在实施例中,还有相关联的物理存储器地址)作为输入,输出用于向写数据应用的块内映射方案,并且向写数据应用块内映射方案以提供混洗数据。配置函数可以是逻辑地址或者逻辑地址和物理地址的散列函数。

如上所述,装置10用于读操作和写操作这两者。在读操作中,耗损均衡器12被配置为接收存储于存储器块(或存储器块的一部分)中的数据的逻辑地址,并以与上述类似的方式确定对应于接收逻辑地址的存储器阵列14中的物理地址。一旦已经确定了物理地址,耗损均衡器12就将物理地址提供给混洗器16。在读操作中,混洗器起到对位于所确定的物理地址上的数据进行解混洗(或将数据排序,即,混洗的逆)的作用。例如,先前存储于存储器块14a或14b中的混洗数据必须被解混洗(排序),以使得它能够被试图读取数据的部件/处理器所理解。混洗器16通过例如咨询位于数据存储区22中的指示数据或通过将数据的物理地址和/或逻辑地址输入到配置函数中,确定哪个块内映射方案曾被应用于位于接收物理地址的数据。(如上所述,在替代性实施例中,可以在地址映射表24内提供指示数据,使得混洗器16改为咨询地址映射表24)。一旦已经重新确定了块内映射方案,混洗器16就向位于所确定的物理地址处的数据应用块内映射方案的逆(即,反转混洗以重新排序数据),以获得解混洗的(经排序的)数据。

图2示出了使用图1的装置的存储器块耗损均衡的例子。这里所示出和描述的例子仅用于说明目的。在例子中,存储器阵列14包括多个存储器块14a、14b、…、14n。存储器块14a包含数据,在该例子中,数据是四字节的字“D A T A”。(然而,将理解,本耗损均衡技术适用于任何尺寸/粒度的数据,并且不限于位、半字节、字节、字、双字等)。在写(编程/擦除)操作中,存储于存储器块14a中的数据要通过使用耗损均衡技术被重写。在所示例子中,四字节的字的第四字节要被重写,即,四字节字“D A T A”将被重写为“D A T B”,这里,第四字节从“A”变为“B”(步骤S10)。在普通的耗损均衡技术中,新的数据只会被重写到空闲的存储器块(例如,存储器块14b)。然而,由于负载失衡通常发生在更精细的粒度上,因此物理存储器的同一部分将比同一存储块内的物理存储器的其他部分更频繁地被编程/擦除。装置10的混洗器16提供更细粒度的耗损均衡。在本例子中,“D A T A”字的前三个字节不改变,而第四个字节从“A”变为“B”。因此,存储器阵列14中存储有第四字节的物理位置可能比阵列14中的其他位置更频繁地被更新(即,可能是“热”位置)。

在实施例中,如上所述,为了使存储器阵列14上的耗损均衡化,要存储于存储器块14a(即,正在重写的块)中的新写数据要被临时写到存储器(写入)缓冲器18。混洗器16对存储于存储器缓冲器18中的写数据(“D A T B”)进行操作,以搅乱字节的顺序(步骤S12)。在本例子中,字节的顺序被颠倒(即“B T A D”),但是可以应用任何块内混洗方案。

在实施例中,混洗器16(第二部件)被配置为使用配置函数来确定块内映射方案,并将所确定的块内映射方案应用于存储于存储器阵列内的写数据以提供混洗数据。

配置函数可以用于从多个预定义的块内映射方案确定块内映射方案。装置10还包括被配置为存储多个预定义的块内映射方案(例如,在块内映射方案表26中)的数据存储区22。

然后,由混洗器16提供的混洗数据被从存储器缓冲器18写到存储器块14a(步骤S14)。因此,图2示出数据当在存储器阵列14中被写/重写时如何被混洗。

在实施例中,可能需要对存储于第一块中的数据进行部分重写。在这种情况下,混洗过程可以包括:通过使用配置函数确定另一个块内映射方案,对初始存储于第一块中的数据进行至少部分重写;向初始存储于第一块中的数据应用所确定的另一个块内映射方案,以提供混洗数据;以及将混洗数据写到物理存储器的第一块。

现在转到图3,图3示出了组合块内混洗与块重新映射的存储器块耗损均衡的例子。与图2相比,在图3所示的过程中,存储器块的内容被写到新的空闲存储器块以及被混洗。这里示出和描述的例子仅用于说明目的。在例子中,存储器阵列14包括多个存储器块14a、14b、…、14n。存储器块14a包含数据,在该例子中,数据是四字节的字“D A T A”。存储器块14b是空闲的,即不包含任何数据。在写(编程/擦除)操作中,存储于存储器块14a中的数据将被重写。在例子中,四字节的字的第四字节将被重写,即,四字节字“D A T A”将被重写为“D A T B”,其中,第四字节从“A”变为“B”(步骤S10)。在普通的耗损均衡技术中,新的数据只会被重写到空闲存储器块14b,并然后被从存储器阵列14a中擦除。然而,由于负载失衡通常发生在更精细的粒度上,因此物理存储器的同一部分会比同一存储器块内的物理存储器的其它部分更频繁地被编程/擦除。装置10的混洗器16提供更细颗粒的耗损均衡。在本例子中,字“D A T B”的前三个字节不改变,而第四个字节从“A”变为“B”。因此,存储器阵列14中存储第四字节的物理位置可能比阵列14中的其他位置更频繁地被更新。

在实施例中,如上所述,为了使存储器阵列14上的耗损均衡化,要存储于存储器阵列14中的写数据被临时写到写入缓冲器18。混洗器16对存储于写入缓冲器18中的写数据(“D A T B”)进行操作,以搅乱字节的顺序(步骤S12)。在本例子中,字节的顺序被颠倒(即“B T A D”),但是可以应用任何块内混洗方案。

在图3的例子中,混洗器16(第二部件)被配置为确定块内混洗方案,并向存储于存储器阵列内的写数据应用块内混洗方案以提供混洗数据。在实施例中,块内存储器方案存储于被配置为存储所确定的块内混洗方案的数据存储区22中。

在图3的组合的混洗和重新映射技术中,由混洗器16提供的混洗数据被写到空闲的存储器块14b(步骤S14),并且存储器块14a的内容可以被擦除。因此,图3示出了数据如何被写到物理存储器中的新位置并且被混洗使得物理存储器中的所有位置可以被编程/擦除大致相同的次数。

图4示出了使用图1的装置的块内耗损均衡的例子。上部的图显示了混洗器16如何对存储于存储器块14a中(在存储器阵列14中)的数据进行操作,以在数据被写到同一块14a或空闲的存储器块14b时(取决于块内混洗是否与块重新映射组合)对数据进行混洗。在所示例子中,存储器块的部分(例如,前三个部分)在写操作期间不会改变,但是第四部分(存储“D A T A”)发生变化(例如,变为“D A T B”)。重写整个数据块的普通耗损均衡技术不考虑块的某些部分(例如,位或字节)可以在块内更频繁地被更新。在本技术的实施例中,混洗器16混洗更频繁重写的部分(在本例子中,为第四部分),使得重写的数据在块上被混洗。在图4所示的例子中,存储器块14a中的第四部分的数据被混洗并分散在存储器块14a或14b中。如果也不应用块重新映射方案,则写数据可以被混洗并存储于同一存储器块14a中。混洗器16可以通过使用配置函数确定块内混洗方案并应用所确定的块内混洗方案,来混洗数据。

图4的下部的图显示了混洗器16可以如何通过使用预定义的块内混洗方案对存储器块进行操作的另一个例子。这里,块内映射方案表26存储四个不同的块内映射方案,这些块内映射方案可以被应用于写数据块以在数据被写到存储器阵列之前对其进行混洗。在本例子中,编号1~4标识存储器块中的字节位置。(然而,可以理解的是,本耗损均衡技术适用于任何尺寸/粒度的数据,并且不限于位、半字节、字节、字、双字等。因此,编号1~4可以标识位位置、字节位置、字位置等)。在块内映射方案B下,块中的数据的顺序颠倒,使得来自字节4的数据被保存于物理存储器块中的字节位置1中,来自字节3的数据被保存于物理存储器块中的字节位置2中,等等。在块内映射方案C下,来自字节4的数据被保存于物理存储器块中的字节位置2中,来自字节3的数据被保存于物理存储器块中的字节位置1中,等等。在本例子中,在重复循环之前,每当有特定逻辑地址的数据被重写在物理存储器空间中时,混洗器16顺序地应用预定义的块内混洗方案,从方案B开始,然后方案C,然后方案D,并以方案A结束。这样,当重写发生时,数据块中的所有字节可以在块内混洗,使得物理上的所有位置可以被频繁地写入。这个块内混洗的例子表明,如果物理存储器中的某个位置是“热字节”,则可以通过避免简单地将新数据写到“热字节”,来增加物理存储器的整体寿命。将理解,表中所示的方案仅仅是为了说明目的,并且,预定义的块内映射方案的数量可以比这里所示的更多或更少,并且可以以与这里所示的那些不同的方式对数据进行重新排序,并且可以应用于任意粒度的数据(例如,位、半字节、字节、字、双字等)。

在实施例中,装置10可以保持对已向与每个逻辑地址相关联的数据应用了哪个预定义的块内映射方案进行记录,使得混洗器16知道在下一次数据在写操作中被混洗(并且可选地在物理存储器空间中被重新映射)时它需要应用哪个预定义的块内映射方案,以及/或者使得混洗器16知道当它需要在读操作中解混洗数据时哪个方案已被应用。例如,混洗器16可以被配置为在地址映射表24中或在映射方案表26或别处存储指示数据,从而指示已向与逻辑地址相关联的数据应用了哪个预定义的块内映射方案。可替代地,配置函数可用于基于写数据的逻辑和/或物理地址来确定和重新确定要使用预定义的块内映射方案中的哪个。在本实施例中,由于配置函数通过使用已知道/存储的地址数据确定和应用块内映射方案,因此不需要存储指示数据。

为了读取已被混洗的数据,所存储的混洗数据可能需要被解混洗(排序)。因此,混洗器16和/或耗损均衡器12可以知道或者可以能够确定哪个块内混洗方案被应用于数据。在实施例中,指示已向数据应用了哪个块内混洗方案的指示或指示数据可以被存储,使得它可以容易地由混洗器16/耗损均衡器12识别。指示数据可以存储于例如地址映射表24中(这里,每个表项可以为此目的保留几个位),或者存储于专用的块内映射方案表26中。然而,这可能会导致花费增加。因此,在优选的实施例中,混洗器16可以被配置为使用配置函数来确定块内混洗方案,这里,配置函数依赖于写数据的逻辑地址和/或物理地址(可以是新的物理地址或原始的物理地址)。在这种情况下,地址映射表24会提供重新确定应用于存储器阵列14中的特定数据块的块内混洗方案所需的数据。与配置函数仅依赖于逻辑或物理地址之一相比,使用逻辑地址和物理地址这两者可以提供的熵增大。

图5显示了在图1的耗损均衡装置的物理存储器阵列14中重写存储器块的步骤的示意图。在实施例中,在物理存储器阵列中写/重写块同时还执行耗损均衡的一般步骤可以包括:确定物理存储器的第一块的第一物理存储器地址,物理存储器的第一块存储来自(先前)写操作器的数据;混洗要存储于存储器阵列内的写数据以提供混洗数据;以及将混洗数据写到物理存储器的第一块。

耗损均衡器12可以接收指示物理存储器阵列14的存储器块要被重写的信号/数据(步骤S20)。该信号包括块的逻辑地址(LA)。耗损均衡器12确定对应于所接收的逻辑地址(LA)的物理地址(PA)(步骤S22)。如前面所解释的,耗损均衡器12可以查找存储于例如地址映射表24中的从逻辑地址到物理地址的映射。

在实施例中,一旦已经获得了物理地址,耗损均衡器12就将逻辑地址和物理地址发送到混洗器16(步骤S24)。混洗器16使用配置函数来确定要应用于存储器块的块内映射方案(步骤S26)。如前面所解释的,耗损均衡器16可以使用配置函数,通过从所存储的多个预定义的块内映射方案选择方案来确定块内映射方案。在实施例中,配置函数可以使用逻辑地址(或逻辑和物理存储器地址)作为输入,并确定块内映射方案。附加或替代地,混洗器16可以通过将空闲存储器块的物理存储器地址(写数据要被写到这里)和块的逻辑地址输入到配置函数中,来确定块内映射方案。因此,在实施例中,步骤S34和S36可以在图5中的步骤S24、S26和S32之前执行,使得当确定块内映射方案时混洗器16具有新的物理存储器地址(空闲存储器块的)。

在实施例中,对数据进行混洗的步骤包括使用配置函数来确定块内映射方案以及将所确定的块内映射方案应用于要存储于存储器阵列内的写数据以提供混洗数据。使用配置函数的步骤可以包括使用配置函数从多个预定义的块内映射方案确定块内映射方案。确定块内混洗方案可以包括使用混洗器16将写数据的逻辑地址输入到配置函数中以确定块内映射方案。可替代地,确定块内混洗方案可以包括将写数据的逻辑地址和物理存储器地址输入到配置函数中以确定块内映射方案(例如,取决于块重新映射是否与块内混洗组合,为第一或第二存储器块物理地址)。在实施例中,配置函数可以是散列函数。

可选地,一旦混洗器16已经确定了块内映射方案,它就可以将映射方案发送到耗损均衡器12(步骤S32)。例如,如果耗损均衡器被配置为在数据存储区中存储已经使用哪个映射方案的指示(例如,在地址映射表24或块内映射方案表26中),以供稍后使用,则可能发生这种情况。可选地,混洗器16可以被配置为自身存储已经使用了哪个映射方案的指示,使得不需要向耗损均衡器12传送。

在实施例中,写/重写过程还包括从存储多个预定义的块内映射方案的表中确定块内映射方案。

在实施例中,写/重写过程包括:从存储多个预定义的块内映射方案的表中确定块内映射方案;以及在表中存储指示所确定的预定义的块内映射方案的数据。

如下面将参考图6更详细地描述的那样,存储已经向存储于存储器块中的数据应用了哪个块内映射方案的指示可以使得混洗数据能够在读操作期间被读取(排序)。在实施例中,从物理存储器读取混洗数据包括:重新确定被应用于提供混洗数据的块内映射方案;以及使用重新确定的块内映射方案来反转混洗步骤以获得最初存储于第一块中的数据。然而,如前面所解释的,如果配置函数使用写数据的LA(或LA和PA)来确定块内映射方案,则不需要存储已经应用了哪个块内映射方案的指示。

在实施例中,混洗数据的步骤可以包括混洗要存储于存储器阵列中的数据位或数据字节。

可选地,耗损均衡器12进一步被配置为确定存储器阵列14中的哪些块是空闲的(即,未被用于存储数据)。如果存在多个空闲存储器块,则耗损均衡器12可以被配置为选择空闲存储器块。然后,耗损均衡器12确定/选择用于存储重写数据的空闲存储器块(步骤S34)。耗损均衡器12配置新的逻辑地址到物理地址映射,使得在下一次它接收逻辑地址时,逻辑地址将被映射到新的存储器块(步骤S36)。在实施例中,耗损均衡器12更新地址映射表24,以存储新的LA到PA映射。如上所述,确定新的LA到PA映射的步骤可以在混洗器确定块内映射方案之前被执行,特别是在配置函数使用写数据的地址来确定块内映射方案的那些实施例中。

混洗器16被配置为通过使用所确定的块内映射方案来混洗正在写/重写的数据(步骤S38)。如前所述,混洗器16可以对已暂时存储/写到写入缓冲器18的数据进行操作。因此,在实施例中,写/重写过程可以进一步包括:将要存储于物理存储器阵列中的写数据写到写入缓冲器;对写入缓冲器中的数据进行混洗以提供混洗数据;以及将来自写入缓冲器的混洗数据写到物理存储器的块(取决于除了块内混洗以外是否使用可选的块重新映射技术,第一块或空闲的第二块)。在实施例中,混洗数据被从混洗器16发送到耗损均衡器12(步骤S40),该耗损均衡器12被配置为将经混洗的块数据发送和写到存储器阵列14中的新物理地址(步骤S42)。在其他实施例中,混洗器16可以被配置为将混洗数据发送到装置10的另一部件,或者可以被配置为将混洗的块数据写到新的物理存储器地址本身。在实施例中,该过程还可以包括在混洗数据已被写到物理存储器的第二块之后清除/擦除物理存储器的第一块。

图6显示了从图1的耗损均衡装置的存储器阵列读取块的步骤的示意图。耗损均衡器12可以接收指示物理存储器阵列14的块要被读取的信号/数据(步骤S20)。该信号包括块中的数据的逻辑地址(LA)。耗损均衡器12确定对应于接收逻辑地址(LA)的物理地址(PA)(步骤S22)。如前面所解释的,耗损均衡器12可以查找存储于例如地址映射表24中的从逻辑地址到物理地址的映射。

在实施例中,一旦已经获得了物理地址,耗损均衡器12就可以将逻辑地址(或逻辑地址和物理地址)发送到混洗器16(步骤S24)。混洗器16使用配置函数来重新确定在存储数据时向存储器块中的数据应用的块内映射方案(步骤S26′)。例如,混洗器16可以使用配置函数,通过将存储器块的逻辑存储器地址(即,正在读取的)输入到配置函数中或者通过将存储器块的物理存储器地址(即,正在读取的)和块的逻辑地址输入到配置函数中,重新确定块内映射方案。如果配置函数不使用数据的地址来确定块内混洗方案,则混洗器16可以被配置为通过例如咨询记录方案(例如,通过在地址映射表24或块内映射方案表26中存储指示数据)的存储数据查找预定义的块内映射方案中的哪一个被应用。

然后,混洗器16可以自身直接或者经由装置10的另一部件或多个部件从存储器阵列14获得物理存储器地址处的数据(步骤S28)。混洗器通过应用例如用于混洗数据的函数的逆来对存储器块中的数据进行操作,以产生重新排序的、未混洗的(有序的)数据(步骤S30)。然后,响应于读操作,输出未混洗的(有序的)数据。

回到图1,如上所述,耗损均衡装置10的存储器阵列14包括相关电子开关(CES)元件。在这种情况下,CES元件可以表现出从导电状态(低阻抗和低电容状态)到绝缘性状态(高阻抗和高电容状态)的突然的导体/绝缘体转变,反之亦然,这源自于CEM中的电子相关性而不是固体状态结构相变(例如,在相变存储器(PCM)设备中出现的结晶/无定形变化或者在电阻式RAM设备中出现的丝状物形成)。

在实施例中,与熔化/固化或丝状物形成相反,CEM中的突然的导体/绝缘体转变可以响应量子力学现象。CES元件的导电和绝缘状态之间的这种量子力学转变可以在几个方面中的任何一个方面被理解。

在实施例中,可以通过Mott转变理解绝缘和导电状态之间的量子力学转变。例如,如果满足第一Mott转变条件,则CEM可以从绝缘状态切换到导电状态,并且,如果满足第二Mott转变条件,则CEM可以从导电状态切换到绝缘状态。下面将更详细地描述不同的Mott转变条件。

在本技术的实施例的特定实现中,存储器电路可以包括:包括至少一个CES元件的存储器阵列;用于根据提供给存储器阵列(或者给存储器阵列内的存储器块)的信号将CES元件置于第一存储器状态或第二存储器状态的写电路,其中,CES元件的阻抗在第二存储器状态中比在第一存储器状态中高;以及用于感测存储器阵列(或块)的存储器状态并提供对应于感测到的存储器阵列(或块)的存储器状态的电信号的读出电路。

在一个方面中,第二阻抗状态下的CES元件的阻抗可以比第一阻抗状态下的CES元件的阻抗大100倍以上。

CES元件可以用作CES随机存取存储器(CeRAM)。CES元件包括可以至少部分地基于利用Mott转变的存储器状态之间的CEM转变(例如从绝缘状态到导电状态)的至少一部分在多个预定可检测存储器状态之间或在当中转变的材料。在这种情况下,“存储器状态”意味着指示值、符号、参数或条件(仅举几个例子)的CES元件的可检测状态。

在一个特定的实现中,CES元件的存储器状态可以至少部分地基于在“读操作”中在CES元件的一个或多个端子上检测到的信号的值被检测。

在另一特定实现中,通过控制施加到CES元件的偏置参数(例如电压)和/或通过控制经由CES元件驱动的电流参数(例如,电流密度J(A/μm2)),CES元件可以被置于特定的存储器状态以代表或者存储特定的值、符号、参数或条件等。

在实施例中,在半导体上的(C/S/C)布置中(例如,在堆叠布置中),CEM包括与导电区域(C)的电接触地布置(例如,夹在导电区域(C)之间)的开关区域(S)。导电区域(C)可以包括任何合适的材料,并且可以包括过渡金属氧化物,并且可以还包括具有类金属特性的任何材料,包括例如多晶硅或掺杂半导体。在实施例中,导电区域(C)可另外或可替代地包括选自包含铝、镉、铬、钴、铜、金、铁、锰、汞、钼、镍、钯、铼、钌、银、锡、钛、钒和锌(可与诸如氧或其它类型的配体的阳离子链接)的组或其组合的材料。

根据实施例,开关区域(S)可以包括任何过渡金属氧化物(TMO)材料,诸如钙钛矿、Mott绝缘器、电荷交换绝缘体和Anderson无序绝缘体。

在特定的实现中,例如,开关区域(S)材料可以包括诸如氧化镍、氧化钴、氧化铁、氧化钇和钙钛矿(诸如Cr掺杂钛酸锶、钛酸镧和包括钯钙、锰酸盐和镧锰锰矿的锰酸盐族)之类的开关材料。特别地,含有不完全d和f轨道壳的元素的氧化物可以表现出用作开关区域(S)材料的足够的电阻开关特性。在实施例中,可以在没有电铸的情况下制备CES元件。

其它的实现可以采用其它过渡金属化合物作为开关区域(S)材料而不偏离要求保护的主题。例如,{M(chxn)2Br}Br2,这里,M可以包括Pt、Pd或Ni,并且chxn包括1R、2R-环己二胺,并且,可以使用其他这种金属络合物而不偏离要求保护的主题。

在一个方面,CEM可以包括作为过渡金属氧化物(TMO)可变电阻材料的材料,尽管应该理解这些材料仅仅是示例性的,并且不打算限制所要求保护的主题。

特定的实现也可以采用其他可变电阻材料。虽然以上氧化镍NiO作为一种特定的TMO被公开,但是NiO材料也可以掺杂外来配体,这可以稳定可变电阻特性。特别地,这里公开的NiO可变电阻材料可包括可由NiO(Cx)表示的含碳配体。这里,本领域技术人员可以简单地通过平衡价键确定任何特定的含碳配体以及含碳配体与NiO的任何特定组合的x值。在另一特定例子中,掺杂有外来配体的NiO可以被表示为NiO(Lx),这里,Lx是配体元素或化合物,x表示对于一个单位NiO的配体的单位数。本领域技术人员可以简单地通过平衡价键,确定任何特定配体以及配体与NiO或任何其它过渡金属的任意特定组合的x值。

另外,端子可以包括与导电区域(C)相同的材料,使得导电区域(C)可以起到端子的作用。在端子材料和导电区域(C)不同的实施例中,优选的是不同的材料相匹配以减少边界交互作用或表面缺陷的影响,否则会影响CES元件的性能。例如,材料应该相匹配以确保CEM和端子的电气性能(例如,电导率)和/或化学性能(例如,热膨胀系数相匹配)不会对CES元件的操作产生负面影响。

通过在端子之间施加特定电压(Vapplied)并通过CEM驱动特定电流密度(Japplied),CES元件可以从导电(低阻抗和低电容)存储器状态(以下称为“LIS”)转变为绝缘(高阻抗和高电容)存储器关状态(以下称为“HIS”),或者可以根据不同的施加电压(Vapplied)和电流密度(Japplied)从HIS转变到LIS。

在这种情况下,应该理解,LIS和HIS是相对的术语,而不是特定于电导、阻抗或电容的任何特定量或值。例如,,CES元件处于第一存储器状态可以比CES元件处于第二存储器状态时更导电(或更少绝缘)。

另外,CES元件“诞生时导通”,从而当制造(例如沉积)时,CES元素处于LIS。

本技术的实施例还提供了携带代码的非暂时性数据载体,代码当在处理器上实现时使处理器执行本文描述的方法。

本技术还提供处理器控制代码以例如在通用计算机系统上或在数字信号处理器(DSP)上实现上述方法。本技术还提供载体携带的处理器控制代码,以在运行时实现上述方法中的任何一种,特别是在非暂时性数据载体上或者在诸如磁盘、微处理器、CD或DVD-ROM、编码存储器(诸如只读存储器(固件))之类的非暂时性计算机可读介质上或者在诸如光学或电气信号载体之类的数据载体上。代码可以在诸如磁盘、微处理器、CD或DVD-ROM、编程存储器(诸如非易失性存储器(例如闪存)或只读存储器(固件))之类的(非暂时性)载体上提供。用于实现本技术的实施例的代码(和/或数据)可以包括用诸如C之类的常规编程语言(解释或编译)的源、对象或可执行代码、或汇编代码、用于设置或控制ASIC(专用集成电路)或FPGA(场可编程门阵列)的代码或诸如VelilogTM或VHDL(甚高速集成电路硬件描述语言)之类的硬件描述语言的代码。正如技术人员将理解的那样,这种代码和/或数据可以分布在彼此通信的多个耦接的部件之间。本技术可以包括包含微处理器的控制器、工作存储器和与系统的一个或多个部件耦接的程序存储器。

用于实施上述技术的操作的计算机程序代码可以用一种或多种编程语言的任何组合编写,包括面向对象的编程语言和传统的程序化编程语言。代码组件可以体现为过程、方法等,并且可以包括子组件,这些子组件可以采取在任何抽象层次上的指令或指令序列的形式,从本地指令集的直接机器指令到高级编译或解释的语言结构。

本领域技术人员也清楚,根据本技术的优选实施例的逻辑方法的全部或部分可适当地体现于逻辑装置中,所述逻辑装置包括执行上述方法的步骤的逻辑元件,并且,这种逻辑元件可包括例如可编程逻辑阵列或专用集成电路中的诸如逻辑门的部件。这种逻辑布置可以进一步体现在用于通过使用例如可以被存储并且通过使用固定或可传送载体介质被传送的虚拟硬件描述符语言暂时或永久地在这种阵列或电路中建立逻辑结构的使能元件中。

在实施例中,本技术可以以上面具有功能性数据的数据载体的形式实现,所述功能性数据包括功能性计算机数据结构,以在被加载到计算机系统或网络中并由此操作时使得所述计算机系统能够执行上述方法的所有步骤。

本领域的技术人员将理解,虽然前面描述了什么被视为最佳模式以及在适当情况下执行本技术的其它模式,但本技术不应局限于在优选实施例的本描述中公开的特定配置和方法。本领域的技术人员将认识到,本技术具有广泛的应用范围,并且实施例可以进行广泛的修改,而不背离所附权利要求所限定的任何发明构思。

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