存储控制装置、存储器系统、信息处理系统及存储控制方法与流程

文档序号:14271027阅读:236来源:国知局
存储控制装置、存储器系统、信息处理系统及存储控制方法与流程

本技术涉及存储控制装置、存储器系统、信息处理系统及存储控制方法。具体地,本技术涉及用于控制非易失性存储器的存储控制装置、存储器系统、信息处理系统及存储控制方法。



背景技术:

在近年来的信息处理系统中,非易失性存储器(NVM)有时用作辅助存储装置或存储器。这样的非易失性存储器粗略地分为闪速存储器和非易失性随机存取存储器(NVRAM),闪速存储器可用于将大量数据作为一个单位的数据存取,高速随机存取能够通过NVRAM小单位地进行。这里,作为闪速存储器的代表性示例,NAND型闪速存储器是可用的。另一方面,作为非易失性随机存取存储器的示例,ReRAM(电阻RAM)、PCRAM(相变RAM)、MRAM(磁阻RAM)等是可用的。

上述非易失性存储器包括一种存储器,其中重写一位二进制值之一和重写二进制值中的另一个在写入过程中依次进行。在这样的非易失性存储器中,诸如以ReRAM为例,每个重写中的功耗的最大值随着要被重写的位的数目的增加而增大。为了减小最大功耗,已经提出了一种半导体器件,其中选择反转写入数据和非反转写入数据之一(其包括较少数目的要被重写的位)并且所选择的写入数据被写入到非易失性存储器中。所述类型的半导体器件在例如PCT专利公开No.2006/106577中公开。

上述半导体器件将已经写入到写入目的地的地址处的数据读出并将所读出的数据保留在缓冲器中。然后,半导体器件反转写入数据并进一步将反转之前和之后的写入数据保留在缓冲器中。半导体器件将反转之前和之后的写入数据与读出数据比较,并从反转之前和之后的写入数据之中写入指示较少数目的改变位的写入数据。如果通过反转数据的写入减少了改变的位数,则降低了功耗的最大值。



技术实现要素:

然而,上述半导体器件存在写入过程的速度下降的问题。在半导体器件中,将读出数据与反转之前和之后的写入数据比较的过程在写入之前进行,由于用于比较过程的一段时间,写入过程的速度下降了。另一方面,如果不进行比较过程,则半导体器件不能确定改变的位数是否通过反转而减小。在此情形下,即使进行了反转,改变的位数有时变得大于反转之前的位数,因此,功耗的最大值没有减小。因此,该半导体器件存在当降低最大功耗的同时不能抑制写入过程的速度降低的问题。

因此,期望提供一种能够降低最大功耗同时抑制写入到非易失性存储器中的过程的速度下降的技术。

根据本技术的实施例,提供一种存储控制装置,包括:决定部,配置为在到存储器单元的输入数据的至少一部分中,决定二进制值当中的特定值的位数是否大于参考值,以生成指示该决定的结果的决定数据,该存储器单元在写入过程中依次执行二进制值之一的重写和二进制值中的另一个的重写;以及写入侧输出部,配置为当决定位数大于参考值时将至少部分被反转的输入数据作为写入数据与决定数据一起输出到存储器单元。在该存储控制装置中,当特定值的位数大于参考值时,至少部分被反转的输入数据作为写入数据输出。

该存储控制装置可以配置为使得参考值是输入数据的所有位的数目的一半;决定部决定从所有位当中特定值的位数是否大于参考值;当决定位数大于参考值时,写入侧输出部反转和输出输入数据作为写入数据,但是当决定位数不大于参考值时,将输入数据作为写入数据输出而不反转输入数据。在该存储控制装置中,当特定值的位数大于输入数据的所有位的数目的一半时,被反转的输入数据作为写入数据输出。

存储控制装置可以配置为使得输入数据由两部分构成;决定部决定在所述两部分中的一个部分中位数是否大于参考值;参考值是在所述两部分中的另一个部分的特定值的位数;并且写入侧输出部在决定该位数大于参考值时输出一部分被反转的输入数据作为写入数据,但是在决定所述位数不大于参考值时输出另一部分被反转的输入数据作为写入数据。在该存储控制装置中,当特定值的位数大于输入数据的总位数的一半时,一部分被反转的数据被输出作为写入数据。

存储控制装置可以配置为使得它还包括:数据获取单元,配置为从存储器单元获取数据以及对应于该数据的决定数据;以及读取侧输出部,配置为当决定数据指示位数大于参考值时反转所获取数据的至少一部分并将所得的数据输出为读取数据。在存储控制装置中,如果决定数据指示位数大于参考值,则至少一部分被反转的所获取数据被输出为读取数据。

存储控制装置可以配置为使得它还包括缓冲器,该缓冲器配置为保留读取数据以及对应于该读取数据的决定数据,写入侧输出部从缓冲器读出读取数据和决定数据、并在决定数据指示位数大于参考值时输出至少一部分被反转的读取数据作为写入数据。在存储控制装置中,读取数据和决定数据被保留在缓冲器中,当决定数据指示位数大于参考值时,至少一部分被反转的所获取数据被输出为读取数据。

存储控制装置可以配置为使得它还包括缓冲器,该缓冲器配置为保留读取数据,主要位决定部从缓冲器读出读取数据并进一步决定在读取数据的至少一部分中特定值的位数是否大于参考值以生成决定数据,当决定数据指示位数大于参考值时,写入侧反转部进一步输出至少一部分被反转的读取数据作为写入数据。在存储控制装置中,读取数据被保留到缓冲器中,并进一步决定位数是否大于阈值。

存储控制装置可以配置为使得它还包括数据大小改变单元,该数据大小改变单元配置为基于来自存储器单元的通知中接收的数据大小来改变输入数据的所有位的数目,并且主要位决定部响应于所有改变位的数目来改变参考值。在存储控制装置中,参考值响应于输入数据的所有位数的变化而改变。

存储控制装置可以配置为使得主要位决定部计数目标数据中特定值的位数并将计数值与参考值相互比较以决定特定值的位数是否大于参考值。在存储控制装置中,输入数据中的特定值的位数被计数,并将计数值与参考值进行比较。

根据本技术的另一实施例,提供一种存储器系统,包括:存储器单元,配置为在写入过程中依次执行重写二进制值之一以及重写二进制值中的另一个;决定部,配置为决定在到存储器单元的输入数据的至少一部分中二进制值当中的特定值的位数是否大于参考值,以生成指示决定结果的决定数据;以及写入侧输出部,配置为当决定位数大于参考值时将至少部分被反转的输入数据作为写入数据与决定数据一起输出到存储器单元。在存储器系统中,当特定值的位数大于参考值时,至少部分被反转的输入数据被输出为写入数据。

根据本技术的另一实施例,提供一种信息存储系统,包括:主机,配置为发布用于输入数据的写入过程的指令的写入命令;存储器单元,配置为在写入过程中依次执行重写为二进制值之一以及重写为二进制值中的另一个;决定部,配置为决定在输入数据的至少一部分中二进制值当中的特定值的位数是否大于参考值,以生成指示决定结果的决定数据;以及写入侧输出部,配置为当决定所述位数大于参考值时将至少部分被反转的输入数据作为写入数据与决定数据一起输出到存储器单元。在信息处理系统中,当特定值的位数大于参考值时,至少部分被反转的输入数据被输出为写入数据。

根据本技术的另一实施例,提供一种存储控制方法,包括:通过决定部来决定在到存储器单元的输入数据的至少部分中二进制值当中的特定值的位数是否大于参考值,以生成指示决定结果的决定数据,所述存储器单元在写入过程中依次执行重写为二进制值之一以及重写为二进制值中的另一个;以及通过写入侧输出部在决定所述位数大于参考值时将至少部分被反转的输入数据与决定数据一起输出到存储器单元。

通过根据本技术的存储控制装置、存储器系统、信息处理系统以及存储控制方法,能够实现在抑制到非易失性存储器的写入过程的速度的降低的同时可以降低最大功耗的优越的优势。

附图说明

图1是示出根据第一实施例的信息处理系统的构造的示例的方框图;

图2是示出第一实施例中的NVRAM的存取单元的示例的视图;

图3是第一实施例中的一个页面的数据结构的示例的视图;

图4是示出图1所示的写入处理单元的构造的示例的方框图;

