(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶装置に接続される演算処理装置において、
前記記憶装置が記憶するデータの一部を保持する第１のキャッシュメモリ部と、
アドレスを保持するアドレスレジスタ部と、
フラグ情報を格納するフラグレジスタ部と、
前記記憶装置における前記アドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部と、
前記記憶装置が記憶するデータの一部を前記第１のキャッシュメモリ部に保持させ、前記フラグ情報が保持されている場合、前記デコードの結果に基づいて、前記第１のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第１のキャッシュメモリ部に保持されている旨の第１のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行する命令実行部と、
前記キャッシュヒットチェック命令に先行する命令を保持するフェッチ記憶部と、
前記プリフェッチ命令により取得されるデータを保持するプリフェッチ記憶部と、
前記キャッシュヒットチェック命令に先行するストア命令が全て完了していない旨のロック情報を保持するロック情報部と
を有し、
前記命令実行部は、前記フェッチ記憶部と前記プリフェッチ記憶部のいずれにも有効なデータが保持されておらず、且つ、前記ロック情報部が前記先行するストア命令が全て完了している旨を表す場合、前記キャッシュヒットチェック命令を実行する
ことを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、
前記第１のキャッシュメモリ部が保持するデータの一部を保持する第２のキャッシュメモリ部を有し、
前記命令実行部はさらに、前記キャッシュヒットチェック命令を実行する場合、前記第２のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第２のキャッシュメモリ部に保持されている旨の第２のキャッシュヒット判定を行うことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、
前記命令実行部が、前記キャッシュヒットチェック命令を実行した場合、
前記第１のキャッシュヒット判定の結果である第１のキャッシュヒット情報を格納する第１のヒット情報レジスタ部と、
前記第２のキャッシュヒット判定の結果である第２のキャッシュヒット情報を格納する第２のヒット情報レジスタ部を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第１のキャッシュメモリ部の第１のウェイ情報を表示する第１のヒットウェイ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第２のキャッシュメモリ部の第２のウェイ情報を表示する第２のヒットウェイ情報レジスタ部を有することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記演算処理装置において、
前記第１のキャッシュメモリ部は、前記第１のキャッシュメモリ部のメモリ領域が分割された第１のセクタを複数有し、
前記第２のキャッシュメモリ部は、前記第２のキャッシュメモリ部のメモリ領域が分割された第２のセクタを複数有し、
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第１のキャッシュメモリ部の第１のセクタ情報を表示する第１のセクタ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第２のキャッシュメモリ部の第２のセクタ情報を表示する第２のセクタ情報レジスタ部を有することを特徴とする請求項３又は４記載の演算処理装置。
【請求項６】
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されているか否かに関わらず、前記第１のセクタ情報を表示する第３のセクタ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されているか否かに関わらず、前記第２のセクタ情報を表示する第４のセクタ情報レジスタ部を有することを特徴とする請求項５記載の演算処理装置。
【請求項７】
前記演算処理装置において、
前記フラグレジスタ部は、前記先行するストア命令のいずれかが実行されることにより前記フラグ情報が格納されることを特徴とする請求項１〜６のいずれか１項に記載の演算処理装置。
【請求項８】
データを記憶する記憶装置と、前記記憶装置に接続される演算処理装置を有する情報処理装置において、
前記演算処理装置は、
前記記憶装置が記憶するデータの一部を保持する第１のキャッシュメモリ部と、
アドレスを保持するアドレスレジスタ部と、
フラグ情報を格納するフラグレジスタ部と、
前記記憶装置における前記アドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部と、
前記記憶装置が記憶するデータの一部を前記第１のキャッシュメモリ部に保持させ、前記フラグ情報が保持されている場合、前記デコードの結果に基づいて、前記第１のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第１のキャッシュメモリ部に保持されている旨の第１のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行する命令実行部と、
前記キャッシュヒットチェック命令に先行する命令を保持するフェッチ記憶部と、
前記プリフェッチ命令により取得されるデータを保持するプリフェッチ記憶部と、
前記キャッシュヒットチェック命令に先行するストア命令が全て完了していない旨のロック情報を保持するロック情報部と
を有し、
前記命令実行部は、前記フェッチ記憶部と前記プリフェッチ記憶部のいずれにも有効なデータが保持されておらず、且つ、前記ロック情報部が前記先行するストア命令が全て完了している旨を表す場合、前記キャッシュヒットチェック命令を実行する
ことを特徴とする情報処理装置。
【請求項９】
前記情報処理装置において、
前記演算処理装置はさらに、
前記第１のキャッシュメモリ部が保持するデータの一部を保持する第２のキャッシュメモリ部を有し、
前記命令実行部はさらに、前記キャッシュヒットチェック命令を実行する場合、前記第２のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第２のキャッシュメモリ部に保持されている旨の第２のキャッシュヒット判定を行うことを特徴とする請求項８記載の情報処理装置。
【請求項１０】
前記情報処理装置において、
前記演算処理装置はさらに、
前記命令実行部が、前記キャッシュヒットチェック命令を実行した場合、
前記第１のキャッシュヒット判定の結果である第１のキャッシュヒット情報を格納する第１のヒット情報レジスタ部と、
前記第２のキャッシュヒット判定の結果である第２のキャッシュヒット情報を格納する第２のヒット情報レジスタ部を有することを特徴とする請求項９記載の情報処理装置。
【請求項１１】
前記情報処理装置において、
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第１のキャッシュメモリ部の第１のウェイ情報を表示する第１のヒットウェイ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第２のキャッシュメモリ部の第２のウェイ情報を表示する第２のヒットウェイ情報レジスタ部を有することを特徴とする請求項１０記載の情報処理装置。
【請求項１２】
前記情報処理装置の前記演算処理装置において、
前記第１のキャッシュメモリ部は、前記第１のキャッシュメモリ部のメモリ領域が分割された第１のセクタを複数有し、
前記第２のキャッシュメモリ部は、前記第２のキャッシュメモリ部のメモリ領域が分割された第２のセクタを複数有し、
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第１のキャッシュメモリ部の第１のセクタ情報を表示する第１のセクタ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第２のキャッシュメモリ部の第２のセクタ情報を表示する第２のセクタ情報レジスタ部を有することを特徴とする請求項１０又は１１記載の情報処理装置。
【請求項１３】
前記情報処理装置において、
前記演算処理装置はさらに、
前記第１のキャッシュヒット情報が前記第１のヒット情報レジスタ部に格納されているか否かに関わらず、前記第１のセクタ情報を表示する第３のセクタ情報レジスタ部と、
前記第２のキャッシュヒット情報が前記第２のヒット情報レジスタ部に格納されているか否かに関わらず、前記第２のセクタ情報を表示する第４のセクタ情報レジスタ部を有することを特徴とする請求項１２記載の情報処理装置。
【請求項１４】
前記情報処理装置の前記演算処理装置において、
前記フラグレジスタ部は、前記先行するストア命令のいずれかが実行されることにより前記フラグ情報が格納されることを特徴とする請求項８〜１３のいずれか１項に記載の情報処理装置。
【請求項１５】
データを記憶する記憶装置に接続される演算処理装置の制御方法において、
前記演算処理装置が有するデコード部が、前記記憶装置におけるアドレスレジスタ部が保持するアドレスに記憶されるデータを取得するプリフェッチ命令をデコードするステップと、
前記演算処理装置が有する命令実行部が、前記記憶装置が記憶するデータの一部を前記演算処理装置が有する第１のキャッシュメモリ部に保持させるステップと、
前記命令実行部が、前記演算処理装置にフラグ情報が保持されている場合、前記デコードの結果に基づいて、前記記憶装置が記憶するデータの一部を保持する第１のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第１のキャッシュメモリ部に保持されている旨の第１のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行するステップと、
前記命令実行部が、前記キャッシュヒットチェック命令に先行する命令を保持する、前記演算処理装置が有するフェッチ記憶部と、前記プリフェッチ命令により取得されるデータを保持する、前記演算処理装置が有するプリフェッチ記憶部のいずれにも有効なデータが保持されておらず、且つ、前記キャッシュヒットチェック命令に先行するストア命令が全て完了していない旨のロック情報を保持する、前記演算処理装置が有するロック情報部が前記先行するストア命令が全て完了している旨を表す場合、前記キャッシュヒットチェック命令を実行するステップと
を有することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び制御方法に関する。
【背景技術】
【０００２】
従来、演算処理装置であるＣＰＵ（Central  Processing  Unit）に内蔵され、当該ＣＰＵに内蔵される演算部としてのコア部とメインメモリとの間にあって、メインメモリよりも高速なキャッシュメモリを有する情報処理装置であるサーバが知られている。このようなキャッシュメモリは、アクセス頻度の高いデータや命令を記憶する。演算処理装置は、メインメモリよりも高速なキャッシュメモリからデータや命令を読み込むことで、メモリアクセスの時間を短縮でき、情報処理装置の性能が向上する。
【０００３】
このようなキャッシュメモリの一つとして、キャッシュメモリを複数のセクタと呼ばれる部分に分けたセクタキャッシュが知られている。かかるセクタキャッシュでは、キャッシュメモリがセクタごとに分割され、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。
【０００４】
また、このようなセクタキャッシュのデバッグを行う場合、任意のメモリアドレスのデータがキャッシュメモリに記憶させているかどうかを確認するキャッシュヒットチェック機能が利用されている。例えば、キャッシュヒットチェック機能の用途として、コンパイラのデバッグや、ハードウェアのデバッグなどがある。
【０００５】
このようなキャッシュヒットチェックの結果を読み出す方法として、キャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法と、専用転送バスを利用してキャッシュヒットチェック結果を読み出す方法が利用されている。
【０００６】
ここで、図１０の例を用いて、キャッシュヒットチェックの結果を読み出すパイプライン動作を実行するキャッシュユニットの構成を説明する。図１０に示すように、キャッシュユニットは、キャッシュメモリ、命令セット記憶部、命令制御部、プライオリティ論理回路、キャッシュアクセス回路、タグマッチ回路、ＬＲＵ（Ｌｅａｓｔ−Ｒｅｃｅｎｔｌｙ−Ｕｓｅｄ）回路、セクタ情報決定回路、バッファ、外部インタフェースを有する。
【０００７】
命令セット記憶部は、プリフェッチ命令コードやキャッシュヒットチェック命令コードなどの命令セットを記憶する。命令制御部は、命令セット記憶部からキャッシュヒットチェック命令コードを読み出して、読み出された命令をプライオリティ論理回路に発行する。プライオリティ論理回路は、入力された命令の処理の優先順位を決定する。キャッシュアクセス回路は、アクセス対象のアクセスアドレスを用いて、キャッシュメモリにアクセスし、タグ、ＬＲＵ情報を読み出す。
【０００８】
タグマッチ回路は、キャッシュアクセス回路によって読み出されたタグとアクセス対象のアクセスアドレスのタグとを比較する。セクタ情報決定回路は、キャッシュヒットしたと判定した場合には、セクタを０にするか１にするか決定する。ＬＲＵ回路は各キャッシュＷＡＹの使用頻度と使用セクタを記憶する。バッファは、キャッシュヒットチェック結果を記憶する。バッファに格納されたキャッシュヒットチェック結果は、外部インタフェースに転送される。
【０００９】
ここで、図１１を用いてキャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法について説明する。図１１に示すように、Ｈｉｔビット、ｈｉｔ＿ｗａｙビット、ｓｅｃｔｏｒ０／１＿ｎｕｍビット、ｓｅｃｔｏｒビットをパイプライン動作でバスから読み出す。ここで、パイプライン動作とは、プライオリティ論理回路が実行する命令の優先順位を決める「Ｐ」、キャッシュメモリにアクセスしてタグを読み出す「Ｔ」、タグのマッチングを行う「Ｍ」、データを選択してバッファに格納する「Ｂ」、データの転送を行う「Ｒ」の順に行う動作のことをいう。
【００１０】
図１１に示すように、タグのマッチング処理を行う「Ｍ」において、タグマッチの結果、キャッシュヒットした場合には、Ｈｉｔビットを「１」に決定し、キャッシュヒットしたウェイ番号であるｈｉｔ＿ｗａｙビットが決定する。そして、データを選択してバッファに格納する「Ｂ」において、Ｈｉｔビットおよびｈｉｔ＿ｗａｙビットのデータ選択が有効であるが、キャッシュヒット情報のセクタ情報（図１１の例では、ｓｅｃｔｏｒ０／１＿ｎｕｍビット、ｓｅｃｔｏｒビット）が参照可能になるタイミングがデータ選択サイクルに対して１サイクル遅いため、パイプライン動作を２回行っている。
【００１１】
また、図１２を用いて、専用転送バスを利用してキャッシュヒットチェック結果を読み出す方法について説明する。図１２に示すように、専用転送バスを用いてキャッシュヒットチェック結果を転送するので、データ選択のタイミングを考慮することなく、１回のパイプライン動作でキャッシュヒットチェック結果を読み出す。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平８−３３５１７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、上記のキャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法では、２回続けてパイプライン動作を行う必要があり、キャッシュヒットチェック結果の読み出し処理が複雑になるという課題があった。また、上記の専用転送バスを利用してキャッシュヒットチェック結果を読み出す技術では、専用転送バスを設ける必要があるので、コストが高くなるという課題があった。
【００１４】
開示の技術は、上記に鑑みてなされたものであって、専用転送バスを設けるコストを削減し、キャッシュヒットチェックの結果を容易に読み出すことを目的とする。
【課題を解決するための手段】
【００１５】
また、本願の開示する演算処理装置は、一つの態様において、記憶装置が記憶するデータの一部を保持する第１のキャッシュメモリ部と、アドレスを保持するアドレスレジスタ部と、フラグ情報を格納するフラグレジスタ部と、記憶装置におけるアドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部とを有する。また、演算処理装置は、フラグ情報が保持されている場合、デコードの結果に基づいて、第１のキャッシュメモリ部をアドレスで検索することにより、記憶装置におけるアドレスに記憶されるデータが、第１のキャッシュメモリに保持されている旨の第１のキャッシュヒット判定を行うキャッシュヒットチェック命令を、プリフェッチ命令の代わりに実行する命令実行部を有する。
【発明の効果】
【００１６】
本願の開示する装置の一つの態様によれば、専用転送バスを設けるコストを削減し、キャッシュヒットチェックの結果を容易に読み出すという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る演算処理装置の構成を示すブロック図である。
【図２】図２は、セクタキャッシュでのセクタ０／１の配置例を示す図である。
【図３】図３は、Ｌ１ヒット情報レジスタのフォーマットの一例を示す図である。
【図４】図４は、Ｌ２ヒット情報レジスタのフォーマットの一例を示す図である。
【図５】図５は、Ｒｅａｄコマンドによる読み出し処理を説明するタイムチャートである。
【図６】図６は、実施例１に係る演算処理装置の処理手順を説明するフローチャートである。
【図７】図７は、実施例２に係る演算処理装置の構成を示すブロック図である。
【図８】図８は、実施例２に係る演算処理装置の処理手順を説明するフローチャートである。
【図９】図９は、サーバ構成を示す図である。
【図１０】図１０は、キャッシュヒットチェックの結果を読み出すパイプライン動作を実行するＬ１キャッシュユニットの構成を示すブロック図である。
【図１１】図１１は、キャッシュヒットチェック結果の読み出しにキャッシュメモリの読み出しバスを利用した場合のタイムチャートである。
【図１２】図１２は、キャッシュヒットチェック結果の読み出しに専用バスを利用した場合のタイムチャートである。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照して、この発明に係る演算処理装置、情報処理装置及び制御方法の実施例を詳細に説明する。
【実施例１】
【００１９】
以下の実施例１では、実施例１に係る演算処理装置の構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。
【００２０】
［演算処理装置の構成］
図１を用いて、演算処理装置１０の構成を説明する。図１は、実施例１に係る演算処理装置１０の構成を示すブロック図である。同図に示すように、この演算処理装置１０は、第１のキャッシュメモリであって２次キャッシュメモリとしてのＬ２（Ｌｅｖｅｌ−２）キャッシュユニット２０、第２のキャッシュメモリであって１次キャッシュメモリとしてのＬ１（Ｌｅｖｅｌ−１）キャッシュユニット３０、外部インタフェース４０を有する。以下にこれらの各部の処理を説明する。
【００２１】
Ｌ１キャッシュユニット３０は、命令セット記憶部３３と、アーキテクチャレジスタコマンド記憶部３４と、アーキテクチャレジスタ３６と、アクセスアドレス記憶部３７と、制御部３８と、ＴＡＧマッチ回路３９ａと、セクタ情報決定回路３９ｂと、キャッシュアクセス回路３９ｃと、命令制御部３Ａと、デコーダ３Ｂと、Ｌ１キャッシュメモリ３０ａと、読み出しカウンタ３１ｂと、初期設定部３１ｃと、ＬＲＵ回路３９ｄとを有する。なお、アクセスアドレス記憶部３７は、特許請求の範囲の「アドレスレジスタ部」に対応し、デコーダ３Ｂは、特許請求の範囲に記載の「デコード部」に対応する。Ｌ１キャッシュメモリ３０ａは、特許請求の範囲の「第２のキャッシュメモリ部」に対応する。
【００２２】
命令セット記憶部３３は、プリフェッチ命令コードやストア命令コードなどの命令セットを記憶しており、プリフェッチ命令コード記憶部３３ａ、フェッチ命令コード記憶部３３ｄを有する。プリフェッチ命令コード記憶部３３ａは、プリフェッチ命令コードを記憶し、発行されたプリフェッチ命令を蓄積するプリフェッチポート３３ｂを有する。プリフェッチポート３３ｂは、発行されたプリフェッチ命令を蓄積し、ストア命令がすべて完了しているか否かを示すロックビット３３ｃを有する。ロックビット３３ｃは、ストア命令が完了していない場合に「１」となり、ストア命令が完了すると「０」となるビットである。フェッチ命令コード記憶部３３ｄは、フェッチ命令コードを記憶し、発行されたロード命令を蓄積するフェッチポート３３ｅを有する。プリフェッチポート３３ｂは、特許請求の範囲に記載の「プリフェッチ記憶部」に対応し、ロックビット３３ｃは、特許請求の範囲に記載の「ロック情報部」に対応し、フェッチポート３３ｅは、特許請求の範囲に記載の「フェッチ記憶部」に対応する。
【００２３】
命令制御部３Ａは、命令セット記憶部３３から命令コードを読み出し、プリフェッチ命令コードをデコーダ３Ｂに入力する。例えば、命令制御部３Ａは、プリフェッチ命令コードをプリフェッチ命令コード記憶部３３ａから読み出して、デコーダ３Ｂに入力する。デコーダ３Ｂは、命令制御部３Ａにより入力された命令コードをデコードして、制御部３８に入力する。
【００２４】
アーキテクチャレジスタ３６は、キャッシュ制御情報、アドレス制御情報、エラー情報、エラー時の割り込み情報などを記憶し、レジスタ３１と、Ｌ１ヒット情報レジスタ３２とを有する。具体的には、アーキテクチャレジスタ３６は、キャッシュヒットチェックを開始する場合には、ストア命令が発行され、デコーダ３Ｂによってデコードされたストア命令によりデバッグフラグビット３１ａがセットされる。アーキテクチャレジスタ３６は、キャッシュヒットチェックを終了する場合には、レジスタ３１へのストア命令によりデバッグフラグビット３１ａを０に戻す。
【００２５】
Ｌ１キャッシュメモリ３０ａは、セクタごとに分割されたセクタキャッシュであり、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。具体的には、図２に例示するように、Ｌ１キャッシュメモリ３０ａは、セクタ「０」とセクタ「１」に分割されており、繰り返し利用されるデータをセクタ「０」に、利用される頻度がより低いデータをセクタ「１」に記憶させる。例えば、図２の例を用いて説明すると、Ｌ１キャッシュメモリ３０ａは、ｉｎｄｅｘ「０」のｗａｙ「１」には、セクタ「０」に分類されたデータを記憶しており、ｉｎｄｅｘ「０」のｗａｙ「２」には、セクタ「１」に分類されたデータを記憶している。
【００２６】
Ｌ２キャッシュメモリ２０ａは、セクタごとに分割されたセクタキャッシュであり、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。具体的には、Ｌ２キャッシュメモリ２０ａは、セクタ「０」とセクタ「１」に分割されており、繰り返し利用されるデータをセクタ「０」に、利用される頻度がより低いデータをセクタ「１」に記憶させる。なお、Ｌ２キャッシュメモリ２０ａは、特許請求の範囲に記載の「第１のキャッシュメモリ部」に対応する。
【００２７】
レジスタ３１は、１ビットフラグのデバッグフラグビット３１ａを保持する。デバックフラグビット３１ａは、プリフェッチ命令を変更し、キャッシュヒットチェック命令として機能させるためのフラグ情報を格納する。デバッグフラグビット３１ａは、既存のストア命令がデコーダ３Ｂによってデコードされ、デコードされたストア命令によりセットされる。デバッグフラグビット３１ａが「１」のとき、プリフェッチ命令を変更し、キャッシュヒットチェック命令として機能させる。また、デバッグフラグビット３１ａが「０」のとき、プリフェッチ命令として機能させる。なお、デバッグフラグビット３１ａは、特許請求の範囲に記載の「フラグレジスタ部」に対応する。
【００２８】
Ｌ１ヒット情報レジスタ３２は、Ｌ１キャッシュメモリ３０ａのキャッシュヒットチェック結果を保持するレジスタである。Ｌ１ヒット情報レジスタ３２は、ＣＰＵが複数のコア部を有する場合にはコア部ごとに独立して設置される。ここで、図３を用いて、Ｌ１ヒット情報レジスタ３２のフォーマットの一例を説明する。図３に示すように、Ｌ１ヒット情報レジスタ３２は、６４ビットのフォーマットでキャッシュヒットチェック結果を保持しており、１５ビット目から１２ビット目にｓｅｃｔｏｒ１＿ｎｕｍビット、１１ビット目から８ビット目にｓｅｃｔｏｒ０＿ｎｕｍビット、７ビット目にＬ１  ｈｉｔビット、６ビット目にｓｅｃｔｏｒビット、３ビット目から０ビット目にｈｉｔ＿ｗａｙビットを保持する。なお、ｓｅｃｔｏｒ１＿ｎｕｍビットおよびｓｅｃｔｏｒ０＿ｎｕｍビットは、特許請求の範囲に記載の「第４のセクタ情報レジスタ部」に対応し、ｓｅｃｔｏｒビットは、特許請求の範囲に記載の「第２のセクタ情報レジスタ部」に対応し、ｈｉｔ＿ｗａｙビットは、特許請求の範囲に記載の「第２のヒットウェイ情報レジスタ部」に対応する。
【００２９】
Ｌ１  Ｈｉｔビットは、キャッシュヒットチェックを行ってタグマッチした場合には、「１」となり、タグマッチしなかった場合には「０」となる。ＬＲＵ回路からは、全キャッシュＷＡＹのセクタ情報を読み出し、各セクタが保持するＷＡＹ数を数え上げる。その結果としてのｓｅｃｔｏｒ０＿ｎｕｍビットは、Ｌ１  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数が表示される。また、ｓｅｃｔｏｒ１＿ｎｕｍビットは、Ｌ１  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ１データのウェイ数が表示される。
【００３０】
ｓｅｃｔｏｒビットは、Ｌ１  Ｈｉｔビットが「１」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示される。ｈｉｔ＿ｗａｙビットは、Ｌ１  Ｈｉｔビットが１のときプリフェッチ命令で指示されたメモリアドレスのキャッシュヒットウェイ番号が表示される。また、Ｌ１  Ｈｉｔビットが「０」のときは、ｓｅｃｔｏｒビット、ｈｉｔ＿ｗａｙビットのビットデータを無効な値（例えば、全ての値を「０」）が表示される。
【００３１】
また、Ｌ２ヒット情報レジスタ２３も同様に、Ｌ２キャッシュメモリ２０ａのキャッシュヒットチェック結果を保持するレジスタであり、複数コアの場合にはコアごとに独立して設置される。Ｌ２ヒット情報レジスタ２３は、Ｌ２キャッシュメモリ２０ａのキャッシュヒットチェック結果を退避させるレジスタである。ここで、図４を用いて、Ｌ２ヒット情報レジスタ２３のフォーマットの一例を説明する。図４に示すように、Ｌ２ヒット情報レジスタ２３は、６４ビットのフォーマットでキャッシュヒットチェック結果を保持しており、１５ビット目から１２ビット目にｓｅｃｔｏｒ１＿ｎｕｍビット、１１ビット目から８ビット目にｓｅｃｔｏｒ０＿ｎｕｍビット、７ビット目にＬ２  ｈｉｔビット、６ビット目にｓｅｃｔｏｒビット、３ビット目から０ビット目にｈｉｔ＿ｗａｙビットを保持する。なお、ｓｅｃｔｏｒ１＿ｎｕｍビットおよびｓｅｃｔｏｒ０＿ｎｕｍビットは、特許請求の範囲に記載の「第３のセクタ情報レジスタ部」に対応し、ｓｅｃｔｏｒビットは、特許請求の範囲に記載の「第１のセクタ情報レジスタ部」に対応し、ｈｉｔ＿ｗａｙビットは、特許請求の範囲に記載の「第１のヒットウェイ情報レジスタ部」に対応する。
【００３２】
Ｌ２  Ｈｉｔビットは、キャッシュヒットチェックを行ってタグマッチした場合には、「１」となり、タグマッチしなかった場合には「０」となる。ＬＲＵ回路からは、全キャッシュＷＡＹのセクタ情報を読み出し、各セクタが保持するＷＡＹ数を数え上げる。その結果としてのｓｅｃｔｏｒ０＿ｎｕｍビットは、Ｌ２  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数が表示される。また、ｓｅｃｔｏｒ１＿ｎｕｍビットは、Ｌ２  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ１データのウェイ数が表示される。
【００３３】
ｓｅｃｔｏｒビットは、Ｌ２  Ｈｉｔビットが「１」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示される。ｈｉｔ＿ｗａｙビットは、Ｌ２  Ｈｉｔビットが１のときプリフェッチ命令で指示されたメモリアドレスのキャッシュヒットウェイ番号が表示される。また、Ｌ２  Ｈｉｔビットが「０」のときは、ｓｅｃｔｏｒビット、ｈｉｔ＿ｗａｙビットのビットデータを無効な値（例えば、全ての値を「０」）が表示される。
【００３４】
読み出しカウンタ３１ｂは、キャッシュヒットチェックを行う回数を記憶する。読み出しカウンタ３１ｂは、後述する初期値設定部３１ｃに初期値が設定される。そして、読み出しカウンタ３１ｂは、キャッシュヒットチェックを行うたびに、カウンタの値がデクリメントされ、カウンタの値が「０」になった場合には、キャッシュヒットチェック処理が終了となる。初期値設定部３１ｃは、読み出しカウンタ３１ｂに初期値を設定する。なお、読出しカウンタ３１ｂに設定する初期値には、キャッシュヒットチェックを行う回数として、任意の値を設定することができる。
【００３５】
アーキテクチャレジスタコマンド記憶部３４は、アーキテクチャレジスタ３６に対するＲｅａｄコマンドやＷｒｉｔｅコマンドを記憶しており、Ｌ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３に記憶されたキャッシュヒットチェック結果を読み出すＲｅａｄコマンドを記憶するＲｅａｄコマンド記憶部３４ａを有する。Ｒｅａｄコマンド記憶部３４ａは、Ｌ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３からヒット情報を読み出すＲｅａｄコマンドを記憶する。
【００３６】
ここで、図５を用いて、Ｒｅａｄコマンドの実行について具体的に説明する。図５に示すように、演算処理装置１０は、プリフェッチ、ストア、ロードを一つのパイプライン動作として行う。そして、演算処理装置１０では、Ｒｅａｄコマンドは、所定の条件が揃うまで実行を待つ仕組みとなっている。つまり、プログラム実行中にキャッシュヒットチェックを行ってキャッシュヒットチェックを実行する前に発行されたロード命令、ストア命令、プリフェッチ命令の何れかの命令が未完了の状態であった場合に、キャッシュヒットチェックが完了した後に未完了の命令が実行されてしまう。この結果、キャッシュヒットチェックの結果と実際のキャッシュ状態が異なってしまう。このため、演算処理装置１０は、Ｒｅａｄコマンドをセットすることで、ロード命令、ストア命令、プリフェッチ命令がすべて完了した後に、キャッシュヒットチェックを実行する。
【００３７】
具体的には、演算処理装置１０は、図５に示すように、Ｒｅａｄコマンドをセットした場合に、未実行のロード命令があれば、ロード命令をすべて完了させて未実行のロード命令がない状態にし、フェッチポートを空にする。また、演算処理装置１０は、Ｒｅａｄコマンドをセットした場合に、未実行のプリフェッチ命令があれば、プリフェッチ命令をすべて完了させて未実行のプリフェッチ命令がない状態にし、プリフェッチポートを空にする。そして、演算処理装置１０は、未実行のストア命令がなくなった場合には、ロックビットを「０」にする。ここで、ロックビットとは、事前に発行されたストア命令が完了していない場合に「１」となり、事前に発行されたストア命令が完了すると「０」となるビットである。
【００３８】
そして、演算処理装置１０は、ロックビットが「０」であり、かつ、すべてのプリフェッチポートおよびフェッチポートが空であることを実行条件とし、実行条件が揃った場合には、Ｒｅａｄコマンドを実行する。ここで、すべてのプリフェッチポートおよびフェッチポートが空である状態とは、プリフェッチポートに未実行のプリフェッチ命令がない状態であり、フェッチポートに未実行のロード命令がない状態である。
【００３９】
つまり、ロックビットが０であることは、事前のストア命令がすべて完了していることを示し、先行する命令を保持するフェッチポートが空であることは、事前のロード命令がすべて完了していることを示している。また、プリフェッチポートが空であることは、事前のプリフェッチ命令がすべて完了していることを示している。このため、演算処理装置１０は、ヒット情報の読み出しとして、Ｒｅａｄコマンドをセットした後、Ｒｅａｄコマンドをセットするより前に発行された命令の完了を待ち、Ｒｅａｄコマンドをセットするより前に発行された命令が完了すると、ヒット情報レジスタを読み出す。このため、上記した実行条件が揃ってＲｅａｄコマンドが実行される場合には、Ｒｅａｄコマンドをセットするより前に発行された命令がすべて完了したことを保証する。
【００４０】
アクセスアドレス記憶部３７は、プリフェッチ命令の対象となるプリフェッチ命令の命令アドレスを記憶し、制御部３８の命令拡張判定回路３８ａに通知する。
【００４１】
制御部３８は、命令拡張判定回路３８ａを有する。命令拡張判定回路３８ａは、プリフェッチ命令が発行されると、デバッグフラグビット３１ａが「１」であるか判定し、デバッグフラグビット３１ａが「１」である場合には、命令拡張によりプリフェッチ命令をキャッシュヒットチェック命令として機能させる。その後、デコーダ３Ｂにキャッシュヒットチェック命令を入力する。つまり、命令拡張判定回路３８ａがプリフェッチ命令の命令コードへの変更を行い、キャッシュヒットチェック命令のデコード論理を有するデコーダ３Ｂがデコードを行う。その後、キャッシュアクセス回路３９ｃにメモリアドレスを入力する。また、命令拡張判定回路３８ａは、デバッグフラグビット３１ａが「０」である場合には、命令拡張せずに、プリフェッチ動作を行うように制御する。
【００４２】
キャッシュアクセス回路３９ｃは、命令拡張判定回路３８ａからメモリアドレスが入力されると、入力されたメモリアドレスを用いてＬ１キャッシュメモリ３０ａにアクセスして、タグを読み出す。そして、キャッシュアクセス回路３９ｃは、Ｌ１キャッシュメモリ３０ａから読み出されたタグをＴＡＧマッチ回路３９ａに入力する。
【００４３】
ＴＡＧマッチ回路３９ａは、キャッシュアクセス回路３９ｃからタグが入力されると、Ｌ１キャッシュメモリ３０ａに登録されているタグとアクセスアドレスのタグとを比較する。そして、ＴＡＧマッチ回路３９ａは、この比較の結果から、Ｌ１キャッシュメモリ３０ａにヒットしたか否かを示す検索結果をセクタ情報決定回路３９ｂに入力する。
【００４４】
セクタ情報決定回路３９ｂは、ＴＡＧマッチ回路３９ａによる検索結果からキャッシュヒットしたか否かを判定する。さらにＬＲＵ回路３９ｄを読み出し、プリフェッチ命令で指示されたメモリアドレスと同一インデックス上にある全ＷＡＹのセクタ情報を取り出す。この結果、セクタ情報決定回路３９ｂは、キャッシュヒットしたと判定した場合には、セクタを０にするか１にするか決定する。そして、キャッシュヒットしたと判定した場合には、セクタ情報決定回路３９ｂは、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「１」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを更新する。
【００４５】
具体的には、セクタ情報決定回路３９ｂは、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットが「１」である場合には、Ｌ１ヒット情報レジスタ３２において、「ｓｅｃｔｏｒ０＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶させ、「ｓｅｃｔｏｒ１＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶させ、「ｓｅｃｔｏｒ」にセクタが０か１かを示すセクタ情報を記憶させ、「ｈｉｔ＿ｗａｙ」にヒットしたウェイ番号を記憶させる。
【００４６】
また、セクタ情報決定回路３９ｂは、キャッシュミスしたと判定した場合には、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「０」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットを更新する。具体的には、セクタ情報決定回路３９ｂは、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットが「０」である場合には、Ｌ１ヒット情報レジスタ３２において、「ｓｅｃｔｏｒ０＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶させ、「ｓｅｃｔｏｒ１＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶する。「ｓｅｃｔｏｒ」と「ｈｉｔ＿ｗａｙ」には、キャッシュミスしたときには有効な情報は記憶されない。つまり、Ｌ１ヒット情報レジスタ３２では、Ｌ１  Ｈｉｔビットが「１」の場合には、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットの値が有効となる。また、Ｌ１ヒット情報レジスタ３２では、Ｌ１  Ｈｉｔビットが「０」の場合には、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットが有効となり、ｓｅｃｔｏｒビットとｈｉｔ＿ｗａｙビットの値が無効となる。また、Ｌ１キャッシュメモリ３０ａのヒットチェックと同時に、Ｌ２キャッシュメモリ２０ａのヒットチェックも行われる。
【００４７】
また、演算処理装置１０では、命令コードを追加しないため、命令セット記憶部３３の変更を必要とせず、プリフェッチ命令コードを拡張してキャッシュヒットチェック命令とすることで制御部３８の制御変更だけで済む。
【００４８】
Ｌ２キャッシュユニット２０は、ＴＡＧマッチ回路２１、セクタ情報決定回路２２、ＬＲＵ回路２２ａ、Ｌ２ヒット情報レジスタ２３、キャッシュアクセス回路２４、アーキテクチャレジスタ２７、Ｌ２キャッシュメモリ２０ａを有する。
【００４９】
キャッシュアクセス回路２４は、命令拡張判定回路３８ａからメモリアドレスが入力されると、入力されたメモリアドレスを用いてＬ２キャッシュメモリ２０ａにアクセスして、タグを読み出す。そして、キャッシュアクセス回路２４は、Ｌ２キャッシュメモリ２０ａから読み出されたタグをＴＡＧマッチ回路２１に入力する。
【００５０】
ＴＡＧマッチ回路２１は、キャッシュアクセス回路２４からタグが入力されると、Ｌ２キャッシュメモリ２０ａに登録されているタグとアクセスアドレスのタグとを比較する。そして、ＴＡＧマッチ回路２１は、この比較の結果から、Ｌ２キャッシュメモリ２０ａにヒットしたか否かを示す検索結果をセクタ情報決定回路２２に入力する。
【００５１】
セクタ情報決定回路２２は、ＴＡＧマッチ回路２１による検索結果からキャッシュヒットしたか否かを判定する。さらにＬＲＵ回路２２ａを読み出し、プリフェッチ命令で指示されたメモリアドレスと同一インデックス上にある全ＷＡＹのセクタ情報を取り出す。この結果、セクタ情報決定回路２２は、キャッシュヒットしたと判定した場合には、セクタを０にするか１にするか決定する。そして、キャッシュヒットしたと判定した場合には、セクタ情報決定回路２２は、Ｌ２ヒット情報レジスタ２３のＬ２  Ｈｉｔビットを「１」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを更新する。また、セクタ情報決定回路２２は、キャッシュミスしたと判定した場合には、Ｌ２ヒット情報レジスタ２３のＬ２  Ｈｉｔビットを「０」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットを更新し、ｓｅｃｔｏｒビットとｈｉｔ＿ｗａｙビットの値を無効とする。
【００５２】
アーキテクチャレジスタ２７は、各種処理に必要なデータを記憶するが、特に、Ｌ２ヒット情報レジスタ２３を有する。Ｌ２ヒット情報レジスタ２３は、Ｌ２キャッシュメモリ２０ａのヒット情報を退避する場合に用いられるレジスタである。Ｌ２ヒット情報レジスタ２３のフォーマットは、Ｌ１ヒット情報レジスタ３２と同様に、Ｌ２  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数が表示されるｓｅｃｔｏｒ０＿ｎｕｍビットを保持する。また、Ｌ２ヒット情報レジスタ２３は、Ｌ２  Ｈｉｔビットが「０」であるか「１」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ１データのウェイ数が表示されるｓｅｃｔｏｒ１＿ｎｕｍビットを保持する。
【００５３】
Ｌ２  Ｈｉｔビットが「１」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示されるｓｅｃｔｏｒビットと、Ｌ２  Ｈｉｔビットが「１」のときにおけるＬ２キャッシュメモリ２０ａにおいてヒットしたウェイのウェイ番号が表示されるｈｉｔ＿ｗａｙビットを保持する。
【００５４】
このように、演算処理装置１０では、ヒット情報レジスタ３２、２３へのストア命令と、ヒット情報レジスタ３２、２３からのロード命令との２命令に分けてキャッシュヒットチェックを行っている。具体的には、演算処理装置１０では、まずＬ１キャッシュメモリ３０ａおよびＬ２キャッシュメモリ２０ａ両方のキャッシュヒットチェックを行い、キャッシュヒットチェック結果をＬ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３に書き込む。次に、演算処理装置１０は、Ｌ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３から読み出す。
【００５５】
例えば、演算処理装置１０は、Ｌ２キャッシュメモリ２０ａにヒットしたがＬ１キャッシュメモリ３０ａにミスした場合には、Ｌ１ヒット情報レジスタ３２に記憶されるキャッシュヒットチェック結果として、ヒットビットを「０」とし、「ｓｅｃｔｏｒ０＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶させ、「ｓｅｃｔｏｒ１＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ１データのウェイ数を記憶させ、「ｓｅｃｔｏｒ」、「ｈｉｔ＿ｗａｙ」のビットデータを無効な値（例えば、全ての値を「０」）とする。また、Ｌ２ヒット情報レジスタ２３に記憶されるキャッシュヒットチェック結果として、ヒットビットを「１」とし、「ｓｅｃｔｏｒ０＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ０データのウェイ数を記憶させ、「ｓｅｃｔｏｒ１＿ｎｕｍ」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ１データのウェイ数を記憶させ、「ｓｅｃｔｏｒ」にセクタが０か１かを示すセクタ情報を記憶させ、「ｈｉｔ＿ｗａｙ」にヒットしたウェイ番号を記憶させる。
【００５６】
つまり、演算処理装置１０は、キャッシュヒット情報を待避するＬ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３がアーキテクチャレジスタ３６、２７に追加されているため、既存のストア命令とロード命令でＬ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３に読み書きすることができ、専用のコマンドを用意する必要がない。
【００５７】
また、演算処理装置１０は、キャッシュメモリがキャッシュヒットするかキャッシュミスするかの状態に関りなく、１回のキャッシュヒットチェックを行うごとに、Ｌ１キャッシュメモリ３０ａおよびＬ２キャッシュメモリ２０ａ両方の６４ビットのキャッシュヒットチェック結果（図３、図４参照）をヒット情報レジスタへ待避させて、キャッシュヒットチェック結果を読み出せる。なお、キャッシュヒットチェックの使用用途には、ハードウェアのデバッグが一例としてあげられ、プログラム実行完了後のキャッシュ状態を調べることなどに有効である。
【００５８】
［演算処理装置による処理］
次に、図６を用いて、実施例１に係る演算処理装置１０による処理を説明する。図６は、実施例１に係る演算処理装置１０の処理動作を示すフローチャートである。
【００５９】
図６に示すように、演算処理装置１０は、初期値設定部３１ｃが読み出しカウンタ３１ｂに初期値を設定する（ステップＳ１０１）。そして、演算処理装置１０は、アーキテクチャレジスタ３６の内容に対するストア命令により、デバッグフラグビット３１ａを１とし（ステップＳ１０２）、Ｒｅａｄコマンドを発行してＬ２ヒット情報レジスタ２３から読み出す（ステップＳ１０３）。そして、演算処理装置１０は、デバッグフラグビット３１ａを１とした状態でプリフェッチ命令を発行すると、命令拡張によりプリフェッチ命令がキャッシュヒットチェック命令として機能し、プリフェッチ命令アドレスでＬ１キャッシュメモリ３０ａの検索を行う（ステップＳ１０４）。
【００６０】
そして、演算処理装置１０は、検索の結果、キャッシュヒットしたか判定し（ステップＳ１０５）、キャッシュヒットした場合には（ステップＳ１０５肯定）、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「１」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、Ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを更新する（ステップＳ１０６）。また、演算処理装置１０は、キャッシュミスしたと判定した場合には（ステップＳ１０５否定）、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「０」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットを更新し、Ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを無効とする（ステップＳ１０７）。
【００６１】
続いて、演算処理装置１０は、プリフェッチ命令アドレスでＬ２キャッシュメモリ２０ａの検索を行う（ステップＳ１０８）。そして、演算処理装置１０は、検索の結果、キャッシュヒットしたか否かを判定し（ステップＳ１０９）、キャッシュヒットした場合には（ステップＳ１０９肯定）、Ｌ２ヒット情報レジスタ２３のＬ２  Ｈｉｔビットを「１」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、Ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを更新する（ステップＳ１１０）。また、演算処理装置１０は、キャッシュミスしたと判定した場合には（ステップＳ１０９否定）、Ｌ２ヒット情報レジスタ２３のＬ２  Ｈｉｔビットを「０」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットを更新し、Ｓｅｃｔｏｒビットとｈｉｔ＿ｗａｙビットを無効とする（ステップＳ１１１）。
【００６２】
その後、演算処理装置１０は、Ｒｅａｄコマンドを発行し、ヒット情報レジスタの値を読み出し（ステップＳ１１２）、読み出しカウンタ３１ｂの値が「０」であるか判定する（ステップＳ１１３）。その結果、演算処理装置１０は、読み出しカウンタ３１ｂの値が「０」でない場合には（ステップＳ１１３否定）、読み出しカウンタ３１ｂの値をデクリメントして（ステップＳ１１５）、ステップＳ１０４に戻る。また、演算処理装置１０は、今回取得しようとした全キャッシュラインのキャッシュのヒット情報の取得が完了した場合には（ステップＳ１１３肯定）、デバッグフラグビット３１ａを「０」に戻して（ステップＳ１１４）、処理を終了する。
【００６３】
[実施例１の効果]
上述してきたように、演算処理装置１０は、キャッシュの状態をチェックするキャッシュヒットチェックを実行するか否かを示すデバッグフラグビット３１ａを有する。そして、キャッシュヒットチェックを実行する旨が記憶されており、かつ、プリフェッチ命令を受信した場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。そして、演算処理装置１０は、キャッシュヒットチェックが実行された場合に、キャッシュヒットチェックの結果をＬ１ヒット情報レジスタ３２およびＬ２ヒット情報レジスタ２３に記憶し、ヒット情報レジスタ３２、２３に記憶されたキャッシュヒットチェックの結果を読み出すように制御する。このため、演算処理装置１０は、セクタ情報決定回路と外部インタフェースとの間に専用転送バスを設けることなく、キャッシュヒットチェックの結果を容易に読み出すことが可能である。さらに、キャッシュヒットの有無に関わらず、検査対象としたいキャッシュインデックスのセクタ使用状況を一度に取り出すことが可能である。
【００６４】
また、演算処理装置１０は、キャッシュヒット情報レジスタをアーキテクチャレジスタ３６として設けているから、既存のロード命令とストア命令で読み書き可能である。また、アーキテクチャレジスタ３６を使わない場合は、直接キャッシュヒット情報を読み出すための専用パスを必要とするが、アーキテクチャレジスタ３６を使っているので、セクタ情報決定回路と外部インタフェースとの間に専用転送バスを設ける必要がない。
【００６５】
また、実施例１によれば、演算処理装置１０は、キャッシュヒットチェック処理を実行する旨が記憶されており、かつ、プリフェッチ命令を受信した場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。このため、プリフェッチ命令コードを拡張し、キャッシュヒットチェック命令とすることで、デバッグ用の新しい命令コードを必要とすることなく、キャッシュヒットチェックを実行することが可能である。なお、プリフェッチ命令は、アーキテクチャレジスタ３６の変更を要しない命令コードであるから、デバッグ命令との併用が容易に行える。
【００６６】
また、実施例１によれば、演算処理装置１０は、キャッシュの事前の命令が完了した場合に、ヒット情報レジスタ３２、２３に記憶されたキャッシュヒットチェック処理の結果を読み出すように制御する。このため、演算処理装置１０は、Ｌ１／２キャッシュの事前命令がすべて完了したことを保証してから、適切なキャッシュヒットチェック処理の結果を読み出すことが可能である。
【００６７】
また、実施例１によれば、演算処理装置１０は、デバッグフラグビット３１ａがストア命令を受信した場合に、キャッシュヒットチェック処理を実行する旨を記憶する。そして、演算処理装置１０は、ヒット情報レジスタ３２、２３がＲｅａｄコマンドを受信した場合に、ヒット情報レジスタ３２、２３に記憶されたキャッシュヒットチェック処理の結果を読み出すように制御する。このため、ヒット情報レジスタ３２、２３から、既存のＲｅａｄ命令とストア命令で読み書き可能である。
【実施例２】
【００６８】
ところで、キャッシュヒットチェックを行いたいメモリアドレスをセットするアドレスレジスタを用意し、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行うようにしてもよい。
【００６９】
そこで、以下の実施例２では、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う場合として、図７および図８を用いて、説明する。図７は、実施例２に係る演算処理装置の構成を示すブロック図である。図８は、実施例２に係る演算処理装置の処理手順を説明するフローチャートである。
【００７０】
まず最初に、実施例２に係る演算処理装置１０Ａは、図１に示した演算処理装置１０と比較して、アドレスレジスタ３５およびアドレス一致チェック回路３８ｂを新たに有する点が相違する。かかる演算処理装置１０Ａにおいて、アドレスレジスタ３５は、キャッシュヒットチェックの対象となるメモリアドレスを記憶するレジスタである。
【００７１】
アドレス一致チェック回路３８ｂは、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う。具体的には、アドレス一致チェック回路３８ｂは、アクセスアドレス記憶部３７からプリフェッチ命令の対象となるプリフェッチ命令アドレスを取得し、アドレスレジスタ３５からキャッシュヒットチェックを行う対象のメモリアドレスを読み出す。そして、アドレス一致チェック回路３８ｂは、プリフェッチ命令アドレスとキャッシュヒットチェックを行いたいメモリアドレスとを比較して、一致した場合には、キャッシュヒットチェックを行う旨の命令を命令拡張判定回路３８ａに入力する。
【００７２】
次に、実施例２にかかる演算処理装置１０Ａの処理について説明する。実施例２の演算処理装置１０Ａは、図６に示した実施例１にかかる演算処理装置１０の処理と比較して、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う点が相違する。
【００７３】
すなわち、図８に示すように、演算処理装置１０Ａは、Ｒｅａｄコマンドを発行してＬ２ヒット情報レジスタ２３から読み出した後に（ステップＳ２０２）、アドレスレジスタ３５にストア命令を発行し、キャッシュヒットチェックを行いたいメモリアドレスをセットする（ステップＳ２０３）。
【００７４】
そして、演算処理装置１０Ａは、アドレスレジスタ３５に記憶されたメモリアドレスでキャッシュアクセスを行う（ステップＳ２０４）。そして、演算処理装置１０Ａは、アドレスレジスタ３５のメモリアドレスとプリフェッチ命令のメモリアドレスが一致するか判定する（ステップＳ２０５）。この結果、演算処理装置１０Ａは、アドレスレジスタ３５のメモリアドレスとプリフェッチ命令のメモリアドレスが一致する場合には、キャッシュヒットチェックを実施する。キャッシュヒットチェックを行ってキャッシュヒットした場合には（ステップＳ２０５肯定）、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「１」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットと、Ｓｅｃｔｏｒビットと、ｈｉｔ＿ｗａｙビットを更新する（ステップＳ２０６）。
【００７５】
また、演算処理装置１０Ａは、キャッシュヒットチェックを行ってキャッシュヒットしなかった場合には（ステップＳ２０５否定）、Ｌ１ヒット情報レジスタ３２のＬ１  Ｈｉｔビットを「０」とし、ｓｅｃｔｏｒ０＿ｎｕｍビットと、ｓｅｃｔｏｒ１＿ｎｕｍビットを更新し、ｓｅｃｔｏｒビット、ｈｉｔ＿ｗａｙビットのビットデータを無効な値（例えば、全ての値を「０」）とする（ステップＳ２０７）。
【００７６】
その後、演算処理装置１０Ａは、Ｌ１キャッシュメモリ３０ａのヒット、ミスにかかわらず、実施例１の演算処理装置１０と同様に、Ｌ２キャッシュメモリ２０ａの検索も行い、Ｌ２ヒット情報レジスタ２３の情報を更新する（ステップＳ２０８〜Ｓ２１２）。その後、演算処理装置１０Ａは、キャッシュのヒット情報の取得が完了したか判定する（ステップＳ２１３）。その結果、演算処理装置１０Ａは、キャッシュのヒット情報の取得が完了していない場合には（ステップＳ２１３否定）、ステップＳ２０３に戻る。また、演算処理装置１０Ａは、キャッシュのヒット情報の取得が完了した場合には（ステップＳ２１３肯定）、デバッグフラグビットを「０」に戻して（ステップＳ２１４）、処理を終了する。
【００７７】
このように実施例２によれば、演算処理装置１０Ａは、アドレスレジスタ３５およびアドレス一致チェック回路３８ｂを有する。アドレスレジスタ３５は、キャッシュヒットのチェック対象であるチェック対象アドレスを記憶する。また、アドレス一致チェック回路３８ｂは、チェック対象アドレスとプリフェッチ命令の対象となるプリフェッチ命令アドレスとが一致するか比較する。そして、演算処理装置１０Ａは、比較の結果、チェック対象アドレスとプリフェッチ命令アドレスとが一致する場合であり、かつ、デバッグフラグビットによってキャッシュヒットチェック処理を実行する旨が記憶されている場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。このため、プログラム中のある１命令に着目して、プログラム動作中のキャッシュ状態の変化を知ることが可能となる。
【実施例３】
【００７８】
さて、これまで本実施例について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００７９】
（１）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、命令拡張判定回路とアドレス一致チェック回路とを統合してもよい。
【００８０】
（２）サーバの構成
本実施例で開示する演算処理装置であるＣＰＵが組み込まれたサーバの構成例を図９に示す。図９は、サーバの構成を示す図である。図９に示すように、サーバは、バックプレーン１００に複数の切換装置としてのクロスバとしてＸＢ１０１、ＸＢ１０２などを有し、クロスバそれぞれにシステムボードとしてＳＢ１１０〜ＳＢ１１３と入出力システムボードＩＯＳＢ１５０とを有する。なお、クロスバ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
【００８１】
バックプレーン１００は、複数のコネクタ等を相互接続するバスを形成する回路基板である。ＸＢ１０１、ＸＢ１０２は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
【００８２】
また、ＸＢ１０１に接続されるＳＢ１１０、ＳＢ１１１、ＳＢ１１２、ＳＢ１１３は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではＳＢ１１０についてのみ説明する。ＳＢ１１０は、システムコントローラ（System  Controller：SC）１１０ａと、４台のＣＰＵと、メモリアクセスコントローラ（Memory  Access  Controller：MAC）と、ＤＩＭＭ（Dual  Inline  Memory  Module）とを有する。
【００８３】
ＳＣは、ＳＢ１１０に搭載されるＣＰＵ１１０ｂ〜１１０ｅとＭＡＣ１１０ｈ、ＭＡＣ１１０ｉとの間におけるデータ転送などの処理を制御し、ＳＢ１１０全体を制御する。ＣＰＵ１１０ｂ〜１１０ｅそれぞれは、ＳＣを介して他のＬＳＩと接続され、本実施の形態で開示したキャッシュメモリ制御方法を実現するプロセッサである。ＭＡＣ１１０ｈは、ＤＩＭＭ１１０ｆとＳＣとの間に接続され、ＤＩＭＭ１１０ｆへのアクセスを制御する。ＭＡＣ１１０ｉは、ＤＩＭＭ１１０ｇとＳＣとの間に接続され、ＤＩＭＭ１１０ｇへのアクセスを制御する。ＤＩＭＭ１１０ｆは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。ＤＩＭＭ１１０ｇは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行う主記憶装置（メインメモリ）としてのメモリモジュールである。
【００８４】
ＩＯＳＢ１５０は、ＸＢ１０１を介してＳＢ１１０〜ＳＢ１１３それぞれと接続されるとともに、ＳＣＳＩ（Small  Computer  System  Interface）、ＦＣ（Fibre  Channel）、イーサネット（登録商標）などを介して入出力デバイスと接続される。ＩＯＳＢ１５０は、入出力デバイスとＸＢ１０１との間におけるデータ転送などの処理を制御する。なお、ＳＢ１１０に搭載されるＣＰＵ、ＭＡＣ、ＤＩＭＭなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
【符号の説明】
【００８５】
１０、１０Ａ  演算処理装置
２０  Ｌ２キャッシュユニット
２０ａ  Ｌ２キャッシュメモリ
２３  Ｌ２ヒット情報レジスタ
３０  Ｌ１キャッシュユニット
３０ａ  Ｌ１キャッシュメモリ
３１  レジスタ
３２  Ｌ１ヒット情報レジスタ
３３  命令セット記憶部
３３ａ  プリフェッチ命令コード
３４  アーキテクチャレジスタコマンド記憶部
３４ａ  Ｒｅａｄコマンド記憶部
３５  アドレスレジスタ
２７、３６  アーキテクチャレジスタ
３７  アクセスアドレス記憶部
３８  制御部
３８ａ  命令拡張判定回路
３８ｂ  アドレス一致チェック回路
２１、３９ａ  ＴＡＧマッチ回路
２２、３９ｂ  セクタ情報決定回路
２４、３９ｃ  キャッシュアクセス回路
２２ａ、３９ｄ  ＬＲＵ回路
【図１】
0005625809.tif 000002
【図２】
0005625809.tif 000003
【図３】
0005625809.tif 000004
【図４】
0005625809.tif 000005
【図５】
0005625809.tif 000006
【図６】
0005625809.tif 000007
【図７】
0005625809.tif 000008
【図８】
0005625809.tif 000009
【図９】
0005625809.tif 000010
【図１０】
0005625809.tif 000011
【図１１】
0005625809.tif 000012
【図１２】
0005625809.tif 000013