JP2019537784A - FPGAプラットフォームアズアサービス(PaaS) - Google Patents
FPGAプラットフォームアズアサービス(PaaS) Download PDFInfo
- Publication number
- JP2019537784A JP2019537784A JP2019520782A JP2019520782A JP2019537784A JP 2019537784 A JP2019537784 A JP 2019537784A JP 2019520782 A JP2019520782 A JP 2019520782A JP 2019520782 A JP2019520782 A JP 2019520782A JP 2019537784 A JP2019537784 A JP 2019537784A
- Authority
- JP
- Japan
- Prior art keywords
- fpga
- application
- node
- stream
- chassis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 37
- 238000004891 communication Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 35
- 238000012544 monitoring process Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 238000011161 development Methods 0.000 description 14
- 238000012800 visualization Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 235000006679 Mentha X verticillata Nutrition 0.000 description 1
- 235000002899 Mentha suaveolens Nutrition 0.000 description 1
- 235000001636 Mentha x rotundifolia Nutrition 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- XQFCONVZHYBBOH-UHFFFAOYSA-N hippeastidine Chemical compound C1C2=CC(OC)=C(OC)C(O)=C2C23CCC(OC)CC3N1CC2 XQFCONVZHYBBOH-UHFFFAOYSA-N 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3013—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Microcomputers (AREA)
- Stored Programmes (AREA)
Abstract
FPGA PaaSは、企業開発者が、その市場コンポーネント、アプリケーション、およびストリームサービスを使用してアプリケーションを容易に構築することを可能にする。FPGA PaaSは、その機能をそのFPGA PaaS企業開発者に提供する。
Description
高性能コンピューティングソリューションは、アプリケーションをスピード、効率、信頼性を伴って動作させるために、企業規模のアプリケーションで使用されている。例えば、Googleはテンソルプロセッシングユニット(TPU)を提供しており、これは、機械学習アプリケーションに特に適合した、カスタムビルトの、特定用途向け集積回路である。TPU(または複数のTPU)は、データセンタ内の機械学習負荷についての特定の処理タスクをアクセラレートするために他の汎用プロセッサと共に使用される。リコンフィギャラブルコンピューティングは、いくつかのフィールドプログラマブルゲートアレイ(FPGA)を含むネットワークなどの高速コンピューティングファブリックを利用して情報の高性能な処理を提供するための別の方法論である。上記で特定された手法と同様に、現在の1つのアーキテクチャは、アクセラレータとして汎用プロセッサおよびリコンフィギャラブルなハードウェアプロセッサのアレイを使用する。Microsoft社による現在の1つの手法は、当初、同社のBing検索アルゴリズムを強化するCatapultプロジェクトとして始まった。汎用プロセッサをFPGAと共に使用することにより、Microsoft社はアルゴリズムの処理に関連して40倍の性能向上と、2倍のシステム全体の性能向上を報告している。Microsoft社はこのFPGAアクセラレータの作業を前進させ、同社のOffice365(登録商標)内および同社のAzure(登録商標)クラウドプラットフォームにわたってネイティブに人工知能を可能にした。同様に、IBM社とXilinx社とは、FPGAアクセラレータのデータセンタアーキテクチャでの使用を可能にするためのコラボレーションを発表した。
上記で特定された現在の手法では、汎用プロセッサは、画像処理またはパターンマッチングのような特定のタスクを実行するようにプログラムされている、アクセラレータプロセッサの動作をコントロールする。特定のタスクが完了した時点で、次いで、汎用プロセッサは、後続のプロセスが完了できるようにさらなるタスクを調整する。したがって、処理タスクが特別にコンフィギュレーションされたハードウェアを用いて行われるので、速度に関するいくつかの利点が得られる。しかしながら、汎用プロセッサを使用しての、このシステムに必要なプロセッサ調整およびデータ移動は、オペレーティングシステムが、意図されたコード実行と悪意のあるコードとを区別することが本質的にできないことを考慮すると、汎用プロセッサ上でのこのシステムのオペレーティングシステムのブラインド実行に起因する遅延、レイテンシ、および固有のセキュリティ脆弱性をもたらす。他のコンフィギュレーションでは、カスタマイズされたプロセッサは、アクセラレータとして機能するか、またはコプロセッサと同様に動作するようにコンフィギュレーションされ、やはり汎用プロセッサおよび本質的にセキュアでないオペレーティングシステムと共に動作する。
歴代のデータ漏えいとなっているもので最新のものはEquifax社でのもので、1億4500万を超える米国の消費者の金融データおよび主として不変の個人データが危険にさらされた。コンピュータシステムがサイバ攻撃に抵抗する能力を向上させる要望が高まっている一方で、政府の人事記録管理、小売取引処理およびソーシャルメディアを含む多くの分野で、こうした人目をひく攻撃が多い。これまで以上に複雑なパスワードおよびバイオメトリックアクセスなどの基本的なセキュリティ機能を向上させるために多くの試みがなされてきたが、これらは典型的なマイクロプロセッサベースのコンピュータシステムの攻撃面を著しく減少させるにはほとんど役立っていない。こうした攻撃の大部分は、基本となるソフトウェアオペレーティングシステム(OS)の機能またはホールを悪用し、マイクロプロセッサに望ましくない機能を実行させる。その結果、HIPP A、PCIまたはFEDRAMPなどのほとんどのデータセンタコンプライアンス認証機関は、これらのデータセンタが、公開されているOSセキュリティ脆弱性のリストを毎日レビューし、特定された脆弱性に対するパッチを実施することを求めている。これらの努力は、ハッカより一歩先を行くことを試みているが、さらなる脆弱性が検出され続けている。
上述したセキュリティ上の課題に加えて、汎用プロセッサベースのコンピュータシステムはまた、アプリケーションを同時に実行すること、およびアプリケーションの連続的なモニタリングを実行することにおいて本質的に非効率的でもある。コンピュータアプリケーションでは、アプリケーションの実行中に発生し得るさまざまなイベントをモニタリングできることが多くの場合有益である。これらのイベントは、アプリケーションの性能またはシステム全体の健全性に関する洞察をユーザに提供し得る。残念ながら、今日の命令フローマイクロプロセッサベースのコンピュータシステムにおけるこのようなモニタリングイベントには、代償が伴う。所望のモニタリングをアプリケーションプログラムに追加するために、開発者は追加のソフトウェアステップを追加しなければならない。次いで、これらのステップはマイクロプロセッサによって実行されなければならず、したがって処理クロックサイクルを消費し、また元のアプリケーションの命令実行を変更もする。アプリケーションによって数百万のこれらのイベントが生成されることも珍しくないであろうことから、全体のアプリケーション性能が低下することを理解することが容易となる。その結果、命令プロセッサ内におけるイベントの一切のモニタリングはそのアプリケーション性能を低下させ、そのような所望のレベルでイベントをモニタリングすることは非現実的となる。
この発明の概要は、詳細な説明において以下でさらに説明する概念から選択したものを単純化した形で紹介するために提供されている。この発明の概要は、特許請求される主題事項の主要な機能または本質的な機能を特定することを意図されておらず、特許請求される主題事項の範囲を限定するために使用されることも意図されていない。
主な計算が1つまたは複数のリコンフィギャラブルプロセッサで実行される企業のスーパー計算プラットフォーム上で企業アプリケーションを遠隔で構築、操作、モニタリングおよび更新するためにいくつかの異なる機能を利用するFPGAプラットフォームアズアサービス(PaaS)が開示される。一実施形態では、計算プラットフォーム全体が、プロセッサに命令するオペレーティングシステムを使用せずに実行される。市場のメータリングされる処理エレメントを利用する企業アプリケーションを開発および動作させる機会は、トラステッドFPGA PaaSを通じて可能になる。したがって、企業開発者は、さまざまな処理エレメントを1つのアプリケーションにアセンブルすることによってアプリケーションを構築することができる。PaaSはまた、FPGA PaaS企業開発者にその機能を提供する使いやすい統合開発環境も提供する。
FPGAは、適切にコンフィギュレーションされた時点で、比較的高い柔軟性および処理速度を提供する。とはいえ、この処理を実行するためには、これらのデバイスのコンフィギュレーションを常に調整しなければならない。現在、FPGA上での回路開発のためのソースコードへの開発者アクセスは、開発者数ごとまたはアプリケーションごとに支払われる、オープンソースまたはより大きな前払いのライセンス費用のいずれかに限られている。同時に、企業アプリケーション開発者は、アプリケーションの製品化までの時間を短縮するため、および彼らが構築および保守しなければならないコードの総量を減少させるために、耐久性と性能の高いできるだけ多くのコンポーネントを利用しアプリケーションに組み込もうとする。FPGAプロセッサはしばらく前から存在してきたが、開発コストが大きいことからFPGAは特殊コンピューティングまたは組み込みコンピューティングデバイスで一般的に使用されてきた。
図1は、FPGAアプリケーション102の開発、コンパイルおよびデプロイメントに基づく対価を容易にすることができる、市場104内でデプロイされたFPGAアプリケーション102を構築およびデプロイするためのいくつかのモジュールを含むFPGA PaaS環境100の概略図である。FPGAアプリケーション102は、以下で論じるように開発者によって使用されるさまざまなツールを含むことができる適切なアプリケーション開発モジュール106を使用して構築される。開発モジュール106を使用してソースコードをアセンブルした後、ソースコードをコンパイルするためにFPGAコンパイルモジュール108を使用することができる。FPGAアプリケーション102は、複数のFPGA計算ノード、複数のメモリノード、FPGAスイッチ、および複数のI/Oノードが、現在のシステムと比較して改善されたセキュリティおよび性能を提供するために企業のスーパー計算プラットフォーム内で互いに協調するように、企業アプリケーション用にスケーリングすることができる。一実施形態では、FPGAアプリケーション102全体が、オペレーティングシステムを使用せずにコンピューティング、記憶、スイッチング、およびネットワーキングを実行する。
一実施形態では、デプロイメントの準備が整うと、FPGAコンパイルモジュール108は、1つまたは複数のビットストリーム、およびFPGAアプリケーション102内のストリーム間の接続を指定するストリーム接続情報を含む、複数コンポーネントのアプリケーションパッケージを生成する。トラステッドデプロイメントモジュール110によってセキュアなデプロイメントを生成するために、アプリケーションパッケージを保護および暗号化することができる。トラステッドデプロイメントモジュール110は、開発モジュール106内で指定されたように、FPGAアプリケーション102を1つまたは複数のサーバにデプロイするためにアプリケーションパッケージを使用する。一実施形態では、トラステッドデプロイメントモジュール110は、FPGAアプリケーション102と通信、およびFPGAアプリケーション102をデプロイするために、1つまたは複数の管理FPGAを利用することができる。1つまたは複数のサーバは、所望に応じて、単一のデータセンタ内に存在するか、または複数のデータセンタにわたってデプロイされることができる。
FPGAアプリケーション102は、オペレーティングシステムなしでFPGAプロセッサを使用して実装することができる。それに応じて、FPGAアプリケーション102についていかなるサイバ攻撃面も大幅に減少または排除することができる。その目的のために、開発者にとってなじみのある標準的な高級言語またはグラフィカルユーザインタフェース(GUI)ベースのプログラミング技術を使用するコンパイラを使用することができる。
一実施形態では、FPGAアプリケーション102はホストマイクロプロセッサを必要とせず、むしろFPGAを利用する。対照的に、Microsoft社のCatapultボードまたはAltera社もしくはXilinx社によって構築されたさまざまなカードなどの現在のFPGAベースの処理エレメントは、何らかの形でマイクロプロセッサに対するアクセラレータとして扱われ、従来の攻撃に対してシステムを依然として脆弱なままにしている。FPGAアプリケーション102においてFPGAベースの計算エレメントを排他的に使用することは、FPGAプロセッサ内のデータフロー回路内にインスタンス化されたコードのみを実行する。オペレーティングシステムのコード内に悪用される機能があるマイクロプロセッサとは対照的に、攻撃者が悪用することができる機能は、したがって減少または排除される。
FPGAアプリケーション102を開発するのに適したコンパイラは、Cなどの標準の高級言語を受け入れ、その高級言語を、FPGAアプリケーション102のいずれもマイクロプロセッサ上に常駐することを必要とせずに1つまたは複数のFPGAプロセッサで実装できるデータフローグラフに変換することができる。コンパイラへの高級言語入力も、GUIを使用して生成することができる。Impulse Accelerated Technologies社によって製造されているものなど、今日では多くの「C to Gates」タイプのFPGAコンパイラが存在するが、これらのコンパイラは、FPGAプロセッサのみを使用することによっても、またはFPGAプロセッサの集まりだけを使用することによっても、ソフトウェアアプリケーション全体を実装することを可能にしない。むしろ、これらのアプリケーションは、FPGAをコンフィギュレーションし、FPGAがどのデータを受信するかを決定し、アプリケーションインタフェース管理を実行するために、マイクロプロセッサホストを使用する。計算用のFPGAプロセッサのみの使用と、FPGAプロセッサ用のスタンドアロンアプリケーションを生成することができるコンパイラとを組み合わせることによって、アプリケーションについての攻撃面を減少させることができる。
本明細書で使用されるように、FPGAアプリケーションは、データ処理の大部分または全部がFPGAプロセッサなどのリコンフィギャラブルハードウェア上で実行されるデータ処理を実行する任意のコンピュータプログラムを含む。一実施形態では、ランタイム環境は、リコンフィギャラブル計算ノード、リコンフィギャラブルスイッチ、リコンフィギャラブルコモンメモリノード、およびリコンフィギャラブルI/Oノードの組合せを利用するオペレーティングシステムなしで完全にFPGAベースである。別の実施形態では、ランタイム環境において、FPGAアプリケーションは、オペレーティングシステムを有するかまたはオペレーティングシステムなしでマシンコードとしてコンパイルされたマイクロプロセッサ、リコンフィギャラブル計算ノード、プロセッサによってアクセス可能なリコンフィギャラブルコモンメモリ、およびスイッチモジュールの組合せを、指定どおりのさまざまな組合せで利用することができる。FPGAアプリケーション102において、ストリームプロトコル、ストリームデータソース、I/Oコネクタ(内部ワイヤに沿って接続を提供する)、I/Oエージェント(外部システムへの接続を提供する)、コードブロックのコンポーネント、およびコードブロックの複数のコンポーネントで形成された複合コンポーネントなどの他のエレメントを使用することができる。
FPGAアプリケーション内では、プロセッサは所望に応じて独立してまたは選択的に動作することができる。いくつかの実施形態では、FPGAアプリケーション102は、1つまたは複数の進入ポイント(FPGAアプリケーション外部の入力メッセージを受信するFPGAアプリケーションの部分)、1つまたは複数の退出ポイント(FPGAアプリケーションから外部に出力メッセージを通信するFPGAアプリケーションの部分)、1つまたは複数のリコンフィギャラブル計算ノード(例えば、データを処理する物理FPGAの)、それによって処理ノードがメモリノードにデータを読み書きする、処理ノードにアクセス可能な1つまたは複数のメモリノード(例えば永続的物理メモリ、非永続的物理メモリ)、および処理ノードとメモリノードとの間でルーティングおよび通信を行うためのエグゼキュータブルロジックを含む1つまたは複数のスイッチを含む。いくつかの実施形態では、計算ノードはマイクロプロセッサを含むことができる。
一実施形態では、FPGAアプリケーション102は、イベントジェネレータおよびイベントコンシューマを含むイベント処理システムを利用する。FPGAアプリケーション102のコンポーネントは、このイベント処理システム内にあって、FPGAアプリケーション102内の複数のイベントストリームに提示される、イベントを生成または開始することができ、さらには、イベントは1つまたは複数のイベント記録として記録することができる。一実施形態では、イベント記録は、セキュアなハードウェアエレメント(例えば、トラステッドプラットフォームモジュール(TPM))と共に、またはそれとは独立して、ゼロ知識ブロックチェーンアーキテクチャに基づいてイベント記録を生成することができる。したがって、イベント記録へのキーに関する知識を有する独立したパーティであれば、後に、特定のイベントが真か偽かをアテストすることができる。
動作中、モニタリングモジュール112を、デプロイされたFPGAアプリケーション102のさまざまなメトリクスをモニタリングするために、さらに使用することができる。これらのメトリクスには、応答時間、特定のコンポーネントの使用などを含むことができる。メトリクスは、FPGAアプリケーション102の性能を分析し、その分析に基づいて、アプリケーション開発モジュール106を使用してFPGAアプリケーション102用のソースコードを更新するために使用することができる。以下により詳細に論じるように、モニタリングモジュール112は、FPGAアプリケーション102にいかなる性能上のペナルティも生じることなく、FPGAアプリケーション102によって行われる実際の処理と並行して、モニタリング回路から発せられた情報を収集する。全体として、モニタリングモジュール112は、FPGAアプリケーション102のデプロイメントを最適化するために、負荷バランシング、FPGAアプリケーション102と関連付けられたさまざまなコンポーネントの利用率計算、および他の発見的手段を実行するために使用することができる。
さらに、メータリングモジュール114は、デプロイされたFPGAアプリケーション102のメータリングを実施するために使用することができる。以下により詳細に論じるように、メータリングモジュール114は、FPGAアプリケーション102にいかなる性能上のペナルティも生じることなく、FPGAアプリケーション102によって行われる実際の処理と並行して、メータリング回路から発せられた情報を収集する。メータリングモジュール114によって生成されたメータリングイベントは、デプロイされた各FPGAアプリケーション102と関連付けられており、特定の使用カウントを生成する。使用カウントは、所望に応じて出力を生成するためにメータリング回路を使用して処理され得る。一実施形態では、メータリングモジュール114は、同じFPGA回路上でFPGAアプリケーション102の処理ブロックと並列に動作する。
一実施形態では、メータリングイベントは、FPGAアプリケーション102内で指定された特定の退出ポイントへルーティングされ、適切な総計およびリアルタイムでの請求に使用するために(例えば、メータリングイベント記録を生成することによって)メータリングモジュール114によって収集される。別の実施形態では、メータリング記録をフォーマットし、請求システム(例えば、ZuoraのようなSaaS請求プロバイダ、Amazon Web ServiceまたはMicrosoft Azureのようなクラウドプロバイダ)に通信し得る。別の実施形態では、メータリング記録を転送する他の方法(例えば、GNUプライバシーガード(GPG)暗号化Eメールまたは同等物)を使用することができる。記録を転送することは、さまざまな理由(例えばセキュリティ、接続性)のために直接接続されていないシステムが遠隔でメータリングモジュール114へ送信されることを可能にする。一実施形態では、メータリングイベントは、PaaSプラットフォームによって請求され、分担を割り当て、各固有の対価の義務について支払いを分配することができる。
図2は、一実施形態に係るFPGAアプリケーション102のコンポーネントのブロック図である。FPGAアプリケーション102は、I/Oノード200および1つまたは複数のFPGA計算ノード202(別々のFPGA計算ノード202(1〜N)として示されている)を含む。FPGA計算ノード202(1〜N)は、企業全体にわたって分散することができ、複数のデータセンタ、複数のシャーシ、およびシャーシ内の複数のノードを含む。一実施形態に係る動作では、入力メッセージ210は、ストリームをFPGA計算ノード202に分配するためにメッセージ解釈、負荷バランシング、高可用性、耐久性およびストリームルーティングを実行することができるI/Oノード200によって受信される。一実施形態では、I/Oノード200は、FPGAアプリケーション102への1つまたは複数の進入ポイント、およびFPGAアプリケーション102からの1つまたは複数の退出ポイントを備える。FPGA計算ノード202は、以下に論じるようにFPGA計算ノードを使用して、受信した入力メッセージ210に対してストリーム処理を実行し、出力データをI/Oノード200に提供する。次いで、I/Oノード200は出力メッセージ216を送信する。FPGA計算ノード202(1−N)のそれぞれは、一実施形態では(例えば、高可用性ソリューションを提供するために)同一であるか、またはFPGAアプリケーションのための別々の処理タスクを含むことができる。
一実施形態では、FPGAアプリケーション102はネットワーキング機能を実行するようにプログラムされ、I/Oノード200を介して入力メッセージ210としてネットワークパケット(例えばイーサネット(登録商標)パケット)を直接受信し、FPGA計算ノード202(1−N)はビジネスルールを含むビジネスアプリケーションをハードウェア内で実施する。この実施形態の一形態では、ビジネスアプリケーションスタック全体は、I/Oノード200およびFPGA計算ノード202を含んで、通信(例えば、イーサネット(登録商標))層からFPGAアプリケーション102のビジネスアプリケーションまで、リコンフィギャラブル計算ノード内に実装される。すなわち、コンフィギャラブルプロセッサによって読み取り可能なフォーマットへの着信メッセージからのトランスレーションおよび発信メッセージフォーマットへのリコンフィギャラブルプロセッサによって読み取り可能なフォーマットからのトランスレーションを除いて、リコンフィギャラブルプロセッサは、リソースを管理するオペレーティングシステムなしでFPGAアプリケーション102内のすべての処理を実行する。具体的な一実施形態では、計算ノードは、FPGAアプリケーション102のリコンフィギャラブルプロセッサまたは他のいかなるハードウェアリソースを管理するオペレーティングシステムも使用せずに、FPGAアプリケーション102のための主な計算機能を形成する。すなわち、FPGAアプリケーション102は、いかなるオペレーティングシステムからも独立して動作する。別の実施形態では、ネットワーキング機能およびビジネスアプリケーションは、複数のリコンフィギャラブル計算ノードおよび複数のカードにわたって任意の方法でデプロイされた別個の処理エレメントを含み得る。さらなる一実施形態では、I/Oノード200は、FPGAアプリケーション102用のネットワーキング機能および/またはビジネス機能の一部を含む。さらに別の実施形態では、計算ノード202は、単一のリコンフィギャラブル計算ノードを使用し得、またはリコンフィギャラブルプロセッサ以外のリコンフィギャラブルハードウェアを使用し得る。さらに別の実施形態では、計算ノード202は、リコンフィギャラブルハードウェアをマイクロプロセッサと協調して使用し得る。一実施形態では、I/Oノード200は、FPGA計算ノード202がバイナリ情報を処理するために、ネットワークパケットからバイナリ情報へのトランスレータとして機能する。FPGA計算ノード202間の通信は、以下で論じるように(例えば、また、バイナリ情報を使用して)通信プロトコルによってつかさどることができる。I/Oノード200は、所望に応じて、ネットワークパケットへの、FPGA計算ノード202によって処理されたバイナリ情報のトランスレータとして機能することができる。
一実施形態によれば、FPGAアプリケーション102は、企業に高可用性ソリューションを提供する。例えば、FPGA計算ノード202は、FPGA計算ノード202のうちの1つまたは複数が故障した場合に、FPGAアプリケーション102がFPGAアプリケーション102へ送信されたメッセージに対する回答または応答をなおも提供できるように、冗長な作業を実行することができる。一実施態様では、一実施形態に係るI/Oノード200は、複数のFPGA計算ノード202に入力ストリームを同時に提供し、FPGA計算ノード202の一部または全部は、受信した入力ストリームに対して同一の計算を実行する。次いで、これらのFPGA計算ノード202のそれぞれは、I/Oノード200に出力ストリームを提供する。I/Oノード200は、出力ストリームを受信し、出力メッセージ216として提供するために(例えば、合意アルゴリズムを使用して)出力ストリームのうちの1つを特定する。このようにして、FPGAアプリケーション102は、高可用性および応答の信頼性の向上を提供する。
FPGA計算ノード202は単一のシャーシ内に存在し得るか、または複数の別個の異なるシャーシに分散し得、シャーシのうちの任意の所与の1つは複数のI/Oノード200および任意の数のFPGA計算ノード202を含み得る。例えば、その結果、シャーシのI/Oノードが、入力ストリームをシャーシ内のFPGA計算ノード202へ、およびFPGAアプリケーション102の処理の一部を実施する1つまたは複数の他のシャーシ内の他のFPGA計算ノード202へルーティングすることを決定できるように、1つのシャーシは、I/Oノード200および単一のFPGA計算ノード202を実装し得る。図2の破線で示すように、FPGAアプリケーション102は、異なる一式のFPGA計算ノード202−2の処理を使用するために、互いに直接通信する第2のI/Oノード200−2および第3のI/Oノード200−3を含むようにスケーリングすることができる。
イーサネット(登録商標)またはInfiniBand I/Oノード、別個のリコンフィギャラブルハードウェアノードからのバイナリデータのストリームを含む双方向データバス、シャーシ内通信接続(例えば、シャーシ内の別個のノードへの)、シャーシ間通信接続(例えば、光リンク)およびその他のものなどのさまざまな通信チャネルを、FPGAアプリケーション102内で(例えば、別個のFPGA計算ノード202内で、およびそれらの間で)通信するために使用することができる。一実施形態では、FPGAアプリケーション102は、単一のリコンフィギャラブル集積回路チップ(例えばフィールドプログラマブルゲートアレイ(FPGA))上のFPGA計算ノード202に制約される。さらなる実施形態では、FPGAアプリケーション102は、複数の集積回路チップ、シャーシ内の複数のノード(例えば、1つまたは複数の回路を含むプリント回路基板)、および/またはイーサネット(登録商標)、InfiniBand、または直接光リンクなどの通信チャネルを介して接続された複数のシャーシにわたって分散することができる。
図3Aは、以下で論じるように適切な処理プラットフォーム上で具現化することができる例示的なFPGA計算ノード202のブロック図である。一実施形態では、FPGA計算ノード202は、オペレーティングシステムなしで動作し、複数のロジックブロック、および1つまたは複数のFPGA計算ノード上でアプリケーションを直接実行するようにコンフィギュレーションされたロジックブロック間の相互接続(例えばストリーム接続)から形成される。本明細書に示されるように、FPGA計算ノード202は、進入アセンブリ254(例えば、1つまたは複数の進入ポイントから形成される)からデータを受信し、そのデータを処理し、退出アセンブリ256(例えば、1つまたは複数の退出ポイントから形成される)にそのデータを出力または送信するために複数の回路を形成する複数のFPGAコンポーネント252(任意の番号1〜Nとして示される)から形成されるFPGAプロセッサ250を含む
一実施形態では、FPGAプロセッサ250は、複数のリコンフィギャラブルハードウェアゲートを含む物理的にディスクリートな集積回路である。他の実施形態では、FPGAプロセッサ250は、さまざまな通信リンクを介して互いに接続された複数の物理的にディスクリートな集積回路を含む。一実施形態では、FPGAコンポーネント252はデータを決定論的に処理する。FPGAコンポーネント252(1〜N)は、FPGAプロセッサ250によって直接アクセスされる(例えば、メモリコンポーネント262、ディスク264)か、またはFPGAプロセッサ250内にネイティブに記憶される(例えば、記憶ループ266内に)データ記録260を使用してデータを処理する。進入アセンブリ254および退出アセンブリ256は、I/Oノード200(図2)から受信したものなど、1つまたは複数の入力ストリーム270にアクセスする。詳細には、進入アセンブリ254は入力ストリーム270からデータを受け取り、退出アセンブリ256は1つまたは複数の出力ストリーム272にデータを提供する。次いで、出力ストリーム272はI/Oノード200(図2)へ送信される。
一実施形態では、FPGAコンポーネント252(1〜N)のうちの1つまたは複数は、FPGAコンポーネント252と関連付けられた1つまたは複数のメトリクスを追跡するために、FPGAコンポーネント252(1〜N)と並列に動作する1つまたは複数のモニタリング回路280と関連付けるようにコンパイルすることができる。モニタリング回路280は、FPGAアプリケーション102のモニタリングデータ(例えば、総計された、および/またはリアルタイムの)を提供するために、FPGA計算ノード202のそれぞれにわたって総計することができるモニタリング出力282を提供する。
なおさらなる一実施形態では、次いでコンパイルしてFPGAプロセッサ250にデプロイされる、1つまたは複数のFPGAコンポーネントを別々に開発できるように、FPGAコンポーネント252(1〜N)のそれぞれは、別個のソースからコンパイルすることができる。そのような場合、FPGAコンパイルモジュール108(図1)は、FPGAプロセッサ250に1つまたは複数のメータリング回路290を追加することができる。メータリング回路290は、所望に応じてFPGAコンポーネント252をメータリングするためのFPGAコンポーネント識別子と共にプログラムされる。一実施形態では、メータリング回路290は、FPGA計算ノード202内のFPGAコンポーネント252についての時間ベースのメータリングイベントを生成することができる時間イベントエミッタを含む。メータリング回路290は、メータリング記録を展開し、記録を集約し、FPGAコンポーネント252についてのメータリング出力292を生成するための総計モジュールをさらに含むことができる。メータリング出力292は、FPGAコンポーネント252の動作に基づいて対価を決定するためにメータリングモジュール114によって処理される。例えば、FPGAコンポーネント252(2)は、1回の使用につき0.00001ドル、1GB処理につきに1.00ドル、または1時間につき0.10ドルの使用率を含み得る。このように、メータリング回路290は、FPGAコンポーネント252(2)が使用された回数を決定する対応するカウンタを含むことができる。次いで、この数は、メータリング出力292へ出力することができる。メータリングは、ありとあらゆるFPGAコンポーネント252について、そして任意の測定単位を使用して実行することができる。
一実装態様では、モニタリング回路280およびメータリング回路290は、ピンと結合されたワイヤに沿って、モニタリング出力282およびメータリング出力292をそれぞれ直接提供するディスクリートのFPGA集積回路のピンと直接インタフェースする。この目的のために、FPGAアプリケーション102の他のコンポーネントの動作とは別にモニタリング出力282およびメータリング出力292を収集するために、FPGAプロセッサ250との専用線を確立することができる。図3Bに示す、なおさらなる実施態様では、メータリング回路290はイベントを2次的なFPGAプロセッサ251へ直接ルーティングする。FPGAプロセッサ251は、メータリング回路290用の回路を含む。一例では、メータリング回路290は、FPGAコンポーネント252のうちの1つまたは複数の実行によるイベントを収集するためのバッファを含む。FPGAプロセッサ251内のメータリング回路290から、上記で論じるメータリング出力292が生成される。
それに応じて、メータリング出力292を生成するためにメータリング回路290を使用するための一実施形態では、方法は、複数の回路へのデータの第1のデジタルビットストリームを受信する段階を含む。複数の回路は、複数のコードブロックから生成される。複数の回路を介してデータの第1のデジタルビットストリームを処理することと並行して、第1のデジタルビットストリームを消費する複数の回路のうちの少なくとも1つの実行を示す使用値が生成される。1つまたは複数の使用値を示す第2のデジタルビットストリームが送信される。
本明細書で使用され、図4Aに概略的に示されるように、例示的なFPGAコンポーネント300は、1つまたは複数の入力ストリーム302、その1つまたは複数の入力ストリームに対して実行されるべき動作を定義するコードブロック304(例えばソースコードによって定義され、リコンフィギャラブルハードウェアユニット上にコンパイルおよびコンフィギュレーションされる)、および1つまたは複数の出力ストリーム306、を定義するデータ処理である。FPGAアプリケーション102内では、入力ストリーム302および出力ストリーム304は、ストリームの様相を特定するためのさまざまな形態の情報を含む。例えば、入力ストリーム302および出力ストリーム304は、タイプ(例えば、支払いストリーム、トークンストリーム、キーと値のペア)、FPGAアプリケーション102内でストリームを区別するための固有の識別子、幅、およびストリームの処理に有用な他の情報を含むことができる。FPGAコンポーネント252が別のFPGAコンポーネントに隣接して配置されるとき、当該のFPGAコンポーネント252は、1つのFPGAコンポーネントの出力ストリームを1つまたは複数の後続のFPGAコンポーネントの入力ストリームに伝達するリコンフィギャラブルハードウェアを含む。
一実施形態では、入力ストリーム302は、対応する出力ストリームから情報を受信するためのストリームプロトコル情報を含み、出力ストリーム304は、対応する入力ストリームへ通信するためのストリームプロトコル情報を含む。例えば、アプリケーション内の出力ストリームは、隣接する入力ストリームが同じFPGAプロセッサ内に位置することを示す情報を含むことができ、したがって、結果を隣接する入力ストリームへ送信するために特定のプロトコルが必要ないことを示すコントロールビットまたは他のインジケータを含むことができる。別の実施形態では、出力ストリームは、隣接する入力ストリームが同じシャーシ内の別のFPGAプロセッサ上に位置しており、シャーシ内のスイッチを介して通信されるという情報を含むことができる。そのような状況では、出力ストリームは、同じシャーシ内でストリーム間の通信をつかさどるシャーシ内プロトコルを利用することができる。なおさらなる一実施形態では、出力ストリームは、隣接する入力ストリームが別個のシャーシに位置していることを示す情報を含むことができる。それに応じて、出力ストリームは、指定されたストリームプロトコル情報、およびイーサネット(登録商標)を介してストリームを通信するための暗号化機能(例えば、IPsecまたは暗号化暗号の配置を使用する)を含むことができる。一実施形態では、例えば、メモリアクセス動作においてシャーシ、ノード、および直接的なメモリアドレス、に関する情報と共にアドレスを示すことによる、複雑なアドレッシング技術を使用することができる。なおさらなる一実施形態では、企業レベルのストリームプロトコル層を、例えば別個の回路、ノード、シャーシ、データセンタなどに対して、企業システムにまたがる入力ストリームと出力ストリームとの間の通信のためのストリームプロトコル情報と共に利用することができる。企業ストリームプロトコル層は、セキュアな企業インフラストラクチャを確立するのに有用である。
図4Bは、FPGAコンポーネント用のソースコードファイルの概略図である。ソースファイルは、最終的にコンパイルされてダイレクトエグゼキューションロジックに形成されるいくつかの情報エレメントを含む。一実施形態では、ダイレクトエグゼキューションロジックは、企業スーパー計算プラットフォームのノードにまたがるロジックを含む企業レベルのアプリケーションである。ソースコードファイル内の例示的なエレメントには、入力ストリーム識別子、出力ストリーム識別子、高級言語またはハードウェア記述言語コードブロック、データフロー記述言語、隣接するストリームを接続するための接続プロトコルに準拠するストリーム接続コード、ソースコードの開発者に対する対価要件およびその他の情報エレメントが含まれる。コンパイルの間、各ストリームについて(例えば企業にわたって)固有のストリーム識別子を有するように、アプリケーションにわたって名前付けの競合を回避するために入力ストリーム識別子および出力ストリーム識別子が利用される。例えば、特定のソースコードファイルがアプリケーションにわたって複数の位置で使用される場合、各ストリームに対する固有の識別子がアプリケーション開発中に(例えば、シャーシおよび/またはノードによって)割り当てられる。データフロー記述言語およびストリーム接続コードは、隣接するストリームを接続し、さらにはアプリケーションへ出力を提供しないストリームを回避するために使用される。例えば、特定のコードブロックが4つの出力ストリームを含む場合、ストリーム接続コードは、4つの出力ストリームに対して4つの対応する接続があることを確実にすることができる。データフロー記述言語は、FPGAアプリケーションのコンパイル時にストリーム接続コードを生成するために使用することができる。対価要件は、コンパイルおよびデプロイメント時に開発者によって設定することができ、アプリケーションのロジックの使用量および対価を決定するためにアプリケーションのロジックと並列に動作するダイレクトエグゼキューションブロックを形成する。
FPGAアプリケーション102内では、複数のFPGAコンポーネントを順番におよび/または並列に配置することができる。例えば、図5Aは、進入I、退出E、および進入Iと退出Eとの間に順番に(すなわち直列に)配置された複数のFPGAコンポーネントC1〜C4を含む例示的なFPGAレイアウト320の概略ブロック図である。FPGAレイアウト320は、隣接するマイクロ回路セグメント間の接続を提供するためにFPGAコンポーネントC1〜C4の間に配置された複数のストリームS1〜S5をさらに含む。詳細には、ストリームS1〜S5は、第1のFPGAコンポーネントの対応する出力ストリームから後続の第2のFPGAコンポーネントの入力ストリームへデータを伝達する。詳細には、ストリームS1は進入IからFPGAコンポーネントC1の入力へデータを伝達し、ストリームS2はFPGAコンポーネントC1の出力からFPGAコンポーネントC2の入力へデータを伝達し、ストリームS3はFPGAコンポーネントC2の出力からFPGAコンポーネントC3の入力へデータを伝達し、ストリームS4はFPGAコンポーネントC3の出力からFPGAコンポーネントC4の入力へデータを伝達し、ストリームS5はFPGAコンポーネントC4の出力から退出Eへデータを伝達する。FPGAコンパイルモジュール108に関して本明細書で論じるように、ストリームS1〜S5用のコードは、指定されたFPGAコンポーネント用の入力ストリーム302および出力ストリーム306に基づいて自動的にコンパイルすることができる。さらに、ストリームS1〜S5は、同じFPGA上、同じノード上、同じシャーシ内の異なるノード上、または完全に別個のシャーシ上に存在し得るコンポーネント間の通信のためのストリームプロトコル情報を含むことができる。FPGAコンパイルモジュール108は、隣接するコンポーネントが入力ストリームと出力ストリームとの間に統一された変数を含むかどうかをさらに特定することができる。例えば、図5Aに関して、FPGAコンパイルモジュール108は、コンポーネントC1が4つの出力ストリームを含み、コンポーネントC2が4つの統一された数の入力ストリームを含むと決定することができる。FPGAコンパイルモジュール108がFPGAアプリケーション102内の非統一性を決定した場合、エラーメッセージを生成することができる。
図5Bは、進入I、退出E、および複数のFPGAコンポーネントC1〜C4を含み、FPGAコンポーネントC2〜C4が並列に配置された例示的なFPGAレイアウト330のブロック図である。詳細には、ストリームS1は、進入IからFPGAコンポーネントC1の入力へデータを伝達する。次いで、ストリームS2〜S4は、FPGAコンポーネントC1の対応する出力からFPGAコンポーネントC2〜C4の入力へデータを伝達する。FPGAコンポーネントC2〜C4は、それらのそれぞれの入力でデータを受信した時点で、そのデータを並列に(例えば、他のFPGAコンポーネントの同じクロックサイクル中に)処理するように動作する。次いで、ストリームS5〜S7は、FPGAコンポーネントC2〜C4の対応する出力から退出E1〜E3へデータを伝達する。どのコンポーネントが外部ソースから通信を受け入れるようにコンフィギュレーションされているか、およびどのコンポーネントが外部のデスティネーションへ通信するようにコンフィギュレーションされているかに応じて、FPGAアプリケーション全体に対して進入ポイントおよび退出ポイントが確立されるように、FPGAアプリケーションのコンパイル中にレイアウト320および330内のコンポーネントを互いに接続できることは注目に値する。
図5Aに関して上記で論じたようにFPGAコンポーネントC1〜C4のうちのいずれかの実行をメータリングするという観点では、イベントモニタリングは、動作命令と並行して実行することができる。図5Cでは、命令(または代替的に命令セット)1−7を含む例示的なアプリケーションが概略的に示されている。現在のマイクロプロセッサ手法では、命令は順番に実行され、こうした実行は実行時間内に実行される。開発者が、実行された各命令(または任意の数の命令)についての情報を収集したい場合、図5Dに示すように、開発者は命令シーケンス内に信号命令を挿入しなければならない。図示の例では、命令1、3および5が実行されたときに信号が生成される。この信号を生成する時間は実行時間に追加される。対照的に、図5Eに示されるように、信号1、3および5の命令生成のために生成された信号は命令1〜7の実行と並行して行われ、実行時間は図5Cのそれと同じになる。
FPGAアプリケーションの上記の理解を念頭に置いて、図6は、FPGAアプリケーション開発モジュール106のブロック図である。開発モジュール106は、例えばユーザインタフェース340(例えばコマンドライン、GUI)を介してアクセスされる、FPGAアプリケーションを開発するためのいくつかのツールを利用する。1つのツールはアプリケーション要件選択モジュール350であり、これは、可用性仕様、デプロイメント仕様、メモリ仕様、アテステーション仕様、サービスレベル合意仕様、I/Oノード仕様およびその他のものなど、FPGAアプリケーションと関連付けられたさまざまなパラメータを選択するためのインタフェースを含むことができる。これらの仕様は、デプロイされたFPGAアプリケーションのノード数、ノードのタイプ、シャーシ、セキュリティ機能、およびその他のパラメータを決定するのに役立つ。例えば、FPGAアプリケーションが、アプリケーションの通常動作のために負荷バランシングを有する2つのシャーシを、そして災害復旧のために1つのシャーシを使用することができると決定され得る。アプリケーション要件から、使用されるべきコンポーネントおよびコンポーネントのタイプを特定するリソースリストを生成することができる。リストには、シャーシのリスト、各シャーシ用の計算ノード、および各シャーシ用のメモリノードを含めることができる。アプリケーションパッケージは、FPGAアプリケーション内の計算ノードのそれぞれについてのダイレクトエグゼキューションロジック(例えば、ビットストリームの形で)を含むことができる。
FPGAコンポーネントモジュール352は、FPGAアプリケーション102内で利用されることになるFPGAコンポーネント(内部で、またはサードパーティによって開発される)を開発者が選択することを可能にする。一実施形態では、サードパーティの開発者は、FPGAコンポーネントの機能記述を公開し、FPGAアプリケーションでFPGAコンポーネントを使用するためのライセンス料を指定することができる。料金は、デバッグ、ハードウェアシミュレーション、またはFPGAアプリケーションのデプロイメントを示す、デプロイメントのタイプに基づくことができる。別の実施形態では、開発者は、FPGAコンポーネントの機能記述を公開し、処理カウントまたは期間あたりの使用または任意の測定単位に基づいてライセンス料を指定することができる。別の実施形態では、開発者数ごとにライセンス料を指定することができる。コンパイル時に、指定されたとおりに対価を計算するためにメータリング回路がFPGAアプリケーションに追加される。
データフロー視覚化モジュール354は、開発者がFPGAアプリケーション内のデータフローを視覚化することを可能にする。視覚化モジュール354を使用して、開発者は、FPGAアプリケーションの全体的な範囲、およびその位置が特定のFPGAプロセッサ上か、特定のシャーシ内か、または他の位置であるかに関わらず、どの位置でどのコンポーネントが利用されているかについての理解を得ることができる。例えば、一実施形態では、視覚化モジュール354は、FPGAアプリケーション102用のすべての進入ポイントを示すアプリケーションフローを表示することができる(例えば、進入ポイントをグラフィカルユーザインタフェースの左側の欄または上部で示すことによって)。例えば、開発者が、それらのそれぞれの進入ポイントへの外部接続ポイントを容易に特定できるように、進入ポイントを特定の名前で示すことができる。次いで、視覚化モジュール354は、進入ポイントへつながる読み取り動作のために、進入ポイントおよび/または管理メモリとつながるアプリケーションストリームをさらに示すことができる。別の実施形態では、視覚化モジュール354は、FPGAアプリケーション102のテストランでキャプチャされたデータ記録を表示する。視覚化モジュール354は、ユーザが、実際のキャプチャされたデータフローを時系列にステップ実行し、テストデータを処理するFPGAアプリケーション102の動作の各段階でデータをやり取りして検査することを可能にする。FPGAアプリケーション102の進入ポイントから受信したインバウンドメッセージを処理するさまざまなルールフレームワークをさらに示すことができる。視覚化モジュール354は、FPGAアプリケーション102について、出力ストリーム、書き込み動作用の管理メモリ、およびアプリケーション退出ポイントをさらに表示することができる。FPGAアプリケーションの動作中に、FPGAアプリケーション102がどのように実行しているかに関する理解を提供するために視覚化モジュール354をリアルタイムで更新することができる。
さらなる実施形態では、アプリケーション開発モジュール106は、コンテキストメモリマネージャ358を含むことができ、開発者は、FPGAアプリケーション102内でメモリがどのように管理されるかを示すことができる。例えば、コンテキストメモリマネージャ358は、FPGAアプリケーション102によって使用されるメモリデバイス内に記憶されているデータ(例えば管理メモリのデータセット)へのアクセスを指定することができる。一実施形態では、特定のコンポーネント(またはノード)には、このデータへの読み取りアクセスのみを許可することができる。代替的な実施形態では、またはこれに加えて、ダイレクトエグゼキューションロジックのみがメモリにアクセスすることができるようにアプリケーションがコンパイルされるときに、ダイレクトエグゼキューションロジック内のメモリアクセスコントロールを示すためにコンテキストメモリマネージャ358を使用することができ、FPGAアプリケーション内のセキュリティを大幅に向上させることができる。例えば、いくつかのコモンメモリのデータセットを伴う企業アプリケーションでは、単一のコンポーネントが単一の管理メモリのデータセットに書き込むことを可能にすることによって、アプリケーションのデータ保全性を可能にすることができる。一実施形態では、ダイレクトエグゼキューションロジックは、コモンメモリのデータセットへのアクセス権を行使する。
ここで図7をさらに参照すると、グローバルストリームマネージャ370、ビットストリームジェネレータ372、配置配線ツール374、およびモニタリングおよびメータリング回路ジェネレータ376などのいくつかのエレメントを使用する、FPGAコンパイルモジュール108が示されている。グローバルストリームマネージャ370は、アプリケーション用のソースコードファイルからのストリーム識別子を使用し、各ストリームが固有の識別子を有するように各ストリーム用のネームスペースを生成する。したがって、アプリケーション内でのストリーム識別子の重複が避けられる。場合によっては、FPGAコンパイルモジュール108は、指定されたFPGA、またはFPGAアプリケーション内の特定のブロックと共に使用するためにビットストリームジェネレータ372を使用してビットストリームを生成する。
FPGAアプリケーション102が複数の計算ノードを利用する場合、アプリケーションパッケージがアプリケーション内の各計算ノード用のビットストリームを特定するようにアプリケーションパッケージを生成することができる。この場合、FPGAコンパイルモジュール108は、1つまたは複数のFPGAビットストリームを生成するために、開発モジュール106によって示されるようにソースファイルを受信し、FPGAコンパイルモジュール108のビットストリームジェネレータ372と関連付けられたライブラリのハードウェアバージョンを使用し、FPGA配置配線ツール374を起動する。生成されたビットストリームは、コンパイルモジュール108によってオブジェクトファイルに含められる。FPGAコンパイルモジュール108は、FPGAアプリケーション内の計算ノードのそれぞれについて1つまたは複数のビットストリーム(ダイレクトエグゼキューションロジック)を含むことができる、アプリケーションパッケージを生成する。
FPGAコンパイルモジュール108は、FPGAアプリケーションの概要を開発者に提供するためにソースファイルおよびリソースリストファイルを受け入れる。ソースファイルは、サードパーティによって開発された、および/または内部で開発された標準ライブラリからのものとすることができる。コンパイルモジュール108は、Cおよび/またはC++および他の低レベル仮想マシン(LLVM)サポート言語で書かれたソースファイルならびにVerilogを統合することができる。したがって、開発者は、高級プログラミング言語内から、低レベルのハードウェア機能、つまりプロセッサハードウェアの定義および生成にアクセスすることができる。計算およびメモリアクセスに対するこのレベルのコントロールは、高い計算性能の達成をきわめて容易にする。一実施形態では、コンパイルモジュール108は、低レベル仮想マシン(LLVM)言語、VB.NETの中間言語(IL)およびその他のもの(例えば、Java(登録商標)、C#、Swift)などの異なる言語で書かれたコードをインポートすることができる。このコードをインポートすると、開発者は、コンポーネントを視覚的にまたはフロー言語で指定するグラフィカルユーザインタフェースを使用して、複合データフローアプリケーションを生成することができる。したがって、開発者は、FPGAアプリケーション102のコンパイル時に、並列または直列に特定のセグメントを有するアプリケーションの実行を最適化することができる。
コンパイルモジュール108は、ソースファイル(例えば、Verilog、C、C++で書かれた)を解釈し、アプリケーション内のFPGAプロセッサ用のダイレクトエグゼキューションロジックを生成するソフトウェアを含むことができる。コンパイルモジュール108は、コードから最大の並列性を抽出し、FPGA計算ノード内にインスタンス化されたパイプラインハードウェアロジックを生成する。一実施形態では、コンパイルモジュール108は、アプリケーションパッケージを形成する1つまたは複数のビットストリーム内に形成されたダイレクトエグゼキューションロジックを生成するいくつかの異なるライブラリを含む。
コンパイルモジュール108は、「デバッグモード」またはシミュレーション(「シムモード」)で、コンパイルされたコードをエミュレーションおよびシミュレーションする能力もユーザに提供する。デバッグ/シムモードコンパイルは、FPGAの配置配線ツール374を起動することなく、CPU上で自身のコードのすべてをユーザがコンパイルおよびテストすることを可能にする。デバッグ/シムモードは、ループの性能情報も提供することができ、これによりFPGAの配置配線前の正確なプロセッサのコード性能見積りを可能にする。
モニタリングおよびメータリングジェネレータ376は、使用あたり、期間あたり、シミュレーション使用あたり、シミュレーション期間あたりなどについてなど、ソースファイル内での、対価を示す、サードパーティ開発者からの指定のソースファイルの使用を示すダイレクトエグゼキューションロジックを生成する。さらに、ジェネレータ376は、統計がテストデータに関して生成されたかアプリケーションの実際のデプロイメント中に生成されたかに関わらず、開発者にとって価値のあるさまざまなモニタリング統計を示すことができるダイレクトエグゼキューションロジックを生成する。いずれにせよ、コンパイルモジュール108は、いかなる性能上のペナルティも回避するために、アプリケーションロジックの実行と並行して、ダイレクトエグゼキューションロジックをモニタリングおよびメータリングすることを位置付けるように動作する。
図8は、コンパイルモジュール108からアプリケーションパッケージを受け入れる、トラステッドデプロイメントモジュール110のブロック図である。トラステッドデプロイメントモジュール110は、暗号エンジン380およびデプロイメントプロトコルマネージャ382を使用する。暗号エンジン380は、暗号化されたファイルをデプロイメントのために遠隔システムへ送信することができるようにアプリケーションパッケージを暗号化する。組み合わせて、デプロイメントプロトコルマネージャ382は、暗号エンジン380によって暗号化されたファイルがセキュアなままで、かつ、信頼されたデスティネーションへのみデプロイされることを確実にするために、キーおよび他のセキュアエレメントを管理することができる。最終的には、所望どおりの動作のために、1つまたは複数の暗号化されたビットストリームを遠隔システムへ送信することができる。複数の計算ノードが使用されるとき、デプロイメントプロトコルマネージャ382は、アプリケーションのどの部分がFPGAアプリケーション102を動作させるために使用される指定されたノードへデプロイされるかをつかさどることができる。
FPGAアプリケーション102内のノード間で情報を効率的かつセキュアに処理するために、一方向の非同期通信プロトコルを利用することができる。図9は、ノード間の通信をつかさどる複数の変更可能なプロトコル機能(菱形として概略的に示されている)を使用した、ノード1とノード2との間の通信の概略ブロック図である。例示的なプロトコル機能は、エンコーディング、ラッパ、暗号、暗号パターン、キー、アルゴリズム、および並べ替え、ならびに送信側(例えば、ノード1)からのメッセージの送信を含み、プロトコル機能は、メッセージが、使用されてデスティネーションへ提供される、送信側識別子、署名、暗号化パターン、1つまたは複数のキー、デスティネーション識別子、セキュリティフレームワークの数およびタイプ、暗号、アルゴリズムなどを含むことを指示することができる。受信側でメッセージを受信しデコードする際に、受信側(例えば、ノード2)は、受信したメッセージの変更可能なプロトコル機能への準拠を検証するためにメッセージの内容を評価することができる。例えば、受信側は、メッセージが信頼できるソースからのものであり、メッセージ内の内容が処理するのに安全かどうかを決定するために、署名、暗号化、フォーマットなどを検証することができる。
特定のFPGAアプリケーションでは、さまざまなレベルのセキュリティを確立するために、任意の数の異なるプロトコル、暗号、キー、アルゴリズム、および永続化をさまざまな変更可能なプロトコル機能と共に使用することができる。例えば、ノード1がFPGAアプリケーションの外部にあり、ノード2がFPGAアプリケーションの一部である場合、第1のプロトコルを使用することができる。例えば、こうした通信は暗号化することができる。ノード1およびノード2がFPGAアプリケーションの別個のシャーシ内にある別の例では、第2の異なるプロトコルを利用することができる。ノード1およびノード2がFPGAアプリケーションの同じシャーシ内にあるさらに別の例では、第3の異なるプロトコルを利用することができる。さらに、FPGAアプリケーション内のメモリへの書き込みには第4のプロトコルを使用することができ、FPGAアプリケーション内のメモリからの読み取りには第5のプロトコルを使用することができる。
一実施形態では、セキュアストリームプログラマブルゲートアレイ機能を提供することができ、それによって、メッセージ内に含まれる情報を利用してコンフィギュレーションステップを迅速かつ容易に実行することを可能にする。例えば、コンフィギュレーションキー情報は、メッセージから抽出され、暗号化暗号、プロセスフロー、およびルールを含む適用可能なコンフィギュレーション情報を決定するために適用可能な状態を選択するために適切に利用される。受信側は、この処理にさらに対応するために、受信側によって直接アクセス可能なメモリに記憶されている、事前コンパイルされたコントロール情報を利用する。したがって、抽出されたコンフィギュレーションキー情報は、メモリと適切に協調するためにコントロールストリームまたはメッセージヘッダを利用し、したがって、関係する受信側に適切なコンフィギュレーションを提供することができる。再び、次いで、所望の出力ストリームを提供するために、同じ情報ストリームが受信側を通して処理される。
動作において、受信側は、着信データストリームをどのように処理するかを決定するために規則を適用し、したがって、この機能をハードウェア上に直接提供することによって上述のコンフィギュレーション情報の抽出を実行し、従来の汎用プロセッサの必要性が回避される。これの成果として、さまざまなノードを操作するためのオペレーティングシステムが存在しない。その結果、攻撃面を減少させることがセキュリティ強化をもたらし、性能を得ることができる。
本明細書に記載の一実施形態は、FPGA用のストリームトリガされた方法を対象とする。あるいは、これはストリームプログラマブルゲートアレイ(SPGA)と称される。利用される方法は、ネットワークから入力ストリームを直接受信する段階と、入力ストリームの受信に基づいてFPGAプロセッサのコンフィギュレーションをトリガする段階と、およびFPGAプロセッサ内のプログラムされたハードウェアゲートを介して受信入力ストリームを決定論的に処理する段階とを備える。この手法を使用して、すべてのコンポーネントはこのようにストリームトリガされ、入力ストリームに含まれる情報に基づいて排他的に動作する。代替的な実施形態では、ストリームルーティングを決定するために入力ストリーム内のデータがコンテキスト情報(例えば、メモリにローカルに記憶されている)と組み合わされる、追加の可能性が存在する。
一例では、コンポーネント1およびコンポーネント2はそれぞれ、FPGAおよびFPGAをコントロールするためのロジックを含む。一実施形態では、ノード間通信プロトコルは、I/Oノード、PCI Expressカード、IoT埋め込み可能モジュール、または、FPGAを含むハードウェアユニットを使用する他のデバイス上で実施される。例えば、デバイスは、モバイルデバイス、タブレット、電話、コンピュータ、サーバ、メインフレームなどとすることができる。別の実施形態では、ノードは、共通のシャーシ、ラック、またはハードウェアユニットの代替の容器内で互いに通信可能に接続することができる。いくつかの実施形態では、コンポーネントは、着用、持ち運び、グループでの使用、単独での使用、または疎結合ネットワークに属することができる装置から構成することができる。
一実施形態では、メッセージは受信側によって受信され、メッセージは受信機に直接接続されたいかなるメモリにも記憶されず、むしろ受信機を通してストリーミングされる。受信側はストリーム処理を実行し、これは要求および応答処理とは異なる。ストリーム処理によって、受信側は常に特定のトリガ情報について入力メッセージの内容を検査し、この情報が見つかったときにそれに応じて反応する。
所与のメッセージの内容に応じて、受信側は当該の入力メッセージを処理する場合もしない場合もあり、当該の入力メッセージに対応する出力メッセージを生成する場合もしない場合もある。一例として、受信側は、受信されたときに入力メッセージを処理せず、なお入力ストリームを別のノードへ転送する。別の例として、受信側は受信したときに入力メッセージを処理し、対応する出力メッセージを生成する。さらなる例として、受信側は、受信したときに入力メッセージを処理しないかまたはその一部だけを処理し、入力メッセージに対応する出力メッセージを生成しない(例えば、不正なメッセージに起因して)。さらに、受信側は、不正なメッセージが受信されたと決定された場合、通信のドロップ、ネットワーク帯域幅のキャンセル、およびその他のアクションなど、さまざまなアクションを取ることができる。
図10は、本明細書に提示された概念を実施するための適切なコンピュータシステム1200を示す。一例では、システム1200用のシャーシは、以下に論じるさまざまなモジュールを利用して、4ノード、32ノード、数百のノードを有する完全密閉型電磁パルス(EMP)保護キャビネット、および頑丈なシグナルデータプロセッサ(SDP)形状の要素に存在することができる。シャーシは、入出力(I/O)ノード、それぞれが1つまたは複数のFPGAプロセッサおよび任意選択のマイクロプロセッサを有するリコンフィギャラブルな計算ノード、およびコモンメモリノード、の組合せを含むことができる。図10に示すように、システム1200は、1つまたは複数の管理FPGAプロセッサ1201、I/Oノード1202、リコンフィギャラブル計算ノード1204、およびコモンメモリノード1206を含む。32ノードのシャーシの場合、所望に応じて複数のI/Oノードを利用することができる。
シャーシ内のユニット間相互接続は、スイッチ1210を介して確立される。スイッチは、商標HI−BAR(登録商標)を有するコンポーネントとして具現化することができる。例えば上記で論じるように、選択されたモジュールのそれぞれは、ノード間通信を達成するためにHI−BAR(登録商標)スイッチ接続を有することができる。さらなる実施形態では、スイッチ1210は、シャーシ内または複数シャーシアプリケーションにわたって負荷バランシング動作を実行するためにFPGAまたはダイレクトエグゼキューションロジックを含むことができる。スイッチ1210は、図9に関して詳細に論じられるように、ノード間およびシャーシ間通信のためのセキュアなプロトコルを実施するためのロジックをさらに含むことができる。
1つまたは複数の管理FPGAプロセッサ1201は、システム1200用のマザーボード上に配置することができ、1つまたは複数のFPGAアプリケーション102のデプロイメントをコントロールするためにシステム1200の他の部分と接続する働きをする。さらに、管理FPGAプロセッサ1201は、所望に応じて他のコントロールタスクを実行することができる。
I/Oノード1202、リコンフィギャラブル計算ノード1204、およびコモンメモリノード1206は、コモンシャーシ内のスロット内に固定された別個のノード上に具現化することができる。一実施形態では、4ノードシャーシは4つのノードを収容するためのスロットを含むことができる。特定のアプリケーションの開発についての要件に応じて、選択されたコンフィギュレーションは、1つのI/Oノード1202、2つのリコンフィギャラブル計算ノード1204、および1つのコモンメモリノード1206を含むことができる。より多くのメモリを利用するFPGAアプリケーションの場合、選択されたコンフィギュレーションは、1つのI/Oノード1202、1つのリコンフィギャラブル計算ノード1204、および2つのコモンメモリノード1206を含むことができる。複数の4ノードシャーシを有するFPGAアプリケーションの場合、FPGAコンパイルモジュール108がシャーシ間通信、およびノード間通信用の通信プロトコルを生成する、さまざまなコンフィギュレーションが利用可能である。
一実施形態では、FPGAシステム1200の使用は、セキュアな機器としてデプロイされる。代替的な実施形態では、FPGAシステム1200は、リコンフィギャラブルシステムのアテステーションを提供するために1つまたは複数のトラステッドプラットフォームモジュール(TPM)と共に使用される。さらに別の実施形態では、FPGAシステム1200は、第2の信頼できるシステムによって暗号化署名され、TPM内に封印されたキーによって有効であることが検証されたバイトコードを使用してプログラムされる。さらなる実施形態では、バイトコードの暗号化署名を検証するために使用されるキーは、ハードウェアセキュリティモジュール(HSM)機器である場合もそうでない場合もある、第2の外部の信頼できるシステムによって提供される。さらなる実施形態では、TPMは、FPGAアプリケーション内の複数の(またはそれぞれの)ハードウェアコンポーネントに使用される。さらに、FPGAアプリケーション102の段階的ロック解除は、1つまたは複数のTPMを使用して実行することができる。一実施形態では、FPGAアプリケーション102の段階的ロック解除を実行するために、複数のノードで複数のTPMを使用することができる。
一実施形態では、シャーシおよび/またはFPGAシステム1200は、金融取引処理、支払い承認、データ保護、トークン化、およびその他に必要とされるセキュリティおよびコンプライアンスのためのPCI−DSS、HTPAAおよびNIST規格などの、金融業界および健康業界の規格を満たすセキュアな暗号処理およびキー管理を使用する。1つの特定の例示的実施形態では、共通シャーシは、シャーシ内に埋め込まれた、またはシャーシ内に収容された単一のカードもしくはカートリッジ上に実装された耐タンパ性HSMも有することができる。別の実施形態では、シャーシが、自体が損なわれていることを検出した場合に、シャーシおよび/またはHSM全体について動作がホルトすることができるように、シャーシ自体をセキュアかつ耐タンパとして実装することができる。さらなる実施形態では、HSMはFPGAシステム1200を使用して実装される。さらに別の実施形態では、TPMは、HSMと共に、またはシャーシ上のHSMと協調して、またはFPGAシステム1200上で独立して使用することができる。
スイッチ1210は、スケーラブル、高帯域幅、低レイテンシのスイッチである。各スイッチ1210は、64ビットのアドレッシングならびにいくつかのノードに接続するための入力ポートおよび出力ポートをサポートすることができる。スイッチ1210は、メモリ内の特定の位置をアドレス指定することが[シャーシ]−[ノード]−[メモリ位置]の形式でアドレッシングされたメッセージであるように、複数のシャーシをアドレス指定するようにさらに拡張することができる。I/Oノード1202、リコンフィギャラブル計算ノード1204、およびコモンメモリノード1206はすべて、いかなるコンフィギュレーションにおいてもスイッチ1210に接続することができる。一実施形態では、総計の産出される2分割データ帯域幅16ポートあたり57.6GB/秒のために、各入力ポートまたは出力ポートは、産出されるデータペイロード3.6GB/秒を維持する。別の実施形態では、ポート間のレイテンシは、各ポートに実施される1ビットエラー訂正および2ビットエラー検出(SECDED)を伴って180nsである。別の実施形態では、スイッチ1210は多層コンフィギュレーションにおいて相互接続することもでき、2つの層が256個のノードをサポートすることを可能にする。
図11に示すように、I/Oノード1202は、イーサネット(登録商標)、Infiniband、またはI/Oノード1202に接続された別のスイッチ1210を使用するネットワーク接続を介して、システム1200に外部接続性を提供する。I/Oノード1202は、数千のソケット接続を扱うネットワークプロセッサ1220(例えば、カリフォルニア州San JoseのCavium社製のCavium(登録商標)Octeon(登録商標)III C78XXプロセッサ)を含むことができる。I/Oノード1202は、例えば、イーサネット(登録商標)用に外部ネットワークからシステム1200への2つの40GbE接続を提供することができる。ネットワークプロセッサ1220は、イーサネット(登録商標)から着信するネットワークトラフィックをコントロールFPGAインタフェース1222へのトラフィックに変換することができる。コントロールFPGAインタフェース1222は、FPGAアプリケーション102のセキュアなエッジを提供する。コントロールFPGAインタフェース1222は、I/Oノード1202に対するすべてのインバウンドトラフィックおよびアウトバウンドトラフィックについて、スイッチ1210との通信を管理する。ネットワークプロセッサ1220は、SSDデバイス1224および別個のSDRAMデバイス1226として示されるメモリユニットへもアクセスすることができる。別の実施形態では、I/Oノード1202は、FPGAを含むことができるか、またはFPGAはネットワークプロセッサ1220を置き換えることができ、および本明細書で論じるようにプログラムされることができる。別の実施形態では、I/Oノード1202は、ネットワークプロセッサ1220とコントロールFPGAインタフェース1222とを単一のFPGAとして組み合わせることができ、および本明細書で論じるようにプログラムされることができる。
図12に示すように、リコンフィギャラブル計算ノード1206は、任意選択の中央処理装置(CPU)1230、コントロールFPGA1232、ユーザロジックFPGA1234、ならびにSDRAM、SRAMおよび不揮発性メモリを含むメモリデバイスの集まり、を含む。一実施形態では、アプリケーションFPGAは、Altera(登録商標)Arria(登録商標)10 10AX115 FPGAである。コントロールチップFPGA1232は、CPU1230およびユーザロジックFPGA1234からアクセスも可能な、付属の共有メモリユニットを有する。コントロールチップFPGA1232は、スイッチ1210とのモジュール間通信用に2つのスイッチポートをさらに有する。
図13に示すように、コモンメモリノード1206はシステム1200に大きなメモリ機能を提供する。図示されているコモンメモリノード1206は、ブロックアドレッシング方式を使用することができる2つのDMAコントローラ1250および1252を含む。システム1200内のコモンメモリノード1206へのアクセスは、シャーシ内のユニット間で共有され、異なるシャーシにわたってさらにコンフィギュレーションすることができる。一例では、コモンメモリノード1206は、6ポートPCIeスイッチを介して接続された12個のソリッドステートドライブ(SSD)デバイスを含み、コモンメモリとして機能する最大48テラバイト(TB)の不揮発性記憶を提供する。各DMAコントローラ1250および1252は、システム1200の効率的使用を最大にするために、データパッキング、ストライプ状アクセス、およびスキャッタ/ギャザなどの複雑なDMAプリフェッチおよびデータアクセス機能を実行することができる。
同じ相互接続を使用するキャッシュベースのマイクロプロセッサよりも10倍を超える高い相互接続効率が、これらの動作では一般的である。各入力ポートまたは出力ポートは、各ポートに実施される1ビットエラー訂正および2ビットエラー検出(SECDED)を伴って少なくとも3.6GB/秒の産出データペイロードを維持する。FPGAコントローラ1250および1252は、複雑なダイレクトメモリアクセス(複雑なDMA)をサポートすることを含んで、メモリ動作をコントロールするためのものである。一実施形態では、コントローラは、メモリにアクセスするために複雑なダイレクトメモリアクセス(複雑なDMA)を使用するようにプログラムされる。複雑なDMAを使用すると、メモリアクセスコマンドにロジックを含めることにより、書き込み時に、メモリに書き込まれるべきデータにロジックを適用することができる。スイッチ1210は、複雑なDMAを使用することにより、あるノード上のコンポーネントが別のノード内のメモリに直接アクセスすることを可能にする。
図14は、アプリケーションパッケージ1300から、4ノードシャーシ1200−1および4ノードシャーシ1200−2として示される複数のシャーシ上にデプロイされた、例示的なFPGAアプリケーション102を概略的に示す。各シャーシは、シャーシ1200−1および1200−2から受信される通信および出て行く通信の両方のために、それぞれI/Oノード1202−1および1202−2を備えている。I/Oノード1202−1および1202−2のそれぞれは、FPGAアプリケーション102全体にわたる通信のための指定されたプロトコルエグゼキューションロジックを含む。例えば、I/Oノード1202−1および1202−2は、外部メッセージ(すなわち、FPGAアプリケーション102の進入ポイントに対して)を処理する特定のプロトコル検証エレメント(またはコンポーネント)を含むことができる。さらに、I/Oノード1202−1は、計算ノード1204−1および1204−2へ直接送信されるべきメッセージを生成するために使用されるロジックを含むことができる。これらのメッセージはシャーシ間通信なので、このタイプの通信に使用されるプロトコルは、外部メッセージの受信に使用されるものとは異なるものとすることができる。さらになお、I/Oノード1202−1は、メモリノード1206−1と通信するための異なるプロトコルを含むことができる。アプリケーションパッケージ1300は、FPGAアプリケーション102内の各ノードが、図9に詳述される方法で、FPGAアプリケーション102へのおよびFPGAアプリケーション102内での通信の両方について最大の柔軟性およびセキュリティ選択を可能にするように実施される別個のプロトコルを含むことを可能にする、ダイレクトエグゼキューションロジックを含むことができる。
同様に、図15は、アプリケーションパッケージ1302から形成され、さまざまなコンフィギュレーションのノード1310−1〜1310−32およびI/Oノード1202−1〜1202−4として示される32個のノードを有する単一のシャーシ上にデプロイされた、FPGAアプリケーション102を概略的に示す。アプリケーションパッケージ1302は、上記に論じた方法でノード1310のそれぞれの上にデプロイされるべきダイレクトエグゼキューションロジックを含む。さらに、ノード間の通信は、図9に関して上記に論じたように実施することができる。
プロトコルのさまざまな使用例が、図16A〜図16Eに概略的に示されている。プロトコルは、本明細書に記載されている技術、および特に図9に関して上記で論じた構造および手法、のいずれかを使用することができる。図16Aにおいて、シャーシ内プロトコルP1は、ストリーム接続コードSC1を有するFPGA計算ノード1801とストリーム接続コードS2を有するFPGA計算ノード1802との間の通信のためにシャーシ1800内で使用される。FPGA計算ノード1801および1802は同じシャーシ1800内にあり、所望のプロトコルP1は、ノード間、詳細にはストリーム接続コードSC1とストリーム接続コードSC2との間で通信するのに使用される。いくつかの実施形態では、プロトコルP1への準拠を検証し、および正しいデスティネーションへルーティングするためにスイッチを利用することができる。さらなる実施形態では、シャーシ内通信において複数のプロトコルを使用することができる。
図16Bは、第1のシャーシ1810と第2のシャーシ1811との間の通信にプロトコルP2を使用することの概略図である。詳細には、シャーシ1810内にストリーム接続コードSC3を有するI/Oノード1812は、プロトコルP2を使用して、シャーシ1811内にストリーム接続コードSC4を有するI/Oノード1813に通信する。一実施形態では、2つのシャーシ1810および1811はイーサネット(登録商標)または光リンクを介して接続され、プロトコルP2はシャーシ1810と1811との間の通信のために所望のセキュリティプロファイルを提供するように選択される。I/Oノード1812および1813の一方または両方は、所望に応じてFPGAプロセッサとすることができる。
図16Cは、ストリーム接続コードSC6を使用するメモリコントローラノード1822を介してメモリにアクセスするために、ストリーム接続コードSC5を使用するFPGA計算ノード1821のためにプロトコルP3が利用される、シャーシ1820の概略図である。一実施形態では、プロトコルP3は、要求元FPGA計算ノード1821が、メモリコントローラノード1822に接続されたメモリにアクセスすることを許可されることを保証することができる。メモリコントローラノード1822は、所望に応じてFPGAまたは他のプロセッサとして具現化することができる。さらなる実施形態では、読み取りおよび書き込み動作に異なるプロトコルを使用することができる。
図16Dは、シャーシ1830内で使用されるプロトコルP4を概略的に示す。このシナリオでは、ストリーム接続コードSC7を使用するネットワークプロセッサ1831は、プロトコルP4を使用して、ストリーム接続コードSC8を使用するFPGA計算ノード1832に通信する。ネットワークノード1831は、FPGA計算ノード1832およびストリーム接続コードSC8に動作を送信するためにプロトコルP4を使用する。
図16Eは、第1のシャーシ1840と第2のシャーシ1842との間の通信のために使用されるプロトコルP5を概略的に示す。詳細には、シャーシ1840内のストリーム接続コードSC9を有するHI−BAR(登録商標)スイッチ1841は、プロトコルP5を使用して、シャーシ1842内のストリーム接続コードSC10を有するHI−BAR(登録商標)スイッチ1843へ通信する。一実施形態では、2つのシャーシ1840および1842は光リンクを介して接続され、プロトコルP5はシャーシ1840と1842との間の通信に所望のセキュリティおよびレイテンシプロファイルを提供するように選択される。HI−BAR(登録商標)スイッチはどちらもFPGAプロセッサベースである。
プロトコルP1〜P5は、所望に応じていくつかの異なる方法で、そしていくつかの異なる場合に使用することができる。さらに、FPGAアプリケーションについて、任意の異なる数のプロトコルを使用することができる。これらのプロトコルはさらに、所望に応じて周期的に変化させることができ、さまざまな組合せで使用することができる。したがって、特定のFPGAアプリケーションのセキュリティを強化することができる。
本発明を好ましい実施形態を参照しつつ説明してきたが、当業者であれば、本発明の精神および範囲から逸脱することなく形式および詳細において変更を加えることができることを理解するであろう。本発明のさまざまな実施形態は、その詳細を説明する目的で、および当業者が本発明を製造および使用することを可能にするために上記に記載されている。開示された実施形態の詳細および機能は、多くの変形および修正が当業者には容易に明らかになるので、限定することを意図していない。それに応じて、本開示の範囲は、広く解釈されるべきであり、添付の特許請求の範囲およびそれらの法的な均等物の範囲および趣旨の範囲内となるすべての変形形態および修正形態を含むことが意図されている。
Claims (8)
- 複数のコードブロックから生成される複数の回路へのデータの第1のデジタルビットストリームをプロセッサによって受信する段階と、
前記複数の回路を介してデータの前記第1のデジタルビットストリームを処理する段階と並行して、前記第1のデジタルビットストリームを消費する前記複数の回路のうちの少なくとも1つの実行を示す使用値を生成する段階と、
前記プロセッサによって、前記1つまたは複数の使用値を示す第2のデジタルビットストリームを送信する段階と
を備える、コンピュータ実施方法。 - 前記プロセッサは、FPGAである、請求項1に記載のコンピュータ実施方法。
- 前記第1のデジタルビットストリームを前記複数の回路で処理する前記段階、および1つまたは複数の使用値を生成する前記段階は、決定論的に行われる、請求項1または2に記載のコンピュータ実施方法。
- 複数の使用値を総計する段階をさらに備える、請求項1から3の何れか一項に記載のコンピュータ実施方法。
- 使用値を生成する前記段階は、前記プロセッサ上の1つまたは複数のメータリング回路によって行われる、請求項1から4の何れか一項に記載のコンピュータ実施方法。
- 前記使用値は、時間間隔を示す、請求項1から5の何れか一項に記載のコンピュータ実施方法。
- 前記使用値は、前記複数の回路のうちの1つが実行された複数の回数を示す、請求項1から6の何れか一項に記載のコンピュータ実施方法。
- 前記使用値は、前記複数の回路のうちの1つまたは複数の実行の総計を示す、請求項1から7の何れか一項に記載のコンピュータ実施方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662409855P | 2016-10-18 | 2016-10-18 | |
US62/409,855 | 2016-10-18 | ||
PCT/US2017/057274 WO2018075696A1 (en) | 2016-10-18 | 2017-10-18 | Fpga platform as a service (paas) |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019537784A true JP2019537784A (ja) | 2019-12-26 |
Family
ID=62018843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019520782A Pending JP2019537784A (ja) | 2016-10-18 | 2017-10-18 | FPGAプラットフォームアズアサービス(PaaS) |
Country Status (6)
Country | Link |
---|---|
US (1) | US20190250941A1 (ja) |
EP (1) | EP3513336A4 (ja) |
JP (1) | JP2019537784A (ja) |
CN (1) | CN110121709A (ja) |
CA (1) | CA3040887A1 (ja) |
WO (1) | WO2018075696A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194935B2 (en) * | 2018-03-07 | 2021-12-07 | Iurii V. Iuzifovich | Method of securing devices used in the internet of things |
US11128646B1 (en) * | 2018-04-16 | 2021-09-21 | Trend Micro Incorporated | Apparatus and method for cloud-based accelerated filtering and distributed available compute security processing |
CN109144722B (zh) * | 2018-07-20 | 2020-11-24 | 上海研鸥信息科技有限公司 | 一种多应用高效共用fpga资源的管理系统及方法 |
US11750531B2 (en) * | 2019-01-17 | 2023-09-05 | Ciena Corporation | FPGA-based virtual fabric for data center computing |
CN114144760A (zh) * | 2019-06-11 | 2022-03-04 | Smh技术(股份)责任有限公司 | 用于电子器件的编程的装置 |
US11397656B2 (en) | 2019-11-04 | 2022-07-26 | Microsoft Technology Licensing, Llc | Telemetry generation for in-field hardware testing |
CN111176962B (zh) * | 2019-12-02 | 2021-09-10 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
WO2021252423A1 (en) * | 2020-06-08 | 2021-12-16 | Liquid-Markets-Holdings, Incorporated | Hardware-based transaction exchange |
CN115174654B (zh) * | 2022-07-14 | 2023-05-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于FPGA和InfiniBand网络的异地通信方法及系统 |
CN115859879B (zh) * | 2023-02-28 | 2023-05-09 | 湖南泛联新安信息科技有限公司 | 一种基于fpga云平台的硬仿验证流程实现的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7895304B1 (en) * | 2002-04-26 | 2011-02-22 | Ericsson Ab | Subscriber service selection over non-channelized media |
US7987373B2 (en) * | 2004-09-30 | 2011-07-26 | Synopsys, Inc. | Apparatus and method for licensing programmable hardware sub-designs using a host-identifier |
US20100223237A1 (en) * | 2007-11-05 | 2010-09-02 | University Of Florida Research Foundation, Inc. | Lossless data compression and real-time decompression |
US8321558B1 (en) * | 2009-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Dynamically monitoring and modifying distributed execution of programs |
JP2012088901A (ja) * | 2010-10-19 | 2012-05-10 | Fujitsu Ltd | ソフトウェア管理装置、ソフトウェア管理方法およびソフトウェア管理プログラム |
US8170334B2 (en) * | 2011-10-13 | 2012-05-01 | University Of Dayton | Image processing systems employing image compression and accelerated image decompression |
US9443269B2 (en) * | 2012-02-16 | 2016-09-13 | Novasparks, Inc. | FPGA matrix architecture |
CN106415583A (zh) * | 2014-01-22 | 2017-02-15 | 英派尔科技开发有限公司 | 通过现场可编程门阵列的电压测量结果来检测恶意软件 |
US10715587B2 (en) * | 2014-04-11 | 2020-07-14 | Maxeler Technologies Ltd. | System and method for load balancing computer resources |
-
2017
- 2017-10-18 CA CA3040887A patent/CA3040887A1/en not_active Abandoned
- 2017-10-18 WO PCT/US2017/057274 patent/WO2018075696A1/en unknown
- 2017-10-18 JP JP2019520782A patent/JP2019537784A/ja active Pending
- 2017-10-18 US US16/343,401 patent/US20190250941A1/en not_active Abandoned
- 2017-10-18 EP EP17862749.3A patent/EP3513336A4/en not_active Withdrawn
- 2017-10-18 CN CN201780074722.3A patent/CN110121709A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190250941A1 (en) | 2019-08-15 |
WO2018075696A1 (en) | 2018-04-26 |
CA3040887A1 (en) | 2018-04-26 |
EP3513336A4 (en) | 2020-06-03 |
CN110121709A (zh) | 2019-08-13 |
EP3513336A1 (en) | 2019-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019537784A (ja) | FPGAプラットフォームアズアサービス(PaaS) | |
Gao et al. | Lyra: A cross-platform language and compiler for data plane programming on heterogeneous asics | |
US10447770B2 (en) | Blockchain micro-services framework | |
US20110289485A1 (en) | Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip | |
US9075623B2 (en) | External auxiliary execution unit interface for format conversion of instruction from issue unit to off-chip auxiliary execution unit | |
Zhang et al. | NFV platforms: Taxonomy, design choices and future challenges | |
Ksiezopolski | QoP-ML: Quality of Protection modelling language for cryptographic protocols | |
Sharaf et al. | Extended berkeley packet filter: An application perspective | |
Scopelliti et al. | End-to-End Security for Distributed Event-Driven Enclave Applications on Heterogeneous TEEs | |
CN107111495A (zh) | 用于虚拟和接口方法调用的装置和方法 | |
Kunkel | Simulating parallel programs on application and system level | |
Derin et al. | A middleware approach to achieving fault tolerance of kahn process networks on networks on chips | |
Joseph et al. | A cycle-accurate network-on-chip simulator with support for abstract task graph modeling | |
Pisani et al. | Design and Commissioning of the First 32-Tbit/s Event-Builder | |
US11409874B2 (en) | Coprocessor-accelerated verifiable computing | |
Liao et al. | A modular simulator framework for network-on-chip based manycore chips using UNISIM | |
Layeb et al. | Metrics, platforms, emulators, and testnets for ethereum | |
Thid | A network on chip simulator | |
Muller | Execution of smart contracts with ARM TrustZone | |
US20240184896A1 (en) | In-band class of service signaling for cryptographic services on an hsm | |
Kourtis et al. | Towards Continuous Development for Quantum Programming in Decentralized IoT environments | |
髙橋 et al. | Programmable Interconnect Control Adaptive to | |
Gulati et al. | Proceedings of 2016 USENIX Annual Technical Conference | |
Tasoulas | Towards High Performance Dynamic Cloud Environments | |
Abalde et al. | Development of a scalable, fault tolerant, and low cost cluster-based e-payment system with a distributed functional Kernel |