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

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

▶ リキッド・インスツルメンツ・プロプライエタリー・リミテッドの特許一覧

特開2024-38092部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善
<>
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図1
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図2
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図3A
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図3B
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図3C
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図3D
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図4
  • 特開-部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024038092
(43)【公開日】2024-03-19
(54)【発明の名称】部分的リコンフィギュレーションを使用したフィールドプログラマブルゲートアレイのプログラミングプロセスの改善
(51)【国際特許分類】
   G06F 8/30 20180101AFI20240312BHJP
【FI】
G06F8/30
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023218099
(22)【出願日】2023-12-25
(62)【分割の表示】P 2021537028の分割
【原出願日】2019-08-20
(31)【優先権主張番号】16/113,490
(32)【優先日】2018-08-27
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VIVADO
2.VERILOG
3.SIMULINK
4.LABVIEW
(71)【出願人】
【識別番号】521085146
【氏名又は名称】リキッド・インスツルメンツ・プロプライエタリー・リミテッド
【氏名又は名称原語表記】LIQUID INSTRUMENTS PTY. LTD.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シャドック,ダニエル・アンソニー
(72)【発明者】
【氏名】シュウェンケ,マックス・アンドリュー・ゴードン
(72)【発明者】
【氏名】ローレス・ウチェニッチ,ダニエル・マリー
(72)【発明者】
【氏名】コフラン,ベンジャミン・ポール
(72)【発明者】
【氏名】ラム,ティモシー・ティエン-ユエ
(72)【発明者】
【氏名】アルティン,ポール・アンソニー
(57)【要約】      (修正有)
【課題】デジタル電子集積回路(IC)をコンフィギュアする速度と効率とを改善する方法及びコンピュータ可読媒体を提供する。
【解決手段】方法は、特定のICに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための複数のプリミティブビットストリームをコンパイルし、記憶することと、リコンフィギャラブルロジックを使用して特定のICに実装するアルゴリズムの機能ロジックを指定するための入力を受信することと、機能ロジックに対応する特定のプリミティブ関数を含むプリミティブ関数のサブセットを自動的に決定することと、デジタルストレージから、プリミティブ関数のサブセットに対応するプリミティブビットストリームのサブセットを取得することと、1つ以上の部分的リコンフィギュレーション演算を使用して、特定のICにプリミティブビットストリームの前記サブセットを書き込むことと、を含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
部分的リコンフィギュレーションをサポートするデジタル電子集積回路(IC)であって、特定のICが、複数のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々でコンフィギャラブルである複数のプリミティブバリエーションを有する、デジタル電子集積回路(IC)をコンフィギュアする速度と効率の改善を提供する方法であって、
コンフィギュレーションビットストリームを前記特定のICに書き込む前に、デジタルストレージを使用して、前記特定のICに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための複数のプリミティブビットストリームをコンパイルし、記憶することと、
リコンフィギャラブルロジックを使用して前記特定のICに実装するアルゴリズムの機能ロジックを指定するための入力を受信することと、
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサブセットを自動的に決定することと、
前記デジタルストレージから、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームのサブセットを取得することと、
1つ以上の部分的リコンフィギュレーション演算を使用して、前記特定のICに前記プリミティブビットストリームの前記サブセットを書き込むことと、
を含み、
前記方法が、1つ以上のコンピューティングデバイスによって実行される、
方法。
【請求項2】
前記特定のICが、M個のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々にN個のバリエーションを有するフィールドプログラマブルゲートアレイ(FPGA)を含み、前記方法が、前記FPGA上のM個とN個のすべての組み合わせに書き込むことができ、実装することができる、複数の異なるプリミティブ関数の前記複数のプリミティブビットストリームをコンパイルし、記憶し、結果としてM*N個のプリミティブを記憶することをさらに含む、請求項1に記載の方法。
【請求項3】
クライアントコンピュータシステムに通信可能に連結されたサーバを使用して前記コンパイルし記憶することを実行することと、
前記クライアントコンピュータシステムから前記サーバに、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームの前記サブセットを提供する要求を送信することと、
前記サーバから前記クライアントコンピュータに、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームの前記サブセットを含む応答を送信することと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサブセットを自動的に決定することは、前記プリミティブ関数の各々に対する特定のパーティションおよびバリエーションを決定し、前記前記特定のパーティションおよびバリエーションを識別するメタデータを記憶することをさらに含み、前記要求を送信することは、前記要求とともに前記メタデータを送信することをさらに含む、請求項3に記載の方法。
【請求項5】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN
個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が1つ以上の入力、1つ以上の出力を有し、コンフィギュレーションAXIバスに接続されている、請求項1に記載の方法。
【請求項6】
前記バリアントの各々が異なる目的のためのロジックを含み、どの信号が前記2つ以上の出力に渡されるかを選択するための出力多重化として有する、前記FPGAでの使用に適合された、請求項5に記載の方法。
【請求項7】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、機器のシングルチャネルバージョンとしてコンフィギュアできる、より大きなPR領域であり、
1つ以上のDSPブロック部分的リコンフィギュレーション領域の第2のセットが、低レベル機能を実装するように適合されている、
請求項1に記載の方法。
【請求項8】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、信号生成機器またはコントローラ機器用にコンフィギュアされた、より大きなPR領域であり、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第2のセットが、測定機器または監視機器用にコンフィギュアされている、請求項1に記載の方法。
【請求項9】
前記特定のICに実装する前記アルゴリズムの機能ロジックを表すグラフィカルブロックを選択し、接続するためのグラフィカルユーザインターフェースにおいて入力を受信することをさらに含み、前記グラフィカルブロックがリコンフィギャラブルロジックに関連する、請求項1に記載の方法。
【請求項10】
部分的リコンフィギュレーションをサポートするデジタル電子集積回路(IC)をコンフィギュアする速度および効率の改善を提供する命令のシーケンスを記憶する1つ以上の非一時的コンピュータ可読ストレージ媒体であって、特定のICが、複数のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々でコンフィギャラブルである複数のプリミティブバリエーションを有し、1つ以上のプロセッサを使用して実行されるとき、前記1つ以上のプロセッサに、
コンフィギュレーションビットストリームを前記特定のICに書き込む前に、デジタルストレージを使用して、前記特定のICに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための複数のプリミティブビットストリームをコンパイルし、記憶することと、
リコンフィギャラブルロジックを使用して前記特定のICに実装するアルゴリズムの機能ロジックを指定するための入力を受信することと、
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサブセットを自動的に決定することと、
前記デジタルストレージから、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームのサブセットを取得することと、
1つ以上の部分的リコンフィギュレーション演算を使用して、前記特定のICに前記プリミティブビットストリームの前記サブセットを書き込むことと、を実行させ、
方法が、1つ以上のコンピューティングデバイスによって実行される、
非一時的コンピュータ可読ストレージ媒体。
【請求項11】
前記特定のICが、M個のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々にN個のバリエーションを有するフィールドプログラマブルゲートアレイ(FPGA)を備え、実行されるとき、前記FPGA上のM個とN個のすべての組み合わせに書き込むことができ、実装することができる、複数の異なるプリミティブ関数の前記複数のプリミティブビットストリームをコンパイルさせ、記憶させ、結果としてM*N個のプリミティブを記憶させる、命令のシーケンスをさらに備える、請求項10に記載のコンピュータ可読媒体。
【請求項12】
実行されるとき、
クライアントコンピュータシステムに通信可能に連結されたサーバを使用して前記コンパイルし記憶することを実行させ、
前記クライアントコンピュータシステムから前記サーバに、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームの前記サブセットを提供する要求を送信させ、
前記サーバから前記クライアントコンピュータに、前記プリミティブ関数の前記サブセットに対応する前記プリミティブビットストリームの前記サブセットを含む応答を送信させる、
命令のシーケンスをさらに備える、請求項10に記載のコンピュータ可読媒体。
【請求項13】
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサブセットを自動的に決定することは、実行されるとき、前記プリミティブ関数の各々に対する特定のパーティションおよびバリエーションを決定させ、前記特定のパーティションおよびバリエーションを識別するメタデータを記憶させる命令のシーケンスさらに含み、前記要求を送信することは、前記要求とともに前記メタデータを送信することをさらに含む、請求項12に記載のコンピュータ可読媒体。
【請求項14】
各々が順次接続された複数の同一のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を備える、FPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が1つ以上の入力、1つ以上の出力を有し、コンフィギュレーションAXIバスに接続されている、請求項10に記載のコンピュータ可読媒体。
【請求項15】
前記バリアントの各々が異なる目的のためのロジックを含み、どの信号が前記2つ以上の出力に渡されるかを選択するための出力多重化として有する、前記FPGAでの使用に適合された、請求項14に記載のコンピュータ可読媒体。
【請求項16】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有
する複数の行、行間の任意の接続を可能にする複数の相互接続、を備えるFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、機器のシングルチャネルバージョンとしてコンフィギュアできる、より大きなPR領域であり、
1つ以上のDSPブロック部分的リコンフィギュレーション領域の第2のセットが、低レベル機能を実装するように適合されている、
請求項10に記載のコンピュータ可読媒体。
【請求項17】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、信号生成機器またはコントローラ機器用にコンフィギュアされた、より大きなPR領域であり、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第2のセットが、測定機器または監視機器用にコンフィギュアされている、
請求項10に記載のコンピュータ可読媒体。
【請求項18】
実行されるとき、前記特定のICに実装するアルゴリズムの機能ロジックを表すグラフィカルブロックを選択し、接続するためのグラフィカルユーザインターフェースにおいて入力を受信させる命令のシーケンスをさらに含み、前記グラフィカルブロックがリコンフィギャラブルロジックに関連する、請求項10に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の1つの技術分野は、フィールドプログラマブルゲートアレイ(FPGA)集積回路(IC)および他のタイプのプログラマブルICのプログラミングである。別の技術分野は、FPGAプログラミングの分野における部分的リコンフィギュレーション(PR)である。
【背景技術】
【0002】
明細書に記載の本項で説明するアプローチは、追求できるであろうアプローチであるが、必ずしも以前に考案されたかまたは追求されたアプローチであるとは限らない。したがって、特に明記しない限り、本項で説明されているアプローチのいずれかが、単に本項に含まれているという理由だけで先行技術として適格であると想定されるべきではない。
【0003】
フィールドプログラマブルゲートアレイ(FPGA)集積回路は、異なる複雑なデジタル回路を生成するようにコンフィギュアできるコンフィギャラブルロジックブロック(CLB)のマトリックスを有する半導体デバイスである。CLBは、FPGAのエリアにまたがるプログラム可能な相互接続を介して接続される。FPGAには、ランダムアクセスメモリ、デジタルシグナルプロセッサ(DSP)スライス、またはその他のロジック要素が含まれる場合もある。CLBは、ANDやXORなどのロジック演算を生成するようにコンフィギュアすることができ、これらの演算は、次いで、FPGA上の他のロジック要素と直列および/または並列に連結されて、指定されたデジタル回路を生成する。
【0004】
FPGAコンフィギュレーションは、VerilogまたはVHDLなどのハードウェア記述言語(HDL)を使用して記述される。HDLで記述されたプログラムは、特定のターゲットFPGAのコンフィギュレーション情報を含むビットストリームを生成するために、専用のソフトウェアを使用してコンパイルされる。VIVADOは、HDL設計を記述およびコンパイルしてXilinx FPGAのビットストリームを生成するために使用できる統合設計環境の例である。
【0005】
FPGAは、高速DSPまたは高度に並列なDSPアルゴリズムを実装するために非常に強力であることが証明されている。FPGAは、例えばXilinx,Inc.から市販されている。FPGAにより、リコンフィギャラブルデジタル電子製品の作製が可能になった。一例として、Liquid Instruments Pty Ltd.によって開発されたMoku:Labがある。しかし、FPGAをプログラミングするための現在の技術には、いくつかの欠点がある。
【0006】
FPGAのプログラミングには通常、習得に時間がかかる可能性のある専門知識が必要である。多くの場合、コンパイルツールは、FPGAのメーカまたはベンダからのみ入手可能であり、それらのチップに固有のインターフェースを有する。ユーザは、これらのツールのインストールと学習に時間を費やす必要がある。複雑さによっては、開発時間が長くなる可能性がある。さらに、設計変更または開発全体を含め、完成したプログラムをコンパイルする時間は、複雑さに応じて数分~数時間程度になる可能性がある。FPGAプログラムに比較的単純な変更を加えることに直面している今日の開発者は、FPGAにロードする前にビットストリーム全体が再コンパイルされ、配信されるのを何時間も待つことを望んでいない。
【0007】
これらの問題に基づいて、FPGAプログラミングの技術の改善が必要であり、FPG
Aプログラムのコンパイル時間を大幅に短縮する方法に対する長年にわたるが満たされていない特定のニーズがある。
【発明の概要】
【0008】
添付の特許請求の範囲は、本発明の要約としての役割を果たし得る。
【図面の簡単な説明】
【0009】
図1】例を実装するために使用され得る例示的な分散コンピュータシステムを示す。
図2】ある実施形態に係る例示的な計算実施形態を示す。
図3A】部分的リコンフィギュレーションを有するFPGAの例示的なシステムアーキテクチャを示す。
図3B】信号処理回路を表す機能ブロックを選択し、グラフィカルに接続するためにIDEのGUIを使用して設計され得る複雑なDSPアルゴリズムの例を示す。
図3C図3Aのアーキテクチャ内で図3Bを実装する例を示す。
図3D】低レベルPRモジュールが二次的な機能である前述のアーキテクチャのバリエーションを示す。
図4】機器が測定機器または監視機器、および信号生成機器またはコントローラ機器の2つのカテゴリに分割される、別のアーキテクチャのバリエーションを示す。
図5】ある実施形態を実装できる例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0010】
以下の説明では、説明の目的で、本発明の完全な理解を提供するために、多くの特定の詳細が示されている。しかしながら、本発明がこれらの特定の詳細なしで実施され得ることは明らかであろう。他の例では、本発明を不必要に曖昧にすることを回避するために、周知の構造およびデバイスがブロック図の形で示されている。実施形態は、以下の概要に従って項に説明される:
1.基礎技術
2.実施形態の一般的な概要
3.実施形態の構造例および機能例
4.実装例-ハードウェアの概要
1.基礎技術
DSPアルゴリズムは、多くの場合、ブロック図を使用して記号で記述できる。いくつかの市販のシステムでは、ブロック図のグラフィカルユーザインターフェース(GUI)を使用して、FPGAなどのデジタル集積回路(IC)のアルゴリズムの設計を可能にする。SimulinkおよびLabVIEWは、FPGAやその他のターゲットプラットフォーム向けに、ソフトウェアベースのデジタルシステムの設計、検証、および実装を容易にすることができるブロック図環境を提供するツールの商用例である。これらのシステムは、ターゲットプラットフォームのプログラミングの複雑さの一部を取り除くが、それでも長いコンパイル時間を必要とし、開発時間が長くなる可能性がある。
【0011】
GNUradioは、個々の機能ブロックを一緒にドラッグアンドドロップし、GNUradio互換ハードウェアに接続されたホストプロセッサ上でそれらの相互作用を観察するための環境を提供するツールの例である。このシステムでは、設計者は外部処理システムに展開するためのソースコードを生成する必要はない。しかし、GNUradioは高帯域幅のハードウェアベースのアプリケーションには適していない。
【0012】
部分的リコンフィギュレーション(PR)では、FPGAプログラムされた回路を、個別にコンパイルされる領域にし、その結果として領域ビットストリームを生成し得る。各
領域ビットストリームは、既存のFPGAに個別にロードし得るため、既存の領域ビットストリームは新しいものと効果的にスワップアウトされる。最新のFPGAは、各々が独立してコンフィギャラブルである数百の個別の領域をサポートできる。
【0013】
部分的リコンフィギュレーション(PR)は、FPGAの残りの部分が動作を継続している間に、アクティブ設計内の機能モジュールの動的な変更を可能にするFPGAコンフィギュレーション技術である。PRを使用すると、FPGAの実行時のさまざまな時点でハードウェアモジュールを変更できるため、大規模なまたは複雑な設計を小規模なFPGAに適合させることができる。例としては、異なる変調プロトコルと復調プロトコルが実行時にスワップされるソフトウェア定義の無線機がある。PRは、例えば、FPGAのXilinx ZYNQファミリで利用できる。
【0014】
PRを使用すると、回路設計はリコンフィギャラブルロジックと非リコンフィギャラブルロジックに分割される。スタティックロジックという用語は、リコンフィギャラブルではないFPGA上のすべてのロジック要素に使用されるが、リコンフィギャラブルロジックという用語は、リコンフィギャラブルであるロジック要素を指す。リコンフィギャラブルモジュール(RM)(または「モジュール」)は、リコンフィギャラブルパーティション(RP)(または「パーティション」)内に配置できるロジックのHDL記述である。各RPは、そのパーティション内でのみ専用のFPGA上のロジック要素の物理的な集合である。リコンフィギャラブルフレーム(RF)は、RPとして定義できる最小のリコンフィギャラブル領域を表す。複数のRFは単一のRPに含めることができ、その中にカプセル化される。部分的ビットストリームは、RMのコンフィギュレーションの詳細とコンフィギュレーションの場所に関する情報を含む生成されたファイルである。
【0015】
設計がスタティックロジックとリコンフィギャラブルロジックに分離されると、リコンフィギャラブルロジックはRPセクションに分割され、各パーティションのすべてのRMが識別される。各ビットストリームには、コンフィギュレーションデータと位置データが含まれる。したがって、すべてのRPの場所のすべてのモジュールに対して別個の単一ビットストリームが生成される。したがって、2つの異なるRPで同じ機能モジュールが必要な場合は、2つのビットストリームが必要である。モジュールおよびパーティションは、本開示に関係しないが、特定の回路の実装に影響を与える可能性がある他の制約を受ける。これらの制約は、他の刊行物に詳しく記載されている。
【0016】
2.実施形態の一般的な概要
一実施形態では、部分的リコンフィギュレーションをサポートするデジタル電子集積回路(IC)であって、特定のICが、複数のリコンフィギャラブルパーティションとリコンフィギャラブルパーティションの各々でコンフィギャラブルである複数のプリミティブバリエーションを有する、デジタル電子集積回路(IC)をコンフィギュアする速度と効率の改善を提供する方法が開示され、1つ以上のプロセッサを使用して実行されると、その1つ以上のプロセッサに、コンフィギュレーションビットストリームを特定のICに書き込む前に、デジタルストレージを使用して、特定のICに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための複数のプリミティブビットストリームをコンパイルし、記憶することと、リコンフィギャラブルロジックを使用して特定のICに実装するアルゴリズムの機能ロジックを指定するための入力を受信することと、機能ロジックに対応する特定のプリミティブ関数を含むプリミティブ関数のサブセットを自動的に決定することと、デジタルストレージから、プリミティブ関数のサブセットに対応するプリミティブビットストリームのサブセットを取得することと、1つ以上の部分的リコンフィギュレーション演算を使用して、特定のICにプリミティブビットストリームのサブセットを書き込むことと、を実行させ、その方法は、1つ以上のコンピューティングデバイスによって実行される。
【0017】
別の実施形態では、部分的リコンフィギュレーションをサポートするフィールドプログラマブルゲートアレイ(FPGA)デジタル電子集積回路であって、特定のFPGAが、複数のリコンフィギャラブルパーティションとリコンフィギャラブルパーティションの各々でコンフィギャラブルである複数のプリミティブバリエーションを有する、フィールドプログラマブルゲートアレイ(FPGA)デジタル電子集積回路)のプログラミングの速度と効率の改善を提供する方法が開示され、その方法は、コンフィギュレーションビットストリームを特定のFPGAに書き込む前に、デジタルストレージを使用して、特定のFPGAに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための複数のプリミティブビットストリームをコンパイルし、記憶することと、リコンフィギャラブルロジックを部分的に使用して特定のFPGAに実装するアルゴリズムの機能ロジックを指定するための入力を受信することと、グラフィカルブロックに対応する特定のプリミティブ関数を含むプリミティブ関数のサブセットを自動的に決定することと、デジタルストレージから、プリミティブ関数のサブセットに対応するプリミティブビットストリームのサブセットを取得することと、1つ以上の部分的リコンフィギュレーション演算を使用して、特定のFPGAにプリミティブビットストリームのサブセットを書き込むことと、を含み、その方法は、1つ以上のコンピューティングデバイスによって実行される。
【0018】
実施形態は、FPGAアルゴリズムのすべてのブロック図が、M個のブロック領域のマトリックスで接続されたN個の離散ブロックタイプを使用して記述できることを前提としている。特定の実施形態は、具体的にはFPGAと使用するために説明されているが、本開示の方法は、より一般的に他のプログラマブル集積回路に適用することができ、FPGAの使用は必要とされない。
【0019】
1つのアプローチは、考えられるすべてのブロック図接続のビットストリームを事前にコンパイルし、次いでユーザのブロック図に基づいて選択することである可能性がある。N^Mフルビットストリームのストレージおよびコンパイルが含まれる。Mおよび/またはNが小さな値を超えて増加すると、このアプローチのストレージ量とコンパイル時間は実行不可能になる。ストレージとコンパイルの時間は、MまたはNの増加に伴い、指数関数的にまたは多項式的に増加する。各部分的ビットストリームは約100kBであり、複雑さに応じてコンパイルに約5分かかる。M=N=100とすると、次いで約5*100^100分のコンパイル時間と100^98GBのストレージが必要になる。
【0020】
実施形態では、M個の領域の各々が部分的にリコンフィギャラブルであると定義され、N個のブロックタイプの各々の単一の部分的ビットストリームが各M個の領域について事前にコンパイルされる、部分的リコンフィギュレーション(PR)技術が採用される。この文脈では、「事前に」とは、エンドユーザコンピュータがグラフィカルツールまたは非グラフィカルツールを使用してアルゴリズムを設計するために使用される前を意味し、設計プロセスが開始されるとき、ユーザは、アルゴリズムを実現するようにコンフィギュアできる利用可能なN個のブロックタイプに対応する多数のビットストリームのプリコンパイルされたライブラリを利用可能である。したがって、M*N個のビットストリームのみのコンパイルとストレージが必要である。M=N=100の場合、次いで50,000分のコンパイル時間と1GBのストレージのみが必要である。このアプローチは、ユーザアルゴリズムやアプリケーションが必要とする特定の機能を予測し、それらの機能のためのビットストリームを事前計算することにある程度依存する。
【0021】
いくつかの実施形態では、N個のすべてよりも少ないブロックタイプの単一の部分的ビットストリームは、事前にコンパイルされ、アルゴリズムをターゲットプラットフォームに完全に展開するために必要な他のブロックタイプのビットストリームは、設計時および
/または展開の直前にコンパイルされる。いくつかの実施形態では、N個よりも少ないブロックタイプのサブセットは、現在のユーザまたは他のユーザによる過去の使用におけるブロックタイプの人気に基づいてプリコンパイルのために選択され、したがって、サブセットは、特定の設計において選択される可能性が最も高いブロックタイプを含む。例えば、コンパイルエージェント122は、ストレージ単独で、または無関係のユーザの異なるホストコンピュータ上で実行されているコンパイルエージェントの他のインスタンスから同様の方法で受信したデータと組み合わせて、IDE120内の特定のブロックタイプのユーザ選択を検出し、ユーザ選択のレポートをコンパイルサーバプロセス132に送信するようにプログラムされてもよい。このように、ブロックタイプの実際の選択に関するクラウドソーシングのレポートは、どのブロックタイプがサーバ側でプリコンパイルされるのかに影響を与える可能性がある。または、ユーザ入力および/またはコンフィギュレーションデータは、どのブロックタイプがプリコンパイルされ、どのブロックタイプが設計時または展開時にコンパイルされるかを指定することができる。このアプローチにより、ユーザは、プリコンパイルされたビットストリームのライブラリを記憶することによる時間の節約および効率の利点と、前もってコンパイルを行うことの計算負担とのバランスをとることが可能になる。他の実施形態、態様および特徴は、全体としての開示および添付の特許請求の範囲から明らかになるであろう。
【0022】
3.実施形態の構造例および機能例
図1は、例を実装するために使用され得る例示的な分散コンピュータシステムを示す。図面の図の説明では、「プリミティブ」という用語は、単一の部分的ビットストリームにコンパイルされたDSPまたはFPGA110の他のアプリケーションのロジックのグループ化を指す。
【0023】
ある実施形態では、クライアントコンピューティングデバイス102は、1つ以上のネットワーク104を介してサーバ106に直接的にまたは間接的に通信可能に連結される。
【0024】
クライアントコンピューティングデバイス102は、ユーザのアルゴリズムを実装するようにプログラムされるFPGA110にインターフェースすることができるデスクトップコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、ワークステーションまたは他のコンピューティングデバイスを含み得る。ある実施形態では、クライアントコンピューティングデバイス102は、様々な実施形態において、プロセッサ開発ボード、アナログ-デジタル変換器、デジタル-アナログ変換器、ネットワーク接続、電力変換器などのうちの1つ以上を含み得る周辺電子機器112にもインターフェースする。
【0025】
クライアントコンピューティングデバイス102は、FPGAプログラム114の作成、管理、およびコンパイルをサポートするように構成されたアプリケーションプログラムである統合開発環境(IDE)120をホストするかまたは実行する。いくつかの実施形態では、IDE120は、計算機能を表すグラフィカルブロック、アイコン、またはウィジェットを接続することによってDSPアルゴリズムのプログラミングを可能にするグラフィカルユーザインターフェースとのユーザ相互作用を生成し、可能にする。
【0026】
ある実施形態では、コンパイルエージェント122は、クライアントコンピューティングデバイス102を使用してホストされるかまたは実行され、IDE120と統合されるかまたは別個のプログラムとして統合され、さらに説明されるように、サーバ106における互換性のあるコンパイルサーバプロセス132と相互運用するようにプログラムされるかまたはコンフィギュアされる。ある実施形態では、コンパイルエージェント122は、サーバ106からどのビットストリームプリミティブを取得するか、およびそれらをF
PGA110内のどこに配置するかを決定するようにプログラムされている。これらの要素を使用して、クライアントコンピューティングデバイス102は、FPGA110に書き込まれるコンパイルされたビットストリーム124のセットを生成するかまたは取得して、FPGAのプログラミングを達成し得る。いくつかの実施形態では、IDE120およびコンパイルエージェント122は、他の項でさらに説明されるように、コンパイルされたビットストリームプリミティブ142を含むかまたは制御する、サーバ106とネットワーク化されたデータストレージ140との間の通信またはメッセージングプロトコルを実行するようにコンフィギュアされるかまたはプログラムされ、クライアントタスクを制御するためにソフトウェアおよびファームウェアを実行し、FPGA110でプログラムされるプリミティブのためにコンパイルされたビットストリーム124を記憶する。プリミティブの数および/またはストレージ要件に応じて、コンパイルされたビットストリーム124のストレージは、ストレージ140を使用してサーバ106によって共有されてもよくまたは完全に実行されてもよい。
【0027】
FPGA110はPRをサポートする。ある実施形態では、FPGA110は、プログラムされたアルゴリズムが必要とし得る最もリソースを必要とするコンフィギュレーションに十分な数の処理要素を各々が含む複数の領域を有する非常に大きなユニットである。多くの離散した領域に分散する大きなリソース数が予想される。一実施形態は、ユーザがスペースにあまり関わらないより大きなFPGAで最もよく実行され得るが、本明細書で説明される方法は、デバイスサイズに関係なく使用可能であり、大きなFPGAまたは他の大きなプラットフォームは要件ではない。
【0028】
ネットワーク104は、大まかには、地上波リンク、衛星リンク、有線リンクもしくは無線リンクのいずれかを使用するローカルエリアネットワーク、ワイドエリアネットワーク、インターネットネットワークまたはインターネットの任意の組み合わせを表す。クライアントコンピューティングデバイス102およびサーバ106は各々、ネットワーク104を介して運ばれるトランスポート、セッション、およびアプリケーショントラフィックのためのプロトコルと互換性のあるネットワーク104へのインターフェースをホストする。クライアントコンピューティングデバイス102およびサーバ106が、デジタル電子メッセージおよび非同期プロトコル、ステートレスプロトコル、またはステートフルプロトコルを使用して通信して、要求、応答、およびデータペイロードを交換できる場合、ネットワーク104を介して使用される特定のプロトコルは重要ではない。
【0029】
ある実施形態では、サーバ106は、デスクトップコンピュータ、ラックマウント型コンピュータ、またはパブリックもしくはプライベートクラウドコンピューティングセンタ内の1つ以上の仮想コンピューティングインスタンスのいずれかを備える。サーバ106は、他のプロセス、サーバ、またはアプリケーションとともにサーバコンピュータまたはクラスタ上で実行されるプロセスを備えてもよい。サーバ106は、DOCKERまたはKUBERNETESのコンテナ化を使用するなど、オペレーティングシステムの仮想化を使用して実装し得る。サーバ106は、クラウドベースのデジタルデータストレージまたは他のネットワーク化されたデータストレージを備え得るストレージ140を含むか、またはそれにアクセスするようにプログラムされている。
【0030】
ある実施形態では、サーバ106は、FPGAプリミティブ関数のソースコード130を記憶し、これは、本明細書の他の項でさらに説明される。サーバ106は、コンパイルされたビットストリーム142によって示されるように、ソースコード130をストレージ140に記憶されたビットストリームプリミティブにコンパイルするようにコンフィギュアされるかまたはプログラムされたコンパイルサーバプロセス132も、ホストするかまたは実行する。重要なことに、実施形態では、FPGA110のリコンフィギャラブルパーティションで使用できるすべての機能プリミティブのソースコード130は、クライ
アントコンピューティングデバイス102による任意のプログラミング活動の前にコンパイルされ、ストレージ140に記憶されて、クライアントコンピューティングデバイスからのビットストリームに対する要求を待つ。コンパイルサーバプロセス132は、FPGA110のベンダから予め入手した、またはそれ以外の場合FPGA110と互換性のあるプログラム、ライブラリ、または関数を使用してもよい。
【0031】
プリミティブのビットストリーム142は、多数の異なる実質的な信号処理機能のいずれかを実装し得る。様々な実施形態で使用することができるプリミティブの例には、信号乗算器、信号マルチプレクサ、シグナルミキサ、デジタルフィルタ、オシレータ、インテグレータ、三角関数演算、高速フーリエ変換、PIDコントローラ、フェーズロックループ、インテグレータ、差別化要因、正弦波発生器、ダイレクトデジタルシンセサイザ、直接形式の1つの単一次セクションの無限インパルス応答フィルタ、DCゲイン、が含まれる。
【0032】
図1の例では、サーバ106は、ストレージ140を使用してプリミティブのコンパイルされたビットストリーム142を記憶するようにプログラムされるかまたはコンフィギュアされている。プリミティブの数および/またはストレージ要件に応じて、このタスクは、クライアントコンピューティングデバイス102によって共有され完全に実行され得る。コンパイルサーバプロセス132も、さらに説明されるように、クライアントコンピューティングデバイス102からの要求に応答して、コンパイルされたビットストリーム142をフェッチしクライアントコンピューティングデバイス102に送信するようにもプログラムされているか、またはコンフィギュアされている。
【0033】
特定の演算がクライアントコンピューティングデバイス102で発生し、ネットワーク104を介してサーバ106と通信し、ストレージ140がサーバに関連して管理される一実施形態が説明された。しかし、他の実施形態は、単一のホストコンピュータまたは仮想コンピューティングインスタンスに完全に実装し得、クライアントサーバアーキテクチャの必要はない。さらに、ストレージ140は、ホストコンピュータに配置されてもよく、仮想コンピューティングインスタンスに関連付けられてもよく、プリコンパイルされたビットストリームのデジタルストレージを、クライアントコンピューティングデバイス102またはアルゴリズムの設計に使用される任意の他のコンピュータから分離する必要はない。例えば、単一のホストコンピュータまたはクライアントコンピューティングデバイス102などの仮想コンピューティングインスタンスは、統合システムとして、図1に示されるすべての機能要素およびデータストレージデバイスをホストし得る。または、図1のアーキテクチャが使用されてもよいが、プリコンパイルされたビットストリームのセットは、クライアントコンピューティングデバイスにおけるローカルストレージのためのパッケージまたはユニットとして、サーバ106からクライアントコンピューティングデバイス102に配信されてもよい。一実施形態では、プリコンパイルされたビットストリームのパッケージの配信は、クライアントコンピューティングデバイスのクライアントソフトウェアおよび/またはクライアントコンピューティングデバイスのブラウザで実行されるブラウザ実行可能コードの任意の組み合わせを使用して実行されるインストーラプロセスを使用して実行される。
【0034】
図2は、ある実施形態に係る例示的なコンピュータ実装プロセスを示す。図2の例は、クライアントコンピューティングデバイス102およびサーバ106によって異なる時間に実行される機能ステップを含む。
【0035】
ある実施形態では、ブロック202で、サーバまたはサーバコンピュータは、指定されたターゲットプラットフォームのプリミティブのすべての可能な組み合わせをプリコンパイルする。ブロック204で、プロセスは、コンパイルされたビットストリームプリミテ
ィブをネットワークストレージに記憶する。
【0036】
例えば、サーバ106は、コンパイルサーバプロセスを使用して、プリミティブのソースコード130を、ストレージ140を使用して記憶されるコンパイルされたビットストリーム142にプリコンパイルする。ソースコード130で表されるプリミティブの数は、異なる実施形態で変化し得る。例えば、指定されたFPGAは、100個のパーティションをサポートするとしてコンフィギュレーションデータで定義されている場合がある。パーティションの各々に対し、プリコンパイルされたビットストリームを受信するためにN個の異なるバリエーションを利用できる。特定の領域のビットストリームのセットは、いずれの他の領域のビットストリームとも必ずしも互換性があるとは限らない。したがって、FPGAの領域「01」は、異なる20個のビットストリームの第1の特定のセットの中から選択された第1のビットストリームをサポートしてもよく、同じFPGAの領域「64」は、20個の他のビットストリームの第2の異なる特定のセットの中から選択された第2のビットストリームをサポートしてもよい。
【0037】
ある実施形態では、管理アクションまたはコンフィギュレーションデータは、ターゲットFPGAのパーティションに関連するバリエーションへの変更を指定し得る。例えば、パーティション「64」を変更して、以前はPLLブロックをそれと、またはそのバリエーションの1つで関連付けていなかった、そのパーティションのバリエーションにフェーズロックループ機能ブロックを追加した場合、次いで、パーティション「64」のすべてのビットストリームをサーバ106を使用して再コンパイルする必要があるであろう。しかし、パーティションに関連付けられた各々の機能ブロックは、関連のないロジック命令のいくつかのセットを含む場合があり、柔軟性が向上する。例えば、パーティション「64」に関連付けられた20のバリエーションのうちの特定のバリエーションは、PLLと加算器の両方のロジックを定義できるであろう。いくつかの実施形態では、任意の2つ以上のロジックのセットが、パーティションのバリエーションに関連付けられた機能ブロック内にあってもよい。この配置は、FPGAで利用可能な総計算能力によって制約される場合がある。
【0038】
非同期的に、ブロック206で、クライアントコンピューティングデバイスにおいて、アルゴリズムまたはプログラムは、グラフィカルユーザインターフェースを使用して定義されるかまたはプログラムされる。例えば、DSPアルゴリズムを定義できるであろう。DSPアルゴリズムを定義することは、IDE120のGUIインターフェースにおいて、DSPアルゴリズムの動作を記号で定義するグラフィカルブロックをドラッグ、ドロップ、および接続することを指定するユーザ入力を受信することを含み得る。
【0039】
いくつかの実施形態では、ブロック206は、特定の機能ブロックのコンフィギュレーションを変更するために1つ以上のパラメータ値を受信することを含み得る。例には、レジスタレベルのパラメータ値、または指定されたレジスタもしくは他の出力場所への、入力もしくは出力のリダイレクトの指定が含まれる。
【0040】
ブロック208で、クライアントコンピューティングデバイス102を使用して、アルゴリズムは、対応するプリミティブにセグメント化されるかまたはグループ化される。ブロック208は、FPGA110のどの利用可能なRPおよびバリエーションが、どの特定のプリコンパイルされたプリミティブビットストリーム142を受信して、FPGA上にアルゴリズムを実装するかを決定することを含み得る。
【0041】
ブロック208は、IDE120を使用してGUIで指定されるように、サーバでプリコンパイルされた利用可能なプリミティブへのアルゴリズムの機能ブロックの関連付けを決定することも含み得る。いくつかの実施形態では、ブロック208は、GUIで表され
る機能ブロックがサーバ106の特定のプリミティブおよび/またはビットストリームにどのように対応するかを指定するマッピングテーブル、コンフィギュレーションファイルまたは他のデータに基づいて、自動的に実行され得る。代替的には、IDE120は、GUI内の機能ブロックを選択し、そのブロックを実装するための特定のプリミティブを指定するための入力を受け入れるようにプログラムされたGUIウィジェットを、ネイティブにまたはコンパイルエージェント122の制御下で提供し得る。
【0042】
この時点で、クライアントコンピューティングデバイス102は、FPGA上にアルゴリズムを実装するために必要であり、FPGA上のRPおよびRPのバリエーションにスワップすることができるすべてのプリコンパイルされたビットストリーム142の識別子を決定している。
【0043】
ブロック210で、クライアントコンピューティングデバイス102は、指定されたプリミティブのビットストリームを取得するためにサーバ106に要求を送信する。1つ以上の要求が送信される場合がある。1つ以上の要求は、FPGA上にアルゴリズムを実装するために必要であり、FPGA上のRPおよびRPのバリエーションにスワップすることができるすべてのプリコンパイルされたビットストリーム142を集合的に指定する。
【0044】
ブロック212で、サーバ106において、DSPアルゴリズムの領域およびグループに対応するビットストリームプリミティブが、ストレージ140または他のネットワーク化されたストレージからフェッチされ、コピーが、ネットワーク104を介した応答でクライアントコンピューティングデバイス102に返される。コンパイルされたビットストリーム142は、受信された後、コンパイルされたビットストリーム124の形でクライアントコンピューティングデバイス102に記憶され得る。
【0045】
ブロック214で、フェッチされたビットストリームはFPGAに展開される。コンパイルエージェント122は、IDE120と連携して、受信されたコンパイルされたビットストリーム124を、指定されたFPおよびFPGA110のバリエーションに書き込ませ得る。ブロック214が完了すると、FPGAは、IDE120のGUIを使用して設計され、設計に関連付けられたプリミティブのプリコンパイルされたビットストリーム142を使用して実装されたすべてのリコンフィギャラブルロジックでプログラムされている。これらのステップは、アルゴリズムをICに展開するために、この時点でビットストリームのコンパイルが必要となるであろう従来のアプローチよりも実質的により高速で実行される。
【0046】
図3Aは、部分的リコンフィギュレーションを有するFPGAの例示的なシステムアーキテクチャを示す。ある実施形態では、2つの入力「in1」、「in2」は、「1.1」~「6.5」で示される5つの順次接続されたDSPブロックPR領域を各々が有する3行の2つのセットに間接的に連結される。複数の相互接続302は、行間の任意の接続を可能にする。相互接続302は、異なる実施形態において異なる方法で実装されてもよい。例には、大規模な多重化ネットワーク、高速AXIデータバス、または異なる接続のためのバリエーションを有するPR領域などが含まれる。
【0047】
各DSP PR領域1.1~6.5は同一であり、各々がプリコンパイルされたビットストリーム142の中から異なるビットストリームプリミティブを使用して記述される、N個のバリアントの1つとしてコンフィギュアすることができる。各バリアントのインターフェースは同じであり、入力「in1」、「in2」、および出力「Out1」、「Out2」、ならびにコンフィギュレーションAXIバス304への接続を含む。各バリエーションには、異なる目的のロジック、および各出力にどの信号が渡されるのかを選択するための出力多重化が含まれる。
【0048】
特定の実施形態は、最大20のバリエーションおよび約20の機能ブロックのロジックの使用に言及しているが、他の実施形態は、これらの要素の他のカウントを使用し得、具体的には、特定のバリエーションで使用するために定義できる異なる種類のロジックの数に制限はない。PR領域コンフィギュレーションの様々な実施形態で使用することができる可能な機能ブロックの例には、信号乗算器、信号マルチプレクサ、シグナルミキサ、デジタルフィルタ、オシレータ、インテグレータ、三角関数演算、高速フーリエ変換、PIDコントローラ、フェーズロックループ、インテグレータ、差別化要因、正弦波発生器、ダイレクトデジタルシンセサイザ、直接形式の1つの単一次セクションの無限インパルス応答フィルタ、DCゲイン、ヌル、が含まれる。さらに、複雑な機能ブロックは、FPGA領域の2つ以上のバリエーションに分割されるビットストリームをもたらす可能性がある。
【0049】
図3Bは、信号処理回路を表す機能ブロックを選択し、グラフィカルに接続するためにIDEのGUIを使用して設計され得る複雑なDSPアルゴリズムの例を示す。図3Bの例は、周波数変調制御システムのブロック図を含み、信号処理機能は、正弦波発生器(Sine Gen)、復調、コントローラ、スキャナ、およびIIRを含み得ることがわか
るであろう。破線の内側にグループ化されたブロック310、312は、単一のビットストリームプリミティブにグループ化することができる要素の例である。
【0050】
図3Cは、図3Aのアーキテクチャ内に図3Bを実装する例を示す。図3Cでは、図3Bの機能ブロックは、図3Aのアーキテクチャの特定のRPまたは領域に割り当てられ、これらの関連付けを示すために、図3Cにおいて適切にラベル付けされている。例えば、図3Aの領域1.1は、Sine Genロジックに割り当てられ、1.2は復調器などに割り当てられている。相互接続302およびバス304に関連する領域の選択は、特定のチップ配置で図3Bのロジックの実装を達成する。
【0051】
図3Dは、低レベルPRモジュールが二次的な機能である前述のアーキテクチャのバリエーションを示す。この例では、ボックスN.1、N.2、N.Xは、既存の機器、例えばMoku:Labで利用可能な機器のシングルチャネルバージョンとしてコンフィギュアできる、より大きなPR領域を表す。この配置により、ユーザは単一のハードウェアユニットを使用して非常に複雑なシステムを作製できる。低レベルのPRモジュール1.1、1.2、1.3~6.3は、特定のユースケースまたはユーザ要件を満たすためのさらなるカスタマイズに引き続き役立つ。したがって、このアーキテクチャは、複雑な機能専用のより大きなPR領域を有するFPGAを、プリコンパイルされたビットストリーム142を使用してリコンフィギュアできる低レベルモジュールと統合して、より大きなPR領域およびチップの主な機能の使用を中断することなく、チップ上の他の機能をスワップする可能性を示している。
【0052】
図4は、機器が測定機器または監視機器および信号生成機器またはコントローラ機器の2つのカテゴリに分割される、別のアーキテクチャのバリエーションを示す。PR領域402、404、406は、信号生成機器またはコントローラ機器に固有であり、PR領域408は、測定機器または監視機器に固有である。この配置を使用すると、Moku:Labシステムと同じ機能が維持され、柔軟性が高まる。さらに、2つのバリエーションを信号生成機器またはコントローラ機器に割り当てた場合、FPGAに必要なリソースは、現時点で入手可能なMoku:Labデバイスよりも大幅に高くはならないであろう。
【0053】
実施形態は、以前の実施形態に比べて多くの利点を提供する。主な利点は、ユーザの観点から、コンパイル時間が完全に排除されることである。クライアントコンピューティングデバイス102は、FPGAブロックのローカルコンパイルに伴う長い遅延なしに、F
PGAをプログラムするために必要とされる各機能ブロックのビットストリームのプリコンパイルされたバージョンを取得することができる。さらに、コンパイルを達成するために必要なすべてのツールは、サーバコンピュータ106にプリインストールされ、管理され、クライアントコンピューティングデバイス102へのサービスとして提供される。したがって、クライアントコンピューティングデバイス102のユーザは、チップ固有またはベンダ固有のコンパイルツールをインストールするかまたは学習する必要はない。
【0054】
4.実装例-ハードウェアの概要
一実施形態によれば、本明細書に記載の技術は、少なくとも1つのコンピューティングデバイスによって実装される。技術は、パケットデータネットワークなどのネットワークを使用して連結された少なくとも1つのサーバコンピュータおよび/または他のコンピューティングデバイスの組み合わせを使用して、全体的にまたは部分的に実装され得る。コンピューティングデバイスは、ファームウェア、メモリ、他のストレージ、または組み合わせにおけるプログラム命令に従って技術を実行するようにプログラムされた少なくとも1つの汎用ハードウェアプロセッサを含み得る。そのようなコンピューティングデバイスは、カスタムハードワイヤードロジック、ASIC、またはFPGAをカスタムプログラミングと組み合わせて、記載された技術を達成してもよい。コンピューティングデバイスは、サーバコンピュータ、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータシステム、ハンドヘルドデバイス、モバイルコンピューティングデバイス、ウェアラブルデバイス、身体装着型または移植型デバイス、スマートフォン、スマートアプライアンス、インターネットワーキングデバイス、ロボットもしくは無人地上車両もしくは無人航空機などの自律型または半自律型デバイス、記載された技術を実装するためのハードワイヤードロジックおよび/またはプログラムロジックを組み込んだ任意の他の電子デバイス、データセンタ内の1つ以上の仮想コンピューティングマシンまたはインスタンス、ならびに/またはサーバコンピュータおよび/もしくはパーソナルコンピュータのネットワーク、であってもよい。
【0055】
図5は、ある実施形態を実装し得る例示的なコンピュータシステムを示すブロック図である。図5の例では、コンピュータシステム500および開示された技術をハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせに実装するための命令は、コンピュータアーキテクチャおよびコンピュータシステムの実装について通信するために本開示が関係する技術分野の当業者によって一般的に使用されるのと同じレベルの詳細さで、例えばボックスおよび円として概略的に表される。
【0056】
コンピュータシステム500は、電子信号経路を介してコンピュータシステム500の構成要素間で情報および/または命令を通信するためのバスおよび/または他の通信メカニズム(複数可)を含み得る入力/出力(I/O)サブシステム502を含む。I/Oサブシステム502は、I/Oコントローラ、メモリコントローラ、および少なくとも1つのI/Oポートを含み得る。電子信号経路は、例えば、線、一方向矢印、または双方向矢印として、図面に概略的に表される。
【0057】
情報および命令を処理するために、少なくとも1つのハードウェアプロセッサ504がI/Oサブシステム502に連結されている。ハードウェアプロセッサ504は、例えば、汎用マイクロプロセッサまたはマイクロコントローラ、および/または組み込みシステムまたはグラフィックス処理ユニット(GPU)またはデジタル信号プロセッサまたはARMプロセッサなどの専用マイクロプロセッサを含み得る。プロセッサ504は、統合算術ロジック演算ユニット(ALU)を備えてもよく、または別個のALUに連結されてもよい。
【0058】
コンピュータシステム500は、プロセッサ504によって実行されるデータおよび命
令を電子的にデジタル記憶するためにI/Oサブシステム502に連結されたメインメモリなどのメモリ506の1つ以上のユニットを含む。メモリ506は、様々な形態のランダムアクセスメモリ(RAM)または他のダイナミックストレージデバイスなどの揮発性メモリを含み得る。メモリ506は、プロセッサ504によって実行される命令の実行中に一時的変数または他の中間情報を記憶するためにも使用され得る。そのような命令は、プロセッサ504にアクセス可能な非一時的コンピュータ可読ストレージ媒体に記憶されると、コンピュータシステム500を、命令で指定された演算を実行するようにカスタマイズされた専用の機械にレンダリングすることができる。
【0059】
コンピュータシステム500は、プロセッサ504の情報および命令を記憶するために、読み取り専用メモリ(ROM)508またはI/Oサブシステム502に連結された他の静的ストレージデバイスなどの不揮発性メモリをさらに含む。ROM508は、消去可能PROM(EPROM)または電気的消去可能PROM(EEPROM)などの様々な形態のプログラマブルROM(PROM)を含み得る。永続ストレージ510のユニットは、フラッシュメモリなどの様々な形態の不揮発性RAM(NVRAM)、またはCD-ROMもしくはDVD-ROMなどのソリッドステートストレージ、磁気ディスクまたは光ディスクを含み得、情報および命令を記憶するためにI/Oサブシステム502に連結されていてもよい。ストレージ510は、プロセッサ504によって実行されると、コンピュータ実装方法を実行させて本明細書の技術を実行する命令およびデータを記憶するために使用され得る非一時的コンピュータ可読媒体の例である。
【0060】
メモリ506、ROM508またはストレージ510内の命令は、モジュール、メソッド、オブジェクト、関数、ルーチン、または呼び出しとして編成された1つ以上の命令のセットを含み得る。命令は、1つ以上のコンピュータプログラム、演算システムサービス、またはモバイルアプリを含むアプリケーションプログラムとして編成されてもよい。命令は、オペレーティングシステムおよび/またはシステムソフトウェア、マルチメディア、プログラミングまたは他の機能をサポートする1つ以上のライブラリ、TCP/IP、HTTPまたはその他の通信プロトコルを実装するためのデータプロトコル命令またはスタック、HTML、XML、JPEG、MPEGまたはPNGを使用してコード化されたファイルを解析またはレンダリングするためのファイルフォーマット処理命令、グラフィカルユーザインターフェース(GUI)、コマンドラインインターフェースまたはテキストユーザインターフェースのためのコマンドをレンダリングまたは解釈するためのユーザインターフェース命令、オフィススイート、インターネットアクセスアプリケーション、設計および製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲームまたは雑多なアプリケーションなどのアプリケーションソフトウェア、を含み得る。命令は、ウェブサーバ、ウェブアプリケーションサーバまたはウェブクライアントを実装し得る。命令は、プレゼンテーション層、アプリケーション層、および構造化照会言語(SQL)を使用するかもしくはSQLを使用しないリレーショナルデータベースシステムなどのデータストレージ層、オブジェクトストア、グラフデータベース、フラットファイルシステム、または他のデータストレージとして編成し得る。
【0061】
コンピュータシステム500は、I/Oサブシステム502を介して少なくとも1つの出力デバイス512に連結されてもよい。一実施形態では、出力デバイス512は、デジタルコンピュータディスプレイである。様々な実施形態で使用し得るディスプレイの例には、タッチスクリーンディスプレイまたは発光ダイオード(LED)ディスプレイまたは液晶ディスプレイ(LCD)または電子ペーパディスプレイが含まれる。コンピュータシステム500は、ディスプレイデバイスと代替的にまたはディスプレイデバイスに加えて、他のタイプ(複数可)の出力デバイス512を含んでもよい。他の出力デバイス512の例には、プリンタ、チケットプリンタ、プロッタ、プロジェクタ、サウンドカードまた
はビデオカード、スピーカー、ブザーまたは圧電デバイスまたは他の可聴デバイス、ランプまたはLEDまたはLCDインジケータ、触覚デバイス、アクチュエータまたはサーボが含まれる。
【0062】
信号、データ、コマンド選択、またはジェスチャをプロセッサ504に通信するために、少なくとも1つの入力デバイス514がI/Oサブシステム502に連結されている。入力デバイス514の例には、タッチスクリーン、マイクロフォン、静止カメラおよびビデオデジタルカメラ、英数字および他のキー、キーパッド、キーボード、グラフィックタブレット、画像スキャナ、ジョイスティック、時計、スイッチ、ボタン、ダイヤル、スライド、ならびに/または力センサ、モーションセンサ、熱センサ、加速度計、ジャイロスコープ、および慣性測定ユニット(IMU)センサなどの様々なタイプのセンサ、ならびに/またはセルラもしくはWi-Fi、無線周波数(RF)もしくは赤外線(IR)のトランシーバなどの無線、およびグローバルポジショニングシステム(GPS)トランシーバなどのさまざまなタイプのトランシーバ、が含まれる。
【0063】
別のタイプの入力デバイスは、制御デバイス516であり、これは、入力機能と代替的に、または入力機能に加えて、ディスプレイスクリーン上のグラフィカルインターフェースにおけるナビゲーションなどのカーソル制御または他の自動制御機能を実行してもよい。制御デバイス516は、方向情報およびコマンド選択をプロセッサ504に通信するための、およびディスプレイ512上のカーソルの動きを制御するための、タッチパッド、マウス、トラックボール、またはカーソル方向キーであってもよい。入力デバイスは、デバイスが平面内の位置を指定できるようにする、第1の軸(例えば、x)および第2の軸(例えば、y)の2つの軸において少なくとも2つの自由度を有し得る。別のタイプの入力デバイスは、ジョイスティック、ワンド、コンソール、ステアリングホイール、ペダル、ギアシフトメカニズム、または他のタイプの制御デバイスなどの有線、無線、または光学式の制御デバイスである。入力デバイス514は、ビデオカメラおよび深度センサなどの複数の異なる入力デバイスの組み合わせを含んでもよい。
【0064】
別の実施形態では、コンピュータシステム500は、出力デバイス512、入力デバイス514、および制御デバイス516のうちの1つ以上が省略されたインターネットオブシングズ(IoT)デバイスを備えてもよい。または、そのような実施形態では、入力デバイス514は、1つ以上のカメラ、モーション検出器、温度計、マイクロフォン、地震検出器、他のセンサまたは検出器、測定デバイスまたはエンコーダを備えてもよく、出力デバイス512は、単線LEDまたはLCDディスプレイ、1つ以上のインジケータ、ディスプレイパネル、メータ、バルブ、ソレノイド、アクチュエータ、またはサーボなどの、専用ディスプレイを備えてもよい。
【0065】
コンピュータシステム500がモバイルコンピューティングデバイスである場合、入力デバイス514は、複数のGPS衛星に三角測量することができ、コンピュータシステム500の地球物理学的位置の緯度経度値などの地理的場所または位置データを決定および生成することができるGPSモジュールに連結された全地球測位システム(GPS)受信機を備え得る。出力デバイス512は、ホスト524またはサーバ530に向けられた、単独でまたは他のアプリケーション固有のデータと組み合わせて、コンピュータシステム500の位置を特定する位置報告パケット、通知、パルスもしくは心拍信号、または他の反復データ送信を生成するためのハードウェア、ソフトウェア、ファームウェア、およびインターフェースを含んでもよい。
【0066】
コンピュータシステム500は、カスタマイズされたハードワイヤードロジック、少なくとも1つのASICまたはFPGA、ファームウェアおよび/またはプログラム命令もしくはロジックを使用して本明細書に記載の技術を実装し得、これらは、コンピュータシ
ステムと組み合わせてロードされ、使用されるか、または実行されると、コンピュータシステムに専用機として演算させるかまたはコンピュータシステムを専用機として演算するようにプログラムする。一実施形態によれば、本明細書の技術は、プロセッサ504がメインメモリ506に含まれる少なくとも1つの命令の少なくとも1つのシーケンスを実行するのに応答して、コンピュータシステム500によって実行される。そのような命令は、ストレージ510などの別のストレージ媒体からメインメモリ506に読み込み得る。メインメモリ506に含まれる命令のシーケンスの実行により、プロセッサ504は、本明細書に記載のプロセスステップを実行する。代替的な実施形態では、配線回路を、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用し得る。
【0067】
本明細書で使用される「ストレージ媒体」という用語は、機械を特定の方法で動作させるデータおよび/または命令を記憶する任意の非一時的媒体を指す。そのようなストレージ媒体は、不揮発性媒体および/または揮発性媒体を備え得る。不揮発性媒体には、例えば、ストレージ510などの光学ディスクまたは磁気ディスクが含まれる。揮発性媒体は、メモリ506などのダイナミックメモリを含む。ストレージ媒体の一般的な形態には、例えば、ハードディスク、ソリッドステートドライブ、フラッシュドライブ、磁気データストレージ媒体、任意の光データストレージ媒体、または物理データストレージ媒体、メモリチップなどが含まれる。
【0068】
ストレージ媒体は、伝送媒体とは異なるが、伝送媒体と組み合わせて使用し得る。伝送媒体は、ストレージ媒体間の情報転送に関与する。例えば、伝送媒体は、同軸ケーブル、銅線、およびI/Oサブシステム502のバスを構成するワイヤを含む光ファイバを含む。伝送媒体は、電波および赤外線データ通信中に生成されるものなど、音響波または光波の形態をとることがある。
【0069】
様々な形態の媒体が、実行のために少なくとも1つの命令の少なくとも1つのシーケンスをプロセッサ504に運ぶことに関与し得る。例えば、命令は、最初はリモートコンピュータの磁気ディスクまたはソリッドステートドライブで運ばれてもよい。リモートコンピュータは、そのダイナミックメモリに命令をロードし、モデムを使用して光ファイバまたは同軸ケーブルまたは電話回線などの通信リンクを介して命令を送信することができる。コンピュータシステム500にローカルなモデムまたはルータは、通信リンク上でデータを受信し、データをコンピュータシステム500によって読み取り可能なフォーマットに変換することができる。例えば、無線周波数アンテナまたは赤外線検出器などの受信機は、無線または光信号で運ばれるデータを受信することができ、適切な回路は、データをバス上に配置するなど、I/Oサブシステム502にデータを提供することができる。I/Oサブシステム502は、データをメモリ506に運び、そこからプロセッサ504が命令を検索し、実行する。メモリ506によって受信された命令は、任意選択で、プロセッサ504による実行の前または後のいずれかで、ストレージ510に記憶されてもよい。
【0070】
コンピュータシステム500は、バス502に連結された通信インターフェース518も含む。通信インターフェース518は、ネットワーク522またはインターネット上のパブリッククラウドまたはプライベートクラウドなどの少なくとも1つの通信ネットワークに直接または間接的に接続されているネットワークリンク(複数可)520に連結する双方向データ通信を提供する。例えば、通信インターフェース518は、イーサネットネットワーキングインターフェース、統合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデム、または対応するタイプの通信回線、例えば、イーサネットケーブルまたは任意の種類の金属ケーブル、または光ファイバ回線または電話回線にデータ通信接続を提供するためのモデムであってもよい。ネットワーク522は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、キャンパスネ
ットワーク、インターネットワーク、またはそれらの任意の組み合わせを広く表す。通信インターフェース518は、互換性のあるLANへのデータ通信接続を提供するためのLANカード、または、セルラ無線電話無線ネットワーキング規格に従ってセルラデータを送信または受信するために有線で接続されるセルラ無線電話インターフェース、または、衛星無線ネットワーキング規格に従ってデジタルデータを送信または受信するために有線で接続される衛星無線インターフェースを備えてもよい。任意のそのような実装形態では、通信インターフェース518は、様々なタイプの情報を表すデジタルデータストリームを運ぶ信号経路を介して電気信号、電磁信号、または光信号を送受信する。
【0071】
ネットワークリンク520は、典型的には、例えば、衛星、セルラ、Wi-Fi、また
はBLUETOOTH(登録商標)技術を使用して、電気的データ通信、電磁的データ通信、または光データ通信を、直接または少なくとも1つのネットワークを介して、他のデータデバイスに提供する。例えば、ネットワークリンク520は、ネットワーク522を介してホストコンピュータ524への接続を提供し得る。
【0072】
さらに、ネットワークリンク520は、ネットワーク522を介して、またはインターネットサービスプロバイダ(ISP)526によって操作されるインターネットワーキングデバイスおよび/またはコンピュータを介して他のコンピューティングデバイスへの接続を提供し得る。ISP526は、インターネット528として表される世界規模のパケットデータ通信ネットワークを介してデータ通信サービスを提供する。サーバコンピュータ530は、インターネット528に連結してもよい。サーバ530は、ハイパーバイザの有無にかかわらず、任意のコンピュータ、データセンタ、仮想マシンまたは仮想コンピューティングインスタンス、またはDOCKERもしくはKUBERNETESなどのコンテナ化されたプログラムシステムを実行するコンピュータを広く表す。サーバ530は、複数のコンピュータまたはインスタンスを使用して実装され、ウェブサービス要求、HTTPペイロード内のパラメータを有するユニフォームリソースロケータ(URL)文字列、APIコール、アプリサービスコール、または他のサービスコールを送信することによってアクセスされ、使用される電子デジタルサービスを表す場合がある。コンピュータシステム500およびサーバ530は、タスクを実行するか、またはアプリケーションもしくはサービスを実行するために協力する他のコンピュータ、処理クラスタ、サーバファーム、または他のコンピュータの編成を含む分散コンピューティングシステムの要素を形成してもよい。サーバ530は、モジュール、メソッド、オブジェクト、関数、ルーチン、または呼び出しとして編成された1つ以上の命令のセットを含み得る。命令は、1つ以上のコンピュータプログラム、演算システムサービス、またはモバイルアプリを含むアプリケーションプログラムとして編成されてもよい。命令は、オペレーティングシステムおよび/またはシステムソフトウェア、マルチメディア、プログラミングまたは他の機能をサポートする1つ以上のライブラリ、TCP/IP、HTTPまたはその他の通信プロトコルを実装するためのデータプロトコル命令またはスタック、HTML、XML、JPEG、MPEGまたはPNGを使用してコード化されたファイルを解析またはレンダリングするためのファイルフォーマット処理命令、グラフィカルユーザインターフェース(GUI)、コマンドラインインターフェースまたはテキストユーザインターフェースのためのコマンドをレンダリングまたは解釈するためのユーザインターフェース命令、オフィススイート、インターネットアクセスアプリケーション、設計および製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲームまたは雑多なアプリケーションなどのアプリケーションソフトウェア、を含み得る。サーバ530は、プレゼンテーション層、アプリケーション層、および構造化照会言語(SQL)を使用するかもしくはSQLを使用しないリレーショナルデータベースシステムなどのデータストレージ層、オブジェクトストア、グラフデータベース、フラットファイルシステム、または他のデータストレージ、をホストするウェブアプリケーションサーバを備えてもよい。
【0073】
コンピュータシステム500は、ネットワーク、ネットワークリンク520、および通信インターフェース518を介して、メッセージを送信し、プログラムコードを含むデータおよび命令を受信することができる。インターネットの例では、サーバ530は、インターネット528、ISP526、ローカルネットワーク522、および通信インターフェース518を介して、アプリケーションプログラムのための要求されたコードを送信してもよい。受信したコードは、受信時にプロセッサ504によって実行され、および/または後で実行するためにストレージ510、または他の不揮発性ストレージに記憶されてもよい。
【0074】
本項で説明されている命令の実行は、実行中であり、プログラムコードとその現在のアクティビティからなる、コンピュータプログラムのインスタンスの形態でプロセスを実装する場合がある。オペレーティングシステム(OS)によっては、プロセスは、命令を同時に実行する複数の実行スレッドから構成されている場合がある。この文脈では、コンピュータプログラムは命令の受動的な集合であるが、プロセスはそれらの命令の実際の実行である場合がある。いくつかのプロセスが同じプログラムに関連付けられている場合があり、例えば、同じプログラムのいくつかのインスタンスを開くことは、複数のプロセスが実行中であることを意味することが多い。マルチタスクは、複数のプロセスがプロセッサ504を共有することを可能にするために、実装されてもよい。各プロセッサ504またはプロセッサのコアが一度に単一のタスクを実行する一方で、コンピュータシステム500は、各プロセッサが、各タスクが終了するのを待つ必要なく、実行中のタスクを切り替えることができるように、マルチタスクを実装するようにプログラムされてもよい。ある実施形態では、スイッチは、タスクが入出力操作を実行するとき、タスクが切り替え可能であることを示すとき、またはハードウェア割り込みのときに実行されてもよい。タイムシェアリングは、コンテキストスイッチを迅速に実行して、複数のプロセスを同時に並列実行しているように見せることにより、インタラクティブなユーザアプリケーションの高速応答を可能にするように、実装し得る。ある実施形態では、セキュリティおよび信頼性のために、オペレーティングシステムは、独立したプロセス間の直接通信を防止し、厳密に仲介され制御されたプロセス間通信機能を提供し得る。
【0075】
前述の明細書では、本発明の実施形態は、実装毎に異なり得る多くの特定の詳細を参照して説明されてきた。したがって、明細書および図面は、制限的な意味ではなく例示的な意味で考慮されるべきである。発明の範囲の唯一かつ排他的な指標、および出願人が発明の範囲となることを意図しているものは、任意のその後の訂正を含む、そのような特許請求項が発行される特定の形式で、本出願から発行される特許請求項のセットの文字通りの等価の範囲である。
図1
図2
図3A
図3B
図3C
図3D
図4
図5
【手続補正書】
【提出日】2024-01-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
部分的リコンフィギュレーションをサポートするデジタル電子集積回路(IC)であって、特定のICが、複数のリコンフィギャラブルパーティションを有する、デジタル電子集積回路(IC)をコンフィギュアする方法であって、
リコンフィギャラブルロジックを使用して前記特定のICに実装するアルゴリズムの機能ロジックを指定するための要求を受信することと、
前記要求に応答して、前記機能ロジックに対応する特定のプリミティブ関数を含むプリミティブ関数のサブセットを決定することと、
デジタルストレージから、前記プリミティブ関数の前記サブセットに対応する、プリコンパイルされたプリミティブビットストリームのサブセットを取得することと、
1つ以上の部分的リコンフィギュレーション演算を使用して、前記特定のICに前記プリコンパイルされたプリミティブビットストリームの前記サブセットを書き込むことと、
を含み、
前記方法が、1つ以上のコンピューティングデバイスによって実行される、
方法。
【請求項2】
前記特定のICが、M個のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々にN個のバリエーションを有するフィールドプログラマブルゲートアレイ(FPGA)を含み、前記複数のプリコンパイルされたプリミティブビットストリームは、前記FPGA上のM個とN個のすべての組み合わせに書き込むことができ、実装することができる、複数の異なるプリミティブ関数のためのコンパイルされたビットストリームを含み、結果としてM*N個のプリミティブを記憶する、請求項1に記載の方法。
【請求項3】
コンフィギュレーションビットストリームを前記特定のICに書き込む前に、クライアントコンピュータシステムに通信可能に連結されたサーバを使用して、前記特定のICに書き込むことができ、実装することができる複数の異なるプリミティブ関数のための前記複数のプリコンパイルされたプリミティブビットストリームをコンパイルし、前記デジタルストレージを使用して、前記複数のプリコンパイルされたプリミティブビットストリームを記憶することと、
前記クライアントコンピュータシステムから前記サーバに、前記プリミティブ関数の前記サブセットに対応する前記プリコンパイルされたプリミティブビットストリームの前記サブセットを提供する要求を送信することと、
前記サーバから前記クライアントコンピュータシステムに、前記プリミティブ関数の前記サブセットに対応する前記プリコンパイルされたプリミティブビットストリームの前記サブセットを含む応答を送信することと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサブセットを決定することは、前記プリミティブ関数の各々に対する特定のパーティションおよびバリエーションを決定し、前記特定のパーティションおよびバリエーションを識別するメタデータを記憶することをさらに含み、前記要求を送信することは、前記要求とともに前記メタデータを送信することをさらに含む、請求項3に記載の方法。
【請求項5】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が1つ以上の入力、1つ以上の出力を有し、コンフィギュレーションAXIバスに接続されている、請求項1に記載の方法。
【請求項6】
前記バリアントの各々が異なる目的のためのロジックを含み、どの信号が前記1つ以上の出力に渡されるかを選択するための出力多重化として有する、前記FPGAでの使用に適合された、請求項5に記載の方法。
【請求項7】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、機器のシングルチャネルバージョンとしてコンフィギュアできる、より大きなPR領域であり、
1つ以上のDSPブロック部分的リコンフィギュレーション領域の第2のセットが、低レベル機能を実装するように適合されている、
請求項1に記載の方法。
【請求項8】
複数のDSPブロック部分的リコンフィギュレーション領域を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、信号生成機器またはコントローラ機器用にコンフィギュアされた、より大きなPR領域であり、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第2のセットが、測定機器または監視機器用にコンフィギュアされている、請求項1に記載の方法。
【請求項9】
前記特定のICに実装する前記アルゴリズムの前記機能ロジックを表すグラフィカルブロックを選択し、接続するためのグラフィカルユーザインターフェースにおいて入力を受信することをさらに含み、前記グラフィカルブロックがリコンフィギャラブルロジックに関連する、請求項1に記載の方法。
【請求項10】
部分的リコンフィギュレーションをサポートするデジタル電子集積回路(IC)をコンフィギュアするための命令のシーケンスを記憶する1つ以上の非一時的コンピュータ可読ストレージ媒体であって、特定のICが、複数のリコンフィギャラブルパーティションを有し、1つ以上のプロセッサを使用して実行されるとき、前記1つ以上のプロセッサに、
リコンフィギャラブルロジックを使用して、前記特定のICに実装するアルゴリズムの機能ロジックを指定するための要求を受信することと、
前記機能ロジックに対応する特定のプリミティブ関数を含むプリミティブ関数のサブセットを決定することと、
デジタルストレージから、前記プリミティブ関数の前記サブセットに対応する、プリコンパイルされたプリミティブビットストリームのサブセットを取得することと、
1つ以上の部分的リコンフィギュレーション演算を使用して、前記特定のICに前記プリコンパイルされたプリミティブビットストリームの前記サブセットを書き込むことと、を実行させる、
非一時的コンピュータ可読ストレージ媒体。
【請求項11】
前記特定のICが、M個のリコンフィギャラブルパーティションおよび前記リコンフィギャラブルパーティションの各々にN個のバリエーションを有するフィールドプログラマブルゲートアレイ(FPGA)を備え、実行されるとき、前記FPGA上のM個とN個のすべての組み合わせに書き込むことができ、実装することができる、複数の異なるプリミティブ関数のための前記複数のプリミティブビットストリームをコンパイルさせ、記憶させ、結果としてM*N個のプリミティブを記憶させる、命令のシーケンスをさらに備える、請求項10に記載のコンピュータ可読媒体。
【請求項12】
実行されるとき、
コンフィギュレーションビットストリームを前記特定のICに書き込む前に、クライアントコンピュータシステムに通信可能に連結されたサーバを使用して、前記特定のICに書き込むことができ、実装することができる、複数の異なるプリミティブ関数のための前記複数のプリコンパイルされたプリミティブビットストリームをコンパイルし、前記デジタルストレージを使用して、前記複数のプリコンパイルされたプリミティブビットストリームを記憶することを実行させ、
前記クライアントコンピュータシステムから前記サーバに、前記プリミティブ関数の前記サブセットに対応する前記プリコンパイルされたプリミティブビットストリームの前記サブセットを提供する要求を送信させ、
前記サーバから前記クライアントコンピュータシステムに、前記プリミティブ関数の前記サブセットに対応する前記プリコンパイルされたプリミティブビットストリームの前記サブセットを含む応答を送信させる、
命令のシーケンスをさらに備える、請求項10に記載のコンピュータ可読媒体。
【請求項13】
前記機能ロジックに対応する特定のプリミティブ関数を含む前記プリミティブ関数のサセットを決定することは、実行されるとき、前記プリミティブ関数の各々に対する特定のパーティションおよびバリエーションを決定させ、前記特定のパーティションおよびバリエーションを識別するメタデータを記憶させる命令のシーケンスさらに含み、前記要求を送信することは、前記要求とともに前記メタデータを送信することをさらに含む、請求項12に記載のコンピュータ可読媒体。
【請求項14】
各々が順次接続された複数の同一のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を備える、FPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が1つ以上の入力、1つ以上の出力を有し、コンフィギュレーションAXIバスに接続されている、請求項10に記載のコンピュータ可読媒体。
【請求項15】
前記バリアントの各々が異なる目的のためのロジックを含み、どの信号が前記1つ以上の出力に渡されるかを選択するための出力多重化として有する、前記FPGAでの使用に適合された、請求項14に記載のコンピュータ可読媒体。
【請求項16】
複数のDSPブロック部分的リコンフィギュレーション領域を備えるFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、機器のシングルチャネルバージョンとしてコンフィギュアできる、より大きなPR領域であり、
1つ以上のDSPブロック部分的リコンフィギュレーション領域の第2のセットが、低レベル機能を実装するように適合されている、
請求項10に記載のコンピュータ可読媒体。
【請求項17】
各々が順次接続された複数のDSPブロック部分的リコンフィギュレーション領域を有する複数の行、行間の任意の接続を可能にする複数の相互接続、を含むFPGAでの使用に適合され、前記DSPブロック部分的リコンフィギュレーション領域の各々が、前記プリミティブビットストリームの中から異なるビットストリームプリミティブを使用してN個のバリアントの1つとしてコンフィギャラブルであり、前記バリアントの各々が2つ以上の入力、2つ以上の出力を有し、コンフィギュレーションAXIバスに接続されており、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第1のセットが、信号生成機器またはコントローラ機器用にコンフィギュアされた、より大きなPR領域であり、
1つ以上の前記DSPブロック部分的リコンフィギュレーション領域の第2のセットが、測定機器または監視機器用にコンフィギュアされている、
請求項10に記載のコンピュータ可読媒体。
【請求項18】
実行されるとき、前記特定のICに実装するアルゴリズムの機能ロジックを表すグラフィカルブロックを選択し、接続するためのグラフィカルユーザインターフェースにおいて入力を受信させる命令のシーケンスをさらに含み、前記グラフィカルブロックがリコンフィギャラブルロジックに関連する、請求項10に記載のコンピュータ可読媒体。
【請求項19】
前記デジタルストレージは、ネットワーク化されたデータストレージ、ホストコンピュータのストレージ、仮想コンピューティングインスタンスに関連付けられたストレージ、およびこれらの組み合わせから構成されるグループから選択されたストレージを含む、請求項1に記載の方法。
【請求項20】
前記プリミティブ関数の前記サブセットは、前記機能ロジックに対応するプリミティブ関数の第2のサブセットを含み、
プリミティブ関数の前記第2のサブセットに対応する、プリミティブビットストリームの第2のサブセットは、プリミティブビットストリームにプリコンパイルされておらず、
コンピューティングデバイスを使用して、プリミティブ関数の前記第2のサブセットのためのプリミティブビットストリームの前記第2のサブセットをコンパイルすることと、
1以上の部分的リコンフィギュレーション演算を使用して、前記特定のICにプリミティブビットストリームの前記第2のサブセットを書き込むことと、
を含む、請求項1に記載の方法。
【外国語明細書】