(57)【特許請求の範囲】
【請求項１】
オンチップバスに装着された多数の回路デバイスを有する集積回路において、前記バスに入れられたコマンドが指定されたターゲット回路デバイスによって受取られていないことを示す無応答検出を備えるトランザクション肯定応答回路であって、
前記バスに設けられる別々のトランザクション肯定応答ラインと、
ターゲット回路デバイスの各々に関連するドライブ回路手段とを含み、前記ドライブ回路手段は、特定のターゲット回路デバイスに指定されたコマンドがそのデバイスによって受取られた場合にはいつでも、前記トランザクション肯定応答ラインを反対の状態に反転し、指定されたターゲット回路によるコマンドの未受信は、前記トランザクション肯定応答ラインが変化しないことにより示され、さらに
前記バスに装着され前記バスがアイドルである場合にはいつでも前記トランザクション肯定応答ラインをその反対の状態に駆動するよう接続されるバスアイドルデフォルトデバイスを含み、前記バスアイドルデフォルトデバイスは、前記トランザクション肯定応答ラインを監視しかつコマンドの未受信が示される場合にはいつでもダミー応答を生成するための手段を含む、トランザクション肯定応答回路。
【請求項２】
装着された多数の回路デバイスを備えるオンチップバスを有する集積回路アーキテクチャにおいて、コマンドとデータとは前記回路デバイス間で前記バスを渡って転送され、前記バスはデータ読出動作のためのスプリットトランザクションバスであり、指定されたデバイスが前記バスに入れられたコマンドまたはデータを受信したかを判断するための無応答検出回路を備えた同期トランザクション肯定応答（ＴＡＣＫ）システムであって、
前記オンチップバスに関連のＴＡＣＫラインを含み、前記ＴＡＣＫラインは２つの反対の状態を有し、さらに
回路デバイスが、その回路デバイスに意図されたコマンドまたはデータを受取ったときにはいつでも、ＴＡＣＫラインの現在の状態をその反対の状態に反転させるための回路デバイスの各々に関連のバスインターフェイス手段と、
前記バスがアイドルである場合にはいつでもＴＡＣＫラインの現在の状態をその反対の状態に反転させるよう前記バスに装着されるバスアイドルデフォルトデバイス（ＢＩＤＤ）と、
前記ＴＡＣＫラインの状態を監視するための無応答検出手段とを含み、指定された回路デバイスによるコマンドまたはデータの未受信は、前記ＴＡＣＫラインが変化されないままである場合に示され、前記無応答検出手段は、コマンドの未受信に応答してダミーデータを生成し、かつ前記ダミーデータを前記コマンドを発信した前記回路装置に送信するための手段を含み、前記ダミーデータは前記コマンドの前記未受信状態を示す、ＴＡＣＫシステム。
【請求項３】
前記無応答検出手段は前記ＢＩＤＤの一部である、請求項２に記載のＴＡＣＫシステム。
【請求項４】
前記無応答検出手段は、前記バスに装着された前記回路デバイスの各々に関連する検出回路を含む、請求項２に記載のＴＡＣＫシステム。
【請求項５】
回路デバイスの各々に関連する前記バスインターフェイス手段は、前記バス上に入れられたいずれのコマンドのアドレスフィールドと、その回路装置が応答するアドレス範囲とを比較するための手段を有し、整合するときにはいつでも、前記コマンドを前記回路デバイスに転送し、かつ前記ＴＡＣＫラインの状態を反転する、請求項２に記載のＴＡＣＫシステム。
【請求項６】
前記ＴＡＣＫラインの状態を反転するための前記手段は、
前記ＴＡＣＫラインに接続された入力と、反転出力とを有する第１のフリップフロップと、
前記アドレス比較手段に接続された入力と、出力とを有する第２のフリップフロップとを含み、両方のフリップフロップは前記バスに対するクロックによってクロックされ、さらに
トライステートドライバを含み、前記トライステートドライバは、前記第１のフリップフロップの前記反転出力に接続された入力と、前記第２のフリップフロップの前記出力に接続されたイネーブルと、前記ＴＡＣＫラインに接続された出力とを有する、請求項５に記載のＴＡＣＫシステム。
【請求項７】
前記無応答検出手段は、
フリップフロップを含み、前記フリップフロップは前記バスに対するクロックによってクロックされ、前記ＴＡＣＫラインに接続される入力と、出力とを有し、
排他的ＯＲゲートをさらに含み、前記排他的ＯＲゲートは第１の入力を前記ＴＡＣＫラインに接続され、第２の入力を前記フリップフロップの出力に接続され、出力は前記バス上のコマンドまたはデータの未受信の示唆を提供する、請求項２に記載のＴＡＣＫシステム。
【請求項８】
前記集積回路アーキテクチャはマルチプロセッサシステムを形成し、前記オンチップバスに装着される回路デバイスのいくつかは処理クラスタであり、前記バスは前記クラスタよりも速いクロックレートで動作する、請求項２に記載のＴＡＣＫシステム。
【発明の詳細な説明】
【０００１】
技術分野
この発明は、オンチップまたはオフチップで装着された多数の中速デバイスを備えるオンチップ高速バスを有する集積回路アーキテクチャに関し、特に、バスを渡るデバイス間のコマンドまたはデータ転送と、バス上に配置されるコマンドまたはデータパケットのターゲットデバイスによる肯定応答受信のためのハンドシェイク方法および回路に関する。
【０００２】
背景技術
典型的なバスシステムにおいては、バスは装着されるデバイスと同じ速度であるか、またはこれよりも遅い速度である。システムバスはプリント配線板上に位置決めされ、プロセッサとメモリチップモジュールとはボードにボンディングされ、バスはさまざまなチップ間のバスを渡る情報転送を遅くするキャパシタンスおよびインダクタンス遅延を受ける。そのようなシステムにおいては、情報転送における第１のボトルネックはデバイスではなくバスであり、レイテンシおよび帯域幅の計算は、バスへのアクセスを得るためのアービトレーション遅延に関わる。
【０００３】
システム全体、またはその大部分がチップに集積される場合、バス自体もチップ上に集積され得る。そのようなオンチップバスは非常に速く、典型的にはプリント回線板上に配置されるものよりも６倍から１０倍速い。６４０から８００ＭＨｚのクロックレートで動作するオンチップバスは、約４から５ギガバイト／秒のレートでデータを転送できる。この速度ではバスが非常に速いので、事実上バスは透過性である。バスは、バスに装着された最も速いターゲットデバイスにさえも、速度が顕著に勝る。たとえば、ＤＲＡＭは、０．８ギガバイト／秒のピークの維持可能量伝送レートを有する。２つのＤＲＡＭモジュールを備えていても、それらを総合した帯域幅はわずかに１．６ギガバイト／秒であり、まだバスの帯域幅よりも顕著に少ない。これは、システムの速度はバスの速度によって制限されるのではなく、バス上のターゲットデバイスの速度によって制限されることを意味する。
【０００４】
１つのデバイスが、バス上の別のデバイスからデータを受取るのを待機する間にバスを停滞させるのを避けるために、スプリットトランザクションバスを用い得る。この方法で、バスは同時に多くのトランザクションを進行させることができる。データ読出動作の各々は２つのステップで起こる。すなわち、読出開始、次いで読出完了である。読出開始と読出完了との間には遅延がある。この遅延は、ターゲットが要求をデコードし、要求されたデータを獲得し、それを要求するデバイス（マスタ）に送り返すために必要となる時間である。この時間の間には、マスタデバイスもターゲットデバイスもバス上にない。そうではなく、マスタデバイスはそのデータ読出コマンドを第１のバスサイクルで送った後に、バスを解放する。こうして、マスタデバイスがその読出の完了を待機する間に、バスは他のトランザクションをサポートすることができる。一方、ターゲットデバイスは受取った要求を処理し、かつ読出データが準備できたときにのみ、バスをアービトレーションし、要求されたデータをマスタデバイスに送る。データを要求するデバイスに転送することにより、読出サイクルは終了する。
【０００５】
スプリットトランザクションバスに関して起こり得る１つの問題は、ターゲットデバイスが存在しない場合である。もしコマンドを受取るデバイスがなければ、データは戻ってこない。しかしながら、スプリットトランザクションバスは通常は読出コマンドとその結果であるデータの受取りとの間に遅延を有するために、無応答は見出されないまま発生し得る。要求デバイスは無期限に待機し続ける。必要なのは、ターゲットデバイスによるトランザクション肯定応答を提供するハンドシェイク方法である。マスタデバイスが要求を送ってから２クロックサイクル以内に、ターゲットデバイスがその要求を受取ったという示唆を受取ることが望ましい。この本質的に即時のフィードバックに対する要件では、肯定応答を返すのに要求される時間の間バスを停滞させることなく、あるいは、ターゲットがデータ送信サイクルとは別の肯定応答サイクルに対してバスをアービトレーションすることを要求することなく、スプリットトランザクションバスで行なうことは困難である。
【０００６】
ワイザー（Wisor）他の米国特許第５，６６６，５５９号は、データを受取る周辺デバイスが中央ユニットに肯定応答信号を提供するシステムを記載する。タイムアウトカウンタが設けられ、もしタイムアウト期間が肯定応答信号の返信前に満了すると、制御ユニットはエラーフラグをアサートし、割込ルーチンを開始する。
【０００７】
この発明の目的は、高速スプリットトランザクションバスのための無応答検出を備えた同期トランザクション肯定応答回路を提供することである。
【０００８】
発明の要約
この発明の目的は、バスに別々のトランザクション肯定応答ラインを設け、ターゲットデバイスがそれ自体に向けられたコマンドを受取ったときにトランザクション肯定応答ラインの現在の状態を反対の状態に反転させるドライバ回路をターゲットデバイスの各々に設け、かつバスシステムにトランザクション肯定応答ラインの状態が反転されたかどうかを監視する肯定応答検出回路を設けることにより、達成される。この方策は、要求するマスタデバイスにそのコマンドが指定されたターゲットデバイスによって受取られたという即時のフィードバックを提供する。もしトランザクション肯定応答ラインの状態が変化していなければ、ターゲットデバイスが存在しないことが示唆される。
【０００９】
バスアイドルデフォルトデバイス（ＢＩＤＤ）が、他のデバイスがバスを駆動していない場合にトランザクション肯定応答ラインを駆動するために提供されてもよい。一実施例においては、ＢＩＤＤは、存在しないターゲットデバイスからの無応答を検出し、次いで要求するマスタデバイスにダミー応答を生成する回路を含み得る。ダミーデータは、要求されたデータではないことを示すフラグを立てられる。これに代えて、トランザクション肯定応答の不在の検出は、マスタデバイスごとのバスインターフェイスにおける検出器によって行なわれてもよい。
【００１０】
発明を実行するためのベストモード
図１を参照すると、マルチプロセッサシステムを形成する集積回路１１は、入力／出力（Ｉ／Ｏ）クラスタ１４として複数の処理クラスタ１３0−１３3（ここでは数は４個）と、ＳＤＲＡＭメモリコントローラ１５とを有し、これらすべてはバスインターフェイスユニット１７によってオンチップ高速グローバルバス１６に装着される。典型的なシステムは、６４０ＭＨｚクロックレートで動作するグローバルバス１６を有し得る一方、クラスタ１３−１５はその半分のクロックレート、すなわち３２０ＭＨｚで動作する。グローバルバス制御ユニット１８は、さまざまなクラスタ１３−１５によるバス１６へのアクセスを規制するバスアービタおよび、どのクラスタ要素もバスを駆動していない場合に用いるバスアイドルデフォルトデバイス（ＢＩＤＤ）をも含む。Ｉ／Ｏクラスタ１４およびＳＤＲＡＭコントローラ１５は、Ｉ／Ｏバス１９およびプログラム可能Ｉ／Ｏサブシステム２０を介してオフチップデバイスと通信し、該プログラム可能Ｉ／Ｏサブシステム２０は、チップのＩ／Ｏパッド２１と１つ以上のＳＤＲＡＭメモリチップ２２とに接続される。この発明では主に、グローバルバス１６、バスインターフェイスユニット１７、およびグローバルバス制御ユニット１８内のＢＩＤＤデバイスに焦点を当てる。
【００１１】
図２を参照すると、集積回路のバス構造は、単一のグローバルバス１６と、図１に示すようにグローバルバス１６に装着された複数のクラスタ１３−１５ごとのローカルバス２９とからなる。処理クラスタ１３の各々は、処理要素、デジタル信号エンジン、メモリ転送制御エンジンならびに関連のクラスタデータ、および命令メモリ、キャッシュならびにレジスタなどの複数の処理機能を含み、すべてはクラスタ１３のローカルバス２８に装着される。Ｉ／Ｏクラスタ（図１では１４）も同様であるが、Ｉ／Ｏ転送エンジンがデジタル信号エンジンおよびメモリ転送制御エンジンに置換わり、Ｉ／Ｏバス（図１では１９）もまたローカルバス２９とインターフェイスする点が異なる。バス１６および２９は、バス上のさまざまな要素が情報（データ、命令など）を転送することを可能にする。バス要素は２種類からなる。すなわち、マスタ２５およびターゲット２７である。バスマスタデバイス２５の例は、処理要素、デジタル信号エンジン、メモリ転送制御エンジンおよびＩ／Ｏ転送エンジンである。バスターゲットデバイス２７の例は、クラスタデータおよび命令メモリならびにキャッシュを含む、メモリおよびレジスタ、処理要素デジタル信号エンジンおよびメモリ転送制御エンジンのためのクラスタハードウェアレジスタ、およびＤＲＡＭメモリおよびシステムレジスタである。すべての情報転送はマスタとターゲットとの間で行なわれ、マスタはターゲットとの間の転送を開始する。クラスタ１３内のすべての転送はローカルバス２９を渡って行なわれるのに対し、Ｉ／Ｏクラスタ（図１においては１４）およびＳＤＲＡＭコントローラ（図１においては１５）を含むクラスタ間の情報転送は、グローバルバスインターフェイス１７を介してグローバルバス１６を渡って行なわれる。グローバルバスインターフェイス１７は、関連のＦＩＦＯレジスタバンク３１Ａを備えたマスタインターフェイス３１Ｂと、やはり関連のＦＩＦＯレジスタバンク３３Ｂを備えたターゲットインターフェイス３３Ｂとを含む。すべての書込動作はマスタからターゲットへの直接トランザクションである。すべての読出動作はスプリットトランザクションであり、マスタからターゲットへのコマンド書込がトランザクションを開始し、その後にターゲットから発信マスタへの別の応答書込によりトランザクションが終了する。グローバルバス制御（図１においては１８）は、グローバルバス１６へのアクセスのためにマスタおよびターゲットインターフェイス３１Ｂおよび３３Ｂの間でアービトレーションし、かつマスタとターゲットＦＩＦＯ３１Ａおよび３３Ａとの間でデータ転送のためにクロッキングを提供する。
【００１２】
図３を参照すると、グローバルバスインターフェイス１７は、マスタインターフェイス３１とターゲットインターフェイス３３とを含む。マスタインターフェイス３１は転送を開始し、ターゲットインターフェイス３３はマスタインターフェイス３１から受取った転送要求に応答する。ほとんどのグローバルバスインターフェイス１７は、マスタインターフェイス３１およびターゲットインターフェイス３３の両方を有するが、レジスタバンクまたはメモリなどのグローバルバス上のいくつかのデバイスは１つのみのターゲットインターフェイス３３を有し得る。バスシステムはすべてのバス要素に対して単一の３２ビットアドレスの一様のアドレス指定を用いる。いずれのバスマスタ要素も、ターゲット要素のバスアドレスを用いて他のいずれのバスターゲット要素にもアドレス指定できる。したがって、グローバルバスマスタインターフェイス３１の各々はレジスタ４１にストアされる「マイデバイス番号」と呼ばれる独自のハードウェアに割当てられたデバイス番号を有する。この番号は、グローバルバス転送においてデータを受取るべき独自のインターフェイス３１を示唆する。これはハードウェアポート番号であり、プログラマーによっては生成されずまた参照もできない。ターゲットインターフェイス３３の各々はまた、「マイグローバルアドレス範囲」と呼ばれるグローバルバスアドレスの範囲を有し、これはターゲットが応答するであろうアドレスを識別する。このアドレス範囲も同様にターゲットインターフェイス３３内のレジスタ４３にストアされる。
【００１３】
グローバルバス１６は、単一のトランザクション書込、スプリットトランザクション読出バスである。これは６４ビットバスであり、３２ビットアドレスと６４ビットデータ転送とを備える。バスサイクルの各々は、トランザクションタイプ（アイドル、コマンド、データ、最後のデータ）と、情報を受取るバスデバイスと、６４ビットのコマンドまたはデータとを特定する。コマンドオクテットは、コマンド情報（読出／書込など）と３２ビット転送アドレスとを含む。データを受取るデスティネーション（読出コマンドまたは書込コマンドに加えて書込データを受取るターゲットデバイス、またはターゲットデバイスによって返信されるデータを受取るマスタデバイスのいずれか）は特定のデバイスであってもよいし、すべてのデバイスに対するブロードキャストであってもよい（「デバイス０」として指定される）。推奨されるグローバルバス転送アトムは各々４バイトの８ワードであり、これにより各々８バイトの４バスオクテット（６４ビット）となり、１、２および４オクテット転送は特別な場合である。４オクテットデータ転送は、８０％のバス効率を有する（４データオクテットごとに１コマンドオクテット）。すべての転送は、バス１６上のグローバルバスインターフェイス１７におけるＦＩＦＯ（図３においては５６、６３、８２、８５）への書込である。アドレスおよびデータはパイプライン化される。バス上のすべてのデータ転送は、自然に整列されたアドレスでの６４ビットバスオクテットである。転送はどのアドレスにおいても開始できる。データはバスクロックに同期して転送され、各々のバスインターフェイスデバイス１７におけるＦＩＦＯレジスタは主にソースとデスティネーションとの間のクロック速度差およびスキューに対して補償するためにグローバルバス１６との間のアドレスおよびデータ情報をバッファするよう機能する。ＦＩＦＯレジスタは、ソースとデスティネーションとの間で最大４クロックサイクル（それぞれの側で２クロックサイクル）のパイプライン遅延を加えることができる。
【００１４】
グローバルバス１６は、４つの情報転送タイプを有する。すなわち、データ書込、データ読出、制御書込および制御読出である。バスマスタによるデータ書込動作は、第１のバスサイクルで転送コマンドを送り、次いで１、２または４データオクテットを後続のサイクルで送る。最後のデータオクテットの転送が書込サイクルを完了させる。バスマスタによるデータ読出動作は、転送コマンドを第１のサイクルで送り、次いでバスを解放する。ターゲットとされたデバイスはコマンドを受取る。読出データが準備できたとき、ターゲットはバスに対してアービトレーションし、読出データをコマンドオクテットに示されたバスマスタに返送する。要求するマスタデバイスへの最後のデータオクテットの転送は読出サイクルを完了させる。制御書込は、データ書込動作のアドレス変形であり、単一のデータオクテットを備える。すなわち、これはデータを別の３２ビット制御アドレス空間に書込む。コマンドオクテットのデータ／制御ビットは制御アドレス空間への書込を示唆する。すべてのターゲットがコマンドおよびデータオクテットを受取り、サイクルを完了させる。制御書込は、これらを受取るインターフェイス内の別のデータレジスタに向かう。これはインターフェイスがデータ動作でビジーになることによるコマンド拒絶を回避するものである。制御書込は、クラスタの各々にベースアドレスを送り、かつグローバルレジスタのような他のすべてのグローバルバスデバイスにベースアドレスと構成データとを送るために用いられる。制御書込もまた、すべてのクラスタにグローバルタイミング信号およびグローバルウェークアップ割込を送るために用いられる。クラスタの各々は、そのクラスタベースアドレスのグローバルバス制御書込を受取る。クラスタベースアドレスを受取ると、クラスタの各々はそのベースアドレスをそのすべての処理要素とデジタル信号エンジンとに送り、これらはこのアドレスをストアして、クラスタデータバス上に適切なグローバルアドレスが存在する場合に内部レジスタへの転送要求に応答できるようにする。制御読出は制御書込の対になるものである。制御読出は、ホストまたは構成デバイスが、グローバルバス制御アドレス空間におけるベースアドレスと構成レジスタとを読出し、かつこれらを書込むことを可能にする。これはＰＣＩ構成レジスタ（たとえばＰＣＩインターフェイスを介して外部ＰＣＩデバイスが参照可能なもの）に対して必要となる。
【００１５】
グローバルバスマスタの各々は、いかなる一時点においても１つの処理中のトランザクションだけを有する。これは、現在のトランザクションが完了するまで別のトランザクションを開始することができない。マスタの各々が一度に１つのトランザクションしかサポートできなくても、バスは進行中に多くのトランザクションを有し得る。読出動作の各々は２つのステップで起こる。すなわち、読出開始、次いで読出完了である。読出開始と読出完了との間には遅延がある。この遅延は、ターゲットがコマンドをデコードし、読出データを獲得し、これをマスタに返信するのに要求される時間である。この時間の間、マスタもターゲットもバス上にない。マスタがその読取の完了を待機する間、バスは他のトランザクションをサポートし得る。たとえば、他のマスタは書込転送を行ない、かつ他の読出転送を行なうこともできる。
【００１６】
グローバルバストランザクションの各々は、ターゲットデバイスに書込まれるコマンドオクテットで開始する。コマンドオクテットは、以下のフィールドを含み得る。すなわち、読出／書込転送ビットと、データ／制御タイプビットと、予想される転送長をオクテット（１、２、４または４以上）でＤＲＡＭメモリに示すための２ビット転送長フィールドと、２ビット優先フィールドと、２つのマルチビットフィールド（たとえば、各々６ビット）とを含み、該２つのマルチビットフィールドはそれぞれ、読出コマンドに応答するデスティネーションとしてターゲットデバイスが用いるための発信マスタインタフェースデバイスのデバイス番号とクラスタ内で特定のデバイスを指定するサブデバイス番号とを指定し、フィールドはさらに、ターゲット内のデータのアドレスおよびターゲットデバイスアドレスを指定する３２ビットアドレスフィールドを含む。所望であれば他のフィールドを定義するか、またはコマンドのサイズを総合してもグローバルバスによって確立された１オクテットサイズを超えなければフィールドサイズを拡張してもよい。
【００１７】
図４のタイミング図とともに再び図３のインターフェイス構造を参照すると、マスタデバイスが１から４データオクテットを指定されたターゲットデバイスに書込むデータ書込動作は、マスタデバイスがマスタインターフェイス３１へコマンドを転送することにより開始するが、これはローカルバス２９を介してマスタインターフェイスバス４７に、次いでライン５１を介してコマンドバッファ５３へ転送される。「マイデバイス番号」記憶レジスタ４１からライン５２を介してコマンドバッファ５３によって受取られるマスタインターフェイスのデバイス番号は、適切なフィールド内のコマンドに付与される。次いで、マスタインターフェイス３１はグローバルバスへのアクセスを要求するが、これは図４において参照番号９１でグローバルバスの要求ライン（ＧＢＲ♯）がローになることにより示される。要求はコマンドオクテットに対して行なわれ、かつデータオクテットの各々の書込に対しても行なわれる。図４に示す例においては、マスタの要求信号は５オクテット転送に対して５クロックサイクルの間ローにとどまる。グローバルバス制御のアービタ（図１においては１８）はマスタインターフェイスへのアクセスを要求されたサイクルの数だけ承認するが、これは参照符号９３において５クロックサイクルの間承認ライン（ＧＢＡ♯）がローになっていることにより示される。マスタインターフェイス３１は次いで書込コマンドオクテットとデータオクテットとを、図３におけるコマンド出力ライン５４を介して送り、インターフェイスバス４７と書込データライン５５とを介して通信する書込ＦＩＦＯレジスタバンク５６からの書込データライン５７を介してグローバルバスに送る。この書込コマンドの後に要求された数のデータオクテットが続く発信は、図４におけるオクテット９５−９９によって示される。
【００１８】
書込コマンドオクテットは、ターゲットデバイスコード（ターゲットデバイス）＝０によって図４において１００で示されるように、すべてのグローバルバスターゲットインターフェイス（それ自体をも含む）へのブロードキャストである。これがブロードキャストであるのは、マスタがどのグローバルバスがコマンドオクテットに含まれるアドレスに応答するかわからないためである。コマンドオクテットは、転送のための３２ビットグローバルアドレス１０１と、転送タイプ（書込）と、転送長（１−４オクテット）とを含む。これはまた、マスタのデバイス番号であるマイデバイス番号をも含むが、これは書込動作においては用いられない。ターゲットデバイス３３の各々は、コマンド入力ライン７１を介してターゲットインターフェイスのコマンドバッファ７２内に書込コマンドと、データライン８１を介してターゲットインターフェイスの書込ＦＩＦＯレジスタ８２内に書込データとをそれぞれ受取る。これは、ターゲットアドレスライン７４を介して比較回路９５で受取った書込コマンド内の３２ビットアドレスと、記憶レジスタ４３からライン７６を介して比較回路７５で受取ったマイグローバルアドレスであるそれ自体のグローバルアドレスと比較する。もし整合すれば、これは書込データ１０２−１０５を受取り、その書込ＦＩＦＯ８２からライン８３を渡ってクロックアウトする。これにより書込動作は終了する。もし整合するがデバイスが先行のコマンドによりビジーであれば、これはコマンド拒絶をバスに送る。もし整合しなければ、ターゲットはコマンドを無視し、次の書込コマンドに対して準備するために書込ＦＩＦＯ８２をフラッシュする。すべての書込がブロードキャストであることに留意されたい。通常は意図されるターゲットのみがブロードキャスト書込データを受取り、他のデバイスはこれを捨てる。しかしながら、１つ以上のターゲットに書込データをブロードキャストすることも、もしターゲットが一連のブロードキャストアドレスをデコードするよう設計されていれば可能である。
【００１９】
次に図３および図５を参照して、ターゲットからのマスタデータ読出を考察する。マスタインターフェイス３１は、図５において１２１、１２３および１２５に示されるように、バスへのアクセスを要求し受取った後に、グローバルバスに読出コマンドオクテットを送ることにより転送を開始する。読出コマンドオクテットは、（図５の１２６でデバイス０によって示されるように）すべてのグローバルバスターゲットインターフェイス（それ自体のものも含む）に対するブロードキャストである。これがブロードキャストであるのは、マスタがどのグローバルバスデバイスがコマンドオクテットに含まれるアドレス（図５においては１２７）に応答するかわからないためである。コマンドオクテットは、転送のための３２ビットグローバルアドレスと、転送タイプ（書込）と転送長（１−４オクテット）とを含む。これはまた、ターゲットデバイスがその応答のために用いる、マスタのデバイス番号であるマイデバイス番号をも含む。マスタは読出コマンドオクテットを送信し終わると、後で読出ライン６２を渡って読出データを受けるためにその読出ＦＩＦＯ６３を作動状態にする。通常はこの時点でマスタはストールし、ターゲットが読出データを送って読出コマンドを完了させるのを待機する。ターゲットインターフェイス３３の各々は、コマンド入力ライン７１を渡って読出コマンドオクテットをバッファ７２内に受取る。比較回路７５を用いることにより、これはその読出コマンド内の３２ビットアドレスと、レジスタ４３内にストアされたそれ自体のグローバルアドレスであるマイグローバルアドレスとを比較する。もし整合すれば、コマンドはライン７３および７７を渡ってインターフェイスバス６７に転送され、次いでローカルバス２９に送られ、要求されたデータを受取り、ローカルバス２９と、インターフェイスバス６７と、読出ライン８４および８６と、読出ＦＩＦＯレジスタバンク８５とを介して、これをグローバルバス１６に転送する。図５において１３１および１３３に示されるように、グローバルバス１６へのアクセスを要求しこれを獲得した後に、図５においてマスタデバイスコード１３９の使用により示されるように、応答アドレスとしてコマンドオクテット内に含まれるマスタのデバイス番号を用いることにより要求された読出データをマスタに送る。これにより読出動作が終了する。もし整合するがデバイスが先行のコマンドによりビジーであれば、これはコマンド拒絶１４５をバス１６に送る。もし整合しなければ、ターゲットはコマンドを無視する。データ１４０−１４３を、マスタ内の待機中の読出ＦＩＦＯ６３に送ることができる唯一の有効な方法は、先行の読出コマンドに応答してのみであることに留意されたい。コマンドオクテットのみがコマンドを送信したマスタのデバイス番号を含み、このデバイス番号はコマンドを送信するマスタデバイス内にハードウェアとして組み込まれる（４１）。デバイス番号は比較回路６０によってライン５８上で読出され、ライン５９を渡って比較回路６０によって受取られたストアされたデバイス番号（４１）に対して調べられる。整合は、制御ライン６１を介してＦＩＦＯ６３をイネーブルする。他の何らかのデバイスが、開いたマスタ読出ＦＩＦＯにデータを送り、オープンリードコマンドの不適切な完了をもたらし得る他の有効な方法はない。
【００２０】
ターゲットデバイスはブロードキャスト書込を受取り、読出に応答する。これに代えて、もしマスタデバイスがどのデバイスがコマンドを受取るべきであるかわかっていれば、マスタデバイスはその書込コマンドおよびデータをブロードキャストする代わりに特定のターゲットデバイスに、送ってもよい。これを行なうと、他のデバイスがコマンドを受取り、その結果電力を散逸させることがないために、電力を節約することができる。
【００２１】
要約すると、例として４オクテットデータ転送を用いた、基本的な書込転送シーケンスは以下のとおりである。
【００２２】
１．マスタデバイスが、バス上の５オクテット転送を要求する。
２．マスタがターゲットバスデバイス番号および書込コマンドを発する。もし書込に対するターゲットバスデバイス番号が未知であれば、ターゲットデバイス番号は０（ブロードキャスト）であってもよい。書込コマンドは、書込アドレス、書込コマンド、コマンド優先、チェーンビットおよびマスタデバイスコードを含む。
【００２３】
３．データオクテット０−２を発する（転送は、転送長コードに応じて１〜４オクテットであり得る）。
【００２４】
４．データオクテット３と最後の転送タイプを発し、バスを解放する。バスアービトレーションは再びこのサイクルで開始する。
【００２５】
例として４オクテットデータ転送を用いた、基本的な読出転送シーケンスは以下のとおりである。
【００２６】
１．マスタデバイスが、読出コマンドのために１オクテット転送を要求する。
２．マスタが、ターゲットバスデバイス番号と読出コマンドとを発する。もし読出に対するターゲットバスデバイス番号が未知であれば、ターゲットデバイス番号は０（ブロードキャスト）であってもよい。読出コマンドは、読出アドレス、読出コマンド、コマンド優先、チェーンビットおよびマスタデバイスコードを含む。マスタデバイスコードはＤＲＡＭ応答アドレスである。
【００２７】
３．バスを解放する。
４．ターゲットデバイスが、読出データ応答のために４オクテット転送を要求する。
【００２８】
５．ターゲットが、ターゲットデバイスアドレスと読出データの第１のオクテットを発する。マスタデバイスコードは読出データに対するターゲットである。転送は、転送長コードに応じて１〜４オクテットであり得る。
【００２９】
６．データオクテット１〜２を発する。
７．データオクテット３、最後の転送タイプを発し、バスを解放する。バスのアービトレーションはこのサイクルで再び開始する。
【００３０】
スプリットトランザクションバスを用いる、上述のシステムと同様のものにおいて、この発明はトランザクション肯定応答（ＴＡＣＫ）信号をバスシステムに与えて、少なくとも１つのターゲットデバイスによるコマンドまたはデータの受取りを示唆する。特に、グローバルバス１６上で転送されるオクテットの各々を受取るターゲットデバイスは、グローバルバス１６の転送肯定応答（ＴＡＣＫ）ラインを活性化することにより、オクテットに肯定応答する。これは転送されるオクテット、コマンドまたはデータの各々に対して当てはまる。ＴＡＣＫは、ターゲットがこれに意図されたコマンドオクテットまたはデータオクテットを受取ったことを示唆する。図３に示すように、ターゲットデバイス３３が制御読出または書込オクテットを受取ったとき、これは比較回路７５を用いて、これが意図されたターゲットであるかどうかを調べるためにデコードする。もしそうであれば、これはＴＡＣＫを（ＴＡＣＫ信号をライン８０に与えるＴＡＣＫ生成回路７９によって）、図４および図５に１０６および１４４で示されるようにオクテットが転送された２クロック後にＴＡＣＫ信号のために活性化させる。ターゲットはＴＡＣＫを、これが（図４および図５に１１１および１４５で見られるように）コマンドを拒絶した場合でも活性化させる。もしコマンドが書込であれば、書込データオクテットの各々もまたターゲットによって（図４の１０７−１１０で）肯定応答される。同様に、読取データを受取るマスタはオクテット読出の各々に対してＴＡＣＫを（図５の１４６−１４８で）活性化させる。ＴＡＣＫにより、コマンドにどのデバイスも応答しない状態、すなわちバスエラーを検出することができる。ＴＡＣＫは、バスタイムアウトを待機する必要なくこれを即時に検出する。ＴＡＣＫはデバッギングに対しても有用である。すなわち、応答したデバイスがあるかどうか見出すことができる。干渉なしに、１つ以上のデバイスがＴＡＣＫ信号に応答することができる。
【００３１】
ＴＡＣＫは独自のコーディングを有する。ＴＡＣＫを活性化するためには、先行のクロックからその状態を変化させる。連続的なＴＡＣＫ信号に対しては、ＴＡＣＫラインはクロックごとに反転する。ターゲットデバイスの各々は、バスクロックごとにＴＡＣＫを活性化させる。１つ以上のデバイスがＴＡＣＫ信号に応答できることに留意されたい。すなわち、すべての応答するデバイスは同じ方向にＴＡＣＫを駆動する。図６および図７は、ＴＡＣＫ信号を生成し、かつＴＡＣＫ信号を検出するための論理のブロック図である。図６の生成器論理においては、最後のＴＡＣＫフリップフロップ１５１は先行のサイクルに対してＴＡＣＫ信号値を記録する。デコードフリップフロップ１５３は、先行のサイクルにおける有効なアドレスデコードを記録する。もしターゲットアドレスが先行のサイクルで有効であれば、この論理はＴＡＣＫドライバ１５５をイネーブルすることによりＴＡＣＫ信号に応答する。ＴＡＣＫドライバ１５５は、フリップフロップ１５１の反転出力を用いて先行のＴＡＣＫ値に相補的である現在のＴＡＣＫ値を生成する。このＴＡＣＫ生成回路は、ターゲットデバイスの各々の、またはグローバルバス上にターゲットデバイスを含むクラスタのターゲットバスインターフェイス３３の一部である。
【００３２】
図７の検出器論理内で、最後のＴＡＣＫフリップフロップ１５７は先行のサイクルに対するＴＡＣＫ信号値を記録する。もし現在のＴＡＣＫ信号値が先行のサイクルにおけるＴＡＣＫ信号に対して相補的であれば、現在のＴＡＣＫ信号は有効であり、ＸＯＲゲート１５９は「真」ＴＡＣＫ検出済信号値を出力する。ＴＡＣＫ検出器回路はマスタデバイスの、またはグローバルバス上のマスタデバイスのクラスタの各々のマスタバスインターフェイスの一部である。これに代えて、単一のＴＡＣＫ生成器がグローバルバス制御（図１における１８）のバスアイドルデフォルトデバイス（ＢＩＤＤ）の一部を形成してもよい。いずれの場合においても、もしバスがアイドルであれば、ＢＩＤＤはＴＡＣＫを活性化し、バスをデフォルトレベルに駆動する。もしコマンドが発信されどのデバイスも応答しなければ、ＴＡＣＫラインは変化しない。これにより、存在しないデバイスに対してアドレス指定したかどうかを検出することができる。もしどのデバイスもＴＡＣＫを駆動していなければ、浮遊容量およびバス保持論理がＴＡＣＫラインをその先行のレベルに保持する。
【００３３】
グローバルバス（ＧＢ）上のマスタデバイスの各々は、いずれの一時点においても１つの進行中のＧＢ転送しか有し得ない。読出転送に対しては、ＧＢマスタは読出データが返信されるのを待機する。書込転送に対しては、マスタはコマンドに対するバスの承認と、バスからのコマンド拒絶の不在とを待機するが、これらは書込コマンドおよびデータが認証されたことを示す。これはマスタとターゲットとの間の転送帯域幅の自動制御をもたらす。これは自己スロットリングと呼ばれる。マスタの各々はターゲットが応答するのを待機する。ターゲットは多くのＧＢ転送コマンドを受取っており、それらを処理している途中であるかもしれない。これらのコマンドは典型的にはコマンドＦＩＦＯにおいてバッファされる。ターゲットは、そのＦＩＦＯ内にＮ個のマスタからのＮ個のコマンドを有し得る。一旦コマンドがＦＩＦＯに入ると、Ｎ個のデバイスのすべては、各々のコマンドが肯定応答されるまで待機する。時間がかかってもマスタの各々は転送が完了するまで待機するために、ターゲットがオーバーランすることはない。
【００３４】
図８および図９を参照すると、グローバルバスがアイドルである場合、バスを駆動するために選択さるたアクティブなデバイスはない。もしいずれのアクティブなデバイスも選択されていなければ、アービタはデフォルトデバイスであるバスアイドルデフォルトデバイス（ＢＩＤＤ）をバスを駆動するために選択する。そうでなければ、デバイスラインは浮動し、ノイズとエラーとを引起す可能性がある。ＢＩＤＤは、アービタからのアイドル承認信号に応答するアイドルバス論理およびバスドライバ１６１によってバスラインを有効なレベルに駆動する。これはデータワード、バイトイネーブルおよびデバイスアドレスに対して０を送り、ワードタイプに対しても０を送る。すなわち、アイドルコマンドである。これに代えて、アドレス／データラインはそれらの先行の値に保持され（低出力のために）、すなわちバイトイネーブルは不活性に、ターゲットデバイス番号はすべて１に保持されてもよい。これは出力１６３においてＴＡＣＫ信号を活性化させるが、これはＢＩＤＤが有効なデバイスであり、バスを有効に駆動しているためである。ＴＡＣＫ信号が駆動されない唯一の時間は、コマンドまたはデータワードがバス上に送られて、いずれのデバイスもそれに応答しない場合だけである。
【００３５】
ＢＩＤＤはまた、ＴＡＣＫ検出論理１０５（図７に示す）を介して、ＴＡＣＫなしで読出コマンドに応答するが、これによりいかなるデバイスも読出に応答しないことを示す。グローバルバスマスタデバイスは、存在しないターゲットアドレスに対して読出および書込コマンドを発信することができる（図９の例においてはデバイス３６、１５および２７）。この場合では、いかなるデバイスもアドレスをデコードし、コマンドに応答し、ＴＡＣＫ信号を発信しない（図９においてはＴＡＣＫ応答なしにより示される）。コマンドを発信したＧＢマスタは、ＴＡＣＫの不在を見出しコマンドを打切らない限り読出データを待機する。次の問題はどのようにコマンドを打切るかである。最も簡単な方法は、代替的なデータ（図９における１７５−１７７）を与え、データが有効ではないことを示すフラグを立ててコマンドを通常の完了状態までランさせることである。これは受取状態機械（およびこれらに依存する他の状態機械）に対して特別な変更がないことを意味するが、ダミーデータを挿入することが必要である。グローバルバスマスタはこれを行なうために、バスに要求を行ない（図９に示す１７９での要求および１７１での承認）、バス上にそれ自体が受取るためのダミーデータを配置するか、または１〜４バスアイドルサイクルを送ることが必要となる。ダミーデータを挿入する間にグローバルバスをオフに保持するためにこれを行なうことが必要となる。そうでなければ、グローバルバスは、グローバルバスマスタ論理がダミーデータを挿入している間に、データをＦＩＦＯに入れようと試行することが考えられる。
【００３６】
図８は、ＴＡＣＫなし応答論理を備えた、ＢＩＤＤに対するマイクロアーキテクチャを示す。ＢＩＤＤは、バッファレジスタ１６７を通してデバイス０ブロードキャストコマンドを監視し、ＴＡＣＫなし応答を備えた読出コマンドを調べる。ＴＡＣＫなし応答の場合（図９において１８３）、状態機械１６９はグローバルバスに要求を行ない、コマンド内の２長さビットによって決定される１、２または４オクテットの０データの読出応答を発信する。これは読出応答のための適切なワードタイプコードを備えて、０データ値と０バイトイネーブルとを返信する。０バイトイネーブルは、データが無効であることを示す。（読出データは通常はすべてのバイトイネーブルが１に設定されたデータを返信する）。ＢＩＤＤはまた、読出コマンドからのデバイスアドレスに応答し（図９における１８３）、それによりダミーデータは発信元の要求デバイスに進む。ＢＩＤＤはＦＩＦＯ１７１を用いて、ＴＡＣＫなし読出応答に対してバスの制御が認証される前に、ＧＢからの最大５つの読出要求まで保留する。
【００３７】
図９は、ＴＡＣＫなし応答のタイミング図を示す。ＢＩＤＤは、ＴＡＣＫなしを備えた読出コマンドに対するコマンドバッファリングを最小化するようＧＢに要求する場合に最上級の優先性を有する。コマンドバッファリングが必要であるのは、ＴＡＣＫなし応答を備えたいくつもの読出コマンドが連続して起こり得るためである。最上級の優先性により、３つのコマンドのみがバッファされる必要があり、これらは状態の検出とＧＢにダミー読出データを入れる間のクロックの数に対応する。すなわち、１つは状態を検出するためであり、１つはＧＢ要求を発信するためであり、１つはＧＢ承認を受取るためである。図９のタイミング図は、ＢＩＤＤがＧＢアービタに対して最上級の優先性を有し、かつＢＩＤＤがパルス状の要求に対してＤＣ要求（１７９）を提示できることを想定する。ＢＩＤＤは必要であるよりも長い期間ＧＢ要求を保持することができるが、これはＴＡＣＫなし応答が頻繁には起こらないためである。一旦ＢＩＤＤ応答要求が発信されると、ＢＩＤＤはもし要求されるよりも承認時間が長ければアイドルサイクルを入れることができる。存在しないアドレスに対していくつもの読出コマンドが連続して起こり得るが、これはＢＩＤＤがこれらの読出コマンドをバッファしなければならないことを意味する。これがＧＢに対するアクセスを得ることができるまで、コマンドをバッファしなければならない。ＴＡＣＫなし応答論理を最上級優先度ＧＢデバイスとすることにより、ＴＡＣＫが検出された時間と、ＧＢ承認が受取られる時間との間のバッファリングをクロックの数にまで最小化することができる。これは３つのコマンドであろう。すなわち、１つはこれを検出し、１つは要求を発信し、１つは承認を受取る。１４ビットのみをコマンドワードから退避させればよいことに留意されたい。２ビットの長さコードと、１２ビットの読出応答に対するデバイスおよびサブデバイスアドレスである。
【図面の簡単な説明】
【図１】  この発明の無応答検出を備える同期トランザクション肯定応答が配置される、高速スプリットトランザクションバスを備えた集積されたマルチプロセッサシステムの概略ブロック図である。
【図２】  この発明のトランザクション肯定応答を含むグローバルバスインターフェイスを備えた、図１のシステムにおける処理クラスタの概略ブロック図である。
【図３】  ターゲットインターフェイスにおけるトランザクション肯定応答生成器７９を示す、図２のグローバルバスインターフェイス１７の詳細なブロック図である。
【図４】  信号状態の反転として示されるトランザクション肯定応答（信号ＴＡＣＫ番号）を備えた、図１から図３におけるグローバルバス１６上の、書込転送のタイミング図である。
【図５】  信号状態の反転として示されるトランザクション肯定応答（信号ＴＡＣＫ番号）を備えた、図１から図３におけるグローバルバス１６上の、読出転送のタイミング図である。
【図６】  トランザクション肯定応答（ＴＡＣＫ）生成論理のブロック回路図である。
【図７】  トランザクション肯定応答（ＴＡＣＫ）検出論理のブロック回路図である。
【図８】  図８のＴＡＣＫなし検出器を含む、図１のグローバルバス制御ユニット１８の一部である、バスアイドルデフォルトデバイス（ＢＩＤＤ）の詳細なブロック図である。
【図９】  ＴＡＣＫなし検出に対する図８のＢＩＤＤの応答を示すタイミング図である。
【図１】
0004412852.tif 000002
【図２】
0004412852.tif 000003
【図３】
0004412852.tif 000004
【図４】
0004412852.tif 000005
【図５】
0004412852.tif 000006
【図６】
0004412852.tif 000007
【図７】
0004412852.tif 000008
【図８】
0004412852.tif 000009
【図９】
0004412852.tif 000010