存储装置中的磨损均衡的制作方法

文档序号:12305229阅读:260来源:国知局
存储装置中的磨损均衡的制作方法

本公开涉及数据存储管理。



背景技术:

固态驱动器(ssd)可以用于需要相对低的延时和高容量存储的计算机和应用中。另外,ssd可以利用多个并行数据信道来从存储器装置读取和写入存储器装置,这可以导致高的顺序读取和写入速度。

ssd可以利用非易失性存储器(nvm)装置,例如闪存、pcm、reram、或mram存储器装置。在一些示例中,相比其他存储器装置,ssd可能更频繁地向特定的存储器装置写入数据。在多次写入时,将数据多次写入nvm设备可能导致nvm存储器装置的物理变化,这可能导致nvm存储器装置失去存储数据的能力。一些ssd利用磨损均衡(wearlevel)技术来防止特定的nvm存储器装置相比其他nvm存储器装置被更加频繁地写入,以试图延长nvm存储器装置的寿命。



技术实现要素:

在一个示例中,一种系统包含多个储器装置和处理器。该多个存储器装置包含多个物理位置,在该物理位置存储数据。该处理器可以配置为基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值,确定是否交换存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置。该第一瞬态写入计数器的值可以等于自从涉及该第一逻辑块地址集合的先前的数据交换之后数据已经被写入该第一逻辑块地址集合的次数,且该第二瞬态写入计数器的值可以等于自从涉及该第二逻辑块地址集合的先前的数据交换之后数据已经被写入该第二逻辑块地址集合的次数。该处理器还可以配置为,响应于确定交换存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置,交换存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置。

在另一示例中,一种方法可以包含,通过处理器,基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值,确定是否交换存储在该第一逻辑块地址集合中的数据的物理位置和存储在该第二逻辑块地址集合中的数据的物理位置。第一瞬态写入计数器的值可以等于自从涉及该第一逻辑块地址集合的先前的数据交换之后数据已经被写入该第一逻辑块地址集合的次数,且该第二瞬态写入计数器的值可以等于自从涉及该第二逻辑块地址集合的先前的数据交换之后数据已经被写入该第二逻辑块地址集合的次数。该方法还可以包含,响应于确定交换存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置,通过该处理器,使得存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置与存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置被交换。

在另一示例中,一种计算机可读存储介质存储指令,当执行该指令时,使得处理器基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值,确定是否交换存储在存储装置的第一逻辑块地址集合中的数据的物理位置和存储在存储装置的第二逻辑块地址集合中的数据的物理位置。该第一瞬态写入计数器的值可以等于自从涉及该第一逻辑块地址集合的先前的数据交换之后数据已经被写入该第一逻辑块地址集合的次数,且该第二瞬态写入计数器的值可以等于自从涉及该第二逻辑块地址集合的先前的数据交换之后数据已经被写入该第二逻辑块地址集合的次数。该指令还可以使得该处理器,响应于确定交换存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置,使得存储在该第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在该第二逻辑块地址集合中的逻辑块地址的数据的物理位置被交换。

在附图和以下描述中阐述了一个或多个示例的细节。从说明书和附图、以及从权利要求书,其他特征、目的和优点将显而易见。

附图说明

图1是示出了包含连接到主机装置的存储装置的示例系统的概念性和示意性框图。

图2是示出了根据本公开的一个或多个技术的示例存储器装置的概念性框图。

图3是示出了示例控制器的概念性和示意性框图。

图4a-4b是示出了根据本公开的一个或多个技术的写入计数器表的示例细节的概念性和示意性框图。

图5是示出了固态驱动器的示例磨损均衡操作的流程图。

图6是示出了固态驱动器的示例磨损均衡操作的流程图。

具体实施方式

本公开涉及为存储装置(例如固态驱动器(ssd))执行磨损均衡的技术,其可以帮助增加存储装置的寿命。存储装置可以包含多个存储器装置,其每一个包含多个物理块。向存储装置存储数据的主机装置可以利用逻辑块地址,存储装置例如使用间接或逻辑到物理表,将逻辑块地址转换为物理块地址。在本文所述的磨损均衡技术中,逻辑块地址的组可以在逻辑块地址集合中相关联。处理器(例如存储装置的控制器中的处理器)可以维持与每个逻辑块地址集合相关联的写入计数器,且可以基于相应的逻辑块地址集合的写入计数器的值,在与不同的逻辑块地址集合相关联的物理块地址之间交换数据。基于相应的逻辑块地址集合的写入计数器,处理器可以确定是否将来自相应的逻辑块地址集合的数据交换到与另一逻辑块地址集合中的逻辑块地址相关联的物理块地址,以在逻辑块地址集合上进行均衡写入(levelwrite)。

例如,写入计数器可以是瞬态写入计数器,且可以是自从来自相应的逻辑块地址集合的上一次数据与来自另一逻辑块地址集合的数据被交换之后的、与相应的逻辑块地址集合相关联的写入的计数。高瞬态写入计数器值从而可以指示,自从上一次数据交换之后,相应的逻辑块地址集合已经被频繁地写入。在一些实例中,这可能表明相应的逻辑块地址集合将在不久的将来被频繁地写入,使得将存储在相应的逻辑块地址集合中的逻辑块地址的数据交换到与另一逻辑块地址集合中的逻辑块地址相关联的物理块地址将有效地在存储器装置的物理块地址上展开(spread)写入。因此,处理器可以将来自相应的逻辑块地址集合的数据的物理位置(物理块地址)与来自具有较低的瞬态写入计数器值的另一逻辑块地址集合的数据的物理位置(物理块地址)交换。在一些示例中,除了基于对瞬态写入计数器值的确定以外,处理器可以附加地基于永久写入计数值来确定是否在与不同的逻辑块地址集合相关联的物理位置之间交换数据,永久写入计数值追踪在涉及逻辑块地址集合的上一次的数据交换之前对逻辑块地址集合的写入的数量。

与为每个相应的逻辑块维持写入计数器相比,为每个逻辑块地址集合而不是单独的逻辑块维持写入计数器,可以消耗较少的空间开销。类似地,为逻辑块集合维持写入计数器而不是在物理块之间连续地交换数据,可以减少对每个物理块的写入的数量,同时仍提供足够的磨损均衡。通过利用写入计数器的较少的空间开销,并且较不频繁地在存储装置的物理块之间移动数据,本公开的技术可以改善存储装置的寿命和性能。

在一些示例中,处理器可以附加地且可选地重新排列逻辑块集合内的数据的物理位置(例如,物理块),以减少对与逻辑块地址集合相关联的特定的物理位置比与逻辑块地址集合相关联的其他物理位置更加频繁地写入数据的可能性。通过移动特定的逻辑块地址集合内的数据的物理位置,本公开的技术可以减少与逻辑块地址集合相关联的某些物理位置过早磨损的可能性。

图1是示出了根据本公开的一个或多个技术的示例存储环境2的概念性和示意性框图,其中存储装置6可以用作主机装置4的存储装置。例如,主机装置4可以利用包含在存储装置6中的非易失性存储器装置来存储和取回数据。在一些示例中,存储环境2可以包含多个存储装置(例如存储装置6),其可以作为存储阵列操作。例如,存储环境2可以包含配置为廉价/独立磁盘的冗余阵列(raid)的多个存储装置6,其共同地用作主机装置4的大容量存储装置。

存储环境2可以包含主机装置4,其可以向一个或多个存储装置(例如存储装置6)存储数据和/或从其取回数据。如图1所示,主机装置4可以经由接口14与存储装置6通信。主机装置4可以包含广泛范围的装置中的任一种,包含计算机服务器、网络附加存储(nas)单元、台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如所谓的“智能”电话的手机、所谓的“智能”垫、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流装置、等等。

