(57)【要約】【課題】アクセスレイテンシが大きな記憶装置に格納されたデータをアクセスレイテンシが小さな記憶装置にキャッシュする場合に最適なデータをキャッシュする。【解決手段】ハードディスクドライブ１２６と、ハードディスクドライブ１２６よりもアクセスレイテンシが小さいフラッシュメモリ１２７と、アイドル状態のハードディスクドライブ１２６にデータ読み出し要求を発行してからハードディスクドライブ１２６からデータが読み出される迄の時間を測定する手段と、データ読み出しが始まってから前記測定された時間に基づく準備時間が経過するまでの間にハードディスクドライブ１２６から読み出されるデータを、フラッシュメモリ１２７に書き込む手段とを具備することを特徴とする情報処理装置。【選択図】      図２
2007272812.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と、
第１の記憶装置よりもアクセスレイテンシが小さい第２の記憶装置と、
アイドル状態の前記第１の記憶装置にデータ読み出し要求を発行してから前記第1の記憶装置からデータが読み出される迄の時間を測定する手段と、
データ読み出しが始まってから前記測定された時間に基づく準備時間が経過するまでの間に前記第１の記憶装置から読み出されるデータを、前記第２の記憶装置に書き込む手段とを具備することを特徴とする情報処理装置。
【請求項２】
前記データ読み出し要求が発行された場合に、前記第１の記憶装置がアイドル状態であるか否かを判別する手段と、
前記第１の記憶装置がアイドル状態であると判別された場合、前記第２の記憶装置に書き込まれているデータあるか否かを判別する手段と、
前記第２の記憶装置に前記書き込まれているデータがある場合、前記第２の記憶装置から前記書き込まれているデータを読み出す手段と、
前記第２の記憶装置に前記書き込まれているデータがない場合、前記第１の記憶装置からデータを読み出す手段とを具備することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ読み出し要求に対応する前記前記第２の記憶装置に書き込まれている全データを前記第２の記憶装置から読み出すのにかかる読出時間を測定する手段と、
前記データ読み出しが始まってから前記読出時間および前記準備時間に基づく時間が経過するまでの間に前記第１の記憶装置から読み出されるデータを、第２の記憶装置に書き込む手段とを具備することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１の記憶装置に格納された各データにそれぞれ設定された重要度を格納する第３の記憶装置と、
前記書き込み手段が前記第２の記憶装置にデータを書き込む場合に、前記重要度に対応するランク情報を含むキャッシュ情報を生成する手段と、
前記第２の記憶装置に書き込まれていないデータのデータ読み出し要求が発行された場合、前記第２の記憶装置に前記書き込まれていないデータを書き込むための領域があるか否かを判別する手段と、
前記書き込むための領域がないと判別された場合に、前記書き込まれていないデータの重要度より低いランク情報のデータが前記第２の記憶装置に書き込まれているか否かを判別する手段とを具備し、
前記書き込まれていないデータの重要度より低いランク情報のデータがある場合、前記書き込み手段は、前記ランク情報が低いデータが書き込まれている領域に前記書き込まれていないデータを書き込み、
前記書き込まれていないデータの重要度より低いランク情報のデータが無い場合、前記書き込み手段は、前記書き込まれていないデータを第２の記憶装置に書き込まないことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記第１の記憶装置はハードディスクドライブであり、前記第２の記憶装置は不揮発性半導体メモリであることを特徴とする請求項１記載の情報処理装置。
【請求項６】
第１の記憶装置と、第１の記憶装置よりもアクセスレイテンシが小さい第２の記憶装置とを具備する情報処理装置の制御方法であって、
アイドル状態の前記第１の記憶装置にデータ読み出し要求を発行してから前記第1の記憶装置からデータが読み出される迄の時間を測定し、
データ読み出しが始まってから前記測定された時間に基づく準備時間が経過するまでの間に前記第１の記憶装置から読み出されるデータを、第２の記憶装置に書き込むことを特徴とする制御方法。
【請求項７】
前記データ読み出し要求が発行された場合に、前記第１の記憶装置がアイドル状態であるか否かを判別し、
前記第１の記憶装置がアイドル状態であると判別された場合、前記第２の記憶装置に書き込まれているデータあるか否かを判別し、
前記第２の記憶装置に前記書き込まれているデータがある場合、前記第２の記憶装置から前記書き込まれているデータを読み出し、
前記第２の記憶装置に前記書き込まれているデータがない場合、前記第１の記憶装置からデータを読み出すことを特徴とする請求項６記載の制御方法。
【請求項８】
前記データ読み出し要求に対応する前記前記第２の記憶装置に書き込まれている全データを前記第２の記憶装置から読み出すのにかかる読出時間を測定する手段と、
前記データ読み出しが始まってから前記読出時間および前記準備時間に基づく時間が経過するまでの間に前記第１の記憶装置から読み出されるデータを、第２の記憶装置に書き込むことを特徴とする請求項７記載の制御方法。
【請求項９】
前記第１の記憶装置に格納された各データにそれぞれ設定された重要度を格納する第３の記憶装置と、
前記第２の記憶装置にデータを書き込む場合に、前記重要度に対応するランク情報を含むキャッシュ情報を生成し、
前記第２の記憶装置に書き込まれていないデータのデータ読み出し要求が発行された場合、前記第２の記憶装置に前記書き込まれていないデータを書き込むための領域があるか否かを判別し、
前記書き込むための領域がないと判別された場合に、前記書き込まれていないデータの重要度より低いランク情報のデータが前記第２の記憶装置に書き込まれているか否かを判別し、
前記書き込まれていないデータの重要度より低いランク情報のデータがある場合、前記ランク情報が低いデータが書き込まれている領域に前記書き込まれていないデータを書き込み、
前記書き込まれていないデータの重要度より低いランク情報のデータが無い場合、前記書き込まれていないデータを第２の記憶装置に書き込まないことを特徴とする請求項６記載の制御方法。
【請求項１０】
前記第１の記憶装置はハードディスクドライブであり、前記第２の記憶装置は不揮発性半導体メモリであることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項１１】
第１の記憶部と、
第１の記憶部よりもアクセスレイテンシが小さい第２の記憶部と、
アイドル状態の前記第１の記憶部にデータ読み出し要求を発行してから前記第1の記憶部からデータが読み出される迄の時間を測定する手段と、
データ読み出しが始まってから前記測定された時間に基づく準備時間が経過するまでの間に前記第１の記憶部から読み出されるデータを、第２の記憶部に書き込む手段とを具備することを特徴とする記憶装置。
【請求項１２】
前記データ読み出し要求が発行された場合に、前記第１の記憶部がアイドル状態であるか否かを判別する手段と、
前記第１の記憶部がアイドル状態であると判別された場合、前記第２の記憶部に書き込まれているデータあるか否かを判別する手段と、
前記第２の記憶部に前記書き込まれているデータがある場合、前記第２の記憶部から前記書き込まれているデータを読み出す手段と、
前記第２の記憶部に前記書き込まれているデータがない場合、前記第２の記憶部に書き込まれていないデータを前記第１の記憶部から読み出す手段とを具備することを特徴とする請求項１１記載の記憶装置。
【請求項１３】
前記データ読み出し要求に対応する前記前記第２の記憶部に書き込まれている全データを前記第２の記憶部から読み出すのにかかる読出時間を測定する手段と、
前記データ読み出しが始まってから前記読出時間および前記準備時間に基づく時間が経過するまでの間に前記第１の記憶部から読み出されるデータを、第２の記憶部に書き込む手段とを具備することを特徴とする請求項１２記載の記憶装置。
【請求項１４】
前記第１の記憶部に格納された各データにそれぞれ設定された重要度を格納する第３の記憶部と、
前記書き込み手段が前記第２の記憶部にデータを書き込む場合に、前記重要度に対応するランク情報を含むキャッシュ情報を生成する手段と、
前記第２の記憶部に書き込まれていないデータのデータ読み出し要求が発行された場合、前記第２の記憶部に前記書き込まれていないデータを書き込むための領域があるか否かを判別する手段と、
前記書き込むための領域がないと判別された場合に、前記書き込まれていないデータの重要度より低いランク情報のデータが前記第２の記憶部に書き込まれているか否かを判別する手段とを具備し、
前記書き込まれていないデータの重要度より低いランク情報のデータがある場合、前記書き込み手段は、前記ランク情報が低いデータが書き込まれている領域に前記書き込まれていないデータを書き込み、
前記書き込まれていないデータの重要度より低いランク情報のデータが無い場合、前記書き込み手段は、前記書き込まれていないデータを第２の記憶部に書き込まないことを特徴とする請求項１１記載の記憶装置。
【請求項１５】
前記第２の記憶装置は不揮発性半導体メモリであることを特徴とする請求項１１記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の記憶装置に記憶されたデータをキャッシュするための第２の記憶装置を有する情報処理装置、および制御方法に関する。
【背景技術】
【０００２】
従来、アイドル時のリードアクセスレイテンシが大きなＨＤＤなどのストレージからＯＳやアプリケーションを読み出す場合に、リードアクセスレイテンシが小さい半導体メモリをキャッシュに使用することで、ＯＳやアプリケーションの起動を短縮するという方法が考えられている（特許文献１）。
【特許文献１】特開平６−１７５９２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、非アイドル時のシーケンシャルなデータ転送速度は、半導体メモリよりもハードディスクドライブの方が速い。シーケンシャルに記録されているブートプログラムやアプリケーションプログラムでは、キャッシュとして使用する半導体メモリよりもハードディスクドライブへ直接アクセスした方が早いため、キャッシュ元（ＨＤＤ）かキャッシュ先(半導体メモリ)かどちらへアクセスした方が速度的に有利なのかという観点で、キャッシュ方法が十分に考慮されていなかった。
【０００４】
本発明の目的は、アクセスレイテンシが大きな記憶装置に格納されたデータをアクセスレイテンシが小さな記憶装置にキャッシュする場合に最適なデータをキャッシュすることが可能な情報処理装置、および制御方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一例に係わる情報処理装置は、第１の記憶装置と、第１の記憶装置よりもアクセスレイテンシが小さい第２の記憶装置と、アイドル状態の前記第１の記憶装置にデータ読み出し要求を発行してから前記第1の記憶装置からデータが読み出される迄の時間を測定する手段と、データ読み出しが始まってから前記測定された時間に基づく準備時間が経過するまでの間に前記第１の記憶装置から読み出されるデータを、前記第２の記憶装置に書き込む手段とを具備することを特徴とする。
【発明の効果】
【０００６】
アクセスレイテンシが大きな記憶装置に格納されたデータをアクセスレイテンシが小さな記憶装置にキャッシュする場合に最適なデータをキャッシュすることが可能になる。
【発明を実施するための最良の形態】
【０００７】
本発明の実施の形態を以下に図面を参照して説明する。
【０００８】
図１は本発明の一実施形態に係る情報処理装置としてのノートブック型のパーソナルコンピュータの構成の一例を示す図である。
【０００９】
パーソナルコンピュータ１０は、コンピュータ本体１２と、ディスプレイユニット１４とから構成されている。ディスプレイユニット１４には、表示部であるＬＣＤ（Liquid Crystal Display）１６が組み込まれている。
【００１０】
ディスプレイユニット１４は、コンピュータ本体１２の上面を覆う開放位置とコンピュータ本体１２の上面が露出する閉塞位置との間を回動自在に変化するように、コンピュータ本体１２の奥手側の端部に設けられたヒンジ（支持部）１８に取り付けられている。
【００１１】
コンピュータ本体１２は薄い箱形の筐体を有しており、その筐体上面中央部には、キーボード２０が設けられる。コンピュータ本体１２の手前側の筐体部分上面にはパームレストが形成されている。パームレストのほぼ中央部には、操作手段としてのタッチパッド２２、およびタッチパッドコントロールボタン２６が設けられる。コンピュータ本体１２の奥側の筐体部分上面には、コンピュータ本体１２の電源をオン／オフするためのパワーボタン２８が配置されている。
【００１２】
次に、図２を参照して、本コンピュータのシステム構成の一例について説明する。
【００１３】
本コンピュータは、図２に示されているように、ＣＰＵ１０２、ノースブリッジ１０４、メインメモリ１１４、グラフィクスコントローラ１０８、サウスブリッジ１０６、ＢＩＯＳ−ＲＯＭ１２０、ハードディスクドライブ（ＨＤＤ）１２６、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４、不揮発性半導体メモリであるフラッシュメモリ（ＦＬＡＳＨ）１２７等を備えている。
【００１４】
ＣＰＵ１０２は本コンピュータの動作を制御するために設けられたプロセッサであり、第１の記憶装置としてのハードディスクドライブ（ＨＤＤ）１２６からメインメモリ１１４にロードされる、オペレーティングシステム（ＯＳ）および各種アプリケーションプログラムを実行する。
【００１５】
第２の記憶装置としてのフラッシュメモリ１２７は、ＰＣＩバスに接続された不揮発性メモリであり、ハードディスクドライブ１２６の一部のデータを持つキャッシュとして使用することにする。フラッシュメモリ１２７のアクセスレイテンシは、ハードディスクドライブ１２６のアクセスレイテンシより小さい。
【００１６】
また、ＣＰＵ１０２は、ＢＩＯＳ−ＲＯＭ１２０に格納されたシステムＢＩＯＳ（Basic Input Output System）をメインメモリ１１４にロードした後、実行する。システムＢＩＯＳはハードウェア制御のためのプログラムである。
【００１７】
ノースブリッジ１０４はＣＰＵ１０２のローカルバスとサウスブリッジ１０６との間を接続するブリッジデバイスである。ノースブリッジ１０４には、メインメモリ１１４をアクセス制御するメモリコントローラを内蔵している。また、ノースブリッジ１０４は、ＡＧＰ（Accelerated Graphics Port）バスなどを介してグラフィクスコントローラ１０８との通信を実行する機能も有している。
【００１８】
グラフィクスコントローラ１０８は本コンピュータのディスプレイモニタとして使用されるＬＣＤ１６を制御する表示コントローラである。このグラフィクスコントローラ１０８はビデオメモリ（ＶＲＡＭ）を有しており、ＯＳ／アプリケーションプログラムによってビデオメモリに描画された表示データから、ＬＣＤ１６に表示すべき表示イメージを形成する映像信号を生成する。グラフィクスコントローラ１０８によって生成された映像信号はラインに出力される。
【００１９】
サウスブリッジ１０６は、ＰＣＩ（Peripheral Component Interconnect）バスおよびＬＰＣ（Low Pin Count）バスにそれぞれ接続されている。
【００２０】
エンベデッドコントローラ／キーボードコントローラＩＣ１２４は、キーボード２０、タッチパッド２２、およびタッチパッドコントロールボタン２６のコントロールを行う。エンベデッドコントローラ／キーボードコントローラＩＣ１２４は、コンピュータ１０のシステム状態に関わらず、各種のデバイス（周辺装置やセンサ、電源回路等）を監視し制御するワンチップ・マイコンである。
【００２１】
通常、ＣＰＵ１０２は、ハードディスクドライブ１２６に記録されているＯＳやアプリケーション等のファイルをメモリ１１４へロードして実行する。しかし、ハードディスクドライブ１２６は電力節約モードなどのアイドル状態にある場合、通常よりも極端にアクセスに時間がかかることがある。
【００２２】
従って、ハードディスクドライブ１２６がアイドル状態であり、データ要求処理が通常よりも長いと判断できる場合は、必要なデータがフラッシュメモリ１２７に存在すれば、フラッシュメモリ１２７からデータを読み出すことで、全体のロード時間を早くできる。ただし、実際にどちらのデバイスから読み出す方が早いかは、ハードディスクドライブ１２６をアイドル状態から定常アクセス状態への移行過程において変化することになる。
【００２３】
図３を参照して、フラッシュメモリ１２７のデータ転送レートと、アイドル状態のハードディスクドライブに転送要求を行ってからのハードディスクドライブ１２６のデータ転送レートを示す。
【００２４】
フラッシュメモリ１２７へのデータ要求はほぼ一定の速度に見えるが、ハードディスクドライブ１２６に対するデータ転送（データ読み出し）要求は、アイドル状態におけるデータ読出要求の開始時点を原点とすると、当初はハードディスクドライブ１２６内のウォームアップ処理が始まるだけで、データを読み出すことができない。しかし、ある程度の時間を経ると、データを読み出すことができるようになり、分岐時間Ｔｂを境にしてデータのアクセス速度は逆転することになる。従って、正確な分岐時間Ｔｂがいつなのかを知る手段があればよいことになるが、一般的にこのタイミングを知ることは難しい。
【００２５】
そこで、図４に示すデータの転送要求を発行した時刻Ｔtrから最初のデータを取得する時刻Ｔdrまでの時間をシステムで測定し、それを平均化したものを平均ウォームアップ時間Ｔｗとする。そして、この平均ウォームアップ時間Ｔｗを分岐時間Ｔｂの代わりとして使用することを考える。
【００２６】
一方、上述のどちらのデバイスへアクセスした方が早いかを判別するための正確な分岐時間Ｔｂが仮に知ることができたとしても、フラッシュメモリ１２７の中に、必要なデータが存在しない場合には意味がないため、分岐時間Ｔｂまでにシステムが要求すると予想されるデータをフラッシュメモリ１２７へキャッシュしておく必要がある。
【００２７】
このキャッシュすべきデータを決める方法を説明するために、図５において、キャッシュ無しの状態で、キャッシュするデータを決める例及びその効果を示す。
【００２８】
まず、図５にフラッシュメモリ１２７にキャッシュされたデータがない状態で、フラッシュメモリ１２７にキャッシュするデータを決める流れを示す。システムが要求するデータをデータＳ１，データＳ２，データＳ３，データＳ４，データＳ５，データＳ６という順番で読み出すとする。システムがハードディスクドライブ１２６がアイドル状態であるときに、データの転送要求が完了した時点をＴｓとする。そして、実際に最初のデータを取得した時点をＴｔとする。このとき、転送要求完了時間Ｔｓからデータ取得開始時間Ｔｔまでの時間は、平均ウォームアップ時間Ｔｗに近い時間と考えられる。そこで、転送要求完了時間Ｔｔから平均ウォームアップ時間Ｔｗだけ経過する間に、データ転送が完了したデータについてキャッシュできるようにすれば良いと考えられる。このキャッシュを行うかの判定のため、その基準値となるキャッシュランク$rankを導入する。ここでは、キャッシュランク$rankは０または１のどちらかの値をとり、１の場合にキャッシュするべきと考え、０の場合にキャッシュしないと考える。
【００２９】
表１に、条件式に対応するキャッシュランク値$rankを示す。
【表１】
2007272812.tif 000003
【００３０】
表１に示す条件式にて判定することで、図５のデータＳ１，Ｓ２，Ｓ３をフラッシュメモリ１２７へキャッシュするか否かを判定する。
【００３１】
次に、上述の方法で、フラッシュメモリ１２７にキャッシュしたデータが、次回のデータ転送時に使用される処理を図６を用いて説明する。まず、システムからのデータ転送要求が、図５でキャッシュした場合と同じ順番であるとし、ハードディスクドライブ１２６はアイドル状態を仮定する。システムの処理としては、まず転送要求が来た場合にハードディスクドライブ１２６がアイドル状態であれば、アイドル状態を解除するための処理を行う。
【００３２】
このアイドル状態を解除する方法としては、今読み出したいデータＳ１をハードディスクドライブ１２６に対して転送要求を出す方法があげられる。この方法によれば、続くデータがハードディスクドライブ１２６の先読み処理によって、ハードディスクドライブ１２６内のキャッシュメモリに読み出される可能性が高いためである。
【００３３】
このようにして、ハードディスクドライブ１２６のアイドル状態を解除して、ハードディスクドライブ１２６からの転送ができるようにする一方で、最初に読み出したいデータＳ１，Ｓ２，Ｓ３は、フラッシュメモリ１２７にキャッシュされているので、システムはフラッシュメモリ１２７からデータを読み出すことができる。このように、ハードディスクドライブ１２６のアイドル解除に相当する待ち時間に、必要なデータをフラッシュメモリ１２７から読み出すことができる。
【００３４】
フラッシュメモリ１２７の転送速度が遅い場合には、ハードディスクドライブ１２６のアイドル解除の間で、すべてのキャッシュデータＳ１，Ｓ２，Ｓ３を転送できないが、ハードディスクドライブ１２６の転送が可能になるまでの時間を有効に利用できる。
【００３５】
次に、キャッシュデータが十分にない場合を想定した処理を図７を参照して説明する。
【００３６】
Ｓ１，Ｓ２までのデータはキャッシュされているが、データＳ３はキャッシュされておらず、ハードディスクドライブ１２６のデータ転送が開始できるまでに時間が余ってしまった状況を考える。
【００３７】
基本方針は、平均ウォームアップ時間Ｔｗにアクセスするデータをキャッシュすることであるため、さらに追加でキャッシュする時間が適切に設定できると良い。この追加の時間は、キャッシュへのアクセス時間Ｔａを平均ウォームアップ時間Ｔｗから引いた時間と考える。
【００３８】
つまり、キャッシュランク$rankの判定式を表２と定義すればよい。（表２でＴａ＝０とした場合が表１に相当する。）
【表２】
2007272812.tif 000004
【００３９】
このようにキャッシュランク$rankを、現在の時間ｔ、アイドル状態解除から最初のデータの転送要求が完了した時点Ｔｔ、平均ウォームアップ時間Ｔｗ及びキャッシュへのアクセス時間Ｔａをパラメタにして決めることで、キャッシュするデータを適切に決めることができる。
【００４０】
ところで、いままで、キャッシュランク$rankの値を０または１の値としていたが、多値化制御することでキャッシュの優先度処理が実現できることを図８に示す。ここで、システムやユーザの意図が配慮できるように、キャッシュランク$rankを制御するためのキャッシュ重要度ｗｅｉｇｈｔという値を導入する。このときのキャッシュランク$rankの判定式を表３に示す。
【表３】
2007272812.tif 000005
【００４１】
つまり、キャッシュすべきと判断に使用するキャッシュランク$rankの値を１の代わりにキャッシュ重要度ｗｅｉｇｈｔの値に設定するようにする。
【００４２】
図８でキャッシュランク$rankの制御について、詳しく説明する前に、フラッシュメモリ１２７のキャッシュデータのエントリー管理について図９を参照して説明する。ハードディスクドライブ１２６のデータをフラッシュメモリ１２７にキャッシュしたデータを管理するために、キャッシュ管理テーブルを用意する。
【００４３】
キャッシュ管理テーブルには、フラッシュメモリ１２７のどこに保存しているかを示すキャッシュアドレス、ハードディスクドライブ１２６のどこのデータのキャッシュかを示すキャッシュ対象アドレス、キャッシュエントリに対するキャッシュランク、キャッシュエントリのステータスが記述されている。キャッシュエントリのステータスは、キャッシュエントリの状態を示し、「有効」は使用されているキャッシュエントリであり、「無効」は使用されているが正しいデータがキャッシュされていないエントリであり、「未使用」は使用されていないエントリである。
【００４４】
キャッシュ管理テーブルは、システム動作時ではメモリ上においての管理を想定する。システム起動時にキャッシュ管理テーブルをフラッシュメモリ１２７より読み出し、システム終了時に書き戻すようにすれば、キャッシュ管理の処理コストは大きくならずに済む。また、不意の電源断への対応は、システム起動時にシステム起動中を示すマークをフラッシュメモリ１２７へ記録するようにし、システム終了時にそのマークを削除するようにし、システム起動時にこのマークの存在をチェックすることで、マークがないときにのみにフラッシュメモリ１２７にあるキャッシュ管理テーブルを読み込むようにすれば、間違ったキャッシュ管理テーブルを参照することによる問題も防ぐことができる。
【００４５】
ここで示したキャッシュ管理テーブルは、一例であり、テーブル情報が多少異なっていても問題ない。例えば、キャッシュアドレスは順番に対応していれば、先頭アドレスだけで良いので、キャッシュアドレスは、省略が可能である。また、メモリ上でのキャッシュ管理テーブルとフラッシュメモリ１２７におけるキャッシュ管理テーブルの内容が異なっていても良い。すべて有効なエントリのみで構成して、エントリ数を保存すればよい。
【００４６】
再び、図８を参照して、キャッシュランク制御によるキャッシュの優先度制御について説明する。
【００４７】
図８に示した例では、キャッシュ管理テーブルの初期状態はＣＥ１となっており、データＳ１，Ｓ２がキャッシュされている。それぞれのキャッシュランク$rankは４である。ここで、なんらかのアプリケーション起動を行うタイミングにあるとして、そのアプリケーションの起動速度に対する期待度が低いと想定し、キャッシュ重要度ｗｅｉｇｈｔを２に設定する。キャッシュ重要度は、ハードディスクドライブ１２６の各記録単位(セクタ)毎について予め設定し、その設定は第３の記憶装置としてのメモリ１１４にロードしておく。キャッシュ重要度は、アプリケーション毎の起動頻度などによってＯＳで決めても良いし、ユーザの設定によって決めても良いものとする。なお、キャッシュ重要度をファイル毎に設定しても良い。
【００４８】
ハードディスクドライブ１２６からデータが転送されるタイミング（Ｔｓ１）が来ると、データＳ５０，Ｓ５１をキャッシュするべきと判断し、キャッシュエントリに追加して行き、キャッシュエントリはＣＥ２，ＣＥ３のように変化する。このとき、データＳ５０，Ｓ５１に対するキャッシュランク$rankは、キャッシュ重要度ｗｅｉｇｈｔの値とする。
【００４９】
しばらくして、別のアプリケーションを起動するイベントが発生する。その起動速度に対する期待度が高いと想定し、キャッシュ重要度ｗｅｉｇｈｔを５に設定されている。キャッシュするタイミング（Ｔｓ２）が来た場合、データＳ８０，Ｓ８１をキャッシュしようとする。しかし、データＳ８０を入れたところで、キャッシュエントリが一杯になってしまった（ＣＥ４）。データＳ８１をキャッシュするためには、既存のキャッシュエントリを追い出すか、データＳ８１をキャッシュしないかを判断する必要がある。この判断のため、現在のキャッシュ重要度ｗｅｉｇｈｔと既存のキャッシュエントリ中の最小のキャッシュランク$rankを比較して、キャッシュ重要度ｗｅｉｇｈｔより小さなエントリが存在した場合に、そのエントリと交換することと決める。データＳ８１をハードディスクドライブ１２６から読み出した時点でのキャッシュ重要度ｗｅｉｇｈｔは５であり、データＳ５０，Ｓ５１のキャッシュランク$rankは２であるため、データＳ５０またはＳ５１のどちらかの代わりにデータＳ８１をキャッシュエントリに追加するようにする。データＳ５０及びＳ５１のどちらを追い出すかは、エントリの順番で後ろからなどと決める。
【００５０】
このように、キャッシュ重要度ｗｅｉｇｈｔの設定を追加し、キャッシュ重要度ｗｅｉｇｈｔによってキャッシュランク$rankを決めることで、個々のアプリケーションに対する起動速度の優先制御が可能となる。
【００５１】
キャッシュランクの他の例としては、キャッシュ重要度ｗｅｉｇｈｔを時間の関数として、時間とともに次第に小さくする関数と定義すれば、起動直後のデータを優先的にキャッシュするようにして、既にハードディスクドライブ１２６にアクセスできるようになっている可能性のある起動処理後半のデータを優先的に捨てる制御が可能である。
【００５２】
次に、フローチャートを参照してリード要求処理、ライト要求処理、キャッシュフィル処理について説明する。
【００５３】
図１０は、リード要求処理の手順を示すフローチャートである。図１０を参照してリード要求処理の手順を説明する。
【００５４】
リード要求が発生する（ステップＳ１）と、まずＣＰＵ１０２は、ハードディスクドライブ１２６の状態をチェックし、アイドル状態であるかを判定する（ステップＳ２）。アイドル状態かの判定には、ハードディスクドライブ１２６に備わっている状態チェック用の機能があればそれを使用しても良いし、ハードディスクドライブ１２６へ最後にアクセスした時間を管理して、ある一定以上の時間が経っているかによって判断することもできる。
【００５５】
アイドル状態でない場合（ステップＳ２のＮｏ）、ＣＰＵ１０２は、ハードディスクドライブ１２６に対してリードアクセスする（ステップＳ７）。これは、キャッシュに使用するフラッシュメモリ１２７より転送速度が高速であると考えられるからである。
【００５６】
アイドル状態でない場合（ステップＳ２のＹｅｓ）、ＣＰＵ１０２は、ハードディスクドライブ１２６のアイドル状態を解除する処理を行う（ステップＳ３）。次に、リード要求でのアクセス先のデータがフラッシュメモリ１２７にキャッシュされているかを判定する（ステップＳ４）。このとき図９のキャッシュ管理テーブルを参照すればよい。
【００５７】
キャッシュされていない場合（ステップＳ４のＮｏ）、ＣＰＵ１０２は、ハードディスクドライブ１２６へ読みに行く（ステップＳ７）。キャッシュが存在する場合（ステップＳ４のＹｅｓ）、ＣＰＵ１０２は、フラッシュメモリ１２７からデータをリードする（ステップＳ５）。ＣＰＵ１０２は、次のリード要求があるか否かを判別する（ステップＳ６）。存在する場合（ステップＳ６のＹｅｓ）、ステップＳ４へ戻る。次のリード要求がない場合（ステップＳ６のＮｏ）、ＣＰＵ１０２はリード処理を終了する。
【００５８】
ハードディスクドライブ１２６からデータを読み出したら、ＣＰＵ１０２は、現在のキャッシュ重要度を参照して、値が０であるか否かを判別する(ステップＳ８)。値が０の場合(ステップＳ８のＹｅｓ）、キャッシュする必要はないことがわかるので、終了となる。キャッシュ重要度が０より大きいと判別された場合（ステップＳ８のＮｏ）、キャッシュランク$rankを判定式によって計算する（ステップＳ９）。この判定式は、表３に示した式を使用すればよい。
【００５９】
ＣＰＵ１０２はキャッシュ管理テーブルを参照し、未使用のエントリがあるか否かを判別する（ステップＳ１０）。
【００６０】
未使用のエントリがない場合（ステップＳ１０のＮｏ）、キャッシュ管理テーブル内に、ステップＳ９で計算したキャッシュランク$rankよりも小さなキャッシュランク$rankを持つエントリがあるか否かを判別する（ステップＳ１１）。小さなキャッシュランク$rankを持つエントリがない場合（ステップＳ１１のＮｏ）、キャッシュしないと判定して終了する。
【００６１】
未使用のエントリがある場合（ステップＳ１０のＹｅｓ）、または小さなキャッシュランク$rankを持つエントリが存在すると判別された場合（ステップＳ１１のＹｅｓ）、使用するキャッシュエントリのステータスを「無効」に設定する（ステップＳ１２）。次に、キャッシュエントリに必要なデータとしてキャッシュ対象のハードディスクドライブ１２６のアドレスやキャッシュランク$rankの値を設定する（ステップＳ１３）。最後に、実際にフラッシュメモリ１２７へデータをキャッシュするようにキャッシュフィル処理要求を出し（ステップＳ１４）、終了する。
【００６２】
図１１はライト要求処理の手順を示すフローチャートである。図１１を参照してライト要求処理の手順を説明する。
【００６３】
まず、ライト要求処理が発生した（ステップＳ２０）ら、要求されたデータがフラッシュメモリ１２７にキャッシュされているかを判定する（ステップＳ２１）。キャッシュされていれば、キャッシュエントリのステータスを「無効」に設定する（ステップＳ２２）。次に、ハードディスクドライブ１２６へ実際にライトアクセスする（ステップＳ２３）。更に、「無効」にしたエントリを「有効」にするために、フラッシュメモリ１２７へデータをキャッシュするようにキャッシュフィル処理要求を出し（ステップＳ２４）、終了する。
【００６４】
図１２は、キャッシュフィル要求処理の手順を示すフローチャートである。図１２を参照してキャッシュフィル要求処理の手順を説明する。
【００６５】
キャッシュ管理テーブルを見て、ステータスが無効となっているエントリが存在するかを判定する（ステップＳ３１）。もし、存在する場合（ステップＳ３１のＹｅｓ）、そのエントリのデータをフラッシュメモリ１２７へ書き込むする（ステップＳ３２）。ライトが完了したらそのエントリのステータスを「有効」に設定する（ステップＳ３３）。ステップＳ３１，ステップＳ３２，ステップＳ３３までのステップを「無効」状態のエントリがなくなるまで繰り返し、なくなったら終了する。
【００６６】
上述したキャッシュ方法によって、ハードディスクドライブ１２６に格納されたデータをフラッシュメモリ１２７にキャッシュする場合に最適なデータをキャッシュすることができる。
【００６７】
その結果、速度的に有利になる方のデバイスからデータを読むようにすることができ、ＯＳやアプリケーションの高速起動が期待できる。また、特定のアプリケーションの起動を優先して早くすることも可能となる。
【００６８】
また、通常のＣＰＵキャッシュのように、読み込んだデータを単純にフラッシュメモリへキャッシュした場合には、再用性の低いデータをフラッシュメモリへ書き込む可能性があり、この場合フラッシュメモリの寿命を無駄に縮めてしまうことがある。しかし、キャッシュによるアクセス速度向上の効果が期待できるデータのみを保存するたるため、フラッシュメモリ１２７の書き込み寿命を延ばす効果が期待できる。
【００６９】
なお、キャッシュ重要の設定値をアイドル時のアクセス頻度などから求め、設定タイミングを、アイドル時からのリードのタイミングと考えると、アプリケーションの関与を無くすことができるので、Ｆｌａｓｈデバイスを内蔵するハードディスクドライブ単体の機能として組み込むこともできる。
【００７０】
たとえば、図１３に示すように、ハードディスクドライブ２００は、コントローラ２０１が磁気記憶部２０２またはフラッシュメモリ（ＦＬＡＳＨ）２０３へのデータの読み込み／書き込み処理を制御することによって、上述したキャッシュ制御を行う。
【００７１】
フラッシュメモリの他に、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＯＵＭ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance Random Access Memory）等の不揮発性半導体メモリのデータをキャッシュするメモリとして用いても良い。
【００７２】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００７３】
【図１】本発明の一実施形態に係る情報処理装置としてのノートブック型のパーソナルコンピュータの構成の一例を示す図。
【図２】図１に示したコンピュータのシステム構成の一例を示すブロック図。
【図３】フラッシュメモリのデータ転送レートと、アイドル状態のハードディスクドライブの転送要求を行ってからのハードディスクドライブのデータ転送レートを示す図。
【図４】本発明の一実施形態に関わる平均ウォームアップ時間を説明するための図。
【図５】フラッシュメモリにキャッシュされたデータがない状態で、フラッシュメモリにキャッシュするデータを決める流れを示す図。
【図６】フラッシュメモリにキャッシュしたデータを次回のデータ転送時に使用される処理を説明するための図。
【図７】キャッシュデータが十分にない場合を想定した処理を説明するための図。
【図８】キャッシュランク$rankの値を多値化することでキャッシュの優先度処理が実現できることを説明するための図。
【図９】フラッシュメモリのキャッシュデータのエントリー管理について説明すための図。
【図１０】本発明の一実施形態に関わるリード要求処理の手順を示すフローチャート。
【図１１】本発明の一実施形態に関わるライト要求処理の手順を示すフローチャート。
【図１２】本発明の一実施形態に関わるキャッシュフィル要求処理の手順を示すフローチャート。
【図１３】本発明の一実施形態に関わるハードディスクドライブの構成を示すブロック図。
【符号の説明】
【００７４】
１０…パーソナルコンピュータ，１０２…ＣＰＵ，１０４…ノースブリッジ，１０６…サウスブリッジ，１０８…グラフィクスコントローラ，１１４…メインメモリ，１２０…ＢＩＯＳ−ＲＯＭ，１２６…ハードディスクドライブ，１２７…フラッシュメモリ
【図１】
2007272812.tif 000006
【図２】
2007272812.tif 000007
【図３】
2007272812.tif 000008
【図４】
2007272812.tif 000009
【図５】
2007272812.tif 000010
【図６】
2007272812.tif 000011
【図７】
2007272812.tif 000012
【図８】
2007272812.tif 000013
【図９】
2007272812.tif 000014
【図１０】
2007272812.tif 000015
【図１１】
2007272812.tif 000016
【図１２】
2007272812.tif 000017
【図１３】
2007272812.tif 000018