(57)【要約】【課題】マルチプロセッサシステムにおけるキャッシュコヒーレンシを保証しつつ、システムのパフォーマンスを向上させる。【解決手段】マルチプロセッサシステム１００におけるメモリマネージャ２００は、プロセッサ１２０からのリード要求のアドレスが、プロセッサ１１０のデータキャッシュ１１６と共有メモリ１５８との整合性が要求されるアドレスの範囲に含まれることを条件に、データキャッシュ１１６と共有メモリ１５８との整合性を保つ整合処理をプロセッサ１１０に実行せしめる。そして、プロセッサ１１０による前記整合処理が完了したことを条件にプロセッサ１２０により要求されたリードを許可する。【選択図】図１
2008176612.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリと、
キャッシュメモリを有し、該キャッシュメモリを経由してデータを前記共有メモリにライトしうる第１のプロセッサと、
前記共有メモリからデータをリードする第２のプロセッサと、
メモリマネージャとを備え、
該メモリマネージャは、前記第２のプロセッサからのリード要求のアドレスが、前記第１のプロセッサのキャッシュメモリと共有メモリとの整合性が要求されるアドレスの範囲に含まれることを条件に、前記キャッシュメモリと前記共有メモリとの整合性を保つ整合処理を前記第１のプロセッサに実行せしめ、
前記第１のプロセッサによる前記整合処理が完了したことを条件に前記第２のプロセッサにより要求されたリードを許可することを特徴とするマルチプロセッサシステム。
【請求項２】
前記メモリマネージャは、前記第２のプロセッサに割込命令を送信することによって前記整合処理を実行せしめることを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記メモリマネージャは、前回のリード要求に応じて前記第１のプロセッサに整合処理を実行せしめた後のリード要求に対して、該リード要求が前記前回のリード要求から所定の時間範囲内であり、かつ要求されるデータが前回のリード要求が要求されるデータと同じキャッシュラインに含まれることを条件に、前記整合処理を実行させないことを特徴とする請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記第１のプロセッサは、ライト・トランザクション・バッファを介して前記キャッシュメモリのデータを共有メモリにライトするものであり、ライトスルーモードで動作するか否か、および前記ライト・トランザクション・バッファが空であるか否かを前記メモリマネージャに通知し、
前記メモリマネージャは、前記第１のプロセッサがライトスルーモードで動作し、かつ前記ライト・トランザクション・バッファが空であることを条件に、前記整合処理を実行させないことを特徴とする請求項１から３のいずれか１項に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサに関し、特にマルチプロセッサシステムにおいてキャッシュコヒーレンシを制御する技術に関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおけるキャッシュコヒーレンシ（一貫性）を保証するために、スヌープ方式と呼ばれる手法が知られている（例えば特許文献１）。スヌープ方式では、キャッシュ間で更新状態を交換することで、各プロセッサのキャッシュは自身や他のプロセッサのキャッシュのライン更新状態を把握し、どのキャッシュに最新のデータが存在するかを知り、必要なときに最新のデータを取得できるようにラインのパージなどを行う。
【０００３】
スヌープ方式による手法は、各プロセッサのキャッシュタグと同数のスヌープタグが必要であり、組込用途のマルチプロセッサシステムに実装するにはコストが高いという問題があるため、組込用途のマルチプロセッサシステムではスヌープ方式を用いずにソフトウェアによりキャッシュコヒーレンシを保証することが多く行われている。
【特許文献１】特開平１０−３２０２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
スヌープ方式を用いずにソフトウェアによりマルチシステムにおけるキャッシュコヒーレンシを保証するために、例えば、共有記憶型のマルチプロセッサシステムにおいては下記の手法が考えられる。図１２は、この手法が用いられるマルチプロセッサシステムを示す。このシステムは、プロセッサＡ、プロセッサＢ、プロセッサＡとプロセッサＢがアクセス可能な共有メモリ５８、割込マネージャ５２、メモリマネージャ５４、メモリコントローラ５６、割込バス３０、メモリバス４０を有する。割込マネージャ５２、メモリマネージャ５４、メモリコントローラ５６は、プロセッサＡとプロセッサＢが共有メモリ５８へのアクセスに関連する種々の処理を行う。
【０００５】
プロセッサＡは、演算ユニット１１、ＭＭＵ（メモリ・マネージメント・ユニット）１２、データキャッシュ１６、キャッシュコントローラ１３、ＢＩＵ（バス・インタフェース・ユニット）１４、割込コントローラ１７を備える。
【０００６】
演算ユニット１１は、演算を実行するものであり、ＭＭＵ１２は、プロセッサＡの仮想アドレスや実アドレスを管理する。
【０００７】
キャッシュコントローラ１３は、データキャッシュ１６へのアクセスを制御するものであり、例えばＭＭＵ１２からのアクセスがキャッシュに対するアクセスである場合には、データキャッシュ１６へのアクセスを行わせ、キャッシュがミスヒットしたり外部メモリ（ここでは共有メモリ５８）のリードまたはライトが必要な場合にはＢＩＵ１４にリードまたはライトを要求する。
【０００８】
ＢＩＵ１４は、メモリバス４０と接続され、プロセッサＡが外部メモリのリードまたはライトを行うためのインタフェースであり、ＷＴＢ（ライト・トランザクション・バッファ）１５を備える。一般にプロセッサ内部のクロックよりもメモリバスのクロックのほうが遅く、ＷＴＢ１５は、プロセッサＡから共有メモリ５８へライトを行う際にこのクロックの差を緩衝するためのものである。具体的には、例えば、キャッシュコントローラ１３が外部メモリへのライト要求があったときに、キャッシュコントローラ１３はＢＩＵ１４にライト要求を出力し、ＢＩＵ１４のＷＴＢ１５は、メモリバス４０が空いているタイミングでメモリバス４０へライト要求を出力する。
【０００９】
割込コントローラ１７は、割込バス３０と接続され、割込バス３０からプロセッサＡへの割込信号を受信してそれに応じた処理をプロセッサＡに行わせたり、プロセッサＡからの割込信号を割込バス３０に出力するなどの処理をする。
【００１０】
プロセッサＢは、プロセッサＡと同じ構成を有するため、それの各機能ブロックの詳細説明について省略する。
【００１１】
割込マネージャ５２は、いずれのプロセッサに割込信号を出力するなど、割込バス３０に出力された割込信号を管理する。メモリマネージャ５４は、共有メモリ５８へ対していずれのプロセッサからのアクセス要求を許可するかの制御をし、メモリコントローラ５６はメモリマネージャ５４により許可されたアクセス要求に応じたリードまたはライトを行う。
【００１２】
ここで、プロセッサＡが共有メモリ５８にライトしたデータをプロセッサＢがリードする場合に、図１２のマルチプロセッサシステムにおいて行われる処理の一例を示す。プロセッサＢが共有メモリ５８のデータをリードする際に、プロセッサＡが共有メモリ５８にライトしたデータは共有メモリ５８に反映されているという保証は無い。データキャッシュ１６の内容が共有メモリ５８に反映されていない場合や、タイミングによってはＷＴＢ１５までは到達しているもののメモリバス４０に乗る手前の段階の場合もある。そのためプロセッサＢはプロセッサＡによるデータの更新が共有メモリ５８に反映したことを確認した後にリードしなければならない。
【００１３】
図１３は、この処理の流れを示すフローチャートである。プロセッサＢは、共有メモリ５８からデータをリードする際に、キャッシュコヒーレンシを保つために、まずプロセッサＡにデータの更新要求を出力する（Ｓ１０）。プロセッサＡは、プロセッサＢからの更新要求を受信すると、データキャッシュ１６にあるデータを共有メモリ５８にライトバックすると共に、ライトバックの完了時に更新完了通知をプロセッサＢに送信する（Ｓ２０、Ｓ３０）。プロセッサＢは、プロセッサＡからの更新完了通知を受信すると、共有メモリ５８からデータをリードする（Ｓ４０）。
【００１４】
図１４と図１５を用いてフローチャートの各ステップの内容を具体的に説明する。ここで、プロセッサＢが図１４に示す共有メモリ５８のデータ記憶領域６３からデータをリードする場合を例にする。データ記憶領域６３中のデータは、プロセッサＡによりデータキャッシュ１６経由で管理されている。また、共有メモリ５８には、コマンドを記憶するためのコマンド記憶領域６１と、リードアドレスを記憶するリードアドレス記憶領域６２が設けられており、それぞれのアドレスが（Ｘ）、（Ｙ）である。データ記憶領域６３のアドレスを（Ｚ）とする。
【００１５】
図１５に移る。図１５の最も上の欄に示すように、プロセッサＢは、データ記憶領域６３のデータの更新をプロセッサＡに要求するために、メモリマネージャ５４に更新要求を出す。具体的には、コマンド記憶領域６１のアドレス（Ｘ）に更新要求のコマンド（Ｄａｔａ  Ｗｒｉｔｅ）を書くことと、リードアドレス記憶領域６２にデータ記憶領域６３を示すアドレス（Ｚ）を書くことを行う。そのため、図１５の右上欄に示すように、メモリバス４０上を、コマンド記憶領域６１のアドレス（Ｘ）、リードアドレス記憶領域６２にライトするコマンド（Ｄａｔａ  Ｗｒｉｔｅ）、リードアドレス記憶領域６２にアドレス（Ｚ）を書くためのコマンド（コマンド「Ｄａｔａ  Ｗｒｉｔｅ」およびアドレス（Ｚ））が流れる。
【００１６】
そして、プロセッサＢは、割込マネージャ５２にコマンドを書いたことを割込信号で通知する。これは割込バス３０を介してプロセッサＢから割込マネージャ５２に出力される。
【００１７】
割込マネージャ５２は、プロセッサＢからの割込信号を受信すると、プロセッサＡにデータを更新させるための割込信号を出力する。
【００１８】
プロセッサＡは、割込マネージャ５２からの割込信号を受信すると、コマンド記憶領域６１にあるコマンド内容と、リードアドレス記憶領域６２に書き込まれたアドレスを読む。そのために、メモリバス４０上を、コマンド記憶領域６１のアドレス（Ｘ）、コマンド（Ｄａｔａ  Ｒｅａｄ）、リードアドレス記憶領域６２のアドレス（Ｙ）、コマンド（Ｄａｔａ  Ｒｅａｄ）が流れる。
【００１９】
プロセッサＡは、そしてメモリマネージャ５４を介してデータ記憶領域６３に記憶されたデータを更新する。メモリバス４０上を、データ記憶領域６３のアドレス（Ｚ）と、データ記憶領域６３に対応するデータキャッシュ１６中のデータ（Ｄａｔａ  ｗｒｉｔｅ）が流れる。
【００２０】
プロセッサＡは、データが更新されたことを確認するために続いてデータ記憶領域６３内のデータを読む要求をメモリマネージャ５４に出す。そのため、メモリバス４０上を、データ記憶領域６３のアドレス（Ｚ）とデータ（Ｄａｔａ  ｒｅａｄ）が流れる。
【００２１】
データ記憶領域６３内のデータが更新されたことを確認できたら、プロセッサＡは、メモリマネージャ５４を介してコマンド記憶領域６１にコマンド（Ｄａｔａ  ｗｒｉｔｅ）を書き込む。そして割込マネージャ５２に割込信号を出力する。そのため、メモリバス４０上をコマンド記憶領域６１のアドレス（Ｘ）とコマンド（Ｄａｔａ  Ｗｒｉｔｅ）が流れ、割込バス３０上を割込信号が流れる。
【００２２】
割込マネージャ５２は、プロセッサＡからの割込信号を受信すると、プロセッサＢにデータ更新が完了したことを示す割込信号を出力する。
【００２３】
プロセッサＢは、この割込信号に応じて、メモリマネージャ５４に、コマンド記憶領域６１とリードアドレス記憶領域６２のデータのリード要求をする。そのため、メモリバス４０上を、コマンド記憶領域６１のアドレス（Ｘ）とコマンド（Ｄａｔａ  ｒｅａｄ）、リードアドレス記憶領域６２のアドレス（Ｙ）とコマンド（Ｄａｔａ  ｒｅａｄ）が流れる。
【００２４】
そして、プロセッサＢは、リードアドレス記憶領域６２に記憶されたデータ記憶領域６３のアドレス（Ｚ）に記憶されたデータのリードをメモリマネージャ５４を介して行う。そのため、メモリバス４０上を、データ記憶領域６３のアドレス（Ｚ）およびデータ（Ｄａｔａ  ｒｅａｄ）が流れる。
【００２５】
なお、コマンド内容（ｃｍｄ＿ｉｄ）のリードやライトはデータキャッシュ１６を介さずに非キャッシュで行われる。これは（ｃｍｄ＿ｉｄ）そのものが共有メモリ５８にライトされたかどうかを確認する手続きを省略するためである。
【００２６】
スヌープ方式を用いていないので、キャッシュコヒーレンシの保証は、プロセッサ間のハンドシェクに頼ることになる。そのため、プロセッサ間のプロトコルが確立した後に上記一連の処理がソフトウェアを介して行われることになり、メモリバス４０バス上を流れるデータ量が多くなり、処理が遅くなるという問題がある。結果として、システム全体の効率が悪くなる。
【課題を解決するための手段】
【００２７】
本発明の一つの態様は、マルチプロセッサシステムである。このシステムは、共有メモリと、第１のプロセッサと、第２のプロセッサと、メモリマネージャを備える。第１のプロセッサは、キャッシュメモリを有し、該キャッシュメモリを経由してデータを共有メモリにライトしうる。第２のプロセッサは、メモリマネージャにリード要求を出すことによって共有メモリからデータをリードする。メモリマネージャは、第２のプロセッサからのリード要求のアドレスが、第１のプロセッサのキャッシュメモリと共有メモリとの整合性が要求されるアドレスの範囲に含まれることを条件に、キャッシュメモリと共有メモリとの整合性を保つ整合処理を第１のプロセッサに実行せしめ、その後、第１のプロセッサによる整合処理が完了したことを条件に第２のプロセッサにより要求されたリードを許可する。
【００２８】
なお、上記態様を方法、装置、またはプログラムとして表現したものも、本発明の態様としては有効である。
【発明の効果】
【００２９】
本発明の技術によれば、キャッシュコヒーレンシを保証しつつマルチプロセッサシステムの処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して本発明の実施の形態について説明する。
【００３１】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかるマルチプロセッサシステム１００を示す。マルチプロセッサシステム１００は、共有記憶型のマルチプロセッサシステムであり、プロセッサ１１０、プロセッサ１２０、プロセッサ１１０とプロセッサ１２０がアクセス可能な共有メモリ１５８、割込マネージャ１５２、メモリマネージャ２００、メモリコントローラ１５６、割込バス１３０、メモリバス１４０を備える。割込マネージャ１５２、メモリマネージャ２００、メモリコントローラ１５６は、プロセッサ１１０とプロセッサ１２０が共有メモリ１５８へのアクセスに関連する種々の処理を行い、メモリマネージャ２００は、メモリバス１４０との接続以外に、割込信号線１６０によって割込バス１３０とも接続されている。
【００３２】
プロセッサ１１０は、演算ユニット１１１、ＭＭＵ１１２、データキャッシュ１１６、キャッシュコントローラ１１３、ＢＩＵ１１４、割込コントローラ１１７を備える。
【００３３】
演算ユニット１１１は、演算を実行するものであり、ＭＭＵ１１２は、プロセッサ１１０の仮想アドレスや実アドレスを管理する。
【００３４】
キャッシュコントローラ１１３は、データキャッシュ１１６へのアクセスを制御するものであり、例えばＭＭＵ１１２からのアクセスがキャッシュに対するアクセスである場合には、データキャッシュ１１６へのアクセスを行わせ、キャッシュがミスヒットしたり外部メモリ（ここでは共有メモリ１５８）のリードまたはライトが必要な場合にはＢＩＵ１１４にリードまたはライトを要求する。
【００３５】
ＢＩＵ１１４は、メモリバス１４０と接続され、プロセッサ１１０が外部メモリのリードまたはライトを行うためのインタフェースであり、ＷＴＢ（ライト・トランザクション・バッファ）１１５を備える。
【００３６】
割込コントローラ１１７は、割込バス１３０と接続され、割込バス１３０を介してプロセッサ１１０への割込信号を受信してそれに応じた処理をプロセッサ１１０に行わせたり、プロセッサ１１０からの割込信号を割込バス１３０に出力するなどの処理をする。
【００３７】
プロセッサ１２０は、プロセッサ１１０と同じ構成を有するため、それの各機能ブロックの詳細説明について省略する。
【００３８】
図２は、メモリマネージャ２００をより詳細に示している。図示のように、メモリマネージャ２００は、整合処理制御部２１０と、メモリアクセス制御部２２０と、リードアドレス記憶部２３０と、アドレス範囲記憶部２４０を備える。
【００３９】
リードアドレス記憶部２３０は、いずれかのプロセッサが共有メモリ１５８から読み出そうとするデータのアドレスを記憶するものであり、プロセッサがリードを行うとリードアドレスが書き込まれる。
【００４０】
アドレス範囲記憶部２４０は例えばＩ／Ｏレジスタであり、プロセッサ１１０のデータキャッシュ１１６と共有メモリ１５８との整合性すなわちコヒーレンシが要求されるアドレスの範囲、およびプロセッサ１２０のデータキャッシュ１２６と共有メモリ１５８とのコヒーレンシが要求されるアドレスの範囲を記憶している。
【００４１】
マルチプロセッサシステムにおいて、プロセッサ間で通信を行う場合、各プロセッサの全てのアドレス空間を対象にキャッシュのコヒーレンシを制御する必要が無い。例えばシステムＬＳＩではメモリに対する変数領域の配置とその用途が予め限定されており、プロセッサ間で共有しなければいけない領域はアドレス空間に一部に限定されている。すなわち、この限定されたアドレス空間に対してキャッシュのコヒーレンシを制御することによってシステムのキャッシュコヒーレンシを保証するができる。
【００４２】
図３は、アドレス範囲記憶部２４０に記憶されたアドレスの範囲の態様を示す。通常、プロセッサ間で共有しなければいけない領域のアドレス空間は連続しているので、番地の上限と下限によって規定することができる。図３に示すように、アドレス範囲記憶部２４０には、プロセッサ１１０とプロセッサ１２０毎に、キャッシュコヒーレンシの制御が必要なアドレス範囲として、アドレス上限とアドレス下限が記憶されている。なお、アドレス範囲記憶部２４０に記憶された内容は、予め例えばいずれかのプロセッサによりアドレス範囲記憶部２４０にライトすることによって設定される。
【００４３】
メモリアクセス制御部２２０は、いずれのプロセッサからキャッシュアドレスへのリード要求があったときに、整合処理制御部２１０にデータの更新を要求する。
【００４４】
整合処理制御部２１０は、メモリアクセス制御部２２０からデータの更新要求を受信すると、アドレス範囲記憶部２４０に記憶されたアドレス範囲を参照し、リードの対象となるデータがキャッシュコヒーレンシを保証する必要があるものかを判断する。そして、判断の結果、キャッシュコヒーレンシを保証する必要が無い場合には直ちにデータのリードを許可するが、キャッシュコヒーレンシを保証する必要がある場合には、該当プロセッサによるキャッシュコヒーレンシを保証する処理すなわち整合処理が行われるように該当するプロセッサに整合処理を行わせるための割込信号を出力する。例えば、データを更新すべき対象がプロセッサ１１０なら、整合処理制御部２１０からの割込信号は割込信号線１６０と割込バス１３０を介してプロセッサ１１０に出力される。
【００４５】
その後、整合処理制御部２１０は、該当するプロセッサが整合処理を行い、整合処理の完了をもって出力した割込信号を受信するとメモリアクセス制御部２２０にデータ更新が完了することを通知する。
【００４６】
メモリアクセス制御部２２０は、この通知を受信してリードを許可する。
【００４７】
図４のフローチャートを参照して、マルチプロセッサシステム１００においてプロセッサが共有メモリ１５８へアクセスする際に行われる処理を説明する。
【００４８】
プロセッサが共有メモリ１５８へのアクセスはリードとライトに分けられ、アクセスするプロセッサがアクセス要求をメモリマネージャ２００に出力する。メモリマネージャ２００におけるメモリアクセス制御部２２０は、プロセッサが受信したアクセス要求がライト要求であれば（Ｓ１００：ライト）、メモリコントローラ１５６へライト要求をし、データのライトを実行する（Ｓ１１２、Ｓ１１４）。
【００４９】
一方、プロセッサからのアクセス要求がリード要求である場合（Ｓ１００：リード）には、メモリアクセス制御部２２０は、リード要求がされたデータのアドレスがプロセッサ１１０またはプロセッサ１２０のキャッシュアドレスであるか否かを判断し、キャッシュアドレスではなければ（Ｓ１２０：Ｎｏ）、メモリコントローラ１５６へリード要求をし、メモリコントローラ１５６によりリードが実行される（Ｓ９２、Ｓ９４、Ｓ９６）。一方、リード要求がされたデータのアドレスがキャッシュアドレスである場合には（Ｓ１２０：Ｙｅｓ）、メモリアクセス制御部２２０は、リード要求を保留し、リード要求がされたアドレスをリードアドレス記憶部２３０に格納して整合処理制御部２１０にデータ更新を要求する（Ｓ１３０）。
【００５０】
整合処理制御部２１０は、リード要求されたアドレス（キャッシュアドレス）が、プロセッサ１１０とプロセッサ１２０に対してアドレス範囲記憶部２４０に記憶されたアドレス上限とアドレス下限の範囲内であるか否かを判別する（Ｓ１４０）。リード要求されたアドレスが、アドレス範囲記憶部２４０に記憶されたプロセッサ１１０のアドレス上限と下限の範囲内であれば（Ｓ１５０：Ｙｅｓ）、割込信号線１６０と割込バス１３０を介して割込信号をプロセッサ１１０に出力する（Ｓ１６２）。
【００５１】
プロセッサ１１０がこの割込信号を受信すると、整合処理（その詳細については後述する）を行う。整合処理が完了すると、整合処理制御部２１０にデータ更新完了を示す割込信号を出力する。この間、整合処理制御部２１０はプロセッサ１１０からの割込信号を待ち（Ｓ１６４）、割込信号を受信すると、メモリアクセス制御部２２０にデータ更新が完了したことを通知する。それに応じて、ステップＳ１００において要求されたリードが許可され、ステップＳ９２からの処理が行われる。
【００５２】
ステップＳ１５０において、リード要求されたアドレスが、アドレス範囲記憶部２４０に記憶されたプロセッサ１２０のアドレス上限と下限の範囲内であれば（Ｓ１５０：Ｎｏ、Ｓ１７０：Ｙｅｓ）、整合処理制御部２１０は、割込信号線１６０と割込バス１３０を介して割込信号をプロセッサ１２０に出力し（Ｓ１８２）、プロセッサ１２０からの割込信号を待つ（Ｓ１８４）。そして、整合処理制御部２１０は、プロセッサ１２０から割込信号を受信すると、メモリアクセス制御部２２０にデータ更新が完了したことを通知する。それに応じて、ステップＳ１００において要求されたリードが許可され、ステップＳ９２からの処理が行われる。
【００５３】
ステップＳ１６４またはステップＳ１８４で整合処理制御部２１０がプロセッサからの割込信号を待っている間にプロセッサにより行われる整合処理について説明する。整合処理は、プロセッサに組み込まれた割込ハンドラ（図示せず）により行われる。
【００５４】
通常のプロセッサでは、共有メモリへのアクセスとしてキャッシュ経由のメモリアクセスとメモリへのダイレクトアクセスの両方がサポートされている。キャッシュ経由の場合は、プロセッサのキャッシュコントローラがライトスルー方式で動作するか、ライトバック方式で動作するかによって処理は異なる。  ライトスルー方式は、ＣＰＵがメモリ書込を行ったら、データキャッシュにストアすると同時に共有メモリに書き戻す方式である。この方式の場合、ライト・トランザクション・バッファが空であれば、データキャッシュの内容と共有メモリの対応する領域の内容が一致する。
【００５５】
ライトバック方式は、ＣＰＵがメモリ書込を行っても、条件が整わない限りデータキャッシュに留まり共有メモリへの書き戻しをしない方式である。書き戻す条件は、例えば対象エントリにウェイ数以上のフレームアドレスのリード／ライトが行われる、他のプロセッサが対象エントリに対して更新要求があったなどである。この方式の場合、データキャッシュの内容と共有メモリの対応する領域の内容を一致させるためにはデータキャッシュに残っているデータを共有メモリへの書戻を行う必要があり、その後ライト・トランザクション・バッファが空になったことをもって書戻の完了を確認できる。
【００５６】
プロセッサ１１０を例にする。ライトスルー方式の場合、ＷＴＢ１１５が空になっているか否かの確認方法は、さらにメモリマネージャ２００の仕様によって異なる。例えば、メモリマネージャ２００は、ＷＴＢ１１５が空にならないとリード要求を受け付けない仕様になっている場合、プロセッサ１１０はリードアドレス記憶部２３０に記憶されたリードアドレスを一度リードし、このリードができたことをもってＷＴＢ１１５が空になっているすなわちコヒーレンシが保証されたことを確認できる。この場合の整合処理のフローチャートを図５に示す。
【００５７】
図５に示すように、プロセッサ１１０は、整合処理制御部２１０から割込信号を受信すると、リードアドレス記憶部２３０に格納されたリードアドレスをリードする（Ｓ２１０）。このリードがメモリマネージャ２００により受け付けられ、リードができたことを条件に（Ｓ２１２：Ｙｅｓ）、プロセッサ１１０は、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部２１０に出力する（Ｓ２１４）。
【００５８】
メモリマネージャ２００は、ＷＴＢ１１５の状態とは無関係にリード要求を受け付ける場合には、プロセッサ１１０は共有メモリ１５８から直接リード（非キャッシュアドレスのリード）をすることにより整合処理を行う。この場合の処理のフローチャートを図６に示す。
【００５９】
図６に示すように、プロセッサ１１０は、整合処理制御部２１０から割込信号を受信すると、リードアドレス記憶部２３０に格納されたリードアドレスをリードして（Ｓ２２０）、非キャッシュアドレスに変換する（Ｓ２２２）。そして、この非キャッシュアドレスをリードし、リードができたことを条件に（Ｓ２２４、Ｓ２２６：Ｙｅｓ）、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部２１０に出力する（Ｓ２２８）。
【００６０】
図７は、ライトバック方式の場合の整合処理の流れを示すフローチャートである。図示のように、プロセッサ１１０は、整合処理制御部２１０から割込信号を受信すると、リードアドレス記憶部２３０に格納されたリードアドレスをリードする（Ｓ２３０）。そして、キャッシュコントローラ１１３に対して、このリードアドレスのデータをデータキャッシュ１１６から共有メモリ１５８にライトバックすることを命令する（Ｓ２３２）。その後、ＷＴＢ１１５は空になったことを確認できたことを条件に（Ｓ２３４：Ｙｅｓ）、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部２１０に出力する（Ｓ２３６）。なお、ＷＴＢ１１５が空であるか否かの確認（ステップＳ２３４）は、ライトスルー方式の場合と同じようにメモリマネージャ２００の仕様に依存し、ここで詳細な説明を省略する。
【００６１】
プロセッサ１１０がキャッシュ経由で管理するアドレスに対して、プロセッサ１２０がリードを行う場合にバス上を流れるデータを説明する。ここで例として、このアドレスがアドレス範囲記憶部２４０に記憶された、プロセッサ１１０のアドレス上限とアドレス下限の範囲内にあるアドレス（Ｚ）とする。
【００６２】
図８に示すように、プロセッサ１２０は、アドレス（Ｚ）のデータをリードするのに当たり、まずメモリマネージャ２００にリード要求を出す。この場合、メモリバス１４０上を、アドレス（Ｚ）が流れる。
【００６３】
メモリマネージャ２００具体的にはメモリアクセス制御部２２０は、プロセッサ１２０からリード要求されたアドレス（Ｚ）をリードアドレス記憶部２３０に書くと共に、整合処理制御部２１０にデータの更新を要求する。
【００６４】
整合処理制御部２１０は、プロセッサ１１０にデータ更新を要求する割込信号を出力する。このとき、割込バス１３０上を割込信号が流れる。
【００６５】
プロセッサ１１０は、整合処理制御部２１０からの割込信号を受信すると、整合処理を行うためにリードアドレス記憶部２３０に記憶された共有メモリ１５８のリードアドレスのリードをメモリアクセス制御部２２０に要求する。このとき、メモリバス１４０上を、リードアドレス記憶部２３０のアドレスと、プロセッサ１１０がライトすべきアドレス（アドレス（Ｚ））が流れる。
【００６６】
そして、プロセッサ１１０は、キャッシュコヒーレンシを保証するために共有メモリ１５８上のアドレス（Ｚ）にデータを書くことをメモリアクセス制御部２２０に要求し、アドレス（Ｚ）にデータを書く。メモリバス１４０上を、アドレス（Ｚ）と、ライトされるデータが流れる。
【００６７】
次にプロセッサ１１０は、データがアドレス（Ｚ）に書かれたことを確認するためにアドレス（Ｚ）のリード要求をメモリアクセス制御部２２０に対して行う。このとき、メモリバス１４０上をアドレス（Ｚ）と、リードしたデータが流れる。
【００６８】
データがアドレス（Ｚ）に書かれたことを確認できれば、プロセッサ１１０は、整合処理制御部２１０に割込信号を出力し、データ更新が完了したことを通知する。このとき、割込バス１３０上を割込信号が流れる。
【００６９】
整合処理制御部２１０はプロセッサ１１０からの割込信号に応じて、メモリアクセス制御部２２０にデータ更新が完了したことを通知する。
【００７０】
そして、メモリアクセス制御部２２０は、プロセッサ１２０からのリード要求を許可する。このとき、メモリバス１４０上を、プロセッサ１２０からのリード要求に対してリードしたデータが流れる。
【００７１】
このように、本実施の形態のマルチプロセッサシステム１００によれば、各プロセッサのアドレスに対して、キャッシュアドレスと非キャッシュアドレス、キャッシュアドレスに対してはさらにキャッシュコヒーレンシを保証する必要のあるアドレスと必要の無いアドレスに分け、キャッシュコヒーレンシを保証する必要のあるアドレスからのリード要求に対してのみ、該当プロセッサに整合処理を行わせる。そのため、図１５と図８を比較すると明らかなように、キャッシュコヒーレンシを保証するための処理が簡潔になり、メモリバス上を流れるデータ量が少なく、システム全体の処理効率を向上させることができる。
【００７２】
また、図１２に示すようなシステムでは、プロセッサ間のプロトコルが確立された後に図１５に示すような一連の手順でプロセッサ間で通信を交わす必要がある。そのため、システムの開発者は、キャッシュコントローラの挙動、ライト・トランザクション・バッファの挙動、メモリバスの挙動について熟知していなければ、開発が困難である。それに対して、本実施の形態のマルチプロセッサシステム１００では、通信プロトコルが確立された後に、プロセッサ間の通信に頼らず、プロセッサとメモリマネージャ２００間の割込によってキャッシュコヒーレンシを保証するための処理を実現しているので、ソフトウェアの構成が単純で、開発者の負担が小さい。
【００７３】
＜第２の実施の形態＞
図９は、本発明の第２の実施の形態のマルチプロセッサシステム３００を示す。マルチプロセッサシステム３００は、メモリマネージャ４００の機能がマルチプロセッサシステム１００のメモリマネージャ２００の機能と異なる点、および信号線１７０と信号線１８０が追加された点を除き、他の各部分が同じであり、マルチプロセッサシステム１００と同様の構成または機能を有する部分に対して図９において同一の符号を付与し、それらの詳細な説明を省略する。
【００７４】
信号線１７０は、プロセッサ１１０のキャッシュコントローラ１１３の動作モード（ライトスルーかライトバック）、およびＷＴＢ１１５の状態（空かどうか）をメモリマネージャ４００に通知するために設けられたものであり、信号線１８０は、プロセッサ１２０のキャッシュコントローラ１２３の動作モード、およびＷＴＢ１２５の状態をメモリマネージャ４００に通知するために設けられたものである。図１０は、例えば信号線１７０上を流れる信号を示す。図示のように、キャッシュコントローラ１１３がライトバックモードで動作するときに、ＷＴＢ１１５の状態と関係なく信号線１７０上を流れる信号が常に「Ｈｉｇｈ」である。一方、キャッシュコントローラ１１３がライトスルーで動作するときに、ＷＴＢ１１５が「空」であれば信号が「ＬＯＷ」であり、ＷＴＢ１１５が「空」ではなければ「Ｈｉｇｈ」である。信号線１８０に関しても同じである。
【００７５】
メモリマネージャ４００は、マルチプロセッサシステム１００におけるメモリマネージャ２００と基本的に同じ動作をするが、信号線を流れる信号が「Ｈｉｇｈ」である場合においてのみ対応するプロセッサに整合処理を行わせる。具体的には、信号線１７０を流れる信号が「Ｌｏｗ」であれば、図４のフローチャートのステップＳ１５０において、リードアドレスがプロセッサ１１０のアドレス範囲内であっても（Ｓ１５０：Ｙｅｓ）、キャッシュのコヒーレンシが保証されているとして、プロセッサ１１０へ割込信号を出力せず、直接ステップＳ９２の処理へ進む。同様に、信号線１８０を流れる信号が「Ｌｏｗ」であれば、図４のフローチャートのステップＳ１７０において、リードアドレスがプロセッサ１２０のアドレス範囲内であっても（Ｓ１７０：Ｙｅｓ）、キャッシュのコヒーレンシが保証されているとして、プロセッサ１２０へ割込信号を出力せず、直接ステップＳ９２の処理へ進む。
【００７６】
このような構成によって、リード要求されたアドレスが整合処理を必要とする場合であっても、該当信号線を流れる信号が「Ｌｏｗ」であれば、既にキャッシュコヒーレンシが保証されていることになるので、メモリマネージャ４００はプロセッサに整合処理を実行させずに済む。そのため、システムのパフォーマンスがさらに向上する。
【００７７】
＜第３の実施の形態＞
本発明の第３の実施の形態もマルチプロセッサシステムであり、このマルチプロセッサシステムでは、メモリマネージャがマルチプロセッサシステム１００におけるメモリマネージャ２００と異なる点を除き、他の各部分が同じであるため、ここでマルチプロセッサシステム１００と同様の構成または機能を有する部分について図示および説明を省略する。
【００７８】
図１１は、本発明の第３の実施の形態にかかるマルチプロセッサシステムにおけるメモリマネージャ５００を示す。メモリマネージャ５００は、整合処理制御部２１０、メモリアクセス制御部５２０、リードアドレス記憶部２３０、アドレス範囲記憶部２４０、割込抑制用データ記憶部５６０を備える。整合処理制御部２１０、リードアドレス記憶部２３０、アドレス範囲記憶部２４０は、マルチプロセッサシステム１００における当該部分と同様なものである。
【００７９】
メモリマネージャ５００は、マルチプロセッサシステム１００におけるメモリマネージャ２００と基本的に同じ動作をするが、リード要求されたアドレスが整合処理を必要とする場合であっても、該当プロセッサへ整合処理を行わせるための割込を抑制する機能を備える。この抑制は、割込抑制用データ記憶部５６０に記憶された割込抑制用データに基づいて行われる。
【００８０】
一般的に、データキャッシュのデータを共有メモリへライトすることはバースト・ライトであり、共有メモリからのデータのリードはシングル・リードである。そのため、整合処理を行う際にプロセッサが共有メモリへライトしたデータの量は、リードされるデータの量より多い。
【００８１】
プロセッサからキャッシュのデータを共有メモリへのライトは、キャッシュライン単位で行われる。キャッシュラインは、キャッシュの１エントリの容量のことであり、ＣＰＵとシステムの仕様によって異なるが、例えば３２ビットのＣＰＵではキャッシュラインが１２８ビットまたは２５６ビットの場合がある。
【００８２】
それに対して、共有メモリからのリードはシングル・リードである。同じキャッシュラインに含まれる異なるデータに対して連続したリードが行われる際に、一度目のリード時に整合処理が行われると、リード要求されたデータのみならず、同じキャッシュラインのデータが更新されているので、その後の所定時間内にはキャッシュコヒーレンシが保証された状態になる。
【００８３】
メモリマネージャ５００は、このような事情に基づいてプロセッサへの割込を抑制する。
【００８４】
割込抑制用データ記憶部５６０は例えばＩ／Ｏレジスタであり、図１１に示すように、各プロセッサのキャッシュタグサイズ、割込抑制カウンタ、リードアドレス履歴が記憶されている。キャッシュタグサイズと割込抑制カウンタは、いずれかのプロセッサにより予め設定されるものであり、リードアドレス履歴は、処理の進行に伴ってメモリマネージャ５００により更新される。
【００８５】
割込抑制カウンタは、一度の整合処理後に、キャッシュ中のデータと共有メモリ中のデータのキャッシュコヒーレンシが保たれている時間範囲内のバスクロック数である。以下、割込抑制カウンタの値をｎとする。
【００８６】
メモリマネージャ５００は、リード要求があり、このリード要求に応じて該当プロセッサによる整合処理が実行された場合に、このリードアドレスをリードアドレス履歴として記憶する。同じキャッシュタグが同じキャッシュラインを示すので、メモリマネージャ５００はその後、割込抑制用カウンタｎ以内に、このリードアドレスと同じキャッシュタグを有するリードアドレスへのリード要求があった際に、当該プロセッサへの割込を抑制し、整合処理を行わせない。
【００８７】
このような構成によって、マルチプロセッサシステム１００と同じ効果を得ることができるとともに、キャッシュコヒーレンシを保証しつつ、プロセッサへの割込およびそれに応じてプロセッサが行う整合処理が格段に減り、システム全体のパフォーマンスがさらに向上する。
【００８８】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１の実施の形態にかかるマルチプロセッサシステムを示す図である。
【図２】図１に示すマルチプロセッサシステムにおけるメモリマネージャを詳細に示す図である。
【図３】図２に示すメモリマネージャにおけるアドレス範囲記憶部の記憶内容を示す図である。
【図４】図１に示すマルチプロセッサシステムにおける共有メモリへのアクセスに伴う処理を示すフローチャートである。
【図５】ライトスルー方式で動作するプロセッサの整合処理を示すフローチャートである（その１）。
【図６】ライトスルー方式で動作するプロセッサの整合処理を示すフローチャートである（その２）。
【図７】ライトバック方式で動作するプロセッサの整合処理を示すフローチャートである。
【図８】図１に示すマルチプロセッサシステムにおいてプロセッサによるリードに伴う処理の詳細内容を示す図である。
【図９】本発明の第２の実施の形態にかかるマルチプロセッサシステムを示す図である。
【図１０】図９に示すマルチプロセッサシステムにおけるメモリマネージャの動作を説明するための図である。
【図１１】本発明の第３の実施の形態にかかるマルチプロセッサシステムにおけるメモリマネージャを詳細に示す図である。
【図１２】共有記憶型のマルチプロセッサシステムの一例を示す図である。
【図１３】図１２に示すマルチプロセッサシステムにおけるリード処理の流れを示すフローチャートである。
【図１４】図１２に示すマルチプロセッサシステムにおけるリード処理を説明するための図である。
【図１５】図１２に示すマルチプロセッサシステムにおけるリード処理の詳細内容を示す図である。
【符号の説明】
【００９０】
Ａ  プロセッサ  Ｂ  プロセッサ
１１  演算ユニット  １２  ＭＭＵ
１３  キャッシュコントローラ  １４  ＢＩＵ
１５  ＷＴＢ  １６  データキャッシュ
１７  割込コントローラ  ２１  演算ユニット
２２  ＭＭＵ  ２３  キャッシュコントローラ
２４  ＢＩＵ  ２５  ＷＴＢ
２６  データキャッシュ  ２７  割込コントローラ
３０  割込バス  ４０  メモリバス
５２  割込マネージャ  ５４  メモリマネージャ
５６  メモリコントローラ  ５８  共有メモリ
６１  コマンド記憶領域  ６２  リードアドレス記憶領域
６３  データ記憶領域  １００  マルチプロセッサシステム
１１０  プロセッサ  １１１  演算ユニット
１１２  ＭＭＵ  １１３  キャッシュコントローラ
１１４  ＢＩＵ  １１５  ＷＴＢ
１１６  データキャッシュ  １１７  割込コントローラ
１２０  プロセッサ  １２１  演算ユニット
１２２  ＭＭＵ  １２３  キャッシュコントローラ
１２４  ＢＩＵ  １２５  ＷＴＢ
１２６  データキャッシュ  １２７  割込コントローラ
１３０  割込バス  １４０  メモリバス
１５２  割込マネージャ  １５６  メモリコントローラ
１５８  共有メモリ  １６０  割込信号線
１７０  信号線  １８０  信号線
２００  メモリマネージャ  ２１０  整合処理制御部
２２０  メモリアクセス制御部  ２３０  リードアドレス記憶部
２４０  アドレス範囲記憶部  ３００  マルチプロセッサシステム
４００  メモリマネージャ  ５００  メモリマネージャ
５１０  整合処理制御部  ５２０  メモリアクセス制御部
５６０  割込抑制用データ記憶部
【図１】
2008176612.tif 000003
【図２】
2008176612.tif 000004
【図３】
2008176612.tif 000005
【図４】
2008176612.tif 000006
【図５】
2008176612.tif 000007
【図６】
2008176612.tif 000008
【図７】
2008176612.tif 000009
【図８】
2008176612.tif 000010
【図９】
2008176612.tif 000011
【図１０】
2008176612.tif 000012
【図１１】
2008176612.tif 000013
【図１２】
2008176612.tif 000014
【図１３】
2008176612.tif 000015
【図１４】
2008176612.tif 000016
【図１５】
2008176612.tif 000017