图5是示出图1所示的读取处理单元的构造的示例的方框图;

图6是示出第一实施例中在写入过程中传输的数据的示例的时序图;

图7是示出第一实施例中在读取过程中传输的数据的示例的时序图;

图8是示出第一实施例中的存储器系统的操作的示例的流程图;

图9是示出第一实施例中存储器控制部侧写入过程的示例的流程图;

图10是示出图9所示的主要位决定过程的示例的流程图;

图11是示出图9所示的写入侧反转过程的示例的流程图;

图12是示出第一实施例中NVRAM侧写入过程的示例的流程图;

图13是示出第一实施例中存储器控制部侧读取过程的示例的流程图;

图14是示出图13所示的错误检测校正过程的示例的流程图;

图15是示出图13所示的读取侧反转过程的示例的流程图;

图16是示出第一实施例中NVRAM侧读取过程的示例的流程图;

图17是示出第一实施例中数据被反转并写入的特定示例的视图;

图18是示出第一实施例中写入过程的特定示例的视图,其中改变的位数为最大;

图19是示出根据第一实施例的变型的页面的数据结构的示例的视图;

图20是示出根据第二实施例的存储器控制部的构造的示例的方框图;

图21是示出第二实施例中在数据大小获取时传输的数据的示例的时序图;

图22是示出根据第三实施例的存储器控制部的构造的示例的方框图;

图23是示出图22所示的写入处理单元的构造的示例的方框图;

图24是示出图22所示的读取处理单元的构造的示例的方框图;

图25是示出根据第四实施例的存储器控制部的构造的示例的方框图;

图26是示出图25所示的写入处理单元的构造的示例的方框图;

图27是示出图25所示的读取处理单元的构造的示例的方框图;

图28是示出第五实施例中的写入处理单元的构造的示例的方框图;

图29是示出第五实施例中的反转目标位列决定部的构造的示例的方框图;

图30A和30B是示出第五实施例中的数据和决定位的示例的视图;

图31是示出通过反转第五实施例中奇数编号的位列和偶数编号的位列之一而获得的数据的示例的视图;

图32是示出第五实施例中的读取处理单元的构造的示例的方框图;

图33是示出第五实施例中存储器控制部侧写入过程的示例的流程图;

图34是示出图33所示的反转目标位列决定过程的示例的流程图;

图35是示出图33所示的写入侧部分反转过程的示例的流程图;

图36是示出第五实施例中存储器控制部侧读取过程的示例的流程图;

图37是示出图36所示的读取侧部分反转过程的示例的流程图;

图38是示出在对第五实施例的变型中写入处理单元的构造的示例的方框图;

图39是示出在对第五实施例的变型中存储器控制部侧写入过程的示例的流程图;

图40是示出图39所示的反转目标位列决定过程的示例的流程图;以及

图41是示出图39所示的数据传输过程的示例的流程图。

具体实施方式

在下面,描述用于执行本技术的优选实施例。以下面的次序给出该描述。

1.第一实施例(写入数据响应于特定值的位数而反转的示例)

2.第二实施例(一组数据大小的写入数据被反转的示例)

3.第三实施例(保留在页面缓冲器中的写入数据被反转的示例)

4.第四实施例(在保留在页面缓冲器中的写入数据中、写入数据响应于“0”位的数目而反转的示例)

5.第五实施例(写入数据的一部分被反转的示例)

6.变型(写入数据的一部分被反转然后生成决定位的示例)

<1.第一实施例>

信息处理系统的构造的示例

图1是根据第一实施例的信息处理系统的构造的示例的方框图。参照图1,信息处理系统包括主机300和存储器系统。存储器系统包括存储器控制部100和NVRAM200。

主机300控制存储器系统。具体地,主机300发布命令并通过信号线309将命令、地址和数据提供到存储器控制部100。此外,主机300从存储器系统接收数据和状态。这里,命令控制存储器系统并包括例如表示数据的写入过程的写入命令以及表示数据的读取过程的读取命令。地址指示数据在NVRAM200中的存储位置。数据被输入到存储器系统或读取数据从存储器系统读出。状态是用于通知命令执行的结果或存储器系统的情况的通知的信息。

存储器控制部100控制NVRAM200并包括主机接口110、写入处理单元120、读取处理单元130和主机接口140。应注意,存储器控制部100是存储控制装置的示例。

主机接口110传输命令、地址、数据、状态等到主机300、以及传输来自主机300的命令、地址、数据、状态等。

如果主机接口110从主机300接收命令和地址,则其解码该命令,并且如果被解码的命令是写入命令,则主机接口110通过信号线128将写入命令和地址提供到写入处理单元120。另一方面,如果接收了读取命令,则主机接口110通过信号线138将读取命令和地址提供到读取处理单元130。

此外,主机接口110将从主机300接收的数据提供到写入处理单元120、并将从读取处理单元130接收的读取数据传送到主机300。此外,如果主机接口110通过写入处理单元120和读取处理单元130接收状态,则主机接口110将该状态传送到主机300。例如,SATA(串行高级技术附件)、PCI Express等可以用作主机接口110。

写入处理单元120执行用于将写入数据写入到NVRAM200中的写入过程。如果写入处理单元120通过主机接口110接收写入命令、地址和数据,则它将写命令和地址提供到存储器接口140。然后,每次n(n为例如16×8)位的数据被输入到写处理单元120,写处理单元120计数来自数据中二进制值中的特定值(诸如,例如“0”)的位的数目。写入处理单元120将计数的位数与n/2比较以决定特定值的位是否是主位。这里,主位是在“0”值的位和“1”值的位当中在n位的数据中数目大于n/2的位。如果“0”和“1”的位数彼此相等,则确定数据不包括主位、并确定特定值(例如,“0”)的位不是主位。写入处理单元120生成表示决定的结果的决定位。如果计数的位数大于n/2,也就是如果主位为“0”,则数据被反转。写入处理单元120将反转之后或之前的数据确定为写入数据、并生成关于写入数据和决定位的错误校验码(ECC)。写入处理单元120将由错误校验码构造的数据和决定位确定为冗余数据并将写入数据和冗余数据通过信号线129提供到存储器接口140。应当指出,尽管写入处理单元120计数数据中“0”的位数并确定计数值是否大于n/2,但是写入处理单元120可以另外地计数数据中“1”的位数并确定计数值是否大于n/2。

写入处理单元120还将从存储器接口140接收的状态提供到主机接口110。

读取处理单元130执行用于从NVRAM200读出数据的读取过程。如果读取处理单元130通过主机接口110接收读取命令和地址,则它将它们提供到存储器接口140。然后,如果读取处理单元130从存储器接口140接收数据和冗余数据,则它从冗余数据中的决定位确定主位是否为“0”。如果确定主位为“0”,则读取处理单元130反转数据。读取处理单元130将反转之前或之后的数据作为读取数据通过信号线138提供到主机接口110。

此外,读取处理单元130将从存储器接口140接收的状态提供到主机接口110。

存储器接口140传送命令、地址、数据、状态等到NVRAM200、以及传送来自NVRAM200的命令、地址、数据、状态等。具体地,存储器接口140分别通过信号线106、107和108将从读取处理单元120接收的命令、地址和数据传送到NVRAM200。然后,存储器接口140通过信号线109将从NVRAM200传送到其的状态提供到写入处理单元120。此外,存储器接口140将从读取处理单元130接收的命令和地址传送到NVRAM200、并将从NVRAM200传送到其的数据和状态提供到读取处理单元130。应当指出,存储器接口140是数据获取单元的示例。

NVRAM200包括控制接口210、NVRAM控制部220和存储器单元阵列230。

控制接口210传送命令、地址、数据、状态等到存储器控制部100以及传送来自存储器控制部100的命令、地址、数据、状态等。

NVRAM控制部220控制整个NVRAM 200。具体地,如果NVRAM控制部220通过控制接口210接收写入命令、地址和写入数据,则它读出在写入数据的地址处写入的数据。该读取被称为预读取。NVRAM控制部220以位为单位来比较写入数据和被写入数据,确定它们的位(在写入数据中具有“1”的值以及在被写入数据中具有“0”的值)作为重写目标。NVRAM控制部220将重写目标的位重写为“1”。该过程在下文称为复位过程。然后,NVRAM控制部220在设定过程之后以位为单位将写入数据和被写入数据相互比较,并将这些位(在写数据中具有“0”的值,在被写入数据中具有“1”的值)确定为写入目标。NVRAM控制部220将重写目标的位重写为“0”。此过程在下文称为设定过程。另一方面,如果NVRAM控制部220通过控制接口210接收冗余数据,则它以与当写入数据被写入时类似的过程执行写入。

