(57)【要約】【課題】処理性能を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供する。【解決手段】タグマッチ判定部３０３は、所定データの取得要求を受けて、１次キャッシュ３０１に所定データが存在するか否かを判定する。ムーブインバッファ３０５は、１次キャッシュ３０１に所定データが存在しない場合、２次キャッシュ管理部１１２又は記憶装置へ所定データの取得要求を出力するとともに、所定データを格納する所定領域の状態情報に基づく判定用情報を保持する。格納処理部３０８は、取得要求に対する応答を２次キャッシュ管理部１１２又は記憶装置から取得し、取得した応答が所定の種類の場合、ムーブインバッファ３０５が保持する判定用情報を基に、１次キャッシュ３０１に格納された状態情報を取得するか否かを判定し、状態情報を取得しないと判定した場合、所定領域を無効化し、所定領域に応答に含まれる所定データを格納する。【選択図】図３
2020003959.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を有する情報処理装置であって、
前記演算処理装置は、
データ及びデータを格納する領域の状態情報を保持するキャッシュメモリと、
所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する判定部と、
前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記所定データを格納する所定領域の状態情報に基づく判定用情報を保持する制御部と、
前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納する格納処理部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記格納処理部は、前記状態情報を取得すると判定した場合、前記キャッシュメモリから前記状態情報を取得し、取得した前記状態情報が第１状態の場合、前記所定領域が保持する既存データを退避させ、前記所定領域を無効化し、前記所定領域に前記所定データを格納し、取得した前記状態情報が第２状態の場合、前記所定領域を無効化し、前記所定領域に前記所定データを格納することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記格納処理部は、前記応答が所定の種類でない場合、前記キャッシュメモリから前記状態情報を取得して確認し、前記所定領域に前記所定データを格納することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記キャッシュメモリは、データ格納部、並びに、前記データの検索情報及び前記状態情報を保持するタグ格納部を有し、
前記判定部は、前記タグ格納部が保持する前記検索情報を基に前記データ格納部に前記所定データが存在するか否かを判定し、
前記制御部は、前記データ格納部に前記所定データが存在しない場合、前記下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記データ格納部における前記所定データの格納先領域の前記状態情報を前記タグ格納部から取得して前記判定用情報を生成して保持し、
前記格納処理部は、
前記状態情報を取得しないと判定した場合、前記格納先領域に関する情報を保持する前記タグ格納部の対応領域を無効化し、前記対応領域に前記所定データの検索情報及び前記格納先領域の状態情報を格納するタグ管理部と、
前記格納先領域に前記所定データを格納するデータ管理部とを有する
ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記格納処理部は、前記応答がデータ移動を要求する種類の応答の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定することを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
前記格納処理部は、前記制御部が保持する前記判定用情報が、前記所定データが前記下位のキャッシュメモリ又は記憶装置に存在する状態を表す場合、前記キャッシュメモリに格納された前記状態情報を取得しないと判定することを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
前記制御部は、前記キャッシュメモリが保持する前記所定データの格納先の所定領域の状態情報及び前記所定領域に対するデータの更新状況に基づく判定用情報を保持することを特徴とする請求項１〜６のいずれか一つに記載の情報処理装置。
【請求項８】
データ及びデータを格納する領域の状態情報を保持するキャッシュメモリと、
所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する判定部と、
前記キャッシュメモリが保持する前記所定データの格納先の所定領域の状態情報を基に判定用情報を生成する生成部と、
前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記生成部が生成した前記判定用情報を保持する制御部と、
前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納する格納処理部と
を備えたことを特徴とする演算処理装置。
【請求項９】
データ及びデータを格納する領域の状態情報を保持するキャッシュメモリが搭載された複数の演算処理装置を有する情報処理装置の制御方法であって、
所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定し、
前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力し、且つ、前記所定データの格納先の所定領域の状態情報に基づく判定用情報を保持し、
前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、
取得した前記応答が所定の種類の場合、前記判定用情報を基に前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、
前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納する
処理を各前記演算処理装置に行わせることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサ内部のキャッシュメモリは、主記憶メモリへのアクセスレイテンシを隠蔽するために用いられる。プロセッサは、主記憶メモリに近い側に比較的大容量の２次キャッシュ（Ｌ２（Level-2）キャッシュ）とコア内部に高速アクセスできる１次キャッシュ（Ｌ１（Level-1）キャッシュ）とを有する。このように、容量の異なる複数のキャッシュを有する構成は、階層キャッシュと呼ばれる。
【０００３】
ここで、１次キャッシュでキャッシュミスが発生すると、２次キャッシュに対してムーブイン（ＭＩ:Move  In）要求が行われる。そして、２次キャッシュからキャッシュミスしたデータが１次キャッシュへ登録される。この時、ライトバック方式の階層キャッシュ間において、データのコヒーレンシを維持することが要求される。
【０００４】
ライトバック方式の階層キャッシュを有するプロセッサは、例えば、１次キャッシュ及び２次キャッシュにおいてＭＥＳＩ（Modified  Exclusive  Shared  Invalid）プロトコルを採用し、階層間でのデータのコヒーレンシを維持する。ＭＥＳＩプロトコルとは、キャッシュステートと呼ばれるキャッシュメモリにおけるデータの状態を用いてコヒーレンシを維持するためのプロトコルである。キャッシュステートは、ＴＡＧ−ＲＡＭ（Random  Access  Memory）で管理されている。プロセッサは、ＭＥＳＩプロトコルを実行する場合、ＴＡＧ−ＲＡＭにアクセスすることでキャッシュステートを監視する。
【０００５】
ＭＥＳＩプロトコルにおいて、キャッシュは以下の４つの状態のいずれかにある。Ｍ（Modify）ステートは、ストア命令などによりキャッシュが更新されたことを示しており、更新されたデータについてライトバックが要求される状態である。Ｅ（Exclusive）ステートは、ストア命令を実行するためにキャッシュが排他権を有しており、ストア実行前であればライトバックは行わなくてよい状態である。ただし、ストア実行後であれば、キャッシュがＥステートからＭステートに遷移して、ライトバックを要求する状態となる。Ｓ（Share）ステートは、共有型でデータを保持しておりライトバックを行わなくてよい状態である。Ｉ（Invalid）ステートは、キャッシュのデータが無効であることを示しており、ライトバックを行わなくてよい状態である。
【０００６】
１次キャッシュ管理部は、１次キャッシュでキャッシュミスが発生すると、データ登録に使用する物理アドレス及びリプレースＷＡＹ情報を２次キャッシュ管理部に通知する。２次キャッシュ管理部は、１次キャッシュのキャッシュステートがＩステートであるか、又は、Ｍステート、ＳステートもしくはＥステートのいずれかであるかを管理する。２次キャッシュ管理部は、１次キャッシュがＩステートであれば、元データの移動が付随しないデータ格納要求を１次キャッシュ管理部に発行する。また、１次キャッシュがＭステート、ＳステートもしくはＥステートのいずれかであれば、２次キャッシュ管理部は、元データの移動が付随するデータ格納要求を１次キャッシュ管理部に対して発行する。この場合、データ格納要求には、物理アドレス、リプレースＷＡＹ情報及びコード情報が含まれる。そして、２次キャッシュ管理部は、データを読み出し、１次キャッシュへの新たなデータの転送を行う。
【０００７】
１次キャッシュ管理部は、元データの移動が付随しないデータ格納要求を受信した場合、１次キャッシュのリプレース対象部録の状態はＩステートであるので、無効化処理を行わずにプロトコルチェックを行う。これに対して、元データの移動が付随するデータ格納要求を受信した場合、１次キャッシュのリプレース対象ブロックは有効状態であるので、１次キャッシュ管理部は、１次キャッシュのＴＡＧ−ＲＡＭを１度読み出してキャッシュステートを確認する。１次キャッシュがＭステートであれば、１次キャッシュ管理部は、ライトバックのために該当データを読み出して、ＭＯＢ（Move  Out  Buffer）にデータを退避させつつ、リプレース対象ブロックの無効化を行う。これに対して、１次キャッシュがＥステート又はＳステートの場合、１次キャッシュ管理部は、ライトバックを行わずに、リプレース対象ブロックの無効化を行う。その後、１次キャッシュ管理部は、リプレース対象の無効化が行われた後に、２次キャッシュから転送された新たに格納するデータを１次キャッシュに登録してリプレース処理を終える。
【０００８】
なお、キャッシュのコヒーレンシを維持する技術として、以下の従来技術がある。上位キャッシュのラインに下位キャッシュにおけるデータの存在の有無を示すフラグを設け、下位キャッシュでラインの置換えが発生した場合に上位キャッシュに通知し、ラインが上位キャッシュに存在する場合、フラグをセットする従来技術がある。また、ダーティフラグがセットされたキャッシュエントリのラインデータをメモリへライトバックする従来技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０−５５３０９号公報
【特許文献２】国際公開第２００５／０５０４５４号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、２次キャッシュ管理部から元データの移動が付随するデータ格納要求を受信した場合、１次キャッシュ管理部は、１回目のＴＡＧ−ＲＡＭへのアクセスで、ＴＡＧ−ＲＡＭを読み出して、１次キャッシュのステートを確認する。次に、１次キャッシュ管理部は、２回目のＴＡＧ−ＲＡＭへのアクセスで、ＴＡＧ−ＲＡＭの無効化を行う。このように、１次キャッシュ管理部は、２次キャッシュ管理部から元データの移動が付随するデータ格納要求を受信した場合、２回のＴＡＧ−ＲＡＭへのアクセスを行う。ＴＡＧ−ＲＡＭへのアクセスはパイプライン処理であり、且つＴＡＧ−ＲＡＭへのアクセス時間にはステートの確認するためのサイクルが含まれる。そのため、ＴＡＧ−ＲＡＭへアクセスする処理は時間が掛かる処理であり、ＴＡＧ−ＲＡＭへのアクセス時間が、１次キャッシュミス時の演算処理装置の処理性能を低減させるおそれがある。
【００１１】
１次キャッシュがＭステートの場合、ライトバックが行われることから、データの退避のためにＴＡＧ−ＲＡＭに対する２回のアクセスが行われる。ただし、１次キャッシュがＥステート又はＳステートの場合、最終的にＴＡＧ−ＲＡＭを無効化することができればよく、ＴＡＧ−ＲＡＭへの２回のアクセスは無駄な遅延を発生させているといえ、情報処理装置の処理性能を低下させているといえる。
【００１２】
ここで、上位キャッシュのラインに下位キャッシュにおけるデータの存在の有無を示すフラグを設ける従来技術を用いても、Ｍステート時のＴＡＧ−ＲＡＭへのアクセス回数には影響せず、情報処理装置の性能を向上させることは困難である。また、ダーティフラグを用いてメモリへのライトバックを制御する従来技術であっても、Ｍステート時のＴＡＧ−ＲＡＭへのアクセス回数は考慮されておらず、情報処理装置の処理性能を向上させることは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、処理性能を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、以下の各部を備える複数の演算処理装置を有する。キャッシュメモリは、データ及びデータを格納する領域の状態情報を保持する。判定部は、所定データの取得要求を受けて、前記キャッシュメモリに前記所定データが存在するか否かを判定する。制御部は、前記キャッシュメモリに前記所定データが存在しない場合、前記キャッシュメモリよりも下位のキャッシュメモリ又は記憶装置へ前記所定データの取得要求を出力するとともに、前記所定データを格納する所定領域の状態情報に基づく判定用情報を保持する。格納処理部は、前記取得要求に対する応答を前記下位のキャッシュメモリ又は記憶装置から取得し、取得した前記応答が所定の種類の場合、前記制御部が保持する前記判定用情報を基に、前記キャッシュメモリに格納された前記状態情報を取得するか否かを判定し、前記状態情報を取得しないと判定した場合、前記所定領域を無効化し、前記所定領域に前記応答に含まれる前記所定データを格納する。
【発明の効果】
【００１５】
１つの側面では、本発明は、情報処理装置の処理性能を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理装置のハードウェア構成図である。
【図２】図２は、ＣＰＵのブロック図である。
【図３】図３は、実施例１に係る１次キャッシュ管理部のブロック図である。
【図４】図４は、１次キャッシュ管理部によるロード命令の処理のフローチャートである。
【図５】図５は、移動不要格納要求の場合の無効化処理のフローチャートである。
【図６】図６は、移動付随格納要求の場合の無効化処理のフローチャートである。
【図７】図７は、実施例２に係る１次キャッシュ管理部のブロック図である。
【図８】図８は、ストア命令が先行する状態での競合時のＬ１タグの遷移を表す図である。
【図９】図９は、ロード命令が先行する状態での競合時のＬ１タグの遷移を表す図である。
【図１０】図１０は、ストアバッファを用いない場合の競合時のＬ１タグの遷移を表す図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法が限定されるものではない。
【実施例１】
【００１８】
図１は、情報処理装置のハードウェア構成図である。サーバなどの情報処理装置１は、システムボード１０、ＩＯ（Input  Output）ユニット２０、ディスクユニット３０を有する。
【００１９】
システムボード１０は、複数のＣＰＵ１１及びメモリ１２が搭載される。システムボード１０は、バスによりＩＯユニット２０と接続される。システムボード１０上のＣＰＵ１１及びメモリ１２は、システムボード１０とＩＯユニット２０とを繋ぐバスを介してＩＯユニット２０と通信する。
【００２０】
演算処理装置であるＣＰＵ１１は、ＩＯユニット２０を介してディスクユニット３０とデータの送受信を行う。また、ＣＰＵ１１は、バスを介して主記憶装置であるメモリ１２と接続される。ＣＰＵ１１は、ディスクユニット３０に格納された各種プログラムを読み出し、メモリ１２上に展開して実行することで、ＯＳ（Operating  System）やアプリケーションを動作させる。ここで、本実施例では、４つのＣＰＵ１１を例に図示したが、ＣＰＵ１１の数に特に制限は無い。
【００２１】
ＩＯユニット２０は、ディスクユニット３０に対するデータの読み書きの制御を行う。ディスクユニット３０は、補助記憶装置である。ディスクユニット３０は、ＯＳやアプリケーションなどの各種プログラムを格納する。
【００２２】
図２は、ＣＰＵのブロック図である。ＣＰＵ１１は、コア１００及び２次キャッシュ管理部１１２を有する。
【００２３】
コア１００は、命令制御部１０１、演算処理部１０２及び１次キャッシュ管理部１０３を有する。命令制御部１０１、演算処理部１０２及び１次キャッシュ管理部１０３は、それぞれ互いに接続され、相互に通信を行う。
【００２４】
命令制御部１０１は、プログラムを実行する際に、各種命令を生成する。そして、命令制御部１０１は、演算処理の実行命令を演算処理部１０２へ出力する。その後、命令制御部１０１は、出力した実行命令の応答を演算処理部１０２から取得する。
【００２５】
また、命令制御部１０１は、キャッシュのロード命令又はストア命令を１次キャッシュ管理部１０３に送信する。その後、命令制御部１０１は、送信したロード命令又はストア命令に対する応答を１次キャッシュ管理部１０３から取得する。
【００２６】
演算処理部１０２は、演算処理の実行命令の入力を命令制御部１０１から受ける。また、演算処理部１０２は、１次キャッシュ管理部１０３からデータを取得する。そして、演算処理部１０２は、１次キャッシュ管理部１０３から取得したデータなどを用いて実行命令にしたがって演算を実行する。
【００２７】
１次キャッシュ管理部１０３は、１次キャッシュ３０１を有する。１次キャッシュ管理部１０３は、キャッシュのロード命令の入力を命令制御部１０１から受ける。そして、１次キャッシュ管理部１０３は、ロード命令で指定されたデータが１次キャッシュ３０１に存在するか否かを判定する。１次キャッシュ３０１に指定されたデータが存在するキャッシュヒットの場合、１次キャッシュ管理部１０３は、指定されたデータを１次キャッシュ３０１から読み出して演算処理部１０２へ出力する。その後、１次キャッシュ管理部１０３は、キャッシュのロード命令の処理完了を命令制御部１０１へ通知する。
【００２８】
これに対して、ロード命令で指定されたデータが１次キャッシュ３０１に存在しないキャッシュミスの場合、１次キャッシュ管理部１０３は、ムーブイン要求を２次キャッシュ管理部１１２に送信する。その後、１次キャッシュ管理部１０３は、ロード命令で指定されたデータ及びデータ格納要求の入力を２次キャッシュ管理部１１２から受ける。そして、１次キャッシュ管理部１０３は、データ格納要求にしたがい１次キャッシュ３０１に対する処理を行い、受信したデータを１次キャッシュ３０１に格納する。その後、１次キャッシュ管理部１０３は、キャッシュのロード命令を再度実行し、キャッシュヒットとなった場合の処理を実行する。その後、１次キャッシュ管理部１０３は、キャッシュのロード命令の処理完了を命令制御部１０１へ通知する。
【００２９】
また、１次キャッシュ管理部１０３は、キャッシュのストア命令の入力を命令制御部１０１から受ける。そして、１次キャッシュ管理部１０３は、ストア命令で指定されたデータが１次キャッシュ３０１に存在するか否かを判定する。ストア命令で指定されたデータが１次キャッシュ３０１に存在しない場合、１次キャッシュ管理部１０３は、データを新たに１次キャッシュ３０１に登録する。さらに、１次キャッシュ管理部１０３は、登録したデータを保持しておき、予め決められた条件を満たすと、２次キャッシュ１２１へのデータの書き込みを２次キャッシュ管理部１１２へ依頼する。また、ストア命令で指定されたデータが１次キャッシュ３０１に存在する場合、１次キャッシュ管理部１０３は、１次キャッシュ３０１上のデータを更新する。さらに、１次キャッシュ管理部１０３は、更新したデータを保持しておき、予め決められた条件を満たすと、２次キャッシュ１２１へのデータの書き込みを２次キャッシュ管理部１１２へ依頼する。
【００３０】
２次キャッシュ管理部１１２は、２次キャッシュ１２１を有する。２次キャッシュ１２１は、１次キャッシュよりも動作速度が低速であるが、容量が大きいキャッシュである。２次キャッシュ１２１は、１次キャッシュ３０１の各領域のキャッシュステートがＩステートであるか否かの情報を保持する。
【００３１】
２次キャッシュ管理部１１２は、ムーブイン要求の入力を１次キャッシュ管理部１０３から受ける。そして、２次キャッシュ管理部１１２は、ムーブイン要求で指定されたデータが２次キャッシュ１２１に存在するか否かを判定する。
【００３２】
指定されたデータが２次キャッシュに存在する場合、２次キャッシュ管理部１１２は、１次キャッシュ３０１の指定されたデータの格納先の領域のキャッシュステートを確認する。キャッシュステートがＩステートである場合、２次キャッシュ管理部１１２は、元データの移動を行わないデータ格納要求を生成する。以下では、データ登録における元データの移動を行わないデータ格納要求を「移動不要格納要求」と言う。その後、２次キャッシュ管理部１１２は、移動不要格納要求とともにムーブイン要求で指定されたデータを１次キャッシュ管理部１０３へ出力する。
【００３３】
これに対して、キャッシュステートがＩステート以外であれば、２次キャッシュ管理部１１２は、元データの移動を伴うデータ格納要求を生成する。以下では、元データの移動を伴うデータ格納要求を「移動付随格納要求」という。その後、２次キャッシュ管理部１１２は、移動付随格納要求とともにムーブイン要求で指定されたデータを１次キャッシュ管理部１０３へ出力する。
【００３４】
これに対して、指定されたデータが２次キャッシュに存在しない場合、２次キャッシュ管理部１１２は、その指定されたデータをメモリ１２から取得する。そして、２次キャッシュ管理部１１２は、取得したデータを２次キャッシュ１２１に格納する。その後、２次キャッシュ管理部１１２は、命令で指定されたデータが２次キャッシュに存在する場合と同様の処理を実行する。この２次キャッシュ管理部１１２が、「下位記憶装置」の一例にあたる。
【００３５】
次に、図３を参照して、１次キャッシュ管理部１０３の詳細について説明する。図３は、実施例１に係る１次キャッシュ管理部のブロック図である。図３に示すように、１次キャッシュ管理部１０３は、１次キャッシュ３０１、セレクタ３０２、タグマッチ判定部３０３、ＴＬＢ（Translation  Lookaside  Buffer）３０４を有する。さらに、１次キャッシュ管理部１０３は、キャッシュの書き換えを管理するムーブインバッファ３０５、リプレイスウェイ選択部３０６、フラグ生成部３０７、格納処理部３０８及びムーブアウトバッファ３０９を有する。
【００３６】
１次キャッシュ３０１は、１次データキャッシュ３５１及びＬ１タグ３５２を有する。１次データキャッシュ３５１は、データを格納する格納領域である。この１次データキャッシュ３５１が、「データ格納部」の一例にあたる。また、Ｌ１タグ３５２は、１次データキャッシュ３５１に格納されたデータに対応するアドレス情報であるタグを格納する格納領域である。このＬ１タグ３５２が、「タグ格納部」の一例にあたる。そして、タグが、「検索情報」の一例にあたる。１次キャッシュ３０１に格納されたデータとそのデータに対応するタグのペアが、キャッシュラインである。
【００３７】
本実施例では、１次キャッシュ３０１は、セットアソシアティブ方式を採用し、インデックスごとにブロックにまとめられており、ブロックを格納できる領域数をウェイという。１次キャッシュ３０１では、４ウェイのデータが同一インデックスに格納できる。以下では、１次データキャッシュ３５１における各データを格納した領域をブロックとして説明する。
【００３８】
また、Ｌ１タグ３５２は、キャッシュラインに有効なデータが入っているかを示すｖａｌｉｄ情報及び１次データキャッシュ３５１の各ブロックのデータ保持の状態を表すキャッシュステートなどの制御情報を保持する。
【００３９】
ここで、Ｌ１タグ３５２が保持するキャッシュステートは、ＭＥＳＩプロトコルでキャッシュコヒーレンシの制御に用いられる情報である。キャッシュステートには、Ｍステート、Ｅステート、Ｓステート及びＩステートが存在する。Ｍステートは、変更型でブロックを保持する状態を表す。また、Ｅステートは、排他型でブロックを保持する状態を表す。Ｓステートは、共有型でブロックを保持する状態を表す。Ｉステートは、ブロックを保持していない状態を表す。このキャッシュステートが、「状態情報」の一例にあたる。
【００４０】
１次キャッシュ３０１の１次データキャッシュ３５１及びＬ１タグ３５２は、命令制御部１０１から出力されたキャッシュのロード命令の入力を受ける。Ｌ１タグ３５２は、キャッシュのロード命令の入力を受けて、ロード命令で指定されたデータを格納するウェイを表すタグをタグマッチ判定部３０３及びフラグ生成部３０７へ出力する。
【００４１】
１次データキャッシュ３５１は、後述するタグマッチ判定部３０３によりタグマッチが確認された場合、マッチしたタグに対応するデータをセレクタ３０２を介して演算処理部１０２へ出力する。
【００４２】
ＴＬＢ３０４は、例えば、論理アドレスから物理アドレスを取得するための連想メモリを有する。ＴＬＢ３０４は、命令制御部１０１から出力されたキャッシュのロード命令の中から、ロードするデータの格納先の論理アドレスを取得する。そして、ＴＬＢ３０４は、取得した論理アドレスに対応する物理アドレスを取得する。次に、ＴＬＢ３０４は、取得した物理アドレスをタグマッチ判定部３０３へ出力する。その後、タグマッチ判定部３０３からタグミスマッチの通知を受けた場合、ＴＬＢ３０４は、ムーブインバッファ３０５へ取得した物理アドレスを出力する。
【００４３】
タグマッチ判定部３０３は、タグの情報の入力をＬ１タグ３５２から受ける。また、タグマッチ判定部３０３は、物理アドレスの入力をＴＬＢ３０４から受ける。そして、タグマッチ判定部３０３は、タグの情報及び物理アドレスの情報を用いて、ロード命令で指定されたデータが１次データキャッシュ３５１に存在するか否かを確認し、存在する場合にはタグマッチと判定する。タグマッチの場合、タグマッチ判定部３０３は、タグマッチしたタグの情報をセレクタ３０２に送る。
【００４４】
また、ロード命令で指定されたデータが１次データキャッシュ３５１に存在しない場合、タグマッチ判定部３０３は、タグミスマッチと判定する。そして、タグマッチ判定部３０３は、タグミスマッチをＴＬＢ３０４及びリプレイスウェイ選択部３０６に通知する。このタグマッチ判定部３０３が、「判定部」の一例にあたる。
【００４５】
セレクタ３０２は、出力するデータのタグの情報の入力をタグマッチ判定部３０３から受ける。そして、セレクタ３０２は、取得したタグに対応するデータを１次データキャッシュ３５１の中から選択して演算処理部１０２へ出力する。
【００４６】
リプレイスウェイ選択部３０６は、命令制御部１０１から発行されたキャッシュのロード命令の入力を受ける。リプレイスウェイ選択部３０６は、タグマッチ判定部３０３からタグミスマッチの通知を受けると、予め決められたウェイの選択アルゴリズムにしたがって新たなデータを格納するウェイを選択する。例えば、リプレイスウェイ選択部３０６は、１次キャッシュ３０１の中でデータが格納されたタイミングが最も古いウェイをリプレイスウェイとして選択する。そして、リプレイスウェイ選択部３０６は、選択したウェイの情報をムーブインバッファ３０５及びフラグ生成部３０７へ出力する。以下では、このリプレイスウェイ選択部３０６が選択したロード命令で指定されたデータの格納先とするウェイを「格納先ウェイ」と言う。
【００４７】
フラグ生成部３０７は、格納先ウェイの情報をリプレイスウェイ選択部３０６から取得する。そして、フラグ生成部３０７は、取得した格納先ウェイの情報を用いて格納先ウェイに含まれるブロックのキャッシュステートをＬ１タグ３５２から取得する。
【００４８】
次に、フラグ生成部３０７は、取得したキャッシュステートがＭステートである場合、そのウェイに対応する判定用フラグの値としてＭステートを表す１を設定する。判定用フラグは、値が１の場合、Ｌ１タグ３５２に対するキャッシュステートの確認の実行を表す。
【００４９】
これに対して、取得したキャッシュステートがＭステート以外の場合、フラグ生成部３０７はそのウェイに対応する判定用フラグの値としてＭステート以外を表す０を設定する。判定用フラグは、値が０の場合、Ｌ１タグ３５２に対するキャッシュステートの確認を行わないことを表す。その後、フラグ生成部３０７は、格納先ウェイの判定用フラグをムーブインバッファ３０５へ出力する。
【００５０】
ムーブインバッファ３０５は、キャッシュのロード命令で指定されたデータの物理アドレスの入力をＴＬＢ３０４から受ける。また、ムーブインバッファ３０５は、格納先ウェイの情報の入力をリプレイスウェイ選択部３０６から受ける。さらに、ムーブインバッファ３０５は、格納先ウェイの判定用フラグの入力をフラグ生成部３０７から受ける。そして、ムーブインバッファ３０５は、キャッシュのロード命令で指定されたデータの物理アドレス及び格納先ウェイの情報を含むムーブイン要求を２次キャッシュ管理部１１２へ出力する。このムーブインバッファ３０５が、「制御部」の一例にあたる。そして、判定用フラグが、「判定用情報」の一例にあたる。さらに、ムーブイン要求が、「取得要求」の一例にあたる。
【００５１】
格納処理部３０８は、タグ管理部３８１及びデータ管理部３８２を有する。タグ管理部３８１は、ムーブインバッファ３０５から出力されたムーブイン要求に対する応答であるデータ格納要求及びロード命令で指定されたデータの入力を２次キャッシュ管理部１１２から受ける。以下では、ロード命令で指定されたデータを「対象データ」という。そして、格納処理部３０８は、取得したデータ格納要求が移動不要格納要求か移動付随格納要求かを判定する。
【００５２】
取得したデータ格納要求が移動不要格納要求の場合、タグ管理部３８１は、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをＬ１タグ３５２から取得する。そして、タグ管理部３８１は、キャッシュステートがＩステートであることを確認してプロトコル処理を実行した後、データ管理部３２８にデータの格納を依頼する。その後、タグ管理部３８１は、１次データキャッシュ３５１に新たに格納された対象データを表すタグを生成してＬ１タグ３５２に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてＳステートを登録する。
【００５３】
一方、取得したデータ格納要求が移動付随格納要求の場合、タグ管理部３８１は、格納先ウェイの判定用フラグの値をムーブインバッファ３０５から取得する。この移動付随格納要求が、「所定の種類の応答」及び「データ移動を要求する種類の応答」の一例にあたる。そして、タグ管理部３８１は、判定用フラグの値が１の場合、キャッシュステートがＭステートである可能性があるので、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをＬ１タグ３５２から取得する。そして、キャッシュステートがＭステートである場合、タグ管理部３８１は、データの退避をデータ管理部３８２に指示する。
【００５４】
その後データの退避が完了すると、タグ管理部３８１は、格納先ウェイにおける対象データを格納するブロックのＬ１タグ３５２を無効化する。次に、タグ管理部３８１は、２次キャッシュ管理部１１２から取得した対象データを格納先ウェイにおける格納先のブロックに格納する。さらに、タグ管理部３８１は、格納した対象データを表すタグを生成してＬ１タグ３５２に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてＳステートを登録する。
【００５５】
これに対して、判定用フラグの値が０の場合にはキャッシュステートがＭステートではないので、タグ管理部３８１は、格納先ウェイにおける対象データを格納するブロックのＬ１タグ３５２を無効化する。この判定用フラグの値が０の場合が、「判定用情報が、所定データが下位のキャッシュメモリ又は記憶装置に存在する状態を表す場合」の一例にあたる。そして、タグ管理部３８１は、データ管理部３２８にデータの格納を依頼する。その後、タグ管理部３８１は、格納した対象データを表すタグを生成してＬ１タグ３５２に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてＳステートを登録する。
【００５６】
データ管理部３８２は、データの退避の指示をタグ管理部３８１から受ける。そして、データ管理部３８２は、データ格納要求で指定された対象データの格納先のブロックの既存のデータを１次データキャッシュ３５１から読み出してムーブアウトバッファ３０９に退避させる。
【００５７】
また、データ管理部３８２は、データの格納の依頼をタグ管理部３８１から受ける。そして、データ管理部３８２は、２次キャッシュ管理部１１２から取得した対象データを格納先ウェイに格納する。
【００５８】
ムーブアウトバッファ３０９は、格納先ウェイにおける対象データを格納するブロックに存在した既存データの入力をデータ管理部３８２から受ける。その後、ムーブアウトバッファ３０９は、所定条件が満たされ１次キャッシュ管理部１０３により２次キャッシュ１２１へのライトバックが行われるまで、取得した既存データを保持する。
【００５９】
次に、図４を参照して、本実施例に係る１次キャッシュ管理部１０３によるロード命令の処理の流れについて説明する。図４は、１次キャッシュ管理部によるロード命令の処理のフローチャートである。
【００６０】
１次キャッシュ管理部１０３は、命令制御部１０１から発行されたロード命令を受信する（ステップＳ１）。
【００６１】
１次キャッシュ管理部１０３は、Ｌ１タグ３５２に格納されたタグの情報及びＴＬＢ３０４により特定された物理アドレスを用いてキャッシュヒットか否かを判定する（ステップＳ２）。
【００６２】
キャッシュヒットの場合（ステップＳ２：肯定）、１次キャッシュ管理部１０３は、取得したタグに対応するデータを１次データキャッシュ３５１から選択し、選択したデータを演算処理部１０２へ出力する（ステップＳ３）。
【００６３】
これに対して、キャッシュミスの場合（ステップＳ２：否定）、１次キャッシュ管理部１０３は、ムーブイン要求を２次キャッシュ管理部１１２へ送信する（ステップＳ４）。
【００６４】
その後、１次キャッシュ管理部１０３は、データ格納要求を２次キャッシュ管理部１１２から受信する（ステップＳ５）。
【００６５】
次に、１次キャッシュ管理部１０３は、受信したデータ格納要求が移動付随格納要求か否かを判定する（ステップＳ６）。
【００６６】
受信したデータ格納要求が移動付随格納要求でない、すなわち、移動不要格納要求の場合（ステップＳ６：否定）、１次キャッシュ管理部１０３は、データ置換なしの無効化処理を実行する（ステップＳ７）。
【００６７】
これに対して、移動付随格納要求の場合（ステップＳ６：肯定）、１次キャッシュ管理部１０３は、データ置換の可能性がある無効化処理を実行する（ステップＳ８）。
【００６８】
その後、１次キャッシュ管理部１０３は、データ格納要求に含まれるデータを１次キャッシュ３０１に登録し（ステップＳ９）、ステップＳ１へ戻る。
【００６９】
次に、図５を参照して、移動不要格納要求の場合の無効化処理の流れについて説明する。図５は、移動不要格納要求の場合の無効化処理のフローチャートである。図５に示すフローチャートは、図４におけるステップＳ７で実行される処理の一例にあたる。
【００７０】
格納処理部３０８のタグ管理部３８１は、２次キャッシュ管理部１１２から発行された移動不要格納要求を受理する（ステップＳ１０１）。
【００７１】
次に、タグ管理部３８１は、移動不要格納要求から対象データの格納先ウェイを取得する。そして、タグ管理部３８１は、格納先ウェイにおけるデータを格納するブロックのキャッシュステートをＬ１タグ３５２から読み出す（ステップＳ１０２）。
【００７２】
タグ管理部３８１は、読み出したキャッシュステートがＩステートであることを確認してプロトコルチェックを行う。その後、タグ管理部３８１は、無効化処理の完了を格納処理部３０８のデータ管理部３８２に通知する（ステップＳ１０３）。
【００７３】
次に、図６を参照して、移動付随格納要求の場合の無効化処理の流れについて説明する。図６は、移動付随格納要求の場合の無効化処理のフローチャートである。図６に示すフローチャートは、図４におけるステップＳ８で実行される処理の一例にあたる。
【００７４】
格納処理部３０８のタグ管理部３８１は、２次キャッシュ管理部１１２から発行された移動付随格納要求を受理する（ステップＳ２０１）。
【００７５】
次に、タグ管理部３８１は、移動付随格納要求で指定された格納先ウェイに対応する判定用フラグをムーブインバッファ３０５から読み出す（ステップＳ２０２）。
【００７６】
そして、タグ管理部３８１は、読み出した判定用フラグの値が１か否かを判定する（ステップＳ２０３）。判定用フラグが０の場合（ステップＳ２０３：否定）、格納処理部３０８は、処理をステップＳ２０８へ進ませる。
【００７７】
これに対して、判定用フラグが１の場合（ステップＳ２０３：肯定）、タグ管理部３８１は、移動不要格納要求で指定された格納先ウェイにおけるデータを格納するブロックのキャッシュステートをＬ１タグ３５２から読み出す（ステップＳ２０４）。
【００７８】
次に、タグ管理部３８１は、読み出したキャッシュステートを用いてＭＥＳＩのプロトコルチェックを行う（ステップＳ２０５）。
【００７９】
そして、タグ管理部３８１は、読み出したキャッシュステートがＭステートか否かを判定する（ステップＳ２０６）。読み出したキャッシュステートがＭステートでない場合（ステップＳ２０６：否定）、格納処理部３０８は、処理をステップＳ２０８へ進ませる。
【００８０】
これに対して、読み出したキャッシュステートがＭステートの場合（ステップＳ２０６：肯定）、タグ管理部３８１は、格納先ウェイの対象データを格納するブロックに存在するリプレースデータをムーブアウトバッファ３０９へ退避させる（ステップＳ２０７）。
【００８１】
その後、タグ管理部３８１は、Ｌ１タグ３５２の中の格納先ウェイの対象データを格納するブロックに対応するタグを無効化する（ステップＳ２０８）。
【００８２】
そして、タグ管理部３８１は、無効化処理の完了をデータ管理部３８２へ通知する（ステップＳ２０９）。
【００８３】
以上に説明したように、本実施例に係る１次キャッシュ管理部は、キャッシュミスが発生した場合に、２次キャッシュから送られたデータの格納先となるブロックのキャッシュステートがＭステートか否かを表す判定用フラグを設定して、ムーブイン要求を行う。その後、１次キャッシュ管理部は、ムーブイン要求に対する応答であるデータ格納要求を受信したときに、保持した判定用フラグを確認する。そして、判定用フラグがＭステート以外を表していれば、１次キャッシュ管理部は、Ｌ１タグに格納されたキャッシュステートの確認を行わずに、データを格納するブロックを無効化する。これにより、１次キャッシュ管理部は、キャッシュミスの際にＬ１タグに対してアクセスする回数を低減することができ、応答処理にかかる時間を短縮することができる。したがって、情報処理装置における１次キャッシュミス時の処理性能を向上させることができる。
【実施例２】
【００８４】
図７は、実施例２に係る１次キャッシュ管理部のブロック図である。本実施例に係る１次キャッシュ管理部１０３は、図２に示した実施例１の各部に加えて、ストア実行部３１０、ストアバッファ３１１及び判定部３１２を有する。本実施例に係る１次キャッシュ管理部１０３は、ストア命令の実行状態を考量して判定用フラグを設定することが実施例１と異なる。以下の説明では、実施例１と同様の各部の機能については説明を省略する。
【００８５】
Ｌ１タグ３５２は、キャッシュのストア命令を命令制御部１０１から受ける。そして、Ｌ１タグ３５２は、ストア命令で指定されたストアするデータのタグの情報をタグマッチ判定部３０３へ出力する。
【００８６】
ＴＬＢ３０４は、キャッシュのストア命令を命令制御部１０１から受ける。そして、ＴＬＢ３０４は、ストア命令で指定された論理アドレスを物理アドレスに変換してタグマッチ判定部３０３及びストアバッファ３１へ出力する。
【００８７】
タグマッチ判定部３０３は、ストアするデータのタグの情報の入力をＬ１タグ３５２から受ける。また、タグマッチ判定部３０３は、物理アドレスの入力をＴＬＢ３０４から受ける。そして、タグマッチ判定部３０３は、取得したタグ及び物理アドレスを用いてタグマッチの判定を行う。
【００８８】
タグマッチの場合、タグマッチ判定部３０３は、タグマッチしたブロックのウェイの情報及びキャッシュヒットしたことを表す情報をストアバッファ３１１へ出力する。さらに、タグマッチ判定部３０３は、ストア実行部３１０にタグマッチを通知する。
【００８９】
ストア実行部３１０は、ストア命令の入力を命令制御部１０１から受ける。そして、タグがマッチしなかった場合、ストア実行部３１０は、タグミスの通知をタグマッチ判定部３０３から受ける。この場合、ストア実行部３１０は、１次データキャッシュ３５１からデータを格納するブロックを選択して、選択したブロックにストア命令で指定されたデータを格納する。また、ストア実行部３１０は、格納したデータを表すタグ、有効を表すｖａｌｉｅｄ情報及びデータの格納先のブロックのキャッシュステートをＬ１タグ３５２に登録する。
【００９０】
一方、タグマッチの場合、ストア実行部３１０は、タグマッチの通知とともにタグマッチしたウェイの情報の入力をタグマッチ判定部３０３から受ける。そして、ストア実行部３１０は、ムーブインバッファ３０５に同じ物理アドレス及びウェイの情報を有するエントリが存在し、そのエントリの判定用フラグが０か否かを確認する。
【００９１】
同じ物理アドレス及びウェイの情報を有するエントリが存在しない場合、ストア実行部３１０は、ストアバッファ３１１に格納されたその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを１に設定する。そして、ストア実行部３１０は、１次データキャッシュ３５１及びＬ１タグ３５２に対してデータのストアを行う。
【００９２】
また、同じ物理アドレス及びウェイの情報を有するエントリが存在するが、判定用フラグが１の場合も同様に、ストア実行部３１０は、ストアバッファ３１１に格納されたその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを１に設定する。そして、ストア実行部３１０は、１次データキャッシュ３５１及びＬ１タグ３５２に対してデータのストアを行う。
【００９３】
これに対して、同じ物理アドレス及びウェイの情報を有するエントリが存在し、且つ、判定用フラグが０の場合、ストア実行部３１０は、ストアバッファが格納するその物理アドレス及びウェイの情報に対応するキャッシュヒットフラグを０に設定する。そして、ストア実行部３１０は、ストア処理の実行を待機する。その後、ストア実行部３１０は、ムーブインバッファ３０５の確認を繰り返えし、同じ物理アドレス及びウェイの情報を有するエントリが存在しない、または、判定用フラグが０となった後にストア処理を実行する。キャッシュヒットフラグが、「所定領域に対するデータの更新状況」を表す情報の一例にあたる。
【００９４】
ストアバッファ３１１は、物理アドレスの情報の入力をＴＬＢ３０４から受ける。また、ストアバッファ３１１は、タグマッチしたデータのウェイの情報及びキャッシュヒットを表す情報をタグマッチ判定部３０３から受ける。さらに、ストアバッファ３１１は、ストア実行部３１０からの指示にしたがい、アドレス情報及びウェイの情報に対応するキャッシュヒットフラグを設定する。
【００９５】
すなわち、ストアバッファ３１１のキャッシュヒットフラグは、既に同じ物理アドレス及びウェイに対するムーブイン要求が発行されており、且つ、判定用フラグが０であれば、０に設定される。また、ストアバッファ３１１のキャッシュヒットフラグは、同じ物理アドレス及びウェイに対するムーブイン要求が発行されていない場合、又は、同じ物理アドレス及びウェイに対するムーブイン要求が発行されているが判定用フラグが１であれば、１に設定される。
【００９６】
判定部３１２は、ロード命令が命令制御部１０１から出力されタグミスとなった場合、ムーブインバッファ３０５に格納された物理アドレス及び格納先ウェイの情報を取得する。次に、判定部３１２は、取得した物理アドレス及び格納先ウェイと同一の物理アドレス及び格納先ウェイのエントリがストアバッファ３１１に格納されているか否かを判定する。同一の物理アドレス及び格納先ウェイのエントリがストアバッファ３１１に格納されていない場合、判定部３１２は、フラグ設定可能の通知をフラグ生成部３０７に行う。
【００９７】
これに対して、同一の物理アドレス及び格納先ウェイのエントリがストアバッファ３１１に格納されている場合、判定部３１２は、そのエントリのキャッシュヒットフラグを確認する。キャッシュヒットフラグが１であれば、判定部３１２は、フラグ設定禁止の通知をフラグ生成部３０７に行う。
【００９８】
フラグ生成部３０７は、格納先ウェイの情報をリプレイスウェイ選択部３０６から取得する。そして、フラグ生成部３０７は、取得した格納先ウェイの情報を用いて格納先ウェイに含まれるブロックのキャッシュステートをＬ１タグ３５２から取得する。
【００９９】
取得したキャッシュステートがＭステートである場合、フラグ生成部３０７は、格納先ウェイに対応する判定用フラグを１に設定する。
【０１００】
一方、取得したキャッシュステートがＭステート以外の場合、フラグ生成部３０７は、判定部３１１からフラグ設定可能の通知を受けている場合、そのウェイに対応する判定用フラグを０に設定する。これに対して、判定部３１１からフラグ設定禁止の通知を受けている場合、フラグ生成部３０７は、そのウェイに対応する判定用フラグを１に設定する。その後、フラグ生成部３０７は、判定用フラグを対応するウェイの情報とともにムーブインバッファ３０５へ出力する。
【０１０１】
格納処理部３０８は、実施例１と同様の処理を行う。具体的には、取得したデータ格納要求が移動付随格納要求の場合、タグ管理部３８１は、格納先ウェイの判定用フラグの値をムーブインバッファ３０５から取得する。そして、タグ管理部３８１は、判定用フラグの値が１の場合、格納先ウェイにおける対象データを格納するブロックのキャッシュステートをＬ１タグ３５２から取得する。そして、キャッシュステートがＭステートである場合、タグ管理部３８１は、データの退避をデータ管理部３８２に指示する。データ管理部３８２によるデータの退避完了後、タグ管理部３８１は、格納先ウェイにおける対象データを格納するブロックのＬ１タグ３５２を無効化する。次に、タグ管理部３８１は、２次キャッシュ管理部１１２から取得した対象データの格納をデータ管理部３８２に指示する。さらに、タグ管理部３８１は、１次データキャッシュ３５１に格納された対象データを表すタグを生成してＬ１タグ３５２に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてＳステートを登録する。
【０１０２】
これに対して、判定用フラグの値が０の場合にはキャッシュステートがＭステートではないので、タグ管理部３８１は、格納先ウェイにおける対象データを格納するブロックのＬ１タグ３５２を無効化する。その後、タグ管理部３８１は、２次キャッシュ管理部１１２から取得した対象データの格納をデータ管理部３８２に指示する。さらに、タグ管理部３８１は、格納した対象データを表すタグを生成してＬ１タグ３５２に登録し、且つ、対象データを格納したウェイのブロックのキャッシュステートとしてＳステートを登録する。
【０１０３】
次に、図８及び９を参照して、本実施例に係る１次キャッシュ管理部１０３によるストア命令とロード命令とが競合した場合のＬ１タグ３５２の状態について説明する。図８は、ストア命令が先行する状態での競合時のＬ１タグの遷移を表す図である。図９は、ロード命令が先行する状態での競合時のＬ１タグの遷移を表す図である。図８及び９はいずれも図面に向かって下に進むにしたがい時間の経過を表す。処理Ｓはストア命令の処理を表す。また、処理Ｌはロード命令の処理を表す。
【０１０４】
ストア命令が先行する場合、図８に示すように、時刻Ｔ０で処理Ｓが開始される。この場合、ムーブインバッファ３０５にはエントリが格納されていないので、ストアバッファ３１１には、物理アドレスを表すインデックスＡ及びウェイの情報としてｗ０が登録されるとともに、キャッシュヒットフラグは１に設定される。そして、状態２０１のＬ１タグ２５２においてインデックスＡ及びｗ０に対応するブロックはＥステートであり、そのブロックに格納されたデータに対して処理Ｓによるストアが実行される。
【０１０５】
そして、処理Ｓが実行中の時刻Ｔ１において、ロード命令が発行され処理Ｌが開始される。このとき、ムーブインバッファ３０５には、インデックスＡ及びｗ０が登録される。そして、判定部３１２は、ストアバッファ３１１を確認して、ムーブインバッファ３０５に格納されたインデックスＡ及びｗ０を有するエントリを特定する。さらに、判定部３１２は、特定したエントリのキャッシュヒットフラグが１であることを確認して、フラグ設定禁止をフラグ生成部３０７に通知する。フラグ生成部３０７は、ムーブインバッファ３０５におけるインデックスＡ及びｗ０に対応する判定用フラグを１に設定する。
【０１０６】
処理Ｓが実行されることで、Ｌ１タグ２５２におけるインデックスＡ及びｗ０に対応するブロックに対してストアが行われ、そのブロックは状態２０２に示すようにＥステートからＭステートに遷移する。そして、時刻Ｔ２でストア命令が完了すると、ロード命令が開始される。この場合、ムーブインバッファ３０５に格納された判定用フラグは１であるので、タグ管理部３８１は、データ管理部３８２にインデックスＡ及びｗ０に対応するブロックのデータをムーブアウトバッファ３０９に退避させる。その後、タグ管理部３８１は、Ｌ１タグ３５２のインデックスＡ及びｗ０のタグを無効化する。これにより、Ｌ１タグ３５２は状態２０３となる。
【０１０７】
このように、本実施例に係る１次キャッシュ管理部１０３は、既にストア処理が実行されている状態で、ロード命令が発行された場合には、判定用フラグを１に設定して、Ｍステートの場合のロード処理を実行する。これにより、ストア処理によりデータが更新されＥステートだったブロックがＭステートに遷移した場合にも確実にデータの退避を行うことができる。
【０１０８】
次にロード命令が先行する場合について説明する。図９に示すように、Ｌ１タグ３５２は、状態２１１で示すように、インデックスＡ及びｗ０で表されるブロックはＥステートである。そして、ストア命令が発行されていないので、ストアバッファ３１１は状態２１６のようにインデックスＡ及びｗ０のエントリを有さない。
【０１０９】
その後、時刻Ｔ３で処理Ｌが開始される。この場合、ムーブインバッファ３０５には、インデックスＡ及びｗ０が登録される。そして、判定部３１１は、インデックスＡ及びｗ０が登録されたエントリがストアバッファ３１１に存在しないことを確認する。そこで、判定部３１１は、フラグ生成部３０７にフラグ設定可能の通知を行う。フラグ生成部３０７は、フラグ設定可能の通知を受けて、状態２１４に示すようにムーブインバッファ３０５におけるインデックスＡ及びｗ０に対応する判定用フラグを１に設定する。
【０１１０】
その後、時刻Ｔ４で処理Ｓが開始される。この場合、ムーブインバッファ３０５には既にインデックスＡ及びｗ０が登録されているので、ストアバッファ３１１には、インデックスＡ及びｗ０が登録されるとともに、状態２１７に示すようにキャッシュヒットフラグは０に設定される。キャッシュヒットフラグが０であるため、ストア実行部３１０は、データのストアの実行を待機する。
【０１１１】
その後、処理ＬによりＬ１タグ３５２が有するキャッシュステートの確認を行わずにインデックスＡ及びｗ０に対応するタグが無効化される。そして、時刻Ｔ５で処理Ｌが完了し、状態２１２に示すように、Ｌ１タグ３５２のインデックスＡ及びｗ０で表されるブロックはＩステートに遷移する。さらに、ムーブインバッファ３０５からインデックスＡ及びｗ０のエントリが削除される。ムーブインバッファ３０５からインデックスＡ及びｗ０のエントリが削除されると、状態２１８に示すように、ストアバッファ３１１におけるインデックスＡ及びｗ０に対応するキャッシュヒットフラグが１に設定される。キャッシュヒットフラグが１になることで、ストア実行部３１０は、データのストアの実行を開始する。すなわち、時刻Ｔ４から時刻Ｔ５の間、ストア処理は待機させられる。
【０１１２】
その後、処理Ｓが完了すると、インデックスＡ及びｗ０で表されるブロックはデータが更新されるので、Ｌ１タグ３５２におけるインデックスＡ及びｗ０に対応するキャッシュステートは、状態２１３のようにＭステートに遷移する。
【０１１３】
ここで、図１０を参照して、ストアバッファ３１１を用いない場合のＬ１タグ２３２の遷移について説明する。図１０は、ストアバッファを用いない場合のＬ１タグの遷移を表す図である。
【０１１４】
この場合、図１０に示すように、Ｌ１タグ３５２は、状態２２１で示すように、インデックスＡ及びｗ０で表されるブロックのキャッシュステートとしてＥステートを保持する。そして、時刻Ｔ６で処理Ｌが開始される。この場合、ムーブインバッファ３０５には、インデックスＡ及びｗ０に対応する判定用フラグとして０が設定される。
【０１１５】
その後、時刻Ｔ７で処理Ｓが開始される。この場合、処理Ｓの待機は行われず、インデックスＡ及びｗ０で表されるブロックのデータが更新される。これにより、状態２２２に示すように、Ｌ１タグ３５２のインデックスＡ及びｗ０で表されるブロックはＭステートに遷移する。
【０１１６】
しかし、ムーブインバッファ３０５の判定用フラグは０であるため、タグ管理部３８１は、Ｌ１タグ３５２が有するインデックスＡ及びｗ０で表されるブロックのキャッシュステートを確認せずにインデックスＡ及びｗ０に対応するタグを無効化してしまう。この場合、Ｍステートのブロックに格納されたデータの退避が行われないため、データ化けが発生してしまう。
【０１１７】
これに対して、本実施例に係る１次キャッシュ管理部１０３は、既にロード処理が実行されている状態で、ストア命令が発行された場合には、ロード処理が完了するまでストア命令を待機させ、その後ストア処理を実行する。これにより、ロード処理の実行中にストア処理によりブロックがＭステートに遷移することを回避でき、データの退避を確実に行うことでデータ化けの発生を抑えることができる。
【０１１８】
さらに、以上の説明では、１次キャッシュ及び２次キャッシュを有する階層キャッシュにおいて、１次キャッシュでキャッシュミスが発生した場合の処理について説明した。ただし、各実施例で説明した機能は、階層キャッシュのどの階層に用いることも可能であり、また、階層キャッシュの階層の数も特に制限は無い。
【符号の説明】
【０１１９】
１  情報処理装置
１０  システムボード
１１  ＣＰＵ
１２  メモリ
２０  ＩＯユニット
３０  ディスクユニット
１００  コア
１０１  命令制御部
１０２  演算処理部
１０３  １次キャッシュ管理部
１１２  ２次キャッシュ管理部
１２１  ２次キャッシュ
３０１  １次キャッシュ
３０２  セレクタ
３０３  タグマッチ判定部
３０４  ＴＬＢ
３０５  ムーブインバッファ
３０６  リプレイスウェイ選択部
３０７  フラグ生成部
３０８  格納処理部
３０９  ムーブアウトバッファ
３１０  ストア実行部
３１１  ストアバッファ
３１２  判定部
３５１  １次データキャッシュ
３５２  Ｌ１タグ
３８１  タグ管理部
３８２  データ管理部
【図１】
2020003959.tif 000003
【図２】
2020003959.tif 000004
【図３】
2020003959.tif 000005
【図４】
2020003959.tif 000006
【図５】
2020003959.tif 000007
【図６】
2020003959.tif 000008
【図７】
2020003959.tif 000009
【図８】
2020003959.tif 000010
【図９】
2020003959.tif 000011
【図１０】
2020003959.tif 000012