JP2021502648A - Fpgaクラウドホストの開発方法およびシステム - Google Patents

Fpgaクラウドホストの開発方法およびシステム Download PDF

Info

Publication number
JP2021502648A
JP2021502648A JP2020526207A JP2020526207A JP2021502648A JP 2021502648 A JP2021502648 A JP 2021502648A JP 2020526207 A JP2020526207 A JP 2020526207A JP 2020526207 A JP2020526207 A JP 2020526207A JP 2021502648 A JP2021502648 A JP 2021502648A
Authority
JP
Japan
Prior art keywords
file
development
fpga
management platform
design
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
Application number
JP2020526207A
Other languages
English (en)
Other versions
JP2021502648A5 (ja
Inventor
リアン チェン
リアン チェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2021502648A publication Critical patent/JP2021502648A/ja
Publication of JP2021502648A5 publication Critical patent/JP2021502648A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/76Protecting 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

FPGAクラウドホストの開発方法およびシステムが提供される。本方法は、開発管理プラットフォームによって実行することができ、開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれ、かつFPGAクラウドホストのFPGAに対応する実際の制約ファイルの有効性を検出することと、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理することと、合成処理から得られたバーナーファイルをFPGAに書き込むことと、を含む。実際の制約ファイルの有効性が検出され、それによりFPGAハードウェアに対するユーザーの悪意のある攻撃を防ぐ。

Description

本出願は、全体が参照によって本明細書に組み込まれる、2017年11月13日に出願され、「FPGA CLOUD HOST DEVELOPMENT METHOD AND SYSTEM」という表題の中国特許出願第2017/11117784.6号の優先権を主張する。
本発明は、インターネット技術の分野に関し、より詳細には、FPGAクラウドホストの開発方法およびシステムに関する。
FPGAクラウドホストは、FPGAクラウドサーバとも呼ばれ、フィールドプログラマブルゲートアレイ(FPGA)に基づくコンピューティングサービスである。一方で、これは、並列演算処理を通してサーバーの計算パフォーマンス、エネルギー効率比およびリアルタイム計算を改善する異機種コンピューティングプラットフォームに属するハードウェアアーキテクチャである。FPGAクラウドホストはまた、アプリケーションのための基礎をなすハードウェアアクセラレーションを実装する。他方で、クラウドサービスは、ユーザーがオンデマンドでFPGAの使用料を支払い得るように、ユーザーに提供され、それによりFPGAの使用コストを大幅に削減できる。
FPGAクラウドホストは、FPGAデバイスを伴う共通のクラウドホスト(仮想マシン)であると理解され得る。FPGAクラウドホストを購入後、ユーザーがFPGAを使用したい場合、自分がバーナーファイルを得るためにFPGAを開発し、それからファイルをFPGAに書き込む必要がある。それにより、FPGAはユーザーによって開発された機能を実装する。
従来のFPGA開発環境およびプロセスでは、ユーザーが自己のオフライン環境、つまり、ユーザー側環境においてFPGAを開発およびデバッグし、FPGAハードウェアは開発者によって所有される。しかしながら、FPGAクラウドホストのコンテキストでは、FPGAの開発は、いくつかの新しいセキュリティ課題に直面し、ユーザーがFPGAを開発し得ることを保証するだけでなく、悪意のある攻撃を防ぐためにクラウドホストのセキュリティも保証することが必要である。
上記を考慮して、ユーザーによるFPGAの開発を達成し、FPGAハードウェアに対する悪意のある攻撃を防ぐためのFPGAクラウドホストの開発方法およびシステムが、本発明の実施形態において提供される。
第1の態様では、開発管理プラットフォームに適用されるFPGAクラウドホストの開発方法が、本発明の実施形態において提供され、本方法は、
開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれる実際の制約ファイルの有効性を検出することであって、実際の制約ファイルがFPGAクラウドホストのFPGAに対応する、検出することと、
実際の制約ファイルが有効であるという検出に応答して、設計ファイルを合成処理することと、
合成処理から得られたバーナーファイルをFPGAに書き込むことと、を含む。
任意に、合成処理から得られたバーナーファイルをFPGAに書き込む前に、本方法は、
合成処理から得られた合成レポートを開発デバイスにフィードバックすることをさらに含み、
合成処理から得られたバーナーファイルをFPGAに書き込むことが、
開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応するバーナーファイルをFPGAに書き込むことを含む。
第2の態様では、開発デバイスに適用されるFPGAクラウドホストの開発方法が、本発明の実施形態において提供され、本方法は、
設計ファイルを開発管理プラットフォームにアップロードすることであって、設計ファイルは、開発管理プラットフォームによって、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理するためのFPGAクラウドホストのFPGAに対応する実際の制約ファイルを含む、アップロードすることと、
開発管理プラットフォームによって送信された合成レポートを受信することと、
合成レポートに従ってトリガーされた書き込み命令を開発管理プラットフォームに送信することであって、書き込み命令が設計ファイルに対応するバーナーファイルをFPGAに書き込むように命令する、送信することと、を含む。
第3の態様では、FPGAクラウドホストの開発システムが、本発明の実施形態に提供され、
開発デバイスと、開発デバイスと遠隔通信する開発管理プラットフォームと、FPGAクラウドホストにおけるFPGAとを含み、
開発デバイスは、FPGAに対応する実際の制約ファイルを含む設計ファイルを設計し、得られた設計ファイルを開発管理プラットフォームにアップロードするように構成され、
開発管理プラットフォームは、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理し、合成処理から得られたバーナーファイルをFPGAに書き込むように構成される。
例示的な設計では、プロセッサおよびメモリは、上記開発管理プラットフォームの構造に含まれる。メモリは、上記第1の態様におけるFPGAクラウドホストの開発方法を実施するために開発管理プラットフォームをサポートするためのプログラムを記憶するように構成され、プロセッサはメモリに記憶されたプログラムを実行するように構成される。開発管理プラットフォームは、別のデバイスまたは通信ネットワークと通信するために開発管理プラットフォーム用通信インターフェースをさらに含み得る。
開発管理プラットフォームによって使用されるコンピュータソフトウェア命令を記憶するように構成されたコンピュータ記憶媒体は、本発明の実施形態において提供され、上記第1の態様におけるFPGAクラウドホストの開発方法を実施するためのプログラムを含む。
別の例示的な設計では、プロセッサおよびメモリは、上記開発デバイスの構造に含まれる。メモリは、上記第2の態様におけるFPGAクラウドホストの開発方法を実施するために開発デバイスをサポートするためのプログラムを記憶するように構成され、プロセッサはメモリ中に記憶されたプログラムを実行するように構成される。開発デバイスは、別のデバイスまたは通信ネットワークと通信するために開発デバイス用の通信インターフェースをさらに含み得る。
開発デバイスによって使用されるコンピュータソフトウェア命令を記憶するように構成された別のコンピュータ記憶媒体は、本発明の実施形態において提供され、上記第2の態様におけるFPGAクラウドホストの開発方法を実施するためのプログラムを含む。
本発明の実施形態において提供されたFPGAクラウドホストの開発方法およびシステムによれば、ユーザーは、FPGA用のユーザーによって実際に設計された実際の制約ファイルを含む設計ファイルを得るためにユーザー側における開発デバイスでFPGAを開発および設計し、それから開発デバイスを通して設計ファイルを開発管理プラットフォームにアップロードし得る。開発管理プラットフォームは、制約ファイルを変更することによってFPGAをユーザーが悪意を持って攻撃するのを防ぐために実際の制約ファイルの有効性を検出し、それによりFPGAハードウェアのセキュリティを保証する。
本発明の実施形態または従来技術における技術的解決策をより明確に説明するために、実施形態または従来技術の説明で使用される添付図面を以下に簡単に紹介する。以下の説明における添付図面は、単に本発明のいくつかの実施形態を表すことは明らかである。当業者はまた、創造的努力なしに添付図面に従って他の図面を得ることができる。
本発明の一実施形態によるFPGAクラウドホストの開発システムの実施形態1の概略構造図である。 本発明の一実施形態によるFPGAクラウドホストの開発システムの実施形態2の概略構造図である。 本発明の一実施形態によるFPGAクラウドホストの開発方法の実施形態1のフローチャートである。 本発明の一実施形態によるFPGAクラウドホストの開発方法の実施形態2のフローチャートである。 本発明の一実施形態による開発管理プラットフォームの概略構造図である。 本発明の一実施形態による開発デバイスの概略構造図である。
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、本発明の実施形態における技術的解決策を、本発明の実施形態における添付図面を参照して以下に明確および完全に説明する。説明される実施形態は、本発明の実施形態のすべてではなく一部にすぎないことは明らかである。創造的努力なしに本発明の実施形態に基づいて当業者によって得られた全ての他の実施形態は、本発明の保護範囲内に包含される。
本発明の実施形態で使用される用語は、特定の実施形態を説明する目的のためだけであり、本発明を限定することを意図していない。本発明の実施形態および添付の特許請求の範囲で使用される単数形「1つ(one)」、「前記(said)」および「その(the)」はまた、文脈において他の意味が明確に示されていない限り、複数形を含むことが意図され、一般に「複数の」には、少なくとも2つが含まれるが、少なくとも1つが含まれるケースを除外しない。
このテキストで使用される「および/または」という用語は、関連付けられた目的語を説明する単なる関連付けであることを理解すべきであり、3つの関係性があり得ることを示している。例えば、Aおよび/またはBは、Aのみが存在する、AとBの両方が存在する、Bのみが存在するという3つのケースを示し得る。さらに、このテキスト中の文字「/」は、一般に文字の前後の関連付けられた目的語が「or」関係にあることを意味する。
文脈に応じて、本明細書で使用される「もし〜ならば」および「〜の場合には」という単語は、「...するとき(when)」、「...するとき(as)」または「決定したことに応答して」または「検出したことに応答して」と解釈され得る。同様に、文脈に応じて、「もし決定するならば」または「もし(既定の条件またはイベントを)検出するならば」というフレーズは、「決定するときは」もしくは「決定したことに応答して」または「(既定の条件またはイベントを)検出するときは」もしくは「(既定の条件またはイベントを)検出したことに応答して」と解釈され得る。
「含む」、「備える」という用語、またはそれらの任意の他の変形は、一連の要素を含む商品またはシステムが、明確にリストされる要素を含むだけでなく、明確にリストされない他の要素、または商品やシステムに固有の要素も含むように、排他的包含をカバーするように意図されていることも留意すべきである。それ以上の制限なしに、「...を含む」という表現によって定義された要素は、他の同一要素もまた、その要素を含む商品またはシステムに存在し得ることを除外しない。
さらに、本発明の実施形態におけるステップ間のシーケンスは調整可能であり、ステップは以下に示されたシーケンスで必ずしも実行されないことに留意する価値がある。
図1は、本発明の一実施形態によるFPGAクラウドホストの開発システムの実施形態1の概略構造図である。図1に示すように、システムは、
開発デバイス、開発デバイスと遠隔通信する開発管理プラットフォーム、およびFPGAクラウドホストのFPGAを含む。
開発デバイスは、ユーザー側で所有される開発デバイスであり、開発管理プラットフォームは、ネットワーク側またはクラウド管理プラットフォームであり、これは、例えば、サーバーであり得る。開発デバイスおよび開発管理プラットフォームは、クライアント端末とサーバーとの関係として理解され得、つまり、開発デバイスは、ユーザー開発をサポートするクライアント端末を提供され得る。
開発デバイスは、ユーザーによって選択され、FPGA開発用のデバイスである。任意に、ユーザーのコンピュータ、またはFPGAクラウドホストの仮想マシン等、ユーザーのオフラインデバイスであり得る。一般に、ユーザーは、コーディング、制約設計、および合成レポートの閲覧等、このデバイスでFPGA設計および開発に関連した作業を実行し得る。
詳細には、開発デバイスは、ユーザーが設計ファイルを設計し、得られた設計ファイルを開発管理プラットフォームにアップロードできるように構成される。設計ファイルは、FPGAに対応する実際の制約ファイルを含む。それに応じて、開発管理プラットフォームは、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理し、合成処理から得られたバーナーファイルをFPGAに書き込むように構成される。
任意の実施形態では、開発デバイスはさらに、合成処理から得られ、開発管理プラットフォームによってフィードバックされた合成レポートを受信し、合成レポートによってトリガーされた書き込み命令を開発管理プラットフォームに送信するように構成される。それに応じて、開発管理プラットフォームはさらに、合成処理から得られた合成レポートを開発デバイスにフィードバックし、書き込み命令に従って合成処理から得られたバーナーファイルをFPGAに書き込むように構成される。
実際のアプリケーションでは、ユーザーは、開発デバイスにおいて自分自身が必要とする開発ファイル用のコードを書き込み、最終的に設計ファイル形成するために書き込まれたコードをコンパイルおよびデバッグし得る。設計ファイルは、実際の制約ファイルと呼ばれる、実際に設計された制約ファイルだけでなくユーザーによって書き込まれたコードも含み得る。
書き込まれたコードがコンパイルされるとき、多くの場合、FPGAの制約ファイルが必要になり、テンプレート制約ファイルと呼ばれ、実際の制約ファイルと区別される。したがって、開発デバイスはさらに、テンプレート制約ファイルを要求するために、ユーザーによってトリガーされた開発開始動作に応答して開発要求を開発管理プラットフォームに送信するように構成される。したがって、開発管理プラットフォームはさらに、開発要求に応答してテンプレート制約ファイルを開発デバイスに送信するように構成される。
ユーザーは、自分で購入したFPGAクラウドホストを開発し、開発管理プラットフォームは、統合管理プラットフォームとみなすことができ、これは、異なるユーザーがそれぞれのFPGAクラウドホストを開発することを支援し得る。したがって、ユーザーのFPGAクラウドホスト用の識別情報の設定項目は、開発デバイスにおいて設けることができる。ユーザーが設定項目を書き込み、あらかじめ設定された制御またはメニュー項目をトリガーした後、ユーザーが開発開始動作をトリガーしたとみなされる。したがって、FPGAクラウドホストの識別情報は、開発管理プラットフォームが、識別情報に基づいてFPGAクラウドホストでFPGAのテンプレート制約ファイルを取得し、得られたテンプレート制約ファイルを開発デバイスにフィードバックするように開発デバイスによって開発管理プラットフォームに送信される開発要求で伝達され得る。任意で、複数のFPGAクラウドホスト中のFPGAに対応するテンプレート制約ファイルは、FPGAクラウドホストの識別情報をストレージインデックスとすることによって開発管理プラットフォームに事前記憶され得る。
一般に、本発明の実施形態において述べられた制約ファイルの機能は、FPGA入出力信号がバインドされるチップピン、つまり、FPGAのどのピンから信号が入力され、およびFPGAのどのピンから信号が出力されるかを定義することである。加えて、制約ファイルはさらに、一部の他の制約だけでなく、FPGAのさまざまなクロック関係、レベル規格等を定義する。
開発管理プラットフォームは、ユーザーによって開発されるFPGAのテンプレート制約ファイルを、開発デバイスを通してユーザーに提供する。しかしながら、実際の開発中に、ユーザーは、テンプレート制約ファイル上で修正、削除、追加および他の動作を実行することができ、それにより実際に設計された実際の制約ファイルを形成し、その動作がFPGA自体ならびにその周辺のハードウェアおよびソフトウェアシステムにダメージを与え得る。したがって、FPGAのセキュリティを保証し、かつユーザーからの悪意のある攻撃を防ぐために、ユーザーがサブミットした後、すなわち、開発デバイスを通して開発管理プラットフォームに設計ファイルをアップロードした後、開発管理プラットフォームは、設計ファイルの有効性を検出し、特に設計ファイル中の実際の制約ファイルの有効性を検出する必要がある。任意に、開発管理プラットフォームは、FPGAに対応し、ローカルに記憶されたテンプレート制約ファイルと実際の制約ファイルを比較し、そのテンプレート制約ファイルが実際の制約ファイルと一致していることを比較の結果が示す場合、実際の制約ファイルは有効であると決定し得る。テンプレート制約ファイルが実際の制約ファイルと一致していることは、この2つのファイルに含まれるさまざまな制約が相応に同じであることを意味する。例えば、信号が実際の制約ファイルにおいてFPGAのピンから入力されるように制約されている場合、信号がテンプレート制約ファイルにおいてもピンから入力されるように制約されるとすると、ピン上の信号入力制約は2つのファイルにおいて一致している。
実際の制約ファイルが無効であることを開発管理プラットフォームによって検出されるとき、エラープロンプトメッセージは、ユーザーが設計ファイルを再設計できるように開発デバイスに送信され得る。実際の制約ファイルが有効であることを開発管理プラットフォームによって検出されるとき、開発デバイスによってアプロードされる設計ファイルは、そのときに合成処理され得る。実際のアプリケーションでは、合成処理は既存の合成ツールを使用することによって実現され得る。したがって、開発管理プラットフォームには、合成ツールが設けられている。
合成処理は、分析、合成、および最適化の3つのステップを含む。設計ファイルは、ハードウェア記述言語(HDL)で記述され得る。分析とは、標準HDL文法規則を使用することによってHDL文法HDL設計ファイルを分析し、文法エラーを訂正することを意味する。合成とは、選択されたFPGA構造とデバイスを対象としてHDLおよびFPGAネットリストファイルを論理的に合成し、設計ファイルを実際のゲートレベル回路ではなく、ANDゲート、ORゲート、NONゲート、RAM、フリップフロップ、および他の基本論理ユニットから成る論理接続のネットリストにコンパイルすることを意味する。最適化とは、ユーザーの設計制約に従って速度および領域を論理的に最適化してFPGAレイアウトおよび配線ツールによる使用のために最適化されたFPGAネットリストファイルを生成することを意味する。合成完了後、多くの合成レポートおよびバーナーファイルが出力され得る。例えば、合成レポートは、タイミングレポート、電力レポート、温度レポート等を含み、バーナーファイルは、アプリケーションによってコンパイルされた実行可能ファイルと比較され得る。合成後のリソース使用やレベル情報等、合成ステータスおよび合成結果は、レポートファイルにリストされる。
FPGAクラウドホストの開発プロセスでは、ユーザーは、開発の繰り返しを回避するために、サードパーティのIPコア、つまり、サードパーティの知的財産コアを使用し得ることを留意すべきである。ユーザーは、認証後(購入または他の方法による)、これらのIPコアを使用し得る。
簡単に言えば、IPコアは機能を実装するモジュールである。ユーザーは、対応する機能を実装するためにアプリケーションコードのIPコアを直接呼び出すことができ、これは、開発の繰り返しを回避するために、既存機能モジュールを直接使用することに相当する。
サードパーティのIPコアは、ユーザーの開発効率を改善し、開発の繰り返しを回避することができるが、一旦IPコアが拡散されると、ユーザーは他の認証されていないユーザーにIPコアを提供することができるか、またはIPコアをインターネット等に拡散することができ、「1度の購入ですべて使用できる」という問題につながるため、ユーザーが自分自身のデバイスにIPコアを出力するのを技術的に防ぐ必要がある。したがって、サードパーティのIPコアの使用は安全であり、サードパーティのIPコアが認証されていないユーザーに拡散されないことを保証するために、サードパーティのIPコアを保護する解決策が、本発明の実施形態においてさらに提供される。
具体的には、開発管理プラットフォームは、あらかじめユーザーに認証された利用可能なサードパーティのIPコアを取得し、サードパーティのIPコアをローカルに記憶することができ、つまり、ユーザーが利用できるサードパーティのIPコアは、開発管理プラットフォームに記憶される。上述したFPGAクラウドホストの識別情報の設定項目のように、開発デバイスは、ユーザーIDの設定項目をさらに提供することができ、それによりユーザーIDも、上記の開発要求に含めることができる。したがって、対応するサードパーティのIPコアは、サードパーティのIPコアが維持されるサーバーからユーザーIDに基づいて開発管理プラットフォームによって取得され得る。
本発明の実施形態では、サードパーティのIPコアは開発管理プラットフォームに記憶されるが、ユーザーに公開されることはなく、つまり、ユーザーの開発デバイスに提供されることはない。
ユーザーが開発プロセスにおいてサードパーティのIPコアを使用する必要があるとき、それは、呼び出しによって使用され得る。例えば、ユーザーが利用できるサードパーティのIPコアの機能記述および入力パラメータは、ユーザーが実際の要求に従ってサードパーティのIPコアを呼び出すことを選択し得るように、ユーザーに提供され得る。したがって、ユーザーが開発プロセスにおいてサードパーティのIPコアを呼び出す必要があるとき、ユーザーは設計ファイル中のサードパーティのIPコアを呼び出すための呼び出しコードのみを書き込む必要があり、これは、どのサードパーティのIPコアが呼び出される必要があるのかを宣言することに相当する。
ユーザーがサードパーティのIPコアを呼び出すとき、開発管理プラットフォームはさらに、サードパーティのIPコアが設計ファイルに呼び出される場合、呼び出されたサードパーティのIPコアおよび設計ファイルを合成処理し、合成処理から得られた事前定義された非機密合成レポートを開発デバイスにフィードバックするように構成され、呼び出されたサードパーティのIPコアの情報は、非機密合成レポートに含まれない。
つまり、サードパーティのIPコアがユーザーの設計ファイルに呼び出されるとき、設計ファイルに加えて、呼びだれたサードパーティのIPコアもまた合成処理の入力に含まれる。任意に、サードパーティのIPコアが呼び出されるか否か、およびどのサードパーティのIPコアが呼び出されるかは、サードパーティのIPコアの名前が設計ファイルに含まれるか否かを分析することにより開発管理プラットフォームによって決定され得る。
さらに、本発明の実施形態において、サードパーティのIPコアを保護するために、サードパーティのIPコアをユーザーに公開しないことに加えて、サードパーティのIPコアが、リバースエンジニアリングまたは抽出され得る合成結果の合成レポートは、ユーザーに提供されない。したがって、呼び出されたサードパーティのIPコアおよび設計ファイル上で合成処理を実行後、開発管理プラットフォームは、合成処理の結果において事前定義された非機密合成レポートのみを開発デバイスにフィードバックし、呼び出されたサードパーティのIPコアの情報は、非機密合成レポートに含まれない、つまり、サードパーティのIPコアをリバースエンジニアリングまたは抽出することができない合成レポートである。
合成処理から得られた合成レポートの量およびタイプは、多くの場合、既定されていて、したがって、合成レポートは、事前定義され得るサードパーティのIPコアの関連情報を含む可能性が高く、そのような合成レポートは機密合成レポートと定義され、他の合成レポートは非機密合成レポートと定義される。
したがって、サードパーティのIPコアは、サードパーティのIPコアおよびサードパーティのIPコアの情報を含む合成結果をユーザーにフィードバックしないことによって保護され得る。
次に、開発デバイスを通して受信された合成レポートを分析することによって、ユーザーはFPGA用の設計ファイルがさらに修正される必要があるか否かを決定し得る。修正する必要がある場合、設計ファイルは再設計され、それから、上記の設計ファイルのアップロード、有効性検出、合成および他の処理が再度トリガーされるであろう。修正する必要がない場合、ユーザーは開発デバイスを通して現在の設計ファイル用の書き込み命令をトリガーすることができ、これは、どの設計ファイルがFPGAに書き込まれるかまたは書き込まれる必要があるかに対応するバーナーファイルを示す。
任意に、設計ファイル名とチェックボックスと設計ファイルに対応する書き込み制御等、設計ファイルのIDは、開発デバイスに表示することができ、ユーザーは設計ファイルのチェックボックスを選択して、対応する書き込み制御をクリックすることによって上記書き込み命令をトリガーすることができる。したがって、開発管理プラットフォームは、書き込み命令に担持された設計ファイルのIDに従って、ユーザーがプログラムしたいバーナーファイルに対応する設計ファイルを取得することができ、それによって設計ファイルの合成処理から得られたバーナーファイルをFPGAに書き込むことができる。
実際には、ユーザーは、開発プロセスにおいて複数の設計ファイルを開発することができ、異なる設計ファイルは、異なるバーナーファイルを生成するために開発管理プラットフォームによって合成されるであろう。合成後に得られた異なる設計ファイルに対応するバーナーファイルは、開発管理プラットフォームに記憶され、どのバーナーファイルをFPGAに書き込まれるべきかがユーザーによって選択され得る。
図2に示すように、任意に、FPGAクラウドホストの開発システムは、FPGAクラウドホストに対応する、つまり、FPGAクラウドホストを管理するための仮想マシンマネージャ(ハイパーバイザー)をさらに含み得る。したがって、FPGAへのバーナーファイルの書き込みは、仮想マシンマネージャを通して開発管理プラットフォームによって実現され得る。具体的には、仮想マシンマネージャは、開発管理プラットフォームによって送信されたバーナーファイルを受信し、あらかじめ設定された書き込みプログラムを実行することによってバーナーファイルをFPGAに書き込むように構成される。
さらに、図2に示すように、FPGAクラウドホストの開発システムはさらに、FPGAとのデータアクセスリンクを有し、設計ファイルにおいてコードを配置し、かつデータアクセスリンクを通してFPGAにアクセスするように構成されたユーザー仮想マシンを含む。
ユーザー仮想マシンは、ユーザーに配信される仮想マシンであり、これは、ユーザーがFPGAデバイスを見て、自分自身の設計コードを配置し、データリンクを通してFPGAデバイスにアクセスすることができる。
仮想マシンマネージャはユーザー仮想マシンおよびFPGAクラウドホストを管理し、ユーザーは仮想マシンマネージャに入ることができないが、仮想マシンマネージャはユーザー仮想マシンに対してFPGAのダウンロードリンクを公開しない。したがって、ユーザーは、ユーザー仮想マシンにおいてFPGAのダウンロード操作を直接開始することができない、つまり、ユーザーは直接バーナーファイルをFPGAに書き込むことができない。FPGAのダウンロードリンクは、ユーザーがFPGA上でダウンロードタイプの動作を実行できず、アクセス動作のみ実行できるように、ユーザーに公開されず、それによりユーザーが悪意のある攻撃要素を含むバーナーファイルをFPGAに書き込むのを防ぐ。さらに、仮想マシンマネージャを通してFPGAに書き込まれるバーナーファイルは、有効性検出後の設計ファイルの合成結果からのものであり、それによりFPGAへの悪意のある攻撃も防ぐ。
結論として、ユーザーは、FPGA用のユーザーによって実際に設計された実際の制約ファイルを含む設計ファイルを得るためにユーザー側において開発デバイスでFPGAを開発および設計することができ、そして開発デバイスを通して設計ファイルを開発管理プラットフォームにアップロードすることができる。開発管理プラットフォームは、実際の制約ファイルの有効性を検出してユーザーが制約ファイルを変更することによって悪意を持ってFPGAを攻撃するのを防ぐ。そして、開発管理プラットフォームは、設計ファイルを合成処理し、合成処理の結果における合成レポートをユーザーが閲覧するように開発デバイスにフィードバックし、設計ファイルまたは合成レポート用のユーザーによってトリガーされた書き込み命令に応答して対応する合成処理の結果に含まれるバーナーファイルをFPGAにプログラムし、それによりFPGAの開発を実現しながらFPGAハードウェアのセキュリティを保証する。
上記開発システムの実際の使用における開発プロセスは、以下の手順を含み得る実際の例を用いて以下に簡単に説明する。
a.ユーザーは、開発デバイスを通して、プロジェクトファイル、最上位ファイル、制約ファイル等を含む、FPGA基本プロジェクトを取得する。
上述のように、ユーザーは、開発デバイスの開発インターフェースにおいて開発開始動作を実行することによって開発管理プラットフォームに開発要求の送信をトリガーすることができ、開発要求に応答して、開発管理プラットフォームは、上記の制約ファイル、つまり、上述されたテンプレート制約ファイルを含むFPGA基本プロジェクトを、ユーザーが開発に使用するために、ユーザーの開発デバイスにフィードバックし得る。
b.ユーザーは、設計ファイルを得るために、アプリケーションコーディング、シミュレーション等を含む開発デバイスにおいてプロジェクト開発を実行する。
c.ユーザーは、開発の完了後に設計ファイルを開発管理プラットフォームにサブミットする。
d.開発管理プラットフォームは、ユーザーによってサブミットされた設計ファイルの有効性を検出し、設計ファイルが無効であることが検出された場合、エラープロンプトメッセージがユーザーに返され、プロセスはステップbに戻り、そして、設計ファイルが有効であることが検出された場合、プロセスは次のステップに進む。
e.開発管理プラットフォームは、サードパーティのIPコアがユーザーの設計ファイルに呼び出されるか否かを決定する。肯定であれば、呼び出されたサードパーティのIPコアおよび設計ファイルは、合成処理される必要があり、否定であれば、設計ファイルは直接合成処理される。
f.非機密合成結果が開発デバイスに返される。
g.ユーザーは、合成結果を分析し、FPGAをプログラム(ダウンロード)するか否かを決定し、否定であれば、プロセスは、FPGAの設計ファイルが修正されるステップbに戻る。肯定であれば、プロセスは次のステップに進む。
h.開発管理プラットフォームは、書き込まれるバーナーファイルを仮想マシンマネージャに送信し、次に、仮想マシンマネージャは、関連ドライブを呼び出してFPGAを書き込む。
i.開発管理プラットフォームは、FPGAが正常に書き込まれたことをユーアーに通知し、ユーザーは、ユーザー仮想マシンを通してFPGAへのアクセスを開始する。
図3は、本発明の実施形態によるFPGAクラウドホストの開発方法の実施形態1のフローチャートである。本実施形態によるFPGAクラウドホストの開発方法は、ユーザーによるFPGAクラウドホストにおけるFPGAの開発を実施するために用いられる。本方法は、上記の開発システムにおいて開発管理プラットフォームによって実施される。開発管理プラットフォームはサーバーであり得る。図3に示すように、本方法は以下のステップを含む。
301では、FPGAクラウドホストのFPGAに対応するテンプレート制約ファイルは、開発デバイスによってトリガーされた開発要求に応答して開発デバイスに送信される。
ステップ301は、オプションのステップであることに留意するべきである。実際には、ユーザーはまた、他の方法でテンプレート制約ファイルを得ることができ、例えば、ユーザーが自分自身で購入したFPGAクラウドホストにログインし、FPGAクラウドホストを通してテンプレート制約ファイルを得る。
302では、開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれる実際の制約ファイルの有効性が検出され、実際の制約ファイルは、FPGAクラウドホストのFPGAに対応する。
任意に、開発管理プラットフォームは、ローカルに記憶されたテンプレート制約ファイルと設計ファイルにおける実際の制約ファイルとを比較し、比較の結果が、テンプレート制約ファイルが実際の制約ファイルと一致していることを示す場合、実際の制約ファイルが有効であると決定することができ、そうでなければ、実際の制約ファイルが無効であると決定することができる。
303では、合成処理は、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルに適用される。
任意に、サードパーティのIPコアは、ユーザーの設計ファイルでスケジュールされ得る。したがって、サードパーティのIPコアが設計ファイルに呼び出される場合、ローカルに記憶された呼び出されたサードパーティのIPコアおよび設計ファイルが合成処理される。そうでなければ、サードパーティのIPコアが呼び出されない場合、設計ファイルは合成処理される。
任意に、合成処理後、合成処理から得られたバーナーファイルは直接FPGAに書き込まれ得る。プロセスはまた、以下の方法で実行され得る。
304では、合成処理から得られた合成レポートが開発デバイスにフィードバックされる。
合成処理から得られたどの合成レポートが、機密合成レポートであり、そしてどの合成レポートが非機密合成レポートであるかは、事前定義され得る。呼び出されたサードパーティのIPコアの情報は、非機密合成レポートに含まれない。したがって、合成処理後、非機密合成レポートのみが開発デバイスにフィードバックされる。
305では、開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応するバーナーファイルがFPGAに書き込まれ、バーナーファイルは合成処理から得られる。
ユーザーが、設計ファイルをさらに修正する必要がないことを受信した合成レポートに基づいて決定した場合、設計ファイルの書き込み命令はトリガーされ得る。開発管理プラットフォームは、書き込み命令に基づいて設計ファイルに対応するバーナーファイルをFPGAにプログラムする。任意で、開発管理プラットフォームは、バーナーファイルをFPGAクラウドホストに対応する仮想マシンマネージャに、仮想マシンマネージャを通してバーナーファイルをFPGAに書き込むために伝送し得る。
本実施形態においてカバーされない詳細な説明のプロセスは、上記システムの実施形態において開発管理プラットフォームに関連した記述を参照して得ることができ、これは、本明細書で詳細に記述する。
本実施形態では、ユーザーによるFPGAクラウドホストにおけるFPGAの開発は、ネットワーク側の開発管理プラットフォームを通して遠隔支援によって完了される。第1に、ユーザーによってアップロードされた設計ファイルの有効性が検出されて、ユーザーからのFPGAハードウェアに対する悪意のある攻撃を回避する。第2に、保護されるサードパーティのIPコアは、ユーザーに公開されず、合成プロセスは開発管理プラットフォームの側で完了し、合成結果における機密部分はユーザーに提供されないことによりサードパーティのIPコアを保護する。第3に、FPGAは開発管理プラットフォームを通して書き込まれ、これは、ユーザーによるFPGAの直接的な書き込みによって引き起こされる悪意のある攻撃も防ぐ。
図4は、本発明の一実施形態によるFPGAクラウドホストの開発方法の実施形態1のフローチャートである。本実施形態によるFPGAクラウドホストの開発方法は、ユーザーによるFPGAクラウドホストにおけるFPGAの開発を実施するために使用される。本方法は、上記の開発システムにおける開発デバイスによって実施される。図4に示すように、本方法は以下のステップを含む。
401では、開発要求は、ユーザーによってトリガーされた開発開始動作に応答して、開発管理プラットフォームに送信される。
402では、開発要求に応答して開発管理プラットフォームによって送信されるFPGAクラウドホストのFPGAに対応するテンプレート制約ファイルが受信される。
ステップ401〜402はオプションのステップであることに留意すべきである。実際には、テンプレート制約ファイルはまた、例えば、ユーザーが自分自身で購入したFPGAクラウドホストにログインし、FPGAクラウドホストを通してテンプレート制約ファイルを得るといった、他の方法で得ることができる。
403では、設計ファイルが開発管理プラットフォームにアップロードされる。設計ファイルは、開発管理プラットフォームによって、実際の制約ファイルの有効性を検出するために、FPGAクラウドホストのFPGAに対応する実際の制約ファイルを含み、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理する。
ユーザーは、設計ファイルを設計するために、ユーザーの開発デバイスと開発管理プラットフォームとの間の相互作用を通して所望のテンプレート制約ファイルを得る。しかしながら、実際の設計では、ユーザーがテンプレート制約ファイルを変更することができ、結果としてFPGAハードウェアに損傷が生じる。したがって、ユーザーの設計ファイルは、有効性検出のために開発管理プラットフォームにサブミットされる必要がある。
404では、開発管理プラットフォームによって送信された合成レポートが受信される。
合成レポートは、非機密合成レポートを指す。ユーザーは、設計ファイルを修正する必要があるか否かを合成レポートを分析することによって決定し得る。設計ファイルが修正される必要がない場合、設計ファイル用の書き込み命令は、トリガーされて、開発管理プラットフォームに設計ファイルに対応するバーナーファイルをFPGAに書き込むよう指示し得る。
405では、設計ファイルに対応するバーナーファイルをFPGAに書き込むことを指示するように構成された書き込み命令が、開発管理プラットフォームに送信される。
本実施形態においてカバーされていない詳細な説明のプロセスは、上記システムの実施形態における開発管理プラットフォームに関連する記述を参照して得ることができ、これは、本明細書で詳細に記述される。
本実施形態では、ユーザーは、ネットワーク側において開発管理プラットフォームの支援に基づいてFPGAクラウドホストにおけるFPGAを遠隔で開発することができ、これは、簡易かつ便利である。
例示的な設計では、上記の開発管理プラットフォームはサーバーとして実装され得る。図5に示すように、開発管理プラットフォームは、プロセッサ11およびメモリ12を含み得る。メモリ12は、上記実施形態のいずれかにおいて提供されるFPGAクラウドホストの開発方法を実施するために開発管理プラットフォームをサポートするためのプログラムを記憶するように構成される。プロセッサ11は、メモリ12に記憶されたプログラムを実行するように構成される。
プログラムは、1つ以上のコンピュータ可読命令を含み、1つ以上のコンピュータ可読命令がプロセッサ11によって実行されるとき、以下のステップが実施され得る。
開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれ、およびFPGAクラウドホストのFPGAに対応する実際の制約ファイルの有効性を検出することと、
実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理することと、
合成処理から得られた合成レポートを開発デバイスにフィードバックすることと、
開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応し、合成処理から得られたバーナーファイルをFPGAに書き込むこと。
任意に、プロセッサ11はさらに、上記方法におけるステップのうちのすべてまたは一部を実行するように構成される。
通信インターフェース13は、開発管理プラットフォームの構造にさらに含めることができ、開発管理プラットフォームが別のデバイスまたは通信ネットワークと通信するように、例えば、ユーザーの開発デバイスと通信するように、構成することができる。
さらに、コンピュータ記憶媒体が、本発明の一実施形態において提供され、上記方法の実施形態におけるFPGAクラウドホストの開発方法を実施するためのプログラムを含み、開発管理プラットフォームによって使用されるコンピュータソフトウェア命令を記憶するように構成される。
さらに、例示的な設計では、上記の開発デバイスとは、例えば、PCである。図6に示すように、開発デバイスは、プロセッサ21およびメモリ22を含むことができる。メモリ22は、上記実施形態のうちのいずれかにおいて提供されるFPGAクラウドホストの開発方法を実施するための開発デバイスをサポートするためのプログラムを記憶するように構成される。プロセッサ21は、メモリ22に記憶されたプログラムを実行するように構成される。
プログラムは、1つ以上のコンピュータ可読命令を含み、その1つ以上のコンピュータ可読命令がプロセッサ21によって実行されるとき、以下のステップが実施され得る。
開発管理プラットフォームによって、実際の制約ファイルの有効性を検出および実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理するために、設計ファイルを開発管理プラットフォーム、FPGAクラウドホストのFPGAに対応する実際の制約ファイルを含む設計ファイルにアップロードすることと、
開発管理プラットフォームによって送信された合成レポートを受信することと、
設計ファイルに対応するバーナーファイルをFPGAに書き込むことを指示するように構成された書き込み命令を、開発管理プラットフォームに送信すること。
任意に、プロセッサ21はさらに、上記の方法におけるステップのうちのすべてまたはいくつかを実行するように構成される。
通信インターフェース23は、開発デバイスの構造にさらに含めることができ、開発デバイスが別のデバイスまたは通信ネットワークと通信するように、例えば、開発管理プラットフォームと通信するように、構成することができる。
さらに、コンピュータ記憶媒体が、本発明の一実施形態で提供され、開発デバイスによって使用されるコンピュータソフトウェア命令を記憶するように構成され、上記方法の実施形態におけるFPGAクラウドホストの開発方法を実施するためのプログラムを含む。
上記の実装形態の説明から、当業者は、実装形態をソフトウェアに加えて必要な汎用ハードウェアプラットフォームによって実施することができ、ハードウェアおよびソフトウェアの組み合わせによって明確に実施することができることもはっきりと理解することができる。そのような理解に基づいて、本質的に上記の技術的解決策または先行技術に寄与する部分は、コンピュータ製品の形態で具体化することができる。本発明は、コンピュータが使用可能なプログラムコードを含む1つ以上のコンピュータ使用可能記憶媒体(ディスクメモリ、CD−ROM、光学メモリ等を含むが、これらに限定されない)上に実装されるコンピュータプログラム製品の形態であり得る。
本発明は、本発明の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図の各プロセスおよび/またはブロック、ならびにフローチャートおよび/またはブロック図におけるプロセスおよび/またはブロックの組み合わせを実施するためにコンピュータプログラム命令を使用し得ることを理解すべきである。コンピュータプログラム命令は、コンピュータまたは別のプログラム可能なデータ処理デバイスのプロセッサが、フローチャートにおける1つ以上のプロセスおよび/またはブロック図における1つ以上のブロックに指定された機能を実施するように構成された装置を生成するための命令を実行するように、マシンを生成するための汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または別のプログラム可能なデータ処理デバイスのプロセッサに提供することができる。
コンピュータプログラム命令はまた、コンピュータ可読メモリに記憶された命令が、命令装置を含む製造品を生成するように、コンピュータまたは別のプログラム可能なデータ処理デバイスを特定の方法で機能するように導くことができる、コンピュータ可読メモリに記憶することができる。命令装置は、フローチャートにおける1つ以上のプロセスおよび/またはブロック図における1つ以上のブロックによって指定された機能を実施する。
コンピュータプログラム命令はまた、一連の動作ステップがコンピュータまたは別のプログラム可能なデバイス上で実施されて、コンピュータ実装処理を生成するように、コンピュータまたは別のプログラム可能なデータ処理デバイスにロードすることができ、したがって、コンピュータまたは別のプログラム可能なデバイスで実行される命令は、フローチャートにおける1つ以上のプロセスおよび/またはブロック図における1つ以上のブロックで指定された機能を実施するためのステップを提供する。
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)、入力/出力インターフェース、ネットワークインターフェース、およびメモリを含む。
メモリは、揮発性メモリ、ランダムアクセスメモリ(RAM)、および/または不揮発性メモリ、例えば、読み出し専用メモリ(ROM)またはフラッシュRAM等、コンピュータ可読媒体を含み得る。メモリは、コンピュータ可読媒体の一例である。
コンピュータ可読媒体は、取り外し可能および取り外し不可能な媒体だけでなく不揮発性および揮発性媒体も含み、任意の方法または技術によって情報ストレージを実装し得る。情報は、コンピュータ可読命令、データ構造、およびプログラムまたは他のデータのモジュールであり得る。コンピュータの記憶媒体の例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのRAM、ROM、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、フラッシュメモリもしくはその他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)もしくはその他の光学式ストレージ、カセットテープ、磁気テープ/磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の任意の非伝送媒体を含むが、これらに限定されず、コンピューティングデバイスにアクセス可能な情報を記憶するために使用し得る。このテキストの定義によれば、コンピュータ可読媒体は、変調されたデータ信号およびキャリア等、一時的な媒体を含まない。
最後に、上記実施形態は、本発明の技術的解決策を説明するためだけに提供されたものであり、本発明を限定することを意図したものではないことに留意されるべきである。本発明は、上記実施形態を参照して詳細に説明されてきたが、上記実施形態で説明された技術的解決策に変更を行うことができ、または同等の置き換えを技術的解決策における一部の技術的特徴に行うことができ、そのような修正または置換が、対応する技術的解決策の本質が本発明の実施形態における技術的解決策の精神および範囲から逸脱しないということは、当業者によって理解されるべきである。
ユーザーは、自分で購入したFPGAクラウドホストを開発し、開発管理プラットフォームは、統合管理プラットフォームとみなすことができ、これは、異なるユーザーがそれぞれのFPGAクラウドホストを開発することを支援し得る。したがって、ユーザーのFPGAクラウドホスト用の識別情報の設定項目は、開発デバイスにおいて設けることができる。ユーザーが設定項目を書き込み、あらかじめ設定された制御またはメニュー項目をトリガーした後、ユーザーが開発開始動作をトリガーしたとみなされる。したがって、FPGAクラウドホストの識別情報は、開発管理プラットフォームが、識別情報に基づいてFPGAクラウドホストでFPGAのテンプレート制約ファイルを取得し、得られたテンプレート制約ファイルを開発デバイスにフィードバックするように開発デバイスから開発管理プラットフォームに送信される開発要求で伝達され得る。任意で、複数のFPGAクラウドホスト中のFPGAに対応するテンプレート制約ファイルは、FPGAクラウドホストの識別情報をストレージインデックスとすることによって開発管理プラットフォームに事前記憶され得る。
合成処理は、分析、合成、および最適化の3つのステップを含む。設計ファイルは、ハードウェア記述言語(HDL)で記述され得る。分析とは、標準HDL文法規則を使用することによってHDL文法HDL設計ファイルを分析し、文法エラーを訂正することを意味する。合成とは、選択されたFPGA構造とデバイスを対象としてHDLおよびFPGAネットリストファイルを論理的に合成し、設計ファイルを実際のゲートレベル回路ではなく、ANDゲート、ORゲート、NOゲート、RAM、フリップフロップ、および他の基本論理ユニットから成る論理接続のネットリストにコンパイルすることを意味する。最適化とは、ユーザーの設計制約に従って速度および領域を論理的に最適化してFPGAレイアウトおよび配線ツールによる使用のために最適化されたFPGAネットリストファイルを生成することを意味する。合成完了後、多くの合成レポートおよびバーナーファイルが出力され得る。例えば、合成レポートは、タイミングレポート、電力レポート、温度レポート等を含み、バーナーファイルは、アプリケーションによってコンパイルされた実行可能ファイルと比較され得る。合成後のリソース使用やレベル情報等、合成ステータスおよび合成結果は、レポートファイルにリストされる。