如图1所示,存储装置6可以包含控制器8、非易失性存储器阵列10(nvma10)、电力供给11、易失性存储器12和接口14。在一些示例中,为了清楚起见,存储装置6可以包含图1未示出的附加的部件。例如,存储装置6可以包含印刷板(pb),存储装置6的部件机械附接到该印刷板,且该印刷板包含电互连存储装置6的部件的导电迹线,等等。在一些示例中,存储装置6的物理尺寸和连接器配置可以符合一种或多种标准形状因数。一些示例标准形状因数包含但不限于,3.5”硬盘驱动器(hdd)、2.5”hdd、1.8”hdd、外围部件互连(pci)、pci扩展(pci-x)、pciexpress(pcie)(例如,pciex1,x4,x8,x16,pcieminicard,minipci,等等)、m.2、等等。在一些示例中,存储装置6可以直接耦接(例如,直接焊接)至主机装置4的主板。

存储装置6可以包含用于与主机装置4相接的接口14。接口14可以包含用于与主机装置4交换数据的数据总线和用于与主机装置4交换命令的控制总线中的一者或两者。接口14可以根据任何合适的协议操作。例如,接口14可以根据以下协议中的一个或多个来操作:高级技术附件(ata)(例如,串行ata(sata)和并行ata(pata))、光纤信道、小型计算机系统接口(scsi)、串行附接scsi(sas)、外围部件互连(pci)、pci-express、非易失性存储器express(nvme)、等等。接口14(例如,数据总线,控制总线,或两者)的电连接电连接到控制器8,提供主机装置4和控制器8之间的电连接,允许在主机装置4和控制器8之间交换数据。在一些示例中,接口14的电连接还可以允许存储装置6从主机装置4接收电力。

存储装置6包含nvma10,其包含多个存储器装置16aa–16nn(统称为“存储器装置16”)。每个存储器装置16可以配置为存储和/或取回数据。例如,存储器装置16的存储器装置可以从控制器8接收数据和指示存储器装置存储数据的消息。类似地,存储器装置16的存储器装置可以从控制器8接收指示存储器装置取回数据的消息。在一些示例中,每个存储器装置16可以被称为裸芯。在一些示例中,单个物理芯片可以包含多个裸芯(即,多个存储器装置16)。在一些示例中,每个存储器装置16可以配置为存储相对大量的数据(例如,128mb、256mb、512mb、1gb、2gb、4gb、8gb、16gb、32gb、64gb、128gb、256gb、512gb、1tb、等等)。

在一些示例中,存储器装置16可以包含任何类型的非易失性存储器装置。存储器装置16的一些示例包含但不限于闪存存储器装置(例如,nand或nor)、相变存储器(pcm)装置、电阻式随机存取存储器(reram)装置、磁致电阻式随机存取存储器(mram)装置、铁电式随机存取存储器(f-ram)、全息存储器装置、以及任何其他类型的非易失性存储器装置。与闪存存储器装置不同,pcm装置、reram、mram和f-ram装置可能不需要过时的块回收(例如,垃圾收集),但是仍然可以利用磨损均衡来减少单个存储器单元的有限写入持久性的影响。

在一些示例中,存储器装置16可以包含闪存存储器装置。闪存存储器装置可以包含基于nand或nor的闪存存储器装置,且可以基于每个闪存存储器单元的晶体管的浮置栅极中所包含的电荷来存储数据。在nand闪存存储器装置中,闪存存储器装置可以划分多个块(block),该块可以划分为多个页面(page)。特定的存储器装置内的多个块中的每个块可以包含多个nand单元。可以使用字线电连接nand单元的行,以限定多个页面中的页面。多个页面中的每个页面的相应的单元可以电连接到相应的位线。在一些示例中,控制器8可以在页面级向nand闪存存储器装置写入数据和从其读取数据,且在块级从nand闪存存储器装置擦除数据。下面参照图2讨论存储器装置16的附加细节。

在一些示例中,将控制器8单独地连接到存储器装置16的每个存储器装置可能是不实际的。因此,存储器装置16和控制器8之间的连接可以被多路复用。作为示例,存储器装置16可以被分组为信道18a–18n(统称为“信道18”)。例如,如图1所示,存储器装置16aa–16an可以被分组为第一信道18a,且存储器装置16na–16nn可以被分组为第n信道18n。分组为每个信道18的存储器装置16可以共享到控制器8的一个或多个连接。例如,分组为第一信道18a的存储器装置16可以附接到公共i/o总线和公共控制总线。存储装置6可以包含用于信道18的每个相应的信道的公共i/o总线和控制总线。在一些示例中,信道18中的每个信道可以包含一组芯片使能(ce)线,其可以用于在每个信道上多路复用存储器装置。例如,每个ce线可以连接到存储器装置18的相应的存储器装置。按照这种方式,可以减少控制器8和存储器装置18之间的单独连接的数量。另外,由于每个信道具有到控制器8的连接的独立的组,连接的减少不会显著地影响数据吞吐率,这是由于控制器8可以同时向每个信道发出不同的命令。

存储装置6可以包含电力供给11,其可以为存储装置6的一个或多个部件提供电力。当在标准模式下操作时,电力供给11可以使用由外部装置(例如主机装置4)提供的电力为一个或多个部件提供电力。例如,电力供给11可以使用经由接口14从主机装置4接收的电力为一个或多个部件提供电力。在一些示例中,电力供给11可以包含一个或多个电力存储部件,其配置为,当在关闭模式下操作时,向一个或多个部件提供电力,例如在停止从外部装置接收到电力的情况下。按照这种方式,电力供给11可以用作机载备用电源。一个或多个电力存储部件的一些示例包含但不限于,电容器、超级电容器、电池、等等。

存储装置6还可以包含易失性存储器12,其可以由控制器8使用以存储信息。在一些示例中,控制器8可以使用易失性存储器12作为缓存(cache)。例如,控制器8可以在易失性存储器12中存储缓存的信息,直到缓存的信息被写入存储器装置16。易失性存储器12可以消耗从电力供给11接收的电力。易失性存储器12的示例包含但不限于,随机存取存储器(ram)、动态随机存取存储器(dram)、静态ram(sram)、以及同步动态ram(sdram,例如,ddr1、ddr2、ddr3、ddr3l、lpddr3、ddr4、等等)。

存储装置6包含控制器8,其可以管理存储装置6的一个或多个操作。例如,控制器8可以管理从存储器装置16读取数据和/或向存储器装置16写入数据。在一些实例中,控制器8可以从主机装置4接收命令,该命令包含数据并指定写入数据的逻辑块地址(lba)。控制器8可以将数据写入存储器装置16的对应于由主机装置4指定的lba的物理块地址(pba)。然而,将数据多次写入特定的存储器装置16的特定的pba可能导致特定的存储器装置16比其他存储器装置16更快地磨损。

在一些示例中,主机4包含磨损管理模块(wmm)31。在其他示例中,控制器8包含磨损管理模块(wmm)30。在其他示例中,主机4包含wmm31且控制器8包含wmm30。wmm30、31可以配置为管理从主机装置4接收的数据的写入位置,以便通过在存储器装置16上展开写入来改善存储装置6的寿命。例如,wmm30、31可以通过管理对块的写入的数量,来尝试在存储器装置16之间均匀地分布写入。在一些示例中,wmm30、31可以通过管理对逻辑块地址集合(其可以包含两个或更多个逻辑块地址的组)的写入的数量,来尝试在存储器装置之间均匀地分布写入。例如,如果第一逻辑块地址集合已被写入多次,并且第二逻辑块地址集合已被写入较少次,则wmm30、31可以交换存储与第一逻辑块地址集合相关联的数据的物理位置和存储与第二逻辑块地址集合相关联的数据的物理位置。

