存储控制设备、存储器系统、信息处理系统和存储控制方法与流程

文档序号:13987237阅读:188来源:国知局
存储控制设备、存储器系统、信息处理系统和存储控制方法与流程

本技术涉及存储控制设备、存储器系统、信息处理系统和存储控制方法,并且更具体地涉及用于控制非易失性存储器的存储控制设备、存储器系统、信息处理系统和存储控制方法。



背景技术:

在最新的信息处理系统中,非易失性存储器(NVM)偶尔用作辅助存储设备或存储器。此非易失性存储器泛泛地归类为可以对大数据单位而存取的闪速存储器以及可以对小数据单位而快速且随机存取的非易失性随机存取存储器(NVRAM)。这里,闪速存储器的典型示例是NAND型闪速存储器。另一方面,ReRAM(电阻RAM)、PCRAM(相变RAM)和MRAM(磁阻RAM)是非易失性随机存取存储器的示例。

在向这些非易失性存储器写入期间,由于无法恰当地写入数据而可能发生错误。例如,错误经常发生在其特性例如由于随着时间流逝恶化或者初始缺陷而已经恶化的存储单元中。通常,已经在写入期间显现出来错误的存储单元被认为是有缺陷单元并且从下次及以后写入要写入的目标单元中排除。因而,如果有缺陷单元的数量增加,则非易失性存储器的实际容量下降。因而,已经提出如下存储器件,其进行适配于如果数据写入未恰当地进行就尝试再次写入相同的数据的重试处理(例如,参考日本专利特开第2004-220068号)。



技术实现要素:

然而,对于以上相关技术而言,难以抑制有缺陷单元的数量的增加。在非易失性存储器中,即使适配于写入两个二进制值中的一个的写入失败,适配于写入该两个二进制值中的另一个的写入可能成功。例如,如果此存储器对于确定在两个写入处理中数据是否已经恰当地写入具有不同的标准,一个适配于写入两个二进制值中的一个而另一适配于写入两个二进制值中的另一个,则非易失性存储器可能无法写入两个二进制值中的一个。然而,在以上重试处理中,写入相同值的数据。因而,即使适配于向存储单元写入与其不同的值的写入可能成功,存储单元也可能被确定为有缺陷。这使得难以抑制有缺陷单元的数量的增加。

已经考虑前述来发明本技术,并且期待抑制非易失性存储器中有缺陷单元的数量的增加。

根据本技术的第一模式,提供存储控制设备及其控制方法。该存储控制设备包括第一和第二重写部分以及第一重试控制部分。该第一重写部分进行第一重写,其适配于向写入了两个二进制值中的一个的存储单元重写该两个二进制值中的另一个。第二重写部分进行第二重写,其适配于向写入了两个二进制值中的另一个的存储单元重写该两个二进制值中的一个。如果在第一重写期间发生错误,则第一重试控制部分使得已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。这提供了有益效果:如果在第一重写期间发生错误,则已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。

可替代地,在第一模式中,存储控制设备可以进一步包括第二重试控制部分,其适配于使得如果在第二重写期间发生错误,则已经经历第二重写的存储单元再次经受该第二重写紧随的第一重写。这提供了有益效果:如果在第二重写期间发生错误,则已经经历第二重写的存储单元再次经受该第二重写紧随的第一重写。

仍然可替代地,在第一模式中,存储单元可以是可变电阻元件,在其中通过给定边界阻值划分的两个阻态中的一个与两个值中的一个关联,而另一个阻态与两个值中的另一个关联。第一重写部分可以关于通过边界阻值设置为另一阻态的第一阻值从存储单元读取数据,并且如果数据值不是两个值中的另一个就确定已经发生错误。第二重写部分可以关于通过边界阻值设置为两个阻态中的一个的第二阻值从存储单元读取数据,并且如果数据值不是两个值中的一个就确定已经发生错误。这提供了有益效果:如果关于第一阻值从存储单元读取的数据不是两个值中的另一个,则第一重写部分确定已经发生错误,并且如果关于第二阻值从存储单元读取的数据不是两个值中的一个,则第二重写部分确定已经发生错误。

还是可替代地,在第一模式中,存储控制设备可以进一步包括有缺陷单元确定部分,其适配于基于在第一和第二重写部分的每一个中已经检测到错误的次数,确定存储单元是否缺陷。这提供了有益效果:基于在第一和第二重写部分的每一个中已经检测到错误的次数,确定存储单元是否缺陷。

还是可替代地,在第一模式中,第一重写部分可以关于第一阻值从已经经历第二重写的存储单元读取第一数据,并且如果该第一数据值是两个值中的一个就进行第一重写。第二重写部分可以关于第二阻值从已经经历第一重写的存储单元读取第二数据,并且如果该第二数据值是两个值中的另一个就进行第二重写。这提供了有益效果:如果关于第二阻值从已经经历第二重写的存储单元读取的第一数据值是两个值中的一个就进行第一重写,并且如果关于第一阻值从已经经历第一重写的存储单元读取的第二数据值是两个值中的另一个就进行第二重写。

还是可替代地,在第一模式中,第一重写部分不仅可以关于第一阻值从已经经历第二重写的存储单元读取第一数据,还可以关于边界阻阈值读取第三数据,并且如果第一和第三数据值不同则进行第一重写。第二重写部分不仅可以关于第二阻值从已经经历第一重写的存储单元读取第二数据,还可以读取第三数据,并且如果第二和第三数据值不同则进行第二重写。这提供了有益效果:如果第一和第三数据不同则进行第一重写,并且如果第二和第三数据不同则进行第二重写。

根据本技术的第二模式,提供包括存储控制设备和第一命令发布部分的存储器系统。存储控制设备包括第一和第二重写部分以及重试控制部分。该第一重写部分进行第一重写,其适配于向写入了两个二进制值中的一个的存储单元重写该两个二进制值中的另一个。第二重写部分进行第二重写,其适配于向写入了两个二进制值中的另一个的存储单元重写该两个二进制值中的一个。如果在第一重写期间发生错误,则重试控制部分使得已经经历第一重写的存储单元依据给定命令再次经受该第一重写紧随的第二重写。如果第一错误发生,则第一命令发布部分发布该给定命令。这提供了有益效果:如果在第一重写期间发生错误,则已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。

根据本技术的第三模式,提供包括存储控制设备和第一重试控制部分的存储器系统。该存储控制设备包括第一和第二重写部分。该第一重写部分进行第一重写,其适配于向写入了两个二进制值中的一个的存储单元重写该两个二进制值中的另一个。第二重写部分进行第二重写,其适配于向写入了两个二进制值中的另一个的存储单元重写该两个二进制值中的一个。如果在第一重写期间发生错误,则第一重试控制部分使得已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。这提供了有益效果:如果在第一重写期间发生错误,则已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。

根据本技术的第四模式,提供包括存储控制设备和主计算机的信息处理系统。存储控制设备包括第一和第二重写部分以及重试控制部分。该第一重写部分进行第一重写,其适配于向写入了两个二进制值中的一个的存储单元重写该两个二进制值中的另一个。该第二重写部分进行第二重写,其适配于向写入了两个二进制值中的另一个的存储单元重写该两个二进制值中的一个。如果在第一重写期间发生错误,则第一重试控制部分使得已经经历第一重写的存储单元依据给定命令再次经受该第一重写紧随的第二重写。如果第一错误发生,则主计算机发布该给定命令。这提供了有益效果:如果在第一重写期间发生错误,则已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。

根据本技术的第五模式,提供包括存储控制设备和主计算机的信息处理系统。存储控制设备包括第一和第二重写部分。该第一重写部分进行第一重写,其适配于向写入了两个二进制值中的一个的存储单元重写该两个二进制值中的另一个。该第二重写部分进行第二重写,其适配于向写入了两个二进制值中的另一个的存储单元重写该两个二进制值中的一个。如果在第一重写期间发生错误,则主计算机使得已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。这提供了有益效果:如果在第一重写期间发生错误,则已经经历第一重写的存储单元再次经受该第一重写紧随的第二重写。

