(57)【要約】【課題】大容量のキャッシュデバイスを用いても、少ない容量のメモリで、性能低下を抑えること。【解決手段】実施形態によれば、情報処理装置は、第１の記憶装置のキャッシュ領域を第２の記憶装置のキャッシュとして用いて、第２の記憶装置へのデータの書き込みおよび第２の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御手段であって、キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップをキャッシュ領域の各ブロック毎に設け、第１の記憶装置内の管理データ領域内で、第１の記憶装置のキャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、メモリ内に確保されるキャッシュ領域をビットマップのキャッシュとして用いるこキャッシュ制御手段を具備する。【選択図】    図３
2012078939.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
第１の記憶装置と、
第２の記憶装置と、
前記第１の記憶装置と前記第２の記憶装置とを制御し、前記第１の記憶装置のキャッシュ領域を前記第２の記憶装置のキャッシュとして用いて、前記第２の記憶装置へのデータの書き込みおよび前記第２の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御手段であって、前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第１の記憶装置内の管理データ領域内で、前記第１の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第１の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理するキャッシュ制御手段と、
を具備する情報処理装置。
【請求項２】
前記第１の記憶装置は、ＮＡＮＤ型フラッシュメモリを有する請求項１記載の情報処理装置。
【請求項３】
前記ビットマップの格納開始アドレスが前記ＮＡＮＤ型フラッシュメモリのページの先頭アドレスとなるように前記ビットマップを格納する請求項２に記載の情報記憶装置。
【請求項４】
前記キャッシュ制御手段は、前記ビットマップの管理単位を前記ＮＡＮＤ型フラッシュメモリのページサイズの倍数とする請求項１記載の情報処理装置
【請求項５】
前記キャッシュ制御手段は、セットアソシアティブ方式またはダイレクトマップ方式によって管理を行う請求項１に記載の情報処理装置。
【請求項６】
前記セットアソシアティブ方式によって管理を行うと、前記ビットマップのサイズが前記ビットマップキャッシュの容量の｛（Ｗａｙ数＋１）／Ｗａｙ数｝倍未満となる場合、ダイレクトマップ方式で管理を行う請求項５記載の情報処理装置。
【請求項７】
前記セクタビットマップは、前記キャッシュ領域のブロック内のキャッシュデータが有効か無効かを前記セクタ単位で示す第１のセクタビットマップ、前記キャッシュ領域のブロック内のいずれのデータが前記第２の記憶装置への未書き込みデータであるのかを前記セクタ単位で示す第２のセクタビットマップの少なくとも一方を含む請求項１に記載の情報処理装置。
【請求項８】
第１の記憶装置と第２の記憶装置とを制御し、前記第１の記憶装置のキャッシュ領域を前記第２の記憶装置のキャッシュとして用いて、前記第２の記憶装置へのデータの書き込みおよび前記第２の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御方法であって、
前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第１の記憶装置内の管理データ領域内で、前記第１の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、
メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第１の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理する
キャッシュ制御方法。
【請求項９】
第１の記憶装置と第２の記憶装置とを制御し、前記第１の記憶装置のキャッシュ領域を前記第２の記憶装置のキャッシュとして用いて、前記第２の記憶装置へのデータの書き込みおよび前記第２の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理する情報処理装置を、
前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第１の記憶装置内の管理データ領域内で、前記第１の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第１の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理するキャッシュ制御手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えばＳＳＤ（Solid state drive）とＨＤＤ（Hard disk drive）とを搭載し、ＳＳＤをＨＤＤのキャッシュとして用いて、ＨＤＤに対するアクセスの高速化を図るパーソナルコンピュータ等の情報処理装置およびキャッシュ制御方法に関する。
【背景技術】
【０００２】
情報化社会である今日では、日々、大量のデータが取り扱われている。また、データを記憶させる媒体として、大容量で比較的安価なＨＤＤが広く用いられている。大容量で比較的安価である反面、ＨＤＤは、アクセス速度が比較的低速である。
【０００３】
一方、フラッシュメモリは、ＨＤＤと比較して、アクセス速度は高速ではあるが高価であり、例えば複数台のＨＤＤを搭載するファイルサーバ等において、フラッシュメモリが用いられるＳＳＤを、すべてのＨＤＤについて代替として適用しようとすると、大幅なコストアップを招いてしまう。
【０００４】
そこで、特性の異なる複数種のデータ記憶媒体を組み合わせることで、コストアップを最小限に止めつつ、大容量かつアクセス速度が高速なデータ記憶システムを構築するための仕組みが、これまでも種々提案されている。
【０００５】
例えば、最小アクセス単位が５１２バイトのＨＤＤのキャッシュを考える。キャッシュ容量が１２８Ｇバイトのとき、キャッシュには２５６Ｍセクタのデータを保持する。２５６Ｍセクタの状態を管理するビットマップは、１種あたり２５６Ｍビット、すなわち、３２Ｍバイトものデータとなる。たとえば、２種類のビットマップ（有効／無効、Ｄｉｒｔｙ／Ｃｌｅａｎ）を設ける場合は、６４ＭＢもの領域を必要とする。
【０００６】
ビットマップをメモリ上に格納し、キャッシュ制御部をホストコンピュータ上のドライバで実現する場合、このメモリをページアウトされないメモリ（Non-paged pool）として確保する必要があるが、このような大きなNon-paged poolを確保できない可能性がある。  キャッシュ制御部を組み込み型システム（たとえばキャッシュ内蔵のハイブリッドＨＤＤ）で実現する場合は、大きなメモリを必要とし、コストアップとなる。
【０００７】
また、ビットマップを記憶装置に確保する場合、キャッシュを制御するたびに外部記憶装置のアクセスが必要となり、性能低下につながる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−４６９６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
大容量のキャッシュデバイスを用いた場合、ビットマップを格納するために大容量のメモリが必要になったり、ビットマップを記憶装置に格納すると、性能が低下したりする。
【００１０】
本発明の目的は、大容量のキャッシュデバイスを用いても、少ない容量のメモリで、性能低下を抑えることが可能な情報処理装置およびキャッシュ制御方式を提供することにある。
【課題を解決するための手段】
【００１１】
実施形態によれば、情報処理装置は、メモリと、第１の記憶装置と、第２の記憶装置と、キャッシュ制御手段を具備する。キャッシュ制御手段は、前記第１の記憶装置と前記第２の記憶装置とを制御し、前記第１の記憶装置のキャッシュ領域を前記第２の記憶装置のキャッシュとして用いて、前記第２の記憶装置へのデータの書き込みおよび前記第２の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理し、前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第１の記憶装置内の管理データ領域内で、前記第１の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第１の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態の情報処理装置のシステム構成を示す図。
【図２】第１の実施形態の情報処理装置の構成を示す図。
【図３】実施形態の情報処理装置上で動作するＨＤＤ／ＳＳＤドライバ（キャッシュドライバ）の動作原理を説明するための概念図。
【図４】ＨＤＤに格納されるデータを管理するための３２ビットのアドレスＤＬＢＡを説明するための概念図。
【図５】ＤＬＢＡからＩｎｄｅｘ，Ｔａｇを求める方法を説明するための概念図。
【図６】キャッシュディレクトリを説明するための概念図。
【図７】第１の実施形態の情報処理装置上に設けられる存在セクタビットマップの一例を示す図。
【図８】第１の実施形態の情報処理装置上に設けられるDirtyセクタビットマップの一例を示す図。
【図９】第１の実施形態の情報処理装置上に設けられる存在セクタビットマップおよびDirtyセクタビットマップの一例を示す図。
【図１０】適切な序列で存在セクタビットマップおよびDirtyセクタビットマップが並べられたビットマップ原本の例を示す図。
【図１１】ビットマップ領域のビットマップのバイトアドレス（ＢＭＢＡ）の一例を示す図。
【図１２】ＢＭＢＡからＢｍＩｎｄｅｘおよびビットマップタグＢｍＴａｇを求める方法を説明するための概念図。
【図１３】ビットマップ原本のキャッシュデータであるビットマップキャッシュをダイレクトマップ方式によって管理することを説明するための概念図。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して説明する。
【００１４】
図１は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
【００１５】
図１に示すように、本情報処理装置は、ＣＰＵ（Central processing unit）１１、ＭＣＨ（Memory controller hub）１２、メインメモリ１３、ＩＣＨ（I/o controller hub）１４、ＧＰＵ（Graphics processing unit）１５、ビデオメモリ（ＶＲＡＭ）１５Ａ、サウンドコントローラ１６、ＢＩＯＳ−ＲＯＭ（Read only memory）１７、ＨＤＤ１８Ａ，１８Ｂ、ＳＳＤ１９、ＯＤＤ（Optical disc drive）２０、各種周辺機器２１、ＥＥＰＲＯＭ（Electrically erasable programmable ROM）２２、ＥＣ／ＫＢＣ（Embedded controller/keyboard controller）２３等を備えている。
【００１６】
ＣＰＵ１１は、本情報処理装置の動作を制御するプロセッサであり、ＨＤＤ１８Ａ，１８ＢやＯＤＤ２０からメインメモリ１３にロードされる各種プログラムを実行する。このＣＰＵ１１によって実行される各種プログラムの中には、リソース管理を司るＯＳ１１０や、当該ＯＳ１１０の配下で動作する、ＨＤＤ／ＳＳＤドライバ（キャッシュドライバ）１２０および各種アプリケーションプログラム１３０等が存在する。ＨＤＤ／ＳＳＤドライバ１２０は、ＨＤＤ１８Ａ，１８ＢとＳＳＤ１９とを制御するプログラムである。本情報処理装置は、ＳＳＤ１９の一部または全部をＨＤＤ１８Ａ，１８Ｂのキャッシュとして利用することで、ＨＤＤ１８Ａ，１８Ｂに対するアクセスの高速化を図る。ＨＤＤ／ＳＳＤドライバ１２０は、そのための仕組みを備えたものであり、以下、その原理について詳述する。
【００１７】
また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。以下では、ＢＩＯＳ−ＲＯＭ１７の格納物であるＢＩＯＳ自体についてもＢＩＯＳ１７と表記することがある。
【００１８】
ＭＣＨ１２は、ＣＰＵ１１とＩＣＨ１４との間を接続するブリッジとして動作すると共に、メインメモリ１３をアクセス制御するメモリコントローラとして動作する。また、ＭＣＨ１２は、ＧＰＵ１５との通信を実行する機能を有している。
【００１９】
ＧＰＵ１５は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。ＧＰＵ１５は、ＶＲＡＭ１５Ａを有し、また、各種プログラムが表示しようとする画像をＣＰＵ１１に代わって描画するアクセラレータを搭載している。
【００２０】
ＩＣＨ１４は、ＨＤＤ１８Ａ，１８Ｂ、ＳＳＤ１９およびＯＤＤ１９を制御するためのＩＤＥ（Integrated device electronics）コントローラを内蔵する。ＩＣＨ１４は、ＰＣＩ（Peripheral component interconnect）バスに接続された各種周辺機器２１の制御も行う。また、ＩＣＨ１４は、サウンドコントローラ１６との通信機能も有している。
【００２１】
サウンドコントローラ１６は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれ、または、外部接続されるスピーカ等に出力する。
【００２２】
ＥＥＰＲＯＭ２２は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、ＥＣ／ＫＢＣ２３は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された１チップＭＰＵ（Micro processing unit）である。
【００２３】
図２に本実施形態の情報処理装置の構成例を示す。ＨＤＤの台数はＨＤＤ１８Ａ，１８Ｂの２台である。ＨＤＤ１８Ａ，１８Ｂの容量はそれぞれ１Ｔバイトであり、１セクタは５１２バイトである。また、ＳＳＤ１９に割り当てられるキャッシュ容量は１２８Ｇバイトである。ＳＳＤ１９のブロックサイズは、６４Ｋバイトである。
【００２４】
また、ＨＤＤ／ＳＳＤドライバ１２０は、セットアソシアティブ方式でキャッシュを管理する。キャッシュＷａｙ数は４であり、キャッシュＩｎｄｅｘ数は５１２Ｋである。
【００２５】
図３は、以上のようなシステム構成を有する本情報処理装置上で動作するＨＤＤ／ＳＳＤドライバ１２０の動作原理を説明するための概念図である。
【００２６】
ＨＤＤ／ＳＳＤドライバ１２０は、ＳＳＤ１９のキャッシュ領域１９Ａを、例えば６４Ｋバイトといったブロック単位で管理する。また、ＨＤＤ／ＳＳＤドライバ１２０は、ホストシステム２００からのＨＤＤ１８Ａ，１８Ｂへのデータの書き込み要求またはＨＤＤ１８Ａ，１８Ｂからのデータの読み出し要求を受けると、このキャッシュ領域の管理単位と同じ６４Ｋバイトのブロック単位に分割する。そして、ＨＤＤ１８Ａ，１８ＢやＳＳＤ１９に対して、（ブロック単位に分割後の）データの書き込み要求またはデータの読み出し要求を必要に応じて発行することによって処理する。例えば、ホストシステム２００からＨＤＤのＬＢＡ（Logical Block Address）が３のアドレスから、セクタ数(Sector Count)がＣ０ｈのリードまたはライトのリクエストがあった場合、次の３つのブロックに分割して処理する。
【００２７】
（１）  LBA=3、SC=7Dh
（２）  LBA=80h、SC=80h
（３）  LBA=100h、SC=43h
なお、ＨＤＤ／ＳＳＤドライバ１２０は、ＨＤＤ１８Ａ，１８Ｂのキャッシュとして利用されるＳＳＤ１９上のデータを管理するために、管理データ領域２０２をメインメモリ１３上に確保する。
【００２８】
ホストからのリクエストをブロック分割した後、ＨＤＤ／ＳＳＤドライバ１２０は、図４に示すように、ＬＢＡ(３１ビット)にＨＤＤ１８Ａ，１８Ｂを識別する識別ビット(1ビット)を付加した３２ビットのアドレスでリクエストがあったデータを、ブロック単位で分割した後の各データの各ブロックの先頭アドレスで管理する。この３２ビットのアドレスをＤＬＢＡと呼ぶことにする。
【００２９】
ＤＬＢＡが決まると、ＨＤＤ／ＳＳＤドライバ１２０は、ＤＬＢＡからＩｎｄｅｘ，Ｔａｇを求める。すなわち、図５に示すように、ＤＬＢＡの下位７ビットがＯｆｆｓｅｔ、上位２５ビットがＢＩＤ、ＢＩＤをＩｎｄｅｘ数で割った余りがＩｎｄｅｘ、ＢＩＤをＩｎｄｅｘ数で割った商がＴａｇである。
【００３０】
ＨＤＤ／ＳＳＤドライバ１２０は、ＳＳＤ１９（キャッシュメモリ）に蓄積されているデータがどのＨＤＤ１８Ａ，１８Ｂのどのブロックに対応するかはキャッシュディレクトリによって管理する。本実施形態では、１２８ＧバイトのＳＳＤ１９（キャッシュメモリ）を１ブロック６４Ｋバイト単位で管理されるので、キャッシュディレクトリは合計で２Ｍブロックとなる。
【００３１】
また、キャッシュ方式が４−ｗａｙセットアソシアティブ方式であるので、キャッシュディレクトリは、図６に示すように、５１２Ｋインデックス×４ウェイのテーブルとなる。キャッシュディレクトリによって管理されるデータは、タグとその他の管理データから構成される。
【００３２】
ＨＤＤ／ＳＳＤドライバ１２０は、ホストからのリクエストに対してＩｎｄｅｘとＴａｇを演算する。ＨＤＤ／ＳＳＤドライバ１２０は、Ｉｎｄｅｘに基づいてキャッシュディレクトリを参照する。何れかのいずれかのＷａｙとホストからのリクエストのＴａｇが一致している場合はヒット、いずれのＷａｙとも一致しない場合はミスである。ヒットした場合、ＨＤＤ／ＳＳＤドライバ１２０は、リクエストに対応するキャッシュデバイスのデータにアクセスする。ミスした場合、ＨＤＤ／ＳＳＤドライバ１２０は、リクエストに対し必要に応じて適切な方法でキャッシュディレクトリにキャッシュエントリを確保した後に、ＳＳＤ１９にアクセスがあったデータをキャッシュするが一般的である。
【００３３】
ＨＤＤ／ＳＳＤドライバ１２０は、ブロック内のキャッシュデータの状態をＨＤＤの最小アクセス単位であるセクタ単位で管理するためにビットマップを作成する。ＨＤＤ／ＳＳＤドライバ１２０は、ビットマップを参照することによって、ブロック内のデータがＨＤＤに書き込まれているかをセクタ単位で判断することが可能になる。
【００３４】
なお、ＳＳＤ１９のキャッシュ領域の容量が大きくなると、ビットマップの容量も大きくなる。ビットマップの容量が大きいと、ビットマップの全てをメモリ１３に格納することが困難になるため、ビットマップの全てをビットマップ原本としてＳＳＤ１９に格納し、ビットマップ原本の一部をビットマップキャッシュとしてメモリ１３に格納する。
【００３５】
（ビットマップ）
ホストシステムからのデータの書き込み要求は、ホストシステムの管理単位とＳＳＤのブロックサイズとが異なるために、ブロック全体を書き込む要求とは限らない。例えば１ブロックが１２８セクタで構成されるとすると、この１２８セクタ中のどのセクタに有効なデータが存在するのか、また、どのセクタにＨＤＤ１８Ａ，１８Ｂへの未書き込みデータ（Dirty）が存在するのか、を判別するための仕組みが必要になる。ＨＤＤ／ＳＳＤドライバ１２０は、この問題に対応するために、図７に示す存在セクタビットマップおよび図８に示すDirtyセクタビットマップを、ＳＳＤ１９のキャッシュ領域１９Ａのブロック毎に設ける。
【００３６】
存在セクタビットマップは、対応するブロック内のどのセクタが有効であるかを記憶する管理データであり、Dirtyセクタビットマップは、対応するブロック内のどのセクタがDirtyであるかを記憶する管理データである。これら２つのセクタビットマップは、図９に示すように、ブロック内の各セクタの状態を１ビットで記憶する。１ブロックが１２８セクタで構成されている場合、ブロック毎に設けられる各セクタビットマップは、１２８ビット、つまり１６バイトのデータとなる。
【００３７】
これら２つのセクタビットマップを管理することにより、ＨＤＤ／ＳＳＤドライバ１２０は、ＳＳＤ１９を利用しつつ、ＨＤＤ１８Ａ，１８Ｂへのデータの書き込みやＨＤＤ１８Ａ，１８Ｂからのデータの読み出しを適切に実行することができる。
【００３８】
ビットマップは、キャッシュ領域１９Ａ内のデータをブロック単位で管理するために、キャッシュのブロックごとにビットマップの種類数分、キャッシュデバイスのブロック数分必要となる。本実施形態では、ブロックサイズが６４Ｋバイト（１２８セクタ）であるから、１２８ビット＝１６バイトのビットマップをブロックごとに２個、キャッシュ全体のブロック数である２Ｍ組必要となる。また、前述したように一つのビットマップのサイズは、１６バイトであるので、ビットマップの容量は、１６バイト×２（個）×２Ｍ（組）＝６４Ｍバイトとなる。
【００３９】
図１０に示すように、ＨＤＤ／ＳＳＤドライバ１２０は、ＳＳＤ１９の管理データ保存領域１９Ｂ内に適切な序列でビットマップが並べられたビットマップ原本２０１を格納するビットマップ領域を設ける。ここで適切な序列とは、１組のＩｎｄｅｘとＷａｙに対応するビットマップが、管理領域のどの位置に格納されているのか、また逆に、管理領域の存在セクタビットマップおよびDirtyセクタビットマップはどのＩｎｄｅｘとＷａｙの組に対応するのかが容易にわかるような序列である。図１０に示す例は、適切な序列の例である。図１０に示すように、ＩｄｅｘおよびＷａｙ順にビットマップが並べられている。一つのビットマップは、存在セクタビットマップ（ビットマップ０）およびDirtyセクタビットマップ（ビットマップ１）が順に並べられている。
【００４０】
なお、図１０に示す序列の例では、ビットマップ領域のビットマップのバイトアドレス（ＢＭＢＡ）は図１１に示すように表される。
【００４１】
（ビットマップキャッシュ）
本実施形態の場合、ビットマップ原本の容量は、前述したように６４Ｍバイトになる。ＨＤＤ／ＳＳＤドライバ１２０は、メインメモリ１３内に管理データキャッシュ領域を確保し、管理データキャッシュ領域内にビットマップ原本の一部をキャッシュ技術を用いて管理データ保存領域２１０にビットマップキャッシュ２１１として保存する。
【００４２】
ビットマップキャッシュ２１１は、ＳＳＤ１９の管理データ保存領域に格納されているビットマップ原本２０１の一部をＨＤＤ／ＳＳＤドライバ１２０が管理するメモリ１３内の管理データ保存領域２１０に保持するものである。本実施形態では、ビットマップキャッシュ２１１の容量が１６Ｍバイト、セクタ単位の管理、４−ｗａｙセットアソシアティブ方式を説明する。ビットマップキャッシュのＩｎｄｅｘ数は、ビットマップキャッシュの容量が１６Ｍバイト、ＳＳＤ１９のブロックサイズが６４Ｋバイト、Ｗａｙ数が４であるので、８Ｋとなる。
【００４３】
前述したビットマップのバイトアドレスＢＭＢＡが決まると、ＨＤＤ／ＳＳＤドライバ１２０は、バイトアドレスＢＭＢＡからビットマップインデックスＢｍＩｎｄｅｘ，ビットマップタグＢｍＴａｇを求める。すなわち、図１２に示すように、バイトアドレスＢＭＢＡの下位９ビットがビットマップセクタオフセット（ＢｍＳｃｔＯｆｆｓｅｔ）、上位１７ビットがビットマップセクタＩＤ（ＢｍＳｃｔＩＤ）、ビットマップセクタＩＤ（ＢｍＳｃｔＩＤ）をＩｎｄｅｘ数で割った余りがビットマップインデックスＢｍＩｎｄｅｘ、ビットマップセクタＩＤ（ＢｍＳｃｔＩＤ）をＩｎｄｅｘ数で割った商がビットマップタグＢｍＴａｇである。
【００４４】
前述したようにビットマップキャッシュのＩｎｄｅｘ数は８Ｋであり、Ｗａｙ数が４であるために、ビットマップキャッシュ２１１のキャッシュディレクトリは、８ＫＩｎｄｅｘ×４Ｗａｙのテーブルとなる。ビットマップインデックスＢｍＩｎｄｅｘでビットマップキャッシュディレクトリを参照し、ビットマップタグＢｍＴａｇがいずれかのＷａｙと一致していればヒット、いずれのＷａｙとも一致していなければミスである。
【００４５】
ビットマップキャッシュにミスしたときは、ＨＤＤ／ＳＳＤドライバ１２０は、最も長い間アクセスされていないエントリを使用する。このとき、ＨＤＤ／ＳＳＤドライバ１２０は、必要に応じて最も最近アクセスされていないエントリのビットマップデータをビットマップ原本に書き出してからこのエントリを使用する。
【００４６】
なお、ＨＤＤ／ＳＳＤドライバ１２０が、最も長い間アクセスされていないエントリを使用する場合、最も長い間アクセスされていないエントリのビットマップをビットマップ原本に書き出す必要がある。しかし、最も長い間アクセスされていないエントリのビットマップを直ぐにビットマップ原本に書き出さなくて済むように、最も長い間アクセスされなくなったエントリのビットマップをメモリ１３に一旦書き出した後に、メモリ１３に書き出されたビットマップのビットマップ原本への書き出しをバックグランドで実行するようにしても良い。
【００４７】
なお、ＳＳＤがＮＡＮＤ型フラッシュメモリで構成される場合、ビットマップ原本の格納開始アドレスがＮＡＮＤ型フラッシュメモリのページの先頭アドレスと同じにアドレスになるようにし、ビットマップ原本の管理単位をＳＳＤのページサイズの倍数とするとよい
ここで、ページサイズとは、ＮＡＮＤ型フラッシュメモリの書き込み・読み出し最小単位である。ページサイズに満たない書き込み・読み出し要求は、ページサイズの書き込み・読み出しに比べ一般に多くの時間を要する。このオーバヘッドを抑えるために、ビットマップ原本への書き込み・読み出しを、ページ単位で行うようにする。このために、ビットマップ原本の管理単位をＳＳＤのページサイズの倍数とする。
【００４８】
以上のように、本情報処理装置によれば、ビットマップ原本２０１をＳＳＤ１９の管理データ保存領域１９Ｂに格納すると共に、メモリ１３の管理データ保存領域２１０にビットマップ原本２０１のキャッシュデータであるビットマップキャッシュを格納することで、大容量のＳＳＤ１９を用いても、少ない容量のメモリ１３であっても、性能低下を抑えることが可能になる。
【００４９】
(第２の実施形態)
第２の実施形態では、ダイレクトビットマップ方式でキャッシュを管理する方法について説明する。
【００５０】
第１の実施形態では、１６Ｍバイトのビットマップキャッシュに対しビットマップ原本は６４Ｍバイトと大きいので、セットアソシアティブ方式は使用効率の面でも、検索速度の面でも効率が良い。使用効率が良いというのは、全Ｉｎｄｅｘが同じ容量の原本の対象になっているということ、すなわち、全Ｉｎｄｅｘが８ブロックの原本を持ち、そのうち４ブロック分のキャッシュされている。
【００５１】
ここで、ビットマップキャッシュの容量が１６Ｍバイト、ビットマップ原本の容量が１６Ｍバイト＋１６Ｋバイトの場合を考える。これを管理単位がセクタである４−ｗａｙセットアソシアティブとすると、Ｉｎｄｅｘ数は８Ｋ（０〜８１９１）となる。ところが、Ｉｎｄｅｘ０〜３１は５ブロックの原本、Ｉｎｄｅｘ３２〜８１９１は４ブロックの原本となり、後者のＩｎｄｅｘでは必ずヒットするのに対し、前者のＩｎｄｅｘはミスするケースが存在する。このような場合では、ダイレクトマップ方式でビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方が有効である。
【００５２】
図１３を参照して、ダイレクトマップ方式でビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方法を説明する。
【００５３】
ダイレクトマップ方式は、メモリ中のブロックをキャッシュ内のどこに配置するかをブロックの番地から一意に決める方式であり、あるブロックを格納したい場所に既に別のブロックが置かれていたら、たとえ他の場所が空いていてもそれを捨ててしまう。
【００５４】
ＨＤＤ／ＳＳＤドライバ１２０は、ビットマップ原本２０１の各ブロックにビットマップブロックＩＤ（ＢＭＢＩＤ）という識別子（０〜３３，５５４，４６３）を、ビットマップキャッシュの各ブロックにビットマップキャッシュブロックＩＤ（ＢＭＣＢＩＤ）という識別子（０〜３３，５５４，４３１）を付与する。
【００５５】
ＨＤＤ／ＳＳＤドライバ１２０は、ビットマップ原本のブロック数分のビットマップ管理テーブルＢＭＣＴ（BitMap Control Table）と、ビットマップキャッシュのブロック数分のビットマップキャッシュ管理テーブルＢＭＣＣＴ（BitMap Cache Control Table）を設け、二つのテーブルを管理データ保存領域２１０に格納する。
【００５６】
ＨＤＤ／ＳＳＤドライバ１２０が当該ブロックのビットマップにアクセスし、当該ブロックのビットマップがビットマップキャッシュ２１１にキャッシュする場合、ビットマップキャッシュ管理テーブル・リンク（ＢＭＣＣＴ  Ｌｉｎｋ）は、ビットマップキャッシュ管理テーブルＢＭＣＣＴの該当アドレスが格納される。当該ブロックがキャッシュされていないときは、ＮＵＬＬポインタが格納される。初期値はＮＵＬＬである。
【００５７】
ビットマップ管理テーブル・リンクＢＭＣＴ  Ｌｉｎｋは、当該ブロックがキャッシュしているビットマップ管理テーブルＢＭＣＴの該当アドレスが格納される。当該ブロックがキャッシュされていないときは、ＮＵＬＬポインタが格納される。初期値はＮＵＬＬである。
【００５８】
ビットマップ原本への未書き込みデータ（Dirty）であるかを示すＤｉｒｔｙフラグは、当該ブロックのデータがキャッシュ上で変更されたときにＹｅｓとなるフラグである。初期値はＮｏである。
【００５９】
ＬＲＵ  Ｌｉｎｋは、アクセスされた順に張られたリンクで、Ｌｉｎｋ  ＨｅａｄのＭＲＵ  Ｌｉｎｋが最も最近アクセスされたブロックを、ＬＲＵ  Ｌｉｎｋが最も最近アクセスされていないブロックを指している。ＬＲＵ  Ｌｉｎｋの初期値は、ビットマップキャッシュの全ブロックがリンクされた状態である。
【００６０】
（動作説明）
ＨＤＤ／ＳＳＤドライバ１２０が、ビットマップを必要とするとき、ビットマップ管理テーブルＢＭＣＴを参照する。
【００６１】
ビットマップキャッシュ管理テーブル・リンクＢＭＣＣＴ  Ｌｉｎｋに有効なポインタがあるとき（ｘ）は、ビットマップキャッシュのヒット（ビットマップにキャッシュされている）を意味する。ヒットした場合、ＨＤＤ／ＳＳＤドライバ１２０は、ポインタをたどってビットマップキャッシュを使用する。このとき、ＨＤＤ／ＳＳＤドライバ１２０は、ＢＭＣＣＴの当該ブロックのＬＲＵ  ＬｉｎｋをＬｉｎｋ  ＨｅａｄのＭＲＵ  Ｌｉｎｋにつなぎかえる。ビットマップキャッシュを更新したとき、ＨＤＤ／ＳＳＤドライバ１２０は、ＨＤＤ／ＳＳＤドライバ１２０は、ＤｉｒｔｙフラグをＹｅｓにする。
【００６２】
ビットマップ管理テーブルＢＭＣＴのビットマップキャッシュ管理テーブル・リンクＢＭＣＣＴ  ＬｉｎｋがＮＵＬＬの場合（ｙ）は、ビットマップキャッシュのミス（ビットマップにキャッシュされていない）を意味する。ＨＤＤ／ＳＳＤドライバ１２０は、Ｌｉｎｋ  ＨｅａｄのＬＲＵ  Ｌｉｎｋで最も最近アクセスされていないビットマップキャッシュのブロックをたどる。このブロックのＤｉｒｔｙビットがＹｅｓの場合、ＨＤＤ／ＳＳＤドライバ１２０は、ビットマップ管理テーブル・リンクＢＭＣＴ  Ｌｉｎｋをたどってビットマップ原本のブロックを割り出し、キャッシュの内容をビットマップ原本に書き出す。その後、ＨＤＤ／ＳＳＤドライバ１２０は、ビットマップをビットマップ原本からビットマップキャッシュに読み出し、ＤｉｒｔｙフラグをＮｏに、ＬＲＵ  Ｌｉｎｋを張り替える。
【００６３】
ダイレクトマップ方式では、セットアソシアティブ方式に比べて、キャッシュの使用効率が均等になる。また、ダイレクトマップ方式では、ＬＲＵ管理をリンクとしているので、検索が速い。また、ダイレクトマップ方式では、ビットマップ原本をテーブルにしているので、ヒット／ミスの検索が速い。
【００６４】
このため、キャッシュ原本のサイズがビットマップキャッシュの容量の｛（Ｗａｙ数＋１）／Ｗａｙ数｝倍未満の場合にダイレクトマップ方式で管理を行うことが好ましい。キャッシュ原本のサイズがビットマップキャッシュの容量の｛（Ｗａｙ数＋１）／Ｗａｙ数｝以上の場合にセットアソシアティブ方式で管理を行うと、必ずヒットするＩｎｄｅｘとミスる場合が或るＩｎｄｅｘとが存在するためである。
【００６５】
以上の説明では、ビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方式としてセットアソシアティブ方式およびダイレクトマップ方式の例を挙げたが、キャッシュ管理方式は他の方法でも良い。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１８Ａ．１８Ｂ…ＨＤＤ，１９…ＳＳＤ，１９Ａ…キャッシュ領域，１９Ｂ…管理データ保存領域，１２０…ＨＤＤ／ＳＳＤドライバ，２０１…ビットマップ原本，２０２…管理データ領域，２１０…管理データ保存領域，２１１…ビットマップキャッシュ。
【図１】
2012078939.tif 000003
【図２】
2012078939.tif 000004
【図３】
2012078939.tif 000005
【図４】
2012078939.tif 000006
【図５】
2012078939.tif 000007
【図６】
2012078939.tif 000008
【図７】
2012078939.tif 000009
【図８】
2012078939.tif 000010
【図９】
2012078939.tif 000011
【図１０】
2012078939.tif 000012
【図１１】
2012078939.tif 000013
【図１２】
2012078939.tif 000014
【図１３】
2012078939.tif 000015