(57)【要約】【課題】共有メモリ環境の情報処理装置において、キャッシュメモリから主記憶装置としての共有メモリへのデータの書き戻しを、必要に応じて速やかに行えるようにする。【解決手段】一次キャッシュメモリと、一次キャッシュメモリに対するストア要求を発行する命令制御部と、ストア要求を受けてデータを一次キャッシュメモリに書き込むパイプライン処理部と、特定のデータに係るストア要求の出力期間にパイプライン処理部から一次キャッシュメモリに出力されたアドレスを取得してエントリに保持し、その出力期間が終了するとエントリに保持しているアドレスが示すデータをメモリに書き込む書き戻し要求を発行するバッファ部と、バッファ部からの書き戻し要求を受けて一次キャッシュメモリのデータをメモリに書き込む二次キャッシュメモリとを有し、特定のデータを一次キャッシュメモリからメモリに速やかに書き戻す。【選択図】図２
2014186521.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと、
データを前記キャッシュメモリに書き込むストア要求を発行するとともに、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力する命令制御部と、
前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力しデータを書き込む第１の書き込み処理部と、
複数のエントリを有し、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得して前記エントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを主記憶装置に書き込む書き戻し要求を発行するバッファ部と、
前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込む第２の書き込み処理部とを有することを特徴とする演算処理装置。
【請求項２】
前記バッファ部は、前記特定のデータに係る前記ストア要求の出力期間中に複数のエントリに空きがなくなった場合には、前記エントリに保持しているアドレスが示すデータの前記書き戻し要求を発行することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記バッファ部は、取得した前記アドレスと前記エントリに保持しているアドレスと同一である場合には、取得した前記アドレスを保持しないことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
それぞれ演算を行う複数の演算処理装置と、
前記複数の演算処理装置に接続される主記憶装置とを有し、
前記演算処理装置の各々は、
キャッシュメモリと、
データを前記キャッシュメモリに書き込むストア要求を発行するとともに、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力する命令制御部と、
前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力しデータを書き込む第１の書き込み処理部と、
複数のエントリを有し、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得して前記エントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを前記主記憶装置に書き込む書き戻し要求を発行するバッファ部と、
前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込む第２の書き込み処理部とを有することを特徴とする情報処理装置。
【請求項５】
演算処理装置が有する命令制御部が、データをキャッシュメモリに書き込むストア要求を発行し、
前記演算処理装置が有する命令制御部が、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力し、
前記演算処理装置が有する第１の書き込み処理部が、前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力してデータを書き込み、
前記演算処理装置が有するバッファ部が、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得してエントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを主記憶装置に書き込む書き戻し要求を発行し、
前記演算処理装置が有する第２の書き込み処理部が、前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込むことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置、及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
大規模なサーバなどのように多数のＣＰＵ（Central Processing Unit）を備えた情報処理装置が増えている。多数のＣＰＵを備えた装置において、あるＣＰＵからの他のＣＰＵに係るメモリに対してのデータの読み出しや書き込みではＣＰＵ間の通信が発生し性能低下の一因となる。この性能低下を改善するために、複数のＣＰＵが同じメモリを主記憶装置として用いる共有メモリの技術が提案されている。
【０００３】
また、ＣＰＵのキャッシュメモリから主記憶装置であるメモリへデータの書き込みを行う方式には、ライトバック方式及びライトスルー方式がある。ライトバック方式は、キャッシュメモリと主記憶装置との間でのデータの一致性が一時的に損なわれることがあるが、メモリアクセスを高速に実行することができる。ライトスルー方式は、キャッシュメモリと主記憶装置との間でのデータの一致性が常に保たれる反面、メモリアクセスを高速に実行することが難しくなる。
【０００４】
キャッシュメモリから主記憶装置であるメモリへデータの書き込みをライトバック方式で行うか又はライトスルー方式で行うかを制御する装置が提案されている。例えば、高速なアクセスを要求される一方の領域についてはライトバック方式でデータの書き込みを行い、データの一致性を要求される他方の領域についてはライトスルー方式でデータの書き込みを行うように、アクセスアドレスに応じて制御する装置が提案されている（例えば、特許文献１参照）。また、例えばキャッシュライン上に格納されているデータブロックのタグ情報に応じて、ライトバック方式でデータの書き込みを行うかライトスルー方式でデータの書き込みを行うかを制御する装置が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−８３２１５号公報
【特許文献２】特開平１１−２８２７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
共有メモリ環境では、前述のように複数のＣＰＵが同じメモリを使用することができ、ＣＰＵ間通信の発生による性能低下を抑制することが可能である。また、ライトバック方式でＣＰＵのキャッシュメモリから主記憶装置であるメモリへデータの書き込みを行うと、メモリアクセスを高速に実行することが可能になる。
【０００７】
しかし、共有メモリ環境において、ライトバック方式でキャッシュメモリから主記憶装置であるメモリへデータの書き込みを行うようにすると、データによってはメモリへ書き戻されるまでに長い期間キャッシュメモリに保持されていることとなる。そのため、ＣＰＵが故障した際、そのＣＰＵが有するキャッシュメモリから共有メモリへのデータの書き戻しが完了していないと、複数のＣＰＵに影響が及んで情報処理装置全体が停止することがある。
【０００８】
１つの側面では、本発明は、複数の演算処理装置が主記憶装置としてのメモリを共有する情報処理装置において、演算処理装置が有するキャッシュメモリから、共有される主記憶装置としてのメモリへのデータの書き戻しを、必要に応じて速やかに行えるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
演算処理装置の一態様は、演算処理装置が有するキャッシュメモリに対するストア要求を発行するとともに、特定のデータに係るストア要求の出力期間を示す第１の信号を出力する命令制御部と、命令制御部からのストア要求を受けて、当該ストア要求のアドレス及びデータをキャッシュメモリに出力しデータを書き込む第１の書き込み処理部と、バッファ部と、バッファ部からの書き戻し要求を受けて、当該書き戻し要求に応じたキャッシュメモリのデータを主記憶装置に書き込む第２の書き込み処理部とを有する。バッファ部は、特定のデータに係るストア要求の出力期間である場合に、第１の書き込み処理部からキャッシュメモリに出力されたアドレスを取得してエントリに保持し、当該出力期間が終了すると、エントリに保持しているアドレスが示すデータを主記憶装置に書き込む書き戻し要求を発行する。
【発明の効果】
【００１０】
複数の演算処理装置が主記憶装置としてのメモリを共有する情報処理装置において、演算処理装置が有するキャッシュメモリに特定のデータの書き込みを行った後に、キャッシュメモリに書き込まれた特定のデータを速やかに主記憶装置に書き戻すことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態における演算処理装置を有する情報処理装置の構成例を示す図である。
【図２】本実施形態における情報処理装置のストア処理に係る構成の例を示す図である。
【図３】本実施形態におけるバッファ部の構成例を示す図である。
【図４】本実施形態におけるバッファについて説明するための図である。
【図５】本実施形態においてバッファに格納される情報の例を示す図である。
【図６Ａ】本実施形態におけるトレースフラッシュ処理の例を示すフローチャートである。
【図６Ｂ】本実施形態におけるトレースフラッシュ処理の例を示すフローチャートである。
【図７】本実施形態におけるキャッシュストア処理の例を示すフローチャートである。
【図８】本実施形態における単発フラッシュ処理の例を示すフローチャートである。
【図９】本実施形態におけるメモリ書き戻し処理の例を示すフローチャートである。
【図１０】本実施形態における情報処理装置の動作例を示すタイミングチャートである。
【図１１】本実施形態における情報処理装置の動作例を示すタイミングチャートである。
【図１２】本実施形態におけるバッファ部の動作例を示すタイミングチャートである。
【図１３】本実施形態におけるバッファ部の動作例を示すタイミングチャートである。
【図１４】本実施形態におけるバッファ部の動作例を示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
【００１３】
図１は、本発明の一実施形態における演算処理装置としてのＣＰＵ（Central Processing Unit）を有する情報処理装置の構成例を示すブロック図である。本実施形態における情報処理装置は、複数のＣＰＵが同じメモリを主記憶装置として用いる共有メモリの技術を適用した情報処理装置であり、複数のＣＰＵ１１０と、主記憶装置としてのメモリ１２０とがバス１３０を介して接続されている。また、本実施形態における情報処理装置は、ライトバック方式でＣＰＵ１１０のキャッシュメモリから主記憶装置であるメモリ１２０へデータの書き込みを行う。
【００１４】
前述したように、ライトバック方式でキャッシュメモリから主記憶装置であるメモリへデータの書き込みを行う場合、データによってはメモリに書き戻されるまでに長い期間キャッシュメモリに保持されていることとなる。そのため、共有メモリ環境において、あるＣＰＵが故障した際、そのＣＰＵが有するキャッシュメモリから共有メモリへのデータの書き戻しが完了していないと、複数のＣＰＵに影響が及んで情報処理装置全体が停止することがある。そこで、本実施形態における情報処理装置では、キャッシュメモリに保持されたデータの共有メモリへの書き戻しを、通常はライトバック方式で行い、必要に応じて本実施形態においてトレースフラッシュ処理と呼ぶ処理によって書き戻しを速やかに行えるようにする。
【００１５】
ＣＰＵ１１０の各々は、コア１１１と、主記憶装置であるメモリ１２０に格納されているデータブロックを保持する二次（Ｌ２（Ｌｅｖｅｌ−２））キャッシュメモリ１１５とを有する。本実施形態におけるＣＰＵ１１０では、２つのコア１１１が二次キャッシュメモリ１１５を共有している。なお、図１においては、各ＣＰＵ１１０が２つのコア１１１を有する例を示しているが、ＣＰＵ１１０が有するコア１１１の数は任意である。また、各コア１１１に対して二次キャッシュメモリ１１５をそれぞれ設けるようにしても良い。
【００１６】
コア１１１の各々は、命令制御部１１２、一次（Ｌ１（Ｌｅｖｅｌ−１））キャッシュメモリ部１１３、及びバッファ部１１４を有する。命令制御部１１２は、主記憶装置等から読み出した命令を解釈して各種の処理要求を発行する。命令制御部１１２が発行する処理要求には、データの書き込みを行うストア要求や、データの読み出しを行うロード要求や、図示しない演算器等の各機能部に対する演算処理要求などがある。一次キャッシュメモリ部１１３は、処理の実行の際に使用するデータや処理結果のデータ等を保持する。バッファ部１１４は、トレースフラッシュ処理に係る情報（書き込み先を示すアドレス等）を取得して保持するとともに、トレースフラッシュ処理の実行を制御する。
【００１７】
図２は、本実施形態における情報処理装置の構成例を示す図であり、メモリ１２０へデータの書き込みを行うストア処理（トレースフラッシュ処理を含む）に係る構成を示している。この図２において、図１に示した構成要素と同一の構成要素には同一の符号を付している。
【００１８】
命令制御部１１２は、ソフトウェア（プログラム側）からのデータのストア指示Ｓ１１を受けると、一次キャッシュメモリ部１１３にストア要求Ｓ１３を発行する。また、命令制御部１１２は、トレースフラッシュ処理によって書き込みを行う特定のデータについてのストア指示Ｓ１１がなされる期間であるか否かを示す情報Ｓ１２をソフトウェアから受けて、情報Ｓ１２に応じて出力する信号ＲＥＣ、ＦＬＡＳＨを制御する。トレースフラッシュ処理によって書き込みを行う特定のデータには、複数のＣＰＵやアプリケーションソフト等で共用されるデータなどが含まれ、例えばデータベースソフトウェアにおいて利用されるデータベース内のデータが含まれる。
【００１９】
命令制御部１１２は、情報Ｓ１２がトレースフラッシュ処理によって書き込みを行う特定のデータについてのストア指示Ｓ１１がなされる期間であることを示す場合には、特定のデータに係るストア要求の出力期間であることを示す信号ＲＥＣをアサートする（本例ではハイレベル（“１”）にする）。また、命令制御部１１２は、アサートされている信号ＲＥＣをネゲートするときに、信号ＦＬＡＳＨをパルス状にアサートする（本例ではハイレベル（“１”）にする）。
【００２０】
すなわち、命令制御部１１２は、トレースフラッシュ処理対象のデータのストア処理が開始されるときに、ネゲートされている信号ＲＥＣをアサートし、トレースフラッシュ処理対象のデータのストア処理が終了されるときに、アサートされている信号ＲＥＣをネゲートする。また、命令制御部１１２は、トレースフラッシュ処理対象のデータのストア処理が終了され、トレースフラッシュ処理によりメモリへのデータ書き戻しを開始させるときに、信号ＦＬＡＳＨをパルス状にアサートする。
【００２１】
一次キャッシュメモリ部１１３は、パイプライン処理部２０１及び一次（Ｌ１（Ｌｅｖｅｌ−１））キャッシュメモリ２０２を有する。第１の書き込み処理部としてのパイプライン処理部２０１は、命令制御部１１２からのストア要求Ｓ１３に応じて、一次キャッシュメモリ２０２にデータを書き込むキャッシュストア処理を実行する。キャッシュストア処理では、パイプライン処理部２０１が、ストア要求されたデータＳＤ１及び書き込み先を示すアドレスＳＡ１を一次キャッシュメモリ２０２に出力する。一次キャッシュメモリ２０２は、ストア要求のアドレスＳＡ１に対応する領域（エントリ）にデータＳＤ１及びタグ情報を登録し保持する。
【００２２】
バッファ部１１４は、バッファ制御部２０３及びバッファ２０４を有する。バッファ制御部２０３は、トレースフラッシュ処理に係る制御を行う。バッファ制御部２０３は、信号ＲＥＣがアサートされているとき、一次キャッシュメモリ部１１３においてパイプライン処理部２０１から一次キャッシュメモリ２０２に出力されるストア要求のアドレスＳＡ１を取得してバッファ２０４が有するエントリに登録し保持する。バッファ２０４は、ストア要求のアドレスＳＡ１が登録される複数のエントリを有する。
【００２３】
バッファ制御部２０３は、バッファ２０４が有するエントリに空きがなくなった場合、すなわちすべてのエントリが有効になった場合に、一次キャッシュメモリ部１１３のパイプライン処理部２０１に対して処理を停止させるためのストア抑止信号Ｓ１４を出力する。また、バッファ制御部２０３は、信号ＦＬＡＳＨがアサートされたとき、又はバッファ２０４が有するすべてのエントリが有効になったときに、二次キャッシュメモリ１１５にメモリ書き戻し要求Ｓ１５を発行する。
【００２４】
第２の書き込み処理部としての二次キャッシュメモリ１１５は、メモリ書き戻し要求を受けて、データのメモリ１２０への書き戻し（書き込み）を行う。二次キャッシュメモリ１１５は、メモリ書き戻し要求により指示されたアドレスが示すデータの取得要求Ｓ１６を一次キャッシュメモリ２０２に対して発行し、それに対する応答として送信されたデータＳＤ２を受信する。そして、二次キャッシュメモリ１１５は、受信したデータＳＤ２で自らのメモリ内容を更新し、書き込みデータＳＤ３としてメモリ１２０へ出力するとともに、メモリ書き戻し指示Ｓ１７をメモリ１２０へ出力する。こうすることで、メモリ書き戻し要求により指示されたアドレスに対応するメモリ１２０内の記憶領域にデータＳＤ３が書き込まれる。
【００２５】
メモリ１２０へのデータＳＤ３の書き込みが完了すると、メモリ１２０から二次キャッシュメモリ１１５に書き戻し終了Ｓ１８が通知される。二次キャッシュメモリ１１５は、メモリ１２０からの書き戻し終了Ｓ１８の通知を受けると、一次キャッシュメモリ２０２に書き戻し終了を通知する。ここで、二次キャッシュメモリ１１５は、バッファ部１１４からメモリ書き戻し要求Ｓ１５を受けた場合には、メモリ１２０からの書き戻し終了Ｓ１８の通知を受けると、さらにバッファ部１１４に書き戻し終了Ｓ１９を通知する。そして、書き戻し終了Ｓ１９の通知を受けたバッファ部１１４は、ソフトウェアに対してトレースフラッシュ処理の終了Ｓ２０を通知する。
【００２６】
図３は、本実施形態におけるバッファ部１１４の構成例を示す図である。バッファ部１１４は、バッファ３００、記憶回路３１１、３２１、セレクタ３１２、３２２、加算回路３１３、３２３、論理積演算回路（ＡＮＤ回路）３１４、３１５、３２４、セレクタ３３１、カウンタ３３２、及び比較回路３３３を有する。
【００２７】
バッファ３００は、トレースフラッシュ処理によって書き込みを行う特定のデータの書き込み先を示すアドレスを保持するバッファであり、複数のエントリ（ＴＦＢ）３０１−０〜３０１−７を有する。各エントリ（ＴＦＢ）３０１−０〜３０１−７には、図５に一例を示すように、当該エントリの情報が有効であるか無効であるかを示すバリッドビット（ｖａｌｉｄ）、及びストア要求のアドレス（ｄａｔａ）が格納される。エントリ（ＴＦＢ）３０１−０〜３０１−７は、対応する制御信号ＳＥＬ０〜ＳＥＬ７がアサートされているときには入力される信号ｓａｄｄにより値を更新し、ネゲートされているときには値は格納されない。信号ｓａｄｄは、ストア要求のアドレスを示すアドレス信号である。なお、図３においては、エントリ（ＴＦＢ）３０１−０〜３０１−７の８つのエントリを有するバッファ３００を一例として示しているが、エントリの数は任意である。
【００２８】
記憶回路３１１は、次にストア要求のアドレスを格納する格納先エントリの番号を示す信号Ｉｐｔｒを記憶して出力する。信号Ｉｐｔｒは、格納先エントリを示す入力ポインタであり、本実施形態では４ビットとして下位３ビットがエントリ（ＴＦＢ）３０１−０〜３０１−７の番号を示すものとする。記憶回路３１１から出力された信号Ｉｐｔｒは、セレクタ３１２及びＡＮＤ回路３１５に入力されるとともに、値を１増加させる加算回路３１３を介してセレクタ３１２に入力される。なお、本実施形態では、加算回路３１３は、入力される信号Ｉｐｔｒの値が“１１１１ｂ”（末尾のｂは２進数表記であることを示す、以下においても同様）である場合には値“００００ｂ”を出力する。
【００２９】
ＡＮＤ回路３１４は、信号ｓｔｏｒｅ、ｒｅｃｏｒｄ、及び／ｆｕｌｌ（／は反転信号であることを示す、以下においても同様）が入力され、その演算結果を出力する。ここで、信号ｓｔｏｒｅは、一次キャッシュメモリに対してデータを書き込むキャッシュストア処理を行うことを示す信号である。信号ｒｅｃｏｒｄは、図２に示した命令制御部１１２から出力される信号ＲＥＣであり、トレースフラッシュ処理によって書き込みを行う特定のデータについてのキャッシュストア処理の開始及び終了（キャッシュストア処理要求の出力期間）を示す信号である。信号ｆｕｌｌは、エントリ（ＴＦＢ）３０１−０〜３０１−７のすべてが有効であることを示す信号である。
【００３０】
セレクタ３１２は、記憶回路３１１からの出力又は加算回路３１３の出力の一方をＡＮＤ回路３１４の出力に応じて選択して記憶回路３１１に出力する。セレクタ３１２は、ＡＮＤ回路３１４の出力が“０”の場合には記憶回路３１１からの出力を選択し、ＡＮＤ回路３１４の出力が“１”の場合には加算回路３１３からの出力を選択する。したがって、有効でないエントリ（ＴＦＢ）３０１−０〜３０１−７が存在し、かつトレースフラッシュ処理対象のデータのキャッシュストア処理である場合に、信号Ｉｐｔｒが示す値が“１”増加し、そうでない場合には信号Ｉｐｔｒが示す値が保持される。
【００３１】
ＡＮＤ回路３１５は、記憶回路３１１から出力された信号Ｉｐｔｒ及び信号ｓｔｏｒｅが入力され、その演算結果を制御信号ＳＥＬ０−ＳＥＬ７として出力する。つまり、ＡＮＤ回路３１５は、信号ｓｔｏｒｅが“１”、すなわち一次キャッシュメモリに対するキャッシュストア処理を行う場合に、信号Ｉｐｔｒの下位３ビットに応じて制御信号ＳＥＬ０−ＳＥＬ７のうちの１つをアサートする。また、ＡＮＤ回路３１５は、信号ｓｔｏｒｅが“０”、すなわちキャッシュストア処理を行わない場合には、すべての制御信号ＳＥＬ０−ＳＥＬ７をネゲートする。
【００３２】
なお、ストア要求のアドレスと有効なエントリ（ＴＦＢ）３０１−０〜３０１−７に格納されているアドレスとが一致するか否かを示す信号をＡＮＤ回路３１４、３１５に入力するようにしても良い。このようにした場合には、ストア要求のアドレスとすでにエントリに格納されているアドレスとが一致する場合に、ストア要求のアドレスがエントリ（ＴＦＢ）３０１−０〜３０１−７に登録されることを抑止し、複数のエントリに同じアドレスが登録されることを防止することができる。
【００３３】
記憶回路３２１は、次に二次キャッシュメモリに書き戻すデータのアドレスが格納されているエントリの番号を示す信号Ｏｐｔｒを記憶して出力する。信号Ｏｐｔｒは、格納されているアドレスを次に出力するエントリを示す出力ポインタであり、本実施形態では４ビットとして下位３ビットがエントリ（ＴＦＢ）３０１−０〜３０１−７の番号を示すものとする。記憶回路３２１から出力された信号Ｏｐｔｒは、セレクタ３２２及び３３１に入力されるとともに、値を１増加させる加算回路３２３を介してセレクタ３２２に入力される。なお、本実施形態では、加算回路３２３は、入力される信号Ｏｐｔｒの値が“１１１１ｂ”である場合には値“００００ｂ”を出力する。
【００３４】
ＡＮＤ回路３２４は、信号Ｌ２ｒｅｑ、ｔｒｃｆｌ、及び／ｅｍｐｔｙが入力され、その演算結果を出力する。ここで、信号Ｌ２ｒｅｑは、二次キャッシュメモリに対してデータの書き戻しを要求することを示す信号である。信号ｔｒｃｆｌは、信号Ｌ２ｒｅｑが出力された要因が、（１）信号ｆｕｌｌがアサートされた場合、（２）信号ｒｅｃｏｅｄがトレースフラッシュ処理対象のデータについてのキャッシュストア処理の終了を示した場合、（３）ソフトウェアの指示である場合の何れかである場合にアサートされる信号である。言い換えれば、信号ｔｒｃｆｌは、メモリ書き戻し処理が要求される場合にアサートされる信号である。信号ｅｍｐｔｙは、エントリ（ＴＦＢ）３０１−０〜３０１−７のうちに有効なエントリがないことを示す信号である。
【００３５】
セレクタ３２２は、記憶回路３２１からの出力又は加算回路３２３の出力の一方をＡＮＤ回路３２４の出力に応じて選択して記憶回路３２１に出力する。セレクタ３２２は、ＡＮＤ回路３２４の出力が“０”の場合には記憶回路３２１からの出力を選択し、ＡＮＤ回路３２４の出力が“１”の場合には加算回路３２３からの出力を選択する。したがって、有効なエントリ（ＴＦＢ）３０１−０〜３０１−７が存在し、かつトレースフラッシュ処理での二次キャッシュメモリへのデータの書き戻しが要求される場合に、信号Ｏｐｔｒが示す値が“１”増加し、そうでない場合には信号Ｏｐｔｒが示す値が保持される。
【００３６】
セレクタ３３１は、エントリ（ＴＦＢ）３０１−０〜３０１−７のうちから信号Ｏｐｔｒに応じて１つのエントリ（ＴＦＢ）を選択し、そのエントリに格納された値を信号Ｌ２ｒａｄｄとして出力する。信号Ｌ２ｒａｄｄは、トレースフラッシュ処理によって二次キャッシュメモリへのデータの書き戻しを要求するときの書き込み先を示すアドレス信号である。
【００３７】
カウンタ３２２は、バッファ部１１４において、信号Ｌ２ｒａｄｄが出力されたときにカウント値を１増加させ、信号Ｌ２ｅｎｄが入力されたときにカウント値を１減少させる。信号Ｌ２ｅｎｄは、二次キャッシュメモリがトレースフラッシュ処理対象のデータのメモリへの書き戻しが正常終了したことを示す信号である。なお、信号Ｌ２ｅｒｒは、二次キャッシュメモリがトレースフラッシュ処理対象のデータのメモリへの書き戻しが異常終了したことを示す信号である。つまり、トレースフラッシュ処理によるデータの書き戻しが正常終了した場合には、カウンタ３２２のカウント値は０になり、異常終了した場合には、カウンタ３２２のカウント値は０にならない。カウンタ３２２は、カウント値に基づいてトレースフラッシュ処理が正常終了したか異常終了したかを判断し、正常終了したと判断した場合には信号ＥＮＤを出力し、異常終了したと判断した場合には信号ＥＲＲＯＲを出力する。
【００３８】
比較回路３３３は、記憶回路３１１から出力された信号Ｉｐｔｒと記憶回路３２１から出力された信号Ｏｐｔｒとを比較し、比較結果に基づいて信号ｆｕｌｌ、ｅｍｐｔｙを出力する。図４（Ａ）に示すように、エントリ（ＴＦＢ０）３０１−０及びエントリ（ＴＦＢ１）３０１−１に格納されているデータが有効であるとき、信号Ｉｐｔｒが示す値は“００１０ｂ”であり、信号Ｏｐｔｒが示す値は“００００ｂ”である。このような通常状態（フル状態でもなくエンプティ状態でもない）である場合には、比較回路３３３は、信号ｆｕｌｌ、ｅｍｐｔｙともにネゲートする。なお、図４（Ａ）〜図４（Ｃ）において、信号Ｉｐｔｒ、Ｏｐｔｒは時計回りに進行するものとし、信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値を信号名とともに示している。
【００３９】
以降、エントリ（ＴＦＢ２）３０１−２からエントリ（ＴＦＢ７）３０１−７にデータが順次格納されていき、信号Ｉｐｔｒが１周すると、信号Ｉｐｔｒの最上位ビットの値が“１ｂ”になる。信号Ｏｐｔｒの最上位ビットの値が“０ｂ”の状態で、信号Ｉｐｔｒ、Ｏｐｔｒが示すエントリの番号、すなわち信号Ｉｐｔｒ、Ｏｐｔｒの下位３ビットの値が同じである場合には、図４（Ｂ）に示すようにすべてのエントリ（ＴＦＢ）３０１−０〜３０１−７が有効となり、フル状態となる。つまり、信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値が異なり、下位３ビットの値が同じである場合には、フル状態となり、比較回路３３３は信号ｆｕｌｌをアサートする。
【００４０】
また、信号Ｉｐｔｒ、Ｏｐｔｒがともに１周すると、信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値が“１ｂ”になる。このように信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値が同じ状態で、信号Ｉｐｔｒ、Ｏｐｔｒが示すエントリの番号、すなわち信号Ｉｐｔｒ、Ｏｐｔｒの下位３ビットの値が同じである場合には、図４（Ｃ）に示すようにすべてのエントリ（ＴＦＢ）３０１−０〜３０１−７が無効となり、エンプティ状態となる。つまり、信号Ｉｐｔｒ、Ｏｐｔｒの値が同じである場合には、エンプティ状態となり、比較回路３３３は信号ｅｍｐｔｙをアサートする。
【００４１】
次に、本実施形態における情報処理装置の動作について説明する。図６Ａ及び図６Ｂは、本実施形態におけるトレースフラッシュ処理の例を示すフローチャートである。
トレースフラッシュ処理でキャッシュメモリから主記憶装置であるメモリへのデータの書き戻しを行うストア指示がなされる期間であることがソフトウェアからの情報Ｓ１２により示されると、情報処理装置でのトレースフラッシュ処理が開始される。バッファ部１１４は、命令制御部１１２から出力される信号ＲＥＣがアサートされることで、トレースフラッシュ処理でメモリ１２０へのデータの書き戻しを行うストア処理の開始を検知する。
【００４２】
まず、一次キャッシュメモリ部１１３が、命令制御部１１２からのストア要求に応じて、一次キャッシュメモリ２０２にデータを書き込むキャッシュストア処理を実行する（Ｓ１０１）。キャッシュストア処理では、図７に示すように、一次キャッシュメモリ部１１３のパイプライン処理部２０１は、命令制御部１１２からのストア要求を受信して（Ｓ２０１）、パイプラインに投入する（Ｓ２０２）。続いて、パイプライン処理部２０１は、ストア要求のアドレス及びデータを一次キャッシュメモリ２０２に出力し、ストア要求により受信したアドレスに対応する一次キャッシュメモリ２０２内の記憶領域（エントリ）にデータを書き込む（Ｓ２０３）。
【００４３】
図６Ａに戻り、バッファ部１１４のバッファ制御部２０３は、ステップＳ１０１でのキャッシュストア処理においてパイプライン処理部２０１から一次キャッシュメモリ２０２に出力されたストア要求のアドレスを取得する（Ｓ１０２）。次に、バッファ制御部２０３は、ステップＳ１０２において取得したアドレスと、バッファ２０４の有効なエントリに保持されているアドレスとを比較し、取得したアドレスがバッファ２０４の有効なエントリにすでに格納されているか否かを判断する（Ｓ１０３）。
【００４４】
ステップＳ１０３での判断の結果、取得したアドレスがバッファ２０４の有効なエントリにすでにあると判断した場合には、ステップＳ１０１に戻る。一方、ステップＳ１０３での判断の結果、取得したアドレスがバッファ２０４の有効なエントリにないと判断した場合には、バッファ制御部２０３は、信号Ｉｐｔｒを基にバッファ２０４内の無効なエントリを確保し、そのエントリのバリッドビットを制御して有効化する（Ｓ１０４）。そして、バッファ制御部２０３は、ステップＳ１０２において取得したアドレスを、有効化したエントリに格納する（Ｓ１０５）。
【００４５】
次に、バッファ制御部２０３は、バッファ２０４内のエントリに空きがあるか否かを判断する（Ｓ１０６）。判断の結果、バッファ２０４のエントリに空きがない、すなわちすべてのエントリが有効である場合には、バッファ制御部２０３は、１つのエントリを無効化してエントリに空きがある状態にするために単発フラッシュ処理を実行する（Ｓ１０７）。単発フラッシュ処理の詳細については後述するが、単発フラッシュ処理を実行することで１つのエントリが無効化される。
【００４６】
続いて、バッファ制御部２０３は、命令制御部１１２から出力される信号ＲＥＣがネゲートされたか否かを判断する（Ｓ１０８）。判断の結果、信号ＲＥＣがネゲートされていない場合には、ステップＳ１０１に戻る。信号ＲＥＣがネゲートされるまで、前述したステップＳ１０１〜Ｓ１０８の処理を繰り返し実行し、信号ＲＥＣがネゲートされると、図６Ｂに示すステップＳ１０９へ進む。ステップＳ１０９にて、バッファ制御部２０３は、命令制御部１１２から出力される信号ＦＬＡＳＨを受信する。
【００４７】
次に、バッファ制御部２０３は、信号Ｏｐｔｒを基にバッファ２０４内の有効なエントリに格納されているアドレスを取得する（Ｓ１１０）。そして、バッファ制御部２０３は、ステップＳ１１０において取得したアドレスを書き込み先とするメモリ書き戻し要求を二次キャッシュメモリ１１５に発行する（Ｓ１１１）。二次キャッシュメモリ１１５は、バッファ制御部２０３からのメモリ書き戻し要求に応じて、メモリ１２０にデータを書き込むメモリ書き戻し処理を実行する（Ｓ１１２）。
【００４８】
メモリ書き戻し処理では、図９に示すように、二次キャッシュメモリ１１５は、メモリ書き戻し処理においてデータの書き込みを行うメモリ書き戻しアドレスを一次キャッシュメモリ部１１３から受信する（Ｓ４０１）。次に、二次キャッシュメモリ１１５は、メモリ書き戻しアドレスが示すデータの取得要求を一次キャッシュメモリ２０２に発行し（Ｓ４０２）、それに対する応答を受信して一次キャッシュメモリ２０２のデータを取得する（Ｓ４０３）。
【００４９】
続いて、二次キャッシュメモリ１１５は、ステップＳ４０３において取得したデータで自らのメモリ内容を更新し（Ｓ４０４）、さらにメモリ１２０への書き戻しを行う（Ｓ４０５）。そして、ステップＳ４０３において取得されたデータのメモリ１２０への書き戻しが完了すると、メモリ１２０から二次キャッシュメモリ１１５に書き戻し終了が通知される。二次キャッシュメモリ１１５は、メモリ１２０からの書き戻し終了を受信した後（Ｓ４０６）、一次キャッシュメモリ２０２に書き戻し終了を通知して（Ｓ４０７）、メモリ書き戻し処理を終了する。ここで、トレースフラッシュ処理においては、ステップＳ４０７において、二次キャッシュメモリ１１５は、一次キャッシュメモリ２０２に加え、バッファ部１１４に対しても書き戻し終了を通知する。
【００５０】
図６Ｂに戻り、バッファ部１１４のバッファ制御部２０３は、二次キャッシュメモリ１１５からの書き戻し終了を受信する（Ｓ１１３）。次に、バッファ制御部２０３は、受信した書き戻し終了を基に、メモリ書き戻し処理が正常に終了したか否かを判断する（Ｓ１１４）。メモリ書き戻し処理が正常終了したと判断した場合には、バッファ制御部２０３は、ステップＳ１１０においてアドレスを取得したバッファ２０４のエントリのバリッドビットを制御して、そのエントリを無効化する（Ｓ１１５）。
【００５１】
次に、バッファ制御部２０３は、バッファ２０４のすべてのエントリが無効であるか否かを判断し（Ｓ１１６）、すべてのエントリが無効であればソフトウェアに対して正常終了（Ｎｏｒｍａｌ  ＥＮＤ）を送信し（Ｓ１１７）、トレースフラッシュ処理を終了する。これにより、キャッシュメモリからメモリへの書き戻しの際に、ＣＰＵ−メモリ間の伝送路などでエラーが発生することなく書き戻しが行われたことをソフトウェアに通知することができる。一方、バッファ２０４に有効なエントリがあれば、ステップＳ１１０へ戻り、前述したステップＳ１１０以降の処理を行う。
【００５２】
メモリ書き戻し処理が正常終了していない、すなわち異常終了したと判断した場合には、バッファ制御部２０３は、エラー回数をカウントし（Ｓ１１８）、エラー回数が指定回数を超えたか否かを判断する（Ｓ１１９）。エラー回数が指定回数を超えていない場合にはステップＳ１１１へ戻り、バッファ制御部２０３は、ステップＳ１１０において取得したアドレスを用いてステップＳ１１１以降の処理を再び実行する。一方、エラー回数が指定回数を超えた場合には、バッファ制御部２０３は、ソフトウェアに対して異常終了（Ｅｒｒｏｒ  ＥＮＤ）を送信し（Ｓ１２０）、トレースフラッシュ処理を終了する。これにより、キャッシュメモリからメモリへの書き戻しの際に、ＣＰＵ−メモリ間の伝送路などでエラーが発生し書き戻しが完了しなかったことをソフトウェアに通知することができる。
【００５３】
図８は、単発フラッシュ処理の例を示すフローチャートである。単発フラッシュ処理は、バッファ２０４のエントリのすべてが有効になった場合に、１つのエントリについてメモリ書き戻し処理を実行して、そのエントリを無効化する。
【００５４】
単発フラッシュ処理を開始すると、バッファ制御部２０３は、一次キャッシュメモリ部１１３のパイプライン処理部２０１に、ストア要求のパイプラインへの投入を停止させるストア抑止信号を出力して、後続のストア処理を抑止する（Ｓ３０１）。次に、バッファ制御部２０３は、信号Ｏｐｔｒを基にバッファ２０４内の有効なエントリに格納されているアドレスを取得する（Ｓ３０２）。そして、バッファ制御部２０３は、ステップＳ３０２において取得したアドレスを書き込み先とするメモリ書き戻し要求を二次キャッシュメモリ１１５に発行する（Ｓ３０３）。
【００５５】
二次キャッシュメモリ１１５は、バッファ制御部２０３からのメモリ書き戻し要求に応じて、メモリ１２０にデータを書き込むメモリ書き戻し処理を実行する（Ｓ３０４）。なお、ステップＳ３０４におけるメモリ書き戻し処理は、図６ＢのステップＳ１１２におけるメモリ書き戻し処理と同様である。続いて、バッファ制御部２０３は、二次キャッシュメモリ１１５からの書き戻し終了を受信する（Ｓ３０５）。次に、バッファ制御部２０３は、ステップＳ３０２においてアドレスを取得したバッファ２０４のエントリのバリッドビットを制御して、そのエントリを無効化し（Ｓ３０６）、処理を終了する。
【００５６】
図１０は、本実施形態における情報処理装置の動作例を示すタイミングチャートであり、トレースフラッシュ処理においてメモリ１２０へのデータの書き戻しが正常に終了した場合を示している。
命令制御部１１２は、ソフトウェアからの情報Ｓ１２に応じて信号ＲＥＣをアサートする（時刻Ｔ１１）。その後、時刻Ｔ１２から、命令制御部１１２は、ソフトウェアからのストア指示に応じて、トレースフラッシュ処理によってメモリ１２０に書き込む一連のデータ（図示せず）についてのストア要求Ｓ１３及びストア要求のアドレスを順次出力する。
【００５７】
一次キャッシュメモリ部１１３のパイプライン処理部２０１は、命令制御部１１２から順次出力されたストア要求Ｓ１３及びストア要求のアドレスを受けると、ストア要求のアドレスＳＡ１を一次キャッシュメモリ２０２に出力する。このとき、信号ＲＥＣがアサートされているので、バッファ部１１４のバッファ制御部２０３は、一次キャッシュメモリ２０２に出力されるストア要求のアドレスＳＡ１を取得して、バッファ２０４のエントリ（ＴＦＢ０〜ＴＦＢ７）３０１−０〜３０１−７に登録し保持する。図１０に示す例では、トレースフラッシュ処理によってメモリ１２０に書き込む一連のデータの数が６つであるので、エントリ（ＴＦＢ０〜ＴＦＢ５）３０１−０〜３０１−５にストア要求のアドレスＳＡ１が保持される。
【００５８】
時刻Ｔ１３において、命令制御部１１２は、ソフトウェアからの情報Ｓ１２に応じて信号ＲＥＣをネゲートするとともに信号ＦＬＡＳＨをアサートする。信号ＦＬＡＳＨがアサートされた後の時刻Ｔ１４において、バッファ部１１４のバッファ制御部２０３は、バッファ２０４のエントリ（ＴＦＢ０〜ＴＦＢ５）３０１−０〜３０１−５に格納されているストア要求のアドレスに係るメモリ書き戻し要求Ｓ１５を二次キャッシュメモリ１１５に順次発行する。
【００５９】
そして、二次キャッシュメモリ１１５は、それぞれのストア要求のアドレスに係るデータのメモリ１２０への書き戻し処理が終了すると、各アドレスに係るデータの書き戻し終了Ｓ１９をバッファ部１１４に順次通知する（時刻Ｔ１５）。データの書き戻し終了Ｓ１９を受けたバッファ制御部２０３は、ストア要求のアドレスが格納されているバッファ２０４のエントリ（ＴＦＢ０〜ＴＦＢ７）３０１−０〜３０１−７を無効にする。そして、バッファ２０４の有効なエントリに対応する書き戻し終了Ｓ１９をすべて受けた後の時刻Ｔ１６において、バッファ部１１４は、ソフトウェアに対しトレースフラッシュ処理の終了（Ｎｏｒｍａｌ  ＥＮＤ）Ｓ２０を出力し、処理が完了する。
【００６０】
図１１は、本実施形態における情報処理装置の動作例を示すタイミングチャートであり、トレースフラッシュ処理においてメモリ１２０へのデータの書き戻しにおいてエラーが発生し、データの書き戻しを再度行う場合を示している。なお、図１１に示した時刻Ｔ２１〜Ｔ２５までの動作は、図１０に示した時刻Ｔ１１〜Ｔ１５までの動作と同様であるので説明は省略する。
【００６１】
図１１に示す例では、ストア要求のアドレス“８７”に係るデータのメモリ１２０への書き戻し処理の１回目において異常終了し、時刻Ｔ２６において、二次キャッシュメモリ１１５は、バッファ部１１４に書き戻しのエラーを通知する。この通知を受けて、バッファ部１１４は、ストア要求のアドレス“８７”に係るメモリ書き戻し要求Ｓ１５を二次キャッシュメモリ１１５に再び発行する（時刻Ｔ２７）。そして、二次キャッシュメモリ１１５は、ストア要求のアドレス“８７”に係るデータのメモリ１２０への書き戻し処理が正常終了すると書き戻し終了Ｓ１９をバッファ部１１４に通知する（時刻Ｔ２８）。
【００６２】
ストア要求のアドレス“８７”に係るデータの書き戻し終了Ｓ１９を受けたバッファ制御部２０３は、ストア要求のアドレス“８７”が格納されているバッファ２０４のエントリ（ＴＦＢ５）３０１−５を無効にする。そして、時刻Ｔ２９において、バッファ部１１４は、ソフトウェアに対しトレースフラッシュ処理の終了（Ｎｏｒｍａｌ  ＥＮＤ）Ｓ２０を出力し、処理が完了する。
【００６３】
図１２、図１３、及び図１４は、本実施形態におけるバッファ部１１４の動作例を示すタイミングチャートである。なお、図１２〜図１４に示した信号のうち、図３に示した信号に対応するものについては同じ信号名で示している。また、図１２〜図１４において、ＣＮＴはカウンタ３３２のカウント値であり、ＴＦＢｉ（ｉ＝０〜７）はバッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉに保持されている有効なアドレスである。
【００６４】
図１２には、トレースフラッシュ処理によってメモリ１２０へ書き戻す一連のデータが９つある場合の例を示している。信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値が異なり、下位３ビットの値が同じときには、エントリのすべてが有効なフル状態であることを示す信号ｆｕｌｌがアサートされる。また、信号Ｉｐｔｒ、Ｏｐｔｒの値が同じときには、エントリのすべてが無効なエンプティ状態であることを示す信号ｅｍｐｔｙがアサートされる。
【００６５】
信号ｒｅｃｏｒｄがアサートされトレースフラッシュ処理によってメモリ１２０に書き込む一連のデータのストア処理が開始される。信号ｒｅｃｏｒｄがアサートされた状態で、一次キャッシュメモリに対してデータを書き込むキャッシュストア処理を行うことを示す信号ｓｔｏｒｅがアサートされ、ストア要求のアドレスに相当する信号ｓａｄｄが入力されると、信号Ｉｐｔｒの下位３ビットの値ｉが示すバッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉが信号ｓａｄｄの値を保持する。また、バッファ制御部２０３は、信号Ｉｐｔｒの値を１インクリメントする。
【００６６】
なお、信号ｒｅｃｏｒｄがアサートされた状態で信号ｓｔｏｒｅがアサートされても、信号ｆｕｌｌがアサートされているとき、又は信号ｓａｄｄの値がすでにエントリに保持されている値と同じとき（図１２に示す例では２回目の“０８”）には、信号ｓａｄｄの値を保持しない。また、信号ｒｅｃｏｒｄがアサートされた状態でも信号ｓｔｏｒｅがネゲートされているときは、信号ｓａｄｄの値を保持しない。
【００６７】
そして、信号Ｉｐｔｒ、Ｏｐｔｒの最上位ビットの値が異なり、下位３ビットの値が同じになると、信号ｆｕｌｌがアサートされる。また、後続のストア処理を抑止して、二次キャッシュメモリに対してデータの書き戻しを要求することを示す信号Ｌ２ｒｅｑ、及びメモリ書き戻し処理が要求される場合にアサートされる信号ｔｒｃｆｌがアサートされる。これにより、バッファ制御部２０３は、信号Ｏｐｔｒの下位３ビットの値ｉが示すバッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉに格納されているアドレスに係るデータのメモリ書き戻し処理を実行し、エントリ（ＴＦＢｉ）３０１−ｉを無効化する。図１２に示す例では、バッファ２０４のエントリ（ＴＦＢ０）３０１−０に格納されているアドレス“０３”に係るデータのメモリ書き戻し処理が実行され、エントリ（ＴＦＢ０）３０１−０が無効化される。
【００６８】
また、バッファ制御部２０３は、データのメモリ書き戻し処理を実行する際、信号Ｏｐｔｒの値を１インクリメントするとともに、カウンタ３２２のカウント値ＣＮＴを１インクリメントする。そして、データのメモリ書き戻し処理が正常に終了すると、二次キャッシュメモリがメモリへの書き戻しが正常終了したことを示す信号Ｌ２ｅｎｄがアサートされ、バッファ制御部２０３は、カウンタ３２２のカウント値ＣＮＴを１デクリメントする。
【００６９】
再び、信号Ｉｐｔｒ、Ｏｐｔｒの値が異なる値となって信号ｆｕｌｌがネゲートされ、信号ｓｔｏｒｅがアサートされると、信号Ｉｐｔｒの下位３ビットの値ｉが示すバッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉがストア要求のアドレスに相当する信号ｓａｄｄの値を保持する。また、バッファ制御部２０３は、信号Ｉｐｔｒの値を１インクリメントする。
【００７０】
その後、トレースフラッシュ処理によってメモリ１２０に書き込む一連のデータのストア処理が終了すると、信号ｒｅｃｏｒｄがネゲートされる。そして、信号Ｌ２ｒｅｑ、及びｔｒｃｆｌがアサートされると、バッファ制御部２０３は、信号Ｉｐｔｒ、Ｏｐｔｒが同じ値になるまで、バッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉに格納されているアドレスに係るデータのメモリ書き戻し処理を実行する。バッファ制御部２０３は、データのメモリ書き戻し処理を実行する際に、カウンタ３２２を用いてカウント動作を行い、トレースフラッシュ処理によるデータの書き戻しの終了時にカウント値ＣＮＴが０の場合、トレースフラッシュ処理が正常終了したことを示す信号ＥＮＤを出力する。
【００７１】
図１３には、トレースフラッシュ処理においてメモリ１２０へ書き戻しエラーが１回発生し、ハードウェアにより再度書き戻しを行う場合の例を示している。
【００７２】
図１２に示した動作例と同様にして、バッファ部１１４のバッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉが信号ｓａｄｄの値を保持していき、トレースフラッシュ処理によってメモリ１２０に書き込む一連のデータのストア処理が終了すると、信号ｒｅｃｏｒｄがネゲートされる。そして、信号Ｌ２ｒｅｑ、及びｔｒｃｆｌがアサートされると、バッファ制御部２０３は、信号Ｉｐｔｒ、Ｏｐｔｒが同じ値になるまで、バッファ２０４のエントリ（ＴＦＢｉ）３０１−ｉに格納されているアドレスに係るデータのメモリ書き戻し処理を実行する。このメモリ書き戻し処理において、図１３に示す例ではバッファ２０４のエントリ（ＴＦＢ２）３０１−２に格納されているアドレス“０８”に係るデータをメモリに書き戻す際にエラーが発生し、二次キャッシュメモリ１１５からの信号Ｌ２ｅｒｒがアサートされる。
【００７３】
信号Ｉｐｔｒ、Ｏｐｔｒが同じ値になると、バッファ制御部２０３は、信号Ｏｐｔｒの値を“０１００”から、データをメモリに書き戻す際にエラーが発生した値“００１０”に変更する。これにより、バッファ制御部２０３は、信号Ｏｐｔｒが示すエントリ（ＴＦＢ２）３０１−２に格納されているアドレス“０８”に係るデータのメモリ書き戻し処理を再度実行する。このメモリ書き戻し処理が正常に終了し信号Ｌ２ｅｎｄがアサートされることで、バッファ制御部２０３が、カウンタ３２２のカウント値ＣＮＴを１デクリメントし、カウント値が０になる。また、バッファ制御部２０３は、信号Ｏｐｔｒの値を“０１００”に戻す。そして、バッファ制御部２０３は、トレースフラッシュ処理が正常終了したことを示す信号ＥＮＤを出力する。
【００７４】
図１４には、トレースフラッシュ処理においてメモリ１２０へ書き戻しエラーが２回発生し、ソフトウェアに対してエラーを通知する場合の例を示している。データをメモリに書き戻す際に１回目のエラーが発生し、そのデータのメモリ書き戻し処理を再度実行するまでの動作は、図１３に示した例と同様である。しかし、図１４に示した例では、再度実行したメモリ書き戻し処理においてもエラーが発生し、二次キャッシュメモリ１１５からの信号Ｌ２ｅｒｒがアサートされる。このように同一のアドレスに係るデータのメモリ書き戻し処理においてエラーが再び発生した場合には、バッファ制御部２０３は、トレースフラッシュ処理が異常終了したことを示す信号ＥＲＲＯＲをソフトウェアに対して出力する。また、バッファ制御部２０３は、信号Ｉｐｔｒ、Ｏｐｔｒ、カウンタ３２２のカウント値ＣＮＴ、及びバッファ２０４の各エントリ（ＴＦＢｉ）３０１−ｉが保持している値を初期値（例えば０）に設定する。
【００７５】
本実施形態によれば、トレースフラッシュ処理によって、一次キャッシュメモリ２０２に特定のデータを書き込んだ後、速やかにメモリ１２０への書き戻しを実行することができ、特定のデータのストアの安全性を確保することができる。したがって、例えば、あるＣＰＵが故障した際に、そのＣＰＵが有する一次キャッシュメモリからメモリ１２０へデータを書き戻しているために、複数のＣＰＵに影響が及ぶことを防止し、情報処理装置を継続して運用することが可能になる。また、一次キャッシュメモリ２０２からメモリ１２０へのデータの書き戻しの際にＣＰＵが故障しても、故障以前のデータがメモリ１２０にあるため、故障したＣＰＵのみの処理を再度実行することで、情報処理装置の継続した運用が可能である。また、特定のデータについて速やかに一次キャッシュメモリ２０２からメモリ１２０へのデータの書き戻しを行い、計算途中結果などのデータはトレースフラッシュ処理による書き戻しを行わないことで、性能を低下させることもない。
【００７６】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００７７】
（付記１）
キャッシュメモリと、
データを前記キャッシュメモリに書き込むストア要求を発行するとともに、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力する命令制御部と、
前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力しデータを書き込む第１の書き込み処理部と、
複数のエントリを有し、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得して前記エントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを主記憶装置に書き込む書き戻し要求を発行するバッファ部と、
前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込む第２の書き込み処理部とを有することを特徴とする演算処理装置。
（付記２）
前記バッファ部は、前記特定のデータに係る前記ストア要求の出力期間中に複数のエントリに空きがなくなった場合には、前記エントリに保持しているアドレスが示すデータの前記書き戻し要求を発行することを特徴とする付記１記載の演算処理装置。
（付記３）
前記バッファ部は、取得した前記アドレスと前記エントリに保持しているアドレスとが同一である場合には、取得した前記アドレスを保持しないことを特徴とする付記１記載の演算処理装置。
（付記４）
前記命令制御部は、前記特定のデータに係る前記ストア要求の出力期間が終了した後に第２の信号を出力し、
前記バッファ部は、前記命令制御部からの前記第２の信号を受けると前記エントリに保持しているアドレスが示すデータの前記書き戻し要求を発行することを特徴とする付記１記載の演算処理装置。
（付記５）
前記バッファ部は、発行した前記書き戻し要求による前記主記憶装置へのデータの書き込みが正常に終了した場合に正常終了を通知することを特徴とする付記１記載の演算処理装置。
（付記６）
前記バッファ部は、発行した前記書き戻し要求による前記主記憶装置へのデータの書き込みでエラーが発生した場合に、当該エラーが発生したデータの前記書き戻し要求を発行することを特徴とする付記１記載の演算処理装置。
（付記７）
前記バッファ部は、発行した前記書き戻し要求による前記主記憶装置へのデータの書き込みでエラーが発生した回数をカウントし、指定回数を超えるエラーが発生した場合にエラー通知を行うことを特徴とする付記６記載の演算処理装置。
（付記８）
それぞれ演算を行う複数の演算処理装置と、
前記複数の演算処理装置に接続される主記憶装置とを有し、
前記演算処理装置の各々は、
キャッシュメモリと、
データを前記キャッシュメモリに書き込むストア要求を発行するとともに、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力する命令制御部と、
前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力しデータを書き込む第１の書き込み処理部と、
複数のエントリを有し、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得して前記エントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを前記主記憶装置に書き込む書き戻し要求を発行するバッファ部と、
前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込む第２の書き込み処理部とを有することを特徴とする情報処理装置。
（付記９）
演算処理装置が有する命令制御部が、データをキャッシュメモリに書き込むストア要求を発行し、
前記演算処理装置が有する命令制御部が、特定のデータに係る前記ストア要求の出力期間を示す第１の信号を出力し、
前記演算処理装置が有する第１の書き込み処理部が、前記命令制御部からの前記ストア要求を受けて、当該ストア要求のアドレス及びデータを前記キャッシュメモリに出力してデータを書き込み、
前記演算処理装置が有するバッファ部が、前記第１の信号が前記特定のデータに係る前記ストア要求の出力期間であることを示す場合に、前記第１の書き込み処理部から前記キャッシュメモリに出力された前記アドレスを取得してエントリに保持し、当該出力期間が終了すると、前記エントリに保持しているアドレスが示すデータを主記憶装置に書き込む書き戻し要求を発行し、
前記演算処理装置が有する第２の書き込み処理部が、前記バッファ部からの前記書き戻し要求を受けて、当該書き戻し要求に応じたデータを前記キャッシュメモリから取得して前記主記憶装置に書き込むことを特徴とする演算処理装置の制御方法。
【符号の説明】
【００７８】
１１０  ＣＰＵ
１２０  メモリ
１３０  バス
１１１  コア
１１２  命令制御部
１１３  一次キャッシュメモリ部
１１４  バッファ部
１１５  二次キャッシュメモリ
２０１  パイプライン処理部
２０２  一次キャッシュメモリ
２０３  バッファ制御部
２０４  バッファ
【図１】
2014186521.tif 000003
【図２】
2014186521.tif 000004
【図３】
2014186521.tif 000005
【図４】
2014186521.tif 000006
【図５】
2014186521.tif 000007
【図６Ａ】
2014186521.tif 000008
【図６Ｂ】
2014186521.tif 000009
【図７】
2014186521.tif 000010
【図８】
2014186521.tif 000011
【図９】
2014186521.tif 000012
【図１０】
2014186521.tif 000013
【図１１】
2014186521.tif 000014
【図１２】
2014186521.tif 000015
【図１３】
2014186521.tif 000016
【図１４】
2014186521.tif 000017