(57)【要約】【課題】記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出する。【解決手段】判定部は、不揮発性メモリのメモリセルについて記憶単位ごとに不良の疑いがあるか否かを判定する。不揮発性メモリに対しては、低抵抗状態（ＬＲＳ：Low Resistive State）から高抵抗状態（ＨＲＳ：High Resistive State）に遷移させるリセット操作、または、高抵抗状態から低抵抗状態に遷移させるセット操作が行われる。判定部は、リセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する。【選択図】図１０
2016053808.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
【請求項２】
前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項１記載の記憶制御装置。
【請求項３】
前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項１記載の記憶制御装置。
【請求項４】
前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する請求項１記載の記憶制御装置。
【請求項５】
前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する請求項１記載の記憶制御装置。
【請求項６】
前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する請求項１記載の記憶制御装置。
【請求項７】
前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する請求項６記載の記憶制御装置。
【請求項８】
前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う請求項６記載の記憶制御装置。
【請求項９】
前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する請求項６記載の記憶制御装置。
【請求項１０】
前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する請求項１記載の記憶制御装置。
【請求項１１】
前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する請求項１０記載の記憶制御装置。
【請求項１２】
前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する請求項１０記載の記憶制御装置。
【請求項１３】
前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項１記載の記憶制御装置。
【請求項１４】
前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項１記載の記憶制御装置。
【請求項１５】
前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する請求項１記載の記憶制御装置。
【請求項１６】
前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する請求項１記載の記憶制御装置。
【請求項１７】
不揮発性メモリのメモリセルと、
前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
を具備する記憶装置。
【請求項１８】
前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する請求項１７記載の記憶装置。
【請求項１９】
不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶装置に関する。詳しくは、記憶装置における不良ページを管理する記憶制御装置、記憶装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。このＤＲＡＭは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【０００３】
従来、このような不揮発性メモリについて、メモリアクセスに伴う不良を生じたページ（不良ページ）を判定する際、書込み操作または消去操作により生じたエラーをカウントすることが行われる。例えば、書込み操作または消去操作により生じたエラー数を記憶装置からメモリコントローラに通知し、不良判断をメモリコントローラにおいて行う記憶装置が提案されている（例えば、特許文献１参照。）。
【０００４】
一方、ある種の不揮発性メモリにおいては、書換えを繰り返した際のセルの摩耗によるエラーの分布が、書換え後の記憶状態によって異なる特性を示すことが知られている。例えば、低抵抗状態（ＬＲＳ：Low Resistive State）から高抵抗状態（ＨＲＳ：High Resistive State）に遷移させるリセット操作によるエラーが支配的なＲｅＲＡＭが知られている（例えば、非特許文献１参照。）。また、高抵抗状態（ＨＲＳ）から低抵抗状態（ＬＲＳ）に遷移させるセット操作によるエラーが支配的なＲｅＲＡＭも知られている（例えば、非特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０５６３９４号公報
【非特許文献】
【０００６】
【非特許文献１】Scott Sills et al.: "A Copper ReRAM Cell for Storage Class Memory Applications", 2014 Symposium on VLSI Technology Digest of Technical Papers, pp.64-65, IEEE (2014)
【非特許文献２】Shuhei Tanakamaru et al.: "Hybrid Storage of ReRAM/TLC NAND Flash with RAID-5/6 for Cloud Data Centers", 2014 IEEE International Solid-State Circuits Conference, IEEE (2014)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の従来技術では、ＬＲＳ状態とＨＲＳ状態のエラーの性質差を考慮せずにエラービットをカウントしているため、デバイスによっては不良ページを検出できず、また、不良ではないページを不良として検出してしまうという問題が生じ得る。
【０００８】
本技術はこのような状況に鑑みて生み出されたものであり、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することを目的とする。
【課題を解決するための手段】
【０００９】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置およびその記憶制御方法である。これにより、記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
【００１０】
また、この第１の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、書込みエラーを発生した記憶単位から不良の疑いがある記憶単位を判定するという作用をもたらす。
【００１１】
また、この第１の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、上記所定回数の最後の上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、時間的に最も近い結果を用いて不良の疑いがある記憶単位を判定するという作用をもたらす。
【００１２】
また、この第１の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定するようにしてもよい。これにより、不良に至っていない記憶単位については通常の書込みエラーと判定するという作用をもたらす。
【００１３】
また、この第１の側面において、上記判定部は、上記不良の疑いがある記憶単位を使用不能な記憶単位として判定してもよい。また、上記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備してもよい。これにより、不良の疑いがある記憶単位について使用可能であるか否かを管理するという作用をもたらす。
【００１４】
この場合において、上記管理部は、上記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について上記再確認を行うようにしてもよい。これにより、一定数ごとに記憶単位をまとめて再確認を行うという作用をもたらす。
【００１５】
また、上記判定部は、上記管理部が上記再確認を行う際には、上記所定の一方におけるエラー数が上記所定の基準よりも高い基準を超えた記憶単位を上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、再確認においては不良として扱い難くなるようにするという作用をもたらす。
【００１６】
また、この第１の側面において、上記判定部は、上記所定の一方におけるエラー数の上記所定の基準を複数の候補の中から選択するようにしてもよい。これにより、条件に応じた基準により不良を判定するという作用をもたらす。
【００１７】
この場合において、上記判定部は、上記不揮発性メモリが使用された経時状態に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、経時状態に応じた基準により不良を判定するという作用をもたらす。
【００１８】
また、上記判定部は、上記不揮発性メモリの所定の識別子に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、製造ロット番号等の所定の識別子に応じた基準により不良を判定するという作用をもたらす。
【００１９】
また、この第１の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、リセット操作およびセット操作のエラー数を独立して評価するという作用をもたらす。
【００２０】
また、この第１の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、メモリのデバイス特性に応じたバランスにより評価するという作用をもたらす。
【００２１】
また、この第１の側面において、上記判定部は、上記所定の一方におけるエラー数が上記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定するようにしてもよい。これにより、不良となる手前の状態となっている旨を知らせるという作用をもたらす。
【００２２】
また、この第１の側面において、上記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、上記所定の一方におけるエラー数が上記所定の基準よりも低い基準を超えた場合に上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、記憶単位の全てのビットを消去する消去リクエストについては不良と判定し易くするという作用をもたらす。
【００２３】
また、本技術の第２の側面は、不揮発性メモリのメモリセルと、上記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部とを具備する記憶装置である。これにより、記憶装置におけるメモリセルの記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
【００２４】
また、この第２の側面において、上記リセット操作および上記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備してもよい。これにより、記憶装置においてエラー数を計数して不良判定に利用するという作用をもたらす。
【発明の効果】
【００２５】
本技術によれば、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２６】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるＲＡＭ２６０のメモリマップの概要例を示す図である。
【図３】本技術の実施の形態におけるメモリ３００の一構成例を示す図である。
【図４】本技術の実施の形態のメモリ３００におけるページ構造の一例を示す図である。
【図５】本技術の実施の形態における空きページテーブル２６１の一構成例を示す図である。
【図６】本技術の実施の形態におけるアドレス変換テーブル２６２の一構成例を示す図である。
【図７】本技術の実施の形態におけるメモリ３００の内部構成例を示す図である。
【図８】本技術の実施の形態におけるメモリセル３３０の構造の一例を示す図である。
【図９】本技術の実施の形態におけるメモリセル３３０のドライブ電圧を説明するための図である。
【図１０】本技術の第１の実施の形態における情報処理システムの機能構成例を示す図である。
【図１１】本技術の実施の形態における記憶制御装置２００の読出し動作例を示す流れ図である。
【図１２】本技術の実施の形態における記憶制御装置２００の書込み動作例を示す流れ図である。
【図１３】本技術の第１の実施の形態における記憶制御装置２００のエラー処理の動作例を示す流れ図である。
【図１４】本技術の実施の形態におけるメモリ３００の読出し処理の動作例を示す流れ図である。
【図１５】本技術の第１の実施の形態におけるメモリ３００の読出し処理の動作例を示す流れ図である。
【図１６】本技術の実施の形態におけるメモリ３００のセット操作（ステップＳ９７５）の動作例を示す流れ図である。
【図１７】本技術の実施の形態におけるメモリ３００のリセット操作（ステップＳ９７７）の動作例を示す流れ図である。
【図１８】本技術の実施の形態における記憶制御装置２００の不良ページ確定処理の動作例を示す流れ図である。
【図１９】本技術の第２の実施の形態における情報処理システムの機能構成例を示す図である。
【図２０】本技術の第２の実施の形態における記憶制御装置２００のエラー処理の動作例を示す流れ図である。
【図２１】本技術の第２の実施の形態におけるメモリ３００の読出し処理の動作例を示す流れ図である。
【発明を実施するための形態】
【００２７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（不良ページの発生をメモリにおいて判定する例）
２．第２の実施の形態（不良ページの発生を記憶制御装置において判定する例）
３．変形例
【００２８】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、記憶制御装置２００と、メモリ３００とを備えている。ホストコンピュータ１００は、この情報処理システムにおける各処理を実行する装置である。メモリ３００は、ホストコンピュータ１００の処理に必要なデータを記憶するメモリである。このメモリ３００としては、不揮発性メモリを想定する。このメモリ３００は、データとともにエラー訂正コード（ＥＣＣ：Error Correcting Code）を記憶することにより、データ保持特性の改善を図る。記憶制御装置２００は、ホストコンピュータ１００とメモリ３００の間に接続され、ホストコンピュータ１００からのリクエストに応じてメモリ３００の制御を行う装置である。なお、エラー訂正コードはエラー（誤り）検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。
【００２９】
記憶制御装置２００は、ホストインターフェース２１０と、メモリインターフェース２３０と、制御部２４０と、ＲＯＭ２５０と、ＲＡＭ２６０と、ＥＣＣ処理部２７０とを備えている。これらはバス２９０を介して相互に接続されている。
【００３０】
ホストインターフェース２１０は、ホストコンピュータ１００との間のやりとりを行うインターフェース回路である。メモリインターフェース２３０は、メモリ３００との間のやりとりを行うインターフェース回路である。
【００３１】
制御部２４０は、記憶制御装置２００における種々の処理を実行する処理装置である。ＲＯＭ２５０は、制御部２４０において実行されるプログラムやその実行に必要なパラメータなどを記憶する読出し専用のメモリである。ＲＡＭ２６０は、制御部２４０における処理に必要な作業領域を記憶するメモリである。
【００３２】
ＥＣＣ処理部２７０は、メモリ３００に記憶されるエラー訂正コードに関する処理を行うものである。このＥＣＣ処理部２７０は、後述するように、エラー訂正コードを生成する機能およびメモリ３００から読み出されたデータとエラー訂正コードとからエラー訂正を行う機能を含む。
【００３３】
メモリ３００のアクセス空間は固定長の物理ページに区分けして管理される。メモリ３００の物理ページの各々は論理ページにマッピングされる。ホストコンピュータ１００からは、基本的には論理アドレスによりアクセスされる。以下では、論理ページのデータサイズを２５６バイトとし、物理ページには２５６バイトのデータおよび１６バイトのエラー訂正コードが記憶されるものとする。ただし、これらのサイズは一例であり、本技術はこれに限定されるものではない。
【００３４】
図２は、本技術の実施の形態におけるＲＡＭ２６０のメモリマップの概要例を示す図である。ここでは、ＲＡＭ２６０には、空きページテーブル２６１と、アドレス変換テーブル２６２と、データバッファ２６３と、論理ページイメージ領域２６６と、物理ページイメージ領域２６７とが記憶されている。なお、制御部２４０において実行されるプログラムならびにその実行の際に使用される領域等もＲＡＭ２６０の内部に確保される。
【００３５】
空きページテーブル２６１は、メモリ３００内の物理ページの使用状況を管理するテーブルである。この空きページテーブル２６１では、後述するように、物理ページアドレスごとに対応する物理ページの使用状況が保持される。
【００３６】
アドレス変換テーブル２６２は、ホストコンピュータ１００から供給された論理アドレスをメモリ３００の物理ページアドレスに変換するためのテーブルである。このアドレス変換テーブル２６２では、後述するように、論理ページアドレスごとに対応する物理ページアドレスが保持される。
【００３７】
データバッファ２６３は、ホストコンピュータ１００からメモリ３００に対するライトデータを保持するためのバッファである。この実施の形態では、少なくとも、ホストコンピュータ１００から指示されるライトコマンドを構成するライトデータの最大サイズと等しいデータを保持するものとする。
【００３８】
論理ページイメージ領域２６６は、ホストコンピュータ１００から把握される論理ページのイメージを保持するための領域である。物理ページイメージ領域２６７は、メモリ３００側における物理ページのイメージを保持するための領域である。この実施の形態では、論理ページイメージ領域２６６は論理ページのサイズと同じ２５６バイトの領域であり、物理ページイメージ領域２６７は物理ページのサイズと同じ２７２バイトの領域である。
【００３９】
空きページテーブル２６１、アドレス変換テーブル２６２の２種類のテーブルは、電源が断たれている間はメモリ３００の予め決められた位置に記憶されている。記憶制御装置２００は電源投入時の初期化処理において、予め決められた位置からこれら２種類のテーブルを読み出し、ＲＡＭ２６０内に一時的に蓄積する。記憶制御装置２００はホストコンピュータ１００から電源断の予告を受けると、これら２種類のテーブルをメモリ３００の予め決められた位置に書き込む。また、予期せぬ電源遮断による影響を最小限に抑えるため、一定時間経過または一定回数の処理などの節目ごとに、これら２種類のテーブルをメモリ３００に書き込む処理を行う。
【００４０】
図３は、本技術の実施の形態におけるメモリ３００の一構成例を示す図である。このメモリ３００は、制御インターフェース３１０と、ワードラインデコーダ３２０と、メモリセル３３０と、ビットラインセレクタ３４０と、ドライバ３５０と、ＯＴＰメモリ３６０と、制御部３８０とを備えている。これらはバス３９０を介して相互に接続されている。
【００４１】
制御インターフェース３１０は、記憶制御装置２００との間のやりとりを行うインターフェース回路である。この制御インターフェース３１０は、記憶制御装置２００から転送される情報やデータの入力、および、記憶制御装置２００に転送する情報やデータの出力を行う。
【００４２】
メモリセル３３０は記憶素子であり、ここでは不揮発性メモリを想定する。このメモリセル３３０は、１ビットのデータを記録する単メモリセルが二次元に配列された構造を有する。例えば、水平方向に物理ページの２７２バイト分の単メモリセルを並べたものを、垂直方向に物理ページアドレスに沿って並べることにより構成される。
【００４３】
ワードラインデコーダ３２０は、制御インターフェース３１０から入力された物理ページアドレスをデコードして、物理ページに対応する一本のワードラインをドライブする。ワードラインデコーダ３２０とメモリセル３３０の間には全ての物理ページに対して一本ずつのワードラインが配線されている。すなわち、物理ページアドレスとワードラインは１対１に対応する。メモリセル３３０においてドライブされたワードラインに対応する物理ページがアクティブとなる。
【００４４】
ビットラインセレクタ３４０は、メモリセル３３０の物理ページと同一のサイズを持つバッファである。このビットラインセレクタ３４０は、メモリセル３３０においてアクティブとなった物理ページとの間でデータのやりとりを行う。
【００４５】
ドライバ３５０は、ビットラインセレクタ３４０にビットライン電圧を供給するとともに、ビットラインセレクタ３４０およびメモリセル３３０にプレート電圧を供給するドライバである。すなわち、このドライバ３５０は、プレートとビットラインとの間のドライブ電圧を供給する。
【００４６】
ＯＴＰ（One Time Programming）メモリ３６０は、制御部３８０の起動用プログラム（ブートストラッププログラム）や、制御部３８０の動作に必要なパラメータを記憶するメモリである。このＯＴＰメモリ３６０は、アンチヒューズ等により実現され、例えばメモリ３００が出荷される際に製造工場において記録が行われる。この実施の形態においては、後述の２種類の閾値（ＴＨ＿ＰＡＳＳおよびＴＨ＿ＢＡＤ＿ＰＡＧＥ）が記録されており、メモリ３００の起動時にこのＯＴＰメモリ３６０からの読出しが行われる。
【００４７】
制御部３８０は、メモリ３００の全体を制御するものである。制御部３８０は、記憶制御装置２００からの指示がライトの場合には、制御インターフェース３１０に転送された物理ページアドレスをワードラインデコーダ３２０に供給し、メモリセル３３０上の指定された物理ページをアクティブにする。さらに、制御部３８０は、指定された物理ページから読み出したデータとライトデータからセット操作およびリセット操作で用いるマスクデータを作成する。制御部３８０は、マスクデータをビットラインセレクタ３４０に供給するとともに、ドライバ３５０およびビットラインセレクタ３４０を操作して、アクティブになっている物理ページに対しセット操作およびリセット操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページに対して書込みが行われる。
【００４８】
制御部３８０は、記憶制御装置２００からの指示がリードの場合には制御インターフェース３１０に転送された物理ページアドレスをワードラインデコーダ３２０に入力し、メモリセル３３０上の指定された物理ページをアクティブとする。さらに、制御部３８０は、ドライバ３５０およびビットラインセレクタ３４０を操作して、アクティブになっている物理ページに対してリード操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページが読み出されてビットラインセレクタ３４０に供給される。制御部３８０は、ビットラインセレクタ３４０に読み出されたデータを制御インターフェース３１０に供給して、制御インターフェース３１０を介して記憶制御装置２００へ転送する。
【００４９】
なお、以下の説明では、ホストコンピュータ１００から指定される論理アドレス、および、記憶制御装置２００内部で扱う論理ページアドレスを"０ｘ"で始まる１６進数の記述方法で記述し、物理ページアドレスを１０進数で記述する。
【００５０】
［ページ構造］
図４は、本技術の実施の形態のメモリ３００におけるページ構造の一例を示す図である。同図におけるａに示すように、この実施の形態ではメモリセル３３０に記憶される物理ページのサイズを２７２バイトとしている。そして、この物理ページに２５６バイトのデータと１６バイトのエラー訂正コード（パリティ）を記憶する場合、同図におけるｂに示すように、２７２バイトの物理ページを２５６バイトのデータと１６バイトのパリティとして使用する。
【００５１】
［テーブル構成］
図５は、本技術の実施の形態における空きページテーブル２６１の一構成例を示す図である。この空きページテーブル２６１は、物理ページアドレスごとに対応する物理ページの使用状況を保持している。この空きページテーブル２６１のそれぞれのエントリ（行）は、「物理ページアドレス」と「使用状況」の二つの要素により構成されている。
【００５２】
この空きページテーブル２６１では、各エントリ中の「物理ページアドレス」において示される物理ページの状況が「使用状況」に示される。ここで、「使用状況」は、主に、メモリセル３３０における物理ページが使われていない（使用可能）、または、使われている（使用中）という使用に関する状態を示す。また、この「使用状況」は、書込みエラーが発生した（書込みエラー発生）、不良ページエラーが発生した（不良ページ発生）、不良ページであることが確定して今後も使われることが推奨されない（使用不能）といったエラーに関する状態を示す。不良ページ発生と判定されたページは要観察状態であり、その後に使用可能であるか使用不能とするかについては判断が必要になる。すなわち、書込みエラーは一定の確率で発生するため、「書込みエラー発生」という状態のページは次回以降の書込みで全く問題なく書込みが行える可能性がある。不良ページエラーは書換えを繰り返した結果のセルの摩耗による劣化の可能性のあるページにて発生するため、「不良ページ発生」という状態のページは取扱いに注意を必要とする。
【００５３】
この空きページテーブル２６１は、各エントリを「物理ページアドレス」の数値の昇順に並べている。空きページテーブル２６１に登録されているエントリの数は、メモリ３００内のメモリセル３３０が備える物理ページの数と等しい。
【００５４】
なお、空きページテーブル２６１における「物理ページアドレス」の数値は０から始まり１ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「物理ページアドレス」を削除して、エントリの構成要素を「使用状況」のみとすることも可能である。
【００５５】
図６は、本技術の実施の形態におけるアドレス変換テーブル２６２の一構成例を示す図である。このアドレス変換テーブル２６２は、論理ページアドレスごとに対応する物理ページアドレスを保持している。すなわち、このアドレス変換テーブル２６２は、ホストコンピュータ１００との間で使用される論理アドレスと、記憶制御装置２００およびメモリ３００において使用される物理ページアドレスとの対応関係を示している。
【００５６】
この実施の形態における記憶制御装置２００内部では、ホストコンピュータ１００から指定される論理アドレスを論理ページアドレス単位で管理している。ここで、論理ページと物理ページは１対１の関係を有しており、１つの論理ページに１つの物理ページが割り当てられる。論理ページのサイズは２５６バイトであり、これは物理ページ内のデータの合計である２５６バイトと等しい。ホストコンピュータ１００から指定される論理アドレスを論理ページサイズで除した商が論理ページアドレスとなる。なお、この実施の形態では、ホストコンピュータ１００が発行するライトコマンドまたはリードコマンドを構成するライトアドレスまたはリードアドレスの示す位置を論理ページの先頭に制限しているため、オフセットアドレスは常に０となる
【００５７】
アドレス変換テーブル２６２のそれぞれのエントリは「論理ページアドレス」と、「割当状況」と、「物理ページアドレス」の３つの要素によって構成されている。各エントリ中の「論理ページアドレス」で示される論理ページに、物理ページが割り当てられている（"割当済"）か、否（"未割当"）かが「割当状況」に示される。そして、「割当状況」が"割当済"の論理ページについては、対応する物理ページのアドレスが「物理ページアドレス」に示される。
【００５８】
同図の例では、「論理ページアドレス」が"０ｘ００００−０００２"のエントリでは、「割当状況」が"未割当"となっているため、「物理ページアドレス」の値に意味がない。このため、このエントリに対する「物理ページアドレス」の値は"−"を示している。
【００５９】
アドレス変換テーブル２６２は、各エントリを「論理ページアドレス」の数値の昇順に並べている。アドレス変換テーブル２６２に登録されているエントリの数は、記憶制御装置２００がホストコンピュータ１００に対して公開している論理アドレス空間の大きさ（バイト単位）を論理ページのサイズである２５６バイトで除した商に等しい。
【００６０】
アドレス変換テーブル２６２に登録されているエントリの数は、メモリ３００内のメモリセル３３０に備えられた物理ページの数より小さい。空きページテーブル２６１の説明で示したように、物理ページがエラー等の理由により使用不能とされることがあるなどの理由により、物理ページの数は論理ページの数に対して十分な余裕を確保してあるためである。
【００６１】
なお、アドレス変換テーブル２６２における「論理ページアドレス」の数値は０から始まり１ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除して、エントリの構成要素を「割当状況」と「物理ページアドレス」とすることも可能である。
【００６２】
［メモリ内部構成］
図７は、本技術の実施の形態におけるメモリ３００の内部構成例を示す図である。ここでは、メモリブロック３０１に、ワードラインデコーダ３２０、メモリセル３３０、ビットラインセレクタ３４０およびドライバ３５０を備える構成となっている。
【００６３】
メモリセル３３０は、複数のワードライン（ＷＬ：Word Lines）と複数のビットライン（ＢＬ：Bit Lines）の交点にそれぞれアクセストランジスタと可変抵抗素子を有する。メモリセル３３０は、物理ページアドレスの数と等しい本数のワードラインと、物理ページサイズのビット数と等しい本数のビットラインと、プレート端子とを備える。ワードラインは、ワードラインデコーダ３２０に接続される。ビットラインは、ビットラインセレクタ３４０に接続される。プレート端子は、ドライバ３５０のプレート電圧出力に接続される。
【００６４】
メモリセル３３０の可変抵抗素子は、高抵抗状態（ＨＲＳ：High Resistive State）と低抵抗状態（ＬＲＳ：Low Resistive State）の２状態で１ビットの情報を記録する。各状態と論理値との対応付けは任意であるが、以下では低抵抗状態を用いて論理値「１」を表現し、高抵抗状態を用いて論理値「０」を表現するものと定義する。また、２つの状態間の遷移を行う操作をビット反転操作と呼ぶ。ビット反転操作はセット操作とリセット操作の２種類で構成される。以下では、セット操作により高抵抗状態のビットを低抵抗状態に遷移させ、リセット操作により低抵抗状態のビットを高抵抗状態に遷移させる。すなわち、セット操作により論理値「０」のビットを論理値「１」に遷移させ、リセット操作により論理値「１」のビットを論理値「０」に遷移させる。ライト処理においては、セット操作およびリセット操作が順番に行われるが、その順序は何れが先であっても構わない。
【００６５】
ワードラインデコーダ３２０は、制御部３８０からのワードライン指定を受け取り、メモリセル３３０のワードラインを制御する。すなわち、ワードラインデコーダ３２０は、制御部３８０によって指定されたワードラインを論理値「Ｈ」でドライブし、それ以外のワードラインを論理値「Ｌ」でドライブする機能を有する。ワードライン指定が行われていない場合、または、ワードライン指定が取り消された場合には、ワードラインデコーダ３２０は全てのワードラインを論理値「Ｌ」でドライブする。
【００６６】
ビットラインセレクタ３４０は、制御部３８０との間で、メモリセル３３０から読み出したリードデータ、および、書込みを行うためのライトデータをやりとりする。また、このビットラインセレクタ３４０は、ドライバ３５０からビットラインをドライブするための電圧を受け取る。
【００６７】
このビットラインセレクタ３４０は、大きく分けると２つの機能を有する。第１に、ビットラインセレクタ３４０は、メモリセル３３０の読出し時にはセンスアンプとしての機能を有する。具体的には、ビットラインセレクタ３４０は、ビットラインを流れる電流量を計測することにより、選択している可変抵抗素子が低抵抗状態または高抵抗状態の何れであるかを判別し、それぞれのビットラインに対する論理値「０」または「１」を決定する。決定された論理値は、制御部３８０に対して出力される。
【００６８】
第２に、このビットラインセレクタ３４０は、メモリセル３３０の書込み時には、制御部３８０による指定に基づいてビットライン毎のドライブ電圧を選択する機能を有する。具体的には、ビットラインセレクタ３４０は、各ビットラインに対して、ドライバ３５０から供給されるプレート電圧またはビットライン電圧のいずれかを選択的に供給する。
【００６９】
図８は、本技術の実施の形態におけるメモリセル３３０の構造の一例を示す図である。この図では、１本のワードラインＷＬ＿０に沿った断面を模式的に表しているが、他のワードラインについても同様の構造を有する。またビットラインは先頭の８本のみを示している。ワードラインＷＬ＿０と８本のビットライン（ＢＬ＿０乃至ＢＬ＿７）の交点には、アクセストランジスタであるＦＥＴ（Field effect transistor：電界効果トランジスタ）３３２と、可変抵抗素子３３１が接続されている。
【００７０】
ワードラインＷＬ＿０は８つのＦＥＴ３３２のゲート端子に接続されており、８本のビットライン（ＢＬ＿０乃至ＢＬ＿７）はそれぞれ対応するＦＥＴ３３２のドレイン端子に接続される。８つのＦＥＴのソース端子はそれぞれ可変抵抗素子３３１を経由してプレート３３３に接続される。
【００７１】
図９は、本技術の実施の形態におけるメモリセル３３０のドライブ電圧を説明するための図である。メモリセル３３０の可変抵抗素子３３１に対する操作としては、上述のセット操作およびリセット操作の他に、可変抵抗素子３３１の状態を読み出すためのリード操作がある。これら３つの操作、すなわちリード操作、セット操作およびリセット操作において、プレート３３３とビットラインＢＬ＿０との間のドライブ電圧は異なるものとなる。
【００７２】
セット操作の場合には、プレート３３３がビットラインに対して「＋Ｖｓｅｔ」の電位となるように電圧バイアスを設定する。リセット操作の場合には、ビットラインがプレート３３３に対して「＋Ｖｒｅｓｅｔ」の電位となるように電圧バイアスを設定する。また、リード操作の場合には、ビットラインがプレート３３３に対して「＋Ｖｒｅａｄ」の電圧になるように電圧バイアスを設定する。
【００７３】
［機能構成］
図１０は、本技術の第１の実施の形態における情報処理システムの機能構成例を示す図である。ここでは、メモリ３００は、エラー検出部３８１と、エラーページ判定部３８４とを備えている。また、記憶制御装置２００は、ページ管理部２４５を備えている。
【００７４】
エラー検出部３８１は、メモリ３００の物理ページにおいて発生したエラーを検出して、その物理ページにおいて発生したエラー数（ビット数）を計数するものである。このエラー検出部３８１は、リセットエラーカウンタ３８２およびセットエラーカウンタ３８３を備えている。リセットエラーカウンタ３８２は、リセット操作において生じたエラー数をリセットエラー数として計数するカウンタである。セットエラーカウンタ３８３は、セット操作において生じたエラー数をセットエラー数として計数するカウンタである。
【００７５】
エラーページ判定部３８４は、エラー検出部３８１において検出されたエラー数に基づいてページ単位でエラー発生の状態を判定するものである。例えば、リセットエラー数およびセットエラー数の合計値が閾値（ＴＨ＿ＰＡＳＳ）未満であれば、エラーは発生していないものと判定する。一方、リセットエラー数およびセットエラー数の合計値が閾値（ＴＨ＿ＰＡＳＳ）以上である場合において、リセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）以上であれば、不良ページエラーが発生したものと判定する。また、リセットエラー数およびセットエラー数の合計値が閾値（ＴＨ＿ＰＡＳＳ）以上である場合において、リセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）未満であれば、単なる書込みエラーが発生したものと判定する。なお、エラーページ判定部３８４は、特許請求の範囲に記載の判定部の一例である。
【００７６】
ページ管理部２４５は、空きページテーブル２６１を管理するものである。このページ管理部２４５は、エラーページ判定部３８４から不良ページエラーの発生を通知された場合には、該当する物理ページの空きページテーブル２６１の使用状況に「不良ページ発生」を記憶する。一方、エラーページ判定部３８４から書込みエラーの発生を通知された場合には、該当する物理ページの空きページテーブル２６１の使用状況に「書込みエラー発生」を記憶する。なお、ページ管理部２４５は、特許請求の範囲に記載の管理部の一例である。
【００７７】
また、このページ管理部２４５は、空きページテーブル２６１に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。例えば、「不良ページ発生」の属性を持つ物理ページについて書込みを行い、その結果、メモリ３００から不良ページエラーの発生が通知された場合には、その物理ページの空きページテーブル２６１の使用状況に「使用不能」を記憶する。一方、メモリ３００から不良ページエラーの発生が通知されなかった場合には、その物理ページの空きページテーブル２６１の使用状況に「使用可能」を記憶する。このようにして、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。なお、この実施の形態では、「不良ページ発生」の属性を持つ物理ページを再確認して不良ページエラーが発生したページを「使用不能」としたが、再確認を経ることなく不良ページエラーが発生したページを「使用不能」としてもよい。
【００７８】
［情報処理システムの動作］
図１１は、本技術の実施の形態における記憶制御装置２００の読出し動作例を示す流れ図である。まず、ホストコンピュータ１００から発行されたリードコマンドは、ホストインターフェース２１０を介して記憶制御装置２００に入力される。リードコマンドは、「リードアドレス」および「リードデータサイズ」から構成されている。「リードアドレス」は、読出し対象データの論理アドレスである。ここで、リードアドレスの示す位置は論理ページの先頭に限定する。また、リードデータサイズを論理ページサイズの倍数に限定する。
【００７９】
制御部２４０は、リードコマンドを構成する「リードアドレス」および「リードデータサイズ」を、論理ページ単位に分割する（ステップＳ９１１）。
【００８０】
そして、ステップＳ９１１において分割された論理ページ単位のうち、読出し処理が未処理のものが未だ残っているか否かが判定される（ステップＳ９１２）。論理ページ単位の読出し処理が残っていない場合には（ステップＳ９１２：Ｎｏ）、リードコマンドの処理終了をホストコンピュータ１００に通知して、読出し動作を終了する（ステップＳ９２２）。
【００８１】
一方、論理ページ単位の読出し処理が残っている場合には（ステップＳ９１２：Ｙｅｓ）、残っている論理ページ単位の読出し処理の中から、一つを選択する（ステップＳ９１３）。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル２６２から取得する（ステップＳ９１４）。
【００８２】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する（ステップＳ９１５）。すなわち、「割当状況」が"未割当"であった場合には、ステップＳ９１９に進み、"割当済"であった場合にはステップＳ９１６に進む。
【００８３】
「割当状況」が"未割当"であった場合（ステップＳ９１５：Ｎｏ）、リード対象の論理ページに対する物理ページが割り当てられていない状況であるため、ホストコンピュータ１００に通知すべきデータを準備する（ステップＳ９１９）。具体的には、論理ページイメージ領域２６６をゼロクリアする。ここで、ゼロクリアではなく、"０ｘ００"、"０ｘＦＦ"等の周期的なデータや予め定められた特定のデータを用いて初期化してもよい。また、この例ではステップＳ９１９を通るたびに初期化するということになっているが、電源投入時等に初期化を行う特別な領域をＲＡＭ２６０に用意しておいて、物理ページの割当てがなされていない論理ページへの読出しがあった場合に、特別な領域のデータを通知することも可能である。
【００８４】
また、物理ページの割り当てられていない論理ページへの読出しに対して、メモリ３００内の予め割り当てられた物理ページを読み出してホストコンピュータ１００に転送することも可能である。予め割り当てられた物理ページに予め書込みを行うことで、メモリごとに異なるデータをホストコンピュータ１００に転送することができる。
【００８５】
「割当状況」が"割当済"であった場合（ステップＳ９１５：Ｙｅｓ）、その論理ページに対応するデータの読出しを行う（ステップＳ９１６）。このときの物理ページアドレスは、ステップＳ９１４においてアドレス変換テーブル２６２から読み出した「物理ページアドレス」である。このとき、記憶制御装置２００はメモリ３００に対して、読出しの指示および物理ページアドレスをリードリクエストとして通知する。メモリ３００は、指定された物理ページアドレスに対応する物理ページの内容を読み出して、記憶制御装置２００に転送する。記憶制御装置２００は、メモリ３００から転送された物理ページのデータを物理ページイメージ領域２６７に格納する。
【００８６】
次に、ＥＣＣ処理部２７０が、エラー訂正を行う（ステップＳ９１７）。その際、ＥＣＣ処理部２７０には物理ページイメージ領域２６７の先頭アドレスと、エラー訂正の指示とが与えられる。ＥＣＣ処理部２７０は、物理ページイメージ領域２６７の先頭アドレスから２７２バイトを読み出し、２５６バイトのユーザデータに１６バイトのパリティが付加されているものと解釈してエラー訂正処理を行う。そして、その結果を物理ページイメージ領域２６７の同じ位置に書き戻す。
【００８７】
次に、制御部２４０が、物理ページイメージ領域２６７からデータを抜き出して、論理ページイメージ領域２６６に転送する（ステップＳ９１８）。具体的には、物理ページイメージ領域２６７の先頭から２５６バイトを読み出して、論理ページイメージ領域２６６に転送する。
【００８８】
これらによって論理ページイメージ領域２６６が準備されると（ステップＳ９１８またはＳ９１９）、論理ページイメージ領域２６６のデータはホストコンピュータ１００に転送される（ステップＳ９２１）。すなわち、論理ページイメージ領域２６６の先頭の位置から「論理ページ」分の転送が行われる。その後、ステップＳ９１２からの処理を繰り返す。
【００８９】
なお、この実施の形態では、データ抜き出し処理（ステップＳ９１８）およびホストコンピュータ１００への転送処理（ステップＳ９２１）においてそれぞれデータコピーを行っているが、物理ページイメージ領域２６７から直接転送するようにしてもよい。
【００９０】
図１２は、本技術の実施の形態における記憶制御装置２００の書込み動作例を示す流れ図である。まず、ホストコンピュータ１００から指示されたライトコマンドは、ホストインターフェース２１０を介して記憶制御装置２００に入力される。ライトコマンドは、「ライトアドレス」、「ライトデータサイズ」、および「ライトデータ」から構成される。このうち「ライトデータ」は、ＲＡＭ２６０のデータバッファ２６３に一時的に格納される。また、「ライトアドレス」は、書込み対象データの論理アドレスである。ここで、ライトアドレスの示す位置は論理ページの先頭に限定する。また、ライトデータサイズを論理ページサイズの倍数に限定する。
【００９１】
制御部２４０は、ライトコマンドを構成する「ライトアドレス」と「ライトデータサイズ」を、上述のように論理ページ単位に分割する（ステップＳ９３１）。また、制御部２４０は、ホストコンピュータ１００から与えられてデータバッファ２６３に一時格納されたライトデータについて、論理ページごとに分解したそれぞれの領域の先頭アドレスをすべて計算する。以下のステップＳ９３２以降の処理は、ステップＳ９３１で分割された論理ページ単位に対して繰り返し行われる。
【００９２】
ステップＳ９３１において分割された論理ページ単位のうち、書込み処理が未処理のものが未だ残っているか否かが判定される（ステップＳ９３２）。論理ページ単位の書込み処理が残っていない場合には（ステップＳ９３２：Ｎｏ）、ライトコマンドの処理終了をホストコンピュータ１００に通知して、書込み動作を終了する（ステップＳ９４５）。
【００９３】
一方、論理ページ単位の書込み処理が残っている場合には（ステップＳ９３２：Ｙｅｓ）、残っている論理ページ単位の書込み処理の中から、一つを選択する（ステップＳ９３３）。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル２６２から取得する（ステップＳ９３４）。
【００９４】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する（ステップＳ９３５）。すなわち、「割当状況」が"割当済"であった場合（ステップＳ９３５：Ｙｅｓ）にはステップＳ９３８に進み、"未割当"であった場合（ステップＳ９３５：Ｎｏ）にはステップＳ９３６に進む。
【００９５】
「割当状況」が"未割当"であった場合、空きページテーブル２６１に基づいて利用可能な物理ページを確保する（ステップＳ９３６）。具体的には「使用状況」が"使用可能"または"書込みエラー発生"であるエントリを検索して、その「使用状況」に"使用中"の値を代入する。上述のように、「使用状況」が"書込みエラー発生"を示す場合にはその物理ページに対する前回の書込みにおいて書込みエラーが発生したことを意味するが、書込みエラーは一定の確率で発生するため、次回の書込みでは問題なく書込みが行える可能性がある。なお、"使用可能"を示すエントリが枯渇した後に、"書込みエラー発生"のエントリを選択する等の方法があるが、ここでは説明を省略する。また、物理ページが確保されると、アドレス変換テーブル２６２の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される（ステップＳ９３７）。なお、空きページテーブル２６１において利用可能な物理ページが存在しない場合には、その旨をホストコンピュータ１００に通知する等の処理が行われるが、ここでは説明を省略する。
【００９６】
次に、データバッファ２６３のデータが論理ページイメージ領域２６６に転送される（ステップＳ９３８）。具体的には、データバッファ２６３に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスから、論理ページ分の２５６バイトが論理ページイメージ領域２６６に転送される。なお、それぞれの領域の先頭アドレスはステップＳ９３１において計算されたものである。
【００９７】
ここまでの処理によって準備された論理ページイメージ領域２６６に基づいて、物理ページイメージ領域２６７が形成される（ステップＳ９４１）。具体的には論理ページイメージ領域２６６の先頭から２５６バイトを読み出して物理ページイメージ領域２６７に転送する。
【００９８】
次に、ＥＣＣ処理部２７０が、エラー訂正コードの生成処理を行う（ステップＳ９４２）。その際、ＥＣＣ処理部２７０には、物理ページイメージ領域２６７の先頭アドレスと、エラー訂正コード（パリティ）生成の指示とが与えられる。ＥＣＣ処理部２７０は、物理ページイメージ領域２６７の先頭から２５６バイトを読み出し、１６バイトのパリティを計算し、物理ページイメージ領域２６７に書き戻して、物理ページイメージ領域２６７を完成する。
【００９９】
このようにして完成した物理ページイメージ領域２６７の内容は、メモリ３００に書き込まれる（ステップＳ９４３）。その際、制御部２４０は、書込み指示および物理ページアドレスをライトリクエストとして、メモリインターフェース２３０を経由してメモリ３００に出力する。ここで、物理ページアドレスは、ステップＳ９３４において読み出された物理ページまたはステップＳ９３６において新たに割り当てられた物理ページのアドレスである。メモリ３００は、物理ページアドレスにおいて指定された物理ページに対して、受け取ったライトデータを書き込む。ライトデータの書込み後、以下に示すエラー処理が行われる（ステップＳ９５０）。
【０１００】
図１３は、本技術の第１の実施の形態における記憶制御装置２００のエラー処理の動作例を示す流れ図である。
【０１０１】
制御部２４０は、メモリ３００における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する（ステップＳ９５１）。そして、制御部２４０は、その戻り値が「書込みエラー」であるか否かを確認する（ステップＳ９５２）。
【０１０２】
戻り値が「書込みエラー」である場合（ステップＳ９５２：Ｙｅｓ）には、制御部２４０は空きページテーブル２６１の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む（ステップＳ９５４）。
【０１０３】
戻り値が「書込みエラー」でない場合（ステップＳ９５２：Ｎｏ）には、制御部２４０は戻り値が「不良ページエラー」であるか否かを確認する（ステップＳ９５３）。戻り値が「不良ページエラー」でない場合（ステップＳ９５３：Ｎｏ）には、エラー処理を終了して、ステップＳ９３２以降の処理を繰り返す。
【０１０４】
戻り値が「不良ページエラー」である場合（ステップＳ９５３：Ｙｅｓ）には、制御部２４０は空きページテーブル２６１の該当物理ページに対応するエントリに対して「不良ページ発生」の値を書き込む（ステップＳ９５５）。
【０１０５】
ステップＳ９５４またはＳ９５５において空きページテーブル２６１にエラーの発生が書き込まれた後、制御部２４０は空きページテーブル２６１に基づいて利用可能な物理ページを確保する（ステップＳ９５６）。そして、アドレス変換テーブル２６２の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される（ステップＳ９５７）。その後、物理ページイメージ領域２６７の内容がメモリ３００に書き込まれる（ステップＳ９５８）。これらステップＳ９５６乃至Ｓ９５８の処理は、ステップＳ９３６、Ｓ９３７およびＳ９４３の処理と同様である。
【０１０６】
図１４は、本技術の実施の形態におけるメモリ３００の読出し処理の動作例を示す流れ図である。ここでは、記憶制御装置２００からメモリ３００に対するリードリクエストの構成要素である物理ページアドレスとして、ワードライン番号ＷＬ＿０が指定されたことを想定する。
【０１０７】
まず、制御部３８０は、制御インターフェース３１０からリードリクエストの構成要素である物理ページアドレスを取得する（ステップＳ９６１）。ここでは、上述のとおり、物理ページアドレスとしてワードライン番号ＷＬ＿０が取得される。
【０１０８】
制御部３８０は、ドライバ３５０に対してリード操作における電圧バイアスの発生を指示する（ステップＳ９６２）。具体的には、ビットライン電圧がプレート電圧に対して「＋Ｖｒｅａｄ」となるように設定を行う。ドライバ３５０から供給されたプレート電圧により、メモリセル３３０のプレート３３３がドライブされる。
【０１０９】
制御部３８０は、ビットラインセレクタ３４０に対して全てのビットラインをビットライン電圧でドライブするように指示を行う（ステップＳ９６３）。ビットラインセレクタ３４０は制御部３８０からの指示に従って、全てのビットラインに対してドライバ３５０から供給されたビットライン電圧を供給する。
【０１１０】
制御部３８０は、リードリクエストにおいて指定された物理ページアドレス（ワードライン番号ＷＬ＿０）をワードラインデコーダ３２０に設定するとともに、ビットラインセレクタ３４０に対して読出し動作の開始を指示する（ステップＳ９６４）。ワードラインデコーダ３２０は、指定された物理ページアドレス（ワードライン番号ＷＬ＿０）に対応するワードライン（ＷＬ＿０）を論理値「Ｈ」でドライブする。これにより、ＷＬ＿０に接続されたアクセストランジスタが導通状態となり、ドライバ３５０で発生したリード操作における電圧バイアスが可変抵抗素子に印可される。そのため、それぞれの素子の高抵抗状態あるいは低抵抗状態に応じた電流がビットラインを通じてビットラインセレクタ３４０に流入する。ビットラインセレクタ３４０は、流入した電流量を測定することにより、それぞれの可変抵抗素子に対応する論理「０」あるいは「１」を決定する。これにより、指定された物理ページアドレス（ＷＬ＿０）に接続された可変抵抗素子の論理状態が、ビットラインセレクタ３４０により読み出される。
【０１１１】
読出しが完了すると、制御部３８０は、ビットラインセレクタ３４０に対する読出し動作の停止を指示する（ステップＳ９６６）。すなわち、ワードラインデコーダ３２０に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ３４０に対するビットラインのドライブ指示を取り消し、ドライバ３５０に対する電圧バイアスの発生の停止を指示する。なお、読出し完了のタイミングは、制御部３８０などが内部に有する時計によって決定される場合や、ビットラインセレクタ３４０において十分な電流量が確保できたことを確認することによって決定される場合などが考えられるが、ここでは詳細な説明を省略する。
【０１１２】
制御部３８０は、ビットラインセレクタ３４０が読み出したデータを制御インターフェース３１０に対して出力するように指示する（ステップＳ９６７）。そして、制御部３８０は、制御インターフェース３１０に指示して、読み出したデータを記憶制御装置２００に通知する（ステップＳ９６８）。
【０１１３】
図１５は、本技術の第１の実施の形態におけるメモリ３００の書込み処理の動作例を示す流れ図である。ここでは、記憶制御装置２００からメモリ３００に対するライトリクエストの構成要素である物理ページアドレスとしてＷＬ＿０が指定され、書込みを行うデータとして値「６」（２進数表記で「０００００１１０」）が指定されたことを想定する。
【０１１４】
また、書込みを行う以前の状況として、メモリセル３３０のＷＬ＿０に対応するビット群には値「３」（２進数表記で「００００００１１」）が記録されているものとする。これらをビットごとに観察すると、ＢＬ＿０に対応するビットは現状の論理値「１」を論理値「０」に変更することが必要である。ＢＬ＿１に対応するビットは現状の論理値「１」のままで変更する必要はない。ＢＬ＿２に対応するビットは現状の論理値「０」を論理値「１」に変更することが必要である。ＢＬ＿７乃至ＢＬ＿３に対応するビットは現状の論理値「０」のままで変更する必要はない。
【０１１５】
ＲｅＲＡＭを含めて不揮発性メモリに対する書込みでは、不要なビット反転や上書きを防ぐために、記録されている情報と書込みを行う情報とを比較し、必要最小限のビット反転のみを行うという方法がよく用いられる。すなわち、この例の場合には、ＢＬ＿０に対応するビットおよびＢＬ＿２に対応するビットのみにビット反転操作を行い、その他のビットに関しては現状を維持することが好ましい。このため、以下の実施の形態では、書込みを行う位置の情報をまず読み出し、反転を行うべきビットを決定し、その決定したビットに対してのみビット反転操作を行う。
【０１１６】
制御部３８０は、制御インターフェース３１０からライトリクエストの構成要素である物理ページアドレスおよび書込みを行うデータを取得する（ステップＳ９７１）。ここでは、上述のとおり、物理ページアドレスとしてＷＬ＿０が取得される。
【０１１７】
制御部３８０は、図１４において説明したステップＳ９６２乃至Ｓ９６６の処理を行い、指定された物理ページアドレス（ＷＬ＿０）に対応するビットに現在記録されている値を読み出す（ステップＳ９７２）。制御部３８０はビットラインセレクタ３４０にアクセスし、メモリセル３３０から読み出したデータを取得する（ステップＳ９７３）。
【０１１８】
制御部３８０は、メモリセル３３０から読み出したデータと、書込みを行うライトデータとを比較し、セット操作を行うべきビットとリセット操作を行うべきビットを決定する（ステップＳ９７４）。すなわち、このステップにおいて制御部３８０は、セット操作を行うべきビットパターン（セットマスク）としてＢＬ＿２のみに値「１」を割り当てた２進数表現の数「０００００１００」を生成する。また、リセット操作を行うべきビットパターン（リセットマスク）としてＢＬ＿０のみに値「１」を割り当てた２進数表現の数「０００００００１」を生成する。
【０１１９】
その後、制御部３８０はセット操作を行う（ステップＳ９７５）。このセット操作の実行処理手順については後述する。制御部３８０は、読み出したデータとセット操作を行うべきビットパターン（セットマスク）とを比較する。正常にセット操作が行われなかったビット数をカウントし、セットエラー数として一時保持しておく（ステップＳ９７６）。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。
【０１２０】
また、制御部３８０はリセット操作を行う（ステップＳ９７７）。このリセット操作の実行処理手順については後述する。制御部３８０は、読み出したデータとリセット操作を行うべきビットパターン（リセットマスク）とを比較する。正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数として一時保持しておく（ステップＳ９７８）。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。
【０１２１】
制御部３８０はステップＳ９７６において生成したセットエラー数とステップＳ９７８において生成したリセットエラー数の和（合計値）を計算し、この値があらかじめ設定した閾値（ＴＨ＿ＰＡＳＳ）未満であるか否かを確認する（ステップＳ９７９）。和の値が閾値未満の場合（ステップＳ９７９：Ｙｅｓ）、制御インターフェース３１０を介して、ライトコマンドが正常に終了したことを記憶制御装置２００に通知する（ステップＳ９８３）。この場合、３回以下の書込み試行を経て、セットエラー数とリセットエラー数の合計が閾値（ＴＨ＿ＰＡＳＳ）未満であったことにより、正常終了としている。
【０１２２】
なお、ステップＳ９７９における閾値（ＴＨ＿ＰＡＳＳ）を「１」にすることにより、書込みエラーの数が０となった場合に正常終了と判断することができる。また、「１」以外の数値、すなわちＥＣＣで訂正可能であるエラー数を設定することもできる。例えば３回の書込み試行後のエラー数の合計が２であっても、ＥＣＣにより訂正可能であるため書込みが正常終了したと判断するようにしてもよい。
【０１２３】
和の値が閾値以上（ステップＳ９７９：Ｎｏ）の場合、制御部３８０は、このループの通過が３回目であるか否かを確認する（ステップＳ９８１）。ループの通過が１回目または２回目である場合（ステップＳ９８１：Ｎｏ）には、ステップＳ９７５に戻り処理を繰り返す。ループの通過が３回目である場合（ステップＳ９８１：Ｙｅｓ）には、３回の書込み試行によっても基準を満足できなかったことになるため、それ以上は書込みを試行せずにステップＳ９８２に進む。
【０１２４】
制御部３８０は、ステップＳ９７８において生成したリセットエラー数とあらかじめ設定した閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）とを比較する（ステップＳ９８２）。リセットエラー数が閾値未満である場合（ステップＳ９８２：Ｎｏ）、単なる書込みエラーと判断して、制御インターフェース３１０を介して、書込みエラーが発生したことを記憶制御装置２００に通知する（ステップＳ９８５）。この場合、３回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値（ＴＨ＿ＰＡＳＳ）以上であり、リセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）未満であったことにより、書込みエラーではあるが、物理ページ不良ではないと判断している。
【０１２５】
一方、リセットエラー数が閾値以上である場合（ステップＳ９８２：Ｙｅｓ）、該当物理ページアドレスの示すページが不良であると判断して、制御インターフェース３１０を介して、不良ページが発生したことを記憶制御装置２００に通知する（ステップＳ９８４）。この場合、３回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値（ＴＨ＿ＰＡＳＳ）以上であり、リセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）以上であったことにより、該当物理ページを不良ページであると判断している。
【０１２６】
図１６は、本技術の実施の形態におけるメモリ３００のセット操作（ステップＳ９７５）の動作例を示す流れ図である。
【０１２７】
制御部３８０は、ドライバ３５０に対してセット操作における電圧バイアスの発生を指示する（ステップＳ８１１）。具体的には、プレート電圧がビットライン電圧に対して「＋Ｖｓｅｔ」となるように設定を行う。ドライバ３５０から供給されたプレート電圧によりメモリセル３３０のプレートがドライブされる。
【０１２８】
制御部３８０は、ビットラインセレクタ３４０に対してセット操作を行うべきセルパターンを与え、値「１」に対応するビットラインをビットライン電圧で、値「０」に対応するビットラインをプレート電圧でドライブするように指示を行う（ステップＳ８１２）。ビットラインセレクタ３４０は、制御部３８０からの指示に従って、ドライバ３５０から供給されたビットライン電圧またはプレート電圧を供給する。
【０１２９】
ここで、ステップＳ８１２を１回目に実行する場合のセット操作を行うべきセルパターンとは、ステップＳ９７４において生成したセットマスク「０００００１００」である。すなわち、ＢＬ＿２のみがビットライン電圧でドライブされ、それ以外のビットライン（ＢＬ＿７乃至ＢＬ＿３、ＢＬ＿１、ＢＬ＿０）はプレート電圧でドライブされる。ステップＳ８１２を２回目以降に実行する場合には、ステップＳ９７６において正常にセット操作が行われなかったことが判明したビットのみを「１」としたセットマスクが使用される。
【０１３０】
制御部３８０は、ライトリクエストにおいて指定された物理ページアドレス（ＷＬ＿０）をワードラインデコーダ３２０に設定する（ステップＳ８１３）。ワードラインデコーダ３２０は、指定された物理ページアドレス（ＷＬ＿０）に対応するワードライン（ＷＬ＿０）を論理値「Ｈ」でドライブする。これにより、ＷＬ＿０に接続されたアクセストランジスタが導通状態となる。
【０１３１】
このとき、メモリセル３３０のプレート３３３はドライバ３５０から供給されたプレート電圧でドライブされており、ＢＬ＿２はステップＳ８１２において行った設定によりビットライン電圧でドライブされている。これはセット操作に必要な電圧バイアスであるため、ＷＬ＿０とＢＬ＿２の交点に接続された可変抵抗素子に対してセット操作が行われる。一方、ＢＬ＿７乃至ＢＬ＿３、ＢＬ＿１およびＢＬ＿０は、ステップＳ８１２において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
【０１３２】
制御部３８０は、ワードラインデコーダ３２０に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ３４０に対するビットラインのドライブ指示を取り消し、ドライバ３５０に対する電圧バイアスの発生の停止を指示する（ステップＳ８１４）。なお、セット操作完了のタイミングは、制御部３８０などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
【０１３３】
制御部３８０は、図１５におけるステップＳ９７２と同様の処理を行い、指定された物理ページアドレス（ＷＬ＿０）に対応するビットに現在記録されている値を読み出す（ステップＳ８１５）。制御部３８０は、ビットラインセレクタ３４０にアクセスし、メモリセル３３０から読み出したデータを取得する（ステップＳ８１６）。
【０１３４】
図１７は、本技術の実施の形態におけるメモリ３００のリセット操作（ステップＳ９７７）の動作例を示す流れ図である。
【０１３５】
制御部３８０はドライバ３５０に対してリセット操作における電圧バイアスの発生を指示する（ステップＳ８２１）。具体的には、ビットライン電圧がプレート電圧に対して「＋Ｖｒｅｓｅｔ」となるように設定を行う。ドライバ３５０から供給されたプレート電圧によりメモリセル３３０のプレートがドライブされる。
【０１３６】
制御部３８０は、ビットラインセレクタ３４０に対してリセット操作を行うべきセルパターンを与え、値「１」に対応するビットラインをビットライン電圧で、値「０」に対応するビットラインをプレート電圧でドライブするように指示を行う（ステップＳ８２２）。ビットラインセレクタ３４０は、制御部３８０からの指示に従って、ドライバ３５０から供給されたビットライン電圧あるいはプレート電圧を供給する。
【０１３７】
ここで、ステップＳ８２２を１回目に実行する場合には、リセット操作を行うべきセルパターンとはステップＳ９７４において生成したリセットマスク「０００００００１」である。すなわち、ＢＬ＿０のみがビットライン電圧でドライブされ、それ以外のビットライン（ＢＬ＿７乃至ＢＬ＿１）はプレート電圧でドライブされる。ステップＳ８２２を２回目以降に実行する際には、ステップＳ９７８において正常にリセット操作が行われなかったことが判明したビットのみを「１」としたリセットマスクが使用される。
【０１３８】
制御部３８０は、ライトリクエストにおいて指定された物理ページアドレス（ＷＬ＿０）をワードラインデコーダ３２０に設定する（ステップＳ８２３）。ワードラインデコーダ３２０は、指定された物理ページアドレス（ＷＬ＿０）に対応するワードライン（ＷＬ＿０）を論理値「Ｈ」でドライブする。これにより、ＷＬ＿０に接続されたアクセストランジスタが導通状態となる。このとき、メモリセル３３０のプレート３３３はドライバ３５０から供給されたプレート電圧でドライブされており、ＢＬ＿０はステップＳ８２２において行った設定によりビットライン電圧でドライブされている。これはリセット操作に必要な電圧バイアスであるため、ＷＬ＿０とＢＬ＿０の交点に接続された可変抵抗素子に対してリセット操作が行われる。一方、ＢＬ＿７乃至ＢＬ＿１は、ステップＳ８２２において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
【０１３９】
制御部３８０は、ワードラインデコーダ３２０に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ３４０に対するビットラインのドライブ指示を取り消し、ドライバ３５０に対する電圧バイアスの発生の停止を指示する（ステップＳ８２４）。なお、リセット操作完了のタイミングは、制御部３８０などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
【０１４０】
制御部３８０は、図１５におけるステップＳ９７２と同様の処理を行い、指定された物理ページアドレス（ＷＬ＿０）に対応するビットに現在記録されている値を読み出す（ステップＳ８２５）。制御部３８０は、ビットラインセレクタ３４０にアクセスし、メモリセル３３０から読み出したデータを取得する（ステップＳ８２６）。
【０１４１】
図１８は、本技術の実施の形態における記憶制御装置２００の不良ページ確定処理の動作例を示す流れ図である。記憶制御装置２００の制御部２４０は、空きページテーブル２６１に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。すなわち、その物理ページを「使用不能」とするか、または、「再利用可能」であると判断して「使用可能」とするかを判断する。この判断のタイミングとしては、ホストコンピュータ１００から指定されたタイミング、または、記憶制御装置２００において空き時間と判断したタイミングが考えられる。
【０１４２】
制御部２４０は、空きページテーブル２６１において「不良ページ発生」として記録されたエントリを１つ選択する（ステップＳ８３１）。この実施の形態では、複数存在する「不良ページ発生」と記録されたエントリから、ランダムな選択方法により１つのエントリを選択することが好ましい。
【０１４３】
制御部２４０は、ステップＳ８３１において選択したエントリの物理ページについて、物理ページイメージ領域２６７を構成する全てのビットを「１」に設定する（ステップＳ８３２）。すなわち、２７２バイト全てに「０ｘＦＦ」をフィルする。その後、制御部２４０は、物理ページイメージ領域２６７の内容をメモリ３００に書き込む（ステップＳ８３３）。この書込み処理は、ステップＳ９４３における処理と同様である。
【０１４４】
制御部２４０は、メモリ３００における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する（ステップＳ８３４）。そして、制御部２４０は、その戻り値が「書込みエラー」であるか否かを確認する（ステップＳ８３５）。
【０１４５】
書込みエラーである場合（ステップＳ８３５：Ｙｅｓ）、空きページテーブル２６１を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合（ステップＳ８３５：Ｎｏ）、ステップＳ８３６に進む。なお、ステップＳ８３３における書込みにおいては、書込みデータの全てのビットが「１」であるため、リセット操作は発生しない。したがって、リセット操作に伴う不良ページエラーは発生しない。
【０１４６】
次に、制御部２４０は、ステップＳ８３１において選択したエントリの物理ページについて、物理ページイメージ領域２６７を構成する全てのビットを「０」に設定する（ステップＳ８３６）。すなわち２７２バイト全てに「０ｘ００」をフィルする。その後、制御部２４０は、物理ページイメージ領域２６７の内容をメモリ３００に書き込む（ステップＳ８３７）。この書込み処理は、ステップＳ９４３における処理と同様である。
【０１４７】
制御部２４０は、メモリ３００における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する（ステップＳ８３８）。そして、制御部２４０は、その戻り値が「書込みエラー」であるか否かを確認する（ステップＳ８３９）。
【０１４８】
書込みエラーである場合（ステップＳ８３９：Ｙｅｓ）、空きページテーブル２６１を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合（ステップＳ８３９：Ｎｏ）、制御部２４０は、その戻り値が「不良ページエラー」であるか否かを確認する（ステップＳ８４１）。
【０１４９】
不良ページエラーである場合（ステップＳ８４１：Ｙｅｓ）、制御部２４０は、空きページテーブル２６１の該当するエントリに「使用不能」を設定する（ステップＳ８４２）。一方、不良ページエラーでない場合（ステップＳ８４１：Ｎｏ）、制御部２４０は、空きページテーブル２６１の該当するエントリに「使用可能」を設定する（ステップＳ８４３）。
【０１５０】
ここで、空きページテーブル２６１を変更することなく不良ページ確定処理を終了した場合（ステップＳ８３５：Ｙｅｓ、または、ステップＳ８３９：Ｙｅｓ）、該当物理ページは「不良ページ発生」の記録のまま維持される。この場合、将来行われる不良ページ確定処理において再度の判断が行われることになる。
【０１５１】
ここでは、全てのビットが「１」のデータを書いた後に全てのビットが「０」のデータを書くという手順を用いている。これは、全てのビットに対してリセット操作を行うための手順である。メモリ３００においては該当物理ページの値「０」のビットに対してセット操作が行われて「１」が書き込まれ（ステップＳ８３３）、該当物理ページの全てのビットに対してリセット操作が行われて「０」が書き込まれる（ステップＳ８３７）。すなわち、該当物理ページの全てのビットに対してリセット操作が行われた際のリセットエラー数により、不良ページと確定するか否かを決定している。
【０１５２】
なお、記憶制御装置２００から閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）が変更可能である場合、ステップＳ８３７の書込みに先立って閾値を少し高めに設定し、終了後に元の閾値に戻すことが考えられる。これは通常の書込みにおいて不良ページ候補を検出する閾値と、不良ページ確定処理において不良ページを決定する閾値とを比較すると、前者の方が不良ページと判断され易くするために、低い閾値を使用すべきという考え方によるものである。すなわち、この不良ページ確定処理においては、通常の書込みにおいて不良ページ候補を検出する場合よりも不良ページと判断され難い、高い基準により不良ページか否かが判断される。
【０１５３】
また、メモリ３００に対して、「指定した物理アドレスの値を反転し、リセットエラー数を通知せよ」という指示を２回行い、２回の指示で通知された２つのリセットエラー数を加算することにより、不良ページか否かを判断するという方法も考えられる。
【０１５４】
このように、本技術の第１の実施の形態では、メモリ３００においてリセットエラー数をカウントして、これに基づいて不良ページの候補を検出することにより、その後、記憶制御装置２００においてそのページの使用可否を判断することができる。なお、この第１の実施の形態ではリセットエラー数に着目して不良ページの発生を検出したが、セットエラー数に着目して同様の検出を行うようにしてもよい。
【０１５５】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリ３００においてリセットエラー数をカウントして不良ページの候補を検出していた。これに対し、この第２の実施の形態では記憶制御装置２００において不良ページを判断する。なお、基本的なハードウェア構成については上述のものと同様であるため、詳細な説明は省略する。
【０１５６】
［機能構成］
図１９は、本技術の第２の実施の形態における情報処理システムの機能構成例を示す図である。基本的な機能構成は上述の第１の実施の形態と同様であるが、記憶制御装置２００がエラーページ判定部２４４を備える点が異なっている。
【０１５７】
すなわち、この第２の実施の形態では、エラー検出部３８１において計数されたリセットエラー数およびセットエラー数は、メモリ３００から記憶制御装置２００に通知される。そして、エラー検出部３８１において検出されたエラー数を受けたエラーページ判定部２４４は、これらエラー数に基づいてページ単位でエラー発生の状態を判定する。このエラーページ判定部２４４による判定結果がページ管理部２４５に供給され、ページ管理部２４５はその判定結果を空きページテーブル２６１に反映する。
【０１５８】
例えば、エラー検出部３８１において計数されたリセットエラー数およびセットエラー数の合計値が閾値（ＴＨ＿ＰＡＳＳ）以上である場合には、書込みに失敗した旨とともにリセットエラー数およびセットエラー数がメモリ３００から記憶制御装置２００に通知される。書込みに失敗した旨が通知された場合において、最後のリセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）以上であれば、エラーページ判定部２４４は不良ページエラーが発生したものと判定する。一方、最後のリセットエラー数が閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）未満であれば、エラーページ判定部２４４は単なる書込みエラーが発生したものと判定する。ページ管理部２４５は、エラーページ判定部２４４による判定結果を空きページテーブル２６１に反映する。なお、エラーページ判定部２４４は、特許請求の範囲に記載の判定部の一例である。
【０１５９】
また、このページ管理部２４５は、第１の実施の形態と同様に、「不良ページ発生」の属性を持つ物理ページを再確認する。これにより、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。
【０１６０】
［情報処理システムの動作］
この第２の実施の形態では、読出し動作および書込み動作の基本的な処理手順は上述の第１の実施の形態と同様である。ただし、以下に示すように、記憶制御装置２００におけるステップＳ９５０のエラー処理、および、メモリ３００におけるライトリクエスト処理が第１の実施の形態とは異なる。
【０１６１】
図２０は、本技術の第２の実施の形態における記憶制御装置２００のエラー処理の動作例を示す流れ図である。
【０１６２】
制御部２４０は、メモリ３００における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する（ステップＳ８５１）。そして、制御部２４０は、その戻り値が「書込み失敗」であるか否かを確認する（ステップＳ８５２）。「書込み失敗」でない場合（ステップＳ８５２：Ｎｏ）には、エラー処理を終了して、ステップＳ９３２以降の処理を繰り返す。
【０１６３】
戻り値が「書込み失敗」である場合（ステップＳ８５２：Ｙｅｓ）、３回目の（最後の）リセットエラー数と閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）とを比較する（ステップＳ８５３）。リセットエラー数が閾値未満である場合（ステップＳ８５３：Ｎｏ）、単なる書込みエラーであると判断して、制御部２４０は空きページテーブル２６１の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む（ステップＳ８５４）。一方、リセットエラー数が閾値以上である場合（ステップＳ８５３：Ｙｅｓ）、不良ページであると判断して、制御部２４０は空きページテーブル２６１の該当物理ページに対応するエントリに対して「不良ページエラー発生」の値を書き込む（ステップＳ８５５）。
【０１６４】
なお、ステップＳ８５６以降の処理は、上述のステップＳ９５６以降の処理と同様である。
【０１６５】
ここでは、３回目の（最後の）リセットエラー数のみに着目することによって不良ページと単なる書込みエラーとを判断しているが、３回分のリセットエラー数、または、３回分のリセットエラー数およびセットエラー数を用いて判断することもできる。例えば３回目の（最後の）リセットエラー数は閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）未満であるが、１回目または２回目のリセットエラー数が予め定めた閾値に比較して大きい場合は不良ページとするなどの判断を記憶制御装置２００が独自に行うことが可能となる。
【０１６６】
図２１は、本技術の第２の実施の形態におけるメモリ３００の読出し処理の動作例を示す流れ図である。この図において、ステップＳ８７１乃至Ｓ８７５、Ｓ８７７、Ｓ８７９、Ｓ８８１およびＳ８８３の処理は、上述のステップＳ９７１乃至Ｓ９７５、Ｓ９７７、Ｓ９７９、Ｓ９８１およびＳ９８３の処理と同様である。
【０１６７】
セット操作（ステップＳ８７５）が行われた後、制御部３８０は読み出したデータとセット操作を行うべきビットパターン（セットマスク）とを比較する。そして、正常にセット操作が行われなかったビット数をカウントし、セットエラー数としてループ回数とともに格納しておく（ステップＳ８７６）。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。上述のステップＳ９７６ではセットエラー数を一時格納しておくだけであったが、このステップＳ８７６ではループ回数とともに格納しておく。これにより、最大３回分のセットエラー数がループ回数とともに格納される。
【０１６８】
リセット操作（ステップＳ８７７）が行われた後、制御部３８０は読み出したデータとリセット操作を行うべきビットパターン（リセットマスク）とを比較する。そして、正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数としてループ回数とともに格納しておく（ステップＳ８７８）。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。上述のステップＳ９７８ではリセットエラー数を一時格納しておくだけであったが、このステップＳ８７８ではループ回数とともに格納しておく。これにより、最大３回分のリセットエラー数がループ回数とともに格納される。
【０１６９】
ループの通過が３回目である場合（ステップＳ８８１：Ｙｅｓ）には、制御部３８０は制御インターフェース３１０を介して、ライトリクエストが失敗した旨を記憶制御装置２００に通知する（ステップＳ８８４）。また、このとき制御部３８０は制御インターフェース３１０を介して、３回分のセットエラー数および３回分のリセットエラー数の合計６つの値を記憶制御装置２００に通知する（ステップＳ８８４）。
【０１７０】
なお、ここでは３回分のセットエラー数および３回分のリセットエラー数を通知しているが、記憶制御装置２００で使用するパラメータに限定してもよい。例えば、３回分のリセットエラー数または最後のリセットエラー数を通知するようにしてもよい。
【０１７１】
また、ライトリクエストが正常に終了した場合においても、ステップ８８３においてループ回数と最大３回分のセットエラー数およびリセットエラーを記憶制御装置２００に通知することができる。これらの情報を受け取った記憶制御装置２００は、ループ回数と最大３回分のセットエラー数およびリセットエラー数を吟味し、記憶制御装置２００の判断で書込みエラーまたは不良ページエラーであると決定することができる。例えば、３回のループで書込みが成功しているため３回目のエラー数は少ないが、１回目および２回目のエラー数が予め定めた閾値に比較して大きい場合は不良ページであると決定するなどの判断を記憶制御装置２００が独自に行うことが可能となる。
【０１７２】
このように、本技術の第２の実施の形態では、メモリ３００においてリセットエラー数をカウントして、これに基づいて記憶制御装置２００において不良ページの発生およびそのページの使用可否を判断することができる。
【０１７３】
なお、上述の第１の実施の形態においてはページ管理部２４５がメモリ３００の外部に設けられ、第２の実施の形態においてはさらにエラーページ判定部２４４がメモリ３００の外部に設けられることを想定した。しかし、ページ管理部２４５およびエラーページ判定部２４４に相当する構成をメモリ３００に内蔵し、メモリ３００自身が不良ページの管理を行うように構成してもよい。
【０１７４】
＜３．変形例＞
［閾値の設定］
上述の実施の形態では、２種類の閾値（ＴＨ＿ＰＡＳＳおよびＴＨ＿ＢＡＤ＿ＰＡＧＥ）をメモリ３００の起動時にＯＴＰメモリ３６０から読み出す構成としているが（ステップＳ９７９およびＳ９８２）、その他の方法により閾値を設定するようにしてもよい。
【０１７５】
すなわち、ＯＴＰメモリ３６０に複数組の閾値を記録しておき、記憶制御装置２００が何れか１組を選択して使用するようにしてもよい。例えば、メモリ３００のＯＴＰメモリ３６０に、２種類の閾値（ＴＨ＿ＰＡＳＳおよびＴＨ＿ＢＡＤ＿ＰＡＧＥ）を３組記録しておくことを想定する。３組の閾値は、メモリ使用の経時状態として、初期、中期、または、後期のそれぞれに対応している。記憶制御装置２００は、メモリシステムの起動時にメモリ３００から３組の２種類の閾値を読み出し、記憶制御装置２００内でカウントした総起動時間や総書込回数などのパラメータにより３組から１組の閾値を選択してメモリ３００に設定する。または、閾値の読出しと設定を行わずに、３組の閾値群の何れか（初期、中期、後期）を特定するパラメータをメモリ３００に設定するようにしてもよい。
【０１７６】
また、ＯＴＰメモリ３６０にメモリ３００の製造ロット番号等の所定の識別子を記録しておいて、これに基づいて閾値を決定するようにしてもよい。ホストコンピュータ１００においてメモリシステムを取り扱うためのドライバは、所定の識別子と閾値の組合せを示した情報をインターネット接続等の手段を用いて予め入手しておく。ホストコンピュータ１００は、記憶制御装置２００の起動時にその組合せ情報を記憶制御装置２００に供給する。記憶制御装置２００は、メモリシステムの起動時にメモリ３００からロット番号を読み出して組合せ情報と照らし合わせることにより、適切な閾値を選択してメモリ３００に設定する。
【０１７７】
［エラー数の判断条件］
上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値（ＴＨ＿ＰＡＳＳ）と比較を行っていたが（ステップＳ９７９）、両者を異なる条件として扱ってもよい。この変形例では、ステップＳ９７９の条件を、「セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＳＥＴ」かつ「リセットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＲＥＳＥＴ」とする。この場合、制御部３８０は、ステップＳ９７６において生成したセットエラー数およびステップＳ９７８において生成したリセットエラー数を、それぞれの閾値ＴＨ＿ＰＡＳＳ＿ＳＥＴおよびＴＨ＿ＰＡＳＳ＿ＲＥＳＥＴと比較する。「セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＳＥＴ」かつ「セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＲＥＳＥＴ」が成立する場合（ステップＳ９７９：Ｙｅｓ）には、ステップＳ９８３に進む。また、「セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＳＥＴ」または「セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ＿ＲＥＳＥＴ」の少なくとも一方が成立しない場合（ステップＳ９７９：Ｎｏ）には、ステップＳ９８１に進む。
【０１７８】
［エラー数の重み付き加算］
上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値（ＴＨ＿ＰＡＳＳ）と比較を行っていたが（ステップＳ９７９）、その際、両者の重みを均等に扱っていた。これに対し、両者を異なる重みにより加算することにより、セットエラー数とリセットエラー数の感度を変更することができる。この変形例では、ステップＳ９７９の条件を、「セットエラーの数×２＋セットエラーの数＜閾値ＴＨ＿ＰＡＳＳ」とする。この場合、制御部３８０は、ステップＳ９７６において生成したセットエラー数を２倍した数に、ステップＳ９７８で生成したリセットエラー数を加算し、この値があらかじめ設定した閾値（ＴＨ＿ＰＡＳＳ）未満であるかを確認する（ステップＳ９７９）。和が閾値未満の場合（ステップＳ９７９：Ｙｅｓ）にはステップＳ９８３に進み、和が閾値以上の場合（ステップＳ９７９：Ｎｏ）にはステップＳ９８１に進む。
【０１７９】
［不良ページ通知の細分化］
上述の実施の形態では、リセットエラー数が予め設定した閾値（ＴＨ＿ＢＡＤ＿ＰＡＧＥ）以上である場合には、不良ページが発生したことを記憶制御装置２００に通知していた。この閾値を２段階にして、２種類の「不良ページ判定」を通知することにより、以下のように、より細やかな通知を行うことが可能となる。
【０１８０】
例えば、２つの閾値ＴＨ＿ＢＡＤ＿ＰＡＧＥ１およびＴＨ＿ＢＡＤ＿ＰＡＧＥ２（ＴＨ＿ＢＡＤ＿ＰＡＧＥ１＜ＴＨ＿ＢＡＤ＿ＰＡＧＥ２）を予め準備しておく。ステップＳ９８１においてループの通過が３回目である場合、すなわち３回の書込み試行ではステップＳ９７９の基準を満足できなかった場合（ステップＳ９８１：Ｙｅｓ）には、以下の処理を行う。
【０１８１】
まず、「ＴＨ＿ＢＡＤ＿ＰＡＧＥ２≦リセットエラー数」を満たす場合には、「不良ページ発生」を記憶制御装置２００に通知する。この通知はステップＳ９８４と同様である。また、「リセットエラー数＜ＴＨ＿ＢＡＤ＿ＰＡＧＥ１」を満たす場合には、「書込みエラー」を通知する。この通知はステップＳ９８５と同様である。一方、「ＴＨ＿ＢＡＤ＿ＰＡＧＥ１≦リセットエラー数＜ＴＨ＿ＢＡＤ＿ＰＡＧＥ２」を満たす場合には、「不良ページ注意」を記憶制御装置２００に通知する。この通知はこの変形例特有のものである。
【０１８２】
このような「不良ページ注意」の通知を行うことによって、記憶制御装置２００は、書換えの少ないデータ（コールドデータ）をそのページに配置するなどの制御を行うことが可能になる。
【０１８３】
［ライトデータとの比較］
上述の実施の形態では、読み出したデータとセット操作を行うべきビットパターン（セットマスク）とを比較し（ステップＳ９７６）、読み出したデータとリセット操作を行うべきビットパターン（リセットマスク）とを比較していた（ステップＳ９７８）。このような比較対象として、以下のように、書込みデータを用いることも可能である。
【０１８４】
すなわち、ステップＳ９７６において、制御部３８０は読み出したデータと書込みを行うライトデータとを比較し、ステップＳ９７４と同様にセット操作を行うべきビットパターンを決定してセットマスクを更新する。さらに、セットマスクを構成する「１」の数をカウントして、セットエラー数として一時保持しておく。また、ステップＳ９７８において、制御部３８０は読み出したデータと書込みを行うライトデータとを比較し、ステップＳ９７４と同様にリセット操作を行うべきビットパターンを決定してリセットマスクを更新する。さらに、リセットマスクを構成する「１」の数をカウントして、リセットエラー数として一時保持しておく。
【０１８５】
［消去リクエストにおける不良ページ判断］
上述の実施の形態では、記憶制御装置２００から指示されたライトリクエストをメモリ３００が処理する際に生じたエラーに着目したが、ここではライトリクエスト以外に消去リクエストが設けられている場合を想定する。この消去リクエストは、指定された物理アドレスの全てのビットに「０」を書き込むためのリクエストである。この消去リクエストについては、ライトリクエストよりも閾値を小さい値にすることにより、消去リクエストにおける不良ページ判断をより厳しくすることが望ましい。すなわち、消去リクエストはライトリクエストとは異なり、将来の記録に対して準備するという意味合いから、より低い基準で不良ページと判断され易くした方がよいと考えられるからである。
【０１８６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１８７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１８８】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１８９】
なお、本技術は以下のような構成もとることができる。
（１）不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
（２）前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記（１）に記載の記憶制御装置。
（３）前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記（１）に記載の記憶制御装置。
（４）前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する前記（１）に記載の記憶制御装置。
（５）前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する前記（１）に記載の記憶制御装置。
（６）前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する前記（６）に記載の記憶制御装置。
（８）前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う前記（６）または（７）に記載の記憶制御装置。
（９）前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する前記（６）から（８）のいずれかに記載の記憶制御装置。
（１０）前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する前記（６）から（９）のいずれかに記載の記憶制御装置。
（１１）前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する前記（１０）に記載の記憶制御装置。
（１２）前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する前記（１０）に記載の記憶制御装置。
（１３）前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記（１）に記載の記憶制御装置。
（１４）前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記（１）に記載の記憶制御装置。
（１５）前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する前記（１）に記載の記憶制御装置。
（１６）前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する前記（１）に記載の記憶制御装置。
（１７）不揮発性メモリのメモリセルと、
前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
を具備する記憶装置。
（１８）前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する前記（１７）に記載の記憶装置。
（１９）不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
を具備する記憶制御方法。
【符号の説明】
【０１９０】
１００  ホストコンピュータ
２００  記憶制御装置
２１０  ホストインターフェース
２３０  メモリインターフェース
２４０  制御部
２４４  エラーページ判定部
２４５  ページ管理部
２５０  ＲＯＭ
２６０  ＲＡＭ
２６１  空きページテーブル
２７０  ＥＣＣ処理部
２９０  バス
３００  メモリ
３１０  制御インターフェース
３２０  ワードラインデコーダ
３３０  メモリセル
３３１  可変抵抗素子
３３３  プレート
３４０  ビットラインセレクタ
３５０  ドライバ
３６０  ＯＴＰメモリ
３８０  制御部
３８１  エラー検出部
３８２  リセットエラーカウンタ
３８３  セットエラーカウンタ
３８４  エラーページ判定部
３９０  バス
【図１】
2016053808.tif 000003
【図２】
2016053808.tif 000004
【図３】
2016053808.tif 000005
【図４】
2016053808.tif 000006
【図５】
2016053808.tif 000007
【図６】
2016053808.tif 000008
【図７】
2016053808.tif 000009
【図８】
2016053808.tif 000010
【図９】
2016053808.tif 000011
【図１０】
2016053808.tif 000012
【図１１】
2016053808.tif 000013
【図１２】
2016053808.tif 000014
【図１３】
2016053808.tif 000015
【図１４】
2016053808.tif 000016
【図１５】
2016053808.tif 000017
【図１６】
2016053808.tif 000018
【図１７】
2016053808.tif 000019
【図１８】
2016053808.tif 000020
【図１９】
2016053808.tif 000021
【図２０】
2016053808.tif 000022
【図２１】
2016053808.tif 000023