(57)【要約】【課題】状態遷移に伴う消費電流を考慮したメモリ書込み制御を行う。【解決手段】プレリード処理部は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出す。変換判定部は、プレリードデータからライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、第１の変換候補へ遷移させる場合の第１の値から第２の値への遷移ビット数および第２の値から第１の値への遷移ビット数の大きい方の値に基づいて何れの変換候補を選択すべきかを判定結果として生成する。【選択図】図１
2014026712.tif 000002
【特許請求の範囲】
【請求項１】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
【請求項２】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と、前記プレリードデータから前記ライトデータの第２の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方とを比較して、前記第１の変換候補または前記第２の変換候補の何れを選択すべきかについて前記比較対象の遷移ビット数が小さくなる方を判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
【請求項３】
前記変換判定部は、
前記プレリードデータと前記第１の変換候補および前記第２の変換候補とにおける前記第１の値から第２の値への遷移または前記第１の値から第２の値への遷移の組合せを対応するビット毎に検出する検出器と、
前記組合せの各々について検出されたビット数を計数するカウンタと、
前記第１の変換候補および前記第２の変換候補の各々について前記第１の値から前記第２の値への遷移ビット数と前記第２の値から前記第１の値への遷移ビット数とのうち大きい方を選択する選択器と、
前記第１の変換候補および前記第２の変換候補の各々について選択された遷移ビット数を比較して、前記第１の変換候補または前記第２の変換候補の何れかを選択すべきかについて前記比較対象の遷移ビット数が小さくなる方を前記判定結果とする比較器とを備える
請求項２記載の記憶制御装置。
【請求項４】
前記ライトデータおよび前記選択情報を保持するライトバッファをさらに具備し、
前記変換制御部は、前記判定結果に従って前記ライトバッファに保持されているライトデータを前記第１の変換候補または前記第２の変換候補の何れかに変換させるとともに何れに変換されたのかを前記選択情報として前記ライトバッファに保持させる
請求項２記載の記憶制御装置。
【請求項５】
前記第１の変換候補は前記ライトバッファと所定の値との排他的論理和演算により得られる値であり、前記第２の変換候補は前記ライトバッファと前記所定の値の反転値との排他的論理和演算により得られる値である請求項２記載の記憶制御装置。
【請求項６】
前記第１の変換候補は前記ライトバッファと所定の値との排他的論理和演算により得られる値に対して所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものであり、前記第２の変換候補は前記ライトバッファと前記所定の値の反転値との排他的論理和演算により得られる値に対して前記所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものである請求項２記載の記憶制御装置。
【請求項７】
前記第１の変換候補は前記ライトバッファと同じ値であり、前記第２の変換候補は前記ライトバッファの反転値である請求項２記載の記憶制御装置。
【請求項８】
前記第１の変換候補および前記第２の変換候補は、前記プレリードデータから前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と、前記プレリードデータから前記第２の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方との何れか一方は前記ライトデータの全ビット長の半分以下になるように決定される請求項２記載の記憶制御装置。
【請求項９】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と前記ライトデータの全ビット長の半分とを比較して、前記比較対象の遷移ビット数が前記ライトデータの全ビット長の半分よりも小さい場合には前記第１の変換候補を選択し、それ以外の場合には前記第２の変換候補を選択すべき旨を判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
【請求項１０】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、
前記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶装置。
【請求項１１】
前記メモリセルアレイは可変抵抗素子である請求項１０記載の記憶装置。
【請求項１２】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、
前記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と、
前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
【請求項１３】
ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理手順と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定手順と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、不揮発性メモリのための記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。このＤＲＡＭは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【０００３】
ＲｅＲＡＭは、可変抵抗素子を用いた不揮発性メモリであり、データの書込みに先立ってブロック単位で消去を行う必要がなく、必要ページのみを直接書き換えることが可能である。この点で、浮遊ゲートの電化蓄積量による閾値をデータとして記憶するＮＡＮＤフラッシュメモリ等とは異なっている。可変抵抗素子は、高抵抗状態（ＨＲＳ：High Resistive State）と低抵抗状態（ＬＲＳ：Low Resistive State）の２状態で１ビットの情報を記録することができる。ＲｅＲＡＭのような不揮発性メモリでは、書込みを行う前のデータが一旦プレリードされ、そのプレリードデータとライトデータとを比較することにより、必要なビットのみについて状態の遷移が行われる。この状態の遷移の際には消費電流が発生するため、なるべく遷移するビット数は小さい方が望ましい。そのため、例えば、書換えビット数が過半数の場合には書込みデータの各ビットを反転させるようにして、書換えビット数を抑制する半導体記憶システムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２３０７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、書換えビット数が過半数か否かによって書込みデータの反転または非反転を制御している。しかしながら、ＲｅＲＡＭのような不揮発性メモリでは、高抵抗状態から低抵抗状態への遷移と低抵抗状態から高抵抗状態への遷移とのそれぞれにおいて消費電流の上限が規定されており、単に遷移ビット数に着目しただけでは不十分となるおそれがある。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、状態遷移に伴う消費電流を考慮したメモリ書込み制御を行うことを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、上記プレリードデータから上記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、上記第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方の値に基づいて上記第１の変換候補または上記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、上記判定結果に応じて上記第１の変換候補または上記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部とを具備する記憶制御装置およびその方法である。これにより、ライトデータの一方の変換候補における消費電力のワーストケースに着目して、何れかの変換候補を選択して、選択情報として出力するという作用をもたらす。
【０００８】
また、本技術の第２の側面は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、上記プレリードデータから上記ライト処理の対象データとなるライトデータの第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方と、上記プレリードデータから上記ライトデータの第２の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方とを比較して、上記第１の変換候補または上記第２の変換候補の何れを選択すべきかについて上記比較対象の遷移ビット数が小さくなる方を判定結果として生成する変換判定部と、上記判定結果に応じて上記第１の変換候補または上記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部とを具備する記憶制御装置およびその方法である。これにより、ライトデータの第１の変換候補および第２の変換候補のそれぞれにおける消費電力のワーストケースに着目して、消費電力が少ない方を選択情報として出力するという作用をもたらす。
【０００９】
また、この第２の側面において、上記変換判定部は、上記プレリードデータと上記第１の変換候補および上記第２の変換候補とにおける上記第１の値から第２の値への遷移または上記第１の値から第２の値への遷移の組合せを対応するビット毎に検出する検出器と、上記組合せの各々について検出されたビット数を計数するカウンタと、上記第１の変換候補および上記第２の変換候補の各々について上記第１の値から上記第２の値への遷移ビット数と上記第２の値から上記第１の値への遷移ビット数とのうち大きい方を選択する選択器と、上記第１の変換候補および上記第２の変換候補の各々について選択された遷移ビット数を比較して、上記第１の変換候補または上記第２の変換候補の何れかを選択すべきかについて上記比較対象の遷移ビット数が小さくなる方を上記判定結果とする比較器とを備えるようにしてもよい。
【００１０】
また、この第２の側面において、上記ライトデータおよび上記選択情報を保持するライトバッファをさらに具備し、上記変換制御部は、上記判定結果に従って上記ライトバッファに保持されているライトデータを上記第１の変換候補または上記第２の変換候補の何れかに変換させるとともに何れに変換されたのかを上記選択情報として上記ライトバッファに保持させるようにしてもよい。
【００１１】
また、この第２の側面において、上記第１の変換候補は上記ライトバッファと所定の値との排他的論理和演算により得られる値であり、上記第２の変換候補は上記ライトバッファと上記所定の値の反転値との排他的論理和演算により得られる値であってもよい。
【００１２】
また、この第２の側面において、上記第１の変換候補は上記ライトバッファと所定の値との排他的論理和演算により得られる値に対して所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものであり、上記第２の変換候補は上記ライトバッファと上記所定の値の反転値との排他的論理和演算により得られる値に対して上記所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものであってもよい。
【００１３】
また、この第２の側面において、上記第１の変換候補は上記ライトバッファと同じ値であり、上記第２の変換候補は上記ライトバッファの反転値であってもよい。
【００１４】
また、この第２の側面において、上記第１の変換候補および上記第２の変換候補は、上記プレリードデータから上記第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方と、上記プレリードデータから上記第２の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方との何れか一方は上記ライトデータの全ビット長の半分以下になるように決定されてもよい。
【００１５】
また、本技術の第３の側面は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、上記プレリードデータから上記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、上記第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方と上記ライトデータの全ビット長の半分とを比較して、上記比較対象の遷移ビット数が上記ライトデータの全ビット長の半分よりも小さい場合には上記第１の変換候補を選択し、それ以外の場合には上記第２の変換候補を選択すべき旨を判定結果として生成する変換判定部と、上記判定結果に応じて上記第１の変換候補または上記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部とを具備する記憶制御装置およびその方法である。これにより、ライトデータの第１の変換候補および第２の変換候補のそれぞれにおける消費電力のワーストケースに着目して、消費電力が半分以下になる方を選択情報として出力するという作用をもたらす。
【００１６】
また、本技術の第４の側面は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、上記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、上記プレリードデータから上記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、上記第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方の値に基づいて上記第１の変換候補または上記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、上記判定結果に応じて上記第１の変換候補または上記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部とを具備する記憶装置およびその方法である。これにより、ライトデータの一方の変換候補における消費電力のワーストケースに着目して、何れかの変換候補を選択して、ライトデータを記憶するという作用をもたらす。
【００１７】
なお、この第４の側面において、上記メモリセルアレイは可変抵抗素子であってもよい。
【００１８】
また、本技術の第５の側面は、ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、上記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、上記プレリードデータから上記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、上記第１の変換候補へ遷移させる場合の上記第１の値から上記第２の値への遷移ビット数および上記第２の値から上記第１の値への遷移ビット数の大きい方の値に基づいて上記第１の変換候補または上記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、上記判定結果に応じて上記第１の変換候補または上記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と、上記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータとを具備する情報処理システムおよびその方法である。これにより、ライトコマンドが発行された際、ライトデータの一方の変換候補における消費電力のワーストケースに着目して、何れかの変換候補を選択して、ライトデータを記憶するという作用をもたらす。
【発明の効果】
【００１９】
本技術によれば、状態遷移に伴う消費電流を考慮したメモリ書込み制御を行うことができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２０】
【図１】本技術の実施の形態における情報処理システムの全体構成例を示す図である。
【図２】本技術の第１の実施の形態における不揮発性メモリ３００の構成例を示す図である。
【図３】可変抵抗素子のセット動作を説明するための図である。
【図４】可変抵抗素子のリセット動作を説明するための図である。
【図５】本技術の実施の形態における反転判定部３６０の一構成例を示す図である。
【図６】本技術の実施の形態における具体的な適用例を示す図である。
【図７】本技術の第１の実施の形態における不揮発性メモリ３００のライト処理手順の一例を示す流れ図である。
【図８】本技術の実施の形態における反転判定処理の処理手順の一例を示す流れ図の前半である。
【図９】本技術の実施の形態における反転判定処理の処理手順の一例を示す流れ図の後半である。
【図１０】本技術の第１の実施の形態における不揮発性メモリ３００のリード処理手順の一例を示す流れ図である。
【図１１】本技術の第２の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図１２】本技術の第２の実施の形態における不揮発性メモリ３００の構成例を示す図である。
【図１３】本技術の第２の実施の形態におけるメモリコントローラ２００のライト処理手順の一例を示す流れ図である。
【図１４】本技術の第２の実施の形態におけるメモリコントローラ２００のリード処理手順の一例を示す流れ図である。
【図１５】本技術の第３の実施の形態における不揮発性メモリ３００の構成例を示す図である。
【図１６】本技術の第３の実施の形態における変換判定部４６０の一構成例を示す図である。
【図１７】本技術の第３の実施の形態におけるライトデータ変換部６５０の一構成例を示す図である。
【図１８】本技術の第３の実施の形態におけるリードデータ変換部３８０の一構成例を示す図である。
【図１９】本技術の第３の実施の形態における変換候補の生成の際にテーブル索引を利用する例を示す図である。
【図２０】図１９の例の第１パターンにおけるセット対象およびリセット対象となるビット数をまとめたものである。
【図２１】図１９の例の第２パターンにおけるセット対象およびリセット対象となるビット数をまとめたものである。
【図２２】本技術の第３の実施の形態における逆変換の際にテーブル索引を利用する例を示す図である。
【図２３】本技術の第３の実施の形態における不揮発性メモリ３００のライト処理手順の一例を示す流れ図である。
【図２４】第３の実施の形態における変換判定処理（ステップＳ８２０）の処理手順の一例を示す流れ図の前半である。
【図２５】第３の実施の形態における変換判定処理（ステップＳ８２０）の処理手順の一例を示す流れ図の後半である。
【図２６】本技術の第３の実施の形態における不揮発性メモリ３００のリード処理手順の一例を示す流れ図である。
【図２７】本技術の第３の実施の形態における変換判定部４６０の変形例を示す図である。
【図２８】第３の実施の形態における変換判定処理（ステップＳ８２０）の処理手順の変形例を示す流れ図である。
【発明を実施するための形態】
【００２１】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（不揮発性メモリにおける反転制御の例）
２．第２の実施の形態（メモリコントローラにおける反転制御の例）
３．第３の実施の形態（不揮発性メモリにおける変換制御の例）
【００２２】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムは、プロセッサ１１０と、ＤＲＡＭ１２０と、不揮発性メモリ（ＮＶＭ）３００と、メモリコントローラ２００とを備えている。不揮発性メモリ３００およびメモリコントローラ２００は、メモリモジュール４００を構成する。メモリモジュール４００は、特許請求の範囲に記載の記憶装置の一例である。また、プロセッサ１１０は、特許請求の範囲に記載のホストコンピュータの一例である。
【００２３】
プロセッサ１１０は、各種プログラムを実行することにより情報処理を遂行する処理装置である。このプロセッサ１１０は、ＤＲＡＭ１２０における記憶領域をワーク領域として、データのロードまたはストアを繰り返すことによりプログラムを実行する。また、このプロセッサ１１０は、メモリコントローラ２００を介してＮＶＭ３００に記憶されている各データに対してアクセスを行う。
【００２４】
ＤＲＡＭ１２０は、プロセッサ１１０の主記憶装置として機能する揮発性のメモリである。このＤＲＡＭ１２０は、プロセッサ１１０におけるプログラムの実行に必要なデータを記憶する。
【００２５】
不揮発性メモリ３００は、プロセッサ１１０の補助記憶装置として機能する不揮発性のメモリである。この不揮発性メモリ３００は、メモリコントローラ２００の制御によりアクセスされる。この不揮発性メモリ３００は、フラッシュメモリにより構成されてもよく、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）により構成されてもよい。この不揮発性メモリ３００は、ＳｎＤ（Store and Download）モデルおよびＸＩＰ（eXecute In Plane）モデルの何れにも適用することができる。ＳｎＤモデルでは、不揮発性メモリ３００上のデータはＤＲＡＭ１２０を介してプロセッサ１１０からアクセスされる。したがって、不揮発性メモリ３００上のデータは一旦ＤＲＡＭ１２０に転送されることによりメモリ空間としてアクセス可能となる。一方、ＸＩＰモデルでは、不揮発性メモリ３００に記憶されているデータはそのままプロセッサ１１０のメモリ空間としてアクセス可能である。このＸＩＰモデルの場合、ＤＲＡＭ１２０の役割を不揮発性メモリ３００に持たせ、ＤＲＡＭ１２０自体を省いて構成してもよい。
【００２６】
メモリコントローラ２００は、不揮発性メモリ３００を制御するものであり、プロセッサ１１０と不揮発性メモリ３００とを接続する。このメモリコントローラ２００は不揮発性メモリ３００との間でデータ転送するためのデータバッファを備える。このデータバッファはメモリコントローラ２００の外付けメモリデバイスとして実現してもよく、また、内蔵メモリとして実現してもよい。なお、メモリコントローラ２００は、特許請求の範囲に記載の記憶制御装置の一例である。
【００２７】
［不揮発性メモリの構成］
図２は、本技術の第１の実施の形態における不揮発性メモリ３００の構成例を示す図である。この不揮発性メモリ３００は、メモリセルアレイ３１０と、制御部３２０と、ライトバッファ３３０と、リードバッファ３４０と、論理評価部３５０と、反転判定部３６０と、反転制御部３７０と、外部インターフェース（Ｉ／Ｆ）３９０とを備えている。
【００２８】
メモリセルアレイ３１０は、ビット毎に所定の状態を保持するメモリセルアレイを格子状に並べたものである。メモリセルアレイ３１０のメモリセルアレイは可変抵抗素子により構成される抵抗変化型メモリである。可変抵抗素子は、高抵抗状態（ＨＲＳ：High Resistive State）と低抵抗状態（ＬＲＳ：Low Resistive State）の２状態で１ビットの情報を記録することができる。各抵抗状態で「０」または「１」の何れの状態に対応させるかは任意であるが、以下ではＨＲＳの論理状態を「１」、ＬＲＳの論理状態を「０」として説明する。
【００２９】
メモリセルアレイ３１０は複数のページから構成される。各ページ内には、データ３１１および反転フラグ３１２が記憶される。データ３１１は、１ワード分のデータとして例えば３２ビットのデータを想定する。反転フラグ３１２は、対応するデータ３１１がメモリセルアレイ３１０内で反転された状態で記憶されているか否かを示す。この反転フラグ３１２についても、「０」または「１」の何れの状態に対応させるかは任意である。例えば、データ３１１が反転されていない状態で記憶されていれば反転フラグ３１２は「０」にクリアされ、データ３１１が反転された状態で記憶されていれば反転フラグ３１２は「１」にアサートされるものとすることができる。この反転フラグ３１２は、特許請求の範囲に記載の選択情報の一例である。なお、この反転フラグ３１２は、論理的には１つのデータ３１１に対応して１ビットの反転フラグ３１２があれば足りるが、信頼度を向上させるために複数ビットを備えるようにしてもよい。
【００３０】
制御部３２０は、不揮発性メモリ３００内の各ブロックを制御するコントローラである。この制御部３２０は、信号線３９９を介して外部Ｉ／Ｆ３９０からコマンドおよびアドレスを受け取り、信号線３２９によってメモリセルアレイ３１０に制御信号を出力する。
【００３１】
ライトバッファ３３０は、メモリセルアレイ３１０に対するライトデータを保持するバッファである。このライトバッファ３３０は、信号線３９８を介して外部Ｉ／Ｆ３９０からライトデータを受け取り、信号線３３９を介してメモリセルアレイ３１０にライトデータを出力する。このライトバッファ３３０に保持されているライトデータは信号線３３５を介して論理評価部３５０および反転判定部３６０に供給される。このライトバッファ３３０は、データ自体に加えて、メモリセルアレイ３１０と同様に反転フラグを保持する。反転制御部３７０からの指示により、ライトバッファ３３０は保持しているライトデータを反転させるとともに、その反転フラグを例えば「１」にアサートする。
【００３２】
リードバッファ３４０は、メモリセルアレイ３１０から読み出されたリードデータを保持するバッファである。このリードバッファ３４０は、信号線３１９を介してメモリセルアレイ３１０からリードデータを受け取り、信号線３４９を介して外部Ｉ／Ｆ３９０にリードデータを出力する。このリードバッファ３４０に保持されているリードデータは信号線３４５を介して論理評価部３５０および反転判定部３６０に供給される。このリードバッファ３４０は、データ自体に加えて、メモリセルアレイ３１０と同様に反転フラグを保持する。反転制御部３７０からの指示により、リードバッファ３４０は保持しているリードデータを反転させるとともに、その反転フラグを「１」にアサートする。ただし、この反転動作は、プレリードの際には行われない。なお、リードバッファ３４０は、特許請求の範囲に記載のプレリード処理部の一例である。
【００３３】
論理評価部３５０は、リードバッファ３４０に保持されているリードデータとライトバッファ３３０に保持されているライトデータとを比較することにより、メモリセルアレイ３１０に対するセットパターンおよびリセットパターンを生成するものである。ライトバッファ３３０に保持されているライトデータはライト処理の対象となるデータである。リードバッファ３４０に保持されているリードデータは、ライトアドレスに記憶されていたデータをライト処理に先立って読み出したプレリードデータである。セットパターンは、データにおける各ビットについて、ＨＲＳからＬＲＳに遷移させるビットのみを例えば「１」にセットしたビットパターンである。リセットパターンは、データにおける各ビットについて、ＬＲＳからＨＲＳに遷移させるビットのみを例えば「１」にセットしたビットパターンである。
【００３４】
反転判定部３６０は、リードバッファ３４０に保持されているリードデータとライトバッファ３３０に保持されているライトデータとを比較することにより、ライトバッファ３３０に保持されているライトデータを反転すべきか否かを判定するものである。この反転判定部３６０による判定結果は、信号線３６９を介して反転制御部３７０に出力される。なお、この反転判定部３６０は、特許請求の範囲に記載の変換判定部の一例である。この反転判定部３６０における処理内容については後述する。
【００３５】
反転制御部３７０は、反転判定部３６０による判定結果に従って、ライトバッファ３３０またはリードバッファ３４０に対して、保持しているデータを反転させるように信号線３７９を介して指示する。なお、反転制御部３７０は、特許請求の範囲に記載の反転制御部または変換制御部の一例である。
【００３６】
外部Ｉ／Ｆ３９０は、メモリコントローラ２００との間のやりとりを行うためのインターフェースである。
【００３７】
［可変抵抗素子の状態遷移］
図３は、可変抵抗素子のセット動作を説明するための図である。上述のように、可変抵抗素子は高抵抗状態（ＨＲＳ）および低抵抗状態（ＬＲＳ）の２状態の何れかの状態となる。横軸を抵抗値、縦軸を相対的な累積ビット数とすると、抵抗値の低い部分と高い部分に分布が分かれる。抵抗値の低い部分がＬＲＳ、抵抗値の高い部分をＨＲＳである。この図のように、ＨＲＳからＬＲＳに状態を遷移させる動作をセット動作という。この場合、セット動作を行った後に、そのセット動作が正常に完了したか否かを検証するためには、両分布の中央よりも低抵抗側に設けられたセット検証閾値Ｒ＿ｖｅｒｉｆｙ（ｓｅｔ）が用いられる。この検証に失敗した場合には、再度セット動作が試みられる。
【００３８】
図４は、可変抵抗素子のリセット動作を説明するための図である。この図のように、ＬＲＳからＨＲＳに状態を遷移させる動作をリセット動作という。この場合、リセット動作を行った後に、そのリセット動作が正常に完了したか否かを検証するためには、両分布の中央よりも高抵抗側に設けられたリセット検証閾値Ｒ＿ｖｅｒｉｆｙ（ｒｅｓｅｔ）が用いられる。この検証に失敗した場合には、再度リセット動作が試みられる。
【００３９】
［反転判定部の構成］
図５は、本技術の実施の形態における反転判定部３６０の一構成例を示す図である。この反転判定部３６０には、リードバッファ３４０に保持されているリードデータ（プレリードデータ）が信号線３４５を介して入力され、ライトバッファ３３０に保持されているライトデータが信号線３３５を介して入力される。ここでは、プレリードデータおよびライトデータの対応するビットがそれぞれ１ビットずつ順に入力されることを想定している。ただし、複数ビットを並列に入力して、まとめてカウントするようにしてもよい。例えば、３２ビットのライトデータと３２ビットのプレリードデータをまとめて入力して３２ビットのパターンを生成し、そのうち「１」となっているビットをカウントするようにしてもよい。この反転判定部３６０は、論理ゲート６１１乃至６１４と、カウンタ６２１乃至６２４と、選択器６３１および６３２と、比較器６４１とを備えている。なお、論理ゲート６１１乃至６１４は、特許請求の範囲に記載の検出器の一例である。
【００４０】
論理ゲート６１１は、プレリードデータからライトデータへの遷移が「１」から「０」、すなわちライトデータ非反転時のセット対象となるビットを検出するものである。カウンタ６２１は、論理ゲート６１１により検出されたビット数を計数するものである。このカウンタ６２１により計数された値ｎ１０は、非反転時のセット対象となるビット数を表す。
【００４１】
論理ゲート６１２は、プレリードデータからライトデータへの遷移が「０」から「１」、すなわちライトデータ非反転時のリセット対象となるビットを検出するものである。カウンタ６２２は、論理ゲート６１２により検出されたビット数を計数するものである。このカウンタ６２２により計数された値ｎ０１は、非反転時のリセット対象となるビット数を表す。
【００４２】
論理ゲート６１３は、プレリードデータからライトデータへの遷移が「１」から「１」、すなわちライトデータ反転時のセット対象となるビットを検出するものである。カウンタ６２３は、論理ゲート６１３により検出されたビット数を計数するものである。このカウンタ６２３により計数された値ｎ１１は、反転時のセット対象となるビット数を表す。
【００４３】
論理ゲート６１４は、プレリードデータからライトデータへの遷移が「０」から「０」、すなわちライトデータ反転時のリセット対象となるビットを検出するものである。カウンタ６２４は、論理ゲート６１４により検出されたビット数を計数するものである。このカウンタ６２４により計数された値ｎ００は、反転時のリセット対象となるビット数を表す。
【００４４】
選択器６３１は、カウンタ６２１の出力ｎ１０とカウンタ６２２の出力ｎ０１のうち、値が大きい方を選択するものである。すなわち、この選択器６３１は、ライトデータ非反転時のセットのための遷移ビット数とリセットのための遷移ビット数のうち、ビット数の多い方を出力する。
【００４５】
選択器６３２は、カウンタ６２３の出力ｎ１１とカウンタ６２４の出力ｎ００のうち、値が大きい方を選択するものである。すなわち、この選択器６３２は、ライトデータ反転時のセットのための遷移ビット数とリセットのための遷移ビット数のうち、ビット数の多い方を出力する。
【００４６】
比較器６４１は、選択器６３１の出力と選択器６３２の出力とを比較して、小さい方を判定結果として信号線３６９を介して出力するものである。すなわち、この比較器６４１は、選択器６３１の出力の方が小さい場合にはライトデータを反転すべきでない旨を判定結果とし、選択器６３２の出力の方が小さい場合にはライトデータを反転すべき旨を判定結果とする。両者の出力が等しい場合には何れを判定結果としてもよい。
【００４７】
［具体例］
図６は、本技術の実施の形態における具体的な適用例を示す図である。プレリードデータとして「０ｘＦＦＦＦＦＣ００」（「０ｘ」は、それに続く数字が１６進数であることを意味する。以下同様）、ライトデータとして「０ｘＦＦ８００２００」が与えられた例を想定する。
【００４８】
ここで、３２ビットのうちの対応するビットをそれぞれ比較すると、ライトデータ非反転時およびライトデータ反転時のそれぞれについて、セットパターンおよびリセットパターンが得られる。すなわち、論理ゲート６１１の出力としてライトデータ非反転時のセットパターンが得られ、論理ゲート６１２の出力としてライトデータ非反転時のリセットパターンが得られる。また、論理ゲート６１３の出力としてライトデータ反転時のセットパターンが得られ、論理ゲート６１４の出力としてライトデータ反転時のリセットパターンが得られる。
【００４９】
その結果、この例では、非反転時のセットの遷移ビット数ｎ１０は「１３」、非反転時のリセットの遷移ビット数ｎ０１は「１」、反転時のセットの遷移ビット数ｎ１１は「９」、反転時のリセットの遷移ビット数ｎ００は「９」となる。
【００５０】
ライトデータ非反転時には、セットの遷移ビット数ｎ１０の方が大きいため、選択器６３１は「１３」を選択する。ライトデータ反転時には、両者の遷移ビット数が等しいため、選択器６３２は「９」を選択する。この場合、選択器６３２からの出力の方が小さいため、比較器６４１はライトデータを反転すべき旨を判定結果とする。
【００５１】
ちなみに、もし従来技術のようにセットとリセットを区別することなく遷移ビット数を比較した場合、非反転時の遷移ビット数の合計は「１４」、反転時の遷移ビット数の合計は「１８」となるため、ライトデータを反転すべきでない旨の判定がされてしまう。これに対し、本技術の実施の形態では、セットとリセットを区別して遷移ビット数を判断するため、状態遷移に伴う消費電流を考慮して適切な判定を行うことができる。
【００５２】
［不揮発性メモリの動作］
図７は、本技術の第１の実施の形態における不揮発性メモリ３００のライト処理手順の一例を示す流れ図である。
【００５３】
プロセッサ１１０からライトコマンドが発行されると、ライトバッファ３３０にライトデータが保持される（ステップＳ９１１）。また、ライトアドレスが示すメモリセルアレイ３１０のページからリードデータおよび反転フラグがプレリードデータとして読み出されて、リードバッファ３４０に保持される（ステップＳ９１２）。なお、これらライトデータの取得およびプレリード処理は逆の順序で行ってもよい。
【００５４】
反転判定部３６０は、ライトバッファ３３０に保持されたライトデータとリードバッファ３４０に保持されたプレリードデータとから、ライトバッファ３３０のライトデータを反転すべきか否かを判定する（ステップＳ９２０）。その結果、反転すべき旨の判定がされた場合には（ステップＳ９１３：Ｙｅｓ）、ライトバッファ３３０においてライトデータが反転されるとともに、その反転フラグがアサートされる（ステップＳ９１４）。この場合、論理評価部３５０では、反転時のセットパターンおよびリセットパターンが生成される（ステップＳ９１５）。一方、反転すべきでない旨の判定がされた場合には（ステップＳ９１３：Ｎｏ）、ライトデータの反転はされずに、その反転フラグはクリアされる（ステップＳ９１６）。この場合、論理評価部３５０では、非反転時のセットパターンおよびリセットパターンが生成される（ステップＳ９１７）。
【００５５】
なお、反転時のセットパターンおよびリセットパターンは、ステップＳ９１５で生成せずに、ステップＳ９２０における後述の図９のステップＳ９３２で生成したものを使用してもよい。また、非反転時のセットパターンおよびリセットパターンは、ステップＳ９１７で生成せずに、ステップＳ９２０における後述の図８のステップＳ９２２で生成したものを使用してもよい。
【００５６】
その後、生成されたセットパターンに従って、ＨＲＳからＬＲＳに状態を遷移させるセット動作が行われる（ステップＳ９１８）。そして、生成されたリセットパターンに従って、ＬＲＳからＨＲＳに状態を遷移させるリセット動作が行われる（ステップＳ９１９）。なお、これらセット動作およびリセット動作は逆の順序で行ってもよい。
【００５７】
図８および図９は、本技術の実施の形態における反転判定処理（ステップＳ９２０）の処理手順の一例を示す流れ図である。
【００５８】
論理ゲート６１１および６１２において、非反転のライトデータおよびプレリードデータが比較され（ステップＳ９２１）、それぞれライトデータ非反転時のセットパターンおよびリセットパターンが生成される（ステップＳ９２２）。そして、カウンタ６２１および６２２において、それぞれライトデータ非反転時のセット対象のビット数ｎ１０およびリセット対象のビット数ｎ０１が計数される（ステップＳ９２３）。
【００５９】
その結果、ライトデータ非反転時において、セット対象のビット数ｎ１０がリセット対象のビット数ｎ０１よりも大きい場合には（ステップＳ９２４：Ｙｅｓ）、選択器６３１はセット対象のビット数ｎ１０を出力値Ｎ＿ｎｏｎ＿ｉｎｖとする（ステップＳ９２５）。一方、セット対象のビット数ｎ１０がリセット対象のビット数ｎ０１よりも大きくない場合には（ステップＳ９２４：Ｎｏ）、選択器６３１はリセット対象のビット数ｎ０１を出力値Ｎ＿ｎｏｎ＿ｉｎｖとする（ステップＳ９２６）。
【００６０】
論理ゲート６１３および６１４において、反転されたライトデータおよびプレリードデータが比較され（ステップＳ９３１）、それぞれライトデータ反転時のセットパターンおよびリセットパターンが生成される（ステップＳ９３２）。そして、カウンタ６２３および６２４において、それぞれライトデータ反転時のセット対象のビット数ｎ１１およびリセット対象のビット数ｎ００が計数される（ステップＳ９３３）。
【００６１】
その結果、ライトデータ反転時において、セット対象のビット数ｎ１１がリセット対象のビット数ｎ００よりも大きい場合には（ステップＳ９３４：Ｙｅｓ）、選択器６３２はセット対象のビット数ｎ１１を出力値Ｎ＿ｉｎｖとする（ステップＳ９３５）。一方、セット対象のビット数ｎ１１がリセット対象のビット数ｎ００よりも大きくない場合には（ステップＳ９３４：Ｎｏ）、選択器６３２はリセット対象のビット数ｎ００を出力値Ｎ＿ｉｎｖとする（ステップＳ９３６）。
【００６２】
なお、ステップＳ９２１乃至Ｓ９２６の処理とステップＳ９３１乃至Ｓ９３６の処理とは、互いに逆の順序で行ってもよく、また、図５に示したように同時並行に行ってもよい。
【００６３】
比較器６４１は、選択器６３１の出力値Ｎ＿ｎｏｎ＿ｉｎｖと選択器６３２の出力値Ｎ＿ｉｎｖとを比較して、出力値Ｎ＿ｎｏｎ＿ｉｎｖの方が大きい場合には（ステップＳ９３７：Ｙｅｓ）、ライトデータを反転すべき旨の判定をする（ステップＳ９３８）。一方、出力値Ｎ＿ｎｏｎ＿ｉｎｖの方が大きくない場合には（ステップＳ９３７：Ｎｏ）、ライトデータを反転すべきでない旨の判定をする（ステップＳ９３９）。
【００６４】
図１０は、本技術の第１の実施の形態における不揮発性メモリ３００のリード処理手順の一例を示す流れ図である。
【００６５】
プロセッサ１１０からリードコマンドが発行されると、リードアドレスが示すメモリセルアレイ３１０のページからリードデータおよび反転フラグが読み出されて、リードバッファ３４０に保持される（ステップＳ９４１）。このとき、リードバッファ３４０における反転フラグがアサートされていた場合には（ステップＳ９４２：Ｙｅｓ）、リードバッファ３４０においてリードデータは反転される（ステップＳ９４３）。反転フラグがアサートされていなかった場合には（ステップＳ９４２：Ｎｏ）、リードデータはそのまま反転されない。そして、このリードバッファ３４０に保持されたリードデータは、プロセッサ１１０へ出力される（ステップＳ９４４）。
【００６６】
このように、本技術の第１の実施の形態によれば、セットとリセットを区別して遷移ビット数を判断することにより、ライトデータの反転を行うべきか否かについて、状態遷移に伴う消費電流を考慮して適切な判定を行うことができる。このような判定を行うことにより、Ｎビットのデータに対してセットおよびリセットを行うビット数は、ワーストケースでそれぞれＮ／２ビットに抑えることができる。換言すれば、従来と同じワーストケースの消費電力で考えた場合、同じ時間で２倍のサイズのデータアクセスを行うことができ、アクセス速度を２倍にすることができる。
【００６７】
＜２．第２の実施の形態＞
上述の第１の実施の形態では不揮発性メモリ３００の内部で反転判定および反転制御を行っていたが、この第２の実施の形態ではメモリコントローラ２００において反転判定および反転制御を行う。情報処理システムの全体構成としては、図１により説明したものと同様である。
【００６８】
［メモリコントローラの構成］
図１１は、本技術の第２の実施の形態におけるメモリコントローラ２００の構成例を示す図である。この第２の実施の形態におけるメモリコントローラ２００は、制御部２２０と、ライトバッファ２３０と、リードバッファ２４０と、反転判定部２６０と、反転制御部２７０と、メモリＩ／Ｆ２８０と、システムＩ／Ｆ２９０とを備える。
【００６９】
制御部２２０は、メモリコントローラ２００内の各ブロックを制御するコントローラである。この制御部２２０は、信号線２９９を介してシステムＩ／Ｆ２９０からコマンドおよびアドレスを受け取り、信号線２２９によってメモリＩ／Ｆ２８０に制御信号を出力する。
【００７０】
ライトバッファ２３０は、メモリセルアレイ３１０に対するライトデータを保持するバッファである。このライトバッファ２３０は、信号線２９８を介してシステムＩ／Ｆ２９０からライトデータを受け取り、信号線２３９を介してメモリＩ／Ｆ２８０にライトデータを出力する。このライトバッファ２３０に保持されているライトデータは信号線２３５を介して反転判定部３６０に供給される。このライトバッファ２３０は、データ自体に加えて、メモリセルアレイ３１０と同様に反転フラグを保持する。反転制御部２７０からの指示により、ライトバッファ２３０は保持しているライトデータを反転させるとともに、その反転フラグを例えば「１」にアサートする。
【００７１】
リードバッファ２４０は、メモリセルアレイ３１０から読み出されたリードデータを保持するバッファである。このリードバッファ２４０は、信号線２１９を介してメモリＩ／Ｆ２８０からリードデータを受け取り、信号線２４９を介してシステムＩ／Ｆ２９０にリードデータを出力する。このリードバッファ２４０に保持されているリードデータは信号線２４５を介して反転判定部３６０に供給される。このリードバッファ２４０は、データ自体に加えて、メモリセルアレイ３１０と同様に反転フラグを保持する。反転制御部２７０からの指示により、リードバッファ２４０は保持しているリードデータを反転させるとともに、その反転フラグを「１」にアサートする。ただし、この反転動作は、プレリードの際には行われない。なお、リードバッファ２４０は、特許請求の範囲に記載のプレリード処理部の一例である。
【００７２】
反転判定部２６０は、リードバッファ２４０に保持されているリードデータとライトバッファ２３０に保持されているライトデータとを比較することにより、ライトバッファ２３０に保持されているライトデータを反転すべきか否かを判定するものである。この反転判定部２６０による判定結果は、信号線２６９を介して反転制御部２７０に出力される。この反転判定部２６０における処理内容は、第１の実施の形態において説明した反転判定部３６０と同様である。
【００７３】
反転制御部２７０は、反転判定部２６０による判定結果に従って、ライトバッファ２３０またはリードバッファ２４０に対して、保持しているデータを反転させるように信号線２７９を介して指示する。
【００７４】
メモリＩ／Ｆ２８０は、メモリセルアレイ３１０との間のやりとりを行うためのインターフェースである。システムＩ／Ｆ２９０は、プロセッサ１１０との間のやりとりを行うためのインターフェースである。
【００７５】
［不揮発性メモリの構成］
図１２は、本技術の第２の実施の形態における不揮発性メモリ３００の構成例を示す図である。この第２の実施の形態における不揮発性メモリ３００は、第１の実施の形態から反転判定部３６０および反転制御部３７０を除いたものに相当する。したがって、ライトバッファ２３０またはリードバッファ２４０において、データの反転動作は行われない。ただし、メモリコントローラ２００において反転動作が行われるため、この第２の実施の形態においてもメモリセルアレイ３１０に反転フラグ３１２は記憶される。
【００７６】
［不揮発性メモリの動作］
図１３は、本技術の第２の実施の形態におけるメモリコントローラ２００のライト処理手順の一例を示す流れ図である。
【００７７】
プロセッサ１１０からライトコマンドが発行されると、ライトバッファ２３０にライトデータが保持される（ステップＳ９５１）。また、不揮発性メモリ３００のライトアドレスが示すメモリセルアレイ３１０のページに対してリードリクエストを発行することにより、リードデータおよび反転フラグがプレリードデータとして読み出されて、リードバッファ２４０に保持される（ステップＳ９５２）。このとき、リードバッファ２４０における反転フラグがアサートされていた場合には、リードデータは反転される。なお、これらライトデータの取得およびプレリード処理は逆の順序で行ってもよい。
【００７８】
反転判定部２６０は、ライトバッファ２３０に保持されたライトデータとリードバッファ２４０に保持されたプレリードデータとから、ライトバッファ２３０のライトデータを反転すべきか否かを判定する（ステップＳ９５３）。なお、このステップＳ９５３における処理は、第１の実施の形態において説明した図８および図９の処理と同様である。
【００７９】
その結果、反転すべき旨の判定がされた場合には（ステップＳ９５４：Ｙｅｓ）、ライトバッファ２３０においてライトデータが反転されるとともに（ステップＳ９５５）、その反転フラグがアサートされる（ステップＳ９５６）。なお、ステップＳ９５５とステップＳ９５６の順序は逆であってもよい。一方、反転すべきでない旨の判定がされた場合には（ステップＳ９５４：Ｎｏ）、ライトデータの反転はされずに、その反転フラグはクリアされる（ステップＳ９５７）。
【００８０】
その後、メモリコントローラ２００は、ライトバッファ２３０に保持されたライトデータについて、不揮発性メモリ３００のライトアドレスが示すメモリセルアレイ３１０のページに対してライトリクエストを発行する（ステップＳ９５８）。
【００８１】
図１４は、本技術の第２の実施の形態におけるメモリコントローラ２００のリード処理手順の一例を示す流れ図である。
【００８２】
プロセッサ１１０からリードコマンドが発行されると、メモリコントローラ２００は、不揮発性メモリ３００のリードアドレスが示すメモリセルアレイ３１０のページに対してリードリクエストを発行する（ステップＳ９６１）。その結果、リードバッファ２４０にリードデータが保持されると、その反転フラグがアサートされている場合には（ステップＳ９６２：Ｙｅｓ）、リードバッファ２４０においてリードデータは反転される（ステップＳ９６３）。反転フラグがアサートされていなかった場合には（ステップＳ９６２：Ｎｏ）、リードデータはそのまま反転されない。そして、このリードバッファ２４０に保持されたリードデータは、プロセッサ１１０へ出力される（ステップＳ９６４）。
【００８３】
このように、本技術の第２の実施の形態によれば、上述のセットとリセットを区別した反転判定に基づく反転動作を、不揮発性メモリ３００の外部において行うことができる。
【００８４】
＜３．第３の実施の形態＞
上述の第１の実施の形態ではライトデータを反転したものと反転しないものの何れを書き込むかを判定していたが、この第３の実施の形態ではこれを一般化して、２つの候補のうち何れを書き込むかを判定する。なお、情報処理システムの全体構成としては、図１により説明したものと同様である。
【００８５】
［不揮発性メモリの構成］
図１５は、本技術の第３の実施の形態における不揮発性メモリ３００の構成例を示す図である。この不揮発性メモリ３００は、メモリセルアレイ３１０と、制御部３２０と、ライトバッファ３３０と、リードバッファ３４０と、論理評価部３５０と、変換判定部４６０と、変換制御部４７０と、外部インターフェース（Ｉ／Ｆ）３９０とを備えている。基本的な構成は第１の実施の形態と同様であるが、以下に説明するように、２通りの変換の何れかを施してメモリセルアレイ３１０に書込みを行う点で異なっている。以下では、２通りの変換のうち、一方を「候補０」、他方を「候補１」と称する。なお、候補０および候補１は、それぞれ特許請求の範囲に記載のライトデータの第１の変換候補および第２の変換候補の一例である。
【００８６】
メモリセルアレイ３１０は複数のページから構成される。各ページ内には、データ３１１および選択フラグ３１３が記憶される。データ３１１は、１ワード分のデータとして例えば３２ビットのデータを想定する。選択フラグ３１３は、対応するデータ３１１がメモリセルアレイ３１０内で２通りの変換の何れが選択された状態で記憶されているかを示す。この選択フラグ３１３については、データ３１１と同様に、「０」または「１」の何れの状態に対応させるかは任意である。例えば、データ３１１が候補０の変換で記憶されていれば選択フラグ３１３は「０」にクリアされ、データ３１１が候補１の変換で記憶されていれば選択フラグ３１３は「１」にアサートされるものとすることができる。この選択フラグ３１３は、特許請求の範囲に記載の選択情報の一例である。なお、この選択フラグ３１３は、論理的には１つのデータ３１１に対応して１ビットの選択フラグ３１３があれば足りるが、信頼度を向上させるために複数ビットを備えるようにしてもよい。
【００８７】
ライトバッファ３３０は、データ自体に加えて、メモリセルアレイ３１０と同様に選択フラグを保持する。変換制御部４７０からの指示により、ライトバッファ３３０は保持しているライトデータに対して２通りの変換のうち選択された方の変換を施すとともに、その状態に合わせて選択フラグを決定する。
【００８８】
リードバッファ３４０は、データ自体に加えて、メモリセルアレイ３１０と同様に選択フラグを保持する。変換制御部４７０からの指示により、リードバッファ３４０は保持しているリードデータに対して２通りの変換のうち選択された方の変換の逆変換を施す。ただし、この逆変換は、プレリードの際には行われない。なお、リードバッファ３４０は、特許請求の範囲に記載のプレリード処理部の一例である。
【００８９】
変換判定部４６０は、リードバッファ３４０に保持されているリードデータとライトバッファ３３０に保持されているライトデータとを比較することにより、ライトバッファ３３０に保持されているライトデータに対して２通りの変換のうち何れを施すべきかを判定するものである。この変換判定部４６０による判定結果は、信号線４６９を介して変換制御部４７０に出力される。なお、この変換判定部４６０における処理内容については後述する。
【００９０】
変換制御部４７０は、変換判定部４６０による判定結果に従って、ライトバッファ３３０またはリードバッファ３４０に、保持しているデータに対して２通りの変換のうち何れを施すかを、信号線４７９を介して指示する。
【００９１】
［変換判定部の構成］
図１６は、本技術の第３の実施の形態における変換判定部４６０の一構成例を示す図である。この変換判定部４６０には、リードバッファ３４０に保持されているリードデータ（プレリードデータ）が信号線３４５を介して入力され、ライトバッファ３３０に保持されているライトデータが信号線３３５を介して入力される。ここでは、プレリードデータおよびライトデータの対応するビットがそれぞれ１ビットずつ順に入力されることを想定している。ただし、複数ビットを並列に入力して、まとめてカウントするようにしてもよい。例えば、３２ビットのライトデータと３２ビットのプレリードデータをまとめて入力して３２ビットのパターンを生成し、そのうち「１」となっているビットをカウントするようにしてもよい。この変換判定部４６０は、ライトデータ変換部６５０と、論理ゲート６６１乃至６６４と、カウンタ６７１乃至６７４と、選択器６８１および６８２と、比較器６９１とを備えている。なお、論理ゲート６６１乃至６６４は、特許請求の範囲に記載の検出器の一例である。
【００９２】
ライトデータ変換部６５０は、信号線３３５を介して入力されたライトデータに対して、２通りの変換を行うものである。ここでは、候補０の変換を施されたデータをｗｄａｔａ０、候補１の変換を施されたデータをｗｄａｔａ１として表している。候補０および候補１の具体例については後述する。
【００９３】
論理ゲート６６１は、プレリードデータからライトデータの候補０への遷移が「１」から「０」、すなわちライトデータを候補０に変換した時のセット対象となるビットを検出するものである。カウンタ６７１は、論理ゲート６６１により検出されたビット数を計数するものである。このカウンタ６７１により計数された値ｍ１０は、ライトデータを候補０に変換した時のセット対象となるビット数を表す。
【００９４】
論理ゲート６６２は、プレリードデータからライトデータの候補０への遷移が「０」から「１」、すなわちライトデータを候補０に変換した時のリセット対象となるビットを検出するものである。カウンタ６７２は、論理ゲート６６２により検出されたビット数を計数するものである。このカウンタ６２２により計数された値ｍ０１は、ライトデータを候補０に変換した時のリセット対象となるビット数を表す。
【００９５】
論理ゲート６６３は、プレリードデータからライトデータの候補１への遷移が「１」から「０」、すなわちライトデータを候補１に変換した時のセット対象となるビットを検出するものである。カウンタ６７３は、論理ゲート６６３により検出されたビット数を計数するものである。このカウンタ６７３により計数された値ｍ１１は、ライトデータを候補１に変換した時のセット対象となるビット数を表す。
【００９６】
論理ゲート６６４は、プレリードデータからライトデータの候補１への遷移が「０」から「１」、すなわちライトデータを候補１に変換した時のリセット対象となるビットを検出するものである。カウンタ６７４は、論理ゲート６６４により検出されたビット数を計数するものである。このカウンタ６７４により計数された値ｍ００は、ライトデータを候補１に変換した時のリセット対象となるビット数を表す。
【００９７】
選択器６８１は、カウンタ６７１の出力ｍ１０とカウンタ６７２の出力ｍ０１のうち、値が大きい方を選択するものである。すなわち、この選択器６８１は、ライトデータを候補０に変換した時のセットのための遷移ビット数とリセットのための遷移ビット数のうち、ビット数の多い方を出力する。
【００９８】
選択器６８２は、カウンタ６７３の出力ｍ１１とカウンタ６７４の出力ｍ００のうち、値が大きい方を選択するものである。すなわち、この選択器６８２は、ライトデータを候補１に変換した時のセットのための遷移ビット数とリセットのための遷移ビット数のうち、ビット数の多い方を出力する。
【００９９】
比較器６９１は、選択器６８１の出力と選択器６８２の出力とを比較して、小さい方を判定結果として信号線４６９を介して出力するものである。すなわち、この比較器６９１は、選択器６８１の出力の方が小さい場合にはライトデータを候補０に変換すべき旨を判定結果とし、選択器６８２の出力の方が小さい場合にはライトデータを候補１に変換すべき旨を判定結果とする。両者の出力が等しい場合には何れを判定結果としてもよい。
【０１００】
図１７は、本技術の第３の実施の形態におけるライトデータ変換部６５０の一構成例を示す図である。このライトデータ変換部６５０は、変換判定部４６０に設けられるものを想定しているが、同様のものはライトバッファ３３０においても利用される。
【０１０１】
このライトデータ変換部６５０は、信号線３３５を介してライトバッファ３３０から入力されたライトデータＷＤＡＴＡから、変換の候補０の値ｗｄａｔａ０および変換の候補１の値ｗｄａｔａ１を生成するものである。この例では、候補０の値ｗｄａｔａ０として、ライトデータＷＤＡＴＡと固定値Ｘとの排他的論理和を生成するものとしている。そのため、ライトデータ変換部６５０は、排他的論理和ゲート６５２を備え、排他的論理和ゲート６５２によってライトデータＷＤＡＴＡと固定値Ｘとの排他的論理和を生成する。また、候補１の値ｗｄａｔａ１として、ライトデータＷＤＡＴＡと固定値Ｘの反転値との排他的論理和を生成するものとしている。そのため、ライトデータ変換部６５０は、反転ゲート６５１および排他的論理和ゲート６５３を備え、固定値Ｘを反転ゲート６５１によって反転した後、排他的論理和ゲート６５３によってライトデータＷＤＡＴＡと固定値Ｘの反転値との排他的論理和を生成する。なお、この例において固定値Ｘを全ビット「０」とした場合には、第１の実施形態と同じ結果が得られる。すなわち、候補０がライトデータそのもの（非反転）であり、候補１がライトデータを反転したものとなる。
【０１０２】
この実施の形態において、ライトデータから変換の候補０および候補１を生成する際、変換の要件として可逆性が要求される。可逆性とは、変換後のライトデータを逆変換により元通り復元できることを意味する。上述のように固定値Ｘおよびその反転値とライトデータとの排他的論理和により候補０および候補１を生成した場合、同じ排他的論理和を施すことにより復元できるため、可逆性を有する。
【０１０３】
また、この実施の形態において、候補０および候補１の少なくとも一方は、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下になることが必要である。このライトデータ変換部６５０による例では、候補０と候補１は、一方が「０」であれば他方は「１」という相補性を有するため、セット対象となるビット数およびリセット対象となるビット数はともに全体のビット数の半分以下になる。
【０１０４】
図１８は、本技術の第３の実施の形態におけるリードデータ変換部３８０の一構成例を示す図である。このリードデータ変換部３８０は、リードバッファ３４０において利用されるものである。
【０１０５】
このリードデータ変換部３８０は、メモリセルアレイ３１０から読み出されたリードデータＲＤＡＴＡ＿ＭＥＭおよび選択フラグから、候補０または候補１の変換の逆変換を施したリードデータＲＤＡＴＡを生成するものである。この例では、リードデータ変換部３８０は、排他的論理和ゲート３８２を備え、これによってリードデータＲＤＡＴＡ＿ＭＥＭと固定値Ｘとの排他的論理和を生成する。また、リードデータ変換部３８０は、反転ゲート３８１および排他的論理和ゲート３８３を備え、固定値Ｘを反転ゲート３８１により反転した後、排他的論理和ゲート３８３によりリードデータＲＤＡＴＡ＿ＭＥＭと固定値Ｘの反転値との排他的論理和を生成する。そして、リードデータ変換部３８０は、選択器３８４を備え、メモリセルアレイ３１０から読み出された選択フラグに応じて、排他的論理和ゲート３８２または３８３の出力を選択してリードデータＲＤＡＴＡとする。
【０１０６】
ここでは、変換の一例として、固定値Ｘおよびその反転値とライトデータとの排他的論理和により候補０および候補１を生成する例について説明したが、上述の通り可逆性と相補性を満たすものであれば他の変換候補を用いることができる。例えば、ビットの入れ換えやビットシフトなどを単独、もしくは、他の変換と組み合わせて用いることができる。
【０１０７】
［テーブルを用いた変換］
上述の実施の形態ではハードウェア回路を用いて変換の候補０および候補１を生成する例について説明したが、この変換候補の生成の際にテーブル索引を利用してもよい。これにより、より柔軟な変換候補の設定を行うことができる。ただし、このテーブルの値を設定する際には、以下の２つの条件を満たす必要がある。
（１）条件１：ライトデータＷＤＡＴＡと候補０の値ｗｄａｔａ０、および、ライトデータＷＤＡＴＡと候補１の値ｗｄａｔａ１は、それぞれ１対１で対応する。すなわち、ライトデータＷＤＡＴＡに対して候補０の値ｗｄａｔａ０が一意に決まり、候補０の値ｗｄａｔａ０に対してライトデータＷＤＡＴＡが一意に決まる。候補１の値ｗｄａｔａ１についても同様である。
（２）条件２：候補０の値ｗｄａｔａ０および候補１の値ｗｄａｔａ１の少なくとも何れか一方において、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下である。
【０１０８】
図１９は、本技術の第３の実施の形態における変換候補の生成の際にテーブル索引を利用する例を示す図である。この例では、説明を簡略化するために、対象となるライトデータのデータ幅として４ビットを想定し、１６通りのパターンを示している。
【０１０９】
この例では、候補０の値ｗｄａｔａ０は、ライトデータＷＤＡＴＡの非反転の値となっている。また、候補１の値ｗｄａｔａ１は、第０パターンおよび第３乃至１５パターンでは、ライトデータＷＤＡＴＡを反転した値となっている。そして、第１パターンでは、候補１の値ｗｄａｔａ１は、ライトデータＷＤＡＴＡを反転して、１ビット左シフトした値となっている。また、第２パターンでは、候補１の値ｗｄａｔａ１は、ライトデータＷＤＡＴＡを反転して、１ビット右シフトした値となっている。この場合においても、上述の可逆性および相補性を有している。
【０１１０】
ここで示したテーブル索引の例において、上述の要件を満たすことを以下に示す。まず、第０パターンおよび第３乃至１５パターンについては、ｗｄａｔａ０がライトデータＷＤＡＴＡの非反転の値であり、ｗｄａｔａ１がライトデータＷＤＡＴＡを反転した値であることから、可逆性および相補性を有することがわかる。また、第１パターンおよび第２パターンについては、反転とシフト操作により元に復元可能であることから可逆性を有することはわかる。第１パターンおよび第２パターンについては、相補性を有しないが、以下のように、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下になることがわかる。
【０１１１】
図２０は、図１９の例の第１パターンにおけるセット対象およびリセット対象となるビット数をまとめたものである。この図のように、プレリードデータの各パターンについてセット対象およびリセット対象となるビット数を調べると、何れのプレリードデータに対しても、ｗｄａｔａ０またはｗｄａｔａ１の少なくとも何れか一方において２ビット以下になっている。すなわち、ｗｄａｔａ０およびｗｄａｔａ１の少なくとも何れか一方において、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下になることがわかる。
【０１１２】
図２１は、図１９の例の第２パターンにおけるセット対象およびリセット対象となるビット数をまとめたものである。この図のように、プレリードデータの各パターンについてセット対象およびリセット対象となるビット数を調べると、何れのプレリードデータに対しても、ｗｄａｔａ０またはｗｄａｔａ１の少なくとも何れか一方において２ビット以下になっている。すなわち、ｗｄａｔａ０およびｗｄａｔａ１の少なくとも何れか一方において、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下になることがわかる。
【０１１３】
このように、図１９の例は、可逆性を有し、かつ、ｗｄａｔａ０およびｗｄａｔａ１の少なくとも何れか一方において、セット対象となるビット数およびリセット対象となるビット数がともに全体のビット数の半分以下になることがわかる。したがって、この例は本実施の形態における要件に適合する。
【０１１４】
図２２は、本技術の第３の実施の形態における逆変換の際にテーブル索引を利用する例を示す図である。この例は、図１９の変換例に対する逆変換の例を示すものである。この場合、リードデータ変換部３８０と同様に、メモリセルアレイ３１０から読み出されたリードデータＲＤＡＴＡ＿ＭＥＭおよび選択フラグから、候補０または候補１の変換の逆変換を施したリードデータＲＤＡＴＡを生成する。すなわち、選択フラグが何れの候補を示しているかによって、ｒｄａｔａ０またはｒｄａｔａ１の欄を選択する。そして、選択された欄において、リードデータＲＤＡＴＡ＿ＭＥＭと合致する行を探索し、その行に対応するＲＤＡＴＡを出力する。
【０１１５】
［不揮発性メモリの動作］
図２３は、本技術の第３の実施の形態における不揮発性メモリ３００のライト処理手順の一例を示す流れ図である。
【０１１６】
プロセッサ１１０からライトコマンドが発行されると、ライトバッファ３３０にライトデータが保持される（ステップＳ８１１）。また、ライトアドレスが示すメモリセルアレイ３１０のページからリードデータおよび選択フラグがプレリードデータとして読み出されて、リードバッファ３４０に保持される（ステップＳ８１２）。なお、これらライトデータの取得およびプレリード処理は逆の順序で行ってもよい。
【０１１７】
変換判定部４６０は、ライトバッファ３３０に保持されたライトデータとリードバッファ３４０に保持されたプレリードデータとから、ライトバッファ３３０のライトデータに対して候補０または候補１の何れの変換を施すべきか否かを判定する（ステップＳ８２０）。その結果、候補１の変換を施すべき旨の判定がされた場合には（ステップＳ８１３：Ｙｅｓ）、ライトバッファ３３０においてライトデータに候補１の変換が施されるとともに、その選択フラグが「１」にアサートされる（ステップＳ８１４）。この場合、論理評価部３５０では、候補１のためのセットパターンおよびリセットパターンが生成される（ステップＳ８１５）。
【０１１８】
一方、候補０の変換を施すべき旨の判定がされた場合には（ステップＳ８１３：Ｎｏ）、ライトバッファ３３０においてライトデータに候補０の変換が施されるとともに、その選択フラグが「０」にクリアされる（ステップＳ８１６）。この場合、論理評価部３５０では、候補０のためのセットパターンおよびリセットパターンが生成される（ステップＳ８１７）。
【０１１９】
なお、候補０のためのセットパターンおよびリセットパターンは、ステップＳ８１７で生成せずに、ステップＳ８２０における後述の図２４のステップＳ８２３で生成したものを使用してもよい。また、候補１のためのセットパターンおよびリセットパターンは、ステップＳ８１５で生成せずに、ステップＳ８２０における後述の図２５のＳ８３３で生成したものを使用してもよい。
【０１２０】
その後、生成されたセットパターンに従って、ＨＲＳからＬＲＳに状態を遷移させるセット動作が行われる（ステップＳ８１８）。そして、生成されたリセットパターンに従って、ＬＲＳからＨＲＳに状態を遷移させるリセット動作が行われる（ステップＳ８１９）。なお、これらセット動作およびリセット動作は逆の順序で行ってもよい。
【０１２１】
図２４および図２５は、第３の実施の形態における変換判定処理（ステップＳ８２０）の処理手順の一例を示す流れ図である。
【０１２２】
まず、ライトデータ変換部６５０は、ライトデータＷＤＡＴＡに対して候補０および候補１の変換を施して、それぞれｗｄａｔａ０およびｗｄａｔａ１を生成するステップＳ８２１）。
【０１２３】
論理ゲート６６１および６６２において、候補０のライトデータおよびプレリードデータが比較され（ステップＳ８２２）、それぞれ候補０のセットパターンおよびリセットパターンが生成される（ステップＳ８２３）。そして、カウンタ６７１および６７２において、それぞれ候補０のセット対象のビット数ｍ１０およびリセット対象のビット数ｍ０１が計数される（ステップＳ８２４）。
【０１２４】
その結果、候補０について、セット対象のビット数ｍ１０がリセット対象のビット数ｍ０１よりも大きい場合には（ステップＳ８２５：Ｙｅｓ）、選択器６８１はセット対象のビット数ｍ１０を出力値Ｎ＿ｗ０とする（ステップＳ８２６）。一方、セット対象のビット数ｍ１０がリセット対象のビット数ｍ０１よりも大きくない場合には（ステップＳ８２５：Ｎｏ）、選択器６８１はリセット対象のビット数ｍ０１を出力値Ｎ＿ｗ０とする（ステップＳ８２７）。
【０１２５】
論理ゲート６６３および６６４において、候補１のライトデータおよびプレリードデータが比較され（ステップＳ８３１）、それぞれ候補１のセットパターンおよびリセットパターンが生成される（ステップＳ８３２）。そして、カウンタ６７３および６７４において、それぞれ候補１のセット対象のビット数ｍ１１およびリセット対象のビット数ｍ００が計数される（ステップＳ８３３）。
【０１２６】
その結果、候補１について、セット対象のビット数ｍ１１がリセット対象のビット数ｍ００よりも大きい場合には（ステップＳ８３４：Ｙｅｓ）、選択器６８２はセット対象のビット数ｍ１１を出力値Ｎ＿ｗ１とする（ステップＳ８３５）。一方、セット対象のビット数ｍ１１がリセット対象のビット数ｍ００よりも大きくない場合には（ステップＳ８３４：Ｎｏ）、選択器６８２はリセット対象のビット数ｍ００を出力値Ｎ＿ｗ１とする（ステップＳ８３６）。
【０１２７】
なお、ステップＳ８２１乃至Ｓ８２７の処理とステップＳ８３１乃至Ｓ８３６の処理とは、互いに逆の順序で行ってもよく、また、図１６に示したように同時並行に行ってもよい。
【０１２８】
比較器６９１は、選択器６８１の出力値Ｎ＿ｗ０と選択器６８２の出力値Ｎ＿ｗ１とを比較して、出力値Ｎ＿ｗ０の方が大きい場合には（ステップＳ８３７：Ｙｅｓ）、候補１を選択すべき旨の判定をする（ステップＳ８３８）。一方、出力値Ｎ＿ｗ０の方が大きくない場合には（ステップＳ８３７：Ｎｏ）、候補０を選択すべき旨の判定をする（ステップＳ８３９）。
【０１２９】
図２６は、本技術の第３の実施の形態における不揮発性メモリ３００のリード処理手順の一例を示す流れ図である。
【０１３０】
プロセッサ１１０からリードコマンドが発行されると、リードアドレスが示すメモリセルアレイ３１０のページからリードデータおよび選択フラグが読み出されて、リードバッファ３４０に保持される（ステップＳ８４１）。このとき、リードバッファ３４０における選択フラグがアサートされていた場合には（ステップＳ８４２：Ｙｅｓ）、リードバッファ３４０においてリードデータに対して候補１への変換の逆変換が施される（ステップＳ８４３）。選択フラグがアサートされていなかった場合には（ステップＳ８４２：Ｎｏ）、リードバッファ３４０においてリードデータに対して候補０への変換の逆変換が施される（ステップＳ８４４）。そして、このリードバッファ３４０に保持されたリードデータは、プロセッサ１１０へ出力される（ステップＳ８４５）。
【０１３１】
このように、本技術の第３の実施の形態によれば、セットとリセットを区別して遷移ビット数を判断することにより、ライトデータに対してどのような変換を施すかについて、状態遷移に伴う消費電流を考慮して適切な判定を行うことができる。このような判定を行うことにより、Ｎビットのデータに対してセットおよびリセットを行うビット数は、ワーストケースでそれぞれＮ／２ビットに抑えることができる。換言すれば、従来と同じワーストケースの消費電力で考えた場合、同じ時間で２倍のサイズのデータアクセスを行うことができ、アクセス速度を２倍にすることができる。
【０１３２】
［変形例］
図２７は、本技術の第３の実施の形態における変換判定部４６０の変形例を示す図である。この変換判定部４６０の変形例は、図１６により説明したものと比べて、論理ゲート６６３および６６４、カウンタ６７３および６７４、および、選択器６８２を削除した構成となっている。そして、比較器６９１の一方の入力には選択器６８２の出力が接続されていたが、この変形例では比較器６９２の一方の入力に全体のビット数Ｎの半分の値（Ｎ／２）が入力されている。これは、上述のように、候補０および候補１の何れか一方は、セット対象となるビット数またはリセット対象となるビット数が全体のビット数の半分以下になることを想定しているため、一方だけを判定することにより何れを選択すべきか判断できるからである。すなわち、選択器６８１の出力がＮ／２よりも大きい場合には候補１を選択し、選択器６８１の出力がＮ／２よりも小さい場合には候補０を選択する。選択器６８１の出力がＮ／２と等しい場合には何れの候補を選択してもよい。
【０１３３】
図２８は、第３の実施の形態における変換判定処理（ステップＳ８２０）の処理手順の変形例を示す流れ図である。この変形例におけるステップＳ８５１乃至Ｓ８５７は、図２４において説明したステップＳ８２１乃至Ｓ８２７と同様である。
【０１３４】
比較器６９２は、選択器６８１の出力値Ｎ＿ｗ０とＮ／２とを比較して、出力値Ｎ＿ｗ０の方が大きい場合には（ステップＳ８６７：Ｙｅｓ）、候補１を選択すべき旨の判定をする（ステップＳ８６８）。一方、出力値Ｎ＿ｗ０の方が大きくない場合には（ステップＳ８６７：Ｎｏ）、候補０を選択すべき旨の判定をする（ステップＳ８６９）。
【０１３５】
このように、第３の実施の形態の変形例によれば、候補０および候補１のうち何れか一方についてのみ、セット対象またはリセット対象となるビット数を判定すればよいため、変換判定処理を簡略化することができる。第３の実施の形態ではセット対象またはリセット対象となるビット数が最小になるという観点で判断していたが、Ｎ／２以下にするためにはこの変形例で対応可能である。なお、ここではセット対象またはリセット対象となるビット数を判定する対象を候補０のみとする例について説明したが、候補１のみを対象としてもよいことはいうまでもない。
【０１３６】
また、この第３の実施の形態では、不揮発性メモリ３００において変換制御を行う例について説明したが、第２の実施の形態と同様に、メモリコントローラ２００において変換制御を行うようにしてもよい。
【０１３７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１３９】
なお、本技術は以下のような構成もとることができる。
（１）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
（２）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と、前記プレリードデータから前記ライトデータの第２の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方とを比較して、前記第１の変換候補または前記第２の変換候補の何れを選択すべきかについて前記比較対象の遷移ビット数が小さくなる方を判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
（３）前記変換判定部は、
前記プレリードデータと前記第１の変換候補および前記第２の変換候補とにおける前記第１の値から第２の値への遷移または前記第１の値から第２の値への遷移の組合せを対応するビット毎に検出する検出器と、
前記組合せの各々について検出されたビット数を計数するカウンタと、
前記第１の変換候補および前記第２の変換候補の各々について前記第１の値から前記第２の値への遷移ビット数と前記第２の値から前記第１の値への遷移ビット数とのうち大きい方を選択する選択器と、
前記第１の変換候補および前記第２の変換候補の各々について選択された遷移ビット数を比較して、前記第１の変換候補または前記第２の変換候補の何れかを選択すべきかについて前記比較対象の遷移ビット数が小さくなる方を前記判定結果とする比較器とを備える
前記（２）に記載の記憶制御装置。
（４）前記ライトデータおよび前記選択情報を保持するライトバッファをさらに具備し、
前記変換制御部は、前記判定結果に従って前記ライトバッファに保持されているライトデータを前記第１の変換候補または前記第２の変換候補の何れかに変換させるとともに何れに変換されたのかを前記選択情報として前記ライトバッファに保持させる
前記（２）または（３）に記載の記憶制御装置。
（５）前記第１の変換候補は前記ライトバッファと所定の値との排他的論理和演算により得られる値であり、前記第２の変換候補は前記ライトバッファと前記所定の値の反転値との排他的論理和演算により得られる値である前記（２）から（４）のいずれかに記載の記憶制御装置。
（６）前記第１の変換候補は前記ライトバッファと所定の値との排他的論理和演算により得られる値に対して所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものであり、前記第２の変換候補は前記ライトバッファと前記所定の値の反転値との排他的論理和演算により得られる値に対して前記所定のビットシフト操作またはビット入れ換え操作の何れか一方の操作もしくはそれら操作の組合せを施したものである前記（２）から（５）のいずれかに記載の記憶制御装置。
（７）前記第１の変換候補は前記ライトバッファと同じ値であり、前記第２の変換候補は前記ライトバッファの反転値である前記（２）から（６）のいずれかに記載の記憶制御装置。
（８）前記第１の変換候補および前記第２の変換候補は、前記プレリードデータから前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と、前記プレリードデータから前記第２の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方との何れか一方は前記ライトデータの全ビット長の半分以下になるように決定される前記（２）から（７）のいずれかに記載の記憶制御装置。
（９）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、前記第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方と前記ライトデータの全ビット長の半分とを比較して、前記比較対象の遷移ビット数が前記ライトデータの全ビット長の半分よりも小さい場合には前記第１の変換候補を選択し、それ以外の場合には前記第２の変換候補を選択すべき旨を判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶制御装置。
（１０）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、
前記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と
を具備する記憶装置。
（１１）前記メモリセルアレイは可変抵抗素子である前記（１０）に記載の記憶装置。
（１２）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイと、
前記メモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定部と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御部と、
前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
（１３）ビット毎に第１の値または第２の値の何れか一方の値を保持するメモリセルアレイの所定のデータ領域について、ライト処理に先立ってライト対象のデータ領域からプレリードデータを読み出すプレリード処理手順と、
前記プレリードデータから前記ライト処理の対象データとなるライトデータの第１の変換候補または第２の変換候補の何れに遷移させるかを選択する際に、第１の変換候補へ遷移させる場合の前記第１の値から前記第２の値への遷移ビット数および前記第２の値から前記第１の値への遷移ビット数の大きい方の値に基づいて前記第１の変換候補または前記第２の変換候補の何れを選択すべきかを判定結果として生成する変換判定手順と、
前記判定結果に応じて前記第１の変換候補または前記第２の変換候補の何れかを選択するとともに、何れが選択されたのかを選択情報として出力する変換制御手順と
を具備する記憶制御方法。
【符号の説明】
【０１４０】
１１０  プロセッサ
１２０  ＤＲＡＭ
２００  メモリコントローラ
２２０、３２０  制御部
２３０、３３０  ライトバッファ
２４０、３４０  リードバッファ
２６０、３６０  反転判定部
２７０、３７０  反転制御部
２８０  メモリインターフェース
２９０  システムインターフェース
３００  不揮発性メモリ
３１０  メモリセルアレイ
３１１  データ
３１２  反転フラグ
３１３  選択フラグ
３５０  論理評価部
３９０  外部インターフェース
４００  メモリモジュール
４６０  変換判定部
４７０  変換制御部
６１１〜６１４、６６１〜６６４  論理ゲート
６２１〜６２４、６７１〜６７４  カウンタ
６３１、６３２、６８１、６８２  選択器
６４１、６９１  比較器
６５０  ライトデータ変換部
【図１】
2014026712.tif 000003
【図２】
2014026712.tif 000004
【図３】
2014026712.tif 000005
【図４】
2014026712.tif 000006
【図５】
2014026712.tif 000007
【図６】
2014026712.tif 000008
【図７】
2014026712.tif 000009
【図８】
2014026712.tif 000010
【図９】
2014026712.tif 000011
【図１０】
2014026712.tif 000012
【図１１】
2014026712.tif 000013
【図１２】
2014026712.tif 000014
【図１３】
2014026712.tif 000015
【図１４】
2014026712.tif 000016
【図１５】
2014026712.tif 000017
【図１６】
2014026712.tif 000018
【図１７】
2014026712.tif 000019
【図１８】
2014026712.tif 000020
【図１９】
2014026712.tif 000021
【図２０】
2014026712.tif 000022
【図２１】
2014026712.tif 000023
【図２２】
2014026712.tif 000024
【図２３】
2014026712.tif 000025
【図２４】
2014026712.tif 000026
【図２５】
2014026712.tif 000027
【図２６】
2014026712.tif 000028
【図２７】
2014026712.tif 000029
【図２８】
2014026712.tif 000030