(57)【要約】【課題】複数の機能を実行することができるコントローラのような多機能装置（ＭＦＤ）の複数の機能は、相互に完全に独立しており、そのために、各々はシステムに個別の装置として扱われる。【解決手段】一実施例において、本発明は、多機能装置から構成情報を読み取り、その構成情報に基づいてＭＦＤによって実行される機能の機能依存性の依存性ツリーを構築し、その情報はＭＦＤが他の機能に依存する少なくとも１つの機能を実行できることを示しており、その示された機能依存性に少なくとも一部分基づいて、その機能に関連するソフトウェアを順番にロードする方法を含む。他の実施例が記述され、請求される。【選択図】図１
2010016819.tif 000002
【特許請求の範囲】
【請求項１】
第１の機能および第２の機能を実行するための多機能コントローラ手段であって、前記第２の機能は、前記第１の機能に依存し、前記多機能コントローラ手段は、前記多機能コントローラ手段が他の機能に依存する少なくとも１つの機能を実行できること示す依存識別子を含むデータ構造を格納するための第１のストレージ手段を具備する、
ことを特徴とする機器。
【請求項２】
前記第１のストレージ手段は、複数のデータ構造を含み、その各々は、実行されるべき機能に関連し、かつ前記関連する機能が他の機能に依存することを示す第１のインディケータ、および、前記関連する機能が依存している機能を識別するための第２のインディケータを含むことを特徴とする請求項１記載の機器。
【請求項３】
前記データ構造における少なくとも１つのデータ構造の前記第２のインディケータは、前記第１の機能を識別するためにあることを特徴とする請求項２記載の機器。
【請求項４】
前記データ構造における他のデータ構造の前記第２のインディケータは、前記第１の機能の次に依存する前記第２の機能を識別するためにあることを特徴とする請求項３記載の機器。
【請求項５】
前記複数のデータ構造の各々は、等しい長さであることを特徴とする請求項２記載の機器。
【請求項６】
前記複数のデータ構造は、前記多機能コントローラの機能依存性を示すための逆ポインタ構造を形成していることを特徴とする請求項４記載の機器。
【請求項７】
オペレーティング・システム（ＯＳ）は、前記複数のデータ構造を読み取り、前記逆ポインタ構造に基づいて、前記第２の機能のための第２のドライバをロードする前に、前記第１の機能のための第１のドライバをロードすることを特徴とする請求項６記載の機器。
【請求項８】
前記第１のストレージ手段は、１次機能に関連する第１のデータ構造を含み、前記第１のデータ構造は前記１次機能に依存する従属機能の数の表示を格納するための第１のインディケータ、および、複数の第２のインディケータの各々が前記従属機能の１つを識別する、複数の第２のインディケータを含むことを特徴とする請求項１記載の機器。
【請求項９】
前記第１のストレージ手段は、第１の従属機能に関連する第２のデータ構造を含み、前記第２のデータ構造は、前記第１の従属機能に依存する第２の従属機能の数の表示を格納するための第１のインディケータ、および、複数の第２のインディケータの各々が前記第２の従属機能の１つを識別する、複数の第２のインディケータを含み、前記第１の従属機能は、前記１次機能に従属することを特徴とする請求項８記載の機器。
【請求項１０】
前記機器は、複数の物理的機能を含む単一のルート入出力仮想化（ＳＲ−ＩＯＶ）装置を含み、前記複数の物理的機能の各々はそれに依存する少なくとも１つの仮想機能を有することを特徴とする請求項１記載の機器。
【請求項１１】
前記データ構造は、第２の物理的機能が第１の物理的機能に依存することを識別するためにあり、その結果前記第２の物理的機能に依存する仮想機能は、次に前記第１の物理的機能に依存することを特徴とする請求項１０記載の機器。
【請求項１２】
複数の機能を実行することができる多機能装置（ＭＦＤ）から構成情報を読み取る段階と、
前記構成情報のデータ構造に基づいて前記複数の機能の少なくともいくつかの機能依存性の依存性ツリーを構築する段階であって、前記データ構造は、前記ＭＦＤが別の機能に依存する少なくとも１つの機能を実行することができることを示す依存性インディケータを含む、段階と、
前記データ構造によって示された前記機能依存性に少なくとも一部基づいて、前記複数の機能に関連したソフトウェアを順にロードする段階と、
を含むことを特徴とする方法。
【請求項１３】
ＭＦＤ動作が完了したかどうかを判断する段階をさらに含むことを特徴とする請求項１２記載の方法。
【請求項１４】
ＭＦＤ動作をロードする前記段階と逆の順番で前記ソフトウェアをアンロードする段階をさらに含むことを特徴とする請求項１３記載の方法。
【請求項１５】
前記ＭＦＤ動作は、ストレージ・エリア・ネットワーク（ＳＡＮ）データを、前記ＳＡＮ機能が依存するローカル・エリア・ネットワーク（ＬＡＮ）機能を使用して、前記ＭＦＤから前記ＭＦＤに結合された統合リンクへ通信する段階を含むことを特徴とする請求項１３記載の方法。
【請求項１６】
前記ＳＡＮ機能用のＳＡＮソフトウェアをロードする前に、前記ＬＡＮ機能用のＬＡＮソフトウェアをロードする段階をさらに含むことを特徴とする請求項１５記載の方法。
【請求項１７】
前記データ構造を読み取るために形成されたオペレーティング・システムを使用して、前記構成情報を読み取る段階、および、前記依存性ツリーを構築する段階を含むことを特徴とする請求項１２記載の方法。
【請求項１８】
命令を実行するためのプロセッサ手段と、
前記プロセッサ手段に結合されたダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）と、
前記プロセッサ手段と、ローカル・エリア・ネットワーク（ＬＡＮ）およびストレージ・エリア・ネットワーク（ＳＡＮ）の通信を運ぶための統合リンクとの間に結合された多機能コントローラ手段であって、前記多機能コントローラ手段は、ＳＡＮ機能およびＬＡＮ機能を実行し、前記ＳＡＮ機能は、前記ＬＡＮ機能に依存し、前記多機能コントローラ手段は、依存性識別子を含むデータ構造を格納するためのストレージ手段を含み、その結果前記ＬＡＮ機能に関連する第１のソフトウェアは、前記ＳＡＮ機能に関連する第２のソフトウェアに先だってロードされる、多機能のコントローラと、
を含むことを特徴とするシステム。
【請求項１９】
前記ストレージ手段は、複数のデータ構造を含み、その各々は実行されるべき機能に関連し、前記関連する機能が他の機能に依存することを示す第１のインディケータ、および、前記関連する機能が依存している前記機能を識別するための第２のインディケータを含むことを特徴とする請求項１８記載のシステム。
【請求項２０】
前記データ構造における少なくとも１つのデータ構造の前記第２のインディケータは、前記第１の機能を識別するためにあり、前記データ構造とは別のデータ構造の前記第２のインディケータは、前記第１の機能の次に依存することを識別するためにあることを特徴とする請求項１９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多機能装置内の機能的な依存性の順序付けに関する。
【背景技術】
【０００２】
従来のデータ・センター用のネットワーク施設には、ローカル・エリア・ネットワーク（ＬＡＮ）トラフィックのためのイーサネット（登録商標。以下同様。）ネットワーク、ストレージ・トラフィックのためのファイバ・チャネル（ＦＣ）ネットワーク、および、プロセス間通信（ＩＰＣ）トラフィックのためのインフィニバンド・ネットワークのような多数のネットワークがある。ファブリック・バーチャライゼーション（仮想化）とは、異なる特性を備えたこれらの多数のネットワーク（例えば、ＬＡＮ、ストレージ・エリア・ネットワーク（ＳＡＮ）、およびＩＰＣ）を、単一のネットワーク（例えば、統合イーサネット）に統合するという概念である。統合ネットワークは、論理パーティションに分割され、各パーティションは、そのネイティブ・ネットワークのオリジナル特性を保持する。統合されたファブリックに接続している物理リンクは、論理リンク（別名：バーチャル・リンク）に分割され、バーチャル・リンクは、統合ファブリック内の論理ネットワークに接続するために使用される。
【０００３】
従来のホスト・コンピュータ・システム（またはサーバ）では、個別のホスト・コントローラ（またはアダプタ）は、存在する各ネットワークに接続するために使用される。例えば、システムは、ＬＡＮトラフィックのためのイーサネット用ネットワーク・インタフェース・コントローラ（ＮＩＣ）、ストレージ・トラフィックのためのＦＣホスト・バス・アダプタ（ＨＢＡ）、および、ＩＰＣトラフィックのためのインフィニバンドのホスト・チャネル・アダプタ（ＨＣＡ）を含む。
【０００４】
与えられたＰＣＩ仕様に従ったペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）またはＰＣＩエクスプレス（ＰＣＩｅ）のようなシステムにおいて、複数の機能を実行することができるコントローラのような多機能装置（ＭＦＤ）のためのサポートが提供される。しかしながら、これら複数の機能は、相互に完全に独立しており、そのために、各々はシステム（より詳しくは、オペレーティング・システム（ＯＳ）または他の構造）に個別の装置として見える。
【発明の概要】
【０００５】
本発明の一実施例に従った統合コントローラは、単一の装置内に、ＬＡＮ、ＳＡＮ、ＩＰＣ、またはセキュリティのような複数の機能を有するＰＣＩまたはＰＣＩｅ装置（ここでは、一般に、ＰＣＩと称する。）のような多機能装置（ＭＦＤ）である。統合コントローラでは、ＬＡＮ、ＳＡＮ、およびＩＰＣ機能は、単一の装置（またはコントローラ）に集積される。すなわち、単一のカードまたは集積回路が、これらの様々な機能のサポートを含み得る。多機能統合コントローラは、従来のファブリックまたは統合されたファブリックに接続するために使用することができる。このように、個々の機能に対する個別のコントローラの必要性がなくなった。
【０００６】
ＰＣＩ  ＭＦＤコントローラの一実施例は、ＮＩＣおよびＨＢＡ機能の両方が同じ装置内に集積された、統合ＬＡＮ／ＳＡＮコントローラである。ＮＩＣは、ＰＣＩインタフェース上の個別の機能であるとみなされ、また、ＨＢＡは個別の機能であるとみなされる。ＬＡＮ機能およびＳＡＮ機能の両方からのトラフィックは、いくつかの実施例では、単一のイーサネット・ネットワーク・リンク上に統合される。このイーサネット・ネットワーク・リンクは、ファブリック統合（別名：ファブリック仮想化）によって、ＬＡＮとＳＡＮの両方のトラフィックを輸送する。
【０００７】
しかしながら、多くの状況において、ＭＦＤのＰＣＩ機能の１つまたはそれ以上は、その動作のために他の機能に依存する。典型的には、個々の機能は互いに独立して定義されるので、そのような依存性によって構成が複雑になり、適切な利用が妨げられる。すなわち、現在の仕様は、ＭＦＤコントローラ、つまり、現在のＭＦＤのためにサポートを提供するＰＣＩ仕様の場合においてさえ、このような異なる機能のための装置を独立して定義し、装置内の複数の機能が互いに独立している。上述のように、既知のコントローラは、各機能に対して独立したサポートを提供し、そして、それは、例えば、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよびイーサネット・ポートに接続されるように、典型的にはシステムの個別のリンクに関連する。したがって、現在の仕様は、互いに依存している複数の機能をサポートしていない。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施例に従って、統合型多機能装置を含むシステムのブロック図である。
【図２】本発明の一実施例に従って、統合型多機能装置を定義するための第１の方法を示す図である。
【図３】本発明の一実施例に従って、ケイパビリティ・データ構造のブロック図である。
【図４】本発明の一実施例に従って、統合型多機能装置を定義するための第２の方法を示す図である。
【図５】本発明の他の実施例に従って、ケイパビリティ・データ構造の図である。
【図６】本発明の一実施例に従って、機能依存要求を有する単一ルート入力／出力（Ｉ／Ｏ）仮想化装置（ＳＲ−ＩＯＶ）の統合コントローラを示す図である。
【図７】本発明の実施例に従った方法のフローチャートである。
【図８】本発明の一実施例に従ったシステムのブロック図である。
【発明を実施するための形態】
【０００９】
さて、図１を参照して、本発明の一実施例に従う統合ネットワーク・コントローラを含むシステムのブロック図が示される。この例において、統合コントローラ１０は、ホスト・システム２０（パーソナル・コンピュータ（ＰＣ）、サーバ、または他の同様のシステムである）に結合され、ＬＡＮ（ＮＩＣ）およびＳＡＮ（ＦＣ−ＨＢＡ）機能の両方を統合し、ファブリック３０を介して統合イーサネット・ネットワークに接続する。図１の実施例では個別のコンポーネントとして示されるが、それは、図および様々な実施例に関する理解を容易にするためであり、統合コントローラ１０がホスト・システム２０内にあってもよい。
【００１０】
ＩＰＣトラフィックのためのリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）機能、またはストレージ・トラフィックのためのインターネット・スモール・コンピュータ・システム・インタフェース（ｉＳＣＳＩ）機能のような追加の機能もまた、同一のコントローラ内で実行することができる（図１には示されていない）。さらに、図１に示されるように、システム２０は、統合リンク３５を介して統合ファブリック３０に結合されるが、それは、ファブリック仮想化のための単一の物理リンク・サポートを提供し、その結果、ＬＡＮ通信およびＳＡＮ通信の両方は、統合コントローラ１０と統合ファブリック３０との間の統合リンク３５上で伝送される。一実施例では、統合リンク３５は、複数のバーチャル・チャネルを含み、それぞれが異なるタイプのトラフィックを処理する。
【００１１】
一実施例では、統合コントローラ１０は、様々な機能をサポートするためのハードウェアを含む多機能ＰＣＩ装置（ＭＦＤ）として実施される。図のように、ホスト・バス１５上にある個別のＰＣＩ機能（Ｆ１）１４を有する、ファイバ・チャネル装置として検出されるストレージ機能、および、ホスト・バス１５上のイーサネットＮＩＣとして検出される個別のＰＣＩ機能を有するＬＡＮ機能（Ｆ０）１２のためのハードウェアが示されている。一実施例では、そのストレージは、イーサネット・ネットワーク上に保持されるので、それは、イーサネット上のファイバ・チャネル（ＦＣｏＥ）のようなイーサネット・プロトコルによるストレージを使用する。もちろん、ｉＳＣＳＩのようなイーサネット・プロトコルによる他のストレージも、同様の方法で実施することができる。
【００１２】
図１にさらに示されるように、機能１２，１４に加えて、統合コントローラ１０は、追加のハードウェアを含む。個々の機能Ｆ０およびＦ１がホストＯＳ内のソフトウェア動作を加速させるためのいくつかのオフロード（実行委託型）機能を実行するためのハードウェアを含むというものではない。いくつかの実施例では、これらは、個々の機能のための追加のハードウェアであってもよい。両方の機能は、適切な動作のために依存する共通の機能であることに注意すること。図１の実施例中で、統合コントローラ１０は、非オフロード（実行委託をしない）コントローラであるが、追加のハードウェアは、統合マルチプレクサ／デマルチプレクサ１６、およびメディア・アクセス制御（ＭＡＣ）および物理層（ＰＨＹ）、つまりＭＡＣ／ＰＨＹ１８のためのハードウェアを含む。マルチプレクサ／デマルチプレクサ１６に示される一方で、他の実施例中では、ＭＡＣ／ＰＨＹ１８および機能１２，１４へ、およびＭＡＣ／ＰＨＹ１８および機能１２，１４からの情報の流れを制御するためのスイッチまたはブリッジのような他の手段が示されてもよいことに注意すること。図１にさらに示されているように、不揮発性メモリ（ＮＶＭ）１７が存在してもよい。いくつかの実施例では、メモリ１７は、統合コントローラ１０からＯＳあるいは他のシステム・ソフトウェアに供給される構成および他の情報を格納するための格納装置の最小部分でよく、したがって与えられたシステムでコントローラの構成を可能にするためにシステムにそのケイパビリティに関する情報を提供する。以下さらに説明されるように、この情報は、本発明の実施例に従って制御を可能にするための機能的な依存情報を含んでいてもよい。
【００１３】
図１の実施例には、非オフロードのコントローラとして示されているが、他の実施例は、オフロードのコントローラで実行されてもよい。そのようなコントローラには、図１に示されるハードウェアに加えて、専用プロセッサ、例えばマイクロプロセッサ、マイクロコントローラあるいは他のプログラム可能なプロセッサのような他のハードウェアが、プログラムや他のデータの格納を保持することのできる不揮発性のメモリ、例えばフラッシュあるいは他の不揮発性メモリに加えて、存在していてもよい。
【００１４】
図１にさらに示されるように、ホスト２０は、機能１２，１４の動作を可能にするための様々なソフトウェア機能を含む。特に、図１に示されるように、ＬＡＮタイプの通信のための、アプリケーション、ＬＡＮ管理ソフトウェア、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）スタック、およびネットワーク・ドライバを含むＬＡＮソフトウェア２２が存在する。機能１２によって統合コントローラ１０を通る通信を可能にするために、そのようなソフトウェアがホスト２０のＯＳ（図１に示されず）からロードされてもよい。同様に、統合コントローラ１０の機能１４を用いて、ＳＡＮ動作を可能にするために、ホスト・システム２０は、例えば、ＳＡＮ管理ソフトウェアとともにストレージ・アプリケーション、ファイバ・チャネル・スタック、ＨＢＡドライバを含むＳＡＮソフトウェア２４を含む。図１の実施例には、特にこの実行例を示すが、本発明の範囲は、この点に関して制限されることはない。
【００１５】
統合コントローラ１０は、ホスト・バス１５上で個別のＮＩＣおよびＨＢＡ装置として検出されるので、これらの装置はそれぞれのネットワーク、および、ＯＳ内のストレージ・ソフトウェアに統合される。このように、オペレーティング・システムは、ホスト・システム２０内の対応するＮＩＣ機能ドライバおよびファイバ・チャネル機能ドライバをロードし、それぞれのプロトコル・スタック、およびそれぞれのＬＡＮおよびＳＡＮソフトウェア２２，２４に結び付ける。
【００１６】
機能間の依存性の例として、ストレージ（例えば、ＦＣ）機能がイーサネットＦＣｏＥプロトコル上で走るので、図１中の点線によって表わされるように、ストレージ機能が動作可能にされる前に、リンク３５を動作可能にすべきである。このように、ＰＨＹ／ＭＡＣ１８や統合マルチプレクサ／デマルチプレクサ１６、あるいはスイッチその他のものを含む統合コントローラ１０のハードウェアによって達成されるような共通機能は、ＦＣｏＥ機能がイネーブルにされる前に初期化され、動作可能にされるべきである。さらに、イーサネット仮想リンク構成は、統合イーサネット・ネットワーク３０に適切に接続されなければならない。
【００１７】
この実施例では、共通機能（例えば、イーサネットＭＡＣおよびＰＨＹ）は、すべてＮＩＣ機能（Ｆ０）と関係している。この機能は、１次機能と呼ばれ、１またはそれ以上の他の機能はこの機能に依存する。一旦仮想リンク構成が完成し、ＬＡＮとファイバ・チャネルのための論理的なリンクが確立されれば、ＦＣ機能（Ｆ１）は、ストレージのための対応する仮想リンクに関連させることができる。この機能は、従属機能と呼ばれ、この従属機能（Ｆ１）は、その動作のために１次機能（Ｆ０）に依存する。換言すれば、ストレージ動作が達成されるためには、ＬＡＮ機能が最初に形成され、かつイネーブルにされなければならない。図１に示される例では、ＦＣｏＥ機能は、その動作のためにＬＡＮ機能に依存する。
【００１８】
しかしながら、上述されるように、多機能装置のための現在のＰＣＩ仕様は、個々のＰＣＩ機能を定義し、ＭＦＤ中互いに独立している。それ故に、ＯＳはＰＣＩ機能を独立して扱い、任意の順にデバイス・ドライバをロードし、またはアンロードすることができ、任意の順に個々の機能上の動作を達成し、そして、このような装置が任意の順に初期化され、かつ動作可能にされると、それは、統合コントローラの適切な動作を妨げてもよい。このように、１次機能上のある動作は、別の機能の動作に影響を与えるかもしれない。
【００１９】
したがって、統合コントローラの様々な実施例では、１次機能は、従属機能が動作可能になる前に、動作可能にされる。このように、オペレーティング・システムあるいはこのような他のソフトウェアは、この依存性を検出し、従属機能をロードする前に、１次機能のドライバを最初にロードすべきである（そして動作のために１次機能を構成する）。同様に、すべての従属機能がアンロードされるまで１次機能はアンロードされるべきではない。換言すれば、１次機能は最初にロードされ、最後にアンロードされるべきである。加えて、１次機能に対するある動作（例えばリセット）は、他の従属機能の適切な動作に影響を与えるであろう。そこで、一旦この依存性が分かれば、その機能依存性制御は、従属機能の適切な動作に影響を与えずに、その動作を保証する。このような動作は、ドライバ・シーケンス（順序付け）、あるいはより一的には機能依存性制御と称される。
【００２０】
様々な実施例では、多機能装置は、ハードウェアにおける機能的な依存性を指示するためのメカニズムを有する。この指示に基づいて、オペレーティング・システムは、ＰＣＩ装置のスキャンのようなホスト・バス上のスキャンを実行している間、それぞれの機能性を読み取り、かつその機能依存性を理解し、ドライバおよび可能なら他のソフトウェアをロード／アンロードする順番を決定する。
【００２１】
その目的のために、様々な実施例では、ケイパビリティ構造が定義され、それは、ＭＦＤあるいはこのような他のコントローラがドライバ・シーケンスあるいは他の機能依存性制御が実行されるという依存機能を有していることを示す。ＰＣＩｅあるいは他の基本ケイパビリティは、図３中に図示されているように、１次および従属機能を以下明記するデータ構造で定義される。統合コントローラの実施例は、１またはそれ以上の１次機能を有することができる（例えば、マルチポート統合イーサネット・コントローラは１またはそれ以上の１次機能を有することができる）。各１次機能は、１またはそれ以上の従属機能を有することができることに注意すること。例えば、ＮＩＣ、ＦＣ−ＨＢＡ、ｉＳＣＳＩ−ＨＢＡ、およびＲＤＭＡ機能を統合する統合コントローラは、１またはそれ以上の従属機能を有するであろう。
【００２２】
ある場合には、装置にカスケードされた（縦続的な）依存性を持たせることができ、それは、従属機能が別の従属機能に依存し、それが次に１次機能に依存することを意味する。例えば、ストレージ機能（ＦＣまたはｉＳＣＳＩ）は、その動作に対してセキュリティ機能（暗号化／解読化）に依存することができ、そのセキュリティ機能は、さらにその動作に対してＬＡＮ機能に依存させることができる。したがって、オペレーティング・システムは、ＬＡＮドライバが最初にロードされ、次にセキュリティ・ドライバがロードされ、それからＦＣドライバが最後にロードされるという方法でドライバ・シーケンスを実行することができる。同様に、その逆の順序がドライバをアンロードする場合に適用される。同様に、１次機能および従属機能に関する他の機能依存性動作が他の依存性動作に影響しないように適切に実行されるべきである。
【００２３】
統合された多機能装置を定義する１つの方法が図２に示される。装置を所与のシステムに結合するためのＰＣＩｅポート１０５を具備する多機能装置（Ｄｅｖ０）１００は、２つの１次機能と複数の従属機能を有している。図２に示されるように、Ｆｎ０とＦｎ１は、１次的なイーサネット機能である。Ｆｎ２とＦｎ３は、それぞれ１次機能Ｆｎ０およびＦｎ１に依存する暗号化機能である。Ｆｎ４とＦｎ５は、暗号化機能Ｆｎ２およびＦｎ３にそれぞれ依存するストレージ機能（ＦＣｏＥ）であり、それらは次々と１次機能にカスケードされた依存性を有する。Ｆｎ６とＦｎ７は、ＩＰＣに使用されるＲＤＭＡ機能であり、それらは１次的なイーサネット機能に依存する。
【００２４】
この方法では、各機能は、図３に示されるようなデータ構造１５０中でその依存性を有する。様々な実施例では、データ構造１５０のようなデータ構造は、例えばＰＣＩ構成空間に格納される。各ＰＣＩ装置の機能は、ＰＣＩ仕様によって定義されるＰＣＩ構成空間を有することに注意すること。装置中の各ＰＣＩ機能は、装置機能の一部であるこれらの構成レジスタを実行することができる。ある場合には、外部ＮＶＭに格納されたある構成情報は、パワーオン時に構成レジスタにロードされる。パワーアップに際して、ＰＣＩ構成ソフトウェア（あるいはファームウェア）は、そのＰＣＩ構成空間を読み取り、その装置のケイパビリティを理解し、かつその装置を適切に構成するであろう。
【００２５】
各機能は、１次機能フィールド１５５を収容する関連するケイパビリティ・データ構造を有し、そのフィールドはこの機能より前に配列されなければならない機能番号を提供する。オペレーティング・システムが装置スキャンを行なっている間に、それが各機能のケイパビリティ構造を読み取るとともに依存性またはドライバ配置ツリーを構築することができるように、この方法は、逆ポインタ構造を形成する。オペレーティング・システムは、次に、適切な順序でドライバをロードまたはアンロードするために、あるいは他の機能依存性制御のためにこの依存性ツリーを使用することができる。したがって、オペレーティング・システムあるいは他のソフトウェアは、ＭＦＤ中の全ての機能をスキャンし、その依存性あるいは構成条件を理解する。図３に示されるようなケイパビリティ構造を使用することの利点は、その依存性を示すために（１つの機能当たり）必要とされる単一フィールド（例えば８ビット）だけがあるということである。
【００２６】
図３でさらに示されるように、ＳＦビットと呼ばれる従属機能インディケータ１６０は、この機能に依存する従属機能があることを示す。このビットは、１次機能、およびカスケードされた依存性を有する他の機能に対してセットされるであろう。図３にさらに示されるように、データ構造１５０は、また本装置がデータ構造中に存在する機能依存性情報を提供していること、および本装置が別の機能に依存する少なくとも１つの機能を実行することができることを示すための、拡張ケイパビリティ識別子フィールド１６５を含む。またさらに、データ構造１５０は、ケイパビリティ・バージョン・フィールド１７０を含み、それによって本装置のケイパビリティに関するバージョンあるいは他の情報を確認することができる。またさらに、データ構造１５０は、次のケイパビリティ・オフセット・フィールド１７５を含み、それは次のケイパビリティへのオフセット、つまりデータ構造１５０の構成に類似する１またはそれ以上のデータ構造に存在する機能依存性情報以外のケイパビリティへのオフセットを示す。
【００２７】
統合した多機能デバイスを定義する別の方法が図４に示されている。多機能装置（Ｄｅｖ０）１００は、本装置を所与のシステムに結合するためのＰＣＩｅポート１０５を具備しており、２つの１次機能および複数の従属機能を有する。Ｆｎ０とＦｎ１は、１次的なイーサネット機能である。Ｆｎ２とＦｎ３は、１次機能Ｆｎ０，Ｆｎ１にそれぞれ依存する暗号化機能である。Ｆｎ４とＦｎ５は、暗号化機能Ｆｎ２，Ｆｎ３にそれぞれ依存するストレージ機能（ＦＣｏＥ）であり、それらは次々と１次機能にカスケードされた依存性を有する。Ｆｎ６とＦｎ７は、１次的なイーサネット機能に依存するＩＰＣに使用されるＲＤＭＡ機能である。
【００２８】
この方法では、各機能は、図５に定義されるようなデータ構造に示されるようなフォーワードの依存性を有している。図５に示されるように、１次機能はすべての依存した機能のリストを提供し、それによって、機能をディセーブルにする際の順番または依存性条件を識別することが容易である。各機能は、この機能に依存する機能番号を提供するケイパビリティ・データ構造を有している。カスケードされた依存性は、その１次機能によって間接的に示される。これによって、ソフトウェアあるいはオペレーティング・システムは、そのカスケードされた依存性を決定するためにすべての機能をスキャンするべきである。
【００２９】
本発明の別の実施例に従うケイパビリティ構造が図５に示される。図５に示されるように、ケイパビリティ構造２００は、同じヘッダー・フィールドを有し、それは、拡張ケイパビリティ識別子１６５、ケイパビリティ・バージョン１７０、および次のケイパビリティ・オフセット・フィールド１７５を含む。加えて、ケイパビリティ構造２００は、多くの従属機能フィールド２０５（８ビットであってもよい）を含み、それは、所与の機能に依存する従属機能の総数を示す。１次機能中の従属機能フィールドの総数は、カスケードされた機能を含む依存する機能すべてを含むであろう。カスケードされた機能がさらに従属機能を有する場合、このフィールドは、そのカスケードされた機能のみに依存する、従属機能の総数を含むであろう。このチェーンは、すべての従属機能のために継続するであろう。したがって、さらに依存する機能を有していない機能は０という数の従属機能フィールド２０５を有するであろう。加えて、複数の従属機能フィールド２１０ｘ（その各々は、一実施例では、８ビットでもよい）は、カスケードされた機能を含む従属機能の機能番号を示す。別の実施フィールド２１０では、１次機能に直接依存する機能のみを含めることができ、カスケードされた依存性を有する従属機能は、リンク・リストの役割をするように、それに依存する機能を含むであろう。そのソフトウェアまたはファームウェアは、カスケードされた依存性を決定するために機能すべてをスキャンするので、いずれの方法でもそれは完全な依存性ツリーを構築することができる。一実施例では、機能に依存する最大２５６までの従属機能となるであろう。別の実施例は、構成空間を保存するために従属機能（個々のフィールドに代えて）を示す２５６ビットのビット・マスクを有する。上述されるように、そのソフトウェアまたはオペレーティング・システムは、ＭＦＤ中の機能すべてをスキャンし、カスケードし、順番に並べる条件を理解する。
【００３０】
統合コントローラは、また単一のルート入出力（Ｉ／Ｏ）仮想化装置（ＳＲ−ＩＯＶ）として実行することもできる。さらに、ドライバのシーケンス条件および上述された機能依存性を定義するための方法は、ＳＲ−ＩＯＶ装置に対しても適用可能である。図６は、シーケンス条件を有するＳＲ−ＩＯＶ統合コントローラ２５０の図を提供する。
【００３１】
ＰＣＩｅ  ＳＲ−ＩＯＶの仕様は、定義された機能依存性を有するが、異なる目的のために使用される。このＳＲ−ＩＯＶの機能依存性は、仮想機能（ＶＦ）の割り当ての間に機能グループを形成するために使用され、同数のＶＦがそのグループ中の物理的機能（ＰＦ）すべてに割り当てられる。さらに、それはＰＦ全域のグループ中のＶＦがともに割り当てられることを示すためにも使用される。
【００３２】
ここに記述された機能依存性制御とドライバ・シーケンスは、ＳＲ−ＩＯＶの機能依存性に直交しており、また、双方に対する実施例は、互いに共存するために提供することができる。上述のように、本発明の実施例に従うドライバ・シーケンスは、従属機能が活性化されるべき前に活性化されるべき１次機能を示すことができる。上述されたシーケンス問題は、さらに、図６に描かれているようなリンクに結合されるべきポート２５５を含む終了点２５０のＳＲ−ＩＯＶの物理的機能に当てはまる。各タイプ２６０ａ−２６０ｃ（属として２６４）の仮想機能（ＶＦ）２６４ｘは、暗に同じタイプの物理的機能（ＰＦ）２６２ｘ（属として２６２）からの依存性を仮定しており、それ故にＶＦ２６４は、１次ＰＦ２６２が動作可能となった後に、順番が決められるであろう。図６では、ＰＦ１  ２６２ｂはＰＦ０  ２６２ａに依存し、すなわち、ＰＦ１  ２６２ｂ中のＶＦすべては、ＰＦ０  ２６２ａ上に暗黙的な依存性を有するであろう。それ故に、ドライバの順序付けは、ＰＦ１  ２６２ｂ中のＶＦのいずれかがサービスされる前に、ＰＦ０  ２６２ａを動作可能とする方法で達成されるべきである。依存グループ内のＶＦは、任意の順でサービスされ、さらに、従属機能中のＶＦの数は、１次機能の数と同じである必要はない。物理的機能および仮想機能間の依存性は、例えば、図３および図５に関して上述されたようなケイパビリティ・データ構造を使用して識別することができる。
【００３３】
このように実施例では、ファイバ・チャネルＨＢＡやＬＡＮ  ＮＩＣのようなコントローラの統合が同じＰＣＩ装置へ集積されることにより可能となる。これらのコントローラは、多機能のＰＣＩ装置として実施することができる。このように、多機能の統合コントローラは、ＬＡＮおよびストレージ・アプリケーション用の既存のソフトウェア・アーキテクチャに適合することができ、ＬＡＮやＳＡＮ装置用の既存の管理フレームワークを保持することができる。同様に、統合コントローラは、ＩＰＣトラフィック用のＲＤＭＡ機能あるいは他の機能を有することができる。
【００３４】
この目的のために、統合ＰＣＩ多機能装置は、その依存性やドライバの順序付けあるいは他の機能依存性の制御条件を定義することができる。本発明の実施例に従うデータ・ケイパビリティ構造を使用することにより、オペレーティング・システムあるいは他のソフトウェアは、統合コントローラを実行するために使用されるＭＦＤに気が付かされるであろう。このように、ＯＳは、多機能の統合ネットワーク・コントローラを適切に初期化し管理することができる。
【００３５】
さて、図７を参照して、本発明の実施例に従う方法のフローチャート図が示される。図７に示されるように、方法３００は、ＯＳまたは他のシステム・ソフトウェアあるいはファームウェアによって使用され、本発明の実施例に従って多機能コントローラから構成情報を得て、ＭＦＤによって達成されるべき依存する機能の実行のための様々なソフトウェアのロードおよびアンロードを制御することができる。図７に示されるように、方法３００は、ＭＦＤ（ブロック３１０）から構成情報を読み取ることから開始する。ＰＣＩ実行例では、そのような構成情報は、ＰＣＩ構成のサイクルを使用して獲得でき、このようにＭＦＤ中に存在するそのケイパビリティに関する様々な情報を得ることができる。この情報は、上述のようにケイパビリティ・データ構造を含めてもよい。
【００３６】
さらに図７を参照して、次に、その構成情報が１またはそれ以上の機能依存性データ構造（判断３２０）を含むかどうかが決定される。もし含まない場合、方法３００は、ＭＦＤがそのような機能依存性制御に対するサポートを有していないとして、終了する。代わりに、そのようなデータ構造が存在する場合、制御はブロック３３０へ進む。ブロック３３０では、ＭＦＤ中で行なうことができる個々の機能に関連したデータ構造が読み取られる。様々な実施例では、これらのデータ構造は、図３および図５に関して上述されたものに類似する。このように、ＯＳは、これらのデータ構造（ブロック３４０）に基づいて依存ツリーを構築することができる。いくつかの実施例では、依存ツリーは、フォーワードベースのポインタ構造であってもよいが、他の実施例では、上述されるように、その依存性ツリーは、逆ベースのポインタ構造でもよい。
【００３７】
次に、ブロック３５０では、様々なドライバおよび／または他のソフトウェアは、ＯＳによってデータ構造情報によって示される機能依存性に従って順にロードされる。例えば、ＬＡＮ機能および依存ＳＡＮ機能の実行に際して、ＬＡＮ機能に関連するソフトウェアが最初にロードされ、その結果ＳＡＮ機能用のソフトウェアのロードに先立ってＬＡＮ機能がイネーブルにされる。このように、ＳＡＮ機能が実行される場合、完全なソフトウェア・サポートが存在する。
【００３８】
さらに、図７を参照して、判断３６０では、ＭＦＤ動作が終了したかどうかが決定される。もし終了していない場合、ＭＦＤによって実行される様々な動作が継続する。実行中に他の動作が機能依存性によって実行されるかもしれないことに注意すること。例えば、リセットの動作機能、あるいはスイッチ、ＭＡＣ、あるいはＰＨＹのような共有リソースに対する動作モードの修正が生じるかもしれない。そうでない場合、ＭＦＤ動作の終了で、制御はブロック３７０に進み、ドライバおよび／または他のソフトウェアがそれらのロードと逆の順序でアンロードされる。このように、１次的なソフトウェアがアンロードされる前に、依存するソフトウェアは最初にアンロードされる。図７の実施例中で特にこの実行例が示されたが、本発明の範囲はこの点に関して制限されることはない。
【００３９】
本実施例は、様々なシステムのタイプ中で実行ことができる。図８を参照して、シリアル・リンクを経由してコントローラ・ハブに結合された装置を含む本発明の一実施例に従うシステムのブロック図が示される。システム４００は、コントローラ・ハブ４１５に結合されたプロセッサ４０５、およびシステム・メモリ４１０を含む。プロセッサ４０５は、マイクロプロセッサ、ホスト・プロセッサ、埋め込みプロセッサ、コプロセッサ、あるいは命令を実行する他のプロセッサのようなあらゆる処理要素を含む。プロセッサ４０５は、フロント・サイド・バス（ＦＳＢ）４０６を通ってコントローラ・ハブ４１５に結合される。一実施例では、ＦＳＢ４０６は、下記のようなシリアルのポイントツーポイント（ＰｔＰ）の相互接続である。
【００４０】
システム・メモリ４１０は、ランダム・アクセス・メモリ（ＲＡＭ）、不揮発性（ＮＶ）メモリ、あるいはシステム４００中の装置によってアクセス可能な他のメモリのようなあらゆるメモリ装置を含む。システム・メモリ４１０は、メモリ・インタフェース４１６を通ってコントローラ・ハブ４１５に結合される。
【００４１】
一実施例では、コントローラ・ハブ４１５は、ＰＣＩｅ相互接続階層中のルート・ハブかルート・コントローラでよく、一実施例では、ＳＲ−ＩＯＶコントローラであってもよい。コントローラ・ハブ４１５の例は、チップセット、メモリ・コントローラ・ハブ（ＭＣＨ）、ノースブリッジ、入出力コントローラ・ハブ（ＩＣＨ）、サウスブリッジ、およびルート・コントローラ／ハブを含む。ここで、コントローラ・ハブ４１５は、シリアル・リンク４１９を通ってスイッチ／ブリッジ４２０に結合される。入出力モジュール４１７，４２１は、インタフェース／ポート４１７，４２１とも称されるが、コントローラ・ハブ４１５とスイッチ４２０との間の通信を提供するために階層状のプロトコル・スタックを含むとともに実行する。一実施例では、複数の装置をスイッチ４２０に結合することができる。プロセッサとチップセットを同じパッケージに集積した実施例を実装してもよい。さらに、この技術は、新しいバージョンのＰＣＩｅプロトコルを必要とせず、とりわけ１．１と互換性をもつ装置であるＰＣＩｅ２．０によって実行することができる。このように、本実施例は、ＰＣＩｅ相互接続が通信に使用されるところはどんな場所でも使用することができる。
【００４２】
スイッチ４２０は、パケット／メッセージを装置４２５から上流に、つまりコントローラ・ハブ４１５へ上部の階層へ、および装置４２５から下流に、つまりコントローラ・ハブ４１５から下流の階層へ経路付ける。ＩＯモジュール４２２，４２６は、階層状のプロトコル・スタックを実行し、スイッチ４２０と装置４２５との間で通信する。装置４２５は、本発明の実施例に従うＭＦＤであってもよい。統合機能の例として、ＩＯ装置４２５は、とりわけＬＡＮ，ＳＡＮ，ＩＰＣ用の機能性を実行するためのハードウェアを含み、統合イーサネット・ファブリックのようなネットワークへの結合を提供する。
【００４３】
グラフィック・アクセラレータ４３０もシリアル・リンク４３２を通ってコントローラ・ハブ４１５に結合される。一実施例では、グラフィック・アクセラレータ４３０は、ＭＣＨに結合され、それはＩＣＨに結合される。スイッチ４２０、したがって、その後ＩＯ装置４２５はＩＣＨに結合される。さらに、ＩＯモジュール４３１，４１８は、グラフィック・アクセラレータ４３０とコントローラ・ハブ４１５との間で通信するための階層状のプロトコル・スタックを実行する。
【００４４】
本実施例は、コードで実行されるが、ストレージ媒体上に格納され、その上に格納された命令は、その命令を実行するシステムをプログラムするために使用される。ストレージ媒体は、フレキシブル・ディスク、光ディスク、読み出し専用コンパクト・ディスク・メモリ（ＣＤ−ＲＯＭ）、再書き込み可能コンパクト・ディスク（ＣＤ−ＲＷ）、および光磁気ディスクを含む任意のタイプのディスク、リード・オンリ・メモリ（ＲＯＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなランダム・アクセス・メモリ（ＲＡＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ）、フラッシュ・メモリ、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）のような半導体素子、磁気光学カード、あるいは電子命令を格納するためにふさわしいあらゆる他のタイプの媒体を含むが、これらに制限されることはない。
【００４５】
本発明は、限られた数の実施例に関して記述されているが、当業者は多くの修正および変更を実施例から認識することができるであろう。添付された請求項は、この本発明の真の思想および範囲内のものとして、このような修正および変更をすべて包含すると意図される。
【符号の説明】
【００４６】
１０  統合コントローラ
１２  ＬＡＮ機能（Ｆ０）
１４  ＰＣＩ機能（Ｆ１）
１５  ホスト・バス
１６  統合マルチプレクサ／デマルチプレクサ
１７  不揮発性メモリ（ＮＶＭ）
１８  ＭＡＣ／ＰＨＹ
２０  ホスト
２２  ＬＡＮソフトウェア
２４  ＳＡＮソフトウェア
３０  統合イーサネット・ネットワーク
３５  統合リンク
【図１】
2010016819.tif 000003
【図２】
2010016819.tif 000004
【図３】
2010016819.tif 000005
【図４】
2010016819.tif 000006
【図５】
2010016819.tif 000007
【図６】
2010016819.tif 000008
【図７】
2010016819.tif 000009
【図８】
2010016819.tif 000010
【外国語明細書】
2010016819000001.pdf