应当指出,尽管NVRAM控制部220在复位过程之后执行设定过程,但除此之外,它也可以在设定过程之后执行复位过程。此外,尽管将“1”重写为“0”的过程称为设定过程并且将“0”重写为“1”的过程称为复位过程,但过程的名字不限于复位过程和设定过程。例如,对应于设定过程的过程也被称为擦除过程。另一方面,对应于复位过程的过程也被称为编程过程。

同时,如果NVRAM控制部220通过控制接口210接收读命令和地址,则它从存储器单元阵列230中的相应地址读出数据并将该数据传送到存储器控制部100。

此外,NVRAM控制部220生成其中描述NVRAM200的情况以及写命令执行的结果的状态,并将该状态传送到存储器控制部100。

存储器单元阵列230包括多个阵列的存储器单元。例如,ReRAM用作每个存储器单元。应当注意,如果通过非易失性存储器在写入过程中依次执行设定过程和复位过程,则可以在存储器单元阵列230中使用除了ReRAM之外的非易失性存储器。

图2示出第一实施例中的NVRAM200的存取单元的示例。如图2中可见,NVRAM200中的存储器单元阵列230由多个页面构造。预定地址分配到每个页面的每个存储位置。

图3示出第一实施例中的页面的数据结构的示例。每个页面包括用户数据以及用户数据的冗余数据。用户数据由预定大小的多个数据构成。例如,用户数据是由八个16字节的数据构成的128字节的数据。同时,冗余数据包括决定数据和错误校验码。决定数据对应于用户数据中的多个数据由多个决定位构成。决定位表示特定值(诸如,例如“0”)的位数是否大于n/2。例如,在用户数据由八个数据构成的情况下,决定位对应于用户数据由八个决定位构成。错误校验码是用于检测和校正用户数据和决定数据中的错误的数据。

写入处理单元的构造的示例

图4是第一实施例中的写入处理单元120的构造的示例的方框图。参照图4,所示出的写入处理单元120包括主要位决定部121、页面缓冲器122、写入侧反转部123和ECC生成部124。

主要位决定部121计数在用户数据的每个数据中预定值(诸如,例如,二进制值当中的“0”)的位数,并将计数的位数与n/2比较以确定特定值的位数是否为主要位。主要位决定部121生成决定位并将数据以及对应于该数据的决定位保留在页面缓冲器122中,该决定位表示关于用户数据中的每个数据的决定的结果。例如,如果“0”的位数大于n/2,也就是如果主要位为“0”,则生成“0”的决定位,但是如果“0”的位数等于或小于n/2,也就是如果主要位不是“0”,则生成“1”的决定位。应当注意,主要位决定部121是决定部的示例。

页面缓冲器122保留包括多个数据以及该数据的决定位的页面。

写入侧反转部123在有需要时基于该数据的决定位来反转保留在页面缓冲器122中的数据。写入侧反转部123首先从页面缓冲器122读出每个数据以及相应的决定位。然后,如果决定位指示主要位为“0”,则写入侧反转部123反转该数据以确定写入数据,但是,在任何其他情况下,确定不被反转的数据为写入数据。写入侧反转部123提供由多个写入数据构造的用户数据和由多个决定位构造的决定数据到ECC生成部124和存储器接口140。应当注意,写入侧反转部123是写入侧输出部的示例。

ECC生成部124生成关于用户数据和决定数据的错误校验码。ECC生成部124将生成的错误校验码提供到存储器接口140。

读取处理单元的构造的示例

图5是示出第一实施例中读取处理单元130的构造的示例的方框图。参照图5,所示出的读取处理单元130包括读取侧反转部131、页面缓冲器132和错误检测校正部133。

错误检测校正部133利用冗余数据中的错误校验码来检测用户数据和决定数据中的错误并在错误可被校正时校正数据。在执行错误检测和校正之后,错误检测校正部133将所得的用户数据和决定数据保留到页面缓冲器132中。

页面缓冲器132保留包括用户数据和决定数据的页面。

读取侧反转部131在有需要时基于关于该数据的决定位来反转保留在页面缓冲器132中的数据。读取侧反转部131首先从页面缓冲器132读出数据以及该数据的决定位。然后,如果决定位指示在反转之前该数据的主要位为“0”,则读取侧反转部131反转该数据以确定读出数据,但是,在任何其他情况下,确定不被反转的数据为读出数据。读取侧反转部131将包括读取数据的用户数据提供到主机接口110。读取侧反转部131是读取侧输出部的示例。

图6示出第一实施例中在写入过程中传送的数据的示例。存储器控制部100通过信号线106和107传送写命令和页面地址到NVRAM200。然后,存储器控制部100由用户数据生成决定数据和错误校验码,并通过信号线108将包括所生成的决定数据和错误校验码的页面传送到NVRAM200。NVRAM200将传送到其的页面写入到页面地址、并将描述写入过程的结果的状态通过信号线109传送到存储器控制部100。以此方式,在写入过程中,写入命令、页面地址、用户数据等从存储器控制部100传送到NVRAM200,然后状态从NVRAM200传送到存储器控制部100。

图7示出第一实施例中在读取过程中传送的数据的示例。存储器控制部100通过信号线106和107传送读命令和页面地址到NVRAM200。NVRAM200从页面地址读出包括用户数据、决定数据和错误校验码的页面。NVRAM200通过信号线108和109将所读出的页面和其中描述读出过程的结果的状态传送到存储器控制部100。以此方式,在读取过程中,读命令和页面地址从存储器控制部100传送到NVRAM200,然后用户数据等和状态从NVRAM200传送到存储器控制部100。

存储器系统的操作的示例

图8是示出第一实施例中存储器系统的操作的示例的流程图。该步骤例如在用于初始化的指令从主机300发布到存储器系统时开始。

参照图8,在步骤S901,NVRAM200将存储器单元阵列230中的所有位初始化为“1”的值。然后,在步骤S902,存储器控制部100解码来自主机300的命令。然后,在步骤S903,当存储器控制部100接收来自主机300的命令时,其决定该命令是否是写命令。这里,假设来自主机300的命令为读命令和写命令中的一个。应当注意,尽管NVRAM200将所有的位初始化为“1”的值,但除此之外,它也可以将所有的位初始化为“0”的值。在此情形下,存储器控制部100可以决定“1”的位是否为主要位。

如果在步骤S903所接收的命令为写命令并且在步骤S903的决定为是,则在步骤S910,存储器控制部100执行存储器控制部侧写入过程。然后,在步骤S940,NVRAM200执行NVRAM侧写入过程。

另一方面,如果在步骤S903所接收的命令为读命令并且在步骤S903的决定为否,则在步骤S960,存储器控制部100执行存储器控制部侧读取过程。然后,在步骤S990,NVRAM200执行NVRAM侧读取过程。在步骤S940或S990处的过程之后,存储器控制部100将其处理返回到步骤S902。

图9是示出在图8的步骤S910的存储器控制部侧写入过程的示例的流程图。参照图9,存储器控制部100在步骤S920执行用于决定特定值的位是否为主要位的主要位决定过程。然后,存储器控制部100在步骤S930根据需要执行用于反转数据的写入侧反转过程。在步骤S930的过程之后,存储器控制部100结束存储器控制部侧写入过程。

图10是示出在图9的步骤S920的主要位决定过程的示例的流程图。参照图10,在步骤S921,存储器控制部100的主要位决定部121选择页面中的n位数据。然后,在步骤S922,主要位决定部121计数所选择的数据中“0”的位数。然后,在步骤S923,主要位决定部121将所选择的数据保留到页面缓冲器122中。然后,在步骤S924,主要位决定部121决定“0”的位数是否大于n/2,也就是主要位是否为“0”。如果计数值大于n/2并且在步骤S924的决定为是,则在步骤S925,主要位决定部121生成“0”值的决定位(指示主要位为“0”的事实)并将所生成的决定位保留到页面缓冲器122中。另一方面,如果计数值等于或小于n/2并且步骤S924的决定为否,则在步骤S926,主要位决定部121生成“1”值的决定位(指示主要位不是“0”的事实)并将所生成的决定位保留在页面缓冲器122中。

