相关申请的交叉引用
本申请要求于2016年3月28日提交的申请号为10-2016-0036644的韩国专利申请的优先权,其公开内容通过引用整体并入本文。
示例性实施例涉及一种半导体存储器技术,且更特别地,涉及一种能够利用减少数量的信号线独立地访问其中的易失性存储器装置的非易失性双列直插式存储器模块,以及其操作方法。
背景技术:
在大多数情况下,单个控制器联接到两个或更多个存储器装置并控制两个或更多个存储器装置。
如图1a所示,当控制器100和存储器装置110_0之间的用于命令和地址的控制总线cmd/addr_bus0和数据总线data_bus0与控制器100和存储器装置110_1之间的控制总线cmd/addr_bus1和数据总线data_bus1分开时,控制器100可以独立地控制存储器装置110_0和存储器装置110_1。例如,当在存储器装置110_0中执行读取操作时,可以在存储器装置110_1中执行写入操作。
如图1b所示,当控制总线cmd/addr_bus和数据总线data_bus由多个存储器装置110_0和110_1共享时,分别提供用于芯片选择信号cs0和cs1的信号线。即,分别为各自的存储器装置110_0和110_1提供用于芯片选择信号cs0和cs1的信号线。因此,由存储器装置110_0和110_1之间的芯片选择信号cs0或cs1所选择的存储器装置可以执行通过控制总线cmd/addr_bus指示的操作,并且可以通过共享的数据总线data_bus与控制器100交换信号。
随着联接到单个控制器的存储器装置的数量增加,所需的信号线的数量增加,这增加了系统设计的难度并且增加了制造成本。
技术实现要素:
各个实施例涉及一种非易失性双列直插式存储器系统、存储器模块和操作存储器模块的方法,其中,当由于主机的电源故障/恢复在非易失性双列直插式存储器模块中执行备份/恢复操作时,通过单独地访问易失性存储器装置同时减少存储器模块中数据总线的连接线(wiringline)的数量来执行备份/恢复操作。
在一个实施例中,非易失性存储器模块可以包括:多个易失性存储器装置,其共享通过其传输数据的数据总线和通过其传输命令和地址的控制总线;至少一个非易失性存储器装置;以及控制器,其包括备份逻辑,当检测到主机的电源故障或由主机的存储器控制器指示备份操作时,备份逻辑将在多个易失性存储器装置中存储的数据备份,其中备份逻辑将多个易失性存储器装置中的一个的命令地址延时(cal)设置为第一值,并将剩余易失性存储器装置的命令地址延时设置为不同于第一值的第二值。
第二值可大于第一值,第二值和第一值之差可以等于或大于行地址与列地址的延时时间(trcd:ras到cas延迟)。
第二值和第一值之差可以小于行预充电时间(trp)。
备份逻辑包括:适于当对非易失性存储器装置的存储器页面编程时对多个易失性存储器装置执行均匀分布刷新周期的分布式刷新操作的逻辑;适于当非易失性存储器装置的新存储器页面被准备并写入时,在其中多个易失性存储器装置使用低于正常电源模式中的功率的低电源模式下操作多个易失性存储器装置的逻辑;以及适于在非易失性存储器装置的新存储器页面被写入之后将多个易失性存储器装置恢复到正常电源模式的逻辑。
控制器可以进一步包括恢复逻辑,其适于当主机的电源恢复至正常状态时将在非易失性存储器装置中备份的数据恢复到多个易失性存储器装置,并且恢复逻辑将多个易失性存储器装置中的一个的命令地址延时(cal)设置为第三值,并将剩余的易失性存储器装置的命令地址延时设置为不同于第三值的第四值。
第四值可大于第三值,第四值和第三值之差可以等于或大于行地址与列地址的延时时间(trcd:ras到cas延时)。
第四值和第三值之差可以小于行预充电时间(trp)。
恢复逻辑可以包括:适于在完成从非易失性存储器装置到多个易失性存储器装置的数据恢复之后,确定非易失性存储器装置中是否存在用于数据备份的足够量的擦除块的逻辑;适于当非易失性存储器装置中不存在用于数据备份的足够量的擦除块时擦除新块的逻辑;以及适于当非易失性存储器装置中存在用于数据备份的足够量的擦除块时将对多个易失性存储器装置的控制从控制器改变到主机的存储器控制器的逻辑。
在一个实施例中,提供了一种用于操作非易失性存储器模块的方法,非易失性存储器模块包括:共享通过其传输数据的数据总线和通过其传输命令和地址的控制总线的多个易失性存储器装置、非易失性存储器装置以及控制器,该方法可以包括:通过主机的存储器控制器控制多个易失性存储器装置;检测主机的电源故障或接收来自主机的存储器控制器的用于备份操作的指示;将对多个易失性存储器装置的控制从主机的存储器控制器改变到控制器;通过控制器将多个易失性存储器装置中的一个的命令地址延时(cal)设置为第一值,并通过控制器将剩余易失性存储器装置的命令地址延时设置为不同于第一值的第二值;读取命令地址延时为第一值的易失性存储器装置;以及将读取的数据备份在非易失性存储器装置中。
第二值可大于第一值,第二值和第一值之差可以等于或大于行地址与列地址的延时时间(trcd:ras到cas延时)。
第二值和第一值之差可以小于行预充电时间(trp)。
备份读取的数据可以包括:当对非易失性存储器装置的存储器页面编程时对多个易失性存储器装置执行均匀分布刷新周期的分布式刷新操作;当非易失性存储器装置的新存储器页面被准备并写入时,在其中多个易失性存储器装置使用低于正常电源模式中的功率的低电源模式下操作多个易失性存储器装置;以及在非易失性存储器装置的新存储器页面被写入后将多个易失性存储器装置恢复到正常电源模式。
该方法可进一步包括:检测主机的电源恢复或接收来自主机的存储器控制器的用于恢复操作的指示;通过控制器将多个易失性存储器装置中的一个的命令地址延时(cal)设置为第三值,并通过控制器将剩余易失性存储器装置的命令地址延时设置为不同于第三值的第四值;读取在非易失性存储器装置中备份的数据,并将读取的数据恢复在命令地址延时为第三值的易失性存储器装置中;以及当待恢复的数据剩余在非易失性存储器装置中时迭代将cal设置为第三值和第四值以及读取和恢复。
第四值可大于第三值,第四值和第三值之差可以等于或大于行地址与列地址的延时时间(trcd:ras到cas延时)。
第四值和第三值之差可以小于行预充电时间(trp)。
该方法可进一步包括:确定非易失性存储器装置中是否存在用于数据备份的足够量的擦除块;(vii)当在非易失性存储器装置中不存在用于数据备份的足够量的擦除块时擦除新块;以及(viii)当非易失性存储器装置中存在用于数据备份的足够量的擦除块时将对多个易失性存储器装置的控制从控制器改变到主机的存储器控制器。
一种非易失性存储器模块可以包括:适于通过共用数据总线存储从主机提供的数据的易失性存储器装置,适于对在易失性存储器装置中存储的数据备份的非易失性存储器装置,以及适于在主机的电源故障时将所选择的易失性存储器装置的数据备份在非易失性存储器装置中的控制器,其中在备份数据中,控制器将所选择的易失性存储器装置中的一个的命令地址延时(cal)设置为第一值,并将易失性存储器装置的剩余易失性存储器装置的命令地址延时设置为第二值。
根据本发明的实施例,当由于主机的电源故障/恢复而在非易失性双列直插式存储器模块中执行备份/恢复操作时,通过在非易失性双列直插式存储器模块中利用减少数量的数据总线的信号线访问易失性存储器装置来执行备份/恢复操作是可能的。
附图说明
图1a和图1b是示出根据常规技术的控制器和存储器装置之间的总线连接的示例的框图。
图2是辅助描述易失性存储器装置中pda模式下模式寄存器设置(moderegisterset,mrs)的操作的时序图的示例。
图3是辅助描述易失性存储器装置的命令地址延时(cal)的时序图的示例。
图4是示出根据实施例的双列直插式存储器模块(dimm)的基本配置的框图。
图5是辅助描述图4所示的dimm的操作的流程图的示例。
图6是辅助描述图5的操作512和513的时序图的示例。
图7是辅助描述图5的操作521和522的时序图的示例。
图8是辅助描述当易失性存储器装置410_0和410_1的命令地址延时cal的值之差dcal等于或大于trcd且小于trp时的优点的时序图的示例。
图9是示出根据实施例的非易失性双列直插式存储器模块(nvdimm)的示例的配置简图。
图10是示出根据另一实施例的nvdimm的示例的配置简图。
图11是辅助描述根据实施例的nvdimm中备份操作的流程图的示例。
图12是辅助描述根据实施例的nvdimm中恢复操作的流程图的示例。
具体实施方式
下面将参照附图更详细地描述各个实施例。然而,本发明可以不同的形式体现且不应解释为限于本文阐述的实施例。相反,提供这些实施例使得本发明将是全面的和完整的,并将本发明的范围充分传达给本领域技术人员。遍及本公开,在本发明的各附图和实施例中相似的参考标号指代相似的部件。
本发明涉及一种非易失性双列直插式存储器模块,其中控制器可利用减少数量的信号线独立访问共享数据总线和控制总线的易失性存储器装置。下面,为了便于理解根据实施例的非易失性双列直插式存储器模块,将对整个系统的详细配置顺序地进行说明。
易失性存储器装置的per-dram可寻址能力(pda)模式
首先,将对易失性存储器装置的pda模式和命令地址延时(cal)进行描述。
图2是辅助描述易失性存储器装置中pda模式下模式寄存器设置(mrs)的操作的时序图的示例。
在pda模式中,对每个易失性存储器装置执行独立的模式寄存器设置操作。当设置pda模式时,可以根据第0数据焊盘(datapad)dq0的信号水平来确定所有模式寄存器设置命令的有效性。如果写入延时(wl=al+cwl,其中wl表示写入延时,al表示附加延时,cwl表示cas写入延时)后,第0数据焊盘dq0的信号水平为“0”,则采用的所有模式寄存器设置命令可被确定为有效,并且如果第0数据焊盘dq0的信号水平为“1”,则采用的所有模式寄存器设置命令可被确定为无效并可被忽略。
参照图2,在时间点201,将模式寄存器设置命令mrs应用到易失性存储器装置。在从时间点201开始经过对应于写入延时(wl=al+cwl)的时间的时间点202,第0数据焊盘dq0的信号水平转变为“0”以被保持预定的时段。因此,在时间点201应用的模式寄存器设置命令mrs被确定为有效,并且在从时间点203开始的模式寄存器设置命令周期(表示为图2中的“tmrd_pda”)期间,通过使用与模式寄存器设置命令mrs一起输入的地址(未示出)来执行易失性存储器装置的设置操作。
当第0数据焊盘dq0的信号水平在时间点202被连续保持为“1”时,在时间点201应用的模式寄存器设置命令mrs被确定为无效,并因此被忽略。也就是说,并不执行易失性存储器装置的设置操作。
易失性存储器装置的命令地址延时(cal)
图3是辅助描述易失性存储器装置的cal的时序图的示例。
cal表示芯片选择信号cs和通过控制总线(cmd/addr_bus)传输的控制信号之中的剩余信号之间的时间差。如果设置cal,则易失性存储器装置仅将从芯片选择信号cs的启用时间开始经过对应于cal的时间之后输入的控制信号确定为有效。可以通过模式寄存器设置(mrs)来设置cal的值。
图3示出当cal被设置为3个时钟周期时的操作。在芯片选择信号cs被启用为低电平的时间点301后经过3个时钟的时间点302,将不同于芯片选择信号cs的命令cmd和地址addr应用到易失性存储器装置。然后,易失性存储器装置可以将在时间点302应用的命令cmd和地址addr识别为有效。当在与芯片选择信号cs被启用的时间点301相同的时间点或在从芯片选择信号cs被启用的时间点301开始经过1个时钟或2个时钟的时间点,将命令cmd和地址addr应用到易失性存储器装置时,易失性存储器装置并不将命令cmd和地址addr识别为有效。
由于还在从芯片选择信号cs被启用的时间点303和305开始经过对应于cal的时间例如3个时钟的时间点304和306应用命令cmd和地址addr,在时间点304和306应用的命令cmd和地址addr可以被易失性存储器装置识别为有效。
双列直插式存储器模块(dimm)的基本配置
图4是示出根据实施例的dimm的基本配置的框图。
参照图4,dimm可以包括控制器400、第一易失性存储器装置410_0、第二易失性存储器装置410_1、控制总线cmd/addr_bus以及数据总线data_bus。
通过控制总线cmd/addr_bus将控制信号从控制器400传输到易失性存储器装置410_0和410_1。控制信号可以包括命令cmd、地址addr和时钟ck。命令cmd可以包括多个信号。例如,命令cmd可以包括激活信号(act)、行地址选通信号(ras)、列地址选通信号(cas)和芯片选择信号(cs)。虽然芯片选择信号cs是包含在命令cmd中的信号,但芯片选择信号cs被单独地示出在附图中以表示易失性存储器装置410_0和410_1共享相同的芯片选择信号cs。地址addr可以包括多个信号。例如,地址addr可以包括多位存储库组(bankgroup)地址、多位存储库地址和多位正常地址。时钟ck可以从控制器400被传输到易失性存储器装置410_0和410_1,用于易失性存储器装置410_0和410_1的同步操作。可以包括时钟(ck_t)和反转时钟(ck_t)获得的时钟条(clockbar,ck_c)的差分法来传输时钟ck。
数据总线data_bus可以在控制器400与易失性存储器装置410_0和410_1之间传输多位数据data0至data3。各个易失性存储器装置410_0和410_1设置有分别与数据总线data_bus的数据线data0至data3联接的数据焊盘dq0至dq3。各个易失性存储器装置410_0和410_1的特定数据焊盘例如数据焊盘dq0可以联接到不同的数据线data0和data1。指定数据焊盘dq0可以用于设置延时,以用于识别控制总线cmd/addr_bus上的控制信号。
控制器400可以通过控制总线cmd/addr_bus控制易失性存储器装置410_0和410_1,并且可以通过数据总线data_bus与易失性存储器装置410_0和410_1交换数据。控制器400可以设置在dimm中,可以将延时设置为不同的值,以用于允许易失性存储器装置410_0和410_1识别控制总线cmd/addr_bus上的信号,并且可以通过使用延时来访问易失性存储器装置410_0和410_1之间期望的易失性存储器装置。这将在下文中参照图5至图7b被详细说明。
第一易失性存储器装置410_0和第二易失性存储器装置410_1可以共享控制总线cmd/addr_bus和数据总线data_bus。第一易失性存储器装置410_0和第二易失性存储器装置410_1还可共享芯片选择信号cs。第一易失性存储器装置410_0和第二易失性存储器装置410_1可以为通过控制总线cmd/addr_bus待被传输的控制信号设置不同的延时。延时可以指例如芯片选择信号cs的参考信号与控制总线cmd/addr_bus上的信号中的剩余信号cmd和addr之间的时间差。由于第一易失性存储器装置410_0和第二易失性存储器装置410_1相对于控制总线cmd/addr_bus被设置有不同的延时的事实,第一易失性存储器装置410_0和第二易失性存储器装置410_1可被控制器400独立地访问,这将在下面参照图5至图7b被详细说明。
如从图4可以看出,用于识别第一易失性存储器装置410_0和第二易失性存储器装置410_1的任何信号传输线并不单独地分配给第一易失性存储器装置410_0和第二易失性存储器装置410_1。然而,控制器400可以单独地访问第一易失性存储器装置410_0和第二易失性存储器装置410_1,这将在下面进行描述。
dimm的基本cal设置操作
图5是辅助描述图4所示的dimm的操作的流程图的示例。
参照图5,dimm的操作可分为步骤510和步骤520,步骤510是控制器400为通过第一易失性存储器装置410_0和第二易失性存储器装置410_1的控制总线cmd/addr_bus传输的控制信号设置不同的延时,步骤520是控制器400单独访问第一易失性存储器装置410_0和第二易失性存储器装置410_1。
在步骤511,控制器400可以控制第一易失性存储器装置410_0和第二易失性存储器装置410_1以进入pda模式。这可以通过应用对应于模式寄存器设置命令(mrs)的命令cmd和应用作为对应于进入pda模式的组合的地址addr来实现。
在步骤512,第一易失性存储器装置410_0的命令地址延时cal可被设置为“0”。这可以通过应用作为对应于模式寄存器设置命令(mrs)的组合的命令cmd、应用作为对应于cal设置为“0”的组合的地址addr、以及在从命令cmd的应用时间开始经过写入延时wl(wl=al+cwl)之后将信号电平“0”应用至对应于第一易失性存储器装置410_0的第0数据焊盘dq0的第0数据线data0来实现。参照图6,在时间点601应用用于设置cal为“0”的命令/地址cmd/addr,并且在从时间点601开始经过对应于写入延时wl的时间的时间点602,数据线data0具有电平“0”。由于在时间点602数据线data1具有电平“1”,因此第二易失性存储器装置410_1忽略在时间点601应用的命令cmd。
在步骤513,第二易失性存储器装置410_1的命令地址延时cal可被设置为“3”。这可以通过应用作为对应于模式寄存器设置命令(mrs)的组合的命令cmd、应用作为对应于cal设置为“3”的组合的地址addr以及在从命令cmd的应用时间开始经过写入延时wl(wl=al+cwl)之后将信号电平“0”应用至对应于第二易失性存储器装置410_1的第0数据焊盘dq0的第1数据线data1来实现。参照图6,在时间点603应用用于设置cal为“3”的命令/地址cmd/addr,并且在从时间点603开始经过对应于写入延时wl的时间的时间点604,数据线data1具有电平“0”。由于数据线data0在时间点604具有电平“1”,第一易失性存储器装置410_0忽略在时间点603应用的命令cmd。当完成易失性存储器装置410_0和410_1的延时设置时,可以在步骤514结束pda模式。
由于第一易失性存储器装置410_0和第二易失性存储器装置410_1的命令地址延时cal彼此不同地设置,控制器400可以在步骤521通过在芯片选择信号cs的启用时间应用命令/地址cmd/addr来访问第一易失性存储器装置410_0,或者可以在步骤522通过从芯片选择信号cs的启用时间开始3个时钟后应用命令/地址cmd/addr来访问第二易失性存储器装置410_1。
图7a和图7b是表示图5的操作521和522的时序图。参照图7a和图7b,在与芯片选择信号cs的启用时间相同的时间点701、703、705、707、709和711应用的命令cmd被第一易失性存储器装置410_0识别并操作第一易失性存储器装置410_0,在从芯片选择信号cs的启用时间开始3个时钟之后的时间点702、704、706、708、710和712应用的命令cmd被第二易失性存储器装置410_1识别并操作第二易失性存储器装置410_1。在图中,参考符号nop表示其中未执行操作的非操作状态。
在时间点701、702、703、704、707、708、709和710的操作中,仅访问第一易失性存储器装置410_0和第二易失性存储器装置410_1的一个易失性存储器装置是可能的。此外,在时间点705、706、711和712的操作中,通过在芯片选择信号cs的启用时间应用有效命令cmd以及在从芯片选择信号cs的启用时间开始3个时钟之后应用有效命令cmd,访问第一易失性存储器装置410_0和第二易失性存储器装置410_1两者是可能的。
根据以上参照图4至图7b描述的实施例,易失性存储器装置410_0和410_1共享控制总线cmd/addr_bus和数据总线data_bus,但相对于控制总线cmd/addr_bus具有不同的延时。通过改变经由控制总线cmd/addr_bus应用的信号的延时,控制器400可以访问期望在易失性存储器装置410_0和410_1之间访问的易失性存储器装置。因此,不需要独立地控制易失性存储器装置410_0和410_1的附加线。
虽然上述实施例例示出易失性存储器装置410_0和410_1被控制器400设置为相对于控制总线cmd/addr_bus具有不同的延时,但这仅为了说明的目的,易失性存储器装置410_0和410_1可以被编程为永久具有不同的延时。例如,当制造易失性存储器装置410_0和410_1时,易失性存储器装置410_0和410_1相对于控制总线cmd/addr_bus的延时可能是固定的,或者在制造易失性存储器装置410_0和410_1之后,可通过永久设置例如通过使用熔丝电路设置使易失性存储器装置410_0和410_1相对于控制总线cmd/addr_bus的延时是固定的。
这里,易失性存储器装置410_0和410_1之间的命令地址延时cal的差值可以等于或大于行地址与列地址的延时时间trcd(ras到cas延时)。另外,易失性存储器装置410_0和410_1之间的命令地址延时cal的差值可以小于行预充电时间trp。即,dcal(cal差)≥trcd,且dcal<trp。图8是辅助描述当易失性存储器装置410_0和410_1的命令地址延时cal的值之差dcal等于或大于trcd且小于trp时的优点的简图的示例。参照图8,将假设当第一易失性存储器装置410_0具有cal=0且第二易失性存储器装置410_1具有cal=3时的dcal=3,trcd=3和trp=4进行描述。
参照图8,在时间点801,可以启用芯片选择信号cs,通过命令/地址cmd/addr可指示激活操作act。然后,第一易失性存储器装置410_0可以通过在时间点801识别激活操作act来执行激活操作。
在时间点802,可以启用芯片选择信号cs,并通过命令/地址cmd/addr可指示读取操作rd。然后,第一易失性存储器装置410_0可以通过在时间点802识别读取操作rd来执行读取操作。在时间点801启用芯片选择信号cs后经过3个时钟的时间点802,第二易失性存储器装置410_1可以从命令/地址cmd/addr识别读取操作rd。然而,由于激活操作尚未在第二易失性存储器装置410_1中执行,第二易失性存储器装置410_1可以将由命令/地址cmd/addr指示的读取操作rd确定为非法的,并且可以不执行读取操作。如果dcal小于trcd,当第二易失性存储器装置410_1识别指示给第一易失性存储器装置410_0的激活操作act时可能发生误操作。当dcal≥trcd时可以防止这样的误操作。在时间点802启用芯片选择信号cs后经过3个时钟的时间点803,第二易失性存储器装置410_1可以从命令/地址cmd/addr识别读取操作rd。然而,由于激活操作尚未在第二易失性存储器装置410_1中执行,第二易失性存储器装置410_1可以将由命令/地址cmd/addr指示的读取操作rd确定为非法的,并且可以不执行读取操作。
在时间点804,可以启用芯片选择信号cs,通过命令/地址cmd/addr可指示预充电操作pcg。然后,第一易失性存储器装置410_0可以通过在时间点804识别预充电操作pcg来执行预充电操作。在时间点804启用芯片选择信号cs后经过3个时钟的时间点805,第二易失性存储器装置410_1可以从命令/地址cmd/addr识别预充电操作pcg并且可以执行预充电操作。由于预充电操作不用考虑是否已经在先执行激活操作,因此甚至可以通过第二易失性存储器装置410_1执行预充电操作。
在时间点806,可以启用芯片选择信号cs,通过命令/地址cmd/addr可指示激活操作act。然后,第一易失性存储器装置410_0可以通过在时间点806识别激活操作act来执行激活操作。如果dcal被设置为大于trp,当第二易失性存储器装置410_1从时间点806识别通过命令/地址cmd/addr指示的激活操作act并执行激活操作时可能发生误操作。由于dcal<trp,可以防止这样的误操作。
在时间点807,可以启用芯片选择信号cs,通过命令/地址cmd/addr可指示写入操作wt。然后,第一易失性存储器装置410_0可以通过在时间点807识别写入操作wt来执行写入操作。在时间点806启用芯片选择信号cs后经过3个时钟的时间点807,第二易失性存储器装置410_1可以从命令/地址cmd/addr识别写入操作wt。然而,由于激活操作尚未在第二易失性存储器装置410_1中执行,第二易失性存储器装置410_1可以将由命令/地址cmd/addr指示的写入操作wt确定为非法的,并且可以不执行写入操作。在时间点807启用芯片选择信号cs后经过3个时钟的时间点808,第二易失性存储器装置410_1可以从命令/地址cmd/addr识别写入操作wt。然而,第二易失性存储器装置410_1可以将由命令/地址cmd/addr指示的写入操作wt确定为非法的,并且可以不执行写入操作。
如上面参照图8所述,通过以满足dcal(cal差)≥trcd且dcal<trp的这种方式设置易失性存储器装置410_0和410_1的命令地址延时cal,防止易失性存储器装置410_0和410_1执行误操作是可能的。
非易失性双列直插式存储器模块(nvdimm)的配置和操作
图9是示出根据实施例的nvdimm900的示例的配置简图。在图9中,将对如下示例进行描述:将如上参照图4-8所述的设置易失性存储器装置的不同cal和独立地访问共享数据总线和控制总线的易失性存储器装置的方案应用于根据实施例的nvdimm900。
在图9中,一起示出了构建nvdimm存储器系统的主机的存储器控制器9和辅助电源10。nvdimm900是通过当主机的电源不稳定时将易失性存储器装置的数据备份在非易失性存储器装置中的操作,在发生电源故障时防止数据丢失的存储器模块。
参照图9,nvdimm900可以包括第一组易失性存储器装置911至914、第二组易失性存储器装置921至924、非易失性存储器装置930、控制器940、寄存器950、电源故障检测器960、第一数据总线data_bus1、第二数据总线data_bus2、控制总线cmd/addr_bus、多个第三数据总线data_bus3_1至data_bus3_4和多个第四数据总线data_bus4_1至data_bus4_4。
当主机的电源host_vdd和host_vss正常时,寄存器950可以通过主机控制总线host_cmd/addr_bus缓冲从主机的存储器控制器9提供的命令、地址和时钟,并可以通过控制总线cmd/addr_bus将命令、地址和时钟提供到第一组易失性存储器装置911至914和第二组易失性存储器装置921至924。当主机的电源host_vdd和host_vss正常时,第一组易失性存储器装置911至914可以分别通过对应于其的第三数据总线data_bus3_1至data_bus3_4从主机的存储器控制器9接收数据/将数据传输到主机的存储器控制器9,第二组易失性存储器装置921至924可以分别通过对应于其的第四数据总线data_bus4_1至data_bus4_4从主机的存储器控制器9接收数据/将数据传输到主机的存储器控制器9。即,当主机的电源host_vdd和host_vss正常时,第一组易失性存储器装置911至914和第二组易失性存储器装置921至924可以通过第三数据总线data_bus3_1至data_bus3_4和第四数据总线data_bus4_1至data_bus4_4中的对应的数据总线与主机的存储器控制器9独立地通信。
当电源故障检测器960检测到由于形成主机的电源host_vdd和host_vss的电压电平变得不稳定导致的主机的电源host_vdd和host_vss中的故障时,主机的电源host_vdd和host_vss到nvdimm900的供应被中断。然后,辅助电源10的应急电源emg_vdd和emg_vss被供应到nvdimm900。辅助电源10可通过大容量的电容器例如超级电容器来实现,并且当将第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的数据备份在非易失性存储器装置930中时,可以提供应急电源emg_vdd和emg_vss。虽然图9示出辅助电源10设置在nvdimm900外,但辅助电源10也可以设置在nvdimm900内。此外,当检测到主机的电源host_vdd和host_vss中的故障时,电源故障检测器960会通知控制器940故障。
当电源故障检测器960通知主机的电源host_vdd和host_vss中的故障时,对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制从主机的存储器控制器9改变到nvdimm900的控制器940。然后,寄存器950可以缓冲从控制器940提供的命令、地址和时钟,并可以通过控制总线cmd/addr_bus将命令、地址和时钟提供到第一组易失性存储器装置911至914和第二组易失性存储器装置921至924。第一组易失性存储器装置911至914可以通过第一数据总线data_bus1与控制器940交换数据,第二组易失性存储器装置921至924可以通过第二数据总线data_bus2与控制器940交换数据。控制器940可以通过控制总线cmd/addr_bus、第一数据总线data_bus1和第二数据总线data_bus2读取第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的数据,并且可以将读取的数据存储即备份在非易失性存储器装置930中。
在主机的电源host_vdd和host_vss恢复至正常状态之后,主机的电源host_vdd和host_vss发生故障时备份在非易失性存储器装置930中的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的数据可以被传输至和存储在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中。可以根据控制器940的控制来执行这样的恢复操作,并且在恢复完成后,对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制会从nvdimm900的控制器940改变回主机的存储器控制器9。
第一组易失性存储器装置911至914共享与控制器940连通的相同的控制总线cmd/addr_bus和数据总线data_bus1。类似地,第二组易失性存储器装置921至924共享与控制器940连通的相同的控制总线cmd/addr_bus和数据总线data_bus2。然而,控制器940可以独立地访问第一组易失性存储器装置911至914之中的单个易失性存储器装置,并且可以独立地访问第二组易失性存储器装置921至924之中的单个易失性存储器装置。就这点而言,以上参照图2-8对共享控制总线cmd/addr_bus和数据总线data_bus的dimm的配置和操作进行描述。关于与nvdimm中数据备份和恢复相关的独立操作,之后将参照图11和图12进行描述。
第一组易失性存储器装置911至914和第二组易失性存储器装置921至924可以是dram,或者不仅可以是dram而且可以是不同类型的易失性存储器装置。例如,非易失性存储器装置930可以是nand闪存。然而,非易失性存储器装置930不限于此,并且可以是任何类型的易失性存储器装置,例如nor闪存、电阻ram(rram)、相位ram(pram)、磁ram(mram)或旋转移矩mram(stt-mram)。
图9中所示的nvdimm900中的组件可以彼此结合或分开。
例如,控制器940、寄存器950和电源故障检测器960可通过一个芯片来配置或者可通过多个芯片来配置。此外,nvdimm900中使用的第一组易失性存储器装置911至914、第二组易失性存储器装置921至924和非易失性存储器装置930的数量可以不同于图9所示出的。
图10是示出根据另一实施例的nvdimm900的示例的配置简图。
图9和图10中的nvdimm900可以彼此相同,除了多路复用器1101至1108和4个数据焊盘dq0至dq3。
通过多路复用器1101至1104,当第一组易失性存储器装置911至914与主机的存储器控制器9通信时,第一组易失性存储器装置911至914的数据焊盘dq0至dq3可以与第三数据总线data_bus3_1至data_bus3_4联接,并且当第一组易失性存储器装置911至914与控制器940通信时,第一组易失性存储器装置911至914的数据焊盘dq0至dq3可以与第一数据总线data_bus1联接。
通过多路复用器1105至1108,当第二组易失性存储器装置921至924与主机的存储器控制器9通信时,第二组易失性存储器装置921至924的数据焊盘dq0至dq3可以与第四数据总线data_bus4_1至data_bus4_4联接,并且当第二组易失性存储器装置921至924与控制器940通信时,第二组易失性存储器装置921至924的数据焊盘dq0至dq3可以与第二数据总线data_bus2联接。
由于除增加了多路复用器1101至1108并在第一组易失性存储器装置911至914和第二组易失性存储器装置921至9244的每个中使用4个数据焊盘dq0至dq3外,图10的nvdimm900以与以上参照图9所述的相同方式操作,因此此处省略进一步详细的描述。
掉电备份操作
图11是辅助描述根据实施例的nvdimm900的备份操作的流程图的示例。
在步骤s1110中,第一组易失性存储器装置911至914和第二组易失性存储器装置921至924在正常时间与主机的存储器控制器9通信,并由图9中示出的nvdimm900中的主机的存储器控制器9执行对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制。当第一组易失性存储器装置911至914和第二组易失性存储器装置921至924共享相同的控制总线cmd/addr_bus时,分别为第一组易失性存储器装置911至914和第二组易失性存储器装置921至924提供数据总线data_bus3_1至data_bus3_4和data_bus4_1至data_bus4_4。因此,与nvdimm900的控制器940不同,主机的存储器控制器9可以独立地从第一组易失性存储器装置911至914和第二组易失性存储器装置921至924接收数据/将数据传输到第一组易失性存储器装置911至914和第二组易失性存储器装置921至924。
在步骤s1120中,确定是否可满足在非易失性存储器装置930中备份第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的数据的触发条件。例如,检测到主机的电源host_vdd和host_vss故障可满足触发条件。可选地,当根据主机的存储器控制器9的命令执行备份操作时,主机的存储器控制器9的备份操作命令可满足触发条件。
在步骤s1130中,对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制可从主机的存储器控制器9改变到nvdimm900的控制器940。此外,将被nvdimm900使用的电源可从主机的电源host_vdd和host_vss改变到由辅助电源10供应的应急电源emg_vdd和emg_vss。而且,当控制对象改变为控制器940时,由第一组易失性存储器装置911至914使用的数据总线从第三数据总线data_bus3_1至data_bus3_4改变到第一数据总线data_bus1,由第二组易失性存储器装置921至924使用的数据总线从第四数据总线data_bus4_1至data_bus4_4改变到第二数据总线data_bus2。
在步骤s1140中,控制器940单独对共享控制总线cmd/addr_bus与数据总线data_bus1和data_bus2的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924设置命令地址延时cal。
参照图9,各个第一组易失性存储器装置911至914和各个第二组易失性存储器装置921至924包括8个数据焊盘dq0至dq7。在数据焊盘dq0至dq7之中,4个数据焊盘dq0至dq3可以与第一数据总线data_bus1和第二数据总线data_bus2联接,4个剩余数据焊盘dq4至dq7可以与第三数据总线data_bus3_1至data_bus3_4和第四数据总线data_bus4_1至data_bus4_4联接。通过控制器940的命令可以改变由第一组易失性存储器装置911至914和第二组易失性存储器装置921至924使用的数据总线。第一组易失性存储器装置911至914的第0数据焊盘dq0可以分别与第一数据总线data_bus1的不同数据线联接,第二组易失性存储器装置921至924的第0数据焊盘dq0可以分别与第二数据总线data_bus2的不同数据线联接。通过此,第一组易失性存储器装置911至914可以独立地进入pda模式,第二组易失性存储器装置921至924可以独立地进入pda模式。
例如,这可以通过以下来实现:将目标易失性存储器装置,例如第一组易失性存储器装置911至914的易失性存储器装置911和第二组易失性存储器装置921至924的易失性存储器装置921,的命令地址延时cal设置为第一值,例如0;以及将除第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921之外的剩余易失性存储器装置的命令地址延时cal设置为第二值,例如3。
在步骤s1150中,控制器940通过使用设置的命令地址延时cal读取第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921。例如,通过在芯片选择信号cs的启用时间应用命令/地址cmd/addr,控制器400可以通过访问其命令地址延时cal被设置为第一值例如0的第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921,读取第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921。由于除第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921之外的剩余易失性存储器装置912至914和922至924的命令地址延时cal被设置为第二值,例如3,剩余易失性存储器装置912至914和922至924忽略来自控制器940的读取命令。
从以上参照图4至图7b进行的描述,可以理解步骤s1140的方案和步骤s1150的方案,其中步骤s1140的方案为控制器940对共享控制总线cmd/addr_bus与数据总线data_bus1和data_bus2的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924独立地设置命令地址延时cal,并且步骤s1150的方案为控制器940通过访问第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921来读取数据,其中目标易失性存储器装置911和921具有指定的命令地址延时cal。此外,如上所述,命令地址延时cal的第一值和第二值之差dcal可以满足dcal≥trcd和dcal<trp的方式来设置。
在步骤s1160中,当将从易失性存储器装置读取的数据写入在非易失性存储器装置930中时,执行数据备份操作。例如,可以将从第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921读取的数据备份在非易失性存储器装置930的页面中。
在步骤s1170中,确定非易失性存储器页面是否已满(即,对于页面的数据写入已完成)。如果非易失性存储器页面未满,该进程可以返回到步骤s1140。
例如,当存储在第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921中的数据剩余时,控制器940可以通过在步骤s1140将第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921的命令地址延时cal设置为第一值例如0,并且将除目标易失性存储器装置911和921之外的剩余易失性存储器装置912至914和922至924的命令地址延时cal设置为第二值例如3,来对在第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921中存储的剩余数据执行读取操作。
对于另一实例,当在第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921中存储的所有数据被备份时,控制器940可以在步骤s1140中将另外的目标易失性存储器装置,例如第一组易失性存储器装置911至914的目标易失性存储器装置912和第二组易失性存储器装置921至924的目标易失性存储器装置922,的命令地址延时cal设置为第一值,例如0,并且可以将除目标易失性存储器装置912和922之外的剩余易失性存储器装置911、913、914、921、923和924的命令地址延时cal设置为第二值,例如3。然后,在步骤s1150中,控制器940可以通过命令地址延时cal的设置读取目标易失性存储器装置912和922。尽管未示出,但通过命令地址延时cal的设置,可以通过将第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中的每个易失性存储器装置单独地选择为目标易失性存储器装置,对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的所有执行共享控制总线cmd/addr_bus与数据总线data_bus1和data_bus2的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的选择性的读取。
当在步骤s1170中确定非易失性存储器页面已满时,该进程继续至对非易失性存储器页面编程的步骤s1180。
当对非易失性存储器装置930的存储器页面编程时,有必要检查是否仍存在未从第一组易失性存储器装置911至914和第二组易失性存储器装置921至924读取的数据。因此,在步骤s1180的对非易失性存储器装置930的存储器页面的编程操作过程中,控制器940可以对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924执行刷新操作。例如,可以对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924执行均匀分布刷新周期的分布式刷新操作,使得在迭代任务之前打开所有行,并且当在各个第一组易失性存储器装置911至914和各个第二组易失性存储器装置921至924中不执行刷新时读取数据。
当准备了新非易失性存储器页面并写入时,第一组易失性存储器装置911至914和第二组易失性存储器装置921至924可以在其中第一组易失性存储器装置911至914和第二组易失性存储器装置921至924使用比正常电源模式低的功率的低电源模式下操作。在准备新非易失性存储器页面并写入后,当待备份的数据仍然剩余在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中并且待编程的存储器页面存在于非易失性存储器装置930中时,将第一组易失性存储器装置911至914和第二组易失性存储器装置921至924恢复至正常电源模式,使得连续执行读取待备份的数据的操作。
在步骤s1190中,确定待备份的数据是否剩余在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中。当待备份的数据没有剩余时,可以结束掉电备份操作,并且可以关闭nvdimm900。当待备份的数据剩余时,该进程可以继续至步骤s1140,并且对剩余数据执行备份操作。
上电恢复操作
图12是辅助描述根据实施例的nvdimm900中的恢复操作的流程图的示例。
当主机的电源host_vdd和host_vss恢复到正常状态或当主机的存储器控制器9指示恢复操作时,可以执行上电恢复操作。由于主机的电源host_vdd和host_vss已恢复到正常状态,可以通过主机的电源host_vdd和host_vss执行上电恢复操作。
在一个实例中,在其中完成以上参照图11所述的备份操作后关闭nvdimm900的状态下,nvdimm900可执行恢复操作。在另一实例中,在备份操作的过程中,主机的电源host_vdd和host_vss可以恢复到正常状态。在这种情况下,可以中断掉电备份操作,并且可以执行上电恢复操作。在任一实例中,在步骤s1210中,nvdimm900的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924可处于nvdimm900的控制器940的控制下。
在步骤s1220中,确定是否满足恢复条件,并且如果满足恢复条件,则开始从非易失性存储器装置930到第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的数据恢复。
在步骤s1230中,控制器940对共享控制总线cmd/addr_bus与数据总线data_bus1和data_bus2的第一组易失性存储器装置911至914和第二组易失性存储器装置921至924单独设置命令地址延时cal。如上参照图11对备份操作的描述,第一组易失性存储器装置911至914可以独立地进入pda模式,并且第二组易失性存储器装置921至924可以独立地进入pda模式。
例如,可将第一组易失性存储器装置911至914中的目标易失性存储器装置911和第二组易失性存储器装置921至924中的目标易失性存储器装置921的命令地址延时cal设置为第三值例如0,并且将除目标易失性存储器装置911和921之外的剩余易失性存储器装置912至914和922至924的命令地址延时cal设置为第四值例如3。
在步骤s1240中,通过命令地址延时cal将从非易失性存储器装置930读取的数据写入到第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921中,可以执行第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921的数据恢复。
在步骤s1250中,确定待恢复的数据是否剩余在非易失性存储器装置930中。如果剩余待恢复的数据,则该进程可继续至步骤s1230,并且可以对剩余数据执行恢复操作。
例如,如果第一组易失性存储器装置911至914的目标易失性存储器装置911和第二组易失性存储器装置921至924的目标易失性存储器装置921的数据恢复完成,则控制器940在步骤s1230中可以将另外的目标易失性存储器装置例如第一组易失性存储器装置911至914的目标易失性存储器装置912和第二组易失性存储器装置921至924的目标易失性存储器装置922的命令地址延时cal设置为第三值例如0,并且可以将除目标易失性存储器装置912和922之外的剩余易失性存储器装置911、913、914、921、923和924的命令地址延时cal设置为第四值例如3。然后,在步骤s1240中,控制器940可以通过命令地址延时cal的设置将从非易失性存储器装置930读取的数据恢复到目标易失性存储器装置912和922。通过单独设置在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中的每个作为目标易失性存储器装置的易失性存储器装置的命令地址延时cal,将在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中的除了目标易失性存储器装置之外的剩余易失性存储器装置的命令地址延时cal设置为第四值,以及然后将从非易失性存储器装置930读取的数据恢复到目标易失性存储器装置中,可以对所有第一组易失性存储器装置911至914和第二组易失性存储器装置921至924执行数据恢复操作。命令地址延时cal的第三值和第四值之差dcal可以满足dcal≥trcd和dcal<trp的方式设置。
当在步骤s1250中确定没有剩余待恢复的数据时,为当主机的电源host_vdd和host_vss再次掉电时做准备,有必要确保非易失性存储器装置930的足够的存储容量,以在对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制改变到主机的存储器控制器9之前,将在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中存储的数据备份。
因此,在步骤s1260中,确定用于在非易失性存储器装置930中备份数据的擦除块或空白块是否足够。例如,确定非易失性存储器装置930的擦除块的量是否足够以覆盖第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中的整个容量或者目前存储在第一组易失性存储器装置911至914和第二组易失性存储器装置921至924中的数据的使用量或有效范围。当在非易失性存储器装置930中不存在足够的擦除块时,在步骤s1270在非易失性存储器装置930中擦除新块。
如果在非易失性存储器装置930中存在足够的擦除块,则在步骤s1280将对第一组易失性存储器装置911至914和第二组易失性存储器装置921至924的控制从nvdimm900的控制器940改变到主机的存储器控制器9,并且完成上电恢复操作。
此后,nvdimm900可以由主机的存储器控制器9使用,并且可以在与上文参照图11所述的步骤s1110相同的状态操作。例如,第一组易失性存储器装置911至914的数据总线可以从第一数据总线data_bus1改变为第三数据总线data_bus3_1至data_bus3_4,并且第二组易失性存储器装置921至924的数据总线可以从第二数据总线data_bus2改变为第四数据总线data_bus4_1至data_bus4_4。
正如从以上描述中显而易见的是,当nvdimm900由于主机的电源host_vdd和host_vss的故障和恢复执行数据的备份和恢复操作时,nvdimm900的第一组易失性存储器装置911至914在与控制器940通信时共享控制总线cmd/addr_bus和第一数据总线data_bus1,nvdimm900的第二组易失性存储器装置921至924在与控制器940通信时共享控制总线cmd/addr_bus和第二数据总线data_bus2。控制器940可以通过将命令地址延时cal设置为不同的值独立地访问第一组易失性存储器装置911至914来备份和恢复数据。类似地,控制器940可以通过将命令地址延时cal设置为不同的值独立地访问第二组易失性存储器装置921至924来备份和恢复数据。
在一个或多个示例性实施例中,本文所描述的功能可以硬件、软件、固件或它们的任意组合来实现。如果以软件实现,则功能可以作为机器可读媒介,即诸如计算机可读媒介的计算机程序产品,上的一个或多个命令或代码被存储或传输。计算机可读介质包括通信媒介,其包括计算机存储媒介和便于计算机程序从一个位置传输到另一位置的任何媒介。存储媒介可以是可被计算机访问的任何可用媒介。在非限制性实例中,这种计算机可读媒介可以被ram、rom、eeprom、cd-rom、光盘存储器装置、磁盘存储器装置、磁存储装置或计算机访问,并且可以包括可用于携带或存储指令或数据结构形式的期望的程序代码的任何媒介。如本文所用的磁盘和光碟(disc)包括光碟(cd)、激光盘、光盘、数字化通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光碟光学地再现数据。甚至它们的任意组合应旨在被包括在计算机可读媒介的范围内。
虽然为说明的目的已经描述了各个实施例,但在不背离如权利要求限定的本发明的精神和范围的情况下可以作出各种变化和修改,这对于本领域技术人员将是显而易见的。