Claims (17)

  1. 開発管理プラットフォームに適用されるFPGAクラウドホストの開発方法であって、
    開発デバイスによってアップロードされた設計ファイルに応答して、前記設計ファイルに含まれる実際の制約ファイルの有効性を検出することであって、前記実際の制約ファイルが、前記FPGAクラウドホストのFPGAに対応する、検出することと、
    前記実際の制約ファイルが有効であることを検出したことに応答して、前記設計ファイルを合成処理することと、
    前記合成処理から得られたバーナーファイルを前記FPGAに書き込むことと、を含む、方法。
  2. 前記合成処理から得られた前記バーナーファイルの前記FPGAへの前記書き込みの前に、前記方法は、前記合成処理から得られた合成レポートを前記開発デバイスにフィードバックすることをさらに含み、
    前記合成処理から得られた前記バーナーファイルの前記FPGAへの前記書き込みが、前記開発デバイスによってトリガーされた書き込み命令に応答して、前記書き込み命令に対応する前記バーナーファイルを前記FPGAに書き込むことを含む、請求項1に記載の方法。
  3. 前記設計ファイルに含まれる前記実際の制約ファイルの有効性の前記検出が、
    ローカルに記憶されているテンプレート制約ファイルと前記実際の制約ファイルとの比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定することに応答して、前記実際の制約ファイルが有効であると決定することを含み、前記テンプレート制約ファイルが前記FPGAに対応する、請求項1に記載の方法。
  4. 前記方法は、
    前記開発デバイスによってトリガーされた開発要求に応答して、前記テンプレート制約ファイルを前記開発デバイスに送信することをさらに含む、請求項3に記載の方法。
  5. 前記設計ファイルの前記合成処理は、サードパーティのIPコアが前記設計ファイルに呼び出されたことを決定することに応答して、ローカルに記憶されている前記呼び出されたサードパーティのIPコアおよび前記設計ファイルを合成処理することを含み、
    前記合成処理から得られた前記合成レポートの前記開発デバイスへの前記フィードバックは、
    前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックすることを含み、前記非機密合成レポートは、前記呼び出されたサードパーティのIPコアの情報を含まない、請求項1に記載の方法。
  6. 前記書き込み命令に対応する前記バーナーファイルの前記FPGAへの前記書き込みは、
    前記バーナーファイルをFPGAクラウドホストに対応する仮想マシンマネージャに、前記仮想マシンマネージャを通して前記バーナーファイルを前記FPGAに書き込むために伝送することを含む、請求項2に記載の方法。
  7. 開発デバイスに適用されるFPGAクラウドホストの開発方法であって、
    設計ファイルを開発管理プラットフォームにアップロードすることであって、前記設計ファイルは、前記開発管理プラットフォームによって、実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理するために、前記FPGAクラウドホストのFPGAに対応する前記実際の制約ファイルを含む、アップロードすることと、
    前記開発管理プラットフォームによって送信された合成レポートを受信することと、
    前記合成レポートに従ってトリガーされた書き込み命令を、前記開発管理プラットフォームに送信することであって、前記書き込み命令は、前記設計ファイルに対応するバーナーファイルを前記FPGAに書き込むように命令する、送信することと、を含む、方法。
  8. 前記設計ファイルの前記開発管理プラットフォームへの前記アップロードの前に、前記方法が、
    開発開始動作に応答して開発要求を前記開発管理プラットフォームに送信することと、
    前記開発要求に応答して前記開発管理プラットフォームによって送信される前記FPGAに対応するテンプレート制約ファイルを受信することと、をさらに含む、請求項7に記載の方法。
  9. FPGAクラウドホストの開発システムであって、
    開発デバイスと、
    前記開発デバイスと遠隔通信する開発管理プラットフォームと、
    FPGAクラウドホストにおけるFPGAと、を含み、
    前記開発デバイスは、前記FPGAに対応する実際の制約ファイルを含む設計ファイルを設計し、前記得られた設計ファイルを前記開発管理プラットフォームにアップロードするように構成され、
    前記開発管理プラットフォームは、前記実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理し、前記合成処理から得られたバーナーファイルを前記FPGAに書き込むように構成されている、システム。
  10. 前記開発デバイスは、前記合成処理から得られ、前記開発管理プラットフォームによってフィードバックされた合成レポートを受信し、前記合成レポートに従ってトリガーされた書き込み命令を前記開発管理プラットフォームに送信するようにさらに構成され、
    前記開発管理プラットフォームは、前記合成処理から得られた前記合成レポートを前記開発デバイスにフィードバックし、前記書き込み命令に従って前記バーナーファイルを前記FPGAに書き込むようにさらに構成されている、請求項9に記載のシステム。
  11. 前記開発管理プラットフォームは、
    ローカルに記憶されているテンプレート制約ファイルを前記実際の制約ファイルと比較し、比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定したことに応答して、前記実際の制約ファイルが有効であることを決定するように具体的に構成され、前記テンプレート制約ファイルは、前記FPGAに対応する、請求項9に記載のシステム。
  12. 前記開発デバイスは、開発開始動作に応答して開発要求を前記開発管理プラットフォームに送信するようにさらに構成され、
    前記開発管理プラットフォームは、前記開発要求に応答して前記テンプレート制約ファイルを前記開発デバイスに送信するようにさらに構成されている、請求項11に記載のシステム。
  13. 前記開発管理プラットフォームは、サードパーティのIPコアを記憶し、
    前記開発管理プラットフォームは、
    前記サードパーティのIPコアが前記設計ファイルに呼び出されたことを決定したことに応答して、前記呼び出されたサードパーティのIPコアおよび前記設計ファイルを合成処理し、前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックするように具体的に構成され、前記非機密合成レポートは、前記呼び出されたサードパーティのIPコアの情報を含まない、請求項9に記載のシステム。
  14. 前記開発管理プラットフォームによって送信された前記バーナーファイルを受信し、前記バーナーファイルを前記FPGAに書き込むように構成された仮想マシンマネージャをさらに含む、請求項9に記載のシステム。
  15. 前記FPGAとのデータアクセスリンクを有し、前記設計ファイルにコードを配置し、前記データアクセスリンクを通して前記FPGAにアクセスするように構成されたユーザー仮想マシンをさらに含む、請求項9に記載のシステム。
  16. 開発管理プラットフォームであって、
    プロセッサと、
    前記プロセッサによって実行されたとき、請求項1〜6のいずれかに記載のFPGAクラウドホストの開発方法を実施する1つ以上のコンピュータ可読命令を記憶するメモリと、を含む、開発管理プラットフォーム。
  17. 開発デバイスであって、
    プロセッサと、
    前記プロセッサによって実行されたとき、請求項7または8に記載のFPGAクラウドホストの開発方法を実施する1つ以上のコンピュータ可読命令を記憶するメモリと、を含む、開発デバイス。