在一些示例中,wmm30、31可以维持与每个逻辑块地址集合相关联的相应的瞬态写入计数器、与每个逻辑块地址集合相关联的相应的永久写入计数器、以及与nvma10相关联的装置写入计数器。每个相应的瞬态写入计数器可以存储在一定时间内(例如,自从由控制器8执行的涉及相应的逻辑块地址集合的上一次磨损均衡操作之后)数据已经被写入相应的逻辑块地址集合的次数的计数。每个相应的永久写入计数器可以存储在存储装置6的寿命期间(或者在涉及相应的逻辑块地址集合的上一次磨损均衡操作之前的存储装置6的寿命期间)数据已经被写入相应的逻辑块地址集合的次数的计数。装置写入计数器可以存储数据已经被写入nvma10(在所有的块集合上)的次数的计数。在一些示例中,装置写入计数器可以对在nvma10的寿命期间数据已经被写入nvma10的次数进行计数。

在一些示例中,控制器8包含wmm30,且控制器8可以从主机装置4接收包含数据和lba的写入命令。控制器8可以确定对应于lba的pba(例如,基于间接或逻辑到物理表),且可以在对应于lba的pba将接收的数据写入存储器装置16。替代地,控制器8可以将数据写入可用的pba(其当前不存储有效数据),并更新间接表以反映lba到pba的对应关系。在一些示例中,wmm30可以使装置写入计数器的值递增(例如,增加1),以指示控制器6已经执行另一写入操作,并使瞬态写入计数器的值递增,该瞬态写入计数器与包含由主机装置4指定的lba的逻辑块地址集合相关联。响应于使装置写入计数器的值递增,wmm30可以确定是否执行与每个相应的逻辑块地址集合相关联的相应的瞬态写入计数器的比较。例如,wmm30可以通过将装置写入计数器与阈值装置写入计数进行比较,来确定是否执行相应的瞬态写入计数器的比较。如果装置写入计数器满足阈值装置写入计数(例如,大于或等于阈值写入计数器,例如50万次写入、100万次写入、200万次写入、等等),则wmm30可以确定是否交换存储在第一逻辑块地址集合中的lba的数据的物理位置(例如,pba)和存储在第二逻辑块地址集合中的lba的数据的物理地址(例如,pba)。在一些示例中,wmm30可以基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值来进行该确定。

响应于wmm30确定交换存储在第一逻辑块地址集合的数据的物理位置和存储在第二逻辑块地址集合的数据的物理位置,控制器8可以交换存储在第一逻辑块地址集合和第二逻辑块地址集合的数据的物理位置。wmm30可以将第一瞬态写入计数器和第二瞬态写入计数器的值设定为等于基线值(例如,零)。在一些示例中,wmm30可以在将第一瞬态写入计数器设定为基线值之前,将第一瞬态写入计数器的值添加到与第一逻辑块地址集合相关联的第一永久写入计数器的值。类似地,wmm30可以在将第二瞬态写入计数器设定为基线值之前,将第二瞬态写入计数器的值添加到与第二逻辑块地址集合相关联的第二永久写入计数器的值。通过将每个瞬态写入计数器的值添加到相应的永久写入计数器,wmm30可以追踪对每个相应的逻辑块地址集合的写入的总数。按照这种方式,wmm30可以在每次控制器8写入相应的逻辑地址块集合时,追踪对每个相应的逻辑块地址集合的写入的总数,而不更新每个相应的永久写入计数器。

在一些示例中,主机装置4可以包含wmm31。主机装置4可以向控制器8发送包含数据和lba的写入命令。响应于控制器8在对应于从主机装置4接收的lba的pba向存储器装置16写入数据,wmm31可以使装置写入计数器的值递增,以指示控制器6已经执行另一写入操作,且可以使瞬态写入计数器的值递增,该瞬态写入计数器与包含由主机装置4指定的lba的逻辑块地址集合相关联。响应于使装置写入计数器的值递增,wmm31可以确定是否执行与每个相应的逻辑块地址集合相关联的相应的瞬态写入计数器的比较。例如,wmm31可以通过将装置写入计数器与阈值装置写入计数进行比较,来确定是否执行相应的瞬态写入计数器的比较。如果装置写入计数器满足阈值装置写入计数,则wmm31可以确定是否交换存储在第一逻辑块地址集合中的lba的数据的物理位置和存储在第二逻辑块地址集合中的lba的数据的物理地址。在一些示例中,wmm31可以基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值来进行该确定。

响应于wmm31确定交换存储在第一逻辑块地址集合的数据的物理位置和存储在第二逻辑块地址集合的数据的物理位置,控制器8可以交换第一逻辑块地址集合和第二逻辑块地址集合中的数据的物理位置。wmm31可以将第一瞬态写入计数器和第二瞬态写入计数器的值设定为等于基线值。在一些示例中,wmm31可以在将瞬态写入计数器设定为基线值之前,将第一瞬态写入计数器的值和第二瞬态写入计数器的值添加到与相应的逻辑块地址集合相关联的相应的永久写入计数器的值。通过将瞬态写入计数器的值添加到相应的永久写入计数器,wmm31可以追踪对相应的逻辑块地址集合的写入的总数。

按照这种方式,wmm30、31可以提供改善的磨损均衡技术。通过为每个逻辑块地址集合而不是每个逻辑块地址维持写入计数器,wmm30、31可以减少计数器的数量,同时仍然提供足够的磨损均衡。减少计数器的数量可以减少计数器消耗的空间开销,并且可以改善存储装置6的性能。通过仅当某个逻辑块地址集合已经比另一个逻辑块地址集合被更多次地写入时交换数据的物理位置,而不是连续地交换数据的物理位置,wmm30、31可以根据需要执行磨损均衡,这可以减少不必要的交换量。通过减少写入计数器的数量并根据需要执行磨损均衡,所述技术可以改善存储装置6的寿命和性能。

图2是示出了示例存储器装置16aa的概念性框图,存储器装置16aa包含多个块17a–17n(统称为“块17”),每个块包含多个页面19aa–19nm(统称为“页面19”)。块17中的每个块可以包含多个nand单元。可以使用字线串行地电连接nana单元的行,以限定页面(页面19中的一个页面)。多个页面19中的每个页面的相应的单元可以电连接到相应的位线。控制器8可以在页面级向nand闪存存储器装置写入数据和从其读取数据,并在块级从nand闪存存储器装置擦除数据。两个或更多个块的组可以被称为逻辑块地址集合。例如,逻辑块地址集合20a可以包含块17a–17b,且逻辑块地址集合20b可以包含块17m–17n。

图3是示出了控制器8的示例细节的概念性和示意性框图。在一些示例中,控制器8可以包含地址转换模块22、写入模块24、调度模块26、读取模块28、磨损管理模块(wmm)30、以及多个信道控制器32a–32n(统称为“信道控制器32”)。在其他示例中,控制器8可以包含附加的模块或硬件单元,或者可以包含更少的模块或硬件单元。控制器8可以包含一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或其他数字逻辑电路。

控制器8可以经由接口14与主机装置4相接,并管理数据到存储器装置16的存储和数据从存储器装置16的取回。例如,控制器8的写入模块24可以管理对存储器装置16的写入。例如,写入模块24可以经由接口14从主机装置4接收消息,其指示存储装置6存储与逻辑地址相关联的数据以及可以称为用户数据的数据。写入模块24可以管理用户数据到存储器装置16的写入。

