(57)【要約】  複数の処理モジュール（Ｍ、Ｓ）、及び複数の処理モジュール（Ｍ、Ｓ）を結合し且つ複数の処理モジュール（Ｍ、Ｓ）間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段（Ｎ）、を有する集積回路が提供される。少なくとも１つの第１の処理モジュール（Ｍ）が少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュール（Ｓ）に発信する。当該集積回路は、第１のモジュール（Ｍ）から発信された少なくとも１つのトランザクションを、第１のモジュール（Ｍ）から発信された中止要求（abt）を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功／失敗を示す応答（abt_ack）を発信することによって中止する少なくとも１つのトランザクション中止ユニット（TAU）を有する。
2007531101.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信するところの、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有する集積回路であって：
前記第１のモジュールから発信された少なくとも１つのトランザクションを、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功又は失敗を示す応答を発信することによって中止する少なくとも１つのトランザクション中止ユニット
を有することを特徴とする集積回路。
【請求項２】
請求項１に記載の集積回路であって：
前記複数の処理モジュールの１つに結合され、前記複数の処理モジュールの該１つと前記相互接続との間の通信を制御する少なくとも１つのネットワーク・インターフェース
をさらに有し、
前記少なくとも１つのトランザクション中止ユニットが前記ネットワーク・インターフェースの１つに配置されている
ことを特徴とする集積回路。
【請求項３】
請求項２に記載の集積回路であって、
前記少なくとも１つのトランザクション中止ユニットが前記少なくとも１つのトランザクションの中止をアトミカル又は部分的に実行するように適合されていることを特徴とする集積回路。
【請求項４】
請求項２に記載の集積回路であって、
前記少なくとも１つのネットワーク・インターフェースが受信データをバッファリングする要求バッファをさらに有し、
前記トランザクション中止ユニットが、中止されるべき前記少なくとも１つのトランザクションを前記要求バッファに格納されたままで破棄させるように適合されていることを特徴とする集積回路。
【請求項５】
請求項２又は４に記載の集積回路であって、
前記少なくとも１つのネットワーク・インターフェースが出力データをバッファリングする応答バッファをさらに有し、
前記トランザクション中止ユニットが、中止されるべき前記少なくとも１つのトランザクションを前記応答バッファに格納されたままで破棄させるように適合されていることを特徴とする集積回路。
【請求項６】
請求項１に記載の集積回路であって、
前記少なくとも１つのトランザクションの前記中止要求が何れのトランザクションが中止されるべきかを特定し、且つ
前記トランザクション中止ユニットによって発信される前記応答が、要求された少なくとも１つのトランザクションの何れが中止されたかを特定する、
ことを特徴とする集積回路。
【請求項７】
少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信するところの、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有する集積回路におけるトランザクション中止方法であって：
前記第１のモジュールから発信された少なくとも１つのトランザクションを、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功又は失敗を示す応答を発信することによって中止するステップ
を有することを特徴とする方法。
【請求項８】
少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信するところの、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有するデータ処理システムであって：
前記第１のモジュールから発信された少なくとも１つのトランザクションを、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功又は失敗を示す応答を発信することによって中止する少なくとも１つのトランザクション中止ユニット
を有することを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理モジュール及びその複数の処理モジュールを結合する相互接続手段を有する集積回路、そのような集積回路におけるトランザクション中止方法、並びにデータ処理システムに関する。
【背景技術】
【０００２】
システム・オン・シリコンは、新機能の追加と既存機能の向上とに対する増し続ける要求を受け、複雑さを増し続けている。このことは、集積回路上に集積される部品密度を一層高めることによって可能にされている。同時に、回路が動作するクロック速度も高速化する傾向にある。より高いクロック速度は、部品の高密度化と相まって、同一クロック範囲内で同期して動作可能な領域を狭めてきた。このため、モジュール手法の必要性が生じている。このような手法に従って、処理システムは複数の比較的独立で複雑なモジュールを有する。伝統的な処理システムでは、通常、システムモジュールはバスを介して互いに通信する。しかしながら、モジュール数が増加するにつれ、この通信手法は以下の理由によりもはや実用的ではなくなっている。すなわち、一方では、多数のモジュールによってバスに過大な負荷が形成され、他方では、バスは１つの装置のみがバスにデータを送ることを可能にするだけであるので、バスが通信のボトルネックを形成している。
【０００３】
通信ネットワークはこれらの欠点を解決する有効な手法である。ネットワーク・オン・チップ（ＮｏＣ）は、高度に複雑化したチップにおける相互接続問題の解決策として、最近かなりの注目を集めている。その理由は２つの要素から成る。第１に、ＮｏＣは新しいディープサブミクロン技術における電気的問題を解決する助けとなる。なぜなら、ＮｏＣは全体的な配線を構築かつ管理するからである。同時に、ＮｏＣは配線を共有して配線数を削減し、その利用率を高める。ＮｏＣはまた、エネルギー効率が良く、信頼性が高いものとなり得るとともに、バスに比べて拡張性がある。第２に、ＮｏＣは演算処理を通信から分離するが、このことは莫大な数のトランジスタチップの設計を管理することにおいて不可欠なことである。ＮｏＣがこの分離を実現することができるのは、ＮｏＣは伝統的にプロトコルスタックを用いて設計されるが、プロトコルスタックは通信サービスの使用をサービスの遂行から分離する洗練されたインターフェースを提供するものであるためである。
【０００４】
しかしながら、システム・オン・チップ（ＳｏＣ）を設計する際にオンチップ通信用のネットワークを用いる場合、多数の新たな課題が考慮されなければならない。これは、通信モジュールが直接的に接続される既存のオンチップ相互接続（例えば、バス、スイッチ、又はポイントツーポイント配線）と対照的に、ＮｏＣではネットワークノードを介して遠隔で通信するためである。その結果、相互接続の調停（アービトレーション）は集中型から分散型に変わり、順序がバラバラなトランザクション、より長い待ち時間、及びエンドツーエンドのフロー制御のような問題がインテレクチュアル・プロパティ・ブロック（intellectual  property  block；ＩＰ）又はネットワークの何れかによって処理されなければならない。
【０００５】
これらの問題のほとんどは、ローカル及びワイド・エリア・ネットワーク（コンピュータ・ネットワーク）の分野で、また、並列マシン相互接続ネットワークとして、既に研究主題とされてきた。何れもオンチップ・ネットワークと密接に関連しており、それらの分野での結果の多くがチップにも適用可能である。しかしながら、ＮｏＣの前提はオフチップ・ネットワークとは異なっており、故に、ネットワーク設計の選択肢のほとんどが再評価されなければならない。オンチップ・ネットワークは、設計上の異なる選択につながる異なる特性（例えば、より厳しいリンクの同期化）及び制約（例えば、より高いメモリコスト）を有し、それらは最終的にネットワーク・サービスに影響を及ぼす。
【０００６】
ＮｏＣはオフチップ・ネットワークとは主にそれらの制約及び同期化の点で異なる。一般に、資源制約はオンチップの方がオフチップよりも厳しい。記憶装置（すなわち、メモリ）及び演算処理資源が比較的高価であるのに対して、ポイントツーポイント・リンク数はオンチップの方がオフチップより多い。例えばＲＡＭ等の汎用オンチップ・メモリは大面積を占有するので、記憶装置は高価である。メモリを比較的小型のネットワーク要素に分散させることは、メモリの間接領域が支配的になるので、さらに好ましくない。
【０００７】
オンチップ・ネットワークでは、演算処理は確かにオフチップ・ネットワークと比較して高コストになる。オフチップ・ネットワークのインターフェースは通常、ホストプロセッサを通信処理から開放するために、ネットワーク・レイヤー又はより上位のレイヤーまでのプロトコルスタックを実行する専用プロセッサを有する。専用プロセッサをネットワーク・インターフェースに含めることはチップ上では実用的ではない。なぜなら、ネットワーク・インターフェースの大きさはネットワークに接続されるＩＰと同等以上となるからである。さらに、プロトコルスタックをＩＰ自体で実行することもまた、実用的でない場合がある。なぜなら、これらのＩＰは１つの専用機能のみを有し、ネットワーク・プロトコルスタックを実行するだけの性能がないことが多いからである。
【０００８】
ネットワークの構成要素を接続する配線及びピンの数はオンチップの方がオフチップより１桁多い。それらがＮｏＣ通信以外の目的で大規模に用いられないならば、それらは広域のポイントツーポイント相互接続（例えば、300ビットリンク）を可能にする。このことは、リンクが8から16ビットとかなり狭いものであるオフチップでは不可能である。
【０００９】
ネットワークをオンチップ相互接続として導入することは、例えばバス又はスイッチ等の直接相互接続と比較して、通信を根本的に変えるものである。なぜなら、通信モジュールが直接的に接続されずに、１つ以上のネットワークノードによって分離されているという、ネットワークのマルチホップ性のためである。このことは、モジュールが直接接続される一般的な既存の相互接続（例えば、バス）と対照的である。この変化から予期されることは、アービトレーション（これは集中型から分散型に変えられなければならない）及び通信特性（例えば、順序付け又はフロー制御）に属する。
【００１０】
最新のオンチップ通信プロトコル（例えば、デバイス・トランザクション・レベルＤＴＬ、オープン・コア・プロトコルＯＣＰ及びＡＸＩプロトコル）は、要求と応答から成るトランザクションとともに分割され且つパイプライン化された基盤上で動作し、マスターから発信された要求が対応するスレーブによって受け取られた後に、バスは他による使用のために解放される。トランザクションの例には、例えば、要求としての書き込み＋書き込みデータ、及び要求としての読み出し＋応答としての読み出しデータが含まれる。分割されパイプライン化された通信プロトコルは特にマルチホップ相互接続（例えば、ネットワーク・オン・チップ、又はブリッジを有するバス）で使用され、相互接続の効率的な使用を可能にする。分割バスの効率は、スレーブでの応答生成が多大な時間を必要とする場合に向上され得る。パイプライン化プロトコル上では、マスターは複数の未処理要求（すなわち、それに対する応答が保留又は予期されている要求）を有することが許される。
【００１１】
上述のプロトコルは、システム又は相互接続レベルではなくデバイスレベルで動作するように設計されている。換言すれば、それらはインテレクチュアル・プロパティ・ブロック（ＩＰ）及びそれらの以前の集積設計の再利用を可能にする実際の相互接続の実装から独立するように設計されている（例えば、アービトレーション信号は目に見えない）。加えて、これらの通信プロトコルはＩＰブロックが“当然に”通信できることを確保するように設計されている（例えば、ワード幅及びバーストサイズはバスではなくデバイスに適合するように設定されている）。
【００１２】
これらのプロトコル（例えば、ＤＴＬ）の一部は、宛先によって既に受理されたトランザクションを中止する選択を有する。最も一般的な意味では、中止されたトランザクションはもはや実行されず、宛先に影響を及ぼさない。ＤＴＬでは、如何なる未完了のトランザクションも中止されるように試みられるという動作になっている。
【００１３】
しかしながら、デバイスレベルの分割パイプライン化プロトコルでトランザクションを中止することは困難である。なぜなら、トランザクションは最終的な宛先に到達するまでに幾つもの中間モジュール（例えば、ブリッジ、アダプタ）を通る場合があるからである。従って、トランザクションを中止することができない場合がある。このことは、ネットワーク・オン・チップ、及びブリッジを有するバス等のマルチホップ相互接続で特に深刻である。
【００１４】
公知の中止技術は曖昧な動作をしたり、宛先の状態を１つ又は複数のとり得る状態に残してしまったりすることがある（例えば、書き込みを中止しようとすることが成功する場合としない場合とがあり、その結果として、書き込みによってアドレスされた位置が古い値を格納する場合と、書き込みによって運ばれてきた値を格納する場合とがある）。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、トランザクションに基づく通信環境において、改善されたトランザクションの中止を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題に鑑み、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有する集積回路が提供される。少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信する。当該集積回路は、前記第１のモジュールから発信された少なくとも１つのトランザクションを、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功／失敗を示す応答を発信することによって中止する少なくとも１つのトランザクション中止ユニットを有する。
【００１７】
トランザクションを中止することは通信プロトコルの望ましい特性である。なぜなら、それは、トランザクションがもはや必要でないとき（例えば、送信されるデータが遅すぎて処理され得ないとき、又は読み出しデータが期限切れのためもはや有用でなくなったとき）、相互接続及びスレーブの負荷の解放を可能にするものだからである。このトランザクション中止処理の利点は、マスターが中止操作後のシステム状態の実態を認識可能にすることである。これにより、相互接続及びスレーブがより効率的に使用される結果、トランザクション中止処理をより広範囲で使用することが可能になる。この場合、トランザクション中止ユニットは相互接続手段、スレーブ、又はマスターモジュールに実装され得る。
【００１８】
本発明の一態様に従って、集積回路は、前記複数の処理モジュールの１つに結合され、前記複数の処理モジュールの該１つと前記相互接続との間の通信を制御する少なくとも１つのネットワーク・インターフェースを有する。前記少なくとも１つのトランザクション中止ユニットは前記ネットワーク・インターフェースの１つに配置されている。トランザクション中止ユニットをネットワーク・インターフェースに結合する、すなわち、中止を要求するモジュールに近接させることにより、モジュールは実際の中止のための通信を処理する必要なくその専用動作を継続することができる。
【００１９】
本発明の他の一態様に従って、前記少なくとも１つのトランザクション中止ユニットは前記少なくとも１つのトランザクションの中止をアトミカルに、すなわち、完全なトランザクションの組が中止されるか全く中止されないかの何れかであるように、又は部分的に、すなわち、可能な限り多くのトランザクションが中止されるが中止されないトランザクションも存在し得るように、実行するように適合されている。
【００２０】
本発明の他の一態様に従って、前記少なくとも１つのネットワーク・インターフェースは受信データをバッファリングする要求バッファ、及び／又は出力データをバッファリングする応答バッファを有し、中止されるべき前記少なくとも１つのトランザクションを前記要求バッファ、又は前記応答バッファに格納されたまま破棄する。要求／応答バッファ内のデータを破棄することは、中止されるべき要求／応答を処分する効率的な手法である。
【００２１】
本発明の好適な一態様に従って、トランザクションの前記中止要求は、何れのトランザクションが中止されるべきかを特定し、且つ前記トランザクション中止ユニットによって発信される前記応答は、要求された少なくとも１つのトランザクションの何れが中止されたかを特定する。このような具体的な応答により、マスターは交信する全てのスレーブの状態を正確に知ることになる。
【００２２】
また、本発明は、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有する集積回路におけるトランザクション中止方法に関する。少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信する。前記第１のモジュールから発信された少なくとも１つのトランザクションは、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功を示す応答を発信することによって中止される。
【００２３】
さらに、本発明は、複数の処理モジュール、及び該複数の処理モジュールを結合し且つ該複数の処理モジュール間のトランザクションに基づくデバイスレベル通信を可能にする相互接続手段、を有するデータ処理システムに関する。少なくとも１つの第１の処理モジュールが少なくとも１つのトランザクションを少なくとも１つの第２の処理モジュールに発信する。当該データ処理システムは、前記第１のモジュールから発信された少なくとも１つのトランザクションを、該第１のモジュールから発信された中止要求を受信すること、中止されるべき該少なくとも１つのトランザクションの破棄を開始すること、及び要求されたトランザクションの中止の成功／失敗を示す応答を発信することによって中止する少なくとも１つのトランザクション中止ユニットを有する。
【００２４】
故に、トランザクションの中止は、幾つかの別個の集積回路を備えるシステム、又は複数チップ・ネットワークにて実施されてもよい。
【００２５】
本発明は、トランザクションを中止するよう試みる特別な中止トランザクションを導入するという考えに基づく。中止処理は成功する場合もしない場合もあるので、応答は中止トランザクションの成功／失敗を記述するように要求される。中止処理の結果に基づく応答が発信される場合、中止トランザクションを発信するマスターは、スレーブの結果状態又はスレーブ環境を正確に知ることになる。スレーブが中間状態、すなわち、部分的な結果を伴って終わらないように、１つのトランザクションは完全に中止されるか、全く中止されないかの何れかである。
【発明を実施するための最良の形態】
【００２６】
以下の実施形態はシステム・オン・チップ、すなわち、同一チップ上の複数モジュール（例えば、システム・イン・パッケージ、マルチ・ダイ・モジュールを含む）又は異なるチップ上の複数モジュールが或る種の相互接続を介して互いに通信するものに関する。相互接続はネットワーク・オン・チップＮｏＣとして具体化される。ネットワーク・オン・チップはネットワーク内に配線、バス、時分割多重化、スイッチ、及び／又はルータを有し得る。ネットワークの伝送レイヤーにおいて、モジュール間の通信が接続上で実行され得る。接続は、第１のモジュールと少なくとも１つの第２のモジュールとの間の、各々が１組の接続特性を有する１組のチャネルと見なされる。第１のモジュールと単一の第２のモジュールとの間の接続では、接続は２つのチャネル、すなわち、第１のモジュールから第２のモジュールへのチャネルである要求チャネルと、第２のモジュールから第１のモジュールへのチャネルである応答チャネルを有する。要求チャネルは第１から第２のモジュールへのデータ及びメッセージのために確保され、一方、応答チャネルは第２から第１のモジュールへのデータ及びメッセージのために確保される。しかしながら、接続が１つの第１のモジュールとN個の第２のモジュールを含む場合には、2N個のチャネルが設けられ得る。接続特性には、順序付け（順々のデータ伝送）、フロー制御（遠隔バッファが接続のために確保されるとともに、生成されたデータのために空間が利用可能であることが保証されるときに限ってデータ生成器がデータを送ることが可能にされる）、処理能力（処理能力の下限が保証される）、待ち時間（待ち時間の上限が保証される）、損失性（lossiness）（データの劣化）、伝送限界、トランザクションの完全性、データの正確性、優先度、又はデータ配送が含まれ得る。
【００２７】
図１は第１実施形態に従ったネットワーク・オン・チップを示している。具体的には、各々が関連付けられたネットワーク・インターフェースＮＩを備えるマスターモジュールＭ及びスレーブモジュールＳが図示されている。各モジュールＭ、Ｓは、それぞれ、その関連ネットワーク・インターフェースＮＩを介してネットワークＮに接続されている。ネットワーク・インターフェースＮＩはマスター及びスレーブモジュールＭ、ＳとネットワークＮとの間のインターフェースとして用いられる。ネットワーク・インターフェースＮＩは、モジュールがネットワーク又は他のモジュールとの通信を処理する必要なくその専用動作を実行可能なように、それぞれのモジュールＭ、ＳとネットワークＮとの間の通信を管理するために設けられる。マスターモジュールＭはトランザクションを発信する。すなわち、要求がスレーブモジュールＳに発信される。要求はコマンド及びデータを有してもよい。スレーブは要求を受信し、受信コマンドに基づいてそれぞれの処理を実行し、そして状況に応じて、場合によりデータとともに応答を返信する。
【００２８】
ネットワークＮは複数の相互接続されたネットワーク・ルータＲを有する。ルータＲはそれらの間（ルータ間の複数リンクも同様に可能）、及びネットワーク・インターフェースと無作為に接続され得る（すなわち、接続形態には制約がない）。ルータＲは、一方のネットワーク・インターフェースＮＩから他方へとデータのパケットを伝送する。
【００２９】
以下述べられるようにモジュールは、ネットワーク・インターフェースＮＩでネットワークと相互作用する所謂ＩＰブロック（演算処理素子、メモリ、又は内部に相互接続モジュールを含むサブシステム）とし得る。ネットワーク・インターフェースＮＩは１つ以上のＩＰブロックに接続され得る。同様に、ＩＰは１より多いネットワーク・インターフェースに接続され得る。
【００３０】
マスターＭ及びスレーブＳに結合されたネットワーク・インターフェースＮＩの各々は、要求バッファREQ及び応答バッファRESP、並びに各バッファREQ、RESPに結合されたトランザクション中止ユニットTAUを有する。好ましくは、トランザクション中止ユニットTAUは、マスターMに結合されたネットワーク・インターフェースＮＩ及びスレーブＳに結合されたネットワーク・インターフェースＮＩ内、且つこれらのネットワーク・インターフェースＮＩの要求部分及び／又は応答部分に組み込まれる。あるいは、トランザクション中止ユニットTAUは、スレーブＳが要求をバッファリングする待ち行列すなわち要求バッファを有するとき、スレーブＳに実装されてもよい。要求はスレーブＳで実行される前に捕捉かつ消去される場合があるので、スレーブＳへのトランザクション中止ユニットTAUの実装は選択的に組み込まれてもよい。
【００３１】
マスターＭは中止要求メッセージを発信する。そのメッセージはマスターのＮＩで（マスターのＮＩにバッファリングされた要求を消去するために）処理され、そして状況に応じて、スレーブのネットワーク・インターフェース及びスレーブ自体によって（場合により、中間にある幾つかのルータによっても）処理されるように更にネットワークに送信される。スレーブが中間状態、すなわち、部分的な結果を伴って終わらないように、各トランザクションは完全に中止されるか、全く中止されないかの何れかとされてもよい。あるいは、システムに容認されるのであれば、トランザクションは部分的に破棄されてもよい（例えば、長い書き込みバーストがスレーブで部分的に実行された時点で中止され得る）。
【００３２】
中止トランザクションは、未処理の全トランザクションについて、最後に発信されたトランザクションについて、すぐ前に発信されたＮ個のトランザクションについて、具体的に特定されるトランザクションについて、又は具体的に特定されたトランザクションの組について実行されてもよい。
【００３３】
要求は発信されているが、スレーブＳからの如何なる応答もマスターＭに受信されていない全てのトランザクションが中止の対象となり得る。完全に或いは部分的に中止されたトランザクションが何れであるか、そして部分的な中止の場合には、実際に中止されたのは幾つであるかを返信するために可能な応答が作成される。
【００３４】
あるいは、最後に発信されたトランザクション、又は最後のＮ個のトランザクションが中止される。この場合、中止処理の成功又は失敗を示す応答が中止トランザクションに対して発信されることになる。
【００３５】
さらに、トランザクションの中止の第３の可能性は、トランザクション識別子又はトランザクション識別子の組によって特定されるトランザクション又はトランザクションの組を中止することである。これは、トランザクションがトランザクション識別子を有するとき（例えば、ＯＣＰ、ＡＸＩ又はＤＴＬはトランザクション識別子を有さないが、ＭＴＬは有するなど、これはオンチップ・プロトコルの場合には一般的でない）に適用可能である。あるいは、トランザクション識別子を必要としない相対的な識別子（例えば、最後から２番目のトランザクション、又は最後から７乃至９番目のトランザクションを中止するなど）が用いられ得る。この場合、中止トランザクションの成功又は失敗を示す応答が中止要求に対して発信されることになる。
【００３６】
複数のトランザクション（例えば、全トランザクション、又は特定のトランザクションの組）が中止されることになるとき、完全なトランザクションの組が中止されるか全く中止されないかの何れかであるアトミックな中止、又は、可能な限り多くのトランザクションが中止されるが中止されないトランザクションも存在し得る部分的中止という、中止処理に関する２つの選択肢がある。
【００３７】
トランザクションが侵入的でない（すなわち、例えば読み出し等、スレーブの状態を変化させない）とき、それらは帰路で中止される、すなわち、応答が破棄されることも可能である。これは、システムが対応可能であれば、侵入的なトランザクションに対しても可能である。
【００３８】
ネットワーク・インターフェース、ネットワーク、幾つかのルータ、マスター又はスレーブが、上述の中止トランザクション要求に対する応答を以下のような様々な詳細度で発してもよい：（ａ）成功／失敗応答（すなわち、全トランザクションに対して中止処理が成功したか成功しなかったか）、（ｂ）中止が成功したトランザクション数を伴う応答、又は（ｃ）中止が成功あるいは失敗したトランザクションの一覧を伴う応答。最後の場合には、マスターＭはスレーブＳの状態を正確に知ることになる。トランザクションを中止する要求後、応答を発するのはスレーブではなくネットワークである。スレーブは、中止トランザクションがそのスレーブに既に与えられているときにのみ、中止トランザクションに応答することになる。
【００３９】
中止トランザクションを実行しないスレーブでは、中止の対象であるトランザクションを常に実行することになるので、下位互換性が実現される。中止トランザクションに対する応答は中止処理の失敗を信号で伝える。マスターが中止トランザクションを実行しないとき、中止に対するスレーブからの応答は単に無視される。
【００４０】
図２は、トランザクション中止ユニットTAU、及びメッセージ用のハードウェアFIFO（先入れ先出し）を備えるネットワーク・インターフェースの一部の実装例を示している。具体的には、要求バッファREQ及びトランザクション中止ユニットTAUを有するネットワーク・インターフェースＮＩの要求部分が示されている。要求バッファREQは入力として入力メッセージmsg_inを受け取り、出力メッセージmsg_outを出力する。トランザクション中止ユニットTAUは中止要求abt、有効入力信号vd_in、有効出力信号vd_out、及び要求信号req_outを受け取る。トランザクション中止ユニットTAUはワード数＃wd、有効選択信号vd_sel、及び応答abt_ackを出力する。
【００４１】
通常の流れでは、メッセージはmsg_inを介して要求バッファREQすなわちFIFO内に列を為して入れられる。標準的な２ウェイハンドシェイク（FIFOに書き込むためのイネイブル入力en_in／受理入力acp_in、及びFIFOから読み出すためのイネイブル出力en_out／有効出力vd_out）がメッセージ・ワードを転送するために実装されている。有効ワードが存在するとき、信号vd_inが高くされ、１サイクルだけ信号acp_inを高くすることにより開始の合図が為される。受理信号acp_inは、FIFOが如何なるときも単一サイクルでワードを受理可能なように、初期設定によって高（high）に設定されることができる。従って、有効信号vd_in及び受理信号acp_inの双方が１サイクルの間highであるとき、ワードが効率的に転送される。同様の手法にて、イネイブル信号en_out及び有効信号vd_outの双方が１サイクルの間highであるとき、メッセージがFIFOから取り出される。
【００４２】
次に、トランザクションを中止する中止処理について、より詳細に説明する。トランザクション中止ユニットTAUが、マスターモジュールＭから発信された中止信号abtによってトリガーされる。トランザクション中止ユニットTAUは要求された中止操作を実行し、その成功／失敗を示す応答を応答信号abt_ackを介してマスターに返信する。トランザクション中止ユニットTAUはまた、要求されたFIFOへの読み出しアクセスreq_outを監視し、FIFO待ち行列に格納された全メッセージを追跡するために、入力メッセージのメッセージサイズを含むメッセージヘッダを検査する。
【００４３】
次に、全トランザクションに対するトランザクションの中止について、より詳細に説明する。中止の要求がなされると、トランザクション中止ユニットTAUはFIFOの中身のスナップショットを取得する。故に、トランザクション中止ユニットTAUはFIFO内のメッセージ群の合計長さを記憶する削除（delete）カウンタを有する。記憶された値は進行中のメッセージが送られた後で破棄されることになるワード数を表す。なぜなら、それらのワードは中止されるトランザクションに関連したものだからである。
【００４４】
中止ユニットTAUは、FIFOのREQ内のエンプティでないワード数を表す信号＃wdを出力する。マスターから中止要求が受信されると、その信号は進行中のメッセージmsg_outの残存部のみを表すようにする＃wdを設定する。トランザクション中止ユニットTAUは、進行中のメッセージが完全に送られる、すなわち、＃wdがゼロになるまで待った上で、信号vd_outを低くすることによってメッセージ出力msg_outを無効にし、それにより（出力メッセージmsg_out及び有効出力vd_outを無効にしながら、イネイブル出力en_outを介して）FIFOから削除ワードを除去する。
【００４５】
削除されたメッセージ数はマスターモジュールＭに応答abt_ackを介して返信され得る。トランザクションが上述されたように部分的に破棄される場合、完全に或いは部分的に中止されたトランザクションが何れであるか、そして部分的な中止の場合には、実際に中止されたのは幾つであるかを返信するために可能な応答がさらに作成される。
【００４６】
メッセージの受理は削除カウンタに影響を及ぼさないので、中止操作を実行しながら新たなメッセージが受理されることが可能である。故に、中止を実行している際に新たな中止要求が受信される場合、削除カウンタはFIFOの待ち行列に追加された新たなメッセージの長さの和だけ増される。換言すれば、中止処理中に新たなメッセージが与えられると、幾つかの選択が可能であり、その内の１つが応答として返信される。中止処理が完了するまで如何なるメッセージも受理されないか、中止処理中もメッセージが受理されるかの何れでもよい。メッセージが受理されるとき、中止動作に応じて２つの場合が考えられる。すなわち、中止処理中に受理されたメッセージも同様に中止の対象とされて削除される、あるいは、中止処理中に受理されたメッセージは中止の対象とされず削除されない。
【００４７】
次に、最後に発信されたトランザクション、又は最後のN個のトランザクションを中止するトランザクションの中止について説明する。機能は上述の全トランザクションに対する中止処理と同様である。この場合、最後のメッセージ又は最後のN個のメッセージの前の全メッセージは、msg_outを介して送り出されることが認められる。この後、中止されるトランザクションに関連したメッセージが（メッセージがFIFOから出力される際に出力を無効にすることによって）FIFOから削除され、応答abt_ackが生成される。要求されたメッセージのみを効率的に削除するため、入力メッセージのメッセージヘッダを検査することによって、トランザクション中止ユニットTAUによりメッセージの境界が特定される。トランザクションが部分的に破棄される場合、応答は、完全に或いは部分的に中止されたトランザクションが何れであるか、そして部分的な中止の場合には、実際に中止されたのは幾つであるかを返信することが可能である。
【００４８】
特定のトランザクション、又は特定のトランザクションの組の中止処理は、FIFOのスナップショットを取得すること、及びFIFO内で使用されているワード数をカウンタに記憶することによって実行される。FIFOからの全てのワード出力ごとにカウンタが減じられる。カウンタがゼロではないときに、特定の識別子TIDを有するメッセージヘッダがFIFOの先頭に到達すると、そのメッセージはFIFOの出力を無効にすることによって削除され、応答abt_ackによって成功か失敗かが返信される。トランザクションが部分的に破棄される場合、応答は、完全に或いは部分的に中止されたトランザクションが何れであるか、そして部分的な中止の場合には、実際に中止されたのは幾つであるかを返信することが可能である。
【００４９】
マスターからの中止要求が受信されるとすぐに、完全なるメッセージのみがFIFOから除去されてもよい。なぜなら、１つのメッセージを部分的に除去することによりシステムが不明確な状態に置かれるとすると、これは不当だからである。このため、トランザクション中止ユニットTAUは、メッセージ長を持つフィールドを格納するメッセージヘッダを検査することによって、入力メッセージのメッセージ境界を監視する。
【００５０】
トランザクション中止ユニットTAUにおいて、メッセージ境界を追跡するために実装された３つのカウンタ、すなわち、入力カウンタCntIn、FIFOカウンタCntFifo及び出力カウンタCntOutが存在してもよい。入力カウンタCntInは現在入力中のメッセージのこれから受け取られるべきワード数を格納する。カウンタCntFifoはFIFO内に存在するメッセージのワード数を、現在入力中のメッセージ及び出力中のメッセージも含めて格納する（このカウンタは、FIFO内に存在するワード数を格納するので、FIFOの実装の一部として既に存在している場合がある）。出力カウンタCntOutは現在出力中のメッセージから今もなお送り出されるべきワード数を格納する。
【００５１】
中止要求が到達すると、すなわち、中止信号abtが少なくとも１クロックサイクルの間highになると、入力中のメッセージを含むが出力中のメッセージを除くFIFO内のメッセージの削除が開始されることになる。このことは、CntIn＋CntFifo−CntOutだけのワードが破棄されることを意味する。これの可能な実施形態は、破棄されるワード数をトランザクション中止ユニットTAU内の別のカウンタCntDiscardに格納し、FIFOの出力を解放してFIFOにワードをそれから除去させるイネイブル信号en_aを高くすることすることである。メッセージが破棄されるとき、信号vd_outは信号vd_selによってゲート制御される（すなわち、信号ack_outには送られない）。信号en_a（暗黙的にen_outも）及びvd_outが共にhighであるとき、ワードは除去される。ワードが除去されるとき、カウンタCntDiscardが減じられ、それがゼロになると、中止操作は完了されるとともに通常動作が再開される。
【００５２】
中止処理がメッセージとして次のモジュールに送られる場合、トランザクション中止ユニットTAUは、既に削除されたメッセージの数をも含む中止メッセージを作成し得る。中止信号は上記メッセージから抽出される。他の可能な実施形態は、破棄されたトランザクションの数を格納し、中止信号を転送し、さらに破棄されたトランザクションの数を含む中止信号への応答を収集し、かつ、この数をローカルに格納された破棄トランザクションの数に加算して、代わりにマスターに返信される和とすることである。
【００５３】
スレーブ又はそのネットワーク・インターフェースは、図２のトランザクション中止ユニットのために説明されたような応答メッセージを添えて中止要求に応答し、そして、その応答メッセージは単純に相互接続を介してマスターに転送される。
【００５４】
要求が未だ送られていない（部分的にでさえ送られていない）場合に限り、全要求を中止することが好ましい。要求が既に（部分的に）送られている場合、遅すぎて要求を破棄できない場合がある。要求の一部のみが送られた場合でさえ、相互接続及びスレーブを不明確な状態に置く場合には、残りの部分は破棄されることができない。しかしながら、システムが不明確状態に置かれる問題がなければ、既に部分的に送られた要求はカウンタCntDiscardすなわちCntIn＋CntFifoに従って破棄されてもよい。このような場合にはカウンタCntOutは不要である。
【００５５】
トランザクション中止ユニットTAUの上記実施形態はネットワーク・インターフェースの要求部分について説明されてきたが、トランザクション中止ユニットTAUは同様にネットワーク・インターフェースの応答部分にて実施されてもよい。上述されたトランザクション中止ユニットTAUは、原理的に、ネットワークＮ（任意のＮＩ及びＲ）又はスレーブの何処にでも実装可能であり、１つのネットワーク・インターフェースＮＩ内のみでなくても実装可能である。
【００５６】
以上より、本発明は、トランザクションを中止することを試みる特別な中止トランザクションを導入することを提案するものである。理由は２つの要素から成る。第１に、中止が成功するか否かは問題であるので、中止トランザクションの成功又は失敗を報告する応答が必要である。第２に、中止処理の結果についての応答を有することにより、中止トランザクションを発信するマスターが、その結果得られたシステム状態を正確に知ることができる。中止操作の動作は以下の何れかとすることができる：
−  全ての未処理トランザクションを中止しようと試みる、
−  すぐ前に発信されたN個のトランザクションを中止しようと試みる、
−  少なくとも１つのトランザクション識別子によって特定される少なくとも１つのトランザクションを中止しようと試みる。
【００５７】
上述されたトランザクションの中止は、単一チップ上のネットワークだけでなく、如何なる複数チップ・ネットワークにも適用可能である。
【００５８】
提案された構成は、デバイスレベル通信プロトコル（例えば、ＤＴＬ、ＡＸＩ、ＯＣＰ）に関連し、トランザクションが制御された方式で中止されることを可能にするものである。提案された構成は、これが拡張しようとする構成と下位互換性を有する。
【００５９】
上述の実施形態は本発明を例示するものであり、本発明を限定するものではない。また、当業者によって、添付の請求項の範囲を逸脱することなく、多数の代替実施形態が設計され得るものである。請求項において、用語“有する”は列挙された要素若しくはステップ以外の要素若しくはステップの存在を排除するものではない。要素の前に置かれた用語“或る”はその要素が複数存在することを排除するものではない。幾つかの手段を列挙するデバイスの請求項において、これらの手段の幾つかは１つ且つ同一のハードウェア品目によって具体化され得るものである。ある特定の手段が相互に異なる従属項に挙げられているという単なる事実は、これらの手段の組み合わせが効果的に用いられ得ないことを指し示すものではない。
【図面の簡単な説明】
【００６０】
【図１】本発明に従ったネットワーク・オン・チップを示す基本ブロック図である。
【図２】図１のネットワーク・インターフェースの一部を示す基本ブロック図である。
【図１】
2007531101.tif 000003
【図２】
2007531101.tif 000004
【国際調査報告】
2007531101.tif 000005
2007531101.tif 000006