(57)【要約】      （修正有）【課題】スワップが頻発しても大幅な性能の低下を防止する半導体記憶装置の制御方法を提供する。【解決手段】第１メモリと第２メモリとを備える半導体記憶装置の制御方法であって、第１メモリとホスト装置とが接続され且つ第２メモリとホスト装置とが接続されない第１状態と、第１メモリと第２メモリとが接続され且つホスト装置が第１メモリ及び第２メモリと接続されない第２状態とを切り替え、ホスト装置から第１メモリに記憶されたデータを第２メモリに移動することを要求する移動要求コマンドを受け付けると、第２状態に切り替え第１メモリと第２メモリとの間でデータを移動させ、第１コマンドを受け付けると、特定した第２メモリの空き領域に対して第１コマンドで識別される第１メモリの領域に記憶されたデータを移動させ、移動先の領域識別情報に対してアドレス空間領域識別情報を対応付けて情報を更新する。【選択図】図２
2019016377.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと、第２のメモリと、を備える半導体記憶装置の制御方法であって、
前記第１のメモリと、前記第１のメモリに対するデータの読み書きを行うホスト装置とが接続され、かつ、前記第２のメモリと前記ホスト装置とが接続されない第１の状態と、前記第１のメモリと前記第２のメモリとが接続され、かつ、前記ホスト装置が前記第１のメモリと接続されず、かつ、前記ホスト装置が前記第２のメモリと接続されない第２の状態とを切り替え、
前記第２のメモリに含まれる複数の領域のうちの何れかを識別する領域識別情報と、前記ホスト装置がアクセスするアドレス空間に含まれる複数の領域のうちの何れかを識別するアドレス空間領域識別情報とが対応付けられた対応情報を複数記憶し、
前記ホスト装置から、前記第１のメモリに含まれる複数の領域のうちの何れかを識別する第１パラメータと、前記アドレス空間領域識別情報を示す第２パラメータとを有し、前記第１のメモリに記憶されたデータを前記第２のメモリに移動することを要求する第１のコマンドを含む移動要求コマンドを受け付けると、前記第２の状態に切り替え、
前記第１のメモリと前記第２のメモリとの間でデータを移動させ、
前記ホスト装置から前記第１のコマンドを受け付けると、前記第２のメモリの空き領域を特定し、その特定した前記第２のメモリの空き領域に対して、前記第１のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に記憶されたデータを移動させ、該データの移動先の前記第２のメモリの領域を識別する前記領域識別情報に対して、前記第１のコマンドの前記第２パラメータである前記アドレス空間領域識別情報を対応付けて前記対応情報を更新する、
半導体記憶装置の制御方法。
【請求項２】
前記移動要求コマンドは、
前記第２のメモリに記憶されたデータを前記第１のメモリに移動することを要求する第２のコマンドを含み、
前記ホスト装置から前記第２のコマンドを受け付けると、前記第２の状態に切り替え、
前記第２のメモリに記憶されたデータを前記第１のメモリに移動させる、
請求項１の半導体記憶装置の制御方法。
【請求項３】
前記第２のコマンドは、前記第１パラメータと、前記第２パラメータとを有し、
前記第２のコマンドを受け付けた場合は、前記対応情報を参照して、前記第２のコマンドの前記第２パラメータである前記アドレス空間領域識別情報に対応付けられた前記領域識別情報を特定し、その特定した前記領域識別情報で識別される前記第２のメモリの領域に記憶されたデータを、前記第２のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に移動させ、該データの移動元の前記第２のメモリの領域を空き領域として管理する、
請求項２の半導体記憶装置の制御方法。
【請求項４】
前記対応情報に含まれる前記領域識別情報で識別される前記第２のメモリの領域が空き領域の場合、該対応情報は、前記領域識別情報と、空き領域であることを識別する空き領域識別情報とが対応付けられた情報であり、
前記第１のコマンドを受け付けた場合は、前記対応情報を参照して、前記空き領域識別情報に対応付けられた前記領域識別情報を特定し、その特定した前記領域識別情報で識別される前記第２のメモリの領域に対して、前記第１のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に記憶されたデータを移動させ、該データの移動先の前記第２のメモリの領域を識別する前記領域識別情報に対して、前記第１のコマンドの前記第２パラメータである前記アドレス空間領域識別情報を対応付けて前記対応情報を更新し、
前記第２のコマンドを受け付けた場合は、前記対応情報を参照して、前記第２のコマンドの前記第２パラメータである前記アドレス空間領域識別情報に対応付けられた前記領域識別情報を特定し、その特定した前記領域識別情報で識別される前記第２のメモリの領域に記憶されたデータを、前記第２のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に移動させ、該データの移動元の前記第２のメモリの領域を識別する前記領域識別情報に対して、前記空き領域識別情報を対応付けて前記対応情報を更新する、
請求項３の半導体記憶装置の制御方法。
【請求項５】
前記第１のコマンドおよび前記第２のコマンドの各々は、前記第１のメモリに含まれる複数の領域のうちの何れかを識別する第１パラメータと、前記第２のメモリに含まれる複数の領域のうちの何れかの領域を識別する第３パラメータとを有し、
前記第１のコマンドを受け付けた場合は、前記第１のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に記憶されたデータを、前記第１のコマンドの前記第３パラメータで識別される前記第２のメモリの領域へ移動させ、
前記第２のコマンドを受け付けた場合は、前記第２のコマンドの前記第３パラメータで識別される前記第２のメモリの領域に記憶されたデータを、前記第２のコマンドの前記第１パラメータで識別される前記第１のメモリの領域へ移動させる、
請求項２の半導体記憶装置の制御方法。
【請求項６】
前記ホスト装置から受け取った前記移動要求コマンドを、受け取った順に記憶し、
記憶した前記移動要求コマンドを１つずつ取り出し、取り出した前記移動要求コマンドに応じた制御を行う、
請求項１乃至５のうちの何れか１項の半導体記憶装置の制御方法。
【請求項７】
記憶した先頭の前記移動要求コマンドから順番に、前記移動要求コマンドを１つずつ取り出す、
請求項６の半導体記憶装置の制御方法。
【請求項８】
複数の第１のメモリと、第２のメモリと、を備える半導体記憶装置の制御方法であって、
前記第１のメモリと、前記第１のメモリに対するデータの読み書きを行うホスト装置とが接続され、かつ、前記第２のメモリと前記ホスト装置とが接続されない第１の状態と、前記第１のメモリと前記第２のメモリとが接続され、かつ、前記ホスト装置が前記第１のメモリと接続されず、かつ、前記ホスト装置が前記第２のメモリと接続されない第２の状態とを前記第１のメモリごとに切り替え、
前記ホスト装置から、何れかの前記第１のメモリと、前記第２のメモリとの間でのデータの移動を要求する移動要求コマンドを受け付けると、前記移動要求コマンドの対象となる前記第１のメモリを前記第２の状態に切り替え、
前記第１のメモリと前記第２のメモリとの間でデータを移動させる、
半導体記憶装置の制御方法。
【請求項９】
前記ホスト装置から前記移動要求コマンドを受け付けると、前記複数の第１メモリごとに前記第２の状態に切り替え、
前記複数の第１のメモリと前記第２のメモリとの間でデータを移動させる、
請求項８の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置の制御方法に関する。
【背景技術】
【０００２】
従来、ＤＲＡＭなどのメインメモリに載りきらないデータを、メインメモリとは別のストレージ内に確保された記憶領域（スワップファイルと称する場合がある）に記憶し、必要に応じて、メインメモリとスワップファイルとの間でデータの入れ替え（スワップ）を行う技術が知られている。
【０００３】
上記従来技術においては、メモリバスを介してメインメモリおよびストレージと接続されるプロセッサがスワップ処理を実行していた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０６−２５０９２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術においては、メインメモリとストレージとが互いに離れた場所に配置されているので、スワップ処理を高速化することは困難である。このため、例えばスワップが頻発した場合は、性能が大幅に低下する懸念がある。
【課題を解決するための手段】
【０００６】
実施形態の半導体記憶装置の制御方法は、第１のメモリと第２のメモリとを備える半導体記憶装置の制御方法であって、前記第１のメモリと、前記第１のメモリに対するデータの読み書きを行うホスト装置とが接続され、かつ、前記第２のメモリと前記ホスト装置とが接続されない第１の状態と、前記第１のメモリと前記第２のメモリとが接続され、かつ、前記ホスト装置が前記第１のメモリと接続されず、かつ、前記ホスト装置が前記第２のメモリと接続されない第２の状態とを切り替え、前記第２のメモリに含まれる複数の領域のうちの何れかを識別する領域識別情報と、前記ホスト装置がアクセスするアドレス空間に含まれる複数の領域のうちの何れかを識別するアドレス空間領域識別情報とが対応付けられた対応情報を複数記憶し、前記ホスト装置から、前記第１のメモリに含まれる複数の領域のうちの何れかを識別する第１パラメータと、前記アドレス空間領域識別情報を示す第２パラメータとを有し、前記第１のメモリに記憶されたデータを前記第２のメモリに移動することを要求する第１のコマンドを含む移動要求コマンドを受け付けると、前記第２の状態に切り替え、前記第１のメモリと前記第２のメモリとの間でデータを移動させ、前記ホスト装置から前記第１のコマンドを受け付けると、前記第２のメモリの空き領域を特定し、その特定した前記第２のメモリの空き領域に対して、前記第１のコマンドの前記第１パラメータで識別される前記第１のメモリの領域に記憶されたデータを移動させ、該データの移動先の前記第２のメモリの領域を識別する前記領域識別情報に対して、前記第１のコマンドの前記第２パラメータである前記アドレス空間領域識別情報を対応付けて前記対応情報を更新する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態の情報処理装置の構成の一例を示す図。
【図２】第１の実施形態の半導体記憶装置の構成の一例を示す図。
【図３】第１の実施形態の対応情報の一例を示す図。
【図４】第１の実施形態の制御部の動作例を示す図。
【図５】変形例の制御部の動作例を示す図。
【図６】第１の実施形態の情報処理装置の動作の具体例を説明するための図。
【図７】変形例の半導体記憶装置の構成の一例を示す図。
【図８】変形例の送受信部の動作例を示す図。
【図９】変形例のデータ移動制御部の動作例を示す図。
【図１０】第２の実施形態の半導体記憶装置の構成の一例を示す図。
【図１１】第２の実施形態の制御部の動作例を示す図。
【図１２】第２の実施形態の情報処理装置の動作の具体例を説明するための図。
【図１３】第２の実施形態の対応情報の一例を示す図。
【図１４】第３の実施形態の情報処理装置の構成の一例を示す図。
【図１５】第３の実施形態の半導体記憶装置の構成の一例を示す図。
【図１６】変形例の半導体記憶装置の構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、本発明に係る半導体記憶装置の実施形態を詳細に説明する。
【０００９】
（第１の実施形態）
図１は、本実施形態の情報処理装置１の概略構成の一例を示す図である。例えば情報処理装置１は、ＰＣ（Personal  Computer）、携帯型情報端末（可搬型のタブレットも含む）、携帯電話端末などで構成され得る。図１に示すように、本実施形態の情報処理装置１は、プロセッサ１０と、複数の（図１の例ではｎ（ｎ≧２）個の）半導体記憶装置２０ａ〜２０ｎとを備える。複数の半導体記憶装置２０ａ〜２０ｎの各々は、メモリバス３０を介してプロセッサ１０と接続される。
【００１０】
プロセッサ１０は、情報処理装置１の動作を統括的に制御する装置であり、複数の半導体記憶装置２０ａ〜２０ｎの各々に対するデータの書き込みまたはデータの読み出しなどを行う。
【００１１】
本実施形態では、ｎ個の半導体記憶装置２０ａ〜２０ｎのうちの少なくとも１つは、２種類の半導体メモリが混載されており、「半導体記憶装置（混載型の半導体記憶装置）２０Ｘ」と称する場合がある。この半導体記憶装置２０Ｘの具体的な構成については後述する。また、ｎ個の半導体記憶装置２０ａ〜２０ｎのうち、１種類の半導体メモリが搭載された半導体記憶装置２０は、「半導体記憶装置（非混載型の半導体記憶装置）２０Ｙ」と称して、混載型の半導体記憶装置２０Ｘと区別する。また、これらを互いに区別しない場合は、単に「半導体記憶装置２０」と称する場合がある。
【００１２】
図２は、半導体記憶装置（混載型の半導体記憶装置）２０Ｘのハードウェア構成の一例を示す図である。図２に示すように、半導体記憶装置２０Ｘは、第１のメモリ２１０と、第２のメモリ２２０と、スイッチ２３０と、制御部２４０とを備える。これらのハードウェア要素は、半導体素子や半導体回路で構成される。
【００１３】
第１のメモリ２１０は、ホスト装置であるプロセッサ１０が、ランダムアクセス可能なメモリ、すなわち、任意のアドレスへのランダムなデータの読み書きが可能なメモリである。例えばＤＲＡＭやＳＲＡＭなどが該当するが、これらに限られない。
【００１４】
第２のメモリ２２０は、第１のメモリ２１０よりも記憶容量が大きいメモリである。第２のメモリ２２０は、一定期間の間データを保持できる不揮発メモリであっても、一定期間よりも短期間でデータを失う揮発メモリであっても良い。例えば電力の供給が停止されても一定期間の間データを保持できるＮＡＮＤ  ＦｌａｓｈメモリやＮＯＲ  Ｆｌａｓｈメモリ、ＲｅＲＡＭ、ＰＣＭ（相変化メモリ）などの不揮発メモリで構成されてもよい。ただし、第２のメモリ２２０は、必ずしも不揮発メモリである必要はなく、電力の供給が停止されると上記一定期間よりも短期間でデータを失う揮発メモリであってもよい。
【００１５】
スイッチ２３０は、第１のメモリ２１０と、第１のメモリ２１０に対するデータの読み書きを行うプロセッサ１０（ホスト装置の一例）とが接続され、かつ、第２のメモリ２２０とプロセッサ１０とが接続されない第１の状態と、第１のメモリ２１０と第２のメモリ２２０とが接続され、かつ、プロセッサ１０が第１のメモリ２１０と接続されず、かつ、プロセッサ１０が第２のメモリ２２０と接続されない第２の状態とを切り替えるためのハードウェア要素である。なお、メモリとプロセッサ１０が接続されるとは、プロセッサ１０がメモリへアクセス可能な状態になること、通信可能な状態になることを指す。同様に、メモリとプロセッサ１０が接続されない状態とは、プロセッサ１０がメモリへアクセスできない状態になること、通信不可能な状態になることと言い換えることもできる。
【００１６】
本実施形態では、第１の状態においては、第１のメモリ２１０は、スイッチ２３０を介してメモリバス３０に接続される（プロセッサ１０に接続される）ので、プロセッサ１０は、第１のメモリ２１０に含まれる複数の領域の全ての領域に対してアクセス可能であり、任意の領域をアドレスで指定して、データの読み出しや書き込みを行うことができる。一方、第２の状態においては、第１のメモリ２１０はメモリバス３０から切り離される（プロセッサ１０とは接続されない）ので、プロセッサ１０は、第１のメモリ２１０内の任意の領域をアドレスで指定しても、データの読み出しや書き込みを行うことはできない。
【００１７】
また、本実施形態では、第２のメモリ２２０は、第１の状態および第２の状態の何れかの状態においても、メモリバス３０とは接続されない（プロセッサ１０とは接続されない）ので、プロセッサ１０は、第２のメモリ２２０に直接アクセスすることはできない。このため、第２のメモリ２２０は、プロセッサ１０のメモリアドレス空間には割り当てられない。
【００１８】
メモリバス３０に接続される制御部２４０は、プロセッサ１０から、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動を要求する移動要求コマンドを受け付けると、第２の状態に切り替えるようにスイッチ２３０を制御し、第１のメモリ２１０と第２のメモリ２２０との間でデータを移動する。移動要求コマンドとしては、少なくとも第１のコマンドと第２のコマンドがある。第１のコマンドは、第１のメモリ２１０に記憶されたデータを第２のメモリ２２０に移動することを要求するコマンドである。第２のコマンドは、第２のメモリ２２０に記憶されたデータを第１のメモリ２１０に移動することを要求するコマンドである。そして、制御部２４０は、プロセッサ１０から第１のコマンドを受け付けると、第２の状態に切り替えるようにスイッチ２３０を制御し、第１のメモリ２１０に記憶されたデータを第２のメモリ２２０に移動する。また、制御部２４０は、プロセッサ１０から第２のコマンドを受け付けると、第２の状態に切り替えるようにスイッチ２３０を制御し、第２のメモリ２２０に記憶されたデータを第１のメモリ２１０に移動する。なお、所望の状態に切り替えるようにスイッチ２３０を制御するとは、異なる状態から所望の状態へ変更する場合と、既に所望の状態にある時には変更しない場合の両方を含む。
【００１９】
さらに詳述すれば、本実施形態では、制御部２４０は、対応情報管理部２４２を備える。この対応情報管理部２４２は、第２のメモリ２２０の領域識別情報とアドレス空間領域識別情報とが対応付けられた対応情報を複数記憶する。第２のメモリ２２０の領域識別情報は、複数の記憶領域に区分けされた第２のメモリ２２０の領域の１つを特定する情報である。アドレス空間領域識別情報は、プロセッサ１０がアクセスするアドレス空間（一例として仮想アドレス空間）に対する識別情報であり、複数の記憶領域に区分けされたアドレス空間の領域の１つの特定（識別）する情報である。仮想記憶機構が動作していて、プロセス毎にアドレス空間が異なる場合には、アドレス空間領域識別情報は、その領域が属するアドレス空間を特定する情報も含む。また、本実施形態における対応情報に含まれる領域識別情報で識別される第２のメモリ２２０の領域が空き領域の場合、その対応情報は、第２のメモリ２２０の領域識別情報と、空き領域であることを識別する空き領域識別情報とが対応付けられた情報を示す。なお、これに限らず、例えば第２のメモリ２２０の空き領域は対応情報に登録されずに、第２のメモリ２２０に含まれる複数の領域のうち対応情報に登録されていない領域が空き領域であるとして管理する形態であってもよい。また、対応情報の記録方法は任意であり、例えばテーブル形式で管理してもよいし、リスト形式で管理してもよいし、他の形式でもよい。また、対応情報を記憶する対応情報管理部２４２は、第１のメモリ２１０に格納されてもよいし、第２のメモリ２２０に格納されてもよいし、これらとは別の専用のメモリで構成されてもよい。また、別の形態としては、第２のメモリ２２０の領域識別情報をインデックスとするテーブル（すなわち、テーブルの行番号が第２のメモリ２２０の領域識別情報と同じ）とし、テーブルの中にアドレス空間領域識別情報を持ってもよい。すなわち、第２のメモリ２２０の領域識別情報とアドレス空間領域識別情報の対応関係が記録されていれば、どの様な形態で記憶されていてもよい。
【００２０】
図３は、本実施形態における対応情報の一例を示す図である。この例では、第２のメモリ２２０は、１チップのＮＡＮＤ  Ｆｌａｓｈメモリで構成され、チップ内の複数のブロック（各ブロックは複数のページから構成される）のうちの何れかを識別するブロック番号と、該ブロック番号で識別されるブロック内のページを識別するページ番号との組み合わせ（物理アドレスに相当する情報）が、第２のメモリ２２０の領域識別情報に含まれている。そして、第２のメモリ２２０の領域識別情報のそれぞれに対し、仮想アドレス空間領域識別情報（図３の例では、「０×８００４」、「０×８０１３」、「０×８００１」）または空き領域識別情報（図３の例では「０×ＦＦＦＦ」）が対応付けられている。なお、第２のメモリ２２０が、ＮＡＮＤ  Ｆｌａｓｈメモリを複数チップ搭載している場合は、領域識別情報には、複数のチップのうちの何れかを識別するチップ番号がさらに含まれていてもよい。また、第２のメモリ２２０の領域識別情報で識別される第２のメモリ２２０の領域が、同一ブロック内の連続する複数ページの領域を示す場合は、該領域識別情
報は、先頭のページを特定する情報（ブロック番号とページ番号）に加えてページ数を示す情報をさらに含んでいてもよい。さらに、第２のメモリ２２０の領域識別情報で識別される第２のメモリ２２０の領域が、複数のブロックに跨ったページからなる領域である場合は、該領域識別情報は、ブロック番号とページ番号（とページ数を識別する情報）の全ての組み合わせを含む形態であってもよい。また、ブロック番号とページ番号と（チップ番号と）の組み合わせからなる物理的な情報の代わりに、論理的な情報（例えば連続的な一次元のページ番号など）で第２のメモリ２２０内の領域を指定（識別）する形態であってもよい。つまり、半導体記憶装置２０Ｘ内に、論理的な一次元のページ番号を、物理的な情報（ブロック番号とページ番号と（チップ番号と）の組み合わせ等）にマッピングする変換機構を備える形態であってもよい。
【００２１】
図２に戻って、制御部２４０の説明を続ける。本実施形態では、第１のコマンドと第２のコマンドは両者とも、パラメータ（引数とも呼ぶ）として、第１のメモリ２１０の領域識別情報（第１パラメータ）と、アドレス空間領域識別情報（第２パラメータ）を有する。第１のメモリ２１０の領域識別情報は、第１のメモリ２１０に含まれる複数の領域のうちの何れかを識別する情報である。
【００２２】
そして、本実施形態では、制御部２４０は、第１のコマンドを受け付けた場合は、まず第２のメモリ２２０の空き領域を特定する。次に、その特定した第２のメモリ２２０の空き領域に対して、該第１のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動する。次に、移動されたデータの移動先の第２のメモリ２２０の領域を識別する領域識別情報に対して、該第１のコマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。一方、制御部２４０は、第２のコマンドを受け付けた場合は、まず対応情報を参照して、該第２のコマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報を特定する。次に、その特定した第２のメモリ２２０の領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、該第２のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動する。そして、該データの移動元の第２のメモリ２２０の領域を空き領域として管理する。
【００２３】
より具体的には、制御部２４０は、第１のコマンドを受け付けた場合は、まず対応情報を参照して、空き領域識別情報に対応付けられた領域識別情報を特定する。次に、その特定した第２のメモリ２２０の領域識別情報で識別される第２のメモリ２２０の領域に対して、該第１のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動する。次に、該データの移動先の第２のメモリ２２０の領域を識別する領域識別情報に対して、該第１のコマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。一方、制御部２４０は、第２のコマンドを受け付けた場合は、対応情報を参照して、該第２のコマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報を特定する。次に、その特定した領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、該第２のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動する。次に、該データの移動先の第２のメモリ２２０の領域を識別する領域識別情報に対して、空き領域識別情報を対応付けて対応情報を更新する。
【００２４】
ここでは、第１のコマンドは、第１のメモリ２１０に記憶されたデータを第２のメモリ２２０に退避させることを要求するコマンドであると考えることもでき、「退避コマンド」と称する場合がある。また、第２のコマンドは、第２のメモリ２２０に記憶されたデータを第１のメモリ２１０に復帰させることを要求するコマンドであると考えることもでき、「復帰コマンド」と称する場合がある。さらに、上記移動要求コマンドは、第１のメモリ２１０の所定領域に記憶されたデータを第２のメモリ２２０に退避させた後に、第２のメモリ２２０のうち、該退避させたデータが記憶される領域とは別の領域に記憶されたデータを第１のメモリ２１０の上記所定領域に復帰させることを要求する複合コマンド（退避コマンドと復帰コマンドとを対応付けて複合した形態のコマンド）であってもよい。
【００２５】
また、制御部２４０がプロセッサ１０から受け付けるコマンドとしては、上記移動要求コマンドの他、半導体記憶装置２０Ｘの状態を取得するための情報取得コマンドがあってもよい。取得する半導体記憶装置２０Ｘの状態としては、プロセッサ１０が第１のメモリ２１０に対してアクセス可能かどうか（スイッチ２３０の状態を取得することで判断可能）、第２のメモリ２２０の空き領域の容量、第１のメモリ２１０と第２のメモリ２２０との間でのデータ移動の進捗状況や完了までの推定残り時間などが挙げられる。
【００２６】
さらに、制御部２４０がプロセッサ１０から受け付けるコマンドは、アドレス空間領域識別情報に対応付けられた領域識別情報で識別される第２のメモリ２２０の領域を開放するコマンド、すなわち、アドレス空間領域識別情報が割り当てられない状態（未割り当て状態）に変更することを要求するコマンド（削除コマンド）であってもよい。また、第２のメモリ２２０に含まれる全ての領域を未割り当て状態に変更することを要求するコマンド（初期化コマンド）があってもよい。
【００２７】
また、コマンドのパラメータ（例えば退避コマンドや復帰コマンドのパラメータとしては、第１パラメータ、第２パラメータが挙げられる）は、コマンドに付属するパラメータとして与えてもよいし、事前に半導体記憶装置２０Ｘ内のレジスタに書き込んだ後で、動作種別を示す情報をコマンドとして与えてもよい。この場合には、混載型の半導体記憶装置２０Ｘ内のレジスタにパラメータを書き込むコマンドを持つ。
【００２８】
なお、例えば退避コマンドや復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域は、固定長領域であることが好ましいが、不定長領域として例えば開始番地と終了番地、もしくは開始番地とサイズで識別してもよい。固定長の場合、領域のサイズの単位は、プロセッサ１０上のＯＳ（オペレーティングシステム）の仮想記憶で一般的に用いられる４ＫＢや、第２のメモリ２２０におけるデータの書き込み単位（ＮＡＮＤ  Ｆｌａｓｈメモリにおけるページ）であると好ましいが、これに限らず、任意の単位であってよい。また、上述の第１のパラメータで識別される第１のメモリ２１０の領域は、連続した複数の固定長領域であっても構わない。この例では、上述の第１のパラメータで識別される第１のメモリ２１０の領域は、１つの固定長領域であることを前提として説明する。
【００２９】
以下、制御部２４０のより具体的な構成を説明する。図２に示すように、制御部２４０は、送受信部２４１と、対応情報管理部２４２と、データ移動制御部２４３とを備える。
【００３０】
送受信部２４１は、プロセッサ１０からのコマンドを受信するとともに、プロセッサ１０に対して、受信したコマンドに対する応答を送信する。この例では、送受信部２４１は、メモリバス３０に接続されており、スイッチ２３０の状態（半導体記憶装置２０Ｘの状態）が第１の状態および第２の状態の何れであっても、プロセッサ１０からのコマンドを受信することができるとともにプロセッサ１０に対して応答を送信することができる。
【００３１】
対応情報管理部２４２は、対応情報を管理する。例えば送受信部２４１で退避コマンドを受信した場合、対応情報管理部２４２は、対応情報を参照して、空き領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報を特定し、その特定した領域識別情報をデータ移動制御部２４３へ通知する。また、例えば送受信部２４１で復帰コマンドを受信した場合、対応情報管理部２４２は、対応情報を参照して、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報を特定し、その特定した領域識別情報をデータ移動制御部２４３へ通知する。
【００３２】
次に、送受信部２４１で削除コマンドを受信した場合の動作について説明する。削除コマンドのパラメータは、アドレス空間領域識別情報を有する。対応情報管理部２４２は、対応情報のうち、削除コマンドのパラメータのアドレス空間領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報を選択し、その選択した領域識別情報と、空き領域識別情報とを対応付ける。空き領域の管理方法として、対応情報に空き領域識別情報を登録しない方法であれば、選択した領域識別情報とアドレス空間領域識別情報とが対応付けられた対応情報を単に削除すればよい。
【００３３】
また、この混載型の半導体記憶装置２０Ｘを最初に利用する時には、第２のメモリ２２０には何も退避されていない状態が初期状態となるため、対応情報にはアドレス空間領域識別情報が登録されていない状態にする必要がある。そのため、送受信部２４１で初期化コマンドを受信した場合、対応情報管理部２４２は、初期化、すなわち第２のメモリ２２０の領域識別情報すべてに対して空き領域識別情報を対応付ける処理を行う。
【００３４】
次に、データ移動制御部２４３を説明する。データ移動制御部２４３は、送受信部２４１で受信したコマンドの種別を判別し、コマンドに応じた制御を行う。受信したコマンドが移動要求コマンドである場合、移動要求コマンドに従って、第１のメモリ２１０と第２のメモリ２２０との間のデータを移動する。例えば送受信部２４１で退避コマンドを受信した場合であって、対応情報管理部２４２から第２のメモリ２２０の領域識別情報の通知（対応情報管理部２４２によって特定された第２のメモリ２２０の空き領域を示す情報の通知）を受けると、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する。その後、データ移動制御部２４３は、その通知された領域識別情報で識別される第２のメモリ２２０の領域に対して、退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動し、対応情報管理部２４２に対して、対応情報の更新を依頼する。この依頼を受けた対応情報管理部２４２は、空き領域として特定した第２のメモリ２２０の領域を識別する領域識別情報に対して、退避コマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。
【００３５】
また、例えば送受信部２４１で復帰コマンドを受信した場合であって、対応情報管理部２４２から第２のメモリ２２０の領域識別情報の通知（対応情報管理部２４２によって特定された、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた第２のメモリ２２０の領域識別情報の通知）を受けると、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する。その後、データ移動制御部２４３は、その通知された領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動し、対応情報管理部２４２に対して対応情報の更新を依頼する。この依頼を受けた対応情報管理部２４２は、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられていた第２のメモリ２２０の領域識別情報に対して、該アドレス空間領域識別情報の代わりに、空き領域識別情報を対応付けて対応情報を更新する。
【００３６】
なお、本実施形態では、制御部２４０は、プロセッサ１０からの移動要求コマンドを受信した直後には応答は返さずに、その受信した移動要求コマンドに従って、第１のメモリ２１０と第２のメモリ２２０との間でデータの移動し、移動完了後に、移動要求コマンドに対する応答として、データの移動が完了したことをプロセッサ１０へ報告するが、これに限られるものではない。
【００３７】
例えば制御部２４０は、移動要求コマンドを受信した後にプロセッサ１０へ応答を返し、それからデータの移動を開始してもよい。この場合の応答では、移動要求コマンドのパラメータに対応する第２のメモリ２２０の領域識別情報やアドレス空間領域識別情報を検査し、正常なパラメータであるかどうかの判定結果を応答に付加してもよい。
【００３８】
また、例えば制御部２４０が、移動要求コマンドに対する応答は行わずに、プロセッサ１０から受信した情報取得コマンドに対する応答として、データ移動中であるか否かを特定可能な情報をプロセッサ１０に返す形態であってもよい。例えば制御部２４０は、情報取得コマンドに対する応答として、スイッチ２３０の状態が第１の状態であるか第２の状態であるのかを示す情報をプロセッサ１０に返すこともできる。プロセッサ１０は、スイッチ２３０の状態が第２の状態であれば、データ移動中であると判断し、スイッチ２３０の状態が第１の状態であれば、データ移動が完了したと判断することができる。
【００３９】
さらに、別の方式としては、プロセッサ１０はメモリ間のデータ移動の完了を確認せずに、第１のメモリ２１０にアクセスを試み、正常にアクセスできるかできないかで、データ移動中であるか否かを判定してもよい。スイッチ２３０が第１の状態、すなわちプロセッサ１０と第１のメモリ２１０が接続されている状態では正常にアクセスが可能であるが、スイッチ２３０が第２の状態、すなわちプロセッサ１０と第１のメモリ２１０が接続されていない状態では、プロセッサ１０は第１のメモリ２１０にアクセスできないので、プロセッサ１０に対してエラーが返される、または一定時間内に応答がない、としてもよい。
【００４０】
以上が、混載型の半導体記憶装置２０Ｘの構成である。なお、非混載型の半導体記憶装置２０Ｙには、第１のメモリ２１０が搭載されるものの、第２のメモリ２２０、スイッチ２３０および制御部２４０は搭載されない。
【００４１】
図４は、プロセッサ１０からの移動要求コマンド（退避コマンドまたは復帰コマンドを受信した場合の制御部２４０の動作例を示すフローチャートである。まず送受信部２４１で移動要求コマンドを受信し（ステップＳ１）、その受信した移動要求コマンドが退避コマンドの場合（ステップＳ２：Ｙｅｓ）、対応情報管理部２４２は、対応情報を参照して、空き領域識別情報に対応付けられた領域識別情報を特定し（ステップＳ３）、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ４）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に対して、退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動する（ステップＳ５）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して対応情報の更新を依頼し、この依頼を受けた対応情報管理部２４２は、空き領域として特定した第２のメモリ２２０の領域を識別する領域識別情報に対して、退避コマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する（ステップＳ６）。次に、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７）。次に、送受信部２４１は、退避コマンドに対する応答として、データの移動が完了したことをプロセッサ１０へ報告する（ステップＳ８）。
【００４２】
一方、ステップＳ１で受信した移動要求コマンドが復帰コマンドの場合（ステップＳ２：Ｎｏ）、対応情報管理部２４２は、対応情報を参照して、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた領域識別情報を特定し（ステップＳ９）、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ１０）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動する（ステップＳ１１）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して対応情報の更新を依頼し、この依頼を受けた対応情報管理部２４２は、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられていた領域識別情報に対して、空き領域識別情報を対応付けて対応情報を更新する（ステップＳ１２）。次に、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ１３）。次に、送受信部２４１は、復帰コマンドに対する応答として、データの移動が完了したことをプロセッサ１０へ報告する（ステップＳ１４）。
【００４３】
なお、図５は、制御部２４０がプロセッサ１０から受信するコマンドが、退避コマンド、復帰コマンドおよび情報取得コマンドの３種類である場合において、プロセッサ１０からのコマンドを受信した場合の制御部２４０の動作例を示すフローチャートである。送受信部２４１でコマンドを受信し（ステップＳ２１）、その受信したコマンドが退避コマンドの場合（ステップＳ２２：Ｙｅｓ）は、ステップＳ２３〜ステップＳ２８の処理が行われる。ステップＳ２３〜ステップＳ２８の処理の内容は、図４に示すステップＳ３〜ステップＳ８の処理の内容と同様である。また、送受信部２４１で受信したコマンドが復帰コマンドの場合（ステップＳ２９：Ｙｅｓ）は、ステップＳ３０〜ステップＳ３５の処理が行われる。ステップＳ３０〜ステップＳ３５の処理の内容は、図４に示すステップＳ９〜ステップＳ１４の処理の内容と同様である。
【００４４】
また、送受信部２４１で受信したコマンドが情報取得コマンドの場合（ステップＳ２９：Ｎｏ）、送受信部２４１は、現在のスイッチ２３０の状態（半導体記憶装置２０Ｘの状態）を示す状態情報を、応答としてプロセッサ１０へ返す（ステップＳ３６）。
【００４５】
次に、図６を用いて、情報処理装置１全体の動作を具体的に説明する。図６の例では、プロセッサ１０がアクセスするアドレス空間は固定長領域で区切られ連続したページの集合で管理され、各ページにはアドレス空間領域識別情報（空間識別子）が付与されている。アドレス空間領域識別情報は、例えばプロセスを識別するプロセスＩＤと、該プロセスに割り当てられる仮想アドレス空間の領域を識別する仮想アドレスの下位の所定数のビットを除く上位ビットとの組み合わせで構成されることが考えられるが、これに限らず、プロセッサ１０がアクセスするアドレス空間の領域を識別可能な情報であればよい。
【００４６】
プロセッサ１０がアクセスするアドレス空間は、各半導体記憶装置２０に搭載された第１のメモリ２１０の容量よりも大きいため、アドレス空間の一部のページだけが第１のメモリ２１０に割り当てられ、その他のページは混載型の半導体記憶装置２０Ｘに搭載された第２のメモリ２２０か、ＨＤＤやＳＳＤなどのストレージデバイスに退避されている。各半導体記憶装置２０に搭載された第１のメモリ２１０は物理アドレス空間に固定的に割り当てられ、混載型の半導体記憶装置２０Ｘの場合には、第１のメモリ２１０だけが物理アドレス空間に割り当てられる。前述の通り、第２のメモリ２２０は、プロセッサ１０からアクセスできないため、物理アドレス空間には割り当てられない。プロセッサ１０は、アドレス空間のページを物理アドレス空間に割り当てる機能（アドレス変換部１０１）を有し、この機能は、一般的にMemory  Management  Unitなどと呼ばれる。
【００４７】
図６の例では、アドレス変換部１０１の機能により、アドレス空間に含まれる複数のページ（領域の一例）のうち「０×８０００」を示すアドレス空間領域識別情報（空間識別子）を付与されたページ、および、「０×８００２」を示すアドレス空間領域識別情報を付与されたページは、非混載型の半導体記憶装置２０Ｙに搭載された第１のメモリ２１０に割り当てられ、「０×８００３」を示すアドレス空間領域識別情報が付与されたページ、および、「０×８０１１」を示すアドレス空間領域識別情報が付与されたページは、混載型の半導体記憶装置２０Ｘに搭載された第１のメモリ２１０に割り当てられている。
【００４８】
また、図６の例では、「０×８００４」を示すアドレス空間領域識別情報が付与されたページ、「０×８０１３」を示すアドレス空間領域識別情報が付与されたページ、および、「０×８００１」を示すアドレス空間領域識別情報が付与されたページは、混載型の半導体記憶装置２０Ｘに搭載された第２のメモリ２２０に割り当てられている（退避されている）。第２のメモリ２２０に含まれる複数の領域のうち、「０×ＦＦＦＦ」を示す空き領域識別情報に対応付けられている領域は、空き領域であることを示す。図６の例では、アドレス空間に含まれる複数のページのうち、「０×８０１０」を示すアドレス空間領域識別情報が付与されたページ、「０×８０１２」を示すアドレス空間領域識別情報が付与されたページや図示されていないその他のページは未使用ページであり、何れのメモリにも割り当てられてない。
【００４９】
ここで、プロセッサ１０上で動くソフトウェアが、アドレス空間に含まれる複数のページのうち、退避先の第２のメモリ２２０に割り当てられた「０×８０１３」を示すアドレス空間領域識別情報が付与されたページ内のアドレスにアクセスした場合の動作について説明する。この場合、アドレス変換部１０１は、ソフトウェアがアクセスした該アドレスに対応する物理アドレスが存在しないため、プロセッサ１０に対して、ページフォルトの割り込みを発行する。プロセッサ１０上で動作するＯＳ（オペレーティングシステム）は、所定のアルゴリズムにて、第１のメモリ２１０に割り当てられたアドレス空間のページの中から退避可能なページを選択する。ここでは、「０×８００３」を示すアドレス空間領域識別情報が付与されたページが退避可能なページとして選択されたと仮定して説明を続ける。
【００５０】
ＯＳは、「０×８００３」を示すアドレス空間領域識別情報が付与されたページを退避するために、混載型の半導体記憶装置２０Ｘに退避コマンドを送る。この退避コマンドのパラメータとして、退避する第１のメモリ２１０の領域を識別する第１パラメータと、アドレス空間領域識別情報を示す第２パラメータを指定する。退避する第１のメモリ２１０の領域の指定の仕方としては、例えば混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地を指定することができる。このため、この例では、第１のメモリ２１０に含まれる複数の領域のうち、「０×８００３」を示す仮想アドレス空間領域識別情報が付与されたページが割り当てられている領域の、混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地として「０×００００」を指定する。また、第２パラメータとしては、退避する第１のメモリ２１０の領域が割り当てられているアドレス空間のページに付与された「０×８００３」を示すアドレス空間領域識別情報を指定する。
【００５１】
退避コマンドを受信した混載型の半導体記憶装置２０Ｘは、図４のフローに従って動作する。すなわち、送受信部２４１で退避コマンドを受信すると（ステップＳ２：Ｙｅｓ）、対応情報管理部２４２は、対応情報を参照して、「０×ＦＦＦＦ」を示す空き領域識別情報に対応付けられた領域識別情報を特定し（ステップＳ３）、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ４）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に対して、退避コマンドの第１パラメータが示す「０×００００」を先頭番地とする第１のメモリ２１０の領域に記憶された１ページ分のデータを移動する（ステップＳ５）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して対応情報の更新を依頼し、この依頼を受けた対応情報管理部２４２は、第２のメモリ２２０に含まれる複数の領域のうち退避先の領域（ステップＳ３で空き領域として特定した領域）を識別する領域識別情報に対して、退避コマンドの第２パラメータが示す「０×８００３」を対応付けて対応情報を更新する（ステップＳ６）。次に、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７）。次に、送受信部２４１は、退避コマンドに対する応答として、データの移動が完了したことをプロセッサ１０へ報告する（ステップＳ８）。
【００５２】
次に、ＯＳは、ページフォルトを起したアドレスが含まれるページを復帰するために、混載型の半導体記憶装置２０Ｘに復帰コマンドを送る。この復帰コマンドのパラメータとして、復帰先の第１のメモリ２１０の領域を識別する第１パラメータと、アドレス空間領域識別情報を示す第２パラメータとを指定する。復帰先の第１のメモリ２１０の領域は、対応する退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域と同じであるため、混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地として「０×００００」を指定する。また、第２パラメータとしては、ページフォルトを起したアドレスが含まれるページに付与された「０×８０１３」を示すアドレス空間領域識別情報を指定する。
【００５３】
復帰コマンドを受信した混載型の半導体記憶装置２０Ｘは、図４のフローに従って動作する。すなわち、送受信部２４１で復帰コマンドを受信すると（ステップＳ２：Ｎｏ）、対応情報管理部２４２は、対応情報を参照して、退避コマンドの第２パラメータが示す「０×８０１３」に対応付けられた領域識別情報を特定し（ステップＳ９）、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ１０）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に記憶された１ページ分のデータを、復帰コマンドの第１パラメータが示す「０×００００」を先頭番地とする第１のメモリ２１０の領域に移動する（ステップＳ１１）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して対応情報の更新を依頼し、この依頼を受けた対応情報管理部２４２は、復帰コマンドの第２パラメータが示す「０×８０１３」に対応付けられていた領域識別情報に対して、「０×ＦＦＦＦ」を示す空き領域識別情報を対応付けて対応情報を更新する（ステップＳ１２）。次に、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ１３）。次に、送受信部２４１は、復帰コマンドに対する応答として、データの移動が完了したことをプロセッサ１０へ報告する（ステップＳ１４）。この報告を受けたプロセッサ１０は、アドレス変換部１０１によるアドレス変換に用いられるマッピング情報を変更し、アドレス空間に含まれる複数のページのうちページフォルトを起したアドレスが含まれるページが、混載型の半導体記憶装置２０Ｘに搭載された第１のメモリ２１０の復帰した領域に割り当てられるようにする。
【００５４】
以上の動作により、ページフォルトを起したソフトウェアは、「０×８０１３」を示すアドレス空間領域識別情報が付与されたページ内のアドレスにアクセスすることが可能になり、処理を継続できる。
【００５５】
以上に説明したように、本実施形態の半導体記憶装置２０Ｘは、第１のメモリ２１０と、第２のメモリ２２０とを混載し、第１のメモリ２１０とプロセッサ１０とが接続され、かつ、第２のメモリ２２０とプロセッサ１０とが接続されない第１の状態と、第１のメモリ２１０と第２のメモリ２２０とが接続され、かつ、プロセッサ１０が第１のメモリ２１０と接続されず、かつ、プロセッサ１０が第２のメモリ２２０と接続されない第２の状態とを切り替えるためのスイッチ２３０を備える。
【００５６】
そして、本実施形態の半導体記憶装置２０Ｘは、プロセッサ１０から、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動を要求するための移動要求コマンドを受け付けると、第２の状態に切り替えるようにスイッチ２３０を制御し、第１のメモリ２１０と第２のメモリ２２０との間でデータを移動する制御部２４０を備える。これにより、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動が無いので、プロセッサ１０の負担を軽減することができる。また、制御部２４０は、第１のメモリ２１０をメモリバス３０から切り離した状態（第１のメモリ２１０とプロセッサ１０とが接続されない状態）で、第１のメモリ２１０と第２のメモリ２２０との間でのデータを移動するので、その間、プロセッサ１０はメモリバス３０を自由に使用することができ、例えばメモリバス３０を介して他の半導体記憶装置２０へアクセスすることも可能である。さらに、本実施形態の半導体記憶装置２０Ｘは、第１のメモリ２１０と第２のメモリ２２０とを混載しているので、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動に要する時間を短縮することができる。以上より、本実施形態によれば、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動が頻発しても、情報処理装置１の性能が大幅に低下することを回避できる。
【００５７】
（第１の実施形態の変形例）
上述の第１の実施形態では、プロセッサ１０上のＯＳが退避コマンドを発行し、その完了を待って、次の復帰コマンドを送っていたが、多くの場合、この２つは連動しているため、退避コマンドと復帰コマンドを連続して発行し、最後のコマンドの完了だけを待つ方が便利である。そこで、退避コマンドと復帰コマンドの連続発行や、さらに複数ページ分の退避コマンドと、対応する復帰コマンドとの組の連続発行を可能にする構成が、本変形例である。以下、本変形例の説明では、上述の第１の実施形態との差分について説明する。
【００５８】
図７に示すように、本変形例の半導体記憶装置（混載型の半導体記憶装置）２０Ｘは、プロセッサ１０から受け取った移動要求コマンドを、受け取った順に記憶するコマンド記憶部２５０をさらに備え、制御部２４０は、コマンド記憶部２５０に記憶された移動要求コマンドを１つずつ取り出し、取り出した移動要求コマンドに応じた制御を行う。この例では、制御部２４０は、コマンド記憶部２５０に記憶された先頭の移動要求コマンドから順番に、移動要求コマンドを１つずつ取り出すが、取り出す順序は、これに限られるものではない。この例では、コマンド記憶部２５０は、先に入力した情報が先に出力される、キューと呼ばれるデータ構造を有する。このキューは、受信した順に移動要求コマンド（退避コマンドまたは復帰コマンド）が登録される待ち行列である。コマンド記憶部２５０には、移動要求コマンドの実行に必要な情報（コマンドの種別を示す情報や上述のパラメータなど）が登録される。情報の管理形態としては、テーブル形式で管理してもよいし、リスト形式で管理してもよい。また、図７の例では、コマンド記憶部２５０は、制御部２４０内に設けられているが、これに限らず、例えば制御部２４０の外部に設けられてもよい。
【００５９】
説明の便宜上、本変形例では、制御部２４０がプロセッサ１０から受信するコマンドとしては、移動要求コマンド（退避コマンドまたは復帰コマンド）の他、情報取得コマンドが含まれる場合を例に挙げて説明する。取得する状態としては、第１のメモリ２１０へのアクセスが可能か（すなわちスイッチ２３０の状態）、第２のメモリ２２０の空き領域の容量、第１のメモリ２１０と第２のメモリ２２０との間でのデータの移動の進捗具合や完了までの推定残り時間の他、コマンド記憶部２５０に残っている移動要求コマンドの数や、コマンド記憶部２５０の空き容量（あと何個の移動要求コマンドを受け付けられるかを判断するための情報に相当）などである。
【００６０】
送受信部２４１は、プロセッサ１０からコマンドを受信した後、その受信したコマンドが移動要求コマンドであれば、コマンド受信の応答をプロセッサ１０に返すと共に、受信した移動要求コマンドをコマンド記憶部２５０の末尾に登録する。プロセッサ１０から受信したコマンドが情報取得コマンドである場合は、コマンド記憶部２５０には登録せずに、その応答として、現在のスイッチ２３０の状態（半導体記憶装置２０Ｘの状態）を示す状態情報をプロセッサ１０へ返す。
【００６１】
データ移動制御部２４３は、コマンド記憶部２５０に登録された１以上の移動要求コマンドの中の先頭の移動要求コマンド（受け取った順番が最も古い移動要求コマンド）に従い、第１のメモリ２１０と第２のメモリ２２０との間でのデータを移動する。この具体的な内容は、上述の第１の実施形態と同様である。なお、例えば第１のメモリ２１０や第２のメモリ２２０が、それぞれ複数チップ存在することにより、複数の移動要求コマンドを並行して処理可能な場合は、複数の移動要求コマンドを並列に処理しても構わない。
【００６２】
図８は、プロセッサ１０からのコマンドを受信した場合の送受信部２４１の動作例を示すフローチャートである。送受信部２４１は、プロセッサ１０からのコマンドを受信すると（ステップＳ４１）、受信したコマンドの種類を確認する。受信したコマンドの種類を確認する方法としては様々な方法が考えられる。例えばプロセッサ１０から送信されるコマンドには、該コマンドの種類を示すコマンド種類情報が含まれる場合は、送受信部２４１は、受信したコマンドに含まれるコマンド種類情報を参照して、その受信したコマンドの種類を判断することができる。
【００６３】
ステップＳ４１で受信したコマンドが移動要求コマンドの場合（ステップ４２：Ｙｅｓ）、つまり、ステップＳ４１で受信したコマンドが退避コマンドまたは復帰コマンドの場合、送受信部２４１は、移動要求コマンドを受信したことを示す情報を、応答としてプロセッサ１０に返す（ステップＳ４３）。次に、送受信部２４１は、受信した移動要求コマンドをコマンド記憶部２５０に登録する（ステップＳ４４）。次に、送受信部２４１は、データ移動制御部２４３が動作中であるか否かを確認する（ステップＳ４５）。データ移動制御部２４３が動作中の場合（ステップＳ４５：Ｙｅｓ）、そのまま処理は終了し、データ移動制御部２４３が停止中の場合（ステップＳ４５：Ｎｏ）、データ移動制御部２４３を起動する（ステップＳ４６）。
【００６４】
一方、ステップＳ４１で受信したコマンドが移動要求コマンドではない場合（ステップＳ４２：Ｎｏ）、つまり、ステップＳ４１で受信したコマンドが情報取得コマンドの場合、送受信部２４１は、半導体記憶装置２０Ｘの状態（スイッチ２３０の状態）を示す状態情報を、応答としてプロセッサ１０に返す（ステップＳ４７）。
【００６５】
次に、図９を用いて、本変形例におけるデータ移動制御部２４３の動作例を説明する。まず、データ移動制御部２４３は、コマンド記憶部２５０が空であるかどうかを確認する（ステップＳ５１）。コマンド記憶部２５０が空の場合（ステップＳ５１：Ｙｅｓ）、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ５２）。
【００６６】
コマンド記憶部２５０が空ではない場合（ステップＳ５１：Ｎｏ）、データ移動制御部２４３は、コマンド記憶部２５０から移動要求コマンドを１つ取り出す（ステップＳ５３）。より具体的には、データ移動制御部２４３は、コマンド記憶部２５０に記憶された１以上の移動要求コマンドの中から先頭の移動要求コマンドを取り出す。
【００６７】
ステップＳ５３で取り出した移動要求コマンドが退避コマンドの場合（ステップＳ５４：Ｙｅｓ）、データ移動制御部２４３は、対応情報管理部２４２に対して、空き領域識別情報に対応付けられた領域識別情報の特定を依頼する（ステップＳ５５）。この依頼を受けた対応情報管理部２４２は、対応情報を参照して、空き領域識別情報に対応付けられた領域識別情報を特定し、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ５６）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に対して、退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動する（ステップＳ５７）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して、対応情報の更新を依頼する（ステップＳ５８）。この依頼を受けた対応情報管理部２４２は、空き領域として特定した第２のメモリ２２０の領域を識別する領域識別情報に対して、退避コマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。その後は、ステップＳ５１以降の処理が繰り返される。
【００６８】
一方、ステップＳ５３で取り出した移動要求コマンドが復帰コマンドの場合（ステップＳ５４：Ｎｏ）、データ移動制御部２４３は、対応情報管理部２４２に対して、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた領域識別情報の特定を依頼する（ステップＳ５９）。この依頼を受けた対応情報管理部２４２は、対応情報を参照して、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた領域識別情報を特定し、その特定した領域識別情報をデータ移動制御部２４３へ通知する。この通知を受けたデータ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御し（ステップＳ６０）、対応情報管理部２４２から通知された領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動する（ステップＳ６１）。そして、データ移動制御部２４３は、対応情報管理部２４２に対して、対応情報の更新を依頼する（ステップＳ６２）。この依頼を受けた対応情報管理部２４２は、復帰コマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられていた領域識別情報に対して、空き領域識別情報を対応付けて対応情報を更新する。その後は、ステップＳ５１以降の処理が繰り返される。なお、本変形例では、キュー（コマンド記憶部２５０）に保存されたコマンドを到着順に処理していたが、全ての退避と復帰が終了した時点での第１のメモリ２１０の内容が同じであれば、キュー内のコマンドの実行順序を入れ替えてもよい。
【００６９】
（第２の実施形態）
次に、第２の実施形態について説明する。上述の第１の実施形態と共通する部分については適宜に説明を省略する。本実施形態では、退避先の第２のメモリ２２０の領域をプロセッサ１０上のＯＳが管理する点で上述の第１の実施形態と相違する。図１０に示すように、本実施形態の制御部２４０は、上述の対応情報管理部２４２を備えていない点で上述の第１の実施形態と相違する。
【００７０】
本実施形態では、第２のメモリ２２０の領域をＯＳが管理するため、最初の移動要求コマンド（退避コマンドまたは復帰コマンド）を送る前に、混載型の半導体記憶装置２０Ｘから第２のメモリ２２０に関する情報を取得する必要があるため、プロセッサ１０から半導体記憶装置２０Ｘへ送られるコマンドとして、第２のメモリ２２０に関する情報の取得を要求する第２のメモリ情報取得コマンドがさらに追加される。
【００７１】
第２のメモリ情報取得コマンドにより要求される情報（半導体記憶装置２０Ｘに対して要求される情報）の中には、第２のメモリ２２０の容量やデータ書き込みの単位などの情報、書き込み場所(アドレス)を指定するためのフォーマットを示す情報などが含まれる。例えば第２のメモリ２２０がＮＡＮＤ  Ｆｌａｓｈメモリで構成され、第２のメモリ２２０の領域を指定する方法が、物理的な情報により指定される方法である場合には、第２のメモリ情報取得コマンドにより要求される情報の中には、チップ数、ブロック数、ページサイズ、ブロックあたりのページ数、などを示す情報が含まれる。また、例えば第２のメモリ２２０の領域を指定する方法が、論理的な情報より指定される方法である場合には、第２のメモリ情報取得コマンドにより要求される情報の中には、ページサイズと総ページ数などを示す情報が含まれる。
【００７２】
さらに、第２のメモリ情報取得コマンドにより要求される情報の中には、混載型の半導体記憶装置２０ＸとＯＳの間で、第２のメモリ２２０の領域を指定する方法が論理的な情報による指定方法であるか物理的な情報により指定方法であるか、物理的な情報による指定方法である場合には、第２のメモリ２２０の種別を示す情報（第２のメモリ２２０がＮＡＮＤ  Ｆｌａｓｈメモリなのか、ＮＯＲ  Ｆｌａｓｈメモリなのか、ＲｅＲＡＭなのかといったメモリの種別を示す情報）、アドレッシング方法、アドレッシングのビット幅、などの情報が含まれてもよい。
【００７３】
本実施形態では、退避コマンドおよび復帰コマンドの各々は、第１のメモリ２１０に含まれる複数の領域のうちの何れかの領域を識別する第１パラメータと、第２のメモリ２２０に含まれる複数の領域のうちの何れかの領域を識別する第３パラメータとを有する。
【００７４】
そして、本実施形態における制御部２４０は、退避コマンドを受け付けた場合は、該退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを、該退避コマンドの第３パラメータで識別される第２のメモリ２２０の領域へ移動する。また、制御部２４０は、復帰コマンドを受け付けた場合は、該復帰コマンドの第３パラメータで識別される第２のメモリ２２０の領域に記憶されたデータを、該復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域へ移動する。
【００７５】
次に、図１１を用いて、プロセッサ１０からのコマンドを受信した場合の制御部２４０の動作例を説明する。説明の便宜上、ここでは、プロセッサ１０から受信するコマンドは、退避コマンド、復帰コマンド、情報取得コマンドおよび第２のメモリ情報取得コマンドの４種類である場合を例に挙げて説明する。
【００７６】
まず、送受信部２４１は、プロセッサ１０からコマンドを受信する（ステップＳ７１）。ステップＳ７１で受信したコマンドが退避コマンドの場合（ステップＳ７２：Ｙｅｓ）、送受信部２４１は、退避コマンドを受信したことを示す情報を、応答としてプロセッサ１０へ返す（ステップＳ７３）。次に、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７４）。次に、データ移動制御部２４３は、送受信部２４１で受信した退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを、該退避コマンドの第３パラメータで識別される第２のメモリ２２０の領域へ移動する（ステップＳ７５）。データの移動が完了すると、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７６）。
【００７７】
また、上述のステップＳ７１で受信したコマンドが復帰コマンドの場合（ステップＳ７１：Ｎｏ、ステップＳ７７：Ｙｅｓ）、送受信部２４１は、復帰コマンドを受信したことを示す情報を、応答としてプロセッサ１０へ返す（ステップＳ７８）。次に、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７９）。次に、データ移動制御部２４３は、送受信部２４１で受信した復帰コマンドの第３パラメータで識別される第２のメモリ２２０の領域に記憶されたデータを、該復帰コマンドの第１パラメータで識別される第１のメモリ２１０の領域へ移動する（ステップＳ８０）。データの移動が完了すると、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ８１）。
【００７８】
また、上述のステップＳ７１で受信したコマンドが情報取得コマンドの場合（ステップＳ７１：Ｎｏ、ステップＳ７７：Ｎｏ、ステップＳ８２：Ｙｅｓ）、送受信部２４１は、現在のスイッチ２３０の状態（半導体記憶装置２０Ｘの状態）を示す状態情報を、応答としてプロセッサ１０へ返す（ステップＳ８３）。
【００７９】
さらに、上述のステップＳ７１で受信したコマンドが第２のメモリ情報取得コマンドの場合（ステップＳ７１：Ｎｏ、ステップＳ７７：Ｎｏ、ステップＳ８２：Ｎｏ）、送受信部２４１は、第２のメモリ２２０に関する情報を、応答としてプロセッサ１０へ返す（ステップＳ８４）。
【００８０】
次に、図１２を用いて、情報処理装置１全体の動作を具体的に説明する。図１２の例では、説明の便宜上、１つのプロセス（この例では「４９５」を示すプロセスＩＤで識別されるプロセス）に割り当てられたアドレス空間（プロセッサ１０がアクセスするアドレス空間）に含まれる複数のページの割り当て状況のみを表しており、アドレス空間領域識別情報（この例では、プロセスＩＤと、該プロセスＩＤで識別されるプロセスに割り当てられるアドレス空間の領域を識別するアドレスとの組み合わせ）の代わりに、アドレスのみを用いている。以下の説明では、アドレス空間とは、「４９５」を示すプロセスＩＤで識別されるプロセスに割り当てられたアドレス空間を指し、アドレスとは、該アドレス空間に含まれる複数のページの何れかを識別するための情報を指すものとする。
【００８１】
図１２の例では、アドレス変換部１０１の機能により、アドレス空間に含まれる複数のページのうち「０×８００００００」を示すアドレスから始まるページと、「０×８００２０００」を示すアドレスから始まるページは、非混載型の半導体記憶装置２０Ｙに搭載された第１のメモリ２１０に割り当てられ、「０×８００３０００」を示すアドレスから始まるページと、「０×８０１１０００」を示すアドレスから始まるページは、混載型の半導体記憶装置２０Ｘに搭載された第１のメモリ２１０に割り当てられている。
【００８２】
また、この例では、「０×８００４０００」を示すアドレスから始まるページ、「０×８０１３０００」を示すアドレスから始まるページ、および、「０×８００１０００」を示すアドレスから始まるページは、混載型の半導体記憶装置２０Ｘに搭載された第２のメモリ２２０に割り当てられている（退避されている）。この退避状態を管理するのが、図１３に示す対応情報であり、「４９５」を示すプロセスＩＤと、該プロセスＩＤで識別されるプロセスに割り当てられたアドレス空間に含まれる複数のページのうちの何れかのページの先頭の番地を示すアドレスとの組み合わせ（アドレス空間領域識別情報に相当）と、第２のメモリ２２０に含まれる複数の領域のうちの何れかを識別する論理ページ番号（第２のメモリ２２０の領域識別情報の一例）とが対応付けられた情報である。なお、図１３の例では、「−１」を示すプロセスＩＤと、「０×ＦＦＦＦＦＦＦ」を示す仮想アドレスとの組み合わせは、空き領域識別情報に相当し、該組み合わせに対応付けられている論理ページ番号（図１３の例では「４」）で識別される第２のメモリ２２０の領域は空き領域であることを示す。図１３に示す対応情報は、プロセッサ１０上のＯＳによって管理される。
【００８３】
なお、この例では、「０×８０１００００」を示すアドレスから始まるページ、「０×８０１２０００」を示すアドレスから始まるページ、図示されていないその他のページは未使用ページであり、何れのメモリにも割り当てられていない。
【００８４】
ＯＳが起動され仮想記憶機構を動作させる時に、この対応情報も初期化する必要があるが、初期化の際には、混載型の半導体記憶装置２０Ｘに搭載された第２のメモリ２２０の種類や容量、アドレス指定の仕方により、対応情報で管理する情報やエントリ数などが定まる。このため、まずＯＳは、混載型の半導体記憶装置２０Ｘに対して、第２のメモリ情報取得コマンドを発行する。ここでは、ＯＳは、第２のメモリ情報取得コマンドに対する応答として、第２のメモリ２２０の領域指定は、論理ページで指定され、エントリ数が４であることを示す情報を混載型の半導体記憶装置２０Ｘから取得する。ＯＳは、その取得した情報に基づいて、図１３に示す対応情報を構成する。ただし、初期状態の対応情報の中身は空である。
【００８５】
ここで、プロセッサ１０上で動くソフトウェアが、アドレス空間に含まれる複数のページのうち、第２のメモリ２２０に退避された（第２のメモリ２２０に割り当てられた）ページである、「０×８０１３０００」を示すアドレスから始まるページ内のアドレスにアクセスした場合の動作について説明する。この場合、アドレス変換部１０１は、ソフトウェアがアクセスした該アドレスに対応する物理アドレスが存在しないため、プロセッサ１０に対して、ページフォルトの割り込みを発行する。ＯＳは、所定のアルゴリズムにて、第１のメモリ２１０に割り当てられたアドレス空間のページの中から退避可能なページを選択する。ここでは、「０×８００３０００」を示すアドレスから始まるページが退避可能なページとして選択されたと仮定して説明を続ける。
【００８６】
この例では、ＯＳは、退避先となる第２のメモリ２２０の領域を退避コマンドで指定する必要があるので、ＯＳ内で管理している対応情報を参照して、退避先として利用可能な未使用領域（空き領域）を検索する。この例では、ＯＳは、「−１」を示すプロセスＩＤと、「０×ＦＦＦＦＦＦＦ」を示すアドレスとの組み合わせに対応付けられている第２のメモリ２２０の論理ページ番号を探せばよく、図１３の例では、「４」を示す論理ページ番号が選択される。
【００８７】
次に、ＯＳは、「０×８００３０００」を示すアドレスから始まるページを退避するために、混載型の半導体記憶装置２０Ｘに退避コマンドを送る。この退避コマンドのパラメータとして、退避する第１のメモリ２１０の領域を識別する第１パラメータと、退避先の第２のメモリ２２０の領域を識別する第３パラメータとを指定する。退避する第１のメモリ２１０の領域の指定の仕方としては、例えば混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地を指定することができる。このため、この例では、第１のメモリ２１０に含まれる複数の領域のうち、「０×８００３０００」を示すアドレスから始まるページが割り当てられている領域の、混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地として「０×００００」を指定する。また、退避先の第２のメモリ２２０の領域を識別する第３パラメータは、「４」を示す第２のメモリ２２０の論理ページ番号となる。
【００８８】
退避コマンドを受信した混載型の半導体記憶装置２０Ｘは、図１１のフローに従って動作する。すなわち、送受信部２４１は、退避コマンドを受信すると（ステップＳ７２：Ｙｅｓ）、退避コマンドを受信したことを示す情報を、応答としてプロセッサ１０へ返す（ステップＳ７３）。次に、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７４）。次に、データ移動制御部２４３は、送受信部２４１で受信した退避コマンドの第１パラメータが示す「０×００００」を先頭番地とする第１のメモリ２１０の領域に記憶された１ページ分のデータを、該退避コマンドの第３パラメータが示す「４」の論理ページ番号で識別される第２のメモリ２２０の領域へ移動する（ステップＳ７５）。データの移動が完了すると、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７６）。
【００８９】
次に、ＯＳは、ページフォルトを起したアドレスが含まれるページを復帰するために、混載型の半導体記憶装置２０Ｘに復帰コマンドを送る。この復帰コマンドのパラメータとして、復帰先の第１のメモリ２１０の領域を識別する第１パラメータと、退避されている第２のメモリ２２０の領域を識別する第３パラメータとを指定する。復帰先の第１のメモリ２１０の領域は、対応する退避コマンドの第１パラメータで識別される第１のメモリ２１０の領域と同じであるため、混載型の半導体記憶装置２０Ｘ内でのアドレスの先頭番地として「０×００００」を指定する。また、退避されている第２のメモリ２２０の領域を識別する第３パラメータとしては、ページフォルトを起したアドレスが含まれるページに付与された「０×８０１３０００」を示すアドレスに対応付けられた第２のメモリ２２０の論理ページ番号（図１３の例では「２」）を指定する。
【００９０】
復帰コマンドを受信した混載型の半導体記憶装置２０Ｘは、図１１のフローに従って動作する。すなわち、送受信部２４１は、復帰コマンドを受信すると、復帰コマンドを受信したことを示す情報を、応答としてプロセッサ１０へ返す（ステップＳ７８）。次に、データ移動制御部２４３は、第２の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ７９）。次に、データ移動制御部２４３は、送受信部２４１で受信した復帰コマンドの第３パラメータが示す「２」の論理ページ番号で識別される第２のメモリ２２０の領域に記憶された１ページ分のデータを、該復帰コマンドの第１パラメータが示す「０×００００」を先頭番地とする第１のメモリ２１０の領域へ移動する（ステップＳ８０）。データの移動が完了すると、データ移動制御部２４３は、第１の状態に切り替えるようにスイッチ２３０を制御する（ステップＳ８１）。
【００９１】
以上の動作により、ページフォルトを起したソフトウェアは、「０×８０１３０００」を示す仮想アドレスから始まるページ内のアドレスにアクセスすることが可能になり、処理を継続できる。
【００９２】
（第３の実施形態）
次に、第３の実施形態について説明する。上述の各実施形態と共通する部分については適宜に説明を省略する。例えば図１４に示すように、プロセッサ１０に対して、上述の混載型の半導体記憶装置２０Ｘが１つだけ接続される構成では、混載型の半導体記憶装置２０Ｘ内でのデータの移動が行われている間、プロセッサ１０は、混載型の半導体記憶装置２０Ｘにアクセスすることができないため、プロセッサ１０内のキャッシュメモリに記憶されたデータしかアクセスすることができず、動作が大幅に制限される。
【００９３】
そこで、本実施形態では、混載型の半導体記憶装置２０Ｘ内に、第１のメモリ２１０と第２のメモリ２２０の組を複数搭載している。図１５は、一例として、２つの組（Ｐａ、Ｐｂ）を搭載した場合の半導体記憶装置２０Ｘのハードウェア構成を示す図である。図１５の例では、組Ｐａに含まれる第１のメモリ２１０を「第１のメモリ２１０ａ」、該組Ｐａに含まれる第２のメモリ２２０を「第２のメモリ２２０ａ」と表記している。また、組Ｐｂに含まれる第１のメモリ２１０を「第１のメモリ２１０ｂ」、該組Ｐｂに含まれる第２のメモリ２２０を「第２のメモリ２２０ｂ」と表記している。
【００９４】
また、本実施形態では、複数の組と１対１に対応する複数のスイッチ２３０が設けられる。図１５の例では、組Ｐａに対応するスイッチ２３０を「スイッチ２３０ａ」と表記し、組Ｐｂに対応するスイッチ２３０を「スイッチ２３０ｂ」と表記する。スイッチ２３０ａは、第１のメモリ２２０ａとプロセッサ１０とが接続され、かつ、第２のメモリ２２０ａとプロセッサ１０とが接続されない第１の状態（組Ｐａに対応する第１の状態）と、第１のメモリ２１０ａと第２のメモリ２２０ａとが接続され、かつ、プロセッサ１０が、第１のメモリ２１０ａと接続されず、かつ、プロセッサ１０が第２のメモリ２１０ａと接続されない第２の状態（組Ｐａに対応する第２の状態）と、を切り替える。また、スイッチ２３０ｂは、第１のメモリ２２０ｂとプロセッサ１０とが接続され、かつ、第２のメモリ２２０ｂとプロセッサ１０とが接続されない第１の状態（組Ｐｂに対応する第１の状態）と、第１のメモリ２１０ｂと第２のメモリ２２０ｂとが接続され、かつ、プロセッサ１０が、第１のメモリ２１０ｂと接続されず、かつ、プロセッサ１０が第２のメモリ２１０ｂと接続されない第２の状態（組Ｐｂに対応する第２の状態）と、を切り替える。
【００９５】
要するに、何れか１つの第１のメモリ２１０と、何れか１つの第２のメモリ２２０とから構成される複数の組と１対１に対応し、対応する組に含まれる第１のメモリ２１０とプロセッサ１０とが接続され、かつ、該対応する組に含まれる第２のメモリ２２０とプロセッサ１０とが接続されない第１の状態と、該対応する組に含まれる第１のメモリ２１０と該対応する組に含まれる第２のメモリ２２０とが接続され、かつ、プロセッサ１０が、該対応する組に含まれる第１のメモリ２１０と接続されず、かつ、プロセッサ１０が、該対応する組に含まれる第２のメモリ２２０と接続されない第２の状態と、を切り替えるための複数のスイッチが設けられる形態であればよい。
【００９６】
また、本実施形態では、制御部２４０は、プロセッサ１０から、何れかの組に含まれる第１のメモリ２１０と、該何れかの組に含まれる第２のメモリ２２０との間でのデータの移動を要求する移動要求コマンド（退避コマンドまたは復帰コマンド）を受け付けると、第２の状態に切り替えるように、該何れかの組に対応するスイッチを制御し、第１のメモリ２１０と第２のメモリ２２０との間でデータを移動する。より具体的には、移動要求コマンドは、何れかの組に含まれる第１のメモリ２１０に記憶されたデータを、該何れかの組に含まれる第２のメモリ２２０に移動することを要求する第１のコマンド（退避コマンド）と、何れかの組に含まれる第２のメモリ２２０に記憶されたデータを、該何れかの組に含まれる第１のメモリ２１０に移動することを要求する第２のコマンド（復帰コマンド）と、を含む。制御部２４０は、プロセッサから第１のコマンドを受け付けると、第１のコマンドの対象となる組に対応するスイッチ２３０を特定した上で、第２の状態に切り替えるように該スイッチ２３０を制御し、第１のコマンドの対象となる組に含まれる第１のメモリ２１０に記憶されたデータを、第１のコマンドの対象となる組に含まれる第２のメモリ２２０に移動する。また、制御部２４０は、プロセッサ１０から第２のコマンドを受け付けると、第２のコマンドの対象となる組に対応するスイッチ２３０を特定した上で、第２の状態に切り替えるように該スイッチ２３０を制御し、第２のコマンドの対象となる組に含まれる第２のメモリ２２０に記憶されたデータを、第２のコマンドの対象となる組に含まれる第１のメモリ２１０に移動する。具体的な動作内容については、上述の各実施形態と同様に考えることができる。
【００９７】
本実施形態では、複数の第１のメモリ２１０の中で、対応する第２のメモリ２２０との間でのデータ移動でプロセッサ１０からアクセス不能となる第１のメモリ２１０を一部に限定し、その他の第１のメモリ２１０をプロセッサ１０からアクセス可能な状態にすることができるので、一部の第１のメモリ２１０と、対応する第２のメモリ２２０との間でのデータ移動中にも、プロセッサ１０の動作の制限が大幅に緩和される。
【００９８】
なお、本実施形態は、上述の第１の実施形態と組み合わせることもできるし、上述の第２の実施形態と組み合わせることもできる。各実施形態に対応する部分の具体的な内容は上述したとおりである。
【００９９】
例えば上述の第１の実施形態と組み合わせた場合、混載型の半導体記憶装置２０Ｘは、複数の組ごとに、該組に含まれる第２のメモリ２２０に含まれる複数の領域のうちの何れかを識別する領域識別情報と、アドレス空間に含まれる複数の領域のうちの何れかを識別するアドレス空間領域識別情報とが対応付けられた複数の対応情報を記憶する対応情報管理部をさらに備える。第１のコマンド（退避コマンド）および第２のコマンド（復帰コマンド）の各々は、何れかの組に含まれる第１のメモリ２１０に含まれる複数の領域のうちの何れかを識別する第１パラメータと、アドレス空間領域識別情報を示す第２パラメータとを有する。
【０１００】
制御部２４０は、第１のコマンドを受け付けた場合は、該第１のコマンドの対象となる組に含まれる第２のメモリ２２０の空き領域を特定し、その特定した第２のメモリ２２０の空き領域に対して、該第１のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動し、該データの移動先の第２のメモリ２２０の領域を識別する領域識別情報に対して、該第１のコマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。また、第２のコマンドを受け付けた場合は、該第２のコマンドの対象となる組の対応情報を参照して、該第２のコマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた領域識別情報を特定し、その特定した領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、該第２のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動し、該データの移動元の第２のメモリ２２０の領域を空き領域として管理する。
【０１０１】
上述の第１の実施形態と同様に、対応情報に含まれる領域識別情報で識別される第２のメモリ２２０の領域が空き領域の場合、その対応情報は、第２のメモリ２２０の領域識別情報と、空き領域であることを識別する空き領域識別情報とが対応付けられた情報を示す形態であってもよい。この形態において、制御部２４０は、第１のコマンドを受け付けた場合は、該第１のコマンドの対象となる組の対応情報を用いて、空き領域識別情報に対応付けられた領域識別情報を特定し、その特定した領域識別情報で識別される第２のメモリ２２０の領域に対して、該第１のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に記憶されたデータを移動し、該データの移動先の第２のメモリ２２０の領域を識別する領域識別情報に対して、該第１のコマンドの第２パラメータであるアドレス空間領域識別情報を対応付けて対応情報を更新する。また、第２のコマンドを受け付けた場合は、該第２のコマンドの対象となる組の対応情報を参照して、該第２のコマンドの第２パラメータであるアドレス空間領域識別情報に対応付けられた領域識別情報を特定し、その特定した領域識別情報で識別される第２のメモリ２２０の領域に記憶されたデータを、該第２のコマンドの第１パラメータで識別される第１のメモリ２１０の領域に移動し、該データの移動元の第２のメモリ２２０の領域を識別する領域識別情報に対して、空き領域識別情報を対応付けて対応情報を更新する。
【０１０２】
また、例えば上述の第２の実施形態と組み合わせた場合、上述の第２の実施形態と同様に、対応情報の管理は不要となる。この場合、第１のコマンドおよび第２のコマンドの各々は、何れかの組に含まれる第１のメモリ２１０に含まれる複数の領域のうちの何れかの領域を識別する第１パラメータと、該何れかの組に含まれる第２のメモリ２２０に含まれる複数の領域のうちの何れかの領域を識別する第３パラメータとを有する。
【０１０３】
制御部２４０は、第１のコマンドを受け付けた場合は、該第１のコマンドの第１パラメータで識別される第１のメモリの領域に記憶されたデータを、該第１のコマンドの第３パラメータで識別される第２のメモリの領域へ移動する。また、第２のコマンドを受け付けた場合は、該第２のコマンドの第３パラメータで識別される第２のメモリ２２０の領域に記憶されたデータを、該第２のコマンドの第１パラメータで識別される第１のメモリ２１０の領域へ移動する。
【０１０４】
ただし、上述の第２の実施形態と組み合わせた場合、プロセッサ１０は、移動要求コマンドを発行する前に、混載型の半導体記憶装置２０Ｘにおける組の構成を把握しておく必要がある。そのため、プロセッサ１０から半導体記憶装置２０Ｘへ送られるコマンドとして、組の構成に関する情報の取得を要求する組構成情報取得コマンドがさらに追加される。送受信部２４１は、プロセッサ１０から組構成情報取得コマンドを受信すると、組の構成に関する情報を、応答としてプロセッサ１０へ返す。
【０１０５】
（第３の実施形態の変形例）
例えば図１６に示すように、１つの第２のメモリ２２０を、複数の第１のメモリ２１０の退避先として共有する形態であってもよい。図１６の例では、複数の第１のメモリ２１０と１対１に対応する複数のスイッチ２３０が設けられる。要するに、第１のメモリ２１０とプロセッサとが接続され、かつ、第２のメモリ２２０とプロセッサ１０とが接続されない第１の状態と、第１のメモリ２１０と第２のメモリ２２０とが接続され、かつ、プロセッサ１０が第１のメモリ２１０と接続されず、かつ、プロセッサ１０が第２のメモリ２２０と接続されない第２の状態とを第１のメモリ２１０ごとに切り替えるために、それぞれが第１のメモリ２１０ごとに設けられる複数のスイッチ２３０が設けられる形態であればよい。
【０１０６】
この例では、制御部２４０は、プロセッサ１０から、何れかの第１のメモリ２１０と、第２のメモリ２２０との間でのデータの移動を要求する移動要求コマンドを受け付けると、第２の状態に切り替えるように、該移動要求コマンドの対象となる第１のメモリ２１０に対応するスイッチ２３０を制御し、第１のメモリ２１０と第２のメモリ２２０との間でデータを移動する。より具体的には、移動要求コマンドは、何れかの第１のメモリ２１０に記憶されたデータを、第２のメモリ２２０に移動することを要求する第１のコマンド（退避コマンド）と、第２のメモリ２２０に記憶されたデータを、何れかの第１のメモリ２１０に移動することを要求する第２のコマンド（復帰コマンド）と、を含む。制御部２４０は、プロセッサ１０から第１のコマンドを受け付けると、該第１のコマンドの対象となる第１のメモリ２１０に対応するスイッチ２３０を特定した上で、第２の状態に切り替えるように該スイッチ２３０を制御し、第１のメモリ２１０に記憶されたデータを、第２のメモリ２２０に移動する。また、プロセッサ１０から第２のコマンドを受け付けると、該第２のコマンドの対象となる第１のメモリ２１０に対応するスイッチ２３０を特定した上で、第２の状態に切り替えるように該スイッチ２３０を制御し、第２のメモリ２２０に記憶されたデータを第１のメモリに移動する。
【０１０７】
なお、本変形例は、上述の第１の実施形態と組み合わせることもできるし、上述の第２の実施形態と組み合わせることもできる。例えば上述の第１の実施形態と組み合わせた場合、第１のコマンド（退避コマンド）および第２のコマンド（復帰コマンド）の各々は、何れかの第１のメモリ２１０に含まれる複数の領域のうちの何れかを識別する第１パラメータと、アドレス空間に含まれる複数の領域のうちの何れかを識別するアドレス空間領域識別情報を示す第２パラメータとを有する。制御部２４０の具体的な動作内容は、上述の第１の実施形態と同様である。
【０１０８】
また、例えば上述の第２の実施形態と組み合わせた場合、第１のコマンド（退避コマンド）および第２のコマンド（復帰コマンド）の各々は、何れかの第１のメモリ２１０に含まれる複数の領域のうちの何れかの領域を識別する第１パラメータと、第２のメモリ２２０に含まれる複数の領域のうちの何れかの領域を識別する第３パラメータとを有する。制御部２４０の具体的な動作内容は、上述の第１の実施形態と同様である。
【０１０９】
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１１０】
例えば、巨大なデータを扱うデータ処理アプリケーションや、インメモリデータベースなどのアプリケーションプログラムでは、主記憶のデータの退避と復帰をＯＳに任せるのではなく、アプリケーションプログラム自身が退避すべきデータ領域を判断し、退避や復帰のコマンドを直接発行できた方が、データの入れ替え回数が減って高速化できる場合がある。そこで、アプリケーションが直接、混載型の半導体記憶装置２０Ｘに対して移動要求コマンドを送れるように、アプリケーションが移動要求コマンドを発行するためのシステムコールをＯＳが提供する形態であってもよい。この場合、ＯＳの仮想アドレスと物理アドレスの変換機構は、混載型の半導体記憶装置２０Ｘ内のデータの退避と復帰に関与しないので、第１のメモリ２１０上に配置されたデータが、アプリケーションプログラムが管理するデータ全体の中の、どの部分に対応しているかのマッピングはアプリケーションプログラム内で管理されることになる。
【０１１１】
なお、上述した各実施形態および各変形例は任意に組み合わせることができる。
【符号の説明】
【０１１２】
１      情報処理装置
１０    プロセッサ
２０    半導体記憶装置
２１０  第１のメモリ
２２０  第２のメモリ
２３０  スイッチ
２４０  制御部
２４１  送受信部
２４２  対応情報管理部
２４３  データ移動制御部
２５０  コマンド記憶部
【図１】
2019016377.tif 000003
【図２】
2019016377.tif 000004
【図３】
2019016377.tif 000005
【図４】
2019016377.tif 000006
【図５】
2019016377.tif 000007
【図６】
2019016377.tif 000008
【図７】
2019016377.tif 000009
【図８】
2019016377.tif 000010
【図９】
2019016377.tif 000011
【図１０】
2019016377.tif 000012
【図１１】
2019016377.tif 000013
【図１２】
2019016377.tif 000014
【図１３】
2019016377.tif 000015
【図１４】
2019016377.tif 000016
【図１５】
2019016377.tif 000017
【図１６】
2019016377.tif 000018