[go: up one dir, main page]

JP5168800B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP5168800B2
JP5168800B2 JP2006062261A JP2006062261A JP5168800B2 JP 5168800 B2 JP5168800 B2 JP 5168800B2 JP 2006062261 A JP2006062261 A JP 2006062261A JP 2006062261 A JP2006062261 A JP 2006062261A JP 5168800 B2 JP5168800 B2 JP 5168800B2
Authority
JP
Japan
Prior art keywords
data
transfer
cache
cache memory
processor core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006062261A
Other languages
English (en)
Other versions
JP2007241601A (ja
Inventor
文彦 早川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006062261A priority Critical patent/JP5168800B2/ja
Publication of JP2007241601A publication Critical patent/JP2007241601A/ja
Application granted granted Critical
Publication of JP5168800B2 publication Critical patent/JP5168800B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明はマルチプロセッサシステムにおけるキャッシュ間のデータ転送方式に係り、さらに詳しくはマルチプロセッサシステムを構成するプロセッサコアのうちの1つで更新されたデータを、下位メモリ階層を介することなく、他のプロセッサコアのキャッシュに直接に転送することを可能とし、データ移動やキャッシュアクセスのレイテンシを小さくすることができるマルチプロセッサシステムに関する。
処理を複数のプロセッサで分割して並列に実行するマルチプロセッサシステムは、高速な処理を実現するために広範に用いられている。図18は、そのようなマルチプロセッサシステムの従来例の構成ブロック図である。同図において、チップ100上に複数のプロセッサ101から101が備えられ、各プロセッサはメインメモリ105とバス106によって接続されている。各プロセッサ101から101に対しては、それぞれキャッシュメモリ102から102が備えられている。
図18のようなマルチプロセッサシステムでは、メモリアクセスの平均的性能を向上させるために、各プロセッサに対してそれぞれキャッシュメモリが備えられる、分散キャッシュシステムが用いられる。このような分散キャッシュシステムでは、各キャッシュメモリと下位メモリ階層との間で同一アドレスに対するデータの不整合が生じることのないよう、データの一致性を保つ必要がある。
図19は、このようなマルチプロセッサシステムにおいて、各メモリにおけるデータの一致性を保つためのデータ転送の第1の従来技術の説明図である。同図において、あるプロセッサ(コア)101上で更新されたデータは、キャッシュメモリ102に書き込まれるとともに、一般にプログラムの指示によって下位メモリ階層105に書き戻される。そして同時に別のプロセッサ(コア)、例えば101上のキャッシュメモリ102内で対応するアドレスのデータに対して無効化が指示され、キャッシュメモリ102上のデータは破棄される。プロセッサ101でデータが必要となった場合には、下位メモリ階層105から最新の更新データをリードすることによって、データの一致性が確保される。
図20は、第1の従来技術におけるデータ転送シーケンスの例である。同図において、例えば図19上のプロセッサ101、すなわちデータ転送元実行部から転送元キャッシュ、すなわちキャッシュメモリ102上の更新データが、下位メモリ階層としての下位メモリ階層105に転送された後に、転送先実行部としてのプロセッサ101に対応して備えられている転送先キャッシュ102へのデータ転送が行われるものとして、処理のシーケンスを説明する。
まず転送元実行部から転送元キャッシュ、すなわちキャッシュメモリ102に対して更新データ転送の指示が出され、キャッシュメモリ102から下位メモリ階層としての下位メモリ階層105への更新データ転送が行われる。転送元キャッシュ、すなわちキャッシュメモリ102においても、その後メモリシステム内でのデータの統一性を保つために与えられるデータの無効化指示に対応して、データの無効化が行われる。そして転送元実行部としてのプロセッサ101から転送先実行部、すなわちプロセッサ101に対して、更新データが下位メモリ階層105に格納されたことを示す通知が送られ、そのデータを必要とする転送先実行部、すなわちプロセッサ101は転送先キャッシュとしてのキャッシュメモリ102に対してデータ要求を行うが、この時点ではキャッシュメモリ102には更新データはまだ格納されておらず、転送先キャッシュとしてのキャッシュメモリ102は下位メモリ階層に対してデータのムーブイン要求を行い、その要求に対応して返送されたデータを受け取り、さらにそのデータを転送先実行部に返送することによって、更新データを用いたプロセッサ101における処理が可能となる。
しかしながらこの第1の従来技術では、あるプロセッサコアにおいて更新され、対応するキャッシュメモリに格納されたデータは一旦下位メモリ階層に書き戻された後、必要とするプロセッサコアがそのデータを下位メモリ階層からキャッシュメモリを介してリードすることが必要となり、
転送元実行部が更新データの転送を指示してから、その更新データを必要とする転送先実行部が実際にそのデータを獲得するまでの時間が長くなるという問題点があった。
図21は、分散キャッシュシステムにおけるデータの一致性を保つためのデータ転送方式の第2の従来例の説明図である。同図においてあるプロセッサ(コア)101のキャッシュメモリ102上のデータが更新されると、そのキャッシュメモリ102に書き込まれた更新データは他のプロセッサのすべてにブロードキャストされ、同じアドレスのデータを格納しているキャッシュメモリ上のデータは更新される。このようなキャッシュの制御方式はスヌープキャッシュと呼ばれる。
図22は、第2の従来技術、すなわちスヌープキャッシュ方式における更新データの転送シーケンスの例である。同図において転送元キャッシュ、例えばキャッシュメモリ102にデータが書き込まれると、そのキャッシュメモリ、すなわち転送元キャッシュから、スヌープ処理によって転送先キャッシュ、すなわち他のすべてのキャッシュメモリのうちで同じアドレスのデータが格納されているキャッシュメモリにデータの書込みが行われ、データ書込みが行われたことが転送先実行部としての、転送先キャッシュに対応するプロセッサに通知され、転送先実行部は必要に応じて転送先キャッシュに対してデータを要求し、返送されたデータを用いて処理を行うことになる。
しかしながらこの第2の従来技術においては、更新データのブロードキャストを行うためのハード実装コストが大きくなるという問題点がある。すなわち対応するアドレスのデータが格納されていないキャッシュメモリに対してもデータのブロードキャストが行われるために、メモリアクセスのトラフィックが大きくなり、幅の広いバスが必要となるとともに、それぞれのプロセッサはキャッシュメモリ上のデータの更新などを行いながらその他の処理を行うために、例えば2つのポートを持つランダム・アクセス・メモリなどを備える必要があり、ハードウェアのコストが大きくなる。
このようなマルチプロセッサシステム内でのDMA転送におけるメモリアクセスの待ち時間を低減するために、キャッシュをソフトウェアプログラムで管理する技術を開示する特許文献1では、システムメモリ上のデータの各プロセッサへの転送を高速化するために設けられるDMAキャッシュのソフトウェアプログラム管理を可能にするキャッシュ管理コマンドを提供する方法が開示されている。
特開2005−276199号公報 しかしながら特許文献1の従来技術は、システムメモリ上のデータの各プロセッサへの転送を高速化するための技術であり、本発明が対象とする分散キャッシュメモリシステムにおけるキャッシュメモリ相互間でのデータ転送には適用することができないという問題点があった。
本発明の課題は、上述の問題点に鑑み、ハードウェアの実装コストの増大をできるだけ抑えながら、マルチプロセッサシステムにおける複数のプロセッサコアにそれぞれ対応するキャッシュメモリ相互間でのデータ転送を高速化することである。
図1は、本発明のマルチプロセッサシステムの原理構成ブロック図である。同図においてマルチプロセッサシステムは、複数のプロセッサコア1から1と、直接メモリアクセス制御手段3とを備えている。
各プロセッサコア1から1に対しては、それぞれ対応するキャッシュメモリ2から2が備えられ、直接データ転送制御手段3はこれら複数のキャッシュメモリ2から2の相互間での直接データ転送を制御するものである。
図1の直接メモリアクセス制御手段3は、例えばバスマスタであり、バスマスタは転送元プロセッサコアから転送元プロセッサコアの番号、転送先プロセッサコアの番号、転送データのキャッシュメモリ上の格納開始アドレス、およびデータ転送量を示す転送条件と、転送開始の指示に対応して、転送元のキャッシュメモリに対してリードアクセスを行い、キャッシュヒット応答に対応して転送データ、およびフラグなどを読み出し、転送先キャッシュメモリに対してライトアクセスを行い、転送データとフラグなどを転送先キャッシュメモリにライトする。
本発明によれば、マルチプロセッサシステムにおいて、各プロセッサコアにそれぞれ対応するキャッシュメモリ相互間での直接データ転送が可能となり、キャッシュメモリ相互間でのデータ転送が高速化され、マルチプロセッサシステム全体としてのデータ処理効率の向上に寄与するところが大きい。
図2は、本発明におけるマルチプロセッサシステムの基本構成ブロック図である。同図においてシステムは、図18の従来例におけると同様のチップ10とメインメモリ15とによって構成されており、チップ10の上には複数のプロセッサ(コア)11から11が搭載されており、各プロセッサに対してはそれぞれキャッシュメモリ12から12が備えられている。本発明においては、これらの構成要素に加えて各キャッシュメモリ12から12の間でメインメモリ15を介することなく、データの転送を行うためにDMAC(ダイレクト・メモリ・アクセス・コントローラ)14が備えられ、各プロセッサ11から11、メインメモリ15、およびDMAC14はバス16によって接続されている。
本発明においては、図2に示すように各プロセッサ(コア)11から11にそれぞれ対応するキャッシュメモリ12から12に対するデータの読み書き、すなわち転送の制御を行うためのDMAC14が新設され、あるプロセッサ(コア)、例えば11による演算によってキャッシュメモリ12上で更新されたデータは、DMAC14の制御によって別のプロセッサ(コア)、例えば11に直接に転送され、キャッシュメモリ12上の対応するデータの更新が行われる。この場合、どのプロセッサからどのプロセッサへの転送が行われるべきかは、例えばプロセッサ11による演算結果がプロセッサ11による演算で使われるべきことから、マルチプロセッサシステムに対する全体的処理のプログラムによって指定される。
図3は、図2の基本構成システムにおけるデータ更新のメインメモリへの反映方法の説明図である。図21で説明したスヌープキャッシュ方式以外の一般的なマルチプロセッサシステムにおけるキャッシュ制御方式では、図19で説明したようにメインメモリにデータの更新結果が反映された後には、複数のキャッシュメモリ、ここでは12から12のうちで、メインメモリ上でデータ更新が反映されたデータに対応するアドレスに対しては、いずれか1つのキャッシュメモリだけが有効なデータを保持するように制御が行われる。
すなわち図3において、図2でプロセッサ11に対応するキャッシュメモリ12に対して書き込まれた更新データがプロセッサ11に転送されてキャッシュメモリ12に書き込まれ、データの更新が行われると、そのデータ更新の最終的なメインメモリ15への反映は、プロセッサ11からメインメモリ15へのそのデータの転送によって行われる。この時、もともとのデータ転送元のプロセッサ11に対するキャッシュメモリ12内の更新データは無効化されて以後使用不可能にされるか、あるいはそのデータに対応する更新済みフラグとしてのダーティビットがクリアされることによって、そのプロセッサ11では使用可能であるとしても、例えば他のプロセッサ、例えば11への転送には使用できない状態とされる。
図4は、図2の基本構成システムにおける複数のプロセッサコアへのDMACによる直接データ転送の説明図である。同図において、キャッシュメモリ12上で更新された書き込みデータは、例えば他の3つのプロセッサ11、11、および11のすべてにDMAC14の制御によって転送され、各キャッシュメモリ12から12上の対応するアドレスのデータは更新可能となる。しかしながら、前述のスヌープキャッシュ方式を除いては、有効なデータとして実際にキャッシュへの書き込みを行う権利を持つのは転送先の複数のプロセッサのうちで1つだけとなる。その制御はソフトウェアによって保証されるが、その制御自体は本発明と直接の関連は無いので、その詳細な説明は省略する。
図5は、本発明におけるマルチプロセッサシステムの第1の実施例の構成ブロック図である。同図においてシステムは、チップ20と下位メモリ階層、例えばメインメモリ25によって構成され、チップ20上には複数のプロセッサコア21から21、バスマスタ24が備えられ、各プロセッサコア21から21、バスマスタ24、および下位メモリ階層25はバス26によって接続されている。そしてそれぞれのプロセッサコア、例えばプロセッサコア21は実行部22とキャッシュメモリ23とを備えている。なおバスマスタ24は、例えば図2におけるDMAC14に相当する。
図5において、例えばプロセッサコア21上のキャッシュメモリ23が転送元キャッシュメモリとして、プロセッサコア21上の転送先キャッシュメモリとしてのキャッシュメモリ23に対して、キャッシュメモリ間データ直接転送を司るバスマスタ24の制御によって、データの転送を行う場合の処理の詳細について、図6から図8のフローチャートを用いて説明する。
図6は、バスマスタ24の処理フローチャートである。同図においてバスマスタ24の処理は、例えばプロセッサコア21上の実行部22から送られるデータ転送要求に対応して開始される。処理が開始されると、まずステップS1で転送元コア番号、ここではプロセッサコア21の番号、転送すべきキャッシュメモリ23上の領域、すなわちアドレスと、転送データサイズ、および転送先のコア番号、例えばプロセッサコア21の番号の設定結果が、転送元コア、すなわちプロセッサコア21から受け取られ、またステップS2でプロセッサコア21から転送開始の指示が受け取られ、これに対応してリード操作時の動作が開始される。
リード操作時の動作としては、まずステップS3で転送元コア、ここではプロセッサコア21の実行部22に対してリード操作の要求が出され、ステップS4でその要求に対応して転送元コアから受け取ったキャッシュ応答がヒットであるか否かが判定される。一般的には転送元コアの転送要求に対応するキャッシュ応答はヒットとなることが多く、その場合にはステップS5で転送元コアからキャッシュ上のデータとフラグ、例えば前述の更新済みフラグとしてのダーティビットが読み出され、ステップS6で転送元コアに対して転送データに対する無効化処理、あるいはダーティビットのクリア処理が要求され、その後ライト操作時の動作が行われる。ここで、転送元コアに対して無効化処理とダーティビットクリア処理のいずれを要求すべきかを示すデータがバスマスタ内の図示しないレジスタに格納され、バスマスタはそのデータに対応していずれかの処理を転送元コアに対して要求するものとする。
ライト操作時の動作としては、まずステップS8で転送先コア、ここではプロセッサコア21に対して、データのキャッシュメモリ23へのライト操作の要求が出され、ステップS9で転送先コアに対してライトデータとフラグが転送され、ステップS10で転送すべきデータのすべての転送を完了したか否かが判定される。一般的に大量のデータを転送する場合には、その転送データが小さなデータ量の単位に分割され、その単位毎にデータのリードと転送が行われる。そしてすべてのデータの転送が完了していない場合には、ステップS3以降の処理が繰り返される。
すべてのデータの転送が完了した場合には、ステップS11で転送元コア、ここでは21に対してデータ転送の完了が通知され、またステップS12で転送先コア、すなわち21に対してデータ転送の完了が通知されて、処理を終了する。なお後述するように、このデータの転送完了通知は、バスマスタ24からではなく、例えばデータ転送先実行部としてのプロセッサコア21の実行部22から、例えば転送元コア21に対して行われることも可能であり、その場合はステップS11の処理は省略されることになる。ここでステップS11、S12の処理が省略可能であることが、全体にカッコをつけることによって示されている。なお、バスマスタがデータ転送完了通知を行うべきか否かは、前述と同様にバスマスタ内の図示しないレジスタに格納されているデータによって指定されるものとする。
リード操作時の動作におけるステップS4で転送元コアのキャッシュ応答がヒットでない場合には、ステップS14以降の処理が行われる。前述のように転送元コアからデータ転送要求を受けたことに対応するキャッシュ応答は基本的にはヒットとなるべきであるが、キャッシュメモリ23内で転送すべきデータが格納されているアドレスのデータが、その後のプロセッサコア21内の処理で、参照局所性が低いと判断され、メインメモリ等の下位メモリ階層に書き戻されてしまっていることも起こりうるために、キャッシュ応答がヒットではなく、ミスとなる場合も考えられる。
このようにキャッシュ応答がミスの場合には、ステップS14で下位メモリ階層、例えばメインメモリから転送すべきデータを取得すべきか否かが判定される。データを取得すべきか否かは、例えばステップS1で転送元のコアによる設定の中で指定されるものとする。メインメモリからデータを取得すべき場合には、ステップS15で下位メモリ階層に対するリード操作が行われ、ステップS16で読み出しデータが受け取られて、ライト操作時の動作としてのステップS8以降の処理が続行される。
ステップS14でキャッシュミスの場合に下位メモリ階層からデータを取得すべきでないと判定されると、ステップS17でデータ転送が中断され、ステップS18で転送元コア、すなわちプロセッサコア21にエラーが通知されて処理を終了する。なおこのステップS18の処理も省略可能である。
図7は、転送元キャッシュ側、ここではキャッシュメモリ23側の処理のフローチャートである。この処理は、プロセッサコア21の実行部22が転送元実行部として実行する処理のフローチャートである。同図において処理が開始されると、まずステップS21でバスマスタ24からデータのリード操作要求が受け付けられる。これは図6のステップS3の処理に対応する。そしてステップS22で受け付けたアドレスがキャッシュに存在するか否かが調べられ、ステップS23でアクセスアドレスがキャッシュヒットしているか否かが判定される。
キャッシュヒットしている場合には、ステップS24でバスマスタ24に対してヒット応答が返され、ステップS25で該当アドレスのデータとフラグがバスマスタ24に返送され、ステップS26でキャッシュラインの無効化、またはダーティビットのクリアが行われて処理を終了する。なお例えばスヌープキャッシュ制御の場合にはステップS26の処理は省略される。ステップS23でキャッシュヒットでないと判定されると、ステップS27でキャッシュミス応答がバスマスタ24に送られて処理を終了する。
図8は、転送先キャッシュ側、ここではプロセッサコア21上のキャッシュメモリ23側における処理のフローチャートである。同図において処理が開始されると、まずステップS31でバスマスタ24からのライト操作要求が受け付けられる。これは図6のステップS8の処理に対応する。そしてステップS32で受け付けたアドレスがキャッシュに存在するかが調べられ、ステップS33でアクセスアドレスがキャッシュヒットしているか否かが判定される。
ヒットしている場合には、ステップS34でバスマスタ24から送られたデータ、およびフラグがキャッシュに書き込まれて処理を終了する。キャッシュヒットでない場合には、ステップS35でキャッシュに空きエントリがあるか否かが判定され、空きエントリがある場合には、ステップS34でその空きエントリにデータとフラグが書き込まれ、処理を終了する。空きエントリがない場合には、ステップS36でメインメモリにコピーバック処理が行われて、空きエントリが作成され、その空きエントリにステップS34でデータとフラグが書き込まれて処理を終了する。なおステップS35、S36の処理は本発明とは直接関係のない処理である。
第1の実施例におけるデータ転送処理は、基本的に図6から図8のフローチャートに対応して行われるが、第1の実施例におけるデータ転送シーケンスの例について、図9から図12を用いて説明する。図9では転送元実行部、例えばプロセッサコア21の実行部22からバスマスタ24に対して、転送条件の指示と転送開始の指示が与えられる。この動作は図6のステップS1、S2の処理に対応する。バスマスタ24は転送元キャッシュ、ここではキャッシュメモリ23に対するデータリード操作を行い、転送元キャッシュ側からのキャッシュヒット応答を受け取り、また読み出しデータとフラグを受け取る。そしてバスマスタ24は転送先キャッシュ、例えばキャッシュメモリ23に対するデータライト操作として、書き込みデータ、およびフラグを転送する。一方転送元キャッシュ、すなわちキャッシュメモリ23では、例えば転送したデータの無効化が行われる。
図10は、転送元におけるキャッシュミスの場合の動作シーケンスである。図9と同様に、転送元実行部からバスマスタ24に対して転送条件指示と転送開始指示が与えられ、バスマスタ24から転送元キャッシュ側に対してデータリード操作が行われるが、キャッシュミス応答が返されるためにデータ転送が中断される。これらの動作は図6のステップS14、S17の処理に相当し、下位メモリ階層からデータを取得しない場合に対応する。
図11は、キャッシュミス応答がバスマスタ24に返された場合に、下位メモリ階層、例えばメインメモリからのデータ読み出しを行う場合の動作シーケンスである。図10にと同様にバスマスタ24が転送元キャッシュからキャッシュミス応答を受け取ると、図6のステップS15、S16に対応して、下位メモリ階層に対するデータリード操作を行い、読み出しデータを受け取ると、バスマスタ24は転送先キャッシュに対するライト操作としてデータ、およびフラグの書き込みを行い、例えば転送先キャッシュは転送元実行部に対してデータ転送の完了を通知する。前述のように、このデータ転送完了通知はバスマスタから転送元実行部に送られることも可能であるが、バスマスタがその通知を行う場合には、その時点では実際にデータ転送が完了していないことも考えられ、実際にデータとフラグが転送された転送先キャッシュから転送完了通知を行うほうがより確実な動作となる。
図12は、複数のキャッシュメモリに対するデータ転送動作のシーケンスである。図9におけると同様に、転送元キャッシュからバスマスタ24に対して読み出しデータとフラグが与えられると、バスマスタ24から転送先キャッシュ1、および転送先キャッシュ2、例えばキャッシュメモリ23と23とに対するライト操作としてデータとフラグの書込みが行われる。転送元キャッシュ、すなわちキャッシュメモリ23側では、例えばデータの無効化が行われる。
図13は、マルチプロセッサシステムの第2の実施例の構成ブロック図である。同図を図5の第1の実施例と比較すると、図5におけるバス26に代わって、バスマスタ24によるキャッシュメモリ間の直接データ転送のための専用バス27と、各キャッシュメモリと下位メモリ階層25、例えばメインメモリとを接続するバス28とが分離されている点だけが異なっている。
図13の第2の実施例においては、前述のように第1の実施例と異なってキャッシュメモリ間のバスマスタ24によるデータ転送のための専用バス27が設けられる点が第1の実施例と異なるだけであり、バスマスタ24や各キャッシュメモリ側の処理については、第1の実施例におけると同様であり、その説明を省略する。
図14、図15は、第2の実施例におけるデータ転送シーケンスの例である。図14においては、例えば図9におけると同様に、バスマスタ24から転送先キャッシュに対してライト操作としてデータとフラグの書込みが行われるとともに、転送先キャッシュから下位メモリ階層25に対して不要ラインの排出が行われ、また転送元実行部に対してデータ転送の完了通知が行われる。このうち不要ラインの排出は、例えば図8のステップS35でキャッシュに空きエントリが存在せず、ステップS36でコピーバック処理として不要ラインのデータが下位メモリ階層25としてのメインメモリにはき出されることに対応する。この不要ライン排出は各キャッシュメモリと下位メモリ階層25とを接続するバス28を用いて行われる。また転送先キャッシュから転送元実行部へのデータ転送完了通知については、図11におけると同様である。
図15は、転送先キャッシュから転送先実行部に対してデータ転送完了通知が行われる場合の動作シーケンスである。図14と異なって、データ転送完了通知が転送先キャッシュから転送先実行部に送られる。転送先実行部は、バスマスタ24によるデータ転送が完了したことを、転送先キャッシュからの通知によって確実に知ることが可能となり、必要に応じて、その後の処理に必要となるデータを転送先キャッシュに要求し、返送されたデータを用いて処理を実行することになる。
図16は、図19、および図21で説明した従来技術と本発明との比較の説明図である。同図において性能とは、基本的にキャッシュアクセスレイテンシと、データ移動にかかるレイテンシによって決定される。
図17は、キャッシュアクセスレイテンシと、データ移動にかかるレイテンシとの説明図である。同図は図15の動作シーケンスに対応するものであり、転送先キャッシュからデータ転送完了通知が転送元実行部にも送られる点だけが追加されている。データ移動にかかるレイテンシとは、転送元実行部からバスマスタ24に対して転送指示、すなわち転送条件の指示と転送開始指示が与えられてから、実際に転送データが転送先キャッシュに書き込まれ、転送先キャッシュから転送先実行部や転送元実行部に対して転送完了通知が行われるまでの時間であり、またキャッシュアクセスレイテンシとは、例えばデータ転送終了後に転送先実行部が必要に応じて転送先キャッシュに対してデータを要求し、転送データを受け取るまでの時間に相当する。
図16において、第1の従来技術では、本発明のようにDMACを備えることなく、ハード実装コストは小さくてすむが、データ転送後に転送先実行部がデータを必要とする場合に、そのデータを下位メモリ階層、すなわちメインメモリに対して要求し、転送データを受け取るために、キャッシュアクセスレイテンシが大となり、その結果、性能は小さくなる。
これに対して第2の従来技術では、スヌープキャッシュを用いることによってデータ移動にかかるレイテンシは小となり、性能は大きくなるが、例えばブロードキャスト用のハード実装コストが大きくなる。
これに対して本発明においては、DMACを追加しなければならないことからハード実装コストがやや大きくなるというデメリットはあるが、データ移動にかかるレイテンシや、キャッシュアクセスレイテンシは小となり、性能は向上する。
特に第2の実施例では、キャッシュメモリ相互間の直接データ転送のためのバスを、メインメモリとキャッシュメモリを結ぶバスと独立に設けることより、例えばプロセッサコアの数が増大しても、メモリバストラフィックを小さく抑えることが可能となり、大きな性能を得ることができる。
すなわち本発明においては、従来技術と比較して、キャッシュメモリ間のデータ転送はメインメモリを介することがないため、メインメモリとの間のバス帯域を消費せず、またスヌープキャッシュと比較して、例えばプログラムで指定されているキャッシュメモリ相互間でのみデータ転送を行うため、バストラフィックは最小限となり、プロセッサコアの数が増大しても実用的な動作を維持することが可能となる。さらに転送先プロセッサコアは、データが必要となった時点でキャッシュにアクセスし、メインメモリにアクセスする必要がないため、小さいキャッシュアクセスレイテンシで必要データを受け取ることが可能となる。
本発明のマルチプロセッサシステムの原理構成ブロック図である。 本発明のマルチプロセッサシステムの基本構成ブロック図である。 図2におけるデータ更新結果のメインメモリへの反映の説明図である。 図2における複数のキャッシュメモリへのデータ直接転送の説明図である。 マルチプロセッサシステムの第1の実施例の構成ブロック図である。 バスマスタによる処理の詳細フローチャートである。 転送元キャッシュ側における処理の詳細フローチャートである。 転送先キャッシュ側における処理の詳細フローチャートである。 第1の実施例におけるデータ転送シーケンスの例(その1)である。 第1の実施例におけるデータ転送シーケンスの例(その2)である。 第1の実施例におけるデータ転送シーケンスの例(その3)である。 第1の実施例におけるデータ転送シーケンスの例(その4)である。 マルチプロセッサシステムの第2の実施例の構成ブロック図である。 第2の実施例におけるデータ転送シーケンスの例(その1)である。 第2の実施例におけるデータ転送シーケンスの例(その2)である。 本発明と従来技術との比較の説明図である。 データ転送性能としてのデータ移動にかかるレイテンシとキャッシュアクセスレイテンシとの説明図である。 マルチプロセッサシステムの従来例の構成ブロック図である。 データ転送の第1の従来技術の説明図である。 第1の従来技術によるデータ転送シーケンスの説明図である。 データ転送の第2の従来技術の説明図である。 第2の従来技術におけるデータ転送シーケンスの説明図である。
符号の説明
1、21 プロセッサコア
2、12、23 キャッシュメモリ
3 直接メモリアクセス制御手段
10、20 チップ
11 プロセッサ
14 ダイレクト・メモリ・アクセス・コントローラ(DMAC)
15 メインメモリ
16、26 バス
22 実行部
24 バスマスタ
25 下位メモリ階層
27 キャッシュメモリ間直接データ転送バス
28 キャッシュメモリと下位メモリ階層との間のバス

Claims (5)

  1. 複数のプロセッサコアによって構成されるマルチプロセッサシステムであって、
    該複数のプロセッサコアにそれぞれ対応する複数のキャッシュメモリと、
    前記複数のプロセッサコアとバスを介して接続され、データ転送元のプロセッサコアから転送元プロセッサコア識別情報、転送元キャッシュメモリのアドレス情報、転送データのサイズ、転送先プロセッサコア識別情報、及び転送開始指示を受信し、該転送元プロセッサコア識別情報、該転送元キャッシュメモリのアドレス情報、該転送データのサイズ、該転送先プロセッサコア識別情報、及び該転送開始指示に基づいて、該転送元キャッシュメモリから該転送データを該バスを介して読み出し転送先のプロセッサコアのキャッシュメモリへ該バスを介して転送する、該複数のキャッシュメモリ相互間での直接データ転送を制御する直接メモリアクセス制御手段とを備えることを特徴とするマルチプロセッサシステム。
  2. 前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリから前記転送データが出力された後に、該転送元キャッシュメモリ上の該出力データを無効化させるべきか、あるいは該データに対する更新済みフラグをクリアさせるべきかを示すデータを格納するレジスタを備え、
    該レジスタの格納内容に対応して、該直接メモリアクセス制御手段が、該転送元キャッシュメモリに対して、該出力データの無効化、あるいは該データに対する更新済みフラグのクリアを要求することを特徴とする請求項1記載のマルチプロセッサシステム。
  3. 前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリから前記転送先のプロセッサコアのキャッシュメモリへのデータ転送の完了を、前記データ転送元のプロセッサコア、あるいは転送先のプロセッサコアに対して通知すべきか否かを示すデータを格納するレジスタを備え、
    該レジスタの格納内容に対応して、該直接メモリアクセス制御手段が、該転送先のプロセッサコアのキャッシュメモリへのデータライトアクセスの完了時点で、前記データ転送元のプロセッサコア、あるいは転送先のプロセッサコアにデータ転送完了を通知することを特徴とする請求項1記載のマルチプロセッサシステム。
  4. 前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリへのデータリードアクセス時に、該転送元キャッシュメモリからキャッシュミス応答を受けた時、すべてのデータ転送処理を中断することを特徴とする請求項1記載のマルチプロセッサシステム。
  5. 前記直接メモリアクセス制御手段が、前記転送元キャッシュメモリへのデータリードアクセス時に、該転送元キャッシュメモリからキャッシュミス応答を受けた時、下位のメモリ階層から転送すべきデータを読み出し、前記転送先のプロセッサコアのキャッシュメモリに該読み出しデータを転送することを特徴とする請求項1記載のマルチプロセッサシステム。
JP2006062261A 2006-03-08 2006-03-08 マルチプロセッサシステム Expired - Fee Related JP5168800B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006062261A JP5168800B2 (ja) 2006-03-08 2006-03-08 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006062261A JP5168800B2 (ja) 2006-03-08 2006-03-08 マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2007241601A JP2007241601A (ja) 2007-09-20
JP5168800B2 true JP5168800B2 (ja) 2013-03-27

Family

ID=38587092

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006062261A Expired - Fee Related JP5168800B2 (ja) 2006-03-08 2006-03-08 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP5168800B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103109279B (zh) 2010-06-22 2016-08-31 富士通株式会社 多核处理器系统,控制程序以及控制方法
JP5625536B2 (ja) * 2010-06-24 2014-11-19 富士通株式会社 キャッシュ装置、及び情報処理装置
JP5776810B2 (ja) * 2014-03-20 2015-09-09 富士通株式会社 マルチプロセッサシステム、制御プログラム、および制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1067459B1 (en) * 1993-04-30 2013-08-28 NEC Corporation Symmetric multiprocessing system with unified environment and distributed system functions
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
JP4673585B2 (ja) * 2004-08-05 2011-04-20 富士通株式会社 メモリシステム制御装置およびメモリシステム制御方法

Also Published As

Publication number Publication date
JP2007241601A (ja) 2007-09-20

Similar Documents

Publication Publication Date Title
US20230214326A1 (en) Computer Memory Expansion Device and Method of Operation
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
EP0735480B1 (en) Cache coherent computer system that minimizes invalidation and copyback operations
US6704841B2 (en) Method and apparatus for facilitating speculative stores in a multiprocessor system
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US6721855B2 (en) Using an L2 directory to facilitate speculative loads in a multiprocessor system
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
EP0598535A1 (en) Pending write-back controller for a cache controller coupled to a packet switched memory bus
US20110173393A1 (en) Cache memory, memory system, and control method therefor
US6871267B2 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
JPH05128071A (ja) 多重プロセツサ・システムの性能の最適化装置及び方法
JPH09223118A (ja) スヌープキャッシュメモリ制御システム
JP4673585B2 (ja) メモリシステム制御装置およびメモリシステム制御方法
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
JPH10254772A (ja) キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム
EP3644190B1 (en) I/o coherent request node for data processing network with improved handling of write operations
CN113826085A (zh) 处理器中的写入流
KR101858597B1 (ko) 프로세싱 인 메모리 시스템의 연산할 작업, 연산할 데이터 및 연산 결과 데이터 전달 방법 및 프로세싱 인 메모리 시스템
JP5499987B2 (ja) 共有キャッシュメモリ装置
JP2000285023A (ja) ファイル制御装置
JP5168800B2 (ja) マルチプロセッサシステム
US7664900B2 (en) Multiprocessor system and method for processing memory access
US6678800B1 (en) Cache apparatus and control method having writable modified state
AU600982B2 (en) Computer system architecture implementing split instruction and operand cache line-pair-state management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111219

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120827

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121217

LAPS Cancellation because of no payment of annual fees