JP2006092575A - 据置きトランザクションを実行するための方法および装置 - Google Patents

据置きトランザクションを実行するための方法および装置 Download PDF

Info

Publication number
JP2006092575A
JP2006092575A JP2005343925A JP2005343925A JP2006092575A JP 2006092575 A JP2006092575 A JP 2006092575A JP 2005343925 A JP2005343925 A JP 2005343925A JP 2005343925 A JP2005343925 A JP 2005343925A JP 2006092575 A JP2006092575 A JP 2006092575A
Authority
JP
Japan
Prior art keywords
bus
request
agent
transaction
address
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.)
Granted
Application number
JP2005343925A
Other languages
English (en)
Other versions
JP4157127B2 (ja
Inventor
Nitin V Sarangdhar
サランダー,ニティン・ヴイ
Konrad K Lai
ライ,コンラッド・ケイ
Gurbir Singh
シン,ガービル
Peter D Macwilliams
マックウイリアムズ,ピーター・ディ
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.)
Intel Corp
Original Assignee
Intel Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23168453&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2006092575(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2006092575A publication Critical patent/JP2006092575A/ja
Application granted granted Critical
Publication of JP4157127B2 publication Critical patent/JP4157127B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4213Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with asynchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】パイプライン化バス・システムで順不同応答を実行するための方法および装置を得ることである。
【解決手段】コンピュータ・システムのバス上でバス・トランザクションを実行するに際し、順不同応答は、専用のトークン・バスを使用せずに、コンピュータ・システム内の要求側エージェントと応答側エージェントとの間のトークンの送信(302)を含んで為される。
【選択図】 図3

Description

関連出願
本出願は、1993年6月30日に出願され、本出願の譲受人に譲渡された「Method and Apparatus for Performing Bus Transactlons in a Computer System」という名称の米国特許出願第08/085541号の一部継続出願である。
本発明は、コンピュータ・システム・バス用のプロトコルの分野に関し、具体的には、本発明は、据置き/順不同トランザクションを実行するバス用のプロトコルに関する。
コンピュータ・システムでは、プロセッサ、メモリ、入出力ユニット、その他の周辺装置などの装置間の転送は、一般にプロトコルに応じて行われる。このような装置は一般にエージェントと呼ばれる。プロトコルとは、転送中に装置間で行われるハンドシェーキングの方法であって、転送に関わる各装置が他の装置がどのように動作または実行するかを把握できるようにするものである。
一般に、コンピュータ・システムでのデータおよび情報の転送は複数のバスを使用して行われる。これらのバスは、2つの装置間だけで使用する専用バスである場合もあれば、複数のユニット、バス・エージェント、または装置が使用する非専用バスである場合もある。しかも、システム内のバスは、特定のタイプの情報の転送専用の場合もある。例えば、アドレス・バスはアドレスの転送に使用するが、データ・バスはデータの転送に使用する。
バス・トランザクションは、原則として、バス上の別のエージェントからデータまたは完了信号を要求する要求側装置またはエージェントを含む。通常、要求は、所望のデータまたは所望の装置のアドレスを伴う要求のタイプを示す、いくつかの制御信号を含む。要求されたアドレスを含むアドレス空間にマッピングされる装置は、必要なデータとともに完了信号を送信することによって応答する。
コンピュータ・システムによっては、パイプライン化方式でバス・トランザクションが行われるものもある。バス・トランザクションがパイプライン化されている場合、多数のバス・エージェントからの要求は同時に保留される。別々のデータ・バスとアドレス・バスを使用するために、このような事態が起こりうる。
パイプライン化トランザクションでは、アドレス・バス上で要求のアドレスが送信されている間に、(アドレス・バス上で)前に要求したアドレスに対応するデータまたは信号をデータ・バス上で返すことができる。所与のパイプライン化システムでは、要求されたのと同じ順序で完了応答が行われる。しかし、他のパイプライン化システムでは、完了応答の順序がそれに対応する要求と同じ順序である必要はない。このタイプのバス・システムは、一般に、分割トランザクション・バス・システムと呼ばれる。
分割トランザクション・バスでは、コンピュータ・システム内のエージェントの1つへの第1のバス・トランザクションによって要求が開始される。この時点で応答側エージェントがその要求への応答を提供できない場合、要求に対応する応答は、その要求との関連が解除される可能性がある。最終的には、応答の準備ができると、任意のデータを伴う応答が要求側エージェントに返される。返されたときに要求側エージェントによって識別できるように、その要求にタグを付けることもできる。
分割トランザクションに対応するため、システムは、応答をそのアドレス(即ち、その要求)に関連付けるための何らかの機能を必要とする。1つの手法は、2つの別々のトークン・バスと1つの据置きバスを使用する方法である。要求を実行する場合、アドレスがアドレス・バス上に励起される。同時に、トークンが第1のトークン・バス上に励起される。このトークンは、アドレス要求に関連付けられている。トークンは、アドレス要求に応答する予定のエージェント(即ち、応答側エージェント)によって受信される。この時点でエージェントが応答可能である場合、応答側エージェントは、第2のトークン・バス上にトークンを励起し、データ・バス上に適切な応答を励起する。
2つのトークン・バスを使用すると、外部バスとのインタフェースを取るために必要なピンの数が増加する。サイズが8ビットのトークンの場合、2つの別々のトークン・バスを使用すると、そのトークン・バスのために追加の16ピンをコンピュータ・システムに追加すると同時に、コンピュータ・ボード上の追加の空間を割り振る必要がある。しかも、システム内のすべてのバス・エージェント・パッケージに対して、トークン・バスをサポートするために使用するピンも追加しなければならない。ピン数が増加すると、パッケージのコストも同様に増加する場合が多い。従って、システム内の集積回路構成要素のコストも増加する。これに対して、待ち時間が長いトランザクションを後で出された待ち時間の短いトランザクションの後に再配置する能力のため、分割トランザクションを許可することによる帯域幅の増加は相当なものになる。集積回路構成要素の変更や必要なピン数の増加によるコストの増加の大部分を被らずに、分割バス・トランザクションをサポートすることが望ましい。
先行技術では、一部の応答側エージェントがバス・エージェントからの要求に応答して再試行応答を出力する。この再試行応答は、応答側エージェントが応答する準備ができておらず、後でもう一度その要求を試みる必要があることを、要求を送信したバス・エージェントに示すものである。その場合、要求側エージェントは、それが転送に使用できるかどうかを示すために、応答側エージェントを適宜、ポーリングする。再試行応答を出した後、応答側エージェントはその要求の処理を続行することができる。トランザクションを完了する準備ができると、それは要求側エージェントに完了応答を出し、ポーリングを終了する。このような方式の問題は、不必要なポーリングによってバス・トラフィックが増加することである。再試行応答を出力するときにバス・トラフィックを削減することが望ましい。ただし、分割トランザクションに対応できないバス・エージェント用のコストを最小限にすることも望ましいことに留意されたい。
本発明は、このようなバス・プロトコルを実施するための方法および装置を提供する。本発明のプロトコルは、別々のトークン・バスを使用せず、それらに関連するピン数の増加も伴わずに、分割トランザクションに対応するための方法および装置を提供する。
発明の概要
コンピュータ・システム内で分割バス・トランザクションを実行するための方法および装置について説明する。このコンピュータ・システムは、バス・トランザクションをパイプライン化方式で行えるようにするための別々のデータ・バスとアドレス・バスとを含む。本発明は、第1のバス・トランザクションを開始し、要求アドレスをアドレス・バス上で励起するための方法および装置を含む。要求アドレスは、要求側装置またはエージェントによって励起される。応答側エージェントは、この時点で応答ができなければ、据置き応答を励起する。本発明は、その要求およびアドレスに関連するアドレス・バス上に要求側エージェントによる第1のトークンを励起するための方法および装置も含む。要求アドレスは第1のクロック中に共通多重アドレス・バス上で励起され、トークンは第2のクロック中に共通多重アドレス・バス上で励起される。応答側装置は第1のトークンを受信し、応答側装置がアドレス要求を満足する準備ができているかまたは満足できる場合に、後で使用するためにそのトークンを内部に格納することができる。格納すると、第1のバス・トランザクションは完了している。
応答側装置が要求を満足する準備ができているかまたは満足できる場合(例えば、データの準備ができており、完了信号を送信できるなど)、応答側装置は第2のバス・トランザクションを開始し、アドレス・バス上で第2のトークンを励起する。また、応答側装置は、元のアドレス要求に対応するデータ・バス上に必要なデータも励起する。一実施態様の第2のトークンは第1のトークンと同一である。元の要求側装置は、第2のトークンを受信し、その元のアドレス要求に対応する第1のトークンと第2のトークンとを比較する。一致が存在すると判定すると、要求側装置は、完了信号を受信し、データがあればデータ・バスから受信し、その結果、第2のバス・トランザクションが完了する。
発明の詳細な説明
コンピュータ・システム内の分割トランザクションに対応するための方法および装置について説明する。以下に示す本発明の詳細な説明では、本発明を完全に理解するために、トークン・サイズ、待ち行列サイズなどの、数多くの特定の詳細データを示している。しかし、このような特定の詳細データがなくても本発明を実施できることは、当業者には明らかであろう。その他の例では、本発明を不明確にしないように、周知の方法、機能、構成要素、手順について詳しく説明していない。
本発明のコンピュータ・システムの概要
まず図1を参照すると、同図には、本発明のコンピュータ・システムの一実施形態の概要がブロック図形式で示されている。図1は本発明のコンピュータ・システムの全体を説明するのに有用であるが、システムの詳細の一部は図示していないことに留意されたい。本発明の開示に必要なので、詳細については本明細書に付属するその他の図に関連して示す。
図1に示すように、この実施形態のコンピュータ・システムは、一般に、情報をやりとりするためのプロセッサメモリ・バスまたはその他の通信手段101と、情報を処理するためにプロセッサメモリ・バス101に結合されたプロセッサ102とを含む。本発明のプロセッサメモリ・バス101は、補助的なアドレス・バス、データ・バス、制御バスを含む。プロセッサ102は、データと命令をチップ上に一時的に格納するためのレベル1(L1)キャッシュ・メモリと一般に呼ばれる内部キャッシュ・メモリを含んでいる。レベル2(L2)キャッシュ・メモリ104が、プロセッサ102が使用するためにデータと命令を一時的に格納するためにプロセッサ102に結合されている。一実施形態のキャッシュ・メモリ104は、プロセッサ102と同じチップ・パッケージ内に含まれている。
プロセッサメモリ・バス101には、コンピュータ・システム内の他の装置(例えば、プロセッサ102など)が使用するためにデータと命令を一時的に格納するためのレベル3(L3)キャッシュ・メモリ111と、L3キャッシュ・メモリ111へのアクセスを制御するためのL3キャッシュ制御装置110も結合されている。
メモリ制御装置122は、プロセッサ102用の情報と命令を格納するためのランダム・アクセス・メモリ(RAM)またはその他のダイナミック記憶装置121(一般にメイン・メモリと呼ばれる)へのアクセスを制御するためにプロセッサメモリ・バス101に結合されている。
入出力ブリッジ124は、プロセッサメモリ・バス101または入出力バス131のいずれか一方にある装置に通信経路またはゲートウェイを提供し、もう一方のバス上の装置にアクセスするかまたはその装置間でデータを転送するためにプロセッサメモリ・バス101および入出力バス131に結合されている。ブリッジ124は、入出力バス131からのバイト/ワード/ダブルワード・データ転送トラフィックをプロセッサメモリ・バス101上のライン・サイズ・トラフィックに変更するなどの機能を実行する。
入出力バス131は、コンピュータ・システム内の装置間で情報をやりとりするものである。入出力バス131に結合された装置としては、コンピュータ・ユーザに対して情報を表示するための陰極線管、液晶ディスプレイなどのディスプレイ装置132、コンピュータ・システム内の他の装置(例えば、プロセッサ102)に情報やコマンド選択を連絡するための英数字キーおよびその他のキーを含む英数字入力装置133、カーソルの動きを制御するためのカーソル制御装置134などがある。しかも、コンピュータ・イメージの視覚表現を出力するためのプロッタまたはプリンタなどのハード・コピー装置135、情報と命令を格納するための磁気ディスクおよびディスク・ドライブなどの大容量記憶装置136も入出力バス131に結合することができる。
当然のことながら、本発明の他の実施形態では上記の構成要素をすべて含む必要はないが、実施形態によっては追加の構成要素を必要とするかまたは含むものもある。例えば、所与の実施形態では、L3キャッシュ制御装置110とL3キャッシュ・メモリ111が必要ではない可能性がある。また、このコンピュータ・システムは、プロセッサメモリ・バス101に結合された追加のプロセッサを含むことができる。この追加のプロセッサは、プロセッサ102と同様または同一のプロセッサなどの並列プロセッサを含むか、またはディジタル信号プロセッサなどの補助プロセッサを含むことができる。このような実施形態では、プロセッサ102と追加のプロセッサ(複数も可)がプロセッサメモリ・バス101上に直接存在する。その他の実施形態では、情報を表示するためにディスプレイ装置を設ける必要がない場合もある。
本発明のバス・トランザクション
本発明では、コンピュータ・システム内の装置およびユニットがプロセッサメモリ・バス上でバス・トランザクションを実行する。一実施形態では、プロセッサメモリ・バスのうちのアドレス・バスと制御バスの一部分が相俟って、要求を開始したり、要求に応答するための「要求」バスとして機能する。要求の開始側(例えば、要求側エージェント)は要求タイプとアドレスを転送するためにこの「要求」バスを使用し、要求の監視側(例えば、応答側エージェント)は出されたトランザクションに関する自分の状況または応答を転送するために同じバスを使用する。データ・バスは読取り中または書込み中のデータを転送するものである。
一実施形態のバス活動は、操作別、トランザクション別、フェーズ別に階層的に構成されている。操作とは、自然に位置合せされたメモリ位置の読取りなど、ソフトウェアにとってアトミックと思われるバス手順である。1つの操作を実行するには、通常、1つのトランザクションが必要であるが、要求と応答が別々のトランザクションになるような据置かれた応答の場合など、複数のトランザクションが必要な場合もある。1つのトランザクションは、データ・バス上での応答開始型データ転送による要求バス・アービトレーションからの単一要求に関連する1組のバス活動である。
1つのトランザクションは最高6つのフェーズを含む。しかし、所与のフェーズは、トランザクションと応答タイプに基づく任意選択のものである。フェーズは、特定の信号グループを使用して特定タイプの情報をやりとりする。一実施形態の6つのフェーズは以下の通りである。
アービトレーション
要求
エラー
スヌープ
応答
データ
データ・フェーズは、任意選択のもので、トランザクションがデータ・バス上でデータを転送する場合に使用する。データ・フェーズは、要求を開始した時点でデータが使用可能になる場合(例えば、書込みトランザクション)は要求開始型であり、トランザクション応答を生成した時点でデータが使用可能になる場合(例えば、読取りトランザクション)は応答開始型である。
様々なトランザクションによる様々なフェーズはオーバラップさせることができ、それにより、バスの使用法がパイプライン化され、バスのパフォーマンスが改善される。図2は、データ転送を伴う2つのトランザクション用のトランザクション・フェーズを示すタイミング図である。図2を参照すると、要求側エージェントがそのバスを所有していない場合、トランザクションはアービトレーション・フェーズから始まり、そこで要求側エージェントがバスの所有者になる。
要求側エージェントがバスの所有者になった後、トランザクションは要求フェーズに入り、そこでバスの所有者が要求とアドレス情報をバス上で励起する。要求フェーズの持続期間は2クロック分である。第1のクロックでは、スヌープとメモリ・アクセスを開始するのに十分な情報とトランザクション・アドレスとともに、ADS#信号が励起される。第2のクロックでは、その他のトランザクション情報とともに、要求の識別に使用する情報(例えば、トークン)とトランザクションの長さに関する情報が励起される。
要求フェーズ後、新しいトランザクションは、先入れ先出し(FIFO)待ち行列である順序通り待ち行列に入る。要求側エージェントを含むすべてのバス・エージェントは、順序通り待ち行列を管理し、それぞれの新しい要求をこの待ち行列に追加する。順序通り待ち行列の詳細については、1994年3月1日に出願され、本発明の法人譲受人に譲渡され、参照により本明細書に組み込まれる、「Highly Pipelined Bus Architecture」という名称の米国特許出願第08/206382号を参照されたい。図2では、例えば、要求1は、T3で励起され、T4で監視され、T5で始まる順序通り待ち行列に入る。
あらゆるトランザクションの第3のフェーズは、要求フェーズの3サイクル後のエラー・フェーズである。エラー・フェーズは、その要求によって引き起こされた即時(パリティ)エラーを示す。
エラー・フェーズで示されたエラーのためにトランザクションが取り消されない場合、要求フェーズから4サイクル以上後のスヌープ・フェーズに入る。スヌープ・フェーズの結果は、トランザクションについて励起されたアドレスが任意のバス・エージェントのキャッシュ内の有効または変更済み(汚れた)キャッシュ線を参照するかどうかを示す。また、スヌープ・フェーズの結果は、トランザクションが順序通りに完了するか、または可能な順不同完了のために据え置かれるかも示す。
トランザクションは、順序通り待ち行列全体にわたってFIFO順序で進行する。順序通り待ち行列内の一番上のトランザクションは応答フェーズに入る。応答フェーズは、トランザクションが失敗したかまたは成功したか、トランザクション完了が即時かまたは据置きか、トランザクションが回収されるかどうか、トランザクションがデータ・フェーズを含むかどうかを示す。
有効なトランザクション応答は、正常データ、暗黙書戻し、データなし、ハード障害、据置き、再試行である。
トランザクションがデータ・フェーズを備えていない場合、トランザクションは応答フェーズ後に完了する。要求エージェントが転送すべき書込みデータを備えているか、または読取りデータを要求している場合、トランザクションは、応答フェーズ後まで延長可能なデータ・フェーズを備えている。
一実施形態では、すべてのトランザクションがすべてのフェーズを含むわけではなく、すべてのフェーズが順序通りに発生するわけではなく、一部のフェーズはオーバラップする場合もある。エラー・フェーズで取り消されないすべてのトランザクションは、要求フェーズと、エラー・フェーズと、スヌープ・フェーズと、応答フェーズを備えている。また、次のトランザクションを励起するエージェントがすでにバスを所有していない場合にのみ、アービトレーション・フェーズが発生すればよいので、アービトレーションは明示的な場合もあれば、暗黙の場合もある。データ・フェーズは、トランザクションがデータ転送を必要とする場合のみ発生する。データ・フェーズは、不在、応答開始型、要求開始型、スヌープ開始型、要求およびスヌープ開始型のいずれかになりうる。読取りトランザクション(要求開始型データ転送またはスヌープ開始型データ転送)の場合、応答フェーズはデータ・フェーズの先頭とオーバラップする。書込みトランザクション(要求開始型データ転送)の場合、要求フェーズがデータ・フェーズを引き起こす。
本発明のバス・プロトコル
本発明では、バス・プロトコルに応じてプロセッサメモリ・バス上で操作が行われる。本発明のコンピュータ・システム内の装置およびユニットは、要求側エージェントと応答側エージェントの両方を表す。要求側エージェントは、1つまたは複数の完了信号と、任意で別の装置からのデータの受信を伴うバス操作を要求できる装置である。応答側エージェントは、必要な信号と、任意で要求に応答するデータを送信することによって要求に応答できる装置である。分割トランザクションに対応できる応答側エージェントは本明細書では「スマート」応答側エージェントと呼ばれ、分割トランザクションに対応できない応答側エージェントは本明細書では「ダム」応答側エージェントと呼ばれる。ただし、以下の説明では、「エージェント」という用語と「装置」という用語を取換え可能な使い方をする場合があることに留意されたい。
本発明では、バス・トランザクションは、パイプライン化方式でコンピュータ・システム内のバス上で行われる。即ち、複数のバス・トランザクションが同時に保留になる場合があり、それぞれが完全に完了していない。従って、要求側エージェントがバス・トランザクションを開始すると、バス・トランザクションだけが現在保留中のいくつかのバス・トランザクションの1つになる場合がある。バス・トランザクションはパイプライン化されるが、本発明のバス・トランザクションは順序通りに完全に完了する必要はない。本発明では、据置きトランザクションをサポートすることにより、要求に対する完了応答の一部を順不同にすることができる。非分割トランザクションは順序通りに完了する。
本発明では、1つのバス操作を2つの独立バス・トランザクションに本質的に分割することにより、据置きトランザクションに対応する。第1のバス・トランザクションは、要求側エージェントによる要求(データまたは完了信号を求める)と、応答側エージェントによる応答とを伴う。要求は、アドレス・バス上でのアドレスの送信を含むこともできる。また、要求は、その要求を識別するために要求側エージェントが使用するトークンの送信を含むこともできる。応答は、応答側エージェントが応答する準備ができている場合に完了信号(およびおそらくデータ)の送信を含むことができる。この場合、バス・トランザクションならびにバス操作が終了する。しかし、応答側エージェントが要求に対して応答する準備ができていない(例えば、完了信号または任意のデータあるいはその両方の準備ができていない)場合、応答は、要求に対するその応答が据え置かれることになるという表示を要求側エージェントに対して出力することを含むことができる。この表示は、本明細書では据置き応答と呼ぶことにする。
据置き応答の場合、バス操作は、要求側エージェントがトランザクションを完了するように、応答側エージェントから要求側エージェントへ完了信号と要求されたデータ(ある場合)とを伴う据置かれた応答を送信することを含むような、第2のトランザクションを含む。一実施形態の据置かれた応答は、完了信号(およびおそらくデータ)と、比較要求識別情報とを含む。要求識別情報はトークンを含む。即ち、要求側エージェントが据置かれた応答を元の要求に関連付けることができるように、トークンは応答側エージェントによって要求側エージェントに再送信される。本発明の一実施形態による据置きおよび非据置きバス・トランザクションについては、図3の流れ図に示す。
図3を参照すると、要求側エージェントが要求を行うために使用するものとしてアドレスおよび制御バスの所有権についてアービトレーションを行うと、据置きであるか非据置きであるかを問わず、バス・トランザクションが始まる(処理ブロック300)。ただし、制御バスはコマンドを指定するために一部が使用されることに留意されたい。それらのコマンドは各バス・トランザクションを定義する。本発明では、要求側エージェントは、アドレス・バスについてアービトレーションを行い、コマンドの指定に使用するアドレスおよび制御信号を励起する。アービトレーションに勝つと、要求側エージェントは、アドレス・バス上にアドレスの形式で要求を励起し(処理ブロック301)、当技術分野で周知のやり方で必須制御信号を励起し、アドレス・バス上に第1のトークンを励起する(処理ブロック302)。一実施形態では、2つの連続クロック中にアドレスと第1のトークンがバス上に励起される。このトークンは、それが関連する要求の表示とともに、保留要求待ち行列と呼ばれる待ち行列に格納される。
要求がバス上に置かれると、どの装置が応答側エージェントになるべきかという判定が行われる(処理ブロック303)。この判定は、アドレス・バス上に励起されたアドレスを応答側エージェントが認識することを含む。一実施形態の応答側エージェントは、要求のアドレスを含むアドレス空間にマッピングされる装置である。
次に応答側エージェントは、それが応答する準備ができているかどうかを判定する(処理ブロック304)。読取り操作の場合は、要求されたデータが使用可能であれば、応答側エージェントは応答する準備ができている。書込み操作の場合は、受信したときにそれが書込み操作の完了を開始すれば、応答側エージェントは応答する準備ができており、ポスト書込みが可能であれば、応答側エージェントは、データとアドレスを受信後ただちに応答する準備ができている(データの実際の書込みは後で終了する)。応答側エージェントが応答する準備ができている場合、応答側装置は「順序通り」完了応答表示を送信し、適切な時期にデータ・バス上で必要な信号またはデータを励起し(処理ブロック205)、それにより、バス・トランザクションと、バス操作を非据置きとして終了する。
応答側エージェントがバス・トランザクションを完了する準備ができていない場合、応答側エージェントはアドレス・バスから第1のトークンをラッチし、その適切な応答時期に据置き応答を送信する(処理ブロック306)。読取り操作の場合に応答側エージェントが応答を要求されている時間までにデータの準備ができていない場合、応答側エージェントは応答する準備ができていない可能性がある。入出力装置への書込みの場合などには、書込み操作が完全に終了するまで、応答側エージェントは応答する準備ができていない可能性がある。
要求側エージェントは、適切な時期にバス上で据置き応答を受信する(処理ブロック307)。適切な時期はシステム・バスのパイプライン特性によって示されるが、これについては以下に詳述する。
応答側エージェントが最終的に要求を満足できるようになる前に要求側エージェントが据置き応答を受信した後、バス上でいくつかの追加バス・トランザクションを実行することができる。応答側エージェントが据置きバス操作を完了する準備ができている(例えば、データが応答側エージェントにとって使用可能になる)と、応答側エージェントはアドレス・バスおよび制御バスの所有権についてアービトレーションを行う(例えば、制御バス(処理ブロック308))。
応答側エージェントに所有権が許諾されると、応答側エージェントは据置かれた応答を送信する(処理ブロック309)。据置かれた応答の一部として、応答側エージェントはアドレス・バス上で第2のトークンを送信し、制御バス上で据置かれた応答信号(例えば、コマンド)を送信し、データ・バス上で適切なデータを送信する。一実施形態では第2のトークンが第1のトークンと同じであるが、他の実施形態では第1のトークンと第2のトークンが同じではなく、エージェントが互いに正しく関連付けを行えるようにするための固有の関係が存在する場合もある。
要求側エージェントは、他のエージェントとともにアドレス・バスを監視し、トークンを受け取る(処理ブロック310)。要求側エージェントは第2のトークンをラッチする。次に要求側エージェントは、応答側エージェントから送られた第2のトークンがその保留要求待ち行列内の未解決トークンの1つと一致するかどうかを判定する(処理ブロック311)。このような場合、要求側エージェントは、応答側エージェントから送られた第2のトークンと第1のトークン、または要求側エージェントに格納されたその他のトークンとの間でトークンの突合せを行う。ただし、本発明では、要求側エージェントがアドレスとエージェントIDについてアドレス・バスを必ず監視しており、アドレス・バス上の信号がエージェントにマッピングされたアドレス範囲内のアドレスを表しているかどうか、またはその信号がトークンを表しているかどうかを絶えず判定することに留意されたい。
応答側エージェントからの第2のトークンが第1のトークンと一致しないと要求側エージェントが判定した場合、データ・バス上のデータと完了信号(複数も可)は無視される(処理ブロック312)。応答側エージェントからの第2のトークンが第1のトークンと一致すると要求側エージェントが判定した場合、データ・バス上の据置かれた応答データまたは完了信号あるいはその両方は、最初に要求側エージェントによって要求されたデータまたは完了信号であり、要求側エージェントは完了信号を受信するか、データ・バス上でデータをラッチし(処理ブロック313)、その結果、第2のバス・トランザクションを完了する。元の要求に対応する完了信号またはデータあるいはその両方を受信後、バス操作全体が終了する。従って、バス・トランザクションは応答側エージェントと要求側エージェントとの間で行われ、元のバス操作は完了する。
装置が応答側エージェントであると判定された後、応答側エージェントは、バスがそのパイプライン特性を確実に維持できるようにするための応答の生成を担当する。応答側エージェントは、適切な時期に要求されたバス・トランザクションを完了できない場合がある。例えば、要求されたデータが使用可能ではない場合がある。データが使用可能ではない理由は多数ある。例えば、特定の装置のアクセス時間が長いためにデータが使用可能ではない場合がある。また、特定の装置の構造または特性のために、要求を満足するための応答の準備が完了するまでに多数のサイクルを必要とする場合もある。従って、応答側エージェントが適切な時期に要求されたバス・トランザクションを完了できない場合、応答側エージェントは据置き応答を送信する。応答側エージェントは、要求されたデータまたは完了信号(応答する準備ができている場合)あるいは据置き応答を含む据置き完了表示(要求された完了信号または要求されたデータを供給できない場合)を適切な時期に送信する。
応答側エージェントが応答を生成するための適切な時期は、アドレス・バス上で発生した要求とともにデータ・バス上での応答の順序を維持し、それにより、本発明のバスのパイプライン特性を確実にするために、応答側エージェントが何らかのタイプの応答で応答しなければならない時期として定義される。即ち、データ・バス上の「応答」の順序は、アドレス・バス上の「要求」と同じ順序でなければならない。従って、特定の要求に対する何らかのタイプの応答は、アドレス・バス上の特定の要求の直前に行われた要求の応答後に、データ・バス上に現れなければならない。然るべき時間(例えば、10バス・クロック)内に何らかのタイプの応答が可能ではない場合、その生成を担当するエージェントによって後続の応答がすべて停止され、システム・パフォーマンスが損なわれる。ただし、応答自体も停止される可能性があることに留意されたい。
据置かれた応答を必要とする複数の保留要求に対応するため、据置き応答でバス・サイクルを完了すると、応答側エージェントは、1つまたは複数の要求が保留の間に応答側エージェントが複数の要求に対応できる場合に特定の要求で据置かれた応答を指定できなければならない。例えば、データがキャッシュ・メモリ(例えば、L3キャッシュ・メモリ)から要求され、キャッシュ制御装置が据置き応答を送信すると、この要求が保留の間にキャッシュ・メモリにアクセスする予定の場合、応答側エージェント(例えば、キャッシュ制御装置)は、それを要求した要求にとって使用可能になっているデータを関連付けるための機構を含む必要がある。一実施形態の処理ブロック306では、据置き応答が生成される据置かれた要求(および関連トークン)を応答側エージェントが格納する。
データが使用可能になると、応答側エージェントは、格納したトークンと据置かれた要求を使用して、データの宛先を識別することができる。同一キャッシュ線への複数の要求がある場合など、応答側エージェントが据置き応答を出力すると、そのエージェントは一貫性の維持を担当する。
応答側エージェントによってラッチされたトークンは、応答側エージェントによって行われたときに要求側エージェントへの応答を識別するために、要求側または応答側エージェントとの間の今後の参照として使用される。要求側エージェントは、(それが関連付けられた要求の表示とともに)トランザクション保留待ち行列に格納されたトークンを使用して、その要求への応答がないかどうか監視する。応答側エージェントがバス・トランザクションを完了する準備ができていると、同じトークン(要求の送信時に使用)がアドレス・バス上で送信される。
一実施形態では、アドレス・バスがアドレスの代わりにトークンを有することをバス上のエージェントに示すために、特殊コマンドを使用する。要求側エージェントによって最初に要求されたデータが(データ・バス上に)ある場合、そのデータは特殊コマンド(例えば、制御信号(複数も可))に関連付けられている。このようにして、その後送信されるトークンによって、要求側エージェントとの接触が再確立される。
据置き操作
バス・トランザクションの要求フェーズ中、エージェントは、トランザクションに据置かれた応答を出すことができるかどうかを示すために据置きイネーブル(DEN#)信号をアサートすることができる。ただし、「#」という記号は、その信号がアクティブ・ローであることを示すことに留意されたい。DEN#信号がアサート解除されると、トランザクションは据置かれた応答を受信しないはずである。一実施形態では、バスロック操作内のすべてのトランザクション、据置き応答トランザクション、書戻しトランザクションは据え置くことができない。また、トランザクション待ち時間感知エージェントも、DEN#信号機構を使用して、限定待ち時間内のトランザクション完了を保証することができる。
HITM#信号とともにDEFER#信号は、応答を据え置くべき時期を決定するために使用する。HITM#信号は、アサートされると、キャッシュ内の変更済みデータの存在を示す。トランザクションの順序通りの完了は、アサート解除されたDEFER#信号またはスヌープ・フェーズ中にアサートされたHITM#信号と、その後の応答フェーズ中の通常完了または暗黙書戻し応答によって示される。据置きイネーブル(DEN#)信号が非活動状態になる(そしてHITM#信号がアサート解除される)と、トランザクションは順序通りに完了することができるか、または再試行できるが据え置くことができない。従って、据置かれた応答をサポートできないバス・エージェントは、互換性を保つためにこれを使用することができるが、トランザクションは前述のように順序通りに完了するか、または再試行する必要がある。DEFER#信号がアサートされ、スヌープ・フェーズ中にHITM#信号が非アサートされ、その後、応答フェーズ中に再試行応答が続くと、トランザクションを再試行することができる。即ち、据置かれた応答をサポートできないバス・エージェントは、応答フェーズの時点で必要な応答を出力できない場合、再試行応答を出力することになる。
据置きイネーブル(DEN#)がアサートされると、トランザクションは、順序通りに完了するか、再試行するか、または据え置くことができる。トランザクションが据置かれた応答を受信する予定であると、スヌープ・フェーズ中にDEFER#信号がアサートされ(HITM#信号はアサート解除される)、その後、応答フェーズで据置き応答が続く。
DEFER#信号をアサートすることは、トランザクションによってアドレス指定されたエージェントの責任である。他の実施形態では、その責任を第三者エージェントに与えることができ、そのエージェントはアドレス指定されたエージェントに代わってDEFER#信号をアサートすることができる。
本発明では、要求側エージェントは、アサートされた据置きイネーブル(DEN#)信号とともに要求フェーズで出されたすべての未解決トランザクションを据置かれた応答で完了できると想定している。出された各トランザクションが据置かれた応答を受信できる可能性を反映するため、要求側エージェントは、本明細書で保留要求待ち行列と呼ばれる内部未解決トランザクション待ち行列を管理する。待ち行列内の各項目にはIDが1つずつ付いている。待ち行列項目の数(およびIDの数)はエージェントが出して保留にすることができる要求の数と等しい。第2のトランザクションの据置かれた応答中、要求側エージェントはアドレス・バス上で送信された応答をその保留要求待ち行列内のすべての据置きIDと比較しなければならない。IDが一致すると、要求側エージェントは、その待ち行列から元のトランザクションを回収し、操作を完了することができる。
応答側エージェントがトランザクションの順序通りの完了を保証できない場合、応答側エージェントはそのトランザクションのスヌープ・フェーズでDEFER#信号をアサートし、そのトランザクションが据置かれた応答を受信するかまたは打ち切られる予定であることを示す。別のキャッシュ・エージェントがスヌープ・フェーズでHITM#信号(キャッシュ内の変更済み行へのヒットを示す)をアサートすることによりDEFER#信号が指定変更されない場合、応答側エージェントはトランザクション応答を所有する。応答側エージェントの応答はその応答方針によって決まる。応答側エージェントが後続の独立バス・トランザクションで要求を完了することができ、それを望んでいる場合、そのエージェントは据置き応答を生成する。
据置き応答を出した後、応答する準備ができると、応答側エージェントは、その応答が据え置かれた前の要求を完了するために第2の独立バス・トランザクションを出す。この第2のトランザクションは、前のトランザクションを完了するためにデータを返す場合もあれば(例えば、読取り操作の場合)、単に前のトランザクションの完了を示すだけの場合もある(例えば、書込み操作の場合)
図4は、据置き応答と、その後に続く読取り操作に対する対応した据置かれた応答とを示している。図4を参照すると、T1で要求側エージェントはADS#信号をアサートし、有効なバス定義とアドレスが制御バスとアドレス・バス上にあることを示す。また、T1では、要求側エージェントが{REQUEST}
グループを励起し、行読取り要求を出す。T2では、要求側エージェントがトークンをアドレス・バスに励起する。アドレスとトークンはT2とT3でアドレス指定されたエージェントによってそれぞれラッチされる。
スヌープ・フェーズでは、アドレス指定されたエージェントは、トランザクションを順序通りに完了できないことを判定し、そのため、T5でDEFER#信号をアサートする。T6におけるHITM#信号のアサート解除状態のために、アドレス指定されたエージェントはT7で応答側エージェントになる。応答側エージェントは、RS[2:0]#信号での適正な符号化をアサートすることにより、T7で据置き応答を返す。RS[2:0]#信号は、据置き応答を含む、様々なタイプの応答を符号化するために使用する。ただし、応答側エージェントはアドレス・バスからラッチされたトークンを格納することに留意されたい。
アドレス指定された応答側エージェントは、T9より前に、元の要求で要求されたデータを入手する。T9で応答側エージェントは、元のトランザクションからのトークンをアドレスとして使用して第2のトランザクションを出す。T13で応答エージェントは、HITM#信号とHIT#信号に関する有効な情報を励起し、返された行の最終キャッシュ状態を示す。要求側エージェントはスヌープ責任をピックアップする。T15で応答側エージェントは、正常完了応答を励起し、必要であれば任意のデータ・フェーズを開始する。応答側エージェントは、バス上のデータとともに正常完了応答を返し、T15〜T18中にデータを励起し、それはT16〜T19中に受信される。T21では、第1および第2のトランザクションを含むバス操作全体が完了する。
T10で要求側エージェントが第2のトランザクションを監視することに留意されたい。要求側エージェントは、アドレス・バスから受信したトークンを元の要求に対応するトークンと比較する。要求側エージェントは、T14で返されたキャッシュ線の最終状態を監視する。T16で要求側エージェントは、据置かれた応答を受信し、その保留要求待ち行列(および順序通り待ち行列)からそのトランザクションを除去する。これでバス操作が完了する。
一実施形態では、コンピュータ・システム内のメモリ・エージェントまたは入出力エージェントは、バス・ロック要求以外の要求、別の据置かれた応答トランザクション、または明示書戻しのために指定されたキャッシュ線書込みの際に応答を据え置くことができる。
本発明の据置かれた応答は元のトランザクションを「覚醒」させる。即ち、元のトランザクションは、要求側エージェントがそのトランザクションを開始した場合と同様に、続行し、完了する。例えば、メモリ・エージェントがシステム内のプロセッサに据置かれた応答を返す場合、メモリ制御装置はマスタではなく、プロセッサはそれがトランザクションを開始した場合と同様に動作し、バス上のハンドシェーキングに応答する。
据置かれた応答を受信すると、順序通り待ち行列からトランザクションが除去される。元の要求を完了するため、応答側エージェントはバス上で第2の独立トランザクションを開始する。元のトランザクション中にラッチされたトークン(例えば、据置かれた応答ID)は、第2のトランザクションの要求フェーズでアドレスとして使用される。
一実施形態のトークン(例えば、据置きID)は、2つの4ビット・フィールドに分割された8ビット、即ち、DID[7:0]#を含む。トークンの例は図5に示す。このトークンは、元のトランザクションの要求フェーズの第2のクロック中にA[23:16]#(DID[7:0]#を伝達する)上で転送される。アドレス・バス線A[23:20]#は応答エージェントIDを含むが、これは応答側エージェントごとに固有のものである。アドレス・バス線A[19:16]#は、その内部待ち行列に基づいて要求エージェントによって割り当てられた要求IDを含む。17個以上の未解決据置き要求をサポートするエージェントは複数のエージェントIDを使用することができる。一実施形態では、コンピュータ・システムのプロセッサがサポートできるのは、4つの未解決据置き要求だけである。
トランザクションを完了するため、アドレス・バスを使用してトークンを返すが、これはDID[7:0]#上で要求とともに送信されたものである。第2のトランザクションの要求フェースでは、要求フェーズの第1のクロックでA[23:16]#上でトークンが励起される。要求フェーズの第2のクロックでは、応答側エージェントのIDとトランザクションIDが励起される(ただし、元の要求側エージェントによって使用されることはない)。応答フェーズ中、据置かれた応答は、データ・フェーズ中のデータとともに励起される。応答側エージェントは、A[23:16]#上で返されたトークンをデコードし、それを前に据え置かれた要求と比較する。要求側エージェントは、A[23:20]#をそのエージェントIDと比較し、一致があるかどうかを確認する。一致している場合、要求側エージェントはA[19:16]#をインデックスとして使用し、その保留要求待ち行列内の適正項目を指し示す。(一致ハードウェアの例については図6に示す。)
応答側エージェントの実施形態
本発明では、一部の応答側エージェントは一切要求を据え置かず、一部の応答側エージェントは必ず要求を据え置き、一部の応答側エージェントは所与の操作については要求を据え置き、他の操作については据え置かない。
上記の実施形態では、1つのエージェントが据置き操作のメモリ・エージェントまたは入出力エージェントになることができる。
L3キャッシュ制御装置110などのキャッシュ・メモリ制御装置がコンピュータ・システム内にある場合、キャッシュ制御装置は、読取りデータがキャッシュ・メモリ内でただちに使用可能ではないときに読取り操作時に据置かれた応答を生成することもできる。その場合、L3キャッシュ制御装置は、メイン・メモリ121などのメモリからデータを入手し始めると同時に、L3キャッシュ・メモリ内で使用可能なデータに関する後続要求に対応する。読取り応答の準備ができると、L3キャッシュ制御装置はバスについてアービトレーションを行い、読取りデータを返す。
入出力ブリッジがコンピュータ・システム内にある場合、入出力ブリッジはバス・トランザクションを据え置くことができる。ただし、通常、これは、PCI、EISA、ISA、MCA、PCMCIA、VESA規格などの入出力バス規格に応じて実行されることに留意されたい。一般に、入出力バス上に存在する装置へのアクセスは、メモリ装置に出されたアクセスより完了までに要する時間が長い。複数の要求側エージェントから生成された要求を含む高パイプライン化バスでは、入出力操作とメモリ操作の混合が発生する。後続メモリ・アクセスでの入出力アクセスの停止効果を解消するため、本発明の入出力ブリッジは、それ自体(および入出力バス上の装置)に向けられたアクセスに対する据置かれた応答を生成することができる。一実施形態では、本発明の入出力ブリッジは、複数のバス要求を据え置くのに必要なハードウェアを備えている。応答の準備ができると、入出力ブリッジはバスについてアービトレーションを行い、据置かれた応答(第2の独立トランザクション)を開始する。
トークン生成と認識ハードウェア
本発明では、据置きプロトコルを使用するために、要求側エージェントと応答側エージェントのそれぞれが追加の機能性をサポートしている。本発明では、据置きおよび据置かれた応答が可能なエージェントはバス・マスタとして機能する。本発明によるバス・マスタになるには、バスについてアービトレーションを行い、要求転送サイクルを実行する能力を含む。このため、応答エージェントは、応答側エージェントによる据置き応答の出力後に完了信号またはデータの準備ができると、第2のトランザクションを開始し、バスの制御権を獲得することができる。例えば、プロセッサは一般にバス・マスタである。これに対して、メモリ制御装置は一般にバス・マスタではないので、バス操作を完了するためにその後のトランザクションを開始するこの能力を備える必要があるはずである。
図示の実施形態では、トークン生成は要求側エージェントの責任である。本発明のトークンの一実施形態は図5に示す。図5を参照すると、トークン501は8ビットで構成され、要求側エージェントの内部保留要求待ち行列内の据置き要求の位置を示す位置ID502と、トークンの発生源を示す要求側エージェントID503という2つの構成要素に分割されている。(保留要求待ち行列については、以下に詳述する。)要求側エージェントID503は4ビットで構成されている。要求側エージェントID503は、5ビット以上または4ビット未満のいずれでも構成することができる。例えば、要求側エージェントID503は3ビットIDにすることができる。要求側エージェントのIDを表すために使用するビットの数は、据置かれた応答に対応可能なコンピュータ・システム内の要求側エージェントの最大数を示す。例えば、ID用に4ビットを使用することにより、据置き可能な応答を生成する16個の要求側エージェントがバス上に存在することができる。
図5に示すように、要求側エージェントの保留要求待ち行列内の要求の位置を示すために使用するビットの数は、4ビットから構成される。要求の位置は、5ビット以上または4ビット未満のいずれかを使用して記述することができる。
例えば、要求位置は2ビットの数値にすることができる。要求の位置を記述するために使用するビットの数は、要求待ち行列のサイズを示す。例えば、位置要求用に4ビットを使用することは、要求待ち行列が別々にアドレス可能な項目を最高16個備えることができることを意味する。
据置かれた応答が可能な応答側エージェントは、据置き応答の出力時にアドレス・バスからラッチされたトークンを格納するために内部据置き要求待ち行列を管理する。一実施形態では、この待ち行列は16個の項目を含むが、それより多くても少なくてもよい(例えば、2〜32個の項目)。本発明では、比較ハードウェアは実際に据え置かれる項目のみをサポートすればよいので、待ち行列の深さが小さくても十分である。
応答側エージェント内の要求待ち行列の一実施形態は図6に示す。図6を参照すると、要求待ち行列600は複数の項目を備え、各項目は複数のフィールドを含むものとして示されている。一実施形態の待ち行列600は16項目待ち行列である。本発明の各項目行は、トークン・フィールド601と、要求フィールド(REQ)602と、バイト・イネーブル(BE)フィールド603と、アドレス・フィールド604とを備えている。REQフィールド602とBEフィールド603とアドレス・フィールド604は、待ち行列600内のトークン・フィールド601内の各トークンに対応するトランザクション情報を表す。REQフィールド602は、2つの要求フィールドを使用して、要求のタイプを格納する。BEフィールド603は、要求をさらに修飾する際に使用するバイト・イネーブル情報を格納する。アドレス・フィールド604はアドレスを格納する。
一実施形態のトークン・フィールド601は4ビットを含み、インデックスを表し、REQフィールド602は5ビット×2を含み、BEフィールド603は8ビット多重化を含み、アドレス・フィールド604は36ビットを含む。トークン・フィールド601は、ハードウェアでは暗黙のものにすることができるので、ハードウェアで物理的に実現することができない。一実施形態のトークン・フィールド601は、待ち行列内の項目の位置がトークン・フィールドの内容と同じであるときにはハードウェアで実現されない。ただし、トークン・フィールドのインデックスは無作為に生成した値にすることができることも留意されたい。
また、図6には、エージェントIDを表すトークン(例えば、ラッチからのもの)のうちの4ビットを受け取り、それをエージェントのIDと比較して、一致が存在するかどうかを確認するための比較論理回路も示されている。一致が存在する場合、代表エージェントは残りの4ビットを待ち行列へのインデックスとして使用する。
応答側エージェントが据置き応答の出力を希望する時点で、応答側エージェントは、アドレス・バスからラッチしたトークンを格納するために据置き要求待ち行列内のトランザクション用の項目を割り当てる。応答側エージェントの待ち行列内の割当て済み項目は、そのトークンと、REQ、BE、アドレスの各フィールドを格納する。トランザクションの完了後、応答側エージェントは、要求バスの所有者になり、第2のバス・トランザクションを開始して据置かれた応答を出力する。また、応答側エージェントは、据置き要求待ち行列内の空き待ち行列項目も再利用する。
本発明の要求側エージェントは、要求保留待ち行列の管理とトークン生成のための論理回路を含む。上記の説明に基づくと、この論理回路は、十分当業者の能力の範囲内のものなので、これ以上説明しない。また、応答側エージェントもその待ち行列を管理するための論理回路を備えている。応答側エージェントは、据置き要求が処理されている間にバスの新しい要求に対して適切なアクションを行えることが好ましい。応答側エージェントには、新しい要求のアドレスと据置き要求待ち行列内の項目のアドレスとを比較するための機能がさらに設けられている。一実施形態の各エージェントは、新しい要求のアドレスを応答側エージェントの据置き要求待ち行列に格納されたアドレスと比較するために、16個の31ビット・ラッチと16個の31ビット比較器とを含んでいる。アドレス内の下位ビットだけが比較されるように、比較器のサイズを低減することができる。肯定的な一致の場合、応答側エージェントは、すでに据え置かれた要求との競合を回避するために新しい要求を打ち切ることができる。
本発明の要求側エージェントは、据置かれた応答(例えば、据置き応答と据置かれた応答)を受け入れて理解することができる。本発明の要求側エージェントは、このような応答に応じて適切なアクション(複数も可)を行うこともできる。1つのアクションは、一時的に要求を中断することを含むことができる。
一実施形態の要求側エージェントは、要求フェーズで出されたすべての未解決トランザクションが据置き応答を受け取ることができると想定している。各要求側エージェントは、据置かれた要求(例えば、トークンとそれに関連する要求)を一時的に格納するための待ち行列を含む。従って、要求側エージェントは、新しい要求を出すためのその能力と同じサイズの内部保留要求待ち行列を管理する。保留要求待ち行列の一実施形態は図7に示す。図7を参照すると、待ち行列700は、4つの項目を備え、各項目は要求側エージェントの要求IDフィールド701と要求側エージェントのID用のフィールド702とを含む8ビットで構成されているものとして示されている。要求側エージェントID702は、特定の要求側エージェントの待ち行列内のすべての項目について同じである。IDを表すために使用するビットの数によって、待ち行列700内に設計された項目の数が制限される。一実施形態では、IDは4ビットを含むが、待ち行列700内の項目の総数をサポートするのに必要な数のビットを含むことができる。エージェントIDフィールド702は、エージェントのIDを格納するための4ビットで構成される。要求ID701とエージェントID702は相俟ってトークンを形成する。
据置き応答の監視時には、要求側エージェントは、未解決トランザクション待ち行列700内の生成トークン・フィールド702で要求が設けられたトークンのコピーを管理する。また、要求側エージェントは、それが据置き応答を受け取った後でバスを解除するための能力も備えている。
一実施形態では、バス・エージェントがすでにレジスタ・ファイルまたは保留中のバス・操作のリストを含む場合、別個の要求保留待ち行列は不要である。エージェントIDはすべての待ち行列項目に共通なので、保留トランザクションを指定する記憶域だけが必要になる。そのバス用の操作のレコードを管理する順序通り待ち行列またはその他のメモリ記憶域は、保留要求待ち行列として使用することができる。各トランザクションは、インデックス(例えば、0、1、2、3)を使用して識別される。一実施形態では、4通りの可能な保留トランザクション用のインデックス値をサポートするために2ビットしか使用していない。1ビットまたはそれ以上用のフィールドを待ち行列に追加し、要求が据置き応答を受け取ったかどうかを示すためにそのフィールドを使用することができる。従って、別個の要求保留待ち行列は不要である。ただし、トークン生成論理回路は、記憶位置からエージェントのIDを獲得し、それを要求ID(例えば、バス待ち行列へのインデックス)と組み合わせてトークンを生成しなければならないはずである。
要求側エージェントは、返されたトークンを使用して、後で返されたデータまたは完了信号を適切な要求と突き合わせるための突合せハードウェアも含んでいる。第2の独立トランザクション中、要求側エージェントは、再送されたトークンをその保留要求待ち行列内のすべての格納トークンと突き合わせる。IDが一致する場合、要求側エージェントは、操作を完了し、中断された元の要求をその保留要求待ち行列から廃棄することができる。
一実施形態の各要求側エージェントは、その突合せを実行するための比較器論理回路を含んでいる。一実施形態の比較器論理回路は、その突合せを実行するための8ビット比較器と、一致を識別し、その間隔タグとともに内部ユニットにデータを返すための制御論理回路から構成される。他の実施形態では、別個のエージェントIDおよびトランザクションID(例えば、インデックス)突合せ論理回路を使用する。トランザクションIDを突き合わせるための突合せハードウェアの一実施形態は図8に示す。ただし、図6に示すようなエージェントID突合せ論理回路も含むことができることに留意されたい。図8を参照すると、突合せハードウェア800は、ラッチ801と、据置かれた応答に関連するトークン(またはその一部分)を格納するためのラッチ802〜805と、格納された項目と再送されたトークンとを比較するための比較器806〜809と、NORゲート論理回路810とを含む。ラッチ801は応答トークンのうちの4ビットを受け取るように結合されている。ラッチ801の出力は、各比較器806〜809の一方の入力に結合されている。各比較器806〜809のもう一方の入力は、ラッチ802〜805の出力にそれそれ結合されている。各比較器806〜809の出力はNORゲート論理回路810の入力に結合されている。
一実施形態のラッチ801は、再送されたトークンからのトランザクションIDをアドレス・バスから受け取るための4ビット・ラッチを含む。ラッチ801は、再送されたトークンのトランザクションID内のビット数に応じたサイズになっている。ラッチ801は各比較器806〜809にトランザクションIDを供給する。要求側エージェントの保留要求待ち行列に格納された各トークンは、ラッチ802〜805を介して比較器806〜809に供給される。ラッチ802〜805は、トークンのトランザクションID内のビット数に応じたサイズになっている。
エージェントID突合せの実行後、各比較器806〜809は、再送されたトークンのトランザクションIDを格納されたトークンのトランザクションIDと比較する。保留要求待ち行列に格納されたトークンとの一致が存在する場合、比較器806〜809のうちの1つはハイの出力を出す。保留要求待ち行列に格納されたトークンとの一致が存在しない場合、比較器806〜809のうちのいずれもハイの出力を出さない。比較器806〜809からの出力がいずれもハイではない場合、NORゲート論理回路810の一致なし出力がハイになり、それにより、再送されたトークンが要求側エージェント内の中断された要求に対応しないことを示す。比較器806〜809からの1つの出力がハイになる場合、NORゲート論理回路810の一致出力がハイになり、それにより、再送されたトークンが要求側エージェント内の中断された要求に対応することを示す。一致している場合、要求側エージェントは、「覚醒」してデータ・バス上のデータ(任意)をラッチし、元の要求に対応する完了信号を受け取る。
ただし、トークン全体を収容できるだけの十分な大きさのラッチと比較器(例えば、8ビットの比較器、ラッチ)を使用できることに留意されたい。しかし、再送されたトークンのエージェントID部分が必ず同じであることを考慮すると、唯一のエージェントID比較に別々のトランザクションID比較を設けることにより、複雑さとコストを低減することができる。
別個の要求保留待ち行列が不要である(そして既存のバス待ち行列を使用する)場合、本発明の突合せ論理回路は、再送されたトークンのエージェントID部分とそのIDとを突き合わせ、返されたトークンの残りの部分を待ち行列へのインデックスとして使用する。
代替実施形態で本発明は、要求アドレスをトークンの一部または全部として使用できるはずである。アドレスを使用するトークンの一実施形態は図9に示す。図9を参照すると、トークン900は、要求903と、要求修飾子902と、アドレス901という3つのフィールドを含んでいる。一実施形態では、要求フィールド903は4ビットを含み、要求修飾子フィールド902は4ビットを含み、アドレス・フィールド901は36ビットを含む。要求フィールド903は、要求側エージェントによって出された要求を表す。要求修飾子フィールド902は要求を修飾する情報を含む。アドレス・フィールド901は要求のアドレスを含む。応答側エージェントは、図5に示すトークンと同じようにしてトークン900を返す。
この実施形態の利点の1つは、特定のアプリケーションの要件が様々であるためにトークン定義が制約が多すぎるか高価になりすぎる可能性があることをそれが認識している点である。新しいトークン定義を行う場合、トークン定義内のビット数は一定しなければならない。これは、選択した方式に応じて、バス上でサポートできる要求/応答エージェントの数と、エージェント当たりサポートできる要求の数の両方を制限するものである。特定のアプリケーションのために選択した方式にかかわらず、これは制約が多すぎる可能性はない。従って、アドレスをトークンとして使用することは、人工的な制限が一切設けられないことを意味するはずである。第2に、トークンを一切使用しないということは、パフォーマンスを最高にするために、新しい要求について要求側エージェントの保留要求待ち行列内のすべての項目による完全アドレス比較が必要であることを考慮したものである。これは、トークンの突合せに加え、応答側エージェントによって生成された据置かれた応答に必要なものである。この発明により複雑さが加えられる。
アドレスをトークンとして使用することにより、元の要求側エージェントは単にアドレス上でスヌープし、それをその内部保留要求待ち行列と比較するだけである。応答開始型バス・トランザクションも同じように実行されるが、ただし、据置かれた応答から返されるものとしてアドレスに明確にマークが付けられる。
これにより、据置かれた応答と通常の応答とを適切に区別することができる。
応答側エージェントは、図6に示すものと同様の内部の据置かれた要求待ち行列を管理する。据置かれた要求待ち行列の一実施形態は図10に示す。図10を参照すると、待ち行列1000は、16個の項目を備え、各項目は要求(REQ)フィールド1001と、バイト・イネーブル(BE)フィールド1002と、アドレス・フィールド1003とを含む54ビットで構成されているものとして示されている。一実施形態では、REQフィールドは10ビットを含み、BEフィールドは8ビットを含み、アドレス・フィールドは36ビットを含む。
待ち行列1000は図6に示す待ち行列と同じ情報を格納するが、ただし、アドレスはすでに格納されているのでトークン用の別個のフィールドは不要である。
この実施形態の要求側エージェントは、据置き応答の受信後のバスの解除を担当する。要求側エージェントは、アドレスをトークンとして使用して、新しい要求を出すためのその能力と同じサイズの内部保留要求待ち行列を管理する。
また、要求側エージェントは、後で返されるアドレスを使用して、後で返されるデータまたは完了信号あるいはその両方を適切な要求と突き合わせるための突合せハードウェアも含んでいる。第2の独立トランザクション中、要求側エージェントは、再送されたアドレス(例えば、トークン)をその保留要求待ち行列内のすべてのトークンと突き合わせる。アドレスが一致すると、要求側エージェントは、元の要求をその保留要求待ち行列から廃棄し、操作を完了することができる。この実施形態の要求側エージェントは、突合せを実行するために複数の54ビット・ラッチとラッチ当たり1つずつの54ビット比較器とを使用する。一実施形態の比較器論理回路は、一致を識別し、その内部タグとともに内部ユニットにデータを返すための制御論理回路を含む。
アドレスをトークンとして使用すると、要求側エージェントはトークンを生成する必要がない。応答側エージェントは、バスについてアービトレーションを行い、要求されたデータと元のアドレスでバス・トランザクションを実行する。一実施形態の応答側エージェントは、アドレスの送信を容易にするために、36ビット・アドレスと、10ビット要求バス・ドライバとを含む。
ただし、新しいピンやトークン指定が一切不要である点で、この実施形態は有利であることに留意されたい。また、この実施形態の要求側エージェントには、36ビットの完全なアドレスと10ビットの要求比較というオーバヘッドがあることにも留意されたい。この論理オーバヘッドは、既存のスヌープ論理回路を再使用できる場合には、プロセッサとキャッシュ入出力ブリッジのどちらにも受け入れられる可能性がある。
プロセッサおよび様々な制御装置による本発明の応用例
本発明のプロセッサは、推論実行と順不同実行を行う。これは、プロセッサのマイクロエンジンが欠落データの参照を越えて実行を続けることを意味する。プロセッサのキャッシュ・メモリと後方のキャッシュ・メモリ内でアクセスがミスとして確認された後、要求はプロセッサメモリ・バスに送信される。待ち時間が長いアクセスは、バスを解放するためにプロセッサに据置き応答を返すことにより、最適に満足することができる。このようにして、プロセッサは追加のデータ転送を続行することができる。
プロセッサメモリ・バスの据置きトランザクション機能は、外部サブシステムによって利用することもできる。例えば、L3キャッシュは、キャッシュ・ミスの場合に据置かれた応答を返し、キャッシュ・ヒットの場合に通常の順序通り応答を返すことができる。L3キャッシュ制御装置は、外部アクセスを続行し、データの受信後に第2の独立トランザクションによって要求を完了する。その間に、プロセッサとL3キャッシュ・メモリとのデータ転送が続行される。従って、本発明の据置き応答機構は、プロセッサとプロセッサメモリ(例えば、システム)バスとの間で実現すべき非ブロック化構成要素を考慮したものになっている。
また、本発明は、プロセッサから入出力ブリッジへのいかなるアクセスにも有利である。プロセッサから入出力ブリッジへのアクセスは、システム・バス上に直接存在する他のメモリ要素に比べ、待ち時間が長いはずなので、プロセッサからのすべての入出力ブリッジ・アクセスに据置き応答を与えることができ、その結果、使用可能なプロセッサ帯域幅が大幅に改善される。
本発明では、アドレス・バス上に励起されるアドレスと、データ・バス上で返されるデータとにより、通常のパイプライン化方式でバス・トランザクションが行われる。据置かれたバス・トランザクションが行われると、据置かれた応答を生成することができる。本発明では、既存のバス・アーキテクチャを再使用して、そのアクセスが据置きタイプのアクセスであることを示している。即ち、本発明では、応答側エージェントがパイプライン化方式でその要求に応答しないことを選んだ場合、据置き応答が行われ、応答側エージェントは要求側エージェントによって送信されたトークンをラッチする。このようにして、トークンは要求側エージェントと応答側エージェントとの関係を維持している。要求側エージェントが通常の応答を待っている場合、要求側エージェントは、応答側エージェントが通常の応答ではなく、据置き応答を返したことを認識している。従って、アドレス・バス上でトークンを送信できるようにすることにより、別個のトークン・バスなどの追加のハードウェアは一切不要になる。このため、本発明では、ピン数を増加せずに据置きトランザクションを行うことを考慮している。実際には、要求経路と応答経路用に別々のトークン・バスを用意する必要がないので、本発明は、各パッケージが据置きバス・トランザクションを実行するのに必要なピン数を削減する。
本発明では、トークン管理の責任が要求側エージェントと応答側エージェントの両方に課せられている。要求側エージェントはトークンの供給を担当し、応答側エージェントは適切な時期の据置かれた応答の供給を担当する。本発明では、トークンを使用するように設計されたユニットだけがトークンを使用する。コンピュータ・システムは、メモリ制御装置など、順序通り応答だけを生成し、据置かれた応答を生成しないような他の応答エージェントも含むはずである。このような「順序通り」エージェントは、必ずパイプライン化方式で完了信号またはデータあるいはその両方を返す。従って、本発明により、据置かれた応答を生成可能な他のエージェントが存在する場合に論理的な負担がゼロでより単純な順序通り応答エージェントの設計が可能になる。
上記の説明を読んだ後、当業者には本発明の多くの変更および修正が明らかになるだろうが、例示のために図示し説明した特定の実施形態は限定的なものとみなすべきではないことに留意されたい。従って、好ましい実施形態の細部に言及しても請求の範囲を限定するものではなく、請求の範囲では本発明にとって不可欠と見なされる特徴のみを列挙する。
従って、コンピュータ・システム内で据置きバス・トランザクションを実行するための方法および装置について説明してきた。
以下に示す本発明の様々な実施形態の詳細な説明と添付図面により、本発明をより完全に理解できるだろうが、これらは、本発明を特定の実施形態に限定するものであると解釈すべきではなく、説明および理解のみを目的とするものである。
本発明のコンピュータ・システムの一実施形態のブロック図である。 現在の好ましい実施形態でのバス・トランザクションのタイミング図である。 本発明によるバス・サイクルの流れ図である。 本発明による据置き応答を示すタイミング図である。 本発明の8ビット・トークンを示す図である。 受信側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。 要求側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。 要求側エージェントのトークン突合せハードウェアの一実施形態のブロック図である。 要求のアドレスをトークンの一部として使用するトークンの一実施形態を示す図である。 応答側エージェント内のトランザクション保留待ち行列の一実施形態を示す図である。
符号の説明
501:トークン
600:要求待ち行列
601:トークン・フィールド
602:要求フィールド
603:バイト・イネーブル・フィールド
604:アドレス・フィールド
700:保留要求待ち行列
701:要求側エージェントの要求IDフィールド
702:要求側エージェントのID用のフィールド
900:アドレスを使用するトークン
901:アドレス
902:要求修飾子
903:要求
1000:据置かれた要求待ち行列
1001:要求フィールド
1002:バイト・イネーブル・フィールド
1002:アドレス・フィールド

Claims (4)

  1. 要求側エージェントは、 バス・トランザクションの一部として各バス要求ごとに連続するバス・サイクル中にアドレス・バス上にトークンおよびアドレスを出すための手段を含むことを特徴とするコンピュータ・システム。
  2. アドレス・バスと、
    アドレス・バスに結合された要求側エージェントとを含み、
    この要求側エージェントは、バス・トランザクションの一部として各バス要求ごとに、アドレス・バス上にアドレスとそれに続く要求識別トークンを出すための手段を含むことを特徴とするコンピュータ・システム。
  3. アドレス・バスと、
    アドレス・バスに結合された要求側エージェントとを有し、
    この要求側エージェントは、バス・トランザクションの一部として各バス要求ごとに、アドレスとそれに続く要求識別トークンをアドレス・バス上に出すように構成された第1の論理回路を有することを特徴とするコンピュータ・システム。
  4. データ・バス・インタフェースと、
    アドレス・バス・インタフェースと、
    スヌープ・インタフェースと、
    アービトレーション・インタフェースと、
    これらのデータ・バス・インタフェース、アドレス・バス・インタフェース、スヌープ・インタフェース、アービトレーション・インタフェースに結合され、異なったトランザクションの様々な異なったトランザクション・フェーズが1クロック・サイクルの間に異なったバスでアクティブであることがあるパイプライン化バス・プロトコルをサポートするバス制御論理とを具備し、
    このバス制御論理は、第1のトランザクションの要求フェーズにおいてアドレス・バス・インターフェースに要求と要求トークンを順次送ることを特徴とするバス・エージェント。
JP2005343925A 1994-09-08 2005-11-29 据置きトランザクションを実行するための方法および装置 Expired - Lifetime JP4157127B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/302,600 US5615343A (en) 1993-06-30 1994-09-08 Method and apparatus for performing deferred transactions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP50965696A Division JP3771260B2 (ja) 1994-09-08 1995-09-08 据置きトランザクションを実行するための方法および装置

Publications (2)

Publication Number Publication Date
JP2006092575A true JP2006092575A (ja) 2006-04-06
JP4157127B2 JP4157127B2 (ja) 2008-09-24

Family

ID=23168453

Family Applications (2)

Application Number Title Priority Date Filing Date
JP50965696A Expired - Lifetime JP3771260B2 (ja) 1994-09-08 1995-09-08 据置きトランザクションを実行するための方法および装置
JP2005343925A Expired - Lifetime JP4157127B2 (ja) 1994-09-08 2005-11-29 据置きトランザクションを実行するための方法および装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP50965696A Expired - Lifetime JP3771260B2 (ja) 1994-09-08 1995-09-08 据置きトランザクションを実行するための方法および装置

Country Status (7)

Country Link
US (4) US5615343A (ja)
JP (2) JP3771260B2 (ja)
KR (1) KR100253753B1 (ja)
AU (1) AU3506295A (ja)
BR (1) BR9508906C1 (ja)
DE (1) DE19580990C2 (ja)
WO (1) WO1996007970A1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615343A (en) * 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
USRE38428E1 (en) 1995-05-02 2004-02-10 Apple Computer, Inc. Bus transaction reordering in a computer system having unordered slaves
US6108735A (en) * 1995-09-29 2000-08-22 Intel Corporation Method and apparatus for responding to unclaimed bus transactions
US5802055A (en) * 1996-04-22 1998-09-01 Apple Computer, Inc. Method and apparatus for dynamic buffer allocation in a bus bridge for pipelined reads
KR100280285B1 (ko) 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
US5923857A (en) * 1996-09-06 1999-07-13 Intel Corporation Method and apparatus for ordering writeback data transfers on a bus
US5878235A (en) * 1996-10-03 1999-03-02 Micron Electronics, Inc. Method and system for concurrent computer transaction processing
US6173349B1 (en) * 1996-10-18 2001-01-09 Samsung Electronics Co., Ltd. Shared bus system with transaction and destination ID
US6012118A (en) * 1996-12-30 2000-01-04 Intel Corporation Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus
US5930485A (en) * 1997-01-07 1999-07-27 Apple Computer, Inc. Deadlock avoidance in a computer system having unordered slaves
DE19712799A1 (de) 1997-03-26 1998-10-01 Siemens Nixdorf Inf Syst Abhängigkeitssteuerung für überlappende Speicherzugriffe
US6128677A (en) * 1997-10-15 2000-10-03 Intel Corporation System and method for improved transfer of data between multiple processors and I/O bridges
US6260091B1 (en) * 1997-10-20 2001-07-10 Intel Corporation Method and apparatus for performing out-of-order bus operations in which an agent only arbitrates for use of a data bus to send data with a deferred reply
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
US7071946B2 (en) * 1997-12-30 2006-07-04 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US6157398A (en) * 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6032178A (en) * 1998-01-12 2000-02-29 Siemens Aktiengesellschaft Method and arrangement for data transmission between units on a bus system selectively transmitting data in one of a first and a second data transmission configurations
US6195722B1 (en) * 1998-01-26 2001-02-27 Intel Corporation Method and apparatus for deferring transactions on a host bus having a third party agent
US6073198A (en) * 1998-03-31 2000-06-06 Micron Electronics, Inc. System for peer-to-peer mastering over a computer bus
US6223238B1 (en) 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
US6202101B1 (en) * 1998-09-30 2001-03-13 Compaq Computer Corporation System and method for concurrently requesting input/output and memory address space while maintaining order of data sent and returned therefrom
TW523672B (en) * 1999-04-23 2003-03-11 Via Tech Inc Bus system delayed transaction method and device applying the method
US6609171B1 (en) 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6813767B1 (en) * 2000-06-30 2004-11-02 Intel Corporation Prioritizing transaction requests with a delayed transaction reservation buffer
US6450882B1 (en) * 2000-08-30 2002-09-17 Liberty Diversified Industries, Inc. Precipitation resistant ridge vent
US6993663B1 (en) * 2000-08-31 2006-01-31 Microsoft Corporation Input buffer overrun checking and prevention
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6742160B2 (en) 2001-02-14 2004-05-25 Intel Corporation Checkerboard parity techniques for a multi-pumped bus
US6968409B1 (en) * 2001-08-29 2005-11-22 Lsi Logic Corporation Method and apparatus of establishing a dynamically adjustable loop of delayed read commands for completion in a queue buffer
US6961800B2 (en) * 2001-09-28 2005-11-01 Hewlett-Packard Development Company, L.P. Method for improving processor performance
US6807593B1 (en) * 2001-11-01 2004-10-19 Lsi Logic Corporation Enhanced bus architecture for posted read operation between masters and slaves
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
TWI282513B (en) * 2002-06-12 2007-06-11 Mediatek Inc A pre-fetch device of instruction for an embedded system
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7254658B2 (en) * 2004-06-08 2007-08-07 Arm Limited Write transaction interleaving
US7779188B2 (en) * 2005-03-22 2010-08-17 Intel Corporation System and method to reduce memory latency in microprocessor systems connected with a bus
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7373462B2 (en) 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
US20070067567A1 (en) * 2005-09-19 2007-03-22 Via Technologies, Inc. Merging entries in processor caches
JP4297969B2 (ja) * 2006-02-24 2009-07-15 富士通株式会社 記録制御装置および記録制御方法
WO2007097029A1 (ja) * 2006-02-27 2007-08-30 Fujitsu Limited プロセッサ装置および命令処理方法
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8145849B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US20090235083A1 (en) * 2008-02-20 2009-09-17 Micheal Bleahen System and method for preventing unauthorized access to information
US9443068B2 (en) 2008-02-20 2016-09-13 Micheal Bleahen System and method for preventing unauthorized access to information
US8145805B2 (en) * 2008-06-09 2012-03-27 Emulex Design & Manufacturing Corporation Method for re-sequencing commands and data between a master and target devices utilizing parallel processing
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US9104581B2 (en) * 2010-06-24 2015-08-11 International Business Machines Corporation eDRAM refresh in a high performance cache architecture
WO2013070217A1 (en) * 2011-11-09 2013-05-16 Intel Corporation Method and apparatus for an agent interfacing with a pipelined backbone to locally handle transactions while obeying an ordering rule
US9411748B2 (en) 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
WO2013095387A1 (en) 2011-12-20 2013-06-27 Intel Corporation Secure replay protected storage
US9122508B2 (en) 2012-06-15 2015-09-01 International Business Machines Corporation Real time measurement of I/O interrupt delay times by hypervisor by selectively starting and/or stopping corresponding LPARs

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4181974A (en) * 1978-01-05 1980-01-01 Honeywell Information Systems, Inc. System providing multiple outstanding information requests
YU40357B (en) * 1978-01-05 1985-12-31 Honeywell Inf Systems System facilitating a higher number of contemporary information claims
US4488232A (en) * 1981-10-02 1984-12-11 Hughes Aircraft Company Self-adjusting, distributed control, access method for a multiplexed single-signal data bus
US4481625A (en) 1981-10-21 1984-11-06 Elxsi High speed data bus system
JPH0632056B2 (ja) * 1985-05-31 1994-04-27 松下電器産業株式会社 デ−タ処理装置
US4807118A (en) * 1987-01-14 1989-02-21 Hewlett-Packard Company Method for handling slot requests over a network
US5235684A (en) * 1988-06-30 1993-08-10 Wang Laboratories, Inc. System bus having multiplexed command/id and data
US5006982A (en) * 1988-10-21 1991-04-09 Siemens Ak. Method of increasing the bandwidth of a packet bus by reordering reply packets
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
US5555425A (en) * 1990-03-07 1996-09-10 Dell Usa, L.P. Multi-master bus arbitration system in which the address and data lines of the bus may be separately granted to individual masters
JP3524110B2 (ja) * 1992-11-06 2004-05-10 株式会社ルネサステクノロジ マイクロコンピュータシステム
US5528764A (en) 1992-12-24 1996-06-18 Ncr Corporation Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period
US5615343A (en) * 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
US5568620A (en) 1993-06-30 1996-10-22 Intel Corporation Method and apparatus for performing bus transactions in a computer system
US5551005A (en) 1994-02-25 1996-08-27 Intel Corporation Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
BR9506997A (pt) 1994-03-01 1997-11-18 Intel Corp Arquitetura de barramento altamente canalizada
US5535340A (en) 1994-05-20 1996-07-09 Intel Corporation Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge
US5758106A (en) * 1994-06-30 1998-05-26 Digital Equipment Corporation Arbitration unit which requests control of the system bus prior to determining whether such control is required
US5699516A (en) * 1994-12-22 1997-12-16 Motorola, Inc. Method and apparatus for implementing a in-order termination bus protocol within a data processing system
US5696910A (en) * 1995-09-26 1997-12-09 Intel Corporation Method and apparatus for tracking transactions in a pipelined bus

Also Published As

Publication number Publication date
DE19580990T1 (de) 1997-08-21
DE19580990C2 (de) 1999-11-11
BR9508906A (pt) 1997-10-28
JP4157127B2 (ja) 2008-09-24
JPH10505184A (ja) 1998-05-19
JP3771260B2 (ja) 2006-04-26
KR970705792A (ko) 1997-10-09
US5937171A (en) 1999-08-10
KR100253753B1 (ko) 2000-04-15
US5615343A (en) 1997-03-25
US6405271B1 (en) 2002-06-11
AU3506295A (en) 1996-03-27
BR9508906C1 (pt) 2004-10-19
WO1996007970A1 (en) 1996-03-14
USRE38388E1 (en) 2004-01-13

Similar Documents

Publication Publication Date Title
JP4157127B2 (ja) 据置きトランザクションを実行するための方法および装置
US5568620A (en) Method and apparatus for performing bus transactions in a computer system
US6012118A (en) Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus
CA2186598C (en) Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge
US5696910A (en) Method and apparatus for tracking transactions in a pipelined bus
US4949239A (en) System for implementing multiple lock indicators on synchronous pended bus in multiprocessor computer system
US5901295A (en) Address and data bus arbiter for pipelined transactions on a split bus
CA2109043A1 (en) System and method for transferring data between multiple buses
US5911053A (en) Method and apparatus for changing data transfer widths in a computer system
US5903738A (en) Method and apparatus for performing bus transactions in a computer system
US6260091B1 (en) Method and apparatus for performing out-of-order bus operations in which an agent only arbitrates for use of a data bus to send data with a deferred reply
US5923857A (en) Method and apparatus for ordering writeback data transfers on a bus
JP3602435B2 (ja) 制御チップセット間におけるデータトランザクション方法
US6253302B1 (en) Method and apparatus for supporting multiple overlapping address spaces on a shared bus
US6694400B1 (en) PCI system controller capable of delayed transaction
JP3441521B2 (ja) バス・トランザクション実行の方法と装置
US20020169930A1 (en) Memory access control system, method thereof and host bridge
WO2006024985A2 (en) Method and apparatus for modifying an information unit using an atomic operation in a system with a mixed architecture
US20020166039A1 (en) Method and apparatus for supporting multiple overlapping address spaces on a shared bus
WO1998010350A1 (en) A data flow control mechanism for a bus supporting two-and three-agent transactions
JP2000207371A (ja) メモリライト方式

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080610

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080710

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130718

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term