(57)【特許請求の範囲】
【請求項１】
バスを介して記憶装置に接続され、前記記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を前記記憶装置に割り当てられた情報格納領域に書き込む演算処理部と、
前記バスを監視し、前記演算処理部による前記情報格納領域への書き込みを検出した場合、書き込み発生情報を前記バスとは異なる信号線に出力する監視部と、
前記信号線を介して前記書き込み発生情報を受信した場合、前記バスを介して前記情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して対応するデータ領域にアクセスするアクセス制御部を有し、
前記演算処理部は、前記記憶装置に割り当てられた複数の前記データ領域に書き込まれるデータを順次処理し、複数の前記データ領域の各々が使用可能である旨を示す使用可能情報を、複数の前記データ領域に対応する複数の前記情報格納領域に順次書き込み、
前記監視部はさらに、
複数の前記情報格納領域への書き込みの検出回数を保持する第１の保持部と、
前記第１の保持部が保持する前記検出回数を前記書き込み発生情報として所定の周期で前記信号線に出力するとともに、前記第１の保持部が保持する前記検出回数をリセットする検出回数制御部を有し、
前記アクセス制御部はさらに、
前記信号線を介して受信する前記検出回数を保持する第２の保持部と、
前記情報格納領域が保持する使用可能情報を読み出す読み出し要求を、前記第２の保持部が保持する検出回数出力し、前記読み出し要求に応答して前記情報格納領域から対応するデータ領域が使用可能である旨を示す使用可能情報が読み出されない場合、前記読み出し要求を再度出力する読み出し制御部を有することを特徴とする演算処理装置。
【請求項２】
前記アクセス制御部は、前記情報格納領域から読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して前記演算処理部に処理させるデータを前記データ領域に書き込み、
前記演算処理部は、前記データ領域に書き込まれたデータの処理を実行し、データ処理の実行後に前記情報格納領域に、対応するデータ領域が使用可能になったことを示す使用可能情報を書き込むことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記アクセス制御部はさらに、使用可能情報とともに前記情報格納領域から読み出される前記データ領域のアドレスを保持する複数のエントリを含むアドレス保持部を有し、
前記アクセス制御部は、前記エントリに空きがある場合、前記第２の保持部が保持する前記検出回数の前記読み出し要求を出力することを特徴とする請求項１または請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置は、複数の前記監視部と、複数の前記監視部にそれぞれ接続された複数の前記記憶装置を有し、
前記信号線は、複数の前記監視部に共通に設けられることを特徴とする請求項３記載の演算処理装置。
【請求項５】
複数の前記監視部は、互いに異なるタイミングで前記信号線に前記書き込み発生情報を出力することを特徴とする請求項４記載の演算処理装置。
【請求項６】
複数の前記監視部の各々は、前記信号線が空いている期間に、前記信号線に前記書き込み発生情報を出力することを特徴とする請求項４記載の演算処理装置。
【請求項７】
前記演算処理部は、データ処理の実行により得られたデータを前記データ領域に書き込んだ後、対応する情報格納領域に前記データ領域が使用可能である旨を示す使用可能情報を書き込み、
前記アクセス制御部は、前記書き込み発生情報の受信に基づいて前記情報格納領域から読み出した使用可能情報が対応するデータ領域が使用可能である旨を示す場合、対応するデータ領域に格納されたデータを読み出すことを特徴とする請求項１記載の演算処理装置。
【請求項８】
バスを介して記憶装置に接続された演算処理部と、監視部と、アクセス制御部を有する演算処理装置の制御方法において、
前記演算処理部が、前記記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を前記記憶装置に割り当てられた情報格納領域に書き込み、
前記監視部が、前記バスを監視し、前記演算処理部による前記情報格納領域への書き込みを検出した場合、書き込み発生情報を前記バスとは異なる信号線に出力し、
アクセス制御部が、前記信号線を介して前記書き込み発生情報を受信した場合、前記バスを介して前記情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して対応するデータ領域にアクセスし、
前記演算処理部が、前記記憶装置に割り当てられた複数の前記データ領域に書き込まれるデータを順次処理し、複数の前記データ領域の各々が使用可能である旨を示す使用可能情報を、複数の前記データ領域に対応する複数の前記情報格納領域に順次書き込み、
前記監視部が有する第１の保持部が、複数の前記情報格納領域への書き込みの検出回数を保持し、
前記監視部が有する検出回数制御部が、前記第１の保持部が保持する前記検出回数を前記書き込み発生情報として所定の周期で前記信号線に出力するとともに、前記第１の保持部が保持する前記検出回数をリセットし、
前記アクセス制御部が有する第２の保持部が、前記信号線を介して受信する前記検出回数を保持し、
前記アクセス制御部が有する読み出し制御部が、前記情報格納領域が保持する使用可能情報を読み出す読み出し要求を、前記第２の保持部が保持する検出回数出力し、前記読み出し要求に応答して前記情報格納領域から対応するデータ領域が使用可能である旨を示す使用可能情報が読み出されない場合、前記読み出し要求を再度出力することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等の演算処理装置は、ＤＭＡ（Dynamic Memory Access）等のメモリアクセスによるＣＰＵコアの負荷を軽減するために、ＤＭＡＣ（Dynamic Memory Access Controller）等を有する。外部装置から受けるイベント情報が、予め登録されたイベント情報と一致する場合にＤＭＡＣに起動を指示する制御装置が、この種の演算処理装置に設けられる場合、ＣＰＵコアの負荷はさらに軽減される（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１２８４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、演算処理装置に接続される他の演算処理装置が、ＣＰＵコアにデータ処理を実行させる処理要求を発行する場合、ＤＭＡＣは、ＣＰＵコアに処理させるデータを他の演算処理装置から受信し、受信したデータを主記憶装置等に書き込む。この際、ＤＭＡＣは、ＣＰＵコアによって更新される主記憶装置上の制御キュー等の情報格納領域にアクセスし、情報格納領域に保持された情報を読み出し、ＣＰＵコアに処理させるデータを格納する主記憶装置上のデータ領域が使用可能であるか否かを検出する。そして、ＤＭＡＣは、データ領域が使用可能な場合、データ領域にデータを転送する。例えば、ＤＭＡＣは、処理要求を受ける前に情報格納領域から情報を読み出すプリフェッチを実行し、データ領域へのデータ転送が可能であることを予め検出することで、処理要求の受信に基づいて直ちにデータ領域にデータを転送できる。これにより、処理要求を受けてから情報格納領域にアクセスする場合に比べて、演算処理装置の処理性能は向上する。
【０００５】
一方、プリフェッチした情報格納領域の情報が、データ領域が使用可能な状態でないことを示す場合、ＤＭＡＣは、情報格納領域のプリフェッチを繰り返し実行する。これにより、無駄なプリフェッチが増加すると、主記憶装置へのアクセスの負荷は増大し、演算処理装置の処理性能が低下するおそれがある。
【０００６】
１つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、記憶装置上のデータ領域が使用可能なことを、情報格納領域への最小限の数のアクセスにより検出することで、記憶装置へのアクセスの負荷の増大を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、演算処理装置は、バスを介して記憶装置に接続され、記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を記憶装置に割り当てられた情報格納領域に書き込む演算処理部と、バスを監視し、演算処理部による情報格納領域への書き込みを検出した場合、書き込み発生情報をバスとは異なる信号線に出力する監視部と、信号線を介して書き込み発生情報を受信した場合、バスを介して情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、バスを介して対応するデータ領域にアクセスするアクセス制御部を有し、演算処理部は、記憶装置に割り当てられた複数のデータ領域に書き込まれるデータを順次処理し、複数のデータ領域の各々が使用可能である旨を示す使用可能情報を、複数のデータ領域に対応する複数の情報格納領域に順次書き込み、監視部はさらに、複数の情報格納領域への書き込みの検出回数を保持する第１の保持部と、第１の保持部が保持する検出回数を書き込み発生情報として所定の周期で信号線に出力するとともに、第１の保持部が保持する検出回数をリセットする検出回数制御部を有し、アクセス制御部はさらに、信号線を介して受信する検出回数を保持する第２の保持部と、情報格納領域が保持する使用可能情報を読み出す読み出し要求を、第２の保持部が保持する検出回数出力し、読み出し要求に応答して情報格納領域から対応するデータ領域が使用可能である旨を示す使用可能情報が読み出されない場合、読み出し要求を再度出力する読み出し制御部を有する。
【０００８】
別の観点によれば、バスを介して記憶装置に接続された演算処理部と、監視部と、アクセス制御部を有する演算処理装置の制御方法において、演算処理部が、記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を記憶装置に割り当てられた情報格納領域に書き込み、監視部が、バスを監視し、演算処理部による情報格納領域への書き込みを検出した場合、書き込み発生情報をバスとは異なる信号線に出力し、アクセス制御部が、信号線を介して書き込み発生情報を受信した場合、バスを介して情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、バスを介して対応するデータ領域にアクセスし、演算処理部が、記憶装置に割り当てられた複数のデータ領域に書き込まれるデータを順次処理し、複数のデータ領域の各々が使用可能である旨を示す使用可能情報を、複数のデータ領域に対応する複数の情報格納領域に順次書き込み、監視部が有する第１の保持部が、複数の情報格納領域への書き込みの検出回数を保持し、監視部が有する検出回数制御部が、第１の保持部が保持する検出回数を書き込み発生情報として所定の周期で信号線に出力するとともに、第１の保持部が保持する検出回数をリセットし、アクセス制御部が有する第２の保持部が、信号線を介して受信する検出回数を保持し、アクセス制御部が有する読み出し制御部が、情報格納領域が保持する使用可能情報を読み出す読み出し要求を、第２の保持部が保持する検出回数出力し、読み出し要求に応答して情報格納領域から対応するデータ領域が使用可能である旨を示す使用可能情報が読み出されない場合、読み出し要求を再度出力する。
【発明の効果】
【０００９】
本件開示の演算処理装置および演算処理装置の制御方法は、記憶装置上のデータ領域が使用可能なことを、情報格納領域への最小限の数のアクセスにより検出することで、記憶装置へのアクセスの負荷の増大を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】図１に示す演算処理装置の動作の一例を示す図である。
【図３】図１に示す演算処理装置の動作の別の例を示す図である。
【図４】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図５】図４に示す情報処理装置で使用するアドレス空間のうち、ＤＩＭＭに割り当てられる領域の一例を示す図である。
【図６】図４に示すイベント採取部の一例を示す図である。
【図７】図４に示すＤＭＡＣのプリフェッチ制御部の一例を示す図である。
【図８】図６に示すイベント採取部の動作の一例を示す図である。
【図９】図７に示すプリフェッチ制御部におけるプリフェッチパケット制御部の動作の一例を示す図である。
【図１０】図７に示すプリフェッチ制御部における受信処理部の動作の一例を示す図である。
【図１１】図４に示すＣＰＵ３におけるパケットの処理手順の一例を示す図である。
【図１２】図４に示すＣＰＵ３と異なるＣＰＵにおけるパケットの処理手順の一例を示す図である。
【図１３】図４に示すＣＰＵ３と異なるＣＰＵにおけるパケットの処理手順の別の例を示す図である。
【図１４】図１３に示すＤＭＡＣによるプリフェッチ動作の一例を示す図である。
【図１５】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図１６】図１５に示すイベント採取部の一例を示す図である。
【図１７】図１６に示すイベント採取部ＥＶＮＴ０に設けられるイベントテーブルの一例を示す図である。
【図１８】図１６に示すタイミングカウンタおよびエントリ選択カウンタの動作の一例を示す図である。
【図１９】図１６に示すイベントバスを介してＤＭＡＣに転送される情報のフォーマットの一例を示す図である。
【図２０】図１５に示すＤＭＡＣ０のプリフェッチ制御部の一例を示す図である。
【図２１】図２０に示すカウンタ値保持部の一例を示す図である。
【図２２】図１５に示すＭＡＣ０のイベント採取部ＥＶＮＴ０の動作の一例を示す図である。
【図２３】図２０に示すプリフェッチ制御部におけるプリフェッチパケット制御部の動作の一例を示す図である。
【図２４】図２３に示すステップＳ７８によるカウンタ値保持部のカウンタ値の補正の一例を示す図である。
【図２５】図１５に示すＣＰＵ３において、ＭＡＣ０−ＭＡＣ３からＤＭＡＣ０−ＤＭＡＣ３に転送される情報の一例を示す図である。
【図２６】ＭＡＣ０−ＭＡＣ３が図２５に示した情報をイベントバスに送信する動作の一例を示す図である。
【図２７】ＤＭＡＣ０−ＤＭＡＣ３が図２５に示した情報をイベントバスから受信する動作の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図１に示す演算処理装置１００は、演算処理部１０、監視部２０およびアクセス制御部３０を有する。演算処理部１０は、バスＢＵＳを介して記憶装置２００に接続される。演算処理装置１００は、ＣＰＵ等のプロセッサであり、演算処理部１０は、ＣＰＵコア等のプロセッサコアである。記憶装置２００は、データを格納するために割り当てられたデータ領域２０２と、データ領域２０２が使用可能であることを示す使用可能情報を格納するために割り当てられた情報格納領域２０４とを有する。記憶装置２００は、ＤＲＡＭ（Dynamic Random Access Memory）等を含む主記憶装置または複数の主記憶装置が搭載されたメモリモジュール等である。
【００１３】
例えば、データ領域２０２には、演算処理部１０が処理するデータが書き込まれる。この場合、演算処理部１０は、記憶装置２００に割り当てられたデータ領域２０２に書き込まれたデータを用いてデータ処理を実行する。データ領域２０２へのデータの書き込みは、アクセス制御部３０により実行される。演算処理部１０は、データ処理の実行によりデータ領域２０２が空き、新たなデータをデータ領域２０２に書き込み可能な場合（すなわち、データ領域２０２がアクセス制御部３０により使用可能な場合）、対応するデータ領域２０２が使用可能である旨を示す使用可能情報を情報格納領域２０４に書き込む。
【００１４】
あるいは、データ領域２０２には、演算処理部１０によるデータ処理の実行により得られたデータが書き込まれる。この場合、演算処理部１０は、データ処理の実行により得たデータをデータ領域２０２に格納する。データ領域２０２に書き込まれたデータの読み出しは、アクセス制御部３０により実行される。演算処理部１０は、データ処理の実行により得たデータをデータ領域２０２に書き込んだ場合、対応するデータ領域が使用可能である旨を示す使用可能情報を情報格納領域２０４に書き込む。すなわち、アクセス制御部３０がデータ領域２０２に保持されたデータを読み出すためにデータ領域２０２を使用可能な場合、演算処理部１０は、情報格納領域２０４に使用可能情報を書き込む。
【００１５】
監視部２０は、バスＢＵＳを監視し、演算処理部１０による情報格納領域２０４への書き込みを検出した場合、情報格納領域２０４への書き込みを示す書き込み発生情報をバスＢＵＳとは異なる信号線ＥＢに出力する。アクセス制御部３０は、信号線ＥＢを介して書き込み発生情報を受信した場合、バスＢＵＳを介して情報格納領域２０４が保持する情報を読み出す。アクセス制御部３０は、情報格納領域２０４から読み出した使用可能情報が対応するデータ領域２０２が使用可能である旨を示すとき、バスＢＵＳを介して対応するデータ領域２０２にアクセスする。例えば、アクセス制御部３０は、データ領域２０２にアクセスするアクセス要求（書き込みアクセス要求または読み出しアクセス要求）をバスＢＵＳに出力する。
【００１６】
図２は、図１に示す演算処理装置１００の動作の一例を示す。図２の下側のかぎ括弧内は、図１に示す監視部２０を持たない演算処理装置の動作の一例を示す。
【００１７】
演算処理部１０は、データ処理の実行によりデータ領域２０２が空き、データ処理する新たなデータをデータ領域２０２が保持可能な場合、情報格納領域２０４にデータ領域２０２が使用可能である旨を示す使用可能情報を書き込む（図２（ａ））。例えば、演算処理部１０は、データ領域２０２に空きができ、使用可能になる毎に、情報格納領域２０４に含まれる所定のビットを反転することで使用可能情報を書き込む。監視部２０は、情報格納領域２０４への書き込みを検出した場合、書き込み発生情報をアクセス制御部３０に出力する（図２（ｂ））。
【００１８】
アクセス制御部３０は、書き込み発生情報の受信に基づいて、情報格納領域２０４にアクセスし、情報格納領域２０４が保持する使用可能情報を読み出す（図２（ｃ））。すなわち、アクセス制御部３０は、演算処理部１０による情報格納領域２０４への書き込みにより情報格納領域２０４に使用可能情報が書き込まれたか否かをチェックする。アクセス制御部３０は、情報格納領域２０４から対応するデータ領域が使用可能である旨を示す使用可能情報を読み出した場合、データ領域２０２に空きがあると判定する。そして、アクセス制御部３０は、演算処理装置１００の外部からの処理要求に基づいて、演算処理部１０に処理させるデータをデータ領域２０２に書き込む（図２（ｄ））。なお、アクセス制御部３０が処理要求を受信するタイミングは、図２に示す例に限定されず、演算処理部１０が使用可能情報を情報格納領域２０４に書き込む前でもよく、アクセス制御部３０が使用可能情報を情報格納領域２０４から読み出した後でもよい。
【００１９】
図２の上側に示す動作では、アクセス制御部３０は、演算処理部１０による使用可能情報の書き込みに応答して、情報格納領域２０４が保持する使用可能情報を読み出すことができる。このため、演算処理部１０が使用可能情報を情報格納領域２０４に書き込んでから、アクセス制御部３０が演算処理部１０に処理させるデータをデータ領域２０２に書き込むまでに掛かる時間を、図２の下側に示す動作に比べて短縮することができる。この結果、演算処理装置１００の処理性能を図２の下側に示す動作に比べて向上することができる。また、アクセス制御部３０は、情報格納領域２０４に複数回アクセスすることなく、情報格納領域２０４から使用可能情報を読み出すことができる。このため、バスＢＵＳを使用して情報格納領域２０４から使用可能情報を読み出すことによるバスＢＵＳの負荷の増大を、図２の下側に示す動作に比べて軽減することができる。
【００２０】
演算処理部１０は、データ領域２０２に書き込まれたデータを読み出し、データ処理を実行する（図２（ｅ））。演算処理部１０は、データ処理の完了により、データ領域２０２に保持されるデータが使用済みとなったことに基づいて、データ領域２０２が使用可能になった旨を示す次の使用可能情報を情報格納領域２０４に書き込む（図２（ｆ））。監視部２０は、情報格納領域２０４への書き込みの検出に基づいて、書き込み発生情報をアクセス制御部３０に出力する（図２（ｇ））。
【００２１】
これに対して、監視部２０を持たない演算処理装置のアクセス制御部は、情報格納領域２０４から使用可能情報を読み出すプリフェッチを、データ領域２０２が使用可能である旨を示す使用可能情報を読み出すまで繰り返し実行する（図２（ｈ））。ここで、プリフェッチは、アクセス制御部３０が発行するプリフェッチ要求と、プリフェッチ要求に応答して情報格納領域２０４から出力される情報をアクセス制御部が受信する動作とを含む。バスＢＵＳの負荷は、プリフェッチの回数が多いほど増大する。アクセス制御部は、複数のプリフェッチの実行によりデータ領域２０２が使用可能である旨を示す使用可能情報を読み出せた場合、演算処理装置の外部からの処理要求に基づいて、演算処理部に処理させるデータをデータ領域２０２に書き込む（図２（ｉ））。以降の動作は、図２の上側に示す動作と同様である。
【００２２】
図２の下側に示す動作では、演算処理部による使用可能情報の情報格納領域２０４への書き込みタイミングと、プリフェッチにより情報格納領域２０４から情報を読み出すタイミングとは、同期していない。このため、使用可能情報の情報格納領域２０４への書き込みからアクセス制御部によるデータ領域２０２へのデータの書き込みまでに掛かる時間は、図２の上側に示す動作に比べて長くなる。また、複数回のプリフェッチにより、メモリバスの負荷は、図２の上側に示す動作に比べて増大する。
【００２３】
図３は、図１に示す演算処理装置１００の動作の別の例を示す。図３の下側のかぎ括弧内は、図１に示す監視部２０を持たない演算処理装置の動作の別の例を示す。
【００２４】
演算処理部１０は、データ処理を実行後、データ処理により得たデータをデータ領域２０２に書き込む（図３（ａ））。また、演算処理部１０は、データ領域２０２内のデータが使用可能（読み出し可能）になった旨を示す使用可能情報を情報格納領域２０４に書き込む（図３（ｂ））。監視部２０は、情報格納領域２０４への書き込みを検出した場合、書き込み発生情報をアクセス制御部３０に出力する（図３（ｃ））。
【００２５】
アクセス制御部３０は、書き込み発生情報の受信に基づいて、情報格納領域２０４にアクセスし、情報格納領域２０４が保持する使用可能情報を読み出す（図３（ｄ））。すなわち、アクセス制御部３０は、演算処理部１０による情報格納領域２０４への書き込みにより情報格納領域２０４にデータ領域２０２が使用可能である旨を示す使用可能情報が書き込まれたか否かをチェックする。アクセス制御部３０は、情報格納領域２０４からデータ領域２０２が使用可能である旨を示す使用可能情報を読み出した場合、データ領域２０２にデータ処理により得られたデータがあると判定する。そして、アクセス制御部３０は、演算処理部１０が処理したデータをデータ領域２０２から読み出す（図３（ｅ））。例えば、アクセス制御部３０は、データ領域２０２から読み出したデータを演算処理装置１００の外部に出力する（図３（ｆ））。
【００２６】
図３の上側に示す動作では、アクセス制御部３０は、演算処理部１０による使用可能情報の書き込みに応答して、情報格納領域２０４が保持する情報を読み出すことができる。このため、演算処理部１０が使用可能情報を情報格納領域２０４に書き込んでから、演算処理部１０が処理したデータをアクセス制御部３０がデータ領域２０２から読み出すまでに掛かる時間を、図３の下側に示す動作に比べて短縮することができる。この結果、演算処理装置１００の処理性能を図３の下側に示す動作に比べて向上することができる。また、図２と同様に、アクセス制御部３０は、情報格納領域２０４に複数回アクセスすることなく、情報格納領域２０４から使用可能情報を読み出すことができる。このため、バスＢＵＳを使用して情報格納領域２０４から使用可能情報を読み出すことによるバスＢＵＳの負荷の増大を、図３の下側に示す動作に比べて軽減することができる。
【００２７】
これに対して、監視部２０を持たない演算処理装置のアクセス制御部は、情報格納領域２０４から使用可能情報を読み出すプリフェッチを、データ領域２０２が使用可能である旨を示す使用可能情報を読み出すまで繰り返し実行する（図３（ｇ））。アクセス制御部は、複数のプリフェッチの実行によりデータ領域２０２が使用可能である旨を示す使用可能情報を読み出せた場合、データ領域２０２にアクセスし、演算処理部が処理したデータをデータ領域２０２から読み出す（図３（ｈ））。
【００２８】
図３の下側に示す動作では、演算処理部による使用可能情報の情報格納領域２０４への書き込みタイミングと、プリフェッチにより情報格納領域２０４から情報を読み出すタイミングとは、同期していない。このため、使用可能情報の情報格納領域２０４への書き込みから、アクセス制御部によりデータ領域２０２からデータを読み出すまでに掛かる時間は、図３の上側に示す動作に比べて長くなる。また、複数回のプリフェッチにより、メモリバスの負荷は、図３の上側に示す動作に比べて増大する。
【００２９】
以上、図１に示す演算処理装置１００では、アクセス制御部３０は、演算処理部１０により情報格納領域２０４がアクセスされたことを示す書き込み発生情報を、信号線ＥＢを介して受信する。これにより、アクセス制御部３０は、データ領域２０２が使用可能である旨を示す使用可能情報を情報格納領域２０４が保持している可能性を、バスＢＵＳを使用することなく検出することができる。さらに、情報格納領域２０４から使用可能情報を読み出すためのプリフェッチを繰り返し実行することがないため、情報格納領域２０４へのアクセスによるバスＢＵＳの負荷への影響を、プリフェッチの実行を繰り返す場合に比べて小さくすることができる。監視部２０からアクセス制御部３０への書き込み発生情報の転送は、バスＢＵＳを使用することなく実行される。また、監視部２０によるバスＢＵＳの監視は、バスＢＵＳの負荷に影響せず、演算処理部１０等の他のデバイスによるメモリアクセスのレイテンシを増加させる要因にならない。この結果、記憶装置２００上のデータ領域２０２が使用可能であることを、情報格納領域２０４への最小限の数のアクセスにより検出することができ、記憶装置２００へのアクセスの負荷の増大を抑制することができる。
【００３０】
図４は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。この実施形態の演算処理装置ＣＰＵ３は、演算処理装置ＣＰＵ０、ＣＰＵ１、ＣＰＵ２およびインタコネクトネットワークＩＣＮＷとともに、１つの半導体チップに搭載される。以下では、演算処理装置ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、単にＣＰＵと称される。
【００３１】
ＣＰＵ３は、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０、ＣＰＵ１、ＣＰＵ２に接続され、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２との間でパケットを送受信する。また、ＣＰＵ３は、外部メモリバスＥＭＢを介して複数のメモリモジュールＤＩＭＭ（Dual Inline Memory Module）に接続される。メモリモジュールＤＩＭＭは、記憶装置の一例である。ＣＰＵ０−ＣＰＵ３およびインタコネクトネットワークＩＣＮＷを含む半導体チップと、メモリモジュールＤＩＭＭとは、情報処理装置ＩＰＥ１に搭載される。
【００３２】
ＣＰＵ３は、ＣＰＵコアＣＯＲＥ（ＣＯＲＥ０、ＣＯＲＥ１）、システムコントローラＳＣＮＴＬ、ＤＭＡＣおよびメモリアクセスコントローラＭＡＣを有する。以下では、ＣＰＵコアＣＯＲＥ０、ＣＯＲＥ１は、単にコアＣＯＲＥと称され、メモリアクセスコントローラＭＡＣは、単にＭＡＣと称され、メモリモジュールＤＩＭＭは、単にＤＩＭＭと称される。ＣＰＵ０、ＣＰＵ１、ＣＰＵ２は、ＣＰＵ３のコアＣＯＲＥに処理させるデータのＤＩＭＭへの書き込み要求をＤＭＡＣに出力する制御装置の一例である。コアＣＯＲＥは、演算処理部の一例である。
【００３３】
ＤＭＡＣは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２に接続され、メインバスＭＡＩＮＢを介してシステムコントローラＳＣＮＴＬに接続され、イベントバスＥＢを介してＭＡＣに接続される。イベントバスＥＢは、メモリバスＭＢと異なる信号線の一例である。ＤＭＡＣは、コアＣＯＲＥから受信するデータ転送命令に基づいて、ＤＩＭＭからデータを読み出し、読み出したデータをＣＰＵ０−ＣＰＵ２のいずれかに転送する機能を有する。また、ＤＭＡＣは、ＣＰＵ０−ＣＰＵ２から受信したパケットを、パケットに含まれるアドレスに基づいてＤＩＭＭに書き込む機能を有する。ＤＭＡＣは、ＤＩＭＭに割り当てられるライトキューＷＱＵＥ（図５）に保持された情報をプリフェッチするための読み出し要求をメモリバスＭＢに出力するプリフェッチ制御部ＰＦＣＮＴＬを有する。プリフェッチ制御部ＰＦＣＮＴＬは、アクセス制御部の一例である。プリフェッチ制御部ＰＦＣＮＴＬの例は、図７に示され、プリフェッチ制御部ＰＦＣＮＴＬの動作の例は、図９および図１０に示される。
【００３４】
システムコントローラＳＣＮＴＬは、コアＣＯＲＥおよびＤＭＡＣ等のマスタデバイスが出力するメモリアクセス要求を調停するとともに、キャッシュコヒーレンスの制御を実行するメモリ処理部ＭＭＮＧを有する。例えば、キャッシュメモリは、各コアＣＯＲＥに内蔵され、あるいは、ＣＰＵ３内に設けられる。メモリ処理部ＭＭＮＧは、メモリバスＭＢを介してＭＡＣに接続される。
【００３５】
ＭＡＣは、イベント採取部ＥＶＮＴと、ＤＩＭＭの動作を制御するメモリコントローラＭＣＮＴＬとを有する。イベント採取部ＥＶＮＴは、メモリバスＭＢを監視し、メモリバスＭＢに伝達されるメモリアクセス要求に含まれる情報を取得し、取得した情報に基づいてコアＣＯＲＥがライトキューＷＱＵＥに書き込みアクセスしたことを検出する。そして、イベント採取部ＥＶＮＴは、検出結果に基づいて、ライトキューＷＱＵＥに使用可能なエントリがあることを示す使用可能情報（後述するバリッドビットＶ０）を、イベントバスＥＢを介してＤＭＡＣに出力する。イベント採取部ＥＶＮＴは、メモリバスＭＢを監視し、コアＣＯＲＥによる情報格納領域への書き込みを検出した場合、書き込み発生情報をメモリバスＭＢとは異なるイベントバスＥＢに出力する監視部の一例である。ライトキューＷＱＵＥに使用可能なエントリがあることを示す情報は、書き込み発生情報の一例である。イベント採取部ＥＶＮＴの例は、図６に示され、イベント採取部ＥＶＮＴの動作の例は、図８に示される。
【００３６】
イベント採取部ＥＶＮＴは、メモリバスＭＢを監視するが、メモリバスＭＢにデータ等を出力しないため、イベント採取部ＥＶＮＴの動作によりメモリバスＭＢの負荷が増加することを抑止することができる。図５に示すライトキューＷＱＵＥは、情報処理装置ＩＰＥ１の仕様に応じてコアＣＯＲＥ０、ＣＯＲＥ１のいずれかにより制御される。イベント採取部ＥＶＮＴは、メモリバスＭＢを監視するため、ライトキューＷＱＵＥがコアＣＯＲＥ０、ＣＯＲＥ１のいずれにより制御される場合にも、ライトキューＷＱＵＥの書き込みアクセスを検出することができる。
【００３７】
図５は、図４に示す情報処理装置ＩＰＥ１で使用するアドレス空間のうち、ＤＩＭＭに割り当てられる領域の一例を示す。例えば、ＤＩＭＭは、４０ビットの物理アドレスＰＡ［３９：０］によりアクセスされる。ＤＩＭＭのアドレス空間には、ライトキューＷＱＵＥおよび完了キューＣＱＵＥと、ライトキューＷＱＵＥの先頭アドレスＷＱＵＥＡＤが格納される領域と、完了キューＣＱＵＥの先頭アドレスＣＱＵＥＡＤが格納される領域とが割り当てられる。また、ＤＩＭＭのアドレス空間には、ＣＰＵ０−ＣＰＵ２から受信するパケットに含まれるデータ等の情報が格納される領域であって、コアＣＯＲＥにより処理されるデータが格納される複数のデータ領域ＤＴＡが割り当てられる。
【００３８】
ライトキューＷＱＵＥは、バリッドビットＶ０およびデータ領域ＤＴＡの先頭アドレスを示すポインタ情報ＰＯＩＮＴＥＲがそれぞれ格納される複数のエントリＷＱＵＥ（ｉ）（例えば、”ｉ”は０−１５のいずれか）を有する。ライトキューＷＱＵＥは、情報格納領域の一例である。完了キューＣＱＵＥは、バリッドビットＶ１およびデータ領域ＤＴＡの先頭アドレスを示すポインタ情報ＰＯＩＮＴＥＲがそれぞれ格納される複数のエントリＣＱＵＥ（ｉ）（例えば、”ｉ”は０−１５のいずれか）を有する。ライトキューＷＱＵＥの各エントリＷＱＵＥ（ｉ）と完了キューＣＱＵＥの各エントリＣＱＵＥ（ｉ）とは、互いに対応している。例えば、ライトキューＷＱＵＥの最初のエントリＷＱＵＥ（０）に格納されるポインタ情報ＰＯＩＮＴＥＲは、完了キューＣＱＵＥの最初のエントリＣＱＵＥ（０）に格納されるポインタ情報ＰＯＩＮＴＥＲと同じである。すなわち、エントリＷＱＵＥ（０）に保持されるポインタ情報ＰＯＩＮＴＥＲが示すデータ領域ＤＴＡは、エントリＣＱＵＥ（０）に保持されるポインタ情報ＰＯＩＮＴＥＲが示すデータ領域ＤＴＡと同じである。以下では、ポインタ情報ＰＯＩＮＴＥＲにより示されるアドレスは、ポインタ値ＰＯＩＮＴＥＲとも称される。
【００３９】
ライトキューＷＱＵＥは、リングバッファ構造を有し、先頭のエントリＷＱＵＥ（０）から順に使用され、最後のエントリＷＱＵＥ（１５）が使用された後、再び先頭のエントリＷＱＵＥ（０）から順に使用される。同様に、完了キューＣＱＵＥの各々は、リングバッファ構造を有し、先頭のエントリＣＱＵＥ（０）から順に使用され、最後のエントリＣＱＵＥ（１５）が使用された後、再び先頭のエントリＣＱＵＥ（０）から順に使用される。なお、図５では、ＤＭＡＣからＣＰＵ０−ＣＰＵ２に出力されるデータの転送に使用されるデータ領域等は省略される。
【００４０】
ライトキューＷＱＵＥの各エントリＷＱＵＥ（ｉ）において、バリッドビットＶ０は、エントリＷＱＵＥ（ｉ）に対応するデータ領域ＤＴＡが使用可能か否かを示す。すなわち、バリッドビットＶ０の値は、対応するデータ領域ＤＴＡが使用可能か否かを示す使用可能情報を示す。コアＣＯＲＥは、ＣＰＵ０−ＣＰＵ２のいずれかから転送されるデータ処理用のパケットをＤＭＡＣがデータ領域ＤＡＴに格納可能になった場合、データ領域ＤＴＡに対応するエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を反転する。例えば、コアＣＯＲＥは、データ領域ＤＴＡに格納されたデータを用いてデータ処理を実行した後、データ領域ＤＴＡに対応するエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を反転する。反転されたバリッドビットＶ０は、エントリＷＱＵＥ（ｉ）に対応するデータ領域ＤＴＡが使用可能であることを示す使用可能情報を示す。ライトキューＷＱＵＥは、リングバッファ構造を有し、エントリＷＱＵＥ（ｉ）に対応するデータ領域ＤＡＴは、データ処理が順次実行されることにより順次使用可能になる。このため、ＤＭＡＣは、順次反転されるエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を検出することで、使用可能なデータ領域ＤＡＴを判定することができる。
【００４１】
ＤＭＡＣは、ライトキューＷＱＵＥの各エントリＷＱＵＥ（ｉ）のバリッドビットＶ０の履歴を保持している。ＤＭＡＣは、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）に保持された情報を読み出すプリフェッチパケットを発行する。ＤＭＡＣは、プリフェッチパケットに対応する応答パケットに含まれるバリッドビットＶ０の値が、バリッドビットＶ０の履歴と異なる場合、バリッドビットＶ０が反転されたことを検出する。ＤＭＡＣは、バリッドビットＶ０の反転を検出した場合、応答パケットに含まれるポインタ値ＰＯＩＮＴＥＲ（アドレス）により示されるデータ領域ＤＴＡが使用可能であると暫定的に判定する。
【００４２】
ＤＭＡＣは、コアＣＯＲＥに処理させるデータを含むパケットをＣＰＵ０−ＣＰＵ２のいずれかから受信した場合、使用可能なデータ領域ＤＴＡにデータを書き込む書き込みパケットを発行する。ＤＭＡＣは、データ領域ＤＴＡへのデータの書き込みを完了した後、データを書き込んだデータ領域ＤＴＡに対応するエントリＣＱＵＥ（ｉ）にアクセスし、バリッドビットＶ１を反転し、データ領域ＤＴＡのアドレスをポインタ値ＰＯＩＮＴＥＲとして書き込む。
【００４３】
コアＣＯＲＥは、各エントリＣＱＵＥ（ｉ）のバリッドビットＶ１の履歴を保持している。コアＣＯＲＥは、一定間隔で完了キューＣＱＵＥをポーリングし、バリッドビットＶ１の反転を検出することで、ＤＭＡＣによるデータ領域ＤＴＡへのデータの格納が完了したことを検出する。コアＣＯＲＥは、バリッドビットＶ１の反転を検出したエントリＣＱＵＥ（ｉ）からポインタ値ＰＯＩＮＴＥＲ（アドレス）を読み出し、読み出したポインタ値ＰＯＩＮＴＥＲにより示されるデータ領域ＤＴＡからデータを読み出し、データ処理を実行する。コアＣＯＲＥは、データ処理の実行後、上述したように、データ処理対象のデータを保持するデータ領域ＤＴＡに対応するエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を反転することでエントリＷＱＵＥ（ｉ）を有効（使用可能）にする。なお、コアＣＯＲＥは、エントリＷＱＵＥ（ｉ）に対応するデータ領域ＤＴＡの割り当てを変更する場合、新たなデータ領域ＤＴＡを示すポインタ値ＰＯＩＮＴＥＲをエントリＷＱＵＥ（ｉ）に書き込む。
【００４４】
図６は、図４に示すイベント採取部ＥＶＮＴの一例を示す。イベント採取部ＥＶＮＴは、要求解析部ＲＥＱＡＮＬ、イベントテーブルＥＶＴＢＬおよびテーブル制御部ＴＢＬＣＮＴＬを有する。
【００４５】
要求解析部ＲＥＱＡＮＬは、メモリバスＭＢを監視し、コアＣＯＲＥがメモリバスＭＢを介してメモリコントローラＭＣＮＴＬに出力するメモリアクセス要求を解析し、メモリアクセス要求がライトキューＷＱＵＥへの書き込みアクセス要求であるか否かを判定する。要求解析部ＲＥＱＡＮＬは、ライトキューＷＱＵＥへの書き込みアクセス要求を検出した場合、書き込みアクセス要求に含まれる書き込みアドレスをテーブル制御部ＴＢＬＣＮＴＬに出力する。ここで、書き込みアドレスは、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）のいずれかを示すアドレスである。
【００４６】
イベントテーブルＥＶＴＢＬは、バリッドビットＶ、物理アドレスＰＡおよびカウンタ値ＣＯＵＮＴがそれぞれ格納される複数のエントリＥＮＴ（図６の例では１６個のＥＮＴ０−ＥＮＴ１５）を有する。例えば、エントリＥＮＴ０−ＥＮＴ１５は、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）にそれぞれ対応して設けられ、Ｉ／Ｏ空間に割り当てられる。バリッドビットＶおよび物理アドレスＰＡは、コアＣＯＲＥにより設定され、カウンタ値ＣＯＵＮＴは、イベント採取部ＥＶＮＴのテーブル制御部ＴＢＬＣＮＴＬにより設定される。
【００４７】
４０ビットの物理アドレスＰＡ［３９：０］は、図４に示すライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）のアドレスを示し、カウンタ値ＣＯＵＮＴは、物理アドレスＰＡにより示されるライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）が使用可能か否かを示す。各エントリＥＮＴのカウンタ値ＣＯＵＮＴは、各エントリＷＱＵＥ（ｉ）に対する書き込みアクセス要求が発生した場合に、”１”に設定される。各エントリＥＮＴは、各エントリＷＱＵＥ（ｉ）に対する書き込みアクセス要求の検出回数を保持する第１の保持部の一例である。各エントリＥＮＴのカウンタ値ＣＯＵＮＴは、テーブル制御部ＴＢＬＣＮＴＬからのリセット信号ＲＳＴに基づいて初期値”０”にリセットされ、テーブル制御部ＴＢＬＣＮＴＬからの増加信号ＵＰに基づいて”１”に設定される。
【００４８】
テーブル制御部ＴＢＬＣＮＴＬは、書き込みアクセス要求に含まれる書き込みアドレスがイベントテーブルＥＶＴＢＬのエントリＥＮＴのいずれかに格納されたアドレスＰＡと一致する場合、イベントテーブルＥＶＴＢＬに増加信号ＵＰを出力する。また、テーブル制御部ＴＢＬＣＮＴＬは、エントリＥＮＴのいずれかのカウンタ値ＣＯＵＮＴが”１”に設定された場合、イベントバスＥＢを介してエントリＥＮＴを示す情報とカウンタ値ＣＯＵＮＴとをＤＭＡＣに出力する。イベントバスＥＢに出力されるエントリＥＮＴを示す情報は、エントリＥＮＴに対応するエントリＷＱＵＥ（ｉ）が有効であり、有効なエントリＷＱＵＥ（ｉ）のポインタ値ＰＯＩＮＴＥＲで示されるデータ領域ＤＴＡが使用可能であることを示す。なお、テーブル制御部ＴＢＬＣＮＴＬは、カウンタ値ＣＯＵＮＴをＤＭＡＣに出力せず、エントリＥＮＴを示す情報（例えば、エントリＥＮＴの番号）のみをＤＭＡＣに出力してもよい。
【００４９】
テーブル制御部ＴＢＬＣＮＴＬは、イベントバスＥＢに出力したカウンタ値ＣＯＵＮＴを初期化するために、リセット信号ＲＳＴを出力する。テーブル制御部ＴＢＬＣＮＴＬは、エントリＥＮＴが保持するカウンタ値ＣＯＵＮＴをＤＭＡＣに出力した後にリセットする検出回数制御部の一例である。
【００５０】
図７は、図４に示すＤＭＡＣのプリフェッチ制御部ＰＦＣＮＴＬの一例を示す。プリフェッチ制御部ＰＦＣＮＴＬは、エントリ保持部ＥＮＴＨＬＤ、プリフェッチパケット制御部ＰＦＰＣ、カウンタ値保持部ＣＨＬＤ、セレクタＳＥＬ５および受信処理部ＲＳＶＭＮＧを有する。
【００５１】
エントリ保持部ＥＮＴＨＬＤは、プリフェッチパケット制御部ＰＦＰＣが発行するプリフェッチパケットに対応する応答パケットに含まれるライトキューＷＱＵＥのポインタ値ＰＯＩＮＴＥＲが格納される複数のエントリ（例えば、８個）を有する。プリフェッチパケットは、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）のいずれか１つからポインタ値ＰＯＩＮＴＥＲをプリフェッチするために発行される。例えば、プリフェッチ制御部ＰＦＣＮＴＬは、コアＣＯＲＥに処理させるデータを含むパケットをＣＰＵ０−ＣＰＵ２から受信する前に、データを格納するデータ領域ＤＴＡを示すポインタ値ＰＯＩＮＴＥＲ（アドレス）を予め取得する。エントリ保持部ＥＮＴＨＬＤは、ポインタ値ＰＯＩＮＴＥＲを保持するアドレス保持部の一例である。
【００５２】
カウンタ値保持部ＣＨＬＤは、イベントテーブルＥＶＴＢＬのエントリＥＮＴ０−ＥＮＴ１５に対応するエントリＥＮＴＣ（ＥＮＴＣ０−ＥＮＴＣ１５）を有する。カウンタ値保持部ＣＨＬＤは、イベントバスＥＢを介してエントリＥＮＴを示す情報を受信した場合、受信した情報により示されるエントリＥＮＴに対応するエントリＥＮＴＣのカウンタ値ＣＯＵＮＴを”１”に設定する。各エントリＥＮＴＣは、イベントバスＥＢを介して受信するカウンタ値ＣＯＵＮＴを保持する第２の保持部の一例である。
【００５３】
プリフェッチパケット制御部ＰＦＰＣは、エントリ保持部ＥＮＴＨＬＤのエントリに空きがあり、かつ、エントリＥＮＴＣのいずれかに保持されるカウンタ値ＣＯＵＮＴが”１”の場合、プリフェッチパケットをメインバスＭＡＩＮＢに発行する。プリフェッチパケットは、カウンタ値ＣＯＵＮＴが”１”のエントリＥＮＴＣに対応するライトキューＷＱＵＥのエントリＷＱＵＥ（ｎ）を指定して発行される。すなわち、プリフェッチパケット制御部ＰＦＰＣは、エントリＷＱＵＥ（ｎ）が保持する情報を読み出す読み出し要求であるプリフェッチパケットを、エントリＥＮＴＣが保持する値だけ出力する。また、プリフェッチ制御部ＰＦＣＮＴＬは、プリフェッチパケットの発行に基づいて、プリフェッチパケットで指定したエントリＥＮＴに対応するエントリＥＮＴＣに保持されたカウンタ値ＣＯＵＮＴを”０”にリセットする。プリフェッチパケット制御部ＰＦＰＣは、読み出し制御部の一例である。
【００５４】
プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに対応してメインバスＭＡＩＮＢ０から受信する応答パケットが有効な場合、応答パケットに含まれるポインタ値ＰＯＩＮＴＥＲをエントリ保持部ＥＮＴＨＬＤに格納する指示を出力する。ここで、応答パケットは、プリフェッチパケットで指定されたライトキューＷＱＵＥのエントリＥＮＴの情報（バリッドビットＶ０およびポインタ値ＰＯＩＮＴＥＲ）を含み、バリッドビットＶ０に基づいて有効か否かが判定される。プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれるバリッドビットＶ０により応答パケットが有効を示す場合、ポインタ値ＰＯＩＮＴＥＲにより示されるデータ領域ＤＴＡが使用可能であると判定する。
【００５５】
プリフェッチパケット制御部ＰＦＰＣは、応答パケットが無効な場合、プリフェッチパケットの発行時にリセットしたカウンタ値ＣＯＵＮＴを”１”に戻す指示をカウンタ値保持部ＣＨＬＤに出力する。カウンタ値保持部ＣＨＬＤは、プリフェッチパケット制御部ＰＦＰＣからの指示に基づいて、カウンタ値ＣＯＵＮＴを”１”に戻す。これにより、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットを再度出力する。すなわち、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに応答してライトキューＷＱＵＥのエントリＷＱＵＥ（ｎ）から使用可能情報（バリッドビットＶ０の反転）が読み出されない場合、プリフェッチパケットを再度出力する。したがって、エントリＥＮＴＣのカウンタ値ＣＯＵＮＴに基づいてプリフェッチパケットを発行し、応答パケットが無効な場合にも、プリフェッチパケット制御部ＰＦＰＣは、使用可能なデータ領域ＤＴＡの数を正しく認識することができる。
【００５６】
受信処理部ＲＳＶＭＮＧは、インタコネクトネットワークＩＣＮＷを介して受信するＣＰＵ０−ＣＰＵ２からのパケットを、セレクタＳＥＬ５を介してメインバスＭＡＩＮＢ０に出力する機能を有する。受信処理部ＲＳＶＭＮＧは、ＣＰＵ０−ＣＰＵ２からコアＣＯＲＥに処理させるデータを含むパケットを受信した場合、受信したパケットをパケット保持部ＰＨＬＤに保持する。
【００５７】
受信処理部ＲＳＶＭＮＧは、エントリ保持部ＥＮＴＨＬＤのエントリのいずれかがポインタ値ＰＯＩＮＴＥＲを保持している場合、ポインタ値ＰＯＩＮＴＥＲにより示されるデータ領域ＤＴＡに、ＣＯＲＥに処理させるデータを書き込む書き込みパケットを生成する。受信処理部ＲＳＶＭＮＧは、生成した書き込みパケットで使用したポインタ値ＰＯＩＮＴＥＲをエントリ保持部ＥＮＴＨＬＤから削除する。そして、受信処理部ＲＳＶＭＮＧは、生成した書き込みパケットを、セレクタＳＥＬ５を介してメインバスＭＡＩＮＢ０に出力する。セレクタＳＥＬ５は、プリフェッチパケットまたは書き込みパケットを選択して、メインバスＭＡＩＮＢ０に出力する。受信処理部ＲＳＶＭＮＧの動作の例は、図１０に示される。
【００５８】
図８は、図６に示すイベント採取部ＥＶＮＴの動作の一例を示す。図８に示す動作は、所定の頻度で実行される。
【００５９】
まず、ステップＳ１０において、イベント採取部ＥＶＮＴは、要求解析部ＲＥＱＡＮＬが、メモリバスＭＢ上の書き込みアクセス要求を検出した場合、処理をステップＳ１２に移行する。イベント採取部ＥＶＮＴは、書き込みアクセス要求を検出しない場合、処理をステップＳ１６に移行する。
【００６０】
ステップＳ１２において、イベント採取部ＥＶＮＴは、イベントテーブルＥＶＴＢＬの各エントリＥＮＴに保持された物理アドレスＰＡと、要求解析部ＲＥＱＡＮＬが検出した書き込みアクセス要求に含まれる物理アドレスＰＡとを比較する。イベント採取部ＥＶＮＴは、物理アドレスＰＡが互いに一致するエントリＥＮＴがある場合、エントリＥＮＴに対応するライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）が有効になったと判定し、処理をステップＳ１４に移行する。すなわち、イベント採取部ＥＶＮＴは、物理アドレスＰＡが互いに一致するエントリＥＮＴがある場合、書き込みアクセス要求により当該エントリＥＮＴのバリッドビットＶ０が反転されたと判定し、当該エントリＥＮＴが有効になったと判定する。イベント採取部ＥＶＮＴは、物理アドレスＰＡが互いに異なる場合、処理をステップＳ１６に移行する。
【００６１】
ステップＳ１４において、イベント採取部ＥＶＮＴは、物理アドレスＰＡが互いに一致するエントリＥＮＴのカウンタ値ＣＯＵＮＴを”１”に設定し、処理をステップＳ１６に移行する。例えば、イベント採取部ＥＶＮＴは、ライトキューＷＱＵＥ上から４番目のエントリＷＱＵＥ（３）のバリッドビットＶ０が反転されたと判定した場合、イベントテーブルＥＶＴＢＬのエントリＥＮＴ３のカウンタ値ＣＯＵＮＴを”１”に設定する。
【００６２】
次に、ステップＳ１６において、イベント採取部ＥＶＮＴは、カウンタ値ＣＯＵＮＴをＤＭＡＣに出力する出力タイミングが到来した場合、処理をステップＳ１８に移行する。イベント採取部ＥＶＮＴは、カウンタ値ＣＯＵＮＴをＤＭＡＣに出力する出力タイミングが到来していない場合、処理を終了する。
【００６３】
ステップＳ１８において、イベント採取部ＥＶＮＴは、”１”に設定したエントリＥＮＴのカウンタ値ＣＯＵＮＴを、エントリＥＮＴの番号等の情報とともに、イベントバスＥＢを介してＤＭＡＣに出力する。次に、ステップＳ１９において、イベント採取部ＥＶＮＴは、カウンタ値ＣＯＵＮＴを”０”にリセットし、処理を終了する。
【００６４】
図９は、図７に示すプリフェッチ制御部ＰＦＣＮＴＬにおけるプリフェッチパケット制御部ＰＦＰＣの動作の一例を示す。図９に示す動作は、ＤＭＡＣにより所定の頻度で実行される。
【００６５】
まず、ステップＳ２０において、プリフェッチパケット制御部ＰＦＰＣは、エントリ保持部ＥＮＴＨＬＤに空きがある場合、処理をステップＳ２２に移行し、エントリ保持部ＥＮＴＨＬＤに空きがない場合、処理をステップＳ２８に移行する。なお、既に発行したプリフェッチパケットに対応する応答パケットを受信していない場合、エントリ保持部ＥＮＴＨＬＤの空きに拘わりなく、処理はステップＳ２８に移行される。
【００６６】
ステップＳ２２において、プリフェッチパケット制御部ＰＦＰＣは、カウンタ値保持部ＣＨＬＤのエントリＥＮＴＣのいずれかが保持するカウンタ値ＣＯＵＮＴが”１”の場合、処理をステップＳ２４に移行する。プリフェッチパケット制御部ＰＦＰＣは、カウンタ値保持部ＣＨＬＤの全てのエントリＥＮＴＣのカウンタ値ＣＯＵＮＴが”０”の場合、処理をステップＳ２８に移行する。
【００６７】
ステップＳ２４において、プリフェッチパケット制御部ＰＦＰＣは、”１”のカウンタ値ＣＯＵＮＴを保持するエントリＥＮＴＣの１つに対応するライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）に格納された情報を読み出すプリフェッチパケットを発行する。プリフェッチパケットの発行対象は、バリッドビットＶ０が最も早く反転されたエントリＷＱＵＥ（ｉ）である。なお、プリフェッチパケット制御部ＰＦＰＣは、”１”のカウンタ値ＣＯＵＮＴを保持する全てのエントリＥＮＴＣに対応するライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）に格納された情報を読み出すために複数個のプリフェッチパケットを発行してもよい。
【００６８】
次に、ステップＳ２６において、プリフェッチパケット制御部ＰＦＰＣは、カウンタ値保持部ＣＨＬＤにおいて、発行したプリフェッチパケットに対応するエントリＥＮＴＣが保持するカウンタ値ＣＯＵＮＴを”０”にリセットし、処理をステップＳ２８に移行する。
【００６９】
ステップＳ２８において、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに対応する応答パケットを受信した場合、処理をステップＳ３０に移行し、プリフェッチパケットに対応する応答パケットを受信していない場合、処理を終了する。
【００７０】
ステップＳ３０において、プリフェッチパケット制御部ＰＦＰＣは、応答パケットが有効な場合、処理をステップＳ３２に移行する。すなわち、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれるバリッドビットＶ０の反転を検出した場合、コアＣＯＲＥに処理させるデータを応答パケットに対応するデータ領域ＤＴＡに格納可能と判定し、処理をステップＳ３２に移行する。プリフェッチパケット制御部ＰＦＰＣは、応答パケットが無効な場合、処理をステップＳ３４に移行する。すなわち、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれるバリッドビットＶ０が反転していないことを検出した場合、応答パケットに対応するデータ領域ＤＴＡが使用中であると判定し、処理をステップＳ３４に移行する。
【００７１】
なお、コアＣＯＲＥによりライトキューＷＱＵＥのバリッドビットＶ０が反転された場合、イベント採取部ＥＶＮＴは、イベントテーブルＥＶＴＢＬのカウンタ値ＣＯＵＮＴを”１”に設定する。イベントテーブルＥＶＴＢＬのカウンタ値ＣＯＵＮＴは、イベントバスＥＢを介して、プリフェッチ制御部ＰＦＣＮＴＬのカウンタ値保持部ＣＨＬＤに転送される。このため、通常の動作では、カウンタ値保持部ＣＨＬＤのエントリＥＮＴＣのいずれかが保持するカウンタ値ＣＯＵＮＴが”１”の場合、応答パケットは有効になり、処理がステップＳ３４に移行することはない。
【００７２】
ステップＳ３２において、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれるポインタ値ＰＯＩＮＴＥＲをエントリ保持部ＥＮＴＨＬＤの空いているエントリに格納し、処理を終了する。エントリ保持部ＥＮＴＨＬＤに空きがない場合、プリフェッチパケットは発行されないため、ポインタ値ＰＯＩＮＴＥＲを格納するエントリが不足することを抑止することができ、ＣＰＵ３が誤動作することを抑止することができる。
【００７３】
ステップＳ３４において、プリフェッチパケット制御部ＰＦＰＣは、カウンタ値保持部ＣＨＬＤにおいて、応答パケットに対応するエントリに格納されたカウンタ値ＣＯＵＮＴを、プリフェッチパケットの発行前の値に戻し、処理を終了する。
【００７４】
図１０は、図７に示すプリフェッチ制御部ＰＦＣＮＴＬにおける受信処理部ＲＳＶＭＮＧの動作の一例を示す。図１０に示す動作は、ＤＭＡＣが所定の頻度で実行する。
【００７５】
まず、ステップＳ４０において、受信処理部ＲＳＶＭＮＧは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信した場合、処理をステップＳ４２に移行する。受信処理部ＲＳＶＭＮＧは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２のいずれからもパケットを受信していない場合、処理をステップＳ４４に移行する。
【００７６】
ステップＳ４２において、受信処理部ＲＳＶＭＮＧは、ＣＰＵ０−ＣＰＵ２のいずれかから受信したパケットをパケット保持部ＰＨＬＤに格納し、処理をステップＳ４６に移行する。ステップＳ４４において、受信処理部ＲＳＶＭＮＧは、パケット保持部ＰＨＬＤがパケットを保持している場合、処理をステップＳ４６に移行し、パケット保持部ＰＨＬＤがパケットを保持していない場合、処理を終了する。
【００７７】
ステップＳ４６において、受信処理部ＲＳＶＭＮＧは、エントリ保持部ＥＮＴＨＬＤのエントリのいずれかが、ポインタ値ＰＯＩＮＴＥＲを保持している場合、処理をステップＳ４８に移行する。受信処理部ＲＳＶＭＮＧは、エントリ保持部ＥＮＴＨＬＤがポインタ値ＰＯＩＮＴＥＲを保持していない場合、処理を終了する。ステップＳ４８において、受信処理部ＲＳＶＭＮＧは、エントリ保持部ＥＮＴＨＬＤのエントリのいずれかから読み出したポインタ値ＰＯＩＮＴＥＲを用いて書き込みパケットを生成し、生成した書き込みパケットを発行し、処理をステップＳ５０に移行する。書き込みパケットは、パケット保持部ＰＨＬＤが保持するパケットに含まれるデータをデータ領域ＤＴＡに書き込むためのパケットであり、書き込みパケットに含まれるデータ領域ＤＴＡの先頭アドレスは、ポインタ値ＰＯＩＮＴＥＲに設定される。
【００７８】
ステップＳ５０において、受信処理部ＲＳＶＭＮＧは、データ領域ＤＴＡへのデータの書き込みが完了した後、完了キューＣＱＵＥにおけるデータ領域ＤＴＡに対応するエントリＣＱＵＥ（ｉ）のバリッドビットＶ１を反転する。また、受信処理部ＲＳＶＭＮＧは、完了キューＣＱＵＥにおけるデータ領域ＤＴＡに対応するエントリＣＱＵＥ（ｉ）に、書き込みパケットに設定したポインタ値ＰＯＩＮＴＥＲを書き込み、処理を終了する。
【００７９】
図１１は、図４に示すＣＰＵ３におけるパケットの処理手順の一例を示す。図１１に示す例では、コアＣＯＲＥ０がデータ領域ＤＴＡに格納されたデータを処理する。
【００８０】
コアＣＯＲＥ０は、データ領域ＤＴＡが使用可能になった場合、ライトキューＷＱＵＥにおけるデータ領域ＤＴＡに対応するエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を反転し、エントリＷＱＵＥ（ｉ）を有効にする（図１１（ａ））。ＤＭＡＣは、イベントバスＥＢを介してバリッドビットＶ０の反転を検出する（図１１（ｂ））。ＤＭＡＣは、バリッドビットＶ０の反転の検出に基づいて、プリフェッチパケットを発行する（図１１（ｃ））。プリフェッチパケットは、バリッドビットＶ０の反転に基づいて、ライトキューＷＱＵＥに有効なエントリＷＱＵＥ（ｉ）が存在する場合に発行されるため、無駄なプリフェッチパケットの発行を抑止することができる。これにより、メモリバスＭＢおよび外部メモリバスＥＭＢの使用効率が低下することを抑止することができ、ＣＰＵ３および情報処理装置ＩＰＥ１の性能を後述する図１３に比べて向上することができる。
【００８１】
ＤＭＡＣは、プリフェッチパケットに対応する応答パケットを受信する（図１１（ｄ））。図１１に示す例では、応答パケットは有効であり、ＤＭＡＣは、応答パケットに基づいて使用可能なデータ領域ＤＴＡを検出する。図１１に示す例では、応答パケットが有効であることを判定した後、ＤＭＡＣは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信する（図１１（ｅ））。
【００８２】
ＤＭＡＣは、インタコネクトネットワークＩＣＮＷを介して受信したパケットに含まれるデータを、使用可能なデータ領域ＤＴＡに書き込むために、データ量に応じた所定数の書き込みパケットを発行する（図１１（ｆ））。プリフェッチパケットにより、ライトキューＷＱＵＥにおける使用可能なエントリＷＱＵＥ（ｉ）を示す使用可能情報を予め取得することで、ＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信後、間隔を空けずに書き込みパケットを発行することができる。これにより、メモリバスＭＢおよび外部メモリバスＥＭＢの使用効率が低下することを抑止することができ、ＣＰＵ３および情報処理装置ＩＰＥ１の性能を後述する図１２に比べて向上することができる。ＤＭＡＣは、書き込みパケットによりデータ領域ＤＴＡにデータが書き込まれた後、完了キューＣＱＵＥのエントリＣＱＵＥ（ｉ）のバリッドビットＶ１を反転し、エントリＣＱＵＥ（ｉ）にポインタ値ＰＯＩＮＴＥＲを書き込む（図１１（ｇ））。
【００８３】
コアＣＯＲＥ０は、所定の周期で完了キューＣＱＵＥをポーリングしている（図１１（ｈ））。コアＣＯＲＥ０は、完了キューＣＱＵＥにおけるバリッドビットＶ１の反転の検出に基づいて、反転したバリッドビットＶ１を含むエントリＣＱＵＥ（ｉ）に対応するデータ領域ＤＴＡからデータを読み出す（図１１（ｉ）、（ｊ））。データ領域ＤＴＡからのデータの読み出す回数は、データ量に応じて設定される。
【００８４】
コアＣＯＲＥ０は、データ領域ＤＴＡから読み出したデータに基づいてデータ処理を実行する（図１１（ｋ））。コアＣＯＲＥ０は、データ処理の完了後、ライトキューＷＱＵＥにおいて、データを読み出したデータ領域ＤＴＡに対応するエントリＷＱＵＥ（ｉ）のバリッドビットＶ０を反転し、エントリＷＱＵＥ（ｉ）を再度有効にする（図１１（ｌ））。なお、図１１では、ライトキューＷＱＵＥの１つのエントリＷＱＵＥ（ｉ）に着目して動作を説明したが、ライトキューＷＱＵＥの複数のエントリＷＱＵＥ（ｉ）に対する動作が、互いに重複して実行されてもよい。
【００８５】
図１２は、図４に示すＣＰＵ３と異なるＣＰＵにおけるパケットの処理手順の一例を示す。図１１と同様の動作については、詳細な説明は省略する。図１２は、イベント採取部ＥＶＮＴを持たないＣＰＵの動作を示す。
【００８６】
ＤＭＡＣは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信したことに基づいて、ライトキューＷＱＵＥが保持する情報を読み出す読み出しパケットを発行する（図１２（ａ）、（ｂ））。ＤＭＡＣは、読み出しパケットに対応する応答パケットが有効でない場合、読み出しパケットを繰り返し発行する（図１２（ｃ））。
【００８７】
コアＣＯＲＥ０は、データ処理の完了によりデータ領域ＤＴＡが使用可能になったため、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）のいずれかのバリッドビットＶ０を反転し、エントリＷＱＵＥ（ｉ）を有効にする（図１２（ｄ））。ＤＭＡＣは、バリッドビットＶ０が反転された後に発行した読み出しパケットに対応する応答パケットに基づいて、バリッドビットＶ０の反転を検出し、応答パケットが有効であると判定する（図１２（ｅ））。そして、ＤＭＡＣは、ＣＰＵ０−ＣＰＵ２のいずれかから受信したパケットに含まれるデータを、使用可能なデータ領域ＤＴＡに書き込むために、データ量に応じた所定数の書き込みパケットを発行する（図１２（ｆ））。この後の動作は、図１１と同様である。
【００８８】
ＤＭＡＣが、ＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信した後に有効なエントリＷＱＵＥ（ｉ）を検出する読み出しパケットを発行する場合、パケットを受信してからデータをデータ領域ＤＴＡに書き込むまでの時間は、図１１に比べて長くなる。また、ライトキューＷＱＵＥの有効なエントリＷＱＵＥ（ｉ）を検出するまでライトキューＷＱＵＥの読み出しパケットが繰り返し発行されるため、メモリアクセスの負荷は、図１１に比べて増加する。これにより、ＣＰＵの性能およびＣＰＵを含む情報処理装置の性能は、図４に示すＣＰＵ３および情報処理装置ＩＰＥ１に比べて低下する。
【００８９】
図１３は、図４に示すＣＰＵ３と異なるＣＰＵにおけるパケットの処理手順の別の例を示す。図１１と同様の動作については、詳細な説明は省略する。図１３は、図１２と同様に、イベント採取部ＥＶＮＴを持たないＣＰＵの動作を示す。
【００９０】
ＤＭＡＣは、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信する前に、ライトキューＷＱＵＥが保持する情報を読み出すプリフェッチパケットを繰り返し発行する（図１３（ａ））。そして、ＤＭＡＣは、ＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信する前に、ライトキューＷＱＵＥの有効なエントリＷＱＵＥ（ｉ）を検出する（図１３（ｂ））。
【００９１】
このため、図１１と同様に、ＤＭＡＣは、ＣＰＵ０−ＣＰＵ２のいずれかからパケットを受信したことに基づいて、受信したパケットに含まれるデータを、使用可能なデータ領域ＤＴＡに書き込むことができる。但し、ライトキューＷＱＵＥの有効なエントリＷＱＵＥ（ｉ）を検出するために、プリフェッチパケットが繰り返し発行されるため、メモリアクセスの負荷は、図１１に比べて増加する。これにより、ＣＰＵの性能およびＣＰＵを含む情報処理装置の性能は、図４に示すＣＰＵ３および情報処理装置ＩＰＥ１に比べて低下する。
【００９２】
図１４は、図１３に示すＤＭＡＣによるライトキューＷＱＵＥのプリフェッチ動作の一例を示す。図９と同じ動作については、詳細な説明は省略する。図１４に示す動作では、図９に示すステップＳ２２、Ｓ２６、Ｓ３４の処理が省略される。
【００９３】
すなわち、ＤＭＡＣは、ステップＳ２０においてエントリ保持部ＥＮＴＨＬＤに空きがある場合、ステップＳ２４において、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）に格納された情報を読み出すプリフェッチパケットを発行する。また、ステップＳ３０において、ＤＭＡＣは、応答パケットが無効な場合、処理を終了する。
【００９４】
図９では、ステップＳ２２により、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）が有効であることを判定した後、プリフェッチパケットを発行するため、無駄なプリフェッチパケットの発行を抑止することができる。これに対して、図１４では、エントリ保持部ＥＮＴＨＬＤに空きがある場合、図１４に示す動作が繰り返し実行され、図１３に示すように、プリフェッチパケットが繰り返し発行される。
【００９５】
以上、図４から図１１に示す実施形態においても、図１から図３に示す実施形態と同様に、データ領域ＤＴＡが使用可能であることを、ライトキューＷＱＵＴへの最小限の数のアクセスにより検出することができる。この結果、ＤＩＭＭへのアクセスの負荷の増大を抑制することができ、メモリバスＭＢの負荷の増大を抑制することができる。
【００９６】
さらに、図４から図１１に示す実施形態では、エントリ保持部ＥＮＴＨＬＤに空きがない場合、プリフェッチパケットは発行されないため、ポインタ値ＰＯＩＮＴＥＲを格納するエントリ保持部ＥＮＴＨＬＤのエントリが不足することを抑止することができる。これにより、エントリ保持部ＥＮＴＨＬＤのエントリが誤って上書きされることを抑止することができ、ＣＰＵ３が誤動作することを抑止することができる。また、イベント採取部ＥＶＮＴは、メモリバスＭＢを監視するため、ライトキューＷＱＵＥが複数のコアＣＯＲＥのいずれにより使用される場合にも、ライトキューＷＱＵＥへの書き込みアクセスを検出することができる。
【００９７】
図１５は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図４に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００９８】
この実施形態の演算処理装置ＣＰＵ３は、演算処理装置ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、入出力装置Ｉ／Ｏ、インタコネクトネットワークＩＣＮＷおよび入出力ネットワークＩ／ＯＮＷとともに、１つの半導体チップに搭載される。ＣＰＵ３は、インタコネクトネットワークＩＣＮＷを介してＣＰＵ０、ＣＰＵ１、ＣＰＵ２に接続され、入出力ネットワークＩ／ＯＮＷを介して入出力装置Ｉ／Ｏに接続される。ＣＰＵ０−ＣＰＵ３、入出力装置Ｉ／Ｏ、インタコネクトネットワークＩＣＮＷおよび入出力ネットワークＩ／ＯＮＷを含む半導体チップと、メモリモジュールＤＩＭＭとは、情報処理装置ＩＰＥ２に搭載される。
【００９９】
ＣＰＵ３は、コアＣＯＲＥ（ＣＯＲＥ０、ＣＯＲＥ１）、システムコントローラＳＣＮＴＬ、ＤＭＡＣ（ＤＭＡＣ０、ＤＭＡＣ１、ＤＭＡＣ２、ＤＭＡＣ３）およびＭＡＣ（ＭＡＣ０、ＭＡＣ１、ＭＡＣ２、ＭＡＣ３）を有する。
【０１００】
コアＣＯＲＥ０、ＣＯＲＥ１は、システムコントローラＳＣＮＴＬを介してＤＭＡＣ０−ＤＭＡＣ３およびＭＡＣ０−ＭＡＣ３に接続される。各ＤＭＡＣ０−ＤＭＡＣ３は、メインバスＭＡＩＮＢ（ＭＡＩＮＢ０−ＭＡＩＮＢ３）を介してシステムコントローラＳＣＮＴＬに接続され、共通のイベントバスＥＢを介してＭＡＣ０−ＭＡＣ３に接続される。ＤＭＡＣ０−ＤＭＡＣ３とＭＡＣ０−ＭＡＣ３との間を共通のイベントバスＥＢにより接続することで、個別にイベントバスＥＢを配線する場合に比べて、ＣＰＵ３のチップサイズを小さくすることができる。
【０１０１】
各ＤＭＡＣ０−ＤＭＡＣ３は、図４に示すＤＭＡＣと同様の機能を有し、図５に示すライトキューＷＱＵＥに保持された情報をプリフェッチするプリフェッチ制御部ＰＦＣＮＴＬを有する。なお、図５に示すライトキューＷＱＵＥおよび完了キューＣＱＵＥは、ＤＭＡＣ０−ＤＭＡＣ３毎にアドレス空間に割り当てられる。例えば、図５は、ＤＭＡＣ０が使用するライトキューＷＱＵＥおよび完了キューＣＱＵＥを示す。プリフェッチ制御部ＰＦＣＮＴＬの例は、図２０に示される。なお、ＣＰＵ３によるパケットの処理手順の例は、図１１と同様である。演算処理装置ＣＰＵ０−ＣＰＵ２および入出力装置Ｉ／Ｏは、コアＣＯＲＥに処理させるデータのＤＩＭＭへの書き込み要求をＤＭＡＣに出力する制御装置の一例である。
【０１０２】
システムコントローラＳＣＮＴＬは、コアＣＯＲＥおよびＤＭＡＣ０−ＤＭＡＣ３が出力するメモリアクセス要求を調停するとともに、キャッシュコヒーレンスの制御を実行するメモリ処理部ＭＭＮＧを有する。例えば、キャッシュメモリは、各コアＣＯＲＥに内蔵され、あるいは、ＣＰＵ３内に設けられる。メモリ処理部ＭＭＮＧは、メモリバスＭＢ（ＭＢ０−ＭＢ３）を介してＭＡＣ０−ＭＡＣ３に接続される。
【０１０３】
各ＭＡＣは、イベント採取部ＥＶＮＴ（ＥＶＮＴ０−ＥＶＮＴ３）とメモリコントローラＭＣＮＴＬ（ＭＣＮＴＬ０−ＭＣＮＴＬ３）とを有する。イベント採取部ＥＶＮＴの例は、図１６に示され、イベント採取部ＥＶＮＴの動作の例は、図２２に示される。ＭＡＣ０−ＭＡＣ３のそれぞれにイベント採取部ＥＶＮＴ０−ＥＶＮＴ３を設けることで、図５に示すエントリＷＱＵＥ（ｉ）がＭＡＣ０−ＭＡＣ３にそれぞれ接続されるＤＩＭＭのいずれに割り当てられても、図１１に示す処理を実行することができる。換言すれば、情報処理装置ＩＰＥ２の仕様に拘わらず、ＣＰＵ３を再設計することなく、図１１に示す処理を実行することができる。
【０１０４】
図１６は、図１５に示すイベント採取部ＥＶＮＴ０−ＥＶＮＴ３の一例を示す。図６に示すイベント採取部ＥＶＮＴと同一または同様の構成については、詳細な説明は省略する。イベント採取部ＥＶＮＴ１−ＥＶＮＴ３は、イベント採取部ＥＶＮＴ０と同一または同様の構成のため、記載は省略する。イベント採取部ＥＶＮＴ０は、要求解析部ＲＥＱＡＮＬ、イベントテーブルＥＶＴＢＬ、テーブル制御部ＴＢＬＣＮＴＬ、タイミングカウンタＴＣおよび選択カウンタＳＣを有する。
【０１０５】
要求解析部ＲＥＱＡＮＬは、メモリバスＭＢを介してコアＣＯＲＥからメモリコントローラＭＣＮＴＬに出力されるメモリアクセス要求を解析し、メモリアクセス要求が図５に示すライトキューＷＱＵＥへの書き込みアクセス要求であるか否かを判定する。要求解析部ＲＥＱＡＮＬは、ライトキューＷＱＵＥへの書き込みアクセス要求を検出した場合、書き込みアクセス要求に含まれるアドレス（書き込みアドレス）をテーブル制御部ＴＢＬＣＮＴＬに出力する。要求解析部ＲＥＱＡＮＬは、ライトキューＷＱＵＥへの書き込みアクセス要求に基づいて、エントリＷＱＵＥ（ｉ）のいずれかが有効になったと判定する。すなわち、要求解析部ＲＥＱＡＮＬは、ライトキューＷＱＵＥへの書き込みアクセス要求に基づいて、データ領域ＤＴＡのいずれかが使用可能になったと判定する。エントリＷＱＵＥ（ｉ）が本当に有効になったか否かは、図２３に示すように、イベントバスＥＢを介してカウンタ値ＣＯＵＮＴを受信したＤＭＡＣのプリフェッチ制御部ＰＦＣＮＴＬにより判定される。
【０１０６】
イベントテーブルＥＶＴＢＬは、バリッドビットＶ、物理アドレスＰＡ、マスクアドレスＭＳＫおよびカウンタ値ＣＯＵＮＴがそれぞれ格納される複数のエントリＥＮＴ（ＥＮＴ０−ＥＮＴ１５；図１６の例では１６個）を有する。イベントテーブルＥＶＴＢＬの例は、図１７に示される。
【０１０７】
テーブル制御部ＴＢＬＣＮＴＬは、要求解析部ＲＥＱＡＮＬから受ける書き込みアドレスがイベントテーブルＥＶＴＢＬのエントリＥＮＴのいずれかに格納されたアドレス範囲に含まれる場合、イベントテーブルＥＶＴＢＬに増加信号ＵＰを出力する。また、テーブル制御部ＴＢＬＣＮＴＬは、エントリＥＮＴに保持されるカウンタ値ＣＯＵＮＴを、制御信号ＳＣＮＴ０に同期してイベントバスＥＢのセレクタＳＥＬ０に出力する。テーブル制御部ＴＢＬＣＮＴＬは、イベントバスＥＢに出力したカウンタ値ＣＯＵＮＴを初期化するために、リセット信号ＲＳＴを出力する。イベントバスＥＢに出力されるカウンタ値ＣＯＵＮＴは、ライトキューＷＱＵＥに存在する有効なエントリＷＱＵＥ（ｉ）の数（すなわち、使用可能なデータ領域ＤＴＡの数）の予測値を示す。
【０１０８】
タイミングカウンタＴＣは、カウンタ値ＣＯＵＮＴをイベントバスＥＢに出力する出力期間を設定するために設けられ、選択カウンタＳＣは、イベントバスＥＢに出力するカウンタ値ＣＯＵＮＴをエントリＥＮＴのいずれかから選択するために設けられる。タイミングカウンタＴＣおよび選択カウンタＳＣの動作の例は、図１８に示される。
【０１０９】
イベントバスＥＢは、各イベント採取部ＥＶＮＴに対応して、直列に接続されたラッチＢ０、Ｂ１、セレクタＳＥＬ（ＳＥＬ０、ＳＥＬ１、ＳＥＬ２またはＳＥＬ３）およびラッチＢ２、Ｂ３を有する。セレクタＳＥＬ０は、制御信号ＳＣＮＴ０に基づいてイベント採取部ＥＶＮＴ０から出力される情報またはラッチＢ１から転送される情報を、ラッチＢ２に転送する。セレクタＳＥＬ１は、制御信号ＳＣＮＴ０に基づいてイベント採取部ＥＶＮＴ１から出力される情報または図示しないラッチＢ１から転送される情報を、ラッチＢ２に転送する。イベント採取部ＥＶＮＴ２、ＥＶＮＴ３に対応するセレクタＳＥＬ２、ＳＥＬ３も、セレクタＳＥＬ１、ＳＥＬ２と同様に動作する。そして、イベント採取部ＥＶＮＴ０−ＥＶＮＴ３から出力される情報は、イベントバスＥＢを介してＤＭＡＣ０−ＤＭＡＣ３に転送される。セレクタＳＥＬ０−ＳＥＬ３の動作の例は、図１８に示される。
【０１１０】
図１７は、図１６に示すイベント採取部ＥＶＮＴ０に設けられるイベントテーブルＥＶＴＢＬの一例を示す。なお、イベント採取部ＥＶＮＴ１−ＥＶＮＴ３に設けられるイベントテーブルＥＶＴＢＬも、図１７と同じ構造を有する。
【０１１１】
イベントテーブルＥＶＴＢＬの各エントリＥＮＴ０−ＥＮＴ１５は、マスクアドレスＭＳＫ［３９：０］が格納される領域を図６に示すイベントテーブルＥＶＴＢＬに追加している。バリッドビットＶ、物理アドレスＰＡ［３９：０］およびマスクアドレスＭＳＫ［３９：０］は、ＣＰＵ３のコアＣＯＲＥにより設定され、カウンタ値ＣＯＵＮＴ［７：０］は、イベント採取部ＥＶＮＴのテーブル制御部ＴＢＬＣＮＴＬにより書き替えられる。
【０１１２】
図１７の上側に示すイベントテーブルＥＶＴＢＬは、ＤＭＡＣ０−ＤＭＡＣ３にそれぞれ対応するライトキューＷＱＵＥ（図５）がＭＡＣ０に接続されるＤＩＭＭに割り当てられる場合の例を示す。この場合、イベントテーブルＥＶＴＢＬのエントリＥＮＴ０−ＥＮＴ１５は、４つずつＤＭＡＣ０−ＤＭＡＣ３に割り当てられ、各エントリＥＮＴ０−ＥＮＴ１５のバリッドビットＶは、有効を示す”１”に設定される。
【０１１３】
エントリＥＮＴ０は、ＤＭＡＣ０からのパケットを格納するデータ領域ＤＴＡを指定するライトキューＷＱＵＥの最初の４つのエントリＷＱＵＥ（０）−ＷＱＵＥ（３）に対応して割り当てられる。エントリＥＮＴ１は、ＤＭＡＣ０からのパケットを格納するデータ領域ＤＴＡを指定するライトキューＷＱＵＥの次の４つのエントリＷＱＵＥ（４）−ＷＱＵＥ（７）に対応して割り当てられる。エントリＥＮＴ２、ＥＮＴ３は、ＤＭＡＣ０に対応するライトキューＷＱＵＥのエントリＷＱＵＥ（８）−ＷＱＵＥ（１１）、ＷＱＵＥ（１２）−ＷＱＵＥ（１５）にそれぞれ対応して割り当てられる。エントリＥＮＴ４−ＥＮＴ１５も、ＤＭＡＣ１−ＤＭＡＣ３に対応するライトキューＷＱＵＥの４つのエントリＷＱＵＥ（ｉ）にそれぞれ対応して割り当てられる。
【０１１４】
エントリＥＮＴ０の物理アドレスＰＡ［３９：０］の領域には、ＤＭＡＣ０用のエントリＷＱＵＥ（０）のアドレスが格納され、エントリＥＮＴ１の物理アドレスＰＡ［３９：０］の領域には、ＤＭＡＣ１用のエントリＷＱＵＥ（４）のアドレスが格納される。同様に、他のエントリＥＮＴには、割り当てられた４つのエントリＷＱＵＥ（ｉ）のうち、最初のエントリＷＱＵＥ（０）、（４）、（８）、（１２）のいずれかのアドレスが格納される。
【０１１５】
各エントリＥＮＴに割り当てられる４つのエントリＷＱＵＥ（ｉ）は、物理アドレスＰＡ［３９：０］の下位ビット群をマスクアドレスＭＳＫ［３９：０］でマスクしたアドレス範囲により示される。ライトキューＷＱＵＥの各エントリＷＱＵＥ（ｉ）のサイズが８バイトの場合、各エントリＥＮＴに割り当てられる４つのエントリＷＱＵＥ（ｉ）のサイズは３２バイトである。このため、各エントリＥＮＴにおいて、マスクアドレスＭＳＫ［３９：０］の下位５ビットは論理０に設定され、マスクアドレスＭＳＫ［３９：０］の残りのビットは論理１に設定される。
【０１１６】
各エントリＥＮＴは、物理アドレスＰＡ［３９：０］とマスクアドレスＭＳＫ［３９：０］との積により示されるアドレス範囲に含まれる４つのエントリＷＱＵＥ（ｉ）のうち、有効と予測されたエントリＷＱＵＥ（ｉ）の数をカウンタ値ＣＯＵＮＴとして保持する。このため、図１７に示す例では、カウンタ値ＣＯＵＮＴは、”０”から”４”のいずれかに設定される。各エントリＥＮＴのカウンタ値ＣＯＵＮＴは、図１６に示すテーブル制御部ＴＢＬＣＮＴＬからのリセット信号ＲＳＴに基づいて初期値”０”にリセットされ、テーブル制御部ＴＢＬＣＮＴＬからの増加信号ＵＰに基づいて”１”ずつ増加される。
【０１１７】
なお、図１７の下側のかぎ括弧内に示すイベントテーブルＥＶＴＢＬは、ＤＭＡＣ０−ＤＭＡＣ１にそれぞれ対応するライトキューＷＱＵＥがＭＡＣ０に接続されるＤＩＭＭに割り当てられる場合の例を示す。この場合、ＤＭＡＣ２−ＤＭＡＣ３にそれぞれ対応するライトキューＷＱＵＥは、例えば、ＭＡＣ１に接続されるＤＩＭＭに割り当てられる。イベント採取部ＥＶＮＴ０のイベントテーブルＥＶＴＢＬのエントリＥＮＴ８−ＥＮＴ１５は使用されないため、エントリＥＮＴ８−ＥＮＴ１５のバリッドビットＶは、無効を示す”０”に設定される。なお、イベント採取部ＥＶＮＴ１のイベントテーブルＥＶＴＢＬは、かぎ括弧内に示すイベントテーブルＥＶＴＢＬの”ＤＭＡＣ０用”、”ＤＭＡＣ１用”を、”ＤＭＡＣ２用”、”ＤＭＡＣ３用”に置き換えることで示される。
【０１１８】
マスクアドレスＭＳＫにより、物理アドレスＰＡの所定のビットをマスクすることで、各エントリＥＮＴを所定数のエントリＷＱＵＥ（ｉ）に対応させることができる。また、使用しないエントリＥＮＴは、バリッドビットＶにより無効化することができる。この結果、ＣＰＵ３を再設計することなく、イベントテーブルＥＶＴＢＬのエントリＥＮＴに割り当てるエントリＷＱＵＥ（ｉ）の数を、情報処理装置ＩＰＥ２の仕様に合わせて設定することができる。
【０１１９】
図１８は、図１６に示すタイミングカウンタＴＣおよびエントリ選択カウンタＳＣの動作の一例を示す。タイミングカウンタＴＣは、クロックサイクル毎または所定数のクロックサイクル毎に、カウンタ値を”０”から”３”に巡回的に更新する。エントリ選択カウンタＳＣは、タイミングカウンタＴＣの更新周期の４倍の周期で、カウンタ値を”０”から”３”に巡回的に更新する。
【０１２０】
タイミングカウンタＴＣの”０”は、ＭＡＣ０のイベント採取部ＥＶＮＴ０がイベントバスＥＢにカウンタ値ＣＯＵＮＴを出力する出力期間を示す。タイミングカウンタＴＣの”１”は、ＭＡＣ１のイベント採取部ＥＶＮＴ１がイベントバスＥＢにカウンタ値ＣＯＵＮＴを出力する出力期間を示す。タイミングカウンタＴＣの”２”は、ＭＡＣ２のイベント採取部ＥＶＮＴ２がイベントバスＥＢにカウンタ値ＣＯＵＮＴを出力する出力期間を示す。タイミングカウンタＴＣの”３”は、ＭＡＣ３のイベント採取部ＥＶＮＴ３がイベントバスＥＢにカウンタ値ＣＯＵＮＴを出力する出力期間を示す。
【０１２１】
エントリ選択カウンタＳＣの”０”は、イベントテーブルＥＶＴＢＬのエントリＥＮＴ０−ＥＮＴ３のカウンタ値ＣＯＵＮＴがイベントバスＥＢに出力される出力期間を示す。エントリ選択カウンタＳＣの”１”は、イベントテーブルＥＶＴＢＬのエントリＥＮＴ４−ＥＮＴ７のカウンタ値ＣＯＵＮＴがイベントバスＥＢに出力される出力期間を示す。エントリ選択カウンタＳＣの”２”は、イベントテーブルＥＶＴＢＬのエントリＥＮＴ８−ＥＮＴ１１のカウンタ値ＣＯＵＮＴがイベントバスＥＢに出力される出力期間を示す。エントリ選択カウンタＳＣの”３”は、イベントテーブルＥＶＴＢＬのエントリＥＮＴ１２−ＥＮＴ１５のカウンタ値ＣＯＵＮＴがイベントバスＥＢに出力される出力期間を示す。イベントテーブルＥＶＴＢＬが図１７の上側に示す状態に設定された場合、エントリ選択カウンタＳＣの”０”−”３”は、それぞれＤＭＡＣ０−ＤＭＡＣ３用のエントリＥＮＴのカウンタ値ＣＯＵＮＴがイベントバスＥＢに出力される出力期間を示す。
【０１２２】
図１６に示すセレクタＳＥＬ０は、タイミングカウンタＴＣが”０”のときにハイレベルに設定される制御信号ＳＣＮＴ０に基づいて、イベント採取部ＥＶＮＴ０の出力を選択する。セレクタＳＥＬ１は、タイミングカウンタＴＣが”１”のときにハイレベルに設定される制御信号ＳＣＮＴ１に基づいて、イベント採取部ＥＶＮＴ１の出力を選択する。セレクタＳＥＬ２は、タイミングカウンタＴＣが”２”のときにハイレベルに設定される制御信号ＳＣＮＴ２に基づいて、イベント採取部ＥＶＮＴ２の出力を選択する。セレクタＳＥＬ３は、タイミングカウンタＴＣが”３”のときにハイレベルに設定される制御信号ＳＣＮＴ３に基づいて、イベント採取部ＥＶＮＴ３の出力を選択する。タイミングカウンタＴＣとエントリ選択カウンタＳＣとを設けることにより、共通のイベントバスＥＢを使用する場合にも、カウンタ値ＣＯＵＮＴを衝突させることなくＤＭＡＣ０−ＤＭＡＣ３に転送することができる。
【０１２３】
イベントテーブルＥＶＴＢＬが図１７の上側に示す状態に設定された場合、タイミングカウンタＴＣが”０”の期間に、ＭＡＣ０からカウンタ値ＣＯＵＮＴが出力される。タイミングカウンタＴＣが”１”、”２”、”３”の期間、イベントバスＥＢは使用されない。イベントテーブルＥＶＴＢＬが図１７の下側に示す状態に設定された場合、タイミングカウンタＴＣが”０”、かつエントリ選択カウンタＳＣが”０”、”１”の期間に、ＭＡＣ０からカウンタ値ＣＯＵＮＴが出力される。また、タイミングカウンタＴＣが”１”、かつエントリ選択カウンタＳＣが”２”、”３”の期間に、ＭＡＣ１からカウンタ値ＣＯＵＮＴが出力される。
【０１２４】
図１９は、図１６に示すイベントバスＥＢを介してＤＭＡＣに転送される情報のフォーマットの一例を示す。各イベント採取部ＥＶＮＴは、図１８に示す出力期間に、イベントバスＥＢを介して３４ビットの情報を各ＤＭＡＣに転送する。各情報は、転送先のＤＭＡＣを識別する２ビットのコードＣＤと、イベントテーブルＥＶＴＢＬの４つのエントリＥＮＴに保持された８ビットのカウンタ値ＣＯＵＮＴ［７：０］とを含む。
【０１２５】
エントリ選択カウンタＳＣが”０”の場合、ＤＭＡＣ０用のエントリＥＮＴ０−ＥＮＴ３のカウンタ値ＣＯＵＮＴがイベントバスＥＢに伝達される。エントリ選択カウンタＳＣが”１”の場合、ＤＭＡＣ１用のエントリＥＮＴ３−ＥＮＴ７のカウンタ値ＣＯＵＮＴがイベントバスＥＢに伝達される。エントリ選択カウンタＳＣが”２”の場合、ＤＭＡＣ２用のエントリＥＮＴ８−ＥＮＴ１１のカウンタ値ＣＯＵＮＴがイベントバスＥＢに伝達される。エントリ選択カウンタＳＣが”３”の場合、ＤＭＡＣ３用のエントリＥＮＴ１２−ＥＮＴ１５のカウンタ値ＣＯＵＮＴがイベントバスＥＢに伝達される。
【０１２６】
図２０は、図１５に示すＤＭＡＣ０のプリフェッチ制御部ＰＦＣＮＴＬの一例を示す。図７に示すプリフェッチ制御部ＰＦＣＮＴＬと同一または同様の構成については、詳細な説明は省略する。なお、ＤＭＡＣ１−ＤＭＡＣ３のプリフェッチ制御部ＰＦＣＮＴＬは、図２０と同様の構成を有する。
【０１２７】
プリフェッチ制御部ＰＦＣＮＴＬは、エントリ保持部ＥＮＴＨＬＤ、プリフェッチパケット制御部ＰＦＰＣ、ライトキューポインタＷＱＵＥＰおよび減数保持部ＤＥＣＨＬＤを有する。また、プリフェッチ制御部ＰＦＣＮＴＬは、カウンタ値保持部ＣＨＬＤ、タイミングカウンタＴＣ、セレクタＳＥＬ５および受信処理部ＲＳＶＭＮＧを有する。エントリ保持部ＥＮＴＨＬＤおよび受信処理部ＲＳＶＭＮＧは、図７に示すエントリ保持部ＥＮＴＨＬＤおよび受信処理部ＲＳＶＭＮＧと同一または同様の機能を有する。プリフェッチパケット制御部ＰＦＰＣの動作は、図２３に示され、受信処理部ＲＳＶＭＮＧの動作の例は、図１０に示される。
【０１２８】
カウンタ値保持部ＣＨＬＤは、イベントバスＥＢを介して受信する情報がＤＭＡＣ０を示すコードＣＤ（＝”００”）を含む場合、受信した情報に含まれる４つのカウンタ値ＣＯＵＮＴを４つのエントリＥＮＴＣにそれぞれ保持する。カウンタ値保持部ＣＨＬＤの例は、図２１に示される。
【０１２９】
タイミングカウンタＴＣの動作は、図１８に示すイベント採取部ＥＶＮＴのタイミングカウンタＴＣの動作と同期しており、カウンタ値を”０”から”３”に巡回的に更新する。カウンタ値保持部ＣＨＬＤは、タイミングカウンタＴＣの値を参照することで、イベントバスＥＢを介して受信した情報を出力したＭＡＣを識別する。
【０１３０】
ライトキューポインタＷＱＵＥＰは、プリフェッチパケットの発行により情報を読み出すエントリＷＱＵＥ（ｉ）を示すアドレス（ポインタ値）を保持する。すなわち、ライトキューポインタＷＱＵＥＰは、ライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）をどこまで読み込んだかを示す情報を保持する。減数保持部ＤＥＣＨＬＤは、プリフェッチパケットの発行に基づいてカウンタ値保持部ＣＨＬＤのエントリＥＮＴＣに保持されたカウンタ値ＣＯＵＮＴを減らした場合、減らした数を保持する。なお、ライトキューポインタＷＱＵＥＰは、ライトキューＷＱＵＥの各エントリＷＱＵＥ（ｉ）のバリッドビットＶ０の履歴を保持してもよい。バリッドビットＶ０の履歴を保持することで、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに対応する応答パケットに含まれるバリッドビットＶ０の反転を検出することができる。
【０１３１】
プリフェッチパケット制御部ＰＦＰＣは、エントリ保持部ＥＮＴＨＬＤのエントリに空きがあり、かつ、エントリＥＮＴＣのいずれかに保持されるカウンタ値ＣＯＵＮＴが”１”以上の場合、プリフェッチパケットをメインバスＭＡＩＮＢ０に発行する。プリフェッチパケットは、ライトキューポインタＷＱＵＥＰが保持するアドレス（ポインタ値ＰＯＩＮＴＥＲ）を用いて発行される。
【０１３２】
また、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットの発行に基づいて、プリフェッチパケットで指定したエントリＷＱＵＥ（ｉ）に対応するエントリＥＮＴＣに保持されたカウンタ値ＣＯＵＮＴを”０”にリセットする。プリフェッチパケット制御部ＰＦＰＣは、減少したカウンタ値ＣＯＵＮＴを示す値を減数保持部ＤＥＣＨＬＤに格納する。例えば、カウンタ値ＣＯＵＮＴが”３”を示すことに基づいて３つのプリフェッチパケットを発行した場合、減数保持部ＤＥＣＨＬＤに”３”が格納される。
【０１３３】
プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに対応してメインバスＭＡＩＮＢ０から受信する応答パケットが有効な場合、応答パケットに含まれるポインタ値ＰＯＩＮＴＥＲをエントリ保持部ＥＮＴＨＬＤに格納する指示を出力する。ここで、応答パケットは、プリフェッチパケットで指定されたライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）の情報（バリッドビットＶ０およびポインタ値ＰＯＩＮＴＥＲ）を含み、バリッドビットＶ０の反転が検出された場合、有効と判定される。バリッドビットＶ０の反転は、応答パケットに含まれるバリッドビットＶ０の値と、ライトキューポインタＷＱＵＥＰが保持するバリッドビットＶ０の履歴（前回の使用可能情報を示す論理）とを比較することで検出される。そして、応答パケットが有効を示す場合、ポインタ値ＰＯＩＮＴＥＲにより示されるデータ領域ＤＴＡが使用可能であると判定される。プリフェッチパケット制御部ＰＦＰＣは、応答パケットが無効な場合、プリフェッチパケットの発行時にリセットしたカウンタ値ＣＯＵＮＴを元に戻す指示をカウンタ値保持部ＣＨＬＤに出力する。
【０１３４】
図２１は、図２０に示すカウンタ値保持部ＣＨＬＤの一例を示す。カウンタ値保持部ＣＨＬＤは、ＭＡＣ０−ＭＡＣ３のそれぞれに対応して、イベントテーブルＥＶＴＢＬのエントリＥＮＴ０−ＥＮＴ１５から転送されるカウンタ値ＣＯＵＮＴを保持するエントリＥＮＴＣ（ＥＮＴＣ０−ＥＮＴＣ１５）を有する。なお、図１７で説明したように、ＤＭＡＣ０−ＤＭＡＣ３に対応するライトキューＷＱＵＥが、ＭＡＣ０に接続されるＤＩＭＭに割り当てられる場合、太枠で示すＭＡＣ０用のエントリＥＮＴＣ０−ＥＮＴＣ３が使用され、他のエントリＥＮＴＣは使用されない。太枠で示すエントリＥＮＴＣ０−ＥＮＴＣ３は、図１７に示すＤＭＡＣ０用のエントリＥＮＴ０−ＥＮＴ３にそれぞれ対応する。
【０１３５】
なお、ＤＭＡＣ１のカウンタ値保持部ＣＨＬＤは、ＭＡＣ０用のエントリＥＮＴＣ０−ＥＮＴＣ３を、図１７に示すＤＭＡＣ１用のエントリＥＮＴ４−ＥＮＴ７に対応させて使用する。ＤＭＡＣ２のカウンタ値保持部ＣＨＬＤは、ＭＡＣ０用のエントリＥＮＴＣ０−ＥＮＴＣ３を、図１７に示すＤＭＡＣ２用のエントリＥＮＴ８−ＥＮＴ１１に対応させて使用する。ＤＭＡＣ３のカウンタ値保持部ＣＨＬＤは、ＭＡＣ０用のエントリＥＮＴＣ０−ＥＮＴＣ３を、図１７に示すＤＭＡＣ３用のエントリＥＮＴ１２−ＥＮＴ１５に対応させて使用する。
【０１３６】
カウンタ値保持部ＣＨＬＤは、イベントバスＥＢから受信した情報に含まれるコードＣＤが自身のＤＭＡＣを示す場合、タイミングカウンタＴＣの値に基づいて、情報を出力したＭＡＣを識別する。そして、カウンタ値保持部ＣＨＬＤは、識別したＭＡＣに対応するエントリＥＮＴＣに、受信した情報に含まれるカウンタ値ＣＯＵＮＴを格納する。
【０１３７】
図２２は、図１５に示すＭＡＣ０のイベント採取部ＥＶＮＴ０の動作の一例を示す。図８と同一または同様の処理については、詳細な説明は省略する。図２２では、ステップＳ１０の前に、ステップＳ２、Ｓ４、Ｓ６が実行される。ライトキューＷＱＵＥがＭＡＣ１−ＭＡＣ３に接続されるＤＩＭＭに割り当てられる場合、イベント採取部ＥＶＮＴ１−ＥＶＮＴ３も、図２２と同様に動作する。図２２に示す動作は、所定の頻度で実行される。
【０１３８】
まず、ステップＳ２において、イベント採取部ＥＶＮＴ０は、タイミングカウンタＴＣが”０”の場合、すなわち、イベントバスＥＢの使用権がイベント採取部ＥＶＮＴ０（ＭＡＣ０）にある場合、処理をステップＳ４に移行する。イベント採取部ＥＶＮＴ０は、タイミングカウンタＴＣが”０”以外の場合、イベントバスＥＢの使用権がないため、処理をステップＳ１０に移行する。なお、イベント採取部ＥＶＮＴ１−ＥＶＮＴ３の動作では、タイミングカウンタＴＣの値がイベント採取部ＥＶＮＴの番号と同じ場合、処理がステップＳ４に移行される。
【０１３９】
ステップＳ４において、イベント採取部ＥＶＮＴ０は、イベントテーブルＥＶＴＢＬにおいて、エントリ選択カウンタＳＣの値に対応する４つのエントリＥＮＴに保持された４つのカウンタ値ＣＯＵＮＴをセレクタＳＥＬ０に出力する。次に、ステップＳ６において、イベント採取部ＥＶＮＴ０は、イベントテーブルＥＶＴＢＬにおいて、エントリ選択カウンタＳＣの値に対応するエントリＥＮＴに保持されたカウンタ値ＣＯＵＮＴを”０”にリセットし、処理をステップＳ１０に移行する。すなわち、イベントテーブルＥＶＴＢＬのエントリＥＮＴが保持するカウンタ値ＣＯＵＮＴは、イベントバスＥＢを介してＤＭＡＣに転送される毎にリセットされる。
【０１４０】
ステップＳ１０の処理は、図８に示すステップＳ１０の処理と同様である。ステップＳ１０においてメモリバスＭＢ０上の書き込みアクセス要求が検出された場合、ステップＳ１３の処理が実行される。
【０１４１】
ステップＳ１３において、イベント採取部ＥＶＮＴ０は、イベントテーブルＥＶＴＢＬの各エントリＥＮＴに保持された物理アドレスＰＡとマスクアドレスＭＳＫとの論理積Ａを算出する。また、イベント採取部ＥＶＮＴ０は、イベントテーブルＥＶＴＢＬの各エントリＥＮＴに保持されたマスクアドレスＭＳＫと要求解析部ＲＥＱＡＮＬが検出した書き込みアクセス要求に含まれる物理アドレスＰＡとの論理積Ｂを算出する。
【０１４２】
イベント採取部ＥＶＮＴ０は、論理積Ａと論理積Ｂとが一致するエントリＥＮＴがある場合、エントリＥＮＴに対応する４つのエントリＱＷＵＥ（ｉ）の少なくともいずれかが有効になったと判定し、処理をステップＳ１４に移行する。すなわち、論理積Ａと論理積Ｂとが一致するエントリＥＮＴがある場合、エントリＥＮＴに対応する４つのエントリＱＷＵＥ（ｉ）の少なくともいずれかが、書き込みアクセス要求によるバリッドビットＶ０が反転により有効になったと判定される。イベント採取部ＥＶＮＴ０は、論理積Ａと論理積Ｂとが一致するエントリＥＮＴがない場合、処理を終了する。
【０１４３】
ステップＳ１４の処理は、図８に示すステップＳ１４の処理と同様である。すなわち、ステップＳ１４において、イベント採取部ＥＶＮＴ０は、論理積Ａと論理積Ｂとが一致するエントリＥＮＴのカウンタ値ＣＯＵＮＴを”１”増加させ、処理を終了する。
【０１４４】
例えば、書き込みアクセス要求により、ＤＭＡＣ０用のライトキューＷＱＵＥ上から４番目のエントリＱＷＵＥ（３）のバリッドビットＶ０の反転が判定された場合、イベントテーブルＥＶＴＢＬのエントリＥＮＴ０のカウンタ値ＣＯＵＮＴが”１”増加される。書き込みアクセス要求により、ＤＭＡＣ０用のライトキューＷＱＵＥ上から５番目のエントリＱＷＵＥ（４）のバリッドビットＶ０の反転が検出された場合、イベントテーブルＥＶＴＢＬのエントリＥＮＴ１のカウンタ値ＣＯＵＮＴが”１”増加される。なお、ステップＳ２において、”ＴＣ＝０”が判定される前に、ライトキューＷＱＵＥに対する２つの書き込みアクセス要求が検出された場合、カウンタ値ＣＯＵＮＴは、”２”増加される。
【０１４５】
図２３は、図２０に示すプリフェッチ制御部ＰＦＣＮＴＬにおけるプリフェッチパケット制御部ＰＦＰＣの動作の一例を示す。図９と同様の動作については、詳細な説明は省略する。図２３に示す動作は、ＤＭＡＣ０により所定の頻度で実行される。なお、他のＤＭＡＣ１−ＤＭＡＣ３のプリフェッチパケット制御部ＰＦＰＣも、図２３と同様に動作する。ステップＳ６０、Ｓ６８、Ｓ７０の処理は、図９に示すステップＳ２０、Ｓ２８、Ｓ３０の処理と同様である。
【０１４６】
ステップＳ６０において、プリフェッチパケット制御部ＰＦＰＣは、エントリ保持部ＥＮＴＨＬＤに空きがある場合、処理をステップＳ６２に移行し、エントリ保持部ＥＮＴＨＬＤに空きがない場合、処理をステップＳ６８に移行する。図９のステップＳ２０と同様に、既に発行したプリフェッチパケットに対応する応答パケットを受信していない場合、エントリ保持部ＥＮＴＨＬＤの空きに拘わりなく、処理はステップＳ６８に移行される。
【０１４７】
ステップＳ６２において、プリフェッチパケット制御部ＰＦＰＣは、ライトキューポインタＷＱＵＥＰに保持されるアドレス値に対応するエントリＥＮＴＣが保持するカウンタ値ＣＯＵＮＴが”１”以上の場合、処理をステップＳ６４に移行する。プリフェッチパケット制御部ＰＦＰＣは、ライトキューポインタＷＱＵＥＰに保持されるアドレス値に対応するエントリＥＮＴＣが保持するカウンタ値ＣＯＵＮＴが”０”以下の場合、処理をステップＳ６８に移行する。
【０１４８】
ステップＳ６４において、プリフェッチパケット制御部ＰＦＰＣは、ライトキューポインタＷＱＵＥＰに保持されたアドレスの下位５ビットを”０”でマスクしたアドレスを用いて、プリフェッチパケットを発行する。すなわち、ステップＳ６２で判定したエントリＥＮＴＣに対応する４つのエントリＷＱＵＥ（ｉ）に含まれる情報を読み出すプリフェッチパケットが発行される。
【０１４９】
次に、ステップＳ６６において、プリフェッチパケット制御部ＰＦＰＣは、カウンタ値保持部ＣＨＬＤにおいて、ステップＳ６２で判定したエントリＥＮＴＣが保持するカウンタ値ＣＯＵＮＴを減らす処理を実行する。カウンタ値ＣＯＵＮＴが”４”以上の場合、カウンタ値ＣＯＵＮＴは”４”減らされる。これは、ステップＳ６４で発行されるプリフェッチパケットに対応する応答パケットにより有効であると判定されるエントリＷＱＵＥ（ｉ）の数が最大で４つであるためである。カウンタ値ＣＯＵＮＴが”４”、”３”、”２”、”１”の場合、カウンタ値ＣＯＵＮＴは”０”にリセットされる。プリフェッチパケット制御部ＰＦＰＣは、カウンタ値ＣＯＵＮＴを減らした数を、減数保持部ＤＥＣＨＬＤに格納し、処理をステップＳ６８に移行する。
【０１５０】
ステップＳ６８において、プリフェッチパケット制御部ＰＦＰＣは、プリフェッチパケットに対応する応答パケットを受信した場合、処理をステップＳ７０に移行し、プリフェッチパケットに対応する応答パケットを受信していない場合、処理を終了する。
【０１５１】
ステップＳ７０において、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれる４つのエントリＷＱＵＥ（ｉ）のいずれかのバリッドビットＶ０の反転を検出した場合、応答パケットが有効であると判定し、処理をステップＳ７２に移行する。プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれる４つのエントリＷＱＵＥ（ｉ）の全てでバリッドビットＶ０の反転が検出されない場合、応答パケットが無効であると判定し、処理をステップＳ７８に移行する。ステップＳ７０では、応答パケットに基づいて、有効な（すなわち、使用が可能となった）エントリＷＱＵＥ（ｉ）が検出される。
【０１５２】
ステップＳ７２において、プリフェッチパケット制御部ＰＦＰＣは、ステップＳ７０で有効と判定されたエントリＷＱＵＥ（ｉ）の数に応じて、ライトキューポインタＷＱＵＥＰが保持するアドレスを更新する。次に、ステップＳ７４において、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）のポインタ値ＰＯＩＮＴＥＲをエントリ保持部ＥＮＴＨＬＤの空いているエントリに格納する。
【０１５３】
次に、ステップＳ７６において、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数が減数保持部ＤＥＣＨＬＤに保持された数と同じ場合、処理を終了する。すなわち、有効であると検出したエントリＷＱＵＥ（ｉ）の数が、ステップＳ６６で減じたカウンタ値ＣＯＵＮＴの減数と同じ場合、カウンタ値ＣＯＵＮＴの補正は不要であると判定される。一方、プリフェッチパケット制御部ＰＦＰＣは、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数が減数保持部ＤＥＣＨＬＤに保持された数と異なる場合、カウンタ値ＣＯＵＮＴを補正するために、処理をステップＳ７８に移行する。ステップＳ７８において、プリフェッチパケット制御部ＰＦＰＣは、減数保持部ＤＥＣＨＬＤに保持された数に応じて、カウンタ値保持部ＣＨＬＤが保持するカウンタ値ＣＯＵＮＴを補正し、処理を終了する。ステップＳ７８によるカウンタ値ＣＯＵＮＴの補正の例は、図２４に示される。
【０１５４】
図２４は、図２３に示すステップＳ７８によるカウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴの補正の一例を示す。応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数が、減数保持部ＤＥＣＨＬＤに保持させた値と同じ場合、減じたカウンタ値ＣＯＵＮＴと同じ数の有効なエントリＷＱＵＥ（ｉ）が取得されたことを示す。この場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは補正されない（”０”）。
【０１５５】
減数保持部ＤＥＣＨＬＤに保持させたカウンタ値ＣＯＵＮＴの減数が、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数より多い場合、有効と判定されたエントリＷＱＵＥ（ｉ）の数よりカウンタ値ＣＯＵＮＴが過剰に減らされたことを示す。例えば、ライトキューＷＱＵＥのバリッドビットＶ０が反転されないにも拘わらず、イベント採取部ＥＶＮＴが、書き込みアクセス要求に基づいてバリッドビットＶ０の反転を誤って検出した場合、カウンタ値ＣＯＵＮＴは過剰に減らされる。この場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは、減数保持部ＤＥＣＨＬＤが保持する値から、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数を引いた値だけ増加される。例えば、減数保持部ＤＥＣＨＬＤが”３”を保持し、有効と判定されたエントリＷＱＵＥ（ｉ）の数が”２”の場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは、補正により”１”増加される。
【０１５６】
一方、減数保持部ＤＥＣＨＬＤに保持させたカウンタ値ＣＯＵＮＴの減数が、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数より少ない場合、有効と判定されたエントリＷＱＵＥ（ｉ）の数に対して、カウンタ値ＣＯＵＮＴの減数が足りないことを示す。例えば、ＤＭＡＣがイベントバスＥＢを介してイベントテーブルＥＶＴＢＬ内のカウンタ値ＣＯＵＮＴを受信してから応答パケットが発行されるまでの間に、新たなエントリＷＱＵＥ（ｉ）が有効になる場合がある。この場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴの減数が足りなくなる。そこで、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは、応答パケットに含まれる有効なエントリＷＱＵＥ（ｉ）の数から、減数保持部ＤＥＣＨＬＤが保持する値を引いた値だけ減少される。例えば、減数保持部ＤＥＣＨＬＤが”１”を保持し、有効と判定されたエントリＷＱＵＥ（ｉ）の数が”３”の場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは、補正より”２”減少される。この場合、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴは一時的に負値になる。しかし、イベントバスＥＢを介してイベントテーブルＥＶＴＢＬ内のカウンタ値ＣＯＵＮＴを新たに受信して、カウンタ値保持部ＣＨＬＤのカウンタ値ＣＯＵＮＴが加算されることで、カウンタ値ＣＯＵＮＴは正しい値になる。
【０１５７】
カウンタ値ＣＯＵＮＴの補正により、メモリバスＭＢ上で検出したエントリＷＱＵＥ（ｉ）への書き込みアクセス要求の数と、バリッドビットＶ０が実際に反転したエントリＷＱＵＥ（ｉ）の数との相違を補正することができる。これにより、ライトキューＷＱＵＥを何度もプリフェッチすることなく、データ領域ＤＴＡが使用可能になったことを正しく検出することができる。
【０１５８】
以上、図１５から図２４に示す実施形態においても、図１から図１１に示す実施形態と同様に、データ領域ＤＴＡが使用可能であることを、ライトキューＷＱＵＴへの最小限の数のアクセスにより検出することができる。この結果、ＤＩＭＭへのアクセスの負荷の増大を抑制することができ、メモリバスＭＢの負荷の増大を抑制することができる。
【０１５９】
さらに、図１５から図２４に示す実施形態では、ＤＭＡＣ０−ＤＭＡＣ３とＭＡＣ０−ＭＡＣ３との間を共通のイベントバスＥＢにより接続することで、個別にイベントバスＥＢを配線する場合に比べて、ＣＰＵ３のチップサイズを小さくすることができる。タイミングカウンタＴＣとエントリ選択カウンタＳＣとを設けることにより、共通のイベントバスＥＢを使用する場合にも、カウンタ値ＣＯＵＮＴを衝突させることなくＤＭＡＣ０−ＤＭＡＣ３に転送することができる。カウンタ値ＣＯＵＮＴの補正により、メモリバスＭＢ上で検出したエントリＷＱＵＥ（ｉ）への書き込みアクセス要求の数と、バリッドビットＶ０が実際に反転したエントリＷＱＵＥ（ｉ）の数との相違を補正することができる。これにより、ライトキューＷＱＵＥを何度もプリフェッチすることなく、データ領域ＤＴＡが使用可能になったことを正しく検出することができる。
【０１６０】
図２５は、図１５に示すＣＰＵ３において、ＭＡＣ０−ＭＡＣ３からＤＭＡＣ０−ＤＭＡＣ３にイベントバスＥＢを介して転送される情報の一例を示す。図２５に示す例では、ＤＭＡＣ０−ＤＭＡＣ３用のライトキューＷＱＵＥのエントリＷＱＵＥ（ｉ）は、ＭＡＣ０−ＭＡＣ３に接続されるＤＩＭＭに分散して割り当てられているとする。
【０１６１】
ＭＡＣ３は、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報ＡをＤＭＡＣ０に送信し、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報ＢをＤＭＡＣ１に送信する。ＭＡＣ２は、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報Ｅおよび情報ＦをＤＭＡＣ１およびＤＭＡＣ２にそれぞれ送信する。ＭＡＣ１は、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報Ｉおよび情報ＪをＤＭＡＣ２およびＤＭＡＣ３にそれぞれ送信する。ＭＡＣ０は、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報Ｎ、情報Ｏおよび情報ＭをＤＭＡＣ０、ＤＭＡＣ１およびＤＭＡＣ３にそれぞれ送信する。
【０１６２】
図２６は、ＭＡＣ０−ＭＡＣ３が図２５に示した情報をイベントバスＥＢに送信する動作の一例を示す。各ＭＡＣ０−ＭＡＣ３は、図１８に示すタイミングにしたがって、イベントテーブルＥＶＴＢＬのエントリＥＮＴに格納されたカウンタ値ＣＯＵＮＴを含む情報をイベントバスＥＢに出力する。情報をイベントバスＥＢに出力するサイクルは、矢印で示される。そして、各ＭＡＣ０−ＭＡＣ３から出力された情報は、衝突することなくＤＭＡＣ０に対応するラッチＢ０（図２０）に伝達される。
【０１６３】
図２７は、ＤＭＡＣ０−ＤＭＡＣ３が図２５に示した情報をイベントバスＥＢから受信する動作の一例を示す。図２７は、図２６の動作の続きを示す。ＤＭＡＣ０−ＤＭＡＣ３が情報を受信するサイクルは、矢印で示される。
【０１６４】
ＤＭＡＣ０は、ラッチＢ１から出力される情報を受信し、”００”のコードＣＤを有する情報Ａ、Ｎに含まれるカウンタ値ＣＯＵＮＴを、カウンタ値保持部ＣＨＬＤのエントリＥＮＴＣに保持されているカウンタ値ＣＯＵＮＴに加える（”＋Ａ”、”＋Ｎ”）。ＤＭＡＣ１は、ラッチＢ１から出力される情報を受信し、”０１”のコードＣＤを有する情報Ｏ、Ｅ、Ｂに含まれるカウンタ値ＣＯＵＮＴを、エントリＥＮＴＣに保持されているカウンタ値ＣＯＵＮＴに加える（”＋Ｏ”、”＋Ｅ”、”＋Ｂ”）。ＤＭＡＣ２、ＤＭＡＣ３も、自身を示すコードＣＤを有する情報に含まれるカウンタ値ＣＯＵＮＴを、エントリＥＮＴＣに保持されているカウンタ値ＣＯＵＮＴに加える（”＋Ｉ”、”＋Ｆ”、”＋Ｍ”、”＋Ｊ”）。なお、各ＤＭＡＣ０−ＤＭＡＣ３は、情報を受信したサイクルでのタイミングカウンタＴＣの値に基づいて、情報を送信したＭＡＣを特定する。
【０１６５】
なお、図１５から図２７に示す実施形態では、タイミングカウンタＴＣおよび選択カウンタＳＣを利用して、イベントバスＥＢ上で情報を衝突させることなく、ＭＡＣ０−ＭＡＣ３からＤＭＡＣ０−ＤＭＡＣ３に情報を伝達する例を説明した。しかしながら、ＭＡＣ０−ＭＡＣ３のテーブル制御部ＴＢＬＣＮＴＬ（図１６）は、セレクタＳＥＬの入力に接続されるラッチＢ１から情報が出力されていないことを判定した場合に、情報をセレクタＳＥＬに出力してもよい。すなわち、ＭＡＣ０−ＭＡＣ３のテーブル制御部ＴＢＬＣＮＴＬは、イベントバスＥＢが空いている場合に、セレクタＳＥＬを介して情報をイベントバスＥＢに出力してもよい。これにより、タイミングカウンタＴＣおよび選択カウンタＳＣを利用することなく、イベントバスＥＢを介して情報を伝達することができる。但し、この場合、情報の送信元のＭＡＣを示すコードが、図１９に示すフォーマットに追加される。
【０１６６】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
バスを介して記憶装置に接続され、前記記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を前記記憶装置に割り当てられた情報格納領域に書き込む演算処理部と、
前記バスを監視し、前記演算処理部による前記情報格納領域への書き込みを検出した場合、書き込み発生情報を前記バスとは異なる信号線に出力する監視部と、
前記信号線を介して前記書き込み発生情報を受信した場合、前記バスを介して前記情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して対応するデータ領域にアクセスするアクセス制御部を有することを特徴とする演算処理装置。
（付記２）
前記アクセス制御部は、前記情報格納領域から読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して前記演算処理部に処理させるデータを前記データ領域に書き込み、
前記演算処理部は、前記データ領域に書き込まれたデータの処理を実行し、データ処理の実行後に前記情報格納領域に、対応するデータ領域が使用可能になったことを示す使用可能情報を書き込むことを特徴とする付記１記載の演算処理装置。
（付記３）
前記演算処理部は、前記記憶装置に割り当てられた複数の前記データ領域に書き込まれるデータを順次処理し、複数の前記データ領域の各々が使用可能である旨を示す使用可能情報を、複数の前記データ領域に対応する複数の前記情報格納領域に順次書き込み、
前記監視部はさらに、
複数の前記情報格納領域への書き込みの検出回数を保持する第１の保持部と、
前記第１の保持部が保持する前記検出回数を前記書き込み発生情報として所定の周期で前記信号線に出力するとともに、前記第１の保持部が保持する前記検出回数をリセットする検出回数制御部を有し、
前記アクセス制御部はさらに、
前記信号線を介して受信する前記検出回数を保持する第２の保持部と、
前記情報格納領域が保持する使用可能情報を読み出す読み出し要求を、前記第２の保持部が保持する検出回数出力し、前記読み出し要求に応答して前記情報格納領域から対応するデータ領域が使用可能である旨を示す使用可能情報が読み出されない場合、前記読み出し要求を再度出力する読み出し制御部を有することを特徴とする付記１または付記２記載の演算処理装置。
（付記４）
前記アクセス制御部はさらに、使用可能情報とともに前記情報格納領域から読み出される前記データ領域のアドレスを保持する複数のエントリを含むアドレス保持部を有し、
前記アクセス制御部は、前記エントリに空きがある場合、前記第２の保持部が保持する前記検出回数の前記読み出し要求を出力することを特徴とする付記３記載の演算処理装置。
（付記５）
前記演算処理装置は、複数の前記監視部と、複数の前記監視部にそれぞれ接続された複数の前記記憶装置を有し、
前記信号線は、複数の前記監視部に共通に設けられることを特徴とする付記４記載の演算処理装置。
（付記６）
複数の前記監視部は、互いに異なるタイミングで前記信号線に前記書き込み発生情報を出力することを特徴とする付記５記載の演算処理装置。
（付記７）
複数の前記監視部の各々は、前記信号線が空いている期間に、前記信号線に前記書き込み発生情報を出力することを特徴とする付記５記載の演算処理装置。
（付記８）
前記アクセス制御部は、前記演算処理装置に接続される制御装置からの要求に基づいて前記演算処理部に処理させるデータを前記データ領域に書き込むことを特徴とする付記２ないし付記７のいずれか１項記載の演算処理装置。
（付記９）
前記演算処理部は、データ処理の実行により得られたデータを前記データ領域に書き込んだ後、対応する情報格納領域に前記データ領域が使用可能である旨を示す使用可能情報を書き込み、
前記アクセス制御部は、前記書き込み発生情報の受信に基づいて前記情報格納領域から読み出した使用可能情報が対応するデータ領域が使用可能である旨を示す場合、対応するデータ領域に格納されたデータを読み出すことを特徴とする付記１記載の演算処理装置。
（付記１０）
前記使用可能情報は、論理の反転により対応するデータ領域が使用可能になった旨を示すフラグとして、前記情報格納領域に書き込まれ、
前記アクセス制御部は、前回データ領域が使用可能になった旨を示す論理を保持することを特徴とする付記１ないし付記９のいずれか１項記載の演算処理装置。
（付記１１）
前記バスは、前記記憶装置の動作を制御するメモリ制御装置を介して前記記憶装置に接続されることを特徴とする付記１ないし付記１０のいずれか１項記載の演算処理装置。
（付記１２）
バスを介して記憶装置に接続された演算処理部と、監視部と、アクセス制御部を有する演算処理装置の制御方法において、
前記演算処理部が、前記記憶装置においてデータを格納するデータ領域が使用可能である場合、対応するデータ領域が使用可能であるかを示す使用可能情報を前記記憶装置に割り当てられた情報格納領域に書き込み、
前記監視部が、前記バスを監視し、前記演算処理部による前記情報格納領域への書き込みを検出した場合、書き込み発生情報を前記バスとは異なる信号線に出力し、
アクセス制御部が、前記信号線を介して前記書き込み発生情報を受信した場合、前記バスを介して前記情報格納領域が保持する使用可能情報を読み出し、読み出した使用可能情報が対応するデータ領域が使用可能である旨を示すとき、前記バスを介して対応するデータ領域にアクセスすることを特徴とする演算処理装置の制御方法。
【０１６７】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１６８】
１０…演算処理部；２０…監視部；３０…アクセス制御部；１００…演算処理装置；２００…記憶装置；２０２…データ領域；２０４…情報格納領域；Ｂ０−Ｂ３…ラッチ；ＢＵＳ…バス；ＣＨＬＤ…カウンタ値保持部；ＣＯＲＥ０、ＣＯＲＥ１…ＣＰＵコア；ＣＰＵ０−ＣＰＵ３…演算処理装置；ＣＱＵＥ…完了キュー；ＣＱＵＥＡＤ…先頭アドレス；ＣＱＵＥ（ｉ）…エントリ；ＤＥＣＨＬＤ…減数保持部；ＤＩＭＭ…メモリモジュール；ＤＴＡ…データ領域；ＥＢ…信号線（イベントバス）；ＥＭＢ…外部メモリバス；ＥＮＴＨＬＤ…エントリ保持部；ＥＶＮＴ…イベント採取部；ＥＶＴＢＬ…イベントテーブル；ＩＣＮＷ…インタコネクトネットワーク；Ｉ／Ｏ…入出力装置；Ｉ／ＯＮＷ…入出力ネットワーク；ＩＰＥ１、ＩＰＥ２…情報処理装置；ＭＡＩＮＢ…メインバス；ＭＣＮＴＬ…メモリコントローラ；ＭＭＮＧ…メモリ処理部；ＰＦＣＮＴＬ…プリフェッチ制御部；ＰＦＰＣ…プリフェッチパケット制御部；ＰＨＬＤ…パケット保持部；ＲＥＱＡＮＬ…要求解析部；ＲＳＶＭＮＧ…受信処理部；ＳＣ…選択カウンタ；ＳＣＮＴ０−ＳＣＮＴ３…制御信号；ＳＣＮＴＬ…システムコントローラ；ＳＥＬ０−ＳＥＬ３、ＳＥＬ５…セレクタ；ＴＢＬＣＮＴＬ…テーブル制御部；ＴＣ…タイミングカウンタ；Ｖ０、Ｖ１…バリッドビット；ＷＱＵＥ…ライトキュー；ＷＱＵＥＡＤ…先頭アドレス；ＷＱＵＥ（ｉ）…エントリ；ＷＱＵＥＰ…ライトキューポインタ
【図１】
0006575194.tif 000002
【図２】
0006575194.tif 000003
【図３】
0006575194.tif 000004
【図４】
0006575194.tif 000005
【図５】
0006575194.tif 000006
【図６】
0006575194.tif 000007
【図７】
0006575194.tif 000008
【図８】
0006575194.tif 000009
【図９】
0006575194.tif 000010
【図１０】
0006575194.tif 000011
【図１１】
0006575194.tif 000012
【図１２】
0006575194.tif 000013
【図１３】
0006575194.tif 000014
【図１４】
0006575194.tif 000015
【図１５】
0006575194.tif 000016
【図１６】
0006575194.tif 000017
【図１７】
0006575194.tif 000018
【図１８】
0006575194.tif 000019
【図１９】
0006575194.tif 000020
【図２０】
0006575194.tif 000021
【図２１】
0006575194.tif 000022
【図２２】
0006575194.tif 000023
【図２３】
0006575194.tif 000024
【図２４】
0006575194.tif 000025
【図２５】
0006575194.tif 000026
【図２６】
0006575194.tif 000027
【図２７】
0006575194.tif 000028