以下に実施形態が図面を参照して記述される。以下の記述において、略同一の機能および構成を有する構成要素は同一符号を付され、繰り返しの説明は省略される場合がある。ある実施形態についての記述はすべて、明示的にまたは自明的に排除されない限り、別の実施形態の記述としても当てはまる。
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各機能ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から記述される。また、各機能ブロックが、以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。
また、実施形態の方法のフローにおけるいずれのステップも、例示の順序に限定されず、そうでないと示されない限り、例示の順序とは異なる順序でおよび(または)別のステップと並行して起こることが可能である。
本明細書および特許請求の範囲において、ある第1要素が別の第2要素に「接続されている」とは、第1要素が直接的または常時あるいは選択的に導電性となる要素を介して第2要素に接続されていることを含む。
(第1実施形態)
<1−1−1.構成(構造)>
図1は、第1実施形態のメモリシステムの機能ブロックを示す。図1に示されるように、メモリシステム100は、記憶装置1およびメモリコントローラ2を含む。メモリシステム100は、ホスト装置200と通信する。
メモリコントローラ2は、ホスト装置200から命令を受け取り、受け取られた命令に基づいて記憶装置1を制御する。メモリコントローラ2は、CPU(central processing unit)21、ROM(read only memory)22、RAM23、ECC(error correction code)回路24、メモリインターフェイス25、ホストインターフェイス26等の要素を含む。
ROM22に保持されているプログラムがCPU21によって実行されることによって、メモリコントローラ2は種々の動作を行う。RAM23は、一時的なデータを保持する。
ECC回路24は、記憶装置1に書き込まれる実体的データに、実体的データの誤り訂正のための誤り訂正用データを付す。記憶装置1に書き込まれるデータ(書き込みデータ)は、実体的データと、対応する誤り訂正用データと、を含む。また、ECC回路24は、記憶装置1から読み出されたデータ(読み出しデータ)を、読み出しデータ中の誤り訂正用データを使用して誤りを検出し、かつ誤りがある場合は誤りを訂正し、読み出しデータ中の正しい(誤りを含んでいない)実体的データを得る。
メモリインターフェイス25は、記憶装置1と接続され、メモリコントローラ2と記憶装置1との通信を司る。ホストインターフェイス26は、バスを介してホスト装置200と接続され、メモリコントローラ2とホスト装置200との通信を司る。
図2は、記憶装置1の機能ブロックを示す。図2に示されるように、記憶装置1は、メモリセルアレイ11、シーケンサ(コントローラ)12、ワード線(WL)デコーダ13、ゲート線(SGL)デコーダ14、グローバルビット線(GBL)デコーダ15、センスアンプ16、およびデータラッチセット17を含む。
メモリセルアレイ11は、複数のメモリセルMCを含む。ある複数のメモリセルMCは1つのページを構成する。各メモリセルMCは第1端において1つのワード線WLと接続され、第2端において1つのビット線BLと接続される。各ビット線BLは、トランジスタST(図示せず)を介して1つのグローバルビット線GBLと接続されている。1つのグローバルビット線GBLには、対応するトランジスタST(図示せず)を介して複数のビット線BLが接続されている。各トランジスタSTは、1つのゲート線SGLによってオンし、すなわち、当該トランジスタSTの両端を電気的に接続する。メモリセルアレイ11の詳細は後述される。ビット線BLは、グローバルビット線GBLとの区別のために、ローカルビット線と称される場合がある。
WLデコーダ13は、複数のワード線WLと接続されており、ワード線選択部およびワード線ドライバを含む。ワード線選択部は、シーケンサ12からワード線アドレスを示す信号(WLアドレス信号)を受け取り、受け取られたWLアドレス信号により示されるWLアドレスを付されたワード線WLを選択する。ワード線ドライバは、シーケンサ12の制御に従って、選択されたワード線(選択ワード線)WLおよび非選択のワード線(非選択ワード線)WLに、データの読み出し、書き込み、および消去の間に、必要な電圧を印加する。
SGLデコーダ14は、複数のゲート線SGLと接続されており、ゲート線選択部およびゲート線ドライバを含む。ゲート線選択部は、シーケンサ12からゲート線アドレスを示す信号(SGLアドレス信号)を受け取り、受け取られたSGLアドレス信号により示されるゲート線アドレスを付されたゲート線SGLを選択する。ゲート線ドライバは、シーケンサ12の制御に従って、選択されたゲート線SGL及び非選択のゲート線SGLに、データの読み出し、書き込み、および消去の間、必要な電圧を印加する。
GBLデコーダ15は、複数のグローバルビット線GBLと接続されており、グローバルビット線選択部およびグローバルビット線ドライバを含む。グローバルビット線選択部は、シーケンサ12からグローバルビット線アドレスを示す信号(GBLアドレス信号)を受け取り、受け取られたGBLアドレス信号により示されるGBLアドレスを付されたグローバルビット線GBLを選択する。グローバルビット線ドライバは、シーケンサ12の制御に従って、選択されたグローバルビット線(選択グローバルビット線)GBL及び非選択のグローバルビット線(非選択グローバルビット線)GBLに、データの読み出し、書き込み、および消去の間、必要な電圧を印加する。
センスアンプ16は、GBLデコーダ15によって選択されたグローバルビット線GBLを流れる電流を受け取り、受け取られた電流に基づいて、読み出し対象のメモリセルMCに保持されているデータを割り出す。
データラッチセット17は、センスアンプ16からのデータおよびシーケンサ12からのデータを保持し、複数のデータラッチを含む。
シーケンサ12は、メモリコントローラ2との間で信号DQおよび制御信号を送受信する。信号DQは、例えば8ビットの幅を有し、データの実体であり、コマンド、データ、アドレス信号、ステータスデータ等を含む。制御信号は、信号RY/ ̄BYを含む。信号RY/ ̄BYは、記憶装置1がレディー状態であるか、ビジー状態であるかを示し、ローレベルによってビジー状態を示す。記憶装置1は、レディー状態においてメモリコントローラ2からの命令を受け付け、ビジー状態においてメモリコントローラ2からの命令を受け付けない。
シーケンサ12は、受け取られたコマンドおよびアドレス信号に基づいて、センスアンプ16およびデータラッチセット17を制御し、データラッチセット17へ(から)データを送信(受信)する。また、シーケンサ12は、受け取られたアドレス信号から、WLアドレス、SGLアドレス、およびGBLアドレスを取得する。
シーケンサ12は、データの書き込みの間、WLデコーダ13およびGBLデコーダ15を制御して、選択ワード線WLと選択グローバルビット線BLとの間に大きい電位差を発生させる。この電位差により、メモリセルMCの抵抗状態が遷移する。シーケンサ12は、データの読み出しの間、選択ワード線WLと選択グローバルビット線BLとの間に抵抗状態の遷移が生じない大きさの電位差を発生させ、センスアンプ16は、選択グローバルビット線BLを流れる電流を検出する。
シーケンサ12は、データレジスタ12aを含む。データレジスタ12aは、ステータスデータ等のデータを保持する。ステータスデータは、記憶装置1の状態を示す。シーケンサ12はさらに計数・判断回路12bを含む。計数・判断回路12bは、あるデータ中のあるデータ(値)のビットを計数し、また、計数結果をある基準値と比較する。
後述の「ワード線WL」の表記に後続する英数字を伴った要素もワード線WLであり、後続する英数字はワード線WLを互いに区別するために使用される。後述の「ビット線BL」の表記に後続する英数字を伴った要素もビット線BLであり、後続する英数字はビット線BLを互いに区別するために使用される。後述の「グローバルビット線GBL」の表記に後続する英数字を伴った要素もグローバルビット線GBLであり、後続する英数字はグローバルビット線GBLを互いに区別するために使用される。後述の「メモリセルMC」の表記に後続する英数字を伴った要素もメモリセルMCであり、後続する英数字はメモリセルMCを互いに区別するために使用される。後述の「ゲート線SGL」の表記に後続する英数字を伴った要素もゲート線SGLであり、後続する英数字はゲート線SGLを互いに区別するために使用される。後述の「トランジスタST」の表記に後続する英数字を伴った要素もトランジスタSTであり、後続する英数字はトランジスタSTを互いに区別するために使用される。
<1−1−2.メモリセルアレイ>
図3は、第1実施形態のメモリセルアレイの一部の要素および接続を示す。
図3に示されるように、αが0〜k(kは自然数)の各々の場合について、グローバルビット線GBL0は、トランジスタSTα0を介してビット線BLα0と接続されている。同様に、αが0〜kの各々の場合かつβが0〜n(nは自然数)の各々の場合について、グローバルビット線GBLβは、トランジスタSTαβを介してビット線BLαβと接続されている。αが0〜kの各々の場合かつβが0〜nの各々の場合について、トランジスタSTαβはゲートにおいて、ゲート線SGLαと接続されている。
βが0〜nの各々の場合かつγが0〜m(mは自然数)の各々の場合について、ビット線BL0βは、メモリセルMCaγ0βを介して、ワード線WLaγと接続されている。同様に、αが0〜kの各々の場合かつβが0〜nの各々の場合かつγが0〜mの各々の場合について、ビット線BLαβは、メモリセルMCaγαβを介して、ワード線WLaγと接続されている。さらに、αが0〜kの各々の場合かつβが0〜nの各々の場合かつγが0〜mの各々の場合について、ビット線BLαβは、メモリセルMCbγαβを介して、ワード線WLbγと接続されている。
1つのゲート線SGLを共有する複数のトランジスタSTとそれぞれのビット線BLと、1つのワード線WLの間に接続された複数のメモリセルMCの組は、1つのセルセットCUを構成する。1つのセルセットCUにより提供される記憶空間は、ページと称される。あるセルセットCUの1ページの各ビットのデータは、当該セルセットCU中の1つのメモリセルMCによって保持される。
図4は、第1実施形態のメモリセルアレイの一部の立体構造を示し、互いに直交するx軸、y軸、およびz軸により定義される空間での構造を示す。
図示せぬ基板のz軸に沿った上方に、複数の導電体CGBが設けられる。導電体CGBは、x軸に沿って延び、y軸に沿って間隔を有し、各々が1つのグローバルビット線GBLとして機能する。
各導電体CGBの上面上に、半導体SCが設けられる。1つの導電体CGBと接続された半導体SCは、x軸に沿って間隔を有して並ぶ。半導体SCは、例えばシリコンを含むか、シリコンからなる。各半導体SCは、x軸に沿って対向する2つの側面上において、絶縁体IGを設けられている。各半導体SCは、z軸の下方から、部分SCa、SCb、およびSCcを含む。
導電体CGBの上方に、複数の導電体CSが設けられる。x軸に関して並ぶ導電体CBの対の各々の間に2つの導電体CSが間隔を有して並ぶ。導電体CSは、y軸に沿って延び、x軸に沿って間隔を有して並ぶ。各導電体CSは、1つのゲート線SGLとして機能し、1つの絶縁体IGと接し、当該絶縁体IGとともに1つの半導体SCの部分SCbを挟む。1つの部分SCb、1つの導電体CS、および当該部分SCbならびに当該導電体CSの間の絶縁体IGは、1つのトランジスタSTを構成する。1つの半導体SCの部分SCaの一部およびSCcの一部は、1つのトランジスタSTのソース/ドレイン領域として機能する。1つの半導体SCの部分SCbの一部は、1つのトランジスタSTのチャネル領域として機能する。
各半導体SCの上面上に、導電体CBが設けられる。複数の導電体CBは、z軸に沿って延び、各々が1つのビット線BL(BL0、BL1、…)として機能する。
各導電体CBは、x軸に沿って対向する2つの側面上において、抵抗変化層VRを設けられている。抵抗変化層VRは、連続的に可変な値の抵抗を有することができる抵抗変化材料を含むか、そのような抵抗変化材料からなる。抵抗変化材料は、電圧を印加されると、より低い抵抗値を有する状態に至る。抵抗変化材料は、電流が流れると、より高い抵抗値の状態を有する状態に遷移する。このような抵抗変化材料は、HfO、TiO2、ZnMn2O4、NiO、SrZrO3、およびPr0.7Ca0.3MnO3、C等の材料の少なくとも1つを含む。また、抵抗変化材料は、多結晶またはアモルファス状態のSi、または、Ge、SiGe、GaAs、InP、GaP、GaInAsP、GaN、SiC、SiO、SiON、SiN、HfSiO、AlOの少なくとも1つを含む。さらに、抵抗変化層VRは、上に列挙された材料の層が積層された構造を含むことが可能である。
導電体CBと抵抗変化層VRとの間に、電極(図示せず)が設けられてもよい。電極の材料は、Ag、Au、Ti、Ni、Co、Al、Fe、Cr、Cu、W、Hf、Ta、Pt、Ru、ZrまたはIr、あるいはこれらの材料の窒化物または炭化物を含む。また、電極は、上に列挙された材料を添加された多結晶シリコンから構成されることが可能である。
導電体CSの上方に、導電体CWの複数の層が設けられる。相違する層は、z軸に沿って相違する座標に位置する。図4は、5つの層の例、すなわちβ=5の場合の例を示し、第1層〜第5層はこの順でz軸に沿って上方に向かって並ぶ。各層は、複数の導電体CWを含む。導電体CWは、y軸に沿って延び、x軸に沿って間隔を有して並ぶ。各層において隣り合う2つの導電体CWは、1つの導電体CBを挟み、当該導電体CB上の2つの抵抗変化層VRとそれぞれ接する。各層中の導電体CWのうちの1つおきの複数の導電体CWの第1組は、第1層のx軸およびy軸に沿った面の構造を示す図5に示されるように、当該導電体CWの各第1端において相互に接続されており、導電体CWとそれらを接続する導電体とは櫛形構造を形成する。同様に、各層中の複数の導電体CWのうちの1つおきの複数の導電体CWの第2組は、図5に示されるように、当該導電体CWの各第2端において相互に接続されており、導電体CWとそれらを接続する導電体とは櫛形構造を形成する。γが0〜n(nは自然数)の各々の場合について、第γ層の導電体CWの第1組はワード線WLaγとして機能し、第γ層の導電体CWの第2組はワード線WLbγとして機能する。図5は、第1層について示す。
各抵抗変化層VRのうち、1つの導電体CWと1つの導電体CBとに挟まれた部分は、1つのメモリセルMCとして機能する。
<1−1−3.メモリセル>
メモリセルMCは、書き込みにより、低抵抗状態または高抵抗状態へと移される。図6に示されるように、書き込まれた直後の低抵抗状態のメモリセルMCはある抵抗値Rlhより低い抵抗値を有し、かつ書き込まれた直後の高抵抗状態のメモリセルMCはある抵抗値Rhsより高い抵抗値を有するように、メモリセルMCにデータが書き込まれる。高抵抗状態にある複数のメモリセルMCであっても、メモリセルMC、センスアンプ、および配線の特性等のばらつきに起因して、相違する抵抗値を有し得る。同様に、低抵抗状態にある複数のメモリセルMCであっても、相違する抵抗値を有し得る。このため、同じ抵抗状態にあるメモリセルMCの抵抗値は1つの分布を形成する。
低抵抗状態にある複数のメモリセルMCのうち、最大の抵抗値を有するメモリセルMClhは、抵抗値Rlhを有する。一方、高抵抗状態にある複数のメモリセルMCのうち、最小の抵抗値を有するメモリセルMChsは、抵抗値Rhsを有する。書き込まれた直後の複数のメモリセルMCについての抵抗値Rlhと抵抗値Rhsが大きな差を有するように記憶装置1は動作する。
メモリセルMCは抵抗状態に基づいてデータを記憶し、よってデータの読み出しのためにメモリセルMCの抵抗値が判断される。そのために、図7に示されるように、メモリセルMCにある大きさの読み出し電圧Vrが印加され、結果メモリセルMCを流れる電流の大きさに基づいてメモリセルMCの抵抗値がセンスアンプ16によって判断される。2つの抵抗値分布が間隔を有するようにデータが書き込まれかつ適当な読み出し電圧Vrが使用されることにより、読み出し電圧Vrの印加によって、センスアンプ16は、メモリセルMCが2つの抵抗状態のいずれにあるかを判断することができる。低抵抗状態にあるメモリセルMCは、導体に類似の低い抵抗値を有し、よって、ある大きさの読み出し電圧Vrを印加されると、メモリセルMCをある大きさの以上の読み出し電流が流れる。一方、高抵抗状態にあるメモリセルMCは、絶縁体に類似の高い抵抗値を有し、よって、読み出し電圧Vrを印加されても、ある大きさ以下の読み出し電流しか流れない。センスアンプ16は、読み出し電流が基準の大きさ以下の場合、メモリセルMCが0データを保持していると判断し、読み出し電流が基準の大きさを超える場合、メモリセルMCが1データを保持していると判断する。基準の大きさを超える読み出し電流を流す抵抗状態のメモリセルMCが0データを保持していて、基準の大きさ以下の読み出し電流を流す抵抗状態のメモリセルMCが1データを保持しているとして扱われてもよい。
図6に示されるように、記憶装置1での通常のデータ読み出しでは、通常読み出し電圧VmがメモリセルMCに印加される。通常読み出し電圧Vmは、読み出し電圧Vlhと読み出し電圧Vhsとの間の大きさを有する。読み出し電圧Vlhは、書き込み直後の低抵抗状態のメモリセルMCに印加された場合にいずれの低抵抗状態のメモリセルもが低抵抗状態にあると判断される大きさの読み出し電流を流す大きさを有する。読み出し電圧Vhsは、書き込み直後の高抵抗状態のメモリセルMCに印加された場合にいずれの高抵抗状態のメモリセルMCもが高抵抗状態にあると判断される大きさの読み出し電流を流す大きさを有する。読み出し電圧Vlh以下の読み出し電圧がデータ読み出しに使用されると、最大抵抗値メモリセルMCを含むいくつかのメモリセルMCは、高抵抗状態にあると誤って判断され得る。読み出し電圧Vhs以上の読み出し電圧がデータ読み出しに使用されると、最小抵抗値メモリセルMChsを含むいくつかのメモリセルMCは、低抵抗状態にあると誤って判断され得る。
<1−1−4.センスアンプおよびデータラッチセット>
図8は、センスアンプ16およびデータラッチセット17の要素および接続を示す。図8の太線は、制御信号を伝送する。
センスアンプ16は、n+1個のセンスアンプ回路SACを含む。センスアンプ回路SACはみな、要素および接続の同じ組を有し、グローバルビット線GBL(GBL0、GBL1、…)とそれぞれ接続されている。データの読み出しの際、各センスアンプ回路SACは、当該センスアンプ回路SACと接続された(対応する)1つのグローバルビット線GBLおよび1つのビット線BLを介して読み出し対象の1つのメモリセルMCと電気的に接続される。そして、各センスアンプ回路SACは、対応するビット線BLの電流をセンスし、センスの結果に基づいて、対応するメモリセルMCが2つの抵抗状態のいずれに属するかを判断する。各センスアンプ回路SACは、センスの結果、2つの抵抗状態に基づいて、データ0またはデータ1を保持する。
データラッチセット17は、データラッチ17a、17b、17c、および17dならびに複数の演算回路LCを含む。データラッチ17a、17b、17c、および17dの各々は、1ページの大きさデータを保持できる。データラッチ17aは、n+1個のデータラッチ回路DLCaを含む。データラッチ17bは、n+1個のデータラッチ回路DLCbを含む。データラッチ17cは、n+1個のデータラッチ回路DLCcを含む。データラッチ17cは、n+1個のデータラッチ回路DLCdを含む。データラッチ回路DLCa、DLCb、DLC、およびDLCdは、相互に区別される必要が無い場合は、データラッチ回路DLCと称される。各データラッチ回路DLCは、1ビットのデータを保持できる。
データラッチ17dは、例えば、メモリコントローラ2と記憶装置1との間のデータの入出力に使用される。メモリコントローラ2から受け取られたデータは、まずデータラッチ17dに入力され、記憶装置1から出力されるデータは、データラッチ17dから送出される。
データラッチ17a、17b、17c、および17dの各々の1つのデータラッチ回路DLCは、1つのセンスアンプ回路SACと接続されている。相互に接続されたセンスアンプ回路SAC、およびデータラッチ回路DLCa、DLCb、DLCc、ならびにDLCdは、それぞれ、センスアンプ16、ならびにデータラッチ17a、17b、17c、および17dの各々の1ページサイズデータ中の同じ位置のビットを扱う。
<1−2.動作>
メモリシステム100の動作の説明に先立って、メモリシステム100の動作において使用される読み出し電圧が記述される。
図9は、第1実施形態のメモリシステム100において使用される読み出し電圧と、メモリセルMCの抵抗値の分布を示す。図9は、図7と同じ抵抗値分布を破線により示す。また、図9は、データの書き込みからある時間が経過した時点でのメモリセルMCの抵抗値の分布を実線および一点鎖線により示す。データを書き込まれたメモリセルMCは、データの読み出しを経たり、および(または)時間の経過により、書き込まれた直後の抵抗値と異なる抵抗値を有するに至り得る。実線および一点鎖線の分布は、このような変化後の抵抗値分布の例を示す。抵抗値分布の広がりの大きさは、書き込み直後からのメモリセルMCの状態の劣化に相関する。
メモリセルMCの抵抗値の変化の結果、一部の低抵抗状態のメモリセルMCは、変化前より高い抵抗値を有する。このようなメモリセルMCは、通常読み出し電圧Vmの使用によって誤って高抵抗状態と判断される場合があり、このことは当該メモリセルMCに書き込まれたデータ(期待データ)が正しく読み出されないことを意味する。
同様に、メモリセルMCの抵抗値の変化の結果、一部の高抵抗状態のメモリセルMCは、変化前より低い抵抗値を有する。このようなメモリセルMCは、通常読み出し電圧Vmの使用によって誤って低抵抗状態と判断される場合があり、このことはやはり当該メモリセルMCに書き込まれたデータが正しく読み出されないことを意味する。
読み出し対象の1つのセルセット(選択セルセット)CUが、期待データが正しく読み出されないメモリセルMCを含んでいても、そのようなメモリセルMCの数(誤りビットの数)が少なければ、選択セルセットCUから読み出されたデータ(読み出しデータ)中の誤りビットはECC回路24によって訂正されることが可能である。一方、読出しデータ中の誤りビットが多過ぎると、ECC回路24は誤りビットを訂正できず、ECCエラーが生じる。具体的には、選択セルセットCUからある読み出し電圧を使用してデータが読み出された結果、誤って高抵抗状態と判断されるメモリセルMCの数が多過ぎると、この読み出しはECCエラーに帰結する。同様に、選択セルセットCUからある読み出し電圧を使用してデータが読み出された結果、誤って低抵抗状態と判断されるメモリセルMCの数が多過ぎると、この読み出しはECCエラーに帰結する。
ECC回路24に入力される前の選択セルセットCUからの読み出しデータが、いくつの誤りビット数が許容するかは、メモリシステム100に要求される性能に依存する。例えば、1つのセルセットCUの読み出しデータ中で、1ビットの誤りは許容される場合がある。または、1つのセルセットCUの読み出しデータ中で、1ビットの誤りも許容されない場合もある。以下の記述は、例として、1つのセルセットCUの読み出しデータ中で1ビットの誤りも許容されない場合に基づく。1つのセルセットCUの読み出しデータ中で1ビット以上の誤りが許容される場合も以下の記述の原理に基づいて、実現されることが可能である。
メモリシステム100は、予め、通常読み出し電圧Vmを使用したデータ読み出し(通常データ読み出し)でECC回路24による誤り訂正を現在または近い将来に必要とする読み出しデータを保持するセルセットCUの特定を試みる。そのために、メモリシステム100は、読み出し電圧Vpr1、Vpr2、Vpr3、およびVpr4を使用する。読み出し電圧Vpr1は、読み出し電圧Vlhより高くかつ通常読み出し電圧Vmより低い。読み出し電圧Vpr2は、通常読み出し電圧Vmより高くかつ読み出し電圧Vhsより低い。読み出し電圧Vpr3は、読み出し電圧Vpr1より高くかつ通常読み出し電圧Vmより低い。読み出し電圧Vpr4は、通常読み出し電圧Vmより高くかつ読み出し電圧Vpr2より低い。さらに、読み出し電圧Vpr1、Vpr2、Vpr3、およびVpr4は、以下の条件を満たす。
後述のように、読み出し電圧Vpr1およびVpr2の印加によって、抵抗状態が少し劣化したセルセットMCが特定される。また、読み出し電圧Vpr3およびVpr4の印加によって、抵抗状態が中程度劣化したセルセットMCが特定される。読み出し電圧Vpr1が電圧Vlhに近過ぎると、および(または)読み出し電圧Vpr2が電圧Vhsに近過ぎると、それほど劣化していないセルセットCUが特定されてしまう。一方、読み出し電圧Vpr1が読み出し電圧Vmに近過ぎると、および(または)読み出し電圧Vpr2が読み出し電圧Vmに近過ぎると、抵抗状態が中程度劣化する前に抵抗状態が少し劣化したセルセットMCが特定され難い。同様に、一方、読み出し電圧Vpr3が読み出し電圧Vmに近過ぎると、および(または)読み出し電圧Vpr4が読み出し電圧Vmに近過ぎると、抵抗状態が大きく劣化する前に抵抗状態が中程度劣化したセルセットMCが特定され難い。これらに基づいて、特定を望まれる低抵抗状態劣化の程度に基づいて、読み出し電圧Vpr1、Vpr2、Vpr3、およびVpr4が決定される。
読み出し電圧Vpr3は、選択セルセットCUからの通常データ読み出しでECC回路24による誤り訂正を現在または近い将来に必要とし得るセルセットCUを特定するための大きさを有し、通常データ読み出しで誤り訂正が必要となる可能性の許容値に基づいて決定される。低抵抗状態のあるメモリセルMCが書き込み直後より大幅に高い抵抗値を有する場合、通常読み出し電圧Vmを使用した当該メモリセルMCからの読み出しデータは誤りを含まなくても、読み出し電圧Vpr3を使用した当該メモリセルMCからの読み出しデータは誤りを含む場合がある。このようなメモリセルMCは、近い将来に、通常読み出し電圧Vmを使用して読み出されると誤ったデータを保持すると判断されるほどに高い抵抗値を有し得、または、読み出しの条件によっては通常データ読み出しで実際に誤ったデータを保持すると判断される場合もある。このようなメモリセルMCが特定されることが有用である。その目的で、読み出し電圧Vpr3の大きさの選択によって、ある大きさ以上の抵抗値を有するメモリセルMCと、そうでないメモリセルMCが選別されることが可能である。そこで、読み出し電圧Vpr3は、通常データ読み出しで誤り訂正が必要となる可能性の許容値に基づいて決定される。読み出し電圧Vpr3が低いほど、近い将来に通常データ読み出しで誤り訂正が必要となり得るメモリセルMCが早い段階で検出されることが可能である。
同様に、読み出し電圧Vpr4は、選択セルセットCUからの通常データ読み出しでECC回路24による誤り訂正を現在または近い将来に必要とし得るセルセットCUを特定するための大きさを有し、通常データ読み出しで誤り訂正が必要となる可能性の許容値に基づいて決定される。高抵抗状態のあるメモリセルMCが書き込み直後より大幅に低い抵抗値を有する場合、通常読み出し電圧Vmを使用した当該メモリセルMCからの読み出しデータは誤りを含まなくても、読み出し電圧Vpr4を使用した当該メモリセルMCからの読み出しデータは誤りを含む場合がある。このようなメモリセルMCは、近い将来に、通常読み出し電圧Vmを使用して読み出されると誤ったデータを保持すると判断されるほどに低い抵抗値を有し得、または、読み出しの条件によっては通常データ読み出しで実際に誤ったデータを保持すると判断される場合もある。このようなメモリセルMCが特定されることが有用である。その目的で、読み出し電圧Vpr4の大きさの選択によって、ある大きさ以下の抵抗値を有するメモリセルMCと、そうでないメモリセルMCが選別されることが可能である。そこで、読み出し電圧Vpr4は、通常データ読み出しで誤り訂正が必要となる可能性の許容値に基づいて決定される。読み出し電圧Vpr4が高いほど、近い将来に通常データ読み出しで誤り訂正が必要となり得るメモリセルMCが早い段階で検出されることが可能である。
次に、図10を参照して、セルセットCUに書き込まれかつ1ページサイズの大きさを有する書き込みデータについて記述される。メモリコントローラ2は、書き込みデータの中に、書き込みデータに関する管理用のデータを含める。すなわち、1ページサイズの書き込みデータは、図10に示されるように、情報データと管理データを含む。管理データは、1または複数の反転フラグビットを含む。反転フラグビットの用途については後述される。メモリコントローラ2は、記憶装置1への書き込みの指示の時、固定の値または固定のパターンの反転フラグビットを含んだ1ページサイズの書き込みデータを記憶装置1に送信する。固定の値は、1つの反転フラグビットが使用される場合、例えば1データであり、複数の反転フラグビットが使用される場合は全ての反転フラグビットにおいて1データである。固定のパターンは、複数の反転フラグビットが使用される場合、0データと1データの予め定められた組み合わせを含む。メモリコントローラ2は、通常のデータ書き込み(後述のビットデータを反転されたデータを書き込む書き込みでない書き込み)において、反転フラグビットにおいて、データ反転を示さない値をセットする。
図11および図12は、第1実施形態のメモリシステムの動作のフローを示す。メモリコントローラ2は、例えばホスト装置200の指示によらずに自律的にまたはホスト装置200の指示に応答して、図11および図12のフローを行って記憶装置1中のデータを検査し、状態に基づいて、読み出し精度の向上のための処理を行う。メモリコントローラ2は、例えば、ホスト装置200からの指示が無い期間中に、図11および図12のフローを行う。図11および図12は、ある1つの選択セルセットCUxについてのデータ検査および読み出し精度向上処理を示す。
図11および図12に示されるように、メモリコントローラ2は、選択セルセットCUxについての第1検査読み出しを記憶装置1に指示する(ステップS1)。記憶装置1は、指示を受け取ると、ステップS2〜S6を行う。記憶装置1は、ステップS2〜S6を行っている間、ビジー信号をメモリコントローラ2に送信する。
ステップS2において、記憶装置1は、読み出し電圧Vpr1を使用して選択セルセットCUxからデータを読み出す、すなわち、PR1を行う。具体的には、シーケンサ12は、WLデコーダ13、SGLデコーダ14、およびGBLデコーダ15を制御して、選択セルセットCUxと接続されたワード線(選択ワード線)WLと、選択セルセットCUxを選択セルセットCUxとそれぞれ接続されたビット線BLおよび対応するトランジスタSTを介して対応するグローバルビット線(選択グローバルビット線)GBLに接続し、選択ワード線WLと選択グローバルビット線GBLとに電圧Vpr1を印加する。次いで、シーケンサ12は、センスアンプ16を制御して、グローバルビット線GBL上の電流に基づいて、選択セルセットCUxの各メモリセルMCが0データまたは1データを保持しているかを判断する。各メモリセルMCについての判断の結果の組は、あるデータラッチ(例えばデータラッチ17a)の対応する1つのデータラッチ回路DLCに保持される。こうして、データラッチ17aは、読み出し電圧Vpr1を使用して選択セルセットCUxから読み出された1ページサイズのデータ(Vpr1読み出しデータ)を保持するに至る。Vpr1読み出しデータは、各ビットにおいて、対応するメモリセルMCが保持していると判断された0データまたは1データを有する。
ステップS3において、記憶装置1は、ステップS2と同様にして、読み出し電圧Vpr2を使用して選択セルセットCUxからデータを読み出す、すなわちPR2を行う。読み出された1ページサイズのデータ(Vpr2読み出しデータ)は、別のデータラッチ(例えばデータラッチ17b)に保持される。Vpr2読み出しデータは、各ビットにおいて、対応するメモリセルMCが保持していると判断された0データまたは1データを有する。ステップS3は、ステップS2に先行してもよい。
ステップS4において、シーケンサ12は、Vpr1読み出しデータとVpr2読み出しデータの排他的論理和(XOR)を演算する。具体的には、シーケンサ12は、Vpr1読み出しデータとVpr2読み出しデータの同じ位置のそれぞれの計2つのビットを入力として用い、論理演算回路LCを用いて2つの入力のXORを演算し、このような演算をVpr1読み出しデータおよびVpr2読み出しデータの全ビットに対して行う。演算の結果は、さらに別のデータラッチ(例えばデータラッチ17c)に保持される。より具体的には、シーケンサ12は、あるデータラッチ回路DLCa中のデータと、当該データラッチ回路DLCaと接続されたデータラッチ回路DLCb中のデータのXORを、これらのデータラッチ回路DLCaおよびDLCbと接続された論理回路LCを使用して演算する。演算の結果は、論理演算の入力のデータを保持するデータラッチ回路DLCaおよびDLCbと接続されたデータラッチ回路DLCcに保持される。こうして、データラッチ17cは、Vpr1読み出しデータおよびVpr2読み出しデータのXOR演算の結果を含んだデータ(PR12XORデータ)を保持するに至る。PR12XORデータは、各ビットにおいて、0データまたは1データを有する。1データは、対応するビットにおいて、Vpr1読み出しデータとVpr2読み出しデータが相違するデータを有することを意味する。
ステップS5において、計数・判断回路12bは、PR12XORデータ中の1データのビットの数(PR12相違ビット数)C1を計数する。ステップS6において、シーケンサ12は、PR12相違ビット数C1をレジスタ12aのある領域に保持する。また、シーケンサ12は、PR12相違ビット数C1を第1基準値と比較し、比較結果(PR12比較結果)CR1に基づく値をレジスタ12aの別の領域に保持する。第1基準値は、例えば0である。PR12比較結果CR1は、PR12相違ビット数C1が第1基準値以下であれば、データ0であり、PR12相違ビット数C1が第1基準値超であれば、データ1である。また、シーケンサ12は、ステップS6の完了とともに、レディー信号をメモリコントローラ2に送信する。メモリコントローラ2は、レディー信号を受け取ることによって、ステップS6の完了を認識する。
ステップS6が完了したことを知得して、メモリコントローラ2は、ステータスデータの読み出しを記憶装置1に指示する(ステップS8)。シーケンサ12は、指示を受け取ると、ステータスデータをメモリコントローラ2に送信する(ステップS9)。ステータスデータは、レジスタ12a中の計数値、すなわちPR12相違ビット数C1、およびPR12比較結果CR1を含む。
ステップS10において、メモリコントローラ2は、PR12比較結果CR1を参照して、相違ビット数C1が第1基準値を超えているかを判断する。PR12相違ビット数C1が第1基準値を超えていなければ、すなわちPR12比較結果CR1が0データであれば(No分岐)、フローは終了し、第1基準値を超えていれば、すなわちPR12比較結果CR1が1データであれば(Yes分岐)、フローはステップS21に移行する。
ステップS21において、メモリコントローラ2は、選択セルセットCUxについての第2検査読み出しを記憶装置1に指示する。記憶装置1は、指示を受け取ると、ステップS22〜S26を行う。記憶装置1は、ステップS22〜S26を行っている間、ビジー信号をメモリコントローラ2に送信する。ステップS22〜S26は、ステップS2〜S6にそれぞれ類似する。主な相違点は、読み出し電圧Vpr1およびVpr2に代えて、それぞれ読み出し電圧Vpr3およびVpr4が使用されること、およびこれに関連する事項である。その他の点については、ステップS22〜S26は、ステップS2〜S6とそれぞれ同じである。以下、ステップS22〜S26が簡単に記述される。
ステップS22において、記憶装置1は、読み出し電圧Vpr3を使用して選択セルセットCUxからデータを読み出す、すなわち、PR3を行う。読み出された1ページサイズのデータ(Vpr3読み出しデータ)は、あるデータラッチ(例えばデータラッチ17a)に保持される。Vpr3読み出しデータは、各ビットにおいて、対応するメモリセルMCが保持していると判断された0データまたは1データを有する。
ステップS23において、記憶装置1は、読み出し電圧Vpr4を使用して選択セルセットCUxからデータを読み出す、すなわち、PR4を行う。読み出された1ページサイズのデータ(Vpr4読み出しデータ)は、別のデータラッチ(例えばデータラッチ17b)に保持される。Vpr4読み出しデータは、各ビットにおいて、対応するメモリセルMCが保持していると判断された0データまたは1データを有する。ステップS23は、ステップS22に先行してもよい。
ステップS24において、シーケンサ12は、Vpr3読み出しデータとVpr4読み出しデータのXORを演算する。XOR演算の結果を含んだデータ(PR34XORデータ)は、さらに別のデータラッチ(例えばデータラッチ17c)に保持される。PR34XORデータは、各ビットにおいて、0データまたは1データを有する。1データは、対応するビットにおいて、Vpr3読み出しデータとVpr4読み出しデータが相違するデータを有することを意味する。
ステップS26において、シーケンサ12は、PR34XORデータ中の1データのビット数(PR34相違ビット数)C2をレジスタ12aの別の領域に保持する。また、シーケンサ12は、PR34相違ビット数C2を第2基準値と比較し、比較結果(PR34比較結果)CR2に基づく値をレジスタ12aの別の領域に保持する。第2基準値は、例えば0である。PR34比較結果CR2は、PR34相違ビット数C2が第2基準値以下であれば、データ0であり、PR34相違ビット数C2が第2基準値超であれば、データ1である。
ステップS28において、メモリコントローラ2は、ステータスデータの読み出しを記憶装置1に指示する。ステップS29において、シーケンサ12は、ステータスデータをメモリコントローラ2に送信する。ステータスデータは、レジスタ12a中の計数値、すなわちPR34相違ビット数C2、およびPR34比較結果CR2を含む。
ステップS30において、メモリコントローラ2は、PR34比較結果CR2を参照して、PR34相違ビット数C2が第2基準値を超えているかを判断する。第2基準値は、例えば0である。PR34相違ビット数C2が第2基準値を超えていなければ(No分岐)、フローはステップS31に移行する。
ステップS31において、メモリコントローラ2は、選択セルセットCUxについての反転上書きを指示する。記憶装置1は、指示を受け取ると、ステップS32およびS33を行う。ステップS32において、シーケンサ12は、通常読み出し電圧Vmを使用して選択セルセットCUx中のデータを読み出し、読み出されたデータ(CUx読み出しデータ)をあるデータラッチ(例えばデータラッチ17a)に読み出す。シーケンサ12は、例えば論理回路LCを使用して、CUx読み出しデータの全ビットにおいて反転されたデータを有するデータ(CUx反転データ)を生成する。CUx反転データは、反転フラグビットにおいても、CUx読み出しデータから反転されたデータを有する。書き込まれた時から反転されたデータを有する反転フラグビットは、CUx反転データが、各ビットにおいて、書き込まれた時のデータから反転されたデータを有していることを示す。CUx反転データは、別のデータラッチ(例えばデータラッチ17c)に保持される。以下の記述において、データ反転を示さない反転フラグビットを含んだデータは、元データと称される場合がある。
ステップS33において、シーケンサ12は、CUx反転データをCUxに上書きする。この結果、選択セルセットCUxは、全ビットにおいて、ステップS33の開始の時点で保持していたデータの反転されたデータを保持するに至る。ステップS33が完了すると、フローは終了する。
ステップS30においてPR34相違ビット数C2が第2基準値を超えている場合(Yes分岐)、フローはステップS35に移行する。ステップS35において、メモリコントローラ2は、選択セルセットCUxからのデータ読み出しを記憶装置1に指示する。シーケンサ12は、指示を受け取ると、選択セルセットCUxに対して通常データ読み出しを行ってCUx読み出しデータを取得し、CUx読み出しデータをメモリコントローラ2に送信する。メモリコントローラ2は、CUx読み出しデータを受け取ると、ECC回路24を使用して、CUx読み出しデータ中に誤りがある場合に、これを訂正する。
ステップS37において、メモリコントローラ2は、誤り訂正された(正しい)CUx読み出しデータをセルセットCUy(y≠x)に書き込むことを記憶装置1に指示する。ステップS37が完了すると、フローは終了する。
図11のフローは一例であり、ステップS1〜S6の組、およびステップS21〜S26の組の一方だけが行われてもよい。
図13〜図16は、第1実施形態のメモリシステム100の動作の一部を示し、データ検査の間の信号DQおよび種々の時点での各所でのデータの例を示す。
図13は、選択セルセットCUxのメモリセルMCの抵抗値分布が、図9の破線の形状を有する場合を示し、図11のステップS10での判断がNoである場合を示す。図13に示されるように、メモリコントローラ2は、図11のステップS1での第1検査読み出しの指示のために、コマンドX1h、コマンド00h、アドレス信号ADD、およびコマンド3Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、コマンド3Xhを受け取ると、選択セルセットCUxに対してPR1を行って、Vpr1読み出しデータをデータラッチ17aに保持する。次いで、シーケンサ12は、選択セルセットCUxに対してPR2を行って、Vpr2読み出しデータをデータラッチ17bに保持する。図13のケースでは、Vpr1読み出しデータはVpr2読み出しデータと同一である。
シーケンサ12は、PR12XORデータを、データラッチ17cに保持する。PR12XORデータは、全ビットにおいて0データを有する。計数・判断回路12bは、PR12相違ビット数C1および比較結果CR1を取得する。
シーケンサ12は、PR1、PR2、XOR演算、および計数・判断の間、時間tPRに亘ってビジー信号を出力する。
メモリコントローラ2は、ステータス読み出し指示のために、コマンド70hを記憶装置1に送信する。シーケンサ12は、コマンド70hを受け取ると、直前の指示(現行の例では第1検査読み出し)についてのステータスデータDATAをメモリコントローラ2に送信する。そのようなステータスデータは、例えば、第0〜第2ビットにおいて、PR12相違ビット数C1を含み、第4〜第6ビットにおいて、PR34相違ビット数C2を含む。また、第3ビットは、PR12比較結果CR1を示し、第7ビットは、PR34比較結果CR2を示す。
PR12相違ビット数C1は第1基準値以下である。このため、図13のケースでの選択セルセットCUxのためのデータ検査およびデータ読み出し精度向上処理はここで終了する。
図14および図15は、選択セルセットCUxのメモリセルMCの抵抗値分布が、図9の実線の形状を有する場合を示し、図11のステップS30での判断がNoである場合を示す。図14および図15に示されるように、図13と同様に、シーケンサ12は、Vpr1読み出しデータをデータラッチ17aに保持し、Vpr2読み出しデータをデータラッチ17bに保持する。図14および図15のケースでは、Vpr1読み出しデータはVpr2読み出しデータと相違する。
シーケンサ12は、PR12XORデータを、データラッチ17cに保持する。PR12XORデータは、いくつかのビットにおいて1データを有する。計数・判断回路12bは、PR12相違ビット数C1および比較結果CR1を取得する。シーケンサ12は、コマンド70hを受け取って、ステータスデータを出力する。ステータスデータData中のPR12相違ビット数C2は第1基準値超であり、比較結果CR1はデータ1である。このため、メモリコントローラ2は、図11のステップS21での第2検査読み出しの指示のために、コマンドX2h、コマンド00h、アドレス信号ADD、およびコマンド3Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、コマンド3Xhを受け取ると、選択セルセットCUxに対してPR3を行って、Vpr3読み出しデータをデータラッチ17aに保持する。次いで、シーケンサ12は、選択セルセットCUxに対してPR4を行って、Vpr4読み出しデータをデータラッチ17bに保持する。図14および図15のケースでは、Vpr3読み出しデータはVpr4読み出しデータと同一である。
シーケンサ12は、PR34XORデータを、データラッチ17cに保持する。PR34XORデータは、全ビットにおいて0データを有する。計数・判断回路12bは、PR34相違ビット数C2および比較結果CR2を取得する。シーケンサ12は、コマンド70hを受け取って、ステータスデータを出力する。ステータスデータData中のPR34データ相違ビット数C2は第2基準値以下であり、比較結果CR2はデータ0である。このため、図14および図15のケースでの選択セルセットCUxのためのデータ検査およびデータ読み出し精度向上処理は、CUx反転データを選択セルセットCUxに書き込むことに継続する。
図16は、選択セルセットCUxの抵抗値分布が、図9の一点鎖線の形状を有する場合を示し、図11のステップS30での判断がYesである場合を示し、図14に後続する。図14でのステータスデータData中のPR12相違ビット数C1が基準値以上であるため、図15と同様に、メモリコントローラ2は第2検査読み出しを記憶装置1に指示し、シーケンサ12は選択セルセットCUxに対してPR3およびPR4を行う。図16のケースでは、データラッチ17a中のVpr3読み出しデータはデータラッチ17b中のVpr4読み出しデータと相違する。
シーケンサ12は、PR34XORデータを、データラッチ17cに保持する。PR34XORデータは、いくつかのビットにおいて1データを有する。計数・判断回路12bは、PR34相違ビット数C2および比較結果CR2を取得する。シーケンサ12は、コマンド70hを受け取って、ステータスデータを出力する。ステータスデータData中のPR34相違ビット数は第2基準値超であり、比較結果CR2はデータ1である。このため、図16のケースでの選択セルセットCUxのためのデータ検査およびデータ読み出し精度向上処理は、正しいCUx読み出しデータをセルセットCUyに書き込むことに継続する。
図17は、第1実施形態のメモリシステム100の動作の一部を示し、データ読み出し精度向上処理の間の信号DQおよび種々の時点での各所でのデータの例を示す。図17の動作は、図15に後続することが可能である。
図17に示されるように、メモリコントローラ2は、図12のステップS31での反転上書きの指示のために、コマンドX3h、コマンド80h、アドレス信号ADD、およびコマンド1Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、コマンド1Xhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行って、CUx読み出しデータをデータラッチ17aに保持する。シーケンサ12は、CUx反転データを生成し、これをデータラッチ17bに保持する。次いで、シーケンサ12は、CUx反転データを選択セルセットCUxに書き込む。
ここまでの記述では、データの検査および読み出し精度向上処理(特に反転上書き)が、選択セルセットCUx全体に対して行われる例に関する。第1実施形態はこれに限られず、少なくとも1つの選択メモリセルMCzに対するデータの検査および読み出し精度向上処理が行われることが可能である。すなわち、検査において、メモリコントローラ2は、読み出し電圧Vpr1を用いて選択メモリセルMCzから読み出されたデータ(Vpr1セル読み出しデータ)を取得し、読み出し電圧Vpr2を用いて選択メモリセルMCzから読み出されたデータ(Vpr2セル読み出しデータ)を取得する。そして、メモリコントローラ2は、Vpr1セル読み出しデータとVpr2セル読み出しデータを比較する。そして、メモリコントローラ2は、Vpr1セル読み出しデータとVpr2セル読み出しデータを比較する。Vpr1セル読み出しデータがVpr2セル読み出しデータと異なっていれば、選択メモリセルMCzは、書き込み直後の抵抗値と少し異なる抵抗値を有するものと判断されることが可能である。
同様に、検査において、メモリコントローラ2は、読み出し電圧Vpr3を用いて選択メモリセルMCzから読み出されたデータ(Vpr3セル読み出しデータ)を取得し、電圧Vpr4を用いてメモリセルMCzから読み出されたデータ(Vpr4セル読み出しデータ)を取得する。そして、メモリコントローラ2は、Vpr3セル読み出しデータとVpr4セル読み出しデータを比較する。Vpr3セル読み出しデータがVpr4セル読み出しデータと異なっていれば、選択メモリセルMCzは、書き込み直後の抵抗値と中程度異なる抵抗値を有するものと判断されることが可能である。
<1−3.利点(効果)>
書き込まれた直後のメモリセルMCは、望まれる状態またはそれに近い高抵抗状態または低抵抗状態を有する。しかしながら、書き込まれた後に、メモリセルMCの抵抗状態は変化し得る。ある一方の抵抗状態にあることによって対応するデータを保持しているメモリセルMCの抵抗の値が、データ読み出しによってもう一方の抵抗状態にあると判断され得る値まで変化すると、当該メモリセルMCからは誤ったデータが読み出される。
抵抗値の変化によって、誤ったデータを保持すると判断されるに至ったメモリセルMCの数が少なければ、誤り訂正により正しいデータが復元されることが可能である。しかしながら、一般に、誤り訂正は時間を要する。また、誤ったデータを保持すると判断されるに至ったメモリセルMCの数の増加により、誤り訂正が不能になる場合がある。さらに、本実施形態が基づく例のように、1セルセットCUの読み出しデータ中で1ビットの誤りも許容されない場合がある。
第1実施形態のメモリコントローラ2は、記憶装置1へのアクセスが必要でない間に、メモリセルMC中のデータの検査を行う。検査において、メモリコントローラ2は、選択メモリセルMCzからのVpr1セル読み出しデータとVpr2セル読み出しデータを比較する。選択メモリセルMCzが、書き込み直後の抵抗値と大きく変わらない抵抗値を有していれば、Vpr1セル読み出しデータおよびVpr2セル読み出しデータは、一致するはずである。このことが利用されて、データの不一致に帰結するメモリセルMCの検出により、書き込み直後の抵抗値と少し異なる抵抗値を有するメモリセルMCが検出されることが可能である。
第1実施形態のメモリコントローラ2は、選択メモリセルMCzからのVpr3セル読み出しデータとVpr4セル読み出しデータを比較する。Vpr3セル読み出しデータおよびVpr4セル読み出しデータが不一致であれば、これは、選択メモリセルMCzが書き込み直後の抵抗値と大きく異なる抵抗値を有することを示す。このことが利用されて、書き込み直後の抵抗値と中程度異なる抵抗値を有するメモリセルMCが検出されることが可能である。
第1実施形態のメモリコントローラ2は、選択セルセットCUxからのVpr1読み出しデータとVpr2読み出しデータを比較し、Vpr1読み出しデータおよびVpr2読み出しデータのうちのデータが不一致のビットを計数し、PR12相違ビット数C1を第1基準値と比較する。PR12相違ビット数C1が第1基準値を超えている場合、選択セルセットCUxのメモリセルMCのデータの信頼性が劣化したと判断する。こうして、劣化したデータ信頼性を有する選択セルセットCUxが検出されることが可能である。劣化したデータ信頼性を有する選択セルセットCUxが検出されることは、そのようなセルセットCUxのデータ信頼性を回復するための処理が実行されることを可能にする。
第1実施形態のメモリコントローラ2は、PR12相違ビット数C1が第1基準値を超えている場合、さらに、選択セルセットCUxからのVpr3読み出しデータおよびVpr4読み出しデータを比較する。そして、メモリコントローラ2は、Vpr3読み出しデータおよびVpr4読み出しデータのうちのデータが不一致のビットを計数し、PR34相違ビット数C2を第2基準値と比較する。PR34相違ビット数C2が第2基準値を超えている場合、選択セルセットCUxのメモリセルMCのデータの信頼性が中程度劣化したと判断される。こうして、中程度劣化したデータ信頼性を有する選択セルセットCUxが検出されることが可能である。中程度劣化したデータ信頼性を有する選択セルセットCUxは、近い将来のデータ読み出しを経るときに誤り訂正に頼らざるを得ない可能性が高い。近い将来に誤り訂正に頼らざるを得ないほどにデータ信頼性が劣化した選択セルセットCUxが検出されることは、実際のデータ読み出しに備えて事前にデータ信頼性を回復するための処理が実行されることを可能にする。
また、一般に、メモリセルの抵抗値の変化による不具合、例えば誤ったデータの読み出しは、メモリセルに保持されているデータを当該メモリセルに上書きすることにより対処されることが可能な場合がある。しかしながら、ある種のメモリセルは、このような上書きを受け付けない。例えば、メモリセルMCのように2つの抵抗状態をデータ書き込みによって両方向に遷移可能なメモリセルでは、上書きが不能な場合がある。理由の1つは、以下のように考えられている。
上記のように、メモリセルMCはメモリセルMCを流れる電流によって抵抗値を上げられる。しかしながら、高抵抗状態から抵抗値が減少したとはいえ依然高い抵抗値を有するメモリセルMCに、さらに抵抗値を上げるほどの電流を流すことが難しい。このため、抵抗値の減少した高抵抗状態のメモリセルMCの抵抗値を上げることが難しい。
逆に、メモリセルMCは、電圧を印加されることによって抵抗値を下げられる。印加される電圧は、通常のデータ書き込みにおいて高抵抗状態のメモリセルMCを低抵抗状態に遷移させるのに必要な大きさに基づいて予め決定されている。このような電圧は、低抵抗状態から抵抗値が増加したとはいえ依然低い抵抗値を有するメモリセルMCに印加されると、メモリセルMCを破壊し得る。このため、抵抗値の増加した低抵抗状態のメモリセルMCの抵抗値を下げることが難しい。
メモリコントローラ2は、データの信頼性が低下したと判断された選択セルセットCUxのためのCUx反転データを生成、CUx反転データを選択セルセットCUxに書き込むことを記憶装置1に指示する。この書き込みにより、選択セルセットCUx中の各メモリセルMCに保持されるデータは反転するものの、各メモリセルMCの抵抗値は、書き込まれた直後に得られる形態になる。このため、メモリセルMCの劣化はリセットされ、メモリセルMCに保持されるデータの信頼性が回復する。また、CUx反転データの選択セルセットCUxへの書き込みは、特定のメモリセルMCのみの抵抗値を調整することの困難さを克服し、データ信頼性が低下したセルセットCU中のデータ信頼性を回復できる。
また、メモリコントローラ2は、データの信頼性が中程度低下したと判断された選択メモリセルMCzからデータを読み出し、誤り訂正を経た正しいデータを、別のメモリセルMCに書き込む。このことは、データの信頼性が大きく低下したことに起因して実際のデータ読み出しのときに誤り訂正が必要となることを回避できる。
このように、選択セルセットCUxのデータの信頼性が判断され、信頼性の低下に基づいてCUx反転データの書き込みまたは誤り訂正されたデータの書き込みが行われる。このため、このようなデータ信頼性の判断、およびCUx反転データまたは正しいデータの書き込みを、例えば定期的に行って、例えば全てのセルセットCUに対して行うことにより、記憶装置1中のデータの信頼性を高く維持できる。より具体的には、メモリコントローラ2は、データ信頼性の検査およびデータ信頼性の回復処理(図11および図12のフロー)を経たセルセットCUが高いデータ信頼性を有するとの一定の確証を有することができる。
<1−4.変形例>
図18は、変形例での1セルセットCUに書き込まれるデータに含まれるデータの種類を示す。メモリコントローラ2は、1ページサイズの書き込みデータを、図18に示される形式で生成する。図18に示されるように、書き込みデータは、複数の情報データを含む。図18は、2つの情報データの例を示す。情報データ1および情報データ2が使用されることに基づいて、書き込みデータは、情報データ1用反転フラグビットと、情報データ2用反転フラグビットを含む。情報データ1用反転フラグビットは、情報データ1のために機能し、情報データ2用反転フラグビットは、情報データ2のために機能する。各反転フラグビットの詳細は、図10を参照して記述された通りである。
図19は、変形例のメモリシステム100の動作の一部を示し、データ読み出し精度向上処理の間の信号DQおよび種々の時点での各所でのデータの例を示す。図19の動作は、図15に後続することが可能である。
図19に示されるように、メモリコントローラ2は、変形例の反転上書きの指示のために、コマンドW1h、コマンド80h、アドレス信号ADD、およびコマンド1Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。先頭のコマンドは、ビットの値を反転される情報データを指定する。例として、コマンドW1hは、情報データ1を指定する。
シーケンサ12は、コマンド1Xhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行って、CUx読み出しデータをデータラッチ17aに保持する。シーケンサ12は、CUx読み出しデータのうち、情報データ1のための全ビット、および情報データ1用反転フラグビットの全ビットを反転して、CUx部分反転データを生成する。シーケンサ12は、CUx部分反転データを選択セルセットCUxに書き込む。
変形例によれば、メモリセルMCへのデータ反転のための上書きによって選択セルセットCUxにかかり得るストレスが緩和されることが可能である。
(第2実施形態)
第2実施形態は、CUx反転データを生成する要素の点で、第1実施形態と異なる。
第2実施形態のメモリシステム100は、第1実施形態のメモリシステム100と同じ要素および接続を有する。一方、第2実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM22中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図20は、第2実施形態のメモリシステムの動作のフローの一部を示し、第1実施形態の図12フローの一部を置換する。
図20に示されるように、図12のステップS30においてPR34相違ビット数C2が基準値を超えていない場合(No分岐)、フローはステップS41に移行する。ステップS41において、メモリコントローラ2は、ステップS35と同様にして、CUx読み出しデータを取得する。ステップS42において、メモリコントローラ2は、ステップS32と同様にして、CUx反転データを生成する。
ステップS43において、メモリコントローラ2は、CUx反転データを選択セルセットCUxに書き込むことを記憶装置1に指示する。シーケンサ12が指示を受け取ると、シーケンサ12は、CUx反転データを選択セルセットCUxに上書きする。
図21は、第2実施形態のメモリシステム100の動作の一部を示し、データ読み出し精度向上処理の間の信号DQおよび種々の時点での各所でのデータの例を示す。図21の動作は、図15に後続することが可能である。
図21に示されるように、ステップS41でのデータ読み出し指示のために、メモリコントローラ2は、コマンド00h、アドレス信号ADD、およびコマンド2Xhを記憶装置1に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、コマンド2Xhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行って、CUx読み出しデータをメモリコントローラ2に送信する。シーケンサ12は、コマンド2Xhの受信からCUx読み出しデータの送信準備完了までの時間tRに亘ってビジー信号を出力する。
メモリコントローラ2は、CUx読み出しデータを受け取ると、CUx反転データを生成する。次いで、メモリコントローラ2は、ステップS43でのデータ上書き指示のために、コマンド80h、アドレス信号ADD、CUx反転データDATA、およびコマンド1Xhを記憶装置1に送信する。アドレス信号ADDは、メモリ選択セルセットCUxを指定する。シーケンサ12は、コマンド1Xhを受け取ると、CUx反転データを選択セルセットCUxに書き込む。シーケンサ12は、コマンド1Xhの受信からデータ書き込みの完了までの時間tPROGに亘ってビジー信号を出力する。
第2実施形態は、第1実施形態の変形例に組み合わせられることも可能である。
第2実施形態によれば、第1実施形態と同じく、選択メモリセルMCzからのVpr1セル読み出しデータおよびVpr2セル読み出しデータが比較され、ならびに(または)選択メモリセルMCzからのVpr3セル読み出しデータおよびVpr4セル読み出しデータが比較される。このため、第1実施形態と同じ利点を得られる。
第2実施形態によれば、第1実施形態と同じく、選択セルセットCUxからのVpr1読み出しデータおよびVpr2読み出しデータが比較され、ならびに(または)選択セルセットCUxからのVpr3読み出しデータおよびVpr4読み出しデータが比較される。このため、第1実施形態と同じ利点を得られる。
第2実施形態によれば、第1実施形態と同じく、データ信頼性が低下したと判断されたメモリセルMCzが書き込み直後に保持しているデータの反転データが、選択メモリセルMCzに上書きされる。このため、第1実施形態と同じ利点を得られる。
第2実施形態によれば、CUx反転データは、メモリコントローラ2によって生成される。このため、メモリシステム100によるCUx反転データによる上書きのために記憶装置1が要する性能は、第1実施形態の記憶装置1が要する性能より低い。
(第3実施形態)
第3実施形態は、CUx反転データの読み出しに関し、第1または第2実施形態と組み合わせられることが可能である。
第3実施形態のメモリシステム1は、第1実施形態のメモリシステム100と同じ要素および接続を有する。一方、第3実施形態の記憶装置1、特にシーケンサ12は、以下に記述される動作を行えるように構成されている。
図22は、第3実施形態のメモリシステム100でのデータ読み出しの間の信号DQおよび各所でのデータの例を示す。図22および以下の記述は、選択セルセットCUxが反CUx反転データを保持している例に基づく。
図22に示されるように、メモリコントローラ2は、選択セルセットCUxからのデータ読み出しのために、コマンドY1h、コマンド00h、アドレス信号ADD、およびコマンド1Yhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。
シーケンサ12は、コマンド1Yhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行う。シーケンサ12は、CUx読み出しデータの反転フラグビットを検査する。第1実施形態において記述されたように、反転フラグビットは、対応するデータ(当該反転フラグビットを含んだセルセットCUx読み出しデータ)が、データ反転されたビットを含むか含まないかを示すことができる。通常のデータ反転無しの書き込みの時にある値(例えば0)を使用することが規則とされていれば、シーケンサ12は、反転フラグビットのデータを参照して、反転フラグビットがデータ反転を示すか否かを知得することができる。具体例として、反転フラグビットが0であれば、CUx読み出しデータは反転されておらず、反転フラグビットが1であればCUx読み出しデータは反転されている。
上記のように、現行の例では、選択セルセットCUx中のデータは、反転されたデータを全ビットにおいて有し、よって、反転フラグビットはデータが反転されていることを示す。このため、シーケンサ12は、CUx読み出しデータの全ビットにおいてデータを反転して元データ(CUx元データ)を生成し、CUx元データをメモリコントローラ2に送信する。
一方、反転フラグビットがデータ反転されていないことを示す場合、シーケンサ12は、CUx読み出しデータをそのまま、メモリコントローラ2に送信する。
反転フラグビットによるデータ反転の判断は、既知の任意の方法で行われることが可能である。例えば、第1実施形態において記述されたように、反転フラグビットは、同じデータを有する複数のビットを含み、判断の際、より多くのビットが保持するデータが、反転フラグビットが示すべき情報(例えばデータ反転済)として採用される。
第3実施形態によれば、選択セルセットCUxに書き込まれるデータは反転フラグビットを含み、シーケンサ12は反転フラグビットからCUx読み出しデータが反転CUxデータであるかを判断し、反転CUxデータである場合、CUx元データを出力する。こうすることにより、選択セルセットCUxがCUx反転データを含む場合であっても、記憶装置1はビットデータの反転を検出し、復元されたCUx元データを送信することができる。しかも、CUx元データの選択セルセットCUxへの書き込みの際の反転フラグビットをあるデータに決めておけば、CUx反転データにおいて反転フラグビットは、データ反転を示す値へと、特別な処理を経ずに変化する。よって、第3実施形態は、第1または第2実施形態との組み合わせにおいて、データの読み出しが複雑になることを回避できる。
また、メモリコントローラ1は、第3実施形態の記憶装置1から受け取った読み出しデータ(CUx元データ)が高い信頼性を有していると、記憶装置1を信頼することができる。具体的には以下の通りである。CUx元データは、CUx反転データへの変化を経た場合と、経ていない場合がある。CUx反転データが経由されていない場合は、第1検査読み出しによってPR12相違ビット数C1が第1基準値以下であったのであり、CUx読み出しデータが高い信頼性を有していたことを意味する。一方、CUx反転データが経由された場合は、第1検査読み出しによってPR12相違ビット数C1が第1基準値以下であったものの、データの反転によってデータの信頼性が回復したからである。
(第4実施形態)
第4実施形態は、CUx反転データをCUx元データに復元する要素の点で、第3実施形態と異なる。
第4実施形態のメモリシステム100は、第1実施形態のメモリシステム100と同じ要素および接続を有する。一方、第4実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM22中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図23は、第4実施形態のメモリシステム100でのデータの読み出しの間の信号DQおよび各所でのデータの例を示す。図23および以下の記述は、選択セルセットCUxがCUx反転データを保持している例に基づく。
図23に示されるように、メモリコントローラ2は、選択セルセットCUxからのデータ読み出しのために、コマンド00h、アドレス信号ADD、およびコマンド2Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。
シーケンサ12は、コマンド2Xhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行い、CUx読み出しデータをメモリコントローラ2に送信する。メモリコントローラ2は、CUx読み出しデータの反転フラグビットを検査する。反転フラグビットがデータの反転を示す場合(CUx読み出しデータがCUx反転データである場合)、メモリコントローラ2は、CUx読み出しデータの全ビットにおいてデータを反転してCUx元データを取得する。
第4実施形態によれば、第3実施形態と同じく、選択セルセットCUxに書き込まれるデータは反転フラグビットを含み、メモリコントローラ2は反転フラグビットからCUx読み出しデータが反転CUxデータであるかを判断し、CUx反転データである場合、各ビットのデータを戻して復元されたCUx元データを取得する。このため、第3実施形態と同じ利点を得られる。
第4実施形態によれば、CUx元データは、メモリコントローラ2によって生成される。このため、メモリコントローラ2がCUx元データを取得するのに記憶装置1が要する性能は、第3実施形態の記憶装置1が要する性能より低い。
(第5実施形態)
第5実施形態は、セルセットCUへの上書きに関する。
第5実施形態のメモリシステム1は、第1実施形態のメモリシステム100と同じ要素および接続を有する。一方、第5実施形態の記憶装置1、特にシーケンサ12は、以下に記述される動作を行えるように構成されている。
図24は、第5実施形態のメモリシステムの動作のフローを示す。図24および以下の記述は、図24のフローの開始の時点で、選択セルセットCUxがすでに、データ書き込みを経てデータを保持している例に基づく。
図24に示されるように、メモリコントローラ2は、選択セルセットCUxに書き込みデータ(CUx書き込みデータ)を書き込む(上書きする)ことを指示する(ステップS51)。このデータ書き込み指示は、通常のデータ書き込みと異なる書き込みを指示し、以下、指示されるデータ上書きは、条件付き反転書き込みと称される。CUx書き込みデータは、いずれかのデータラッチ17(例えばデータラッチ17c)に保持される。
ステップS52において、シーケンサ12は、指示を受け取って、選択セルセットCUxに対する通常データ読み出しを行う。得られたCUx読み出しデータは、いずれかのデータラッチ17(例えばデータラッチ17a)に保持される。ステップS53において、シーケンサ12は、CUx読み出しデータとCUx書き込みデータのXOR演算を行う。具体的には、シーケンサ12は、CUx読み出しデータとCUx書き込みデータの同じ位置のそれぞれの計2つのビットを入力して用い、論理演算回路LCを用いて2つの入力のXORを演算し、このような演算をCUx読み出しデータおよびCUx書き込みデータの全ビットに対して行う。演算の結果(新旧XORデータ)は、各ビットにおいて、0データまたは1データを有し、さらに別のデータラッチ(例えばデータラッチ17b)に保持される。1データは、対応するセルトランジスタMCが、現在保持されているデータと反対のデータを書き込まれることを意味する。
ステップS54において、シーケンサ12は、新旧XORデータ中の1データのビットの数(新旧データ相違ビット数)C3を計数する。ステップS56において、シーケンサ12は、新旧データ相違ビット数C3が第3基準値を超えているかを判断する。第3基準値は、例えば、1ページ中のデータの総ビット数の半分である。新旧データ相違ビット数C3が第3基準値以下であれば(ステップS56のNo分岐)、シーケンサ12は、CUx書き込みデータを選択セルセットCUxに書き込んで、フローは終了する。
一方、新旧データ相違ビット数C3が第3基準値を超えている場合(ステップS56のYes分岐)、シーケンサ12は、CUx書き込みデータの全ビットにおいてデータを反転して、CUx書き込み反転データを生成する(ステップS58)。ステップS59において、シーケンサ12は、CUx書き込み反転データを選択セルセットCUxに書き込んで、フローは終了する。
図25は、第5実施形態のメモリシステム100での条件付き反転書き込みの信号DQおよび各所でのデータの例を示す。図25に示されるように、メモリコントローラ2は、図24のステップ51での条件付き反転書き込みの指示のために、コマンドZ1h、コマンド80h、アドレス信号ADD、CUx書き込みデータDATA、およびコマンド1Zhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。CUx書き込みデータは、データラッチ17cに保持される。
シーケンサ12は、コマンド1Zhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行う。CUx読み出しデータは、データラッチ17aに保持される。シーケンサ12は、CUx書き込みデータとCUx読み出しデータのXORを演算する。新旧XORデータは、データラッチ17bに保持される。計数・判断回路12bは、新旧データ相違ビット数C3を取得し、新旧データ相違ビット数C3を第3基準値と比較する。新旧データ相違ビット数C3が第3基準値超である場合、反転データへと上書きされることになるビットが第3基準値(例えば半ページサイズ)超である。この場合、シーケンサ12は、CUx書き込み反転データを選択セルセットCUxに書き込む。結果、反転データへと上書きされるビットの数は、第3基準値以下である。保持されているデータと反対のデータを書き込まれるビットのみが上書きされ、保持されているデータを維持するビットはデータを書き込まれないからである。
一方、新旧データ相違ビット数C3の数から、反対のデータを書き込まれることになり得るビットが第3基準値以下の場合、保持されているデータを維持するビットが第3基準値(例えば半ページサイズ)以下である。この場合、シーケンサ12は、CUx書き込みデータを選択セルセットCUxに上書きする(図示せず)。
このように、CUx読み出しデータの中身に関わらず、保持されているデータと反対のデータを書き込まれるビットの数は第3基準値以下である。
選択セルセットCUxからのデータ読み出しには、第3または第4実施形態が適用されることが可能である。
第5実施形態の記憶装置1は、選択セルセットCUxに対する条件付き反転書き込みを指示されると、CUx書き込みデータとCUx読み出しデータの間でデータが不一致のビットC3を計数する。新旧データ相違ビット数C3が第3基準値以下の場合、シーケンサ12はCUx書き込みデータを選択セルセットCUxに書き込み、新旧データ相違ビット数C3が第3基準値超の場合、CUx書き込み反転データを選択セルセットCUxに書き込む。このような書き込みにより、CUx読み出しデータの中身に関わらず、保持されているデータと反対のデータを書き込まれるビットの数は第3基準値以下である。このことは、選択セルセットCUx中のメモリセルMCへの書き込みの回数を抑制し、選択セルセットCUxの書き込み起因の寿命の減少を抑制できる。ひいては、記憶装置1の寿命の短縮が抑制されることが可能である。
(第6実施形態)
第6実施形態は、CUx書き込み反転データの生成の要否の判断および実行を行う要素の点で、第5実施形態と異なる。
第6実施形態のメモリシステム100は、第1実施形態のメモリシステム100と同じ要素および接続を有する。一方、第6実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM22中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図26は、第6実施形態のメモリシステムの動作のフローの一部を示す。図26および以下の記述は、図26のフローの開始の時点で、選択セルセットCUxがすでにデータ書き込みを経てデータを保持している例に基づく。
図26に示されるように、ステップS61において、メモリコントローラ2は、選択セルセットCUxにデータを書き込むことを決定し、CUx書き込みデータを生成する。ステップS62において、メモリコントローラ2は、選択セルセットCUxからデータを読み出すことを記憶装置1に指示し、CUx読み出しデータを取得する。
ステップS63において、メモリコントローラ2は、ステップS53と同様にして、CUx書き込みデータとCUx読み出しデータのXOR演算を行う。ステップS64において、メモリコントローラ2は、新旧XORデータ中の1データのビットを計数する。ステップS66において、メモリコントローラ2は、新旧データ相違ビット数C3が第3基準値を超えているかを判断する。新旧データ相違ビット数C3が第3基準値以下であれば(ステップS66のNo分岐)、メモリコントローラ2は、CUx書き込みデータを選択セルセットCUxに書き込むことを記憶装置1に指示する(ステップS71)。シーケンサ12は、指示を受け取ると、選択セルセットCUxにCUx書き込みデータを書き込み(ステップS72)、フローは終了する。
一方、新旧データ相違ビット数C3が第3基準値超であれば(ステップS66のYes分岐)、メモリコントローラ2は、ステップS58と同様にして、CUx書き込み反転データを生成する(ステップS73)。ステップS74において、メモリコントローラ2は、CUx書き込み反転データを選択セルセットCUxに書き込むことを記憶装置1に指示する。シーケンサ12は、指示を受け取ると、選択セルセットCUxにCUx書き込み反転データを書き込み(ステップS75)、フローは終了する。
図27は、第6実施形態のメモリシステム100での条件付き反転書き込みの間の信号DQおよび各所でのデータの例を示す。図27に示されるように、メモリコントローラ2は、CUx書き込みデータをRAM23中、例えばRAM23中の領域23c中で生成する。メモリコントローラ2は、図26のステップS62での選択セルセットCUxからのデータ読み出しの指示のために、コマンド00h、アドレス信号ADD、およびコマンド2Xhを記憶装置1に順に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、コマンド2Xhを受け取ると、選択セルセットCUxに対して通常データ読み出しを行い、CUx読み出しデータをメモリコントローラ2に送信する。メモリコントローラ2は、CUx読み出しデータを受け取り、これをRAM23の別の領域(例えば領域23a)に保持する。
メモリコントローラ2は、CUx書き込みデータとCUx読み出しデータのXORを演算する。新旧XORデータは、RAM23のさらに別の領域(例えば領域23b)に保持される。メモリコントローラ2は、新旧データ相違ビット数C3を取得し、新旧データ相違ビット数C3を第3基準値と比較する。新旧データ相違ビット数C3が第3基準値超である場合、メモリコントローラ2は、CUx書き込みデータからCUx書き込み反転データをRAM23の領域(例えば領域23b)において生成する。
メモリコントローラ2は、図26のステップS74でのCUx書き込み反転データの書き込みの指示のために、コマンド80h、アドレス信号ADD、CUx書き込み反転データDATA、およびコマンド1Xhを順に記憶装置1に送信する。アドレス信号ADDは、選択セルセットCUxを指定する。シーケンサ12は、CUx書き込み反転データを選択セルセットCUxに書き込む。
一方、新旧データ相違ビット数C3が第3基準値以下の場合、メモリコントローラ2は、領域23c中のCUx書き込みデータを、記憶装置1に送信する。
選択セルセットCUxからのデータ読み出しには、第3または第4実施形態が適用されることが可能である。
第6実施形態のメモリコントローラ2は、選択セルセットCUxへの書き込みを決定すると、CUx書き込みデータとCUx読み出しデータの間でデータが不一致のビット数C3を計数する。そして、第5実施形態と同じく、新旧データ相違ビット数C3が第3基準値以下の場合、メモリコントローラ2はCUx書き込みデータを選択セルセットCUxに書き込むことを記憶装置1に指示し、新旧データ相違ビット数C3が第3基準値超の場合、CUx書き込み反転データを選択セルセットCUxに書き込むことを記憶装置1に指示する。このため、第5実施形態と同じ利点を得られる。
第6実施形態によれば、新旧データ相違ビット数C3の計数、およびCUx書き込み反転データの生成は、メモリコントローラ2によって行われる。このため、メモリシステム100においてCUx書き込み反転データの生成の要否の判断および実行を行うために記憶装置1が要する性能は、第5実施形態の記憶装置1が要する性能より低い。
ここまでの記述は、記憶装置1がReRAMである例に関する。実施形態は、この例に限られず、他のRAM、例えばMRAM(magnetoresistive RAM)、PCRAM(phase change RAM)に適用されることが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。