本技术提供极其有益的效果:可以在非易失性存储器中抑制有缺陷单元数量的增加。

附图说明

图1是图示第一实施例中的信息处理系统的配置示例的框图;

图2是图示第一实施例中的可变电阻元件的电阻分布的示例的示图;

图3A和图3B是图示第一实施例中的阻值的转移的示例的示图;

图4是图示第一实施例中的存储器控制电路的配置示例的框图;

图5是图示第一实施例中的状况数据结构的示例的示图;

图6是图示第一实施例中的地址转换表的配置示例的示图;

图7是图示第一实施例中的NVRAM控制电路的配置示例的框图;

图8是图示第一实施例中的存储器控制块的操作示例的流程图;

图9是图示第一实施例中的NVRAM的操作示例的流程图;

图10是图示第一实施例中的写入的示例的流程图;

图11是图示第一实施例中的重置的示例的流程图;

图12是图示第一实施例中的设置的示例的流程图;

图13是图示第一实施例中的重置的重试的示例的流程图;

图14是图示第一实施例中的设置的重试的示例的流程图;

图15是图示第一实施例中的存储器系统的操作示例的顺序图;

图16是图示在第一实施例中重试其重置的数据的具体示例的示图;

图17是图示在第一实施例中执行其设置的数据的具体示例的示图;

图18A到图18C是图示第一实施例中在重置的重试期间存储单元的状态转移的示例的示图;

图19是图示第二实施例中的NVRAM控制电路的配置示例的框图;

图20是图示第二实施例中的重置的重试的示例的流程图;

图21是图示第二实施例中的设置的重试的示例的流程图;

图22是图示在第二实施例中重试其重置的数据的具体示例的示图;

图23A到图23C是图示第二实施例中在重置的重试期间存储单元的状态转移的示例的示图;

图24是图示第三实施例中的存储器控制电路的配置示例的框图;

图25是图示第三实施例中的NVRAM控制电路的配置示例的框图;

图26是图示第三实施例中的存储器控制块的操作示例的流程图;

图27是图示第三实施例中对重置的重试的控制的示例的流程图;

图28是图示第三实施例中对设置的重试的控制的示例的流程图;

图29是图示第三实施例中的NVRAM的操作示例的流程图;

图30是图示第三实施例中的预读和设置的示例的流程图;以及

图31是图示第三实施例中的预读和重置的示例的流程图;

具体实施方式

将在下面给出用于进行本技术的方式(以下称为实施例)的描述。该描述将以如下顺序给出:

1、第一实施例(在重试控制期间在重写之后首先进行刷新的示例)

2、第二实施例(仅刷新对其有效的存储单元被刷新随后被重写的示例)

3、第三实施例(在存储器控制块的控制下首先进行刷新并紧随重写的示例)

<1、第一实施例>

[信息处理系统的配置示例]

图1是图示第一实施例中的信息处理系统的配置示例的框图。此信息处理系统包括主计算机100和存储器系统。此存储器系统包括存储器控制块200和NVRAM300。

主计算机300控制存储器系统。更具体地,该计算机100发布命令,经由信号线109向存储器控制块200供应该命令、地址和数据。进一步,主计算机100从存储器系统接收数据和状况。这里,命令被用来控制存储器系统,并且例如包括适配于指令数据的写入的写入命令以及适配于指令数据的读取的读取命令。该地址指示在NVRAM300中数据的存储位置。更具体地,该地址是在由主计算机100定义的地址空间中的逻辑地址。此逻辑地址由存储器系统转换为物理地址。此物理地址是分配给NVRAM300中的存储单元的实际地址。该数据包括将要写入存储器系统的写入数据以及将要从存储器系统读取的读取数据。

该状况是适配于通知命令执行结果或存储器系统状况的信息。将错误的存在和不存在以及错误类型写入为状况中的命令执行结果。稍后将给出错误类型的详细描述。

存储器控制块200控制NVRAM300。该部分200包括主机接口210、存储器控制电路220和存储器接口230。应当注意,存储器控制块200是如在所附权利要求中定义的存储控制设备的示例。

主机接口210与主计算机100交换命令、地址、数据和状况。诸如SATA(串行高级技术连接)或PCI(外围组件互联)Express之类的接口可以用作主机接口210。

存储器控制电路220作为一个整体控制存储器控制块200。当经由主机接口210接收到写入命令、地址和写入数据时,该电路220向存储器接口230供应它们。然后,当经由存储器接口230接收到用于写入命令的状况时,存储器控制电路220向主机接口210供应该状况。

进一步,当经由主机接口210接收到读取命令和地址时,存储器控制电路220向存储器接口230供应它们。然后,当经由存储器接口230接收到状况和读取数据时,存储器控制电路220向主机接口210供应它们。

存储器接口230与NVRAM300交换命令、地址、数据和状况。

NVRAM300包括控制接口310、NVRAM控制电路320和存储单元阵列330。

控制接口310与存储器控制块200交换命令、地址、数据和状况。

NVRAM控制电路320作为一个整体控制NVRAM300。更具体地,当经由控制接口310接收写入命令、地址和写入数据时,NVRAM控制电路320读取写入到该地址的数据作为被写入数据。此读取叫做预读。NVRAM控制电路320以逐位方式比较写入数据和被写入数据,将其在写入数据中的内容是“1”而其在被写入数据中的内容是“0”的那些位看作要被重写的位。该电路320重写要被重写为“1”的位。此处理以下将称为重置。应当注意,重置也称为程序处理。

接着,NVRAM控制电路320以逐位方式比较两段数据,即,写入数据和已经经历设置的被写入数据,将其在写入数据中的内容是“0”而其在被写入数据中的内容是“1”的那些位看作要被重写的位。该电路320重写要被重写为“0”的位。此处理以下将称为设置。应当注意,设置也称为擦除。

然而,NVRAM控制电路320在状况中描述重置和设置的结果。这些结果包括错误的存在和不存在以及错误类型。重置错误和设置错误作为错误类型可用。重置错误是在重置期间发生的错误。设置错误是在设置期间发生的错误。

进一步,当经由控制接口310接收到读取命令和地址时,NVRAM控制电路320从存储单元阵列330中的关联地址读取数据,向存储器控制块320传送该数据。应当注意,NVRAM控制电路320是如在所附权利要求中定义的存储控制设备的示例。

存储单元阵列330包括多个布置的存储单元。使用可变电阻元件的ReRAM例如被用作每一个存储单元。应当注意,只要这些非易失性存储器的每一个在写入期间依次进行设置和重置,可以在存储单元阵列330中使用除了ReRAM之外的非易失性存储器。

图2是示意性图示ReRAM中的可变电阻元件的电阻分布的示图。水平轴表示阻值R,而垂直轴以相对值表示单元数量的相对分布。如图2所示,可变电阻元件的电阻分布被泛泛地分为被称为低阻态(LRS)和高阻态(HRS)的两类。正常用来分开低阻态和高阻态的阈值将叫做边界阻值(R_read)。

如果逻辑值0和1的一个与其高阻态及低阻态的每一个关联,可变电阻元件用作存储单元。逻辑值0和1的哪一个被关联是任意的。例如,高阻态与逻辑值1关联,而低阻态与逻辑值0关联。

这里,在低阻态(LRS)中,具有相对高阻值的低阻态(LRS)不提供极好的数据保持特性。因而,在适配于减少阻值的处理(例如,设置)中,低于边界阻值的阻值可以用作阈值。以下,此阈值将称为低阻阈值(R_set)。另一方面,具有低于此低阻阈值的阻值的状态将称为稳定低阻态(sLRS)。具有高于此低阻阈值且低于此边界阻值的阻值的状态将称为非稳定低阻态(uLRS)。