在步骤S925或S926之后,主要位决定部121在步骤S927决定页面中的所有数据是否保留在页面缓冲器122中。如果在步骤S927没有保留所有数据并且步骤S927的决定为否,则主要位决定部121将处理返回到步骤S921。另一方面,如果在步骤S927保留了所有数据并且步骤S927的决定为是,则主要位决定部121结束主要位决定过程。

图11是示出在图9的步骤S930的写入侧反转过程的示例的流程图。参照图11,在步骤S931,存储器控制部100的写入侧反转部123从页面缓冲器122读出页面中的数据以及数据的决定位。然后,在步骤S932,写入侧反转部123决定决定位是否为“0”,也就是主要位是否为“0”。

如果在步骤S932决定位为“0”并且步骤S932的决定为是,则在步骤S933,写入侧反转部123反转该数据并将被反转的数据作为写入数据传送到NVRAM200。然后,在步骤S934,写入侧反转部123生成用于被反转的数据和决定位的错误校验码。

另一方面,如果在步骤S932决定位为“1”并且在步骤S932的决定为否,则在步骤S935,写入侧反转部123将该数据作为写入数据传送到NVRAM200。然后,在步骤S936,写入侧反转部123生成用于该数据和决定位的错误校验码。

在步骤S934或S936之后,写入侧反转部123在步骤S937决定是否页面中的所有数据都传送到NVRAM200。如果在步骤S937没有传送所有数据并且步骤S937的决定位为否,则写入侧反转部123将处理返回到步骤S931。另一方面,如果在步骤S937传送了所有数据并且步骤S937的决定为是,则在步骤S938,写入侧反转部123将包括决定数据和错误校验码的冗余数据传送到NVRAM200。在步骤S938的过程之后,写入侧反转部123结束写入侧反转过程。

图12是示出在图8的步骤S940的NVRAM侧写入过程的示例的流程图。参照图12,NVRAM200在步骤S941获取页面中的写数据或冗余数据。然后NVRAM200在步骤S942预读取写入目的地的页面地址中写入的数据作为被写入数据。然后,NVRAM200在步骤S943将写入数据或冗余数据和被写入数据的相应位相互比较以生成复位掩码数据。此复位掩码数据指示在写入数据或冗余数据中为“1”而在被写入数据中位“0”的任何位将被复位,而任何其他的位将被掩蔽。

NVRAM200在步骤S944执行仅将其复位由掩码复位数据指示的那些位从“0”重写到“1”的过程,也就是复位过程。然后,NVRAM200在步骤S945读出在复位过程之后的被写入数据并决定是否发现错误。

如果在步骤S945没有发现错误并且在步骤S945的决定为否,则在步骤S946,NVRAM200在复位过程之后将写入数据或冗余数据与被写入数据的相应位相互比较以生成设定掩码数据。该设定掩码数据指示在写入数据或冗余数据中为“0”且在被写入数据中为“1”的任何位将被设定,而任何其他位将被掩蔽。

NVRAM200在步骤S947执行仅将其设定由设定掩码数据指示的那些位从“1”重写为“0”的过程,也就是设定过程。NVRAM200在步骤S948读出在设定过程之后的被写入数据并决定是否发现错误。

当从复位过程产生的错误在步骤S945被发现并且在步骤S945的决定为是时,或者当从设定过程产生的错误在步骤S948被发现并且在步骤S948的决定为是时,NVRAM200在步骤S949将状态中的错误标记设置为开启状态。该错误标记是表示错误是否在写入过程中发生的信息并在初始状态为关闭。如果设定过程中的错误没有在步骤S948发现并且在步骤S948的决定为否,或者在步骤S949的过程之后,NVRAM200在步骤S950将该状态传送到存储器控制部100。在步骤S950的过程之后,NVRAM200结束NVRAM侧写入过程。

图13是示出在图8的步骤S960的存储器控制部侧读取过程的示例的流程图。参照图13,存储器控制部100在步骤S970首先检测数据中的错误并执行用于校正错误的错误检测校正过程。然后,存储器控制部100根据需要在步骤S980执行用于反转数据的读取侧反转过程。在步骤S980的过程之后,存储器控制部100结束存储器控制部侧读取过程。

图14是示出在图13的步骤S970的错误检测校正过程的示例的流程图。参照图14,存储器控制部100的错误检测校正部133在步骤S971从NVRAM200获取数据和决定数据以及错误校验码。然后,错误检测校正部133在步骤S972使用错误校验码以检测数据和决定数据中的错误。然后,错误检测校正部133在步骤S973决定数据和决定数据是否包括错误。

如果在步骤S973发现错误并且在步骤S973的决定为是,则错误检测校正部133在步骤S974决定错误是否可被校正。如果在步骤S974错误可被校正并且在步骤S974的决定为是,则错误检测校正部133在步骤S975校正数据或决定数据中的错误。另一方面,如果在步骤S974错误不能被校正并且在步骤S974的决定为否,则错误检测校正部133在步骤S976通知主机300该错误。例如,错误检测校正部133将从NVRAM200传送到其的状态中的错误标记设为打开状态,并将所得的错误标记传送到主机300以通知主机300该错误。

如果在步骤S973没有发现错误并且在步骤S973的决定为否,或者在步骤S975或S976的过程之后,错误检测校正部133结束错误检测校正过程。

图15是示出在图13的步骤S980的读取侧反转过程的示例的流程图。参照图15,存储器控制部100的读取侧反转部131在步骤S981选择页面中的数据以及该数据的决定位。读取侧反转部131在步骤S982决定决定位是否为“0”,也就是决定主要位是否为“0”。

如果在步骤S982的决定位为“0”并且在步骤S982的决定为是,则读取侧反转部131在步骤S983反转数据并将反转的数据作为读取数据传送到主机300。另一方面,如果在步骤S982决定位为“1”并且在步骤S982的决定为否,则读取侧反转部131在步骤S984保留数据而不将其反转并将该数据作为读取数据传送到主机300。

在步骤S983或S984之后,读取侧反转部131在步骤S985决定页面中的所有数据是否被传送。如果在步骤S985没有传送所有数据并且在步骤S985的决定为否,则读取侧反转部131将其处理返回到步骤S981。另一方面,如果在步骤S985传送了所有数据并且在步骤S985的决定为是,则读取侧反转部131结束读取侧反转过程。

图16是示出在图8的步骤S990的NVRAM侧读取过程的示例的流程图。参照图16,NVRAM200在步骤S991从与读取命令一起接收的页面地址读出页面。NVRAM200在步骤S992将读出的页面传送到存储器控制部100。在步骤S992的过程之后,NVRAM200结束NVRAM侧读取过程。

图17示出第一实施例中数据被反转且被写入的特定示例。研究了“0b00000111”的数据A被输入到存储器系统的情况。在此情形下,存储器控制部100计数8位的数据A中“0”值的位数。在本示例中,“0”的位数“5”大于数据A的总位数的一半,也就是大于“4”。因此,存储器控制部100生成“0”值的决定位,指示“0”位为主要位的事实。然后,存储器控制部100反转数据A并将所得的数据“0b11111000”作为写入数据A传送到NVRAM200。

假设,在NVRAM200中,“0b111111111”被写入到写入数据A的写入目的地的页面地址中并且“1”被写入到写入数据A的决定位的写入目的地中。

因此,NVRAM200将写入数据和决定位与被写入数据和决定位进行比较并执行复位过程。在本示例中,复位过程不重写任何位。

然后,NVRAM200将写入数据和决定位与被写入数据和决定位进行比较并执行设定过程。通过该设定过程,被写入数据被重写为“0b11111000”并且决定位被重写为“0”。

这里,如果没有反转数据A而另外地进行写入过程,并且“0”的位数大于数据A的总位数的一半,则在设定过程或复位过程中,可能会执行大于数据A的一半的位数的重写。例如,当数据A没有被反转时,期望NVRAM200在复位过程中重写大于一半数目(也就是“4”)的5位。然而,由于存储器控制部100在每个设定过程或复位过程中反转主要位为“0”位的数据,所以n位数据中要被重写的位数被抑制到n/2或更少,如图17所示。因此,在每个设定过程和复位过程中的功耗的最大值通过不反转数据而减小。

