以下の説明において、本発明の深い理解を与えるべく、多数の具体的な詳細が説明されている。例えば、複数の特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ上及びマイクロアーキテクチャ上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプライン段階、及び動作等の複数の例である。しかしながら、本発明を実施するのにこれら特定の詳細を採用する必要がないことは、当業者にとって明らかであろう。他の複数の例において、特定の代替的なプロセッサアーキテクチャ、説明されるアルゴリズムのための特定の論理回路/コード、特定のファームウェアコード、特定のインターコネクトオペレーション、特定の論理構成、特定の製造技術及び材料、特定のコンパイラ実装、特定のアルゴリズムのコード表現、特定のパワーダウン及びゲーティング技術/論理、並びにコンピュータシステムのその他の特定の動作の詳細等の周知のコンポーネント又は方法は、不必要に本発明を不明瞭にすることを避けるべく、詳細に記載されていない。
以下の複数の実施形態は、複数のコンピューティングプラットフォーム又は複数のマイクロプロセッサ等の複数の特定の集積回路におけるエネルギー管理及びエネルギー効率に関連して説明され得るが、他の複数の実施形態は、他の複数のタイプの複数の集積回路及び複数のロジックデバイスに適用可能である。本明細書に説明される複数の実施形態の複数の技術及び複数の教示と類似するものが、より良好なエネルギー効率及びエネルギー管理からもまた、利益を受け得る他のタイプの回路又は半導体デバイスに適用されてもよい。例えば、開示される複数の実施形態は、デスクトップコンピュータシステム又は複数のウルトラブック(登録商標)に限定されない。また、複数のハンドヘルドデバイス、複数のタブレット、他の複数の薄型ノートブック、複数のシステムオンチップ(SOC)デバイス、及び複数のエンベデッドアプリケーションのような、他の複数のデバイスにおいても使用され得る。ハンドヘルドデバイスの幾つかの例としては、複数の携帯電話、複数のインターネットプロトコルデバイス、複数のデジタルカメラ、複数の携帯情報端末(PDA)、及び複数のハンドヘルドPCが挙げられる。典型的には、エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、又は、以下で教示される機能及び処理を実行し得る任意のその他のシステムを含む。更に、本明細書で記載される複数の装置、複数の方法及び複数のシステムは、物理コンピューティングデバイスには限定されずに、また、エネルギー管理及び効率性のためのソフトウェア最適化に関連してよい。以下の説明から容易に明らかになるとおり、本明細書に記載される複数の方法、複数の装置及び複数のシステムの実施形態(ハードウェア、ファームウェア、ソフトウェアに関するものであろうと、又はそれらの組み合わせに関するものであろうと)における複数の実施形態は、性能への配慮と将来のバランスが取れた「グリーンテクノロジー」に不可欠である。
コンピューティングシステムが進歩するにしたがい、それらのコンポーネントもより複雑化している。その結果、最適なコンポーネントの動作のための帯域幅の要求に確実に合致するために、複数のコンポーネント間の結合及び通信を行うためのインターコネクトアーキテクチャも複雑性が増加している。更に、異なる市場セグメントが、その市場の必要性に合致したインターコネクトアーキテクチャの異なる態様を要求する。例えば、複数のサーバはより高い性能を必要とするが、その一方で、モバイルエコシステムは、場合によっては、省電力化のために全体的な性能を犠牲にすることがあり得る。しかし、ほとんどのファブリックの唯一の目的は、最大限の省電力化を行いながら、可能な限り高い性能を提供することである。以下では、本明細書により説明される発明の態様から利益を得る可能性のある多数のインターコネクトが説明される。
インターコネクトファブリックアーキテクチャの1つは、Peripheral Component Interconnect(PCI)Express(PCIe)アーキテクチャを含む。PCIeの基本的な目的は、異なる複数のベンダがからの複数のコンポーネント及び複数のデバイスにオープンアーキテクチャで相互運用を可能とすることであり、それは多数の市場セグメント、複数のクライアント(デスクトップ及びモバイル)、複数のサーバ(規格及び企業向け)及び複数の組込み通信デバイスに及ぶ。PCI Expressは、多種多様な次世代のコンピューティング及び通信プラットフォームのために規定された高性能汎用I/Oインターコネクトである。その利用モデル、ロード/ストアアーキテクチャ、ソフトウェアインタフェースのような幾つかのPCI属性が、その複数の改訂版を通じて維持されてきたが、これに対し、以前の複数のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられてきた。PCI Expressのより最近のバージョンでは、性能と複数の機能とに係る複数の新レベルを供給すべく、ポイントツーポイントインターコネクト、スイッチベースの技術、及びパケット化されたプロトコルにおける複数の進歩を利用している。電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、及びエラー処理は、PCI Expressによってサポートされる高度な複数の機能のうちの幾つかである。
図1を参照すると、コンポーネントのセットをインターコネクトするポイントツーポイントリンクから構成されるファブリックの実施形態が示されている。システム100は、プロセッサ105、及び、コントローラハブ115に結合されたシステムメモリ110を有する。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、組込みプロセッサ、コプロセッサ、又はその他のプロセッサ等の任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を通じてコントローラハブ115へ結合される。一実施形態において、後述されるように、FSB106は、シリアルポイントツーポイントインターコネクトである。別の実施形態において、リンク106は、シリアルの差動インターコネクトアーキテクチャを有し、これは異なるインターコネクト規格に準拠する。
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100における複数のデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を通じてコントローラハブ115へ結合される。メモリインタフェースの例として、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース、及びダイナミックRAM(DRAM)メモリインタフェースを含む。
一実施形態において、コントローラハブ115は、Peripheral Component Interconnect Express(PCIe又はPCIE)インターコネクト階層内のルートハブ、ルートコンプレックス、又はルートコントローラである。コントローラハブ115の例としては、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、インターコネクトコントローラハブ(ICH)、サウスブリッジ、及びルートコントロ―ラ/ハブを含む。しばしば、チップセットという用語は、2つの物理的に別個のコントローラハブ、即ち、インターコネクトコントローラハブ(ICH)に結合されたメモリコントローラハブ(MCH)を指す。現在のシステムは、しばしばプロセッサ105と一体化されたMCHを含み、その一方で、コントローラ115は、後述されるのと同様の態様でI/Oデバイスと通信することに留意されたい。幾つかの実施形態において、ピアツーピアルーティングは、ルートコンプレックス115を通じて任意選択的にサポートされる。
ここで、コントローラハブ115は、シリアルリンク119を通じてスイッチ/ブリッジ120に結合される。インタフェース/ポート117及び121とも称される入出力モジュール117及び121は、層状プロトコルスタックを含み/実装し、コントローラハブ115とスイッチ120との間で通信を提供する。一実施形態において、複数のデバイスがスイッチ120に結合されることが可能である。
スイッチ/ブリッジ120は、複数のパケット/メッセージを上流デバイス125、即ち、ルートコンプレックスに向かう階層の情報から、コントローラハブ115及び下流、即ちルートコントローラから離れて階層の下方へ、プロセッサ105又はシステムメモリ110からデバイス125へとルーティングする。一実施形態において、スイッチ120は、複数の仮想的なPCI−PCI間のブリッジデバイスの論理的アセンブリとして称される。 デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、及び、その他の入出力デバイスのような、電子システムに結合されるべき任意の、内部若しくは外部デバイス又はコンポーネントを含む。しばしば、PCIe専門用語では、デバイスのようなものは、エンドポイントとして称される。具体的には示されないが、レガシ、又は他のバージョンのPCIデバイスをサポートすべく、デバイス125は、PCIeからPCI/PCI−Xブリッジを含んでよい。PCIeにおけるエンドポイントデバイスは、レガシ、PCIe、又はルートコンプレックス統合エンドポイントとして、しばしば分類される。
グラフィックスアクセラレータ130もまた、シリアルリンク132を通じてコントローラハブ115に結合される。一実施形態において、グラフィックスアクセラレータ130は、MCHに結合され、MCHはICHに結合される。スイッチ120、従って、I/Oデバイス125は、次に、ICHに結合される。I/Oモジュール131及び118もまた、グラフィックスアクセラレータ130と、コントローラハブ115との間で通信すべく、層状プロトコルスタックを実装するためのものである。上のMCHの検討と同様に、グラフィクスコントローラ又はグラフィックスアクセラレータ130それ自身は、プロセッサ105内に一体化されてよい。更に、システムの1又は複数のリンク(例えば、123)は、リタイマ、リピータ等のような1又は複数の拡張デバイス(例えば、150)を含むことが可能である。
図2を参照すると、層状プロトコルスタックの実施形態が示されている。 層状プロトコルスタック200は、クイックパスインターコネクト(QPI)スタック、PCIeスタック、次世代高性能コンピューティングインターコネクトスタック、又はその他の層状スタックのような、任意の形態の層状の通信スタックを含む。図1から図4を参照したすぐ下の検討は、PCIeスタックに関するが、他のインターコネクトスタックに同一の概念が適用されてもよい。一実施形態において、プロトコルスタック200は、トランザクション層205と、リンク層210と、物理層220とを含むPCIeプロトコルスタックである。図1におけるインタフェース117、118、121、122、126及び131のような、インタフェースは、通信プロトコルスタック200として表されてもよい。通信プロトコルスタックとしての表現もまた、プロトコルスタックを実装している/含んでいるモジュール又はインタフェースとして称されてよい。
PCI Expressは、複数のコンポーネントの間で情報を通信すべく、複数のパケットを使用する。送信コンポーネントから受信コンポーネントへ情報を搬送するよう、複数のパケットは、トランザクション層205及びデータリンク層210で形成される。送信される複数のパケットが他の複数の層を通じて流れるにつれて、それらの複数の層でパケットを処理するために必要な追加情報によって、複数のパケットは拡張される。受信側で、逆の処理が生じ、複数のパケットは、それらの物理層220表現からデータリンク層210表現へ、そして最終的には(トランザクション層パケットの場合は)受信デバイスのトランザクション層205によって処理されることが可能な形態へと変換される。
[トランザクション層]
一実施形態において、トランザクション層205は、データリンク層210及び物理層220のような、インターコネクトアーキテクチャと、デバイスの処理コアとの間のインタフェースを提供するためのものである。これに関して、トランザクション層205の一次的な責務は、複数のパケット(即ち、トランザクション層パケット即ちTLP)の組み立て及び分解である。トランザクション層205は、典型的には、TLPに対するクレジットベースのフローコントロールを管理する。PCIeは複数の分割トランザクション、即ち、時間によって別々の要求及び応答を有する複数のトランザクションを実装し、ターゲットデバイスが応答のためにデータを集めている間に、リンクが他のトラフィックを搬送することを可能とする。
更に、PCIeは、クレジットベースのフローコントロールを利用する。このスキームにおいて、デバイスは、トランザクション層205内の複数の受信バッファの各々のために、クレジットの初期量を通知する。図1のコントローラハブ115のような、リンクの反対側における外部デバイスは、各TLPによって消費されるクレジットの数をカウントする。トランザクションは、そのトランザクションがクレジット限界を超過しない場合に、送信されてよい。応答が受信されると、クレジット量が回復される。クレジットスキームの利点は、クレジット限界に遭遇しないという条件で、クレジットリターンのレイテンシが、性能に影響しないことである。
一実施形態において、4つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入出力アドレス空間、及びメッセージアドレス空間を含む。メモリマッピング位置へ/からデータを転送すべく、メモリ空間トランザクションは、複数の読み取り要求及び複数の書き込み要求のうちの1又は複数を有する。一実施形態において、メモリ空間トランザクションは、2つの異なるアドレスフォーマット、例えば、32ビットアドレスのようなショートアドレスフォーマット、又は64ビットアドレスのようなロングアドレスフォーマットを使用することが可能である。構成空間トランザクションは、複数のPCIeデバイスの構成空間にアクセスするために使用される。構成空間へのトランザクションは、読み込みリクエスト及び書き込みリクエストを含む。メッセージ空間トランザクション(又は、単にメッセージ)は、PCIeエージェントの間の帯域内通信をサポートするために規定される。
従って、一実施形態において、トランザクション層205は、パケットヘッダ/ペイロード206を組み立てる。現行のパケットヘッダ/ペイロードに対するフォーマットは、PCIe仕様ウェブサイトのPCIe仕様に見出され得る。
図3を素早く参照すると、PCIeトランザクション記述子の実施形態が示される。一実施形態において、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムである。これに関して、トランザクション記述子300は、システムにおけるトランザクションの識別をサポートする。他の潜在的な使用としては、デフォルトトランザクション順序の変更及び複数チャネルとトランザクションとの関連を追跡することを含む。
トランザクション記述子300は、グローバル識別子フィールド302、属性フィールド304、及びチャネル識別子フィールド306を含む。図示される例において、グローバル識別子フィールド302は、ローカルトランザクション識別子フィールド308及びソース識別子フィールド310を備えるように示される。一実施形態において、グローバルトランザクション識別子302は、全ての未処理の要求に対して固有である。
一実装によれば、ローカルトランザクション識別子フィールド308は、要求エージェントによって生成されるフィールドであり、このフィールドは、その要求エージェントに対する完了を必要とする、全ての未処理の要求に対して固有である。更に、この例において、ソース識別子310は、PCIe階層内のリクエストエージェントを一意に識別する。従って、ソースID310と併せて、ローカルトランザクション識別子308フィールドは、階層ドメイン内のトランザクションのグローバルな識別を提供する。
属性フィールド304は、トランザクションの複数の特性及び関係を指定する。これに関して、属性フィールド304は、トランザクションのデフォルト処理の変更を可能とする追加情報を提供するために潜在的に使用される。一実施形態において、属性フィールド304は、優先度フィールド312、予約フィールド314、順序フィールド316、及びスヌープ無しフィールド318を含む。ここで、優先度サブフィールド312は、トランザクションに優先度を割り当てるために、開始プログラムによって変更されてよい。予約属性フィールド314は、将来のため、又はベンダ定義の利用のために、予約されたままとされる。優先度及びセキュリティ属性を使用する可能な利用モデルは、予約属性フィールドを使用して実装されてよい。
この例において、複数のデフォルトの順序ルールを変更し得る順序タイプを伝達する任意情報を供給すべく、順序属性フィールド316が使用される。一例の実装によれば、順序属性「0」は、デフォルトの順序規則が適用されることを示し、ここで、順序属性「1」は緩和された順序を示し、書き込みでは同一の方向に書き込みをわたすことが出来、読み取り完了では、同一の方向に書き込みをわたすことが出来る。スヌープ属性フィールド318は、トランザクションがスヌープされるかを判断すべく利用される。示されるように、チャネルIDフィールド306は、トランザクションが関連付けられるチャネルを識別する。
[リンク層]
リンク層210は、データリンク層210としてもまた称されるが、トランザクション層205と、物理層220との間の中間段階として動作する。一実施形態において、データリンク層210の責務は、リンク上の2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性のあるメカニズムを提供することである。データリンク層210の一方側は、トランザクション層205によって組み立てられた複数のTLPを受け入れ、パケットシーケンス識別子211、即ち識別番号又はパケット番号を適用し、エラー検出コード、即ち、CRC212を計算及び適用し、物理デバイスから外部デバイスにわたる送信のため、変更された複数のTLPを物理層220に送信する。
[物理層]
一実施形態において、外部デバイスにパケットを物理的に送信すべく、物理層220は論理サブブロック221、及び電気サブブロック222を含む。ここで、論理サブブロック221は、物理層221の「デジタル」機能を担う。これに関して、論理サブブロックは、物理サブブロック222による送信のための出力情報を準備するための送信セクションと、受信した情報をリンク層210にわたす前に識別して準備する受信セクションとを含む。
物理ブロック222は、送信機及び受信機を含む。送信機は、複数のシンボルを有する論理サブブロック221によって供給され、送信機は複数のシンボルをシリアライズし、外部デバイスへと送信する。受信機は、外部デバイスからシリアライズされた複数のシンボルが供給され、受信された複数の信号をビットストリームへ変換する。ビットストリームは、非シリアル化され、論理サブブロック221に供給される。一実施形態において、8b/10b送信コードが採用され、ここでは10ビットシンボルが送受信される。ここで、複数のフレーム223を有するパケットをフレーム化するために特別なシンボルが使用される。更に、一例において、受信機は、また、到着するシリアルストリームから回復されるシンボルクロックを提供する。
上述のように、トランザクション層205、リンク層210、及び物理層220は、PCIeプロトコルスタックの特定の実施形態を参照して説明されているが、層状プロトコルスタックはこれに限定されない。実際に、任意の層状プロトコルは、含まれ/実装されてよい。一例として、層状プロトコルとして表されるポート/インタフェースは、(1)複数のパケットを組み立てるための第1の層、即ちトランザクション層;複数のパケットを配列するための第2の層、即ち、リンク層;及び、複数のパケットを送信する第3の層、即ち物理層を有する。特定の例として、共通規格インタフェース(CSI)層状プロトコルが利用される。
次に図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つのペア)を表す。帯域幅を拡張するため、リンクは、xNにより示される複数のレーンを集約してよい。ここで、Nは、1、2、4、8、12、16、32、64のような、又はそれより広い、任意のサポートされたリンク幅である。
差分ペアは、差分信号を送信するための、ライン416及び417のような、2つの送信パスを指す。一例として、ライン416が、低電圧レベルから高電圧レベルへと切り替わる、即ち、立ち上がりエッジであるとき、ライン417は、高ロジックレベルから低ロジックレベルへと、即ち、立下りエッジで駆動する。差分信号は、より良好な電気的な特性、例えば、より良好な信号整合性、即ち、クロスカップリング、電圧オーバシュート/アンダーシュート、リンギング等を潜在的に示す。これは、より良好なタイミングウィンドウを可能とし、それにより、より速い送信周波数を可能とする。
幾つかの実装において、PCIe準拠のリンクのようなリンクは、1又は複数のリタイマ、又は、リピータのような他の拡張デバイスを含むことが可能である。リタイマデバイス(又は単純に「リタイマ」)は、デジタルI/O信号を受信及び再送信(リタイマ)する複数のアクティブな電子デバイスを含むことが可能である。複数のリタイマは、デジタルI/Oバスによって使用されることが可能なチャネルの長さを拡張するために使用されることが可能である。リタイマは、プロトコルアウェア、ソフトウェアトランスペアレントであり、PCIeのリンク等化処理のようなリンク等化処理を実行可能であり得る。同様のプロトコルを採用するがリタイマを有さない複数のリンクによって実現される、データレートに相当するデータレートにおいて、1又は複数のリタイマを組み込むリンクは、2又はより多くの別個の電気的サブリンクを形成することが可能である。例えば、単一のリタイマを含むリンクは、各々が、8.0GT/s又はそれより高いデータレートで動作をする2つの別個のサブリンクを有するリンクを形成可能である。
複数の他の拡張デバイスは存在するが、しかしながら、これらの幾つかは、幾つかの通信プロトコルに伴う相互運用性の問題を有する。一例として、幾つかのリピータは、PCIe3.0のリンク等化プロトコルをサポートしないことがある。更に、幾つかのアプリケーションは、より長い物理的な長さの複数のチャネルを利用する傾向にある。これらのチャネルは、そのようなチャネル長を実現すべく、複数の拡張デバイスの使用をする。これら及び他の複数のトレンドは、多くのシステムにおいて、リタイマをますます重要なデバイスにしている。
図5Aから図5Bは、1又は複数のリタイマを含む例示のリンクの簡略化されたブロックダイアグラム500aから500bである。例えば、図5Aにおいて、第1コンポーネント505(例えば、上流コンポーネント)を第2コンポーネント510(例えば、下流コンポーネント)に接続するリンクは単一のリタイマ515aを含むことが可能である。第1のサブリンク520aは、第1コンポーネント505をリタイマ515aに接続可能であり、第2サブリンク520bは、リタイマ515aを第2コンポーネントに接続可能である。図5Bに示されるように、複数のリタイマ515a、515bは、リンクを拡張するために利用されることが可能である。3つのサブリンク520aから520cは、2つのリタイマ515a、515bを通じて規定されることが出来る。ここで、第1サブリンク515aは第1コンポーネントを第1リタイマ515aに接続し、第2サブリンクは第1リタイマ515aを第2リタイマ515bに接続し、第3サブリンク515cは第2リタイマ515bを第2コンポーネントに接続する。
図5Aから図5Bの例に示されるように、リタイマは、2つの疑似ポートを含むことが可能である。疑似ポートは、これらのそれぞれ下流/上流方向を動的に判断することが可能である。各リタイマ515a、515bは、上流パス及び下流パスを有することが出来る。更に、リタイマ515a、515bは、転送モード及び実行モードを含む、動作モードをサポート出来る。幾つかの場合におけるリタイマ515a、515bは、サブリンク上で受信されたデータをデコード可能であり、その他のサブリンク上で下流に転送すべきデータを再エンコード可能である。場合によって、例えば、オーダードセットのデータを処理及び転送する場合、リタイマは、それが受信するデータにおける幾つかの値を変更可能である。また、リタイマは、PCIeのような仕様によって規定された幅の選択肢のセットのような、任意の幅の選択肢をその最大幅として潜在的にサポート可能である。
幾つかの場合において、チャネル上でフォールトが出現し得る。1又は複数のリタイマを利用する場合、リンクは、複数のサブリンクを含み、サブリンクのうちの任意の1つの上のフォールトは、全リンクに対して検出されるフォールトをもたらし得る。特定のサブリンクフォールトが1又は複数のリタイマを含むリンクにおいて識別されるように、テストモードは、システム内フォールトの位置がサブリンクレベルで決定されることを可能とするように提供されることが可能である。影響されるサブリンクの識別は、リンクに対して実行されるデバッグ処理において使用されることが可能である。
図6Aから図6Eは、チャネルにおけるどの電気的サブリンクが、チャネルにおいて複数のエラーを生成しているかを判断するためのテストモードの例示的実装を示す、例示のブロックダイアグラム600aから600eを図示する。図6Aの例において、テストモードに入られることが可能で、テストモードは、(例えば、第1エンドポイントの)下流ポート605と、(例えば、別のエンドポイントの)上流ポート610との間のチャネルにわたって、リタイマ615を介して送信されるべき、規格化された信号を定義することが可能である。(ルートポートのような)第1エンドポイント(例えば、605)は、エラー報告シーケンス625aがその後に続く、データの規定されたシーケンス620aを含む信号を送信することが可能である。リタイマ615は、信号630を受信し、シーケンス620aが予測されるシーケンスに適合するか否かを判断する。シーケンス625aが、テストモードに対して規定されたシーケンスに適合しない場合、リタイマ615は偏差をエラーとして識別するべきである。
信号630の受信後、リタイマ615は、テストモードに関連した更なる信号635を次に生成することが可能である。一実装において、信号635で、リタイマ615は、同一の規定されたシーケンスを(620bにおいて)再現すべきである。リタイマ615は、信号630において受信されたようなシーケンス620aを再現せず、テストモードに対して規定されるように、新たにシーケンスを(例えば、620b)再生成する。複数のエラーを含むシーケンスがチャネルにわたって伝搬されると、どこ(例えば、どのサブリンクか)がエラーのソースであるかを識別することを困難にするため、そうならないように、これは、複数のサブリンクフォールトを分離させるように機能可能である。エラー報告シーケンス(例えば、625a、625b)においてエンコードされた情報は、しかしながら、テストモードで送信された各信号において維持されるべきである。その結果、エラー検出結果は、テストモード内でデバイスからデバイスへわたされる。更に、各エラー報告シーケンス(例えば625a、625b)においてエンコードされるエラー検出情報は、更なる複数のエラーがチャネルの複数のサブリンク内で検出されるように更新されるべきである。例えば、エラーについてのシーケンス620aの受信及び分析に応じて、リタイマ615は、エンドポイント605及びリタイマ615を接続するサブリンクに対してリタイマ615において、1又は複数のエラーが検出されたか否かを識別すべく、エラー報告シーケンス625bの少なくとも一部をエンコード可能である。この情報は、以前に受信されたエラー報告シーケンス625aにおいて説明された他の情報に加えられることが出来る。
図6Aの例を続行すると、リタイマ615は、更新されたエラー報告シーケンス625b及び新たに生成されたシーケンス620bを含む信号635を送信可能である。第2のエンドポイント610は、信号635を受信することが出来、不一致(例えば、テストモードに対して規定されたシーケンスから逸脱する1又は複数の不正確なビット)についてシーケンス620bを分析することが出来、任意の識別された不一致に基づいて、リタイマ615と、エンドポイント610との間のサブリンク上でエラー又はフォールトの状態を識別する。チャネルにおいて(存在する場合には)複数のサブリンクのどれが、テストの間、エラーを生成したかを識別すべく、第2のエンドポイントは、エラー報告シーケンス625bを更にデコード可能である。複数のエラーは、場合によって、他の複数の例の中でも、リンク試験及び管理ツールによって、後の処理及び分析のため、1又は複数のレジスタにおいて記録されることが可能である。
図6Bの例を参照すると、幾つかの実装において、ループバック状態は、テストモードを実装すべく活用されることが可能である。幾つかの場合において、ループバックテストモードを使用することは、潜在的な後の互換性の問題を克服するのに役立ち得る。多くの場合において、チャネル上のエンドポイント及び/又はリタイマは、異なる製造業者、ベンダ等によって提供されてもよい。エンドポイントデバイスのうちの1又は複数は、テストモードをサポートする(例えば、テストシーケンスにおける複数のエラーを検出し、エラー報告シーケンスデータを更新し、サブリンクエラーレジスタを更新する、等)ためのロジックを有さなくてもよい。一方、それにも関わらず、チャネルにおけるデバイスにより利用されるインターコネクトプロトコル(例えば、PCIe)により規定されるループバックモードのような、ループバックモードをサポートし得る。テストモードをサポートしない特定のエンドポイントは、複数の上流コンポーネント(例えば、他のエンドポイント及びリタイマ)により生成され、そこから受信されるエラー報告シーケンスデータをわたし返すことが出来る。他の例示的な実装の中では、特定のエンドポイントが、テストモードを完全にサポートしないにも関わらず、これらのコンポーネントのうちの1又は複数にテストモードの結果を観測及び処理することを可能とする。
図6Bにおいて、信号630及び信号635は、例えば、図6Aの例に示すように、第1のエンドポイント605からリタイマ615へ、リタイマ615から第2のエンドポイント610へ、それぞれ送信される。信号635が第2エンドポイント610に到達する場合、信号が、第2エンドポイント610からリタイマ615へ送信される信号640を通じてループバックされるように、テストモードは、ループバック状態で実装されることが可能である。信号640は、信号におけるシーケンス620a及び620bの分析からのエラー検出情報を含むエラー報告シーケンス625cと、シーケンス620cとの再生成を有することが可能である。リタイマ615は、複数のエラーについてシーケンス620cを分析することが出来る。受信されるシーケンス620cからリタイマ615によって検出されるように、エンドポイント610と、リタイマ615との間のサブリンクのエラーステータスは、リタイマ615によってエンドポイント605に生成及び送信されるように、シーケンス620dの別のインスタンスを更に含む信号645内に含まれる更新されたエラー報告シーケンス625d内で伝達されることが出来る。
図6Bの例において、エンドポイント605は、テストモード信号645において受信されるシーケンス620dを分析することにより、テストループバックにおいて、最終エラー分析を実行出来る。更に、エンドポイント605は、ループバックの間に、シーケンス620a、620b、620c、620dの分析の結果を識別すべく、エラー報告シーケンス625dを解釈することが出来る。エンドポイント605と、エンドポイント610と、リタイマ615との間の特定の複数のサブリンクにおける複数のエラー状態は、エラー報告シーケンス625dにおいて含まれる情報から識別されることが出来る。エンドポイント605における(及び、エンドポイント610又はリタイマ615において潜在的(又は代替的)でもある)追加的なロジックは、他の複数の例の中でも、リンク解析及びデバッグで使用するための(例えば、チャネルに対応する)レジスタ、又は別のデータ構造、又は、ロジックにサブリンクエラーステータスを報告可能である。
図6Cを参照すると、幾つかの実装において、エラー報告シーケンス(例えば、625aから625d)は、一連のエラー報告データセット(又は複数の「セグメント」)を含むことが可能である。ここで、各エラー報告セグメントは、1又は複数のリタイマ(例えば、615)を含み、2つのエンドポイント605、610を接続する、チャネルにおける少なくとも1つのサブリンクに対応する。例えば、図6Bの例において、エラー状態は、(例えば、シーケンス620a、620b、620cの分析を要約する625b、625c、625dにおいて)3回報告される。従って、少なくとも3つのセグメントが、エラー報告シーケンス625aから625bの各々において提供されることが可能である。例えば、図6Cの例に図示されるように、シーケンスの620aの分析の結果は、エラー報告シーケンス625bにおいて含まれるセグメント「Err1」における結果をエンコーディングにより反映されることが可能である。エラー報告セグメントErr1のエンコーディング(リタイマ615による)、及びエンコーディングを通じて説明されるエラーステータス情報は、エラー報告シーケンス625cにおいてエンドポイント610によって効果的にわたされることが出来る。例えば、エンドポイント610は、エラー報告シーケンス625bのErr1において含まれるものと同一のエンコーディングによって、エラー報告シーケンスの625cのErr1を再エンコードすることが出来る。更に、エラー報告シーケンス625cにおけるこの例「Err2」において、エンドポイント610は、(例えば、受信されたシーケンス620bの)その分析の結果が、エラー報告シーケンスのセグメントの別の部分でエンコードされるべきであると識別することが出来る。同様に、リタイマ615によって実行され、他の複数の例の中でも、対応するエラー報告セグメント「Err3」のリタイマのエンコーディングにおいて説明されるシーケンス620cの解析の複数の結果と共に、エンドポイント605に報告される複数の解析結果を伝搬すべく、次のエラー報告シーケンス625d(例えば、リタイマ615によって生成される)は、エラー報告シーケンス625cと同一のErr1及びErr2のエンコーディングを含むことが出来る。
テストモードの間、チャネルの複数のサブリンクのエラーステータスを累進的にドキュメンティングすべく、エラー報告シーケンス又は他のエラー報告データは、様々な態様でフォーマット及びエンコードされることが可能である。図6Cの例において導入されるように、幾つかの実装において、各セグメントがチャネルの特定のサブリンクのエラーステータス情報を説明するように指定されるように、エラー報告データは、セグメント化されることが出来る。幾つかの実装において、エラー報告シーケンスは、それらが説明しようとする複数のリンクの構造に基づいて、事前設定されることが出来る。例えば、ループバックテストモードが2つのリタイマ(従って、それぞれの方向で3つのサブリンク)を採用するリンクに対して提供されるべき場合、少なくとも5つのエラー報告セグメントが規定されることが可能である。その一方で、単一のリタイマ(及び2つのサブリンク)を採用するリンクに対して、エラー報告シーケンスは、リンクの試験等のために、少なくとも3つのセグメントを含むよう規定されることが可能である。場合によって、共通エラー報告シーケンスは、テストモードのためにサポートされるサブリンクの最大数に対応する、多数のセグメントを含むよう規定されることが出来る。更に他の複数の例において、エラー報告シーケンスのセグメンテーション及び構造は、例えば、他の複数の例の中でも、多数の拡張デバイス及び複数のサブリンクのためのリンクを分析することにより、動的に判断されることが出来る。
複数の前例の幾つかに示されるように、エラー報告シーケンスは、場合によっては、一連のセグメントとして実装されることが可能である。複数のセグメントの各々は、チャネルにおけるそれぞれのサブリンクのためのエラー検出に対応している。更に、別個のセグメントは、サブリンクに関連付けられたチャネルの上流部分、及び、同一のサブリンクに関連付けられたチャネルの下流部分に静的に割り当てられることが出来る。他の複数の例において、エラー報告シーケンスセグメントは、サブリンクエラー報告結果に動的にマッピングされ、又は割り当てられることが可能である。例えば、複数のセグメントは、先着順で割り当てられることが可能である。第1の評価のエラー報告結果は、第1セグメントを占有し、第2の評価の結果は、第2セグメントを占有する、等のようになる。幾つかの実装において、テストモードは、リンクの両方方向で使用されることが可能である。その結果、場合によって、テストモードシーケンス(例えば、620)は、リンクの上流にまず送信され、他の場合、同一のリンクの下流にまず送信される。そのような場合において、第1のサブリンクのエラー評価は、幾つかのテストにおいて報告される(例えば、更にErr1セグメントにおいて報告される)第1のものであってよく、他の場合には、他の潜在的な例の中でも、別のサブリンクの評価が、代わりに、第1に(例えば、Err1セグメントにおいて)報告されてよい。
幾つかの実装において、PCIe、PCI、QPI等のような既存のプロトコルのオーダードセット、トレーニングシーケンス、又は他の規定されたデータシーケンスは、テストモードで使用するために利用されることが出来る。例えば、各サブリンクにわたって伝達される固定されたテストモードシーケンス(例えば、620)は、インターコネクトプロトコルの規定されたシーケンスを含むように、規定されることが出来る。例えば、幾つかの実装において、PCIe electrical idle ordered set(EIOS)、electrical idle exit ordered set(EIEOS)、修正コンプライアンスパターン、又は他のパターン若しくはオーダードセットは、固定されたテストモードシーケンスとして使用され、又はそれに含まれることが出来る。幾つかの場合において、エラー報告データ(例えば、625)で使用する、又はエラー報告データとして使用するために、規定されたオーダードセット又は他のシーケンスは、変更され又は強化されることが出来る。エラー報告のための、規定され、既存のオーダードセット、又は他のシーケンスを利用することは、高い相互運用性を実現する助けとなることが出来、幾つかの場合において、レガシデバイスが、確立されたオーダードセットの中に含まれる特定のエラーエンコーディングを正確に解釈するためのロジックを欠く場合でさえも、当該デバイスが、信号を許容及び検証することを可能とする。例えば、一実装において、PCIe SKPオーダードセット(複数のSKP OS)又は別のオーダードセットは使用されることが可能である。例えば、図6D及び図6Eの例に示されるように、一連のオーダードセット(例えば、OS1からOS6)は、例示のエラー報告シーケンス(例えば、625)においてセグメントとして利用されることが出来る。各オーダードセットは、その中にエラー評価結果がエンコードされることが可能である、1又は複数のフィールド、シンボル、バイト等を提供出来る。
図6Dの例において、例示のリンクは、ルートポート650を特定のエンドポイント655に接続し、2つのリタイマ660、665を含む。3つのサブリンク675a、675b、675cは、ルートポート650を第1のリタイマ660に、第1のリタイマ660を第2のリタイマ665に、第2のリタイマ665をエンドポイントデバイス655に接続することが可能である。図6D及び図6Eの例において、レジスタは、どのオーダードセット(例えば、OS1からOS6)がテストモード内のどのサブリンクチャネルに対応するかを規定するデータを含むことが可能である。各テストモード信号(例えば、670aから670f)に含まれるべきである固定されたテストモードシーケンス/パターン(例えば、620)も、予め割り当てられる。その結果、テストモードに入られる場合、リンク上の各デバイス(例えば、650、655、660、665)は、各サブリンクチャネルを介してパターン620が成功裏に送信されているか否かを評価するよう構成される。複数の前例においてのように、受信されるパターンが、予測されるパターンから外れる場合、受信/評価デバイスは、エラーを説明する情報を有するそのサブリンクに対応するエラー報告セグメント(例えば、OS1からOS6)をエンコードすることが可能である。そのような情報は、他の複数の例の中でも、例えば、サブリンクを介して受信されるパターンにおいて検出される複数のエラーの数、複数のエラーの最初のものが検出されたブロック及び/又はビット、エラーが検出されたサブリンクのレーンを含むことが可能である。エラー報告を含むこのオーダードセットは、特定のサブリンクの受信端のデバイスによって提供される際に、特定のサブリンクのエラー評価結果を保存すべく、リンク上の後続の複数のデバイスによって、転送されることが可能である。
図示のように、図6Dの例において、第1の信号670aは、システムのループバック状態を使用して実装されるテストモードに関連した、テストモードパターン620及びエラー報告シーケンス625のセグメントを含んで送信される。任意のエラーが評価される前に初期信号670aが送信される際に、エラー結果によってエンコードされるべき、エラー報告シーケンス625の複数のセグメント(例えば、OS1からOS6)の複数の部分は、空で送信される(又は、各サブリンクチャネルのエラー報告がまだ完了していないことを示すようエンコードされる)ことが可能である。第1のリタイマ660は、信号670aを受信し、テストモードパターンが、予測されるものから外れるか否かを評価することが可能である。この例において、テストモードパターン620は、第1のサブリンク675aの下流チャネルを介して、エラーフリーで送信される。リタイマ660は、第1のオーダードセットOS1が、第1サブリンク675aの下流チャネル上でエラーが検出されていないことを示すべく、第1のサブリンク675aの下流チャネルに対する複数のエラーをドキュメンティングし、従って、エラー報告シーケンスセグメントOS1をエンコードすべく使用されるべきであることを識別可能である。ループバックテストモードは、リタイマ660が、テストモードパターンを再生成すること、及び、OS1における第1のサブリンク675aの(例えば、エラーが「ないこと」を示す)評価のエンコードされた結果を含むエラー報告シーケンスデータと共に、信号670bに、テストモードパターンを含めることで、続行することが可能である。
図6Dの例に示されるように、信号670bの場合、第2のリタイマ665によって受信されるようなパターンは、エラーを含む。エラーは、パターンの予測値から逸脱する受信パターンの1又は複数のビットによって、明らかにされることが可能である。そのような複数のエラーは、送信デバイス(例えば、660)、受信デバイス(例えば、665)、又は、サブリンク自身の複数のレーン(例えば、675b)を含むサブリンク上の様々な潜在的なフォールトによって引き起こされ得る。従って、この例において、以下のテストモード信号670cを生成及び送信する場合、第2のサブリンク675bの下流チャネルのための複数のエラー結果が、信号670cに含まれるエラー報告シーケンスのオーダードセットOS2にエンコードされるべきであることを、第2のリタイマ665は識別可能である。従って、第2のサブリンク675bの下流チャネルに対して検出された複数のエラーを記述すべく、第2のリタイマ665は、信号670cにおいて、OS2をエンコードすることが出来る。更に、リタイマ665は、テストモード信号670bのオーダードセットOS1において受信されるものと同一のエンコーディングを含むように、OS1が信号670cのエラー報告シーケンスにおいて再エンコードされ/繰り返されることを確実にすることが出来る。サブリンク675cの下流チャネルを介して、パターンがエラーフリーで受信されることを識別すべく、テストモード信号670cは、次に、サブリンク675cの下流チャネルを介してエンドポイント655に送信されることが出来、エンドポイント655は、信号670cに含まれる固定されたテストモードパターンを評価出来る。
前例を続けて、後続のテストモード信号(例えば、670dから670e)は、サブリンク675c、675b、675aの上流チャネルを介して、テストモード信号シーケンスのループバックに従って送信されることが可能である。この例において、識別される他の複数のエラーは、サブリンク675cの上流チャネル上で送信されるテストモード信号670dのパターンの中にあるものだけである。従って、後続のテストモード信号(例えば、670e、670f)は、第3のサブリンク675cの下流チャネルに対応するエラー報告セグメント(例えばOS4)におけるこのエラーのより早期の検出を反映可能である。
(信号670fにおける)ループバックテストモードシーケンスの受信に際して、サブリンク毎のベースで、どこで、どのようなエラーが生じたかを識別すべく、ルートポート、又は別のコンポーネントは、エラー報告シーケンスセグメントOS1からOS6においてドキュメンティングされたエラー情報を識別することが可能である。1つの例示の実装において、1又は複数のコントロールステータスレジスタは、複数のデバイス(例えば、650、655、660、665)、複数のサブリンク(例えば、675aから675c)、及び/又は複数のサブリンクチャネルに対して、並びに(又は代替的に)全体としてのリンクに対して維持されることが可能である。エラー報告シーケンスセグメントOS1からOS6において含まれるエラー情報は、レジスタにエラー情報を追加するために使用されることが可能である。リンク上のフォールト状態又は他の問題を識別すべく、これらレジスタにおけるエラー情報は、各サブリンクに取り付けられた複数のデバイス及び複数のサブリンクの評価を実行するために、追跡されることが可能である。
1つの例示の実装において、1又は複数のコントロールステータスレジスタが規定されることが出来る。サブリンクチャネル(又はサブリンク上のデバイス)に対しループバックテストモードがサポートされるか否かを識別すべく、リンク機能レジスタは、1又は複数のビットを含むように提供されることが出来る。1又は複数のビットは、複数のチャネルにおけるどのレベルのエラー検出機能が利用可能か(例えば、ブロックレベル、ビットレベル、レーンレベルのエラー検出機能、等)を更に識別することが可能である。いつテストモードに入られたか、及びテストモードの間、どのように特定のデバイスが機能するか(例えば、その後に特定の数のエラー報告セグメントが続く、特定の固定されたテストモードシーケンスを再生成する、等)を示すように設定されたフィールドを含むように、リンク制御レジスタは、提供されることが出来る。エラーログレジスタもまた、テストの間に生成されたエラー報告シーケンスデータに関連して使用されるように、提供されることが出来る。エラーログレジスタは、一例において、表1のようなフィールドを含むことが可能である。
幾つかの実装において、ループバックテストモード(又はテストモード)は、1又は複数のリタイマ(又は他の拡張デバイス)を含むリンクの両方の方向でサポートされることが出来る。例えば、図6Eの例に示されるように、ループバックテストモードは、エンドポイント655で代替的に開始出来、ルートポート650においてエンドポイント655にループバックされることが出来る。例えば、エンドポイント655は、テストモードパターン620を含み、第1の信号680a、かつ、6つのオーダードセットセグメント(例えば、OS1からOS6)を含むエラー報告シーケンスをテストにおいて送信することが出来る。この例において、図6Dの例に示すように、エラー報告セグメントOS1からOS6は、同一のサブリンクチャネルの割り当てを維持出来る。例えば、サブリンク675cの上流チャネルに割り当てられたエラー報告セグメント(例えば、OS4)をエンコードすること、及び、エンコードされたセグメントを含む信号680bを送信することにより、ループバックにおける第1の信号680aのパターンで実行されるエラー評価を、リタイマ665は、報告出来る。次に、リタイマ660は、信号680bを受信し、パターンがエラーを含むか否かを評価する。リタイマ660は、サブリンク675bの上流チャネルに割り当てられたエラー報告セグメント(例えば、OS5)において、そのテスト結果をエンコードし、エンコードされたエラー報告セグメントを、テストモード信号680cにおいて含まれるエラー報告シーケンスに加える。図6Dの例に示すように、このテストシーケンスは、信号680dから680fを使用して、残りの複数のサブリンクチャネルの試験(及び、それに対する結果の報告)を継続する。テストの複数の結果は、信号680fを通じて、エンドポイント655に、最終的にわたされることが出来る。更に、図6Dの例に示すように、最終サブリンクテストは、最終テストモード信号(例えば、670f、680f)を受信するデバイスで実行されることが可能である。しかし、このテストの複数の結果は、テストモード信号のいずれにおいても含まれなくてよい。従って、場合によっては、テストされるべき最後のサブリンクチャネルに割り当てられたエラー報告セグメントは、(最終テストモード信号(例えば、670f、680f)でテストを実行するデバイス(例えば、650、655)によって、複数の結果は、直接的に得られるので)テストモードシーケンスにおいて空の状態を保ってもよい。場合によっては、使用されていないエラー報告セグメントは、他の複数の例示的な使用の中でも、一連のエラー報告セグメントにわたって、DCバランスを維持することのような、エラー報告以外の目的のためにエンコードされることが可能である。
図6D及び図6Eの例に見られるように、幾つかの実装において、テストされるべき複数のサブリンク(例えば、675aから675c)の各上流及び下流チャネルは、それぞれエラー報告シーケンスセグメント(例えば、OS1からOS6)を割り当てられることが可能であり、(図6D及び6Eにおいて図示される場合における)6つのセグメントを含むエラー報告シーケンスをもたらす。幾つかの実装において、各サブリンクは、複数のエラー報告シーケンスセグメントを割り当てられ、テストモード信号の長さを更に拡張する。例えば、各サブリンクチャネルは、(例えば、各サブリンクチャネルのテストに関連する、より詳細にわたるエラーステータス情報のエンコーディングを収容すべく)2又はより多いエラー報告セグメントを各々割り当てられることが可能である。
サブリンクチャネルをエラー報告シーケンスにおける特定のオーダードセットに静的に割り当てるのではない、代替的な実施形態は、テストのパラメータによって、テストモードの呼出しにおいて割り当てられ、又は、使用されることが出来る複数のセグメントのセットを代わりに提供することが出来る。例えば、一例において、複数のテストモード信号において提供される複数のエラー報告セグメントは、サブリンクチャネルがテストされる順序に従って使用されることが可能である。例えば、ループバックテストモードの間に、どのようなサブリンクが第1にテストされるべきであっても、その結果は、第1に実行されるテスト結果に対して指定されるセグメント(例えば、OS1)においてエンコードされるであろう。例えば、図6Eの例におけるもののようなアプローチを使用して、信号680aにおける第1のテストモードパターンに対する複数のエラー評価結果は、OS1においてエンコードされ、信号680bの第2のエラー評価は、OS2にエンコードされる等のようになるであろう。しかしながら、サブリンク675aのテストから始めて、ループバックテストモードが実行される場合、図6Dの例に示すように、シーケンス670aにおけるパターンに対する複数のテスト結果は、OS1にエンコードされ、シーケンス670bにおけるパターンに対するテスト結果は、OS2にエンコードされる等のようになるであろう。そのような代替的な実装において、各サブリンクチャネルに対して専用のエラー報告セグメントを提供するのではなく、エラー報告シーケンスは、他の潜在的な例の中でも、(例えば、2つの拡張デバイスを有するリンクをサポートするために、6つのセグメントの代わりに5つのセグメントを使用して)生成されるべき報告された複数のテスト結果の数に従って、複数のエラー報告セグメントを提供してもよい。
1つの説明に役立つ例において、テストモードは、PCIe準拠のシステムで提供されることが出来、PCIeループバックへのエントリを実行することにより入られることが出来る。幾つかの実装において、(1又は複数の拡張デバイスを含む)リンクをループバックの状態に至らせ、ループバックがテストモードループバックであることを更に示すために、制御信号は、送信されることが可能である。他の複数の例において、トレーニングシーケンスの1又は複数のビット及び/又は複数のフレーミングトークンは、テストモードループバック状態へのエントリのネゴシエーションをするよう使用されることが可能である。場合によっては、ループバック状態への遷移に使用されるトレーニングシーケンスの1又は複数のビットは、ループバック状態が本明細書に説明される複数の例示のテストモードの原理を実装するもののような、テストモードループバック状態であることを示すようエンコードされる、1又は複数のビットを含むことが出来る。更に、一例において、テストモードループバックシグナリングは、ループバックアクティブ状態であることを示す、その後にデータストリームの開始(SDS)オーダードセットが続く、EIEOSの送信から始めることが出来る。EIEOS−SDSシーケンスは、一例において、各サブリンクに対して評価されるべき固定されたテストモードパターンとして機能することが出来る。データブロックにおいて許容される唯一のパターンは、0に等しく(例えば、標準LFSR出力)、サブリンクからサブリンクへ送信される各テストモード信号において含まれるべき、エラー報告シーケンスの複数のセグメントを実施する一連のSKP OSにおけるデータであるように、テストモードは、規定されることが出来る。一連の6つの連続的なSKP OSを規定する実施形態において、一連のSKP OSは、正確に370ブロック間隔で送信されることが可能である。(複数のテストモード信号において使用されるSKP OSの複数のバリアント内にエンコードされたエラー報告情報をデコードするためのロジックを備え付けられていない幾つかのデバイスを除いて)リンク上の各デバイスは、それに応じて進むように複数のテストモード信号を認識可能及び予測可能である。複数のアーキテクチャは、異なるクロッキングアーキテクチャをサポートすることが可能であり、それらの幾つかは、SKP OSが異なる公称レートで送信されることを必要とする。例えば、独立したスペクトラム拡散クロック(SSC)を伴う個別参照クロック(SRIS)アーキテクチャの場合、6つのSKP OSが、37個のデータブロックの後にスケジューリングされてよい。
図7は、上に説明されたループバックテストモードをサポートすべく強化された、例示のPCIe SKPオーダードセット700の表現を示す。例えば、シンボル0から(4*N−1)は、標準SKPシンボルに対応することが可能である。シンボル4*Nは、存在するSKP OS内に3つのより多いシンボルのみが含まれることを警告する標準SKPエンドシンボルであることが可能である。最後の3つのシンボル705、710、715は、SKP OSの特定のユースケースに対応する情報によってエンコードされるように予約されることが可能である。場合によって、SKPシンボル705、710、715に先行する複数の標準SKPシンボルもまた、複数のエラーに対して(テストモードパターンと共に)テストされることが出来る。これらの標準SKPシンボルは、そのような複数の場合において、テストモードパターンの部分とみなされることが可能である。場合によって、シンボル705、710、715の適切なフォーマット(例えば、4*N+1、4*N+2、4*N+3)は、リンクのリンクトレーニング状態(LTSSM)に基づくことが出来る。一例において、リンク状態がループバックである場合、SKPシンボル705、710、715は、サブリンクの複数のテスト結果を報告するためにエンコードされるよう規定されることが出来る。一例において、SKPシンボル705、710、715に含まれるデータの24ビットは、サブリンクについてのエラー報告セグメントを実装可能であり、以下のフォーマットに従って、エラー報告結果をエンコードするために適合されることが可能である。
上に説明される複数の実装は、本明細書に開示される幾つかの機能を単に簡便に示すために示される、非限定的な例として提供されるものと理解されるべきである。例えば、テストモードは、PCIe以外のインターコネクトプロトコル(例えば、QPI、IDI、PCI等)に準拠し、そのプロトコルに規定される幾つかの機能(例えば、オーダードセット、トレーニングシーケンス、リンク状態等)を利用するように提供されることが可能である。更に、上の例において、リタイマがしばしば指定される一方で、本明細書に説明される幾つかの原理及び機能は、他のタイプの拡張デバイスを採用するシステムに同様に適用可能であるものと理解されるべきである。また、他の複数の例示的な代替形態の中でも、他のテストモード信号、固定テストモードパターン、及び、エラー報告シーケンスは、本明細書に開示される概念の範囲から逸脱することなく、本明細書に指定された複数の特定の例を超えて実装されることが出来る。
[インバンドの切断検出]
複数のリタイマ及び他の複数の拡張デバイスは、様々な異なる機能及びフォームファクタを採用する様々な異なるシステムにおいて使用されることが可能である。例えば、幾つかのシステムは、1又は複数のリタイマを含むリンク上のデバイスのホットプラグ接続を提供することが可能である。場合によっては、リタイマは、ケーブル内で使用されることが可能であり、そのようなケーブルは、ホットプラグ接続及び他の複数の使用をサポートすることを目的としてよい。場合によって、サイドバンド信号、及び/又は、帯域外の接続/切断のシグナリングを提供する他のサポートロジックを提供しない幾つかの用途で、複数のリタイマは、実装されることが可能である。更に、リタイマは、その一部であるリンクにおいて切断/再接続を処理するには能力が不十分に又は全く備え付けられず、かかる複数のリタイマの使用を限定してもよい。従って、よりロバストでない拡張デバイス(例えば、不意の切断/再接続により耐性のある)は、より良好にインターコネクトプロトコルの機能及び要件に準拠する可能性があり、さもなければより最適な拡張ソリューションとなる可能性がある、複数のリタイマ及び他の複数の拡張デバイスによってしばしば代用される。
幾つかの実装において、インバンドの切断/再接続の検出は、例示のリタイマによってサポートされることが可能である。そのようなソリューションは、他の複数の例示的な利点の中でも、上に導入された、少なくとも幾つかの問題を処理することが可能である。インバンドの切断/再接続検出ロジックが備え付けられたリタイマは、他の複数の機能及び使用の中でも、(ホットプラグにおいてのような)不意の切断及び再接続を動的に検出し、サポートすることが可能である。切断(及び/又は再接続)の検出は、リタイマのポート上で受信される信号の分析を通じたそのようなロジックを通じて促進されることが可能である。従って、リタイマは、インバンドデータから、及び、対応するサイドバンドシグナリングなしで、リンク上の切断/再接続シーケンスを推定することが可能である。実際、幾つかの実装において、リタイマは、完全にインバンドの切断/再接続の検出に依存して、そのようなサイドバンドシグナリングのサポートを割愛することが出来る。更に、そのようなインバンドの切断/再接続検出ロジックの実装は、PCIeのような、特定のインターコネクトプロトコル内のそのような複数のリタイマの使用を拡張することを含む、リタイマについての様々な新たなユースケースを可能とすることが出来る。
図8の例を参照すると、少なくとも1つのリタイマ805を含むリンク上の、例示の不意の切断及び再接続を図示する一連の簡略化されたブロックダイアグラム800aから800dが示される。表現800aにおいて、リンクは、(例えば、第1のエンドポイントの)下流ポート810及び(例えば、第2のエンドポイントの)第1の上流ポート815を接続可能である。第2のエンドポイント815の不意の切断が生じた場合、表現800bに図示されるように、リタイマは、第2のエンドポイント815がもはや接続されないことを警告されていなかったことがあり得、又は、即座に認識しない可能性がある。クロストーク及び他の周辺信号は、リタイマ805がポート上のどのデバイスにも接続されていないにも関わらず、リタイマの下流ポートに現れることが可能である。リタイマ805は、それにも関わらず、アイドル状態がリタイマ805の下流ポート上に存在することを推定及び検出する前に、他のエンドポイント810上にこれらの無意味な信号の幾つかを転送することが可能である。更に、エンドポイント810は、(例えば、他のエンドポイント815の切断に従って、リタイマによりエンドポイント810に転送される不要な信号に基づいて)リンク上の問題を同様に検出し得て、問題を修正すべく、リンクトレーニングを開始し得る。ダイアグラム800cに示されるように、複数のトレーニングセット、(例えば、複数のオーダードセット、及び他の同様データを含む)予め規定された複数のトレーニングシーケンス、及び他のデータのようなリンクトレーニングデータ820は、接続されたエンドポイント610によってリタイマ805に送信されることが可能である。場合によって、リンクトレーニングデータ820は、(例えば、エンドポイント810によって開始される)リンクを回復する試みに関連して送信されることが可能である。下流ポート上のアイドル状態(例えば、825)と、リタイマの上流ポート上のリンクトレーニングデータ820とを合わせた、両方の検出に基づいて、リタイマのインバンドの切断/再接続検出ロジックは、切断が起こっていることを推定することが出来る。更に、それに応じて、リタイマロジックが、(ホットプラグ接続デバイスのような、別のエンドポイントの)別の上流ポート835との、新たな接続が完了しているか否か、及び、いつ完了したかを検出することを試みる検出状態830を、リタイマは、トリガすることが可能である。例えば、切断の識別に際して、例えば、ダイアグラム800dに示されるように、リタイマのインバンドの切断/再接続検出ロジックは、その接続(例えば、50Ω接続)を除去することが出来、新たな終端(例えば、50Ωの終端)を検出しようと試みることが出来る。
[マルチモードリタイマ]
複数のリタイマのような、拡張デバイスの使用は、特定の複数のタイプのアプリケーション及びシステムに、場合によっては制限される。例えば、多くのシステム及びアプリケーションは、複数のリタイマ及び同様の拡張デバイスのような複数のコンポーネントを通じて導入されるI/Oバスレイテンシを許容出来ない。しかしながら、幾つかのシステムにおいて、複数のシステムによって利用される複数のプロトコルの全ての態様をサポートすべく、複数のリタイマは、リタイマを通じて送信される信号をデコード及び再エンコードするよう構成されてよい。例えば、幾つかの信号は、トレーニングシーケンス、オーダードセット、及び他の例のような幾つかのタイプの信号におけるフィールドを変更すべくリタイマを必要とし得る。従って、複数の従来型のリタイマは、リンク上のリタイマを介して送信される全ての信号をデコード及び再エンコードする。例えば、PCIeにおいて、リタイマは、他の複数の例の中でも、8b/10b又は128b/130bエンコードスキームに従って、データをデコード及び再エンコードする。そのようなデコード及び再エンコードは、複数の従来型のリタイマを通じて導入される少なくとも幾つかのレイテンシのソースになることが出来る。
幾つかの実装において、改善されたリタイマは、他の複数の潜在的な利点の中でも、リタイマレイテンシを最小化することを含む、上に導入される問題のうち少なくとも幾つか処理するように提供されることが出来る。例えば、リタイマは、リンク上のデータの従来型のデコード及び再エンコードを割愛し、データがサブリンク上で受信されたまま、データを代わりに単に転送するよう選択的に採用されることが出来る、1又は複数の低レイテンシモードを含む、複数のモードを実装するための機能を有するように提供されることが出来る。 1又は複数の追加のモードもまた、リンクに沿ってデータをわたす前に、データをエンコード/再エンコードするリタイマを通じて、提供されることが出来る。
図9は、複数のモードのリタイマを提供するための例示の技術及びアルゴリズムを示す、例示のフローチャート900を示す。複数の信号は、905において、リタイマのポート(例えば、上流ポート)で受信されることが可能であり、905において、リタイマ内のロジックは、信号タイプ、及び/又は、受信された複数の信号に適用するリンク状態を決定することが出来る。状態は、リタイマの複数の動作モードのどれか1つを利用するために予め規定されることが可能である。複数のモードは、リタイマの送信ポート(例えば、下流ポート)上の送信のために、上流ポート上で受信されるデータを直接転送する、低レイテンシモードを含むことが出来る。少なくとも1つの他のモードは、リタイマの下流ポートで信号を送信する前に、上流で受信される信号を少なくとも部分的にデコード及び/又は再エンコードし、又は受信された複数の信号のエンコードを変更するよう提供されることが出来る。幾つかの実装において、リンクトレーニング(又はリンクトレーニングデータ)がリタイマによって識別される場合、リタイマを通じて送信されるトレーニングセットにおいて、リタイマが幾つかのフィールドを変更することを可能とする、より高いタッチ(及びより高いレイテンシ)モードがリタイマによって採用されることが判断される(または予め構成される)ことが出来る。幾つかのリンク状態は、リタイマにおいてデコード及び/又は再エンコードすることに依存していると(例えば、リタイマのレジスタにおいて)識別されることが出来、リンクがこれらの状態のうちの1つであることを識別することは、リタイマにおける信号エンコード/デコードモードの(例えば、920において)使用を(例えば、915において)トリガすることが出来る。別の例において、上に図5Aから図7の複数の例に説明されるように、リンクがテストモードにあることをリタイマが識別する場合、リタイマは、リタイマがデコードすること(例えば、エラー検出)、フィールド変更をすること(例えば、エラー報告データのエンコーディング)、及び、規定されたテストモードと同等の他の複数のタスクを実行することを可能とするモードを使用することが出来る。他のリンク状態及びデータタイプは、デコード/再エンコードなしでリタイマによって適切に転送されることが出来る。例えば、アクティブリンク状態(例えば、L0状態)において送信されるデータは、リタイマを通じて単に転送するのに適切であるとして規定されることが出来る。従って、リタイマによるデータの更なる一切の処理なし(又は最大でも、最小の処理)で、単純にリタイマを通じてデータをわたすべく、(例えば、910、915における)そのようなリンク状態(又は、データタイプ)の識別に際して、リタイマは、低レイテンシモードを(例えば、925において)使用することが出来る。リタイマは、複数のモードのうちの1又は複数がそれに対応する、検出された信号タイプ、リンク状態、及び他の状態に応じて、それが提供する、複数のモードの間を簡便に、動的に、及び自動的に、切り替えることが出来る。
[PHY層速度検出]
最新のインターコネクトファブリックは、複数の異なる接続速度をサポートすることが出来、場合によって、動作の間の2又はより多くの接続速度の間の変更をサポートすることが出来る。リタイマは、それが一部であるリンク上に存在するどんな接続速度もサポートすべきである。リンク状態遷移を検出又は推定し、それにより、検出されるリンク状態内で利用される取りうる接続速度もまた、検出又は推定するため、複雑で、信頼性のないリンク状態検出ロジックを場合によっては含む、論理的物理層ロジックを、複数の従来型のリタイマは、利用する。現在のリンク状態を判断すべく、リンク状態検出ロジックは、情報を処理するので、正しい送信速度が実現され、リタイマが、適切な接続速度において受信されたデータで転送を開始することが可能となるまで、リタイマの送信速度が調整される(及び、再調整される)前に、大幅な遅延が生じ得る。更に、リンク状態検出ロジックが不正確なリンク速度を場合によっては推定し得るので、不正確な接続速度が、リンク状態検出ロジックによって推定され得て、他の複数の問題の中でも、リンク上に複数のエラー、及び、更なる送信遅延を引き起こし得る。
幾つかの実装において、リンク上のデータを着信する実際の速度を正確に検出するため、電気的物理層(又はPHY)レベルでハードウェアを少なくとも部分的に使用して実装される速度検出ロジックを、リタイマは含むように提供されることが出来る。リンク接続速度を「推定」すべく論理的物理層ロジックを利用するのではなく、PHYレベル速度検出ロジックを利用して、実際の送信速度は、検出されることが出来る。実際に、幾つかの実装において、リンク送信速度の判断で用いる論理的物理層状態検出ロジックは、簡易化されることが出来、又は、割愛されることさえ出来る。リタイマが迅速、及び正確に検出速度をサポートすることを許容すべく、PHYレベル速度検出モジュールは、検出速度を論理的物理層に伝えることが出来る。
図10は、例示のリタイマの例示の物理層ロジックを示すように示される簡略化されたブロックダイアグラム1000である。幾つかの実装において、リタイマは、電気的PHYサブレイヤ1005及び論理的物理サブレイヤ1010を含む物理層を有することが出来る。場合によって、論理的物理サブレイヤ1010は、他の機能の中でも、メディアアクセスコントロール(MAC)及び複数の物理的コーディング(PCS)サブレイヤを更に有することが出来る。インタフェース1015は、PHY1005と、論理的物理サブレイヤ1010との間に提供されることが出来る。PCIe準拠のリタイマの実装におけるような幾つかの実施形態において、インタフェース1015は、他の複数の例の中でも、PHY Interface for PCI Express(PIPE)として実現されることが出来る。PHYサブレイヤ1005は、リンク上のデータ送信速度を検出することが出来る、速度検出モジュール1020を更に含むことが出来る。PHYサブレイヤ1005は、インタフェース1015を使用して、検出速度を論理的物理サブレイヤ1010に伝えることが出来る。幾つかの実装において、インタフェース1015(例えば、PIPEベースのインタフェース)は、(速度検出モジュール1020で検出された)速度の論理的物理層1010への通信をサポートするために拡張されることが出来る。幾つかの実装において、速度検出モジュール1020は、アナログの速度検出モジュールであり得る。
幾つかの実装において、速度検出モジュール1020は、バスが電気的アイドルを終了するときにはいつでも、自動的に速度検出を実行することが可能である。例えば、リンク上のデータのために使用されるべき送信速度を検出するため、リンク又は遷移リンク状態をアイドルから回復すべく送信されるリンクトレーニング信号は、速度検出モジュール1020によって使用されることが可能である。場合によっては、インターコネクトは、複数の接続速度のうちの1つをサポートすることが出来る。例えば、着信信号は、一実装において、2.5、5.0、8.0、又は、16.0GT/sのレートのうちの1つであることが出来、速度検出モジュールは、サポートレートのどれが現在リンク上で採用されているかを検出することが出来る。そのような速度検出回路(例えば、1020)を使用して、幾つかの実装において、リタイマがリンクの送信速度を検出及びそれに適応する、正確性及び速度を向上することが出来る。
図11Aから図11Eは、リタイマのような、拡張デバイスを使用して実装されるリンクに関連した例示の複数の技術を示すフローチャート1100aから1100eである。例えば、図11Aにおいて、1105で、テストモードへのエントリは、1又は複数のリタイマ(又は他の複数の拡張デバイス)を含むことに基づいて、2又はより多いサブリンクを有するリンクに対して識別される。テストモード信号は、1110で、テストモードに関連して生成され、テストモード信号は、テストパターン、及び、エラー報告シーケンスを含む。テストモード信号は、1115で、特定のサブリンクを介して送信される。複数のエラーについて特定のサブリンクをテストするため、テストモード信号に含まれるテストパターンは、(例えば、信号の受信機によって)使用されることが可能である。エラー報告シーケンスは、テストモードの間にテストされている各サブリンクのエラーステータスを徐々に報告するべきである。先行するサブリンク上で識別される複数のエラーは、1110で、生成されたテストモード信号に含まれるエラー報告シーケンスに追加され、及び、そこで識別されることが出来る。
図11Bを参照すると、1120で、テストモード信号は、リンク上のテストモードの間に、1又は複数の拡張デバイス、及び、2又はより多くのサブリンクを含むリンク内の特定のサブリンクを介して受信されることが出来る。受信されるテストモード信号は、テストパターン及びエラー報告シーケンスを含んでよい。1130で、特定のサブリンクのエラーステータスを判断すべく、テストパターンは、評価される。(例えば、一連のテストモード信号の間、リンクを介してエラーが伝搬されないことを保証すべく再生成された)テストパターンの新たに生成されたインスタンスと、特定のサブリンクの(1130において)判断されたエラーステータス、及び、テストモードの間に以前にテストされた複数のサブリンクのエラーステータス情報を維持するエラー報告シーケンスとを含む、別のテストモード信号は、1135でテストモードで送信されるべく生成される。図11A及び図11Bの例の両方において、テストモードは、他の複数の例の中でも、ループバックモードを使用して、実装されることが出来る。
図11Cの例において、1140で、リタイマを使用して、データはリンク上で転送される。リタイマロジックは、1145で、リタイマの(例えば、下流又は上流の)第1のポート上のアイドル状態を検出することが出来る。場合によって、アイドル状態は、推定されることが出来る。アイドル状態が、検出される間、リンクトレーニングデータは、1150で、リタイマの(例えば、上流又は下流の)第2のポート上で受信されることが出来、又は、さもなければ検出されることが出来る。第2のポート上の(1150で)リンクトレーニングデータと合わせて第1のポート上で、1145で検出されるアイドル状態に基づいて、リタイマは、第1のポートを使用してリタイマに以前まで接続された、デバイスが切断されているかを判断することが出来る。リタイマは、次に、他の複数の例の中でも、別のデバイスがリンク上の切断されたデバイスをいつ置き換えるかを識別すべく、検出状態に入ることが出来る。
図11Dの例を参照すると、複数のモードのリタイマのような、複数のモードの拡張デバイスが提供されることが出来る。1160で、拡張デバイスが含まれるリンクの状態は、判断されることが出来る。例えば、リンク状態又はデータタイプは、リンク上で受信されるデータに基づいて判断されることが出来る。1165で、拡張デバイスの複数の動作モードのうちのそれぞれ1つは、状態に基づいて、選択されることが出来る。複数のモードは、他の複数の例の中でも、拡張デバイスを介して転送されるデータのデコード/エンコード/変更を許容するモード、及び、より低いレイテンシ処理のためにデコード/エンコードを割愛する別のモードを少なくとも許容することが出来る。1170で、その状態が適用可能である間、リンクを介してデータを送信するため、選択された動作モードは適用される(例えば、他の複数の例の中でも、リンク状態遷移が識別された場合、再度複数のモードを切り替える)。
図11Eの例において、1140で、リタイマのような拡張デバイスにおいてデータが受信され、1145で、拡張デバイスのハードウェア速度検出回路は受信されたデータに対応する送信速度を検出するよう使用される。拡張デバイスは、論理的物理サブレイヤ及び電気的物理サブレイヤを有することが出来、速度検出モジュールは、電気的物理サブレイヤを使用して実装されることが出来る。1150で、検出される送信速度の結果は、電気的物理サブレイヤから論理的物理サブレイヤへ伝えられることが出来る。1155で、拡張デバイスは、検出速度に従ってデータを処理及び送信するよう自身を構成することが出来る。
上記の装置、方法、及びシステムは、前述の任意の電子デバイス又はシステムに実装されてよいことに留意されたい。複数の具体例として、以下の図面は、本明細書に説明された本発明を利用するための複数の例示的なシステムを提供する。複数の以下のシステムが、より詳細に説明されるように、多数の異なるインターコネクトが開示され、説明され、上の説明から再検討される。更に容易に明らかなように、上に説明された複数の進歩は、それらの複数のインターコネクト、複数のファブリック、又はアーキテクチャのいずれかに適用され得る。
図12を参照すると、マルチコアプロセッサを含むコンピューティングシステムについてのブロックダイアグラムの実施形態が示される。プロセッサ1200は、マイクロプロセッサ、組込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、又はコードを実行する他のデバイスのような任意のプロセッサ又は処理デバイスを有する。プロセッサ1200は、一実施形態において、少なくとも、2つのコア、コア1201及び1202を有し、これらは、非対称コア又は対称コアを含んでよい(図示された実施形態)。しかしながら、プロセッサ1200は、任意の数の対称又は非対称たり得る処理要素を含んでよい。
一実施形態において、処理要素は、ソフトウェアスレッドをサポートするためのハードウェア又はロジックを指す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテクスト、コンテクストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は、実行状態又はアーキテクチャ状態のような、プロセッサについての状態を保持可能な他の任意の要素を有する。言い換えると、一実施形態において、処理要素は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコードのような、コードに別々に関連付けられることが可能な任意のハードウェアを指す。物理プロセッサ(又はプロセッサソケット)は、典型的には集積回路を指し、複数のコア又は複数のハードウェアスレッドのような任意の数の他の処理要素を潜在的に有する。
コアは、しばしば、独立のアーキテクチャ状態を維持可能な集積回路上に配置されたロジックを指し、この場合に、独立に維持される各アーキテクチャ状態は、少なくとも幾つかの専用実行リソースと関連付けられる。複数のコアとは対照的に、ハードウェアスレッドは、典型的には独立のアーキテクチャ状態を維持することが可能な集積回路に配置された任意のロジックを指し、この場合に、独立に維持されるアーキテクチャ状態は、複数の実行リソースへのアクセスを共有する。以上のように、特定のリソースが共有され、他の複数のリソースがあるアーキテクチャ状態に専用化される場合、コアと、ハードウェアスレッドの用語体系との間のラインが重なり合う。それでもしばしば、コア及びハードウェアスレッドは、オペレーティングシステムによって独立の論理プロセッサとしてみなされ、オペレーティングシステムは、各論理プロセッサ上で独立にスケジューリング動作をすることが可能である。
物理プロセッサ1200は、図12に図示されるように、2つのコア、コア1201及び1202を含む。ここで、コア1201及び1202は、対称コア、即ち、同一の構成、機能ユニット、及び/又は、ロジックを有するコアだとみなされる。別の実施形態において、コア1201は、アウトオブオーダプロセッサコアを含む一方、コア1202は、インオーダプロセッサコアを含む。しかしながら、コア1201及び1202は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行するように適合されたコア、協調設計コア、又は他の公知のコアのような任意のタイプのコアから独立に選択されてよい。ヘテロジニアスなコア環境(即ち、非対称コア)において、バイナリ変換のような、幾つかの変換の形態は、一方又は両方のコアでコードをスケジューリング又は実行するよう利用されてよい。更なる検討はまだされていないが、コア1202におけるユニットは、図示された実施形態において同様の態様で動作するので、コア1201において図示される機能ユニットは、以下に更に詳細に説明される。
図示されるように、コア1201は、2つのハードウェアスレッド1201a及び1201bを含み、それらはまた、ハードウェアスレッドスロット1201a及び1201bとも称され得る。従って、一実施形態において、オペレーティングシステムのような、ソフトウェアエンティティは、プロセッサ1200を、4つの別個のプロセッサ、即ち、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサ又は処理要素であると潜在的にみなす。上記で示唆されるように、第1のスレッドはアーキテクチャ状態レジスタ1201aに関連付けられ、第2のスレッドは、アーキテクチャ状態レジスタ1201bに関連付けられ、第3のスレッドは、アーキテクチャ状態レジスタ1202aに関連付けられてよく、第4のスレッドは、アーキテクチャ状態レジスタ1202bに関連付けられてよい。ここで、上述のように、アーキテクチャ状態レジスタ(1201a、1201b、1202a、及び1202b)の各々は、処理要素、スレッドスロット、又はスレッドユニットとして称されてもよい。示されるように、アーキテクチャ状態レジスタ1201aは、アーキテクチャ状態レジスタ1201bにおいて複製され、個々のアーキテクチャ状態/コンテクストは、論理プロセッサ1201a及び論理プロセッサ1201bに対してストアされることが可能である。コア1201において、アロケータ内の命令ポインタ及びリネームロジック、及びリネーマブロック1230のような、他のより小さなリソースもまた、スレッド1201a及び1201bに対して複製されてよい。リオーダ/リタイヤユニット1235における再順序バッファ、ITLB1220、ロード/ストアバッファ、及びキューのような幾つかのリソースは、パーティショニングを通じて共有されてよい。複数の汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB1215、実行ユニット1240、アウトオブオーダユニット1235の複数の部分のようなその他のリソースは、潜在的に完全に共有される。
プロセッサ1200は、完全に共有、パーティショニングを通じて共有、又は処理要素により/対して専用であってよい、他のリソースをしばしば含む。図12において、プロセッサの例示の論理ユニット/リソースを有する、純粋に例示的なプロセッサの実施形態が図示される。プロセッサは、図示されていない任意の他の公知の機能ユニット、ロジック又はファームウェアを有してよいのと同様に、これらの機能ユニットのいずれかを有し又は省略してよいことに留意されたい。図示されるように、コア1201は、簡易で、代表的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる複数の実施形態において、インオーダプロセッサが利用されてもよい。OOOコアは、実行され/取り出されるべき複数の分岐を予測する分岐ターゲットバッファ1220と、命令に対するアドレス変換エントリをストアするための命令変換バッファ(I−TLB)1220と、を有する。
コア1201は、フェッチされた複数の要素をデコードすべく、フェッチユニット1220に結合されたデコードモジュール1225を更に含む。フェッチロジックは、一実施形態において、スレッドスロット1201a、1201bにそれぞれ関連付けられた独立のシーケンサを含む。通常、コア1201は、プロセッサ1200で実行可能な命令を規定/特定する第1のISAに関連付けられる。しばしば、第1のISAの一部である機械コードの命令は、命令の一部を有し(オペコードとして称される)、これは実行されるべき命令又は動作を参照/特定する。デコードロジック1225は、これらの命令をそれらのオペコードから認識し、第1のISAによって規定されるようにパイプラインで処理するためにデコードされた命令をパスする回路を有する。例えば、以下でより詳細に説明されるように、一実施形態において、デコーダ1225は、トランザクション命令のような特定の命令を認識するよう設計され、又は、適合されたロジックを含む。デコーダ1225による認識の結果として、アーキテクチャ又はコア1201は、適切な命令に関連したタスクを実行するために、特定の予め規定された複数の動作を取る。本明細書に説明される、任意のタスク、ブロック、動作、及び方法は、単一又は複数の命令に応じて実行されてよいことに留意することは重要であり、幾つかの命令は、新たな又は古い命令であってよい。一実施形態において、複数のデコーダ1226は、同一のISA(又はそれらのサブセット)を認識することを留意されたい。この代わりに、ヘテロジニアスなコア環境において、複数のデコーダ1226は、第2のISA(第1のISAのサブセットか、別個のISAのいずれか)を認識する。
一例において、アロケータ及びリネーマブロック1230は、複数の命令処理結果をストアする複数のレジスタファイルのような、複数のリソースを予約するアロケータを含む。しかしながら、スレッド1201a及び1201bは、潜在的にアウトオブオーダ実行が可能であり、そこではアロケータ及びリネーマブロック1230も、複数の命令結果を追跡する複数のリオーダバッファのような複数の他のリソースを更に予約する。ユニット1230もまた、プロセッサ1200の内部の他のレジスタに対し、プログラム/命令参照レジスタをリネームするレジスタリネーマを含んでよい。リオーダ/リタイヤユニット1235は、上述のリオーダバッファ、ロードバッファ、及びストアバッファのような複数のコンポーネントを含み、アウトオブオーダ実行と、その後、アウトオブオーダで実行された命令のインオーダリタイヤとをサポートする。
一実施形態において、スケジューラ及び実行ユニットブロック1240は、複数の実行ユニットに対して命令/動作をスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジューリングされる。複数の実行ユニットに関連する複数のレジスタファイルもまた、複数の情報命令処理結果をストアするために含まれる。例示的な複数の実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の公知な複数の実行ユニットを有する。
より低いレベルのデータキャッシュ及びデータ変換バッファ(D−TLB)1250は、実行ユニット1240に結合される。データキャッシュは、データオペランドのような要素における最近の使用/動作をストアすべきであり、それらは潜在的にメモリコヒーレンシ状態で保持される。D−TLBは、物理アドレス変換への最近の仮想/線形をストアすべきである。特定の例のように、プロセッサは、物理メモリを複数の仮想ページへとブレークするために、ページテーブル構造体を含んでよい。
ここで、コア1201及び1202は、オンチップインタフェース1210に関連した第2レベルキャッシュのような、より高レベル又は更に離れたキャッシュへのアクセスを共有する。より高レベル又は更に離れたということは、実行ユニットからより高い、又は、更に離れたキャッシュレベルを指すことを留意されたい。一実施形態において、より高レベルのキャッシュは、ラストレベルデータキャッシュ、つまり第2又は第3レベルデータキャッシュのような、プロセッサ1200のメモリ階層における最後のキャッシュである。しかしながら、より高レベルのキャッシュは、そのように限定されず、命令キャッシュと関連付けられてもよく、又は、命令キャッシュを有してもよい。トレースキャッシュ、つまり、命令キャッシュの1つのタイプが、最近のデコードされたトレースをストアすべく、デコーダ1225の後に代わりに結合されてよい。ここで、命令は、マクロ命令(即ち、デコーダによって認識される一般的な命令)を潜在的に指し、これは、多数のマイクロ命令(マイクロオペレーション)へとデコードしてよい。
図示される構成において、プロセッサ1200は、オンチップインタフェースモジュール1210をさらに含む。歴史的には、メモリコントローラは、以下でより詳細に説明されるが、プロセッサ1200の外部のコンピューティングシステムに含まれてきた。本シナリオでは、オンチップインタフェース1210は、システムメモリ1275、チップセット(しばしば、メモリ1275に接続するメモリコントローラハブ、及び、周辺機器に接続するI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、又は他の集積回路のような、プロセッサ1200の外部のデバイスと通信するものとなる。更に、本シナリオにおいて、バス1205は、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、層状プロトコルアーキテクチャ、差分バス、及びGTLバスのような、任意の公知のインターコネクトを含んでよい。
メモリ1275は、システムにおいて、プロセッサ1200の専用であってよく、又は、他の複数のデバイスと共有されてもよい。複数のタイプのメモリ1275の共通例は、DRAM、SRAM、不揮発性メモリ(NVメモリ)、及び他の公知の複数のストレージデバイスを含む。デバイス1280は、グラフィックアクセラレータ、メモリコントローラハブに結合されたプロセッサ若しくはカード、I/Oコントローラハブに結合されたデータストレージ、無線送受信器、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又は他の公知の複数のデバイスを含んでよいことを留意されたい。
しかしながら、最近、より多くのロジック及びデバイスが、SOCのような単一ダイ上に統合されるにつれ、これらのデバイスの各々は、プロセッサ1200上に組み込まれてよい。例えば、一実施形態において、メモリコントローラハブは、プロセッサ1200と共に同一のパッケージ及び/又はダイ上にある。ここで、コアの部分(オンコア部分)1210は、メモリ1275又はグラフィックスデバイス1280ような他の複数のデバイスとインタフェースするために、1又は複数のコントローラを有する。そのような複数のデバイスとインタフェースするためのインターコネクト及びコントローラを含む構成は、しばしばオンコア(又はアンコア構成)として称される。一例として、オンチップインタフェース1210は、オンチップ通信のためのリングインターコネクトと、オフチップ通信のための高速度シリアルポイントツーポイントリンク1205とを有する。しかし、SOC環境においては、ネットワークインタフェース、複数のコプロセッサ、メモリ1275、グラフィックスプロセッサ1280、及び任意の他の公知のコンピュータデバイス/インタフェースのような、更により多くのデバイスが単一ダイ又は集積回路上に統合されてよく、高機能及び低電力消費を有する小さなフォームファクタを提供してもよい。
一実施形態において、プロセッサ1200は、本明細書に説明される装置及び方法をサポートし、又はそれらとインタフェースを取るべく、アプリケーションコード1276をコンパイル、変換、及び/又は、最適化すべく、コンパイラ、最適化、及び/又は変換コード1277を実行可能である。コンパイラは、ソーステキスト/コードをターゲットテキスト/コードへと変換するためのプログラム又は複数のプログラムのセットをしばしば含む。通常、コンパイラによるプログラム/アプリケーションコードのコンパイルは、多重フェーズで行われ、高レベルプログラミング言語コードを、低レベルの機械又はアセンブリ言語コードへと変換すべくパスする。しかし、単一パスコンパイラは、簡易なコンパイルのためになおも利用されてよい。コンパイラは、任意の公知のコンパイル技術を利用してよく、字句解析、前処理、構文解析、セマンティック解析、コード生成、コード変換、及びコード最適化のような、任意の公知のコンパイラの動作を実行してよい。
より大きなコンパイラは、多重フェーズをしばしば含む。しかし、非常に頻繁に、これらのフェーズは、次の2つの一般フェーズ内に含まれる。(1)即ち、概して構文処理、セマンティック処理、及び幾つかの変換/最適化が発生し得るフロントエンド、及び(2)即ち、概して解析、変換、最適化、及びコード生成が発生する、バックエンドである。幾つかのコンパイラは、中間的なものを指し、これは、コンパイラのフロントエンドと、バックエンドとの間の描写がぼやけたものを示す。結果として、挿入、関連付け、生成、又は他のコンパイラの動作への参照は、任意の前述のフェーズ又はパスにおいて、並びに、コンパイラの任意の他の公知のフェーズ又はパスにおいて、行われてよい。例示的な事例として、コンパイルのフロントエンドフェーズにおける複数の呼び出し/複数の動作の挿入、及び、次に、変換フェーズの間に、低レベルのコードへの複数の呼び出し/複数の動作の変換のように、コンパイルの1又は複数のフェーズにおいて、複数の動作、複数の呼び出し、複数の機能等を、コンパイラは、潜在的に挿入する。動的コンパイルの間に、コンパイラコード又は動的最適化コードは、そのような複数の動作/複数の呼び出しを挿入してよく、同様に、ランタイムの間に実行のためのコードを最適化してよいことを留意されたい。特定の例示的な事例として、バイナリコード(既にコンパイルされたコード)は、ランタイムの間に動的に最適化されてよい。ここで、プログラムコードは、動的最適化コード、バイナリコード、又はそれらの組み合わせを含んでよい。
コンパイラと同様に、バイナリトランスレータのようなトランスレータは、コードを最適化及び/又は変換すべく、静的又は動的のいずれかでコードを変換する。従って、コード、アプリケーションコード、プログラムコード、又は他のソフトウェア環境の実行への参照は、(1)プログラムコードをコンパイルし、ソフトウェア構造を維持し、他の動作を実行し、コードを最適化し、又は、コードを変換するために、コンパイラプログラム、最適化コード最適化器、又はトランスレータの動的又は静的のいずれかでの実行、(2)最適化され/コンパイルされているアプリケーションコードのような、複数の動作/複数の呼び出しを有するメインプログラムコードの実行、(3)ソフトウェア構造を維持し、他のソフトウェアに関連した動作を実行し、又はコードを最適化するため、メインプログラムコードに関連したライブラリのような、他のプログラムコードの実行、又は、(4)それらの組み合わせを指してよい。
ここで図13を参照すると、マルチコアプロセッサの実施形態のブロックダイアグラムが示される。図13の実施形態に示されるように、プロセッサ1300は、複数のドメインを有する。具体的には、コアドメイン1330は、複数のコア1330Aから1330Nを含み、グラフィクスドメイン1360はメディアエンジン1365を含む1又は複数のグラフィクスエンジンを有し、及びシステムエージェントドメイン1310を備える。
様々な実施形態において、システムエージェントドメイン1310は、電力制御イベント及び電力管理を処理する。その結果、ドメイン1330及び1360の個々の複数のユニット(例えば、コア及び/又はグラフィクスエンジン)は、所与のユニット内で発生するアクティビティ(又は非アクティビティ)の観点から、適切な電力モード/レベル(例えば、アクティブ、ターボ、スリープ、休止状態、ディープスリープ、又は他のAdvanced Configuration Power Interfaceのような状態)において動的に動作するように独立的に制御可能である。ドメイン1330及び1360の各々は、異なる電圧及び/又は電力で動作してよい。更に複数のドメイン内の個々のユニットは、独立した周波数及び電圧でそれぞれ潜在的に動作する。3つのドメインを有するもののみが示されている一方で、本発明の範囲は、この点に限定されず、他の実施形態においては、追加のドメインが存在してよいことが理解されるべき点に留意されたい。
示されるように、各コア1330は、様々な実行ユニット及び追加の処理要素に加えて低レベルキャッシュを更に含む。ここで、様々なコアは、互いに、及び、ラストレベルキャッシュ(LLC)1340Aから1340Nの複数のユニット又はスライスから形成される共有キャッシュメモリに結合され、これらのLLCは、ストレージ及びキャッシュ制御機能をしばしば有し、複数のコアの間だけでなく、潜在的にはグラフィクスエンジンの間においてもまた、共有される。
見ての通り、リングインターコネクト1350は、複数のコアを一緒に連結し、複数のリングストップ1352Aから1352Nを介して、コアドメイン1330と、グラフィクスドメイン1360と、システムエージェント回路1310との間にインターコネクトを提供する。当該リンクストップの各々は、コアとLLCスライスとの間の結合部にある。図13に見られるように、インターコネクト1350は、アドレス情報、データ情報、受信確認情報、及びスヌープ/無効情報を含む、様々な情報を搬送するよう使用される。リングインターコネクトが図示されるが、任意の公知の、オンダイインターコネクト、又はファブリックが利用されてよい。例示的な事例として、上述したような幾つかのファブリック(例えば、別のオンダイインターコネクト、オンチップシステムファブリック(OSF)、アドバンストマイクロコントローラバスアーキテクチャ(AMBA)インターコネクト、多次元メッシュファブリック、又は他の公知なインターコネクトアーキテクチャ)は、同様の態様で利用されてよい。
更に図示されるように、システムエージェントドメイン1310は、関連付けられたディスプレイの制御及び当該ディスプレイへのインタフェースを提供するためのディスプレイエンジン1312を含む。システムエージェントドメイン1310は、システムメモリ(例えば、複数のDIMMと共に実装されるDRAM)へのインタフェースを提供する統合型メモリコントローラ1320、メモリコヒーレンシ動作を実行するコヒーレンシロジック1322のような、他の複数のユニットを含んでよい。プロセッサと他の回路との間のインターコネクトを可能にすべく、複数のインタフェースが存在してよい。例えば、一実施形態において、少なくとも1つのダイレクトメディアインタフェース(DMI)1316インタフェース及び1又は複数のPCIe(商標)インタフェース1314が提供される。ディスプレイエンジン及びこれらのインタフェースは、典型的には、PCIe(商標)ブリッジ1318を介してメモリに結合する。更には、追加のプロセッサ又は他の回路のような他の複数のエージェントの間の通信を提供すべく、1又は複数の他のインタフェースが提供されてよい。
ここで図14を参照すると、代表的なコアのブロックダイアグラムが、具体的には、図13のコア1330のような、コアのバックエンドの複数の論理ブロックが、示される。概して、図14に示される構造は、アウトオブオーダプロセッサを有しており、このプロセッサは、複数の入力命令をフェッチし、様々な処理(例えば、キャッシュ、デコード、分岐予測等)を実行し、複数の命令/複数の動作をアウトオブオーダ(OOO)エンジン1480へとパスすることを実行するために使用されるフロントエンドユニット1470を有する。OOOエンジン1480は、デコードされた命令に対しての更なる処理を実行する。
具体的には図14の実施形態において、アウトオブオーダエンジン1480は、デコードされた命令を受信する割り当てユニット1482を有し、これらの命令は、フロントエンドユニット1470からの、1又は複数のマイクロ命令又はuopの形態であってよく、割り当てユニットは、それらを複数のレジスタなどのような適切な複数のリソースへと割り当てる。次に、複数の命令は、予約ステーション1484へ提供され、このステーションは、複数の実行ユニット1486Aから1486Nのうちの1つで実行するために、複数のリソースを予約し、スケジューリングする。様々なタイプの実行ユニットが存在し得る。当該実行ユニットとして、例えば、とりわけ、複数の演算ロジックユニット(ALU)、複数のロード及びストアユニット、複数のベクトル処理ユニット(VPU)、浮動小数点実行ユニットを含む。これらの異なる実行ユニットからの結果は、リオーダバッファ(ROB)1488へと提供され、リオーダバッファは、複数の順序付けされていない結果を取得し、それらを正しいプログラム順序へリターンする。
図14をなおも参照すると、フロントエンドユニット1470とアウトオブオーダエンジン1480との両方が、メモリ階層の異なるレベルに結合されることに留意されたい。具体的には、命令レベルキャッシュ1472が図示され、当該キャッシュはその次には中間レベルキャッシュ1476へ結合し、中間レベルキャッシュは、その次にはラストレベルキャッシュ1495へ結合する。一実施形態において、ラストレベルキャッシュ1495は、オンチップ(場合によっては、アンコアとして称される)ユニット1490で実装される。一例として、ユニット1490は、図13のシステムエージェント1310に類似する。上述したように、アンコア1490は、例示された実施形態においては、ED RAMを介して実装されるシステムメモリ1499と通信する。アウトオブオーダエンジン1480内の様々な実行ユニット1486は、第1レベルキャッシュ1474と通信し、当キャッシュはまた、中間レベルキャッシュ1476と通信することもまた留意されたい。複数の追加のコア1430N−2から1430Nは、LLC1495に結合し得ることもまた留意されたい。図14の実施形態において、このような高いレベルで示されたが、様々な変更形態及び追加的なコンポーネントが存在してよいことを理解すべきである。
図15を参照すると、命令を実行する実行ユニットを有するプロセッサとともに形成される例示的なコンピュータシステムのブロックダイアグラムが図示されており、そこでは、インターコネクトのうちの1又は複数は、本発明の一実施形態に係る1又は複数の機能を実装する。本明細書に説明される実施形態におけるもののような、本発明に係る、データ処理のためのアルゴリズムを実行するロジックを含む実行ユニットを使用する、プロセッサ1502のようなコンポーネントを、システム1500は有する。システム1500は、PENTIUM(登録商標) III、PENTIUM(登録商標) 4、Xeon(登録商標)、Itanium、XScale(登録商標)、及び/又はStrongARM(登録商標)マイクロプロセッサに基づく代表的な処理システムであるが、(他のマイクロプロセッサ、エンジニアリングワークステーション、セットトップボックス等を含む複数のPCを有する)他のシステムもまた、使用されてよい。一実施形態において、サンプルシステム1500は、ワシントン州レドモンド市のマイクロソフト社から利用可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム(例えば、UNIX(登録商標)及びリナックス(登録商標))、組込みソフトウェア、及び/又はグラフィカルユーザインタフェースもまた、使用されてよい。このように、本発明の実施形態は、ハードウェア回路及びソフトウェアのいかなる具体的な組み合わせにも限定されない。
複数の実施形態は、コンピュータシステムに限定されない。本発明の複数の代替的な実施形態は、ハンドヘルドデバイス及びエンベデッドアプリケーションのような他の複数のデバイスにおいて使用されることが可能である。ハンドヘルドデバイスの幾つかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)及びハンドヘルドPCを含む。エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、又は少なくとも1つの実施形態に係る1又は複数の命令を実行することが可能な任意の他のシステムを含むことが可能である。
この例示された実施形態において、プロセッサ1502は、少なくとも1つの命令を実行するアルゴリズムを実装する1又は複数の実行ユニット1508を含む。1つの実施形態は、シングルプロセッサのデスクトップ又はサーバシステムのコンテクストで説明されてよいが、複数の代替的な実施形態は、マルチプロセッサシステムに含まれてよい。システム1500は、「ハブ」システムアーキテクチャの例である。コンピュータシステム1500は、複数のデータ信号を処理するプロセッサ1502を含む。1つの例示的な事例として、プロセッサ1502は、例えば、複合命令セットコンピュータ(CISC)マイクロプロセッサ、縮小命令セットコンピュータ(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、命令セットの組み合わせを実装するプロセッサ、又は、デジタル信号プロセッサのような他の任意のプロセッサデバイスを含む。プロセッサ1502は、システム1500において、プロセッサ1502と、他のコンポーネントとの間でデータ信号を送信するプロセッサバス1510に結合される。システム1500の複数の要素(例えば、グラフィックスアクセラレータ1512、メモリコントローラハブ1516、メモリ1520、I/Oコントローラハブ1524、無線送受信器1526、フラッシュBIOS1528、ネットワークコントローラ1534、オーディオコントローラ1536、シリアル拡張ポート1538、I/Oコントローラ1540等)は、当業者に周知のこれらの従来の機能を実行する。
一実施形態において、プロセッサ1502は、レベル1(L1)内部キャッシュメモリ1504を有する。アーキテクチャに応じて、プロセッサ1502は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有してよい。複数の他の実施形態は、特定の実装及び必要に応じて、内部及び外部キャッシュの両方の組み合わせを含む。レジスタファイル1506は、複数の異なるタイプのデータを、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ、ステータスレジスタ、及び命令ポインタレジスタを含む様々なレジスタにストアすべきである。
整数及び浮動小数点演算を実行するロジックを含む実行ユニット1508もまた、プロセッサ1502に存在する。一実施形態において、プロセッサ1502は、マイクロコードをストアするためのマイクロコード(ucode)ROMを有し、マイクロコードは、実行された場合、特定の複数のマクロ命令のためのアルゴリズムを実行するか、又は複雑なシナリオを処理する。ここで、マイクロコードは、プロセッサ1502のための論理バグ/修正を処理するべく、潜在的にアップデート可能である。一実施形態に対して、実行ユニット1508は、パックド命令セット1509を処理するためのロジックを含む。汎用プロセッサ1502の命令セットにパックド命令セット1509を含ませることによって、それらの命令を実行するために関連する回路と共に、多くのマルチメディアアプリケーションによって使用される複数の動作が、汎用プロセッサ1502でパックドデータを使用して実行されてよい。このように、パックドデータで動作を実行するためにプロセッサのデータバスの全幅を使用することにより、多くのマルチメディアアプリケーションは、より効率的に加速及び実行される。このことは、1又は複数の動作及び1つのデータ要素を一度に実行すべく、プロセッサのデータバスにわたって、より小さいユニットのデータを転送する必要性を潜在的に除去する。
実行ユニット1508の代替的な実施形態もまた、マイクロコントローラ、組込みプロセッサ、グラフィックスデバイス、DSP、及び他のタイプのロジック回路で使用されてよい。システム1500は、メモリ1520を含む。メモリ1520は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、又は他のメモリデバイスを含む。メモリ1520は、プロセッサ1502によって実行されるべき、複数のデータ信号によって表される複数の命令及び/又はデータをストアする。
本発明の任意の前述の機能又は態様は、図15に図示される1又は複数のインターコネクト上で利用されてよいことを留意されたい。例えば、プロセッサ1502の内部ユニットを連結するための不図示のオンダイインターコネクト(ODI)は、上に説明された1又は複数の本発明の態様を実装する。または、本発明は、プロセッサバス1510(例えば、他の公知の高性能計算インターコネクト)、メモリ1520への高帯域幅メモリパス1518、グラフィックスアクセラレータ1512へのポイントツーポイントリンク(例えば、Peripheral Component Interconnect Express(PCIe)準拠のファブリック)、コントローラハブインターコネクト1522、他の図示された複数のコンポーネントを連結するためのI/O、又は、他のインターコネクト(例えば、USB、PCI、PCIe)に関連する。そのような複数のコンポーネントの幾つかの例としては、オーディオコントローラ1536、ファームウェアハブ(フラッシュBIOS)1528、無線送受信器1526、データストレージ1524、ユーザ入力並びにキーボードインタフェース1542を備えるレガシI/Oコントローラ1510、ユニバーサルシリアルバス(USB)のようなシリアル拡張ポート1538、及びネットワークコントローラ1534を含む。データストレージデバイス1524は、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD―ROMデバイス、フラッシュメモリデバイス、又は、他の大容量ストレージデバイスを備えることが出来る。
ここで図16を参照すると、本発明の実施形態に係る第2のシステム1600のブロックダイアグラムが示される。図16に示されるように、マルチプロセッサシステム1600は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト1650を介して結合される第1のプロセッサ1670と、第2のプロセッサ1680とを備える。プロセッサ1670及び1680の各々は、何らかのバージョンのプロセッサであってよい。一実施形態において、1652及び1654は、高性能アーキテクチャのような、シリアルポイントツーポイントコヒーレントインターコネクトファブリックの一部である。結果として、本発明は、QPIアーキテクチャ内に実装されてよい。
2つのプロセッサ1670、1680のみによって示される一方、本発明の範囲は、そのように限定されないことを理解されるべきである。他の実施形態において、1又は複数の追加のプロセッサは、所与のプロセッサにおいて存在してよい。
プロセッサ1670及び1680は、統合型メモリコントローラユニット1672及び1682をそれぞれ含むように示される。プロセッサ1670は、その複数のバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース1676及び1678をさらに含み、同様に、第2のプロセッサ1680は、P−Pインタフェース1686及び1688を含む。プロセッサ1670、1680は、P−Pインタフェース回路1678、1688を使用して、ポイントツーポイント(P−P)インタフェース1650を介して情報を交換してよい。図16に示されるように、IMC1672及び1682は、複数のプロセッサをそれぞれメモリ、即ち、メモリ1632及びメモリ1634に結合し、これらのメモリは、それぞれのプロセッサにローカルに取り付けられるメインメモリの複数の部分であってよい。
ポイントツーポイントインタフェース回路1676、1694、1686、1698を使用して、プロセッサ1670、1680は、独立のP−Pインタフェース1652、1654を介してチップセット1690と各々情報を交換する。チップセット1690もまた、高性能グラフィックインターコネクト1639に沿って、インタフェース回路1692を介して高性能グラフィック回路1638と情報を交換する。
共有キャッシュ(不図示)は、いずれかのプロセッサに含まれてよく、又は両方のプロセッサの外部にあってよく、更には、プロセッサが低電力モードへと置かれた場合、いずれか又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュにストアされ得るように、P−Pインターコネクトを介してプロセッサと接続されてもよい。
チップセット1690は、インタフェース1696を介して、第1のバス1616に結合されてよい。一実施形態において、第1のバス1616は、Peripheral Component Interconnect(PCI)バス、又は、PCI Expressバス若しくは別の第3世代I/Oインターコネクトバスのようなバスであってよいが、本発明の範囲はそのように限定されない。
図16に示されるように、様々なI/Oデバイス1614は、バスブリッジ1618と共に第1のバス1616に結合され、このバスブリッジは、第1のバス1616を第2のバス1620に結合する。一実施形態において、第2のバス1620は、Low Pin Count(LPC)バスを有する。一実施形態において、例えば、キーボード及び/又はマウス1622、通信デバイス1627、及び、複数の命令/コード及びデータ1630をしばしば含むディスクドライブ若しくは他の大容量ストレージデバイスのようなストレージユニット1628を含む、様々なデバイスが、第2のバス1620に結合される。更に、オーディオI/O1624は、第2のバス1620に結合されて、示される。含まれるコンポーネント及びインターコネクトアーキテクチャが変更される、他のアーキテクチャが可能であることを留意されたい。例えば、図16のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、又は、他のそのようなアーキテクチャを実装してよい。
次に図17を参照すると、本発明に係るシステムオンチップ(SOC)設計の実施形態が図示される。特定の例示的な事例として、SOC1700は、ユーザ機器(UE)に含まれる。一実施形態において、UEは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタを有するノートブック、又は、他の任意の類似の通信デバイスのような、通信目的でエンドユーザによって使用される任意のデバイスを指す。しばしば、UEは、基地局又はノードに接続し、これらは、事実上、GSM(登録商標)ネットワークにおける移動局(MS)に、潜在的に対応する。
ここで、SOC1700は、2つのコア1706と1707とを有する。上の検討と同様に、コア1706及び1707は、インテル(登録商標)アーキテクチャコア(登録商標)ベースのプロセッサ、Advanced Micro Devices,Inc.(AMD)のプロセッサ、MIPSベースのプロセッサ、ARMベースのプロセッサ設計、又は、それらの顧客、並びに、それらの複数のライセンシー若しくは複数の利用者のもののような命令セットアーキテクチャに適合し得る。コア1706及び1707は、システム1700の他の複数の部分と通信すべくバスインタフェースユニット1709及びL2キャッシュ1711に関連する、キャッシュ制御1708に結合される。インターコネクト1710は、IOSF、AMBA、又は、上述した他のインターコネクトのようなオンチップインターコネクトを含み、本明細書で説明された1又は複数の態様を潜在的に実装する。
SIMカードとインタフェースする加入者アイデンティティモジュール(SIM)1730、SOC1700を初期化しブートすべく、コア1706及び1707によって実行するためのブートコードを保持するブートROM1735、外部メモリ(例えば、DRAM1760)とインタフェースするSDRAMコントローラ1740、不揮発性メモリ(例えば、フラッシュ1765)とインタフェースするフラッシュコントローラ1745、周辺機器とインタフェースする周辺機器制御1750(例えば、シリアル周辺機器インタフェース)、入力(例えば、タッチ可能な入力)を表示し受信するビデオコーデック1720及びビデオインタフェース1725、グラフィックに関連した計算を実行するGPU1715等のような他のコンポーネントへの通信チャネルを、インタフェース1710は、提供する。任意のこれらのインタフェースは、本明細書で説明される本発明の態様を組み込んでよい。
更に、システムは、ブルートゥース(登録商標)モジュール1770、3Gモデム1775、GPS1785、及び、WiFi1785のような、通信のための周辺機器を例示する。上述されたように、UEは、通信用無線を含むことに留意されたい。結果として、これらの周辺機器通信モジュールは、全てが必要とされるわけではない。しかしながら、あるUEの形態において、外部通信用無線は含まれるべきである。
本発明は限られた数の実施形態に関して説明されたが、当業者はそこから多数の修正形態及び変形形態を理解するであろう。添付の特許請求の範囲が、本発明の真の趣旨及び範囲に含まれるそのような全ての修正形態及び変形形態を包含することが意図される。
設計は、作成からシミュレーション、製造に至る様々な段階を経得る。設計を表すデータは、多数の態様における設計を表し得る。まず、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語、又は別の機能記述言語を使用して表され得る。また、ロジック及び/又はトランジスタゲートを有する回路レベルモデルは、設計処理の幾つかの段階において生成され得る。更に、幾つかの段階では、大部分の設計が、ハードウェアモデルにおける様々なデバイスの物理的配置を表すデータのレベルに到達する。従来の半導体製造技術が使用される場合において、ハードウェアモデルを表すデータとは、集積回路を生産するために使用されるマスクのための異なるマスク層に、様々な機能が存在するか、又は存在しないかを指定するデータであってよい。設計の任意の表現において、データは、任意の形態の機械可読媒体にストアされてよい。メモリ又は、ディスクのような磁気若しくは光ストレージは、そのような情報を送信するために変調又は、別の方法で生成された光若しくは電気の波を介して送信される情報をストアするための、機械可読媒体であってよい。コード若しくは設計を示し、又は搬送する電気の搬送波が送信される場合、その電気信号のコピー、バッファ処理、又は再送が実行される程度において、新たなコピーが作成される。このように、通信プロバイダ又はネットワークプロバイダは、搬送波にエンコードされた情報のような項目を、有形の機械可読媒体に少なくとも一時的にストアし、本発明の実施形態の技術を実施してよい。
本明細書で使用されるようにモジュールとは、ハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせを指す。一例として、モジュールは、マイクロコントローラによって実行されるように適合されたコードをストアする非一時的媒体に関連した、マイクロコントローラのようなハードウェアを含む。従って、一実施形態において、モジュールの参照は、ハードウェアを指し、このハードウェアは、非一時的媒体に保持されるべきコードを認識及び/又は実行するよう具体的に構成されている。更に、別の実施形態において、モジュールの使用は、コードを含む非一時的媒体を指し、このコードは、予め定められた処理を実行すべく、マイクロコントローラによって実行されるよう具体的に適合される。そして、更に別の実施形態において、推定されることが可能であるように、(本例における)モジュールという用語は、マイクロコントローラ及び非一時的媒体の組み合わせを指してよい。多くの場合、別個に図示されるモジュールの境界線は、一般に異なり、潜在的には重複する。例えば、第1のモジュール及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを共有してよく、その一方で、幾つかの独立したハードウェア、ソフトウェア又はファームウェアを潜在的に維持してよい。一実施形態において、ロジックという用語の使用は、トランジスタ、レジスタ、又は、プログラマブルロジックデバイス等の他のハードウェアのような、ハードウェアを含む。
一実施形態において、「よう構成され」たという用語の使用は、指定又は決定されたタスクを実行すべく、装置、ハードウェア、ロジック、又は要素を、配置し、組み立て、製造し、販売の申出をし、輸入し、及び/又は設計することを指す。この例において、動作していない装置又はそれらの要素は、それが上記の指定されたタスクを実行するよう設計され、結合され、及び/又はインターコネクトされている場合には、依然として指定されたタスクを実行する「よう構成され」ている。純粋に例示的な事例として、ロジックゲートは、動作の間、0又は1を提供し得る。しかし、クロックへイネーブル信号を提供する「よう構成され」るロジックゲートは、1又は0を提供し得る全ての潜在的なロジックゲートを含むわけではない。代わりに、ロジックゲートは、動作の間に、1又は0の出力がクロックをイネーブルにするように、なんらかの態様で結合されるものである。「よう構成され」という用語の使用は、動作を必要とせず、その代わりに、装置、ハードウェア及び/又は要素の隠れた状態に焦点を当てるものであって、ここで、その隠れた状態において、装置、ハードウェア、及び/又は要素は、装置、ハードウェア、及び/又は要素が動作しているときに、特定のタスクを実行するよう設計されていることに再度留意されたい。
更に、「すべく」、「することが可能」、及び/又は、「するよう動作可能」という用語の使用は、一実施形態において、特定されたやり方で、その装置、ロジック、ハードウェア、及び/又は要素の使用を可能とするような態様において、装置、ロジック、ハードウェア、及び/又は、要素が設計されていることを指す。上記したように、一実施形態において、すべく、することが出来る、又は、するよう動作可能の使用は、装置、ロジック、ハードウェア、及び/又は要素の隠れた状態を指し、この場合、装置、ロジック、ハードウェア、及び/又は要素は、動作しているのではなく、特定されたやり方で装置の使用を可能とするような態様で、設計されていることに留意されたい。
本明細書に使用されるように、値は、数、状態、論理状態、又はバイナリ論理状態の任意の公知の表現を含む。しばしば、ロジックレベル、ロジック値、又は論理値の使用もまた、1及び0と称され、これらは単純にバイナリロジック状態を表す。例えば、1は高ロジックレベルを指し、0は低ロジックレベルを指す。一実施形態において、トランジスタ又はフラッシュセルのようなストレージセルは、単一の論理値又は複数の論理値を保持することが可能であり得る。しかしながら、コンピュータシステムにおいて、値の他の表現も使用されている。例えば、10進数の10は、1010のバイナリ値、及び16進数の文字Aとして表されてもよい。従って、値は、コンピュータシステムにおいて保持されることが可能な情報の任意の表現を含む。
更に、複数の状態は、複数の値、又は複数の値の複数の部分によって表されてよい。一例として、論理1のような第1の値が、デフォルト又は初期状態を表してよく、その一方で、論理0のような第2の値が、非デフォルト状態を表してよい。更に、一実施形態において、リセット及びセットという用語は、デフォルト及び更新された値又は状態を、それぞれ指す。例えば、デフォルト値は、高論理値、即ち、リセットを潜在的に有し、その一方で、更新された値は、低論理値、即ち、セットを潜在的に有する。値の任意の組み合わせが、任意の数の状態を表すべく利用されてよいことに留意されたい。
上に説明された複数の方法、ハードウェア、ソフトウェア、ファームウェア又はコードの複数の実施形態は、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体であって、処理要素によって実行可能な媒体にストアされた複数の命令又はコードを介して実装され得る。非一時的な機械アクセス可能な/可読媒体は、コンピュータ又は電子システムのような、機械によって可読な形式で情報を提供する(即ち、ストア及び/又は送信する)任意のメカニズムを含む。例えば、非一時的な機械アクセス可能な媒体は、スタティックRAM(SRAM)又はダイナミックRAM(DRAM)のようなランダムアクセスメモリ(RAM)、ROM、磁気又は光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的な(伝搬された)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信した情報を保持するための他の形態のストレージデバイス等を含み、これらの媒体は、情報をそれ自身から受信し得る、非一時的媒体から区別されるべきである。
本発明の実施形態を実行するようロジックをプログラムすべく使用される複数の命令は、DRAM、キャッシュ、フラッシュメモリ、又は他のストレージのような、システムにおけるメモリ内にストアされてよい。更に、複数の命令は、ネットワークを介して、又は、他のコンピュータ可読媒体を用いて配信され得る。このように、機械可読媒体は、機械(例えば、コンピュータ)によって、可読な形式で情報をストア又は送信するための任意のメカニズムを含んでよい。そのようなものとして、限定はされないが、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク、リードオンリメモリ(CD−ROM)、及び光磁気ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気若しくは光カード、フラッシュメモリ、又は、電気、光、音響、若しくは、他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を介したインターネット経由での情報の送信に使用される有形の機械可読ストレージが挙げられる。従って、コンピュータ可読媒体は、機械(例えば、コンピュータ)によって可読な形式で、複数の電子命令又は情報をストア又は送信するために好適な任意のタイプの有形の機械可読媒体を含む。
以下の例は、本明細書に係る複数の実施形態に関する。1又は複数の実施形態は、テストパターン及びエラー報告シーケンスを有するテストモード信号を生成し、1又は複数の拡張デバイス及び2以上のサブリンクを有するリンク上のテストモード信号を送信する、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック及び/又はソフトウェアベースのロジック、並びに、方法を提供し得る。ここで、テストモード信号は、サブリンクのうちの特定の1つの上で送信されるべきであり、テストパターンは、特定のサブリンク上のエラーを識別する受信デバイスによって使用されるべきであり、複数のサブリンクにおけるサブリンクのエラーステータスを説明すべく、エラー報告シーケンスは、エラー情報と共にエンコードされるべきである。
少なくとも一例において、テストモード信号は、ループバックテストモード内で、送信される。テストモード信号の複数のインスタンスは、リンク上の第1のデバイスから、1又は複数の拡張デバイスを介して第2のデバイスへ送信されるべきであり、第2のデバイスから、1又は複数の拡張デバイスの少なくとも1つを介して、第1のデバイスへ戻るように、更に、送信されるべきである。
少なくとも一例において、テストモード信号の複数のインスタンスの少なくとも1つが、リンクのサブリンクの別の1つの上の別のデバイスから受信される。ここで、テストモード信号の各インスタンスは、テストパターンのインスタンス及びエラー報告シーケンスのインスタンスを含む。
少なくとも一例において、エラー検出ロジックは、テストパターンのインスタンスに基づいて、他のサブリンク上の1又は複数のエラーを判断すべく提供される。
少なくとも一例において、複数のエラーは、サブリンクを介して受信テストモード信号に含まれるものとしてのテストパターンのインスタンスは、テストパターンの予測値から外れるとの識別に基づいてサブリンクに対して判断される。
少なくとも一例において、拡張デバイスは、リタイマを有する。
少なくとも一例において、装置は、リタイマを備える。
少なくとも一例において、エラー報告シーケンスは、複数のセグメントを有し、各セグメントは、サブリンクのそれぞれ1つのエラーステータスを説明する。
少なくとも一例において、各セグメントは、それぞれのサブリンクの下流チャネル及び上流チャネルのうちの1つを記述する。
少なくとも一例において、各セグメントは、1又は複数のオーダードセットを備え、複数のオーダードセットの各々の少なくとも一部は、複数のサブリンクの少なくとも1つのエラーステータスを識別するためにエンコードされるべく提供される。
少なくとも一例において、各オーダードセットは、それぞれのSKPオーダードセットを有する。
少なくとも一例において、1又は複数の拡張デバイスは、少なくとも2つの拡張デバイスを有し、2又はより多くのサブリンクは、3つのサブリンクを有し、複数のセグメントは、少なくとも5つのセグメントを有する。
少なくとも一例において、先行するサブリンクに対して検出されたエラー情報は、エラー報告シーケンスにおいてエンコードされ、エラー情報は、2又はより多くのサブリンクにおいて、他の複数のサブリンクの既に検出されたエラーステータスのために、エラー報告シーケンスにおいて維持される。
少なくとも一例において、エラー情報は、サブリンクについて検出されたエラーの数、出現したリンクのレーン、及び、受信されたテストパターンにおいて検出された複数のエラーの位置のうちの1又は複数を有する。
少なくとも一例において、テストパターンは、テストの間に各サブリンクで再生成されるべき、予め規定されたパターンを有する。
少なくとも一例において、テストパターンは、1又は複数のオーダードセットを有する。
少なくとも一例において、1又は複数のオーダードセットは、electrical idle exit ordered set(EIEOS)を含む。
少なくとも一例において、コントロールロジックは、リンクがテストモードにあること、及び、テストモード信号がテストモードに従って送信されたことを識別する。
少なくとも一例において、テストパターンは、テストモードのために規定された固定されたテストパターンである。
1又は複数の実施形態は、テストモードにおいて、リンク上のテストモード信号を受信する、装置、システム機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック、及び/又はソフトウェアベースのロジック、並びに、方法を提供し得る。ここで、リンクは、少なくとも1つの拡張デバイス、及び2又はより多くのサブリンクを有し、テストモード信号は、テストパターン及びエラー報告シーケンスを有し、テストモード信号は、複数のサブリンクのうちの特定の1つの上で送信され、エラー報告シーケンスは、複数のサブリンクにおいて複数のサブリンクのエラーステータスを説明すべく、エラー情報によってエンコードされるべきであり、特定のサブリンクのエラーステータスを識別すべく、テストモード信号において、テストパターンを評価する。
少なくとも一例において、テストパターンは、テストパターンが予測されるテストパターンから外れるか否かを判断するよう評価される。
少なくとも一例において、テストパターンは、テストモードについて規定され、テストモードは、リンクの各サブリンクのテストを含み、テストパターンのそれぞれのインスタンスは、それぞれのサブリンクの端部において受信されたテストパターンのそれぞれのインスタンスが、規定されたテストパターンから外れているか否かを判断すべく、複数のサブリンクのテストの各々において、生成及び送信される。
少なくとも一例において、各サブリンクは、それぞれ上流チャネル及び下流チャネルを有し、テストパターンのインスタンスは、複数のサブリンクの各々の上流及び下流チャネルの各々に送信されるべきである。
少なくとも一例において、エラーステータスは、テストパターンに基づいて、特定サブリンク上で検出される1又は複数のエラーを識別する。
少なくとも一例において、エラーステータスは特定のサブリンク上で検出される多数のエラーを識別する。
少なくとも一例において、エラーステータスは、1又は複数のエラーが現れるリンクのレーンを識別する。
少なくとも一例において、エラーステータスは、1又は複数のエラーが検出されるテストパターン内の位置を識別する。
少なくとも一例において、コントロールロジックは、テストモード信号の別のインスタンスを生成すべきであり、テストモード信号の他のインスタンスは、特定のサブリンクのエラーステータスを識別すべく、エンコードされたエラー報告シーケンスを含み、装置は、サブリンクの別の1つ上でテストモード信号を他のインスタンスに送信する送信機ロジックを更に備える。
少なくとも一例において、テストモード信号の他のインスタンスにおけるエラー報告シーケンスは、リンクの他のサブリンクの既に判断されたエラーステータスのために、エラーステータス情報を保持する。
少なくとも一例において、エラー報告シーケンスは、複数のセグメントを有し、各セグメントは、複数のサブリンクのそれぞれ1つのエラーステータスを説明する。
少なくとも一例において、コントロールロジックは、特定のサブリンクのエラーステータスを内部にエンコードする複数のセグメントのうちの特定の1つを識別する。
少なくとも一例において、特定のセグメントは、特定のサブリンクに予め割り当てられたものとして識別される。
少なくとも一例において、特定のセグメントは、複数のセグメントのうちの次のエンコードされていないものとして、識別される。
少なくとも一例において、テストモード信号の他のインスタンスは、テストパターンのインスタンスを含む。
少なくとも一例において、受信されるテストモード信号において含まれるテストパターンは、1又は複数のエラーを含み、テストモード信号の他のインスタンスにおいて含まれるテストパターンのインスタンスは、1又は複数のエラーなしで送信される。
少なくとも一例において、拡張デバイスの複数の動作モードの第1のものは、テスト信号を処理するよう使用されるべきであり、複数の動作モードは、別の低レイテンシモードを含み、第1のモードは、テスト信号のデコードをすることを可能とすべきである。
少なくとも一例において、拡張デバイスは、リタイマを備える。
少なくとも一例において、エラー報告シーケンスは、リンクの2又はより多くのサブリンクの各々のエラーステータスを記述し、装置は、エラー報告シーケンスを解釈し、少なくとも1つのデータ構造において、リンクに対してエラー結果を記録するロジックを更に備える。
少なくとも一例において、データ構造は、リンクに対応する1又は複数のレジスタを有する。
少なくとも一例において、拡張デバイスは、少なくとも2つのリタイマを有する。
少なくとも一例において、ルートポートデバイスは、リンクに接続される。
1又は複数の実施形態は、拡張デバイスの第1のポート上のエンドポイントデバイスからリンクトレーニングデータを受信し、拡張デバイスの第2のポート上のアイドルリンク状態を識別する、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック及び/又はソフトウェアベースのロジック、並びに方法を提供し得る。ここで、拡張デバイスは、リンク上に含まれ、アイドルリンク状態及びリンクトレーニングデータに基づいて、別のデバイスが切断されているかを判断する。ここで、他の複数のデバイスは、リンクに以前に接続された。
少なくとも一例において、リンクは、エンドポイントデバイスを他の複数のデバイスに接続し、拡張デバイスは、リンク上のエンドポイントと、他の複数のデバイスとの間に配置される。
少なくとも一例において、第1ポートは、リンクの第1のサブリンクを介して、エンドポイントデバイスに接続され、第2のポートは、リンクの第2のサブリンクに接続され、他の複数のデバイスは、第2のサブリンクによって、第2のポートに以前に接続されていた。
少なくとも一例において、拡張デバイスはリタイマを有する。
少なくとも一例において、リタイマは、リンク状の切断を判断するためのサイドバンドロジックを欠く。
少なくとも一例において、他の複数のデバイスの切断は、不意の切断を含む。
少なくとも一例において、切断は、リンク上のデバイスのホットプラグ接続に対応する。
少なくとも一例において、検出モードは、別のデバイスが切断されているという判断に基づいて、入られる。
少なくとも一例において、第2のポートの複数のコネクタは、検出モードにおける第2のサブリンク上の(例えば、第3のデバイスへの)新たな接続に対してスキャンし、それを確立すべく、取り除かれるべきである。
少なくとも一例において、リンクトレーニングデータは、1又は複数のトレーニングシーケンスを有する。
少なくとも一例において、リンクトレーニングデータは、リンクを回復する試行に対応する。
少なくとも一例において、アイドルリンク状態は、第2のポート上で検出されるアクティビティのレベルに基づいて推定される。
少なくとも一例において、リンクトレーニングデータが受信され、その一方で、アイドルリンク状態が検出される。
少なくとも一例において、第1ポートは、上流ポートを有し、第2ポートは下流ポートを有する。
少なくとも一例において、リンクは接続ケーブルを有する。
1又は複数の実施形態は、少なくとも2つの動作モードをサポートし、リンク上の複数の状態に基づいて、選択的に複数のモードを使用するために、リタイマを提供すべく、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック、及び/又は、ソフトウェアベースのロジック、並びに、方法を提供し得る。ここで複数の動作モードは、少なくとも低レイテンシモード及び特定のモードを有するべきであり、低レイテンシモードにおいて、データは受信されたように転送され、特定のモードにおいて、データはデコードされ、再エンコードされる。
少なくとも一例において、低レイテンシモードにおいてリタイマによって受信されたデータは、受信されたようにデコードされず、転送されない。
少なくとも一例において、特定のモードは、リンク上でリタイマによって受信されるデータの変更を許容する。
少なくとも一例において、複数の状態は、リンク上で送信されるデータのタイプ及びリンクのリンク状態の少なくとも1つを有する。
少なくとも一例において、リタイマは、複数の状態のうちの特定の1つを検出し、検出された特定の状態に基づいて、複数の動作モードのうちの1つを使用すべきである。
少なくとも一例において、低レイテンシモードは、リンクがアクティブリンク状態にあるべきであると検出される場合に採用されるべきである。
少なくとも一例において、アクティブリンク状態は、L0状態を有する。
少なくとも一例において、特定のモードは、トレーニングシーケンス及びオーダードセットデータに対して使用されるべきである。
少なくとも一例において、特定のモードは、リンク状態をトレーニングするリンクにおいて使用されるべきである。
少なくとも一例において、特定のモードは、テストモードにおいて使用されるべきである。
少なくとも一例において、テストモードは、リンクの複数のサブリンクの各々のエラーステータスを判断するよう使用される。
少なくとも一例において、リンクは、PCIeベースのプロトコルを使用する。
1又は複数の実施形態は、物理層ロジックを含む拡張デバイスを提供すべく、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック、及び/又は、ソフトウェアベースのロジック、並びに、方法を提供し得る。ここで物理ロジックは、論理的物理サブレイヤ及び電気的物理サブレイヤを有し、拡張デバイスは、リンク上に含まれ、電気的物理サブレイヤは、リンク上のデータの送信速度を検出すべく、速度検出モジュールを含み、電気的物理サブレイヤは、リンクの検出された送信速度を論理的物理サブレイヤに伝えるべきである。
少なくとも一例において、拡張デバイスはリタイマデバイスを備える。
少なくとも一例において、送信速度は、リンクに対して予め規定された速度のセットのうちの1つであるように検出されるべきである。
少なくとも一例において、速度のセットは、2.5GT/sの速度、5GT/sの速度、及び、8GT/sの速度を有する。
少なくとも一例において、速度検出モジュールは、アナログの速度検出モジュールを備える。
少なくとも一例において、速度検出モジュールは、少なくとも部分的にハードウェアにおいて実装される。
少なくとも一例において、リンクは、PCIe準拠のリンクを備える。
1又は複数の実施形態は、第1のエンドポイントを第2のエンドポイントに接続するリンク上の拡張デバイスにおいてデータを受信し、拡張デバイスのハードウェアにおいて実装される速度検出回路を使用して、データの送信速度を検出し、検出された送信速度を拡張デバイスの物理層ロジックに伝え、第1のデバイスから第2のデバイスへのリンクを介してその送信速度において、データを伝えるよう拡張デバイスを使用する、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアベースのロジック、及び/又は、ソフトウェアベースのロジック、並びに、方法を提供し得る。ここで、上記拡張デバイスは、リンク上の第1のエンドポイントと、第2のエンドポイントとの間に配置される。
少なくとも一例において、検出される送信速度は、拡張デバイスの電気的物理サブレイヤと、論理的物理サブレイヤとの間の物理層インタフェースを使用して、物理層ロジックに伝えられる。
少なくとも一例において、物理層インタフェースは、PHY Interface for PCI Express(PIPE)インタフェースを備える。
少なくとも一例において、送信速度の検出は、送信速度が、リンクに対してサポートされる予め規定された速度のセットのうちの1つであることを検出することを備える。
少なくとも一例において、アイドル状態は、リンク上で識別され、送信速度は、アイドル状態に従って検出されるべきである。
少なくとも一例において、データは、リンクトレーニングデータを有し、送信速度は、リンクトレーニングデータから検出されるべきである。
本明細書全体を通じて参照した「一実施形態」又は「実施形態」は、その実施形態に関連して説明された特定の機能、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。このように、本明細書全体を通じて様々な箇所において「一実施形態において」又は「実施形態において」という用語が現れても、必ずしも全てが同一の実施形態を指しているわけではない。更に、複数の特定の機能、複数の構造、又は複数の特性は、1又は複数の実施形態において、任意の適切なやり方で、組み合わされてよい。
上記の明細書において、詳細な説明は、複数の特定の例示的な実施形態に関して提供されている。しかしながら、添付の特許請求の範囲で説明される本発明のより広い趣旨及び範囲を逸脱することなく、それらに様々な変更及び変化がなされ得ることは明らかであろう。従って、本明細書及び複数の図面は、限定的な意味ではなく、例示的な意味のものとみなされるべきである。更に、実施形態及び他の例示的な言語の上記の使用は、同一の実施形態又は同一の例を必ずしも指すわけでなく、異なる別個の実施形態、並びに、潜在的に同一の実施形態を指すことがある。