例如,写入模块24可以与地址转换模块22通信,地址转换模块22管理由主机装置4使用的逻辑地址之间的转换,以管理由写入模块24使用的数据和物理块地址的存储位置,从而引导数据到存储器装置的写入。控制器8的地址转换模块22可以利用闪存转换层或间接表,其将由存储器装置16存储的数据的逻辑地址(或逻辑块地址)转换为由存储器装置16存储的数据的物理块地址。例如,主机装置4可以利用在到存储装置6的指令或消息中的由存储器装置16存储的数据的逻辑块地址,而写入模块24利用数据的物理块地址来控制将数据写入存储器装置16(类似地,读取模块28可以利用物理块地址来控制从存储器装置16读取数据)。物理块地址对应于存储器装置16的实际的物理块。在一些示例中,地址转换模块22可以在易失性存储器12中存储闪存转换层或表。

按照这种方式,主机装置4可以允许对于某一组数据使用静态逻辑块地址,而实际存储数据的物理块地址可以改变。地址转换模块22可以维持闪存转换层或间接表以将逻辑块地址映射到物理块地址,从而允许主机装置4使用静态逻辑块地址,而与数据相关联的物理块地址可以改变,例如,由于磨损均衡、垃圾收集、等等。

如上文所讨论的,控制器8的写入模块24可以执行一个或多个操作,以管理对存储器装置16的数据的写入。例如,写入模块24可以通过在存储器装置16选择一个或多个物理块来存储数据并使得包含所选择的物理块的存储器装置16的存储器装置实际上存储所述数据,来管理对存储器装置16的数据的写入。如上文所讨论的,写入模块24可以使得地址转换模块22基于所选择的物理块来更新闪存转换层或间接表。例如,写入模块24可以从主机装置4接收包含数据和逻辑块地址的消息,在存储器装置16的特定的存储器装置内选择物理块来存储该数据,使得存储器装置16的特定的存储器装置实际上存储该数据(例如,经由信道控制器32的对应于特定的存储器装置的信道控制器),并使得地址转换模块22更新闪存转换层或间接表以指示逻辑块地址对应于特定的存储器装置内的所选择的物理块。

读取模块28可以类似地控制从存储器装置16的数据的读取。例如,读取模块28可以从主机装置4接收消息,该消息请求具有相关联的逻辑块地址的数据。地址转换模块22可以使用闪存转换层或表将逻辑块地址转换为物理块地址。然后,读取模块28可以控制一个或多个信道控制器32,以从物理块地址取回数据。类似于写入模块24,读取模块28可以选择一个或多个物理块,并将消息通信到信道控制器32,其可以使得信道控制器32从所选择的物理块读取数据。

控制器8的调度模块26可以执行一个或多个操作,以调度待由存储器装置16执行的活动。例如,调度模块26可以调度从控制器8的其他部件接收的请求,以命令一个或多个存储器装置16在运行时间期间执行一个或多个活动。在一些示例中,调度模块26可以按照请求被接收的顺序(例如,先进先出或fifo)来调度待执行的请求。在一些示例中,调度模块26可以基于一个或多个因素来调度请求,其可以包含但不限于,请求的类型(例如,读取请求、写入请求、擦除请求、垃圾收集请求、等等)、自从接收请求以来经过的时间量、将由请求的执行消耗的电力量、带宽考虑、等等。

控制器8可以从主机装置4接收第一写入命令,其包含数据和与数据相关联的至少一个逻辑块地址。响应于从主机装置4接收第一写入命令,写入模块24可以确定在存储器装置16的哪个物理位置写入数据。例如,写入模块24可以从地址转换模块22请求一个或多个物理块地址,该物理块地址是空的(例如,不存储数据)、部分空的(例如,仅物理块的一些页面存储数据)、或者存储至少一些无效的(或过时的)数据。当接收一个或多个物理块地址时,写入模块24可以限定和/或选择一个或多个物理块,且可以将消息通信到信道控制器32a–32n(统称为“信道控制器32”),这使得信道控制器32将数据写入物理块。

信道控制器32中的每个信道控制器可以连接到信道18中的相应的信道。在一些示例中,控制器8可以包含与存储装置2的信道18的数量相同数量的信道控制器32。信道控制器32可以例如在写入模块24和/或读取模块28的控制下执行对连接到相应的信道的存储器装置16的寻址、编程、擦除和读取的紧密控制。

在一些示例中(例如,在存储器装置16包含闪存存储器装置的情况下),可以使用大电流,以便将具有逻辑值0(充电)的位写入具有先前的逻辑值1(未充电)的位。该电流可能足够大,使得其可能无意地改变相邻的闪存存储器单元的电荷。为了防止无意的改变,可以在向块内的单元写入任何数据之前,将闪存存储器单元的整个块擦除为逻辑值1(未充电)。因此,闪存存储器单元可以在块级被擦除,且在页面级被写入。然而,写入数据和擦除数据可能导致闪存存储器单元磨损。例如,由于用于擦除闪存存储器单元的相对高的电压,当擦除闪存存储器单元时,可能发生对闪存存储器单元的磨损。在多个擦除周期中,相对高的电压可能导致闪存存储器单元的改变。最终,闪存存储器单元可能磨损,使得不再能够向单元写入数据。类似地,其他类型的非易失性存储器(例如,pcm、reram、mram、等等)也可能随着时间磨损,使得存储器装置不再能够向特定的单元写入数据。

在一些示例中,控制器8可以执行磨损均衡操作,以减少特定存储器单元过早磨损的可能性。通过利用磨损均衡技术,控制器8可以在不同的存储器单元之间展开写入,这可以帮助增加存储器装置的寿命。在一些示例中,所述磨损均衡技术可以应用于任何类型的nvm(例如,闪存、pcm、reram、mram、等等)。

wmm30可以管理磨损均衡操作。在一些示例中,wmm30可以管理不同类型的磨损均衡操作。在一个示例中,wmm30可以管理块间集合磨损均衡。例如,wmm30可以通过以下方式执行块间集合磨损均衡:周期性地将来自与第一逻辑块地址集合相关联的第一物理位置的数据移动到不与第一逻辑块地址集合相关联的第二物理位置。例如,wmm30可以交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。在另一示例中,wmm30可以管理块内集合磨损均衡。例如,wmm30可以通过以下方式管理块内集合磨损均衡:周期性地重新排列存储在与第一逻辑块地址集合相关联的物理位置的数据。例如,wmm30可以通过以下方式来重新排列存储在与第一逻辑块地址集合相关联的物理位置的数据:交换存储在与第一逻辑块地址集合相关联的第一逻辑地址(例如,逻辑页面、字组或字节)的数据的物理位置和存储在与第一逻辑块地址集合相关联的第二逻辑地址(例如,逻辑页面、字组或字节)的数据的物理位置。

在一些示例中,wmm30可以基于一个或多个写入计数器来确定是否执行磨损均衡操作。例如,wmm30可以维持装置写入计数器、多个瞬态写入计数器、以及多个永久写入计数器。如上面参照图1所述,装置写入计数器可以存储数据已经被写入nvma10的次数的计数。多个永久写入计数器可以包含与多个逻辑块地址集合中的每个相应的逻辑块地址集合相关联的相应的永久写入计数器。每个相应的永久写入计数器可以存储数据已经被写入相应的逻辑块地址集合的次数的计数(例如,在存储装置6的寿命期间,或在涉及相应的逻辑块地址集合的上一次磨损均衡操作之前的存储装置6的寿命期间)。同样,多个瞬态写入计数器可以包含与多个逻辑块地址集合中的每个相应的逻辑块地址集合相关联的相应的瞬态写入计数器。每个相应的瞬态写入计数器可以存储在一定时间量内(例如,自从涉及相应的逻辑块地址集合的上一次块间集合磨损均衡操作之后)数据已经被写入相应的逻辑块地址集合的次数的计数。

在一些示例中,wmm30可以基于与第一逻辑块地址集合相关联的至少一个写入计数器和与第二逻辑块地址集合相关联的至少一个写入计数器的比较,来确定是否执行块间集合磨损均衡操作。在一些实例中,wmm30可以在每次写入之后比较相应的写入计数器。

