(57)【要約】【課題】キャッシュの効果を維持したままで、キャッシュデバイスを変更すること。【解決手段】実施形態によれば、情報処理装置は、記憶部と、第１の記憶装置の記憶領域内の第１のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用するキャッシュ手段であって、前記第１のキャッシュデータ格納領域の位置を示す位置情報を含むキャッシュ管理情報を管理する、キャッシュ手段と、前記第１のキャッシュデータ格納領域の代わりに第２の記憶装置の記憶領域内の第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合に、前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納する処理と、前記位置情報が前記第２のキャッシュデータ格納領域の位置を示すように前記位置情報を更新する処理とを含む変更処理を実行する変更手段とを具備する。【選択図】図７
2013134690.tif 000002
【特許請求の範囲】
【請求項１】
記憶部と、
第１の記憶装置の記憶領域内の第１のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用するキャッシュ手段であって、前記第１のキャッシュデータ格納領域の位置を示す位置情報を含むキャッシュ管理情報を管理する、キャッシュ手段と、
前記第１のキャッシュデータ格納領域の代わりに第２の記憶装置の記憶領域内の第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合に、前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納する処理と、前記位置情報が前記第２のキャッシュデータ格納領域の位置を示すように前記位置情報を更新する処理とを含む変更処理を実行する変更手段と
を具備する情報処理装置。
【請求項２】
前記第１のキャッシュデータ格納領域の代わりに前記第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合、前記第２の記憶装置の記憶領域の空き容量に応じて前記第２のキャッシュデータ格納領域のサイズを設定する設定手段を更に具備する請求項１に記載の情報処理装置。
【請求項３】
前記第２の記憶装置の記憶領域の空き容量が前記第１のキャッシュデータ格納領域のサイズより大きい場合、前記設定手段は、前記第２のキャッシュデータ格納領域のサイズを前記第１のキャッシュデータ格納領域のサイズより大きくする請求項２に記載の情報処理装置。
【請求項４】
前記第２の記憶装置の記憶領域の空き容量が前記第１のキャッシュデータ格納領域のサイズより小さい場合、前記第１のキャッシュデータ格納領域に格納されているキャッシュデータの一部を前記第２のキャッシュデータ格納領域に格納する請求項２に記載の情報処理装置。
【請求項５】
前記変更処理の開始から終了までの間、前記キャッシュ手段が前記第１のキャッシュデータ格納領域および前記第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することを禁止するキャッシュ制御手段を更に具備する、請求項１に記載の情報処理装置。
【請求項６】
前記変更処理の開始から前記変更処理の終了までの間、前記キャッシュ手段が前記第１のキャッシュデータ格納領域を前記記憶部のリードキャッシュとして使用することを許可し、前記キャッシュ手段が前記第１のキャッシュデータ格納領域および前記第２のキャッシュデータ格納領域を前記記憶部のライトキャッシュとして使用することを禁止する、キャッシュ制御手段を更に具備する、請求項１に記載の情報処理装置。
【請求項７】
前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納した後に、前記第１のキャッシュデータ格納領域に格納されていた前記キャッシュデータを削除する削除手段を更に具備する請求項１に記載の情報処理装置。
【請求項８】
前記位置情報は、前記第１のキャッシュデータ格納領域の先頭アドレスまたは前記第２のキャッシュデータ格納領域の先頭アドレスを含み、
前記キャッシュ管理情報は、前記第１のキャッシュデータ格納領域のサイズまたは前記第２のキャッシュデータ格納領域のサイズを示すサイズ情報を含む請求項１に記載の情報処理装置。
【請求項９】
第１の記憶装置の記憶領域内の第１のキャッシュデータ格納領域の位置を示す位置情報を含むキャッシュ管理情報を管理し、
前記第１のキャッシュデータ格納領域を記憶部のキャッシュとして使用し、
前記第１のキャッシュデータ格納領域の代わりに第２の記憶装置の記憶領域内の第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合に、前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納する処理と、前記位置情報が前記第２のキャッシュデータ格納領域の位置を示すように前記位置情報を更新する処理とを含む変更処理を実行する
キャッシュ制御方法。
【請求項１０】
前記第１のキャッシュデータ格納領域の代わりに前記第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合、前記第２の記憶装置の記憶領域の空き容量に応じて前記第２のキャッシュデータ格納領域のサイズを設定する請求項９に記載のキャッシュ制御方法。
【請求項１１】
前記第２の記憶装置の記憶領域の空き容量が前記第１のキャッシュデータ格納領域のサイズより大きい場合、前記第２のキャッシュデータ格納領域のサイズを前記第１のキャッシュデータ格納領域のサイズより大きくする請求項１０に記載のキャッシュ制御方法。
【請求項１２】
前記第２の記憶装置の記憶領域の空き容量が前記第１のキャッシュデータ格納領域のサイズより小さい場合、前記第１のキャッシュデータ格納領域に格納されているキャッシュデータの一部を前記第２のキャッシュデータ格納領域に格納する請求項１０に記載のキャッシュ制御方法。
【請求項１３】
前記変更処理の開始から終了までの間、前記第１のキャッシュデータ格納領域および前記第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することを禁止する請求項９に記載のキャッシュ制御方法。
【請求項１４】
前記変更処理の開始から前記変更処理の終了までの間、前記第１のキャッシュデータ格納領域を前記記憶部のリードキャッシュとして使用することを許可し、前記第１のキャッシュデータ格納領域および前記第２のキャッシュデータ格納領域を前記記憶部のライトキャッシュとして使用することを禁止する請求項９に記載のキャッシュ制御方法。
【請求項１５】
前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納した後に、前記第１のキャッシュデータ格納領域に格納されていた前記キャッシュデータを削除する請求項９に記載のキャッシュ制御方法。
【請求項１６】
前記位置情報は、前記第１のキャッシュデータ格納領域の先頭アドレスまたは前記第２のキャッシュデータ格納領域の先頭アドレスを含み、
前記キャッシュ管理情報は、前記第１のキャッシュデータ格納領域のサイズまたは前記第２のキャッシュデータ格納領域のサイズを示すサイズ情報を含む請求項９に記載のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュデバイスとして用いられる記憶装置を変更可能な情報処理装置およびキャッシュ制御方法に関する。
【背景技術】
【０００２】
今日、ＵＳＢ（Universal Serial Bus）  ３．０に代表されるような比較的安価で高速で取り外し可能なインタフェースが普及しつつあり、低速なハードディスクへの読み出しや書き込みを行なう際のキャッシュデバイスとして利用可能となってきている。
【０００３】
キャッシュデバイスとして利用している記憶装置より、アクセス速度が速い、あるいは大容量などの、既存のキャッシュデバイスよりも性能向上が期待できる記憶装置を入手した際に、現在のキャッシュの効果を維持したままで、キャッシュデバイスを変更したいという要望がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１０２３６９号公報
【特許文献２】特開平２−２８８５１号公報
【特許文献３】特開２００６−２３６３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
キャッシュデバイスとして利用している記憶装置より、アクセス速度が速い、あるいは大容量などの、既存のキャッシュデバイスよりも性能向上が期待できる記憶装置を入手した際に、現在のキャッシュの効果を維持したままで、キャッシュデバイスを変更したいという要望がある。
【０００６】
本発明の目的は、現在のキャッシュの効果を維持したままで、キャッシュデバイスを変更することが可能な情報処理装置およびキャッシュ制御方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、情報処理装置は、記憶部と、キャッシュ手段と、変更手段とを具備する。キャッシュ手段は、第１の記憶装置の記憶領域内の第１のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用するキャッシュ手段であって、前記第１のキャッシュデータ格納領域の位置を示す位置情報を含むキャッシュ管理情報を管理する。変更手段は、前記第１のキャッシュデータ格納領域の代わりに第２の記憶装置の記憶領域内の第２のキャッシュデータ格納領域を前記記憶部のキャッシュとして使用することが要求された場合に、前記第１のキャッシュデータ格納領域に格納されていたキャッシュデータを前記第２のキャッシュデータ格納領域に格納する処理と、前記位置情報が前記第２のキャッシュデータ格納領域の位置を示すように前記位置情報を更新する処理とを含む変更処理を実行する。
【図面の簡単な説明】
【０００８】
【図１】実施形態の情報処理装置のシステム構成の一例を示すブロック図。
【図２】図１に示す情報処理装置のキャッシュシステムの構成の一例を示すブロック図。
【図３】キャッシュ情報格納領域の構成の一例を示す図。
【図４】キャッシュ管理情報格納領域の構成の一例を示す図。
【図５】キャッシュ管理情報識別情報の構成の一例を示す図。
【図６】キャッシュ管理情報に格納されているデータの一例を示す図。
【図７】図２に示すキャッシュシステムに第２のＵＳＢメモリを接続した状態を示す図。
【図８】管理ソフトウェアの構成の一例を示すブロック図。
【図９】キャッシュドライバの構成の一例を示すブロック図。
【図１０】キャッシュデバイスを第１のＵＳＢメモリから第２のＵＳＢメモリに変更する場合の手順の一例を示すフローチャート。
【図１１】第２のＵＳＢメモリにキャッシュ情報格納領域が作成された状態の一例を示す図。
【図１２】第１のＵＳＢメモリのキャッシュデータ格納領域内にキャッシュされているキャッシュデータを第２のＵＳＢメモリのキャッシュデータ格納領域にコピーした状態を示す図。
【図１３】メインメモリ内のキャッシュ管理情報を第２のＵＳＢメモリのキャッシュ管理情報格納領域内にコピーした状態を示す図。
【図１４】キャッシュ管理情報内のキャッシュデータ格納領域開始アドレスが変更された状態を示す図。
【図１５】メインメモリ内のキャッシュ管理情報を第２のＵＳＢメモリのキャッシュ管理情報格納領域内のキャッシュ管理情報によって書き換えた状態を示す図。
【図１６】第１のＵＳＢメモリ内のキャッシュ情報格納領域を削除したため空いた領域を用いて、ユーザ領域を拡張した状態を示す図。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
図１は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
【００１１】
図１に示すように、本情報処理装置１は、ＣＰＵ（Central processing unit）１０、チップセット２０、メインメモリ１３１、ハードディスクドライブ（ＨＤＤ）２１１、およびＳＳＤ（Solid State Drive）２１２等を有している。
【００１２】
ＣＰＵ１０は、本情報処理装置１の動作を制御するプロセッサであり、ＨＤＤ２１１やＳＳＤ２１２からメインメモリ１３１にロードされる各種プログラムを実行する。このＣＰＵ１０によって実行される各種プログラムの中には、リソース管理を司るＯＳ１３１１や、当該ＯＳ１３１１の配下で動作する、キャッシュドライバ１３１２、管理ソフトウェア１３１３および各種アプリケーションプログラム１３１４等が存在する。キャッシュドライバ１３１２は、ＨＤＤ２１１よりアクセス速度が速い第１のＵＳＢメモリ２２１をＨＤＤ２１１のキャッシュとして利用することで、ＨＤＤ２１１に対するアクセスの高速化を図る。管理ソフトウェア１３１３によって事項される処理については後述する。
【００１３】
ＣＰＵ１０は、ＰＣＩ（Peripheral Component Interconnect）  Ｅｘｐｒｅｓｓコントローラ（PCIe Ctrl）１１、ＧＰＵ（Graphics Processing Unit）１２、およびメモリコントローラ１３等を内蔵している。
【００１４】
ＰＣＩ  Ｅｘｐｒｅｓｓコントローラ１１は、ＰＣＩ  Ｅｘｐｒｅｓｓバスに接続された各種周辺機器の制御を行う。
【００１５】
ＧＰＵ１２は、表示装置１２１を制御する表示コントローラである。ＧＰＵ１２は、各種プログラムが表示しようとする画像をＣＰＵ１０に代わって描画するアクセラレータを搭載している。
【００１６】
メモリコントローラ１３は、メインメモリ１３１の、データの読み出し、書き出し、メインメモリ１３１のリフレッシュなどのメモリのインタフェースを統括する。
チップセット２０は、シリアルＡＴＡ（Advanced Technology Attachment）コントローラ（SATA Ctrl）２１、ＵＳＢ３．０コントローラ（USB3.0 Ctrl）２２、ネットワークコントローラ（Network Ctrl）２３、ＵＳＢ２．０コントローラ（USB2.0 Ctrl）２４、およびＰＣＩ  Ｅｘｐｒｅｓｓコントローラ２５等を内蔵している。
【００１７】
シリアルＡＴＡコントローラ２１は、ＨＤＤ２１１およびＳＳＤ２１２との間の通信を制御する。
【００１８】
また、ＵＳＢ３．０コントローラ２２は、第１のＵＳＢメモリ２２１との間の通信を制御する。
【００１９】
ＵＳＢ２．０コントローラ２４は、ＵＳＢ-ＨＤＤ２４１、キーボード２４２、マウス２４３との間の通信を制御する。
【００２０】
次に、キャッシュドライバ１３１２によるキャッシュ処理について説明する。
【００２１】
図２は、キャッシュシステムのブロック図の例である。
【００２２】
ＨＤＤ２１１にオペレーティングシステム（ＯＳ）１３１１がインストールされている。ＯＳが格納されている記憶領域を含むＨＤＤ２１１の少なくとも一部の記憶領域がキャッシュ対象となっている。キャッシュドライバ１３１２は、第１のＵＳＢメモリ２２１をＨＤＤ２１１のキャッシュとして用いる。このキャッシュとして使用されるＵＳＢメモリをキャッシュデバイスと呼ぶこととする。
【００２３】
キャッシュデバイス２２１内の記憶領域は、ユーザ領域２２１１とキャッシュ情報格納領域２２１２との２つの領域に分割されている。
【００２４】
ユーザ領域２２１１は、ユーザが自由に使用できる領域である。ユーザ領域は、一般的なＵＳＢメモリと同様にデータの保存や削除ができる領域である。
【００２５】
キャッシュ情報格納領域２２１２について図３を参照して説明する。
【００２６】
ソフトウェアは、メインメモリ１３１もしくはＯＳ１３１１が提供する仮想記憶上(以降、メモリと呼ぶ)にロードされＣＰＵ１０によって実行されることによって動作する。ソフトウェアは、ＯＳ１３１１自体が動作するカーネル空間と一般的なアプリケーションが動作するユーザ空間とに分かれている。
【００２７】
カーネル空間では、最もハードウェアに近いレイヤのモジュールとして、ＳＡＴＡコントローラを制御するＳＡＴＡストレージドライバ３０１やＵＳＢ３．０コントローラを制御するＵＳＢストレージドライバ３０２が動作している。
【００２８】
ＳＡＴＡストレージドライバ３０１およびＵＳＢストレージドライバ３０２の上位のレイヤでキャッシュドライバ１３１２が動作している。キャッシュドライバ１３１２は、上位の汎用ディスクドライバ３１２からキャッシュ対象領域へのアクセスのリクエストを受けた場合、キャッシュ管理情報３２０からヒット/ミスを判断する。キャッシュにヒットした場合、キャッシュドライバ１３１２は、キャッシュデバイスへアクセスを行う。キャッシュにミスした場合、キャッシュドライバ１３１２は、キャッシュ対象領域へアクセスを行う。また、キャッシュドライバ１３１２は、アクセスが多いデータを、キャッシュデバイスへ移行する処理を行う。キャッシュドライバ１３１２は、起動時にキャッシュデバイスからキャッシュ管理情報を読み込み、メモリ上にコピーする。キャッシュドライバ１３１２は、システム運用中はメモリ上のキャッシュ管理情報を更新しながら、キャッシュ処理を行う。システムシャットダウン時、キャッシュドライバ１３１２は、メモリ上のキャッシュ管理情報をキャッシュデバイスに保存する。
【００２９】
ファイルシステムドライバ３１３は、汎用ディスクドライバ３１２の上位のレイヤで動作する。ファイルシステムドライバ３１３は、ユーザやアプリケーション等に対してファイルシステムの提供を行う。ファイルシステムドライバ３１３は、ファイルシステムへのアクセスリクエストをディスクアクセスへのリクエストに変換し、汎用ディスクドライバ３１２にアクセスリクエストを送信する。
【００３０】
管理ソフトウェア１３１３は、キャッシュシステムの状態を監視するアプリケーションである。管理ソフトウェア１３１３は、キャッシュドライバ１３１２とファイルシステム経由や直接通信を行い、取得した情報をユーザへ提示する。
【００３１】
図３は、キャッシュデバイス内に保存されるキャッシュ情報格納領域２２１２の一例である。キャッシュ情報格納領域２２１２は、キャッシュ管理情報格納領域４０１とキャッシュデータ格納領域４０２との２つの領域に分割されている。キャッシュデータ格納領域４０２にはキャッシュデータが格納される。キャッシュ管理情報格納領域４０１には、キャッシュデータ格納領域４０２内のキャッシュデータを管理するための情報が格納されている。
【００３２】
図４は、キャッシュ管理情報格納領域４０１の一例を示す図である。キャッシュ管理情報格納領域４０１には、キャッシュ管理情報識別情報４０１１とキャッシュ管理情報３２０とが格納される。
【００３３】
図５は、キャッシュ管理情報識別情報４０１１の一例を示す図である。キャッシュ管理情報識別情報４０１１には、キャッシュ管理情報３２０を識別するためのキャッシュ管理情報識別子５０１とキャッシュ管理情報有効無効フラグ５０２とが少なくとも格納されている。
【００３４】
キャッシュ管理情報識別子５０１は、キャッシュデバイスに保存されるキャッシュ管理情報３２０を一意に識別するために使用される識別子である。同様なキャッシュシステムを使用しているあるコンピュータのキャッシュデバイスが、別のコンピュータに接続された場合、そのキャッシュデバイスを使用するとキャッシュされているデータが異なるため、データ破壊が発生する。そのような状態を防ぐために、識別子が必要となる。キャッシュ管理情報識別子５０１は、例えばオペレーティングシステムのプロダクトＩＤやマザーボードのプロダクトＩＤ等のコンピュータに固有な情報から生成される。
【００３５】
キャッシュ管理情報識別子５０１は、キャッシュ管理情報３２０内に格納されると共に、キャッシュ管理情報識別子５０１を含む識別情報がＨＤＤ２１１内等に格納される。識別情報は、コンピュータ１内に内蔵された記憶装置に格納されることが好ましい。
【００３６】
キャッシュドライバ１３１２は、動作開始時に、コンピュータ内のキャッシュ管理情報識別子とＵＳＢメモリ２２１内のキャッシュ管理情報識別子５０１とを比較することによって、ＵＳＢメモリ２２１がコンピュータ１のキャッシュとして用いられていたかを判定する。
【００３７】
また、キャッシュ管理情報有効無効フラグ５０２は、そのキャッシュ管理情報３２０が使用可能かどうかを示すフラグである。必ずしも個別のフラグとして用意する必要はなく、他の情報と共用してもよい。
【００３８】
図６は、キャッシュ管理情報３２０の一例を示す図である。図６に示すキャッシュ管理情報３２０の例は、キャッシュデバイスが１台で、キャッシュデータ格納領域４０２を特定のサイズＳｂでｍ分割して管理し、キャッシュ対象のデバイスをｎ台まで同時に使用可能なキャッシュシステムの例である。
【００３９】
キャッシュデバイス識別子６０１は、キャッシュ管理情報３２０の先頭に格納されている。キャッシュデバイス識別子６０１は、キャッシュデバイスを一意に特定するための識別子である。例えば、キャッシュデバイス識別子６０１としては、キャッシュデバイスのベンダー名、モデル名およびシリアル番号をつなげたものなどが考えられる。
【００４０】
キャッシュデータ格納領域先頭アドレス６０２は、図３で示したキャッシュデータが格納されるキャッシュデータ格納領域４０２の先頭アドレスを示す。
【００４１】
キャッシュデータエントリ数（ｍ）（ｍは整数）６０３は、前述したキャッシュデータ格納領域４０２の分割数である。
【００４２】
キャッシュ対象デバイス識別子６０４１〜６０４ｎもキャッシュデバイス識別子６０１と同様にデバイスを一意に特定できるものである。同時にｎ台のキャッシュ対象デバイスを同時に使用できるようｎ台分の情報を格納可能となっている。
【００４３】
キャッシュデータエントリは、キャッシュ対象デバイス番号６０５１〜６０５ｍとキャッシュ元アドレス６０６１〜６０６ｍをペアで記録し、キャッシュされているデータの元々の所在を記録する情報である。
【００４４】
キャッシュ対象デバイス番号６０５１〜６０５ｍは、キャッシュ対象デバイス識別子６０４１〜６０４ｎが登録されている場所である。キャッシュエントリのキャッシュ対象デバイス番号とキャッシュデータ格納領域先頭アドレス６０２とからキャッシュ先のアドレスは計算される。キャッシュデータ格納領域４０２をｍ分割して管理しているため、エントリもｍ個格納可能となっている。未使用のキャッシュデータエントリは、キャッシュ対象デバイス番号内に“０”の値を入れることで識別できる。
【００４５】
図７は、図２のキャッシュシステムに第２のＵＳＢメモリを接続した状態である。
【００４６】
管理ソフトウェア１３１３は、キャッシュデバイスとして使用中の第１のＵＳＢメモリ２２１の性能と第２のＵＳＢメモリ２２２の性能とを比較する。第２のＵＳＢメモリ２２２のアクセス速度が第１のＵＳＢメモリ２２１のアクセス速度より速かったり、第２のＵＳＢメモリ２２２の空き容量が第１のＵＳＢメモリ２２１内のキャッシュ情報格納領域２２１２の容量よりが大きかったりする場合、キャッシュデバイスを第１のＵＳＢメモリ２２１から第２のＵＳＢメモリ２２２に変更した方が、ＨＤＤ２１１のキャッシュとして効果が高いことが期待できる。
【００４７】
本装置は、管理ソフトウェア１３１３およびキャッシュドライバ１３１２を用い、後述する処理を行うことで、システム運用中にキャッシュデバイスを変更することが可能である。
【００４８】
図８は、管理ソフトウェア１３１３の構成を示すブロック図である。前述したキャッシュシステムの管理ソフトウェア１３１３が持つ機能のほかに、キャッシュデバイス変更要求受信部８０１、ユーザ領域拡大縮小部８０２、キャッシュ管理情報作成・変更・コピー部８０３、キャッシュデバイス変更開始・完了通知部８０４、キャッシュデータコピー部８０５、デバイス確認部８０６、およびキャッシュ情報格納領域作成・削除部８０７等を備えている。
【００４９】
キャッシュデバイス変更要求受信部８０１は、ユーザからキャッシュデバイスの変更要求を受け付ける。ユーザは新たに使用するキャッシュデバイス（新キャッシュデバイス）を指定する。
【００５０】
ユーザ領域拡大縮小部８０２は、キャッシュデバイス内に確保されるユーザ領域を拡大・縮小する。ユーザ領域にはファイルシステムが存在するため、ユーザ領域拡大縮小部８０２は、ファイルシステムへサイズ変更をするための要求を発行する。
【００５１】
キャッシュ管理情報作成・変更・コピー部８０３は、キャッシュ管理情報３２０を操作する。キャッシュ管理情報３２０の操作には、キャッシュ管理情報識別情報４０１１に対する操作も含まれる。キャッシュ管理情報作成・変更・コピー部８０３は、キャッシュドライバ１３１２のコマンドパススルー機能を用いて、キャッシュデバイスにリード・ライトコマンドを発行する。キャッシュとして使用する容量の変更は、キャッシュ情報格納領域２２１２のサイズＳｃが変更されることを意味する。サイズＳcの変更に応じて、キャッシュ管理情報格納領域４０１のサイズＳmとキャッシュデータ格納領域４０２のサイズＳdが変化する。キャッシュデータエントリ数（ｍ）６０３の値は、キャッシュデータ格納領域４０２のサイズが変わることにより、変化する。例えば、下記の式により計算することができる。
【００５２】
キャッシュ管理情報格納領域サイズＳm＝（（Ｓc／Ｓb×Ｓe＋Ｓi＋Ｓf）／Ｓb＋１）×Ｓb
キャッシュデータ格納領域サイズＳd＝Ｓc−Ｓm
キャッシュデータエントリ数ｍ＝Ｓd／Ｓb
ここで、Ｓiはキャッシュ管理情報識別情報４０１１のサイズ、Ｓfはキャッシュ管理情報３２０のうちのキャッシュデバイス識別子６０１からキャッシュ対象デバイス識別子までのサイズ、Ｓeはキャッシュデータエントリの１つのサイズ、／は整数の割り算を示す（小数点以下は切り捨て）である。
【００５３】
キャッシュ管理情報３２０をコピーする場合には、エントリ数の増減を考量する必要がある。例えば、第２のＵＳＢメモリ２２２の空き容量が第１のＵＳＢメモリ２２１内のキャッシュ情報格納領域２２１２の容量より大きく、キャッシュデータ格納領域４０２の容量を増やした場合には、キャッシュ管理情報作成・変更・コピー部８０３は、増えた容量に応じてキャッシュ管理情報格納領域４０１に未使用の（新たな）エントリを追加する。
【００５４】
例えば、第２のＵＳＢメモリ２２２の空き容量が第１のＵＳＢメモリ２２１内のキャッシュ情報格納領域２２１２の容量より小さく、キャッシュデータ格納領域４０２の容量が減る場合には、キャッシュ管理情報格納領域４０１から最後のエントリを削除する。
【００５５】
キャッシュデバイス変更開始・完了通知部８０４は、キャッシュドライバ１３１２にキャッシュデバイスの変更処理の開始と完了を通知する。キャッシュドライバ１３１２はキャッシュデバイス変更開始・完了通知部８０４から開始通知を受けると、キャッシュ動作一時停止手段を用いてキャッシュの動作を停止する。そのため、開始通知後はキャッシュドライバ１３１２のコマンドパススルー手段を使用して、デバイスへアクセスする必要がある。キャッシュデバイス変更開始・完了通知部８０４から完了通知を受けると、キャッシュドライバ１３１２はキャッシュ動作一時停止・再開部９０３を用いて、キャッシュの動作を再開するため、各種デバイスは通常通りアクセスすることができるようになる。
【００５６】
キャッシュデータコピー部８０５は、新キャッシュデバイスのキャッシュ情報格納領域２２１２にキャッシュデータ格納領域４０２を作成し、キャッシュドライバ１３１２のコマンドパススルー手段を使用して、これまで使用していたキャッシュデバイスのキャッシュデータを新キャッシュデバイスにコピーする。キャッシュ管理情報３２０のコピーと同様にキャッシュとして使用する容量の変化を考慮する必要がある。
【００５７】
デバイス確認部８０６は、新キャッシュデバイスが実際にキャッシュデバイスとして使用可能かを確認する。デバイス確認部８０６は、新たなキャッシュデバイスの性能測定を行い、新キャッシュデバイスが使用中のキャッシュデバイスより性能が向上することを確認する。また、デバイス確認部８０６は、ユーザに指定された容量のキャッシュ情報格納領域２２１２を作成する空き容量があるか確認する。空き容量が不足している場合、デバイス確認部８０６は、ユーザ領域のファイルシステムをチェックし、ユーザ領域が縮小可能か、縮小した場合に必要な空き領域が確保可能かなどの確認を行う。
【００５８】
キャッシュ情報格納領域作成・削除部８０７は、新キャッシュデバイスの空き領域にユーザに指定された容量のキャッシュ情報格納領域２２１２を作成したり、キャッシュデバイスではなくなったデバイスのキャッシュ情報格納領域２２１２を削除したりする。
【００５９】
図９は、キャッシュドライバ１３１２の構成の一例を示すブロック図である。キャッシュドライバ１３１２は、前述したキャッシュシステムのキャッシュドライバ１３１２の機能を実行するキャッシュ処理部９０１、コマンドパススルー部９０２、およびキャッシュ動作一時停止・再開部９０３を有する。
【００６０】
キャッシュ動作一時停止・再開部９０３は、管理ソフトウェア１３１３からのキャッシュデバイス変更開始・完了通知に応じて、キャッシュ処理部９０１にキャッシュデバイスの変更処理の開始と完了を通知する。キャッシュ処理部９０１は、キャッシュデバイスの変更開始通知を受信すると、キャッシュ動作を一時停止するための処理を行う。これ以降、キャッシュ処理部９０１は、上位の汎用ディスクドライバ３１２から発行されたリクエストを処理せず保持する。キャッシュ処理部９０１は、すでに処理中のリクエストがある場合、処理中のリクエストを実行する。キャッシュ処理部９０１は、処理中のすべてのリクエストが完了したら、管理ソフトウェア１３１３にキャッシュデバイス変更通知受領を返す。キャッシュ処理部９０１は、キャッシュデバイスの変更完了通知を受信すると、新キャッシュデバイスを使用してキャッシュ動作を開始する。キャッシュ処理部９０１は、汎用ディスクドライバ３１２から発行され保持している一時停止中のリクエストを順に全て処理し、汎用ディスクドライバからのリクエストの受付を開始する。
【００６１】
コマンドパススルー部９０２は、キャッシュ動作一時停止中に管理ソフトウェア１３１３が各デバイスに対して発行するリクエストを処理する。
【００６２】
図１０は、キャッシュデバイスを第１のＵＳＢメモリ２２１から第２のＵＳＢメモリ２２２に変更する場合の手順を示すフローチャートである。
【００６３】
ユーザが管理ソフトウェア１３１３にキャッシュデバイスの変更を指示することで変更処理が開始される。ユーザはキャッシュデバイスとして使用したいデバイスおよびキャッシュとして使用する容量を指定する。
【００６４】
デバイス確認部８０６は、ユーザによって指定された第２のＵＳＢメモリ２２２が、キャッシュデバイスとして使用可能かを判定する（ステップＢ１００１）。
【００６５】
デバイス確認部８０６が第２のＵＳＢメモリ２２２にキャッシュ情報格納領域２２１２を作成するための空き領域が不足していると判定した場合、ユーザ領域拡大縮小部８０２は第２のＵＳＢメモリ２２２の記憶領域のうちのユーザ領域を縮小し、空き領域を確保する（ステップＢ１００２）。さらに、図１１に示すように、キャッシュ情報格納領域作成・削除部８０７は、第２のＵＳＢメモリ２２２にキャッシュ情報格納領域２２２２を作成する。キャッシュ情報格納領域２２２２内に、キャッシュ管理情報格納領域４０１Ｂおよびキャッシュデータ格納領域４０２Ｂが確保される。
【００６６】
管理ソフトウェア１３１３のキャッシュデバイス変更開始・完了通知部８０４は、キャッシュ処理部９０１にキャッシュデバイスの変更開始を通知する（ステップＢ１００３）。通知に応じて、キャッシュドライバ１３１２のキャッシュ動作一時停止・再開部９０３は、キャッシュの動作を一時停止するための処理を実行する。
【００６７】
図１２に示すように、管理ソフトウェア１３１３のキャッシュデータコピー部８０５は、第１のＵＳＢメモリ２２１のキャッシュデータ格納領域４０２Ａ内にキャッシュされているキャッシュデータ４０２１を第２のＵＳＢメモリ２２２のキャッシュデータ格納領域４０２Ｂにコピーする。（ステップＢ１００４）。
【００６８】
図１３に示すように、管理ソフトウェア１３１３のキャッシュ管理情報作成・変更・コピー部８０３は、メインメモリ１３１内のキャッシュ管理情報３２０Ｂを第２のＵＳＢメモリ２２２のキャッシュ管理情報格納領域４０１Ｂ内にコピーする（ステップＢ１００５）。
【００６９】
管理ソフトウェア１３１３のキャッシュ管理情報作成・変更・コピー部８０３は、第２のＵＳＢメモリ２２２のキャッシュ管理情報３２０Ｂに含まれるキャッシュデータ格納領域開始アドレスを第２のＵＳＢメモリ２２２のキャッシュデータ格納領域４０２の先頭アドレスに変更する（ステップＢ１００６）。図１４に示すように、キャッシュデータ格納領域開始アドレスが変更された後のキャッシュ管理情報をキャッシュ管理情報３２０Ａとする。キャッシュ管理情報作成・変更・コピー部８０３は、図１５に示すように、メインメモリ１３１内のキャッシュ管理情報３２０Ａを第２のＵＳＢメモリ２２２のキャッシュ管理情報格納領域４０１Ｂ内のキャッシュ管理情報３２０Ａによって書き換える。
【００７０】
管理ソフトウェア１３１３のキャッシュ管理情報作成・変更・コピー部８０３は、第１のＵＳＢメモリ２２１内のキャッシュ管理情報識別情報４０１１に含まれるキャッシュ管理情報有効無効フラグ５０２を無効を示す値に変更する（ステップＢ１００７）。
【００７１】
管理ソフトウェア１３１３のキャッシュ管理情報作成・変更・コピー部８０３は、第２のＵＳＢメモリ２２２内のキャッシュ管理情報格納領域４０１内に第２のＵＳＢメモリ２２２に対応するキャッシュ管理情報識別情報４０１１を生成する（ステップＢ１００８）。なお、第２のＵＳＢメモリ２２２内のキャッシュ管理情報識別情報４０１１に含まれるキャッシュ管理情報有効無効フラグ５０２を有効を示す値にする。
【００７２】
管理ソフトウェア１３１３のキャッシュデバイス変更開始・完了通知部８０４は、キャッシュドライバ１３１２にキャッシュデバイスの変更完了を通知する（ステップＢ１００９）。キャッシュドライバ１３１２のキャッシュ動作一時停止・再開部９０３は、第２のＵＳＢメモリ２２２をキャッシュデバイスとしてキャッシュの動作を再開する。
【００７３】
管理ソフトウェア１３１３のキャッシュ情報格納領域作成・削除部８０７は、第１のＵＳＢメモリ２２１内のキャッシュ情報格納領域２２１２に格納されているデータを削除する（ステップＢ１０１０）。
【００７４】
管理ソフトウェア１３１３のユーザ領域拡大縮小部８０２は、図１６に示すように、第１のＵＳＢメモリ２２１内のキャッシュ情報格納領域２２１２を削除したため空いた領域を用いて、ユーザ領域を拡張する（ステップＢ１０１１）。
【００７５】
以上のように、キャッシュデバイス変更処理を行うことで、現在のキャッシュの効果を維持したままで、キャッシュデバイスを変更することが可能になる。
【００７６】
上記実施形態では、キャッシュデバイスとしてＵＳＢメモリを使用したが、ＳＡＴＡ接続のＳＳＤ等をキャッシュデバイスにした場合でも同様に処理可能である。
【００７７】
なお、上記実施形態では、キャッシュデバイスの変更処理中に、全てのキャッシュ動作を停止していたが、第１のＵＳＢメモリを用いたリードキャッシュ動作は行うようにしても良い。
【００７８】
上記実施形態ではキャッシュデバイス変更中に汎用ディスクドライバから発行されたリクエストをすべてブロックしてキャッシュデバイス変更処理を行っていたが、変更中は新・旧のキャッシュデバイスの両方を使用し、なるべくブロックする領域を小さくして、通常のキャッシュ処理を妨げないようにしても良い。
【００７９】
また、新しいデバイスが接続されたら、自動的に性能測定を行い、現在のキャッシュデバイスよりも性能がよい場合は、ユーザへキャッシュデバイスの変更を促すようにしても良い。
【００８０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８１】
１０…ＣＰＵ、１２…ＧＰＵ、１３…メモリコントローラ、２０…チップセット、２１…ＡＴＡコントローラ、２２…ＵＳＢ３．０コントローラ、１２１…表示装置、２１１…ハードディスクドライブ、２１２…ＳＳＤ、２２１…第１のＵＳＢメモリ、２２２…第２のＵＳＢメモリ、１３１２…キャッシュドライバ、１３１３…管理ソフトウェア。
【図１】
2013134690.tif 000003
【図２】
2013134690.tif 000004
【図３】
2013134690.tif 000005
【図４】
2013134690.tif 000006
【図５】
2013134690.tif 000007
【図６】
2013134690.tif 000008
【図７】
2013134690.tif 000009
【図８】
2013134690.tif 000010
【図９】
2013134690.tif 000011
【図１０】
2013134690.tif 000012
【図１１】
2013134690.tif 000013
【図１２】
2013134690.tif 000014
【図１３】
2013134690.tif 000015
【図１４】
2013134690.tif 000016
【図１５】
2013134690.tif 000017
【図１６】
2013134690.tif 000018