"制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを有する記憶装置と、揮発性メモリと、前記揮発性メモリにロードされた、オペレーティングシステムとキャッシュドライバとを実行するプロセッサであって、前記キャッシュドライバは前記第2の不揮発性記憶部の少なくとも一部の領域を前記第1の不揮発性記憶部のキャッシュとして用いる、プロセッサと、を具備する情報処理装置。前記キャッシュドライバは、前記第2の不揮発性記憶部に格納されたキャッシュデータを管理するための第1のキャッシュ管理情報を前記揮発性メモリに格納し、前記情報処理装置のシャットダウン時に、前記キャッシュドライバは、前記揮発性メモリに格納された前記第1のキャッシュ管理情報を第2のキャッシュ管理情報として前記第1の不揮発性記憶部または前記第2の不揮発性記憶部に格納する、請求項1に記載の情報処理装置。前記情報処理装置の起動時、前記制御部は、前記第2のキャッシュ管理情報に基づいて前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のリードキャッシュデバイスとして用いるリードキャッシュ制御処理と、キャッシュ管理情報管理処理とを実行する、請求項2に記載の情報処理装置。前記キャッシュドライバは、前記揮発性メモリにキャッシュドライバにロードされた後に動作開始通知を前記制御部に発行し、前記制御部は、前記動作開始通知に応じて前記リードキャッシュ制御処理およびキャッシュ管理情報管理処理の実行を停止する、請求項3に記載の情報処理装置。前記情報処理装置の起動時、前記制御部は、リードアクセス要求されたデータを識別するデータを前記第2のキャッシュ管理情報内に書き込む、請求項3に記載の情報処理装置。前記キャッシュドライバは、前記起動時にリードアクセス要求されたデータが格納されている領域に対してライトアクセス要求が発行された場合、前記起動時にリードアクセス要求されたデータを識別するデータを起動時にリードアクセス要求されていない状態に書き替える、請求項5に記載の情報処理装置。前記制御部は、前記情報処理装置の正常なシャットダウン時に不揮発性メモリに第1の値を書き込み、前記キャッシュドライバは、前記揮発性メモリにロードされた後に前記不揮発性メモリに第1の値が書き込まれているかを判定し、前記第1の値が書き込まれていると判定した場合に前記第1の値を第2の値に書き換え、前記第1の値が書き込まれていないと判定した場合に前記第2の不揮発性記憶部内のキャッシュデータを無効にする、請求項2に記載の情報処理装置。前記情報処理装置に第2の記憶装置が接続されている場合、前記キャッシュドライバは前記第2の不揮発性記憶部の少なくとも一部の領域を前記第1の不揮発性記憶部および前記第2の記憶装置のキャッシュとして用いる、請求項1に記載の情報処理装置。前記オペレーティングシステムは前記第1の不揮発性記憶部と前記第2の不揮発性記憶部とを独立な記憶装置として認識する、請求項1に記載の情報処理装置。前記第1の不揮発性記憶部はハードディスクドライブを有し、前記第2の不揮発性記憶部はフラッシュメモリを有する、請求項1に記載の情報処理装置。第1の不揮発性記憶装置と、前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶装置と、揮発性メモリと、前記揮発性メモリにロードされた、オペレーティングシステムとキャッシュドライバとを実行するプロセッサであって、前記キャッシュドライバは前記第2の不揮発性記憶装置の少なくとも一部の領域を第1の不揮発性記憶装置のキャッシュとして用いる、プロセッサと、を具備する情報処理装置。前記情報処理装置は外部増設バスを更に有し、前記第2の不揮発性記憶装置は、前記外部増設バスに接続されている、請求項11に記載の情報処理装置。前記第1の不揮発性記憶装置は、制御部を具備し、前記制御部は、不揮発性記憶部のフラグ領域に記録されている値が第1の値の場合にライトアクセス要求されたデータのアドレスを前記不揮発性記憶部に記録し、前記アドレスを前記不揮発性記憶部に記録できなくなった場合に、前記フラグ領域内の前記第1の値を第2の値に書き換え、前記キャッシュドライバは、起動時に前記キャッシュドライバの動作開始時に前記フラグ領域に前記第1の値が記録されているかを判定し、前記第1の値が記録されていないと判定した場合に前記第2の不揮発性記憶装置内の全てのキャッシュデータを無効化し、前記第1の値が記録されていると判定した場合に、前記ライトアクセス要求されたデータのアドレスに基づいて前記第2の不揮発性記憶装置内のキャッシュデータを無効化し、前記第2の不揮発性記憶装置内の全てのキャッシュデータを無効化した後、または前記ライトアクセス要求されたデータのアドレスに基づいて前記第2の不揮発性記憶装置内のキャッシュデータを無効化した後に、前記フラグ領域内の値を前記第2の値に書き換え、前記情報処理装置のシャットダウン時および正常な前記第2の不揮発性記憶装置の取り外しに伴う前記オペレーティングシステムの処理が完了した場合、前記フラグ領域に第1の値を記録する、請求項11に記載の情報処理装置。前記制御部は、不揮発性記憶部の識別子格納領域に記録されている識別子が無効な値の場合にライトアクセス要求されたデータのアドレスを前記不揮発性記憶部に記録し、前記アドレスを前記不揮発性記憶部に記録できなくなった場合に、前記識別子格納領域内の値を無効な値にし、前記キャッシュドライバは、前記識別子を生成し、起動時に前記キャッシュドライバの動作開始時に前記識別子格納領域と識別子とが一致するかを判定し、前記一致しないと判定した場合に前記第2の不揮発性記憶装置内の全てのキャッシュデータを無効化し、前記一致すると判定した場合に、前記ライトアクセス要求されたデータのアドレスに基づいて前記第2の不揮発性記憶装置内のキャッシュデータを無効化し、前記第2の不揮発性記憶装置内の全てのキャッシュデータを無効化した後、または前記ライトアクセス要求されたデータのアドレスに基づいて前記第2の不揮発性記憶装置内のキャッシュデータを無効化した後に、前記フラグ領域内の値を無効な値にし、前記情報処理装置のシャットダウン時および正常な前記第2の不揮発性記憶装置の取り外しに伴う前記オペレーティングシステムの処理が完了した場合、前記識別子格納領域に前記識別子を記録する、請求項11に記載の情報処理装置。前記第1の不揮発性記憶部はハードディスクドライブを有し、前記第2の不揮発性記憶部はフラッシュメモリを有する、請求項11に記載の情報処理装置。制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを記憶装置と、を具備する情報処理装置のキャッシュ制御方法であって、オペレーティングシステムを実行するプロセッサによって、前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のキャッシュとして用いるキャッシュドライバを実行する、キャッシュ制御方法。不揮発性の記憶部と制御部を具備し、前記制御部は、不揮発性記憶部の識別子格納領域に記録されている識別子が無効な値の場合にライトアクセス要求されたデータのアドレスを前記不揮発性記憶部に記録し、前記アドレスを前記不揮発性記憶部に記録できなくなった場合に、前記識別子格納領域内の値を無効な値にするデータ記憶装置。演算速度が遅い制御部を用いて、キャッシュ制御を行いたいという要望があるが、演算速度が遅い制御部を用いると、アクセス速度が遅くなってしまう恐れがある。本発明の目的は、演算速度が遅い制御部を用いても、アクセス速度の低下を抑制することが可能な情報処理装置のキャッシュ制御方法を提供することを目的とする。実施形態によれば、情報処理装置は、記憶装置と、揮発性メモリと、プロセッサとを具備する。記憶装置は、制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを有する。プロセッサは、前記揮発性メモリにロードされた、オペレーティングシステムとキャッシュドライバとを実行する。キャッシュドライバは前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のキャッシュとして用いる。以下、実施の形態について図面を参照して説明する。図1は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。図1に示すように、本情報処理装置は、CPUCentralprocessingunit11、MCHMemorycontrollerhub12、メインメモリ揮発性メモリ13、ICHIocontrollerhub14、GPUGraphicsprocessingunit15、ビデオメモリVRAM15A、サウンドコントローラ16、BIOS-ROMReadonlymemory17、H-HDDHybridHarddiskdrive記憶装置18、ODDOpticaldiscdrive20、各種周辺機器21、EEPROMElectricallyerasableprogrammableROM22、EC/KBCEmbeddedcontrollerkeyboardcontroller23等を備えている。CPU11は、本情報処理装置の動作を制御するプロセッサであり、H-HDD18やODD20からメインメモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、H-HDDドライバキャッシュドライバ120および各種アプリケーションプログラム130等が存在する。H-HDDドライバ120は、H-HDD18を制御するプログラムである。本情報処理装置は、H-HDD18内のHDD18B第1の不揮発性記憶部よりアクセス速度が速いSSDSolidStateDrive第2の不揮発性記憶部18CをHDD18Bのキャッシュとして利用することで、HDD18Bに対するアクセスの高速化を図る。SSD18Cは、フラッシュメモリを有する。また、CPU11は、BIOS-ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS-ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。ICH14は、H-HDD18およびODD19を制御するためのATAATAttachmentコントローラを内蔵する。ICH14は、PCIPeripheralcomponentinterconnectバスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。H-HDD18は、制御部18A、HDD18B、SSD18Cを有する。制御部は、ATAコントローラからの命令に応じてHDD18B、SSD18Cにアクセスする。サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれ、または、外部接続されるスピーカ等に出力する。EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPUMicroprocessingunitである。次に、H-HDD18およびH-HDDドライバ120の機能について図2を参照して説明する。図2は、図1に示す情報処理装置の主要部を示すブロック図である。情報処理装置10はオペレーティングシステムOSが制御し、オペレーティングシステム110からH-HDD18へのアクセスはすべてH-HDDドライバ120を介して行われる。H-HDDドライバ120はATAコントローラ14Aを直接的または間接的に制御する。ATAコントローラ14Aを介してH-HDD18が接続されている。また、H-HDDドライバ120は、メモリコントローラ12Aを介して、主メモリ13へのデータのアクセスを行う。H-HDDドライバ120はシステムの起動時に主メモリ13にロードされる。H-HDDドライバ120は、キャッシュ管理情報201を格納するための領域を主メモリ13内に確保して初期化し、キャッシュデータ212には何も記録されていない状態にした後、キャッシュ制御処理を開始する。キャッシュ管理情報201は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。H-HDDドライバ120の動作時、H-HDDドライバ120は、主メモリ13内のキャッシュ管理情報201にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、H-HDDドライバ120は、主メモリ13内のキャッシュ管理情報201を破棄する。なお、H-HDDドライバ120が動作を開始するまでは、BIOSプログラムがH-HDD18を制御する。制御部18Aは、ホストからライトアクセス要求またはリードアクセス要求があった場合、ハードディスクドライブ18Bにアクセスする。H-HDD18は、オペレーティングシステム110からは単一の記憶装置HDD18Bとして認識される。SSD18Cの一部または全部の領域がHDD18Bのキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD18Cのキャッシュデータ領域212に直接アクセスすることができない。本実施形態によれば、CPU11によって実行されるドライバ120を用いてキャッシュ制御を行うことによって、H-HDD18に演算速度が遅い制御部18Aを用いても、アクセス速度の低下を抑制することが可能になる。第2の実施形態:SSDの寿命低下抑制第1の実施形態では、起動の度にキャッシュ管理情報201を破棄しているので、起動の度にキャッシュデータ領域212内にキャッシュデータを書き込むことになるので、SSDの寿命が短くなる。また、起動時にキャッシュデータ212がHDD18Bのデータと一致していることが保証できれば、キャッシュ管理情報201を不揮発性記憶領域に保存し、起動時にロードすることによってキャッシュデータ212を破棄せずに使用することができ、H-HDD18の性能向上も図れる。この実施形態では、SSDの寿命が短くなることを抑制し、H-HDDの性能を向上させることが可能な手法について説明する。本実施形態のH-HDD18およびH-HDDドライバの機能について図3のブロック図を参照して説明する。第2の実施形態の情報処理装置の主要部を示すブロック図である。H-HDDドライバ320はシステムの起動時に主メモリ13にロードされ、SSD18C内に格納されているキャッシュ管理情報211をキャッシュ管理情報201として主メモリ13内に格納した後、動作を開始する。キャッシュ管理情報211は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。H-HDDドライバ320の動作時、H-HDDドライバ320は、主メモリ13内のキャッシュ管理情報201にライトキャッシュおよびリードキャッシュの学習データを記録する。シャットダウン時、H-HDDドライバ320は、SSD18C内に主メモリ13内のキャッシュ管理情報201をキャッシュ管理情報211として格納する。なお、H-HDDドライバ320が動作を開始するまでは、BIOSプログラムがH-HDD18を制御する。制御部18Aは、ホストからアクセスがあった場合、キャッシュ管理情報211を参照して、データが学習されているかを判定する。H-HDDドライバ320の動作開始時にはH-HDD18に対してドライバ動作開始通知を発行する。H-HDD18は、オペレーティングシステム110からは単一の記憶装置HDD18Bとして認識される。SSD18Cの一部または全部の領域がHDD18Bのキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD18Cのキャッシュデータ領域312に直接アクセスすることができない。H-HDD18内の制御部18Aは、SSD18Cにキャッシュデータを蓄える学習機能は有しないが、SSD18Cに蓄えられたキャッシュデータの管理機能、すなわち、ホストからのアクセス要求がキャッシュデータにヒットしているかを判別する判別機能、キャッシュデータにヒットしていた場合にキャッシュデータからデータを読み出す機能、キャッシュデータ内の特定のデータを無効化する機能、およびキャッシュの管理データを更新する機能を有する。H-HDD18の制御部18Aは電源投入後、ドライバ動作開始通知までの間、SSD18C内のキャッシュデータを管理する。制御部18Aがキャッシュデータを管理する期間において、ホスト側でキャッシュに関与しないBIOSが動作している。ホストからのリードアクセス要求がSSD18C内のキャッシュデータにヒットしていれば、制御部18Aは、SSD18C内からデータをリードし、キャッシュデータにミスすればHDD18Bからデータをリードする。制御部18Aは、ライト要求がキャッシュデータにヒットしていればキャッシュデータの当該データを無効化し、キャッシュのヒットミスに関わらずHDD18Bにデータをライトする。ホストからドライバ動作開始通知を受け取ると、キャッシュの管理を放棄する。ドライバの動作開始後は、H-HDDドライバ320がSSD18C内のキャッシュデータの制御および管理を行う。H-HDDドライバ320は、必要に応じてキャッシュへのデータの蓄積、入れ替え、管理データの更新を行う。電源が投入されてからの制御部18AおよびH-HDDドライバ320の動作を図4のフローチャートを参照して説明する。電源が投入されると、制御部18AがSSD18C内のキャッシュデータの管理を開始するステップ401。H-HDDドライバ320が主メモリ13にロードされ、H-HDDドライバ320が処理を実行できるようになると、H-HDDドライバ320は、制御部18Aに対してドライバ動作開始通知を発行するステップ402。制御部18Aは、ドライバ動作開始通知を受信すると、キャッシュデータの管理を停止するステップ403。制御部18Aは、H-HDDドライバ320に対して管理動作停止通知を発行するステップ404。管理動作停止通知を受信すると、H-HDDドライバ320は、制御部18Aにキャッシュ管理情報211のリードアクセス要求を発行するステップ405。制御部18Aは、要求に応じてキャッシュ管理情報211をH-HDDドライバ320に転送するステップ406。H-HDDドライバ320は、転送されたキャッシュ管理情報211をキャッシュ管理情報201として主メモリ13内に格納するステップ407。キャッシュ管理情報201の格納後、H-HDDドライバ320は、ハードディスクドライブ18Bのキャッシュデータの管理を開始するステップ408。次に、シャットダウン時のH-HDDドライバ320および制御部18Aによって行われる処理を図5のフローチャートを参照して説明する。オペレーティングシステム110からシャットダウンが通知されると、H-HDDドライバ320は、制御部18Aにキャッシュ管理情報201のSSD18Cへのライトアクセスを要求するステップ501。制御部18Aは、キャッシュ管理情報201をキャッシュ管理情報211としてSSD18Cに書き込むステップ502。書き込み終了後、制御部18Aは、キャッシュ管理情報211の書き込み終了をH-HDDドライバ320に通知するステップ503。H-HDDドライバ320は、オペレーティングシステム110にシャットダウンの準備が完了した旨を通知するステップ504。次に、H-HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部18Aの動作について図6のフローチャートを参照して説明する。ホストからリードアクセスがあると、制御部18Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定するステップ601。学習されているヒットと判定した場合ステップ601のYes、制御部18Aは、SSD18Cから学習されているデータを読み出しステップ602、読み出したデータをホストに転送するステップ604。学習されていないミスと判定した場合ステップ601のNo、制御部18Aは、HDD18Bからリードアクセスされたデータを読み出しステップ603、読み出したデータをホストに転送するステップ604。次に、H-HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、ライトアクセスがあった場合の制御部18Aの動作について図7のフローチャートを参照して説明する。ホストからライトアクセスがあると、制御部18Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定するステップ701。学習されているヒットと判定した場合ステップ701のYes、制御部18Aは、SSD18C内のキャッシュデータからアクセスされたデータを無効化しステップ702、データをHDD18Bに書き込むステップ703。学習されていないミスと判定した場合ステップ701のNo、制御部18Aは、HDD18Bにデータを書き込むステップ703。H-HDD18でのキャッシュ制御を、電源投入後からH-HDDドライバ320動作開始までBIOS制御期間に限定し、機能も限定することにより、H-HDD18側のキャッシュ制御の負担を軽減している。また、OS稼動開始後はH-HDDドライバ320がキャッシュの全制御を行うので、処理能力の高いホストのCPU11と、メインメモリ13内に中間的なバッファメモリを確保することにより、性能向上とコストアップの抑制を図ることが可能になる。第3の実施形態:電源断を伴わないリブート対応電源断を伴わないリブートの場合、H-HDD18の制御部18Aは、ホストがリブートしたことを認識することができないので、リブートが行われてもH-HDD18の制御部18Aはキャッシュデータの管理を行うことができない。本実施形態では、H-HDD18の制御部18Aが正常な電源断を伴わないリブートを認識し、リブート後に制御部18Aがキャッシュデータを管理することが可能にする手法について説明する。図8は、第3の実施形態の情報処理装置の主要部の構成を示すブロック図である。H-HDDドライバ120は、H-HDD18の不揮発性メモリ、例えばSSD18C内に2値でキャッシュの管理主体を表す管理主体フラグ813を書き込む領域を確保する。管理主体フラグ813には、管理主体が制御部18Aであることを示すHHDDに対応する値、管理主体が制H-HDDドライバ120であることを示すDRVRに対応する値の値が書き込まれる。H-HDDドライバ120および制御部18は、管理主体フラグ813の値の参照および変更を行うことが可能である。なお、管理主体フラグ813の初期値は、DRVRである。H-HDD18の制御部18Aは、電源投入時およびリセット時に管理主体フラグ813の値を参照する。値がHHDDの場合、制御部18Aは、ドライバ動作開始通知を受信するまで第1の実施形態で説明したキャッシュデータの管理を行う。値がDRVRのときはキャッシュの管理を行わない。なお、リセットの通知は少なくともリブート時にはホストからH-HDD18に発行されるものとする。また、フラグの値がDRVRの場合に制御部18Aがキャッシュの管理を行わないのは、正常稼働中のリセット以外の、強制リブートやオペレーティングシステム110のクラッシュ後のリブートといったオペレーティングシステム110の正常なシャットダウンを経ないリブート時には、SSD18C内のキャッシュデータ領域212内のキャッシュデータとキャッシュディレクトリなどを有するキャッシュ管理情報211との間に不整合が発生している可能性があるためである。なお、H-HDD18の制御部18Aがドライバ動作開始通知を受領すると、管理主体フラグ813の値をDRVRに書き替えた後に、キャッシュの管理を放棄する。また、H-HDDドライバ120は動作開始時に管理主体フラグ813の値を参照し、値がHHDDのときはキャッシュデータ領域212内のデータを有効としてSSD18C内のキャッシュ管理情報211を主メモリ13のキャッシュ管理情報201の領域に読み出し、値がDRVRの場合は主メモリ13のキャッシュ管理情報201を初期化し、キャッシュ管理データ領域212には何も記録されていない状態にする。ここで、H-HDDドライバ120が管理主体フラグ813の値がDRVRの場合にキャッシュデータ領域212内のデータを無効化するのは、強制リブートやオペレーティングシステム110のクラッシュ後のリブートといったオペレーティングシステム110の正常なシャットダウンを経ないリブートが発生したことを表し、キャッシュデータ領域212内のデータとキャッシュディレクトリなどのキャッシュ管理情報211との間に不整合が発生しているためである。また、H-HDDドライバ120は、正常なシャットダウン処理時に、管理主体フラグ813の値をHHDDに変更する。図9および図10のフローチャートを参照して起動時のH-HDDドライバ120および制御部18の処理の手順を説明する。起動後、制御部18Aは、管理主体フラグ813の値を参照するステップ901A。制御部18Aは、管理主体フラグ813の値がHHDDであるかを判定するステップ902A。HHDDであると判定した場合ステップ902AのYes、制御部18AがSSD18C内のキャッシュデータの管理を開始するステップ903。H-HDDドライバ120が主メモリ13にロードされ、H-HDDドライバ120が処理を実行できるようになると、H-HDDドライバ120は、管理主体フラグ813の値を参照するステップ901B。HHDDであると判定した場合ステップ902BのYes、H-HDDドライバ120は、制御部18Aに対してドライバ動作開始通知を発行するステップ904。制御部18Aは、ドライバ動作開始通知を受信すると、キャッシュデータの管理を停止するステップ905。制御部18Aは、管理主体フラグ813の値をDRVRに書き替えるステップ906。制御部18Aは、H-HDDドライバ120に対して管理動作停止通知を発行するステップ907。管理動作停止通知を受信すると、H-HDDドライバ120は、制御部18Aにキャッシュ管理情報211のリードアクセス要求を発行するステップ908。制御部18Aは、要求に応じてキャッシュ管理情報211を主メモリ13のキャッシュ管理情報201領域に転送するステップ909。キャッシュ管理情報201読み出し後、H-HDDドライバ120は、ハードディスクドライブ18Bのキャッシュデータの管理を開始するステップ911。ステップ902Aおよび902BにおいてHHDDではないと判定した場合ステップ902A,902BのNo、H-HDDドライバ120は、主メモリ13内のキャッシュ管理情報201を初期化するステップ924。次に、正常なシャットダウン時のH-HDDドライバ120および制御部18の処理の手順を図11を参照して説明する。オペレーティングシステム110からシャットダウンが通知されると、H-HDDドライバ120は、キャッシュ制御処理を停止するステップ1101。H-HDDドライバ120は、制御部18Aにキャッシュ管理情報201のSSD18Cへのライトアクセスを要求するステップ1102。制御部18Aは、キャッシュ管理情報201をキャッシュ管理情報211としてSSD18Cに書き込むステップ1103。書き込み終了後、制御部18Aは、キャッシュ管理情報211の書き込み終了をH-HDDドライバ120に通知するステップ1104。H-HDDドライバ120は、管理主体フラグ812の値をHHDDに書き替えるように制御部18Aに命令するステップ1105。制御部18Aは、管理主体フラグ812の値をHHDDに書き替えるステップ1106。書き換え後、制御部18Aは、書き換えが完了した旨を通知するステップ1107。通知の受領後、H-HDDドライバ120は、オペレーティングシステム110にシャットダウンの準備が完了した旨を通知するステップ1109。本実施形態では、不正に装置が終了した場合、キャッシュ管理情報211を破棄し、初期化したキャッシュ管理情報201に基づいてキャッシュの管理を行うことで、正常な電源断を伴わないリブートに対応することが可能になる。第4の実施形態:起動高速化本実施形態では、起動を高速化する手法について説明する。図12のブロック図を参照して第4の実施形態のH-HDD18およびH-HDDドライバの機能を説明する。図12は、第4の実施形態の情報処理装置の主要部を示すブロック図である。本実施形態のH-HDDドライバ1220によって生成されたキャッシュ管理情報12011211は、図13に示すように、管理データ1301およびキャッシュディレクトリ1302を有する。管理データ1301内には、後述するトレース領域1301Aが確保されている。本実施形態のH-HDDドライバ1220は、キャッシュ方式の実施例として16-wayセットアソシアティブ方式を用いる。キャッシュ管理情報12011211内のキャッシュディレクトリ1302は、例えば図14に示すように、512Kインデックス×16ウェイのテーブルである。キャッシュディレクトリ1302によって管理されるタグデータは、図15に示すように、タグTag1501とその他の管理データ1502から構成される。なお、HDD18BのLBAをIndex数で割った場合の商がTagであり、余りがIndexである。H-HDDドライバ1220は、キャッシュディレクトリによって管理される各タグデータ1500の管理データ1502内に起動フラグ1501Aを設ける。起動フラグの値は、0または1である。起動フラグ1501Aの値が1の場合に起動時に使用されたキャッシュデータに対応するタグデータ1500であることを示し、起動フラグ1501Aの値が0の場合に起動時に使用されていないタグデータ1500であることを示す。また、H-HDDドライバ1220は、キャッシュ管理情報12011211内の管理データ1301内にトレース領域1301Aを確保する。H-HDD18の制御部18AおよびH-HDDドライバ1220は、トレース領域1301Aの参照および変更を行うことが可能である。さらにオペレーティングシステム110の起動が完了したときに動作する図示されていないプログラムから、H-HDDドライバ1220に対して起動完了通知を発行する。H-HDD18の制御部18Aがキャッシュデータを管理している状態において、制御部18Aは、リードアクセス要求に対してキャッシュデータがヒットしたときは、キャッシュディレクトリ内のヒットしたキャッシュデータに対応するタグデータの起動フラグ1501Aの値を1に書き替える。リードアクセス要求に対してキャッシュデータがミスしたときは、制御部18Aは、キャッシュ管理情報1211内のトレース領域1301Aにリードアクセス要求のパラメータLBA,セクタ数を蓄積する。H-HDDドライバ1220は、動作開始後、キャッシュ管理情報1211内のトレース領域1301Aを参照し、ドライバ1220の動作開始前にBIOSによってリードされたデータをキャッシュデータとしてSSD18Cに蓄積し、当該キャッシュディレクトリ内のキャッシュされたデータに対応するタグデータの起動フラグの値を1にする。H-HDDドライバ1220は、キャッシュディレクトリ内の起動フラグが1のタグデータに対応するキャッシュをキャッシュデータ領域212から追い出さないように制御する。H-HDDドライバ1220は、シャットダウン時に主メモリ13内のキャッシュディレクトリを含むキャッシュ管理情報1201をSSD18Cにキャッシュ管理情報1211として保存する際、キャッシュディレクトリの全起動フラグの値を0にする。次に、H-HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部1218Aの動作について図16のフローチャートを参照して説明する。ホストからリードアクセスがあると、制御部1218Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定するステップ1601。学習されているヒットと判定した場合ステップ1601のYes、制御部1218Aは、キャッシュディレクトリ内のヒットしたキャッシュデータに対応するタグデータの起動フラグ1501Aの値を1に書き替えるステップ1602。制御部1218Aは、SSD18Cから学習されているキャッシュデータを読み出しステップ1603、読み出したキャッシュデータをホストに転送するステップ1604。学習されていないミスと判定した場合ステップ1601のNo、制御部1218Aは、キャッシュ管理情報1211内のトレース領域1301Aにリードアクセス要求のパラメータLBA,セクタ数を書き込むステップ1605。制御部1218Aは、リードアクセスされたデータをハードディスクドライブ18Bから読み出しステップ1606、読み出したデータをホストに転送するステップ1604。本実施形態は、システム本体の起動高速化に寄与する。起動は毎回同じデータをリードすることが多いが、起動ごとにリードするデータが変わることもある。本実施形態では、起動に使用するデータを起動のたびに毎回学習することにより、起動時にリードするデータが変わっても対応できる効果がある。また、H-HDD18の制御部1218Aは、リード要求がキャッシュにミスしたときはトレース領域1301Aにリードアクセス要求のコマンドを記録するだけの簡単な処理にとどめることにより、制御部1218Aの負担を軽減している。第5の実施形態:起動時の学習データ制限上記実施形態では、起動時に学習されたデータが削除されないため、起動時の学習されたデータが多いと、キャッシュデータ領域212のうち稼働中に使用可能な領域が少なくなり、十分なキャッシュの効果を発揮できなくなってしまう。本実施形態では、起動に学習するデータの量を制限する手法について説明する。図17は、第5の実施形態のH-HDD18およびH-HDDドライバの機能を説明するためのブロック図である。図17は、第5の実施形態の情報処理装置の主要部を示すブロック図である。本実施形態のH-HDDドライバ1720によって生成されたキャッシュ管理情報17011711は、図18に示すように、管理データ1801およびキャッシュディレクトリ1302を有する。キャッシュ管理情報17011711内には、第4の実施形態と同様にトレース領域1801Aが確保されている。キャッシュディレクトリ1302によって管理される各タグデータ1900の管理データ1902内に起動フラグ1902AとLRUカウンタ1902Bを設ける。LRUカウンタ1902Bは、同一Index内でアクセスされた順番を記録するフィールドで、例えば16ウェイのとき、LRUカウンタ1902Bが0のデータは最も最近アクセスされたことを表し、LRUカウンタ1902Bが15のときは最も昔にアクセスされたことを表す。制御部1718Aがキャッシュデータを管理している状態において、制御部1718Aは、リードアクセス要求に対してキャッシュデータがヒットしたときは、キャッシュディレクトリ1701内の起動フラグ1902Aの値を1に書き換え、同一IndexのLRUカウンタ1902Bを更新する。リードアクセス要求に対してキャッシュデータがミスしたときは、制御部1718Aは、トレース領域1801Aにリードアクセス要求のパラメータLBA,セクタ数1801Bをリードされた順番に記録する。H-HDDドライバ1720は、起動フラグの値が1のタグデータの量をあらかじめ定められた量、例えば16Wayの場合には16Wayの1/4の4Way分に制限する。H-HDDドライバ1720は、LRUカウンタ1902Bに基づいて、アクセス日時が古いデータがキャッシュデータ領域212内に残るように制御する。次に、H-HDDドライバ1220によるキャッシュの管理手法について図20のフローチャートを参照して説明する。H-HDDドライバ1720は、キャッシュディレクトリ内のIndexごとに起動フラグ1902Aの値が1のタグデータ数を算出するステップ2001。H-HDDドライバ1720は、Indexごとに起動フラグ1902Aの値が1のタグデータ数が設定数より多いかを判定するステップ2002。設定数より多いと判定した場合ステップ2002のYes、H-HDDドライバ1720は、LRUカウンタ1902Bを参照して同一Indexのキャッシュディレクトリの起動フラグ1902Aの値が1のタグデータのうちアクセス日時が最も新しいタグデータの起動フラグ1902Aの値を0にするステップ2009。H-HDDドライバ1720は、ステップ2001からの処理を実行する。設定数より大きくないと判定した場合ステップ2002のNo、トレース領域1801Aのトレースを先頭から逐次処理する。H-HDDドライバ1720は、トレース領域1801A内にパラメータ1801Bがあるかを判定するステップ2003。パラメータ1801Bがあると判定した場合ステップ2003のYes、H-HDDドライバ1720は、トレース領域内のパラメータからIndexを算出し、キャッシュディレクトリ内の該当するIndexの起動フラグの値が1のタグデータ数を算出するステップ2004。H-HDDドライバ1720は、タグデータ数が設定数と等しいかを判定するステップ2005。設定数と等しくないと判定した場合ステップ2005のYes、H-HDDドライバ1720は、トレース領域1801A内のパラメータ1801Bを破棄するステップ2010。設定数と等しいと判定した場合ステップ2005のYes、H-HDDドライバ1720は、処理中のパラメータに対応するデータをHDDから読み出すステップ2006。H-HDDドライバ1720は、同一Index内のLRUカウンタを参照し、起動フラグの値が0のうちもっとも古いキャッシュデータをHDDから読み出したデータに置き換えるステップ2007。、H-HDDドライバ1720は、置き換えたデータに対応するタグデータを起動フラグの値を1にしてキャッシュディレクトリに追加するステップ2008。ステップ2008の実行後、H-HDDドライバ1720は、ステップ2003以降の処理を実行する。パラメータ1801Bがないと判定した場合ステップ2003のNo、H-HDDドライバ1720は、処理を終了する。H-HDDドライバ1720は、トレースデータの処理完了後、ドライバへの起動完了通知を受領するまで、オペレーティングシステムからのリード要求がキャッシュにヒットし、同一Indexの起動フラグの値が1であるタグデータの数が設定数と同じ場合は起動フラグの値を変更せず、同一Indexの起動フラグの値が1であるタグデータの数が設定数と異なる小さい場合は起動フラグの値を1に変更する。H-HDDドライバ1720は、オペレーティングシステムからのリード要求がキャッシュにミスしHDDからリードしたデータをキャッシュに登録する際、同一Indexの起動フラグの値が1であるタグデータの数が設定数と同じ場合は起動フラグの値を0にし、同一Indexの起動フラグの値が1であるタグデータの数が設定数と異なる小さい場合は起動フラグの値を1にする。本実施形態では、ドライバへの起動完了通知が何らかの原因により発行されなかった場合や、想定以上にリードの量が多かったときに、通常稼動時にもキャッシュデータを一定量以上確保できることを保証する。第6の実施形態:ブート時のライトデータをキャッシュデータから削除本実施形態では、次回起動時にリードされる可能性の低いデータを極力残さないようにする手法について説明する。本実施形態のH-HDDドライバおよび制御部の構成は、第4の実施形態と同様なので図示を省略する。H-HDDドライバ1220は、起動フラグの値が1であるタグデータに対応するキャッシュデータにライトアクセス要求があったときは、起動フラグの値を0にする。起動時にリードアクセスされ、その後ライトアクセスが発生したキャッシュデータは次の起動時にリードされない可能性が高い。起動フラグの値が0のタグデータに対応するキャッシュデータは削除されても、ブート時間が長くなることがない。なお、起動時に、H-HDD18の制御部1218Aは、ライトアクセス要求がトレース領域内のパラメータに対応するデータに対応したときは、当該パラメータを削除しても良い。本実施形態によれば、リードアクセスされたキャッシュデータを削除することでキャッシュデータを整理しつつ、ブート時間が長くなることを抑制する。第7の実施形態:他のHDDをキャッシュ対象にする図21は、第7の実施形態の情報処理装置の主要部を示すブロック図である。本実施形態のH-HDDドライバは、SSD18Cの少なくとも一部の領域をHDD18BおよびHDD2130のキャッシュとして用いる。H-HDDドライバ2120によって管理されるキャッシュ管理情報20112111内のタグデータを図22を参照して説明する。タグデータ2200内の管理データ2202内には学習対象のHDDを識別するためのHDD_ID2202Aが記録されている。HDD_ID2202Aのビット数は、キャッシュ管理情報2101を作成時に設定される。本実施形態では、H-HDD18のHDD18B部だけでなく、H-HDD18が接続されている情報処理装置に接続されているその他のHDD2130の性能も向上する。たとえば、本願のH-HDDを使用したUSB-HDDを情報処理装置に接続すると、情報処理装置に内蔵されているHDDも高速になる。第8の実施形態:HDDとSSDとを独立に見せる本実施形態は、磁気ディスクのように比較的大容量、安価、低速、高消費電力の第1の記憶装置HDDと、半導体不揮発性メモリのように、比較的小容量、高価、高速、低消費電力の第2の記憶装置SSDを、外部記憶装置が接続される計算機システムPC上で動作する外部記憶装置制御手段HDDドライバがSSDをHDDのキャッシュとして使用することにより、比較的大容量、安価、高速、低消費電力のストレージシステムを提供する。第7の実施形態まではホストに対して、HDDとSSDから構成されるH-HDDを単一の記憶装置として見せていた。本実施形態ではホストに対してHDDとSSDとをそれぞれ独立の記憶装置として見せる。本実施形態では、同じデバイスに対しては同時に1つのコマンドしか発行できないようなOSであっても、HDDとSSDの両方にコマンドを同時に発行できる。図23は、第8の実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。図23に示すように、本情報処理装置は、CPU11、MCH12、メインメモリ13、ICH14、GPU15、VRAM15A、サウンドコントローラ16、BIOS-ROM17、HDD2318、ODD20、各種周辺機器21、EEPROM22、EC/KBC23等を備えている。CPU11は、本情報処理装置の動作を制御するプロセッサであり、メインメモリ13にロードされたキャッシュドライバ2320を実行する。キャッシュドライバ2320は、HDD2318と外部記憶装置で有るUSB-HDD2340を制御するプログラムである。また、ICH14は、USB-HDD2340等のUSBデバイスを制御するためのUSBコントローラを内蔵する。次に、USB-HDD2040およびUSB-HDD2040を制御する情報処理装置の構成について図24を参照して説明する。図24は、第8の実施形態の情報処理装置の主要部を示すブロック図である。図24に示すように、USB-HDD2040は、コントローラ2341、HDD2342、およびSSD2343等を備えている。HDD2342およびSSD2343はATA規格に対応するストレージである。コントローラ2341は、USB規格のコマンドとATA規格のコマンドとを変換するブリッジデバイスである。USB/ATAブリッジコントローラ2341は、USBコントローラ14Bから発行されたUSB規格のコマンドをATA規格のコマンドに変換し、変換されたコマンドをHDD2342またはSSD2343に発行する。コントローラ2341は、HDD2342またはSSD2343にから発行されたATA規格のコマンドをUSB規格のコマンドに変換し、変換されたコマンドをUSBコントローラ14Bに発行する。SSD2343の少なくとも一部の領域は、HDD2340のキャッシュデバイスとして用いられる。キャッシュドライバ2320は、キャッシュ管理情報2401を格納するための領域を主メモリ13内に確保した後、キャッシュ制御処理を開始する。キャッシュ管理情報2401は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401をSSD2343内にキャッシュ管理情報2411として記録する。起動時に、キャッシュドライバによってキャッシュ管理情報2411はキャッシュ管理情報2401として主メモリ13にロードされる。なお、このUSB-HDD2340はドライバ2320がインストールされたコンピュータ2300だけでなく、データ交換のためにドライバがインストールされていないコンピュータに接続されることがある。SSD2343の全領域をHDD2342のキャッシュとして使用する場合、キャッシュドライバがインストールされていないコンピュータではSSD2343をドライバがインストールされていないコンピュータのOSに対して見せる必要がない。SSD2343をドライバがインストールされていないコンピュータのOSに見せると、SSD2343を動作させるための機構が動作することによる内部資源の消費や、使用できなデバイスが見えることによるユーザへの不要な困惑を煽ることになる。本実施形態では、必要なときだけSSDをOSに見せる。キャッシュドライバ2320は、主メモリ13内にロードされて動作可能になると、キャッシュドライバ動作開始通知をUSB-HDD2340に発行する。コントローラ2341は、電源投入後はHDD2342のみをOS110に見せる。キャッシュドライバ2320から発行されたキャッシュドライバ動作開始通知を受領すると、コントローラ2341はSSD2343をOS110に見せる。電源が投入されてからのコントローラ2341およびキャッシュドライバ2320の動作を図25のフローチャートを参照して説明する。電源が投入されると、コントローラ2341は、HDD2342をコンピュータPC2300に対して見せるステップ2501。キャッシュドライバ2320が主メモリ13にロードされ、キャッシュドライバ2320が処理を実行できるようになると、キャッシュドライバ2320は、コントローラ2341に対してドライバ動作開始通知を発行するステップ2502。コントローラ2341は、ドライバ動作開始通知を受信すると、SSD2343をコンピュータ2300に見せるステップ2503。キャッシュドライバ2320は、コントローラ2341にキャッシュ管理情報2411のリードアクセス要求を発行するステップ405。コントローラ2341は、要求に応じてキャッシュ管理情報2411をキャッシュドライバ2320に転送するステップ406。キャッシュドライバ2320は、転送されたキャッシュ管理情報2411をキャッシュ管理情報2401として主メモリ13内に格納するステップ407。キャッシュ管理情報2401の格納後、キャッシュドライバ2320は、ハードディスクドライブ2342のキャッシュデータの管理を開始するステップ408。本実施形態によれば、HDD2342とSSD2343とをそれぞれコンピュータ2300に見せることで、同じデバイスに対しては同時に1つのコマンドしか発行できないようなOSであっても、HDDとSSDの両方にコマンドを同時に発行できる。第9の実施形態:ライトトレースUSB-HDD2040およびUSB-HDD2040を制御する情報処理装置の構成について図26を参照して説明する。図26は、第9の実施形態の情報処理装置の主要部を示すブロック図である。キャッシュドライバ2320は、コンピュータが起動するときに主メモリ13にロードされ動作を開始する。OS110からシャットダウンの通知を受け取ると、キャッシュドライバ2320はキャッシュディレクトリなどのキャッシュ管理情報2401をSSD2343の管理データ領域内にキャッシュ管理情報2411として格納する。コンピュータが再起動されると、キャッシュドライバ2320は再び主メモリ13にロードされ動作を開始する。BIOSのようなキャッシュドライバが動作する前にHDDを制御するモジュールにキャッシュを管理する機能がない場合、このモジュールを介してライトされたデータがキャッシュにヒットしていた場合、キャッシュドライバはHDDのデータが書き換えられたことを知らないので、HDDとキャッシュにデータの不整合が発生してしまう。また、USB-HDD2340が別のコンピュータで使用された場合、HDD2342のデータが書き換えられたことを知らないので、HDD2342とSSD2343内のキャッシュデータとの間にデータの不整合が発生している可能性があるため、すべてのキャッシュデータを無効化する必要がある。本実施形態では、このようなケースでもデータ不整合を発生させずに、再起動前に学習したデータを使用できるようにするものである。USB-HDD2340のコントローラ2641は、ホストから発行されたライトコマンドをトレースする機能と、トレース有効フラグとを管理する機能を有する。コントローラ2641は、例えばトレースデータとトレース有効フラグとをHDD2342内に設けられたトレース管理情報2613内に記録する。トレース管理情報2613は、図27に示すように、トレース有効フラグ2701とトレース領域2702とを有する。トレース管理情報2613は、コントローラ2641とキャッシュドライバ2320との双方から参照と変更が可能である。トレース結果とトレース有効フラグは、不揮発性の記憶装置に記録されるのであれば、SSD2343内に記録しなくても良い。トレース有効フラグ2701の初期値はOFFである。コントローラ2641は、トレース有効フラグの値がONの場合、ライトコマンドの対象アドレスをトレース領域2702に記録する。トレース領域が満杯になった場合、コントローラ2641は、トレース有効フラグの値をOFFにする。キャッシュドライバ2320は、動作開始時にトレース有効フラグ2701の値を参照する。値がOFFの場合、キャッシュドライバ2320は、キャッシュの整合性を保証できないと判断し、主メモリ13内のキャッシュ管理情報2401を初期化してキャッシュデータ2412になにも記録されていない状態にする。値がONの場合、キャッシュドライバ2320は、トレース領域2702内のトレースデータを参照し、キャッシュドライバ動作していない期間にライトされたアドレスがキャッシュにヒットしている場合は、そのキャッシュデータを無効化する。すべてのトレースデータに対して処理が完了したら、キャッシュドライバ2320は、トレース有効フラグの値をOFFにする。キャッシュドライバ2320がOS110からシャットダウン通知を受領し、シャットダウン処理が完了した場合、およびUSB-HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ2320は、トレース有効フラグをONにする。コントローラによって実行される処理の手順を図28のフローチャートを参照して説明する。コントローラ2641は、動作開始時にトレース有効フラグ2701の値を参照し、値がONであるかを判定するステップ2801。ONであると判定した場合ステップ2801のYes、コントローラ2641は、アクセスがあったらライトアクセスであるかを判定するステップ2802。ライトアクセスであると判定した場合ステップ2802のNo、コントローラ2641は、トレース領域2702内にトレースデータを記録することが可能であるかを判定するステップ2803。記録可能であると判定した場合ステップ2803のYes、コントローラ2641は、トレース領域2702にトレースデータを記録するステップ2803。記録可能ではないと判定した場合ステップ2803のNo、コントローラ2641は、トレース有効フラグ2701の値をOFFに書き替えるステップ2805。次に、キャッシュドライバ2320によって実行される処理の手順を図29のフローチャートを参照して説明する。キャッシュドライバ2320は、動作開始時にトレース有効フラグ2701の値を参照し、値がONであるかを判定するステップ2901。ONではないと判定した場合ステップ2901のNo、キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401を初期化してキャッシュデータ2412になにも記録されていない状態にするステップ2908。ONであると判定した場合ステップ2901のYes、キャッシュドライバ2320は、SSD2343内のキャッシュ管理情報2411を主メモリ13のキャッシュ管理情報2401領域に読み出し、トレースデータを処理する。キャッシュドライバ2320は、トレース領域2702内に読み出されていないトレースデータがあるかを判定するステップ2902。トレースデータがあると判定した場合ステップ2902のYes、トレース領域2702内から一つのトレースデータを読み出すステップ2903。キャッシュドライバ2320は、キャッシュ管理情報2401に基づいてトレースデータに記録されているアドレス対応するデータがキャッシュデータにヒットするかを判定するステップ2904。ヒットしたと判定した場合ステップ2904のYes、キャッシュドライバ2320は、トレースデータに対応するタグデータを破棄するステップ2905。ヒットしないと判定した場合ステップ2904のNo、またはステップ2905の後、キャッシュドライバ2320は、キャッシュドライバ2320は、ステップ2902からの処理を順次実行する。トレースデータがないと判定した場合ステップ2902のNo、キャッシュドライバ2320は、トレース有効フラグ2701の値をOFFに書き替えるステップ2906。ステップ2906の後、シャットダウン処理が完了した場合、またはUSB-HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ2320は、トレース有効フラグ2701の値をONに書き替えるステップ2907。本実施形態は、ハイブリッドHDDだけでなく、図30に示すような独立のHDD2342とSSD2343とでキャッシュの動作をさせるときにも使用できる。この場合、HDD2342内にホストから発行されたライトコマンドをトレースする機能と、不揮発性のトレース有効フラグとを管理する機能を有するコントローラ3001を設ける。本実施形態の場合、HDDに対するライトコマンドをトレースすることにより、キャッシュドライバ2320が動作しない環境で、このHDDが使用され、一部のデータが書き換えられた場合でも、キャッシュ全体を無効化せずに、書き換えられたデータのみを無効化し、他のデータは有効にすることが可能になる。第10の実施形態:ライトトレース識別子本実施形態では、HDD制御部に機能を追加することにより、計算機システムの再起動後にも、再起動前に学習したデータを使用できるようにし、同じキャッシュドライバを有する他の計算機システムでHDDが書き換えられてもデータの整合性を保証するものである。次に、USB-HDD2040およびUSB-HDD2040を制御する情報処理装置の構成について図31を参照して説明する。図31は、第10の実施形態の情報処理装置の主要部を示すブロック図である。USB-HDD2340のコントローラ3141は、ホストから発行されたライトコマンドをトレースする機能と、キャッシュドライバ識別子を管理する機能を有する。コントローラ3141は、例えばトレースデータとキャッシュドライバ識別子とをHDD2342内に設けられたトレース管理情報3101内に記録する。トレース管理情報3113は、図32に示すように、キャッシュドライバ識別子格納領域3201とトレース領域2702とを有する。キャッシュドライバ識別子格納領域3201がクリアされている状態は、キャッシュドライバ識別子が格納されていないことを表す。キャッシュドライバ識別子格納領域3201の初期値はクリア状態である。トレース管理情報3101は、コントローラ3141とキャッシュドライバ3120との双方から参照と変更が可能である。トレース結果とトレース有効フラグは、不揮発性の記憶装置に記録されるのであれば、ハードディスクドライブ2342内に記録しなくても良い。コントローラ3141は、キャッシュドライバ識別子格納領域3201がクリア状態でない場合、ライトコマンドの対象アドレスをトレース領域2702に記録する。トレース領域2702が満杯になった場合、キャッシュドライバ識別子格納領域3201をクリアする。キャッシュドライバ3120は自身を識別するためのユニークな識別子3120Aを生成する。同じキャッシュドライバであっても、異なるコンピュータで動作するキャッシュドライバは異なる識別子を有する。例えば、キャッシュドライバ3120は、キャッシュドライバ3120のインストール時間に基づいて識別子3120Aを生成する。また、キャッシュドライバ3120は、オペレーティングシステムがインストールされているHDDのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120は、コンピュータのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120のオペレーティングシステムのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120のオペレーティングシステムがユーザの指紋を示す指紋データに基づいて識別子3120Aを生成する。キャッシュドライバ3120は、動作開始するときにキャッシュドライバ識別子格納領域3201内のキャッシュドライバ識別子およびドライバ3120内のキャッシュドライバ識別子3120Aを参照し、二つの識別子が一致するかを判定する。二つの識別子が一致しない場合に、キャッシュドライバ3120は、キャッシュの整合性を保証できないと判断し、キャッシュの全内容を破棄する。二つの識別子が一致する場合、キャッシュドライバ3120は、トレース領域2702内のトレースデータを参照し、キャッシュドライバ動作していない期間にライトされたアドレスがキャッシュにヒットしている場合は、そのキャッシュデータを無効化する。すべてのトレースデータに対する処理が完了したら、キャッシュドライバ識別子格納領域3201をクリアする。キャッシュドライバ3120がOS110からシャットダウン通知を受領し、シャットダウン処理が完了したとき、および、このHDD2340の安全な取り外しに伴う処理が完了したとき、キャッシュドライバ識別子格納領域3201に自身の識別子3120Aを書き込む。コントローラ3141によって実行される処理の手順を図33のフローチャートを参照して説明する。コントローラ3141は、動作開始時に識別子がクリア状態であるかを判定するステップ3301。クリア状態でないと判定した場合ステップ3301のNo、コントローラ3141は、アクセスがあったらライトアクセスであるかを判定するステップ3302。ライトアクセスであると判定した場合ステップ3302のNo、コントローラ3141は、トレース領域2702内にトレースデータを記録することが可能であるかを判定するステップ3303。記録可能であると判定した場合ステップ3303のYes、コントローラ3141は、トレース領域2702にトレースデータを記録するステップ3303。記録可能ではないと判定した場合ステップ3303のNo、コントローラ3141は、キャッシュドライバ識別子格納領域3201の値をクリアするステップ3305。次に、キャッシュドライバ3120によって実行される処理の手順を図34のフローチャートを参照して説明する。キャッシュドライバ3120は、動作開始時に識別子3120Aの値とキャッシュドライバ識別子格納領域3201に格納されている値とが一致するかを判定するステップ3401。一致していないと判定した場合ステップ3401のNo、キャッシュドライバ3120は、主メモリ13内のキャッシュ管理情報2401を初期化し、キャッシュデータ2412に何も記録されていない状態にするステップ3408。一致すると判定した場合ステップ3401のYes、キャッシュドライバ3120は、SSD2343内のキャッシュ管理情報を主メモリ13内のキャッシュ管理情報2401領域に読み出し、トレースデータを処理する。キャッシュドライバ3120は、トレース領域2702内にトレースデータがあるかを判定するステップ3402。トレースデータがあると判定した場合ステップ3402のYes、トレース領域2702内から一つのトレースデータを読み出すステップ3403。キャッシュドライバ3120は、キャッシュ管理情報2401に基づいてトレースデータに記録されているアドレス対応するデータがキャッシュデータにヒットするかを判定するステップ3404。ヒットしたと判定した場合ステップ3404のYes、キャッシュドライバ3120は、トレースデータに対応するタグデータを破棄するステップ3405。ヒットしないと判定した場合ステップ3404のNo、またはステップ3405の後、キャッシュドライバ3120は、ステップ3402からの処理を順次実行する。トレースデータがないと判定した場合ステップ3402のNo、キャッシュドライバ3120は、キャッシュドライバ識別子格納領域3201内のデータをクリアするステップ3406。ステップ3406の後、ステップ3408の後、シャットダウン処理が完了した場合、またはUSB-HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ3120は、キャッシュドライバ識別子格納領域3201に識別子3120Aの値を書き込むステップ3407。第9の実施形態では、HDDがキャッシュドライバが動作しているコンピュータと、キャッシュドライバが動作していない別のコンピュータで交互に使用する場合には有効であるが、同じキャッシュドライバを有する複数のコンピュータが存在し、そのコンピュータ間でこのHDDを交互に使用する場合に、データの整合性を保証できなかった。たとえば、コンピュータ-AにHDDを接続し、HDDを安全な取り外すとフラグはONになるが、このHDDをコンピュータ-Bに接続するとキャッシュドライバが動作を開始するときにフラグをOFFにするのでライトアクセスはトレースされない。コンピュータ-BからこのHDDを安全に取り外し、コンピュータ-Aに接続すると、コンピュータ-Bでデータをライトしたにも関わらずフラグがONでトレースデータが存在しない状態となってしまう。本実施形態では、フラグの代わりにドライバによって生成されたユニークな識別子によって管理することで、キャッシュドライバを有する複数のコンピュータの間でHDDを移動させても、キャッシュの整合性を保つことが可能になる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"