様々な図面における同様の参照番号及び符号は同様の要素を示す。
以下の説明において、本発明の完全な理解をもたらすために、特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の測定値/高さ、特定のプロセッサパイプラインステージ及び動作の例等の多数の特定の詳細が示される。しかしながら、当業者には、これらの特定の詳細が、本発明を実施するのに用いられる必要がないことが明らかであろう。他の例では、特定の及び代替的なプロセッサアーキテクチャ、説明されるアルゴリズムのための特定の論理回路/コード、特定のファームウェアコード、特定のインターコネクト動作、特定の論理構成、特定の製造技法及び材料、特定のコンパイラ実装、コードでのアルゴリズムの特定の表現、特定のパワーダウン及びパワーゲーティング技法/ロジック、並びにコンピューティングシステムの他の特定の動作の詳細等の、よく知られたコンポーネント又は方法は、本発明を不要に曖昧にすることを回避するために、詳細に説明されていない。
以下の実施形態は、コンピューティングプラットフォーム又はマイクロプロセッサ等の特定の集積回路におけるエネルギー節減及びエネルギー効率を参照して説明される場合があるが、他の実施形態は、他のタイプの集積回路及び論理デバイスに適用可能である。本明細書において説明される実施形態の同様の技法及び教示は、より良好なエネルギー効率及びエネルギー節減から同様に利益を受けることができる他のタイプの回路又は半導体デバイスに適用することができる。例えば、開示される実施形態は、デスクトップコンピュータシステム又はUltrabooks(商標)に限定されない。また、ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス及び埋込みアプリケーション等の他のデバイスにおいて用いられる場合もある。ハンドヘルドデバイスのいくつかの例は、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA:personal digital assistant)及びハンドヘルドPCを含む。埋込みアプリケーションは通常、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、又は以下で教示する機能及び動作を実行することができる任意の他のシステムを含む。更に、本明細書において記載される装置、方法及びシステムは、物理的なコンピューティングデバイスに限定されず、エネルギー節減及びエネルギー効率のためのソフトウェア最適化にも関係することができる。以下の説明において容易に明らかとなるように、本明細書に記載される方法、装置及びシステムの実施形態は(ハードウェア、ファームウェア、ソフトウェア又はそれらの組合せのいずれにおいて参照されていようと)、性能の懸案事項とバランスをとられた「環境に優しい技術(green technology)」に不可欠である。
コンピューティングシステムの進歩に伴い、コンピューティングシステム内のコンポーネントがより複雑になっている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを確実にするために、コンポーネント間で結合し通信するためのインターコネクトアーキテクチャもますます複雑になっている。更に、様々な市場区分は、インターコネクトアーキテクチャの様々な態様が市場の需要に適合することを求める。例えば、サーバはより高い性能を要求する一方、モバイルエコシステムは、場合によっては、電力節減のために全体性能を犠牲にすることができる。しかし、電力節減を最大にしながら、可能な限り最高の性能を提供することがほとんどのファブリックの単一の目的である。以下において、本明細書において記載される本発明の態様から潜在的に利益を得る複数のインターコネクトが検討される。
1つのインターコネクトファブリックアーキテクチャは、周辺コンポーネントインターコネクト(PCI)エクスプレス(PCIe)アーキテクチャを備える。PCIeの主な目標は、複数の市場区分、すなわち、クライアント(デスクトップ及びモバイル)、サーバ(標準及び企業)、並びに埋込みデバイス及び通信デバイスにまたがって、様々なベンダからのコンポーネント及びデバイスがオープンアーキテクチャにおいて相互運用することを可能にすることである。PCI Expressは、多岐にわたる未来の計算及び通信プラットフォームについて定義される高性能の汎用I/Oインターコネクトである。使用モデル、ロード−ストアアーキテクチャ及びソフトウェアインタフェース等のいくつかのPCI属性がその改訂を通じて維持されているのに対し、以前のパラレルバス実装は、高度にスケーリング可能で完全にシリアルのインタフェースに置き換えられている。PCI Expressのより近時のバージョンは、ポイントツーポイントインターコネクト、スイッチベースの技術及びパケット化されたプロトコルにおける進歩を利用して、新たなレベルの性能及び特徴をもたらしている。電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ完全性、エラーハンドリングが、PCI Expressによってサポートされる進化した数ある特徴のうちのいくつかである。
図1を参照すると、1組のコンポーネントをインターコネクトするポイントツーポイントリンクから構成されるファブリックの一実施形態が示されている。システム100は、コントローラハブ115に結合されたプロセッサ105及びシステムメモリ110を備える。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋込みプロセッサ、コプロセッサ又は他のプロセッサ等の任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を通じてコントローラハブ115に結合される。1つの実施形態では、FSB106は以下で説明するようなシリアルポイントツーポイントインターコネクトである。別の実施形態では、リンク106は、異なるインターコネクト規格に準拠する、シリアルの、差動インターコネクトアーキテクチャを含む。
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100内のデバイスによってアクセス可能な他のメモリ等の任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を通じてコントローラハブ115に結合される。メモリインタフェースの例は、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース、及びダイナミックRAM(DRAM)メモリインタフェースを含む。
1つの実施形態では、コントローラハブ115は、周辺コンポーネントインターコネクトエクスプレス(PCIe又はPCIE)相互接続階層におけるルートハブ、ルートコンプレックス、又はルートコントローラである。コントローラハブ115の例は、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、インターコネクトコントローラハブ(ICH)、サウスブリッジ及びルートコントローラ/ハブを含む。多くの場合、チップセットという用語は、2つの物理的に別個のコントローラハブ、すなわち、インターコネクトコントローラハブ(ICH)に結合されたメモリコントローラハブ(MCH)を指す。現行のシステムは、多くの場合、プロセッサ105に一体化されたMCHを含む一方、コントローラ115は、以下で説明するのと同様の方式でI/Oデバイスと通信することに留意されたい。いくつかの実施形態では、ピアツーピアルーティングは、オプションでルートコンプレックス115を通じてサポートされる。
ここで、コントローラハブ115は、シリアルリンク119を通じてスイッチ/ブリッジ120に結合される。インタフェース/ポート117及び121とも呼ばれる場合がある入出力モジュール117及び121は、コントローラハブ115とスイッチ120との間で通信を提供するための階層化プロトコルスタックを含む/実装する。1つの実施形態では、複数のデバイスがスイッチに120結合されることが可能である。
スイッチ/ブリッジ120は、パケット/メッセージを、デバイス125からアップストリームに、すなわちルートコンプレックスに向かって階層を上がってコントローラハブ115へ、及びダウンストリームに、すなわち、ルートコントローラから離れるように階層を下がって、プロセッサ105又はシステムメモリ110からデバイス125へルーティングする。1つの実施形態において、スイッチ120は、複数の仮想PCI間ブリッジデバイスの論理アセンブリと呼ばれる。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Firewireデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ及び他の入出力デバイス等の電子システムに結合される任意の内部又は外部のデバイス又はコンポーネントを含む。PCIeにおいて多くの場合、デバイス等の専門語はエンドポイントと呼ばれる。詳細に示されていないが、デバイス125は、レガシPCIデバイス又は他のバージョンのPCIデバイスをサポートするためのPCIe対PCI/PCI−Xブリッジを含むことができる。PCIeにおけるエンドポイントデバイスは、多くの場合に、レガシ、PCIe又はルートコンプレックスが一体化されたエンドポイントとして分類される。
グラフィックアクセラレータ130もシリアルリンク132を通じてコントローラハブ115に結合される。1つの実施形態では、グラフィックアクセラレータ130はMCHに結合され、MCHはICHに結合される。そして、スイッチ120、及びこれに応じてI/Oデバイス125はICHに結合される。I/Oモジュール131及び118はまた、階層化プロトコルスタックを実施してグラフィックアクセラレータ130とコントローラハブ115との間で通信する。上記のMCHの検討と同様に、グラフィックコントローラ又はグラフィックアクセラレータ130自体がプロセッサ105に一体化されてもよい。
図2を参照すると、階層化プロトコルスタックの一実施形態が示されている。階層化プロトコルスタック200は、クイックパスインターコネクト(QPI)スタックPCIeスタック、次世代高性能コンピューティングインターコネクトスタック又は他の階層化スタック等の任意の形態の階層化通信スタックを含む。図1〜図4を参照してすぐ下で行う検討は、PCIeスタックに関係しているが、同じ概念を他のインターコネクトスタックに適用してもよい。1つの実施形態では、プロトコルスタック200は、トランザクション層205、リンク層210及び物理層220を含むPCIeプロトコルスタックである。図1のインタフェース117、118、121、122、126及び131等のインタフェースは、通信プロトコルスタック200として表すことができる。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する/含むモジュール又はインタフェースと呼ぶこともできる。
PCI Expressは、パケットを用いてコンポーネント間で情報を通信する。パケットは、送信コンポーネントから受信コンポーネントに情報を搬送するように、トランザクション層205及びデータリンク層210において形成される。送信されたパケットが他の層を通じて流れるとき、これらのパケットは、これらの層においてパケットを処理するのに必要な追加情報を用いて拡張される。受信側において、逆のプロセスが行われ、パケットは、それらの物理層220表現からデータリンク層210表現に変換され、最終的に(トランザクション層パケットの場合)、受信デバイスのトランザクション層205によって処理することができる形態に変換される。
トランザクション層
1つの実施形態では、トランザクション層205は、デバイスの処理コアと、データリンク層210及び物理層220等のインターコネクトアーキテクチャとの間のインタフェースを提供する。これに関して、トランザクション層205の主な役割は、パケット(すなわち、トランザクション層パケット又はTLP)の組立て及び分解である。トランザクション層205は、通常、TLPのためのクレジットベースのフロー制御を管理する。PCIeは分割トランザクション、すなわち、時間で分かれたリクエスト及び応答を用いたトランザクションを実施し、ターゲットデバイスが応答のためのデータを収集する間にリンクが他のトラフィックを搬送することを可能にする。
加えて、PCIeはクレジットベースのフロー制御を利用する。この方式において、デバイスは、トランザクション層205内の受信バッファごとに初期クレジット量を公表する(advertise)。図1のコントローラハブ115等の、リンクの反対端の外部デバイスが、各TLPによって消費されるクレジット数をカウントする。トランザクションがクレジット限界を超えない場合、トランザクションを送信することができる。応答の受信時、クレジット量がリストアされる。クレジット方式の利点は、クレジット限界に達していないならば、クレジットの戻りのレイテンシが性能に影響を及ぼさないことである。
1つの実施形態では、4つのトランザクションアドレス空間が、構成アドレス空間、メモリアドレス空間、入出力アドレス空間及びメッセージアドレス区間を含む。メモリ空間トランザクションは、メモリによりマッピングされたロケーションに/からデータを転送するための読出しリクエスト及び書込みリクエストのうちの1以上を含む。1つの実施形態では、メモリ空間トランザクションは、2つの異なるアドレスフォーマット、例えば、32ビットアドレス等の短いアドレスフォーマット、又は64ビットアドレス等の長いアドレスフォーマットを用いることが可能である。構成空間トランザクションが、PCIeデバイスの構成空間にアクセスするために用いられる。構成空間へのトランザクションは、読出しリクエスト及び書込みリクエストを含む。メッセージ空間トランザクション(又は、単にメッセージ)は、PCIeエージェント間の帯域内通信をサポートするように定義される。
したがって、1つの実施形態では、トランザクション層205がパケットヘッダ/ペイロード206を組み立てる。現在のパケットヘッダ/ペイロードのためのフォーマットは、PCIe仕様ウェブサイトにおけるPCIe仕様において得ることができる。
図3を簡単に参照すると、PCIeトランザクション記述子の一実施形態が示されている。1つの実施形態において、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムである。これに関して、トランザクション記述子300は、システム内のトランザクションの識別をサポートする。他の潜在的な使用は、デフォルトのトランザクション順序及びトランザクションとチャネルとの関連付けの変更の追跡を含む。
トランザクション記述子300は、グローバル識別子フィールド302と、属性フィールド304と、チャネル識別子フィールド306とを含む。示される例において、ローカルトランザクション識別子フィールド308と、ソース識別子フィールド310とを含むグローバル識別子フィールド302が示される。1つの実施形態において、グローバルトランザクション識別子302は全ての未処理のリクエストについて一意である。
1つの実施態様によれば、ローカルトランザクション識別子フィールド308は、リクエスト側エージェントによって生成されるフィールドであり、そのリクエスト側エージェントに対し完了を要求する全ての未処理のリクエストについて一意である。更に、この例では、ソース識別子310はPCIe階層内のリクエスト元エージェントを一意に識別する。したがって、ソースID310と共に、ローカルトランザクション識別子308フィールドは、階層ドメイン内のトランザクションのグローバル識別を提供する。
属性フィールド304は、トランザクションの特性及び関係を指定する。これに関して、属性フィールド304は、トランザクションのデフォルトのハンドリングの変更を可能にする追加の情報を提供するのに潜在的に用いられる。1つの実施形態では、属性フィールド304は、優先度フィールド312と、予約済みフィールド314と、順序付けフィールド316と、非スヌープフィールド318とを含む。ここで、優先度サブフィールド312は、トランザクションに優先度を割り当てるようにイニシエータによって変更され得る。予約済み属性フィールド314は、未来のために、又はベンダが定義した使用のために予約済みのままにされる。優先度又はセキュリティ属性を用いた可能な使用モデルは、予約済み属性フィールドを用いて実施され得る。
この例では、順序付け属性フィールド316は、デフォルトの順序付け規則を変更することができる、順序付けタイプを伝達するオプション情報を供給するために用いられる。1つの実施態様によれば、順序付け属性「0」はデフォルトの順序付け規則が適用されることを示し、順序属性「1」は、緩和された順序付けを表す。緩和された順序付けでは、書込みは同じ方向の書込みをパスすることができ、読出し完了は同じ方向の書込みをパスすることができる。スヌープ属性フィールド318は、トランザクションがスヌープされているか否かを判断するのに利用される。示すように、チャネルIDフィールド306は、トランザクションが関連付けられているチャネルを識別する。
リンク層
データリンク層210とも呼ばれるリンク層210は、トランザクション層205と物理層220との間の中間ステージとしての役割を果たす。1つの実施形態では、データリンク層210の役割は、リンクとして2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性の高いメカニズムを提供することである。データリンク層210の一方の側は、トランザクション層205によって組み立てられたTLPを受容し、パケットシーケンス識別子211、すなわち識別番号又はパケット番号を適用し、誤り検出コード、すなわちCRC212を計算し適用し、変更されたTLPを、物理層を越えて外部デバイスに送信するために物理層220に提出する。
物理層
1つの実施形態では、物理層220は、パケットを外部デバイスに物理的に送信するための論理サブブロック221及び電気サブブロック222を備える。ここで、論理サブブロック221は、物理層221の「デジタル」機能を担当する。これに関して、論理サブブロックは、物理的サブブロック222による送信のために発信情報を準備する送信部と、受信した情報を識別及び準備し、その後リンク層210に渡す受信機部とを含む。
物理ブロック222は、送信機及び受信機を含む。送信機は、論理サブブロック221によってシンボルを供給され、送信機がこのシンボルをシリアル化し、外部デバイスに送信する。受信機は、外部デバイスからのシリアル化されたシンボルを供給され、受信した信号をビットストリームに変換する。ビットストリームはシリアル化解除され、論理サブブロック221に供給される。1つの実施形態では、8b/10b送信コードが用いられる。ここで、10ビットシンボルが送信/受信される。ここで、特殊なシンボルを用いて、パケットがフレーム223を用いてフレーム化される。加えて、1つの例では、受信機は着信シリアルストリームからリカバリされたシンボルクロックも提供する。
上記で示したように、トランザクション層205、リンク層210及び物理層220はPCIeプロトコルスタックの特殊な実施形態を参照して検討されているが、階層化プロトコルスタックはそのように限定されない。実際、任意の階層化プロトコルを含める/実装することができる。例として、階層化プロトコルとして表されるポート/インタフェースは、(1)パケットを組み立てる第1の層、すなわち、トランザクション層と、パケットを配列する第2の層、すなわちリンク層と、パケットを送信する第3の層、すなわち物理層とを含む。特殊な例として、共通標準インタフェース(CSI:common standard interface)階層化プロトコルが利用される。
次に図4を参照すると、PCIeシリアルポイントツーポイントファブリックの一実施形態が示されている。PCIeシリアルポイントツーポイントリンクの一実施形態が示されているが、シリアルポイントツーポイントリンクはシリアルデータを送信するための任意の送信パスを含むので、シリアルポイントツーポイントリンクはそのように限定されない。示す実施形態では、基本PCIeリンクは、2つの低電圧の差動駆動信号対、すなわち送信対406/411及び受信対412/407を含む。したがって、デバイス405は、データをデバイス410に送信するための送信ロジック406と、デバイス410からデータを受信するための受信ロジック407とを含む。換言すれば、2つの送信経路、すなわち、経路416及び417、並びに2つの受信経路、すなわち経路418及び419がPCIeリンクに含まれる。
送信パスは、伝送線、銅線、光回線、無線通信チャネル、赤外線通信リンク又は他の通信パス等の、データを伝送するための任意のパスを指す。デバイス405及びデバイス410等の2つのデバイス間の接続は、リンク415等のリンクと呼ばれる。リンクは、1つのレーンをサポートすることができ、各レーンは、1組の差動信号対(送信用の1対、受信用の1対)を表す。帯域幅をスケーリングするために、リンクはxNによって表される複数のレーンを集約することができ、ここで、Nは、1、2、4、8、12、16、32、64又はそれより広いもの等の任意のサポートされるリンク幅である。
差動対は、差動信号を伝送するための、線416及び417等の2つの伝送パスを指す。例として、線416が低電圧レベルから高電圧レベルに切り替わるとき、すなわち立ち上がりエッジのとき、線417は高い論理レベルから低い論理レベルに駆動し、すなわち立ち下がりエッジとなる。差動信号は、潜在的に、より良好なシグナルインテグリティ、すなわち相互結合、電圧オーバシュート/アンダーシュート、リンギング等のような、より良好な電気特性を実証する。これによって、より高速な送信周波数を可能にするより良好なタイミングウィンドウが可能になる。
図5は、例示的なマルチチップパッケージリンク(MCPL)520を用いて通信可能に接続される2つ以上のチップ又はダイ(例えば、510、515)を含む例示的なマルチチップパッケージ505を示す単純化されたブロック図500である。図5は、例示的なMCPL520を用いて相互接続された2つ(以上)のダイの例を示しているが、MCPLの実施に関して本明細書において説明される原理及び特徴は、数ある潜在的な例の中でも、2つ以上のダイ(例えば、510、515)を接続すること、ダイ(又はチップ)をダイ上にない別のコンポーネントに接続すること、ダイをパッケージ(例えば505)上にない別のデバイス又はダイに接続すること、ダイをBGAパッケージに接続すること、インタポーザ上パッチ(POINT:Patch on Interposer)の実装を含む、ダイ(例えば510)と他のコンポーネントとを接続する任意のインターコネクト又はリンクに適用することができることを理解されたい。
一般的に、マルチチップパッケージ(例えば、505)は、複数の集積回路(IC)、半導体ダイ又は他のディスクリートコンポーネント(例えば、510、515)が統一基板(例えば、シリコン又は他の半導体基板)上にパッケージ化され、これにより、組み合わされたコンポーネントを(例えば、より大型のICであるかのように)単一のコンポーネントとして使用することを促進する、電子パッケージとすることができる。場合によっては、より大型のコンポーネント(例えば、ダイ510、515)は、それ自体が、システムオンチップ(SoC)、マルチプロセッサチップ、又はデバイス上、例えば単一のダイ(例えば、510、515)上に複数のコンポーネント(例えば、525〜530及び540〜545)を含む他のコンポーネント等のICシステムであり得る。マルチチップパッケージ505は、潜在的に複数のディスクリートコンポーネント及びシステムから複雑で様々なシステムを構築する柔軟性を提供することができる。例えば、数多くの例の中でも、ダイ510、515の各々は、2つの異なるエンティティによって製造されるか又は他の形で提供され、パッケージ505のシリコン基板が更に第3のエンティティによって提供されてもよい。更に、マルチチップパッケージ505内のダイ及び他のコンポーネントは、それ自体が、デバイス(例えば、それぞれ510、515)内でコンポーネント(例えば、525〜530及び540〜545)間の通信のためのインフラストラクチャを提供するインターコネクト又は他の通信ファブリック(例えば、535、550)を含むことができる。様々なコンポーネント及びインターコネクト(例えば、535、550)は、潜在的に複数の異なるプロトコルをサポート又は使用することができる。更に、ダイ(例えば、510、515)間の通信は、潜在的に、複数の異なるプロトコルを介したダイ上の様々なコンポーネント間のトランザクションを含むことができる。相互接続されることを求められるコンポーネント(及び所望のトランザクション)の特定の組合せに基づく、高度に特殊化され、高価で、パッケージ固有の解決策を用いる従来の解決策では、マルチチップパッケージ上のチップ(又はダイ)間で通信を提供するメカニズムを設計することは困難である可能性がある。
本明細書内で記載される例、システム、アルゴリズム、装置、ロジック及び特徴は、上記で特定した問題のうちの少なくともいくつかの対処することができる。これらの問題には、潜在的に、本明細書において明示的に言及されていない多くの他の問題を含む。例えば、いくつかの実施態様では、ホストデバイス(例えば、CPU)又は他のデバイスを、ホストと同じパッケージ内に配置されたコンパニオンチップに接続するための高帯域幅、低電力、低レイテンシインタフェースを提供することができる。そのようなマルチチップパッケージリンク(MCPL)は、複数のパッケージオプション、複数のI/Oプロトコル、並びに信頼性、可用性及びサービス可能性(RAS:Realiability, Availability, and Serviceability)機能をサポートすることができる。更に、物理層(PHY)は電気層及び論理層を含むことができ、最大で約45mm、場合によっては約45mmを超えるチャネル長を含む、より長いチャネル長をサポートすることができる。いくつかの実施態様では、例示的なMCPLが、8Gb/s〜10Gb/sを超えるデータレートを含む高いデータレートで動作することができる。
MCPLの1つの例示的な実施態様では、PHY電気層は、従来のマルチチャネルインターコネクト解決策(例えば、マルチチャネルDRAM I/O)に対し改善を行い、例えば、例として、数ある潜在的な例の中でも、調整された中間レール終端、低電力アクティブクロストークキャンセル、回路冗長性、ビットごとのデューティサイクル補正及びデスキュー、ラインコーディング及び送信機等化を含む、複数の特徴によってデータレート及びチャネル構成を拡張することができる。
MCPLの1つの例示的な実施態様では、インターコネクトが電気層を越えて複数のプロトコルをルーティングすることも可能にしながら、(例えば、電気層特徴が)データレート及びチャネル構成を拡張することを更に支援することができる、PHY論理層を実施することができる。そのような実施態様は、プロトコルにとらわれず、潜在的に任意の既存の又は未来のインターコネクトプロトコルと共に機能するように設計されたモジュール式共通物理層を提供し定義することができる。
図6を参照すると、マルチチップパッケージリンク(MCPL)の例示的な実施態様を含むシステムの少なくとも一部を表す単純化されたブロック図600が示される。第1のデバイス605(例えば、1以上のサブコンポーネントを含む第1のダイ)を第2のデバイス610(例えば、1以上の他のサブコンポーネントを含む第2のダイ)と接続する物理的電気接続(例えば、レーンとして実装されるワイヤ)を用いてMCPLを実装することができる。図600の高レベルの表現に示す特定の例では、(チャネル615、620における)全ての信号は単一指向性とすることができ、データ信号がアップストリーム及びダウンストリーム双方のデータ転送を有するためのレーンを提供することができる。図6のブロック図600は、第1のコンポーネント605をアップストリームコンポーネントと呼び、第2のコンポーネント610をダウンストリームコンポーネントと呼び、データを送信する際に用いられるMCPLの物理レーンをダウンストリームチャネル615と呼び、(コンポーネント610から)データを受信するために用いられるレーンをアップストリームチャネル620と呼ぶが、デバイス605、610間のMCPLを、デバイス間でデータの送信及び受信の双方を行うために各デバイスによって用いることができることを理解されたい。
1つの例示的な実施態様では、MCPLは、電気的MCPL PHY625a、625b(又は、まとめて625)及び実行可能なロジックを実施するMCPL論理PHY630a、630b(又は、まとめて630)を含む物理層(PHY)を提供することができる。電気又は物理PHY625は、データがデバイス605、610間で通信される際に介する物理接続を提供することができる。信号調整コンポーネント及びロジックは、リンクの高いデータレート及びチャネル構成機能を確立するために、物理PHY625に関連して実施することができる。これは、いくつかの用途では、約45mm以上の長さの高度にクラスタ化された物理接続を伴うことができる。論理PHY630は、MCPLを介した通信に用いられる潜在的に複数の様々なプロトコル間のクロッキング、(例えば、リンク層635a、635bの)リンク状態管理、及びプロトコル多重化を促進するためのロジックを含むことができる。
1つの例示的な実施態様では、物理PHY625は、チャネル(例えば、615、620)ごとに1組のデータレーンを含むことができ、この1組のデータレーンを介して帯域内データを送信することができる。この特定の例では、アップストリームチャネル615及びダウンストリームチャネル620の各々に50個のデータレーンが提供されるが、レイアウト及び電力の制約、所望の用途、デバイス制約等によって許容されるとおりに任意の他の数のレーンを用いることができる。各チャネルは、チャネル用のストローブ信号又はクロック信号のための1以上の専用レーンと、チャネル用の有効信号のための1以上の専用レーンと、ストリーム信号のための1以上の専用レーンと、リンク状態機械管理又はサイドバンド信号のための1以上の専用レーンとを更に含むことができる。物理PHYはサイドバンドリンク640を更に含むことができ、サイドバンドリンク640は、場合によっては、数ある例の中でも、デバイス605、610を接続するMCPLの状態遷移及び他の属性を調整するのに用いられる双方向低周波数制御信号リンクとすることができる。
上記で示したように、MCPLの実施を用いて複数のプロトコルをサポートすることができる。実際に、各デバイス605、610に複数の独立したトランザクション層650a、650bを設けることができる。例えば、各デバイス605、610は、数ある中でも、PCI、PCIe、QPI、Intelのダイ内インターコネクト(IDI:In−Die Interconnect)等の2つ以上のプロトコルをサポートし利用することができる。IDIは、コア、最終レベルキャッシュ(LLC)、メモリ、グラフィック及びIOコントローラ間で通信するためにダイ上で用いられるコヒーレントなプロトコルである。イーサネット(登録商標)プロトコル、インフィニバンドプロトコル及び他のPCIeファブリックベースのプロトコルを含む他のプロトコルもサポートすることができる。論理PHY及び物理PHYの組合せは、数ある例の中でも、1つのダイ上のSerDesPHY(PCIe、イーサネット(登録商標)、インフィニバンド又は他の高速SerDes)を、他のダイ上に実装されたその上位層に接続するダイ間インターコネクトとしても用いることができる。
論理PHY630は、MCPLにおけるこれらの複数のプロトコル間の多重化もサポートすることができる。例えば、専用ストリームレーンを用いて、チャネルのデータレーン上で実質的に同時に送信されるデータにいずれのプロトコルを適用するべきかを特定するエンコードされたストリーム信号をアサートすることができる。更に、論理PHY630を用いて、様々なプロトコルがサポート又はリクエストすることができる様々なタイプのリンク状態遷移を交渉することができる。場合によっては、チャネルの専用LSM_SBレーンを介して送信されたLSM_SB信号を、サイドバンドリンク640と共に用いて、デバイス605、610間のリンク状態遷移を通信及び交渉することができる。更に、リンクトレーニング、誤り検出、スキュー検出、デスキュー、及び従来のインターコネクトの他の機能を、部分的に論理PHY630を用いて交換又は統制することができる。例えば、各チャネル内の1以上の専用の有効信号レーンを介して送信される有効信号を用いて、数ある例の中でも、リンクアクティビティをシグナリングし、スキュー、リンクエラーを検出し、他の機能を実現することができる。図6の特定の例では、チャネルごとに複数の有効なレーンが提供される。例えば、チャネル内のデータレーンは、(物理的にかつ/又は論理的に)バンドル化又はクラスタ化することができ、有効なレーンをクラスタごとに提供することができる。更に、場合によっては、数ある例の中でも、チャネル内の複数のデータレーンクラスタ内のクラスタごとに専用ストローブ信号の提供も行う複数のストローブレーンを提供することができる。
上記で示したように、論理PHY630を用いて、MCPLによって接続されたデバイス間で送信されるリンク制御信号を交渉し、管理することができる。いくつかの実施態様では、論理PHY630は、MCPLを介して(すなわち、帯域内で)リンク層制御メッセージを送信するのに用いることができるリンク層パケット(LLP)生成ロジック660を含むことができる。そのようなメッセージはチャネルのデータレーンを介して送信することができ、ストリームレーンは、データが、数ある例の中でも、リンク層制御データ等のリンク層間メッセージングであることを特定する。LLPモジュール660を用いて有効にされたリンク層メッセージは、デバイス605のリンク層635aとデバイス610のリンク層635bとの間の他のリンク層特徴の中でも、リンク階層化態遷移、電力管理、ループバック、無効、再センタリング、スクランブル化の交渉及び実行に役立つことができる。
図7を参照すると、例MCPLの特定のチャネル内の1組のレーン(例えば、615、620)を用いた例示的なシグナリングを表す図700が示されている。図7の例では、チャネル内の合計50個のデータレーンについて25個のデータレーンの2つのクラスタが提供されている。レーンの一部分が示されているが、他のもの(例えば、DATA[4−46]及び第2のストローブ信号レーン(STRB))は、特定の例を示す都合上、(例えば、冗長な信号として)省かれている。物理層がアクティブ状態(例えば、電源オフにされていないか又は低電力モード(例えば、L1状態)にある)とき、ストローブレーン(STRB)に、同期クロック信号を提供することができる。いくつかの実施態様では、ストローブの立ち上がりエッジ及び立ち下がりエッジの双方でデータを送信することができる。各エッジ(又は半クロックサイクル)は、単位インターバル(UI)を画定することができる。したがって、この例では、ビット(例えば、705)を各レーン上で送信することができ、8UIごとに1バイトが送信されることが可能になる。バイト期間710を8UIとして、又はデータレーンのうちの単一のものにおいてバイトを送信する時間(例えば、DATA[0−49])として定義することができる。
いくつかの実施態様では、1以上の専用有効信号チャネル(例えば、VALID0、VALID1)において送信される有効信号は、アサートされているとき(高)、受信デバイス又はシンクに、バイト期間710等の後続の期間中に、データレーン(例えば、DATA[0−49])上でデータが送信デバイス又はソースから送信されていることを特定する、受信デバイスのための先導するインジケータとしての役割を果たすことができる。代替的に、有効信号が低であるとき、ソースはシンクに、シンクが後続の期間中、データレーン上でデータを送信しないことを示す。したがって、シンク論理PHYが、(例えばレーンVALID0及びVALID1において)有効信号がアサートされていないことを検出すると、シンクは、後続の期間中にデータレーン(例えば、DATA[0−49])上で検出される任意のデータを無視することができる。例えば、ソースが実際にデータを一切送信していないときに、クロストークノイズ又は他のビットがデータレーンのうちの1以上に現れる場合がある。前の期間(例えば、前のバイト期間)中の低いか又はアサートされていない有効信号により、シンクは、後続の期間中にデータレーンが無視されることを決定することができる。
MCPLのレーンの各々において送信されたデータは、ストローブ信号に厳密にアラインすることができる。バイト期間等の期間をストローブに基づいて定義することができ、これらの期間の各々が、定義されたウィンドウに対応することができる。このウィンドウにおいて、信号はデータレーン(例えば、DATA[0−49])、有効なレーン(例えば、VALID1、VALID2)及びストリームレーン(例えば、STREAM)上で送信されることになる。したがって、これらの信号のアライメントにより、前の期間ウィンドウ内の有効信号が、後続の期間ウィンドウ内のデータに適用されること、及びストリーム信号が同じ期間ウィンドウ内のデータに適用されることの特定を可能にすることができる。ストリーム信号は、同じ期間ウィンドウ中に送信されるデータに適用されるプロトコルを特定するようにエンコードされるエンコード信号(例えば、バイト期間ウィンドウにつき1バイトのデータ)とすることができる。
説明のために、図7の特定の例において、バイト期間ウィンドウが定義される。データレーンDATA[0−49]において任意のデータが投入される前に、期間ウィンドウn(715)において有効信号がアサートされる。後続の期間ウィンドウn+1(720)において、データレーンのうちの少なくともいくつかにおいてデータが送信される。この場合、データはn+1(720)中に50個全てのデータレーン上で送信される。先行する期間ウィンドウn(715)の持続時間にわたって有効信号がアサートされたので、シンクデバイスは、期間ウィンドウn+1(720)中にデータレーンDATA[0−49]上で受信されるデータを有効にすることができる。更に、期間ウィンドウn(715)中の有効信号の先導する特性により、受信デバイスが着信データの準備をすることが可能になる。図7の例を継続すると、有効信号は、期間ウィンドウn+1(720)の持続時間中、(VALID1及びVALID2において)アサートされたままであり、シンクデバイスに、期間ウィンドウn+2(725)中にデータレーンDATA[0−49]を介してデータが送信されることを予期させる。有効信号が期間ウィンドウn+2(725)中にアサートされたままである場合、シンクデバイスは、直後の期間ウィンドウn+3(730)中に送信される更なるデータを受信(及び処理)することを更に予期することができる。一方、図7の例では、有効信号は、期間ウィンドウn+2(725)の持続時間中にアサート解除され、シンクデバイスに、期間ウィンドウn+3(730)中にデータが送信されないこと、及びデータレーンDATA[0−49]上で検出される任意のビットが期間ウィンドウn+3(730)中無視されるべきであることを示す。
上記で示すように、チャネルごとに複数の有効なレーン及びストローブレーンを維持することができる。これは、数ある利点の中でも、2つのデバイスを接続する比較的長い物理レーンのクラスタの中で回路の単純性及び同期を維持するのに役立つことができる。いくつかの実施態様では、1組のデータレーンは、データレーンのクラスタに分割することができる。例えば、図7の例において、データレーンDATA[0−49]は、25個のレーンの2つのクラスタに分割することができ、各クラスタは専用の有効レーン及びストローブレーンを有することができる。例えば、有効レーンVALID1はデータレーンDATA[0−24]に関連付けることができ、有効レーンVALID2はデータレーンDATA[25−49]に関連付けることができる。クラスタごとの有効レーン及びストローブレーンの各「コピー」における信号は、同一とすることができる。
上記で紹介したように、ストリームレーンSTREAM上のデータを用いて、受信側の論理PHYに、データレーンDATA[0−49]上で送信されている対応するデータにどのプロトコルを適用するかを示すことができる。図7の例では、データレーン上のデータのプロトコルを示すために、ストリーム信号が、データレーンDATA[0−49]上のデータと同じ期間ウィンドウ中にSTREAM上で送信される。代替的な実施態様では、ストリーム信号は、数ある潜在的な変更形態の中でも、対応する有効信号を用いること等により、先行する期間ウィンドウ中に送信することができる。一方、図7の例を継続すると、期間ウィンドウn+1(720)中に、データレーンDATA[0−49]を介して期間ウィンドウn+1(720)中に送信されるビットに適用するプロトコル(例えば、PCIe、PCI、IDI、QPI等)を示すようにエンコードされたストリーム信号735が送信される。同様に、後続の期間ウィンドウn+2(725)中に、データレーンDATA[0−49]を介して期間ウィンドウn+2(725)中に送信されるビットに適用するプロトコルを示す別のストリーム信号740を送信することができ、以下同様である。図7の例(ストリーム信号735、740の双方が同じエンコーディング、バイナリFFを有する)等のいくつかの場合、連続期間ウィンドウ(例えば、n+1(720)及びn+2(725))は同じプロトコルに属することができる。一方、他の事例では、連続期間ウィンドウ(例えば、n+1(720)及びn+2(725))におけるデータは、異なるプロトコルが適用される異なるトランザクションからのものとすることができ、これに応じて、ストリーム信号(例えば、735、740)を、数ある例の中でも、データレーン(例えば、DATA[0−49])上の連続データバイトに適用する異なるプロトコルを特定するようにエンコードすることができる。
いくつかの実施態様では、MCPLのための低電力状態又はアイドル状態を定義することができる。例えば、MCPLにおけるいずれのデバイスもデータを送信していないとき、MCPLの物理層(電気及び論理)は、アイドル状態又は低電力状態に進むことができる。例えば、図7の例では、期間ウィンドウn−2(745)において、MCPLは静止状態又はアイドル状態にあり、ストローブは電力を節減するために無効にされている。MCPLは、低電力モード又はアイドルモードから遷移し、期間ウィンドウn−1(例えば、705)においてストローブをウェイク状態にすることができる。ストローブは、(例えば、チャネルのレーンの各々及びシンクデバイスをウェイクさせ、同期させるのに役立つために)送信プリアンブルを完了させ、他の非ストローブレーンにおける任意の他のシグナリングの前にストローブ信号を開始することができる。上記で検討したように、この期間ウィンドウn−1(705)に続いて、期間ウィンドウn(715)において有効信号をアサートし、シンクに、データが後続の期間ウィンドウn+1(720)において到来することを通知することができる。
MCPLは、MCPLチャネルの有効レーン、データレーン及び/又は他のレーンにおけるアイドル状態の検出に続いて、低電力状態又はアイドル状態(例えば、L1状態)に再度入ることができる。例えば、期間ウィンドウn+3(730)において開始し、進行するシグナリングが検出されない場合がある。数ある例及び原理(本明細書において後に検討するものを含む)の中でも、ソースデバイス又はシンクデバイスのいずれかにおけるロジックが低電力状態に戻る遷移を開始することができ、これにより再び(例えば、期間ウィンドウn+5(755)において)ストローブが電力節減モードにおいてアイドルに進むことになる。
物理PHYの電気特性は、数ある特徴の中でも、シングルエンドシグナリング、半レート進められたクロッキング、インターコネクトチャネルと、送信機(ソース)及び受信機(シンク)のオンチップトランスポート遅延とのマッチング、最適化された静電放電(ESD:electrostatic discharge)保護、パッドキャパシタンスのうちの1以上を含むことができる。更に、MCPLは、従来のパッケージI/O解決策よりも高いデータレート(例えば、16Gb/sに到達する)及びエネルギー効率特性を達成するように実装することができる。
図8は、例示的なMCPLの一部分を表す単純化されたブロック図800の一部を示す。図8の図800は、例示的なレーン805(例えば、データレーン、有効レーン又はストリームレーン)の表現と、クロック生成ロジック810とを含む。図8の例に示すように、いくつかの実施態様では、クロック生成ロジック810は、データレーン805等の例示的なMCPLの各レーンを実装する各ブロックに生成されたクロック信号を分配するためのクロックツリーとして実装することができる。更に、クロックリカバリ回路815を提供することができる。いくつかの実施態様では、少なくともいくつかの従来のインターコネクトI/Oアーキテクチャにおいて慣習的であるように、クロック信号が分散されるレーンごとに別個のクロックリカバリ回路を提供するのではなく、複数のレーンのクラスタに単一のクロックリカバリ回路を提供することができる。実際に、図6及び図7の例示的な構成に適用されるとき、別個のストローブレーン及び付随するクロックリカバリ回路は、25個のデータレーンのクラスタごとに提供することができる。
図8の例を続けると、いくつかの実施態様では、少なくとも、データレーン、ストリームレーン及び有効レーンを、ゼロ(グラウンド)よりも高い調整電圧に中間レールで終端することができる。いくつかの実施態様では、中間レール電圧は、Vcc/2に調整することができる。いくつかの実施態様では、レーンのクラスタごとに単一の電圧レギュレータ825を設けることができる。例えば、図6及び図7の例に適用するとき、数ある潜在的な例の中でも、25個のデータレーンの第1のクラスタのために第1の電圧レギュレータを設けることができ、25個のデータレーンの残りのクラスタのために第2の電圧レギュレータを設けることができる。場合によっては、例示的な電圧レギュレータ825は、数ある例の中でも、リニアレギュレータ、スイッチトキャパシタ回路として実施することができる。いくつかの実施態様では、リニアレギュレータには、数ある例の中でも、アナログフィードバックループ又はデジタルフィードバックループを設けることができる。
いくつかの実施態様では、例示的なMCPLのためにクロストークキャンセル回路部を設けることもできる。場合によっては、長いMCPLワイヤのコンパクトな性質により、レーン間にクロストーク干渉が生じる可能性がある。これらの問題及び他の問題に対処するようにクロストークキャンセルロジックを実装することができる。例えば、図9〜図10に示す1つの例では、図900及び1000に示すもの等の例示的な低電力アクティブ回路を用いてクロストークを大幅に低減することができる。例えば、図9の例では、重み付き高域通過フィルタリングされた「アグレッサ(aggressor)」信号を「ビクティム(victim)」信号(すなわち、アグレッサからのクロストーク干渉を受ける信号)に加えることができる。各信号は、リンクにおける互いの信号からのクロストークのビクティムとみなすことができ、この信号がクロストーク干渉源である限り、それ自体が他の信号に対するアグレッサとなり得る。リンク上のクロストークの派生的性質に起因して、そのような信号が生成され、ビクティムレーンにおけるクロストークを、50%よりも多く低減することができる。図9の例では、低域通過フィルタリングされたアグレッサ信号を、高域通過RCフィルタ(例えばC及びR1を通じて実施される)を通じて生成することができる。高域通過RCフィルタはフィルタリングされた信号を生成し、この信号は、加算回路905(例えば、RXセンスアンプ)を用いて加えられる。
図9の例において説明したものに類似した実施態様は、MCPL等の用途のための特に好都合な解決策であり得る。なぜなら、図9の例において示され、説明された回路の例示的なトランジスタレベルの概略図を示す図10の図に示すように、回路の実装を比較的低いオーバヘッドで実現することができるためである。図9及び図10における表現は単純化された表現であり、実際の実施態様は、リンクのレーン間のクロストーク干渉のネットワークを収容するために、図9及び図10に示す回路の複数のコピーを含むことを理解されたい。例として、数ある例の中でも、レーンの形状及びレイアウトに基づいて、レーン0からレーン1、レーン0からレーン2、レーン1からレーン0、レーン1からレーン2、レーン2からレーン0、レーン2からレーン1等の、図9及び図10の例において説明したものに類似の3レーンリンク(例えば、レーン0〜2)回路を提供することができる。
例示的なMCPLの物理的なPHYレベルにおいて追加の特徴を実施することができる。例えば、場合によっては、受信機オフセットは、重大なエラーを引き起こし、I/O電圧マージンを制限する可能性がある。回路冗長性を用いて受信機の感度を改善することができる。いくつかの実施態様では、MCPLにおいて用いられるデータサンプラの標準偏差オフセットに対処するように回路冗長性を最適化することができる。例えば、3標準偏差オフセット指定に対し設計された例示的なデータサンプラを提供することができる。図6及び図7の例において、例えば、受信機ごとに(例えば、レーンごとに)2つのデータサンプラが用いられるとすると、50レーンのMCPLのために100個のサンプラが用いられることになる。この例では、受信機(RX)レーンのうちの1つが3標準偏差オフセット指定に失敗する確率は24%である。オフセット上限を設定し、他のデータサンプラのうちの別のものがこの上限を超えていることがわかった場合に受信機において次のデータサンプラに移るためのチップ基準電圧発生器を提供することができる。一方、受信機あたり4つのデータサンプラ(すなわち、この例では2つの代わり)が用いられるとすると、受信機は、4つのうちの3つのサンプラが失敗した場合にしか失敗しない。図6及び図7の例におけるような50レーンMCPLの場合、この追加の回路冗長性は、失敗率を24%から0.01%未満に劇的に低減させることができる。
更なる他の例では、非常に高いデータレートで、ビットごとのデューティサイクル補正(DCC)及びデスキューを用いて、ベースラインのクラスタごとのDCC及びデスキューを拡張してリンクマージンを改善することができる。従来の解決策のように全ての場合に補正を行う代わりに、いくつかの実施態様では、I/Oレーンが失敗した場合に、外れ値を検知し補正する低電力デジタル実装を利用することができる。例えば、レーンのグローバルチューニングを行って、クラスタ内の問題レーンを特定することができる。次に、これらの問題レーンを、レーンごとのチューニングの対象にして、MCPLによってサポートされる高いデータレートを達成することができる。
MCPLのいくつかの例において、物理リンクの性能特性を向上させる追加の特徴もオプションで実施することができる。例えば、ラインコーディングを提供することができる。上記で説明したような中間レール終端は、DCデータバス反転(DBI)が省かれることを可能にすることができるが、AC DBIを依然として用いて動的電力を低減することができる。数ある例示的な利点の中でも、より複雑なコーディングを用いて、最悪の事態である1及び0の差異をなくし、例えば、中間レールレギュレータの駆動要件を低減すると共に、I/O切換えノイズを制限することもできる。更に、オプションで送信機等化を実施することができる。例えば、非常に高いデータレートにおいて、挿入損失は、パッケージ内チャネルにとって大きい可能性がある。数ある中でも、2タップ重み送信機等化(例えば、初期起動シーケンス中に実行される)は、場合によっては、これらの問題のうちのいくつかを軽減するのに十分であり得る。
図11を参照すると、例示的なMCPLの例示的な論理PHYを示す単純化されたブロック図1100が示されている。物理PHY1105は、論理PHY1110と、MCPLのリンク層をサポートする追加のロジックとを含むダイに接続することができる。ダイは、この例では、MCPLにおいて複数の異なるプロトコルをサポートするロジックを更に含むことができる。例えば、図11の例において、IDIロジック1120と共にPCIeロジック1115を提供することができ、それによって、3つ以上のプロトコル又はPCIe及びIDI以外のプロトコルがMCPLを介してサポートされる例を含む、潜在的に数多くの他の例の中でも、ダイは、2つのダイを接続する同じMCPLを介してPCIe又はIDIを用いて通信することができる。ダイ間でサポートされる様々なプロトコルが様々なレベルのサービス及び特徴を提供することができる。
論理PHY1110は、ダイの上位層ロジックのリクエスト(例えば、PCIe又はIDIを介して受信される)に関連してリンク状態遷移を交渉するためのリンク状態機械管理ロジック1125を含むことができる。論理PHY1110は、いくつかの実施態様において、リンク試験及びデバッグロジック(例えば、1130)を更に含むことができる。上記で示すように、例示的なMCPLは、MCPLの、(数ある例示的な特徴の中でも)プロトコルにとらわれない、高性能で電力効率のよい特徴を促進するようにMCPLを介してダイ間で送信される制御信号をサポートすることができる。例えば、論理PHY1110は、上記の例において説明したように、専用データレーンを介してデータを送受信することに関連して、有効信号、ストリーム信号及びLSMサイドバンド信号の生成及び送信、並びに受信及び処理をサポートすることができる。
いくつかの実施態様では、多重化(例えば、1135)及び逆多重化(例えば、1140)ロジックを論理PHY1110に含めるか、又は他の形で論理PHY1110にアクセス可能にすることができる。例えば、多重化ロジック(例えば、1135)を用いて、MCPL上に送信されるデータ(例えば、パケット、メッセージ等として具現化される)を特定することができる。多重化ロジック1135は、データを統制するプロトコルを特定し、ストリーム信号を生成する。このストリーム信号は、プロトコルを特定するためにエンコードされる。例えば、1つの例示的な実施態様では、ストリーム信号は、2つの16進数シンボルのバイト(例えば、IDI:FFh、PCIe:F0h、LLP:AAh、サイドバンド:55h等)としてエンコードすることができ、特定されたプロトコルによって統制されるデータの同じウィンドウ(例えば、バイト期間ウィンドウ)中に送信することができる。同様に、逆多重化ロジック1140を用いて、着信ストリーム信号を解釈してストリーム信号をデコードし、データレーン上のストリーム信号により現在受信されているデータに適用するプロトコルを特定することができる。次に、逆多重化ロジック1140をプロトコル固有リンク層処理に適用(又は確保)し、対応するプロトコルロジック(例えば、PCIeロジック1115又はIDIロジック1120)によってデータを処理させることができる。
論理PHY1110は、電力管理タスク、ループバック、ディセーブル、再センタリング、スクランブリング等を含む様々なリンク制御機能を処理するのに用いることができるリンク層パケットロジック1150を更に含むことができる。LLPロジック1150は、数ある機能の中でも、MCLPを介したリンク層間メッセージを促進することができる。LLPシグナリングに対応するデータは、データレーンLLPデータを特定するためにエンコードされる専用ストリーム信号レーン上で送信されるストリーム信号によって特定することもできる。多重化ロジック及び逆多重化ロジック(例えば、1135、1140)を用いて、LLPトラフィックに対応するストリーム信号を生成し解釈し、そのようなトラフィックが適切なダイロジック(例えば、LLPロジック1150)によって処理されるようにすることもできる。同様に、MCLPのいくつかの実施態様は、数ある例の中でも、非同期及び/又は低周波数サイドバンドチャネル等の専用サイドバンド(例えば、サイドバンド1155及びサポートロジック)を含むことができる。
論理PHYロジック1110は、専用LSMサイドバンドレーンを介してリンク状態管理メッセージを生成及び受信(及び使用)することができるリンク状態機械管理ロジックを更に含むことができる。例えば、数ある潜在的な例の中でも、LSMサイドバンドレーンを用いてハンドシェイクを実行し、リンクトレーニング状態を進め、電力管理状態(例えば、L1状態)から出ることができる。数ある例の中でも、LSMサイドバンド信号は、リンクのデータ信号、有効信号及びストリーム信号にアラインされておらず、代わりにシグナリング状態遷移に対応するという点で非同期信号とすることができ、リンクによって接続された2つのダイ又はチップ間のリンク状態機械をアラインすることができる。数ある例示的な利点の中でも、いくつかの例において、専用LSMサイドバンドレーンを提供することによって、アナログフロントエンド(AFE)の従来のスケルチ及び受信検出回路を排除することが可能になる。
図12を参照すると、MCPLを実施するのに用いられるロジックの別の表現を示す単純化されたブロック図1200が示されている。例えば、論理PHY1110には、定義された論理PHYインタフェース(LPIF)1205が設けられ、これを通じて、複数の異なるプロトコル(例えば、PCIe、IDI、QPI等)1210、1215、1220、1225及びシグナリングモード(例えば、サイドバンド)のうちの任意のものが例示的なMCPLの物理層とインタフェースすることができる。いくつかの実施態様では、論理PHY1110と別個の層として、多重化及び調停ロジック1230を提供することもできる。1つの例では、このMuxArb層1230のいずれかの側のインタフェースとして、LPIF1205を提供することができる。論理PHY1110は、別のインタフェースを通じて物理PHY(例えばMCPL PHYのアナログフロントエンド(AFE)1105)とインタフェースすることができる。
LPIFは、上位層(例えば、1210、1215、1220、1225)からPHY(論理及び電気/アナログ)を抽出することができ、それによって、完全に異なるPHYを、上位層に対しトランスペアレントなLPIF下で実施することができる。このことは、数ある例の中でも、上位層が、基礎を成すシグナリング技術PHYが更新されるときに完全なままであることができるので、モジュール性及び設計の再利用を促進するのに役立つことができる。更に、LPIFは、論理PHYの多重化/逆多重化、LSM管理、エラー検出及び処理、並びに他の機能を可能にする複数の信号を定義することができる。例えば、表1は、例示的なLPIFのために定義することができる信号の少なくとも一部分を要約する。
表1に示すように、いくつかの実施態様では、AlignReq/AlignAckハンドシェイクを通じてアライメントメカニズムを提供することができる。例えば、物理層がリカバリに入るとき、いくつかのプロトコルはパケットフレーミングを失う場合がある。パケットのアライメントを補正して、例えば、リンク層による正しいフレーミング識別を保証することができる。更に、図13に示すように、物理層は、リカバリに入るときにStallReq信号をアサートすることができ、それによって、リンク層は、新たにアラインされたパケットを転送する準備ができたときにStall信号をアサートする。物理層ロジックは、Stall及びValidの双方をサンプリングして、パケットがアラインされているか否かを判断することができる。例えば、物理層は、Validを用いてパケットアライメントを支援する他の代替的な実施態様を含む数ある潜在的な実施態様の中でも、Stall及びValidがサンプリングされてアサートされるまで、trdyを駆動してリンク層パケットをドレインし続けることができる。
MCPLにおける信号について、様々な耐障害性を定義することができる。例えば、有効信号、ストリーム信号、LSMサイドバンド信号、低周波数サイドバンド信号、リンク層パケット信号及び他のタイプの信号について耐障害性を定義することができる。MCPLの専用データレーンを介して送信されたパケット、メッセージ及び他のデータの耐障害性は、データを統制する特定のプロトコルに基づくことができる。いくつかの実施態様では、数ある潜在的な例の中でも、周期的冗長検査(CRC)、リトライバッファ等のエラー検出及び処理メカニズムを提供することができる。例として、MCPLを介して送信されるPCIeパケットの場合、PCIeトランザクション層パケット(TLP)のために32ビットCRCを利用することができ((例えばリプレイメカニズムを通じて)送達が保証される)、PCIeリンク層パケット(損失が多くなるように構築される場合がある(例えば、リプレイが適用されない))のために16ビットCRCを利用することができる。更に、PCIeフレーミングトークンの場合、数ある例の中でも、トークン識別子について特定のハミング距離(例えば、ハミング距離4)を定義することができ、パリティ及び4ビットCRCも利用することができる。他方で、IDIパケットの場合、16ビットCRCを利用することができる。
いくつかの実施態様では、(例えば、ビット及びシンボルロックを保証するのに役立つために)有効信号が低から高(すなわち、0から1)に遷移することを必要とすることを含む耐障害性をリンク層パケット(LLP)について定義することができる。更に、MCPL上でLLPデータにおける障害を判断する基として用いることができる数ある定義された特徴の中でも、1つの例では、特定の数の連続した同一のLLPが送信されるように定義することができ、各リクエストに対する応答を予期することができ、リクエスト側は、応答タイムアウト後にリトライを行う。更なる例では、例えば、期間ウィンドウ全体にわたって有効信号又はシンボルを拡張することにより(例えば8つのUIについて有効信号を高に保持することによる)、有効信号のための耐障害性を提供することができる。更に、ストリーム信号におけるエラー又は障害は、数ある例の中でも、ストリーム信号のエンコード値のハミング距離を維持することによって防ぐことができる。
論理PHYの実施は、エラー検出、エラー報告、及びエラー処理ロジックを含むことができる。いくつかの実施態様では、例示的なMCPLの論理PHYは、数ある例の中でも、PHY層デフレーミングエラー(例えば、有効レーン及びストリームレーン上)、サイドバンドエラー(例えば、LSM状態遷移に関する)、LLPにおけるエラー(例えば、LSM状態遷移に重要である)を検出するロジックを含むことができる。数ある例の中でも、いくらかのエラー検出/解決は、PCIe固有のエラーを検出するように適合されたPCIeロジック等の上位層ロジックに委譲することができる。
デフレーミングエラーの場合、いくつかの実施態様では、エラー処理ロジックを通じて1以上のメカニズムを提供することができる。デフレーミングエラーは、関与するプロトコルに基づいて処理することができる。例えば、いくつかの実施態様では、リンク層は、リトライをトリガするために、エラーを通知されることができる。デフレーミングは、論理PHYデフレーミングの再アライメントも生じさせることができる。更に、数ある技法の中でも、論理PHYの再センタリングも行うことができ、シンボル/ウィンドウロックを再取得することができる。いくつかの例では、センタリングは、PHYが、着信データを検出するために、受信機クロック位相を最適点まで動かすことを含むことができる。この文脈において、「最適」とは、ノイズ及びクロックジッタのための最大マージンを有する場所を指すことができる。再センタリングは、数ある例の中でも、例えば、PHYが低電力状態からウェイクアップするときに実行される、単純化されたセンタリング機能を含むことができる。
他のタイプのエラーは、他のエラー処理技法を含むことができる。例えば、サイドバンドにおいて検出されるエラーは、対応する状態(例えば、LSM)のタイムアウトメカニズムを通じて捕捉され得る。エラーのログをとることができ、次にリンク状態機械をReset(リセット)に遷移させることができる。LSMは、ソフトウェアから再始動コマンドが受信されるまでResetにとどまることができる。別の例では、リンク制御パケットエラー等のLLPエラーは、LLPシーケンスに対する確認応答が受信されない場合にLLPシーケンスを再始動することができるタイムアウトメカニズムを用いて処理することができる。
図14A〜図14Cは、様々なタイプのデータについて例示的なMCPLのデータレーンにおける例示的なビットマッピングの表現を示している。例えば、例示的なMCPLは、50個のデータレーンを含むことができる。図14Aは、8UIのシンボル又はウィンドウ内でデータレーンを介して送信することができる、IDI等の第1のプロトコルにおける例示的な16バイトのスロットの第1のビットマッピングを示す。例えば、定義された8UIウィンドウ内で、ヘッダスロットを含む3つの16バイトスロットを送信することができる。この例では2バイトのデータが残り、これらの残っている2バイトをCRCビット(例えば、レーンDATA[48]及びDATA[49]内)に利用することができる。
別の例では、図14Bは、例示的なMCPLの50個のデータレーンを介して送信されるPCIeパケットデータのための第2の例示的なビットマッピングを示す。図14Bの例では、16バイトのパケット(例えば、トランザクション層(TLP)又はデータリンク層(DLLP)PCIeパケット)を、MCPLを介して送信することができる。8UIウィンドウでは、3つのパケットを送信することができ、残りの2バイトの帯域幅がウィンドウ内で用いられないまま残る。これらのシンボルにフレーミングトークンを含めることができ、各パケットの開始及び終了を位置特定するのに用いることができる。PCIeの1つの例では、図14Bの例において利用されるフレーミングは、8GT/sにおいてPCIeのために実施されるトークン等と同じとすることができる。
図14Cに示される更に別の例では、例示的なMCPLを介して送信されるリンク間パケット(例えば、LLPパケット)の例示的なビットマッピングが示されている。LLPはそれぞれ4バイトとすることができ、各LLP(例えば、LLP0、LLP1、LLP2等)は、例示的な実施態様における耐障害性及びエラー検出に従って連続して4回送信することができる。例えば、4つの連続した同一のLLPの受信に失敗することは、エラーを示すことができる。更に、他のデータタイプに関して、進行中の時間ウィンドウ又はシンボルにおいてVALIDを受信するのに失敗することもエラーを示すことができる。場合によっては、LLPは固定のスロットを有することができる。更に、数ある例の中でも、この例では、バイト期間における未使用又は「スペア」ビットにより、結果として50個のレーンのうちの2つ(例えば、DATA[48−49])にわたって論理0が送信されることになる。
図15を参照すると、状態遷移間で利用されるサイドバンドハンドシェイキングと共に、単純化されたリンク状態機械遷移図1400が示されている。例えば、Reset.Idle状態(例えば、この状態において、位相ロックループ(PLL)ロック較正が行われる)が、サイドバンドハンドシェイクを通じてReset.Cal状態(例えば、この状態において、リンクが更に較正される)に遷移することができる。Reset.Calは、サイドバンドハンドシェイクを通じて、Reset.ClockDCC状態(例えば、この状態において、デューティサイクル補正(DCC)及び遅延ロックルーピング(DLL)ロックを行うことができる)に遷移することができる。Reset.ClockDCCからReset.Quiet状態(例えば、有効信号をアサート解除する)に遷移するための更なるハンドシェイクを行うことができる。MCPLのレーン上のシグナリングのアライメントに役立つために、Center.Pattern状態を通じてレーンをセンタリングすることができる。
いくつかの実施態様では、図16の例に示すように、Center.Pattern状態の間、送信機はトレーニングパターン又は他のデータを生成することができる。受信機は、例えば、位相補間器位置及びvref位置を設定し、比較器を設定することによって、そのようなトレーニングパターンを受信するようにその受信機回路を調整することができる。受信機は、受信したパターンを予測パターンと比較し続け、結果をレジスタに記憶することができる。1組のパターンが完成した後、受信機は、vrefを同じに保ちながら位相補間器設定をインクリメントすることができる。テストパターン生成及び比較プロセスは継続することができ、新たな比較結果をレジスタに記憶することができ、プロシージャは全ての位相補間器値及び全てのvref値を反復的にステップスルーする。パターン生成及び比較プロセスが全て完了すると、Center.Quiet状態に入ることができる。Center.Pattern及びCenterQuietリンク状態を通じてレーンをセンタリングすることに続いて、サイドバンドハンドシェイク(例えば、リンクの専用LSMサイドバンドレーンを介するLSMサイドバンド信号を用いる)を促進してLink.Init状態に遷移し、MCPLを初期化し、MCPLにおいてデータの送信を可能にすることができる。
一時的に図15の検討に戻ると、上記で示したように、サイドバンドハンドシェイクを用いて、マルチチップパッケージにおけるダイ又はチップ間のリンク状態機械遷移を促進することができる。例えば、MCPLのLSMサイドバンドレーンにおける信号を用いて、ダイにわたる状態機械遷移を同期させることができる。例えば、状態(例えば、Reset.Idle)を出る条件が満たされたとき、これらの条件を満たした側が、自身のアウトバウンドLSM_SBレーンにおいて、LSMサイドバンド信号をアサートし、他の遠隔ダイが同じ条件に達し、そのダイのLSM_SBレーンにおいてLSMサイドバンド信号をアサートするのを待機することができる。双方のLSM_SB信号がアサートされたとき、各それぞれのダイのリンク状態機械が次の状態(例えば、Reset.Cal状態)に遷移することができる。双方のLSM_SB信号が状態を遷移する前にアサートされたままであるべき最小オーバラップ時間を定義することができる。更に、LSM_SBがアサート解除された後、正確なターンアラウンド検出を可能にするための最小静止時間を定義することができる。いくつかの実施態様では、全てのリンク状態機械遷移はそのようなLSM_SBハンドシェイクを条件とし、そのようなLSM_SBハンドシェイクによって促進され得る。
図17は、例示的なMCPLに含めることができる更なるリンク状態及びリンク状態遷移のうちの少なくともいくつかを示す、より詳細なリンク状態機械図1700である。いくつかの実施態様では、例示的なリンク状態機械は、図17に示す数ある状態及び状態遷移の中でも、「有向ループバック(Directed Loopback)」遷移を含むことができ、この遷移は、MCPLのレーンをデジタルループバックにするように提供することができる。例えば、MCPLの受信機レーンは、クロックリカバリ回路の後に送信機レーンにループバックすることができる。場合によっては、「LB_Recenter」状態も提供することができる。この状態は、データシンボルをアラインするのに用いることができる。更に、図15に示すように、MCPLは、数ある潜在的な例の中でも、L1アイドル状態及びL2スリープ状態等の、アクティブL0状態及び低電力状態を含む複数のリンク状態をサポートすることができる。
図18は、アクティブ状態(例えば、L0)及び低電力と、アイドル状態(例えば、L1)との間の遷移の例示的なフローを示す単純化されたブロック図1800である。この特定の例では、第1のデバイス1805及び第2のデバイス1810はMCPLを用いて通信可能に結合される。アクティブ状態にある間、データはMCPLのレーン(例えば、DATA、VALID、STREAM等)を介して送信される。レーン(例えば、データレーンであり、ストリーム信号が、データがLLPデータであることを示す)を介してリンク層パケット(LLP)を通信し、リンク状態遷移を促進するのに役立てることができる。例えば、第1のデバイス1805と第2のデバイス1810との間でLLPを送信して、L0からL1へのエントリを交渉することができる。例えば、MCPLによってサポートされる上位層プロトコルは、L1(又は別の状態)へのエントリが望ましいことを通信することができ、この上位層プロトコルは、物理層にL1に入らせるために、LLPを、MCPLを介して送信させ、リンク層ハンドシェイクを促進することができる。例えば、図18は、第2の(アップストリーム)デバイス1810から第1の(ダウンストリーム)デバイス1805に送信される「L1に入る」リクエストLLPを含む、送信されるLLPの少なくとも一部分を示す。いくつかの実施態様及び上位レベルプロトコルでは、ダウンストリームポートはL1へのエントリを開始しない。数ある例の中でも、受信側の第1のデバイス1805は、応答時に「L1に変更」リクエストLLPを送信することができ、第2のデバイス1810は、この応答を、「L1に変更」確認応答(ACK)LLPを通じて確認応答することができる。ハンドシェイクの完了を検出すると、論理PHYは、サイドバンド信号が専用サイドバンドリンクにおいてアサートされるようにし、ACKが受信されたこと、及びデバイス(例えば、1805)が、L1へのエントリの準備ができており、これを予期していることを確認応答する。例えば、第1のデバイス1805は、第2のデバイス1810に送信されるサイドバンド信号1815をアサートし、リンク層ハンドシェイクにおける最終的なACKの受信を確認することができる。更に、第2のデバイス1810も、サイドバンド信号1815に応答してサイドバンド信号をアサートし、第1のデバイス1805に、第1のデバイスのサイドバンドACK1805を通知することができる。リンク層制御及びサイドバンドハンドシェイクが完了すると、MCPL PHYはL1状態に遷移することができ、これにより、デバイス1805、1810の1820、1825のそれぞれのMCPLストローブを含む、MCPLの全てのレーンがアイドル電力節減モードに入る。例えば、MCPLを介して他のデバイスに送信されるデータの検出に応答して、第1のデバイス1805及び第2のデバイス1810のうちの一方の上位レベル層ロジックがL0への再エントリをリクエストすると、L1を出ることができる。
上記で示したように、いくつかの実施態様では、MCPLは、潜在的に複数の異なるプロトコルをサポートする2つのデバイス間の通信を促進することができ、MCPLは、MCPLのレーンを介する複数のプロトコルのうちの潜在的に任意の1つによる通信を促進することができる。一方、複数のプロトコルを促進することは、少なくともいくつかのリンク状態へのエントリ及び再エントリを複雑にする可能性がある。例えば、いくつかの従来のインターコネクトは、状態遷移におけるマスタの役割を仮定した単一の上位層を有するのに対し、複数の異なるプロトコルを有するMCPLの実装は、事実上複数のマスタを伴う。例として、図18に示すように、MCPLの実装により、2つのデバイス1805、1810間でPCIe及びIDIの各々をサポートすることができる。例えば、物理層をアイドル又は低電力状態にすることは、サポートされるプロトコル(例えば、PCIe及びIDIの双方)の各々から最初に得られる許可を条件とすることができる。
場合によっては、L1(又は別の状態)へのエントリは、MCPLの実施のためにサポートされる、複数のサポートされるプロトコルのうちの1つのみによってリクエストすることができる。他のプロトコルが(例えば、MCPLにおける同様の条件(例えば、トラフィックがほとんど又は全くない)を特定することに基づいて)同様に同じ状態へのエントリをリクエストする可能性があるが、論理PHYは、実際に状態遷移を促進する前に、各上位層プロトコルから許可又は命令が受信されるまで待機することができる。論理PHYは、いずれの上位層プロトコルが状態変化をリクエストした(例えば、対応するハンドシェイクを実行した)かを追跡し、プロトコルの各々が、L0からL1への遷移、又は他のプロトコルの通信に影響若しくは干渉する別の遷移等の特定の状態変化をリクエストしたことを特定すると、状態遷移をトリガすることができる。いくつかの実施態様では、プロトコルは、システム内の他のプロトコルに対する自身の少なくとも部分的な依存性に関して認識していない可能性がある。更に、場合によっては、プロトコルは、リクエストされた状態遷移の確認又は拒否等の特定の状態に入るリクエストに対する応答を(例えば、PHYから)予期する場合がある。したがって、そのような場合、アイドルリンク状態へのエントリに関する他のサポートされるプロトコルからの許可を待機する間、論理PHYは、アイドル状態に入るリクエストに対する合成応答を生成し、要求側の上位層プロトコルに、(実際には、少なくとも、他のプロトコルもアイドル状態へのエントリをリクエストするまで、レーンが依然としてアクティブであるときに)特定の状態に入ったことを信じさせるように「騙す」ことができる。数ある潜在的な利点の中でも、これは、数ある例の中でも複数のプロトコル間での低電力状態へのエントリの調整を単純化することができる。
上記で記載した装置、方法及びシステムは、上述したように任意の電子デバイス又はシステムにおいて実施することができる。特定の例として、以下の図は、本明細書において説明されるような本発明を利用する例示的なシステムを提供する。以下のシステムは、より詳細に説明されているが、上記の検討から、複数の異なるインターコネクトが開示され、説明され、修正される。容易に明らかとなるように、上記で説明した利点は、これらのインターコネクト、ファブリック又はアーキテクチャのうちの任意のものに適用することができる。
図19を参照すると、マルチコアプロセッサを含むコンピューティングシステムのためのブロック図の一実施形態が示されている。プロセッサ1900は、マイクロプロセッサ、埋込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)又はコードを実行する他のデバイス等の任意のプロセッサ又は処理デバイスを含む。1つの実施形態では、プロセッサ1900は、少なくとも2つのコア、コア1901及び1902を含む。これは、非対称コア又は対称コア(示す実施形態)を含むことができる。一方、プロセッサ1900は、対称又は非対称とすることができる任意の数の処理要素を含むことができる。
1つの実施形態では、処理要素は、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は、実行状態若しくは構造的状態等のプロセッサの状態を保持することが可能な任意の他の要素を含む。換言すれば、1つの実施形態では、処理要素は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション又は他のコード等のコードに独立して関連付けられることが可能な任意のハードウェアを指す。物理プロセッサ(又はプロセッサソケット)は通常、コア又はハードウェアスレッド等の潜在的に任意の数の他の処理要素を含む集積回路を指す。
コアは、多くの場合、独立した構造的状態を維持することが可能な集積回路上に位置するロジックを指す。独立して維持される各構造的状態は、少なくともいくつかの専用実行リソースに関連付けられる。コアと対照的に、ハードウェアスレッドは通常、独立した構造的状態を維持することが可能な集積回路上に位置する任意のロジックを指し、独立して維持される構造的状態は、実行リソースへのアクセスを共有する。見てわかるように、一定のリソースが共有され、他のリソースが構造的状態に専用であるとき、ハードウェアスレッド及びコアの用語間のラインは重複する。更に多くの場合に、コア及びハードウェアスレッドは、オペレーティングシステムによって、個々の論理プロセッサとみなされ、ここで、オペレーティングシステムは、各論理プロセッサにおいて動作を個々にスケジューリングすることが可能である。
図19に示すように、物理プロセッサ1900は、2つのコア、コア1901及び1902を含む。ここで、コア1901及び1902は、対称コア、すなわち、同じ構成、機能ユニット及び/又はロジックを有するコアとみなされる。別の実施形態では、コア1901はアウトオブオーダプロセッサコアを含むのに対し、コア1902はインオーダプロセッサコアを含む。一方、コア1901及び1902は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA:Instruction Set Architecuture)を実行するように適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行するように適合されたコア、共同設計されたコア、又は他の既知のコア等の任意のタイプのコアから個々に選択することができる。異種のコア環境(すなわち、非対称コア)において、バイナリ変換等の、ある形態の変換を利用して、一方又は双方のコアにおいてコードをスケジューリング又は実行することができる。また更に検討を進めて、コア1901に示す機能ユニットが以下で更に詳細に説明され、コア1902内のユニットは示される実施形態において同様に動作する。
示されるように、コア1901は、ハードウェアスレッドスロット1901a及び1901bと呼ばれる場合もある2つのハードウェアスレッド1901a及び1901bを含む。したがって、1つの実施形態において、オペレーティングシステム等のソフトウェアエンティティは、潜在的に、プロセッサ1900を4つの別個のプロセッサ、すなわち、4つのソフトウェアスレッドを同時に実行することが可能な4つの論理プロセッサ又は処理要素とみなす。上記で示唆したように、第1のスレッドは、アーキテクチャ状態レジスタ1901aに関連付けられ、第2のスレッドはアーキテクチャ状態レジスタ1901bに関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ1902aに関連付けることができ、第4のスレッドはアーキテクチャ状態レジスタ1902bに関連付けることができる。ここで、上記で説明したように、アーキテクチャ状態レジスタ(1901a、1901b、1902a及び1902b)の各々を、処理要素、スレッドスロット又はスレッドユニットと呼ぶことができる。示すように、アーキテクチャ状態レジスタ1901aは、アーキテクチャ状態レジスタ1901bにおいて複製され、このため、個々のアーキテクチャ状態/コンテキストが、論理プロセッサ1901a及び論理プロセッサ1901bのために記憶されることが可能である。コア1901において、アロケータ及びリネーマブロック1930における命令ポインタ及びリネームロジック等の他のより小さなリソースも、スレッド1901a及び1901bのために複製することができる。リオーダ/リタイアメントユニット1935におけるリオーダバッファ、ILTB1920、ロード/記憶バッファ及びキュー等のいくつかのリソースを、分割を通じて共有することができる。汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB1915、実行ユニット1940、及びアウトオブオーダユニット1935の部分等の他のリソースが潜在的に完全に共有される。
プロセッサ1900は、多くの場合に他のリソースを含み、これらは完全に共有されるか、分割を通じて共有されるか、又は処理要素によって/に専用にすることができる。図19において、プロセッサの例示的な論理ユニット/リソースを有する単なる例示的なプロセッサの一実施形態が示されている。プロセッサは、これらの機能ユニットのうちの任意のものを含むか又は省くことができ、示されていない任意の他の既知の機能ユニット、ロジック又はファームウェアを含むことができることに留意されたい。示されるように、コア1901は、単純化された、代表的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、様々な実施形態においてインオーダプロセッサを利用することができる。OOOコアは、実行/取得されるブランチを予測するブランチターゲットバッファ1920を含み、命令のアドレス変換エントリを記憶する命令変換バッファ(I−TLB)1920を含む。
コア1901は、フェッチされた要素をデコードするためにフェッチユニット1920に結合されたデコードモジュール1925を更に含む。フェッチロジックは、1つの実施形態では、それぞれスレッドスロット1901a、1901bに関連付けられた個々のシーケンサを含む。通常、コア1901は第1のISAに関連付けられている。第1のISAは、プロセッサ1900上で実行可能な命令を定義/指定する。第1のISAの一部である機械コード命令は、多くの場合、実行される命令又は動作を参照/指定する命令の一部分(opcodeと呼ばれる)を含む。デコードロジック1925は、これらの命令をopcodeから認識し、デコードされた命令を第1のISAによって定義されているように処理のためのパイプラインに通す回路部を含む。例えば、以下で更に詳細に検討するように、デコーダ1925は、1つの実施形態では、トランザクション命令等の特定の命令を認識するように設計又は適合されたロジックを含む。デコーダ1925による認識の結果として、アーキテクチャ又はコア1901は、適切な命令に関連付けられたタスクを実行する特定の予め定められた行動を行う。本明細書において説明されるタスク、ブロック、動作及び方法のうちの任意のものを、単一の又は複数の命令に応答して実行することができることに留意することが重要である。それらの命令のうちのいくつかは、新たな命令又は古い命令である場合がある。デコーダ1926は、1つの実施形態では、同じISA(又はそのサブセット)を認識することに留意されたい。代替的に、異種のコア環境では、デコーダ1926は第2のISA(第1のISAのサブセット又は別個のISA)を認識する。
1つの例では、アロケータ又はリネーマブロック1930は、命令処理結果を記憶するレジスタファイル等のリソースを予約するためのアロケータを含む。一方、スレッド1901a及び1901bは、潜在的に、アウトオブオーダ実行が可能であり、この場合、アロケータ及びリネーマブロック1930も、命令結果を追跡するためのリオーダバッファ等の他のリソースを予約する。ユニット1930も、プロセッサ1900の内部の他のレジスタに対するプログラム/命令基準レジスタをリネームするレジスタリネーマを含む。リオーダ/リタイアメントユニット1935は、アウトオブオーダ実行、及び後の、アウトオブオーダ実行された命令のインオーダリタイアメントをサポートするための、上述したリオーダバッファ、ロードバッファ及びストアバッファ等のコンポーネントを含む。
スケジューラ及び実行ユニットブロック1940は、1つの実施形態では、実行ユニット上で命令/動作をスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジューリングされる。実行ユニットに関連付けられたレジスタファイルも、情報命令処理結果を記憶するために含まれる。例示的な実行ユニットは、浮動小数点実行ユニットと、整数実行ユニットと、ジャンプ実行ユニットと、ロード実行ユニットと、ストア実行ユニットと、他の既知の実行ユニットとを含む。
低レベルデータキャッシュ及びデータ変換バッファ(D−TLB)1950は実行ユニット1940に結合される。データキャッシュは、潜在的にメモリコヒーレンシ状態に保持されているデータオペランド等の最近使用/操作された要素を記憶するためのものである。D−TLBは、最近の仮想/リニア対物理アドレス変換を記憶するためのものである。特定の例として、プロセッサは、物理メモリを複数の仮想ページに分割するページテーブル構造を含むことができる。
ここで、コア1901及び1902は、オンチップインタフェース1910に関連付けられた第2のレベルのキャッシュ等のより高レベルの又は更に外側のキャッシュへのアクセスを共有する。より高レベル又は更に外側とは、キャッシュレベルが実行ユニットから増大するか又は離れることを指すことに留意されたい。1つの実施形態では、より高レベルのキャッシュは、第2の又は第3のレベルのデータキャッシュ等の、最終レベルデータキャッシュ、すなわち、プロセッサ1900におけるメモリ階層における最後のキャッシュである。一方、より高いレベルのキャッシュはそれほど限定されていない。なぜなら、このキャッシュは命令キャッシュに関連付けられるか又は命令キャッシュを含むことができるためである。代わりに、トレースキャッシュ、すなわち命令キャッシュの一タイプをデコーダ1925が最近デコードされたトレースを記憶した後に結合することができる。ここで、命令は、潜在的にマクロ命令(すなわち、デコーダによって認識される一般的な命令)を指す。マクロ命令は、複数のマイクロ命令(マイクロ演算)にデコードすることができる。
示される構成では、プロセッサ1900は、オンチップインタフェースモジュール1910も含む。従来から、以下でより詳細に説明されるメモリコントローラが、プロセッサ1900の外部のコンピューティングシステムに含まれていた。このシナリオでは、オンチップインタフェース1910が、システムメモリ1975、チップセット(多くの場合、メモリ1975に接続するためのメモリコントローラハブ及び周辺デバイスに接続するためのI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ又は他の集積回路等の、プロセッサ1900の外部のデバイスと通信するためのものである。そしてこのシナリオでは、バス1905は、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、階層化プロトコルアーキテクチャ、差動バス及びGTLバス等の任意の既知のインターコネクトを含むことができる。
メモリ1975は、プロセッサ1900に専用とすることもできるし、又はシステム内の他のデバイスと共有することもできる。メモリ1975のタイプの一般的な例は、DRAM、SRAM、不揮発性メモリ(NVメモリ)及び他の既知のストレージデバイスを含む。デバイス1980は、グラフィックアクセラレータ、メモリコントローラハブに結合されたプロセッサ若しくはカード、I/Oコントローラハブに結合されたデータストレージ、無線送受信機、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ又は他の既知のデバイスを含むことができることに留意されたい。
一方、最近、より多くのロジック及びデバイスがSOC等の単一のダイ上に集積されているため、これらのデバイスの各々をプロセッサ1900上に組み込むことができる。例えば、1つの実施形態では、メモリコントローラハブは、プロセッサ1900と同じパッケージ及び/又はダイ上にある。ここで、コアの一部分(オンコア部分)1910は、メモリ1975又はグラフィックデバイス1980等の他のデバイスとインタフェースするための1以上のコントローラを含む。そのようなデバイスとインタフェースするためのインターコネクト及びコントローラを含む構成は、多くの場合、オンコア(又はアンコア構成)と呼ばれる。例として、オンチップインタフェース1910は、オンチップ通信のためのリングインターコネクト及びオフチップ通信のための高速シリアルポイントツーポイントリンク1905を含む。しかし、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ1975、グラフィックプロセッサ1980及び任意の他の既知のコンピュータデバイス/インタフェース等の更に多くのデバイスを単一のダイ又は集積回路上に集積し、高い機能性及び低電力消費で小さなフォームファクタを提供することができる。
1つの実施形態では、プロセッサ1900は、コンパイラ、最適化及び/又は変換器コード1977を実行して、本明細書に記載される装置及び方法並びにそれらとのインタフェースをサポートするためのアプリケーションコード1976をコンパイル、変換及び/又は最適化することができる。コンパイラは、多くの場合、ソーステキスト/コードをターゲットテキスト/コードに変換するプログラム又は1組のプログラムを含む。通例、コンパイラを用いたプログラム/アプリケーションコードのコンパイルは、複数のフェーズ及びパスで行われ、高レベルプログラミング言語コードを低レベルの機械又はアセンブリ言語コードに変換する。しかし、単純なコンパイルのために依然としてシングルパスコンパイラが用いられる場合がある。コンパイラは、任意の既知のコンパイル技法を利用して、語彙解析、前処理、パース、意味解析、コード生成、コード変換及びコード最適化等の任意の既知のコンパイラ動作を実行することができる。
より大型のコンパイラは、多くの場合、複数のフェーズを含むが、最も多くの場合、これらのフェーズは大まかな2つのフェーズ、すなわち、(1)フロントエンド、すなわち、通常、構文処理、意味処理及びいくつかの変換/最適化を行うことができるところと、(2)バックエンド、すなわち、解析、変換、最適化及びコード生成を行うところと、に含まれる。いくつかのコンパイラは、コンパイラのフロントエンドとバックエンドとの間の境界が曖昧であることを示す中間を指す。結果として、コンパイラの挿入、関連付け、生成又は他の動作の参照を、上述したフェーズ又はパスのうちの任意のもの、及びコンパイラの任意の他の既知のフェーズ又はパスにおいて行うことができる。説明のための例として、コンパイラは、コンパイルのフロントエンドフェーズにおける呼/動作の挿入等のコンパイルの1以上のフェーズにおける動作、呼、機能等を潜在的に挿入し、次に、変換フェーズ中に呼/動作をより低レベルのコードに変換する。動的コンパイル中、コンパイラコード又は動的最適化コードは、そのような動作/呼を挿入し、ランタイム中の実行のためにコードを最適化することができることに留意されたい。説明のための特定の例として、バイナリコード(既にコンパイルされたコード)は、ランタイム中に動的に最適化することができる。ここで、プログラムコードは、動的最適化コード、バイナリコード又はこれらの組合せを含むことができる。
コンパイラと同様に、バイナリ変換器等の変換器は、コードを静的又は動的に変換してコードを最適化及び/又は変換する。したがって、コード、アプリケーションコード、プログラムコード又は他のソフトウェア環境の実行の参照は、(1)コンパイラプログラム、最適化コードオプティマイザ又は変換器を動的又は静的に実行して、プログラムコードをコンパイルするか、ソフトウェア構造を維持するか、他の動作を実行するか、コードを最適化するか若しくはコードを変換すること、(2)最適化/コンパイルされたアプリケーションコード等の動作/呼を含むメインプログラムコードを実行すること、(3)メインプログラムコードに関連付けられたライブラリ等の他のプログラムコードを実行して、ソフトウェア構造を維持するか、他のソフトウェア関連動作を実行するか若しくはコードを最適化すること、又は(4)それらの組合せ、を指すことができる。
図20を参照すると、マルチコアプロセッサの一実施形態のブロック図が示されている。図20の実施形態に示すように、プロセッサ2000は複数の領域を含む。特に、コアドメイン2030は、複数のコア2030A〜2030Nを含み、グラフィックドメイン2060は、メディアエンジン2065及びシステムエージェントドメイン2010を有する1以上のグラフィックエンジンを含む。
様々な実施形態では、システムエージェントドメイン2010は、所与のユニットにおいて生じるアクティブ性(又は非アクティブ性)を考慮して、ドメイン2030及び2060の個々のユニット(例えば、コア及び/又はグラフィックエンジン)が適切な電力モード/レベル(例えば、アクティブ、ターボ、スリープ、ハイバネート、ディープスリープ、又は他の進化型構成電力インタフェースのような状態)で動的に動作するように独立して制御可能であるように電力制御イベント及び電力管理を処理する。ドメイン2030及び2060の各々は、異なる電圧及び/又は電力で動作することができ、更に、ドメイン内の個々のユニットはそれぞれ、潜在的に独立した周波数及び電圧で動作する。3つのドメインのみを用いて示されているが本発明の範囲はこれに関して限定されず、他の実施形態では更なるドメインが存在してもよいことに留意されたい。
示すように、各コア2030は、様々な実行ユニット及び追加の処理要素に加えて、低レベルキャッシュを更に含む。ここで、様々なコアが互いに結合され、最終レベルキャッシュ(LLC)2040A〜2040Nの複数のユニット又はスライスから形成される共有キャッシュメモリに結合される。これらのLLCは、多くの場合、ストレージ及びキャッシュコントローラの機能を含み、コア間で共有され、潜在的にはグラフィックエンジン間でも共有される。
示すように、リングインターコネクト2050は、コアを共に結合し、それぞれがコアとLLCスライスとの間の結合部にある複数のリング係止部2052A〜2052Nを介して、コアドメイン2030と、グラフィックドメイン2060と、システムエージェント回路部2010との間のインターコネクトを提供する。図20に示すように、インターコネクト2050は、アドレス情報、データ情報、確認応答情報及びスヌープ/無効情報を含む様々な情報を搬送するのに用いられる。リングインターコネクトが示されているが、任意の既知のダイ上インターコネクト又はファブリックを利用することができる。説明のための例として、上記で検討したファブリックのうちのいくつか(例えば、別のダイ上インターコネクト、オンチップシステムファブリック(OSF)、進化型マイクロコントローラバスアーキテクチャ(AMBA)インターコネクト、多次元メッシュファブリック又は他の既知のインターコネクトアーキテクチャ)を同様に利用することができる。
更に示すように、システムエージェントドメイン2010は、関連付けられた表示の制御及びこの表示へのインタフェースを提供するための表示エンジン2012を含む。システムエージェントドメイン2010は、システムメモリ(例えば、複数のDIMMを実装されたDRAM、メモリコヒーレンス動作を実行するコヒーレンスロジック2022)にインタフェースを提供する集積メモリコントローラ2020等の他のユニットを含むことができる。プロセッサと他の回路部との間のインターコネクトを可能にするための複数のインタフェースが存在することができる。例えば、1つの実施形態では、少なくとも1つの直接メディアインタフェース(DMI)2016インタフェース及び1以上のPCIe(商標)インタフェース2014が提供される。表示エンジン及びこれらのインタフェースは、通常、PCIe(商標)ブリッジ2018を介してメモリに結合する。また更に、更なるプロセッサ又は他の回路部等の他のエージェント間の通信を提供するために、1以上の他のインタフェースを提供することができる。
ここで、図21を参照すると、代表的なコアのブロック図、特に、図20からのコア2030等のコアのバックエンドの論理ブロックが示されている。通常、図21に示す構造は、フロントエンドユニット2170を有するアウトオブオーダプロセッサを含む。このフロントエンドユニット2170は、着信命令をフェッチし、様々な処理(例えば、キャッシュ、デコード、分岐予測等)を実行し、アウトオブオーダ(OOO)エンジン2180に沿って命令/動作を渡すのに用いられる。OOOエンジン2180は、デコードされた命令に対し更なる処理を実行する。
特に、図21の実施形態において、アウトオブオーダエンジン2180は、フロントエンドユニット2170から、1以上のマイクロ命令又はμopの形態をとることができる、デコードされた命令を受信し、これらを、レジスタ等の適切なリソースに割り当てる割当てユニット2182を含む。次に、命令は予約ステーション2184に提供され、予約ステーション2184は、リソースを予約し、これらのリソースを複数の実行ユニット2186A〜2186Nのうちの1つにおける実行のためにスケジューリングする。例えば、数ある中でも、算術ロジックユニット(ALU)、ロード及びストアユニット、ベクトル処理ユニット(VPU)、浮動小数点実行ユニットを含む様々なタイプの実行ユニットが存在することができる。これらの異なる実行ユニットからの結果をリオーダバッファ(ROB)2188に提供することができる。ROB2188は、順序付けされていない結果を取得し、プログラム順序を補正するためにこれらの結果を返す。
更に図21を参照すると、フロントエンドユニット2170及びアウトオブオーダエンジン2180の双方がメモリ階層の異なるレベルに結合されることに留意されたい。特に示されるのは、命令レベルキャッシュ2172であり、そして、この命令レベルキャッシュは中間レベルキャッシュ2176に結合し、そして、この中間レベルキャッシュは、最終レベルキャッシュ2195に結合する。1つの実施形態では、最終レベルキャッシュ2195がオンチップ(アンコアと呼ばれる場合もある)ユニット2190において実施される。例として、ユニット2190は、図20のシステムエージェント2010に類似している。上記で検討するように、アンコア2190は、システムメモリ2199と通信し、このシステムメモリ2199は、例示される実施形態では、ED RAMを介して実施される。アウトオブオーダエンジン2180内の様々な実行ユニット2186が、第1のレベルのキャッシュ2174と通信し、この第1のレベルのキャッシュ2174が中間レベルキャッシュ2176とも通信することにも留意されたい。追加のコア2130N−2〜2130NがLLC2195に結合することができることにも留意されたい。図21の実施形態ではこの高レベルに示されているが、様々な代替及び追加のコンポーネントが存在する場合があることを理解されたい。
図22を参照すると、命令を実行する実行ユニットを含むプロセッサを用いて形成された例示的なコンピュータシステムのブロック図が示されている。ここで、インターコネクトのうちの1以上が本発明の1つの実施形態による1以上の特徴を実施する。システム2200は、本明細書において説明される実施形態におけるように、本発明に従ってデータを処理するアルゴリズムを実行するロジックを含む実行ユニットを用いるプロセッサ2202等のコンポーネントを備える。システム2200はPENTIUM(登録商標) III、PENTIUM(登録商標)4、Xeon(商標)、Itanium、XScale(商標)及び/又はStrongARM(商標)マイクロプロセッサに基づく処理システムを表すが、他のシステム(他のマイクロプロセッサ、エンジニアリングワークステーション、セットトップボックス等を有するPCを含む)も用いることができる。1つの実施形態では、サンプルシステム2200は、ワシントン州レドモンドのMicrosoft Corporationから入手可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム(例えば、UNIX(登録商標)及びLinux(登録商標))、埋込みソフトウェア及び/又はグラフィカルユーザインタフェースも用いることができる。このため、本発明の実施形態は、ハードウェア回路部及びソフトウェアのいかなる特定の組合せにも限定されない。
実施形態は、コンピュータシステムに限定されない。本発明の代替的な実施形態は、ハンドヘルドデバイス及び埋込みアプリケーション等の他のデバイスにおいて用いることができる。ハンドヘルドデバイスのいくつかの例は、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)及びハンドヘルドPCを含む。埋込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、又は、少なくとも1つの実施形態に従って1つ若しくは複数の命令を実行することができる任意の他のシステムを含むことができる。
この説明される実施形態では、プロセッサ2202は、少なくとも1つの命令を実行するアルゴリズムを実施する1以上の実行ユニット2208を含む。1つの実施形態は、単一のプロセッサデスクトップ又はサーバシステムの文脈で説明される場合があるが、代替的な実施形態をマルチプロセッサシステムに含めてもよい。システム2200は「ハブ」システムアーキテクチャの一例である。コンピュータシステム2200は、データ信号を処理するプロセッサ2202を含む。プロセッサ2202は、1つの説明のための例として、複合命令セットコンピュータ(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW:very long instruction word)マイクロプロセッサ、命令セットの組合せを実施するプロセッサ、又は、例えばデジタル信号プロセッサ等の任意の他のプロセッサデバイスを含む。プロセッサ2202は、プロセッサ2202と、システム2200内の他のコンポーネントとの間でデータ信号を送信するプロセッサバス2210に結合される。システム2200の要素(例えば、グラフィックアクセラレータ2212、メモリコントローラハブ2216、メモリ2220、I/Oコントローラハブ2224、無線送受信機2226、フラッシュBIOS2228、ネットワークコントローラ2234、オーディオコントローラ2236、シリアル拡張ポート2238、I/Oコントローラ2240等)が、当業者にはよく知られている従来の機能を実行する。
1つの実施形態において、プロセッサ2202は、レベル1(L1)内部キャッシュメモリ2204を備える。アーキテクチャに応じて、プロセッサ2202は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有することができる。他の実施形態は、特定の実施態様及び需要に応じて、内部キャッシュ及び外部キャッシュの双方の組合せを含む。レジスタファイル2206は、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ、ステータスレジスタ及び命令ポインタレジスタを含む様々なレジスタに様々なタイプのデータを記憶するためのものである。
整数演算及び浮動小数点演算を実行するためのロジックを含む実行ユニット2208もプロセッサ2202内に存在する。プロセッサ2202は、1つの実施形態では、マイクロコードを記憶するためのマイクロコード(μコード)ROMを含む。このマイクロコードは、実行されると、あるマイクロ命令のためのアルゴリズムを実行するか、又は複雑なシナリオに対処する。ここで、マイクロコードは、プロセッサ2202のためのロジックバグ/修正を処理するように潜在的に更新可能である。1つの実施形態について、実行ユニット2208は、パックされた命令セット2209を処理するためのロジックを含む。パック化された命令セット2209を、汎用プロセッサ2202の命令セット内に、命令を実行するための関連付けられた回路部と共に含めることによって、多くのマルチメディアアプリケーションによって用いられる演算が、汎用プロセッサ2202内のパックされたデータを用いることによって実行され得る。このため、パックされたデータに対し演算を実行するためにプロセッサデータバスの全幅を用いることによって、多くのマルチメディアアプリケーションが加速され、より効率的に実行される。これにより、潜在的には、1以上の演算を実行するために、より小さなデータユニットをプロセッサのデータバスにわたって一度に1つのデータ要素ずつ転送する必要がなくなる。
実行ユニット2208の代替的な実施形態は、マイクロコントローラ、埋込みプロセッサ、グラフィックデバイス、DSP及び他のタイプのロジック回路において用いることもできる。システム2200はメモリ2220を含む。メモリ2220はダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、又は他のメモリデバイスを含む。メモリ2220は、プロセッサ2202によって実行されるデータ信号によって表される命令及び/又はデータを記憶する。
本発明の上述した特徴又は態様のうちの任意のものを、図22に示す1以上のインターコネクトにおいて利用することができることに留意されたい。例えば、プロセッサ2202の内部ユニットを結合するための、示されていないダイ上インターコネクト(ODI)は、上記で説明した本発明の1以上の態様を実施する。又は、本発明は、プロセッサバス2210(例えば、他の既知の高性能コンピューティングインターコネクト)、メモリ2220への高帯域幅メモリパス2218、グラフィックアクセラレータ2212へのポイントツーポイントリンク(例えば、周辺コンポーネントインターコネクトエクスプレス(PCIe)準拠ファブリック)、コントローラハブインターコネクト2222、I/O、又は他の示されるコンポーネントを結合するための他のインターコネクト(例えば、USB、PCI、PCIe)に関連付けられる。そのようなコンポーネントのいくつかの例は、オーディオコントローラ2236、ファームウェアハブ(フラッシュBIOS)2228、無線送受信機2226、データストレージ2224、ユーザ入力及びキーボードインタフェース2242を含むレガシI/Oコントローラ2210、ユニバーサルシリアルバス(USB)等のシリアル拡張ポート2238及びネットワークコントローラ2234を含む。データストレージデバイス2224は、ハードディスクドライブ、フロッピーディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス又は他のマスストレージデバイスを含むことができる。
ここで、図23を参照すると、本発明の一実施形態による第2のシステム2300のブロック図が示されている。図23に示すように、マルチプロセッサシステム2300は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト2350を介して結合された第1のプロセッサ2370及び第2のプロセッサ2380を含む。プロセッサ2370及び2380の各々は、プロセッサのあるバージョンとすることができる。1つの実施形態では、2352及び2354は、高性能アーキテクチャ等の、シリアルのポイントツーポイントコヒーレントインターコネクトファブリックの一部である。結果として、本発明はQPIアーキテクチャ内で実施することができる。
2つのみのプロセッサ2370、2380を用いて示されているが、本発明の範囲はそのように限定されていないことを理解されたい。他の実施形態では、所与のプロセッサ内に1以上の追加のプロセッサが存在し得る。
集積メモリコントローラユニット2372を含むプロセッサ2370及び集積コントローラユニット2382を含むプロセッサ2380が示されている。プロセッサ2370は、バスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース2376及び2378も含み、同様に、第2のプロセッサ2380はP−Pインタフェース2386及び2388を含む。プロセッサ2370、2380は、P−Pインタフェース回路2378、2388を用いてポイントツーポイント(P−P)インタフェース2350を介して情報を交換することができる。図23に示すように、IMC2372及び2382は、プロセッサを、それぞれのメモリ、すなわちメモリ2332及びメモリ2334に結合する。メモリ2332及びメモリ2334は、それぞれのプロセッサにローカルでアタッチされたメインメモリの一部分とすることができる。
プロセッサ2370、2380はそれぞれ、ポイントツーポイントインタフェース回路2376、2394、2386、2398を用いて個々のP−Pインタフェース2352、2354を介してチップセット2390と情報を交換する。また、チップセット2390は、高性能グラフィックインターコネクト2339に沿ってインタフェース回路2392を介して高性能グラフィック回路2338と情報を交換する。
共有キャッシュ(図示せず)を、プロセッサのいずれかの中に、又は双方のプロセッサの外側であるがP−Pインターコネクトを介してプロセッサと接続して含めることができ、それによって、プロセッサが低電力モードに入った場合に、いずれか又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュに記憶することができる。
チップセット2390は、インタフェース2396を介して第1のバス2316に結合することができる。1つの実施形態では、第1のバス2316は周辺コンポーネントインターコネクト(PCI)バス、又はPCI Expressバス若しくは別の第3世代I/Oインターコネクトバス等のバスとすることができるが、本発明の範囲はそのように限定されていない。
図23に示すように、様々なI/Oデバイス2314が、第1のバス2316を第2のバス2320に結合するバスブリッジ2318と共に第1のバス2316に結合される。1つの実施形態では、第2のバス2320は、低ピンカウント(LPC)バスを含む。1つの実施形態では、例えば、キーボード及び/又はマウス2322、通信デバイス2327、及び多くの場合に命令/コード及びデータ2330を含むディスクドライブ又は他のマスストレージデバイス等のストレージユニット2328を含む様々なデバイスが第2のバス2320に結合される。更に、第2のバス2320に結合されたオーディオI/O2324が示される。含まれるコンポーネント及びインターコネクトアーキテクチャが変動する他のアーキテクチャが可能であることに留意されたい。例えば、図23のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実施することができる。
次に図24を参照すると、本発明によるシステムオンチップ(SOC)設計の一実施形態が示される。説明のための特定の例として、SOC2400がユーザ機器(UE)に含まれる。1つの実施形態では、UEは、ハンドヘルドフォン、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプター付きノートブック、又は任意の他の同様の通信デバイス等の、エンドユーザによって通信に用いられる任意のデバイスを指す。多くの場合、UEは基地局又はノードに接続する。基地局又はノードは、潜在的に、GSM(登録商標)ネットワークにおける移動局(MS)に性質が対応する。
ここで、SOC2400は2つのコア、すなわち2406及び2407を含む。上記の検討と同様に、コア2406及び2407は、Intel(登録商標)アーキテクチャCore(商標)ベースプロセッサ、Advanced Micro Devices、Inc.(AMD)プロセッサ、MIPSベースのプロセッサ、ARMベースのプロセッサ設計又はそれらの顧客、及びそれらのライセンス又は利用者に適合することができる。コア2406及び2407は、システム2400の他の部分と通信するためのバスインタフェースユニット2409及びL2キャッシュ2411に関連付けられたキャッシュコントロール2408に結合される。インターコネクト2410は、上記で検討したIOSF、AMBA又は他のインターコネクト等のオンチップインターコネクトを含む。これらは潜在的に、本明細書において説明した1以上の態様を実施する。
インタフェース2410は、加入者アイデンティティモジュール(SIM)カードとインタフェースするためのSIM2340、SOC2400を初期化及びブートするためのコア2406及び2407によって実行されるブートコードを保持するブートROM2435、外部メモリ(例えば、DRAM2460)とインタフェースするためのSDRAMコントローラ2440、不揮発性メモリ(例えば、フラッシュ2465)とインタフェースするためのフラッシュコントローラ2445、周辺機器とインタフェースするための周辺制御2450(例えば、シリアル周辺インタフェース)、ビデオコーデック2420、及び入力(例えば、タッチ有効入力)を表示し受信するためのビデオインタフェース2425、グラフィック関連計算を実行するためのGPU2415等の、他のコンポーネントへの通信チャネルを提供する。これらのインタフェースの任意のものが、本明細書に記載の本発明の態様を組み込むことができる。
更に、システムは、Bluetooth(登録商標)モジュール2470、3Gモデム2475、GPS2485及びWiFi2485等の通信のための周辺機器を示す。上記で示したように、UEは通信のための無線機を含むことに留意されたい。結果として、これらの周辺通信モジュールは全てが必要とされるわけではない。一方、UEにおいて、外部通信のための何らかの形態の無線機が含まれる。
本発明を、限られた数の実施形態に関して説明してきたが、当業者であれば、ここからの多数の変更及び変形を理解するであろう。添付の特許請求の範囲は、本発明の真の趣旨及び範囲内にある全ての変更及び変形をカバーすることが意図される。
設計は、作成からシミュレーション、そして製造へと様々な段階を経ることができる。設計を表すデータは、複数の方式で設計を表すことができる。第1に、シミュレーションにおいて有用であるように、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を用いて表すことができる。更に、ロジック及び/又はトランジスタゲートを有する回路レベルモデルを、設計プロセスのいくつかの段階で生成することができる。更に、ほとんどの設計は、いくつかの段階において、ハードウェアモデル内の様々なデバイスの物理的配置を表すデータレベルに到達する。従来の半導体製造技法が用いられる場合、ハードウェアモデルを表すデータは、集積回路を作製するのに用いられるマスクのための様々なマスク層における様々な特徴の存否を指定するデータとすることができる。設計の任意の表現において、データは任意の形態の機械可読媒体に記憶することができる。ディスク等のメモリ又は磁気若しくは光学ストレージは、そのような情報を送信するように変調されるか又は他の形で生成された光波又は電波を介して送信される情報を記憶するための機械可読媒体とすることができる。コード又は設計を示すか又は搬送する電気搬送波が送信されるとき、電気信号のコピー、バッファ又は再送が行われる限り、新たなコピーが作製される。このため、通信プロバイダ又はネットワークプロバイダは、有形機械可読媒体上に少なくとも一時的に、本発明の実施形態の技法を具現化する、搬送波にエンコードされた情報等を記憶することができる。
本明細書において用いられるモジュールは、ハードウェア、ソフトウェア及び/又はファームウェアの任意の組合せを指す。例として、モジュールは、マイクロコントローラによって実行されるように適合されたコードを記憶する非一時的媒体に関連付けられたマイクロコントローラ等のハードウェアを含む。したがって、モジュールへの言及は、1つの実施形態では、非一時的媒体上で保持されるコードを認識及び/又は実行するように特に構成されたハードウェアを指す。更に、別の実施形態では、モジュールの使用は、マイクロコントローラによって、所定の動作を行うために実行されるように特に適合されたコードを含む非一時的媒体を指す。そして、推測することができるように、更に別の実施形態では、モジュールという用語は(この例では)、マイクロコントローラと非一時的媒体との組合せを指すことができる。多くの場合、別個であるものとして示されるモジュール境界は、共通して変動し、潜在的に重複する。例えば、第1のモジュール及び第2のモジュールは、いくらかの独立したハードウェア、ソフトウェア又はファームウェアを潜在的に保持しながら、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せを共有する場合がある。1つの実施形態では、ロジックという用語の使用は、トランジスタ、レジスタ、又はプログラム可能な論理デバイス等の他のハードウェアを含む。
「〜ように構成される」というフレーズの使用は、1つの実施形態では、装置、ハードウェア、ロジック又は要素を、指定又は決定されたタスクを実行するように、配置、組立て、製造、販売のオファー、インポート及び/又は設計することを指す。この例では、動作していない装置又はその要素は、依然として、指定されたタスクを行うように設計、結合及び/又は相互接続された場合に、この指定されたタスクを行う「ように構成されている」。単なる説明のための例として、論理ゲートは、動作中に0又は1を提供することができる。しかし、クロックにイネーブル信号を提供する「ように構成された」論理ゲートは、1又は0を提供することができる全ての潜在的な論理ゲートを含むわけではない。代わりに、論理ゲートは、何らかの方式で、動作中、1又は0の出力がクロックをイネーブルするように結合されている。ここでも、「〜ように構成される」という用語は、動作を必要とするものではなく、代わりに、装置、ハードウェア及び/又は要素の潜在状態に焦点を当てることに留意されたい。潜在状態において、装置、ハードウェア及び/又は要素は、装置、ハードウェア及び/又は要素が動作しているときに特定のタスクを実行するように設計される。
更に、「〜する」、「〜することができる」及び/又は「〜するように動作可能である」というフレーズの使用は、1つの実施形態では、装置、ロジック、ハードウェア及び/又は要素の使用を特定の方式で可能にするように設計された何らかの装置、ロジック、ハードウェア及び/又は要素を指す。上記と同様に、1つの実施形態では、「〜する」、「〜することができる」又は「〜するように動作可能である」の使用は、装置、ロジック、ハードウェア及び/又は要素の潜在的な状態を指し、ここで、装置、ロジック、ハードウェア及び/又は要素は、動作していないが、特定の方式で装置の使用を可能にするように設計されている。
本明細書において用いられるとき、値は、数、状態、論理状態又はバイナリ論理状態の任意の既知の表現を含む。多くの場合、ロジックレベル、ロジック値又は論理値の使用も1及び0として言及され、これは単にバイナリロジック状態を表す。例えば、1は高ロジックレベルを指し、0は低ロジックレベルを指す。1つの実施形態では、トランジスタ又はフラッシュセル等のストレージセルは、単一の論理値又は複数の論理値を保持することを可能とすることができる。一方、コンピュータシステムにおける値の他の表現が用いられている。例えば、10進数の10は、バイナリ値1010及び16進数の文字Aとして表すこともできる。したがって、値は、コンピュータシステム内に保持されることが可能な情報の任意の表現を含む。
更に、状態は、値又は値の一部分によって表すことができる。例として、論理1等の第1の値は、デフォルト状態又は初期状態を表すことができるのに対し、論理ゼロ等の第2の値は、非デフォルト状態を表すことができる。更に、リセット及びセットという用語は、1つの実施形態では、それぞれ、デフォルトの値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は潜在的に高い論理値、すなわちリセットを含むのに対し、更新された値は潜在的に低い論理値、すなわちセットを含む。値の任意の組合せを利用して任意の数の状態を表すことができることに留意されたい。
上記で示した方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施形態は、処理要素によって実行可能な、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体上に記憶された命令又はコードにより実施することができる。非一時的機械アクセス可能/可読媒体は、コンピュータ又は電子システム等の機械によって読出し可能な形態で情報を提供(すなわち、記憶及び/又は送信)する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体は、スタティックRAM(SRAM)又はダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM)、ROM、磁気又は光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的(伝播)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信した情報を保持するための他の形態のストレージデバイス等を含む。これらは、そこから情報を受信することができる非一時的媒体と区別される。
本発明の実施形態を実行するためのロジックをプログラムするのに用いられる命令は、DRAM、キャッシュ、フラッシュメモリ又は他のストレージ等の、システムのメモリ内に記憶することができる。更に、命令は、ネットワークを介して、又は他のコンピュータ可読媒体によって分配することができる。このため、機械可読媒体は、機械(例えば、コンピュータ)によって読出し可能な形態の情報を記憶又は送信するための任意のメカニズムを含むことができ、任意のメカニズムは、限定ではないが、フロッピーディスケット、光ディスク、コンパクトディスク読出し専用メモリ(CD−ROM)及び磁気−光ディスク、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能読出し専用メモリ(EPROM)、電気的に消去可能なプログラム可能読出し専用メモリ(EEPROM)、磁気又は光カード、フラッシュメモリ、又は、電気、光、音響若しくは他の形式の伝播信号(例えば、搬送波、赤外線信号、デジタル信号等)によりインターネットを介した情報の送信に使用される有形機械可読ストレージである。したがって、コンピュータ可読媒体は、機械(例えば、コンピュータ)によって読出し可能な形態で電子命令又は情報を記憶又は送信するのに適した任意のタイプの有形機械可読媒体を含む。
以下の実施例は、本明細書による実施形態に関する。1以上の実施形態は、物理リンクの1以上のデータレーン上でデータを受信し、物理リンクの別のレーン上で、有効なデータが1以上のデータレーン上で有効信号のアサートに続くことを特定する有効信号を受信し、物理リンクの別のレーン上で、1以上のデータレーン上のデータのタイプを特定するストリーム信号を受信するための、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェア及び/又はソフトウェアベースのロジック、並びに方法を提供することができる。
少なくとも1つの例では、物理層ロジックは更に、物理リンクの別のレーンを介してリンク状態機械管理信号を送信する。
少なくとも1つの例では、物理層ロジックは更に、サイドバンドリンクを介してサイドバンド信号を送信する。
少なくとも1つの例では、タイプはデータに関連付けられたプロトコルを含み、プロトコルは、物理リンクを利用する複数のプロトコルのうちの1つである。
少なくとも1つの例では、タイプはリンク層パケットデータを含む。
少なくとも1つの例では、データは物理リンクのためのリンク状態遷移を促進する。
少なくとも1つの例では、物理層ロジックは更に、ストリーム信号をデコードして、複数の異なるプロトコルのうちのいずれをデータに適用するかを特定する。
少なくとも1つの例では、物理層ロジックは更に、ストリーム信号において特定された複数のプロトコルのうちの特定の1つに対応する上位層プロトコルロジックにデータを渡す。
少なくとも1つの例では、装置は、物理層ロジックに加えて、複数のプロトコルの各々のリンク層ロジック及び他の上位層ロジックを含む。
少なくとも1つの例では、複数のプロトコルは、周辺コンポーネントインターコネクト(PCI)、PCI Express(PCIe)、Intelのダイ内インターコネクト(IDI)及びクイックパスインターコネクト(QPI)のうちの少なくとも2つを含む。
少なくとも1つの例では、物理層ロジックは更に、複数のプロトコルの各々におけるエラーを判断する。
少なくとも1つの例では、物理層ロジックは更に、有効信号及びストリーム信号のうちの1以上におけるエラーを判断する。
少なくとも1つの例では、物理層ロジックは更に、データレーン上で送信されるデータのデータウィンドウを定義し、データウィンドウは有効信号に対応する。
少なくとも1つの例では、データウィンドウはデータシンボルに対応し、有効信号は、データが送信されることになるウィンドウの直前のウィンドウにおいてアサートされる。
少なくとも1つの例では、データは、有効信号がアサートされない先行するウィンドウの直後のウィンドウ内のデータレーンにおいて無視される。
少なくとも1つの例では、ウィンドウはバイト期間に対応する。
少なくとも1つの例では、有効信号、データ及びストリーム信号の各々が物理リンクのために定義されたデータウィンドウに従ってアラインされる。
少なくとも1つの例では、ストリーム信号は同じウィンドウ中にデータとして送信される。
少なくとも1つの例では、物理リンクは2つのデバイスをマルチチップパッケージにおいて接続する。
少なくとも1つの例では、物理層ロジックは更に、物理リンクのレーンにおいて信号を再センタリングする。
少なくとも1つの例では、レーンは有効信号に基づいて再センタリングされる。
少なくとも1つの例では、第2のウィンドウ中のデータリンクの専用ストリーム信号レーン上でストリーム信号が受信され、ストリーム信号がデコードされ、ストリーム信号のデコードから、データに関連付けられたプロトコルが決定される。
少なくとも1つの例では、データリンクは、複数の異なるプロトコルのデータを送信するように適合される。
少なくとも1つの例では、データリンク上で送信されるデータが特定され、送信されるデータに対応する特定のウィンドウ中に、データリンクの発信有効信号レーン上で有効信号が送信され、特定のウィンドウの直後の別のウィンドウ中に専用発信データレーン上でデータが送信される。
少なくとも1つの例では、複数のデータレーンは、専用リンク状態機械サイドバンドレーンを更に含む。
少なくとも1つの例では、第1のデバイスはパッケージ内の第1のダイを含み、第2のデバイスはパッケージ内の第2のダイを含む。
少なくとも1つの例では、第1のデバイスはオンパッケージデバイスを含み、第2のデバイスはオフパッケージデバイスを含む。
1以上の実施形態は、データリンクの専用データレーン上で送信されるデータを特定し、データリンク上で送信されるデータに対応する特定のウィンドウ中にデータリンクの専用有効信号レーン上で有効信号を送信し、特定のウィンドウの直後の別のウィンドウ中にデータリンクの専用データレーン上でデータを送信し、データのタイプを特定するようにエンコードされたストリーム信号リンク上でストリーム信号を送信するための、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェア及び/又はソフトウェアベースのロジック、並びに方法を提供することができる。
少なくとも1つの例では、有効信号は、他のウィンドウ中のデータレーン上のデータが有効なデータであることを示す。
少なくとも1つの例では、ストリーム信号リンクは専用ストリーム信号リンクを含む。
少なくとも1つの例では、ストリーム信号は、特定のプロトコルがデータに関連付けられているか否かを特定するように適合される。
少なくとも1つの例では、物理層ロジックは共通物理層に含まれ、複数のプロトコルがこの共通物理層を利用し、特定のプロトコルが複数のプロトコルに含まれる。
少なくとも1つの例では、複数のプロトコルは、PCI、PCIe、IDI及びQPIのうちの2つ以上を含む。
少なくとも1つの例では、ストリーム信号は、データがリンク層パケットを含むか否かを特定するように更に適合される。
少なくとも1つの例では、ストリーム信号は、データがサイドバンドデータであるか否かを特定するように更に適合される。
少なくとも1つの例では、物理層ロジックは更に、データタイプを決定し、決定されたタイプを特定するストリーム信号をエンコードする。
少なくとも1つの例では、物理層ロジックは更に、データリンクの専用LSM_SBレーン上でリンク状態機械サイドバンド(LSM_SB)信号を送信する。
少なくとも1つの例では、物理層ロジックは更に、データリンクと別個のサイドバンドリンク上でサイドバンド信号を送信する。
少なくとも1つの例では、物理層ロジックは更に、データレーン上でリンク層データを送信し、リンク層データは、第1のリンク状態から第2のリンク状態にデータリンクを遷移させるのに用いられる。
少なくとも1つの例では、第1のリンク状態はアクティブリンク状態を含み、第2のリンク状態は低電力リンク状態を含む。
少なくとも1つの例では、物理層ロジックは更に、有効信号に対応する第1のデータウィンドウを特定し、第1のデータウィンドウの直後の第2のデータウィンドウ内のデータレーン上でデータを送信する。
少なくとも1つの例では、有効信号をアサートしないことは、直後のウィンドウ内のデータレーン上のデータが無効であるとして無視されることを示す。
少なくとも1つの例では、第1のデータウィンドウ及び第2のデータウィンドウの各々が、バイト期間に対応するように定義される。
少なくとも1つの例では、有効信号、データ及びストリーム信号の各々が、物理リンクについて定義されたデータウィンドウに従ってアラインされる。
少なくとも1つの例では、ストリーム信号は、データと同じウィンドウ中に送信される。
少なくとも1つの例では、物理層ロジックは更に、有効信号及びストリーム信号の各々を生成する。
少なくとも1つの例では、データリンクは、マルチチップパッケージ内の2つのデバイスを接続する。
少なくとも1つの例では、データリンクは8Gb/sを超えるデータ速度をサポートする。
1以上の実施形態は、複数のデータレーン、1以上の有効信号レーン、1以上のストリームレーンを含む複数のレーンを含むデータリンク上でシングルエンドシグナリングを提供し、複数のレーンによって用いるためのクロック信号を分配するための、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェア及び/又はソフトウェアベースのロジック、並びに方法を提供することができる。ここで、複数のレーンの各々において送信される信号は、クロック信号にアラインされる。
少なくとも1つの例では、データレーンの各々は、調整された電圧に中間レール終端される。
少なくとも1つの例では、調整された電圧は、単一の電圧レギュレータによって複数のデータレーンの各々に提供される。
少なくとも1つの例では、調整された電圧は、実質的にVcc/2に等しく、ここで、Vccは供給電圧を含む。
少なくとも1つの例では、物理層ロジックは、複数のデータレーンのうちの2つ以上の間のクロストークキャンセルを提供することを試みる。
少なくとも1つの例では、クロストークキャンセルは、2つ以上のデータレーンのうちの第1のものにおける重み付き高域通過フィルタリングされたアグレッサ信号を、2つ以上のデータレーンのうちの第2のものの信号に加えることによって提供される。
少なくとも1つの例では、物理層ロジックは、少なくとも部分的にレジスタ−キャパシタ(RC)低域通過フィルタを用いて重み付き高域通過フィルタリングされたアグレッサ信号を生成する。
少なくとも1つの例では、物理層ロジックは、ビットごとのデューティサイクル補正を提供する。
少なくとも1つの例では、物理層ロジックは、データレーンのうちの少なくとも特定の1つにおけるスキューを検出し、この特定のデータレーンをデスキューする。
少なくとも1つの例では、物理層ロジックは更に、データレーンのうちの少なくとも1つにACデータバス反転(DBI)を適用する。
少なくとも1つの例では、クロック信号は、半レート進められたクロック信号を含む。
少なくとも1つの例では、物理層ロジックは更に、静電放電保護を提供する。
少なくとも1つの例では、物理層ロジックは、少なくとも部分的にハードウェア回路を通じて実装される。
少なくとも1つの例では、有効信号は、有効信号レーン上で送信され、各有効信号は、有効なデータが複数のデータレーン上の有効信号のアサートに続くことを特定し、ストリーム信号は、ストリーム信号レーン上で送信され、各ストリーム信号は、1以上のデータレーン上のデータのタイプを特定する。
少なくとも1つの例では、データリンクは、8Gb/sを超えるデータ速度をサポートする。
1以上の実施形態は、複数のデータレーンを含む複数のレーン、1以上の有効信号レーン、1以上のストリームレーン、及び1以上のリンク状態機械サイドバンドレーンを含むデータリンク上でシングルエンドシグナリングを提供し、複数のレーンによって用いるためのクロック信号を分配するための、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェア及び/又はソフトウェアベースのロジック、並びに方法を提供することができる。複数のレーンの各々において送信される信号はクロック信号とアラインされ、複数のデータレーンのうちの2つ以上の間でクロストークキャンセルを提供し、データリンクのためのビットごとのデューティサイクル補正を提供し、ここで、データレーンの各々は調整された電圧に中間レール終端される。
少なくとも1つの例では、物理層ロジックは更に、データレーンのうちの少なくとも1つのスキューを検出し、特定のデータレーンをデスキューする。
1以上の実施形態は、複数の階層化プロトコルの各々のそれぞれの上位層がアクティブリンク状態から低電力リンク状態へのデータリンクの遷移をリクエストしていることを特定し、複数の階層化プロトコルの各々の上位層が低電力リンク状態への遷移をリクエストしていることを特定することに基づいて、データリンクをアクティブリンク状態から低電力リンク状態に遷移させるための、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェア及び/又はソフトウェアベースのロジック、並びに方法を提供することができる。複数の階層化プロトコルの各々は、データリンクを物理層として利用する。
少なくとも1つの例では、物理層ロジックは更に、別のデバイスとのハンドシェイクに参加し、データリンクに、低電力リンク状態に遷移させる。
少なくとも1つの例では、ハンドシェイクはリンク層ハンドシェイクを含む。
少なくとも1つの例では、物理層ロジックは、データリンクがアクティブリンク状態である間、リンク層ハンドシェイクにおいてリンク層データを送信する。
少なくとも1つの例では、物理層ロジックは、リンク層データと実質的に同時にストリーム信号を送信し、データリンクのデータ層上で送信されるデータがリンク層パケットを含むことを特定する。
少なくとも1つの例では、ストリーム信号は、特定のウィンドウ中にデータリンクの専用ストリーム信号レーン上で送信され、リンク層データも特定のウィンドウ中に送信される。
少なくとも1つの例では、物理層ロジックは、データリンクの専用有効信号レーン上で有効信号を送信し、有効信号は、特定のウィンドウの直前の別のウィンドウにおいて送信され、特定のウィンドウにおいて送信されるデータが有効であることを示す。
少なくとも1つの例では、ハンドシェイクはサイドバンドリンクを介したハンドシェイク通信を含む。
少なくとも1つの例では、ハンドシェイクは、リンク層ハンドシェイクと、サイドバンドリンクを通じたハンドシェイク通信とを含む。
少なくとも1つの例では、サイドバンドリンクを介したハンドシェイク通信はリンク層ハンドシェイクを確認する。
少なくとも1つの例では、物理層ロジックは更に、複数の階層化プロトコルのうちの第1の階層化プロトコルの上位層から、アクティブリンク状態から低電力リンク状態へのデータリンクの遷移のリクエストを特定する。
少なくとも1つの例では、物理層ロジックは更に、複数の階層化プロトコル内の他のプロトコル各々からリクエストが受信されるまで、データリンクがアクティブリンク状態から低電力リンク状態に遷移するのを待機する。
少なくとも1つの例では、物理層ロジックは、複数の階層化プロトコルの各々について、プロトコルがアクティブリンク状態から低電力リンク状態にデータリンクを遷移させることをリクエストしたか否かを追跡する。
少なくとも1つの例では、物理層ロジックは更に、アクティブ状態から低電力リンク状態へのデータリンクの実際の遷移の前に、アクティブリンク状態から低電力リンク状態へのデータリンクの遷移を確認する、リクエストに対する応答を生成する。
少なくとも1つの例では、アクティブリンク状態から低電力リンク状態へのデータリンクの遷移の承認が、複数の階層化プロトコルにおける他のプロトコルのうちの1以上から未処理となっている間、応答が送信される。
少なくとも1つの例では、低電力リンク状態はアイドルリンク状態を含む。
少なくとも1つの例では、複数の階層化プロトコルは、PCI、PCIe、IDI及びQPIのうちの1以上を含む。
データリンクを用いて第1のデバイスに通信可能に結合された、複数のレーン、第1のデバイス及び第2のデバイスを含むデータリンクを備えるシステムを提供することができ、第2のデバイスは、第1のプロトコルの上位層ロジックと、第2のプロトコルの上位層ロジックであって、複数のプロトコルスタックの各々が共通物理層を利用する、上位層ロジックと、共通物理層のための物理層ロジックであって、物理層ロジックは、データリンクを低電力リンク状態に遷移させる前に、第1のプロトコル及び第2のプロトコルを含むプロトコルの各々が、データリンクを利用して、アクティブリンク状態から低電力リンク状態にデータリンクを遷移させることを承認していることを判断する、物理層ロジックとを含む。
少なくとも1つの例では、複数のレーンは、複数のデータレーンと、1以上の有効信号レーンと、1以上のストリームレーンとを含む。
少なくとも1つの例では、有効信号は、有効信号レーン上で送信され、各有効信号は、有効なデータが複数のデータレーンにおける有効信号のアサートに続くことを特定し、ストリーム信号は、ストリーム信号レーン上で送信され、各ストリーム信号は、1以上のデータレーン上のデータのタイプを特定する。
少なくとも1つの例では、データリンクを低電力リンク状態に遷移させることは、第1のデバイスと第2のデバイスとの間のハンドシェイクを含む。
少なくとも1つの例では、ハンドシェイクはリンク層ハンドシェイク及びサイドバンドハンドシェイクを含む。
少なくとも1つの例では、第1のデバイスはパッケージ内の第1のダイを含み、第2のデバイスは、パッケージ内の第2のダイを含む。
少なくとも1つの例では、第1のデバイスはオンパッケージデバイスを含み、第2のデバイスはオフパッケージデバイスを含む。
本明細書全体を通じて、「1つの実施形態」又は「一実施形態」とは、実施形態に関連して説明される特定の特徴、構造又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。このため、本明細書全体を通じた様々な箇所に登場する「1つの実施形態において」又は「一実施形態において」というフレーズは、必ずしも全てが同じ実施形態を指しているわけではない。更に、特定の特徴、構造又は特性は、1以上の実施形態において任意の適切な方式で組み合わせることができる。
上記の明細書において、特定の例示的な実施形態を参照して詳細な説明が行われた。しかしながら、添付の特許請求の範囲において示すような本発明のより広い趣旨及び範囲から逸脱することなく、様々な変更及び変形を行うことができることが明らかであろう。したがって、明細書及び図面は、限定的意味ではなく例示的意味で考慮される。更に、実施形態及び他の例示的な言語の上記の使用は、必ずしも同じ実施形態又は同じ例を指すものではなく、潜在的に同じ実施形態のみでなく異なる実施形態及び別個の実施形態を指す場合もある。