(57)【要約】ファブリックトポロジを自動的に発見するシステムは、少なくとも１つまたは複数の処理ユニット、１つまたは複数のメモリデバイス、セキュリティプロセッサ及び通信ファブリックを含み、通信ファブリックは、処理ユニット（複数可）、メモリデバイス（複数可）及びセキュリティプロセッサに結合された不明トポロジを備える。セキュリティプロセッサは、コンポーネントに関連する様々な属性を取得するために、ファブリックの各コンポーネントに問い合わせを行う。セキュリティプロセッサは、取得された属性を利用して、ファブリック内のコンポーネントのトポロジのネットワークグラフを作成する。セキュリティプロセッサは、ネットワークグラフからルーティングテーブルを生成し、ルーティングテーブルをファブリックコンポーネントにプログラムする。次いで、ファブリックコンポーネントは、ルーティングテーブルを利用して、着信パケットをルーティングする方法を決定する。【選択図】図７
2021508963.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンポーネントを備える通信ファブリックと、
前記通信ファブリックに結合されたプロセッサであって、
ファブリックブロック・インスタンスカウントレジスタから値を読み取ることであって、前記値は、前記通信ファブリック内のコンポーネントの数を指定する、前記読み取ることと、
各コンポーネントのレジスタを読み取ることによって、前記通信ファブリックの各コンポーネントに問い合わせを行うことと、
前記通信ファブリックの各コンポーネントの問い合わせに基づいて、ネットワークグラフを作成することと、
前記ネットワークグラフに基づいて、ルーティングテーブルを生成することと、
を行うように構成される、前記プロセッサと、
を備える、システム。
【請求項２】
前記プロセッサは、前記ルーティングテーブルを前記通信ファブリックの前記複数のコンポーネントにプログラムするようにさらに構成される、請求項１に記載のシステム。
【請求項３】
前記通信ファブリックの各コンポーネントは、それぞれのルーティングテーブルに基づいて、受信パケットをルーティングするように構成される、請求項２に記載のシステム。
【請求項４】
各レジスタは、ブロックタイプ、コマンド及びデータポートのタイプ及び数、データバス幅、ネイバーインスタンス識別子（ＩＤ）及び／またはファブリックＩＤのうちの１つまたは複数を備える、請求項１に記載のシステム。
【請求項５】
前記ファブリックブロック・インスタンスカウントレジスタは、前記システム内のファブリックコンポーネントの合計数の表示を格納し、
前記ファブリックブロック・インスタンスカウントレジスタは、固定アドレスに存在する、請求項１に記載のシステム。
【請求項６】
前記プロセッサはセキュリティプロセッサである、請求項１に記載のシステム。
【請求項７】
前記複数のコンポーネントは、マスタ、スレーブまたはクロスバーのうちの１つまたは複数を備える、請求項１に記載のシステム。
【請求項８】
プロセッサによって、ファブリックブロック・インスタンスカウントレジスタから値を読み取ることであって、前記値は、通信ファブリック内のコンポーネントの数を指定する、前記読み取ることと、
前記プロセッサによって、各コンポーネントのレジスタを読み取ることによって、前記通信ファブリックの各コンポーネントに問い合わせを行うことと、
前記プロセッサによって、前記通信ファブリックの各コンポーネントの問い合わせに基づいて、ネットワークグラフを作成することと、
前記プロセッサによって、前記ネットワークグラフに基づいて、ルーティングテーブルを生成することと、
を備える、方法。
【請求項９】
前記ルーティングテーブルを前記通信ファブリックの複数のコンポーネントにプログラムすることをさらに備える、請求項８に記載の方法。
【請求項１０】
それぞれのルーティングテーブルに基づいて、受信パケットをルーティングすることをさらに備える、請求項９に記載の方法。
【請求項１１】
各レジスタは、ブロックタイプ、コマンド及びデータポートのタイプ及び数、データバス幅、ネイバーインスタンス識別子（ＩＤ）及び／またはファブリックＩＤのうちの１つまたは複数を備える、請求項８に記載の方法。
【請求項１２】
前記ファブリックブロック・インスタンスカウントレジスタは、前記システム内のファブリックコンポーネントの合計数の表示を格納し、前記ファブリックブロック・インスタンスカウントレジスタは固定アドレスに存在する、請求項８に記載の方法。
【請求項１３】
セキュリティプロセッサが、前記ネットワークグラフを作成することと、前記ネットワークグラフに基づいてルーティングテーブルを生成することとをさらに備える、請求項８に記載の方法。
【請求項１４】
前記複数のコンポーネントは、マスタ、スレーブまたはクロスバーのうちの１つまたは複数を備える、請求項８に記載の方法。
【請求項１５】
１つまたは複数の処理ユニットと、
１つまたは複数のメモリデバイスと、
前記１つまたは複数の処理ユニット及び前記１つまたは複数のメモリデバイスに結合された通信ファブリックと、を備える装置であって、
ファブリックブロック・インスタンスカウントレジスタから値を読み取ることであって、前記値は、前記通信ファブリック内のコンポーネントの数を指定する、前記読み取ることと、
各コンポーネントのレジスタを読み取ることによって、前記通信ファブリックの各コンポーネントに問い合わせを行うことと、
前記通信ファブリックの各コンポーネントの問い合わせに基づいて、ネットワークグラフを作成することと、
前記ネットワークグラフに基づいて、ルーティングテーブルを生成することと、
を行うように構成される、前記装置。
【請求項１６】
前記装置は、前記ルーティングテーブルを前記通信ファブリックの複数のコンポーネントにプログラムするようにさらに構成される、請求項１５に記載の装置。
【請求項１７】
前記通信ファブリックの各コンポーネントは、それぞれのルーティングテーブルに基づいて、受信パケットをルーティングするように構成される、請求項１６に記載の装置。
【請求項１８】
各レジスタは、ブロックタイプ、コマンド及びデータポートのタイプ及び数、データバス幅、ネイバーインスタンス識別子（ＩＤ）及び／またはファブリックＩＤのうちの１つまたは複数を備える、請求項１５に記載の装置。
【請求項１９】
前記ファブリックブロック・インスタンスカウントレジスタは、前記システム内のファブリックコンポーネントの合計数の表示を格納し、前記ファブリックブロック・インスタンスカウントレジスタは固定アドレスに存在する、請求項１５に記載の装置。
【請求項２０】
前記通信ファブリックの複数のコンポーネントは、マスタ、スレーブまたはクロスバーのうちの１つまたは複数を備える、請求項１５に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングシステムでは、単一の集積回路（すなわち、チップ）またはマルチチップモジュール上に多数の異なるタイプのコンポーネントを統合することが増えている。システムの複雑性及び消費電力は、異なるタイプのコンポーネントの数に伴い増加する。多くの場合、これらのコンポーネントは、スイッチ、ルータ、通信バス、ブリッジ、バッファ、コントローラ、コヒーレントデバイス及びその他のリンクを介して接続されている。これらの相互接続コンポーネントの組み合わせは、本明細書において「通信ファブリック」または略して「ファブリック」と呼ばれる。
【０００２】
一般的に、ファブリックは、チップまたはマルチチップモジュール上の複数のコンポーネント間でメッセージをルーティングすることにより、通信を容易にする。ファブリックを介して通信されるメッセージの例には、メモリアクセス要求、ステータス更新、データ転送、コヒーレンシー・プローブ、コヒーレンシー・プローブ応答などがある。コンピューティングシステムの複雑性が増すと、システムコンポーネント間で結合及び通信する相互接続ファブリックの複雑性も増す。ラベル及びルートを静的に割り当てることは、通常、実行不可能であり、ファブリックトポロジの規則性について仮定することも不可能である。したがって、不規則なファブリックトポロジを管理するための改善された技術が求められている。
【０００３】
添付図面と共に以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点はより良好に理解され得る。
【図面の簡単な説明】
【０００４】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】ファブリックの一実施形態のブロック図である。
【図３】コンピューティングシステムの別の実施形態のブロック図である。
【図４】ファブリックに結合されたセキュリティプロセッサの一実施形態のブロック図である。
【図５】ネットワークグラフの一実施形態のブロック図である。
【図６】ファブリックコンポーネントの一実施形態のブロック図である。
【図７】ファブリックトポロジの自動発見プロセスを実行するための方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００５】
以下の説明では、本明細書に提示する方法及びメカニズムの完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者は、それらの特定の詳細がなくとも、様々な実施形態を実施可能であることを認識するべきである。いくつかの例では、本明細書に記載される手法を不明瞭にしないために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術を詳細には示さない。例示を簡潔及び明確にするために、図面に示される要素は、必ずしも縮尺通りに描写されるわけではないことが認識されるだろう。例えば、要素のいくつかの寸法は、他の要素に対して拡張されてよい。
【０００６】
本明細書では、相互接続ファブリックトポロジの自己識別発見プロセスを実装するための様々なシステム、装置、方法及びコンピュータ可読媒体を開示する。一実施形態では、システムは、少なくとも１つまたは複数の処理ユニット、１つまたは複数の入出力（Ｉ／Ｏ）インターフェース、不明トポロジの相互接続ファブリック、及び１つまたは複数のメモリデバイスを含む。一実施形態では、システムは、任意のファブリックトポロジで動作することができる自律的なブートストラップ発見プロセスを実施する。異なるファブリックシステムのプログラミングを簡素化するために、ファブリックが複数のノード（ダイまたはソケット）にまたがる場合、任意のネットワークオンチップ（ＮｏＣ）の発見及びプログラミングに対する一般的な解決法が実施される。一実施形態では、情報レジスタのセット及びアルゴリズムを実装してネットワークブロックを横断し、ブロックタイプ及び機能ならびにネットワークコンポーネント間の接続性を発見する。
【０００７】
一実施形態では、ファブリックの発見は、セキュリティプロセッサによって実行される。別の実施形態では、ファブリックの発見は、システム管理プロセッサによって実行される。他の実施形態では、ファブリックの発見は、他のタイプのコンポーネントによって実行することができる。一実施形態では、ファブリックの発見は、ファブリックを発見する際に取得された情報を使用してシステムハードウェアにリセット条件を作成する場合には、設計フローの一部として実行される。一実施形態では、ファブリックの発見は、セキュリティプロセッサがファブリックブロック・インスタンスカウントレジスタを読み取ることによって開始する。ファブリックブロック・インスタンスカウントレジスタは、システム内のファブリックブロックの合計数の表示を記憶し、ファブリックブロック・インスタンスカウントレジスタは、システム内の固定アドレスに存在する。ファブリックブロック・インスタンスカウントレジスタを使用すると、システムのサイズまたはトポロジに関係なく、ファームウェアは一般的な開始点を有することができる。
【０００８】
ファブリックブロックの合計数がファブリックブロック・インスタンスカウントレジスタから取得されると、セキュリティプロセッサは各ブロックを通過してブロックインスタンス情報レジスタを読み取る。これらのレジスタには、ブロックタイプ（例えば、コヒーレントマスタ、非コヒーレントマスタ、クロスバー、コヒーレントスレーブ、非コヒーレントスレーブ）、コマンド及びデータポートのタイプ及び数、データバス幅、クロック速度、ネイバーインスタンス識別子（ＩＤ）、ファブリックＩＤ及びその他の属性などの情報が含まれる。この情報が各ブロックについて取得されると、以降の処理で使用するデータ構造としてネットワークグラフが構築される。ネットワークグラフに基づいてルーティングアルゴリズムを実行し、ＮｏＣ及びマルチノードシステムに必要なルーティングを決定することができる。ルート、ブロックタイプ及び機能が発見されると、ファームウェアはファブリックを初期化するために、マスタ、スレーブ及びスイッチの適切なプログラミングを開始する。
【０００９】
ここで図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム１００は、少なくとも処理ユニット１１０Ａ〜Ｂ、ファブリック１１５、入出力（Ｉ／Ｏ）インターフェース１２０、メモリコントローラ１３０（複数可）、ディスプレイコントローラ１３５、他のデバイス１４０（複数可）及びセキュリティプロセッサ１４５を含む。他の実施形態では、コンピューティングシステム１００は、他のコンポーネントを含むことができ、及び／またはコンピューティングシステム１００は異なる方式で配置することができる。処理ユニット１１０Ａ〜Ｂは、任意の数及びタイプの処理ユニットを表す。例えば、一実施形態では、処理ユニット１１０Ａは中央処理ユニット（ＣＰＵ）であり、処理ユニット１１０Ｂはグラフィック処理ユニット（ＧＰＵ）である。別の実施形態では、処理ユニット１１０Ａ〜Ｂは、他の数またはタイプの処理ユニット（例えば、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ））を含むことができる。
【００１０】
ファブリック１１５は、システム１００のコンポーネント間で通信するために利用される、様々なタイプのプロトコルのいずれかによる任意の通信相互接続を表す。ファブリック１１５は、処理ユニット１１０Ａ〜Ｂ、Ｉ／Ｏインターフェース１２０、メモリコントローラ１３０（複数可）、ディスプレイコントローラ１３５及び他のデバイス（複数可）１４０を互いに接続するデータパス、スイッチ、ルータ及び他のロジックを提供する。ファブリック１１５は、要求、応答及びデータトラフィックを処理するだけでなく、トラフィックをプローブしてコヒーレンシを容易にする。ファブリック１１５は、割り込み要求ルーティング及びシステム１００の様々なコンポーネントへの構成アクセスパスも処理する。加えて、ファブリック１１５は、構成要求、応答及び構成データトラフィックを処理する。ファブリック１１５は、共有バス構成、クロスバー構成及びブリッジを備えた階層バスを含む、バスベースとすることができる。ファブリック１１５は、パケットベースにすることもでき、ブリッジ、クロスバー、ポイントツーポイントまたは他の相互接続で階層化することができる。ファブリック１１５の観点から、システム１００の他のコンポーネントは「クライアント」と呼ばれることがある。ファブリック１１５は、様々なクライアントによって生成された要求を処理し、その要求を他のクライアントに渡すように構成される。
【００１１】
一実施形態では、セキュリティプロセッサ１４５は、ファブリック１１５のコンポーネントのトポロジの自律的な発見を開始するように構成される。これは、システム１００が通常の構成を有しておらず、システム１００の異なる実装内に様々な異なるタイプの機能が含まれる可能性がある状況において役立つことがある。例えば、システム１００の１つの実装では、コアあたり１６のプロセッサコア及び２つのメモリチャネルを含むことがあり、システム１００の第２の実装では、コアあたり８つのプロセッサコア及び１つのメモリチャネルを含むことがある。システム１００の他の実装は、他の数のコア、メモリチャネル、メモリコントローラ、メモリデバイスなどを含むことがある。したがって、システムの起動前にファブリック１１５の構成及び初期化を行う機能は制限される。したがって、これらの状況では、セキュリティプロセッサ１４５は、システム１００の最初の起動中にシステム１００の所与の実装の固有トポロジを発見するように構成される。
【００１２】
一実施形態では、セキュリティプロセッサ１４５は、コンポーネントに関連する様々な属性を取得するために、ファブリック１１５の各コンポーネントに問い合わせを行うように構成される。一実施形態では、ファブリック１１５の各コンポーネントは、それぞれのコンポーネントの属性を指定する値を格納するための１つまたは複数のレジスタを含む。次いで、ファブリック１１５のコンポーネントに問い合わせを行った後、セキュリティプロセッサ１４５は、様々なコンポーネントから取得された属性に基づいて、ネットワークグラフを作成するように構成される。次に、セキュリティプロセッサ１４５は、決定されたルート、ブロックタイプ及び機能に基づいて、ファブリックを初期化するために、マスタ、スレーブ及びスイッチをプログラムするように構成される。例えば、一実施形態では、ネットワークグラフを作成した後、セキュリティプロセッサ１４５は、ネットワークグラフからルーティングテーブルを生成するように構成される。この実施形態では、セキュリティプロセッサ１４５は、ルーティングテーブルをファブリック１１５の様々なコンポーネントにプログラムする。次いで、ファブリック１１５のコンポーネントは、プログラムされたルーティングテーブルを利用して、受信パケットをルーティングする方法を決定する。
【００１３】
一実施形態では、セキュリティプロセッサ１４５はさらに、システム１００の構成及びセキュリティを管理するように構成される。セキュリティプロセッサ１４５は、システム１００にセキュリティ保護を提供する認証及び検証機能を行うための命令を実行するように構成される。さらに、セキュリティプロセッサ１４５は、システム１００の他の部分へのアクセスを不可能にする１つまたは複数の一意の暗号化／復号キーを格納する。したがって、セキュリティプロセッサ１４５は、システム１００にハードウェアベースの信頼の基点を提供し、システム１００が安全な環境で起動することを可能にする。一実施形態では、セキュリティプロセッサ１４５は、システム１００の起動プロセスを管理して、システム１００が認証された起動コードで起動することを確実にする。セキュリティプロセッサ１４５はさらに、システム１００の起動プロセスに関連する他の様々な機能を管理する。次いで、セキュリティプロセッサ１４５は、処理ユニット１１０Ａ〜Ｎを解放して、ブートコードを実行し、システム１００のオペレーティングシステムを起動する。
【００１４】
メモリコントローラ１３０（複数可）は、任意の数及びタイプのメモリデバイス（複数可）に結合することができる任意の数及びタイプのメモリコントローラを表す。例えば、メモリコントローラ１３０（複数可）に結合されるメモリデバイス（複数可）のタイプは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、強誘電体ランダムアクセスメモリ（ＦｅＲＡＭ）またはその他を含むことができる。メモリコントローラ１３０（複数可）は、ファブリック１１５を介して、処理ユニット１１０Ａ〜Ｂ、Ｉ／Ｏインターフェース１２０、ディスプレイコントローラ１３５及び他のデバイス１４０（複数可）にアクセス可能である。Ｉ／Ｏインターフェース１２０は、任意の数及びタイプのＩ／Ｏインターフェース（例えば、周辺コンポーネント相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）バス、ギガビットイーサネット（ＧＢＥ）バス、ユニバーサルシリアルバス（ＵＳＢ））を表す。様々なタイプの周辺デバイスは、Ｉ／Ｏインターフェース１２０に結合することができる。係る周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティックまたは他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、ネットワークインターフェースカードなどを含む（しかしながら、それらに限定されない）。他のデバイス１４０（複数可）は、任意の数及びタイプのデバイス（例えば、マルチメディアデバイス、ビデオコーデック）を表す。
【００１５】
様々な実施形態では、コンピューティングシステム１００は、コンピュータ、ラップトップ、モバイルデバイス、サーバまたは様々な他のタイプのコンピューティングシステムもしくはデバイスのいずれかであることができる。コンピューティングシステム１００のコンポーネントの数は、実施形態によって変更することがあることに留意されたい。各々のコンポーネントは、図１に示される数よりも多いまたは少ない場合がある。さらに、コンピューティングシステム１００は、図１に示されていない他のコンポーネントを含むことがあることに留意されたい。加えて、他の実施形態では、コンピューティングシステム１００は、図１に示された以外の方式で構造化することができる。
【００１６】
ここで図２に注目すると、ファブリック２００の一実施形態のブロック図が示される。一実施形態では、ファブリック２００は、（図１の）コンピューティングシステム１００のファブリック１１５として実装することができる。一実施形態では、ファブリック２００は、不規則なトポロジに配置された複数の異なるコンポーネントを含む。いくつかの実施形態では、ファブリック２００は複数の領域に分割され、領域ごとに任意の数のコンポーネントがあり、各領域には任意のタイプのトポロジがある。一実施形態では、ファブリック２００の各領域は、異なるパワーゲーティングドメインに関連付けられている。
【００１７】
図２の左側では、ファブリック２００は、クロスバー２１０に結合されたマスタ２０５ならびにスレーブ２１５及び２２０を含む。本明細書で使用される場合、「マスタ」は、要求を生成するコンポーネントとして定義され、「スレーブ」は、要求を提供するコンポーネントとして定義される。クロスバー２１０はクロスバー２２５に結合され、クロスバー２２５はマスタ２３０Ａ〜Ｂに結合される。クロスバー２２５はクロスバー２４５に結合され、クロスバー２４５はクロスバー２５０及び２６０ならびにマスタ２５５Ａに結合される。クロスバー２５０はマスタ２５５Ｂ〜Ｃに結合され、クロスバー２６０はマスタ２６５Ａ〜Ｂ及びスレーブ２６５Ｃに結合される。図２の右端では、ファブリック２００は、スレーブ２７５及びマスタ２８０に結合されたクロスバー２７０を含む。一実施形態では、スレーブ２７５は、メモリコントローラに結合される。
【００１８】
一実施形態では、ファブリック２００の各コンポーネントは、それぞれのコンポーネントに関する情報を指定する属性を格納するためのレジスタを含む。例えば、一実施形態では、レジスタは、コンポーネントのタイプ、コマンド及びデータポートのタイプ及び数、データバス幅、クロック速度、ネイバーインスタンスＩＤ、ファブリックＩＤなどの情報、ならびに他の情報を格納する。一実施形態では、セキュリティプロセッサ（例えば、図１のセキュリティプロセッサ１４５）は、対応するレジスタに格納された情報を取得するためにファブリック２００の各コンポーネントに問い合わせを行うように構成される。次いで、セキュリティプロセッサはこの情報を利用して、ファブリック２００のネットワークグラフ及びネットワークグラフに基づいたルーティングテーブルを作成することができる。
【００１９】
ファブリック２００のコンポーネントのレイアウト、数及びタイプは、１つの実施形態を示すにすぎないことに留意されたい。他の実施形態では、ファブリック２００は、異なった方式で配置することができる、及び／または他の数及びタイプのコンポーネントを含むことができる。さらに、ファブリック２００の一部である様々なクロスバー２１０、２２５、２４５、２５０、２６０及び２７０は、スイッチまたはルータと呼ぶこともできることに留意されたい。クロスバーには、スイッチ接続と、クロスバーが受信した要求をバッファリングするバッファリングを含めることができる。クロスバーには、要求を送信元から宛先に送信するためのフロー制御メカニズムを実施するためのクレジット制御ロジックを含めることもできる。各クロスバーによって、クロスバーに結合された任意の送信元から宛先のいずれかへの接続を要求することができる。各クロスバーには、他のクロスバーへの１つまたは複数の接続も含まれ、それぞれのクロスバーに直接的には結合されていない他の宛先への要求を送信することができる。
【００２０】
ここで図３を参照すると、コンピューティングシステム３００の別の実施形態のブロック図が示される。システム３００は、少なくともセキュリティプロセッサ３０５、ファブリックブロック・インスタンスカウントレジスタ３１０、ファブリック３１５、処理ユニット３３５Ａ〜Ｎ、Ｉ／Ｏインターフェース３４０、メモリコントローラ３４５（複数可）及び図を不明瞭しないために示されていない任意の数の他のコンポーネントを含む。一実施形態では、システム３００の電源を最初に投入すると、システム３００にはファブリック３１５のトポロジまたは構造の知識が全くなく、システム３００は、起動プロセスの一部としてこのトポロジを発見するように構成される。その結果、ファブリックトポロジの発見は、同じ基本コンポーネントを使用して、様々なネットワークトポロジ及びリソースを備えた異なるタイプのシステムを構築する柔軟性を提供する。
【００２１】
一実施形態では、セキュリティプロセッサ３０５は、ファブリックブロック・インスタンスカウントレジスタ３１０に問い合わせを行い、ファブリック３１５のコンポーネント３２０Ａ〜Ｎの合計数の表示を取得するように構成される。次いで、セキュリティプロセッサ３０５は、ファブリック３１５のコンポーネント３２０Ａ〜Ｎの自動発見プロセスを開始する。セキュリティプロセッサ３０５は、ソフトウェア、ハードウェア及び／またはファームウェアの任意の適切な組み合わせを使用して実装することができる。一実施形態では、セキュリティプロセッサ３０５は、システム３００の様々なセキュリティ機能を実行するように構成された専用のマイクロプロセッサである。例えば、この実施形態では、セキュリティプロセッサ３０５は、システム３００にハードウェアベースの信頼の基点を提供するように構成される。
【００２２】
コンポーネント３２０Ａ〜Ｎは、ファブリック３１５内の任意のタイプのトポロジに配置された任意の数及びタイプのコンポーネントを表す。例えば、コンポーネント３２０Ａ〜Ｎは、クロスバー、スイッチ、ルータ、非コヒーレントマスタ、コヒーレントマスタ、非コヒーレントスレーブ、コヒーレントスレーブなどを含むことができる。コンポーネント３２０Ａ〜Ｎは、本明細書では「ブロック」と呼ばれることもあることに留意されたい。一実施形態では、各コンポーネント３２０Ａ〜Ｎは、それぞれのコンポーネントの様々なメタデータを格納する対応するレジスタ３２５Ａ〜Ｎを有する。各レジスタ３２５Ａ〜Ｎは、任意の数の属性を格納するための任意の数のレジスタまたは他のタイプの格納場所を表す。例えば、各レジスタ３２５Ａ〜Ｎは、コンポーネントのタイプ、コマンド及びデータポートのタイプ及び数、データバス幅、クロック速度、ネイバーインスタンスＩＤ、ファブリックＩＤなどを指定することができる。
【００２３】
一実施形態では、セキュリティプロセッサ３０５は、ファブリック３１５のコンポーネント３２０Ａ〜Ｎを一度に１つずつ横断するように構成される。一実施形態では、セキュリティプロセッサ３０５は、主要なデータパスを介して、ファブリック３１５のコンポーネント３２０Ａ〜Ｎに結合される。別の実施形態では、セキュリティプロセッサ３０５は、パケットがファブリック３１５を通過するときに横断する主要なデータパス接続とは異なるサイドバンド接続を介してファブリック３１５のコンポーネント３２０Ａ〜Ｎに結合される。自動発見プロセスを開始するために、セキュリティプロセッサ３０５は、セキュリティプロセッサ３０５に最も近いコンポーネント３２０Ａのレジスタ３２５Ａに問い合わせることによって開始する。次いで、セキュリティプロセッサ３０５は、コンポーネント３２０Ａのネイバーに問い合わせることにより継続する。一実施形態では、各コンポーネント３２０Ａ〜Ｎには、ファブリック３１５内で一意のＩＤが割り当てられる。
【００２４】
セキュリティプロセッサ３０５は、ファブリック３１５の末端に到達するまで、ネイバーのネイバーなどを経由してファブリック３１５を横断し続ける。セキュリティプロセッサ３０５がコンポーネント３２０Ａ〜Ｎの全てのレジスタ３２５Ａ〜Ｎからメタデータを取得した後、セキュリティプロセッサ３０５は、発見されたコンポーネントのネットワークグラフを構築するように構成される。次いで、セキュリティプロセッサ３０５は、ネットワークグラフを利用して、各コンポーネント３２０Ａ〜Ｎのルーティングテーブルを生成する。ルーティングテーブルを生成した後、セキュリティプロセッサ３０５は、受信パケットをルーティングする方法を決定するときに使用するために、ルーティングテーブルを各コンポーネント３２０Ａ〜Ｎに伝達する。
【００２５】
ここで図４を参照すると、ファブリック４１５に結合されたセキュリティプロセッサ４０５の一実施形態のブロック図が示されている。セキュリティプロセッサ４０５は、図３に関する説明において既に記載したように、ファブリック発見プロセス中にファブリック４１５のコンポーネント４２０Ａ〜Ｎのレジスタ４２５Ａ〜Ｎからコンポーネント属性４０８を取得するように構成される。コンポーネント属性４０８を取得した後、セキュリティプロセッサ４０５は、ネットワークグラフ４１０を作成して、コンポーネント及びファブリック４１５のコンポーネント相互接続のトポロジを表すように構成される。
【００２６】
一実施形態では、セキュリティプロセッサ４０５は、ネットワークグラフ４１０を利用して、ルーティングテーブル４３０Ａ〜Ｎを生成する。例えば、セキュリティプロセッサ４０５は、ネットワークグラフ４１０の所与のノードで開始することによってネットワークグラフ４１０を横断し、ここで所与のノードは所与のコンポーネントを表す。次いで、セキュリティプロセッサ４０５は、所与のノードから発生する接続を追跡しながらリーフノードに到達するまで、所与のノードからネットワークグラフ４１０を横断する。セキュリティプロセッサ４０５は、所与のノードからリーフノードへの各横断パスを利用して、所与のノードのルーティングテーブルを構築する。ルーティングテーブルを構築した後、セキュリティプロセッサ４０５は、このルーティングテーブルを用いて所与のコンポーネントをプログラムする。次いで、セキュリティプロセッサ４０５は、ネットワークグラフ４１０の他のノードに対して同様のプロセスを実行することができる。
【００２７】
例えば、セキュリティプロセッサ４０５は、ネットワークグラフ４１０を利用して、コンポーネント４２０Ａのルーティングテーブル４３０Ａを生成し、次いで、セキュリティプロセッサ４０５は、ルーティングテーブル４３０Ａをコンポーネント４２０Ａにプログラムする。ファブリック４１５を含むホストシステムの動作中、コンポーネント４２０Ａは、ルーティングテーブル４３０Ａを利用して、着信パケットをルーティングする方法を決定する。同様に、セキュリティプロセッサ４０５は、ルーティングテーブル４３０Ｂ〜Ｎをコンポーネント４２０Ｂ〜Ｎにそれぞれプログラムし、次いでコンポーネント４２０Ｂ〜Ｎは、それらの対応するルーティングテーブル４３０Ｂ〜Ｎを利用して、ホストシステムの実際の動作中に受信パケットをルーティングする方法を決定する。ファブリック４１５にはルーティングテーブルが事前にプログラムされているわけではなく、ホストシステムの初期化中に実施される自己発見プロセス中にルーティングテーブル４３０Ａ〜Ｎが生成されることを理解すべきである。
【００２８】
ここで図５に注目すると、ネットワークグラフ５００の一実施形態のブロック図が示されている。ネットワークグラフ５００は、自動発見プロセス中に検出されたファブリックのコンポーネントを表すノードを含む。一実施形態では、ファブリックのコンポーネントは、ネットワークグラフ５００の相互作用ノードとしてモデル化される。セキュリティプロセッサ（例えば、図３のセキュリティプロセッサ３０５）は、ファブリックの様々なコンポーネントの検出及び問い合わせを行い、これらのコンポーネントに関連する属性を取得するように構成される。一実施形態では、セキュリティプロセッサは、ファブリックコンポーネントの属性をテーブルのエントリに格納し、ここで各コンポーネントには個別のエントリがあり、各属性には個別の列がある。次いで、セキュリティプロセッサは、テーブルのエントリ内の取得された属性に基づいて、ネットワークグラフ５００を作成するように構成される。
【００２９】
ネットワークグラフ５００は、所与の相互接続ファブリックのコンポーネントを表すことを意図している。ネットワークグラフ５００の各ノードは、発見プロセス中に発見されたファブリックのコンポーネントを表す。例えば、図５に示すように、ネットワークグラフは、コンポーネント５１０、５１５及び５２０に結合されたコンポーネント５０５、コンポーネント５０５、５１０、５１５及び５３５に結合されたコンポーネント５２０、コンポーネント５１５に結合されたコンポーネント５３０、コンポーネント５１５に結合されたコンポーネント５２５、コンポーネント５２０に結合されたコンポーネント５３５ならびにコンポーネント５１０に結合されたコンポーネント５４０を含む。ネットワークグラフ５００を作成した後、セキュリティプロセッサはネットワークグラフ５００を利用して、ファブリックの各コンポーネントのルーティングテーブルを生成する。次いで、セキュリティプロセッサはルーティングテーブルをコンポーネントにプログラムし、受信パケットのルーティング方法を決定するときにコンポーネントがルーティングテーブルを利用できるようにする。ネットワークグラフ５００は、ネットワークグラフの単に１つの表現であることに留意されたい。他の実施形態では、セキュリティプロセッサによって他のタイプのネットワークグラフを作成することができる。
【００３０】
ここで図６に注目すると、ファブリックコンポーネント６００の一実施形態のブロック図が示されている。一実施形態では、ファブリックコンポーネント６００は、入力バッファ６０５、クロスバー６１５、出力バッファ６２０、制御ユニット６３０及び１つまたは複数のルーティングテーブル６３５を含む。入力バッファ６０５は、１つまたは複数の入力ポート６１０Ａ〜Ｎに結合される。各入力ポート６１０Ａ〜Ｎは、ファブリックの内部または外部の対応するコンポーネントに結合され、入力バッファ６０５は、入力ポート６１０Ａ〜Ｎを介して受信されたメッセージデータをバッファするように構成される。同様に、出力バッファ６２０は、１つまたは複数の出力ポート６２５Ａ〜Ｎに接続されている。各出力ポート６２５Ａ〜Ｎは、ファブリックの内部または外部の対応するコンポーネントに結合され、出力バッファ６２０は、対応するリンクのクロスバー６１５から受信されたメッセージデータをバッファするように構成される。一実施形態では、（図３の）コンポーネント３２０Ａ〜Ｎのそれぞれは、ファブリックコンポーネント６００のロジックを含む。ファブリックコンポーネント６００におけるロジック構成は、１つの特定の実施形態を表すことを理解すべきである。他の実施形態では、他の適切なロジック構成を利用することができる、及び／または他のロジックをファブリックコンポーネント６００に含めることができる。
【００３１】
一実施形態では、クロスバー６１５は、制御ユニット６３０によって提供される制御シグナリングに基づいて、入力ポート６１０Ａ〜Ｎから出力ポート６２５Ａ〜Ｎを通過するパケットを切り替えるマルチプレクサを含む。一実施形態では、制御ユニット６３０は、ソフトウェアによって指定された構成パラメータ及び１つまたは複数のルーティングテーブル６３５で表されるルーティング情報を利用して、クロスバー６１５を制御し、入力ポート６１０Ａ〜Ｎから出力ポート６２５Ａ〜Ｎへの入力メッセージデータの特定のルーティングを行う。制御ユニット６３０は、着信メッセージヘッダを検査し、ルーティングテーブル６３５のルックアップを実行して次のホップを決定し、クロスバー６１５を制御して、データを適切な出力ポート６２５Ａ〜Ｎに転送する。制御ユニット６３０はさらに、仮想チャネルを管理し、ソフトウェアによって提供される構成データごとにアービトレーション及びフィルタリングを実装し、別様には、１つまたは複数のルーティングプロトコルのコンポーネントを実装する。
【００３２】
様々な実施形態では、ルーティングテーブル６３５は、ファブリックコンポーネント６００を通過するパケットのルーティング情報を提供する。一実施形態では、ルーティングテーブル６３５は、複数のテーブルエントリとして実装され、各エントリは、送信元コンポーネントと宛先コンポーネントとの間の指定されたルーティングパスに従って、対応する宛先、ネクストホップ及びポートフィールドに関連付けられる。他の実施形態では、ルーティングテーブル６３５のエントリはさらに、代替ルート、パスの長さ、リンクエラーステータスなど、制御ユニット６３０によって使用される他のフィールドを含むことができる。ネクストホップフィールドは、マルチホップルートの次のコンポーネントのアドレスとすることができ、あるいはネクストホップが最終的な宛先である場合は宛先と同じにすることができる。様々な実施形態では、テーブル６３５のエントリは、自律的な発見プロセス中の実行時に決定される。
【００３３】
したがって、テーブル６３５は、様々なルートを実装するために、またはダイもしくはネットワークトポロジの異なる数または配置の再構成を可能にするために、書き込み可能か、別様にはプログラム可能である。様々な実施形態では、テーブル６３５は、ＲＡＭまたはフラッシュメモリなどにレジスタファイルなどの多様な構成可能ストレージ要素のいずれかを使用して実装することができる。これらの構成可能要素及び書き込み可能なテーブルエントリは、オペレーティングシステム、ハイパーバイザ、セキュリティプロセッサ、基本的な入出力システム（ＢＩＯＳ）、ファームウェアまたはそれらの組み合わせを含む、多数の要素によって管理することができる。一例として、システムの起動中に、セキュリティプロセッサ（例えば、図３のセキュリティプロセッサ３０５）は、ファブリック全体のトポロジ、コンポーネントの数及びシステム相互接続を発見した後、ルーティングテーブル６３５をプログラムすることができる。一実施形態では、物理システムの異なるバージョンと実装との間で変化する様々な数のコンポーネント及び接続によりファブリックのトポロジは事前には分からない。一実施形態では、セキュリティプロセッサは、クロスバー及び相互接続トポロジを検査して、実装されたファブリックトポロジを発見するように構成される。セキュリティプロセッサはさらに、コンポーネントを再構成して、ネットワーク及びメモリの帯域幅保証などのサービス品質ポリシを実施することができる。
【００３４】
ここで図７を参照すると、ファブリックトポロジの自動発見プロセスを実行するための方法７００の一実施形態が示されている。説明の目的上、本実施形態のステップは順番に示される。しかしながら、記載される方法の様々な実施形態では、記載される要素のうちの１つまたは複数は同時に実行され、示されるのとは異なる順序で実行されるか、または全体が省略されることに留意されたい。他の追加の要素も所望により実行されることがある。本明細書に記載される様々なシステムまたは装置のいずれも、方法７００を実施するように構成されている。
【００３５】
プロセッサ（例えば、図３のセキュリティプロセッサ３０５）は、ファブリックブロック・インスタンスカウントレジスタ（例えば、ファブリックブロック・インスタンスカウントレジスタ３１０）に問い合わせを行い、相互接続ファブリックのコンポーネントの数を決定する（ブロック７０５）。次に、プロセッサは、複数のコンポーネントの各コンポーネントに問い合わせを行い、各コンポーネントに関連する様々な属性を対応するレジスタから取得する（ブロック７１０）。様々な実施形態では、属性は、ブロックタイプ（例えば、コヒーレントマスタ、非コヒーレントマスタ、クロスバー、コヒーレントスレーブ、非コヒーレントスレーブ）、コマンド及びデータポートのタイプ及び数、データバス幅、クロック速度、ネイバーインスタンス識別子（ＩＤ）、ファブリックＩＤ及びその他の属性を含むことができる。
【００３６】
次いで、プロセッサは、取得された属性を利用して、ファブリックコンポーネントのネットワークグラフを作成する（ブロック７１５）。次に、プロセッサはネットワークグラフからルーティングテーブルを生成する（ブロック７２０）。次いで、プロセッサはルーティングテーブルをファブリックコンポーネントにプログラムする（ブロック７２５）。ルーティングテーブルでプログラムされた後、ファブリックコンポーネントはルーティングテーブルを利用して、着信パケットをルーティングする方法を決定する（ブロック７３０）。ブロック７３０の後に、方法７００は終了する。
【００３７】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、本明細書に記載される方法及び／またはメカニズムを実装するために使用される。例えば、汎用または専用プロセッサによって実行可能なプログラム命令が企図される。様々実施形態では、係るプログラム命令は、高レベルプログラミング言語として表すことができる。他の実施形態では、プログラム命令は、高レベルプログラミング言語から、バイナリ、中間または他の形式にコンパイルすることができる。代替的には、ハードウェアの挙動または設計を記述したプログラム命令を書き込むことができる。係るプログラム命令は、Ｃなどの高レベルプログラミング言語によって表すことができる。代替的には、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）を使用することができる。様々実施形態では、プログラム命令は、様々な非一時的コンピュータ可読記憶媒体のいずれかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために使用される間にコンピューティングシステムによってアクセス可能である。一般的に、係るコンピューティングシステムは、プログラム命令を実行するように構成された少なくとも１つまたは複数のメモリ及び１つまたは複数のプロセッサを含む。
【００３８】
上記の実施形態は実装の非限定的な例にすぎないことが強調されるべきである。上記の開示を十分に理解すれば、当業者には多数の変形形態及び修正形態が明らかになるであろう。以下の特許請求の範囲は、全ての係る変形形態及び修正形態を包含すると解釈されることが意図される。
【図１】
2021508963.tif 000003
【図２】
2021508963.tif 000004
【図３】
2021508963.tif 000005
【図４】
2021508963.tif 000006
【図５】
2021508963.tif 000007
【図６】
2021508963.tif 000008
【図７】
2021508963.tif 000009
【国際調査報告】
2021508963.tif 000010
2021508963.tif 000011
2021508963.tif 000012