另一方面,在高阻态(HRS)中,具有相对低阻值的高阻态(HRS)不提供极好的数据保持特性。因而,在适配于增加阻值的处理(例如,重置)中,高于边界阻值的阻值可以用作阈值。以下,此阈值将称为高阻阈值(R_reset)。另一方面,具有高于此高阻阈值的阻值的状态将称为稳定高阻态(sHRS)。具有低于此高阻阈值且高于此边界阻值的阻值的状态将称为非稳定高阻态(uLRS)。

图3A和图3B是图示第一实施例中的阻值的转移的示例的示图。图3A是图示在设置期间阻值的转移的示例的示图。在设置期间,以如下方式进行控制:首先减少阻值,之后关于低阻阈值(R_set)从存储单元读取数据以验证数据是否已经写入(即,验证)。例如,如果阻值等于或小于R_set,则读取具有0值的数据。另一方面,如果阻值大于R_set,则读取具有1值的数据,并且确定写入已经失败。如果写入失败了给定次数或更多,则确定设置错误已经发生。

图3B是图示在重置期间阻值转移的示例的示图。在重置期间,以如下方式进行控制:首先增加阻值,之后关于高阻阈值(R_reset)从存储单元读取数据以验证数据是否已经写入。例如,如果阻值等于或大于R_reset,则读取具有1值的数据。另一方面,如果阻值小于R_reset,则读取具有0值的数据,并且确定写入已经失败。如果写入失败了给定次数或更多,则确定重置错误已经发生。

[存储器控制电路的配置示例]

图4是图示第一实施例中的存储器控制电路220的配置示例的框图。该电路220包括命令解码器221、ECC处理部分222、地址转换部分223、地址转换表224、有缺陷单元确定部分225、重置重试命令发布部分226以及设置重试命令发布部分227。

命令解码器221解码经由主机接口210从主计算机100接收到的命令。该解码器221经由存储器接口230向NVRAM300供应已解码命令(写入或读取命令)。

ECC处理部分222生成用于写入数据的错误校正码(ECC)并且基于ECC检测并校正读取数据中的错误。当经由主机接口210接收到写入数据时,ECC处理部分222生成用于写入数据的ECC,连同写入数据一起经由存储器接口230向NVRAM300供应ECC。另一方面,当经由存储器接口230从NVRAM300接收读取数据和用于读取数据的ECC时,ECC处理部分222基于ECC检测并且校正读取数据中的错误。然后,该部分222经由主机接口210向主计算机100供应经受错误检测和校正的读取数据。

地址转换部分223将逻辑地址转换为物理地址。当经由主机接口210接收到逻辑地址时,该部分223从地址转换表224读取与逻辑地址关联的物理地址。如果不存在关联物理地址,则该部分223将地址转换表224中的无缺陷物理地址的一个与物理地址关联。地址转换部分223向有缺陷单元确定部分225和NVRAM300供应已转换物理地址。

地址转换表224包含彼此关联的物理地址和逻辑地址。进一步,该表224描述物理地址的每一个是否有缺陷。这里,术语“有缺陷物理地址”指与作为具有恶化的数据保持特性的存储单元的有缺陷单元对应的物理地址。

有缺陷单元确定部分225基于设置错误或重置错误计数确定已经显现出这些错误的存储单元是否有缺陷。当从NVRAM300接收到包括设置或重置错误的状况时,该部分225基于设置或重置错误确定要写入的存储单元是否有缺陷。例如,如果在写入期间显现出两次或更多次设置或重置错误,则有缺陷单元确定部分225确定要写入的存储单元为有缺陷。如果存储单元确定为有缺陷,则有缺陷单元确定部分225在地址转换表224中描述要写入的物理地址有缺陷。

另一方面,如果存储单元确定为没有缺陷,则有缺陷单元确定部分225基于错误类型向重置重试命令发布部分226或设置重试命令发布部分227通知错误。更具体地,如果错误是重置错误,则有缺陷单元确定部分225通知重置重试命令发布部分226重置错误已经发生。另一方面,如果错误是设置错误,则有缺陷单元确定部分225通知设置重试命令发布部分227设置错误已经发生。

如果重置错误发生,则重置重试命令发布部分226发布重置重试命令。该重置重试命令指令已经经历重置的存储单元首先经受设置而再次紧跟重置。重置重试命令发布部分226经由存储器接口230向NVRAM300供应所发布的重置重试命令。

如果设置错误发生,则设置重试命令发布部分227发布设置重试命令。该设置重试命令指令已经经历设置的存储单元首先经受重置而再次紧跟设置。设置重试命令发布部分227经由存储器接口230向NVRAM300供应所发布的设置重试命令。应当注意,重置重试命令发布部分226是如在所附权利要求中定义的第一命令发布部分的示例。

应当注意,尽管为了描述方便而在图4中示出要经由不同信号线传送的写入命令、重置重试命令和设置重试命令,但这些命令实际上经由相同的信号线传送。另一方面,尽管在存储器控制块200中提供,但可以在主计算机100中提供重置重试命令发布部分226和设置重试命令发布部分227。

图5是图示第一实施例中的状况数据结构的示例的示图。该状况例如包括7位数据。该状况的第0位指示错误是否发生。例如,如果正常地终止写入或读取,则在该第0位中设置“0”。如果错误发生,则在此位中设置“1”。该状况的第1位指示在写入中发生的错误类型。例如,如果设置错误发生,则在第1位中设置“0”。如果重置错误发生,则在此位中设置“1”。

进一步,该状况的第6位指示NVRAM300是否忙。例如,如果NVRAM300是忙,则在第6位中设置“0”。如果NVRAM300就绪,则在此位中设置“1”。该状况的第7位指示NVRAM300是否被保护。这里,术语“被保护”指禁止写入数据向NVRAM300的写入的事实。例如,如果NVRAM300被保护,则在第7位中设置“0”。如果NVRAM300未被保护,则在此位中设置“1”。

应当注意,如果包括信息以指示错误是设置还是重置错误,则状况数据结构不限于图5所示的结构。

图6是图示第一实施例中的地址转换表224的配置示例的示图。该表224包含彼此关联的逻辑地址和物理地址。进一步,该表224包括对于物理地址的每一个是否有缺陷的信息。例如,如果物理地址没有缺陷,则为该物理地址而包括“0”值。如果物理地址有缺陷,则为该物理地址而包括“1”值。应当注意到,可以独立于与物理地址关联逻辑地址的表提供如下表:适配于将每一个物理地址与指示物理地址是否有缺陷的信息关联。

图7是图示第一实施例中的NVRAM控制电路320的配置示例的框图。该电路320包括写入控制部分321、重置重试控制部分322、设置重试控制部分323、重置部分324、设置部分325、阈值存储部分326和状况生成部分327。

写入控制部分321根据写入命令依次进行设置和重置。当经由控制接口310接收到写入命令时,该部分321控制重置部分324根据命令进行重置。在此控制中,写入控制部分321发布重置命令以指令进行重置,向重置部分324供应重置命令。然后,写入控制部分321控制设置部分325以进行设置。在此控制中,写入控制部分321发布设置命令以指令进行设置,向设置部分325供应设置命令。

应当注意到,写入控制部分321使得在设置之前进行重置。然而,设置可以在重置之前进行。如果设置错误的发生概率和重置错误的发生概率中的任何一个已知为比另一个高,则写入控制部分321可以基于设置和重置错误的发生概率,确定进行重置和设置的顺序。更具体地,如果重置错误的发生概率高于设置错误的发生概率,则该部分321首先进行重置。如果设置错误的发生概率高于重置错误的发生概率,则该部分321首先进行设置。进行对更可能首先发生的错误的类型合适的处理确保了从错误的发生到重试的开始的较短时间。

重置重试控制部分322根据重置重试命令依次进行重置和设置。当经由控制接口310接收到重置重试命令时,该部分322使用设置命令控制设置部分325进行已经经历重置的存储单元的设置。然后,重置重试控制部分322使用重置命令使得重置部分324再次重置存储单元。应当注意,重置重试控制部分322是如在所附权利要求中定义的第一重试控制部分的示例。

