以下の説明には、本発明の深い理解を与えるべく、多数の具体的な詳細が記載されている。例えば、特定のタイプのプロセッサおよびシステム構成、特定のハードウェア構造、特定の設計上およびミクロ設計上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプライン段階、および動作等の例示である。しかしながら、本発明を実施するのにこれらの具体的な細部を採用する必要がないことは、当業者にとって明らかであろう。他の例において、特定のおよび代替的なプロセッサアーキテクチャ、記載されたアルゴリズムのための特定のロジック回路/コード、特定のファームウェアコード、特定の相互接続動作、特定のロジック構成、特定の製造技術および材料、特定のコンパイラ実装、コードにおけるアルゴリズムの特定の表現、特定のパワーダウンおよびゲーティング技術/ロジック並びにコンピュータシステムの他の特定の動作詳細のような周知のコンポーネントまたは方法については、本発明を不必要に不明瞭にするのを回避すべく、詳細に記載されていない。
以下の実施形態は、コンピューティングプラットフォームまたはマイクロプロセッサといった特定の集積回路における省エネルギーおよびエネルギー効率に関し記載されている場合があるが、他の実施形態が、他のタイプの集積回路およびロジックデバイスに適用可能である。本明細書に記載された実施形態に係る同様の技術および教示が、他のタイプの回路または半導体デバイスに適用可能であり、それらも、より優れたエネルギー効率および省エネルギーからの利益を享受し得る。例えば、開示された実施形態は、デスクトップコンピュータシステムまたはウルトラブック(商標)に限定されない。また、ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、および埋め込みアプリケーションのような他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCが挙げられる。埋め込みアプリケーションとは典型的には、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、または以下に教示される機能および動作を実行し得る任意の他のシステムを含む。さらに、本明細書に記載される装置、方法およびシステムは、物理コンピューティングデバイスに限定されず、省エネルギーおよび効率性のためのソフトウェア最適化にも関連し得る。以下の詳細な説明から容易に明らかであるように、本明細書に記載の方法、装置、システムの実施形態(ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせに関するかどうかを問わず)は、性能検討事項とバランスが採られた「グリーンテクノロジ」の将来に不可欠である。
コンピューティングシステムが進歩するにつれ、それらのコンポーネントは、より複雑化してきている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結および通信を行うための相互接続アーキテクチャも複雑性が増している。さらに、様々な市場セグメントが、市場ニーズに適合する相互接続アーキテクチャの様々な態様を要求する。例えば、サーバがさらなる高性能を必要とする一方で、モバイルエコシステムは場合によっては、省電力化のために性能全体を犠牲にできる。とはいえ、最大限の省電力化で可能な限り高い性能を提供することが、大半のファブリックの唯一の目的である。以下に説明される多数の相互接続は、本明細書に記載される本発明の複数の態様から潜在的に利益を享受するであろう。
ある相互接続ファブリックアーキテクチャは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)アーキテクチャを含む。PCIeの第1の目的は、クライアント(デスクトップおよびモバイル)、サーバ(標準およびエンタープライズ)、並びに埋め込みおよび通信デバイスといった複数の市場セグメントにわたる、異なるベンダのコンポーネントおよびデバイスが、オープンアーキテクチャにおいて相互運用できるようにすることにある。PCI Expressは、多種多様な将来のコンピューティングおよび通信プラットフォームのために定義された高性能な汎用I/O相互接続である。その利用モデル、ロード‐ストアアーキテクチャ、およびソフトウェアインタフェースのようないくつかのPCI属性が、その改訂版を通して維持されているが、これに対し、以前のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられた。PCI Expressのより最近のバージョンでは、新しいレベルの性能と特徴を供給すべく、ポイントツーポイント相互接続、スイッチベースの技術、およびパケット化されたプロトコルにおける進展を活用している。PCI Expressによってサポートされるいくつかの高度な特徴の中に、電力管理、サービスの品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、およびエラー処理がある。
図1を参照すると、一連のコンポーネントを相互接続するポイントツーポイントリンクから構成されるファブリックの一実施形態が示されている。システム100は、コントローラハブ115に連結されたプロセッサ105およびシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、または他のプロセッサのような任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を介してコントローラハブ115に連結される。一実施形態において、FSB106は後述のようなシリアルポイントツーポイント相互接続である。別の実施形態において、リンク106は、異なる相互接続規格に準拠するシリアルの差動相互接続アーキテクチャを含む。
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、またはシステム100におけるデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を介してコントローラハブ115に連結される。メモリインタフェースの例としては、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース、および動的RAM(DRAM)メモリインタフェースが含まれる。
一実施形態において、コントローラハブ115は、ペリフェラルコンポーネントインターコネクトエクスプレス(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から上流に、すなわちルートコンプレックスに向かい1階層上のコントローラハブ115へ、および下流に、すなわちルートコントローラから1階層下へ、プロセッサ105若しくはシステムメモリ110およびデバイス125間で、パケット/メッセージをルーティングする。一実施形態において、スイッチ120は、複数の仮想PCIツーPCIブリッジデバイスの論理的アセンブリと呼ばれる。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ、および他の入/出力デバイスのような、電子システムに連結される任意の内蔵若しくは外付けのデバイスまたはコンポーネントを含む。PCIe用語ではしばしば、そのようなデバイスをエンドポイントと呼ぶ。具体的に示されていないが、デバイス125は、レガシまたは他のバージョンのPCIデバイスをサポートすべく、PCIeツーPCI/PCI−Xブリッジを含んでよい。PCIeにおけるエンドポイントデバイスは通常、レガシエンドポイント、PCIeエンドポイント、またはルートコンプレックス統合エンドポイントとして分類される。
グラフィックアクセラレータ130も、シリアルリンク132を介してコントローラハブ115に連結される。一実施形態において、グラフィックアクセラレータ130は、ICHに連結されたMCHに連結される。スイッチ120、およびそれに基づいてI/Oデバイス125が次にICHに連結される。I/Oモジュール131および118はまた、グラフィックアクセラレータ130およびコントローラハブ115間で通信するための層状プロトコルスタックを実装する。上記のMCHの記載と同様、グラフィックコントローラまたはグラフィックアクセラレータ130それ自体が、プロセッサ105に統合されてよい。
図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によって使用されるクレジット数をカウントする。トランザクションは、そのトランザクションがクレジット制限(credit limit)を超過しない場合に、送信されてよい。応答を受信すると、クレジット量が復元される。クレジットスキームの利点は、クレジット制限が発生しなければ、クレジットリターン(credit return)のレイテンシが性能に影響を与えないことである。
一実施形態において、4つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入/出力アドレス空間、およびメッセージアドレス空間を含む。メモリマップされた位置へ/からデータを転送するために、メモリ空間トランザクションは、読み取りリクエストおよび書き込みリクエストのうちの1または複数を含む。一実施形態において、メモリ空間トランザクションは、例えば、32ビットアドレスのようなショートアドレスフォーマット、または64ビットアドレスのようなロングアドレスフォーマットといった、2つの異なるアドレスフォーマットを使用可能である。構成空間トランザクションを使用して、PCIeデバイスの構成空間にアクセスする。構成空間に対するトランザクションには、読み取りリクエストおよび書き込みリクエストが含まれる。メッセージ空間トランザクション(または、単にメッセージ)は、PCIeエージェント間のインバンド通信をサポートするよう定義される。
従って、一実施形態において、トランザクション層205は、パケットヘッダ/ペイロード206を組み立てる。現行のパケットヘッダ/ペイロードのためのフォーマットは、PCIe仕様ウェブサイトにおけるPCIe仕様において見出され得る。
図3を素早く参照するに、PCIeトランザクション記述子の一実施形態が示されている。一実施形態において、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムである。この点において、トランザクション記述子300は、システム内のトランザクションの識別をサポートする。他の潜在的な使用としては、既定のトランザクションの順序付けの修正およびチャネルとトランザクションとの関連付けを追跡することを含む。
トランザクション記述子300は、グローバル識別子フィールド302、属性フィールド304およびチャネル識別子フィールド306を含む。図示される例では、グローバル識別子フィールド302は、ローカルトランザクション識別子フィールド308およびソース識別子フィールド310を含むよう示されている。一実施形態において、グローバルトランザクション識別子302は、すべての未処理のリクエストに対し一意である。
一実装に従うと、ローカルトランザクション識別子フィールド308は要求元エージェントによって生成されるフィールドであり、このフィールドは、その要求元エージェントのための、完了を必要とするすべての未処理のリクエストに対して一意である。さらに、この例において、ソース識別子310は、PCIe階層内の要求元エージェントを一意に識別する。従って、ローカルトランザクション識別子フィールド308はソースID310と共に、階層ドメイン内のトランザクションのグローバルな識別を提供する。
属性フィールド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は、物理層220の「デジタル」機能を担当する。この点において、論理サブブロックは、物理サブブロック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は高ロジックレベルから低ロジックレベルへ、すなわち、立ち下りエッジへと、駆動する。差動信号は、より良好な電気的特性、たとえばより良好な信号完全性、すなわちクロスカップリング、電圧オーバシュート/アンダシュート、リンギング等を潜在的に示す。これにより、より良好なタイミングウィンドウを可能にし、それにより、より高速な送信周波数を可能にする。
PCIおよびPCIeを含む従来の相互接続アーキテクチャは、パーソナルコンピュータ(PC)のような従来のコンピューティングデバイスの枠組み中心で主に開発および標準化されてきたが、そこにおいてはチップツーチップ接続、プラグアンドプレイ、およびコンポーネント化アーキテクチャが標準であった。より最新の技術は、市場内におけるデスクトップコンピュータを補完するスマートフォン、ネットブック、ラップトップ、およびタブレットで、より小型で、より可動性のあるコンピューティングに焦点を当ててきた。モバイルコンピューティングデバイスの小型サイズおよびコンパクトなフォームファクタを考慮すると、パーソナルコンピュータは、よりモジュール式でなくなってきている。過去においては、グラフィックカード、メモリ、および他のコンポーネントを交換することが比較的一般的であったが、スマートフォン、タブレット、または他のそのようなデバイスのコンポーネントにアクセスし、アップグレードすることは一般的ではなくなっている。実際、市場によってはアップグレードが必要な場合、オーナが前のデバイスを下取りするか、あるいは前のデバイスを完全に新しいデバイスと交換することが想定されており、これに対し、過去においては、オーナは個々のコンポーネントをアップグレードすることによって、デバイスの寿命を延長することを試行したであろう。多くの現行システムにおいては、コンピューティングハードウェアは、モジュール式モデルから、複数のコンポーネントが単一のボードに統合される統合化モデルまたはシステムオンチップ(SoC)へと移行している。
統合化への動向は、既存の相互接続アーキテクチャを含む、従来のI/O技術を時代遅れにする可能性があると考える者もいる。というのは、I/O技術開発の目的が、チップツーチップ接続を有効化することから、SoCの知的財産(IP)ブロック統合を有効化することに変わってきているからである。本開示は、より短い製品サイクルを通して有意義な価値、一層のシリコン適用柔軟性、コスト低減、電力低減およびユーザエクスペリエンスの向上をもたらし得る改善による信頼性のある確立された相互接続アーキテクチャの原理の上に構築されるメカニズムについて記載している。そのような改善されたI/Oソリューションは、タブレット、電話、および他の低コストの埋め込みプラットフォームに対してのみでなく、他の複数の例の中でも特に、現行および次世代PCに対しても最適化され得る。
PCIおよびPCIeは、PC(例えば、筐体内のチップツーチップ)のローカルI/Oアーキテクチャとしてユビキタスに展開されてきた。また、プラットフォームコントロールハブ(PCH)、I/Oコントローラハブ(ICH)、またはプラットフォームCPIと連携して使用される他のハブデバイスを介して提供される多くの統合機能は、システムソフトウェアにとっては、PCIまたはPCIe機能として見える。代替的および競合的なロード/ストアアーキテクチャは、当該機能の多くおよびPCI/PCIeの微調整が欠如しており、異なる基本的な動作想定(例えば、トランザクション順序付けルールに関する)を形成し、また他のコンピューティングプラットフォームをターゲットとして開発されており、結果的にPCタイプのプラットフォームにおけるこれらのプラットフォームのために開発されたブロックを使用することは、著しいハードウェアおよびソフトウェアの追加コストを招来する可能性がある。
ロード/ストアは、PCI/PCIeのようなロード/ストア I/Oアーキテクチャが現行コンピューティングにおいて根本的な役割を果たす環境をもたらす、CPUの「ネイティブ言語」としてみなされている。例えば、コントローラベースのI/O技術(例えば、USB、SAT A、UniPro)は、ロード/ストア I/Oを使用して、それらのコントローラのCPUに対するインタフェースを取ることができる。CPUに対する直接的な低レベルのインタフェースを提供することによって、ロード/ストア I/Oは、コントローラベースのI/Oに対し、柔軟性と性能面での利点を提供し得る。この柔軟性は、例えば今日のストレージを使って、技術移行を可能にするために特に魅力的である。というのは、新しい特徴および機能を有効にするために、依存関係がより少ないからである。
本開示、以下に記載された特徴、コンポーネント、および例は、他の複数の例の中でも特に、これらの問題のうちの少なくともいくつかに対処し得る。特に、PCIおよびPCIeの仕様を含む、既存の相互接続アーキテクチャの原理の上に構築可能な改善点の集まりが詳細に記載されている。一実装例において、潜在的な他の特徴および機能の中でも特に、以下の機能のうちの1または複数を含み得る高集積PCI(HIPCI)アーキテクチャが提案される。(1)静的デバイス構成値を識別するためにランタイム時におけるプログラムレジスタの使用を排除し得るインスタントデバイス構成。(2)基本的なトランスポートサービス層を持つ層状ドライバモデルを可能にするハードウェア/ソフトウェアアーキテクチャ(例えば、確立されたPCIおよび/またはPCIe機能およびプロトコルの少なくとも一部の上に構築された、同一のものをサービスとして提供する)。これはユニバーサルシリアルバス(USB)クラススタックのような他のプロトコルクラスとの併用を可能にするソフトウェアブリッジを含む、直接のオペレーティングシステム(OS)のサポートを介してサポートされる。(3)システムメモリバッファ処理なしの直接的なデバイスツーデバイス通信のためのフレームワーク。(4)SoCおよびマルチチップパッケージ(MCP)IPブロック統合のための最適化されたIPブロックインタフェース。これらの特徴および他の特徴、並びにそれらの原理は、全体的または部分的に採用可能であり、また他のものから独立して採用可能である。さらに、本明細書の多くの例が、これらの特徴をSoCの文脈または適用において記載している一方、例えば、他の複数の例の中でも特に、PCH、ICH、I/Oハブ(IOH)のような他のシステムおよびコンポーネント、あるいはさらに単一の機能コンポーネントとの関連においても、これらの特徴の適用は全く同様に適切に採用可能であることを理解されたい。
図5は、複数の統合デバイスを採用する、コンピューティングシステムのオペレーティングシステムを含むシステムに係る簡易ブロック図500であり、例えば、複数のIPブロック(本明細書においてシステムブロック、統合ブロック、または単にブロックとも称される)を含むSoCである。コンピューティングシステムは、当該複数のデバイスをシステム上で構成するよう適合されたオペレーティングシステム505を含み得る。システムハードウェアコンポーネントを初期化およびテスト可能な基本入出力システム(BIOS)510が提供され得る。様々なデバイスに対する構成情報は、当該複数のデバイスのレジスタ515に格納され得る。BIOSは、ランタイム時(例えば、ブートアップ時)にレジスタを読み取り、情報をOSに渡すことができる。いくつかの実装において、機械可読インスタント構成データ構造520が追加的に提供され得る。そこから、システムデバイスの構成情報のすべてまたは一部が格納され得、OS505によって、システムハードウェアを構成するために、直接読み取りおよびアクセスされる。いくつかの例において、データ構造520がレジスタ515を全体的または部分的に置換可能であり、それによりレジスタ空間が減少され、コンパクト化され、あるいはいくつかの構成アクティビティをソフトウェアに委任することを介して、最適化されることを可能にする。
電話/タブレットおよび他の埋め込みシステム用に想定された多くのIPブロックは、自動検出/構成「プラグアンドプレイ」メカニズムが欠如している。そのようなメカニズムは、他の複数の例の中でも特に、ユーザがPCI/PCIeアドインカードを追加/除去、USBデバイスをつなぐこと等により、ハードウェア構成を修正した場合、システムの自動構成を可能にするよう元々は開発された。自動構成は、システム内に統合された論理ブロックに対する限定的なユーティリティであると思われる可能性がある(例えば、除去または交換不可)が、それでもなお、そのような機能を提供するアーキテクチャを介して提供される構造のような「プラグアンドプレイ」構成の利点の一部が失われる可能性がある。例えば、可能性のあるシステム/デバイス構成のマトリックスが手に負えないほど大きく成長し、ベンダごとに変わるようになると、そのような構造がなければ、開発者およびオペレーティングシステムおよび仮想化ベンダに対する負荷が増し得る。そのような例においては、デバイス構成の単純な態様ですら、ブロックごとに異なる可能性があり、そのようなシステムの設計、ビルド、および構成がさらに複雑化する。
改善されたシステムにおいて、ハードウェアの検出および構成は、ランタイムからビルド時に、少なくとも部分的に変えることができる。例えば、SOC内に含まれるデバイスの静的属性は、設計時に識別され得、OS(またはハブコントローラ)によって直接アクセス可能な機械可読データ構造(例えば、520)内に永続的に格納されたデータに記述され得る。そのような属性は、OSによって効果的に、即座に識別、または構成され得る。PCI/PCIe機能レジスタのような、機能レジスタのすべてまたは一部は、インスタント構成データ構造内に格納されたデバイス(例えば、IPブロック)メタデータとして再定義され得る。そのようなメタデータ構造(例えば、520)は、例えば、ブート後は修正されない構成レジスタ内に従来格納される情報を含み得る。いくつかの実装において、当該データ構造は、XMLまたは他の機械可読データファイルであり得る。
いくつかの実装において、IPブロックメタデータは、システムの設計時に利用可能である。当該メタデータは、computer aided design(CAD)またはSOC(または他のシステムの)設計において利用される他のツールによる使用のために構成され得る。メタデータを読み取り、メタデータ内に含まれるIPブロック情報に基づいて相互接続ファブリックおよび他のブロックを自動的に構成し得るツールが提供可能である。さらに、ツールは所望のIPブロックのセットをSoC、MCP等に統合すべく、IPブロックメタデータ内の情報を利用し得る。
インスタント構成メタデータを使用(例えば、データ構造520を介して)することにより、ランタイムのデバイス構成を減らすことが可能になる。そのような構造(例えば、520)は、メインシステムメモリ内に格納され得る。さらに、いくつかの実装において、ランタイム時に使用される状態レジスタおよび構成レジスタは、変更されないままに維持可能であり、あるいは例えば、フィールド圧縮(field packing)の密度を改善すべく最適化可能である。あるいは、例えば、構成レジスタを介するよりも、メインメモリ内のデータ構造を介して動作すべく、これらと動作するためのメカニズムは修正可能である。統合システムは、固定のデバイスのセット(例えば、IPブロック)を有すると仮定し得る。当該統合システムの設計中、当該複数のデバイスの特定の属性および構成は、静的であると想定できる。統合された複数のデバイスの集まりに対する静的属性は、IPブロックメタデータ内に記述でき、ソフトウェアレベルでアクセス可能な1または複数のデータ構造内に格納できる。また、いくつかの実装において、「静的」属性のうちのいくつかは、例えば、システムファームウェア(例えば、システムBIOSまたは他のファームウェア)またはオペレーティングシステムにより、当該静的属性に対応するメタデータ値を修正することにより、ソフトウェアレベルで再定義可能である。例えば、システムファームウェアは、オペレーティングシステムに制御を渡す前に、メタデータ構造内で代替の値を記述することによって、または例えば、オペレーティングシステムに代替のメモリポインタを提供することにより、代替のメタデータ構造で置換することによって、システムメモリ内に格納されたメタデータ値を修正できる。
いくつかの例において、特定のIPブロックの静的属性を記述するメタデータは、定義されたスキーマ(例えば、メタデータが設計時に使用されるツールおよび/または統合システム等のオペレーティングシステムと互換性があるような)に従い、そのようなメタデータを提供する様々なソースから取得可能である。一例において、設計時に、SoCに統合される複数の異なるIPブロックのそれぞれの属性は、識別または構成され得る。例えば、識別され得る属性として、ベンダID、デバイスID、および/またはPCIにより定義されるようなクラスコードが含まれる。構成され得る他の属性は、メモリマップされたI/O空間、割り込みベクトル、および/または各IPブロックによってサポートされるそれぞれの最大ペイロードサイズ(MAX PAYLOAD SIZE)のようなIPブロック自体の属性のようなリソース割り当てを含む。それぞれのMAX PAYLOAD SIZEは、メタデータ内で定義可能であり、そのシステムのハードウェアを構成すべく、オペレーティングシステムによってアクセスされるデータ構造内に格納可能である。一例において、アプリケーションは、メタデータ内で定義された互換性のないMAX PAYLOAD SIZE属性を持つ2つのデバイス間でのデータ交換を伴うサービスを要求できる。オペレーティングシステムは、いくつかの例において、非互換性に基づいてサービスを無効として許可しないようにできる。他の例において、オペレーティングシステムは、要求されたサービスが許可されるよう、当該デバイスのうちの1つのMAX PAYLOAD SIZEを一時的に修正し得る。いくつかの実装において、データ構造は、レジスタ値へのリンクを含み得る。いくつかの例において、値およびインスタント構成データ構造に対しなされる変更は、レジスタレベル(例えば、リンクに基づいて)で自動的に反映されるようにできる。いくつかの実装において、定義されたメタデータスキーマが定義され得、当該定義は、対応するレジスタをスキーマ(および当該スキーマ内で記述された値)にマッピング可能である。また、他の複数の例の中でも特に、例えば、メタデータが適切にフォーマットされていること、対応するプロトコル仕様に適合すること、および、MAX PAYLOAD SIZE若しくは別の例示的な属性が、ブロックをシステム内での1または複数の特定の使用に対し好適なものにするかといった、特定のコンテキストでの使用に好適な構成またはブロックを記述することを確認すべく、メタデータの検証が実行可能である。
図6を見ると、いくつかの例示的実施形態により、インスタント構成メタデータを生成および使用するための例示的なシステムを図示する簡易ブロック図600が示されている。図6の特定の例において、IPブロックメタデータ630、635、640をホストするメタデータサーバまたはソース(例えば、610、615、620)と対話可能な例示的な構成ツール605が提供されている。構成ツール605は、プライベートまたはパブリックネットワーク(インターネットを含む)のような1または複数のネットワーク645を経由して、メタデータソース(例えば、610、615、620)とインタフェースを取ることにより、メタデータ(例えば630、635、640)を取得可能である。ステッチャツール650、CADツール、または他のシステム設計ツールのような他のツールが、メタデータから生成された(例えば、構成ツール605によって)IPブロックメタデータまたは他の構成データを使用できる。そのようなツールは、複数のIPブロックを記述するメタデータまたは他のデータを使用するための機能並びに当該複数のIPブロックを相互運用すべく、当該複数のIPブロックおよびオンダイ通信ファブリックを結合する通信ファブリックを含むことができる。いくつかの実装において、他の複数の例の中でも特に、そのようなツールはまた、当該複数のIPブロックに特有の任意のソフトウェアロジックをシステムファームウェア/ソフトウェア(例えば、オペレーティングシステム)に結合または統合すべく使用可能であり、システムソフトウェアを当該複数の特定のIPブロックおよび/または当該ツールを使用して設計された通信ファブリックに合わせて調整する。
一例において、潜在的に考えられる他の複数の例の中でも特に、構成ツール605は、1または複数のデータ処理デバイス655、1または複数のメモリ要素660、並びにクエリエンジン665、メタデータマネージャ670、および構成エンジン675のような1または複数の他のソフトウェアおよび/またはハードウェアベースのコンポーネントを含み得る(本明細書に記載の例示コンポーネントの機能を組み合わせるコンポーネントのような)。クエリエンジン665は、構成ツール605に対し識別された複数のIPブロックのうちの各々に対するメタデータ(例えば、610、615、620)のそれぞれのソースを識別するロジックを含み得る。いくつかの例において、IPブロックのグループ化(SoCまたはMCPに包含されるためにエンジニアにより選択されるIPブロックの特定のグループ化のような)が指定可能である。いくつかの例において、1または複数のソース(例えば、610、615、620)によって提供されるメタデータ(例えば、630、635、640)は、特定のスキーマにより(例えば、均一のXMLテンプレートにより)標準化され得る。各IPブロックのメタデータ(例えば、630、635、640)は、定義されたスキーマに従い、IPブロックの属性を記述し、当該記述をフォーマットできる。いくつかの例において、メタデータソースは、製造者、ベンダ、または特定のIPブロックに関連付けられた他の組織に対応可能である。ソースを識別すると、クエリエンジン665は、メタデータのソースに、対応するIPブロックについてクエリできる。メタデータエンジン670は、クエリおよびIPブロックのグループ化の各々に対するIPブロックメタデータの取得を管理できる。IPブロックの指定のグループ化に対するIPブロックメタデータのセットを取得すると、メタデータエンジンは、当該メタデータのセットを例えば、構成エンジン675に対し利用可能にし得る。
一例において、構成エンジン675は、SoCのようなシステム内でIPブロックのセットをどのように統合および構成するかを判断するためのロジックを含み得る。構成エンジン675のロジックは、提案されたシステムに統合されるIPブロックのIPブロックメタデータのセットを入力として受け入れ、人間による指示なしに自動的に、当該IPブロックのセットに対し提案されるレイアウトおよび構成を判断できる。これには、他の複数の例の中でも特に、ダイ上での複数のIPブロックのレイアウト(またはレイアウト制約)、タイミング制約、複数のIPブロック間の互換性、様々なブロックの諸機能、様々なブロックによってサポートされるトランスポート、IPブロックのドライバ、クロック周波数、システムに提供される多数のゲート、各IPブロックに割り当てるシステムリソースのタイプおよび量の判断が含まれ得る。他の複数の例の中でも特に、レイアウトマネージャ680、互換性エンジン685、機能マネージャ690のような構成エンジン675のサブロジックは、様々なIPブロックの属性を記述するメタデータに対し、様々なチェックおよび分析を実行できる。構成エンジン675は、例えば、取得されたIPブロックメタデータによって記述されるIPブロックのセットを含むシステムに対して、判断された構成情報を記述するスキーママネージャ695を使用して、構成データを生成できる。
いくつかの実装において、例えば、構成エンジン675によって生成される構成データは、構成エンジン675によって判断され、構成データにおいて記述されたシステム構成を具現化するよう製造され得るSoCおよびSoCファブリックのモデルを生成すべく、ステッチツール650によって使用され得る。いくつかの例において、システム設計者はシステム上で実行されるOS周辺のシステムを設計する可能性がある一方、いくつかの実装において、ステッチャツール(例えば、650)または他のツールはさらに、IPブロックの特定のグループ化を組み込むシステムの構成の概要を生成すべく、構成データを利用できる。他の複数の例の中でも特に、OS設計者はそれにより、OSを構成エンジン675により判断され、構成エンジンにより生成された構成データに記述されたシステムの設計時の仕様に合うよう調整できる。実際、他の複数の例の中でも特に、いくつかの実装において、構成ツール605およびステッチャツール650の機能は結合可能である。
いくつかの例において、IPブロックメタデータメカニズムの有用性を強化すべく、各IPブロックまたはデバイスには、一意識別子を割り当て可能であり、対応するIPブロックまたはデバイス(およびメタデータのソース)を記述するメタデータが、当該一意識別子にマッピング可能である(ベンダID/デバイスIDの組み合わせが効果的)。
いくつかの実装において、ハードウェア構成の態様に加え、特定のプラットフォームに存在するハードウェアを最適に動作させるべく、必要なファームウェア/ソフトウェア設定およびドライバを自動的に生成すべく、同様のCADメカニズムが作成され得る。例えば、システムに統合されるブロックにまさに要求される(および対応するメタデータのセットによって記述される)ドライバを含むべく、Linux(登録商標)カーネル構成パラメータが自動的に生成され得る。
構成メタデータがIP統合自動化を改善すべく、使用され得る。インスタント構成(システムの集約コンポーネントのメタデータに基づくデータレコードを介して有効化された)のメカニズムと結合された共通のインタフェース定義が、複数の異なるソースのIPブロックのSoC統合に対する高度な自動化を可能にし得る。上記の通り、機械可読フォーマット(例えば、XML)のSoC統合のために使用される、均一のテンプレートがメタデータのために定義され得る。例えば、共通の信号インタフェースの使用を介して、ベンダ中立な準拠および相互運用性メカニズムが確立可能であり、その結果は、評価されたIPブロックに関連付けられたメタデータとして発行され、統合SoCの全体的な信頼性測定基準に寄与すべく、ステッチツールに供給される。不完全なまたは不適格なテスト結果を持つブロックを含めることは、ツールが例えば、インスタント構成を介して確立された構成情報を使用して、特定の問題のあるケースまたは特定のIPブロックの制限事項が、統合されるSoCの機能または性能に影響を与えないということを判断できない限り、フラグを立てることができる。一例として、特定のIPブロックのMAX PAYLAOD SIZEの制限事項が、提案されるSoC(IPブロックを含む)の機能または性能を全体として制限しないことを判断できる。他の複数の例の中でも特に、上記の複数の態様に加え、レイテンシ管理(例えば、LTR)およびプラットフォーム内のアクティビティの調整(OBFF)のために整合されたSoCの同等物を確立可能なツールが提供でき、シミュレーションおよび検証ツールを提供し、テストは整合された実装を確立および維持するのに適している。
図7を見ると、複数のIPブロックからなる統合システムのようなシステムの構成を記述する構成データ710を生成するステッチャ705(または構成ツール)の例示的な実装の簡易ブロック図が示されている。この特定の例において、ステッチャ705は、IPブロック構成情報のデータベースおよび付随情報(例えば、セット内のIPブロックのためのビルド付随情報)を含むデータ710を生成する。一例において、トランスポートモード、機能、メモリリソース要件、タイミング属性、ペイロード制限、および対応するIPブロックの他の静的、半静的、または既定の属性のような構成属性を指定するIPブロックメタデータ715から構成データ710が生成され得る。ビルド付随データ720はまた、各IPブロックに対し、ステッチャで評価され得る。ビルド付随データは例えば、設計段階で「ソフトIPブロック」またはIPブロックを記述するデータを含み得る。ビルド付随情報は、レジスタ転送言語(RTL)または別のプレシリコン設計言語を使用して実装され得る。いくつかの実装において、ビルド付随データ720は、IPブロックメタデータに含まれ得る。IPブロック準拠性テスト結果データ725も、ステッチャ705によって使用され得、SoCまたはMCPに包含するよう指定された様々なIPブロック間の相互運用性および互換性のレベルを含む、IPブロックの互換性および準拠性分析の結果を記述できる。テストまたは検証ロジック(例えば、テストエンジン730)は、テスト結果データ725を生成すべく、IPメタデータ715の機械可読部分および/またはビルド付随情報720に対し、これらの検証、互換性および準拠テストを実行できる。データ715、720、725から取得された機能、構成パラメータ、およびブロック間の互換性および機能に関する情報を用いて、ステッチャロジック705は、システム(例えば、統合システム)の構成属性(例えば、レイアウト構成、クロック構成、サポートされるトランスポート、IPブロック間の相互運用性構成等)を判断でき、その結果を機械可読構成データ710に記述できる。構成データ710は、潜在的に考えられる他の情報の中でも特に、RTLコード、合成ディレクティブ、制約、およびSoCを構築するために合成すべき他の情報、SoCに特有/適切なOSソースファイル、テスト結果、ユーザ文書を含む、対応するSoCおよびそのコンポーネントの実質的に完全な記述を含むことができる。上記の他の例で示した通り、構成データ710は、例えば、他の潜在的な使用の中でも特に、システムおよびシステムOSの設計者をガイドし、並びにインスタント構成データ構造(例えば、520)の基礎を形成すべく、使用され得る。
上記の通り、プレシリコン「ソフト」IPブロックが、対応するソフトIPブロックに基づいてシリコンに実装され得るハードウェアベースの「ハード」IPブロックの構成および属性を記述するデータに具現化され得る。ソフトIPブロックはこの文脈においてハードIPブロックから区別される一方、「IPブロック」(すなわち、「ハード」または「ソフト」IPブロックとして具体的に称されない場合)の特徴および使用に関する記載が、文脈によってハードおよび/またはソフトIPブロックに適用され得ることを理解されたい。
PCIおよびPCIeのような定義済みの信頼される高性能相互接続トランスポートプロトコルおよびアーキテクチャを提供するシステムが、システムへの統合のための潜在的に考えられる任意のIPブロックのドライバまたは他の上位層ロジックによって活用され得るトランスポート層を介して、サービスとして、実装され得る。従来のPCIは、仕様を定義されたクラスドライバソフトウェアスタックをサポートでき、そこでは各特定のデバイスタイプに対する特定のPCI/PCIeクラス/サブクラス/プログラミングインタフェース(PI)がレジスタインタフェースレベルにおいて定義される。改善されたアーキテクチャにおいては、明示的に定義された層状モデルが提供され、改善されたPCIまたはPCIeプラットフォーム上でサポートされ得る。そこでは、例えば、データトランスポート、シグナリング、およびデバイス管理のような、PCIまたはPCIeアーキテクチャの仕様を定義された原理および特徴のうちの少なくとも一部を適用するサービスが一般的に定義される。図8に示される通り、統合システム内のIPブロックのような複数のデバイス(例えば、805、810、815)は、システム内のすべてのデバイス(例えば、805、810、815)に対し利用可能にされている定義されたPCIトランスポート層835を介して提供されるPCI/PCIeベースのトランスポートサービスとのインタフェースを取ることができ、それを使用可能なIPブロック特有のドライバまたは他の上位レベルのプロトコルおよびロジック(例えば、820、825、830)を有し得る。例えば、デバイス特有のドライバは、デバイス(例えば、805、810、815)の各々に対するこのPCIトランスポート層835基盤の上部に、構築され得る。
いくつかの実装において、システム(例えば、SoC)内の様々なデバイスのために開発されたドライバは、定義された均一のPCIベースのトランスポート層835を含む層状アーキテクチャに基づくことができる。そのような定義されたトランスポート層を使用することで、開発者が特定のデバイス用に一から新しいトランスポートメカニズムを構築するのではなく、実績のあるトランスポートアーキテクチャ(例えば、PCI/PCIe)上に構築できることから、システム開発コストを低減できる。他の複数の例の中でも特に、I/O仮想化の強化およびデータ移動エンジンのようなハードウェアの付加価値機能の製品化を単純にするための確立されたハードウェアメカニズムの均一のセットを用いることで、製品化までの時間およびプラットフォームの堅牢性が改善され得る。
いくつかの例において、図8に示されるもののように、PCIトランスポート層は、定義されたモード840のセットを含み得る。各モードは、定義されたPCI/PCIeトランスポート機能のセットを提供する、それぞれのレベルのサービスを提供できる。いくつかのコンポーネントアプリケーションが、PCI/PCIe性能強化、効率性強化、または省エネルギー機能およびプロトコルを有効に活用してよい一方、他のアプリケーションは、よりベアボーンなバージョンのPCI/PCIeで満足され得る。従って、複数の異なるモードがパッケージされ得、様々なレベルのPCI/PCIeトランスポートおよび対応する機能を提供する。例えば、一例(図8に示すような)において、最高モード(「モード5」)は、ハードウェアスキャッタ/ギャザー機能のためのサポートを含むマルチキューモデルのような、堅牢なPCI/PCIeトランスポートモデルに基づいている。別のモード、「モード4」は、モード5に類似するが、ハードウェアスキャッタ/ギャザーを有さないモデルのような、僅かにより簡易化されたPCI/PCIeトランスポートモデルを提供する。また、さらに簡易化されたモード、「モード3」は、システムメモリ内での固定バッファおよびバスマスタリングをサポートおよび使用する、簡易化されたモデルに従い、PCI/PCIeベースのトランスポートサービスを提供する。別のモード、「モード2」はさらに簡易化されており、固定バッファ(例えば、インメモリマップされたI/O(MMIO))ベースアドレスレジスタ(BAR)メモリ)を持つが、バスマスタリングを持たない(例えば、コンポーネントが送信先であり、送信元ではない)簡易モードを提供する。図8の例において、例示的なPCIトランスポート層モードを介して提供される最も単純なモードは、バスマスタリングを持たず、データ移動(例えば、CPUにより命令されたデータ移動のためのx86MOVS命令を使用する)のためのバイトストリームサポートのみを持つ「モード1」である。
PCIトランスポート層を提供する、システム内のそれぞれ個々のコンポーネントは、PCIトランスポート層のモード(例えば、840)のうちの1または複数をサポート可能である。さらに、いくつかのコンポーネントは、PCIトランスポート層を介して提供されるモードによって拡張され得るコアまたはネイティブトランスポート(例えば、非PCI/PCIe)を有してよい。例えば、USBデバイスは、いくつかの選択された例において、PCIトランスポート層を介して提供される複数のモードのうちの特定の1つを使用して、データを送信できる。実際、PCIトランスポート層の様々なモードは、例えば、トランザクションのいくつかのカテゴリにおけるモードのうちの1つおよび他のトランザクションにおけるモードのうちの別の1つを使用して、特定のデバイス(例えば、IPブロック)によって選択的に使用可能である。
いくつかの実装において、「PCIトランスポート」は、デバイスに対し識別される特定のPCIクラスコード(またはサブクラスまたはプログラミングインタフェース)を介して、システムソフトウェアによって検出される。例えば、1または複数のPCIクラスが、「PCIトランスポート」に割り当て可能であり、当該クラスは、定義されたPCIトランスポートサービスをサポートするハードウェアを含むことを示す。そのような各クラスは、PCIトランスポートの各々の潜在的使用のためのサブクラスを有し得る。例えば、あるサブクラスはストレージに対応でき、別のものはネットワーキング用に、別のものはPCIトランスポート経由のUSB用に、別のものはPCIトランスポート経由のHID用といった具合である。いくつかの実装において、PCIにおけるクラス/サブクラス/PIは、特定の機能に適用可能であり、よって、その機能について、あるものはPCIトランスポートを使用するかまたは使用せず、しかしながら、単一のハードウェアコンポーネントは、複数の機能インタフェースを実装でき、従って、それは、PCIトランスポートを使用する1つの機能と、PCIトランスポートを使用しない別の機能(例えば、当該第2の機能は、例えばWiFiといった、既存のデバイスドライバにバインド可能である)とを有し得る。さらに、デバイスのPCIサブクラスは、どの上位レベルプロトコルが、デバイスのPCIトランスポート層より上にバインドされるかを識別すべく使用され得る。例えば、一例において、プロセス間通信ロジック、ヒューマンインタフェースデバイス(HID)のための既存のスタックへのバインド、または他の上位レベルプロトコルが、特定のデバイスのPCIトランスポート層より上にバインドされ得る。さらに、いくつかの例において、他の複数の例の中でも特に、PCIトランスポート層モードの特定のPCI Pisへの厳格なまたは非公式のマッピングを介する等して、どのPCIトランスポート層メカニズムがデバイスによって使用されるかを定義すべく、デバイスのそれぞれのPCIプログラミングインタフェース(PI)を識別することが使用され得る。いくつかの例において、他の複数の例の中でも特に、マッピングは、例えば、ランタイム時に特定のタスク用のPCIトランスポートサービスを要求する、デバイスドライバのためのAPIを提供すること等による、より静的でない方法でなされ得る。
PCIトランスポート層の実装は、複数の動作モードを定義できる。いくつかの実装において、どのPCIトランスポート層モードが採用されており、システムのどのコンポーネントによってサポートされているかを定義する1または複数のレジスタ、または他のデータ構造が提供され得る。実際、コンポーネントによって採用されるモードのセットは、静的構成属性にでき、システムメモリ内に永続的に維持されるデータ構造(例えば、520)において、システムOS、ソフトウェアアプリケーション、または他のシステム要素への直接的なインスタントアクセスのために定義できる。実際、いくつかの実装において、デバイスによってサポートされるPCIトランスポート層は、当該デバイスに対応するIPブロックメタデータにおいて定義できる。レジスタおよび/またはメタデータはさらに、様々なPCIトランスポート層モードが特定のデバイス(例えば、SoCのIPブロック)によって使用されることになるアプリケーションまたは他の状態を定義できる。潜在的に無限に変わり得る潜在的に考えられる他の例の中でも特に、例を挙げると、一例において、PCIトランスポート層を実装し、複数の異なるプログラミングインタフェースをサポートし、異なる複数のスタックにバインドするシステムは、例えば、独自ドライバ(今日の標準のような)を使用するWiFi PCIe機能、例示的なPCIトランスポート層の特定のモードを使用(例えば、図8の例示のモード4の例のプログラミングインタフェースを使用)してMBIMスタックにバインドするWWAN機能、および異なるプログラミングインタフェースを使用してオーディオスタックをPCIトランスポート層モードの別のモード(例えば、前の例のモード2またはモード3)にバインドするBluetooth(登録商標)機能を有する可能性のある、例えば多機能無線モジュールをサポートし得る。
別の例において、センサ取り付け使用モデルはさらに、PCIトランスポート層の、例えばUSB若しくはHIDの既存のソフトウェアスタックへのバインドを可能にするシステムを活用できる。既存のHIDソフトウェアスタックと相互運用できる能力は、ユーザによる対話のためのプラットフォームセンサを使用する機能構築を単純化でき、例えば、様々なタッチおよび/またはイメージングセンサがマウス若しくはトラックパッドのような既知のポインティングデバイスとしてアプリケーションに表示されるよう作成できる。デバイスが異なる最適化ポイントを用いる異なる転送メカニズムを使用する傾向があるので、以前のソリューションでは、PCI/PCIeのホスト(例えば、ルートコンプレックス)の最適化を容認にすることが難しかったが、例示的な他の利点および用途の中でも特に、PCIトランスポート層およびサービスを確立する追加的な利点として、定義された層が、基礎をなすトランスポートメカニズムからなる共通セットの広範な使用に基づいて、ロード/ストアレベルにおける一連のマイクロベンチマークの定義を有効化できることにある。
PCIトランスポート層の複数の用途の中でも特に、いくつかの実装において、強化された標準化ピアツーピア(または「デバイスツーデバイス」)転送が、有効化され得る。例えば、従来のソリューションは、デバイスツーデバイス転送を有効化するためにサイドバンドデータパスに大幅に依存してきた。しかしながら、これはシリコンおよび基板の柔軟性を制限し、過剰コストをもたらす可能性がある。いくつかのシステムにおいて、直接的なピアツーピア接続を検出および構成するための(いくつかの場合において、少なくとも部分的にPCIトランスポート層上に構築された)アーキテクチャが提供され得る。そのような接続は、オーディオストリームをデジタル信号プロセッサ(DSP)ブロックから出力デバイスへと送信するような簡易な接続から、PCIトランスポート層がサポートされるファブリック(限定されないが、スイッチ、非透過的ブリッジ等を使用して形成されるPCIeファブリックを含む)を使用して接続されるマルチプロセッサシステムにおけるコアツーコア通信までにわたる可能性がある。他の潜在的な利点の中でも特に、いくつかの実装において、あらゆる場合にコストを低減し、デバイス/プラットフォームの柔軟性を向上させつつ、直接的な特定目的のピアツーピアデータパスを介して実現可能なものに相当するか、場合によってはそれよりも優れた電力レベルを実現できる。
一例において、直接的なピアツーピア転送(または、単に「ピア転送」若しくは「直接転送」)機能は、PCIトランスポート層を介して提供され得、それは、例えば、1または複数の一意のサブクラスにマッピングされている等、PCIトランスポート層の他の使用法と区別される。様々な異なるピア転送パスが、システム内の様々なデバイス間で確立され得る。ピア転送のこれらの様々なカテゴリは、さらにサブレイヤ化され得る。例えば、一例では、オーディオ/ビデオ(AV)トランスポートをサポートする一般的なタイプの接続が、当該ピア転送に参加することになる当該デバイスのうちの1つまたは両方に対し識別されたPCIサブクラスに基づいて検出され得る。例えば、転送におけるソースデバイスが、トランスポートされるデータの正確なタイプのような、当該転送の追加属性を判断すべく、クエリされ得る。いくつかの実装において、ピア転送が適用されるトランザクションまたはアプリケーションの属性が識別され得、ピア転送の対応する構成が関与するデバイスの構成属性(例えば、OSによってアクセスされるデータ構造(例えば、520)に含まれるIPブロックメタデータから確認される)に基づいてソフトウェア(例えば、OS)によって確立され得る。ピア転送は、関与するソースおよびシンクデバイスに対し判断された互換性並びに転送タイプ(例えば、データタイプ、ピア転送が実行されるアプリケーションタイプ等)に従い、構成され得る。
図9は、第1のソースデバイスと第2のシンクデバイス(すなわち、ソースデバイスからの転送データを受信するもの)との間にピア転送を構成するための例示的なフローを示す、例示的なフローチャート900を示す。一例において、ソフトウェアアプリケーションまたは他のプログラムが、あるソースデバイスから別のシンクデバイスへのデータ転送を含む、特定のサービスをリクエストできる(905)。当該ソースおよびシンクデバイスは、当該リクエストに基づいて識別され得る。例えば、1または複数の候補ソース要素のセットが、それぞれのデバイスの識別された機能に基づいて、識別(例えば、OSまたは構成メタデータのデータ構造のハブによって)され得る。他の例において、当該ソースおよびシンクデバイスは明示的に識別され得る。また、いくつかの例において、転送されるデータタイプに対し適切なトランスポートのタイプ(PCIトランスポート層を介して提供される特定のモードのような)も識別され得る。ピア転送のタイプにおける当該ソースおよびシンクデバイスの互換性(例えば、PCIトランスポート層のサービス経由で提供される)が判断され得る。例えば、互換性は、他の複数の例の分類の中でも特に、当該ソースデバイスのクラス/サブクラス/PIの識別に基づいて判断され得る(910)。識別されたソースデバイスのクラス/サブクラス/PIがリクエストと互換性がない場合、リクエストを失敗させることができる。また、シンクデバイスのクラス/サブクラス/PIがリクエストと互換性があるかどうかも判断され得る(915)。ソースおよびシンクデバイスが、互換性がある場合、ソースデバイスは、選択されたプログラミングインタフェース(例えば、PCIトランスポート層)を使用して、シンクデバイスをターゲットとするよう構成され得る。ピア転送を終了させるリクエストが受信される(例えば、925において)まで、当該転送は続行され得る。シンクデバイスは、例えば、転送終了時に当該シンクおよびソース間で出現する可能性のある競合状態を補助すべく、データの処理は停止するが、データの受け入れは続行するよう構成され得る(930)。ピア転送を終了するために次に、ソースデバイスは935において無効化され、開始状態に戻され得る(例えば、潜在的な将来のトランザクションに備える)。同様に、シンクデバイスも940において、無効化され、開始状態に戻され得る。
前の例で暗示したように、デバイスの構成属性(例えば、サポートされるトランスポートモード、機能等)は、シンクデバイスのPCI/PCIe クラス/サブクラス/PIの連結によって定義される分類子から識別され得る。各クラス/サブクラス/PIは、対応するタイプのサービスを提供可能な、または対応するタイプのサービスに参加可能な複数のデバイスのカテゴリに関連付けられることができ、さらにデバイス間の互換性を識別すべく、使用できる。デバイスの構成属性(例えば、クラス/サブクラス/PIベース)は、システム上で実行される特定のアプリケーションを含むソフトウェアに表示できる。いくつかの場合において、他の複数の例の中でも特に、アプリケーションが、システムに、ピア転送のような特定のトランザクションを実行するためのデバイスが欠如していると識別した場合、当該アプリケーションは、ソフトウェアで追加のステップを実行することによって、ハードウェアの当該識別された欠陥をプログラム的に埋め合わせる手段を用いることができる。
いくつかの実装において、ピア転送に対応する特定のアクティビティのためのシステムリソースを判断することによって、ピア通信を可能にすべく、いくつかのデータパスがランタイム時に動的に提供され得る。他の複数の例の中でも特に、特定のピア転送トランザクションで使用されないと判断された他のリソースは、パワーダウンできる。そのような直接転送の動的な使用は、SoCアクティビティを特定のワークロードに対しアクティブになるブロックのみに限定されるようにでき、直接転送アクティビティ中、SoCファブリック要素、バッファ等を含む他のリソースがパワーゲートされることを保証する。いくつかの実装において、システム(SoCのような)内のIPブロックは、さらなる効率性を導入すべく、専用データムーバおよびI/O中心のワークロードを、より大型のコアおよびシステムメモリのような中央リソースからオフロードされるようにできる異種のI/O最適化コアを含むことができる。
いくつかの実装において、ピア転送の使用に対し、AVトランスポートとの接続のような切り替えメカニズムが提供され得、アプリケーションまたはプラットフォーム動作モードが変わる際、例えば、異なるソースからのデータフローの歪み(例えば、不調、屈曲等)のない移行を補助する。例えば、切り替えメカニズムは、ホストCPUがオーディオ処理を実行しているが、このタスクを特化エンジンにオフロードし、節電のためシャットダウンするモードからの切り替えに使用できる。さらに、いくつかの場合において、TC0/VC0上のようなピア転送トラフィックを区画から分離すべく、トラフィッククラス(TC)/仮想チャネル(VC)差別化(PCI/PCIeで定義されるような)も提供され得る。あるいは、他の複数のPCI/PCIe機能の中でも特に、Relaxed Ordering(RO)およびID Ordering(IDO)のような順序付け属性が、ピア転送トラフィックに適用可能であり、例えば、他の複数の例の中でも特に、状況に応じてピア転送トラフィックのブロック解除を可能にする。
従来のPCIeは通常、配線コネクタ、ケーブル等を介して単一のプリント基板上で接続され得る2つのコンポーネントのインタフェースを取るために定義された高速シリアル物理インタフェースの文脈の中で考えられている。PCI/PCIeアーキテクチャは、オンダイ統合のために実装されてきたが、PCI/PCIeオンダイを統合する従来のソリューションは、インテルオンチップシステムファブリック(IOSF)のような独自のインタフェースを用いる。そのような独自のファブリックおよびSoC統合技術と方法論を開発するコストは、場合によっては容認できるが、最小の開発若しくは経常コストにおいて、他の独自技術と相互運用するSoC技術のPCI/PCIe原理を実装するための定義されたアーキテクチャは、顕しい利益を生み出すことができる。例えば、様々な新しいシステムおよびシステムの柔軟性が、内部および外部の両方のソースのIPブロックの使用を介して実現され得る。例えば、IPブロック統合を容易にすべく、IPブロックとSoCの残部との間の明確に定義されたインタフェースが定義可能である。さらに、プログラミングモデルおよび他のソフトウェアの関連する態様を含む、IPブロック間同士およびSoCの他の部分とのインタフェースを取るためのツールおよび技術も、IPブロックのための動作環境を確立するアーキテクチャと共に、概して確立可能である。
図10は、様々なPCI/PCIeアーキテクチャモデルを示す簡易ブロック図を示す。従来のPCI/PCIeシステムにおけるデバイス間トランスポートは通常、モデル1005に従い概念化されてきた。そこでは、2つの個別のコンポーネント(ホストおよびデバイスのような)がトランザクション、データリンク、および物理層を使用して実装される従来のPCIeリンク経由で接続されている。さらに、いくつかの場合において、パイプ物理層インタフェースが利用され得る。パイプインタフェースは従来、MAC/PHYインタフェースとして実装されてきたが、参照により本明細書に組み込まれる米国特許第8,395,416号に記載の通り、IPブロックインタフェースのような統合システム内でも使用可能である。モデル1010に示される通り、パイプインタフェース、すなわち「パイプ‐Lリンク」を使用して実装されたIPブロックインタフェースは、そのようなリンクを使用して接続されたIPブロックコンポーネントに対しほとんど修正を加えることなく、あるいはまったく修正を加えることなく、正常に展開可能である。しかしながら、いくつかの場合において、パイプ‐Lベースのソリューションは、シリコン領域の最適化使用を満たさないといった、いくつかの欠点を被る可能性がある。リンクのさらなる第3のカテゴリにおいて、データリンクおよび物理層ロジックへの依存から引き離し、相互接続アーキテクチャの実装のためのシリコンの使用を最適化するArea Optimized Blockインタフェース(AOB)リンクが定義および提供可能である。AOBリンクは、モデル1015に図示の通り、IPブロック間の直接のトランザクション層対トランザクション層インタフェースを容易にできる。そのような複数の実装において、他の複数の例の中でも特に、IPブロック自体の上流層は、IPブロックを互いに、およびコア、メインメモリのようなシステムの中央リソースに接続する「ファブリック」を実装できる。
一例において、月並みな従来のPCI/PCIeアーキテクチャにおいて確立された従来の個別のコンポーネント信号送信モデル(例えば、1005)のコア機能を維持しつつ、トランザクション層対トランザクション層の信号送信の柔軟性を提供する信号のライブラリを含むAOBリンクインタフェースが提供可能である。以下の例においては、概してリンクインタフェースは、存在するすべての機能とともに記載されている。しかしながら、特定の例は、すべての機能を必要としない可能性があり、そのような場合は簡易サブセットが実装され得る。
一例において、AOBリンクインタフェースは、PCI/PCIeアーキテクチャの不可欠な態様と一貫性のある、生成可能または使用可能なすべてのタイプのTLPを含むことができる。例えば、PCIeは、トランザクション層パケット(TLP)の3つのクラス、すなわち、Posted、NonPosted、およびCompletionを区別し、これら3つのタイプに基づいて順序付けルールを定義する。AOBリンクインタフェースの「送信機」側は、「受信機」からのフロー制御情報に基づいてTLPの送信のための正しい順序を判断する。AOBリンクインタフェースのいくつかの実装においては、従来のPCI/PCIeにおけるようにクレジットベースのフロー制御を使用するのではなく、ハンドシェイクメカニズムが提供可能である。そのようなハンドシェイクおよびAOBリンクインタフェースの他の特徴を提供するには、定義された信号のライブラリが提供可能である。例えば、AOBリンクインタフェースの一例において、信号およびセマンティクスは、次のものを含み得る。
いくつかの実装において、PCI/PCIeにおけるヘッダをフォーマットするヘッダが採用され得る。しかしながら、他の複数の例の中でも特に、いくつかの例において、ヘッダは従来のPCI/PCIeヘッダより小さいサイズで定義可能であり、これは例えば、統合システムにおいて実装されるリンク幅が狭くなることが主な原因である。上記の表のUp/DnおよびDn/Up注記によって記載された通り、いくつかの信号は潜在的なシンクデバイスによって、潜在的なソースデバイス(すなわち、Up/Dn)に対し上流にアサートされることができ、それによりソースデバイスに影響を与える(例えば、保留信号)。あるいは、送信された(または送信される)(すなわち、Dn/Up)データに関する情報を含めるべく、有効信号のような他の信号がデータの送信機によってアサートされ得る。
図11Aから11Dを見ると、SoCアーキテクチャおよび他のシステムにおいて採用可能な例示的な技術を示すフローチャート1100a〜1100dである。例えば、図11Aの例においては、構成メタデータが、オペレーティングシステムまたは他のシステムソフトウェアにアクセス可能なデータ構造内に永続的に格納可能であり、システム上のデバイスの様々な(場合によっては、静的)構成パラメータを記述する。いくつかの場合において、例えば、IPブロック、チップ、またはSoCの他のコンポーネントのようなデバイスがシステム内に統合可能である。データ構造内に定義済みのシステムデバイスに関する1または複数の構成パラメータを使用して、既に存在する(例えば、ランタイム前)データ構造が、例えばランタイム時に識別可能である(1105)。各デバイスの特定の構成パラメータが、データ構造にアクセスし、そこから読み取ることによって、識別可能である(1110)(例えば、オペレーティングシステムを使用して)。データ構造から識別(1110)されたこれらの構成パラメータに少なくとも部分的に基づいて、デバイスは構成可能である。他の複数の例の中でも特に、デバイスのうちの1または複数の他の構成パラメータが、例えば、システムファームウェア(例えば、BIOS)のスキャンによって、ランタイム時に識別および定義可能であり、それぞれのデバイスを構成すべく、データ構造から識別された構成パラメータと関連させて使用可能である。
図11Bにおいて、デバイス構成メタデータに基づくまたはそれを含むデータ構造が、例えば、オペレーティングシステムまたは他のシステムソフトウェアによって、アクセス可能である(1120)。構成メタデータは、データ構造内に永続的に格納可能であり、システム上のデバイス並びにシステム(例えば、SoC)全体の様々な(場合によっては、静的)構成パラメータを記述する。構成パラメータはまた、デバイス(例えば、ドライバ若しくは他のハードウェアおよび/またはソフトウェアロジック)のロジックが、標準化されたトランスポート層にバインドされ、それを使用することを識別するのに使用可能である(1125)。トランスポート層は、他のプロトコルをそれらのネイティブプロトコルとして利用するデバイスを含む、他のデバイスにより使用されるサービスとして提供されるPCIeトランスポート層であり得る。いくつかの例において、トランスポート層は、複数のモードを定義可能であり、デバイスによってサポートまたは使用されるトランスポート層モードのサブセットが構成パラメータから判断可能である(1130)。一例において、構成パラメータは、予め定義可能(例えば、ランタイム前)であり、システム内のデバイスのクラス、サブクラス、および/またはプログラミングインタフェース、およびデバイスによるトランスポート層のバインドおよび使用を示すことができ、並びにデバイスによって使用されるトランスポート層モードは、デバイスのそれぞれのクラス、サブクラス、および/またはプログラミングインタフェース分類から識別できる。
図11Cを見ると、いくつかの例において、システム上のソフトウェアアプリケーションのサービスリクエストのような、サービスリクエストが識別可能である(1140)。サービスリクエストは、直接的なデバイスツーデバイス、すなわちピアツーピアのデータ転送に関連付けられると識別され得る。デバイスツーデバイスデータ転送を介して要求されたサービスの少なくとも一部を実行するための機能を含む第1および第2のデバイスが識別され得る。デバイスツーデバイスデータ転送における第1のデバイスの第2のデバイスとの互換性が判断可能である(1145)。デバイスの機能を識別し、それらの互換性を判断するこことは、他の複数の例の中でも特に、構成データ構造および/またはデバイスレジスタに格納されたデバイス構成情報に基づくことができる。第1のデバイスおよび第2のデバイスに互換性がある場合、第1のデバイス(および潜在的には第2のデバイスも)は、デバイスツーデバイスデータ転送を実行すべく、構成可能である(1150)。他の複数の例の中でも特に、データ転送に関与しない他のデバイスは、第1のデバイスおよび第2のデバイスがデバイスツーデバイスデータ転送(または「ピア転送」)を完了する間、一時的にアイドルまたは非アクティブ化されてよい。
図11Dにおいて、フローチャート1100dが、システムオンチップ(SoC)または他の統合システムに含まれるデバイスのセットを記述するデータの識別(1160)を含む例を示す。データは、他の複数の例の中でも特に、デバイスメタデータ、ビルド付随情報、テスト結果、ユーザ文書を含むことができる。データは、デバイスのセットにおける各デバイスに対し、取得可能である(1165)。例えば、セット中の各デバイスに対するそれぞれのデータソースが識別可能であり、そのデータについてデータソースにクエリ可能である。識別されたソースのクエリから戻されたデータは、例えば、ステッチャまたは他のシステム設計ツールによって処理され、当該デバイスのセットを含む統合システムの構成を判断できる(1170)。他の複数の例の中でも特に、判断された構成を記述するシステム構成データが生成可能であり、システム内での使用のために構成データ構造を生成すべく使用可能であり、システムのオペレーティングシステム構成の自動化設計において使用可能である。
上記の装置、方法、およびシステムは、前述の通り、任意の電子デバイスまたはシステムにおいて実装されてよいことに留意されたい。具体例として、以下の図は、本明細書に記載の本発明を利用するための例示的なシステムを提供する。以下のシステムがより詳細に記載される通り、多数の異なる相互接続が開示され、記載され、上記説明から再検討される。容易に明らかなように、上記の進歩は、それらの相互接続、ファブリック、またはアーキテクチャのうちの任意のものに適用され得る。
図12を参照すると、マルチコアプロセッサを含むコンピューティングシステムの一実施形態のブロック図が示されている。プロセッサ1200は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、コードを実行する他のデバイスのような任意のプロセッサまたは処理デバイスを含む。一実施形態において、プロセッサ1200は、少なくとも2つのコア、コア1201および1202を含み、これらは、非対称コアまたは対称コアを含んでよい(図示された実施形態)。しかしながら、プロセッサ1200は、対称または非対称であり得る任意の数の処理要素を含んでよい。
一実施形態において、処理要素とは、ソフトウェアスレッドをサポートするハードウェアまたはロジックを指す。ハードウェア処理要素の例としては、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、および/または、実行状態またはアーキテクチャ状態のようなプロセッサの状態を保持可能な任意の他の要素を含む。換言すると、一実施形態において、処理要素は、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードのようなコードに独立して関連付け可能な任意のハードウェアを指す。物理プロセッサ(またはプロセッサソケット)は通常、コアまたはハードウェアスレッドのような任意の数の他の処理要素を潜在的に含む集積回路を指す。
コアとは通常、独立のアーキテクチャ状態を維持可能な集積回路上に位置するロジックを指し、独立に維持される各アーキテクチャ状態は、少なくともいくつかの専用実行リソースと関連付けられる。コアとは対照的に、ハードウェアスレッドとは通常、独立のアーキテクチャ状態を維持可能な集積回路上に位置された任意のロジックを指し、独立に維持されるアーキテクチャ状態は、実行リソースへのアクセスを共有する。わかる通り、特定のリソースが共有され、他のリソースが特定のアーキテクチャ状態に専用化された場合、ハードウェアスレッドおよびコア間の用語体系のラインが重複する。さらにしばしば、コアおよびハードウェアスレッドは、オペレーティングシステムによって個々の論理プロセッサとして見なされ、その場合、オペレーティングシステムは、各論理プロセッサに対する操作を個々にスケジューリング可能である。
図12に示されるように、物理プロセッサ1200は2つのコア、すなわちコア1201および1202を含む。ここで、コア1201および1202は、対称コア、すなわち、同一の構成、機能ユニット、および/またはロジックを備えるコアであるとみなされる。別の実施形態において、コア1201はアウトオブオーダプロセッサコアを含む一方、コア1202はインオーダプロセッサコアを含む。しかしながら、コア1201および1202は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、共同設計されたコア、または他の既知のコアといった、任意のタイプのコアから個々に選択されてよい。異種コア環境(すなわち、非対称コア)においては、バイナリ変換のような、ある形態の変換が利用されてよく、一方または両方のコアに対し、コードをスケジューリングまたは実行する。まだ説明していないが、コア1201内の図示された機能ユニットについて、以下にさらに詳細に述べる。コア1202におけるユニットは、図示された実施形態において同様の態様で動作する。
図示の通り、コア1201は、ハードウェアスレッドスロット1201aおよび1201bとも称され得る、2つのハードウェアスレッド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における並べ替えバッファのようないくつかのリソース、ILTB 1120、ロード/ストアバッファ、およびキューが、パーティショニングを介して共有されてよい。汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュおよびデータTLB1250、実行ユニット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のレベルキャッシュのような、より高レベルまたはより遠いキャッシュへのアクセスを共有する。より高レベル、またはより遠いとは、増加した、または実行ユニットからさらに離れた、キャッシュレベルを指すことに留意されたい。一実施形態において、より高レベルのキャッシュは、ラストレベルデータキャッシュ、すなわちプロセッサ1200のメモリ階層のラストキャッシュであり、例えば第2または第3のレベルデータキャッシュである。しかしながら、より高レベルのキャッシュはそのように限定されず、命令キャッシュに関連付けられてよく、またはそれを含んでよい。トレースキャッシュ、命令キャッシュのタイプが代わりに、デコーダ1225の後に連結され、最近デコードされたトレースを格納してよい。ここで、命令は潜在的にマクロ命令(すなわち、デコーダにより認識される一般的命令)を指し、それは複数のマイクロ命令(マイクロ操作)にデコードされてよい。
図示の構成において、プロセッサ1200はまた、オンチップインタフェースモジュール1210を含む。歴史的には、メモリコントローラは、以下で詳細に後述するが、プロセッサ1200の外部のコンピューティングシステムに含まれてきた。このシナリオでは、オンチップインタフェース1210は、プロセッサ1200の外部のデバイス、例えば、システムメモリ1275、チップセット(通常、メモリ1275に接続するメモリコントローラハブ、および周辺デバイスに接続するI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、または他の集積回路、と通信する。またこのシナリオでは、バス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)、Advanced Microcontroller Bus Architecture(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は、1または複数のマイクロ命令またはマイクロオペレーションの形態であり得るデコードされた命令をフロントエンドユニット1470から受信し、それらをレジスタ等の適切なリソースに割り当てる割り当てユニット1482を含む。次に、命令は予約ステーション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と通信し、当該第1のレベルキャッシュはまた中間レベルキャッシュ1476と通信することを留意されたい。追加のコア1430N2〜1430Nが、LLC1495に連結できることにも留意されたい。図14の実施形態においては、この高レベルにおいて示されているが、様々な変更および追加のコンポーネントが存在してよいことを理解されたい。
図15を参照すると、命令を実行するための実行ユニットを含むプロセッサで形成された例示的なコンピュータシステムのブロック図が示されており、そこでは、1または複数の相互接続が、本発明の一実施形態に従い、1または複数の機能を実装する。システム1500は、本明細書に記載される実施形態のような本発明に従い、処理データのためのアルゴリズムを実行するロジックを含む実行ユニットを採用するプロセッサ1502のようなコンポーネントを含む。システム1500は、PENTIUM(登録商標) III(商標)、Pentium(登録商標)4(商標)、Xeon(商標)、Itanium、XScale(商標)および/またはStrongARM(商標)マイクロプロセッサに基づく典型的な処理システムであるが、他のシステム(他のマイクロプロセッサを有するPC、エンジニアリングワークステーション、セットトップボックス等も含む)も使用されてよい。一実施形態において、サンプルシステム1500は、ワシントン州レドモンドのマイクロソフト社から入手可能なWINDOWS(登録商標)オペレーティングシステムのあるバージョンを実行するが、他のオペレーティングシステム(例えば、UNIX(登録商標)およびLinux(登録商標))、埋め込みソフトウェア、および/またはグラフィカルユーザインタフェースも使用されてよい。従って、本発明の複数の実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
実施形態は、コンピュータシステムに限定されない。本発明の代替的な実施形態は、ハンドヘルドデバイスおよび埋め込みアプリケーションのような他のデバイスにおいて使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、およびハンドヘルドPCを含む。埋め込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、あるいは少なくとも一実施形態に従う1または複数の命令を実行し得る任意の他のシステムを含み得る。
この示された実施形態では、プロセッサ1502は、少なくとも1つの命令を実行するアルゴリズムを実装する1または複数の実行ユニット1508を含む。一実施形態が、シングルプロセッサのデスクトップまたはサーバシステムの文脈で記載されることがあるが、代替的な実施形態が、マルチプロセッサシステムに含まれてよい。システム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は、一実施形態において、実行時に特定のマイクロ命令のためのアルゴリズムを実行する、または複雑なシナリオを処理するマイクロコードを格納するマイクロコード(μコード)ROMを含む。ここで、マイクロコードは、プロセッサ1502のためのロジックバグ/修正を処理すべく、潜在的に更新可能である。一実施形態について、実行ユニット1508は、パックされた命令セット1509を処理するためのロジックを含む。パックされた命令セット1509を汎用プロセッサ1502の命令セットに、命令を実行するための関連付けられた回路とともに含むことで、多くのマルチメディアアプリケーションによって使用される操作は、汎用プロセッサ1502のパックされたデータを使用して実行されてよい。従って、パックされたデータに対し操作を実行するためのプロセッサのデータバスの全幅を使用することによって、多くのマルチメディアアプリケーションが、加速され、より効率的に実行される。これにより、1または複数の操作を実行すべく、一度に1つのデータ要素といった、より小さなデータ単位をプロセッサのデータバスに渡り転送する必要性が潜在的になくなる。
実行ユニット1508の代替的な実施形態は、マイクロコントローラ、埋め込みプロセッサ、グラフィックデバイス、DSP、および他のタイプのロジック回路においても使用されてよい。システム1500は、メモリ1520を含む。メモリ1520は、動的ランダムアクセスメモリ(DRAM)デバイス、静的ランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、または他のメモリデバイスを含む。メモリ1520は、プロセッサ1502によって実行されるデータ信号によって表される命令および/またはデータを格納する。
本発明に係る前述の特徴または態様のうちの任意のものが、図15に例示された1または複数の相互接続で利用されてよいことに留意されたい。例えば、プロセッサ1502の内部ユニットを連結するための、不図示のオンダイ相互接続(ODI)が、上記の本発明の1または複数の態様を実装する。あるいは、本発明はプロセッサバス1510(例えば、他に高性能コンピューティング相互接続として知られる)、メモリ1520への高帯域幅メモリパス1518、グラフィックアクセラレータ1512へのポイントツーポイントリンク(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(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に連結し、これらは、それぞれのプロセッサへローカルに取り付けられたメインメモリの部分であってよい。
プロセッサ1670、1680はそれぞれ、ポイントツーポイントインタフェース回路1676、1694、1686、1698を使用する個々のP−Pインタフェース1652、1654を介して、チップセット1690と情報を交換する。チップセット1690はまた、高性能グラフィックス回路1638と、高性能グラフィックス相互接続1639沿いのインタフェース回路1692を介して情報を交換する。
共有キャッシュ(不図示)は、いずれかのプロセッサの内部に含まれ、または両方のプロセッサの外部にあってもよいが、プロセッサが低電力モードであっても、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、P−P相互接続を介して複数のプロセッサに接続される。
チップセット1690が、インタフェース1696を介して、第1のバス1616に連結されてよい。一実施形態において、第1のバス1616は、ペリフェラルコンポーネントインターコネクト(PCI)バス、またはPCI Expressバスまたは別の第3世代I/O相互接続バスのようなバスであってよいが、本発明の範囲はそのように限定されない。
図16に示されるように、様々なI/Oデバイス1614が、第1のバス1616に、バスブリッジ1618とともに連結され、このブリッジは、第1のバス1616を第2のバス1620へと連結する。一実施形態において、第2のバス1620は、low pin count(LPC)バスを含む。様々なデバイスが、第2のバス1620に連結され、例えば、キーボードおよび/またはマウス1622、通信デバイス1627および、通常、一実施形態において命令/コードおよびデータ1630を含むディスクドライブまたは他の大容量ストレージデバイスのようなストレージユニット1628を含む。さらに、オーディオI/O 1624が第2のバス1620に連結されて示されている。他のアーキテクチャが可能であり、その場合、含まれるコンポーネントおよび相互接続アーキテクチャが変わることに留意されたい。例えば、図16のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装してよい。
次に図17を見ると、本発明に従うシステムオンチップ(SOC)設計の一実施形態が示されている。具体的な例示として、SOC1700が、ユーザ機器(UE)に含まれる。一実施形態において、UEとは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付きノートブック、または任意の他の同様の通信デバイスのような、通信するためにエンドユーザによって使用される任意の他のデバイスを指す。通常、UEは、GSM(登録商標)ネットワークにおける本質的な移動局(MS)に潜在的に対応する、基地局またはノードに接続する。
ここで、SOC1700は、2つのコア、1706および1707を含む。上記と同様、コア1706および1707は、Intel(登録商標)Architecture Core(商標)ベースのプロセッサ、Advanced Micro Devices, Inc.(AMD)のプロセッサ、MIPSベースのプロセッサ、ARMベースのプロセッサ設計、またはそれらの顧客、並びにライセンシー若しくは採用者等の命令セットアーキテクチャに準拠してよい。コア1706および1707は、システム1700の他の部分と通信するため、バスインタフェースユニット1709およびL2キャッシュ1711に関連付けられたキャッシュ制御1708に連結されている。相互接続1710は、IOSF、AMBA、または上述した他の相互接続のようなオンチップ相互接続を含み、本明細書に記載の1または複数の態様を潜在的に実装する。
インタフェース1710は、SIMカードとのインタフェースを取る加入者識別モジュール(SIM)1730、SOC1700を初期化およびブートすべくコア1706および1707によって実行されるブートコードを保持するブートROM1735、外部メモリ(例えば、DRAM1760)とインタフェースを取るSDRAMコントローラ1740、不揮発性メモリ(例えば、フラッシュ1765)とインタフェースを取るフラッシュコントローラ1745、周辺機器とインタフェースを取る周辺コントロール1750(例えば、シリアル周辺インタフェース)、入力(例えば、タッチ対応入力)を表示および受信するビデオコーデック1720およびビデオインタフェース1725、グラフィック関連の計算を行うGPU1715等といった他のコンポーネントに対する通信チャネルを提供する。これらのインタフェースのうちの任意のものが、本明細書に記載の本発明の複数の態様を組み込んでよい。
また、本システムは、Bluetooth(登録商標)モジュール1770、3Gモデム1775、GPS1785、およびWiFi 1785のような通信用の周辺機器を示す。上記の通り、UEは通信用無線を含むことに留意されたい。結果的に、これら周辺通信モジュールがすべて必要なわけではない。しかしながら、UEにおいては、外部通信用の何らかの形式の無線通信が含まれる。
本発明は、限定された数の実施形態に関し記載されているが、当業者はそれらからの多数の修正形態および改変形態を想起するであろう。添付の特許請求の範囲は、そのようなすべての修正形態および改変形態が、本発明の真の精神および範囲に属することを意図している。
設計は、作成からシミュレーション、そして製造まで様々な段階を経ることがある。設計を表わすデータは、当該設計を多数の態様で表してよい。第1に、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語または別の機能記述言語を使用して表されてよい。また、ロジックおよび/またはトランジスタゲートを持つ回路レベルモデルが、設計処理のどこかの段階で生成されてよい。さらに、いくつかの段階において、多くの設計は、ハードウェアモデルにおける様々なデバイスの物理的配置を表わすレベルのデータに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータとは、集積回路の製造に使用されるマスクのための異なるマスク層に、様々な特徴が存在するか存在しないかを指定するデータであってよい。設計の任意の表現において、データは任意の形態の機械可読媒体に格納されてよい。メモリまたはディスク等の磁気または光ストレージが当該機械可読媒体であってよく、変調されたまたはそれ以外の方法で生成された、そのような情報を送信するための光または電気の波を介して送信される情報を格納する。コードまたは設計を、示しまたは搬送する電気的な搬送波が送信される場合、その電気信号のコピー、バッファ処理、または再送信が実行される範囲において、新たなコピーが作成される。従って、通信プロバイダまたはネットワークプロバイダは、搬送波にエンコードされた情報のような、本発明の複数の実施形態における複数の技術を具体化した項目を有形の機械可読媒体に少なくとも一時的に格納してよい。
本明細書で使用されるモジュールとは、ハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせを指してよい。一例として、モジュールは、マイクロコントローラのような、マイクロコントローラによって実行されるよう適合されたコードを格納するための非一時的媒体に関連付けられたハードウェアを含む。従って、一実施形態において、モジュールという言及は、非一時的媒体に保持されるコードを認識および/または実行するよう特に構成されたハードウェアを指す。さらに、別の実施形態において、モジュールの使用は、予め定められた動作を実行するためのマイクロコントローラによって実行されるよう特に適合されたコードを含む非一時的媒体を指す。さらに、推測され得るように、さらなる別の実施形態では、モジュールという用語は(この例では)、当該マイクロコントローラおよび当該非一時的媒体の組み合わせを指すことがある。通常、別個に示されるモジュールの境界線は一般に変化し、潜在的には重複する。例えば、第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または複数の統合ブロックの複数の構成パラメータを定義するデータ構造にアクセスし、上記データ構造において定義された対応する複数の構成パラメータに基づいて、上記複数の統合ブロックのうちの1または複数を構成させ、上記複数の構成パラメータはランタイム前に設定され、上記データ構造内に永続的に格納される、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
少なくとも一例において、上記複数の構成パラメータは、上記1または複数の統合ブロックのために維持されるメタデータに基づいている。
少なくとも一例において、上記複数の構成パラメータのうちの少なくともいくつかは、上記集積回路デバイスのビルド時に定義される。
少なくとも一例において、上記データ構造において定義された上記複数の構成パラメータのうちの少なくとも一部は、複数のペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)機能を含む。
少なくとも一例において、上記複数の構成パラメータは、それぞれのデバイスによってサポートされる複数のトランスポートモードを含み、上記複数のトランスポートモードは、定義されたトランスポート層における複数のモードを含む。
少なくとも一例において、上記データ構造は、上記1または複数の統合ブロックの各々に対し、上記統合ブロックのそれぞれのPCIクラス、サブクラス、およびプログラミングインタフェースを識別する。
少なくとも一例において、上記集積回路デバイス内の1または複数のレジスタが、上記データ構造において定義された構成情報に基づいてランタイム時に入力される。
少なくとも一例において、上記1または複数の統合ブロックに関連付けられた複数のレジスタの複数のクエリからランタイム時に生成されるデータがアクセス可能である。
少なくとも一例において、上記1または複数の統合ブロックのうちの少なくとも1つの複数の追加の構成パラメータを識別するデータが受信可能であり、上記複数の追加の構成パラメータはランタイム時に検出される。
少なくとも一例において、上記構成する段階は、オペレーティングシステムによって実行され、上記データはBIOSから受信される。
少なくとも一例において、上記システム内の1または複数のレジスタは、データ構造にリンクされ、上記データ構造において定義された複数の構成パラメータで入力されており、上記データ構造において定義された上記複数の構成パラメータのうちの特定の1つは変更可能であり、特定のレジスタ値が、上記特定のレジスタ値と上記データ構造との間のリンクに基づいて、上記特定の構成パラメータへの変更を反映するよう更新される。
少なくとも一例において、処理要素と複数の統合ブロックとを含む集積回路と、上記複数の統合ブロックのうちの少なくとも1つのためにランタイム前に複数の構成パラメータを保持する永続ストレージと、上記複数の構成パラメータに基づいて上記複数の統合ブロックのうちの上記少なくとも1つを構成し、上記永続ストレージからの上記複数の統合ブロックのうちの上記少なくとも1つのための複数の状態レジスタへの複数のアクセスをサービスするロジックと、を備える装置が提供される。
少なくとも一例において、少なくとも1つのデータプロセッサと、複数のデバイスと、メモリに格納され、上記複数のデバイスのうちの1または複数に係る複数の構成パラメータを定義するデータ構造と、オペレーティングシステムと、を含み、上記複数の構成パラメータは、永続的に定義されており、上記オペレーティングシステムは、上記データ構造にアクセスし、上記データ構造において定義された対応する複数の構成パラメータに基づいて上記複数のデバイスのうちの1または複数を構成する、システムが提供される。
少なくとも一例において、上記複数のデバイスの少なくとも一部は、複数のIPブロックを含む。
少なくとも一例において、上記システムは、システムオンチップを含む。
少なくとも一例において、システム内の1または複数のデバイスの複数の構成パラメータを定義するデータ構造を格納するシステムメモリと、上記データ構造において定義された対応する複数の構成パラメータに基づいて、上記複数のデバイスのうちの1または複数を構成する構成ロジックと、を含み、上記複数の構成パラメータは、上記システムのランタイム前に設定されており、上記データ構造内に永続的に格納される、装置が提供される。データ構造は、修正可能なオペレーティングシステムであり得る。
1または複数の実施形態は、少なくとも1つの上位プロトコル層および標準化されたトランスポート層を提供する装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよく、上記トランスポート層は、ロード/ストアアーキテクチャを採用し、複数の定義されたトランスポートモードを含み、上記上位プロトコル層は、上記複数のモードのうちの少なくとも特定の1つを介して提供される複数のサービスを利用する。
少なくとも一例において、上記トランスポート層は、システム内の複数の異なるデバイスの各々によって使用されるために利用可能にされる。
少なくとも一例において、上記上位プロトコル層および上記標準化されたトランスポート層は、上記システム内の複数のデバイスのうちの特定の1つに係るドライバによって使用される。
少なくとも一例において、上記システムは、システムオンチップを含む。
少なくとも一例において、上記複数のデバイスは、上記システムに統合される。
少なくとも一例において、上記複数のデバイスのうちの各々は、上記トランスポート層を利用する関連付けられたドライバを有する。
少なくとも一例において、上記トランスポート層は、複数のPCIベースのトランスポートサービスを含む。
少なくとも一例において、上記トランスポート層は、PCIeベースの複数のトランスポートサービスを含む。
少なくとも一例において、上記トランスポート層は、第1のトランスポートプロトコルに基づき、上記上位プロトコル層は、異なる第2のプロトコルに基づく。
少なくとも一例において、上記複数のモードは、少なくとも5つのモードを含む。
少なくとも一例において、上記複数のモードのうちの特定の1つは、複数のキューおよびスキャッタ/ギャザーを許可するモードを含む。
少なくとも一例において、上記複数のモードのうちの別の1つは、スキャッタ/ギャザーを持たない簡易モードを含む。
少なくとも一例において、上記複数のモードのうちの別の1つは、システムメモリ内の複数の固定バッファを持つ簡易モードを含み、上記簡易モードは、バスマスタリングを含む。
少なくとも一例において、上記複数のモードのうちの第3のものは、バスマスタリングを持たない簡易モードを含む。
少なくとも一例において、上記複数のモードのうちの別の1つは、バスマスタリングを持たない、データ移動のためのバイトストリームサポートを提供する簡易モードを含む。
少なくとも一例において、上記上位レベルプロトコルは、上記トランスポート層の上記複数のモードのうちの2または2より多いモードを利用する。
少なくとも一例において、上記上位レベルプロトコルは、上記トランスポート層の上記複数のモードのうちのすべてより少ないモードを利用する。
1または複数の実施形態において、少なくとも1つのデータプロセッサ、相互接続ファブリック、標準化されたトランスポート層にアクセスし、利用する第1のトランスポートロジックを含む第1のデバイスを含むシステムが提供可能であり、上記トランスポート層は、ロード/ストアアーキテクチャを採用し、複数の定義されたトランスポートモードを含む。上記システムは、上記標準化されたトランスポート層にアクセスし、利用する第2のトランスポートロジックを含む第2のデバイスを含み得る。
少なくとも一例において、少なくとも上記第1および第2のデバイスのために定義するための少なくとも1つのデータ構造を格納する少なくとも1つのメモリ要素が提供可能であり、上記複数のモードのうちのいずれかが、それぞれのデバイスによってサポートされる。
少なくとも一例において、上記システムは、上記データ構造において識別された複数の構成属性に基づいて上記第1および第2のデバイスを構成するための構成ロジックを含み得る。
少なくとも一例において、上記第1のトランスポートロジックは、上記複数のモードのうちの第1のサブセットを利用するよう定義され、上記第2のトランスポートロジックは、上記複数のモードのうちの異なる第2のサブセットを利用するよう定義される。
少なくとも一例において、上記第1のデバイスは、第1のIPブロックを含み、上記第2のデバイスは、第2のIPブロックを含む。
少なくとも一例において、上記システムは、システムオンチップ(SoC)を含む。
1または複数の実施形態は、システム内の1または複数のデバイスの複数の構成パラメータを定義するデータ構造にアクセスし、上記複数の構成パラメータから、上記複数のデバイスのうちの特定の1つに係るロジックが標準化されたトランスポート層にバインドされていることを識別し、上記トランスポート層は、ロード/ストアアーキテクチャを採用し、複数の定義されたトランスポートモードを含み、上記複数のモードのうちのいずれが上記特定のデバイスに適用されるかを判断する、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
少なくとも一例において、上記複数のデバイスのうちの1または複数は、上記データ構造において定義された対応する複数の構成パラメータに基づいて構成される。
少なくとも一例において、上記複数の構成パラメータは、上記システムのランタイム前に設定され、上記データ構造内に永続的に格納される。
少なくとも一例において、上記特定のデバイスのロジックが、上記複数のモードのうちの特定の1つを使用する複数の状態が判断される。
少なくとも一例において、上記複数のモードのうちの特定の1つを使用する、上記特定のデバイスからのデータのトランスポートが容易にされる。
少なくとも一例において、上記データは、上記特定のデバイスから上記複数のデバイスのうちの別のものへ直接トランスポートされる。
少なくとも一例において、上記複数のデバイスのうちの1または複数は、上記データ構造において定義された対応する複数の構成パラメータに基づいて構成される。
1または複数の実施形態は、デバイスツーデバイスデータ転送のために、第1のデバイスの第2のデバイスとの互換性を判断し、上記第1のデバイスを上記デバイスツーデバイスデータ転送のために構成し、上記互換性は、上記第1のデバイスのクラス、サブクラス、およびプログラミングインタフェース(PI)に基づく上記第1のデバイスの分類および上記第2のデバイスのクラス、サブクラス、およびプログラミングインタフェース(PI)に基づく上記第2のデバイスの分類に基づく、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
少なくとも一例において、上記互換性は、各デバイスの構成情報を識別するデータ構造から判断される。
少なくとも一例において、上記複数の構成パラメータは、上記システムのランタイム前に上記データ構造において永続的に設定され、上記データ構造はシステムメモリ内に永続的に格納される。
少なくとも一例において、上記構成ロジックはさらに、サービスリクエストを識別し、上記サービスリクエストのためのデバイスツーデバイスデータ転送を構成する。
少なくとも一例において、上記サービスリクエストは、ソフトウェアアプリケーションのサービスリクエストを含む。
少なくとも一例において、上記構成ロジックは、上記サービスリクエストに基づいて、上記第1のデバイスをソースとして識別し、上記サービスリクエストに基づいて、上記第2のデバイスをシンクとして識別する。
少なくとも一例において、上記構成ロジックはさらに、サービスを終了するためのリクエストを受信し、上記サービスを終了するためのリクエストに基づいて、上記デバイスツーデバイスデータ転送における上記第1のデバイスを無効にし、上記サービスを終了するためのリクエストに基づいて、上記デバイスツーデバイスデータ転送における上記第2のデバイスを無効にする。
少なくとも一例において、上記サービスを終了するためのリクエストは、上記サービスリクエストをも生成したソフトウェアアプリケーションから受信される。
少なくとも一例において、上記構成ロジックは、上記第1のデバイスと上記第2のデバイスとの間のデバイスツーデバイスデータ転送が、正当なトランザクションであるかをシステム内の複数のデバイスに対し維持される静的構成データから判断する。
少なくとも一例において、上記構成ロジックは、上記構成データから、上記第1のデバイスと上記第2のデバイスとの間の上記デバイスツーデバイスデータ転送のためのトランスポートのタイプを判断する。
少なくとも一例において、上記デバイスツーデバイス転送は、上記第1のデバイスと上記第2のデバイスとによってサポートされる共通のPCIベースのトランスポート層を使用する。
少なくとも一例において、上記トランスポート層は複数のモードを含み、上記第1のデバイスおよび上記第2のデバイスによってサポートされる上記複数のモードのうちのそれぞれのサブセットは、上記構成データから判断され、上記トランスポートのタイプは、上記第1のデバイスと上記第2のデバイスとによってサポートされる上記複数のモードの複数のサブセットに基づいて判断される。
少なくとも一例において、上記互換性は、識別されたサービスリクエストに基づいて判断可能である。
少なくとも一例において、上記サービスリクエストに基づいて、上記第1のデバイスと上記第2のデバイスとを識別することは、上記第1のデバイスおよび上記第2のデバイスの各々の複数の機能を識別することを含み、上記第1のデバイスおよび上記第2のデバイスのそれぞれの複数の機能を判断することは、上記サービスリクエストのために、上記第1のデバイスおよび上記第2のデバイスをデバイスツーデバイスデータ転送において使用することを可能にする。
少なくとも一例において、メモリ内に格納される、デバイスツーデバイスデータ転送のための上記第1のデバイスと上記第2のデバイスとの互換性を判断するための静的構成データにアクセス可能である。
少なくとも一例において、上記サービスリクエストは、ソフトウェアアプリケーションのサービスリクエストである。
少なくとも一例において、デバイスツーデバイスデータ転送は、PCIベースのデバイスツーデバイスデータ転送を含む。
少なくとも一例において、デバイスツーデバイスデータ転送は、PCIeベースのデバイスツーデバイスデータ転送を含む。
少なくとも一例において、上記複数のデバイスは、SoCにおける複数の統合ブロックであり得る。
1または複数の実施形態は、定義された相互接続を使用する通信を実装し、上記通信はPCIベースのプロトコルスタックのトランザクション層を介して実装され、上記通信は、データリンク層制御データおよび物理層制御ロジック制御データを控える、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
少なくとも一例において、上記定義された相互接続は、定義された制御信号のセットを含む。
少なくとも一例において、制御信号のセットは、下流デバイスのパワーゲーティング制御を有効にするパワーゲーティング信号を含む。
少なくとも一例において、制御信号のセットは、posted、non‐posted、およびcompletionタイプのパケットをサポートする。
少なくとも一例において、上記複数のパケットの各々は、ヘッダおよびペイロードを含む。
少なくとも一例において、制御信号のセットは、ハンドシェイクを定義する。
少なくとも一例において、上記ハンドシェイクを定義する複数の制御信号は、保留信号および有効信号を含む。
少なくとも一例において、上記複数の制御信号は、保留ヘッダposted信号、保留ヘッダnonposted信号、保留ヘッダcompletion信号、保留ペイロードposted信号、保留ペイロードnonposted信号、保留ペイロードcompletion信号を含む。
少なくとも一例において、上記複数の制御信号は、ヘッダposted有効信号、ヘッダnonposted有効信号、ヘッダcompletion有効信号、ペイロードposted有効信号、ペイロードnonposted有効信号、ペイロードcompletion有効信号を含む。
少なくとも一例において、複数の保留信号がアサートされた場合、それらは特定の対応するタイプのデータが、上記信号をアサートするデバイスに送信されないことを示す。
少なくとも一例において、複数の有効信号は、上記信号をアサートするデバイスによって送信される特定の対応するタイプのデータが有効であることを示す。
少なくとも一例において、上記第1のデバイスおよび上記第2のデバイスはそれぞれ、各統合されたIPブロックを含む。
少なくとも一例において、上記システムは、システムオンチップ(SoC)を含む。
1または複数の実施形態は、システムオンチップ(SoC)に含まれるデバイスのセットを識別するデータを識別し、上記デバイスのセットにおける各デバイスのための構成メタデータを取得し、上記構成メタデータに基づいて、上記SoC内の複数のデバイスの構成を判断する装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび/またはソフトウェアベースのロジック、および方法を提供してよい。
少なくとも一例において、複数のデバイスの構成を判断することは、上記構成メタデータに基づいて、上記SoC上の複数のデバイスの物理的レイアウトを判断することを含む。
少なくとも一例において、複数のデバイスの構成を判断することは、上記構成メタデータに基づいて、上記SoCのためのクロックを判断することを含む。
少なくとも一例において、複数のデバイスの構成を判断することは、上記複数のデバイスのセットにおける複数のデバイスそれぞれの間における複数の互換性を判断することを含む。
少なくとも一例において、上記複数の互換性は、上記複数のデバイスのセットにおける複数のそれぞれのデバイスの間で実行される複数の互換性テストから判断され、上記複数の互換性テストは、複数のそれぞれのデバイスのそれぞれの構成メタデータを使用して実行される。
少なくとも一例において、複数のデバイスの構成を判断することは、上記複数のデバイスのセットにおける各デバイスの複数の互換性を判断することを含む。
少なくとも一例において、各デバイスの上記構成メタデータは、各デバイスのそれぞれのビルド付随情報を含む。
少なくとも一例において、上記複数のデバイスのセットの静的構成情報は、結果的に得られるSoCの構成中、アクセスのために永続的に格納されるべきと判断される。
少なくとも一例において、上記デバイスのための構成メタデータのそれぞれのソースが識別され、上記構成メタデータのそれぞれのソースをクエリする。
少なくとも一例において、上記複数のソースのうちの少なくとも1つは、それぞれのデバイスのプロバイダに関連付けられたデータサーバを含む。
少なくとも一例において、上記複数のソースのうちの少なくとも1つは、複数の異なるデバイスのための構成メタデータを格納するデータベースを含む。
少なくとも一例において、上記SoC内の複数のデバイスの判断された構成を記述する構成データ構造が生成される。
少なくとも一例において、上記構成データ構造は、機械可読データ構造である。
少なくとも一例において、上記構成データ構造は、上記SoCのためのオペレーティングシステムの構成を判断する際における使用のために適合される。
少なくとも一例において、システムオンチップ(SoC)に含まれるデバイスのセットを識別するデータは、少なくとも部分的にユーザ定義されており、上記SoC内の複数のデバイスの構成は、さらなるユーザによる介在なしに判断される。
少なくとも一例において、上記構成メタデータは、機械可読であり、定義されたテンプレートに従い構造化される。
少なくとも一例において、上記SoCのためのオペレーティングシステムの構成は、上記構成メタデータから判断された上記SoC内の複数のデバイスの構成から判断される。
少なくとも一例において、上記構成メタデータは、定義されたテンプレートに従う。
少なくとも一例において、上記デバイスのセットにおける各デバイスに対する複数の構成属性を判断するための構成メタデータを読み取り可能なステッチャツールが提供される。上記ステッチャツールは、上記構成メタデータを取得すべく、複数のソースにクエリ可能である。上記ステッチャツールは、上記SoCのための相互接続ファブリックを判断可能である。
本明細書全体で「一実施形態」または「ある実施形態」に言及する場合、当該実施形態に関連して記載された特定の特徴、構造、または特性が本発明の少なくとも一実施形態に含まれることを意味する。従って、本明細書中の随所における「一実施形態において」または「ある実施形態において」という文言が現れても、必ずしもすべてが同一の実施形態を指している訳ではない。さらに、当該特定の特徴、構造、または特性は、1または複数の実施形態において、任意の好適な態様で組み合わされ得る。
上記明細書においては、詳細な説明は、特定の例示的な実施形態に関し記載されている。しかしながら、添付の特許請求の範囲に記載される本発明のより広範な精神および範囲から逸脱することなく、様々な変更および修正がそこになされ得ることは明らかであろう。本明細書および添付図面は、従って、限定的な意味ではなく、例示的な意味のものとみなされるべきである。さらに、実施形態および他の例示的な文言の上記使用は、同一の実施形態または同一の例を必ずしも指しておらず、異なるおよび区別される複数の実施形態並びに潜在的に同一の実施形態を指すことがある。
上記明細書においては、詳細な説明は、特定の例示的な実施形態に関し記載されている。しかしながら、添付の特許請求の範囲に記載される本発明のより広範な精神および範囲から逸脱することなく、様々な変更および修正がそこになされ得ることは明らかであろう。本明細書および添付図面は、従って、限定的な意味ではなく、例示的な意味のものとみなされるべきである。さらに、実施形態および他の例示的な文言の上記使用は、同一の実施形態または同一の例を必ずしも指しておらず、異なるおよび区別される複数の実施形態並びに潜在的に同一の実施形態を指すことがある。
(項目1)
処理要素と複数の統合ブロックとを含む集積回路と、
上記複数の統合ブロックのうちの少なくとも1つのためにランタイム前に複数の構成パラメータを保持する永続ストレージと、
上記複数の構成パラメータに基づいて上記複数の統合ブロックのうちの上記少なくとも1つを構成し、上記永続ストレージからの上記複数の統合ブロックのうちの上記少なくとも1つのための複数の状態レジスタへの複数のアクセスをサービスするロジックと、を備える装置。
(項目2)
上記複数の構成パラメータは、1または複数の統合ブロックのために維持されるメタデータに基づいている、項目1に記載の装置。
(項目3)
上記複数の構成パラメータのうちの少なくともいくつかは、上記集積回路のビルド時に定義される、項目1に記載の装置。
(項目4)
構成ロジックはさらに、
上記1または複数の統合ブロックに関連付けられた複数のレジスタの複数のクエリからランタイム時に生成されるデータにアクセスする、項目1に記載の装置。
(項目5)
上記複数のレジスタは、複数の状態レジスタおよび複数の構成レジスタのうちの1または複数を含む、項目4に記載の装置。
(項目6)
データ構造がシステムメモリに格納される、項目1に記載の装置。
(項目7)
上記集積回路は、システムオンチップを含む、項目1に記載の装置。
(項目8)
格納されたコードを有する少なくとも1つの機械アクセス可能ストレージ媒体であって、上記コードは機械における実行時、上記機械に対し、
集積回路デバイスにおける1または複数の統合ブロックの複数の構成パラメータを定義するデータ構造にアクセスさせ、
上記データ構造において定義された対応する複数の構成パラメータに基づいて、上記複数の統合ブロックのうちの1または複数を構成させ、
上記複数の構成パラメータはランタイム前に設定され、上記データ構造内に永続的に格納される、少なくとも1つの機械アクセス可能ストレージ媒体。
(項目9)
上記複数の構成パラメータは、上記1または複数の統合ブロックのために維持されるメタデータに基づいている、項目8に記載のストレージ媒体。
(項目10)
上記複数の構成パラメータのうちの少なくともいくつかは、上記集積回路デバイスのビルド時に定義される、項目8に記載のストレージ媒体。
(項目11)
上記データ構造において定義された上記複数の構成パラメータのうちの少なくとも一部は、複数のペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)機能を含む、項目8に記載のストレージ媒体。
(項目12)
上記複数の構成パラメータは、それぞれのデバイスによってサポートされる複数のトランスポートモードを含み、上記複数のトランスポートモードは、定義されたトランスポート層における複数のモードを含む、項目8に記載のストレージ媒体。
(項目13)
上記データ構造は、上記1または複数の統合ブロックの各々に対し、上記統合ブロックのそれぞれのPCIクラス、サブクラス、およびプログラミングインタフェースを識別する、項目8に記載のストレージ媒体。
(項目14)
上記集積回路デバイス内の1または複数のレジスタが、上記データ構造において定義された構成情報に基づいてランタイム時に入力される、項目8に記載のストレージ媒体。
(項目15)
構成ロジックはさらに、
上記1または複数の統合ブロックに関連付けられた複数のレジスタの複数のクエリからランタイム時に生成されるデータにアクセスする、項目8に記載のストレージ媒体。
(項目16)
システムのランタイム前に定義される永続的データ構造にアクセスする段階であって、上記永続的データ構造は、上記システム内の1または複数の統合ブロックの複数の構成パラメータを定義する、段階と、
1または複数のデバイスの各々に対し、上記永続的データ構造からの上記システムの複数の構成パラメータを識別する段階と、
上記複数の構成パラメータに基づいて、上記1または複数の統合ブロックのうちの少なくとも1つを構成する段階と、を備える方法。
(項目17)
上記1または複数の統合ブロックのうちの少なくとも1つに係る複数の追加の構成パラメータを識別するデータを受信する段階をさらに備え、
上記複数の追加の構成パラメータは、ランタイム時に検出される、項目16に記載の方法。
(項目18)
上記構成する段階は、オペレーティングシステムによって実行され、上記データはBIOSから受信される、項目17に記載の方法。
(項目19)
上記システム内の1または複数のレジスタは、データ構造にリンクされ、上記データ構造において定義された複数の構成パラメータで入力されており、上記方法は、上記データ構造において定義された上記複数の構成パラメータのうちの特定の1つを変更する段階をさらに備え、
特定のレジスタ値が、上記特定のレジスタ値と上記データ構造との間のリンクに基づいて、上記特定の構成パラメータへの変更を反映するよう更新される、項目16に記載の方法。
(項目20)
システムのランタイム前に定義される永続的データ構造にアクセスするための手段であって、上記永続的データ構造は、上記システム内の1または複数の統合ブロックの複数の構成パラメータを定義する、手段と、
上記1または複数の統合ブロックの各々に対し、上記永続的データ構造からの上記統合ブロックの複数の構成パラメータを識別するための手段と、
上記複数の構成パラメータに基づいて、上記1または複数の統合ブロックのうちの少なくとも1つを構成するための手段と、を備える、システム。
(項目21)
少なくとも1つのデータプロセッサと、
複数のデバイスと、
メモリに格納され、上記複数のデバイスのうちの1または複数に係る複数の構成パラメータを定義するデータ構造と、
オペレーティングシステムと、を備え、
上記複数の構成パラメータは、永続的に定義されており、
上記オペレーティングシステムは、
上記データ構造にアクセスし、
上記データ構造において定義された対応する複数の構成パラメータに基づいて上記複数のデバイスのうちの1または複数を構成する、システム。
(項目22)
上記複数のデバイスのうちの少なくとも一部は、複数のIPブロックを含む、項目21に記載のシステム。
(項目23)
上記システムは、システムオンチップを含む、項目21に記載のシステム。
(項目24)
システム内の1または複数のデバイスの複数の構成パラメータを定義するデータ構造を格納するシステムメモリと、
上記データ構造において定義された対応する複数の構成パラメータに基づいて、上記複数のデバイスのうちの1または複数を構成する構成ロジックと、を備え、
上記複数の構成パラメータは、上記システムのランタイム前に設定されており、上記データ構造内に永続的に格納される、装置。
(項目25)
上記データ構造は、修正可能なオペレーティングシステムである、項目24に記載の装置。