JP2020526207A 2017-11-13 2018-11-05 Fpgaクラウドホストの開発方法およびシステム Pending JP2021502648A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201711117784.6 2017-11-13
CN201711117784.6A CN109783118B (zh) 2017-11-13 2017-11-13 Fpga云主机开发方法和系统
PCT/CN2018/113901 WO2019091348A1 (zh) 2017-11-13 2018-11-05 Fpga云主机开发方法和系统

Publications (2)

Publication Number Publication Date
JP2021502648A true JP2021502648A (ja) 2021-01-28
JP2021502648A5 JP2021502648A5 (ja) 2021-03-11

Family

ID=66438210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020526207A Pending JP2021502648A (ja) 2017-11-13 2018-11-05 Fpgaクラウドホストの開発方法およびシステム

Country Status (5)

Country Link
US (1) US11132436B2 (ja)
EP (1) EP3712764B1 (ja)
JP (1) JP2021502648A (ja)
CN (1) CN109783118B (ja)
WO (1) WO2019091348A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN110569042B (zh) * 2019-08-19 2022-11-11 苏州浪潮智能科技有限公司 一种支持虚拟机内更新fpga功能的系统,方法,设备及存储介质
CN111431749B (zh) * 2020-03-27 2022-10-14 重庆海云捷迅科技有限公司 一种fpga云服务器管理平台及其使用方法
CN111694309A (zh) * 2020-06-18 2020-09-22 中国科学技术大学 一种fpga线上平台的实现方法
CN114650246A (zh) * 2020-12-18 2022-06-21 中国移动通信有限公司研究院 Ip核调用的检测方法、装置及设备
US20220335004A1 (en) * 2021-04-16 2022-10-20 Raytheon Company Universal synchronous fifo ip core for field programmable gate arrays
CN113722271B (zh) * 2021-07-20 2023-11-21 湖南艾科诺维科技有限公司 用于数据采集回放的文件管理方法、系统及介质
CN114691157A (zh) * 2022-03-14 2022-07-01 阿里巴巴(中国)有限公司 基于云的fpga管理控制系统、方法及电子设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711674B1 (en) * 2000-02-24 2004-03-23 Xilinx, Inc. Method of watermarking configuration data in an FPGA by embedding the watermark corresponding to a macro obtained upon encountering a first watermark tag from the macro
US7073158B2 (en) * 2002-05-17 2006-07-04 Pixel Velocity, Inc. Automated system for designing and developing field programmable gate arrays
US7802222B2 (en) * 2006-09-25 2010-09-21 Cadence Design Systems, Inc. Generalized constraint collection management method
US8972958B1 (en) * 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
CN101976431A (zh) * 2010-11-02 2011-02-16 公安部第三研究所 一种基于动态可重构技术的通用图像处理平台及其实现方法
CN102156789B (zh) * 2011-04-27 2013-01-02 迈普通信技术股份有限公司 Fpga约束文件自动生成系统及方法
CN103000230B (zh) * 2011-09-09 2016-04-13 上海华虹宏力半导体制造有限公司 一种非易失性存储器ip核的测试和验证开发系统
CN103699399A (zh) * 2012-09-27 2014-04-02 中国科学院微电子研究所 一种使可部分配置的fpga芯片系统具有高可靠性的方法
CN203416233U (zh) * 2013-06-24 2014-01-29 成都鸿芯纪元科技有限公司 一种fpga上电复位系统
WO2015112140A1 (en) 2014-01-22 2015-07-30 Empire Technology Development, Llc Detection of malware through voltage measurements of field programmable gate array
US9444827B2 (en) 2014-02-15 2016-09-13 Micron Technology, Inc. Multi-function, modular system for network security, secure communication, and malware protection
CN106155661B (zh) * 2015-04-14 2020-01-21 阿里巴巴集团控股有限公司 一种控件接入方法及装置
US9811621B2 (en) * 2015-05-01 2017-11-07 Altera Corporation Implementing integrated circuit designs using depopulation and repopulation operations
RU2015144655A (ru) * 2015-10-16 2017-04-24 Кейденс Дизайн Системс, Инк. Процесс проверки достоверности ограничений
US10069681B2 (en) * 2015-12-31 2018-09-04 Amazon Technologies, Inc. FPGA-enabled compute instances
US11017125B2 (en) 2016-12-13 2021-05-25 University Of Florida Research Foundation, Incorporated Uniquified FPGA virtualization approach to hardware security
US10540506B2 (en) 2017-01-12 2020-01-21 Microsoft Technology Licensing, Llc Field-programmable gate array virtualization
US10972277B2 (en) 2017-03-15 2021-04-06 Intel Corporation Confidential verification of FPGA code
US10764129B2 (en) * 2017-04-18 2020-09-01 Amazon Technologies, Inc. Logic repository service supporting adaptable host logic
CN107273171A (zh) * 2017-07-10 2017-10-20 郑州云海信息技术有限公司 一种fpga板卡的烧录方法及装置

