(57)【要約】【課題】本発明の目的は、ＮＵＭＡまたはメモリ・ディレクトリ・ベースのシステムで一般に発生するように、読取りデータが要求元プロセッサのローカル・バス以外のバスから与えられる時に、コヒーレンシ報告の性能を改善することである。【解決手段】本発明によれば、バスを介して少なくとも１つの記憶装置に結合された複数のバス・デバイスを含む情報処理システムが提供される。バス上の第１デバイス（「要求元」）は、データとコヒーレンシ情報を得るために要求を発行し、指定されたコヒーレンシ応答間隔の間、コヒーレンシ情報について監視する。第２デバイス（「応答デバイス」）は、コヒーレンシ情報が第２間隔の間に返されることを示す第１信号を、指定されたコヒーレンシ応答間隔の間に送り、第２間隔の間に、要求元にコヒーレンシ情報を提供する第２信号を送る。【選択図】　図１
2004005657.tif 000002
【特許請求の範囲】
【請求項１】
１組のバスを介して少なくとも１つの記憶デバイスに結合される複数のバス・デバイスを含む情報処理システムにおいて、
第１デバイス（「要求元」）によって、データおよびコヒーレンシ情報を求める要求をバス上に発行するステップと、
定められたコヒーレンシ応答間隔の間、要求されたコヒーレンシ情報について監視するステップと、
第２デバイスによって、コヒーレンシ情報が第２の間隔の間に返されることを示す第１信号を、定められたコヒーレンシ応答間隔の間に送るステップと、
第２間隔の間に、要求元にコヒーレンシ情報を提供するために第２信号を送るステップと
を含む情報処理方法。
【請求項２】
第２信号を送るステップが、第１信号を送るステップよりも少ない本数のバス線を使用することを特徴とする、請求項１に記載の方法。
【請求項３】
第２間隔が、タグと要求されたデータとをアサートすることによって少なくとも部分的に識別されることを特徴とする、請求項２に記載の方法。
【請求項４】
第２信号が、単一の線上で単独で送られることを特徴とする、請求項３に記載の方法。
【請求項５】
さらに、第１信号が第１バス上にあり、第２信号が第２バス上にあることを含む、請求項４に記載の方法。
【請求項６】
さらに、第２デバイスによって、少なくとも１つの可能なコヒーレンシ応答を除去するステップを含む、請求項１に記載の方法。
【請求項７】
さらに、第２デバイスによって、可能なコヒーレンシ応答を残りの２つのコヒーレンシ応答まで減少するステップを含み、第２信号を送るステップが、さらに、２つの残りのコヒーレンシ応答のうちの１つを送るステップを含むことを特徴とする、請求項１に記載の方法。
【請求項８】
１組のバスを介して少なくとも１つの記憶装置に結合された複数のバス・デバイスを含む情報処理システムにおいて、
１組のバス（以下「要求元のバス」という）に結合された第１デバイス（以下「要求元」という）によって、要求元によって決められたタグを含むバス動作を、要求元のバスに直接には結合されない少なくとも１つのデバイス（以下「リモート・デバイス」という）に向けて発行するステップと、
第２デバイスによってバス動作を検査するステップと、
リモート・デバイス内に常駐するデータに向けられた読取り要求に応答して、応答デバイスによって、定められたコヒーレンシ応答間隔中に要求元のバスのうちの１つで第１コヒーレンシ応答を発行するステップと、
リモート・デバイスに読取り要求を送るステップと、
リモート・デバイスから、要求されたデータを受け取るステップと、
要求元のバスのうちのいくつかでタグ、要求されたデータおよび第２コヒーレンシ応答をアサートするステップと、
ある間隔（「読取り間隔」）中に要求元によって、要求されたデータおよびコヒーレンシ情報を読み取るステップと
を含む方法。
【請求項９】
さらに、第１コヒーレンシ応答が、バス上のある本数の線上にあり、第２コヒーレンシ応答が、バス上のより少ない本数の線上にある、請求項８に記載の方法。
【請求項１０】
さらに、読取り間隔が、少なくとも部分的に、要求されたデータとコヒーレンシ情報とをリモート・デバイスから受け取った後に、応答デバイスがタグと要求されたデータとをアサートすることによって開始されることを含む、請求項９に記載の方法。
【請求項１１】
１つまたは複数のプロセッサを含む複数のバス・デバイスと、
少なくとも１つの記憶装置と、
前記複数のバス・デバイスと前記記憶装置とを結合するバスと、
データおよびコヒーレンシ情報を求める要求を第１デバイス（「要求元」）によってバス上に発行するための手段と、
定められたコヒーレンシ応答間隔の間、コヒーレンシ情報に関して要求元によって監視を行うための手段と、
コヒーレンシ情報が第２間隔の間に返されることを示す第１コヒーレンシ応答を、定められたコヒーレンシ応答間隔の間に第２デバイスによって送るための手段と、
第２間隔の間に要求元にコヒーレンシ情報を提供するために第２コヒーレンシ応答を送るための手段と
を含む情報処理システム。
【請求項１２】
第１コヒーレンシ応答が、バスの何本かの線上にあり、第２コヒーレンシ応答が、第１コヒーレンシ応答より少ない本数のバスの線上にあることを特徴とする、請求項１１に記載のシステム。
【請求項１３】
第２間隔が、少なくとも部分的に、要求されたデータと要求に関連するタグとをアサートすることによって識別されることを特徴とする、請求項１２に記載のシステム。
【請求項１４】
第２コヒーレンシ応答が、単一の線上で単独に通信されることを特徴とする、請求項１３に記載のシステム。
【請求項１５】
さらに、第２コヒーレンシ応答に関して可能なコヒーレンシ応答を、少なくとも１つの可能な応答だけ減らすための手段を含む、請求項１１に記載のシステム。
【請求項１６】
さらに、第２デバイスによって、可能なコヒーレンシ応答を２つの残りのコヒーレンシ応答に減らすための手段を含み、第２コヒーレンシ応答を送るための手段が、残りのコヒーレンシ応答のうちの１つを送ることを特徴とする、請求項１１に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはデータ処理システムに関し、具体的には、多重プロセッサ・システム内でコヒーレンシ情報を提供するためのシステムおよび方法に関する。
【０００２】
【従来の技術】
本特許出願は、１９９４年１０月４日出願の下記の米国特許出願に関連するので、必要により参照されたい。
ＳＹＳＴＥＭ　ＡＮＤ　ＭＥＴＨＯＤ　ＦＯＲ　ＣＯＭＭＵＮＩＣＡＴＩＮＧ　ＢＥＴＷＥＥＮ　ＤＥＶＩＣＥＳ、米国特許出願第０８／２９８，８７３号（ＨＱ９−９４−０１７）
ＤＵＡＬ　ＬＡＴＥＮＣＹ　ＳＴＡＴＵＳ　ＡＮＤ　ＣＯＨＥＲＥＮＣＹ　ＲＥＰＯＲＴＩＮＧ　ＦＯＲ　Ａ　ＭＵＬＴＩＰＲＯＣＥＳＳＩＮＧ　ＳＹＳＴＥＭ、米国特許出願第０８／３１６，９８０号（ＨＱ９−９４−０３３）
ＳＹＳＴＥＭ　ＡＮＤ　ＭＥＴＨＯＤ　ＦＯＲ　ＤＥＴＥＲＭＩＮＩＮＧ　ＳＯＵＲＣＥ　ＯＦ　ＤＡＴＡ　ＩＮ　Ａ　ＳＹＳＴＥＭ　ＷＩＴＨ　ＩＮＴＥＲＶＥＮＩＮＧ　ＣＡＣＨＥＳ、米国特許出願第０８／３１７，２５６号（ＨＱ９−９４−０３４）
【０００３】
共用バスを介してメモリ・システムに結合される複数のバス・デバイスを有する多重プロセッサ・システムでは、バス・デバイスが、読取り動作など、メモリ・システムに記憶されたデータの特定の部分を要求する動作を発行する。「スヌープ」・バス・デバイスを使用するシステムでは、共用バスに結合されたバス・デバイスが、動作を監視して、その動作がそのバス・デバイスのキャッシュ内に含まれるデータに関連するかどうかを判定する。これを「コヒーレンシ検査」と称することがしばしばである。このようなコヒーレンシ検査には、メモリ・システムまたはバス・デバイスのうちの１つが現在最新版のコピーを保持しているかどうかに無関係に、要求されたデータの最も新しく有効な版が要求元デバイスに送られるようにすることが含まれる。
【０００４】
バス・デバイスが共用バスを介してバス要求を送る時には、複数のタイプの報告が要求元デバイスに送り返される可能性がある。要求元バス・デバイスに送り返される情報の一部によって、要求されたデータのコヒーレンシすなわち、どのデバイスが要求されたデータの有効な版を所有するかが報告される。関連特許である米国特許出願第０８／３１６９８０号明細書に記載のものなどの応答ウィンドウ（「アドレス応答ウィンドウ」）を、コヒーレンシ報告に使用することができる。このウィンドウは、コヒーレンシ応答ウィンドウとも称するが、他のバス・デバイスのそれぞれで必要なキャッシュ・ディレクトリ索引に起因する長い遅延を考慮に入れて、アドレスと要求コードから構成可能なクロック数だけ後に置かれる。
【０００５】
コヒーレンシ情報を即座に取得して許容されるアドレス応答ウィンドウ内で返すことができない時には、応答のウィンドウを延長する必要がある。これは、たとえば、不均一メモリ・アクセス（ＮＵＭＡ）型システムまたはスイッチ式メモリ・ディレクトリ型システムで必要になる。というのは、このようなシステムでは、コヒーレンシ情報がローカル・スヌープ・バス上で常に入手可能ではなく、読取り要求を別のバスまたはメモリ・ディレクトリ・システムに転送する必要があるからである（ＮＵＭＡアーキテクチャでは、処理システムがローカル・バス・メモリだけを有する。メモリ・ディレクトリ・アーキテクチャでは、処理システムが、どのローカル・バスにも属さない大域メモリだけを有する）。コヒーレンシ応答ウィンドウを延長するためのプロトコルが、関連特許である米国特許出願第０８／２９８８７３号明細書に記載されている。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、ＮＵＭＡまたはメモリ・ディレクトリ・ベースのシステムで一般に発生するように、読取りデータが要求元プロセッサのローカル・バス以外のバスから与えられる時に、コヒーレンシ報告の性能を改善することである。
【０００７】
本発明のもう１つの目的は、前に定義されたプロトコルにハードウェア信号を追加せずに、そのような読取り動作の性能を改善することである。
【０００８】
【課題を解決するための手段】
これらの目的を達成する際に、ローカルでない供給源のデータに対する読取り要求に応答して、読取り要求が受け入れられた（すなわち、読取り動作に応答してＲｅｔｒｙ（再試行）応答が発行されなかった）場合に、あるコヒーレンシ応答が返され、要求されたデータが、ローカルでない供給源から取得され、データが要求元に配布される時に、ある信号がデータのコヒーレンシ状況を示す。
【０００９】
本発明のもう１つの態様では、コヒーレンシ状況が、「共用」または「排他」のいずれかとして示される。
【００１０】
本発明は、デバイスがＲｅＲｕｎ（再実行）動作を待機し、その後読取り動作を再発行する必要なしに、コヒーレンシ応答ウィンドウを延長できることが長所である。これによって、ＮＵＭＡまたはメモリ・ディレクトリ・タイプのシステムで非ローカル・データに対する読取り動作の待ち時間が大幅に短縮される。読取り動作は、すべてのバス動作のかなりの部分になるので、これによってシステム性能がかなり向上する可能性がある。
【００１１】
前述は、以下の本発明の詳細な説明をよりよく理解できるように本発明の特徴と技術的長所をかなりおおまかに述べたものである。
以下に、本発明の構成に関して以下の事項を開示する。
（１）　１組のバスを介して少なくとも１つの記憶デバイスに結合された複数のバス・デバイスを含む情報処理システムにおいて、
要求元となる第１デバイスによって、データ及びコヒーレンシ情報を求める要求をバス上に発行するステップと、
定められたコヒーレンシ応答間隔の間、１組のバスを介して前記第１デバイスに直接に結合された第２デバイスによって、前記要求されたコヒーレンシ情報を監視するステップと、
前記定められたコヒーレンシ応答間隔の間に、前記第２デバイスによって、前記コヒーレンシ情報が第２の間隔の間に返されることを示す第１信号を送るステップと、
前記第２間隔の間に、前記第２デバイスによって、前記コヒーレンシ情報を前記第１デバイスに提供するための第２信号を送るステップと
を含む、情報処理方法。
（２）　前記第２信号を送る前記ステップにおいて、前記バス上で前記第１信号を送る前記ステップよりも少ない本数の線が使用される、（１）に記載の方法。
（３）　前記第２間隔が、タグ及び要求されたデータとをアサートすることによって識別される、（２）に記載の方法。
（４）　前記第２信号が、単一の線上で単独に送られる、（３）に記載の方法。
（５）　前記第１信号が第１バス上にあり、前記第２信号が第２バス上にある、（４）に記載の方法。
（６）　前記第２デバイスによって、少なくとも１つの可能なコヒーレンシ応答を除去するステップをさらに含む、（１）に記載の方法。
（７）　前記第２デバイスによって、可能なコヒーレンシ応答を残りの２つのコヒーレンシ応答にまで減少するステップをさらに含み、第２信号を送る前記ステップが、前記残りの２つのコヒーレンシ応答のうちの１つを送るステップをさらに含む、（１）に記載の方法。
（８）　１組のバスからなるシステム・バスを複数備えた情報処理システムであって、前記システム・バスの各々には、複数の第１デバイス、少なくとも１つの記憶デバイス及び１つの第２デバイスが直接に結合されており、前記第２デバイスの各々が相互接続されている前記情報処理システムにおいて、
要求元のバスであるシステム・バスに結合され且つ要求元となる第１デバイスによって、前記第１デバイスによって決められたタグをバス動作中に含む前記バス動作を、前記要求元のバスとは異なるシステム・バスに結合されている第１デバイスであるリモート・デバイスに向けて発行するステップと、
前記要求元のバスであるシステム・バスを介して前記要求元の第１デバイスに直接に結合された第２デバイスによって、前記バス動作を検査するステップと、前記リモート・デバイスに常駐するデータに向けられた読取り要求に応答して、前記第２デバイスによって定められたコヒーレンシ応答間隔の間に、前記第２デバイスによって前記要求元のバスである１組のバス上で第１コヒーレンシ応答を発行するステップと、
前記リモート・デバイスに、前記第２デバイスによって前記読取り要求を送るステップと、
前記リモート・デバイスから、要求されたデータを前記第２デバイスによって受け取るステップと、
前記要求元のバスである１組のバス上で、前記第２デバイスによって、前記タグ、要求されたデータおよび第２コヒーレンシ応答をアサートするステップと、第２間隔の間に、前記要求元の第１デバイスによって、前記要求されたデータ及びコヒーレンシ情報を読み取るステップと
を含む方法。
（９）　前記第２コヒーレンシ応答が、前記第１コヒーレンシ応答よりも少ないバスの線の上にアサートされる、（８）に記載の方法。
（１０）　前記要求されたデータ及び前記コヒーレンシ情報が前記リモート・デバイスから受け取られた後に、前記タグ及び前記要求されたデータをアサートして、前記第２デバイスによって前記第２間隔を開始するステップをさらに含む、（９）に記載の方法。
（１１）　複数のバス・デバイスであって、前記複数のバス・デバイスは１又はそれ以上のプロセッサを含む、前記複数のバス・デバイスと、
少なくとも１つの記憶デバイスと、
前記複数のバス・デバイス及び前記記憶デバイスとを結合するバスと、
を含む情報処理システムであって、
要求元となる第１デバイスがデータおよびコヒーレンシ情報を求める要求を前記バス上に発行させる手段と、
定められたコヒーレンシ応答間隔の間に、１組のバスを介して前記第１デバイスに直接に結合された第２デバイスが前記要求されたコヒーレンシ情報について監視させる手段と、
前記定められたコヒーレンシ応答間隔の間に、前記第２デバイスは前記コヒーレンシ情報が第２間隔の間に返されることを示す第１コヒーレンシ応答を送らせる手段と、　前記第２間隔の間に、前記第２デバイスが前記コヒーレンシ情報を前記第１デバイスに提供するための第２コヒーレンシ応答を送らせる手段と
を含む、情報処理システム。
（１２）　前記第２コヒーレンシ応答を送らせる前記手段が、前記第１コヒーレンシ応答よりも少ないバスの線の上に前記第２コヒーレンシ応答を送らせる、（１１）に記載のシステム。
（１３）　前記第２間隔は、前記第２デバイスが前記要求されたデータ及び前記タグをアサートすることによって識別される、（１２）に記載のシステム。
（１４）　前記第２コヒーレンシ応答が、前記第２デバイスによって単一の線の上に単独に送られる、（１３）に記載のシステム。
（１５）　前記第２デバイスが、前記第２コヒーレンシ応答を少なくとも１つの可能なコヒーレンシ応答にまで除去させる手段をさらに含む、（１１）に記載のシステム。
（１６）　前記第２デバイスが、可能なコヒーレンシ応答を残りの２つのコヒーレンシ応答にまで減少させる手段をさらに含み、第２コヒーレンシ応答を送らせる前記手段が、残りの２つのコヒーレンシ応答のうちの１つを送る、（１１）に記載のシステム。
（１７）　複数のシステム・バスを備えた情報処理システムであって、前記システム・バス各々には複数の第１デバイス、少なくとも１つの記憶デバイス及び１つの第２デバイスが直接に結合されており、前記第２デバイス各々が相互接続されている前記情報処理システムにおいて、
要求元となる第１デバイスが、前記要求元とは異なるシステム・バスに結合されている第１デバイスであるリモート・デバイスに常駐するデータに向けられた読取り要求を発行するため、前記要求元によって決められたタグをバス動作中に含む前記バス動作を自システム・バス上に発行するステップと、
前記第２デバイスが、前記読取り要求が前記自システム・バスを離れるか否かを検査するステップと、
前記読取り要求に応答して、前記第２デバイスが、定められたコヒーレンシ応答間隔の間に前記自システム・バス上で第１コヒーレンシ応答を発行するステップと、
前記リモート・デバイスに向けて、前記第２デバイスが前記読取り要求を送り出すステップと、
前記リモート・デバイスから返された前記データを、前記第２デバイスが受け取るステップと、
前記自システム・バス上で、前記第２デバイスが、前記タグ及び前記データ並びにコヒーレンシ情報を含む第２コヒーレンシ応答をアサートするステップと、アサートされた前記タグを検出した前記第１デバイスが、第２間隔の間に前記データ及び前記コヒーレンシ情報を読取るステップと、
を含み、
前記コヒーレンシ情報は前記第１コヒーレンシ応答より少ないバス線上にアサートされることを特徴とする情報処理方法。
本発明の追加の特徴および長所を、以下で説明するが、これが本発明の請求の対象を形成する。
【００１２】
【発明の実施の形態】
本発明の新規の特徴を明瞭に指摘するために、以下の議論では、当業者に明白な、情報処理システムの通常の特徴は、省略するかごく簡略に述べる。当業者は、マルチユーザ、多重プロセッサ・オペレーティング・システムに精通し、特に、仮想記憶を含むメモリ管理と、プロセッサ・スケジューリングと、プロセスおよびプロセッサの両方に関する同期化機能と、メッセージ送受と、通常のデバイス・ドライバと、端末およびネットワークのサポートと、システム初期設定と、割込み管理と、システム呼出し機能と、管理機能とに関するそのようなオペレーティング・システムの要件に精通していると仮定する。
【００１３】
ここで図１を参照して、本発明を有利に実施するデータ処理システムを説明する。多重プロセッサの情報処理システム１００には、複数のローカルなシステム・バス１０８．１、１０８．２などが含まれ、システム・バス１０８．１などのローカル・システム・バスは、複数のプロセッサ１０２．１、１０４．１、１０６．１などと、プロセッサ・ノード・コントローラ（または「バス・アダプタ」、以下ではノード・コントローラと呼称する）１３０．１とが動作可能に接続されている（システム・バス１０８．１、１０８．２など、複数の同様の符号を付された要素を参照または図示する場合、これらの要素を「システム・バス１０８」などのように接尾辞なしで集合的に参照する場合がある）。プロセッサ・ユニット１０２、１０４、１０６などには、プロセッサとキャッシュ記憶デバイスが含まれる可能性があるが、本明細書では単に「プロセッサ」と呼称する。ノード・コントローラ１３０には、ローカル・メモリが存在する場合に、ローカル・バス上のシステム・メモリ１１０のディレクトリが含まれる。システム・バス１０８は、ノード・コントローラ１３０を介して相互接続１４０に動作可能に結合され、これによって、システム・バス１０８が、ＮＵＭＡアーキテクチャでは他のシステム・バス１０８に結合され、メモリ・ディレクトリ・アーキテクチャでは、それが含まれるディレクトリと共にメモリ要素１５０に結合される。
【００１４】
ここで図２を参照すると、ローカルのシステム・バス１０８が、プロセッサ・ユニット１０２、１０４、１０６ないしｎまでの複数のプロセッサに動作的に接続されている。また、システム・バス１０８には、システム・メモリ１１０も接続されている。この図の実施例では、システム・バス１０８に、とりわけ、５ビットの転送タイプ（「ＴＴ」）・バス２２１、６４ビットのアドレス・バス２２２、１２８ビットのデータ・バス２２４、８ビットのデータ・タグ（「ＤＴａｇ」）・バス２２６、６ビットのアドレス応答（「ＡＲｅｓｐ」）バス２２７および１ビットのキャッシュ・データ（「ＤＣａｃｈｅ」）・バス２２８が含まれる。プロセッサ１０２ないしｎおよびシステム・メモリ１１０は、ノード・コントローラ１３０の制御の下で動作し、ノード・コントローラ１３０は、２地点間接続線（図示せず）によって、システム・バス１０８に接続されたプロセッサ１０２ないしｎおよびシステム・メモリ１１０と通信する。ノード・コントローラ１３０は、符号１３２で、他のバスおよびデバイスと結合される（図１参照）。したがって、図１を参照すると、システム・バス１０８．１にローカルに結合されたプロセッサ１０２．１は、ノード・コントローラ１３０．１を介して、ローカルなシステム・バス１０８．１を超えたデバイス、たとえばローカルなシステム・バス１０８．２に結合されたプロセッサ１０２．２、ローカルなシステム・バス１０８．３に結合されたシステム・メモリ１１０．３、相互接続１４０に接続されたメモリ要素１５０．１と通信することができる。
【００１５】
システム・バス１０８のアクセスの要求と認可は、すべてがノード・コントローラ１３０によって制御される。プロセッサ１０２など、バス・デバイスのうちの１つが、２地点間接続（図示せず）を介してノード・コントローラ１３０からシステム・バス１０８上での動作を可能にするよう要求する可能性がある。ノード・コントローラ１３０からバス認可を受け取ると、プロセッサ１０２は、要求元デバイスとしてプロセッサ１０２を識別するトランザクション・タグを含むアドレスを、システム・バス１０８上でイネーブルする。
【００１６】
バス接続数およびバス周波数を最大にし、なおかつＣＭＯＳ論理デバイスに対するシステム・バス１０８の直接接続を可能にするために、バス・デバイスからのさまざまな状況応答およびコヒーレンシ応答は、バスに関与する各デバイスから、ノード・コントローラ１３０内などの共通の集合点へ単一方向に駆動され、この集合点では、すべての応答を組み合わせた後に、組合せ応答を各要求元バス・デバイスに返す。ノード・コントローラ１３０は、リモートのメモリ要素１５０またはシステム・メモリ１１０すなわち、要求元のプロセッサ１０２のシステム・バス１０８に対してリモートに置かれるメモリ要素１５０またはシステム・メモリ１１０に関するコヒーレンシ情報も集める。また、ノード・コントローラ１３０の組合せ論理は、応答に優先順位をつける。これは、バス・デバイスが異なる応答を送る可能性があるからである。この優先順位づけは、下で説明する表に記載されている。
【００１７】
次に図３を参照すると、アドレスＡは、プロセッサ１０２によってシステム・バス１０８上でイネーブルされる。一定の時間の後に、状況情報すなわち、フロー制御とエラーの状況が、フロー制御状況応答ウィンドウＡ（「状況Ａ」として図示）の間にプロセッサ１０２に返される。プロセッサ１０２は、固定だが構成可能な時間の間、さらにコヒーレンシ情報を待つこともでき、この情報は、アドレス応答ウィンドウＡ（「スヌープＡ」として図示）の間にＡＲｅｓｐバス２２７上でノード・コントローラ１３０によって情報処理システム１００内のさまざまな他のバス・デバイスからプロセッサ１０２に返される。このコヒーレンシ情報は、他のバス・デバイスによる通常のスヌープ動作の結果として作成されるが、プロセッサ１０２に、要求されたデータの最新版がある場所を示す。たとえば、プロセッサ１０４が、要求されたデータを修正された形で保持すると判定する場合、プロセッサ１０４は、プロセッサ１０４が要求されたデータの最新版を保持しており、システム・メモリ１１０に最新版が含まれないことをプロセッサ１０２に知らせる。アドレスと要求コードの後で構成可能なクロック・サイクル数の後にアドレス応答ウィンドウを配置できるので、情報処理システム１００内のさまざまなバス・デバイスのそれぞれでのキャッシュ・ディレクトリ索引を実行するための異なるより長いアクセス時間が可能になる。
【００１８】
表１に、好ましい実施例で符号化されるコヒーレンシ・メッセージの例を示す。
【表１】
2004005657.tif 000003
【００１９】
この表に、返されるコヒーレンシ・メッセージの優先順位づけが含まれることに留意されたい。この優先順位づけは、返されるメッセージを最初に受け取るノード・コントローラ１３０によって、さまざまなバス・デバイスから受け取るメッセージのどれをプロセッサ１０２に送るかを決定するのに使用される可能性がある。たとえば、バス・デバイスであるプロセッサ１０４が優先順位２を有する「Ｍｏｄｉｆｉｅｄ（変更あり）」メッセージ（表１参照）を返し、バス・デバイスであるプロセッサ１０６が優先順位３を有する「ＲｅＲｕｎ」メッセージを返す場合、ノード・コントローラ１３０は、「Ｍｏｄｉｆｉｅｄ」メッセージ・コヒーレンシ応答を送るように実施することができる。
【００２０】
表１に示された応答のうちの３つが、延長されないアドレス応答ウィンドウ中の即座のコヒーレンシ解決をもたらす。Ｍｏｄｉｆｉｅｄ応答は、要求元デバイス、たとえばプロセッサ１０２に、他のプロセッサ１０４、１０６などのうちの１つのキャッシュに変更されたキャッシュ・ラインが存在することを示すのに使用される。Ｓｈａｒｅｄ（共用）応答は、１つまたは複数のそのようなローカル・キャッシュにデータが存在するが、変更されていないことを示す。Ｎｕｌｌ（無）応答は、データがローカル・キャッシュにもリモート・キャッシュにも存在せず、ローカル・メモリに存在することを示す。
【００２１】
表１に示された応答のうちの３つでは、アドレス応答ウィンドウが延長される。Ｒｅｔｒｙ応答は、コヒーレンシ衝突を示し、要求元デバイスが後程その動作を再送しなければならないことを示すのに使用される。ＲｅＲｕｎ応答とＲｅｍＳｔａｔ応答は、ローカル・バスを離れる時に使用される。
【００２２】
図４および図５は、時間間隔Ｔ１、Ｔ２などの間にシステム・バス１０８に含まれるバス上でアサートされるさまざまな信号を示す図である。図４および図５のどちらでも、図示の時間間隔は、持続時間または間隔の間の時間のいずれについても必ずしも実際の値の通りではない。
【００２３】
図４は、ＲｅＲｕｎ応答によってセット・アップされる延長アドレス応答ウィンドウの実装を示す図である。時刻Ｔ１に、プロセッサ、たとえばプロセッサ１０２が、コヒーレンシ情報を必要とする読取り動作を発行するが、これには、プロセッサ１０２が、ＴＴバス２２１上で読取り信号をアサートし、アドレス・バス２２２上でアドレスとタグをアサートすることが含まれる。読取り要求に続くある構成された時間であるアドレス応答ウィンドウ（時間間隔Ｔ２）の間に、ノード・コントローラ１３０が、ＡＲｅｓｐバス２２７上でＲｅＲｕｎ信号をアサートする。ＲｅＲｕｎ応答によって、ノード・コントローラ１３０が後程ＲｅＲｕｎ要求を開始することが示され、その時まで要求元のプロセッサ１０２がコヒーレンシ情報を得るために別の処置を開始する必要が実質的になくなる。コヒーレンシ情報が非ローカル供給源から得られた後、ノード・コントローラ１３０は、当初は要求元のプロセッサ１０２によって確立されたトランザクション・タグをＤＴａｇバス２２６上でアサートし、ＴＴバス２２１上でＲｅＲｕｎ要求をアサートすることによって、時刻Ｔ３に要求元のプロセッサ１０２にＲｅＲｕｎ要求を送る。これに応答して、プロセッサ１０２は、時刻Ｔ４に読取り動作を再送し、今回は、アドレス・バス２２２上のあるビット（「Ｒビット」）もアサートし、ノード・コントローラ１３０は、構成されたアドレス応答ウィンドウ（時間間隔Ｔ５）中にＡＲｅｓｐバス２２７上にコヒーレンシ情報をアサートする。要求されたデータが得られた時に、読取り間隔（時間間隔Ｔ６）の間にトランザクション・タグがＤＴａｇバス２２６上でアサートされ、データがデータ・バス２２４上でアサートされる。
【００２４】
図５は、ＲｅｍＳｔａｔ応答の送出によってセット・アップされる延長アドレス応答ウィンドウの実施を示す図である。時刻Ｔ１に、プロセッサ１０２などのプロセッサが、コヒーレンシ情報を必要とする読取り動作を発行するが、これには、プロセッサ１０２がＴＴバス２２１上で読取り信号をアサートすることと、アドレス・バス２２２上でアドレスとタグをアサートすることが含まれる。読取り要求の後のある構成された時間であるアドレス応答ウィンドウ（時間間隔Ｔ２）中に、ノード・コントローラ１３０が、ＡＲｅｓｐバス２２７上でＲｅｍＳｔａｔ信号をアサートする。ＲｅｍＳｔａｔ応答は、後程ノード・コントローラ１３０が要求されたデータと共にそのデータのコヒーレンシ情報を要求元のプロセッサ１０２に返すことを示し、要求元のプロセッサ１０２がコヒーレンシ情報を得るために別の処置を開始する必要を実質的になくし、また、待ち時間を実質的に減少させる。
【００２５】
本発明に先行する関連特許である米国特許出願第０８／３１７２５６（ＨＱ９−９４−０３４）号明細書に記載されているように、ＤＣａｃｈｅバスは、データ転送がシステム・メモリからではなく間にあるキャッシュ・デバイスからであり、その状況でキャッシュ・デバイスによって駆動されたことをＤＣａｃｈｅ信号によって示すのに使用されている。非ローカル・バス読取り動作中にはそのようなキャッシュ介在のためにＤＣａｃｈｅ信号がアサートされることはないので、本発明に従ってコヒーレンシ情報を担持するのにこのＤＣａｃｈｅ信号を利用することができる。
【００２６】
プロセッサ１０２が、この特定のデータを読み取る要求などの保留中の要求を有する時には、プロセッサ１０２は、クロック・サイクルごとにＤＴａｇバスを監視する。ノード・コントローラ１３０が、要求されたデータとそのデータのコヒーレンシ情報を取得したならば、ノード・コントローラ１３０は、要求元デバイスを識別するトランザクション・タグ信号をＤＴａｇバス２２６上にアサートし、データ信号をデータ・バス２２４上にアサートし、コヒーレンシ情報信号をＤＣａｃｈｅバス２２８上にアサートする。好ましい実施例では、タグ、データおよびコヒーレンシ情報のすべてが、同一のクロック・サイクル（時間間隔Ｔ３として図示）の間にアサートされる。トランザクション・タグが送られている時のサイクル（すなわち間隔Ｔ３）の間に、ＤＴａｇバス上でのタグの検出に応答して、プロセッサ１０２は、データ・バス２２４上のデータ信号とＤＣａｃｈｅバス２２８上のコヒーレンシ信号の両方を読み取るが、この時、ノード・コントローラ１３０からのＲｅＲｕｎ動作を待機することに関連する追加の遅延を被る必要はなく、その後に必要な情報を読み取るためにアドレス応答ウィンドウの追加の要求を開始し、待機する必要もない。
【００２７】
ここで図６および図７を参照すると、情報処理システム１００によって実行される動作の流れ図が示されている。具体的に言うと、図６および図７の流れ図は、好ましい実施例のノード・コントローラ１３０などのバス・デバイスによって実行される動作を示す流れ図である。図６および図７に示された動作は、図示のシーケンスで実行する必要はない。図６の場合、実行は、ブロック４００で開始され、ブロック４０２に進んで、ノード・コントローラ１３０が、ローカルのシステム・バス１０８を越えるバス動作を分析する。たとえば、システム・バス１０８．１は、プロセッサ１０２．１に対してローカルであり、その結果、プロセッサ１０２．１による、システム・バス１０８．２上のシステム・メモリ１１０．２からまたはメモリ要素１５０からデータを供給される読取り動作は、ローカルのシステム・バス１０８．１を越えるバス動作になる。
【００２８】
その後、そのようなバス動作について、実行は判断ブロック４０４に継続し、ここで、ノード・コントローラ１３０の論理は、コヒーレンシ応答が不要な場合にはブロック４０６に分岐し（この場合、本発明の目的のための分析は、ブロック４０８に示されるように完了している）、コヒーレンシ応答が必要な場合にはブロック４１０に分岐する。
【００２９】
ブロック４１０の判断に従って、ノード・コントローラ１３０の論理は、読取り動作の場合にはブロック４１２へ、他の動作の場合にはブロック４１８へ分岐する。読取り動作の場合、ノード・コントローラ１３０は、通常のアドレス応答ウィンドウ中に要求元にＲｅｍＳｔａｔ応答を返す（ブロック４１２）。読取り動作以外の場合、ノード・コントローラ１３０は、通常のアドレス応答ウィンドウ中にＲｅＲｕｎ応答を返す（ブロック４１４）。その後、ノード・コントローラ１３０は、その動作の要求元によって生成されたタグを保存し（ブロック４１６）、動作のこの段階の分析を完了し、動作を非ローカルのバスまたはメモリに転送する（ブロック４１８）。
【００３０】
図７からわかるように、ノード・コントローラ１３０が、リモート動作が完了したことの表示を受け取る時（ブロック４３０）、ノード・コントローラ１３０の論理は、ブロック４３２に進んで、その動作が読取り動作であったかどうかを判定し、それに応じて分岐する。動作が読取り動作の場合には（ブロック４３４）、ノード・コントローラ１３０は、元のタグと共にデータを返す。コントローラは、データとＤＴａｇ信号をアサートする間に、データのコヒーレンシ状況がＳｈａｒｅｄの場合にはＤＣａｃｈｅバス上の信号もアサートする。Ｎｕｌｌのコヒーレンシ状況を示すには、ＤＣａｃｈｅバスの信号をアサートしない。この実施例に関しては、これでリモート読取り動作のリターンに関するノード・コントローラ１３０による応答が完了する（ブロック４３６）。読取り動作でないリモート動作のリターンの場合、ノード・コントローラ１３０は、ＲｅＲｕｎ要求を発行し、ＤＴａｇ信号をアサートする（ブロック４３８）。その後、要求元が、アドレス・バスのＲビットをアサートしてこれが再実行されたリターン動作であることを示しながら非読取り動作を再発行する時に、ノード・コントローラ１３０は、通常のアドレス応答ウィンドウ中にコヒーレンシ応答を返す（ブロック４４０）。その後、動作がＲｅａｄ　Ｗｉｔｈ　Ｉｎｔｅｎｔ　Ｔｏ　Ｍｏｄｉｆｙ（変更目的の読取り）であった場合（ブロック４４２）、ノード・コントローラ１３０は、データ・バス２２４上でそのデータのデータ信号をアサートし、ＤＴａｇバス２２６上でタグをアサートし（ブロック４４４）、これによって、この実施例の観点からは動作が完了する。
【００３１】
ここで図８を参照すると、情報処理システム１００によって実行される追加動作の流れ図が示されている。具体的に言うと、図８の流れ図は、好ましい実施例のプロセッサ１０２などのマスタ・バス・デバイスによって実行される動作の流れ図である。図８に示された動作は、図示のシーケンスで実行する必要はない。
【００３２】
ブロック４６０に示されているように、マスタであるプロセッサ１０２は、読取り動作を開始し、コヒーレンシ応答を受け取る。マスタであるプロセッサ１０２は、受け取ったコヒーレンシ応答のタイプを判定する。要求したデータが「Ｓｈａｒｅｄ」状況であることが応答から示される場合（ブロック４６２）、これは、そのデータが、ローカルのシステム・バス１０８上のシステム・メモリ１１０と、システム・バス１０８上の別のプロセッサ１０４、１０６などのキャッシュ内にも存在するが、キャッシュ内で変更されていないことを意味する。したがって、マスタであるプロセッサ１０２は、プロセッサ１０２用のタグを付けられたデータを待ち、このデータをキャッシュ内で共用としてマークする（ブロック４６４）。この場合、現在の議論に関しては、これでマスタの処理が終了する（ブロック４６６）。
【００３３】
状況が「Ｍｏｄｉｆｉｅｄ」であることが応答から示される場合（ブロック４６８）、これは、そのデータがローカルのシステム・バス１０８上のシステム・メモリ１１０と、システム・バス１０８上の別のプロセッサ１０４、１０６などのキャッシュとに存在し、キャッシュ内で変更されていることを意味する。したがって、マスタであるプロセッサ１０２は、タグ付きのデータを待つ（ブロック４７０）。この場合、読取り要求に対する応答は、キャッシュと他のシステム・メモリ１１０の両方から来るので、最初に受け取られるデータは、システム・メモリ１１０とキャッシュの間の競争に依存する。したがって、正しいデータが使用されることを保証するために、マスタであるプロセッサ１０２は、タグ付きデータのキャッシュ版を待つが、このデータは、ＤＣａｃｈｅ信号がアサートされた状態で返される。その後、マスタであるプロセッサ１０２は、このデータをキャッシュ内で「Ｓｈａｒｅｄ」としてマークし（ブロック４７０）、この議論の目的に関して終了する（ブロック４６６）。
【００３４】
状況が「Ｎｕｌｌ」であることが応答から示される場合（ブロック４７２）、これは、そのデータがローカルなシステム・バス１０８のシステム・メモリ１１０だけに存在することを意味する。したがって、マスタであるプロセッサ１０２は、タグ付きのデータを待ち、その後、マスタであるプロセッサ１０２は、このデータをキャッシュ内で「排他」としてマークし（ブロック４７４）、この議論の目的に関して終了する（ブロック４６６）。
【００３５】
状況が「ＲｅｍＳｔａｔ」であることが応答から示される場合（ブロック４７６）、これは、そのデータがシステム・メモリ１１０にもローカルなシステム・バス１０８のキャッシュにも存在しないことを意味する。この場合、要求元であるプロセッサ１０２は、ノード・コントローラ１３０を介してメッセージを受け取るだけで、ローカルなシステム・メモリ１１０とローカル・キャッシュの間の競争はない。したがって、「Ｍｏｄｉｆｉｅｄ」コヒーレンシ状況を返す必要がなくなり、必要なコヒーレンシ応答としては「排他」状況または「共有」状況だけが残され、その結果、コヒーレンシ応答は、単一の線上のディジタル論理信号としてアサートできるようになる。したがって、マスタであるプロセッサ１０２は、タグ付きのデータを待ち、ＤＣａｃｈｅ信号がアサートされた状態でタグ付きデータが返される場合には、マスタであるプロセッサ１０２は、そのデータをキャッシュ内で「共用」としてマークするが、そうでない場合にはそのデータを「排他」としてマークし（ブロック４７８）、この目的に関して終了する（ブロック４６６）。
【００３６】
マスタであるプロセッサ１０２が、応答から「ＲｅｍＳｔａｔ」状況が示されないと判定する場合、マスタであるプロセッサ１０２は、状況が「ＲｅＲｕｎ」であるかどうかを判定する（ブロック４８０）。そうである場合、マスタであるプロセッサ１０２は、Ｒビットとタグをセットし、読取り動作を再発行する（ブロック４８２）が、そうでない場合には、マスタであるプロセッサ１０２は、Ｒビットをセットせずに読取り動作を再発行する（ブロック４８４）。
【００３７】
本発明とその長所を詳細に説明してきたが、請求の範囲によって定義される本発明の趣旨および範囲から逸脱せずに、さまざまな変更、置換および代替を作成できることを理解されたい。
【００３８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３９】
（１）１組のバスを介して少なくとも１つの記憶デバイスに結合される複数のバス・デバイスを含む情報処理システムにおいて、
第１デバイス（「要求元」）によって、データおよびコヒーレンシ情報を求める要求をバス上に発行するステップと、
定められたコヒーレンシ応答間隔の間、要求されたコヒーレンシ情報について監視するステップと、
第２デバイスによって、コヒーレンシ情報が第２の間隔の間に返されることを示す第１信号を、定められたコヒーレンシ応答間隔の間に送るステップと、　第２間隔の間に、要求元にコヒーレンシ情報を提供するために第２信号を送るステップと　を含む情報処理方法。
（２）第２信号を送るステップが、第１信号を送るステップよりも少ない本数のバス線を使用することを特徴とする、上記（１）に記載の方法。
（３）第２間隔が、タグと要求されたデータとをアサートすることによって少なくとも部分的に識別されることを特徴とする、上記（２）に記載の方法。
（４）第２信号が、単一の線上で単独で送られることを特徴とする、上記（３）に記載の方法。
（５）さらに、第１信号が第１バス上にあり、第２信号が第２バス上にあることを含む、上記（４）に記載の方法。
（６）さらに、第２デバイスによって、少なくとも１つの可能なコヒーレンシ応答を除去するステップを含む、上記（１）に記載の方法。
（７）さらに、第２デバイスによって、可能なコヒーレンシ応答を残りの２つのコヒーレンシ応答まで減少するステップを含み、第２信号を送るステップが、さらに、２つの残りのコヒーレンシ応答のうちの１つを送るステップを含むことを特徴とする、上記（１）に記載の方法。
（８）１組のバスを介して少なくとも１つの記憶装置に結合された複数のバス・デバイスを含む情報処理システムにおいて、
１組のバス（以下「要求元のバス」という）に結合された第１デバイス（以下「要求元」という）によって、要求元によって決められたタグを含むバス動作を、要求元のバスに直接には結合されない少なくとも１つのデバイス（以下「リモート・デバイス」という）に向けて発行するステップと、
第２デバイスによってバス動作を検査するステップと、
リモート・デバイス内に常駐するデータに向けられた読取り要求に応答して、応答デバイスによって、定められたコヒーレンシ応答間隔中に要求元のバスのうちの１つで第１コヒーレンシ応答を発行するステップと、
リモート・デバイスに読取り要求を送るステップと、
リモート・デバイスから、要求されたデータを受け取るステップと、
要求元のバスのうちのいくつかでタグ、要求されたデータおよび第２コヒーレンシ応答をアサートするステップと、
ある間隔（「読取り間隔」）中に要求元によって、要求されたデータおよびコヒーレンシ情報を読み取るステップと
を含む方法。
（９）さらに、第１コヒーレンシ応答が、バス上のある本数の線上にあり、第２コヒーレンシ応答が、バス上のより少ない本数の線上にある、上記（８）に記載の方法。
（１０）さらに、読取り間隔が、少なくとも部分的に、要求されたデータとコヒーレンシ情報とをリモート・デバイスから受け取った後に、応答デバイスがタグと要求されたデータとをアサートすることによって開始されることを含む、上記（９）に記載の方法。
（１１）１つまたは複数のプロセッサを含む複数のバス・デバイスと、
少なくとも１つの記憶装置と、
前記複数のバス・デバイスと前記記憶装置とを結合するバスと、
データおよびコヒーレンシ情報を求める要求を第１デバイス（「要求元」）によってバス上に発行するための手段と、
定められたコヒーレンシ応答間隔の間、コヒーレンシ情報に関して要求元によって監視を行うための手段と、
コヒーレンシ情報が第２間隔の間に返されることを示す第１コヒーレンシ応答を、定められたコヒーレンシ応答間隔の間に第２デバイスによって送るための手段と、
第２間隔の間に要求元にコヒーレンシ情報を提供するために第２コヒーレンシ応答を送るための手段と
を含む情報処理システム。
（１２）第１コヒーレンシ応答が、バスの何本かの線上にあり、第２コヒーレンシ応答が、第１コヒーレンシ応答より少ない本数のバスの線上にあることを特徴とする、上記（１１）に記載のシステム。
（１３）第２間隔が、少なくとも部分的に、要求されたデータと要求に関連するタグとをアサートすることによって識別されることを特徴とする、上記（１２）に記載のシステム。
（１４）第２コヒーレンシ応答が、単一の線上で単独に通信されることを特徴とする、上記（１３）に記載のシステム。
（１５）さらに、第２コヒーレンシ応答に関して可能なコヒーレンシ応答を、少なくとも１つの可能な応答だけ減らすための手段を含む、上記（１１）に記載のシステム。
（１６）さらに、第２デバイスによって、可能なコヒーレンシ応答を２つの残りのコヒーレンシ応答に減らすための手段を含み、第２コヒーレンシ応答を送るための手段が、残りのコヒーレンシ応答のうちの１つを送ることを特徴とする、上記（１１）に記載のシステム。
【図面の簡単な説明】
【図１】複数の共用ローカル・バスを示すシステム・ブロック図である。
【図２】システム内のローカル・バスのブロック図である。
【図３】フロー制御状況応答間隔とコヒーレンシ情報応答間隔を使用する動作を全体的に示す図である。
【図４】コヒーレンシ情報応答間隔を延長する手段を提供するＲｅＲｕｎ動作を示す図である。
【図５】コヒーレンシ情報応答間隔を延長する手段を提供するＲｅｍＳｔａｔ動作を示す図である。
【図６】延長されたコヒーレンシ情報応答間隔を使用する動作を示す流れ図である。
【図７】延長されたコヒーレンシ情報応答間隔を使用する動作を示す流れ図である。
【図８】延長されたコヒーレンシ情報応答間隔を使用する動作を示す流れ図である。
【符号の説明】
１００　情報処理システム
１０２　プロセッサ
１０４　プロセッサ
１０６　プロセッサ
１０８　システム・バス
１１０　システム・メモリ
１３０　ノード・コントローラ
１４０　相互接続
１５０　メモリ要素
【図１】
2004005657.tif 000004
【図２】
2004005657.tif 000005
【図３】
2004005657.tif 000006
【図４】
2004005657.tif 000007
【図５】
2004005657.tif 000008
【図６】
2004005657.tif 000009
【図７】
2004005657.tif 000010
【図８】
2004005657.tif 000011