CN105103131A - 用于改进闪存的可靠性和寿命的系统和方法 - Google Patents
用于改进闪存的可靠性和寿命的系统和方法 Download PDFInfo
- Publication number
- CN105103131A CN105103131A CN201480020496.7A CN201480020496A CN105103131A CN 105103131 A CN105103131 A CN 105103131A CN 201480020496 A CN201480020496 A CN 201480020496A CN 105103131 A CN105103131 A CN 105103131A
- Authority
- CN
- China
- Prior art keywords
- page
- damaged
- parameter set
- fec
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Hardware Redundancy (AREA)
Abstract
描述了一种用于控制闪存的方法。该方法包括选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集。该方法还包括在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特。该方法进一步包括将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
Description
优先权要求
本申请要求于2013年4月12日提交的题为“SYSTEMSANDMETHODSTOIMPROVETHERELIABILITYANDLIFESPANOFFLASHMEMORY(用于改进闪存的可靠性和寿命的系统和方法)”的美国专利申请S/N.13/861,691的优先权,其通过援引整体纳入于此。
技术领域
本公开一般涉及闪存。具体而言,本公开涉及用于改进闪存的可靠性和寿命的系统和方法。
背景技术
电子设备(蜂窝电话、无线调制解调器、计算机、数字音乐播放器、全球定位系统单元、个人数字助理、游戏设备等)已成为日常生活的一部分。小型计算设备如今被放置在从汽车到住房用锁等每件事物中。在过去的几年里电子设备的复杂度有了急剧的上升。例如,许多电子设备具有一个或多个帮助控制该设备的处理器、以及支持该处理器及该设备的其他部件的数个数字电路。
电子设备往往在存储器中存储数据。该存储器可以是闪存,具体而言,可以是NAND闪存(即,使用NAND逻辑的闪存)。因此,可通过改进闪存的可靠性和寿命来达成益处。
概述
描述了一种用于控制闪存的方法。该方法包括选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集。在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特。将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
该选择可以是响应于对第一已损坏页的写失败或者在从第一已损坏页的读操作期间所估计页差错率超过FEC阈值时执行的。该选择可包括从多个FEC参数集当中选择新FEC参数集,该多个FEC参数集中的每个FEC参数集提供不同量的冗余度。新FEC参数集与当前FEC参数集相比每页具有更高数目的能被纠正的比特差错。
该方法还可包括在第一已损坏页中存储新FEC参数集以及在该至少一个附加已损坏页中存储另一FEC参数集。该方法可进一步包括在第一已损坏页和该至少一个附加已损坏页中存储映射指示符,该映射指示符指示从第一已损坏页和该至少一个附加已损坏页到单个逻辑页的映射。该方法可附加地包括在第一已损坏页和该至少一个附加已损坏页中存储次序信息,该次序信息指示存储在第一已损坏页和该至少一个附加已损坏页中的数据安排。该方法还可包括基于所接收到的指令对该单个逻辑页读和写数据。
该方法还可包括将第一已损坏页记录到部分降级页列表。可在部分降级页列表中搜索该至少一个附加已损坏页。该方法还可包括确定第一已损坏页和该至少一个附加已损坏页的可用数据字节总和大于或等于期望页大小。可在逻辑页信息表中记录编组信息。可将编组信息记录到第一已损坏页和该至少一个附加已损坏页的元数据。
该方法还可包括维持该单个逻辑页的接口一致性。该方法可进一步包括估计页差错率。可基于页差错率来选择新FEC参数集。
还描述了一种用于控制闪存的电子设备。该电子设备包括处理器以及与处理器处于电子通信的存储器。该存储器包括可执行指令。选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集。在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特。将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
还描述了一种用于控制闪存的计算机程序产品。该计算机程序产品包括其上具有指令的非瞬态有形计算机可读介质。该指令包括用于使电子设备选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集的代码。该指令还包括用于使电子设备在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特的代码。该指令进一步包括用于使电子设备将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页的代码。
还描述了一种用于控制闪存的电子设备。该电子设备包括被配置成选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集的电路系统。该电路系统还被配置成在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特。该电路系统进一步被配置成将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
还描述了一种用于控制闪存的设备。该设备包括用于选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集的装置。该设备还包括用于在对闪存中的第一已损坏页的写操作期间使用新FEC参数集来编码源信息比特的装置。该设备进一步包括用于将第一已损坏页和闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页的装置。
还描述了一种用于控制闪存的方法。该方法包括向闪存中的页写数据。确定可用存储器指示符,该可用存储器指示符指示该页的可用数据字节和已损坏数据字节的量。存储可用存储器指示符。基于可用存储器指示符来确定是否要在该页中存储附加数据。
该存储可包括在该页中存储可用存储器指示符。该存储还可包括在闪存控制器中存储可用存储器指示符。该可用存储器指示符可指示该页的可用数据字节的量小于操作系统的期望页大小。
该方法还可包括执行对该页的后续写操作或后续读操作。可基于对该页的后续写操作或后续读操作来估计页差错率。可基于页差错率来更新可用存储器指示符。
还描述了一种用于控制闪存的电子设备。该电子设备包括处理器以及与处理器处于电子通信的存储器。该存储器包括可执行指令。向闪存中的页写数据。确定可用存储器指示符,该可用存储器指示符指示该页的可用数据字节和已损坏数据字节的量。存储可用存储器指示符。基于可用存储器指示符来确定是否要在该页中存储附加数据。
还描述了一种用于控制闪存的计算机程序产品。该计算机程序产品包括其上具有指令的非瞬态有形计算机可读介质。该指令包括用于使电子设备向闪存中的页写数据的代码。该指令还包括用于使电子设备确定可用存储器指示符的代码,该可用存储器指示符指示该页的可用数据字节和已损坏数据字节的量。该指令进一步包括用于使电子设备存储可用存储器指示符的代码。该指令附加地包括用于使电子设备基于可用存储器指示符来确定是否要在该页中存储附加数据的代码。
还描述了一种用于控制闪存的电子设备。该电子设备包括被配置成向闪存中的页写数据的电路系统。该电路系统还被配置成确定可用存储器指示符,该可用存储器指示符指示该页的可用数据字节和已损坏数据字节的量。该电路系统被进一步配置成存储可用存储器指示符。该电路系统被附加地配置成基于可用存储器指示符来确定是否要在该页中存储附加数据。
还描述了一种用于控制闪存的设备。该设备包括用于向闪存中的页写数据的装置。该设备还包括用于确定可用存储器指示符的装置,该可用存储器指示符指示该页的可用数据字节和已损坏数据字节的量。该设备进一步包括用于存储可用存储器指示符的装置。该设备附加地包括用于基于可用存储器指示符来确定是否要在该页中存储附加数据的装置。
附图简述
图1是解说包括用于改进闪存的可靠性和寿命的闪存控制器的电子设备的框图;
图2是解说用于控制闪存的方法的流程图;
图3是解说闪存中的未损坏页和已损坏页的框图;
图4是解说用于改进闪存的可靠性和寿命的闪存控制器的更详细配置的框图;
图5是解说用于向闪存写数据的方法的流程图;
图6是解说用于从逻辑页读数据的方法的流程图;
图7是解说闪存中的已损坏页的另一配置的框图;
图8是解说用于控制闪存的另一方法的流程图;以及
图9解说了可被包括在电子设备内的某些组件。
详细描述
当今许多消费者电子设备使用NAND闪存。闪存是即使在移除电力之后还能保留所存储的数据的非易失性存储器。作为一种类型的闪存,NAND闪存是高密度设计并且具有胜过其它类型存储器的某些优点,包括大存储容量(例如,1吉比特或更大)、良好的连续存取速度、以及低成本。然而,NAND闪存也具有固有的缺点,包括在NAND闪存的工作寿命期间对比特差错的增大敏感性。
NAND闪存可以是单级单元NAND闪存或多级单元(MLC)NAND闪存。与单级单元NAND闪存相比,MLCNAND闪存可提供高存储器容量,这以较低可靠性为代价。NAND闪存通常以页为单位来被访问(例如,经由读和写操作),一次一页,其中每一页的可用数据字节为特定大小(例如,512字节、2048字节或4096字节)。NAND闪存对其寿命中的写循环数目具有限制。闪存设备差错的类型可被分类为程序差错、保留差错、擦除差错和读差错。一般而言,所有类型的差错将随着原始闪存单元已被编程的循环数目而增大。本发明的系统和方法可被用来增大闪存归因于所有类型的差错的可靠性和寿命。一些闪存控制器(或闪存驱动器)可将页标记为坏的并将该页重映射到存储器的另一个块,即,闪存的容量随着每个丢失的页而减小。因此,通过修改如何确定页为坏的以及如何将页与其它页进行映射可实现益处。
图1是解说包括用于改进闪存106的可靠性和寿命的闪存控制器104的电子设备102的框图。闪存控制器104可充当闪存106与操作系统或其它用户应用之间的接口。闪存控制器104可隐藏管理闪存106内的物理单元(例如,页120)的复杂度。操作系统或其它用户应用可将要存储在闪存106中的源信息比特提供给闪存控制器104,闪存控制器104向闪存106存储该源信息比特和从闪存106检索该源信息比特。应注意,闪存控制器104可被实现为硬件(例如,电路系统)、软件(例如,闪存驱动程序)、或者硬件和软件的组合。还应当注意,在一些配置中,图1中解说的元素中的一个或多个元素可在电路系统(例如,集成电路系统)中实现。
在向闪存106写之前,闪存控制器104可用前向纠错(FEC)码122来编码源信息比特以产生码字。持久存储器存储(诸如闪存106)可利用FEC码122来编码源信息比特。FEC码122是被用于控制数据存储差错的算法。源信息比特可使用纠错码(ECC)以冗余方式来存储。与FEC相关联的冗余度可允许闪存控制器104检测可在写/读过程期间发生的有限数目的差错,并且往往在不参考原始源信息比特的情况下纠正这些差错。
在一种配置中,闪存控制器104可将源信息比特转换成码字。例如,写过程可将源信息比特(或码元)编码成码字,并将经编码码字存储到闪存106。读过程可从闪存106检索码字并且将码字解码成源信息比特。在此过程期间,FEC码122可被用来检错并且在一些情形中纠错。存在可被用来编码源信息比特的不同类型的FEC码122。例如,FEC码122可以是理德-所罗门(RS)码。
编码操作可引入一些冗余数据(例如,FEC比特)以允许检错和纠错。可为给定FEC码122方案选择不同参数,其实现更好的检错和纠错,但要求存储更多的纠错FEC比特。例如,对于给定FEC码122,可选择不同FEC参数集112以调整FEC码122的纠错能力。在一种配置中,用于线性FEC码122的FEC参数集112可包括信息比特的数目(N)、纠错比特的数目(k)、以及能纠正的比特差错的数目(t)。在另一配置中,FEC参数集112可仅包括FEC码122所使用的纠错比特的数目(k)。在又一配置中,FEC参数集112可附加地包括用于FEC码122的FEC编码率。在一些配置中,FEC参数集112可包括单个FEC编码参数。如本文所使用的,术语FEC编码参数可与FEC参数集112互换地使用。
一些闪存控制器104可用固定FEC参数(以及相对应的固定数目的可在声明写失败之前被纠正的比特差错)来使用FEC码122。因此,常规闪存控制器104在闪存106的寿命期间对FEC码122使用一个特定的FEC参数集112。然而,一些FEC码122方案可允许容易地调整FEC参数集112,并且可添加更多纠错FEC比特(或码元)以增强容易出错的页120的可靠性。
对闪存106的可使用寿命的限制因素之一是对闪存106执行的写操作的数目(例如,存储器磨损)。最终,闪存106的部分可损坏并且可能不可靠地存储和读出数据,此时闪存106的那些部分不再有用。闪存106可通过物理块或页120来组织。闪存控制器104可将页120映射到逻辑页,逻辑页可由外部模块(诸如操作系统或用户应用)寻址。在写操作期间,闪存控制器104可向闪存106内的特定页120写入经FEC编码的数据(例如,码字),此后所写数据被读取以验证准确性。如果读出的数据与所写数据不匹配(在尝试使用FEC码122纠正任何差错之后),则声明写失败。在此时,使用固定FEC参数的闪存控制器104就可将整个页120标记为已损坏并且逻辑地重映射闪存106,从而已损坏页120不再被使用。
相反,根据本文所描述的系统和方法的闪存控制器104可使用适度的降级。代替将整个页120标记为坏的或已损坏,闪存控制器104可选择提供比当前FEC参数集112更大的冗余度的新FEC参数集112。因此,闪存控制器104可继续利用闪存106中的已损坏页120的一部分,而非将已损坏页120标记为坏的并进行映射以避免对已损坏页120的读和写。然而,与新FEC参数集112相关联的增大冗余度可能以页120的减小的存储容量为代价。
在一种配置中,闪存控制器104可包括动态FEC参数选择器110,其响应于写失败而选择新FEC参数集112。例如,在编码器108使用FEC码122和当前FEC参数集112来编码源信息比特以产生码字之后,闪存控制器104可向闪存106中的页120写入该码字。解码器114可从闪存106检索该码字并且验证数据的准确性。在一种配置中,解码器114可包括差错校验器116,其检查该码字以检测差错。如果页120被损坏并且检测到差错,则动态FEC参数选择器110可选择具有比当前FEC参数集更大的冗余度的新FEC参数集112以提供更大的纠错能力。这可整体上延长闪存106的寿命,因为单次写失败将不会阻止整个页120被使用。
在上述配置中,闪存控制器104可使用一个FEC码122方案,但闪存控制器104可装备有不同FEC参数集112。例如,RS码可被用作FEC码122,其中页120的长度为n。代替使用固定的纠错比特数目(k),每个FEC参数集112可具有较高值k。可用于FEC码122的纠错比特(k)可被表达为集合K={k1,k2,…,kN},其中k1<k2<…<kN。较高值k指示较高纠错能力和较低存储容量。因此,在闪存106寿命周期的开始,所有页120可以从与k1相关联的FEC参数集112开始,k1提供最高容量和最低纠错能力。当闪存控制器104遭遇对页120的写失败时,闪存控制器104可将该页120的模式切换到不同FEC参数集112(即,与k2或更高相关联的FEC参数集112),由此提供更大可靠性但减小的存储容量。应注意,在此配置中,也可使用不同于RS码的FEC码122。
由于操作系统可能期望相同页大小用于读/写操作,因此闪存控制器104可将多个物理降级页120映射到具有期望页大小的单个逻辑页。由于已损坏页120的容量可能因与新FEC参数集112相关联的增大冗余度而减小,因此已损坏页120的可用数据字节可能小于期望页大小。例如,操作系统可能期望页120具有4096字节的可用数据,但由于增大的冗余度,已损坏页120的可用数据字节可能仅为2048字节。在一种配置中,映射模块118可将多个已损坏页120映射到具有期望页120大小的单个逻辑页。此类逻辑页将使用较高的编码等级,并且可作为具有正常页120的相同大小的“好”块呈现给操作系统。例如,两个具有2048个可用数据字节的已损坏页120可被映射到具有期望的4096个可用数据字节的单个逻辑页。此类操作可对操作系统隐藏每页120的可用存储容量的异质性。
图2是解说用于控制闪存106的方法200的流程图。方法200可由闪存控制器104来执行。在一些配置中,结合图2描述的闪存控制器104可以根据结合图1描述的闪存控制器104来实现。
在一种配置中,闪存控制器104可通过使用前向纠错(FEC)码122编码源信息比特以产生所存储的码字来执行写操作。闪存控制器104可基于当前FEC参数集112来编码源信息比特。闪存控制器104可将所存储的码字写到闪存106中的第一已损坏页120。
闪存控制器104可读回所存储数据以验证所存储数据的准确性。如果发生写失败(例如,第一已损坏页120被损坏并且检测到写差错),则闪存控制器104可选择(202)提供比当前FEC参数集112更大的冗余度的新FEC参数集112。新FEC参数集112可提供更大的纠错能力。在一种配置中,新FEC参数集112可选自多个FEC参数集112,其中每个FEC参数集112提供不同量的冗余度。新FEC参数集112可提供每页120能纠正比当前FEC参数集112更高数目的比特差错。因此,闪存控制器104可选择确保足够的冗余度以准确地向第一已损坏页120存储数据的新FEC参数集112,但不引入减小第一已损坏页120的可用容量的不必要的冗余度。
闪存控制器104可在对闪存106中的第一已损坏页120的写操作期间使用新FEC参数集112来编码(204)源信息比特。例如,闪存控制器104可使用FEC码122和新FEC参数集112来重新编码源信息比特以产生基于新FEC参数集112的码字。闪存控制器104可将该码字写到闪存106中的第一已损坏页120。
闪存控制器104可将第一已损坏页120和至少一个附加已损坏页120映射(206)到具有期望页大小的单个逻辑页。由于操作系统(或其它用户应用)可能期望特定页大小,因此第一已损坏页120和至少一个附加已损坏页120可被组合(例如,映射)以形成具有期望页大小的单个逻辑页。因此,闪存控制器104可接收(例如,来自操作系统的)指令并且可从该单个逻辑页读数据和向该单个逻辑页写数据。
在一些配置中,如果第一已损坏页120以及一个或多个附加已损坏页120被一起映射(206)以形成单个逻辑页,则闪存控制器104可向第一已损坏页120以及该一个或多个附加已损坏页120存储附加编组信息。该编组信息可被存储在第一已损坏页120以及该一个或多个附加已损坏页120的元数据中。例如,闪存控制器104可存储用于每个已损坏页120的新FEC参数集112。由于新FEC参数集112是针对每个已损坏页120单独确定的,因此用于第一已损坏页120的新FEC参数集112可以不同于用于附加已损坏页120的新FEC参数集112。
闪存控制器104还可存储对第一已损坏页120以及该一个或多个附加已损坏页120的映射指示符。该映射指示符可指示从第一已损坏页120以及该一个或多个附加已损坏页120到单个逻辑页的映射。
闪存控制器104可附加地向第一已损坏页120以及该一个或多个附加已损坏页120存储次序信息。该次序信息可指示存储在第一已损坏页120以及该一个或多个附加已损坏页120中的数据安排。例如,闪存控制器104可向第一已损坏页120存储第一数据段并且可向该一个或多个附加已损坏页120存储附加数据段。次序信息可指示在闪存控制器104向单个逻辑页存储数据时这些页120的次序以促成正确的数据重构。
图3是解说闪存106中的未损坏页320a和已损坏页320b-c的框图。页320可指代存储器的特定块。在一些配置中,闪存106可以是NAND闪存,其可在重复编程之后遭遇写差错。典型地,每一页320被个体地编程(例如,写入)并且对页320编程涉及设置从1到0选择的比特。编程逻辑可进一步读出编程结果以检查编程是否成功。
原始页320可被划分成数据区域和备用区域。数据区域可包括可用数据字节。备用区域可包括FEC比特和元数据。闪存106的使用者(例如,操作系统)可能期望特定数据区域大小。从外部角度来看,每一页320可以是固定大小,通常为2的幂个字节,诸如2048或2096个字节。备用区域可被用来存储FEC信息(例如,FEC比特)和其它元数据。备用区域可以是数十字节(例如,64字节、128字节,大小通常也为2的幂)。然而,可用数据字节、FEC比特和元数据之间的差别是微小的,这是因为闪存106中的原始比特并不区分何种类型的数据被存储在闪存106中的给定比特中。
未损坏页320a表示闪存106中的正常页320。未损坏页320a可包括FEC比特、可用数据字节和元数据。FEC比特可被闪存控制器304用在前向纠错(FEC)中。FEC比特的量可取决于所使用的FEC参数集112而改变。例如,k1对于未损坏页320a可小于其中已声明写失败并且提供更大冗余度的FEC参数集112被选择的已损坏页320。
未损坏页320a中的可用数据字节可被用来存储数据(例如,源信息比特)。在所解说的配置中,期望大小为4096字节,但可使用任何合适的值。然而,可用数据字节的数目可改变。未损坏页320a中的可用数据字节可对应于操作系统所期望的页大小。
元数据可包括关于源信息比特如何被存储在未损坏页320a中的信息。元数据可包括被用来编码源信息比特的FEC码122、为特定页320选择的FEC参数集112以及页320是否被认为是已损坏页320的指示。
第一已损坏页320b和第二已损坏页320c各自包括已损坏比特。已损坏比特可导致写差错。当页320开始遭遇写差错时,传统闪存管理可依赖于FEC比特来纠正那些差错,即,一旦页320中的字节差错数目增大到现有FEC无法被用来可靠地纠正这些差错的程度,页320就被认为是坏的并被标记为放弃。
然而,代替将页320作为坏页320丢弃,本发明的系统和方法的闪存控制器104可使用来自常规数据区域(例如,可用数据字节)的原始比特单元来存储更多FEC比特,并且减少页320中可用数据字节的数目。例如,可选择提供比当前FEC参数集112更大冗余度的新FEC参数集112。在选择新FEC参数集112时,较少可用数据字节可供使用,这是因为在FEC编码期间引入了更大的冗余度。在此图解中,已损坏页320b-c的可用数据字节数目为2048字节。应注意,多个已损坏页320的可用数据字节可以相同或可以不相同。
第一已损坏页320b和第二已损坏页320c可包括FEC比特、可用数据字节和元数据。如同未损坏页320a一样,FEC比特可被闪存控制器304用在针对已损坏页320b-c的前向纠错(FEC)中。然而,关于每个已损坏页320b-c,可选择提供更大冗余度的FEC参数集112。在此情形中,FEC比特的数目为k2,其大于用于未损坏页320a的k1个FEC比特。
已损坏页320b-c中的可用数据字节可少于未损坏页320a。这可以是因减少总可用数据字节的已损坏比特所引起的。此外,可用数据字节可随FEC比特增多而减少。换言之,由于更多FEC比特被用来提供更大冗余度以增强易出错的已损坏页320b-c的可靠性,因此可用数据字节将减少。
已损坏页320b-c可被组合以形成具有期望页大小的一个逻辑页324。闪存控制器304可将多个已损坏页320b-c组合成一个逻辑“好”页324。以此方式,用户应用或操作系统可以能够利用已损坏页320b-c。因此,闪存控制器304对用户应用隐藏复杂度并维持接口一致性。尽管图3解说了组合两个已损坏页320b-c、每个已损坏页具有50%的期望可用数据的配置,但可使用合计达100%的期望可用数据字节的任何组合。例如,10个具有10%的期望可用数据字节的页320可被编组在一起。类似地,4个各自具有25%的期望可用数据字节的页320可被编组,等等。替换地,对于被一起编组成单个逻辑页324的每个已损坏页320,可用数据字节的百分比可以不同。例如,具有30%容量的页320可与具有70%容量的页320相组合。
应注意,逻辑页324可具有与未损坏页320a中相同的元数据中的一些。例如,逻辑页324的元数据可指示页上一次被写入的时间。但逻辑页324还可包括指向构成逻辑页324的多个物理页320b-c的元数据。从接口的角度来看,被呈现给操作系统的元数据不应当改变,无论逻辑页324是包括一个还是多个物理页320。然而,附加元数据可被用来帮助闪存控制器304标识逻辑页324以用于物理页映射。
用于已损坏页320b-c的元数据可包括关于源信息比特如何被存储在已损坏页320b-c中的信息。元数据可包括被用来编码源信息比特的FEC码122、为特定页320选择的FEC参数集112以及页320是否被认为是已损坏页320b-c的指示。元数据可附加地包括映射信息,其可包括哪些页320b-c被编组在一起、被编组的页320b-c的次序以及逻辑页信息(例如,逻辑页ID)。
图4是解说用于改进闪存406的可靠性和寿命的闪存控制器404的更详细配置的框图。结合图4描述的闪存控制器404可以根据结合图1描述的闪存控制器104来实现。例如,闪存控制器404可被包括在电子设备102中。
在一些配置中,闪存控制器404可包括源缓冲器426、编码器408、动态FEC参数选择器410、解码器414和映射模块418。源缓冲器426可接收要被保存在闪存406中的源信息比特428。源信息比特428可始发于操作系统或用户应用。编码器408可使用FEC码422来编码源信息比特。如以上结合图1描述的,FEC码422可被用来检测和纠正与闪存406相关联的数据存储差错。编码器408可使用FEC码422来编码源信息比特428以产生所存储码字430。
在写操作期间,所存储码字430可被存储(例如,写)在闪存406中的页420中。例如,在写操作期间,FEC比特432、可用数据字节434和元数据436可被写到页420。所存储码字430可被写到可用数据字节434。FEC比特432可以是通过FEC码422添加到源信息比特428的冗余纠错比特。元数据436可包括被用来编码源信息比特428的FEC码422、为页420选择的FEC参数集412以及页420是否被认为是已损坏页420的指示。
一旦写入所存储码字430,闪存控制器404就可检索和读取所存储数据以验证所存储数据的准确性。例如,解码器414可以对所检索码字438进行解码。差错校验器416可执行FEC校验以确定是否已发生了写失败。差错校验器416可比较基于FEC码422的FEC比特432以获得页差错率442。例如,差错校验器416可检测写失败,并且可使用FEC码422来估计页差错率442。应注意,页差错率442也可被称为比特差错率。
在一种配置中,特定类型的线性FEC码422可按使得可基于输入比特的某一部分(例如,源信息比特428)来计算每个FEC比特432(例如,该计算可涉及对不同位置的输入比特子集进行XOR(异或)运算)的方式来产生FEC比特432(也被称为奇偶校验比特)。在执行读操作时,可基于输入数据比特来重新计算新FEC比特432并与闪存设备上的所存储FEC比特432进行比较。以此方式,所存储FEC比特432和新FEC比特432的差异数目可被计数并且此差异数目可指示比特差错率(例如,页差错率442)的程度。
在一些情景中,闪存的给定页420可包括多个FEC码字。每个码字可具有其自己的奇偶校验比特(例如,FEC比特432)。因此,比特差错的总数可通过聚集来自页420内的FEC码字的所有比特差错来估计。即使在当前页420仍可被正确解码但所估计的页差错率442被认为过于靠近不可解码区域时,可发生FEC编码参数(例如,FEC参数集412)的适配。在此情形中,闪存控制器404可提前通过选取较强FEC参数集412来增大冗余度。
在另一配置中,FEC参数集412适配也可在读操作之后发生。例如,闪存控制器404可执行读操作,其中页420中的所估计比特差错率(例如,页差错率442)被认为过高从而继续使用是不安全的。在此情形中,闪存控制器404可为当前页420选取另一FEC参数集412。闪存控制器404可附加地将一个或多个降级的闪存页420与当前页420组合以形成逻辑页324并且将当前页420中的数据的某些部分重定位到组合逻辑页324。
如果页差错率442高于最大差错率阈值440,则页420被确定为过于受损而不能可靠地存储数据。闪存控制器404可将已损坏页420标记为受损并且逻辑地重新映射闪存406,以使得已损坏页420不再被使用。然而,如果页差错率442低于最大差错率阈值440,则在向FEC码422添加更大冗余度的情况下,页420仍可被可靠地使用。
动态FEC参数选择器410可基于页差错率442来选择FEC参数集412。动态FEC参数选择器410可包括多个FEC参数集412a-n,其可向FEC码422提供增大的冗余度。例如,在闪存406寿命周期的开始,页420可以第一FEC参数集412a开始,第一FEC参数集412a提供最高容量和最低纠错能力。随后,取决于页差错率442,动态FEC参数选择器410可选择提供比第一FEC参数集412a大的冗余度的新FEC参数集412。动态FEC参数选择器410可基于页差错率442来选择将提供可靠数据存储的FEC参数集412。源信息比特428可用新FEC参数集412来编码并且所存储码字430可被存储到闪存406的已损坏页420。闪存控制器404还可将用来编码源信息比特的新FEC参数集412存储到元数据436。
映射模块418可将多个已损坏页420组合成单个逻辑页324。在一种配置中,操作系统可要求期望页大小444。然而,由于已损坏页420的容量可能因与新FEC参数集412相关联的增大冗余度而减小,因此已损坏页420的可用数据字节434可能小于期望页大小444。例如,期望页大小444可以为4096字节,但由于降级和FEC操作,已损坏页420的可用数据字节434可能仅为2048字节。
映射模块418可将已损坏页420与闪存406中的至少一个附加已损坏页420映射到具有期望页大小444的单个逻辑页324。在一种配置中,映射模块418可包括部分降级页列表446,其可在差错校验器416关于当前FEC参数集412的差错率检测到比FEC阈值高的所估计差错率时被填充与已损坏页420相关联的条目。部分降级页列表446还可包括关于已损坏页420的可用数据字节434的信息。映射模块418还可包括逻辑页信息表448,其可包括逻辑页ID和被映射到特定逻辑页324的每个已损坏页420的地址。
图5是解说用于向闪存406写入数据的方法500的流程图。方法500可由闪存控制器404来执行。闪存控制器404可向当前页420执行(502)写操作。例如,闪存控制器404可使用前向纠错(FEC)码422来编码源信息比特428以产生所存储码字430。闪存控制器404可基于当前FEC参数集412用FEC比特432来编码源信息比特428。闪存控制器404可将经编码源信息比特428(例如,所存储码字430)写到闪存406中的当前页420。
闪存控制器404可获得(504)页差错率442。一旦向当前页420写入内容(例如,所存储码字430),闪存控制器404就可通过读回该内容(例如,所检索码字438)来获得(504)页差错率442并且可使用FEC码422来执行差错率估计。在一种配置中,闪存控制器404可将所存储的FEC比特432与基于FEC码422新计算出的FEC比特(从存储在可用数据字节434中的数据比特获得)以获得(504)页差错率442。闪存控制器404可将页420的所估计比特差错率(例如,页差错率442)与FEC参数集412所关联的预定FEC阈值集进行比较(506)。例如,如果所估计页差错率442小于1%,则将使用具有最小冗余度的第一FEC编码参数(例如,第一FEC参数集412a);如果所估计页差错率442大于1%但小于2%,则将使用第二FEC编码参数(例如,第二FEC参数集412b);等等。并且最终,如果所估计页差错率442大于最大差错率阈值440,则闪存控制器404可将当前页420标记(508)为坏的并且当前页420将不再被使用。在一种配置中,最大差错率阈值440可以为10%的所估计比特差错率。然而,如果页差错率442小于最大差错率阈值440,则当前页420仍可被使用。
如果闪存控制器404确定(506)页差错率442小于最大差错率阈值440,则闪存控制器404可基于页差错率442选择(510)与FEC参数集412相关联的FEC编码率。对应于给定页差错率442的FEC编码率被设计成使得闪存控制器404即使在有更多差错的情况下也几乎能确保成功解码。在一种配置中,这可通过在编码期间添加更大冗余度(例如,向源信息比特428添加更多FEC比特432)来完成。闪存控制器404可向当前页420的元数据436写入(512)FEC信息。FEC信息可包括所使用的FEC码422和所选FEC参数集412(包括FEC编码率)。
在使用所估计页差错率442(例如,页420的比特差错率)确定FEC参数集412(例如,FEC编码参数)之后,闪存控制器404可确定(514)页420中的可用数据字节434的量是否小于期望页大小444。如果页420中的可用数据字节434的量大于或等于期望页大小444,则页420容量(例如,可用数据字节434)符合操作系统的期望。因此,闪存控制器404可在不与其它页420进行映射的情况下使用(516)该页420。然而,如果闪存控制器404确定(514)页420中的可用数据字节434的数目小于期望页大小444(包括FEC比特432),则闪存控制器404可将页420与一个或多个部分降级页420进行编组(例如,映射)。
闪存控制器404可将页ID记录(518)到部分降级页列表446。页ID可以是闪存406中的当前页420的地址或者其它唯一性标识符。部分降级页列表446可按与部分降级页列表446中的每一页420相关联的可用数据字节434的数目来排序。
闪存控制器404可将当前页420与另一个部分降级页420进行编组(520)。在一种配置中,闪存控制器404可搜索另一个部分降级页420以与当前页420进行编组(520),其中可用数据字节434的总和超过期望页大小444达最小量。例如,闪存控制器104可在部分降级页列表446中搜索另一个部分降级页420以与当前页420进行编组(520)。如果闪存控制器404确定(522)可用数据字节434的总和小于期望页大小444,则闪存控制器404可将至少一个其它部分降级页420与已编组页420进行编组(524)。在一种配置中,闪存控制器404可向该组添加单个附加的部分降级页420。在另一配置中,闪存控制器404可向该组添加成对的部分降级页420。在又一配置中,闪存控制器404可以按2的幂来添加部分降级页420(例如,该组可包括2、4、8、16个等部分降级页420)。
如果已编组页420的可用数据字节434的总和大于或等于期望页大小444,则闪存控制器404可在逻辑页信息表448中记录(526)编组信息。已编组页420可被组合成单个逻辑页324,该单个逻辑页324可作为具有期望页大小444的块呈现给操作系统。因此,逻辑页信息表448中的每个条目可以用于单独的逻辑页324并且可包括逻辑页ID以及被一起映射以形成逻辑页324的每个物理页420的地址。
闪存控制器404可向所有已编组页420的元数据436记录(528)编组信息。闪存控制器404可向形成逻辑页324的所有物理页420记录(528)相同逻辑页号、指示物理页420在该组中的次序的子页号、该组中下一子页的地址以及当前物理页420中所存储数据字节的数目。此编组信息连同FEC信息一起可被写入页420的备用区域(例如,元数据436)。
图6是解说用于从逻辑页324读取数据的方法600的流程图。方法600可由闪存控制器404来执行。闪存控制器404可开始(602)对逻辑页324的读操作。读操作可在闪存控制器404接收到对存储在逻辑页324中的数据的请求(例如来自操作系统)时发起。逻辑页324可包括多个部分降级页420,该多个部分降级页420被一起映射以形成逻辑页324,如以上结合图5描述的。
闪存控制器404可基于逻辑页ID来查找(604)形成逻辑页324的物理页420。例如,闪存控制器404可包括逻辑页信息表448,逻辑页信息表448包括关于每个逻辑页324的条目。逻辑页信息表448中的条目可包括逻辑页ID以及被组合以形成逻辑页324的每个物理页420的地址。通过在逻辑页信息表448中查找(604)逻辑页ID,闪存控制器404可确定闪存406中的哪些物理页420形成逻辑页324。
闪存控制器404可读取(606)关于形成逻辑页324的每个物理页420的FEC信息和元数据436。FEC信息可包括用来编码源信息比特428的FEC码422和所选FEC参数集412(包括FEC编码率)。应注意,根据本文所描述的系统和方法,被选择的FEC参数集412可取决于页420被损坏多少而改变。因此,形成逻辑页324的物理页420中的每一个可具有相同或不同的FEC参数集412。元数据436可包括编组信息,诸如逻辑页号、指示物理页420在该组中的次序的子页号、该组中下一子页的地址以及当前物理页420中所存储数据字节的数目。
闪存控制器404可基于与每个物理页420相关联的FEC信息和元数据436来解码(608)每个物理页420中的数据。存储在页420中的FEC信息和元数据436可向闪存控制器404指示如何解码(608)存储在页420中的数据。例如,闪存控制器404可向FEC码422应用FEC参数集412以正确解码(608)每个物理页420中的数据。
闪存控制器404可组合(610)从每个物理页420解码出的数据。在一种配置中,闪存控制器404可基于元数据436中所包括的编组信息来组合(610)解码出的数据。例如,编组信息可指示已编组页420中所存储的数据安排。因此,编组信息可允许闪存控制器404根据从每个物理页420解码出的数据来重构源信息比特428。一旦组合(610)解码出的数据,闪存控制器404就可递送(612)所组合数据。闪存控制器404可将所组合数据递送(612)给对所存储数据作出请求的操作系统或用户应用。
图7是解说闪存106中已损坏页720的另一配置的框图。已损坏页720可包括FEC比特732、可用数据字节734、元数据736和已损坏数据字节750。FEC比特732可被闪存控制器104用在前向纠错(FEC)中。FEC比特732的量可取决于所使用的FEC参数集112而改变。
已损坏页720中的可用数据字节734可被用来存储数据(例如,源信息比特428)。可用数据字节734的数目可改变。例如,已损坏数据字节750和FEC比特732可减少可用数据字节734的数目。
元数据736可包括关于数据如何被存储在已损坏页720中的信息。如上所述,元数据736可包括FEC信息752,FEC信息752指示被用来编码源信息比特428的FEC码122以及为页720选择的FEC参数集112。元数据736还可包括已损坏页指示符754,已损坏页指示符754可指示页720是否被认为是已损坏页720。
元数据736可进一步包括可用存储器指示符756,可用存储器指示符756指示页720的可用数据字节734以及已损坏数据字节750的量。在一种配置中,可用存储器指示符756可将可用数据字节734和已损坏数据字节750的量表达为数字。例如,可用数据字节734可被表达为X个字节,而已损坏数据字节750可被表达为Y个字节。在另一配置中,可用存储器指示符756可将可用数据字节734和已损坏数据字节750的量表达为可用存储器的百分比(或比率)。例如,可用数据字节734可除以已损坏页720的总容量以获得可用存储器的百分比。替换地,已损坏数据字节750可除以可用数据字节734以获得已损坏和可用存储器的比率。在另一配置中,可用存储器指示符756可被存储在闪存控制器104而非已损坏页720中。
可用存储器指示符756可基于FEC编码参数(例如,FEC参数集412)和页420中可用数据字节434的总数来确定。FEC编码参数可基于所估计的页差错率442来确定。例如,当闪存控制器404读回所存储数据以验证所存储数据的准确性时,闪存控制器404可比较基于FEC码422的FEC比特732以获得所估计页差错率442。闪存控制器404可随后基于所估计页差错率442和将给定编码差错率(例如,页差错率442)映射到特定FEC编码参数的预定FEC阈值集来确定FEC编码参数。基于FEC编码参数和页420中可用的总比特(包括数据比特434和FEC比特432两者),闪存控制器404可随后确定可用数据字节734的数目。
应注意,不需要将特定比特区分为已损坏或可用。由于读/写操作是基于FEC的,因此闪存控制器104可以仅需要知晓所估计比特差错是否可由所选FEC码112纠正。如果比特差错是可纠正的,则解码后的读结果将是正确的。在此过程中,可预算一些净空,从而所选FEC码112将不仅纠正页中的现有差错比特,而且还处置将来的更多差错比特。
图8是解说用于控制闪存106的另一方法800的流程图。方法800可由闪存控制器104来执行。在一些配置中,结合图8描述的闪存控制器104可以根据结合图1描述的闪存控制器104来实现。例如,闪存控制器104可使用FEC码122和所选FEC参数集112来编码源信息比特428。
闪存控制器104可将数据写(802)到闪存106中的页120。这可以如结合图1所描述的那样来完成。
闪存控制器104可确定(804)可用存储器指示符756,可用存储器指示符756指示可用数据字节434和已损坏数据字节750的量。例如,当闪存控制器104读回所存储数据以验证所存储数据的准确性时,闪存控制器104可比较基于FEC码122的FEC比特432以获得页差错率442。闪存控制器104可基于页差错率442来确定可用数据字节434和已损坏数据字节750的量。这可以如以上结合图7所描述的那样来完成。例如,当闪存控制器104读回所存储数据以验证所存储数据的准确性时,闪存控制器104可比较基于FEC码122的FEC比特432以获得所估计页差错率442。闪存控制器104可随后基于所估计页差错率442和将给定编码差错率(例如,页差错率442)映射到特定FEC编码参数的预定FEC阈值集来确定FEC编码参数。基于FEC编码参数和页420中可用的总比特(包括数据比特434和FEC比特432两者),闪存控制器404可随后确定可用数据字节434的数目。
闪存控制器104可存储(806)可用存储器指示符756。在一种配置中,可用存储器指示符756可被存储在页720的元数据736中,如以上结合图7所述。在另一配置中,可用存储器指示符756可被存储在位于闪存控制器104中的列表或表中。例如,闪存控制器104可存储闪存406中的页120的列表。闪存控制器104还可存储与页120列表中的特定页120相关联的可用存储器指示符756。如果闪存控制器104执行后续写操作,则闪存控制器104可再次确定可用存储器指示符756并且可更新可用存储器指示符756的所存储值。附加或替换地,如果闪存控制器104执行从页120的后续读操作,则闪存控制器104可再次确定可用存储器指示符756并且可更新可用存储器指示符756的所存储值。例如,一旦执行后续写操作或后续读操作,闪存控制器104就可基于该写或读操作来估计页差错率442。闪存控制器104可基于页差错率442来更新可用存储器指示符756的所存储值。
闪存控制器104可基于可用存储器指示符756来确定(808)是否要在页120中存储附加数据。以此方式,闪存控制器104可快速确定(808)是否要使用页120来存储附加数据。在一种配置中,当执行写操作时,闪存控制器104可首先查找可用存储器指示符756以确定页120是否具有期望页大小444。如果页120的可用数据字节434的数目小于期望页大小444,则闪存控制器104可以在不将页120与其它部分降级页进行映射的情况下不使用页120,如上所述。
在另一配置中,可用存储器指示符756可指示页120的可用容量(例如,可用数据字节434)小于期望页大小444,但如果可用容量足以存储附加数据,则闪存控制器104可向页120存储附加数据。因此,如果数据小于可用存储器指示符756所指示的可用容量,则闪存控制器104可向已损坏页120存储数据,即使已损坏页120具有小于操作系统的期望页大小444。这可包括使用操作系统与硬件控制器之间的软件接口,以及将关于要存储的文件的信息从操作系统传递给闪存控制器104。在一种配置中,所传递的信息可以是应用软件所使用的文件的实际大小且可由操作系统识别。
图9解说了可被包括在电子设备902内的某些组件。电子设备902可以根据以上所述的电子设备102中的一者或多者来实现。电子设备902包括处理器909。处理器909可以是通用单芯片或多芯片微处理器(例如,ARM)、专用微处理器(例如,数字信号处理器(DSP))、微控制器、可编程门阵列等。处理器909可被称为中央处理单元(CPU)。尽管在图9的电子设备902中仅示出了单个处理器909,但在替换配置中,可以使用处理器的组合(例如,ARM和DSP)。
电子设备902还包括与处理器909处于电子通信中的存储器903(即,处理器909可从存储器903读信息和/或向存储器903写信息)。存储器903可以是能够存储电子信息的任何电子组件。存储器903可以是随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光学存储介质、RAM中的闪存设备、随处理器包括的板载存储器、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除PROM(EEPROM)、寄存器等等,包括其组合。
数据905a和指令907a可被存储在存储器903中。指令907a可包括一个或多个程序、例程、子例程、函数、规程等。指令907a可包括单条计算机可读语句或许多计算机可读语句。指令907a可由处理器909执行以实现上述方法中的一种或多种方法。执行指令907a可涉及使用存储在存储器903中的数据905a。图9示出一些指令907b和数据905b被加载到处理器909中。
电子设备902还可包括发射机915和接收机917,以允许在电子设备902与远程位置(例如,基站或其他电子设备)之间进行信号传送和接收。发射机915和接收机917可被合称为收发机913。天线911可电耦合至收发机913。电子设备902还可包括(未示出)多个发射机、多个接收机、多个收发机、和/或多个天线。
电子设备902的各个组件可通过一条或多条总线耦合在一起,总线可包括电源总线、控制信号总线、状态信号总线、数据总线等。为简单化起见,图9中将各种总线解说为总线系统919。
在以上描述中,有时结合各种术语使用了参考标记。在结合参考标记使用术语的场合,这可以旨在引述在附图中的一幅或更多幅图中示出的特定元件。在不带参考标记地使用术语的场合,这可以旨在泛指该术语而不限于任何特定附图。
术语“确定”广泛涵盖各种各样的动作,并且因此“确定”可包括演算、计算、处理、推导、调研、查找(例如,在表、数据库或其他数据结构中查找)、探明、和类似动作。另外,“确定”还可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)、和类似动作。另外,“确定”可包括解析、选择、选取、建立、和类似动作等等。
除非明确另行指出,否则短语“基于”并非意味着“仅基于”。换言之,短语“基于”描述“仅基于”和“至少基于”两者。
术语“耦合”及其任何变型可指示元素之间的直接或间接连接。例如,耦合到第二元素的第一元素可直接连接到第二元素或通过另一元素间接连接到第二元素。
术语“处理器”应被宽泛地解读为涵盖通用处理器、中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、控制器、微控制器、状态机,等等。在某些情况下,“处理器”可以是指专用集成电路(ASIC)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)等。术语“处理器”可以是指处理设备的组合,例如数字信号处理器(DSP)与微处理器的组合、多个微处理器、与数字信号处理器(DSP)核心协作的一个或多个微处理器、或任何其他这类配置。
术语“存储器”应被宽泛地解读为涵盖能够存储电子信息的任何电子组件。术语存储器可以是指各种类型的处理器可读介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、可编程只读存储器(PROM)、可擦式可编程只读存储器(EPROM)、电可擦式PROM(EEPROM)、闪存、磁或光学数据存储、寄存器等等。如果处理器能从存储器读信息和/或向存储器写信息,则认为该存储器与该处理器正处于电子通信中。整合到处理器的存储器与该处理器处于电子通信中。
术语“指令”和“代码”应被宽泛地解读为包括任何类型的计算机可读语句。例如,术语“指令”和“代码”可以是指一个或多个程序、例程、子例程、函数、规程等。“指令”和“代码”可包括单条计算机可读语句或许多条计算机可读语句。
本文中描述的各功能可以作为一条或多条指令存储在处理器可读介质或计算机可读介质上。术语“计算机可读介质”是指能被计算机或处理器访问的任何可用介质。作为示例而非限定,此类介质可包括RAM、ROM、EEPROM、闪存、CD-ROM或其他光盘储存、磁盘储存或其他磁储存设备、或任何其他能够用于存储指令或数据结构形式的期望程序代码且能由计算机访问的介质。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和碟,其中盘常常磁性地再现数据而碟用激光来光学地再现数据。应注意,计算机可读介质可以是有形且非瞬态的。术语“计算机程序产品”是指计算设备或处理器结合可由该计算设备或处理器执行、处理或计算的代码或指令(例如,“程序”)。如本文中所使用的,术语“代码”可以是指可由计算设备或处理器执行的软件、指令、代码或数据。
软件或指令还可以在传输介质上传送。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波等无线技术从web站点、服务器或其它远程源传送而来的,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电以及微波等无线技术就被包括在传输介质的定义里。
本文所公开的方法包括用于实现所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非所描述的方法的正确操作要求步骤或动作的特定次序,否则便可改动具体步骤和/或动作的次序和/或使用而不会脱离权利要求的范围。
将理解,权利要求并不被限定于以上所解说的精确配置和组件。可在本文中所描述的系统、方法、和装置的布局、操作及细节上作出各种改动、变化和变型而不会脱离权利要求的范围。
Claims (62)
1.一种用于控制闪存的方法,包括:
选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集;
在对所述闪存中的第一已损坏页的写操作期间使用所述新FEC参数集来编码源信息比特;以及
将所述第一已损坏页和所述闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
2.如权利要求1所述的方法,其特征在于,所述选择是响应于对所述第一已损坏页的写失败或者在从所述第一已损坏页的读操作期间所估计页差错率超过FEC阈值时执行的。
3.如权利要求1所述的方法,其特征在于,所述选择包括从多个FEC参数集当中选择所述新FEC参数集,所述多个FEC参数集中的每个FEC参数集提供不同量的冗余度。
4.如权利要求1所述的方法,其特征在于,所述新FEC参数集与所述当前FEC参数集相比每页具有更高数目的能被纠正的比特差错。
5.如权利要求1所述的方法,其特征在于,进一步包括在所述第一已损坏页中存储所述新FEC参数集以及在所述至少一个附加已损坏页中存储另一FEC参数集。
6.如权利要求1所述的方法,其特征在于,进一步包括在所述第一已损坏页和所述至少一个附加已损坏页中存储映射指示符,所述映射指示符指示从所述第一已损坏页和所述至少一个附加已损坏页到所述单个逻辑页的映射。
7.如权利要求1所述的方法,其特征在于,进一步包括在所述第一已损坏页和所述至少一个附加已损坏页中存储次序信息,所述次序信息指示存储在所述第一已损坏页和所述至少一个附加已损坏页中的数据安排。
8.如权利要求1所述的方法,其特征在于,进一步包括基于所接收到的指令对所述单个逻辑页读和写数据。
9.如权利要求1所述的方法,其特征在于,进一步包括:
将所述第一已损坏页记录到部分降级页列表;
在所述部分降级页列表中搜索所述至少一个附加已损坏页;
确定所述第一已损坏页和所述至少一个附加已损坏页的可用数据字节总和大于或等于所述期望页大小;
在逻辑页信息表中记录编组信息;以及
将所述编组信息记录到所述第一已损坏页和所述至少一个附加已损坏页的元数据。
10.如权利要求1所述的方法,其特征在于,进一步包括维持所述单个逻辑页的接口一致性。
11.如权利要求1所述的方法,其特征在于,进一步包括估计页差错率,并且其中选择所述新FEC参数集是基于所述页差错率的。
12.一种用于控制闪存的电子设备,包括:
处理器;
与所述处理器处于电子通信中的存储器;以及
存储在所述存储器中的指令,所述指令能由所述处理器执行以:
选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集;
在对所述闪存中的第一已损坏页的写操作期间使用所述新FEC参数集来编码源信息比特;以及
将所述第一已损坏页和所述闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
13.如权利要求12所述的电子设备,其特征在于,所述选择是响应于对所述第一已损坏页的写失败或者在从所述第一已损坏页的读操作期间所估计页差错率超过FEC阈值时执行的。
14.如权利要求12所述的电子设备,其特征在于,所述选择包括能执行以从多个FEC参数集当中选择所述新FEC参数集的指令,所述多个FEC参数集中的每个FEC参数集提供不同量的冗余度。
15.如权利要求12所述的电子设备,其特征在于,所述新FEC参数集与所述当前FEC参数集相比每页具有更高数目的能被纠正的比特差错。
16.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以在所述第一已损坏页中存储所述新FEC参数集以及在所述至少一个附加已损坏页中存储另一FEC参数集的指令。
17.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以在所述第一已损坏页和所述至少一个附加已损坏页中存储映射指示符的指令,所述映射指示符指示从所述第一已损坏页和所述至少一个附加已损坏页到所述单个逻辑页的映射。
18.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以在所述第一已损坏页和所述至少一个附加已损坏页中存储次序信息的指令,所述次序信息指示存储在所述第一已损坏页和所述至少一个附加已损坏页中的数据安排。
19.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以基于所接收到的指令对所述单个逻辑页读和写数据的指令。
20.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以用于以下操作的指令:
将所述第一已损坏页记录到部分降级页列表;
在所述部分降级页列表中搜索所述至少一个附加已损坏页;
确定所述第一已损坏页和所述至少一个附加已损坏页的可用数据字节总和大于或等于所述期望页大小;
在逻辑页信息表中记录编组信息;以及
将所述编组信息记录到所述第一已损坏页和所述至少一个附加已损坏页的元数据。
21.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以维持所述单个逻辑页的接口一致性的指令。
22.如权利要求12所述的电子设备,其特征在于,进一步包括能执行以估计页差错率的指令,并且其中选择所述新FEC参数集是基于所述页差错率的。
23.一种用于控制闪存的计算机程序产品,包括其上具有指令的非瞬态有形计算机可读介质,所述指令包括:
用于使电子设备选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集的代码;
用于使所述电子设备在对所述闪存中的第一已损坏页的写操作期间使用所述新FEC参数集来编码源信息比特的代码;以及
用于使所述电子设备将所述第一已损坏页和所述闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页的代码。
24.如权利要求23所述的计算机程序产品,其特征在于,所述选择是响应于对所述第一已损坏页的写失败或者在从所述第一已损坏页的读操作期间所估计页差错率超过FEC阈值时执行的。
25.如权利要求23所述的计算机程序产品,其特征在于,所述选择包括用于使所述电子设备从多个FEC参数集当中选择所述新FEC参数集的代码,所述多个FEC参数集中的每个FEC参数集提供不同量的冗余度。
26.如权利要求23所述的计算机程序产品,其特征在于,进一步包括用于使所述电子设备在所述第一已损坏页中存储所述新FEC参数集以及在所述至少一个附加已损坏页中存储另一FEC参数集的代码。
27.如权利要求23所述的计算机程序产品,其特征在于,进一步包括用于使所述电子设备基于所接收到的指令对所述单个逻辑页读和写数据的代码。
28.一种用于控制闪存的电子设备,包括:
电路系统,其被配置成:选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集,在对所述闪存中的第一已损坏页的写操作期间使用所述新FEC参数集来编码源信息比特,以及将所述第一已损坏页和所述闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页。
29.如权利要求28所述的电子设备,其特征在于,所述选择是响应于对所述第一已损坏页的写失败或者在从所述第一已损坏页的读操作期间所估计页差错率超过FEC阈值时执行的。
30.如权利要求28所述的电子设备,其特征在于,所述选择包括被配置成从多个FEC参数集当中选择所述新FEC参数集的电路系统,所述多个FEC参数集中的每个FEC参数集提供不同量的冗余度。
31.如权利要求28所述的电子设备,其特征在于,进一步包括被配置成在所述第一已损坏页中存储所述新FEC参数集以及在所述至少一个附加已损坏页中存储另一FEC参数集的电路系统。
32.如权利要求28所述的电子设备,其特征在于,进一步包括被配置成基于所接收到的指令对所述单个逻辑页读和写数据的电路系统。
33.一种用于控制闪存的设备,包括:
用于选择提供比当前前向纠错(FEC)参数集更大的冗余度的新FEC参数集的装置;
用于在对所述闪存中的第一已损坏页的写操作期间使用所述新FEC参数集来编码源信息比特的装置;以及
用于将所述第一已损坏页和所述闪存中的至少一个附加已损坏页映射到具有期望页大小的单个逻辑页的装置。
34.如权利要求33所述的设备,其特征在于,所述选择是响应于对所述第一已损坏页的写失败而执行的。
35.如权利要求33所述的设备,其特征在于,所述选择包括用于从多个FEC参数集当中选择所述新FEC参数集的装置,所述多个FEC参数集中的每个FEC参数集提供不同量的冗余度。
36.如权利要求33所述的设备,其特征在于,进一步包括用于在所述第一已损坏页中存储所述新FEC参数集以及在所述至少一个附加已损坏页中存储另一FEC参数集的装置。
37.如权利要求33所述的设备,其特征在于,进一步包括用于基于所接收到的指令对所述单个逻辑页读和写数据的装置。
38.一种用于控制闪存的方法,包括:
向所述闪存中的页写数据;
确定可用存储器指示符,所述可用存储器指示符指示所述页的可用数据字节和已损坏数据字节的量;
存储所述可用存储器指示符;以及
基于所述可用存储器指示符来确定是否要在所述页中存储附加数据。
39.如权利要求38所述的方法,其特征在于,所述存储包括在所述页中存储所述可用存储器指示符。
40.如权利要求38所述的方法,其特征在于,所述存储包括在闪存控制器中存储所述可用存储器指示符。
41.如权利要求38所述的方法,其特征在于,进一步包括:
执行对所述页的后续写操作或后续读操作;
基于对所述页的所述后续写操作或所述后续读操作来估计页差错率;以及
基于所述页差错率来更新所述可用存储器指示符。
42.如权利要求38所述的方法,其特征在于,所述可用存储器指示符指示所述页的可用数据字节的量小于操作系统的期望页大小。
43.一种用于控制闪存的电子设备,包括:
处理器;
与所述处理器处于电子通信中的存储器;以及
存储在所述存储器中的指令,所述指令能由所述处理器执行以:
向所述闪存中的页写数据;
确定可用存储器指示符,所述可用存储器指示符指示所述页的可用数据字节和已损坏数据字节的量;
存储所述可用存储器指示符;以及
基于所述可用存储器指示符来确定是否要在所述页中存储附加数据。
44.如权利要求43所述的电子设备,其特征在于,所述存储包括能执行以在所述页中存储所述可用存储器指示符的指令。
45.如权利要求43所述的电子设备,其特征在于,所述存储包括能执行以在闪存控制器中存储所述可用存储器指示符的指令。
46.如权利要求43所述的电子设备,其特征在于,进一步包括能执行以用于以下操作的指令:
执行对所述页的后续写操作或后续读操作;
基于对所述页的所述后续写操作或所述后续读操作来估计页差错率;以及
基于所述页差错率来更新所述可用存储器指示符。
47.如权利要求43所述的电子设备,其特征在于,所述可用存储器指示符指示所述页的可用数据字节的量小于操作系统的期望页大小。
48.一种用于控制闪存的计算机程序产品,包括其上具有指令的非瞬态有形计算机可读介质,所述指令包括:
用于使电子设备向所述闪存中的页写数据的代码;
用于使所述电子设备确定可用存储器指示符的代码,所述可用存储器指示符指示所述页的可用数据字节和已损坏数据字节的量;
用于使所述电子设备存储所述可用存储器指示符的代码;以及
用于使所述电子设备基于所述可用存储器指示符来确定是否要在所述页中存储附加数据的代码。
49.如权利要求48所述的计算机程序产品,其特征在于,所述存储包括用于使所述电子设备在所述页中存储所述可用存储器指示符的代码。
50.如权利要求48所述的计算机程序产品,其特征在于,所述存储包括用于使所述电子设备在闪存控制器中存储所述可用存储器指示符的代码。
51.如权利要求48所述的计算机程序产品,其特征在于,进一步包括:
用于使所述电子设备执行对所述页的后续写操作或后续读操作的代码;
用于使所述电子设备基于对所述页的所述后续写操作或所述后续读操作来估计页差错率的代码;以及
用于使所述电子设备基于所述页差错率来更新所述可用存储器指示符的代码。
52.如权利要求48所述的计算机程序产品,其特征在于,所述可用存储器指示符指示所述页的可用数据字节的量小于操作系统的期望页大小。
53.一种用于控制闪存的电子设备,包括:
电路系统,其被配置成:向所述闪存中的页写数据,确定可用存储器指示符,所述可用存储器指示符指示所述页的可用数据字节和已损坏数据字节的量,存储所述可用存储器指示符,以及基于所述可用存储器指示符来确定是否要在所述页中存储附加数据。
54.如权利要求53所述的电子设备,其特征在于,所述存储包括被配置成在所述页中存储所述可用存储器指示符的电路系统。
55.如权利要求53所述的电子设备,其特征在于,所述存储包括被配置成在闪存控制器中存储所述可用存储器指示符的电路系统。
56.如权利要求53所述的电子设备,进一步包括:
被配置成执行以下操作的电路系统:执行对所述页的后续写操作或后续读操作,基于对所述页的所述后续写操作或所述后续读操作来估计页差错率,以及基于所述页差错率来更新所述可用存储器指示符。
57.如权利要求53所述的电子设备,其特征在于,所述可用存储器指示符指示所述页的可用数据字节的量小于操作系统的期望页大小。
58.一种用于控制闪存的设备,包括:
用于向所述闪存中的页写数据的装置;
用于确定可用存储器指示符的装置,所述可用存储器指示符指示所述页的可用数据字节和已损坏数据字节的量;
用于存储所述可用存储器指示符的装置;以及
用于基于所述可用存储器指示符来确定是否要在所述页中存储附加数据的装置。
59.如权利要求58所述的设备,其特征在于,所述存储包括用于在所述页中存储所述可用存储器指示符的装置。
60.如权利要求58所述的设备,其特征在于,所述存储包括用于在闪存控制器中存储所述可用存储器指示符的装置。
61.如权利要求58所述的设备,其特征在于,进一步包括:
用于执行对所述页的后续写操作或后续读操作的装置;
用于基于对所述页的所述后续写操作或所述后续读操作来估计页差错率的装置;以及
用于基于所述页差错率来更新所述可用存储器指示符的装置。
62.如权利要求58所述的设备,其特征在于,所述可用存储器指示符指示所述页的可用数据字节的量小于操作系统的期望页大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710706904.XA CN107451009B (zh) | 2013-04-12 | 2014-04-09 | 用于改进闪存的可靠性和寿命的系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/861,691 US9235468B2 (en) | 2013-04-12 | 2013-04-12 | Systems and methods to improve the reliability and lifespan of flash memory |
US13/861,691 | 2013-04-12 | ||
PCT/US2014/033480 WO2014169028A2 (en) | 2013-04-12 | 2014-04-09 | Systems and methods to improve the reliability and lifespan of flash memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710706904.XA Division CN107451009B (zh) | 2013-04-12 | 2014-04-09 | 用于改进闪存的可靠性和寿命的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105103131A true CN105103131A (zh) | 2015-11-25 |
CN105103131B CN105103131B (zh) | 2018-03-30 |
Family
ID=50729839
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710706904.XA Active CN107451009B (zh) | 2013-04-12 | 2014-04-09 | 用于改进闪存的可靠性和寿命的系统和方法 |
CN201480020496.7A Active CN105103131B (zh) | 2013-04-12 | 2014-04-09 | 用于改进闪存的可靠性和寿命的系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710706904.XA Active CN107451009B (zh) | 2013-04-12 | 2014-04-09 | 用于改进闪存的可靠性和寿命的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9235468B2 (zh) |
EP (2) | EP3121719B1 (zh) |
JP (2) | JP5976979B2 (zh) |
CN (2) | CN107451009B (zh) |
WO (1) | WO2014169028A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423160A (zh) * | 2017-07-24 | 2017-12-01 | 山东华芯半导体有限公司 | 一种提高NAND flash读速度的方法及装置 |
CN109783411A (zh) * | 2018-12-20 | 2019-05-21 | 成都旋极历通信息技术有限公司 | 一种基于fpga的flash阵列控制方法及控制器 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235468B2 (en) | 2013-04-12 | 2016-01-12 | Qualcomm Incorporated | Systems and methods to improve the reliability and lifespan of flash memory |
GB2514354A (en) * | 2013-05-20 | 2014-11-26 | Ibm | Managing storage devices having a lifetime of a finite number of operations |
TWI544492B (zh) * | 2013-12-31 | 2016-08-01 | 慧榮科技股份有限公司 | 電子裝置及其資料維護方法 |
US10078540B2 (en) * | 2014-06-13 | 2018-09-18 | Cisco Technology, Inc. | Accurate and fast in-service estimation of input bit error ratio of low density parity check decoders |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
JP6819319B2 (ja) * | 2017-01-27 | 2021-01-27 | 日本電気株式会社 | 情報処理システムおよび情報処理システムの制御方法 |
CN109508148B (zh) * | 2018-11-09 | 2021-08-10 | 浪潮电子信息产业股份有限公司 | 一种元数据重建方法、装置和计算机可读存储介质 |
TWI731775B (zh) * | 2020-08-24 | 2021-06-21 | 點序科技股份有限公司 | 快閃記憶體的記憶體控制器及其控制方法 |
JP2022049552A (ja) * | 2020-09-16 | 2022-03-29 | キオクシア株式会社 | 半導体装置および方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101868831A (zh) * | 2007-11-21 | 2010-10-20 | 美光科技公司 | 支持速率兼容经穿孔码的存储器控制器 |
CN102568609A (zh) * | 2010-12-08 | 2012-07-11 | 阿沃森特公司 | 用于自主nand刷新的系统和方法 |
US20120284587A1 (en) * | 2008-06-18 | 2012-11-08 | Super Talent Electronics, Inc. | Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
HRPK20010687B3 (en) * | 2001-09-19 | 2005-10-31 | Leskovec Krešo | System and apparatus for safety of the crew and passangers on the public conveyance |
US6961890B2 (en) | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
US7007195B2 (en) * | 2002-03-27 | 2006-02-28 | Intel Corporation | BIOS shadowed small-print hard disk drive as robust, always on, backup for hard disk image & software failure |
ATE504446T1 (de) * | 2002-12-02 | 2011-04-15 | Silverbrook Res Pty Ltd | Totdüsenausgleich |
CN101095115A (zh) * | 2004-11-05 | 2007-12-26 | 数据机器人技术公司 | 存储系统条件指示器和方法 |
JP2007286813A (ja) | 2006-04-14 | 2007-11-01 | Sony Corp | メモリ制御装置、メモリ制御方法 |
JP2008033801A (ja) | 2006-07-31 | 2008-02-14 | Victor Co Of Japan Ltd | メモリデータ管理装置 |
US7739576B2 (en) | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US7669092B2 (en) | 2007-02-26 | 2010-02-23 | Micron Technology, Inc. | Apparatus, method, and system of NAND defect management |
US8122323B2 (en) * | 2007-03-08 | 2012-02-21 | Intel Corporation | Method, apparatus, and system for dynamic ECC code rate adjustment |
KR101497073B1 (ko) | 2008-02-29 | 2015-03-02 | 삼성전자주식회사 | 메모리 셀에 저장되는 데이터의 비트 수를 결정하는 장치 |
US8213229B2 (en) | 2008-08-22 | 2012-07-03 | HGST Netherlands, B.V. | Error control in a flash memory device |
US8296620B2 (en) | 2008-08-26 | 2012-10-23 | Seagate Technology Llc | Data devices including multiple error correction codes and methods of utilizing |
US7996736B2 (en) | 2008-10-26 | 2011-08-09 | Sandisk 3D Llc | Bad page marking strategy for fast readout in memory |
US8566510B2 (en) | 2009-05-12 | 2013-10-22 | Densbits Technologies Ltd. | Systems and method for flash memory management |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
US20110041005A1 (en) * | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System |
US7941696B2 (en) * | 2009-08-11 | 2011-05-10 | Texas Memory Systems, Inc. | Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes |
US8499220B2 (en) | 2009-09-08 | 2013-07-30 | Lsi Corporation | Systems and methods for re-designating memory regions as error code corrected memory regions |
CN101872326B (zh) * | 2010-06-24 | 2012-04-04 | 济南大学 | 一种嵌入式环境下otp闪存的数据存储管理方法 |
JP4806089B1 (ja) | 2010-06-30 | 2011-11-02 | 株式会社東芝 | 情報処理装置、raidコントローラカード、およびミラーリング方法 |
JP2012084127A (ja) * | 2010-09-15 | 2012-04-26 | Toshiba Corp | 半導体装置 |
US20120254686A1 (en) * | 2010-10-01 | 2012-10-04 | SIGLEAD Inc. | Non-volatile semiconductor memory devices and error correction methods |
US8572466B2 (en) | 2011-06-06 | 2013-10-29 | Micron Technology, Inc. | Apparatuses, systems, devices, and methods of replacing at least partially non-functional portions of memory |
JP5764392B2 (ja) * | 2011-06-13 | 2015-08-19 | 株式会社メガチップス | メモリコントローラ |
US9329948B2 (en) * | 2012-09-15 | 2016-05-03 | Seagate Technology Llc | Measuring cell damage for wear leveling in a non-volatile memory |
US9235468B2 (en) | 2013-04-12 | 2016-01-12 | Qualcomm Incorporated | Systems and methods to improve the reliability and lifespan of flash memory |
-
2013
- 2013-04-12 US US13/861,691 patent/US9235468B2/en active Active
-
2014
- 2014-04-09 CN CN201710706904.XA patent/CN107451009B/zh active Active
- 2014-04-09 WO PCT/US2014/033480 patent/WO2014169028A2/en active Application Filing
- 2014-04-09 EP EP16184115.0A patent/EP3121719B1/en active Active
- 2014-04-09 JP JP2016507632A patent/JP5976979B2/ja active Active
- 2014-04-09 CN CN201480020496.7A patent/CN105103131B/zh active Active
- 2014-04-09 EP EP14724266.3A patent/EP2984569B1/en active Active
-
2015
- 2015-10-14 US US14/882,603 patent/US9778861B2/en active Active
-
2016
- 2016-07-13 JP JP2016138292A patent/JP6257708B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101868831A (zh) * | 2007-11-21 | 2010-10-20 | 美光科技公司 | 支持速率兼容经穿孔码的存储器控制器 |
US20120284587A1 (en) * | 2008-06-18 | 2012-11-08 | Super Talent Electronics, Inc. | Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear |
CN102568609A (zh) * | 2010-12-08 | 2012-07-11 | 阿沃森特公司 | 用于自主nand刷新的系统和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423160A (zh) * | 2017-07-24 | 2017-12-01 | 山东华芯半导体有限公司 | 一种提高NAND flash读速度的方法及装置 |
CN107423160B (zh) * | 2017-07-24 | 2020-04-17 | 山东华芯半导体有限公司 | 一种提高NAND flash读速度的方法及装置 |
CN109783411A (zh) * | 2018-12-20 | 2019-05-21 | 成都旋极历通信息技术有限公司 | 一种基于fpga的flash阵列控制方法及控制器 |
CN109783411B (zh) * | 2018-12-20 | 2022-05-17 | 成都旋极历通信息技术有限公司 | 一种基于fpga的flash阵列控制方法及控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN105103131B (zh) | 2018-03-30 |
EP2984569A2 (en) | 2016-02-17 |
US9778861B2 (en) | 2017-10-03 |
WO2014169028A2 (en) | 2014-10-16 |
US9235468B2 (en) | 2016-01-12 |
US20160034207A1 (en) | 2016-02-04 |
CN107451009B (zh) | 2020-09-29 |
WO2014169028A3 (en) | 2015-03-19 |
JP6257708B2 (ja) | 2018-01-10 |
EP3121719A1 (en) | 2017-01-25 |
JP2016194952A (ja) | 2016-11-17 |
JP5976979B2 (ja) | 2016-08-24 |
US20140310573A1 (en) | 2014-10-16 |
EP2984569B1 (en) | 2017-03-01 |
CN107451009A (zh) | 2017-12-08 |
EP3121719B1 (en) | 2018-01-31 |
JP2016514883A (ja) | 2016-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105103131A (zh) | 用于改进闪存的可靠性和寿命的系统和方法 | |
US8429468B2 (en) | System and method to correct data errors using a stored count of bit values | |
US9043678B2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US8862967B2 (en) | Statistical distribution based variable-bit error correction coding | |
US9177664B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
US9286972B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
US9093154B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
US10013179B2 (en) | Reading logical groups of data from physical locations in memory using headers | |
CN103544073A (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
CN101937373A (zh) | 比特错误阈值和重映射存储装置 | |
TW201346923A (zh) | 使用單一錯誤偵測奇偶校驗的抹除修正 | |
CN104283570A (zh) | 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 | |
US9128827B2 (en) | Data modification based on matching bit patterns | |
US11868202B2 (en) | Granular error reporting on multi-pass programming of non-volatile memory | |
CN117632579B (zh) | 存储器控制方法和存储器存储装置 | |
CN113138947B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN116246690A (zh) | 一种eeprom数据可靠性校验方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |