(57)【要約】【課題】不揮発性半導体メモリをキャッシュとして内蔵する場合におけるデータアクセスを効率的に行うことを実現した情報処理装置を提供する。【解決手段】情報処理装置１の外部記憶装置であるハイブリッドＨＤＤ１９は、記憶部１９６のキャッシュとして半導体不揮発性メモリ１９４を内蔵する。ホスト側からリード要求を受けると、制御部１９１は、記憶部１９６から読み出したデータを、最も最近読み出された順にキャッシュされるように入れ替えを行いながら半導体不揮発性メモリ１９４に格納する。また、ホスト側からライト要求を受けると、制御部１９１は、この書き込みに伴って更新すべきデータが半導体不揮発性メモリ１９４に格納されていないかを調べ、格納されていれば、記憶部１９６へのデータ書き込みと共に、その更新対象データを半導体不揮発性メモリ１９４内において無効化する。【選択図】図２
2010176305.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶装置と、
前記外部記憶装置へのデータの書き込みおよび前記外部記憶装置からのデータの読み出しを実行する本体装置と、
を具備し、
前記外部記憶装置は、
不揮発性の第１の記憶手段と、
不揮発性の第２の記憶手段と、
前記本体装置からデータの読み出しを要求された際、読み出し対象のデータが前記第２の記憶手段に格納されている場合、前記第２の記憶手段に格納されているデータを読み出して前記本体装置に転送し、読み出し対象のデータが前記第２の記憶手段に格納されていない場合、当該読み出し対象のデータを前記第１の記憶手段から読み出して前記本体装置に転送すると共に、当該読み出したデータを前記第２の記憶手段に格納するリード制御手段と、
前記本体装置からデータの書き込みを要求された際、書き込み対象のデータを前記第１の記憶手段に格納すると共に、この書き込みに伴って更新されるべきデータが前記第２の記憶手段に格納されている場合、当該更新されるべきデータを前記第２の記憶手段内において無効化するライト制御手段と、
を有する、
ことを特徴とする情報処理装置。
【請求項２】
前記第２の記憶手段は、前記第１の記憶手段よりも記憶容量が小さく、かつ、前記第１の記憶手段よりもデータの読み出しが高速であって、前記第１の記憶手段よりもデータの更新が低速であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記外部記憶装置は、
前記第１の記憶手段が磁気ディスクを記憶部として備えてなり、
前記第２の記憶手段が不揮発性半導体メモリを記憶部として備えてなる、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記外部記憶装置は、
前記リード制御手段が、データの読み出しを要求する際に前記本体装置が指定するアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータが前記第２の記憶手段に格納されるように、前記第２の記憶手段内におけるデータの入れ替えを実行するデータ管理手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記外部記憶装置は、
前記リード制御手段が、データの読み出しを要求する際に前記本体装置が指定するアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求される頻度が高く、かつ、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータが前記第２の記憶手段に格納されるように、前記第２の記憶手段内におけるデータの入れ替えを実行するデータ管理手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項６】
不揮発性の第１の記憶手段と、
不揮発性の第２の記憶手段と、
データの読み出しを要求された際、読み出し対象のデータが前記第２の記憶手段に格納されている場合、前記第２の記憶手段に格納されているデータを読み出して要求元に転送し、読み出し対象のデータが前記第２の記憶手段に格納されていない場合、当該読み出し対象のデータを前記第１の記憶手段から読み出して要求元に転送すると共に、当該読み出したデータを前記第２の記憶手段に格納するリード制御手段と、
データの書き込みを要求された際、書き込み対象のデータを前記第１の記憶手段に格納すると共に、この書き込みに伴って更新されるべきデータが前記第２の記憶手段に格納されている場合、当該更新されるべきデータを前記第２の記憶手段内において無効化するライト制御手段と、
を具備することを特徴とするデータ記憶装置。
【請求項７】
前記第２の記憶手段は、前記第１の記憶手段よりも記憶容量が小さく、かつ、前記第１の記憶手段よりもデータの読み出しが高速であって、前記第１の記憶手段よりもデータの更新が低速であることを特徴とする請求項６記載のデータ記憶装置。
【請求項８】
前記第１の記憶手段が磁気ディスクを記憶部として備えてなり、
前記第２の記憶手段が不揮発性半導体メモリを記憶部として備えてなる、
ことを特徴とする請求項７記載のデータ記憶装置。
【請求項９】
前記リード制御手段は、データの読み出しを要求する際に要求元が指定するアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータが前記第２の記憶手段に格納されるように、前記第２の記憶手段内におけるデータの入れ替えを実行するデータ管理手段を含むことを特徴とする請求項６記載の情報処理装置。
【請求項１０】
前記リード制御手段は、データの読み出しを要求する際に要求元が指定するアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求される頻度が高く、かつ、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータが前記第２の記憶手段に格納されるように、前記第２の記憶手段内におけるデータの入れ替えを実行するデータ管理手段を含むことを特徴とする請求項６記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば不揮発性半導体メモリを内蔵するハイブリッドＨＤＤ（Hard Disk Drive）等に適用して好適なレスポンス性能の向上化技術に関する。
【背景技術】
【０００２】
近年、ノートブックタイプやデスクトップタイプ等、様々な種類のパーソナルコンピュータが広く利用されている。この種のパーソナルコンピュータは、起動ディスクとする外部記憶装置としてＨＤＤを搭載することが一般的である。
【０００３】
また、最近では、ＨＤＤのレスポンス性能を向上させるために、ＨＤＤに不揮発性メモリを内蔵させ、不揮発性半導体メモリをキャッシュとして利用するといった、いわゆるハイブリッドＨＤＤに関する提案も種々なされている（例えば特許文献１等参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１６７７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
通常、第１の記憶媒体に対するデータアクセスを、第２の記憶媒体をキャッシュとして利用しながら行うとした場合に、データの更新を目的とした書き込みが発生した際、当該更新対象のデータがキャッシュである第２の記憶媒体に存在していたとすると、この第２の記憶媒体に対して当該データの書き込みを実施する。この場合における第１の記憶媒体に対するデータ書き込みは、例えばライトスルー方式を採用していれば即時に、ライトバック方式を採用していれば所定のタイミング到来時に実施される。
【０００６】
ところで、追記型の記憶媒体である不揮発性半導体メモリにおけるデータの更新は、更新前データを無効化して更新後データを新たに書き込むことによって行われる。例えばＳＳＤ（Solid State Drive）などは、複数の不揮発性半導体メモリを搭載するので、更新前データの無効化および更新後データの書き込みを、異なる不揮発性半導体メモリを用いて並列実行することにより、データ更新時におけるレスポンス性能が悪化することを防止している。
【０００７】
一方、ハイブリッドＨＤＤのように、ＨＤＤのキャッシュとして利用する場合には、容量面やコスト面から不揮発性半導体メモリは単体で搭載されることになる。よって、データの読み出しはＨＤＤよりも高速であるものの、場合によっては（データの更新を目的とする場合には）、データの書き込みがＨＤＤよりも低速となり、従前のキャッシュ技術をそのまま適用すると、却ってレスポンス性能を悪化させてしまうおそれがある。
【０００８】
この発明はこのような事情を考慮してなされたものであり、不揮発性半導体メモリをキャッシュとして内蔵する場合におけるデータアクセスを効率的に行うことを実現した情報処理装置およびデータ記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前述した目的を達成するために、この発明の情報処理装置は、外部記憶装置と、前記外部記憶装置へのデータの書き込みおよび前記外部記憶装置からのデータの読み出しを実行する本体装置と、を具備し、前記外部記憶装置は、不揮発性の第１の記憶手段と、不揮発性の第２の記憶手段と、前記本体装置からデータの読み出しを要求された際、読み出し対象のデータが前記第２の記憶手段に格納されている場合、前記第２の記憶手段に格納されているデータを読み出して前記本体装置に転送し、読み出し対象のデータが前記第２の記憶手段に格納されていない場合、当該読み出し対象のデータを前記第１の記憶手段から読み出して前記本体装置に転送すると共に、当該読み出したデータを前記第２の記憶手段に格納するリード制御手段と、前記本体装置からデータの書き込みを要求された際、書き込み対象のデータを前記第１の記憶手段に格納すると共に、この書き込みに伴って更新されるべきデータが前記第２の記憶手段に格納されている場合、当該更新されるべきデータを前記第２の記憶手段内において無効化するライト制御手段と、を有する、ことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、不揮発性半導体メモリをキャッシュとして内蔵する場合におけるデータアクセスを効率的に行うことが実現される。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る情報処理装置（パーソナルコンピュータ）のシステム構成を示す図。
【図２】同実施形態のコンピュータが備えるハイブリッドＨＤＤの構成および動作原理を説明するための概念図。
【図３】同実施形態のコンピュータが備えるハイブリッドＨＤＤの制御部が実行する不揮発性半導体メモリ内におけるデータの入れ替えの基本原理を説明するための図。
【図４】同実施形態のコンピュータにおいてリードコマンドが発行された場合のハイブリッドＨＤＤの動作を説明するための図。
【図５】同実施形態のコンピュータにおいてライトコマンドが発行された場合のハイブリッドＨＤＤの動作を説明するための図。
【図６】同実施形態のコンピュータにおいてライトコマンドが発行された場合のハイブリッドＨＤＤの動作手順を示すフローチャート。
【図７】同実施形態のコンピュータが備えるハイブリッドＨＤＤの制御部がリード要求を学習しながら実行する不揮発性半導体メモリ内におけるデータの入れ替えの基本原理を説明するための図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、この発明の実施形態を説明する。
【００１３】
図１は、本発明の一実施形態に係る情報処理装置１のシステム構成を示す図である。本情報処理装置１は、パーソナルコンピュータ（ＰＣ）として実現されている。
【００１４】
図１に示すように、本コンピュータ１は、ＣＰＵ１１、ノースブリッジ１２、主メモリ１３、表示コントローラ１４、ビデオメモリ（ＶＲＡＭ）１４Ａ、サウスブリッジ１５、サウンドコントローラ１６、ＢＩＯＳ（Basic Input/Output System）−ＲＯＭ１７、ＬＡＮコントローラ１８、ハイブリッドＨＤＤ１９、ＯＤＤ（optical disc drive）２０、無線ＬＡＮコントローラ２１、ＵＳＢコントローラ２２およびエンベデッドコントローラ／キーボードコントローラ（ＥＣ／ＫＢＣ）２３等を備えている。
【００１５】
ＣＰＵ１１は、本コンピュータ１の動作を制御するプロセッサであり、ハイブリッドＨＤＤ１９やＯＤＤ２０から主メモリ１３にロードされる、オペレーティングシステム（ＯＳ）や当該ＯＳ配下で動作する各種アプリケーションプログラムを実行する。また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００１６】
ノースブリッジ１２は、ＣＰＵ１１のローカルバスとサウスブリッジ１５との間を接続するブリッジデバイスである。ノースブリッジ１２には、主メモリ１３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１２は、表示コントローラ１４との通信を実行する機能も有している。
【００１７】
表示コントローラ１４は、本コンピュータ１のアウトプットデバイスとして使用される表示装置を制御するデバイスである。この表示コントローラ１４によって表示信号が生成される。
【００１８】
サウスブリッジ１５は、ＰＣＩ（Peripheral Component Interconnect）バス上およびＬＰＣ（Low Pin Count）バス上の各デバイスを制御する。また、サウスブリッジ１５は、ハイブリッドＨＤＤ１９およびＯＤＤ２０を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラおよびＢＩＯＳ−ＲＯＭ１７をアクセス制御するメモリコントローラが内蔵されている。さらに、サウスブリッジ１５は、サウンドコントローラ１６およびＬＡＮコントローラ１８との通信を実行する機能も有している。
【００１９】
サウンドコントローラ１６は音源デバイスであり、再生対象のオーディオデータをアウトプットデバイスとして使用されるスピーカに出力する。
【００２０】
ＬＡＮコントローラ１８は、例えばEthernet（登録商標）規格の有線通信を実行する有線通信デバイスであり、無線ＬＡＮコントローラ２１は、例えばIEEE 802.11規格の無線通信を実行する無線通信デバイスである。また、ＵＳＢコントローラ２２は、例えばUSB2.0規格のケーブルを介して外部機器との通信を実行する。
【００２１】
ＥＣ／ＫＢＣ２３は、電力管理を行うためのエンベデッドコントローラと、本コンピュータ１のインプットデバイスとして使用されるキーボードやポインティングデバイスを制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このＥＣ／ＫＢＣ２３は、ユーザの操作に応じて本コンピュータ１をパワーオン／パワーオフする機能を有している。
【００２２】
以上のような構成をもつ本コンピュータ１は、起動ディスクとする主要な外部記憶装置として、ハイブリッドＨＤＤ１９を備える。そして、本コンピュータ１は、このハイブリッドＨＤＤ１９のレスポンス性能を維持する（レスポンス性能を悪化させることを防止する）ための仕組みを設けたものであり、以下、この点について詳述する。
【００２３】
図２は、本コンピュータ１が備えるハイブリッドＨＤＤ１９の構成および動作原理を説明するための概念図である。
【００２４】
図２に示すように、ハイブリッドＨＤＤ１９は、制御部１９１、ＡＴＡＣ（AT Attachment Controller）１９２、ＨＤＣ（Hard Disk Controller）１９３、不揮発性半導体メモリ１９４、揮発性半導体メモリ１９５、記憶部１９６等を有している。
【００２５】
制御部１９１は、本ハイブリッドＨＤＤ１９内の動作を制御するマイクロプロセッサである。ＡＴＡＣ１９２は、ホスト側、具体的には、サウスブリッジ１５との間をＡＴＡ  Ｉ／Ｆで接続するコントローラである。ＨＤＣ１９３は、記憶部１９６を駆動制御するコントローラである。
【００２６】
また、不揮発性半導体メモリ１９４は、例えばＮＡＮＤフラッシュであり、揮発性半導体メモリは、例えばＤＲＡＭであり、記憶部１９６は、磁気ディスク（ＨＤ）や磁気ヘッド等からなる本ハイブリッドＨＤＤ１９の記憶部である。ホスト側に論理アドレス空間として認識される本ハイブリッドＨＤＤ１９の物理アドレス空間は、すべて記憶部１９６上に割り当てられ、揮発性半導体メモリ１９５は、この記憶部１９６へ書き込むデータおよび記憶部１９６から読み出されたデータを一時的に格納するために用いられる。また、不揮発性半導体メモリ１９４は、記憶部１９６から読み出されたデータを最近に読み出された順に所定量格納するために用いられる。例えばＮＡＮＤフラッシュである不揮発性半導体メモリ１９４は、磁気ディスクや磁気ヘッド等からなる記憶部１９６よりもデータの読み出し速度が速いので、最近に読み出されたデータほど再び読み出される確率が高いことを考慮すると、たとえ電源がオフされた後に再び電源がオンされた場合であっても、電源オフ直前に読み出されたデータの再読み出しを高速に行えることになり、本ハイブリッドＨＤＤ１９のレスポンス性能を向上させることができる。
【００２７】
図３は、制御部１９１が実行する不揮発性半導体メモリ１９４内におけるデータの入れ替えの基本原理を説明するための図である。
【００２８】
ここでは、記憶部１９６の記憶容量を１２０Ｇバイト、不揮発性半導体メモリ１９４の記憶容量を２Ｇバイト、記憶部１９６から読み出されたデータを不揮発性半導体メモリ１９４内に格納する際の単位であるラインサイズを６４Ｋバイトと想定し、また、キャッシュ技術の１つである４ｗａｙセットアソシアティブ方式を採用するものと想定する。
【００２９】
ホスト側がＩ／Ｏ要求（リードコマンド，ライトコマンド）を発行する際に指定される論理アドレス（ＬＢＡ：Logical Block Address）は、記憶部１９６の記憶容量１２０Ｇバイトを表すのに２８ビットの大きさをもつことになる。ＬＢＡの下位７（０−６）ビットは、ラインサイズ６４Ｋバイトから決定される。即ち、６４Ｋバイト＝１６ビット、１セクタ＝５１２バイト＝９ビットから、１６−９＝７。
【００３０】
また、ＬＢＡの中位１３（７−１９）ビットは、ここではＩｎｄｅｘＬ部と称することとし、不揮発性半導体メモリ１９４内に格納されているデータを管理するディレクトリを参照するためのインデックスとなる。ディレクトリは、制御部１９１が管理するメモリ上におかれ、適宜に不揮発性半導体メモリ１９６に格納される。また、このＩｎｄｅｘＬの１３ビットは、不揮発性半導体メモリ１９６の記憶容量２Ｇバイト、ラインサイズ６４Ｋバイト、Ｗａｙ数４から決定される。即ち、不揮発性半導体メモリ１９６の記憶容量２Ｇバイト＝３１ビット、ラインサイズ６４Ｋバイト＝１６ビット、Ｗａｙ数４＝２ビットから、３１−１６−２＝１３。
【００３１】
そして、ＬＢＡの上位８（２０−２７）ビット、ここではＩｎｄｅｘＨ部と称することとし、ディレクトリに管理されるＩｎｄｅｘＨの値と比較される。ディレクトリは、（ＩｎｄｅｘＬ分の行数）×（セットアソシアティブＷａｙ数分の列数）で構成される表形式のデータ構造体となる。この例の場合、８，１９２行×４列の表になる。
【００３２】
ディレクトリの各列には、ＩｎｄｅｘＨフィールド（Ｈ）と、ＬＲＵ（Least Recently Used）カウンタフィールド（Ｌ）とが設けられる。初期値として、ＩｎｄｅｘＨフィールドにはＩｎｄｅｘＨ部として取り得ない値、例えばハイバリュー（FFFF）、ＬＲＵカウンタフィールドには０が設定される。
【００３３】
いま、ホスト側からリードコマンドが発行されたとすると、ハイブリッドＨＤＤ１９側においては、制御部１９１が、指定されたＬＢＡのＩｎｄｅｘＬ部を検索キーとしてラインごとにディレクトリを参照し、該当行にＬＢＡのＩｎｄｅｘＨ部と一致するＩｎｄｅｘＨが保持されているか各々比較することにより、読み出し対象のデータが不揮発性半導体メモリ１９４内に存在するか否かを判定する。もし、存在していたら、記憶部１９６からの読み出しに代えて、不揮発性半導体メモリ１９４からの読み出しを行うことで高速化を図り、レスポンス性能を向上させる。
【００３４】
この不揮発性半導体メモリ１９４からの読み出しを行った場合、制御部１９１は、当該データに対応する列（Ｗａｙ）のＬＲＵカウンタフィールドの値を最大値に更新する。ＬＲＵカウンタフィールドの値は、０からＷａｙ数（ここでは０−４）の値を取り、制御部１９１は、ここでは、ＬＲＵカウンタフィールドの値を４に更新する。また、この際、更新前の値よりも大きい値をもつ他の列のＬＲＵカウンタフィールドが存在すれば、その値を１ずつデクリメントすべく更新する。この操作により、読み出しが要求された時が時間的に近い順に、ＬＲＵカウンタフィールドは、４→３→２→１、または、初期値である０の値をもつことになる。
【００３５】
読み出し対象のデータが不揮発性半導体メモリ１９４内に存在しない場合は、記憶部１９６からの読み出しが行われることになるが、この際、制御部１９１は、読み出されたデータを不揮発性半導体メモリ１９４内に格納する。その時点で、ＬＢＡのＩｎｄｅｘＬ部が一致する（ＩｎｄｅｘＨ部が異なる）他のデータが既にＷａｙ数分、つまり４つ格納されていたら、ＬＲＵカウンタフィールドの値が最小（１）のデータを追い出して、当該データを入れ替わりに格納する。また、この際、格納したデータのＬＲＵカウンタフィールドの値を最大値に設定し、その他のＬＲＵカウンタフィールドの値を１ずつデクリメントすべく更新する。格納数が４に達していない場合には、空きＷａｙに当該データを格納するすると共に、そのデータのＬＲＵカウンタフィールドの値を最大値に設定し、かつ、他に格納されたデータが存在すれば、それらのＬＲＵカウンタフィールドの値を１ずつデクリメントすべく更新する。
【００３６】
つまり、図４に示すように、本ハイブリッドＨＤＤ１９では、ホスト側からリードコマンドが発行された場合、読み出し対象のデータが不揮発性半導体メモリ１９４内に存在していれば、記憶部１９６よりもデータの読み出し速度の速い不揮発性半導体メモリ１９４からの読み出しを実行する（図４の（１））。また、読み出し対象のデータが不揮発性半導体メモリ１９４内に存在しなければ、記憶部１９６からの読み出しを実行し、近い将来に行われる可能性の高い再読み出しに備えて、読み出されたデータを不揮発性半導体メモリ１９４に格納する（図４の（２））。
【００３７】
このように、不揮発性半導体メモリ１９４からの読み出しを、当該不揮発性半導体メモリ１９４からの読み出しよりも速度の遅い記憶部１９６からの読み出しに代えて実行する仕組みを設けることにより、本ハイブリッドＨＤＤ１９は、レスポンス性能を向上させている。
【００３８】
ところで、本ハイブリッドＨＤＤ１９は、リードコマンドに対するレスポンス性能を向上させるために、１２０Ｇバイトという大容量の記憶部１９６のキャッシュとして、２Ｇバイトという小容量の不揮発性半導体メモリ１９４を内蔵するものである。２Ｇバイト程度の記憶容量の不揮発性半導体メモリ１９４であれば、単体（１チップ）のＮＡＮＤフラッシュで構成されることになる。また、ＮＡＮＤフラッシュで構成される不揮発性半導体メモリ１９４は、追記型の記憶媒体であるので、データの更新は、更新前データを無効化して更新後データを新たに書き込むことによって行われる。
【００３９】
本ハイブリッドＨＤＤ１９に内蔵される不揮発性半導体メモリ１９４は単体のＮＡＮＤフラッシュで構成されるので、更新前データの無効化と、更新後データの書き込みとはシリアルに実行されることになる。従って、データの更新を目的とする書き込みの場合、記憶部１９６よりも時間を要するおそれもある。よって、従前のキャッシュ技術をそのまま適用して、データの書き込みに伴って更新されるべきデータが不揮発性半導体メモリ１９４に存在した場合に、当該データの更新を不揮発性半導体メモリ１９４内において実行すると、却って、ライトコマンドに対するレスポンス性能を悪化させるおそれがある。
【００４０】
このライトコマンドに対するレスポンス性能の悪化を防止するために、本ハイブリッドＨＤＤ１９の制御部１９１は、指定されたＬＢＡのＩｎｄｅｘＬ部を検索キーとしてラインごとにディレクトリを参照し、該当行にＬＢＡのＩｎｄｅｘＨ部と一致するＩｎｄｅｘＨが保持されていれば、そのＩｎｄｅｘＨフィールドおよびＬＲＵカウンタフィールドの値を初期化する。つまり、図５に示すように、ホスト側からライトコマンドが発行された場合、記憶部１９６への書き込みを実行すると共に、この書き込みに伴って更新すべきデータが不揮発性半導体メモリ１９４内に存在していたならば、そのデータの無効化を併せて実行する。また、この時、同一ＩｎｄｅｘＬ内で、初期化前のＬＲＵカウンタフィールドの値よりも小さい他のＬＲＵカウンタフィールド（０以外）が存在したら、それらを１ずつインクリメントする。
【００４１】
このように、不揮発性半導体メモリ１９４内におけるデータの更新を回避する仕組みを設けることにより、本ハイブリッドＨＤＤ１９は、レスポンス性能を維持する（レスポンス性能を悪化させることを防止する）ことを実現する。
【００４２】
図６は、本コンピュータ１においてライトコマンドが発行された場合のハイブリッドＨＤＤ１９の動作手順を示すフローチャートである。
【００４３】
ホスト側からライトコマンドが発行されると、まず、ハイブリッドＨＤＤ１９の制御部１９１は、ホスト側から送られてくるデータの記憶部１９６への書き込みを実行する（ステップＡ１）。続いて、制御部１９１は、この書き込みに伴って更新すべきデータが不揮発性半導体メモリ１９４内に存在するか否かを判定し（ステップＡ２）、存在していたならば（ステップＡ２のＹＥＳ）、不揮発性半導体メモリ１９４内に存在する更新対象データを無効化する（ステップＡ３）。
【００４４】
なお、以上の説明では、ＬＢＡのＩｎｄｅｘＬ部が一致するもの同士を１グループとして、読み出しが要求された時が時間的に近い順に、読み出したデータをＷａｙ数分ずつ不揮発性半導体メモリ１９４に格納していく例を示した。この場合、データの重要度等は考慮されないので、例えば使用頻度の低いデータが読み出された場合においても、（当該データよりも使用頻度の高いデータを追い出して）当該データの不揮発性半導体メモリ１９４への格納が行われる。
【００４５】
そこで、次に、ホスト側からのリード要求を、ハイブリッドＨＤＤ１９側において学習し、再読み出しが行われる確率の高いデータを優先的に不揮発性半導体メモリ１９４に格納することによって、リードコマンドに対するレスポンス性能をより向上させることを実現する仕組みについて説明する。
【００４６】
図７は、制御部１９１がリード要求を学習しながら実行する不揮発性半導体メモリ１９４内におけるデータの入れ替えの基本原理を説明するための図である。
【００４７】
この場合においても、キャッシュ技術の１つである４Ｗａｙセットアソシアティブ方式を採用することを想定するが、ディレクトリは、図示のように、リード学習用として２Ｗａｙ分追加して、（ＩｎｄｅｘＬ分の行数）×（セットアソシアティブＷａｙ数＋リード学習用Ｗａｙ数分の列数）で構成される表形式のデータ構造体とする。よって、この例の場合には、８，１９２行×６（＝４＋２）列の表になる。
【００４８】
また、ディレクトリの各列には、ＩｎｄｅｘＨフィールド（Ｈ）およびＬＲＵカウンタフィールド（Ｌ）に加えて、リードカウンタフィールド（Ｒ）、Ｃａｃｈｅｄビットフィールド（Ｃ）、Ｗａｙポインタフィールド（Ｗ）が設けられる。
【００４９】
リードコマンドが発生した際、指定されたＬＢＡのＩｎｄｅｘＬ部を検索キーとしてディレクトリを参照し、該当行にＬＢＡのＩｎｄｅｘＨ部と一致するＩｎｄｅｘＨが保持されているか各々比較することにより、読み出し対象のデータがディレクトリに登録されているか否かを判定する。もし、登録されていれば、続いて、Ｃａｃｈｅｄビットフィールドを参照し、読み出し対象のデータが不揮発性半導体メモリ１９４内に存在するか否かを判定する。Ｃａｃｈｅｄビットフィールドが”１”であれば、不揮発性半導体メモリ１９４内に存在し、”０”であれば、ディレクトリに登録されているのみで、不揮発性半導体メモリ１９４内には存在しないことを示す。
【００５０】
本ハイブリッドＨＤＤ１９では、ディレクトリは６Ｗａｙ列分の表形式で構成し、実際の不揮発性半導体メモリ１９４へのデータ格納は４Ｗａｙ分行う。そこで、Ｗａｙポインタフィールドを設け、どのＷａｙにデータを格納したかを管理する。つまり、Ｃａｃｈｅｄビットフィールドが”１”であった場合、さらにＷａｙポインタフィールドを参照することにより、目的のデータを不揮発性半導体メモリ１９４から読み出す。この時、ＬＲＵカウンタフィールドの値を最大値（ディレクトリ上のＷａｙ数である６）にし、更新前の値よりも大きい値をもつ他のＬＲＵカウンタフィールドの値を１ずつデクリメントする。
【００５１】
一方、Ｃａｃｈｅｄビットフィールドが”０”の場合、つまり、ディレクトリには登録されているものの、不揮発性半導体メモリ１９４内には存在しない場合には、記憶部１９６からデータを読み出すことになる。リードカウンタフィールドは、当該データが何回読み出されたかを計数するためのカウンタ領域であり、記憶部１９６からデータを読み出した時に、その値と、不揮発性半導体メモリ１９４への格納を行うか否かの判断基準として定義されるしきい値とを比較する。ここでは、しきい値として、２が定義されているものと想定する。なお、リードカウンタフィールドは、０からしきい値＋１（０−３）の値を取る。
【００５２】
しきい値未満であった場合（２回目の読み出しの場合）は、リードカウンタフィールドを１インクリメントする（２にする）と共に、ＬＲＵカウンタフィールドの値を最大値にし、更新前の値よりも大きい値をもつ他のＬＲＵカウンタフィールドの値を１ずつデクリメントする。この時は、当該読み出しデータの不揮発性半導体メモリ１９４への格納は行わない。
【００５３】
また、しきい値と等しい場合（ここでは、３回目を越える読み出しの場合となる）、同一ＩｎｄｅｘＬ内で不揮発性半導体メモリ１９４に格納された他のデータの中で、読み出されたデータのその時点でのＬＲＵカウンタフィールドの値よりも小さいＬＲＵカウンタフィールドの値をもつものが存在するか否かを判定する。存在しなければ、ＬＲＵカウンタフィールドの値を最大値にし、更新前の値よりも大きい値をもつ他のＬＲＵカウンタフィールドの値を１ずつデクリメントする。この時も、当該読み出したデータの不揮発性半導体メモリ１９４への格納は行わない。また、リードカウンタフィールドの値は、そのまましきい値に維持される。
【００５４】
同一ＩｎｄｅｘＬ内で不揮発性半導体メモリ１９４に格納された他のデータの中で、読み出されたデータのその時点でのＬＲＵカウンタフィールドの値よりも小さいＬＲＵカウンタフィールドの値をもつものが存在する場合、その中でＬＲＵカウンタフィールドの値が最小のデータを、不揮発性半導体メモリ１９４内において無効化し、読み出したデータを入れ替えに不揮発性半導体メモリ１９４に格納する。無効化するデータについては、Ｃａｃｈｅｄビットフィールドを”０”にし、リードカウンタフィールドの値をしきい値にする。また、入れ替えに不揮発性半導体メモリ１９４に格納するデータについては、Ｃａｃｈｅｄビットフィールドを”１”にし、リードカウンタフィールドの値を１インクリメントする（３にする）と共に、ＬＲＵカウンタフィールドの値を最大値にし、更新前の値よりも大きい値をもつ他のＬＲＵカウンタフィールドの値を１ずつデクリメントする。
【００５５】
つまり、不揮発性半導体メモリ１９４に格納されていないデータについては、しきい値を越える読み出しが行われ、かつ、不揮発性半導体メモリ１９４に格納された他のデータのいずれかに先んじて２回続けて読み出しが行われた場合に、当該他のデータとの入れ替えを実行する。
【００５６】
さらに、読み出し対象のデータがディレクトリに登録されていなければ、ディレクトリには登録されているが、Ｃａｃｈｅｄビットフィールドが”０”、つまり不揮発性半導体メモリ１９４内には存在しない他のデータのうち、ＬＲＵカウンタフィールドの値が最小の他のデータに代えて、今回の読み出しデータをディレクトリに登録する。この際、リードカウンタフィールドの値を１にすると共に、ＬＲＵカウンタフィールドの値を最大値にし、他の列のＬＲＵカウンタフィールドの値を１ずつデクリメントする。
【００５７】
なお、ライトコマンドが発行された際、指定されたＬＢＡと一致する更新されるべきデータがディレクトリに登録されていた場合には、前述と同様、そのＩｎｄｅｘＨフィールド、ＬＲＵカウンタフィールド、Ｃａｃｈｅｄビットフィールドの値を初期化することによって、不揮発性半導体メモリ１９４内における無効化を実施する。
【００５８】
このように、ホスト側からのリード要求を、ハイブリッドＨＤＤ１９側において学習する仕組みを設けることにより、リードコマンドに対するレスポンス性能をより向上させることを実現する
以上のように、本コンピュータ１によれば、不揮発性半導体メモリ１９４を（ＨＤ等からなる）記憶部１９６のキャッシュとして内蔵する場合におけるデータアクセスを効率的に行うことが実現される。
【００５９】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６０】
１…情報処理装置（ＰＣ）、１１…ＣＰＵ、１２…ノースブリッジ、１３…主メモリ、１４…表示コントローラ、１４Ａ…ビデオメモリ、１５…サウスブリッジ、１６…サウンドコントローラ、１７…ＢＩＯＳ−ＲＯＭ、１８…ＬＡＮコントローラ、１９…ハイブリッドＨＤＤ、２０…ＯＤＤ、２１…無線ＬＡＮコントローラ、２２…ＵＳＢコントローラ、２５…エンベデッド／キーボードコントローラ（ＥＣ／ＫＢＣ）、１９１…制御部、１９２…ＡＴＡＣ、１９３…ＨＤＣ、１９４…不揮発性半導体メモリ、１９５…揮発性半導体メモリ、１９６…記憶部（ＨＤ）。
【図１】
2010176305.tif 000003
【図２】
2010176305.tif 000004
【図３】
2010176305.tif 000005
【図４】
2010176305.tif 000006
【図５】
2010176305.tif 000007
【図６】
2010176305.tif 000008
【図７】
2010176305.tif 000009