图18示出第一实施例中改变的位数为最大值的写入过程的特定示例。当在设定过程或复位过程中重写全部n位时,写入过程中的改变位数为最大值。作为刚描述情形的示例,研究了“0b00001111”的数据B被输出到存储器系统的情形。在此示例中,“0”的位数“4”等于或小于数据B的总位数的一半,也就是等于或小于“4”。因此,存储器控制部100生成“1”值的决定位,表示“0”位不是主要位。然后,存储器控制部100将数据B而不将其反转作为写入数据B传送到NVRAM200。

假设,在NVRAM200中,“0b11110000”的被写入数据在写入数据B的页面地址处写入,并且“1”被写入在写入数据B的决定位的写入目的地。在此情形下,由于被写入数据和写入数据B之间的所有相应位具有不同的值,被写入数据的全部8位都被重写。

NVRAM200将写入数据和决定位与被写入数据和决定位进行比较并执行复位过程。通过该复位过程,从第五位至第八位的4个位被重写,使得被写入数据更新为“0b11111111”。应当注意,决定位没有被重写。

然后,NVRAM200在复位过程之后将写入数据和决定位与被写入数据和决定位进行比较并执行设定过程。通过该设定过程,从第一至第四位的四个位被重写,使得被写入数据被更新为“0b00001111”。应当注意,决定位没有被重写。

由于如上所述,当“0”位为主要位时数据被反转,所以写入数据中的“0”的位数总是变得等于或小于总位数n的一半。因此,即使在设定过程和复位过程中的总改变位数大于n/2的情况下,在设定过程和复位过程的每个中,改变的位数也变得等于或小于n/2,也就是等于或小于4,如图18举例说明的。因此,写入过程中的功耗的最大值减小。相反,如果主要位为“0”的数据没有另外地被反转,则设定过程和复位过程的每个中的改变位数有时不会变得等于或小于n/2。例如,由于“0b00000000”的数据没有被反转,当该数据将要被写入到其中存储“0b11111111”的地址中时,复位过程中的改变位数等于总位数,也就是等于“8”。然而,如果存储器控制部100根据需要反转数据使得写入数据的特定值(例如“0”)的位数变得等于或小于n/2,则设定过程和复位过程的每个中的改变位数被抑制到n/2或更小。结果,功耗的最大值从数据没有被反转的可选情形减小。

应当注意,尽管存储器系统如图3举例示出地将多个决定位共同添加到用户数据,但是除此之外,可以以分布的方式将决定位添加到数据,如图19举例示出的。

此外,尽管将信息处理系统构造为使得在存储器控制部100中提供主要位决定部121和写入侧反转部123,如图4举例示出的,但是信息处理系统的构造不限于此。除此之外,可以将信息处理系统构造为使得在主机300或NVRAM200中提供主要位决定部121和写入侧反转部123二者或其中的一个。此外,尽管将信息处理系统构造为在存储器控制部100中提供读取侧反转部131,如图5举例示出的,但是除此之外,可以将其构造为使得在主机300或NVRAM200中提供读取侧反转部131。

此外,主要位决定部121计数特定值的位数而不论“0”和“1”的数据保留特性,并决定计数值是否超过n/2。然而,如果“0”和“1”的数据保留特性彼此不同,则主要位决定部121可以另外地计数关于其的数据保留特性低的值的位数。数据保留特性通常由数据能够持续保留在固定温度条件下的时间段来表示。例如,如果保证特定非易失性存储器能够在70℃或70℃以下保留数据10年以上,则非易失性存储器的数据保留特性表示为在70℃或以下为10年。然后,随着用于保证的时间段增加以及保证的温度增加,估计数据保留特性变得更高。具体地,通过加速测试等预先测量NVRAM200的“0”的数据保留特性和“1”的数据保留特性,并且要被主要位决定部121测量的特定值的位可以被设定为数据保留特性关于其更低的值的位,例如设定到“0”的位。如果n位数据中的特定值的位数超过n/2,则写入侧反转部123反转数据。因此,关于其数据保留特性较低的值的位数被抑制到等于或小于关于其数据保留特性较高的值的位数的数目。因而,改善了NVRAM200的数据保留特性。

以此方式,通过本技术的第一实施例,由于存储器控制部100反转其中特定值的位为主要位的数据,所以在设定过程或复位过程中的改变位数可以被抑制到等于或小于总位数的一半的数目。因此,从其中数据没有被反转的备选情形中,设定过程和复位过程的每个中的最大功耗被减小。通过减小最大功耗,可以减小电源电路的规模并且可以最小化NVRAM200。此外,由于存储器控制部100不需要读出被写入数据并将被写入数据与要被写入的数据进行比较,所以抑制了写入过程的速度的降低。因此,存储器系统能够降低最大功耗,同时抑制写入过程中速度的降低。

<2.第二实施例>

存储器控制部的构造的示例

图20是示出根据第二实施例的存储器控制部100的构造的示例的方框图。第二实施例中的存储器控制部100类似于第一实施例中的存储器控制部100,除了它能够响应NVRAM200的规格改变数据大小。具体地,参照图20,第二实施例中的存储器控制部100还包括数据大小改变单元150。

数据大小改变单元150改变决定目标的数据的数据大小,也就是n位的位数n。在开始数据的写入之前,数据大小改变单元150发布用于获取数据大小的数据大小获取命令,并通过存储器接口140传送数据大小获取命令到NVRAM200。NVRAM200根据数据大小获取命令将页面尺寸和页面中每个数据的数据大小通知存储器控制部100。数据大小改变单元150基于所接收的大小,改变在写入处理单元120和读取处理单元130中的页面大小和数据大小的设定。

图21示出第二实施例中在数据大小获取时传送的数据的示例。存储器控制部100通过信号线106发布并传送数据大小获取命令到NVRAM200。NVRAM200根据数据大小获取命令传送页面大小和数据大小到存储器控制部100。

以此方式,通过本第二实施例,存储器控制部100可以响应于从NVRAM200接收的大小来改变数据大小。因此,存储器控制部100能够用于具有彼此不同访问单元的多种NVRAM 200。

<3.第三实施例>

存储器控制部的构造的示例

图22是示出根据第三实施例的存储器控制部100的构造的示例的方框图。第三实施例的存储器控制部100类似于第一实施例,除了它包括改变构造的页面缓冲器。具体地,参照图22,存储器控制部100与第一实施例的不同在于它还包括被写入处理单元120和读取处理单元130共享的页面缓冲器160。

页面缓冲器160保留读取数据以及读取数据的决定位。当写入特定页面地址处的数据要被复制到不同的页面地址时,主机300将用于复制指令的命令传送到存储器控制部100。读取处理单元130接收通过来自NVRAM 200的命令所指示的复制源的页面地址处的数据和决定位并根据需要反转数据。读取处理单元130将反转之前或之后的数据作为读取数据与决定位一起保留在页面缓冲器160中。写入处理单元120读出来自页面缓冲器160的数据和决定位并根据需要反转数据。写入处理单元120将反转之前或之后的读取数据作为写入数据与决定位一起传送到NVRAN200。写入数据和决定位被写入到NVRAM200的复制目的地的页面地址。

写入处理单元的构造的示例

图23是第三实施例中的写入处理单元120的构造的示例的方框图。第三实施例中写入处理单元120类似于第一实施例,除了它不包括页面缓冲器122。写入处理单元120的主要位决定部121将用户数据和决定数据保留到代替页面缓冲器122的页面缓冲器160中。写入侧反转部123读出保留在页面缓冲器160中的用户数据和决定数据,并根据需要基于决定数据来反转数据。

读取处理单元的构造的示例

图24是示出第三实施例中的读取处理单元130的构造的示例的方框图。第三实施例中的读取处理单元130类似于第一实施例,除了它不包括页面缓冲器132。读取处理单元130的错误检测校正部133提供用户数据和决定数据到读取侧反转部131而没有页面缓冲器132的介入。读取侧反转部131将包括读取数据的用户数据和决定数据保留到页面缓冲器160中。

以此方式,通过第三实施例,存储器控制部100将读取数据和决定数据保留到页面缓冲器160中,然后在它根据需要反转读取数据之后将读取数据作为写入数据传送到NVRAM200。由于不必要将读取数据保留到包括存储器控制部100和NVRAM200的存储器系统的外部缓冲器中,所以存储器系统可以在不同页面地址之间高速地复制数据。