设置重试控制部分323根据设置重试命令使得依次进行重置和设置。当经由控制接口310接收到设置重试命令时,该部分323使用重置命令使得重置部分324进行已经经历设置的存储单元的重置。然后,设置重试控制部分323控制设置部分325使用设置命令再次设置存储单元。应当注意,设置重试控制部分323是如在所附权利要求中定义的第二重试控制部分的示例。

重置部分324在写入控制部分321、重置重试控制部分322或设置重试控制部分323的控制下进行重置。该部分324从阈值存储部分326获取高阻阈值R_reset,关于阈值进行预读并且基于该预读数据重置存储单元。然后,重置部分324关于高阻阈值R_reset从重置的存储单元读取数据,进行验证。如果作为验证的结果,任何要重置的存储单元未重置,则重置部分324确定重置错误已经发生。该部分324向状况生成部分327通知包括错误的存在或不存在的执行结果。应当注意,重置部分324是如在所附权利要求中定义的第一重写部分的示例。

设置部分325在写入控制部分321、重置重试控制部分322或设置重试控制部分323的控制下进行设置。该部分325从阈值存储部分326获取低阻阈值R_set,关于阈值进行预读并且基于该预读数据设置存储单元。然后,设置部分325关于低阻阈值R_set从已设置存储单元读取数据,进行验证。如果作为验证的结果,任何要设置的存储单元未设置,则设置部分325确定设置错误已经发生。该部分325向状况生成部分327通知包括错误的存在或不存在的执行结果。应当注意,设置部分325是如在所附权利要求中定义的第二重写部分的示例。

阈值存储部分326存储低阻阈值R_set和高阻阈值R_reset。

状况生成部分327基于重置部分324和设置部分325的执行结果生成状况。如果重置部分324或设置部分325未检测到错误,则该部分327生成包括正常终止的状况。另一方面,如果重置部分324检测到错误,则状况生成部分327生成包括重置错误的状态。如果设置部分325检测到错误,则该部分327生成包括设置错误的状态。状况生成部分327经由控制接口310向存储控制块200供应所生成的状况。

进一步,当接收到读取命令时,NVRAM控制电路320根据读取命令进行读取。在图7中未示出进行读取的电路及其他部分。

[存储器控制块的操作示例]

图8是图示第一实施例中的存储器控制块200的操作示例的流程图。例如,当存储器控制块200从主计算机100接收到写入命令时,此操作开始。应当注意,在图8中未示出当接收到读取命令时存储器控制块200的操作。

在存储器控制块200中的命令解码器221解码写入命令,向NVRAM300传送已解码命令(步骤S901)。存储器控制块200中的有缺陷单元确定部分225从NVRAM300接收状况,基于该状况确定在重置或设置期间是否发生错误(步骤S902)。如果已经发生错误(步骤S902中的“是”),则该部分225首先确定第一错误是否是重置错误(步骤S903)。

如果第一错误是重置错误(在步骤S903中的“是”),存储控制块200的重置重试命令发布部分226发布重置重试命令(步骤S904)。然后,有缺陷单元确定部分225再次从NVRAM300接收状况,确定在重置或设置期间是否已经发生错误(步骤S905)。该部分225确定第二错误是否是重置错误(步骤S906)。

如果第二错误不是重置错误(在步骤S906中的“否”),则存储控制块200的设置重试命令发布部分227发布设置重试命令(步骤S907)。然后,有缺陷单元确定部分225再次从NVRAM300接收状况,确定在重置或设置期间是否已经发生错误(步骤S908)。如果第三错误已经发生(步骤S908中的“是”)或者如果第二错误是重置错误(步骤S906中的“是”),则有缺陷单元确定部分225确定要写入的存储单元有缺陷。该部分225在地址转换表224中登记与有缺陷单元关联的物理地址作为有缺陷地址(步骤S914)。

如果第一错误不是重置错误(在步骤S903中的“否”),则设置重试命令发布部分227发布设置重试命令(步骤S909)。然后,有缺陷单元确定部分225再次从NVRAM300接收状况,确定在重置或设置期间是否已经发生错误(步骤S910)。如果错误已经发生(步骤S910中的“是”),则有缺陷单元确定部分225确定第二错误是否是设置错误(步骤S911)。

如果第二错误不是设置错误(在步骤S911中的“否”),则重置重试命令发布部分226发布重置重试命令(步骤S912)。然后,有缺陷单元确定部分225再次从NVRAM300接收状况,确定在重置或设置期间是否已经发生错误(步骤S913)。如果第三错误已经发生(步骤S913中的“是”)或者如果第二错误是设置错误(在步骤S911中的“是”),则有缺陷单元确定部分225确定要写入的存储单元有缺陷(步骤S914)。

如果在步骤S902、S905、S908、S910或S913中未发生错误或者在进行步骤S914之后,存储器控制块200停止其操作。

[NVRAM的操作示例]

图9是图示第一实施例中的NVRAM300的操作示例的流程图。此操作例如在NVRAM300上电时开始。应当注意,在图9中未示出当接收到读取命令时NVRAM300的操作。

NVRAM300确定是否已经从存储器控制块200接收到写入命令(步骤S921)。如果已经接收到写入命令(步骤S921中的“是”),则NVRAM300中的写入控制部分321进行将写入数据写入存储单元的写入(步骤S930)。

如果尚未接收到写入命令(步骤S921中的“否”)或者在进行步骤S930之后,NVRAM300确定是否已经从存储器控制块200接收到重置重试命令(步骤S922)。如果已经接收到重置重试命令(步骤S922中的“是”),则NVRAM300中的重置重试控制部分322重试重置以再次进行重置(S960)。

如果尚未接收到重置重试命令(步骤S922中的“否”)或者在进行步骤S960之后,NVRAM300确定是否已经从存储器控制块200接收到设置重试命令(步骤S923)。如果设置重试命令已经接收(步骤S923中的“是”),则NVRAM300中的设置重试控制部分323重试设置以再次进行设置(S970)。如果尚未接收到设置重试命令(步骤S923中的“否”)或者在进行步骤S970之后,NVRAM300返回到步骤S921。

图10是图示第一实施例中的写入的示例的流程图。写入控制部分321指令重置部分324进行重置。重置部分324首先获取并保持写入数据(步骤S931)。进一步,该部分324关于高阻阈值R_reset预读要写入的地址(步骤S932)。该部分324对已经预读的预读数据和写入数据的对应位进行比较,生成已重置屏蔽数据(步骤S933)。此已重置屏蔽数据指示在写入数据中重置的那些位以及在预读数据中设置的那些位将被重置,并且指示将屏蔽全部其他位。重置部分324基于已重置屏蔽数据进行重置(步骤S940)。

写入控制部分321确定重置错误是否发生(步骤S934)。如果重置错误尚未发生(步骤S934中的“否”),则该部分321指令设置部分325进行设置。设置部分325对重置之后的预读数据和写入数据的对应位进行比较,生成已设置屏蔽数据(步骤S935)。此已设置屏蔽数据指示在写入数据中设置的那些位以及在重置之后的预读数据中重置的那些位将被设置,并且指示将屏蔽全部其他位。设置部分325基于已设置屏蔽数据进行设置(步骤S950)。

状况生成部分327确定设置错误是否已经发生(步骤S937)。如果设置错误已经发生(步骤S937中的“是”),则该部分327生成包括设置错误的发生的状况,向存储器控制块200传送该状况(步骤S938)。另一方面,如果重置错误已经发生(步骤S934中的“是”),则状况生成部分327生成包括重置错误的发生的状况,向存储器控制块200传送该状况(步骤S936)。如果设置错误尚未发生(步骤S937中的“否”)或者在进行步骤S936或S938之后,写入控制部分321终止写入。

