(57)【要約】【課題】記憶装置においてデータの性質に応じた書込み方式によりデータを記憶する。【解決手段】領域定義部は、システムを動作させるためのシステム情報を記憶するシステム領域と、第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する。移動処理部は、キャッシュ領域に記憶されるデータを所定のタイミングで第１のメモリに移動する。アクセス制御部は、システム領域またはキャッシュ領域に該当するアクセスについては領域定義部の定義に応じて第２のメモリにアクセスし、システム領域およびキャッシュ領域以外に該当するリードアクセスについては第１のメモリからデータを読み出す。【選択図】図６
2015106324.tif 000002
【特許請求の範囲】
【請求項１】
システムを動作させるためのシステム情報を記憶するシステム領域と第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と
を具備する記憶制御装置。
【請求項２】
前記アクセス制御部は、前記システム領域および前記キャッシュ領域のそれぞれに対して個別に定められたデータアクセスサイズによりアクセスする請求項１記載の記憶制御装置。
【請求項３】
前記システム領域のデータアクセスサイズは、前記キャッシュ領域のデータアクセスサイズよりも大きい請求項２記載の記憶制御装置。
【請求項４】
前記システム領域および前記キャッシュ領域のそれぞれに対して個別に定められたサイズのデータを単位としてエラー訂正コードを付与してエラー検出訂正処理を行うエラー検出訂正処理部をさらに具備する請求項１記載の記憶制御装置。
【請求項５】
前記システム領域のエラー訂正コードの付与単位のデータサイズは、前記キャッシュ領域のエラー訂正コードの付与単位のデータサイズよりも大きい請求項４記載の記憶制御装置。
【請求項６】
前記アクセス制御部は、前記システム領域に書き込む際のパルス幅を前記キャッシュ領域よりも長くする請求項１記載の記憶制御装置。
【請求項７】
前記アクセス制御部は、前記システム領域に書き込む際の電圧を前記キャッシュ領域よりも高くする請求項１記載の記憶制御装置。
【請求項８】
前記アクセス制御部は、前記システム領域に書き込む際のベリファイ閾値を前記キャッシュ領域よりも厳しくする請求項１記載の記憶制御装置。
【請求項９】
前記アクセス制御部は、前記キャッシュ領域に書き込む際のベリファイ回数を前記システム領域よりも少なくする請求項１記載の記憶制御装置。
【請求項１０】
第１のメモリと、
第２のメモリと、
システムを動作させるためのシステム情報を記憶するシステム領域と前記第１のメモリのデータを一時的に記憶するキャッシュ領域とを前記第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と
を具備する記憶装置。
【請求項１１】
前記第１および第２のメモリは不揮発性メモリであり、
前記第２のメモリは前記第１のメモリよりも読出し処理時間が短い
請求項１０記載の記憶装置。
【請求項１２】
第１のメモリと、
第２のメモリと、
システムを動作させるためのシステム情報を記憶するシステム領域と前記第１のメモリのデータを一時的に記憶するキャッシュ領域とを前記第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と、
前記アクセス制御部に対して前記第１または第２のメモリへのアクセス要求を発行するホストコンピュータと
を具備する情報処理システム。
【請求項１３】
システムを動作させるためのシステム情報を記憶するシステム領域と第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する領域定義手順と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理手順と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、複数の不揮発メモリからなるメモリシステムにおいて、ある不揮発メモリの一部を異なる不揮発メモリのキャッシュとして用いるメモリの記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）は、従来のハードディスクを用いたディスクドライブに替えて、半導体メモリを用いた記憶装置として利用されるようになっている。ＳＳＤでは、ＮＡＮＤ型フラッシュメモリが用いられることが多いが、このＮＡＮＤ型フラッシュメモリはデータを消去する際に複数のページからなるブロック単位で消去を行うため、ページ単位の書替えに時間を要するという問題がある。そこで、フラッシュメモリに加えて抵抗変化ランダムアクセスメモリ（Resistance Random Access Memory）を設けたデータ記憶装置が提案されている（例えば、特許文献１参照。）。このデータ記憶装置では、書込みデータを抵抗変化ランダムアクセスメモリに一旦書き込んで、１ページ分のデータとエラー訂正符号が記憶される度に、フラッシュメモリに符号化されたデータを記憶するように制御している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０３８２４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、書込みデータを抵抗変化ランダムアクセスメモリに一旦書き込むため、フラッシュメモリを制御する処理を待たずに順次書込みデータを入力することができる。しかしながら、この従来技術では常にフラッシュメモリからデータを読み出すことになるため、読出し時間を高速化することはできない。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、記憶装置においてデータの性質に応じた書込み方式によりデータを記憶することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、システムを動作させるためのシステム情報を記憶するシステム領域と第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する領域定義部と、上記キャッシュ領域に記憶されるデータを所定のタイミングで上記第１のメモリに移動する移動処理部と、上記システム領域または上記キャッシュ領域に該当するアクセスについては上記定義に応じて上記第２のメモリにアクセスし、上記システム領域および上記キャッシュ領域以外に該当するリードアクセスについては上記第１のメモリからデータを読み出すアクセス制御部とを具備する記憶制御装置およびその記憶制御方法である。これにより、システム領域およびキャッシュ領域を設けた第２のメモリにおいて、データの性質に応じたアクセスを行うという作用をもたらす。
【０００７】
また、この第１の側面において、上記アクセス制御部は、上記システム領域および上記キャッシュ領域のそれぞれに対して個別に定められたデータアクセスサイズによりアクセスするようにしてもよい。これにより、データの性質に応じたデータアクセスサイズによりアクセスを行うという作用をもたらす。
【０００８】
また、この第１の側面において、上記システム領域のデータアクセスサイズは、上記キャッシュ領域のデータアクセスサイズよりも大きくしてもよい。システム領域では大きいサイズのデータの連続読出しが多いことを考慮したものである。
【０００９】
また、この第１の側面において、上記システム領域および上記キャッシュ領域のそれぞれに対して個別に定められたサイズのデータを単位としてエラー訂正コードを付与してエラー検出訂正処理を行うエラー検出訂正処理部をさらに具備してもよい。これにより、システム領域および上記キャッシュ領域のそれぞれに適した単位でエラー訂正コードを付与するという作用をもたらす。また、この場合において、上記システム領域のエラー訂正コードの付与単位のデータサイズは、上記キャッシュ領域のエラー訂正コードの付与単位のデータサイズよりも大きくしてもよい。システム領域では高い信頼性が要求されることを考慮したものである。
【００１０】
また、この第１の側面において、上記アクセス制御部は、上記システム領域に書き込む際のパルス幅を上記キャッシュ領域よりも長くし、または、上記システム領域に書き込む際の電圧を上記キャッシュ領域よりも高くしてもよい。また、上記アクセス制御部は、上記システム領域に書き込む際のベリファイ閾値を上記キャッシュ領域よりも厳しくしてもよい。システム領域では、高い信頼性が要求されることを考慮したものである。
【００１１】
また、この第１の側面において、上記アクセス制御部は、上記キャッシュ領域に書き込む際のベリファイ回数を上記システム領域よりも少なくしてもよい。キャッシュ領域ではアクセスが高速に行われることが要求されることを考慮したものである。
【００１２】
また、本技術の第２の側面は、第１のメモリと、第２のメモリと、システムを動作させるためのシステム情報を記憶するシステム領域と上記第１のメモリのデータを一時的に記憶するキャッシュ領域とを上記第２のメモリにおいて定義する領域定義部と、上記キャッシュ領域に記憶されるデータを所定のタイミングで上記第１のメモリに移動する移動処理部と、上記システム領域または上記キャッシュ領域に該当するアクセスについては上記定義に応じて上記第２のメモリにアクセスし、上記システム領域および上記キャッシュ領域以外に該当するリードアクセスについては上記第１のメモリからデータを読み出すアクセス制御部とを具備する記憶装置である。これにより、第２のメモリにシステム領域およびキャッシュ領域を設けて、データの性質に応じたアクセスを行うという作用をもたらす。また、この場合において、上記第１および第２のメモリは不揮発性メモリであり、上記第２のメモリは上記第１のメモリよりも読出し処理時間を短くしてもよい。
【００１３】
また、本技術の第３の側面は、第１のメモリと、第２のメモリと、システムを動作させるためのシステム情報を記憶するシステム領域と上記第１のメモリのデータを一時的に記憶するキャッシュ領域とを上記第２のメモリにおいて定義する領域定義部と、上記キャッシュ領域に記憶されるデータを所定のタイミングで上記第１のメモリに移動する移動処理部と、上記システム領域または上記キャッシュ領域に該当するアクセスについては上記定義に応じて上記第２のメモリにアクセスし、上記システム領域および上記キャッシュ領域以外に該当するリードアクセスについては上記第１のメモリからデータを読み出すアクセス制御部と、上記アクセス制御部に対して上記第１または第２のメモリへのアクセス要求を発行するホストコンピュータとを具備する情報処理システムである。これにより、第２のメモリにシステム領域およびキャッシュ領域を設けて、ホストコンピュータからデータの性質に応じたアクセスを行うという作用をもたらす。
【発明の効果】
【００１４】
本技術によれば、記憶装置においてデータの性質に応じた書込み方式によりデータを記憶することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１５】
【図１】本技術の実施の形態における情報処理システムの構成概要を示す図である。
【図２】本技術の実施の形態における高速不揮発性メモリ４００として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。
【図３】本技術の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図４】本技術の実施の形態における論理アドレス空間の対応例を示す図である。
【図５】本技術の実施の形態における領域管理テーブル２５０の構成例を示す図である。
【図６】本技術の実施の形態におけるアドレス変換テーブル２６０の構成例を示す図である。
【図７】本技術の実施の形態におけるメモリコントローラ２００の機能構成例を示す図である。
【図８】本技術の実施の形態におけるブート領域へのライトタイミング例を示す図である。
【図９】本技術の実施の形態におけるキャッシュ領域へのライトタイミング例を示す図である。
【図１０】本技術の実施の形態におけるブート領域からのリードタイミング例を示す図である。
【図１１】本技術の実施の形態におけるキャッシュ領域からのリードタイミング例を示す図である。
【図１２】本技術の実施の形態におけるメモリコントローラ２００のブート領域設定処理の処理手順例を示す流れ図である。
【図１３】本技術の実施の形態におけるメモリコントローラ２００のライト処理の処理手順例を示す流れ図である。
【図１４】本技術の実施の形態におけるメモリコントローラ２００のリード処理の処理手順例を示す流れ図である。
【図１５】本技術の実施の形態におけるメモリコントローラ２００の移動処理の処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１６】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．実施の形態の構成
２．実施の形態の動作
【００１７】
＜１．実施の形態の構成＞
［情報処理システムの概要］
図１は、本技術の実施の形態における情報処理システムの構成概要を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、低速不揮発性メモリ３００と、高速不揮発性メモリ４００とから構成される。メモリコントローラ２００、低速不揮発性メモリ３００および高速不揮発性メモリ４００は、メモリシステムモジュール５００を構成する。
【００１８】
ホストコンピュータ１００は、メモリシステムモジュール５００に対してデータのリード処理やライト処理等を要求するコマンドを発行するものである。
【００１９】
メモリコントローラ２００は、ホストコンピュータ１００と通信してコマンドを受信し、低速不揮発性メモリ３００または高速不揮発性メモリ４００に対するアクセスを行うものである。低速不揮発性メモリ３００または高速不揮発性メモリ４００の何れにアクセスするかは、後述するように、論理アドレスによって定まる。
【００２０】
メモリコントローラ２００は、高速不揮発性メモリ４００と低速不揮発性メモリ３００のエラー訂正コード（ＥＣＣ：Error Correction Code）の生成処理を行うとともに、ＥＣＣを用いたエラー検出訂正処理を行う。すなわち、データの書込み時にはそれぞれに対応したパリティを付加して書き込む（以下、符号化と称する場合がある。）。また、データの読出し時にはデータおよびパリティに基づいてエラーの検出訂正を行う（以下、復号と称する場合がある。）。
【００２１】
低速不揮発性メモリ３００および高速不揮発性メモリ４００は、ともに不揮発性のメモリ（ＮＶＭ：Non-Volatile Memory）である。高速不揮発性メモリ４００は、低速不揮発性メモリ３００よりも読出し処理時間が短いという性質を有する。読出し処理時間には、メモリ特性としての読出し時間と、メモリインターフェースにおけるコマンドやデータ転送の時間とが含まれる。低速不揮発性メモリ３００（以下、低速ＮＶＭと略す場合がある。）としては、例えば、ＮＡＮＤフラッシュメモリを想定する。また、高速不揮発性メモリ４００（以下、高速ＮＶＭと略す場合がある。）としては、例えば、抵抗変化型不揮発性メモリを想定する。なお、低速不揮発性メモリ３００は、特許請求の範囲に記載の第１のメモリの一例である。また、高速不揮発性メモリ４００は、特許請求の範囲に記載の第２のメモリの一例である。
【００２２】
低速不揮発性メモリ３００の仕様としては、一例として以下を想定する。まず、半導体容量として１６Ｇバイトを想定する。また、４Ｋバイトデータに１２８バイトパリティ、または、８Ｋバイトに２５６バイトパリティのページサイズによってリードまたはライトされ、ページより大きいブロック単位で消去されるものとする。
【００２３】
高速不揮発性メモリ４００の仕様としては、一例として以下を想定する。まず、半導体容量として２Ｇバイトを想定する。また、５１２バイトデータに１６バイトパリティのページサイズによってリードまたはライトされるものとする。なお、ここでは、ＮＡＮＤフラッシュメモリとは異なり、書込みの前に消去不要なメモリを想定する。
【００２４】
［高速不揮発性メモリの抵抗状態］
図２は、本技術の実施の形態における高速不揮発性メモリ４００として想定する抵抗変化型不揮発性メモリの抵抗分布を示す図である。抵抗変化型不揮発性メモリは、セット動作により低抵抗状態（ＬＲＳ：Low Resistance State）に遷移し、リセット動作により高抵抗状態（ＨＲＳ：High Resistance State）に遷移する。セット動作およびリセット動作を行う際には、セルに対してパルス電圧が印加される。セット動作およびリセット動作時にセルに対して印加されるパルス電圧の電圧を高くし、または、そのパルス幅を長くすることにより、データの保持特性を改善することができる。
【００２５】
抵抗変化型不揮発性メモリからデータを読み出す場合、リード閾値で示したリファレンス抵抗値を基準として抵抗状態を判断する。また、抵抗変化型不揮発性メモリにデータを書き込む場合、セット動作またはリセット動作の後にそのデータを読み出して、適正にセット動作またはリセット動作が行われていることを検証する動作（ベリファイ動作）が行われる。このベリファイ動作においてはリファレンス抵抗値を厳しくしたベリファイ閾値が用いられる場合がある。また、製造プロセスに起因するばらつきの影響によって、セット動作またはリセット動作とベリファイ動作を１回実行しただけでは正しく書込みが行われないことがあるため、これらを複数回繰り返して実行する場合がある。このベリファイと書込みの回数を多くすることによっても、データの保持特性を改善することができる。
【００２６】
セット動作とリセット動作ではセルに対して印加されるパルスの電圧の方向が互いに逆方向となる。読出しの際には、読出し対象となったセルに対してリセット動作と同方向に弱い電圧を印加する。読出し処理は、弱い書込み処理であると考えることができ、読出しによりセルは劣化する。したがって、読出し回数の多いセルは保持特性が悪い傾向になる。
【００２７】
低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、１つのメモリセルによって１ビットを記憶することが可能なメモリが実現される。電圧の印加を止めた後もデータは保持されるため不揮発性メモリとして機能する。一般に、低抵抗状態のセルから読み出されるデータを「１」とし、高抵抗状態から読み出されるデータを「０」として扱うことが考えられるが、これらは何れに対応付けても構わない。
【００２８】
［メモリコントローラの構成］
図３は、本技術の実施の形態におけるメモリコントローラ２００の構成例を示す図である。このメモリコントローラ２００は、プロセッサ２１０と、ＲＯＭ２２０と、ＲＡＭ２３０と、ＥＣＣ処理部２４０と、領域管理テーブル２５０と、アドレス変換テーブル２６０とを備える。また、メモリコントローラ２００は、ホストコンピュータ１００との間のインターフェースを制御するホストインターフェース制御部２０１を備える。また、メモリコントローラ２００は、低速不揮発性メモリ３００との間のインターフェースを制御する低速不揮発性メモリインターフェース制御部２０３を備える。また、メモリコントローラ２００は、高速不揮発性メモリ４００との間のインターフェースを制御する高速不揮発性メモリインターフェース制御部２０４を備える。
【００２９】
プロセッサ２１０は、メモリコントローラ２００全体の制御を行うものである。このプロセッサ２１０は、ＲＯＭ２２０に格納されたソフトウェアを実行する。このプロセッサ２１０は、ホストコンピュータ１００から発行されたコマンドを解釈して、低速不揮発性メモリ３００または高速不揮発性メモリ４００に対して必要なリクエストを要求する。ＲＯＭ２２０は、ストレージシステムを制御するためのソフトウェアプログラムを格納するメモリである。
【００３０】
ＲＡＭ２３０は、揮発性のメモリであり、プロセッサ２１０のワーキングメモリや、低速不揮発性メモリ３００および高速不揮発性メモリ４００を管理するデータを一時的に保持するための領域として用いられる。また、ＲＡＭ２３０は、ホストコンピュータ１００とメモリコントローラ２００との間で転送されるデータを一時的に保持するための領域としても用いられる。また、ＲＡＭ２３０は、メモリコントローラ２００と低速不揮発性メモリ３００または高速不揮発性メモリ４００との間で転送されるデータを一時的に保持するための領域としても用いられる。なお、以下に説明する領域管理テーブル２５０およびアドレス変換テーブル２６０をこのＲＡＭ２３０に保持するようにしてもよい。
【００３１】
ＥＣＣ処理部２４０は、高速不揮発性メモリ４００および低速不揮発性メモリ３００のエラー訂正コード（ＥＣＣ）の生成、および、高速不揮発性メモリ４００および低速不揮発性メモリ３００から読み出したデータのエラー検出および訂正処理を実行するものである。
【００３２】
図４は、本技術の実施の形態における論理アドレス空間の対応例を示す図である。メモリシステムモジュール５００は、ホストコンピュータ１００から論理アドレスによってアクセスされる。メモリシステムモジュール５００のメモリコントローラ２００は、その論理アドレスに応じて高速不揮発性メモリ４００または低速不揮発性メモリ３００にアクセスする。
【００３３】
メモリシステムモジュール５００、高速不揮発性メモリ４００および低速不揮発性メモリ３００は、論理アドレス空間を共有している。メモリコントローラ２００は、領域管理テーブル２５０によって、メモリシステムモジュール５００の論理アドレスが高速不揮発性メモリ４００または低速不揮発性メモリ３００の何れに割り当てられているかを知ることができる。
【００３４】
メモリコントローラ５００は、高速不揮発性メモリ４００（ブート領域またはキャッシュ領域）にアクセスするにあたっては、メモリシステムモジュール５００の論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換してアクセスする。また、低速不揮発性メモリ３００に対しても同様に、メモリシステムモジュール５００の論理アドレスを低速不揮発性メモリ３００の物理アドレスに変換してアクセスする。
【００３５】
メモリシステムモジュール５００の論理アドレス空間は、「ブート空間」と「通常空間」から構成される。メモリシステムモジュール５００の論理アドレス空間のうちブート空間へのアクセスは、高速不揮発性メモリ４００へアクセスするように対応づけられ、この対応づけられた高速不揮発性メモリ４００上の領域をブート領域と定義する。このブート空間は、起動情報を記憶する領域であり、システム起動時にこれを読み出してホストコンピュータ１００に供給することを想定する。起動情報は、システムを起動するために必要な情報であり、例えば、起動プログラム、オペレーティングシステム、メインアプリケーションプログラムなどが含まれる。起動情報を高速不揮発性メモリ４００に保持することにより、その読出しを速くして、システムの起動を高速化することができる。なお、以下ではシステム起動時に起動情報を読み出す例について説明するが、起動時に読み出される情報だけではなく、システムを動作させるためのシステム情報にも本技術を広く適用することができる。例えば、起動後に高い頻度で用いられるその他のアプリケーションプログラムもシステム情報の一例である。すなわち、特許請求の範囲に記載のシステム情報は起動情報を含む広い概念である。また、特許請求の範囲に記載のシステム領域は、ブート領域を含む広い概念である。
【００３６】
一方、メモリシステムモジュール５００の論理アドレス空間のうち通常空間へのアクセスは、低速不揮発性メモリ３００へアクセスするように対応づけられる。ただし、高速不揮発性メモリ４００を低速不揮発性メモリ３００のキャッシュとして用いるために、通常空間のうちの一部を高速不揮発性メモリ４００に割り当てることができる。この高速不揮発性メモリ４００に割り当てられた高速不揮発性メモリ４００上の領域をキャッシュ領域と定義する。このキャッシュ領域は、低速不揮発性メモリ３００のデータを一時的に記憶する領域であり、高速不揮発性メモリ４００を低速不揮発性メモリ３００のキャッシュとして機能させるための領域である。ホストコンピュータ１００からのライトデータを低速不揮発性メモリ３００に書き込む際には、まずは高速不揮発性メモリ４００のキャッシュ領域に書込みを行う。そして、所定のタイミングでキャッシュ領域から低速不揮発性メモリ３００の本来の領域にデータを移動する。したがって、データを読み出すタイミングによって、目的とするデータが高速不揮発性メモリ４００のキャッシュ領域または低速不揮発性メモリ３００の何れかに存在することになる。一方、ブート空間のデータは低速不揮発性メモリ３００に移動することがないため、常にブート領域に存在する。
【００３７】
また、メモリシステムモジュール５００のブート空間へのアクセスにおいては、読出しおよび書込みの何れに対しても、高速不揮発性メモリ４００のブート領域を対象として読出しまたは書込みの処理が行われる。
【００３８】
通常空間へのアクセスの場合、読出しにおいては、その対象となるメモリシステムモジュール５００の論理アドレスが高速不揮発性メモリ４００のキャッシュ領域に対応づけられている場合には、高速不揮発性メモリ４００のキャッシュ領域から読出しが行われる。キャッシュ領域に対応づけられていない場合には低速不揮発性メモリ３００から読出しが行われる。
【００３９】
また、通常空間への書込みにおいては、その対象となるメモリシステムモジュール５００の論理アドレスが高速不揮発性メモリ４００のキャッシュ領域に対応づけられている場合には、高速不揮発性メモリ４００のキャッシュ領域に書込みが行われる。キャッシュ領域に対応づけられていない場合には、高速不揮発性メモリ４００のキャッシュ領域を新たに割り当てた上で、高速不揮発性メモリ４００のキャッシュ領域への書込みが行われる。ただし、高速不揮発性メモリ４００の全容量が使われていた場合には、高速不揮発性メモリ４００のデータを低速不揮発性メモリ３００に移動した後に、キャッシュ領域を新たに割り当てた上で高速不揮発性メモリ４００に書き込んでもよい。また、このように高速不揮発性メモリ４００の全容量が使われていた場合において、高速不揮発性メモリ４００にキャッシュ領域を新たに割り当てることなく、そのまま低速不揮発性メモリ３００に書き込むようにしてもよい。
【００４０】
図５は、本技術の実施の形態における領域管理テーブル２５０の構成例を示す図である。この領域管理テーブル２５０は、メモリシステムモジュール５００の論理アドレス空間のうち、高速不揮発性メモリ４００のブート領域またはキャッシュ領域に対応づけられている領域を示すテーブルである。この領域管理テーブル２５０に存在しないメモリシステムモジュール５００の論理アドレスについては、低速不揮発性メモリ３００に割り当てられていることになる。
【００４１】
この例では、メモリシステムモジュール５００の論理アドレスと高速不揮発性メモリ４００のブート領域またはキャッシュ領域との対応関係が管理されている。キャッシュ領域は通常空間のキャッシュとして離散的に存在するため、複数エントリを記録している。ブート空間は連続であることが想定されるため、１エントリを想定しているが、複数エントリ存在しても構わない。
【００４２】
また、この例では領域管理テーブル２５０に開始論理アドレスおよび終了論理アドレスを記録しているが、１エントリに対する論理アドレス空間のサイズを固定した場合には開始アドレスのみを記録するように構成することも可能である。
【００４３】
なお、この領域管理テーブル２５０は、シャットダウンなどの際には低速不揮発性メモリ３００または高速不揮発性メモリ４００に保存される。
【００４４】
図６は、本技術の実施の形態におけるアドレス変換テーブル２６０の構成例を示す図である。このアドレス変換テーブル２６０は、論理アドレスを低速不揮発性メモリ３００または高速不揮発性メモリ４００の物理アドレスに変換するためのテーブルである。ここでは、高速不揮発性メモリ４００の物理アドレスに変換する構成について示しており、ブート領域およびキャッシュ領域の論理アドレスと物理アドレスとの対からなるエントリを有している。同様に、低速不揮発性メモリ３００についても、論理アドレスから物理アドレスへ変換するためのエントリを有する。
【００４５】
メモリコントローラ２００は、ホストコンピュータ１００からアクセスされた論理アドレスがブート領域に対応づけられている場合には、アドレス変換テーブル２６０を参照して論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する。これにより、論理アドレスに対応する高速不揮発性メモリ４００のブート領域の物理ページにアクセスするように制御する。一方、ホストコンピュータ１００からアクセスされた論理アドレスがキャッシュ領域に対応づけられている場合には、アドレス変換テーブル２６０を参照して論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する。これにより、論理アドレスに対応する高速不揮発性メモリ４００のキャッシュ領域の物理ページにアクセスするように制御する。
【００４６】
また、ホストコンピュータ１００からアクセスされた論理アドレスが低速不揮発性メモリ３００に対応づけられている場合には、アドレス変換テーブル２６０を参照して論理アドレスを低速不揮発性メモリ３００の物理アドレスに変換する。これにより、論理アドレスに対応する低速不揮発性メモリ３００のキャッシュ領域の物理ページにアクセスするように制御する。
【００４７】
図７は、本技術の実施の形態におけるメモリコントローラ２００の機能構成例を示す図である。メモリコントローラ２００は、領域定義部２５１と、アクセス制御部２１１と、移動処理部２１２の各機能を有する。
【００４８】
領域定義部２５１は、高速不揮発性メモリ４００におけるブート領域およびキャッシュ領域を定義するためのものである。具体的には、ブート領域およびキャッシュ領域の論理アドレス空間における開始アドレスや終了アドレスを保持することにより、アクセス対象が高速不揮発性メモリ４００の何れの領域であるか、または、低速不揮発性メモリ３００であるかを管理する。なお、この領域定義部２５１は、例えば領域管理テーブル２５０によって実現される。
【００４９】
アクセス制御部２１１は、ホストコンピュータ１００からのコマンドに従って、低速不揮発性メモリ３００または高速不揮発性メモリ４００にアクセスを行うものである。具体的には、書込みの際に、高速不揮発性メモリ４００のブート領域およびキャッシュ領域の何れの領域に該当するか、または、低速不揮発性メモリ３００に該当するかに応じて、その領域について予め定められた書込み方式によって書込みを行うよう制御する。この書込み方式としては、データアクセスサイズ、ＥＣＣ付与単位のデータサイズの他、書き込む際のパルス幅や電圧、ベリファイ閾値やベリファイ回数などを予め定めておくことが考えられる。
【００５０】
また、アクセス制御部２１１は、読出しの際には、高速不揮発性メモリ４００のブート領域およびキャッシュ領域の何れの領域に該当するか、または、低速不揮発性メモリ３００に該当するかを判断する。そして、その領域について予め定められた読出し方式によって読出しを行うよう制御する。
【００５１】
このように、アクセス制御部２１１は、ブート領域およびキャッシュ領域のそれぞれに対して個別に定められたデータアクセスサイズ、ＥＣＣ付与単位のデータサイズによりアクセスすることができる。ブート領域には、ＯＳやアプリケーション等のデータが配置されるため、大きいサイズのデータの連続読出しが多く、高い信頼性が要求される。したがって、ブート領域では、データアクセスサイズが大きく、ＥＣＣ付与単位のデータサイズも大きいことが望ましい。一方、製品出荷前にブート領域に起動情報を書き込んでおくことを想定すると、書込みの即時性は必ずしも要求されない。したがって、ベリファイ閾値を厳しくし、ベリファイ回数を増やして、データの信頼性を高くして書き込むことが考えられる。また、書込み時のパルス幅を広く、電圧を高くすることにより、保持特性を高めて信頼性を高くすることも有効である。なお、書込み時のパルス幅や電圧を高くした場合にはメモリの書換え回数（寿命）は減少する傾向があるが、ブート領域の性質としては読出し回数は多いものの書換え回数は少ないため、このような手法を採っても問題は生じないと考えられる。なお、ここでは、ブート領域に対する書込み方式として信頼性の高い書込み方式を採用する例について説明したが、通常の書込み方式を採用することも可能である。この書込み方式の選択については、ホストコンピュータ１００から指令するようにしてもよく、また、メモリコントローラ２００が自ら判断して使い分けるようにしてもよい。
【００５２】
一方、キャッシュ領域では、小さいデータのアクセスが高速に行われることが要求される。また、短期間のうちに低速不揮発性メモリ３００に移動されることを考慮すると、信頼性はそれほど重要視されない。したがって、キャッシュ領域では、データアクセスサイズが小さく、ＥＣＣ付与単位のデータサイズも小さいことが望ましい。また、ベリファイ回数を制限して、書込み時間を短くすることが有効である。また、書込み時のベリファイリードにおいてセンス電流を多くすることによりベリファイリードを短時間で行い、高速に書き込むことも有効である。なお、ここでは、キャッシュ領域に対する書込み方式として短い時間で書込みを終了できる方式を採用する例について説明したが、通常の書込み方式を採用することも可能である。この書込み方式の選択については、ホストコンピュータ１００から指令するようにしてもよく、また、メモリコントローラ２００が自ら判断して使い分けるようにしてもよい。
【００５３】
なお、このアクセス制御部２１１は、例えばプロセッサ２１０によって実現される。
【００５４】
移動処理部２１２は、高速不揮発性メモリ４００のキャッシュ領域に記憶されるデータを所定のタイミングで低速不揮発性メモリ３００に移動するものである。移動のタイミングとしては、例えば、ホストコンピュータ１００からのアクセスが一定時間発生しない場合や、キャッシュ領域に所定の閾値を超える容量のデータが溜まった場合などを想定することができる。
【００５５】
データの移動においては、まず高速不揮発性メモリ４００のキャッシュ領域からデータを読み出し、キャッシュ領域のデータアクセスサイズでＥＣＣ復号によるエラー検出訂正処理を行う。その後、復号されたデータを低速不揮発性メモリ３００で定められたＥＣＣ付与単位のデータサイズでＥＣＣを生成して、低速不揮発性メモリ３００に書き込む。ＥＣＣ付与単位のデータサイズがキャッシュ領域と低速不揮発性メモリ３００とで同じ場合には、キャッシュ領域から読み出したデータについてエラー検出訂正した後、そのまま低速不揮発性メモリ３００に書き込むことにより移動させてもよい。なお、この移動処理部２１２は、例えばプロセッサ２１０によって実現される。
【００５６】
＜２．実施の形態の動作＞
［メモリコントローラの動作タイミング］
図８は、本技術の実施の形態におけるブート領域へのライトタイミング例を示す図である。ここでは、ブート領域のＥＣＣ付与単位のデータサイズが４Ｋバイト、ＥＣＣのパリティサイズが１２８バイトである例を想定する。ホストコンピュータ１００から４Ｋバイトのライトコマンドが発行され、それをメモリコントローラ２００が受け取ったものとする。
【００５７】
ホストコンピュータ１００はメモリコントローラ２００にライトコマンドを発行すると、引き続いて４Ｋバイトのデータを送信する。メモリコントローラ２００は、受け取った４Ｋバイトのデータを４Ｋバイトのデータサイズで１２８バイトのパリティを生成する（計４Ｋバイト＋１２８バイト）。メモリコントローラ２００は、このパリティ付データを高速不揮発性メモリ４００に対して、ページサイズ（５２８バイト）毎に、ブート領域の書込み方式で８回書き込む。
【００５８】
高速不揮発性メモリ４００は、受け取ったページを単位として、指示されたブート領域の書込み方式でメモリセルに書込みを行う。ここでは、８バンク構成を前提として、各バンクに順番に書き込んでいく様子を示している。各バンクのステータス信号は、書込みの開始でビジー状態となり、書込みが終了するとビジー状態が終了する。
【００５９】
ここで、図中のＴａ＿１、Ｔａ＿２、Ｔａ＿３は以下に示す通りである。
Ｔａ＿１：メモリコントローラ２００がライトデータを受信し、ＥＣＣ付与単位である４Ｋバイトのうちの５１２バイトを高速不揮発性メモリ４００にデータ転送開始する直前までの時間
Ｔａ＿２：メモリコントローラ２００から１ページのデータを高速不揮発性メモリ４００に転送する時間
Ｔａ＿３：高速不揮発性メモリ４００が１ページ（５２８バイト）をブート領域の書込み方式で書き込む時間
【００６０】
なお、ブート領域の書込み方式で書き込む時間（Ｔａ＿３）については、ベリファイ回数が多いことを想定しており、通常の書込みの時間よりも長くなるものとしている。
【００６１】
図９は、本技術の実施の形態におけるキャッシュ領域へのライトタイミング例を示す図である。ここでは、キャッシュ領域のＥＣＣ付与単位のデータサイズが５１２バイト、ＥＣＣのパリティサイズが１６バイトである例を想定する。ホストコンピュータ１００から４Ｋバイトのライトコマンドが発行され、それをメモリコントローラ２００が受け取ったものとする。
【００６２】
ホストコンピュータ１００はメモリコントローラ２００にライトコマンドを発行すると、引き続いて４Ｋバイトのデータを送信する。メモリコントローラ２００は、受け取った４Ｋバイトのデータを、５１２バイトのデータサイズで１６バイトのパリティを生成する。すなわち、８つの５２８バイトのデータとする。メモリコントローラ２００は、このパリティ付データを高速不揮発性メモリ４００に対して、ページサイズ（５２８バイト）毎に、キャッシュ領域の書込み方式で８回書き込む。
【００６３】
高速不揮発性メモリ４００は、受け取ったページを単位として、指示されたキャッシュ領域の書込み方式でメモリセルに書込みを行う。ここでは、同様に８バンク構成を前提として、各バンクに順番に書き込んでいく様子を示している。
【００６４】
ここで、図中のＴｂ＿１、Ｔｂ＿２、Ｔｂ＿３は以下に示す通りである。
Ｔｂ＿１：メモリコントローラ２００がライトデータを受信し、ＥＣＣ付与単位である４Ｋバイトのうちの５１２バイトのＥＣＣを処理し、高速不揮発性メモリ４００にデータ転送開始する直前までの時間
Ｔｂ＿２：メモリコントローラ２００から１ページのデータを高速不揮発性メモリ４００に転送する時間
Ｔｂ＿３：高速不揮発性メモリ４００が１ページ（５２８バイト）をキャッシュ領域の書込み方式で書き込む時間
【００６５】
なお、キャッシュ領域の書込み方式で書き込む時間（Ｔｂ＿３）については、ベリファイ回数を少なくできるため、通常の書込みの時間よりも短くなるものとしている。
【００６６】
なお、ここでは、ホストコンピュータ１００からの最小アクセス単位を５１２バイトと想定して、キャッシュ領域のデータアクセスサイズを５１２バイトとした。これに対し、例えば、ホストコンピュータ１００からの最小アクセス単位が４Ｋバイトである場合には、ブート領域およびキャッシュ領域のデータアクセスサイズをともに４Ｋバイトとすることができる。
【００６７】
図１０は、本技術の実施の形態におけるブート領域からのリードタイミング例を示す図である。ここでは、ブート領域のデータアクセスサイズが４Ｋバイト、ＥＣＣのパリティサイズが１２８バイトである例を想定する。ホストコンピュータ１００から４Ｋバイトのリードコマンドが発行され、それをメモリコントローラ２００が受け取ったものとする。
【００６８】
ホストコンピュータ１００がメモリコントローラ２００に４Ｋバイトのリードコマンドを発行すると、メモリコントローラ２００は高速不揮発性メモリ４００から４Ｋバイト＋１２８バイトを読み出す。そのために、メモリコントローラ２００は、リードリクエストをページサイズ（５２８バイト）毎に８回発行する。メモリコントローラ２００は、４Ｋバイト＋１２８バイトのデータを受け取ると、ＥＣＣによるエラー検出訂正処理を行い、エラーがあれば訂正してホストコンピュータ１００に転送する４Ｋバイトのデータを準備する。４Ｋバイトのデータの準備が完了すると、メモリコントローラ２００はホストコンピュータ１００に４Ｋバイトのデータ転送を行う。
【００６９】
ここで、図中のＴａ＿１、Ｔａ＿２は以下に示す通りである。
Ｔａ＿１：メモリコントローラ２００が高速不揮発性メモリ４００から４Ｋバイト＋１２８バイトのデータを受信し、ＥＣＣ復号を行って、ホストコンピュータ１００に転送する４Ｋバイトデータの準備が完了するまでの時間
Ｔａ＿２：メモリコントローラ２００から４Ｋバイトのデータをホストコンピュータ１００に転送する時間
【００７０】
このブート領域からのリード動作において、ＥＣＣによるエラー検出訂正処理は、先頭の５１２バイトのデータを受信した時から開始し、４Ｋバイトのデータを受信した後に終了する。そのため、４Ｋバイトのデータ受信が終わった後にホストコンピュータ１００へのデータ転送が開始する。
【００７１】
図１１は、本技術の実施の形態におけるキャッシュ領域からのリードタイミング例を示す図である。ここでは、キャッシュ領域のデータアクセスサイズが５１２バイト、ＥＣＣのパリティサイズが１６バイトである例を想定する。ホストコンピュータ１００から４Ｋバイトのライトコマンドが発行され、それをメモリコントローラ２００が受け取ったものとする。
【００７２】
ホストコンピュータ１００がメモリコントローラ２００に４Ｋバイトのリードコマンドを発行すると、メモリコントローラ２００は高速不揮発性メモリ４００から４Ｋバイト＋１２８バイトのデータを読み出す。そのために、メモリコントローラ２００はリードリクエストをページサイズ（５２８バイト）毎に８回発行する。メモリコントローラ２００は、５２８バイトのデータを受け取る度にＥＣＣによるエラー検出訂正処理を行い、エラーがあれば訂正してホストコンピュータ１００に転送する５１２バイトのデータを準備する。メモリコントローラ２００は、５１２バイトのデータが準備される度に、ホストコンピュータ１００に５１２バイトのデータ転送を行う。
【００７３】
ここで、図中のＴｂ＿１、Ｔｂ＿２は以下に示す通りである。
Ｔｂ＿１：メモリコントローラ２００が高速不揮発性メモリ４００から５２８バイトのデータを受信し、ＥＣＣ復号を行って、ホストコンピュータ１００に転送する５１２バイトデータの準備が完了するまでの時間
Ｔｂ＿２：メモリコントローラ２００から４Ｋバイトのデータをホストコンピュータ１００に転送する時間
【００７４】
このキャッシュ領域からのリード動作においては、先頭の５１２バイトのデータが準備され次第、ホストコンピュータ１００へのデータ転送が可能となるため、ブート領域の場合と比べてレイテンシを短くすることができる。
【００７５】
［メモリコントローラの処理手順］
図１２は、本技術の実施の形態におけるメモリコントローラ２００のブート領域設定処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、例えばブート領域設定コマンドを発行することによって、メモリコントローラ２００に対してブート領域設定を指令する。ホストコンピュータ１００は、論理アドレスなどによってブート領域を指定する。
【００７６】
ブート領域設定コマンドを受け取ったメモリコントローラ２００は、指示されたメモリシステムモジュール５００の論理アドレス空間をブート空間として、高速不揮発性メモリ４００のブート領域に割り当てる（ステップＳ９１１）。具体的には、領域管理テーブル２５０に、ブート領域として、開始論理アドレスおよび終了論理アドレスを設定する。
【００７７】
そして、指示された空間以外を通常空間として割り当てる（ステップＳ９１２）。
【００７８】
図１３は、本技術の実施の形態におけるメモリコントローラ２００のライト処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、メモリコントローラ２００にライトコマンドを発行する。ライトコマンドでは書込み先の論理アドレスとサイズを指示し、ライトコマンドを送信した後に続いてライトデータを送信する。
【００７９】
メモリコントローラ２００は、ホストコンピュータ１００からライト対象となる論理アドレスおよびライトデータを受信する（ステップＳ９２１）。メモリコントローラ２００は、受信したライトコマンドの論理アドレスに基づいて領域管理テーブル２５０を参照することにより、それがブート領域に対する書込みであるか否かを判断する（ステップＳ９２２）。ブート領域に対する書込みであれば（ステップＳ９２２：Ｙｅｓ）、メモリコントローラ２００は、アドレス変換テーブル２６０を参照することにより、論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する（ステップＳ９２４）。そして、ブート領域のＥＣＣ付与単位のデータサイズ（例えば、４Ｋバイト）に対してＥＣＣを生成する（ステップＳ９２５）。そして、ブート領域の書込み方式を用いて、ブート領域に書込みを行う（ステップＳ９２６）。
【００８０】
ブート領域に対する書込みでなければ（ステップＳ９２２：Ｎｏ）、メモリコントローラ２００は、領域管理テーブル２５０を参照することにより、それがキャッシュ領域に対する書込みであるか否かを判断する（ステップＳ９３２）。キャッシュ領域に対する書込みでなければ（ステップＳ９３２：Ｎｏ）、高速不揮発性メモリ４００に新たにキャッシュ領域を割り当てる（ステップＳ９３３）。具体的には、領域管理テーブル２５０に、キャッシュ領域として、開始論理アドレスおよび終了論理アドレスを設定する。ただし、高速不揮発性メモリ４００の全容量が使われていた場合には、高速不揮発性メモリ４００のデータを低速不揮発性メモリ３００に移動した後に、キャッシュ領域を新たに割り当てた上で高速不揮発性メモリ４００に書き込んでもよい。
【００８１】
キャッシュ領域に対する書込みである場合（ステップＳ９３２：Ｙｅｓ）、または、キャッシュ領域の割当て後（ステップＳ９３３）、メモリコントローラ２００は、論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する（ステップＳ９３４）。そして、キャッシュ領域のＥＣＣ付与単位のデータサイズ（例えば、５１２バイト）に対してＥＣＣを生成する（ステップＳ９３５）。そして、キャッシュ領域の書込み方式を用いて、キャッシュ領域に書込みを行う（ステップＳ９３６）。
【００８２】
図１４は、本技術の実施の形態におけるメモリコントローラ２００のリード処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、メモリコントローラ２００にリードコマンドを発行する。リードコマンドでは、読出し対象となる論理アドレスとサイズが指示される。
【００８３】
メモリコントローラ２００は、ホストコンピュータ１００からリード対象となる論理アドレスを受信する（ステップＳ９４１）。メモリコントローラ２００は、受け取った論理アドレスから、それがブート領域からの読出しであるか否かを判断する（ステップＳ９４２）。ブート領域からの読出しであれば（ステップＳ９４２：Ｙｅｓ）、メモリコントローラ２００は、アドレス変換テーブル２６０を参照することにより、論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する（ステップＳ９４３）。そして、高速不揮発性メモリ４００の対象の物理アドレスからデータを読み出す（ステップＳ９４４）。そして、読み出されたデータについて、ブート領域のデータサイズでＥＣＣによるエラー検出訂正処理を行う（ステップＳ９４５）。このとき、読み出したデータにエラーが含まれる場合にはデータが訂正される。
【００８４】
一方、ブート領域からの読出しでなければ（ステップＳ９４２：Ｎｏ）、メモリコントローラ２００は、領域管理テーブル２５０を参照することにより、それがキャッシュ領域にからの読出しであるか否かを判断する（ステップＳ９５２）。キャッシュ領域からの読出しであれば（ステップＳ９５２：Ｙｅｓ）、メモリコントローラ２００は、アドレス変換テーブル２６０を参照することにより、論理アドレスを高速不揮発性メモリ４００の物理アドレスに変換する（ステップＳ９５３）。そして、高速不揮発性メモリ４００の対象の物理アドレスからデータを読み出す（ステップＳ９５４）。そして、読み出されたデータについて、キャッシュ領域のデータサイズでＥＣＣによるエラー検出訂正処理を行う（ステップＳ９５５）。このとき、読み出したデータにエラーが含まれる場合にはデータが訂正される。
【００８５】
ブート領域またはキャッシュ領域の何れでもなければ（ステップＳ９５２：Ｎｏ）、メモリコントローラ２００は、アドレス変換テーブル２６０を参照することにより、論理アドレスを低速不揮発性メモリ３００の物理アドレスに変換する（ステップＳ９５６）。そして、低速不揮発性メモリ３００の対象の物理アドレスからデータを読み出す（ステップＳ９５７）。そして、読み出されたデータについて、低速不揮発性メモリ３００の予め定められたＥＣＣのデータサイズでエラー検出訂正処理を行う（ステップＳ９５８）。このとき、読み出したデータにエラーが含まれる場合にはデータが訂正される。
【００８６】
これらの処理によりデータが読み出されると、メモリコントローラ２００は、高速不揮発性メモリ４００のブート領域またはキャッシュ領域もしくは低速不揮発性メモリ３００から読み出されたデータをホストコンピュータ１００に転送する（ステップＳ９５９）。
【００８７】
図１５は、本技術の実施の形態におけるメモリコントローラ２００の移動処理の処理手順例を示す流れ図である。メモリコントローラ２００は、高速不揮発性メモリ４００のキャッシュ領域に記憶されるデータを所定のタイミングで低速不揮発性メモリ３００に移動する。移動のタイミングとしては、上述のように、例えば、ホストコンピュータ１００からのアクセスが一定時間ない場合や、キャッシュ領域に所定の閾値を超える容量のデータが溜まった場合が挙げられる。
【００８８】
移動タイミングになると（ステップＳ９６１：Ｙｅｓ）、メモリコントローラ２００は、領域管理テーブル２５０のキャッシュ領域のエントリの中から移動対象となるエントリを選択する（ステップＳ９６２）。そして、高速不揮発性メモリ４００および低速不揮発性メモリ３００のアドレス変換テーブル２６０を用いて、論理アドレスを高速不揮発性メモリ４００および低速不揮発性メモリ３００の物理アドレスにそれぞれ変換する（ステップＳ９６３）。
【００８９】
次に、変換された物理アドレスを用いて高速不揮発性メモリ４００のキャッシュ領域からデータを読み出し、低速不揮発性メモリ３００へ書込みを行うことにより、データ移動を行う（ステップＳ９６４）。移動後は領域管理テーブル２５０から移動したエントリを削除する（ステップＳ９６５）。これにより、キャッシュ領域から読み出されたデータは、キャッシュ領域に存在しないものとして扱われることになる。
【００９０】
なお、移動中のメモリシステムモジュール５００の領域管理テーブル２５０のエントリに対して読出しを行った場合には、その移動は中断される。そして、領域管理テーブル２５０のエントリを用いて、高速不揮発性メモリ４００のキャッシュ領域からリード処理が行われる。リード処理の終了後、中断していた移動処理が再開される。移動処理が再開された後、移動したエントリは削除される。
【００９１】
また、移動中のメモリシステムモジュール５００の論理アドレスに対して書込みを行った場合には、高速不揮発性メモリ４００から低速不揮発性メモリ３００への移動は中止される。そして、領域管理テーブル２５０のエントリを用いて、高速不揮発性メモリ４００のキャッシュ領域にライト処理が行われる。この場合、移動処理を中止したため、エントリは削除されない。
【００９２】
この例ではキャッシュ領域から低速不揮発性メモリ３００への移動処理について説明したが、低速不揮発性メモリ３００からキャッシュ領域へ移動することも可能である。この場合は移動後にエントリの追加を行う。
【００９３】
このように、本技術の実施の形態によれば、高速不揮発性メモリ４００に起動情報のためのブート領域と低速不揮発性メモリ３００のためのキャッシュ領域とを設定することができる。これにより、キャッシュ領域において低速不揮発性メモリ３００に対するアクセス速度を向上させるとともに、ブート領域において起動情報を信頼性高く記憶することができる。
【００９４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９６】
なお、本技術は以下のような構成もとることができる。
（１）システムを動作させるためのシステム情報を記憶するシステム領域と第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と
を具備する記憶制御装置。
（２）前記アクセス制御部は、前記システム領域および前記キャッシュ領域のそれぞれに対して個別に定められたデータアクセスサイズによりアクセスする前記（１）に記載の記憶制御装置。
（３）前記システム領域のデータアクセスサイズは、前記キャッシュ領域のデータアクセスサイズよりも大きい前記（１）または（２）に記載の記憶制御装置。
（４）前記システム領域および前記キャッシュ領域のそれぞれに対して個別に定められたサイズのデータを単位としてエラー訂正コードを付与してエラー検出訂正処理を行うエラー検出訂正処理部をさらに具備する前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記システム領域のエラー訂正コードの付与単位のデータサイズは、前記キャッシュ領域のエラー訂正コードの付与単位のデータサイズよりも大きい前記（４）に記載の記憶制御装置。
（６）前記アクセス制御部は、前記システム領域に書き込む際のパルス幅を前記キャッシュ領域よりも長くする前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記アクセス制御部は、前記システム領域に書き込む際の電圧を前記キャッシュ領域よりも高くする前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記アクセス制御部は、前記システム領域に書き込む際のベリファイ閾値を前記キャッシュ領域よりも厳しくする前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）前記アクセス制御部は、前記キャッシュ領域に書き込む際のベリファイ回数を前記システム領域よりも少なくする前記（１）から（８）のいずれかに記載の記憶制御装置。
（１０）第１のメモリと、
第２のメモリと、
システムを動作させるためのシステム情報を記憶するシステム領域と前記第１のメモリのデータを一時的に記憶するキャッシュ領域とを前記第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と
を具備する記憶装置。
（１１）前記第１および第２のメモリは不揮発性メモリであり、
前記第２のメモリは前記第１のメモリよりも読出し処理時間が短い
前記（１０）に記載の記憶装置。
（１２）第１のメモリと、
第２のメモリと、
システムを動作させるためのシステム情報を記憶するシステム領域と前記第１のメモリのデータを一時的に記憶するキャッシュ領域とを前記第２のメモリにおいて定義する領域定義部と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理部と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御部と、
前記アクセス制御部に対して前記第１または第２のメモリへのアクセス要求を発行するホストコンピュータと
を具備する情報処理システム。
（１３）システムを動作させるためのシステム情報を記憶するシステム領域と第１のメモリのデータを一時的に記憶するキャッシュ領域とを第２のメモリにおいて定義する領域定義手順と、
前記キャッシュ領域に記憶されるデータを所定のタイミングで前記第１のメモリに移動する移動処理手順と、
前記システム領域または前記キャッシュ領域に該当するアクセスについては前記定義に応じて前記第２のメモリにアクセスし、前記システム領域および前記キャッシュ領域以外に該当するリードアクセスについては前記第１のメモリからデータを読み出すアクセス制御手順と
を具備する記憶制御方法。
【符号の説明】
【００９７】
１００  ホストコンピュータ
２００  メモリコントローラ
２０１  ホストインターフェース制御部
２０３  低速不揮発性メモリインターフェース制御部
２０４  高速不揮発性メモリインターフェース制御部
２１０  プロセッサ
２１１  アクセス制御部
２１２  移動処理部
２２０  ＲＯＭ
２３０  ＲＡＭ
２４０  ＥＣＣ処理部
２５０  領域管理テーブル
２５１  領域定義部
２６０  アドレス変換テーブル
３００  低速不揮発性メモリ
４００  高速不揮発性メモリ
５００  メモリシステムモジュール
【図１】
2015106324.tif 000003
【図２】
2015106324.tif 000004
【図３】
2015106324.tif 000005
【図４】
2015106324.tif 000006
【図５】
2015106324.tif 000007
【図６】
2015106324.tif 000008
【図７】
2015106324.tif 000009
【図８】
2015106324.tif 000010
【図９】
2015106324.tif 000011
【図１０】
2015106324.tif 000012
【図１１】
2015106324.tif 000013
【図１２】
2015106324.tif 000014
【図１３】
2015106324.tif 000015
【図１４】
2015106324.tif 000016
【図１５】
2015106324.tif 000017