(57)【特許請求の範囲】
【請求項１】
不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを当該不揮発性メモリに書き込む装置であって、
前記不揮発性メモリの第１のブロックのウェアレベリングのための第１のアドレス変換テーブルと、前記不揮発性メモリの当該第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルと、前記不揮発性メモリの当該第１のブロック以外の第３のブロックのウェアレベリングのための第３のアドレス変換テーブルとを保持する保持部と、
前記第１のアドレス変換テーブルの一の複製に加えて前記第２のアドレス変換テーブルの複製を前記第１のブロックに書き込み、前記第３のアドレス変換テーブルの複製に加えて前記第１のアドレス変換テーブルの他の複製を前記第３のブロックに書き込む書き込み部と
を含む、装置。
【請求項２】
前記書き込み部は、前記第１のブロックのウェアレベリングのために当該第１のブロック内のデータの配置の変更を行った後に、当該変更に応じて更新された前記第１のアドレス変換テーブルの前記他の複製を前記第３のブロックに書き込み、その後、当該変更に応じて更新された前記第１のアドレス変換テーブルの前記一の複製を前記第１のブロックに書き込む、請求項１の装置。
【請求項３】
前記書き込み部は、前記第１のブロック内のデータの配置の変更に続けてバンクインターリーブにより、当該変更に応じて更新された前記第１のアドレス変換テーブルの前記他の複製を前記第３のブロックに書き込む、請求項２の装置。
【請求項４】
前記書き込み部は、前記第１のアドレス変換テーブルの前記一の複製と前記第２のアドレス変換テーブルの複製とを前記第１のブロックの所定の領域に単一の書き込み動作で書き込み、前記第３のアドレス変換テーブルの複製と前記第１のアドレス変換テーブルの前記他の複製とを前記第３のブロックの所定の領域に単一の書き込み動作で書き込む、請求項１の装置。
【請求項５】
前記保持部は、自装置が起動した際に、前記一の複製と前記他の複製とが一致すれば、前記第１のアドレス変換テーブルを保持し、前記一の複製と前記他の複製とが一致しなければ、当該一の複製及び当該他の複製のうちのエラーが発生していない方を前記第１のアドレス変換テーブルとして保持する、請求項１乃至請求項４の何れかの装置。
【請求項６】
前記保持部は、自装置が起動した際に、前記一の複製と前記他の複製とが一致すれば、前記第１のアドレス変換テーブルを保持し、前記一の複製と前記他の複製とが一致しなければ、前記第１のブロックへの書き込みを禁止する旨の情報を保持する、請求項１乃至請求項４の何れかの装置。
【請求項７】
複数のブロックからなる不揮発性メモリであって、
前記複数のブロックのうちの第１のブロックは、当該第１のブロックのウェアレベリングのための第１のアドレス変換テーブルの一の複製と、前記複数のブロックのうちの当該第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルの複製とを、所定の領域に格納し、
前記複数のブロックのうちの前記第１のブロック以外の第３のブロックは、当該第３のブロックのウェアレベリングのための第３のアドレス変換テーブルの複製と、前記第１のアドレス変換テーブルの他の複製とを、所定の領域に格納する、不揮発性メモリ。
【請求項８】
前記第２のブロックと前記第３のブロックとは、同じブロックであり、
前記第２のアドレス変換テーブルと前記第３のアドレス変換テーブルとは、同じアドレス変換テーブルである、請求項７の不揮発性メモリ。
【請求項９】
不揮発性メモリと当該不揮発性メモリを制御する制御装置とを含むシステムであって、
前記不揮発性メモリは、
第１のブロックと、
前記第１のブロック以外の第２のブロックと、
前記第１のブロック以外の第３のブロックと
を含み、
前記制御装置は、
前記第１のブロックのウェアレベリングのための第１のアドレス変換テーブルと、前記第２のブロックのウェアレベリングのための第２のアドレス変換テーブルと、前記第３のブロックのウェアレベリングのための第３のアドレス変換テーブルとを保持する保持部と、
前記第１のアドレス変換テーブルの一の複製に加えて前記第２のアドレス変換テーブルの複製を前記第１のブロックに書き込み、前記第３のアドレス変換テーブルの複製に加えて前記第１のアドレス変換テーブルの他の複製を前記第３のブロックに書き込む書き込み部と
を含む、システム。
【請求項１０】
不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを当該不揮発性メモリに書き込む方法であって、
前記不揮発性メモリの第１のブロックのウェアレベリングのための第１のアドレス変換テーブルの一の複製を、当該第１のブロックに書き込むステップと、
前記不揮発性メモリの前記第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルの複製を、前記第１のブロックに書き込むステップと、
前記不揮発性メモリの前記第１のブロック以外の第３のブロックのウェアレベリングのための第３のアドレス変換テーブルの複製を、当該第３のブロックに書き込むステップと、
前記第１のアドレス変換テーブルの他の複製を、前記第３のブロックに書き込むステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレス変換テーブルを書き込む装置及び方法に関する。特に、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む装置及び方法に関する。
【背景技術】
【０００２】
フラッシュメモリや相変化型メモリ等の不揮発性メモリにおいては、データの書き換え回数に制限がある。これにより、書き換え回数が制限を超えたセルは、書き換えができない又はデータが消失（反転）するという状態に陥り、寿命を迎えることになる。
【０００３】
従って、書き換えが特定のセルに集中したとすると、そのセルは早々に（例えば数秒程度で）寿命を迎えることになる。そこで、書き換えが特定のセルに集中しないように、各セルに対する書き換え回数の均一化が行われる。この書き換え回数の均一化は一般的にウェアレベリングと呼ばれている。ウェアレベリングは、アドレス変換テーブルを用いて、ＣＰＵ等からメモリシステムに与えられる物理アドレスを、各セルに対する書き換え回数が均一化されるように、実際にデータを書き込む内部アドレスへ動的に変換する処理である。
【０００４】
ここで、ウェアレベリングの方式としては、単純で新規で効果的なスタートギャップ方式が知られている（例えば、非特許文献１参照）。
【０００５】
非特許文献１は、スタートギャップ方式が、論理アドレスと物理アドレスとの間の代数的マッピングを使うもので、２つのレジスタＳｔａｒｔ及びＧａｐと、データ移動を容易にする追加のメモリ列ＧａｐＬｉｎｅとで構成され、Ｇａｐはメモリ内の配置転換された列の数を追跡し、Ｓｔａｒｔはメモリ内の全ての列が何回配置転換されたかの経過を追うことを開示する。
【０００６】
また、公報記載の技術としては、フラッシュメモリの疲弊を少なくする技術が知られている（例えば、特許文献１参照）。
【０００７】
特許文献１は、スナップショット条件が成立したときに、管理テーブルを第１の記憶部から第２の記憶部の第１のブロックにスナップショットとして保存し、管理テーブルの保存位置を示すポインタを第２の記憶部の第２のブロック内の書き込み単位に保存し、さらにポインタが保存された第２のブロックの書き込み単位内の未書き込み領域に管理テーブルの一部を保存することを開示する。
【０００８】
また、アドレス変換テーブルを更新する技術も知られている（例えば、特許文献２、３参照）。
【０００９】
特許文献２は、並列にアクセス可能な２チップのフラッシュメモリと、フラッシュメモリから並列にデータを取得し、一時記憶するページレジスタと、ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するアドレス変換テーブルが構築されたＲＡＭを内蔵した制御回路と、を有し、アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う記憶装置を開示する。
【００１０】
特許文献３は、トランザクションログ内に保存されたいくつかのエントリーを調べ、それにより書き込みパターンを判定することと、書き込みパターンに基づいてメモリを読み出すことと、トランザクションログを、書き込みパターンに基づいてメモリから読み出されたデータに関連付けられた情報で更新することと、論理アドレス（ＬＡ）テーブルを、トランザクションログを用いて更新することと、を含むトランザクションログの復元を開示する。
【００１１】
また、データを二重化して記憶する技術も知られている（例えば、特許文献４〜６参照）。
【００１２】
特許文献４は、第１のメモリへのデータ書き込みを終了した後に第１の最新書き込み信号を生成し記憶し、第１のメモリに書き込みを行ったデータと同一のデータを第２のメモリに書き込みを行い、第２の最新書き込み信号を生成し記憶し、最新書き込み信号がメモリに正常に記憶されたか否かを示すチェックコードを生成し記憶し、メモリに記憶されているチェックコードが正常であると判断したとき、メモリに記憶されている最新書き込み信号に応じて第１のメモリまたは第２のメモリからデータの読み出しを行う不揮発性メモリを開示する。
【００１３】
特許文献５は、仮想アドレスから物理アドレスにアドレス変換する際に、ページテーブルウォーク処理により、プライマリ、シャドウの二つの物理アドレスを生成し物理メモリに書き込むデータを二重化して、障害発生時に、有効なデータが残っている方を使用することで障害からの回復を図ることを可能とするメモリ制御装置を開示する。
【００１４】
特許文献６は、ミラー書き込みの指令が入力されると、異なる記憶媒体に同一のデータを書き込み、ミラー書き込みの管理情報（データＩＤ、ミラー書き込みフラグ、論理アドレス等）を生成し、データを読み出す際に１個の記録媒体が故障している場合は、他の記録媒体から正しいデータを読み出し、この時、故障した記録媒体のデータの代わりに、他の記録媒体から読み出した正しいデータを正常な領域に書き込み直す記憶装置を開示する。
【００１５】
また、複数のフラッシュＥＥＰＲＯＭに書込み動作を同時実行させる技術も知られている（例えば、特許文献７参照）。
【００１６】
特許文献７は、ＮＡＮＤバスインタフェースが、フラッシュＥＥＰＲＯＭそれぞれからの１６本のレディー／ビジー信号を独立して受信し、フラッシュＥＥＰＲＯＭ毎に動作状態を管理する半導体ディスク装置を開示する。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２０１３−１９６１５５号公報
【特許文献２】特開２００７−１８４９９号公報
【特許文献３】ＷＯ２０１２／０７４５５４号公報
【特許文献４】特開平７−２４８９７８号公報
【特許文献５】特開平１０−３１２３３８号公報
【特許文献６】特開２００４−１３９５０３号公報
【特許文献７】特開平７−３０２１７６号公報
【非特許文献】
【００１８】
【非特許文献１】Moinuddin K. Qureshi, Michele Franchescini, Vijayalakshmi Srinivasan, Luis Lastras, Bulent Abali, John Karidis, “Enhancing Lifetime and Security of PCM-Based Main Memory with Start-Gap Wear Leveling”, IBM Research, ［online］、［平成２６年４月２２日検索］、インターネット＜URL：http://researcher.watson.ibm.com/researcher/files/us-moinqureshi/papers-sgap.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１９】
ところで、上記のアドレス変換テーブルも、不揮発性メモリ（アドレス変換されない領域）に保持される。従って、この領域にエラーが発生すると、エラーが発生したアドレスに対応するデータが読み出せなくなる。また、データを書き換える際には、誤ったアドレス変換テーブルが示すデータを壊してしまうことになり、最悪の場合、メモリシステム全体のデータを壊してしまう可能性がある。
【００２０】
しかしながら、非特許文献１及び特許文献１〜７の技術は何れも、このような問題を解決するための手段を備えていない。
【００２１】
本発明の目的は、不揮発性メモリにウェアレベリングのためのアドレス変換テーブルを書き込むシステムにおいて、不揮発性メモリの信頼性を向上することにある。
【課題を解決するための手段】
【００２２】
かかる目的のもと、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む装置であって、不揮発性メモリの第１のブロックのウェアレベリングのための第１のアドレス変換テーブルと、不揮発性メモリの第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルと、不揮発性メモリの第１のブロック以外の第３のブロックのウェアレベリングのための第３のアドレス変換テーブルとを保持する保持部と、第１のアドレス変換テーブルの一の複製に加えて第２のアドレス変換テーブルの複製を第１のブロックに書き込み、第３のアドレス変換テーブルの複製に加えて第１のアドレス変換テーブルの他の複製を第３のブロックに書き込む書き込み部とを含む、装置を提供する。
【００２３】
この装置において、書き込み部は、第１のブロックのウェアレベリングのために第１のブロック内のデータの配置の変更を行った後に、変更に応じて更新された第１のアドレス変換テーブルの他の複製を第３のブロックに書き込み、その後、変更に応じて更新された第１のアドレス変換テーブルの一の複製を第１のブロックに書き込む、ものであってよい。その場合、書き込み部は、第１のブロック内のデータの配置の変更に続けてバンクインターリーブにより、変更に応じて更新された第１のアドレス変換テーブルの他の複製を第３のブロックに書き込む、ものであってよい。
【００２４】
また、書き込み部は、第１のアドレス変換テーブルの一の複製と第２のアドレス変換テーブルの複製とを第１のブロックの所定の領域に単一の書き込み動作で書き込み、第３のアドレス変換テーブルの複製と第１のアドレス変換テーブルの他の複製とを第３のブロックの所定の領域に単一の書き込み動作で書き込む、ものであってよい。
【００２５】
更に、保持部は、自装置が起動した際に、一の複製と他の複製とが一致すれば、第１のアドレス変換テーブルを保持し、一の複製と他の複製とが一致しなければ、一の複製及び他の複製のうちのエラーが発生していない方を第１のアドレス変換テーブルとして保持する、ものであってよい。或いは、自装置が起動した際に、一の複製と他の複製とが一致すれば、第１のアドレス変換テーブルを保持し、一の複製と他の複製とが一致しなければ、第１のブロックへの書き込みを禁止する旨の情報を保持する、ものであってもよい。
【００２６】
また、本発明は、複数のブロックからなる不揮発性メモリであって、複数のブロックのうちの第１のブロックは、第１のブロックのウェアレベリングのための第１のアドレス変換テーブルの一の複製と、複数のブロックのうちの第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルの複製とを、所定の領域に格納し、複数のブロックのうちの第１のブロック以外の第３のブロックは、第３のブロックのウェアレベリングのための第３のアドレス変換テーブルの複製と、第１のアドレス変換テーブルの他の複製とを、所定の領域に格納する、不揮発性メモリも提供する。
【００２７】
この不揮発性メモリにおいて、第２のブロックと第３のブロックとは、同じブロックであってよく、第２のアドレス変換テーブルと第３のアドレス変換テーブルとは、同じアドレス変換テーブルであってよい。
【００２８】
更に、本発明は、不揮発性メモリと不揮発性メモリを制御する制御装置とを含むシステムであって、不揮発性メモリは、第１のブロックと、第１のブロック以外の第２のブロックと、第１のブロック以外の第３のブロックとを含み、制御装置は、第１のブロックのウェアレベリングのための第１のアドレス変換テーブルと、第２のブロックのウェアレベリングのための第２のアドレス変換テーブルと、第３のブロックのウェアレベリングのための第３のアドレス変換テーブルとを保持する保持部と、第１のアドレス変換テーブルの一の複製に加えて第２のアドレス変換テーブルの複製を第１のブロックに書き込み、第３のアドレス変換テーブルの複製に加えて第１のアドレス変換テーブルの他の複製を第３のブロックに書き込む書き込み部とを含む、システムも提供する。
【００２９】
更にまた、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む方法であって、不揮発性メモリの第１のブロックのウェアレベリングのための第１のアドレス変換テーブルの一の複製を、第１のブロックに書き込むステップと、不揮発性メモリの第１のブロック以外の第２のブロックのウェアレベリングのための第２のアドレス変換テーブルの複製を、第１のブロックに書き込むステップと、不揮発性メモリの第１のブロック以外の第３のブロックのウェアレベリングのための第３のアドレス変換テーブルの複製を、第３のブロックに書き込むステップと、第１のアドレス変換テーブルの他の複製を、第３のブロックに書き込むステップとを含む、方法も提供する。
【発明の効果】
【００３０】
本発明によれば、不揮発性メモリにウェアレベリングのためのアドレス変換テーブルを書き込むシステムにおいて、不揮発性メモリの信頼性を向上することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態で用いるスタートギャップ方式の概略を示した図である。
【図２】本発明の実施の形態におけるアドレス変換テーブルのフォーマットの例を示した図である。
【図３】本発明の実施の形態におけるバンクインターリーブによる連続書き込みの様子を示した図である。
【図４】本発明の実施の形態におけるメモリシステムの全体構成例を示した図である。
【図５】本発明の実施の形態におけるメモリコントローラの起動時の動作例を示したフローチャートである。
【図６】本発明の実施の形態におけるメモリコントローラの通常時の動作例を示したフローチャートである。
【発明を実施するための形態】
【００３２】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
【００３３】
［本実施の形態の概要］
本実施の形態は、書き込み粒度が例えば数十セルと小さく、フラッシュメモリのような消去動作が不要な相変化メモリにおいて、アドレス変換テーブルを複数保持するものである。これにより、システムのオーバーヘッドを増大させることなく、ウェアレベリングを行うメモリシステムの信頼性を向上する。
【００３４】
ここでは、ウェアレベリングの方式として、アドレス変換テーブルが小さくて済み、相変化メモリに適したスタートギャップ方式を用いる。これは、書き換え回数は小さな領域ごとに管理するが、アドレス変換テーブルはブロックごとに設ける方式である。この方式を用いれば、制御回路のオーバーヘッドは小さくて済む。
【００３５】
図１は、スタートギャップ方式の概略を示した図である。図では、１つのブロックに１個の空き領域を含む１７個のデータ格納領域が設けられている。図中、斜線ハッチングの領域が空き領域に相当し、領域Ａ〜領域Ｐが空き領域以外のデータ格納領域に相当する。
【００３６】
スタートギャップ方式では、１つのブロックは、データ格納領域の配置に関する複数の状態をとる。図では、複数の状態として、Ｓ（１），Ｓ（２），…，Ｓ（２８９）を示している。
【００３７】
最初、ブロックの状態はＳ（１）であったとする。この状態で、書き換え回数が１回目の閾値に達すると、空き領域と領域Ｐとが入れ替わり、ブロックの状態はＳ（２）となる。即ち、それまで領域Ｐだった領域が空き領域となる。また、書き換え回数が２回目の閾値に達すると、空き領域と領域Ｏとが入れ替わる。このように、閾値に達する度に空き領域と隣接するデータ格納領域とが順次入れ替わり、書き換え回数が１６回目の閾値に達すると、ブロックの状態はＳ（１７）となる。即ち、空き領域はブロックの先頭まで移動する。
【００３８】
次に、書き換え回数が１７回目の閾値に達すると、ブロックの状態はＳ（１８）となる。即ち、空き領域の位置はＳ（１）と同じであるが、全てのデータ格納領域の位置がＳ（１）に比べて１つずつずれた状態になる。その後、書き換え回数が３３回目の閾値に達すると、ブロックの状態はＳ（３４）となり、空き領域は再びブロックの先頭まで移動する。
【００３９】
以下、１７回閾値に達することにより空き領域をブロックの先頭まで移動させる動作を１５回繰り返したとする。即ち、Ｓ（１）から数えて、２８８（＝１７×１７−１）回目の閾値に達したとする。すると、ブロックの状態はＳ（２８９）となる。その後、２８９（＝１７×１７）回目の閾値に達すると、ブロックの状態はＳ（１）に戻る。
【００４０】
ところで、本実施の形態では、番地１７の領域を確保し、これをアドレス変換テーブル格納領域とする。図中、アドレス変換テーブル格納領域は、黒塗りで示している。また、図から分かる通り、アドレス変換テーブル格納領域と空き領域との入れ替えは行われない。
【００４１】
ここで、アドレス変換テーブルは、図１に示した複数の状態を識別する識別情報を保持するものとする。このような識別情報を保持することにより、あるデータ格納領域への書き込みが指示された場合に、その識別情報により識別される状態におけるそのデータ格納領域の位置に書き込みを行うことが可能となる。このような識別情報としては、例えば、領域Ａのアドレスと空き領域のアドレスとの組み合わせを保持してもよいが、本実施の形態では、図１に示した複数の状態に付された連番（１，２，…，２８９）を保持するものとする。
【００４２】
また、本実施の形態では、相変化メモリはＤＲＡＭと同様に複数のバンクに分かれているものとする。図１では、１つのブロックについてのみ説明したが、実際には、複数のバンク上に複数のブロックが存在するものとする。
【００４３】
そして、本実施の形態では、自ブロックにおけるアドレス変換のためのアドレス変換テーブル（自ブロック用アドレス変換テーブル）を格納する際に、そのオリジナルを自ブロック内に格納し、そのコピーを他ブロック内に格納する。これは、自ブロック内には、自ブロック用アドレス変換テーブルのオリジナルと、他ブロックにおけるアドレス変換のためのアドレス変換テーブル（他ブロック用アドレス変換テーブル）のコピーとが格納される、ということを意味する。その際、自ブロック用アドレス変換テーブルのオリジナルと他ブロック用アドレス変換テーブルのコピーとは、マージされた状態で、自ブロックのアドレス変換テーブル格納領域に格納される。このような構成により、１回の書き込み動作で２つのアドレス変換テーブルを同時に更新することが可能となる。
【００４４】
ここで、アドレス変換テーブルの構成について説明する。
【００４５】
１つのブロックが図１に示したような構成を有する場合、ブロックのデータ格納領域の配置に関する状態は２８９（＝１７×１７）通りとなる。従って、１つのアドレス変換テーブルは、９ビットの情報により生成できる。また、２つのブロックに対するアドレス変換テーブルは、１８ビットの情報により生成される。
【００４６】
更に、別の具体的な例として、１６Ｇビットのメモリ８個で構成した１６ＧバイトのＤＩＭＭ（Dual Inline Memory Module）を考える。
【００４７】
まず、このＤＩＭＭは８バンクからなるものとする。そして、ブロックサイズはバンクサイズに等しいものとする。すると、ブロックサイズは２Ｇ（＝１６Ｇ／８）バイトとなる。
【００４８】
また、相変化メモリの書き込み粒度（バーストサイズ）は、システムメモリとして使用することを前提とした最小粒度であっても、ＳＤＲＡＭ（Synchronous DRAM）と同様に、ＣＰＵのキャッシュラインと同等のサイズである。例えば、ｘ８６ ＣＰＵ用のメモリでは、３２〜６４バイトである。つまり、３２バイト以下のサイズであれば、１回の書き込み動作で書き込まれる。そこで、バーストサイズは３２バイトとする。そして、データ格納領域のサイズはバーストサイズに等しいとする。すると、各ブロックは２２６−１（＝２Ｇ／３２−１）個のデータ格納領域を含むので、各ブロックのデータ格納領域の配置に関する状態は約２５２通りとなる。従って、１つのアドレス変換テーブルは５２ビットで生成できる。また、２つのブロックに対するアドレス変換テーブルは１０４ビットで生成できる。これにより、２つのブロックに対するアドレス変換テーブルは、バーストサイズである３２バイト内に収めることができる。
【００４９】
図２は、このときのアドレス変換テーブルのフォーマットの例を示した図である。図示するように、このアドレス変換テーブルは、５２ビットの自ブロック用アドレス変換テーブルと、５２ビットの他ブロック用アドレス変換テーブルとを含んでいる。
【００５０】
また、一般的に、相変化メモリの複数のバンクは同時に動作させることができる。従って、自ブロックが存在するバンク以外のバンクにある他ブロックにアドレス変換テーブルのコピーを格納することにより、バンクインターリーブによる連続書き込みが可能となる。具体的には、図１に示した空き領域と隣り合うデータ格納領域との入れ替え動作に続けてバンクインターリーブで、この入れ替え動作後の状態を示すアドレス変換テーブルのコピーを他ブロックに書き込むことが可能になる。
【００５１】
図３は、このようなバンクインターリーブによる連続書き込みの様子を示した図である。図では、上段が自バンクにおける処理のタイムシーケンスを示し、下段が別バンクにおける処理のタイムシーケンスを示す。本実施の形態では、図示するように、まず、自バンクにおいて、空き領域と隣接するデータ格納領域とを入れ替えるコマンドを処理し、そのコマンドに基づく書き込み処理を開始する。また、この書き込み処理の開始時に、別バンクにおいて、アドレス変換テーブルのコピーを書き込むコマンドを処理する。そして、そのコマンドに基づく書き込み処理を、自バンクにおける書き込み処理と並行して行う。
【００５２】
［本実施の形態のメモリシステムの構成］
図４は、本実施の形態におけるメモリシステムの全体構成例を示した図である。図示するように、このメモリシステムは、メモリ１０と、メモリコントローラ２０とを含む。
【００５３】
メモリ１０は、ブロック１１ａ，１１ｂ，１１ｃを含む。そして、ブロック１１ａは、データ格納領域１２ａとアドレス変換テーブル格納領域１３ａとを含み、ブロック１１ｂは、データ格納領域１２ｂとアドレス変換テーブル格納領域１３ｂとを含み、ブロック１１ｃは、データ格納領域１２ｃとアドレス変換テーブル格納領域１３ｃとを含む。
【００５４】
ブロック１１ａ，１１ｂ，１１ｃは、図１に示したブロックに相当する。尚、ブロック１１ａ，１１ｂ，１１ｃは、これらを区別しない場合は、単にブロック１１と称するものとする。ブロック１１の数は幾つでもよいが、ここでは、３つのブロック１１を設けた例を示している。本実施の形態では、第１のブロックの一例として、ブロック１１ａを設けており、第２のブロックの一例として、ブロック１１ｂを設けており、第３のブロックの一例として、ブロック１１ｃを設けている。
【００５５】
データ格納領域１２ａ，１２ｂ，１２ｃは、図１に示したデータ格納領域に相当する。但し、ここでは、図１に示した１個の空き領域を含む１７個のデータ格納領域の全体をデータ格納領域１２ａ，１２ｂ，１２ｃとしている。尚、データ格納領域１２ａ，１２ｂ，１２ｃも、これらを区別しない場合は、単にデータ格納領域１２と称するものとする。
【００５６】
アドレス変換テーブル格納領域１３ａ，１３ｂ，１３ｃは、図１に示したアドレス変換テーブル格納領域に相当する。この例では、ブロック１１ａに対するアドレス変換テーブルのオリジナルであるオリジナルａが、ブロック１１ｂに対するアドレス変換テーブルのコピーであるコピーｂと共に、アドレス変換テーブル格納領域１３ａに格納されている。また、ブロック１１ａに対するアドレス変換テーブルのコピーであるコピーａが、ブロック１１ｃに対するアドレス変換テーブルのオリジナルであるオリジナルｃと共に、アドレス変換テーブル格納領域１３ｃに格納されている。尚、アドレス変換テーブル格納領域１３ａ，１３ｂ，１３ｃも、これらを区別しない場合は、単にアドレス変換テーブル格納領域１３と称するものとする。本実施の形態では、所定の領域の一例として、アドレス変換テーブル格納領域１３ａ，１３ｂ，１３ｃを設けている。また、第１のアドレス変換テーブルの一の複製の一例として、オリジナルａを用いており、第１のアドレス変換テーブルの他の複製の一例として、コピーａを用いており、第２のアドレス変換テーブルの複製の一例として、コピーｂを用いており、第３のアドレス変換テーブルの複製の一例として、オリジナルｃを用いている。
【００５７】
尚、この例では、メモリ１０がブロック１１ａ，１１ｂ，１１ｃを含むものとし、ブロック１１ａにオリジナルａ及びコピーｂを、ブロック１１ｂにオリジナルｂ及びコピーｃを、ブロック１１ｃにオリジナルｃ及びコピーａを、それぞれ格納することとしたが、これには限らない。例えば、メモリ１０が４つ以上のブロック１１を含むものとすると、各ブロックに格納するオリジナル及びコピーの組み合わせは種々考えられる。また、極端な例として、メモリ１０がブロック１１ａ，１１ｂを含む例では、ブロック１１にオリジナルａ及びコピーｂを、ブロック１１ｂにオリジナルｂ及びコピーａを、それぞれ格納することとしてもよい。
【００５８】
また、メモリコントローラ２０は、読み出し回路２１と、比較検査回路２２と、アドレス変換テーブル保持回路２３と、書き込み回路２４と、計数比較回路２５と、アドレス変換テーブル更新回路２６とを含む。
【００５９】
読み出し回路２１は、メモリ１０のブロック１１からアドレス変換テーブルのオリジナル及びコピーを読み出す。
【００６０】
比較検査回路２２は、読み出し回路２１が読み出したアドレス変換テーブルのオリジナル及びコピーを受け取り、オリジナルとコピーとの比較、及び、オリジナル又はコピーにエラーが発生していないかの検査を行う。
【００６１】
アドレス変換テーブル保持回路２３は、比較検査回路２２が受け取ったアドレス変換テーブルのオリジナル及びコピーの何れかを、比較検査回路２２による比較及び検査の結果に応じて保持する。具体的には、比較検査回路２２による比較及び検査の結果、オリジナルとコピーとが一致し、かつ、オリジナルとコピーの何れにもエラーが発生していないことが分かった場合、及び、オリジナルとコピーとが一致しないが、コピーにエラーが発生していないと分かった場合は、アドレス変換テーブルのコピーを保持する。また、オリジナルとコピーとが一致せず、コピーにエラーが発生しているが、オリジナルにエラーが発生していないと分かった場合は、アドレス変換テーブルのオリジナルを保持する。更に、オリジナルとコピーとが一致せず、オリジナルとコピーの両方にエラーが発生していると分かった場合は、着目しているブロックへの書き込みを行うべきでない旨を保持する。本実施の形態では、アドレス変換テーブルを保持する保持部の一例として、アドレス変換テーブル保持回路２３を設けている。
【００６２】
書き込み回路２４は、メモリ１０のブロック１１内のデータ格納領域１２にデータを書き込む。また、計数比較回路２５によりデータ格納領域１２の書き換え回数が閾値に達したと判定されると、以下のような書き込み動作を行う。即ち、まず、アドレス変換テーブル保持回路２３に保持され、まだ書き出されていなかったアドレス変換テーブルを、そのブロック１１にオリジナルとして書き出す。また、そのブロック１１内の空き領域と隣接するデータ格納領域とが入れ替わるように書き込みを行う。更に、アドレス変換テーブル更新回路２６により更新されたアドレス変換テーブルを、そのブロック１１以外のブロックにコピーとして書き出す。本実施の形態では、アドレス変換テーブルを書き込む書き込み部の一例として、書き込み回路２４を設けている。
【００６３】
計数比較回路２５は、書き込み回路２４がメモリ１０のブロック１１内のデータ格納領域１２にデータを書き込んだ際に、データ格納領域１２の書き換え回数を計数し、その結果と閾値とを比較することにより、書き換え回数が閾値に達したかどうかを判定する。
【００６４】
アドレス変換テーブル更新回路２６は、データ格納領域１２の書き換え回数が閾値に達した旨が計数比較回路２５から通知された書き込み回路２４の指示により、アドレス変換テーブル保持回路２３に保持されているアドレス変換テーブルを更新する。具体的には、アドレス変換テーブルが、ブロック１１内の空き領域と隣接するデータ格納領域とが入れ替わった後の状態を示すようにする。
【００６５】
［本実施の形態のメモリコントローラの動作］
図５は、メモリシステムを起動したときのメモリコントローラ２０の動作例を示したフローチャートである。
【００６６】
図示するように、メモリコントローラ２０では、まず、読み出し回路２１が、１つのブロック１１に着目し、そのブロック１１に対するアドレス変換テーブルのオリジナル及びコピーをメモリ１０から読み出す（ステップ２０１）。例えば、着目するブロック１１がブロック１１ａだとすると、ブロック１１ａに対するアドレス変換テーブルのオリジナルであるオリジナルａをアドレス変換テーブル格納領域１３ａから読み出し、ブロック１１ａに対するアドレス変換テーブルのコピーであるコピーａをアドレス変換テーブル格納領域１３ｃから読み出す。
【００６７】
次に、比較検査回路２２が、ステップ２０１で読み出したオリジナルとコピーとを比較すると共に、ＥＣＣ又はパリティチェック機能によりエラーの有無を確認する。そして、ステップ２０１で読み出したオリジナルとコピーとが一致し、かつ、エラーがないかどうかを判定する（ステップ２０２）。
【００６８】
その結果、ステップ２０１で読み出したオリジナルとコピーとが一致し、かつ、エラーがないと比較検査回路２２により判定されれば、アドレス変換テーブル保持回路２３が、コピー（オリジナルと同じ）をアドレス変換テーブルとして保持する（ステップ２０３）。
【００６９】
一方、ステップ２０１で読み出したオリジナルとコピーとが一致しない、又は、エラーがあると比較検査回路２２により判定されれば、比較検査回路２２は、ステップ２０１で読み出したコピーにエラーがあるかどうかを判定する（ステップ２０４）。そして、ステップ２０１で読み出したコピーにエラーがないと比較検査回路２２により判定されれば、アドレス変換テーブル保持回路２３は、コピーをアドレス変換テーブルとして保持する（ステップ２０３）。
【００７０】
また、ステップ２０１で読み出したコピーにエラーがあると比較検査回路２２により判定されれば、比較検査回路２２は、ステップ２０１で読み出したオリジナルにエラーがあるかどうかを判定する（ステップ２０５）。ステップ２０１で読み出したオリジナルにエラーがないと比較検査回路２２により判定されれば、アドレス変換テーブル保持回路２３は、オリジナルをアドレス変換テーブルとして保持する（ステップ２０６）。
【００７１】
更に、ステップ２０１で読み出したオリジナルにもエラーがあると比較検査回路２２により判定されれば、アドレス変換テーブル保持回路２３は、ブロック１１内のデータを壊さないように、着目するブロック１１への書き込みを禁止する旨を保持する（ステップ２０７）。尚、この場合、エラーリカバリはソフトウェアの処理に委ねるものとする。
【００７２】
その後、読み出し回路２１は、全てのブロック１１に対するアドレス変換テーブルを読み出したかどうかを判定する（ステップ２０８）。全てのブロック１１に対するアドレス変換テーブルを読み出していないと判定すれば、読み出し回路２１は、アドレス変換テーブルを読み出していないブロック１１に着目し、ステップ２０１〜２０７の処理を繰り返す。また、全てのブロック１１に対するアドレス変換テーブルを読み出したと判定されれば、処理は通常動作へと移行する。
【００７３】
尚、この動作例では、ＥＣＣ又はパリティチェック機能があることを前提としたが、ＥＣＣ又はパリティチェック機能がないことも考えられる。その場合は、ステップ２０２でオリジナルとコピーとが一致すると判定されれば、コピー（オリジナルと同じ）をアドレス変換テーブルとして保持し、ステップ２０２でオリジナルとコピーとが一致しないと判定されれば、ステップ２０４及びステップ２０５をスキップしてステップ２０７へ進み、着目するブロック１１への書き込みを禁止する旨を保持するようにすればよい。
【００７４】
図６は、メモリシステムを起動後、通常動作を行っているときのメモリコントローラ２０の動作例を示したフローチャートである。
【００７５】
図示するように、メモリコントローラ２０では、まず、書き込み回路２４が、何れかのブロック１１内のデータ格納領域１２に対する書き込みがあったかどうかを判定する（ステップ２５１）。データ格納領域１２に対する書き込みがあったと書き込み回路２４により判定されれば、計数比較回路２５が、そのブロック１１内のデータ格納領域１２に対する書き換え回数をカウントアップし（ステップ２５２）、書き換え回数が閾値に達したかどうかを判定する（ステップ２５３）。
【００７６】
書き換え回数が閾値に達したと計数比較回路２５により判定されれば、書き込み回路２４は、アドレス変換テーブル保持回路２３に保持されているアドレス変換テーブルが既にオリジナルとして書き出されているかどうかを判定する（ステップ２５４）。ここで、アドレス変換テーブルが既にオリジナルとして書き出されていることは、アドレス変換テーブルがオリジナルとして書き出された時点で、例えばアドレス変換テーブル保持回路２３が記憶しておけばよい。その結果、アドレス変換テーブルがまだオリジナルとして書き出されていないと判定すれば、書き込み回路２４は、アドレス変換テーブルをオリジナルとしてそのブロック１１内のアドレス変換テーブル格納領域１３に書き出す（ステップ２５５）。例えば、図４では、書き込みがあったブロック１１がブロック１１ａだとすると、ブロック１１ａに対するアドレス変換テーブルのオリジナルであるオリジナルａをアドレス変換テーブル格納領域１３ａに書き込む。一方、アドレス変換テーブルが既にオリジナルとして書き出されていると判定すれば、書き込み回路２４は、アドレス変換テーブルをオリジナルとして書き出さない。
【００７７】
次に、アドレス変換テーブル更新回路２６は、アドレス変換テーブル保持回路２３に保持されているアドレス変換テーブルを更新する（ステップ２５６）。具体的には、書き換え回数が閾値に達することにより、図１に示した状態の変遷が生じるので、状態を示す識別情報を１つ進める。
【００７８】
次いで、書き込み回路２４は、そのブロック１１内の空き領域と隣接するデータ格納領域１２とを入れ替える（ステップ２５７）。また、これに続けてバンクインターリーブにより、アドレス変換テーブルのコピーを、他のブロック１１のアドレス変換テーブル格納領域１３に書き込む（ステップ２５８）。例えば、図４では、書き込みがあったブロック１１がブロック１１ａだとすると、ブロック１１ａに対するアドレス変換テーブルのコピーであるコピーａをアドレス変換テーブル格納領域１３ｃに書き込む。
【００７９】
その後、書き込み回路２４は、システムが終了する旨の通知を受けたかどうかを判定する（ステップ２５９）。システムが終了する旨の通知を受けていないと判定されれば、処理はステップ２５１に戻る。また、システムが終了する旨の通知を受けたと判定すれば、書き込み回路２４は、アドレス変換テーブル保持回路２３に保持されているアドレス変換テーブルが既にオリジナルとして書き出されているかどうかを判定する（ステップ２６０）。その結果、アドレス変換テーブルがまだオリジナルとして書き出されていないと判定すれば、書き込み回路２４は、アドレス変換テーブルをオリジナルとしてそのブロック１１内のアドレス変換テーブル格納領域１３に書き出す（ステップ２６１）。一方、アドレス変換テーブルが既にオリジナルとして書き出されていると判定すれば、そのまま処理を終了する。
【００８０】
尚、この動作例では、例えばブロック１１ａの書き換え回数が閾値に達した際にブロック１１ａに対するアドレス変換テーブルのコピーがステップ２５８で例えばブロック１１ｃに書き出された後、ブロック１１ａの書き換え回数が再度閾値に達した際にブロック１１ａに対応するアドレス変換テーブルのオリジナルがステップ２５５でブロック１１ａに書き出されるようにした。しかしながら、ブロック１１ａに対するアドレス変換テーブルのオリジナルは、ブロック１１ａの書き換え回数が再度閾値に達するまでに意図的にブロック１１ａに書き出すようにしてもよい。
【００８１】
或いは、ブロック１１ａに対応するアドレス変換テーブルのオリジナルは、ブロック１１ａの書き換え回数が再度閾値に達するまでに意図的に書き出さずに、ブロック１１ｃの書き換え回数が閾値に達することによりブロック１１ｃに対するアドレス変換テーブルのコピーがブロック１１ａに書き出される際に一緒に書き出されるのを待ってもよい。この場合は、図６に、ブロック１１ｃに対するアドレス変換テーブルのコピーのブロック１１ａへの書き込みを検知するステップと、そのような書き込みが検知されるとブロック１１ａに対するアドレス変換テーブルのオリジナルもブロック１１ａに書き込むステップとを追加すればよい。
【００８２】
以上述べたように、本実施の形態では、アドレス変換テーブルのオリジナル及びコピーを別々のブロック１１にて保持するようにした。これにより、何らかの原因で一方のアドレス変換テーブルを読み込めなかったとしても、他方のアドレス変換テーブルを読み込むことにより、復帰することが可能となった。
【００８３】
また、本実施の形態では、空き領域と隣接するデータ格納領域との入れ替え、アドレス変換テーブルのコピーの書き出し、アドレス変換テーブルのオリジナルの書き出しの順に処理を行うようにした。これにより、この処理が電源断等のトラブルで中断されても修復することが可能となった。特に、本実施の形態では、アドレス変換テーブルのオリジナルよりもコピーの方を先に書き出すようにした。従って、アドレス変換テーブルのオリジナルを書き出す前に電源断等に起因するトラブルが発生しても、データ消失はコピー中の領域に限られ、データ消失が全体に及ぶのを回避できるようになった。
【００８４】
更に、本実施の形態では、自ブロックに対するアドレス変換テーブルのオリジナルと他ブロックに対するアドレス変換テーブルのコピーとをマージして単一の書き込み動作で１つのブロックに書き込むようにした。これにより、他のブロックに対するアドレス変換テーブルのコピーを自ブロックに保持することによるパフォーマンス及びチップサイズのペナルティの発生を抑制することが可能となった。具体的には、自ブロックに対応するアドレス変換テーブルのオリジナルを意図的に自ブロックに書き出す必要性を低くすると共に、アドレス変換テーブル格納領域の増加を抑え、オーバーヘッドを小さくできるようになった。
【００８５】
更にまた、アドレス変換テーブルのコピーを他ブロックに配置することにより、バンクインターリーブによる連続書き込みで更新することが可能となった。そのため、アドレス変換テーブルの更新に伴うオーバーヘッドを小さくできるようになった。
【００８６】
尚、本実施の形態では、アドレス変換テーブルのオリジナル及びコピーを１つのアドレス変換テーブル格納領域１３に格納するようにしたが、これには限らない。ブロック１１に２つのアドレス変換テーブル格納領域１３を設け、アドレス変換テーブルのオリジナル及びコピーを２つのアドレス変換テーブル格納領域１３のそれぞれに格納するようにしてもよい。つまり、本実施の形態は、アドレス変換テーブルのオリジナル及びコピーを１つのブロック１１に格納するものと捉えてもよい。
【００８７】
また、本実施の形態では、アドレス変換テーブルの２つの複製のうち、そのアドレス変換テーブルに対応するブロック１１に格納する方をオリジナルとし、そのアドレス変換テーブルに対応するブロック１１以外のブロック１１に格納する方をコピーとしたが、これには限らない。オリジナル及びコピーという意味付けを行わずに、アドレス変換テーブルの２つの複製のうち、一方をそのアドレス変換テーブルに対応するブロック１１に格納し、他方をそのアドレス変換テーブルに対応するブロック１１以外のブロック１１に格納するものと捉えてもよい。
【００８８】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００８９】
１０…メモリ、１１ａ，１１ｂ，１１ｃ…ブロック、１２ａ，１２ｂ，１２ｃ…データ格納領域、１３ａ，１３ｂ，１３ｃ…アドレス変換テーブル格納領域、２０…メモリコントローラ、２１…読み出し回路、２２…比較検査回路、２３…アドレス変換テーブル保持回路、２４…書き込み回路、２５…計数比較回路、２６…アドレス変換テーブル更新回路
【図１】
0005950286.tif 000002
【図２】
0005950286.tif 000003
【図３】
0005950286.tif 000004
【図４】
0005950286.tif 000005
【図５】
0005950286.tif 000006
【図６】
0005950286.tif 000007