CN104049910B - 操作存储器系统的方法、存储器系统、和存储器控制器 - Google Patents
操作存储器系统的方法、存储器系统、和存储器控制器 Download PDFInfo
- Publication number
- CN104049910B CN104049910B CN201410098236.3A CN201410098236A CN104049910B CN 104049910 B CN104049910 B CN 104049910B CN 201410098236 A CN201410098236 A CN 201410098236A CN 104049910 B CN104049910 B CN 104049910B
- Authority
- CN
- China
- Prior art keywords
- programming
- memory
- entity
- queue
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
在一个实施例中,该方法包括在存储器控制器的控制下在缓冲器中缓冲接收的数据和相关联的编程实体。该编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储接收的数据的缓冲器的地址,而第二地址信息指示存储器中用于存储接收的数据的地址。该方法进一步包括在存储器控制器处存储管理信息。该管理信息包括编程信息,并且该编程信息包括到缓冲器中的编程实体的指针。该方法进一步包括基于该管理信息和该编程实体将接收的数据从缓冲器传送到存储器。
Description
对相关申请的交叉引用
本申请要求于2013年3月15日提交的韩国专利申请No.10-2013-0028054的优先权,通过引用将其全部内容合并于此。
技术领域
这里描述的本发明概念涉及半导体器件,更具体地,涉及存储器控制器及其操作方法。
背景技术
半导体存储器件是使用诸如硅(Si)、锗(Ge)、砷化镓(GaAs)、磷化铟(InP)等的半导体制造的存储器件。半导体存储器件被分类为易失性存储器件和非易失性存储器件。
易失性存储器件可能在断电时丢失存储的内容。易失性存储器件包括静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)等。非易失性存储器件即使在断电时也可以保留存储的内容。非易失性存储器件包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器件、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。
半导体存储器可以与被配置用于控制半导体存储器的存储器控制器一起使用。存储器控制器可以被配置为控制半导体存储器的读取、编程、擦除、和后台操作。存储器控制器可以具有用于控制半导体存储器以改善半导体存储器的操作性能的各种操作方法。
发明内容
至少一个实施例涉及操作包括存储器的存储器系统的方法。
在一个实施例中,该方法包括:在存储器控制器的控制下,在缓冲器中缓冲接收的数据和相关联的编程实体。编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储接收的数据的缓冲器的地址,并且第二地址信息指示在存储器中用于存储接收的数据的地址。该方法进一步包括在存储器控制器处存储管理信息。管理信息包括编程信息,并且编程信息包括到缓冲器中的编程实体的指针。该方法进一步包括基于管理信息和编程实体将接收的数据从缓冲器传送到存储器。
在一个实施例中,通过多个编程步骤来执行所述传送,其中,每个编程步骤细化在存储器中对于接收的数据的存储。
在一个实施例中,接收的数据包括最低有效位页数据和最高有效位页数据。在另一实施例中,接收的数据还包括中间有效位页数据。
在一个实施例中,该方法进一步包括接收与第一逻辑地址相关联的第一页数据和第二页数据。第一页数据表示最低有效页数据。第二页数据表示最高有效页数据。其中,所述缓冲将第一页数据和第二页数据缓冲作为接收的数据。
在一个实施例中,所述传送使用用于每一个编程步骤的第一地址信息来访问接收的数据。
在一个实施例中,所述存储包括基于所述传送的编程步骤来在编程队列的多个级(stage)之一中存储指针。
在一个实施例中,所述多个编程步骤包括第一、第二、和第三编程步骤,并且所述多个级包括第一、第二、和第三编程级。在一个实施例中,如果指针被存储在第一级中则所述传送执行第一编程步骤,如果指针被存储在第二个级中则所述传送执行第二编程步骤,并且如果指针被存储在第三级中则所述传送执行第三编程步骤。在一个实施例中,所述传送包括:如果指针被存储在第一级中,则基于编程实体来在存储器控制器的存储器管理器中存储与第一编程步骤相关的第一命令;如果指针被存储在第二级中,则基于编程实体来在存储器控制器的存储器管理器中存储与第二编程步骤相关的第二命令;以及如果指针被存储在第三级中,则基于编程实体来在存储器控制器的存储器管理器中存储与第三编程步骤相关的第三命令。在一个实施例中,所述传送包括分别基于第一、第二、和第三命令,通过存储器管理器来执行第一、第二、和第三编程步骤。
在一个实施例中,该方法进一步包括如果满足期望的条件则触发回滚操作。如果第一、第二、和第三命令中的一个被存储在存储器管理器处并且存储的命令没有完成,则为指针执行回滚操作。所述回滚操作包括将指针从多个级的当前级移动到多个级的前一级。
在一个实施例中,第一、第二、和第三编程级的每个包括用于存储指针的多于一个指针条目槽(slot)。
在一个实施例中,多个编程级包括至少一个附加级。
在一个实施例中,所述存储包括在第一编程步骤之后将指针从第一编程级移动到第二编程级,在第二编程步骤之后将指针从第二编程级移动到第三编程级,以及在第三编程步骤之后将指针从第三编程级移动到附加编程级。
在一个实施例中,该方法进一步包括在指针被存储在附加编程级之后一旦满足期望的条件就从编程队列中释放指针。例如,期望的条件可以是阈值数目的指针被存储在附加级中。
在一个实施例中,在指针被存储在附加级中之后,从编程队列中释放指针。
在一个实施例中,该方法包括响应于读取请求而从缓冲器中读取接收的数据,直到指针被释放为止。
在一个实施例中,该方法包括如果满足期望的条件则执行回滚操作。所述回滚操作包括将指针从多个级的当前级移动到多个级的前一级。
在一个实施例中,该方法进一步包括从编程队列池(queue pool)中分配编程队列。
在一个实施例中,第一、第二、和第三编程步骤利用接收的数据来编程存储器,并且第一编程步骤与第三编程步骤相比涉及更少数量的阈值状态。
在一个实施例中,第一编程步骤是1步编程,第二编程步骤是粗略编程,并且第三编程步骤是精细编程。
在一个实施例中,所述缓冲将至少第一和第二接收的数据和相应的第一和第二编程实体缓冲在缓冲器中,所述存储对分别用于第一和第二编程实体的第一和第二指针进行存储,并且所述传送在执行用于传送第一接收的数据的第二编程步骤之前执行用于传送第二接收的数据的第一编程步骤。
在一个实施例中,所述缓冲对多个接收的数据进行缓冲,并且所述存储在编程队列的多个级的一个中存储多个指针。所述多个指针中的每一个与多个接收的数据中的相应一个相关联,并且多个级包括分别与多个编程步骤的每一个相关联的级。基于多个级的哪一个存储了相关的指针,所述传送执行用于多个接收的数据的多个编程步骤的相应编程步骤。在一个实施例中,所述存储包括管理在多个级之间的多个指针的移动。在一个实施例中,所述传送以根据传送协议的顺序将多个接收的数据从缓冲器传送到存储器。该传送协议基于多个级的哪一个存储了多个指针来确定该顺序。
在一个实施例中,基于在存储器控制器处执行的状态机来执行缓冲、存储、和传送。
在一个实施例中,所述缓冲在动态随机存取存储器中缓冲接收的数据和相关的编程实体,所述存储在静态随机存取存储器中存储管理信息,并且所述传送将接收的数据从动态随机存取存储器传送到非易失性存储器中。
在一个实施例中,该管理信息包括:相对于接收的数据从外部设备接收的命令、相对于接收的数据从外部设备接收的地址、在缓冲器中的接收的数据的逻辑地址、以及在缓冲器中的接收的数据的物理地址。
在一个实施例中,所述缓冲包括:确定与新的数据相关联的从外部设备接收的逻辑地址和与接收的数据相关联的逻辑地址是否匹配;并且如果确定匹配则执行更新过程。该更新过程包括:确定新的数据是否是有效的并且与接收的数据具有相同的尺寸。并且如果新的数据是有效的并且具有相同的尺寸,则缓冲更新过程包括在缓冲器中将新的数据缓冲作为新接收的数据。如果新的数据不是既有效的且具有与接收的数据相同的尺寸,则缓冲更新过程包括将新的数据与接收的数据的一部分进行组合,以制作组合数据,并且在缓冲器中将组合数据缓冲作为新接收的数据。
在一个实施例中,所述缓冲包括产生编程实体。这里,所述产生可以在缓冲接收的数据之后产生编程实体。例如,所述产生基于从外部设备接收的命令和地址来产生编程实体。
在另一个实施例中,该方法包括:在缓冲器处接收一组页数据,以及在缓冲器处从存储器控制器接收与该组页数据相关联的编程实体。编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储该组页数据的缓冲器的地址,第二地址信息指示用于存储该组页数据的非易失性存储器中的地址。该方法进一步包括在非易失性存储器中执行多个编程步骤,以在非易失性存储器中存储该组页数据。
在一个实施例中,该方法进一步包括在非易失性存储器的存储管理器处接收命令。该命令指示编程步骤之一和第二地址信息。这里,所述执行基于该命令来执行所述多个编程步骤之一。
在一个实施例中,该方法进一步包括:通过处理器读取编程实体;及通过处理器向存储器管理器发送命令。
在一个实施例中,该方法进一步包括:在读取编程实体之前通过处理器从本地存储器中读取管理信息,存储器控制器包括该本地存储器。例如,管理信息可以指示缓冲器中的编程实体的位置。
至少一个实施例还涉及存储器系统。
在一个实施例中,该存储器系统包括:非易失性存储器、缓冲器、和存储器控制器的处理器。缓冲器被配置为存储多组页数据,并且被配置为存储多个编程实体。多个编程实体的每一个与多组页数据中的不同的一个相关联。存储器控制器的处理器被配置为使得多个编程实体的至少两个不同的程序实体被顺序地访问。处理器被配置为基于访问的编程实体,将命令发送到存储器控制器的存储器管理器。存储器管理器被配置为基于命令,将来自多组页数据的页数据存储在非易失性存储器中。
在另一实施例中,该存储器系统包括:非易失性存储器、缓冲器、和存储器控制器的处理器。缓冲器被配置为存储多组页数据,并且被配置为存储多个编程实体。多个编程实体的每一个与多组页数据中的不同的一个相关联。存储器控制器的处理器被配置为从本地存储器中读取管理信息。存储器控制器包括本地存储器。处理器被配置为从编程实体访问编程信息,并且基于管理信息将命令发送到存储器控制器的存储器管理器。存储器管理器被配置为基于命令,将来自多组页数据的页数据存储在非易失性存储器中。处理器被配置使得多个编程实体的至少两个不同的程序实体被顺序地访问。
在另一实施例中,该存储器系统包括:非易失性存储器、缓冲器、和存储器控制器的处理器。缓冲器被配置为存储多组页数据,并且被配置为存储多个编程实体。多个编程实体的每一个与多组页数据中的不同的一个相关联。存储器控制器的处理器被配置为从本地存储器读取管理信息。存储器控制器包括本地存储器。处理器被配置为从编程实体访问编程信息,并且基于管理信息将命令发送到存储器控制器的存储器管理器。存储器管理器被配置为基于命令,将来自多组页数据的页数据存储在非易失性存储器中。处理器被配置为发送命令,以使得(i)存储器管理器在多个编程步骤中对一组页数据进行编程,以及(ii)至少两个顺序执行的编程步骤与不同组的页数据相关联。
在另一实施例中,该存储器系统包括被配置为存储管理信息的存储器控制器的本地存储器。存储器系统进一步包括被分为数据区和编程信息区的缓冲器存储器。数据区被配置为存储多组页数据,并且编程信息区被配置为存储用于每组页数据的编程信息。用于每组页数据的编程信息指示用于存储该组页数据的非易失性存储器中的地址。存储器控制器的处理器被配置为访问本地存储器和缓冲器存储器。
至少一个实施例还涉及存储器控制器。
在一个实施例中,该存储器控制器被配置为在缓冲器中存储接收的数据和相关联的编程实体。编程实体包括第一地址信息和第二地址信息。第一地址信息指示存储接收的数据的缓冲器的地址,并且第二地址信息指示用于存储接收的数据的非易失性存储器中的地址。存储器控制器被配置为在存储器控制器的本地存储器中存储管理信息。管理信息包括编程信息,并且编程信息包括到缓冲器中的编程实体的指针。存储器控制器被配置为基于管理信息和编程实体,将接收的数据从缓冲器传送到非易失性存储器。
附图说明
通过参考附图的以下描述,上述和其他目的和特征将变得清楚,附图中,除非另有规定,各种附图中始终以相同的附图标记指示相同的部件,其中:
图1是示意性地示出根据本发明构思的实施例的存储器系统的框图;
图2是示出根据本发明构思的实施例的存储器控制器的操作方法的流程图;
图3是示意性地示出编程队列的图;
图4是示出第二处理器和状态机141的操作方法的状态转换图;
图5是示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图;
图6至29是示出根据图5所示的操作方法的存储器系统的数据处理操作的图;
图30是示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图;
图31到41是示出根据图30所示的操作方法的存储器系统的数据处理操作的图;
图42是示意性地示出当非易失性存储器执行1步编程、粗略编程和精细编程时存储器单元的阈值电压的变化的图;
图43是示意性地示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图;
图44是示意性地示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图;
图45是示出其中从图41的状态中释放实体指针的示例的图;
图46是示意性地示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图;
图47是示意性地示出其中根据图46的方法在缓冲器存储器处存储更新数据的示例的图;
图48是示意性地示出根据本发明构思的另一实施例的存储器系统的框图;
图49是示意性地示出根据本发明构思的另一实施例的固态驱动器的框图;以及
图50是示意性地示出根据本发明构思的实施例的计算设备的框图。
具体实施方式
下面将参考附图详细描述实施例。但是,本发明的概念也可以体现在各种不同的形式,并且不应当被解释为仅限于所示的实施例。相反,作为示例来提供这些实施例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分地传达本发明的原理。因此,相对于本发明构思的一些实施例不对已知的方法、元件、和技术进行说明。除非另有说明,否则在整个附图和书面描述中,相同的标号表示相同的元件,因此将不再重复描述。在附图中,为了清晰起见,可以夸大层和区域的尺寸和相对尺寸。
应当理解的是,虽然在本文中术语“第一”、“第二”、“第三”等可以用来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该受这些术语的限制。这些术语仅用将一个元件、组件、区域、层或部分与另一区域、层或部分相区别。因此,下面讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分,而不脱离本发明构思的教导。
在本文中使用空间相对术语,如“下”、“下方”、“之下”、“上”、“上方”、“之上”等,以便于描述,从而在附图中描述一个元件或特征与另一个元件或特征的关系。但可以理解的是,空间相对术语旨在涵盖除了在附图中描述的取向之外的设备的使用或操作的不同取向。例如,如果在附图中的设备被翻转,则描述为在其他元件或特征“下方”或“之下”或“下”的元件将被定向为在其他元件或特征“上方”。因此,示范性术语“之下”和“下方”可以包括上方和下方两种取向。设备可以被另外定向(旋转90度或者在其他取向),并且对在此使用的空间相对描述符做出相应的解释。另外,将被理解的是,当层被称为在两个层“之间”时,其可以是在两个层之间唯一的层,或者也可以存在一个或多个中间层。
本文所用的术语仅用于描述特定实施例,并不旨在限制本发明构思的目的。如本文所使用的,除非上下文另有明确说明,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。应该进一步理解,在本说明书中使用时,术语“包括”和/或“包含”指示所陈述的特征、整数、步骤、操作、元件、和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。如本文所用,术语“和/或”包括相关联的所列项目的一个或多个的任意和所有组合。此外,术语“示范性”旨在表示示例或说明。
应当理解的是,当元件或层被称为在另一元件或层“上”、“连接到”、“耦合到”另一个元件或层、或与另一个元件或层“相邻”时,其可以直接在另一个元件或层上,直接连接耦合到另一个元件或层,或者与另一个元件或层相邻,或者可以存在中间元件或层。与此相反,当元件被称作“直接在”、“直接连接到”、“直接耦合到”、或“直接相邻”另一元件或层时,则不存在中间元件或中间层。
除非另有定义,否则本文使用的所有术语(包括技术和科学术语)具有由本发明概念所属的本领域普通技术人员之一通常理解的相同的含义。将进一步理解的是,术语,例如那些在常用字典中定义的术语应该被解释为具有与它们在相关技术和/或本说明书的上下文中一致的含义,并且除非这里明确地如此定义,否则不应该被解释理想化的或过于正式的意义。
图1是示意性地示出根据本发明构思的实施例的存储器系统100的框图。参照图1,存储器系统100包括总线110、第一处理器120、主机接口125、第一存储器130、第二处理器140、第二存储器150、缓冲器管理器160、缓冲器存储器170、存储器管理器180、以及非易失性存储器190。虽然将相对于第一和第二处理器120和140来对操作进行描述,但可以理解,操作也可以由单个处理器来执行,或者由两个以上的处理器来执行。另外,应该理解,第一和第二存储器130和150可以代替为单个存储器。
总线110提供存储器系统100的构成元件之间的信道。总线110可以基于诸如AMBA、AHB等的各种标准中的至少一个来操作。
第一处理器120处理与外部设备(例如,主机)的通信。例如,第一处理器120可以处理通过主机接口125从外部设备接收的命令、地址、和数据。第一处理器120可以将通过主机接口125从外部设备接收的命令和地址发送给第二处理器140。第一处理器120可以使用缓冲器管理器160控制在缓冲器存储器170中存储通过主机接口125接收的数据。
例如,当通过主机接口125接收数据时,第一处理器120可以分配在其中将要存储数据的缓冲器存储器170的区域。使用缓冲器管理器160在缓冲器存储器170的分配的存储区域中存储通过主机接口125接收的数据。例如,当通过主机接口125接收命令和地址时,第一处理器120可以从主机接口125接收地址和命令。第一处理器120可以在第一存储器130中存储接收的地址和命令。在通过主机接口125接收的数据被存储在缓冲器存储器170之后,主机接口125可以向外部设备发送通知与命令相对应的请求已经完成的信号。在通过主机接口125接收的数据被存储在缓冲器存储器170中之后,第一处理器120可以向第二存储器150发送被存储在第一存储器130的地址和命令。第一处理器120可以将存储在第一存储器130中的地址和命令转换为具有第二处理器140的数据结构,并且可以将转换的地址和命令传送到第二处理器140。转换的地址可以包括缓冲器存储器170中的存储的数据的逻辑地址、以及指示存储的数据位于缓冲器存储器170中的何处的物理地址。
主机接口125可以根据第一处理器120的控制与外部设备进行通信。主机接口125可以使用缓冲器管理器160在缓冲器存储器170中存储从外部设备接收的数据。主机接口125可以发送从外部设备接收的命令或地址到第一处理器120。
第一存储器130可以是第一处理器120的工作存储器。第一存储器130可以是SRAM。第一存储器130可以与第一处理器120集成在半导体芯片中。第一存储器130可以与第一处理器120集成在半导体芯片的相同的硬件块中。第一存储器130可以是与第一处理器120集成的嵌入式SRAM。
第二处理器140基于从第一处理器120接收的已转换的命令和地址进行操作。基于接收的命令或地址,第二处理器140可以使用存储器管理器180来控制非易失性存储器190的读取、编程、擦除、或后台(background)操作。例如,非易失性存储器190可以是闪速存储器,而第二处理器140可以被配置为控制闪速存储器的操作。
第二处理器140可以包括状态机141。状态机141可以是在第二处理器140中实现的硬件或者由第二处理器140执行的软件。状态机141可以控制非易失性存储器190的编程操作。在示例实施例中,状态机141可以基于第二存储器150内管理的编程队列来控制非易失性存储器190的编程操作。
第一和第二处理器120和140可以是在硬件上相互分离的。例如,第一和第二处理器120和140可以被集成在半导体芯片上,并且可以由在半导体芯片中分离的硬件模块来形成。替换地,第一和第二处理器120和140可以是彼此分开的半导体芯片。
第二处理器140可以包括至少两个或更多个处理器。当第二处理器140由至少两个或更多个处理器形成时,则第二存储器150可以包括分别对应于所述至少两个或更多个处理器的至少两个或多个存储器。
第二存储器150可以是第二处理器140的工作存储器。第二存储器150可以包括SRAM。第二存储器150可以存储与消息队列151、编程队列池153、和实体指针池155相关的信息。
消息队列151可以被分配给第二存储器150的特定存储区域。消息队列151可以被配置为存储从第一处理器120传送的消息(例如,命令和地址)。第二处理器140可以基于存储在消息队列151中的消息(例如,命令和地址),来管理存储在第二存储器150的编程队列、以及存储在缓冲器存储器170的数据,并且可以在状态机的控制下控制非易失性存储器190的编程操作。
编程队列池153可以被分配给第二存储器150中的特定存储区域。该特定存储区域可以是被准备用于分配编程队列的存储区域。第二处理器140可以分配来自编程队列池153的编程队列,基于存储在消息队列151中的信息(例如,命令和地址)来更新编程队列或释放编程队列。第二处理器140可以基于状态机的控制下的编程队列来控制非易失性存储器190的编程操作。
实体指针池155可以被分配给第二存储器150的特定存储区域。该特定存储区域可以是被准备用于分配实体指针的存储区域。实体指针可以包括关于在缓冲器存储器170的实体区域173存储的编程实体的信息(例如,地址、状态信息等)。第二处理器140可以根据存储在消息队列151的消息来分配来自实体指针池155的实体指针。分配的实体指针可以被存储在编程队列。第二处理器140可以根据在状态机的控制下存储在消息队列151中的消息来管理或释放实体指针。
缓冲器管理器160在第一处理器120或第二处理器140的控制下控制缓冲器存储器170。缓冲器管理器160可以控制缓冲器存储器170的读取或写入操作。
缓冲器存储器170可以响应于缓冲器管理器160的控制来操作。缓冲器存储器170可以用于存储使得第二处理器140控制非易失性存储器190执行读操作、编程操作、或擦除操作的数据。缓冲器存储器170可以包括DRAM。缓冲器存储器170可以包括缓冲区域171和实体(entity)区域173。
缓冲区域171可以存储通过主机接口125从外部设备(例如,主机)接收的数据。缓冲区域171可以响应于第一处理器120和缓冲器管理器160的控制而存储数据。
实体区域173可以存储编程实体。编程实体可以包括存储在缓冲区域171中的数据的信息(例如,地址)、以及在其中将要存储在缓冲区域171存储的数据的非易失性存储器190的信息(例如,地址)。实体区域173可以响应于第二处理器140和缓冲器管理器160的控制来存储编程实体。
存储器管理器180可以响应于通过第二处理器140的控制来控制非易失性存储器190。存储器管理器180可以控制非易失性存储器190的读取、编程、擦除、或后台操作。
存储器管理器180包括命令队列181。命令队列181可以响应于第二处理器140的控制来存储命令(例如,与编程相关联的信息)。存储器管理器180可以基于存储在命令队列181的命令来控制非易失性存储器190的读取、编程、擦除、或后台操作(例如,与编程相关联的信息)。
非易失性存储器190可以响应于存储器管理器180的控制来操作。非易失性存储器190可以包括多个存储器块191至19n,其中每一个可以包括多个存储器单元(未示出)。每个存储器块中的存储器单元可以与字线(未示出)和位线(未示出)连接。例如,每个存储器块中的存储器单元的行可以分别与字线连接。每个存储器块中的存储器单元的列可以分别与位线连接。
每个存储器单元可以存储两个或更多个位。在每个存储器单元存储两个位的情况下,存储在每个存储器单元处的位可以是最低有效位和最高有效位。在每个存储器单元存储3位的情况下,存储在每个存储器单元的位可以是最低有效位、中间位和最高有效位。在每个存储器单元存储4位的情况下,存储在每个存储器单元的位可以是最低有效位、第一中间位、第二中间位、和最高有效位。存储在每个存储器单元的位的数目可以不受限制。下面,假定每个存储器单元存储最低有效位、中间位、和最高有效位。
在连接到字线的存储器单元中,存储在每个存储器单元中的每一个位可以形成页。例如,存储在连接到相同的字线的存储器单元的LSB可以形成LSB页。存储在连接到相同的字线的存储器单元的中间位可以形成中间页。存储在连接到相同的字线的存储器单元的MSB可以形成MSB页。
正如将在下面详细描述的,可以根据直接重新编程方法来实现将这些多个页存储在连接到相同的字线的存储器单元。直接重新编程方法包括多个编程步骤,其中,每个编程步骤细化在存储器中的接收的数据的存储。
如图42所示,在一个实施例中,直接重新编程可以以1步编程、粗略编程、和精细编程的顺序来执行。具体地,图42示出当执行1步编程、粗略编程、和精细编程行时存储器单元的阈值电压的变化。考虑到来自相邻字线的耦合,1步编程、粗略编程、和精细编程可能具有日益提高的精度。1步编程、粗略编程、和精细编程可以基于存储在缓冲器存储器170的数据,而不是存储在非易失性存储器190的数据来执行。因此,当1步编程、粗略编程、和精细编程顺序地执行时,能够防止来自相邻的字线的耦合进行累积。
在示例实施例中,非易失性存储器190的字线可以具有三个编程地址和三个读取地址。三个编程地址可分别对应于1步编程、粗略编程、和精细编程。在编程中,存储器管理器180可以发送三个编程地址之一和编程命令到非易失性存储器190。在读取时,存储器管理器180可发送三个读取地址之一和读取命令到非易失性存储器190。三个读取地址可以分别对应于LSB、中间、和MSB页。
在示例实施例中,非易失性存储器190的字线可以具有编程地址和三个读取地址。在编程中,存储器管理器180可以发送一个编程地址和指示1步编程、粗略编程、或精细编程的编程命令到非易失性存储器190。在读取时,存储器管理器180可发送三个读取地址之一和读取命令到非易失性存储器190。三个读取地址可以分别对应于LSB、中间、和MSB页。
将在下面更详细地描述直接重新编程。
在示例实施例中,非易失性存储器190可以是NAND闪存。然而,本发明概念不限于此。非易失性存储器190可以包括诸如相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等的非易失性存储器中的至少一种。下面,假定非易失性存储器190是NAND闪存。
在示例实施例中,总线110、第一处理器120、第一存储器130、第二处理器140、第二存储器150、缓冲器管理器160、和存储器管理器180可以形成用于控制非易失性存储器190的存储器控制器MC。存储器控制器可以由半导体封装形成。缓冲器存储器170可以由与存储器控制器分离的另一个半导体封装形成。
图2是示出根据本发明构思的实施例的存储器控制器的操作方法的流程图。图2中,将示范性地示出用于控制非易失性存储器190的编程操作的操作方法。参照图2,在操作S110,例如,可以从主机设备接收页数据。
在操作S120,接收的页数据可以被存储在缓冲器存储器170中。
在操作S130,可以产生指示接收的页数据的编程实体,并且产生的编程实体可以被存储在缓冲器存储器170中。例如,编程实体可以指示存储在缓冲器存储器170中的数据的页数据的期望的(或替换地,预定的)数量。页数据可以是被编程到非易失性存储器190中的一个页的数据。例如,通过一个编程实体指示的页数据的数目可以是连接到一条字线的存储器单元处编程的页数据的数目。
在操作S140,可以基于与编程实体相关的编程队列来控制数据的直接重新编程。例如,在对应于在操作S130产生的程序实体的所有页数据被存储在缓冲器存储器170之后,在操作S140,可以执行直接重新编程。
直接重新编程可以是其中连接到非易失性存储器190中的一条字线的存储器单元被使用与该一条字线相对应的页(例如,LSB、中间、和MSB页)的数据编程至少两次的编程方法。将参考图43更充分地描述直接重新编程。
图3是示意性地示出编程队列的图。参照图1和3,当请求用于重新编程的新的存储器块时,可以从编程队列池153分配编程队列PQ。编程队列PQ可以包括多个级。例如,可以从编程队列池153分配多个队列。分配的多个队列可以分别形成编程队列PQ的级。
可以在编程队列PQ的每个级登记(或排队)多个实体指针EP。在每个级登记的实体指针EP的数量可以形成编程队列PQ的深度。可以根据应用于存储器控制器的编程算法的分类和执行方法来调整编程队列PQ的深度。例如,编程队列PQ的级的深度可以被设置为彼此不同。
编程队列PQ的级可以包括基本级Q0到Qn和附加级Qn+1到Qn+a。基本级Q0到Qn可以是在执行非易失性存储器190的直接重新编程时基本需要的级。例如,基本级Q0到Qn的数目可以是在进行直接重新编程时完成连接到一条字线的存储器单元的重新编程所需的编程的数目。
可以额外地提供附加级Qn+1到Qn+a,以改善非易失性存储器190的操作性能。根据应用于存储器控制器MC的编程算法的分类和执行方法来调节附加级Qn+1到Qn+a的数目。
为了本发明构思的简单的和清楚描述,假设基本级由三个级Q0至Q2形成,并且附加级由级QC形成。另外,假定级Q0到Q2和QC的深度为3。
图4是示出执行状态机141的第二处理器140的操作方法状态转换图。下文中,将提供对于状态转换图的一般描述。然而,将相对于图6-29和图31-41中的特定示例来对状态转换图进行详细描述。
参考图3和4,如果分配了非易失性存储器190的新的存储器块,则状态机141可以进入复位状态RSS。例如,如果接收到要在非易失性存储器190中的新存储块处进行编程的命令、地址、和数据,则可以分配新的存储器块。在复位状态RSS,可以分配编程队列PQ。根据状态机141的第二处理器140可以从第二存储器150的编程队列池153分配编程队列PQ。即,从池中选择可用编程队列。
如果从分配的编程队列PQ中检测到加入队列(enqueue),则状态机141可以进入第0状态RS0。具体地,如果从分配的编程队列PQ的第一级Q0检测到加入队列,则状态机141可以进入第0状态RS0。即,加入队列检测是何时在编程队列PQ的第一级Q0中存储实体指针。
在第0状态RS0,状态机141可以发布(issue)与在编程队列PQ的第一级Q0处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。存储器管理器180可以响应于编程发布而对非易失性存储器190进行编程。对应于编程发布的实体指针可以在下一级(例如,第二级Q1)中被加入队列。随后,状态机141可以进入第一状态RS1。状态机141可以维持在第一状态RS1,直至从编程队列PQ的第一级Q0中检测到加入队列为止。
如果从分配编程队列PQ的第一级Q0检测到加入队列,则在第一状态RS1,状态机141(例如,第二处理器140)可以发布与在编程队列PQ的第一级Q0处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,第二级Q1)处被加入队列。
在第一状态RS1中执行编程发布和加入队列之后,状态机141可以进入第二状态RS2。在第二状态RS2中,状态机141可以发布与在编程队列PQ的第二级Q1处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。然后与编程发布相对应的实体指针可以在下一级(如,第三级Q2)处被加入队列。
在第二状态RS2处执行编程发布和加入队列之后,状态机141可以进入第三状态RS3。状态机141可以维持在第三状态RS3直到从编程队列PQ的第一级Q0中检测到加入队列。
如果从编程队列PQ的第一级Q0检测到加入队列,则在第三状态RS3,状态机141可以发布与在编程队列PQ的第一级Q0处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,第二级Q1)处被加入队列。
在第三状态RS3处执行编程发布和加入队列之后,状态机141可以进入第4状态RS4。在第四状态RS4处,状态机141可以发布与在编程队列PQ的第二级Q1‘处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,第三级Q2)处被加入队列。
在第四状态RS4中执行编程发布和加入队列之后,状态机141可以进入第五状态RS5。在第五状态RS5中,状态机141可以发布与在编程队列PQ的第三级Q2处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。然后与编程发布相对应的实体指针可以在下一级(如,附加级QC)处被加入队列。
在第五状态RS5处执行编程发布和加入队列之后,状态机141的操作可根据编程队列PQ的状态或非易失性存储器190的编程状态而分支。如果分配的存储器块被检测为满,则状态机141可以进入第六状态RS6。例如,如果使用存储在缓冲器存储器170的数据完成分配的存储器块的编程,则分配的存储器块可以被确定为满。
在示例实施例中,确定分配的存储块是否为满可以由在其中对存储在缓冲器存储器170处的数据进行编程的非易失性存储器190的地址来进行。在其他示例实施例中,确定分配的存储器块是否是满可以基于分配的存储块的字线的数目和在分配的存储器块处执行的编程操作的数目来进行。
如果分配的存储器块未满,则状态机141可以进入第三状态RS3。在第三状态RS3处,状态机141可以等待,直到从编程队列PQ的第一级Q0中检测到加入队列为止。
如果分配的存储器块已满,则状态机141可以进入状态第六RS6。在第六状态RS6处,状态机141可以发布与在编程队列PQ的第二级Q1处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,第三级Q2)处被加入队列。
在第六状态RS6处执行编程发布和加入队列之后,状态机141可以进入第七状态RS7。在第七状态RS7处,状态机141可以发布与在编程队列PQ的第三级Q2处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,附加级QC)处被加入队列。
在第七状态RS7处执行编程发布和加入队列之后,状态机141可以进入第八状态RS8。在第八状态RS8处,状态机141可以发布与在编程队列PQ的第三级Q2处存在的实体指针的第一实体指针(例如,第一加入队列实体指针)相对应的数据的编程。对应于编程发布的实体指针可以在下一级(例如,附加级QC)处被加入队列。
在第八状态RS7处执行编程发布和加入队列之后,状态机141可以进入结束状态RSE。在结束状态RSE,状态机141可以释放分配的编程队列PQ并且关闭分配的块。
图5是示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图。参照图1和图3至5,在操作S210,可以接收第一页数据,并且接收的第一页数据可以被存储在缓冲器存储器170中。第一页数据可以是要被存储在与非易失性存储器190的第一字线连接的存储器单元中的数据。第一页数据可以是LSB页数据。随着要被存储在与第一字线连接的存储器单元中的第一页数据被接收,状态机141可以分配编程队列PQ。
在操作S220,可以产生指示存储在缓冲器存储器170中的第一页数据的第一编程实体。第一编程实体可以被存储到缓冲器存储器170中。
随后,可以接收对应于第一页数据(例如,LSB页数据)的页数据。例如,可以接收对应于第一页数据的中间和MSB页数据。接收的页数据可以被存储在缓冲器存储器170中。随着接收的页数据被存储在缓冲器存储器170中,可以更新对应于第一页数据的第一编程实体。可以更新第一编程实体以进一步包括关于中间和MSB页数据的信息。以下将参考图6-29来更详细地描述。
如果接收到将要在第一字线的存储器单元处编程的所有的页数据,则可以在编程队列PQ处将第一编程实体加入队列。
操作S210和S220可以对应于状态机141的复位状态RSS。随着第一编程实体在编程队列PQ处被加入队列,状态机141可以进入第0状态RS0。
在操作S230,可以将第一编程实体的编程信息发送到存储器管理器180。例如,在第一编程实体在编程队列PQ中被加入队列之后,第一编程实体的编程信息可以被发送到存储器管理器180。可以基于第一编程实体的编程信息将在第一字线的存储器单元处要进行编程的数据(例如,第一页数据)通过存储器管理器180传送到非易失性存储器190。
操作S230可以对应于状态机141的第0状态RS0。状态机141可以基于第一编程实体的编程信息,发布对于第一字线连接的存储器单元的编程。然后状态机141可以在编程队列PQ的下一级处将第一编程实体加入队列。随着发布基于第一编程实体的编程,状态机141可以进入第一状态RS1。
在操作S240,如果接收到第二页数据,则其可以被存储在缓冲器存储器170中。第二页数据可以是将要在非易失性存储器190中的第二字线的存储器单元处被编程的数据。第二页数据可以是LSB页数据。
在操作S250,可以产生指示存储在缓冲器存储器170中的第二页数据的第二编程实体。第二编程实体可以被存储在缓冲器存储器170中。
此后,可以接收相应于第二页数据的页数据。例如,可以接收对应于第二页数据的中间和MSB数据。接收的页数据可以被存储在缓冲器存储器170中。随着接收的页数据被存储在缓冲器存储器170中,可以更新对应于第二页数据的第二编程实体。可以更新第二编程实体以进一步包括关于中间和MSB页数据的信息。
如果接收到将要在第二字线的存储器单元处进行编程的所有页数据,则第二编程实体可以在编程队列PQ处被加入队列。
在操作S260,第二编程实体的编程信息可以被发送到存储器管理器180。例如,随着第二编程实体在编程队列PQ处被加入队列,第二编程实体的编程信息可以被发送到存储器管理器180。可以基于第二编程实体的编程信息将在第二字线的存储器单元处要进行编程的数据(例如,第二页数据)通过存储器管理器180传送到非易失性存储器190。操作S240到S260可以对应于状态机141的第一状态RS1。
状态机141可以在编程队列PQ的下一级处将第二编程实体加入队列。随着发布基于第二编程实体的编程,状态机141可以进入第二状态RS2。
在操作S270,第一编程实体的编程信息可以被发送到存储器管理器180。可以基于第一编程实体将在第一字线的存储器单元处要进行编程的数据(例如,包括第一页数据的所有页数据)通过存储器管理器180发送到非易失性存储器190。
操作S270可以对应到状态机141的第二状态RS2。状态机141可以发布与第一字线连接的存储器单元的编程。状态机141可以在编程队列PQ的下一级处将第一编程实体加入队列。随着发布基于第一编程实体的编程,状态机141可以进入第三状态RS3。
图6至29是示出根据图5所示的操作方法的存储器系统100的数据处理操作的图。
参考图6,可以将消息队列151分配给第二存储器150的特定存储区域。消息队列151可以包括用于存储从第一处理器120传送的消息(例如,命令或地址)的多个消息槽MS。每个消息槽MS可以对应于非易失性存储器190的编程管理单元。例如,如果非易失性存储器190形成为平面,则一个消息槽可以对应于平面上的存储器块的字线的页。如果非易失性存储器190由第一平面和第二平面形成,则消息槽可以对应于第一平面的页和第二平面的页。为了对本发明构思进行简单的和清楚的描述,假定消息槽对应于页。包含在消息中的信息可以是从主机接收的命令和地址、由第一处理器120确定的转换地址、以及指示数据被存储在缓冲器存储器170中何处的地址。编程队列池153可以分配多个编程队列PQ。实体指针池155可以分配多个实体指针。
当数据、命令、和地址未被发送到存储器系统100时消息队列151可以处于空状态。此外,可以不分配编程队列PQ和实体指针。
缓冲区域171可以包括用于存储页数据的多个缓冲槽BS。每个缓冲槽BS可以存储一页数据。
实体区域173可以包括用于存储多个编程实体的多个实体槽ES。每个实体槽ES可以存储编程实体。实体槽ES可以包括多个子槽SS。在实体槽ES中子槽SS的数目可以是在字线的存储器单元处被编程的页数据的数目。子槽SS可以对应于数据的页。即,实体槽可以存储关于缓冲区域171的多个槽的信息(例如,地址)。实体槽可以存储关于在字线处要被编程的所有页数据的信息。
编程实体可以包括关于缓冲区域171的相应缓冲槽的信息(例如,缓冲槽BS的地址)。编程实体可以包括关于其中要对存储在多个缓冲槽BS处的数据进行编程的非易失性存储器190的信息(例如,非易失性存储器190的地址)。包括在编程实体中的信息可以与该消息中的相同,并且还可以包括非易失性存储器190的字线地址。
在示例实施例中,实体面积173可以形成基于实体槽ES的队列。
当数据、命令、和地址未被发送到存储器系统100时缓冲区域171和实体区域173可以处于空状态。
存储器管理器180的命令队列181可以包括多个命令槽CS。每个命令槽CS可以在第二处理器140的控制下存储从缓冲器存储器170传送的命令(例如,编程实体)。存储器管理器180可以根据存储在命令队列181的命令来控制非易失性存储器190。
当数据、命令、和地址未被发送到存储器系统100时命令队列181可以处于空状态。
非易失性存储器190的存储器块可以包括多个字线WL_01到WL_k。与字线连接的存储器单元可形成多个页。页可以存储一页数据。例如,图6中所示的存储器块可以是空闲存储器块。
下面,将对非易失性存储器190中的空闲存储器块的编程操作进行描述。
参考图4和7,可以从外部设备(例如,主机)接收(①)页数据PD1。根据第一处理器120和缓冲器管理器160的控制,页数据PD1可以被存储在缓冲器存储器170中的缓冲区域171的缓冲槽处。例如,页数据PD1可以是要在非易失性存储器190的第一字线WL_01的LSB页处编程的LSB页数据。
随着从外部设备(例如,主机)接收页数据PD1,可以分配其中将要编程页数据PD1的存储器块。即,状态机141可以进入复位状态RSS。
复位状态(RSS)
可以接收对应于页数据PD1的地址和命令(②)。可以根据第一处理器120和第二处理器140的控制,将接收的地址和命令登记(或加入队列)到第二存储器150中的消息队列151的第一消息槽中,作为消息M1。替换地,可以基于地址和命令产生消息M1,并且可以在消息队列151中被加入队列。
在示例实施例中,在页数据PD1被存储在缓冲区域171之后地址和命令可以在消息队列151中被加入队列。消息M1可以包括关于存储在缓冲区域171处的页数据PD1的信息(例如,缓冲槽的地址)。消息M1可以进一步包括指示消息M1与编程相关联的信息。
虽然消息M1和页数据PD1被接收,但是用于管理消息M1和程序数据PD1的编程队列PQ仍没有被分配。因此,如图8所示,随着消息M1被存储在消息队列151中,可以从编程队列池153分配编程队列PQ。编程队列PQ可以包括基本级Q0到Q2和附加级QC。每个级的深度可以是3。
当编程队列PQ被分配时,可以进一步分配聚集(gathering)实体指针寄存器GEP和聚集计数寄存器GNCT。在示例实施例中,可以从编程队列池153分配聚集实体指针寄存器GEP和聚集计数寄存器GNCT。聚集实体指针寄存器GEP和聚集计数寄存器GNCT可以作为编程队列PQ的一部分来进行管理。
如果编程队列PQ被分配,则可以从实体指针池155分配实体指针EP1。实体指针EP1可以包括指示实体区域173的实体槽ES之一的信息(例如,实体槽的地址)。例如,当实体指针EP1被分配时,实体区域173的实体槽ES之一可以被分配到与实体指针EP1相关联的实体槽。可以在聚集实体指针寄存器GEP中登记分配的实体指针EP1。
可以在聚集实体指针寄存器GEP中管理实体指针,直到与在聚集实体指针寄存器GEP中登记的实体指针相对应的编程实体累积关于字线的所有页数据的信息。
例如,特定的编程实体可能不具有关于在字线的存储器单元处编程的所有页数据(例如,LSB、中间、和MSB页数据)的信息。此时,可以在聚集实体指针寄存器GEP中管理指示特定编程实体的实体指针。当特定编程实体具有关于在字线的存储器单元处被编程的所有页数据的信息时,其可以在编程队列PQ的第一级Q0处被登记(或者被加入队列)。
当实体指针EP1在聚集实体指针寄存器GEP中被登记时,聚集计数寄存器GNCT的计数值可以被设置为“0”。当与登记的实体指针相对应的编程实体累积与数据的页相对应的信息时,聚集计数寄存器GNCT的计数值可以增加。即,聚集计数寄存器GNCT的计数值可以指示关于在与在聚集实体指针寄存器GEP处被管理的实体指针相对应的编程实体处被累积的页数据的信息的数目。换句话说,聚集计数寄存器GNCT的计数值可以指示从在字线的存储器单元处要被编程的数据的所有页中收集的数据的页的数目。
参考图9,存储在消息队列151中的消息M1可以被发送到实体区域173中的第一实体槽。例如,消息M1可以被存储在实体区域173的实体槽处作为编程实体PE1。在示例实施例中,消息M1可以被存储在实体区域173的实体槽当中由实体指针EP1指示的实体槽处。消息M1可以被存储在实体槽的第一子槽处。在示例实施例中,编程实体PE1可以基于消息M1来产生,并且可以被存储在实体槽ES处。
随着关于页数据PD1的信息被存储在实体区域173的编程实体PE1处,聚集计数寄存器GNCT的计数值可以增加。
参考图10,在关于页数据PD1的信息被存储为编程实体PE1之后,可以从消息队列151中释放消息M1。消息M1被释放之后,存储在消息队列151中的其他消息可以被移位。在其他示例实施例中,可以释放其中存储消息M1的第一消息槽MS。随着第一消息槽MS被释放,除了第一消息槽MS之外的剩余的消息槽MS可以被移位。
参考图11,可以从外部设备(例如,主机)接收页数据PD2(①)。可以根据第一处理器120和缓冲器管理器160的控制,将页数据PD2存储在缓冲区域171中的缓冲器存储器170的空缓冲槽处。例如,页数据PD2可以是在非易失性存储器190的第一字线WL_01的中间页处被编程的数据。
可以接收对应于页数据PD2的地址和命令(②)。可以根据第一处理器120和第二处理器140的控制将接收的地址和命令存储在第二存储器150的消息队列151的消息槽MS中,作为消息M2。例如,可以基于地址和命令产生消息M2,并且可以存储在消息队列151中。不难理解,虽然页数据PD2被描述为具有与页数据PD1独立的地址和命令,但是这取决于是否请求了连续的写操作或随机操作中的任一个。
为了简化描述,描述了其中在释放存储在消息队列151中的消息M1之后将消息M2存储在消息队列151中的示例。然而,消息M2可以在消息队列151中被加入队列,而不管以前的消息M1是否被释放。
例如,消息M1可以被存储在第一消息槽MS处。消息M2可以在释放已处理的消息M1之前而被接收。消息M2可以被存储在第二消息槽MS处。存储在消息队列151处的消息M1和M2可以根据存储的顺序而被顺序处理和释放。
已经产生编程队列PQ,并且通过聚集实体指针寄存器GEP管理的实体指针EP1已经存在。因此,如图12所示,存储在消息队列151中的消息M2可以被传送到由实体指针EP1指示的实体槽。消息M2可以被存储在由实体指针EP1指示的实体槽中的第二子槽中。可以通过组合存储在第一和第二子槽中的信息来更新编程实体PE1。
当关于页数据PD2的信息被存储在实体区域173的编程实体PE1处时,聚集计数寄存器GNCT的计数值可以增加。计数值可以表示编程实体PE1收集关于两页数据(例如,LSB和中间页数据)的信息。不难理解,该示例中,页数据PD2和页数据PD3(将在下面描述)对应于第一页数据PD1,因此,与这些页数据相关的信息被分组在相同的编程实体PE1中。
参考图13,可以释放存储在消息队列151处的消息M2。
参考图14,可以从外部设备(例如,主机)接收页数据PD3(①)。页数据PD3可以被存储在缓冲区域171中的空缓冲槽处。例如,页数据PD3可以是对应于第一页数据PD1的MSB页数据,并且将在非易失性存储器190的第一字线WL_01的MSB页处进行编程。
可以接收与页数据PD3相对应的地址和命令(②)。接收的地址和命令可以在消息队列151处被加入队列,作为消息M3。例如,可以基于地址和命令产生消息M3,并且可以在消息队列151处被加入队列。
已经产生编程队列PQ,并且通过聚集实体指针寄存器GEP管理的实体指针EP1已经存在。因此,如图15所示,存储在消息队列151处的消息M3可以被传送到由实体指针EP1指示的实体槽。消息M3可以被存储在实体指针EP1所指示的实体槽的第三子槽中。可以通过组合存储在第一至第三子槽中的信息来更新编程实体PE1。
随着关于页数据PD3的信息被存储在实体区域173的编程实体PE1处,聚集计数寄存器GNCT的计数值可以增加。计数值可以表示编程实体PE1收集关于所有数据页(例如,LSB、中间、和MSB页数据)的信息。
参考图16,可以释放存储在消息队列151的消息M3。聚集计数寄存器GNCT的计数值可以表示数据的所有页都被收集。存储在聚集实体指针寄存器GEP处的实体指针EP1可以在编程队列PQ处被加入队列。例如,实体指针EP1可以在编程队列PQ的第一级Q0处被加入队列。随着实体指针EP1被加入队列,聚集计数寄存器GNCT的计数值可以被重置。
随着实体指针EP1在编程队列PQ的第一级Q0处被加入队列,状态机141可以进入第0状态RS0。
第0状态(RS0)
参考图17,通过在编程队列PQ的第一级Q0处被加入队列的实体指针EP1指示的编程实体PE1可以在存储器管理器180的命令队列181处被加入队列。例如,可以通过实体指针EP1来读取实体区域173的实体槽ES当中存储编程实体PE1的实体槽。存储在检测的实体槽处的编程信息(例如,编程实体PE1或编程实体的信息)可以在命令队列181处被加入队列,作为命令C12。例如,可以基于编程实体PE1产生命令C1,并且可以在命令队列181处被加入队列。例如,第二处理器140可以从实体区域173处读取编程实体PE1,并且可以将编程实体PE1转换为具有用于存储器管理器180的数据结构。第二处理器140可以在命令队列181处将转换结果加入队列,作为命令C1。
参考图18,随着命令C1在命令队列181处被加入队列,可以在与非易失性存储器190的第一字线相对应的存储器单元处编程由命令C1指示的页数据PD1、PD2、和PD3。存储器管理器180可以从存储在命令队列181处的命令C1中检测在其中存储页数据PD1、PD2、和PD3的缓冲槽的地址。存储器管理器180可以从命令C1中检测在其中要对页数据PD1、PD2、和PD3进行编程的非易失性存储器190的地址(例如,字线或页地址)。基于检测的缓冲槽的地址,可以通过缓冲器管理器160读取页数据PD1、PD2、和PD3。利用检测出的非易失性存储器190的地址,可以将读取的页数据PD1、PD2、和PD3发送到非易失性存储器190。例如,页数据PD1、PD2、和PD3中的至少两个或更多页的数据(例如,至少LSB和中间页数据)可以被发送到非易失性存储器190。
例如,可以在非易失性存储器190处编程页数据PD1、PD2、和PD3中的至少两个或更多页的数据(例如,至少LSB和中间页数据)。根据登记在编程队列PQ的第一级Q0的实体指针EP1或编程实体PE1进行的编程可以是直接重新编程的编程步骤的1步编程。连接到提供1步编程来编程的存储器单元的字线WL_01被显示为浅黑色矩形。
命令队列181的加入队列可以是发布对应于编程实体PE1的编程的操作。随着命令C1在命令队列181处被加入队列,实体指针EP1可以从第一级Q0转移到第二级Q1(升级(stage-up))。实体指针EP1可以在第二级Q1处被加入队列。例如,在命令C1在命令队列181处加入队列之后,实体指针EP1可以第二级Q1处被加入队列。可以与根据在命令队列181处被加入队列的命令在非易失性存储器190处对页数据PD1、PD2、和PD3进行编程的操作独立地执行在第二级Q1处将实体指针EP1加入队列的操作。
参考图19,随着页数据PD1、PD2、和PD3的1步编程结束,可以释放在命令队列181登记的命令C1。此时,可以不在缓冲器存储器170中释放编程实体PE1和对应于命令C1的页数据PD1、PD2、和PD3。
参照图4,随着发布对应于实体指针EP1的编程,而且实体指针EP1在编程队列PQ的第二级Q1处被加入队列,状态机141可以进入第一状态RS1。
第一状态(RS1)
参考图20,可以外部设备(例如,主机)接收页数据PD4(①)。页数据PD4可以被存储在缓冲区域171的空缓冲槽中。例如,页数据PD4可以是将要在非易失性存储器190的第二字线WL_02的LSB页处编程的LSB页数据。
可以接收对应于页数据PD4的地址和命令(②)。接收的地址和命令可以在消息队列151处被登记(或被加入队列),作为消息M4。例如,可以基于地址和命令产生消息M4,并且可以在消息队列151处加入队列。
由于已经产生对应于在其中要对页数据PD4进行编程的存储器块的编程队列PQ,所以可以不用单独地产生编程队列。因为在聚集实体指针寄存器GEP处管理的实体指针不存在,所以可以从实体指针池155分配新的实体指针EP2。可以在聚集实体指针寄存器GEP处登记实体指针EP2。例如,可以与空实体槽一起分配实体指针EP2。
参考图21,存储在消息队列151中的消息M4可以被发送至由实体指针EP2指示的实体槽。消息M4可以被存储在由实体指针EP2指示的实体槽的第一子槽处,作为编程实体PE2。
随着关于页数据PD4的信息被存储在实体区域173的编程实体PE2处,聚集计数寄存器GNCT的计数值可以增加。计数值可以表示编程实体PE2收集关于数据页(例如,LSB页数据)的信息。
参考图22,可以释放存储在消息队列151处的消息M4。
参照图11至13,可以收集对应于编程实体PE2的数据页(例如,中间页数据)。另外,如参考图14至16所描述的,可以收集对应于编程实体PE2的另一页数据(例如,MSB页数据)。
可以在图23中说明其中对应于编程实体PE2的数据的所有页被收集的示例。图23中,对应于编程实体PE2中间页数据可以是PD5,并且对应于编程实体PE2的MSB页数据可以是PD6。
如果对应于编程实体PE2数据的所有页被收集,则聚集计数寄存器GNCT的计数值可以是3。响应于计数值,指示编程实体PE2的实体指针EP2可以在编程队列PQ的第一级Q0处被加入队列。然后,聚集计数寄存器GNCT的计数值可以被重置。
参考图24,随着实体指针EP2在编程队列PQ的第一级Q0处被加入队列,由实体指针EP2指示的编程实体PE2的编程信息可以在命令队列181处被加入队列,作为命令C2。可以基于编程实体PE2产生命令C2,并且可以在命令队列181处加入队列。
参考图25,随着命令C2在命令队列181处被加入队列,可以基于由编程实体PE2指示的页数据PD4、PD5、和PD6来编程由编程实体PE2指示的字线WL_02的存储器单元。例如,页数据PD4、PD5、和PD6的至少两个或更多页的数据(例如,至少LSB和中间页数据)可以被发送到非易失性存储器190。例如,可以在非易失性存储器190处编程页数据PD4、PD5、和PD6的至少两个或更多页数据(例如,至少LSB和中间页数据)。对应于在编程队列PQ的第一级Q0处登记的实体指针EP2或编程实体PE2的编程可以是直接重新编程的编程步骤的1步编程。连接到由1步编程来编程的存储器单元的字线WL_02被显示为浅黑色矩形。
随着命令C2在命令队列181处被加入队列,导致命令C2被加入队列的实体指针EP2可以在编程队列PQ的下一级Q1处被加入队列。
如参照图24所描述的,可以在第一状态RS1中发布基于在编程队列PQ的第一级Q0处登记的实体指针EP2的编程。如果实体指针EP2在下一级Q1处被加入队列,则状态机141可以进入第二状态RS2。
参考图26,如果基于页数据PD4、PD5、和PD6的1步编程结束,则可以从命令队列181中释放命令C2。此时,可以不在缓冲器存储器170中释放对应于命令C2的编程实体PE2和页数据PD4、PD5、和PD6。
为了简化描述,描述其中状态机141在基于实体指针EP2的编程结束之后进入第二状态RS2的示例。然而,当命令C2响应于实体指针EP2被加入队列而在命令队列181处被加入队列时,状态机141可以进入第二状态RS2。虽然根据命令C2的编程正在非易失性存储器190中进行,但是状态机141也可以进入第二状态RS2。状态机141可以在命令C2被释放之前进入第二状态RS2。
第二状态(RS2)
参考图4和27,执行基于在编程队列PQ的第二时隙Q1处登记的第一实体指针EP1的操作。例如,由实体指针EP1指示的编程实体PE1的编程信息在命令队列181处被加入队列。可以基于编程实体PE1产生命令C3,并且在命令队列181处加入队列。
参考图28,随着命令C3在命令队列181处被加入队列,可以基于由编程实体PE1指示的页数据PD1、PD2、和PD3来编程由编程实体PE1指示的字线WL_01的存储器单元。与在编程队列PQ的第二级Q1处登记的实体指针EP1或编程实体PE1相对应的编程可以是直接重新编程的编程步骤的粗略编程。连接到由粗略编程来编程的存储器单元的字线WL_01被显示为斜线填充的矩形。
随着命令C3在命令队列181处被加入队列,致使命令C3被加入队列的实体指针EP1可以在编程队列PQ的下一级Q2处被加入队列。
参照图4,如果在第二状态RS2中发布基于在编程队列PQ的第二级Q2处登记的实体指针EP1的编程,则状态机141进入第三状态RS3。
参考图29,如果基于页数据PD1、PD2、和PD3的粗略编程结束,则可以从命令队列181中释放命令C3。此时,可以不在缓冲器存储器170中释放对应于命令C3的编程实体PE1和页数据PD1、PD2、和PD3。
图30是示出根据本发明构思的另一实施例的存储器控制器的操作方法的流程图。图30中,可以示出图5中所示的操作之后的操作。参照图1、3、4和30,在操作S310,接收第三页数据,并且将接收的第三页数据存储在缓冲器存储器170中。第三页数据是要被存储在与非易失性存储器190的第三字线连接的存储器单元处的数据。第三页数据可以是LSB页数据。
在操作S320,产生指示存储在缓冲器存储器170中的第三页数据的第三编程实体。将第三编程实体存储到缓冲器存储器170中。
如果接收到将要在第三字线的存储器单元处进行编程的所有页数据,则第三编程实体在编程队列PQ处被加入队列。
在操作S330,第三编程实体的编程信息被发送到存储器管理器180。基于第三编程实体的编程信息,通过存储器管理器180将包括第三页数据的页数据(例如,要在第三字线WL_03处被编程的两个或多个页的数据)传送到非易失性存储器190。
操作S310至S330对应于状态机141的第三状态RS3。状态机141基于与第三字线WL_03相对应的第三编程实体,发布对与第三字线WL_03连接的存储器单元的编程。状态机141在编程队列PQ的下一级处将第三编程实体加入队列。
在操作S340,第二编程实体的编程信息被发送到存储器管理器180。基于第二编程实体的编程信息,通过存储器管理器180将第二数据发送到非易失性存储器190。
操作S340对应于第4状态RS4。状态机141基于与第二字线WL_02相对应的第二编程实体,发布对与第二字线WL_02连接的存储器单元的编程。状态机141可以在编程队列PQ的下一级处将第二编程实体加入队列。
在操作S350,第一编程实体的编程信息被发送到存储器管理器180。基于第一编程实体的编程信息,通过存储器管理器180将第一数据发送到非易失性存储器190。
操作S350对应于状态机141的第5状态RS5。状态机141基于与第一字线WL_01相对应的第一编程实体,发布对与第一字线WL_01连接的存储器单元的编程。状态机141可以在编程队列PQ的下一级处将第一编程实体加入队列。
图31到41是示出根据图30所示的操作方法的存储器系统100的数据处理操作的图。如参考图30所描述的,状态机141的操作将从第三状态RS3来说明。
第三状态(RS3)
参考图4、30、和31,从外部设备(例如,主机)接收页数据PD7(①)。页数据PD7被存储在缓冲区域171中的空缓冲槽处。例如,页数据PD7可以是要在非易失性存储器190的第三字线WL_03的LSB页处进行编程的LSB页数据。
接收与页数据PD1相对应的地址和命令(②)。接收的地址和命令可以在消息队列151处被加入队列,作为消息M5。例如,可以基于地址和命令产生消息M5,并且可以在消息队列151处加入队列。
由于已经产生与在其中要对页数据PD7进行编程的存储器块相对应的编程队列PQ,所以可以不单独产生编程队列PQ。因为不存在在聚集实体指针寄存器GEP处管理的实体指针EP3,所以可以从实体指针池155中分配新的实体指针EP3。实体指针EP3指示实体区域173的实体槽的空实体槽。例如,实体指针EP3可以与空实体槽一起分配。
随后,如参照图21和22所描述的,与实体指针EP3相对应的编程实体PE3可以存储在实体区域173处。
如参照图11至13所述,可以收集对应于编程实体PE3的数据(例如,中间页数据)的页。如参考图14至16所描述的,可以收集与编程实体PE3相对应的另一页数据(例如,MSB页数据)。
图32中示出其中对应于编程实体PE3的数据的所有页被收集的示例。图32中,对应于编程实体PE3中间页数据是PD8,并且对应于编程实体PE3的MSB页数据是PD9。
如果对应于编程实体PE2的数据的所有页被收集,则指示编程实体PE3的实体指针EP3在编程队列PQ的第一级Q0处被加入队列。
参考图4、30、和33,随着实体指针EP3在编程队列PQ的第一级Q0处被加入队列,由编程实体PE3指示的实体指针EP3可以在命令队列181中被加入队列,作为命令C4。在其他示例实施例中,可以基于编程实体PE3产生命令C4,并且可以在命令队列181处加入队列。
参考图34,随着命令C4在命令队列181处被加入队列,可以基于由编程实体PE3指示的页数据PD7、PD8、和PD9编程由编程实体PE3指示的字线WL_03的存储器单元。例如,页数据PD7、PD8、和PD9中的至少两个或更多页的数据(例如,至少LSB和中间页数据)可以被发送到非易失性存储器190。例如,页数据PD7、PD8、和PD9中的至少两个或更多页的数据(例如,至少LSB和中间页数据)可以在非易失性存储器190处进行编程。根据在编程队列PQ的第一级Q0处登记的实体指针EP3或编程实体PE3的编程可以是直接重新编程的编程步骤的1步编程。连接到由1步编程来编程的存储器单元的字线WL_03被显示为点填充的矩形。
随着命令C4在命令队列181处被加入队列,导致命令C4被加入队列的实体指针EP3在编程队列PQ的下一级Q1处被加入队列。
参考图35,如果基于页数据PD7、PD8、和PD9的1步编程结束,则可以从命令队列181释放命令C4。此时,可以不在缓冲器存储器170中释放对应于命令C4的编程实体PE3和页数据PD7、PD8、和PD9。
如参照图4所描述的,在第三状态RS3中发布基于在编程队列PQ的第一级Q0处登记的实体指针EP3的编程。如果实体指针EP3在编程队列PQ的下一级Q1处被加入队列,则状态机141可以进入第四状态RS4。
为了简化描述,描述了其中状态机141在基于实体指针EP3的1步编程结束之后进入第四状态RS4。然而,当命令C4响应于实体指针EP3的加入队列而在命令队列181处被加入队列时,状态机141可以进入第四状态RS4。虽然在非易失性存储器190处正在执行根据命令C4的编程,状态机141仍可以进入第四状态RS4。状态机141可以在命令C4被释放之前进入第四状态RS4。
第四状态(RS4)
参考图4和36,随着发布对应于命令C5的编程,执行基于在编程队列PQ的第二级Q1处登记的第二实体指针EP2的操作。例如,由实体指针EP2指示的编程实体PE2的编程信息可以在命令队列181处被加入队列,作为命令C5。在其他示例实施例中,可以基于编程实体PE2产生命令C5,并且可以在命令队列181处加入队列。
参考图37,随着命令C5在命令队列181被加入队列,可以基于由编程实体PE2指示的页数据PD4、PD5、和PD6编程由编程实体PE2指示的字线WL_02的存储器单元。根据在编程队列PQ的第二级Q1登记的实体指针EP2或编程实体PE2的编程是直接重新编程的编程步骤的粗略编程。连接到由粗略编程而编程的存储器单元的字线WL_02被显示为斜线填充的矩形。
随着命令C5在命令队列181处被加入队列,导致命令C5被加入队列的实体指针EP2在编程队列PQ的下一级Q2处被加入队列。
参考图38,如果基于页数据PD4、PD5、和PD6的粗略编程结束,则可以从命令队列181中释放命令C5。此时,不在缓冲器存储器170中释放对应于命令C5的编程实体PE2和页数据PD4、PD5、和PD6。
如参照图4中所描述的,可以在第四状态RS4中发布基于在编程队列PQ的第二级Q1处登记的实体指针EP2的编程。如果实体指针EP2在编程队列PQ的下一级处被加入队列,则状态机141可以进入第五状态RS5。
第五状态(RS5)
参考图4和39,随着发布根据命令C6的编程,执行基于在编程队列PQ的第三级Q2处登记的第一实体指针EP1的操作。例如,由实体指针EP1指示的编程实体PE1可以在命令队列181处被加入队列,作为命令C6。在其他示例实施例中,可以基于编程实体PE1产生命令C6,并且可以在命令队列181处加入队列。
参考图40,随着命令C6在命令队列181处被加入队列,可以基于由编程实体PE1指示的页数据PD1、PD2、和PD3编程由编程实体PE1指示的字线WL_01的存储器单元。根据在编程队列PQ的第三级Q2处登记的实体指针EP1或编程实体PE1的编程是直接重新编程的编程步骤的精细编程。连接到由精细编程来编程的存储器单元的字线WL_01被显示为填充有与指示对存储器单元进行粗略编程的斜线方向相反的斜线的矩形。
随着命令C6在命令队列181处被加入队列,导致命令C6被加入队列的实体指针EP1在编程队列PQ的下一级QC处被加入队列。
参考图41,如果基于页数据PD1、PD2、和PD3的编程结束,则可以从命令队列181中释放命令C6。此时,可以不释放对应于命令C6的编程实体PE1和页数据PD1、PD2、和PD3。
在编程队列PQ只包括基本级Q0到Q2而不包括附加级QC的情况下,可以释放实体指针EP1。如果实体指针EP1被释放,则可以从缓冲器存储器170中释放对应于实体指针EP1的编程实体PE1和页数据PD1、PD2、和PD3。
在根据第五状态RS5的操作被执行之后,状态机141可以进入第三状态RS3或第六状态RS6。
在示例实施例中,在非易失性存储器190中分配的存储器块的最后字线WL_k处将要编程的所有的页数据未被存储在缓冲器存储器170中的情况下,状态机141可以进入第三状态RS3。例如,如图41中所示,在执行编程直到第三字线WL_03的情况下,状态机141可以在第三状态RS3处等待,直到接收到要在下一字线WL_04处进行编程的所有页数据为止。
如果接收到在下一个字线WL_04处要进行编程的所有的页数据,在第三状态RS3处,可以在下一字线WL_04上执行1步编程。在第四状态RS4,可以在字线WL_03上执行粗略编程。在第五状态RS5处,可以在字线WL_02上执行精细编程。
即,在第三状态RS3处,可以接收字线WL_i(i是小于k的整数)的页数据,并且可以产生对应于字线WL_i的实体指针EPi和编程实体PEi。随着实体指针EPi在编程队列PQ的第一级Q0处被加入队列,可以在字线WL_i上执行1步编程。实体指针EPi可以在编程队列PQ的第二级Q1处被加入队列。
在第四状态RS4处,可以根据在编程队列PQ的第二级Q1处登记的第一实体指针EPi-1来执行在字线WL_i-1上的粗略编程。实体指针EPi-1可以在编程队列PQ的第三级Q2处被加入队列。
在第五状态RS5处,可以根据在编程队列PQ的第三级Q2处登记的第一实体指针EPi-2来执行在字线WL_i-2上的精细编程。实体指针EPi-2可以在编程队列PQ的附加级Qc处被加入队列。
在第3状态RS3处,可以接收在非易失性存储器190中所分配的存储器块的最后字线WL_k的页数据。可以产生对应于字线WL_k的实体指针EPk和编程实体PEk。随着实体指针EPk在编程队列PQ的第一级Q0处被加入队列,可以在字线WL_k上执行1步编程。实体指针EPk可以在编程队列PQ的第二级Q1处被加入队列。
在第四状态RS4处,可以根据在编程队列PQ的第二级Q1处登记的第一实体指针EPk-1,执行在字线WL_k-1上的粗略编程。实体指针EPk-1可以在编程队列PQ的第三级Q2处被加入队列。
在第五状态RS5处,可以根据在编程队列PQ的第三级Q2处登记的第一实体指针EPk-2,执行在字线WL_k-2上的精细编程。实体指针EPk-2可以在编程队列PQ的附加级QC处被加入队列。
在该状态下,对应于所分配的存储器块的最后一个字线WL_k的页数据可以被存储在缓冲区域171处。因此,状态机141可以确定分配的存储器块是满的,并且可以进入第六状态RS6。
在第六状态RS6处,可以根据在编程队列PQ的第二级Q1处登记的第一实体指针EPk来执行在字线WL_k上的粗略编程。实体指针EPk可以在编程队列PQ的第三级Q2处被加入队列。
在第七状态RS7处,可以根据在编程队列PQ的第三级Q2处登记的第一实体指针EPk-1来执行在字线WL_k-1上的精细编程。实体指针EPk-1可以在编程队列PQ的附加级QC处被加入队列。
在第八状态RS8处,可以根据在编程队列PQ的第三级Q2处登记的第一实体指针EPk来执行在字线WL_k上的精细编程。实体指针EPk可以在编程队列PQ的附加级QC处被加入队列。
下面表1可以示出根据状态机141的状态的直接重新编程的执行顺序。
[表1]
字线 | 1步编程 | 粗略编程 | 精细编程 |
WL_k | l(RS3) | l+3(RS6) | l+5(RS8) |
WL_k-1 | l-3(RS3) | l+1(RS4) | l+4(RS7) |
WL_k-2 | ... | l-2(RS4) | l+2(RS5) |
WL_k-3 | ... | ... | l-1(RS5) |
... | ... | ... | ... |
WL_i+2 | j+6(RS3) | ... | ... |
WL_i+1 | j+3(RS3) | j+7(RS4) | ... |
WL_i | j(RS3) | j+4(RS4) | j+8(RS5) |
WL_i-1 | ... | j+1(RS4) | j+5(RS5) |
WL_i-2 | ... | ... | j+2(RS5) |
... | ... | ... | ... |
WL_06 | 13(RS3) | ... | ... |
WL_05 | 10(RS3) | 14(RS4) | ... |
WL_04 | 7(RS3) | 11(RS4) | 15(RS5) |
WL_03 | 4(RS3) | 8(RS4) | 12(RS5) |
WL_02 | 2(RS1) | 5(RS4) | 9(RS5) |
WL_01 | 1(RS0) | 3(RS2) | 6(RS5) |
在结束状态RSE处,可以释放编程队列PQ,并且可以关闭已分配的存储器块。当编程队列PQ被释放时,可以释放与编程队列PQ关联的实体指针、编程实体、以及页数据。
图5至41中,为了简单和清楚地描述本发明构思,描述了其中结束在字线上的编程、然后接收在下一个字线上的编程请求的示例。然而,存储器控制器可以以异步或流水线方式来处理多个请求。
例如,第一处理器120可以在缓冲区域171处存储从外部设备(例如,主机)接收的数据,而不考虑在存储器控制器中的另一个设备的操作状态。只要缓冲区域171包括空槽,第一处理器120就可以存储从外部设备接收的数据。
第一处理器120可以在消息队列151处存储从外部设备(例如,主机)接收的命令和地址作为消息M,而不考虑在存储器控制器中的另一个设备的操作状态。只要消息队列151包括空槽,第一处理器120就可以在消息队列151处登记新的消息M。
第二处理器140可以顺序地处理存储于消息队列151处的消息M,而不管在存储器控制器中另一设备的操作状态。第二处理器140可以根据消息M的登记顺序来顺序地处理存储在消息队列151处的消息M。处理存储在消息队列151处的消息M的操作可以包括分配编程队列PQ、在预先分配的编程实体PE处添加消息、管理实体指针EP的计数、以及在编程队列PQ处将实体指针EP加入队列中的至少一个操作。
第二处理器140可以顺序地处理在编程队列PQ处登记的实体指针EP,而不管在存储器控制器中的另一设备的操作状态。第二处理器140可以基于在编程队列PQ处登记的实体指针EP来操作根据图4的状态转换图的操作。如果满足参照图4的状态转换图描述的状态,则第二处理器140可以进入下一个状态,而不管在存储器控制器中的另一个设备的操作状态,从而根据实体指针来执行操作。根据实体指针的操作可以包括编程实体PE在命令队列181处的加入队列的操作。
存储器管理器180可以顺序处理命令队列181处登记的命令C,而不管在存储控制器中的另一设备的操作状态。存储器管理器180可以根据命令C的登记顺序,来顺序地处理储存在命令队列181处的命令C。存储器管理器180处理命令C的操作可以包括将在缓冲区域171处存储的页数据传送到非易失性存储器190的操作、或将编程命令传送到非易失性存储器190的操作。
如前面提到的,图42是示意性地示出当执行1步编程、粗略编程、和精细编程时存储器单元的阈值电压的变化的图。图42中,横轴表示阈值电压,纵轴表示存储器单元数目。即,图42示出存储器单元的阈值电压分布。
参考图18与图42的标号21,执行第一字线WL_01的1步编程。如果执行了1步编程,则可以根据LSB页数据PD1和中间页数据PD2编程连接到第一字线WL_01的存储器单元。存储器单元可以被编程为具有擦除状态和中间编程状态Q1、Q2、和Q3。
参考图25以及图42的标号22,执行第二字线WL_02的1步编程。此时,与第一字线WL_01连接的存储器单元的阈值电压分布可以由耦合的影响而扩大。
参考图28以及图42的标号23,执行第一字线WL_01的粗略编程。如果执行粗略编程,则可以基于LSB页数据、中间页数据PD2、和MSB页数据PD3编程与第一字线WL_01连接的存储器单元。存储器单元可以被编程为具有擦除状态和中间编程状态P1'、P2'、P3'、P4'、P5'、P6'、和P7'。
参考图37和图42的标号24,执行第二字线WL_02的粗略编程。此时,与第一字线WL_01连接的存储器单元的阈值电压分布可以由耦合的影响而扩大。
参考图40以及图42的标号25,执行第一字线WL_01的精细编程。如果执行精细编程,则基于LSB页数据、中间页数据PD2、和MSB页数据PD3编程与第一字线WL_01连接的存储器单元。存储器单元可以被编程为具有擦除状态和中间编程状态P1、P2、P3、P4、P5、P6、和P7。
参考图42的附图标记26,当执行第二字线WL_02的精细编程时,与第一字线WL_01连接的存储器单元的阈值电压分布可以由耦合的影响而扩大。
如图42和先前描述的,可以以1步编程、粗略编程、和精细编程的顺序来执行直接重新编程。考虑到来自相邻字线的耦合,1步编程、粗略编程、和精细编程可以具有不断增加的精度。1步编程、粗略编程、和精细编程可以基于存储在缓冲器存储器170中的数据,而不是存储在非易失性存储器190的数据来执行。因此,当1步编程、粗略编程、和精细编程被顺序地执行时,能够防止来自相邻字线的耦合被累积。
在示例实施例中,非易失性存储器190的字线可以具有三个编程地址和三个读取地址。三个编程地址可以分别对应于1步编程、粗略编程、和精细编程。在编程中,存储器管理器180可以发送三个编程地址之一和编程命令到非易失性存储器190。在读取时,存储器管理器180可以发送三个读取地址之一和读取命令到非易失性存储器190。三个读取地址可以分别对应于LSB、中间、和MSB页。
在示例实施例中,非易失性存储器190的字线可以具有编程地址和三个读取地址。在编程中,存储器管理器180可以发送一个编程地址和指示1步编程、粗略编程、或精细编程的编程命令到非易失性存储器190。在读取时,存储器管理器180可以发送三个读取地址之一和读取命令到非易失性存储器190。三个读取地址可以分别对应于LSB、中间、和MSB页。
图43是示意性地示出根据本发明概念的另一实施例的存储器控制器的操作方法的流程图。图43中,示出状态机141从特定状态返回到之前状态的回滚操作。
参考图43,在操作S410,确定是否需要回滚操作。例如,当在非易失性存储器190处还没有执行与在命令队列181处的加入队列的编程命令相关的编程操作,并且加入队列的编程命令需要被取消时,可能需要回滚操作。例如,可以利用在命令队列181处被加入队列的多个命令来产生对应于编程队列PQ的存储器块上的读取请求。可以停止对应于在命令队列181处被加入队列的命令的编程,并且可以执行所请求的读取操作。如果请求的读取操作失败,则可以执行调整存储器块的读取命令条件或者编程电压条件的操作。此时,可能需要取消已发布的编程。
在操作S420,状态机141的状态可以返回到以前的目标状态。
在操作S430,随着状态机141的状态被返回,可以将编程队列PQ的实体指针可以调整为适合于返回的状态。
在示例实施例中,可以相对于在命令队列181处存储的每个命令来顺序地执行回滚。第二处理器140可以确定在命令队列181处被加入队列的最后命令是否被发出到非易失性存储器190处。例如,第二处理器140可以确定是否从存储器管理器180处接收到指示最后的命令被发出的中断,并且可以基于确定的结果来确定最后的命令是否被发出给非易失性存储器190。如果最后的命令被发出给非易失性存储器190,则可以不执行回滚。
如果最后的命令未被发出给非易失性存储器190,则可以将其从从命令队列181中释放。状态机141可以被回滚到恰好在当前状态之前的状态。此外,编程队列PQ可以回滚到恰好在当前状态之前的状态。已释放的命令可以返回到消息队列151。此后,可以相对于在命令队列181处被加入队列的最后的命令来重复相同的操作。
下表2显示其中在根据图4和表1发出1步编程到命令队列181之后,并且在发出1步编程到非易失性存储器190之前,在状态机141处执行的回滚的示例。表2中可以示出用于取消命令的示例。
[表2]
下面的表3显示其中在根据图4和表1来发出粗略编程到命令队列181之后,并且在发出粗略编程到非易失性存储器190之前,在状态机141处执行的回滚的示例。表3中可以示出用于取消命令的示例。
[表3]
下面的表4显示其中在根据图4和表1来发出对命令队列181的精细编程之后,并且在发出对非易失性存储器190的精细编程之前,在状态机141处执行的回滚的示例。表4中可以示出用于取消命令的示例。
[表4]
图44是示意性地示出根据本发明概念的另一实施例的存储器控制器的操作方法的流程图。图44中,示出其中存储器控制器释放实体指针的示例。
参考图41和44,在操作S510,确定在编程队列PQ的附加级QC处是否已累积期望的(或者,替换地,预定的)数量的实体指针。如果在编程队列PQ的附加级QC处没有累积期望的(或者,替换地,预定的)数量的实体指针,则不执行任何操作。如果在编程队列PQ的附加级QC处累积了期望的(或者,替换地,预定的)数量的实体指针,则方法进行到操作S520。本文中,期望的(或者,替换地,预定的)数量可以是2或更大的数。
在操作S520,可以释放在附加级QC处被加入队列的最老的实体指针。还可以释放与释放的实体指针相关联的、存储在缓冲器存储器中的编程实体和页数据。即,在从附加级QC释放实体指针之后,与所释放的实体指针相关的编程操作可能无法被回滚。
如上所述,参照图42的标号25和26,在执行对于特定字线的下一个字线的精细编程之后,特定字线的阈值电压分布可以最终稳定。附加级QC可以保持关于特定字线的实体指针,直到执行对于下一字线的精细编程为止。
如果附加级QC保持关于特定字线的实体指针,则第一处理器120可以识别对于特定字线的编程没有完成。因此,当从外部设备请求对特定字线的读取操作时,第一处理器120可以响应于请求的读取操作而输出存储在缓冲器存储器170处的数据。
如果从附加级QC处释放关于特定字线的实体指针,则第二处理器140可以基于在编程实体中包括的实体指针和信息,向第一处理器120提供指示对于特定字线的编程完成的信号。此后,如果从外部设备请求对于特定字线的读取操作,第一处理器120可以发送读取请求至第二处理器140。第二处理器140可以读取在特定字线的存储器单元处编程的数据,并且可以在第一处理器120和第二处理器140的控制下将读取的数据通过缓冲器存储器170和主机接口125而输出给外部设备。
即,如果提供了附加级QC,则在特定字线的存储器单元的阈值电压稳定之后,可以执行对于特定字线的存储器单元的读取。因此,存储器系统100的可靠性可以得到改善。
在示例实施例中,对应于存储器块的最后字线WLK的实体指针可以不在附加级QC中加入队列。
图45是示出其中从图41的状态释放实体指针EP1的示例的图。与图41相比,可以从附加级QC释放实体指针EP1。此外,可以释放编程实体PE1和对应于实体指针EP1的页数据PD1、PD2、和PD3。存储已释放的PD1、PD2、和PD3的存储区可以被无效化,以使得其被识别为可覆写存储区域。
图46是示意性地示出根据本发明概念的另一实施例的存储器控制器的操作方法的流程图。图46中,示出当对存储在缓冲器存储器170处的页数据请求更新时的存储器控制器的操作方法。在一个实施例中,该方法由第二处理器140来执行。
参考图41和46,在操作S610,可以接收在缓冲器存储器170中的缓冲区域171处存储的页数据的更新数据。例如,如果利用来自外部设备(例如,主机)的数据接收的地址与在缓冲器存储器170处存储的数据的地址(例如,逻辑地址)相匹配,则从外部设备接收的数据可以被确定为更新数据。
在操作S620,确定更新数据是否是页数据的部分数据。例如,可以确定更新数据是否是被存储在缓冲器存储器170处的数据的页的部分数据。例如,第二处理器140可以确定是否更新数据是有效的并且与页数据具有相同尺寸。如果为是,则更新数据不是页数据的部分数据。如果更新数据不是页数据的部分数据,则在操作S630,可以将更新数据存储在缓冲器存储器170的空的缓冲槽中。如果更新数据是页数据的部分数据,则方法可以进行到操作S640。
在操作S640,可以通过组合更新数据和页数据来产生新的页数据。新的页数据可以被存储在缓冲器存储器170的空缓冲槽处。例如,可以通过组合更新数据以及与更新数据不对应并且来自存储在缓冲器存储器170处的原始数据中的剩余数据来形成新的页数据。
图47是示意性地示出其中根据图46的方法在缓冲器存储器170中存储更新数据的示例的图。参照图47,在第一种情况下,更新数据可以由数据PDi+3的页来形成。该情况下,更新数据可以被存储在缓冲器存储器170的槽处。
在第二种情况下,更新数据可以由页数据的部分数据来形成。更新数据可以由新的页数据PDi+3的第一部分P1来形成。可以通过从原始数据中复制不对应于更新数据的部分来形成新的页数据PDi+3的第二部分P2。
图48是示意性地示出根据本发明构思的另一实施例的存储器系统100a的框图。参照图48,存储器系统100a可以包括存储器控制器MC,其包括总线110、第一处理器120、第一存储器130、第二处理器140、第二存储器150、缓冲器管理器160、缓冲器存储器170、和存储器管理器180a。然而,不难理解,缓冲器存储器170可以与存储控制器MC分开。此外,存储器系统100a包括多个非易失性存储器190a_1到190a_m。
存储器管理器180a可以与非易失性存储器190a_1到190a_m通过多个信道CH1至CHm来进行通信。信道CH1至CHm可以相互独立地操作。多个非易失性存储器可以与信道相连接。
存储器管理器180a可以包括分别对应于信道CH1至CHm的多个命令队列CQ1到CQm。命令队列CQ1到CQm可以存储分别对应于信道CH1至CHm的命令。
图49是示意性地示出根据本发明构思的实施例的固态驱动器的框图。参照图49,固态驱动器1000可以包括存储器控制器1100、多个非易失性存储器1200、和连接器1300。
存储器控制器1100可以是参照图1或者图48描述的存储器控制器。存储器控制器1100可以基于编程队列PQ来控制非易失性存储器1200的直接重新编程。
非易失性存储器1200可以包括闪速存储器、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等。
连接器1300可以提供固态硬盘1000与外部设备(例如,主机)之间的电连接。
图50是示意性地示出根据本发明构思的实施例的计算设备2000的框图。参照图50,计算设备2000可以包括处理器2100、存储器2200、贮存器2300、调制解调器2400、和用户接口2500。
处理器2100可以控制计算设备2000的整体操作,并且可以执行逻辑操作。处理器2100可以由片上系统(SoC)形成。处理器2100可以包括通用处理器或应用处理器。
存储器2200可以与处理器2100进行通信。存储器2200可以是处理器2100或计算设备2000的工作存储器(或主存储器)。存储器2200可以包括诸如静态RAM、动态RAM、同步DRAM等的易失性存储器、或诸如闪速存储器、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等的非易失性存储器。
贮存器2300可以存储计算设备2000长时间保留的数据。贮存器2300可以包括硬盘驱动器或诸如闪速存储器、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、铁电RAM(FRAM)等非易失性存储器。
贮存器2300可以包括参照图1到48描述的存储器系统100或100a。贮存器2300可以根据编程队列PQ执行直接重新编程。贮存器2300可以包括参照图49描述的固态驱动器1000。
调制解调器2400可以根据处理器2100的控制而与外部设备进行通信。例如,调制解调器2400可以以有线或无线的方式来与外部设备进行通信。调制解调器2400可以基于诸如LTE(长期演进)、WiMax、GSM(全球移动通信系统)、CDMA(码分多址)、蓝牙、NFC(近场通信)、WiFi、RFID(射频识别等的无线通信方式、或者诸如USB(通用串行总线)、SATA(串行AT连接)、SCSI(小型计算机小型接口)、火线、PCI(外设部件互连)等的有线通信方式中的至少一种来进行通信。
用户接口2500可以根据处理器2100的控制与用户进行通信。例如,用户接口2500可以包括用户输入接口,诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸垫、触摸球、相机、麦克风、陀螺仪传感器、振动传感器等。用户接口2500还可以包括用户输出接口,诸如LCD、OLED(有机发光二极管)显示设备、AMOLED(有源矩阵OLED)显示设备、LED、扬声器、马达等。
虽然已经参考示范性实施例描述本发明构思,但是对于本领域技术人员而言显而易见的是,可以进行各种改变和修改而不脱离本发明的精神和范围。因此,应当理解,上述实施例并非限制性的,而是说明性的。
Claims (45)
1.一种操作包括存储器的存储器系统的方法,包括:
在存储器控制器的控制下,在缓冲器中缓冲接收的数据和相关联的编程实体,该编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储接收的数据的缓冲器的地址,并且第二地址信息指示在存储器中用于存储接收的数据的地址;
在存储器控制器处存储管理信息,该管理信息包括编程信息,该编程信息包括到缓冲器中的编程实体的指针;以及
基于该管理信息和该编程实体将接收的数据从缓冲器传送到存储器。
2.如权利要求1所述的方法,其中,通过多个编程步骤来执行所述传送,每个编程步骤细化在存储器中对于接收的数据的存储。
3.如权利要求2所述的方法,其中,所述接收的数据包括最低有效位页数据和最高有效位页数据。
4.如权利要求3所述的方法,其中,所述接收的数据进一步包括中间有效位页数据。
5.如权利要求2所述的方法,进一步包括:
接收与第一逻辑地址相关联的第一页数据,第一页数据表示最低有效页数据;
接收与第一逻辑地址相关联的第二页数据,第二页数据表示最高有效页数据;并且其中
所述缓冲将第一页数据和第二页数据缓冲作为接收的数据。
6.如权利要求2所述的方法,其中,所述传送使用用于每个编程步骤的第一地址信息来访问接收的数据。
7.如权利要求2所述的方法,其中,所述存储包括:
基于所述传送的编程步骤来在编程队列的多个级的一个中存储指针。
8.如权利要求7所述的方法,其中,
所述多个编程步骤包括第一、第二、和第三编程步骤,并且所述多个级包括第一、第二、和第三编程级。
9.如权利要求8所述的方法,其中,如果指针被存储在第一级中,则所述传送执行第一编程步骤,如果指针被存储在第二个级中,则所述传送执行第二编程步骤,并且如果指针被存储在第三级中,则所述传送执行第三编程步骤。
10.如权利要求9所述的方法,其中,所述传送包括:如果指针被存储在第一级中,则基于编程实体在存储器控制器的存储器管理器中存储与第一编程步骤相关的第一命令,如果指针被存储在第二级中,则基于编程实体在存储器控制器的存储器管理器中存储与第二编程步骤相关的第二命令,并且如果指针被存储在第三级中,则基于编程实体在存储器控制器的存储器管理器中存储与第三编程步骤相关的第三命令。
11.如权利要求10所述的方法,其中,所述传送包括分别基于第一、第二、和第三命令,通过存储器管理器来执行第一、第二、和第三编程步骤,执行所述传送。
12.如权利要求10所述的方法,进一步包括:
如果满足期望的条件则触发回滚操作,如果第一、第二、和第三命令中的一个被存储在存储器管理器处并且存储的命令没有完成,则为指针执行回滚操作,并且所述回滚操作包括将指针从多个级的当前级移动到多个级的前一级。
13.如权利要求8所述的方法,其中,第一、第二、和第三编程级的每一个包括用于存储指针的多于一个指针条目槽。
14.如权利要求8所述的方法,其中,所述多个编程级包括至少一个附加级。
15.如权利要求14所述的方法,其中,所述存储包括:在第一编程步骤之后将指针从第一编程级移动到第二编程级,在第二编程步骤之后将指针从第二编程级移动到第三编程级,以及在第三编程步骤之后将指针从第三编程级移动到附加编程级。
16.如权利要求15所述的方法,进一步包括:
在指针被存储在附加编程级之后,一旦已经满足期望的条件,就从编程队列中释放指针。
17.如权利要求16所述的方法,其中,所述期望的条件是阈值数目的指针被存储在附加级中。
18.如权利要求14所述的方法,进一步包括:
在指针被存储在附加级中之后,从编程队列中释放指针。
19.如权利要求18所述的方法,进一步包括:
响应于读取请求而从缓冲器中读取接收的数据,直到指针被释放为止。
20.如权利要求19所述的方法,进一步包括:
在指针被释放之后,响应于读取请求而从存储器中读取接收的数据。
21.如权利要求14所述的方法,进一步包括:
如果满足期望的条件则执行回滚操作,所述回滚操作包括将指针从多个级的当前级移动到多个级的前一级。
22.如权利要求7所述的方法,进一步包括:
从编程队列池中分配编程队列。
23.如权利要求2所述的方法,其中,第一、第二、和第三编程步骤利用接收的数据来编程存储器,并且第一编程步骤与第三编程步骤相比涉及更少数量的阈值状态。
24.如权利要求2所述的方法,其中,第一编程步骤是1步编程,第二编程步骤是粗略编程,并且第三编程步骤是精细编程。
25.如权利要求2所述的方法,其中,
所述缓冲将至少第一和第二接收的数据和相应的第一和第二编程实体缓冲在缓冲器中;
所述存储对分别用于第一和第二编程实体的第一和第二指针进行存储;以及
所述传送在执行用于传送第一接收的数据的第二编程步骤之前执行用于传送第二接收的数据的第一编程步骤。
26.如权利要求2所述的方法,其中,
所述缓冲对多个接收的数据进行缓冲;
所述存储在编程队列的多个级的一个中存储多个指针,所述多个指针中的每一个与多个接收的数据中的相应一个相关联,并且所述多个级包括分别与多个编程步骤的每一个相关联的级;并且
所述传送基于所述多个级的哪一个存储了相关的指针,来执行用于多个接收的数据的多个编程步骤中的相应编程步骤。
27.如权利要求26所述的方法,其中,所述存储包括管理在所述多个级之间的多个指针的移动。
28.如权利要求27所述的方法,其中,所述传送以根据传送协议的顺序将多个接收的数据从缓冲器传送到存储器,所述传送协议基于多个级的哪一个存储了多个指针来确定该顺序。
29.如权利要求1所述的方法,其中,基于在存储器控制器处执行的状态机来执行所述缓冲、所述存储、和所述传送。
30.如权利要求1所述的方法,其中,所述缓冲在动态随机存取存储器中缓冲接收的数据和相关的编程实体,所述存储在静态随机存取存储器中存储管理信息,并且所述传送将接收的数据从动态随机存取存储器传送到非易失性存储器。
31.如权利要求1所述的方法,其中,所述管理信息包括:相对于接收的数据从外部设备接收的命令、相对于接收的数据从外部设备接收的地址、在缓冲器中的接收的数据的逻辑地址、以及在缓冲器中的接收的数据的物理地址。
32.如权利要求1所述的方法,其中,还包括:
确定与新的数据相关联的从外部设备接收的逻辑地址和与接收的数据相关联的逻辑地址是否匹配;并且
如果确定匹配则执行更新过程,所述更新过程包括:
确定新的数据是否是有效的、且与接收的数据具有相同的尺寸;
如果新的数据是有效的并且具有相同的尺寸,
则在缓冲器中将新的数据缓冲作为新接收的数据;以及
如果新的数据不是既有效的且具有与接收的数据相同的尺寸,
则将新的数据与接收的数据的一部分进行组合,以制作组合数据;以及
在缓冲器中将组合数据缓冲作为新接收的数据。
33.如权利要求1所述的方法,其中,所述缓冲包括产生编程实体。
34.如权利要求33所述的方法,其中,所述产生在缓冲接收的数据之后产生编程实体。
35.如权利要求33所述的方法,其中,所述产生基于从外部设备接收的命令和地址来产生编程实体。
36.一种操作包括非易失性存储器的存储器系统的方法,包括:
在缓冲器处接收一组页数据;
在缓冲器处从存储器控制器接收与该组页数据相关联的编程实体,该编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储该组页数据的缓冲器的地址,第二地址信息指示用于存储该组页数据的非易失性存储器中的地址;以及
在非易失性存储器中执行多个编程步骤,以在非易失性存储器中存储该组页数据。
37.如权利要求36所述的方法,进一步包括:
在非易失性存储器的存储管理器处接收命令,该命令指示编程步骤之一以及所述第二地址信息;并且其中
所示执行基于该命令来执行所述多个编程步骤之一。
38.如权利要求37所述的方法,进一步包括:
通过处理器读取编程实体;以及
通过处理器向存储器管理器发送命令。
39.如权利要求38所述的方法,进一步包括:
在读取编程实体之前通过处理器从本地存储器中读取管理信息,该存储器控制器包括该本地存储器。
40.如权利要求39所述的方法,其中,所述管理信息指示缓冲器中的编程实体的位置。
41.一种存储器系统,包括:
非易失性存储器;
缓冲器,其被配置为存储多组页数据,并且被配置为存储多个编程实体,所述多个编程实体的每一个与所述多组页数据中的不同的一个相关联;
存储器控制器的处理器,其被配置为使得所述多个编程实体的至少两个不同的程序实体被顺序地访问,该处理器被配置为基于访问的编程实体,将命令发送到存储器控制器的存储器管理器;以及
存储器管理器,其被配置为基于命令将来自所述多组页数据的页数据存储在非易失性存储器中。
42.一种存储器系统,包括:
非易失性存储器;
缓冲器,其被配置为存储多组页数据,并且被配置为存储多个编程实体,所述多个编程实体的每一个与所述多组页数据中的不同的一个相关联;
存储器控制器的处理器,其被配置为从本地存储器中读取管理信息,该储器控制器包括该本地存储器,该处理器被配置为从编程实体访问编程信息,并且基于该管理信息将命令发送到存储器控制器的存储器管理器;
该存储器管理器,其被配置为基于所述命令,将来自所述多组页数据的页数据存储在非易失性存储器中;并且其中,
该处理器被配置使得所述多个编程实体的至少两个不同的程序实体被顺序地访问。
43.一种存储器系统,包括:
非易失性存储器;
缓冲器,其被配置为存储多组页数据,并且被配置为存储多个编程实体,所述多个编程实体的每一个与所述多组页数据中的不同的一个相关联;
存储器控制器的处理器,其被配置为从本地存储器读取管理信息,该存储器控制器包括该本地存储器,该处理器被配置为从编程实体访问编程信息,并且基于该管理信息将命令发送到存储器控制器的存储器管理器;
存储器管理器,其被配置为基于所述命令,将来自所述多组页数据的页数据存储在非易失性存储器中;并且其中,
该处理器被配置为发送所述命令,以使得(i)该存储器管理器在多个编程步骤中对一组页数据进行编程,以及(ii)至少两个顺序执行的编程步骤与不同组的页数据相关联。
44.一种存储器系统,包括:
存储器控制器的本地存储器,其被配置为存储管理信息;
缓冲器存储器,其被分成数据区和编程信息区,该数据区被配置为存储多组页数据,并且该编程信息区被配置为存储用于每组页数据的编程信息,用于每组页数据的编程信息指示用于存储该组页数据的非易失性存储器中的地址;以及
存储器控制器的处理器,其被配置为访问本地存储器和缓冲器存储器。
45.一种存储器控制器,其中,
该存储器控制器被配置为在缓冲器中存储接收的数据和相关联的编程实体,该编程实体包括第一地址信息和第二地址信息,第一地址信息指示存储接收的数据的缓冲器的地址,并且第二地址信息指示用于存储接收的数据的非易失性存储器中的地址;
该存储器控制器被配置为在存储器控制器的本地存储器中存储管理信息,该管理信息包括编程信息,该编程信息包括到缓冲器中的编程实体的指针;以及
存储器控制器被配置为基于管理信息和编程实体,将接收的数据从缓冲器传送到非易失性存储器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130028054A KR102101304B1 (ko) | 2013-03-15 | 2013-03-15 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
KR10-2013-0028054 | 2013-03-15 | ||
US14/095,335 US9501401B2 (en) | 2013-03-15 | 2013-12-03 | Method of operating a memory system, the memory system, and a memory controller |
US14/095,335 | 2013-12-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104049910A CN104049910A (zh) | 2014-09-17 |
CN104049910B true CN104049910B (zh) | 2019-02-22 |
Family
ID=51502843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410098236.3A Active CN104049910B (zh) | 2013-03-15 | 2014-03-17 | 操作存储器系统的方法、存储器系统、和存储器控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104049910B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037270B2 (en) * | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US10254967B2 (en) * | 2016-01-13 | 2019-04-09 | Sandisk Technologies Llc | Data path control for non-volatile memory |
CN109935265B (zh) * | 2019-02-15 | 2021-02-26 | 长江存储科技有限责任公司 | 数据读取方法及装置、存储器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4080651A (en) * | 1977-02-17 | 1978-03-21 | Xerox Corporation | Memory control processor |
US4365312A (en) * | 1978-08-30 | 1982-12-21 | Mitsubishi Denki Kabushiki Kaisha | Sequence controller |
CN1536579A (zh) * | 2003-04-08 | 2004-10-13 | 株式会社瑞萨科技 | 存储卡 |
CN102760100A (zh) * | 2011-04-25 | 2012-10-31 | 海力士半导体有限公司 | 具有存储器和存储器控制器的存储系统及其操作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010211734A (ja) * | 2009-03-12 | 2010-09-24 | Toshiba Storage Device Corp | 不揮発性メモリを用いた記憶装置 |
-
2014
- 2014-03-17 CN CN201410098236.3A patent/CN104049910B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4080651A (en) * | 1977-02-17 | 1978-03-21 | Xerox Corporation | Memory control processor |
US4365312A (en) * | 1978-08-30 | 1982-12-21 | Mitsubishi Denki Kabushiki Kaisha | Sequence controller |
CN1536579A (zh) * | 2003-04-08 | 2004-10-13 | 株式会社瑞萨科技 | 存储卡 |
CN102760100A (zh) * | 2011-04-25 | 2012-10-31 | 海力士半导体有限公司 | 具有存储器和存储器控制器的存储系统及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104049910A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239413A (zh) | 处理存储器请求 | |
CN109791519A (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN104025060B (zh) | 支持近存储器和远存储器访问的存储器通道 | |
CN103176746B (zh) | 用于数据存储系统中增强的控制器架构的系统和方法 | |
CN105814560B (zh) | 用于实现高吞吐量键-值存储的存储器设置 | |
CN104903868B (zh) | 数据存储装置、用于进行直接用户空间通信的方法和系统 | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
CN104769560B (zh) | 基于缓冲器充满度而向高速缓存进行预取 | |
CN103946812B (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN104520817B (zh) | 用于仿真多端口存储器的装置和方法 | |
CN102999439A (zh) | 高速缓冲存储器设备、处理器和信息处理装置 | |
CN102591590A (zh) | 多芯片存储器件和控制该存储器件的方法 | |
CN104115129A (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
CN103314363A (zh) | 用于设计分级存储器系统的高速存储器系统和方法 | |
CN104049910B (zh) | 操作存储器系统的方法、存储器系统、和存储器控制器 | |
JP2018198085A (ja) | メモリシステムの動作方法、メモリシステム、及びメモリコントローラ | |
CN105849669A (zh) | 用于单个通道内的dram空间联合的方法和装置 | |
CN108369562A (zh) | 具有增强型访问调度器的智能编码存储器架构 | |
CN108268421A (zh) | 用于在机架规模环境中提供可重新配置的数据层的机制 | |
EP3506116A1 (en) | Shared memory controller in a data center | |
CN110162491A (zh) | 存储器控制器及其操作方法、应用处理器和数据处理系统 | |
KR20120109903A (ko) | 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템 | |
CN108345545A (zh) | 在逻辑地址与物理地址之间执行散列式转译的存储装置 | |
CN109213438A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |