(57)【要約】【課題】  多数のプロトコルが異なるシステムコンポーネントについて存在する、システムを通してデッドロックのないトランザクションの転送を実現する。【解決手段】  本発明の１実施の形態では、本方法は、コヒーレントシステムのエージェントへの入力トランザクションを、入力トランザクションのタイプに基づいて少なくとも第一のチャネル、第二のチャネル及び第三のチャネルに分離するステップを含む場合がある。入力トランザクションは、コヒーレントシステムに接続された同等の装置により送出される場合がある。タイプに基づいてトランザクションを分離することで、デッドロックが回避される場合がある。【選択図】  図１
2005318495.tif 000002
【特許請求の範囲】
【請求項１】
入力するトランザクションのタイプに基づいて、コヒーレントシステムのエージェントに入力トランザクションを第一のチャネル、第二のチャネル及び第三のチャネルに分離するステップを含む方法。
【請求項２】
該コヒーレントシステムを通した第一のトランザクションのタイプを第一のチャネルに経路制御し、該コヒーレントシステムを通した第二のトランザクションのタイプを第二のチャネルに経路制御するステップをさらに含む、
請求項１記載の方法。
【請求項３】
第一の同等の装置からの入力トランザクションを受信するステップをさらに備える、
請求項１記載の方法。
【請求項４】
少なくとも１つの入力トランザクションを該コヒーレントシステムの第二のエージェントに経路制御するステップをさらに備える、
請求項３記載の方法。
【請求項５】
少なくとも１つの入力トランザクションを該第二のエージェントに接続された第二の同等の装置に送出するステップをさらに備える、
請求項４記載の方法。
【請求項６】
該第一のチャネルはスタンダードチャネルを備え、該第二のチャネルはバイパスチャネルを備え、該第三のチャネルはコンプレーションチャネルを備える、
請求項１記載の方法。
【請求項７】
コヒーレントシステムで第一の同等の装置からの第一のトランザクションのタイプを受信するステップと、
該コヒーレントシステムで該第一の同等の装置からの第二のトランザクションのタイプを受信するステップと、
該コヒーレントシステムを通して該第二のトランザクションタイプとは別の該第一の
トランザクションタイプを維持するステップと、
を備える方法。
【請求項８】
該第二のトランザクションのタイプとは別の該第一のトランザクションを維持するステップは、該コヒーレントシステムを通した該第一のトランザクションタイプを第一のチャネルに経路制御し、該コヒーレントシステムを通した該第二のトランザクションタイプを第二のチャネルに経路制御するステップを含む、
請求項７記載の方法。
【請求項９】
該第一のチャネルと該第二のチャネルは、独立なチャネルを備える、
請求項８記載の方法。
【請求項１０】
該コヒーレントシステムの第一のエージェントのマルチプレクサを使用して、トランザクションのタイプに基づいて、入力トランザクションを第一のチャネルと第二のチャネルに分離するステップをさらに備える、
請求項７記載の方法。
【請求項１１】
該第一のトランザクションタイプと該第二のトランザクションタイプとの間のクレジットを分離するステップをさらに備える、
請求項７記載の方法。
【請求項１２】
該第一のトランザクションタイプと該第二のトランザクションタイプのフローを独立に制御するステップをさらに備える、
請求項７記載の方法。
【請求項１３】
該第一の同等の装置は、ノンコヒーレントなリンクを介して該コヒーレントシステムに接続された入力／出力装置を備える、
請求項７記載の方法。
【請求項１４】
該第一のトランザクションタイプは、ライトトランザクションを備え、該第二のトランザクションタイプは、リードトランザクションを備える、
請求項７記載の方法。
【請求項１５】
該第一のトランザクションタイプの受信の後、終了エージェントから要求エージェントにコンプレーションパケットを送出するステップをさらに備える、
請求項７記載の方法。
【請求項１６】
該第一のトランザクションタイプ及び該第二のトランザクションタイプとは異なるチャネルで該コンプレーションパケットを送出するステップをさらに備える、
請求項１５記載の方法。
【請求項１７】
実行されたとき、システムに対して、入力するトランザクションのタイプに基づいて、コヒーレントシステムのエージェントへの入力トランザクションを少なくとも第一のチャネル、第二のチャネル及び第三のチャネルに分離することを可能にする命令を含むマシンアクセス可能な記憶媒体を備える製品。
【請求項１８】
実行されたとき、システムに対して、少なくとも１つの入力トランザクションを該コヒーレントシステムの第二のエージェントに経路制御することを可能にする命令をさらに備える、
請求項１７記載の製品。
【請求項１９】
実行されたとき、システムに対して、少なくとも１つの入力トランザクションを該第二のエージェントに接続される第二の同等の装置に送出することを可能にする命令をさらに備える、
請求項１８記載の製品。
【請求項２０】
実行されたとき、システムに対して、第一のトランザクションタイプと第二のトランザクションタイプとの間のクレジットを分離することを可能にする命令をさらに備える、
請求項１７記載の製品。
【請求項２１】
実行されたとき、システムに対して、該第一のトランザクションタイプと該第二のトランザクションタイプのフローを独立に制御することを可能にする命令をさらに備える、
請求項２０記載の製品。
【請求項２２】
入力するトランザクションを受信し、入力トランザクションのタイプに基づいて、少なくとも３つのチャネルのうちの１つを介して入力トランザクションを経路制御する第一のバスエージェントを備える装置。
【請求項２３】
第一のチャネルはスタンダードチャネルを備え、第二のチャネルはバイパスチャネルを備え、第三のチャネルはコンプレーションチャネルを備える、
請求項２２記載の装置。
【請求項２４】
該第一のバスエージェントに接続される第二のバスエージェントをさらに備え、該第二のバスエージェントは、少なくとも３つのチャネルを有する、
請求項２２記載の装置。
【請求項２５】
該第一のバスエージェントは、ノンコヒーレントなプロトコルを有する同等の装置からの入力トランザクションを受信するために適合される、
請求項２２記載の装置。
【請求項２６】
該第一のバスエージェントはコヒーレントな装置を備える、
請求項２５記載の装置。
【請求項２７】
入力トランザクションを受信し、入力トランザクションのタイプに基づいて、少なくとも３つのチャネルのうちの１つを介して入力トランザクションを経路制御する第一のバスエージェントと、
ポイントツーポイント相互接続を介して該第一のバスエージェントに接続される第二のバスエージェントと、
を備えるシステム。
【請求項２８】
該第一のバスエージェントは、ノンコヒーレントなプロトコルを有する同等の装置からの入力トランザクションを受信するために適合される、
請求項２７記載のシステム。
【請求項２９】
該第一のバスエージェント及び該第二のバスエージェントは、コヒーレントな装置を備える、
請求項２７記載のシステム。
【請求項３０】
第一のチャネルはスタンダードチャネルを備え、第二のチャネルはバイパスチャネルを備え、第三のチャネルはコンプレーションチャネルを備える、
請求項２７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信に関し、より詳細には、システム内の装置間の通信に関する。
【背景技術】
【０００２】
大部分のコンピュータシステムは、１以上のバスを使用して互いに接続されるコンポーネントから形成されており、この１以上のバスは、各種システムコンポーネント間で情報を転送するために使用される。ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）Ｒｅｖ．２．１（１９９５年６月１日発表）仕様のような現在のバス規格は、マルチドロップバスを提供しており、このマルチドロップバスでは、多数の装置が同じバスに接続される場合がある。したがって、同じバス上にある装置へのリード又はライトが容易である。
【０００３】
しかし、バスインタフェース速度が向上するにつれ、バスアーキテクチャは、マルチドロップアーキテクチャからポイントツーポイントアーキテクチャの方向に離れている。かかるポイントツーポイントアーキテクチャでは、かかるピアツーピア通信の同期、オーダーリング、コヒーレンシーが一層困難であるため、ピアツーピア通信は、一層困難となっている。ポイントツーポイントアーキテクチャの１例は、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｒｅｖ．１．０（２００２年６月２２日発表）に準拠したＰＣＩ  ＥｘｐｒｅｓｓＴＭアーキテクチャである。
【０００４】
システムの多数のバス又は該システムに接続されるバスは、異なる通信プロトコルを使用する場合があるため、通信の困難さがある。たとえば、入力／出力（Ｉ／Ｏ）装置間のペアツーペア通信は、第一のプロトコルに従って送出される場合があるが、ポイントツーポイントアーキテクチャ、及びＩ／Ｏ装置間の他のコンポーネントにより使用される第二のプロトコルのために、かかる通信が困難となる。
【０００５】
さらに、Ｉ／Ｏインタフェースは、通知及び非通知のいずれかとしてトランザクションを典型的に識別し、それぞれのタイプのオーダーリングルールが異なる。所定のオーダーリングルールは、（リードトランザクションがライトトランザクションを追い越すことができない、ライトトランザクションがライトトランザクションを追い越すことができない等）機能の正確さために適切なものである。かかるオーダーリングルールに加えて、ＰＣＩのような所定のプロトコルは、過去に停止された非通知のサイクルを発達するために通知されたサイクルを必要とする。このことは、フォワードプログレスがないためにインタフェースをデッドロックすることを回避することである。ＰＣＩのような所定のプロトコルでは、ターゲットに対して、試みられたトランザクションをバイパスし、その後ろにある別のトランザクションをトライすべきであることをイニシエータに合図する要求を「リトライ」することを可能にすることで、フォワードプログレスがイネーブルにされる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、第一のプロトコルのＩ／Ｏ装置が第二のプロトコルを有するシステムに接続された場合、デッドロックを回避するための異なる方法が存在し、これら異なるメカニズムが互換性を有していないことがある。かかる互換性のなさは、あるプロトコルがリトライオプションを提供せず、異なるプロトコルの異なるレイヤでトランザクションのクレジットトラッキングが行われるときに特に存在する。したがって、多数のプロトコルが異なるシステムコンポーネントについて存在する、システムを通してデッドロックのないトランザクションの転送が必要とされている。
【発明を実施するための最良の形態】
【０００７】
図１を参照して、本発明の１実施の形態に係るシステムのブロック図が示されている。図１に示されるように、本システム１０は、本発明の実施の形態に係る、コヒーレントインタフェースを含むマルチプロセッサシステムである場合がある。すなわち、システム１０は、異なる実施の形態において、所望のデスクトップ、モバイル、サーバプラットフォーム、又は他のかかるプラットフォームのいずれか１つを表している場合がある。所定の実施の形態では、図１の異なるコンポーネント間の相互接続は、システム１０内のコヒーレントな共有メモリを提供するポイントツーポイント相互接続である場合があり、１つのかかる実施の形態では、それらの間で通信するために使用される相互接続及びプロトコルは、コモンシステムインタフェース（ＣＳＩ）を形成する場合がある。かかるやり方で、多数のプロセッサ、メモリ、及びシステム１０の他のコンポーネントは、互いにコヒーレントにインタフェースする場合がある。
【０００８】
図１を参照して、システム１０は、第一のプロセッサ５０（ＣＰＵ  Ａ）及び第二のプロセッサ５５（ＣＰＵ  Ｂ）を含んでいる場合がある。様々な実施の形態では、プロセッサがポイントツーポイント相互接続を介して関連される共有メモリと直接インタフェースする場合があるように、それぞれのプロセッサは、メモリコントローラ機能を含んでいる場合がある。たとえば、図１に示されるように、プロセッサ５０は、ポイントツーポイント相互接続を介してメモリ６０（メモリ  Ａ）に接続される場合があり、プロセッサ５５は、同様のポイントツーポイント相互接続を介してメモリ６５（メモリ  Ｂ）に接続される場合がある。さらに、プロセッサ５０及び５５は、ポイントツーポイント相互接続を介して互いに接続される場合がある。同様に、それぞれのプロセッサ５０及び５５は、第一の入力／出力ハブ（ＩＯＨ  Ａ）２０及び第二のＩＯＨ３０（ＩＯＨ  Ｂ）のそれぞれにポイントツーポイント相互接続を介して接続される場合がある。
【０００９】
図１の実施の形態では、ボックス１５内の全てのコンポーネントは、コヒーレントシステム（すなわち、コヒーレントシステム１５）を集合的に形成する場合がある。かかるコヒーレントシステムは、複数のチャネルを通してトランザクションが流れるチャネル間のいずれかのオーダーリング（順序付け）なしに、コヒーレント・トランザクションを収容する場合がある。コヒーレントシステムとして本実施の形態では説明されているが、コヒーレント・トランザクション及びノンコヒーレント・トランザクション（ｎｏｎ−ｃｏｈｅｒｅｎｔ  ｔｒａｎｓａｃｔｉｏｎ）の両者が通過され、システム内のコンポーネントにより作用することができることを理解されたい。たとえば、メモリ６０及び６５の一方又は両方の領域がノンコヒーレント・トランザクションのために予約される場合がある。図１の実施の形態が２つのプロセッサ及び２つのＩ／Ｏハブを有するプラットフォームトポロジーを示している一方で、他の実施の形態は、多かれ少なかれかかるコンポーネントを含んでいる場合があることを理解されたい。たとえば、単一のプロセッサシステムは、単一のプロセッサ、単一のＩ／Ｏハブ、及びこれらに接続される関連されるＩ／Ｏ装置を有して実現される場合がある。代替的に、４，８，１６，３２又は別の数のプロセッサを有するマルチプロセッサシステムが実現される場合があり、適切な数のＩ／Ｏハブ及び他のコンポーネントがこれらのプロセッサに接続される場合がある。いずれかのかかるプラットフォームトポロジーは、システムのコヒーレントな部分内にコヒーレンシー（可干渉性）を提供するために、ポイントツーポイント相互接続を利用する場合があり、それらに接続されるＩ／Ｏ装置間でのノンコヒーレントなペアツーペアトランザクションを許容する場合もある。かかるポイントツーポイント相互接続は、コンポーネント間で複数のパスを提供する場合がある。
【００１０】
図１に示されるように、Ｉ／Ｏハブ２０及び３０は、これらのハブに接続されるＩ／Ｏ装置とインタフェースするために、複数のポート（たとえば、ＩＯＨ２０におけるポート２１〜２４、及びＩＯＨ３０におけるポート３１〜３４）をそれぞれ含んでいる場合がある。たとえば、所定の実施の形態では、かかるＩ／Ｏ装置は、１以上のバススキームに従う装置である場合がある。１実施の形態では、かかるＩ／Ｏ装置は、ＰＣＩ  ＥｘｐｒｅｓｓＴＭ装置である場合がある。本実施の形態で使用されるように、かかる装置は、“ＰＣＩ−Ｅ”装置と呼ばれる場合がある。
【００１１】
簡単さのために、図１は、それぞれのＩ／Ｏハブに接続される単一のＩ／Ｏ装置、すなわち、ポート２１を介してＩＯＨ２０に接続されるＩ／Ｏ装置（Ｉ／Ｏ装置  Ａ）４０、及びポート３１を介してＩＯＨ３０に接続されるＩ／Ｏ装置（Ｉ／Ｏ装置  Ｂ）４５を示している。本発明の実施の形態に係るＩ／Ｏハブにおけるポート数は変化する場合があり、図１に示されるポート及び該ポートに接続される装置の数は、例示の目的のみのために示されている。
【００１２】
また、図１には、ＩＯＨ３０に接続される旧式のＩ／Ｏコントローラハブ（ＩＣＨ）７０が示されている。１実施の形態では、ＩＣＨ７０は、キーボード、マウス及びユニバーサルシリアルバス（ＵＳＢ）装置（たとえば、ＵＳＢ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖ．２．０（２０００年１２月発表）に従う装置）のような旧式の装置をコヒーレントシステム１５に接続するために使用される場合がある。
【００１３】
図１に示されるＩ／Ｏハブは、複数のポートを含んでいるが、ハブは、ハードウェア、ファームウェア及びソフトウェアの組み合わせを使用して各種機能を実現する場合があることを理解されたい。かかるハードウェア及びソフトウェアは、Ｉ／Ｏハブがコヒーレントシステム１５（たとえば、共有メモリ６０及び６５、プロセッサ５０及び５５、並びにＩＯＨ２０及び３０）と、Ｉ／Ｏ装置４０及び４５のような該システムに接続される装置との間のインタフェースとしての役割を果たすように使用される場合がある。さらに、図１のＩ／Ｏハブは、各種バス又は該バスに接続される装置の他の通信プロトコルをサポートするために使用される場合がある。ＩＯＨ２０及びＩＯＨ３０は、２以上の通信リンク間のセントラルコネクションを提供するためのエージェントとしての役割を果たす場合がある。特に、ＩＯＨ２０及びＩＯＨ３０は、コヒーレントシステム１５に接続される異なるＩ／Ｏ装置間の接続を提供する「ＣＳＩエージェント」と呼ばれる場合がある。様々な実施の形態では、コヒーレントシステム１５内の他のコンポーネントは、ＣＳＩエージェントとしての役割をも果たす場合がある。
【００１４】
様々な実施の形態では、Ｉ／Ｏハブ２０及び３０のそれぞれのポートは、「仮想チャネル」と本実施の形態では呼ばれることがある複数のチャネルを含んでいる場合があり、この仮想チャネルは、仮想ネットワーク、並びに各種装置間でのデータ、制御情報及びステータス情報を通信するための関連されるバッファを互いに形成する場合がある。１つの特定の実施の形態では、本発明の範囲がそのように限定されるものではないが、それぞれのポートは、スタンダードチャネル、バイパスチャネル及びコンプレーションチャネルを含む少なくとも３つのかかるチャネルを含んでいる場合がある。さらに、これらのチャネルは、コヒーレントシステム１５に接続されるＩ／Ｏ装置のノンコヒーレント・トランザクションを経路制御するために使用されるノンコヒーレントチャネルである場合がある。所定のかかる実施の形態では、コヒーレントな転送のために更なるチャネルが存在する場合がある。他の実施の形態では、２つの仮想チャネルが存在する場合がある。かかる実施の形態では、２つのチャネルは、スタンダードチャネル及びバイパスチャネルである場合がある。かかるやり方では、装置間を流れるトランザクションは、通知されたトランザクションがリードのような非通知のトランザクションの後で遅延されるときに生じるデッドロックを回避する場合がある。
【００１５】
ここで図２を参照して、本発明の１実施の形態に係るＩ／Ｏハブのブロック図は示されている。図２に示されるように、Ｉ／Ｏハブ１００は、ＰＣＩインタフェース１０５とワイヤ１７０との間に接続されており、このワイヤは、コヒーレントシステム１５（たとえば、「ＣＳＩワイヤ」）のワイヤである場合があり、ファブリック１８０に導かれている。たとえば、図１において先に説明された実施の形態では、Ｉ／Ｏハブ１００は、Ｉ／Ｏハブ２０又は３０のうちの１つである場合があり、ファブリック１８０は、コヒーレントシステム１５（たとえば、「ＣＳＩファブリック」又は「コモンシステムファブリック」）のファブリックである場合があり、ＰＣＩインタフェース１０５は、Ｉ／Ｏ装置４０をＩ／Ｏハブ２０と接続する場合がある。ＰＣＩ装置（たとえば、「伝統的な」ＰＣＩ装置、又はＰＣＩ−Ｘ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  ｖｅｒｓｉｏｎ２．０（２００２年７月２２日発表）に準拠した装置、若しくはＰＣＩ−Ｅ装置）とのインタフェースとして図２の実施の形態では説明されるが、本発明の範囲はそのように限定されるものではなく、他の実施の形態は、通知及び非通知のトランザクション又は他のオーダーリングスキームを使用した他のプロトコルとインタフェースする場合がある。たとえば、レイヤ１１０は、１実施の形態においてプロセッサコアへのインタフェースである場合がある。
【００１６】
さらに図２を参照して、ＰＣＩトランザクションは、ＰＣＩインタフェース１０５を介してＩ／Ｏハブ１００に入力される場合がある。かかるトランザクションは、Ｉ／Ｏハブ１００のＰＣＩトランザクションレイヤ１１０において受信される場合がある。ＰＣＩトランザクションレイヤ１１０は、第一のキュー１１２及び第二のキュー１１４を含んでいる場合がある。１実施の形態では、第一のキュー１１２は、トランザクションの待ち（ｔｘｎ＿ｑｕｅ）であり、第二のキュー１１４は、バイパスの待ち（ｂｙｐ＿ｑｕｅ）である場合がある。ＰＣＩトランザクションレイヤ１１０は、通知された要求、非通知の要求及びコンプレーション（終了）のための別々のクレジットアカウントを維持することで分けられる異なるトラフィッククラスを維持する場合がある。しかし、オーダーリングルール（たとえば、過去に通知された要求を移動するコンプレーション）との準拠を保証するため、第一のキュー１１２がバックアップされるとき、通知されたトランザクションは、第二のキュー１１４に送出される場合がある。第一のキュー１１２及び第二のキュー１１４は、その間で調停され、トランザクションがマルチプレクサ１１５を介してＣＳＩトランザクションレイヤ１２０に通過される場合がある。１実施の形態では、第一のキュー１１２及び第二のキュー１１４は、不足のないロジックを使用して調停される場合がある。
【００１７】
ＣＳＩトランザクションレイヤ１２０でトランザクションが受信されるとき、トラフィックは、オーダーリングされておらず、ＣＳＩトランザクションレイヤ１２０は、複数の異なる仮想チャネルのうちの１つにトランザクションを分割する場合がある。ＣＳＩトランザクションレイヤ１２０は、ＣＳＩプロトコルレイヤとも呼ばれる場合がある。図２の実施の形態で示されるように、３つのかかる仮想チャネルが存在する場合があり、すなわち第一の仮想チャネル１４０、第二の仮想チャネル１５０、及び第三の仮想チャネルである。図２に示される実施の形態では、第一の仮想チャネル１４０は、ノンコヒーレントなスタンダード（ＮＣＳ）チャネルである場合があり、第二の仮想チャネル１４０は、ノンコヒーレントなバイパス（ＮＣＢ）チャネルである場合があり、第三の仮想チャネル１６０は、コンプレーション（ＣＭＰ）仮想チャネルである場合がある。かかるＣＭＰ仮想チャネルは、受信装置でのオーダーリングを示すために使用される場合がある。たとえば、ペアツーペアトランザクションを受信するエージェントから該トランザクションを送出するエージェントにコンプレーションパケットが送出される場合がある。しかし、他の実施の形態では、多かれ少なかれ仮想チャネルが存在し、仮想チャネルは、異なって名称付けされ、利用される場合があることを理解されたい。他の動作の働きをする一方で、ＣＳＩトランザクションレイヤ１２０の更なる詳細が以下に説明される。
【００１８】
図２に示されるように、Ｉ／Ｏハブ１００内には、ルーティングレイヤ１２５、リンクレイヤ１３０及び物理レイヤ１３５を含めて、複数の追加のレイヤが存在する場合がある。様々な実施の形態では、これらのレイヤは、Ｉ／Ｏハブ１００を通して別の３つの仮想チャネルを典型的に維持し、チャネルは、Ｉ／Ｏハブのような受信装置の対応するトランザクションレイヤにおけるそれらの受信まで、該チャネルに接続される更なるコンポーネント及び相互接続を通して別に維持される場合がある。
【００１９】
図２の実施の形態では３つの仮想チャネルを含むものとして説明されているが、他の実施の形態では、更なる仮想チャネルが所望のプロトコルにおいて存在する場合があることを理解されたい。さらに、コヒーレントシステム内で使用されるものとして本実施の形態では説明されるが、デッドロックのないトランザクションのルーティングを提供するために、他の実施の形態がノンコヒーレントシステムで実現される場合があることを理解されたい。３つのチャネルに加えて、エージェントは、ソーストランザクションレイヤでの機能的なオーダーリングを保持する場合がある。他の実施の形態では、第四の仮想チャネルが存在し、コンプレーションのために使用される場合がある。かかるやり方で、２つの仮想チャネルがコンプレーションのために使用される場合があり、１つはデータがある場合のコンプレーションのために、１つはデータがない場合のコンプレーションである。簡単さのために、図２に示される実施の形態は、本発明の範囲を限定するものではないが、単一のコンプレーションチャネルを含んでいる。
【００２０】
様々な実施の形態では、異なるチャネル間を流れるトラフィック間の相互依存がないように、３つの仮想チャネルのフロー制御が別々に維持される場合がある。このように、それぞれの仮想チャネル内でのオーダーリングが存在しない。さらに、コヒーレントシステムに接続される（トランザクションを指示する）ペア装置のトランザクションは、オーダーリングされていないやり方で仮想チャネルを通して流れる。１実施の形態では、クレジットベースのフロー制御メカニズムは、別々のチャネルが別々のクレジットのプールを有するように実現される場合がある。しかし、他の実施の形態では、リトライメカニズム又は別のタイプのフロー制御のような他のフロー制御メカニズムが実現される場合がある。
【００２１】
デッドロックを回避するため、本発明の実施の形態に従って異なる仮想チャネルを通して異なるタイプのトランザクションが経路制御される場合がある。かかるトランザクションは、たとえばリード（ｒｅａｄ）トランザクション及びライト（ｗｒｉｔｅ）トランザクション、データメッセージ等を含んでいる場合がある。ここで、以下の表１を参照して、本発明の１実施の形態に係る、ＰＣＩトランザクションの複数の仮想チャネルへのマッピングが示されている。
【００２２】
【表１】
2005318495.tif 000003
表１の特定のＰＣＩトランザクションを特定の仮想チャネルにルーティングするものとして示されているが、他の実施の形態では、コヒーレントシステムに接続される別のＩ／Ｏ装置の１以上のＰＣＩトランザクションがいずれか所望の仮想チャネルで転送される場合があることを理解されたい。
【００２３】
１実施の形態では、ＣＳＩトランザクションレイヤ１２０は、コヒーレントシステムを通した伝送のためにパケットを形成、順序付け及び処理するために使用される各種のプロトコルエンジンを含んでいる場合がある。たとえば、１実施の形態では、ＣＳＩトランザクションレイヤ１２０は、特に、コヒーレンスエンジン、割り込みエンジン、Ｉ／Ｏエンジンを含んでいる場合がある。かかるエンジンを使用して、ＣＳＩトランザクションレイヤ１２０は、コモンシステムヘッダ（「システム相互接続ヘッダ」とも呼ばれる）を有するパケットを形成する場合がある。ＣＳＩトランザクションレイヤ１２０でこのように形成されるパケットは、図２に示される３つの仮想チャネルのうちの所与の１つにレイヤ１２５をルーティングするために提供される場合がある。
【００２４】
様々な実施の形態では、ルーティングレイヤ１２５は、ソースから目的地にコヒーレントパケットを経路制御する柔軟かつ分散されたやり方を提供する場合がある。目的地ベースのルーティングは、適応的な経路制御及びルーティングテーブルのオンライン再構成を可能にする、ルーティングレイヤ１０５内のルーティングテーブルを使用して決定される場合がある。１実施の形態では、ＣＳＩトランザクションレイヤ１２０により生成されるコモンシステムヘッダは、目的地、入力ポート及び仮想ネットワークを識別する情報を含む場合があり、これらの値は、トランザクションが流れる所望の出力ポート及び仮想ネットワークを決定するため、ルーティングテーブルに入力される場合がある。様々な実施の形態では、ルーティングテーブルは、保護されるコンフィグレーションスペースに記憶され、ファームウェアによりプログラムされる場合がある。かかるルーティングテーブルは、様々なトポロジーのためのデッドロックのないルーティングを可能にするためにプログラムされる場合がある。かかる目的地ベースのルーティングは、ノード識別子（ノードＩＤ）に基づく場合があり、このノード識別子は、コヒーレントシステム内のエージェントを固有に識別する。
【００２５】
ルーティングレイヤ１２５から、トランザクション及びパケットは、リンクレイヤ１３０に通過される場合がある。リンクレイヤ１３０は、様々な実施の形態では、信頼性の高いデータ転送、及び２つのダイレクト接続されるコヒーレントエージェント間でのフロー制御を提供し、装置間での物理チャネルを仮想化することを提供するために使用される場合がある。このように、リンクレイヤ１３０は、オーバフロー又はアンダーフローを防止するためにフロー制御される場合があり、エラー検出及び回復を提供するために使用される場合もある。１実施の形態では、フロー制御は、フリットベースのレベルでのクレジット／デビットフロー制御（ｆｌｉｔ−ｂａｓｅｄ  ｌｅｖｅｌ  ｃｒｅｄｉｔ／ｄｅｂｉｔ  ｆｌｏｗ  ｃｏｎｔｒｏｌ）を使用して実現される場合がある。様々な実施の形態では、フリットは、データ転送に関する最小ユニットを呼び、１実施の形態では、８０ビット長である場合がある。パケットは、論理的なフリットのグループである場合がある。所定の実施の形態では、パケットは、ヘッダを介してルーティング及び他の情報を含む最小の情報ユニットである場合がある。それぞれのパケットは、ヘッダ及び任意のデータフィールドを含んでいる場合がある。所定の実施の形態では、へッダは、１〜２フリットの長さである場合があり、データ部分は、コヒーレントシステムのキャッシュラインのサイズに伸びている場合がある。
【００２６】
様々な実施の形態では、リンクレイヤ１３０は、物理チャネルを多数のメッセージクラス及び仮想ネットワークに仮想化する場合がある。かかるやり方では、物理チャネルは、多数の仮想チャネル間で多重化される場合がある。かかるメッセージクラスは、プロトコルレベルのデッドロックを回避して、クオリティ・オブ・サービス（ＱｏＳ）の基準を提供するために使用される場合がある。様々な実施の形態では、複数の仮想ネットワークが実現される場合があり、それぞれの仮想ネットワークは、複数の仮想チャネルを有している。様々な実施の形態では、全てのメッセージクラスを含む仮想チャネルのグループは、仮想ネットワークを形成する場合がある。それぞれの仮想ネットワークは、独立なバッファリング及びフロー制御を有する場合がある。１つのかかる実施の形態では、第一の仮想ネットワーク（たとえば、ＶＮ０）及び第二の仮想ネットワーク（たとえば、ＶＮ１）を含めて、３つの仮想ネットワークが存在する場合がある。これらの仮想ネットワークは、柔軟なルーティング及びデッドロックの回避を提供する場合がある。さらに、かかる実施の形態では、第三の仮想ネットワーク（たとえば、ＶＮＡ）は、効率的な実現のために適応的なバッファプールを提供する場合がある。
【００２７】
所定の実施の形態では、共有されるＶＮＡは、多数のメッセージクラスをサポートし、デッドロックの状況を回避するためにＶＮ０又はＶＮ１のいずれかとのコネクションにおいて使用される場合がある。たとえば、ブロックされたメッセージ（利用不可能なクレジット）は、ＶＮ０又はＶＮ１に遷移され、次いで、次のリンクでＶＮＡに戻る場合がある。１実施の形態では、ＶＮ１及びＶＮ０は、メッセージ当たりでのフロー制御を実行し、ＶＮＡは、フリット当たりでフロー制御を実行する場合がある。
【００２８】
様々な実施の形態では、それぞれの仮想ネットワークは、先に説明されたように、少なくとも３つの仮想チャネルを含んでいる場合がある。しかし、他の実施の形態では、多かれ少なかれ仮想ネットワークが存在し、それぞれのかかる仮想ネットワークは、多かれ少なかれ仮想チャネルを含んでいる場合があることを理解されたい。たとえば、様々な実施の形態では、先に説明された３つの仮想チャネルに加えて、仮想ネットワークは、コヒーレント・トランザクション及び等時性のトランザクションのための更なる仮想チャネルを含んでいる場合がある。
【００２９】
様々な実施の形態では、物理レイヤ１３５は、ＣＳＩワイヤ１７０を介して、ＣＳＩファブリック１８０を通して、２つのダイレクト接続されたコヒーレントエージェント間での電気的な情報の伝送を提供するために使用される場合がある。
【００３０】
図３を参照して、本発明の１実施の形態に係るコヒーレントシステムの一部に関するブロック図が示されている。図３に示されるように、システム３００は、第一のＣＳＩエージェント３１０、第二のＣＳＩエージェント３５０、及びブリッジングエージェント３３０を含んでいる。１実施の形態では、ＣＳＩエージェント３１０及び３５０はＩ／Ｏハブであり、ブリッジングエージェント３３０は、スイッチング装置である場合がある。他の実施の形態では、エージェントは、マイクロプロセッサ、他のバスエージェント等である場合があることを理解されたい。図３の実施の形態ではコヒーレントシステムとして説明されているが、本発明の範囲はそのように限定されるものではないことが理解される。
【００３１】
ＣＳＩエージェント３１０は、物理レイヤ３１４、リンクレイヤ３１８、ルーティングレイヤ３２４及びプロトコルレイヤ３２５を含めて、複数のレイヤを含む場合がある。これらのレイヤは、図２の物理レイヤ１３５、リンクレイヤ１３０、ルーティングレイヤ１２５及びトランザクションレイヤ１２０にそれぞれ対応している場合がある。パケットは、複数の電気的な転送ポート３１２ａ及び３１２ｂを含む場合がある物理レイヤ３１４でのＣＳＩエージェント３１０で受信される場合がある。図３の実施の形態では２つのかかるポートを含むものとして示されているが、他の実施の形態において更なるポートが存在する場合があることを理解されたい。
【００３２】
図３に示されるように、パケットは、ＣＳＩパケットである場合があるが、本発明はそのように限定されるものではない。かかるパケットは、ヘッダ及び関連される情報（たとえば、「ペイロード」）を含んでいる場合がある。その後、パケットは、複数のバッファフロー制御メカニズムを含んでいる場合があるリンクレイヤ３１８に送出される。図３の実施の形態では、２つのバッファフロー制御メカニズム３１６ａ及び３１６ｂが示されており、これらのメカニズムそれぞれは、入力バッファ及び出力バッファを含んでいる場合がある。
【００３３】
フリットが適切に受信されたとき、リンクレイヤ３１８がフリットをルーティングレイヤ３２４に供給する場合があり、ルーティングレイヤ３２４では、フリットはスイッチ３２０を通して多重化されてルーティングテーブル３２２に供給される。また、関連するヘッダ及びペイロード（存在する場合）を適切なエージェントに経路制御するために、たとえば、目的地ノードＩＤのフィールドの値が使用される。パケットがエージェント３１０に向けられる場合、ルーティングテーブル３２２は、パケットをプロトコルレイヤ３２５に供給する。代替的に、パケットが別の目的地に向けられる場合、ヘッダ及びパケットは、エージェント３１０のリンクレイヤ３１８及び物理レイヤ３１４を通して異なるエージェントに送られる。
【００３４】
本発明の様々な実施の形態では、プロトコルレイヤ３２５は、トランザクションを指示するためにヘッダと関連されるトランザクションＩＤを使用し、プロトコルレイヤ３２５内の様々なエンジンを使用して所望の処理を実行する。図３の実施の形態では代表的なエンジンとして、コヒーレンスエンジン３２７ａ、割込みエンジン３２７ｃ、及びＩ／Ｏエンジン３２７ｄが示されている。
【００３５】
同様の機能は、ＣＳＩエージェント３５０において存在する場合があり、このＣＳＩエージェントは、対応する物理レイヤ３５４、リンクレイヤ３５８、ルーティングレイヤ３６４、及びプロトコルレイヤ３７５を含んでいる。図３に更に示されるように、これらのレイヤのそれぞれは、たとえば、電気的な転送ユニット３５２ａ及び３５２ｂ、バッファフロー制御メカニズム３５６ａ及び３５６ｂ、ミキサ３６０、ルーティングテーブル３６２、及びプロトコルエンジン３７７ａ〜３７７ｄを含んでいる、エージェント３１０のコンポーネントに類似のコンポーネントを含む場合がある。
【００３６】
図３で更に示されるように、ブリッジングエージェント３３０は、対応する物理レイヤ、リンクレイヤ、及びルーティングレイヤ（それぞれ、物理レイヤ３３４、リンクレイヤ３３８、及びルーティングレイヤ３４４）を含んでいる場合がある。所定の実施の形態では、ブリッジングエージェント３３０は、スイッチ、ブリッジ、ハブ等であり、コヒーレントシステム３００の異なるエージェント又はノードのセット間でのブリッジを提供するために使用される場合がある。たとえば、別の実施の形態では、ブリッジエージェント３３０は、第一の複数のプロセッサ（たとえば、左手側）及び第二の複数のプロセッサ（たとえば、右手側）に接続されている場合がある。
【００３７】
システムを通して異なるトランザクションのタイプを経路制御するために複数の異なるチャネルを使用することで、システム内のデータ通信が完全に順序付けされない場合がある。しかし、第一の同等の装置から第二の同等の装置にシステムを通して流れるオーダーリングされたトランザクションは、デッドロックを回避してオーダーリングされていないやり方でシステムを通して経路制御され、そのオーダーリングの情報がもとのままの状態で第二の同等の装置に提供される。
【００３８】
実施の形態は、コードで実現され、命令を実行するためにコンピュータシステムをプログラムするために使用されるそこに記憶された命令を有する記憶媒体に記憶される場合がある。記憶媒体は、限定されるものではないが、フロッピーディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）及び磁気−光ディスクを含むいずれかのタイプのディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）のような半導体装置、磁気又は光カード、又は電気的な命令を記憶するために適したいずれかのタイプの媒体を含んでいる場合がある。
【００３９】
例示された実施の形態は、適切なハードウェア装置の組み合わせで構成される適切なコンピュータシステムによる実行のためにソフトウェアで実現される場合がある。たとえば、所定の実施の形態では、Ｉ／Ｏハブのようなコヒーレントシステムの様々なエージェントは、先に説明されたようにトランザクションを異なる仮想チャネルに分離するためのコード又はロジックを含んでいる場合がある。
【００４０】
本発明は、制限された数の実施の形態に関して説明されたが、当業者であれば、該実施の形態から様々な変形及び変更を理解されるであろう。添付された特許請求の範囲は、本発明の真の精神及び範囲に含まれるとして全てのかかる変更及び変形をカバーすることが意図されている。
【図面の簡単な説明】
【００４１】
【図１】本発明の１実施の形態に係るシステムのブロック図である。
【図２】本発明の１実施の形態に係る入力／出力ハブのブロック図である。
【図３】本発明の１実施の形態に係るコヒーレントシステムの一部のブロック図である。
【符号の説明】
【００４２】
１０：システム
１５：コヒーレントシステム
２０：Ｉ／Ｏハブ  Ａ
３０：Ｉ／Ｏハブ  Ｂ
２１〜２４：ＩＯＨ２０におけるポート
３１〜３４：ＩＯＨ３０におけるポート
４０：Ｉ／Ｏ装置  Ａ
４５：Ｉ／Ｏ装置  Ｂ
５０：ＣＰＵ  Ａ
５５：ＣＰＵ  Ｂ
６０：メモリ  Ａ
６５：メモリ  Ｂ
７０：Ｉ／Ｏコントローラハブ
【図１】
2005318495.tif 000004
【図２】
2005318495.tif 000005
【図３】
2005318495.tif 000006