(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアによって構成されるマルチプロセッサシステムであって、
該複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、
前記複数のプロセッサコアとバスを介して接続され、データ転送元のプロセッサコアから転送元プロセッサコア識別情報、転送元キャッシュメモリのアドレス情報、転送データのサイズ、転送先プロセッサコア識別情報、及び転送開始指示を受信し、該転送元プロセッサコア識別情報、該転送元キャッシュメモリのアドレス情報、該転送データのサイズ、該転送先プロセッサコア識別情報、及び該転送開始指示に基づいて、該転送元キャッシュメモリから該転送データを該バスを介して読み出し転送先のプロセッサコアのキャッシュメモリへ該バスを介して転送する、該複数のキャッシュメモリ相互間での直接データ転送を制御する直接メモリアクセス制御手段とを備えることを特徴とするマルチプロセッサシステム。
【請求項２】
前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリから前記転送データが出力された後に、該転送元キャッシュメモリ上の該出力データを無効化させるべきか、あるいは該データに対する更新済みフラグをクリアさせるべきかを示すデータを格納するレジスタを備え、
該レジスタの格納内容に対応して、該直接メモリアクセス制御手段が、該転送元キャッシュメモリに対して、該出力データの無効化、あるいは該データに対する更新済みフラグのクリアを要求することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリから前記転送先のプロセッサコアのキャッシュメモリへのデータ転送の完了を、前記データ転送元のプロセッサコア、あるいは転送先のプロセッサコアに対して通知すべきか否かを示すデータを格納するレジスタを備え、
該レジスタの格納内容に対応して、該直接メモリアクセス制御手段が、該転送先のプロセッサコアのキャッシュメモリへのデータライトアクセスの完了時点で、前記データ転送元のプロセッサコア、あるいは転送先のプロセッサコアにデータ転送完了を通知することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリへのデータリードアクセス時に、該転送元キャッシュメモリからキャッシュミス応答を受けた時、すべてのデータ転送処理を中断することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリへのデータリードアクセス時に、該転送元キャッシュメモリからキャッシュミス応答を受けた時、下位のメモリ階層から転送すべきデータを読み出し、前記転送先のプロセッサコアのキャッシュメモリに該読み出しデータを転送することを特徴とする請求項１記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムにおけるキャッシュ間のデータ転送方式に係り、さらに詳しくはマルチプロセッサシステムを構成するプロセッサコアのうちの１つで更新されたデータを、下位メモリ階層を介することなく、他のプロセッサコアのキャッシュに直接に転送することを可能とし、データ移動やキャッシュアクセスのレイテンシを小さくすることができるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
処理を複数のプロセッサで分割して並列に実行するマルチプロセッサシステムは、高速な処理を実現するために広範に用いられている。図１８は、そのようなマルチプロセッサシステムの従来例の構成ブロック図である。同図において、チップ１００上に複数のプロセッサ１０１ａから１０１ｄが備えられ、各プロセッサはメインメモリ１０５とバス１０６によって接続されている。各プロセッサ１０１ａから１０１ｄに対しては、それぞれキャッシュメモリ１０２ａから１０２ｄが備えられている。
【０００３】
図１８のようなマルチプロセッサシステムでは、メモリアクセスの平均的性能を向上させるために、各プロセッサに対してそれぞれキャッシュメモリが備えられる、分散キャッシュシステムが用いられる。このような分散キャッシュシステムでは、各キャッシュメモリと下位メモリ階層との間で同一アドレスに対するデータの不整合が生じることのないよう、データの一致性を保つ必要がある。
【０００４】
図１９は、このようなマルチプロセッサシステムにおいて、各メモリにおけるデータの一致性を保つためのデータ転送の第１の従来技術の説明図である。同図において、あるプロセッサ（コア）１０１ａ上で更新されたデータは、キャッシュメモリ１０２ａに書き込まれるとともに、一般にプログラムの指示によって下位メモリ階層１０５に書き戻される。そして同時に別のプロセッサ（コア）、例えば１０１ｂ上のキャッシュメモリ１０２ｂ内で対応するアドレスのデータに対して無効化が指示され、キャッシュメモリ１０２ｂ上のデータは破棄される。プロセッサ１０１ｂでデータが必要となった場合には、下位メモリ階層１０５から最新の更新データをリードすることによって、データの一致性が確保される。
【０００５】
図２０は、第１の従来技術におけるデータ転送シーケンスの例である。同図において、例えば図１９上のプロセッサ１０１ａ、すなわちデータ転送元実行部から転送元キャッシュ、すなわちキャッシュメモリ１０２ａ上の更新データが、下位メモリ階層としての下位メモリ階層１０５に転送された後に、転送先実行部としてのプロセッサ１０１ｂに対応して備えられている転送先キャッシュ１０２ｂへのデータ転送が行われるものとして、処理のシーケンスを説明する。
【０００６】
まず転送元実行部から転送元キャッシュ、すなわちキャッシュメモリ１０２ａに対して更新データ転送の指示が出され、キャッシュメモリ１０２ａから下位メモリ階層としての下位メモリ階層１０５への更新データ転送が行われる。転送元キャッシュ、すなわちキャッシュメモリ１０２ａにおいても、その後メモリシステム内でのデータの統一性を保つために与えられるデータの無効化指示に対応して、データの無効化が行われる。そして転送元実行部としてのプロセッサ１０１ａから転送先実行部、すなわちプロセッサ１０１ｂに対して、更新データが下位メモリ階層１０５に格納されたことを示す通知が送られ、そのデータを必要とする転送先実行部、すなわちプロセッサ１０１ｂは転送先キャッシュとしてのキャッシュメモリ１０２ｂに対してデータ要求を行うが、この時点ではキャッシュメモリ１０２ｂには更新データはまだ格納されておらず、転送先キャッシュとしてのキャッシュメモリ１０２ｂは下位メモリ階層に対してデータのムーブイン要求を行い、その要求に対応して返送されたデータを受け取り、さらにそのデータを転送先実行部に返送することによって、更新データを用いたプロセッサ１０１ｂにおける処理が可能となる。
【０００７】
しかしながらこの第１の従来技術では、あるプロセッサコアにおいて更新され、対応するキャッシュメモリに格納されたデータは一旦下位メモリ階層に書き戻された後、必要とするプロセッサコアがそのデータを下位メモリ階層からキャッシュメモリを介してリードすることが必要となり、
転送元実行部が更新データの転送を指示してから、その更新データを必要とする転送先実行部が実際にそのデータを獲得するまでの時間が長くなるという問題点があった。
【０００８】
図２１は、分散キャッシュシステムにおけるデータの一致性を保つためのデータ転送方式の第２の従来例の説明図である。同図においてあるプロセッサ（コア）１０１ａのキャッシュメモリ１０２ａ上のデータが更新されると、そのキャッシュメモリ１０２ａに書き込まれた更新データは他のプロセッサのすべてにブロードキャストされ、同じアドレスのデータを格納しているキャッシュメモリ上のデータは更新される。このようなキャッシュの制御方式はスヌープキャッシュと呼ばれる。
【０００９】
図２２は、第２の従来技術、すなわちスヌープキャッシュ方式における更新データの転送シーケンスの例である。同図において転送元キャッシュ、例えばキャッシュメモリ１０２ａにデータが書き込まれると、そのキャッシュメモリ、すなわち転送元キャッシュから、スヌープ処理によって転送先キャッシュ、すなわち他のすべてのキャッシュメモリのうちで同じアドレスのデータが格納されているキャッシュメモリにデータの書込みが行われ、データ書込みが行われたことが転送先実行部としての、転送先キャッシュに対応するプロセッサに通知され、転送先実行部は必要に応じて転送先キャッシュに対してデータを要求し、返送されたデータを用いて処理を行うことになる。
【００１０】
しかしながらこの第２の従来技術においては、更新データのブロードキャストを行うためのハード実装コストが大きくなるという問題点がある。すなわち対応するアドレスのデータが格納されていないキャッシュメモリに対してもデータのブロードキャストが行われるために、メモリアクセスのトラフィックが大きくなり、幅の広いバスが必要となるとともに、それぞれのプロセッサはキャッシュメモリ上のデータの更新などを行いながらその他の処理を行うために、例えば２つのポートを持つランダム・アクセス・メモリなどを備える必要があり、ハードウェアのコストが大きくなる。
【００１１】
このようなマルチプロセッサシステム内でのＤＭＡ転送におけるメモリアクセスの待ち時間を低減するために、キャッシュをソフトウェアプログラムで管理する技術を開示する特許文献１では、システムメモリ上のデータの各プロセッサへの転送を高速化するために設けられるＤＭＡキャッシュのソフトウェアプログラム管理を可能にするキャッシュ管理コマンドを提供する方法が開示されている。
【特許文献１】特開２００５−２７６１９９号公報  しかしながら特許文献１の従来技術は、システムメモリ上のデータの各プロセッサへの転送を高速化するための技術であり、本発明が対象とする分散キャッシュメモリシステムにおけるキャッシュメモリ相互間でのデータ転送には適用することができないという問題点があった。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、上述の問題点に鑑み、ハードウェアの実装コストの増大をできるだけ抑えながら、マルチプロセッサシステムにおける複数のプロセッサコアにそれぞれ対応するキャッシュメモリ相互間でのデータ転送を高速化することである。
【課題を解決するための手段】
【００１３】
図１は、本発明のマルチプロセッサシステムの原理構成ブロック図である。同図においてマルチプロセッサシステムは、複数のプロセッサコア１ａから１ｄと、直接メモリアクセス制御手段３とを備えている。
【００１４】
各プロセッサコア１ａから１ｄに対しては、それぞれ対応するキャッシュメモリ２ａから２ｄが備えられ、直接データ転送制御手段３はこれら複数のキャッシュメモリ２ａから２ｄの相互間での直接データ転送を制御するものである。
【００１５】
図１の直接メモリアクセス制御手段３は、例えばバスマスタであり、バスマスタは転送元プロセッサコアから転送元プロセッサコアの番号、転送先プロセッサコアの番号、転送データのキャッシュメモリ上の格納開始アドレス、およびデータ転送量を示す転送条件と、転送開始の指示に対応して、転送元のキャッシュメモリに対してリードアクセスを行い、キャッシュヒット応答に対応して転送データ、およびフラグなどを読み出し、転送先キャッシュメモリに対してライトアクセスを行い、転送データとフラグなどを転送先キャッシュメモリにライトする。
【発明の効果】
【００１６】
本発明によれば、マルチプロセッサシステムにおいて、各プロセッサコアにそれぞれ対応するキャッシュメモリ相互間での直接データ転送が可能となり、キャッシュメモリ相互間でのデータ転送が高速化され、マルチプロセッサシステム全体としてのデータ処理効率の向上に寄与するところが大きい。
【発明を実施するための最良の形態】
【００１７】
図２は、本発明におけるマルチプロセッサシステムの基本構成ブロック図である。同図においてシステムは、図１８の従来例におけると同様のチップ１０とメインメモリ１５とによって構成されており、チップ１０の上には複数のプロセッサ（コア）１１ａから１１ｄが搭載されており、各プロセッサに対してはそれぞれキャッシュメモリ１２ａから１２ｄが備えられている。本発明においては、これらの構成要素に加えて各キャッシュメモリ１２ａから１２ｄの間でメインメモリ１５を介することなく、データの転送を行うためにＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）１４が備えられ、各プロセッサ１１ａから１１ｄ、メインメモリ１５、およびＤＭＡＣ１４はバス１６によって接続されている。
【００１８】
本発明においては、図２に示すように各プロセッサ（コア）１１ａから１１ｄにそれぞれ対応するキャッシュメモリ１２ａから１２ｄに対するデータの読み書き、すなわち転送の制御を行うためのＤＭＡＣ１４が新設され、あるプロセッサ（コア）、例えば１１ａによる演算によってキャッシュメモリ１２ａ上で更新されたデータは、ＤＭＡＣ１４の制御によって別のプロセッサ（コア）、例えば１１ｂに直接に転送され、キャッシュメモリ１２ｂ上の対応するデータの更新が行われる。この場合、どのプロセッサからどのプロセッサへの転送が行われるべきかは、例えばプロセッサ１１ａによる演算結果がプロセッサ１１ｂによる演算で使われるべきことから、マルチプロセッサシステムに対する全体的処理のプログラムによって指定される。
【００１９】
図３は、図２の基本構成システムにおけるデータ更新のメインメモリへの反映方法の説明図である。図２１で説明したスヌープキャッシュ方式以外の一般的なマルチプロセッサシステムにおけるキャッシュ制御方式では、図１９で説明したようにメインメモリにデータの更新結果が反映された後には、複数のキャッシュメモリ、ここでは１２ａから１２ｄのうちで、メインメモリ上でデータ更新が反映されたデータに対応するアドレスに対しては、いずれか１つのキャッシュメモリだけが有効なデータを保持するように制御が行われる。
【００２０】
すなわち図３において、図２でプロセッサ１１ａに対応するキャッシュメモリ１２ａに対して書き込まれた更新データがプロセッサ１１ｂに転送されてキャッシュメモリ１２ｂに書き込まれ、データの更新が行われると、そのデータ更新の最終的なメインメモリ１５への反映は、プロセッサ１１ｂからメインメモリ１５へのそのデータの転送によって行われる。この時、もともとのデータ転送元のプロセッサ１１ａに対するキャッシュメモリ１２ａ内の更新データは無効化されて以後使用不可能にされるか、あるいはそのデータに対応する更新済みフラグとしてのダーティビットがクリアされることによって、そのプロセッサ１１ａでは使用可能であるとしても、例えば他のプロセッサ、例えば１１ｃへの転送には使用できない状態とされる。
【００２１】
図４は、図２の基本構成システムにおける複数のプロセッサコアへのＤＭＡＣによる直接データ転送の説明図である。同図において、キャッシュメモリ１２ａ上で更新された書き込みデータは、例えば他の３つのプロセッサ１１ｂ、１１ｃ、および１１ｄのすべてにＤＭＡＣ１４の制御によって転送され、各キャッシュメモリ１２ｂから１２ｄ上の対応するアドレスのデータは更新可能となる。しかしながら、前述のスヌープキャッシュ方式を除いては、有効なデータとして実際にキャッシュへの書き込みを行う権利を持つのは転送先の複数のプロセッサのうちで１つだけとなる。その制御はソフトウェアによって保証されるが、その制御自体は本発明と直接の関連は無いので、その詳細な説明は省略する。
【００２２】
図５は、本発明におけるマルチプロセッサシステムの第１の実施例の構成ブロック図である。同図においてシステムは、チップ２０と下位メモリ階層、例えばメインメモリ２５によって構成され、チップ２０上には複数のプロセッサコア２１ａから２１ｄ、バスマスタ２４が備えられ、各プロセッサコア２１ａから２１ｄ、バスマスタ２４、および下位メモリ階層２５はバス２６によって接続されている。そしてそれぞれのプロセッサコア、例えばプロセッサコア２１ａは実行部２２ａとキャッシュメモリ２３ａとを備えている。なおバスマスタ２４は、例えば図２におけるＤＭＡＣ１４に相当する。
【００２３】
図５において、例えばプロセッサコア２１ａ上のキャッシュメモリ２３ａが転送元キャッシュメモリとして、プロセッサコア２１ｂ上の転送先キャッシュメモリとしてのキャッシュメモリ２３ｂに対して、キャッシュメモリ間データ直接転送を司るバスマスタ２４の制御によって、データの転送を行う場合の処理の詳細について、図６から図８のフローチャートを用いて説明する。
【００２４】
図６は、バスマスタ２４の処理フローチャートである。同図においてバスマスタ２４の処理は、例えばプロセッサコア２１ａ上の実行部２２ａから送られるデータ転送要求に対応して開始される。処理が開始されると、まずステップＳ１で転送元コア番号、ここではプロセッサコア２１ａの番号、転送すべきキャッシュメモリ２３ａ上の領域、すなわちアドレスと、転送データサイズ、および転送先のコア番号、例えばプロセッサコア２１ｂの番号の設定結果が、転送元コア、すなわちプロセッサコア２１ａから受け取られ、またステップＳ２でプロセッサコア２１ａから転送開始の指示が受け取られ、これに対応してリード操作時の動作が開始される。
【００２５】
リード操作時の動作としては、まずステップＳ３で転送元コア、ここではプロセッサコア２１ａの実行部２２ａに対してリード操作の要求が出され、ステップＳ４でその要求に対応して転送元コアから受け取ったキャッシュ応答がヒットであるか否かが判定される。一般的には転送元コアの転送要求に対応するキャッシュ応答はヒットとなることが多く、その場合にはステップＳ５で転送元コアからキャッシュ上のデータとフラグ、例えば前述の更新済みフラグとしてのダーティビットが読み出され、ステップＳ６で転送元コアに対して転送データに対する無効化処理、あるいはダーティビットのクリア処理が要求され、その後ライト操作時の動作が行われる。ここで、転送元コアに対して無効化処理とダーティビットクリア処理のいずれを要求すべきかを示すデータがバスマスタ内の図示しないレジスタに格納され、バスマスタはそのデータに対応していずれかの処理を転送元コアに対して要求するものとする。
【００２６】
ライト操作時の動作としては、まずステップＳ８で転送先コア、ここではプロセッサコア２１ｂに対して、データのキャッシュメモリ２３ｂへのライト操作の要求が出され、ステップＳ９で転送先コアに対してライトデータとフラグが転送され、ステップＳ１０で転送すべきデータのすべての転送を完了したか否かが判定される。一般的に大量のデータを転送する場合には、その転送データが小さなデータ量の単位に分割され、その単位毎にデータのリードと転送が行われる。そしてすべてのデータの転送が完了していない場合には、ステップＳ３以降の処理が繰り返される。
【００２７】
すべてのデータの転送が完了した場合には、ステップＳ１１で転送元コア、ここでは２１ａに対してデータ転送の完了が通知され、またステップＳ１２で転送先コア、すなわち２１ｂに対してデータ転送の完了が通知されて、処理を終了する。なお後述するように、このデータの転送完了通知は、バスマスタ２４からではなく、例えばデータ転送先実行部としてのプロセッサコア２１ｂの実行部２２ｂから、例えば転送元コア２１ａに対して行われることも可能であり、その場合はステップＳ１１の処理は省略されることになる。ここでステップＳ１１、Ｓ１２の処理が省略可能であることが、全体にカッコをつけることによって示されている。なお、バスマスタがデータ転送完了通知を行うべきか否かは、前述と同様にバスマスタ内の図示しないレジスタに格納されているデータによって指定されるものとする。
【００２８】
リード操作時の動作におけるステップＳ４で転送元コアのキャッシュ応答がヒットでない場合には、ステップＳ１４以降の処理が行われる。前述のように転送元コアからデータ転送要求を受けたことに対応するキャッシュ応答は基本的にはヒットとなるべきであるが、キャッシュメモリ２３ａ内で転送すべきデータが格納されているアドレスのデータが、その後のプロセッサコア２１ａ内の処理で、参照局所性が低いと判断され、メインメモリ等の下位メモリ階層に書き戻されてしまっていることも起こりうるために、キャッシュ応答がヒットではなく、ミスとなる場合も考えられる。
【００２９】
このようにキャッシュ応答がミスの場合には、ステップＳ１４で下位メモリ階層、例えばメインメモリから転送すべきデータを取得すべきか否かが判定される。データを取得すべきか否かは、例えばステップＳ１で転送元のコアによる設定の中で指定されるものとする。メインメモリからデータを取得すべき場合には、ステップＳ１５で下位メモリ階層に対するリード操作が行われ、ステップＳ１６で読み出しデータが受け取られて、ライト操作時の動作としてのステップＳ８以降の処理が続行される。
【００３０】
ステップＳ１４でキャッシュミスの場合に下位メモリ階層からデータを取得すべきでないと判定されると、ステップＳ１７でデータ転送が中断され、ステップＳ１８で転送元コア、すなわちプロセッサコア２１ａにエラーが通知されて処理を終了する。なおこのステップＳ１８の処理も省略可能である。
【００３１】
図７は、転送元キャッシュ側、ここではキャッシュメモリ２３ａ側の処理のフローチャートである。この処理は、プロセッサコア２１ａの実行部２２ａが転送元実行部として実行する処理のフローチャートである。同図において処理が開始されると、まずステップＳ２１でバスマスタ２４からデータのリード操作要求が受け付けられる。これは図６のステップＳ３の処理に対応する。そしてステップＳ２２で受け付けたアドレスがキャッシュに存在するか否かが調べられ、ステップＳ２３でアクセスアドレスがキャッシュヒットしているか否かが判定される。
【００３２】
キャッシュヒットしている場合には、ステップＳ２４でバスマスタ２４に対してヒット応答が返され、ステップＳ２５で該当アドレスのデータとフラグがバスマスタ２４に返送され、ステップＳ２６でキャッシュラインの無効化、またはダーティビットのクリアが行われて処理を終了する。なお例えばスヌープキャッシュ制御の場合にはステップＳ２６の処理は省略される。ステップＳ２３でキャッシュヒットでないと判定されると、ステップＳ２７でキャッシュミス応答がバスマスタ２４に送られて処理を終了する。
【００３３】
図８は、転送先キャッシュ側、ここではプロセッサコア２１ｂ上のキャッシュメモリ２３ｂ側における処理のフローチャートである。同図において処理が開始されると、まずステップＳ３１でバスマスタ２４からのライト操作要求が受け付けられる。これは図６のステップＳ８の処理に対応する。そしてステップＳ３２で受け付けたアドレスがキャッシュに存在するかが調べられ、ステップＳ３３でアクセスアドレスがキャッシュヒットしているか否かが判定される。
【００３４】
ヒットしている場合には、ステップＳ３４でバスマスタ２４から送られたデータ、およびフラグがキャッシュに書き込まれて処理を終了する。キャッシュヒットでない場合には、ステップＳ３５でキャッシュに空きエントリがあるか否かが判定され、空きエントリがある場合には、ステップＳ３４でその空きエントリにデータとフラグが書き込まれ、処理を終了する。空きエントリがない場合には、ステップＳ３６でメインメモリにコピーバック処理が行われて、空きエントリが作成され、その空きエントリにステップＳ３４でデータとフラグが書き込まれて処理を終了する。なおステップＳ３５、Ｓ３６の処理は本発明とは直接関係のない処理である。
【００３５】
第１の実施例におけるデータ転送処理は、基本的に図６から図８のフローチャートに対応して行われるが、第１の実施例におけるデータ転送シーケンスの例について、図９から図１２を用いて説明する。図９では転送元実行部、例えばプロセッサコア２１ａの実行部２２ａからバスマスタ２４に対して、転送条件の指示と転送開始の指示が与えられる。この動作は図６のステップＳ１、Ｓ２の処理に対応する。バスマスタ２４は転送元キャッシュ、ここではキャッシュメモリ２３ａに対するデータリード操作を行い、転送元キャッシュ側からのキャッシュヒット応答を受け取り、また読み出しデータとフラグを受け取る。そしてバスマスタ２４は転送先キャッシュ、例えばキャッシュメモリ２３ｂに対するデータライト操作として、書き込みデータ、およびフラグを転送する。一方転送元キャッシュ、すなわちキャッシュメモリ２３ａでは、例えば転送したデータの無効化が行われる。
【００３６】
図１０は、転送元におけるキャッシュミスの場合の動作シーケンスである。図９と同様に、転送元実行部からバスマスタ２４に対して転送条件指示と転送開始指示が与えられ、バスマスタ２４から転送元キャッシュ側に対してデータリード操作が行われるが、キャッシュミス応答が返されるためにデータ転送が中断される。これらの動作は図６のステップＳ１４、Ｓ１７の処理に相当し、下位メモリ階層からデータを取得しない場合に対応する。
【００３７】
図１１は、キャッシュミス応答がバスマスタ２４に返された場合に、下位メモリ階層、例えばメインメモリからのデータ読み出しを行う場合の動作シーケンスである。図１０にと同様にバスマスタ２４が転送元キャッシュからキャッシュミス応答を受け取ると、図６のステップＳ１５、Ｓ１６に対応して、下位メモリ階層に対するデータリード操作を行い、読み出しデータを受け取ると、バスマスタ２４は転送先キャッシュに対するライト操作としてデータ、およびフラグの書き込みを行い、例えば転送先キャッシュは転送元実行部に対してデータ転送の完了を通知する。前述のように、このデータ転送完了通知はバスマスタから転送元実行部に送られることも可能であるが、バスマスタがその通知を行う場合には、その時点では実際にデータ転送が完了していないことも考えられ、実際にデータとフラグが転送された転送先キャッシュから転送完了通知を行うほうがより確実な動作となる。
【００３８】
図１２は、複数のキャッシュメモリに対するデータ転送動作のシーケンスである。図９におけると同様に、転送元キャッシュからバスマスタ２４に対して読み出しデータとフラグが与えられると、バスマスタ２４から転送先キャッシュ１、および転送先キャッシュ２、例えばキャッシュメモリ２３ｂと２３ｃとに対するライト操作としてデータとフラグの書込みが行われる。転送元キャッシュ、すなわちキャッシュメモリ２３ａ側では、例えばデータの無効化が行われる。
【００３９】
図１３は、マルチプロセッサシステムの第２の実施例の構成ブロック図である。同図を図５の第１の実施例と比較すると、図５におけるバス２６に代わって、バスマスタ２４によるキャッシュメモリ間の直接データ転送のための専用バス２７と、各キャッシュメモリと下位メモリ階層２５、例えばメインメモリとを接続するバス２８とが分離されている点だけが異なっている。
【００４０】
図１３の第２の実施例においては、前述のように第１の実施例と異なってキャッシュメモリ間のバスマスタ２４によるデータ転送のための専用バス２７が設けられる点が第１の実施例と異なるだけであり、バスマスタ２４や各キャッシュメモリ側の処理については、第１の実施例におけると同様であり、その説明を省略する。
【００４１】
図１４、図１５は、第２の実施例におけるデータ転送シーケンスの例である。図１４においては、例えば図９におけると同様に、バスマスタ２４から転送先キャッシュに対してライト操作としてデータとフラグの書込みが行われるとともに、転送先キャッシュから下位メモリ階層２５に対して不要ラインの排出が行われ、また転送元実行部に対してデータ転送の完了通知が行われる。このうち不要ラインの排出は、例えば図８のステップＳ３５でキャッシュに空きエントリが存在せず、ステップＳ３６でコピーバック処理として不要ラインのデータが下位メモリ階層２５としてのメインメモリにはき出されることに対応する。この不要ライン排出は各キャッシュメモリと下位メモリ階層２５とを接続するバス２８を用いて行われる。また転送先キャッシュから転送元実行部へのデータ転送完了通知については、図１１におけると同様である。
【００４２】
図１５は、転送先キャッシュから転送先実行部に対してデータ転送完了通知が行われる場合の動作シーケンスである。図１４と異なって、データ転送完了通知が転送先キャッシュから転送先実行部に送られる。転送先実行部は、バスマスタ２４によるデータ転送が完了したことを、転送先キャッシュからの通知によって確実に知ることが可能となり、必要に応じて、その後の処理に必要となるデータを転送先キャッシュに要求し、返送されたデータを用いて処理を実行することになる。
【００４３】
図１６は、図１９、および図２１で説明した従来技術と本発明との比較の説明図である。同図において性能とは、基本的にキャッシュアクセスレイテンシと、データ移動にかかるレイテンシによって決定される。
【００４４】
図１７は、キャッシュアクセスレイテンシと、データ移動にかかるレイテンシとの説明図である。同図は図１５の動作シーケンスに対応するものであり、転送先キャッシュからデータ転送完了通知が転送元実行部にも送られる点だけが追加されている。データ移動にかかるレイテンシとは、転送元実行部からバスマスタ２４に対して転送指示、すなわち転送条件の指示と転送開始指示が与えられてから、実際に転送データが転送先キャッシュに書き込まれ、転送先キャッシュから転送先実行部や転送元実行部に対して転送完了通知が行われるまでの時間であり、またキャッシュアクセスレイテンシとは、例えばデータ転送終了後に転送先実行部が必要に応じて転送先キャッシュに対してデータを要求し、転送データを受け取るまでの時間に相当する。
【００４５】
図１６において、第１の従来技術では、本発明のようにＤＭＡＣを備えることなく、ハード実装コストは小さくてすむが、データ転送後に転送先実行部がデータを必要とする場合に、そのデータを下位メモリ階層、すなわちメインメモリに対して要求し、転送データを受け取るために、キャッシュアクセスレイテンシが大となり、その結果、性能は小さくなる。
【００４６】
これに対して第２の従来技術では、スヌープキャッシュを用いることによってデータ移動にかかるレイテンシは小となり、性能は大きくなるが、例えばブロードキャスト用のハード実装コストが大きくなる。
【００４７】
これに対して本発明においては、ＤＭＡＣを追加しなければならないことからハード実装コストがやや大きくなるというデメリットはあるが、データ移動にかかるレイテンシや、キャッシュアクセスレイテンシは小となり、性能は向上する。
【００４８】
特に第２の実施例では、キャッシュメモリ相互間の直接データ転送のためのバスを、メインメモリとキャッシュメモリを結ぶバスと独立に設けることより、例えばプロセッサコアの数が増大しても、メモリバストラフィックを小さく抑えることが可能となり、大きな性能を得ることができる。
【００４９】
すなわち本発明においては、従来技術と比較して、キャッシュメモリ間のデータ転送はメインメモリを介することがないため、メインメモリとの間のバス帯域を消費せず、またスヌープキャッシュと比較して、例えばプログラムで指定されているキャッシュメモリ相互間でのみデータ転送を行うため、バストラフィックは最小限となり、プロセッサコアの数が増大しても実用的な動作を維持することが可能となる。さらに転送先プロセッサコアは、データが必要となった時点でキャッシュにアクセスし、メインメモリにアクセスする必要がないため、小さいキャッシュアクセスレイテンシで必要データを受け取ることが可能となる。
【図面の簡単な説明】
【００５０】
【図１】本発明のマルチプロセッサシステムの原理構成ブロック図である。
【図２】本発明のマルチプロセッサシステムの基本構成ブロック図である。
【図３】図２におけるデータ更新結果のメインメモリへの反映の説明図である。
【図４】図２における複数のキャッシュメモリへのデータ直接転送の説明図である。
【図５】マルチプロセッサシステムの第１の実施例の構成ブロック図である。
【図６】バスマスタによる処理の詳細フローチャートである。
【図７】転送元キャッシュ側における処理の詳細フローチャートである。
【図８】転送先キャッシュ側における処理の詳細フローチャートである。
【図９】第１の実施例におけるデータ転送シーケンスの例（その１）である。
【図１０】第１の実施例におけるデータ転送シーケンスの例（その２）である。
【図１１】第１の実施例におけるデータ転送シーケンスの例（その３）である。
【図１２】第１の実施例におけるデータ転送シーケンスの例（その４）である。
【図１３】マルチプロセッサシステムの第２の実施例の構成ブロック図である。
【図１４】第２の実施例におけるデータ転送シーケンスの例（その１）である。
【図１５】第２の実施例におけるデータ転送シーケンスの例（その２）である。
【図１６】本発明と従来技術との比較の説明図である。
【図１７】データ転送性能としてのデータ移動にかかるレイテンシとキャッシュアクセスレイテンシとの説明図である。
【図１８】マルチプロセッサシステムの従来例の構成ブロック図である。
【図１９】データ転送の第１の従来技術の説明図である。
【図２０】第１の従来技術によるデータ転送シーケンスの説明図である。
【図２１】データ転送の第２の従来技術の説明図である。
【図２２】第２の従来技術におけるデータ転送シーケンスの説明図である。
【符号の説明】
【００５１】
１、２１  プロセッサコア
２、１２、２３  キャッシュメモリ
３  直接メモリアクセス制御手段
１０、２０  チップ
１１  プロセッサ
１４  ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）
１５  メインメモリ
１６、２６  バス
２２  実行部
２４  バスマスタ
２５  下位メモリ階層
２７  キャッシュメモリ間直接データ転送バス
２８  キャッシュメモリと下位メモリ階層との間のバス
【図１】
0005168800.tif 000002
【図２】
0005168800.tif 000003
【図３】
0005168800.tif 000004
【図４】
0005168800.tif 000005
【図５】
0005168800.tif 000006
【図６】
0005168800.tif 000007
【図７】
0005168800.tif 000008
【図８】
0005168800.tif 000009
【図９】
0005168800.tif 000010
【図１０】
0005168800.tif 000011
【図１１】
0005168800.tif 000012
【図１２】
0005168800.tif 000013
【図１３】
0005168800.tif 000014
【図１４】
0005168800.tif 000015
【図１５】
0005168800.tif 000016
【図１６】
0005168800.tif 000017
【図１７】
0005168800.tif 000018
【図１８】
0005168800.tif 000019
【図１９】
0005168800.tif 000020
【図２０】
0005168800.tif 000021
【図２１】
0005168800.tif 000022
【図２２】
0005168800.tif 000023