(57)【要約】【課題】パイプライン化バス・システムで順不同応答を実行するための方法および装置を得ることである。【解決手段】コンピュータ・システムのバス上でバス・トランザクションを実行するに際し、順不同応答は、専用のトークン・バスを使用せずに、コンピュータ・システム内の要求側エージェントと応答側エージェントとの間のトークンの送信（３０２）を含んで為される。【選択図】  図３
2006092575.tif 000002
【特許請求の範囲】
【請求項１】
要求側エージェントは、  バス・トランザクションの一部として各バス要求ごとに連続するバス・サイクル中にアドレス・バス上にトークンおよびアドレスを出すための手段を含むことを特徴とするコンピュータ・システム。
【請求項２】
アドレス・バスと、
アドレス・バスに結合された要求側エージェントとを含み、
この要求側エージェントは、バス・トランザクションの一部として各バス要求ごとに、アドレス・バス上にアドレスとそれに続く要求識別トークンを出すための手段を含むことを特徴とするコンピュータ・システム。
【請求項３】
アドレス・バスと、
アドレス・バスに結合された要求側エージェントとを有し、
この要求側エージェントは、バス・トランザクションの一部として各バス要求ごとに、アドレスとそれに続く要求識別トークンをアドレス・バス上に出すように構成された第１の論理回路を有することを特徴とするコンピュータ・システム。
【請求項４】
データ・バス・インタフェースと、
アドレス・バス・インタフェースと、
スヌープ・インタフェースと、
アービトレーション・インタフェースと、
これらのデータ・バス・インタフェース、アドレス・バス・インタフェース、スヌープ・インタフェース、アービトレーション・インタフェースに結合され、異なったトランザクションの様々な異なったトランザクション・フェーズが１クロック・サイクルの間に異なったバスでアクティブであることがあるパイプライン化バス・プロトコルをサポートするバス制御論理とを具備し、
このバス制御論理は、第１のトランザクションの要求フェーズにおいてアドレス・バス・インターフェースに要求と要求トークンを順次送ることを特徴とするバス・エージェント。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、１９９３年６月３０日に出願され、本出願の譲受人に譲渡された「Ｍｅｔｈｏｄ ａｎｄ Ａｐｐａｒａｔｕｓ ｆｏｒ Ｐｅｒｆｏｒｍｉｎｇ Ｂｕｓ Ｔｒａｎｓａｃｔｌｏｎｓ ｉｎ ａ Ｃｏｍｐｕｔｅｒ Ｓｙｓｔｅｍ」という名称の米国特許出願第０８／０８５５４１号の一部継続出願である。
【技術分野】
【０００２】
本発明は、コンピュータ・システム・バス用のプロトコルの分野に関し、具体的には、本発明は、据置き／順不同トランザクションを実行するバス用のプロトコルに関する。
【背景技術】
【０００３】
コンピュータ・システムでは、プロセッサ、メモリ、入出力ユニット、その他の周辺装置などの装置間の転送は、一般にプロトコルに応じて行われる。このような装置は一般にエージェントと呼ばれる。プロトコルとは、転送中に装置間で行われるハンドシェーキングの方法であって、転送に関わる各装置が他の装置がどのように動作または実行するかを把握できるようにするものである。
【０００４】
一般に、コンピュータ・システムでのデータおよび情報の転送は複数のバスを使用して行われる。これらのバスは、２つの装置間だけで使用する専用バスである場合もあれば、複数のユニット、バス・エージェント、または装置が使用する非専用バスである場合もある。しかも、システム内のバスは、特定のタイプの情報の転送専用の場合もある。例えば、アドレス・バスはアドレスの転送に使用するが、データ・バスはデータの転送に使用する。
【０００５】
バス・トランザクションは、原則として、バス上の別のエージェントからデータまたは完了信号を要求する要求側装置またはエージェントを含む。通常、要求は、所望のデータまたは所望の装置のアドレスを伴う要求のタイプを示す、いくつかの制御信号を含む。要求されたアドレスを含むアドレス空間にマッピングされる装置は、必要なデータとともに完了信号を送信することによって応答する。
【０００６】
コンピュータ・システムによっては、パイプライン化方式でバス・トランザクションが行われるものもある。バス・トランザクションがパイプライン化されている場合、多数のバス・エージェントからの要求は同時に保留される。別々のデータ・バスとアドレス・バスを使用するために、このような事態が起こりうる。
パイプライン化トランザクションでは、アドレス・バス上で要求のアドレスが送信されている間に、（アドレス・バス上で）前に要求したアドレスに対応するデータまたは信号をデータ・バス上で返すことができる。所与のパイプライン化システムでは、要求されたのと同じ順序で完了応答が行われる。しかし、他のパイプライン化システムでは、完了応答の順序がそれに対応する要求と同じ順序である必要はない。このタイプのバス・システムは、一般に、分割トランザクション・バス・システムと呼ばれる。
【０００７】
分割トランザクション・バスでは、コンピュータ・システム内のエージェントの１つへの第１のバス・トランザクションによって要求が開始される。この時点で応答側エージェントがその要求への応答を提供できない場合、要求に対応する応答は、その要求との関連が解除される可能性がある。最終的には、応答の準備ができると、任意のデータを伴う応答が要求側エージェントに返される。返されたときに要求側エージェントによって識別できるように、その要求にタグを付けることもできる。
分割トランザクションに対応するため、システムは、応答をそのアドレス（即ち、その要求）に関連付けるための何らかの機能を必要とする。１つの手法は、２つの別々のトークン・バスと１つの据置きバスを使用する方法である。要求を実行する場合、アドレスがアドレス・バス上に励起される。同時に、トークンが第１のトークン・バス上に励起される。このトークンは、アドレス要求に関連付けられている。トークンは、アドレス要求に応答する予定のエージェント（即ち、応答側エージェント）によって受信される。この時点でエージェントが応答可能である場合、応答側エージェントは、第２のトークン・バス上にトークンを励起し、データ・バス上に適切な応答を励起する。
【０００８】
２つのトークン・バスを使用すると、外部バスとのインタフェースを取るために必要なピンの数が増加する。サイズが８ビットのトークンの場合、２つの別々のトークン・バスを使用すると、そのトークン・バスのために追加の１６ピンをコンピュータ・システムに追加すると同時に、コンピュータ・ボード上の追加の空間を割り振る必要がある。しかも、システム内のすべてのバス・エージェント・パッケージに対して、トークン・バスをサポートするために使用するピンも追加しなければならない。ピン数が増加すると、パッケージのコストも同様に増加する場合が多い。従って、システム内の集積回路構成要素のコストも増加する。これに対して、待ち時間が長いトランザクションを後で出された待ち時間の短いトランザクションの後に再配置する能力のため、分割トランザクションを許可することによる帯域幅の増加は相当なものになる。集積回路構成要素の変更や必要なピン数の増加によるコストの増加の大部分を被らずに、分割バス・トランザクションをサポートすることが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
先行技術では、一部の応答側エージェントがバス・エージェントからの要求に応答して再試行応答を出力する。この再試行応答は、応答側エージェントが応答する準備ができておらず、後でもう一度その要求を試みる必要があることを、要求を送信したバス・エージェントに示すものである。その場合、要求側エージェントは、それが転送に使用できるかどうかを示すために、応答側エージェントを適宜、ポーリングする。再試行応答を出した後、応答側エージェントはその要求の処理を続行することができる。トランザクションを完了する準備ができると、それは要求側エージェントに完了応答を出し、ポーリングを終了する。このような方式の問題は、不必要なポーリングによってバス・トラフィックが増加することである。再試行応答を出力するときにバス・トラフィックを削減することが望ましい。ただし、分割トランザクションに対応できないバス・エージェント用のコストを最小限にすることも望ましいことに留意されたい。
【００１０】
本発明は、このようなバス・プロトコルを実施するための方法および装置を提供する。本発明のプロトコルは、別々のトークン・バスを使用せず、それらに関連するピン数の増加も伴わずに、分割トランザクションに対応するための方法および装置を提供する。
【課題を解決するための手段】
【００１１】
発明の概要 
コンピュータ・システム内で分割バス・トランザクションを実行するための方法および装置について説明する。このコンピュータ・システムは、バス・トランザクションをパイプライン化方式で行えるようにするための別々のデータ・バスとアドレス・バスとを含む。本発明は、第１のバス・トランザクションを開始し、要求アドレスをアドレス・バス上で励起するための方法および装置を含む。要求アドレスは、要求側装置またはエージェントによって励起される。応答側エージェントは、この時点で応答ができなければ、据置き応答を励起する。本発明は、その要求およびアドレスに関連するアドレス・バス上に要求側エージェントによる第１のトークンを励起するための方法および装置も含む。要求アドレスは第１のクロック中に共通多重アドレス・バス上で励起され、トークンは第２のクロック中に共通多重アドレス・バス上で励起される。応答側装置は第１のトークンを受信し、応答側装置がアドレス要求を満足する準備ができているかまたは満足できる場合に、後で使用するためにそのトークンを内部に格納することができる。格納すると、第１のバス・トランザクションは完了している。
【００１２】
応答側装置が要求を満足する準備ができているかまたは満足できる場合（例えば、データの準備ができており、完了信号を送信できるなど）、応答側装置は第２のバス・トランザクションを開始し、アドレス・バス上で第２のトークンを励起する。また、応答側装置は、元のアドレス要求に対応するデータ・バス上に必要なデータも励起する。一実施態様の第２のトークンは第１のトークンと同一である。元の要求側装置は、第２のトークンを受信し、その元のアドレス要求に対応する第１のトークンと第２のトークンとを比較する。一致が存在すると判定すると、要求側装置は、完了信号を受信し、データがあればデータ・バスから受信し、その結果、第２のバス・トランザクションが完了する。
【００１３】
発明の詳細な説明 
コンピュータ・システム内の分割トランザクションに対応するための方法および装置について説明する。以下に示す本発明の詳細な説明では、本発明を完全に理解するために、トークン・サイズ、待ち行列サイズなどの、数多くの特定の詳細データを示している。しかし、このような特定の詳細データがなくても本発明を実施できることは、当業者には明らかであろう。その他の例では、本発明を不明確にしないように、周知の方法、機能、構成要素、手順について詳しく説明していない。
【実施例】
【００１４】
本発明のコンピュータ・システムの概要 
まず図１を参照すると、同図には、本発明のコンピュータ・システムの一実施形態の概要がブロック図形式で示されている。図１は本発明のコンピュータ・システムの全体を説明するのに有用であるが、システムの詳細の一部は図示していないことに留意されたい。本発明の開示に必要なので、詳細については本明細書に付属するその他の図に関連して示す。
【００１５】
図１に示すように、この実施形態のコンピュータ・システムは、一般に、情報をやりとりするためのプロセッサメモリ・バスまたはその他の通信手段１０１と、情報を処理するためにプロセッサメモリ・バス１０１に結合されたプロセッサ１０２とを含む。本発明のプロセッサメモリ・バス１０１は、補助的なアドレス・バス、データ・バス、制御バスを含む。プロセッサ１０２は、データと命令をチップ上に一時的に格納するためのレベル１（Ｌ１）キャッシュ・メモリと一般に呼ばれる内部キャッシュ・メモリを含んでいる。レベル２（Ｌ２）キャッシュ・メモリ１０４が、プロセッサ１０２が使用するためにデータと命令を一時的に格納するためにプロセッサ１０２に結合されている。一実施形態のキャッシュ・メモリ１０４は、プロセッサ１０２と同じチップ・パッケージ内に含まれている。
【００１６】
プロセッサメモリ・バス１０１には、コンピュータ・システム内の他の装置（例えば、プロセッサ１０２など）が使用するためにデータと命令を一時的に格納するためのレベル３（Ｌ３）キャッシュ・メモリ１１１と、Ｌ３キャッシュ・メモリ１１１へのアクセスを制御するためのＬ３キャッシュ制御装置１１０も結合されている。
【００１７】
メモリ制御装置１２２は、プロセッサ１０２用の情報と命令を格納するためのランダム・アクセス・メモリ（ＲＡＭ）またはその他のダイナミック記憶装置１２１（一般にメイン・メモリと呼ばれる）へのアクセスを制御するためにプロセッサメモリ・バス１０１に結合されている。
【００１８】
入出力ブリッジ１２４は、プロセッサメモリ・バス１０１または入出力バス１３１のいずれか一方にある装置に通信経路またはゲートウェイを提供し、もう一方のバス上の装置にアクセスするかまたはその装置間でデータを転送するためにプロセッサメモリ・バス１０１および入出力バス１３１に結合されている。ブリッジ１２４は、入出力バス１３１からのバイト／ワード／ダブルワード・データ転送トラフィックをプロセッサメモリ・バス１０１上のライン・サイズ・トラフィックに変更するなどの機能を実行する。
【００１９】
入出力バス１３１は、コンピュータ・システム内の装置間で情報をやりとりするものである。入出力バス１３１に結合された装置としては、コンピュータ・ユーザに対して情報を表示するための陰極線管、液晶ディスプレイなどのディスプレイ装置１３２、コンピュータ・システム内の他の装置（例えば、プロセッサ１０２）に情報やコマンド選択を連絡するための英数字キーおよびその他のキーを含む英数字入力装置１３３、カーソルの動きを制御するためのカーソル制御装置１３４などがある。しかも、コンピュータ・イメージの視覚表現を出力するためのプロッタまたはプリンタなどのハード・コピー装置１３５、情報と命令を格納するための磁気ディスクおよびディスク・ドライブなどの大容量記憶装置１３６も入出力バス１３１に結合することができる。
【００２０】
当然のことながら、本発明の他の実施形態では上記の構成要素をすべて含む必要はないが、実施形態によっては追加の構成要素を必要とするかまたは含むものもある。例えば、所与の実施形態では、Ｌ３キャッシュ制御装置１１０とＬ３キャッシュ・メモリ１１１が必要ではない可能性がある。また、このコンピュータ・システムは、プロセッサメモリ・バス１０１に結合された追加のプロセッサを含むことができる。この追加のプロセッサは、プロセッサ１０２と同様または同一のプロセッサなどの並列プロセッサを含むか、またはディジタル信号プロセッサなどの補助プロセッサを含むことができる。このような実施形態では、プロセッサ１０２と追加のプロセッサ（複数も可）がプロセッサメモリ・バス１０１上に直接存在する。その他の実施形態では、情報を表示するためにディスプレイ装置を設ける必要がない場合もある。
【００２１】
本発明のバス・トランザクション 
本発明では、コンピュータ・システム内の装置およびユニットがプロセッサメモリ・バス上でバス・トランザクションを実行する。一実施形態では、プロセッサメモリ・バスのうちのアドレス・バスと制御バスの一部分が相俟って、要求を開始したり、要求に応答するための「要求」バスとして機能する。要求の開始側（例えば、要求側エージェント）は要求タイプとアドレスを転送するためにこの「要求」バスを使用し、要求の監視側（例えば、応答側エージェント）は出されたトランザクションに関する自分の状況または応答を転送するために同じバスを使用する。データ・バスは読取り中または書込み中のデータを転送するものである。
【００２２】
一実施形態のバス活動は、操作別、トランザクション別、フェーズ別に階層的に構成されている。操作とは、自然に位置合せされたメモリ位置の読取りなど、ソフトウェアにとってアトミックと思われるバス手順である。１つの操作を実行するには、通常、１つのトランザクションが必要であるが、要求と応答が別々のトランザクションになるような据置かれた応答の場合など、複数のトランザクションが必要な場合もある。１つのトランザクションは、データ・バス上での応答開始型データ転送による要求バス・アービトレーションからの単一要求に関連する１組のバス活動である。
【００２３】
１つのトランザクションは最高６つのフェーズを含む。しかし、所与のフェーズは、トランザクションと応答タイプに基づく任意選択のものである。フェーズは、特定の信号グループを使用して特定タイプの情報をやりとりする。一実施形態の６つのフェーズは以下の通りである。
アービトレーション 
要求 
エラー 
スヌープ 
応答 
データ 
【００２４】
データ・フェーズは、任意選択のもので、トランザクションがデータ・バス上でデータを転送する場合に使用する。データ・フェーズは、要求を開始した時点でデータが使用可能になる場合（例えば、書込みトランザクション）は要求開始型であり、トランザクション応答を生成した時点でデータが使用可能になる場合（例えば、読取りトランザクション）は応答開始型である。
【００２５】
様々なトランザクションによる様々なフェーズはオーバラップさせることができ、それにより、バスの使用法がパイプライン化され、バスのパフォーマンスが改善される。図２は、データ転送を伴う２つのトランザクション用のトランザクション・フェーズを示すタイミング図である。図２を参照すると、要求側エージェントがそのバスを所有していない場合、トランザクションはアービトレーション・フェーズから始まり、そこで要求側エージェントがバスの所有者になる。
【００２６】
要求側エージェントがバスの所有者になった後、トランザクションは要求フェーズに入り、そこでバスの所有者が要求とアドレス情報をバス上で励起する。要求フェーズの持続期間は２クロック分である。第１のクロックでは、スヌープとメモリ・アクセスを開始するのに十分な情報とトランザクション・アドレスとともに、ＡＤＳ＃信号が励起される。第２のクロックでは、その他のトランザクション情報とともに、要求の識別に使用する情報（例えば、トークン）とトランザクションの長さに関する情報が励起される。
【００２７】
要求フェーズ後、新しいトランザクションは、先入れ先出し（ＦＩＦＯ）待ち行列である順序通り待ち行列に入る。要求側エージェントを含むすべてのバス・エージェントは、順序通り待ち行列を管理し、それぞれの新しい要求をこの待ち行列に追加する。順序通り待ち行列の詳細については、１９９４年３月１日に出願され、本発明の法人譲受人に譲渡され、参照により本明細書に組み込まれる、「Ｈｉｇｈｌｙ Ｐｉｐｅｌｉｎｅｄ Ｂｕｓ Ａｒｃｈｉｔｅｃｔｕｒｅ」という名称の米国特許出願第０８／２０６３８２号を参照されたい。図２では、例えば、要求１は、Ｔ３で励起され、Ｔ４で監視され、Ｔ５で始まる順序通り待ち行列に入る。
【００２８】
あらゆるトランザクションの第３のフェーズは、要求フェーズの３サイクル後のエラー・フェーズである。エラー・フェーズは、その要求によって引き起こされた即時（パリティ）エラーを示す。
【００２９】
エラー・フェーズで示されたエラーのためにトランザクションが取り消されない場合、要求フェーズから４サイクル以上後のスヌープ・フェーズに入る。スヌープ・フェーズの結果は、トランザクションについて励起されたアドレスが任意のバス・エージェントのキャッシュ内の有効または変更済み（汚れた）キャッシュ線を参照するかどうかを示す。また、スヌープ・フェーズの結果は、トランザクションが順序通りに完了するか、または可能な順不同完了のために据え置かれるかも示す。
【００３０】
トランザクションは、順序通り待ち行列全体にわたってＦＩＦＯ順序で進行する。順序通り待ち行列内の一番上のトランザクションは応答フェーズに入る。応答フェーズは、トランザクションが失敗したかまたは成功したか、トランザクション完了が即時かまたは据置きか、トランザクションが回収されるかどうか、トランザクションがデータ・フェーズを含むかどうかを示す。
【００３１】
有効なトランザクション応答は、正常データ、暗黙書戻し、データなし、ハード障害、据置き、再試行である。
【００３２】
トランザクションがデータ・フェーズを備えていない場合、トランザクションは応答フェーズ後に完了する。要求エージェントが転送すべき書込みデータを備えているか、または読取りデータを要求している場合、トランザクションは、応答フェーズ後まで延長可能なデータ・フェーズを備えている。
【００３３】
一実施形態では、すべてのトランザクションがすべてのフェーズを含むわけではなく、すべてのフェーズが順序通りに発生するわけではなく、一部のフェーズはオーバラップする場合もある。エラー・フェーズで取り消されないすべてのトランザクションは、要求フェーズと、エラー・フェーズと、スヌープ・フェーズと、応答フェーズを備えている。また、次のトランザクションを励起するエージェントがすでにバスを所有していない場合にのみ、アービトレーション・フェーズが発生すればよいので、アービトレーションは明示的な場合もあれば、暗黙の場合もある。データ・フェーズは、トランザクションがデータ転送を必要とする場合のみ発生する。データ・フェーズは、不在、応答開始型、要求開始型、スヌープ開始型、要求およびスヌープ開始型のいずれかになりうる。読取りトランザクション（要求開始型データ転送またはスヌープ開始型データ転送）の場合、応答フェーズはデータ・フェーズの先頭とオーバラップする。書込みトランザクション（要求開始型データ転送）の場合、要求フェーズがデータ・フェーズを引き起こす。
【００３４】
本発明のバス・プロトコル 
本発明では、バス・プロトコルに応じてプロセッサメモリ・バス上で操作が行われる。本発明のコンピュータ・システム内の装置およびユニットは、要求側エージェントと応答側エージェントの両方を表す。要求側エージェントは、１つまたは複数の完了信号と、任意で別の装置からのデータの受信を伴うバス操作を要求できる装置である。応答側エージェントは、必要な信号と、任意で要求に応答するデータを送信することによって要求に応答できる装置である。分割トランザクションに対応できる応答側エージェントは本明細書では「スマート」応答側エージェントと呼ばれ、分割トランザクションに対応できない応答側エージェントは本明細書では「ダム」応答側エージェントと呼ばれる。ただし、以下の説明では、「エージェント」という用語と「装置」という用語を取換え可能な使い方をする場合があることに留意されたい。
【００３５】
本発明では、バス・トランザクションは、パイプライン化方式でコンピュータ・システム内のバス上で行われる。即ち、複数のバス・トランザクションが同時に保留になる場合があり、それぞれが完全に完了していない。従って、要求側エージェントがバス・トランザクションを開始すると、バス・トランザクションだけが現在保留中のいくつかのバス・トランザクションの１つになる場合がある。バス・トランザクションはパイプライン化されるが、本発明のバス・トランザクションは順序通りに完全に完了する必要はない。本発明では、据置きトランザクションをサポートすることにより、要求に対する完了応答の一部を順不同にすることができる。非分割トランザクションは順序通りに完了する。
【００３６】
本発明では、１つのバス操作を２つの独立バス・トランザクションに本質的に分割することにより、据置きトランザクションに対応する。第１のバス・トランザクションは、要求側エージェントによる要求（データまたは完了信号を求める）と、応答側エージェントによる応答とを伴う。要求は、アドレス・バス上でのアドレスの送信を含むこともできる。また、要求は、その要求を識別するために要求側エージェントが使用するトークンの送信を含むこともできる。応答は、応答側エージェントが応答する準備ができている場合に完了信号（およびおそらくデータ）の送信を含むことができる。この場合、バス・トランザクションならびにバス操作が終了する。しかし、応答側エージェントが要求に対して応答する準備ができていない（例えば、完了信号または任意のデータあるいはその両方の準備ができていない）場合、応答は、要求に対するその応答が据え置かれることになるという表示を要求側エージェントに対して出力することを含むことができる。この表示は、本明細書では据置き応答と呼ぶことにする。
【００３７】
据置き応答の場合、バス操作は、要求側エージェントがトランザクションを完了するように、応答側エージェントから要求側エージェントへ完了信号と要求されたデータ（ある場合）とを伴う据置かれた応答を送信することを含むような、第２のトランザクションを含む。一実施形態の据置かれた応答は、完了信号（およびおそらくデータ）と、比較要求識別情報とを含む。要求識別情報はトークンを含む。即ち、要求側エージェントが据置かれた応答を元の要求に関連付けることができるように、トークンは応答側エージェントによって要求側エージェントに再送信される。本発明の一実施形態による据置きおよび非据置きバス・トランザクションについては、図３の流れ図に示す。
【００３８】
図３を参照すると、要求側エージェントが要求を行うために使用するものとしてアドレスおよび制御バスの所有権についてアービトレーションを行うと、据置きであるか非据置きであるかを問わず、バス・トランザクションが始まる（処理ブロック３００）。ただし、制御バスはコマンドを指定するために一部が使用されることに留意されたい。それらのコマンドは各バス・トランザクションを定義する。本発明では、要求側エージェントは、アドレス・バスについてアービトレーションを行い、コマンドの指定に使用するアドレスおよび制御信号を励起する。アービトレーションに勝つと、要求側エージェントは、アドレス・バス上にアドレスの形式で要求を励起し（処理ブロック３０１）、当技術分野で周知のやり方で必須制御信号を励起し、アドレス・バス上に第１のトークンを励起する（処理ブロック３０２）。一実施形態では、２つの連続クロック中にアドレスと第１のトークンがバス上に励起される。このトークンは、それが関連する要求の表示とともに、保留要求待ち行列と呼ばれる待ち行列に格納される。
【００３９】
要求がバス上に置かれると、どの装置が応答側エージェントになるべきかという判定が行われる（処理ブロック３０３）。この判定は、アドレス・バス上に励起されたアドレスを応答側エージェントが認識することを含む。一実施形態の応答側エージェントは、要求のアドレスを含むアドレス空間にマッピングされる装置である。
【００４０】
次に応答側エージェントは、それが応答する準備ができているかどうかを判定する（処理ブロック３０４）。読取り操作の場合は、要求されたデータが使用可能であれば、応答側エージェントは応答する準備ができている。書込み操作の場合は、受信したときにそれが書込み操作の完了を開始すれば、応答側エージェントは応答する準備ができており、ポスト書込みが可能であれば、応答側エージェントは、データとアドレスを受信後ただちに応答する準備ができている（データの実際の書込みは後で終了する）。応答側エージェントが応答する準備ができている場合、応答側装置は「順序通り」完了応答表示を送信し、適切な時期にデータ・バス上で必要な信号またはデータを励起し（処理ブロック２０５）、それにより、バス・トランザクションと、バス操作を非据置きとして終了する。
【００４１】
応答側エージェントがバス・トランザクションを完了する準備ができていない場合、応答側エージェントはアドレス・バスから第１のトークンをラッチし、その適切な応答時期に据置き応答を送信する（処理ブロック３０６）。読取り操作の場合に応答側エージェントが応答を要求されている時間までにデータの準備ができていない場合、応答側エージェントは応答する準備ができていない可能性がある。入出力装置への書込みの場合などには、書込み操作が完全に終了するまで、応答側エージェントは応答する準備ができていない可能性がある。
【００４２】
要求側エージェントは、適切な時期にバス上で据置き応答を受信する（処理ブロック３０７）。適切な時期はシステム・バスのパイプライン特性によって示されるが、これについては以下に詳述する。
【００４３】
応答側エージェントが最終的に要求を満足できるようになる前に要求側エージェントが据置き応答を受信した後、バス上でいくつかの追加バス・トランザクションを実行することができる。応答側エージェントが据置きバス操作を完了する準備ができている（例えば、データが応答側エージェントにとって使用可能になる）と、応答側エージェントはアドレス・バスおよび制御バスの所有権についてアービトレーションを行う（例えば、制御バス（処理ブロック３０８））。
【００４４】
応答側エージェントに所有権が許諾されると、応答側エージェントは据置かれた応答を送信する（処理ブロック３０９）。据置かれた応答の一部として、応答側エージェントはアドレス・バス上で第２のトークンを送信し、制御バス上で据置かれた応答信号（例えば、コマンド）を送信し、データ・バス上で適切なデータを送信する。一実施形態では第２のトークンが第１のトークンと同じであるが、他の実施形態では第１のトークンと第２のトークンが同じではなく、エージェントが互いに正しく関連付けを行えるようにするための固有の関係が存在する場合もある。
【００４５】
要求側エージェントは、他のエージェントとともにアドレス・バスを監視し、トークンを受け取る（処理ブロック３１０）。要求側エージェントは第２のトークンをラッチする。次に要求側エージェントは、応答側エージェントから送られた第２のトークンがその保留要求待ち行列内の未解決トークンの１つと一致するかどうかを判定する（処理ブロック３１１）。このような場合、要求側エージェントは、応答側エージェントから送られた第２のトークンと第１のトークン、または要求側エージェントに格納されたその他のトークンとの間でトークンの突合せを行う。ただし、本発明では、要求側エージェントがアドレスとエージェントＩＤについてアドレス・バスを必ず監視しており、アドレス・バス上の信号がエージェントにマッピングされたアドレス範囲内のアドレスを表しているかどうか、またはその信号がトークンを表しているかどうかを絶えず判定することに留意されたい。
【００４６】
応答側エージェントからの第２のトークンが第１のトークンと一致しないと要求側エージェントが判定した場合、データ・バス上のデータと完了信号（複数も可）は無視される（処理ブロック３１２）。応答側エージェントからの第２のトークンが第１のトークンと一致すると要求側エージェントが判定した場合、データ・バス上の据置かれた応答データまたは完了信号あるいはその両方は、最初に要求側エージェントによって要求されたデータまたは完了信号であり、要求側エージェントは完了信号を受信するか、データ・バス上でデータをラッチし（処理ブロック３１３）、その結果、第２のバス・トランザクションを完了する。元の要求に対応する完了信号またはデータあるいはその両方を受信後、バス操作全体が終了する。従って、バス・トランザクションは応答側エージェントと要求側エージェントとの間で行われ、元のバス操作は完了する。
【００４７】
装置が応答側エージェントであると判定された後、応答側エージェントは、バスがそのパイプライン特性を確実に維持できるようにするための応答の生成を担当する。応答側エージェントは、適切な時期に要求されたバス・トランザクションを完了できない場合がある。例えば、要求されたデータが使用可能ではない場合がある。データが使用可能ではない理由は多数ある。例えば、特定の装置のアクセス時間が長いためにデータが使用可能ではない場合がある。また、特定の装置の構造または特性のために、要求を満足するための応答の準備が完了するまでに多数のサイクルを必要とする場合もある。従って、応答側エージェントが適切な時期に要求されたバス・トランザクションを完了できない場合、応答側エージェントは据置き応答を送信する。応答側エージェントは、要求されたデータまたは完了信号（応答する準備ができている場合）あるいは据置き応答を含む据置き完了表示（要求された完了信号または要求されたデータを供給できない場合）を適切な時期に送信する。
【００４８】
応答側エージェントが応答を生成するための適切な時期は、アドレス・バス上で発生した要求とともにデータ・バス上での応答の順序を維持し、それにより、本発明のバスのパイプライン特性を確実にするために、応答側エージェントが何らかのタイプの応答で応答しなければならない時期として定義される。即ち、データ・バス上の「応答」の順序は、アドレス・バス上の「要求」と同じ順序でなければならない。従って、特定の要求に対する何らかのタイプの応答は、アドレス・バス上の特定の要求の直前に行われた要求の応答後に、データ・バス上に現れなければならない。然るべき時間（例えば、１０バス・クロック）内に何らかのタイプの応答が可能ではない場合、その生成を担当するエージェントによって後続の応答がすべて停止され、システム・パフォーマンスが損なわれる。ただし、応答自体も停止される可能性があることに留意されたい。
【００４９】
据置かれた応答を必要とする複数の保留要求に対応するため、据置き応答でバス・サイクルを完了すると、応答側エージェントは、１つまたは複数の要求が保留の間に応答側エージェントが複数の要求に対応できる場合に特定の要求で据置かれた応答を指定できなければならない。例えば、データがキャッシュ・メモリ（例えば、Ｌ３キャッシュ・メモリ）から要求され、キャッシュ制御装置が据置き応答を送信すると、この要求が保留の間にキャッシュ・メモリにアクセスする予定の場合、応答側エージェント（例えば、キャッシュ制御装置）は、それを要求した要求にとって使用可能になっているデータを関連付けるための機構を含む必要がある。一実施形態の処理ブロック３０６では、据置き応答が生成される据置かれた要求（および関連トークン）を応答側エージェントが格納する。
データが使用可能になると、応答側エージェントは、格納したトークンと据置かれた要求を使用して、データの宛先を識別することができる。同一キャッシュ線への複数の要求がある場合など、応答側エージェントが据置き応答を出力すると、そのエージェントは一貫性の維持を担当する。
【００５０】
応答側エージェントによってラッチされたトークンは、応答側エージェントによって行われたときに要求側エージェントへの応答を識別するために、要求側または応答側エージェントとの間の今後の参照として使用される。要求側エージェントは、（それが関連付けられた要求の表示とともに）トランザクション保留待ち行列に格納されたトークンを使用して、その要求への応答がないかどうか監視する。応答側エージェントがバス・トランザクションを完了する準備ができていると、同じトークン（要求の送信時に使用）がアドレス・バス上で送信される。
【００５１】
一実施形態では、アドレス・バスがアドレスの代わりにトークンを有することをバス上のエージェントに示すために、特殊コマンドを使用する。要求側エージェントによって最初に要求されたデータが（データ・バス上に）ある場合、そのデータは特殊コマンド（例えば、制御信号（複数も可））に関連付けられている。このようにして、その後送信されるトークンによって、要求側エージェントとの接触が再確立される。
【００５２】
据置き操作 
バス・トランザクションの要求フェーズ中、エージェントは、トランザクションに据置かれた応答を出すことができるかどうかを示すために据置きイネーブル（ＤＥＮ＃）信号をアサートすることができる。ただし、「＃」という記号は、その信号がアクティブ・ローであることを示すことに留意されたい。ＤＥＮ＃信号がアサート解除されると、トランザクションは据置かれた応答を受信しないはずである。一実施形態では、バスロック操作内のすべてのトランザクション、据置き応答トランザクション、書戻しトランザクションは据え置くことができない。また、トランザクション待ち時間感知エージェントも、ＤＥＮ＃信号機構を使用して、限定待ち時間内のトランザクション完了を保証することができる。
【００５３】
ＨＩＴＭ＃信号とともにＤＥＦＥＲ＃信号は、応答を据え置くべき時期を決定するために使用する。ＨＩＴＭ＃信号は、アサートされると、キャッシュ内の変更済みデータの存在を示す。トランザクションの順序通りの完了は、アサート解除されたＤＥＦＥＲ＃信号またはスヌープ・フェーズ中にアサートされたＨＩＴＭ＃信号と、その後の応答フェーズ中の通常完了または暗黙書戻し応答によって示される。据置きイネーブル（ＤＥＮ＃）信号が非活動状態になる（そしてＨＩＴＭ＃信号がアサート解除される）と、トランザクションは順序通りに完了することができるか、または再試行できるが据え置くことができない。従って、据置かれた応答をサポートできないバス・エージェントは、互換性を保つためにこれを使用することができるが、トランザクションは前述のように順序通りに完了するか、または再試行する必要がある。ＤＥＦＥＲ＃信号がアサートされ、スヌープ・フェーズ中にＨＩＴＭ＃信号が非アサートされ、その後、応答フェーズ中に再試行応答が続くと、トランザクションを再試行することができる。即ち、据置かれた応答をサポートできないバス・エージェントは、応答フェーズの時点で必要な応答を出力できない場合、再試行応答を出力することになる。
【００５４】
据置きイネーブル（ＤＥＮ＃）がアサートされると、トランザクションは、順序通りに完了するか、再試行するか、または据え置くことができる。トランザクションが据置かれた応答を受信する予定であると、スヌープ・フェーズ中にＤＥＦＥＲ＃信号がアサートされ（ＨＩＴＭ＃信号はアサート解除される）、その後、応答フェーズで据置き応答が続く。
【００５５】
ＤＥＦＥＲ＃信号をアサートすることは、トランザクションによってアドレス指定されたエージェントの責任である。他の実施形態では、その責任を第三者エージェントに与えることができ、そのエージェントはアドレス指定されたエージェントに代わってＤＥＦＥＲ＃信号をアサートすることができる。
【００５６】
本発明では、要求側エージェントは、アサートされた据置きイネーブル（ＤＥＮ＃）信号とともに要求フェーズで出されたすべての未解決トランザクションを据置かれた応答で完了できると想定している。出された各トランザクションが据置かれた応答を受信できる可能性を反映するため、要求側エージェントは、本明細書で保留要求待ち行列と呼ばれる内部未解決トランザクション待ち行列を管理する。待ち行列内の各項目にはＩＤが１つずつ付いている。待ち行列項目の数（およびＩＤの数）はエージェントが出して保留にすることができる要求の数と等しい。第２のトランザクションの据置かれた応答中、要求側エージェントはアドレス・バス上で送信された応答をその保留要求待ち行列内のすべての据置きＩＤと比較しなければならない。ＩＤが一致すると、要求側エージェントは、その待ち行列から元のトランザクションを回収し、操作を完了することができる。
【００５７】
応答側エージェントがトランザクションの順序通りの完了を保証できない場合、応答側エージェントはそのトランザクションのスヌープ・フェーズでＤＥＦＥＲ＃信号をアサートし、そのトランザクションが据置かれた応答を受信するかまたは打ち切られる予定であることを示す。別のキャッシュ・エージェントがスヌープ・フェーズでＨＩＴＭ＃信号（キャッシュ内の変更済み行へのヒットを示す）をアサートすることによりＤＥＦＥＲ＃信号が指定変更されない場合、応答側エージェントはトランザクション応答を所有する。応答側エージェントの応答はその応答方針によって決まる。応答側エージェントが後続の独立バス・トランザクションで要求を完了することができ、それを望んでいる場合、そのエージェントは据置き応答を生成する。
【００５８】
据置き応答を出した後、応答する準備ができると、応答側エージェントは、その応答が据え置かれた前の要求を完了するために第２の独立バス・トランザクションを出す。この第２のトランザクションは、前のトランザクションを完了するためにデータを返す場合もあれば（例えば、読取り操作の場合）、単に前のトランザクションの完了を示すだけの場合もある（例えば、書込み操作の場合）
。
【００５９】
図４は、据置き応答と、その後に続く読取り操作に対する対応した据置かれた応答とを示している。図４を参照すると、Ｔ１で要求側エージェントはＡＤＳ＃信号をアサートし、有効なバス定義とアドレスが制御バスとアドレス・バス上にあることを示す。また、Ｔ１では、要求側エージェントが｛ＲＥＱＵＥＳＴ｝
グループを励起し、行読取り要求を出す。Ｔ２では、要求側エージェントがトークンをアドレス・バスに励起する。アドレスとトークンはＴ２とＴ３でアドレス指定されたエージェントによってそれぞれラッチされる。
【００６０】
スヌープ・フェーズでは、アドレス指定されたエージェントは、トランザクションを順序通りに完了できないことを判定し、そのため、Ｔ５でＤＥＦＥＲ＃信号をアサートする。Ｔ６におけるＨＩＴＭ＃信号のアサート解除状態のために、アドレス指定されたエージェントはＴ７で応答側エージェントになる。応答側エージェントは、ＲＳ［２：０］＃信号での適正な符号化をアサートすることにより、Ｔ７で据置き応答を返す。ＲＳ［２：０］＃信号は、据置き応答を含む、様々なタイプの応答を符号化するために使用する。ただし、応答側エージェントはアドレス・バスからラッチされたトークンを格納することに留意されたい。
【００６１】
アドレス指定された応答側エージェントは、Ｔ９より前に、元の要求で要求されたデータを入手する。Ｔ９で応答側エージェントは、元のトランザクションからのトークンをアドレスとして使用して第２のトランザクションを出す。Ｔ１３で応答エージェントは、ＨＩＴＭ＃信号とＨＩＴ＃信号に関する有効な情報を励起し、返された行の最終キャッシュ状態を示す。要求側エージェントはスヌープ責任をピックアップする。Ｔ１５で応答側エージェントは、正常完了応答を励起し、必要であれば任意のデータ・フェーズを開始する。応答側エージェントは、バス上のデータとともに正常完了応答を返し、Ｔ１５〜Ｔ１８中にデータを励起し、それはＴ１６〜Ｔ１９中に受信される。Ｔ２１では、第１および第２のトランザクションを含むバス操作全体が完了する。
【００６２】
Ｔ１０で要求側エージェントが第２のトランザクションを監視することに留意されたい。要求側エージェントは、アドレス・バスから受信したトークンを元の要求に対応するトークンと比較する。要求側エージェントは、Ｔ１４で返されたキャッシュ線の最終状態を監視する。Ｔ１６で要求側エージェントは、据置かれた応答を受信し、その保留要求待ち行列（および順序通り待ち行列）からそのトランザクションを除去する。これでバス操作が完了する。
【００６３】
一実施形態では、コンピュータ・システム内のメモリ・エージェントまたは入出力エージェントは、バス・ロック要求以外の要求、別の据置かれた応答トランザクション、または明示書戻しのために指定されたキャッシュ線書込みの際に応答を据え置くことができる。
【００６４】
本発明の据置かれた応答は元のトランザクションを「覚醒」させる。即ち、元のトランザクションは、要求側エージェントがそのトランザクションを開始した場合と同様に、続行し、完了する。例えば、メモリ・エージェントがシステム内のプロセッサに据置かれた応答を返す場合、メモリ制御装置はマスタではなく、プロセッサはそれがトランザクションを開始した場合と同様に動作し、バス上のハンドシェーキングに応答する。
【００６５】
据置かれた応答を受信すると、順序通り待ち行列からトランザクションが除去される。元の要求を完了するため、応答側エージェントはバス上で第２の独立トランザクションを開始する。元のトランザクション中にラッチされたトークン（例えば、据置かれた応答ＩＤ）は、第２のトランザクションの要求フェーズでアドレスとして使用される。
【００６６】
一実施形態のトークン（例えば、据置きＩＤ）は、２つの４ビット・フィールドに分割された８ビット、即ち、ＤＩＤ［７：０］＃を含む。トークンの例は図５に示す。このトークンは、元のトランザクションの要求フェーズの第２のクロック中にＡ［２３：１６］＃（ＤＩＤ［７：０］＃を伝達する）上で転送される。アドレス・バス線Ａ［２３：２０］＃は応答エージェントＩＤを含むが、これは応答側エージェントごとに固有のものである。アドレス・バス線Ａ［１９：１６］＃は、その内部待ち行列に基づいて要求エージェントによって割り当てられた要求ＩＤを含む。１７個以上の未解決据置き要求をサポートするエージェントは複数のエージェントＩＤを使用することができる。一実施形態では、コンピュータ・システムのプロセッサがサポートできるのは、４つの未解決据置き要求だけである。
【００６７】
トランザクションを完了するため、アドレス・バスを使用してトークンを返すが、これはＤＩＤ［７：０］＃上で要求とともに送信されたものである。第２のトランザクションの要求フェースでは、要求フェーズの第１のクロックでＡ［２３：１６］＃上でトークンが励起される。要求フェーズの第２のクロックでは、応答側エージェントのＩＤとトランザクションＩＤが励起される（ただし、元の要求側エージェントによって使用されることはない）。応答フェーズ中、据置かれた応答は、データ・フェーズ中のデータとともに励起される。応答側エージェントは、Ａ［２３：１６］＃上で返されたトークンをデコードし、それを前に据え置かれた要求と比較する。要求側エージェントは、Ａ［２３：２０］＃をそのエージェントＩＤと比較し、一致があるかどうかを確認する。一致している場合、要求側エージェントはＡ［１９：１６］＃をインデックスとして使用し、その保留要求待ち行列内の適正項目を指し示す。（一致ハードウェアの例については図６に示す。）
【００６８】
応答側エージェントの実施形態 
本発明では、一部の応答側エージェントは一切要求を据え置かず、一部の応答側エージェントは必ず要求を据え置き、一部の応答側エージェントは所与の操作については要求を据え置き、他の操作については据え置かない。
【００６９】
上記の実施形態では、１つのエージェントが据置き操作のメモリ・エージェントまたは入出力エージェントになることができる。
【００７０】
Ｌ３キャッシュ制御装置１１０などのキャッシュ・メモリ制御装置がコンピュータ・システム内にある場合、キャッシュ制御装置は、読取りデータがキャッシュ・メモリ内でただちに使用可能ではないときに読取り操作時に据置かれた応答を生成することもできる。その場合、Ｌ３キャッシュ制御装置は、メイン・メモリ１２１などのメモリからデータを入手し始めると同時に、Ｌ３キャッシュ・メモリ内で使用可能なデータに関する後続要求に対応する。読取り応答の準備ができると、Ｌ３キャッシュ制御装置はバスについてアービトレーションを行い、読取りデータを返す。
【００７１】
入出力ブリッジがコンピュータ・システム内にある場合、入出力ブリッジはバス・トランザクションを据え置くことができる。ただし、通常、これは、ＰＣＩ、ＥＩＳＡ、ＩＳＡ、ＭＣＡ、ＰＣＭＣＩＡ、ＶＥＳＡ規格などの入出力バス規格に応じて実行されることに留意されたい。一般に、入出力バス上に存在する装置へのアクセスは、メモリ装置に出されたアクセスより完了までに要する時間が長い。複数の要求側エージェントから生成された要求を含む高パイプライン化バスでは、入出力操作とメモリ操作の混合が発生する。後続メモリ・アクセスでの入出力アクセスの停止効果を解消するため、本発明の入出力ブリッジは、それ自体（および入出力バス上の装置）に向けられたアクセスに対する据置かれた応答を生成することができる。一実施形態では、本発明の入出力ブリッジは、複数のバス要求を据え置くのに必要なハードウェアを備えている。応答の準備ができると、入出力ブリッジはバスについてアービトレーションを行い、据置かれた応答（第２の独立トランザクション）を開始する。
【００７２】
トークン生成と認識ハードウェア 
本発明では、据置きプロトコルを使用するために、要求側エージェントと応答側エージェントのそれぞれが追加の機能性をサポートしている。本発明では、据置きおよび据置かれた応答が可能なエージェントはバス・マスタとして機能する。本発明によるバス・マスタになるには、バスについてアービトレーションを行い、要求転送サイクルを実行する能力を含む。このため、応答エージェントは、応答側エージェントによる据置き応答の出力後に完了信号またはデータの準備ができると、第２のトランザクションを開始し、バスの制御権を獲得することができる。例えば、プロセッサは一般にバス・マスタである。これに対して、メモリ制御装置は一般にバス・マスタではないので、バス操作を完了するためにその後のトランザクションを開始するこの能力を備える必要があるはずである。
【００７３】
図示の実施形態では、トークン生成は要求側エージェントの責任である。本発明のトークンの一実施形態は図５に示す。図５を参照すると、トークン５０１は８ビットで構成され、要求側エージェントの内部保留要求待ち行列内の据置き要求の位置を示す位置ＩＤ５０２と、トークンの発生源を示す要求側エージェントＩＤ５０３という２つの構成要素に分割されている。（保留要求待ち行列については、以下に詳述する。）要求側エージェントＩＤ５０３は４ビットで構成されている。要求側エージェントＩＤ５０３は、５ビット以上または４ビット未満のいずれでも構成することができる。例えば、要求側エージェントＩＤ５０３は３ビットＩＤにすることができる。要求側エージェントのＩＤを表すために使用するビットの数は、据置かれた応答に対応可能なコンピュータ・システム内の要求側エージェントの最大数を示す。例えば、ＩＤ用に４ビットを使用することにより、据置き可能な応答を生成する１６個の要求側エージェントがバス上に存在することができる。
【００７４】
図５に示すように、要求側エージェントの保留要求待ち行列内の要求の位置を示すために使用するビットの数は、４ビットから構成される。要求の位置は、５ビット以上または４ビット未満のいずれかを使用して記述することができる。
例えば、要求位置は２ビットの数値にすることができる。要求の位置を記述するために使用するビットの数は、要求待ち行列のサイズを示す。例えば、位置要求用に４ビットを使用することは、要求待ち行列が別々にアドレス可能な項目を最高１６個備えることができることを意味する。
【００７５】
据置かれた応答が可能な応答側エージェントは、据置き応答の出力時にアドレス・バスからラッチされたトークンを格納するために内部据置き要求待ち行列を管理する。一実施形態では、この待ち行列は１６個の項目を含むが、それより多くても少なくてもよい（例えば、２〜３２個の項目）。本発明では、比較ハードウェアは実際に据え置かれる項目のみをサポートすればよいので、待ち行列の深さが小さくても十分である。
【００７６】
応答側エージェント内の要求待ち行列の一実施形態は図６に示す。図６を参照すると、要求待ち行列６００は複数の項目を備え、各項目は複数のフィールドを含むものとして示されている。一実施形態の待ち行列６００は１６項目待ち行列である。本発明の各項目行は、トークン・フィールド６０１と、要求フィールド（ＲＥＱ）６０２と、バイト・イネーブル（ＢＥ）フィールド６０３と、アドレス・フィールド６０４とを備えている。ＲＥＱフィールド６０２とＢＥフィールド６０３とアドレス・フィールド６０４は、待ち行列６００内のトークン・フィールド６０１内の各トークンに対応するトランザクション情報を表す。ＲＥＱフィールド６０２は、２つの要求フィールドを使用して、要求のタイプを格納する。ＢＥフィールド６０３は、要求をさらに修飾する際に使用するバイト・イネーブル情報を格納する。アドレス・フィールド６０４はアドレスを格納する。
【００７７】
一実施形態のトークン・フィールド６０１は４ビットを含み、インデックスを表し、ＲＥＱフィールド６０２は５ビット×２を含み、ＢＥフィールド６０３は８ビット多重化を含み、アドレス・フィールド６０４は３６ビットを含む。トークン・フィールド６０１は、ハードウェアでは暗黙のものにすることができるので、ハードウェアで物理的に実現することができない。一実施形態のトークン・フィールド６０１は、待ち行列内の項目の位置がトークン・フィールドの内容と同じであるときにはハードウェアで実現されない。ただし、トークン・フィールドのインデックスは無作為に生成した値にすることができることも留意されたい。
【００７８】
また、図６には、エージェントＩＤを表すトークン（例えば、ラッチからのもの）のうちの４ビットを受け取り、それをエージェントのＩＤと比較して、一致が存在するかどうかを確認するための比較論理回路も示されている。一致が存在する場合、代表エージェントは残りの４ビットを待ち行列へのインデックスとして使用する。
【００７９】
応答側エージェントが据置き応答の出力を希望する時点で、応答側エージェントは、アドレス・バスからラッチしたトークンを格納するために据置き要求待ち行列内のトランザクション用の項目を割り当てる。応答側エージェントの待ち行列内の割当て済み項目は、そのトークンと、ＲＥＱ、ＢＥ、アドレスの各フィールドを格納する。トランザクションの完了後、応答側エージェントは、要求バスの所有者になり、第２のバス・トランザクションを開始して据置かれた応答を出力する。また、応答側エージェントは、据置き要求待ち行列内の空き待ち行列項目も再利用する。
【００８０】
本発明の要求側エージェントは、要求保留待ち行列の管理とトークン生成のための論理回路を含む。上記の説明に基づくと、この論理回路は、十分当業者の能力の範囲内のものなので、これ以上説明しない。また、応答側エージェントもその待ち行列を管理するための論理回路を備えている。応答側エージェントは、据置き要求が処理されている間にバスの新しい要求に対して適切なアクションを行えることが好ましい。応答側エージェントには、新しい要求のアドレスと据置き要求待ち行列内の項目のアドレスとを比較するための機能がさらに設けられている。一実施形態の各エージェントは、新しい要求のアドレスを応答側エージェントの据置き要求待ち行列に格納されたアドレスと比較するために、１６個の３１ビット・ラッチと１６個の３１ビット比較器とを含んでいる。アドレス内の下位ビットだけが比較されるように、比較器のサイズを低減することができる。肯定的な一致の場合、応答側エージェントは、すでに据え置かれた要求との競合を回避するために新しい要求を打ち切ることができる。
【００８１】
本発明の要求側エージェントは、据置かれた応答（例えば、据置き応答と据置かれた応答）を受け入れて理解することができる。本発明の要求側エージェントは、このような応答に応じて適切なアクション（複数も可）を行うこともできる。１つのアクションは、一時的に要求を中断することを含むことができる。
【００８２】
一実施形態の要求側エージェントは、要求フェーズで出されたすべての未解決トランザクションが据置き応答を受け取ることができると想定している。各要求側エージェントは、据置かれた要求（例えば、トークンとそれに関連する要求）を一時的に格納するための待ち行列を含む。従って、要求側エージェントは、新しい要求を出すためのその能力と同じサイズの内部保留要求待ち行列を管理する。保留要求待ち行列の一実施形態は図７に示す。図７を参照すると、待ち行列７００は、４つの項目を備え、各項目は要求側エージェントの要求ＩＤフィールド７０１と要求側エージェントのＩＤ用のフィールド７０２とを含む８ビットで構成されているものとして示されている。要求側エージェントＩＤ７０２は、特定の要求側エージェントの待ち行列内のすべての項目について同じである。ＩＤを表すために使用するビットの数によって、待ち行列７００内に設計された項目の数が制限される。一実施形態では、ＩＤは４ビットを含むが、待ち行列７００内の項目の総数をサポートするのに必要な数のビットを含むことができる。エージェントＩＤフィールド７０２は、エージェントのＩＤを格納するための４ビットで構成される。要求ＩＤ７０１とエージェントＩＤ７０２は相俟ってトークンを形成する。
【００８３】
据置き応答の監視時には、要求側エージェントは、未解決トランザクション待ち行列７００内の生成トークン・フィールド７０２で要求が設けられたトークンのコピーを管理する。また、要求側エージェントは、それが据置き応答を受け取った後でバスを解除するための能力も備えている。
【００８４】
一実施形態では、バス・エージェントがすでにレジスタ・ファイルまたは保留中のバス・操作のリストを含む場合、別個の要求保留待ち行列は不要である。エージェントＩＤはすべての待ち行列項目に共通なので、保留トランザクションを指定する記憶域だけが必要になる。そのバス用の操作のレコードを管理する順序通り待ち行列またはその他のメモリ記憶域は、保留要求待ち行列として使用することができる。各トランザクションは、インデックス（例えば、０、１、２、３）を使用して識別される。一実施形態では、４通りの可能な保留トランザクション用のインデックス値をサポートするために２ビットしか使用していない。１ビットまたはそれ以上用のフィールドを待ち行列に追加し、要求が据置き応答を受け取ったかどうかを示すためにそのフィールドを使用することができる。従って、別個の要求保留待ち行列は不要である。ただし、トークン生成論理回路は、記憶位置からエージェントのＩＤを獲得し、それを要求ＩＤ（例えば、バス待ち行列へのインデックス）と組み合わせてトークンを生成しなければならないはずである。
【００８５】
要求側エージェントは、返されたトークンを使用して、後で返されたデータまたは完了信号を適切な要求と突き合わせるための突合せハードウェアも含んでいる。第２の独立トランザクション中、要求側エージェントは、再送されたトークンをその保留要求待ち行列内のすべての格納トークンと突き合わせる。ＩＤが一致する場合、要求側エージェントは、操作を完了し、中断された元の要求をその保留要求待ち行列から廃棄することができる。
【００８６】
一実施形態の各要求側エージェントは、その突合せを実行するための比較器論理回路を含んでいる。一実施形態の比較器論理回路は、その突合せを実行するための８ビット比較器と、一致を識別し、その間隔タグとともに内部ユニットにデータを返すための制御論理回路から構成される。他の実施形態では、別個のエージェントＩＤおよびトランザクションＩＤ（例えば、インデックス）突合せ論理回路を使用する。トランザクションＩＤを突き合わせるための突合せハードウェアの一実施形態は図８に示す。ただし、図６に示すようなエージェントＩＤ突合せ論理回路も含むことができることに留意されたい。図８を参照すると、突合せハードウェア８００は、ラッチ８０１と、据置かれた応答に関連するトークン（またはその一部分）を格納するためのラッチ８０２〜８０５と、格納された項目と再送されたトークンとを比較するための比較器８０６〜８０９と、ＮＯＲゲート論理回路８１０とを含む。ラッチ８０１は応答トークンのうちの４ビットを受け取るように結合されている。ラッチ８０１の出力は、各比較器８０６〜８０９の一方の入力に結合されている。各比較器８０６〜８０９のもう一方の入力は、ラッチ８０２〜８０５の出力にそれそれ結合されている。各比較器８０６〜８０９の出力はＮＯＲゲート論理回路８１０の入力に結合されている。
【００８７】
一実施形態のラッチ８０１は、再送されたトークンからのトランザクションＩＤをアドレス・バスから受け取るための４ビット・ラッチを含む。ラッチ８０１は、再送されたトークンのトランザクションＩＤ内のビット数に応じたサイズになっている。ラッチ８０１は各比較器８０６〜８０９にトランザクションＩＤを供給する。要求側エージェントの保留要求待ち行列に格納された各トークンは、ラッチ８０２〜８０５を介して比較器８０６〜８０９に供給される。ラッチ８０２〜８０５は、トークンのトランザクションＩＤ内のビット数に応じたサイズになっている。
【００８８】
エージェントＩＤ突合せの実行後、各比較器８０６〜８０９は、再送されたトークンのトランザクションＩＤを格納されたトークンのトランザクションＩＤと比較する。保留要求待ち行列に格納されたトークンとの一致が存在する場合、比較器８０６〜８０９のうちの１つはハイの出力を出す。保留要求待ち行列に格納されたトークンとの一致が存在しない場合、比較器８０６〜８０９のうちのいずれもハイの出力を出さない。比較器８０６〜８０９からの出力がいずれもハイではない場合、ＮＯＲゲート論理回路８１０の一致なし出力がハイになり、それにより、再送されたトークンが要求側エージェント内の中断された要求に対応しないことを示す。比較器８０６〜８０９からの１つの出力がハイになる場合、ＮＯＲゲート論理回路８１０の一致出力がハイになり、それにより、再送されたトークンが要求側エージェント内の中断された要求に対応することを示す。一致している場合、要求側エージェントは、「覚醒」してデータ・バス上のデータ（任意）をラッチし、元の要求に対応する完了信号を受け取る。
【００８９】
ただし、トークン全体を収容できるだけの十分な大きさのラッチと比較器（例えば、８ビットの比較器、ラッチ）を使用できることに留意されたい。しかし、再送されたトークンのエージェントＩＤ部分が必ず同じであることを考慮すると、唯一のエージェントＩＤ比較に別々のトランザクションＩＤ比較を設けることにより、複雑さとコストを低減することができる。
【００９０】
別個の要求保留待ち行列が不要である（そして既存のバス待ち行列を使用する）場合、本発明の突合せ論理回路は、再送されたトークンのエージェントＩＤ部分とそのＩＤとを突き合わせ、返されたトークンの残りの部分を待ち行列へのインデックスとして使用する。
【００９１】
代替実施形態で本発明は、要求アドレスをトークンの一部または全部として使用できるはずである。アドレスを使用するトークンの一実施形態は図９に示す。図９を参照すると、トークン９００は、要求９０３と、要求修飾子９０２と、アドレス９０１という３つのフィールドを含んでいる。一実施形態では、要求フィールド９０３は４ビットを含み、要求修飾子フィールド９０２は４ビットを含み、アドレス・フィールド９０１は３６ビットを含む。要求フィールド９０３は、要求側エージェントによって出された要求を表す。要求修飾子フィールド９０２は要求を修飾する情報を含む。アドレス・フィールド９０１は要求のアドレスを含む。応答側エージェントは、図５に示すトークンと同じようにしてトークン９００を返す。
【００９２】
この実施形態の利点の１つは、特定のアプリケーションの要件が様々であるためにトークン定義が制約が多すぎるか高価になりすぎる可能性があることをそれが認識している点である。新しいトークン定義を行う場合、トークン定義内のビット数は一定しなければならない。これは、選択した方式に応じて、バス上でサポートできる要求／応答エージェントの数と、エージェント当たりサポートできる要求の数の両方を制限するものである。特定のアプリケーションのために選択した方式にかかわらず、これは制約が多すぎる可能性はない。従って、アドレスをトークンとして使用することは、人工的な制限が一切設けられないことを意味するはずである。第２に、トークンを一切使用しないということは、パフォーマンスを最高にするために、新しい要求について要求側エージェントの保留要求待ち行列内のすべての項目による完全アドレス比較が必要であることを考慮したものである。これは、トークンの突合せに加え、応答側エージェントによって生成された据置かれた応答に必要なものである。この発明により複雑さが加えられる。
【００９３】
アドレスをトークンとして使用することにより、元の要求側エージェントは単にアドレス上でスヌープし、それをその内部保留要求待ち行列と比較するだけである。応答開始型バス・トランザクションも同じように実行されるが、ただし、据置かれた応答から返されるものとしてアドレスに明確にマークが付けられる。
これにより、据置かれた応答と通常の応答とを適切に区別することができる。
【００９４】
応答側エージェントは、図６に示すものと同様の内部の据置かれた要求待ち行列を管理する。据置かれた要求待ち行列の一実施形態は図１０に示す。図１０を参照すると、待ち行列１０００は、１６個の項目を備え、各項目は要求（ＲＥＱ）フィールド１００１と、バイト・イネーブル（ＢＥ）フィールド１００２と、アドレス・フィールド１００３とを含む５４ビットで構成されているものとして示されている。一実施形態では、ＲＥＱフィールドは１０ビットを含み、ＢＥフィールドは８ビットを含み、アドレス・フィールドは３６ビットを含む。
待ち行列１０００は図６に示す待ち行列と同じ情報を格納するが、ただし、アドレスはすでに格納されているのでトークン用の別個のフィールドは不要である。
【００９５】
この実施形態の要求側エージェントは、据置き応答の受信後のバスの解除を担当する。要求側エージェントは、アドレスをトークンとして使用して、新しい要求を出すためのその能力と同じサイズの内部保留要求待ち行列を管理する。
また、要求側エージェントは、後で返されるアドレスを使用して、後で返されるデータまたは完了信号あるいはその両方を適切な要求と突き合わせるための突合せハードウェアも含んでいる。第２の独立トランザクション中、要求側エージェントは、再送されたアドレス（例えば、トークン）をその保留要求待ち行列内のすべてのトークンと突き合わせる。アドレスが一致すると、要求側エージェントは、元の要求をその保留要求待ち行列から廃棄し、操作を完了することができる。この実施形態の要求側エージェントは、突合せを実行するために複数の５４ビット・ラッチとラッチ当たり１つずつの５４ビット比較器とを使用する。一実施形態の比較器論理回路は、一致を識別し、その内部タグとともに内部ユニットにデータを返すための制御論理回路を含む。
【００９６】
アドレスをトークンとして使用すると、要求側エージェントはトークンを生成する必要がない。応答側エージェントは、バスについてアービトレーションを行い、要求されたデータと元のアドレスでバス・トランザクションを実行する。一実施形態の応答側エージェントは、アドレスの送信を容易にするために、３６ビット・アドレスと、１０ビット要求バス・ドライバとを含む。
【００９７】
ただし、新しいピンやトークン指定が一切不要である点で、この実施形態は有利であることに留意されたい。また、この実施形態の要求側エージェントには、３６ビットの完全なアドレスと１０ビットの要求比較というオーバヘッドがあることにも留意されたい。この論理オーバヘッドは、既存のスヌープ論理回路を再使用できる場合には、プロセッサとキャッシュ入出力ブリッジのどちらにも受け入れられる可能性がある。
【００９８】
プロセッサおよび様々な制御装置による本発明の応用例 
本発明のプロセッサは、推論実行と順不同実行を行う。これは、プロセッサのマイクロエンジンが欠落データの参照を越えて実行を続けることを意味する。プロセッサのキャッシュ・メモリと後方のキャッシュ・メモリ内でアクセスがミスとして確認された後、要求はプロセッサメモリ・バスに送信される。待ち時間が長いアクセスは、バスを解放するためにプロセッサに据置き応答を返すことにより、最適に満足することができる。このようにして、プロセッサは追加のデータ転送を続行することができる。
【００９９】
プロセッサメモリ・バスの据置きトランザクション機能は、外部サブシステムによって利用することもできる。例えば、Ｌ３キャッシュは、キャッシュ・ミスの場合に据置かれた応答を返し、キャッシュ・ヒットの場合に通常の順序通り応答を返すことができる。Ｌ３キャッシュ制御装置は、外部アクセスを続行し、データの受信後に第２の独立トランザクションによって要求を完了する。その間に、プロセッサとＬ３キャッシュ・メモリとのデータ転送が続行される。従って、本発明の据置き応答機構は、プロセッサとプロセッサメモリ（例えば、システム）バスとの間で実現すべき非ブロック化構成要素を考慮したものになっている。
【０１００】
また、本発明は、プロセッサから入出力ブリッジへのいかなるアクセスにも有利である。プロセッサから入出力ブリッジへのアクセスは、システム・バス上に直接存在する他のメモリ要素に比べ、待ち時間が長いはずなので、プロセッサからのすべての入出力ブリッジ・アクセスに据置き応答を与えることができ、その結果、使用可能なプロセッサ帯域幅が大幅に改善される。
【０１０１】
本発明では、アドレス・バス上に励起されるアドレスと、データ・バス上で返されるデータとにより、通常のパイプライン化方式でバス・トランザクションが行われる。据置かれたバス・トランザクションが行われると、据置かれた応答を生成することができる。本発明では、既存のバス・アーキテクチャを再使用して、そのアクセスが据置きタイプのアクセスであることを示している。即ち、本発明では、応答側エージェントがパイプライン化方式でその要求に応答しないことを選んだ場合、据置き応答が行われ、応答側エージェントは要求側エージェントによって送信されたトークンをラッチする。このようにして、トークンは要求側エージェントと応答側エージェントとの関係を維持している。要求側エージェントが通常の応答を待っている場合、要求側エージェントは、応答側エージェントが通常の応答ではなく、据置き応答を返したことを認識している。従って、アドレス・バス上でトークンを送信できるようにすることにより、別個のトークン・バスなどの追加のハードウェアは一切不要になる。このため、本発明では、ピン数を増加せずに据置きトランザクションを行うことを考慮している。実際には、要求経路と応答経路用に別々のトークン・バスを用意する必要がないので、本発明は、各パッケージが据置きバス・トランザクションを実行するのに必要なピン数を削減する。
【０１０２】
本発明では、トークン管理の責任が要求側エージェントと応答側エージェントの両方に課せられている。要求側エージェントはトークンの供給を担当し、応答側エージェントは適切な時期の据置かれた応答の供給を担当する。本発明では、トークンを使用するように設計されたユニットだけがトークンを使用する。コンピュータ・システムは、メモリ制御装置など、順序通り応答だけを生成し、据置かれた応答を生成しないような他の応答エージェントも含むはずである。このような「順序通り」エージェントは、必ずパイプライン化方式で完了信号またはデータあるいはその両方を返す。従って、本発明により、据置かれた応答を生成可能な他のエージェントが存在する場合に論理的な負担がゼロでより単純な順序通り応答エージェントの設計が可能になる。
【０１０３】
上記の説明を読んだ後、当業者には本発明の多くの変更および修正が明らかになるだろうが、例示のために図示し説明した特定の実施形態は限定的なものとみなすべきではないことに留意されたい。従って、好ましい実施形態の細部に言及しても請求の範囲を限定するものではなく、請求の範囲では本発明にとって不可欠と見なされる特徴のみを列挙する。
【０１０４】
従って、コンピュータ・システム内で据置きバス・トランザクションを実行するための方法および装置について説明してきた。
以下に示す本発明の様々な実施形態の詳細な説明と添付図面により、本発明をより完全に理解できるだろうが、これらは、本発明を特定の実施形態に限定するものであると解釈すべきではなく、説明および理解のみを目的とするものである。
【図面の簡単な説明】
【０１０５】
【図１】本発明のコンピュータ・システムの一実施形態のブロック図である。
【図２】現在の好ましい実施形態でのバス・トランザクションのタイミング図である。
【図３】本発明によるバス・サイクルの流れ図である。
【図４】本発明による据置き応答を示すタイミング図である。
【図５】本発明の８ビット・トークンを示す図である。
【図６】受信側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。
【図７】要求側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。
【図８】要求側エージェントのトークン突合せハードウェアの一実施形態のブロック図である。
【図９】要求のアドレスをトークンの一部として使用するトークンの一実施形態を示す図である。
【図１０】応答側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。
【符号の説明】
【０１０６】
５０１：トークン
６００：要求待ち行列
６０１：トークン・フィールド
６０２：要求フィールド
６０３：バイト・イネーブル・フィールド
６０４：アドレス・フィールド
７００：保留要求待ち行列
７０１：要求側エージェントの要求ＩＤフィールド
７０２：要求側エージェントのＩＤ用のフィールド
９００：アドレスを使用するトークン
９０１：アドレス
９０２：要求修飾子
９０３：要求
１０００：据置かれた要求待ち行列
１００１：要求フィールド
１００２：バイト・イネーブル・フィールド
１００２：アドレス・フィールド
【図１】
2006092575.tif 000003
【図２】
2006092575.tif 000004
【図３】
2006092575.tif 000005
【図４】
2006092575.tif 000006
【図５】
2006092575.tif 000007
【図６】
2006092575.tif 000008
【図７】
2006092575.tif 000009
【図８】
2006092575.tif 000010
【図９】
2006092575.tif 000011
【図１０】
2006092575.tif 000012