在其他实例中,wmm30可以在一定数量的写入之后比较相应的写入计数器。例如,如果装置写入计数器的值满足阈值装置写入计数,则wmm30可以确定已经发生了一定数量的写入,且wmm30应当比较相应的写入计数器。在一些示例中,响应于执行第一写入,wmm30可以更新装置写入计数器的值(例如,递增1),并确定装置写入计数器的值是否满足阈值装置写入计数。

在一些示例中,如果存储在装置写入计数器的值等于或超过多个阈值装置写入计数中的一个,则wmm30可以确定装置写入计数器的值满足阈值。例如,wmm30可以包含多个阈值装置写入计数(例如,50万次写入、100万次写入、150万次写入、等等)。换言之,wmm30可以在每50万次写入之后确定装置写入计数器的值满足阈值。因此,如果装置写入计数器达到多个阈值装置写入计数中的一个,则装置写入计数器的值可以满足阈值,且wmm30可以比较相应的瞬态写入计数器。

在其他示例中,如果存储在装置写入计数器的值大于或等于阈值装置写入计数,则wmm30可以确定装置写入计数器的值满足阈值。例如,wmm30可以包含单个阈值装置写入计数(例如,100万次写入)。响应于确定装置写入计数器的值大于或等于阈值装置写入计数,wmm30可以将装置写入计数重新设定为基线值(例如,零),并比较相应的瞬态写入计数器。

在另外的示例中,如果装置写入计数器的值可以被整数整除,则wmm30可以确定装置写入计数器的值满足阈值。在一些实例中,如果执行装置写入计数器的模运算且阈值装置写入计数等于特定值,则装置写入计数器的值可以被整除。在将装置写入计数器的值除以阈值装置写入计数之后,模运算可以计算余数。在一些示例中,如果余数等于特定值(例如,零),则wmm30可以确定装置写入计数器的值可以被整数整除。在一些示例中,响应于确定装置写入计数器的值满足阈值,wmm30可以比较相应的瞬态写入计数器。

如上文所讨论的,wmm30可以响应于确定装置写入计数器的值满足阈值,基于一个或多个写入计数器来确定是否执行块间集合磨损均衡操作。wmm30可以基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值的比较,来确定是否执行块间集合磨损均衡操作。换言之,wmm30可以基于与相应的逻辑块地址集合相关联的相应的瞬态写入计数器,来确定是否交换存储在第一逻辑块地址集合中的逻辑块地址的数据物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。例如,如果第一瞬态写入计数器的值(表示为c1,trans)大于预定数(表示为p)乘以第二瞬态写入计数器的值(也表示为c2,trans),则wmm30可以确定交换与相应的逻辑块地址集合相关联的数据的物理位置。换言之,如果满足下式,则wmm30可以确定交换与相应的逻辑块集合相关联的数据的物理位置:

等式1:c1,trans>p*g2,trans

例如,如果c1,trans=1200,c2,trans=200,且预定数p等于5,则wmm30可以确定交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,这是因为c1,trans(1200)大于预定数p乘以c2,trans(5*200=1000)。应当理解,这里所示的预定数仅用于说明的目的,并且其他值可以用于预定数。

在一些示例中,wmm30可以基于与第一逻辑块地址集合相关联的第一瞬态写入计数器、与第一逻辑块地址集合相关联的第一永久写入计数器、与第二逻辑块地址集合相关联的第二瞬态写入计数器、以及与第二逻辑块地址集合相关联的第二永久写入计数器,来确定是否执行块间集合磨损均衡操作。换言之,wmm30可以基于与相应的逻辑块地址集合相关联的相应的瞬态写入计数器和与相应的逻辑块地址集合的相应的永久写入计数器,来确定是否交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。例如,wmm30可以将第一瞬态写入计数器的值(c1,trans)和第一永久写入计数器的值(表示为c1,perm)相加以确定第一总写入值(也表示为c1,total),且可以将第二瞬态写入计数器的值(c2,trans)和第二永久写入计数器的值(表示为c2,perm)相加以确定第二总写入值(也表示为c2,total)。wmm30可以响应于确定第一总写入值大于预定数p乘以第二总写入值,来确定交换与相应的逻辑块地址集合相关联的数据的物理位置。换言之,如果满足下式,则wmm30可以确定交换与相应的逻辑块地址集合相关联的数据的物理位置:

等式2:c1,total>p*c2,total

例如,如果c1,trans=1200,c1,perm=2000,c2,trans=200,且c2,perm=400,c1,total=3200且c2,total=600。在该示例中,如果预定数p=5,则wmm30可以确定交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,这是因为c1,total(3200)大于预定数p乘以c2,total(5*600=3000)。

在一些示例中,wmm30可以基于第一总写入值、第二总写入值、第一瞬态写入值和第二瞬态写入值来确定是否执行块间集合磨损均衡操作。换言之,wmm30可以基于与相应的逻辑块地址集合相关联的相应的瞬态写入计数器的值和与相应的逻辑块地址集合相关联的相应的总写入值,来确定是否交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。例如,wmm30可以响应于确定第一总写入值大于预定数p乘以第二总写入值且第一瞬态写入计数器的值大于第二瞬态写入计数器的值,来确定交换与相应的逻辑块地址集合相关联的数据的物理位置。换言之,如果满足下式,则wmm30可以确定交换与相应的逻辑块地址集合相关联的数据的物理位置:

等式3:c1,total>p*c2,total以及

等式4:c1,trans>c2,trans

例如,如果c1,trans=1200,c1,total=3200,c2,trans=200,c2,total=600,且预定数p=5,则c1,total(3200)大于预定数乘以c2,total(5*600=3000)且c1,trans(1200)大于c2,trans(200)。在该示例中,wmm30可以确定交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,这是因为满足了由等式3和等式4给定的条件。

响应于确定交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,wmm30可以交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。例如,wmm30可以将存储在与第一瞬态写入计数器相关联的第一物理位置的数据复制到第三物理位置(例如,不同的存储器装置16或易失性存储器12),将存储在与第二瞬态写入计数器相关联的第二物理位置的数据复制到第一物理位置,并将数据从第三物理位置复制到第二物理位置。wmm30可以使地址转换模块22更新闪存转换层或间接表,以指示第一逻辑块地址集合现在对应于第二物理位置且第二逻辑块地址集合现在对应于第一物理位置。进一步响应于确定执行磨损均衡操作,wmm30可以将第一瞬态写入计数器的值和第二瞬态写入计数器的值重新设定为基线值(例如,零)。

控制器8可以从主机装置4接收包含数据和逻辑块地址的第二写入命令。该逻辑块地址可以对应于第三逻辑块地址集合,其可以与第三瞬态写入计数器和第三永久写入计数器相关联。响应于从主机装置4接收第二写入命令,写入模块24可以以与上面参照第一写入命令所述方式类似的方式来确定在存储器装置16的哪个物理位置写入数据。例如,写入模块24可以使得接收的数据被写入与第三逻辑块集合相关联的物理位置。在一些示例中,响应于写入与第三逻辑块地址集合相关联的数据,wmm30可以更新第三瞬态写入计数器。

wmm30可以基于第三瞬态写入计数器的值,或基于第三瞬态写入计数器的值与第三永久写入计数器的值的和(该和被称为第三总写入值),来确定是否执行块内集合磨损均衡操作。换言之,wmm30可以基于第三瞬态写入计数器的值是否满足阈值块集合计数或者第三总写入值是否满足阈值块集合计数,来确定是否重新排列存储在与第三逻辑块地址集合相关联的物理位置的数据。

