(57)【要約】【課題】キャッシュメモリの使用量を抑制することができる、キャッシュ装置、及びプロセッサを提供する。【解決手段】データとアドレスとを一時的に保持するキャッシュ２９と、予め設定された特定データのアドレスを一時的に保持する特定データタグ２８と、任意のデータが特定データであるか否かを判定するデータ比較部２７３と、任意のアドレスの格納先を検索するアドレス比較部２７４とを有する比較制御部２７１を備え、指定されたアドレスについてデータのロードが指示された場合に、比較制御部２７１は指定されたアドレスの格納先を検索し、格納先がキャッシュ２９である場合には指定されたアドレスのデータを出力し、格納先が特定データタグ２８である場合には特定データを出力する。【選択図】図２
2016057763.tif 000002
【特許請求の範囲】
【請求項１】
データと前記データのアドレスとを一時的に保持する第一のメモリと、
予め設定された特定データの前記アドレスを一時的に保持する第二のメモリと、
任意のデータが前記特定データであるか否かを判定するデータ比較部と、任意のアドレスの格納先を検索するアドレス比較部とを有する第一の比較制御部を備え、
指定されたアドレスについて前記データのロードが指示された場合に、第一の比較制御部は前記指定されたアドレスの格納先を検索し、前記格納先が前記第一のメモリである場合には前記指定されたアドレスのデータを出力し、前記格納先が前記第二のメモリである場合には前記特定データを出力する、キャッシュ装置。
【請求項２】
前記指定されたデータをストアする指示がなされた場合に、第一の比較制御部は前記指定されたデータが前記特定データであるか否かを判定し、
前記指定されたデータが前記特定データでない場合には、前記指定されたデータのアドレスとデータとを前記第一のメモリに格納し、
前記指定されたデータが前記特定データの場合には、前記指定されたデータのアドレスを前記第二のメモリに格納する、請求項１に記載のキャッシュ装置。
【請求項３】
一時的に保持するデータが前記特定データであるか否かを判定するデータ比較部を有する第二の比較制御部を更に備え、
前記一時的に保持するデータが前記特定データでない場合には、前記一時的に保持するデータとそのアドレスとを前記前記第一のメモリに格納し、
前記一時的に保持するデータが前記特定データである場合には、前記一時的に保持するデータを前記第二のメモリに格納する、請求項１に記載のキャッシュ装置。
【請求項４】
前記指定されたデータをストアする指示がなされた場合に、第一の比較制御部は前記指定されたデータが前記特定データであるか否かの判定と前記指定されたアドレスの格納先を検索し、
前記指定されたデータが前記特定データでない場合で前記格納先が前記第一のメモリである場合には、前記指定されたデータを前記第一のメモリに格納し処理を完了し、
前記指定されたデータが前記特定データでない場合で前記格納先が前記第二のメモリである場合には、前記第二のメモリの前記指定されたアドレスを無効化し、
前記指定されたデータが前記特定データの場合で前記格納先が前記第一のメモリである場合には、前記第―のメモリの前記指定されたアドレスを無効化し、
前記指定されたデータが前記特定データの場合で前記格納先が前記第二のメモリである場合には、処理を完了する、請求項３に記載のキャッシュ装置。
【請求項５】
キャッシュ装置と、
前記キャッシュ装置から取得したデータの演算を行うＣＰＵを備え、
前記キャッシュ装置は、前記データと前記データのアドレスとを一時的に保持する第一のメモリと、予め設定された特定データの前記アドレスを一時的に保持する第二のメモリと、任意のデータが前記特定データであるか否かを判定するデータ比較部と、任意のアドレスの格納先を検索するアドレス比較部とを有する第一の比較制御部を備え、前記ＣＰＵからアドレスが指定されデータのロードが指示された場合に、第一の比較制御部は前記指定されたアドレスの格納先を検索し、前記格納先が前記第一のメモリである場合には前記指定されたアドレスのデータを出力し、前記格納先が前記第二のメモリである場合には前記特定データを前記ＣＰＵに出力する、プロセッサ。
【請求項６】
前記キャッシュ装置は、一時的に保持するデータが前記特定データであるか否かを判定するデータ比較部を有する第二の比較制御部を更に備え、前記一時的に保持するデータが前記特定データでない場合には、前記一時的に保持するデータとそのアドレスとを前記前記第一のメモリに格納し、前記一時的に保持するデータが前記特定データである場合には、前記一時的に保持するデータを前記第二のメモリに格納する、請求項５に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、キャッシュ装置、及びプロセッサに関する。
【背景技術】
【０００２】
一般的に、プロセッサやハードウェアエンジンの演算処理速度は、DRAM等から成るメインメモリのデータ供給速度よりも速い。この速度差を埋めるために、キャッシュメモリが用いられている。キャッシュメモリは、メインメモリよりも高速に動作するSRAM等から成るメモリであり、メインメモリのデータを一時的に記憶するものである。プロセッサなどは、メインメモリでなくキャッシュメモリに格納されているデータにアクセスすることで、高速な処理を行うことができる。キャッシュメモリは、メインメモリに比べて小容量であり、メインメモリの一部のデータのみを、所定のブロック単位で記憶する。
【０００３】
メインメモリに格納されているデータには例えば行列があり、プロセッサなどが行列にアクセスする際には、行列の一部がキャッシュメモリにコピーされる。行列には、その要素の大部分が同一値（たとえばゼロ）である疎行列と、異なる多様な要素で構成されている密行列とがある。一般的に、科学技術計算に用いられる行列などは、疎行列である場合が多い。
【０００４】
メインメモリに格納されているデータが疎行列である場合、従来は、大部分が同一のデータであるにもかかわらず、指定された行列の一部に含まれるすべてのデータをキャッシュにコピーしていた。すなわち、データが疎行列である場合においても、キャッシュメモリにはプロセッサなどで使用されるデータ量に応じた記憶容量が必要となる。
【０００５】
しかし、キャッシュメモリは高価であり、また、装置の小型化に対する要望が高まっていることから、記憶容量をなるべく小さくしたいという要望がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１８１３８６号公報
【特許文献２】特開昭５３−６４４３９号公報
【非特許文献】
【０００７】
【非特許文献１】Computer Organization and Design, John L. Hennessy and DavidA. Patterson, pp.545-579
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本実施形態は、キャッシュメモリの使用量を抑制することができる、キャッシュ装置、及びプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本実施形態のキャッシュ装置は、データと前記データのアドレスとを一時的に保持する第一のメモリと、予め設定された特定データの前記アドレスを一時的に保持する第二のメモリと、任意のデータが前記特定データであるか否かを判定するデータ比較部と、任意のアドレスの格納先を検索するアドレス比較部とを有する第一の比較制御部を備え、指定されたアドレスについて前記データのロードが指示された場合に、第一の比較制御部は前記指定されたアドレスの格納先を検索し、前記格納先が前記第一のメモリである場合には前記指定されたアドレスのデータを出力し、前記格納先が前記第二のメモリである場合には前記特定データを出力する。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係わるキャッシュ装置１２を含むシステムの構成を説明する概略ブロック図。
【図２】キャッシュ装置１２の構成の一例を説明する概略ブロック図。
【図３】キャッシュ装置１２の構成の変形例を説明する概略ブロック図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を説明する。
（構成）
図１は、本発明の実施形態に係わる本発明の実施形態に係わるキャッシュ装置１２を含むシステムの構成を説明する概略ブロック図である。本実施形態のキャッシュ装置１２を含むシステムは、中央処理装置（以下、CPUと記す）１１とキャッシュ装置１２とを含むプロセッサ１と、メインメモリである主記憶装置３と、入出力装置４と、相互接続網２とから主に構成されている。CPU１１と、キャッシュ装置１２と、主記憶装置３と、入出力装置４とは、相互接続網２を介して互いに接続される。また、相互接続網２には、別のプロセッサ５を接続することもできる。プロセッサ５はキャッシュを備えていてもよいし、プロセッサ１のキャッシュ装置１２を共有して用いる構成にしてもよい。
【００１２】
CPU１１は、各種データの演算を行う。CPU１１は、キャッシュ装置１２と、相互接続網２とに接続されており、演算に必要なデータ（プログラムを含む）を、キャッシュ装置１２あるいは相互接続網２経由で主記憶装置３から取得する。キャッシュ装置１２は、各種データを一時的に保存する。具体的には、キャッシュ装置１２は、CPU１１よりストアされたデータや、主記憶装置３から取得したデータを保持する。
【００１３】
主記憶装置３は、入出力装置４から取得したデータや、CPU１１及びキャッシュ装置１２から出力されたデータを記録する。入出力装置４は、図１に示すシステムの外部から主記憶装置３にデータを入力したり、主記憶装置３からシステム外部にデータを出力したりする。プログラムを含め、本システムの動作に必要なデータは、入出力装置４から入力される。
【００１４】
キャッシュ装置１２は、ロードストアフラグ（L／S）、アドレス、ストアデータ（S_Data）の各データをCPU１１から取得する。ロードストアフラグは、CPU１１からキャッシュ装置１２に対してデータを出力する（ストア）か、キャッシュ装置１２からCPU１１にデータを入力する（ロード）かを識別するためのフラグである。例えば、ロードストアフラグは、ロードの場合には“０”が、ストアの場合には“１”がセットされる。アドレスは、特定のビット幅でタグとインデックスとに分類される。また、キャッシュ装置１２は、ロードデータ（L_Data）をCPU１１に対して出力する。
【００１５】
さらに、キャッシュ装置１２は主記憶装置３に対し、ライトインタフェース（W I／F）２５を介し相互接続網２を経由してデータを出力する。また、キャッシュ装置１２は主記憶装置３から、相互接続網２を経由しリードインタフェース（R I／F）２６を介してデータを取得する。キャッシュ装置１２のすべての動作の制御は、制御部２７で行われる。
【００１６】
次に、キャッシュ装置１２の詳細な構成について説明する。図２は、キャッシュ装置１２の構成の一例を説明する概略ブロック図である。図２のキャッシュ装置１２は、第二のメモリとしての特定データタグ２８、第一のメモリとしての一般データキャッシュ（以下、キャッシュと示す）２９、リフィルバッファ３０、ライトキュー３１、ライトインタフェース２５、リードキュー３２、リードインタフェース２６、特定データレジスタ３３、第一の比較制御部である比較制御部２７１、及び、第二の比較制御部である比較制御部２７２で構成される。比較制御部２７１、２７２は、図１の制御部２７に含まれる。
【００１７】
特定データタグ２８は、特定データの一時保存状態を管理するための機構である。ここで特定データとは、データ中に含まれる一定のデータであり、多く含まれるデータや連続して含まれるデータ等である。例えば、疎行列には“０”が多く含まれるので、“０”を特定データとしてのよい。また、画像データには背景値が連続して含まれるので、背景値を特定データとしてもよい。特定データタグ２８は、複数の特定データタグエントリで構成され、各特定データタグエントリは、当該エントリが有効であるか否かを識別するための有効ビット（V）、特定データのアドレスを示すアドレスタグ（Tag）、当該エントリが書き換えられている否かを識別するためのダーティビット（D）で構成される。
【００１８】
キャッシュ２９は、特定データ以外のデータを一時保存するための機構であり、キャッシュタグと、キャッシュラインアレイとから構成される。キャッシュタグは、複数のキャッシュタグエントリで構成される。各キャッシュタグエントリは、有効ビット（V）、アドレスタグ（Tag）、ダーティビット（D）で構成される。キャッシュラインアレイは、複数のラインデータ（Line Data）で構成される。キャッシュタグエントリとキャッシュラインは、１対１で対応づけられている。
【００１９】
リフィルバッファ３０は、主記憶装置３から取得したデータやCPU１１から取得したデータを、特定データタグ２８またはキャッシュ２９のどちらか一方に提供する。リフィルバッファ３０は、リフィルタグと、リフィルラインアレイとから構成される。リフィルタグは、複数のリフィルタグエントリで構成され、各リフィルタグエントリは、有効ビット（V）、アドレス（Address）、ダーティビット（D）で構成される。リフィルラインアレイは、複数のラインデータ（Line Data）で構成される。リフィルタグエントリとリフィルラインは、１対１で対応づけられている。
【００２０】
ライトキュー３１は、ライトインタフェース２５を介して主記憶装置３にデータを出力する。ライトキュー３１は、複数のライトキューエントリで構成される。各ライトキューエントリは、アドレス（Address）とラインデータ（Line Data）で構成される。
【００２１】
リードキュー３２は、リードインタフェース２６を介して主記憶装置３からデータを取得する。リードキュー３２は、複数のリードキューエントリで構成される。各リードキューエントリは、アドレス（Address）で構成される。
【００２２】
特定データレジスタ３３は、特定データタグ２８で管理する特定データを格納するためのレジスタである。特定データは、CPU１１によって指定される。特定データを一定の値（例えば、“０”）に固定する場合には、レジスタ３３の値を固定してもよいし、あるいはレジスタ３３の各出力先で該固定値を入力してもよい。
【００２３】
すなわち、本実施形態では、特定データレジスタ３３と特定データタグ２８を設けることで、特定データについてはアドレスタグのみを特定データタグ２８に格納し、データ自体は格納しない。これにより、すべてのデータをキャッシュに格納する場合に比べて、キャッシュメモリの使用量を削減することができる。
【００２４】
比較制御部２７１は、CPU１１とキャッシュ装置１２との間でのデータフローを制御する。比較制御部２７１は、ロードの場合、キャッシュ２９、特定データレジスタ３３、リフィルバッファ３０のいずれからデータをCPU１１にロードするかを決定する。また、比較制御部２７１は、ストアの場合、CPU１１から取得したストアデータ及びアドレスを、特定データタグ２８、キャッシュ２９、リフィルバッファ３０のいずれに格納するかを決定する。比較制御部２７１は、データ比較部２７３とアドレス比較部２７４とから構成される。データ比較部２７３は、ストアデータと特定データとを比較する。アドレス比較部２７４は、CPU１１から取得したアドレスと、キャッシュ２９の当該キャッシュタグエントリ、特定データレジスタ３３、リフィルバッファ３０に格納されているアドレスとを比較する。
【００２５】
比較制御部２７２は、リフィルバッファ３０のリフィルラインアレイに格納されているデータのリフィル先を制御する。具体的には、比較制御部２７２は、リフィルラインアレイのデータと特定データとを比較するデータ比較部２７５で構成される。
（作用）
次に、本実施形態におけるキャッシュ装置１２の動作について説明する。まず、キャッシュ装置１２からCPU１１にデータをロードする場合について説明する。
【００２６】
CPU１１からキャッシュ装置１２に対し、ロードストアフラグとしてロードを示すフラグと、ロードするデータが格納されているアドレスとが入力される。ロードストアフラグとアドレスは、比較制御部２７１に入力される。アドレス比較部２７４は、特定データタグ２８と、キャッシュ２９と、リフィルバッファ３０に、入力されたアドレスのエントリが存在するか否かを判定する（アドレスヒット判定）。
【００２７】
特定データタグ２８のアドレスヒット判定は、次のように行う。まず、入力されたアドレスのインデックスに基づき、該当する特定データタグエントリを抽出する。あるいは、入力されたアドレスのタグに基づいて特定データタグエントリを抽出しても良い。抽出した特定データタグエントリの有効ビットが“無効”を示す場合、入力されたアドレスのエントリは存在しないと判定する。一方、有効ビットが“有効”を示す場合、抽出した特定データタグエントリのアドレスタグと、入力されたアドレスのタグとを比較する。両者が異なる場合、入力されたアドレスのエントリは存在しないと判定する。両者が同一である場合、入力されたアドレスのエントリは特定データタグ２８に存在すると判定する。
【００２８】
キャッシュ２９のアドレスヒット判定は、次のように行う。まず、入力されたアドレスのインデックスに基づき、該当するキャッシュタグエントリを抽出する。あるいは、入力されたアドレスのタグに基づいてキャッシュタグエントリを抽出しても良い。抽出したキャッシュタグエントリの有効ビットが“無効”を示す場合、入力されたアドレスのエントリは存在しないと判定する。一方、有効ビットが“有効”を示す場合、抽出したキャッシュタグエントリのアドレスタグと、入力されたアドレスのタグとを比較する。両者が異なる場合、入力されたアドレスのエントリは存在しないと判定する。両者が同一である場合、入力されたアドレスのエントリはキャッシュ２９に存在すると判定する。
【００２９】
リフィルバッファ３０のアドレスヒット判定は、次のように行う。すなわち、リフィルタグエントリのアドレスと入力されたアドレスが同一であるエントリを抽出する。エントリが抽出できなかった場合、入力されたアドレスのエントリは存在しないと判定する。また、抽出したリフィルタグエントリの有効ビットが“無効”を示す場合、入力されたアドレスのエントリは存在しないと判定する。一方、有効ビットが“有効”を示す場合、入力されたアドレスのエントリはリフィルバッファ３０に存在すると判定する。
【００３０】
以上のアドレスヒット判定において、特定データタグ２８に入力されたアドレスのエントリが存在すると判定された場合、特定データを、ロードデータとしてCPU１１に出力する。また、キャッシュ２９に入力されたアドレスのエントリが存在すると判定された場合、当該エントリと対応づけられているラインデータを、ロードデータとしてCPU１１に出力する。また、リフィルバッファ３０に入力されたアドレスのエントリが存在すると判定された場合、当該エントリと対応づけられているラインデータを、ロードデータとしてCPU１１に出力する。
【００３１】
一方、特定データタグ２８、キャッシュ２９、リフィルバッファ３０のいずれにおいても入力されたアドレスのエントリが存在しないと判定された場合、制御部２７は、リードキュー３２に入力されたアドレスを指定し、主記憶装置３から当該アドレスのデータを読み出すよう指示する。リードキュー３２は、指定されたアドレスを用い、リードインタフェース２６を介して主記憶装置３から当該アドレスのデータを取得する。リードインタフェース２６は、取得したデータをロードデータとしてCPU１１に出力し、また、指定されたアドレスと取得したデータとをラインデータとしてリフィルバッファ３０へ出力する。
【００３２】
リフィルバッファ３０は、有効ビットが“無効”であるリフィルタグエントリを１つ抽出し、アドレスにリードインタフェース２６から入力されたアドレスを保存し、有効ビットを“有効”に設定する。また、ダーティビットを、書き換えられていないことを示す“無効”に設定する。更に、リフィルバッファ３０は、ラインデータに、主記憶装置３からの読み出しデータを保存する。リフィルバッファ３０に、有効ビットが“無効”であるリフィルタグエントリがない場合、有効ビットが“無効”であるリフィルタグエントリが得られるまで待機する。以上の一連の動作により、キャッシュ装置１２からCPU１１へのデータのロードを完了する。
【００３３】
なお、リフィルバッファ３０に、有効ビットが“無効”であるリフィルタグエントリがない場合、有効ビットが“有効”であるエントリを１つ選択し、ラインデータとともに、特定データタグ２８またはキャッシュ２９に対してリフィル要求を行う。
【００３４】
次に、CPU１１からキャッシュ装置１２にデータをストアする場合について説明する。CPU１１からキャッシュ装置１２に対し、ロードストアフラグとしてストアを示すフラグと、ストアするデータが格納されているアドレスと、ストアデータとが入力される。ロードストアフラグ、アドレス及びストアデータは、比較制御部２７１に入力される。アドレス比較部２７４は、特定データタグ２８と、キャッシュ２９と、リフィルバッファ３０に対し、CPU１１から入力されたアドレスのエントリが存在するか否かを判定する（アドレスヒット判定）。アドレスヒット判定の詳細な方法は、上述したCPU１１へデータをロードする場合と同様である。
【００３５】
アドレスヒット判定において、特定データタグ２８に入力されたアドレスのエントリが存在すると判定された場合、データ比較部２７３において、ストアデータと特定データとを比較する。両者が一致する場合、CPU１１からキャッシュ装置１２へのデータのストアを完了する。一方、両者が一致しない場合、当該エントリの有効ビットを“無効”に設定する。すなわち、特定データタグ２８に入力されたアドレスのエントリが存在しない、とする。
【００３６】
アドレスヒット判定において、キャッシュ２９に入力されたアドレスのエントリが存在すると判定された場合、対応するラインデータにストアデータを保存する。そして、当該エントリのダーティビットを、書き換えられたことを示す“有効”に設定する。
【００３７】
また、リフィルバッファ３０に入力されたアドレスのエントリが存在すると判定された場合、対応するラインデータにストアデータを保存する。そして、当該エントリのダーティビットを、“有効”に設定する。
【００３８】
特定データタグ２８、キャッシュ２９、リフィルバッファ３０のいずれにおいても入力されたアドレスのエントリが存在しないと判定された場合、制御部２７は、入力されたアドレスとストアデータをリフィルバッファ３０へ出力する。
【００３９】
リフィルバッファ３０は、有効ビットが“無効”であるリフィルタグエントリを１つ抽出し、当該エントリのアドレスに入力されたアドレスを保存する。また、当該エントリの有効ビットを“有効”に設定する。また、当該エントリのダーティビットを、“有効”に設定する。更に、当該エントリと対応づけられているラインデータに、ストアデータを保存する。リフィルバッファ３０に、有効ビットが“無効”であるリフィルタグエントリがない場合、有効ビットが“無効”であるリフィルタグエントリが得られるまで待機する。以上の一連の動作により、CPU１１からキャッシュ装置１２へのデータのストアを完了する。
【００４０】
次に、リフィルバッファ３０から特定データタグ２８やキャッシュ２９に対するラインデータのリフィル動作について説明する。
【００４１】
まず、比較制御部２７２は、特定データタグ２８とキャッシュ２９のどちらにリフィル要求を行うかを決定する。具体的には、データ比較部２７５において、リフィル要求されたラインデータと、特定データレジスタ３３に格納されている特定データとが比較される。ラインデータと特定データとが一致する場合、特定データタグ２８に対してリフィル要求を行う。ラインデータと特定データとが一致しない場合、比較制御部２７２はキャッシュ２９に対してリフィル要求を行う。
【００４２】
特定データタグ２８に対してリフィル要求を行う場合、比較制御部２７２は、リフィル要求されたエントリにおけるアドレスのインデックスを用い、対応する特定データタグエントリを抽出する。抽出した特定データタグエントリの有効ビットが“無効”である場合、比較制御部２７２は以下のリフィル処理を行う。すなわち、特定データタグ２８は、抽出したエントリの有効ビットを“有効”に設定し、タグに当該エントリにおけるアドレスのタグを保存し、ダーティビットにリフィル要求されたエントリのダーティビットの値を保存する。
【００４３】
一方、抽出した特定データタグエントリの有効ビットが“有効”である場合、比較制御部２７２は、抽出したエントリのタグとリフィル要求されたアドレスのインデックスとから、主記憶装置３への書き込みアドレスを構成する。そして、比較制御部２７２はライトキュー３１に対し、構成したアドレスと特定データとを出力する。ライトキュー３１へのデータ書き込みが終了した後に、特定データタグ２８の当該エントリに対して上述のリフィル処理を行う。
【００４４】
キャッシュ２９に対してリフィル要求を行う場合、比較制御部２７２は、リフィル要求されたエントリにおけるアドレスのインデックスを用い、対応するキャッシュタグエントリを抽出する。抽出したキャッシュタグエントリの有効ビットが“無効”である場合、以下のリフィル処理を行う。すなわち、キャッシュ２９は、抽出したエントリの有効ビットを“有効”に設定し、タグに当該エントリにおけるアドレスのタグを、ダーティビットにリフィル要求されたエントリのダーティビットの値を、ラインデータにリフィル要求されたデータを保存する。
【００４５】
一方、抽出したキャッシュタグエントリの有効ビットが“有効”である場合、比較制御部２７２は、抽出したエントリのタグとリフィル要求されたアドレスのインデックスとから、主記憶装置３への書き込みアドレスを構成する。そして、比較制御部２７２はライトキュー３１に対し、構成したアドレスと抽出したエントリと対応づけられているラインデータとを出力する。ライトキュー３１へのデータ書き込みが終了した後に、キャッシュ２９の当該エントリに対して上述のリフィル処理を行う。
【００４６】
なお、ライトキュー３１に書き込まれたアドレスとラインデータは、所定のタイミングで、ライトインタフェース２５を介して主記憶装置３に出力される。主記憶装置３の当該アドレスに、出力されたラインデータが保存される。
【００４７】
リフィル要求されたリフィルタグエントリが、特定データタグ２８またはキャッシュ２９のいずれか選択された一方にリフィルされた後、当該エントリの有効ビットを“無効”に設定し、一連のリフィル動作を完了する。
【００４８】
なお、リフィル動作は、CPU１１からキャッシュ装置１２に対してロード／ストア指示が入力されたタイミングに限らず、CPU１１の空き時間などにも随時行ってもよい。
【００４９】
このように、本実施形態によれば、通常のデータキャッシュに加え、キャッシュデータが特定データであるか否かを判定する制御部と、アドレスなどデータ以外の管理情報のみを保存する特定データタグとを設けている。従って、キャッシュデータが特定データである場合、特定データタグに管理情報のみを保存すればデータを一時保持でき、データを保存する必要がないため、キャッシュメモリの使用量を抑制することができる。
【００５０】
また、本実施形態のキャッシュ装置は、キャッシュメモリのデータ構造とキャッシュメモリへのアクセス方法とは従来となんら変わらない。従って、任意のＣＰＵと接続して使用することができる。また、複数のＣＰＵに接続し、共用することも可能である。
（変形例）
上述の実施の形態では、リフィルバッファ３０のリフィルタグは、複数のリフィルタグエントリとリフィルラインアレイとから構成されているが、１つのリフィルタグエントリとラインデータのみで構成するようにしてもよい。図３は、キャッシュ装置１２の構成の変形例を説明する概略ブロック図である。図３に示すように、１つのリフィルタグとラインデータのみでリフィルバッファ３０´を構成し、リフィルバッファ３０´に新しくデータが格納される都度、特定データタグ２８又はキャッシュ２９へリフィル要求を行い、いずれか一方にデータをリフィルするようにしてもよい。
【００５１】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。
【００５２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５３】
２５…ライトインタフェース、２６…リードインタフェース、２８…特定データタグ、２９…キャッシュ、３０…リフィルバッファ、３１…ライトキュー、３２…リードキュー、３３…特定データレジスタ、２７１、２７２…比較制御部、
【図１】
2016057763.tif 000003
【図２】
2016057763.tif 000004
【図３】
2016057763.tif 000005