特開2015-225608(P2015-225608A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特開2015-225608アドレス変換テーブルを書き込む装置及び方法
<>
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000003
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000004
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000005
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000006
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000007
  • 特開2015225608-アドレス変換テーブルを書き込む装置及び方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-225608(P2015-225608A)
(43)【公開日】2015年12月14日
(54)【発明の名称】アドレス変換テーブルを書き込む装置及び方法
(51)【国際特許分類】
   G06F 12/16 20060101AFI20151117BHJP
【FI】
   G06F12/16 310J
【審査請求】未請求
【請求項の数】10
【出願形態】OL
【全頁数】17
(21)【出願番号】特願2014-111591(P2014-111591)
(22)【出願日】2014年5月29日
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】藤田 典生
【テーマコード(参考)】
5B018
【Fターム(参考)】
5B018GA04
5B018HA03
5B018NA06
(57)【要約】
【課題】不揮発性メモリにウェアレベリングのためのアドレス変換テーブルを書き込むシステムにおいて、不揮発性メモリの信頼性を向上する。
【解決手段】メモリ10を構成するブロック11a,11b,11cのうち、例えばブロック11aのデータ格納領域12aにデータが書き込まれると、メモリコントローラ20では、計数比較回路25が、書き換え回数が閾値に達したかどうかを判定し、書き換え回数が閾値に達したと判定されると、アドレス変換テーブル更新回路26が、ウェアレベリングのために変更されたデータ格納領域12aのデータの配置の状態を示すようにアドレス変換テーブルを更新し、書き込み回路24が、更新後のアドレス変換テーブルのコピーaをアドレス変換テーブル格納領域13cに書き込んだ後、更新後のアドレス変換テーブルのオリジナルaをアドレス変換テーブル格納領域13aに書き込む。
【選択図】図4
【特許請求の範囲】
【請求項1】
不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを当該不揮発性メモリに書き込む装置であって、
前記不揮発性メモリの第1のブロックのウェアレベリングのための第1のアドレス変換テーブルと、前記不揮発性メモリの当該第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルと、前記不揮発性メモリの当該第1のブロック以外の第3のブロックのウェアレベリングのための第3のアドレス変換テーブルとを保持する保持部と、
前記第1のアドレス変換テーブルの一の複製に加えて前記第2のアドレス変換テーブルの複製を前記第1のブロックに書き込み、前記第3のアドレス変換テーブルの複製に加えて前記第1のアドレス変換テーブルの他の複製を前記第3のブロックに書き込む書き込み部と
を含む、装置。
【請求項2】
前記書き込み部は、前記第1のブロックのウェアレベリングのために当該第1のブロック内のデータの配置の変更を行った後に、当該変更に応じて更新された前記第1のアドレス変換テーブルの前記他の複製を前記第3のブロックに書き込み、その後、当該変更に応じて更新された前記第1のアドレス変換テーブルの前記一の複製を前記第1のブロックに書き込む、請求項1の装置。
【請求項3】
前記書き込み部は、前記第1のブロック内のデータの配置の変更に続けてバンクインターリーブにより、当該変更に応じて更新された前記第1のアドレス変換テーブルの前記他の複製を前記第3のブロックに書き込む、請求項2の装置。
【請求項4】
前記書き込み部は、前記第1のアドレス変換テーブルの前記一の複製と前記第2のアドレス変換テーブルの複製とを前記第1のブロックの所定の領域に単一の書き込み動作で書き込み、前記第3のアドレス変換テーブルの複製と前記第1のアドレス変換テーブルの前記他の複製とを前記第3のブロックの所定の領域に単一の書き込み動作で書き込む、請求項1の装置。
【請求項5】
前記保持部は、自装置が起動した際に、前記一の複製と前記他の複製とが一致すれば、前記第1のアドレス変換テーブルを保持し、前記一の複製と前記他の複製とが一致しなければ、当該一の複製及び当該他の複製のうちのエラーが発生していない方を前記第1のアドレス変換テーブルとして保持する、請求項1乃至請求項4の何れかの装置。
【請求項6】
前記保持部は、自装置が起動した際に、前記一の複製と前記他の複製とが一致すれば、前記第1のアドレス変換テーブルを保持し、前記一の複製と前記他の複製とが一致しなければ、前記第1のブロックへの書き込みを禁止する旨の情報を保持する、請求項1乃至請求項4の何れかの装置。
【請求項7】
複数のブロックからなる不揮発性メモリであって、
前記複数のブロックのうちの第1のブロックは、当該第1のブロックのウェアレベリングのための第1のアドレス変換テーブルの一の複製と、前記複数のブロックのうちの当該第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルの複製とを、所定の領域に格納し、
前記複数のブロックのうちの前記第1のブロック以外の第3のブロックは、当該第3のブロックのウェアレベリングのための第3のアドレス変換テーブルの複製と、前記第1のアドレス変換テーブルの他の複製とを、所定の領域に格納する、不揮発性メモリ。
【請求項8】
前記第2のブロックと前記第3のブロックとは、同じブロックであり、
前記第2のアドレス変換テーブルと前記第3のアドレス変換テーブルとは、同じアドレス変換テーブルである、請求項7の不揮発性メモリ。
【請求項9】
不揮発性メモリと当該不揮発性メモリを制御する制御装置とを含むシステムであって、
前記不揮発性メモリは、
第1のブロックと、
前記第1のブロック以外の第2のブロックと、
前記第1のブロック以外の第3のブロックと
を含み、
前記制御装置は、
前記第1のブロックのウェアレベリングのための第1のアドレス変換テーブルと、前記第2のブロックのウェアレベリングのための第2のアドレス変換テーブルと、前記第3のブロックのウェアレベリングのための第3のアドレス変換テーブルとを保持する保持部と、
前記第1のアドレス変換テーブルの一の複製に加えて前記第2のアドレス変換テーブルの複製を前記第1のブロックに書き込み、前記第3のアドレス変換テーブルの複製に加えて前記第1のアドレス変換テーブルの他の複製を前記第3のブロックに書き込む書き込み部と
を含む、システム。
【請求項10】
不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを当該不揮発性メモリに書き込む方法であって、
前記不揮発性メモリの第1のブロックのウェアレベリングのための第1のアドレス変換テーブルの一の複製を、当該第1のブロックに書き込むステップと、
前記不揮発性メモリの前記第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルの複製を、前記第1のブロックに書き込むステップと、
前記不揮発性メモリの前記第1のブロック以外の第3のブロックのウェアレベリングのための第3のアドレス変換テーブルの複製を、当該第3のブロックに書き込むステップと、
前記第1のアドレス変換テーブルの他の複製を、前記第3のブロックに書き込むステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アドレス変換テーブルを書き込む装置及び方法に関する。特に、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む装置及び方法に関する。
【背景技術】
【0002】
フラッシュメモリや相変化型メモリ等の不揮発性メモリにおいては、データの書き換え回数に制限がある。これにより、書き換え回数が制限を超えたセルは、書き換えができない又はデータが消失(反転)するという状態に陥り、寿命を迎えることになる。
【0003】
従って、書き換えが特定のセルに集中したとすると、そのセルは早々に(例えば数秒程度で)寿命を迎えることになる。そこで、書き換えが特定のセルに集中しないように、各セルに対する書き換え回数の均一化が行われる。この書き換え回数の均一化は一般的にウェアレベリングと呼ばれている。ウェアレベリングは、アドレス変換テーブルを用いて、CPU等からメモリシステムに与えられる物理アドレスを、各セルに対する書き換え回数が均一化されるように、実際にデータを書き込む内部アドレスへ動的に変換する処理である。
【0004】
ここで、ウェアレベリングの方式としては、単純で新規で効果的なスタートギャップ方式が知られている(例えば、非特許文献1参照)。
【0005】
非特許文献1は、スタートギャップ方式が、論理アドレスと物理アドレスとの間の代数的マッピングを使うもので、2つのレジスタStart及びGapと、データ移動を容易にする追加のメモリ列GapLineとで構成され、Gapはメモリ内の配置転換された列の数を追跡し、Startはメモリ内の全ての列が何回配置転換されたかの経過を追うことを開示する。
【0006】
また、公報記載の技術としては、フラッシュメモリの疲弊を少なくする技術が知られている(例えば、特許文献1参照)。
【0007】
特許文献1は、スナップショット条件が成立したときに、管理テーブルを第1の記憶部から第2の記憶部の第1のブロックにスナップショットとして保存し、管理テーブルの保存位置を示すポインタを第2の記憶部の第2のブロック内の書き込み単位に保存し、さらにポインタが保存された第2のブロックの書き込み単位内の未書き込み領域に管理テーブルの一部を保存することを開示する。
【0008】
また、アドレス変換テーブルを更新する技術も知られている(例えば、特許文献2、3参照)。
【0009】
特許文献2は、並列にアクセス可能な2チップのフラッシュメモリと、フラッシュメモリから並列にデータを取得し、一時記憶するページレジスタと、ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するアドレス変換テーブルが構築されたRAMを内蔵した制御回路と、を有し、アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う記憶装置を開示する。
【0010】
特許文献3は、トランザクションログ内に保存されたいくつかのエントリーを調べ、それにより書き込みパターンを判定することと、書き込みパターンに基づいてメモリを読み出すことと、トランザクションログを、書き込みパターンに基づいてメモリから読み出されたデータに関連付けられた情報で更新することと、論理アドレス(LA)テーブルを、トランザクションログを用いて更新することと、を含むトランザクションログの復元を開示する。
【0011】
また、データを二重化して記憶する技術も知られている(例えば、特許文献4〜6参照)。
【0012】
特許文献4は、第1のメモリへのデータ書き込みを終了した後に第1の最新書き込み信号を生成し記憶し、第1のメモリに書き込みを行ったデータと同一のデータを第2のメモリに書き込みを行い、第2の最新書き込み信号を生成し記憶し、最新書き込み信号がメモリに正常に記憶されたか否かを示すチェックコードを生成し記憶し、メモリに記憶されているチェックコードが正常であると判断したとき、メモリに記憶されている最新書き込み信号に応じて第1のメモリまたは第2のメモリからデータの読み出しを行う不揮発性メモリを開示する。
【0013】
特許文献5は、仮想アドレスから物理アドレスにアドレス変換する際に、ページテーブルウォーク処理により、プライマリ、シャドウの二つの物理アドレスを生成し物理メモリに書き込むデータを二重化して、障害発生時に、有効なデータが残っている方を使用することで障害からの回復を図ることを可能とするメモリ制御装置を開示する。
【0014】
特許文献6は、ミラー書き込みの指令が入力されると、異なる記憶媒体に同一のデータを書き込み、ミラー書き込みの管理情報(データID、ミラー書き込みフラグ、論理アドレス等)を生成し、データを読み出す際に1個の記録媒体が故障している場合は、他の記録媒体から正しいデータを読み出し、この時、故障した記録媒体のデータの代わりに、他の記録媒体から読み出した正しいデータを正常な領域に書き込み直す記憶装置を開示する。
【0015】
また、複数のフラッシュEEPROMに書込み動作を同時実行させる技術も知られている(例えば、特許文献7参照)。
【0016】
特許文献7は、NANDバスインタフェースが、フラッシュEEPROMそれぞれからの16本のレディー/ビジー信号を独立して受信し、フラッシュEEPROM毎に動作状態を管理する半導体ディスク装置を開示する。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】特開2013−196155号公報
【特許文献2】特開2007−18499号公報
【特許文献3】WO2012/074554号公報
【特許文献4】特開平7−248978号公報
【特許文献5】特開平10−312338号公報
【特許文献6】特開2004−139503号公報
【特許文献7】特開平7−302176号公報
【非特許文献】
【0018】
【非特許文献1】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]、[平成26年4月22日検索]、インターネット<URL:http://researcher.watson.ibm.com/researcher/files/us-moinqureshi/papers-sgap.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0019】
ところで、上記のアドレス変換テーブルも、不揮発性メモリ(アドレス変換されない領域)に保持される。従って、この領域にエラーが発生すると、エラーが発生したアドレスに対応するデータが読み出せなくなる。また、データを書き換える際には、誤ったアドレス変換テーブルが示すデータを壊してしまうことになり、最悪の場合、メモリシステム全体のデータを壊してしまう可能性がある。
【0020】
しかしながら、非特許文献1及び特許文献1〜7の技術は何れも、このような問題を解決するための手段を備えていない。
【0021】
本発明の目的は、不揮発性メモリにウェアレベリングのためのアドレス変換テーブルを書き込むシステムにおいて、不揮発性メモリの信頼性を向上することにある。
【課題を解決するための手段】
【0022】
かかる目的のもと、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む装置であって、不揮発性メモリの第1のブロックのウェアレベリングのための第1のアドレス変換テーブルと、不揮発性メモリの第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルと、不揮発性メモリの第1のブロック以外の第3のブロックのウェアレベリングのための第3のアドレス変換テーブルとを保持する保持部と、第1のアドレス変換テーブルの一の複製に加えて第2のアドレス変換テーブルの複製を第1のブロックに書き込み、第3のアドレス変換テーブルの複製に加えて第1のアドレス変換テーブルの他の複製を第3のブロックに書き込む書き込み部とを含む、装置を提供する。
【0023】
この装置において、書き込み部は、第1のブロックのウェアレベリングのために第1のブロック内のデータの配置の変更を行った後に、変更に応じて更新された第1のアドレス変換テーブルの他の複製を第3のブロックに書き込み、その後、変更に応じて更新された第1のアドレス変換テーブルの一の複製を第1のブロックに書き込む、ものであってよい。その場合、書き込み部は、第1のブロック内のデータの配置の変更に続けてバンクインターリーブにより、変更に応じて更新された第1のアドレス変換テーブルの他の複製を第3のブロックに書き込む、ものであってよい。
【0024】
また、書き込み部は、第1のアドレス変換テーブルの一の複製と第2のアドレス変換テーブルの複製とを第1のブロックの所定の領域に単一の書き込み動作で書き込み、第3のアドレス変換テーブルの複製と第1のアドレス変換テーブルの他の複製とを第3のブロックの所定の領域に単一の書き込み動作で書き込む、ものであってよい。
【0025】
更に、保持部は、自装置が起動した際に、一の複製と他の複製とが一致すれば、第1のアドレス変換テーブルを保持し、一の複製と他の複製とが一致しなければ、一の複製及び他の複製のうちのエラーが発生していない方を第1のアドレス変換テーブルとして保持する、ものであってよい。或いは、自装置が起動した際に、一の複製と他の複製とが一致すれば、第1のアドレス変換テーブルを保持し、一の複製と他の複製とが一致しなければ、第1のブロックへの書き込みを禁止する旨の情報を保持する、ものであってもよい。
【0026】
また、本発明は、複数のブロックからなる不揮発性メモリであって、複数のブロックのうちの第1のブロックは、第1のブロックのウェアレベリングのための第1のアドレス変換テーブルの一の複製と、複数のブロックのうちの第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルの複製とを、所定の領域に格納し、複数のブロックのうちの第1のブロック以外の第3のブロックは、第3のブロックのウェアレベリングのための第3のアドレス変換テーブルの複製と、第1のアドレス変換テーブルの他の複製とを、所定の領域に格納する、不揮発性メモリも提供する。
【0027】
この不揮発性メモリにおいて、第2のブロックと第3のブロックとは、同じブロックであってよく、第2のアドレス変換テーブルと第3のアドレス変換テーブルとは、同じアドレス変換テーブルであってよい。
【0028】
更に、本発明は、不揮発性メモリと不揮発性メモリを制御する制御装置とを含むシステムであって、不揮発性メモリは、第1のブロックと、第1のブロック以外の第2のブロックと、第1のブロック以外の第3のブロックとを含み、制御装置は、第1のブロックのウェアレベリングのための第1のアドレス変換テーブルと、第2のブロックのウェアレベリングのための第2のアドレス変換テーブルと、第3のブロックのウェアレベリングのための第3のアドレス変換テーブルとを保持する保持部と、第1のアドレス変換テーブルの一の複製に加えて第2のアドレス変換テーブルの複製を第1のブロックに書き込み、第3のアドレス変換テーブルの複製に加えて第1のアドレス変換テーブルの他の複製を第3のブロックに書き込む書き込み部とを含む、システムも提供する。
【0029】
更にまた、本発明は、不揮発性メモリのウェアレベリングのためのアドレス変換テーブルを不揮発性メモリに書き込む方法であって、不揮発性メモリの第1のブロックのウェアレベリングのための第1のアドレス変換テーブルの一の複製を、第1のブロックに書き込むステップと、不揮発性メモリの第1のブロック以外の第2のブロックのウェアレベリングのための第2のアドレス変換テーブルの複製を、第1のブロックに書き込むステップと、不揮発性メモリの第1のブロック以外の第3のブロックのウェアレベリングのための第3のアドレス変換テーブルの複製を、第3のブロックに書き込むステップと、第1のアドレス変換テーブルの他の複製を、第3のブロックに書き込むステップとを含む、方法も提供する。
【発明の効果】
【0030】
本発明によれば、不揮発性メモリにウェアレベリングのためのアドレス変換テーブルを書き込むシステムにおいて、不揮発性メモリの信頼性を向上することができる。
【図面の簡単な説明】
【0031】
図1】本発明の実施の形態で用いるスタートギャップ方式の概略を示した図である。
図2】本発明の実施の形態におけるアドレス変換テーブルのフォーマットの例を示した図である。
図3】本発明の実施の形態におけるバンクインターリーブによる連続書き込みの様子を示した図である。
図4】本発明の実施の形態におけるメモリシステムの全体構成例を示した図である。
図5】本発明の実施の形態におけるメモリコントローラの起動時の動作例を示したフローチャートである。
図6】本発明の実施の形態におけるメモリコントローラの通常時の動作例を示したフローチャートである。
【発明を実施するための形態】
【0032】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
【0033】
[本実施の形態の概要]
本実施の形態は、書き込み粒度が例えば数十セルと小さく、フラッシュメモリのような消去動作が不要な相変化メモリにおいて、アドレス変換テーブルを複数保持するものである。これにより、システムのオーバーヘッドを増大させることなく、ウェアレベリングを行うメモリシステムの信頼性を向上する。
【0034】
ここでは、ウェアレベリングの方式として、アドレス変換テーブルが小さくて済み、相変化メモリに適したスタートギャップ方式を用いる。これは、書き換え回数は小さな領域ごとに管理するが、アドレス変換テーブルはブロックごとに設ける方式である。この方式を用いれば、制御回路のオーバーヘッドは小さくて済む。
【0035】
図1は、スタートギャップ方式の概略を示した図である。図では、1つのブロックに1個の空き領域を含む17個のデータ格納領域が設けられている。図中、斜線ハッチングの領域が空き領域に相当し、領域A〜領域Pが空き領域以外のデータ格納領域に相当する。
【0036】
スタートギャップ方式では、1つのブロックは、データ格納領域の配置に関する複数の状態をとる。図では、複数の状態として、S(1),S(2),…,S(289)を示している。
【0037】
最初、ブロックの状態はS(1)であったとする。この状態で、書き換え回数が1回目の閾値に達すると、空き領域と領域Pとが入れ替わり、ブロックの状態はS(2)となる。即ち、それまで領域Pだった領域が空き領域となる。また、書き換え回数が2回目の閾値に達すると、空き領域と領域Oとが入れ替わる。このように、閾値に達する度に空き領域と隣接するデータ格納領域とが順次入れ替わり、書き換え回数が16回目の閾値に達すると、ブロックの状態はS(17)となる。即ち、空き領域はブロックの先頭まで移動する。
【0038】
次に、書き換え回数が17回目の閾値に達すると、ブロックの状態はS(18)となる。即ち、空き領域の位置はS(1)と同じであるが、全てのデータ格納領域の位置がS(1)に比べて1つずつずれた状態になる。その後、書き換え回数が33回目の閾値に達すると、ブロックの状態はS(34)となり、空き領域は再びブロックの先頭まで移動する。
【0039】
以下、17回閾値に達することにより空き領域をブロックの先頭まで移動させる動作を15回繰り返したとする。即ち、S(1)から数えて、288(=17×17−1)回目の閾値に達したとする。すると、ブロックの状態はS(289)となる。その後、289(=17×17)回目の閾値に達すると、ブロックの状態はS(1)に戻る。
【0040】
ところで、本実施の形態では、番地17の領域を確保し、これをアドレス変換テーブル格納領域とする。図中、アドレス変換テーブル格納領域は、黒塗りで示している。また、図から分かる通り、アドレス変換テーブル格納領域と空き領域との入れ替えは行われない。
【0041】
ここで、アドレス変換テーブルは、図1に示した複数の状態を識別する識別情報を保持するものとする。このような識別情報を保持することにより、あるデータ格納領域への書き込みが指示された場合に、その識別情報により識別される状態におけるそのデータ格納領域の位置に書き込みを行うことが可能となる。このような識別情報としては、例えば、領域Aのアドレスと空き領域のアドレスとの組み合わせを保持してもよいが、本実施の形態では、図1に示した複数の状態に付された連番(1,2,…,289)を保持するものとする。
【0042】
また、本実施の形態では、相変化メモリはDRAMと同様に複数のバンクに分かれているものとする。図1では、1つのブロックについてのみ説明したが、実際には、複数のバンク上に複数のブロックが存在するものとする。
【0043】
そして、本実施の形態では、自ブロックにおけるアドレス変換のためのアドレス変換テーブル(自ブロック用アドレス変換テーブル)を格納する際に、そのオリジナルを自ブロック内に格納し、そのコピーを他ブロック内に格納する。これは、自ブロック内には、自ブロック用アドレス変換テーブルのオリジナルと、他ブロックにおけるアドレス変換のためのアドレス変換テーブル(他ブロック用アドレス変換テーブル)のコピーとが格納される、ということを意味する。その際、自ブロック用アドレス変換テーブルのオリジナルと他ブロック用アドレス変換テーブルのコピーとは、マージされた状態で、自ブロックのアドレス変換テーブル格納領域に格納される。このような構成により、1回の書き込み動作で2つのアドレス変換テーブルを同時に更新することが可能となる。
【0044】
ここで、アドレス変換テーブルの構成について説明する。
【0045】
1つのブロックが図1に示したような構成を有する場合、ブロックのデータ格納領域の配置に関する状態は289(=17×17)通りとなる。従って、1つのアドレス変換テーブルは、9ビットの情報により生成できる。また、2つのブロックに対するアドレス変換テーブルは、18ビットの情報により生成される。
【0046】
更に、別の具体的な例として、16Gビットのメモリ8個で構成した16GバイトのDIMM(Dual Inline Memory Module)を考える。
【0047】
まず、このDIMMは8バンクからなるものとする。そして、ブロックサイズはバンクサイズに等しいものとする。すると、ブロックサイズは2G(=16G/8)バイトとなる。
【0048】
また、相変化メモリの書き込み粒度(バーストサイズ)は、システムメモリとして使用することを前提とした最小粒度であっても、SDRAM(Synchronous DRAM)と同様に、CPUのキャッシュラインと同等のサイズである。例えば、x86 CPU用のメモリでは、32〜64バイトである。つまり、32バイト以下のサイズであれば、1回の書き込み動作で書き込まれる。そこで、バーストサイズは32バイトとする。そして、データ格納領域のサイズはバーストサイズに等しいとする。すると、各ブロックは226−1(=2G/32−1)個のデータ格納領域を含むので、各ブロックのデータ格納領域の配置に関する状態は約252通りとなる。従って、1つのアドレス変換テーブルは52ビットで生成できる。また、2つのブロックに対するアドレス変換テーブルは104ビットで生成できる。これにより、2つのブロックに対するアドレス変換テーブルは、バーストサイズである32バイト内に収めることができる。
【0049】
図2は、このときのアドレス変換テーブルのフォーマットの例を示した図である。図示するように、このアドレス変換テーブルは、52ビットの自ブロック用アドレス変換テーブルと、52ビットの他ブロック用アドレス変換テーブルとを含んでいる。
【0050】
また、一般的に、相変化メモリの複数のバンクは同時に動作させることができる。従って、自ブロックが存在するバンク以外のバンクにある他ブロックにアドレス変換テーブルのコピーを格納することにより、バンクインターリーブによる連続書き込みが可能となる。具体的には、図1に示した空き領域と隣り合うデータ格納領域との入れ替え動作に続けてバンクインターリーブで、この入れ替え動作後の状態を示すアドレス変換テーブルのコピーを他ブロックに書き込むことが可能になる。
【0051】
図3は、このようなバンクインターリーブによる連続書き込みの様子を示した図である。図では、上段が自バンクにおける処理のタイムシーケンスを示し、下段が別バンクにおける処理のタイムシーケンスを示す。本実施の形態では、図示するように、まず、自バンクにおいて、空き領域と隣接するデータ格納領域とを入れ替えるコマンドを処理し、そのコマンドに基づく書き込み処理を開始する。また、この書き込み処理の開始時に、別バンクにおいて、アドレス変換テーブルのコピーを書き込むコマンドを処理する。そして、そのコマンドに基づく書き込み処理を、自バンクにおける書き込み処理と並行して行う。
【0052】
[本実施の形態のメモリシステムの構成]
図4は、本実施の形態におけるメモリシステムの全体構成例を示した図である。図示するように、このメモリシステムは、メモリ10と、メモリコントローラ20とを含む。
【0053】
メモリ10は、ブロック11a,11b,11cを含む。そして、ブロック11aは、データ格納領域12aとアドレス変換テーブル格納領域13aとを含み、ブロック11bは、データ格納領域12bとアドレス変換テーブル格納領域13bとを含み、ブロック11cは、データ格納領域12cとアドレス変換テーブル格納領域13cとを含む。
【0054】
ブロック11a,11b,11cは、図1に示したブロックに相当する。尚、ブロック11a,11b,11cは、これらを区別しない場合は、単にブロック11と称するものとする。ブロック11の数は幾つでもよいが、ここでは、3つのブロック11を設けた例を示している。本実施の形態では、第1のブロックの一例として、ブロック11aを設けており、第2のブロックの一例として、ブロック11bを設けており、第3のブロックの一例として、ブロック11cを設けている。
【0055】
データ格納領域12a,12b,12cは、図1に示したデータ格納領域に相当する。但し、ここでは、図1に示した1個の空き領域を含む17個のデータ格納領域の全体をデータ格納領域12a,12b,12cとしている。尚、データ格納領域12a,12b,12cも、これらを区別しない場合は、単にデータ格納領域12と称するものとする。
【0056】
アドレス変換テーブル格納領域13a,13b,13cは、図1に示したアドレス変換テーブル格納領域に相当する。この例では、ブロック11aに対するアドレス変換テーブルのオリジナルであるオリジナルaが、ブロック11bに対するアドレス変換テーブルのコピーであるコピーbと共に、アドレス変換テーブル格納領域13aに格納されている。また、ブロック11aに対するアドレス変換テーブルのコピーであるコピーaが、ブロック11cに対するアドレス変換テーブルのオリジナルであるオリジナルcと共に、アドレス変換テーブル格納領域13cに格納されている。尚、アドレス変換テーブル格納領域13a,13b,13cも、これらを区別しない場合は、単にアドレス変換テーブル格納領域13と称するものとする。本実施の形態では、所定の領域の一例として、アドレス変換テーブル格納領域13a,13b,13cを設けている。また、第1のアドレス変換テーブルの一の複製の一例として、オリジナルaを用いており、第1のアドレス変換テーブルの他の複製の一例として、コピーaを用いており、第2のアドレス変換テーブルの複製の一例として、コピーbを用いており、第3のアドレス変換テーブルの複製の一例として、オリジナルcを用いている。
【0057】
尚、この例では、メモリ10がブロック11a,11b,11cを含むものとし、ブロック11aにオリジナルa及びコピーbを、ブロック11bにオリジナルb及びコピーcを、ブロック11cにオリジナルc及びコピーaを、それぞれ格納することとしたが、これには限らない。例えば、メモリ10が4つ以上のブロック11を含むものとすると、各ブロックに格納するオリジナル及びコピーの組み合わせは種々考えられる。また、極端な例として、メモリ10がブロック11a,11bを含む例では、ブロック11にオリジナルa及びコピーbを、ブロック11bにオリジナルb及びコピーaを、それぞれ格納することとしてもよい。
【0058】
また、メモリコントローラ20は、読み出し回路21と、比較検査回路22と、アドレス変換テーブル保持回路23と、書き込み回路24と、計数比較回路25と、アドレス変換テーブル更新回路26とを含む。
【0059】
読み出し回路21は、メモリ10のブロック11からアドレス変換テーブルのオリジナル及びコピーを読み出す。
【0060】
比較検査回路22は、読み出し回路21が読み出したアドレス変換テーブルのオリジナル及びコピーを受け取り、オリジナルとコピーとの比較、及び、オリジナル又はコピーにエラーが発生していないかの検査を行う。
【0061】
アドレス変換テーブル保持回路23は、比較検査回路22が受け取ったアドレス変換テーブルのオリジナル及びコピーの何れかを、比較検査回路22による比較及び検査の結果に応じて保持する。具体的には、比較検査回路22による比較及び検査の結果、オリジナルとコピーとが一致し、かつ、オリジナルとコピーの何れにもエラーが発生していないことが分かった場合、及び、オリジナルとコピーとが一致しないが、コピーにエラーが発生していないと分かった場合は、アドレス変換テーブルのコピーを保持する。また、オリジナルとコピーとが一致せず、コピーにエラーが発生しているが、オリジナルにエラーが発生していないと分かった場合は、アドレス変換テーブルのオリジナルを保持する。更に、オリジナルとコピーとが一致せず、オリジナルとコピーの両方にエラーが発生していると分かった場合は、着目しているブロックへの書き込みを行うべきでない旨を保持する。本実施の形態では、アドレス変換テーブルを保持する保持部の一例として、アドレス変換テーブル保持回路23を設けている。
【0062】
書き込み回路24は、メモリ10のブロック11内のデータ格納領域12にデータを書き込む。また、計数比較回路25によりデータ格納領域12の書き換え回数が閾値に達したと判定されると、以下のような書き込み動作を行う。即ち、まず、アドレス変換テーブル保持回路23に保持され、まだ書き出されていなかったアドレス変換テーブルを、そのブロック11にオリジナルとして書き出す。また、そのブロック11内の空き領域と隣接するデータ格納領域とが入れ替わるように書き込みを行う。更に、アドレス変換テーブル更新回路26により更新されたアドレス変換テーブルを、そのブロック11以外のブロックにコピーとして書き出す。本実施の形態では、アドレス変換テーブルを書き込む書き込み部の一例として、書き込み回路24を設けている。
【0063】
計数比較回路25は、書き込み回路24がメモリ10のブロック11内のデータ格納領域12にデータを書き込んだ際に、データ格納領域12の書き換え回数を計数し、その結果と閾値とを比較することにより、書き換え回数が閾値に達したかどうかを判定する。
【0064】
アドレス変換テーブル更新回路26は、データ格納領域12の書き換え回数が閾値に達した旨が計数比較回路25から通知された書き込み回路24の指示により、アドレス変換テーブル保持回路23に保持されているアドレス変換テーブルを更新する。具体的には、アドレス変換テーブルが、ブロック11内の空き領域と隣接するデータ格納領域とが入れ替わった後の状態を示すようにする。
【0065】
[本実施の形態のメモリコントローラの動作]
図5は、メモリシステムを起動したときのメモリコントローラ20の動作例を示したフローチャートである。
【0066】
図示するように、メモリコントローラ20では、まず、読み出し回路21が、1つのブロック11に着目し、そのブロック11に対するアドレス変換テーブルのオリジナル及びコピーをメモリ10から読み出す(ステップ201)。例えば、着目するブロック11がブロック11aだとすると、ブロック11aに対するアドレス変換テーブルのオリジナルであるオリジナルaをアドレス変換テーブル格納領域13aから読み出し、ブロック11aに対するアドレス変換テーブルのコピーであるコピーaをアドレス変換テーブル格納領域13cから読み出す。
【0067】
次に、比較検査回路22が、ステップ201で読み出したオリジナルとコピーとを比較すると共に、ECC又はパリティチェック機能によりエラーの有無を確認する。そして、ステップ201で読み出したオリジナルとコピーとが一致し、かつ、エラーがないかどうかを判定する(ステップ202)。
【0068】
その結果、ステップ201で読み出したオリジナルとコピーとが一致し、かつ、エラーがないと比較検査回路22により判定されれば、アドレス変換テーブル保持回路23が、コピー(オリジナルと同じ)をアドレス変換テーブルとして保持する(ステップ203)。
【0069】
一方、ステップ201で読み出したオリジナルとコピーとが一致しない、又は、エラーがあると比較検査回路22により判定されれば、比較検査回路22は、ステップ201で読み出したコピーにエラーがあるかどうかを判定する(ステップ204)。そして、ステップ201で読み出したコピーにエラーがないと比較検査回路22により判定されれば、アドレス変換テーブル保持回路23は、コピーをアドレス変換テーブルとして保持する(ステップ203)。
【0070】
また、ステップ201で読み出したコピーにエラーがあると比較検査回路22により判定されれば、比較検査回路22は、ステップ201で読み出したオリジナルにエラーがあるかどうかを判定する(ステップ205)。ステップ201で読み出したオリジナルにエラーがないと比較検査回路22により判定されれば、アドレス変換テーブル保持回路23は、オリジナルをアドレス変換テーブルとして保持する(ステップ206)。
【0071】
更に、ステップ201で読み出したオリジナルにもエラーがあると比較検査回路22により判定されれば、アドレス変換テーブル保持回路23は、ブロック11内のデータを壊さないように、着目するブロック11への書き込みを禁止する旨を保持する(ステップ207)。尚、この場合、エラーリカバリはソフトウェアの処理に委ねるものとする。
【0072】
その後、読み出し回路21は、全てのブロック11に対するアドレス変換テーブルを読み出したかどうかを判定する(ステップ208)。全てのブロック11に対するアドレス変換テーブルを読み出していないと判定すれば、読み出し回路21は、アドレス変換テーブルを読み出していないブロック11に着目し、ステップ201〜207の処理を繰り返す。また、全てのブロック11に対するアドレス変換テーブルを読み出したと判定されれば、処理は通常動作へと移行する。
【0073】
尚、この動作例では、ECC又はパリティチェック機能があることを前提としたが、ECC又はパリティチェック機能がないことも考えられる。その場合は、ステップ202でオリジナルとコピーとが一致すると判定されれば、コピー(オリジナルと同じ)をアドレス変換テーブルとして保持し、ステップ202でオリジナルとコピーとが一致しないと判定されれば、ステップ204及びステップ205をスキップしてステップ207へ進み、着目するブロック11への書き込みを禁止する旨を保持するようにすればよい。
【0074】
図6は、メモリシステムを起動後、通常動作を行っているときのメモリコントローラ20の動作例を示したフローチャートである。
【0075】
図示するように、メモリコントローラ20では、まず、書き込み回路24が、何れかのブロック11内のデータ格納領域12に対する書き込みがあったかどうかを判定する(ステップ251)。データ格納領域12に対する書き込みがあったと書き込み回路24により判定されれば、計数比較回路25が、そのブロック11内のデータ格納領域12に対する書き換え回数をカウントアップし(ステップ252)、書き換え回数が閾値に達したかどうかを判定する(ステップ253)。
【0076】
書き換え回数が閾値に達したと計数比較回路25により判定されれば、書き込み回路24は、アドレス変換テーブル保持回路23に保持されているアドレス変換テーブルが既にオリジナルとして書き出されているかどうかを判定する(ステップ254)。ここで、アドレス変換テーブルが既にオリジナルとして書き出されていることは、アドレス変換テーブルがオリジナルとして書き出された時点で、例えばアドレス変換テーブル保持回路23が記憶しておけばよい。その結果、アドレス変換テーブルがまだオリジナルとして書き出されていないと判定すれば、書き込み回路24は、アドレス変換テーブルをオリジナルとしてそのブロック11内のアドレス変換テーブル格納領域13に書き出す(ステップ255)。例えば、図4では、書き込みがあったブロック11がブロック11aだとすると、ブロック11aに対するアドレス変換テーブルのオリジナルであるオリジナルaをアドレス変換テーブル格納領域13aに書き込む。一方、アドレス変換テーブルが既にオリジナルとして書き出されていると判定すれば、書き込み回路24は、アドレス変換テーブルをオリジナルとして書き出さない。
【0077】
次に、アドレス変換テーブル更新回路26は、アドレス変換テーブル保持回路23に保持されているアドレス変換テーブルを更新する(ステップ256)。具体的には、書き換え回数が閾値に達することにより、図1に示した状態の変遷が生じるので、状態を示す識別情報を1つ進める。
【0078】
次いで、書き込み回路24は、そのブロック11内の空き領域と隣接するデータ格納領域12とを入れ替える(ステップ257)。また、これに続けてバンクインターリーブにより、アドレス変換テーブルのコピーを、他のブロック11のアドレス変換テーブル格納領域13に書き込む(ステップ258)。例えば、図4では、書き込みがあったブロック11がブロック11aだとすると、ブロック11aに対するアドレス変換テーブルのコピーであるコピーaをアドレス変換テーブル格納領域13cに書き込む。
【0079】
その後、書き込み回路24は、システムが終了する旨の通知を受けたかどうかを判定する(ステップ259)。システムが終了する旨の通知を受けていないと判定されれば、処理はステップ251に戻る。また、システムが終了する旨の通知を受けたと判定すれば、書き込み回路24は、アドレス変換テーブル保持回路23に保持されているアドレス変換テーブルが既にオリジナルとして書き出されているかどうかを判定する(ステップ260)。その結果、アドレス変換テーブルがまだオリジナルとして書き出されていないと判定すれば、書き込み回路24は、アドレス変換テーブルをオリジナルとしてそのブロック11内のアドレス変換テーブル格納領域13に書き出す(ステップ261)。一方、アドレス変換テーブルが既にオリジナルとして書き出されていると判定すれば、そのまま処理を終了する。
【0080】
尚、この動作例では、例えばブロック11aの書き換え回数が閾値に達した際にブロック11aに対するアドレス変換テーブルのコピーがステップ258で例えばブロック11cに書き出された後、ブロック11aの書き換え回数が再度閾値に達した際にブロック11aに対応するアドレス変換テーブルのオリジナルがステップ255でブロック11aに書き出されるようにした。しかしながら、ブロック11aに対するアドレス変換テーブルのオリジナルは、ブロック11aの書き換え回数が再度閾値に達するまでに意図的にブロック11aに書き出すようにしてもよい。
【0081】
或いは、ブロック11aに対応するアドレス変換テーブルのオリジナルは、ブロック11aの書き換え回数が再度閾値に達するまでに意図的に書き出さずに、ブロック11cの書き換え回数が閾値に達することによりブロック11cに対するアドレス変換テーブルのコピーがブロック11aに書き出される際に一緒に書き出されるのを待ってもよい。この場合は、図6に、ブロック11cに対するアドレス変換テーブルのコピーのブロック11aへの書き込みを検知するステップと、そのような書き込みが検知されるとブロック11aに対するアドレス変換テーブルのオリジナルもブロック11aに書き込むステップとを追加すればよい。
【0082】
以上述べたように、本実施の形態では、アドレス変換テーブルのオリジナル及びコピーを別々のブロック11にて保持するようにした。これにより、何らかの原因で一方のアドレス変換テーブルを読み込めなかったとしても、他方のアドレス変換テーブルを読み込むことにより、復帰することが可能となった。
【0083】
また、本実施の形態では、空き領域と隣接するデータ格納領域との入れ替え、アドレス変換テーブルのコピーの書き出し、アドレス変換テーブルのオリジナルの書き出しの順に処理を行うようにした。これにより、この処理が電源断等のトラブルで中断されても修復することが可能となった。特に、本実施の形態では、アドレス変換テーブルのオリジナルよりもコピーの方を先に書き出すようにした。従って、アドレス変換テーブルのオリジナルを書き出す前に電源断等に起因するトラブルが発生しても、データ消失はコピー中の領域に限られ、データ消失が全体に及ぶのを回避できるようになった。
【0084】
更に、本実施の形態では、自ブロックに対するアドレス変換テーブルのオリジナルと他ブロックに対するアドレス変換テーブルのコピーとをマージして単一の書き込み動作で1つのブロックに書き込むようにした。これにより、他のブロックに対するアドレス変換テーブルのコピーを自ブロックに保持することによるパフォーマンス及びチップサイズのペナルティの発生を抑制することが可能となった。具体的には、自ブロックに対応するアドレス変換テーブルのオリジナルを意図的に自ブロックに書き出す必要性を低くすると共に、アドレス変換テーブル格納領域の増加を抑え、オーバーヘッドを小さくできるようになった。
【0085】
更にまた、アドレス変換テーブルのコピーを他ブロックに配置することにより、バンクインターリーブによる連続書き込みで更新することが可能となった。そのため、アドレス変換テーブルの更新に伴うオーバーヘッドを小さくできるようになった。
【0086】
尚、本実施の形態では、アドレス変換テーブルのオリジナル及びコピーを1つのアドレス変換テーブル格納領域13に格納するようにしたが、これには限らない。ブロック11に2つのアドレス変換テーブル格納領域13を設け、アドレス変換テーブルのオリジナル及びコピーを2つのアドレス変換テーブル格納領域13のそれぞれに格納するようにしてもよい。つまり、本実施の形態は、アドレス変換テーブルのオリジナル及びコピーを1つのブロック11に格納するものと捉えてもよい。
【0087】
また、本実施の形態では、アドレス変換テーブルの2つの複製のうち、そのアドレス変換テーブルに対応するブロック11に格納する方をオリジナルとし、そのアドレス変換テーブルに対応するブロック11以外のブロック11に格納する方をコピーとしたが、これには限らない。オリジナル及びコピーという意味付けを行わずに、アドレス変換テーブルの2つの複製のうち、一方をそのアドレス変換テーブルに対応するブロック11に格納し、他方をそのアドレス変換テーブルに対応するブロック11以外のブロック11に格納するものと捉えてもよい。
【0088】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【0089】
10…メモリ、11a,11b,11c…ブロック、12a,12b,12c…データ格納領域、13a,13b,13c…アドレス変換テーブル格納領域、20…メモリコントローラ、21…読み出し回路、22…比較検査回路、23…アドレス変換テーブル保持回路、24…書き込み回路、25…計数比較回路、26…アドレス変換テーブル更新回路
図1
図2
図3
図4
図5
図6