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

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

▶ ザイリンクス インコーポレイテッドの特許一覧

特許7411633固定PCIe物理トランスポートネットワーク上の論理トランスポート
<>
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図1
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図2
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図3
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図4
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図5
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図6
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図7
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図8
  • 特許-固定PCIe物理トランスポートネットワーク上の論理トランスポート 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-27
(45)【発行日】2024-01-11
(54)【発明の名称】固定PCIe物理トランスポートネットワーク上の論理トランスポート
(51)【国際特許分類】
   G06F 13/38 20060101AFI20231228BHJP
   G06F 13/12 20060101ALI20231228BHJP
【FI】
G06F13/38 350
G06F13/12 330Z
G06F13/38 320Z
【請求項の数】 13
(21)【出願番号】P 2021505930
(86)(22)【出願日】2019-07-29
(65)【公表番号】
(43)【公表日】2021-12-02
(86)【国際出願番号】 US2019043912
(87)【国際公開番号】W WO2020028249
(87)【国際公開日】2020-02-06
【審査請求日】2022-07-12
(31)【優先権主張番号】16/053,384
(32)【優先日】2018-08-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ミッタル, ミリンド
(72)【発明者】
【氏名】プラニク, キラン エス.
(72)【発明者】
【氏名】ダスティダー, ジャディブ
【審査官】松平 英
(56)【参考文献】
【文献】特開2010-140485(JP,A)
【文献】特表2013-534680(JP,A)
【文献】特表2018-502359(JP,A)
【文献】特開2008-021024(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/00-13/14
13/20-13/42
(57)【特許請求の範囲】
【請求項1】
コンピュータプロセッサによって実行される、論理トランザクションネットワークを物理トランスポートネットワーク上に透過的にオーバーレイする方法であって、
前記コンピュータプロセッサが、第1のネットワークプロトコルに準拠する前記物理トランスポートネットワークの第1のトランザクションレイヤ中にある仮想チャネルを指定することと、
前記コンピュータプロセッサが、第2のネットワークプロトコルの第2の論理トランザクションレイヤにおいてトランザクションレイヤパケットを組み立てることであって、前記トランザクションレイヤパケットが、前記第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、前記第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む、トランザクションレイヤパケットを組み立てることと、
前記コンピュータプロセッサが、前記トランザクションレイヤパケットを前記第2の論理トランザクションレイヤから前記仮想チャネルに転送することと、
前記コンピュータプロセッサが、前記物理トランスポートネットワーク上の前記仮想チャネルを使用して、前記第1のトランザクションレイヤ上で前記トランザクションレイヤパケットを送信することと
を含む、方法。
【請求項2】
前記第1のトランザクションレイヤが、データリンクレイヤ、および前記第1のネットワークプロトコルに準拠する物理レイヤ上で前記トランザクションレイヤパケットを送信する、請求項1に記載の方法。
【請求項3】
前記第2の論理トランザクションレイヤが、前記物理レイヤのプロパティを活用するが、前記第2の論理トランザクションレイヤに特有であるサービスクラス(COS)属性を採用する、請求項2に記載の方法。
【請求項4】
前記COS属性が、低レイテンシ属性およびプロトコル属性のうちの少なくとも1つである、請求項3に記載の方法。
【請求項5】
前記トランザクションレイヤパケット内に含まれている少なくとも1つの属性が、前記第1のトランザクションレイヤにとって認識可能でないが、前記トランザクションレイヤパケットの残りのフィールドが、前記第1のトランザクションレイヤによって認識可能である、請求項1に記載の方法。
【請求項6】
前記トランザクションレイヤパケットの残りのフィールドが、前記第2の論理トランザクションレイヤに特有である、請求項1に記載の方法。
【請求項7】
前記第2のネットワークプロトコルが、ロード/ストアセマンティクスを含んでいる、請求項1に記載の方法。
【請求項8】
前記第1のネットワークプロトコルがPCIeプロトコルであり、前記第2のネットワークプロトコルがCCIXプロトコルである、請求項1に記載の方法。
【請求項9】
前記第2の論理トランザクションレイヤが順序パケット配信を提供する、請求項1に記載の方法。
【請求項10】
コンピュータプロセッサによって実行される、論理トランザクションネットワークを物理トランスポートネットワーク上に透過的にオーバーレイする方法であって、
前記コンピュータプロセッサが、第1のネットワークプロトコルに準拠する前記物理トランスポートネットワークの第1のトランザクションレイヤ中にある第1のトランザクションレイヤパケットを受信することと、
前記コンピュータプロセッサが、第2のネットワークプロトコルに準拠する第2の論理トランザクションレイヤによる使用のために指定された前記第1のトランザクションレイヤ中にある仮想チャネルから前記第1のトランザクションレイヤパケットを抽出することであって、前記第1のトランザクションレイヤパケットが、前記第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、前記第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む、前記第1のトランザクションレイヤパケットを抽出することと、
前記コンピュータプロセッサが、前記第2の論理トランザクションレイヤにとって認識可能な前記第2のネットワークプロトコルに準拠する第2のトランザクションレイヤパケットを組み立てることと、
前記コンピュータプロセッサが、前記第2のトランザクションレイヤパケットを前記仮想チャネルから前記第2の論理トランザクションレイヤに転送することと
を含む、方法。
【請求項11】
前記第2の論理トランザクションレイヤが、物理レイヤのプロパティを活用するが、前記第2の論理トランザクションレイヤに特有であるサービスクラス(COS)属性を採用する、請求項10に記載の方法。
【請求項12】
前記第1のトランザクションレイヤパケット内に含まれている少なくとも1つの属性が、前記第1のトランザクションレイヤにとって認識可能でないが、前記第1のトランザクションレイヤパケットの残りのフィールドが、前記第1のトランザクションレイヤによって認識可能である、請求項10に記載の方法。
【請求項13】
コンピュータプロセッサと、
前記コンピュータプロセッサに結合されたメモリと
を備え、前記コンピュータプロセッサが、
第1のネットワークプロトコルに準拠する物理トランスポートネットワークの第1のトランザクションレイヤ中にある仮想チャネルを指定することと、
第2のネットワークプロトコルの第2の論理トランザクションレイヤにおいてトランザクションレイヤパケットを組み立てることであって、前記トランザクションレイヤパケットが、前記第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、前記第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む、トランザクションレイヤパケットを組み立てることと、
前記トランザクションレイヤパケットを前記第2の論理トランザクションレイヤから前記仮想チャネルに転送することと、
前記物理トランスポートネットワーク上の前記仮想チャネルを使用して、前記第1のトランザクションレイヤ上で前記トランザクションレイヤパケットを送信することと
を行うために、前記メモリ中にあるコードを実行するように構成された、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般に、コンピューティングシステムのバスアーキテクチャに関し、詳細には、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイすることに関する。
【背景技術】
【0002】
パーソナルコンピュータおよびサーバアーキテクチャは、時間とともにますます高性能になったバスシステムを採用している。周辺構成要素相互接続(PCI)バスは、前のバス実装形態に勝るいくつかの利点を提示した。特に重要なのは、プロセッサ独立性、バッファされた分離、バスマスタリング、および真のプラグアンドプレイ動作であった。バッファされた分離は、本質的に、中央処理ユニット(CPU)ローカルバスをPCIバスから電気的に分離するとともに、クロック領域によって分離する。デバイスが自動的に検出および構成されることを可能にするプラグアンドプレイ動作により、業界標準アーキテクチャ(ISA)ベースボードユーザをいらいらさせた、ベースアドレスおよびダイレクトメモリアクセス(DMA)割込みのためのスイッチおよびジャンパの手動設定がなくなった。
【0003】
PCIは大きな成功を享受したが、PCIは、帯域幅制限と、ホストピンカウント制限と、等時データ転送などのリアルタイムデータ転送サービスの欠如と、サービス品質、電力管理、キャッシュコヒーレンシ、および入出力(I/O)仮想化などの次世代I/O要件を満たすための特徴の欠如とを含む一連の課題に直面する。サービス品質測定および電力管理などの次世代I/O要件は、データ完全性を改善し、現代のPCによって必要とされる電力量が増え続けるので重要な考慮事項である、システムデバイスの選択的電源切断を可能にする。これらの特徴のうちのいくつかは、旧来のPCI要件以外にソフトウェア制御を必要とし、OSおよびデバイスドライバサポートが利用可能になるまで利用可能でない。
【0004】
周辺構成要素インターフェースエクスプレス(PCIe)は、旧来のPCI実装形態における欠陥の多くを補ったが、PCIeは、コマンド特徴と、ルーティングと、キャッシュコヒーレンシの欠如とに関していくつかの制限を有する。ロード/ストアまたはコヒーレンシセマンティクスをもつプロトコルは、一般に、機能的正当性を維持するために、ロード/ストアを実施するデバイスのソースにかかわらず、動作/イベント間の同じアドレス順序付けをそのアドレスロケーションに対して必要とする。キャッシュコヒーレンスは、複数のローカルキャッシュに記憶された共有リソースデータの均一性である。システムにおけるクライアントが、共通メモリリソースのキャッシュを維持するとき、インコヒーレントデータに関する問題が起こることがあり、これは特に、多重処理システムにおけるCPUの場合である。
【0005】
PCIeバスベースアーキテクチャにおけるロード/ストアまたはキャッシュコヒーレンシセマンティクスの欠如を克服するための1つのオプションは、PCIeバスに関係するすべてのハードウェアおよびソフトウェアを、PCIeバスと同じまたは追加の利点を有するキャッシュコヒーレントバスアーキテクチャと入れ替えることである。しかしながら、ハードウェアの完全な交換は費用がかかり、時間がかかり、エラーを起こしやすい。
【0006】
したがって、下にあるバス構造の物理レイヤハードウェアのすべてを交換することなしに、既存のバスアーキテクチャ上に部分的にオーバーレイされ得るキャッシュコヒーレントバスアーキテクチャを提供することが望ましい。
【発明の概要】
【0007】
論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための技法が開示される。一例では、方法が、第1のネットワークプロトコルに準拠するネットワークの第1のトランザクションレイヤ中にある仮想チャネルを指定することと、第2のネットワークプロトコルの第2の論理トランザクションレイヤにおいてトランザクションレイヤパケットを組み立てることと、トランザクションレイヤパケットを第2のトランザクションレイヤから仮想チャネルに転送することとを含む。本方法は、ネットワーク上の仮想チャネルを使用して、第1のトランザクションレイヤ上でトランザクションレイヤパケットを送信することをも含む。
【0008】
いくつかの実施形態では、トランザクションレイヤパケットは、第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む。
【0009】
いくつかの実施形態では、第1のトランザクションレイヤは、データリンクレイヤ、および第1のネットワークプロトコルに準拠する物理レイヤ上でトランザクションレイヤパケットを送信する。
【0010】
いくつかの実施形態では、第2のトランザクションレイヤは、物理レイヤの既存のプロパティを活用するが、第2の論理トランザクションレイヤに特有であるサービスクラス(COS)属性を採用する。
【0011】
いくつかの実施形態では、COS属性は、低レイテンシ属性およびプロトコル属性のうちの少なくとも1つである。
【0012】
いくつかの実施形態では、トランザクションレイヤパケット内に含まれている少なくとも1つの属性が、第1のトランザクションレイヤにとって認識可能でないが、パケットの残りのフィールドが、第1のトランザクションレイヤによって認識可能である。
【0013】
いくつかの実施形態では、パケットの残りのフィールドは、第2の論理トランザクションレイヤに特有である。
【0014】
いくつかの実施形態では、第2のネットワークプロトコルは、ロード/ストアセマンティクスを含んでいる。
【0015】
いくつかの実施形態では、第1のネットワークプロトコルはPCIeプロトコルであり、第2のネットワークプロトコルはCCIXプロトコルである。
【0016】
いくつかの実施形態では、第2の論理トランザクションレイヤは順序パケット配信を提供する。
【0017】
別の例では、方法が、第1のネットワークプロトコルに準拠するネットワークの第1のトランザクションレイヤ中にあるトランザクションレイヤパケットを受信することと、第2のネットワークプロトコルに準拠する第2の論理トランザクションレイヤによる使用のために指定された第1のトランザクションレイヤ中にある仮想チャネルからトランザクションレイヤパケットを抽出することとを含む。本方法は、第2の論理トランザクションレイヤにとって認識可能な第2のネットワークプロトコルに準拠するトランザクションレイヤパケットを組み立てることと、トランザクションレイヤパケットを仮想チャネルから第2のトランザクションレイヤに転送することとをも含む。
【0018】
別の例では、システムが、論理トランザクションネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイする。本システムは、コンピュータプロセッサと、コンピュータプロセッサに結合されたメモリとを含む。コンピュータプロセッサは、第1のネットワークプロトコルに準拠するネットワークの第1のトランザクションレイヤ中にある仮想チャネルを指定することと、第2のネットワークプロトコルの第2の論理トランザクションレイヤにおいてトランザクションレイヤパケットを組み立てることと、トランザクションレイヤパケットを第2のトランザクションレイヤから仮想チャネルに転送することとを行うために、メモリ中にあるコードを実行するように構成される。コンピュータプロセッサはまた、ネットワーク上の仮想チャネルを使用して、第1のトランザクションレイヤ上でトランザクションレイヤパケットを送信するように構成される。
【0019】
これらおよび他の態様は、以下の発明を実施するための形態を参照しながら理解され得る。
【0020】
上記の具陳された特徴が詳細に理解され得るように、上記で手短に要約されたより詳細な説明は、添付の図面にその一部が示されている例示的な実装形態を参照することによってなされ得る。しかしながら、添付の図面は、典型的な例示的な実装形態を示すにすぎず、したがって、その範囲の限定と見なされるべきでないことに留意されたい。
【図面の簡単な説明】
【0021】
図1】一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするためのシステムを示すブロック図である。
図2】PCIeデバイスがPCIe上でロード/ストアおよびコヒーレンシセマンティクスを有することを可能にするCCIX機能性をもつPCIeデバイスを示す図である。
図3】PCIeパケットのレイアウトを示す図である。
図4】ツリートポロジーを有するPCIeネットワークのブロック図である。
図5】一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための第1の方法を示す流れ図である。
図6】一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための方法を示す流れ図である。
図7】一例による、プログラマブルICを示すブロック図である。
図8】一例による、プログラマブルICのシステムオンチップ(SoC)実装形態を示すブロック図である。
図9】一例による、プログラマブルICのフィールドプログラマブルゲートアレイ(FPGA)実装形態を示す図である。
【発明を実施するための形態】
【0022】
理解を容易にするために、可能な場合、図に共通である同一の要素を指定するために同一の参照番号が使用されている。一例の要素が、他の例に有益に組み込まれ得ることが企図される。
【0023】
図を参照しながら様々な特徴が本明細書で説明される。図は一定の縮尺で描かれることも描かれないこともあり、同様の構造または機能の要素が、図全体にわたって同様の参照番号によって表されることに留意されたい。図は、特徴の説明を容易にすることを意図されているにすぎないことに留意されたい。図は、請求される本発明の網羅的な説明として、または請求される本発明の範囲に対する限定として意図されていない。さらに、示されている例は、すべての態様または利点が示される必要があるとは限らない。特定の例に関して説明される一態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはそのように明示的に説明されていない場合でも、任意の他の例において実施され得る。
【0024】
論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための技法が開示される。組み合わせられた論理/物理トランスポートネットワークは、物理トランスポートの既存のプロパティを活用するが、その論理トランスポートネットワークに特有であり、物理トランスポートネットワーク上でネイティブに利用可能でない、サービスクラス(COS)属性をも含む。一例では、物理トランスポートネットワークおよびプロトコルは、限定はしないが、周辺構成要素相互接続エクスプレス(PCIe)ネットワークであり得る。PCIeプロトコルスタックは、組み込まれた物理レイヤおよびデータリンクレイヤを含む。一例では、論理トランスポートネットワークは、限定はしないが、アクセラレータのためのキャッシュコヒーレンス相互接続(CCIX:Cache Coherence Interconnect for Accelerators)プロトコルのトランスポートレイヤを含み得る。本明細書で説明される技法は、CCIXメッセージの論理トランスポートのためのPCIe仮想チャネル(VC)を指定する。本技法は、ベンダー定義メッセージ(VDM:Vendor Defined Message)として知られるPCIeサードパーティメッセージを介して、PCIe物理トランスポートレイヤ上で透過的に搬送される論理トランスポートネットワークのためのサービスクラス属性を作成する。本技法は、PCle規格トランザクションレイヤパケット(TLP)とは異なり、指定されたVC上でのみ搬送される、最適化されたTLPを作成する。最適化されたTLPは、オーバーレイされた論理トランスポートネットワークに固有である、低レイテンシ属性とプロトコル属性とを含んでいる。
【0025】
本開示の例は、CCIX論理トランスポートの要件を満たす利用可能なPCIe機構を活用する。CCIX論理トランスポート属性は、その物理電気レイヤおよび物理論理レイヤと、そのデータリンクレイヤと、VDMをもつそのトランザクションレイヤとの中にある、PCIe定義された機構上にオーバーレイされる。PCIe TLPパケット定義とは異なるCCIXパケット定義は、トランザクションレイヤのPCIe VDM上にオーバーレイされ、順序パケット配信のCCIXプロパティが、VDMの順序配信のPCIe TLPプロパティを介しても達成される。
【0026】
本開示の例は、新しい機構が論理トランスポートのために必要とされるが、物理トランスポート上でネイティブに利用可能でないとき、それらの機構を定義する。この機構は、PCIe仮想チャネル(VC)を指定することを伴い、ここで、そのVC上のPCIe VDMは、CCIX論理トランスポートに特有のプロパティを含んでいる。それらのプロパティは、サービスクラス属性と、その指定されたPCIe仮想チャネル内でトランスポートされたCCIX仮想チャネルとを含む。それらのプロパティから導出されたCCIX機能は、これらのVDMがPCIe上で透過的に搬送されるので、PCIeトランザクションレイヤを介して接続されたデバイス上で広く利用可能である。
【0027】
さらに、本開示の例は、PCIe規格トランザクションレイヤパケット(TLP)とは異なり、その指定されたVCをもつあるデバイスから、その指定されたVCと同じVCをもつ別のデバイスにのみ搬送される、最適化されたTLPの作成を可能にする。最適化されたTLPは、CCIXに固有である、低レイテンシ属性とプロトコル属性とを含んでいる。
【0028】
図1は、一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするためのシステム100を示すブロック図である。システム100は、コンピュータシステム102を含む。コンピュータシステム102は、ハードウェアプラットフォーム(「ハードウェア104」)と、ハードウェア104上で実行するソフトウェアプラットフォーム(「ソフトウェア106」)とを含む。ハードウェア104は、処理システム110と、システムメモリ116と、ストレージデバイス(「ストレージ118」)と、周辺デバイス122とを含む。ソフトウェア106は、オペレーティングシステム(OS)144と、デバイスドライバ146と、アプリケーション150とを含む。OS144は、実施形態によれば、PCIeデータリンクレイヤおよび物理レイヤ上で、CCIXトランザクションレイヤを実装するように構成された、組み合わせられたCCIX/PCIeプロトコルスタック152を実装するように構成される。
【0029】
処理システム110は、さらに、マイクロプロセッサ112と、サポート回路114と、周辺バス115とを含む。マイクロプロセッサ112は、x86ベースプロセッサ、ARM(登録商標)ベースプロセッサなど、任意のタイプの汎用中央処理ユニット(CPU)であり得る。マイクロプロセッサ112は、1つまたは複数のコアと、関連する回路要素(たとえば、キャッシュメモリ、メモリ管理ユニット(MMU)、割込みコントローラなど)とを含むことができる。マイクロプロセッサ112は、本明細書で説明される1つまたは複数の動作を実施するプログラムコードを実行するように構成され、それらのプログラムコードは、システムメモリ116および/またはストレージ118に記憶され得る。サポート回路114は、マイクロプロセッサ112と協働して、マイクロプロセッサ112、システムメモリ116、ストレージ118、周辺デバイス122、または任意の他の周辺デバイスの間のデータフローを管理する、様々なデバイスを含む。たとえば、サポート回路114は、チップセット(たとえば、ノースブリッジ、サウスブリッジ、プラットフォームホストコントローラなど)、電圧調節器、ファームウェア(たとえば、BIOS)などを含むことができる。サポート回路114は、マイクロプロセッサ112と周辺バス115との間のデータフローを管理し、そこに周辺デバイス122などの様々な周辺機器が接続される。いくつかの例では、マイクロプロセッサ112は、チップセット(たとえば、ノースブリッジ、サウスブリッジなど)の機能性の全部または実質的部分を吸収する、システムインパッケージ(SiP)、システムオンチップ(SoC)などであり得る。周辺バスは、周辺構成要素相互接続エクスプレス(PCIe)など、拡張バス規格を実装することができる。本例では、処理システム110は、周辺デバイス122とは別個に示されている。以下でさらに説明される他の例では、処理システム110と周辺デバイス122とは、同じ集積回路(IC)上に実装され得る。
【0030】
システムメモリ116は、実行可能な命令およびデータなど、情報が記憶され、取り出されることを可能にするデバイスである。システムメモリ116は、たとえば、ダブルデータレート(DDR)ダイナミックRAM(DRAM)など、1つまたは複数のランダムアクセスメモリ(RAM)モジュールを含むことができる。ストレージ118は、ローカルストレージデバイス(たとえば、1つまたは複数のハードディスク、フラッシュメモリモジュール、ソリッドステートディスク、および光ディスク)、および/またはコンピュータシステム102が1つまたは複数のネットワークデータストレージシステムと通信することを可能にするストレージインターフェースを含む。ハードウェア104は、グラフィックスカード、ユニバーサルシリアルバス(USB)インターフェースなど、コンピューティングシステムの様々な他の従来のデバイスおよび周辺機器を含むことができる。
【0031】
周辺デバイス122は、プログラマブルIC128と、不揮発性メモリ124と、RAM126とを含む。プログラマブルIC128は、フィールドプログラマブルゲートアレイ(FPGA)など、またはFPGAを有するSoCなどであり得る。NVM124は、フラッシュメモリなど、任意のタイプの不揮発性メモリを含むことができる。RAM126は、DDR DRAMなどを含むことができる。プログラマブルIC128は、NVM124およびRAM126に結合される。プログラマブルIC128は、処理システム110の周辺バス115にも結合される。プログラマブルIC128は、さらに、周辺バス115の物理レイヤを実装するPCIe回路論理130Aを含み、周辺デバイス122など、CCIXトランスポートプロトコルアウェアデバイスに固有のハードウェア特徴を実装するための、およびCCIXファームウェア119を実装するためのCCIXカスタム論理130Bを含み得る。
【0032】
OS144は、当技術分野において知られている任意のコモディティオペレーティングシステムであり得る。ドライバ146は、周辺デバイス122に、ドライバ146のコマンドおよび制御のためのアプリケーションプログラミングインターフェース(API)を提供する、ドライバとライブラリとを含む。アプリケーション150は、CCIX/PCIe属性とトランザクションレイヤパケット(TLP)とを送信するために、組み合わせられたCCIX/PCIeプロトコルスタック152を通して周辺デバイス122を呼び出す、マイクロプロセッサ112上で実行するソフトウェアを含む。アプリケーション150は、ニューラルネットワーク、ビデオ処理、ネットワーク処理、または、周辺デバイス122にいくつかの機能をオフロードする同様のタイプのアプリケーションを含むことができる。
【0033】
CCIXアーキテクチャ仕様は5つの個別論理レイヤを備える。これらは、CCIXプロトコルレイヤと、CCIXリンクレイヤと、CCIXトランザクションレイヤとを含む。CCIXトランザクションレイヤと、データリンクと、物理レイヤとは、合わせてCCIXトランスポートと呼ばれる。CCIXアーキテクチャ仕様は、PCIeトランザクションレイヤと、PCIeデータリンクレイヤと、PCIe物理レイヤとをも含む。これらのレイヤの各々は、2つのセクション、すなわち、アウトバウンド(送信されるべき)情報を処理するセクションと、インバウンド(受信された)情報を処理するセクションとに分割される。
【0034】
図2は、PCIeデバイス200がPCIe上でロード/ストアおよびコヒーレンシセマンティクスを有することを可能にするCCIX機能性をもつPCIeデバイス200を示す。PCIeデバイス200は、1つまたは複数のギガビットトランシーバ(GT)202に結合される。PCIeデバイス200は、PCIe物理レイヤ204とPCIeデータリンクレイヤ206とを保持するが、CCIXアウェアデバイスがCCIXトランスポートの特徴を採用することができるように、PCIeトランザクションレイヤ210がCCIXトランザクションレイヤ208と並んで存在することを可能にする。CCIX仕様は、PCIeトランザクションレイヤ210を変更しない。PCIeトランザクションレイヤ210の主要な任務は、トランザクションレイヤパケット(TLP)の組立および分解である。TLPは、トランザクション(たとえば、読取り、書込み)、ならびにいくつかのタイプのイベントを通信するために使用される。PCIeトランザクションレイヤ210はまた、TLPのためのクレジットベースフロー制御を管理するための役目を果たす。CCIX仕様は、PCIeデータリンクレイヤ206とPCIe物理レイヤ204とを変更せず、それらをそのまま利用する。PCIeデータリンクレイヤ206は、PCIeトランザクションレイヤ210とCCIXトランザクションレイヤ208との間の中間段として機能する。PCIeデータリンクレイヤ206の主要な任務は、誤り検出と誤り訂正とを含む、リンク管理とデータ完全性とを含む。
【0035】
論理トランスポートネットワークを既存の物理トランスポート(たとえば、PCIe)上に透過的にオーバーレイする技法は、新しいトランザクションレイヤ、たとえば、CCIXトランザクションレイヤ208を定義する。CCIXトランザクションレイヤ208は、マルチ仮想チャネル(VC)実装形態において、PCIe VCのうちの1つにおけるPCIeトランザクションレイヤ210と入れ替わる。CCIXトランザクションレイヤ208は、最適化されたCCIX適合TLPとPCIe適合TLPとをサポートする、低減されたPCIeトランザクションレイヤである。
【0036】
CCIXトランザクションレイヤの主要な任務は、CCIXトランザクションレイヤパケット(TLP)の組立および分解である。受信経路上で、CCIXトランザクションレイヤ208は、PCIeデータリンクレイヤ206にTLPをフォワーディングする前に、CCIX TLP完全性を検査する。PCIe適合TLPの場合、PCIエクスプレスベース仕様において規定されたPCIeトランザクションレイヤ210検査が適用可能である。最適化されたTLPの場合、CCIXトランザクションレイヤ検査の新しいセットが規定される。
【0037】
CCIXトランザクションレイヤ208はまた、CCIX TLPのためのクレジットベースフロー制御を管理するための役目を果たす。受信経路上で、ポスティングされたフロー制御クレジットは、データ完全性検査に合格するCCIX TLPのために返され、CCIXトランザクションレイヤ208にフォワーディングされる。送信経路では、クレジットゲートが、利用可能なポスティングされたクレジットに基づいて、CCIX TLPのフローを制御するために実装される。これらのポスティングされたクレジットは、リンク全体で定義される。
【0038】
CCIXは、PCIEデータリンクレイヤ206と物理レイヤ204との上で情報を通信するためにトランザクションレイヤパケット(TLP)を使用する。送信パケットが、CCIXトランザクションレイヤ208と、PCIEデータリンクレイヤ206と、PCIe物理レイヤ204とを通して下流に流れるので、CCIXパケットは、上述のレイヤの各々においてパケットをハンドリングするために必要な追加情報で拡大される。受信側において、逆方向プロセスが行われ、パケットは、PCIe物理レイヤ204表現からPCIEデータリンクレイヤ206表現に変換され、最終的に、(トランザクションレイヤパケットについて)受信デバイスのCCIXトランザクションレイヤ208によって処理され得る形式に変換される。
【0039】
CCIXトランスポートは、指定されたPCIe仮想チャネル上にある。指定されたVCは、他のPCIeトラフィックからの性能分離を可能にし、また、他のPCIeトラフィックとのリソース依存性デッドロックを防ぐ。CCIXプロトコルメッセージが、サードパーティPCIeベンダー定義メッセージ(VDM)を介して送信される。PCIe VDMは、VDMの順序付けプロパティと、VDMの性能プロパティとを活用し、ポスティングされたトランザクション、すなわち、ファイアアンドフォゲットトランザクションになる。送信側は、パケットが確認応答されるのを待つ必要がなく、また、PCIe順序付きネットワークが時間順序で複数のVDMを配信することに依拠することができる。CCIXトラフィックのための指定された仮想チャネルでは、CCIXトランザクションレイヤ208が指定され得る。PCIeトランスポート上に現れるトラフィックは、そのトラフィックがCCIX VC上にあるのか非CCIX VC上にあるのかに応じて、CCIXトランザクションレイヤ208またはPCIeトランザクションレイヤ210に分岐する。これは、レイテンシおよび帯域幅の利点を与え、それらの利点は、概して、ロード/ストアおよびコヒーレンシプロトコルにとって重要である。また、PCIeに依存しないCCIXトランザクションレイヤ208はまた、PCIeトランザクションレイヤにおいて利用可能でない特徴を可能にすることによって、レイテンシおよび性能の利点を与え、これは、CCIX要求チェイニングとCCIXメッセージパッキングとを含む。
【0040】
図3は、PCIe/TLPパケット300のレイアウトを示す。PCIe/TLPパケット300は、少なくとも、ペイロード302と、ベンダーID(ベンダー固有識別子)フィールド304と、メッセージコードフィールド306とを含む。OS144は、デバイス間のパケットトラフィックをハンドリングするためのPCIe仮想チャネルを作成し、採用する。CCIXベンダー定義VDMがOS144によって検出されると、CCIXファームウェア119は、PCIeトランザクションレイヤ210に知られていない、CCIXトランザクションレイヤ208中のPCIe仮想チャネルを有効化する。CCIXカスタム論理130Bが、CCIX指定PCIe仮想チャネルの有効化を発見すると、CCIXカスタム論理130Bは、続いて、組み合わせられたCCIX/PCIeプロトコルスタック152中にあるPCIeパケットが、CCIXベースデバイスにとって認識可能であるベンダー定義メッセージを、PCIeパケット中に含んでいるかどうかを発見する。PCIeは、ベンダー定義メッセージと呼ばれる、PCIeのプロトコル内の既存のサードパーティベンダー識別子(ID)とサードパーティパケットタイプとを認識するように構成される。CCIXは、CCIXの任意のベンダーからのあらゆるCCIXベースデバイスが、通信において認識および採用することができるベンダー定義メッセージを使用する。PCIeトランザクションレイヤ210は、CCIX仮想チャネル上でPCIe属性を認識し、これらの属性が、PCIeの能力を拡大するCCIX属性として指定されることに気づいていない。
【0041】
図3は、PCIe/TLPパケット300のレイアウトを示す。PCIe/TPLパケット300は、ヘッダ301とペイロード302とを含む。図1および図3を参照すると、CCIXアウェアファームウェア119が、PCIE適合TLPパケット300において、ヘッダ301中のベンダーID304と呼ばれるベンダー固有識別子を有することを検出する。CCIXファームウェア119は、次いで、ベンダー定義メッセージとしてパケットを識別するヘッダ301中のメッセージコードフィールド306を調査する。CCIX通信に関連するVDMを含んでいるCCIXヘッダ301を検出したことに応答して、CCIXアウェアファームウェア119は、CCIXパケットをどのように処理すべきかを決定するために、TLPパケット300内に組み込まれたCCIX TLPのCCIXベースヘッダ301のコンテンツを調査する。CCIXファームウェア119は、次いで、CCIXアウェアOS144に、VDM中に含まれている情報がCCIXアウェアアプリケーションに関連し、CCIXアウェアOS144が、CCIXトランザクションレイヤ208上で受信された1つまたは複数のCCIXタイプTLPを処理することを予想するべきであることを知らせる。
【0042】
CCIXは、さらに、指定されたベンダー固有の消耗された能力(DVSEC:Designated Vendor-Specific Expended Capabilities)と呼ばれる、ベンダー定義メッセージのカウンターパートであるソフトウェアデータ構造を採用する。このDVSECソフトウェアデータ構造は、デバイスベンダー固有である。OS144が、DVSECベンダー定義メッセージ識別子を認識するとき、OS144は、不随するDVSECパケットが、PCIeによって認識可能でない追加の属性を有することを認識する。OS144は、次いで、DVSEC属性およびパケットを解釈するために、CCIXアウェアファームウェア119を調べる。したがって、OS144のPCIe部分は、PCIe部分がCCIXパケットをハンドリングする必要があることに気づかされるが、パケットの組み込まれた属性をどのように解釈すべきかに気づいていないままである。OS144は、次いで、さらなる解釈のために、組み合わせられたCCIX/PCIeプロトコルスタック152のCCIXトランザクションレイヤ208と、CCIXファームウェア119とにDVSECメッセージをフォワーディングする。
【0043】
図4は、ツリートポロジーを有するPCIeネットワーク400のブロック図である。PCIeネットワーク400は、PCIeデバイス408a~408nのセットおよび複数のCCIXアウェアデバイス410a~410nと通信するPCIeスイッチ406に接続されたPCIeルートポート404を含むホスト/サーバ402を含む。仮想チャネル上でVDMを使用して、あるCCIXデバイス(たとえば、410a)から別のCCIXデバイス(たとえば、410n)に進行すべきトラフィックが、要求された宛先に進行する前にPCIeスイッチ406を横断する必要がある。
【0044】
PCIeデバイス408a~408n間で送られるメッセージは、実質的に、ポイントツーポイントメッセージである。しかしながら、CCIXアウェアデバイス410a~410nは、旧来のPCIeデバイスにおいて見つけられないいくつかの拡大された能力を有する。たとえば、デバイス410aは、デバイス410nのアドレスを有するVDMをもつTLPを送ることができる。TLPメッセージが、PCIeスイッチ406を通して宛先デバイス410nにトランスポートされると、デバイス410nは、さらに、拡張された能力を用いて、受信されたVDMを解釈することができる。拡張された能力のうちの1つのタイプは、VDMが、ネットワーク400におけるさらなるCCIXアウェアデバイス(図示せず)に、受信されたメッセージを送信するようにとの命令を含んでいることがあることである。PCIeトランザクションレイヤ210は、このさらなる送信に気づいていない。
【0045】
図5は、一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための第1の方法500を示す流れ図である。方法500の態様は、図1図4を参照しながら理解され得る。方法500は、ブロック502において開始し、コンピュータシステム102が、第1のネットワークプロトコルに準拠するネットワークの第1のトランザクションレイヤ中にある仮想チャネルを指定する。ブロック504において、コンピュータシステム102は、第1のトランザクションレイヤによっても認識可能である、第2のネットワークプロトコルの第2の論理トランザクションレイヤにおいてトランザクションレイヤパケットを組み立てる。トランザクションレイヤパケット内に含まれている少なくとも1つの属性が、第1のトランザクションレイヤにとって認識可能でないが、パケットの残りのフィールドが、第1のトランザクションレイヤによって認識可能である。パケットの残りのフィールドは、第2の論理トランザクションレイヤに特有である。
【0046】
一例では、トランザクションレイヤパケットは、第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む。ブロック506において、コンピュータシステム102は、トランザクションレイヤパケットを第2のトランザクションレイヤから仮想チャネルに転送する。ブロック508において、コンピュータシステム102は、ネットワーク上の指定された仮想チャネルを使用して、第1のトランザクションレイヤ上でトランザクションレイヤパケットを送信する。一例では、第1のトランザクションレイヤは、データリンクレイヤ、および第1のネットワークプロトコルに準拠する物理レイヤ上でトランザクションレイヤパケットを送信する。
【0047】
一例では、第2のトランザクションレイヤは、物理レイヤの既存のプロパティを活用するが、第2の論理トランザクションレイヤに特有であるサービスクラス(COS)属性を採用する。COS属性は、低レイテンシ属性およびプロトコル属性のうちの少なくとも1つである。
【0048】
一例では、第2のネットワークプロトコルはキャッシュコヒーレントである。一例では、第1のネットワークプロトコルはPCIeプロトコルであり、第2のネットワークプロトコルはCCIXプロトコルである。
【0049】
図6は、一例による、論理トランスポートネットワークを既存の物理トランスポートネットワーク上に透過的にオーバーレイするための第2の方法600を示す流れ図である。方法600の態様は、図1図4を参照しながら理解され得る。方法600は、ブロック602において開始し、コンピュータシステム102が、第1のネットワークプロトコルに準拠するネットワークの第1のトランザクションレイヤ中にあるトランザクションレイヤパケットを受信する。ブロック604において、コンピュータシステム102は、第2のネットワークプロトコルに準拠する第2の論理トランザクションレイヤによる使用のために指定された第1のトランザクションレイヤ中にある仮想チャネルからトランザクションレイヤパケットを抽出する。トランザクションレイヤパケット内に含まれている少なくとも1つの属性が、第1のトランザクションレイヤにとって認識可能でないが、パケットの残りのフィールドが、第1のトランザクションレイヤによって認識可能である。パケットの残りのフィールドは、第2の論理トランザクションレイヤに特有である。
【0050】
一例では、トランザクションレイヤパケットは、第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む。ブロック606において、コンピュータシステム102は、第2の論理トランザクションレイヤにとって認識可能な第2のネットワークプロトコルに準拠するトランザクションレイヤパケットを組み立てる。ブロック608において、コンピュータシステム102は、トランザクションレイヤパケットを仮想チャネルから第2のトランザクションレイヤに転送する。
【0051】
一例では、トランザクションレイヤパケットは、第1のトランザクションレイヤにとって認識可能なサードパーティ識別子と、第2の論理トランザクションレイヤにとって認識可能な、サードパーティメッセージタイプおよびサードパーティヘッダとを含む。ブロック610において、コンピュータシステム102の第2の論理トランザクションレイヤは、サードパーティメッセージタイプに基づいて、トランザクションレイヤパケットからサードパーティヘッダを抽出し、処理する。
【0052】
一例では、第2のトランザクションレイヤは、物理レイヤの既存のプロパティを活用するが、第2の論理トランザクションレイヤに特有であるサービスクラス(COS)属性を採用する。COS属性は、低レイテンシ属性およびプロトコル属性のうちの少なくとも1つである。
【0053】
一例では、第2のネットワークプロトコルはキャッシュコヒーレントである。一例では、第1のネットワークプロトコルはPCIeプロトコルであり、第2のネットワークプロトコルはCCIXプロトコルである。
【0054】
図7は、一例による、プログラマブルIC1を示すブロック図である。プログラマブルIC1は、プログラマブル論理3と、構成論理25と、構成メモリ26とを含む。プログラマブルIC1は、不揮発性メモリ27、DRAM28、および他の回路29など、外部回路に結合され得る。プログラマブル論理3は、論理セル30と、サポート回路31と、プログラマブル相互接続32とを含む。論理セル30は、複数の入力の一般的な論理関数を実装するように構成され得る回路を含む。サポート回路31は、トランシーバ、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用の回路を含む。論理セルとサポート回路31とは、プログラマブル相互接続32を使用して相互接続され得る。論理セル30をプログラムするための情報と、サポート回路31のパラメータを設定するための情報と、プログラマブル相互接続32をプログラムするための情報とが、構成論理25によって構成メモリ26に記憶される。構成論理25は、不揮発性メモリ27または任意の他のソース(たとえば、DRAM28または他の回路29)から構成データを取得することができる。いくつかの例では、プログラマブルIC1は処理システム2を含む。処理システム2は、(1つまたは複数の)マイクロプロセッサ、メモリ、サポート回路、IO回路などを含むことができる。
【0055】
図8は、一例による、プログラマブルIC1のシステムオンチップ(SoC)実装形態を示すブロック図である。本例では、プログラマブルIC1は、処理システム2とプログラマブル論理3とを含む。処理システム2は、リアルタイム処理ユニット(RPU)4、アプリケーション処理ユニット(APU)5、グラフィックス処理ユニット(GPU)6、構成およびセキュリティユニット(CSU)12、プラットフォーム管理ユニット(PMU)11など、様々な処理ユニットを含む。処理システム2は、オンチップメモリ(OCM)14、トランシーバ7、周辺機器8、相互接続16、DMA回路9、メモリコントローラ10、周辺機器15、および多重化IO(MIO)回路13など、様々なサポート回路をも含む。処理ユニットとサポート回路とは、相互接続16によって相互接続される。PL3も、相互接続16に結合される。トランシーバ7は、外部ピン24に結合される。PL3は、外部ピン23に結合される。メモリコントローラ10は、外部ピン22に結合される。MIO13は、外部ピン20に結合される。PS2は、一般に、外部ピン21に結合される。APU5は、CPU17と、メモリ18と、サポート回路19とを含むことができる。
【0056】
図8の例では、プログラマブルIC1は、周辺デバイス122において使用され得、上記で説明されたように機能することができる。PCIe回路論理130AおよびCCIXカスタム論理130Bは、PL3においてプログラムされ、上記で説明されたように機能することができる。別の例では、上記で説明されたハードウェア104の機能性は、コンピューティングシステムのハードウェアを通してではなく、PS2を使用して実装され得る。そのような場合、ソフトウェア106はPS2上で実行し、上記で説明されたように機能する。
【0057】
PS2を参照すると、処理ユニットの各々が、1つまたは複数の中央処理ユニット(CPU)と、メモリ、割込みコントローラ、ダイレクトメモリアクセス(DMA)コントローラ、メモリ管理ユニット(MMU)、浮動小数点ユニット(FPU)など、関連する回路とを含む。相互接続16は、処理ユニットを相互接続し、ならびにPS2中の他の構成要素を処理ユニットに相互接続するように構成された、様々なスイッチ、バス、通信リンクなどを含む。
【0058】
OCM14は、PS2全体に分散され得る1つまたは複数のRAMモジュールを含む。たとえば、OCM14は、バッテリーバックアップRAM(BBRAM:battery backed RAM)、密結合メモリ(TCM)などを含むことができる。メモリコントローラ10は、外部DRAMにアクセスするためのDRAMインターフェースを含むことができる。周辺機器8、15は、PS2へのインターフェースを提供する1つまたは複数の構成要素を含むことができる。たとえば、周辺機器8、15は、グラフィックス処理ユニット(GPU)、ディスプレイインターフェース(たとえば、DisplayPort、高精細度マルチメディアインターフェース(HDMI)ポートなど)、ユニバーサルシリアルバス(USB)ポート、イーサネットポート、ユニバーサル非同期トランシーバ(UART)ポート、シリアル周辺インターフェース(SPI)ポート、汎用IO(GPIO)ポート、シリアルアドバンストテクノロジアタッチメント(SATA)ポート、PCIeポートなどを含むことができる。周辺機器15は、MIO13に結合され得る。周辺機器8は、トランシーバ7に結合され得る。トランシーバ7は、シリアライザ/デシリアライザ(SERDES)回路、MGTなどを含むことができる。
【0059】
図9は、トランシーバ37、構成可能論理ブロック(「CLB」)33、ランダムアクセスメモリブロック(「BRAM」)34、入出力ブロック(「IOB」)36、構成およびクロッキング論理(「CONFIG/CLOCKS」)42、デジタル信号処理ブロック(「DSP」)35、特殊な入出力ブロック(「I/O」)41(たとえば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログデジタルコンバータ、システム監視論理などの他のプログラマブル論理39を含む、多数の異なるプログラマブルタイルを含むプログラマブルIC1のフィールドプログラマブルゲートアレイ(FPGA)実装形態を示す。FPGAはまた、PCIeインターフェース40、アナログデジタル変換器(ADC)38などを含むことができる。
【0060】
いくつかのFPGAでは、各プログラマブルタイルは、図8の上部に含まれる例によって示されているように、同じタイル内のプログラマブル論理要素の入力および出力端子48への接続を有する少なくとも1つのプログラマブル相互接続要素(「INT」)43を含むことができる。各プログラマブル相互接続要素43は、同じタイルまたは(1つまたは複数の)他のタイル中の(1つまたは複数の)隣接するプログラマブル相互接続要素の相互接続セグメント49への接続をも含むことができる。各プログラマブル相互接続要素43は、論理ブロック(図示せず)間の一般的なルーティングリソースの相互接続セグメント50への接続をも含むことができる。一般的なルーティングリソースは、相互接続セグメント(たとえば、相互接続セグメント50)のトラックを備える論理ブロック(図示せず)と、相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含むことができる。一般的なルーティングリソースの相互接続セグメント(たとえば、相互接続セグメント50)は、1つまたは複数の論理ブロックにわたることができる。一般的なルーティングリソースとともにとられるプログラマブル相互接続要素43は、示されているFPGAのためのプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0061】
例示的な一実装形態では、CLB33は、ユーザ論理を実装するようにプログラムされ得る構成可能論理要素(「CLE」)44と、単一のプログラマブル相互接続要素(「INT」)43とを含むことができる。BRAM34は、1つまたは複数のプログラマブル相互接続要素に加えてBRAM論理要素(「BRL」)45を含むことができる。典型的には、タイル中に含まれる相互接続要素の数は、タイルの高さに依存する。描かれている例では、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数(たとえば、4つ)も使用され得る。DSPタイル35は、適切な数のプログラマブル相互接続要素に加えてDSP論理要素(「DSPL」)46を含むことができる。IOB36は、たとえば、プログラマブル相互接続要素43の1つのインスタンスに加えて入出力論理要素(「IOL」)47の2つのインスタンスを含むことができる。当業者に明らかになるように、たとえばI/O論理要素47に接続される実際のI/Oパッドは、典型的に、入出力論理要素47のエリアに制限されない。
【0062】
描かれている例では、(図10に示されている)ダイの中心の近くの水平方向のエリアが、構成、クロック、および他の制御論理のために使用される。この水平方向のエリアまたは列から延びる垂直方向の列51が、FPGAの幅にわたってクロックおよび構成信号を分散させるために使用される。
【0063】
図8に示されているアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構築する規則的な列状構造を損なう追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用の論理であり得る。
【0064】
図9は、例示的なFPGAアーキテクチャを示すことを意図されているにすぎないことに留意されたい。たとえば、1つの行中の論理ブロックの数、行の相対幅、行の数および順序、行中に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、および図9の上部に含まれる相互接続/論理実装形態は、例にすぎない。たとえば、実際のFPGAでは、ユーザ論理の効率的な実装を容易にするために、CLBが現れるところならどこでも、CLBの2つ以上の隣接する行が典型的に含まれるが、隣接するCLB行の数は、FPGAの全体的なサイズによって変動する。
【0065】
上記は特定の例を対象とするが、他のおよびさらなる例がその基本的範囲から逸脱することなく考案され得、その範囲は以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9