Also Published As

Publication number Publication date
WO2019091348A1 (zh) 2019-05-16
US20200272730A1 (en) 2020-08-27
CN109783118B (zh) 2022-10-25
EP3712764A1 (en) 2020-09-23
EP3712764A4 (en) 2021-08-18
EP3712764B1 (en) 2024-04-10
US11132436B2 (en) 2021-09-28
CN109783118A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
JP2021502648A (ja) Fpgaクラウドホストの開発方法およびシステム
US11216256B2 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
US9760343B2 (en) Application builder based on metadata
Almorsy et al. Adaptable, model-driven security engineering for SaaS cloud-based applications
WO2018113596A1 (zh) 应用程序审核操作权限处理方法、装置和存储介质
US20160127418A1 (en) Policy-guided fulfillment of a cloud service
US11474842B2 (en) Integration application creator design
WO2022095412A1 (zh) 微服务开发方法、装置、存储介质及电子设备
CN101379504B (zh) 用于复合应用的基于角色的访问控制管理的方法及系统
WO2022222537A1 (zh) Ai应用部署方法及相关平台、集群、介质、程序产品
CN105074652B (zh) 用于向打印机远程提供应用功能的方法和计算机系统
US9582270B2 (en) Effective feature location in large legacy systems
You et al. [Retracted] Research and Design of Docker Technology Based Authority Management System
US20210271458A1 (en) Managing an app method and system
Bueno et al. Quarkus Cookbook
Budiardja et al. Application‐level regression testing framework using Jenkins
CN109145528A (zh) 一种移动终端与摄像装置的调用拦截方法
US20240095029A1 (en) Catalog for managing modular code
Kyburz et al. SensorFlow
Machado Assurance and Compliance of Security Policies in Cloud-Native Environments
US20190310879A1 (en) Systems and methods for automatically managing scripts for execution in distributed computing environments
Casola et al. Towards model-based security assessment of cloud applications
Chiang et al. Cloud-enabled software testing based on program understanding
CN115859260A (zh) 一种权限认证方法、装置、设备及可读存储介质
CN116186452A (zh) 基于Vue3的页面显示方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200714