(57)【要約】【課題】フラッシュメモリをスワップ領域として使用するコンピュータシテテムにおいてスワップインの高速化を目的とする。【解決手段】スワップアウトでは、複数の不揮発性メモリバンク２２〜２５のそれぞれに同一のスワップデータを記録して多重化する。スワップインでは、スワップデータをページ単位で不揮発性メモリバンク２２〜２５から巡回的に読み出す。この読み出しにおいて、不揮発性メモリバンク２２〜２５のいずれかの読み出しを完了する前に、別の不揮発性メモリバンクに対して読み出しを開始する。これにより、不揮発性メモリバンク２２〜２５から、ページ単位で並列的にスワップデータを読み出す。【選択図】図２
2009282603.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールであって、
メモリバスと、
複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、
前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの書き込みまたは読み出しが完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの書き込みまたは読み出しを開始する読み書き制御部と、を具備する不揮発性記憶モジュール。
【請求項２】
前記不揮発性メモリバンクまたは前記読み書き制御部は、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を有しており、
前記読み書き制御部は、前記コンピュータ装置から書き込みまたは読み出しコマンドを受信する前に、前記メモリ構成情報を前記コンピュータ装置に送信する請求項１に記載の不揮発性記憶モジュール。
【請求項３】
請求項１に記載の不揮発性記憶モジュールをスワップ領域として使用するコンピュータ装置であって、
スワップデータの多重化数を保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を具備するコンピュータ装置。
【請求項４】
請求項２に記載の不揮発性記憶モジュールをスワップ領域として使用するコンピュータ装置であって、
前記不揮発性記憶モジュールから、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を取得し、少なくとも前記メモリバスの数及び前記不揮発性メモリバンクの数に基づいてスワップデータの多重化数を決定して保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を具備するコンピュータ装置。
【請求項５】
コンピュータ装置と、前記コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールと、を具備するコンピュータシステムであって、
前記不揮発性記憶モジュールは、
メモリバスと、
複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、
前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの処理が完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの処理を開始する読み書き制御部と、を備え、
前記コンピュータ装置は、
スワップデータの多重化数を保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを仮想ページ単位で異なる不揮発性メモリバンクから読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を備えるコンピュータシステム。
【請求項６】
コンピュータ装置と、前記コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールと、を具備するコンピュータシステムであって、
前記不揮発性記憶モジュールは、
メモリバスと、
複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、
前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの処理が完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの処理を開始する読み書き制御部と、を備えており、
前記不揮発性メモリバンクまたは前記読み書き制御部は、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を有しており、
前記読み書き制御部は、前記コンピュータ装置から書き込みまたは読み出しコマンドを受信する前に、前記メモリ構成情報を前記コンピュータ装置に送信し、
前記コンピュータ装置は、
前記不揮発性記憶モジュールから、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を取得し、少なくとも前記メモリバスの数及び前記不揮発性メモリバンクの数に基づいてスワップデータの多重化数を決定して保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を備えるコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータなどのコンピュータシステムの記憶媒体として使用される不揮発性記憶モジュール、不揮発性記憶モジュールをデータのスワップ領域として使用するコンピュータ装置、及び不揮発性記憶モジュールとコンピュータ装置を含むコンピュータシステムに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備え、着脱可能な記憶装置として用いられる不揮発性記憶モジュールがある。近年、この不揮発性記憶モジュールに対する需要が、半導体メモリカードを中心に高まっている。半導体メモリカードは、ハードディスクや光ディスクなどと比較して高価格である。しかし半導体メモリカードは、小型、軽量、耐震性、取り扱いの簡便さ、などのメリットを有しており、デジタルスチルカメラやパーソナルコンピュータ（以下、ＰＣという）などの機器に用いられる記録媒体として、その需要が大きくなっている。
【０００３】
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するデータ読み書き部を有している。データ読み書き部は、ＰＣなどの装置からの読み書きコマンドに応じて、フラッシュメモリに対する読み書き制御を行う。また半導体メモリカードには、非着脱型の不揮発性記憶モジュールとして、デジタルスチルカメラ本体内に組み込まれたもの、あるいはハードディスクの代替としてＰＣ本体内に組み込まれたものもある。
【０００４】
このような半導体メモリカードをＰＣのスワップ領域として利用することで、ハードディスクに対するランダムアクセス速度を数倍に向上させるようなシステムが実現している。さらにハードディスクの動作を停止することによってバッテリー動作時間を向上させたコンピュータシステムが実用化されている。
【０００５】
図１は、前述した従来のコンピュータシステムの構成を示す図である。このコンピュータシステムでは、コンピュータ装置１００が不揮発性記憶モジュール１１０を装着して使用している。不揮発性記憶モジュール１１０は、ハードディスクよりもランダムアクセス性の高いフラッシュメモリである不揮発性メモリバンク１１２を搭載している。不揮発性メモリバンク１１２は代表的な多値ＮＡＮＤフラッシュメモリであり、その物理ブロック（消去単位）をＰＢ０、ＰＢ１・・・、ページ（読み書き単位）をＰ０、Ｐ１・・・とする。
【０００６】
例えばアプリケーションＡ〜Ｃを実行する場合、ＣＰＵ部１０１はハードディスク１０３からアプリケーションＡ〜Ｃを読み出して、ＲＡＭで構成されたメインメモリ１０２に一旦常駐させる。この状態でＣＰＵ部１０１は、各アプリケーションを実行する。これに続いてアプリケーションＤを実行する場合、ＣＰＵ部１０１は、同様にしてアプリケーションＤをメインメモリ１０２に常駐させるが、メインメモリ１０２の容量が足りずにアプリケーションＡ〜Ｄの全てを常駐させることができない場合がある。この場合は、例えばアプリケーションＡを一旦ハードディスク１０３と不揮発性記憶モジュール１０４に退避（以下、スワップアウトという）させ、アプリケーションＤをメインメモリ１０２に常駐させる。図１は、この状態を示している。
【０００７】
その後、再度アプリケーションＡを実行する場合は、不揮発性記憶モジュール１１０からアプリケーションＡをメインメモリ１０２に読み出す（以下、スワップインという）。このとき不揮発性記憶モジュール１１０はハードディスクよりもランダムアクセス性の高いフラッシュメモリ（不揮発性メモリバンク１１２）を搭載しているので、高速にスワップインすることができる。
【０００８】
不揮発性記憶モジュール１１０がコンピュータ装置１００から外されていた場合、不揮発性記憶モジュール１１０内のアプリケーションＡをスワップインすることができない。その場合でもアプリケーションＡのスワップインが可能となるように、ハードディスク１０３にもアプリケーションＡをスワップアウトしておく。しかしハードディスク１０３からスワップインする場合、不揮発性記憶モジュール１１０からのスワップインのような速度向上を望むことはできない。
【０００９】
このようなスワップ処理は、ＣＰＵ部１０１内のアドレス管理部１０４が用いる仮想アドレスを物理アドレスへ変換する処理を含んでいる。アドレス管理部１０４の管理単位は、通常４ｋＢｙｔｅ（Ｂ）である。この管理単位は一般的にページと言われているが、不揮発性メモリバンク１１２の読み書き単位であるページと同じ名称であるので、アドレス管理部１０４の管理単位を、便宜上仮想ページという。
【００１０】
前述したスワップインは、仮想ページである４ｋＢ単位でランダムに行われ、スワップアウトは５１２ｋＢ単位でランダムに行われる。不揮発性記憶モジュール１１０をスワップ領域として使用した場合、高速なスワップインを実現するために不揮発性記憶モジュール１１０に要求される速度条件は、一般的に下記のとおりである。
＜速度条件＞
・４ｋＢのランダムリードが２．５ＭＢ／秒以上
・５１２ｋＢのランダムライトが１．７５ＭＢ／秒以上
【００１１】
スワップアウトにおける５１２ｋＢ単位のランダムライトでは、その書き込み速度がハードディスク１０３の性能に律速する。しかし、スワップインにおける４ｋＢのランダムリードではその読み出し速度がハードディスク１０３の性能に律速しないので、ランダムリードでの読み出し速度を向上させることが、コンピュータシステムの性能を向上させるポイントとなる。
【００１２】
図１において、例えば以下の前提条件でアプリケーションＡをスワップアウト及びスワップインするときの速度は、式（１）及び式（２）に基づいて求められ、それぞれ４．５ＭＢ／秒、２６ＭＢ／秒となる。
スワップアウト速度＝４ｋＢ／(ＴＷ＋ＴＴ)＝４．５ＭＢ／秒・・・（１）
スワップイン速度＝４ｋＢ／(ＴＲ＋ＴＴ)＝２６ＭＢ／秒・・・（２）
＜前提条件＞
・アプリケーションＡのサイズ：２ＭＢ
・物理ブロックのサイズ：５１２ｋＢ
・ページサイズ：４ｋＢ
・読み出し時間ＴＲ：５０μ秒
・書込時間ＴＷ：８００μ秒
・転送時間ＴＴ：１０２．４μ秒
読み出し時間ＴＲは、ページデータを不揮発性メモリバンク１１２内部のキャッシュＲＡＭに読み出すのに要する時間である。書込時間ＴＷは、ページデータをキャッシュＲＡＭからページに書き込むのに要する時間である。転送時間ＴＴは、読み書き制御部１１１が、ページデータをキャッシュＲＡＭからコンピュータ装置１００に転送するのに要する時間である。転送時間ＴＴの値は、不揮発性メモリバンク１１２のメモリバス幅１Ｂあたり２５ｎ秒であり、４０ＭＨｚの転送クロックで４ｋＢ分を転送する場合の転送時間となる。以上のように、前述した前提条件におけるスワップアウト速度とスワップイン速度はともに、前述した速度条件を満足するものとなっている。
【００１３】
以上のようなスワップイン及びスワップアウトに関連する技術が、特許文献１及び特許文献２に開示されている。
【特許文献１】特開２００４−３８５４６号公報
【特許文献２】特許第３５６８１１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
多値化などによりフラッシュメモリが大容量化すると、読み出し時間ＴＲや書込時間ＴＷが長くなり、スワップインの速度は低下する。このことは、フラッシュメモリを搭載した不揮発性記憶モジュールを用いてシステムを高速化することが、将来的に困難になることを示唆している。
【００１５】
そこで本発明は、従来よりもスワップインの速度を高速化する不揮発性記憶モジュール、コンピュータ装置、及びコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明による不揮発性記憶モジュールは、コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールであって、メモリバスと、複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの書き込みまたは読み出しが完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの書き込みまたは読み出しを開始する読み書き制御部と、を具備するものである。
【００１７】
ここで前記不揮発性メモリバンクまたは前記読み書き制御部は、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を有しており、前記読み書き制御部は、前記コンピュータ装置から書き込みまたは読み出しコマンドを受信する前に、前記メモリ構成情報を前記コンピュータ装置に送信するようにしてもよい。
【００１８】
本発明によるコンピュータ装置は、前述の不揮発性記憶モジュールをスワップ領域として使用するコンピュータ装置であって、スワップデータの多重化数を保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を具備するものである。
【００１９】
本発明によるコンピュータ装置は、前述の不揮発性記憶モジュールをスワップ領域として使用するコンピュータ装置であって、前記不揮発性記憶モジュールから、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を取得し、少なくとも前記メモリバスの数及び前記不揮発性メモリバンクの数に基づいてスワップデータの多重化数を決定して保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を具備するものである。
【００２０】
本発明によるコンピュータシステムは、コンピュータ装置と、前記コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールと、を具備するコンピュータシステムであって、前記不揮発性記憶モジュールは、メモリバスと、複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの処理が完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの処理を開始する読み書き制御部と、を備え、前記コンピュータ装置は、スワップデータの多重化数を保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを仮想ページ単位で異なる不揮発性メモリバンクから読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を備えるものである。
【００２１】
本発明によるコンピュータシステムは、コンピュータ装置と、前記コンピュータ装置が用いるスワップ領域を含む不揮発性記憶モジュールと、を具備するコンピュータシステムであって、前記不揮発性記憶モジュールは、メモリバスと、複数のページからなる物理ブロックを有する複数の不揮発性メモリバンクと、前記コンピュータ装置から受信した複数の書き込みまたは読み出しのコマンドを一時保持するレジスタを有し、前記レジスタに一時保持された前記コマンドを実行する際に、前記１つのコマンド基づく不揮発性メモリバンクへの処理が完了する前に、前記次のコマンドに基づく別の不揮発性メモリバンクへの処理を開始する読み書き制御部と、を備えており、前記不揮発性メモリバンクまたは前記読み書き制御部は、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を有しており、前記読み書き制御部は、前記コンピュータ装置から書き込みまたは読み出しコマンドを受信する前に、前記メモリ構成情報を前記コンピュータ装置に送信し、前記コンピュータ装置は、前記不揮発性記憶モジュールから、少なくともメモリバスの数及び不揮発性メモリバンクの数を含むメモリ構成情報を取得し、少なくとも前記メモリバスの数及び前記不揮発性メモリバンクの数に基づいてスワップデータの多重化数を決定して保持し、前記多重化数と同数のスワップデータを前記不揮発性モジュールの各不揮発性メモリバンクに１つずつ書き込むように、前記コンピュータ装置内で用いられる仮想アドレスと前記不揮発性記憶モジュール内で用いられる物理アドレスとの対応を決定し、前記各不揮発性メモリバンクに書き込まれた同一のスワップデータを異なる不揮発性メモリバンクから仮想ページ単位で読み出すように、前記仮想アドレスと前記物理アドレスとの対応を決定し、さらに仮想アドレスとの対応が決定された前記物理アドレスを含む書き込みコマンド及び読み出しコマンドを前記不揮発性記憶モジュールに出力する多重化部を備えるものである。
【発明の効果】
【００２２】
本発明によれば、複数の不揮発性メモリバンクそれぞれに同一のスワップデータを記録して多重化しておき、スワップデータを部分的かつ並列的に複数の不揮発性メモリバンクから読み出すようにしたので、スワップインに要する時間を短くすることができる。
【発明を実施するための最良の形態】
【００２３】
（第１の実施の形態）
図２は、本発明の実施の形態におけるコンピュータシステムを示すブロック図である。コンピュータシステムは、コンピュータ装置１及び不揮発性記憶モジュール２を有している。
【００２４】
コンピュータ装置１は、ＣＰＵ部１０、メインメモリ１１、及びハードディスク１２を有しており、ＣＰＵ部１０は、アドレス管理部１３を有する。
【００２５】
メインメモリ１１は、ＲＡＭで構成されており、ユーザが起動したアプリケーションのデータなどを一時的に保持するものである。ハードディスク１２は、コンピュータ装置１で使用するアプリケーションなどを格納する記憶装置である。
【００２６】
アドレス管理部１３は、多重化部１４を有しており、コンピュータ装置１内でのデータ割り当てに用いる仮想アドレス（ＶＡ）によって、データを管理するものである。
【００２７】
多重化部１４は、不揮発性記憶モジュール２から受け取ったメモリ構成情報から、スワップデータを多重化させる数を決定するものである。また多重化部１４は、スワップアウト及びスワップインにおける仮想アドレスと物理アドレス（ＰＡ）の対応付けをし、物理アドレスを含む書き込みコマンド及び読み出しコマンドをコンピュータ装置１に送信するものである。
【００２８】
不揮発性記憶モジュール２は、メモリバス２０ａ〜２０ｄ、読み書き制御部２１、及び複数の不揮発性メモリバンク２２〜２５を有する。
【００２９】
メモリバス２０ａ〜２０ｄは、不揮発性メモリバンク２２〜２５を、それぞれ読み書き制御部２１に接続するものである。
【００３０】
読み書き制御部２１はレジスタ２６を有するとともに、不揮発性記憶モジュール２のメモリ構成情報を有するものである。レジスタ２６は、コンピュータ装置１からの書き込みコマンドや読み出しコマンドを、少なくともメモリバスの数だけ一時保持するものである。本実施の形態においてレジスタ２６は、メモリバスと同数の４つのコマンドを、先入れ先出し方式で一時保持する４ステージのレジスタである。
【００３１】
複数の不揮発性メモリバンク２２〜２５は、データの消去単位である物理ブロックをそれぞれ複数有している。図２においてＰＢ０、ＰＢ１等は物理ブロックを示しており、そのサイズは例えば５１２ｋＢである。各物理ブロックは、データの読み出し単位である物理ページを複数有している。図２においてＰ０〜Ｐ１２７は物理ページを示しており、そのサイズは例えば４ｋＢである。本実施の形態において、不揮発性メモリバンク２２〜２５に、それぞれバンクＢＮ０〜４の番号を付している。
【００３２】
図３は、不揮発性記憶モジュール２のメモリ構成情報を示す図である。メモリ構成情報は、不揮発性記憶モジュール２のメモリバスの数、１つのメモリバスに接続するメモリバンクの数、物理ページのサイズ、１つの物理ブロックが有するページ数、読み出し時間ＴＲ、及び転送時間ＴＴを示している。読み出し時間ＴＲは、物理ページからキャッシュＲＡＭへの読み出しに要する時間、転送時間ＴＴは、４ｋＢのデータのキャッシュＲＡＭからの転送に要する時間である。
【００３３】
なおメモリ構成情報は、読み書き制御部２１に限らず、不揮発性メモリバンク２２〜２５のいずれかの領域が記憶していてもよい。但し、不揮発性メモリバンク２２〜２５のいずれかの領域に記憶する場合は、コンピュータ装置１によって書き換えられない領域に記憶するのが望ましい。
【００３４】
次に、仮想アドレスと、不揮発性記憶モジュール２で用いられる物理アドレスとの関係を説明する。図４は、仮想アドレスと物理アドレスとの関係を示す説明図である。仮想アドレスにおいて、不揮発性記憶モジュール２のスワップ領域に割り当てられるアドレスは、０ｘ７００００〜０ｘ７ＦＦＦＦの２５６ＭＢ分である。仮想アドレスの単位は、前述した４ｋＢの仮想ページとする。なお０ｘは１６進数を表す記号である。
【００３５】
図４では、仮想アドレス０ｘ７００００〜０ｘ７ＦＦＦＦの２５６ＭＢの一部に２ＭＢのデータが割り当てられており、各仮想アドレスの物理アドレスへの対応付けを示している。
【００３６】
図５は、物理アドレスのビットフォーマットを示す図である。ビットｂ１及びｂ０はバンクＢＮを示すビットであり、ビットｂ１７〜ｂ２は仮想アドレスの下１６ビットである。例えばビットｂ１及びｂ０を共に０とすると、バンクＢＮの値に０を指定したことになり、バンクＢＮ０の不揮発性メモリバンク２２をデータ読み書きの対象メモリバンクとして指定できる。
【００３７】
複数の物理アドレスを指定する場合、ビットｂ１７〜ｂ２にはランダムな仮想アドレスが対応するが、ビットｂ１〜ｂ０で示すバンクＢＮの値０〜３を巡回的に繰り返し指定することにより、読み書きする不揮発性メモリバンクを分散することができる。
【００３８】
なお書き込みにおいて多重化部１４は、仮想アドレスを５１２ｋＢ毎にランダムに指定し、それに対応して仮想アドレスの下１６ビットを物理アドレスのビットｂ１７〜ｂ２に設定する。読み出しにおいて多重化部１４は、仮想アドレスを４ｋＢ毎にランダムに指定し、それに対応して仮想アドレスの下１６ビットを物理アドレスのｂ１７〜ｂ２に設定する。
【００３９】
以上のように構成された、本実施の形態のコンピュータシステムの動作について説明する。以下には、アプリケーションＡのスワップアウト及びスワップインに関わる処理について説明する。
【００４０】
＜コンピュータ装置１の処理＞
図６Ａ及び図６Ｂは、コンピュータ装置１のＣＰＵ部１０の処理を示すフローチャートである。ＣＰＵ部１０は、１つめのアプリケーションＡの実行指示に先立って、不揮発性メモリモジュールからメモリ構成情報を取得する（Ｓ１）。
【００４１】
メモリ構成情報の取得後、ＣＰＵ部１０の多重化部１４は、同一のアプリケーションデータをスワップアウトする不揮発性メモリバンクの数である多重化数を、メモリ構成情報に基づいて決定する。この多重化数は、以下の式（３）を実行することによって求められる。
多重化数＝メモリバス数×１メモリバス当たりのメモリバンク数＝４  ・・・（３）
本実施の形態では、メモリバス数は４、かつメモリバス１つ当たりのメモリバンク数は１であるので、多重化数は４となり、４つの不揮発性メモリバンクに同一のアプリケーションデータをスワップアウトする。
【００４２】
続いてＣＰＵ部１０は、アプリケーションＡ〜Ｃの実行指示を出し、各アプリケーションをメインメモリ１１に常駐させる。その後ユーザから、例えば２ＭＢのアプリケーションＤの実行要請を受けると（Ｓ２）、ＣＰＵ部１０は、メインメモリ１１にアプリケーションＤを常駐させるだけの空き領域があるかどうかを判断する（Ｓ３）。空き領域がある場合、ＣＰＵ部１０は、アプリケーションＤをハードディスク１２から読み出してメインメモリ１１に常駐させ（Ｓ６）、アプリケーションＤを実行する（Ｓ７）。
【００４３】
Ｓ３において空き領域がない場合、多重化部１４は、メインメモリ１１に常駐して現在実行されていない例えばアプリケーションＡの仮想アドレスを、ハードディスク１２と不揮発性記憶モジュール２のスワップ領域の物理アドレスに割り付ける（Ｓ４）。
【００４４】
ここでＣＰＵ部１０の多重化部１４は、不揮発性記憶モジュール２にスワップアウトする際の多重化数が４であるので、１つの仮想ページに対して不揮発性記憶モジュール２の４つの物理ページを割りあてることで、スワップアウトするデータを多重化する。図５に示す物理アドレスにおいて、ビットｂ２〜ｂ１７に示される１つの仮想アドレスに対して、ビットｂ０及びｂ１で４つのバンクＢＮ０〜３を指定すれば、１つの仮想ページを４つの物理ページに割りあてることができる。
【００４５】
このように多重化部１４で物理アドレスを指定したＣＰＵ部１０は、物理アドレスを含む書き込みコマンドを不揮発性記憶モジュール２に転送する（Ｓ５）。これによってＣＰＵ部１０は、不揮発性記憶モジュール２の不揮発性メモリバンク２２〜２５それぞれに、同一のアプリケーションＡを格納することができる。このときＣＰＵ部１０は、アプリケーションＡを１つだけハードディスク１２に格納する。
【００４６】
不揮発性記憶モジュール２に書き込みコマンドを転送する際、ＣＰＵ部１０は、図４に示すように仮想アドレスの０ｘ７００００番地に対応する物理アドレスから順番に書き込みコマンドを転送する。このＳ５における処理がスワップアウトである。スワップアウトに対応する不揮発性記憶モジュール２の処理については後述する。
【００４７】
次に、メインメモリ１１に常駐する全アプリケーションが終了し、メインメモリ１１がクリアされた後（Ｓ８）、ユーザがアプリケーションＡの実行を要請すると（Ｓ９）、ＣＰＵ部１０は、不揮発性記憶モジュール２がコンピュータ装置１に装着されているかどうかを判断する（Ｓ１０）。装着されていると判断した場合、ＣＰＵ部１０は、スワップアウトによって不揮発性記憶モジュール２に格納されたアプリケーションＡを読み出し、メインメモリ１１に常駐させる（Ｓ１１）。
【００４８】
Ｓ１１での読み出しにおける物理アドレスは、例えば次のように指定される。図４において、仮想アドレス０ｘ７００００に対してはバンクＢＮ０、仮想アドレス０ｘ７０００１に対してはバンクＢＮ１、仮想アドレス０ｘ７０００２に対してはバンクＢＮ２、仮想アドレス０ｘ７０００３に対してはバンクＢＮ３、仮想アドレス０ｘ７０００４に対しては再度バンクＢＮ０となるように、順に物理アドレスを指定する。このようにバンクＢＮの値０〜３を巡回的に繰り返すことにより、不揮発性メモリバンク２２〜２５に多重化して記憶されたスワップデータＡの相異なる仮想アドレスに対応するページを、並列的に各バンクから読み出すことができる。
【００４９】
Ｓ１０において装着されていないと判断された場合、多重化部１４はアプリケーションＡの仮想アドレスをハードディスク１２の物理アドレスに対応させる。これによってＣＰＵ部１０は、アプリケーションＡをハードディスク１２から読み出してメインメモリ１１に常駐させる（Ｓ１２）。この後ＣＰＵ部１０は、Ｓ１１またはＳ１２でメインメモリ１１に常駐したアプリケーションＡを実行し（Ｓ１３）、一連の処理を終了する。
【００５０】
＜不揮発性記憶モジュール２の処理＞
図７Ａは、不揮発性記憶モジュール２の読み書き制御部２１の処理におけるメインルーチンを示すフローチャートである。図７Ｂは、読み書き制御部２１の処理における割り込みルーチンを示すフローチャートである。読み書き制御部２１の処理について図７Ａ及び図７Ｂを用いて説明する。なお、読み書き制御部２１が実行する割り込みルーチンは、メインルーチンに対して多重割り込みが可能である。
【００５１】
まずメインルーチンにおいて、初期化処理が行なわれ、割り込みが許可される（Ｓ２０）。このとき不揮発性記憶モジュール２は、図３に示す自身のメモリ構成情報をコンピュータ装置１に渡す。初期化処理の後、コンピュータ装置１からレジスタ２６に書き込みコマンドあるいは読み出しコマンドが転送されたかどうかを判断する（Ｓ２１）。書き込みあるいは読み出しコマンドが転送されていなければ、Ｓ２１を繰り返す。
【００５２】
コンピュータ装置１からのスワップアウト（図６ＡのＳ５）において、不揮発性記憶モジュール２に書き込みコマンドが転送されると、不揮発性記憶モジュール２の読み書き制御部２１は、その処理を図７Ｂの割り込みルーチンに移行する。
【００５３】
また、コンピュータ装置へのスワップイン（図６ＢのＳ１１）において、不揮発性記憶モジュール２に読み出しコマンドが転送されたときも、読み書き制御部２１は、その処理を図７Ｂの割り込みルーチンに移行する。
【００５４】
このように読み書き制御部２１の処理が割り込みルーチンに移行すると、レジスタ２６は、転送された書き込みコマンドあるいは読み出しコマンドを一時保持する（Ｓ３０）。これに続いて、読み書き制御部２１がレジスタ２６に空きがあるかどうかを判断し（Ｓ３１）、空きがない場合は、コンピュータ装置１に対してウェイトを通知した上で割り込みルーチンを終了する（Ｓ３２）。空きがある場合は、ウェイトを通知せずに割り込みルーチンを終了する。コンピュータ装置１は、ウェイトが通知されるとスワップアウトあるいはスワップインにおける次の書き込みコマンド、あるいは読み出しコマンドの転送を待つ。
【００５５】
割り込みルーチンの終了後メインルーチンに戻り、読み書き制御部２１は、レジスタ２６に保持されたコマンドを読み出して、コンピュータ装置１に対するウェイトを解除する（Ｓ２２）。次に読み書き制御部２１は、レジスタ２６から読み出したコマンドが書き込みコマンドであるか否かを確認する（Ｓ２３）。書き込みコマンドの場合は、書き込みコマンドに伴って転送されるスワップデータを取得する（Ｓ２４）。読み書き制御部２１は、書き込みコマンドに付加された物理アドレスのバンクＢＮを確認し、対応する不揮発性メモリバンクがレディであるかどうか、すなわち書込時間ＴＷが終了しているかどうかを判断する（Ｓ２５）。レディの場合は、物理アドレスに従って指定されたバンクＢＮの不揮発性メモリバンクにアプリケーションＡを書き込む（Ｓ２６）。
【００５６】
次に、Ｓ２３において読み出しコマンドと判断された場合は、Ｓ２５と同様に、対応する不揮発性メモリバンクがレディかどうかを確認する（Ｓ２７）。レディの場合は、物理アドレスに従って指定されたバンクＢＮの不揮発性メモリバンクからアプリケーションＡを読み出す（Ｓ２８）。
【００５７】
次に、図７ＡのＳ２６におけるスワップアウト処理、およびＳ２８おけるスワップイン処理の時間的推移について説明する。図８は、スワップアウト処理のタイムチャートを示す図であり、図９は、スワップイン処理のタイムチャートを示す図である。
【００５８】
図８において、バンクＢＮの番号で示すデータ転送期間は１０２．４μ秒であり、データ書き込み期間ＴＷは８００μ秒である。データ転送期間は、書き込みデータが、メモリバスを介して読み書き制御部２１からメモリバンクへ転送される期間であり、データ書き込み期間ＴＷは、転送された書き込みデータが、メモリバンク内の記憶領域へ書き込まれる期間である。図８は、まず４つの書き込みコマンドの受信を示している。各書き込みコマンドは、仮想アドレス０ｘ７００４０にバンクＢＮ０〜３のいずれかを付加した物理アドレスを含んでいる。バンクＢＮ０〜３で指定される不揮発性メモリバンク２２〜２５に対する書き込みが、わずかの時間差で不揮発性メモリバンク２２から順に開始される。いずれの書き込みにおいても、１０２．４μ秒で各メモリバンクにデータが転送され、転送完了と同時に次の８００μ秒でデータが書き込まれる。書き込み開始のわずかな時間差は、無視できるほどの小さなものなので、不揮発性メモリバンク２２〜２５に対するデータは、ほぼ同時に書き込まれているといえる。１つの書き込みコマンドに対応する書き込みが終了してレジスタ２６に空きができるたびに、読み書き制御部２１はコンピュータ装置１に対するウェイトを解除し、次の４つの書き込みコマンドを順次受信する。各書き込みコマンドは、仮想アドレス０ｘ７００４１に対してバンクＢＮ０〜３のいずれかを付加した物理アドレスを含んでおり、同様の手順でデータを書き込む。
【００５９】
図９において、データ読み出し期間ＴＲは５０μ秒であり、バンクＢＮの番号で示すデータ転送期間は１０２．４μ秒である。データ読み出し期間ＴＲは、メモリバンク内で記憶領域からデータを読み出す期間であり、データ転送期間は、読み出されたデータが、メモリバスを介してメモリバンクから読み書き制御部２１へ転送される期間である。図９は、まず４つの読み出しコマンドの受信を示している。各読み出しコマンドは、仮想アドレス０ｘ７００１１にバンクＢＮ０を付加した物理アドレス、仮想アドレス０ｘ７００３ＥにバンクＢＮ１を付加した物理アドレス、仮想アドレス０ｘ７００００にバンクＢＮ２を付加した物理アドレス、または仮想アドレス０ｘ７０００８にバンクＢＮ３を付加した物理アドレスを含んでいる。バンクＢＮ０〜３で指定される不揮発性メモリバンク２２〜２５からの読み出しが、僅かな時間差で不揮発性メモリバンク２２から順に開始される。いずれの読み出しにおいてもデータは、５０μ秒で読み出され、読み出し完了と同時に次の１０２．４μ秒で転送される。この４つの物理アドレスはそれぞれ異なるバンクＢＮを含んでおり、読み出し開始の僅かな時間差は無視できるほどの小さなものなので、不揮発性メモリバンク２２〜２５に対するデータは、ほぼ同時に読み出されているといえる。１つの読み出しコマンドに対応する読み出しが終了してレジスタ２６に空きができるたびに、読み書き制御部２１はコンピュータ装置１に対するウェイトを解除し、次の４つの読み出しコマンドを順次受信する。これら４つの読み出しコマンドに含まれる４つの物理アドレスもそれぞれ異なるバンクＢＮを含んでおり、同様の手順でデータを読み出す。
【００６０】
前述した従来のコンピュータシステムと同じ前提条件でのスワップアウトとスワップインの速度を、次の式（４）、（５）によって求める。
スワップアウト速度＝４ｋＢ／(ＴＷ＋ＴＴ)＝４．５ＭＢ／秒・・・（４）
スワップイン速度＝１６ｋＢ／(ＴＲ＋ＴＴ)＝１０４ＭＢ／秒・・・（５）
なお、図８及び図９において、不揮発性メモリバンク２２〜２５に対する読み出しおよび書き込み開始の時間的ずれは誤差の範囲であるので、簡単のために不揮発性メモリバンク２２〜２５への読み書きは同時に始まるものとして計算した。
【００６１】
以上のように、スワップデータの書き込みを予め４つの不揮発性メモリバンクに多重化し、その上でスワップデータの読み出しを不揮発性メモリバンク２２〜２５に分散することにより、スワップインの速度を従来の約４倍に高めることができる。
【００６２】
（第２の実施の形態）
図１０〜１２を用いて、本発明の第２の実施の形態について説明する。図１０は、本実施の形態におけるコンピュータシステムを示すブロック図である。本実施の形態のコンピュータシステムは、コンピュータ装置１及び不揮発性記憶モジュール３を有している。図１０において、第１の実施の形態と同様の構成要素には、同じ番号を付している。
【００６３】
不揮発性記憶モジュール３は、読み書き制御部２１、不揮発性メモリバンク２２〜２５、レジスタ２６、及びメモリバス３０を有している。メモリバス３０は、４本に分岐して不揮発性メモリバンク２２〜２５及び読み書き制御部２１に接続するものである。本実施の形態では、読み書き制御部２１から出るメモリバスが１本しかないので、転送されるデータのバス競合を防がなくてはならない。そのため、データの書き込み及び読み出しにおいて、読み書き制御部２１と各不揮発性メモリバンクの間で同時にデータを転送することはできないので、読み書き制御部２１は、データが順番に転送されるように制御する。なお、本実施の形態において多重化数を求める方法は、第１の実施の形態と同様である。よって本実施の形態における多重化数は４である。
【００６４】
このようなメモリバス３０を備える不揮発性記憶モジュール３の動作について、図１１及び図１２を用いて説明する。図１１は、本実施の形態におけるスワップアウトのタイムチャートを示す図である。図１１においても、第１の実施の形態と同様に、バンクＢＮの番号で示すデータ転送期間は１０２．４μ秒であり、データ書き込み期間ＴＷは８００μ秒である。図１１は、まず４つの書き込みコマンドの受信を示している。各書き込みコマンドは、仮想アドレス０ｘ７００４０にバンクＢＮ０〜３のいずれかを付加した物理アドレスを含んでいる。まず読み書き制御部２１は、バンクＢＮ０の不揮発性メモリバンク２２への書き込みデータを、メモリバス３０を介して、不揮発性メモリバンク２２へ転送する。読み書き制御部２１は、不揮発性メモリバンク２２への転送が終了すると、直ちにバンクＢＮ１の不揮発性メモリバンク２３へ書き込みデータを転送し、同様の手順でバンクＢＮ２、バンクＢＮ３へ書き込みデータを連続して転送する。各メモリバンクは、データ転送期間に続く書き込み期間ＴＷで、取得した書き込みデータを自身の記憶領域にデータを書き込む。この書き込み期間ＴＷではメモリバス３０は用いられないので、読み書き制御部２１は書き込み期間ＴＷの終了を待つことなく、次のメモリバンクへ書き込みデータを転送することができる。
【００６５】
この後不揮発性メモリバンク２２の書き込み期間ＴＷが終了すると、読み書き制御部２１は、バンクＢＮ０〜３へ書き込みデータを連続的に転送して同様の動作を繰り返す。この繰り返しによってデータのスワップアウトが行われる。
【００６６】
図１２は、本実施の形態におけるスワップインのタイムチャートを示す図である。図１２においても、第１の実施の形態と同様に、データ読み出し期間ＴＲは５０μ秒であり、バンクＢＮの番号で示すデータ転送期間は１０２．４μ秒である。図１２は、まず４つの読み出しコマンドの受信を示している。各読み出しコマンドは、仮想アドレス０ｘ７００１１にバンクＢＮ０を付加した物理アドレス、仮想アドレス０ｘ７００３ＥにバンクＢＮ１を付加した物理アドレス、仮想アドレス０ｘ７００００にバンクＢＮ２を付加した物理アドレス、または仮想アドレス０ｘ７０００８にバンクＢＮ３を付加した物理アドレスを含んでいる。不揮発性メモリバンク２２はデータ読み出し期間ＴＲで、物理アドレスに従ってメモリバンク内の記憶領域からデータを読み出し、データ転送期間で、読み出したデータをメモリバス３０を介して読み書き制御部２１に転送する。このデータ転送期間中に次の不揮発性メモリバンク２３は、物理アドレスに従ってメモリバンク内の記憶領域からデータを読み出し、不揮発性メモリバンク２２のデータ転送期間の終了と同時に、読み出したデータをメモリバス３０を介して読み書き制御部２１に転送する。同様の手順で不揮発性メモリバンク２４は、不揮発性メモリバンク２３のデータ転送期間中にデータを読み出して、不揮発性メモリバンク２３のデータ転送期間の終了と同時にデータを転送する。
【００６７】
不揮発性メモリバンク２５も同様の手順でデータを転送するが、不揮発性メモリバンク２５のデータ転送期間中に再び不揮発性メモリバンク２２のデータ読み出し期間ＴＲが始まり、不揮発性メモリバンク２２〜２５は同様の処理を繰り返す。この繰り返しによってデータのスワップインが行われる。
【００６８】
なお第１及び第２の実施の形態において、不揮発性メモリバンク２２〜２５をそれぞれ独立したフラッシュメモリとして説明したが、１つのフラッシュメモリが、内部に４つの不揮発性メモリバンクを積層実装などにより内蔵していてもよい。また、不揮発性メモリバンクの数は４つに限らず、必要に応じて増減すればよい。
【００６９】
なお第１及び第２の実施の形態において、スワップアウトにおける多重化数は４に限定されるものではなく、メモリバス数や不揮発性メモリバンク数など、不揮発性記憶モジュール２の構成に応じて決めればよい。
【００７０】
なお第１及び第２の実施の形態において、不揮発性メモリバンク２２〜２５のそれぞれは、スワップ領域とファイルデータ等を読み書きする通常領域に分けて使用してもよい。その場合多重化部１４は、スワップ領域に書き込むデータのみを多重化するのが好ましい。
【００７１】
なお第１及び第２の実施の形態において、コンピュータシステムはＰＣだけではなく、アプリケーションのスワップ処理を必要とするシステムであれば何でもよい。
【００７２】
なお第１及び第２の実施の形態において、不揮発性記憶モジュール２及び３は、半導体メモリカードのような着脱可能な媒体であってもよいし、コンピュータ装置内に組み込まれた記憶部であってもよい。コンピュータ装置内に組み込まれている場合は、多重化数はコンピュータ装置１で予め決めておけばよい。
【産業上の利用可能性】
【００７３】
本発明にかかるコンピュータシステムは、高速なスワップイン方法を提案したものであり、ＰＣなどのスワップ処理を必要とする機器やシステムにおいて有益である。
【図面の簡単な説明】
【００７４】
【図１】従来のコンピュータシステムの構成を示す図である。
【図２】本発明の第１の実施の形態におけるコンピュータシステムを示すブロック図である。
【図３】不揮発性記憶モジュール２のメモリ構成情報を示す図である。
【図４】仮想アドレスと物理アドレスとの関係を示す説明図である。
【図５】物理アドレスのビットフォーマットを示す図である。
【図６Ａ】ＣＰＵ部１０の処理を示すフローチャートである。
【図６Ｂ】ＣＰＵ部１０の処理を示すフローチャートである。
【図７Ａ】不揮発性記憶モジュール２の読み書き制御部２１の処理におけるメインルーチンを示すフローチャートである。
【図７Ｂ】読み書き制御部２１の処理における割り込みルーチンを示すフローチャートである。
【図８】本発明の第１の実施の形態におけるスワップアウトのタイムチャートを示す図である。
【図９】本発明の第１の実施の形態におけるスワップインのタイムチャートを示す図である。
【図１０】本発明の第２の実施の形態におけるコンピュータシステムを示すブロック図である。
【図１１】本発明の第２の実施の形態におけるスワップインのタイムチャートを示す図である。
【図１２】本発明の第２の実施の形態におけるスワップインのタイムチャートを示す図である。
【符号の説明】
【００７５】
１  コンピュータ装置
２  不揮発性記憶モジュール
１０  ＣＰＵ部
１１  メインメモリ
１２  ハードディスク
１３  アドレス管理部
１４  多重化部
２０ａ〜２０ｄ、３０  メモリバス
２１  読み書き制御部
２２〜２５  不揮発性メモリバンク
２６  レジスタ
【図１】
2009282603.tif 000003
【図２】
2009282603.tif 000004
【図３】
2009282603.tif 000005
【図４】
2009282603.tif 000006
【図５】
2009282603.tif 000007
【図６Ａ】
2009282603.tif 000008
【図６Ｂ】
2009282603.tif 000009
【図７Ａ】
2009282603.tif 000010
【図７Ｂ】
2009282603.tif 000011
【図８】
2009282603.tif 000012
【図９】
2009282603.tif 000013
【図１０】
2009282603.tif 000014
【図１１】
2009282603.tif 000015
【図１２】
2009282603.tif 000016