(57)【要約】【課題】汎用デバイスを用いてデータ処理を高速に行う。【解決手段】ＦＰＧＡ２は、外部から受信したデータに、データ更新を示す更新情報を付与して出力する。ＧＰＵ３は、ＦＰＧＡ２から出力されたデータを記憶するメモリ３１と、メモリ３１に記憶されるデータに付与された更新情報を繰り返し監視し、データ更新を示す更新情報を検出した場合に、検出した更新情報を更新検出済みに書き換えるポーリング部３２と、ポーリング部３２により検出された更新情報が付与されたデータを用いた演算処理の実行を制御する制御部３３と、制御部３３の制御に基づいて、メモリ３１に記憶されたデータを用いて演算処理を実行する演算部３４とを備える。【選択図】図２
2019149086.tif 000002
【特許請求の範囲】
【請求項１】
外部から受信したデータに、データ更新を示す更新情報を付与して出力するインタフェース回路と、
前記データを用いて演算処理を行うアクセラレータとを備え、
前記アクセラレータは、
前記インタフェース回路から出力された前記データを記憶する記憶部と、
前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視し、データ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換えるポーリング部と、
前記ポーリング部により検出された前記更新情報が付与された前記データを用いた演算処理の実行を制御する制御部と、
前記制御部の制御に基づいて、前記記憶部に記憶された前記データを用いて演算処理を実行する演算部と、
を備える、
データ処理装置。
【請求項２】
前記インタフェース回路は、前記データの長さを示す長さ情報を前記データにさらに付与して出力し、
前記制御部は、前記長さ情報に基づく並列度で前記演算部に演算処理を実行させる、
請求項１に記載のデータ処理装置。
【請求項３】
前記インタフェース回路は、演算処理の種類を示す制御情報を前記データにさらに付与して出力し、
前記制御部は、前記制御情報が示す前記種類の演算処理を前記演算部に実行させる、
請求項１又は請求項２に記載のデータ処理装置。
【請求項４】
前記データ処理装置は、通信装置である、
請求項１から請求項３のいずれか一項に記載のデータ処理装置。
【請求項５】
インタフェース回路が、
外部から受信したデータに、データ更新を示す更新情報を付与して出力する出力ステップと、
アクセラレータが、
前記インタフェース回路から出力された前記データを記憶部に記憶する記憶ステップと、
前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視する監視ステップと、
前記監視ステップにおいてデータ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換える書き換えステップと、
前記監視ステップにおいて検出された前記更新情報が付与された前記データを用いた演算処理を実行する演算ステップと、
を有するデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ転送方法に関する。
【背景技術】
【０００２】
近年、ネットワークの分野では仮想化が注目されている。仮想化により、実際の物理的なハードウェア構成によらず、ネットワークを構成する装置を論理的に利用できる。仮想化のため、光アクセスシステムにおいて従来は専用のハードウェアで作られていた装置を汎用ハードウェアで構成し、機能をソフトウェアで実装する構成が検討されている。機能をソフトウェアで実現することで、装置の機能が入れ替え可能となり、装置の共通化やリソース共有化が図れるため、ＣＡＰＥＸ（Capital Expenditure）の削減が期待できる。また、機能のアップデートや設定変更を容易とすることでＯＰＥＸ（Operating Expense）削減に繋がると考えられている。そこで、光アクセスシステムのソフトウェア領域を物理層処理にまで拡大し、光アクセスシステムを構成する通信装置が備えるＧＰＵ（Graphics Processing Unit）等のアクセラレータに物理層処理を実装することが考えられる。
【０００３】
しかしながら、従来は通信処理の物理演算は専用チップを用いて行われてきたため、ＧＰＵを使って処理を行う従来研究は少ない。一方で、ＦＰＧＡ等のハードウェアを使って、誤り訂正を実装する検討例は複数存在する（例えば、非特許文献１、２参照）。これらの検討はＲＴＬ（Register Transfer Level）の設計であり、レジスタ間のタスクレベルの並列性や全体のアーキテクチャの提案となっているため、ＧＰＵを活用する本検討の設計思想とは異なっている。
【０００４】
誤り訂正をＧＰＵで実行する例として、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムへの適応がある（例えば、非特許文献３参照）。この手法においては具体的な実装方法までは記載されておらず、システムの提案を行っているのみである。加えて、システムのスループットも大きくない。
【０００５】
また、ＧＰＵは主にＣＰＵ（central processing unit）の処理をアクセラレートするために用いられている。そのため、ＧＰＵへのデータの転送技術としては、図７に示すように、一般的にはＣＰＵからＧＰＵに転送を行う構成が用いられる。ＤＭＡ（Direct Memory Access）転送用メモリとして、高速なＤＤＰ−ＤＲＡＭ（Dual-Data-Port Dynamic Random Access Memory）を用いる手法が挙げられる（例えば、非特許文献４参照）。しかし、調査した限り、汎用化されていない規格の信号の外部入力を、ＣＰＵを介さずに直接ＧＰＵに転送する方法はない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Hanho Lee, Chang-Seok Choi, Jongyoon Shin, Je-Soo Ko, "100-Gb/s Three-Parallel Reed-Solomon based Foward Error Correction Architecture for Optical Communications", International SoC Design Conference 2008 (ISOCC '08), p. I-265-I-268, 2008年11月
【非特許文献２】Hanho Lee, "A High-Speed Low-Complexity Reed-Solomon Decoder for Optical Communications", IEEE Transactions on Circuits and Systems II: Express Briefs, Vol.52, No.8, p.461-465, 2005年8月
【非特許文献３】Matthew L. Curry, Anthony Skjellum, H. Lee Ward, Ron Brightwell, "Accelerating Reed-Solomon Coding in RAID systems with GPUs", IEEE International Symposium on Parallel and Distributed Processing 2008 (IPDPS 2008), 2008年4月
【非特許文献４】Donghyuk Lee, Lavanya Subramanian, Rachata Ausavarungnirun, Jongmoo Choi, Onur Mutlu, "Decoupled Direct Memory Access: Isolating CPU and IO Traffic by Leveraging a Dual-Data-Port DRAM", In Proceedings of the 2015 International Conference on Parallel Architecture and Compilation (PACT), 2015年10月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
これらのシステムを通信へ応用することを考えた際には、データ処理の低遅延化が重要となる。
【０００８】
上記事情に鑑み、本発明は、汎用デバイスを用いてデータ処理を高速に行うことができるデータ処理装置及びデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
本発明の一態様は、外部から受信したデータに、データ更新を示す更新情報を付与して出力するインタフェース回路と、前記データを用いて演算処理を行うアクセラレータとを備え、前記アクセラレータは、前記インタフェース回路から出力された前記データを記憶する記憶部と、前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視し、データ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換えるポーリング部と、前記ポーリング部により検出された前記更新情報が付与された前記データを用いた演算処理の実行を制御する制御部と、前記制御部の制御に基づいて、前記記憶部に記憶された前記データを用いて演算処理を実行する演算部と、を備える、データ処理装置である。
【００１０】
本発明の一態様は、上述のデータ処理装置であって、前記インタフェース回路は、前記データの長さを示す長さ情報を前記データにさらに付与して出力し、前記制御部は、前記長さ情報に基づく並列度で前記演算部に演算処理を実行させる。
【００１１】
本発明の一態様は、上述のデータ処理装置であって、前記インタフェース回路は、演算処理の種類を示す制御情報を前記データにさらに付与して出力し、前記制御部は、前記制御情報が示す前記種類の演算処理を前記演算部に実行させる。
【００１２】
本発明の一態様は、上述のデータ処理装置であって、前記データ処理装置は、通信装置である。
【００１３】
本発明の一態様は、インタフェース回路が、外部から受信したデータに、データ更新を示す更新情報を付与して出力する出力ステップと、アクセラレータが、前記インタフェース回路から出力された前記データを記憶部に記憶する記憶ステップと、前記記憶部に記憶される前記データに付与された前記更新情報を繰り返し監視する監視ステップと、前記監視ステップにおいてデータ更新を示す前記更新情報を検出した場合に、検出した前記更新情報を更新検出済みに書き換える書き換えステップと、前記監視ステップにおいて検出された前記更新情報が付与された前記データを用いた演算処理を実行する演算ステップと、を有するデータ転送方法である。
【発明の効果】
【００１４】
本発明により、汎用デバイスを用いてデータ処理を高速に行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態による通信装置に用いられるデバイス間のデータ転送を示す図である。
【図２】同実施形態による通信装置の機能ブロック図である。
【図３】同実施形態によるデータ形式の例を示す図である。
【図４】同実施形態によるポーリング処理の処理フローを示す図である。
【図５】第２の実施形態によるＧＰＵにおける並列演算処理の処理フローを示す図である。
【図６】第３の実施形態によるＧＰＵにおける演算処理の種類の切替を行う処理フローを示す図である。
【図７】従来技術によるＧＰＵへのデータ転送を示す図である。
【図８】割込みを用いたＧＰＵへのデータ転送を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら本発明の実施形態を詳細に説明する。
汎用ハードウェアを用いた装置を通信へ応用する際には、低遅延化が重要となる。データ転送と処理の低遅延化を行うためには、短いデータを受信し、それを演算処理することが必要となる。
【００１７】
汎用ハードウェアであるＧＰＵにデータ入力を行うにはＰＣＩｅ（ピーシーアイエクスプレス）等のインタフェースを介する必要があり、そのためには、ＦＰＧＡ（field-programmable gate array）等のハードウェアが必要となる。また、ＧＰＵがデータを受信する際には、割り込みが多く用いられる。しかしながら、ＦＰＧＡ等のハードウェアからの割込みに対応したＧＰＵはない。一方で、ＣＰＵは、割り込み制御を用いて、ＦＰＧＡからＧＰＵへのデータ転送や、ＧＰＵのプログラムを実行するＧＰＵカーネル起動を行う。
【００１８】
上記から、例えば、通信装置を図８のような実装とすることが考えられる。この実装例では、外部入力をＧＰＵに転送する際に、ＦＰＧＡはＣＰＵに割込みを実行し、ＣＰＵはＦＰＧＡにデータの転送先アドレス指定や、転送命令を行う。また、ＣＰＵは、ＧＰＵに対しても並列度や実行命令を指定するカーネル実行命令を行う。
【００１９】
このような実装では、１度に転送するデータ量が小さい場合は、ＣＰＵと他のプロセッサ間での通信回数が増加し、遅延量が増加する。そのため、ＣＰＵを介さず直接ＧＰＵに外部信号を転送する方法が望まれる。
【００２０】
また、１度に転送するデータ量（フレームデータ量）が小さく、連続的にデータが入力されるときは、時間当たりの割込みの回数が増加する。その結果、ＣＰＵ−ＧＰＵ−ＦＰＧＡ間での通信が増加し、制約時間内での処理が間に合わない場合がある。
【００２１】
ＧＰＵは従来、ＣＰＵのアクセラレータとして利用されており、ＣＰＵ制御によってデータ入力のタイミング制御や、機能の変更を行う。そのため、ＣＰＵを介さず、ＦＰＧＡなど他のデバイスからのデータ入力に対するタイミング制御、データに対する逐次の機能変更をどのように行うかが課題である。ＧＰＵ等のアクセラレータは割込みに対応していないため、ポーリングを使った、データ入力に対するタイミング制御の実装方法が必要である。
【００２２】
また、通常、ＧＰＵの演算処理においてはＣＰＵの制御によってＧＰＵが行う処理の並列度の変更を行い、ＣＰＵの介入が生じる。更に、ＧＰＵが実行する処理を変更する際も、ＣＰＵの制御によって行うことが必要となる。そのため、ＣＰＵ−ＧＰＵ−ＦＰＧＡ間の通信を削減した転送方法とその演算処理方法が求められる。
【００２３】
そこで、本実施形態では、ＣＰＵ−ＧＰＵ−ＦＰＧＡ間での通信を削減するため、ＧＰＵ内にポーリング実装を行う。ＧＰＵがＣＰＵを介さずにデータの入力タイミングを知るために、ＦＰＧＡは転送するフレーム全てに、データの更新を示すフラグを付与する。ＧＰＵは、転送されたデータをメモリにバッファし、バッファしたデータをポーリングにより読み込んでフラグが更新されていると判断した場合に、演算処理を開始する。また、ＦＰＧＡは、ＧＰＵに転送するフレームに対して、並列度や演算処理の種類の情報を付与する。これにより、ＧＰＵが演算処理を実行する際の並列度の変更や、ＧＰＵが実行する演算処理の種類を変更する。
【００２４】
［第１の実施形態］
図１は、本実施形態の通信装置１に用いられるデバイス間のデータ転送を示す図である。通信装置１は、データ転送装置の一例である。通信装置１は、例えば、ＰＯＮ（Passive Optical Network；受動光ネットワーク）における光加入者線端局装置（ＯＬＴ：Optical Line Terminal）や光回線終端装置（ＯＮＵ：Optical Network Unit）として用いることができる。
【００２５】
通信装置１は、ＩＦ（インタフェース）回路として用いられるＦＰＧＡ２と、アクセラレータの一例であるＧＰＵ３とを備える。ＦＰＧＡ２は、伝送路を介して他の装置から信号を受信し、受信した信号に含まれるフレームデータをＧＰＵ３に転送する。ＦＰＧＡ２は、ＧＰＵ３に転送するフレームデータに対してデータ更新を表すフラグ等の付加データを付与することで、ＣＰＵの制御を介さないデータ転送を実現する。ＧＰＵ３は、ＦＰＧＡ２が出力したフレームデータを受信し、演算を行う。なお、ＧＰＵ３は、演算結果のデータをＦＰＧＡ２に出力し、ＦＰＧＡ２は、ＧＰＵ３から受信したデータが設定された信号を、伝送路を介して他の装置へ送信してもよい。
【００２６】
通信装置１は、付加データを用いることによって、図８の場合と比較して、ＦＰＧＡ−ＣＰＵ間、及び、ＣＰＵ−ＧＰＵ間の通信を削減することができる。ＦＰＧＡ２からのデータ転送の実行前には前処理が必要である。前処理として、ＦＰＧＡ２は、転送先ＧＰＵメモリの確保、転送先ＧＰＵアドレスの取得、付加データの値の設定を事前に行う。さらには、ポーリング処理を行うＧＰＵ３のカーネルも実行しておく必要がある。
【００２７】
図２は、通信装置１の機能ブロック図である。同図に、ＦＰＧＡ２及びＧＰＵ３の各デバイスにおける機能部を示す。
ＦＰＧＡ２は、ＩＦ部２１、メモリ２２、フラグ付与部２３及び転送部２４を備える。ＩＦ部２１は、伝送路を伝送した外部信号を入力する。通信装置１が例えば、ＯＬＴ又はＯＮＵである場合、ＩＦ部２１は、光信号から電気信号への変換又は電気信号から光信号への変換を行う。メモリ２２は、ＩＦ部２１を介して入力された外部信号を記憶（バッファ）する。
【００２８】
フラグ付与部２３は、メモリ２２にバッファされた、ある長さを持つフレームデータにフラグを付与する。フラグ付与部２３は、更新フラグ付与部２３１、長さフラグ付与部２３２、及び、制御フラグ付与部２３３を備える。更新フラグ付与部２３１は、フレームデータにデータ更新を示すＵｐｄａｔｅ（更新）フラグを付与する。長さフラグ付与部２３２は、フレームデータに当該データの長さを示すＬｅｎｇｔｈ（長さ）フラグを付与する。制御フラグ付与部２３３は、フレームデータに演算処理の種類を示すＣｏｎｔｒｏｌ（制御）フラグを付与する。転送部２４は、各種フラグが付与されたフレームデータを、ＧＰＵ３のメモリ３１に転送する。
【００２９】
ＧＰＵ３は、メモリ３１、ポーリング部３２、制御部３３及び演算部３４を備える。メモリ３１は、データを記憶する記憶部の一例である。メモリ３１は、ＦＰＧＡ２の転送部２４から転送されたデータをバッファする。ＧＰＵ３のポーリング部３２は、メモリ３１にバッファリングされたデータに対してポーリング処理を行って信号の入力を検知する。制御部３３は、カーネルを実行することにより、各種処理の実行を制御する。また、制御部３３は、演算部３４における演算時の並列度の変更や演算部３４が行う演算処理の種類の切替を行う。演算部３４は、制御部３３から制御に基づいて入力信号に対する演算処理を行う。
【００３０】
図３は、ＦＰＧＡ２におけるフラグ付与によって生成されるデータ形式の例を示す図である。同図に示すように、データには、ヘッダ名「Ｕｐｄａｔｅ」、３２ビット長のＵｐｄａｔｅフラグと、ヘッダ名「Ｌｅｎｇｔｈ」、３２ビット長のＬｅｎｇｔｈフラグと、ヘッダ名「Ｃｏｎｔｒｏｌ」、４４８ビット長のＣｏｎｔｒｏｌフラグが付与される。
【００３１】
更新フラグ付与部２３１は、Ｕｐｄａｔｅフラグに常にデータ更新を表す値「１」を設定し、データの更新をＧＰＵ３に通知する。ＧＰＵ３のポーリング部３２は、メモリ３１に記憶されるデータに値「１」のＵｐｄａｔｅフラグを検出した場合に、このＵｐｄａｔｅフラグを、更新検出済みを表す値「０」に書き換える。Ｌｅｎｇｔｈフラグは、データの長さを示す。Ｌｅｎｇｔｈフラグにデータの長さを設定することにより、ＧＰＵ３において、処理を行うデータの範囲の認識や、並列演算を行う際の並列度の決定などに用いることができる。Ｃｏｎｔｒｏｌフラグは、処理制御用に用いられる。Ｃｏｎｔｒｏｌフラグは、ＧＰＵ３において行われる演算処理の種類を変更する際に利用される。これらのフラグの値は、ＦＰＧＡ２のレジスタの値の書き換えを行うことなどにより、プログラム実行中に変更される。
【００３２】
図４は、ＧＰＵカーネルにより実行されるポーリング処理の処理フローを示す図である。ＧＰＵカーネルは、事前設定時に起動される。ＦＰＧＡ２のフラグ付与部２３は、ＩＦ部２１が入力した信号のフレームデータがメモリ２２にバッファされると、そのフレームデータにＵｐｄａｔｅフラグ、Ｌｅｎｇｔｈフラグ、及び、Ｃｏｎｔｒｏｌフラグを付与し、転送部２４に出力する。転送部２４は、各種フラグが付与されたフレームデータを、ＧＰＵ３のメモリ３１に転送する。ＧＰＵ３のメモリ３１は、ＦＰＧＡ２から転送されたデータをバッファリングする。
【００３３】
ＧＰＵ３のポーリング部３２は、ポーリング処理により、常にメモリ３１に記憶されているデータのＵｐｄａｔｅフラグをチェックする（ステップＳ１１０）。例えば、ポーリング部３２は、所定時間間隔でＵｐｄａｔｅフラグをチェックする。ポーリング部３２は、Ｕｐｄａｔｅフラグの値が０であると判断した場合（ステップＳ１１０：＝＝０）、まだＦＰＧＡ２から新たなフレームデータは到着していないとみなす。ＧＰＵ３は、フレームデータの演算処理は行わず、ステップＳ１１０に戻り、再度Ｕｐｄａｔｅフラグのチェックを再開する。
【００３４】
一方、ポーリング部３２は、Ｕｐｄａｔｅフラグの値が１であると判断した場合（ステップＳ１１０：！＝０）、新たなフレームデータが入力されたとみなし、Ｕｐｄａｔｅフラグを０にリセットする（ステップＳ１２０）。Ｕｐｄａｔｅフラグのリセット後、制御部３３は、フレームデータに対する任意の演算処理を演算部３４により実行させる（ステップＳ１３０）。ＧＰＵ３は、ステップＳ１１０からの処理を繰り返す。
【００３５】
なお、メモリ３１は、例えば、リングバッファである。ＧＰＵ３の制御部３３は、Ｕｐｄａｔｅフラグのリセットの度に、次に更新をチェックするバッファ位置を表すアドレス値を逐次変更していく。
【００３６】
［第２の実施形態］
ＧＰＵは複数コアを有しており、並列演算が可能である。本実施形態では、ＧＰＵはフレームデータの並列演算処理を行う。
【００３７】
図５は、ＧＰＵ３がフレームデータに対して並列演算処理を行う処理フローを示す図である。同図を用いて、ＧＰＵ３が、カーネル実行中に演算処理を実行する並列度を変更する方法を説明する。並列度の変更には、フレームデータに付与されたＬｅｎｇｔｈフラグが用いられる。ＧＰＵ３がｎビット単位で演算処理を行う際は、Ｌｅｎｇｔｈ／ｎの並列度を指定し、カーネルを起動する。ここではＮＶＩＤＩＡのＧＰＵで利用できるDynamic parallelismを想定し、既に実行しているカーネル内から動的にカーネルを起動する。例えば、１０Ｇ−ＥＰＯＮ（Gigabit - Ethernet（登録商標） Passive Optical Network）フレームとＮＧ−ＰＯＮ２（Next generation - Passive Optical Network 2）フレームではｎが異なるため、ＦＰＧＡ２の転送部２４から逐次ＧＰＵ３に転送するデータの長さ（Ｌｅｎｇｔｈフラグへの設定値）をｎの倍数に変更する必要がある。
【００３８】
図５のステップＳ２１０〜ステップＳ２２０の処理は、図４に示すステップＳ１１０〜ステップＳ１２０の処理と同様である。ステップＳ２２０の処理の後、制御部３３は、メモリ３１に記憶されているフレームデータのＬｅｎｇｔｈフラグを読み出し、読み出したＬｅｎｇｔｈフラグに設定されているデータ長を予め設定されたｎで除算して並列度を計算する（ステップＳ２３０）。制御部３３は、既に実行しているカーネル内から、計算された並列度のカーネルを起動することにより、計算された並列度に基づいてカーネルを起動し、各カーネルはｎビット単位の演算処理を並列で演算部３４に実行させる（ステップＳ２４０）。ＧＰＵ３は、ステップＳ２１０からの処理を繰り返す。
【００３９】
［第３の実施形態］
本実施形態では、ＧＰＵ３が実行する演算処理の種類を切り替える。
図６は、ＧＰＵ３が実行する演算処理の種類の切替えを行う処理フローを示す図である。演算処理の種類の切換えには、フレームデータに付与されたＣｏｎｔｒｏｌフラグを用いる。
【００４０】
図６のステップＳ３１０〜ステップＳ３２０の処理は、図４に示すステップＳ１１０〜ステップＳ１２０の処理と同様である。ステップＳ３２０の処理の後、制御部３３は、分岐命令においてＣｏｎｔｒｏｌフラグの値を参照する（ステップＳ３３０）。制御部３３は、Ｃｏｎｔｒｏｌフラグの値に応じて、起動するカーネルを切替える。複数のカーネルをカーネル０〜ｋ（ｋは１以上の整数）としたとき、制御部３３は、Ｃｏｎｔｒｏｌフラグの値ｉ（ｉは０以上ｋ以下の整数）である場合に、カーネルｉを起動する（ステップＳ３４０−０〜Ｓ３４０−ｋ）。これにより、例えば、制御部３３は、入力データに対して、リードソロモン（２５５，２２３）や、リードソロモン（２５５，２３９）等の機能の切替えを、ＣＰＵを介さず行うことができる。ＧＰＵ３は、ステップＳ３４０−０〜Ｓ３４０−ｋのいずれかの実行後、ステップＳ３１０からの処理を繰り返す。
【００４１】
以上説明した実施形態によれば、データ処理装置は、ＦＰＧＡなどのインタフェース回路と、ＧＰＵなどのアクセラレータとを備える。データ処理装置は、例えば、通信装置である。インタフェース回路は、入力されたフレームデータに対して、データの更新を示す更新情報を付与してアクセラレータに転送する。更新情報は、例えば、Ｕｐｄａｔｅフラグである。アクセラレータは、受信したフレームデータを記憶部に記憶し、記憶されているデータの更新情報を繰り返し監視する。アクセラレータは、データ更新を示す更新情報を検出した場合に、フレームデータが入力されたと判断して、検出した更新情報を更新検出済みへ書き換えるとともに、当該更新情報が付与されたフレームデータを用いた演算処理を開始する。これにより、ＣＰＵを介することなく、アクセラレータがフレームデータの入力タイミングを検出することができため、通信装置におけるデータ転送および演算処理の低遅延化が可能となる。
【００４２】
また、インタフェース回路は、データの長さを示す長さ情報及び演算処理の種類を示す制御情報をさらにデータに付与してアクセラレータに転送してもよい。長さ情報、制御情報は、例えば、Ｌｅｎｇｔｈフラグ、Ｃｏｎｔｒｏｌフラグである。アクセラレータは、長さ情報に基づく並列度で演算処理を実行する。これにより、演算処理の低遅延化をさらに図ることができる。また、アクセラレータは、制御情報が示す種類の演算処理を実行する。これにより、インタフェース回路から、アクセラレータが実行する演算処理を切り替えることができる。
【００４３】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００４４】
１…通信装置，  ２…ＦＰＧＡ，  ３…ＧＰＵ，  ２１…ＩＦ部，  ２２…メモリ，  ２３…フラグ付与部，  ２４…転送部，  ３１…メモリ，  ３２…ポーリング部，  ３３…制御部，  ３４…演算部，  ２３１…更新フラグ付与部，  ２３２…長さフラグ付与部，  ２３３…制御フラグ付与部
【図１】
2019149086.tif 000003
【図２】
2019149086.tif 000004
【図３】
2019149086.tif 000005
【図４】
2019149086.tif 000006
【図５】
2019149086.tif 000007
【図６】
2019149086.tif 000008
【図７】
2019149086.tif 000009
【図８】
2019149086.tif 000010