在一些示例中,如果第三瞬态写入计数器的值(或第三总写入值)等于多个阈值块集合计数中的一个,则wmm30可以确定第三瞬态写入计数器(或第三总写入值)满足阈值块集合计数。例如,wmm30可以包含多个阈值块集合计数(例如,一千次写入、两千次写入、等等)。因此,如果第三瞬态写入计数器的值(或第三总写入值)达到多个阈值块集合计数中的一个,则第三瞬态写入计数器的值(或第三总写入值)可以满足阈值块集合计数,且wmm30可以确定重新排列存储在与第一逻辑块地址集合相关联的页面的数据。

在其他示例中,如果第三瞬态写入计数器的值(或第三总写入值)可以被整数整除,则wmm30可以确定第三瞬态写入计数器的值(或第三总写入值)满足阈值块集合计数。在一些实例中,如果执行第三瞬态写入计数器的值(或第三总写入值)的模运算且阈值块集合计数等于特定值,则第三瞬态写入计数器的值(或第三总写入值)可以被整数整除。在将第三瞬态写入计数器的值(或第三总写入值)除以阈值块集合计数之后,模运算可以计算余数。在一些示例中,如果余数等于特定值(例如,零),则wmm30可以确定第三瞬态写入计数器的值(或第三总写入值)可以被整数整除。在一些示例中,响应于确定第三瞬态写入计数器的值或第三总写入值满足阈值块集合计数,wmm30可以确定重新排列存储在与第一逻辑块地址集合相关联的页面的数据。

应当理解,本文所述的阈值写入计数(无论它们是阈值装置写入计数、阈值块集合计数、或本文所述的任何其他阈值写入计数)仅仅是示例,并且任何值可以用于各种阈值写入计数。

响应于确定重新排列与第三逻辑块地址集合相关联的物理位置处的数据,wmm30可以通过以下方式来重新排列存储在与第三逻辑块地址集合相关联的物理位置的数据:交换存储在与第三逻辑块地址集合相关联的第一逻辑地址(例如,逻辑页面、字组、或字节)的数据的物理位置和存储在与第三逻辑块地址集合相关联的第二逻辑地址的数据的物理位置。在一些示例中,wmm30可以基于与第三逻辑块地址集合相关联的偏移值来执行交换。例如,wmm30可以将数据从第一物理位置交换到与第一物理位置偏移偏移值的第二物理位置。在一些示例中,wmm30管理所有逻辑块地址集合的单个偏移值。在其他示例中,wmm30可以维持与每个相应的逻辑块地址集合相关联的相应的偏移值。

在一些示例中,偏移值可以是固定偏移值。例如,考虑这样的示例,其中与第三逻辑块地址集合相关联的固定偏移值等于50,且第三逻辑块地址集合包含256个页面。在该示例中,响应于确定第三瞬态写入计数器的值(或第三总写入值)满足阈值,wmm30可以将数据的逻辑单元(例如,页面)从第一物理位置(例如,物理页面-1)复制到第二物理位置(例如,物理页面-51),将数据的逻辑单元(例如,页面)从第三物理位置(例如,物理页面-2)复制到第四物理位置(例如,物理页面-52),以及诸如此类。下一次wmm30确定重新排列存储在与第三逻辑块地址集合相关联的物理位置的数据时,wmm30可以再次将数据的逻辑单元(例如,页面)从第一物理位置(例如,物理页面-1)复制到第二物理位置(例如,物理页面-51),将数据的逻辑单元(例如,页面)从第三物理位置(例如,物理页面-2)复制到第四物理位置(例如,物理页面-52),以及诸如此类。因此,在两个重新排列操作之后,wmm30可能已经将原始存储在物理页面-1的数据的逻辑页面移动到物理页面-51,且然后到物理页面-101。

在其他示例中,偏移值可以是随机偏移值。例如,wmm30可以周期性地改变与第三逻辑块地址集合相关联的偏移值。例如,在一些示例中,wmm30可以将随机偏移值从第一随机偏移值(例如,50)更新为第二随机偏移值(例如,121)。wmm30可以基于随机数生成器来更新随机值。在一些示例中,随机数生成器可以生成1和z之间的值,其中z等于与逻辑块地址集合相关联的数据的物理单元(例如,页面、字组、或字节)的数量。例如,考虑这样的示例,其中与第三逻辑块地址集合相关联的固定偏移值初始时等于50,且第三逻辑块地址集合包含256个页面。在该示例中,wmm30可以将数据的逻辑单元(例如,页面)从第一物理位置(例如,物理页面-1)复制到第二物理位置(例如,物理页面-51),将数据的逻辑单元(例如,页面)从第三物理位置(例如,物理页面-2)复制到第三物理位置(例如,物理页面-52),以及诸如此类。wmm30可以将随机偏移值从值50更新为值121。下一次wmm30确定重新排列存储在与第三逻辑块地址集合相关联的物理位置的数据时,wmm30可以将数据的逻辑单元(例如,页面)从第一物理位置(例如,物理页面-1)复制到第五物理位置(例如,物理页面-122),将数据的逻辑单元(例如,页面)从第三物理位置(例如,物理页面-2)复制到第六物理位置(例如,物理页面-123),以及诸如此类。因此,在两个重新排列操作之后,wmm30可能已经将原始存储在物理页面-1的数据的逻辑页面移动到物理页面-51,且然后到物理页面-172。

在一些示例中,wmm30可以将各种写入计数器(例如,装置写入计数器、相应的瞬态写入计数器、相应的永久写入计数器、或其中的任何组合)存储在易失性存储器12、nvma10、或它们的组合中。在一些示例中,wmm30可以将所有的相应的瞬态写入计数器和相应的永久写入计数器存储在nvma10中,且可以将相应的瞬态写入计数器的子组和永久写入计数器存储在易失性存储器12中。

例如,响应于存储装置6打开,wmm30可以在装置启动时加载块集合特定参数。换言之,wmm30可以取回瞬态写入计数器的子组、永久写入计数器、或两者,且可以将瞬态写入计数器的子组和永久写入计数器加载到易失性存储器12。在一些示例中,写入计数器的子组可以包含这样的相应的计数器,其对应于最频繁地写入的逻辑块地址集合、最频繁地读取的逻辑块地址集合、或两者。

当控制器8接收涉及相应的附加逻辑块地址集合的写入命令和读取命令时,wmm30可以取回与相应的附加逻辑块地址集合相关联的写入计数器的附加子组。在一些示例中,如果控制器8确定相应的附加逻辑块地址集合可能被使用,则wmm30可以取回与一个或多个相应的附加逻辑块地址集合相关联的写入计数器的附加子组,即使控制器8尚未接收涉及附加的一个或多个逻辑块地址集合的命令。通过在相应的写入计数器被使用(或可能被使用)时加载它们,wmm30可以减少存储在易失性存储器12中的计数器的数量,这可以改善存储装置6的性能。

在一些示例中,其中wmm30将相应的写入计数器中的至少一些加载到易失性存储器12,wmm30可以周期性地更新存储在nvma10的相应的写入计数器。当存储装置6被关闭时(例如,由于故意关闭或电源故障),wmm30可以更新存储在nvma10的相应的写入计数器。按照这种方式,如果存储装置6丢失电力,则wmm30可以保持每个相应的写入计数器的更准确的计数。

图4a-4b是示出了根据本公开的一个或多个技术的写入计数器表的示例细节的概念性和示意性框图。图4a示出了在执行块间集合磨损均衡操作之前的写入计数器表40的示例细节。换言之,图4a所示的写入计数器表40示出了在交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置之前的相应的写入计数器的相应的值。类似地,图4b示出了在交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置之后的相应的写入计数器的相应的值。仅为了便于说明,数据结构将被描述为写入计数器表40;然而,写入计数器表40内的信息可以存储在任何类型的数据结构中,例如阵列、数据库、等等。为了说明的目的,将参照图1和图3描述写入计数器表40。

