(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】コヒーレントアクセラレーションのためのドメイン支援プロセッサピア
(51)【国際特許分類】
G06F 9/50 20060101AFI20231218BHJP
G06F 13/10 20060101ALI20231218BHJP
G06F 12/0815 20160101ALI20231218BHJP
G06F 12/0868 20160101ALI20231218BHJP
G06F 3/06 20060101ALI20231218BHJP
【FI】
G06F9/50 150Z
G06F13/10 310B
G06F13/10 330B
G06F12/0815
G06F12/0868
G06F3/06 301A
(21)【出願番号】P 2021559910
(86)(22)【出願日】2020-04-08
(86)【国際出願番号】 US2020027228
(87)【国際公開番号】W WO2020210329
(87)【国際公開日】2020-10-15
【審査請求日】2023-03-15
(32)【優先日】2019-04-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ダスティダール,ジャディブ
(72)【発明者】
【氏名】アーマド,サグヒーア
【審査官】漆原 孝治
(56)【参考文献】
【文献】米国特許出願公開第2016/0344629(US,A1)
【文献】米国特許出願公開第2018/0301120(US,A1)
【文献】特開2017-021837(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 13/10
G06F 12/0815
G06F 12/0868
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
ドメイン支援プロセッサ(DAP)と、
ドメインアクセラレータと、
ゲートウェイと
を備える周辺I/Oデバイスであって、
前記ゲートウェイは、当該周辺I/Oデバイスをコヒーレント相互接続プロトコルを使用してホストに通信可能に結合させるように構成され、前記コヒーレント相互接続プロトコルは、前記DAPが前記ホスト内のプロセッサのピアプロセッサであるように、前記ホスト内のコヒーレントドメインを当該周辺I/Oデバイスへと拡張し、
前記ゲートウェイは、
プロセッサ機能を実行するように前記DAPに命令する第1の要求を、前記コヒーレント相互接続プロトコルを使用して前記ホストから受信し、
アクセラレータタスクを実行するように前記ドメインアクセラレータに命令する第2の要求を、前記コヒーレント相互接続プロトコルを使用して前記ホストから受信する
ように構成されている、周辺I/Oデバイス。
【請求項2】
前記DAPは、少なくとも1つの処理コアと、オペレーティングシステムとを備え、前記オペレーティングシステムは、組み込みの独立したオペレーティングシステムおよび前記ホスト内のオペレーティングシステムの拡張の少なくとも一方である、請求項1に記載の周辺I/Oデバイス。
【請求項3】
前記処理コアによって使用される命令セットアーキテクチャ(ISA)は、前記ホスト内の前記プロセッサによって使用されるISAとは異なる、請求項2に記載の周辺I/Oデバイス。
【請求項4】
プログラマブル論理アレイ
をさらに備え、
前記ドメインアクセラレータの少なくとも一部分は、前記プログラマブル論理アレイによって実行される、請求項1に記載の周辺I/Oデバイス。
【請求項5】
前記ドメインアクセラレータの少なくとも一部分は、硬化回路上で実行される、請求項4に記載の周辺I/Oデバイス。
【請求項6】
前記ゲートウェイと前記ドメインアクセラレータとを通信可能に結合するネットワークオンチップ(NoC)
をさらに備える、請求項1に記載の周辺I/Oデバイス。
【請求項7】
前記ゲートウェイは、前記周辺I/Oデバイス内にI/Oドメインおよび前記コヒーレントドメインを確立するように構成されたハイブリッドゲートウェイである、請求項1に記載の周辺I/Oデバイス。
【請求項8】
前記ゲートウェイは、前記DAPおよび前記ドメインアクセラレータの両方に通信可能に結合したエンドポイントコヒーレント相互接続を備える、請求項1に記載の周辺I/Oデバイス。
【請求項9】
前記ゲートウェイは、前記エンドポイントコヒーレント相互接続と前記DAPおよび前記ドメインアクセラレータとの間に通信可能に結合したキャッシュを備える、請求項8に記載の周辺I/Oデバイス。
【請求項10】
ホスト内のCPU-メモリ複合体を含むコヒーレントドメインが、周辺I/Oデバイス内のDAPまで広がる場合において、前記ホストの前記CPU-メモリ複合体から前記周辺I/Oデバイス内の前記DAPへとオフロードされるプロセッサ機能を特定するステップと、
コヒーレント相互接続プロトコルを使用して、前記DAPに、前記プロセッサ機能を実行し、得られたデータを前記コヒーレントドメイン内のメモリ要素に格納するように命令するステップと、
前記コヒーレント相互接続プロトコルを使用して、前記周辺I/Oデバイス内のドメインアクセラレータに、前記ホストのためのアクセラレータタスクを実行するときに前記得られたデータを処理するように命令するステップと、
前記ドメインアクセラレータにおける前記アクセラレータタスクの実行から得られたデータを受信するステップと
を含む方法。
【請求項11】
前記DAPは、少なくとも1つの処理コアと、オペレーティングシステムとを備え、前記オペレーティングシステムは、組み込みの独立したオペレーティングシステムおよび前記ホスト内のオペレーティングシステムの拡張の少なくとも一方である、請求項10に記載の方法。
【請求項12】
前記ドメインアクセラレータの少なくとも一部分は、プログラマブル論理アレイによって実行される、請求項10に記載の方法。
【請求項13】
前記DAPと前記ホスト内のCPUとが、同じキャッシュコヒーレント共有メモリマルチプロセッサパラダイムの一部である、請求項10に記載の方法。
【請求項14】
前記ホスト内のI/Oデバイスドライバを使用して、前記周辺I/Oデバイス内のI/Oドメインに割り当てられた計算リソースに、I/Oタスクを実行するように命令するステップ
をさらに含む、請求項10に記載の方法。
【請求項15】
コヒーレントドメイン内のCPU-メモリ複合体を備えているホストと、
周辺I/Oデバイスと
を備えており、
前記周辺I/Oデバイスは、
DAPと、
ドメインアクセラレータと、
ゲートウェイと
を備え、
前記ゲートウェイは、前記周辺I/Oデバイスをコヒーレント相互接続プロトコルを使用して前記ホストに通信可能に結合させるように構成され、前記コヒーレント相互接続プロトコルは、前記DAPを含むように前記ホスト内の前記コヒーレントドメインを拡張し、
前記ゲートウェイは、
プロセッサ機能を実行するように前記DAPに命令する前記ホストからの第1の要求を受信し、
アクセラレータタスクを実行するように前記ドメインアクセラレータに命令する前記ホストからの第2の要求を受信する
ように構成されている、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示の例は、一般に、ドメイン支援プロセッサとドメイン特化アクセラレータとを有する周辺デバイスに関する。
【背景技術】
【0002】
背景技術
従来のI/Oモデルにおいて、ホストコンピューティングシステムは、周辺I/Oデバイスに固有のカスタムI/Oデバイスドライバを使用して、アクセラレータタスクまたは機能を実行するときに周辺I/Oデバイスとインターフェースする。複数のI/Oデバイスまたは同じI/Oデバイスの複数のインスタンスを有することは、ホストが複数のI/Oデバイスドライバまたは同じI/Oデバイスドライバの複数の実行コピーとインターフェースすることを意味する。これは、I/Oデバイスドライバが通常は周辺I/Oデバイスを供給するベンダによって開発されるが、ホストコンピューティングシステム内のすべてのソフトウェアおよびハードウェアと統合されなければならないがゆえに、セキュリティおよび信頼性の問題をもたらす可能性がある。
【0003】
一方で、ハードウェアキャッシュコヒーレント共有メモリマルチプロセッサパラダイムは、マルチプロセッサCPU上の実行タスクまたは機能におけるインターフェースの一般的な命令セットアーキテクチャ(ISA)に依存しないモデルを活用する。インターフェースの一般的なISA非依存(例えば、Cコード)モデルは、処理ユニットの数およびそれらの処理ユニットにとって利用可能な共有メモリの量の両方に関してスケーリングされる。従来において、周辺I/Oデバイスは、ホストコンピューティングシステム上で実行されるCPUによって使用されるコヒーレントパラダイムの恩恵を受けることが不可能であった。
【発明の概要】
【課題を解決するための手段】
【0004】
発明の概要
周辺デバイスにおいてドメイン支援プロセッサを動作させるための技術が説明される。一例は、ドメイン支援プロセッサ(DAP)と、ドメインアクセラレータと、ゲートウェイとを含む周辺I/Oデバイスであり、ゲートウェイは、コヒーレント相互接続プロトコルを使用して周辺I/Oデバイスをホストに通信可能に結合させるように構成され、コヒーレント相互接続プロトコルは、DAPがホスト内のプロセッサに対するピアプロセッサであるように、ホスト内のコヒーレントドメインを周辺I/Oデバイスへと拡張する。ゲートウェイは、プロセッサ機能を実行するようにDAPに命令する第1の要求を、コヒーレント相互接続プロトコルを使用してホストから受信し、アクセラレータタスクを実行するようにドメインアクセラレータに命令する第2の要求を、コヒーレント相互接続プロトコルを使用してホストから受信するように構成される。
【0005】
いくつかの実施形態において、DAPは、少なくとも1つの処理コアと、オペレーティングシステムとを備え、オペレーティングシステムは、組み込みの独立したオペレーティングシステムおよびホスト内のオペレーティングシステムの拡張の少なくとも一方である。
【0006】
いくつかの実施形態において、処理コアによって使用される命令セットアーキテクチャ(ISA)は、ホスト内のプロセッサによって使用されるISAとは異なる。
【0007】
いくつかの実施形態において、周辺I/Oデバイスは、プログラマブル論理アレイを含み、ドメインアクセラレータの少なくとも一部分は、プログラマブル論理アレイによって実行される。
【0008】
いくつかの実施形態において、ドメインアクセラレータの少なくとも一部分は、硬化回路上で実行される。
【0009】
いくつかの実施形態において、周辺I/Oデバイスは、ゲートウェイとドメインアクセラレータとを通信可能に結合するネットワークオンチップ(NoC)を含む。
【0010】
いくつかの実施形態において、ゲートウェイは、周辺I/Oデバイス内にI/Oドメインおよびコヒーレントドメインを確立するように構成されたハイブリッドゲートウェイである。
【0011】
いくつかの実施形態において、ゲートウェイは、DAPおよびドメインアクセラレータの両方に通信可能に結合したエンドポイントコヒーレント相互接続を備える。
【0012】
いくつかの実施形態において、ゲートウェイは、エンドポイントコヒーレント相互接続とDAPおよびドメインアクセラレータとの間に通信可能に結合したキャッシュを含む。
【0013】
別の例は、ホスト内のCPU-メモリ複合体を含むコヒーレントドメインが、周辺I/Oデバイス内のDAPまで広がる場合において、ホストのCPU-メモリ複合体から周辺I/Oデバイス内のDAPへとオフロードされるプロセッサ機能を特定するステップと、コヒーレント相互接続プロトコルを使用して、DAPに、プロセッサ機能を実行し、得られたデータをコヒーレントドメイン内のメモリ要素に格納するように命令するステップと、コヒーレント相互接続プロトコルを使用して、周辺I/Oデバイス内のドメインアクセラレータに、ホストのためのアクセラレータタスクを実行するときに、得られたデータを処理するように命令するステップと、ドメインアクセラレータにおけるアクセラレータタスクの実行から得られたデータを受信するステップとを含む方法である。
【0014】
いくつかの実施形態において、DAPは、少なくとも1つの処理コアと、オペレーティングシステムとを備え、オペレーティングシステムは、組み込みの独立したオペレーティングシステムおよびホスト内のオペレーティングシステムの拡張の少なくとも一方である。
【0015】
いくつかの実施形態において、ドメインアクセラレータの少なくとも一部分は、プログラマブル論理アレイによって実行される。
【0016】
いくつかの実施形態においては、DAPとホスト内のCPUとが、同じキャッシュコヒーレント共有メモリマルチプロセッサパラダイムの一部である。
【0017】
いくつかの実施形態において、本方法は、ホスト内のI/Oデバイスドライバを使用して、周辺I/Oデバイス内のI/Oドメインに割り当てられた計算リソースに、I/Oタスクを実行するように命令するステップを含む。
【0018】
別の例は、コヒーレントドメイン内のCPU-メモリ複合体を備えているホストと、周辺I/Oデバイスとを含むコンピューティングシステムであり、周辺I/Oデバイスは、ドメイン支援プロセッサと、ドメインアクセラレータと、ゲートウェイとを含み、ゲートウェイは、周辺I/Oデバイスをコヒーレント相互接続プロトコルを使用してホストに通信可能に結合させるように構成され、コヒーレント相互接続プロトコルは、ホスト内のコヒーレントドメインをDAPを含むように拡張する。ゲートウェイは、周辺I/Oデバイスをコヒーレント相互接続プロトコルを使用してホストに通信可能に結合させるように構成され、コヒーレント相互接続プロトコルは、ホスト内のコヒーレントドメインをDAPを含むように拡張する。ゲートウェイは、プロセッサ機能を実行するようにDAPに命令するホストからの第1の要求を受信し、アクセラレータタスクを実行するようにドメインアクセラレータに命令するホストからの第2の要求を受信するように構成される。
【0019】
図面の簡単な説明
上記の特徴を詳細に理解することができるように、上記で簡単に要約したさらに具体的な説明を、一部が添付の図面に示されているいくつかの例示的な実装形態を参照することによって得ることができる。しかしながら、添付の図面は、典型的な例示の実装形態を示しているにすぎず、したがってその範囲を限定するものと見なされるべきではないことに留意されたい。
【図面の簡単な説明】
【0020】
【
図1】一例によるドメイン支援プロセッサとドメイン特化アクセラレータとを含む周辺I/Oデバイスに結合したホストのブロック図である。
【
図2】一例によるハイブリッドゲートウェイを有する周辺I/Oデバイスのブロック図である。
【
図3】一例によるドメイン支援プロセッサおよびドメイン特化アクセラレータにタスクを割り当てるためのフローチャートである。
【
図4A】一例によるドメイン支援プロセッサおよびドメイン特化アクセラレータに接続されたエンドポイントコヒーレント相互接続を有するゲートウェイのブロック図である。
【
図4B】一例によるドメイン支援プロセッサおよびドメイン特化アクセラレータに接続されたキャッシュを有するゲートウェイのブロック図である。
【
図5】一例によるI/Oドメインおよびコヒーレントドメインを有する周辺I/Oデバイスに結合したホストのブロック図である。
【
図6】一例によるI/Oドメインおよびコヒーレントドメインに論理的に分割されたプログラマブル論理回路、メモリ、およびネットワークオンチップを有する周辺I/Oデバイスのブロック図である。
【
図7】一例によるプログラマブルICのフィールドプログラマブルゲートアレイの実装形態を示している。
【発明を実施するための形態】
【0021】
発明を実施するための形態
さまざまな特徴が、図面を参照して以下に説明される。図面は、縮尺どおりに描かれていても、縮尺どおりに描かれていなくてもよく、同様の構造または機能の要素は、図面全体を通して同様の参照番号で表されていることに、留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、本明細書の網羅的な説明として意図されているわけでも、特許請求の範囲の技術的範囲に対する限定として意図されているわけでもない。さらに、図示された例は、必ずしも示されたすべての態様または利点を有する必要はない。特定の例に関連して説明される態様または利点は、必ずしもその例に限定されず、任意の他の例において実施することが、たとえそのように示されていなくても、あるいはそのように明示的に説明されていなくても、可能である。
【0022】
本明細書における例は、ホストコンピューティングシステム内のCPUおよびメモリと同じコヒーレントドメインにあるドメイン支援プロセッサ(DAP)およびドメイン固有アクセラレータ(DSA)を有する周辺I/Oデバイスを説明する。上述したように、周辺I/Oデバイスは、これまでは、ホストコンピューティングシステム内のハードウェアリソースを有するキャッシュコヒーレント共有メモリマルチプロセッサパラダイムに参加することが不可能であった。結果として、軽量で一般的なプロセッサ機能(例えば、gzip、オープンソース暗号ライブラリ、オープンソースネットワークスイッチ、などのオープンソース機能)のためのドメイン支援処理が、ホスト内のCPUリソースを使用して実行されるか、あるいは(例えば、FPGA内のプログラマブル論理回路を使用して)周辺I/Oデバイス内に特別な処理システムを用意することによって実行されている。しかしながら、軽量なプロセッサ機能を実行するためにホスト内のCPUを使用することは、これらのCPUを重量機能を実行するために利用することができないことを意味し、電力も浪費する。さらに、FPGAに特別な処理システムを設けることは、(軽量なプロセッサ機能とは異なるタスクである)アクセラレータタスクを実行するためにFPGAにおいて利用可能なプログラマブル論理回路が少なくなることを意味する。
【0023】
本明細書における実施形態は、本来であればホスト内のハードウェアリソースによって実行され、あるいは周辺I/Oデバイス内の特別な処理システムによって実行される軽量なプロセッサ機能を実行するために、周辺I/Oデバイス内のDAPを使用する。一実施形態において、DAPは、オペレーティングシステムを実行するプロセッサを含むプロセッササブシステムである。周辺コヒーレント相互接続を使用することにより、周辺I/Oデバイス内のDAPが、ホストコンピューティングシステム内のハードウェアリソースと同じコヒーレントドメインを共有することが可能になる。周辺コヒーレント相互接続がない場合、DAPは、ホスト内の計算リソースにとって眺めることができない埋め込みシステムになる。その場合、ホストは、I/Oデバイスドライバを介さなければDAPと通信することができない。DAPをホストコンピューティングシステム内のハードウェアリソースと同じコヒーレントドメインに追加することによって、DAPは、ホストコンピューティングシステム内のCPUのピアになる。換言すると、DAPおよびホストCPUは両方とも、ホストコンピューティングシステム内の同じオペレーティングシステム(OS)またはカーネルによって管理される。結果として、ホスト内のOSまたはカーネルは、どの軽量なプロセッサ機能を周辺I/Oデバイス内のDAPへとオフロードすることができるのか、およびどの機能をホストコンピューティングシステム内のCPUによって実行すべきかを、インテリジェントに決定することができる。
【0024】
一実施形態において、OSは、周辺I/Oデバイス内のDSAに割り当てられたアクセラレータタスクの一部であるプロセッサ機能をオフロードする。一例として、OSは、圧縮データファイルを解凍するためにgzip機能を実行するように、DAPに命令することができる。次いで、OSは、解凍されたデータにおいて単語または句の検索を実行するように、DSAに命令することができる。この例において、ホスト内のCPUが最初にgzip機能を実行する必要がなく、むしろOSは、gzip機能およびアクセラレータタスク(例えば、単語の検索)の両方の実行を周辺I/Oデバイスにオフロードすることができる。
【0025】
図1が、一例によるドメイン支援プロセッサとドメイン特化アクセラレータとを含む周辺I/Oデバイスに結合したホストのブロック図である。
図1のコンピューティングシステム100は、PCIe接続130を使用して周辺I/Oデバイス135に通信可能に結合したホスト105を含む。ホスト105は、単一のコンピュータ(例えば、サーバ)または相互接続された複数の物理的なコンピューティングシステムを表すことができる。いずれの場合も、ホスト105は、オペレーティングシステム(OS)110と、複数のCPU 115と、メモリ120とを含む。OS 110は、本明細書に記載の機能を実行することができる任意のOSであってよい。一実施形態において、OS 110(あるいは、ハイパーバイザまたはカーネル)は、CPU 115およびメモリ120(CPU-メモリ複合体と呼ばれる)のためのキャッシュコヒーレント共有メモリマルチプロセッサパラダイムを確立する。換言すると、CPU 115およびメモリ120は、キャッシュコヒーレント共有メモリマルチプロセッサパラダイムに従うコヒーレントドメインを形成するようにOSによって管理される(または、カーネル/ハイパーバイザによって管理される)。しかしながら、上述したように、従来のI/Oモデルは、周辺I/Oデバイス135(および、そのすべての計算リソース)が、ホスト105において確立されるコヒーレントドメインから除外されることを意味する。従来のモデルにおいて、ホスト105は、I/Oデバイス135内の計算リソースの管理およびI/Oデバイス135内の計算リソースとの通信のために、自身のメモリ120に格納されたI/Oデバイスドライバ125のみに依存する。すなわち、周辺I/Oデバイス135は、I/Oデバイスドライバ125によって制御され、I/Oデバイスドライバ125を介してアクセス可能である。
【0026】
本明細書の実施形態において、コヒーレント共有メモリマルチプロセッサパラダイムは、このパラダイムのすべての性能上の利点、ソフトウェアの柔軟性、および少ないオーバーヘッドと共に、周辺I/Oデバイス135に拡張される。さらに、I/Oデバイス135内の計算リソースをCPU 115およびメモリ120と同じコヒーレントドメインに追加することにより、ホスト105内のハードウェアリソースが周辺I/Oデバイス135内のハードウェアリソースとは異なるISAを使用することができる汎用のISA非依存の開発環境が可能になる。すなわち、計算システムはISAに依存しない。しかしながら、他の実施形態において、コヒーレント共有メモリマルチプロセッサパラダイムは、ホスト105およびI/Oデバイス135の両方のハードウェアリソースが、異なるISAではなく同じISAを使用することを必要とする場合がある。
【0027】
図1に示されるように、周辺I/Oデバイス135は、コヒーレント相互接続プロトコルを使用してホスト105のCPU 115およびメモリ120を含むコヒーレントドメインを周辺I/Oデバイス135へと拡張するコヒーレントゲートウェイ140を含む。すなわち、I/Oデバイス135内のDAP 145およびDSA 150が、CPU 115およびメモリ120と同じコヒーレントドメインを共有する。結果として、DAP 145は、ホスト105内のCPU 115とのピアプロセッサである。一実施形態において、CPU 115およびDAP 145は両方とも、ホスト105上で実行されるOS 110あるいはカーネルまたはハイパーバイザによって管理される。さらに、キャッシュコヒーレント共有メモリマルチプロセッサパラダイムは、OS 110が近接度に基づいてタスクの割り当てに関するインテリジェントな決定を行うことができる非均一メモリアクセス(NUMA)属性の使用を可能にすることができる。すなわち、NUMA属性を使用して、OS 110は、CPU 115がホストコンピューティングシステム105上にメモリ120と一緒に位置する一方で、DAP 145(および、周辺I/Oデバイス135内の任意の関連のメモリ)がI/Oデバイス135内に位置していることを、知ることができる。すなわち、CPU 115およびDAP 145は、ピアであるが、システム内のメモリへの近接度が異なっており、したがってレイテンシが異なる可能性がある。このように、OS 110は、CPU 115およびDAP 145の位置および近接度に基づいて、タスクをシステム内のさまざまなメモリ要素にインテリジェントに割り当てることができる。
【0028】
DAP 145は、自身のOS 155を備える。一実施形態において、OS 155は、独立した組み込みOSである。しかしながら、別の実施形態において、共有メモリマルチプロセッサパラダイムは、OS 155がホスト105内のOS 110と同じであること、またはOS 110のサブセットであることのいずれかを可能にする。例えば、OS 155は、周辺デバイス135上のメモリおよび計算リソースを管理するOS 110の拡張であってよい。
【0029】
OS 155が独立したOSであるか、OS 110の一部または拡張であるかにかかわらず、DAP 145がホスト105内のOS 110によって管理されるがゆえに、OS 110がOS 155にタスクを提出することができ、次いでOS 155がDAP 145内のハードウェア要素を制御してタスクを完了させる。例えば、DAP 145は、ARMプロセッサであってよいが、x 86またはPowerPC(登録商標)などの別のタイプのISAを使用するプロセッサであってもよい。いずれの場合も、DAP 145およびOS 155は、本来であればCPU 115または周辺I/Oデバイス135内の特別な処理システム(例えば、I/Oデバイス135がFPGAである場合には、プログラマブル論理(PL)を使用する)によって実行される必要がある一般的な機能を実行することができる。一実施形態において、DAP 145はCPUであるが、その計算能力はホスト105内のCPU 115よりはるかに低くてもよい。さらに、DAP 145は、単一または複数の処理コア(例えば、複数のARMコア)を含むことができ、OS 155を格納するローカルDDRメモリなどのローカルメモリを含むことができる。従来のモデルにおいて、OS 155は、ホスト105上のOS 110にとって不透明または不可視である。すなわち、OS 110は、I/Oデバイス135の全体を全体として眺めるにすぎず、I/Oデバイス135にさまざまなタイプのハードウェア要素のどれが存在するかを知ることがない。コヒーレントゲートウェイ140およびコヒーレント相互接続プロトコルを追加することにより、OS 110は、DAP 145をCPU 115のピアプロセッサとして眺めることができる。OS 110は、DAP 145における利用可能な計算リソース(または、利用可能な計算時間)および利用可能なローカルメモリの有無、I/Oデバイス135内およびホスト105内のメモリ要素に対するDAP 145の近接度、ならびにDAP 145をホスト105と同じコヒーレントドメインに追加することによって可能になる他の利点を判断することができる。
【0030】
DSA 150は、ホスト105に関するアクセラレーションタスクを実行するアクセラレータである。一実施形態において、DSA 150は、ホスト105およびDAP 145と同じコヒーレントドメインの一部であるが、これは要件ではない。例えば、DSA 150は、OS 110によって管理されるのではなく、I/Oデバイスドライバ125によって管理されるI/Oドメインに割り当てられてもよい。さらに別の実施形態においては、DSA 150内のハードウェア要素の一部が、コヒーレントドメインに割り当てられ(OS/カーネルによって管理され)る一方で、DSA 150内のハードウェア要素の残りの部分は、I/Oドメインに割り当てられ(I/Oデバイスドライバ125によって管理され)てもよい。
【0031】
DSA 150は、硬化回路、プログラマブル回路(例えば、PL)、またはそれらの組み合わせを含むことができる。例えば、DSA 150は、専用処理要素(例えば、積和演算器またはデータ処理エンジンのアレイ)またはグラフィックス処理装置(GPU)を含むことができる。DSA 150は、複数の構成可能ブロックを有するPLアレイを含むことができる。さらに、DSA 150は、専用処理要素(例えば、データ処理エンジンのアレイ)とPLとの混合を含むことができる。
【0032】
図2が、一例によるハイブリッドゲートウェイを有する周辺I/Oデバイスのブロック図である。簡略化のために、ホスト105内のさまざまなハードウェアおよびソフトウェア要素は図示されていない。周辺I/Oデバイス135は、デバイス135内のハードウェア要素をコヒーレントドメインおよびI/Oドメインに論理的に分割することを可能にするハイブリッドゲートウェイ205を含む。ハードウェア要素をこれらのドメインに分割するさまざまなやり方は、後述される。
【0033】
ホスト105のコヒーレントドメインを周辺I/Oデバイス135に拡張するために、ハイブリッドゲートウェイは、コヒーレンシ相互接続プロトコルを使用する。例えば、ハイブリッドゲートウェイ205は、コヒーレントドメインを形成するために、アクセラレータ用キャッシュコヒーレント相互接続(CCIX)を使用することができる。CCIXは、異種混合システムアーキテクチャのためのキャッシュコヒーレントフレームワークを提供する高性能チップ間相互接続アーキテクチャである。CCIXは、カーネルによって管理されたセマンティクスを周辺機器にもたらす。キャッシュコヒーレンシが、ホスト105上のCPUと、任意の数の周辺I/Oデバイス上に配置されてよいシステム内の他のさまざまなアクセラレータとの間で、常に自動的に維持される。しかしながら、ホスト105内のコヒーレントドメインを周辺I/Oデバイス135内の計算リソースを含むように拡張するために、QuickPath Interconnect(QPI)またはOmni-PathなどのCCIX以外のコヒーレント相互接続プロトコルが使用されてもよい。
【0034】
ハイブリッドゲートウェイ205は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)エンドポイント210と、DAP 145とを含む。PCIeエンドポイント210は、ハイブリッドゲートウェイ205がPCIe通信技術を使用してホスト105との間でデータを転送することを可能にする。例えば、I/Oドメインのトラフィックおよびコヒーレントドメインのトラフィックを、同じPCIe接続(1つ以上)を使用して転送することができる。一実施形態において、どのデータパケットがI/Oドメインのトラフィックであり、どのデータパケットがコヒーレントドメインのトラフィックであるかを示すために、特別なヘッダまたはヘッダ値を使用することができる。
【0035】
図2において、ハイブリッドゲートウェイ205は、PLアレイ215およびネットワークオンチップ(NoC)220に通信可能に結合している。PLアレイ215は、ホスト105によって提供されるアクセラレータタスクを実行するDSA 150を含む。例えば、DSA 150を、機械学習タスク、暗号化アクセラレーション、圧縮/解凍タスク、デジタルまたはアナログ処理タスク、グラフィックアクセラレーション、シミュレーション、などを実行するように(PLを使用して)構成することができる。さらに、上述したように、DSA 150は、PLのみ、硬化回路のみ、または硬化回路とPLとの混合を使用して実装されてよい。
【0036】
一実施形態において、NoC 220は、I/Oデバイス135内のハードウェア要素(例えば、DSA 150、メモリ要素、ハイブリッドゲートウェイ205、など)がデータを送信および受信することを可能にするインターフェース要素を含む。一実施形態においては、NoC 220を形成するためにPLを使用するのではなく、NoC 220を形成する構成要素の一部または全部が硬化される。いずれの場合も、後でさらに詳しく説明されるように、NoC 220をI/Oドメインとコヒーレントドメインとの間で論理的に分割することができる。
【0037】
図2において、周辺I/Oデバイス135は、付属メモリ230に結合している。付属メモリ230は、周辺デバイス135を形成する集積回路(例えば、システムオンチップ(SoC))とは別個の集積回路であってよい。I/Oデバイス135は、高速バスを使用して付属メモリ230に通信可能に結合することができる。しかしながら、付属メモリ230の使用は任意である。さらに、周辺I/Oデバイス135は、内部メモリ要素(および、内部メモリコントローラ)を含んでもよい。
【0038】
付属メモリ230は、デバイスドライバ管理メモリ235およびコヒーレントメモリ240を含む。デバイスドライバ管理メモリ235が、ホスト105内のI/Oデバイスドライバ(図示せず)によって管理される一方で、コヒーレントメモリ240は、ホスト105内のOS/カーネル/ハイパーバイザ(やはり
図2には図示せず)によって管理される。したがって、デバイスドライバ管理メモリ235がI/Oドメインの一部である一方で、コヒーレントメモリ240はコヒーレントドメインの一部である。結果として、I/Oドメインに割り当てられた周辺I/Oデバイス135内のハードウェア要素は、デバイスドライバ管理メモリ235と通信することができるが、コヒーレントメモリ240と通信することはできず、一方で、コヒーレントドメインに割り当てられたハードウェア要素は、コヒーレントメモリ240と通信することができるが、デバイスドライバ管理メモリ235と通信することはできない。
【0039】
図3が、DAPおよびDSAにタスクを割り当てるための一例による方法300のフローチャートである。ブロック305において、ホスト内のOS(あるいは、ホスト内のカーネルまたはハイパーバイザ)は、周辺I/Oデバイス内のDAPへとオフロードされ得る軽量で汎用のプロセッサ機能を特定する。一実施形態において、DAPは、ヘビーな機能の実行(例えば、サーバデータベースアプリケーションまたはイーサネット(登録商標)TCP/IPソフトウェアスタックの実行)には適さないが、軽量なプロセッサ機能を実行することができる。一実施形態において、これらの軽量なプロセッサ機能は、オープンソースライブラリまたは業界標準ソフトウェアアプリケーションである。DAPに適した軽量なプロセッサ機能の例として、圧縮/解凍アルゴリズム(例えば、gzip)またはデータプレーンネットワークルーティングを実行するときの二次処理が挙げられる。これらの機能は、ホスト内のCPU-メモリ複合体よりもむしろDAPに適しているかもしれない。
【0040】
一実施形態において、DAPへとオフロードされるプロセッサ機能は、DSAに割り当てられるアクセラレータタスクに関する。一実施形態において、軽量なプロセッサ機能の実行時にDAPによって生成されたデータは、次いでDSAへと送信され、アクセラレータタスクを実行するときに処理される。例えば、OS内のスケジューラが、100 MBの非圧縮データファイルをもたらす2 MBのファイルを解凍するように、DAPに命令することができる。次いで、DASは、非圧縮データについてアクセラレータタスク(例えば、検索)を実行することができる。この場合、アクセラレータタスクは、DAPによって実行される軽量な機能に対するデータ依存性を有する。
【0041】
一実施形態において、DAPへとオフロードされるプロセッサ機能は、DAPおよびDSA上のタスクのスケジューリングを担当するOS 110のサブセットである軽量なOSスケジューラモジュールである。一実施形態において、軽量なOSスケジューラは、DAPにオフロードされた利用可能な機能のうちのどれが、DAPによって実行されるべき次のプロセッサ機能としてディスパッチされるかを決定する。別の実施形態において、軽量なOSスケジューラは、DAPによって完了された利用可能なデータ依存機能のうちのどれが、DSAによって実行されるべき次のタスクとしてディスパッチされるかを決定する。
【0042】
ブロック310において、ホスト内のOSは、コヒーレント相互接続プロトコルを使用して、機能を実行し、得られたデータをコヒーレントメモリに格納するように、DAPに命令する。ホストおよびI/Oデバイスの少なくとも一部が、同じコヒーレントドメイン内にあるため、ホスト内のOSは、コヒーレント相互接続プロトコル(例えば、CCIX、QPI、またはOmni-Path)を使用して、軽量な機能を実行するようにDAPに対して命令することにより、I/Oデバイスドライバをバイパスすることができる。すべてのハードウェア要素がホストと同じコヒーレントドメインに割り当てられている場合、ホストは、インストールされたI/Oデバイスドライバを有さない(例えば、I/Oデバイス内にI/Oドメインが存在しないため、I/Oデバイスドライバは必要とされない)可能性がある。
【0043】
OSは、キャッシュコヒーレント共有メモリマルチプロセッサパラダイム内の既知のツールのいずれかを使用して、DAPに命令をもたらすことができる。例えば、DAPはホスト内のCPUに対するピアプロセッサであるため、OSは、ホスト内のCPUで使用するものと同じセマンティクスを使用してDAPを通信および管理することができる。これらのセマンティクスは、セマフォ、ドアベル、暗黙的更新、などを含むことができる。
【0044】
OSは、軽量な機能の実行の結果を特定のメモリに格納するようにDAPに命令することができる。NUMA属性を使用して、OSは、システム内のメモリ要素(ホスト内、周辺I/Oデバイス内、および付属メモリ内のメモリ要素を含むことができる)に対するDAPの近接度を知ることができる。データがアクセラレータタスクを実行するためにDSAによって使用されるように意図されている場合、OSは、データをI/Oデバイス内または付属メモリ内のいずれかのメモリ要素に格納するようにDAPに命令することができ、これは、ホストにデータを格納するよりも低いレイテンシを提供することができるためである。しかしながら、DAPによって実行される軽量な機能が、DSAに割り当てられたアクセラレータタスクに関係しない場合、OSは、得られたデータをホストに格納するようにDAPに命令することができる(例えば、ホスト内のCPUがデータを必要とする場合)。
【0045】
ブロック315において、OSは、コヒーレント相互接続プロトコルを使用して、DAPによって格納されたデータを処理するようにDSAに命令する。この例においては、DAPによって生成されたデータとDASによって実行されるアクセラレータタスクとの間に、データ依存性が存在する。一実施形態において、OSは、DSAによる処理のための準備が整ったデータを有する旨のDAPからの準備完了信号を待つように、DSAに命令する。上記の例を使用すると、ひとたびDAPが圧縮データの解凍を完了したならば、DAPは、解凍データの格納場所をDSAに通知することができ、したがってDSAがデータを(例えば、NoCを使用して)を取り出し、アクセラレータタスクを実行することができる。
【0046】
ブロック320において、ホストは、DSA上のアクセラレータタスクの実行からの結果を受信する。DSAはコヒーレントドメインの一部であってよいため、I/Oデバイスは、ゲートウェイおよびコヒーレント相互接続プロトコルを使用して、アクセラレータ機能の実行の一部としてDSAによって生成されたデータを、ホストに転送することができる。次いで、OSは、アクセラレータタスクが完了し、得られたデータをメモリ内で見つけることができることを、ホスト内のCPUに通知することができる。
【0047】
図4Aは、一例によるDAP 145およびDSA 150に接続されたエンドポイントコヒーレント相互接続405を有するハイブリッドゲートウェイ205のブロック図である。DAP 145は、ホスト105内のCPU-メモリ複合体と同じコヒーレントドメインの一部である。したがって、すべてのリソースをOSまたはカーネルで管理することができ、共有メモリマルチプロセッサパラダイムは、例えばI/Oデバイス135などのアクセラレータへと拡張される。しかしながら、コヒーレント相互接続プロトコルの使用は、ホスト105およびDAP 145が異なるISAを有することができるように、共有メモリマルチプロセッサモデルも可能にする。さらに、DSA 150は、PLドメイン特化アダプティブコンピュータ415に接続され、例えばホスト105のISAまたはDAP 150のISAの特定のサブセットを実行するカスタムプロセッサ、あるいはPLアレイ215内のPLを使用して実装されてもよいカスタムプロセッサに接続される。一実施形態において、PLドメイン特化アダプティブコンピュータ415は、PL DAPであり、計算効率を向上させるためにプログラマブル論理回路において特定のサブセットISAまたはカスタムISAを実行する柔軟性を提供する。
【0048】
図4Aは、DSA 150(やはりコヒーレントドメインに割り当てられる)が同じエンドポイントコヒーレント相互接続405を介して接続されたDAP 145を有する第1のDSA/DAP接続形態を示している。
図4Bは、
図4Bが第2の異なるDSA/DAP接続形態を示していることを除いて、
図4Aに示したI/Oデバイス135と同様である。
図4Bにおいては、DSA 150およびDAP 145の両方が、DSA処理前およびDSA処理後の低レイテンシのデータアクセスのために、共有キャッシュ420に接続されている。
【0049】
一実施形態においては、ホスト105内のCPU-メモリ複合体と同じコヒーレントドメインの共有に加えて、
図4Aおよび
図4Bに示されるI/Oデバイス135は、例えば、ホストメモリから/ホストメモリへの前処理されたアクセラレータデータフットプリントまたは後処理されたフットプリントのいずれかのデータ移動など、従来のI/Oデバイスドライバ管理モデルを介したデータ移動も可能にする。さらに、ハイブリッドゲートウェイ205は、ゲートウェイ205内のハードウェア要素(例えば、PCIeエンドポイント210およびエンドポイントコヒーレント相互接続405)とNoC 220との間の通信を容易にするゲートウェイNoC 410を含む。
【0050】
図5は、一例によるI/Oドメインおよびコヒーレントドメインを有する周辺I/Oデバイス135に結合したホスト105のブロック図である。
図5のコンピューティングシステム500は、PCIe接続530を使用して周辺I/Oデバイス135に通信可能に結合したホスト105(例えば、
図1のホスト105)を含む。上述のように、CPU 115およびメモリ120は、キャッシュコヒーレント共有メモリマルチプロセッサパラダイムに従うコヒーレントドメインを形成するようにOSによって管理される(または、カーネル/ハイパーバイザによって管理される)。従来のI/Oモデルでは、周辺I/Oデバイス135(および、そのすべての計算リソース550)は、ホスト105において確立されるコヒーレントドメインから除外される。従来のモデルにおいて、ホスト105は、I/Oデバイス135内の計算リソース550の管理について、自身のメモリ120に格納されたI/Oデバイスドライバ125に依存する。すなわち、周辺I/Oデバイス135は、I/Oデバイスドライバ125によって制御され、I/Oデバイスドライバ125を介してアクセス可能である。
【0051】
計算リソース550Cおよび550Dがコヒーレントドメイン560に論理的に割り当てられる一方で、計算リソース550Aおよび550BはI/Oドメイン545に割り当てられる。したがって、I/Oデバイス135は、両方のドメイン545、560に割り当てられた計算リソース550を有することから利益を得る。I/Oドメイン545が、ホスト105とI/Oデバイス135との間で大規模なメモリ転送を行うときに効率を提供する一方で、コヒーレントドメイン560は、上述した性能上の利点、ソフトウェアの柔軟性、およびオーバーヘッドの低減を提供する。ハードウェア計算リソース550(例えば、プログラマブル論理回路、ネットワークオンチップ(NoC)、データ処理エンジン、および/またはメモリ)をI/Oドメイン545およびコヒーレントドメイン560に論理的に分割することによって、I/Oデバイス135は、両方のタイプのパラダイムからの利益を得ることができる。
【0052】
ホスト105がI/Oデータトラフィックおよびコヒーレントデータトラフィックの両方を送信および受信できるように、周辺I/Oデバイス135は、PCIe接続530上で受信したデータをI/Oデータトラフィックおよびコヒーレントデータトラフィックに分離するハイブリッドゲートウェイ205を含む。I/Oデータトラフィックが、I/Oドメイン545内の計算リソース550Aおよび550Bに転送される一方で、コヒーレントデータトラフィックは、コヒーレントドメイン560内の計算リソース550Cおよび550Dに転送される。一実施形態において、ハイブリッドゲートウェイ205は、I/Oドメイン545内の計算リソース550がコヒーレントドメイン560内の計算リソース550と並列に動作できるように、I/Oデータトラフィックおよびコヒーレントデータトラフィックを並列に処理することができる。すなわち、ホスト105は、I/Oドメイン545およびコヒーレントドメイン560の両方の計算リソース550にタスクを割り当てることができ、I/Oドメイン545およびコヒーレントドメイン560の両方の計算リソース550が、それらのタスクを並列に実行することができる。
【0053】
周辺I/Oデバイス135は、(ホスト105の拡張スロットに差し込まれる)差込式カード、SoC、GPU、FPGA、などの多数のさまざまなタイプのI/Oデバイスであってよい。本明細書の実施形態は、計算リソース550を2つのドメインに分割することを論じているが、他の実施形態においては、ハイブリッドゲートウェイ205を、さらなるドメインあるいはI/Oドメイン545およびコヒーレントドメイン560内の複数のサブドメインをサポートするように変更することができる。
【0054】
図6が、I/Oドメイン545およびコヒーレントドメイン560に論理的に分割されたPLアレイ215、メモリブロック620、およびNoC 220を有する一例による周辺I/Oデバイス135のブロック図である。この例において、PLアレイ215は、複数のPLブロック610から形成されている。これらのブロックを、I/Oドメイン545またはコヒーレントドメイン560に個別に割り当てることができる。すなわち、PLブロック610A、610BがI/Oドメイン545に割り当てられる一方で、PLブロック610C、610Dはコヒーレントドメイン560に割り当てられる。一実施形態においては、ブロック間に重複がない(例えば、いかなるPLブロック610も、I/Oドメインおよびコヒーレントドメインの両方に割り当てられることがない)ように、I/Oドメインに割り当てられたPLブロック610のセットは、コヒーレントドメインに割り当てられたPLブロック610のセットと相互に排他的である。一実施形態においては、PLブロック610Aおよび610Bを、I/Oドメイン545内にDSAを形成するために使用することができる一方で、PLブロック610Cおよび610Dは、コヒーレントドメイン560内にDSAを形成するために使用される。
【0055】
一実施形態において、I/Oドメイン545またはコヒーレントドメイン560のいずれかへのハードウェアリソースの割り当ては、I/Oデバイス135内のハードウェアリソースの物理的な位置に影響を及ぼさない(または、I/Oデバイス135内のハードウェアリソースの物理的な位置を指示しない)。例えば、PLブロック610Aおよび610Cは、たとえこれらのブロックがPLアレイ215内で互いに隣接している場合でも、異なるドメインに割り当てられてよい。したがって、I/Oデバイス135内のハードウェアリソースの物理的な位置は、それらをI/Oドメイン545およびコヒーレントドメイン560に論理的に割り当てるときに考慮されてよいが、これは必ずしも必須ではない。
【0056】
さらに、I/Oデバイス135は、I/Oドメイン645およびコヒーレントドメイン660に割り当てられたメモリコントローラ615を含む。一実施形態においては、メモリコントローラ615と対応するメモリブロック620との間の物理的な相互接続ゆえに、メモリコントローラ615のうちの1つをI/Oドメイン545またはコヒーレントドメイン560のいずれかに割り当てることは、そのメモリコントローラ615に接続されたすべてのメモリブロック620も同じドメインに割り当てられることを意味する。例えば、メモリコントローラ615を、(他のいずれのメモリコントローラ615にも結合していない)メモリブロック620の固定のセットに結合させることができる。したがって、メモリブロック620を、それらの結合先のメモリコントローラ615と同じドメインに割り当てることができる。しかしながら、他の実施形態においては、同じメモリコントローラ615に結合したメモリブロック620を異なるドメインに割り当てることが可能であってよい。
【0057】
一実施形態において、NoC 220は、I/Oデバイス135内のハードウェア要素(例えば、構成可能データ処理エンジン、メモリブロック620、PLブロック610、など)がNoC 220を使用してデータを送信および受信することを可能にするインターフェース要素を含む。一実施形態においては、NoC 220を形成するためにプログラマブル論理回路を使用するのではなく、NoCを形成する構成要素の一部または全部が硬化される。いずれの場合も、NoC 220を、I/Oドメイン545とコヒーレントドメイン560との間で論理的に分割することができる。一実施形態においては、NoC 220の異なる部分を2つのドメインに割り当てる代わりに、NoCのパラメータが、I/Oドメイン545およびコヒーレントドメイン560に対応するデータトラフィックに異なるサービスレベルを提供するように構成される。すなわち、NoC 220を流れる両方のドメインのデータトラフィックが、同じハードウェア要素(例えば、スイッチおよび通信リンク)を使用できるが、ハードウェア要素による取り扱いが異なってよい。例えば、NoC 220は、2つの異なるドメインに対して、異なるサービス品質(QoS)、レイテンシ、帯域幅を提供することができる。さらに、NoC 220は、セキュリティ上の理由で、I/Oドメイン545のトラフィックをコヒーレントドメイン560のトラフィックから分離することもできる。
【0058】
別の実施形態において、NoC 220は、I/Oドメイン545内の計算リソースがコヒーレントドメイン560内の計算リソースと通信することを防ぐことができる。しかしながら、一実施形態においては、I/Oドメイン545に割り当てられた計算リソースがコヒーレントドメイン560に割り当てられた計算リソースと通信することを可能にすることが、有利であり得る。これまでは、この通信は、I/Oデバイスドライバ125とホスト105内のOSとの間で行われていた。代わりに、NoC 220(計算リソースがデバイス135内で遠く離れている場合)またはPLアレイ215内のファブリックツーファブリック接続(2つの異なるドメインに割り当てられた2つのPLブロック610が互いに近く、かつ通信を必要とする場合)を使用して、I/Oデバイス135内でドメイン間通信を行うことができる。
【0059】
図7が、I/O周辺デバイス135、より具体的には
図2のPLアレイ215を有するI/O周辺デバイスについて、多数の異なるプログラマブルタイルを含むFPGA 700による実装形態を示しており、これらのプログラマブルタイルは、トランシーバ37、CLB 33、BRAM 34、入力/出力ブロック(「IOB」)36、構成およびクロッキング論理回路(「CONFIG/CLOCKS」)42、DSPブロック35、専用入力/出力ブロック(「IO」)41(例えば、構成ポートおよびクロックポート)、ならびにデジタルクロックマネージャ、アナログデジタル変換器、システム監視論理回路、などのその他のプログラマブル論理回路39を含む。FPGAは、PCIeインターフェース40、アナログ-デジタル変換器(ADC)38、などをさらに含むことができる。
【0060】
いくつかのFPGAにおいて、各々のプログラマブルタイルは、
図7の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素の入力および出力端子48への接続を有する少なくとも1つのプログラマブル相互接続要素(「INT」)43を含むことができる。各々のプログラマブル相互接続要素43は、同じタイルまたは他のタイル内の隣接するプログラマブル相互接続要素の相互接続セグメント49への接続をさらに含むことができる。各々のプログラマブル相互接続要素43は、論理ブロック(図示せず)間の汎用ルーティングリソースの相互接続セグメント50への接続をさらに含むことができる。汎用ルーティングリソースは、相互接続セグメント(例えば、相互接続セグメント50)のトラックを含む論理ブロック(図示せず)と、相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含むことができる。汎用ルーティングリソースの相互接続セグメント(例えば、相互接続セグメント50)は、1つ以上の論理ブロックにまたがることができる。プログラマブル相互接続要素43は、汎用ルーティングリソースと共に、図示のFPGAのためのプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0061】
例示的な実装形態において、CLB 33は、ユーザ論理回路を実装するようにプログラムすることができる構成可能論理要素(「CLE」)44と、単一のプログラマブル相互接続要素(「INT」)43とを含むことができる。BRAM 34は、1つ以上のプログラマブル相互接続要素に加えて、BRAM論理要素(「BRL」)45を含むことができる。一実施形態において、BRAM 34は、再構成の際に格納済みのデータを保持することができるメモリの一部である。典型的には、タイルに含まれる相互接続要素の数は、タイルの高さに依存する。図示の例において、BRAMタイルは、5つのCLBと同じ高さを有するが、他の数(例えば、4)を使用することも可能である。DSPブロック35は、適切な数のプログラマブル相互接続要素に加えて、DSP論理要素(「DSPL」)46を含むことができる。IOB 36は、例えば、プログラマブル相互接続要素43の1つのインスタンスに加えて、入力/出力論理要素(「IOL」)47の2つのインスタンスを含むことができる。当業者にとって明らかであるとおり、例えばIO論理要素47に接続される実際のIOパッドは、通常は、入力/出力論理要素47の領域に限定されない。
【0062】
図示の例では、(
図7に示される)ダイの中心付近の水平領域は、構成、クロック、および他の制御論理回路に使用される。この水平領域または列から延びる垂直列51は、FPGAの広がりを横切ってクロックおよび構成信号を分配するために使用される。
【0063】
図7に示されるアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する規則的な列構造を乱す追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用論理回路であってよい。
【0064】
図7が、例示的なFPGAアーキテクチャのみを示すことを意図していることに、留意されたい。例えば、行における論理ブロックの数、行の相対幅、行の数および順序、行に含まれる論理ブロックの種類、論理ブロックの相対サイズ、ならびに
図7の上部に含まれる相互接続/論理回路の実装形態は、例示にすぎない。例えば、実際のFPGAにおいては、ユーザ論理の効率的な実装形態を容易にするために、通常は、CLBが現れるあらゆる場所に2つ以上の隣接するCLB行が含まれるが、隣接するCLB行の数は、FPGAの全体サイズにつれて変化する。
【0065】
上記では、本開示に提示された実施形態が参照されている。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、記載された特徴および要素の任意の組み合わせが、異なる実施形態に関係していても、あるいはそのようでなくても、想定される実施形態を実装および実施するために想定される。さらに、本明細書に開示された実施形態は、他の可能な解決策または先行技術を超える利点を達成することができるが、所与の実施形態によって特定の利点が達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態および利点は、あくまでも例示であり、特許請求の範囲に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素または限定とは見なされない。
【0066】
当業者であれば理解できるとおり、本明細書に開示される実施形態は、システム、方法、またはコンピュータプログラム製品として具現化可能である。したがって、いくつかの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード、などを含む)、あるいはソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができ、これらはすべて、本明細書において「回路」、「モジュール」、または「システム」と一般的に呼ばれ得る。さらに、いくつかの態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
【0067】
1つ以上のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであってよいが、これらに限られるわけではない。コンピュータ可読記憶媒体のより具体的な例(これですべてではないリスト)は、下記、すなわち1つ以上の配線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、またはこれらの任意の適切な組み合わせを含むと考えられる。本明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって使用され、あるいはこれらに関連して使用されるプログラムを含み、あるいは格納することができる任意の有形の媒体である。
【0068】
コンピュータ可読信号媒体は、例えばベースバンドにおいて、または搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含むことができる。そのような伝搬信号は、これらに限られるわけではないが電磁気、光学、またはそれらの任意の適切な組み合わせを含むさまざまな形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって使用され、あるいはこれらに関連して使用されるプログラムを伝達し、伝播させ、あるいは運ぶことができる任意のコンピュータ可読媒体であってよい。
【0069】
コンピュータ可読媒体上に具現化されたプログラムコードを、これらに限られるわけではないが無線、有線、光ファイバケーブル、RFなど、またはこれらの任意の適切な組み合わせを含む任意の適切な媒体を使用して伝送することができる。
【0070】
本開示の態様のための動作を実行するためのコンピュータプログラムコードを、Java(登録商標)、Smalltalk、C++、などのオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで記述することができる。プログラムコードを、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバ上で実行することができる。後者の状況において、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、あるいは接続は外部コンピュータへと(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。
【0071】
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して以下で説明される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図のブロックの組み合わせを、コンピュータプログラム命令によって実現できることを、理解できるであろう。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供して、これらの命令がコンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行されることで、フローチャートおよび/またはブロック図の1つ以上のブロックに指定された機能/動作を実現するための手段が生み出されるように、マシンを生成することができる。
【0072】
さらに、これらのコンピュータプログラム命令は、これらの命令がコンピュータ可読媒体に格納されることで、フローチャートおよび/またはブロック図の1つ以上のブロックに指定された機能/動作を実現する命令を含む製造物が生み出されるように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに特定のやり方で機能するように指示することができるコンピュータ可読媒体に格納されてよい。
【0073】
さらに、コンピュータプログラム命令を、これらの命令がコンピュータまたは他のプログラマブル装置上で実行されることで、フローチャートおよび/またはブロック図の1つ以上のブロックに指定された機能/動作を実現するためのプロセスがもたらされるように、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させ、コンピュータによって実現されるプロセスを生み出すことができる。
【0074】
図面におけるフローチャートおよびブロック図は、本発明のさまざまな例によるシステム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実現するための1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替の実装形態において、ブロックに記載された機能は、図面に記載された順序以外の順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されてもよく、あるいはブロックは、場合によっては、関連する機能に応じて、逆の順序で実行されてもよい。また、ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組み合わせを、指定された機能または動作を実行し、あるいは専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアに基づくシステムによって実装できることに留意されたい。
【0075】
上記は特定の例を対象としているが、その基本的な範囲から逸脱することなく、他のさらなる例を考案することができ、その範囲は、以下の特許請求の範囲によって決定される。