(57)【要約】【課題】高位合成によって生成されたモジュールをＦＰＧＡ内で並列化して処理を実行させる際に、リソース消費を抑えつつ処理速度を高速化させる。【解決手段】入力部１１１は、入力データを取得し、所定の処理を行い、出力データを出力する関数であって、所定の処理において第１の値または第２の値のいずれかが代入されるパラメータと、命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける。また、変換部１１２は、命令子が特定の命令子である場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、プログラムに基づいた処理を実行することが記述されたモジュールであって、パラメータが第１の値である場合、モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、パラメータが第２の値である場合、バッファへのデータの書き込みを抑止するモジュールに、プログラムを変換する。【選択図】図１
2018028753.tif 000002
【特許請求の範囲】
【請求項１】
入力データを取得し、所定の処理を行い、出力データを出力する関数であって、前記所定の処理において第１の値または第２の値のいずれかが代入されるパラメータと、特定の命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける入力部と、
あらかじめ定められた特定の命令が、前記特定の命令子とともに前記プログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、前記プログラムに基づいた処理を実行することが記述されたモジュールであって、前記パラメータが第１の値である場合、前記モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、前記パラメータが第２の値である場合、前記バッファへのデータの書き込みを抑止するモジュールに、前記プログラムを変換する変換部と、
を有することを特徴とする変換装置。
【請求項２】
前記変換部は、前記パラメータが第２の値である場合、前記入力データを記憶する記憶部へのデータの送信要求を抑止することで、前記バッファへのデータの書き込みを抑止するように前記プログラムを変換することを特徴とする請求項１に記載の変換装置。
【請求項３】
前記入力部は、前記入力データとして値参照の引数を取得し、前記出力データとしてポインタ参照の引数を出力し、前記特定の命令子としてpragma記述子を含んだ関数が、Ｃ言語で記述されたプログラムの入力を受け付け、
前記変換部は、ＦＰＧＡで実行可能なVerilogで記述されたモジュールであって、always文によって、前記バッファへのデータの書き込みを抑止するモジュールに、前記プログラムを変換することを特徴とする請求項１または２に記載の変換装置。
【請求項４】
プログラム言語で記述されたプログラムをハードウェア記述言語で記述されたモジュールに変換する変換装置と、前記モジュールを実行するＦＰＧＡと、を有する情報処理システムであって、
前記変換装置は、
入力データを取得し、所定の処理を行い、出力データを出力する関数であって、前記所定の処理において第１の値または第２の値が代入されるパラメータと、特定の命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける入力部と、
あらかじめ定められた特定の命令が、前記特定の命令子とともに前記プログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、前記プログラムに基づいた処理を実行することが記述されたモジュールであって、前記パラメータが第１の値である場合、前記モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、前記パラメータが第２の値である場合、前記入力データを記憶する記憶部へのデータの送信要求を抑止することで、前記バッファへのデータの書き込みを抑止するように前記プログラムを変換する変換部と、
を有し、
前記ＦＰＧＡは、
前記記憶部として機能する複数の入力バッファと、
前記複数の入力バッファのそれぞれに対応した出力バッファと、
前記複数の入力バッファのそれぞれに対応し、それぞれが前記モジュールを実行する際に用いられるバッファを１つずつ有し、前記変換部によって変換された前記モジュールを実行することで、前記入力バッファから前記入力データを取得し、前記所定の処理を実行し、前記出力バッファに前記出力データを読み込ませる複数の並列したインスタンスと、
を有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変換装置および情報処理システムに関する。
【背景技術】
【０００２】
従来、Ｃ言語等のプログラム言語で記述されたプログラムを変換し、Verilog等のハードウェア記述言語で記述されたモジュールを生成する高位合成が知られている。高位合成によって生成されたモジュールは、例えば、ＦＰＧＡ（Field  Programmable  Gate  Array）上で実行される。
【０００３】
また、高位合成によって生成されたモジュールは、ハードウェア記述言語を直接記述することで生成されたモジュールと比べ、処理速度が高速化されにくいことが知られている。このため、高位合成によって生成されたモジュールの処理速度を向上させるための技術が提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】藤原  晃一、川村  一志、柳澤  政生、戸川  望、「クリティカルパス最適化フロアプラン指向ＦＰＧＡ高位合成手法のアプリケーション適用評価」、２０１６年  電子情報通信学会総合大会  基礎・境界講演論文集  p.79
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術には、リソース消費を抑えつつ処理速度を高速化させることができない場合があるという問題があった。例えば、高位合成によって生成されたモジュールをＦＰＧＡ内で並列化して処理を実行させることで、処理速度を向上させることができるが、モジュールを並列化する場合、バッファ領域等の、ＦＰＧＡ内のリソース消費が増大する。
【課題を解決するための手段】
【０００６】
本発明の変換装置は、入力データを取得し、所定の処理を行い、出力データを出力する関数であって、前記所定の処理において第１の値または第２の値のいずれかが代入されるパラメータと、特定の命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける入力部と、あらかじめ定められた特定の命令が、前記特定の命令子とともに前記プログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、前記プログラムに基づいた処理を実行することが記述されたモジュールであって、前記パラメータが第１の値である場合、前記モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、前記パラメータが第２の値である場合、前記バッファへのデータの書き込みを抑止するモジュールに、前記プログラムを変換する変換部と、を有することを特徴とする。
【０００７】
本発明の情報処理システムは、プログラム言語で記述されたプログラムをハードウェア記述言語で記述されたモジュールに変換する変換装置と、前記モジュールを実行するＦＰＧＡと、を有する情報処理システムであって、前記変換装置は、入力データを取得し、所定の処理を行い、出力データを出力する関数であって、前記所定の処理において第１の値または第２の値が代入されるパラメータと、特定の命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける入力部と、あらかじめ定められた特定の命令が、前記特定の命令子とともに前記プログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、前記プログラムに基づいた処理を実行することが記述されたモジュールであって、前記パラメータが第１の値である場合、前記モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、前記パラメータが第２の値である場合、前記入力データを記憶する記憶部へのデータの送信要求を抑止することで、前記バッファへのデータの書き込みを抑止するように前記プログラムを変換する変換部と、を有し、前記ＦＰＧＡは、前記記憶部として機能する複数の入力バッファと、前記複数の入力バッファのそれぞれに対応した出力バッファと、前記複数の入力バッファのそれぞれに対応し、それぞれが前記モジュールを実行する際に用いられるバッファを１つずつ有し、前記変換部によって変換された前記モジュールを実行することで、前記入力バッファから前記入力データを取得し、前記所定の処理を実行し、前記出力バッファに前記出力データを読み込ませる複数の並列したインスタンスと、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、高位合成によって生成されたモジュールをＦＰＧＡ内で並列化して処理を実行させる際に、リソース消費を抑えつつ処理速度を高速化させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係る変換装置の構成の一例を示す図である。
【図２】図２は、変換前のプログラムの一例を示す図である。
【図３】図３は、変換後のモジュールの一例を示す図である。
【図４】図４は、変換後のモジュールの一例を示す図である。
【図５】図５は、ＦＰＧＡの構成の一例を示す図である。
【図６】図６は、転送部の処理について説明するための図である。
【図７】図７は、第１の実施形態に係る変換装置の処理の流れを示すフローチャートである。
【図８】図８は、従来のプログラムを示す図である。
【図９】図９は、従来のモジュールについて説明するための図である。
【図１０】図１０は、第１の実施形態の効果を説明するための図である。
【図１１】図１１は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る変換装置および情報処理システムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、本願に係る変換装置は、例えば、Ｃ言語等のプログラム言語で記述されたプログラムを、高位合成によりＦＰＧＡ等で実行可能なVerilog等のハードウェア記述言語に変換する。
【００１１】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係る変換装置の構成について説明する。図１は、第１の実施形態に係る変換装置の構成の一例を示す図である。図１に示すように、変換装置１０は、制御部１１および記憶部１２を有する。
【００１２】
制御部１１は、変換装置１０全体を制御する。制御部１１は、例えば、ＣＰＵ（Central  Processing  Unit）等である。また、制御部１１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部１１は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１１は、入力部１１１、変換部１１２および出力部１１３を有する。
【００１３】
記憶部１２は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１２は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部１２は、変換装置１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部１２は、プログラムの実行で用いられる各種情報を記憶する。
【００１４】
入力部１１１は、入力データを取得し、所定の処理を行い、出力データを出力する関数であって、所定の処理において第１の値または第２の値のいずれかが代入されるパラメータと、特定の命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける。
【００１５】
ここで、図２を用いて、入力部１１１に入力されるプログラムについて説明する。図２は、変換前のプログラムの一例を示す図である。図２に示すように、プログラムはＣ言語で記述されている。また、プログラムには関数transfer_tunnnelが記述されている。関数transfer_tunnnelは、入力データとしてi_dataおよびi_ctlを取得し、所定の処理を行い、出力データとしてo_dataおよびo_ctlを出力する。関数transfer_tunnnelにおけるデータの出力は、例えば、o_dataおよびo_ctlをポインタ参照の引数とすることが実現される。また、関数transfer_tunnnelは、１または０のいずれかが代入されるパラメータtable_statusを含む。また、関数transfer_tunnnelは、命令子としてpragma記述子を含む。
【００１６】
関数transfer_tunnnelは、例えば、入力データとしてパケットデータを取得し、当該パケットに対し所定の処理を行い、処理結果のパケットデータを出力する処理を実行する。その際に、table_statusが１である場合は、パケットデータの取得、すなわちバッファへのデータの書き込みが抑止される。
【００１７】
変換部１１２は、あらかじめ定められた特定の命令が、特定の命令子とともにプログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、プログラムに基づいた処理を実行することが記述されたモジュールであって、パラメータが第１の値である場合、モジュールを実行する際に用いられるバッファへのデータの入力を許可し、パラメータが第２の値である場合、バッファへのデータの入力を抑止するモジュールに、プログラムを変換する。また、出力部１１３は、変換後のモジュールを、高位合成出力、およびＩＰ（Intellectual  Property）のライブラリとして出力する。
【００１８】
具体例として、例えば、入力部１１１は、入力データとして値参照の引数を取得し、出力データとしてポインタ参照の引数を出力し、特定の命令子としてpragma記述子を含んだ関数が、Ｃ言語で記述されたプログラムの入力を受け付ける。また、変換部１１２は、ＦＰＧＡで実行可能なVerilogで記述されたモジュールであって、always文によって、バッファへのデータの入力を抑止し、入力データの取得を抑止するモジュールに、プログラムを変換する。
【００１９】
ここで、図３を用いて、変換部１１２が変換を行ったモジュールについて説明する。変換部１１２は、例えばVerilogで、当該プログラムに基づいた処理を実行することが記述されたモジュールに、当該プログラムを変換する。このとき、変換部１１２は、例えば、DETERMENT命令が#pragmaとともにプログラムに記述されている場合、DETERMENT命令のパラメータtable_statusが０である場合、モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、パラメータが１である場合、バッファへのデータの書き込みを抑止するようなモジュールに変換する。
【００２０】
具体的には、図３に示すように、変換部１１２は、モジュールtransfer_tunnelを生成する。また、モジュールtransfer_tunnelは、インスタンスinst_transfer_tunnel_xgmiiを生成する。インスタンスinst_transfer_tunnel_xgmiiは、バッファであるＬＵＴ（Look  Up  Table）を用いて処理を行う。インスタンスinst_transfer_tunnel_xgmiiは、i_data_READY(xgmii_d_rdy)を実行した際の出力が１である場合はデータの送信要求を行い、０である場合はデータの送信要求を行わないようにする。
【００２１】
具体的には、図４に示すように、モジュールtransfer_tunnelには、i_data_READYは、データの送信要求が終了するたびに、table_statusを参照し、table_statusが０の場合は１を返し、table_statusが１の場合は０を返すことが記述されている。このとき、i_data_READYが１を返した場合は送信要求が行われる。一方、i_data_READYが０を返した場合は送信要求は行われない。これにより、table_statusが０である場合はバッファへのデータの書き込みを許可し、パラメータが０である場合はバッファへのデータの書き込みを抑止するようなモジュールを実現する。なお、~はビット反転演算子であり、table_statusが０の場合は~table_statusは１となり、table_statusが１の場合は~table_statusは０となる。
【００２２】
インスタンスinst_transfer_tunnel_xgmiiによってデータの送信要求が行われた場合、ライブラリaxi_fifo_topのインスタンスinst_axi_fifo_xgmii_topは、i_xgmii_valid(xgmii_d_rdy)を実行し、データ送信を有効にし、o_xgmii_dat(xgmii_d)を実行し、xgmii_dに送信データを代入し、データ送信を行う。
【００２３】
このように、変換部１１２は、パラメータが第２の値である場合、入力データを記憶するバッファ等へのデータの送信要求を抑止することで、バッファへのデータの書き込みを抑止するようにプログラムを変換することができる。
【００２４】
ここで、変換装置１０によって変換されたモジュールが動作するＦＰＧＡについて、図５を用いて説明する。ＦＰＧＡ２０は、変換装置１０によって出力されたモジュールを実行する。図５に示すように、ＦＰＧＡ２０は、入力データを記憶するバッファとして機能する複数の入力バッファ２０３と、複数の入力バッファ２０３のそれぞれに対応し、それぞれがモジュールを実行する際に用いられるバッファを１つずつ有し、変換部１１２によって変換されたモジュールを実行することで、入力バッファ２０３から入力データを取得し、所定の処理を実行し、入力バッファ２０３のそれぞれに対応した出力バッファ２０５に出力データを読み込ませる複数の並列したインスタンスである転送部２０４と、を有する。つまり、転送部２０４は、入力バッファ２０３から出力バッファ２０５へのデータの転送処理を行っている。具体的に、転送部２０４は、モジュールtransfer_tunnnelを実行することでパケットデータの転送処理を行うことができる。
【００２５】
また、ＦＰＧＡ２０は、ＩＰ群として、ＰＣＳ／ＰＭＡ２０１および２０７と、dispatch制御部２０２と、入力バッファ２０３と、出力バッファ２０５と、aggregate制御部２０６と、を有する。また、ＦＰＧＡ２０は、ＦＰＧＡボード２に備えられている。また、ＦＰＧＡボード２には、１０ＧＰＨＹ２１および２２が備えられている。前述の通り、転送部２０４がデータの転送処理を行うことによって、ＦＰＧＡ２０は、全体として、１０ＧＰＨＹ２１と１０ＧＰＨＹ２２との間でデータの転送処理を実現することができる。
【００２６】
１０ＧＰＨＹ２１および２２は、例えば、１０Ｇｂ／ｓでデータ転送を行う。また、ＰＣＳ／ＰＭＡ２０１および２０７は、データの符号化を行う。また、dispatch制御部２０２は、並列に配置された入力バッファ２０３のそれぞれにデータを割り当てる。また、aggregate制御部２０６は、並列に配置された出力バッファ２０５のデータを集約する。
【００２７】
転送部２０４の処理について、図６を用いて説明する。まず、図６に示すように入力バッファ２０３には、１０Ｇｂ／ｓ、すなわち、６４ｂｉｔ／６．４ｎｓの速度でデータが入力される。このとき、転送部２０４は、（１）データ出力、（２）送信要求、（３）データ送信を繰り返し行う。ここで、前述の通り、転送部２０４は、table_statusの値によって、（２）送信要求を実行するか否かを制御することができる。なお、（１）データ出力は、出力バッファに出力データを読み込ませる処理である。
【００２８】
このため、例えば、（１）データ出力において、６４ｂｉｔずつデータが繰り返し出力され、全てのデータが出力されるまでの間、（２）送信要求を停止させておくことができる。
【００２９】
［第１の実施形態の処理］
図７を用いて、変換装置１０の処理の流れについて説明する。図７は、第１の実施形態に係る変換装置の処理の流れを示すフローチャートである。図７に示すように、まず変換装置１０の入力部１１１は、Ｃ言語プログラムの入力を受け付ける（ステップＳ１０１）。次に、変換部１１２は、入力されたＣ言語プログラムをVerilogモジュールに変換する（ステップＳ１０２）。
【００３０】
このとき、Ｃ言語プログラムにpragma記述子およびDETERMENT命令が含まれている場合（ステップＳ１０３、Ｙｅｓ）、変換部１１２は、Verilogモジュールにバッファへの書き込みを制御する処理を追加する（ステップＳ１０４）。Ｃ言語プログラムにpragma記述子およびDETERMENT命令が含まれていない場合（ステップＳ１０４、Ｎｏ）、変換部１１２は、Verilogモジュールへの当該制御の追加は行わない。そして、出力部１１３は、変換部１１２によって変換されたモジュールを出力する（ステップＳ１０５）。
【００３１】
［第１の実施形態の効果］
図８および図９を用いて、従来のプログラムおよびモジュールについて説明する。図８は、従来のプログラムを示す図である。また、図９は、従来のモジュールについて説明するための図である。
【００３２】
第１の実施形態のＦＰＧＡ２０と同様の処理を実現する場合、従来の技術では、図８に示すようなＣ言語プログラムが記述されていた。高位合成では、Ｃ言語プログラムの処理が忠実に再現されるため、図８のtransfer_tunnelでは出力と入力は完全に一対で行われる。つまり、入力データであるi_dataおよびi_ctlの取得を抑止して、出力データであるo_dataおよびo_ctlの出力が実行されるように、高位合成を行うことができなかった。
【００３３】
従来の技術では、１つのバッファを用いて処理を行う際に、入力データの取得および出力データの出力の速度の両方が１クロックあたり６４ｂｉｔであって、入力データよりも出力データの方が大きい場合、バッファ内には出力用のデータが増えていき、入力データとして取得したデータの一部を廃棄しなければならなくなる。さらに、データの廃棄を防止するために入力データの取得を止めてしまうと、出力データの出力も止まってしまい、デッドロックが発生する。
【００３４】
そこで、従来、バッファを図９に示すような３枚構成とすることで、並列処理を高速化していた。つまり、例えば１クロックごとに、３つのバッファのうち、入力データの書き込みが行われるバッファ、出力データの読み込みが行われるバッファ、および書き込みと読み込みのいずれも行われないバッファをラウンドロビンで選択していた。しかし、ＦＰＧＡにおいては、バッファとして機能するＬＵＴは多くのリソースを消費するため、リソースの制限の厳しいＦＰＧＡでは、使用するＬＵＴはできるだけ少なくすることが望ましい。
【００３５】
そこで、第１の実施形態では、入力部１１１は、入力データを取得し、所定の処理を行い、出力データを出力する関数であって、所定の処理において第１の値または第２の値のいずれかが代入されるパラメータと、命令子と、を含んだ関数が、所定のプログラム言語で記述されたプログラムの入力を受け付ける。また、変換部１１２は、あらかじめ定められた特定の命令が、特定の命令子とともにプログラムに記述されている場合、ＦＰＧＡで実行可能な所定のハードウェア記述言語で、プログラムに基づいた処理を実行することが記述されたモジュールであって、パラメータが第１の値である場合、モジュールを実行する際に用いられるバッファへのデータの書き込みを許可し、パラメータが第２の値である場合、バッファへのデータの書き込みを抑止するモジュールに、プログラムを変換する。
【００３６】
これにより、高位合成によって生成されたモジュールをＦＰＧＡ内で並列化して処理を実行させる際に、リソース消費を抑えつつ処理速度を高速化させることができる。このことを、図１０を用いて具体的に説明する。図１０は、第１の実施形態の効果を説明するための図である。
【００３７】
第１の実施形態によれば、従来ＦＰＧＡ上のバッファを３面用いた構成で実現していた処理を、図１０のようなバッファを１面のみ用いた構成で実現できるようになる。すなわち、第１の実施形態によれば、入力データの取得を止めつつ出力データの出力を行うこと、および、出力データの出力を止めつつ入力データの取得を行うことが可能となるため、１面構成で入力データの取得または出力データの出力の一方を止めたとしても、デッドロックが発生しないようにすることができる。
【００３８】
変換部１１２は、パラメータが第２の値である場合、入力データを記憶する記憶部へのデータの送信要求を抑止することで、バッファへのデータの書き込みを抑止するようにプログラムを変換してもよい。これにより、最小限の処理でバッファへのデータの入力を抑止することができる。
【００３９】
また、例えば、入力部１１１は、入力データとして値参照の引数を取得し、出力データとしてポインタ参照の引数を出力し、特定の命令子としてpragma記述子を含んだ関数が、Ｃ言語で記述されたプログラムの入力を受け付ける。また、変換部１１２は、ＦＰＧＡで実行可能なVerilogで記述されたモジュールであって、always文によって、バッファへのデータの書き込みを抑止するモジュールに、プログラムを変換する。このように、Ｃ言語のpragma記述子を利用することで、第１の実施形態の変換装置１０の実現が容易になる。
【００４０】
ＦＰＧＡ２０は、変換装置１０によって出力されたモジュールを実行する。このとき、ＦＰＧＡ２０は、記憶部として機能する複数の入力バッファ２０３と、入力バッファ２０３のそれぞれに対応した出力バッファ２０５と、複数の入力バッファ２０３のそれぞれに対応し、それぞれがモジュールを実行する際に用いられるバッファを１つずつ有し、変換部１１２によって変換されたモジュールを実行することで、入力バッファ２０３から入力データを取得し、所定の処理を実行し、出力バッファ２０５に出力データを出力する複数の並列したインスタンスである転送部２０４と、を有する。これにより、第１の実施形態によれば、高位合成によって変換されたモジュールを用いて、リソース消費を抑えつつ高速に転送処理を行うことができる。
【００４１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００４２】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００４３】
［プログラム］
一実施形態として、変換装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の高位合成処理を実行する変換プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の変換プログラムを情報処理装置に実行させることにより、情報処理装置を変換装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００４４】
また、変換装置１０は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の高位合成に関するサービスを提供する高位合成サーバ装置として実装することもできる。例えば、高位合成サーバ装置は、Ｃ言語プログラムを入力とし、Verilogモジュールを出力とする高位合成サービスを提供するサーバ装置として実装される。この場合、高位合成サーバ装置は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の高位合成に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【００４５】
図１１は、プログラムが実行されることにより変換装置が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００４６】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００４７】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、変換装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、変換装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００４８】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００４９】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３およびプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３およびプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００５０】
２  ＦＰＧＡボード
１０  変換装置
１１  制御部
１２  記憶部
２０  ＦＰＧＡ
２１、２２  １０ＧＰＨＹ
１１１  入力部
１１２  変換部
１１３  出力部
２０１、２０７  ＰＣＳ／ＰＭＡ
２０２  dispatch制御部
２０３  入力バッファ
２０４  転送部
２０５  出力バッファ
２０６  aggregate制御部
【図１】
2018028753.tif 000003
【図２】
2018028753.tif 000004
【図３】
2018028753.tif 000005
【図４】
2018028753.tif 000006
【図５】
2018028753.tif 000007
【図６】
2018028753.tif 000008
【図７】
2018028753.tif 000009
【図８】
2018028753.tif 000010
【図９】
2018028753.tif 000011
【図１０】
2018028753.tif 000012
【図１１】
2018028753.tif 000013