(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6017584
(24)【登録日】2016年10月7日
(45)【発行日】2016年11月2日
(54)【発明の名称】動的リンク幅調整
(51)【国際特許分類】
G06F 13/36 20060101AFI20161020BHJP
G06F 13/38 20060101ALI20161020BHJP
【FI】
G06F13/36 310E
G06F13/38 330Z
G06F13/36 530B
【請求項の数】19
【全頁数】17
(21)【出願番号】特願2014-547169(P2014-547169)
(86)(22)【出願日】2011年12月21日
(65)【公表番号】特表2015-505094(P2015-505094A)
(43)【公表日】2015年2月16日
(86)【国際出願番号】US2011066414
(87)【国際公開番号】WO2013095422
(87)【国際公開日】20130627
【審査請求日】2014年6月13日
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】トリヴェディ,マレイ
(72)【発明者】
【氏名】ナイル,モハン ケイ.
(72)【発明者】
【氏名】マレイ,ジョセフ
(72)【発明者】
【氏名】ボダス,デヴァダッタ ヴィー.
(72)【発明者】
【氏名】アレキサンダー,ジェイムズ ダブリュー.
(72)【発明者】
【氏名】ホスコティ,ヴィジャイェンドラ ケイ.
【審査官】
田中 啓介
(56)【参考文献】
【文献】
米国特許出願公開第2008/0294831(US,A1)
【文献】
米国特許出願公開第2007/0233930(US,A1)
【文献】
米国特許出願公開第2007/0067548(US,A1)
【文献】
米国特許出願公開第2008/0002585(US,A1)
【文献】
米国特許第07705850(US,B1)
【文献】
米国特許出願公開第2010/0115174(US,A1)
【文献】
特開2005−332357(JP,A)
【文献】
特開2000−020164(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/10−13/14
13/20−13/42
(57)【特許請求の範囲】
【請求項1】
動的に構成可能なバンド幅を有するリンクを介して、コントローラーとスイッチファブリックを含むダウンストリームモジュールを、ホストプロセッサを含むアップストリームモジュールに接続するステップと、
前記コントローラーを初期化するステップと、を含み、
前記コントローラーが初期化された後に、前記ダウンストリームモジュールは、
前記ダウンストリームモジュールに対する入力/出力(I/O)バンド幅を決定し、かつ、
前記決定に基づいて、前記リンクのバンド幅を動的に調整し、
前記ダウンストリームモジュールは、
第1の時間が生じる以前に、前記決定されたバンド幅が前記リンクのバンド幅よりも大きい場合、即時にリンクのバンド幅を増加し、かつ、
第2の時間が生じた以降に、前記決定されたバンド幅が前記リンクのバンド幅よりも小さい場合、即時にではなくリンクの幅を減少し、
前記第2の時間は、前記第1の時間よりも長い、
ことを特徴とする方法。
【請求項2】
第1および第2のダウンストリームポートは、前記コントローラーを介してホストに接続されており、
前記ダウンストリームモジュールは、前記第1および前記第2のダウンストリームポートの両方に対するバンド幅要求に基づいて、前記I/Oバンド幅を決定する、
請求項1に記載の方法。
【請求項3】
前記ダウンストリームモジュールは、
前記決定されたバンド幅が第1の閾値よりも大きい場合、前記リンクのバンド幅を動的に増加し、かつ、
前記決定されたバンド幅が第2の閾値よりも小さい場合、前記リンクのバンド幅を低バンド幅設定まで動的に減少する、
請求項1に記載の方法。
【請求項4】
前記第1の閾値は、前記第2の閾値と等しくない、
請求項3に記載の方法。
【請求項5】
前記ダウンストリームモジュールは、
前記リンクのバンド幅が前記低バンド幅設定まで既に減少された後で、前記決定されたバンド幅が第3の閾値よりも小さい場合、さらに、前記リンクのバンド幅を前記低バンド幅設定より小さいバンド幅設定まで動的に減少する、
請求項3に記載の方法。
【請求項6】
前記ダウンストリームモジュールに接続された温度センサーの温度値を決定し、かつ、
前記温度センサーの前記決定された温度値に基づいて、前記リンクのバンド幅を動的に調整する、
請求項1に記載の方法。
【請求項7】
前記コントローラーを介して、第1および第2のダウンストリームポートがホストに接続されており、
前記リンクは、周辺機器相互接続エクスプレス(PCIe)リンクであり、前記コントローラーは、PCIeコントローラーであり、
前記ダウンストリームモジュールは、前記コントローラーと、前記第1および第2のダウンストリームポートとを含むチップセットを含んでおり、
前記第1および第2のダウンストリームポートの両方に対するバンド幅要求に基づいて前記I/Oバンド幅を決定する、前記コントローラーと前記スイッチファブリックのうち少なくとも一つを含んでいる、
請求項1に記載の方法。
【請求項8】
前記ダウンストリームモジュールは、
前記第1のダウンストリームポートから生じたサイドバンドメッセージを介して、前記第1のダウンストリームポートに対する前記バンド幅要求に対応する、第1のデータを受け取り、
前記第2のダウンストリームポートから生じたサイドバンドメッセージを介して、前記第2のダウンストリームポートに対する前記バンド幅要求に対応する、第2のデータを受け取り、かつ、
前記第1および第2のデータの集計に基づいて、前記I/Oバンド幅を決定する、
請求項7に記載の方法。
【請求項9】
第1のダウンストリームポートは、前記コントローラーを介して前記ホストプロセッサに接続され、第2のダウンストリームポートは、前記コントローラーを介して前記ホストプロセッサに接続され、
前記ダウンストリームモジュールは、前記コントローラーと前記第1のダウンストリームポートを含むが、前記第2のダウンストリームポートは含まないチップセットを含んでおり、
前記ダウンストリームモジュールは、前記第1および第2のダウンストリームポートに対するバンド幅要求に基づいて前記I/Oバンド幅を決定する、
請求項1に記載の方法。
【請求項10】
前記ダウンストリームモジュールは、
前記ダウンストリームモジュールに対するキューの深さと前記ダウンストリームモジュールによって処理されるパケットのサイズのうち少なくとも一つの決定に基づいて第1のメトリックを決定し、
前記第1のメトリックに基づいて前記I/Oバンド幅を決定する、
請求項1に記載の方法。
【請求項11】
前記ダウンストリームモジュールは、
閾値を満たさない前記I/Oバンド幅を決定し、
前記I/Oバンド幅は前記閾値を満たさないとの前記決定に基づいてタイマーをスタートさせ、かつ、
前記タイマーの経過に基づいて前記リンクのバンド幅を減少する、
請求項1に記載の方法。
【請求項12】
請求項1乃至11のいずれか一項に記載の前記方法を少なくとも一つのプロセッサに実行させるように構成された一式のインストラクションを有するコンピュータプログラム。
【請求項13】
コントローラーとスイッチファブリックを含むダウンストリームモジュールと、
動的に構成可能なバンド幅を有し、前記ダウンストリームモジュールをプロセッサを含むアップストリームモジュールに接続するリンクと、
前記コントローラーに接続されたメモリーであり、実行されると、前記コントローラーが既に初期化された後に、前記ダウンストリームモジュールに対する入力/出力(I/O)バンド幅を決定し、かつ、前記決定に基づいて、前記リンクのバンド幅を動的に調整する、インストラクションを含んでいるメモリーと、を含み、
前記メモリーは、さらに、実行されると、
第1の時間が生じる以前に、前記決定されたバンド幅が前記リンクのバンド幅よりも大きい場合、即時にリンクのバンド幅を増加し、かつ、
第2の時間が生じた以降に、前記決定されたバンド幅が前記リンクのバンド幅よりも小さい場合、即時にではなくリンクの幅を減少し、
前記第2の時間は、前記第1の時間よりも長い、
ことを特徴とする装置。
【請求項14】
前記コントローラーを介してホストに接続されている第1および第2のダウンストリームポートを含み、
前記メモリーは、さらに、実行されると前記ダウンストリームモジュールに、
前記第1および前記第2のダウンストリームポートの両方に対するバンド幅要求に基づいて、前記I/Oバンド幅を決定させる、インストラクションを含む、
請求項13に記載の装置。
【請求項15】
前記メモリーは、さらに、実行されると前記ダウンストリームモジュールに、
前記決定されたバンド幅が第1の閾値よりも大きい場合、前記リンクのバンド幅を動的に増加させ、かつ、
前記決定されたバンド幅が第2の閾値よりも小さい場合、前記リンクのバンド幅を低バンド幅設定まで動的に減少させる、インストラクションを含む、
請求項13に記載の装置。
【請求項16】
前記コントローラーを介して前記プロセッサに接続された第1のダウンストリームポートと、
前記コントローラーを介して前記プロセッサに接続された第2のダウンストリームポートと、を含み、
前記メモリーは、さらに、実行されると前記ダウンストリームモジュールに、
前記第1および第2のダウンストリームポートに対するバンド幅要求に基づいて前記I/Oバンド幅を決定させる、インストラクションを含み、
前記ダウンストリームモジュールは、さらに、前記コントローラーと前記第1のダウンストリームポートを含むが前記第2のダウンストリームポートは含まないチップセットを含んでいる、
請求項13に記載の装置。
【請求項17】
前記メモリーは、さらに、実行されると前記ダウンストリームモジュールに、
前記第1のダウンストリームポートから生じたサイドバンドメッセージを介して、前記第1のダウンストリームポートに対する前記バンド幅要求に対応する、第1のデータを受け取らせ、
前記第2のダウンストリームポートから生じたサイドバンドメッセージを介して、前記第2のダウンストリームポートに対する前記バンド幅要求に対応する、第2のデータを受け取らせ、かつ、
前記第1および第2のデータの集計に基づいて、前記I/Oバンド幅を決定させる、インストラクションを含む、
請求項16に記載の装置。
【請求項18】
請求項13乃至17いずれか一項に係る前記ダウンストリームモジュールを含むコンピューターシステムであって、さらに、前記アップストリームモジュールを含むコンピューターシステム。
【請求項19】
請求項1乃至11いずれか一項に記載の前記方法を少なくとも一つのプロセッサに実行させるように構成された一式のインストラクションを含むコンピュータで読取り可能なストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動的リンク幅調整に関する。
【背景技術】
【0002】
プラットフォーム(例えば、サーバープラットフォーム)は、入力/出力(I/O)デバイスからの性能/電力(performance/power)ロードライン(load line)を必要とする。ここで、電力消費は、低バンド幅の利用時に減少するものと期待される。周辺機器相互接続エクスプレス(PCIe)デバイスは、低パフォーマンスの期間中に、プラットフォームが利用する低電力状態(low power state)を含んでいる。しかしながら、実際のサーバー負荷の特徴を観察すると、PCIeリンク電力状態(例えば、L0、L1)は、利用の関数として、電力節減が理想より少ないことがわかる。例えば、L1状態は、OSアイドル(OS idle)又はそれに近い電力節減を提供するが、リンクは主としてアクティブ(active)である。非常に低いバンド幅(例えば、5%以下)においてさえも、そうである。I/Oトラフィックの性質(例えば、サーバーI/Oトラフィック)のために、タイムアウトベースのリンク消費電力管理状態は、レジデンシー(residency)が非常に低い。従って、そうした状態は存在するのだが、適切には利用されていない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
結果として、I/O電力は、コンポーネントレベル及ぶプラットフォームレベルにおいて十分に利用されていない(例えば、不適当なファンの速さ及びそれに対応する電流の流れ)。熱暴走が起きた際の適切な温度スロットル(thermal throttling)が欠如していることにより、熱的な非効率をも生じている。
【課題を解決するための手段】
【0004】
以降の記載において所定の詳細が数多く明らかにされるが、本発明の実施例は、これら所定の詳細が無くても実行し得るものである。よく知られた回路、構成、および、技術は、ここでの説明の理解を妨げないように、詳細には示されない。「一つの実施例」、「種々の実施例」等は、そのように記述された実施例が、所定の特徴、構成、または、特性を含み得ることを意味している。しかし、必ずしも全ての実施例が、所定の特徴、構成、または、特性を含むことを要しない。いくつかの実施例は、他の実施例のために説明された特徴のうち、いくつか又は全てを有し得るし、または、何も有さなくてよい。「第1の」、「第2の」、「第3の」等は、共通のオブジェクトを説明しており、類似のオブジェクトの異なるインスタンスが参照されていることを意味している。こうした形容詞は、そのように記述されたオブジェクトが与えられた順序でなければならないことを意味するものではない。一時的、空間的、ランキング又はあらゆる他の方法のいずれでもよい。「接続された」は、エレメントがお互いに直接に物理的または電気的に接触していることを意味している。そして、「結合された」は、お互いに協働または相互作用するエレメントを意味するが、それらは、直接に物理的または電気的に接触しても、しなくてもよい。また、異なる図面における同一または類似のパーツを示すために、類似または同一の参照番号が使用されるが、そうすることは、、類似または同一の参照番号を含む全ての図面が単一の又は同一の実施例を構成することを意味するものではない。
【0005】
一つの実施例は、ハードウェア及び/又はソフトウェアモジュールを介して実施される、ポリシーを含んでいる。I/Oバンド幅要求のランタイムトラッキング、及び/又は、温度モニターに基づいて、動的にリンク(例えば、PCIeリンク)の幅を動的に調整するためのポリシーである。こうした一つの実施例は、バンド幅の利用が、ネイティブ(native)なリンク幅と速度より小さい場合に、電力節減を提供する。こうした一つの実施例は、さらに、一時的な熱暴走の期間中に温度削減を提供する。一つの実施例において、ポリシーは、ダウンストリーム(downstream)コンポーネントの中に存在し、アップストリーム(upstrem)コンポーネントと協調する。アップストリームコンポーネントは、ダウンストリームコンポーネントによって交渉されているリンク幅構成を許可し、または、承諾する。
【0006】
一つの実施例は、統合されたエンドポイント(ここにおいて、ときどき「ポート(port)」としても参照されるもの)を有するダウンストリームPCIeコンポーネントを含んでいる。こうしたダウンストリームコンポーネントの実施例は、PCIeコントローラーをも含むシステムオンチップ(SOC)に含まれているシリアル接続スモールコンピューターシステムインターフェイス(SAS)コントローラーを含んでいる。エンドポイントは、SOC上に配置されており、従って「統合された」エンドポイントである。
【0007】
しかしながら、別の実施例は、PCIeエンドポイントのさらなるダウンストリームをサポートするPCIeポートまたはエンドポイントを伴うダウンストリームPCIeコンポーネントを含んでいる。例えば、そうしたダウンストリームポートは、PCIeコントローラーを含むSOC上に、統合されていないストレージコントローラーを含んでいる。そうしたコンポーネントは、例えば、PCIeコントローラーの「ダウンストリーム」PCIeポートに取り付けられた個別のPCIeイーサネット(登録商標)カードまたはストレージコントローラーを含んでいる。
【図面の簡単な説明】
【0008】
本発明の実施例の特徴および利点は、添付の特許請求の範囲、以降の一つまたはそれ以上の実施例の詳細な説明、および、対応する図面から明らかになる。
【
図1】
図1は、本発明の一つの実施例における、アップストリームおよびダウンストリームモジュールを含むデバイスのブロックダイヤグラムを示している。
【
図2A】
図2Aは、リンク幅を調整するための本発明の一つの実施例に関するフローチャートを示している。
【
図2B】
図2Bは、リンク幅を調整するための本発明の一つの実施例に関する関連のバンド幅チャートを示している。
【
図3A】
図3Aは、リンク幅を調整するための本発明の一つの実施例に関するフローチャートを示している。
【
図3B】
図3Bは、リンク幅を調整するための本発明の一つの実施例に関する関連のバンド幅チャートを示している。
【
図4】
図4は、本発明の一つの実施例における、模式的なメッセージ伝送ダイヤグラムを示している。
【
図5】
図5は、リンク幅を調整するための本発明の一つの実施例に関するフローチャートを示している。
【発明を実施するための形態】
【0009】
図1は、統合および非統合ポートまたはエンドポイントに関する一つの実施例として、本発明の一つの実施例における、アップストリームおよびダウンストリームモジュールを含むデバイスのブロックダイヤグラムを示している。システム100は、「アップストリーム」デバイス105と「ダウンストリーム」デバイス120を含んでいる。アップストリームデバイス105は、プロセッサ107、ルートコンプレックス(root complex)110、および、メモリー115を含んでいる。メモリーは、「アップコンフィグレーション」(つまり、リンク幅を増加させること)、および、「ダウンコンフィグレーション」(つまり、リンク幅を減少させること)を許可するためのインストラクションを含んでいる。リンク125は、PCIeリンクを含んでよい。
【0010】
ダウンストリームデバイス120は、PCIeコントローラー130、ファブリック(fabric)135、および、ストレージコントローラー140を含む、種々のコンポーネントを有するチップセットを含んでいる。ストレージコントローラー140は、「統合されたエンドポイント」、または、固有のバンド幅要求を有するポートを構成する。また、ダウンリンク145は、モジュール120の中に統合されていないダウンストリームPCIeデバイスに接続されたPCIeポートを構成している。そうしたダウンストリームデバイスは、例えば、PCIeイーサネットカード160を含んでいる。PCIeイーサネットカードは、固有のバンド幅要求をもったダウンストリームエンドポイントを含んでいる。PCIeコントローラー130は、インストラクションを有している一つまたはそれ以上のメモリー136に接続されている。インストラクションは、状態機械(state machine)として、アップおよびダウンリンクコンフィグレーションができるように機能する。バンド幅(BW)の見積り、および、リンク125の動的リンク幅(dynamic link width:DLW)に関する決定も同様である。以降に説明されるフローチャートにおいて、コントローラーモジュール130に対する種々の実施例が説明される。
【0011】
一般的な注意として、たまに、BW見積り及びDLW意志決定インストラクションは、PCIeコントローラー130の中に含まれるべきとされている。これは、説明をし易くするためであり、限定することを意味するものではない。例えば、実施例において、BW見積り及びDLW意志決定インストラクション/状態機械、等は、実施のためにはどちらの領域がより好適/便利であるかに基づいて、例えば、ファブリック135といった他の領域に含まれてよい。例えば、一つの実施例において、BW見積り及びDLW意志決定インストラクション/状態機械は、コントローラーの中に設定されている好適なレジスターを伴うファブリック135の中に含まれている。
【0012】
一つの実施例は、ハードウェア自律的意志決定に基づくポリシーを含んでいる。PCIeコントローラー130は、アップリンク125上のランタイムバンド幅要求をモニターし、リンクをアップコンフィグレーションするか、ダウンコンフィグレーションするかを決定する。一つの実施例において、ルートコンプレックス(root complex)110は、PCIeコントローラー130からのアップストリームであり、PCIeコントローラーはダウンストリームのデバイス120の中に配置されている。ルートコンプレックス110とモジュール105のあらゆるアップストリームポートは、一つの実施例において、コントローラーモジュール130からのリンク幅交渉に単純に従い、アップまたはダウンコンフィグレーションを実施するようにモジュール130と協調する。ルートコンプレックス110は、あらゆるバンド幅モニタリングにおいて何の役割も無くてよく、代わりに、そうしたモニタリングをコントローラーモジュール130のために残しておいている。
【0013】
リンク125に関しては、PCIe構造が、ルートコンプレックスから始まる、階層的であることに留意する。PCIeリンク、リンク125といったもの、は、ダウンストリームデバイス、デバイス120および160(デバイス120からのダウンストリームに配置されている)といったもの、に接続している。モジュールまたはデバイス120といったダウンストリームデバイスの観点から、リンク125は、ホスト105への「アップリンク(uplink)」である。しかしながら、リンク125は、ルートコンプレックスの観点からは「ダウンリンク(downlink)」である。リンク125は、両方向のトラフィックを許容するイングレス(ingress)及び/又はエグレス(egress)レーン(lane)を含んでいる。
【0014】
図2Aと2Bは、リンク幅を調整するための本発明の一つの実施例に関するフローチャートおよび関連のバンド幅チャートを示している。ブロック205は、「MaxLW」値の更新に対する待ち(waiting)を含んでいる。MaxLW値は、ダウンストリームデバイス120とデバイス160によって必要とされる最大のライン幅に係わるものである。このMaxLWは、統合エンドポイント(例えば、ダウンストリームモジュール120の中に統合されたストレージコントローラー140)、非統合エンドポイント(例えば、ダウンストリームモジュール120、すなわちPCIeコントローラー130、に統合されていないPCIeイーサネットカード)及び関連するポート(例えば、155)、および、統合及び非統合エンドポイントの組み合わせ、に基づいている。
【0015】
本発明に係る種々の実施例は、要求されるバンド幅(例えば、MaxLW)を、種々のやり方で決定してよい。バンド幅モニタリングメカニズムは、PCIeリンク上にわたるトラフィックに係るバンド幅要求をモニターする。そうしたメカニズムは、一般的に、コマンド/データキュー(queue)、利用可能なフリークレジット、バッファー利用、与えられたインターバルにわたる実際の累積されたデータパケット、等のモニタリングを含んでいる。種々のパフォーマンスモニターが、この効果のために使用され得る。
【0016】
バンド幅モニタリングの一つの実施例において、PCIeコントローラー130は、キューの深さをカウントする。例えば、ウィンドウタイマー上のイングレス及びエグレスポートにおいて、リーキーバケットアルゴリズム(leaky bucket algorithm)を使用して行う。そうしたポートは、ポート150、155、及び/又は、ファブリック135に対してポート接続されているコントローラー140を含んでいる。
【0017】
別の実施例は、ある期間(例えば、ウィンドウタイマーによって測定されるもの)にわたるパッケトサイズをカウントすることによって実際のバンド幅を測定することを含んでいる。そうしたウィンドウは、約300、400、500、600、700マイクロ秒、等であり得る。測定は、コントローラーから外に向かって進む(つまり、エグレス)トラフィックのバンド幅、および、コントローラーの中に向かって進む(つまり、イングレス)トラフィックのバンド幅を提供する。例えば、コントローラー130は、ホストプロセッサ107に向かって進むバンド幅(「エグレスBW(EgressBW)」)、および、ホストプロセッサ107から離れて進むバンド幅(「イングレスBW(IngressBW)」)を測定する。「NetBW」要求は、エグレスバンド幅(「エグレスBW」)およびイングレスバンド幅(「イングレスBW」)より大きい。このように、モニタリングによって、実際のトラフィックコントローラー130は、例えば、タイマーによって測定された、期間にわたるバンド幅利用を累積することができる。
【0018】
別の実施例において、PCIeコントローラー130は、統合されたエンドポイント(例えば、デバイス140)とダウンストリームポート(例えば、160)から、それぞれの最大バンド幅要求に関する入力を受け取る。コントローラー130は、そして、個々の入力を集めて、正味のアップリンクバンド幅要求を計算する。接続率ベースのスコアリングシステムが使用され、関与している機能(つまり、ストレージコントローラー140に関するストレージといった機能)が、例えば、アクティブなレーンの数量とオペレーティング速度に基づいて、最大のバンド幅要求を特定することができる。
【0019】
一つの実施例において、バンド幅要求は、接続速度と同様にポート接続を計算することにより動的に算出される。例えば、統合された8ポート6Gb/sのSATAコントローラーは、全ての8個のポートがアクティブである場合に最大で48Gb/sの双方向バンド幅(つまり、「ポート接続の計算」=8ポート接続×ポート毎の6Gb/s=48Gb/sが必要とされるバンド幅)をサポートする。しかし、2つのポートだけアクティブな場合は、12Gb/s(つまり、2ポート接続×ポート毎の6Gb/s=12Gb/sが必要とされるバンド幅)しかサポートされない。6Gb/s接続は、4×1.5Gb/s接続であるとしてカウントされる。同様に、トレイン/接続されていないリンク、または、電力節減状態にあるリンク(つまり、PCIeに対するL0、SAS/SATAに対するパーシャル/スランバー(partial/slumber))は、0Gb/sとしてカウントされる。このことは、アプローチを実際のリンクプロトコルから独立したものにし、全てのタイプの統合されたI/Oエンドポイントとポート(例えば、SATA/SAS、PCIe、USBといったリンクプロトコルと種々の生成速度)に順応する。
【0020】
「スコアリングシステム(scoring sysytem)」に関し、一つの実施例において、コントローラー140は、2Gb/s(5ポイントに等しいルックアップテーブルに従ったもの)を必要とし、カード160は、8Gb/s(20ポイントに等しいルックアップテーブルに従ったもの)を必要とする。スコアは、一緒に加算され正味25ポイントとなり、4の幅と同等である。しかしながら、別の実施例においては、スコアが異なる重み付けをされてよい。例えば、コントローラー140が、カード160より大きく重み付けされ(例えば、2:1のコントローラー/イーサネットカードの比率)、アイテム140と160との間の異なるリンク速度を正規化しようと試みることができる。
【0021】
より一般的には、一つの実施例において、「スコアリングシステム」により、それぞれの関連するエンドポイントは、その動的最大バンド幅要求を計算することができる。エンドポイント毎の動的最大バンド幅要求は、全てのアクティブなレーンに係るレーン毎のオペレーティング速度の合計であり得る(使用されていないもの、トレインされていないもの、及び/又は、アイドルのレーンは、ゼロバンド幅要求とされる)。このシステムは、いくつかのI/Oプロトコルに存在する8b/10bエンコードに対する正規化によって、有効なペイロードバンド幅を説明することもできる。所定のエンドポイントを他のものに比べて重視するように重み付けが割り当てられてよい。IOSFサイドバンドメッセージにより、バンド幅要求を、例えば、0.5Gb/sの粒度レベルでレポートすることができる。
【0022】
それぞれの関連する機能(例えば、コントローラー150、カード160)は、例えば、内部ファブリック上または直接的な電線を通じたメッセージを使用して、最大バンド幅要求を提供することができる。一つの実施例において、ダウンストリームポートは、サイドバンドメッセージ(例えば、ポストされたデータを伴うユニキャスト(unicast)メッセージ)をアップストリームコントローラーに対して送付し、専用の電線の使用を避け、プライマリーパスを開放する。全ての関連する機能(従って、統合および非統合エンドポイント)からそうした入力を集めることで、最大バンド幅要求を提供する。このように、統合された12GのSASコントローラー(例えば、コントローラー140)と×8PCIeダウンリンク(例えば、ダウンリンクPCIe145)は、それぞれの最大バンド幅要求を含んでいるサイドバンドメッセージをスイッチファブリック135に対してそれぞれ送付する機能である。これらのアップデートは、PCIeコントローラー130に対して、ウィンドウタイマーの期限切れ、または、バンド幅の値の変化、のいずれかにおいて提供され得る。
【0023】
要求されるバンド幅が知られると、コントローラー130は、好適なリンク幅125を決定する。一つの実施例において、コントローラー130は、バンド幅要求をサポートされているバンド幅と比較する。例えば、PCIeにより、×Nリンクは、サポートされている幅がより小さい×1幅までに再構成され得る。特に、×8PCIeリンクは、×8、×4、×2、または、×1幅のリンクとして構成されてよい。それぞれが、最大バンド幅64Gb/s、32Gb/s、16Gb/s、および、8Gb/sに相当するものである。コントローラー130に接続されたメモリーの中に保管されている、ルックアップテーブルは、バンド幅要求をサポートされているリンク幅の一つに対してマップすることができる。
【0024】
図2aに戻ると、上記に説明したように、要求されるバンド幅を決定するための種々のやり方が存在する。そうした決定が成された後に、ブロック205において、MaxLW値が受け取られる。上記に説明したように、これは、一つまたはそれ以上の統合または非統合エンドポイント(例えば、コントローラー150、PCIeイーサネットカード160、及び/又は、リンク150に接続されたダウンストリームポート、等)からのサイドバンドメッセージを介して受け取ることができる。フラグは、0(ゼロ)に設定される。ブロック210において、現在の幅(LW)が、所望のバンド幅(MaxLW)と比較される。アップデートされたリンク幅が、現在のリンク幅よりも大きい場合、コントローラーは、「即時に」(相対的な用語として)より高いバンド幅に移行する(例えば、レイテンシー(latency)を最小にするように5または10マイクロ秒より小さいもの)。アップコンフィグレーションのレイテンシー(ブロック215を参照)のためにパフォーマンス劣化が生じるのを避けるためである。イネーブル(enable)された場合、PCIeコントローラー130は、コンフィグレーションレジスター(例えば、upcfgctlレジスター)において定義されたリンク幅へトレインする。値に変化がある場合(ブロック215を参照)、コントローラーは、伝送中のメッセージを送付することを止めて、新たな幅を再びトレインすることを開始する。DLWポリシーは、この移行の即時性を判断して、バンド幅が大きくなるとすぐにレジスターを変更する。
【0025】
一つの実施例において、実際のPHYレベルアップ又はダウンコンフィグレーションは、動的な幅構成をサポートするために、アップストリームモジュール105とダウンストリームモジュール120の両方を必要とする。PCIeリンクの両方のエンドポイントがアップコンフィグレーションをサポートしている場合、ダウンストリームデバイス120のPCIeアップリンクコントローラー130は、動的リンクポリシーによって決定された新たな幅への移行を開始する。
【0026】
アップデートされたリンク幅が現在のリンク幅よりも小さい場合(ブロック220を参照)、コントローラーは、要求をフィルターする。例えば、有限インパルス応答(FIR)フィルター、移動平均フィルター、及び/又は、より小さな次の幅へのダウンコンフィグレーションの前のウィンドウタイマー、を使用するものである。一つの実施例において、フラグ設定=0(これが、フローチャートのこの部分を通じた最初のトリップであることを示している)である場合、ブロック225において、タイマーがスタートする。タイマーの経過を待っている間に(ブロック230)、コントローラーは、あらゆるMaxLWのアップデートをチェックする。そうしたアップデートがある場合、プロセスは、ブロック210へと続く(フラグは、今や1に設定されるのだが)。アップデートが存在しない場合、プロセスはブロック240へ続く。タイマーが最終的に経過して、必要なバンド幅が、現在割り当てられている幅が扱うことができるものより未だに小さい場合、ブロック245において、コントローラー130は、次の、より小さなLWまで減少させる。例えば、LWが8レーンに対して設定されていれば、4レーンに減少されてよい。フローチャートを通じた後続のトリップの際に、LWは、4レーンから2レーンに、および、2レーンから1レーンに減少され得る。
【0027】
このように、一つの実施例において、ダウンコンフィグレーションは、タイマー経過に基づいており、アップコンフィグレーションは、最大リンク幅(MaxLW)のアップデートに、相対的に即時に基づいている。リンク幅125に係るこの「非即時(non−immediate)」ダウンコンフィグレーションは、頻繁なアップコンフィグレーションとダウンコンフィグレーションのサイクルによる、チャタリング(chattering)およびパフォーマンススロットルを防いでいる。このように、
図2は、関連する機能から受け取った「ヒント(hint)」に基づいた、リンク幅決定フローを説明している。
【0028】
図2bは、最大リンク幅要求(255)の関数として実際のリンク幅(250)を表しており、要求されるリンク幅に対してどのようにリンク幅が遅れて、調整されるかを示している。
【0029】
ウィンドウタイマー上でのバンド幅の累積に基づいた他の実施例は、インターバルをカウントしている最中に高い基準値(つまり、上限の閾値)に達した場合に、リンクをアップコンフィグレーションするか、または、インターバルをカウントしている際にトラフィックが低い基準値(つまり、下限の閾値)である場合に、リンクをダウンコンフィグレーションする。例えば、
図3a、3bは、リンク幅の調整に係る本発明の一つの実施例に関するフローチャートと関連のバンド幅チャートを含んでいる。
【0030】
ブロック305において、タイマーがスタートし、バンド幅要求の累積が始まる。ブロック310においては、累積されたバンド幅要求が上限の閾値を超える場合、相対的に即時にアップコンフィグレーションが生じる(ブロック315)(例えば、レイテンシーを最小化するように5または10マイクロ秒より小さいもの)。しかしながら、累積されたバンド幅要求が上限の閾値を超えない場合、プロセスは、タイマーが経過したものと判断する(ブロック320)。タイマーが経過していない場合、プロセスはブロック310に戻る。タイマーが経過している場合は、ブロック325において、累積されたバンド幅要求が、下限の閾値(DnTh)より大きいかどうか判断される。大きい場合、プロセスはブロック305に戻り、新たなタイマー期間が始まる。小さい場合は、ブロック330において、コントローラー130は、次のより小さなLWへと減少させる。例えば、LWが8レーンに設定されている場合には、4レーンへと減少され得る。このフローチャートを通じて後続のトリップの際に、LWは4レーンから2レーンへ、および、2レーンから1レーンへと減少され得る。
【0031】
図3bは、要求されたバンド幅が、アップコンフィグレーションおよびダウンコンフィグレーションをどのように駆動するかを説明しており、種々の閾値を満たしているバンド幅要求および種々の閾値を満たすことができないバンド幅要求に従って、どのようにリンク幅が変化するかを示している。
【0032】
図4は、本発明の一つの実施例における、模式的なメッセージ伝送ダイヤグラムを示している。ライン405は、PCIeイーサネットカード160およびストレージコントローラー150といったダウンストリームPCIeポートを表している。一つの時間インターバルの中において(
図3aのブロック305における時間を参照)2つの有効リンク幅メッセージ伝送(EffLWMessTxn)が送付され、スイッチファブリック135が累積される(ライン410を参照。スイッチファブリック(SWF)135)。(別の実施例において、ポリシーは、ファブリック134の代わりにコントローラー130の中に在ってよく、結果として、コントローラー130において累積が発生する。)次に、好適なコンフィグレーションコマンド(コンフィグレーション書き込みメッセージ(「CfgWrMesg」)の中に含まれているアップまたはダウンコンフィグレーションコマンド)が、ファブリック135からコントロール130に対して、そして、例えば、ホストプロセッサ(ライン415を参照)およびルートコンプレックスに対して送付される。
【0033】
図5は、リンク幅を調整するための本発明の一つの実施例に関するフローチャートおよび関連するバンド幅チャートを示している。特に、
図5は、
図2aと
図3aの混成物を含んでおり、最大バンド幅のヒント(
図2a)とバンド幅の累積又は集合(
図3a)に基づいて、リンク幅要求を組み合わせている。この混成フローは、電力節減(例えば、ファンと電源のユニットの使用が削減されたことによるもの)とレイテンシーインパクトとの間の有益なトレードオフを提供する。
【0034】
簡潔のために、
図5のそれぞれのブロックに再度は言及しない。ブロック505、510、515、520、525は、
図2aにおいて同様に数字付けされた対応パーツ(205、210、215、220、225)を有している。しかしながら、ブロック530は、
図2aから派生しており、時間期間が経過するのを待つ一方で、バンド幅の累積を追加している(
図3aを参照)。これにより、ブロック540(ブロック235)、545(ブロック240、320)、および、550(ブロック325)に進む前に、ブロック535(
図3aのブロック310を参照)に導かれる。プロセスは、そして、ブロック555に進む。
【0035】
たまに、リンク幅は、バンド幅の使用が大きくなっている場合でさえも、小さくなり得る。このことは、例えば、リンク幅の決定が閾値ベースである実施例によるものである。このように、バンド幅は大きくなってよいが、増加されたバンド幅が未だに好適な閾値よりも小さい場合、コントローラー130のロジックは、リンク幅を削減するか、または、リンク幅を維持するかを決定することができる。
【0036】
別の実施例において、アップリンク125幅は、温度センサーに基づいて制限されてよい(上記に説明したバンド幅の要因に代わって又は追加してである)。例えば、温度が既定の閾値を超えた場合、リンクは、電力節減のために、より狭い幅に制限されてよく、それによって、温度の軽減を提供している。
【0037】
一つの実施例において、可変の幅(例えば、×8、×4、×2、×1)は、アップストリーム105およびダウンストリーム120モジュールの両方によってサポートされなくてよい。しかしながら、リンク初期化の最中に、コントローラー又はプロセッサ107は、全ての可能な幅をトレインし、サポートされない幅をログすることができる。コントローラー130は、バンド幅要求に基づいてダウンコンフィグレーションし、、通常オペレーションの最中にサポートされない幅をログすることができる(そして、これらのサポートされない幅を避ける)。
【0038】
このように、上記に説明された実施例は、PCIeリンクの幅を動的にコンフィグレーションするだけでなく、好適なリンク幅を最適にコンフィグレーションするやり方を決定することに役に立つ。このことは、非常に低いトラフィック率においてさえも、PCIeリンクがほとんどいつもアクティブである状況(さらには、アイドルに近い使用の場合でさえ、PCIeデバイスに、温度デザイン電力(TDP)に近い電力を消費させること)を避けるのに役に立つ。実施例は、こうした利点を、例えば、バンド幅要求のランタイムモニタリング、および、リンクの日和見性のダウンコンフィグレーションと即時性のアップコンフィグレーションのインテリジェントな意志決定に基づいて達成し、パフォーマンスに影響することなく、電力節減を提供することができる。
【0039】
一つの実施例は、最大バンド幅要求を計算するシステムに基づいてリンク接続性と接続率を定める。しかし、計算インテンシブ(intensive)ではなく、顕著な電力ペナルティーを維持するものではない。例えば、電力ペナルティーは、限定されている。種々の実施例は、変化が検知された場合だけ(継続的な実行に代わって)、最初にアクティブなロジックを有するからである。ウィンドウインターバル(例えば、ブロック230を参照)も、相対的に長い(例えば、数100マイクロ秒)。
【0040】
さらに、実施例は、メカニズムを提供し、それによって、ダウンストリームポートまたは統合されたポートが、それらの最大バンド幅要求を伝達することができる。この情報は、サイドバンドファブリックを介して、効率的に伝えることができる。このことは、バンド幅情報を集めるためのルートコンプレックスまたは他のアップストリームデバイス105のエフォートによるあらゆる試行と対照的である。例えば、統合されたストレージコントローラー140はPCIeリンク125を介してルートコンプレックス110に接続されている一方で、ストレージコントローラー10も、数多くのストレージデバイス(
図1に図示なし)に接続されてよい。このように、何台のSAS/SATAドライブのリンクがいかなる時にもアクティブであるかは、ストレージコントローラー140に対して知られているが、ルートコンプレックス110には知られていない。ここにおいて説明されたメッセージメカニズムが無ければ、PCIeコントローラーは、必要とされるストレージドライブの接続性とバンド幅のレベルを削減することができない。
【0041】
実施例は、PCIeリンクがいつでも最大幅にトレインされている非効率的な方法と対照的である。メッセージーサイズまたはキューの深さにかかわらず、いつでもメッセージ/データが伝送されることを要する場合である。
【0042】
一つの実施例は、PCIeトラフィックに対してパフォーマンス−電力ロードライン(loadline)を伝達することにより、エネルギー効率のよいI/Oオペレーションを可能にするポリシーを実施する。例えば、サーバープラットフォームは、大きなPCIeポートのカウントを有している(例えば、ソケット毎に40ポート、かつ、プラットフォーム毎に2−4ソケット)。いくつかのPCIeデバイスがサーバープラットフォームに接続されており、ストレージコントローラー(例えば、SATA/SASコントローラー)、イーサネットコントローラー、等が含まれている。上記に説明された種々の実施例を可能にすることにより、サーバープラットフォームは、プラットフォームの利用が低いときに顕著な電力節減を表すことができる。
【0043】
このように、一つの実施例は、ホストプロセッサ/コントローラー(107)を含むアップストリームモジュールと、プロセッサ/コントローラー(130)を含むダウンストリームモジュールと、動的に構成可能な幅を有するリンク(125)であり、ダウンストリームモジュールをアップストリームモジュールに接続するリンクと、を有するシステムを含んでいる。コントローラー130は、メモリーに接続されてよい。メモリーは、実行されるとコントローラーが(コントローラーが既に初期化された後で)、ダウンストリームに対するI/Oバンド幅を決定すること、および、決定に基づいてリンクの幅を動的に調整すること、の両方をできるようにする。
【0044】
コントローラーは、第1の時間が生じる以前に(例えば、ブロック225のタイマー)、決定されたバンド幅がリンクの幅よりも大きい場合(例えば、ブロック215)、即時にリンクの幅を増加してよい。そして、第2の時間が生じた以降に(例えば、ブロック240)、決定されたバンド幅がリンクの幅よりも小さい場合、即時にではなくリンクの幅を減少してよい。第2の時間は、第1の時間よりも長いものである。
【0045】
一つの実施例は、コントローラー(例えば、コントローラー130)を介してホストに接続されている、第1および第2のダウンストリームポート(例えば、コントローラー140とカード160)を含んでよい。
【0046】
一つの実施例において、PCIeコントローラーは、決定されたバンド幅が第1の閾値より大きい場合、動的にリンクの幅を増加し(例えば、現在の幅LW)、かつ、決定されたバンド幅が第2の閾値より小さい場合、動的にリンクの幅を小さい幅の設定まで減少させる。第2の閾値は、第1の閾値と同一であってよく(例えば、両方ともLWである)、または、別の値であってもよい。直前のシナリオに代わって、または、追加的に、閾値は、Upth及び/又はDnTh等に関連し得る。
【0047】
実施例は、コードにおいて実施することができ、非一時的なストレージ媒体上に保管されてよい。媒体上には、インストラクションを実行するようにシステムをプログラムするために使用することができるインストラクションを有している。ストレージ媒体は、これらに限定されるわけではないが、以下のものを含むあらゆるタイプのディスクである。それらは、フロッピー(登録商標)ディスク、光ディスク、半導体ドライブ(SSD)、コンパクトディスク読み出し専用メモリー(CD−ROM)、コンパクトディスク再書き込み可能コンパクトディスク(CD−RW)、光磁気ディスク、読み出し専用メモリー(ROM)といった半導体デバイス、ダイナミックアクセスメモリー(DRAM)といったランダムアクセスメモリー(RAM)、スタティックランダムアクセスメモリー(SRAM)、消去可能プログラマブル読み出し専用メモリー(EPROM)、フラッシュメモリー、電気的に消去可能プログラマブル読み出し専用メモリー(EEPROM)、磁気又は光カード、または、電気的インストラクションを保管するのに好適なあらゆる他のタイプの媒体、である。本発明の実施例は、インストラクション、ファンクション、プロシージャ、データ構造、アプリケーションプログラム、コンフィグレーション設定、コード、等といったデータに関して、ここにおいて説明されてよい。マシンによってデータがアクセスされる場合、ここにおいてより詳細が説明されるように、タスクを実行し、抽象的なデータタイプを定義し、低レベルのハードウェアコンテクストを確立し、及び/又は、他のオペレーションを実行することによって、マシンは対応することができる。データは、揮発性、及び/又は、不揮発性データストレージの中に保管されてよい。用語「コード(code)」または「プログラム(program)」は、アプリケーション、ドライバー、プロセス、ルーチン、メソッド、モジュール、および、サブプログラムを含み、幅広くコンポーネントと構成をカバーしている。そして、処理システムによって実行される場合に、所望のオペレーションを実行するインストラクションのあらゆる収集を参照してよい。加えて、代替的な実施例は、開示された全てより少ないオペレーションを使用するプロセスを含んでよい。追加のオペレーションを使用するプロセス、異なるシーケンスにおいて同一のオペレーションを使用するプロセス、および、個々のオペレーションがここにおいて開示されたプロセスは、組み合わされ、細分され、または、そうでなければ変更される。コンポーネントまたはモジュールは、望むように結合され、または、分離されてよい。そして、デバイスの一つまたはそれ以上の部分に配置されてよい。
【0048】
ここにおいて使用されているように、プロセッサまたはコントローラーは、従来技術として知られている幅広い種々のコントロールロジックのあらゆるものを表わすように意図されたコントロールロジックを含んでよい。かつ、そのように、マイクロプロセッサ、マイクロコントローラー、フィールドでプログラム可能なゲートアレイ(FPGA)、特定アプリケーション用集積回路(ASIC)、プログラム可能ロジックデバイス(PLD)、等として、うまく実施される。いくつかの実施例において、コントローラー130及び類似のものは、コンテンツ(例えば、ソフトウェアインストラクション、等)を表すように意図されており、実行されると、ここにおいて説明された機能を実施する。
【0049】
ここにおいて使用されるように、モジュールは、あらゆるハードウェア、ソフトウェア、または、それらの組み合わせを参照するものである。しばしば、モジュールの境界は、分離したものとして説明され、一般的には変化し、潜在的には重なり合う。例えば、第1および第2のモジュールは、ハードウェア、ソフトウェア、または、それらの組み合わせを共有してよいが、一方で、潜在的に、いくつかの独立したハードウェア、ソフトウェア、または、ファームウェアを保持している。一つの実施例において、用語ロジックの使用は、トランジスターといったハードウェア、または、プログラム可能な論理デバイスといった他のハードウェアを含むものである。しかしながら、別の実施例において、ロジックは、また、ファームウェアまたはマイクロコードといった、ソフトウェアまたはハードウェアと統合されたコードを含んでいる。
【0050】
本発明開示は、限定された数量の実施例に関して説明されてきたが、当業者であれば、そうした実施例から、多くの変形およびバリエーションを認識するであろう。例えば、他のメモリーアーキテクチャー、例として、ダイナミックDAM(DRAM)が説明された実施例で使用される。添付の特許請求の範囲は、全てのこうした変形およびバリエーションを、本発明開示に係る真の精神と発明の範囲の中にあるものとして包含するように意図されたものである。