图11是图示第一实施例中的重置的示例的流程图。重置部分324进行如下处理(重置控制):适配于仅从“0”到“1”重写已经被指令由已重置屏蔽数据重置的那些位(步骤S941)。然后,重置部分324关于高阻阈值R_reset从重置存储单元读取数据,验证是否要重置的全部存储单元已经如此完成(即,验证)(步骤S942)。

重置部分324确定是否要重置的全部存储单元已经如此完成(即,重置是否已经成功)(步骤S943)。如果重置已经失败(步骤S943中的“否”),则重置部分324确定是否已经发生超时(步骤S944)。这里,术语“超时”指重置或设置失败了给定次数或更多次的事实。

如果尚未发生超时(步骤S944中的“否”),则重置部分324返回到步骤S941。如果已经发生超时(步骤S944中的“是”),则该部分324确定已经发生重置错误(步骤S945)。如果重置已经成功(步骤S943中的“是”)或者在进行步骤S945之后,重置部分324终止重置。

图12是图示第一实施例中的设置的示例的流程图。设置部分325进行如下处理(设置控制):适配于仅从“0”到“1”重写已经被指令由已设置屏蔽数据设置的那些位(步骤S951)。然后,设置部分325关于低阻阈值R_set从设置存储单元读取数据,验证是否要设置的全部存储单元已经如此完成(即,验证)(步骤S952)。

设置部分325确定是否要设置的全部存储单元已经如此完成(即,设置是否已经成功)(步骤S953)。如果设置已经失败(步骤S953中的“否”),则设置部分325确定是否已经发生超时(步骤S954)。

如果尚未发生超时(步骤S954中的“否”),则设置部分325返回到步骤S951。如果已经发生超时(步骤S954中的“是”),则该部分325确定已经发生设置错误(步骤S955)。如果设置已经成功(步骤S953中的“是”)或者在进行步骤S955之后,设置部分325终止设置。

图13是图示第一实施例中的重置的重试的示例的流程图。重置重试控制部分322指令设置部分325使用设置命令进行设置。重置已经失败的存储单元如果设置一次则提供改进的数据保持能力,因此供应成功的二次重置的更高概率。以下,在重置的重试期间对改进的数据保持能力进行的设置将称为刷新设置。设置部分325关于低阻阈值R_set预读重置存储单元(步骤S961)。设置部分325生成已设置屏蔽数据以仅设置要重置的全部预读位的已重置位(步骤S962)。该部分325基于已设置屏蔽数据进行设置(刷新设置)(步骤S950)。

重置重试控制部分322确定设置错误是否已经发生(步骤S963)。如果尚未发生设置错误(步骤S963中的“否”),则该部分322指令重置部分324使用重置命令再次进行重置。重置部分324获取写入数据(步骤S964)。该部分324从设置数据和写入数据生成已重置屏蔽数据(步骤S966)。重置部分324基于已重置屏蔽数据进行重置(步骤S940)。

状况生成部分327确定重置错误是否已经发生(步骤S967)。如果已经发生重置错误(步骤S967中的“是”),则该部分327生成包括重置错误的发生的状况,向存储器控制块200传送该状况(步骤S968)。另一方面,如果已经发生设置错误(步骤S963中的“是”),则状况生成部分327生成包括设置错误的发生的状况,向存储器控制块200传送该状况(步骤S965)。如果重置错误尚未发生(步骤S967中的“否”)或者在进行步骤S965或S968之后,则重置重试控制部分322终止重置的重试。

图14是图示第一实施例中的设置的重试的示例的流程图。设置重试控制部分323指令重置部分324以使用重置命令进行重置。如果重置一次,则设置已经失败的存储单元提供改进的数据保持能力,因此供应成功的二次设置的更高概率。以下,在设置的重试期间对改进的数据保持能力进行的重置将称为刷新重置。进一步,刷新重置和刷新设置将称为刷新。重置部分324关于高阻阈值R_reset预读设置存储单元(步骤S971)。该部分324生成已重置屏蔽数据以仅重置要设置的全部预读位的已设置位(步骤S972)。该部分324基于已重置屏蔽数据进行重置(刷新重置)(步骤S940)。

设置重试控制部分323确定重置错误是否已经发生(步骤S973)。如果尚未发生重置错误(步骤S973中的“否”),则该部分323指令设置部分325使用设置命令再次进行设置。设置部分325获取写入数据(步骤S974)。该部分325从重置数据和写入数据生成已设置屏蔽数据(步骤S976)。设置部分325基于已设置屏蔽数据进行设置(步骤S950)。

状况生成部分327确定设置错误是否已经发生(步骤S977)。如果已经发生设置错误(步骤S977中的“是”),则该部分327生成包括设置错误的发生的状况,向存储器控制块200传送该状况(步骤S978)。另一方面,如果已经发生重置错误(步骤S973中的“是”),则状况生成部分327生成包括重置错误的发生的状况,向存储器控制块200传送该状况(步骤S975)。如果设置错误尚未发生(步骤S977中的“否”)或者在进行步骤S975或S978之后,则设置重试控制部分323终止设置的重试。

图15是图示第一实施例中的存储器系统的操作示例的顺序图。存储器系统中的存储器控制块200解码从主计算机100接收到的写入命令,向NVRAM300传送已解码的命令。然后,NVRAM300根据写入命令进行重置(步骤S940)。

如果在重置期间发生重置错误,则NVRAM300向存储器控制块200传送包括重置错误的状况。该部分200根据重置错误发布重置重试命令,向NVRAM300传送该命令。NVRAM300根据重置重试命令进行重置存储单元的设置(刷新设置)(步骤S950)。接着,NVRAM300进行适配于再次重置已经重置的存储单元的重置(步骤S940)。

如果正常地终止第二重置,则NVRAM300进行设置(步骤S950)。如果在设置期间发生设置错误,则NVRAM300向存储器控制块200传送包括设置错误的状况。该部分200根据设置错误发布设置重试命令,向NVRAM300传送该命令。NVRAM300根据设置重试命令进行重置存储单元的重置(刷新重置)(步骤S940)。接着,NVRAM300进行适配于再次设置已经设置的存储单元的重置(步骤S950)。

如上所述,如果NVRAM300在再次重置存储单元之前设置该存储单元(刷新设置),则可以提供已经检测到具有改进的数据保持能力的重置错误的存储单元。类似地,如果NVRAM300在再次设置存储单元之前重置该存储单元(刷新重置),则可以提供已经检测到具有改进的数据保持能力的设置错误的存储单元。这比未进行刷新时贡献了成功的二次重置或设置的更高概率,因而抑制有缺陷单元的数量的增加。

图16是图示在第一实施例中重试其重置的数据的具体示例的示图。我们假设如下情况:NVRAM300从存储器控制块200接收指令写入“0b11001111”的写入数据的写入命令。这里,在开始处的“0b”指示此数值是二进制的。在此情况下,NVRAM300关于高阻阈值R_reset进行预读。我们假定“0b11110000”已经被预读为数据D,该数据D已经被写入由写入命令指定的地址。其内容在数据D中为“0”的位和其内容在写入数据中为“1”的位是第5到第8位。NVRAM300生成适配于重置这第5到第8位的“MMMMRRRR”的已重置屏蔽数据。这里,“R”代表要重置的位,而“M”表示要屏蔽的位。

NVRAM300基于已重置屏蔽数据进行重置。在重置之后,NVRAM300关于高阻阈值R_reset进行验证。我们假定“0b11110001”的数据已经在验证中读取。在要重置的位中,第8位未重置。因而,NVRAM300确定重置错误已经发生。这里,如果关于高阻阈值R_reset进行验证,则从处于稳定高阻态(sHRS)的那些存储单元读取“1”,而从处于任何其他状态的存储单元读取“0”。因而,已经从其读取“1”值作为第8位的内容的存储单元514处于稳定高阻态(sHRS)。另一方面,已经从其读取“0”值的第5到第7位的每一个处于稳定低阻态(sLRS)、非稳定低阻态(uLRS)和非稳定高阻态(uHRS)的一种。例如,存储单元511(即,第5位)处于sLRS。存储单元512(即,第6位)处于uLRS。存储单元513(即,第7位)处于uHRS。