写入计数器表40可以存储与每个相应的逻辑块地址集合相关联的写入计数器值。例如,写入计数器表40可以包含“n”个行,每个逻辑块地址集合一行。每个行可以包含多个列,每个列包含与相应的逻辑块地址集合相关联的相应的写入计数器。

例如,写入计数器表40可以包含以下列中的至少一个:逻辑块地址集合42、物理块地址范围44、瞬态写入计数器46、永久写入计数器48、或总计数值50。在一些示例中,写入计数器表40可以省略列42-50中的一个或多个,且可以包含存储其他信息的其他列,或它们的组合。逻辑块地址集合42可以包含用于标识逻辑块地址集合的唯一逻辑块地址标识符。物理块地址范围44可以存储对应于相应的逻辑块地址集合内的逻辑块地址的物理块地址的指示。瞬态写入计数器46可以存储在特定的时间量内(例如,自从由控制器8执行的涉及相应的逻辑块地址集合的上一次磨损均衡操作之后)数据已经被写入相应的逻辑块地址集合的次数的计数。永久写入计数器48可以存储在存储装置6的寿命期间(或在涉及相应的逻辑块地址集合的上一次块间集合磨损均衡操作之前的存储装置6的寿命期间)数据已经被写入相应的逻辑块地址集合的次数的计数。总写入值50存储数据已经被写入相应的逻辑块地址集合的总次数的计数。在一些示例中,wmm30可以实际上不存储总写入值50(例如,为了减少存储计数器所需的存储器量),且可以通过将相应的瞬态写入计数器的值与相应的永久写入计数器的值相加来计算数据已经被写入逻辑块地址集合的总次数。

在一些示例中,响应于确定装置写入计数器满足阈值,wmm30可以确定是否交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置。wmm30可以基于相应的瞬态写入计数器46、相应的永久写入计数器48、总写入值50、或它们的组合,来确定是否进行交换。在一些示例中,wmm30可以基于将具有最大值的写入计数器(例如,瞬态写入计数器46、永久写入计数器48、或总写入值50)与具有最大值的写入计数器进行比较,来确定是否进行交换。在一些实例中,wmm30可以通过将瞬态写入计数值44从最大到最小排序,来确定哪个写入计数器存储最大值,哪个写入计数器存储最小值。在其他实例中,wmm30可以通过利用优先级,来确定哪个写入计数器存储最大值,哪个写入计数器存储最小值。