<4.第四实施例>

存储器控制部的构造的示例

图25是示出根据第四实施例的存储器控制部100的构造的示例的方框图。第四实施例中的存储器控制部100类似于第三实施例,除了改变了页面缓冲器160的布置之外。更具体地,第四实施例中的存储器控制部100与第三实施例的不同在于页面缓冲器160被布置在主机接口110和写入处理单元120及读取处理单元130之间。主机接口110通过页面缓冲器160将命令、地址、数据、状态等传送到写入处理单元120和读取处理单元130、以及传送来自写入处理单元120和读取处理单元130的命令、地址、数据、状态等。

第四实施例中的页面缓冲器160保留读取数据但不保留决定数据。读取处理单元130将读取数据保留到页面缓冲器160中。写入处理单元120根据需要改变保留在页面缓冲器160中的读取数据的值。然后,写入处理单元120从页面缓冲器160读出读取数据,并计数读取数据中特定值的位数。如果计数值大于n/2,则写入处理单元120反转读取数据并将被反转的读取数据作为写入数据与决定数据一起提供到NVRAM200。

写入处理单元的构造的示例

图26是示出第四实施例中的写入处理单元120的构造的示例的方框图。参照图26,第四实施例中的主要位决定部121通过页面缓冲器160接收从主机接口110或读取处理单元130传送的用户数据。主要位决定部121生成关于用户数据的决定数据并将用户数据和决定数据提供到写入侧反转部123。

读取处理单元的构造的示例

图27是示出第四实施例中读取处理单元130的构造的示例的方框图。第四实施例中的读取处理单元130类似于第三实施例,除了决定数据没有被页面缓冲器160保留而是仅将用户数据保留在页面缓冲器160中之外。

以此方式,通过第四实施例,存储器控制部100能够保留读取数据到页面缓冲器160中并在其根据需要反转读取数据之后将读取数据作为写入数据传送到NVRAM200。由于不需要将读取数据保留在存储器系统的外部缓冲器中,所以存储器系统可以在不同页面地址之间高速地复制数据。此外,由于存储器控制部100计数从页面缓冲器160读出的读取数据中特定值的位数,所以存储器系统可以复制保留在页面缓冲器160中的读取数据,并使读取数据的值改变。

<5.第五实施例>

存储器控制部的构造的示例

在上述第一实施例中,执行反转n位数据的所有位的过程,以将数据中特定值的位数减小到n/2或更小。然而,如果它可以将n位数据中的特定值的位数减小到n/2或更小,则可以执行除了反转所有位的过程之外的过程。例如,存储器控制部100可以执行反转部分位的过程来代替反转数据的所有位的过程。根据第五实施例的存储器控制部100类似于第一实施例,除了它执行反转部分位的过程以将n位数据中特定值的位数减小到n/2或更小。

图28是示出第五实施例中的写入处理单元120的构造的示例的方框图。第五实施例中的写入处理单元120类似于第一实施例,除了它包括反转目标位列决定部161和写入侧部分反转部165来代替主要位决定部121和写入侧反转部123。

反转目标位列决定部161决定数据的奇数编号的位列中的特定值的位数是否大于数据的偶数编号的位列中的特定值的位数。更具体地,每次当输入n位数据时,反转目标位列决定部161计数数据的奇数编号的位列和偶数编号的位列中的特定值(诸如,例如,“0”)的位数。然后,反转目标位列决定部161决定来自奇数编号的位列的计数值是否大于来自偶数编号的位列的计数值。

反转目标位列决定部161生成表示决定的结果的决定位并将数据和决定位保留到页面缓冲器122中。例如,当奇数编号的位列中的“0”的计数值大于偶数编号的位列中“0”的计数值时,则生成“1”的决定位。另一方面,如果奇数编号的位列中的计数值等于或小于偶数编号的位列的计数值,则生成“0”的决定位。应当注意,反转目标位列决定部161仅是决定部的示例。

写入侧部分反转部165基于数据的决定位,反转保留在页面缓冲器122中的数据的奇数编号的位列或偶数编号的位列。具体地,写入侧部分反转部165首先从页面缓冲器122读出数据和该数据的决定位。如果决定位指示奇数编号的位列中的计数值较高,则写入侧部分反转部165反转奇数编号的位列以生成写入数据,而在任何其他情况下反转偶数编号的位列以生成写入数据。

在偶数编号的位列的反转中,写入侧部分反转部165例如在n位的掩码数据(其中偶数编号的位列指示“1”,奇数编号的位列指示“0”)与反转目标的n位数据之间以位为单位确定异或运算,以反转偶数编号的位列。另一方面,在奇数编号的位列的反转中,写入侧部分反转部165例如在n位的掩码数据(其中奇数编号的位列指示“1”,偶数编号的位列指示“0”)与反转目标的n位数据之间对于每一位确定异或运算,以反转奇数编号的位列。

通过反转奇数编号位列和偶数编号位列的指示“0”值的较高计数值的那些,在反转之后的数据中的“0”的数目总是等于或小于数据的总位数的一半。

写入侧部分反转部165将由多个写入数据构造的用户数据以及由多个决定位构造的决定数据提供到ECC生成部124和存储器接口140。应当注意,写入侧部分反转部165是写入侧输出部的示例。

反转目标位列决定部的构造的示例

图29是示出第五实施例中反转目标位列决定部161的构造的示例的方框图。参照图29,所示出的反转目标位列决定部161包括奇数编号位列计数部162、偶数编号位列计数部163和计数值比较部164。

奇数编号位列计数部162计数n位数据的奇数编号的位列中“0”值的数目。奇数编号位列计数部162将其计数值提供到计数值比较部164。偶数编号位列计数部163计数n位数据的偶数编号的位列中“0”值的数目。偶数编号位列计数部163将其计数值提供到计数值比较部164。

计数值比较部164将奇数编号的位列中的计数值与偶数编号的位列中的计数值相互比较。计数值比较部164生成表示比较的结果的位作为决定位。例如,如果奇数编号位列中的计数值高于偶数编号位列中的计数值,则生成“1”的决定位。另一方面,如果奇数编号位列中的计数值等于或小于偶数编号位列中的计数值,则生成“0”的决定位。计数值比较部164将决定位保留到页面缓冲器122中。

通过提供如图29举例所示的奇数编号位列计数部162和偶数编号位列计数部163,计数奇数编号位列中“0”值的数目的过程和计数偶数编号位列中“0”值的数目的过程可以彼此并行地执行。因此,与第一实施例(其中计数“0”的数目的过程不是彼此并行地执行)相比,生成决定位的过程可以以较高的速度执行。

图30A和30B示出第五实施例中的数据和决定位的示例。图30A示出数据中奇数编号位列和偶数编号位列的示例。例如,从位列右侧开始计数时处于奇数编号位置的位是奇数编号的位,处于偶数编号位置的位是偶数编号的位。

图30B示出数据和决定位的示例。如果将以十六位进制表示0至15的值的数据N表示为二进制表示,则获得位列“0b0000”至“0b1111”。数据N中的奇数编号位列和偶数编号位列中的“0”的数目通过反转目标位列决定部161计数。例如,“0b0000”中的奇数编号位列和偶数编号位列中的“0”的数目都是2。另外,“0010”中奇数编号位列的“0”的数目为2,偶数编号位列中的“0”的数目为1。

然后,如果奇数编号的位列中的计数值大于偶数编号位列中的计数值,则反转目标位列决定部161生成“1”的决定位。另一方面,如果奇数编号位列中的计数值等于或小于偶数编号位列中的计数值,则反转目标位列决定部161生成“0”的决定位。例如,由于“0000”中奇数编号位列的计数值等于或小于偶数编号位列的计数值,所以生成“0”的决定位。另一方面,由于“0010”中奇数编号位列的计数值高于偶数编号位列的计数值,则生成“1”的决定位。

图31示出第五实施例中数据(其中奇数编号位列或偶数编号位列被反转)的示例。如果决定位为“0”,则写入侧部分反转部165在“0b1010”(其是用于偶数编号列反转的掩码数据)与数据N之间执行异或操作,并输出处理的结果也就是数据NA’。另一方面,如果决定位为“1”,则写入侧部分反转部165在“0b0101”(其是用于奇数编号列反转的掩码数据)和数据N之间执行异或操作,并输出处理的结果也就是数据NB’。例如,如果关于数据“0b0000”生成决定位“0”,则由于对偶数编号列反转使用“0b1010”的掩码数据的结果而输出“0b1010”的数据NA’。另一方面,如果关于数据“0b0010”生成决定位“1”,则由于对奇数编号列反转使用“0b0101”的掩码数据的结果而输出“0b0111”的数据NB’。

数据NA’和数据NB’是数据N中的偶数编号位列和奇数编号位列的包括较大数目的“0”的那些被反转的数据。因此,“0”的数目总是被减小到该数据的总位数的一半或更少。通过以此方式执行反转数据的偶数编号位列或奇数编号位列的过程,n位数据中特定值的位数可以被减少到n/2或更小。

应当注意,存储器控制部100可以执行除了反转数据的偶数编号位列或奇数编号位列的过程之外的过程,只要它是可以将n位数据中特定值的位数减小到n/2或更小的转变过程。例如,存储器控制部100可以执行反转数据的高次位列或低次位列的过程。

读取处理单元的构造的示例

图32是示出第五实施例中读取处理单元130的构造的示例的方框图。第五实施例中的读取处理单元130类似于第一实施例,除了提供读取侧部分反转部134来代替读取侧反转部131之外。

读取侧部分反转部134基于决定位来反转保留在页面缓冲器132中的数据的偶数编号位列或奇数编号位列。首先,读取侧部分反转部134从页面缓冲器132读出数据以及该数据的决定位。然后,如果决定位指示奇数编号位列的计数值更大,则读取侧部分反转部134反转奇数编号位列以生成读取数据。然而,如果决定位指示偶数编号位列的计数值较大,则读取侧部分反转部134反转偶数编号位列以生成读取数据。读取侧部分反转部134将包括读取数据的用户数据提供到主机接口110。应当注意,读取侧部分反转部134是读取侧输出部的示例。

存储器控制部的操作的示例

图33是第五实施例中存储器控制部侧写入过程的示例的流程图。第五实施例中的存储器控制部侧写入过程类似于第一实施例,除了执行步骤S911和S915的过程来代替步骤S920和S930的过程。存储器控制部100在步骤S911执行反转目标位列决定过程用于决定奇数编号位列中的“0”的数目是否大于偶数编号位列中的“0”的数目。然后,存储器控制部100在步骤S915执行写入侧部分反转过程用于反转奇数编号位列或偶数编号位列。在步骤S915的过程之后,存储器控制部100结束存储器控制部侧写入过程。

图34是示出图33的在步骤S911的反转目标位列决定过程的示例的流程图。反转目标位列决定过程类似于第一实施例的主要位决定过程,除了执行步骤S912和S913的过程来代替步骤S922和S924的过程。

在步骤S921的过程之后,反转目标位列决定部161在步骤S912计数所选择的数据的奇数编号位列和偶数编号位列中“0”的位数。反转目标位列决定部161在步骤S923将所选择数据保留到页面缓冲器122中。然后,反转目标位列决定部161在步骤S913决定奇数编号位列中“0”的数目是否较大。

如果在步骤S913奇数编号位列中“0”的数目等于或小于偶数编号位列中“0”的数目、并且在步骤S913的决定为否,则反转目标位列决定部161在步骤S925生成“0”值的决定位并将所生成的决定位保留到页面缓冲器122中。另一方面,如果在步骤S913奇数编号位列中“0”的数目大于偶数编号位列中“0”的数目、并且在步骤S913的决定为是,则反转目标位列决定部161在步骤S926生成“1”值的决定位并将所生成的决定位保留到页面缓冲器122中。在步骤S925或步骤S926的过程之后,反转目标位列决定部161执行在步骤S927的过程。

图35是示出在图33的步骤S915的写入侧部分反转过程的示例的流程图。写入侧部分反转过程类似于第一实施例的写入侧反转过程,除了执行在步骤S916至S919的过程来代替在步骤S933至936的过程。

在步骤S931的过程之后,写入侧部分反转部165在步骤S932决定决定位是否指示“0”。如果在步骤S932决定位为“0”并且在步骤S932的决定为是,则写入侧部分反转部165在步骤S916反转偶数编号位列并将所反转的位列作为写入数据传输到NVRAM200。然后,写入侧部分反转部165在步骤S917生成用于通过反转偶数编号位列所生成的数据和决定位的错误校验码。

另一方面,如果在步骤S932决定位指示“1”并且在步骤S932的决定为否,则写入侧部分反转部165反转奇数编号位列并将所反转的位列作为写入数据传输到NVRAM200(步骤S918)。然后,写入侧部分反转部165在步骤S919生成用于通过反转奇数编号位列所生成的数据和决定位的错误校验码。在步骤S917或步骤S919的过程之后,写入侧部分反转部165执行在步骤S937和S938的过程。

图36是示出第五实施例中存储器控制部侧读取过程的示例的流程图。第五实施例中的存储器控制部侧读取过程类似于第一实施例,除了执行在步骤S961的过程来代替在步骤S980的过程。在步骤S970的过程之后,存储器控制部100在步骤S961执行读取侧部分反转过程用于反转奇数编号位列或偶数编号位列。在步骤S961的过程之后,存储器控制部100结束存储器控制部侧读取过程。

图37是示出在图36的步骤S961的读取侧部分反转过程的示例的流程图。读取侧部分反转过程类似于第一实施例中的读取侧反转过程,除了执行在步骤S962和S963的过程来代替在步骤S983和S984的过程之外。

在步骤S981的过程之后,读取侧部分反转部134在步骤S982决定决定位是否指示“0”。如果在步骤S982决定位指示“0”并且在步骤S982的决定为是,则读取侧部分反转部134将其中偶数编号位列被反转的数据作为读取数据传输到主机300(步骤S962)。

另一方面,如果在步骤S982决定位指示“1”并且在步骤S982的决定为否,则读取侧部分反转部134在步骤S963将其中奇数编号位列被反转的数据作为读取数据传输到主机300。在步骤S962或步骤S963的过程之后,读取侧部分反转部134执行在步骤S985的过程。

应当注意,第二至第四实施例中公开的构造可以应用到第五实施例中的存储器控制部100。这种相似性还应用于下文描述的第五实施例的变型。

以此方式,通过第五实施例,由于存储器控制部100从n位数据中的偶数编号位列和奇数编号位列当中反转包括特定值的较大位数的位列,所以在设定过程或复位过程中改变位的数目可以被减小到n/2或更小。因此,减小了设定过程和复位过程中的最大功耗。

<6.变型>

存储器控制部的构造的示例

尽管在第五实施例中,存储器控制部100在生成决定位之后反转数据的部分位,但是除此之外,决定位可以在部分位被反转之后生成。根据对第五实施例的变型的存储器控制部100类似于第五实施例的存储器控制部,除了决定位是在部分位被反转之后生成之外。

图38是示出在对第五实施例的变型中写入处理单元120的构造的示例的方框图。在该变型中的写入处理单元120类似于第五实施例的写入处理单元,除了提供反转目标位列决定部171和数据传送处理部172来代替反转目标位列决定部161和写入侧部分反转部165。

反转目标位列决定部171生成其中数据N中偶数编号位列被反转的数据NA’、以及其中奇数编号位列被反转的数据NB’。反转目标位列决定部171计数数据NA’和数据NB’的“0”的数目。反转目标位列决定部171决定数据NB’的计数值是否高于数据NA’的计数值,并将指示决定结果的决定位以及数据NA’或数据NB’保留到页面缓冲器122中。例如,如果数据NB’的计数值高于数据NA’的计数值,则反转目标位列决定部171生成“1”的决定位并将所生成的决定位与数据NB’一起保留到页面缓冲器122中。另一方面,如果数据NB’的计数值等于或小于数据NA’的计数值,则反转目标位列决定部171生成“0”的决定位并将所生成的决定位与数据NA’一起保留到页面缓冲器122中。

数据传送处理部172将决定位和数据NA’或数据NB’传送到ECC生成部124和存储器接口140。

存储器控制部的操作的示例