NVRAM300根据响应于重置错误发布的重置重试命令,关于低阻阈值R_set进行预读。如果关于低阻阈值R_set进行预读,则从处于sLRS的那些存储单元读取“0”,而从处于任何其他状态的存储单元读取“1”。在作为第5到第8位的存储单元511到514中,仅存储单元511处于sLRS。因而,从第5位读取“0”,而从第6到第8位的每一个读取“1”。其结果是,通过预读来读取“0b11110111”的数据D。

NVRAM300通过设置以下位而生成“MMMMMSSS”的已设置屏蔽数据:要在已重置屏蔽数据中重置的位和同时在数据D中重置的位。这里,“S”表示要设置的位,而“M”表示要屏蔽的位。

NVRAM300基于已设置屏蔽数据进行设置。其结果是,在要重置的存储单元中,设置在uLRS、uHRS和sHRS的任一种中的那些,使得这些存储单元做出对sLRS的转移。这里,被设置的已设置屏蔽数据的那些位(sLRS)被屏蔽。因而,将不设置已经设置的存储单元。通常,存在在非易失性存储器可以重写的次数上的限制。其结果是,用对其未必要地屏蔽设置的那些存储单元进行的设置贡献非易失性存储器更长的使用寿命。

如果正常地终止设置,则数据D被重写为“0b11110000”。NVRAM300从该数据D和写入数据生成“MMMMRRRR”的已重置屏蔽数据,基于已重置屏蔽数据再次进行重置。如果正常地终止二次重置,数据D被重写为“0b11111111”。其结果是,要重置的、与第5到第8位对应的存储单元全部做出对sHRS的转移。

图17是图示在第一实施例中进行其设置的数据的具体示例的示图。NVRAM300从“0b11111111”的重置数据D和写入数据生成“MMSSMMMM”的已设置屏蔽数据。其在数据D中的内容是“1”的位和其在写入数据中的内容是“0”的位是第三和第四位。因而,这些位被认为是要在已设置屏蔽数据中设置的位。

NVRAM300基于已设置屏蔽数据进行设置。如果正常地终止设置,则数据D被重写为“0b11001111”。这完成了写入数据的写入。

图18A到图18C是图示第一实施例中在重置的重试期间存储单元的状态转移的示例的示图。图18A是图示当重置错误发生时存储单元的状态的示例的示图。存储单元511、512、513和514是要重置的存储单元。我们假定,作为重置的结果,存储单元511做出对稳定低阻态(sLRS)的转移,存储单元512做出对非稳定低阻态(uLRS)的转移,存储单元513做出对非稳定高阻态(uHRS)的转移,并且存储单元514做出对稳定高阻态(sHRS)的转移。关于高阻阈值R_reset进行验证,并且从处于sHRS的存储单元读取“1”值,而从处于任何其他状态的存储单元读取“0”值。因而,从不处于sHRS的存储单元511、512和513检测重置错误。

图18B是图示当根据重试命令进行设置(刷新设置)时存储单元的状态转移的示例的示图。在此设置中,未关于低阻阈值R_set设置的那些存储单元(sLRS)被设置。其结果是,设置未处于sLRS的存储单元512、513和514,使得这些存储单元做出对sLRS的转移。

图18C是图示根据重试命令再次进行重置时存储单元的状态转移的示例的示图。在此重置中,尚未关于高阻阈值R_reset重置(sHRS)的那些存储单元被重置。其结果是,重置未处于sHRS的存储单元511到514,使得这些存储单元做出对sHRS的转移。

如图18所示,在已经显现出重置错误的存储单元中,处于uLRS和uHRS的任一种(即,特别是非稳定状态)的那些存储单元做出对稳定阻态的转移。这提供了改进的数据保持特性,有益于比未进行刷新时更高的成功的二次重置的概率。

如上所述,在本技术的第一实施例中,当重置错误发生时,NVRAM300首先进行设置之后再次进行重置,因此有益于成功的二次重置的改进的概率。进一步,当设置错误发生时,NVRAM300首先进行重置之后再次进行设置,因此有益于成功的二次设置的改进的概率。这抑制了有缺陷单元在数量上的增加。

<2、第二实施例>

[NVRAM控制电路的配置示例]

图19是图示第二实施例中的NVRAM控制电路320的配置示例的框图。除了设置在重置的重试期间不需要的、处于sHRS的存储单元外,根据第一实施例的NVRAM300仅进行处于uLRS、uHRS和sHRS的任一种的存储单元的设置。然而,在uLRS、uHRS和sHRS中,刷新设置是对uLRS最有效的。比之处于uLRS的存储单元,刷新设置对于处于uHRS和sHRS的存储单元对更小程度有效。更具体地,进行控制以将阻抗达到或低于低阻阈值R_set的程度在uHRS中比在uLRS中大,因此导致比uLRS中更高的错误设置的可能性。另一方面,进行控制以将阻抗达到或高于高阻阈值R_reset的程度在uHRS中比在uLRS中小,因此提供更高的成功的二次设置的可能性。因而,比之处于uLRS的存储单元,该设置对处于uHRS的存储单元对更小程度有效。另一方面,sHRS是稳定阻态并且即使当经受设置时也不提供改进的数据保持特性。根据第二实施例的NVRAM300不同于根据第一实施例的NVRAM300在于:仅刷新对其最有效的阻态做出转移。

根据第二实施例的阈值存储部分326进一步存储边界阻值R_read。进一步,根据第二实施例的重置部分324从阈值存储部分326获取边界阻值R_read。然后,该部分324关于边界阻值R_read进行已设置存储单元的预读并且关于高阻阈值R_reset进行预读。重置部分324进行其值在两次预读所读取的数据中不同的那些位的重置。进一步,根据第二实施例的设置部分325获取边界阻值R_read,关于边界阻值R_read进行重置的存储单元的预读并且关于低阻阈值R_set进行预读。设置部分325进行其值在两次预读所读取的数据中不同的那些位的设置。

[NVRAM的操作示例]

图20是图示第二实施例中的重置的重试的示例的流程图。根据第二实施例的重置的重试不同于根据第一实施例的重置的重试在于:进一步进行步骤S981和S983,并进行步骤S982而非步骤S962。设置部分325关于边界阻值R_read进行重置的存储单元的预读,将数据表示为数据D_read(步骤S981)。然后,该部分325关于低阻阈值R_set进行预读,将数据表示为D_set(步骤S961)。设置部分325生成适配于设置产生数据D_read与数据D_set之间的差的位的已设置屏蔽数据(步骤S982)。该部分325基于已设置屏蔽数据进行设置(步骤S950)。

如果设置错误尚未发生(步骤S963中的“否”),则重置部分324关于高阻阈值R_reset进行预读(步骤S983)。该部分324获取写入数据(步骤S964),从预读数据和写入数据生成已重置屏蔽数据(步骤S966)。重置部分324基于该已重置屏蔽数据进行从步骤S940起的处理。

图21是图示第二实施例中的设置的重试的示例的流程图。根据第二实施例的设置的重试不同于根据第一实施例的设置的重试在于:进一步进行步骤S984和S986,并进行步骤S985而非步骤S972。重置部分324关于边界阻值R_read进行已设置存储单元的预读,将数据表示为数据D_read(步骤S984)。然后,该部分324关于高阻阈值R_reset进行预读,将数据表示为D_reset(步骤S971)。重置部分324生成适配于重置产生数据D_read与数据D_reset之间的差的位的已重置屏蔽数据(步骤S985)。该部分324基于已重置屏蔽数据进行重置(步骤S940)。

