(57)【特許請求の範囲】
【請求項１】
不揮発メモリの記憶装置であって、
複数のエントリと、
複数のキャッシュタグと、
を備え、
前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含み、当該キャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成し、
前記複数のキャッシュタグにおける各キャッシュタグは、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを含み、前記第１のポインタと、前記第２のポインタと、前記キャッシュデータ格納領域とを、連続したアドレスに配置する、記憶装置。
【請求項２】
第１の記憶装置と、
データの読み書きのリクエストを受け付けるコマンド制御部と、
前記コマンド制御部が前記リクエストを受け付けた場合、前記第１の記憶装置にアクセスするプロセッサと、を備え、
前記第１の記憶装置は、不揮発メモリであって、
複数のエントリと、
複数のキャッシュタグと、
を備え、
前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含み、キャッシュタグのリンクを構成し、
前記複数のキャッシュタグにおける各キャッシュタグは、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを含み、前記第１のポインタと、前記第２のポインタと、前記キャッシュデータ格納領域とを、連続したアドレスに配置する、制御装置。
【請求項３】
前記プロセッサは、前記コマンド制御部が読み出しのリクエストを受け付けた場合、当該リクエストに対応する前記識別子に応じたデータが、前記第１の記憶装置に格納されているか否か、前記第１の記憶装置を検索し、当該データが前記第１の記憶装置に存在した場合、当該データを前記第１の記憶装置から読み出す、請求項２に記載の制御装置。
【請求項４】
前記制御装置の外部に配置された、第２の記憶装置にアクセスする、ディスク制御部をさらに備え、前記プロセッサは、前記コマンド制御部が読み出しのリクエストを受け付けた際に、当該リクエストに対応する前記識別子に応じたデータが、前記第１の記憶装置に格納されていない場合、前記第２の記憶装置から当該データを読み出し、前記識別子に対応する前記キャッシュデータ格納領域に書き込む、請求項３に記載の制御装置。
【請求項５】
前記プロセッサは、前記コマンド制御部が書き込みのリクエストを受け付けた場合、当該リクエストに対応する前記識別子が、前記第１の記憶装置に格納されている場合、前記識別子に対応する前記キャッシュデータ格納領域に、データを書き込み、当該リクエストに対応する前記識別子が、前記第１の記憶装置に格納されていない場合、キャッシュタグを前記第１の記憶装置に追加し、当該追加されたキャッシュタグにデータを書き込む、請求項２乃至４のいずれか一に記載の制御装置。
【請求項６】
揮発メモリである第３の記憶装置をさらに備え、
前記第３の記憶装置は、空きキャッシュタグのリンクにおける、最後のキャッシュタグを示すポインタを含み、
前記プロセッサは、前記最後のキャッシュタグを示すポインタに基づいて、前記最後のキャッシュタグを特定する、請求項２乃至５のいずれか一に記載の制御装置。
【請求項７】
不揮発メモリであって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含む記憶装置の制御方法であって、
前記複数のエントリにおける各エントリに対して、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成する工程と、
前記複数のキャッシュタグにおける各キャッシュタグにおいて、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを、連続したアドレスに配置する工程と、
を含む記憶装置の制御方法。
【請求項８】
不揮発メモリであって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含む記憶装置を制御するコンピュータに実行させるプログラムであって、
前記複数のエントリにおける各エントリに対して、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成する処理と、
前記複数のキャッシュタグにおける各キャッシュタグにおいて、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを、連続したアドレスに配置する処理と、
を実行するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、制御装置、記憶装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ストレージシステム等におけるデータの読み書きにおいて、過去に読み出し（リード）されたデータ等を、所謂キャッシュメモリに記憶しておき、データのアクセス性能を向上させる技術が利用されている。その場合、キャッシュメモリとしては、ＤＲＡＭ（Dynamic Random Access Memory）等、揮発メモリが用いられることが多い。しかし、キャッシュメモリとして、揮発メモリを用いると、不意の電源断時に、揮発メモリに書き込まれたデータが消失してしまう。
【０００３】
ここで、特許文献１においては、不揮発メモリをキャッシュメモリとして用いる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−５０６２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【０００６】
キャッシュメモリにおいては、データが格納されている領域のアドレスを記憶し、当該アドレスに基づいて、データにアクセスする場合が多い。そのようなキャッシュメモリにおいては、データを書き換える時、データが格納されている領域のアドレスも書き換える必要がある。しかし、不揮発メモリにおいて、データの書き込み回数が多いほど、不揮発メモリの寿命が低下する。
【０００７】
ここで、特許文献１に開示された技術においては、書き込み回数を低減する技術に関しては開示されていない。
【０００８】
そこで、本発明は、不揮発メモリにおいて書き込み回数を低減することに貢献する記憶装置、制御装置、記憶装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の視点によれば、不揮発メモリの記憶装置であって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含み、当該キャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成し、前記複数のキャッシュタグにおける各キャッシュタグは、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを含み、前記第１のポインタと、前記第２のポインタと、前記キャッシュデータ格納領域とを、連続したアドレスに配置する、記憶装置が提供される。
【００１０】
本発明の第２の視点によれば、第１の記憶装置と、データの読み書きのリクエストを受け付けるコマンド制御部と、前記コマンド制御部が前記リクエストを受け付けた場合、前記第１の記憶装置にアクセスするプロセッサと、を備え、前記第１の記憶装置は、不揮発メモリであって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含み、キャッシュタグのリンクを構成し、前記複数のキャッシュタグにおける各キャッシュタグは、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを含み、前記第１のポインタと、前記第２のポインタと、前記キャッシュデータ格納領域とを、連続したアドレスに配置する、制御装置が提供される。
【００１１】
本発明の第３の視点によれば、不揮発メモリであって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含む記憶装置の制御方法であって、前記複数のエントリにおける各エントリに対して、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成する工程と、前記複数のキャッシュタグにおける各キャッシュタグにおいて、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを、連続したアドレスに配置する工程と、を含む記憶装置の制御方法が提供される。
なお、本方法は、不揮発メモリという、特定の装置に結び付けられている。
【００１２】
本発明の第４の視点によれば、不揮発メモリであって、複数のエントリと、複数のキャッシュタグと、を備え、前記複数のエントリにおける各エントリは、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタと、データのアドレスに対応する識別子を格納する領域とを含む記憶装置を制御するコンピュータに実行させるプログラムであって、前記複数のエントリにおける各エントリに対して、前記複数のキャッシュタグのうち、一のキャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成する処理と、前記複数のキャッシュタグにおける各キャッシュタグにおいて、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを、連続したアドレスに配置する処理と、を実行するプログラムが提供される。
なお、本プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１３】
本発明の各視点によれば、不揮発メモリにおいて書き込み回数を低減することに貢献する記憶装置、制御装置、記憶装置の制御方法、及びプログラムが提供される。
【図面の簡単な説明】
【００１４】
【図１】一実施形態の概要を説明するための図である。
【図２】制御装置の内部構成の一例を示すブロック図である。
【図３】本実施形態に係るキャッシュタグの一例を示す図である。
【図４】本実施形態に係るキャッシュ記憶部の一例を示す図である。
【図５】比較例のキャッシュ記憶部の一例を示す図である。
【図６】本実施形態に係るキャッシュ記憶部の一例を示す図である。
【図７】比較例のキャッシュ記憶部の一例を示す図である。
【図８】本実施形態に係る制御装置の動作の一例を示すフローチャートである。
【図９】本実施形態に係る制御装置の動作の一例を示すフローチャートである。
【図１０】本実施形態に係るキャッシュタグのリンクの一例を示す図である。
【図１１】比較例のキャッシュタグのリンクの一例を示す図である。
【発明を実施するための形態】
【００１５】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１６】
上述の通り、不揮発メモリにおいて書き込み回数を低減することが望まれる。
【００１７】
そこで、一例として、図１に示す記憶装置１０００を提供する。記憶装置１０００は、不揮発メモリである。そして、記憶装置１０００は、複数のエントリ１００１−１〜１００１−Ｍ（Ｍは１以上の自然数）と、複数のキャッシュタグ１００２−１〜１００２−Ｋ（ＫはＭ以上の自然数）と、を備える。
【００１８】
複数のエントリ１００１−１〜１００１−Ｍにおける各エントリは、複数のキャッシュタグ１００２−１〜１００２−Ｋのうち、一のキャッシュタグを示すポインタを含み、当該キャッシュタグを示すポインタを用いて、キャッシュタグのリンクを構成する。
【００１９】
また、複数のキャッシュタグ１００２−１〜１００２−Ｋにおける各キャッシュタグは、前方参照する第１のポインタ１００３−１〜１００３−Ｋと、後方参照する第２のポインタ１００４−１〜１００４−Ｋと、キャッシュデータ格納領域１００５−１〜１００５−Ｋとを含む。なお、以下の説明では、第１のポインタ１００３−１〜１００３−Ｋを、第１のポインタ１００３と呼ぶ。また、以下の説明では、第２のポインタ１００４−１〜１００４−Ｋを、第２のポインタ１００４と呼ぶ。また、以下の説明では、キャッシュデータ格納領域１００５−１〜１００５−Ｋを、キャッシュデータ格納領域１００５と呼ぶ。
【００２０】
そして、複数のキャッシュタグ１００２−１〜１００２−Ｋにおける各キャッシュタグは、第１のポインタ１００３と、第２のポインタ１００４と、キャッシュデータ格納領域１００５とを、連続したアドレスに配置する。
【００２１】
記憶装置１０００は、キャッシュデータ格納領域１００５を備えることで、記憶装置１０００の外部に、データを格納する場合より、書き込み回数を低減できる。また、記憶装置１０００は、第１のポインタ１００３と、第２のポインタ１００４と、キャッシュデータ格納領域１００５とを、連続したアドレスに配置することで、データへのアクセス効率を向上する。従って、記憶装置１０００は、不揮発メモリにおいて書き込み回数を低減することに貢献する。
【００２２】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２３】
図２は、制御装置１００の内部構成の一例を示すブロック図である。制御装置１００は、コマンド処理部１０１と、プロセッサ１０２と、ディスク制御部１０３と、第１の記憶装置（図２に示すキャッシュ記憶部１０４）とを含んで構成される。図２は、本実施形態に係る制御装置１００に関係するモジュールを主に記載する。
【００２４】
図２に示すモジュールは、制御装置１００に搭載されたコンピュータに、そのハードウェアを用いて、制御装置１００に動作を実行させるコンピュータプログラムにより実現しても良い。
【００２５】
コマンド処理部１０１は、データの読み書きのリクエストを受け付ける。具体的には、コマンド処理部１０１は、ホストからのリード（読み出し）、又はライト（書き込み）のリクエストに対して、当該リクエストの内容を受信する。そして、コマンド処理部１０１は、受信したリクエストの内容を、プロセッサ１０２に送信する。以下、コマンド処理部１０１が受信したリクエストの内容を、受信コマンドと呼ぶ。
【００２６】
プロセッサ１０２は、プログラム制御により動作する。具体的には、プロセッサ１０２は、コマンド処理部１０１がリクエストを受け付けた場合、キャッシュ記憶部１０４にアクセスする。なお、以下の説明では、リード（読み出し）のリクエストを、リードリクエストと呼ぶ。また、以下の説明では、ライト（書き込み）のリクエストを、ライトリクエストと呼ぶ。プロセッサ１０２が読み出すデータを、リードデータと呼ぶ。また、以下の説明では、プロセッサ１０２が書き込むデータを、ライトデータと呼ぶ。
【００２７】
ディスク制御部１０３は、制御装置１００の外部に配置された、第２の記憶装置（図２に示すストレージ装置１０）にアクセスする。具体的には、ディスク制御部１０３は、プロセッサ１０２からの要求に応じて、ディスクインターフェイス１０５を通じで、ストレージ装置１０にアクセスする。ストレージ装置１０は、例えば、ＨＤＤ（Hard Disk Drive）等の記録装置である。
【００２８】
以下、プロセッサ１０２について、より詳細に説明する。
【００２９】
プロセッサ１０２は、コマンド処理部１０１がリードリクエストを受け付けた場合、当該リクエストに対応する識別子に応じたデータが、キャッシュ記憶部１０４に格納されているか否か、キャッシュ記憶部１０４を検索する。そして、プロセッサ１０２、当該データがキャッシュ記憶部１０４に存在した場合、当該データをキャッシュ記憶部１０４から読み出す。リクエストに対応する識別子とは、受信コマンドで示されるアドレス、及び／又はファイル等を識別するための情報である。
【００３０】
ここで、受信コマンドがリードリクエストである場合について、詳細に説明する。
【００３１】
受信コマンドがリードリクエストであり、当該受信コマンドで示されるアドレス、及び／又はファイル等に対応する識別子が、キャッシュ記憶部１０４に存在する、とプロセッサ１０２が判断したとする。その場合、プロセッサ１０２は、キャッシュ記憶部１０４から、当該識別子に対応するデータを、リードデータとして読み出す。そして、プロセッサ１０２は、リードデータを、ホストインターフェイス１０６を通じて、ホストにリードデータを転送する。
【００３２】
一方、プロセッサ１０２は、コマンド処理部１０１がリードリクエストを受け付けた際に、当該リクエストに対応する識別子に応じたデータが、キャッシュ記憶部１０４に格納されていないと判断したとする。その場合、プロセッサ１０２は、ストレージ装置１０から当該データを読み出し、当該識別子に対応するキャッシュデータ格納領域に書き込む。
【００３３】
具体的には、プロセッサ１０２は、ディスク制御部１０３に対して、ストレージ装置１０にアクセスするように指示する。そして、ディスク制御部１０３は、ディスクインターフェイス１０５を通じて、ストレージ装置１０から、受信コマンドに応じたデータを、リードデータとして読み出す。そして、ディスク制御部１０３は、ストレージ装置１０から読み出したリードデータを、キャッシュ記憶部１０４に格納する。そして、プロセッサ１０２は、ホストインターフェイス１０６を通じて、ホストにリードデータを転送する。
【００３４】
次に、受信コマンドがライトリクエストである場合について、詳細に説明する。
【００３５】
プロセッサ１０２は、コマンド処理部１０１がライトリクエストを受け付けた場合、当該リクエストに対応する識別子が、キャッシュ記憶部１０４に格納されている場合、当該識別子に対応するキャッシュデータ格納領域に、ライトデータを書き込む。一方、プロセッサ１０２は、当該リクエストに対応する識別子が、キャッシュ記憶部１０４に格納されていない場合、キャッシュタグをキャッシュ記憶部１０４に追加し、当該追加されたキャッシュタグにライトデータを書き込む。
【００３６】
具体的には、受信コマンドがライトリクエストであり、当該受信コマンドで示されるアドレス、及び／又はファイル等に対応する識別子が、キャッシュ記憶部１０４に存在する、とプロセッサ１０２が判断したとする。その場合、プロセッサ１０２は、キャッシュ記憶部１０４にライトデータを上書きする。
【００３７】
一方、受信コマンドがライトリクエストであり、当該受信コマンドで示されるアドレス、及び／又はファイル等に対応する識別子が、キャッシュ記憶部１０４に存在しない、とプロセッサ１０２が判断したとする。その場合、プロセッサ１０２は、キャッシュ記憶部１０４に新たな領域を確保する。そして、プロセッサ１０２は、当該新たな領域に、ライトデータを格納する。
【００３８】
次に、キャッシュ記憶部１０４について詳細に説明する。
【００３９】
キャッシュ記憶部１０４は、不揮発メモリである。例えば、キャッシュ記憶部１０４は、ＳＳＤ（Solid State Drive）であっても良い。そして、キャッシュ記憶部１０４は、エントリテーブルと、１又は２以上のキャッシュタグとを含んで構成される。エントリテーブルは、１又は２以上のエントリを含んで構成される。各エントリは、キャッシュタグへのポインタを有する。ここで、キャッシュタグへのポインタは、キャッシュタグのアドレスを示す。また、各エントリは、データのアドレスに対応する識別子を格納する領域を含む。
【００４０】
各キャッシュタグは、キャッシュタグのリンクにおいて前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを含む。そして、各キャッシュタグは、キャッシュタグのリンクを構成する情報と、キャッシュデータ格納領域とを、連続したアドレスに配置する。
【００４１】
具体的には、各キャッシュタグは、当該キャッシュタグとは異なるキャッシュタグを示すポインタ、又はエントリを示すポインタを含む。その結果、キャッシュ記憶部１０４は、各エントリを起点とする、キャッシュタグのリンクを構成する。そして、各キャッシュタグは、双方向リンクの構造を有する。キャッシュタグが双方向リンクの構造を有することで、キャッシュ記憶部１０４は、キャッシュタグの取り出し、削除等の処理を容易に実現できる。
【００４２】
つまり、第１のポインタは、キャッシュタグのリンクにおいて、前方のキャッシュタグ、又はエントリを示すポインタである。また、第２のポインタは、キャッシュタグのリンクにおいて、後方のキャッシュタグを示すポインタである。
【００４３】
プロセッサ１０２は、受信コマンドが示すアドレス、又はファイル等の識別子に基づいて、当該識別子を格納するエントリを決定する。その際、例えば、プロセッサ１０２は、ハッシュ関数等を用いて、エントリを決定しても良い。
【００４４】
なお、キャッシュタグのリンクにおいて、最後のキャッシュタグは、第２のポインタに、所定の符号を格納することが好ましい。以下の説明では、最後のキャッシュタグを示す符号として、「ＮＵＬＬ」を用いて説明する。ただし、これは、最後のキャッシュタグを示す符号を、「ＮＵＬＬ」に限定する趣旨ではない。
【００４５】
ここで、図３を参照しながら、本実施形態に係るキャッシュタグについて詳細に説明する。
【００４６】
図３に示すキャッシュタグ２５１は、キャッシュデータ格納領域２５２と、第１のポインタ２５３と、第２のポインタ２５４とを含んで構成される。
【００４７】
上述の通り、本実施形態に係るキャッシュタグ２５１は、前方参照する第１のポインタ２５３と、後方参照する第２のポインタ２５４と、キャッシュ格納領域２５２とを含んで構成される。そして、本実施形態に係るキャッシュ記憶部１０４は、第１のポインタ２５３と、第２のポインタ２５４と、キャッシュデータ格納領域２５２とを、連続したアドレスに配置することが好ましい。その場合、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域と、が不連続なアドレスに配置される場合に比べ、本実施形態に係るキャッシュ記憶部１０４は、効率的にデータのアクセスを実現できる。
【００４８】
なお、以下の説明では、キャッシュデータ格納領域に格納される、キャッシュデータの内容に意味がない場合、キャッシュタグは、「空きキャッシュタグ」であると表現する。また、以下の説明では、内容に意味がないキャッシュデータが格納された、キャッシュデータ格納領域は、「空」であると表現する。
【００４９】
図４は、本実施形態に係るキャッシュ記憶部１０４の一例を示す図である。図４に示すキャッシュ記憶部１０４は、エントリテーブル２０１と、キャッシュデータ格納領域２２０〜２２３とを含んで構成される。そして、エントリテーブル２０１は、エントリ２０２−１〜２０２−Ｎ（Ｎは、１以上の自然数）を含む。
【００５０】
各エントリ２０２−１〜２０２−Ｎは、キャッシュタグへのポインタ２０３−１〜２０３−Ｎを有する。例えば、エントリ２０２−１は、キャッシュタグへのポインタ２０３−１を有する。そして、キャッシュタグへのポインタ２０３−１は、キャッシュタグ２０４を示すポインタである。キャッシュタグ２０４は、キャッシュデータ格納領域２２０と、第１のポインタ２１０と、第２のポインタ２１１とを含んで構成される。
【００５１】
キャッシュデータ格納領域２２０は、Ｄａｔａ＿０１を格納する。また、第１のポインタ２１０は、エントリ２０２−１を示す。また、第２のポインタ２１１は「ＮＵＬＬ」である。そのため、エントリ２０２−１を起点とするキャッシュタグのリンクにおいて、キャッシュタグ２０４は、最後のキャッシュタグである。
【００５２】
また、エントリ２０２−２は、キャッシュタグへのポインタ２０３−２を有する。そして、キャッシュタグへのポインタ２０３−２は、キャッシュタグ２０５を示すポインタである。キャッシュタグ２０５は、キャッシュデータ格納領域２２１と、第１のポインタ２１２と、第２のポインタ２１３とを含んで構成される。キャッシュデータ格納領域２２１は、Ｄａｔａ＿０２を格納する。また、第１のポインタ２１２は、エントリ２０２−２を示す。また、第２のポインタ２１３は、キャッシュタグ２０６を示す。
【００５３】
キャッシュタグ２０６は、キャッシュデータ格納領域２２２と、第１のポインタ２１４と、第２のポインタ２１５とを含んで構成される。第１のポインタ２１４は、キャッシュタグ２０５を示す。また、第２のポインタ２１５は、「ＮＵＬＬ」である。また、キャッシュデータ格納領域２２２は、「空」である。そのため、エントリ２０２−２を起点とするキャッシュタグのリンクにおいて、空きキャッシュタグであるキャッシュタグ２０６が、最後のキャッシュタグである。
【００５４】
また、エントリ２０２−Ｎは、キャッシュタグへのポインタ２０３−Ｎを有する。そして、キャッシュタグへのポインタ２０３−Ｎは、キャッシュタグ２０７を示すポインタである。キャッシュタグ２０７は、キャッシュデータ格納領域２２３と、第１のポインタ２１６と、第２のポインタ２１７とを含んで構成される。第１のポインタ２１６は、エントリ２０２−Ｎを示す。また、第２のポインタ２１７は、「ＮＵＬＬ」である。また、キャッシュ格納領域２２３は、「空」である。このように、キャッシュタグのリンクは、空きキャッシュタグから構成されても良い。
【００５５】
ここで、比較例として、図５に示すキャッシュタグのリンクについて説明する。なお、図５の説明において、図４の説明と重複する内容は、適宜省略する。また、以下の説明において、キャッシュ記憶部１０４以外の構成は、本実施形態と、比較例とにおいて同一であるものとして説明する。
【００５６】
エントリテーブル３０１は、エントリ３０２−１〜３０２−Ｎ（Ｎは、１以上の自然数）を含んで構成される。エントリ３０２−１〜３０２−Ｎは、キャッシュタグへのポインタ３０３−１〜３０３−Ｎを含んで構成される。
【００５７】
図５に示す比較例のキャッシュタグ３０４〜３０７は、キャッシュデータ格納領域へのポインタ３２０〜３２３と、第１のポインタ３１０〜３１３と、第２のポインタ３１４〜３１７とを含んで構成される。
【００５８】
ここで、キャッシュデータ格納領域へのポインタとは、キャッシュデータが格納された領域へのポインタである。図５に示す比較例のキャッシュタグのリンクにおいては、キャッシュ記憶部１０４は、キャッシュデータにアクセス（リード、及び／又はライト）するためには、キャッシュデータ格納領域へのポインタを用いて、データ格納領域にアクセスする必要がある。さらに、図５に示す比較例のキャッシュタグ３０４〜３０７のアドレスと、キャッシュデータのアドレスとは、不連続となる。
【００５９】
一方、本実施形態に係るキャッシュタグは、キャッシュデータ格納領域を含んで構成される。そして、本実施形態に係るキャッシュタグにおいては、キャッシュデータ格納領域と、第１のポインタと、第２のポインタとを、連続したアドレスに配置する。従って、本実施形態に係るキャッシュタグは、図５に示す比較例のキャッシュタグのリンクに比べ、データの効率的なアクセスを実現できる。
【００６０】
次に、本実施形態に係る制御装置１００の動作について説明する。なお、以下の説明において、キャッシュタグへのポインタ、第１のポインタ、第２のポインタ、キャッシュデータ格納領域へのポインタを、夫々、区別しない場合、単に、「ポインタ」とも呼ぶ。上述の通り、キャッシュ記憶部１０４以外の構成は、本実施形態と、比較例とにおいて同一であるものとして説明する。
【００６１】
まず、本実施形態に係るキャッシュ記憶部１０４の構成の一例を、図６に示す。図６に示すキャッシュタグは、第１のポインタと、第２のポインタと、キャッシュデータ格納領域とを含んで構成されるものとする。
【００６２】
図６に示すキャッシュ記憶部１０４は、エントリテーブル６５０を含んで構成される。エントリテーブル６５０は、エントリ６００と、エントリ６１０とを含んで構成される。エントリ６００のキャッシュタグへのポインタ６０１は、キャッシュタグ６０２を示す。また、エントリ６１０のキャッシュタグへのポインタ６１１は、エントリ６１２を示す。
【００６３】
キャッシュタグ６０２は、第１のポインタ６０３と、第２のポインタ６０４と、キャッシュデータ格納領域６０５とを含んで構成される。第１のポインタ６０３は、エントリ６００を示す。そして。第２のポインタ６０４は、「ＮＵＬＬ」であるとする。さらに、キャッシュデータ格納領域６０５は、Ｄａｔａ＿１０を格納するとする。
【００６４】
キャッシュタグ６１２の第１のポインタ６１３は、エントリ６１０を示す。そして、キャッシュタグ６１２の第２のポインタ６１４は、キャッシュタグ６１６を示す。そして、
キャッシュタグ６１２のキャッシュデータ格納領域６１５は、「空」であるとする。
【００６５】
また、キャッシュタグ６１６の第１のポインタ６１７は、キャッシュタグ６１２を示す。そして、キャッシュタグ６１６の第２のポインタ６１８は、「ＮＵＬＬ」であるとする。そして、キャッシュタグ６１６のキャッシュデータ格納領域６１９は、「空」であるとする。つまり、キャッシュタグ６１２、及びキャッシュタグ６１６は、空きキャッシュタグであるとする。
【００６６】
一方、比較例のキャッシュ記憶部７０の構成の一例を、図７に示す。図７に示す各キャッシュタグは、第１のポインタと、第２のポインタと、キャッシュデータ格納領域へのポインタとを含んで構成されるものとする。
【００６７】
図７に示す比較例のキャッシュ記憶部７０は、エントリテーブル７５０を含んで構成される。エントリテーブル７５０は、エントリ７００と、エントリ７１０とを含んで構成される。エントリ７００のキャッシュタグへのポインタ７０１は、キャッシュタグ７０２を示す。また、エントリ７１０のキャッシュタグへのポインタ７１１は、キャッシュタグ７１２を示す。
【００６８】
キャッシュタグ７０２は、第１のポインタ７０３と、第２のポインタ７０４と、キャッシュデータ格納領域へのポインタ７０５とを含んで構成される。第１のポインタ７０３は、エントリ７００を示す。そして、第２のポインタ７０４は、「ＮＵＬＬ」であるとする。さらに、キャッシュデータ格納領域へのポインタ７０５は、所定のデータのアドレスを示すとする。
【００６９】
キャッシュタグ７１２の第１のポインタ７１３は、エントリ７１０を示す。そして、キャッシュタグ７１２の第２のポインタ７１４は、キャッシュタグ７１５を示す。キャッシュタグ７１５の第１のポインタ７１６は、キャッシュタグ７１２を示す。そして、キャッシュタグ７１５の第２のポインタ７１７は、「ＮＵＬＬ」であるとする。そして、キャッシュタグ７１２、７１５は、空きキャッシュタグであるとする。
【００７０】
上記の図６、及び図７に示す状態において、ホストからリードリクエストが発行された場合の動作について、説明する。
【００７１】
図８は、本実施形態に係る制御装置１００のデータ読み出し動作の一例を示すフローチャートである。
【００７２】
ステップＳ１において、リードリクエストが発行されたか否かを、コマンド処理部１０１は判断する。コマンド処理部１０１がリードリクエストを受信した場合（ステップＳ１のＹｅｓ分岐）には、プロセッサ１０２は、キャッシュ記憶部１０４の検索を開始する（ステップＳ２）。具体的には、プロセッサ１０２は、キャッシュ記憶部１０４のキャッシュディレクトリの検索を開始する。一方、リードリクエストが発行されていない場合（ステップＳ１のＮｏ分岐）には、データ読み出し動作を終了する。
【００７３】
ステップＳ３において、リードリクエストで示されるアドレス、及び／又はファイルに対応する識別子が、キャッシュ記憶部１０４に存在するか否かを、プロセッサ１０２は判断する。当該識別子がキャッシュ記憶部１０４に存在する場合（ステップＳ３のＹｅｓ分岐）には、プロセッサ１０２は、当該識別子に基づいて、エントリを特定する（ステップＳ４）。例えば、プロセッサ１０２は、当該識別子に基づいて、ハッシュ関数等を用いて、エントリを特定しても良い。そして、ステップＳ５に遷移する。一方、当該識別子がキャッシュ記憶部１０４に存在しない場合（ステップＳ３のＮｏ分岐）には、ステップＳ８に遷移する。
【００７４】
ステップＳ５において、プロセッサ１０２は、特定されたエントリのポインタを辿り、キャッシュタグを特定する。
【００７５】
ここで、図６に示す本実施形態に係るキャッシュ記憶部１０４の場合に、ステップＳ４の処理において、プロセッサ１０２は、エントリ６００を特定したとする。その場合、プロセッサ１０２は、エントリ６００のポインタ６０１を辿り、キャッシュタグ６０２を特定する。
【００７６】
一方、図７に示す比較例のキャッシュ記憶部７０の場合、ステップＳ４の処理において、プロセッサ１０２は、エントリ７００を特定したとする。その場合、プロセッサ１０２は、エントリ７００のポインタ７０１を辿り、キャッシュタグ７０２を特定する。
【００７７】
ステップＳ６において、特定されたキャッシュタグに登録されている識別子と、ホストから指定された識別子と、が一致するか否かを、プロセッサ１０２は判断する。特定されたキャッシュタグに登録されている識別子と、ホストから指定された識別子と、が一致する場合（ステップＳ６のＹｅｓ分岐）には、当該キャッシュタグから、データをリードデータとして読み出す（ステップＳ１０）。そして、ステップＳ１１に遷移する。
【００７８】
ここで、図６に示す本実施形態に係るキャッシュ記憶部１０４の場合に、ステップＳ５の処理において、プロセッサ１０２が、キャッシュタグ６０２を特定したとする。その場合、キャッシュタグ６０２に登録されている識別子と、ホストから指定された識別子と、が一致するか否かを、プロセッサ１０２は判断する。
【００７９】
そして、キャッシュタグ６０２に登録されている識別子と、ホストから指定された識別子と、が一致した場合には、プロセッサ１０２は、キャッシュデータ格納領域６０５から、データをリードデータとして読み出す。
【００８０】
一方、図７に示す比較例のキャッシュ記憶部７０の場合に、ステップＳ５の処理において、プロセッサ１０２がキャッシュタグ７０２を特定したとする。その場合、キャッシュタグ７０２に登録されている識別子と、ホストから指定された識別子と、が一致するか否かを、プロセッサ１０２は判断する。
【００８１】
そして、キャッシュタグ７０２に登録されている識別子と、ホストから指定された識別子と、が一致した場合には、プロセッサ１０２は、キャッシュデータ格納領域へのポインタ７０５が示すアドレスを参照する。そして、プロセッサ１０２は、キャッシュデータ格納領域へのポインタ７０５が示すアドレスのデータを、リードデータとして読み出す。
【００８２】
本実施形態に係るキャッシュ記憶部１０４は、本実施形態に係るキャッシュタグ６０２が、キャッシュデータ格納領域６０５を有するので、比較例のキャッシュ記憶部７０より、効率的にデータにアクセスできる。
【００８３】
一方、特定されたキャッシュタグに登録されている識別子と、ホストから指定された識別子と、が一致しない場合（ステップＳ６のＮｏ分岐）には、ステップＳ７に遷移する。
【００８４】
ステップＳ７において、プロセッサ１０２は、特定されたエントリのポイントからなる、リンクの最後に、空きキャッシュタグを追加する。そして、ステップＳ８に遷移する。空きキャッシュタグを追加する処理の詳細は、後述する。
【００８５】
そして、ステップＳ８において、ディスク制御部１０３は、ストレージ装置１０にアクセスする。そして、ステップＳ９において、ディスク制御部１０３は、ホストから指定される識別子に基づいて、ストレージ装置から、データをリードデータとして読み出す。そして、ステップＳ１１に遷移する。
【００８６】
ステップＳ１１において、コマンド処理部１０１は、リードリクエストの発信元のホストに、リードデータを転送する。
【００８７】
次に、空きキャッシュタグを追加する処理について、詳細に説明する。
【００８８】
図９は、空きキャッシュタグを追加する処理の一例を示すフローチャートである。
【００８９】
ステップＳ１０１において、プロセッサ１０２は、空きキャッシュタグが示すエントリを特定する。
【００９０】
ステップＳ１０２において、プロセッサ１０２は、ステップＳ１０１において特定されたエントリから、ポインタがＮＵＬＬになるまで、ポインタを辿る。
【００９１】
ステップＳ１０３において、プロセッサ１０２は、ポインタがＮＵＬＬであるキャッシュタグを、最後の空きキャッシュタグであると判断する。そして、ステップＳ１０４に遷移する。
【００９２】
図６に示す本実施形態に係るキャッシュ記憶部１０４の場合には、空きキャッシュタグは、キャッシュタグ６１２、及びキャッシュタグ６１６である。そのため、ステップＳ１０１において、プロセッサ１０２は、空きキャッシュタグが示すエントリとして、エントリ６１０を特定する。そして、ステップＳ１０２において、エントリ６１０から、ポインタが「ＮＵＬＬ」にまるまで、ポインタを辿る。ここで、ポインタが「ＮＵＬＬ」であるキャッシュタグは、キャッシュタグ６１６である。そのため、プロセッサ１０２は、キャッシュタグ６１６を最後の空きキャッシュタグであると判断する。
【００９３】
または、制御装置１００が、キャッシュ記憶部１０４とは異なる、第３の記憶装置６１を備えるとする。その場合、第３の記憶装置６１に、最後の空きキャッシュタグを示すポインタ６２１を格納しても良い。そして、プロセッサ１０２は、最後の空きキャッシュタグを示すポインタ６２１を参照して、最後の空きキャッシュタグを特定しても良い。例えば、第３の記憶装置６１は、ＤＲＡＭを用いて実現しても良い。
【００９４】
一方、図７に示す比較例キャッシュ記憶部７０の場合には、空きキャッシュタグは、キャッシュタグ７１２、及びキャッシュタグ７１５である。そのため、ステップＳ１０１において、プロセッサ１０２は、空きキャッシュタグが示すエントリとして、エントリ７１０を特定する。そして、ステップＳ１０２において、エントリ７１０から、ポインタが「ＮＵＬＬ」になるまで、ポインタを辿る。ここで、ポインタが「ＮＵＬＬ」であるキャッシュタグは、キャッシュタグ７１５である。そのため、プロセッサ１０２は、キャッシュタグ７１５を最後の空きキャッシュタグであると判断する。
【００９５】
ここで、本実施形態に係るキャッシュ記憶部１０４の場合には、キャッシュタグが、キャッシュデータ格納領域を有する。そのため、プロセッサ１０２は、キャッシュデータ格納領域６１５、及び６１９を参照すれば、キャッシュタグ６１２、キャッシュタグ６１６が空きキャッシュタグであるか否かを、容易に判断できる。また、キャッシュタグがキャッシュデータ格納領域を有する場合、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とを、連続したアドレスに配置することを、容易に実現できる。
【００９６】
一方、図７に示す比較例のキャッシュ記憶部７０の場合には、プロセッサ１０２は、キャッシュデータ格納領域へのポインタが示すアドレスを参照しなくては、キャッシュタグ７１２、及びキャッシュタグ７１５が空きキャッシュタグであるか否かを判断できない。さらに、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域と、が不連続なアドレスに配置されるとする。その場合には、比較例のキャッシュ記憶部７０は、本実施形態に係るキャッシュ記憶部１０４より、データのアクセス効率が低下する。
【００９７】
ステップＳ１０４において、プロセッサ１０２は、図８に示すステップＳ４において特定されたエントリを起点とする、キャッシュタグのリンクの最後に、ステップＳ１０３において特定された、最後の空きキャッシュタグを追加する。
【００９８】
図６に示す本実施形態に係るキャッシュ記憶部１０４の場合には、プロセッサ１０２は、エントリ６００を起点とする、キャッシュタグのリンクの最後に、キャッシュタグ６１６を追加する。
【００９９】
ここで、本実施形態に係るキャッシュ記憶部１０４における、キャッシュタグのリンクの最後に、最後の空きキャッシュタグを追加する処理について、詳細に説明する。
【０１００】
まず、プロセッサ１０２は、最後の空きキャッシュタグである、キャッシュタグ６１６の第１のポインタ６１７が示す、キャッシュタグ６１２を特定する。そして、キャッシュタグ６１２の第２のポインタの内容を、「ＮＵＬＬ」に変更する（本実施形態における１回目の書き込み処理）。
【０１０１】
次に、プロセッサ１０２は、キャッシュタグ６１６の第１のポインタ６１７の内容を、キャッシュタグ６０２のアドレスに変更すると共に、キャッシュタグ６１６のキャッシュデータ格納領域６１９に、ストレージ装置１０から読み出した内容を書き込む（本実施形態における２回目の書き込み処理）。なお、ここで、図６に示す通り、キャッシュタグ６０２は、図８に示すステップＳ５において特定された、キャッシュタグである。
【０１０２】
本実施形態に係るキャッシュ記憶部１０４においては、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とが、連続したアドレスに配置されるため、上記の２回目の書き込み処理の処理を実現できる。
【０１０３】
次に、プロセッサ１０２は、キャッシュタグ６０２の第２のポインタ６０４の内容を、キャッシュタグ６１６のアドレスに変更する（本実施形態における３回目の書き込み処理）。
【０１０４】
その結果、図１０に示す通り、キャッシュタグ６１６を追加した、エントリ６００を起点とする、キャッシュタグのリンクが構成される。図１０に示す通り、キャッシュタグ６０２の第２のポインタ６０４は、キャッシュタグ６１６を示す。そして、キャッシュタグ６１６の第１のポインタ６１７は、キャッシュタグ６０２を示す。
【０１０５】
一方、図７に示す比較例のキャッシュタグ７０の場合には、プロセッサ１０２は、エントリ７００を起点とする、キャッシュタグのリンクの最後に、キャッシュタグ７１５を追加する。
【０１０６】
ここで、比較例のキャッシュ記憶部７０における、キャッシュタグのリンクの最後に、最後の空きキャッシュタグを追加する処理について、詳細に説明する。
【０１０７】
まず、プロセッサ１０２は、最後の空きキャッシュタグである、キャッシュタグ７１５の第１のポインタ７１６が示す、キャッシュタグ７１２を特定する。そして、キャッシュタグ７１２の第２のポインタ７１４の内容を、「ＮＵＬＬ」に変更する（比較例における１回目の書き込み処理）。
【０１０８】
次に、プロセッサ１０２は、キャッシュタグ７１５の第１のポインタ７１６の内容を、キャッシュタグ７０２のアドレスに変更する（比較例における２回目の書き込み処理）。
【０１０９】
次に、プロセッサ１０２は、キャッシュタグ７０２の第２のポインタ７０４の内容を、キャッシュタグ７１５のアドレスに変更する（比較例における３回目の書き込み処理）。
【０１１０】
次に、プロセッサ１０２は、ストレージ装置１０から読み出したデータを、キャッシュタグ７０２のキャッシュデータ格納領域へのポインタ７０５を用いて、データ格納領域に書き込む（比較例における４回目の書き込み処理）。
【０１１１】
その結果、図１１に示す通り、キャッシュタグ７１５を追加した、エントリ７００を起点とする、キャッシュタグのリンクが構成される。図１１において、キャッシュタグ７０２の第２のポインタ７０４は、キャッシュタグ７１５を示す。そして、キャッシュタグ７１５の第１のポインタ７１６は、キャッシュタグ７０２を示す。
【０１１２】
本実施形態における空きキャッシュタグの追加処理と、比較例における空きキャッシュタグの追加処理とを比較すると、本実施形態における書き込み回数は、比較例における書き込み回数より少ない。なぜなら、上述の通り、本実施形態の場合、プロセッサ１０２は、ポインタの内容の変更と、キャッシュデータ格納領域のデータの書き換えとを１回のライトで実行できるからである。
【０１１３】
一方、比較例の場合、プロセッサ１０２は、ポインタの内容を変更するライトを実行後に、キャッシュデータ格納領域へのポインタを用いて、データ格納領域を特定する必要がある。そして、比較例の場合、プロセッサ１０２は、キャッシュデータ格納領域へのポインタを用いて、データ格納領域を特定後に、データを書き換える、ライトを実行する必要がある。そのため、本実施形態に係るキャッシュタグの場合、比較例のキャッシュタグより、効率的に、ストレージ装置１０からデータを読み出すことができる。
【０１１４】
なお、制御装置１００が、ホストからライトリクエストを受信した場合についても、本実施形態に係るキャッシュ記憶部１０４は、比較例のキャッシュ記憶部７０より効率的に、ストレージ装置１０にアクセスできる。キャッシュタグのリンク、及びストレージ装置１０へのアクセスについて上述の通りであるため、詳細な説明は省略する。
【０１１５】
以上のように、本実施形態に係るキャッシュタグは、キャッシュデータ格納領域を含んで構成される。そのため、本実施形態に係るキャッシュタグにおいては、前方参照する第１のポインタと、後方参照する第２のポインタと、キャッシュデータ格納領域とが、連続したアドレスに配置される。その結果、本実施形態に係るキャッシュ記憶部１０４は、不揮発メモリにおいて書き込み回数を低減することに貢献する。
【０１１６】
上述の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１１７】
（付記１）上記第１の視点に係る記憶装置の通りである。
【０１１８】
（付記２）前記各エントリは、データのアドレスに対応する識別子を格納する領域を、さらに含む、付記１に記載の記憶装置。
【０１１９】
（付記３）上記第２の視点に係る制御装置の通りである。
【０１２０】
（付記４）前記各エントリは、データのアドレスに対応する識別子を格納する領域を、さらに含む、付記３に記載の制御装置。
【０１２１】
（付記５）前記プロセッサは、前記コマンド制御部が読み出しのリクエストを受け付けた場合、当該リクエストに対応する前記識別子に応じたデータが、前記第１の記憶装置に格納されているか否か、前記第１の記憶装置を検索し、当該データが前記第１の記憶装置に存在した場合、当該データを前記第１の記憶装置から読み出す、付記４に記載の制御装置。
【０１２２】
（付記６）前記制御装置の外部に配置された、第２の記憶装置にアクセスする、ディスク制御部をさらに備え、前記プロセッサは、前記コマンド制御部が読み出しのリクエストを受け付けた際に、当該リクエストに対応する前記識別子に応じたデータが、前記第１の記憶装置に格納されていない場合、前記第２の記憶装置から当該データを読み出し、前記識別子に対応する前記キャッシュデータ格納領域に書き込む、付記５に記載の制御装置。
【０１２３】
（付記７）前記プロセッサは、前記コマンド制御部が書き込みのリクエストを受け付けた場合、当該リクエストに対応する前記識別子が、前記第１の記憶装置に格納されている場合、前記識別子に対応する前記キャッシュデータ格納領域に、データを書き込み、当該リクエストに対応する前記識別子が、前記第１の記憶装置に格納されていない場合、キャッシュタグを前記第１の記憶装置に追加し、当該追加されたキャッシュタグにデータを書き込む、付記４乃至６のいずれか一に記載の制御装置。
【０１２４】
（付記８）揮発メモリである第３の記憶装置をさらに備え、前記第３の記憶装置は、空きキャッシュタグのリンクにおける、最後のキャッシュタグを示すポインタを含み、前記プロセッサは、前記最後のキャッシュタグを示すポインタに基づいて、前記最後のキャッシュタグを特定する、付記３乃至６のいずれか一に記載の制御装置。
【０１２５】
（付記９）上記第３の視点に係る記憶装置の制御方法の通りである。
【０１２６】
（付記１０）上記第４の視点に係るプログラムの通りである。
【０１２７】
なお、上記の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１２８】
１０  ストレージ装置
６１  第３の記憶装置
７０  比較例のキャッシュ記憶部
１００  制御装置
１０１  コマンド処理部
１０２  プロセッサ
１０３  ディスク制御部
１０４  キャッシュ記憶部
１０５  ディスクインターフェイス
１０６  ホストインターフェイス
２０１、３０１、６５０、７５０  エントリテーブル
２０２−１〜２０２−Ｎ、３０２−１〜３０２−Ｎ、６００、６１０、７００、７１０、１００１−１〜１００１−Ｍ  エントリ
２０３−１〜２０３−Ｎ、３０３−１〜３０３−Ｎ、６０１、６１１、７０１、７１１  キャッシュタグへのポインタ
２０４〜２０７、２５１、３０４〜３０７、６０２、６１２、６１６、７０２、７１２、７１５、１００２−１〜１００２−Ｋ  キャッシュタグ
２１０、２１２、２１４、２１６、２５３、３１０〜３１３、６０３、６１３、６１７、７０３、７１３、７１６  第１のポインタ
２１１、２１３、２１５、２１７、２５４、３１４〜３１７、６０４、６１４、６１８、７０４、７１４、７１７  第２のポインタ
２２０〜２２３、２５２、６０５、６１５、６１９、１００５−１〜１００５−Ｋ  キャッシュデータ格納領域
３２０〜３２３、７０５  キャッシュデータ格納領域へのポインタ
６２１  ポインタ
１０００  記憶装置
１００３−１〜１００３−Ｋ  第１のポインタ
１００４−１〜１００４−Ｋ  第２のポインタ
【図１】
0006384151.tif 000002
【図２】
0006384151.tif 000003
【図３】
0006384151.tif 000004
【図４】
0006384151.tif 000005
【図５】
0006384151.tif 000006
【図６】
0006384151.tif 000007
【図７】
0006384151.tif 000008
【図８】
0006384151.tif 000009
【図９】
0006384151.tif 000010
【図１０】
0006384151.tif 000011
【図１１】
0006384151.tif 000012