CN102782654A - 用于执行回拷操作的方法和控制器 - Google Patents
用于执行回拷操作的方法和控制器 Download PDFInfo
- Publication number
- CN102782654A CN102782654A CN2010800649962A CN201080064996A CN102782654A CN 102782654 A CN102782654 A CN 102782654A CN 2010800649962 A CN2010800649962 A CN 2010800649962A CN 201080064996 A CN201080064996 A CN 201080064996A CN 102782654 A CN102782654 A CN 102782654A
- Authority
- CN
- China
- Prior art keywords
- data
- controller
- memory device
- address
- flush memory
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
- 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
-
- 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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
Abstract
在此描述的实施例提供用于执行回拷命令的方法和控制器。在一个实施例中,控制器从至少一个闪存器件接收与回拷操作相关的数据和错误校正码。该控制器确定所述错误校正码是否指示在数据中存在错误。如果该错误校正码不指示在数据中存在错误,该控制器向至少一个闪存器件发送从主机接收的目的地地址和回拷编程命令。如果该错误校正码指示在数据中存在错误,该控制器校正该数据并向至少一个闪存器件发送目的地地址、校正后的数据和编程命令。另外的实施例涉及在回拷操作期间修改数据。
Description
技术领域
背景技术
诸如个人计算机的主机通常使用NAND闪存器件来存储数据。例如,主机可以使用诸如开放NAND快闪接口(ONFI)的NAND接口来与NAND闪存器件通信。主机可以向NAND闪存器件发送的命令的一个例子是“回拷(copy-back)”命令。在操作时,主机向NAND闪存器件发送源地址和回拷读取命令,响应于此,所述NAND闪存器件从其非易失性存储器中的该源地址读取数据,并将该数据写到NAND闪存器件内部的寄存器。接下来,主机向NAND闪存器件发送目的地地址和回拷编程命令,响应于此,NAND闪存器件从寄存器读出该数据,并将该数据写到其非易失性存储器中的目的地地址。因为不向主机回送数据,因此,回拷操作避免占用主机和NAND闪存器件之间的通信总线,并避免要求主机来分配处理能力和开销来进行标准读取和编程操作来移动该数据。但是,虽然还移动与数据一起存储的任何错误校正码(ECC)位,但是NAND闪存器件不对该数据进行ECC校验和错误校正。因此,将传播在数据中存在的任何错误。
发明内容
本发明由权利要求限定,且在此部分中的任何内容都不应该被视为是对那些权利要求的限制。
通过介绍,以下描述的实施例提供了用于进行回拷操作的方法和控制器。在一个实施例中,与主机和至少一个闪存器件通信的控制器从主机接收源地址和回拷读取命令。该控制器向所述至少一个闪存器件发送所述源地址和所述回拷读取命令,响应于此,所述至少一个闪存器件从所述源地址读取数据,并将该数据写在所述至少一个闪存器件中的寄存器中。该控制器从所述至少一个闪存器件接收数据和与所述数据相关的错误校正码,并从主机接收目的地地址和回拷编程命令。该控制器确定所述错误校正码是否指示在数据中存在错误。如果所述错误校正码不指示在数据中不存在错误,则该控制器向所述至少一个闪存器件发送所述目的地地址和所述回拷编程命令,响应于此,所述至少一个闪存器件从寄存器读出数据,并将该数据写到所述至少一个闪存器件中的目的地地址。如果该错误校正码指示在数据中存在错误,则该控制器校正该数据并向该至少一个闪存器件发送该目的地地址、校正后的数据以及编程命令。另外的实施例涉及在回拷操作期间修改数据。
公开了其他实施例,且每个实施例可以单独使用或组合在一起使用。现在,将参考附图来描述这些实施例。
附图说明
图1是包括控制器、主机和一个或多个闪存器件的实施例的系统的方框图。
图2A、2B和2C是图示实施例的控制器和闪存器件的不同布置的方框图。
图3是实施例的示例控制器的方框图。
图4是用于向闪存器件写数据和从闪存器件读数据的实施例的控制器的方框图。
图5是实施例的使用控制器在闪存器件中写数据的方法的流程图。
图6是实施例的使用控制器从闪存器件读取数据的方法的流程图。
图7图示用于提供读取状态和空闲块管理控制的实施例的控制器布置。
图8A、8B、8C和8D是可以由图7的控制器生成的数据消息格式的例子。
图9是可用于以图8C的数据消息格式使用的数据字段的实施例。
图10是使用图7的控制器向主机提供状态信息的实施例的方法的流程图。
图11是图示使用图7的控制器来管理空闲块的一个实施例的流程图。
图12A和12B是示例的闪存器件内的好块、坏块和空闲块区域的图示。
图13A-13D是实施例的示例控制器的方框图。
图14是用于进行回拷操作的实施例的方法的流程图。
图15是用于进行其中修改数据的回拷操作的实施例的方法的流程图。
具体实施方式
介绍
以下实施例指向闪存控制器和与其一起使用的方法。在一个实施例中,提供用于执行回拷命令的控制器和方法。在转向该实施例和其他实施例之前,提供示例的控制器架构的一般概述和NAND接口以及NAND接口协议的讨论。
示例的控制器架构
现在转向附图,图1是其中控制器100通过第一接口125与(具有主机控制器121的)主机120通信且通过一个或多个第二接口135与一个或多个闪存器件130通信的一个实施例的系统。(第二接口135的数量可以匹配闪存器件130的数量,或者,第二接口135的数量可以大于或小于闪存器件130的数量(例如,单个第二接口135可以支持多个闪存器件)。)如在此使用的,术语“与……通信”意味着直接与之通信或通过一个或多个组件间接与之通信,该一个或多个组件可能有或可能没有在此示出或描述。
“主机”是能够通过控制器100、直接或者通过在此指出或未指出的一个或多个组件而间接访问一个或多个闪存器件130的任何实体。主机可以采用任何适当的形式,比如但不限于个人计算机、移动电话、游戏设备、个人数字助理(PDA)、电子邮件/文本消息设备、数字相机、数字媒体(例如MP3)播放器、GPS导航设备、个人导航系统(PND)、移动因特网设备(MID)和TV系统。取决于应用,主机120可以采用硬件设备、软件应用或硬件和软件的组合的形式。
“闪存器件”指包含多个闪存单元和用于在闪存单元内存储数据的任何必要控制电路的器件。在一个实施例中,闪存单元是NAND存储器单元,虽然可以使用其他存储器技术,比如无源元件阵列、包括一次可编程存储器元件和/或可重写存储器元件。(应该注意,在这些实施例中,非NAND型闪存器件仍然可以使用NAND接口和/或NAND命令和协议。)无源元件阵列的一个例子是三维存储器阵列。如在此使用的,三维存储器阵列指包括在单个硅衬底之上彼此垂直堆叠的存储器单元的多个层的存储器阵列。以此方式,三维存储器阵列是单片集成电路结构,而不是彼此很靠近地封装或裸片(die)粘合的多个集成电路设备。虽然三维存储器阵列是优选的,但是替代地,该存储器阵列可以采取二维(平面)阵列的形式。通过引用并入的以下专利文献描述了三维存储器阵列的适当配置,其中,将三维存储器阵列配置为多个级,在这些级之间共享字线和/或位线:美国专利号6,034,882、6,185,122、6,420,215、6,631,085和7,081,377。而且,闪存器件130可以是单个存储器裸片或多个存储器裸片。因此,在权利要求中使用的短语“闪存器件”可以仅指一个闪存器件或多于一个闪存器件。
如图1所示,控制器100还包括控制模块140,用于控制该控制器100的操作并基于从主机120接收的命令(例如,读取、写入、擦除等等)和地址来进行存储器操作。如在此使用的,“模块”可以包括硬件、软件、固件或其任意组合。例如,“模块”可以采用的形式的例子包括但不限于微处理器或处理器和存储可由(微)处理器、逻辑门、开关、专用应用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如,软件或固件)的计算机可读介质中的一个或多个。(以下部分提供“模块”可以采用的各种形式的例子。)如图1所示,控制器100可以包括用于提供其他功能、包括但不限于数据加扰、列替换、(经由安全区)处理写入中断和/或编程失败、读取擦洗(scrubbing)、损耗平衡、坏块和/或空闲块管理、错误校正码(ECC)功能、错误检测码(EDC)功能、状态功能、加密功能、错误恢复和地址映射(例如逻辑到物理块的映射)的一个或多个另外的模块150。以下部分提供关于这些功能的更多细节以及其他功能的另外的例子。
虽然控制器100和闪存器件130在图1中示出为分离的框,但是应该注意,控制器100和闪存器件130可以按任何适当的方式布置。图2A、2B和2C是图示控制器和闪存器件的不同布置的方框图。在图2A中,控制器200和闪存器件230被封装在不同封装260、270中。在该实施例中,裸片间接口可以在控制器200和闪存器件230之间相接口。如在此使用的,“裸片间接口”(例如裸片间的NAND接口)可操作以在不同的裸片上存在的电子电路的两个不同单元之间相接口(例如,以提供电子电路的不同单元的必要物理和逻辑架构来例如使用一个或多个具体协议来彼此通信)。因此,裸片间接口包括用于在分离的裸片上存在的电子电路的两个不同单元之间相接口的必要物理元件(例如,焊盘(pad)、输出、输入驱动器等)。
在图2B中,控制器200和闪存器件230都存在于共同的多芯片封装280中。在该实施例中,裸片间接口可以在被制造在两个不同裸片上的控制器200和闪存器件230之间相接口,其中,该两个不同裸片被封装在共同的多芯片封装280中。在图2C中,控制器200和闪存器件230集成在相同裸片290上。作为另一替换,控制器200和/或闪存器件230可以被制造在两个不同裸片上,其中,这些裸片中的一个或两者完全没有封装。例如,在许多应用中,由于需要保留空间,因此在电路板上安装存储器裸片而完全没有封装。
应该注意,在这些布置的每个中,控制器200在物理上位于与主机分离。这允许将控制器200和闪存器件230视为可以在很多种主机中使用的分离的电路单元。
如以上参考图1所述,控制器100使用第一接口125与主机120通信,且使用第二接口135与闪存器件130通信。通常,第一和第二接口125、135可以采用任何适当的形式。但是,在以下结合图3描述的当前优选的实施例中,第一和第二接口125、135两者是使用NAND接口协议的NAND接口。在转到图3之前,以下部分提供NAND接口和NAND接口协议的一般讨论。
NAND接口和NAND接口协议
使用NAND接口协议来使用例如数据线和控制信号、比如ALE (地址锁存使能)、CLE(命令锁存使能)和WE#(写入使能)来协调在NAND闪存器件和主机之间的命令和数据传送。即使术语“NAND接口协议”至今仍没有被标准化主体正式标准化,NAND闪存器件的制造者都遵循用于支持NAND闪存功能的基本子集的非常类似的协议。这样做以便使用消费者的电子产品内的NAND器件的消费者可以使用来自任何制造商的NAND器件,而不必须将其硬件或软件定制为用于与具体厂商的设备一起操作。注意,甚至在功能的该基本子集之外提供额外的功能的NAND厂商也保证提供该基本功能以便至少某种程度上提供与其他厂商使用的协议的兼容性。
如果给定的设备(例如,控制器、闪存器件、主机等)包括支持(例如,用于使用NAND接口协议与另一设备接口的)NAND接口协议所必要的元件(例如,硬件、软件、固件或其任意组合),则认为该给定的设备包括、包含、或具有“NAND接口”。(如在此使用的,术语“接口”可以指单个接口或多个接口。因此,权利要求中的术语“接口”可以指仅一个接口或多于一个接口。)在本申请中,术语“NAND接口协议”(或简写为“NAND接口”)指在发起设备和响应设备之间的接口协议,其通常符合主机和NAND闪存器件之间的用于基本的读取、写入和擦除操作的协议,即使其不完全与所有时序参数兼容,不完全针对NAND器件支持的其他命令兼容,或包含NAND器件不支持的另外的命令。NAND接口协议的一个适当的例子是使用在功能上与当与Toshiba TC58NVG1S3B NAND设备(或Toshiba TC58NVG2D4B NAND设备)相接口用于读取(操作码00H)、写入(操作码80H)和擦除(操作码60H)时使用的字节序列相当的传输的字节的序列、且还使用在功能上与上述NAND器件的CLE、ALE、CE、WE、和RE信号相当的控制信号的接口协议。
注意,NAND接口协议是不对称的在于该主机——不是闪存器件——通过NAND接口发起交互。另外,给定设备(例如,控制器)的接口(例如,NAND接口或与另一协议相关的接口)可以是“主机侧接口”(例如,给定设备适用于使用主机侧接口与主机交互),或者给定设备的接口可以是“闪存器件侧接口”(例如,给定设备适用于使用闪存器件侧接口与闪存器件交互)。在此,可交换地使用术语“闪存器件侧接口”、“快闪器件侧接口和“快闪侧接口”。
这些术语(即,“主机侧接口”和“快闪器件侧接口”)不应该与术语“主机类型接口”和“快闪类型接口”相混淆,它们是在此使用来在NAND接口协议的两侧之间区分的术语,因为该协议不是对称的。另外,因为是主机来发起该交互,所以说,如果给定设备包括用于实现主机侧的NAND接口协议(即,用于呈现NAND主机并发起NAND协议交互)的必要硬件和/或软件,则认为该设备具有“主机类型接口”。类似地,因为快闪器件不发起交互,所以说,如果给定的设备包括用于实现快闪侧的NAND接口协议(即,用于呈现NAND快闪器件)的必要硬件和/或软件,则认为该设备具有“快闪类型接口”。
通常,“主机类型接口”(即,扮演主机的角色的那些接口)是“快闪器件侧接口”(即,它们与快闪器件交互或与模拟快闪器件的硬件交互),而“快闪器件类型接口”(即扮演闪存器件的角色的那些接口)通常是“主机侧接口”(即,它们与主机交互或与模拟主机的硬件交互)。
由于NAND设备的复杂性,可以使用“NAND控制器”来控制NAND设备在电子系统中的使用。能够直接通过主机来操作并使用NAND设备,而没有中间的NAND控制器;但是,这种架构带有许多缺点。首先,主机必须分别操纵NAND设备的控制信号的每一个(例如,CLE或ALE),这对主机是麻烦的且费时的。其次,对错误校正码(ECC)的支持为主机带来负担。至少由于这些原因,“无控制器”的架构通常相对慢且低效。
在一些传统的控制器架构中,NAND控制器使用NAND接口与闪存器件交互,且使用标准的非NAND接口、比如USB或SATA与主机交互。也就是说,在这些传统控制器架构中,NAND控制器不向主机外输(export)NAND接口。确实,有理由认为,因为不具有内置NAND支持并需要外部控制器来达到该目的主机处理器通常不具有NAND接口,且不能直接连接到外输NAND接口的设备,因此,不与主机侧NAND接口一起使用控制器。另一方面,具有内置NAND支持的主机处理器还通常包括内置的NAND控制器,且可以直接连接到NAND器件,因此,不需要外部NAND控制器。
通过引用合并于此的“NAND Flash Memory Controller Exporting aNAND Interface”美国专利号7,631,245公开了新型的NAND控制器,特征在于其外输到主机侧的接口是NAND接口的事实。以此方式,NAND控制器向主机外输由标准ANDN闪存器件外输的相同类型的接口。该控制器还优选还具有在闪存器件侧的NAND接口,其中,该控制器对NAND闪存器件扮演主机的角色,且对主机扮演NAND器件的角色。
外输NAND接口的示例NAND闪存控制器
转到图3,图3是一个实施例的示例控制器300的方框图。如图3所示,控制器300包括用于控制该控制器300的操作的控制模块340,并且可选地包括用于提供其他功能的一个或多个另外的模块350。其他功能的例子包括但不限于数据加扰、列替换、处理写入中断和/或编程失败(经由安全区)、读取擦洗、损耗平衡、坏块和/或空闲块管理、错误校正码(ECC)功能、错误检测码(EDC)功能、状态功能、加密功能、错误恢复和地址映射(例如逻辑到物理块的映射)。以下段落描述这些功能中的一些,且在本文中的稍后的部分描述这些功能中的其它功能。
“数据加扰”或“加扰”是输入位序列到输出位序列的可逆变换,以便输出位序列的每个位是输入位序列和辅助位序列的若干位的函数。在闪存器件中存储的数据可以被加扰,以便通过建立更随机的数据样式来减少依赖于数据样式的敏感度、干扰影响或错误。关于数据加扰的更多信息可以在以下专利文献中找到:美国专利申请号11/808,906、12/209,697、12/251,820、12/165,141和11/876,789以及PCT申请号PCT/US08/88625。
“列替换”指映射或替换整个坏列、列的部分或甚至各个单元的各种实施方式。适当类型的列替换技术可以在美国专利号7,379,330和7,447,066中找到。
在向闪存器件写入时存在若干可能的问题,其中,逻辑或物理相邻的数据在数据试图被写入的位置之外可能被破坏。一个例子是当向存储器的一个区域(例如单元、页或块)的写入失败、且一些周围的存储器的内容可能被破坏时。这被称为“编程失败”或“编程干扰”。已知为“写入中断”的类似效果是当永久终止写入(或编程)时,例如当意外地移除电力时。在这两个情况下,存在可以用于积极主动将数据从“风险区”复制到“安全区”来处理写入中断和编程失败的算法,如在美国专利号6,988,175中描述的。
“读取擦洗”或更通常的“擦洗”指刷新和校正闪存器件中存储的数据来补偿干扰的技术。擦洗操作需要读取可能已接收到对潜在的干扰信号的暴露的区域中的数据以及如果确定该数据已经被干扰了则进行某种校正动作。还在美国专利号7,012,835、7,224,607和7,477,547中描述了读取擦洗。
闪存器件可能被写入得不均匀,且“损耗平衡”指试图均衡存储器单元在其寿命周期中被写入的次数的技术。在美国专利号6,230,233和6,594,183中描述了示例的损耗均衡技术。
通常,闪存器件被制造为具有超额数量(比定义的最小容量更大)的块。无论在工厂测试期间或在使用该器件期间,可能发现某些块为“坏的”或“有缺陷的”,意味着它们不能正确地存储数据,且需要被替换。类似地,可能有超额的“好”块(大于定义的最小容量),它们可以被用作“空闲块”,直到另一块故障或变得有缺陷。保持跟踪这些额外的块已知分别为坏块管理和空闲块管理。关于坏块和空闲块管理的更多信息可以在美国专利号7,171,536中找到。
如上所述,稍后在本文中提供关于这些不同的功能模块的以及如何在示例控制器架构中使用这些不同的功能模块的另外的信息。
转到附图,还如图3所示,控制器300包括用于与一个或多个NAND闪存器件330(例如1-8个存储器裸片)相接口的一个或多个闪存器件侧NAND接口335。另外,注意,闪存器件侧NAND接口335还是主机类型NAND接口(即,其适用于通过NAND接口发起交互,且向NAND闪存器件330呈现主机)。控制器300还包括用于与支持NAND接口协议的(具有主机控制器321的)主机320相接口的主机侧NAND接口325。该主机侧NAND接口325还是闪存类型NAND接口(例如,该控制器300适用于向主机320呈现NAND闪存存储设备)。NAND接口的示例包括但不限于开放NAND快闪接口(ONFI)、拨动(toggle)模式(TM)和高性能闪存接口,比如在美国专利号7,366,029中描述的接口,该专利通过引用合并于此。控制器300可以可选地包括一个或多个另外的主机侧接口,用于将控制器300接口到使用诸如SD、USB、SATA或MMC接口的非NAND接口的主机。而且,接口325、335可以使用相同或不同的NAND接口协议。
应该注意,可以在任何期望的系统环境中使用控制器300和闪存器件330。例如,在一个实施方式中,在固态盘(SSD)中使用被制造为具有一个或多个控制器300/闪存器件330单元的产品。作为另一例子,可以在使用南桥控制器来与闪存器件相接口的OEM设计中使用控制器300。
使用向主机外输NAND接口的NAND闪存控制器有很多优点。为了实现这些优点,首先考虑当前控制器架构的实际情况。当今,存在两种NAND接口:“原始的(raw)”接口和“受管理的”接口。利用原始接口,基本存储器受到像读取、编程和擦除的基本(primitive)命令,期望外部控制器提供诸如ECC、缺陷管理和快闪转换(flash translation)的存储器管理功能。利用受管理接口,通过某种更高级的接口,管理诸如扇区/页/块或文件的逻辑项,且控制器管理存储器管理功能。
但是,“管理”NAND所需的固件集可以被划分为两类。第一类是主要管理主机接口、对象(和读取/修改/写入序列)和缓存的一般快闪软件。这被称为“主机管理”层。第二类是例如进行ECC、数据加扰和具体错误恢复和防止错误技术、如积极主动的读取擦洗并复制较低页块来防止由于写入中断、电力故障和写入错误而导致的数据丢失的闪存专用管理功能。这被称为“器件管理”层。
第一类的软件相对常用,且可以由各个公司、包括OS厂商、芯片组和控制器厂商和嵌入式设备厂商来提供。通常,假设存在可能想要在其设计中使用闪存的M个具体系统/OS/ASIC。第二组可能是个别公司专有的,甚至专用于特定存储器设计和系列。通常,假设有N个不同的存储器特定设计点。当今,这是闪存管理的要么都有要么没有(all or nothing)的方法——购买原始的NAND或受管理的NAND。这也意味着,解决方案必须并入M个系统之一和具有N个存储器器件管理环境之一的主机管理环境。通常,这意味着,(1)具有第二种知识的闪存厂商必须提供解决方案的所有层,包括ASIC控制器和主机接口软件,且对M个不同的主机场合(opportunity)进行M个不同的设计,或者(2)任何独立的ASIC和固件公司很少有机会不进行N个不同的设计而定制其对于特定存储器设计的解决方案,或者(3)两个公司必须一起工作,可能暴露有价值的商业秘密和IP和/或对每个存储器设计实施不同的解决方案。如果M个不同的主机解决方案必须修改来接受任何新存储器设计,这还可能产生进入市场的时间延迟,或反之亦然。
通过使用向主机外输NAND接口的NAND闪存控制器,提供了新的逻辑接口,其使用诸如遗留异步、ONFI或TM的现有物理NAND接口和命令来在原始或物理NAND之上且在逻辑或受管理NAND之下建立新的逻辑接口,建立主机控制器中不需要ECC的“虚拟”原始NAND存储器,且禁用主机ECC(因为需要来自主机的0ECC来保护NAND存储器)。该新的逻辑接口还可以提供在该接口级“之下”的例如数据加扰、擦洗、干扰、安全区处理、损耗平衡、和坏块管理(以仅暴露好块)。
该不同的逻辑接口提供了与标准快闪接口或受管理NAND接口、包括ONFI块抽象(BA)或Toshiba LBA相比的若干优点。例如,可能在不同存储器类型和系列(例如,NAND vs.3D (或NOR)和5Xnm vs.4Xnm vs.3Xnm)之间变化的存储器专用功能的分离允许不同量的ECC、厂商唯一和存储器唯一的机制用于错误防止和校正机制,比如诸如处理干扰和安全区,并允许厂商唯一的算法在控制器和固件内保持“机密”。另外,在该逻辑接口级的技术(或厂商)之间存在更大的共性,这使得能够更快地进入市场。另外,这允许更加接近1∶1命令操作,意味着相比于受管理NAND或其他更高级接口的改进的和更可预测的性能。
存在与该控制器架构相关联的另外的优点。例如,允许存储器技术与主机和该系统的其他部分独立的开发、测试和演进。还可以允许更容易和更快地部署下一代存储器,因为支持这些存储器的改变更局部化。另外,允许存储器制造商保护用于管理原始闪存的秘密算法。而且,页管理可以与文件系统和/或其他逻辑映射集成。因此,与标准外部接口(电和命令集)结合,该架构使得更容易在一代代更透明的原始闪存中进行设计。
使用该架构有至少一个其他次要益处——控制器300在外部接口上仅呈现单个电负载,并驱动MCP内部的原始闪存。这允许在不增加闪存通道的数量情况下的可能更大的系统容量、更高速度的外部接口(由于较少的负载)和对于原始闪存器件的更高速度的内部接口(因为非常紧密控制的内部设计(基板连接)是可能的)。
与该实施例的控制器相关的另一好处是,其可以用于通过使用可能处于不同速度的不同的主机和存储器总线来提供“分离总线”架构(即,在主机和控制器之间的总线可以与控制器和闪存器件之间的总线不同)。(如在此使用,“总线”是具有相同接口的多个器件(例如,芯片或裸片)的电连接。例如,点到点连接是两个器件之间的总线,但大多数接口标准支持使多个器件连接到相同的电总线。)在可能潜在具有数百个闪存器件的固态盘(SSD)中尤其期望该架构。在传统的SSD架构中,当前解决方案是将N个常规闪存器件封装在多芯片包装(MCP)中,但这仍然在总线上建立N个负载,建立了N倍的电容和电感。总线上的负载越多,其操作得越慢。例如,一个当前架构可以支持1-4个器件的80MHz操作,但仅可以支持8-16个器件的40MHz操作。这是与所期望的——如果使用更多的器件,速度越高——相反的。另外,更多的器件表明需要主机和存储器MCP之间的更大的物理分离。例如,如果使用16个封装,它们将按任意拓补(例如,总线或星形(或任意连线)拓补)而延伸相对大的物理距离(例如,几英寸)上。这也降低了任何电接口的潜在性能。因此,为了获得例如300MHz的传输(忽略总线宽度),可以使用四个快速总线或八个慢总线。但是,快速总线每个仅可以支持四个闪存器件,或总共16个器件,这对于当今大多数SSD是不够的。如果这些总线运行得更快,则可以减少接口连接(插脚和模拟接口)的数量,以及可能减少主机中的寄存器和逻辑的量。
因为此实施例中的控制器300将主机和原始闪存器件之间的互连划分为分离的主机侧接口和闪存侧接口,它们之间有缓冲器,因此主机总线具有更少的负载,且可以运行得快两倍或四倍。另外,因为该存储器总线是MCP内部的,因此其由于短距离和涉及的有限负载而可以具有较低的功率、较高的速度和较低的电压。另外,这两个总线可以以不同的频率和不同的宽度而运行(例如,一侧可以使用8位总线,另一侧可以使用16位总线)。
虽然一些架构可以插入标准收发器来对这些总线去耦合(decouple),但是此实施例的控制器300可以使用缓冲,且可以以不同的速度来运行这些接口。这允许控制器300也匹配两个不同速度的总线,例如以140MB/秒运行的闪存侧接口总线和以132或166MB/秒运行的ONFI总线。传统的总线收发器设计将必须在两个总线中挑选较低者,且在此例子中以132MB/秒运行,而此实施例的控制器300可以通过以166MB/秒运行ONFI总线来实现140MB/秒,且基本上具有空置的时段。因此,该实施例的控制器300以潜在较低成本和/或较低功率来提供较高性能,且提供不同产品(例如,不同速度和宽度的主机和存储器总线在典型的系统中的主机上的较少负载(这使能更快操作以及存储器总线带宽与主机接口的聚合)以及具有接口转换的主机和存储器侧的不同接口)之间的接口灵活性。
如上所述,单个控制器还可以具有与闪存器件的多个闪存侧接口335,这还使能在原始存储器器件之间的进一步的并行化以及传输到控制器中,这允许闪存侧接口比主机侧接口325运行得更慢(以及更快)。单个控制器还可以具有多个主机侧接口,这些主机侧接口可以连接到不同的主机控制器接口以允许在访问闪存器件时的更大并行化、共享该控制器、或更好地匹配闪存侧接口的速度(其可能由于上述原因而比主机侧接口更快)。
向主机内输(import)NAND接口的另一好处涉及分布式控制器架构的使用。当今,通常以单级控制器实现闪存器件。在大的固态盘(SSD)中,可能存在数十或甚至数百个闪存器件。在高性能器件中,可能期望并行操作在尽可能多的这些闪存器件中继续,这可能是功率受限的。当今存在600MB/秒的接口规范,且这些仍在增加。实现此级别的性能需要非常快的控制器、存储器和ECC模块。当今,高性能控制器被构造有一个或小数量的ECC模块以及一个或两个微处理器来处理存储器器件管理。因为一些功能对于存储器器件本身是非常局部化的,比如ECC,因此,通过此实施例的控制器300,可以使用两层网络的器件。具体地,主机320可以管理主机接口和逻辑内容的高级映射,一个或多个控制器300可以管理一个或多个原始NAND闪存器件来提供存储器器件功能(例如ECC)的本地管理,且由于控制器300和主机320的并行执行以及在不同存储器320上并行处理不同操作的多个控制器300的并行执行,一个或多个控制器300可以提供在执行这些功能时的并行化。与通过将存储器器件管理功能划分为两层来在一个地点进行这些功能的SSD中的传统控制器相反,该架构可以以两种方式(例如,在主机和从机(slave)之间,以及在许多从机之间)利用并行化性能。这使能更高的总性能级(例如,600MB/秒),而不必须设计可以处理该速率的单个ECC模块或微处理器。
该架构的另一好处是,可以开发原始存储器的更高级的抽象,以便系统开发者不需要知道该存储器的错误恢复或低级的细节,比如ECC和数据加扰,因为可以使用控制器300来进行除了处理诸如读取、擦除和编程干扰以及安全区的存储器专用功能以外的那些功能。在此,此级别的支持被称为“校正的”闪存,其逻辑地位于原始闪存和受管理NAND之间。另一方面,在逻辑级的页或块管理的意义上,该架构不是完全管理的存储器,且可能需要主机来提供页和块的逻辑到物理映射。但是,控制器300仍然可以向主机及其固件呈现一些闪存管理限制,比如:仅完整的页可以被编程,页必须按在块内的顺序被写入,且在必须擦除整个块之前页仅可以被写入一次。还可以由控制器300进行用于保证物理块被近似均匀地使用的物理块的损耗平衡;但是,主机320可以负责提供该功能。而且,控制器300优选为主机320呈现到NAND的页和块中的完整的页读取和写入操作。逻辑页大小和块大小的特征将很可能与基本NAND相同(除非支持部分页操作)。原始NAND中的每个物理页中的空闲区域的大部分将由控制器300使用来用于ECC及其元数据。控制器300可以提供使用的系统可以用来进行元数据管理的较少数量的空闲字节。
涉及检测NAND接口上的传输错误的实施例
参考图3,在通过到主机侧NAND接口325的NAND接口总线从主机320向控制器300发送数据时,可能出现传输错误。因为在控制器300内生成并检验ECC,因此没有ECC保护通过主机侧NAND接口325传输的数据。现在,将结合图4来讨论该问题和提出的解决方案。
图4是用于向一个或多个闪存器件430写入数据和从其读取数据的一个实施例的控制器400的方框图。如图4所示,该实施例中的控制器400包括:第一NAND接口425,被配置以使用NAND接口协议在控制器400和(具有主机控制器421的)主机420之间传输数据;以及第二NAND接口435,被配置以使用NAND接口协议在控制器400和一个或多个闪存器件430之间传输数据。如上所述,每个接口425、435使用的NAND接口协议可以是相同的协议或可以是不同的协议。而且如上所述,控制器400和闪存器件430可以被封装在不同的包装中,两者可以存在于共同的多芯片包装中,或可以集成在相同的裸片上。而且,在一个实施例中,主机420进行逻辑到物理地址映射,因此主机420为控制器400提供经过第一NAND接口425的物理地址以及对该物理地址写入或读取的命令。
在该实施例中,控制器400包括用于控制控制器400的操作的控制模块440、错误检测码(EDC)模块450(例如,ECC编码器/解码器)和错误校正码(ECC)模块460(例如ECC编码器/解码器)。EDC模块450可操作以基于输入的数据来生成错误检测码,且ECC模块460可操作以基于输入的数据来生成错误校正码。在该实施例中,控制模块440被配置以使用ECC码来校正错误(例如,控制模块440的部分是ECC校正引擎)。在本文中使用的数据可以包括要被存储或取回的正常数据页、以及头部、元数据或用于存储由主机420或控制器400计算的地址、标记或数据的空闲字段。错误检测码允许检测但不校正至少一个错误,而错误校正码允许检测并校正至少一个错误。可以被检测和/或校正的错误的数量取决于使用的错误检测码机制和错误校正码机制的类型。适当类型的错误检测码机制包括但不限于一个或多个字节校验和、纵向冗余校验(LRC)、循环冗余校验(CRC)或8b/10b码。适当类型的错误校正码机制包括但不限于汉明码和Reed-Solomon码。
图5和6分别是图示该实施例中的控制器400在写入和读取操作中如何使用的流程图500、600。首先转到图5中的流程图500,控制器400通过第一NAND接口425接收来自主机420的写入命令、数据和与数据相关的错误检测码(动作510)。(因为主机420不一定知道其正向控制器发出命令的事实,因此,主机420可能认为其正与其能够处理的类型的标准NAND闪存器件相接口。)可以在数据之前、之后或与数据混合地发送错误检测码,在一个实施例中,该错误检测码是包含该数据的数据分组的头部(例如8-16空闲字节)的部分。如上所述,错误检测码允许检测但不校正数据中的至少一个错误。接下来,EDC模块450基于该数据生成错误检测码,且控制模块440比较生成的错误检测码与从主机420接收的错误检测码(动作520)。基于该比较,控制模块440确定生成的错误检测码是否匹配从主机420接收的错误检测码(动作530)。如果生成的错误检测码不匹配从主机420接收的错误检测码,则控制模块440向主机420发送指示在数据从主机420传输到控制器400时发生的错误的信号(动作540)。然后,主机420可以向控制器400重新发送该数据。但是,如果生成的错误检测码匹配从主机420接收的错误检测码,则该写入处理以ECC模块460基于该数据来生成错误校正码而继续(动作550)。如上所述,错误校正码允许检测并校正数据中的至少一个错误。然后,控制模块440通过第二NAND接口435在闪存器件430中存储该数据和错误校正码。再次,根据NAND接口协议发出命令,包括命令字节、地址字节、头部字节、和数据字节,该数据字节包括主机的数据字节和由ECC模块460生成的对应ECC位。以此方式,闪存器件430甚至不一定知道它们正经由控制器400间接地而不是从主机420直接地接收信息。
现在转到图6,流程图600图示如何在读取操作中使用控制器400。如图6所示,控制器400从主机420接收读取命令(动作610)。然后,控制器400从闪存器件430读取数据和与该数据相关的错误校正码(动作620)。如上所述,错误校正码允许检测并校正数据中的至少一个错误。接下来,ECC模块460基于该数据生成错误校正码,且控制模块440(例如使用ECC校正引擎)比较生成的错误校正码与从闪存器件430接收的错误校正码(动作630)。基于该比较,控制模块440确定生成的错误校正码是否匹配从闪存器件430接收的错误校正码(动作640)。如果生成的错误校正码不匹配从闪存器件430接收的错误校正码,则控制模块440尝试校正数据中的错误(动作650)。(如上所述,取决于使用的ECC机制,控制模块440可能能够校正一个或多于一个检测的错误,或者,控制模块可以使用其他手段来尝试校正该错误。)如果该校正不成功,则可以向主机420发送指示发生了存储错误的信号。但是,如果生成的错误校正码匹配从闪存器件430接收的错误校正码,则读取处理以EDC模块450基于该数据生成错误检测码而继续(动作660)。如上所述,错误检测码允许检测但不校正数据中的至少一个错误。然后,控制模块440向主机420发送该数据和错误检测码(动作670)。然后,主机420将基于该数据和可选的头部生成其自己的错误检测码,并将其与从控制器420接收的错误检测码相比较。如果这些码不匹配,则主机420将知道发生了传输错误,且可以向控制器400发送信号来重新发送该数据。
如可以从这些流程图500、600中看到的,该实施例进行保护而免受在正通过第一NAND接口425在主机420和控制器400之间发送数据时可能发生的传输错误。在一些控制器架构中,在写入操作中,主机生成ECC并向控制器发送该ECC和数据,该控制器将该ECC和数据两者存储在闪存器件中。类似地,在读取操作中,控制器从闪存器件取回该数据和ECC,且向主机发送该数据和ECC。在这些架构中,ECC不仅用于保护免受存储器器件错误,而且还用于保护免受在主机和控制器之间的接口传输错误。但是,在该实施例中,是控制器400——不是主机420——生成ECC以与数据一起存储在闪存器件430中。通过使主机420生成EDC且使控制器400对写入校验EDC,且通过使控制器400生成EDC且使主机420对读取校验EDC,即使如在传统控制器架构中那样主机420不生成用于存储的ECC,该实施例也提供保护免受在第一NAND接口425上的传输错误。另外,虽然在提供与主机的非NAND接口(例如USB)的一些现有的控制器架构中使用使得主机生成EDC并使得控制器校验EDC然后生成ECC的处理,但是此实施例可以用在诸如图3和4中所示的控制器架构中,其中,主机和控制器使用NAND协议通过NAND接口而通信。另外,一些现有主机接口协议(尤其是诸如SATA、SAS、FC和PCIe的串行接口协议)提供可以用于检测传输错误的某种每个分组的CRC,且该信息可以经过主机420并附于数据分组并用于类似目的。但是,通过外部主机接口(比如SATA)的数据传输可能具有与通过第一NAND接口425向控制器400发送的页不同的传输长度,且可能需要进行适当的调整。
以上,由主机420和EDC模块450计算的EDC也可以是比ECC模块450所使用的更简单的ECC形式。例如,在第一NAND接口425上使用的ECC仅需要检测或校正传输错误,而在第二NAND接口435上使用的ECC优选用于检测和校正NAND存储错误,这可能需要更长或更复杂的ECC。
涉及提供闪存系统中的读取状态和空闲块管理信息的实施例
转到附图,图7是包括控制模块740、错误校正码(ECC)模块750、状态模块760和空闲块管理模块770的一个实施例的控制器700的图示。控制器700可以分别经由第一和第二接口725、735与(具有主机控制器721的)主机720和闪存器件730通信。第一和第二接口725、735可以采取任何适当的形式,且在一个实施例中是如以上结合图3所描述的NAND接口。但是,可以使用其他的非NAND类型的接口,比如但不限于USB和SATA。另外,控制器700可以置于上述任意得物理布置中,例如在与主机和闪存分离地封装的、被封装在还包含一个或多个闪存裸片的存储器系统中的分离的裸片上,等等。
该控制模块740可以被配置用于控制该控制器700的操作并基于从主机720接收的命令(例如,读取、写入、擦除等等)和地址来进行存储器操作。在确定在处理从闪存中的存储器的块取得的或向其发送的数据时是否发生了诸如读取或写入错误的错误的处理中使用ECC模块750。控制器700可以被配置为应用多个错误校正码(ECC)算法中的任一个来检测读取错误并在具体错误校正码算法的能力内校正某些检测的错误。控制器700处理错误校正编码的应用,以便主机720通过第一接口725接收根据错误校正算法而处理的数据,而不是需要在主机处进行错误校正。(或者,可以用除了ECC以外或取代ECC可以使用其他错误恢复技术的错误处理模块来代替ECC模块750。在这样的替换中,控制器700仍将校正该数据,以便通过第一接口725发送的数据不需要主机720的进一步的错误处理(例如,计算单个错误码或利用电压偏移重新读取)。)相反,在写入操作期间,控制器700处理错误编码数据,且通过第二接口735传输ECC码和数据用于存储在闪存器件730上。
该状态模块760与ECC模块750合作,以向主机720提供与闪存器件730上的具体操作的状态相关的数据。例如,状态模块760可以浏览控制器700中的错误分析活动,且基于读取错误是否已经被检测到、已被校正、或不可校正,准备关于读取错误信息的状态信息。由于主机、控制器和闪存布置,其中在从闪存器件730取回数据时主机720将通常不在处理该数据的错误分析或校正,因此,主机720将没有读取操作的状态的细节。状态模块760允许跟踪该信息且向主机720呈现该信息,以便主机720可以对于如何将数据发送或请求到存储器或者发送或请求到何处进行任何期望的调整。主机720还可以使用该状态来触发一些其他积极主动或预防性操作,比如损耗平衡、数据再分配或读取擦洗。
该状态模块760可以按几种格式之一向主机720呈现状态信息。在状态模块正准备用于传输到主机720的读取状态信息的情况下,读取状态可以附于从闪存取得的数据,如图8A和8C中所示。(应该注意,在这些图中示出的字段可以以任何适当的顺序出现。)图8A图示数据传输格式800,其中,从闪存取得的数据在控制器700的错误分析的处理之后被置于具有头部802、数据有效负荷部分804和状态位806的消息中,该状态位806可以被填充为两个或更多字节(因此,在权利要求中使用的“位”可以指单个位或一个或多个位,比如一个或更多字节)。该状态位806可以是二进制成功或失败指示,用于由主机720使用。状态位806将不一定在读取错误的类型或程度之间区分,但是将向主机720提供标记,警告主机720已经遇到某种形式的错误。或者,该状态位可以是用于携带与在主机720中维持的或由控制器700维持的查找表中的错误消息相关联的已编码值的单个字段。图8B类似于图8A,但状态位806’被包括为头部802’的部分,头部802’将通常由控制器700在读取时填充,且没有单独的状态位字段。
或者,如图8C所示,数据传输格式808可以包括头部810、数据有效负荷部分812、和状态部分814,该状态部分814具有在状态部分814中的多个字段816中布置的一个或多个位。在图8C的布置中,可以关于读取错误而传输关于状态的更详细的信息,且这些信息将对主机720可用。在状态消息的一个实施方式中,可以仅向主机720提供读取错误信息。在其他实施方式中,可以布置状态信息以传递由控制模块740检测且由控制器700的状态模块760格式化的读取、写入和擦除错误信息中的一个或多个。在其他实施例中,状态部分814的字段816也可以或者替换地呈现关于空闲块管理的数据。在以下部分中提供关于控制器700的空闲块管理模块770参与或报告的空闲块管理活动的细节。图8C的多个字段实施例提供了用于要报告的与存储器操作相关的错误的组合的机制。图8D类似于图8C,但状态字段814’是头部810’的部分,且可以类似地由多个字段816’构成。
在另一实施例中,可以在预留的或厂商唯一的字段之一中的状态寄存器或扩展的状态寄存器中指示读取的结果或成功/失败。但是,除了对于忙状态的轮询以外,当今的主机控制器可能不一定能查找该状态或扩展状态寄存器中的读取错误。响应于编程或擦除命令在第二接口735上报告编程和擦除错误(这是从原始NAND器件报告的标准错误),且该信息可以被返回到主机。对这种错误的通常响应是分配新块,从具有错误的块中复制任何当前有效的数据页,且使得任何元数据指示这现在是有效块,然后标记具有错误的已有块为坏的。在一个实施例中,该控制器可以指示编程或擦除失败,且将其留给主机控制器以进行上述复制和元数据管理。在另一实施例中,控制器可以进行这些操作,且管理该控制器内的坏块。在该情况下,相比于发生的错误,这对主机控制器可以完全透明,或者,该控制器可以指示其采取了该校正的动作(例如,该主机可以像发生了软错误一样记录它)。因此,总之,这些位可以指示:发生了主机必须管理的错误、发生了控制器管理的错误(并且主机仅被通知)、或错误可以由控制器处理且对主机隐藏。
通知(signal)错误的替换方式、比如单个状态位806或806'、具有多个字段816或816'的状态部分814或814'、或经由状态或扩展状态寄存器中的位将统称为“错误信号”。在另一实施例中,除了这些错误信号中的一个或多个以外,该控制器700可以被配置为结合该一个或多个错误信号的使用而在已知位置中存储详细的状态信息。例如,控制器700的状态模块760可以在闪存器件730上的预定位置中或在控制器700中存储主机响应于接收到一个或多个错误信号而可以访问的详细状态信息(例如读取状态数据)。因此,如果该主机想要关于状态的另外的细节(例如,读取错误),则该状态位或字段可能不传递比指示更多信息对主机可用的标记更多的任何信息。而且,由位或字段标记的附加状态信息可以被存储在由控制器700跟踪的位置中,其中,主机可以通过向控制器700发送取回该状态信息的一般命令来访问该位置,而主机不需要知道该位置并取回该状态信息。
如果使用图8A的附上单个位的状态消息格式,其中该位表示错误校正的成功或失败的简单断言(bare assertion),该位可以被实现为诸如从开放NAND闪存接口工作组可得的ONFI 2.0的可用接口协议的扩展读取格式的厂商专用的位的部分。也可以如上所述使用向主机720警告该状态模块致使被存储的位置处的更详细信息的多个位状态信息、或单个或多个位信息格式。
图9示出可以置于图8A-8D的实施例中的位置806、806'、814、814’中或存储在如下实施例中的控制器700或闪存器件730中的的状态字段900的一个可能的布置,在这些实施例中,主机720可以在通知状态可用性之后请求进一步的信息,或从控制器700取回信息。状态字段900可以包括指示读取操作的成功或失败的字段902、提供关于是否进行了诸如ECC校正的校正的信息的字段904、以及标记是否曾存在“硬”ECC失败(即,数据丢失)的字段906。除了读取状态信息以外,状态字段900还可以包括表示是否由控制器700检测了编程或擦除错误的一个或多个字段908。还可以包括以下进一步讨论的关于空闲块管理的状态信息,比如请求块复制和重映射的字段910、要求主机返回新的空闲块的字段912和向主机720指示已经有对闪存器件730中的有缺陷的块的尝试的操作的字段914。可以布置一个或多个另外的字段916来处理具体应用可能需要的其他状态信息。例如,这种字段916可以指示软错误(即,由ECC校正的错误)的数量。
图10图示用于向主机720提供读取状态信息的可在控制器700上操作的一个实施例的方法的流程图1000。首先,该控制器700从主机720接收读取命令(动作1002)。为了读取数据,控制器700向闪存器件730发出读取命令(动作1004),且闪存器件730通过第二接口735向控制器700返回一页数据以及错误校正码(动作1006)。控制器700的ECC模块760对取回的数据进行错误分析(动作1008)。错误分析或处理可以是错误校正码算法或其他错误校正机制。如果使用ECC算法,则控制器700计算关于从闪存器件730取回的数据的ECC字节,且比较所计算的ECC字节与先前与数据一起存储并取回的ECC字节。如果计算的ECC字节和取回的ECC字节不匹配,则控制器700标识错误(动作1010)。如果计算的ECC和存储的ECC之间的差别可由控制器700校正,则控制器700将在通过第一接口725的传输之前完全校正该数据,且将将该错误标识为“软的”或可校正错误。或者,如果错误足够严重,导致ECC算法或其他错误恢复过程不能补偿该错误,则控制器700将标识通知发生了数据丢失的硬错误。然后,通过第一接口725向主机720发送从闪存器件730读取的校正后的数据,状态信息按诸如上述数据消息格式800、800'、808、808'之一的数据消息格式而附上。
参考提供读取状态错误的方法即图10中图示的实施例,可以仅在由控制器700读取和分析的每页信息的末尾处计算和提供读取状态错误,以便多页的流不中断,且很清楚哪些页可能包含错误。另外,在另一实施例中,预期控制器700可以从闪存器件730读取数据,并在数据到来时且在闪存的完整页已被处理之前计算ECC。例如,如果页大小是8千字节(KB),该控制器700可以计算2KB片段中的ECC,每个片段包括少于一页,以便在完成了该页的每个部分之后,可以对于表示该页的部分的该信息校验或校正ECC。在已经从闪存器件730向控制器700传输了一个或多个2KB片段之后,控制器700可以在已经从闪存向控制器传输了该页的最后的数据之前,同时开始通过第一接口725传输错误校正后的数据。
好块、坏块和空闲块管理实施例
再次参考图9,如上所述,状态字段900可以包括对于处理管理坏(有缺陷的)块所需的空闲块有用的涉及可空闲块管理的信息,例如字段910-914,该坏(有缺陷的)块可以随着闪存的使用寿命而发展。如图7所示,空闲块管理模块770可以被包括在控制器700中以按几种方式之一操作。取决于采用的具体空闲块管理模式,可以利用诸如示例的字段910-914的一个或多个字段的信息。
通常,闪存器件被制造为具有超额数量(比定义的最小容量更大)的块。无论在工厂测试期间或在使用该器件期间,可能发现某些块为“坏的”或“有缺陷的”,意味着它们不能正确地存储数据,且需要替换它们。类似地,可能有超额的“好”块(大于定义的最小容量),它们可以被用作“空闲块”直到另一块故障或变得有缺陷。已知保持跟踪这些额外的块分别为坏块管理和空闲块管理。将在以下段落中更详细地描述这些概念,这涉及图12A和12B中示出的示例闪存器件1200的块。
图12A示出被设计并制造为具有存储器的总共1000个块的示例的器件的块的物理图。在该图中,以物理顺序示出这些块,且每个白色块1210表示在闪存器件中的独立块(仅示出了1000个块中的少量块)。每个黑色块1220表示在制造时有缺陷的块(在该例子中它们随机分布)。图12B示出相同部分1200的抽象图,其中示出各个好块和坏块被组合在一起(且不按物理顺序)。诸如1200的部分的示例厂商数据表可以指示可以依赖它而在其寿命末期具有至少900个好块,如1230中所示。对于我们的具体示例闪存器件1200,存在950个好(白色)块(未全部示出)和50个坏(黑色)块(未全部示出)。示出50个坏块(在制造或初始测试时)逻辑地组合在一起作为1260。
在我们的例子中继续,数据表还可以指定在其指定的寿命周期期间不多于10个块可能故障,因此这些块被示出为“最少空闲块”1240。因此,器件1200在制造时必须具有最少910个好块(否则,工厂将不会出厂这样的器件,因为其将不符合该数据表)。其他40个好(白色)块(950个好块和910个保证的好块之间的差)被认为是“额外的空闲”块,且被示出为1240。不能一定依赖于额外的空闲块的数量,且其理论上可以在90(如果没有坏块,虽然这是很罕见的)和0(暗示90个坏块,这将刚刚满足数据表要求)之间改变。总体地,最少空闲块和额外的空闲块也可以被称为“空闲块”。
通常,主机将直接通过原始闪存处理空闲块管理。例如,标准主机可以具有其自己的控制器,该控制器扫描闪存中的所有块来查找具体签名以确定哪些块是可用块,且哪些块是不可用的,也称为有缺陷的或“坏”块。因此,如果诸如以上所述的且在1200中详细示出的闪存器件730的闪存被制造为具有存储器的1000个块,则主机控制器将通常分析所有1000个块并标识好块和坏块。然后,通常的主机控制器可以使用940个好块(在该例子中)的所有或其子集,并保留10个块作为空闲块,用于在当前可用的块变坏时替换当前可用的块时使用。该主机控制器还可以使用其发现的任何额外的空闲(好)坏(例如,在该例子中的40个)。使用具有如图7中所述的空闲块管理模块770的控制器700,通常由主机处理的空闲块管理的不同方面可以由控制器700的空闲块管理模块770来接管。
在一个实现方式中,空闲块管理模块770可以选择性地配置为在三个空闲块管理操作模式之一中操作:(1)未管理的模式,其中,控制器700不提供空闲块的管理,且主机720自己扫描块以寻找缺陷;(2)完全管理的空闲块管理模式,其中,控制器700为主机720仅提供N个好的逻辑块,其中,N是数据表参数,且可在闪存上可得的参数页中读取;以及(3)划分的(split)空闲块管理模式,其中,主机可以使用额外的空闲块,但控制器700可以请求主机来释放这些额外块中的一些,用于当控制器的空闲块供给落到期望水平以下时由控制器700使用。
虽然该控制器700可以在仍然处于装配分离的主机720、控制器700和闪存器件730的制造工具处时由主机720初始化,或甚至被预先初始化以由具体原始设施制造者(OEM)使用,但是,控制器700中的空闲块管理模块770可以重配置以在已经选择了不同的空闲块管理模式之后改变空闲块管理模式。
参考图11的流程图1100,在控制器700中的空闲块管理模块的初始化时,无论是在OEM处的原始初始化时还是在重新设置先前选择的模式时,控制器700接收标识期望的操作模式的选择命令(动作1102)。如果该选择命令指示已经选取了未管理的空闲块管理模式(动作1104),则空闲块管理模块770允许主机720直接扫描闪存器件730来标识可用的和坏的块(动作1106)。在未管理模式中,还阻止控制器700管理空闲块使用。而是,当空闲块管理模块770标识了指示坏块的错误(比如不可校正的ECC失败(字段906)或编程或擦除失败(字段908))时,控制器700还可以使用诸如字段910(图9)的适当状态字段通知主机720该具体块需要复制和重新映射。(字段908也可以是两个字段——一个用于编程失败,另一个用于擦除失败,或它们可以组合在一个字段中。)
虽然可以在未管理空闲块管理模式中将空闲块管理完全留给主机720,但是,控制器700仍然可以扫描以寻找一些空闲块,并保持它们对主机720不可见,以用于错误恢复。换句话说,使用具有最大1000个块的闪存的图12中的例子,数据表可以示出块的最少保证的数量为900,且示出块的最大保证的数量为990。如果该具体部分中的好块的真实数量是950,如果控制器700在主机720扫描以找到好块之前隐藏了10个块用于其自己使用,则主机720将仅发现940个好块。控制器700可以通过错误地指示隐藏的块是坏块来向主机720隐藏好块,因为控制器700知道其正隐藏哪些块。例如,如果控制器700决定隐藏块X,则当主机读取块X时,其可以将任意数据与有缺陷的块标记一起返回。类似地,关于从主机到块X的任何擦除或编程请求,控制器可以传达擦除或编程错误。
关于空闲块管理的第二模式(动作1108),在完全管理的模式中,空闲块管理模块780进行对闪存器件730中的块的所有扫描,以标识好块,且仅向主机控制器提供N个好块,其中N是可在保证数量的可用块的闪存的参数页中读取的数据表参数(动作1110、1112)。然后,控制器700仅允许对N个好块的主机操作。控制器700保持任何额外的好块作为其可以用于错误处理的空闲块(动作1114)。再次参考以上图12中所述的具有1000个块的假定闪存,N可以是900,其中,控制器700将保持所有的额外的50个可用块作为空闲块,且主机720不具有对这些空闲块的访问,直到响应于当前的好块变坏,使得这些空闲块由空闲块管理模块780使用。
上述的第三空闲块管理模式即划分管理允许关于使用额外块1250(即,超出数据表上的保证数量的块减去原始被保留为空闲块的任何块)而在控制器700和主机720之间的合作。可以使得这些额外的空闲块对主机可用,用于优化主机操作。在划分管理技术的一个实施例中,如果用划分块管理的命令来初始化空闲块管理(动作1116),则控制器700的空闲块管理模块770扫描闪存器件730以寻找好块和坏块,并保留好块中的一些作为空闲块,例如五个,用于错误恢复(动作1118)。控制器700可以发现所有好块,且向主机仅“示出”好块。
例如,控制器700可以读取闪存器件730的参数页,且确定在具体闪存中存在多少剩余的好块。闪存器件类的产品数据表可以报告可能的好块的最小和最大数量(例如,900-990)。因此,再次参考具有1000个可能的块的假定闪存的以上例子,其中,950个块被空闲块管理模块770扫描到且被发现实际可用,如果控制器700保留这些好块中的5个作为空闲块,则其将向主机720报告945个好块(动作1120)。因此,主机720将不知道5个其他好块存在。控制器700可以将好块重新映射到移除了坏块的紧凑逻辑地址范围(例如,好块的地址被照原样顺序地重新映射为0-N)(动作1122)。如果主机720尝试对大于N的地址的读取、编程或擦除操作,则控制器700将报告错误。使用图9的数据字段900作为例子,可以通过空闲块管理模块770在字段914中附上数据来报告该错误,以便主机720认为当其试图超出控制器规定的范围时它正寻址有缺陷的块。
在划分管理模式的一个替换实施例中,取代扫描闪存器件730中的所有块,空闲块管理模块780可以仅扫描和保留一组好块,以保持为其自己的空闲块,且允许主机720扫描所有块来确定哪些是好的,哪些是有缺陷的。在划分管理模式的该替换实施方式中,当主机720尝试对已被空闲块管理模块770标识为空闲块的那些块之一进行读取、编程或擦除操作时,控制器700将指示块中有缺陷或记录错误。例如,控制器700可以插入用于标记有缺陷块的适当字节中的缺陷标记,或其可以在读取状态中填充(populate)诸如图9中的“试图对有缺陷块的操作”字段914的字段。然后,主机720将使用所有其他可用块,包括超出参数页中保证的数量以外的那些块,用于其目的。
不管使用哪个版本的划分块管理技术,主机720将通常能够为其自身利益而使用超出最小值的任何额外的空闲块,例如来改善性能或耐用性,其中,对于性能或耐用性,主机720不能更多地依赖于最小数量的块。因此,在该例子中,主机将具有其可以使用的45个额外块(总共950个可用,减去保留的5个,相对于数据表上最少保证的900个)。
通过划分管理模式,当控制器700遇到需要空闲块的错误、比如编程或擦除错误时,空闲块管理模块770使用其空闲块之一来替换新发现的有缺陷块。在该例子中,该空闲块将是如上所述被保留的五个块之一。在使用空闲块之后,空闲块管理模块780将具有少于其通常保持的空闲块的最小数量(即5),且将通知主机720其需要另一空闲块(动作1124)。从控制器700的空闲块管理模块780向主机720提供的通知可以经由与取回的数据一起返回的状态值中的字段。例如,在图9中,可以在字段912中传送请求返回额外块以用作空闲块的标记。在该例子中,主机720将需要返回其先前能够使用的但超过保证其可以访问的最小数量的45个额外块之一。主机720可以通过利用设置特征(Set Feature)命令向专用地址或偏移写信息或通过使用具有块地址作为其地址字段的厂商唯一命令,向控制器700指示正返回哪个块来用作空闲块。
在划分管理模式中,超出类存储器的数据表保证的最小值的额外块将在主机720可以使用但可以稍后被收回作为空闲块的额外块以及直接为控制器700保留的空闲块之间“划分”。这不同于未管理的模式以及完全管理的模式,在该未管理模式中,控制器700不能要求拿回任何额外的块,且具有其可以使用的固定数量的空闲块,在该完全管理模式中,所有额外块由控制器700使用且对主机720不可用。具有空闲块管理的完全或部分(划分的)控制器管理的模式的灵活性通过降低主机控制器所需的复杂度,提供优于典型的主机管理或空闲块信息的好处。
虽然在图7-9的例子中已经描述了读取状态的具体例子,但是可以使用状态模块来确定写入(也称为“编程”)或擦除错误并使用正常错误状态位将该写入或擦除错误从控制器传达到主机。另外,控制器还可以可选地在错误状态中使用保留的或厂商唯一的字段来指示额外状态是可用的。在接收到这些错误指示符(读取状态错误、正常写入或擦除错误、或额外状态可用字段)的任一个时,主机可以读取该额外的状态信息,其例子在图9中示出。ONFI2.0中的现有状态寄存器字段中的位2、3或4可以用于传达该额外状态。另外,虽然将状态信息和空闲块管理示出为相同消息格式的部分,但是控制器可以被配置为在其他实施例中仅提供状态信息或空闲块管理信息之一。
已经描述了用于与闪存一起使用的改善的独立的控制器,其可以处理错误分析和错误校正,管理涉及空闲块的通信用于与主机合作在几个模式之一中进行错误恢复,且提供关于在主机访问的消息字段中的读取命令或写入和擦除错误的状态信息。在此公开的方法和控制器准许与主机分离的控制器的活动——该活动可以允许主机控制器具有更简化的设计——并准许在闪存中可以与主机一起使用的离散的控制器的定制架构,同时为主机提供关于控制器的活动的信息,以便可以实现各种级别的控制器和主机合作和优化。
示例的NAND闪存控制器实施例
此部分讨论示例的控制器架构,且提供关于上述各种功能模块的一些的更多细节。如上所述,可以按任何适当的方式来实现“模块”,比如用硬件、软件/固件或其组合,并且“模块”的功能性可以由单个组件进行或在控制器中的几个组件之间分布。
现在转到附图,图13A是图3的NAND控制器300的当前优选实施方式的图。应该理解,在这些图中示出的任何组件可以被实现为硬件、软件/固件或其组合。在该实施方式中,由主机接口模块(“HIM”)3010实现图3中的第一NAND接口325。HIM 3010是支持“主机侧接口”作为“闪存器件型接口”的逻辑的集合。HIM 3010包括先进先出(“FIFO”)模块3080、控制单元3090、循环冗余校验(“CRC”)模块3100(虽然可以使用另一类型的错误检测码(“EDC”)模块)、命令寄存器3110、地址寄存器3120和主机直接存储器访问(“HDMA”)单元3130。在该实施例中,HIM 3010采取ONFI HIM的形式。如以下将更详细地讨论的,一些HIM从主机控制器接收对于跨越几页的相对大量的数据的高级请求,且NAND控制器确定需要什么动作来满足该请求。相反,ONFI HIM从主机控制器接收(例如对于各个页的)几个更小大小的请求,因此要求ONFI HIM同时处理多个(例如八个)读取和写入请求。
返回图13A,在此通过闪存接口模块(“FIM”)3020来实现图3的第二NAND接口335。在当前实施例中,FIM 3020被实现为逻辑和建立“器件侧接口”作为“主机类型接口”的低级可编程定序器(sequencer)的集合。在该实施例中,FIM 3020包括命令寄存器3140、地址寄存器3150、ECC编码模块3160、ECC解码模块3170、数据加扰器3180和数据解扰器3190。
在NAND控制器300内部的是处理器3040,其具有本地ROM、代码RAM和数据RAM。中央总线3030连接处理器3040、HIM 3010、FIM 3020和以下描述的其他模块,并用于在示出的不同模块之间传输数据。该双向总线3030可以是具有与每个内部组件的实际连接的电总线或结合ARC微处理器使用的高级高速总线(“AHB”),其中,该ARC微处理器使用互连矩阵逻辑地连接各个模块。中央总线3030可以传输数据,控制信号或其两者。NAND控制器300还包括用于临时存储正读取或写入的数据页的缓冲器RAM(“BRAM”)3050和用于校正错误的ECC校正引擎3060。NAND控制器300还包括用于进行加密/解密功能的加密模块3070。
NAND控制器300还可以包括列替换模块,其在此由FIM定序器、处理器3040中的固件、或优选地在少量逻辑和位于FIM 3020中的表来实现。列替换模块允许闪存器件330(图3)包含关于坏列位置的信息。坏列地址信息被包含在闪存器件330中,且在任何读取或写入操作之前由固件扫描。在固件扫描闪存器件330之后,其建立要由列替换模块使用的具有坏列位置的坏列地址表。关于快闪写入操作,列替换模块对于在坏列地址表中检测的地址插入数据(0xFFFF)。关于快闪读取操作,将丢弃来自坏列地址的数据。
通过现在一般描述的NAND控制器300的组件,现在将给出NAND控制器300的示例写入和读取操作。首先转到写入操作,HIM 3010中的FIFO3080用作对于来自主机控制器的到来的写入命令、地址和数据的缓冲器,并将那些元素与系统卡域(system card domain)同步。CRC模块3100检查到来的信息以确定是否出现任何传输错误。(CRC模块3100是上述EDC模块的例子。)作为端到端数据保护机制的部分,CRC模块生成或检查错误检测码来检查传输错误。如果没有检测到错误,则控制单元3090解码从FIFO 3080接收的命令,并将其存储在命令寄存器3110中,并且还将地址存储在地址寄存器3120中。从主机控制器接收的数据通过HDMA AHB接口3130经由中央总线3030发送到BRAM 3050。控制单元3090向处理器3040发送中断,响应于该中断,该处理器3040从命令寄存器3080和地址寄存器3120读取命令,并基于该命令,在FIM 3020中设置数据路径,并将该命令存储在FIM的命令寄存器3140中。处理器3040还将来自NAND接口325的地址翻译为内部NAND地址,且将其存储在FIM的地址寄存器3150中。如果要进行逻辑到物理地址转换,则处理器3040可以使用映射表来建立正确的物理地址。处理器3040还可以进行以下描述的一个或多个另外的功能。然后,处理器3040设置从BRAM 3050到FIM 3020的数据传输。
FIM 3020从地址寄存器3150中取得值,且根据NAND接口335的标准来对其格式化。在BRAM 3050中存储的数据被发送到加密模块3070用于加密,且然后通过数据加扰器3180发送。数据加扰器3180加扰该数据,并将该数据输出到FIM的ECC编码器3160,该ECC编码器3160生成要与该数据一起存储的ECC奇偶校验位。然后,该数据和ECC位通过第二NAND接口与写入命令一起传输到闪存器件用于存储。作为在写入期间可能出现的另外的功能的例子,如果使能对写入中止或编程失败的保护,且如果写入请求是针对较高页地址,则处理器3040可以通过第二NAND接口向闪存器件发送对于相应的较低页的读取命令,然后发送编程命令,以通过将该相应的较低页写回到闪存器件330中的另一位置来使其复制到安全区(空闲的便笺(scratchpad)区域)中。如果在写入较高页时发生错误,仍然可以从安全区读回较低页,且校正该错误。(这是用于经由安全区来处理写入中止和/或编程失败的上述模块的例子。)
现在转到读取操作,HIM 3010从主机控制器接收读取命令,且处理器3040读取命令和逻辑地址。如果要进行逻辑到物理地址转换,则处理器3040中的固件可以使用映射表来建立正确的物理地址。(这是上述地址映射模块的例子。)然后,该固件通过第二NAND接口335向闪存器件330发送该物理地址。在读取访问之后,数据通过NAND接口传输,被解码并用于生成用于错误校正的校正子(syndrome)数据,通过数据解扰器3190解扰,且然后通过中央总线3030发送到BRAM 3050。使用ECC校正引擎3060来校正可以使用BRAM 3050中存储的关于该数据的ECC而校正的任何错误。由于可以计算并在物理页的部分中存储ECC,因此,当该页的每个部分被接收或校正时,或一旦当传输该数据的所有时,处理器3040可能被中断。然后,加密模块3070对该数据进行解密操作。上述的时序是灵活的,因为第一NAND接口325和第二NAND接口335可以以不同速度操作,且固件可以使用存储并转发技术或速度-匹配缓冲来传输数据。当向主机控制器发送回该数据时,该数据通过HIM 3010发送,且传输CRC经过第一NAND接口325被发送回主机,以检查传输错误。
如上所述,除了处理从主机控制器发送的命令以外,处理器3040还可以与主机发送的任何具体命令异步或独立地进行一个或多个另外的功能。例如,如果ECC校正引擎3060检测到可校正的软错误,则ECC校正引擎3060可以校正该软错误,且还中断该处理器3040以记录页位置,以便在稍后的时间点该对应的块可以被读取擦洗。可以由处理器3040进行的其他示例后台任务是坏块和空闲块的损耗平衡和映射,如以下描述的。
再次转到附图,图13B是示出一个实施例的NAND控制器的更详视图的方框图。如像图13A中示出的控制器那样,此实施例中的控制器包含通过中央总线(在此,高级微控制器总线架构(“AMBA”)、高性能总线(“AHB”)、用于数据路径的多层矩阵总线3270和用于命令路径的高级外围总线(“APB”))通信的ONFI HIM 3200和FIM 3260。ONFI HIM 3200和FIM3260可以与任何处理器相关。例如,ONFI HIM 3200可以与运行在MRAM3290中存储的ARC码的(具有内置缓存3285的)ARC 600微处理器3280相关。通常,使用ARC600 3280来服务来自ONFI HIM 3200的中断,且管理数据路径设置并向闪存控制RISC 3250传送信息。闪存控制RISC 3250是可以与FIM 3260一起使用的微处理器,且通常通过生成对于FIM 3260中的各个组件的微控制码来处理设置FIM 3260的功能。更具体地,闪存控制RISC3250在FIM 3260中设置快闪直接存储器访问(“FDMA”)模块3440,其与AHB总线3270通信并生成AHB总线协议命令用于从DRAM 3220读取数据。闪存控制RISC 3250还设置EDC模块3450,其包含ECC编码器和解码器。MRAM 3240存储用于运行闪存控制RISC 3250的代码。
此实施例中的NAND控制器还包含ROM 3210,其存储使得控制器在引导时运行的指令代码。NAND控制器的另外的组件包括DRAM 3220、ECC校正引擎3230、加密模块3300、APB桥3310、中断控制器3320和时钟/复位管理模块3340。
加密模块3300根据高级加密标准(AES)使用128、192或256位密钥来加密(encipher)和解密(decipher)数据的128位的块。对于写入操作,在由ONFI HIM从主机接收到数据并将其发送到BRAM 3050(图13A)之后,ARC600处理器3280用加密器操作的定义的参数来建立控制块。然后,加密模块3300进行加密操作,并将得到的数据存储到BRAM 3050,且中断该ARC600处理器3280来指示该数据准备好了。对于读取操作,在ECC引擎在BRAM 3050中完成错误校正之后,ARC600处理器3280用加密操作的定义的参数来建立控制块。然后,加密模块3300进行解密操作,并将得到的数据存储到BRAM 3050,且中断该ARC600处理器3280来指示该数据准备好了。
更详细地,现在转到ONFI HIM 3220和FIM 3260,ONFI HIM 3220包括以异步模式或源同步模式操作的ONFI接口3350,这是ONFI标准的部分。(异步(或“async”)模式是对于写入用WE#信号以及对于读取用RE#信号锁存数据时。源同步(或“源(src)同步”)是当与数据一起转发选通信号(DQS)来指示何时应该锁存该数据时。)ONFI HIM 3200还包含命令FIFO 3360、数据FIFO 3370、数据控制器3380、寄存器配置模块3400、主机直接存储器访问(“HDMA”)模块3380和CRC模块3415,它们如以上结合图13A所述而运作。ONFI HIM 3200还包含APB接口3390和AHB端口3420,分别用于与APB总线3330和AHB总线3270通信。FIM 3260包括:EDC模块3450,该EDC模块3450包括EDC编码器和EDC解码器;闪存协议定序器(“FPS”)3430,其基于闪存控制RISC 3250或ARC600微处理器3280提供的微控制代码来产生对于NAND总线的命令;FDMA 3440;数据加扰器/解扰器3470;以及NAND接口3460。
加扰器/解扰器3470在闪存写入传输(加扰)和闪存读取传输(解扰)期间进行数据的传输。在闪存器件330中存储的数据可以被加扰,以便通过建立更随机的数据样式来降低依赖于数据样式的敏感度、干扰效应或错误。通过经历(across)存储器器件330中的页按偏移样式加扰数据,可以显著改善存储器的可靠性。加扰器/解扰器3470实时(on the fly)处理数据,且由ARC600处理器3280或闪存控制RISC 3250使用寄存器访问来配置。在加扰之后进行ECC校验位生成。在解扰之前进行ECC错误检测,但在解扰之后进行校正。
此实施例中的NAND控制器通常如以上关于图13A所述地处理写入和读取操作。例如,对于写入操作,命令FIFO 3360和数据FIFO 3370存储到来的写入命令和数据,且CRC模块3415检查到来的信息来确定是否存在任何传输错误。如果没有检测到错误,则数据控制器3380解码从命令FIFO 3360接收的命令,并将其存储在寄存器配置模块3400中的命令寄存器中。从主机控制器接收的地址被存储在寄存器配置模块3400中的地址寄存器中。从主机控制器接收的数据通过HDMA 3410发送到DRAM 3220。然后,数据控制器3380向ARC600 3280或闪存控制RISC 3250发送中断,该ARC600 3280或闪存控制RISC 3250从命令寄存器读取命令,从地址寄存器读取地址,且向闪存控制RISC 3250传递控制以设置FIM 3260来开始从DRAM 322读取数据并进行ECC和数据加扰操作,其结果被发送到闪存器件330用于存储。ARC600微处理器3280和/或FIM 3260可以进行另外的操作。例如,FIM 3260可以进行列替换,且可以与FIM 360一起使用ARC600微处理器3280来进行以下操作:坏块和空闲块管理、安全区、读取擦洗和损耗平衡。以下更详细地描述这些操作。
对于读取操作,当接收读取命令时,ONFI HIM 3200向ARC600微处理器3280发送中断。然后,ARC600微处理器3280向闪存控制RISC 3250传递命令和地址信息,该闪存控制RISC 3250设置FPS 3430以产生对于NAND闪存器件330的读取命令。一旦数据准备好要从NAND闪存器件330中被读取,FPS 3430就开始向NAND总线发送读取命令。读取的数据经过NAND接口单元3460到达数据解扰器3470,然后经过EDC模块3450,该EDC模块3450生成用于ECC校正的校正子位。然后,该数据和校正子位通过FDMA3440传递,并被存储在DRAM 3220中。然后,闪存控制RISC 3250设置ECC校正引擎3230来校正任何错误。加密模块3300可以在此时解密该数据。然后,ARC600微处理器3280接收中断并对ONFI HIM 3200中的寄存器配置模块3400编程以声明该数据已准备好从DRAM 3220被读取。基于该信息,ONFIHIM 3200从DRAM 3220读取数据,并将其存储在数据FIFO 3370中。然后,ONFI HIM 3200向主机控制器发送准备就绪信号,来通知该数据已准备好被读取。
如上所述,不像其他HIM,ONFI HIM从主机控制器接收(例如对于各个页的)几个更小尺寸的请求,因此要求ONFI HIM同时处理多个(例如八个)读取和写入请求。以此方式,在ONFI HIM和主机控制器之间存在比其他HIM更多的双向通信。与通信中该增加的频率一起得到的是处理多个读取和写入请求的更并行的处理。
图13C和13D分别图示对于读取和写入操作的ONFI HIM的逻辑操作。首先转到图13C,此实施例的ONFI HIM 3480通过ONFI总线3490从主机控制器接收读取命令。ONFI HIM 3480可以以异步或源同步模式操作,且经由信号复用器3500、3530向命令FIFO 3540传送读取命令。(可以分别使用异步和ONFI源同步组件3510、3520以异步模式和源同步模式使用ONFI HIM3480。)ONFI HIM 3480还在逻辑单元数(“LUN”)地址FIFO 3550中存储从主机控制器接收的地址。(此实施例中的NAND控制器支持多个逻辑单元,它们被视为可通过LUN地址而寻址的独立实体。)从FIFO 3540、3550将命令和地址读取到命令和数据控制器3560中,该命令和数据控制器3560同步这些项目。然后,命令和数据控制器3560向系统寄存器控制器3570发送中断,该系统寄存器控制器3570产生对于ARC600微控制器的中断。然后,ARC600微控制器从系统寄存器控制器3570中的寄存器中读取LUN地址,且从闪存器件读取数据的处理如上述。当向DRAM写入所有读取的数据时,ARC600微处理器对系统寄存器控制器3570中的状态寄存器编程,以通知ONFI HIM3480该数据已准备好被读取。然后,ONFI HIM 3480使用读取请求控制单元3585通过HDMA 3580读取数据。读取的数据被存储在读取数据FIFO 3590中,该读取数据FIFO 3590被分区用于每个LUN 3595。一旦此完成,就在状态寄存器中存储准备就绪指示符,且数据被流传送(stream)到主机控制器。
现在转到图13D,在写入操作中,通过ONFI 3410总线从主机控制器接收写入命令。ONFI HIM 3400经由信号复用器3420、3450向命令FIFO 3460传送写入命令。(可以分别使用异步和ONFI源同步组件3430、3440以异步模式和源同步模式使用ONFI HIM 3400。)ONFI HIM 3400还在逻辑单元数(“LUN”)地址FIFO 3470中存储从主机控制器接收的地址。从主机控制器接收的数据被存储在读取数据FIFO 3520中。从FIFO 3460、3470中将命令和地址读取到命令和数据控制器3480中,该命令和数据控制器3480同步这些项目。然后,命令和数据控制器3480向系统寄存器控制器3490发送中断,该系统寄存器控制器3570产生对于ARC600微控制器的中断。然后,ARC600微控制器从系统寄存器控制器3490中的寄存器中读取LUN地址,且从写入操作设置该控制器的处理如上述。HDMA 3530具有与AHB总线3550通信的AHB端口3540,且向DRAM发送该数据。CRC模块3545检查在该数据中的传输错误。一旦数据已被存储在闪存器件330中,且闪存器件330指示准备好,且编程操作的状态是成功或失败,就在系统寄存器控制器3490中的状态寄存器中存储准备就绪指示符,指示ONFI HIM 3400对于来自主机控制器的另一命令已准备好。
返回到图13A,NAND控制器300还可以处理编程失败和擦除失败。由于附于闪存接口模块3020(此后的FIM)的NAND闪存器件330被编程,因此NAND存储器器件330向NAND控制器300(或可选地,通过主机接口模块3010(此后的HIM)向ONFI主机)报告编程操作的成功或失败。由于NAND单元中的缺陷或由于NAND单元具有的关于擦除和编程循环的有限耐用性,NAND存储器器件330可能在存储器的预期寿命中经历某个数量的编程失败。
当编程页操作未成功地完成时,NAND存储器器件330将向控制器300返回失败(FAIL)状态。控制器处理器3040(图13A)或闪存协议定序器3430(图13B)验证每个编程页操作的成功或失败。通常,任何单个编程页操作的失败将使得处理器3040(或可选地ONFI主机)将整个NAND块(其可能包含多个页)视为有缺陷的。有缺陷的块将被报废而不能使用。通常,控制器300将曾经未成功编程的数据和在有缺陷的块中的先前页中的任意数据复制到另一替换块(空闲块)。控制器300可以使用FIM 3020、数据解扰器3190和ECC解码器3170并在需要时应用ECC校正将先前的页读取到BRAM 3050中。然后,按正常方式使用FIM 3020将数据写入到替换块。
编程失败的一个方面是失败编程的一页可能破坏先前被编程的另一页中的数据。通常,这对于MLC NAND存储器将是可能的,该MLC NAND存储器物理上组织为具有共享存储器阵列内的字线的较高和较低逻辑页。通常的使用将是将数据编程到较低页中且将随后的数据编程到较高页中。当在编程字线上的较高页时发生编程失败时防止较低页中的数据的丢失的一个方法是在编程较高页之前读取较低页。可以将较低页数据读取到控制器BRAM 3050中,且可以另外将该较低页数据编程到非易失性闪存器件330中的便笺区中,该便笺区有时称为“安全区”。然后,因此保留在BRAM 3050或安全区中的数据将被保护而免于由于编程失败而丢失,且可用于被复制到替换块,特别是在NAND存储器器件330的较低页中的数据被破坏且不再能够成功读取的情况下。
可能一些NAND失败模式可以类似地破坏在存储器阵列的其他区域中的、比如相邻字线上的数据。将其他可能易受损的数据读取到控制器BRAM3050中和/或将数据保存到便笺区或安全区中的该方法还可以用于在这些情况下保护数据。
在附于FIM 3020的NAND闪存器件330被擦除时,NAND存储器器件330向NAND控制器300(或可选地,通过HIM 3010向ONFI主机)报告块擦除操作的成功或失败。当该擦除操作未成功地完成时,NAND存储器器件330将向控制器300返回失败(FAIL)状态。控制器处理器3040或闪存协议定序器3430中的电路验证每个擦除操作的成功或失败。通常,任何擦除操作的失败将使得处理器3040(或ONFI主机)将整个NAND块视为有缺陷的。有缺陷的块将被报废而不能使用,且替换它使用空闲块。
NAND控制器300还可以处理闪存器件内的编程干扰、擦除干扰和读取干扰。
内部NAND编程操作可能影响或干扰存储器阵列的其他区域,在试图读取那些其他区域时引起错误。防止失败的编程干扰的一个方法是结合编程操作对可能易受损的区域进行读取或“读取擦洗”操作,以便在它们变为不可校正或不可恢复的错误之前检测干扰影响。一旦(通过在读取擦洗操作期间的高的软错误率)检测到干扰情况,控制器处理器3040(或外部ONFI主机)就可以将该数据复制到闪存器件330中的另一区域。
内部NAND擦除操作可能影响或干扰存储器阵列的其他区域,在试图读取那些其他区域时引起错误。防止失败的擦除干扰的一个方法是结合擦除操作对可能易受损的区域进行读取或“读取擦洗”操作,以便在它们变为不可校正或不可恢复的错误之前检测干扰影响。一旦检测到干扰情况,控制器处理器3040(或外部ONFI主机)就可以将数据复制到闪存器件330中的另一区域。
内部NAND读取操作可能影响或干扰存储器阵列的其他区域,在试图读取那些其他区域时引起错误。有时,干扰影响可能随许多读取操作而积累。防止失败的编程干扰的一个方法是结合读取操作对可能易受损的区域进行读取或“读取擦洗”操作,以便在它们变为不可校正或不可恢复的错误之前检测干扰影响。一旦检测到干扰情况,控制器处理器3040(或外部ONFI主机)就可以将数据复制到闪存器件330中的另一区域。
现在参考图13A,NAND控制器300按以下方式处理读取错误。通常,通过FIM 3020被编程到NAND存储器器件330中的数据具有附上的并与该数据一起存储在NAND阵列中的错误检测或错误校正码。对于此功能,控制器300使用ECC编码器3160。当将这样的数据从闪存阵列读取到BRAM 3050时,ECC解码器3170从该数据重新生成ECC码,且将其与当编程到闪存中时附于该数据的ECC码比较。如果该数据与曾写入的数据相同,则ECC电路指示不存在数据错误。如果检测到读取数据中的某些差异,且该差异足够小到在ECC的校正能力内,则由处理器3040控制,(通常被包含在BRAM3050中的)读取的数据被ECC校正引擎3060“校正”或修改以将其恢复到原始值。如果该数据错误超过ECC校正能力,则发生“不可校正的”读取错误。通常,不可校正的读取错误将导致当读取时错误状态被返回到主机接口。
防止不可校正的读取错误或当检测错误时进行恢复的一个方法是控制器300(或外部ONFI主机)重试该读取操作。该重试可以使用偏移的余量电平或其他机制来减少该数据内的错误,可能消除错误或将错误的数量减小到在ECC校正能力内的水平。
可选地,当恢复读取错误时,或如果恢复该数据所需的ECC校正量满足或超过某个阈值,则该数据可以被重写到相同的块或另一块以便将该数据恢复到无错误或改善的状态。可选地,该原始数据位置可被认为是有缺陷的,在该情况下,其可以被标记为有缺陷的,且报废而不能使用。
再次参考图13A,NAND控制器300还可以处理写入中止。写入中止是在编程或擦除操作正进行时对控制器300和NAND存储器器件330的电力的非预期的丢失。电力的丢失可以导致在NAND存储器器件330中的不完整的编程或擦除状况,这可能导致不可校正的读取错误。在一些情况下,诸如MLCNAND,共享字线的其他页(即较低页)可能被对字线的较高页的中止的编程操作而破坏,很像上述的编程失败情况。
存在几种方法来减少或消除写入中止错误、或最小化它们的影响。一个方法是使用低电压检测电路来通知处理器3040电力已经中断。然后,处理器3040可以允许完成当前编程或擦除操作,但不允许开始新操作。理想地,当前操作将具有足够的时间用足够的电力来完成。
可能结合低电压检测方法而使用的一个替换的方法是向电源电路增加电容或电池(或某些替换的电源)来扩展可用的电力来完成编程或擦除操作。
另一方法是提供类似于上述的便笺“安全区”。在较高页编程期间可能易受损的存在于较低页中的任何“旧的”数据可以在较高页编程开始之前被读取并保存在安全区中。这将在电力丢失情况下为先前编程的数据提供保护。在一些实施方式中,不能够读取在写入中止情况下被破坏的数据可能是可接受的,但其他可能不相关的更旧的数据必须受到保护。
另一方法是当控制通电时搜索可能的写入中止错误。如果发现可以确定为写入中止的结果的错误,则可以丢弃该错误数据。在该情况下,控制器300有效地还原到先前的数据,且被中断的操作好像该操作没有发生一样。
再次参考图13A,NAND控制器300还可以对该存储器进行损耗平衡。损耗平衡是通过比否则将由于正常闪存管理算法而发生的更平均地在所有物理块之间分布块使用来增加整体产品耐用性和寿命周期的方法。这通过对空闲块池施加“冷”块并同时将数据从未被主机更新的“冷”块移动到“热”块来实现,其中该空闲块池又将被用于主机数据更新。该交换将得到混合的“热”块和“冷”块。可以随机或周期性地选取用于交换的块或基于热计数(编程-擦除循环的数量)分析而选取用于交换的块进行该交换。可以周期性地、例如以每100个块的循环——这通常通过系统参数来校准以在整个系统性能和块使用的平均之间平衡以平衡损耗和性能开销——来进行该交换。
示例的高级序列是:
1.调度损耗平衡操作。
2.通过热计数分析或基于随机或周期基础来标识“热”块和“冷”块。
3.将数据从所选的“冷”块复制到空闲块池中的所选的“热”空闲块。
4.将“冷”块释放到空闲块池。因此,通过冷块而不是热块来填充空闲块池。
可以跳过一些操作,例如基于分析的块选择。如果检测到块损耗分布为均匀的,则还可以跳过损耗平衡操作本身。
通过处理器3040在固件中进行损耗均衡操作和热计数管理,以便主机控制器121(图3)将不知道这些内务(housekeeping)闪存块级的操作。
参考图13A,控制器300还可以在检测到读取干扰时实现对闪存器件330的读取擦洗。对闪存器件330内的NAND存储器阵列的一个区域的读取操作可能影响或干扰存储器阵列的其他区域,导致单元从一个状态偏移到另一个状态,且最后当试图读取先前存储到那些其他区域的数据时导致位错误。干扰影响可能随着许多读取操作而累积,最后导致可能超过该系统的数据校正能力的多个位错误。超过系统校正能力的错误被称为不可校正的错误。防止失败的编程干扰的一个方法是对可能易受损的区域进行读取或“擦洗”操作,以便在它们变为不可校正或不可恢复的错误之前检测干扰影响。一旦检测到干扰情况,这通常通过检测在读取的数据上的多个错误的位来检测,处理器3040就可以通常通过将该数据复制到NAND存储器阵列的另一区域来将该数据移动到存储器中的另一区域以便“刷新”它。
读取擦洗复制通常通过ECC校正引擎3060(图13A)发现的在主机读取操作或者内部系统读取操作的过程期间读取的块中的可校正ECC错误或者通过调度的读取擦洗扫描而触发。系统读取操作是闪存系统读取在NAND闪存中存储的固件、参数、或映射信息所需的操作。读取擦洗扫描是读取块中的所有数据以确定其中包含的任何数据是否已经被干扰。通常当块在主机读取或系统读取操作的过程期间已经部分被读取时,选择这些块用于读取擦洗扫描,但还可以使用其他标准、比如随机地或经由遍历存储器的块的确定性排序来选择块。因为读取擦洗扫描操作花费时间且影响系统的数据吞吐量,因此系统可以仅周期地或不经常地通过使用随机选择、计数器或其他机制来选择块用于读取擦洗扫描。可以校准调度的频率来在系统性能需求和在受干扰的数据变得不可校正之前检测该受干扰的数据所需的频率之间平衡。在检测到具有高于预定阈值的某个数量的错误位的不可校正的错误时,调度读取擦洗复制用于该块。
读取擦洗复制是这样的方法,通过该方法,数据从受干扰的块中被读取并在具有可校正的ECC错误的所有数据的校正之后被写入到另一块。然后,原始块可以被返回到公共的空闲块池,且最终被擦除且写入其他数据。将通过处理器3040在固件中在NAND控制器300中进行读取擦洗扫描和读取擦洗复制调度,以便主机控制器121将不知道这些内务闪存块级的操作。
涉及进行回拷命令的实施例
如在以上背景部分中描述的,通过典型的回拷操作,NAND闪存器件从其非易失性存储器中的源地址将数据读取到内部寄存器中,然后,将该数据从寄存器中写入到非易失性存储器中的目的地地址中。因为NAND闪存器件不对其在回拷操作中内部移动的数据进行错误校正码(ECC)操作,因此数据中存在的任何错误将传播。在这些实施例中,使用在主机和一个或多个NAND闪存器件之间相接口的控制器来提供ECC功能和其他优化来克服这些问题。虽然可以使用任意适当的架构,但是将结合图3所示的架构来描述这些实施例。(应该注意,NAND接口的使用和图3的其他细节及相应的讨论不应该被解释到权利要求中,除非其中明确列出。)在此实施例中,图3中的控制模块340采用可操作以进行图14所示的动作的电路的形式。如在此使用的,“电路”可以采用例如微处理器或处理器和存储可由(微)处理器、逻辑门、开关、专用应用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如,软件或固件)的计算机可读介质中的一种或多种的形式,如以上讨论和例示的。
现在转到图14中的流程图1400,控制器300从主机320接收源地址和回拷读取命令(动作1410)。然后,控制器300向闪存器件330发送该源地址和回拷读取命令(动作1420)。响应于该命令,闪存器件330从其非易失性存储器中的源地址读取数据,并将该数据写入到内部寄存器中,该内部寄存器可以在该非易失性存储器中或在闪存器件330中的某个其他位置中。(在此,可互换地使用术语“寄存器”、“缓存”和“缓冲器”。)接下来,控制器300从闪存器件330接收数据和与该数据相关的错误校正码(动作1430),并从主机320接收目的地地址和回拷编程命令(动作1440)。然后,控制器300确定该错误校正码是否指示在该数据中存在错误(动作1450)。如果该错误校正码不指示在数据中存在错误,则该控制器330向闪存器件330发送该目的地地址和回拷编程命令(动作1460),响应于此,闪存器件330从寄存器读出数据,并将该数据写到该目的地地址。但是,如果该错误校正码指示在数据中存在错误,则控制器300(使用例如上述ECC校正技术)校正该数据,并向闪存器件330发送该目的地地址、校正后的数据和编程命令(动作1470)。
存在与这些实施例相关的一些优点。例如,不像其中NAND闪存在不检查ECC(因此,传播任何错误)的情况下复制数据的现有回拷操作,通过这些实施例,控制器300检查和校正错误,由此改善数据的可靠性。而且,如果控制器300未检测到错误,则通过允许NAND闪存器件继续其正常复制-写入操作来优化性能,因为控制器300不需要花费时间或带宽来通过NAND接口向NAND闪存器件发送回相同的数据,因为NAND闪存器件已经具有其需要的数据。
在一个实施例中,使用与在ONFI 2.0规范的122-124页上定义的回拷功能类似的命令和地址序列来实现上述功能。例如,参考图3和具体ONFI命令,主机320将通过第一接口325向控制器300发送读取命令(x’00’),后面跟随着源地址和x’35’回拷读取命令。控制器300将通过第二接口335向闪存器件330发送相同的读取命令、源地址和x’35’回拷读取命令。这将使得闪存器件330将数据从其NAND阵列读取到NAND裸片上的寄存器中,且通过第二接口335将该数据传输到控制器300中的BRAM 3050中(见图13A)。控制器300可以如上述进行ECC校正。可选地,还可以通过第一接口325向主机320传输数据。
在完成了读取之后,主机320将通过第一接口325向控制器300发送回拷编程命令(x’85’),后面跟随着目的地地址和x’MM’命令,其中,x’MM’是任意未使用的命令代码。(可选地,可以通过不同的回拷编程命令(有时除了x’35’和x’00’或回拷编程命令x’85’以外)来传达该操作序列。)现在,控制器300可以取决于是否进行了ECC校正而采取两个动作之一。如果没有ECC校正,则控制器300将通过第二接口335向闪存器件330发送回拷写入命令以及目的地地址和x’10’命令,由此避免向闪存器件发送回数据的额外传输时间。但是,如果存在可校正的ECC错误,则控制器300将通过第二接口235向闪存器件330发出(与校正后的数据一起的)正常编程命令x’80’以及目的地地址和x’10’命令。在完成了这些命令中的任一个之后,控制器300可以经由第一接口325向主机320通知完成。
存在可以随这些实施例使用的许多替换。例如,在一个替换中,将数据从相同的闪存裸片或逻辑单元(LUN)中的一个平面复制到另一平面。在该替换中,源地址和目的地地址将在不同平面中,主机320选择不同的平面(例如,在ONFI中的不同的交织的地址)。如果在不同平面之间共享寄存器,则可以使用上述方法。但是,如果不存在共享的寄存器,可能优选进行动作1470,即使错误校正码不指示数据中的错误。
在另一替换中,将数据从一个裸片或LUN复制到另一裸片或LUN。通常在此使用上述方法,但在该替换中,该主机可以向源LUN发出读取状态增强命令,以便唯一地标识该数据来自哪里(如果可以通过不同的源LUN并行地处理多个回拷读取,则应该选择用于回拷写入操作的源)。而且,对于回拷编程命令,主机320可以选择目的地裸片或LUN。因为先前的回拷读取的控制器存储的内容可能与该LUN或裸片相关,因此这还可以包括使得源LUN或裸片和目的地LUN或裸片两者为忙,因为LUN或裸片两者在完成该命令序列之前可能不能处理其他命令。而且,像上述的替换方式那样,如果在LUN或裸片之间不存在共享的寄存器,则可能优选进行动作1470,即使错误校正码不指示数据中的错误。在这些替换的任一个中,还可以使用一个或多个新的并唯一的命令代码来进一步指定这些操作跨过平面、LUN或裸片。作为另一替换,可以没有ECC校正而对不同的平面和/或不同的LUN(或裸片)进行回拷读取和写入。控制器300的使用使能该操作,因为在ONFI 2.0规范中,页寄存器专用于每个平面。
在另一替换中,在相同平面和相同裸片中发生复制的情况下,仍然可以使用回拷读取和回拷写入的正常使用来在没有ECC校正的情况下将数据传输进和传输出闪存器件中的内部寄存器。但是,通过指定设置(Set)或获得(Get)特征命令中的唯一(例如,厂商预留的)字段,可以将回拷读取/回拷写入的默认行为设置为自动进行从闪存器件向控制器300的BRAM中的传输,以进行ECC校正和上述其他操作。以此方式,翻转一位(flipping a bit)可以允许控制器300可选地在任一模式中操作。例如,在一个实施例中,可以向ONFI或TM添加厂商唯一的命令,这允许主机320发出这种命令作为例如页管理或损耗平衡的部分。其他可能性包括使用可以可选地使能或禁用该模式的设置特征命令来在参数页中添加指定回拷功能总是如何工作的额外位,且定义指示应该进行检查和校正的新的第二命令字节(代替ONFI回拷功能中的x35的xNN的第二命令字节)。
另一替换实施例涉及关于对回拷数据的信息(例如头部)的修改(例如,改变或添加)使用ECC。在一些情况下,数据在回拷操作期间改变。例如,ONFI 2.0规范的122-126页讨论主机通过发出改变读取列命令而改变一页的部分、比如头部字段的能力。但是,其不提供用任何错误检查或校正来这样做的方式,因此在头部中面临的任何错误被忽略。而且,在先前段落中讨论的实施例中存在其中控制器300(除了主机320以外或替代主机320)可能想要改变数据的头部信息或另一部分的情况。例如,考虑,如果在其中数据正被复制到不同平面或裸片的回拷操作中使用控制器300(例如,在其中块和页的源和目的地不太可能处于相同裸片或平面中的垃圾收集/回收功能中)。在这种情况下,控制器300可以为正被复制的数据的块或页生成头部信息。头部信息的例子包括但不限于SATA LBA地址(即,逻辑地址)、类型字段(例如数据相对于控制)、物理起始地址、前端地址块分组(Fgroup)中的偏移、数据的全段长度(run length)(如果被划分为两个更小的段,其可能需要被修改)、和耐用性标签(即,损耗平衡或读取擦洗所需的指示)。
在该实施例中,控制器300生成ECC位来覆盖在回拷操作中的修改的数据。现在,将参考图15中的流程图1500来讨论此实施例。首先,控制器300从主机320接收源地址和回拷读取命令(动作1510),并向闪存器件330发送该源地址和回拷读取命令(动作1520)。然后,控制器300从闪存器件320接收数据(动作1530),并修改所接收的数据(动作1540)。接下来,该控制器330产生对于修改后的数据的错误校正码位(动作1550)。当控制器330从主机320接收到目的地地址和回拷编程命令时(动作1560),其向闪存器件330发送目的地地址、具有错误校正码位的修改后的数据和编程命令(动作1570)。
在另一实施例中,控制模块340可以对主机控制器321透明地生成一些修改后的数据(替代该数据来自主机控制器321)。控制模块340如果正在进行坏块管理,则将通常修改一些头部数据。例如,其可以在头部字段中存储逻辑块地址和耐用性(或循环计数)数据。例如,当由于处理读取擦洗或从写入错误的恢复、控制模块340需要重新定位块时,其可以将该块复制到不同的物理块,且需要更新在头部字段中的一些值。该操作将如上所述进行,其中,控制器300从闪存器件320读取、修改该数据,且产生对于修改后的数据的错误校正码。
因此,此实施例使能在不同平面、裸片和LUN之间的复制以及校正ECC错误,可选地包括或重建自动由控制器300或主机320修正的头部字段。如上,可以以任何适当的方式触发此实施例的功能,比如但不限于经由指定回拷功能总是工作的参数页中的额外位、经由可能可选地使能或禁用该模式的设置特征命令、或经由指示检查和校正的新定义的第二命令字节(例如,代替不是ONFI x35命令的的ONFI xNN命令的第二命令字节)。
应该注意,上述的源和/或目的地地址可以是物理地址,或它们可以是被控制器300映射到物理地址的逻辑地址。而且,该地址可以是地址范围(例如“从扇区(from sector)”和“到扇区(to sector)”),或者,该命令可以指定从起始地址起要处理的数据量(例如扇区数量)。或者,可以归因于(impute)从给定的位置起要处理的数据量,因此将不需要指定要处理的数据量(例如在NAND闪存器件330基于单个扇区或单页而操作的情况下)。
而且,应该注意,在回拷操作之后,在源地址处的原始数据可能或可能不保留在源地址处。也就是说,在这些实施例中,“复制”可以指通常被视为是“复制”的任何(例如,在完成该操作之后,原始数据保留在源地址中)。但是,“复制”还可以指通常被视为“移动”的任何(即,在回拷操作之后,原始数据保留在源地址中)。在一个实施例中,回拷命令本身指定数据在源位置处的布置(disposition)。例如,该命令可以包括指定该数据在源位置处的布置的参数(例如,命令串中的标记)。在另一实施例中,数据在源位置处的布置是在该命令的原理中暗含的。例如,可以定义“复制扇区(COPY SECTORS)”命令,以便命令的语义本身暗示在将数据写到目的地位置之后该数据的原始扇区要保持原状(undisturbed)。类似地,可以定义“移动扇区(MOVE SECTORS)”命令,以便命令的语义本身暗示在将数据写到目的地位置之后要采取某种动作(例如,逻辑地删除源扇区中的数据)。
如上所述,数据在源位置处的布置可以采取各种形式。例如,一类布置是将数据照原样留在源位置处。此类布置与通常被视为“复制”操作的事物一致,因为在源位置处的数据保持不动。另一类布置是(例如,通过用零盖写在源位置处的数据)物理地擦除(例如,作为简单的一遍擦除或作为多遍安全擦除)在源位置处的数据。此类布置与通常被视为“移动”或“剪切和粘贴”操作的事物一致,因为在源位置处的数据被移除。此类布置在其中期望避免将数据“残余”留下的安全环境中可能是优选的。另一类布置是逻辑地删除源位置处的数据,这被称为“修整(trimming)”。通过该类布置,不是物理地擦除源位置处的数据,但在分配表中对于该数据的条目或该文件的元数据被标记为已删除、无效或未写入。以此方式,可以在垃圾收集周期中忽略修整的扇区,因此它们不需要被移动。因为该位置处的数据未被物理地擦除,因此如果期望的话,其稍后可以被回收。虽然可以在诸如固态盘或其他类型的闪存器件的某些类型存储器器件中使用删除或修整,但是,对于不具有分配表的诸如硬盘的存储器器件,修整可能不是可用的选择。作为布置类型的另一例子,命令可以指示对于源位置处的数据的“不关心”情况。关于可以在这些实施例中使用的另外的变化的更多信息可以在美国专利申请号12/338,378和12/544,529中找到,其通过引用合并于此。
结论
意图以上详细的描述被理解为是对本发明可以采用的所选形式的例示,且不是对本发明的限定。意图仅以下权利要求、包括所有等效物来定义本发明的范围。而且,以下权利要求中的一些可能陈述了组件可操作以进行某功能或被配置用于某任务。应该注意,这些不是局限性的限制。还应该注意,可以按任意顺序进行权利要求中列出的动作——不是一定要按它们被列出的顺序。
Claims (38)
1.一种进行回拷命令的方法,该方法包括:
在与主机和至少一个闪存器件通信的控制器中进行:
从所述主机接收源地址和回拷读取命令;
向所述至少一个闪存器件发送所述源地址和所述回拷读取命令,其中,响应于接收到所述源地址和所述回拷读取命令,所述至少一个闪存器件从所述源地址读取数据,并将该数据写在所述至少一个闪存器件中的寄存器中;
从所述至少一个闪存器件接收数据和与所述数据相关的错误校正码;
从所述主机接收目的地地址和回拷编程命令;
确定所述错误校正码是否指示在所述数据中存在错误;
如果所述错误校正码没有指示数据中存在错误,则向所述至少一个闪存器件发送所述目的地地址和所述回拷编程命令,其中,响应于接收到所述目的地地址和所述回拷编程命令,所述至少一个闪存器件从所述寄存器读出数据,并将该数据写到所述至少一个闪存器件中的所述目的地地址;以及
如果所述错误校正码指示在数据中存在错误,则:
校正所述数据;以及
向所述至少一个闪存器件发送所述目的地地址、校正后的数据以及编程命令。
2.根据权利要求1的方法,其中,所述源地址和目的地地址是针对所述至少一个闪存器件之一中的存储器的不同平面。
3.根据权利要求2的方法,其中,在不同平面之间共享所述至少一个闪存器件中的寄存器。
4.根据权利要求2的方法,其中,不在不同平面之间共享所述至少一个闪存器件中的寄存器,且其中,所述方法还包括:如果所述错误校正码指示数据中不存在错误,则向所述至少一个闪存器件发送编程命令而不是所述回拷编程命令。
5.根据权利要求1的方法,其中,所述源地址和目的地地址是针对不同的闪存器件。
6.根据权利要求1的方法,其中,所述源地址和目的地地址是物理地址。
7.根据权利要求1的方法,其中,所述源地址和目的地地址是逻辑地址,且其中,所述方法还包括使用所述控制器来将所述逻辑地址翻译为物理地址。
8.根据权利要求1的方法,其中,所述控制器通过第一接口与所述主机通信,且通过第二接口与所述至少一个闪存器件通信。
9.根据权利要求8的方法,其中,所述第一接口和第二接口中的至少一个包括被配置为使用NAND接口协议来传输数据的NAND接口。
10.一种控制器,包括:
第一接口,配置为在主机和所述控制器之间传输数据;
第二接口,配置为在所述控制器和至少一个闪存器件之间传输数据;以及
电路,操作为:
从所述主机接收源地址和回拷读取命令;
向所述至少一个闪存器件发送所述源地址和所述回拷读取命令,其中,响应于接收到所述源地址和所述回拷读取命令,所述至少一个闪存器件从所述源地址读取数据,并将该数据写在所述至少一个闪存器件中的寄存器中;
从所述至少一个闪存器件接收数据和与所述数据相关的错误校正码;
从所述主机接收目的地地址和回拷编程命令;
确定所述错误校正码是否指示在数据中存在错误;
如果所述错误校正码没有指示在数据中存在错误,则向所述至少一个闪存器件发送所述目的地地址和所述回拷编程命令,其中,响应于接收到所述目的地地址和所述回拷编程命令,所述至少一个闪存器件从所述寄存器读出数据,并将该数据写到所述至少一个闪存器件中的目的地地址;以及
如果所述错误校正码指示在数据中存在错误,则:
校正所述数据;以及
向所述至少一个闪存器件发送所述目的地地址、校正后的数据和编程命令。
11.根据权利要求10的控制器,其中,所述源地址和目的地地址是针对所述至少一个闪存器件之一中的存储器的不同平面。
12.根据权利要求11的控制器,其中,在不同平面之间共享所述至少一个闪存器件中的寄存器。
13.根据权利要求1的控制器,其中,不在不同平面之间共享所述至少一个闪存器件中的寄存器,且其中,所述电路还操作为如果所述错误校正码指示在数据中不存在错误,则向所述至少一个闪存器件发送编程命令而不是所述回拷编程命令。
14.根据权利要求10的控制器,其中,所述源地址和目的地地址是针对不同的闪存器件。
15.根据权利要求10的控制器,其中,所述源地址和目的地地址是物理地址。
16.根据权利要求10的控制器,其中,所述源地址和目的地地址是逻辑地址,且其中,所述电路还操作为使用所述控制器来将所述逻辑地址翻译为物理地址。
17.根据权利要求10的控制器,其中,所述第一接口和第二接口中的至少一个包括被配置为使用NAND接口协议来传输数据的NAND接口。
18.一种进行回拷命令的方法,该方法包括:
在与主机和至少一个闪存器件通信的控制器中进行:
从所述主机接收源地址和回拷读取命令;
向所述至少一个闪存器件发送所述源地址和所述回拷读取命令;
对来自所述至少一个闪存器件的修改的数据生成错误校正码位;
从所述主机接收目的地地址和回拷编程命令;以及
向所述至少一个闪存器件发送所述目的地地址、具有所述错误校正码位的修改的数据和编程命令。
19.根据权利要求18的方法,其中,所述源地址和目的地地址是针对所述至少一个闪存器件之一中的存储器的不同平面。
20.根据权利要求19的方法,其中,在不同平面之间共享所述至少一个闪存器件中的寄存器。
21.根据权利要求19的方法,其中,不在不同平面之间共享所述至少一个闪存器件中的寄存器。
22.根据权利要求18的方法,其中,所述源地址和目的地地址是针对不同的闪存器件。
23.根据权利要求18的方法,其中,所述源地址和目的地地址是物理地址。
24.根据权利要求18的方法,其中,所述源地址和目的地地址是逻辑地址,且其中,所述方法还包括使用所述控制器来将所述逻辑地址翻译为物理地址。
25.根据权利要求18的方法,其中,所述控制器通过第一接口与所述主机通信,且通过第二接口与所述至少一个闪存器件通信。
26.根据权利要求25的方法,其中,所述第一接口和第二接口中的至少一个包括被配置为使用NAND接口协议来传输数据的NAND接口。
27.根据权利要求18的方法,其中,通过所述控制器修改所述数据。
28.根据权利要求18的方法,其中,通过所述主机修改所述数据。
29.一种控制器,包括:
第一接口,配置为在主机和所述控制器之间传输数据;
第二接口,配置为在所述控制器和至少一个闪存器件之间传输数据;以及
电路,操作为:
从所述主机接收源地址和回拷读取命令;
向所述至少一个闪存器件发送所述源地址和所述回拷读取命令;
对来自所述至少一个闪存器件的修改的数据生成错误校正码位;
从所述主机接收目的地地址和回拷编程命令;以及
向所述至少一个闪存器件发送所述目的地地址、具有所述错误校正码位的修改的数据和编程命令。
30.根据权利要求29的控制器,其中,所述源地址和目的地地址是针对所述至少一个闪存器件之一中的存储器的不同平面。
31.根据权利要求30的控制器,其中,在不同平面之间共享所述至少一个闪存器件中的寄存器。
32.根据权利要求30的控制器,其中,不在不同平面之间共享所述至少一个闪存器件中的寄存器。
33.根据权利要求29的控制器,其中,所述源地址和目的地地址是针对不同的闪存器件。
34.根据权利要求29的控制器,其中,所述源地址和目的地地址是物理地址。
35.根据权利要求29的控制器,其中,所述源地址和目的地地址是逻辑地址,且其中,所述电路还操作为使用所述控制器来将所述逻辑地址翻译为物理地址。
36.根据权利要求29的控制器,其中,所述第一接口和第二接口中的至少一个包括被配置为使用NAND接口协议来传输数据的NAND接口。
37.根据权利要求29的控制器,其中,通过所述控制器修改所述数据。
38.根据权利要求29的控制器,其中,通过所述主机修改所述数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/650,263 US8443263B2 (en) | 2009-12-30 | 2009-12-30 | Method and controller for performing a copy-back operation |
US12/650,263 | 2009-12-30 | ||
PCT/US2010/057386 WO2011090545A2 (en) | 2009-12-30 | 2010-11-19 | Method and controller for performing a copy-back operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102782654A true CN102782654A (zh) | 2012-11-14 |
CN102782654B CN102782654B (zh) | 2015-03-11 |
Family
ID=44168955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080064996.2A Active CN102782654B (zh) | 2009-12-30 | 2010-11-19 | 用于执行回拷操作的方法和控制器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8443263B2 (zh) |
EP (1) | EP2519879B1 (zh) |
KR (1) | KR101735866B1 (zh) |
CN (1) | CN102782654B (zh) |
TW (1) | TWI514403B (zh) |
WO (1) | WO2011090545A2 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927131A (zh) * | 2014-03-25 | 2014-07-16 | 四川和芯微电子股份有限公司 | 同步闪存u盘的启动方法及其控制系统 |
CN103971717A (zh) * | 2013-01-28 | 2014-08-06 | 三星电子株式会社 | 存储器系统和由存储器系统执行的控制方法 |
CN104199685A (zh) * | 2014-08-13 | 2014-12-10 | 上海新储集成电路有限公司 | 一种i/o设备及具有该i/o设备的计算机系统 |
TWI643072B (zh) * | 2017-02-02 | 2018-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
CN110531937A (zh) * | 2019-08-30 | 2019-12-03 | 四川效率源信息安全技术股份有限公司 | 一种针对主控芯片的数据重组方法 |
US10509566B2 (en) | 2017-02-02 | 2019-12-17 | Silicon Motion, Inc. | Data storage device and operating method of data storage device |
CN113496744A (zh) * | 2020-04-01 | 2021-10-12 | 美光科技公司 | 用于存储器装置的元数据感知回拷 |
CN113986128A (zh) * | 2021-10-26 | 2022-01-28 | 杭州宏杉科技股份有限公司 | Lun数据复制方法及装置 |
CN114080588A (zh) * | 2019-06-06 | 2022-02-22 | 美光科技公司 | 用于存储器装置的擦除速率控制 |
US11327884B2 (en) | 2020-04-01 | 2022-05-10 | Micron Technology, Inc. | Self-seeded randomizer for data randomization in flash memory |
Families Citing this family (255)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US8634240B2 (en) * | 2009-10-28 | 2014-01-21 | SanDisk Technologies, Inc. | Non-volatile memory and method with accelerated post-write read to manage errors |
US8423866B2 (en) * | 2009-10-28 | 2013-04-16 | SanDisk Technologies, Inc. | Non-volatile memory and method with post-write read and adaptive re-write to manage errors |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
JP4746699B1 (ja) * | 2010-01-29 | 2011-08-10 | 株式会社東芝 | 半導体記憶装置及びその制御方法 |
US8892980B2 (en) * | 2010-06-15 | 2014-11-18 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
JP4837121B1 (ja) * | 2010-06-23 | 2011-12-14 | 株式会社東芝 | データ記憶装置及びデータ書き込み方法 |
US9069688B2 (en) | 2011-04-15 | 2015-06-30 | Sandisk Technologies Inc. | Dynamic optimization of back-end memory system interface |
US8464135B2 (en) * | 2010-07-13 | 2013-06-11 | Sandisk Technologies Inc. | Adaptive flash interface |
US8819328B2 (en) | 2010-12-30 | 2014-08-26 | Sandisk Technologies Inc. | Controller and method for performing background operations |
US9135213B2 (en) * | 2011-01-13 | 2015-09-15 | Xilinx, Inc. | Extending a processor system within an integrated circuit and offloading processes to process-specific circuits |
TWI494948B (zh) * | 2011-01-31 | 2015-08-01 | Phison Electronics Corp | 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置 |
TWI464581B (zh) * | 2011-02-21 | 2014-12-11 | Etron Technology Inc | 非揮發性記憶體模組、非揮發性記憶體處理系統、與相關非揮發性記憶體管理方法 |
JP5259755B2 (ja) * | 2011-02-25 | 2013-08-07 | 株式会社東芝 | マルチチャネルを有するメモリ装置及び同装置におけるメモリアクセス方法 |
US9170878B2 (en) * | 2011-04-11 | 2015-10-27 | Inphi Corporation | Memory buffer with data scrambling and error correction |
US8924630B2 (en) * | 2011-06-21 | 2014-12-30 | Taejin Info Tech Co., Ltd. | Semiconductor storage device-based high-speed cache storage system |
US8694719B2 (en) | 2011-06-24 | 2014-04-08 | Sandisk Technologies Inc. | Controller, storage device, and method for power throttling memory operations |
US9406346B2 (en) | 2011-06-30 | 2016-08-02 | Sandisk Technologies Llc | Smart bridge for memory core |
US8432740B2 (en) | 2011-07-21 | 2013-04-30 | Sandisk Technologies Inc. | Program algorithm with staircase waveform decomposed into multiple passes |
US8750042B2 (en) | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US8726104B2 (en) | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US8775901B2 (en) | 2011-07-28 | 2014-07-08 | SanDisk Technologies, Inc. | Data recovery for defective word lines during programming of non-volatile memory arrays |
US9003102B2 (en) | 2011-08-26 | 2015-04-07 | Sandisk Technologies Inc. | Controller with extended status register and method of use therewith |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US9053809B2 (en) * | 2011-11-09 | 2015-06-09 | Apple Inc. | Data protection from write failures in nonvolatile memory |
US8687421B2 (en) * | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
JP2013114644A (ja) * | 2011-12-01 | 2013-06-10 | Fujitsu Ltd | メモリモジュールおよび半導体記憶装置 |
JP5674630B2 (ja) * | 2011-12-02 | 2015-02-25 | 株式会社東芝 | 暗号化演算装置を搭載する不揮発性半導体記憶装置 |
US9208070B2 (en) | 2011-12-20 | 2015-12-08 | Sandisk Technologies Inc. | Wear leveling of multiple memory devices |
US8700961B2 (en) | 2011-12-20 | 2014-04-15 | Sandisk Technologies Inc. | Controller and method for virtual LUN assignment for improved memory bank mapping |
KR20130076430A (ko) * | 2011-12-28 | 2013-07-08 | 삼성전자주식회사 | 적응적 카피백 방법 및 이를 이용한 저장 장치 |
US9141308B2 (en) | 2011-12-30 | 2015-09-22 | Sandisk Technologies Inc. | Controller and method for using a transaction flag for page protection |
US9116620B2 (en) | 2011-12-30 | 2015-08-25 | Sandisk Technologies Inc. | Controller and method for memory aliasing for different flash memory types |
US20130205066A1 (en) * | 2012-02-03 | 2013-08-08 | Sandisk Technologies Inc. | Enhanced write abort management in flash memory |
US9223649B2 (en) * | 2012-02-15 | 2015-12-29 | Sandisk Technologies Inc. | System and method of sending correction data to a buffer of a non-volatile memory |
US8719493B2 (en) | 2012-03-21 | 2014-05-06 | Dell Products L.P. | Memory controller-independent memory sparing |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
DE102012102856A1 (de) * | 2012-04-02 | 2013-10-02 | Minebea Co., Ltd. | Vorrichtung und Verfahren zum Lesen und Speichern von Daten |
US8811074B2 (en) * | 2012-04-03 | 2014-08-19 | Seagate Technology Llc | Parametric tracking to manage read disturbed data |
US8760922B2 (en) | 2012-04-10 | 2014-06-24 | Sandisk Technologies Inc. | System and method for micro-tiering in non-volatile memory |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
KR102072449B1 (ko) * | 2012-06-01 | 2020-02-04 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법 |
US8566671B1 (en) | 2012-06-29 | 2013-10-22 | Sandisk Technologies Inc. | Configurable accelerated post-write read to manage errors |
US9418700B2 (en) * | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
TWI497515B (zh) * | 2012-07-10 | 2015-08-21 | Silicon Motion Inc | 快閃記憶體控制器、快閃記憶體偵錯方法 |
CN103593252B (zh) * | 2012-08-14 | 2017-06-13 | 旺宏电子股份有限公司 | 具有动态错误侦测及更正的存储器 |
US11037625B2 (en) * | 2012-11-20 | 2021-06-15 | Thstyme Bermuda Limited | Solid state drive architectures |
WO2014081719A1 (en) * | 2012-11-20 | 2014-05-30 | Peddle Charles I | Solid state drive architectures |
US9171620B2 (en) | 2012-11-29 | 2015-10-27 | Sandisk Technologies Inc. | Weighted read scrub for nonvolatile memory |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9098205B2 (en) | 2013-01-30 | 2015-08-04 | Sandisk Technologies Inc. | Data randomization in 3-D memory |
JP2014157391A (ja) * | 2013-02-14 | 2014-08-28 | Sony Corp | 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US10452504B2 (en) * | 2013-10-02 | 2019-10-22 | Nxp B.V. | Controller area network (CAN) device and method for emulating classic CAN error management |
US20150121156A1 (en) | 2013-10-28 | 2015-04-30 | Sandisk Technologies Inc. | Block Structure Profiling in Three Dimensional Memory |
US9213601B2 (en) | 2013-12-03 | 2015-12-15 | Sandisk Technologies Inc. | Adaptive data re-compaction after post-write read verification operations |
US9454422B2 (en) * | 2014-01-30 | 2016-09-27 | International Business Machines Corporation | Error feedback and logging with memory on-chip error checking and correcting (ECC) |
US9483295B2 (en) * | 2014-03-31 | 2016-11-01 | International Business Machines Corporation | Transparent dynamic code optimization |
US9384128B2 (en) | 2014-04-18 | 2016-07-05 | SanDisk Technologies, Inc. | Multi-level redundancy code for non-volatile memory controller |
US8918577B1 (en) | 2014-06-13 | 2014-12-23 | Sandisk Technologies Inc. | Three dimensional nonvolatile memory with variable block capacity |
US9613715B2 (en) | 2014-06-16 | 2017-04-04 | Sandisk Technologies Llc | Low-test memory stack for non-volatile storage |
WO2016003449A1 (en) * | 2014-07-01 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Memory controller |
US9606882B2 (en) * | 2014-07-17 | 2017-03-28 | Sandisk Technologies Llc | Methods and systems for die failure testing |
US9710326B2 (en) * | 2014-07-28 | 2017-07-18 | SK Hynix Inc. | Encoder by-pass with scrambler |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US20160041762A1 (en) | 2014-08-08 | 2016-02-11 | Kabushiki Kaisha Toshiba | Memory system, host device and information processing system |
US10002043B2 (en) | 2014-08-19 | 2018-06-19 | Samsung Electronics Co., Ltd. | Memory devices and modules |
US10002044B2 (en) | 2014-08-19 | 2018-06-19 | Samsung Electronics Co., Ltd. | Memory devices and modules |
US9904626B2 (en) * | 2014-08-29 | 2018-02-27 | Samsung Electronics Co., Ltd. | Semiconductor device, semiconductor system and system on chip |
TWI512467B (zh) * | 2014-09-02 | 2015-12-11 | Silicon Motion Inc | 實體儲存對照表維護方法以及使用該方法的裝置 |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9836108B2 (en) * | 2014-09-10 | 2017-12-05 | Toshiba Memory Corporation | Memory system and controller |
US9477549B2 (en) * | 2014-09-15 | 2016-10-25 | Sandisk Technologies Llc | Methods, systems, and computer readable media for address and data integrity checking in flash memory operations |
US9652321B2 (en) * | 2014-09-23 | 2017-05-16 | Intel Corporation | Recovery algorithm in non-volatile memory |
US10008286B2 (en) * | 2014-11-07 | 2018-06-26 | Elwha Llc | Self-testing data storage devices and methods |
TWI545433B (zh) | 2015-03-04 | 2016-08-11 | 慧榮科技股份有限公司 | 實體儲存對照表維護方法以及使用該方法的裝置 |
KR101653999B1 (ko) * | 2015-04-02 | 2016-09-09 | 서울시립대학교 산학협력단 | 낸드 플래시 기반의 스토리지 시스템 및 데이터 보존 강화 방법 |
KR102403266B1 (ko) | 2015-06-22 | 2022-05-27 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US20160378591A1 (en) * | 2015-06-24 | 2016-12-29 | Intel Corporation | Adaptive error correction in memory devices |
US9916091B2 (en) | 2015-07-13 | 2018-03-13 | Samsung Electronics Co., Ltd. | Memory system architecture |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
CN106648439B (zh) * | 2015-07-14 | 2019-11-29 | 上海宝存信息科技有限公司 | 于控制逻辑错误时重新配置存储控制器的方法及装置 |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US9577854B1 (en) | 2015-08-20 | 2017-02-21 | Micron Technology, Inc. | Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding |
JP2017045405A (ja) * | 2015-08-28 | 2017-03-02 | 株式会社東芝 | メモリシステム |
US10198061B2 (en) | 2015-09-01 | 2019-02-05 | Toshiba Memory Corporation | Storage and storage system |
KR20170050935A (ko) * | 2015-11-02 | 2017-05-11 | 에스케이하이닉스 주식회사 | 온 칩 ecc 회로를 포함하는 메모리 장치 및 시스템 |
KR20170052066A (ko) * | 2015-11-03 | 2017-05-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10210041B2 (en) * | 2015-11-05 | 2019-02-19 | SK Hynix Inc. | Systems and methods for low latency copy operations in non-volatile memory |
US10025664B2 (en) * | 2015-12-22 | 2018-07-17 | Western Digital Technologies, Inc. | Selective buffer protection |
US20170344262A1 (en) * | 2016-05-25 | 2017-11-30 | SK Hynix Inc. | Data processing system and method for operating the same |
US10318185B2 (en) * | 2016-07-01 | 2019-06-11 | Intel Corporation | Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive |
US11449232B1 (en) * | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10853233B2 (en) * | 2016-10-18 | 2020-12-01 | Toshiba Memory Corporation | Reconstruction of address mapping in a host of a storage system |
US10489313B2 (en) | 2016-10-31 | 2019-11-26 | Alibaba Group Holding Limited | Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture |
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US10261876B2 (en) | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
TWI663544B (zh) * | 2017-03-02 | 2019-06-21 | 宏碁股份有限公司 | 容錯操作方法與使用此方法的電子裝置 |
US10592329B2 (en) | 2017-03-02 | 2020-03-17 | Acer Incorporated | Method and electronic device for continuing executing procedure being aborted from physical address where error occurs |
US10803972B2 (en) * | 2017-03-06 | 2020-10-13 | Hitachi, Ltd. | Flash memory module, storage system, and method of controlling flash memory |
JP2018152146A (ja) | 2017-03-09 | 2018-09-27 | 東芝メモリ株式会社 | 半導体記憶装置及びデータ読み出し方法 |
US10613772B2 (en) | 2017-03-16 | 2020-04-07 | Qualcomm Incorporated | Methods and apparatuses for copying a data page in an unmanaged flash memory device |
US10164817B2 (en) * | 2017-03-21 | 2018-12-25 | Micron Technology, Inc. | Methods and apparatuses for signal translation in a buffered memory |
US11893265B2 (en) * | 2017-05-02 | 2024-02-06 | Google Llc | Garbage collection for data storage |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
JP6866785B2 (ja) * | 2017-06-29 | 2021-04-28 | 富士通株式会社 | プロセッサおよびメモリアクセス方法 |
US10497447B2 (en) * | 2017-06-29 | 2019-12-03 | SK Hynix Inc. | Memory device capable of supporting multiple read operations |
US20190035445A1 (en) * | 2017-07-31 | 2019-01-31 | CNEX Labs, Inc. a Delaware Corporation | Method and Apparatus for Providing Low Latency Solid State Memory Access |
US10915448B2 (en) | 2017-08-22 | 2021-02-09 | Seagate Technology Llc | Storage device initiated copy back operation |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
KR102469958B1 (ko) * | 2017-10-27 | 2022-11-25 | 삼성전자주식회사 | 블록 주소 없이 액세스되는 불휘발성 메모리 장치 및 그 동작 방법 |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10649656B2 (en) | 2017-12-28 | 2020-05-12 | Micron Technology, Inc. | Techniques to update a trim parameter in non-volatile memory |
TWI658465B (zh) * | 2018-02-02 | 2019-05-01 | 華邦電子股份有限公司 | 記憶體裝置以及其寫入/抹除方法 |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US10725857B2 (en) | 2018-02-27 | 2020-07-28 | Western Digital Technologies, Inc. | Data storage system for improving data throughput and decode capabilities |
US11036578B2 (en) | 2018-04-12 | 2021-06-15 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and memory systems including the same |
IT201800005506A1 (it) * | 2018-05-18 | 2019-11-18 | Sistema di elaborazione, relativo circuito integrato e procedimento | |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US11120882B2 (en) | 2018-08-24 | 2021-09-14 | International Business Machines Corporation | Error recovery of data in non-volatile memory during read |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10607712B1 (en) * | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
US10656995B2 (en) * | 2018-10-03 | 2020-05-19 | Micron Technology, Inc. | Copy-back operations in a memory device |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
KR200490682Y1 (ko) | 2018-10-25 | 2019-12-16 | 아틱스엔지니어링(주) | 실차 시험용 소규모 풍동 |
US10768837B2 (en) * | 2018-10-31 | 2020-09-08 | EMC IP Holding Company LLC | Non-disruptive migration of a virtual volume in a clustered data storage system |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
EP3866016A4 (en) * | 2018-11-20 | 2021-11-10 | Huawei Technologies Co., Ltd. | METHOD AND APPARATUS FOR DELETING INDEX ENTRY IN MEMORY |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
US11010067B2 (en) * | 2018-12-28 | 2021-05-18 | Intel Corporation | Defense against speculative side-channel analysis of a computer system |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US10976950B1 (en) * | 2019-01-15 | 2021-04-13 | Twitter, Inc. | Distributed dataset modification, retention, and replication |
US11113270B2 (en) | 2019-01-24 | 2021-09-07 | EMC IP Holding Company LLC | Storing a non-ordered associative array of pairs using an append-only storage medium |
KR102125350B1 (ko) * | 2019-01-30 | 2020-06-22 | 연세대학교 산학협력단 | 오류 정정 코드를 이용한 적층형 메모리 장치 및 그 수리 방법 |
US10860420B2 (en) | 2019-02-05 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for mitigating read disturb impact on persistent memory |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US10908996B2 (en) * | 2019-02-22 | 2021-02-02 | Intel Corporation | Distribution of a codeword across individual storage units to reduce the bit error rate |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10783035B1 (en) | 2019-02-28 | 2020-09-22 | Alibaba Group Holding Limited | Method and system for improving throughput and reliability of storage media with high raw-error-rate |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US11079958B2 (en) | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
KR102263040B1 (ko) * | 2019-04-23 | 2021-06-09 | 삼성전자주식회사 | 멀티 코어 솔리드 스테이트 드라이브의 운용 방법 |
US11169873B2 (en) * | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US11243699B2 (en) | 2019-05-22 | 2022-02-08 | Micron Technology, Inc. | System using a restricted operation mode memory indicator |
TWI766194B (zh) * | 2019-06-17 | 2022-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN112100087B (zh) | 2019-06-17 | 2024-04-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112099985B (zh) | 2019-06-17 | 2023-09-12 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US10860223B1 (en) * | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
EP3993273A4 (en) * | 2019-07-22 | 2022-07-27 | Huawei Technologies Co., Ltd. | METHOD AND DEVICE FOR DATA COMPRESSION IN A STORAGE SYSTEM, DEVICE AND READABLE STORAGE MEDIUM |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
KR20210020694A (ko) * | 2019-08-16 | 2021-02-24 | 에스케이하이닉스 주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법, 스토리지 장치 및 스토리지 장치를 제어하는 호스트 장치를 포함하는 컴퓨팅 장치 및 그것의 동작 방법 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11210167B2 (en) * | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
US10997019B1 (en) | 2019-10-31 | 2021-05-04 | Alibaba Group Holding Limited | System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media |
US11200159B2 (en) | 2019-11-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating efficient utilization of NAND flash memory |
US11119847B2 (en) | 2019-11-13 | 2021-09-14 | Alibaba Group Holding Limited | System and method for improving efficiency and reducing system resource consumption in a data integrity check |
KR102157571B1 (ko) * | 2019-11-21 | 2020-09-18 | 주식회사 파두 | 메모리 시스템 |
US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
JP2021099642A (ja) * | 2019-12-20 | 2021-07-01 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
US11615029B2 (en) * | 2019-12-30 | 2023-03-28 | Micron Technology, Inc. | Full multi-plane operation enablement |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11604759B2 (en) | 2020-05-01 | 2023-03-14 | EMC IP Holding Company LLC | Retention management for data streams |
US11599546B2 (en) | 2020-05-01 | 2023-03-07 | EMC IP Holding Company LLC | Stream browser for data streams |
US11262938B2 (en) * | 2020-05-05 | 2022-03-01 | Silicon Motion, Inc. | Method and apparatus for performing access management of a memory device with aid of dedicated bit information |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11526279B2 (en) * | 2020-05-12 | 2022-12-13 | Intel Corporation | Technologies for performing column architecture-aware scrambling |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11599420B2 (en) | 2020-07-30 | 2023-03-07 | EMC IP Holding Company LLC | Ordered event stream event retention |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11309052B2 (en) * | 2020-08-25 | 2022-04-19 | Micron Technology, Inc. | Read voltage calibration for copyback operation |
US11567665B2 (en) * | 2020-08-31 | 2023-01-31 | Micron Technology, Inc. | Data dispersion-based memory management |
US11556267B2 (en) * | 2020-08-31 | 2023-01-17 | Micron Technology, Inc. | Data management during a copyback operation |
US11513871B2 (en) | 2020-09-30 | 2022-11-29 | EMC IP Holding Company LLC | Employing triggered retention in an ordered event stream storage system |
US11755555B2 (en) | 2020-10-06 | 2023-09-12 | EMC IP Holding Company LLC | Storing an ordered associative array of pairs using an append-only storage medium |
US11599293B2 (en) | 2020-10-14 | 2023-03-07 | EMC IP Holding Company LLC | Consistent data stream replication and reconstruction in a streaming data storage platform |
KR20220060385A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11494111B2 (en) * | 2020-12-17 | 2022-11-08 | Micron Technology, Inc. | Data operation based on valid memory unit count |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11556270B2 (en) * | 2021-01-07 | 2023-01-17 | EMC IP Holding Company LLC | Leveraging garbage collection for raid transformation |
US11816065B2 (en) | 2021-01-11 | 2023-11-14 | EMC IP Holding Company LLC | Event level retention management for data streams |
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
CN114780014A (zh) * | 2021-01-22 | 2022-07-22 | 伊姆西Ip控股有限责任公司 | 管理元数据存储单元的方法、电子设备和计算机程序产品 |
US11573854B2 (en) * | 2021-02-02 | 2023-02-07 | Nvidia Corporation | Techniques for data scrambling on a memory interface |
DE102021102777A1 (de) * | 2021-02-05 | 2022-08-11 | Infineon Technologies Ag | Verarbeitung von in einem speicher gespeicherter daten |
TWI766582B (zh) * | 2021-02-17 | 2022-06-01 | 群聯電子股份有限公司 | 有效資料合併方法、記憶體儲存裝置及記憶體控制電路單元 |
US20220291858A1 (en) * | 2021-03-15 | 2022-09-15 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11775197B2 (en) * | 2021-03-25 | 2023-10-03 | Kyocera Document Solutions Inc. | Single command for reading then clearing dynamic random access memory |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11740828B2 (en) * | 2021-04-06 | 2023-08-29 | EMC IP Holding Company LLC | Data expiration for stream storages |
US11740821B2 (en) * | 2021-04-12 | 2023-08-29 | EMC IP Holding Company LLC | Cost-aware garbage collection for cloud storage |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11954537B2 (en) | 2021-04-22 | 2024-04-09 | EMC IP Holding Company LLC | Information-unit based scaling of an ordered event stream |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11640253B2 (en) | 2021-06-01 | 2023-05-02 | Western Digital Technologies, Inc. | Method to use flat relink table in HMB |
US11681460B2 (en) | 2021-06-03 | 2023-06-20 | EMC IP Holding Company LLC | Scaling of an ordered event stream based on a writer group characteristic |
US11513720B1 (en) * | 2021-06-11 | 2022-11-29 | Western Digital Technologies, Inc. | Data storage device having predictive analytics |
US11543993B1 (en) * | 2021-06-17 | 2023-01-03 | Western Digital Technologies, Inc. | Fast garbage collection in zoned namespaces SSDs |
US11520510B1 (en) * | 2021-07-21 | 2022-12-06 | International Business Machines Corporation | Extending the lifespan of a flash-based storage device |
US11735282B2 (en) | 2021-07-22 | 2023-08-22 | EMC IP Holding Company LLC | Test data verification for an ordered event stream storage system |
US11733893B2 (en) * | 2021-07-28 | 2023-08-22 | International Business Machines Corporation | Management of flash storage media |
US11902171B2 (en) | 2021-07-30 | 2024-02-13 | Global Unichip Corporation | Communication system between dies and operation method thereof |
US11907564B2 (en) * | 2021-08-03 | 2024-02-20 | Yadro International Ltd. | Method of and system for initiating garbage collection requests |
US11922047B2 (en) * | 2021-09-16 | 2024-03-05 | EMC IP Holding Company LLC | Using RPO as an optimization target for DataDomain garbage collection |
JP2023044330A (ja) * | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11847334B2 (en) * | 2021-09-23 | 2023-12-19 | EMC IP Holding Company LLC | Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments |
US20230136274A1 (en) * | 2021-11-04 | 2023-05-04 | Softiron Limited | Ceph Media Failure and Remediation |
US11841766B2 (en) * | 2021-12-10 | 2023-12-12 | Micron Technology, Inc. | Memory array error correction |
US20230195351A1 (en) * | 2021-12-17 | 2023-06-22 | Samsung Electronics Co., Ltd. | Automatic deletion in a persistent storage device |
US20230236753A1 (en) * | 2022-01-21 | 2023-07-27 | Micron Technology, Inc. | Predictive sanitization of an array of memory with capacitive cells and/or ferroelectric cells |
US20230280926A1 (en) * | 2022-03-03 | 2023-09-07 | Western Digital Technologies, Inc. | Data Relocation With Protection For Open Relocation Destination Blocks |
US11886735B2 (en) * | 2022-03-22 | 2024-01-30 | Micron Technology, Inc. | Data movement based on address table activity |
US11941297B2 (en) | 2022-04-11 | 2024-03-26 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
US11934656B2 (en) * | 2022-04-11 | 2024-03-19 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
KR20230152501A (ko) * | 2022-04-27 | 2023-11-03 | 한국과학기술원 | 플래시 기반 저장 장치 및 그 카피백 동작 방법 |
US20230367511A1 (en) * | 2022-05-11 | 2023-11-16 | Bank Of America Corporation | Smart queue for distributing user requests to automated response generating systems |
US11947452B2 (en) * | 2022-06-01 | 2024-04-02 | Micron Technology, Inc. | Controlling variation of valid data counts in garbage collection source blocks |
US20240012579A1 (en) * | 2022-07-06 | 2024-01-11 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for data placement in a storage device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289314A1 (en) * | 2004-06-23 | 2005-12-29 | Adusumilli Vijaya P | Simultaneous external read operation during internal programming in a flash memory device |
CN1881473A (zh) * | 2005-06-14 | 2006-12-20 | 海力士半导体有限公司 | 控制包括多级单元的闪存器件的回拷贝操作的方法 |
US20080229000A1 (en) * | 2007-03-12 | 2008-09-18 | Samsung Electronics Co., Ltd. | Flash memory device and memory system |
CN101366182A (zh) * | 2005-09-26 | 2009-02-11 | 晟碟以色列有限公司 | 输出nand接口的nand闪存控制器 |
US20090063730A1 (en) * | 2007-08-31 | 2009-03-05 | Gower Kevin C | System for Supporting Partial Cache Line Write Operations to a Memory Module to Reduce Write Data Traffic on a Memory Channel |
CN101398785A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具有多样闪存单元的电子数据闪存卡 |
WO2009134576A1 (en) * | 2008-04-30 | 2009-11-05 | Apple Inc. | Copyback optimization for memory system |
Family Cites Families (128)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5430859A (en) | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5532962A (en) | 1992-05-20 | 1996-07-02 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5799168A (en) | 1996-01-05 | 1998-08-25 | M-Systems Flash Disk Pioneers Ltd. | Standardized flash controller |
US5818757A (en) | 1996-07-22 | 1998-10-06 | Invox Technology | Analog and multi-level memory with reduced program disturb |
JP3565687B2 (ja) | 1997-08-06 | 2004-09-15 | 沖電気工業株式会社 | 半導体記憶装置およびその制御方法 |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US5943283A (en) | 1997-12-05 | 1999-08-24 | Invox Technology | Address scrambling in a semiconductor memory |
US6081851A (en) | 1997-12-15 | 2000-06-27 | Intel Corporation | Method and apparatus for programming a remote DMA engine residing on a first bus from a destination residing on a second bus |
US6034882A (en) | 1998-11-16 | 2000-03-07 | Matrix Semiconductor, Inc. | Vertically stacked field programmable nonvolatile memory and method of fabrication |
US6498851B1 (en) | 1998-11-25 | 2002-12-24 | Sandisk Corporation | Data encryption and signal scrambling using programmable data conversion arrays |
US6181599B1 (en) | 1999-04-13 | 2001-01-30 | Sandisk Corporation | Method for applying variable row BIAS to reduce program disturb in a flash memory storage array |
US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
JP2001297038A (ja) | 2000-04-11 | 2001-10-26 | Toshiba Corp | データ記憶装置および記録媒体並びに記録媒体制御方法 |
DE60037877T2 (de) | 2000-04-13 | 2009-01-29 | A-DATA TECHNOLOGY Co., Ltd., Chung Ho City | Multi-Schnittstellenspeicherkarte und Anpassungsmodul dafür |
US6631085B2 (en) | 2000-04-28 | 2003-10-07 | Matrix Semiconductor, Inc. | Three-dimensional memory array incorporating serial chain diode stack |
US6420215B1 (en) | 2000-04-28 | 2002-07-16 | Matrix Semiconductor, Inc. | Three-dimensional memory array and method of fabrication |
US6266273B1 (en) | 2000-08-21 | 2001-07-24 | Sandisk Corporation | Method and structure for reliable data copy operation for non-volatile memories |
US20030120858A1 (en) | 2000-09-15 | 2003-06-26 | Matrix Semiconductor, Inc. | Memory devices and methods for use therewith |
US7020739B2 (en) | 2000-12-06 | 2006-03-28 | Tdk Corporation | Memory controller, flash memory system having memory controller and method for controlling flash memory device |
US6591330B2 (en) | 2001-06-18 | 2003-07-08 | M-Systems Flash Disk Pioneers Ltd. | System and method for flexible flash file |
JP4059473B2 (ja) | 2001-08-09 | 2008-03-12 | 株式会社ルネサステクノロジ | メモリカード及びメモリコントローラ |
US6760805B2 (en) | 2001-09-05 | 2004-07-06 | M-Systems Flash Disk Pioneers Ltd. | Flash management system for large page size |
TW516118B (en) | 2001-09-11 | 2003-01-01 | Leadtek Research Inc | Decoding conversion device and method capable of supporting multiple memory chips and their application system |
GB0123412D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system sectors |
US6859856B2 (en) | 2001-10-23 | 2005-02-22 | Flex P Industries Sdn. Bhd | Method and system for a compact flash memory controller |
US6704852B2 (en) | 2001-11-16 | 2004-03-09 | Key Technology Corporation | Control device applicable to flash memory card and method for building partial lookup table |
US6977847B2 (en) | 2001-11-23 | 2005-12-20 | M-Systems Flash Disk Pioneers Ltd. | Detecting partially erased units in flash devices |
TWI240861B (en) | 2002-01-11 | 2005-10-01 | Integrated Circuit Solution In | Data access method and architecture of flash memory |
US6683817B2 (en) | 2002-02-21 | 2004-01-27 | Qualcomm, Incorporated | Direct memory swapping between NAND flash and SRAM with error correction coding |
US20030206442A1 (en) | 2002-05-02 | 2003-11-06 | Jerry Tang | Flash memory bridiging device, method and application system |
US6721820B2 (en) | 2002-05-15 | 2004-04-13 | M-Systems Flash Disk Pioneers Ltd. | Method for improving performance of a flash-based storage system using specialized flash controllers |
JP4100968B2 (ja) | 2002-06-06 | 2008-06-11 | 株式会社日立製作所 | データマッピング管理装置 |
US7081377B2 (en) | 2002-06-27 | 2006-07-25 | Sandisk 3D Llc | Three-dimensional memory |
KR100448905B1 (ko) | 2002-07-29 | 2004-09-16 | 삼성전자주식회사 | 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치 |
KR101122511B1 (ko) | 2002-10-28 | 2012-03-15 | 쌘디스크 코포레이션 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
US7171536B2 (en) | 2002-10-28 | 2007-01-30 | Sandisk Corporation | Unusable block management within a non-volatile memory system |
US8037229B2 (en) | 2002-11-21 | 2011-10-11 | Sandisk Technologies Inc. | Combination non-volatile memory and input-output card with direct memory access |
US20050055479A1 (en) | 2002-11-21 | 2005-03-10 | Aviad Zer | Multi-module circuit card with inter-module direct memory access |
DE60317457D1 (de) | 2003-01-31 | 2007-12-27 | St Microelectronics Srl | Einbettbares Flashspeichersystem für nichtflüchtige Speicherung von Kode, Daten und Bitströmen für eingebettete FPGA-Konfigurationen |
US7069370B2 (en) | 2003-01-31 | 2006-06-27 | Toshiba Corporation | USB memory storage apparatus with integrated circuit in a connector |
JP4550439B2 (ja) * | 2003-02-28 | 2010-09-22 | 東芝メモリシステムズ株式会社 | Ecc制御装置 |
US6988175B2 (en) | 2003-06-30 | 2006-01-17 | M-Systems Flash Disk Pioneers Ltd. | Flash memory management method that is resistant to data corruption by power loss |
KR100560767B1 (ko) | 2003-09-02 | 2006-03-13 | 삼성전자주식회사 | 탈착 가능한 저장 장치를 포함하는 시스템 및 그것의 제어방법 |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
TWI226643B (en) | 2003-10-31 | 2005-01-11 | C One Technology Corp | Simulated SmartMedia/xD-Picture memory card using any nonvolatile memory |
US7594135B2 (en) | 2003-12-31 | 2009-09-22 | Sandisk Corporation | Flash memory system startup operation |
US7350044B2 (en) | 2004-01-30 | 2008-03-25 | Micron Technology, Inc. | Data move method and apparatus |
US7136973B2 (en) | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
JP3892851B2 (ja) | 2004-02-04 | 2007-03-14 | 株式会社東芝 | メモリカード及び半導体装置 |
US8019928B2 (en) | 2004-02-15 | 2011-09-13 | Sandisk Il Ltd. | Method of managing a multi-bit-cell flash memory |
JP4398750B2 (ja) | 2004-02-17 | 2010-01-13 | 株式会社東芝 | Nand型フラッシュメモリ |
US7818492B2 (en) | 2004-02-26 | 2010-10-19 | Supertalent Electronics, Inc. | Source and shadow wear-leveling method and apparatus |
KR100648243B1 (ko) | 2004-03-19 | 2006-11-24 | 삼성전자주식회사 | 낸드 플래시 메모리를 사용하는 메모리 카드 |
US7177977B2 (en) | 2004-03-19 | 2007-02-13 | Sandisk Corporation | Operating non-volatile memory without read disturb limitations |
JP4357331B2 (ja) | 2004-03-24 | 2009-11-04 | 東芝メモリシステムズ株式会社 | マイクロプロセッサブートアップ制御装置、及び情報処理システム |
US7406572B1 (en) | 2004-03-26 | 2008-07-29 | Cypress Semiconductor Corp. | Universal memory circuit architecture supporting multiple memory interface options |
US7057939B2 (en) | 2004-04-23 | 2006-06-06 | Sandisk Corporation | Non-volatile memory and control with improved partial page program capability |
KR100678047B1 (ko) * | 2004-05-06 | 2007-02-02 | 삼성전자주식회사 | 낸드 플래시 메모리를 구비한 이동 통신 단말기 및 그의부팅 방법 |
US7139199B2 (en) | 2004-06-28 | 2006-11-21 | Intel Corporation | Flash memory file system with transacted operations |
DK3422583T3 (da) | 2004-08-30 | 2020-09-28 | Google Llc | System og fremgangsmåde for at tilvejebringe ikke-flygtig hukommelsesadministration i trådløse telefoner |
JP4406339B2 (ja) | 2004-09-21 | 2010-01-27 | 株式会社東芝 | コントローラ、メモリカード及びその制御方法 |
US7149119B2 (en) | 2004-09-30 | 2006-12-12 | Matrix Semiconductor, Inc. | System and method of controlling a three-dimensional memory |
JP4828816B2 (ja) | 2004-10-25 | 2011-11-30 | 株式会社東芝 | メモリカード、半導体装置、及びメモリカードの制御方法 |
US20060239450A1 (en) | 2004-12-21 | 2006-10-26 | Michael Holtzman | In stream data encryption / decryption and error correction method |
US6980471B1 (en) | 2004-12-23 | 2005-12-27 | Sandisk Corporation | Substrate electron injection techniques for programming non-volatile charge storage memory cells |
US7177191B2 (en) | 2004-12-30 | 2007-02-13 | Sandisk 3D Llc | Integrated circuit including memory array incorporating multiple types of NAND string structures |
US7187583B2 (en) | 2005-01-25 | 2007-03-06 | Phison Electronics Corp. | Method for reducing data error when flash memory storage device using copy back command |
WO2006106577A1 (ja) * | 2005-03-31 | 2006-10-12 | Spansion Llc | 半導体装置及びその制御方法 |
US7362604B2 (en) | 2005-07-11 | 2008-04-22 | Sandisk 3D Llc | Apparatus and method for programming an array of nonvolatile memory cells including switchable resistor memory elements |
US7345907B2 (en) | 2005-07-11 | 2008-03-18 | Sandisk 3D Llc | Apparatus and method for reading an array of nonvolatile memory cells including switchable resistor memory elements |
US7362611B2 (en) | 2005-08-30 | 2008-04-22 | Micron Technology, Inc. | Non-volatile memory copy back |
US7170788B1 (en) | 2005-09-09 | 2007-01-30 | Sandisk Corporation | Last-first mode and apparatus for programming of non-volatile memory with reduced program disturb |
US7218552B1 (en) | 2005-09-09 | 2007-05-15 | Sandisk Corporation | Last-first mode and method for programming of non-volatile memory with reduced program disturb |
US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7640424B2 (en) | 2005-10-13 | 2009-12-29 | Sandisk Corporation | Initialization of flash storage via an embedded controller |
US7447066B2 (en) | 2005-11-08 | 2008-11-04 | Sandisk Corporation | Memory with retargetable memory cell redundancy |
US7349258B2 (en) | 2005-12-06 | 2008-03-25 | Sandisk Corporation | Reducing read disturb for non-volatile storage |
US7262994B2 (en) | 2005-12-06 | 2007-08-28 | Sandisk Corporation | System for reducing read disturb for non-volatile storage |
WO2007066720A1 (ja) | 2005-12-09 | 2007-06-14 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置並びにデータ書込み方法及びデータ読み出し方法 |
US7355888B2 (en) | 2005-12-19 | 2008-04-08 | Sandisk Corporation | Apparatus for programming non-volatile memory with reduced program disturb using modified pass voltages |
US7355889B2 (en) | 2005-12-19 | 2008-04-08 | Sandisk Corporation | Method for programming non-volatile memory with reduced program disturb using modified pass voltages |
KR20070076849A (ko) | 2006-01-20 | 2007-07-25 | 삼성전자주식회사 | 메모리 카드의 카피백 동작을 수행하는 장치 및 방법 |
US7436713B2 (en) | 2006-04-12 | 2008-10-14 | Sandisk Corporation | Reducing the impact of program disturb |
US7426137B2 (en) | 2006-04-12 | 2008-09-16 | Sandisk Corporation | Apparatus for reducing the impact of program disturb during read |
US7499326B2 (en) | 2006-04-12 | 2009-03-03 | Sandisk Corporation | Apparatus for reducing the impact of program disturb |
US7366029B2 (en) | 2006-04-24 | 2008-04-29 | Sandisk Corporation | High-performance flash memory data transfer |
US7852690B2 (en) | 2006-05-15 | 2010-12-14 | Apple Inc. | Multi-chip package for a flash memory |
US20100031270A1 (en) | 2006-08-01 | 2010-02-04 | Gansha Wu | Heap manager for a multitasking virtual machine |
US20080046630A1 (en) | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080046641A1 (en) | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US7904639B2 (en) * | 2006-08-22 | 2011-03-08 | Mosaid Technologies Incorporated | Modular command structure for memory and memory system |
KR100837274B1 (ko) * | 2006-08-28 | 2008-06-11 | 삼성전자주식회사 | 오토 멀티-페이지 카피백 기능을 갖는 플래시 메모리 장치및 그것의 블록 대체 방법 |
US7848141B2 (en) * | 2006-10-31 | 2010-12-07 | Hynix Semiconductor Inc. | Multi-level cell copyback program method in a non-volatile memory device |
US7468911B2 (en) | 2006-11-02 | 2008-12-23 | Sandisk Corporation | Non-volatile memory using multiple boosting modes for reduced program disturb |
US7440323B2 (en) | 2006-11-02 | 2008-10-21 | Sandisk Corporation | Reducing program disturb in non-volatile memory using multiple boosting modes |
US8019940B2 (en) | 2006-12-06 | 2011-09-13 | Fusion-Io, Inc. | Apparatus, system, and method for a front-end, distributed raid |
US8127200B2 (en) | 2006-12-24 | 2012-02-28 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US7468918B2 (en) | 2006-12-29 | 2008-12-23 | Sandisk Corporation | Systems for programming non-volatile memory with reduced program disturb by removing pre-charge dependency on word line data |
US7450430B2 (en) | 2006-12-29 | 2008-11-11 | Sandisk Corporation | Programming non-volatile memory with reduced program disturb by using different pre-charge enable voltages |
US7463531B2 (en) | 2006-12-29 | 2008-12-09 | Sandisk Corporation | Systems for programming non-volatile memory with reduced program disturb by using different pre-charge enable voltages |
US7433241B2 (en) | 2006-12-29 | 2008-10-07 | Sandisk Corporation | Programming non-volatile memory with reduced program disturb by removing pre-charge dependency on word line data |
US7984360B2 (en) | 2006-12-31 | 2011-07-19 | Ramot At Tel Aviv University Ltd. | Avoiding errors in a flash memory by using substitution transformations |
KR100813630B1 (ko) | 2007-02-07 | 2008-03-14 | 삼성전자주식회사 | 독출 성능을 향상할 수 있는 플래시 메모리 시스템 및그것의 독출 방법 |
US7477547B2 (en) | 2007-03-28 | 2009-01-13 | Sandisk Corporation | Flash memory refresh techniques triggered by controlled scrub data reads |
US7865473B2 (en) | 2007-04-02 | 2011-01-04 | International Business Machines Corporation | Generating and indicating incremental backup copies from virtual copies of a data set |
US8074034B2 (en) | 2007-07-25 | 2011-12-06 | Agiga Tech Inc. | Hybrid nonvolatile ram |
US8095851B2 (en) * | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8301912B2 (en) | 2007-12-31 | 2012-10-30 | Sandisk Technologies Inc. | System, method and memory device providing data scrambling compatible with on-chip copy operation |
US8271515B2 (en) * | 2008-01-29 | 2012-09-18 | Cadence Design Systems, Inc. | System and method for providing copyback data integrity in a non-volatile memory system |
US8059455B2 (en) | 2008-05-09 | 2011-11-15 | Sandisk Il Ltd. | Partial scrambling to reduce correlation |
US8154918B2 (en) | 2008-06-30 | 2012-04-10 | Sandisk Il Ltd. | Method for page- and block based scrambling in non-volatile memory |
KR101086857B1 (ko) * | 2008-07-25 | 2011-11-25 | 주식회사 팍스디스크 | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 |
US8281062B2 (en) | 2008-08-27 | 2012-10-02 | Sandisk Il Ltd. | Portable storage device supporting file segmentation and multiple transfer rates |
US8429330B2 (en) | 2008-09-12 | 2013-04-23 | Sandisk Technologies Inc. | Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations |
KR101515621B1 (ko) * | 2008-09-26 | 2015-04-29 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법 |
US20100161932A1 (en) * | 2008-12-18 | 2010-06-24 | Ori Moshe Stern | Methods for writing data from a source location to a destination location in a memory device |
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 |
US20110040924A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US7818525B1 (en) * | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US8187936B2 (en) | 2010-06-30 | 2012-05-29 | SanDisk Technologies, Inc. | Ultrahigh density vertical NAND memory device and method of making thereof |
JP2012137994A (ja) * | 2010-12-27 | 2012-07-19 | Toshiba Corp | メモリシステムおよびその制御方法 |
-
2009
- 2009-12-30 US US12/650,263 patent/US8443263B2/en not_active Ceased
-
2010
- 2010-11-19 KR KR1020127019786A patent/KR101735866B1/ko active IP Right Grant
- 2010-11-19 EP EP10793073.7A patent/EP2519879B1/en active Active
- 2010-11-19 CN CN201080064996.2A patent/CN102782654B/zh active Active
- 2010-11-19 WO PCT/US2010/057386 patent/WO2011090545A2/en active Application Filing
- 2010-12-14 TW TW099143836A patent/TWI514403B/zh not_active IP Right Cessation
-
2014
- 2014-04-02 US US14/243,637 patent/USRE46013E1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289314A1 (en) * | 2004-06-23 | 2005-12-29 | Adusumilli Vijaya P | Simultaneous external read operation during internal programming in a flash memory device |
CN1881473A (zh) * | 2005-06-14 | 2006-12-20 | 海力士半导体有限公司 | 控制包括多级单元的闪存器件的回拷贝操作的方法 |
CN101366182A (zh) * | 2005-09-26 | 2009-02-11 | 晟碟以色列有限公司 | 输出nand接口的nand闪存控制器 |
US20080229000A1 (en) * | 2007-03-12 | 2008-09-18 | Samsung Electronics Co., Ltd. | Flash memory device and memory system |
US20090063730A1 (en) * | 2007-08-31 | 2009-03-05 | Gower Kevin C | System for Supporting Partial Cache Line Write Operations to a Memory Module to Reduce Write Data Traffic on a Memory Channel |
CN101398785A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具有多样闪存单元的电子数据闪存卡 |
WO2009134576A1 (en) * | 2008-04-30 | 2009-11-05 | Apple Inc. | Copyback optimization for memory system |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103971717A (zh) * | 2013-01-28 | 2014-08-06 | 三星电子株式会社 | 存储器系统和由存储器系统执行的控制方法 |
CN103927131A (zh) * | 2014-03-25 | 2014-07-16 | 四川和芯微电子股份有限公司 | 同步闪存u盘的启动方法及其控制系统 |
CN103927131B (zh) * | 2014-03-25 | 2017-02-15 | 四川和芯微电子股份有限公司 | 同步闪存u盘的启动方法及其控制系统 |
CN104199685A (zh) * | 2014-08-13 | 2014-12-10 | 上海新储集成电路有限公司 | 一种i/o设备及具有该i/o设备的计算机系统 |
US10509566B2 (en) | 2017-02-02 | 2019-12-17 | Silicon Motion, Inc. | Data storage device and operating method of data storage device |
TWI643072B (zh) * | 2017-02-02 | 2018-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
CN114080588A (zh) * | 2019-06-06 | 2022-02-22 | 美光科技公司 | 用于存储器装置的擦除速率控制 |
CN110531937A (zh) * | 2019-08-30 | 2019-12-03 | 四川效率源信息安全技术股份有限公司 | 一种针对主控芯片的数据重组方法 |
CN110531937B (zh) * | 2019-08-30 | 2023-01-06 | 四川效率源信息安全技术股份有限公司 | 一种针对主控芯片的数据重组方法 |
CN113496744A (zh) * | 2020-04-01 | 2021-10-12 | 美光科技公司 | 用于存储器装置的元数据感知回拷 |
US11327884B2 (en) | 2020-04-01 | 2022-05-10 | Micron Technology, Inc. | Self-seeded randomizer for data randomization in flash memory |
US11709771B2 (en) | 2020-04-01 | 2023-07-25 | Micron Technology, Inc. | Self-seeded randomizer for data randomization in flash memory |
US11768766B2 (en) | 2020-04-01 | 2023-09-26 | Micron Technology, Inc. | Metadata aware copyback for memory devices |
CN113986128A (zh) * | 2021-10-26 | 2022-01-28 | 杭州宏杉科技股份有限公司 | Lun数据复制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI514403B (zh) | 2015-12-21 |
CN102782654B (zh) | 2015-03-11 |
KR20120107126A (ko) | 2012-09-28 |
TW201135746A (en) | 2011-10-16 |
USRE46013E1 (en) | 2016-05-24 |
US8443263B2 (en) | 2013-05-14 |
US20110161784A1 (en) | 2011-06-30 |
KR101735866B1 (ko) | 2017-05-15 |
EP2519879B1 (en) | 2013-10-23 |
EP2519879A2 (en) | 2012-11-07 |
WO2011090545A2 (en) | 2011-07-28 |
WO2011090545A3 (en) | 2012-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102782654B (zh) | 用于执行回拷操作的方法和控制器 | |
CN102473126A (zh) | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 | |
US11175984B1 (en) | Erasure coding techniques for flash memory | |
CN104272262B (zh) | 物理页、逻辑页及码字对应 | |
JP6855102B2 (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
CN103488578B (zh) | 虚拟存储设备(vmd)应用/驱动器 | |
TWI480733B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US8386905B2 (en) | Error correcting method, and memory controller and memory storage system using the same | |
TWI531965B (zh) | 控制器及用以執行背景操作之方法 | |
US20110041039A1 (en) | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device | |
CN101622594B (zh) | 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法 | |
CN102317919B (zh) | 在存储器控制器中的数据完整性及方法 | |
US20110040924A1 (en) | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code | |
JP5426711B2 (ja) | メモリコントローラ及び不揮発性記憶装置 | |
CN103052948B (zh) | 用于非易失性半导体存储器的接口管理控制系统和方法 | |
CN102124527A (zh) | 用于检测和替代失效的数据存储器的装置、系统和方法 | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
US20110161565A1 (en) | Flash memory storage system and controller and data writing method thereof | |
TW201337554A (zh) | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 | |
CN104166636A (zh) | 存储器储存装置及其还原方法与存储器控制器 | |
JP4460967B2 (ja) | メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法 | |
US8607123B2 (en) | Control circuit capable of identifying error data in flash memory and storage system and method thereof | |
CN100449498C (zh) | 数据储存装置 | |
TWI777087B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: texas Patentee after: DELPHI INT OPERATIONS LUX SRL Address before: texas Patentee before: Sandisk Corp. |