【文献】
内藤 竜治,徹底解説 作ればわかるPCI Express,Interface,日本,CQ出版株式会社,2009年 6月 1日,第35巻 第6号,p.157−167
(58)【調査した分野】(Int.Cl.,DB名)
前記スーパーシーケンスは、EOS(electrical ordered set)を有する反復シーケンスを備え、その後には複数のトレーニングシーケンスが続く、請求項2に記載の装置。
前記スーパーシーケンスは複数のスーパーシーケンス型のうちの特定の1つであり、各スーパーシーケンス型はシリアルデータリンクの1または複数の状態にそれぞれ対応する、請求項3に記載の装置。
【発明を実施するための形態】
【0022】
本発明の深い理解を提供するために、以下では、プロセッサおよびシステム構成の具体的なタイプの例、具体的なハードウェア構造、具体的なアーキテクチャのおよびマイクロアーキテクチャの詳細、具体的なレジスタ構成、具体的な命令タイプ、具体的なシステムコンポーネント、具体的なプロセッサパイプラインステージ、具体的な相互接続レイヤ、具体的なパケット/トランザクション構成、具体的なトランザクション名、具体的な交換プロトコル、具体的なリンク幅、具体的な実装、および動作等の、多数の具体的な詳細が説明される。しかしながら、本開示の主題を実施するために、これら具体的詳細が必ずしも採用される必要は無いことが、当業者には明らかであろう。他の例では、具体的かつ代わりのプロセッサアーキテクチャ、記述されたアルゴリズムのための具体的な論理回路/コード、具体的なファームウェアコード、具体的な低レベル相互接続オペレーション、具体的な論理構成、具体的な製造技術および材料、具体的なコンパイラ実装、具体的なアルゴリズムのコード表現、具体的なパワーダウンおよびゲーティング技術/論理、コンピュータシステムにおけるその他の具体的な操作上の詳細のような周知のコンポーネントや方法についての詳細な説明は、不必要に本開示を不明瞭にすることを避けるべく、回避されている。
【0023】
以下の複数の実施形態は、コンピューティングプラットフォームやマイクロプロセッサのような具体的な集積回路におけるエネルギー保存、エネルギー効率、処理効率性などに関連して説明がなされるかもしれないが、他の複数の実施形態が、他の複数のタイプの集積回路および論理デバイスに適用し得る。ここで記載される複数の実施形態についての複数の技術および複数の教示と類似するものが、それらの特徴から同様に利益を得る可能性のある他のタイプの回路や半導体デバイスへ、適用されてよい。例えば、開示された複数の実施形態は、サーバコンピュータシステム、デスクトップコンピュータシステム、ラップトップ、ウルトラブック(商標)には限定されず、またハンドヘルドデバイス、スマートフォン、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、および埋め込みアプリケーションのようなその他の複数のデバイスで用いられてもよい。ハンドヘルドデバイスの幾つかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)およびハンドヘルドPCを含む。ここで、低電力相互接続において性能を高めるために(さらには省電力化のため)、高性能相互接続のための類似の技術が適用されてよい。埋め込みアプリケーションとしては、典型的には、マイクロコントローラ、デジタルシグナルプロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、または、以下で教示される機能およびオペレーションを実行可能な他の任意のシステム、を含む。さらに、ここで記載される複数の装置、複数の方法および複数のシステムは、物理コンピューティングデバイスには限定されずに、また、エネルギー保存および効率性のためのソフトウェア最適化に関連してよい。以下の説明から容易に明らかになるであろうが、ここで記載される複数の方法、複数の装置および複数のシステム(ハードウェア、ファームウェア、ソフトウェアに関するものであろうとこれらの組み合わせに関するものであろうと)における複数の実施形態は、性能への配慮と将来のバランスが取れた「グリーンテクノロジー」に不可欠であると見なされてよい。
【0024】
コンピューティングシステムが発展するにつれて、その中のコンポーネントは、より複雑になっている。複数のコンポーネントと連結し、かつそれらの間で通信を行う相互接続アーキテクチャでは、また、帯域幅要求が最適なコンポーネントオペレーションに合致することを保証するために、複雑性が増加している。さらには、異なる市場セグメントが、それぞれの市場に合致した相互接続アーキテクチャの異なる態様を要求する。例えば、サーバはより高い性能を必要するが、モバイルのエコシステムは、場合によっては、省電力化のために全体的な性能を犠牲にすることがありうる。その上、多くのファブリックの唯一の目的は、最大の省電力化を行いながら、最高の可能な性能を提供することである。さらには、様々な異なる相互接続が、ここで記載される主題から潜在的に利益を得ることができる。
【0025】
とりわけ、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)相互接続ファブリックアーキテクチャおよびクイックパスインターコネクト(QPI)ファブリックアーキテクチャは、特に、ここで記載される1または複数の原理によって潜在的に改善されうる。
例えば、PCIeの基本的な目的は、異なる複数ベンダからの複数のコンポーネントおよび複数のデバイスにオープンアーキテクチャで相互運用を可能とすることであり、それは多数の市場セグメント、複数のクライアント(デスクトップおよびモバイル)、複数のサーバ(規格および企業向け)および複数の埋め込み通信デバイスに及ぶ。PCI Expressは、多種多様な次世代のコンピューティングおよび通信プラットフォームのために規定された高性能汎用I/O相互接続である。利用モデル、読み込み/書込みアーキテクチャ、ソフトウェアインタフェースのようないくつかのPCI属性が複数の改訂版を通して維持されてきたが、これに対し、以前のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられてきた。PCI Expressの最近のバージョンでは、2地点間相互接続、スイッチベースのテクノロジー、および、性能と特徴の新たな複数レベルでの配信のためパケット化されたプロトコル、のそれぞれでの進歩を活用している。電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、およびエラー処理は、PCI Expressによってサポートされる進歩的な複数の特徴のうちのいくつかである。ここでの主要な議論は新たな高性能相互接続(HPI)アーキテクチャに関連するが、ここで記載される本発明の複数の態様は、PCIe準拠アーキテクチャ、QPI準拠アーキテクチャ、MIPI準拠アーキテクチャ、高性能アーキテクチャ、またはその他の知られた相互接続アーキテクチャのような、他の相互接続アーキテクチャへ適用されてもよい。
【0026】
図1を参照すると、一連の複数のコンポーネントを相互接続する2地点間リンクを備えたファブリックの実施形態が図示される。システム100は、プロセッサ105、および、コントローラハブ115に結合されたシステムメモリ110を有する。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、組込みプロセッサ、コプロセッサ、その他のプロセッサのような任意の処理要素を含むことができる。プロセッサ105は、フロントサイドバス(FSB)106を介してコントローラハブ115へ結合される。一実施形態では、後述のFSB106は、シリアル2地点間相互接続である。別の実施形態では、リンク106は、シリアルの差動相互接続アーキテクチャを有し、これは異なる相互接続規格に準拠する。
【0027】
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、またはシステム100における複数のデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを有する。システムメモリ110は、メモリインタフェース116を通してコントローラハブ115へ結合される。メモリインタフェースの例として、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース、およびダイナミックRAM(DRAM)メモリインタフェースを含む。
【0028】
一実施形態では、コントローラハブ115は、PCIe相互接続階層においてそうであるように、ロートハブ、ルートコンプレックス、またはルートコントローラを有しうる。コントローラハブ115の例としては、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、相互接続コントローラハブ(ICH)、サウスブリッジ、およびルートコントローラ/ハブを有する。しばしば、チップセットという用語は、2つの物理的に別個なコントローラハブ、例えば、相互接続コントローラハブ(ICH)に結合されたメモリコントローラハブ(MCH)、を指す。現在のシステムは、しばしば、プロセッサ105と一体化されたMCHを含むが、その一方で、コントローラ115は、後述されるのと類似のやり方で、複数のI/Oデバイスと通信することに留意されたい。いくつかの実施形態では、ピアツーピアのルーティングが、ルートコンプレックス115を介して任意選択的にサポートされる。
【0029】
ここでコントローラハブ115は、シリアルリンク119を通してスイッチ/ブリッジ120に結合される。入出力モジュール117および121は、またインタフェース/ポート117/121とも称されてよく、層状プロトコルスタックを含む/実装することが可能であり、コントローラハブ115とスイッチ120との間で通信を提供する。一実施形態では、複数のデバイスがスイッチ120に結合されることが可能である。
【0030】
スイッチ/ブリッジ120は、デバイス125からの複数のパケット/複数のメッセージを、上流へ、即ちルートコンプレックスへ向かう階層の上方、コントローラハブ115へと送り、かつ下流へ、即ちルートコントローラから離れる階層の下方、プロセッサ105またはシステムメモリ110からデバイス125へと送る。スイッチ120は、一実施形態では、複数の仮想的なPCI−PCI間のブリッジデバイスの論理的アセンブリとも称される。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、持ち運び可能なストレージデバイス、ファイヤーワイヤーデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、その他の入出力デバイスのような、電子システムに結合されるべき任意の、内部若しくは外部デバイスまたはコンポーネントを有してよい。しばしば、PCIe専門用語では、そのようなデバイスは、エンドポイントとも称される。具体的には示されていないが、デバイス125は、ブリッジ(PCIeとPCI、PCIとXブリッジ)を含んでよく、レガシーのまたは他の複数のバージョンのデバイス、または、それらのデバイスによってサポートされる相互接続ファブリックをサポートする
【0031】
グラフィックスアクセラレータ130は、また、シリアルリンク132を通してコントローラハブ115に結合されうる。一実施形態では、グラフィックスアクセラレータ130はMCHに結合され、MCHはICHに結合される。スイッチ120は、および、その結果としてI/Oデバイス125は、ICHに結合される。I/Oモジュール131および118は、また層状プロトコルスタックを実装するためものであり、グラフィックスアクセラレータ130とコントローラハブ115との間で通信する。上記のMCHの議論と類似して、グラフィクスコントローラまたはグラフィックスアクセラレータ130それ自体が、プロセッサ105で一体化されてよい。
【0032】
図2に移ると、層状プロトコルスタックの実施形態が図示される。層状プロトコルスタック200は、QPIスタック、PCIeスタック、次世代高性能コンピューティング相互接続(HPI)スタック、その他の層状スタックのような、任意の形態の層状の通信スタックを含むことができる。一実施形態では、プロトコルスタック200は、トランザクション層205、リンク層210、および物理層220を含むことができる。
図1におけるインタフェース117、118、121、122、126および131のようなインタフェースが、通信プロトコルスタック200として表されてよい。通信プロトコルスタックとしての表現は、また、プロトコルスタックを実装している/有しているモジュール又はインタフェースとも称されてよい。
【0033】
複数のコンポーネント間で情報を通信するべく複数のパケットが用いられうる。パケットは、トランザクション層205およびデータリンク層210で形成されることが可能であり、情報を送信コンポーネントから受信コンポーネントへと搬送する。送信される複数のパケットが他の複数層を通って流れるにつれて、それらは複数層でパケットを処理するために用いられる付加情報で拡張される。受信側ではリバース処理が発生し、複数のパケットは、それら物理層220表現からデータリンク層210表現へ、そして最終的には(トランザクション層パケットのために)受信デバイスのトランザクション層205によって処理することができる形態へと変換される。
【0034】
一実施形態ではトランザクション層205は、データリンク層210および物理層220のような、デバイスの処理コアと相互接続アーキテクチャとの間のインタフェースを提供することができる。これに関連して、トランザクション層205の主要な責務として、複数パケット(即ち、トランザクション層パケットまたはTLP)を組み立て、分解することを含みうる。変換層205は、また、TLPのためのクレジットベースのフロー制御を管理することが可能でる。いくつかの実装では、分割された複数のトランザクションを使用することができる。即ち、特に、時間分割された要求と応答とを有する複数のトランザクションが、ターゲットデバイスが応答のためのデータを集めている間に、リンクが他のトラヒックを搬送することを許容する。
【0035】
クレジットベースのフロー制御は、相互接続ファブリックを利用する仮想の複数のチャネルおよび複数のネットワークを理解するために用いられうる。一例において、デバイスは、トランザクション層205における複数の受信バッファのそれぞれに対してクレジットの初期量を通知することができる。
図1のコントローラハブ115のような、リンクの反対側の終点における外部デバイスは、各TLPにより消費されるクレジット数をカウントすることができる。トランザクションは、そのトランザクションがクレジット限度を超過しない場合に、送信されてよい。応答を受信すると、クレジット量が元に戻される。他の潜在的利点の中で、そのようなクレジットスキームの利点の1つの例は、もしクレジット限度に遭遇しなければ、クレジットリターンのレイテンシが性能に影響しないということである。
【0036】
一実施形態では、4つのトランザクションアドレス空間は、設定アドレス空間、メモリアドレス空間、入出力アドレス空間およびメッセージアドレス空間を含むことができる。メモリマッピングされた位置へ/からデータを転送するために、メモリ空間トランザクションは、複数の読み取り要求および複数の書き込み要求のうちの1または複数を有する。一実施形態では、メモリ空間トランザクションは、2つの異なるアドレス形式を用いることが可能であり、例えば32ビットアドレスのようなショートアドレス形式、および、6ビットアドレスのようなロングアドレス形式である。配置空間トランザクションは、相互接続に接続される様々なデバイスの配置空間にアクセスするために用いることができる。コンフィギュレーション空間へのトランザクションは、複数の読み取り要求および複数の書き込み要求を含むことができる。メッセージ空間トランザクション(あるいは単純にメッセージ)は、また、複数の相互接続エージェントの間の帯域内通信をサポートするために規定されうる。故に、例示的な一実施形態において、トランザクション層205は、パケットヘッダ/ペイロード206を組み立てることができる。
【0037】
手早く
図3を参照すると、トランザクション層パケット記述子の例示的な実施形態が図示される。一実施形態では、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムでありうる。これに関連して、トランザクション記述子300は、システムにおいて複数のトランザクションの識別をサポートする。他の潜在的な使用としては、デフォルトトランザクションの順序変更や複数チャネルとトランザクションとの関連を追跡することを含む。例えば、トランザクション記述子300は、グローバル識別子フィールド302、属性フィールド304およびチャネル識別子フィールド306を含みうる。図示される例では、グローバル識別子フィールド302は、ローカルトランザクション識別子フィールド308とソース識別子フィールド310を備えるように示される。一実施形態では、グローバルトランザクション識別子302は、全ての未処理の要求に対して固有である。
【0038】
1つの実装によると、ローカルトランザクション識別子フィールド308は、要求中エージェントにより生成されるフィールドであり、その要求中エージェントに対して完了を必要とする全ての未処理の要求は、固有でありうる。さらに、この例において、ソース識別子310は、相互接続階層内で、要求元エージェントを一意に特定する。従って、ソースID310と共に、ローカルトランザクション識別子フィールド308は、階層ドメイン内のトランザクションのグローバルな識別を提供する。
【0039】
属性フィールド304は、そのトランザクションについての複数の特性および複数の関係を特定する。これに関連して、属性フィールド304は、トランザクションのデフォルト処理の変更を許容する付加情報を提供するために潜在的に用いられる。一実施形態では、属性フィールド304は、優先度フィールド312、予約フィールド314、順序フィールド316、およびスヌープ無しフィールド318を有する。ここで、優先度サブフィールド312は、そのトランザクションへ優先度を割り当てるために、開始プログラムによって変更されてよい。予約属性フィールド314は、将来のためまたはベンダ規定の利用のために、予約(リザーブ)されたままとされる。優先度またはセキュリティ属性を用いる可能な利用モデルは、予約属性フィールドを用いて実装されてよい。
【0040】
この例において、順序タイプを伝える任意選択的な情報を提供するために順序属性フィールド316が用いられ、この順序タイプはデフォルトの順序規則を変更してよい。1つの例示的な実装によると、順序属性「0」は、デフォルトの順序規則が適用されることを示し、ここで、順序属性「1」は緩和された順序を示し、書込みでは同じ方向への書込みをパスでき、読み取り完了では、同じ方向に書込みをパスできる。スヌープ属性フィールド318は、複数のトランザクションがスヌープされるかどうかを決定するために使用される。示されるように、チャネルIDフィールド306は、トランザクションと関連するチャネルを特定する。
【0041】
図2の議論に戻ると、リンク層210はデータリンク層210とも称され、トランザクション層205および物理層220の間の中間ステージとして動作することができる。一実施形態では、データリンク層210の責務は、リンク上の2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性のあるメカニズムを提供することである。データリンク層210の片側は、トランザクション層205によって組み立てられた複数のTLPを受諾し、パケットシーケンス識別子211即ち、識別番号またはパケット番号を適用し、エラー検出コード、即ちCRC212を算出し適用し、変更された複数のTLPを、物理層をこえて外部デバイスへ送信するために物理層220へと提示する。
【0042】
一例において、物理層220は、パケットを外部デバイスへ物理的に送信するために、論理サブブロック221および電気サブブロック222を有する。ここで論理サブブロック221は、物理層221での「デジタル的」な複数の機能を担う。これに関連して、論理サブブロックは、物理サブブロック222による送信のための送出情報を準備するための送信セクションと、リンク層210へとパスする前に受信情報を特定し準備する受信機セクションとを有することができる。
【0043】
物理ブロック222は、送信機および受信機を含む。送信機には論理サブブロック221により複数のシンボルが供給され、送信機はそれらをシリアル変換し、外部デバイスへと送信する。受信機には外部デバイスから、シリアル変換された複数のシンボルが供給され、受信機は複数の受信信号をビットストリームへ変換する。ビットストリームは、非シリアル化されて、論理サブブロック221へ供給される。例示的な一実施形態では、8b/10b送信コードが採用され、ここでは10ビットシンボルが送信/受信される。ここで、複数のフレーム223を有するパケットをフレーム化するために複数の特別なシンボルが用いられる。加えて一例において、受信機は、また、到着するシリアルストリームから回復されるシンボルクロックを提供する。
【0044】
上述したように、トランザクション層205、リンク層210および物理層220が、(PCIeプロトコルスタックのような)プロトコルスタックの具体的な実施形態と関連して議論されているが、層状プロトコルスタックは、それらには限定されない。実際には、任意の層状プロトコルが含まれ/実装されてよく、ここで議論された複数の特徴を採用してよい。一例として、層状プロトコルとして表されるポート/インタフェースは、(1)複数のパケットを組み立てるための第1の層、即ちトランザクション層;複数のパケットを配列するための第2の層、即ち、リンク層;および、複数のパケットを送信する第3の層、即ち、物理層、を有しうる。具体的な例として、本明細書中に述べたように、高性能相互接続層状プロトコルが使用される。
【0045】
次に
図4を参照すると、シリアル2地点間ファブリックの例示的な実施形態が図示される。シリアル2地点間リンクは、シリアルデータを送信するための任意の伝送路を含むことができる。示される実施形態ではリンクは、2つの低電圧の差動駆動される複数の信号ペア、送信ペア406/411および受信ペア412/407、を有しうる。従って、デバイス405は、データをデバイス410へ伝送するための送信論理406と、デバイス410からデータを受信するための受信論理407とを有する。言い換えると、1つのリンクに関するいくつかの実装には、2つの送信パス、即ち、パス416および417と、2つの受信パス、即ち、パス418および419が、含まれる。
【0046】
伝送路とは、伝送ライン、銅ライン、光ライン、無線通信チャネル、赤外通信リンク、またはその他の通信パスのようなデータを送信するための任意のパスを指す。デバイス405およびデバイス410のような2つのデバイスの間の接続は、リンク415のようなリンクとしても称される。リンクは、1つのレーンをサポートしてよく、各レーンは、一連の差動信号の複数ペア(1つのペアは送信用、1つのペアは受信用)を表す。帯域幅を拡張すべく、リンクはxNとして示される複数のレーンを集約してよく、ここでNは、1、2、4、8、12、16、32、64のような、またはそれより広い、任意のサポートされたリンク幅である。
【0047】
差動ペアとは、ライン416および417のような、2つの伝送路のことを指してよく、差動信号を送信する。一例として、ライン416が低電圧レベルから高電圧レベルへと切り替わる、即ち、立上りエッジであるとき、ライン417は、高論理レベルから低論理レベル、即ち立下りエッジへと、駆動する。差動信号は、数ある利点の中でも特に、クロスカップリング、電圧のオーバーシュート/アンダーシュート、リンギング等の優れた信号品位のような、優れた電気的特性を潜在的に示す。これにより、優れたタイミング窓を許容し、より速い送信周波数を可能とする。
【0048】
一実施形態では、新しい高性能相互接続(HPI)が提供される。HPIは、次世代のキャッシュコヒーレントであってリンクベースの相互接続を有することが可能である。1つの例としてHPIは、ワークステーションまたはサーバのような高性能コンピューティングプラットフォームで使用されてよく、複数のプロセッサ、複数のアクセラレータ、複数のI/Oデバイス等を接続するために典型的にはPCIeまたは別の相互接続プロトコルが用いられるようなシステムに含まれる。しかしながら、HPIはそれらには限定されない。代わりに、HPIは、ここで記載される任意のシステムまたはプラットフォームで使用されてよい。さらに、個別に開発された複数の思想が、PCIe、MIPI、QPIのような、その他の複数の相互接続および複数のプラットフォームへ適用されてよい。
【0049】
複数のデバイスをサポートするべく、1つの例示の実装において、HPIは、命令セットアーキテクチャ(ISA)には依存しない(即ち、HPIは、複数の異なるデバイスに実装されることができる)ものとすることができる。別のシナリオでは、HPIは、また、単にプロセッサやアクセラレータへ接続するためではなく、高性能I/Oデバイスへ接続するために使用されてよい。例えば、高性能PCIeデバイスは、適切な変換ブリッジ(即ち、HPIからPCIeへ)を通してHPIに結合されてよい。さらに、複数のHPIリンクは、様々なやり方で(例えば、スター、リング、メッシュなど)複数のプロセッサのような多数のHPIベースのデバイスによって使用されてよい。
図5は、多数の潜在的なマルチソケット構成の複数の例示的な実装を図示する。図示されるように、2ソケット構成505は、2つのHPIリンクを含むことができるが、他の実装では、1つのHPIリンクが使用されてよい。より大きなトポロジーに対しては、追加のまたは代替の特徴の中でもとりわけ識別子(ID)が割当可能であってかつ何らかの形態で仮想経路が存在する限りにおいて、任意の構成が使用されてよい。示されるように、一例において、4ソケット構成510は、各プロセッサから別のプロセッサへのHPIリンクを有する。しかし、構成515に示される8ソケット実装では、全てのソケットが互いを、HPIリンクを通じて直接的に接続しているわけではない。しかしながら、仮想経路またはチャネルが複数のプロセッサ間に存在するような場合には、そうした構成がサポートされる。サポートされる複数のプロセッサの範囲は、ネイティブ・ドメインにおいて、2−32個である。より多数のプロセッサが、多重ドメインのまたは複数のノードコントローラやその他の事例の間におけるその他の相互接続の使用を通して、達成されてよい。
【0050】
HPIアーキテクチャは、層状プロトコルアーキテクチャの定義を含み、いくつかの実施例においては、この層状プロトコルアーキテクチャは、複数のプロトコル層(コヒーレントの、非コヒーレントの、および任意選択的には、他のメモリベースのプロトコル)、ルーティング層、リンク層、および物理層を含む。その上、HPIは、他の事例では、複数の電力管理者(複数の電力制御ユニット(PCU)のような)、テストおよびデバック設計(DFT)、フォールト処理、複数のレジスタ、セキュリティに関連する改善をさらに含むことができる。
図5は、例示的HPI層状プロトコルスタックの実施形態を示す。いくつかの実装では、
図5の複数の層の少なくともいくつかは、オプションである。各層は、情報(複数のパケット630を有するプロトコル層605a、b、複数のフリット(flit)635を有するリンク層610a、b、複数のフィット(phit)640を有する物理層605a、b)の粒度または量について、自身のレベルを取扱う。いくつかの実施形態では、パケットは、その実装に基づいて、複数の部分フリット、単一フリット、または多数のフリットを含んでよいことに留意されたい。
【0051】
第1の例として、フィット640の幅は、1から1マッピング・リンク幅ビット(例えば、20ビットリンク幅は、20ビットのフィットを有するなど)を有する。フリットは、184、192または200ビットのような、より大きなサイズを有してよい。フィット640が20ビット幅で、フリット635のサイズが184ビットの場合、1つのフリット635を送信するためには小数のフィット640が必要となる(例えば、特に184ビットのフリット635の送信には20ビットで9.2フィットとなり、192ビットのフリットの送信には20ビットで9.6フィットとなる)。物理層における基本的なリンク幅は、変化してよい。例えば、方向毎のレーン数は、2、4、6、8、10、12、14、16、18、20、22、24などであってよい。一実施形態では、リンク層610a、bは、単一フリットに異なるトランザクションについての多数の要素を埋め込むことが可能であり、1または複数のヘッダ(例えば、1、2、3、4)が、そのフリット内に埋め込まれてよい。一例において、HPIは複数のヘッダを対応する複数のスロットへ分割し、そのフリットにおける多数のメッセージが、異なるノード行きとなることを可能とする。
【0052】
一実施形態では、物理層605a、bが、物理媒体(電気、光、など)上での情報の高速伝達を担うことができる。物理リンクは、層605aおよび605bのような2つのリンク層エンティティの2地点間でありうる。リンク層610a、bは、物理層605a、bを複数の上位層から要約することができ、(リクエストと同様に)確実にデータを転送し、かつ、2つの直接接続されたエンティティ間のフロー制御を管理する機能を提供する。リンク層は、また、物理チャネルを多重の仮想チャネルおよび複数のメッセージクラスへの仮想化を担うことができる。プロトコル層620a、bはリンク層610a、bに依存しており、複数の物理リンクにわたって伝達するために、物理層605a、bへ向けて複数のプロトコルメッセージを操作する前に、それらを適切な複数のメッセージクラスおよび複数の仮想チャネルへとマッピングする。リンク層610a、bは、他の例において、リクエスト、スヌープ、応答、ライトバック、非コヒーレントデータのような多重のメッセージをサポートしてよい。
【0053】
HPIの物理層605a、b(または、PHY)は、
図6に図示されるように、電気層(例えば、2つのコンポーネントを接続する電気伝導体)の上であって、リンク層610a、bの下に実装されうる。物理層および対応する論理は、各エージェントに存在することができ、互いに分離されている(例えば、あるリンクのいずれかの側における複数のデバイスにおいて)2つのエージェント(AおよびB)における複数のリンク層を接続する。ローカルな、および、遠隔の複数の電気層は、物理媒体により接続される(例えば、ワイヤ、導体、光、等)。一実施形態では、物理層605a,bは、2つの主要なフェーズ、初期化およびオペレーションを有する。初期化の間、接続はリンク層に対して不透明であり、シグナリングは、複数の時限状態と複数のハンドシェイクイベントとの組み合わせを含んでよい。オペレーションの間、接続はリンク層に対して透明であり、シグナリングは、単一のリンクとして一斉に動作している全てのレーンと共に、所定の速度である。オペレーションフェイズの間、物理層は、エージェントAからエージェントBへ、そして、エージェントBからエージェントAへ、フリットを運ぶ。接続はリンクとも称され、いくらか物理的態様を要約するが、この態様は、媒体、幅およびリンク層からの速度を含み、他方では、フリットおよび現在の構成(例えば幅)の制御/状態を、リンク層と交換する。初期化フェーズは、重要ではないフェーズ、例えば、ポーリングやコンフィギュレーションを含む。オペレーションフェイズは、また重要ではないフェーズ(例えば、リンク電力管理状態)を含む。
【0054】
一実施形態では、リンク層610a、bは、2つのプロトコルまたはルーティングエンティティの間で信頼性あるデータ転送を提供するために実装されうる。リンク層は、プロトコル層620a、bから物理層605a,bを要約することができ、そして、2つのプロトコルエージェント(A、B)の間のフロー制御を担い、プロトコル層(メッセージクラス)およびルーティング層(仮想ネットワーク)へ複数の仮想的チャネルサービスを提供することができる。プロトコル層620a、bとリンク層610a、bとの間のインタフェースは、典型的には、パケットレベルでありうる。一実施形態では、リンク層での最小の伝達ユニットは、規定ビット数であるフリットと称され、例えば、192ビットまたはその他の特定単位である。リンク層610a、bは、物理層605a,bに依存しており、物理層605a,bの伝達ユニット(フィット)を、リンク層610a、bの伝達ユニット(フリット)へと組み立てる。加えて、リンク層610a、bは、論理的に2つの部分、送信機と受信機とに分割されてもよい。1つのエンティティでの送信機/受信機ペアは、別のエンティティでの送信機/受信機ペアと接続されてよい。フロー制御はしばしば、フリットおよびパケットの両方をベースに実行される。エラー検出および訂正は、また、潜在的には、フリットレベルベースで実行される。
【0055】
一実施形態では、HPIトランザクションをソースから宛先へとルーティングするために、ルーティング層615a、bは、柔軟かつ分散型の方法を提供することができる。このスキームは柔軟性に富む、というのも、多重トポロジーのためのルーティングアルゴリズムは、各ルータでプログラム可能なルーティング表を通して規定されてよいからである(一実施形態ではプログラミングは、ファームウェア、ソフトウェア、またはそれらの組み合わせにより実行される)。ルーティング機能は分散型であってよく、ルーティングは一連のルーティングステップを通してなされてよく、各ルーティングステップは、ソースの、中間の、または宛先のルータのいずれかにおける表を検索することを通して規定される。ソースでの検索は、HPIパケットをHPIファブリックへと注入するために用いられてよい。中間ルータでの検索は、入力ポートから出力ポートへHPIパケットをルーティングするために用いられてよい。宛先ポートでの検索は、宛先HPIプロトコルエージェントをターゲットにするために用いられてよい。いくつかの実装では、複数のルーティング表、つまり、複数のルーティングアルゴリズムは仕様によって具体的に規定されないので、ルーティング層を薄くするこができる。これにより、柔軟性と多様な利用モデルが可能となり、そこではシステムの実装によって規定される複数の柔軟なプラットフォームアーキテクチャトポロジーを含む。ルーティング層615a、bは、3つまで(またはそれより多く)の仮想ネットワーク(VN)の使用を提供するために、リンク層610a、bに依存しており、一例において、2つのデッドロックフリーのVNである、VN0とVN1は、各仮想ネットワークで規定される複数のメッセージクラスを有する。共有され適応的な仮想ネットワーク(VNA)は、リンク層で規定されてよいが、この適応的なネットワークは、直接的にはルーティングコンセプトに露出されない。というのは、他の特徴や事例において、各メッセージクラスと仮想ネットワークは、専用化された複数のリソース、および保証された将来の進展を有してよいからである。
【0056】
いくつかの実装では、HPIは埋め込みクロックを利用することができる。クロック信号は、相互接続を用いて送信されるデータに埋め込むことができる。データに埋め込まれたクロック信号によって、個別の専用化された複数のクロックレーンを省くことができる。このことは有用でありうる、というのも例えば、これによりデータ転送のためデバイスのより多くのピンを、具体的にはピンのための空間が高価であるようなシステムにおいて、専用化できるからである。
【0057】
相互接続のいずれの側においても、2つのエージェント間でリンクを確立することが可能である。データを送信するエージェントは、ローカルなエージェントであり、データを受信するエージェントは、遠隔のエージェントであるかもしれない。ステートマシンが両方のエージェントによって採用されてよく、リンクの多様な態様を管理する。一実施形態では、物理層データパスは、リンク層から電気的なフロントエンドへと、フリットを送信することができる。1つの実装では、制御パスは、ステートマシン(リンクトレーニングステートマシンまたはその同等物とも称される)を含む。ステートマシンの複数の動作、および、複数の状態の終了は、内部信号、タイマ、外部信号、またはその他の情報に依存する。実際に、いくつかの初期状態のように、複数の状態のうちのいくつかは、状態を終了するためのタイムアウト値を提供するため複数のタイマを有してよい。いくつかの実施形態では、検出とは、レーンの両方の足でイベントを検出することを指すが、必ずしも同時にというわけではない。しかしながら、他の実施形態では、検出するとは、参照しているエージェントによるイベントの検出を指す。一例として、デバウンスとは、信号維持アサーションを指す。一実施形態では、HPIは、複数の非機能レーンでのイベントにおけるオペレーションをサポートする。ここで、複数のレーンは、複数の固有の状態でドロップされてよい。
【0058】
ステートマシンにおいて規定される状態としては、他の複数のカテゴリおよび複数のサブカテゴリにおいて、複数のリセット状態、複数の初期状態、および複数の動作状態を含むことができる。一例において、いくつかの初期状態は、タイムアウトの状態を終了するために用いられる第2のタイマを有することができる(本質的には、その状態での進行が失敗することによるアボートである)。アボートは、状態レジスタのような、複数のレジスタを更新することを含んでよい。いくつかの状態は、また、その状態において主要な複数の機能の時間を決めるために用いられる1または複数の第1のタイマを有してよい。とりわけ、他の複数の状態は、(ハンドシェイクプロトコルのような)内部または外部の信号がその状態から別の状態へと遷移を駆動するように、規定されうる。
【0059】
ステートマシンは、また、単一ステップでのデバッグ、初期化アボートでのフリーズ、および、複数のテスタの使用、をサポートしてよい。ここで、状態終了は、デバッグソフトウェアが準備されるまで延期/ホールドされうる。いくつかの例では、終了は、第2のタイムアウトまで延期/ホールドされうる。一実施形態では、動作と終了は、トレーニングシーケンスでのやり取りに基づくことができる。一実施形態では、リンクステートマシンはローカルなエージェントのクロックドメインで実行され、ある状態から次への遷移は、送信機のトレーニングシーケンス境界と一致する。現在の状態を反映するために、複数の状態レジスタが使用されてよい。
【0060】
図7は、HPIの1つの例示の実装において複数のエージェントによって使用されるステートマシンの少なくとも一部の表現を図示する。当然のことながら、
図7の状態表に含まれる複数の状態は、包括的ではない可能な複数の状態のリストを含むものである。例えば、いくつかの遷移が、ダイアグラムを単純化するために省かれている。また、いくつかの状態は、組み合わされ、分割され、あるいは省略されてよく、一方で、他の状態が追加されてもよい。そのような状態として、以下を含むことができる。
【0061】
イベントリセット状態:
ウォームまたはコールドのリセットイベントで入る。複数のデフォルト値を回復する。複数のカウンタ(例えば、複数の同期カウンタ)を初期化する。別のリセット状態のような、別の状態へと抜け出てよい。
【0062】
タイムドリセット状態:
インバンドリセットのための時限状態。事前に定義されたEOS(electrical ordered set)を駆動してよい。複数の遠隔の受信機は、EOSを検出し、同様にタイムドリセットへと入ることが可能。受信機は、複数の電気的な設定を保持する複数のレーンを有する。リセット状態をキャリブレーションするために、エージェントへと抜け出てよい。
【0063】
キャリブレーションリセット状態:
レーンでシグナリングを行うことなく(例えば受信機のキャリブレーション状態)またはドライバをオフすることなく、キャリブレーションする。タイマに基づいて、予め定められた時間だけ、その状態であってよい。動作速度を設定してよい。ポートが使用不可能である場合には、待ち状態として動作してよい。最小の常駐時間を含んでよい。受信機での条件設定またはスタガリング・オフ(staggering off)が、設計に基づいて生じてよい。タイムアウトおよび/またはキャリブレーション完了の後、受信機検出状態へと抜け出してよい。
【0064】
受信機検出状態:
1または複数のレーン上の受信機の存在を検出する。受信機の終端(例えば、受信機のプルダウン挿入)を探してよい。規定値が設定されていることに応じて、あるいは、別の規定値が設定されていないときに、キャリブレーションリセット状態へと抜け出してよい。受信機が検出された、またはタイムアウトに達した場合に、送信機キャリブレーション状態へと抜け出してよい。
【0065】
送信機キャリブレーション状態:
送信機のキャリブレーションのためのものである。送信機のキャリブレーションのために割り当てられた時限状態であってよい。レーン上でのシグナリングを含んでよい。EIEOS(electric idle exit ordered set)のように、EOSを継続して駆動してよい。キャリブレーションを完了した、またはタイマの期限が切れたときに、コンプライアンス状態へと抜け出してよい。カウンタの期限が切れた場合、または第2のタイムアウトが発生した場合には、送信機検出状態へと抜け出してよい。
【0066】
送信機検出状態:
有効なシグナリングを適格とする。ハンドシェイク状態であってよく、この場合、エージェントは複数の動作を完了し、遠隔のエージェントのシグナリングに基づいて次の状態へと抜け出る。受信機が、送信機からの有効なシグナリングを適格としてよい。一実施形態では、受信機がウェイク検出を探し、1または複数のレーンでデバウンスされた場合には、他の複数のレーンで探す。送信機が、検出信号を駆動する。全レーンに対するデバウンスの完了に応じて、および/または、タイムアウトに応じて、または、全レーンでのデバウンスが完了せずにタイムアウトが生じた場合に、ポーリング状態へと抜け出してよい。ここで、1または複数の監視レーンは、ウェイク信号をデバウンスするために、アウェイクのままであってよい。デバウンスされると、他の複数のレーンが潜在的にデバウンスされる。これにより、低電力状態において省電力化が可能となる。
【0067】
ポーリング状態:
受信機が、適応し、ドリフトバッファを初期化し、ビット/バイト(例えば、シンボル境界を特定する)でロックする。複数のレーンがデスキューされてよい。遠隔のエージェントが、アクノリッジメッセージに応じて、次の状態(例えば、リンク幅状態)へ抜け出すことを引き起こしてよい。EOSおよびトレーニングシーケンスヘッダへとロックすることによって、ポーリングは追加的にトレーニングシーケンスロックを含むことができる。遠隔の送信機でのレーン間スキューは、最高速度のための第1の長さ、および、低速度のための第2の長さに、制限されてよい。デスキューは、動作モードと同様に低速モードで実行されてよい。受信機は、レーン間スキューをデスキューするための具体的な最大値を有してよく、例えば8、16または32スキュー間隔である。受信機動作は、レイテンシ調整を有してよい。一実施形態では、受信機動作は、有効なレーンマップで成功をおさめたデスキューにおいて完了されうる。一例において、多数の連続するトレーニングシーケンスヘッダが複数のアクノリッジと共に受信され、かつ、受信機が自身の動作を完了した後に肯定応答を有する多数のトレーニングシーケンスが送信されたときに、ハンドシェイクが成功裡に達成される。
【0068】
リンク幅状態:
エージェントは遠隔の送信機に対する最終レーンマップと通信する。受信機は、情報を受信しデコードする。受信機は、設定されたレーンマップを、ある構造中、第2の構造における過去のレーンマップ値のチェックポイントの後に、記録してよい。受信機は、また、肯定応答(ACK)で返答してよい。インバンドリセットを開始してよい。一例としては、インバンドリセットで開始するための第1の状態である。一実施形態では、フリットコンフィギュレーション状態のような、次の状態への抜け出しが、ACKに応じて実行される。さらには、また、低電力状態に入るよりも前に、もしウェイク検出信号発生の周波数が規定値を下回った場合には(例えば4000UIのように、所定数のユニットインターバル(UI)毎に1回)、リセット信号が生成されてよい。受信機は、現在と過去のレーンマップを保持してよい。送信機は、異なる値を有するトレーニングシーケンスに基づいて、異なるグループのレーンを用いてよい。いくつかの実施形態では、レーンマップは、いくつかの状態レジスタを変更しないでよい。
【0069】
フリットロックコンフィギュレーション状態:
送信機により入るが、送信機および受信機の両方が、ブロッキングリンク状態または他のリンク状態へと抜け出たときに、本状態は終了したものとされる(即ち、第2のタイムアウトの意味がなくなる)。一実施形態では、送信機がリンク状態へと抜け出ることには、データシーケンスの開始(SDS)および気まぐれに配列された信号(planetary aligment signal)を受信した後でのトレーニングシーケンス(TS)境界、を含む。ここで、受信機の終了は、遠隔の送信機からSDSを受信することに基づいてよい。この状態は、エージェントからリンク状態へのブリッジであってよい。受信機は、SDSを特定する。デスクランブラの初期化後にSDSが受信されると、受信機は、ブロッキングリンク状態(BLS)(または制御窓)へと抜け出してよい。タイムアウトが生じた場合には、リセット状態へと抜け出してもよい。送信機は、複数のレーンをコンフィギュレーション信号で駆動する。送信機の終了は、リセット、BLS、または、複数の条件や複数のタイムアウトに基づく他の複数の状態であってよい。
【0070】
送信リンク状態:
リンク状態である。フリットが、遠隔のエージェントへ送信される。ブロッキングリンク状態から入り、タイムアウトのようなイベントでブロッキングリンク状態へと戻る。送信機はフリットを送信する。受信機はフリットを受信する。また、低電力リンク状態へと抜け出してよい。いくつかの実装では、送信リンク状態(TLS)は、L0状態としても称されうる。
【0071】
ブロッキングリンク状態:
リンク状態である。送信機および受信機は、統一されたやり方で動作している。時限状態であってよく、その間、リンク層フリットが延期されるが、物理層情報は遠隔のエージェントへと伝えられる。低電力リンク状態へと(または設計に基づく他のリンク状態へと)抜け出してよい。一実施形態では、ブロッキングリンク状態(BLS)が定期的に生じる。この期間は、BLS間隔とも称され、低速度と動作速度との間では異なってもよいのと同様に、時限的であってよい。例えば、送信リンク状態または部分幅送信リンク状態の間において、ある長さの物理層制御シーケンスが送信されてもよいように、リンク層は、フリットの送信から定期的にブロックされてよいことに注意されたい。いくつかの実装では、ブロッキングリンク状態(BLS)は、L0制御状態またはL0c状態とも称されうる。
【0072】
部分幅送信リンク状態:
リンク状態である。部分幅状態へ入ることに省電力化してよい。一実施形態では、非対称の部分幅とは、幅が異なる2方向リンクにおける各方向を指し、これらはいくつかの設計でサポートされてよい。部分幅送信リンク状態に入るために部分幅指示を送信する送信機等の開始プログラムの一例が、
図9の例に示される。ここで、第1の幅を有するリンク上で送信が行われる一方で、部分幅指示が、第2の新たな幅での送信するためにリンクを遷移させるべく、送信される。不整合は、リセットをもたらしてよい。留意すべきは、速度は変更されないが、幅は変更されてよい。故に、フリットは、潜在的には、異なる幅で送信される。論理的には送信リンク状態と類似してよいが、より小さい幅であるため、フリットの送信にはより長い時間がかかりうる。特定の受信および送信メッセージに基づいて低電力リンク状態へ抜け出す、部分幅送信リンク状態を終了する、他のイベントに基づいてリンクブロッキング状態へと抜け出すなど、他の複数のリンク状態へと抜け出してよい。一実施形態では、より良質な信号品位(雑音緩和など)を提供すべく、送信機ポートは、アイドル状態の複数のレーンを互い違いにオフしてよい。ここで、ヌルフリットのようなリトライ不可能なフリットが、リンク幅が変化している期間中に使用されてよい。対応する受信機は、1または複数の構造における現在および過去のレーンマップをレコードするのと同様に、これらのヌルフリットをドロップし、アイドル状態の複数のレーンを互い違いにオフしてよい。状態および関連する状態レジスタは、変えられないままでもよいことに留意されたい。いくつかの実装では、部分幅送信リンク状態は、部分L0状態またはL0p状態とも称されうる。
【0073】
終了部分幅送信リンク状態:
部分幅状態を終了する。いくつかの実装では、ブロッキングリンク状態を用いてもよいし、そうでなくてもよい。一実施形態では、トレーニングしデスキューするために、複数のアイドル状態のレーンで部分幅終了パターンを送信することによって、送信機が終了を開始する。一例として終了パターンは、EIEOSで開始し、このEIEOSは、検出され、そのレーンがフル送信リンク状態へのエントリを開始する準備ができていることを示す信号へデバウンスされ、そして終了パターンは、SDSまたは複数のアイドル状態のレーンの高速トレーニングシーケンス(FTS)において、終了してよい。終了シーケンスの間の任意の失敗(タイムアウトより前にデスキューが完了しない、等の受信機動作)は、リンク層へのフリットの伝達を停止し、リセットをアサートし、これは、次のブロッキングリンク状態の発生でリンクをリセットすることにより処理される。またSDSは、複数のレーン上のスクランブラ/デスクランブラを適切な値へと初期化してよい。
【0074】
低電力リンク状態:
より低い電力の状態である。一実施形態では、この実施形態のシグナリングは、全レーンかつ両方の方向で停止されるため、部分幅リンク状態よりも低い電力である。送信機は、低電力リンク状態をリクエストするためにブロッキングリンク状態を用いてよい。ここで、受信機は、ACKまたはNAKを有するリクエストまたは応答をデコードしてよく、さもなければ、リセットがトリガにされてよい。いくつかの実装では、低電力リンク状態は、L1状態とも称されうる。
【0075】
いくつかの実装では、状態遷移は、その状態が迂回されるように促されることがあり、例えば、特定のキャリブレーション動作やコンフィギュレーション動作のような、その状態における状態動作が既に完了している場合において、そうである。複数の過去の状態の結果およびリンクについての複数のコンフィギュレーションが、格納され、後続の初期化やリンクのコンフィギュレーションで再利用されうる。そのようなコンフィギュレーションおよび状態動作を繰り返すのではなく、むしろ、対応する状態を迂回することが可能である。しかしながら、状態を迂回することを実装した従来のシステムでは、しばしば、複雑な設計と、高価な検証エスケープを実装している。一例において、従来の迂回を用いるのではなく、HPIは、状態動作が繰り返される必要が無い場合のような特定の複数の状態で、複数のショートタイマを利用できる。このことは、潜在的に、その他の潜在的利点におけるより統一され同期されたステートマシン遷移を可能とする。
【0076】
一例において、ソフトウェアベースのコントローラ(例えば、物理層のための外部制御ポイントを通して)は、1または複数の特定の状態のためのショートタイマを使用可能にすることができる。例えば、その状態に対する複数の動作が既に実行され格納されているような状態に対して、その状態は、当該状態から次の状態へと素早く抜け出すことを促すために、短縮化されうる。しかしながら、過去の状態動作がフェイルであるか、または、ショートタイマ期間内に適用することができない場合には、状態終了を実行することができる。さらに、コントローラは、例えば、状態動作が再び実行されるべきであるとき、ショートタイマを無効化することができる。それぞれの状態に対して、ロングのまたはデフォルトのタイマが設定されうる。その状態でのコンフィギュレーション動作がロングタイマの期間内で完了することができない場合には、状態終了が生じうる。ロングタイマは、その状態動作の完了を許可するために、合理的な期間を設定することができる。対照的にショートタイマは、相当に短くてよく、場合によっては、とりわけ、過去に実行された状態動作へと戻って参照することなしに状態動作を実行することを不可能としてよい。
【0077】
HPIのいくつかの実装では、スーパーシーケンスを規定することができ、各スーパーシーケンスは、それぞれの状態、または、それぞれの状態への/からの、エントリ/抜け出ること、に対応する。
スーパーシーケンスは、データセットおよびシンボルの反復シーケンスを含むことができる。シーケンスは、いくつかの例では、特に、状態の完了、状態遷移、または、対応するイベントの通信が行われるまで、反復することができる。いくつかの例では、スーパーシーケンスの反復シーケンスは、規定されたユニットインターバル(UI)の個数等の規定の周波数に従って、反復することができる。
ユニットインターバル(UI)は、リンクまたはシステムにおけるレーンで単一のビットを送信するための時間間隔に対応しうる。いくつかの実装では、反復シーケンスは、EOSで始まりうる。従って、EOSの例は、予め定められた周波数に従って反復することが期待されうる。そのような順序セットは、規定された16バイトコードとして実装されることが可能であり、とりわけ、16進形式で表されてよい。一例において、スーパーシーケンスのEOSは、EIEOSでありうる。一例において、EIEOSは、低周波数クロック信号(例えば、FF00やFFF000等の16進シンボルを事前に規定された回数繰り返したもの)と類似してよい。事前に定義されたデータセットは、事前に定義された個数のトレーニングシーケンスのようなEOSやその他のデータを流すことができる。そのようなスーパーシーケンスは、他の例における初期化と同様に、リンク状態遷移を含んだ複数の状態遷移において使用することができる。
【0078】
上で紹介したように、一実施形態では初期化は、初めは低速度で行われ、高速度の初期化が続くことができる。低速度の初期化は、複数のレジスタおよびタイマに対してデフォルト値を用いる。すると、ソフトウェアは、低速度リンクを使用して、複数のレジスタ、タイマおよび電気パラメータを設定し、高速度初期化のための路を舗装すべく、キャリブレーションセマフォをクリアする。一例では、初期化は、他の可能性のある中で特に、リセット、検出、ポーリング、コンフィギュレーションのような、複数の状態または複数のタスクから構成されうる。
【0079】
一例において、制御シーケンスをブロックするリンク層(ブロッキングリンク状態(BLS)またはL0c状態など)は時限状態を含むことができ、その間においては、リンク層フリットが延期されつつ、他方でPHY情報が遠隔のエージェントへと伝えられる。ここで、送信機および受信機は、ブロック制御シーケンスタイマを開始してよい。タイマの期限が切れると、送信機および受信機は、ブロッキング状態を終了することができ、そして、リセットへと抜け出る、異なるリンク状態(または他の状態)へと抜け出る等のその他の複数の動作を行ってよく、この場合、当該リンクにわたりフリットの送信を可能とする状態を含む。
【0080】
一実施形態では、リンクトレーニングが、提供され、規定されたスーパーシーケンスに関連するような、スクランブルされたトレーニングシーケンス、順序セット、および制御シーケンスのうちの1または複数を送信することを含みうる。トレーニングシーケンスシンボルは、ヘッダ、複数の予約部分、ターゲットレイテンシ、ペア数、物理レーンマップコードの参照レーン若しくはレーン群、および、初期状態のうちの1または複数を含んでよい。一実施形態では、ヘッダは、他の例では、ACKまたはNAKと共に送信することができる。一例として、トレーニングシーケンスは、スーパーシーケンスの一部として送信されてよく、かつスクランブルされてよい。
【0081】
一実施形態では、順序セットおよび制御シーケンスは、スクランブルされず、互い違い(staggered)にされず、全く同じになるように、同時に、かつ完全に、全レーンで送信される。順序セットを有効に受信することには、順序セットの少なくとも一部(または、複数の部分的な順序セットのための全体順序セット)をチェックすることを含んでよい。順序セットは、EIOSまたはEIEOSのようなEOSを含んでよい。スーパーシーケンスは、データシーケンスの開始(SDS)または高速トレーニングシーケンス(FTS)を含んでよい。そのような複数のセットおよび複数の制御スーパーシーケンスは事前に定義することができ、かつ、任意の長さを有してよいのと同様に、任意のパターンまたは16進表現を有してよい。例えば、順序セットおよびスーパーシーケンスは、8バイト、16バイト、32バイト等の長さであってよい。一例として、FTSは、部分幅送信リンク状態を終了する間に高速ビットロックのために追加的に使用されうる。FTS定義はレーン毎であってよく、FTSの回転されたバージョンが使用されてもよい。
【0082】
一実施形態では、スーパーシーケンスは、EIEOSのように、トレーニングシーケンスストリームに、EOSの挿入を含むことができる。一実装では、シグナリングが開始すると、複数のレーンが、互い違いに電源オンする。しかしながら、このことは、いくつかのレーンの受信機において、初期のスーパーシーケンスが切り詰められることをもたらしうる。しかしながら、スーパーシーケンスを、短い間隔にわたって(例えば、およそ1000単位インターバル、即ち、1KUI)繰り返すことができる。トレーニングスーパーシーケンスは、デスキュー、コンフィギュレーションのうちの1または複数のために、そして、初期化ターゲット、レーンマップ等との通信のために、追加的に用いられてよい。EIEOSは、その他の例において、レーンを非アクティブからアクティグ状態へと遷移させること、良好なレーンをスクリーニングすること、シンボルおよびTS境界を特定することのうちの1または複数のために、用いることができる。
【0083】
図8に移ると、例示的なスーパーシーケンスの表現が示される。例えば、例示的な検出スーパーシーケンス805を規定することができる。検出スーパーシーケンス805は、単一のEIEOS(または他のEOS)の反復シーケンスを含むことができ、その後には事前に定義された個数の特定のトレーニングシーケンス(TS)の例(インスタンス、実例、実体)が続く。一例において、EIEOSが送信され、その直後に7つの繰り返されたTSの例が送信されうる。7つのTSのうちの最後が送信されると、EIEOSが送信され、追加の7つのTSの例が再度その後に続き、これが繰り返される。このシーケンスを、特定の事前に定義された周波数に従って、繰り返すことができる。
図8の例では、EIEOSは、およそ1000ユニット単位(〜1KUF)毎に1回、レーンに再び現れ、その後に、検出スーパーシーケンス805の残りが続く。受信機は、繰り返し検出スーパーシーケンス805の有無について複数のレーンを監視することができ、確証が得られるとスーパーシーケンス705は、遠隔のエージェントが、存在している、レーンに追加された(ホットプラグ化された)、アウェイクしていた、再初期化している等と結論することができる。
【0084】
他の例において、別のスーパーシーケンス810は、ポーリング、コンフィギュレーション、または、ループバック条件若しくは状態、を示すために規定されうる。例示的な検出スーパーシーケンス805と共に、1つのリンクの複数レーンが、ポーリング/コンフィギュレーション/ループスーパーシーケンス810等のための受信機によって監視され、ポーリング状態、コンフィギュレーション状態、またはループバック状態若しくは条件を特定することができる。一例において、ポーリング/コンフィギュレーション/ループスーパーシーケンス810は、EIEOSで始まり、その後には、事前に定義された個数の、繰り返されたTSの例が続く。例えば、一例において、約4000UI(例えば、〜4KUI)毎に繰り返すEIEOSと共に31個のTSの例が、EIEOSの後に続いてよい。
【0085】
さらに、他の例において、部分幅送信状態(PWTS)終了スーパーシーケンス815を規定することができる。一例において、PWTS終了スーパーシーケンスは、初期EIEOSを含むことができ、スーパーシーケンスに第1の完全なシーケンスを送信するよりも前に事前に条件付けされた複数のレーンを反復する。例えば、スーパーシーケンス815で繰り返されるべきシーケンスはEIEOSで始まりうる(約1000UI毎に1回繰り返す)。さらに、高速トレーニングシーケンス(FTS)を他のトレーニングシーケンス(TS)の代わりに使用することができ、FTSは、より素早いビットロック、バイトロックおよびデスキューをアシストするように構成される。いくつかの実装では、FTSは、複数のアイドル状態のレーンをできるだけ早くかつ無停止でアクティブへと戻すことをさらにアシストすべく、アンスクランブルされうる。リンク送信状態へのエントリに先立つ他の複数のスーパーシーケンスと同様に、スーパーシーケンス815は、データシーケンスの開始(SDS)の送信によって、遮られ、終わらせることができる。さらに、とりわけ、部分FTS(FTSp)に複数ビットを減算(または加算)することを許容する等によって、FTSpが、新たな複数のレーンをアクティブな複数のレーンと同期することをアシストするために送信されうる。
【0086】
検出スーパーシーケンス705および、ポーリング/コンフィギュレーション/ループスーパーシーケンス710等のスーパーシーケンスは、潜在的には、実質的に1つのリンクにおける初期化または再初期化の間中にわたって送信されうる。特定のスーパーシーケンスの受信および検出に応じて、いくつかの例では、受信機は、複数のレーンにわたって送信機へ同じスーパーシーケンスをそのまま繰り返すことにより、応答を行うことができる。送信機と受信機による特定のスーパーシーケンスの受信および検証は、そのスーパーシーケンスを通じて伝達される状態または条件をアクノリッジするためのハンドシェイクとしての機能を果たし得る。例えば、そのようなハンドシェイク(例えば、検出スーパーシーケンス705を利用すること)は、リンクの再初期化を特定するために用いられうる。他の例において、そのようなハンドシェイクは、電気的なリセットまたは低電力状態の終わりを示すために使用することができ、特に、対応する複数のレーンは、バックアップへと戻されることになる。電気的なリセットの終わりは、例えば、検出スーパーシーケンス705をそれぞれ送信する送信機および受信機の間でのハンドシェイクから、特定されうる。
【0087】
他の例において、複数のレーンは、複数のスーパーシーケンスに対してモニタされ、かつ、検出、ウェイク、状態終了、エントリ、その他のイベントに対するレーンのスクリーニングに関連してその複数のスーパーシーケンスを用いることができる。事前に定義され予測可能なスーパーシーケンスの特性および形態は、ビットロック、バイトロック、デバウンス、デスクランブル、デスキュー、適応化、レイテンシ調整、ネゴシエートされた遅延、および、その他の潜在的使用等の初期化タスクを実行するために、さらに用いられてよい。実際のところ、複数のレーンが、そのようなイベントに対して実質的に継続してモニタされ、そのような条件に反応し処理するためのシステムの能力を活性化する。
【0088】
図10は、一例による、トレーニングシーケンス(TS)の例を表す。
図10において、トレーニングシーケンス1005は、ヘッダ1010、および、リンクの初期化に関連する情報を通信するために用いられうる様々なフィールドを、含むことができる。例えば、一例において、複数のフィールドの中でも特に、ターゲットレイテンシ1015、状態1020、レーンペア数1025およびレーンマッピング1028のフィールドを、含むことができる。例えば、複数の機能の中でも特にスクランブラ同期フィールド1030が、追加的に設けられ、TSフィールドのデスクランブルを可能とするためにデバイスにおける線形フィードバックシフトレジスタ(LFSR)の同期を、アシストすることができる。他の予約フィールド(例えば、1055、1060)は、また、トレーニングシーケンス(例えば、1005)に含まれ得る。
【0089】
TSヘッダ1010は追加のフィールドを有することができ、それらはトレーニングシーケンス型1035(例えば、そこから初期状態を決定または推測することができる)、ACK/NAKフィールド1040(例えばハンドシェイクで用いる)、レーン識別子フィールド1045(例えば、その最下位ビットやレーン逆転等によりレーンを特定する)、および、予約フィールドを含んだその他のフィールド、と通信するために用いられうる。いくつかの実装では、例えば、ランダムまたは擬似ランダムバイナリシーケンス(PRBS)によって、TSの複数の部分が、スクランブルされうる。一例において、TSヘッダ1010は暗号化されず、その一方で、TSの残り部分(または本体(1050など))は、TSのこれらの複数の部分を、特に、PRBSでXORすることにより、例えば、スクランブルされる。
【0090】
1つの実装では、TSは16バイト長(16)であってよく、TSヘッダは、TSの第1のバイト(即ちバイト0)を占有してよい。TSペイロードは、スクランブルされ、残りの15バイトを占有することができる。1つの例示の実装において、TSの尾部またはサフィックスは、TSの最後の数バイトを含んでよい。例えば、一例において、スクランブル処理同期フィールド1030は、少なくともTSの3バイト、例えばTSのバイト6〜8、を占有してよい。この特定の実装では、TSの尾部ビット(例えば、バイト9〜15)は、予約ビット(例えば、1055)として維持されてよい。バイト6〜15のビットは全て0に設定されうる。
【0091】
いくつかの実装ではHPIはTSヘッダ(例えば、1010)の使用をサポートすることができ、複数のキー初期化パラメータのために、TSペイロードに代えて、または、に加えて、使用されうる。いくつかの実装において、TSペイロードは、ACKやレーン数等の初期化パラメータを交換するために用いられてよい。レーン極性を伝えるために複数のDCレベルを用いてもよい。しかしながら、いくつかの実装では、HPIは、複数のキーパラメータのために、TSヘッダ(例えば1010)に複数のDCバランスされたコードを実装することができる。例えば、TSヘッダがアンスクランブルされるような複数の例では、利用可能なTSヘッダコードが、TSヘッダフィールド(例えば、1035、1040、1045)に出現する「1」の個数が「0」の個数と実質的に等しくなるように規定されうる。ランダムまたは擬似ランダムバイナリシーケンスに対してビットをXORすることでTSペイロードのビットをスクランブル処理することにより、DCバランスが、TSの残り部分(例えば、TSペイロード)で実現される。
【0092】
1つの例示の実装において、PRBSシーケンスは、少なくとも23ビット(PRBS23)を使用することができる。PRBSは、特定の選択された多項式に従って、生成されうる。一例において、PRBSは、線形フィードバックシフトレジスタ(LFSR)のような、類似のビットサイズやセルフシードストレージ要素により生成されうる。LFSRは、8Mbの長さまでPRBSシーケンスを生成することが可能な23ビットフィボナッチLFSRでありうる。PRBSは、シーケンスの終わりに続いて反復することができる。いくつかの実装では、PRBS23シーケンスの全体が、例えば、HPIのリンクの初期化で用いられるスーパーシーケンスに含まれるトレーニングシーケンスのスクランブル処理に用いることができる。
【0093】
PRBSシーケンスの全長を用いることができる一方で、いくつかの実装では、HPIは、利用可能な様々な長さのPRBSシーケンスの使用を許容すること(例えば、PRBS23シーケンスの一部分のみの使用)をサポートできる。いくつかの実施例において、デバイスのコントローラは、PRBSシーケンスの全長の一部分だけが使用されることを特定することができる。例えば、このことは、潜在的な他のアプリケーションの中でも特に、ビットシーケンスの再現性が望ましいようなアプリケーションの試験では、好ましい。ソフトウェアベースのコントローラは、適用されるべき様々な長さのPRBSを特定できる。例えば、デバイスのBIOSは、そのリンクで適用されるべきPRBS長さを特定することができる。いくつかの実装では、例えば、冗長なPRBSシーケンスの便益を最大化するために、PRBSシーケンスの全長を使用することが、デフォルトの設定であり得る。
【0094】
送信リンク状態(TLS)でのレーントラヒックおよびトレーニングシーケンスは、特定の最小長(例えば、23ビット)のPRBSでスクランブルされうる。ストリームへ適用されるべき開始シードは、そのリンクのPRBSの電気的な便益を強めるべく、レーン間で変化させられうる。1つの例示の実装において、PRBSは、(x
23+x
21+x
16+x
8+x
5+x
2+1)のような、6タップ生成器多項式を実装する23ビットフィボナッチLFSRにより生成することができる。
【0095】
8を法とした場合のレーン数に対する(スクランブラ/デスクランブラ初期化での)開始シード値は、任意の値、例えば8つの16進値であってよく、それぞれの値は、そのリンクの複数レーンの2つまたは3つに関連する。そのようなシードの使用は、複数のレーン間でのPRBSの回転(またはスタガリング(staggering))をもたらすことができる。偶数レーンPRBSが奇数レーンのPRBSのXORから得られるという特質を用いることにより、LFSRの個数を減らすことができる。EIEOSおよびトレーニングシーケンスのヘッダは、スクランブルされない。各レーンのスーパーシーケンスのエントリポイントは、各レーンの異なるポイントで(例えば、送信機が駆動を開始する場所で)初期化されうる。これにより、電力配信システムで雑音を低減するべく、複数レーンを互い違いにオンさせることができる。実際に、各レーンは、LFSRの特有の例(インスタンス)を有しうる。スタガリング時間は、オンされているレーンの個数によって変えることができ、初期化の間は、実装依存であってよい。これらは、部分送信幅状態終了に対するタイミング図およびタイマプロファイルで規定されうる。さらに、高速トレーニングシーケンス(FTS)(以下でも論じられる)が、同様に、レーンにより回転されてよい。
【0096】
いくつかの例では、スクランブル処理は、送信機の電力供給ノイズを低減し、よりリッチな周波数スペクトルを受信機に提供することができる。スクランブラは、送信された第1のEIEOSによって初期化されうる。デスクランブラは、例えば、セルフシードにより、スクランブラに同期されうる。例えば、受信した23ビットパターンは、シードとして、TSのフィールドへ埋め込まれうる。一例において、23ビットシードは、スクランブル処理同期フィールド(例えば1050)のビットのスクランブル処理から、特定されうる。受信機は、シード値を使用して、受信したTSをスクランブル処理するために用いられる具体的なPRBS位置を特定することができる。例えば、受信機はシードを特定し、そして、送信機で用いられるPRBSと同期するためにそのシードを自身のLFSRへと読み込むことができる。いくつかの例では、受信機は、自身のLFSRへのシードとする目的で、スーパーシーケンスの中の多数のスクランブル処理同期フィールドまたは多数のTSを読み取ってよい。しかしながら、送信機のPRBSを検出し同期すると、受信機は、とりわけそのリンクの初期化中に、複数のスーパーシーケンスの中で送信された全ての後続のTSと同様に複数のTSの残り部分を、デスクランブル処理しうる。
【0097】
スーパーシーケンスは、レーンでのビットロックおよび同期を容易にするために用いられうる。上述したように、スーパーシーケンスの少なくとも一部がスクランブルされうる。
図8の議論に戻ると、検出スーパーシーケンスは、受信したビットストリームのビットのおよびバイトの端部を検出またはロックし、どのバイトがそのスーパーシーケンスで送信されたかを特定するために、受信機によって用いられ得る。例えば、EIEOSおよびTSヘッダは、スクランブル処理されず、受信機がスーパーシーケンスをより速くロックするアシストをすることができる。追加的に、スーパーシーケンスは、EIEOS(およびスーパーシーケンスの開始)が、相対的に短い周波数で反復することを可能とするように規定されうる(例えば、第1のEIEOSが正確には検出されなかった場合に、受信機が、より速くEIEOSを検出する別の機会を可能とする)。例えば、一例において、スーパーシーケンスは、1000UI毎にまたはそれより短く、反復するよう規定されうる。そのようなスーパーシーケンスは、さらに、初期化の間において、TSロック、レイテンシ調整および他の動作を単純化するのと同様に、よりランダム化された遷移を可能とする。
【0098】
追加的に、EIEOSおよびTSヘッダをアンスクランブルのままとすることにより、バイトロックが生じることを可能とし、かつ、後続のバイトおよびシンボル(スクランブルされたTSシンボルを含む)の位置を受信機が特定することを許容できる。例えば、アンスクランブルされたTSヘッダの端部が特定され、それによりまた、スクランブル処理同期フィールド(例えば、1050)の開始(例えば、TSヘッダの端部からシンボルへのバイト数を単純にカウントすることにより)が特定されうる。スクランブル処理同期フィールドにおけるPRBSシードを検出すると、受信機は、次に来るPRBSのパターン値を知り、また、後続のスクランブル処理同期フィールド(例えば、1050)の値を予測する。従って、PRBSへとロックすると、受信機はさらに、スクランブル処理同期フィールド(例えば、1050)の値を使用することができ、適応化、デスキューおよびその他のタスクのような他の複数のコンフィギュレーションタスクを促進する。
【0099】
マルチレーンにおける複数のリンクでは、複数のシンボルが送信機によって、全レーンで同時に送信されうるが、しかしながら、リンク間のスキューは、受信機に同時には到達しないいくつかのシンボルと共に現れうる。例えば、スキューのソースとしては、特に、チップ差動ドライバおよび受信機、プリント配線板のインピーダンス変動、レーンのワイヤ長不整合、を含んでよい。一実施形態では、HPIは、複数のレーンをデスキューするための進化した論理を提供する。一例として、TSロック後のTS境界が、複数のレーンをデスキューするために用いられうる。例えば、TSロックは、スキューの検出(例えば、あるレーンでTSが、そのリンクにおける複数のレーンのうちの別のレーンで別のTSが到着するよりも、遅く到着する)に用いられうる。EIEOSが、また、スキューを検出するために用いられうる。さらには、同期されたPRBSパターンの予測可能性を用いて、ペイロードの特定の複数時点の間におけるLFSRでの複数のレーンPRBSパターンを比較することにより、HPIのいくつかの実装がデスキューしてよい。さらに、いくつかの例では、トレーニングシーケンスのスクランブル処理が再初期化されてよく、そして、特にトレーニングシーケンスをやり直す間にPRBS値の表の検索を行うことでデスキューが実行されうる。そのようなデスキューは、例えば、TSを検出する能力が欠如したテストチップや、特にデスキューを管理するステートマシンで有用でありえる。
【0100】
スキューを検出すると、HPI論理(例えば、スソフトウェアでサポートされたコントローラを通じて提供される)は、あるリンクにおいて、各レーンで他の複数のレーンに対するスキューを特定し、そして、そのスキューを排除するように試みるべくそれらのレーンを調整することができる。例えば、「より速い」レーンは、レーン間スキューにおいて検出された遅延に基づいて人為的に遅らされ(またはこれに代えて、より遅いレーンが速くされる(例えばデータパスのレイテンシを低減することにより))、その遅れた「より速い」レーンと実質的に同時に到着した「より遅い」レーンでのシンボルを調整することができる。
【0101】
適応化の場合、レーンの電気的特性が、例えば送信機と受信機との間で送信されるサンプルデータに基づいて、送信機と受信機との間で調整されうる。例えば、受信機の適応化としては、リンクに対するレーンの適応化を行うべく受信機での電気的特性を調整する受信機において、論理を用いてデータパターンを受信機へ送信する送信機を含むことができる。送信機の適応化には、受信機へサンプルデータを送信する送信機と、レーンの適応化を行うべく送信機で調節を行うための送信機によって用いられうる送信機へとフィードバックを送信する受信機とを含むことができる。受信機は、送信機でなされた調節に基づいて、その送信機へフィードバックの送信を継続することができる。
【0102】
一例において、適応化サンプルデータが、スクランブルされたTSデータを通じて実装されうる。一例として、適応化状態への迂回と共に、スクランブル処理に固定化UIパターンが使用されてよい。しかし、PRBS23と共にTSをスクランブル処理することより、迂回なしで受信機の適応化が実行されてよい。さらに、クロックリカバリおよびサンプリングの間、オフセットおよびその他の複数のエラーが、低減されてよい。ロングPRBSシーケンス(例えば、PRBS23)を通じて提供されるランダム性により、適応化のための有効なサンプルストリームを証明できる。さらに、いくつかの実装では、レーンは、低速モードで動作するように設定され、そのレーンで受信したサンプルデータを分析し適応化する論理をアシストすることができる。レーン特性を適応化を通じて承認すると、適応化された特性は、そのリンクの初期化に設定されかつ適用されうる。
【0103】
ひとたびリンクが成功裏にキャリブレーションされ、コンフィギュレーションされると、初期化が終了し、フリットの送信が始まる送信リンク状態(TLS)へと遷移できる。HPIのいくつかの実装では、TLSへの遷移は、システムでの気まぐれな配列(planetary alignment)に基づいてよい。例えば、気まぐれに配列された信号は、TLSへの遷移の機会を示しうる。スーパーシーケンス、EIEOSまたはTLSの端部で遷移するのではなく、HPIのいくつかの実装では、初期化とTLSへの遷移とを終了するために、気まぐれな配列に従って送信されるデータシーケンスの開始(SDS)シンボルを利用することができる。一例においてSDSは、初期化ビットストリームの任意の場所で送信されうる。従って、受信機は、SDSに対する受信ビットを継続してスキャンすることができ、気まぐれな配列に従って、初期化の終了を加速する。
【0104】
一例において、例示的なEIEOSは、反復FF00信号のような低周波数クロック信号を、エミュレートできる。例示的なSDSは、いくつかの実装では、反復するF0信号を含みうる。従って、そのような例では、EIEOS内のエイリアスのリスクが最小となりうるので、EIEOSの中間で送信されたSDSを検出することは、相対的に特定が単純である。しかしながら、TSペイロードのスクランブル処理および、TSデータのでたらめさの結果により、SDSのいくつかの形態におけるエイリアスのリスクが導入されるかもしれない。いくつかの実装では、PRBSが生成されてよく、これにより、多数のビットからなる任意の特定期間をこえてSDSをエイリアスしない。さらに、尾部またはサフィックスがTSで提供されてよく、例えば、TSの最後のバイトを用いてPRBSを、そのサフィックスの0値とXORとなるようにし、そのTSの終端部分でアンスクランブルされたPRBSを効率的に示す。サフィックスが十分に長い場合、スクランブルされるサフィックスの中で反映されるPRBS値は、SDSが、あるTSのスクランブル処理されたペイロードにおいてエイリアスされることを不可能にする。例えば、一例において、SDSは、F0値が10個連続したバイト(即ち、1111000011110000...)として定義されてよい。さらに、例えば、
図10の例で示されたように、7個の予約バイトのサフィックスが、TSで提供され、その直後にスクランブル処理同期フィールド(例えば、1050)の3バイトが続くことができる。結果として、ゼロとなったTSサフィックスの長さ(例えば全10バイト)が選択されたSDS値に対応し(例えば、F0の10バイト)、これは、特に、選択されたスクランブル処理PRBS(例えば、PRBS23)の内には現れないものとして選択されたものである。例えば、特に、PRBS23(または別のPRBS)の実装で使用される多項式に基づいて、PRBS23での非10バイトシーケンスは、選択されたSDS値と完全に等しくなるであろう。
【0105】
いくつかの実装では、コンフィギュレーション状態からTLSへ抜け出す場合に、送受信LFSRは、送信機と受信機との間でやり取りされたSDSによって再初期化されうる。例えば、8つの開始PRBSシードが、レーン0…7、12…19および8…11(例えば、最初の4つのみ)へと、それぞれ適用されうる。さらには、リンクでのレーン逆転およびレーンでの極性反転は、例えばEIEOSの後のTSのアンスクランブルされた第1バイト(TSヘッダなど)を、特に、一連の可能な値と比較することにより、決定されてもよい。
【0106】
一実施形態では、クロックがデータへ埋め込まれ、このため、別個のクロックレーンはなくなる。フリットは、埋め込みクロックに従って送信されうる。さらに、複数のレーンにわたって送信されるフリットは、クロックリカバリを容易にすべくスクランブル処理されうる。一例として、受信機クロックリカバリユニットは、サンプリングクロックを受信機へ配信することができる(即ち、受信機はデータからクロックを回復し、入ってくるデータをサンプルするためにそれを使用する)。いくつかの実装では、複数の受信機が継続して入ってくるビットストリームに対して適応する。クロックを埋め込むことにより、潜在的にピン配列を低減できる。しかしながら、インバンドデータにクロックを埋め込むことで、インバンドリセットに着手するやり方を変更することができる。一実施形態では、ブロッキングリンク状態(BLS)が初期化の後に使用されうる。また、他の複数の考慮すべき事項の中でもとりわけ、EOSスーパーシーケンスがリセットを容易にすべく、初期化中に使用されてよい。埋め込みクロックは、リンク上の複数デバイスの間で共通であってよく、共通に動作可能なクロックが、そのリンクのキャリブレーションおよびコンフィギュレーションの動作の間に設定されうる。例えば、複数のHPIリンクは、複数のドリフトバッファを用いて共通クロックを参照することができる。そのような実装により、その他の潜在的利点の中でも特に、複数の非共通の参照クロックが用いられるエラスティックバッファよりも、より低いレイテンシを実現することができる。さらに、複数の参照クロック配信セグメントが、規定された範囲内で適合されてよい。
【0107】
上記したように、HPIリンクは、デフォルトの電力投入や初期化などのための「低速モード」を含んだ複数の速度で動作可能である。各デバイスにおける動作可能な(または「速い」)速度またはモードは、静的にBIOSによって設定されうる。リンク上の共通クロックは、そのリンクのいずれかの側の各デバイスのそれぞれの動作速度に基づいて、構成されうる。例えば、リンク速度は、特に、2つのデバイスの動作速度のうちのより遅い方に基づくことができる。任意の動作速度の変更が、ウォームリセットまたはコールドリセットに付随して起ってよい。
【0108】
いくつかの実施例において、電力オンの場合、リンクは、例えば、伝送速度100MT/sの低速モードへ初期化する。するとソフトウェアは、そのリンクの動作速度のために2つの側を設定し、初期化を開始する。他の例においては、例えば、低速モードが存在しない場合や利用不可能である場合に、サイドバンドメカニズムを使用して、そのリンク上の共通クロックを含んだリンクを設定することができる。
【0109】
一実施形態では、低速モード初期化フェーズは、動作速度として、同じエンコード、スクランブル処理、トレーニングシーケンス(TS)、状態等を使用することができるが、潜在的にはより少ない特徴(例えば、電気パラメータ設定をしない、適応化をしない、等)を使用する。低速モードのオペレーションフェイズは(他の実装ではそうではなくてもよいが)、また潜在的に、同じエンコード、スクランブル処理等を用いることができるが、動作速度(例えば、低電力状態が無い)と比較して、より少ない状態および特徴を有してよい。
【0110】
さらに、低速モードは、そのデバイスが有しているフェーズロックループ(PLL)クロック周波数を用いて実装されうる。例えば、HPIは、PLLクロック周波数を変更することなく、エミュレートされた低速モードをサポートすることができる。設計によっては低速および高速の実現のために別個のPLLを用いてよいが、いくつかのHPIの実装においては、低速モードの最中にPLLクロックを同じ高速動作速度で実行することを許容することで、エミュレートされた低速モードを実現できる。例えば、遅い高クロック信号と、その次に遅い低クロック信号とをエミュレートすべく、送信機は、ビットを複数回繰り返すことによってより遅いクロック信号をエミュレートできる。受信機は、次に、受信信号をオーバーサンプリングし、ビット反復によってエミュレートされた複数の端部の場所を探し、ビットを特定する。そのような実装では、PLLを共有する複数のポートが、低速度および高速度で同時に終了してよい。
【0111】
いくつかのHPIの実装では、リンク上での複数レーンの適応化がサポートされ得る。物理層は、受信機の適応化、および、送信機または送信機の適応化、の両方をサポートできる。受信機の適応化において、あるレーンの送信機は、サンプルデータを受信機へと送信し、受信ロジックは、そのレーンの電気的特性の欠点および信号品質を特定するべく、それらのデータを処理することができる。すると受信機は、そのレーンのキャリブレーションの調節をすることができ、受信したサンプルデータの分析に基づいてそのレーンを最適化する。送信機の適応化の場合には、受信機は再度サンプルデータを受信し、そのレーンの品質を説明するメトリックを展開するが、この場合、そのメトリックを(例えば、ソフトウェア、ハードウェア、埋め込み、サイドバンド、またはその他のチャネル等の裏チャネルを用いて)送信機へ通信し、送信機がフィードバックに基づきそのレーンを調節することを可能とする。
【0112】
リンク上の両方のデバイスが同じ参照クロック(例えばref clk)で動作するので、融通性のあるバッファを省略することが可能である(任意のエラスティックバッファが迂回されるか、または、できるだけ最低のレイテンシを有するドリフトバッファとして用いられてよい)。しかしながら、各レーンで位相調節またはドリフトバッファを使用することができ、遠隔クロックドメインからローカルクロックドメインへと、各受信者へビットストリームを伝達する。ドリフトバッファのレイテンシは、全てのソースからのドリフトの合計を電気的な仕様(例えば、電圧、温度、参照クロックのルート不整合によりもたらされた残差SSCなど)で処理するのに十分であってよいが、移送遅延を低減するために可能な限り小さくてよい。ドリフトバッファが浅すぎる場合、ドリフトエラーは、一連のCRCエラーとして生じ現れうる。その結果、いくつかの実装では、ドリフトアラームが提供され、特に、実際のドリフトエラーが生じる前に物理層リセットを初期化することができる。
【0113】
いくつかのHPIの実装では、同じ基準参照クロック周波数で動作する2つの側をサポートしてよいがppmの差異はあってよい。この場合、周波数調節可能な(または融通性のある)バッファが必要であってよく、特に、拡張BLS窓の最中または、定期的に生じてよい特別なシーケンスの最中に再調節されうる。
【0114】
HPIのPHY論理層の動作は、設けられた下層の伝送媒体から独立してよく、そのレイテンシは、他の複数の考慮すべき事項の中でも特に、リンク層でのレイテンシ調整エラーまたはタイムアウトをもたらさない。
【0115】
HPIでは、複数の外部インタフェースが設けられてよく、物理層の管理をアシストする。例えば、(ピン、ヒューズ、その他の層からの)複数の外部信号、複数のタイマ、複数の制御および状態レジスタが設けられうる。入力信号は、PHY状態に対していつでも変化することができるが、物理層により各状態の特定の時点で観察される。例えば、(下記で導入されるように)変化する配列信号が受信されてよいが、いくつかの例の中でも特に、リンクが送信リンク状態へと入った後には何の効力も持たない。同様に、複数のコマンドレジスタ値が、特定の時点でのみ、複数の物理層エンティティによって観察されうる。例えば、物理層論理は、値のスナップショットを取り、後続の動作でそれを使用することができる。その結果、いくつかの実装では、コマンドレジスタの更新は、変則的な挙動を回避するために、複数の特定期間(例えば、送信リンク状態において、リセットキャリブレーションで保持をしている時、低速モードの送信リンク状態において)からなる限定されたサブセットに関連付けられうる。
【0116】
複数の状態値はハードウェア変化を追跡するので、読み値は、それらがいつ読み取られたかに依存しうる。しかしながら、リンクマップ、レイテンシ、速度等のいくつかの状態値は、初期化の後、変化しなくてよい。例えば、再初期化(または、低電力リンク状態(LPLS)やL1状態、終了)は、これらを変化させてよい唯一の状況である(例えば、特に、TLSでのハードレーンの失敗は、再初期化がトリガされるまで、リンクの再設定をもたらさないでよい)。
【0117】
インタフェース信号は、外部用であるが物理層の挙動に影響を与える信号を含みうる。そのようなインタフェース信号は、例えば、エンコード信号およびタイミング信号を含みうる。インタフェース信号は、設計に固有であるかもしれない。これらの信号は、入力または出力でありうる。特に、セマフォおよびプレフィックスEOのような、いくつかのインタフェース信号はアサーションエッジ毎に1回アクティブとなってよく、即ち、それらの信号は、特に、デアサートされ、再び効力を得るべく再アサートされてよい。例えば、表1は、例示的な機能の例示的なリストを含む。
【表1】
【0118】
CSRタイマのデフォルト値は、ペアで提供されてよく、1つは低速モードに対しするものであり、もう1つは動作速度に対するものである。いくつかの例では、値0は、タイマを無効化する(即ち、タイムアウトが生じないようにする)。タイマは、以下の表2に示すようなものを含みうる。複数の第1のタイマが、ある状態における予期される動作の時間を測定するために用いられうる。複数の第2のタイマは、進行中ではない複数の初期化をアボートするために、または、自動化された試験機器(またはATE)モードにおいて、正確な時間で状態遷移を進めるために用いられ、場合によっては、複数の第2のタイマは、ある状態において、複数の第1のタイマよりも、ずっと大きくなりうる。指数関数的なタイマのセットは、末尾にexpが付され、タイマ値は、2のフィールド値だけべき乗される。線形タイマの場合、タイマ値がフィールド値である。いずれのタイマも、異なる粒度を使用することができる。さらには、電力管理セクションにおけるいくつかのタイマは、タイミングプロファイルと呼ばれるセットでありうる。これらは同名のタイミング図と関連してよい。
【表2】
【0119】
コマンドおよび制御レジスタが設けられてよい。制御レジスタは、レイト動作(late action)であってよく、いくつかの例では、ソフトウェアによって読み取られまたは書き込まれてよい。レイト動作の値は、リセット中、継続して有効であるうる(例えば、ソフトウェア対応からハードウェア対応のステージへとパススルーする)。制御セマフォ(接頭されたCP)はRW1Sであり、ハードウェアによってクリアされうる。制御レジスタは、ここで述べた任意の項目を実行するために使用されてよい。それらは、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせにより、変更可能かつアクセス可能であってよい。
【0120】
状態レジスタは、ハードウェアの変更(ハードウェアによる書込みおよび使用)を追跡するために設けることができ、読み取り専用でありうる(しかし、デバッグソフトウェアが、また、それらへと書き込まれてよい)。そのようなレジスタは、相互運用性に影響を与えず、典型的には、多くの私的な状態レジスタで補完されうる。状態セマフォ(接頭されたSP)は、ソフトウェアによりクリアされ、その状態を設定する複数の動作をやり直してよいため、強制的に命令されてよい。(リセットでの)デフォルト手段の初期値は、これらの、初期化に関連する状態ビットのサブセットとして提供されてよい。初期化アボートでは、このレジスタは記憶構造へとコピーされてよい。
【0121】
ツールボックスレジスタが設けられてよい。例えば、物理層におけるテスタビリティツールボックスレジスタは、パターン生成、パターンチェックおよびループバック制御メカニズムを提供しうる。高レベルアプリケーションは、マージンを決定するために、これらのレジスタを、電気パラメータと共に活用することができる。例えば、相互接続組込みテストでは、マージンを決定するためにこのツールボックスを使用してよい。送信機の適応化のため、これらのレジスタは、特に、先のセクションで記載された具体的なレジスタと共に使用されうる。
【0122】
いくつかの実装では、HPIは、信頼性、利用度、および物理層を利用するサービス性(RAS)機能をサポートする。一実施形態では、HPIは、ホットプラグおよびホットリムーブを1または複数の層でサポートし、これはソフトウェアを含んでよい。ホットリムーブはリンクを休止することができ、取り除かれるべきエージェントに対して初期化の開始状態/信号がクリアされうる。遠隔のエージェント(即ち、取り除かれていないもの(例えば、ホストエージェント))は、低速度に設定され、また初期化信号がクリアされうる。インバンドリセット(例えば、BLSを通して)は、両方のエージェントを、キャリブレーションリセット状態(CRS)のようなリセット状態で待機させることができ、特に、取り除かれるべきエージェントが取り除かれうる(または、ターゲットとされるピンリセットにおいて保持され、電力がダウンされる)。実際には、上記イベントのいくつかは省略されてよく、追加イベントが追加されうる。
【0123】
ホットアドは、デフォルトで低速であってよい初期化速度を有することができ、初期化信号は、追加されるべきエージェントで設定されうる。ソフトウェアは、速度を遅く設定することができ、遠隔のエージェントでの初期化信号をクリアしてよい。リンクが低速モードにまで達し、ソフトウェアは動作速度を決定できる。場合によっては、遠隔でのPLL再ロックは、この時点では実行されない。動作速度は両方のエージェントで設定され、適応化のために(もし過去になされていないのであれば)イネーブルが設定されうる。初期化開始インジケータが両方のエージェントでクリアされ、インバンドBLSリセットが、両方のエージェントをCRSで待機させうる。ソフトウェアは、(追加されるべき)エージェントのウォームリセット(例えば、ターゲットのまたは自己リセット)をアサートすることができ、これによりPLLに再ロックさせてよい。ソフトウェアは、また、初期化開始信号を、任意の周知の論理により設定してよく、さらには遠隔で設定してよい(これにより、受信機検出状態(RDS)へと進ませる)。ソフトウェアは、その追加エージェントのウォームリセットをデアサートすることができる(これにより、RDSへと進ませる)。すると、リンクは、いくつかの例の中でも特に、動作速度で送信リンク状態(TLS)へ(適応信号が設定されていたらループバックへ)と初期化してよい。実際には、上記イベントのいくつかは省略されてよく、追加イベントが追加されうる。
【0124】
データレーンでの失敗のリカバリがサポートされうる。一実施形態では、HPIにおけるリンクは、自身を全幅よりも狭く設定する(例えば、全幅の半分よりも小さくする)ことにより、単一レーンでのハードエラーに対して回復機能を有することができ、これにより、欠陥のあるレーンを除外できる。一例として、リンクステートマシンによって、その設定がなされ、不使用のレーンはコンフィギュレーション状態ではオフにされうる。結果としてフリットが、いくつかの例の中でも特に、より狭い幅で送信されてよい。
【0125】
HPIのいくつかの実装では、レーン逆転がいくつかのリンクでサポートされうる。例えば、レーン逆転とは、受信機レーンn/n−1/n−2・・・に接続された送信機レーン0/1/2・・・を意味しうる(例えば、nは、19や7などと等しくてよい)。レーン逆転は、TSヘッダのフィールドにおいて特定がなされるように、受信機において検出されうる。受信機は、論理レーン0・・・nに対する物理レーン0・・・nを用いてポーリング状態を開始することによって、レーン逆転を処理することができる。従って、あるレーンへの参照とは、論理レーン数への参照であってよい。故に、基板設計者は、より効率的に物理的または電気的設計を定めてよく、HPIは、ここで述べたように、仮想的なレーン割当として機能してよい。さらに、一実施形態では、極性が反転されてよい(即ち、差動送信機+/−は、受信機の−/+に接続される)。一実施形態では、極性は、ポーリング状態で、1または複数のTSヘッダフィールドから受信機で検出され、そして処理されうる。
【0126】
図11を参照すると、マルチコアプロセッサを含むコンピューティングシステムのためのブロック図が示される。プロセッサ1100は、マイクロプロセッサ、組込みプロセッサ、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、コードを実行するその他のデバイスのような任意のプロセッサまたは処理デバイスを有する。一実施形態では、プロセッサ1100は、少なくとも2つのコア1101および1102を有し、これらは、非対称コアまたは対称コアを有してよい(図示された実施形態)。しかしながら、プロセッサ1100は、任意の数の対称または非対称の処理要素を含んでよい。
【0127】
一実施形態では、処理要素は、ハードウェアまたは論理を参照して、ソフトウェアスレッドをサポートする。ハードウェア処理要素の例としては、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテクスト、コンテクストユニット、論理プロセッサ、ハードウェアスレッド、コア、および/または、実行状態やアーキテクチャ状態のようなプロセッサの状態を保持することのできる他の任意の要素を有する。言い換えると、一実施形態では、処理要素は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、その他のコードのようにコードと別々に関連付られることが可能な任意のハードウェアを指す。物理プロセッサ(またはプロセッサソケット)は、典型的には集積回路を指し、潜在的に、コアやハードウェアスレッドのような任意の数の処理要素を有してよい。
【0128】
コアはしばしば、個々のアーキテクチャ状態を維持することが可能な集積回路に配置されたロジックを指し、この場合、別々に維持されるアーキテクチャ状態は、少なくともいくつかの専用化された実行リソースと関連する。コアとは対照的に、ハードウェアスレッドは典型的には個々のアーキテクチャ状態を維持することが可能な集積回路に配置された任意の論理を指し、この場合、別々に維持される複数のアーキテクチャ状態は、実行リソースへのアクセスを共有する。見て理解できるように、特定のリソースが共有され、その他があるアーキテクチャ状態へと専用化された場合に、ハードウェアスレッドおよびコアの間の用語体系のラインが重なり合う。それでもしばしば、コアおよびハードウェアスレッドは、オペレーティングシステムによって、個別の論理プロセッサとして見なされ、ここでオペレーティングシステムは、各論理プロセッサにおいて個別に動作をスケジューリングすることができる。
【0129】
図11に図示されるように、物理プロセッサ1100は2つのコア、コア1101、1102を有する。ここでは、コア1101および1102は、対称コア、即ち、同じ構成、機能ユニットおよび/または論理を有するコアだと見なされる。別の実施形態では、コア1101がアウト・オブ・オーダプロセッサコアを有し、他方で、コア1102がイン・オーダプロセッサコアを有してよい。しかしながら、コア1101および1102は、ネイティブコア、ソフトウェア管理されたコア、命令セットアーキテクチャ(ISA)を実行するように適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行するように適合されたコア、協調設計コア、他の周知のコアのような任意のタイプのコアから個別に選択されてよい。ヘテロジニアスなコア環境(即ち、非対称コア)では、バイナリ変換のような、ある変換形態が使用されてよく、一方又は両方のコアで、スケジューリングまたはコードの実行をする。さらなる議論はまだされていないが、コア1102における複数のユニットは図示された実施形態において同様に動作するので、コア1101の中の図示された複数の機能ユニットが、以下でさらに詳細に述べられる。
【0130】
図示されているように、コア1101は、2つのハードウェアスレッド1101a、1101bを有し、これらはまた、ハードウェアスレッドスロット1101a、1101bとも称されてよい。従って、一実施形態ではオペレーティングシステムのようなソフトウェアエンティティは、潜在的にプロセッサ1100を、4つの別個のプロセッサ、つまり、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサまたは処理要素とみなす。上記で示唆されるように、第1のスレッドはアーキテクチャ状態レジスタ1101aに関連付けられ、第2のスレッドはアーキテクチャ状態レジスタ1101bに関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ1102aに関連付けられてよく、第4のスレッドはアーキテクチャ状態レジスタ1102bに関連付けられてよい。ここで、上述のように、複数のアーキテクチャ状態レジスタ(1101a、1101b、1102aおよび1102b)のそれぞれは、処理要素、スレッドスロット、またはスレッドユニットとして称されてもよい。図示されるように、アーキテクチャ状態レジスタ1101aはアーキテクチャ状態レジスタ1101bで複製され、個別のアーキテクチャ状態/コンテクストが論理プロセッサ1101aおよび論理プロセッサ1101bに対して格納されることが可能となる。コア1101において、アロケータおよびリネームブロック1130における、命令ポインタおよびリネーム論理のような、より小さな他のリソースが、また、スレッド1101aおよび1101bのために複製されてよい。リオーダ/リタイヤユニット1135におけるリオーダバッファのようないくつかのリソース、ILTB1120、読み込み/書込みバッファ、およびキューが、パーティショニングを通じて共有されてよい。複数の汎用内部レジスタ、1または複数のページテーブルベースレジスタ、低レベルデータキャッシュおよびデータTLB1115、1または複数の実行ユニット1140、アウト・オブ・オーダユニット1135の複数の部分のようなその他のリソースが、潜在的に、完全に共有される。
【0131】
プロセッサ1100はしばしば他のリソースを有し、これらは完全に共有されてよく、またはパーティショニングを通して共有されてよく、または、処理要素により/対して専用化されてよい。
図11では、そのプロセッサの例示のロジックユニット/リソースを有する純粋に例示的なプロセッサが図示される。プロセッサは、図示されていない他の周知の機能ユニット、論理およびファームウェアを有してよいのと同様に、これらの機能ユニットのいずれを有しても省略してもよい。図示されているように、コア1101は、単純化され代表的な、アウト・オブ・オーダ(OOO)プロセッサコアを有する。しかし、異なる実施形態では、イン・オーダプロセッサが使用されてよい。OOOコアは、実行されるべき/取り出されるべき複数の分岐を予測する分岐ターゲットバッファ1120と、命令に対するアドレス変換エントリを格納する命令変換バッファ(I−TLB)1120と、を有する。
【0132】
コア1101はさらに、フェッチされた要素をデコードするためのフェッチユニット1120に結合されるデコードモジュール1125を有する。一実施形態では、フェッチ論理は、スレッドスロット1101a、1101bに関連する個別のシーケンスをそれぞれ有する。通常、コア1101は、プロセッサ1100で実行可能な命令を規定/特定する、第1ISAに関連付られる。しばしば、第1ISAの一部である機械コード命令は命令の一部分を有し(オペコードとも称される)、これは、実行されるべき命令または動作を参照/特定する。デコード論理1125は、これらの命令をそれらのオペコードから認識し、かつパイプラインにおいて第1ISAによって規定されるような処理を行うためにデコードされた命令をパスするための回路を、有する。例えば、より詳細に以下で議論されるように、一実施形態では、デコーダ1125は、トランザクション命令等の特定の命令を認識すべく設計または適応化された論理を有する。デコーダ1125による認識の結果として、アーキテクチャまたはコア1101は、適切な命令に関連したタスクを実行するために、特定の事前に定義された動作を行う。ここで記載される任意のタスク、ブロック、動作、および方法が単一のまたは複数の命令に応じて実行されてもよいことを指摘しておくことは重要であり、命令のいくつかは、新たな、または、古いものであってよい。一実施形態では、複数のデコーダ1126は、同じISA(またはそのサブセット)を認識する。この代わりに、ヘテロジニアスなコア環境では、複数のデコーダ1126は、第2ISA(第1ISAのサブセットまたは区別されるISAのいずれか)を認識する。
【0133】
一例において、アロケータおよびリネームブロック1130は、命令処理の結果を格納するためのレジスタファイル等のリソースをリザーブするための割り当て部を有する。しかしながら、スレッド1101aおよび1101bは、アウト・オブ・オーダ実行が潜在的に可能であり、この場合、アロケータおよびリネームブロック1130は、命令の結果を追跡するためのリオーダバッファ等の他のリソースをリザーブする。ユニット1130はまた、プログラム/命令参照レジスタを、プロセッサ1100の内部の他のレジスタへとリネームするための、レジスタリネーム部を有してよい。リオーダ/リタイヤユニット1135は、上述のリオーダバッファ、読み込みバッファ、書込みバッファのようなコンポーネントを含み、アウト・オブ・オーダ実行と、その後、アウト・オブ・オーダで実行された命令のイン・オーダ・リタイヤとをサポートする。
【0134】
1または複数のスケジューラおよび実行ユニットブロック1140は、一実施形態では、スケジューラユニットを有し、複数の実行ユニットでの命令/動作をスケジューリングする。例えば、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートで浮動小数点命令がスケジューリングされる。実行ユニットに関連するレジスタファイルが、また、含まれており、情報命令処理の結果を格納する。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、読み込み実行ユニット、格納実行ユニット、および他の周知の実行ユニットを有する。
【0135】
低レベルデータキャッシュおよびデータ変換バッファ(D−TLB)1150は、1または複数の実行ユニット1140に結合される。データキャッシュは、データオペランドのような、要素における最近の使用/動作を格納し、それらは、潜在的に、メモリコヒーレンシ状態で保持される。D−TLBは、物理アドレス変換への最近の仮想/線形を格納する。具体的な例としてプロセッサは、物理メモリを複数の仮想ページへとブレークするために、ページテーブル構造体を有してよい。
【0136】
ここで、コア1101、1102は、オンチップインタフェース1110に関連する第2レベルキャッシュのような、より高レベルのまたはより離れた(further−out)キャッシュへのアクセスを共有する。より高レベルの、または、より離れたとは、増加した、または、1または複数の実行ユニットからさらに離れた、キャッシュレベルを指す。一実施形態では、より高レベルのキャッシュは、ラストレベルのデータキャッシュ、つまりプロセッサ1100のメモリ階層の最後のキャッシュであり、例えば第2または第3レベルデータキャッシュである。しかしながら、より高レベルのキャッシュとはそれらには限定されず、命令キャッシュと関連付けられてもよく、または、命令キャッシュを有してもよい。トレースキャッシュ、つまりは、命令キャッシュの1つのタイプが、代わりにデコーダ1125の後に結合されてよく、最近のデコードされたトレースを格納する。ここで、命令とは、潜在的には、マクロ命令(即ち、デコーダにより認識される一般的な命令)を指し、多数のマイクロ命令(マイクロオペレーション)へとデコードする。
【0137】
図示された構成では、プロセッサ1100は、また、オンチップインタフェースモジュール1110を有する。歴史的には、メモリコントローラは、以下でより詳細に述べるが、プロセッサ1100の外部のコンピューティングシステムに含まれてきた。本シナリオでは、オンチップインタフェース1110は、プロセッサ1100の外部の複数のデバイス、例えば、システムメモリ1175、チップセット(しばしば、メモリ1175に接続するメモリコントローラハブ、および、周辺機器に接続するI/Oコントローラハブを有する)、メモリコントローラハブ、ノースブリッジ、または他の集積回路、と通信する。また、このシナリオでは、バス1105は任意の周知の相互接続を有してよく、例えば、マルチドロップバス、2地点間相互接続、シリアル相互接続、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、層状プロトコルアーキテクチャ、差動バス、GTLバスである。
【0138】
メモリ1175は、プロセッサ1100に専用化され、またはシステム中の他のデバイスと共有されてよい。メモリ1175のタイプについての一般的な例としては、DRAM、SRAM、不揮発性メモリ(NVメモリ)および、他の周知のストレージデバイスを含む。デバイス1180は、グラフィックアクセラレータ、メモリコントローラハブに結合されたプロセッサ若しくはカード、I/Oコントローラハブに結合されたデータストレージ、無線送受信器、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の周知のデバイスを含んでよい。
【0139】
しかしながら、最近では、より多くの論理およびデバイスがSOC等の単一ダイ上に一体化されているように、これらのデバイスのそれぞれがプロセッサ1100に組み込まれてよい。例えば、一実施形態では、プロセッサ1100と共にメモリコントローラハブが、同じパッケージおよび/またはダイ上にある。ここで、コアの部分(オンコア部分)1110は、メモリ1175やグラフィックスデバイス1180等の他のデバイスへとインタフェースするために、1または複数のコントローラを有する。そのようなデバイスとインタフェースするための相互接続とコントローラとを備えた構成は、しばしば、オンコア(または、アンコア構成)とも称される。一例として、オンチップインタフェース1110は、オンチップ通信のためのリング相互接続と、オフチップ通信のための高速シリアル2地点間リンク1105とを有する。さらに、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ1175、グラフィックスプロセッサ1180、および他の任意の周知のコンピュータデバイス/インタフェース等の、より多くのデバイスが、単一ダイまたは集積回路に一体化されてよく、高機能で低電力消費な小さなフォームファクタを提供する。
【0140】
一実施形態では、プロセッサ1100は、アプリケーションコード1176をコンパイルし、トランスレートし、および/または最適化するべく、コンパイラ、最適化、および/または変換器コード1177を実行することが可能であって、ここで記載される装置および方法をサポートし、または、それらとのインタフェースを行う。コンパイラは、しばしば、プログラムまたはプログラムのセットであり、ソースのテキスト/コードをターゲットのテキスト/コードへと変換する。通常、コンパイラによるプログラム/アプリケーションコードのコンパイルは多重フェーズで行われ、高レベルプログラミング言語コードを、低レベルの機械またはアセンブリ言語コードへと変換すべくパスする。けれども、今なお、簡単なコンパイルのために単一パスのコンパイラが使用されてよい。コンパイラは、任意の周知のコンパイル技術を使用してよく、また、任意の周知のコンパイラ動作を実行してよく、例えば、単語解析、前処理、構文解析、セマンティクス解析、コード生成、コード変換、およびコード最適化を含む。
【0141】
より大きなコンパイラは、しばしば、多重フェーズを有するが、ほとんどの場合、これらの複数のフェーズは、2つの一般的なフェーズ内に含まれる:(1)フロントエンド、即ち、一般的には、統語的処理、セマンティクス処理、およびいくつかの変換/最適化が行われてよく、(2)バックエンド、即ち、一般的には、解析、複数の変換、複数の最適化、およびコード生成が行われる。いくつかのコンパイラは中間なものであり、コンパイラにおけるフロントエンドとバックエンドとの間の描写がぼやけたものを例示する。結果として、挿入への参照、関連づけ、生成、その他のコンパイラ動作は、任意の前述のフェーズまたはパスにおいてのみならず、コンパイラにおける他の任意の周知のフェーズまたはパスで行われてよい。例示的な事例として、コンパイラは、コンパイルの1または複数のフェーズで、動作、呼び出し、機能などを、例えばコンパイルのフロントエンドフェーズでの呼び出し/動作の挿入のように、潜在的に挿入し、その後、変換フェーズの間に、その呼び出し/動作の変換を、より低レベルのコードへと挿入する。動的コンパイルの間、コンパイラコードまたは動的最適化コードは、そのような操作/呼び出しを挿入するだけでなく、ランタイムの間の実行のためのコードを最適化してよい。特定の例示的な事例として、バイナリコード(既にコンパイルされたコード)が、ランタイムの間に動的に最適化されてよい。ここで、プログラムコードは、動的最適化コード、バイナリコード、またはそれらの組み合わせを有してよい。
【0142】
コンパイラと類似して、バイナリ変換器等の変換器は、コードを静的または動的に最適化し、および/またはコードを変換する。故に、コード、アプリケーションコード、プログラムコード、その他のソフトウェア環境の実行を参照するとは:(1)プログラムコードをコンパイルし、ソフトウェア構造を維持し、複数の動作を実行し、コードを最適化し、またはコードを変換するために、1または複数のコンパイラプログラムの、最適化コード最適化器の、または変換器の、動的または静的な実行を参照すること、(2)最適化/コンパイルがなされたアプリケーションコード等の操作/呼び出しを有するメインプログラムコードの実行を参照すること、(3)ソフトウェア構造を維持し、オペレーションに関連する他のソフトウェアを実行し、またはコードを最適化するために、メインプログラムコードと関連する、ライブラリ等のその他のプログラムコードの実行を参照すること、または(4)これらの組み合わせを参照すること、であってよい。
【0143】
図12を参照すると、マルチコアプロセッサの実施形態のブロック図が示される。
図12の実施形態に示されるように、プロセッサ1200は、複数のドメインを有する。具体的には、コアドメイン1230は、複数のコア1230A−1230N、メディアエンジン1265を含む1または複数のグラフィクスエンジンを有するグラフィクスドメイン1260、およびシステムエージェントドメイン1210を備える。
【0144】
様々な実施形態において、システムエージェントドメイン1210は、電力制御イベントおよび電力管理を処理し、その結果、ドメイン1230および1260における個々のユニット(例えば、複数のコアおよび/または複数のグラフィクスエンジン)が、独立して制御可能となり、所定ユニットで生じている活動(または非活動)を考慮して適切な電力モード/レベルで(例えば、アクティブ、ターボ、スリープ、ハイバーネイト、ディープスリープ、その他の進化的設定電力インタフェースに似た状態で)動的に動作する。ドメイン1230および1260のそれぞれは、異なる電圧および/または電力で動作してよく、さらには、複数のドメイン内の個々のユニットは、それぞれ潜在的に独立した周波数および電圧で動作してよい。3つのドメインが示されているが、本発明の範囲はこれには限定されず、他の実施形態においては追加のドメインが存在してよいことが理解されるべきである。
【0145】
図示されるように、各コア1230は、さらに、様々な実行ユニットおよび追加の処理要素に加えて、複数の低レベルキャッシュを有する。ここで、様々なコアが、お互いに、かつラストレベルキャッシュ(LLC)1240A−1240Nにおける複数のユニットまたはスライスから形成される共有キャッシュメモリへと結合され、これらのLLCはしばしば、ストレージおよびキャッシュ制御機能を有し、これらの複数コアの間だけでなく、潜在的にはグラフィクスエンジンの間においても共有される。
【0146】
見てわかるように、リング相互接続1250は、複数のコアを連結し、かつ、コアドメイン1230、グラフィクスドメイン1260およびシステムエージェント回路1210の間の相互接続を、それぞれがコアとLLCスライスとの間の連結を行っている複数のリングストップ1252A−1252Nを介して、提供する。
図12に見られるように、相互接続1250は、アドレス情報、データ情報、肯定応答情報、スヌープ/無効情報を含む様々な情報を搬送するために用いられる。リング相互接続が図示されているが、任意の周知のオンダイ相互接続またはファブリックが使用されてよい。例示的な事例として、上述したようなファブリックのいくつか(別のオンダイ相互接続、オンチップシステムファブリック(OSF)、次世代マイクロコントローラバスアーキテクチャ(AMBA)相互接続、多次元メッシュファブリック、または他の周知の相互接続アーキテクチャなど)が、同様に用いられてよい。
【0147】
さらに図示されるように、システムエージェントドメイン1210は、関連するディスプレイの制御、および、へのインタフェースを提供するディスプレイエンジン1212を含む。システムエージェントドメイン1210は、システムメモリに対するインタフェースを提供する内蔵型メモリコントローラ1220のような他のユニットを有してよい(例えば、マルチDIMMと共に実装されたDRAM、メモリコヒーレンス動作を実行するためのコヒーレンス論理1222)。マルチインタフェースは、プロセッサと他の回路との間の相互接続をさせるために存在してよい。例えば、一実施形態では、少なくとも1つのダイレクトメディアインタフェース(DMI)1216が、1または複数のPCIe(商標)インタフェース1214と同様に、提供される。ディスプレイエンジンおよびこれらの複数のインタフェースは、典型的には、PCIe(商標)ブリッジ1218を介してメモリに連結される。さらには、複数の追加のプロセッサや他の回路等の他のエージェント間での通信を提供するために、1または複数の他のインタフェースが設けられてよい。
【0148】
図13を参照すると、代表的なコアのブロック図が、具体的には
図12のコア1230のようなコアのバックエンドの複数の論理ブロックが、示される。概して、
図13に示される構造はアウト・オブ・オーダプロセッサを有しており、このプロセッサは、入力命令をフェッチするために用いられるフロントエンドユニット1370を有し、様々な処理(キャッシュ、デコード、分岐、予測など)を実行し、複数の命令/動作をアウト・オブ・オーダ(OOO)エンジン1380へとパスする。OOOエンジン1380は、デコードされた命令でさらに処理を実行する。
【0149】
具体的には、
図13の実施形態では、アウト・オブ・オーダエンジン1380は、デコードされた命令を受信する割り当てユニット1382を有し、これらの命令は、フロントエンドユニット1370からの1または複数のマイクロ命令またはuopsの形態であってよく、複数のレジスタなどのような適切な複数のリソースへと割り当てる。次に、命令は、予約ステーション1384へ提供され、このステーションは、複数の実行ユニット1386A−1386Nの1つで実行するためにリソースをリザーブしスケジューリングする。様々なタイプの実行ユニットが存在してよく、例えば、とりわけ、複数の演算ロジックユニット(ALU)、複数の読み込みおよび書込みユニット、複数のベクトル処理ユニット(VPU)、浮動小数点実行ユニットを含む。これらの異なる実行ユニットからの結果はリオーダバッファ(ROB)1388へと提供され、リオーダバッファは、複数の順序付けられていない結果を取得し、それらを正しいプログラム順序へリターンする。
【0150】
さらに
図13を参照すると、フロントエンドユニット1370とアウト・オブ・オーダエンジン1380の両方がメモリ階層の異なるレベルに結合される。具体的には命令レベルキャッシュ1372が図示され、その次には中間レベルキャッシュ1376が結合され、その次にはラストレベルキャッシュ1395が結合される。一実施形態では、ラストレベルキャッシュ1395は、オンチップユニット1390(場合によってはアンコアとも称される)のかたちで実装される。一例として、ユニット1390は
図12のシステムエージェント1210に類似する。上述したように、アンコア1390は、例示の実施形態では、ED RAMを介して実装されるシステムメモリ1399と通信する。また、アウト・オブ・オーダエンジン1380内の様々な実行ユニット1386が第1レベルキャッシュ1374と通信し、当キャッシュはまた中間レベルキャッシュ1376と通信することに留意されたい。また、追加のコア1330N−2〜1330NがLLC1395に連結されうることに留意されたい。
図13の実施形態ではこのような高いレベルで示されたが、多様な変更および追加的な構成が存在してよいことを理解すべきである。
【0151】
図14に移ると、命令を実行する複数の実行ユニットを含んだプロセッサを備えて形成された例示的なコンピュータシステムのブロック図が図示されており、そこでは相互接続のうちの1または複数が本発明の実施形態に従う1または複数の特徴を実装する。システム1400は、プロセッサ1402のようなコンポーネントを有しており、ここで記載される実施形態のような本発明に従って、論理を含んだ複数の実行ユニットを利用してデータ処理のためのアルゴリズムを実行する。システム1400は、PENTIUM(登録商標)III、PENTIUM(登録商標)4、Xeon(商標)、Itanium、Scale(商標)、および/またはStrongARM(商標)マイクロプロセッサに基づく代表的な処理システムであるが、(その他のマイクロプロセッサを有するPC、エンジニアリングワークステーション、セットトップボックス等を含む)その他のシステムが用いられてもよい。一実施形態では、サンプルシステム1400は、ワシントン、レドモンドのマイクロソフト社から利用可能なWINDOWS(登録商標)オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム(例えば、UNIX(登録商標)やリナックス(登録商標))、埋め込みソフトウェア、および/またはグラフィカルユーザインタフェースが、また、用いられてもよい。したがって、本発明の実施形態は、いかなる具体的なハードウェア回路およびソフトウェアの組み合わせにも限定されない。
【0152】
実施形態は、コンピュータシステムには限定されない。本発明の代替的実施形態は、ハンドヘルドデバイスや埋め込みアプリケーションのような他のデバイスにおいて利用されうる。ハンドヘルドデバイスの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCを含む。埋め込みアプリケーションとしては、マイクロコントローラ、デジタルシグナルプロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC),セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、少なくとも1つの実施形態に従って1または複数の命令を実行可能なその他の任意のシステム、を含むことができる。
【0153】
この図示された実施形態では、プロセッサ1402は、少なくとも1つの命令を実行するアルゴリズムを実装する1または複数の実行ユニット1408を有する。1つの実施形態が、単一プロセッサのデスクトップまたはサーバシステムのコンテクストで記載されてよいが、代替的実施形態は、マルチプロセッサシステムに含まれてもよい。システム1400は、「ハブ」システムアーキテクチャの一例である。コンピュータシステム1400は、データ信号を処理するプロセッサ1402を有する。1つの例示的な事例として、プロセッサ1402は、複合命令セットコンピュータ(CISC)マイクロプロセッサ、縮小命令セットコンピュータ(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、命令セットの組み合わせを実装したプロセッサ、または、例えばデジタルシグナルプロセッサのような他の任意のプロセッサデバイス、を含む。プロセッサ1402は、プロセッサ1402とシステム1400中の他のコンポーネントとの間でデータ信号を送信するプロセッサバス1410に結合される。システム1400の要素(例えば、グラフィックスアクセラレータ1412、メモリコントローラハブ1416、メモリ1420、I/Oコントローラハブ1424、無線送受信器1426、フラッシュBIOS1428、]ネットワークコントローラ1434、オーディオコントローラ1436、シリアル拡張ポート1438、I/Oコントローラ1440など)は、当業者に周知の従来の機能を実行する。
【0154】
一実施形態では、プロセッサ1402は、レベル1(L1)内部キャッシュメモリ1404を有する。アーキテクチャに応じて、プロセッサ1402は、単一の内部キャッシュまたはマルチレベル内部キャッシュを有してよい。他の実施形態は、特定の実装および必要に応じて、内部および外部キャッシュ両方の組み合わせを有する。レジスタファイル1406は、複数の異なるタイプのデータを、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ、状態レジスタ、命令ポインタレジスタを含む様々なレジスタに格納する。
【0155】
整数のおよび浮動小数点の動作を実行する論理を有する実行ユニット1408が、また、プロセッサ1402内に存在する。一実施形態では、プロセッサ1402は、マイクロコードを格納するためのマイクロコード(ucode)ROM を有し、実行されると、特定のマクロ命令のためのアルゴリズムを実行するか、または複雑なシナリオを処理する。ここで、マイクロコードは、プロセッサ1402のための論理バグ/解決策を処理すべく、潜在的にアップデート可能である。一実施形態に対して、実行ユニット1408は、パックド命令セット1409を処理するための論理を含む。汎用プロセッサ1402の命令セットに、パックド命令セット1409を、それらの命令を実行するための関連する回路と共に含ませることによって、多くのマルチメディアアプリケーションによって使用される複数の動作が、汎用プロセッサ1402でパックドデータを用いることで実行されてよい。このように、パックドデータで動作を実行するためにそのプロセッサのデータバスの全幅を用いることにより、多くのマルチメディアアプリケーションが、加速され、より効率的に実行される。このことは、1または複数の動作および1つのデータ要素を一度に実行すべく、プロセッサのデータバスにわたって、より小さい複数のデータユニットを伝達する必要性を、潜在的に排除する。
【0156】
実行ユニット1408の代替的な実施形態が、マイクロコントローラ、組込みプロセッサ、グラフィックスデバイス、DSP、および他のタイプの論理回路で用いられてよい。システム1400は、メモリ1420を有する。メモリ1420は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、またはその他のメモリデバイスを含む。メモリ1420は、プロセッサ1402により実行されるべきデータ信号によって表される命令および/またはデータを、格納する。
【0157】
任意の前述の特徴または本発明の態様が、
図14に例示された1または複数の相互接続で使用されてよい。例えば、プロセッサ1402の内部ユニットの連結のための、不図示のオンダイ相互接続(ODI)が、上記の本発明の1または複数の態様を実装する。または、本発明はプロセッサバス1410(例えば、他に高性能コンピューティング相互接続として知られる)、メモリ1420への高帯域幅メモリパス1418、グラフィックスアクセラレータ1412への2地点間リンク(周辺構成要素相互接続(PCIe)準拠ファブリック)、コントローラハブ相互接続1422、I/O、または図示されたその他のコンポーネントを連結するためのその他の相互接続(例えば、USB、PCI、PCIe)に関連する。そのようなコンポーネントの例としては、オーディオコントローラ1436、ファームウェアハブ(フラッシュBIOS)1428、無線送受信器1426、データストレージ1424、ユーザ入力とキーボードインタフェース1442とを備えるレガシーI/Oコントローラ1410、ユニバーサルシリアルバス(USB)のようなシリアル拡張ポート1438、および、ネットワークコントローラ1434を含む。データストレージデバイス1424は、ハードディスクドライブ、フロッピディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス、または、その他の大容量ストレージデバイスを備えることができる。
【0158】
ここで
図15を参照すると、本発明の実施形態による第2のシステム1500のブロック図が示される。
図15に示されるように、マルチプロセッサシステム1500は2地点間相互接続システムであって、第1のプロセッサ1570と、2地点間相互接続1550を介して結合される第2のプロセッサ1580とを備える。プロセッサ1570および1580のそれぞれは、あるプロセッサのいくつかのバージョンであってよい。一実施形態では、1552および1554は、高性能アーキテクチャのような、シリアル2地点間コヒーレント相互接続ファブリックの一部である。結果として、本発明は、QPIアーキテクチャ内に実装されてよい。
【0159】
2つのプロセッサ1570、1580のみが図示されているが、本発明の範囲はこれには限定されないことが理解されるべきである。他の実施形態において、1または複数の追加のプロセッサが、所定のプロセッサに存在してよい。
【0160】
集積メモリコントローラユニット1572および1582をそれぞれ含んだ、プロセッサ1570および1580が示される。プロセッサ1570は、また、バスコントローラユニットの一部として、2地点間(P−P)インタフェース1576、1578を有し、同様に、第2のプロセッサ1580は、P−Pインタフェース1586および1588を有する。プロセッサ1570、1580は、P−Pインタフェース回路1578、1588を用いて、2地点間(P−P)インタフェース1550を介して情報を交換してよい。
図15に示されるように、IMC1572および1582は、プロセッサをそれぞれのメモリ、即ち、メモリ1532およびメモリ1534に連結し、これらは、各プロセッサへ局所的に帰属するメインメモリの複数の部分であってよい。
【0161】
プロセッサ1570、1580は、それぞれ、2地点インタフェース回路1576、1594、1586、1598を用いて、個別のP−Pインタフェース1552、1554を介して、チップセット1590と情報を交換する。チップセット1590はまた、高性能グラフィックス相互接続1539に沿って、インタフェース回路1592を介して高性能グラフィックス回路1538と情報を交換する。
【0162】
共有キャッシュ(不図示)を、いずれかのプロセッサに、または両方のプロセッサの外部に有してよく、さらには、プロセッサが低電力モードに置かれた場合に、いずれかのまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納されうるように、P−P相互接続を介してこれらのプロセッサに接続されてもよい。
【0163】
チップセット1590は、インタフェース1596を介して第1のバス1516に結合されてよい。一実施形態では、第1のバス1516は、ペリフェラルコンポーネントインターコネクト(PCI)バス、または、PCI Expressバスまたは別の第3世代I/O相互接続バスのようなバスであってよいが、本発明の範囲は、これらには限定されない。
【0164】
図15に示されるように、多様なI/Oデバイス1514が、第1のバス1516に、バスブリッジ1518とともに結合され、このブリッジは、第1のバス1516を第2のバス1520へと連結する。一実施形態では、第2のバス1520は、LowPinCount(LPC)バスを有する。様々なデバイスが第2のバス1520に結合され、例えば、キーボードおよび/またはマウス1522、通信デバイス1527、ディスクドライブやその他の大容量ストレージデバイスのようなストレージユニット1528を有し、これらは一実施形態では、しばしば命令/コードおよびデータ1530を含む。さらに、オーディオI/O1524は、第2のバス1520に結合して、示される。その他の複数のアーキテクチャが可能であり、そこでは、含まれる複数のコンポーネントおよび複数の相互接続アーキテクチャが変更されてよい。例えば、
図1の2地点間アーキテクチャの代わりに、システムは、マルチドロップバスやその他のアーキテクチャを実装してよい。
【0165】
次に
図16に移ると、本発明によるシステムオンチップ(SOC)設計が図示される。具体的な例示的な事例として、SOC1600が、ユーザ機器(UE)に含まれる。一実施形態では、UEとは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付ノートブック、または、その他の類似の通信デバイスのような、通信目的でエンドユーザにより使用される他の任意のデバイスを指す。UEはしばしば基地局またはノードへと接続し、これらは潜在的に、事実上、GSM(登録商標)ネットワークの移動局(MS)に対応する。
【0166】
ここで、SOC1600は、2つのコア、1606と1607とを備える。上記の議論と同様に、コア1606および1607は、命令セットアーキテクチャに適合してよく、例えば、インテル(登録商標)アーキテクチャコア(商標)ベースのプロセッサ、アドバンスト・マイクロ・デバイセズ社(AMD)プロセッサ、MIPSベースのプロセッサ、ARMベースのプロセッサ設計、またはそれらの顧客に加えて、それらのライセンシーや利用者のプロセッサなどである。コア1606および1607は、キャッシュ制御1608に結合され、この制御部は、システム1600の他の部分と通信するバスインタフェースユニット1609およびL2キャッシュ1611に関連する。相互接続1610は、IOSF、AMBA、上述した他の相互接続等のオンチップ相互接続を有し、ここで述べた1または複数の態様を潜在的に実装する。
【0167】
相互接続1610は、他の複数のコンポーネントへの複数の通信チャネルを提供し、たとえば、SIMカードとインタフェースする加入者アイデンティティモジュール(SIM)1630、SOC1600を初期化しブートすべくコア1606、1607によって実行するための起動コードを保持するブートROM1635、外部メモリ(DRAM1660等)とインタフェースするSDRAMコントローラ1640、不揮発性メモリ(フラッシュ1665等)とインタフェースするフラッシュコントローラ1645、周辺機器とインタフェースする周辺機器制御1650(シリアル周辺機器インタフェース等)、入力を表示し受信する(例えば、タッチが入力を可能とする)映像コーディック1620およびビデオインタフェース1625、グラフィックスに関連する計算を実行するGPU1615、等である。これらの任意のインタフェースが、ここで述べられた本発明の態様を組み込んでよい。
【0168】
追加的に、本システムでは、ブルートゥースモジュール1670、3Gモデム1675、GPS1685、WiFi1685のような通信のための周辺機器を例示する。先に述べられたように、UEは通信用に無線を有する。結果として、これらの周辺機器通信モジュールは、全てが必要というわけでは無い。しかしながら、あるUEの形態では、外部通信用の無線が備えられてもよい。
【0169】
本発明が限られた個数の実施形態に関して説明されたが、当業者であれば、それらからの様々な変更およびバリエーションを理解できよう。添付の請求項は、本発明の真の精神および範囲内において、そのような変更およびバリエーションの全てをカバーすることを意図している。
【0170】
設計は、様々なステージ、創作から製作へのシミュレーションまでを、経てよい。ある設計を表すデータは、多数のやり方で、その設計を表現してよい。第1に、シミュレーションにおいて有用であるように、ハードウェア記述言語または別の機能記述言語を用いて、ハードウェアが表されてよい。追加的に、論理および/または複数のトランジスタゲートを有する1つの回路レベルモデルが、その設計処理のいくつかのステージで生成されてよい。さらに、あるステージでは、大部分の設計が、ハードウェアモデルで様々なデバイスの物理的配置を表すデータのレベルに達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータとは、集積回路の生産に用いられるマスクのための異なる複数のマスク層に、様々な特徴が存在するか存在しないかを特定するデータであってよい。設計の任意の表現において、データは、機械可読媒体に任意の形態で格納されてよい。メモリ、または、ディスク等の磁気若しくは光ストレージが、この機械可読媒体であってよく、変調された光または電気の波を介して送信される情報を、または、そうした情報を送信するために生成された情報を、格納する。コードまたは設計を、示しまたは搬送する電気的な搬送波が送信されるとき、その電気信号のコピー、バッファ処理、再送信が実行される範囲において、新たなコピーが作られる。したがって、通信プロバイダまたはネットワークプロバイダは、例えば搬送波へエンコードされた情報のような、本発明の複数の実施形態における複数の技術を具体化した物品を、有形の機械可読媒体に少なくとも一時的に格納してよい。
【0171】
本明細書中で用いられるモジュールとは、ハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせを指す。一例として、モジュールは、マイクロコントローラのようなハードウェアを含み、そのマイクロコントローラによって実行されるように適合されたコードを格納する非一時的媒体に関連する。従って、一実施形態では、モジュールを参照するとはハードウェアを参照することであり、このハードウェアは、非一時的媒体に保持されるべきコードを認識および/または実行するように具体的に構成されている。さらに別の実施形態では、モジュールの使用とは、コードを含む非一時的媒体を参照することを指し、このコードは、予め定められた動作を実行すべく、マイクロコントローラによって実行されるように具体的に適合されている。さらに別の実施形態では、推測が可能であるように、モジュールという用語(この例では)が、マイクロコントローラおよび非一時的媒体の組み合わせを指してよい。一般には別個に図示されるモジュールの境界線は、しばしば変化し、潜在的には重なり合う。例えば、第1および第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを共有しつつ、その一方で、潜在的には、いくらかの独立したハードウェア、ソフトウェアまたはファームウェアを保持してよい。一実施形態では、論理という用語の使用には、トランジスタやレジスタのようなハードウェア、または、プログラム式論理デバイスのような他のハードウェアを含む。
【0172】
一実施形態では、"ように構成される"という用語は、指定されたまたは決定されたタスクを実行すべく、装置、ハードウェア、ロジックまたは要素を、配置する、組み立る、製造する、販売の申出をする、輸入する、および/または、設計することを指す。この例においては、動作していないそれらの装置や要素であっても、その指定されたタスクを実行するべく設計され、結合され、および/または相互接続されている場合には、依然として、指定されたタスクを実行する"ように構成され"ている。純粋に説明用の例として、論理ゲートは、動作の間は、0または1を提供してよい。しかし、イネーブル信号をクロックへ提供する"ように構成される"論理ゲートとは、必ずしも、1または0を提供しうる全ての潜在的な論理ゲートを含むわけではない。代わりに、この論理ゲートとは、動作の間に1または0の出力がクロックを有効にするように論理ゲートが結合されているような論理ゲートである。再度述べるが、"ように構成される"という用語の使用は必ずしも動作を必要とはせず、その代わりに、装置、ハードウェアおよび/または要素の隠れた状態に焦点を当てたものであって、その隠れた状態において、装置、ハードウェアおよび/または要素は、装置、ハードウェアおよび/または要素が動作しているときに特定のタスクを実行するように設計されている。
【0173】
さらに、"すべく"、"することができる"、"動作可能"という用語の使用は、一実施形態では、特定されたやり方でその装置、論理、ハードウェア、および/または要素を使用させるべく、装置、論理、ハードウェア、および/または要素が設計されていることを指す。上記したように、すべく、することができる、動作可能の使用は、装置、論理、ハードウェアおよび/または要素の隠れた状態を指し、この場合、その装置、論理、ハードウェアおよび/または要素は、動作をしているのではなく、特定されたやり方で装置の使用がなされるように設計がされている。
【0174】
本明細書中で用いられるように、値には、数、状態、論理状態、またはバイナリ論理状態についての任意の既知の表現を含んでよい。しばしば、論理レベル、ロジック値または論理値の使用は、1または0のレベルや値として称され、これらは単純にバイナリ論理状態を表す。例えば、1は高論理レベルを、0は低論理レベルを指す。一実施形態では、トランジスタまたはフラッシュセルのようなストレージセルは、単一の論理値または多重の論理値を保持することが可能であってよい。しかしながら、コンピュータシステムでは、他の値に関する表現が用いられてきた。例えば、10進数の10は、バイナリ値1010として、16進数では文字Aとして、表されてよい。従って、値とは、コンピュータシステムにおいて保持することが可能な情報についての任意の表現を含む。
【0175】
さらに、複数の状態が、複数の値または複数の値の複数の部分で表されてよい。一例として、論理1のような第1の値が、デフォルトまたは初期の状態を表してよく、これに対して、論理ゼロのような第2の値が、非デフォルト状態を表してよい。さらには一実施形態では、リセットおよび設定という用語は、デフォルトおよび更新された値または状態を、それぞれ指す。例えば、デフォルト値は潜在的に高論理値、即ち、リセットを含み、これに対して更新値は潜在的に低論理値、即ち、設定を含む。値の任意の組み合わせが、任意の状態の数を表すために使用されてよい。
【0176】
先に説明した方法、ハードウェア、ソフトウェア、ファームウェアまたはコードセットについての複数の実施形態が、機械アクセス可能な、機械可読な、コンピュータアクセス可能な、または、コンピュータ可読媒体であって、かつ処理要素によって実行可能な媒体に格納された命令またはコードによって、実装されうる。非一時的機械アクセス可能/可読媒体は、コンピュータや電子システム等の機械によって読み取り可能な形態で情報を提供する(即ち、格納および/または送信する)任意のメカニズムを有する。例えば、非一時的機械アクセス可能媒体は、スタティックRAM(SRAM)やダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM)、ROM、磁気または光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的な(伝播された)信号(搬送波、赤外線信号、デジタル信号など)から受信した情報を保持するストレージデバイスにおけるその他の形態、などを有し、これらの一時的な信号は、情報をそれ自身から受信できる非一時的媒体とは区別される。
【0177】
本発明の実施形態を実行するための論理をプログラムするために用いられる命令は、DRAM、キャッシュ、フラッシュメモリ、その他のストレージのような、システムのメモリ内に格納されてよい。さらに、こうした命令は、ネットワークを介して、または、他のコンピュータ可読媒体を用いて、配信されうる。このように、機械可読媒体は、機械(例えば、コンピュータ)に可読な形で情報を格納しまたは送信するための任意のメカニズムを有してよく、これらに限定されるわけではないが、フロッピー(登録商標)ディスケット、光ディスク、コンパクトディスク、リードオンリメモリ(CD−ROM)、光磁気ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気または光カード、フラッシュメモリ、または、電気、光、音響、その他の形式の伝搬信号(搬送波、赤外線信号、デジタル信号等)でインタネットを通じて情報を送信するために用いられる有形の機械可読ストレージ、である。従って、コンピュータ可読媒体には、機械(例えばコンピュータ)によって可読な形式で電子命令や情報を格納または送信するのに適した任意のタイプの有形の機械可読媒体が含まれる。
【0178】
以下の例は、本明細書による実施形態に関連する。1または複数の実施形態は、一連の複数のトレーニングシーケンスを生成するための、装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、各トレーニングシーケンスはトレーニングシーケンスヘッダをそれぞれ有し、トレーニングシーケンスヘッダは、一連の複数のトレーニングシーケンスにわたってDCバランスがなされる。
【0179】
少なくとも1つの例では、一連の複数のトレーニングシーケンスは、1つのスーパーシーケンスに含まれる。
【0180】
少なくとも1つの例では、スーパーシーケンスは、EOS(electrical ordered set)を有する反復シーケンスを備え、その後には複数のトレーニングシーケンスが続く。
【0181】
少なくとも1つの例では、スーパーシーケンスは複数のスーパーシーケンス型のうちの特定の1つであり、各スーパーシーケンス型はシリアルデータリンクの1または複数の状態にそれぞれ対応する。
【0182】
少なくとも1つの例では、これらの複数のスーパーシーケンス型は、検出状態に対応する検出スーパーシーケンスと、ループバック状態、コンフィギュレーション状態およびポーリング状態を有する一連の複数の状態に対応する第2スーパーシーケンスと、部分幅送信状態からの終了に対応する部分幅終了スーパーシーケンスと、を有する。
【0183】
少なくとも1つの例において、検出スーパーシーケンスの反復シーケンスは、EIEOS(electric idle exit ordered set)を有するEOSを備え、その後には7つの連続するトレーニングシーケンスの例が続き、このシーケンスは1000単位インターバル毎に略1回繰り返される。
【0184】
少なくとも1つの例において、第2スーパーシーケンスの反復シーケンスは、EIEOSを有するEOSを備え、その後には31の連続するトレーニングシーケンスの例が続き、このシーケンスは4000単位インターバル毎に略1回繰り返される。
【0185】
少なくとも1つの例において、部分幅終了スーパーシーケンスの反復シーケンスは、EIEOSを有するEOSを備え、その後には7つの連続する高速トレーニングシーケンスの例が続き、このシーケンスは1000単位インターバル毎に略1回繰り返される。
【0186】
少なくとも1つの例において、トレーニングシーケンスのそれぞれはトレーニングシーケンスペイロードを有し、トレーニングシーケンスペイロードはスクランブル処理され、トレーニングシーケンスヘッダは、アンスクランブル処理される。
【0187】
少なくとも1つの例において、EOSはアンスクランブル処理される。
【0188】
少なくとも1つの例において、トレーニングシーケンスペイロードは、擬似ランダムバイナリシーケンス(PRBS)を用いてスクランブル処理される。
【0189】
少なくとも1つの例において、ヘッダは、ACK/NAKフィールドおよびトレーニングシーケンス型フィールドを有する。
【0190】
少なくとも1つの例において、トレーニングシーケンス型フィールドは、シリアルデータリンクの各状態に対応するトレーニングシーケンス型を特定するために、エンコードされる。
【0191】
1または複数の実施形態は、一連の複数のトレーニングシーケンスを受信するための装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、各トレーニングシーケンスはトレーニングシーケンスヘッダをそれぞれ有し、トレーニングシーケンスヘッダは、一連の複数のトレーニングシーケンスにわたってDCバランスがなされ、物理層論理はさらに一連の複数のトレーニングシーケンスヘッダのうちの1または複数のトレーニングシーケンスヘッダの複数の境界を検出する。
【0192】
少なくとも1つの例において、一連の複数のトレーニングシーケンスは、スーパーシーケンスの一部として受信され、スーパーシーケンスはEIEOSを有する反復シーケンスを備え、その後には複数のトレーニングシーケンスが続く。
【0193】
スーパーシーケンスに基づいてデータリンクの状態を決定する。
【0194】
少なくとも1つの例において、状態は、少なくとも部分的に、シーケンスがスーパーシーケンスで繰り返される周波数から決定される。
【0195】
少なくとも1つの例において、状態は、少なくとも部分的に、複数のトレーニングシーケンスの個数から決定される。
【0196】
状態は、少なくとも部分的に、トレーニングシーケンスヘッダ情報から決定される。
【0197】
1または複数の実施形態は、複数のレーンのそれぞれにおいてそれぞれのスーパーシーケンスを受信するための装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、スーパーシーケンスはEOSを有し、その後には複数のトレーニングシーケンスが続き、スーパーシーケンスに基づいて、複数のレーンのうちの少なくとも第1のレーンおよび第2のレーンの間の、レーン間スキューを検出する。
【0198】
少なくとも1つの例において、各トレーニングシーケンスがトレーニングシーケンスヘッダを有する。
【0199】
少なくとも1つの例において、スキューは、トレーニングシーケンスヘッダの端部に少なくとも部分的に基づいて検出される。
【0200】
少なくとも1つの例において、スキューは、端部が第1のレーンよりも遅れて第2のレーンに到達するという識別に基づいて検出される。
【0201】
少なくとも1つの例において、トレーニングシーケンスヘッダはアンスクランブル処理されて送信され、トレーニングシーケンスの残りはスクランブル処理される。
【0202】
少なくとも1つの例において、トレーニングシーケンスの少なくともペイロードがスクランブル処理される。
【0203】
少なくとも1つの例において、ペイロードは、23ビットのシードを有する23ビットの擬似ランダムバイナリシーケンス(PRBS)を用いてスクランブル処理される。
【0204】
少なくとも1つの例において、PRBSのシードは、スーパーシーケンスから検出されうる。
【0205】
少なくとも1つの例において、レーン間スキューが修正されうる。
【0206】
1または複数の実施形態は、装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、これらは、2またはそれ以上連続したシーケンスの例を備えるスーパーシーケンスを生成し、このシーケンスは一連の複数のトレーニングシーケンスが後に続くEOSを有し、各トレーニングシーケンスの少なくとも一部は、それぞれのスクランブル値によってスクランブル処理される。
【0207】
少なくとも1つの例では、PRBSのシードは、スクランブル処理同期フィールドから識別可能である。
【0208】
少なくとも1つの例では、そのシードは、スクランブル処理で使用されるPRBSにおける特定部分を示す。
【0209】
少なくとも1つの例において、スクランブル処理同期フィールドは、3バイトのペイロードを備える。
【0210】
少なくとも1つの例において、PRBSの全体が、スクランブル処理で用いられる。
【0211】
少なくとも1つの例において、PRBSの全体未満が、スクランブル処理で用いられる。
【0212】
1または複数の実施形態は、第1のデバイスおよび第2のデバイスを接続するリンクのレーンの適応のためのサンプル信号を受信するための装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、信号は、スーパーシーケンスと疑似ランダムシーケンスによってスクランブル処理されるべきスーパーシーケンスの少なくとも一部とを備え、サンプル信号に基づいて少なくとも1つの適応タスクを実行する。
【0213】
請求項68の装置においてスーパーシーケンスは、EOSを有し、その後には複数の連続するトレーニングシーケンスが続く。
【0214】
少なくとも1つの例において、少なくとも1つの適応タスクは、サンプル信号からレーンの品質を決定することを含む。
【0215】
少なくとも1つの例において、少なくとも1つの適応タスクは、さらに、レーンの品質を決定することに基づいてサンプル信号の送信機へフィードバックを提供することを含む。
【0216】
少なくとも1つの例において、少なくとも1つの適応タスクは、さらに、レーンの品質を決定することに基づいてレーンの複数の特性を修正することを含む。
【0217】
1または複数の実施形態は、初期状態で複数のスーパーシーケンスを生成するための装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、各スーパーシーケンスはEOSを有するシーケンスを備え、その後には一連の複数のトレーニングシーケンスが続き、各トレーニングシーケンスはサフィックスを有し、初期状態から送信リンク状態への遷移を示すデータシーケンスの開始(SDS)を送信する。
【0218】
少なくとも1つの例では、サフィックスは、擬似乱数値により、SDSのエイリアスを防止する。
【0219】
少なくとも1つの例では、SDSの値は、擬似乱数値には含まれない。
【0220】
少なくとも1つの例では、擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を有する。
【0221】
少なくとも1つの例では、EIEOSは、低周波数クロック信号をエミュレートし、SDSは、低周波数クロック信号よりも高い周波数のクロック信号をエミュレートする。
【0222】
少なくとも1つの例では、SDSは、スーパーシーケンスに割り込むために送信される。
【0223】
少なくとも1つの例では、SDSは、複数のトレーニングシーケンスのうちの特定の1つの中に送信される。
【0224】
少なくとも1つの例では、SDSは、EOSの特定の例の中に送信される。
【0225】
少なくとも1つの例では、SDSは、決定論的な配列制御信号に基づいて送信される。
【0226】
1または複数の実施形態は、初期状態で複数のスーパーシーケンスを受信するための装置、システム、機械可読ストレージ、機械可読媒体および方法を提供してよく、各スーパーシーケンスはEOSを有するシーケンスを備え、その後には一連の複数のトレーニングシーケンスが続き、各トレーニングシーケンスはサフィックスを有し、初期状態から送信リンク状態への遷移を示すデータシーケンスの開始(SDS)を受信する。
【0227】
少なくとも1つの例では、SDSは、決定論的な配列制御信号に基づいて送信される。
【0228】
1または複数の例は、さらに、リンクに結合されるように構成される物理層(PHY)を提供することができ、このリンクは第1の個数のレーンを有し、PHYは23ビットの擬似乱数ビットシーケンス(PRBS)を生成するためのセルフシードなストレージ要素を有し、PHYは、23ビットのPRBSに基づいて、スクランブル処理されたトレーニングシーケンスを送信する。
【0229】
本明細書で"一実施形態"または"実施形態"と言及した場合それは、その実施形態に関連して記載された特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。従って、本明細書を通じて様々な箇所の"一実施形態で"または"実施形態で"という用語は、その同じ実施形態の全てを必ずしも意味しない。さらには、複数の特定の特徴、構造または特性が、1または複数の実施形態において、任意の適切なやり方で、適切に組み合されてよい。
【0230】
上述の明細書では、詳細な説明が、特定の例示的な複数の実施形態を参照しつつ行われた。しかしながら、添付の請求項で説明された本発明についてのより広い精神および範囲から逸脱することなく、多様な修正および変更をそれらに行ってよいことは明白であろう。従って、明細書および図面は、限定を意図したものではなく、例示的な意図とみなされる。さらに、上述のように実施形態やその他の例示的な用語を使用したことは、同じ実施形態または同じ例を必ずしも参照せず、異なり区別される実施形態を参照してもよいが、潜在的には同じ実施形態を参照してもよい。
本実施形態の例を下記の各項目として示す。
[項目1]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は一連の複数のトレーニングシーケンスを生成し、
各トレーニングシーケンスはトレーニングシーケンスヘッダをそれぞれ有し、
前記トレーニングシーケンスヘッダは、前記一連の複数のトレーニングシーケンスにわたってDCバランスがなされる、装置。
[項目2]
前記一連の複数のトレーニングシーケンスは、スーパーシーケンスに含まれる、項目1に記載の装置。
[項目3]
前記スーパーシーケンスは、EOS(electrical ordered set)を有する反復シーケンスを備え、その後には複数のトレーニングシーケンスが続く、項目2に記載の装置。
[項目4]
前記スーパーシーケンスは複数のスーパーシーケンス型のうちの特定の1つであり、各スーパーシーケンス型はシリアルデータリンクの1または複数の状態にそれぞれ対応する、項目3に記載の装置。
[項目5]
前記複数のスーパーシーケンス型が、
検出状態に対応する検出スーパーシーケンスと、
ループバック状態、コンフィギュレーション状態およびポーリング状態を有する一連の複数の状態の1つに対応する第2スーパーシーケンスと、
部分幅送信状態からの終了に対応する部分幅終了スーパーシーケンスと、
を有する、項目4に記載の装置。
[項目6]
前記検出スーパーシーケンスの前記反復シーケンスは、EIEOS(electric idle exit ordered set)を有するEOSを備え、その後には7つの連続するトレーニングシーケンスのインスタンスが続き、
前記シーケンスは1000単位インターバル毎に略1回繰り返される、項目5に記載の装置。
[項目7]
前記第2スーパーシーケンスの前記反復シーケンスは、EIEOSを有するEOSを備え、その後には31の連続するトレーニングシーケンスのインスタンスが続き、
前記シーケンスは4000単位インターバル毎に略1回繰り返される、項目5に記載の装置。
[項目8]
前記部分幅終了スーパーシーケンスの前記反復シーケンスは、EIEOSを有するEOSを備え、その後には7つの連続する高速トレーニングシーケンスのインスタンスが続き、
前記シーケンスは1000単位インターバル毎に略1回繰り返される、項目5に記載の装置。
[項目9]
前記トレーニングシーケンスのそれぞれはトレーニングシーケンスペイロードを有し、
前記トレーニングシーケンスペイロードはスクランブル処理され、
前記トレーニングシーケンスヘッダは、スクランブル処理されない、項目3に記載の装置。
[項目10]
前記EOSはスクランブル処理されない、項目9に記載の装置。
[項目11]
前記トレーニングシーケンスペイロードは、擬似ランダムバイナリシーケンス(PRBS)を用いてスクランブル処理される、項目9に記載の装置。
[項目12]
前記ヘッダは、ACK/NAKフィールドおよびトレーニングシーケンス型フィールドを有する、項目1に記載の装置。
[項目13]
前記トレーニングシーケンス型フィールドは、シリアルデータリンクの各状態に対応するトレーニングシーケンス型を特定するために符号化される、項目12に記載の装置。
[項目14]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は一連の複数のトレーニングシーケンスを受信し、各トレーニングシーケンスはトレーニングシーケンスヘッダをそれぞれ有し、前記トレーニングシーケンスヘッダは、前記一連の複数のトレーニングシーケンスにわたってDCバランスがなされ、
前記物理層論理はさらに前記一連の複数のトレーニングシーケンスヘッダのうちの1または複数のトレーニングシーケンスヘッダの複数の境界を検出する、装置。
[項目15]
前記一連の複数のトレーニングシーケンスは、スーパーシーケンスの一部として受信され、
前記スーパーシーケンスは、EIEOSを有する反復シーケンスを備え、その後には複数の前記トレーニングシーケンスが続く、項目14に記載の装置。
[項目16]
前記物理層論理は、前記スーパーシーケンスに基づいてデータリンクの状態を決定する、項目15に記載の装置。
[項目17]
前記状態は、少なくとも部分的に、前記シーケンスが前記スーパーシーケンスで繰り返される頻度から決定される、項目16に記載の装置。
[項目18]
前記状態は、少なくとも部分的に、前記複数のトレーニングシーケンスの個数から決定される、項目16に記載の装置。
[項目19]
前記状態は、少なくとも部分的に、トレーニングシーケンスヘッダフィールド情報から決定される、項目16に記載の装置。
[項目20]
前記EIEOSおよび複数のトレーニングシーケンスヘッダはスクランブル処理されず、
複数のトレーニングシーケンスペイロードはスクランブルされる、項目15に記載の装置。
[項目21]
複数のトレーニングシーケンスペイロードは、擬似ランダムバイナリシーケンス(PRBS)を用いてスクランブル処理される、項目16に記載の装置。
[項目22]
前記ヘッダは、ACK/NAKフィールドおよびトレーニングシーケンス型フィールドを有する、項目14に記載の装置。
[項目23]
シリアルデータリンクのためのステートマシンの複数の状態に含まれる特定の状態に入ろうと試みる段階と、
前記状態を示すために、前記データリンク上で別のデバイスへスーパーシーケンスを送信する段階と、
を備え、
前記スーパーシーケンスは、EIEOSから始まる反復シーケンスを有し、その後には予め定められた個数のトレーニングシーケンスが続き、
前記複数のトレーニングシーケンスのそれぞれが、DCバランスされたヘッダを有する、方法。
[項目24]
前記スーパーシーケンスの少なくとも一部をスクランブル処理する段階をさらに備える、項目23に記載の方法。
[項目25]
擬似ランダムバイナリシーケンス(PRBS)が、前記スーパーシーケンスの前記一部をスクランブル処理するために用いられる、項目24に記載の方法。
[項目26]
前記複数のトレーニングシーケンスヘッダおよびEIEOSは、スクランブル処理されずに送信される、項目25に記載の方法。
[項目27]
前記スーパーシーケンスの前記一部が、前記複数のトレーニングシーケンスにおける複数のペイロードを有する、項目26に記載の方法。
[項目28]
第1のデバイス、および
シリアルデータリンクを用いて、前記第1のデバイスと通信可能に結合された第2のデバイス、
を備え、
前記第2のデバイスは、少なくとも1つのプロセッサにより実行される物理層モジュールを有し、
前記データリンクのためのステートマシンの複数の状態に含まれる特定の状態に入ろうと試み、
前記状態を示すために、前記データリンク上で前記第1のデバイスへスーパーシーケンスを送信し、
前記スーパーシーケンスは、EIEOSから始まる反復シーケンスを有し、その後には予め定められた個数のトレーニングシーケンスが続き、
前記複数のトレーニングシーケンスのそれぞれが、DCバランスされたヘッダを有する、システム。
[項目29]
前記第1のデバイスは、マイクロプロセッサを有する、項目28に記載のシステム。
[項目30]
前記第2のデバイスは、第2のマイクロプロセッサを有する、項目29に記載のシステム。
[項目31]
前記第2のデバイスは、グラフィックスアクセラレータを有する、項目29に記載のシステム。
[項目32]
前記第1のデバイスは、
前記スーパーシーケンスを検証し、前記スーパーシーケンスに少なくとも部分的に基づいて前記状態を特定する、物理層モジュールを有する、項目28に記載のシステム。
[項目33]
前記第1のデバイスの前記物理層モジュールはさらに、前記スーパーシーケンスにおける、スクランブル処理された複数の部分をデスクランブル処理する、項目32に記載のシステム。
[項目34]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
複数のレーンのそれぞれにおいてそれぞれのスーパーシーケンスを受信し、前記スーパーシーケンスはEOSを有し、その後には複数のトレーニングシーケンスが続き、
前記スーパーシーケンスに基づいて、前記複数のレーンのうちの少なくとも第1のレーンおよび第2のレーンの間の、レーン間スキューを検出する、装置。
[項目35]
各トレーニングシーケンスがトレーニングシーケンスヘッダを有する、項目34に記載の装置。
[項目36]
前記スキューは、前記トレーニングシーケンスヘッダの端部に少なくとも部分的に基づいて検出される、項目35に記載の装置。
[項目37]
前記スキューは、前記端部が前記第1のレーンよりも遅れて前記第2のレーンに到達するという識別に基づいて検出される、項目36に記載の装置。
[項目38]
前記トレーニングシーケンスヘッダはスクランブル処理されずに送信され、前記トレーニングシーケンスの残りはスクランブル処理される、項目36に記載の装置。
[項目39]
前記トレーニングシーケンスの少なくともペイロードがスクランブル処理される、項目34に記載の装置。
[項目40]
前記ペイロードは、23ビットのシードを有する23ビットの擬似ランダムバイナリシーケンス(PRBS)を用いてスクランブル処理される、項目39に記載の装置。
[項目41]
物理層論理は、さらに、前記PRBSの前記シードを特定する、項目40に記載の装置。
[項目42]
前記スキューは、少なくとも部分的に、前記PRBSのスクランブル処理から検出される、項目40に記載の装置。
[項目43]
前記PRBSは、前記スーパーシーケンスから検出される、項目42に記載の装置。
[項目44]
前記物理層論理は、さらに、前記レーン間スキューを修正する、項目34に記載の装置。
[項目45]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
2またはそれ以上の連続したシーケンスのインスタンスを備えるスーパーシーケンスを生成し、前記シーケンスは一連の複数のトレーニングシーケンスが後に続くEOSを有し、
各トレーニングシーケンスの少なくとも一部は、それぞれのスクランブル値によってスクランブル処理される、装置。
[項目46]
前記EOSは、EIEOSを有する、項目45に記載の装置。
[項目47]
前記スクランブル値は、擬似乱数値を有する、項目45に記載の装置。
[項目48]
前記擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を有する、項目47に記載の装置。
[項目49]
前記LFSRは、フィボナッチLFSRを有する、項目48に記載の装置。
[項目50]
前記トレーニングシーケンスは、ヘッダおよびペイロードを有し、
前記ペイロードは前記スクランブル処理された部分に含まれ、前記ヘッダはスクランブル処理されないままとされる、項目48に記載の装置。
[項目51]
前記ペイロードは、スクランブル処理同期フィールドを有する、項目50に記載の装置。
[項目52]
前記PRBSのシードは、前記スクランブル処理同期フィールドから識別可能である、項目51に記載の装置。
[項目53]
前記シードは、前記スクランブル処理で使用される前記PRBSの特定部分を示す、項目52に記載の装置。
[項目54]
前記スクランブル処理同期フィールドは、3バイトの前記ペイロードを備える、項目51に記載の装置。
[項目55]
前記PRBSの全体が、前記スクランブル処理で用いられる、項目48に記載の装置。
[項目56]
前記PRBSの全体未満が、前記スクランブル処理で用いられる、項目48に記載の装置。
[項目57]
前記スーパーシーケンスは、試験コンテクストで生成される、項目56に記載の装置。
[項目58]
前記EOSは、スクランブル処理されないままとされる、項目45に記載の装置。
[項目59]
トレーニングシーケンスのそれぞれが、それぞれトレーニングシーケンスヘッダを有し、前記トレーニングシーケンスヘッダは、スクランブル処理されず、かつ、DCバランスされる、項目45に記載の装置。
[項目60]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
2またはそれ以上の連続したシーケンスのインスタンスを備えるスーパーシーケンスを受信し、前記シーケンスは一連の複数のトレーニングシーケンスが後に続くEOSを有し、
各トレーニングシーケンスの少なくとも一部がスクランブル処理され、
前記スクランブル処理で使用される擬似乱数値の識別に基づいて前記複数のトレーニングシーケンスをデスクランブル処理する、装置。
[項目61]
前記擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を有する、項目60に記載の装置。
[項目62]
前記PRBSは、前記一連の複数のトレーニングシーケンスの少なくとも1つにおけるヘッダのスクランブル処理同期フィールドから特定される、項目61に記載の装置。
[項目63]
前記PRBSは、前記スクランブル処理同期フィールドで特定されたシードから特定される、項目62に記載の装置。
[項目64]
前記物理層論理は、前記シードをローカルなLFSRへ読み込み、かつ前記PRBSと同期する、項目63に記載の装置。
[項目65]
前記トレーニングシーケンスヘッダがスクランブル処理されず、前記スクランブル処理同期フィールドは、前記トレーニングシーケンスのスクランブル処理されたペイロードに含まれ、前記物理層論理は前記トレーニングシーケンスヘッダの端部から前記スクランブル処理同期フィールドを特定する、項目62に記載の装置。
[項目66]
前記LFSRは、23ビットのフィボナッチLFSRを有する、項目61に記載の装置。
[項目67]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
第1のデバイスおよび第2のデバイスを接続するリンクのレーンの適応のためのサンプル信号を受信し、前記信号はスーパーシーケンスを有し、前記スーパーシーケンスの少なくとも一部は疑似ランダムシーケンスによってスクランブル処理され、
前記サンプル信号に基づいて少なくとも1つの適応タスクを実行する、装置。
[項目68]
前記スーパーシーケンスは、EOSを有し、その後には複数の連続するトレーニングシーケンスが続く、項目67に記載の装置。
[項目69]
前記EOSは、EIEOSを有する、項目68に記載の装置。
[項目70]
前記トレーニングシーケンスのそれぞれは、トレーニングシーケンスヘッダおよびトレーニングシーケンスペイロードを有する、項目69に記載の装置。
[項目71]
各トレーニングシーケンスヘッダは、スクランブル処理されず、各トレーニングシーケンスペイロードはスクランブル処理される、項目70に記載の装置。
[項目72]
前記EOSは、スクランブル処理されないままとされる、項目71に記載の装置。
[項目73]
前記実質的にランダムな値は、擬似乱数値を有する、項目68に記載の装置。
[項目74]
前記擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を有する、項目73に記載の装置。
[項目75]
前記LFSRは、23ビットのフィボナッチLFSRを有する、項目74に記載の装置。
[項目76]
前記少なくとも1つの適応タスクは、前記サンプル信号から前記レーンの品質を決定することを含む、項目74に記載の装置。
[項目77]
前記少なくとも1つの適応タスクは、さらに、前記レーンの前記品質を決定することに基づいて前記サンプル信号の送信機へフィードバックを提供することを含む、項目76に記載の装置。
[項目78]
前記少なくとも1つの適応タスクは、さらに、前記レーンの前記品質を決定することに基づいて前記レーンの複数の特性を修正することを含む、項目77に記載の装置。
[項目79]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
初期状態で複数のスーパーシーケンスを生成し、各スーパーシーケンスはEOSを有するシーケンスを備え、その後には一連の複数のトレーニングシーケンスが続き、各トレーニングシーケンスはサフィックスを有し、
前記初期状態から送信リンク状態への遷移を示すデータシーケンスの開始(SDS)を送信する、装置。
[項目80]
各トレーニングシーケンスの少なくとも一部は、それぞれの擬似乱数値によってスクランブル処理される、項目79に記載の装置。
[項目81]
前記サフィックスは、前記擬似乱数値により、前記SDSのエイリアスを防止する、項目80に記載の装置。
[項目82]
前記SDSの前記値は、前記擬似乱数値には含まれない、項目81に記載の装置。
[項目83]
前記擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を有する、項目81に記載の装置。
[項目84]
前記LFSRは、23ビットのフィボナッチLFSRを有する、項目83に記載の装置。
[項目85]
前記EOSは、EIEOSを有する、項目80に記載の装置。
[項目86]
前記EIEOSは、低周波数クロック信号をエミュレートする、項目85に記載の装置。
[項目87]
前記SDSは、前記低周波数クロック信号よりも高い周波数のクロック信号をエミュレートする、項目86に記載の装置。
[項目88]
前記SDSは、前記スーパーシーケンスに割り込むために送信される、項目80に記載の装置。
[項目89]
前記SDSは、前記複数のトレーニングシーケンスのうちの特定の1つの中で送信される、項目88に記載の装置。
[項目90]
前記SDSは、前記EOSの特定のインスタンスの中で送信される、項目89に記載の装置。
[項目91]
前記SDSは、決定論的な配列制御信号に基づいて送信される、項目89に記載の装置。
[項目92]
物理層論理、リンク層論理およびプロトコル層論理を有する層状スタックを備え、
前記物理層論理は、
初期状態で複数のスーパーシーケンスを受信し、各スーパーシーケンスはEOSを有するシーケンスを備え、その後には一連の複数のトレーニングシーケンスが続き、各トレーニングシーケンスはサフィックスを有し、
前記初期状態から送信リンク状態への遷移を示すデータシーケンスの開始(SDS)を受信する、装置。
[項目93]
各トレーニングシーケンスの少なくとも一部は、それぞれの擬似乱数値によってスクランブル処理される、項目92に記載の装置。
[項目94]
前記サフィックスは、前記擬似乱数値によって、前記SDSのエイリアスを防止する、項目93に記載の装置。
[項目95]
前記SDSの前記値は、前記擬似乱数値には含まれない、項目94に記載の装置。
[項目96]
前記擬似乱数値は、線形フィードバックシフトレジスタ(LFSR)によって生成される擬似ランダムバイナリシーケンス(PRBS)を備える、項目94に記載の装置。
[項目97]
前記LFSRは、23ビットのフィボナッチLFSRを有する、項目96に記載の装置。
[項目98]
前記EOSは、EIEOSを有する、項目93に記載の装置。
[項目99]
前記EIEOSは、低周波数クロック信号をエミュレートする、項目98に記載の装置。
[項目100]
前記SDSは、前記低周波数クロック信号よりも高い周波数のクロック信号をエミュレートする、項目99に記載の装置。
[項目101]
前記SDSは、前記スーパーシーケンスに割り込むために送信される、項目93に記載の装置。
[項目102]
前記SDSは、前記複数のトレーニングシーケンスのうちの特定の1つの中で送信される、項目101に記載の装置。
[項目103]
前記SDSは、前記EOSの特定のインスタンスの中で送信される、項目102に記載の装置。
[項目104]
前記SDSは、決定論的な配列制御信号に基づいて送信される、項目102に記載の装置。
[項目105]
リンクに結合されるように構成される物理層(PHY)を備え、前記リンクは第1の個数のレーンを有し、前記PHYは23ビットの擬似乱数ビットシーケンス(PRBS)を生成するためのセルフシードなストレージ要素を有し、前記PHYは、前記23ビットのPRBSに基づいて、スクランブル処理されたトレーニングシーケンスを送信する、装置。