IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許7163554装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-24
(45)【発行日】2022-11-01
(54)【発明の名称】装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
(51)【国際特許分類】
   G06F 13/36 20060101AFI20221025BHJP
   G06F 11/07 20060101ALI20221025BHJP
   G06F 11/10 20060101ALI20221025BHJP
【FI】
G06F13/36 520Z
G06F11/07 175
G06F11/10 648
【請求項の数】 15
(21)【出願番号】P 2019123857
(22)【出願日】2019-07-02
(62)【分割の表示】P 2017226906の分割
【原出願日】2013-12-26
(65)【公開番号】P2019192287
(43)【公開日】2019-10-31
【審査請求日】2019-08-01
【審判番号】
【審判請求日】2021-07-30
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ウ、ズオグオ
(72)【発明者】
【氏名】ダス シャーマ、デベンドラ
(72)【発明者】
【氏名】マズムデール、ムド.モヒウディン
(72)【発明者】
【氏名】バストラ、スバス
(72)【発明者】
【氏名】シャオ、カイ
【合議体】
【審判長】須田 勝巳
【審判官】林 毅
【審判官】篠原 功一
(56)【参考文献】
【文献】特開2010-61606(JP,A)
【文献】国際公開第2010/103564(WO,A1)
【文献】PCI Express(R) Base Specification Revision3.0,2010年11月10日,pp.41、42、193、204、210-212、314、778
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/36
G06F11/07-11/10
(57)【特許請求の範囲】
【請求項1】
装置であって、
フレーミングトークンを有する物理層シンボルを、複数のレーンを有するリンクによって受信するための受信機であって、前記フレーミングトークンは、前記フレーミングトークンの定義されたレイアウトに従った物理層シンボルの定義されたシーケンスを含み、前記定義されたレイアウトは、前記定義されたシーケンスに含まれる各物理層シンボルに適用される値を定義し、各物理層シンボルは、それぞれの8ビットのデータを含み、前記フレーミングトークンは、STP(start of transaction layer packet)フレーミングトークン、EDB(end bad)フレーミングトークン、SDP(a start of data link layer packet)トークン、またはEDS(an end of data stream)フレーミングトークンのうちの1つである、受信機と、
前記複数のレーンのうちの1つの特定のレーン上で受信される、フレーミングトークンの受信した物理層シンボルが、前記定義されたレイアウトに基づいて前記フレーミングトークンの予期される物理層シンボルと一致しないことを決定し、前記受信した物理層シンボルにおける値が前記予期される物理層シンボルにおける対応する値と一致しないことに基づいて前記特定のレーン上でエラーを識別するためのエラー検出ロジックと、
前記エラー検出ロジックが前記エラーを検出する場合、前記特定のレーンのためのレーンエラー状態(LES)レジスタにおいて前記エラーを報告するためのエラー報告ロジックと、を備える
装置。
【請求項2】
前記フレーミングトークンは、ペリフェラルコンポーネントインターコネクトエクスプレスベース(PCIeベース)のプロトコルに従って規定される
請求項1に記載の装置。
【請求項3】
前記PCIeベースのプロトコルは、PCIe世代4プロトコルに準拠するプロトコルを有する
請求項2に記載の装置。
【請求項4】
前記受信した物理層シンボルは、前記フレーミングトークンの最初の物理層シンボルである第1の物理層シンボルの後の物理層シンボルである
請求項1からのいずれか一項に記載の装置。
【請求項5】
前記エラー検出ロジックは、定義された長さにおいて定義された物理層シンボルに続く前記受信した物理層シンボルが、前記予期される物理層シンボルとは一致しないことに基づいて、前記受信した物理層シンボルが前記予期される物理層シンボルに一致しないことを決定する
請求項1からのいずれか一項に記載の装置。
【請求項6】
前記エラー検出ロジックまたは前記エラー報告ロジックは、物理層(PHY)ロジックに含まれる
請求項1からのいずれか一項に記載の装置。
【請求項7】
方法であって、
複数のレーンを有するリンクによって物理層シンボルを受信する段階であって、前記物理層シンボルはフレーミングトークンを有し、前記フレーミングトークンは、前記フレーミングトークンの定義されたレイアウトに従った物理層シンボルの定義されたシーケンスを含み、前記定義されたレイアウトは、前記定義されたシーケンスに含まれる各物理層シンボルに適用される値を定義し、各物理層シンボルは、それぞれの8ビットのデータを含み、前記フレーミングトークンは、STP(start of transaction layer packet)フレーミングトークン、EDB(end bad)フレーミングトークン、SDP(a start of data link layer packet)トークン、またはEDS(an end of data stream)フレーミングトークンのうちの1つである、段階と、
フレーミングトークンの受信した物理層シンボルが、前記定義されたレイアウトに基づいて前記フレーミングトークンのための予期される物理層シンボルと一致しないことを決定する段階であって、前記受信した物理層シンボルは、前記複数のレーンのうちの1つの特定のレーン上で受信される、段階と、
前記受信した物理層シンボルにおける値が、前記予期される物理層シンボルにおける対応する値と一致しないことに基づいて、前記特定のレーン上でエラーを識別する段階と、
前記エラーが検出された場合に、前記特定のレーンのためのレーンエラー状態(LES)レジスタにおいて前記エラーを報告する段階と、を備える
方法。
【請求項8】
システムであって、
複数のレーンを有するリンクによって物理層シンボルを受信する手段であって、前記物理層シンボルはフレーミングトークンを有し、前記フレーミングトークンは、前記フレーミングトークンの定義されたレイアウトに従った物理層シンボルの定義されたシーケンスを含み、前記定義されたレイアウトは、前記定義されたシーケンスに含まれる各物理層シンボルに適用される値を定義し、各物理層シンボルは、それぞれの8ビットのデータを含み、前記フレーミングトークンは、STP(start of transaction layer packet)フレーミングトークン、EDB(end bad)フレーミングトークン、SDP(a start of data link layer packet)トークン、またはEDS(an end of data stream)フレーミングトークンのうちの1つである、前記受信する手段と、
フレーミングトークンの受信した物理層シンボルが、前記定義されたレイアウトに基づいて前記フレーミングトークンのための予期される物理層シンボルと一致しないことを決定する手段であって、前記受信した物理層シンボルは、前記複数のレーンのうちの1つの特定のレーン上で受信される、前記決定する手段と、
前記受信した物理層シンボルにおける値が前記予期される物理層シンボルにおける対応する値と一致しないことに基づいて前記特定のレーン上のエラーを識別する手段と、
前記エラーが検出された場合に、前記特定のレーンのためのレーンエラー状態(LES)レジスタにおいて前記エラーを報告する手段と、を備える
システム。
【請求項9】
ポイントツーポイントシリアル相互接続リンクと、第1のデバイスと、前記ポイントツーポイントシリアル相互接続リンクにより前記第1のデバイスに連結される第2のデバイスと、を備えるシステムであって、
前記第2のデバイスは、
フレーミングトークンを含む物理層シンボルを、前記ポイントツーポイントシリアル相互接続リンクによって受信するための受信機であって、前記フレーミングトークンは、前記フレーミングトークンの定義されたレイアウトに従った物理層シンボルの定義されたシーケンスを含み、前記定義されたレイアウトは、前記定義されたシーケンスに含まれる各物理層シンボルに適用される値を定義し、各物理層シンボルは、それぞれの8ビットのデータを含み、前記フレーミングトークンは、STP(start of transaction layer packet)フレーミングトークン、EDB(end bad)フレーミングトークン、SDP(a start of data link layer packet)トークン、またはEDS(an end of data stream)フレーミングトークンのうちの1つである、受信機と
複数のレーンのうちの1つの特定のレーン上で受信される、フレーミングトークンの受信した物理層シンボルが、前記定義されたレイアウトに基づいて前記フレーミングトークンのための予期される物理層シンボルと一致しないことを決定し、前記受信した物理層シンボルにおける値が前記予期される物理層シンボルにおける対応する値と一致しないことに基づいて、前記特定のレーン上でエラーを識別するためのエラー検出ロジックと、
前記エラー検出ロジックが前記エラーを検出する場合に、前記特定のレーンのためのレーンエラー状態(LES)レジスタにおいて前記エラーを報告するためのエラー報告ロジックと、を有する
システム。
【請求項10】
前記ポイントツーポイントシリアル相互接続リンクは、複数のレーンを有する
請求項に記載のシステム。
【請求項11】
前記第1のデバイスおよび前記第2のデバイスのうちの一方は、プロセッサを有する
請求項または10に記載のシステム。
【請求項12】
前記第1のデバイスおよび前記第2のデバイスのうちの一方は、ルートコンプレックスを有する
請求項から11のいずれか一項に記載のシステム。
【請求項13】
前記第1のデバイスおよび前記第2のデバイスのうちの一方は、グラフィックスプロセッサを有する
請求項から12のいずれか一項に記載のシステム。
【請求項14】
前記第1のデバイスおよび前記第2のデバイスは、システムオンチップ上に含まれる
請求項から13のいずれか一項に記載のシステム。
【請求項15】
前記システムは、サーバチップセットを有する
請求項から14のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピューティングシステム、特に(限定はされないが)ポイントツーポイント相互接続に関する。
【背景技術】
【0002】
半導体処理およびロジック設計における進歩は、集積回路デバイスに存在し得るロジック量の増加を可能にするに至った。必然的帰結として、コンピュータシステム構成は、システムにおける単一若しくは複数の集積回路からマルチコア、複数のハードウェアスレッド、および個々の集積回路上に存在する複数の論理プロセッサ、並びにそのようなプロセッサ内に統合された他のインタフェースへと進化した。プロセッサ若しくは集積回路は通常、単一の物理プロセッサダイを備え、そこにおいてプロセッサダイは、任意の数のコア、ハードウェアスレッド、論理プロセッサ、インタフェース、メモリ、コントローラハブ等を含み得る。
【0003】
より小さなパッケージにおいて、より大きな処理能力により適合できる結果、より小型のコンピューティングデバイスの人気が増した。スマートフォン、タブレット、超薄型ノートブック、および他のユーザ機器が、飛躍的に成長している。しかしながら、これらのより小型のデバイスは、データストレージおよびフォームファクタを超える複雑な処理の両方に対し、サーバに依存している。結果的に、高性能コンピューティング市場(すなわち、サーバ空間)における要求もまた、増大している。例えば、現行のサーバにおいては通常、マルチコアを有するシングルプロセッサだけでなく、コンピューティング力を高めるために複数の物理プロセッサ(マルチソケットとも称される)が存在する。しかしながら、コンピューティングシステムにおけるデバイス数とともに処理能力が増大するにつれ、ソケットと他のデバイスとの間の通信がより重大性を帯びてきている。
【0004】
実際、相互接続は、電気通信を主に処理してきた従来型のマルチドロップバスから、高速通信を容易にする本格的な相互接続アーキテクチャへと成長した。残念ながら、さらにより高速に使用するための将来のプロセッサへの要求として、要求は、既存の相互接続アーキテクチャの機能に対し寄せられる。
【0005】
様々な図面中の同一の参照番号および符号は、同一の要素を示す。
【図面の簡単な説明】
【0006】
図1】相互接続アーキテクチャを含むコンピューティングシステムの実施形態を示す。
図2】層状スタックを含む相互接続アーキテクチャの実施形態を示す。
図3】相互接続アーキテクチャ内で生成または受信されるリクエストまたはパケットの実施形態を示す。
図4】相互接続アーキテクチャのための送信機と受信機のぺアの実施形態を示す。
図5】例示的な2つのコネクタから成る相互接続チャネルの実施形態を示す。
図6】複数のビアを含む相互接続構造の断面の簡易ブロック図である。
図7】ビアスタブのバックドリルを採用する相互接続の断面の表示である。
図8】レーンエラー状態レジスタを含む機能構造を表わすブロック図である。
図9】マルチレーン相互接続上でのデータフローを示す簡易図である。
図10】例示的なフレーミングトークンシンボルを表わしたものを示す。
図11】例示的なスキップ(SKP)の順序付けられたセットを含むデータフローを示す簡易図である。
図12】エラーレジスタに報告可能なレーンエラーを示す簡易ブロック図である。
図13A】リンクのレーンエラーを報告する例示的な技術を示すフローチャートである。
図13B】リンクのレーンエラーを報告する例示的な技術を示すフローチャートである。
図13C】リンクのレーンエラーを報告する例示的な技術を示すフローチャートである。
図13D】リンクのレーンエラーを報告する例示的な技術を示すフローチャートである。
図14】マルチコアプロセッサを含むコンピューティングシステムのための実施形態のブロック図を示す。
図15】マルチコアプロセッサを含むコンピューティングシステムのための別の実施形態のブロック図を示す。
図16】プロセッサの実施形態のブロック図を示す。
図17】プロセッサを含むコンピューティングシステムの別の実施形態のブロック図を示す。
図18】複数のプロセッサを含むコンピューティングシステムの実施形態のブロックを示す。
図19】システムオンチップ(SoC)として実装された例示的なシステムを示す。
【発明を実施するための形態】
【0007】
以下の説明には、本発明の深い理解を与えるべく、多数の具体的な詳細が記載されている。例えば、特定のタイプのプロセッサおよびシステム構成、特定のハードウェア構造、特定の設計上およびミクロ設計上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプライン段階、および動作等の例示である。しかしながら、本発明を実施するのにこれらの具体的な細部を採用する必要がないことは、当業者にとって明らかであろう。他の例において、特定のおよび代替的なプロセッサアーキテクチャ、記載されたアルゴリズムのための特定のロジック回路/コード、特定のファームウェアコード、特定の相互接続動作、特定のロジック構成、特定の製造技術および材料、特定のコンパイラ実装、コードにおけるアルゴリズムの特定の表現、特定のパワーダウンおよびゲーティング技術/ロジック並びにコンピュータシステムの他の特定の動作詳細のような周知のコンポーネントまたは方法については、本発明を不必要に不明瞭にするのを回避すべく、詳細に記載されていない。
【0008】
以下の実施形態は、コンピューティングプラットフォームまたはマイクロプロセッサといった特定の集積回路における省エネルギーおよびエネルギー効率に関し記載されている場合があるが、他の実施形態が、他のタイプの集積回路およびロジックデバイスに適用可能である。本明細書に記載された実施形態に係る同様の技術および教示が、他のタイプの回路または半導体デバイスに適用可能であり、それらも、より優れたエネルギー効率および省エネルギーからの利点を享受し得る。例えば、開示された実施形態は、デスクトップコンピュータシステムまたはウルトラブック(商標)に限定されない。また、ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、および埋め込みアプリケーションのような他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCが挙げられる。埋め込みアプリケーションとは典型的には、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(ネットPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、または以下に教示される機能および動作を実行し得る任意の他のシステムを含む。さらに、本明細書に記載される装置、方法およびシステムは、物理コンピューティングデバイスに限定されず、省エネルギーおよび効率性のためのソフトウェア最適化にも関連し得る。以下の詳細な説明から容易に明らかであるように、本明細書に記載の方法、装置、システムの実施形態(ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせに関するかどうかを問わず)は、性能検討事項とバランスが採られた「グリーンテクノロジ」の将来に不可欠である。
【0009】
コンピューティングシステムが進歩するにつれ、それらのコンポーネントは、より複雑化してきている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結および通信を行うための相互接続アーキテクチャも複雑性が増している。さらに、様々な市場セグメントが、市場ニーズに適合する相互接続アーキテクチャの様々な態様を要求する。例えば、サーバがさらなる高性能を必要とする一方で、モバイルエコシステムは場合によっては、省電力化のために性能全体を犠牲にできる。とはいえ、最大限の省電力化で可能な限り高い性能を提供することが、大半のファブリックの唯一の目的である。以下に説明される多数の相互接続は、本明細書に記載される本発明の複数の態様から潜在的に利点を享受するであろう。
【0010】
ある相互接続ファブリックアーキテクチャは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)アーキテクチャを含む。PCIeの第1の目的は、クライアント(デスクトップおよびモバイル)、サーバ(標準およびエンタープライズ)、並びに埋め込みおよび通信デバイスといった複数の市場セグメントにわたる、異なるベンダのコンポーネントおよびデバイスが、オープンアーキテクチャにおいて相互運用できるようにすることにある。PCI Expressは、多種多様な将来のコンピューティングおよび通信プラットフォームのために定義された高性能な汎用I/O相互接続である。その利用モデル、ロード‐ストアアーキテクチャ、およびソフトウェアインタフェースのようないくつかのPCI属性が、その改訂版を通して維持されているが、これに対し、以前のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられた。PCI Expressのより最近のバージョンでは、新しいレベルの性能と特徴を供給すべく、ポイントツーポイント相互接続、スイッチベースの技術、およびパケット化されたプロトコルにおける進展を活用している。PCI Expressによってサポートされるいくつかの高度な特徴の中に、電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、およびエラー処理がある。
【0011】
図1を参照すると、一連のコンポーネントを相互接続するポイントツーポイントリンクから構成されるファブリックの一実施形態が示されている。システム100は、コントローラハブ115に連結されたプロセッサ105およびシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、または他のプロセッサのような任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を介してコントローラハブ115に連結される。一実施形態において、FSB106は後述のようなシリアルポイントツーポイント相互接続である。別の実施形態において、リンク106は、異なる相互接続規格に準拠するシリアルの差動相互接続アーキテクチャを含む。
【0012】
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、またはシステム100におけるデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を介してコントローラハブ115に連結される。メモリインタフェースの例としては、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース、および動的RAM(DRAM)メモリインタフェースが含まれる。
【0013】
一実施形態において、コントローラハブ115は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIeまたはPCIE)相互接続階層におけるルートハブ、ルートコンプレックス、またはルートコントローラである。コントローラハブ115の例としては、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、相互接続コントローラハブ(ICH)、サウスブリッジ、およびルートコントローラ/ハブが含まれる。チップセットという用語はしばしば、2つの物理的に別個のコントローラハブ、すなわち相互接続コントローラハブ(ICH)に連結されたメモリコントローラハブ(MCH)を指す。現在のシステムは通常、プロセッサ105と統合されたMCHを含む一方で、コントローラ115は、後述されるのと同様の態様で、I/Oデバイスと通信することに留意されたい。いくつかの実施形態において、ピアツーピアルーティングが任意に、ルートコンプレックス115を介してサポートされる。
【0014】
ここでは、コントローラハブ115はシリアルリンク119を介してスイッチ/ブリッジ120に連結される。インタフェース/ポート117および121とも称され得る入/出力モジュール117および121は、層状プロトコルスタックを含み/実装して、コントローラハブ115とスイッチ120との間の通信を提供する。一実施形態において、複数のデバイスが、スイッチ120に連結可能である。
【0015】
スイッチ/ブリッジ120は、デバイス125から上流に、すなわちルートコンプレックスに向かいヒエラルキー上方のコントローラハブ115へ、および下流に、すなわちルートコントローラからヒエラルキー下方へ、プロセッサ105若しくはシステムメモリ110からデバイス125へ、複数のパケット/メッセージをルーティングする。一実施形態において、スイッチ120は、複数の仮想PCIツーPCIブリッジデバイスの論理的アセンブリと称される。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、および他の入/出力デバイスのような、電子システムに連結される任意の内蔵若しくは外付けのデバイスまたはコンポーネントを含む。PCIe用語では通常、そのようなデバイスをエンドポイントと称される。具体的に示されていないが、デバイス125は、レガシまたは他のバージョンのPCIデバイスをサポートすべく、PCIeツーPCI/PCI-Xブリッジを含んでよい。PCIeにおけるエンドポイントデバイスは通常、レガシエンドポイント、PCIeエンドポイント、またはルートコンプレックス統合エンドポイントとして分類される。
【0016】
グラフィックアクセラレータ130も、シリアルリンク132を介してコントローラハブ115に連結される。一実施形態において、グラフィックアクセラレータ130は、ICHに連結されたMCHに連結される。スイッチ120、およびそれに基づいてI/Oデバイス125が次にICHに連結される。I/Oモジュール131および118はまた、グラフィックアクセラレータ130およびコントローラハブ115間で通信するための層状プロトコルスタックを実装する。上記のMCHの記載と同様、グラフィックコントローラまたはグラフィックアクセラレータ130それ自体が、プロセッサ105に統合されてよい。
【0017】
図2を見ると、層状プロトコルスタックの一実施形態が示されている。層状プロトコルスタック200は、クイックパスインターコネクト(QPI)スタック、PCIeスタック、次世代高性能コンピューティング相互接続スタック、または他の層状スタックのような、任意の形態の層状通信スタックを含む。図1図4に関する直下の記載はPCIeスタックに関するものであるが、同一概念が他の相互接続スタックに適用されてよい。一実施形態において、プロトコルスタック200は、トランザクション層205、リンク層210、および物理層220を含むPCIeプロトコルスタックである。図1中のインタフェース117、118、121、122、126および131のようなインタフェースが、通信プロトコルスタック200として表されてよい。通信プロトコルスタックとして表されるものは、プロトコルスタックを実装/包含するモジュールまたはインタフェースとも称され得る。
【0018】
PCI Expressは、コンポーネント間で情報を通信するためにパケットを使用する。パケットは、送信コンポーネントから受信コンポーネントへと情報を搬送すべく、トランザクション層205およびデータリンク層210で形成される。送信されるパケットが他の層を流れる際に、それらの層においてパケットを処理するために必要な追加の情報でパケットが拡張される。受信側では逆の処理が発生し、パケットは物理層220として表されるものから、データリンク層210として表されるものへと変換され、最終的(トランザクション層パケット用)に、受信デバイスのトランザクション層205によって処理され得る形態に変換される。
【0019】
トランザクション層
【0020】
一実施形態において、トランザクション層205は、デバイスの処理コアと、データリンク層210および物理層220のような相互接続アーキテクチャとの間のインタフェースを提供する。この点において、トランザクション層205の主な役割は、パケット(すなわち、トランザクション層パケットまたはTLP)のアセンブリおよびディスアセンブリである。トランザクション層205は通常、TLPのためのクレジットベースのフロー制御を管理する。PCIeは、分割トランザクション、すなわち、時間により分離されたリクエストと応答を持つトランザクションを実装し、ターゲットデバイスが当該応答のためのデータを収集中に、リンクが他のトラフィックを搬送することを可能にする。
【0021】
また、PCIeはクレジットベースのフロー制御を利用する。このスキームにおいて、デバイスはトランザクション層205内の複数のそれぞれの受信バッファの各々に対するクレジットの初期量を通知する。図1のコントローラハブ115のようなリンクの他端における外部デバイスは、各TLPによって使用されるクレジット数をカウントする。トランザクションは、そのトランザクションがクレジットリミットを超過しない場合に、送信されてよい。応答を受信すると、クレジット量が復元される。クレジットスキームの利点は、クレジットリミットに直面しなければ、クレジットリターンのレイテンシが性能に影響を与えないことである。
【0022】
一実施形態において、4つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入/出力アドレス空間、およびメッセージアドレス空間を含む。メモリマップされた位置へ/からデータを転送するために、メモリ空間トランザクションは、読み取りリクエストおよび書き込みリクエストのうちの1または複数を含む。一実施形態において、メモリ空間トランザクションは、例えば、32ビットアドレスのようなショートアドレスフォーマット、または64ビットアドレスのようなロングアドレスフォーマットといった、2つの異なるアドレスフォーマットを使用可能である。構成空間トランザクションを使用して、PCIeデバイスの構成空間にアクセスする。構成空間に対するトランザクションには、読み取りリクエストおよび書き込みリクエストが含まれる。メッセージ空間トランザクション(または、単にメッセージ)は、PCIeエージェント間のインバンド通信をサポートするよう定義される。
【0023】
従って、一実施形態において、トランザクション層205は、パケットヘッダ/ペイロード206を組み立てる。現行のパケットヘッダ/ペイロードのためのフォーマットは、PCIe仕様ウェブサイトにおけるPCIe仕様の中に見出され得る。
【0024】
図3を素早く参照するに、PCIeトランザクション記述子の一実施形態が示されている。一実施形態において、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムである。この点において、トランザクション記述子300は、システム内のトランザクションの識別をサポートする。他の潜在的な使用としては、既定のトランザクションの順序付けの修正およびチャネルとトランザクションとの関連付けを追跡することを含む。
【0025】
トランザクション記述子300は、グローバル識別子フィールド302、属性フィールド304およびチャネル識別子フィールド306を含む。図示される例では、グローバル識別子フィールド302は、ローカルトランザクション識別子フィールド308およびソース識別子フィールド310を含むよう示されている。一実施形態において、グローバルトランザクション識別子302は、すべての未処理のリクエストに対し一意である。
【0026】
一実装に従うと、ローカルトランザクション識別子フィールド308は要求元エージェントによって生成されるフィールドであり、このフィールドは、その要求元エージェントのための、完了を必要とするすべての未処理のリクエストに対して一意である。さらに、この例において、ソース識別子310は、PCIe階層内の要求元エージェントを一意に識別する。従って、ローカルトランザクション識別子308フィールドはソースID310と共に、階層ドメイン内のトランザクションのグローバルな識別を提供する。
【0027】
属性フィールド304は、トランザクションの特性および関係を指定する。この点において、属性フィールド304は、トランザクションの既定の処理に対する修正を可能にする追加の情報を提供すべく、潜在的に使用される。一実施形態において、属性フィールド304は、優先度フィールド312、予約フィールド314、順序付けフィールド316、およびスヌープ無しフィールド318を含む。ここで、優先度サブフィールド312は、そのトランザクションへ優先度を割り当てるために、イニシエータによって修正されてよい。予約属性フィールド314は、将来のため、またはベンダ定義の用途のために、予約された状態になっている。優先度またはセキュリティ属性を使用する、可能な利用モデルが、予約属性フィールドを使用して実装されてよい。
【0028】
この例において、順序付け属性フィールド316が使用され、既定の順序付けルールを修正し得る順序付けタイプを伝達する任意の情報を供給する。一例示的な実装によると、順序付け属性「0」は、既定の順序付けルールが適用されることを示し、その場合、順序付け属性「1」は緩和された順序付けを示し、その場合、書き込みは、同一方向への書き込みを渡すことができ、読み取り完了は、同一方向への書き込みを渡すことができる。スヌープ属性フィールド318は、トランザクションがスヌープされるかどうかを判断するために利用される。図示の通り、チャネルIDフィールド306は、トランザクションが関連付けられるチャネルを識別する。
【0029】
リンク層
【0030】
データリンク層210とも称されるリンク層210は、トランザクション層205と物理層220との間の中間段階として動作する。一実施形態において、データリンク層210の役割は、リンクの2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性のあるメカニズムを提供することである。データリンク層210の一方側は、トランザクション層205によって組み立てられたTLPを受け入れ、パケットシーケンス識別子211、すなわち識別番号またはパケット番号を適用し、エラー検出コード、すなわちCRC212を計算および適用し、物理デバイスから外部デバイスにわたる送信のため、修正されたTLPを物理層220に送信する。
【0031】
物理層
【0032】
一実施形態において、物理層220は、パケットを外部デバイスに物理的に送信するための論理サブブロック221および電気サブブロック222を含む。ここで、論理サブブロック221は、物理層221の「デジタル」機能を担当する。この点において、論理サブブロックは、物理サブブロック222による送信のための発信情報を準備する送信セクション、および受信された情報をリンク層210に渡す前に、それを識別および準備するための受信セクションを含む。
【0033】
物理ブロック222は、送信機および受信機を含む。送信機には、論理サブブロック221によってシンボルが供給され、送信機はそれらをシリアライズし、外部デバイスへと送信する。受信機は外部デバイスからのシリアライズされたシンボルが供給され、受信された信号をビットストリームに変換する。ビットストリームは、非シリアライズ化されて、論理サブブロック221へ供給される。一実施形態において、8b/10b送信コードが採用され、その場合、10ビットシンボルが送信/受信される。ここで、複数のフレーム223を有するパケットをフレーム化するために特別なシンボルが使用される。また、一例において、受信機も着信シリアルストリームから復元されたシンボルクロックを提供する。
【0034】
上記の通り、トランザクション層205、リンク層210、および物理層220はPCIeプロトコルスタックの特定の実施形態に関し記載されているが、層状プロトコルスタックはそのように限定されない。実際、任意の層状プロトコルが含まれ/実装されてよい。一例として、層状プロトコルとして典型的なポート/インタフェースとしては、(1)パケットを組み立てる第1の層、すなわちトランザクション層と、パケットを順序付ける第2の層、すなわちリンク層、およびパケットを送信する第3の層、すなわち物理層が含まれる。具体例としては、共通の標準インタフェース(CSI)層状プロトコルが利用される。
【0035】
次に図4を見ると、PCIeシリアルポイントツーポイントファブリックの実施形態が示されている。PCIeシリアルポイントツーポイントリンクの実施形態が示されているが、シリアルポイントツーポイントリンクは、シリアルデータを送信するための任意の送信パスを含み、そのように限定されない。図示された実施形態においては、基本的なPCIeリンクは、2組の低電圧な、差動で駆動される信号ペア、すなわち送信ペア406/411および受信ペア412/407を含む。従って、デバイス405は、データをデバイス410へ送信するための送信ロジック406と、デバイス410からデータを受信するための受信ロジック407とを含む。換言すると、2つの送信パス、すなわちパス416および417と、2つの受信パス、すなわちパス418および419とがPCIeリンクに含まれる。
【0036】
送信パスは、送信線、銅配線、光回線、無線通信チャネル、赤外線通信リンク、または他の通信パスのような、データを送信するための任意のパスを指す。例えば、デバイス405およびデバイス410のような2つのデバイス間の接続は、リンク415等のリンクと称される。リンクは、1つのレーンをサポートしてよく、各レーンは差動信号ペアのセット(1つのペアは送信用、1つのペアは受信用)を表わす。帯域幅を拡張すべく、リンクはxNとして示される複数のレーンを集約してよく、ここでNは、例えば1、2、4、8、12、16、32、64、またはそれより広い、任意のサポートされたリンク幅である。
【0037】
差動ペアは、差動信号を送信するためのライン416および417のような2つの送信パスを指す。一例として、ライン416が低電圧レベルから高電圧レベルへと切り替わる、すなわち立ち上りエッジである場合、ライン417は高ロジックレベルから低ロジックレベルへ、すなわち、立ち下りエッジへと、駆動する。差動信号は、より良好な電気的特性、たとえばより良好な信号完全性、すなわちクロスカップリング、電圧オーバシュート/アンダシュート、リンギング等を潜在的に示す。これにより、より良好なタイミングウィンドウを可能にし、それにより、より高速な送信周波数を可能にする。
【0038】
高速チャネル
【0039】
PCIe I/O仕様への改訂とは、PCIe改訂4.0(またはPCIe 4.0)である。16GT/秒ビットレートで、PCIe 4.0は、ソフトウェアインタフェースおよび機械インタフェースとの互換性を維持しつつ、PCIe3.0仕様に対し、相互接続性能帯域幅を2倍にすることを目的としている。前の世代のPCIeに対し性能帯域幅を上げることで、低コスト、低電力、プラットフォームレベルでの最小混乱状態を提供することを目標としつつ、様々な開発中のアプリケーションからの帯域幅向上への要求と整合性のとれた性能スケーリングを提供できる。PCIeアーキテクチャの広範な採用における主要な要因の1つに、大量生産機能および、より低コストの回路基板、低コストのコネクタといった材料等に対するその応答性にある。
【0040】
16GT/秒ビットレートは、性能、製造可能性、コスト、電力および互換性の間で、最適なトレードオフを提供することを目的とする。実現可能性の分析が行われ、PCIe 4.0の16GT/秒ビットレートをサポートするデバイスおよびチャネルに対する特性を推奨する。PCI‐SIG分析は、複数のトポロジに及んだ。例えば、銅での16GT/秒は、ほぼPCIe 3.0電力レベルで技術的に実現可能であることが、分析により判断され、これはPCIe 3.0仕様に対し、帯域幅を2倍にする。ここで、16GT/秒の相互接続は、前の世代のPCIeアーキテクチャとの互換性を維持しつつ、メインストリームのシリコン処理技術において潜在的に製造され、既存の低コスト材料およびインフラストラクチャを用いて展開される。
【0041】
より速いデータ転送速度のシリアルI/O(例えば、PCIe 4.0下での16GT/秒)は、著しい電力を消費し、回路の複雑性を増す可能性があり、それが潜在的にシリコン(Si)領域の使用の増加につながる。これらの考慮事項はさらに、より多くのレーン数を利用するCPUおよびシステムへのPCIe 4.0(および他のそのような高速相互接続アーキテクチャ)の統合を限定する可能性を有する。いくつかの例示的な実装において、例えば、PCIe 4.0のような高速アーキテクチャ内で採用される相互接続の長さおよびコネクタ数には、制限が課される。例えば、そのような制限は、仕様レベルで定義される。一例において、相互接続チャネルの長さは、1つのコネクタおよび、12インチ(30.48センチメートル)または12インチ(30.48センチメートル)未満に限定される。
【0042】
インターコネクタチャネルに制限を課すことで、それらの適用がいくつかのシステムに限定される可能性がある。例えば、サーバの相互接続の適用においては、プラットフォーム相互接続は、時として最大20インチ(50.8センチメートル)またはそれより長くなり、また2つのコネクタを有する可能性がある。潜在的に考えられる他の複数の例の中でも特に、相互接続チャネルを最大12インチ(30.48センチメートル)の長さおよび単一のコネクタに制限するアーキテクチャの場合、2つの12インチ(30.48センチメートル)のチャネルを結合し、サーバシステム内の複数のデバイス間の距離に対応すべく、別個のリピータチップまたは他の追加のデバイスが含まれるであろう。
【0043】
いくつかの実装において、PCIe4.0および他の相互接続に準拠するよう構成される相互接続リンクが提供可能であり、これにより、16GT/秒のデータ通信速度を依然サポートしつつ、長さが20インチ(50.8センチメートル)に等しいか、またはそれより長い2つのコネクタから成るチャネルを可能にする。例えば、より長い相互接続チャネルランからリピータおよび他のデバイスが省略可能なように、回路および相互接続は共に最適化され得る。これにより、製造コストの低減、I/Oレイテンシの低減、およびより高速の帯域幅アーキテクチャの適用可能性をさらなる適用に拡張することに役立ち得る。例えば、リピータチップは、送信機、受信機、クロック発生(例えば、位相ロックループ(PLL))、クロックリカバリ、および関連のロジック機能を含み得る。そのようなコンポーネントは、貴重な基板領域を利用する可能性がある。さらに、他の潜在的な欠点の中でも特に、x16 PCIe 4.0相互接続について、各リピータは、余分な電力を消費し、追加のコストをシステムの製造にもたらす可能性がある。例えば、リピータはまた追加のI/Oレイテンシをもたらす可能性がある。
【0044】
図5は、2つのコネクタチャネル構成の例を示す。例えば、チャネル500は、他の要素の中でも特に、ソケット(例えば、CPUの)上のセクション、マザーボード、追加カード、ライザボードといった複数のセクションを含むことができ、それらにわたり、チャネルリンクは伸び、システム内の2つのデバイス(例えば、505、510)を接続できる。この例において、複数のチャネルセクションは各々、それぞれの長さを有することができ、L1=1インチ(2.54センチメートル)、L2=10.5インチ(26.67センチメートル)、L3=0.5インチ(1.27センチメートル)、L4=4インチ(10.16センチメートル)、L5=3インチ(7.62センチメートル)、およびL6=1インチ(2.54センチメートル)で、チャネル500の全長は全部で20インチ(50.8センチメートル)である。チャネルは、それぞれのコネクタ515、520(各パッケージにおいて)を使用して、各デバイス505、510に接続可能である。
【0045】
従来の技術を使用して、図5に示されるような構成は、リンクにわたりネガティブマージンを生じさせる可能性がある。一例において、潜在的に考えらえる他の複数の特徴の中でも特に、コネクタスタブビアの影響を最小化し、SPUソケット影響を最小化し、改善された低損失のパーソナルコンピュータボード(PCB)の進歩を活用し、オンチップ受信機フロントエンドゲインにおける増加をもたらす、16GT/秒ビットレートをサポートする20インチ(50.8センチメートル)の2つのコネクタから成る相互接続(例えば、500)が提供可能であり、リンクにわたりポジティブゲインを実現する。
【0046】
コネクタは、層間に電気的接続を形成するために使用される、1または複数のビアを含むことができる。例えば、回路基板またはコンポーネントの複数の層の間で、信号および電力を搬送すべく、ビアが使用可能である。高速システムにおいて、コネクタ、チップ、または基板上に残されたビアの部分は、すなわち当該ビアを利用するポイントツーポイント電気リンク内において使用されない部分である。図6を見ると、回路基板または他のコンポーネントの断面の簡易表示600が示されている。コンポーネントは、1または複数のスタブビア605、610を含むことができる。ビアは、めっきスルーホール(PTH)技術を介するなどして、プリント回路基板上で複数の層間に電気的接続を形成できる。例えば、ビアはコネクタの複数のピンを内側の信号層(例えば、トレース)に接続できる。例えば、図6の例において、別の一部(例えば、リンク(またはチャネル)上でコンポーネントの層630に沿って別のコンポーネント、別のビア等に伸びるトレース(例えば、625))に接続するためのPTHビアの部分(例えば、615、620)を使用してリンクの一部を実装可能である。ビアの残りの部分(例えば、635)は、スタブとみなし得る。ビアを利用する高速接続において、ビアスタブ635は、共振効果(例えば、共振周波数のヌル)を引き起こす可能性があり、それによりチャネル(例えば、レーン)に対し、信号の劣化をもたらす。従って、いくつかの実装において、ビアスタブは、そのような効果を軽減すべく、650において示されるようにバックドリル可能である。バックドリルにより、これらの悪い電磁効果の原因であるビアのスタブ部分を除去できる。場合によっては、バックドリルは後工程のドリルプロセスとして実施でき、この場合、バックドリルの穴は、元のめっきスルーホール(PTH)よりも直径が大きい。
【0047】
20インチ(50.8センチメートル)の16GT/秒チャネルにおいて採用された2つのコネクタにおけるビアスタブは、例えば、バックドリル、Uターンビア、および他の解決手段を介して除去または最小化可能である。バックドリルの場合、コネクタのタイプはバックドリルに適した候補であるコネクタタイプに基づいて選択されてよい。例えば、コネクタによっては、バックドリルされる場合、機械的に支障をおこし、故障が発生する可能性がある。表面実装型コネクタのような他のタイプのコネクタがより適切であり得る。
【0048】
バックドリルを介してコネクタの電気的品質を改善することに加え、CPUソケットの電気的品質も改善され、ソケット上での20インチ(50.8センチメートル)の16GT/秒のチャネルを可能にする。例えば、CPUソケットの各ピンまたは、ビアを使用して接続され、ボードを介してルーティングされる20インチ(50.8センチメートル)の16GT/秒チャネルレーンに対応する他のデバイスがバックドリルされることができる。これらのより長い、2つのコネクタから成る高速チャネルのソケットスタブの長さはまた、チャネルによって利用されるトレースのためのピンにより近い層を確保しておくことにより、減らすことができる。これにより、ソケットスタブの長さ(ビアの)が、これらのレーンをボードのそのような複数の層を通るようルーティングすることによって、境されることを許容可能にする。
【0049】
CPUソケット影響の最小化には、20インチ(50.8センチメートル)の16GT/秒のチャネルのレーンにレイアウトの優先度が付与されるよう、ボードのピンアウトおよびブレークアウトのレイアウトを設計することが含まれ得る。例えば、20インチ(50.8センチメートル)の16GT/秒のチャネルに接続されたCPUの各ピンにバックドリルが利用可能なように、チャネルは層上でルーティングされるよう設計され得る。代替的(または追加的に)には、20インチ(50.8センチメートル)の16GT/秒のチャネルが、ソケットスタブの長さが制約されることを許容する複数の層を利用するよう、ルーティングは設計可能である。
【0050】
図7は、ボードの断面の簡易表示であり、ボードを介して、2つのデバイス705、710は、例示的な2つのコネクタから成るリンク(例えば、20インチ(50.8センチメートル)の16GT/秒のチャネルを具現化するもの)を使用して接続されている。この例においては、ピンフィールドにおける他のブレークアウトチャネルをブロッキングすることなく、バックドリルが適用できるよう、デバイス705、710の複数のピンのブレークアウトは設計可能である。例えば、内側ピン(例えば、715)は、ボードのより下側の層をルーティングする外側ピン(例えば、720)のブレークアウトの上方の層にブレークアウトするよう設計可能である。さらに、ピンは、そのビアスタブがドリルアウトされる任意のピン(例えば、20インチ(50.8センチメートル)の16GT/秒のチャネルのピン)が、電力ビアに隣接して位置されないよう配置されるべく設計可能である。というのは、バックドリル(例えば、725a~725f)は電源プレーンおよび形状に穴を開けるリスクを冒す可能性があり、潜在的に非効率な電力供給ネットワークをもたらすことがあるからである。また、他のルールおよび例の中でも特に、接地ピンはバックドリル後に接地面をもたらす穴に基づいて配置され得る。
【0051】
リンクにわたり、ポジティブゲインを依然実現しつつ、16GT/秒に対応またはそれを超えるビットレートを許容すべく、追加の特徴が20インチ(50.8センチメートル)の2つのコネクタから成るチャネルに含まれ得る。例えば、4GHzにおいて、0.48dB/inより小さいか、または実質的にそれに等しいトレース差動挿入損失を持つボードのような低損失PCボードが、実現可能である。
【0052】
2つのコネクタから成る12インチ(30.48センチメートル)のチャネルの当該コネクタおよびソケットにおけるスタブの影響を軽減すること、および低損失ボードを使用するチャネルを提供することに加え、少なくとも20インチ(50.8センチメートル)のチャネルにおける16GT/秒速度は、場合によっては、受信機フロントエンドにおける追加のゲインおよび/または連続時間リニアイコライザ(CTLE)における追加のピークをさらに提供することによって、実現可能である。いくつかの例において、他の複数の潜在的な例の中でも特に、受信機フロントエンドは、例えば、CTLE、AGC(automatic gain control)、DFE(decision‐feedback equalizer)、および/またはデータサンプラ(スライサとも呼ばれる)を含む、信号データパスにおいて結合されたアナログ回路を含むことができる。例えば、一実装において、受信機フロントエンドおよび/またはCTLEにおいて、合計およそ6dBのゲイン(例えば、PCIe 4.0のベースラインを超える)を追加することが、20インチ(50.8センチメートル)の16GT/秒のチャネルを実現することに役立ち得る。他の複数の例の中でも特に、適度の量のゲイン(例えば、およそ6dB)を実現することが、例えば、単一のゲインステージの追加によって、電力および回路の複雑性がわずかに増すことのみで達成可能である。さらに、いくつかのシステムにおいて、ゲインは調整可能または別途チャネル上で構成可能である。例えば、他の複数の例の中でも特に、16GT/秒の速度が利用されるアプリケーションに対し、チャネルはプログラム的に調整可能であり、ゲインは、より低速を使用するアプリケーションに対しては、オフにできる。
【0053】
信頼性、可用性、および保守性(RAS)
【0054】
いくつかの実装において、PCIeのような相互接続アーキテクチャは、システムにおける信頼性、可用性、および保守性(RAS)に対する強化点を含むことができる。この問題はすべてのデータ転送速度に当てはまる可能性がある一方で、いくつかのアーキテクチャは、より高速のデータ転送速度との関連において特定のエンコーディングスキームを適用可能である。例えば、PCIe 4.0(並びにPCIe改訂3.0)は、128b/130bエンコーディングスキームを例えば、8GT/秒を超えるデータ転送速度に採用する。128b/130bスキームにおいては、他の複数の例の中でも特に、レーンごとのパリティが、SKP(または「スキップ」)の順序付けられたセット(SKP OS)ごとに提供され、リンク内のどのレーンが、予測分析を実行できなかったであろうこと、および適切であれば、狭められたリンク幅で動作できなかったであろうことを識別する。レーンパリティは、リンクの特定のレーンにおけるエラーを識別する際に効果的なツールであり得る。しかしながら、いくつかの例においては、リンクが主にアイドルの場合(例えば、リンク上でロジカルアイドルフレーミングトークン(IDL)を有する)、パリティビットを介して提供される検出機能が損なわれることを引き起こす危険性が存在する可能性がある。というのは、フレーミングトークン(例えば、IDL)内のエラーは、パリティ情報をその時点まで除去するリンク回復をもたらし得るからである。従来のアーキテクチャのエラー検出メカニズムにおいて、エラーの過小評価を引き起こし得る、追加の盲点が存在する可能性がある。例えば、他の複数の欠点の中でも特に、相互接続アーキテクチャは、検出されたフレーミングトークンエラーに関する欠陥のあるレーンをより少なく検出するか、あるいはまったく検出できない可能性がある。
【0055】
いくつかのアーキテクチャにおいて、リンク上で検出または予期されるエラー、並びに場合によっては、エラーが発生する特定のレーンを識別するためのレジスタが提供可能である。例えば、図8に示される通り、PCIeは、第2のPCIe拡張機能構造のような機能構造に関連するレーンエラー状態(LES)レジスタ805を提供可能である。そのような機能構造800は、LESレジスタ805に加え、第2のPCIe拡張機能ヘッダ810、リンク制御3レジスタ815、およびイコライゼーション制御レジスタ820を含むことができる。いくつかの実装において、LESレジスタは、32ビットベクトルを含むことができ、そこにおいて、各ビットは、リンク内の1つのレーン(例えば、レーン番号によって識別される)に対応し、レーンがエラーを検出したかを示す。LESレジスタ内でのエラーイベントの報告をもたらし得るエラーのセットがPCIeで定義されている。例えば、他の複数の例の中でも特に、上記で紹介した通り、最後のSKP OS(またはStart of Data Stream(SDS)の順序付けられたセット)後のスクランブル後に送信されたすべてのデータブロックのペイロード内に偶数パリティが存在することが検出されたかを示すSKP OSに含まれるデータパリティビットを介して、データパリティが実装され得る。しかしながら、データパリティは各レーンに独立的に計算可能である。受信デバイスおよび送信デバイスは、同一技術を使用してパリティを計算し、受信機は、各レーンの計算されたパリティを、送信機によって計算されたパリティ(パリティビットによって識別されるような)と比較して、潜在的なエラーを識別する。例えば、計算および受信された値が一致しない場合、LESレジスタ内のビット(例えば、不一致が検出されたレーン番号に対応する)が設定可能である。
【0056】
上記の通り、および図9の簡易表示900に示される通り、データはリンクの2または2より多いレーンで送信可能である。例えば、例示的なPCIeにおいて示される通り、データ送信の基本的なエンティティは、8ビットデータキャラクタとして実装されるシンボルのようなシンボルであり得る。データブロックのペイロードは、フレーミングトークン、トランザクション層パケット(TLP)、データリンク層パケット(DLLP)等を含み得るデータストリームとして定義されるシンボルのストリームである。データストリームの各シンボルが、送信のためにリンクの単一のレーン上に配置され得、シンボルのストリームは、リンクのすべてのレーンにわたりストリップに配置され、複数のブロックの境界に及ぶ。さらに、いくつかの例において、物理層は、レーンごとのブロックコードを使用できる。各ブロックは、2ビットの同期ヘッダおよびペイロードを含むことができる。PCIeにおいては、ブロックが含むペイロードタイプを定義する、2つの有効な同期ヘッダのエンコーディング、10bおよび01bが定義される。例えば、同期ヘッダ10bは、データブロックを示すことができ、同期ヘッダ01bは、順序付けられたセットのブロックを示すことができる。一例として、図9は、レーン0、1、2、および3の4つのレーン上でのデータストリームの送信を示す。マルチレーンリンクのすべてのレーンは、同一の同期ヘッダを用いて複数のブロックを同時に送信する。ビットの送信順序は、同期ヘッダ(レーン上に「H0‐H1」として配置され、「H1H0」で表される)で開始でき、次に「S0」で開始し、「S7」で終了する、レーン上に配置される「S7‐S6‐S5‐S4‐S3‐S2‐S1‐S0」で表される第1のシンボルが続く。
【0057】
PCIeは、データストリーム内の不一致または無効な同期ヘッダに対応するエラーをLESレジスタに報告するオプションを受信機に対し提供する。例えば、他の複数の例の中でも特に、複数のレーンのうちの1または複数(例えば、データストリーム内の第1の2つのUI中)が、無効な値(例えば、00b、11b)を持つ同期ヘッダを含むことを識別することは、当該レーン上でのエラーとして識別され得、それはLESレジスタに報告され得る。
【0058】
図10を見ると、例示的なフレーミングトークン1005、1010、1015、1020、1025を表わしたものが示されている。フレーミングトークン(または「トークン」)は、当該トークンに関連付けられたシンボル数を指定または暗示する物理層データカプセル化であり得、それにより次のフレーミングトークンの位置を識別する。データストリームのフレーミングトークンは、データストリームの第1のデータブロックの第1のレーン(例えば、レーン0)の第1のシンボル(シンボル0)に位置付けられ得る。一例において、PCIeは、TLPの開始(STP)トークン1005、データストリームの終了(EDS)トークン1010、エンドバッド(EDB)トークン1015、DLLPの開始(SDP)トークン1020、およびロジカルアイドル(IDL)トークン1025を含む5つのフレーミングトークンを定義する。STPトークン1005は、4つのシンボルからなる長さであり、データリンク層情報が続き得る。例示的なEDSトークン1010は、4つのシンボルからなる長さで、次のブロックは、順序付けられたセットのブロックであることを示すことができる。EDBトークン1015も、4つのシンボルからなる長さで、TLPが「間違い」であり、無効化されたことを確認する。EDBは常に、TLPデータに続く。さらに、SDPトークン1020は、より短い2つのシンボルの長さであり、その後にDLLP情報が続き得る。この例の最後におけるIDLトークン1025は、単一のシンボルであり、TLP、DLLP、あるいは他のフレーミングトークンが何もリンク上で送信されない場合に送信される。
【0059】
図11は、例示的なx8リンク経由で送信された例示的なデータを示す表示1100を示し、PCIeのような特定の相互接続アーキテクチャに従い定義されたデータストリームの特徴を示す。この例において、データは、SKPの順序付けられたセットの送信を含むことができる。この例において、ストリームは、データブロックを示す同期ヘッダH1H0=10bの送信で開始できる。従って、STPフレーミングトークンが、レーン0~3上で第1のシンボル0として送信され、TLPストリームの開始を示すことができる。リンク巡回冗長検査(LCRC)がTLPデータの後に続き、DLLPデータが送信される(例えば、シンボル3~4において)ことを示すSDPヘッダがさらに続く。巡回冗長検査(CRC)データも、DLLPデータに関連して提供され得る。
【0060】
図11の例において、一連のUIの間、データがリンク上で送信されないとき、ロジカルアイドル(IDL)トークンが送信される。当該複数のレーン上での順序付けられたセットのデータへの移行を示す、EDSトークンが次に送信され得る。例えば、別の同期ヘッダ(例えば、1105において)が、「01b」としてエンコードされて送信され、次の複数のデータブロックは、順序付けられたセットのデータブロックであることを示すことができる。この特定の例において、送信される順序付けられたセットは、SKPの順序付けられたセット(OS)である。上記の通り、いくつかの実装において、SKP OSは、リンクの各レーン(例えば、レーン0~7)のパリティ状態を示すパリティビットを含むことができる。SKP OSはさらに、受信機にとって識別可能な定義されたレイアウトを有し得る。例えば、PCIeの128b/130bエンコーディングの場合、SKP OSは、16個のシンボルのベースを含むことができる。4つのSKPシンボルのグループ化がポートによって追加または削除され得、それに応じてSKP OSは、8、12、16、20、または24のシンボル等になり得る。さらに、他の複数の例の中でも特に、図11に示されるように、SKP_ENDシンボルが当該複数のレーン上に提供され、SKP OSの終了の位置および当該複数のレーン上で送信される次のブロックの同期ヘッダの位置を示すことができる。
【0061】
いくつかの例示的な実装において、相互接続アーキテクチャにおける複数の追加のレーンエラーを検出するロジックが提供され得る。システム内のソフトウェアが、一定時間にわたるレーンごとベースの複数のエラーを追跡すべく、LESレジスタのようなレジスタを監視できる。単一のレーンエラーは、エラーについて問題があることを示さない可能性がある。しかしながら、複数のエラーがリンクの1または複数の特定のレーンにおいて統計的に有意な頻度において発生するとき、システムソフトウェアは、当該複数の特定のレーンに関し、潜在的な問題が存在すると判断することができる。さらに、いくつかの実装において、他の複数の例の中でも特に、エラー傾向のレーンにおいて、少なくとも何らかのシステムデータの送信を回避し、リンクの再構成、リンクのより厳重な検査のためのチケットの生成等による、修正対策を取ることができる。エラーによっては、レーンごとベースの検出が難しい可能性がある。リンク上のエラーの部分を検出し報告する(例えば、パリティまたは誤った同期ヘッダに基づいて)ためのいくつかのメカニズムが提供される一方で、レーンの特定のルールに関するさらなる追加の例を識別すべく、他のアーキテクチャの特徴およびルールが活用され得る。他の複数の例および検討事項の中でも特に、リンクの個々のレーンの正常性に関するより完全なイメージを構築すべく、従来のレーンエラー報告とともにこれらのエラーも、検討のため、レジスタに対し報告可能である。
【0062】
上記のPCIeの例のような第1の例において、あるレーンが、直前に先行する無効な(不一致の、誤った、あるいは予期されない)EDSトークンを持つ順序付けられたセットのブロックを受信した場合、当該無効なEDSトークンが検出されたレーン上でエラーが発生したと推測され得る。さらに、当該レーン上での無効なEDSトークンに関するエラーが、PCIe LESレジスタ内で対応するビットを設定することなどにより、エラーレジスタに報告され得る。
【0063】
別の例において、複数の追加のレーンエラーを識別すべく、特定の順序付けられたセットに対する予め定められたフォーマットが活用可能である。例えば、SKP OSは、順序付けられたセットの終了を識別するためのSKP ENDシンボルが送信されるまで、明確に定義されたSKPシンボルを含むことができる。順序付けられたセットの予期されるSKPシンボル内(およびSKP ENDシンボルの前)内における特定のレーン上で無効またはエラーのSKPシンボルが識別された場合、当該エラーのSKPシンボルの識別を使用して、LESレジスタのようなエラーレジスタ内への特定のレーンに関するエラーの報告をトリガできる。さらに、特定のOSシンボルの定義されたタイミングも使用して、予期されないシンボルがレーン上で受信されたことを識別できる。例えば、SKPの順序付けられたセットの例で続けると、潜在的に考えられる他の複数の例の中でも特に、SKP OS内のシンボル数が4の整数倍になるとき、リンクの1または複数の特定のレーン上においてシンボル8、12、16、20、または24内でSKP_ENDを受信しないと、エラーレジスタ内の対応するビットが、当該特定のレーンに対し設定されるようにできる。
【0064】
いくつかの実装において、様々なフレーミングエラーが発生可能および検出可能である。例えば、フレーミングトークンであると予期されるシンボルを処理する場合に、フレーミングトークンの定義に一致しないシンボルまたはシンボルのシーケンスを受信することは、フレーミングエラーの可能性がある。さらに、いくつかのフレーミングトークンは、他のタイプのデータの後に続くよう定義可能であり、特定のフレーミングトークンの予期されない到来(または遅延)はフレーミングエラーの可能性がある。一例にすぎないが、多くの他の例の中でも特に、TLPの直後にEDBトークンが受信されるよう指定可能であり、任意の他の時点(TLPの直後以外)においてEDBトークンを受信すると、PCIeの仕様において定義されたフレーミングエラーのようなフレーミングエラーをトリガできる。システム内でフレーミングエラーを識別可能な一方で、いくつかの実装においては、フレーミングエラーは、レーンごとベースで判断されない、またはリンクの特定のレーンにマップされない。実際、いくつかの例において、他の複数の例の中でも特に、フレーミングエラーにより、リンク回復が開始されるようにでき、リンク回復がパリティ計算および報告(例えば、SKP OSで送信されたパリティビットを介する)を消去する場合、さらにレーンエラー検出を複雑化する。
【0065】
いくつかの実装において、論理PHYに含まれるロジック(例えば、受信デバイスにおいて)はさらに、フレーミングトークンから欠陥のあるレーンを識別できる。第1の例において、フレーミングトークンのシンボルが指定可能(図10の例に示されるように)であり、予期されるシンボル値から逸脱する複数のシンボルのうちの1つにおいてエラーを検出すること、並びにエラーのあるトークンシンボルが識別されるレーンが識別可能である。例えば、フレーミングトークンの第1のシンボルが識別可能であり、第1のシンボルが、PHYのための定義されたフレーミングトークンのセットのうちの任意の1つに係る第1のシンボルに一致しない場合、エラーがスローされ得る。このエラーは、例えば、LESレジスタ内にログ記録され得る。PCIeフレーミングトークンの例において、受信されたフレーミングトークンの第1のシンボルが、PCIe IDL、SDP、STP、EDB、またはEDSのために定義された第1のシンボルと一致しない場合、当該エラーの第1のフレーミングトークンシンボルが表われたレーンに対し、エラーが判断され得、当該エラーは、当該識別されたレーンのレーンエラーレジストリにログ記録され得る。
【0066】
第2に、別の例において、1つのシンボルのみの長さであるIDLフレーミングトークンが、TLP、DLLP、または他のフレーミングトークンが送信されない場合にリンクのすべてのレーンに対し送信されるよう指定され得る。従って、第1のIDLが、4または4より多いレーンを有するリンクのあるレーン上で表れる場合、当該IDLの複数のインスタンスが、レーンn+1、n+2、およびn+3(ここで、第1のレーンn(nモジュロ4=0))上でも表れることが予期され得る。IDLトークンを送信後、次のSTPまたはSDPトークンの第1のシンボルが、将来のシンボル時間のレーン0に送信されるよう指定可能である。従って、IDLトークンの使用および予期される使用におけるこれらの制約を考慮すると、IDLが予期される通り反復されない場合、または誤ったレーンに第1のIDLが表れる場合、当該反復されないIDLまたはそれ以外のエラーのシンボルが表れたレーンが識別され、またLESレジスタのようなエラーレジスタ内に、特定のレーンのエラーとしてログ記録され得る。
【0067】
さらに別の例において、EDBトークンが、PCIeで4つのシンボル長のような特定の長さに定義され得る。結果的に、第1のEDBシンボルを識別するが、次に定義された長さに含まれる直後に続くシンボル内に追加のEDBシンボルを識別しないことにより、フレーミングエラーが生じ得る。例えば、PCIeにおいて、フレーミングトークンEDBが、TLPの直後のレーンn(nモジュロ4=0)上で検出されるが、レーン+1、n+2、またはn+3のうちのいずれにおいても検出されない場合、予期される有効なEDBシンボルが表示されない任意のレーン(例えば、レーンn+1、n+2、またはn+3)のエラーレジスタにエラーが報告され得る。さらに、EDBトークンの第1のシンボルがTLPストリームの直後に配置されるよう定義可能であり、これにより先行するフレーミングトークン、STPは、リンク上で表示される最後のフレーミングトークンであることを意味する。従って、他の複数の例の中でも特に、EDBトークンの第1のシンボルがレーンn上に表示されるが、その直前のフレーミングトークンがSTPトークン以外の場合、レーンn上のエラーが識別され、エラーレジスタに報告され得る。
【0068】
EDBトークンのフレーミングエラーの例と同様、フレーミングエラーはまた、長さ、フォーマット、および他のフレーミングトークンの配置からのずれに基づくことができる。例えば、別の例において、SDPの第1のシンボルがレーンnにおいて検出され、有効なSDPトークンの配置ルール(例えば、DLLPトラフィックに先行する)とは整合性があるが、レーン+1がSDPトークンの予期される第2のシンボルと一致しない場合、論理PHYロジックは、レーンn+1上でエラーを識別し、当該エラーをエラーレジスタ内にログ記録し得る。
【0069】
図12は、リンクに対応するPCIe LESレジスタのような例示的なエラーレジスタ1250における複数のレーンエラー(例えば、1205、1210、1215、1220、1225、1230、1235、1240)の拡張された検出およびログ記録を示す簡易ブロック図である。例えば、同期ヘッダレーンエラー1205、およびパリティビットエラー1210の報告に加え、検出可能な追加の複数のエラーは、直前のEDSトークンエラー1215およびSKP OSエラー1220を持たないOSブロック(上記の例において記載されたような)のような、複数の順序付けられたセットのレーンエラーを含む。例えば、順序付けられたセット、データブロック、およびアーキテクチャ内のフレーミングトークンのために定義されたルールを活用する潜在的に考えられる他の複数の例の中でも特に、第1のシンボルフレーミングトークンエラー1225、IDLフレーミングトークンエラー1230(例えば、レーンn上で最初のIDL後にIDLを適切に反復することに関する)、EDBフレーミングトークンエラー1235(例えば、前述において例として概説したような、EDBトークンシンボルの配置におけるエラーに関する)、およびSDPフレーミングトークンエラー1240(例えば、SDPトークンの第2のシンボル内で検出されたエラー関する)のような複数のフレーミングトークンレーンエラーを含む、さらなるエラーが報告され得る。
【0070】
上記の通り、場合によっては、エラーまたはリンク回復を強制する他のイベントが、パリティ判断のようなレーンエラー検出メカニズムを損なう可能性がある。上記の通り、受信および送信デバイスは、データストリームまたは他のストリームのためのパリティを判断でき、送信機によって判断されたパリティ情報が、受信されたパリティ情報と、同一データストリームに対し受信機によって判断された対応するパリティ情報(当該レーンの)との比較のために、受信機に対し通信され得る。パリティ情報が定期的に送信され得る。例えば、送信機によって各レーンに対し判断されたパリティを示すSKP OSシンボルにおける1または複数のパリティビットを含む送信SKP OSが送信可能である。しかしながら、いくつかの従来型のシステムにおいては、リンク回復または他のイベントによって、前に判断されたパリティ情報が受信機に通信される前に、パリティ情報が消去および/または再開されることがもたらされ得る。従って、そのような例においては、パリティ情報に基づいて特定のレーンに対し判断されたエラーも失われ、報告されないままになり得、当該特定のレーンに対するエラー報告の精度を損なうことになる。
【0071】
一実施形態において、リンク回復がSKP OS、または回復されるリンクの各レーンのためのパリティ情報を報告するデータを含む他のデータセットによって自動的に先行されるように強制することによって、パリティ情報は維持され得る。例えば、フレーミングエラーまたはリンク回復をトリガする他のイベントに応答して、SKP OS(パリティビットを含む)が送信されるように、リンク回復プロトコルが再定義され得る。SKP OSはそれにより、送信機によって判断されたパリティ情報を、リンク回復がトリガされる瞬間まで搬送でき、受信機がパリティ情報に基づいて複数の潜在的なレーンエラーを識別できるようにする。
【0072】
一例において、パリティ情報は、リンクをアクティブ状態(例えば、L0)から回復に入らせる前に、SKP OSを送信することによって、回復前に送信可能である。例えば、各送信機は、回復に入る前に、EDSトークンを持つ追加のデータブロックが次に続くSKP OS(例えば、SKP OS間の最大間隔のような予め定義された間隔に従い)を送信できる。これにより、フレーミングエラーを発生させた可能性があったかもしれない1または複数のデータブロックを含む、受信機が受信した先行するデータブロックに対するパリティを受信機が受信することを保証する。受信機はさらに、パリティビット比較がエラーを示す場合、当該エラーを適切なLESにログ記録できる。
【0073】
別の例において、回復または他のイベントの前にパリティ情報を完了前にダンプするのではなく(例えば、パリティ情報が失われる前に通信されることを保証することを試行して)、SKP OSパリティのようなパリティ情報は、リンクがアクティブ(例えば、PCIeにおいて「LinkUp=1b」)の間、データストリームにわたるパリティをカバーするよう拡張可能である。さらに、パリティ情報はまた、当該パリティ情報が回復イベントの間中、存続するよう、リンクの各レーンについて持続的に維持され得る。従来のリンク回復では、先行するデータブロックのパリティ情報が失われる(例えば、回復によって割り込まれ)ようにしていたのに対し、パリティ情報を持続的に格納することによって、当該パリティが回復の間中、維持され、回復後に通信されることを可能にし得る(例えば、回復後の第1のSKP OSにおいて)。さらに、他の複数の例の中でも特に、場合によっては、リンクの回復後(および次のSKP OS前)に送信された新しいデータブロックのパリティ情報も判断可能であり、また、場合によっては、維持されている回復前のパリティ情報に追加され、この組み合わされたパリティ情報が、例えば、次のSKP OSにおいて通信され得る。
【0074】
上記の例は、非限定的な例示であり、特定の原理および特徴を示す目的のためだけに提供されていることを理解されたい。さらに、いくつかのシステムは、上記の特徴およびコンポーネントの2または2より多い様々な組み合わせを含み得る。一例として、システムは、上記のレーンエラー検出機能のような、上記の例示的なエラー検出の特徴の組み合わせを含むことができる。
【0075】
図13A図13Dを見ると、リンクの複数のレーン上でのエラーを検出するための例示的な技術を示す、例示的なフローチャート1300a~1300dが示されている。例えば、図13Aにおいて、複数のレーンを含むリンク上でデータが受信され得る(1305)。当該データは、複数のシンボルを含むことができ、当該複数のシンボルは監視され、当該複数のシンボルのうちの1または複数が、エラーのシンボルであるかどうか判断され得る(1310)。他の複数の例の中でも特に、エラーのシンボルは、フレーミングトークン(例えば、EDB、EDS、STP、IDL、SDP等)、順序付けられたセット(例えば、SKP OS等)、または誤った値を有し、誤ったまたは予期しない順序にあり、誤ったまたは予期しないレーンで送信され、特定の定義されたシーケンスに属しない他の定義されたシーケンスにおいて、複数のシンボルを含み得る。他の複数の例の中でも特に、エラーのシンボルが送信されたレーンが識別され得(1315)、また識別されたレーンのレーンエラーが、当該エラーのシンボルに基づいて、例えば、レーンエラーレジスタに報告され得る(1320)。
【0076】
図13Bを見ると、データが複数のレーンを含むリンク上で送信され得る(1325)。パリティ情報は、リンク上の各レーンに対し、維持され得る(1330)。リンクがアクティブ状態を終了すること(リンクの回復に関連するなど)を識別すること(1335)に応じて、アクティブリンク状態からの終了より前に、当該パリティ情報のインジケーションが送信され得る(1340)。一例において、パリティ情報のインジケーションは、受信側に送信された、PCIe SKPの順序付けられたセットのような、順序付けられたセットの複数のパリティビットに含まれ得る。パリティ情報のインジケーションは、当該パリティ情報を受け側によって受信されたパリティ情報と比較すべく、使用(例えば、特定の情報の受け側によって)され得る。パリティ情報における不一致は、不一致のパリティ情報に対応するレーンに関するレーンエラーの証拠として識別され得る。
【0077】
図13Cの例において、データはリンクの複数のレーン上で送信され得(1345)、各レーンで識別された送信データに基づいて、パリティ情報が複数のレーンの各々のために判断され得る(1350)。リンクの回復が発生し、パリティ情報が回復の間中維持され得る(1355)。回復の後、各レーンのためのパリティ情報のインジケーションが、通信され得(1370)、このインジケーションはリンク回復の間中、維持されるパリティ情報に基づくことができる。任意に、リンク回復の後、追加のデータがリンク上で送信され得(1360)、この回復後データに基づいて、各レーンに対するパリティ情報が判断され得る。各レーンのパリティ情報は、各レーン上の回復前および回復後の両方のデータに基づいて更新され得(1365)、通信されるパリティ情報(1370)のインジケーションは、この組み合わされたパリティ情報を示すことができる。
【0078】
図13Cの例に対応し、図13Dにおいて、第1のデータがリンク上で受信され得(1375)、当該複数のレーン上で受信されたデータに基づいて、第1のパリティ情報が各レーンに対し判断され得る(1380)。このパリティ情報は、第1のデータの受信後、リンクの回復の間中、維持され得る(1385)。リンクの回復後、受信されたSKPの順序付けられたセットのパリティビットで識別されるような、第2のパリティデータが、受信され得る(1398)。この第2のパリティデータは、リンク回復の間中(およびそれを超えて)維持されるパリティ情報と比較可能である。場合によっては、他の複数の例の中でも特に、リンク回復後、当該複数のレーン上で受信(1390)された第2のデータに基づいて、当該複数のレーンに対し判断されたパリティ情報を構成すべく、維持されたパリティ情報は更新(1394)可能である(例えば、この回復後データの送信に基づく、対応する送信機によるパリティ情報の更新に相当する)。
【0079】
上記の原理および例示の多くは、PCIeおよびPCIe仕様の特定の改訂の文脈の中で記載されている一方、本明細書に記載の原理、解決手段、および特徴は他のプロトコルおよびシステムに等しく適用可能であることに留意されたい。例えば、類似のレーンエラーが、他のリンクにおいて、類似のシンボル、データストリームおよびトークン、並びにこれらの他のリンク経由で送信されたデータ内のそのような構造の使用、配置、およびフォーマットに関し指定されたルールに基づく他のプロトコルを使用する他のリンクにおいて検出可能である。さらに、代替的なメカニズムおよび構造(例えば、PCIe LESレジスタまたはSKP OS以外)を使用して、システム内のレーンエラー検出および報告機能を提供できる。さらに、他の複数の例の中でも特に、リンクに対する論理的および物理的な強化点および本明細書の記載のその対応するロジックの組み合わせを含む、上記複数の解決手段の複数の組み合わせが、システム内で適用され得る。
【0080】
上記の装置、方法、およびシステムは、前述の通り、任意の電子デバイスまたはシステムにおいて実装されてよいことに留意されたい。具体例として、以下の図は、本明細書に記載の本発明を利用するための例示的なシステムを提供する。以下のシステムがより詳細に記載される通り、多数の異なる相互接続が開示され、記載され、上記説明から再検討される。容易に明らかなように、上記の進歩は、それらの相互接続、ファブリック、またはアーキテクチャのうちの任意のものに適用され得る。
【0081】
図14を参照すると、マルチコアプロセッサを含むコンピューティングシステムの一実施形態のブロック図が示されている。プロセッサ1400は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、コードを実行する他のデバイスのような任意のプロセッサまたは処理デバイスを含む。一実施形態において、プロセッサ1400は、少なくとも2つのコア、コア1401および1402を含み、これらは、非対称コアまたは対称コア(図示された実施形態)を含んでよい。しかしながら、プロセッサ1400は、対称または非対称であり得る任意の数の処理要素を含んでよい。
【0082】
一実施形態において、処理要素とは、ソフトウェアスレッドをサポートするハードウェアまたはロジックを指す。ハードウェア処理要素の例としては、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、および/または、実行状態またはアーキテクチャ状態のようなプロセッサの状態を保持可能な任意の他の要素を含む。換言すると、一実施形態において、処理要素は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードのようなコードに独立して関連付け可能な任意のハードウェアを指す。物理プロセッサ(またはプロセッサソケット)は通常、コアまたはハードウェアスレッドのような任意の数の他の処理要素を潜在的に含む集積回路を指す。
【0083】
コアとは通常、独立のアーキテクチャ状態を維持可能な集積回路上に位置するロジックを指し、独立に維持される各アーキテクチャ状態は、少なくともいくつかの専用実行リソースと関連付けられる。コアとは対照的に、ハードウェアスレッドとは通常、独立のアーキテクチャ状態を維持可能な集積回路上に位置された任意のロジックを指し、独立に維持されるアーキテクチャ状態は、実行リソースへのアクセスを共有する。わかる通り、特定のリソースが共有され、他のリソースが特定のアーキテクチャ状態に専用化された場合、ハードウェアスレッドの名称およびコアの名称間のラインが重複する。さらにしばしば、コアおよびハードウェアスレッドは、オペレーティングシステムによって個々の論理プロセッサとしてみなされ、その場合、オペレーティングシステムは、各論理プロセッサに対する操作を個々にスケジューリング可能である。
【0084】
図14に示されるように、物理プロセッサ1400は2つのコア、すなわちコア1401および1402を含む。ここで、コア1401および1402は、対称コア、すなわち、同一の構成、機能ユニット、および/またはロジックを備えるコアであるとみなされる。別の実施形態において、コア1401はアウトオブオーダプロセッサコアを含む一方、コア1402はインオーダプロセッサコアを含む。しかしながら、コア1401および1402は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、共同設計されたコア、または他の既知のコアといった、任意のタイプのコアから個々に選択されてよい。異種コア環境(すなわち、非対称コア)においては、バイナリ変換のような、ある形態の変換が利用されてよく、一方または両方のコアに対し、コードをスケジューリングまたは実行する。まだ説明していないが、コア1401内の図示された機能ユニットについて、以下にさらに詳細に述べる。コア1402におけるユニットは、図示された実施形態において同様の態様で動作する。
【0085】
図示の通り、コア1401は、ハードウェアスレッドスロット1401aおよび1401bとも称され得る、2つのハードウェアスレッド1401aおよび1401bを含む。従って、一実施形態において、オペレーティングシステムのようなソフトウェアエンティティは、プロセッサ1400を4つの別個のプロセッサ、すなわち、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサまたは処理要素として潜在的にみなす。先に暗示の通り、第1のスレッドはアーキテクチャ状態レジスタ1401aに関連付けられ、第2のスレッドは、アーキテクチャ状態レジスタ1401bに関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ1402aに関連付けられてよく、第4のスレッドは、アーキテクチャ状態レジスタ1402bに関連付けられてよい。ここで、アーキテクチャ状態レジスタ(1401a、1401b、1402a、および1402b)の各々は上記の通り、処理要素、スレッドスロット、またはスレッドユニットと称されてよい。図示の通り、アーキテクチャ状態レジスタ1401aは、アーキテクチャ状態レジスタ1401bにおいて複製されており、よって個々のアーキテクチャ状態/コンテキストは、論理プロセッサ1401aおよび論理プロセッサ1401bのために格納可能である。コア1401において、命令ポインタおよび割り当ておよびリネームブロック1430内のリネームロジックのような、他のより小さなリソースも、スレッド1401aおよび1401bのために複製されてよい。並べ替え/リタイヤユニット1435における並べ替えバッファのようないくつかのリソース、ILTB 1420、ロード/ストアバッファ、およびキューが、パーティショニングを介して共有されてよい。汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュおよびデータTLB1420、実行ユニット1440、アウトオブオーダユニット1435の部分のような他のリソースが、潜在的に完全に共有される。
【0086】
プロセッサ1400は通常、複数の他のリソースを含み、それらは完全に共有、パーティショニングを介して共有、または処理要素により/対して専用とされてよい。図14において、プロセッサの例示的な論理ユニット/リソースを有する純粋に例示的なプロセッサの実施形態が図示されている。プロセッサは、これらの機能ユニットのうちの任意のものを含む、または省略してよく、並びに図示されていない、任意の他の既知の機能ユニット、ロジック、またはファームウェアを含んでよいことに留意されたい。図示の通り、コア1401は、簡易化された代表的アウトオブオーダ(OOO)プロセッサコアを含む。しかしながら、インオーダプロセッサは、異なる実施形態において利用されてよい。OOOコアは、実行されるべき/取り出されるべき分岐を予測する分岐ターゲットバッファ1420と、命令に対するアドレス変換エントリを格納する命令変換バッファ(I-TLB)1420とを含む。
【0087】
コア1401はさらに、フェッチされた要素をデコードするフェッチユニット1420に連結されたデコードモジュール1425を含む。一実施形態において、フェッチロジックは、スレッドスロット1401a、1401bにそれぞれ関連付けられた個々のシーケンスを含む。通常、コア1401は、プロセッサ1400上で実行可能な命令を定義/指定する第1のISAに関連付けられる。通常、第1のISAの部分である機械コード命令は、命令(オペコードと称される)の部分を含み、それは実行される命令または動作を参照/指定する。デコードロジック1425は、これらの命令をそれらのオペコードから認識し、第1のISAによって定義されるよう処理するために、デコードされた命令をパイプラインで渡す回路を含む。例えば、後に詳細に記載される通り、一実施形態において、デコーダ1425は、トランザクション命令のような特定の命令を認識するよう設計または適合されたロジックを含む。デコーダ1425による認識の結果、アーキテクチャまたはコア1401は、適切な命令に関連付けられたタスクを実行すべく、特定の予め定義されたアクションを取る。本明細書で記載されたタスク、ブロック、動作、および方法のうちの任意のものが、単一または複数の命令に応答して実行されてよく、それらのうちのいくつかは、新しいまたは古い命令であってよいことを留意することが重要である。一実施形態において、デコーダ1426は、同一のISA(または、それらのサブセット)を認識することに留意されたい。あるいは、異種コア環境においては、デコーダ1426は、第2のISA(第1のISAのサブセットまたは別個のISA)を認識する。
【0088】
一例において、割り当ておよびリネームブロック1430は、命令処理結果を格納するレジスタファイルのようなリソースを予約するアロケータを含む。しかしながら、スレッド1401aおよび1401bは潜在的にアウトオブオーダ実行を可能であり、その場合、割り当ておよびリネームブロック1430は、命令結果を追跡する並べ替えバッファのような他のリソースも予約する。ユニット1430はまた、プログラム/命令参照レジスタをプロセッサ1400の内部の他のレジスタにリネームするレジスタリネーマも含んでよい。並べ替え/リタイヤユニット1435は、上述の並べ替えバッファ、ロードバッファ、およびストアバッファのようなコンポーネントを含み、アウトオブオーダ実行と、その後のアウトオブオーダ実行された命令のインオーダリタイヤとをサポートする。
【0089】
スケジューラおよび実行ユニットブロック1440は、一実施形態において、実行ユニットに対する命令/操作をスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートでスケジューリングされる。情報命令処理結果を格納すべく、実行ユニットに関連付けられたレジスタファイルも含まれる。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、および他の既知の実行ユニットを含む。
【0090】
より低レベルのデータキャッシュおよびデータ変換バッファ(D-TLB)1450が、実行ユニット1440に連結される。データキャッシュは、データオペランドのような最近使用/操作された要素を格納し、それらは、メモリコヒーレンシ状態で潜在的に保持される。D-TLBは、物理アドレスへの最近の仮想/線形変換を格納する。具体例として、プロセッサは、物理メモリを複数の仮想ページに分割するページテーブル構造を含んでよい。
【0091】
ここで、コア1401および1402は、オンチップインタフェース1410に関連付けられた第2のレベルキャッシュのような、より高レベルまたはより遠いキャッシュへのアクセスを共有する。より高レベル、またはより遠いとは、増加した、または実行ユニットからさらに離れた、キャッシュレベルを指すことに留意されたい。一実施形態において、より高レベルのキャッシュは、ラストレベルデータキャッシュ、すなわちプロセッサ1400のメモリ階層のラストキャッシュであり、例えば第2または第3のレベルデータキャッシュである。しかしながら、より高レベルのキャッシュはそのように限定されず、命令キャッシュに関連付けられてよく、またはそれを含んでよい。トレースキャッシュ、すなわち命令キャッシュのタイプが代わりに、デコーダ1425の後に連結され、最近デコードされたトレースを格納してよい。ここで、命令は潜在的にマクロ命令(すなわち、デコーダにより認識される一般的命令)を指し、それは複数のマイクロ命令(マイクロ操作)にデコードされてよい。
【0092】
図示の構成において、プロセッサ1400はまた、オンチップインタフェースモジュール1410を含む。歴史的には、メモリコントローラは、以下で詳細に後述するが、プロセッサ1400の外部のコンピューティングシステムに含まれてきた。このシナリオでは、オンチップインタフェース1410は、プロセッサ1400の外部のデバイス、例えば、システムメモリ1475、チップセット(通常、メモリ1475に接続するメモリコントローラハブ、および周辺デバイスに接続するI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、または他の集積回路、と通信する。またこのシナリオでは、バス1405は任意の既知の相互接続を含んでよく、例えば、マルチドロップバス、ポイントツーポイント相互接続、シリアル相互接続、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、層状プロトコルアーキテクチャ、差動バス、およびGTLバスである。
【0093】
メモリ1475は、プロセッサ1400に専用であってもよいし、システム内の他のデバイスと共有されてもよい。メモリ1475の共通のタイプの例としては、DRAM、SRAM、不揮発性メモリ(NVメモリ)、および他の既知のストレージデバイスが含まれる。デバイス1480は、グラフィックアクセラレータ、メモリコントローラハブに連結されたプロセッサ若しくはカード、I/Oコントローラハブに連結されたデータストレージ、無線送受信機、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の既知のデバイスを含んでよいことに留意されたい。
【0094】
しかしながら、最近、より多くのロジックおよびデバイスがSOCのような単一のダイ上に統合されており、これらのデバイスの各々はプロセッサ1400上に組み込まれてよい。例えば、一実施形態において、メモリコントローラハブが、プロセッサ1400と同一のパッケージおよび/またはダイ上にある。ここで、コア1410の部分(オンコア部分)は、メモリ1475またはグラフィックデバイス1480等の他のデバイスとのインタフェースを取るための1または複数のコントローラを含む。そのようなデバイスとインタフェースを取るための相互接続とコントローラとを含む構成は通常、オンコア(または、アンコア構成)と称される。一例として、オンチップインタフェース1410は、オンチップ通信のためのリング相互接続と、オフチップ通信のための高速シリアルポイントツーポイントリンク1405とを含む。さらに、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ1475、グラフィックプロセッサ1480、および任意の他の既知のコンピュータデバイス/インタフェース等の、さらにずっと多くのデバイスが、単一のダイまたは集積回路に統合され、高機能および低電力消費を備えたスモールフォームファクタを提供してよい。
【0095】
一実施形態において、プロセッサ1400は、本明細書に記載の装置および方法をサポートし、またはそれらとインタフェースを取るべく、アプリケーションコード1476をコンパイル、変換、および/または最適化するためのコンパイラ、最適化、および/または変換コード1477を実行可能である。コンパイラは通常、ソースのテキスト/コードをターゲットのテキスト/コードへと変換するためのプログラムまたはプログラムのセットを含む。通常、コンパイラによるプログラム/アプリケーションコードのコンパイルは、高レベルのプログラミング言語コードを低レベルの機械またはアセンブリ言語コードへと変換すべく、複数のフェーズおよびパスで行われる。しかしながら、簡易コンパイルのために単一パスのコンパイラも利用されてよい。コンパイラは、任意の既知のコンパイル技術を利用してよく、字句分析、前処理、解析、セマンティック分析、コード生成、コード変換、およびコード最適化のような任意の既知のコンパイラ動作を実行してよい。
【0096】
より大型のコンパイラは通常、複数のフェーズを含むが、ほとんどの場合、これらのフェーズは、次の2つの一般的なフェーズ内に含まれる。(1)フロントエンド。すなわち、概してそこでは、構文処理、セマンティック処理、およびいくつかの変換/最適化が行われ得る。(2)バックエンド。すなわち、概してそこでは、分析、変換、最適化、およびコード生成が行われる。いくつかのコンパイラはミドルと称され、コンパイラにおけるフロントエンドとバックエンドとの間のあいまいな描写を示す。結果として、挿入、関連付け、生成、またはコンパイラの他の動作への言及が、前述のフェーズまたはパスのうち任意のものにおいて、並びにコンパイラの任意の他の既知のフェーズまたはパスにおいて行われてよい。例示的な例として、コンパイラは、オペレーション、呼び出し、関数等をコンパイルの1または複数のフェーズにおいて潜在的に挿入する。例えば、コンパイルのフロントエンドフェーズにおいて呼び出し/動作の挿入、その後、変換フェーズ中にその呼び出し/動作の変換をより低レベルのコードへと変換する。動的コンパイル中、コンパイラコードまたは動的最適化コードは、そのようなオペレーション/呼び出しを挿入するだけでなく、ランタイム中の実行のためにコードを最適化してよいことに留意されたい。特定の実施例として、バイナリコード(既にコンパイルされたコード)が、ランタイム中に動的に最適化されてよい。ここで、プログラムコードには、動的最適化コード、バイナリコード、またはこれらの組み合わせが含まれてよい。
【0097】
コンパイラと同様、バイナリトランスレータ等のトランスレータは、コードを最適化および/または変換すべく、コードを静的または動的のいずれかで変換する。故に、コード、アプリケーションコード、プログラムコード、または他のソフトウェア環境の実行という言及は、(1)プログラムコードをコンパイルし、ソフトウェア構造を維持し、他の動作を実行し、コードを最適化し、またはコードを変換するための、コンパイラプログラム、最適化コードオプティマイザ、または動的若しくは静的いずれかのトランスレータの実行、(2)最適化/コンパイルがなされたアプリケーションコードといった、動作/呼び出しを含むメインプログラムコードの実行、(3)ソフトウェア構造を維持し、他のソフトウェア関連の動作を実行し、またはコードを最適化すべく、メインプログラムコードに関連付けられたライブラリ等の他のプログラムコードの実行、あるいは(4)これらの組み合わせ、を指してよい。
【0098】
ここで図15を参照すると、マルチコアプロセッサの一実施形態のブロック図が示されている。図15の実施形態に示される通り、プロセッサ1500は、複数のドメインを含む。具体的には、コアドメイン1530は、複数のコア1530A~1530Nを含み、グラフィックドメイン1560は、メディアエンジン1565を有する1または複数のグラフィックエンジンおよびシステムエージェントドメイン1510を含む。
【0099】
様々な実施形態において、システムエージェントドメイン1510は、電力制御イベントおよび電力管理を処理し、その結果、ドメイン1530および1560(例えば、複数のコアおよび/またはグラフィックエンジン)の個々のユニットは、特定のユニット内で発生するアクティビティ(または非アクティビティ)の観点から、適切な電力モード/レベル(例えば、アクティブ、ターボ、スリープ、休止状態、ディープスリープ、または他のAdvanced Configuration Power Interfaceのような状態)において動的に動作するよう独立的に制御可能である。ドメイン1530および1560の各々は、異なる電圧および/または電力で動作してよく、さらに当該複数のドメイン内の個々のユニットはそれぞれ、独立した周波数および電圧で潜在的に動作する。3つのドメインのみとともに示されているが、本発明の範囲はこの点に限定されず、他の実施形態において追加のドメインが存在してよいことに留意されたい。
【0100】
図示の通り、各コア1530は、様々な実行ユニットおよび追加の処理要素に加え、低レベルキャッシュをさらに含む。ここで、様々なコアが互いに連結され、またラストレベルキャッシュ(LLC)1540A~1540Nの複数のユニットまたはスライスから形成される共有キャッシュメモリへと連結されている。これらのLLCは通常、ストレージおよびキャッシュコントローラ機能を含み、これらのコア間、並びに潜在的にはグラフィックエンジンとの間においても共有される。
【0101】
見ての通り、リング相互接続1550は、当該コアを互いに連結し、複数のリングストップ1552A~1552Nを介して、コアドメイン1530、グラフィックドメイン1560、およびシステムエージェント回路1510間の相互接続を提供する。当該リングストップの各々は、コアとLLCスライスとの間の連結において存在する。図15に示されるように、相互接続1550は、アドレス情報、データ情報、受信確認情報、およびスヌープ/無効情報を含む様々な情報を搬送するために使用される。リング相互接続が示されているが、任意の既知のオンダイ相互接続またはファブリックが利用されてよい。例示として、上記のいくつかのファブリック(例えば、別のオンダイ相互接続、オンチップシステムファブリック(OSF)、Advanced Microcontroller Bus Architecture(AMBA)相互接続、多次元メッシュファブリック、または他の既知の相互接続アーキテクチャ)が、同様の様式で利用されてよい。
【0102】
さらに示される通り、システムエージェントドメイン1510は、関連付けられたディスプレイに対する制御およびそれに対するインタフェースを提供するディスプレイエンジン1512を含む。システムエージェントドメイン1510は、システムメモリ(例えば、複数のDIMMとともに実装されたDRAM)へのインタフェースを提供する統合メモリコントローラ1520、メモリコヒーレンシ動作を実行するコヒーレンシロジック1522のような他のユニットを含んでよい。プロセッサと他の回路との間の相互接続を有効にする複数のインタフェースが存在してよい。例えば、一実施形態において、少なくとも1つのダイレクトメディアインタフェース(DMI)1516インタフェース並びに1または複数のPCIe(商標)インタフェース1514が提供される。ディスプレイエンジンおよびこれらのインタフェースは通常、PCIe(商標)ブリッジ1518を介してメモリに連結される。さらに、追加のプロセッサまたは他の回路等の他のエージェント間での通信を提供するために、1または複数の他のインタフェースが提供されてよい。
【0103】
図16を参照すると、代表的なコアのブロック図が示されている。具体的には、図15のコア1530のようなコアのバックエンドの論理ブロックである。概して、図16に示される構造は、着信命令をフェッチし、様々な処理(例えば、キャッシュ、デコード、分岐予測等)およびアウトオブオーダ(OOO)エンジン1680に複数の命令/動作を渡すことを実行すべく使用されるフロントエンドユニット1670を有するアウトオブオーダプロセッサを含む。OOOエンジン1680は、デコードされた命令に対し、さらなる処理を実行する。
【0104】
具体的には、図16の実施形態において、アウトオブオーダエンジン1680は、1または複数のマイクロ命令またはマイクロオペレーションの形態であり得るデコードされた命令をフロントエンドユニット1670から受信し、それらをレジスタ等の適切なリソースに割り当てる割り当てユニット1682を含む。次に、命令は予約ステーション1684へ提供され、このステーションは、複数の実行ユニット1686A~1686Nのうちの1つに対し実行するために、リソースを予約およびスケジューリングする。様々なタイプの実行ユニットが存在してよく、例えば、とりわけ、演算ロジックユニット(ALU)、ロードおよびストアユニット、ベクトル処理ユニット(VPU)、浮動小数点実行ユニットを含む。これらの異なる実行ユニットからの結果は、並べ替えバッファ(ROB)1688へと提供され、並べ替えバッファは、順序付けられていない結果を取得し、それらを正しいプログラム順序へ戻す。
【0105】
さらに図16を参照し、フロントエンドユニット1670およびアウトオブオーダエンジン1680の両方が、異なるレベルのメモリ階層に連結されていることに留意されたい。具体的には、命令レベルキャッシュ1672が図示され、その次には中間レベルキャッシュ1676に連結され、その次にはラストレベルキャッシュ1695に連結される。一実施形態において、ラストレベルキャッシュ1695が、オンチップ(場合により、アンコアと称される)ユニット1690に実装されている。一例として、ユニット1690は、図15のシステムエージェント1510と同様である。上記の通り、アンコア1690は、例示された実施形態において、ED RAMを介して実装されるシステムメモリ1699と通信する。アウトオブオーダエンジン1680内の様々な実行ユニット1686が、第1のレベルキャッシュ1674と通信し、当該第1のレベルキャッシュはまた中間レベルキャッシュ1676と通信することを留意されたい。追加のコア1630N2~1630Nが、LLC1695に連結できることにも留意されたい。図16の実施形態においては、この高レベルにおいて示されているが、様々な変更および追加のコンポーネントが存在してよいことを理解されたい。
【0106】
図17を参照すると、命令を実行するための実行ユニットを含むプロセッサで形成された例示的なコンピュータシステムのブロック図が示されており、そこでは、1または複数の相互接続が、本発明の一実施形態に従い、1または複数の特徴を実装する。システム1700は、本明細書に記載される実施形態のような本発明に従い、プロセスデータのためのアルゴリズムを実行するロジックを含む実行ユニットを採用するプロセッサ1702のようなコンポーネントを含む。システム1700は、PENTIUM(登録商標)III(商標)、Pentium(登録商標)4(商標)、Xeon(商標)、Itanium、XScale(商標)および/またはStrongARM(商標)マイクロプロセッサに基づく典型的な処理システムであるが、他のシステム(他のマイクロプロセッサを有するPC、エンジニアリングワークステーション、セットトップボックス等も含む)も使用されてよい。一実施形態において、サンプルシステム1700は、ワシントン州レドモンドのマイクロソフト社から入手可能なWINDOWS(登録商標)オペレーティングシステムのあるバージョンを実行するが、他のオペレーティングシステム(例えば、UNIX(登録商標)およびLinux(登録商標))、埋め込みソフトウェア、および/またはグラフィカルユーザインタフェースも使用されてよい。従って、本発明の複数の実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
【0107】
実施形態は、コンピュータシステムに限定されない。本発明の複数の代替的な実施形態は、ハンドヘルドデバイスおよび埋め込みアプリケーションのような他のデバイスにおいて使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCを含む。埋め込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(ネットPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、あるいは少なくとも一実施形態に従う1または複数の命令を実行し得る任意の他のシステムを含み得る。
【0108】
この例示された実施形態では、プロセッサ1702は、少なくとも1つの命令を実行するアルゴリズムを実装する1または複数の実行ユニット1708を含む。一実施形態が、シングルプロセッサのデスクトップまたはサーバシステムの文脈で記載されることがあるが、代替的な実施形態が、マルチプロセッサシステムに含まれてよい。システム1700は、「ハブ」システムアーキテクチャの一例である。コンピュータシステム1700は、データ信号を処理するためのプロセッサ1702を含む。1つの例示として、プロセッサ1702は、複合命令セットコンピュータ(CISC)マイクロプロセッサ、縮小命令セットコンピュータ(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、命令セットの組み合わせを実装するプロセッサ、あるいは、例えば、デジタル信号プロセッサのような任意の他のプロセッサデバイスを含む。プロセッサ1702は、システム1700内のプロセッサ1702と他のコンポーネントとの間でデータ信号を送信するプロセッサバス1710に連結される。システム1700の要素(例えば、グラフィックアクセラレータ1712、メモリコントローラハブ1716、メモリ1720、I/Oコントローラハブ1724、無線送受信機1726、フラッシュBIOS1728、ネットワークコントローラ1734、オーディオコントローラ1736、シリアル拡張ポート1738、I/Oコントローラ1740等)は、当業者に周知の従来の機能を実行する。
【0109】
一実施形態において、プロセッサ1702は、レベル1(L1)の内部キャッシュメモリ1704を含む。アーキテクチャに応じて、プロセッサ1702は、単一の内部キャッシュまたは複数のレベルの内部キャッシュを有してよい。他の実施形態は、特定の実装および必要性に応じて、内部および外部キャッシュの両方の組み合わせを含む。レジスタファイル1706は、異なるタイプのデータを、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ、状態レジスタ、および命令ポインタレジスタを含む、様々なレジスタに格納する。
【0110】
整数および浮動小数点操作を実行するロジックを含む実行ユニット1708も、プロセッサ1702に存在する。プロセッサ1702は、一実施形態において、実行時に特定のマイクロ命令のためのアルゴリズムを実行する、または複雑なシナリオを処理するマイクロコードを格納するマイクロコード(μコード)ROMを含む。ここで、マイクロコードは、プロセッサ1702のためのロジックバグ/修正を処理すべく、潜在的に更新可能である。一実施形態について、実行ユニット1708は、パックされた命令セット1709を処理するためのロジックを含む。パックされた命令セット1709を汎用プロセッサ1702の命令セットに、命令を実行するための関連付けられた回路とともに含むことで、多くのマルチメディアアプリケーションによって使用される操作は、汎用プロセッサ1702のパックされたデータを使用して実行されてよい。従って、パックされたデータに対し操作を実行するためのプロセッサのデータバスの全幅を使用することによって、多くのマルチメディアアプリケーションが、加速され、より効率的に実行される。これにより、1または複数の操作を実行すべく、一度に1つのデータ要素といった、より小さなデータ単位をプロセッサのデータバスに渡り転送する必要性が潜在的になくなる。
【0111】
実行ユニット1708の代替的な実施形態は、マイクロコントローラ、埋め込みプロセッサ、グラフィックデバイス、DSP、および他のタイプのロジック回路においても使用されてよい。システム1700は、メモリ1720を含む。メモリ1720は、動的ランダムアクセスメモリ(DRAM)デバイス、静的ランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、または他のメモリデバイスを含む。メモリ1720は、プロセッサ1702によって実行されるデータ信号によって表される命令および/またはデータを格納する。
【0112】
本発明に係る前述の特徴または態様のうちの任意のものが、図17に例示された1または複数の相互接続で利用されてよいことに留意されたい。例えば、プロセッサ1702の内部ユニットを連結するための、不図示のオンダイ相互接続(ODI)が、上記の本発明の1または複数の態様を実装する。あるいは、本発明はプロセッサバス1710(例えば、他に高性能コンピューティング相互接続として知られる)、メモリ1720への高帯域幅メモリパス1718、グラフィックアクセラレータ1712へのポイントツーポイントリンク(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)準拠ファブリック)、コントローラハブ相互接続1722、他の図示されたコンポーネントを連結するためのI/Oまたは他の相互接続(例えば、USB、PCI、PCIe)に関連する。そのようなコンポーネントのいくつかの例としては、オーディオコントローラ1736、ファームウェアハブ(フラッシュBIOS)1728、無線送受信機1726、データストレージ1724、ユーザ入力とキーボードインタフェース1742とを備えるレガシI/Oコントローラ1710、ユニバーサルシリアルバス(USB)のようなシリアル拡張ポート1738、およびネットワークコントローラ1734を含む。データストレージデバイス1724は、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD‐ROMデバイス、フラッシュメモリデバイス、または他の大容量ストレージデバイスを備え得る。
【0113】
ここで図18を見ると、本発明の一実施形態に従う第2のシステム1800のブロック図が示されている。図18に示される通り、マルチプロセッサシステム1800は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1850を介して連結された第1のプロセッサ1870と、第2のプロセッサ1880とを含む。プロセッサ1870および1880の各々は、プロセッサの何らかのバージョンであってよい。一実施形態において、1852および1854は、高性能アーキテクチャのような、シリアルポイントツーポイントコヒーレント相互接続ファブリックの一部である。結果的に、本発明は、QPIアーキテクチャ内に実装されてよい。
【0114】
2つのプロセッサ1870、1880のみが示されているが、本発明の範囲はそのように限定されないことを理解されたい。他の実施形態において、1または複数の追加のプロセッサが、特定のプロセッサにおいて存在してよい。
【0115】
プロセッサ1870および1880は、統合メモリコントローラユニット1872および1882をそれぞれ含むように示されている。プロセッサ1870はまた、自己のバスコントローラユニットの一部として、ポイントツーポイント(P-P)インタフェース1876および1878を含み、同様に、第2のプロセッサ1880は、P-Pインタフェース1886および1888を含む。プロセッサ1870、1880は、ポイントツーポイント(P-P)インタフェース回路1878、1888を使用するP-Pインタフェース1850を介して、情報を交換してよい。図18に示されるように、IMC1872および1882は、当該複数のプロセッサをそれぞれのメモリ、すなわちメモリ1832およびメモリ1834に連結し、これらは、それぞれのプロセッサへローカルに取り付けられたメインメモリの部分であってよい。
【0116】
プロセッサ1870、1880はそれぞれ、ポイントツーポイントインタフェース回路1876、1894、1886、1898を使用する個々のP-Pインタフェース1852、1854を介して、チップセット1890と情報を交換する。チップセット1890はまた、高性能グラフィックス回路1838と、高性能グラフィックス相互接続1839沿いのインタフェース回路1892を介して情報を交換する。
【0117】
共有キャッシュ(不図示)は、いずれかのプロセッサの内部に含まれ、または両方のプロセッサの外部にあってもよいが、プロセッサが低電力モードであっても、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、P-P相互接続を介して複数のプロセッサに接続される。
【0118】
チップセット1890が、インタフェース1896を介して、第1のバス1816に連結されてよい。一実施形態において、第1のバス1816は、ペリフェラルコンポーネントインターコネクト(PCI)バス、またはPCI Expressバスまたは別の第3世代I/O相互接続バスのようなバスであってよいが、本発明の範囲はそのように限定されない。
【0119】
図18に示されるように、様々なI/Oデバイス1814が、第1のバス1816に、バスブリッジ1818とともに連結され、このブリッジは、第1のバス1816を第2のバス1820へと連結する。一実施形態において、第2のバス1820は、low pin count(LPC)バスを含む。様々なデバイスが、第2のバス1820に連結され、例えば、キーボードおよび/またはマウス1822、通信デバイス1827および、通常、一実施形態において命令/コードおよびデータ1830を含むディスクドライブまたは他の大容量ストレージデバイスのようなストレージユニット1828を含む。さらに、オーディオI/O 1824が第2のバス1820に連結されて示されている。他のアーキテクチャが可能であり、その場合、含まれるコンポーネントおよび相互接続アーキテクチャが変わることに留意されたい。例えば、図18のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装してよい。
【0120】
次に図19を見ると、本発明に従うシステムオンチップ(SOC)設計の一実施形態が示されている。特定の実施例として、SOC1900が、ユーザ機器(UE)に含まれる。一実施形態において、UEとは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付きノートブック、または任意の他の同様の通信デバイスのような、通信するためにエンドユーザによって使用される任意の他のデバイスを指す。通常、UEは、GSM(登録商標)ネットワークにおける本質的な移動局(MS)に潜在的に対応する、基地局またはノードに接続する。
【0121】
ここで、SOC1900は、2つのコア、1906および1907を含む。上記と同様、コア1906および1907は、Intel(登録商標)Architecture Core(商標)ベースのプロセッサ、Advanced Micro Devices, Inc.(AMD)のプロセッサ、MIPSベースのプロセッサ、ARMベースのプロセッサ設計、またはそれらの顧客、並びにライセンシー若しくは採用者等の命令セットアーキテクチャに準拠してよい。コア1906および1907は、システム1900の他の部分と通信するため、バスインタフェースユニット1909およびL2キャッシュ1911に関連付けられたキャッシュ制御1908に連結されている。相互接続1910は、IOSF、AMBA、または上述した他の相互接続のようなオンチップ相互接続を含み、本明細書に記載の1または複数の態様を潜在的に実装する。
【0122】
インタフェース1910は、SIMカードとのインタフェースを取る加入者識別モジュール(SIM)1930、SOC1900を初期化およびブートすべくコア1906および1907によって実行されるブートコードを保持するブートROM1935、外部メモリ(例えば、DRAM1960)とインタフェースを取るSDRAMコントローラ1940、不揮発性メモリ(例えば、フラッシュ1965)とインタフェースを取るフラッシュコントローラ1945、周辺機器とインタフェースを取る周辺コントロール1950(例えば、シリアル周辺インタフェース)、入力(例えば、タッチ対応入力)を表示および受信するビデオコーデック1920およびビデオインタフェース1925、グラフィック関連の計算を行うGPU1915等といった他のコンポーネントに対する通信チャネルを提供する。これらのインタフェースのうちの任意のものが、本明細書に記載の本発明の複数の態様を組み込んでよい。
【0123】
また、本システムは、Bluetooth(登録商標)モジュール1970、3Gモデム1975、GPS1985、およびWiFi 1985のような通信用の周辺機器を示す。上記の通り、UEは通信用無線を含むことに留意されたい。結果的に、これら周辺通信モジュールがすべて必要なわけではない。しかしながら、UEにおいては、外部通信用の何らかの形式の無線通信が含まれる。
【0124】
本発明は、限定された数の実施形態に関し記載されているが、当業者はそれらからの多数の修正形態および改変形態を想起するであろう。添付の特許請求の範囲は、そのようなすべての修正形態および改変形態が、本発明の真の精神および範囲に属することを意図している。
【0125】
設計は、作成からシミュレーション、そして製造まで様々な段階を経ることがある。設計を表わすデータは、当該設計を多数の態様で表してよい。第1に、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語または別の機能記述言語を使用して表されてよい。また、ロジックおよび/またはトランジスタゲートを持つ回路レベルモデルが、設計処理のどこかの段階で生成されてよい。さらに、いくつかの段階において、多くの設計は、ハードウェアモデルにおける様々なデバイスの物理的配置を表わすレベルのデータに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータとは、集積回路の製造に使用されるマスクのための異なるマスク層に、様々な特徴が存在するか存在しないかを指定するデータであってよい。設計の任意の表現において、データは任意の形態の機械可読媒体に格納されてよい。メモリまたはディスク等の磁気または光ストレージが当該機械可読媒体であってよく、変調されたまたはそれ以外の方法で生成された、そのような情報を送信するための光または電気の波を介して送信される情報を格納する。コードまたは設計を、示しまたは搬送する電気的な搬送波が送信される場合、その電気信号のコピー、バッファ処理、または再送信が実行される範囲において、新たなコピーが作成される。従って、通信プロバイダまたはネットワークプロバイダは、搬送波にエンコードされた情報のような、本発明の複数の実施形態における複数の技術を具体化した項目を有形の機械可読媒体に少なくとも一時的に格納してよい。
【0126】
本明細書で使用されるモジュールとは、ハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせを指してよい。一例として、モジュールは、マイクロコントローラのような、マイクロコントローラによって実行されるよう適合されたコードを格納するための非一時的媒体に関連付けられたハードウェアを含む。従って、一実施形態において、モジュールという言及は、非一時的媒体に保持されるコードを認識および/または実行するよう特に構成されたハードウェアを指す。さらに、別の実施形態において、モジュールの使用は、予め定められた動作を実行するためのマイクロコントローラによって実行されるよう特に適合されたコードを含む非一時的媒体を指す。さらに、推測され得るように、さらなる別の実施形態では、モジュールという用語は(この例では)、当該マイクロコントローラおよび当該非一時的媒体の組み合わせを指すことがある。通常、別個に示されるモジュールの境界線は一般に変化し、潜在的には重複する。例えば、第1および第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを共有しつつ、その一方で、潜在的には、いくつかの独立したハードウェア、ソフトウェアまたはファームウェアを維持してよい。一実施形態において、ロジックという用語の使用は、トランジスタ、レジスタのようなハードウェア、またはプログラマブルロジックデバイスのような他のハードウェアを含む。
【0127】
一実施形態において、「構成される」という文言の使用は、指定された、または判断されたタスクを実行すべく、装置、ハードウェア、ロジック、または要素を、配置し、組み立て、製造し、販売の申出をし、輸入し、および/または、設計することを指す。この例において、動作していない装置またはその要素が、指定されたタスクを実行すべく設計され、連結され、および/または相互接続されている場合には、依然として、指定されたタスクを実行するよう「構成され」ている。純粋な例示として、ロジックゲートが動作中、0または1を提供してよい。しかし、イネーブル信号をクロックに供給するよう「構成され」たロジックゲートは、1または0を提供し得るすべての潜在的なロジックゲートを含むわけではない。代わりに、ロジックゲートは、動作中に1または0の出力がクロックをイネーブルにするように、いくつかの態様で連結されているものである。「構成され」という用語の使用は、動作を必要とはせず、その代わりに、装置、ハードウェア、および/または要素の潜在的な状態に重きを置いたものであって、その場合、潜在的な状態においては、装置、ハードウェアおよび/または要素は、装置、ハードウェアおよび/または要素が動作中、特定のタスクを実行するよう設計されていることに再度留意されたい。
【0128】
さらに、「すべく」、「可能」、および/または「動作可能」という文言の使用は、一実施形態において、装置、ロジック、ハードウェアおよび/または要素を指定された態様で使用することを可能にするよう設計された、いくつかの装置、ロジック、ハードウェア、および/または要素を指す。上記したように、すべく、可能、または動作可能の使用は、一実施形態において、装置、ロジック、ハードウェアおよび/または要素の潜在的な状態を指し、この場合、装置、ロジック、ハードウェア、および/または要素は、動作をしているのではなく、指定された態様での装置の使用を可能にするような態様で設計がされていることに留意されたい。
【0129】
本明細書中で使用される値は、数値、状態、ロジック状態、またはバイナリロジック状態についての任意の既知の表現を含み得る。通常、ロジックレベル、ロジック値、または論理値という使用は、単純にバイナリロジック状態を表す1および0のレベルまたは値とも称される。例えば、1は高ロジックレベルおよび0は低ロジックレベルを指す。一実施形態において、トランジスタまたはフラッシュセルのようなストレージセルは、単一の論理値または複数の論理値を保持可能であってよい。しかしながら、コンピュータシステムにおける他の値の表現が使用されている。例えば、10進数の10は、バイナリ値1010として、16進数では文字Aとして、表され得る。従って、値は、コンピュータシステムにおいて保持可能な情報の任意の表現を含む。
【0130】
さらに、状態は、値または値の部分によって表現されてよい。一例として、ロジック1等の第1の値が、既定または初期の状態を表し得るが、ロジック0等の第2の値は、既定以外の状態を表し得る。また、一実施形態において、リセットおよび設定という用語は、既定および更新された値または状態をそれぞれ指す。例えば、既定値は潜在的に高論理値、すなわち、リセットを含むが、更新された値は潜在的に低論理値、すなわち、設定を含む。値の任意の組み合わせが、任意の数の状態を表すべく利用され得ることに留意されたい。
【0131】
上述の方法、ハードウェア、ソフトウェア、ファームウェアまたはコードの複数の実施形態は、機械アクセス可能、機械可読、コンピュータアクセス可能、または処理要素によって実行可能なコンピュータ可読媒体上に格納された命令またはコードを介して実装されてよい。非一時的機械アクセス可能/可読媒体は、コンピュータまたは電子システムのような機械によって読み取り可能な形態の情報を提供(すなわち、格納および/または送信)する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体としては、静的RAM(SRAM)若しくは動的RAM(DRAM)のようなランダムアクセスメモリ(RAM)、ROM、磁気若しくは光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的(伝搬される)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信される情報を保持するための他の形態のストレージデバイス等を含み、これらは、それらからの情報を受信できる非一時的媒体とは区別される。
【0132】
本発明の複数の実施形態を実行するロジックをプログラムすべく使用される命令は、DRAM、キャッシュ、フラッシュメモリ、または他のストレージのようなシステム内のメモリ内部に格納されてよい。さらに、命令はネットワークを介して、または他のコンピュータ可読媒体によって配信され得る。従って、機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で情報を格納または送信するための任意のメカニズムを含んでよい。そのようなものとして、限定されないが、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク、リードオンリメモリ(CD‐ROM)、および光磁気ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気または光カード、フラッシュメモリ、または電気形態、光形態、音響形態若しくは他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を介したインターネット経由での情報送信に使用される有形の機械可読ストレージが挙げられる。従って、コンピュータ可読媒体には、機械(例えば、コンピュータ)によって読み取り可能な形態で電子命令または情報を格納または送信するのに好適な任意のタイプの有形の機械可読媒体が含まれる。
【0133】
以下の複数の例は、本明細書に従う複数の実施形態に関する。1または複数の実施形態は、少なくとも16ギガ転送/秒(GT/S)のビットレートをサポートするペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)プロトコルに基づくチャネルを提供するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、チャネルは、2つのコネクタを含み、12インチ(30.48センチメートル)より長い長さを有する。
【0134】
少なくとも一例において、チャネルは、少なくとも1つのビアを含み、上記ビアのスタブは少なくとも部分的に除去されている。
【0135】
少なくとも一例において、上記ビアは、上記スタブを除去すべく、バックドリルされる。
【0136】
少なくとも一例において、上記ビアは、上記複数のコネクタのうちの第1のコネクタのビアである。
【0137】
少なくとも一例において、第1のデバイスに接続するために上記コネクタによって利用される各ビアは、バックドリルされる。
【0138】
少なくとも一例において、第2のデバイスに接続するために利用される上記複数のコネクタのうちの第2のコネクタの複数のビアは、バックドリルされる。
【0139】
少なくとも一例において、上記ビアは、プロセッサソケットのビアである。
【0140】
少なくとも一例において、上記チャネルの各レーンは、それぞれのプロセッサソケットの対応する部分を含み、ビアスタブを有する上記チャネルのレーンに対応する上記複数のプロセッサソケットの各々は、バックドリルされる。
【0141】
少なくとも一例において、低損失回路基板が提供され、上記チャネルは上記回路基板に少なくとも部分的に実装される。
【0142】
少なくとも一例において、上記低損失回路基板は、より少ないトレース差動挿入損失を有する。少なくとも一例において、ゲインが上記チャネルの受信機フロントエンドにおいて適用される。
【0143】
少なくとも一例において、上記ゲインは、およそ6dBを含む。
【0144】
少なくとも一例において、ゲインは上記チャネルのcontinuous time linear equalizerに適用される。
【0145】
少なくとも一例において、上記受信機フロントエンドおよび上記continuous time linear equalizerに適用された上記結合されたゲインは、およそ6dBである。
【0146】
少なくとも一例において、上記チャネルは、バックドリルされたスタブを持つ少なくとも1つのビアを含み、上記チャネルは、低損失回路基板に少なくとも部分的に実装され、およそ6dBの結合されたゲインが、上記チャネルの受信機フロントエンドおよび上記チャネルのcontinuous time linear equalizerのうちの1または複数において適用される。
【0147】
少なくとも一例において、上記チャネルの長さは、少なくとも20インチ(50.8センチメートル)である。
【0148】
1または複数の実施形態は、2つのコネクタから成るマルチレーンリンクを含むチャネル上で少なくとも16GT/秒のビットレートでデータを送信するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記チャネルの長さは、12インチ(30.48センチメートル)より長い。
【0149】
少なくとも一例において、上記チャネルの長さは、少なくとも20インチ(50.8センチメートル)である。
【0150】
少なくとも一例において、上記チャネルは、1または複数のビアを含み、上記複数のビアの複数のスタブはバックドリルされる。
【0151】
少なくとも一例において、上記1または複数のビアは、上記2つのコネクタのうちの一方または両方に含まれる。
【0152】
少なくとも一例において、上記チャネルは、複数のプロセッサソケットを含み、上記複数のプロセッサソケットは、上記複数のビアを含む。
【0153】
少なくとも一例において、上記チャネルは、バックドリルされたスタブを持つ少なくとも1つのビアを含み、上記チャネルは、低損失回路基板に少なくとも部分的に実装され、およそ6dBの結合されたゲインが、上記チャネルの受信機フロントエンドおよび上記チャネルのcontinuous time linear equalizerのうちの1または複数において適用される。
【0154】
少なくとも一例において、上記チャネルは、PCIeベースのチャネルを含む。
【0155】
1または複数の実施形態は、2つのコネクタから成るマルチレーンリンクを含むチャネル上で少なくとも16GT/秒のビットレートで送信されるデータを受信するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記チャネルの長さは、12インチ(30.48センチメートル)より長い。
【0156】
少なくとも一例において、上記チャネルの長さは、少なくとも20インチ(50.8センチメートル)である。
【0157】
少なくとも一例において、上記チャネルは、1または複数のビアを含み、上記複数のビアの複数のスタブはバックドリルされる。
【0158】
少なくとも一例において、上記1または複数のビアは、上記2つのコネクタのうちの一方または両方に含まれる。
【0159】
少なくとも一例において、上記チャネルは、複数のプロセッサソケットを含み、上記複数のプロセッサソケットは、上記複数のビアを含む。
【0160】
少なくとも一例において、上記チャネルは、バックドリルされたスタブを持つ少なくとも1つのビアを含み、上記チャネルは、低損失回路基板に少なくとも部分的に実装され、およそ6dBの結合されたゲインが、上記チャネルの受信機フロントエンドおよび上記チャネルのcontinuous time linear equalizerのうちの1または複数において適用される。
【0161】
少なくとも一例において、上記チャネルは、PCIeベースのチャネルを含む。
【0162】
少なくとも一例において、第1のデバイスおよび相互接続チャネルを使用して上記第1のデバイスに通信可能に連結された第2のデバイスを含むシステムが提供され、上記相互接続チャネルは、少なくとも16GT/秒のビットレートをサポートするペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)プロトコルベースのリンクを含み、上記リンクは、2つのコネクタを含み、12インチ(30.48センチメートル)より長い長さを有する。
【0163】
少なくとも一例において、上記システムは、サーバチップセットを含む。
【0164】
少なくとも一例において、上記第1のデバイスは、プロセッサデバイスを含む。
【0165】
1または複数の実施形態は、特定のレーン上で送信された少なくとも1つのエラーのシンボルの検出に基づいて、リンクの複数のレーンのうちの特定の1つのレーン上で第1のレーンエラーを識別し、上記第1のレーンエラーをレーンエラーレジスタに報告するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
【0166】
少なくとも一例において、上記レーンエラーレジスタにおいて報告された複数のレーンエラーは、上記複数のレーンにおける対応するレーンを識別する。
【0167】
少なくとも一例において、上記複数のレーンのうちの少なくとも1つのレーンにおけるエラー同期ヘッダの検出に基づいて、第2のレーンエラーがリンク上で識別され、上記第2のレーンエラーは、上記レーンエラーレジスタに報告される。
【0168】
少なくとも一例において、上記リンク経由で送信されたデータストリームに対するパリティ情報の不一致の判断に基づいて、第3のレーンエラーが識別され、上記第3のレーンエラーは、上記レーンエラーレジスタに報告される。
【0169】
少なくとも一例において、パリティ情報は、SKPの順序付けられたセット(SKP OS)で受信される。
【0170】
少なくとも一例において、上記I/Oロジックは、物理層ロジックを含む。
【0171】
少なくとも一例において、上記エラーのシンボルは、SKP OSに含まれるシンボルに対するエラーを含む。
【0172】
少なくとも一例において、上記エラーのシンボルは、上記SKP OS内の第1のSLP OSシンボルと、上記SKP OS内のSLP ENDマーカとの間に検出されたSKP OS以外のシンボルを含む。
【0173】
少なくとも一例において、上記エラーのシンボルは、SKP OSのシンボル8、12、16、20または24以外のシンボルに配置されるSKP ENDを含む。
【0174】
少なくとも一例において、上記エラーのシンボルは、フレーミングトークンの第1のシンボルを含む。
【0175】
少なくとも一例において、上記フレーミングトークンは、PCIeフレーミングトークンを含む。
【0176】
少なくとも一例において、上記フレーミングトークンは、ロジカルアイドルトークン(IDL)、データリンク層パケット(DLLP)データトークンの開始(SDP)、トランザクション層パケット(TLP)データトークンの開始(STP)、および不良TLPトークンの終了(EDB)のうちの少なくとも1つを含む。
【0177】
少なくとも一例において、上記エラーのシンボルは、エラーのIDLトークンシンボルを含む。
【0178】
少なくとも一例において、第1のIDLトークンが複数のレーンにおける特定のレーンnに含まれ、上記エラーのシンボルは、上記複数のレーンにおけるレーンn+1、n+2、およびn+3のうちのいずれか1つにおいて検出されたIDL以外のシンボルを含む。
【0179】
少なくとも一例において、上記エラーのシンボルは、EDBトークンシンボルを含む。
【0180】
少なくとも一例において、第1のEDBトークンが、上記複数のレーンにおける特定のレーンn上でTLPに続き、上記エラーのシンボルは、上記複数のレーンにおけるレーンn+1、n+2、およびn+3のうちのいずれか1つにおいて検出されたEDB以外のシンボルを含む。
【0181】
少なくとも一例において、上記エラーのシンボルは、EDBトークンのシンボルを含み、上記EDBトークンは、SDPトークン以外のフレーミングトークンに続く。
【0182】
少なくとも一例において、上記エラーのシンボルは、SDPトークンシンボルを含む。
【0183】
少なくとも一例において、SDPトークンの第1のシンボルは、上記複数のレーンにおける特定のレーンnに含まれ、上記エラーのシンボルは、上記複数のレーンにおけるレーンn+1で検出されたSDP以外のシンボルを含む。
【0184】
少なくとも一例において、上記レーンエラーレジスタは、PCIeレーンエラー状態(LES)レジスタを含む。
【0185】
少なくとも一例において、上記リンクは、PCIe準拠リンクを含む。
【0186】
少なくとも一例において、第2のレーンエラーが、先行するEDSトークンが欠如する順序付けられたセットのブロックの検出に基づいて、上記リンク上で識別される。
【0187】
少なくとも一例において、順序付けられたセットのシンボル、IDLトークンシンボル、SDPトークンシンボル、STPトークンシンボル、およびEDBトークンシンボルのうちのいずれか1つにおけるエラーの検出に基づくレーンエラーが、識別され、報告される。
【0188】
少なくとも一例において、特定のレーンに関する複数のレーンエラーを識別すべく、レーンエラーレジスタが監視され、上記レーンエラーレジスタ内の上記特定のレーンに対し識別された上記複数のエラーに基づいて、上記特定のレーンに欠陥があることを判断できる。
【0189】
少なくとも一例において、上記特定のレーンに欠陥があることを判断することは、上記複数のエラーの統計的分析を含む。
【0190】
1または複数の実施形態は、複数のレーンを含むリンクが、アクティブ状態を終了することを識別し、上記リンク経由で前に送信されたデータに基づいて、上記複数のレーンのためのパリティ情報を維持し、上記アクティブ状態からの上記終了前に、上記パリティ情報のインジケーションを送信するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
【0191】
少なくとも一例において、上記パリティ情報の上記インジケーションは、上記終了に応答して送信される。
【0192】
少なくとも一例において、上記パリティ情報の上記インジケーションは、順序付けられたセットで送信される。
【0193】
少なくとも一例において、各レーンのための上記パリティ情報の上記インジケーションは、上記順序付けられたセットに含まれる各レーンのためのそれぞれのパリティビットに含まれる。
【0194】
少なくとも一例において、上記順序付けられたセットは、PCIe SKP OSを含む。
【0195】
少なくとも一例において、上記リンクは、リンク回復に基づいて、上記アクティブ状態を終了する。
【0196】
少なくとも一例において、上記リンク回復は、上記リンク上で検出されたエラーに基づく。
【0197】
少なくとも一例において、上記エラーは、フレーミングトークンエラーを含む。
【0198】
1または複数の実施形態は、複数のレーンを含むリンク上でデータを送信し、上記送信されたデータに基づいて、上記複数のレーンの各々のためのパリティ情報を維持し、上記リンクは、アクティブ状態を終了するということを識別し、上記アクティブ状態からの上記終了の前に、上記パリティ情報を送信するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
【0199】
1または複数の実施形態は、リンク経由で前に送信されたデータに基づいて、上記リンクの複数のレーンの各々のための第1のパリティ情報を維持し、イベントに応じて第2のパリティ情報を受信し、上記イベントは、上記リンクがアクティブ状態を終了するようにさせ、上記第2のパリティ情報は、上記アクティブ状態からの上記終了の前に送信されるようにされる、装置,システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよい。上記複数のレーンのうちの1または複数上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報は、上記第2のパリティ情報と比較される。
【0200】
少なくとも一例において、上記第2のパリティ情報は、順序付けられたセットに含まれる。
【0201】
少なくとも一例において、上記第2のパリティ情報は、上記順序付けられたセットに含まれる複数のパリティビットに含まれる。
【0202】
少なくとも一例において、上記順序付けられたセットは、SKP OSを含む。
【0203】
少なくとも一例において、上記リンクの回復に基づいて、上記リンクは上記アクティブ状態を終了する。
【0204】
少なくとも一例において、上記回復は、上記リンク上で検出されたエラーによってトリガされる。
【0205】
少なくとも一例において、上記エラーは、フレーミングトークンエラーを含む。
【0206】
少なくとも一例において、複数の潜在的なレーンエラーが、レーンエラーレジスタに報告される。
【0207】
少なくとも一例において、上記レーンエラーレジスタは、LESレジスタを含む。
【0208】
少なくとも一例において、上記イベントは、上記リンク上で検出されたエラーを含む。
【0209】
少なくとも一例において、上記リンクの回復は、上記エラーに基づいてトリガされ、上記回復は、上記リンクに上記アクティブ状態を終了させる。
【0210】
少なくとも一例において、上記第1のパリティ情報が上記第2のパリティ情報と一致しないということの検出に基づいて、複数の潜在的なレーンエラーが識別される。
【0211】
1または複数の実施形態は、複数のレーンを含むリンク経由でデータを受信し、上記データに基づいて、上記複数のレーンの各々のための第1のパリティ情報を維持し、イベントに応じて第2のパリティ情報を受信し、上記複数のレーンのうちの1または複数上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報を上記第2のパリティ情報と比較するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記イベントは、上記リンクがアクティブ状態を終了するようにさせ、上記第2のパリティ情報は、上記アクティブ状態からの上記終了の前に送信されるようにされる。
【0212】
1または複数の実施形態は、リンク経由で送信されたデータの第1の部分に基づいて、上記リンクの複数のレーンの各々のためのパリティ情報を維持し、上記リンクの回復の後、上記パリティ情報の計算を再開するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記パリティ情報は上記リンクの回復の間、維持され、上記パリティ情報はさらに上記リンク経由で送信されたデータの第2の部分に基づいており、データの上記第2の部分は持続的なものとみなされる。
【0213】
少なくとも一例において、上記データの上記第1の部分は、第1のデータブロックに対応し、上記データの上記第2の部分は、異なる第2のデータブロックに対応する。
【0214】
少なくとも一例において、上記第1のデータブロックは、上記回復によって割り込まれ、上記第2のブロックは、上記回復の後、開始する。
【0215】
少なくとも一例において、上記回復は、上記リンク上で検出されたエラーに基づく。
【0216】
少なくとも一例において、上記データの上記第1および上記第2の部分に基づいて計算される上記パリティ情報のインジケーションが、受信デバイスに送信される。
【0217】
少なくとも一例において、上記パリティ情報は第1のパリティ情報を含み、I/Oロジックはさらに、送信デバイスから、上記データの上記第1および上記第2の部分に基づいて上記送信デバイスによって計算された第2のパリティ情報のインジケーションを受信し、上記第2のパリティ情報の上記インジケーションを上記第1のパリティ情報と比較する。
【0218】
少なくとも一例において、上記第2のパリティ情報の上記インジケーションと上記第1のパリティ情報との比較に基づいて、複数の潜在的なエラーが上記複数のレーンのうちの1または複数上に存在するかどうかが判断される。
【0219】
少なくとも一例において、上記複数の潜在的なエラーは、レーンエラーレジスタに報告される。
【0220】
少なくとも一例において、上記レーンエラーレジスタは、PCIe LESレジスタを含む。
【0221】
少なくとも一例において、上記第2のパリティ情報の上記インジケーションは、SKP OSに含まれる。
【0222】
少なくとも一例において、上記第2のパリティ情報の上記インジケーションは、上記SKP OSの複数のパリティビットを含む。
【0223】
少なくとも一例において、上記リンクは、PCIe準拠リンクを含む。
【0224】
1または複数の実施形態は、複数のレーンを含むリンク上で第1のデータを送信し、上記送信された第1のデータに基づいて、上記複数のレーンの各々のためのパリティ情報を判断し、上記リンクの回復に参加し、上記リンクの上記回復の後、上記リンク上で第2のデータを送信し、更新されたパリティ情報を生成すべく、上記パリティ情報を更新するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記パリティ情報は上記リンクの上記回復の間、維持され、上記更新されたパリティ情報は、上記第1のデータおよび上記第2のデータに基づく。
【0225】
1または複数の実施形態は、デバイスから第1のデータを受信し、上記受信された第1のデータに基づいて上記複数のレーンの各々のためのパリティ情報を判断し、上記リンクの回復に参加し、上記リンクの上記回復の後、上記デバイスから上記リンク上で第2のデータを受信し、更新されたパリティ情報を生成すべく、上記パリティ情報を更新するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記第1のデータは、複数のレーンを含むリンク上で受信され、上記パリティ情報は上記リンクの上記回復の間、維持され、上記更新されたパリティ情報は、上記第1のデータおよび上記第2のデータに基づく。
【0226】
少なくとも一例において、1または複数の潜在的なレーンエラーを判断すべく、上記特定のパリティ情報は、他のパリティ情報と比較可能である。
【0227】
少なくとも一例において、上記他のパリティ情報は、SKP OSに含まれる。
【0228】
少なくとも一例において、上記他のパリティ情報は、上記SKP OSに含まれる複数のパリティビットから識別可能である。
【0229】
1または複数の実施形態は、デバイスから第1のデータを受信し、上記受信された第1のデータに基づいて、上記複数のレーンの各々のためのパリティ情報を判断し、上記リンクの回復に参加し、上記リンクの上記回復の後、上記デバイスから上記リンク上で第2のデータを受信し、更新されたパリティ情報を生成すべく、上記パリティ情報を更新するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記第1のデータは、複数のレーンを含むリンク上で受信され、上記パリティ情報は上記リンクの上記回復の間、維持され、上記更新されたパリティ情報は、上記第1のデータおよび上記第2のデータに基づく。
【0230】
本明細書全体で「一実施形態」または「ある実施形態」に言及する場合、当該実施形態に関連して記載された特定の特徴、構造、または特性が本発明の少なくとも一実施形態に含まれることを意味する。従って、本明細書中の随所における「一実施形態において」または「ある実施形態において」という文言が現れても、必ずしもすべてが同一の実施形態を指している訳ではない。さらに、当該特定の特徴、構造、または特性は、1または複数の実施形態において、任意の好適な態様で組み合わされ得る。
【0231】
上記明細書においては、詳細な説明は、特定の例示的な実施形態に関し記載されている。しかしながら、添付の特許請求の範囲に記載される本発明のより広範な精神および範囲から逸脱することなく、様々な変更および修正がそこになされ得ることは明らかであろう。本明細書および添付図面は、従って、限定的な意味ではなく、例示的な意味のものとみなされるべきである。さらに、実施形態および他の例示的な文言の上記使用は、同一の実施形態または同一の例を必ずしも指しておらず、異なるおよび区別される複数の実施形態並びに潜在的に同一の実施形態を指すことがある。
(項目1)
複数のレーンを含むリンクが、アクティブ状態を終了することを識別し、
上記リンク経由で前に送信されたデータに基づいて、上記複数のレーンのためのパリティ情報を維持し、
上記アクティブ状態からの上記終了の前に、上記パリティ情報のインジケーションを送信する、I/Oロジックを備える、装置。
(項目2)
上記パリティ情報の上記インジケーションは、上記終了に応答して送信される、項目1に記載の装置。
(項目3)
上記パリティ情報の上記インジケーションは、順序付けられたセットで送信される、項目1に記載の装置。
(項目4)
各レーンのための上記パリティ情報の上記インジケーションは、上記順序付けられたセットに含まれる各レーンのためのそれぞれのパリティビットに含まれる、項目3に記載の装置。
(項目5)
上記順序付けられたセットは、PCIe SKP OSを含む、項目3に記載の装置。
(項目6)
上記リンクは、リンク回復に基づいて、上記アクティブ状態を終了する、項目1に記載の装置。
(項目7)
上記リンク回復は、上記リンク上で検出されたエラーに基づく、項目6に記載の装置。
(項目8)
上記エラーは、フレーミングトークンエラーを含む、項目7に記載の装置。
(項目9)
複数のレーンを含むリンク上でデータを送信する段階と、
上記送信されたデータに基づいて、上記複数のレーンの各々のためのパリティ情報を維持する段階と、
上記リンクは、アクティブ状態を終了するということを識別する段階と、
上記アクティブ状態からの上記終了の前に、上記パリティ情報のインジケーションを送信する段階と、を備える、方法。
(項目10)
上記パリティ情報の上記インジケーションは、SKP OSで送信される、項目9に記載の方法。
(項目11)
上記リンクが、上記アクティブ状態を終了するということを識別する段階に基づいて、パリティ情報のスケジューリングされた送信の前に、上記パリティ情報の上記インジケーションが送信される、項目9に記載の方法。
(項目12)
上記リンク上で検出されたエラーによってトリガされたリンク回復に基づいて、上記リンクは上記アクティブ状態を終了する、項目9に記載の方法。
(項目13)
受信デバイスからの上記エラーを示すデータを受信する段階をさらに備える、項目12に記載の方法。
(項目14)
格納されたコードを有する少なくとも1つの機械アクセス可能ストレージ媒体であって、上記コードは機械における実行時、上記機械に対し、
複数のレーンを含むリンク上でデータを送信させ、
上記送信されたデータに基づいて、上記複数のレーンの各々のためのパリティ情報を維持させ、
上記リンクは、アクティブ状態を終了するということを識別させ、
上記アクティブ状態からの上記終了の前に、上記パリティ情報を送信させる、少なくとも1つの機械アクセス可能ストレージ媒体。
(項目15)
リンク経由で前に送信されたデータに基づいて、上記リンクの複数のレーンの各々のための第1のパリティ情報を維持し、
イベントに応じて第2のパリティ情報を受信し、
上記複数のレーンのうちの1または複数のレーン上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報を上記第2のパリティ情報と比較する、I/Oロジックを備え、
上記イベントは、上記リンクがアクティブ状態を終了するようにさせ、上記第2のパリティ情報は、上記アクティブ状態からの上記終了の前に送信される、装置。
(項目16)
上記第2のパリティ情報は、順序付けられたセットに含まれる、項目15に記載の装置。
(項目17)
上記第2のパリティ情報は、上記順序付けられたセットに含まれる複数のパリティビットに含まれる、項目16に記載の装置。
(項目18)
上記順序付けられたセットは、SKP OSを含む、項目16に記載の装置。
(項目19)
上記リンク上で検出されたエラーによってトリガされた上記リンクの回復に基づいて、上記リンクは上記アクティブ状態を終了する、項目15に記載の装置。
(項目20)
上記エラーはフレーミングトークンエラーを含む、項目19に記載の装置。
(項目21)
上記I/Oロジックはさらに、複数の潜在的なレーンエラーをレーンエラーレジスタに報告する、項目15に記載の装置。
(項目22)
上記レーンエラーレジスタは、LESレジスタを含む、項目21に記載の装置。
(項目23)
複数のレーンを含むリンク経由でデータを受信する段階と、
上記データに基づいて、上記複数のレーンの各々のための第1のパリティ情報を維持する段階と、
イベントに応じて第2のパリティ情報を受信する段階と、
上記複数のレーンのうちの1または複数のレーン上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報を上記第2のパリティ情報と比較する段階と、を備え、
上記イベントは、上記リンクがアクティブ状態を終了するようにさせ、上記第2のパリティ情報は、上記アクティブ状態からの上記終了の前に送信される、方法。
(項目24)
上記イベントは、上記リンク上で検出されたエラーを含む、項目23に記載の方法。
(項目25)
上記リンクの回復は、上記エラーに基づいてトリガされ、上記回復は、上記リンクに上記アクティブ状態を終了させる、項目23に記載の方法。
(項目26)
複数の潜在的なレーンエラーをレーンエラーレジスタに報告する段階をさらに備える、項目23に記載の方法。
(項目27)
上記レーンエラーレジスタに報告された複数のレーンエラーに基づいて、上記複数のレーンのうちの1または複数に欠陥があるかどうかを判断すべく、上記レーンエラーレジスタを監視する段階をさらに備える、項目26に記載の方法。
(項目28)
上記第1のパリティ情報が上記第2のパリティ情報と一致しないということの検出に基づいて、複数の潜在的なレーンエラーが識別される、項目23に記載の方法。
(項目29)
格納されたコードを有する少なくとも1つの機械アクセス可能ストレージ媒体であって、上記コードは機械における実行時、上記機械に対し、
複数のレーンを含むリンク経由でデータを受信させ、
上記データに基づいて、上記複数のレーンの各々のための第1のパリティ情報を維持させ、
イベントに応じて第2のパリティ情報を受信させ、
上記複数のレーンのうちの1または複数のレーン上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報を上記第2のパリティ情報と比較させ、
上記イベントは、上記リンクがアクティブ状態を終了するようにさせ、上記第2のパリティ情報は、上記アクティブ状態からの上記終了の前に送信される、少なくとも1つの機械アクセス可能ストレージ媒体。
(項目30)
複数のレーンを含むデータリンクと、
第1のデバイスと、
上記データリンクを使用し、上記第1のデバイスに通信可能に連結された第2のデバイスと、を備え、
上記第2のデバイスは、
上記リンク上で上記第1のデバイスにデータを送信し、
上記送信されたデータに基づいて、上記複数のレーンの各々のためのパリティ情報を維持し、
上記リンクが、アクティブ状態を終了するということを識別し、
上記アクティブ状態からの上記終了の前に、上記パリティ情報のインジケーションを送信する、I/Oロジックを含む、システム。
(項目31)
上記パリティ情報は、第1のパリティ情報を含み、上記第1のデバイスは、
上記データに基づいて、上記複数のレーンの各々のための第2のパリティ情報を維持し、
上記第1のパリティ情報の上記インジケーションを受信し、
上記複数のレーンのうちの1または複数のレーン上における複数の潜在的なレーンエラーを識別すべく、上記第1のパリティ情報を上記第2のパリティ情報と比較する、I/Oロジックを含む、項目30に記載のシステム。
(項目32)
上記第1のデバイスの上記I/Oロジックはさらに、上記第1のパリティ情報と上記第2のパリティ情報との比較に基づいて、上記複数のレーンのうちの特定の1つに関する潜在的なエラーを判断する、項目31に記載のシステム。
(項目33)
上記パリティ情報の上記インジケーションは、上記第2のデバイスによって、上記第1のデバイスに送信されるSKP OSに含まれる、項目30に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13A
図13B
図13C
図13D
図14
図15
図16
図17
図18
図19