(57)【要約】【課題】多値メモリの書き換え可能回数にとって不利となる、書き込みエネルギーの大きいデータの書き込み回数を減少させることを目的とする。【解決手段】多値メモリは、それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部を有する。  そして、上記メモリアレイ部への書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む処理を行うメモリ制御部とを備える。【選択図】図１
2013175258.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部と、
上記メモリアレイ部への書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む処理を行うメモリ制御部と、
を備える多値メモリ。
【請求項２】
上記メモリアレイ部では、上記変換された書き込みデータを記憶するメモリセル領域と、上記変換規則識別子を記憶するメモリセル領域とが、一対一に対応されている請求項１に記載の多値メモリ。
【請求項３】
上記メモリ制御部は、
上記書き込みデータを変換するための複数の変換規則を保持する変換規則保持部と、
書き込みデータに応じて上記変換規則保持部から１つの変換規則を選択する変換規則判定部と、
上記変換規則判定部により選択された変換規則に従って、上記書き込みデータを変換するデータ変換部と、
を備える請求項１に記載の多値メモリ。
【請求項４】
上記変換規則保持部が記憶する複数の変換規則のうち、１つの変換規則は、書き込みデータの変換を行わない変換規則である請求項３に記載の多値メモリ。
【請求項５】
上記特定のデータ値は、１つのメモリセルに書き込みが行われる可能性のあるすべてのデータ値のうち、書き込みの際のエネルギーが最大のデータ値である請求項１に記載の多値メモリ。
【請求項６】
上記メモリ制御部は、
上記メモリアレイ部から読み出したデータのデータ値を、上記メモリアレイ部から読み出した上記変換規則識別子に基づいて、上記変換の前の元のデータ値にもどすデータ逆変換部を有し、
上記データ逆変換部で逆変換されたデータを読み出しデータとして出力する請求項１に記載の多値メモリ。
【請求項７】
上記変換規則識別子として使用する値には、上記特定のデータ値が含まれない請求項１に記載の多値メモリ。
【請求項８】
それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部を有する多値メモリ書き込み方法として、
入力された書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、
変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む多値メモリ書き込み方法。
【請求項９】
それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部であって、書き込み時に特定のデータ値を該特定のデータ値以外のデータ値とする変換規則で変換されたデータを記憶するメモリセル領域と、上記データについての書き込み時の変換規則識別子を記憶するメモリセル領域とを有するメモリアレイ部を含む多値メモリ読み出し方法として、
上記メモリアレイ部からデータと変換規則識別子を読み出し、
上記メモリアレイ部から読み出したデータのデータ値を、上記メモリアレイ部から読み出した変換規則識別子に基づいて、書き込み時の変換の前の元のデータ値にもどすデータ逆変換を行い、
上記データ逆変換されたデータを読み出しデータとして出力する多値メモリ読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、１つのメモリセルに２ビット以上の情報を記憶させる多値メモリ、多値メモリ書き込み及び多値メモリ読み出し方法に関する。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】特許第４１３４６３７号
【特許文献２】米国特許出願公開  ２０１１／０２１３９９５号明細書
【背景技術】
【０００３】
従来、情報通信機器、特に携帯端末等に用いられる小型の電子機器が飛躍的に普及したことに伴い、これを構成するメモリやロジック等の素子に対して、高集積化、高速化、低消費エネルギー化等、一層の高性能化が要請されている。
このような小型機器では、不揮発性メモリが電子機器の高機能化に必要不可欠な部品と考えられている。不揮発性メモリとしては、半導体フラッシュメモリ、ＦｅＲＡＭ（強誘電体ランダムアクセスメモリ）、ＭＲＡＭ（Magnetoresistive Random Access Memory：磁気ランダムアクセスメモリ）等が実用化されており、さらなる高性能化に向けて活発な研究開発が行われている。
【０００４】
また、半導体フラッシュメモリ等では、記憶容量を増加させるために、１つのメモリセルに２ビット以上のデータ値として情報を記憶させるメモリセルが用いられることがある。このようなメモリセルはＭＬＣ（Multi Level Cell）と呼ばれる。一方、１つのメモリセルに１ビットの情報を記憶させるメモリセルはＳＬＣ（Single Level Cell）と呼ばれる。ＭＬＣを用いたメモリは多値メモリと呼ばれる。
【０００５】
ところで、不揮発性メモリに情報を書き込む場合にはエネルギーを消費する。このため書き込み時の消費エネルギーを削減するためにさまざまな書き込み方法が提案されている。
【０００６】
例えば、特許文献１では、ＭＲＡＭに情報を書き込む方法が開示されている。その書き込み方法では、入力データと、その入力データを書き込もうとしている場所に既に書き込まれているデータとを比較し、書き換えするビットの数が半数以下となるように符号化する。このようにすると、書き込み動作時に書き換えするビット数を減らすことができるため、消費エネルギーが削減できる。
【０００７】
また、特許文献２で開示されている書き込み方法は、入力データと、その入力データを書き込もうとしている場所に既に書き込まれているデータとを比較し、書き換えするビット数が半数以上であれば、入力データの“０”と“１”と入れ替える。そして、書き換えが必要なビットのみを書き換える。さらに、入力データの“０”と“１”と入れ替えたかどうかを記憶するためのビットを付加し、このビットも同時に書き込む。 
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＭＬＣを用いた多値メモリにおいては、１つのメモリセルに２ビット以上の情報を記憶する。仮に２ビットの情報を記憶する場合を考える。このとき書き込むデータは“００”、“０１”、“１０”、“１１”となる。これらのデータを書き込む際に消費するエネルギー（以下、書き込みエネルギーと呼ぶ）は、書き込むデータによって異なる。“００”を書き込むときの書き込みエネルギーをＥ（００）等とする。書き込みエネルギーが上記のデータ順に大きくなると仮定すると、Ｅ（００）＜Ｅ（０１）＜Ｅ（１０）＜Ｅ（１１）となる。このため、例えば“００”を多く書き込む場合よりも“１１”を多く書き込む場合のほうが書き込みエネルギーをより多く消費してしまう。
なお、上記の書き込みエネルギーの大小関係は説明のために仮定したものであり、その他の大小関係となる場合もある。
【０００９】
また、不揮発性メモリにおいては書き換え可能回数に上限があるという問題がある。一般に、書き換え可能回数の上限は、書き込みエネルギーと関係がある。これは、書き込みエネルギーの大きさに応じて、メモリセルにストレスが印加されることが原因である。例えば、電流書き込み型のＭＲＡＭの場合には、書き込みを行うとき、メモリセルを構成するトンネルバリア膜に電界ストレスが印加される。書き込みを繰り返すことによって、電界ストレスが蓄積され、ついにはトンネルバリア膜が静電破壊を起こしてしまう。そうすると、そのメモリセルにはもはや新たな情報を書き込みことができなくなってしまう。即ち、書き換え可能回数に上限がある。この電界ストレスは、書き込みエネルギーが大きくなるほど増加するために、書き込みエネルギーが大きいほど、書き換え可能な回数は減少していく。つまり、同じメモリセルに“００”を書き続けた時と“１１”を書き続けた時とを比較すると、“１１”を書き続けた時の方が書き換え可能な回数は減少する。
このように多値メモリにおいては、書き込みに際して消費エネルギーや書き換え可能回数にとって不利となるデータが存在し、このようなデータはなるべく書き込まないほうが望ましい。
【００１０】
本開示はこのような状況に鑑みて成されたものであり、消費エネルギーが大きくなることにより、書き換え可能回数にとって不利となる、書き込みエネルギーの大きいデータの書き込み回数を減少させることを目的とする。
【課題を解決するための手段】
【００１１】
本開示の多値メモリは、それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部と、上記メモリアレイ部への書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む処理を行うメモリ制御部とを備える。
【００１２】
本開示の多値メモリ書き込み方法は、それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部を有する多値メモリ書き込み方法として、入力された書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む方法である。
また本開示の多値メモリ読み出し方法は、それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部であって、書き込み時に特定のデータ値を該特定のデータ値以外のデータ値とする変換規則で変換されたデータを記憶するメモリセル領域と、上記データについての書き込み時の変換規則識別子を記憶するメモリセル領域とを有するメモリアレイ部を含む多値メモリ読み出し方法として、上記メモリアレイ部からデータと変換規則識別子を読み出し、上記メモリアレイ部から読み出したデータのデータ値を、上記メモリアレイ部から読み出した変換規則識別子に基づいて、書き込み時の変換の前の元のデータ値にもどすデータ逆変換を行い、上記データ逆変換されたデータを読み出しデータとして出力する多値メモリ読み出し方法である。
【００１３】
このようにすることで、消費エネルギーや書き換え可能回数にとって不利となるデータの書き込み回数を減少させることが可能になる。
【発明の効果】
【００１４】
本開示によれば、消費エネルギーや書き換え可能回数にとって不利となるデータの書き込み回数を減少させることができるために、書き込み時の消費エネルギーが減少し、書き換え可能回数が増加するという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本開示の実施の形態の多値メモリのブロック図である。
【図２】本開示の実施の形態によるデータユニットの説明図である。
【図３】メモリセルの記憶状態を示した概念図である。
【図４】変換規則の例を示した図である。
【図５】本開示の実施の形態による書き込み処理のフローチャートである。
【図６】本開示の実施の形態による読み出し処理のフローチャートである。
【図７】第１の実施の形態による変換規則を示した図である。
【図８】第１の実施の形態による変換規則判定部の動作を示したフローチャートである。
【図９】第２の実施の形態による変換規則を示した図である。
【図１０】第２の実施の形態による変換規則判定部の動作を示したフローチャートである。
【図１１】第３の実施の形態による変換規則を示した図である。
【図１２】第３の実施の形態による変換規則判定部の動作を示したフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本開示の実施の形態を次の順序で説明する。
＜１．実施の形態の多値メモリの概要＞
＜２．第１の実施の形態＞
＜３．第２の実施の形態＞
＜４．第３の実施の形態＞
【００１７】
＜１．実施の形態の多値メモリの概要＞
図１に実施の形態の多値メモリの構成を示す。
図１の多値メモリ１は、メモリ制御部１０と、メモリアレイ部２０と、内部バス３とを備える。そして、多値メモリ１は、システムバス２を介して、不図示のホストとの通信を行う。
メモリ制御部１０は、上記ホストから送信される書き込み／読み出し要求を処理する。書き込み要求があった場合には、システムバス２を介してアドレスと書き込みデータを受け取り、内部バス３を介してメモリアレイ部２０の該当する箇所に書き込む。読み出し要求があった場合には、システムバス２を介してアドレスを受け取り、内部バス３を介してメモリアレイ部２０の該当する箇所に保存されたデータを読み出し、システムバス２を介してホストに送出する。
【００１８】
メモリ制御部１０は、このような処理を実行するために必要な不図示の入出力バッファ、書き込み／読み出し回路等を備える。さらに、メモリ制御部１０は、データ変換部１１と、変換規則保持部１２と、変換規則判定部１３と、データ逆変換部１４とを備える。これらの機能については後で詳細に説明する。
【００１９】
メモリアレイ部２０は、データを記憶する複数のメモリセルを備える。各メモリセルは２ビット以上の情報を保持する。メモリセルは所定の単位数ごとにデータユニット２１として管理される。図１では、データユニット２１はＢ１からＢｋまであり、このｋ個のデータユニットによってメモリアレイ部２０が構成される。
【００２０】
図２にデータユニット２１の構成を示す。
データユニット２１は、ユーザデータ領域と変換規則領域とに分けられる。図２では、ユーザデータ領域はメモリセルＤ１からＤｎで構成され、変換規則領域はメモリセルＴ１からＴｍで構成される。この結果、データユニット２１は（ｎ＋ｍ）個のメモリセルを有する。  
【００２１】
図３にメモリセルの記憶状態の概念図を示す。横軸は任意の特性値である。例えば、フラッシュメモリの場合には、横軸はメモリセルの閾値電圧となる。抵抗変化型メモリの場合では、横軸はメモリセルの抵抗値となる。曲線３１から曲線３４は横軸の特性値に対して、多値メモリ１のなかで、その特性値に対応するメモリセル（素子数）がどれだけ存在するかを示した分布曲線である。図３の例では、特性値に対して４つの分布をもっている。それぞれの分布について特性値の低いほうから２ビットのデータ値として“００”、“０１”、“１０”、“１１”と割り当てることができる。このようにひとつのメモリセルで４つの状態（データ）のいずれかをとることができるため、このメモリセルは２ビットの情報をデータ値として記憶できる。
どのデータが記憶されているかを読み出すために、各分布の間に設定されたリファレンス値Ｒ１，Ｒ２，Ｒ３とメモリセルの特性値とが比較される。例えば、特性値がリファレンス値Ｒ１よりも大きく、Ｒ２よりも小さいとき、メモリセルには“０１”が記憶されていると判断できる。
【００２２】
次に、メモリセルにデータを書き込む場合には、メモリセルの動作原理に応じた書き込み動作を行う。例えば、フラッシュメモリや抵抗変化型メモリの場合では、メモリセルの書き込み端子に一定の書き込み電圧を一定の書き込み時間の間印加する。このとき、書き込みデータに応じて、書き込み電圧あるいは書き込み時間、もしくはその両方の値を変化させる。このようにすることで、メモリセルに異なったデータを書き込むことができる。
このとき、書き込み電圧と書き込み時間とで決まる書き込みエネルギーが消費される。書き込むデータごとに書き込み電圧あるいは書き込み時間、もしくはその両方の値が異なるために、書き込みエネルギーも書き込むデータごとに異なった値となる。
【００２３】
図３の直線３５にこの関係を模式的に示している。“００”を書き込むときの書き込みエネルギーをＥ（００）等とする。図３の例では、Ｅ（００）＜Ｅ（０１）＜Ｅ（１０）＜Ｅ（１１）となる。このため、例えば“００”を多く書き込む場合よりも“１１”を多く書き込む場合のほうが書き込みエネルギーをより多く消費してしまう。すなわち、“１１”の書き込みは最大のエネルギーを消費する。また、かかる書き込みエネルギーで繰り返し書き込みを行うと、書き換え可能回数が減少してしまう。
以上の理由により、“１１”を書く回数をなるべく減らすことができれば、低消費エネルギー化や書き換え回数の増加が望める。
なお、以下の説明では、上記Ｅ（００）＜Ｅ（０１）＜Ｅ（１０）＜Ｅ（１１）の関係を前提にするが、Ｅ（１１）が最大のエネルギーであるとは限らず、これ以外の関係の場合でも適宜状態を読み替えることによって同じ議論が成り立つ。
【００２４】
また、メモリセルが記憶できるビット数は２ビットに限らず、それ以上のビット数とすることもできる。
これまで述べてきたように、多値メモリではなるべく書き込み回数を減らしたいデータが存在する。しかしながら、書き込みデータが全くランダムであった場合、当然、すべてのデータが同じ割合で書き込まれることになる。そこで、本開示においては、図１に示した、データ変換部１１と、変換規則保持部１２と、変換規則判定部１３と、データ逆変換部１４とを用いて、書き込み回数を減らしたいデータの書き込み回数を減らすことを実現する。
【００２５】
以下、この方法について説明する。
書き込み回数を減らしたい特定データ（例えば“１１”）の書き込み回数を減らすためには、そのデータを別のデータ（例えば“００”）に変換して書き込みを行えばよい。そのようにすると、書き込み回数を減らしたいデータ（“１１”）を書き込まなくて済む。
ただし、このようにすると元の書き込みデータに“００”が含まれていた場合には、データの衝突が起きてしまう。そこで、さらに“００”を別のデータに変換して書き込む。このようにしてすべてのデータを衝突なく書き込めるようにした変換規則を定める。メモリセルが２ビットのデータを記憶できるとき、考えられる変換規則の総数は４×３×２×１＝２４通りである。
【００２６】
図４にこのような変換規則の例を示す。矢印がデータの変換を示しており、矢印の根元にあるデータを矢印の先端にあるデータに変換する。変換規則Ａにおいては、すべての矢印が自分自身を向いている。即ち、変換を行わない。変換規則Ｂにおいては、“００”、“０１”、“１０”、“１１”を循環的に変換する。変換規則Ｃにおいては、“００”と“１１”の交換と、“１０”と“０１”の交換を行う。
【００２７】
変換を行った場合にはどの規則を用いて変換を行ったかもメモリセルに記憶しておく必要がある。そうしなければ、変換後のデータを読み出したときに、元のデータを復元できないからである。変換規則を記憶するために、変換規則ごとに固有の変換規則識別子を割り当てる。今の場合、変換規則の総数は２４通りである。このため、変換規則識別子は、“００．００．００”から“０１．０１．１１”となり、各変換規則がこの中から一つの固有の変換規則識別子を持つ。メモリセルが２ビットセルのために、変換規則識別子を記憶させるのに３つのメモリセルが必要であることになる。
【００２８】
変換規則を記憶するためにメモリセルを使うために、元の書き込みデータを記憶する領域が減少することになる。この影響を小さくするためには、同じ変換規則を用いて複数の書き込みデータを変換するとよい。このようにすることで、変換規則を記憶するメモリセルの相対的な割合を減少させることができる。以下、同じ変換規則を用いて変換される複数の書き込みデータのまとまりをユーザデータと呼ぶことにする。
先に変換規則は２４通りあると述べたが、必ずしも全ての変換規則を用いる必要はない。仮に図４に示した３つの変換規則Ａ、Ｂ、Ｃのみを使う場合があってもよい。
このとき、変換規則Ａに変換規則識別子“００”を、変換規則Ｂに変換規則識別子“０１”を、変換規則Ｃに変換規則識別子“１０”を、それぞれ割り当てることができる。このようにすると、変換規則識別子は１つのメモリセルで記憶できることになる。
【００２９】
ここで、図４に示した３つの変換規則Ａ、Ｂ、Ｃを使った場合のユーザデータの変換例を説明する。図１に戻り、メモリ制御部１０は、データ変換部１１と、変換規則保持部１２と、変換規則判定部１３と、データ逆変換部１４とを備えていた。これらの機能について、ユーザデータの変換例を通して説明する。なお、説明のため、ユーザデータ幅を４メモリセルとする。
まず、準備段階として、変換規則Ａ、Ｂ、Ｃおよびそれらの変換規則識別子は、変換規則保持部１２に記憶しておく。
【００３０】
第１の例として、ユーザデータ“００．００．０１．１１”の書き込み要求があった場合を考える。メモリ制御部１０がシステムバス２を介してユーザデータを受け取ると、変換規則判定部１３にこのデータを送る。変換規則判定部１３は、受け取ったユーザデータをチェックして、“１１”を書き込まなくても済むような変換規則を、変換規則保持部１２に記憶されている複数の変換規則の中から選ぶ。
すなわち、変換規則判定部１３は、書き込みデータに応じて、選択する変換規則を変えることができる。
今の例では、変換規則Ｂを用いることができる。データ変換部１１は選ばれた変換規則Ｂを用いて、“１１”を“０１”に、“０１”を“００”に、“００”を“１０”に変換する。変換規則Ｂには“１０”を“１１”に変換する規則もあるが、今回のユーザデータには“１０”が含まれていないので、この規則を適用することはない。そして、メモリ制御部１０は、変換されたユーザデータと、この変換規則Ｂの変換規則識別子である“０１”とをあわせて、メモリアレイ部２０の該当するデータユニット２１に書き込む。ユーザデータと変換規則識別子とは一対一に対応している。
【００３１】
このとき、データユニット２１に書き込むべきデータは“１０．１０．００．０１｜０１”となる。ここで、“｜”の前の部分がユーザデータに、後の部分が変換規則識別子に相当する。そして、図３に示すように、ユーザデータはデータユニット２１の内のユーザデータ領域に、変換規則識別子はデータユニット２１の内の変換規則領域に、それぞれ書き込まれる。データユニット全体として５つのメモリセルに書き込みを行うが、いずれのメモリセルにも“１１”を書き込むことがない。このようにして、書き込みを行いたくないデータである“１１”を書き込むことなくユーザデータをメモリセルに記憶することができた。
【００３２】
読み出し要求があった場合には、これと逆の手順に従えばよい。メモリ制御部１０が該当するデータユニット２１からユーザデータ（“１０．１０．００．０１”）と変換規則識別子（“０１”）を読み出す。ユーザデータと変換規則識別子とは一対一に対応しているので、変換規則判定部１３は、変換規則保持部１２を参照して、読みだされた変換規則識別子が“０１”であることから、変換規則Ｂが使われていると判断する。データ逆変換部１４は変換規則Ｂを逆に用いて、“０１”を“１１”に、“００”を“０１”に、“１０”を“００”に逆変換する。結果として逆変換後のユーザデータは、“００．００．０１．１１”となる。メモリ制御部１０はこの逆変換後のユーザデータをシステムバス２を介して要求元に送出する。
【００３３】
第１の例では、ユーザデータに“１０”が含まれていなかったため、変換規則Ｂを用いることができた。別の場合として、ユーザデータに“１１”が含まれており、“００”が含まれていない場合には、変換規則Ｃを用いることができる。
【００３４】
次に、第２の例として、ユーザデータ“００．０１．１０．１１”の書き込み要求があった場合を考える。この場合には、すべてのデータ（“００”、“０１”、“１０”、“１１”）がユーザデータに含まれているために、どのような変換を行ったとしても“１１”の書き込みが発生する。そのため、変換規則判定部１３は、「変換を行わない」という変換規則である変換規則Ａを選ぶ。その他の動作は第１の例と同じである。データユニット２１に書き込むべきデータは“００．０１．１０．１１｜００”となる。
このように、すべてのデータがユーザデータに含まれている場合には、“１１”の書き込みが発生するが、このケースは実は稀である。即ち、ユーザデータ幅が４メモリセルでメモリセルが２ビットセルのとき、すべてのデータパターンは４4＝２５６通りあるが、すべてのデータがユーザデータに含まれている場合は２４通りしかない。このことが本開示を用いて、書き込みたくないデータの書き込み回数を減らすことができる理由である。
以上に述べた、書き込み／読み出し処理方法について、フローチャートを用いて説明する。
【００３５】
図５は、本開示の実施の形態による書き込み処理のフローチャートである。
ステップＳ１１で、メモリ制御部１０が、システムバス２を介して書き込みデータを要求元から受け取る。ステップＳ１２で、変換規則判定部１３が、書き込みデータをチェックし、変換規則保持部１２に保存されている変換規則のうち、どの変換規則を用いるか決定する。ステップＳ１３で、データ変換部１１が、選ばれた変換規則に応じで、ユーザデータを変換する。ステップＳ１４で、メモリ制御部１０が、変換されたユーザデータと、選ばれた変換規則の変換規則識別子をメモリアレイ部２０に書き込む。
【００３６】
図６は、本開示の実施の形態による読み出し処理のフローチャートである。
ステップＳ２１で、メモリ制御部１０が、メモリアレイ部２０から、ユーザデータと変換規則識別子を読み出す。ステップＳ２２で、変換規則判定部１３が、変換規則保持部１２を参照して、読みだされた変換規則識別子に対応する変換規則を決定する。ステップＳ２３で、データ逆変換部１４が、選ばれた変換規則を用いて、ユーザデータを逆変換する。ステップＳ２４で、メモリ制御部１０が、逆変換されたユーザデータをシステムバスを介して要求元に送出する。
【００３７】
＜２．第１の実施の形態＞
続いて第１の実施の形態を説明する。
ここでは、第１の実施の形態にかかる具体的な変換規則を示し、この変換規則を適用することによって得られる効果についても詳述する。なお、これまでと同じく、メモリセルは２ビットを記憶でき、ユーザデータ幅は４メモリセルであるとする。このとき、図２において、データユニット２１のユーザデータ領域は、４つのメモリセルＤ１，Ｄ２，Ｄ３，Ｄ４で構成される。
【００３８】
図７は、第１の実施の形態による変換規則を示した図である。第１の実施の形態では、４つの変換規則を用いる。第１の実施の形態による４つの変換規則をまとめて変換規則セット１と呼ぶことにする。変換規則の数が４であるために、変換規則識別子を記憶するのに必要なメモリセルの個数は１である。このとき、図２において、データユニット２１の変換規則領域は、１つのメモリセルＴ１で構成される。
【００３９】
変換規則識別子“００”で示される変換規則では、データの変換を行わない。変換規則識別子“０１”で示される変換規則では、“１１”を“００”に変換する。“０１”と“１０”は変換を行わない。“００”に関しては、本来は“１１”に変換されるものであるが、そもそもこの変換規則は“００”を含むユーザデータには適用しないことを前提としているので、図７にはそれを記載していない。変換規則識別子“１０”で示される変換規則及び変換規則識別子“１１”で示される変換規則も同様であり、それぞれ“１１”を“０１”及び“１０”に変換し、その他のデータは変換しない。
【００４０】
図８は、第１の実施の形態による変換規則判定部１３の動作を示したフローチャートである。
ステップＳ３１では、ユーザデータが“１１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“００”で示される変換規則を選択する（ステップＳ３２）。
ステップＳ３３ではユーザデータが“００”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“０１”で示される変換規則を選択する（ステップＳ３４）。
ステップＳ３５ではユーザデータが“０１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“１０”で示される変換規則を選択する（ステップＳ３６）。
ステップＳ３７ではユーザデータが“１０”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“１１”で示される変換規則を選択する（ステップＳ３８）。
最後にユーザデータがすべてのデータを含む場合が残り、このときは変換規則識別子“００”で示される変換規則を選択する（ステップＳ３９）。
【００４１】
【表１】
2013175258.tif 000003
【００４２】
この変換規則セット１を用いた場合の効果を説明するために、まず変換を行わない場合（比較例）の書き込み頻度を計算した。表１に比較例によるデータの書き込み頻度を示す。すでに述べた通り、４つの２ビットメモリセルからなるユーザデータのパターンは２５６通りある。これらのパターンを一回ずつ書き込む。そして、一つのメモリセルあたり、それぞれのデータ（“００”、“０１”、“１０”、“１１”）が何回書き込まれたかを計算した。当然、変換を行わないときには、それぞれのデータが書き込まれる回数は同じで６４回であり、割合にすると２５％となる。
【００４３】
【表２】
2013175258.tif 000004
【００４４】
つぎに、変換規則セット１を用いた場合の書き込み頻度を計算した。表２に結果を示す。変換を行うので、ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４と変換規則識別子Ｔ１のそれぞれで計算した。その結果、ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４、変換規則識別子Ｔ１ともに、書き込み回数は“００”＞“０１”＞“１０”＞“１１”となっており、とりわけ書き込みたくないデータである“１１”の書き込み回数が大きく減少していることが分かる。特にユーザデータ領域のみに着目すると、“１１”が書き込まれる割合はわずか２％まで減少している。
【００４５】
＜３．第２の実施の形態＞
続いて第２の実施の形態を説明する。
第１の実施の形態では、変換規則識別子が“１１”となる場合が存在した。本来、“１１”の書き込み回数を減らすことが目的であるので、データユニット２１の変換規則領域といえども、そこに“１１”を書き込むことは、本来の目的に反する動作である。
第２の実施の形態はこれを防ぐ目的で、変換規則を図９のように変更する。即ち、変換規則セット１にあった、変換規則識別子が“１１”となる変換規則を省略している。その他の変換規則は変換規則セット１と同じである。
【００４６】
第２の実施の形態による３つの変換規則をまとめて変換規則セット２と呼ぶことにする。変換規則の数が３であるために、変換規則識別子を記憶するのに必要なメモリセルの個数は１である。このとき、第１の実施例と同じく、データユニット２１のユーザデータ領域は、４つのメモリセルＤ１，Ｄ２，Ｄ３，Ｄ４で構成され、データユニット２１の変換規則領域は、１つのメモリセルＴ１で構成される。
【００４７】
図１０は、第２の実施の形態による変換規則判定部１３の動作を示したフローチャートである。
ステップＳ４１では、ユーザデータが“１１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“００”で示される変換規則を選択する（ステップＳ４２）。
ステップＳ４３ではユーザデータが“００”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“０１”で示される変換規則を選択する（ステップＳ４４）。
ステップＳ４５ではユーザデータが“０１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“１０”で示される変換規則を選択する（ステップＳ４６）。
最後にユーザデータが“１１”、“００”、“０１”をすべて含む場合が残り、このときは変換規則識別子“００”で示される変換規則を選択する（ステップＳ４７）。
【００４８】
【表３】
2013175258.tif 000005
【００４９】
この変換規則セット２を用いた場合の効果を説明するために、書き込み頻度を計算した。表３に結果を示す。ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４と変換規則識別子Ｔ１のそれぞれで計算した。その結果、ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４、変換規則識別子Ｔ１ともに、書き込み回数は“００”＞“０１”＞“１０”＞“１１”となっており、とりわけ書き込みたくないデータである“１１”の書き込み回数が大きく減少していることが分かる。また、変換規則領域には“１１”は全く書き込まれない。ただし、その副作用として、ユーザデータ領域に“１１”が書き込まれる回数が１８回となり、変換規則セット１を用いた場合の６回に比べて、３倍多くなっている。それでも比較例の書き込み回数の２５％と比較すると大きく減少している。
【００５０】
＜４．第３の実施の形態＞
続いて第３の実施の形態を説明する。
第１の実施の形態では、変換規則識別子が“１１”となる場合が存在した。一方、第２の実施の形態では、変換規則識別子が“１１”となることはないものの、ユーザデータ領域に“１１”が書き込まれる回数が第１の実施の形態に比べて多くなった。
そこで、第３の実施の形態では、変換規則識別子が“１１”となることがないと同時に、ユーザデータ領域に“１１”が書き込まれる回数が第１の実施の形態と等しくなる変換規則を示す。
【００５１】
図１１は、第３の実施の形態による変換規則を示した図である。変換規則そのものは第１の実施の形態と同じである。
第３の実施の形態による４つの変換規則をまとめて変換規則セット３と呼ぶことにする。変換規則の数が４であるために、変換規則識別子を記憶するのに必要なメモリセルの個数は１であるが、第３の実施の形態では敢えて２つのメモリセルを用いる。このとき、データユニット２１のユーザデータ領域は、４つのメモリセルＤ１，Ｄ２，Ｄ３，Ｄ４で構成され、データユニット２１の変換規則領域は、２つのメモリセルＴ１，Ｔ２で構成される。
【００５２】
第１の実施の形態において、変換規則識別子は“００”、“０１”、“１０”、“１１”であった。この場合、メモリセルが１個（２ビット）なので４種類の変換規則識別子を表そうとすると、”１１”の変換規則識別子を使わざるを得ない。これをさけるため２つのメモリセルＴ１，Ｔ２を用意したものである。
第３の実施の形態においては、これらの変換規則識別子を同順で“００．００”、“００．０１”、“０１．００”、“０１．０１”に置き換える。ここで、ピリオド“．”の前の変換規則識別子が変換規則領域のメモリセルＴ１に、後ろの変換規則識別子が変換規則領域のメモリセルＴ２に対応する。即ち、Ｔ１およびＴ２に書き込まれる可能性のあるデータは“００”或いは“０１”のみとなる。
【００５３】
図１２は、第３の実施の形態による変換規則判定部１３の動作を示したフローチャートである。選択される変換規則識別子が、“００．００”、“００．０１”、“０１．００”、“０１．０１”のいずれかになる点を除いて、図８に示した第１の実施の形態による変換規則判定部１３の動作を示したフローチャートと同一である。
ステップＳ５１では、ユーザデータが“１１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“００．００”で示される変換規則を選択する（ステップＳ５２）。
ステップＳ５３ではユーザデータが“００”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“００．０１”で示される変換規則を選択する（ステップＳ５４）。
ステップＳ５５ではユーザデータが“０１”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“０１．００”で示される変換規則を選択する（ステップＳ５６）。
ステップＳ５７ではユーザデータが“１０”を含んでいるかどうかを判定する。含んでいない場合には、変換規則識別子“０１．０１”で示される変換規則を選択する（ステップＳ５８）。
最後にユーザデータがすべてのデータを含む場合が残り、このときは変換規則識別子“００．００”で示される変換規則を選択する（ステップＳ５９）。
【００５４】
【表４】
2013175258.tif 000006
【００５５】
この変換規則セット３を用いた場合の効果を説明するために、書き込み頻度を計算した。表４に結果を示す。変換を行うので、ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４と変換規則識別子Ｔ１，Ｔ２のそれぞれで計算した。変換規則そのものは第１の実施の形態と同じであるので、ユーザデータＤ１，Ｄ２，Ｄ３，Ｄ４の書き込み回数は第１の実施の形態と同じである。そして、第１の実施の形態と異なり、変換規則識別子Ｔ１，Ｔ２には“００”或いは“０１”のみが書き込まれる。
このように、第３の実施の形態においては、ユーザデータ領域に“１１”が書き込まれる割合は２％であり、変換規則領域には“１１”は全く書き込まれない。
【００５６】
以上のように本開示の実施の形態によれば、適切なデータ変換規則を選ぶことによって、書き込みたくないデータ（以上の例では“１１”）の書き込み回数を大きく減少させることができることが分かった。
本開示の実施に形態に挙げた変換規則はあくまでも一例であって、その他の変換規則を用いてもよい。
また、変換規則保持部１２に記憶されている変換規則は、メモリアレイ部２０にもそのコピーを記憶し、多値メモリへの電源供給が遮断された際にも、変換規則が失われないようにすることが望ましい。
さらに、データユニット２１内のユーザデータ領域と変換規則領域の配置は、固定されたものではなく、移動させることができる。即ち、ある時点ではユーザ領域に割り当てられていたメモリセルが、別のある時点では変換規則領域に割り当てられる、といういわゆる平滑化の操作を行ってもよい。
【００５７】
なお、本開示の技術は以下のような構成を採ることもできる。
（１）それぞれが２ビット以上のデータ値を記憶できる複数のメモリセルから成るメモリアレイ部と、
上記メモリアレイ部への書き込みデータに応じて、１つのメモリセルに書き込むデータ値のうち、特定のデータ値を、該特定のデータ値以外のデータ値とする変換規則で変換し、変換された書き込みデータと、上記変換の変換規則を示す変換規則識別子とを、上記メモリアレイに書き込む処理を行うメモリ制御部と、
を備える多値メモリ。
（２）上記メモリアレイ部では、上記変換された書き込みデータを記憶するメモリセル領域と、上記変換規則識別子を記憶するメモリセル領域とが、一対一に対応されている（１）に記載の多値メモリ。
（３）上記メモリ制御部は、
上記書き込みデータを変換するための複数の変換規則を保持する変換規則保持部と、
書き込みデータに応じて上記変換規則保持部から１つの変換規則を選択する変換規則判定部と、
上記変換規則判定部により選択された変換規則に従って、上記書き込みデータを変換するデータ変換部と、
を備える（１）又は（２）に記載の多値メモリ。
（４）上記変換規則保持部が記憶する複数の変換規則のうち、１つの変換規則は、書き込みデータの変換を行わない変換規則である（３）に記載の多値メモリ。
（５）上記特定のデータ値は、１つのメモリセルに書き込みが行われる可能性のあるすべてのデータ値のうち、書き込みの際のエネルギーが最大のデータ値である（１）乃至（４）に記載の多値メモリ。
（６）上記メモリ制御部は、
上記メモリアレイ部から読み出したデータのデータ値を、上記メモリアレイ部から読み出した上記変換規則識別子に基づいて、上記変換の前の元のデータ値にもどすデータ逆変換部を有し、
上記データ逆変換部で逆変換されたデータを読み出しデータとして出力する（１）乃至（５）に記載の多値メモリ。
（７）上記変換規則識別子として使用する値には、上記特定のデータ値が含まれない（１）乃至（６）に記載の多値メモリ。
【符号の説明】
【００５８】
１  多値メモリ、２  システムバス、３  内部バス、１０  メモリ制御部、１１  データ変換部、１２  変換規則保持部、１３  変換規則判定部、１４  データ逆変換部、２０  メモリアレイ部、２１  データユニット
【図１】
2013175258.tif 000007
【図２】
2013175258.tif 000008
【図３】
2013175258.tif 000009
【図４】
2013175258.tif 000010
【図５】
2013175258.tif 000011
【図６】
2013175258.tif 000012
【図７】
2013175258.tif 000013
【図８】
2013175258.tif 000014
【図９】
2013175258.tif 000015
【図１０】
2013175258.tif 000016
【図１１】
2013175258.tif 000017
【図１２】
2013175258.tif 000018