(57)【特許請求の範囲】
【請求項１】
データを保持するバッファと、各々がデータを一時的に保持するキャッシュメモリを有する複数のプロセッサを搭載したシステムモジュールが複数台、クロスバモジュールを介して接続された構成のマルチプロセッサシステムにおけるメモリアクセス方法であって、
前記クロスバモジュールは先読みされたデータを保持するためのバッファを有し、
任意の１台のシステムモジュール内のプロセッサからのリード要求に応答して、該任意の１台のシステムモジュール以外のシステムモジュールから先読みされたデータを、前記クロスバモジュール内のバッファに保持するステップを含む、メモリアクセス方法。
【請求項２】
前記任意の１台のシステムモジュール内の１又は複数のプロセッサが実行するプログラムに応じて、任意のシステムモジュールに対するデータの先読みの要否を設定するステップを更に含む、請求項１記載のメモリアクセス方法。
【請求項３】
前記先読みされたデータのデータ転送に、通常のデータ転送より低い優先度を付加するステップを更に含む、請求項１又は２記載のメモリアクセス方法。
【請求項４】
複数台のシステムモジュールと、
少なくとも１台のクロスバモジュールと、
該システムモジュールと該クロスバモジュールとを接続するバスとを備え、
各システムモジュールは、データを保持するバッファと、各々がデータを一時的に保持するキャッシュメモリを有する複数のプロセッサと、システムモジュールに対するデータの入出力を制御する制御部とを有し、
該システムモジュール間のデータ転送は、該クロスバモジュールを介して行われ、
前記クロスバモジュールは、任意の１台のシステムモジュール内のプロセッサからのリード要求に応答して、該任意の１台のシステムモジュール以外のシステムモジュールから先読みされたデータを保持するためのバッファを有する、マルチプロセッサシステム。
【請求項５】
前記任意の１台のシステムモジュールは、このシステムモジュール内の１又は複数のプロセッサが実行するプログラムに応じて、任意のシステムモジュールに対するデータの先読みの要否を設定する手段を更に有する、請求項４記載のマルチプロセッサシステム。
【請求項６】
前記システムモジュールは、各々前記先読みされたデータのデータ転送に、通常のデータ転送より優先度の低い優先度を付加する手段を更に有する、請求項４又は５記載のマルチプロセッサシステム。
【請求項７】
前記リード要求の要求アドレスのメモリを持つシステムモジュールは、このシステムモジュール内のキャッシュメモリの状態を知るより早いタイミングでデータの先読みを開始する手段を有する、請求項４〜６のいずれか１項記載のマルチプロセッサシステム。
【請求項８】
前記複数のシステムモジュールと、前記クロスバモジュールと、前記バスとはノードを構成し、
複数のノードが該クロスバモジュールを介して接続されている、請求項４〜７のいずれか１項記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリアクセス方法及びマルチプロセッサシステムに係り、特に複数のプロセッサを搭載したシステムモジュールが複数、クロスバモジュールを介して接続された構成のマルチプロセッサシステムにおけるメモリアクセス方法、及び、このような構成のマルチプロセッサシステムに関する。
【０００２】
【従来の技術】
従来のプロセッサシステムでは、１つのプロセッサからリード要求が出されると、このプロセッサのキャッシュメモリへのアクセスと同時に、メインメモリへデータの先読みアクセスを始める。キャッシュメモリへのアクセスがミスヒットすると、先読みアクセスによりメインメモリからバッファへ読み出しておいたデータを使用することで、メモリアクセス時間の短縮を図るようにしている。
【０００３】
従来のマルチプロセッサシステムでは、上記の如きプロセッサシステムが複数、バスを介して接続されている。従って、プロセッサのキャッシュメモリからデータを読み出す場合、バスを介して行われることが多い。
【０００４】
【発明が解決しようとする課題】
マルチプロセッサシステムが大規模化するにつれて、データ転送の経路が非常に長くなり、従来のプロセッサシステムにおけるデータの先読みを単に適用したのでは、通常のデータ転送が妨害されたり、データの先読みによりバスが占有されて、マルチプロセッサシステム全体としての性能が低下してしまうという問題があった。
【０００５】
又、先読みされたデータが保持されているバッファが、リード要求を行ったプロセッサから離れた場所にある場合には、先読みされたデータをリード要求を行ったプロセッサに転送するのに時間がかかり、先読みの本来のメリットが生かせないという問題もあった。
そこで、本発明は、リード要求を行ったプロセッサにできるだけ近い場所に先読みされたデータを保持して、通常のデータ転送を妨害することなく、先読みの本来のメリットを生かすことができ、マルチプロセッサシステム全体としての性能を向上可能なメモリアクセス方法及びマルチプロセッサシステムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記の課題は、請求項１記載の、データを保持するバッファと、各々がデータを一時的に保持するキャッシュメモリを有する複数のプロセッサを搭載したシステムモジュールが複数台、クロスバモジュールを介して接続された構成のマルチプロセッサシステムにおけるメモリアクセス方法であって、前記クロスバモジュールは先読みされたデータを保持するためのバッファを有し、任意の１台のシステムモジュール内のプロセッサからのリード要求に応答して、該任意の１台のシステムモジュール以外のシステムモジュールから先読みされたデータを、前記クロスバモジュール内のバッファに保持するステップを含むメモリアクセス方法により達成できる。
【０００７】
メモリアクセス方法は、請求項２記載の発明の如く、前記任意の１台のシステムモジュール内の１又は複数のプロセッサが実行するプログラムに応じて、任意のシステムモジュールに対するデータの先読みの要否を設定するステップを更に含んでも良い。つまり、データの先読みのっ要否は、プロセッサ毎に設定することも可能であり、１つのシステムモジュール内の全てでない複数のプロセッサに対して設定することも可能である。
【０００８】
メモリアクセス方法は、請求項３記載の発明の如く、前記先読みされたデータのデータ転送に、通常のデータ転送より低い優先度を付加するステップを更に含んでも良い。
上記の課題は、請求項４記載の、複数台のシステムモジュールと、少なくとも１台のクロスバモジュールと、該システムモジュールと該クロスバモジュールとを接続するバスとを備え、各システムモジュールは、データを保持するバッファと、各々がデータを一時的に保持するキャッシュメモリを有する複数のプロセッサと、システムモジュールに対するデータの入出力を制御する制御部とを有し、該システムモジュール間のデータ転送は、該クロスバモジュールを介して行われ、前記クロスバモジュールは、任意の１台のシステムモジュール内のプロセッサからのリード要求に応答して、該任意の１台のシステムモジュール以外のシステムモジュールから先読みされたデータを保持するためのバッファを有するマルチプロセッサシステムによっても達成できる。
【０００９】
請求項５記載の発明の如く、前記任意の１台のシステムモジュールは、このシステムモジュール内の１又は複数のプロセッサが実行するプログラムに応じて、任意のシステムモジュールに対するデータの先読みの要否を設定する手段を更に有する構成であっても良い。
請求項６記載の発明の如く、前記システムモジュールは、各々前記先読みされたデータのデータ転送に、通常のデータ転送より優先度の低い優先度を付加する手段を更に有する構成であっても良い。
【００１０】
請求項７記載の発明の如く、前記リード要求の要求アドレスのメモリを持つシステムモジュールは、このシステムモジュール内のキャッシュメモリの状態を知るより早いタイミングでデータの先読みを開始する手段を有する構成であっても良い。
請求項８記載の発明の如く、前記複数のシステムモジュールと、前記クロスバモジュールと、前記バスとはノードを構成し、マルチプロセッサシステムは、複数のノードが該クロスバモジュールを介して接続されている構成であっても良い。
【００１１】
従って、本発明によれば、リード要求を行ったプロセッサにできるだけ近い場所に先読みされたデータを保持して、通常のデータ転送を妨害することなく、先読みの本来のメリットを生かすことができ、マルチプロセッサシステム全体としての性能を向上可能となる。
【００１２】
【発明の実施の形態】
以下、本発明になるメモリアクセス方法及び本発明になるマルチプロセッサシステムの各実施例を、図面と共に説明する。
【００１３】
【実施例】
図１は、本発明になるマルチプロセッサシステムの第１実施例を示すブロック図である。マルチプロセッサシステムの第１実施例では、本発明になるメモリアクセス方法の第１実施例を採用する。
図１において、マルチプロセッサシステムは、大略複数のシステムモジュール（以下、システムボード（ＳＢ）と言う）１−１〜１−Ｎと、クロスバモジュール（以下、クロスバボード（ＸＢ）と言う）２と、これらを接続するバス３とからなる。ＳＢ１−１〜１−Ｎは、夫々同じ構成を有し、Ｎは２以上の整数である。又、説明の便宜上、各ＳＢ１−１〜１−Ｎは２つのプロセッサを有するものとするが、３つ以上のプロセッサを有しても良い。
【００１４】
各ＳＢ１−１〜１−Ｎは、キャッシュメモリ１１ａを含むＣＰＵ等からなるプロセッサ１１、キャッシュメモリ１２ａを含むプロセッサ１２、キャッシュメモリ１１のタグ１３、キャッシュメモリ１２のタグ１４、全体制御回路１５、メインメモリ１６、メモリアクセス制御装置１７、データ入出力制御装置１８、キャッシュ情報制御装置１９、バス調停装置２０及びデータ格納バッファ２１を有する。
【００１５】
又、ＸＢ２は、データ転送装置３１、アドレス広報装置３２及びキャッシュ情報広報装置３３を有する。データ転送装置３１は、データ格納バッファ３４とバス調停装置３５を有する。ＸＢ２は、各ＳＢ１−１〜１−Ｎから送られてくる情報を選択、若しくは、マージして、バス３を介して各ＳＢ１−１〜１−Ｎに送り返す機能を有する。
【００１６】
通常のリード処理の手順は、次の通りである。即ち、▲１▼あるＳＢから発行されるリード要求は、ＸＢ２によりバス３を介して各ＳＢ１−１〜１−Ｎに供給され、▲２▼全てのＳＢ１−１〜１−Ｎがキャッシュメモリの状態を示すキャッシュ情報をＸＢ２へ供給し、▲３▼ＸＢ２が選択、若しくは、マージされたキャッシュ情報を各ＳＢ１−１〜１−Ｎに供給し、▲４▼どのＳＢ１−１〜１−Ｎのキャッシュメモリにも有効なデータが無い、即ち、メインメモリ１６にある情報が最新の時は、対象アドレスのメモリを持つＳＢがメインメモリ１６へのアクセスを開始し、データを転送する。
【００１７】
尚、各ＳＢ１−１〜１−Ｎにおいて、プロセッサ１１，１２、メインメモリ１６等を除く回路部分は、１又は複数の大規模集積回路（ＬＳＩ）により構成しても良い。
次に、本実施例の動作を説明する。ＳＢ１−１内のプロセッサ１１においてミスヒットが発生すると、プロセッサ１１はリード要求をＳＢ１−１内の全体制御回路１５に発行する。これに応答して、全体制御回路１５は、バス３を介してリード要求を全てのＳＢ１−１〜１−Ｎに対して転送する。
【００１８】
リード要求が転送された各ＳＢ１−１〜１−Ｎ内では、リード要求がキャッシュ情報制御装置１９を介して全体制御回路１５に供給される。つまり、リード要求は、要求元を含む全てのＳＢ１−１〜１−Ｎに転送される。キャッシュ情報制御装置１９は、各々のキャッシュメモリ１１ａ，１２ａのタグ１３，１４を調べて、タグ情報をバス３を介してＸＢ２内のキャッシュ情報広報装置３３に出力する。又、全体制御回路１５は、リード要求により要求されているアドレス（要求アドレス）が、全体制御回路１５が属するＳＢ内のアドレスであるか否かを判定し、このＳＢ内のアドレスであればメモリアクセス制御装置１７がメインメモリ１６のアクセスを起動する。
【００１９】
説明の便宜上、図１は、ＳＢ１−２が、ＳＢ１−１内のプロセッサ１１のリード要求により要求されているアドレスのメモリを持っている場合を示すものとする。従って、リード要求を受け取ったＳＢ１−２内では、全体制御回路１５が、要求アドレスのメモリがＳＢ１−２内のメインメモリ１６であることを判定すると共に、キャッシュ情報制御装置１９は、各々のキャッシュメモリ１１ａ，１２ａのタグ１３，１４を調べて、タグ情報をバス３を介してＸＢ２内のキャッシュ情報広報装置３３に出力する。この時、全体制御回路１５は、各々のキャッシュメモリ１１ａ，１２ａのタグ情報をキャッシュ情報制御装置１９から知らされる前に、メモリアクセス制御装置１７を起動し、メモリアクセス制御装置１７は先読みによるメインメモリ１６のアクセスの起動を試みる。
【００２０】
又、ＳＢ１−２内では、メモリアクセス制御装置１７がデータ入出力制御装置１８を起動し、データ入出力制御装置１８はデータ保持バッファ２１の準備をする。これにより、リード要求の要求アドレスのデータが、メインメモリ１６からデータ保持バッファ２１に転送される。尚、メインメモリ１６が他からのアクセスにより起動できない場合には、メモリアクセス制御装置１７は、起動が可能となるまでメインメモリ１６へのアクセスを続ける。
【００２１】
更に、ＳＢ１−２内の全体制御回路１５は、各々のキャッシュメモリ１１ａ，１２ａのタグ情報をキャッシュ情報制御装置１９から知らされると、メモリアクセス制御装置１７の先読みアクセスを中断し、タグ情報を調査、即ち、解析する。全体制御回路１５は、ＳＢ１−２内の全てのキャッシュメモリ１１ａ，１２ａに要求アドレスがない場合にのみ、メモリアクセス制御装置１７を再び起動し、メモリアクセス制御装置１７はメインメモリ１６へのアクセスを再開する。
【００２２】
ＳＢ１−２内で、メインメモリ１６からデータ保持バッファ２１に転送されたデータは、以下のようにして、最終的にはリード要求を発行したプロセッサ１１が属するＳＢ１−１内のデータ保持バッファ２１に転送される。
具体的には、ＳＢ１−２内において、バス調停装置２０は、通常のデータ転送のためのバス３の使用を妨げないように、データ保持バッファ２１内に保持された、先読みアクセスにより読み出されたデータの優先度を通常のデータ転送の優先度より下げて、バス３の調停（アービトレーション）を行う。バス調停装置２０が行うバス３の調停では、バス調停装置２０が属するＳＢ内のどのプロセッサからの要求を出力するかを決定する。バス調停装置２０がバス３の使用権を獲得すると、先読みデータをＸＢ２のデータ転送装置３１内のデータ保持バッファ３４へ出力する。先読みデータは、ＸＢ２のデータ保持バッファ３４に一旦保持され、バス調停装置３５は、通常のデータ転送のためのバス３の使用を妨げないように、データ保持バッファ３４内に保持された先読みデータの優先度を通常のデータ転送の優先度より下げて、バス３の調停を行う。バス調停装置３５が行うバス３の調停では、各ＳＢ１−１〜１−ＮからＸＢ２に供給されるどの要求を選択するかを決定する。バス調停装置３５がバス３の使用権を獲得すると、先読みデータを、リード要求を発行したプロセッサ１１が属するＳＢ１−１内のデータ保持バッファ２１へ出力する。これにより、先読みデータは、ＳＢ１−１内のデータ保持バッファ２１に一旦保持される。
【００２３】
先読みデータには、例えばデータが先読みデータであることを示す先読みデータフラグを付加しておくことで、バス調停装置２０，３５においてデータ転送の優先度を下げるか否かを判断できる。
各ＳＢ１−１〜１−Ｎから出力されるキャッシュメモリ１１ａ，１２ａに関するキャッシュ情報は、ＸＢ２内のキャッシュ情報広報装置３３によりひとまとめにされ、各ＳＢ１−１〜１−Ｎに全キャッシュ情報が転送される。全キャッシュ情報に基づいて、先読みが失敗したと判断された時点で、各データ保持バッファ２１，３４内の先読みデータは破棄される。又、先読みが成功したと判断された時点で、先読みデータは正式なデータとみなされ、優先度は通常のデータ転送と同じ優先度に上げられて、処理が続けられる。
【００２４】
全キャッシュ情報の判断と判断結果の通知は、各ＳＢ１−１〜１−Ｎ及びＸＢ２毎に行っても、１つのＳＢ又はＸＢ２がまとめて行っても良い。ＸＢ２が全キャッシュ情報の判断と判断結果の通知を行う場合には、キャッシュ情報広報装置３３がＸＢ２内で全キャッシュ情報を広報するか、或いは、各ＳＢ１−１〜１−Ｎ側からＸＢ２内のデータ保持バッファ３４に制御信号を出力するようにすることもできる。
【００２５】
これにより、より早いタイミングでの先読みの開始と、通常のデータ転送のためのバス３の使用を妨げない先読みデータの転送、及び先読み成功時のプロセッサへの先読みデータの素早い取り込みが可能となり、マルチプロセッサシステムにおいて先読みの本来のメリットを十分生かすことが可能となる。
次に、データの先読みを行うか否かの設定について、図２と共に説明する。本実施例では、データの先読みを行うか否かの設定は、例えば各プロセッサ１１，１２内のレジスタに先読みの要否を設定することで行われる。このレジスタの設定は、オペレーティングシステム（ＯＳ）が各プロセッサ１１，１２で実行するべきプログラムを判断して、プログラムに応じて設定する。尚、設定するレジスタは、プロセッサ内に設けられている必要はなく、プロセッサと１：１で設けられたＳＢ内のレジスタであれば良い。更に、先読みの要否をプロセッサ毎に設定するのではなく、全てのプロセッサに対して同じ設定とする場合には、プロセッサ毎にレジスタを設ける必要がないことは、言うまでもない。
【００２６】
つまり、ＯＳは、どのプログラムをどのＳＢ１−１〜１−Ｎ内のどのプロセッサ１１，１２に実行させるかを決定する。そこで、ＯＳがプログラムを実行するべきプロセッサ１１，１２を決定する際に、上記レジスタの設定を行う。
図２の上部に示すように、あるデータ群を使用するプログラムＡが、あるＳＢ内の１つのプロセッサ１１でのみ実行され、同じＳＢ内の他のプロセッサ１２及び他のＳＢ内の全てのプロセッサ１１，１２はスリープ状態又はプログラムＡとは全く関係のないプログラムを実行している。従って、このような場合には、プログラムＡで使用するデータが、同じＳＢ内の他のプロセッサ１２や他のＳＢ内の全てのプロセッサ１１，１２内のキャッシュメモリ１１ａ，１２ａにある可能性は非常に低く、データの先読みが成功する確率は非常に高い。そこで、このような場合には、各ＳＢ内の各プロセッサ１１，１２に対応するレジスタに、データの先読みが必要である旨をＯＳにより設定しておけば良い。プロセッサと１：１でレジスタが設けられている場合、プログラムＡが走っているプロセッサに対応するレジスタだけに先読みを設定すれば良い。尚、夫々のレジスタの設定に応じて、先読みを行うか否かの情報が命令に付加される。
【００２７】
他方、図２の下部に示すように、１又は複数のＳＢ内の複数のプロセッサ１１，１２で１つのプログラムＢを実行する場合や、複数のプロセッサ１１，１２でデータベースのデータを共有して使用する場合等には、使用するデータが他のプロセッサ１１，１２内のキャッシュメモリ１１ａ，１２ａにある可能性が高い。そこで、このような場合には、各ＳＢ内の各プロセッサ１１，１２に対応するレジスタに、データの先読みが不要である旨をＯＳにより設定しておけば良い。
【００２８】
上記の如き、プロセッサ１１，１２に対応するレジスタの設定に応じて、先読みデータの転送と通常のデータ転送とを区別して、先読みデータの優先度の方を低く設定する。例えば、データの先読みが設定されたプロセッサから発行されるリード要求に対しては、「先読みが必要」であることを示す情報を付加しておく。メモリアクセスの際には、この情報に基づいて、データ先読みの優先度を通常のメモリアクセスの優先度より下げてデータ転送を行うことができる。又、先読みデータにも同様の情報を付加しておくことで、先読みデータの優先度を通常のデータ転送の優先度より下げてデータ転送を行うことができる。従って、バス調停装置２０，３５は、要求やデータに付加された情報に基づいて、バス３の使用権を決定することができる。尚、先読みの要否を示す情報は、例えば先読みフラグ等の形で要求やデータに付加することができる。
【００２９】
図３は、本実施例の動作タイミングを説明するための図である。同図中、（Ｍ）はリード要求を行ったＳＢ１−１、（Ｓ）は要求されたアドレスのメモリを持つＳＢ１−２、（全）は全てのＳＢ１−１〜１−Ｎ、ＡＣはＸＢ２のアドレス広報装置３２、ＣＣはＸＢ２のキャッシュ情報広報装置３３、ＤＣはＸＢ２のデータ転送装置３１を示す。同図からもわかるように、データ先読み実行時と、データ先読みを実行しない時との差は、Ｔとなる。
【００３０】
ところで、ＸＢ２のアドレス広報装置３２からアドレスが広報されて各ＳＢ１−１〜１−Ｎに到着したタイミングでメモリリードを開始するモードと、各ＳＢ１−１〜１−Ｎ内のキャッシュ状態を読み出して確認した後にメモリリードを開始するモードとで、別々なレジスタ、即ち、第１のレジスタと第２のレジスタを、各プロセッサ１１，１２に対して設けても良い。
【００３１】
この場合、第１及び第２のレジスタが両方とも有効な設定となっていれば、各ＳＢ１−１〜１−Ｎへのアドレス到着時にデータの先読みアクセスを開始し、開始できるまでにキャッシュ情報が読み出されたならこれを確認した後に、再びメモリアクセスを開始する。アドレス到着時にデータの先読みアクセスを開始できない場合には、開始できるまでメモリアクセスを繰り返し行う。又、キャッシュ情報の確認後に再びメモリアクセスを開始できない場合にも、開始できるまでメモリアクセスを繰り返し行う。
【００３２】
通常は、第１及び第２のレジスタの一方のみを有効に設定することはないが、次のように設定条件を決定しても良い。つまり、第１のレジスタのみが有効に設定されている場合には、データの先読みアクセス開始が成功するまでにキャッシュ情報が読み出されれば、その時点で先読みアクセスを中断する。他方、第２のレジスタのみが有効に設定されている場合には、キャッシュ情報を読み出して確認した後にデータの先読みアクセスを開始する。実際のマルチプロセッサシステムの試験を行って性能を調べることにより、第１及び第２のレジスタをどのように設定するのが、マルチプロセッサシステムの性能を最大限生かすことができるかを知ることができる。
【００３３】
図４は、上記の如き本実施例の動作の概略を示すフローチャートである。同図中、（Ｍ）はリード要求を行ったＳＢ１−１、（Ｓ）は要求されたアドレスのメモリを持つＳＢ１−２、ＸＢはＸＢ２を示す。
図４において、ステップ１００では、ＳＢ（Ｍ）内のプロセッサでミスヒットが発生すると、アドレス、リクエスト等を含むリード要求を発行する。又、全体制御回路１７は、ＳＢ（Ｍ）内の他のプロセッサからの要求があれば、調停を行う。これにより、全体制御回路１７からは、アドレス、リクエスト、要求を発行したプロセッサのＩＤ、先読み要否等を含むリード要求が、ＸＢに対して出力される。
【００３４】
ステップ１０１では、ＸＢがアドレス広報を行い、複数のＳＢからの要求があれば、調停を行う。
ステップ１０２では、各ＳＢにおいて、キャッシュメモリのタグ情報を調査すると共に、リード要求の要求アドレスのメモリを持つＳＢであるか否かを判定し、キャッシュ情報をＸＢへ送る。又、ＳＢ（Ｓ）においては、メインメモリ１６をアクセスして読み出した先読みデータを、データ保持バッファ２１に保持する。データ保持バッファ２１内の先読みデータは、上記ＳＢ（Ｍ）内のリード要求を発行したプロセッサのＩＤである転送先情報、先読みデータフラグ等と共に、ＸＢに転送される。つまり、ステップ１０２は、メインメモリ１６内に要求アドレスがあるか否かを見る処理と、タグ情報を見てキャッシュメモリの状態を知る処理との、２つの処理を行う。この時に、要求アドレスのメモリを持っているものが、ＳＢ（Ｓ）である。
【００３５】
ステップ１０３では、ＸＢがＳＢから送られてきた順にデータをデータ保持バッファ３４に一旦保持し、ＳＢ（Ｍ）に対して出力する。複数のＳＢからデータが同時に送られてくれば、調停を行う。更に、先読みデータの転送の優先度は、通常のデータ転送の優先度より低く設定する。又、ＸＢは、全てのＳＢからのキャッシュ情報を選択、若しくは、マージして、キャッシュ情報の広報を、各ＳＢに対して行う。
【００３６】
ステップ１０４では、先読みが成功すれば、ＸＢからの先読みデータをＳＢ（Ｍ）内のデータ保持バッファ２１に保持し、リード要求を発行したプロセッサによる取り込みを可能とする。
従って、本実施例におけるリード要求に基づくデータの先読みは、次の手順で行われる。
【００３７】
ステップＳ１：  上記マルチプロセッサシステムにおいて、要求アドレスのメモリを持つＳＢは、全キャッシュメモリの状態を示すキャッシュ情報が得られる前にリード、即ち、データの先読みを開始する。
ステップＳ２：  ステップＳ１を行う際、先読みデータは、転送パスの途中で保持する。転送パスの途中とは、後述する如く、リード要求の要求アドレスのメモリを持つＳＢ内のデータ保持バッファ２１、ＸＢ内のデータ保持バッファ３４、又は、リード要求を発行したＳＢ内のデータ保持バッファ２１である。
【００３８】
ステップＳ３：  ＸＢにおいて集めた各ＳＢからのキャッシュ情報に基づき、転送パスの途中で保持された先読みデータが有効であることを確認した後、データ転送を続行する。
ステップＳ４：  要求アドレスを持つＳＢは、このＳＢ内のキャッシュメモリの内容に関わらずデータの先読みを開始するか、或いは、キャッシュメモリの内容を確認した後にデータの先読みを開始する。
【００３９】
ステップＳ５：  データの先読みが開始できない場合には、上記ステップＳ３又はステップＳ４を少なくとも１回繰り返す。尚、ステップＳ３及びステップＳ４は同時に行われないように、フラグを設定しておく。又、上記の如く、データの先読みの要否は、実行するプログラムに応じて、プロセッサに対応するレジスタに設定しておく。
【００４０】
このように、大規模なマルチプロセッサシステムでは、リード要求を発行したプロセッサのできるだけ近くに、このプロセッサが必要とするデータを転送しておくことと、より早いタイミングでデータの先読みを開始することが重要である。そこで、本実施例では、データの転送パスの途中にバッファを設け、通常のデータ転送の妨げとならないように、先読みデータの転送の優先度は通常のデータ転送の優先度より下げてバスの調停を行う。又、先読みデータは、データの転送パス上を順次転送して、徐々にリード要求を発行したプロセッサに近づけて行く。
【００４１】
他方、データの先読み開始のタイミングは、全てのＳＢにアドレスが広報され、このアドレスを受け取った直後のタイミングに設定する。つまり、データの先読み開始のタイミングは、ＳＢ内のキャッシュメモリの状態を示すタグ情報を調べるタイミングと同時とする。これにより、非常に早くデータの先読みを開始できる。又、他からのメモリアクセスの混み具合に応じて、前記タイミングでデータの先読みが開始できない場合には、データの先読み開始を繰り返す。更に、データの先読みが、メモリに受け入れられる前にキャッシュメモリのタグ情報を調べ終わった場合には、タグ情報からＳＢ内のキャッシュメモリにデータがあるか否かの判断を行い、データが無い場合にはデータの先読み開始を繰り返す。
【００４２】
次に、本発明になるマルチプロセッサシステムの第２実施例を説明する。図５は、マルチプロセッサシステムの第２実施例を示すブロック図である。マルチプロセッサシステムの第２実施例では、本発明になるメモリアクセス方法の第２実施例を採用する。
図５において、マルチプロセッサシステムは、複数のノード５０−１〜５０−４からなる。各ノード５０−１〜５０−４は、複数のＳＢ１−１．１−２と、ＸＢ２と、これらを接続するバス３とからなる。ＳＢ１−１．１−２、ＸＢ２及びバス３の構成は、上記第１実施例と同じである。隣接するノードのＸＢ２は、バス４により接続されている。
【００４３】
尚、ノードの数は４に限定されるものではなく、又、各ノード内のＸＢの数も２に限定されるものではない。
本実施例では、１つのノード内においてデータの先読みが行われる場合と、複数のノードにまたがってデータの先読みが行われる場合とがある。前者の場合の動作は、上記第１実施例と同じである。後者の場合の動作は、次の通りである。
【００４４】
つまり、例えばノード５０−１内のＳＢ１−１からリード要求があり、要求アドレスのメモリが隣接するノード５０−２内のＳＢ１−２にある場合には、先読みデータがノード５０−２内のＳＢ１−２から順次ノード５０−２内のＸＢ２及びバス４、要求元のノード５０−１内のＸＢ２を介してノード５０−１内のＳＢ１−１に転送される。従って、本実施例においても、リード要求を行ったプロセッサにできるだけ近い場所で先読みされたデータを保持することができる。
【００４５】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは、言うまでもない。
【００４６】
【発明の効果】
本発明によれば、リード要求を行ったプロセッサにできるだけ近い場所に先読みされたデータを保持して、通常のデータ転送を妨害することなく、先読みの本来のメリットを生かすことができ、マルチプロセッサシステム全体としての性能を向上可能となる。
【図面の簡単な説明】
【図１】本発明になるマルチプロセッサシステムの第１実施例を示すブロック図である。
【図２】データの先読みを行うか否かの設定を説明するための図である。
【図３】第１実施例の動作タイミングを説明するための図である。
【図４】第１実施例の動作の概略を示すフローチャートである。
【図５】本発明になるマルチプロセッサシステムの第２実施例を示すブロック図である。
【符号の説明】
１−１〜１−Ｎ      システムボード（ＳＢ）
２      クロスバボード（ＸＢ）
３，４      バス
１１，１２      プロセッサ
１６      メインメモリ
２１，３４      データ保持バッファ
５０−１〜５０−４      ノード
【図１】
0003764015.tif 000002
【図２】
0003764015.tif 000003
【図３】
0003764015.tif 000004
【図４】
0003764015.tif 000005
【図５】
0003764015.tif 000006