如果重置错误尚未发生(步骤S973中的“否”),则设置部分325关于低阻阈值R_set进行预读(步骤S986)。该设置部分325获取写入数据(步骤S974),从预读数据和写入数据生成已设置屏蔽数据(步骤S976)。设置部分325基于该已设置屏蔽数据进行从步骤S950起的处理。

图22是图示在第二实施例中重试其重置的数据的具体示例的示图。如在第一实施例中,NVRAM300从预读数据和写入数据生成已重置屏蔽数据,进行重置。

如果已经发生重置错误,则根据第二实施例的NVRAM300进行重置存储单元的两个预读,一个关于边界阻值R_read而另一个关于低阻阈值R_set。由两个预读获得的两段数据被表示为数据D_read和数据D_set。如果关于边界阻值R_read进行预读,则从处于sLRS和uLRS的任一种中的那些存储单元读取“0”,而从处于任何其他状态的存储单元读取“1”。另一方面,如果关于低阻阈值R_set进行预读,则从处于sLRS中的那些存储单元读取“0”,而从处于任何其他状态的存储单元读取“1”。因而,通过预读从uLRS下的存储单元512读取不同值。这使得可以通过比较D_read和D_set而识别uLRS下的存储单元的位置。NVRAM300生成“MMMMSMM”的已设置屏蔽数据,适配于设置其值在D_read和D_set之间不同的第6位(512)。然后,NVRAM300以与第一实施例中相同的方式基于已设置屏蔽数据进行设置。

如上所述,NVRAM300比较两段数据,一个关于边界阻值R_read预读而另一个关于低阻阈值R_set预读,因此使得可以识别uLRS下的存储单元的位置。在uLRS、uHRS和sHRS中,基于设置的刷新设置是对uLRS最有效的。刷新设置对uHRS和sHRS比对uLRS更小程度有效。因而,NVRAM300可以以如下方式进行设置:不重写处于uHRS或sHRS下的那些存储单元(设置对其不是高度有效),因此对存储单元的更长使用寿命有益。

类似地,在设置的重试期间,NVRAM300比较两段数据,一个关于边界阻值R_read预读而另一个关于高阻阈值R_reset预读,因此使得可以识别重置对其最有效的存储单元的位置。NVRAM300以如下方式进行重置:不重写重置对其不是高度有效的那些存储单元,因此对存储单元的甚至更长的使用寿命有益。

图23A到图23C是图示第二实施例中在重置的重试期间存储单元的状态转移的示例的示图。图23A是图示当重置错误发生时存储单元的状态的示例的示图。正如在第一实施例中那样,我们假定,作为重置的结果,存储单元511做出对稳定低阻态(sLRS)的转移,存储单元512做出对非稳定低阻态(uLRS)的转移,存储单元513做出对非稳定高阻态(uHRS)的转移,并且存储单元514做出对稳定高阻态(sHRS)的转移。作为关于高阻阈值R_reset进行的验证的结果,从不处于sHRS的存储单元511、512和513检测重置错误。

图23B是图示当根据重试命令进行刷新设置时的存储单元的状态转移的示例的示图。在此设置中,比较两段数据(一个关于边界阻值R_read预读而另一个关于低阻阈值R_set预读),识别设置对其最有效的处于uLRS下的存储单元511。然后,仅设置处于uLRS下的存储单元512,使得此存储单元做出对sLRS的转移。

图23C是图示当再次根据重试命令进行重置时的存储单元的状态转移的示例的示图。在此重置中,将关于高阻阈值R_reset未处于重置状态(sHRS)的那些存储单元重置。其结果是,将未处于sHRS的存储单元511到513重置,使得这些存储单元做出对sHRS的转移。

如图23所示,比较两段数据(一个关于边界阻值R_read预读而另一个关于低阻阈值R_set预读),识别设置对其最有效的处于uLRS的存储单元511。这使得可以屏蔽设置对其不是高度有效的那些存储单元,因此对存储单元的甚至更长的使用寿命有益。

如上所述,在本技术的第二实施例中,NVRAM300比较两段数据,一个关于边界阻值读取而另一个关于低阻阈值读取,进行对于设置对其不是相对有效地屏蔽的那些存储单元的设置。进一步,NVRAM300比较两段数据(一个关于边界阻值读取而另一个关于高阻阈值读取),进行对于对其重置不是相对有效地屏蔽的那些存储单元的设置。这消除了重置对其不是高度有效的那些存储单元被重置的可能性,因此提供了重写这些存储单元的降低了的次数。相比于第一实施例,这对存储单元的甚至更长的使用寿命有益。

<3、第三实施例>

[存储器控制电路的配置示例]

图24是图示第三实施例中的存储器控制电路220的配置示例的框图。在第一实施例中,NVRAM300控制重置和设置的重试。这些控制任务可以由存储器控制块200处理。根据第三实施例的存储器控制块200不同于根据第一实施例的存储器控制块200在于:该部分200而非NVRAM300控制重置和设置的重试。更具体地,存储器控制电路220包括重置重试控制部分228和设置重试控制部分229,而非重置重试命令发布部分226和设置重试命令发布部分227。重置重试控制部分228和设置重试控制部分229在配置上分别与在根据第一实施例的NVRAM300中提供的重置重试控制部分322和设置重试控制部分323相一致。应当注意,尽管为了描述方便而在图24中示出要经由不同信号线传送写入命令、重置命令和设置命令,但这些命令实际上经由相同的信号线传送。

[NVRAM控制电路的配置示例]

图25是图示第三实施例中的NVRAM控制电路320的配置示例的框图。根据第三实施例的该电路320不同于根据第一实施例的该电路320在于:不包括重置重试控制部分322或设置重试控制部分323。

[存储器控制块的操作示例]

图26是图示第三实施例中的存储器控制块200的操作示例的流程图。根据第三实施例的存储器控制块200的操作不同于根据第一实施例的存储器控制块200的操作在于:进行步骤S990而非步骤904和S912,并且进行步骤S995而非步骤S907和S909。

如果第一错误是重置错误(在步骤S903中的“是”),则重置重试控制部分228进行对重置的重试的控制(步骤S990)。另一方面,如果第一错误是设置错误(步骤S903中的“否”),则设置重试控制部分229进行对设置的重试的控制(步骤S995)。

如果第二错误是设置错误(在步骤S906中的“否”),则设置重试控制部分229进行对设置的重试的控制(步骤S995)。另一方面,如果第二错误是重置错误(步骤S911中的“否”),则重置重试控制部分228进行对重置的重试的控制(步骤S990)。

图27是图示第三实施例中对重置的重试的控制的示例的流程图。重置重试控制部分228发布设置命令以指令设置全部已重置位(步骤S991)。该部分228确定设置错误是否已经发生(步骤S992)。如果设置错误尚未发生(步骤S992中的“否”),则重置重试控制部分228再次传送写入数据并且发布重置命令以指令进行重置,向NVRAM300供应命令(步骤S993)。如果设置错误已经发生(步骤S992中的“是”)或者在进行步骤S993之后,则该部分228终止对重置的重试的控制。

图28是图示第三实施例中对设置的重试的控制的示例的流程图。设置重试控制部分229发布重置命令以指令重置全部已设置位(步骤S996)。该部分229确定重置错误是否已经发生(步骤S997)。如果重置错误尚未发生(步骤S997中的“否”),则设置重试控制部分229再次传送写入数据并且发布设置命令以指令进行设置,向NVRAM300供应该命令(步骤S998)。如果重置错误已经发生(步骤S997中的“是”)或者在进行步骤S998之后,则该部分229终止对设置的重试的控制。

[NVRAM的操作示例]

图29是图示第三实施例中NVRAM300的操作示例的流程图。根据第三实施例的NVRAM300的操作不同于根据第一实施例的NVRAM300的操作在于:进行步骤S924到S927而非步骤S922、S923、S960和S970。

如果写入命令尚未接收到(步骤S921中的“否”)或者在进行步骤S930之后,设置部分325确定设置命令是否已经从存储器控制块200接收到(步骤S924)。如果已经接收到设置命令(步骤S924中的“是”),则该部分325进行预读和设置(S925)。

