図および以下の記述は、本発明の特定の一例としての実施形態を示している。本明細書に明示的に記述または図示したりしていなくても、当業者は、本発明の原理を具体化し、本発明の範囲に含まれる様々な配置を考案できることは自明であろう。さらに、本明細書に記述した例はいずれも、本発明の原理を理解することを支援することを意図するものであり、そのような具体的に列挙された例および条件に限定されないものと解釈するべきである。その結果、本発明は、以下に記述する特定の実施形態または例に限定されるものではない。
図1は、SASドメイン100を通じてPCIeデータをトンネリングする一例としてのデータ・システムを示すブロック図である。この実施形態では、SASドメイン100は、PCIe対応SASエキスパンダ(PCIe/SASエキスパンダ101)、従来のSASエキスパンダ102、およびPCIe対応SASコントローラ(PCIe/SASコントローラ104)を通じてPCIeホストシステム105に結合された他のPCIe対応SASエキスパンダ(PCIe/SASエキスパンダ103)で構成されている。エキスパンダ102は、エキスパンダ101と103との間に結合され、SASプロトコルを介して複数のSASターゲット・デバイス110に接続するように動作可能である。PCIe/SASエキスパンダ101および103は両方、PCIeプロトコルを介してPCIeターゲット・デバイス111と、およびSASプロトコルを介してSASターゲット・デバイス110(および他のSASエキスパンダ102)と接続し通信するように動作可能である。PCIe/SASコントローラ104とPCIe/SASエキスパンダ101/103との組み合わせにより、データ・システム100は、SASプロトコルを通じてPCIeパケット・データをトンネリングすることによって、SASドメイン100を通じて、PCIeホストシステム105とPCIeターゲット・デバイス111との間で、PCIeパケット通信を転送することが可能になる。PCIe/SASコントローラ104は、また、PCIeホストシステム105から適切なSASターゲット・デバイス110にデータをルーティングするために、PCIeデータをSASに変換する。一実施形態では、ポート・レイヤおよびPCIe/SASコントローラ104のPCIe/SASインターワーキング・イニシエータ(より詳細には下に記述)を通じてPCIeパケットが流れることを可能にする方法で、複数のPCIeターゲット・デバイス111がPCIe/SASコントローラ104に直接的に接続されているため、PCIe/SASコントローラ104内に単独でトンネリングを提供することができる。
PCIeターゲット・デバイス111およびSASターゲット・デバイス110の例は、ディスク・ドライブおよびソリッド・ステート・ドライブ(SSD)などのストレージデバイスを含む。この点で、ターゲット・デバイス110および111は、PCIeホストシステム105に代わってデータの記憶を提供することができる。また、PCIeホストシステム105は、エキスパンダ101、102、および103のSASドメイン100を通じてターゲット・デバイス110および111のいずれかとの入力/出力(I/O)動作のためにPCIeプロトコルを介して読み取り/書き込み要求を構成することができる。PCIeホストシステム105は、たとえば、サーバ、ワークステーション、パーソナル・コンピュータなどを含む、PCIeプロトコルを介してI/O操作を実行するように動作可能な任意の適切なコンピューティング・デバイスまたはシステムでもよい。
PCIe/SASコントローラ104は、デバイス検出を実行し、ターゲット・デバイス110および111のデータを管理し、そのデータに向けられたI/Oコマンドを処理するように動作可能な任意のデバイス、システム、ソフトウェア、またはそれらの組み合わせである。たとえば、PCIe/SASコントローラ104は、カスタム構成の回路として、関連するプログラム・メモリに格納されているプログラムされた命令を実行する専用または汎用のプロセッサとして、またはそれらの何らかの組み合わせとして実装することができる。PCIe/SASコントローラ104は、独立したSASデバイス、ホストのホスト・バス・アダプタ(HBA)、またはPCIeホストシステム105の統合されたコンポーネントでもよい。
PCIe/SASコントローラ104は、PCIeプロトコルを介してPCIeホストシステム105にパケット・データを結合し通信するように構成されたフロントエンド・インターフェース(以下により詳細に図示および記述)を含む。PCIe/SASコントローラ104は、また、PCIeデバイス(たとえばPCIe/SASエキスパンダ101および103、ならびにPCIeターゲット・デバイス111)およびSASデバイス(たとえばSASターゲット・デバイス110およびSASエキスパンダ102)の両方に結合しサポートするように構成されたバックエンド・インターフェース(以下により詳細に図示および記述)を含む。たとえば、PCIe/SASコントローラ104は、PCIe制御、SAS接続のクレジット管理、ならびにエキスパンダ101および103など複数のリモート/SASエキスパンダをサポートするためのバッファリングを提供する。PCIe/SASコントローラ104は、また、SASドメイン100を介してアクセス可能なPCIeターゲット・デバイス111のルート・コンプレックスとして機能する。PCIe/SASコントローラ104は、SASドメイン管理において下流に接続されたターゲット・デバイス110および111支援のPCIeシステム・エニュメレーションを実行する。
SASエキスパンダ102は、SASプロトコルを介してコネクション型データ転送を提供するように動作可能な任意のデバイス、システム、ソフトウェア、またはそれらの組み合わせである。この点で、SASエキスパンダ102は、複数の物理的な送受信装置すなわち「Phy」を介して、SASターゲット・デバイス110および他のエキスパンダなど、他のSASコンポーネントに接続することができる。PCIe/SASエキスパンダ101および103は、SASターゲット・デバイス110、接続されたPCIeデバイス111、SASエキスパンダ102、および他のPCIe/SASエキスパンダをサポートし通信するように動作可能な任意のデバイス、システム、ソフトウェア、またはそれらの組み合わせである。この点で、PCIe/SASエキスパンダ101および103はそれぞれ、ターゲット・デバイス110および111にPCIeおよびSASの両方のトラフィックをそれぞれサービスするために、複数のSAS Phy/PCIeリンクを持っている(以下により詳細に記述)。PCIe/SASエキスパンダ101および103は、PCIe制御、デバイス・クレジット管理、および複数のPCIeデバイス111をサポートするためのバッファリングを提供するように動作可能である。PCIe/SASエキスパンダ101および103は、また、SASエキスパンダ102に標準SASインターフェースを提供し、エキスパンダ102および他のSASデバイス(たとえばSASターゲット・デバイス110)と通信するように動作可能である。
SASドメイン100は、特定数のPCIe/SASエキスパンダ、従来のSASエキスパンダ、PCIeターゲット・デバイス、およびSASデバイスに関して図示し記述されているが、本発明は、SASプロトコルによって限定できること以外に、SASドメイン100において特定数のコンポーネントであることを意図していない。データ・システムの特定の運用上の詳細、より明確にはSASドメイン100について、図2のフローチャートに関してここに記述する。
図2は、SASドメイン100を通じてPCIeデータをトンネリングするための一例としてのプロセス200を示すフローチャートである。この実施形態では、PCIeターゲット・デバイス111は、SASエキスパンダにリンクされ(プロセス要素201)、エキスパンダは、PCIe/SASコントローラ104にリンクされる(プロセス要素202)。すでに述べたように、PCIe/SASコントローラ104は、PCIeホストシステム105に代わってPCIeデータパケットを転送するように、(PCIeホストシステム105の一部として、またはPCIeホストシステム105とは別に)PCIeホストシステム105にリンクされる。したがって、PCIeコンポーネントのエンドポイントを有する(たとえば、PCIe/SASコントローラ104を通じてPCIe/SASエキスパンダ103までの、またはPCIe/SASコントローラ104を通じてPCIe/SASエキスパンダ101までの)SASドメイン100が確立される。
プロセス要素203において、SASドメイン100のSASコンポーネントの1つは、PCIe/SASコントローラ104とSASエキスパンダとの間のSAS接続を開く。たとえば、PCIeターゲット・デバイス111の1つは、PCIeベースのデータパケットをPCIeホスト105に転送する必要がある場合がある。したがって、PCIeターゲット・デバイス111は、PCIe/SASコントローラ104との接続を開くようにPCIe/SASエキスパンダ101/103に指示することができる。あるいは、PCIeホストシステム105は、PCIeベースのデータパケットをPCIeターゲット・デバイス111に転送する必要がある場合がある。次に、PCIeホストシステム105は、ターゲット・デバイス111へのSAS接続を開くようにPCIe/SASコントローラ104に指示することができる。いずれの場合でも、PCIeデータパケットの転送を達成するためにSAS接続を開くことができるようなときまで、PCIeデータパケットは、SAS接続のエンドポイントで、プロセス要素204において、PCIe/SASコントローラ104またはPCIe/SASエキスパンダ101/103でバッファリングされる。
SAS接続のエンドポイント間でデータパケットを転送する前に、PCIe/SASコンポーネント(つまりコントローラ104またはエキスパンダ101/103)は、プロセス要素205において、SAS接続を通じて転送されることになっている複数のPCIeデータパケットを発行する。たとえば、PCIeプロトコルはコネクションレス型のデータ転送プロトコルであるため、それらが適切なPCIeエンドポイントに到着することを保証するために、PCIeデータパケットはSAS接続を通じて追跡される。一実施形態では、SAS接続の各エンドポイントは、PCIeプロトコルのデータ・リンク・レイヤ・パケット(DLLP)を介して次のバッファリング・ノードで(たとえば利用可能なバッファ・スペースを表す)利用可能なクレジットの量を転送するため、データパケットのクレジット管理は、SAS接続のエンドポイントで扱うことができる。
接続が確立され複数のPCIeデータパケットが監視されている状態で、プロセス要素206において、PCIeプロトコルを介してSAS接続を通じてターゲット・デバイス111とPCIeホストシステム105との間で発行された複数のデータパケットを伝送するために、SAS接続の各エンドポイントは、エンドポイントのバッファからPCIeトランザクション・レイヤ・パケット(TLP)を取得することができるため、SAS接続を通じてPCIeトラフィックをトンネリングすることができる。SASドメイン100を通じたPCIeトンネリングの実装に関する追加的な詳細については、以下の実施形態において図示し記述している。
図3は、PCIeデータパケットをトンネリングするためにSASデバイス間にSAS接続を確立するように動作可能なSASリンクを示す一例としてのブロック図である。個々のSAS接続および関連するデータ転送は、「x1」Phy幅で発生する一方、PCIeは、論理的な相互接続を促進するために使用される「x1」、「x2」、「x4」以上の実際のPhyを持つことができる。図1のSASドメイン100内の接続は、本明細書に示すようなトラフィックの動的な混合物を伝送するように動作可能である。この例では、PCIeおよびSASのトラフィックの混合物が4つのphyのSASワイドポートで運ばれる。
典型的なSAS接続プロトコルは、応じてOpenAccept(OA)を受信するOpen Address Frame(OAF)を用いて生じるため、SASリンク250に示すようにSAS接続が確立される。SAS接続が開かれると、SASデータ・フレームまたはPCIeデータパケット、および関連する制御が、開かれたSAS接続内で交換される。SASリンク250、251、および253に示すように、CLOSEプリミティブが交換されると、SAS接続はその後に閉じ、接続にサービスを提供しているすべてのエキスパンダにルートを破棄するように促す。
この例では、また、異なる4つのプロトコルを示している。SASリンク250のシリアルSCSIプロトコル(SSP)、SASリンク253のシリアルATAトンネル型プロトコル(STP:Serial ATA Tunneled Protocol)、SASリンク250のシリアル管理プロトコル(SMP:Serial Management Protocol)、およびSASリンク250および253のPCIeトンネル型プロトコル(PTP:PCIe Tunneled Protocol)である。より具体的には、SASリンク250は、SSPを介したSAS接続の開放を示しているため、SSPフレームおよびプリミティブは、エンドポイント間で転送することができる。その接続が閉じられた後、SASコンポーネント(たとえばエキスパンダ101/103および/またはPCIe/SASコントローラ104)は、PTPを介してSAS接続を開くように動作可能であるため、PCIeデータパケットは、PCIeプロトコルのトランザクション・レイヤ・パケット(TLP)およびデータ・リンク・レイヤ・パケット(DLLP)を介して転送することができる。PCIeデータパケットが転送された後、SAS接続は閉じられ、この場合、SMPを介して他のデータ転送に利用可能である。
SASリンク251は、PCIeデータパケットがPTPを介してSAS接続を通じて転送される同様の実施形態を示している。ここでは、PTPは接続を開き閉じ、その後、SASリンク251でのSSP接続を可能にする。
SASリンク252は、PTPを介してPCIeデータ・トラフィックを提供するために完全に占有される。たとえば、PCIe帯域幅の静的割り当てが望まれる場合、PCIeパケットを転送するために確立されたSAS接続は、パーシステント・コネクションでもよい。PTPは、一部の追加的な能力を用いてレガシOAFを活用することによって、SASエキスパンダ102など、中間のレガシSASエキスパンダを含むSASドメインで動作することができる。たとえば、PTP接続は、OAFに互換性を持つ機能フィールドを備えたレガシSTPプロトコルを使用して開き、トンネリングのタイプをPTPとして識別することができる。SAS CLOSEプリミティブがSAS接続の接続エンドポイント間で交換されるのを待っている間にSAS接続が開かれると、単にDWORDSを転送するだけなので、中間のエキスパンダは、この場合、正常として動作する。
SASリンク253は、PTPでのSAS接続の同様の開閉、STPに対するSAS接続の開閉を示している。したがって、SASリンクは、特定のプロトコルに限定されない。すなわち、本明細書のSASリンクは、SASドメイン100を通じてPCIeトラフィックを占有するために使用でき、かつ/または任意の特定のリンクを通じてSAS接続のSAS開閉を通じてSSP、STP、SMP、およびPTPを介したデータ・トラフィックの他の形式を含むことができる。
図4は、図1に同様に示したようなSASドメイン100を通じた一例としてのPCIeトンネリングを示すブロック図である。この図は、TLPデータ・ストリーム303のPCIe TLPは、末端のPCIeデバイス301間を流れる一方、PCIe DLLPは、DLLPパケット・ストリーム304−1および304−3のネイティブのPCIeリンクを横断し、DLLPパケット・ストリーム304−2を通じてトンネリングされることを示している。図示するために、SASドメイン100は、PCIe/SASエキスパンダ101、1対のSASエキスパンダ102−1および102−2、ならびにPCIe/SASコントローラ104で構成される。SAS接続は、経路304−2に対応する全体的なPCIeパケット経路310について、上記のようにSASプロトコルのOAFおよびOAを使用して確立される。PCIeエンドポイント301は、PCIe/SASコントローラ104に結合されるPCIeホストシステム105、およびPCIe/SASエキスパンダ101に結合されるPCIeターゲット・デバイス111によって確立される。SASドメイン接続エンドポイント302は、エキスパンダ101、エキスパンダ102、およびコントローラ104のSASコンポーネントを通じてSAS接続に基づいて確立される。
すでに述べたように、SASドメイン100を通じてPCIeトンネリングを実装するために、PCIeデータパケットは、SASドメイン100の接続エンドポイント302でバッファリングすることができる。次に、PCIeプロトコルのDLLPパケットは、PCIeプロトコルのTLPデータパケットを追跡するために使用することができる。たとえば、PCIeプロトコルは、TLPおよびDLLPの両方を提供する。DLLPパケット・ストリーム304−1、304−2、および304−3は、それらの対応する接続エンドポイント301でPCIeターゲット・デバイス111とPCIe/SASコントローラ104との間のTLPデータ・ストリーム303でTLPデータパケットを追跡するために、様々な接続エンドポイント301および302でPCIeパケット経路310に沿って構成することができる。TLPは、エンド・ユーザー・データ送信をサポートする一方、DLLPパケットは、フロー制御を管理し、TLPを承認するためにPCIeリンク機能間で使用される。図4は、ネイティブのPCIe経路エンドポイント301間の途中でPCIeパケット経路310のTLPデータ経路303に沿ったSASドメイン100をTLPがどのように通過し、一方、DLLPは、SASドメイン100のSAS接続エンドポイント302でどのように終了するかを示している。
PCIeパケットがSASドメイン100を通過するときに、PCIeフロー制御およびTLP承認を管理するために、独立したDLLPパケット・ストリーム304−2が、PCIe/SASエキスパンダ101とPCIe/SASコントローラ104との間のPCIeパケット経路310のSAS接続部分を通じて交換される。単一のTLPパケット・ストリーム303が示されているが、単一のSAS接続を通じて、複数のTLPパケット・ストリームをサポートすることができ、典型的にはサポートされている(たとえば、複数のPCIeターゲット・デバイス111に1つのSAS接続でサービスを提供することができる)。同様に図1に図示するように、複数のTLPパケット・ストリームは、PCIe/SASエキスパンダ101および103のいずれかに接続されたターゲット・デバイス111のPCIe/SASのアグリゲーションを用いて実装することができる。
適切なTLPシーケンス番号の置き換えが、PCIe/SASエキスパンダ101およびPCIe/SASコントローラ105のPhy/Linkレイヤ内に発生する。さらに、PCIe「リプレイ」バッファは、DLLPパケット・ストリーム304−2に沿ってDLLPエンドポイント302のそれぞれで構成することができる。これらのリプレイ・バッファは、従来のPCIeセグメントを横断して、ならびにPCIeパケット経路310で失われたまたはエラーが生じたTLPに対して呼び出すことができる。あるいは、図5に示すように、DLLPの終了および関連するPCIeのリプレイ・バッファは、DLLPパケット・ストリーム304−2に沿って中間のPCIe/SASエキスパンダ103で実装することができる。たとえば、PCIeプロトコルは、移動されたすべてのTLPを承認する。TLPの宛先ノードがTLPにおいてエラーを検出した場合(たとえば不適切なCRC、不適切な記号など)、宛先ノードは、ACK DLLPではなく、ソース・ノードにNAK DLLPを送り返す。ソース・ノードは、送信したがまだ承認されていないすべてのTLPのコピーをリプレイ・バッファに保存する。ソース・ノードがNAK DLLPを受信すると、エラーのために到着したTLPから始めて、リプレイ・バッファに格納されたすべてのTLPを再度送信する。
図6は、一例としてのPCIe/SASエキスパンダ101/103を示すブロック図である。PCIe/SASエキスパンダ101/103は、SASターゲット・デバイス110およびPCIeターゲット・デバイス111をサポートするように動作可能である。この点で、PCIeトラフィックおよびSASトラフィックは両方、対応するPCIe Phy/Link351−1〜4、SAS Phy/Link360−1〜4、およびSAS Phy/Link361−1〜4を通じて、エキスパンダ・モジュール353によってサービスが提供される。たとえば、SAS Phy/Link361−1〜4は、上流のSASエキスパンダ102に結合することができる。したがって、SAS Phy/Link361−1〜4は、上流のSASエキスパンダ102の対応するSAS Phy/Linkに結合し、他のPCIe対応デバイス(たとえば、他のPCIe/SASエキスパンダまたはPCIe/SASコントローラ104)からPCIeデータを転送できるSAS接続を確立するように動作可能である。
エキスパンダ・モジュール353は、エキスパンダ接続ルータ355、エキスパンダ接続マネージャ354、およびブロードキャスト伝播プロセッサ356を含む。エキスパンダ接続マネージャ354は、エキスパンダ内の様々なリンク・レイヤの接続を確立するために要求にサービスを提供する。エキスパンダ接続ルータ355は、エキスパンダ内のリンク・レイヤ間でスイッチング機能を提供する。ブロードキャスト伝播プロセッサ356は、PCIe/SASアグリゲータ352を通じて接続されたPCIeターゲット・デバイス111を検出し、入ってくるブロードキャスト要求を処理し、SASプロトコル要件ごとに要求が転送されることを保証するように動作可能である。一般的に、接続されたPCIeターゲット・デバイス111に関係する検出された情報は、PCIe/SASコントローラ104など、PCIe対応SASイニシエータで利用可能になり、本質的に、たとえば、ベンダ独自のSMP機能、または新しく標準化されたSMPPCIeデバイス検出機能によって、従来のレガシSASコントローラから情報を隠す。これらのモジュールのそれぞれは、一般的に、PCIeトンネリングされた接続にサービスを提供しながら、その標準SASの振る舞いを維持する。
PCIe/SASアグリゲータ352は、PCIe制御、デバイスごとのクレジット管理、および複数のPCIeターゲット・デバイス111をサポートするために必要でバッファリングを提供しながら、エキスパンダ・モジュール353の標準SASエキスパンダ機能に標準インターフェースを提供する。PCIeクレジット管理は、PCIeデバイスがそのトランザクション・レイヤ(つまりTLP)の各受信バッファのクレジットの初期量をアドバタイズすることを可能にするPCIeプロトコルの方式である。リンクの反対端のデバイスは、このデバイスにトランザクションを送信するときに、各TLPがそのアカウントから消費するクレジットの数を数える。その消費されたクレジット数がそのクレジット限度を超えていない場合、送信するPCIeデバイスはTLPを送信する。受信するデバイスは、そのバッファからのTLPの処理を終了し、受信するデバイスは、送信するデバイスにクレジットの返却を伝え、これにより、回復された量だけクレジット限度が増加する。このようにSAS接続を通じてPCIeデータパケットがトンネリングされると、DLLPは、中間のエキスパンダを通じて渡されるため、PCIe/SASアグリゲータ352およびPCIe/SASインターワーキング・イニシエータ(より詳細には以下に記述)は、SAS接続の間にDLLPフレームを直接的に交換することができる。
PCIeトラフィックはパケット化されるため、複数のPCIeターゲット・デバイス111が単一の物理的なSAS接続を共有することが可能になる。また、したがって、1つまたは複数の接続で運ばれているPCIeトラフィックは、PCIe/SASアグリゲータ352からエキスパンダ接続マネージャ354およびエキスパンダ接続ルータ355に、接続されたPCIeターゲット・デバイス111にサービスを提供するために適切な帯域幅を確立することを要求する。言い換えると、サービスを提供されるPCIeターゲット・デバイス111の数と、使用されるエキスパンダ機能のインターフェースの数との間に基本的な関係はない。
複数のPCIeターゲット・デバイス111で複数のSAS接続を共有する場合、TLPシーケンス番号は、PCIeターゲット・デバイス111ごとに独立して追跡される。TLPシーケンス番号は、パケットが規定された宛先に順に伝達されることを保証するために使用される。一実施形態では、伝導路識別子は、SASドメイン100を横断する送信に対してTLP準備パケットの開始位置にTLPシーケンス番号とともに含まれている。たとえば、TLPシーケンス番号に隣接するTLPの最初のニブルは、通常、すべて論理「0」に設定される。その代わり、一意のPCIeターゲット・デバイス111に複数の異なる伝導路(たとえば16)を符号化するために、第1のニブルを使用することができる。あるいは、または加えて、PCIe/SASアグリゲータ352は、TLPに適用する特定のアドレス指定およびルーティングを識別するために、TLPヘッダを検査することができ、それによって、1組のSAS接続を共有できるPCIeターゲット・デバイス111の数への制限を取り除くことができる。
図7は、図6のPCIe/SASエキスパンダ101/103の一例としてのPCIe/SASアグリゲータ352を示すブロック図である。この実施形態では、PCIe/SASアグリゲータ352は、PCIe/SASエキスパンダ101/103のエキスパンダ接続マネージャ354およびエキスパンダ接続ルータ355との間で、SAS接続の要求を処理するように動作可能なエキスパンダ・インターフェース404を含む。SAS接続が確立されると、PCIeパケットの1つまたは複数のストリームをエキスパンダ・インターフェース101を通じて渡すことができる。この点で、DLLP接続エンドポイント301には、PCIe/SASエキスパンダ101/103とPCIe/SASコントローラ104との間のSASドメイン100を通じて転送されたDLLPパケットを終了するために、開いたSAS接続ごとにDLLP終了モジュール403−1〜4が提供される。すでに述べたように、これらのDLLPパケットは、エンドツーエンドのTLPパケットを承認し、SASドメイン100を通じてPCIeパケット伝送に利用可能なクレジットを管理する。
PCIe TLPは、DLLP終了モジュール403−1〜4を通じてPCIeデータパケット・スイッチ401へと移動する。PCIeデータパケット・スイッチ401は、PCIe Phy/Linkごとにフロー制御のクレジット情報を維持し、
DLLP終了403−1〜4とPCIe Phy/Linkとの間でデータパケットを転送するか、またはクレジットの不足のために直ちに渡すことができないデータパケットを一時的にバッファリングするかについて、クレジットに基づく決定を下す。クレジットが利用可能になると、PCIeデータパケット・スイッチ401は、データパケットの宛先に依存して、PCIeパケット・バッファ402に格納されたTLPをPCIe Phy/LinkまたはDLLP終了403−1〜4に転送する。
すでに述べたように、特定のSASリンクの帯域幅をPCIeトラフィックに対して最大限にする場合、SAS接続は、PCIeトラフィックの継続的利用のためだけに用いることができる。そうでない場合、PCIeターゲット・デバイス111で利用可能な帯域幅は、一般的に、PCIe/SASアグリゲータ352で利用可能なクレジットの関数であり、一般的には、利用可能なSAS帯域幅およびPCIeホストシステム105の上流の帯域幅の関数である。
図8は、一例としてのPCIe/SASコントローラ104のブロック図である。PCIe/SASコントローラ104は、従来のSASターゲット・デバイス110およびPCIeターゲット・デバイス111をサポートするように動作可能である。PCIe/SASコントローラ104は、SASドメイン100に接続されたPCIeターゲット・デバイス111のトポロジを確立するために、下流のPCIeターゲット・デバイス111のPCIeエニュメレーションを実行するように動作可能であるため、PCIeターゲット・デバイス111の「ルート・コンプレックス」として動作することができる。PCIe/SASコントローラ104は、PCIeプロトコルによりPCIe制御およびPCIe/SAS接続のクレジット管理を管理するPCIe/SASインターワーキング・イニシエータ415を含む。この点で、PCIe/SASインターワーキング・イニシエータ415は、複数の下流のPCIe/SASエキスパンダ101/103をサポートするためにバッファリングを提供する。たとえば、PCIeプロトコルはコネクションレス型のプロトコルであるため、SAS接続を通じてPCIeデータパケットの転送を制御し追跡するために、SASドメイン100内のPCIe接続エンドポイントでデータパケットをバッファリングする必要がある。PCIe/SASインターワーキング・イニシエータ415は、PCIeホストシステム105からデータパケットのバッファリングを提供し、その宛先PCIe/SASエキスパンダ101/103に転送されるPCIeデータパケットに関連するクレジットを管理する。
PCIe/SASインターワーキング・イニシエータ415は、SASドメイン100を通じてアクセス可能であるPCIe/SASエキスパンダ101/103に接続されているPCIeターゲット・デバイス111の接続の詳細からPCIeホストシステム105を隠す非透過的なPCIeブリッジとしてある程度まで動作する。言い換えると、SASドメイン100を通じた様々なPCIeターゲット・デバイス111との間の接続、ルーティング、およびデータパケット転送の複雑さは、PCIe/SASコントローラ104に押しつけられるため、PCIeホストシステム105は、他のタスクのためにその処理機能を利用することができる。この点で、それらの宛先PCIe/SASエキスパンダ101/103にデータパケットをルーティングするために、PCIe/SASインターワーキング・イニシエータ415は、SASポート・レイヤ414とともに機能する。言い換えると、PCIe/SASインターワーキング・イニシエータ415によって指示されるようにPCIeデータパケットをルーティングするために、SASポート・レイヤ414はスイッチング機能として動作する。
PCIe/SASコントローラ104は、また、SASドメイン100のエキスパンダ、レガシSASエキスパンダ102またはPCIe/SASエキスパンダ101/103のいずれかに接続されたSASターゲット・デバイス110の間でSASデータをルーティングするためにSASトランスポート・モジュール416を含む。SASトランスポート・モジュール416は、SASポート・レイヤ414のスイッチングを介してSASターゲット・デバイス110に従来のSAS通信を提供するように動作する。
PCIeホスト・インターフェース417は、SASドメイン100とPCIeホストシステム105のPCIeドメインとの間で通信を提供するために、PCIe/SASコントローラ104で構成される。たとえば、「xN」PCIe Phy/Link418は、PCIeホストシステム105のPCIe論理相互接続によりPCIeデータパケットを受信する(たとえば、x1 Phy、x2 Phy、x4 Phyなど)。それらのデータパケットがSASターゲット・デバイス110を宛先としている場合、PCIeホスト・インターフェース417は、SASトランスポート・モジュール416を介してSASドメイン100を通じてSASターゲット・デバイス110に伝送するために、それらのデータパケットをSASデータに変換する。
図9は、図8のPCIe/SASコントローラ104の一例としてのPCIe/SASインターワーキング・イニシエータ415を示すブロック図である。PCIe/SASインターワーキング・イニシエータ415は、PCIe/SASエキスパンダ101/103との間でPCIe TLPデータパケットを転送する目的でSAS接続を確立するために、SASポート・レイヤ・コントローラ451と対話する。PCIe TLPデータパケットは、PCIeバッファ・マネージャおよびホストシステム・インターフェース452によって制御されるPCIeパケット・バッファ454に格納される。ここでも、上記の実施形態によると、PCIeデータパケットは、PCIeホストシステム105とPCIeターゲット・デバイス111との間でPCIeデータパケットを転送する間に、SASドメイン100の接続エンドポイントでバッファリングされる。PCIeパケット・バッファ454は、この点で、SASエンドポイント302およびPCIeエンドポイント301の非透過的なブリッジのインターワーキング・ポイントとして動作する。
DLLP終了モジュール453−1〜4は、PCIe/SASアグリゲータ352のDLLP終了モジュール403に似た方法で、PCIe/SASエキスパンダ101/103とPCIe/SASコントローラ104との間で渡されたDLLPパケットを終了する。これにより、DLLPパケットがTLPパケットを承認し、SAS接続を通じてPCIeパケット送信に利用可能なクレジットを管理することが可能になる。
他に例を提供すると、PCIeデータパケットが、PCIe/SASエキスパンダ101/103に接続されたPCIeターゲット・デバイス111と、PCIe/SASコントローラ104との間で転送される場合、PCIeデータパケットを転送する必要があるコンポーネントからの標準SAS OAFは、2つのコンポーネント間にSAS接続を確立する。SAS接続は、PCIeデータパケット転送のコンポーネントが送信するべきPCIeデータパケットを持っている限り、その他の場合には、SASプロトコルによって指示された限り開いている。コンポーネントがPCIeデータパケットを転送する必要がなくなった場合、そのコンポーネントは、SASプロトコルのCLOSEプリミティブを発行する。STP接続と同様に、CLOSEプリミティブが両方向に交換されると、SAS接続は終了されて、続いて、接続に参加しているエキスパンダ101/102/103によって取り除かれる。
開いた接続の全二重通信での利用を改善するために、そのCLOSEプリミティブを送信する前に、SAS接続を開始した接続のコンポーネントからCLOSEプリミティブを受信するまで、接続の一方は待つことができる。あるいは、または加えて、SAS接続の閉鎖は、SAS接続でPCIeターゲット・デバイス111とPCIe/SASコントローラ104との間で転送されているTLPデータパケットを解釈することによって実行することができる。これにより、次のSAS接続で帯域幅要件を予測するのを支援することができる。しかし、PCIeトラフィックに必要な帯域幅を提供するために、上に記述したように持続的なSAS接続を実装することができる。持続的なSAS接続は、EXTEND_CONNECTIONプリミティブおよびSASプロトコルの関連するタイマーを使用して、SPL−3パーシステント・コネクションの変形形態として実装することができる。
いずれの場合にも、エキスパンダ101/103のPCIe/SASアグリゲータ352およびPCIe/SASコントローラ104のPCIe/SASインターワーキング・イニシエータ405は、SAS接続の閉鎖を、任意のPCIeクレジット、TLPシーケンス番号、およびSASコンポーネント間のDLLP伝導路に関連する他のパラメータの現在の状態を保持するための指示と見なす。SASプロトコルの明示的な符号化は、PTPを実装し、SASドメイン100のPTP接続を識別するために使用することができる。あるいは、PCIe/SASコントローラ104の独立したワールド・ワイド・ネーム(WWN)は、PCIe/SASインターワーキング・イニシエータ405へのPTP接続を指示するために使用することができる。次に、一意のWWNは、複数の接続されたPCIeターゲット・デバイス111を識別し、PCIe/SASアグリゲータ352へのSAS接続を完了するようにエキスパンダ接続マネージャ354に合図を送るために、PCIe/SASエキスパンダ101/103で使用することができる。SAS接続は、また、OAが受信され、DWORDが中間のエキスパンダによって転送されて、レガシのエキスパンダ(たとえばエキスパンダ102)を用いて動作可能になるポイントまでSTPを使用して確立することができる。
SASドメイン100を通じたPTP接続が開かれると、PCIeルールは、一般的に、SASドメイン100でSTPデータ転送に適用するSTPルールに似た方法で、すべてのPCIeデータパケット送信に対して適用される。たとえば、SAS接続が開いているとき、DWORDSは中間のエキスパンダを通じて転送されるため、PCIe通信をSAS接続の端部で正確に表現することができる。一実施形態では、SAS接続は、PCIe/SASエキスパンダ101/103および/またはPCIe/SASコントローラ104でPCIeデータパケットのバッファ・レベルに基づいて閉じることができる。図示するために、それを実行するクレジットが不足しているために(つまり、PCIeパケット・バッファ402に利用可能なバッファ・スペースがないため)、PCIe/SASコントローラ104がPCIe/SASエキスパンダ101にPCIeデータパケットを送信することができない場合、PCIe/SASコントローラ104は、PCIe/SASエキスパンダ101へのSAS接続を閉じることを選択することができる。接続は、また、事前に定めたパケットの量を送信する際の進捗に基づいて、またはバッファ・レベルがゼロになった場合、閉じることができる。
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェアおよびソフトウェアの要素の両方を含む実施形態の形式を取ることができる。一実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されないソフトウェアに実装される。図10は、コンピュータ可読媒体506が本明細書に開示された方法のいずれかを実行するための命令を提供できるコンピューティング・システム500を示している。
さらに、本発明は、コンピュータまたは任意の命令実行システムによって、またはそれらに接続して使用するためにプログラム・コードを提供するコンピュータ可読媒体506からアクセス可能なコンピュータ・プログラム製品の形式を取ることができる。この記述を目的として、コンピュータ可読媒体506は、コンピュータ・システム500を含む、命令実行システム、装置、またはデバイスによって、またはそれらに接続して使用するためにプログラムを有形として格納することができる任意の装置でもよい。
媒体506は、有形の電子、磁気、光学、電磁気、赤外線、または半導体のシステム(または装置またはデバイス)でもよい。コンピュータ可読媒体506の例として、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、剛性の磁気ディスクおよび光ディスクなどがある。光ディスクの最新の例として、コンパクト・ディスクを使った読み取り専用メモリ(CD−ROM)、コンパクト・ディスクを使った読み取り/書き込み(CD−R/W)、およびDVDなどがある。
プログラム・コードを格納および/または実行するのに適したコンピューティング・システム500は、システム・バス510を通じてメモリ508に直接的または間接的に結合された1つまたは複数のプロセッサ502を含むことができる。メモリ508は、プログラム・コードを実際に実行する間に用いられるローカル・メモリ、バルク・ストレージ、および実行の間にコードがバルク・ストレージから取得される回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含むことができる。入力/出力またはI/Oのデバイス504(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらに限定されない)は、直接的にまたは介在するI/Oコントローラを通じてシステムに結合することができる。ネットワーク・アダプタは、また、コンピューティング・システム500を、ホストシステム・インターフェース512を通じてなど他のデータ処理システムに、または介在するプライベートまたは公衆のネットワークを通じてリモート・プリンターもしくはストレージデバイスに結合できるようにシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、現在利用可能なタイプのネットワーク・アダプタのごく一部である。