在一些示例中,wmm30可以基于如上所述的等式3和等式4所示的交换条件,来确定是否交换物理位置。参照图4a,wmm30可以确定最大总写入值50与逻辑块地址集合(#5)相关联,且最小总写入值50与逻辑块地址集合(#3)相关联。因此,与逻辑块地址集合(#5)相关联的瞬态写入计数器的值可以表示为c5,trans,与逻辑块地址集合(#5)相关联的总写入值可以表示为c5,total,与逻辑块地址集合(#3)相关联的瞬态写入计数器的值可以表示为c3,trans,且与逻辑块地址集合(#3)相关联的总写入值可以表示为c3,total。代入等式3和等式4,得到等式5和等式6:

等式5:c5,total>p*c3,total以及

等式6:c5,trans>c3,trans

如果c5,trans=1100,c5,total=5350,c3,trans=50,c3,total=550,且预定数p=2,则wmm30可以确定交换存储在逻辑块地址集合(#5)中的逻辑块地址的数据的物理位置和存储在逻辑块地址集合(#3)中的逻辑块地址的数据的物理位置,这是因为等式5和等式6两者都为真。因此,如图4b所示,与逻辑块地址集合(#5)相关联的数据的物理位置可以从物理块地址范围(9,10)交换到物理块地址范围(5,6)。类似地,与逻辑块地址集合(#3)相关联的数据的物理位置可以从物理块地址范围(5,6)交换到物理块地址范围(9,10)。

按照类似的方式,wmm30可以确定第二最大总写入值、第二最小总写入值,且可以确定是否交换与第二最大总写入值和第二最小总写入值相关联的数据的物理位置。参照图4a,wmm30可以确定第二最大总写入值50与逻辑块地址集合(#1)相关联,且最小总写入值50与逻辑块地址集合(#2)相关联。因此,与逻辑块地址集合(#1)相关联的瞬态写入计数器的值可以表示为c1,trans,与逻辑块地址集合(#1)相关联的总写入值可以表示为c1,total,与逻辑块地址集合(#2)相关联的瞬态写入计数器的值可以表示为c2,trans,且与逻辑块地址集合(#2)相关联的总写入值可以表示为c2,total。代入等式3和等式4,得到等式7和等式8:

等式7:c1,total>p*c2,total以及

等式8:c1,trans>c2,trans

如果c1,trans=1200,c1,total=3200,c2,trans=200,c2,total=600,且预定数p=2,则wmm30可以确定交换存储在逻辑块地址集合(#1)中的逻辑块地址的数据的物理位置和存储在逻辑块地址集合(#2)中的逻辑块地址的数据的物理位置,这是因为等式7和等式8两者都为真。因此,如图4b所示,与逻辑块地址集合(#1)相关联的数据的物理位置可以从物理块地址范围(1,2)交换到物理块地址范围(3,4)。类似地,与逻辑块地址集合(#2)相关联的数据的物理位置可以从物理块地址范围(3,4)交换到物理块地址范围(1,2)。

wmm30可以继续该过程,直到不存在满足交换等式的逻辑块地址集合及与相应的逻辑块地址集合的相关联的写入计数器的组合。

响应于交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,wmm30可以使与第一逻辑块地址集合相关联的第一永久写入计数器的值增加第一瞬态写入计数器的值。类似地,wmm30可以使与第二逻辑块地址集合相关联的第二永久写入计数器的值增加第二瞬态写入计数器的值。例如,wmm30可以将瞬态写入计数器的相应的值和与逻辑块地址集合(#5)相关联的永久写入计数器的相应的值相加。因此,wmm30可以使与逻辑块地址集合(#5)相关联的永久写入计数器的值从4250增加到5350。类似地,wmm30可以使与逻辑块地址集合(#1、2和3)相关联的永久写入计数器的值增加。

在一些示例中,wmm30可以在将应的瞬态写入计数器的值和永久写入计数器相加之后,交换相应的永久写入计数器的值和与每个相应的逻辑块地址集合相关联的相应的总写入计数器的值。例如,如果在将相应的瞬态写入计数器的值和相应的永久写入计数器的值相加之后,c5,perm=5350且c3,perm=550,则wmm30可以交换更新的永久写入计数器的值,使得在交换之后,c5,perm=550且c3,perm=5350。因此,在交换之后,永久写入计数器的值c3,perm反映对物理块地址范围(9,10)的写入的总数量,且永久写入计数器的值c5,perm反映对物理块地址范围(5,6)的写入的总数量。按照这种方式,永久写入计数器50可以对应于数据的物理位置,且可以追踪对相应的物理块地址的写入的实际数量。

进一步响应于交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,wmm30可以通过将相应的瞬态写入计数器的值设定为基线值(例如,零)来更新相应的瞬态写入计数器46。例如,wmm30可以将与逻辑块地址集合(#1、2、3和5)相关联的瞬态写入计数器的值设定为零。

图5是示出了根据本公开的一个或多个技术的固态驱动器的示例磨损均衡操作的流程图。为了易于说明,将同时参照图1和图3的存储装置6和控制器8来描述图5的示范性技术。然而,这些技术可以与硬件或软件的任何组合一起使用。

wmm30可以确定是否交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置(52)。在一些示例中,wmm30可以基于与第一逻辑块地址集合相关联的第一瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二瞬态写入计数器的值,来确定是否交换数据的物理位置。在其他示例中,wmm30可以基于第一瞬态写入计数器的值和与第一逻辑块地址集合相关联的第一永久写入计数器的和(也称为第一总写入值),以及第二瞬态写入计数器的值和与第二逻辑块地址集合相关联的第二永久写入计数器的和(也称为第二总写入值),来确定是否交换数据的物理位置。在其他示例中,wmm30可以基于第一瞬态写入值和与第一逻辑块地址集合相关联的第一总写入值,以及第二瞬态写入值和与第二逻辑块地址集合相关联的第二总写入值,来确定是否交换数据的物理位置。

响应于确定交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置,wmm30可以交换存储在第一逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置(54)。例如,wmm30可以将存储在与第一瞬态写入计数器相关联的第一物理位置的数据复制到第三物理位置(例如,不同的存储器装置16或易失性存储器12),将存储在与第二瞬态写入计数器相关联的数据复制到第一物理位置,并将数据从第三物理位置复制到第二物理位置。

图6是示出了根据本公开的一个或多个技术的固态驱动器的示例磨损均衡操作的流程图。为了易于说明,将同时参照图1和图3的存储装置6和控制器8来描述图6的示范性技术。然而,这些技术可以与硬件或软件的任何组合一起使用。

在一些示例中,wmm30可以在装置启动时加载块集合特定参数(62)。例如,wmm30可以取回多个瞬态写入计数器(其每一个与多个逻辑块地址集合中的相应的逻辑块地址集合相关联)、多个永久写入计数器(其每一个与多个逻辑块地址集合中的相应的逻辑块地址集合相关联)、或两者。wmm30可以将多个瞬态写入计数器和/或永久写入计数器加载到易失性存储器12。在一些示例中,多个瞬态和/或永久写入计数器可以包含相应的瞬态和/或永久写入计数器,其对应于最频繁地写入的逻辑块地址集合,或最频繁地读取的逻辑块地址集合,或两者。

写入模块24可以将数据写入第一逻辑块地址集合(64)。例如,写入模块24可以从主机装置4接收包含数据和逻辑块地址的写入命令,在特定的存储器装置16内选择物理位置(例如,pba)来存储数据,并将数据存储到所选择的物理位置。在一些示例中,wmm30可以确定包含逻辑块地址的第一逻辑块地址集合。响应于将数据写入第一物理位置,wmm30可以更新与第一逻辑块地址集合相关联的第一瞬态写入计数器的值(c1,trans)(66)。例如,wmm30可以使第一瞬态写入计数器的值增加1。

在一些示例中,wmm30可以基于第一瞬态写入计数器的值(c1,trans)和与第一逻辑块集合相关联的第一永久写入计数器的值(c1,perm)的和,来确定是否重新排列存储在与第一逻辑块地址集合相关联的的物理位置的数据。例如,wmm30可以确定对第一逻辑块地址集合的写入的总数是否满足阈值块集合计数(68)。在一些示例中,如果对第一逻辑块地址集合的写入的总数等于或超过多个阈值块集合计数中的一个,则wmm30可以确定对第一逻辑块地址集合的写入的总数满足阈值块集合计数。在其他示例中,如果对第二逻辑块地址集合的写入的总数可以由整数整除,则wmm30可以确定对第一逻辑块地址集合的写入的总数满足阈值块集合计数。

响应于确定对第一逻辑块地址集合的写入的总数满足阈值块集合计数,wmm30可以基于随机偏移值重新排列存储在与第一逻辑块地址集合相关联的物理位置的数据(70)。例如,wmm30可以通过以下方式重新排列存储在与第一逻辑块地址集相关联的物理位置的数据:交换存储在与第一逻辑块地址集合相关联的第一逻辑地址(例如,逻辑页面、字组、或字节)的数据的物理位置和存储在与第一逻辑块地址集合相关联的第二逻辑地址(例如,逻辑页面或字组)的数据的物理位置。在一些示例中,wmm30可以基于与第一逻辑块地址集合相关联的随机偏移值来执行交换。例如,wmm30可以将数据从第一物理位置交换到从第一物理位置偏移随机偏移值的第二物理位置。

wmm30可以更新随机偏移值(72)。例如,wmm30可以生成随机数,并将随机偏移值设定为等于由随机数生成器生成的值。

在一些示例中,wmm30可以确定自从最后一次交换(例如,最近的块间集合磨损均衡)以来的到存储装置6的写入的总数是否满足阈值写入数(74)。在一些实例中,如果装置写入计数器的值等于多个阈值装置写入计数中的一个,则wmm30可以确定自从交换以来的对存储装置6的总写入数满足阈值。在其他实例中,如果装置写入计数器的值大于或等于阈值装置写入计数,则wmm30可以确定装置写入计数器的值满足阈值。在其他的实例中,如果装置写入计数器的值可以由整数整除,则wmm30可以确定自从上一次交换以来的对存储装置6的总写入数满足阈值。

响应于确定对存储装置6的总写入数满足阈值写入数,wmm30可以确定是否交换存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第三逻辑块地址集合中的逻辑块地址的数据的物理位置。wmm30可以通过以下方式来确定是否交换数据的物理位置:确定与第二块集合相关联的总写入值(c2,total)是否大于预定数p乘以与第三块集合相关联的总写入值(c3,total),以及与第二块集合相关联的瞬态写入计数器的值(c2,trans)是否大于与第三块集合相关联的瞬态写入计数器的值(c3,trans)(76)。

响应于确定c2,total>p*c3,total且c2,trans>c3,trans,wmm30可以交换存储在第二逻辑块地址集合中的逻辑块地址的数据的物理位置和存储在第三逻辑块地址集合中的逻辑块地址的数据的物理位置(80)。例如,wmm30可以将存储在与第一瞬态写入计数器相关联的第一物理位置的数据复制到第三物理位置(例如,不同的存储器装置16或易失性存储器12),将存储在与第二瞬态写入计数器相关联的第二物理位置的数据复制到第一物理位置,并将数据从第三物理位置复制到第二物理位置。wmm30可以使得地址转换模块22更新闪存转换层或间接表,以指示第一逻辑块地址集合现在对应于第二物理位置,且第二逻辑块地址集合现在对应于第一物理位置。

本公开中所描述的技术可以至少部分地在硬件、软件、固件或其任何组合中实现。例如,所述技术的各个方面可以在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其它等效的集成或分立逻辑电路、以及这些部件的任何组合。术语“处理器”或“处理电路”通常可以指代任何前述逻辑电路(单独地或与其他逻辑电路组合)、或任何其他等效电路。包含硬件的控制单元也可以执行本公开的一个或多个技术。

这样的硬件、软件和固件可以在相同的设备内或在单独的装置内实现,以支持本公开中所描述的各种技术。此外,所述单元、模块或部件中的任一者可一起实现、或单独实施为分立但可互操作的逻辑装置。将不同的特征描述为模块或单元旨在强调不同的功能方面,并且不一定意味着这样的模块或单元必须由单独的硬件、固件或软件组件实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件、固件或软件部件来执行,或者集成在公共或单独的硬件、固件或软件部件中。

本公开中所描述的技术也可以在包含使用指令编码的计算机可读存储介质的制品中实现或编码。嵌入或编码在包含计算机可读存储介质编码的制品中的指令可以使得一个或多个可编程处理器、或其他处理器实现本文所描述的技术中的一个或多个,例如当由一个或多个处理器执行包含或编码在计算机可读存储介质中的指令时。计算机可读存储介质可以包含随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存存储器、硬盘、光盘rom(cd-rom)、软盘、盒式磁带、磁性介质、光学介质、或其他计算机可读介质。在一些示例中,制品可以包含一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可以包含非暂时性介质。术语“非暂时性”可以指示存储介质未被具现为载波或传播信号。在某些示例中,非暂时性存储介质可以存储可随时间改变(例如,在ram或缓存中)的数据。

已经描述了各种示例。这些示例和其他示例在所附权利要求的范围内。

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