(57)【要約】【課題】マルチマスタ処理においてメモリ上の共有領域でデータを共有する場合に、マスタがメモリコントローラを介して共有データがメモリに書き込まれていることを確認するための処理に必要となるシステムの負荷を軽減する。【解決手段】マスタ１〜３から発行されるメモリ５へのアクセス要求を実行するメモリコントローラ４と、前記データの前記共有領域へのライト要求を前記メモリコントローラ４へ発行するマスタ１と、前記データが前記共有領域へライトされたことを確認し、前記共有領域から前記データをプリフェッチするプリフェッチ制御部９と、前記データがプリフェッチされたことを前記プリフェッチ手段から通知され、前記プリフェッチされたデータをリードするマスタ２とを備える。【選択図】図１
2007241612.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタがメモリ上に設けられた共有領域を用いてデータの受け渡しを行うマルチマスタシステムであって、
前記複数のマスタから発行される前記メモリへのアクセス要求を実行するメモリコントローラと、
前記データの前記共有領域へのライト要求を前記メモリコントローラへ発行する第１マスタと、
前記データが前記共有領域へライトされたことを確認し、前記共有領域から前記データをプリフェッチするプリフェッチ手段と、
前記データがプリフェッチされたことを前記プリフェッチ手段から通知され、前記プリフェッチされたデータをリードする第２マスタと
を備えることを特徴とするマルチマスタシステム。
【請求項２】
前記第１マスタは、前記ライト要求の後、前記データの前記共有領域からのリードを前記メモリコントローラへ要求し、そのリード要求の完了に応じて、前記プリフェッチ手段へライト完了を通知し、
前記プリフェッチ手段は、前記第１マスタから前記ライト完了の通知を受け取ることによって、前記データが前記共有領域へライトされたことを確認する
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項３】
前記プリフェッチ手段は、前記データを、前記第２マスタがリードする単位よりも大きな単位で、プリフェッチする
ことを特徴とする請求項２に記載のマルチマスタシステム。
【請求項４】
前記プリフェッチ手段は、前記プリフェッチされたデータを分割して得られる複数の部分が、それぞれ前記第２マスタによってリードされたか否かを示す複数のフラグ情報を保持し、前記保持されている複数のフラグ情報が、前記第２マスタによって全ての部分がリードされたことを示す場合に、前記共有領域から新たなデータをプリフェッチする
ことを特徴とする請求項３に記載のマルチマスタシステム。
【請求項５】
前記第２マスタは、前記プリフェッチされたデータをアドレス順にリードし、
前記プリフェッチ手段は、前記プリフェッチされたデータのうちの最終アドレスのデータが前記第２マスタによってリードされたか否かを示すフラグ情報を保持し、前記保持されているフラグ情報が、前記第２マスタによって前記最終アドレスのデータがリードされたことを示す場合に、前記共有領域から新たなデータをプリフェッチする
ことを特徴とする請求項３に記載のマルチマスタシステム。
【請求項６】
前記プリフェッチ手段は、
複数の部分にそれぞれプリフェッチされたデータを保持するバッファメモリを有し、
一の部分に保持されているデータが前記第２マスタによってリードされる場合に、他の部分へ前記共有領域から新たなデータをプリフェッチする
ことを特徴とする請求項３に記載のマルチマスタシステム。
【請求項７】
前記プリフェッチ手段は、
前記第１マスタから前記ライト完了の通知を受け取ってから、プリフェッチした共有領域の全てのデータが前記第２マスタによってリードされるまでの第１期間と、その他の第２期間とを区別して示すフラグ情報を保持し、
前記保持されているフラグ情報が前記第１期間を示す場合には、プリフェッチされている全てのデータが前記第２マスタによってリードされた場合に、前記共有領域から新たなデータをプリフェッチし、
前記保持されているフラグ情報が前記第２期間を示す場合には、プリフェッチされているデータと異なるアドレスのデータへのリード要求を前記第２マスタから受け付けた場合に、前記共有領域から新たなデータをプリフェッチする
ことを特徴とする請求項２に記載のマルチマスタシステム。
【請求項８】
前記プリフェッチ手段は、
前記共有領域の最終アドレスを保持している共有領域最終アドレスレジスタを有し、
前記第１マスタから前記ライト完了の通知を受け取ってから、前記第２マスタからの前記共有領域最終アドレスレジスタに保持されているアドレスへのリード要求を処理し終えるまでの期間には、プリフェッチされている全てのデータが前記第２マスタによってリードされた場合に、前記共有領域から新たなデータをプリフェッチし、
その他の期間には、プリフェッチされているデータのアドレスと異なるアドレスのデータへのリード要求を前記第２マスタから受け付けた場合に、前記共有領域から新たなデータをプリフェッチする
ことを特徴とする請求項２に記載のマルチマスタシステム。
【請求項９】
前記第１マスタは、前記ライト要求を発行後、前記データが前記共有領域へライトされたか否かとは無関係に、前記プリフェッチ手段へライト完了を通知し、
前記プリフェッチ手段は、前記第１マスタから前記ライト完了の通知を受け取ると、前記第１マスタに代わって前記データの前記共有領域からのリードを前記メモリコントローラへ要求し、そのリード要求が完了することによって、前記データが前記共有領域へライトされたことを確認する
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項１０】
前記第１マスタは、前記ライト要求を発行後、前記データが前記共有領域へライトされたか否かとは無関係に、前記プリフェッチ手段へライト完了を通知し、
前記メモリコントローラは、前記ライト要求が前記メモリコントローラ内で保留されているか又は実行中であることを示すアクセス状態信号を前記プリフェッチ手段へ出力し、
前記プリフェッチ手段は、前記第１マスタから前記ライト完了の通知を受け取ると、前記第１マスタからの新たなアクセス要求を前記メモリコントローラへ発行されないようにマスクし、その後、前記アクセス状態信号が保留中でも実行中でもないことを示すことによって、前記データが前記共有領域へライトされたことを確認する
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項１１】
前記プリフェッチ制御手段は、前記共有領域から前記データを、前記第１マスタがデータ転送に用いるデータパスを介してプリフェッチする
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項１２】
前記第１マスタは、前記ライト要求の後、前記データの前記共有領域からのリードを、前記プリフェッチ手段を介して前記メモリコントローラへ要求し、
前記プリフェッチ手段は、前記第１マスタからの前記リード要求を前記メモリコントローラへ中継すると、前記メモリコントローラによって前記リード要求が実行されたか否かとは無関係に、前記第１マスタへ前記リード要求の完了を通知し、その後、前記メモリコントローラから実際の完了通知を受け取ることによって、前記データが前記共有領域へライトされたことを確認する
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項１３】
前記マルチマスタシステムは、さらに、
前記メモリ上のデータを前記第２マスタに対してキャッシュするキャッシュ手段を備え、有しており、
前記プリフェッチ手段は、前記キャッシュ手段に対してプリフェッチ命令を与えることによって、前記キャッシュ手段に前記データをプリフェッチさせ、
前記第２マスタは、プリフェッチされた前記データを前記キャッシュ手段からリードする
ことを特徴とする請求項１に記載のマルチマスタシステム。
【請求項１４】
前記プリフェッチ手段は、共有領域からキャッシュへの転送サイズを予め設定され、前記設定されたサイズに応じた個数のプリフェッチ命令を、要求アドレスをプリフェッチサイズ分インクリメントしながら前記キャッシュ手段に与え、
前記キャッシュ手段は、共有領域の先頭アドレスから前記先行キャッシュサイズ分の共有データを前記キャッシュ手段へ転送し、前記第２マスタへ共有領域への先頭アドレスからのリードを要求する
ことを特徴とする請求項１３記載のマルチマスタシステム。
【請求項１５】
前記第２マスタは、前記キャッシュとバッファメモリを介して前記メモリコントローラにデータ転送要求を出力し、
前記プリフェッチ制御手段は、
前記キャッシュ制御手段にプリフェッチラインサイズのプリフェッチ命令を与えるとともに、
前記メモリコントローラに対して、プリフェッチラインサイズとバッファメモリサイズとを合計したサイズのデータを一括して、前記共有領域から転送するよう要求し、
前記メモリコントローラによって前記共有領域から転送されたデータのうち、先頭からプリフェッチラインサイズのデータと、残りのデータとを、それぞれ前記キャッシュ手段と、バッファメモリとに分割保持させる第１の制御と、前記キャッシュ手段にプリフェッチラインサイズのプリフェッチ命令を出力する第２の制御とを交互に行う
ことを特徴とする請求項１３のマルチマスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタがメモリ上の共有領域を介してデータの受け渡しを行うマルチマスタシステムに関し、特に、データの受け渡しの際のシステム性能の向上のための技術に関する。
【背景技術】
【０００２】
従来、マルチマスタシステムにおいて、データ処理を複数のマスタで分担して行うために、マスタから共通にアクセス可能なメモリ上に共有領域を設定し、一方のマスタが処理済みのデータを共有領域へライトし、他方のマスタが共有領域からそのデータをリードして次のデータ処理を行っている。
【０００３】
データ処理の一例としてＯＳＤ(オンスクリーンディスプレイ）を挙げることができる。ＯＳＤの一部の処理として、一方のマスタは、メニュー画面の生成処理を行い、メニュー画面のビットマップデータを共有領域へ出力し、他方のマスタへ通知する。他方のマスタは、メニュー画面内に表示するテキスト情報を生成し、共有領域から読み出したビットマップデータにテキスト情報で指定されたフォントデータを合成する処理を行う。
【０００４】
図１６は、従来のマルチマスタシステムの一例を示す概略構成図である。図１６を用いてマルチマスタシステムの概略構成及び動作について説明する。
【０００５】
この例に示されるマルチマスタシステム１００は、複数のマスタ１、２、３、メモリコントローラ４、メモリ５、キャッシュメモリ６、キャッシュＩＦ７、バッファメモリ８、及びバッファ制御部１０から構成され、メモリコントローラ４は、それぞれのマスタ用のＷＢ（ライトバッファ）１１〜１３を有している。
【０００６】
複数のマスタ１〜３からのメモリアクセスは、メモリコントローラ４を介して行われる。メモリコントローラ４は、マスタ１〜３からの複数のデータ転送要求をアービトレーションした後、アービトレーション結果に応じた順序で選ばれるデータ転送要求に従って、メモリ５にアクセスする。
【０００７】
このとき、メモリコントローラ４は、それぞれのマスタからのライトデータを対応するＷＢ１１〜１３に保持した時点でマスタへ転送終了を通知するという突き放し制御を行う。この突き放し制御は、マスタ１〜３からメモリコントローラ４へのライトアクセスのレイテンシの短縮を図るために行われる。そして、メモリコントローラ４は、ＷＢ１２にライトデータを保持した後、他のマスタからのアクセス要求があれば引き続いてアービトレーションを実行し、メモリ５ヘのアクセスを実行する。
【０００８】
また、共有領域がアンキャッシャブルメモリ空間に割り付けられるため、共有領域のリードアクセスのキャッシュメモリによる高速化ができない場合がある。そのような場合には、従来、メモリコントローラからメモリへのデータ転送単位を大きくして、転送単位のデータをメモリからリードしてバッファメモリに保持し、バッファメモリ内のリードが連続して発生する場合には、メモリへアクセスせずに、バッファメモリからリードを行う技術が用いられることがある。
【０００９】
メモリからバッファメモリへのデータ転送制御に関する従来の技術として、例えば、バッファメモリの一部のアドレス（例えば１６バイト境界のデータブロック毎の、例えば先頭アドレスや末尾のアドレス）への読み出しを検出すると、バッファ制御手段がバッファメモリの無効化と、一部のアドレスを含む領域についてメモリからバッファメモリへデータを更新する技術が開示されている（特許文献１参照）。
【００１０】
図１７は、マルチマスタシステムにおける複数のマスタがメモリ上の共有領域を介してデータの受け渡しを行う一般的な処理を、マスタ１が共有領域にデータをライトし、そのデータをマスタ２がリードする場合について示すタイミングチャートである。図１７を用いて、この処理の各実行サイクルについて説明する。
【００１１】
ここで、共有領域をアドレス０番地からアドレス１００番地とし、メモリアドレス１００番地へのライトアクセスをライト１００と表記し、メモリアドレス０番地から３番地へのリードアクセスを一括してリード０−３と表記する。また、共有領域外のアクセスはマスタ１、２以外のマスタ（例えばマスタ３等）からのアクセスであるとする。
【００１２】
Ｔ１サイクルまでに、マスタ１は、ライト０からライト９９までを終えている。
【００１３】
Ｔ１サイクルにおいて、マスタ１は、メモリコントローラ４へライト１００を開始する。
【００１４】
Ｔ２サイクルにおいて、メモリコントローラ４のＷＢ１１は、ライト１００のデータを保持した後、ライト受け付け応答をマスタ１へ出力する。
【００１５】
Ｔ３サイクルにおいて、マスタ１は、メモリコントローラ４に対して、ライトアクセスと同じアドレスへのリードすなわちダミーリード１００を開始する。このダミーリードは、突き放し制御の下でＷＢ１１に保持されたライトデータが、メモリ５へも書き込まれたことを確認するために行われる。メモリコントローラ４は、他のマスタからのリード２００、およびライト１００の処理に続いて、リード１００を処理する。
【００１６】
Ｔ１０サイクルで、メモリコントローラ４はメモリ５へのリード１００を完了する。
【００１７】
Ｔ１１サイクルで、マスタ１はダミーリード１００を完了する。これにより、マスタ１は、共有データがメモリ５へ書き込まれたことを確認する。
【００１８】
Ｔ１２サイクルにおいて、マスタ１は、マスタ２に対しライトの完了を通知する。
【００１９】
Ｔ１３サイクルにおいて、ライトの完了通知を受けたマスタ２は、共有領域へのアクセスを開始する。まず、バッファ制御部１０に対して、リード０を開始する。バッファ制御部１０は、リード０をバスのデータ転送単位量に応じて他のアドレス番地との一括リード０−３に変換し、メモリコントローラ４はリード０−３を開始する。
【００２０】
Ｔ１７からＴ２０サイクルで、メモリコントローラ４はリード０−３を完了する。
【００２１】
Ｔ１８サイクルで、バッファ制御部１０はリード０を完了する。
【００２２】
Ｔ１９サイクルで、マスタ２はリード０を完了する。
【００２３】
Ｔ２０サイクルで、マスタ２はリード１を開始する。リード０−３のデータはバッファメモリ８に転送されているので、マスタ２からのリード１、２、３は、何れも１クロック時間で終了する。
【００２４】
以上説明したように、複数マスタ間のデータの受け渡しは、Ｔ１１からＴ２５のサイクルで行われる。
【特許文献１】特開平６−２４３０３７号公報（第６頁、第一図）
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、従来のマルチマスタシステムには、メモリ上の共有領域を介してデータの受け渡しを行う際の各マスタの処理性能を損なう次のような問題がある。
【００２６】
第１に、共有データのライトを行うマスタがダミーリードを行う必要がある問題。
【００２７】
このダミーリードは、前述したように、突き放し制御の下でライトバッファに保持されたライトデータが、他のマスタによるリード前に、確実にメモリへも書き込まれたことを確認するために必要であり、共有データをライトするマスタはダミーリードを発行するための負担を強いられる。特に、メモリが多くのレイテンシサイクルを要求する等の理由で、共有データのダミーリードに多くのサイクルが必要な場合には、ダミーリードの完了待ちによりマスタの処理が中断することもあり得る。
【００２８】
第２に、共有データのリードに要する待ち時間が最適化されない問題。
【００２９】
共有データのリードを行うマスタは、共有データのリードを開始した後、メモリコントローラがメモリから共有データをリードするまで、待ちを強いられる。この待ち時間も、前述したダミーリードに要する時間と同様、共有データのリードに必要なサイクルが多くなるほど長くなり、リードの完了待ちによりマスタの処理が中断することもあり得る。
【００３０】
本発明は、このような事情に鑑みてなされたものであり、メモリ上の共有領域を介してデータの受け渡しを行う際の各マスタの処理性能を向上するマルチマスタシステムを提供することを目的とする。
【課題を解決するための手段】
【００３１】
上記課題を解決するため、本発明のマルチマスタシステムは、複数のマスタがメモリ上に設けられた共有領域を用いてデータの受け渡しを行うマルチマスタシステムであって、前記複数のマスタから発行される前記メモリへのアクセス要求を実行するメモリコントローラと、前記データの前記共有領域へのライト要求を前記メモリコントローラへ発行する第１マスタと、前記データが前記共有領域へライトされたことを確認し、前記共有領域から前記データをプリフェッチするプリフェッチ手段と、前記データがプリフェッチされたことを前記プリフェッチ手段から通知され、前記プリフェッチされたデータをリードする第２マスタとを備える。
【００３２】
また、前記第１マスタは、前記ライト要求の後、前記データの前記共有領域からのリードを前記メモリコントローラへ要求し、そのリード要求の完了に応じて、前記プリフェッチ手段へライト完了を通知し、前記プリフェッチ手段は、前記第１マスタから前記ライト完了の通知を受け取ることによって、前記データが前記共有領域へライトされたことを確認してもよい。
【００３３】
また、前記第１マスタは、前記ライト要求を発行後、前記データが前記共有領域へライトされたか否かとは無関係に、前記プリフェッチ手段へライト完了を通知し、前記プリフェッチ手段は、前記第１マスタから前記ライト完了の通知を受け取ると、前記第１マスタに代わって前記データの前記共有領域からのリードを前記メモリコントローラへ要求し、そのリード要求が完了することによって、前記データが前記共有領域へライトされたことを確認してもよい。
【発明の効果】
【００３４】
本発明に係るマルチマスタシステムを使用することで、ライトデータのマスタによるダミーリードの必要が省かれると共に、バッファリングによって共有データのリード待ち時間が短縮されるので、共有データをライトするマスタ、及び共有データをリードするマスタのそれぞれの処理性能が従来に比べて向上する。
【００３５】
この処理性能の向上は、アクセスレイテンシが大きいメモリを使用している場合や、共有データのライトとダミーリードとの間にメモリコントローラが他のマスタからのアクセスをアービトレーションする場合に、特に顕著である。
【発明を実施するための最良の形態】
【００３６】
（第１の実施の形態）
以下、本発明の実施の形態について図１〜図１５を用いて説明する。
【００３７】
（全体構成）
図１は、本発明の第１の実施の形態におけるマルチマスタシステム１０１の機能的な構成の一例を示すブロック図である。マルチマスタシステム１０１は、マスタ１によってメモリ５へライトされた共有データを、メモリ５からプリフェッチしてマスタ２からの参照に供するシステムであって、複数のマスタ１、２、３、メモリコントローラ４、メモリ５、バッファメモリ８、プリフェッチ制御部９から構成される。
【００３８】
マスタ１、２は、メモリコントローラ４を介してメモリ５のデータをアクセスしながら、データ処理を分担して行う。マスタ１、２の分担は、マスタ１がメモリ５の共有領域へライトした共有データを、マスタ２がリードすることで連携される。特にマスタ２によるデータのアクセスは、プリフェッチ制御部９を介して処理される。
【００３９】
マスタ３は、メモリコントローラ４を介してメモリ５のデータをアクセスしながら、マスタ１、２によって行われるデータ処理とは独立した他のデータ処理を行う。
【００４０】
プリフェッチ制御部９は、メモリコントローラ４によってメモリ５からリードされたデータをバッファメモリ８に保持すると共に、マスタ２からのリード要求に応じてバッファメモリ８に保持されているデータをマスタ２へ出力する。
【００４１】
メモリコントローラ４は、マスタ１、２、３からのアクセス要求をアービトレーションし、その結果に応じた一つに従ってメモリ５へのアクセスを行う。
【００４２】
（プリフェッチ制御部９の構成）
図２は、プリフェッチ制御部９の内部の機能的な構成の一例を示すブロック図である。プリフェッチ制御部９は、マスタインタフェース９１０、バッファリード制御部９１１、バッファライト制御部９１２、メモリコントローラインタフェース９１３、マスタ通知インタフェース９１４、レジスタブロック９１５、アドレス生成部９１６、メモリリード生成部９１７、及びプリフェッチシーケンサ９１８から構成される。
【００４３】
レジスタブロック９１５は、アクセスアドレスレジスタ９１９、リード完了フラグレジスタ９２０、共有領域先頭アドレスレジスタ９２１、共有領域最終アドレスレジスタ９２２、バッファ制御選択レジスタ９２３、及び通知フラグレジスタ９２４を備える。
【００４４】
アクセスアドレスレジスタ９１９は、バッファリード制御部９１１から与えられるアドレス情報をアドレスフィールドに保持すると共に、そのアドレス情報が有効かどうかを示すバリッドビットを保持する。
【００４５】
リード完了フラグレジスタ９２０は、バッファリード制御部９１１により更新され、バッファメモリ８に保持されているデータがマスタ２によってリードされたか否かに関するフラグ情報を保持する。
【００４６】
共有領域先頭アドレスレジスタ９２１及び共有領域最終アドレスレジスタ９２２は、共有領域のそれぞれ先頭及び末尾を示すアドレス情報を、共有領域でのデータの受け渡しを行う前に設定され、保持している。
【００４７】
バッファ制御選択レジスタ９２３は、バッファメモリ８へのデータ転送動作を切り替えるために使用されるレジスタであり、マスタ２より設定される。
【００４８】
通知フラグレジスタ９２４はマスタ２への通知信号の発行時期を示すために使用されるレジスタであり、マスタ通知インタフェース９１４及びプリフェッチシーケンサ９１８により更新される。
【００４９】
マスタインタフェース９１０は、マスタ２からのリード要求を含むアクセス情報をバッファリード制御部９１１へ出力するとともに、バッファリード制御部９１１から出力されるリードデータをマスタ２へ出力する。
【００５０】
バッファリード制御部９１１は、マスタインタフェース９１０から取得されるマスタ２によって要求されたリードアドレスと、アクセスアドレスレジスタ９１９に保持されたアドレスとを比較し、両者が一致しない場合にはプリフェッチシーケンサ９１８を起動する。両者が一致している場合にはリードアドレスに一致するデータをバッファメモリ８からマスタインタフェース９１０へ出力し、バッファメモリ８からのデータの読み出しに同期して、リード完了フラグレジスタ９２０にバッファメモリ８のリードが完了したことを示す情報を記録する。
【００５１】
なお、バッファリード制御部９１１は、アクセスアドレスレジスタ９１９のバリッドビッドがインバリッドに設定されている場合には、前述したアドレスの比較を行うことなくプリフェッチシーケンサ９１８を起動する。
【００５２】
バッファライト制御部９１２は、メモリコントローラインタフェース９１３から出力されるデータをバッファメモリ８にライトし、バッファメモリ８へのライトの完了をプリフェッチシーケンサ９１８に通知する。
【００５３】
メモリコントローラインタフェース９１３は、メモリリード生成部９１７からのリードアクセスの要求をメモリコントローラ４へ転送し、メモリコントローラ４から返却されるリードデータをバッファライト制御部９１２へ出力する。
【００５４】
マスタ通知インタフェース９１４は、マスタ１からライト完了通知信号を取得すると、通知フラグレジスタ９２４をイネーブルに更新する。その後、通知フラグレジスタ９２４がイネーブルからディスエーブルに更新されたことを検出して、マスタ２にリード要求通知信号を出力する。通知フラグレジスタ９２４のディスエーブルへの更新は、プリフェッチシーケンサ９１８によって行われる。
【００５５】
アドレス生成部９１６は、メモリリード生成部９１７が生成するリード要求に示されるべきアドレス情報を、共有領域先頭アドレスレジスタ９２１及びアクセスアドレスレジスタ９１９の出力を用いて生成する。
【００５６】
メモリリード生成部９１７は、プリフェッチシーケンサ９１８の制御により、メモリコントローラインタフェース９１３へのリード要求を生成する。
【００５７】
プリフェッチシーケンサ９１８は、プリフェッチ制御部９の各部を連携して動作させる。この連係動作については、後で詳述する。
【００５８】
（動作例）
次に、本発明の第１の実施の形態における主要部の動作例を、図３から図５を用いて説明する。
【００５９】
図３は、本発明の第１の実施の形態におけるマスタ１の処理の一例を示すフローチャートである。
【００６０】
図４は、本発明の第１の実施の形態におけるプリフェッチ制御部９の処理の一例を示すフローチャートである。
【００６１】
図５は、本発明の第１の実施の形態におけるマスタ２の処理の一例を示すフローチャートである。
【００６２】
想定される動作として、マスタ１とマスタ２は、データ処理を分担して行うマルチマスタ処理を行うとする。このマルチマスタ処理において、マスタ１がデータ処理した結果をメモリ５上に設定した共有領域にライトし、マスタ２は、共有領域からマスタ１によってライトされた結果をリードして、マスタ２でのデータ処理を行う。
【００６３】
（マスタ１の動作）
まず、図３を参照して、マスタ１の動作について説明する。
【００６４】
ステップ２００１で、マスタ１は、マルチマスタ処理においてシステムで定義された共有領域の情報や、プリフェッチ制御情報をレジスタブロック９１５に設定する。
【００６５】
ステップ２００２で、マルチマスタ処理においてマスタ１に分担されたデータ処理の結果を共有領域の先頭アドレスから順次ライトする。
【００６６】
ステップ２００３で、共有領域への最終アドレスへのライトが終了したことを確認する。
【００６７】
ステップ２００４で、共有領域の最終アドレスへのダミーリードを開始する。
【００６８】
ステップ２００５で、ステップ２００４で開始された共有領域の最終アドレスへのダミーリードの完了を待つ。完了待ちのサイクル中、マスタ１は、処理を中断している。
【００６９】
ステップ２００６で、プリフェッチ制御部９に共有領域へのライトの完了を通知する。
【００７０】
ステップ２００７で、次の共有領域へライトするデータを準備するためのデータ処理を行う。
【００７１】
ステップ２００８で、マスタ２から共有領域のリードの完了の通知を検出するとステップ２００２の処理に戻る、ステップ２００２〜ステップ２００７の処理はマルチマスタ処理が終了するまで繰り返し行われる。
【００７２】
ここで、ステップ２００４のダミーリードが必要となる理由について説明する。
【００７３】
ステップ２００３は、メモリコントローラ４にライト要求が行われ、メモリコントローラ４からのライト要求の受け付け応答により終了する。メモリコントローラ４は、マスタ１からのデータをライトバッファに保持した時点で、ライト要求の受け付け応答をマスタ１へ出力するため、マスタ１がマスタ２にリード要求を行って、マスタ２が、メモリコントローラ４に共有領域へのリードを要求した場合、メモリコントローラ４は、マスタ２のリード要求をアービトレーションし、メモリ５へアクセスする場合がある。
【００７４】
こうなると、マスタ１がライトしたデータでメモリ５が更新される前に、マスタ２がメモリ５から更新前のデータをリードしてしまうという問題が発生する。この問題を解決するため、マスタ１がマスタ２に渡したいデータのライトの次にライト要求時のアドレスへのダミーリードが行われる。メモリコントローラ４は、一般に、同じマスタからのアクセス要求について要求の順序通りにメモリ５に対してアクセスを行うから、ダミーリードが行われた時点で、その前のライトは完了していることが保証される。
【００７５】
（プリフェッチ制御部９の動作）
次に、図４を参照して、プリフェッチ制御部９の動作について説明する。ここで説明する動作が、プリフェッチシーケンサ９１８によって実現される連係動作の一例である。
【００７６】
ステップ９００１で、プリフェッチシーケンサ９１８は、マスタ１から共有領域へのライト完了通知を待つ。マスタ１からのライト完了通知は、マスタ通知インタフェース９１４に入力され、マスタ通知インタフェース９１４は、通知フラグレジスタ９２４をイネーブルに設定する。通知フラグレジスタ９２４がイネーブルに設定されると、プリフェッチシーケンサ９１８がステップ９００２に遷移する。
【００７７】
ステップ９００２で、レジスタブロック９１５内の初期化の必要なレジスタを設定する。初期化の必要なレジスタとしては、アクセスアドレスレジスタ９１９のバリッドビットがある。
【００７８】
ステップ９００３で、プリフェッチシーケンサ９１８は、アドレス生成部９１６からメモリリード生成部９１７に対し、メモリコントローラインタフェース９１３に要求するアドレスを生成出力するよう制御する。本ステップにおいて、アドレス生成部９１６は、共有領域先頭アドレスレジスタから共有領域の先頭アドレスを参照、使用する。
【００７９】
ステップ９００４で、プリフェッチシーケンサ９１８は、メモリリード生成部９１７がメモリコントローラインタフェース９１３にリード要求を行うよう制御し、その結果、メモリコントローラインタフェース９１３は、メモリコントローラ４にリード要求を行う。要求する転送サイズは、一例として、バッファメモリ８のバッファ容量とする。
【００８０】
ステップ９００５で、メモリコントローラインタフェース９１３はメモリコントローラ４からのリードデータをバッファライト制御部９１２へ出力する。バッファライト制御部９１２は、リードデータをバッファメモリ８にライトする。バッファライト制御部９１２は、全てのリードデータのバッファメモリ８へのライトと同期してプリフェッチシーケンサ９１８にバッファメモリ８のプリフェッチ動作が完了したことを通知する。
【００８１】
プリフェッチシーケンサ９１８は、メモリリード生成部９１７が出力するアドレス情報でアクセスアドレスレジスタ９１９のアドレスフィールドを更新するとともにバリッドビットをイネーブルする。
【００８２】
ステップ９００６で、プリフェッチシーケンサ９１８は通知フラグレジスタ９２４をディスエーブルに更新する。マスタ通知インタフェース９１４は、通知フラグレジスタ９２４がイネーブルからディスエーブルに更新されたことを検出し、マスタ２に共有領域のリード要求を通知する。
【００８３】
ステップ９００７で、共有領域のリード要求を通知されたマスタ２は共有領域からのリード動作を開始するため、このリード動作に同期した制御が行われる。共有領域は共有領域の先頭アドレスよりシーケンシャルにリードされる。マスタ１からのリード要求は、マスタインタフェース９１０を介してバッファリード制御部９１１へ出力される。最初のリード要求は、共有領域の先頭アドレスのデータであり、ステップ９００５の処理によりバッファメモリ８に既に保持されており、アクセスアドレスレジスタの保持するアドレスは共有領域の先頭アドレスを示し、バリッドビットはイネーブルされている。
【００８４】
このため、バッファリード制御部９１１はマスタ２からリード要求されたデータは、バッファメモリ８に保持されていると判断し、バッファメモリ８の保持データよりリード要求されたデータを選択し、マスタインタフェース９１０を介して、マスタ２へ出力する。
【００８５】
後続するリード要求は、バッファメモリ８に保持された範囲に対するものであれば、バッファメモリ８よりマスタ２に順次出力される。データのリードが順次行われ、バッファメモリ８が保持するデータが全てリードされたことを検出すると、プリフェッチシーケンサ９１８は、ステップ９００８に遷移する。
【００８６】
ステップ９００８で、マスタ２からのリード要求が共有領域の最終アドレスへのリードであるか検出し、最終アドレスへのリードであればリード完了後、プリフェッチ制御部の処理は終了する。一方、共有領域の途中のアドレスへのリードであれば、次のプリフェッチ動作を行うため、ステップ９００９に遷移する。
【００８７】
ステップ９００９では、ステップ９００３と同様の制御が行われる。但し、アドレス生成部９１６は、前回バッファメモリに保持した共有領域の先頭アドレスを含む領域の次の領域の先頭アドレスを生成することが相違点である。ここで、次の領域の先頭アドレスは、例えば、アクセスアドレスレジスタ９１９の出力にバッファメモリ８が保持するアドレス領域サイズを加算することにより生成することができる。
【００８８】
ステップ９０１０では、ステップ９００４と同様の制御が行われる。
【００８９】
ステップ９０１１では、ステップ９００５と同様の制御が行われる。但し、メモリコントローラ４からのリードデータをバッファメモリ８に転送した後には、ステップ９００７に遷移する。
【００９０】
（プリフェッチ制御部９の実装に関するいくつかの具体例）
次に、主要なステップの実装に関するいくつかの具体例について説明する。
【００９１】
ステップ９００７において、バッファメモリ８が保持するデータが全てリードされたことを検出するために、リード完了フラグレジスタ９２０は、例えば、バッファメモリ８を分割して得られる複数の部分について、それぞれの部分のデータがマスタ２によってリードされたか否かを示す複数のフラグ情報を持てばよい。この場合、全てのフラグ情報がリード完了を示すことによって、バッファメモリ８が保持する全てのデータがリードされたことを検出できる。
【００９２】
また、バッファメモリ８のデータがシーケンシャルにリードされることが分かっている場合は、最後にリードされるアドレスに対応するデータについてのみ、そのデータがマスタ２によってリードされたか否かを示すフラグ情報を持てばよい。この場合、最後のアドレスに対応した１ビットのリード完了フラグレジスタを実装すれば十分であるため、ハードウェアコストを削減することができる。
【００９３】
また、ステップ９００８において、マスタ２からのリード要求が共有領域の最終アドレスに対するリード要求であることの判断は、共有領域最終アドレスレジスタ９２２の出力とマスタインタフェース９１０からバッファリード制御部９１１への要求アドレスとの完全一致をバッファリード制御部９１１で比較することによって行えばよい。
【００９４】
また同等の判断を、アクセスアドレスレジスタ９１５の出力と共有領域最終アドレスレジスタ９２１の出力の上位側アドレスが一致し、かつリード完了フラグレジスタ９２０が、バッファメモリの保持データが全てリードされたことを示しているか否かに基づいて行うことも考えられる。
【００９５】
また、ステップ９００７からステップ９０１１において、バッファメモリ８に新たなデータをプリフェッチするための時間を隠蔽するために、バッファメモリ８を２つのバッファブロックで構成してもよい。この構成の下では、バッファリード制御部９１１が、マスタ２からのリード要求に対して、一方のバッファブロックから共有領域のデータをリード中に、並行して他方のバッファブロックに次の共有領域のデータをプリフェッチするよう、プリフェッチシーケンサ９１８の制御内容が変更される。
【００９６】
そうすることで、バッファメモリ８が１つのバッファブロックで構成されている場合と比較してマスタ２のリードのレイテンシを短縮できる。これに対し、バッファメモリ８が１つのバッファブロックで構成されている場合には、バッファブロックから全てのデータのリードが行われてから、メモリコントローラ４に次の共有領域のデータのプリフェッチを開始するため、バッファメモリ８の更新サイクル時間が隠蔽できない。そのため、マスタ２のリード頻度が高くリード間のサイクル数が少なくなるほど、マスタ２の処理性能の劣化が大きくなることは避けなれない。
【００９７】
また、ステップ９００１からステップ９０１１に示される、マスタ２がバッファメモリ８にプリフェッチされた共有データのリードを完了した時点で、新たな共有データをバッファメモリ８へプリフェッチする第１の制御を行うと共に、共有領域の全てのデータが取得された後は、バッファメモリ８に保持されていないデータへのアクセスが発生した時点で、そのデータをバッファメモリ８へプリフェッチする第２の制御に切り換えてもよい。
【００９８】
そのために、例えば、バッファ制御選択レジスタ９２３の出力に応じてプリフェッチシーケンサ９１８が第１の制御と第２の制御を切り替えるようにし、マスタ２が、マルチマスタ処理を行う前にバッファ制御選択レジスタ９２３に第１の制御を設定し、マルチマスタ処理が終了した時点でバッファ制御選択レジスタ９２３に第２の制御を設定するようにしてもよい。
【００９９】
ここで、第１の制御は、プリフェッチされたデータがシーケンシャルアクセスされる場合に、バッファメモリ８のサイズのデータを一括転送することでメモリコントローラ４からメモリ５へのアクセス回数を減らしてシステム性能を向上させる点で好適であるのに対し、第２の制御は、プリフェッチされたデータがランダムアクセスされる場合に、メモリコントローラ４からメモリ５へのアクセスデータ量を必要最小限にとどめてシステム性能を向上させる点で好適である。
【０１００】
シーケンシャルアクセスが主となるマルチマスタ処理における共有領域へのリードアクセスに第１の制御を用い、ランダムアクセスが主となるマルチマスタ処理以外による共有領域外へのリードアクセスに第２の制御を用いることで、アクセスの特徴に応じてシステム性能を向上させることが可能となる。
【０１０１】
また、バッファ制御選択レジスタ９２３は、マスタ１から出力される共有領域へのライトの完了通知で第１の制御に設定され、マスタ２からの共有領域の最終アドレスへのリードで第２の制御に設定されるとしてもよい。
【０１０２】
このような設定を行うハードウェアロジックを設けてソフトウェアによるレジスタ設定処理を不要とすることで、従来のマルチマスタ処理のソフトウェアが変更なく使用でき、かつ、レジスタ設定によるマルチマスタ処理サイクルの増加もない、優れたシステム性能の向上効果が得られる。
【０１０３】
（マスタ２の動作）
次に、図５を参照して、マスタ２の動作について説明する。
【０１０４】
ステップ１００１で、プリフェッチ制御部９から共有領域のリード要求の通知を検出するとステップ１００２に遷移する。
【０１０５】
ステップ１００２で、共有領域の先頭アドレスよりデータのリードを順次実行する。
【０１０６】
ステップ１００３で、共有領域の最終アドレスのデータのリードが完了すれば、ステップ１００４に遷移する。
【０１０７】
ステップ１００４で、マスタ１に共有領域のデータのリード処理が完了したことを通知する。
【０１０８】
ステップ１００５で、マルチマスタ処理において今回リードしたデータの処理を行う。
【０１０９】
ステップ１００６で、今回リードしたデータ処理が終了し、マルチマスタ処理を継続する必要があればステップ１００１へ戻り、共有領域の更新を待つ。
【０１１０】
（システム全体の動作タイミング）
図６は、マルチマスタシステム１０１の全体動作の一例を示すタイミングチャートである。従来技術の説明と同様に、共有領域をアドレス０番地からアドレス１００番地とし、メモリアドレス１００番地へのライトアクセスをライト１００と表記し、メモリアドレス０番地から３番地へのリードアクセスを一括してリード０−３と表記する。また、共有領域外のアクセスはマスタ１、２以外のマスタ（例えばマスタ３等）からのアクセスであるとする。
【０１１１】
従来例における実行サイクル（図１７を参照）と比べて、図６に示される実行サイクルには、マスタ２の性能向上につながる次の相違点が認められる。
【０１１２】
第１に、マスタ２の共有領域の先頭アドレスへのリード開始が従来よりも遅くなる結果、マスタ２は、従来リードを待っていたＴ１３からＴ１７までのサイクルにおいて内部処理を実行可能となる。
【０１１３】
第２に、マスタ２は、従来Ｔ３２からＴ３７までのサイクルにおいて行っていたリード４を、短縮されたＴ３２からＴ３３までのサイクルで実行可能となる。
【０１１４】
なお、マスタ２は、マルチマスタ処理中には、共有領域へのリードを行うが、マルチマスタ処理以外で共有領域外へのリードアクセスを行ってももちろん構わない。
【０１１５】
バッファリード制御部９１１は、共有領域外へのリードアクセスを検出した場合、例えば、バッファメモリへのリード要求、もしくはプリフェッチシーケンサへのプリフェッチ要求は行わず、直接メモリコントローラインタフェース９１３にメモリコントローラ４へアクセスするよう要求し、メモリコントローラインタフェース９１３から出力されるリードデータを直接入力し、マスタインタフェース９１０を介して、マスタ２へ出力してもよい。
【０１１６】
（まとめ）
以上説明した構成及び処理によれば、共有領域のデータはマスタ２がリードを開始するまでにバッファメモリ８にプリフェッチされ、マスタ２はプリフェッチされたデータをリードできる。このため、マスタ２の共有領域の先頭アドレスのリードのレイテンシサイクルは、従来と比較して、メモリコントローラ４を介する場合に消費されるサイクル数短縮される。
【０１１７】
また、バッファメモリ８にプリフェッチされているデータがマスタ２によって全てリードされたことを検出して、マスタ２が共有領域の次のデータをリードするまでに、そのデータをバッファメモリ８にプリフェッチする構成を採ることによって、共有領域のサイズがバッファメモリの容量を超える場合でも、共有領域へのリードのレイテンシサイクルを向上することができる。
【０１１８】
なお、実施の形態１におけるマルチマスタシステムでは、マスタ１が、ダミーリードを行うことで、ライトを要求したデータが、メモリコントローラ４からメモリ５の共有領域に確実にライトされていることを確認する必要がある。ダミーアクセスをメモリコントローラ４が低い優先度で処理する場合においては、ダミーアクセスが処理される前に、他マスタのアクセスの処理が行われるため、ダミーアクセス開始から終了までのサイクルが増大する。マスタ１は、ダミーアクセスの終了を待つ間、処理を停止した状態に置かれる。マスタ１は、共有領域のライトの終了後には、引き続きマルチマスタ処理を行い、また他の処理を行う必要があるが、ダミーアクセスに時間がかかると、マルチマスタ処理および他の処性能を劣化させるという課題がある。この課題を解消するための構成について、第２の実施の形態で説明する。
【０１１９】
（第２の実施の形態）
第２の実施の形態におけるマルチマスタシステムは、従来技術及び第１の実施の形態におけるマスタ１によるダミーリード処理を不要とするように構成されたマルチマスタシステムである。
【０１２０】
図７は、本発明の第２の実施の形態におけるマルチマスタシステム１０２の機能的な構成の一例を示すブロック図である。マルチマスタシステム１０２は、第１の実施の形態におけるマルチマスタシステム１０１（図１を参照）におけるマスタ１及びプリフェッチ制御部９を、マスタ１ａ及びプリフェッチ制御部９ａに置き換えて構成される。
【０１２１】
この構成において、マスタ１ａはダミーリードを発行せず、プリフェッチ制御部９ａがダミーリードに関する全ての処理を行う。
【０１２２】
以下、第１の実施の形態で説明したブロックと同一のブロックは同一の番号で示し、説明を省略する。
【０１２３】
マスタ１ａは、メモリ５へのアクセス要求を、メモリコントローラ４へ直接出力する代わりに、プリフェッチ制御部９ａへ出力する。
【０１２４】
マスタ２は、第１の実施の形態で説明したマスタ２と同一である。
【０１２５】
プリフェッチ制御部９ａは、マスタ１から取得されるアクセス要求をメモリコントローラ４へ中継すると共に、ダミーリードに関する処理を行う。
【０１２６】
（プリフェッチ制御部９ａの構成）
図８は、プリフェッチ制御部９ａの内部の機能的な構成の一例を示すブロック図である。プリフェッチ制御部９ａは、プリフェッチ制御部９（図２を参照）のプリフェッチシーケンサ９１８を、制御シーケンスが異なるプリフェッチシーケンサ９１８ａに置き換えると共に、マスタインタフェース９２５、マスタアクセス応答部９２６、アドレス生成部９２７、マスタアクセス生成部９２８、アクセスセレクタ９２９、及びメモリコントローラインタフェース９３０を追加して構成される。
【０１２７】
マスタインタフェース９２５は、マスタ１からのライト要求及びリード要求を含むアクセス情報をマスタアクセス応答部９２６へ出力するとともに、マスタアクセス応答部９２６から出力されるリードデータをマスタ１へ出力する。
【０１２８】
マスタアクセス応答部９２６は、マスタインタフェース９２５からライト要求されたアドレスを共有領域最終アドレスレジスタ９２２の出力と比較し、一致した場合に通知フラグレジスタ９２４をイネーブルに設定する。
【０１２９】
このとき、マスタアクセス応答部９２６は、マスタインタフェース９２５からのライト要求をメモリコントローラインタフェース９３０へ転送する前に、マスタインタフェース９２５へダミー応答を出力してもよい。
【０１３０】
アドレス生成部９２７は、共有領域最終アドレスレジスタ９２２の出力をマスタアクセス生成部９２８へ出力すると共に、マスタアクセス生成部９２８が生成するメモリコントローラインタフェース９３０へのリード要求に示されるべきアドレス情報を、共有領域先頭アドレスレジスタ９２１及びアクセスアドレスレジスタ９１９の出力を用いて生成する。
【０１３１】
マスタアクセス生成部９２８は、メモリコントローラインタフェース９３０へのアクセス要求を生成する。
【０１３２】
アクセスセレクタ９２９は、プリフェッチシーケンサ９１８の制御により、マスタアクセス応答部９２６からのアクセス要求、及びマスタアクセス生成部９２８からのアクセス要求の一方を選択してメモリコントローラインタフェース９３０へ出力する。
【０１３３】
メモリコントローラインタフェース９３０は、アクセスセレクタ９２９からのアクセスの要求に応じてメモリコントローラ４へアクセスを要求するとともに、メモリコントローラ４からのリードデータをバッファライト制御部９１２へ出力する。
【０１３４】
バッファライト制御部９１２は、プリフェッチシーケンサ９１８の制御によりメモリコントローラインタフェース９１３から出力されるデータ、及びメモリコントローラインタフェース９３０から出力されるデータの一方を選択してバッファメモリ８にライトし、バッファメモリ８へのライトの完了をプリフェッチシーケンサ９１８に通知する。
【０１３５】
メモリコントローラインタフェース９３０は、アクセスセレクタ９２９からのアクセスの要求に応じてメモリコントローラ４へアクセスを要求するとともに、メモリコントローラ４からのリードデータをバッファライト制御部９１２へ出力する。
【０１３６】
プリフェッチシーケンサ９１８ａは、プリフェッチ制御部９ａの各部を連携して動作させる。この連係動作については、後で詳述する。
【０１３７】
（動作例）
次に、本発明の第２の実施の形態における主要部の動作例を、図９及び図１０を用いて説明する。
【０１３８】
図９は、本発明の第２の実施の形態におけるマスタ１ａの処理の一例を示すフローチャートである。
【０１３９】
図１０は、本発明の第２の実施の形態におけるプリフェッチ制御部９ａの処理の一例を示すフローチャートである。
【０１４０】
（マスタ１ａの動作）
まず、図９を参照して、マスタ１ａの動作について説明する。マスタ１ａは、第１の実施の形態においてマスタ１が行う処理（図３を参照）からステップ２００４及びステップ２００５を省いた処理を行う。すなわち、図９に示される例において、マスタ１は共有領域の最終アドレスへのダミーリードを行なわず、ステップ２００３で共有領域の最終アドレスへのデータライトを要求すると、直ちにステップ２００６でプリフェッチ制御部９へメモリのライトの完了を通知する。
【０１４１】
（プリフェッチ制御部９ａの動作）
次に、図１０を参照して、プリフェッチ制御部９ａの動作について説明する。図中、第１の実施の形態で説明したステップ（図４を参照）と同一のステップは同一の番号で示し、説明を省略する。
【０１４２】
ステップ９００１ａで、プリフェッチ制御部９ａは、マスタ１からのライト完了通知を検出する。この検出の時期は、第１の実施の形態におけるマスタ１によるダミーリードの後から、マスタ１ａによる共有領域の最終アドレスへのライト要求の直後へと早められる。
【０１４３】
ステップ９０１２で、プリフェッチシーケンサ９１８ａの制御により、アドレス生成部９１６は、共有領域最終アドレスレジスタ出力により共有領域最終アドレスをマスタアクセス生成部９２８へ出力する。
【０１４４】
ステップ９０１３で、プリフェッチシーケンサ９１８ａの制御により、マスタアクセス生成部９２８は、アクセスセレクタ９２９に共有領域最終アドレスへのダミーリードアクセスを発生する。
【０１４５】
ステップ９０１４で、メモリコントローラインタフェース９３０は、メモリコントローラ４へのダミーリードアクセスの終了に伴いプリフェッチシーケンサ９１８ａにアクセス終了を通知し、プリフェッチシーケンサ９１８ａはステップ９００３ａへ制御を移す。
【０１４６】
（システム全体の動作タイミング）
図１１は、マルチマスタシステム１０２の全体動作の一例を示すタイミングチャートである。
【０１４７】
従来例における実行サイクル（図１７を参照）と比べて、図１１に示される実行サイクルには、マスタ１の性能向上につながる次の相違点が認められる。
【０１４８】
すなわち、従来であればＴ３からＴ１０までにマスタ１によって行われていたダミーリード１００がプリフェッチ制御部９ａによって代行されるため、マスタ１ａは、Ｔ３でライト通知を行い、Ｔ４サイクル以降では別の処理を実行することができる。この別の処理とは、一例を挙げれば、マルチマスタ処理における次に共有領域に転送するためのデータの準備である。
【０１４９】
（第２のまとめ）
以上説明した構成及び処理によれば、マスタ１ａに代わってプリフェッチ制御部９ａが共有領域の最終アドレスへのダミーリードを行うため、従来マスタ１によって行われていたダミーリードの時間でマスタ１ａは別の処理を行うことができ、システム性能を向上させることができる。
【０１５０】
（第２の実施の形態に係る変形例）
ここまでに、プリフェッチ制御部９ａがマスタ１ａに代わってダミーリードを行う例について説明したが、ダミーリードそのものを省略可能とする変形例を考えることもできる。以下、そのような変形例について説明する。
【０１５１】
この変形例におけるマルチマスタシステムは、図７に示されるマルチマスタシステム１０２におけるメモリコントローラ４及びプリフェッチ制御部９ａを、それぞれメモリコントローラ４ｂ及びプリフェッチ制御部９ｂに置き換えて構成される。このマルチマスタシステムの全体構成は、図７と同様であるため、図示を省略する。
【０１５２】
メモリコントローラ４ｂは、マスタ１が発行した共有領域の最終アドレスへのライト要求がメモリ５に対して実行されたことを示すアクセス状態信号を出力する。
【０１５３】
プリフェッチ制御部９ｂは、メモリコントローラ４ｂから取得されるアクセス状態信号を用いて、マスタ１が要求したデータライトがメモリ５に対して実行されたこと検出する。プリフェッチ制御部９ｂは、この検出を行うため、図８に示されるプリフェッチ制御部９ａにおけるプリフェッチシーケンサ９１８ａによる制御を変更して構成される。
【０１５４】
この変更された制御の下で、プリフェッチ制御部９ｂは次のように動作する。
【０１５５】
マスタ１からの共有領域の最終アドレスへのライトアクセスによりマスタインタフェース９２５から転送要求がマスタアクセス応答部９２６へ出力される。
【０１５６】
マスタアクセス応答部９２６は、転送要求をアクセスセレクタ９２９に通知し、アクセスセレクタ９２９は、転送要求をメモリコントローラインタフェース９３０に通知した後、通知フラグレジスタ９２４をイネーブルに設定し、以降のマスタインタフェース９２５からのアクセス要求を後段に通知しないようマスクする。マスタインタフェース９２５は、マスタアクセス応答部９２６から応答があるまで、アクセス要求を継続する。
【０１５７】
メモリコントローラインタフェース９３０は、メモリコントローラ４に転送要求を通知する。その結果、共有領域の最終アドレスへのライト要求は、メモリコントローラ４ｂに通知され、メモリコントローラ４ｂによってメモリ５へのライトの処理が行われる。
【０１５８】
プリフェッチシーケンサ９１８は、通知フラグレジスタ９２４がイネーブルに設定されると、メモリコントローラ４ｂからのアクセス状態信号によりマスタ１からのライトアクセスがメモリコントローラ４ｂで完了したことが示されるまで待ち、その後、第１の実施の形態および第２の実施の形態と同様、メモリ上の共有領域の先頭アドレスデータより順次、バッファメモリに転送し、その転送の完了をマスタ１へ通知する。
【０１５９】
図１２は、メモリコントローラ４ｂの内部の機能的な構成の一例を示すブロック図である。
【０１６０】
マスタインタフェース４０１は、マスタ１で要求されたメモリアクセスを受けたプリフェッチ制御部９ｂがメモリコントローラ４に要求するアクセスの転送を制御する。
【０１６１】
マスタインタフェース４０２は、マスタ２で要求されたメモリアクセスを受けたプリフェッチ制御部９ｂがメモリコントローラ４に要求するアクセスの転送を制御する。
【０１６２】
マスタインタフェース４０３は、第３のマスタで要求されたメモリアクセスの転送を制御する。
【０１６３】
ライトバッファ４０４は、マスタインタフェース４０１からのライトアクセスデータを保持し、保持した時点でマスタインタフェース４０１へアクセス完了を通知する。また、ライトバッファ内にメモリ５への未転送データがある場合に、その未転送データの転送要求を、アービタ４０７及びマスタセレクタ４０８に通知する。
【０１６４】
ライトバッファ４０５は、マスタインタフェース４０２について、ライトバッファ４０４と同様の機能を果たす。
【０１６５】
ライトバッファ４０６は、マスタインタフェース４０３について、ライトバッファ４０４と同様の機能を果たす。
【０１６６】
また、ライトバッファ４０４〜４０６は、それぞれ対応するマスタインタフェースからのリード要求をアービタ４０７、マスタセレクタ４０８にインタフェースする、リードバッファとしての機能も有しており、リード要求を受けた時にライトバッファにデータがある場合には、そのデータを対応するマスタインタフェースへ出力する。
【０１６７】
アービタ４０７は、ライトバッファ４０４〜４０６からの転送要求を調停してマスタセレクタ４０８に通知する。
【０１６８】
マスタセレクタ４０８は、ライトバッファ４０４〜４０６からの転送要求の中から、アービタ４０７の調停結果に応じて一つを選択し、選択された転送要求に応じたメモリアクセス開始の要求をメモリアクセスシーケンサ４０９へ行う機能と、メモリインタフェース４１１とライトバッファ間のデータ転送を行う。
【０１６９】
メモリアクセスシーケンサ４０９は、マスタセレクタ４０８からのメモリアクセス開始要求により、メモリに応じて予め定められたアクセスシーケンスを発生する。
【０１７０】
メモリアドレス生成部４１０は、メモリアクセスシーケンサ４０９の制御により、メモリアドレスを生成する。
【０１７１】
メモリインタフェース４１１は、メモリ５とのデータの入出力制御を行う。
【０１７２】
アクセス状態出力部４１２は、ライトバッファ４０４からアービタ４０７へのライトのアクセス要求を監視し、その要求が行われていないことを示す第１の信号をプリフェッチ制御部９ｂへ出力する。この第１の信号は、マスタ１からのライトデータがライトバッファ４０４に存在しないことを示している。また、メモリアクセスシーケンサ４０９からメモリインタフェース４１１へのアクセス要求を監視し、その要求が行われていないことを示す第２の信号をプリフェッチ制御部９ｂへ出力する。
【０１７３】
これらの第１及び第２の信号の論理和を取って得られる信号は、マスタ１からメモリ５へライトされるべきデータがメモリコントローラ４ｂに存在しない、すなわち、マスタ１からの全てのライトデータが、メモリコントローラ４からメモリ５にライトされたことを示している。
【０１７４】
プリフェッチ制御部９ｂは、アクセス状態出力部４１２から取得される第１及び第２の信号の論理和を取って得られる信号を用いて、共有領域の最終アドレスのデータがメモリにライトされたことを確認することができる。
【０１７５】
なお、アクセス状態出力部４１２が、これらの第１及び第２の信号の論理和を取って得られる信号をプリフェッチ制御部９へ出力してもよい。
【０１７６】
（システム全体の動作タイミング）
図１３は、この変形例におけるマルチマスタシステムの全体動作の一例を示すタイミングチャートである。
【０１７７】
第２の実施の形態における実行サイクル（図１１と参照）と比べて、図１３に示される実行サイクルには、マスタ２及びシステムの全体的な性能を向上させる次の相違点が認められる。
【０１７８】
第１に、ダミーリードが行われないために、プリフェッチ制御部９ｂによる共有領域のデータのプリフェッチの開始時期がＴ１２からＴ９へと早められる。その結果、マスタ１によってライトされたデータをマスタ２がリード可能となるまでのターンアラウンドが短縮され、マスタ２のレスポンス向上及びデータ転送のスループット向上が達成される。
【０１７９】
第２に、ダミーリードが行われないために、メモリコントローラ４ｂへのアクセス頻度が下がるので、システム性能を向上させることができる。
【０１８０】
（その他の変形例）
なお、プリフェッチ制御部９ａは、マスタ１がデータ転送を行うデータパスを用いて、プリフェッチデータをバッファメモリ８へ転送してもよい。この構成によれば、アドレス生成部９２７、マスタアクセス生成部９２８、及びアクセスセレクタ９２９は、プリフェッチシーケンサ９１８の制御下で、プリフェッチのためのデータ転送を、メモリコントローラインタフェース９３０を介してメモリコントローラ４に要求し、バッファライト制御部９１２は、メモリコントローラ４からリードされたプリフェッチデータをバッファメモリ８にライトする。
【０１８１】
この場合、図１０の９００３ａから９００５ａ、９００９ａから９０１１ａのステップは、アドレス生成部９２７及びマスタアクセス生成部９２８によって実行される。
【０１８２】
この構成は、マスタ１がマルチマスタ処理を主に行っている場合に有利である。そのような場合には、共有領域へのライト完了後、マスタ２からの共有領域のリードの完了通知が行われるまで、マルチマスタ処理でのメモリ５へのアクセス頻度は低くなる。そのため、使われていないマスタ１用のメモリコントローラ４のデータパスを、マスタ２へのデータのプリフェッチに活用することによって、システム性能を向上させることができる。
【０１８３】
また、第２の実施の形態では、マスタ１ａによるダミーリード処理を不要とする構成について説明したが、マスタ１ａはダミーリードを要求するものの、その待ち時間が最小限に短縮される変形例を考えることもできる。
【０１８４】
この変形例において、プリフェッチ制御部９ａは、マスタ１からのダミーリード要求に対して直ちに応答を返し、マスタ１ａがダミーリードを待ち合わせる時間を最小限に短縮する。
【０１８５】
具体的に、マスタアクセス応答部９２６は、共有領域最終アドレスレジスタの出力とマスタインタフェース９２５からのマスタ１ａのリードのアクセスアドレスを比較して、一致した場合に直ちに、マスタインタフェース９２５に応答を返す。マスタアクセス応答部９２６は、通知フラグレジスタ９２４をイネーブルに設定し、プリフェッチシーケンサ９１８は、アドレス生成部９２７、マスタアクセス生成部９２８、アクセスセレクタ９２９、メモリコントローラインタフェース９３０を制御してダミーアクセスを実行する。プリフェッチシーケンサ９１８の動作については、前述と同様である。
【０１８６】
この構成によれば、マスタ１ａがダミーリードを待ち合わせる時間が最小限に短縮されるので、システム性能を向上させることができる。
【０１８７】
実施の形態１、２では、プリフェッチ制御部９が、バッファメモリ８を用いたプリフェッチ制御を行うため、メモリデバイスと、転送制御装置のハードウェアコストが増加するという課題がある。この課題を解消するための構成について、第３の実施の形態で説明する。
【０１８８】
（第３の実施の形態）
第３の実施の形態におけるマルチマスタシステムは、マスタ２がキャッシュ機能を備えている場合に、そのキャッシュ機能を外部から制御することによってここまでに説明したバッファメモリの機能が実現されるように構成されたマルチマスタシステムである。
【０１８９】
マスタ２のキャッシュシステムは、キャッシュ制御命令をマスタ２以外のブロックからも受け入れて実行できるように構成される。このキャッシュシステムは、プリフェッチ制御部から適切なキャッシュ制御命令を与えられ、共有領域のデータのプリフェッチを実行する。
【０１９０】
本実施例で用いるキャッシュ制御命令としては、先行フェッチ命令と、キャッシュインバリデート命令を用いる。先行フェッチ命令は、マスタが実行中のプログラムで直接使用する、命令、データではなく、将来使用する命令、データをキャッシュに予め転送しておくよう要求する命令である。アドレスを指定する命令であって、キャッシュＩＦは、指定されたアドレスの命令、データがキャッシュに既に存在する場合には、何もせず、命令、データがキャッシュに存在しない場合には、マスタからのアクセスにおけるキャッシュミスと同様に、キャッシュのラインサイズを単位としたフェッチ動作を行う。
【０１９１】
図１４は、本発明の第３の実施の形態におけるマルチマスタシステム１０３の機能的な構成の一例を示すブロック図である。
【０１９２】
図１５は、プリフェッチ制御部９ｃの内部の機能的な構成の一例を示すブロック図である。
【０１９３】
以下、ここまでに説明したブロックと同一のブロックは同一の番号で示し、説明を省略する。
【０１９４】
図１４において、プリフェッチ制御部９ｃは、キャッシュＩＦ７との間で、データのやり取りと共に、キャッシュ制御命令の発行、及び応答の受信を行う。
【０１９５】
図１５を用いて、プリフェッチ制御の概略について説明する。
【０１９６】
キャッシュ命令生成部９３２は、キャッシュ制御レジスタ９３３の設定により、キャッシュＩＦ７へキャッシュ命令を発行し、また、キャッシュＩＦ７からの応答により、キャッシュ命令発行の完了をプリフェッチシーケンサ９１８ｃに通知する。
【０１９７】
キャッシュ制御レジスタ９３３は、キャッシュＩＦ７への制御命令に対応したフィールドを備える。
【０１９８】
マスタ１からのライト完了通知を受けたプリフェッチシーケンサ９１８ｃは、キャッシュ制御レジスタ９３３にインバリデート設定をおこなう。キャッシュ命令生成部９３２は、キャッシュ制御レジスタ９３３へのインバリデート設定を検出すると、共有領域先頭アドレスレジスタ９２１を参照し、キャッシュＩＦ７へ共有領域先頭アドレスへのインバリデート命令を発行する。
【０１９９】
キャッシュＩＦ７は、キャッシュの共有領域先頭アドレスを含むキャッシュラインのデータをインバリデートし、キャッシュ命令生成部９３２にインバリデート命令受付を応答する。キャッシュ命令生成部９３２は、インバリデート命令受付の応答をプリフェッチシーケンサ９１８ｃに通知する。
【０２００】
プリフェッチシーケンサ９１８ｃは、キャッシュ制御レジスタ９３３へのプリフェッチ命令設定をおこなう。キャッシュ命令生成部９３２は、キャッシュ制御レジスタ９３３へのプリフェッチ命令設定を検出すると、共有領域先頭アドレスレジスタを参照し、キャッシュＩＦ７へ共有領域先頭アドレスへのプリフェッチ命令を発行する。
【０２０１】
キャッシュＩＦ７は、キャッシュの共有領域先頭アドレスデータがキャッシュに存在するか検索を行い、先だって、インバリデートされているため存在しないという結果を得て、メモリへのプリフェッチを実行する。プリフェッチの実行後、キャッシュ命令生成部９３２に応答する。
【０２０２】
キャッシュ命令生成部９３２は、プリフェッチシーケンサ９１８ｃにプリフェッチ実行を通知する。プリフェッチシーケンサ９１８ｃは、通知フラグレジスタ９２４を設定する。
【０２０３】
マスタ通知インタフェース９１４は、マスタ２に共有領域へリードを要求する。マスタ２が、共有領域の先頭アドレスからリードを開始する。共有領域の先頭アドレスを含むラインサイズのデータはキャッシュに保持されているため、データのリードはキャッシュから行われる。
【０２０４】
（第３のまとめ）
以上説明した構成によれば、共有領域のデータをプリフェッチするためのバッファメモリを既存のキャッシュシステムを利用して実現することにより、ハードウェアコストの大幅な削減が可能である。さらに、キャッシュに転送されたデータはランダムアクセスおよび再利用が可能となる。
【０２０５】
（第３の実施の形態に係る変形例）
なお、転送サイズレジスタ９３４にマスタ２への共有領域のリード要求を通知する前までにキャッシュに転送するサイズを設定してもよい。アドレス生成部９３５は、共有領域の先頭アドレスから、転送サイズレジスタ９３４に設定されたサイズ分までのプリフェッチ命令発行のアドレスを生成する。プリフェッチシーケンサ９１８は、アドレス生成部９３５から、転送サイズを満たしたことにより、プリフェッチ命令の発行が不要との通知を受けるまで、プリフェッチ命令の発行のため、キャッシュ制御レジスタ９３３の設定を繰り返す。
【０２０６】
この構成によれば、共有領域が、キャッシュの一部に収まるサイズである場合には、共有データが全てキャッシュにおかれ、マスタ２のマルチマスタ処理における共有領域のリードで、メモリアクセスが発生しないため、従来発生していた、他マスタとの調停によるメモリコントローラ要因のレイテンシ増大によるリード性能劣化が発生しない。そのため、マルチマスタ処理および他マスタの処理への影響排除も可能で、システム性能を向上させることができる。
【０２０７】
また、図で示してはいないが、第１の実施の形態のリードバッファ構成を追加し、プリフェッチ制御部が、リードバッファのサイズとキャッシュラインサイズを併せたサイズの転送をメモリコントローラ４に要求するようにして、メモリコントローラ４からメモリへのアクセスサイズを増加させてもよい。この場合、プリフェッチシーケンサ９１８は、複数のキャッシュＩＦへのプリフェッチ命令発行に一回の割合でメモリコントローラ４への要求するようシーケンスを発生するようにする。
【０２０８】
メモリコントローラ４からメモリ５への転送サイズを大きくすることにより、メモリコントローラ４において、アービトレーションの頻度を下げることが可能となるため、システム性能が向上するとともに、プリフェッチを高速に行うことができる。
【産業上の利用可能性】
【０２０９】
本発明にかかるマルチマスタシステムは、複数のマスタが外部メモリを共有し、マスタ間でデータの受け渡しを行うシステムにおいて、各マスタに対応するマスタインタフェース内に持つデータバッファと外部メモリ間のデータ整合性を保証する構成と、共有データの転送サイクルを高速に行えるため、ユニファイドメモリアーキテクチャを採用するシステムＬＳＩ等に適用するに有用である。
【図面の簡単な説明】
【０２１０】
【図１】第１の実施の形態におけるマルチマスタシステム１０１の機能的な構成の一例を示すブロック図
【図２】プリフェッチ制御部９の内部の機能的な構成の一例を示すブロック図
【図３】マスタ１の処理の一例を示すフローチャート
【図４】プリフェッチ制御部９の処理を示すフローチャート
【図５】マスタ２の処理の一例を示すフローチャート
【図６】マルチマスタシステム１０１の全体動作の一例を示すタイミングチャート
【図７】第２の実施の形態におけるマルチマスタシステム１０２の機能的な構成の一例を示すブロック図
【図８】プリフェッチ制御部９ａの内部の機能的な構成の一例を示すブロック図
【図９】マスタ１ａの処理の一例を示すフローチャート
【図１０】プリフェッチ制御部９ａの処理の一例を示すフローチャート
【図１１】マルチマスタシステム１０２の全体動作の一例を示すタイミングチャート
【図１２】メモリコントローラ４ｂの内部の機能的な構成の一例を示すブロック図
【図１３】変形例におけるマルチマスタシステムの全体動作の一例を示すタイミングチャート
【図１４】第３の実施の形態におけるマルチマスタシステム１０３の機能的な構成の一例を示すブロック図
【図１５】プリフェッチ制御部９ｃの内部の機能的な構成の一例を示すブロック図
【図１６】従来のマルチマスタシステムの一例を示す概略構成図
【図１７】従来のマルチマスタ処理の一例を示すタイミングチャート
【符号の説明】
【０２１１】
１〜３、１ａ    マスタ
４、４ｂ    メモリコントローラ
５    メモリ
６    キャッシュメモリ
７    キャッシュＩＦ
８    バッファメモリ
９、９ａ、９ｂ、９ｃ    プリフェッチ制御部
１０    バッファ制御部
１１〜１３    ＷＢ
１００、１０１、１０２、１０３    マルチマスタシステム
４０１〜４０３    マスタインタフェース
４０４〜４０６  ライトバッファ
４０７    アービタ
４０８    マスタセレクタ
４０９    メモリアクセスシーケンサ
４１０    メモリアドレス生成部
４１１    メモリインタフェース
４１２    アクセス状態出力部
９１０    マスタインタフェース
９１１    バッファリード制御部
９１２    バッファライト制御部
９１３    メモリコントローラインタフェース
９１４    マスタ通知インタフェース
９１５    アクセスアドレスレジスタ
９１５    レジスタブロック
９１６    アドレス生成部
９１７    メモリリード生成部
９１８、９１８ａ、９１８ｃ    プリフェッチシーケンサ
９１９    アクセスアドレスレジスタ
９２０    リード完了フラグレジスタ
９２１    共有領域最終アドレスレジスタ
９２１    共有領域先頭アドレスレジスタ
９２２    共有領域最終アドレスレジスタ
９２３    バッファ制御選択レジスタ
９２４    通知フラグレジスタ
９２５    マスタインタフェース
９２６    マスタアクセス応答部
９２７    アドレス生成部
９２８    マスタアクセス生成部
９２９    アクセスセレクタ
９３０    メモリコントローラインタフェース
９３２    キャッシュ命令生成部
９３３    キャッシュ制御レジスタ
９３４    転送サイズレジスタ
９３５    アドレス生成部
【図１】
2007241612.tif 000003
【図２】
2007241612.tif 000004
【図３】
2007241612.tif 000005
【図４】
2007241612.tif 000006
【図５】
2007241612.tif 000007
【図６】
2007241612.tif 000008
【図７】
2007241612.tif 000009
【図８】
2007241612.tif 000010
【図９】
2007241612.tif 000011
【図１０】
2007241612.tif 000012
【図１１】
2007241612.tif 000013
【図１２】
2007241612.tif 000014
【図１３】
2007241612.tif 000015
【図１４】
2007241612.tif 000016
【図１５】
2007241612.tif 000017
【図１６】
2007241612.tif 000018
【図１７】
2007241612.tif 000019