图39是示出在对第五实施例的变型中存储器控制部侧写入过程的示例的流程图。在该变型中的存储器控制部侧写入过程类似于第五实施例中,除了执行在步骤S995的过程来代替在步骤S915的过程。在步骤S911的过程被执行之后,存储器控制部100在步骤S995执行用于传送决定位和被部分反转的数据的数据传送过程。在步骤S995的过程之后,存储器控制部100结束存储器控制部侧写入过程。

图40是示出在对第五实施例的变型中在图39的步骤S911的反转目标位列决定过程的示例的流程图。在该变型中的反转目标位列决定过程类似于第一实施例中的主要位决定过程,除了执行在步骤S904至S905的过程来代替在步骤S922至S926的过程。

在步骤S921的过程之后,反转目标位列决定部171在步骤S904生成其中数据N的偶数编号位列被反转的数据NA’。此外,反转目标位列决定部171在步骤S905生成其中数据N的奇数编号位列被反转的数据NB’。反转目标位列决定部171在步骤S906计数数据NA’和数据NB’中每个的“0”的位数。然后,反转目标位列决定部171在步骤S907决定包括在数据NB’中的“0”的数目是否较大。

如果在步骤S907数据NB’中的计数值等于或小于在数据NA’中的计数值、并且在步骤S907的决定为否,则反转目标位列决定部171在步骤S908生成“0”的决定位并将所生成的决定位与数据NA’一起保留到页面缓冲器122中。另一方面,如果在步骤S907数据NB’中“0”的数目大于数据NA’中的数目、并且在步骤S907的决定为是,则反转目标位列决定部171在步骤S909生成“1”的决定位并将所生成的决定位与数据NB’一起保留到页面缓冲器122中。在步骤S908或步骤S909的过程之后,反转目标位列决定部171执行在步骤S927的过程。

图41是示出在对第五实施例的变型中在图39的步骤S995的数据传送过程的示例的流程图。在该变型中的数据传送过程类似于第五实施例的写入侧部分反转过程,除了执行在步骤S996和S997的过程来代替在步骤S916和S918的过程之外。

在步骤S931的过程之后,数据传送处理部172在步骤S932决定决定位是否为“0”。如果在步骤S932的决定位为“0”并且在步骤S932的决定为是,则数据传送处理部172在步骤S996将偶数编号位列被反转的数据NA’作为写入数据传送到NVRAM200。然后,数据传送处理部172执行在步骤S917的过程。

另一方面,如果在步骤S932的决定位为“1”并且在步骤S932的决定为否,则数据传送处理部172在步骤S997将奇数编号位列被反转的数据NB’作为写入数据传送到NVRAM200。然后,数据传送处理部172执行在步骤S919的过程。

以此方式,通过上述变型,存储器控制部100可以通过基于数据的部分位反转的结果生成决定位而将设定过程或复位过程中改变的位数抑制到总位数的一半或更少。

应当注意,以上描述的实施例指示用于执行本技术的示例,在实施例中的项目和权利要求中描述的特征各自具有对应的关系。类似地,权利要求中的特征和本技术的实施例中用相似参考名表示的条目各自具有对应的关系。然而,本技术不限于这些实施例,而是可以通过应用各种变型或修改的实施例而执行,而不脱离本技术的主题。

此外,在实施例的描述中所描述的处理过程可以被理解为具有这些过程的方法、或者可以被理解为用于使计算机执行该过程的程序或其中存储该程序的记录介质。例如,CD(压缩磁盘)、MD(迷你盘)、DVD(数字通用光盘)、存储卡、蓝光光盘(Blu-ray Disc:注册商标)等可用作记录介质。

应当注意,本技术可以采用如下所述这样的结构。

(1)一种存储控制装置,包括:

决定部,其被配置为在到存储器单元的输入数据的至少部分中决定二进制值中的特定值的位数是否大于参考值,以生成指示所述决定结果的决定数据,所述存储器单元在写入过程中依次执行对所述二进制值中一个的重写和对所述二进制值中另一个的重写;以及

写入侧输出部,其被配置为当决定所述位数大于所述参考值时,将至少部分被反转的所述输入数据作为写入数据与所述决定数据一起输出到所述存储器单元。

(2)根据上述(1)所述的存储控制装置,

其中所述参考值为所述输入数据的所有位的数目的一半;

所述决定部决定所有位当中所述特定值的位数是否大于所述参考值;以及

所述写入侧输出部当决定所述位数大于所述参考值时反转所述输入数据并输出所述输入数据作为所述写入数据,但是当决定所述位数不大于所述参考值时输出所述输入数据作为所述写入数据、而不反转所述输入数据。

(3)根据上述(1)所述的存储控制装置,

其中所述输入数据由两个部分构成;

所述决定部决定在所述两部分中的一个部分中所述位数是否大于所述参考值;

所述参考值为在所述两部分中的另一个部分的所述特定值的位数;以及

所述写入侧输出部当决定所述位数大于所述参考值时将一部分被反转的所述输入数据作为写入数据输出,但当决定所述位数不大于所述参考值时将另一部分被反转的所述输入数据作为写入数据输出。

(4)根据以上(1)至(3)中任一项所述的存储控制装置,还包括:

数据获取单元,其被配置为从所述存储器单元获取数据以及对应于该数据的所述决定数据;以及

读取侧输出部,其被配置为当所述决定数据指示所述位数大于所述参考值时反转所获取数据的至少部分、并将所得的数据作为读取数据输出。

(5)根据以上(4)所述的存储控制装置,还包括

缓冲器,其被配置为保留所述读取数据以及对应于所述读取数据的所述决定数据,

其中所述写入侧输出部从所述缓冲器读出所述读取数据和所述决定数据,并在所述决定数据指示所述位数大于所述参考值时将至少一部分被反转的所述读取数据作为所述写入数据输出。

(6)根据以上(4)或(5)所述的存储控制装置,还包括

缓冲器,其被配置为保留所述读取数据,

其中主要位决定部从所述缓冲器读出所述读取数据,并进一步决定所述读取数据的至少部分中所述特定值的位数是否大于所述参考值,以生成所述决定数据;以及

写入侧反转部,当所述决定数据指示所述位数大于所述参考值时,进一步将至少部分被反转的所述读取数据作为所述写入数据输出。

(7)根据以上(1)至(6)中任一项所述的存储控制装置,还包括

数据大小改变单元,其被配置为基于在来自所述存储器单元的通知中接收的数据大小改变所述输入数据的所有位的数目;

其中所述主要位决定部响应于改变的所有位的数目来改变所述参考值。

(8)根据以上(1)至(7)中任一项所述的存储控制装置,其中所述主要位决定部计数目标数据中所述特定值的位数,并将该计数值与所述参考值相互比较,以决定所述特定值的位数是否大于所述参考值。

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

存储器单元,其被配置为在写入过程中依次执行对二进制值中一个的重写和对所述二进制值中另一个的重写;

决定部,其被配置为决定在到所述存储器单元的输入数据的至少部分中所述二进制值当中的特定值的位数是否大于参考值,以生成指示所述决定的结果的决定数据;以及

写入侧输出部,其被配置为当决定所述位数大于所述参考值时,将至少部分被反转的所述输入数据作为写入数据与所述决定数据一起输出到所述存储器单元。

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

主机,其被配置为发布用于输入数据的写入过程的指令的写入命令;

存储器单元,其被配置为在所述写入过程中依次执行对二进制值中一个的重写和对所述二进制值中另一个的重写;

决定部,其被配置为决定在所述输入数据的至少一部分中所述二进制值当中的特定值的位数是否大于参考值,以生成指示所述决定的结果的决定数据;以及

写入侧输出部,其被配置为当决定所述位数大于所述参考值时,将至少一部分被反转的所述输入数据作为写入数据与所述决定数据一起输出到所述存储器单元。

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

通过决定部,决定在到存储器单元的输入数据的至少一部分中二进制值当中的特定值的位数是否大于参考值,以生成指示所述决定的结果的决定数据,所述存储器单元在写入过程中依次执行重写为所述二进制值之一以及重写为所述二进制值中的另一个;以及

当决定所述位数大于所述参考值时,通过写入侧输出部将至少部分被反转的所述输入数据作为写入数据与所述决定数据一起输出到所述存储器单元。

本技术包含与分别于2012年4月16日和2012年10月29日提交到日本专利局的日本优先权专利申请JP2012-092591和JP2012-237590中公开的主题相关的主题,其全部内容通过引用合并于此。

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