如果设置命令尚未接收到(步骤S924中的“否”)或者在进行步骤S925之后,重置部分324确定重置命令是否已经从存储器控制块200接收到(步骤S926)。如果已经接收到重置命令(步骤S926中的“是”),则该部分324进行预读和重置(S927)。如果尚未接收到重置命令(步骤S926中的“否”)或者在进行步骤S927之后,NVRAM300返回到步骤S921。

图30是图示第三实施例中的预读和设置的示例的流程图。设置部分325关于低阻阈值R_set进行预读(步骤S986)。该部分325获取写入数据(步骤S974),从预读数据和写入数据生成已设置屏蔽数据(步骤S976)。设置部分325基于已设置屏蔽数据进行步骤S951到S955。步骤S951到S955与第一实施例中的设置(步骤S950)一致。

图31是图示第三实施例中的预读和重置的示例的流程图。重置部分324关于高阻阈值R_reset进行预读(步骤S983)。该部分324获取写入数据(步骤S964),从预读数据和写入数据生成已重置屏蔽数据(步骤S966)。重置部分324基于已重置屏蔽数据进行步骤S941到S945。步骤S941到S945与第一实施例中的重置(步骤S940)一致。

如上所述,在第三实施例中,存储器控制块200包括重置重试控制部分228和设置重试控制部分229,因此使得可以替代NVRAM300控制重置和设置的重试。这提供了NVRAM300的简单配置。进一步,即使存储器控制块200控制多个NVRAM300,也仅需要在存储器控制块200中提供重置重试控制部分228和设置重试控制部分229。比之当每一个NVRAM300控制重试时的配置,这作为整个提供存储器系统的更简配置。

应当注意,重置重试控制部分和设置重试控制部分可以在主计算机100中提供,从而该计算机100而非存储器控制块200控制重试。

应当注意到,以上实施例仅是实现本技术的示例。在本技术的实施例的特征与所附权利要求中阐述的技术的具体特征之间存在对应。类似地,在所附权利要求中阐述的技术的具体特征与本技术的实施例的等同地命名的特征之间存在对应。然而,应当注意,本技术不限于这些实施例,而是可以通过以各种方式修改实施例实现,而不背离本技术的范围。

另一方面,在以上实施例中描述的处理步骤可以理解为具有一系列步骤的方法、适配于使得计算机进行该系列步骤的程序或者存储该程序的存储介质。可以使用的存储介质的类型是CD(密致盘)、MD(迷你盘)、DVD(数字多功能盘)、存储卡和蓝光盘(注册商标)。

应当理解,本技术可以具有如下配置。

(1)一种存储控制设备,包括:

第一重写部分,适配于进行第一重写以将两个二进制值中的另一个重写到在其中将所述两个二进制值中的一个写入的存储单元;

第二重写部分,适配于进行第二重写以将所述两个二进制值中的一个写入到在其中将所述两个二进制值中的另一个写入的存储单元;以及

第一重试控制部分,适配于使得如果在所述第一重写期间发生错误,则已经经历所述第一重写的所述存储单元再次经受所述第一重写紧随的所述第二重写。

(2)根据特征(1)的所述存储控制设备,进一步包括:

第二重试控制部分,适配于使得如果在所述第二重写期间发生错误,则已经经历所述第二重写的所述存储单元经受所述第二重写紧随的所述第一重写。

(3)根据特征(2)的所述存储控制设备,其中

所述存储单元是如下的可变电阻元件:在其中,由给定边界阻值划分的两个阻态中的一个与两个值中的一个关联,而另一个阻态与两个值中的另一个关联,

所述第一重写部分关于通过所述边界阻值设置为另一阻态的第一阻值,从所述存储单元读取数据,并且如果数据值不是两个值中的另一个就确定已经发生错误,并且

所述第二重写部分关于通过所述边界阻值设置为两个阻态中的一个的第二阻值,从所述存储单元读取数据,并且如果数据值不是两个值中的一个就确定已经发生错误。

(4)根据特征(3)的所述存储控制设备,进一步包括:

有缺陷单元确定部分,适配于基于在第一和第二重写部分的每一个中已经检测到错误的次数,确定所述存储单元是否有缺陷。

(5)根据特征(3)或(4)的所述存储控制设备,其中

所述第一重写部分关于所述第一阻值从已经经历所述第二重写的存储单元读取第一数据,并且如果所述第一数据值是两个值中的一个就进行所述第一重写,并且

所述第二重写部分关于所述第二阻值从已经经历所述第一重写的存储单元读取第二数据,并且如果所述第二数据值是两个值中的另一个就进行所述第二重写

(6)根据特征(3)或(4)的所述存储控制设备,其中

所述第一重写部分不仅关于所述第一阻值从已经经历所述第二重写的存储单元读取所述第一数据,还关于所述边界阻阈值读取第三数据,且如果第一和第三数据值不同则进行所述第一重写,并且

所述第二重写部分不仅关于所述第二阻值从已经经历所述第一重写的存储单元读取所述第二数据,还读取所述第三数据,且如果第二和第三数据值不同则进行所述第二重写。

(7)一种存储器系统,包括:

存储控制设备;和

第一命令发布部分,适配于如果所述第一错误发生就发布所述给定命令,

所述存储控制设备包括

第一重写部分,适配于进行第一重写以向写入了两个二进制值中的一个的存储单元重写两个二进制值中的另一个,

第二重写部分,适配于进行第二重写以向写入了两个二进制值中的另一个的存储单元重写两个二进制值中的一个,以及

重试控制部分,适配于使得如果在所述第一重写期间发生错误则已经经历所述第一重写的所述存储单元依据给定命令再次经受所述第一重写紧随的所述第二重写。

(8)一种存储器系统,包括:

存储控制设备;和

第一重试控制部分,适配于使得如果在所述第一重写期间发生错误则已经经历所述第一重写的存储单元再次经受所述第一重写紧随的所述第二重写,

所述存储控制设备包括

第一重写部分,适配于进行第一重写以向写入了两个二进制值中的一个的存储单元重写两个二进制值中的另一个,

第二重写部分,适配于进行第二重写以向写入了两个二进制值中的另一个的存储单元重写两个二进制值中的一个。

(9)一种信息处理系统,包括:

存储控制设备;和

主计算机,适配于如果所述第一错误发生就发布所述给定命令,

所述存储控制设备包括

第一重写部分,适配于进行第一重写以向写入了两个二进制值中的一个的存储单元重写两个二进制值中的另一个,

第二重写部分,适配于进行第二重写以向写入了两个二进制值中的另一个的存储单元重写两个二进制值中的一个,以及

重试控制部分,适配于使得如果在所述第一重写期间发生错误则已经经历所述第一重写的所述存储单元依据给定命令再次经受所述第一重写紧随的第二重写。

(10)一种信息处理系统,包括:

存储控制设备;和

主计算机,适配于使得如果在所述第一重写期间发生错误则已经经历所述第一重写的所述存储单元再次经受所述第一重写紧随的第二重写,

所述存储控制设备具有

第一重写部分,适配于进行第一重写以向写入了两个二进制值中的一个的存储单元重写两个二进制值中的另一个,以及

第二重写部分,适配于进行第二重写以向写入了两个二进制值中的另一个的存储单元重写两个二进制值中的一个。

(11)一种存储控制方法,包括:

进行第一重写以将两个二进制值中的另一个重写到在其中将所述两个二进制值中的一个写入的存储单元;

进行第二重写以将所述两个二进制值中的一个写入到在其中将所述两个二进制值中的另一个写入的存储单元;以及

如果在所述第一重写期间发生错误,则使得已经经历所述第一重写的所述存储单元再次经受所述第一重写紧随的所述第二重写。

本公开包含涉及公开在于2012年4月24日向日本专利局提交的日本优先专利申请JP2012-098316的主题的主题,其整体内容通过引用并入于此。

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