(57)【要約】【課題】汎用デバイスを用いて信号処理を高速に行うことができる通信装置を提供する。【解決手段】ＩＦ回路１１は、受信した信号を所定の規格のデータに変換する。ＧＰＵ１２０ａは、変換されたデータに対する信号処理を実行する。ＣＰＵ１３は、ＩＦ回路１１において信号が変換されたことによる割り込みを受けると、ＧＰＵ１２０ａにおけるデータの転送先アドレスをＩＦ回路１１に設定して転送を指示し、ＧＰＵ１２０ａにカーネルの起動を指示する。ＩＦ回路１１は、ＣＰＵ１３からの指示を受け、変換したデータをＧＰＵ１２０ａの転送先アドレスへ転送する。ＧＰＵ１２０ａは、ＣＰＵ１３からの指示を受けて起動したカーネルにより、ＩＦ回路１１から転送先アドレスに転送されたデータを用いた信号処理を実行させる。【選択図】図３
2019080190.tif 000002
【特許請求の範囲】
【請求項１】
受信した信号を所定の規格のデータに変換するインタフェース回路と、
前記データに対する信号処理を実行するアクセラレータと、
前記アクセラレータ及び前記インタフェース回路を制御する中央処理装置とを備え、
前記中央処理装置は、
前記インタフェース回路において前記信号が変換されたことによる割り込みを受ける割り込み受信部と、
前記割り込み受信部が割り込みを受けた場合に、前記アクセラレータにおける前記データの転送先アドレスを前記インタフェース回路に設定するアドレス設定部と、
前記データを前記転送先アドレスへ転送するよう前記インタフェース回路に指示する転送指示部と、
前記アクセラレータにカーネルの起動を指示するカーネル制御部とを備え、
前記インタフェース回路は、前記転送指示部からの指示を受け、前記データを前記アクセラレータの前記転送先アドレスへ転送し、
前記アクセラレータは、前記カーネル制御部からの指示を受けてカーネルを起動し、起動したカーネルにより、前記インタフェース回路から前記転送先アドレスに転送された前記データを用いた前記信号処理を実行させる、
通信装置。
【請求項２】
前記中央処理装置は、前記割り込み受信部が割り込みを受けた場合に、前記データの転送先となる仮想アドレスを決定するアドレス制御部をさらに有し、
前記アドレス設定部は、予め確保した仮想メモリと物理メモリとのマッピングに基づき、前記アドレス制御部が決定した仮想アドレスの前記仮想メモリに対応した前記物理メモリのアドレスを前記転送先アドレスとする、
請求項１に記載の通信装置。
【請求項３】
前記カーネル制御部は、外部から入力された前記通信装置の起動方法に応じて、前記アクセラレータにおいて前記信号処理を行うハードウェアに関する設定と前記信号処理の処理内容に関する設定との少なくとも一方を取得し、取得した前記設定に基づいて前記カーネルの起動を指示する、
請求項１又は請求項２に記載の通信装置。
【請求項４】
前記カーネル制御部は、前記割り込み受信部が信号の入力を示す割り込み信号を前記インタフェース回路から受信する度にカーネルを起動し、
前記アクセラレータは、前記カーネル制御部からの前記指示を受けてカーネルを実行するカーネル実行部を複数有しており、複数の前記カーネル実行部それぞれが起動したカーネルにより前記信号処理を実行させた結果得られたデータを、カーネルの起動順に出力する、
請求項１から請求項３のいずれか一項に記載の通信装置。
【請求項５】
前記信号処理は、誤り訂正処理を含み、
前記アクセラレータは、前記インタフェース回路からグローバルメモリに転送された誤り訂正処理の対象の前記データを高速メモリに格納し、前記高速メモリに格納された前記データを用いた誤り訂正処理の実行と並行して誤り訂正処理の対象の前記データをコピーした出力データを前記グローバルメモリに格納し、実行中の誤り訂正処理において誤り発生部分が検出された場合には前記誤り発生部分のデータを前記出力データから取得して高速メモリに転送し、高速メモリに格納された前記誤り発生部分のデータに対して誤りを訂正した結果を用いて、前記グローバルメモリに格納された前記出力データにおける前記誤り発生部分を書き換える、
請求項１から請求項４のいずれか一項に記載の通信装置。
【請求項６】
前記信号処理は、誤り訂正処理を含み、
前記アクセラレータは、前記誤り訂正処理において用いられるバイナリとガロア体の対応を示す対応テーブルをコンスタントメモリに格納しておき、前記誤り訂正処理の実行時にスレッドブロック単位で前記対応テーブルを前記コンスタントメモリから高速メモリに転送する、
請求項１から請求項５のいずれか一項に記載の通信装置。
【請求項７】
前記信号処理は、物理層の演算処理を含む、
請求項１から請求項６のいずれか一項に記載の通信装置。
【請求項８】
前記通信装置は、端局装置であり、
前記インタフェース回路は、終端装置から受信した受動光ネットワークの規格の信号を所定の規格のデータに変換する、
請求項１から請求項７のいずれか一項に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関する。
【背景技術】
【０００２】
近年、ネットワークの分野では仮想化が注目されている。仮想化により、実際の物理的なハードウェア構成によらず、ネットワークを構成する装置を論理的に利用できる。仮想化のため、光アクセスシステムにおいて従来は専用のハードウェアで作られていた装置を汎用ハードウェアで構成し、機能をソフトウェアで実装する構成が検討されている。機能をソフトウェアで実現することで、装置の機能が入れ替え可能となり、装置の共通化やリソース共有化が図れるため、ＣＡＰＥＸ（Capital Expenditure）の削減が期待できる。また、機能のアップデートや設定変更を容易とすることでも、ＣＡＰＥＸ削減に繋がると考えられている。そこで、光アクセスシステムのソフトウェア領域を物理層処理にまで拡大し、光アクセスシステムを構成する通信装置が備えるＧＰＵ（Graphics Processing Unit）等のアクセラレータに物理層処理を実装することが考えられる。
【０００３】
しかしながら、従来は通信処理の物理演算は専用チップを用いて行われてきたため、ＧＰＵを使って処理を行う従来研究は少ない。一方で、ＦＰＧＡ等のハードウェアを使って、誤り訂正を実装する検討例は複数存在する（例えば、非特許文献１、２参照）。これらの検討はＲＴＬ（Register Transfer Level）の設計であり、レジスタ間のタスクレベルの並列性や全体のアーキテクチャの提案となっているため、ＧＰＵを活用する本検討の設計思想とは異なっている。
【０００４】
誤り訂正をＧＰＵで実行する例として、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムへの適応がある（例えば、非特許文献３参照）。この手法においては具体的な実装方法までは記載されておらず、システムの提案を行っているのみである。加えて、システムのスループットも大きくない。
【０００５】
また、ＧＰＵへのデータの転送技術としては、図８に示すように、一般的にはＣＰＵからＧＰＵに転送を行う構成が用いられる。ＤＭＡ（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月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記事情に鑑み、本発明は、汎用デバイスを用いて信号処理を高速に行うことができる通信装置を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の一態様は、受信した信号を所定の規格のデータに変換するインタフェース回路と、前記データに対する信号処理を実行するアクセラレータと、前記アクセラレータ及び前記インタフェース回路を制御する中央処理装置とを備え、前記中央処理装置は、前記インタフェース回路において前記信号が変換されたことによる割り込みを受ける割り込み受信部と、前記割り込み受信部が割り込みを受けた場合に、前記アクセラレータにおける前記データの転送先アドレスを前記インタフェース回路に設定するアドレス設定部と、前記データを前記転送先アドレスへ転送するよう前記インタフェース回路に指示する転送指示部と、前記アクセラレータにカーネルの起動を指示するカーネル制御部とを備え、前記インタフェース回路は、前記転送指示部からの指示を受け、前記データを前記アクセラレータの前記転送先アドレスへ転送し、前記アクセラレータは、前記カーネル制御部からの指示を受けてカーネルを起動し、起動したカーネルにより、前記インタフェース回路から前記転送先アドレスに転送された前記データを用いた前記信号処理を実行させる、通信装置である。
【０００９】
本発明の一態様は、上述の通信装置であって、前記中央処理装置は、前記割り込み受信部が割り込みを受けた場合に、前記データの転送先となる仮想アドレスを決定するアドレス制御部をさらに有し、前記アドレス設定部は、予め確保した仮想メモリと物理メモリとのマッピングに基づき、前記アドレス制御部が決定した仮想アドレスの前記仮想メモリに対応した前記物理メモリのアドレスを前記転送先アドレスとする。
【００１０】
本発明の一態様は、上述の通信装置であって、前記カーネル制御部は、外部から入力された前記通信装置の起動方法に応じて、前記アクセラレータにおいて前記信号処理を行うハードウェアに関する設定と前記信号処理の処理内容に関する設定との少なくとも一方を取得し、取得した前記設定に基づいて前記カーネルの起動を指示する。
【００１１】
本発明の一態様は、上述の通信装置であって、前記カーネル制御部は、前記割り込み受信部が信号の入力を示す割り込み信号を前記インタフェース回路から受信する度にカーネルを起動し、前記アクセラレータは、前記カーネル制御部からの前記指示を受けてカーネルを実行するカーネル実行部を複数有しており、複数の前記カーネル実行部それぞれが起動したカーネルにより前記信号処理を実行させた結果得られたデータを、カーネルの起動順に出力する。
【００１２】
本発明の一態様は、上述の通信装置であって、前記信号処理は、誤り訂正処理を含み、前記アクセラレータは、前記インタフェース回路からグローバルメモリに転送された誤り訂正処理の対象の前記データを高速メモリに格納し、前記高速メモリに格納された前記データを用いた誤り訂正処理の実行と並行して誤り訂正処理の対象の前記データをコピーした出力データを前記グローバルメモリに格納し、実行中の誤り訂正処理において誤り発生部分が検出された場合には前記誤り発生部分のデータを前記出力データから取得して高速メモリに転送し、高速メモリに格納された前記誤り発生部分のデータに対して誤りを訂正した結果を用いて、前記グローバルメモリに格納された前記出力データにおける前記誤り発生部分を書き換える。
【００１３】
本発明の一態様は、上述の通信装置であって、前記信号処理は、誤り訂正処理を含み、前記アクセラレータは、前記誤り訂正処理において用いられるバイナリとガロア体の対応を示す対応テーブルをコンスタントメモリに格納しておき、前記誤り訂正処理の実行時にスレッドブロック単位で前記対応テーブルを前記コンスタントメモリから高速メモリに転送する。
【００１４】
本発明の一態様は、上述の通信装置であって、前記信号処理は、物理層の演算処理を含む。
【００１５】
本発明の一態様は、上述の通信装置であって、前記通信装置は、端局装置であり、前記インタフェース回路は、終端装置から受信した受動光ネットワークの規格の信号を所定の規格のデータに変換する。
【発明の効果】
【００１６】
本発明により、通信装置は、汎用デバイスを用いて信号処理を高速に行うことが可能となる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態による通信装置のハードウェア構成を示す図である。
【図２】同実施形態による各ハードウェアの機能構成を示す図である。
【図３】同実施形態によるＩＦ回路及びＣＰＵが備える機能の詳細を示す図である。
【図４】第２の実施形態によるハードウェアの設定フローを示す図である。
【図５】第３の実施形態によるストリーム処理を用いた高速化手法を示す図である。
【図６】第４の実施形態による誤り訂正処理のメモリアクセス高速化方法を示す図である。
【図７】第５の実施形態による誤り訂正処理のテーブルアクセス高速化方法を示す図である。
【図８】従来技術によるＧＰＵへのデータの転送を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら本発明の実施形態を詳細に説明する。
本実施形態では、光アクセスシステムにおける仮想的な通信装置のソフトウェア領域を、誤り訂正機能を含む物理層処理にまで拡大する。具体的には、ＧＰＵ（Graphics Processing Unit）等のアクセラレータに物理層処理を実装する。物理層処理は演算量が大きいため、従来は専用チップのＡＳＩＣ（Application Specific Integrated Circuit）で実装されている。物理層処理は、一般的に汎用ハードウェアでの高速処理が難しく、ＣＰＵ（central processing unit）のみの利用ではスループットの性能達成が困難である。また、汎用プロセッサの動向としても、ＣＰＵの性能は頭打ちとなってきており、ＧＰＵ、ＦＰＧＡ（field-programmable gate array）等のアクセラレータと組み合わせることによって性能向上を行うようになってきている。しかし、物理層処理をアクセラレータに実装するためには、以下の問題がある。
【００１９】
（１）ＧＰＵ等の汎用デバイスであるアクセラレータへのデータの入出力方法を含めた通信処理における物理演算を高速に行うことが必要である。
（２）ＣＰＵ等に専用回路として実装されたイーサネット（登録商標）やＰＣＩｅ（ピーシーアイエクスプレス）の規格ではなく、光アクセスシステムのＰＯＮ規格の信号をアクセラレータへ転送するための実装方法を検討する必要がある。
（３）演算量が大きい誤り訂正機能を、アクセラレータが高スループットで行うような実装を実現する必要がある。
【００２０】
上記の問題を解決するために、本実施形態の通信装置は以下を実装する。
（１）外部装置との間で信号の送受信を行うＩＦ（インタフェース）回路において、外部装置との間で使用する規格（例えば、ＰＯＮ規格）の信号を汎用の規格に変換した後に、ＣＰＵを介さずに入力データをＩＦ回路から直接アクセラレータに転送する。
（２）ＣＰＵは、予めアクセラレータのメモリ確保を行って物理メモリと仮想メモリとの対応付けを行い、ＩＦ回路からアクセラレータへのデータの転送制御を行う。
（３）ストリーム処理によるパイプライン化で高速化を行う。ＣＰＵは、外部装置からの信号受信によってデータ入力が発生する度にアクセラレータのカーネルを起動し、最も早く実行したカーネルの出力データを外部に出力する。
（４）誤り訂正復号化においては、入力データの参照回数が多く、出力データの参照回数が少ないという特徴を利用し、アクセラレータは、入力データを低速メモリから高速メモリに保持して誤り訂正復号化を行い、出力データについては必要なデータのみをその都度参照して低速メモリから高速メモリに保持する方法を実装して高速化する。
（５）アクセラレータは、誤り訂正復号化に使用されるバイナリ−ガロア体の対応を事前計算した対応テーブルをあらかじめコンスタントメモリに転送しておく。アクセラレータは、カーネル起動の度にスレッドブロック毎にコンスタントメモリから高速メモリに対応テーブルをコピーし、その後の計算に利用することで高速化する。
【００２１】
上記により、ＰＯＮ信号等の任意のプロトコルの信号を、ＩＦ回路からＣＰＵを介さずにアクセラレータへ効率的に転送することが可能となる。また、アクセラレータで動作する誤り訂正復号化の処理が高速化される。
以下に、詳細な実施形態を説明する。
【００２２】
［第１の実施形態］
図１は、本実施形態の通信装置１のハードウェア構成を示す図である。通信装置１は、例えば、ＰＯＮ（Passive Optical Network；受動光ネットワーク）における光加入者線端局装置（ＯＬＴ：Optical Line Terminal）であり、外部装置である１以上の光回線終端装置（ＯＮＵ：Optical Network Unit）及び上位装置と接続される。ＯＮＵから上位装置方向への通信を上り、上位装置からＯＮＵ方向への通知を下りと記載する。通信装置１は、ＩＦ（インタフェース）回路１１、アクセラレータボード１２及びＣＰＵ（Central Processing Unit；中央処理装置）１３を備える。
【００２３】
ＩＦ回路１１は、例えば、ＦＰＧＡ（field-programmable gate array）、専用ボード等である。ＩＦ回路１１は、外部装置とプロセッサ間の信号の入出力を行う。ＩＦ回路１１は、受信信号に含まれる主信号をアクセラレータボード１２に搭載されたアクセラレータに転送する。また、ＩＦ回路１１は、一部の主信号をＣＰＵ１３に転送する。アクセラレータボード１２に搭載されるアクセラレータは、例えば、ＧＰＵ（Graphics Processing Unit）であるが、ＦＰＧＡやＤＳＰ（Digital Signal Processor）等でもよい。アクセラレータボード１２に搭載されたＧＰＵ（又はＦＰＧＡ、ＤＳＰ）は、ＩＦ回路１１から転送された主信号を用いて物理演算を行う。この物理演算は、物理層処理を含む信号処理の演算である。ＣＰＵ１３は、ＩＦ回路１１から転送された一部の主信号の信号処理を行なったり、トラヒック解析、管理機能等の一部アプリケーションを動作させたりする。
【００２４】
図２は、各ハードウェアの機能構成を示す図である。ＩＦ回路１１として使用されるＦＰＧＡ１１０は、光・電気変換部１１１、転送処理部１１２及び転送処理部１１３を備える。光・電気変換部１１１は、ＯＮＵから受信したＰＯＮ信号入力（上り信号）に対して光信号を電気信号に変換する光・電気変換を行い、汎用デバイスが受信可能な規格の信号（ＰＣＩｅ、イーサネット（登録商標））へのフレーム変換を行う。また、光・電気変換部１１１は、その逆の処理を行う。すなわち、光・電気変換部１１１は、転送処理部１１２から出力されたＰＣＩｅやイーサネット（登録商標）などの規格の下り信号を、電気信号から光信号のＰＯＮ信号に変換し、ＯＮＵに送信する。転送処理部１１２は、光・電気変換部１１１が出力したＰＯＮ信号から主信号を取得してアクセラレータ１２０に転送し、アクセラレータ１２０が出力した主信号を光・電気変換部１１１へ転送する転送処理を行う。転送処理部１１３は、アクセラレータ１２０が出力した上り信号を上位装置に転送し、上位装置から受信した下り信号をアクセラレータ１２０へ転送する。
【００２５】
アクセラレータ１２０は、例えばＧＰＵであり、図１のアクセラレータボード１２に搭載される。アクセラレータ１２０は、カーネル実行部１２１及びカーネル実行部１２２を有する。
【００２６】
カーネル実行部１２１は、カーネルを実行し、上り信号に対する物理演算を行うブロック同期部１２１１、ライン復号化部１２１２、誤り訂正復号化部１２１３、及び、ＰＯＮ  ＭＡＣ(Medium Access Control)処理部１２１４を動作させる。ブロック同期部１２１１は、ＦＰＧＡ１１０から転送された上りの主信号に対してブロック同期を行い、ライン復号化部１２１２に出力する。ライン復号化部１２１２は、ブロック同期部１２１１が出力した上りの主信号にライン復号化等を行い、誤り訂正復号化部１２１３に出力する。誤り訂正復号化部１２１３は、ライン復号化部１２１２が出力した上りの主信号に誤り訂正復号を行い、ＰＯＮ  ＭＡＣ処理部１２１４に出力する。ＰＯＮ  ＭＡＣ処理部１２１４は、誤り訂正復号化部１２１３が出力した上りの主信号に対して、ＰＯＮ  ＭＡＣ処理を行い、ＦＰＧＡ１１０の転送処理部１１３に転送する。
【００２７】
カーネル実行部１２２は、カーネルを実行し、下り信号に対する物理演算を行うＰＯＮ  ＭＡＣ処理部１２２１、暗号化符号化部１２２２、誤り訂正符号化部１２２３及びライン符号化部１２２４を動作させる。ＰＯＮ  ＭＡＣ処理部１２２１は、ＦＰＧＡ１１０の転送処理部１１３から転送された主信号に対してＰＯＮ  ＭＡＣ処理を行い、暗号化符号化部１２２２に出力する。暗号化符号化部１２２２は、ＰＯＮ  ＭＡＣ処理部１２２１が出力した下りの主信号に暗号化及び符号化を行い、誤り訂正符号化部１２２３に出力する。誤り訂正符号化部１２２３は、暗号化符号化部１２２２が出力した下りの主信号に誤り訂正符号化を行い、ライン符号化部１２２４に出力する。ライン符号化部１２２４は、誤り訂正符号化部１２２３が出力した下りの主信号にライン符号化等を行い、ＦＰＧＡ１１０の転送処理部１１２に転送する。
【００２８】
ＣＰＵ１３は、転送制御部１３１、カーネル制御部１３２、メモリコピー部１３３及び管理アプリ実行部１３４を備える。転送制御部１３１は、ＦＰＧＡ１１０の転送処理部１１２及び転送処理部１１３に対して転送命令を出力することにより、主信号（データ）の転送の制御を行う。カーネル制御部１３２は、アクセラレータ１２０におけるカーネル実行部１２１、１２２に起動命令を出力することにより、カーネル実行部１２１、１２２のプログラムの起動を管理する。メモリコピー部１３３は、ＣＰＵ１３が保持するメモリに記録されたパラメータをコピーし、アクセラレータ１２０に出力する。出力するパラメータは、アクセラレータ１２０における処理内容を決定するパラメータである。このパラメータには、例えば、カーネル実行部１２１においていずれの機能部を実行させるかを示すパラメータ（又は各機能部を実行させるか否かを示すパラメータ）や、実行させる対象の機能部が処理を行うときの条件等を指示するパラメータなどが含まれる。管理アプリ実行部１３４は、管理アプリを実行する。管理アプリの詳細は、第２の実施形態において説明する。
【００２９】
図３は、ＩＦ回路１１及びＣＰＵ１３が備える機能の詳細を示す。同図では、アクセラレータ１２０の一例として、ＧＰＵ１２０ａを用いた場合を示している。ＧＰＵ１２０ａのカーネル実行部１２３は、図２に示すカーネル実行部１２１及びカーネル実行部１２２に相当する。
【００３０】
ＰＯＮの転送処理部１１２は、事前処理部１１２１とＤＭＡ（Direct Memory Access）処理部１１２２とを有する。なお、転送処理部１１３も転送処理部１１２と同様の構成であるが、光・電気変換部１１１を介さずに上位装置から信号を受信する。ＣＰＵ１３の転送制御部１３１は、割り込み／ポーリング制御部１３１１、アドレス制御部１３１２、アドレス設定部１３１３及びＤＭＡスタート部１３１４を備える。ＣＰＵ１３のカーネル制御部１３２は、ストリーム制御部１３２１及びカーネル起動部１３２２を備える。
【００３１】
ＩＦ回路１１の光・電気変換部１１１は、ＯＮＵからのＰＯＮ信号を入力データとして受信すると、光・電気信号変換処理を行ってＰＯＮ信号を光信号から電気信号に変換する。転送処理部１１２の事前処理部１１２１は、電気信号に変換されたデータ入力をバッファしてＰＣＩｅ等のプロトコルのデータに変換すると、データ転送可能を示す割り込み信号をＣＰＵ１３に送信する。このように、ＩＦ回路１１が外部から信号を受信する度に、割り込み信号がＣＰＵ１３に送信される。
【００３２】
ＣＰＵ１３の割り込み／ポーリング制御部１３１１は、ＩＦ回路１１からの割り込み信号を受信又はポーリングし、アドレス制御部１３１２を立ち上げる。アドレス制御部１３１２は、ＩＦ回路１１から入力されるデータのバッファ先となるＧＰＵ１２０ａの仮想アドレスを決定する。なお、アドレス制御部１３１２は、事前にＧＰＵ１２０ａの仮想メモリ領域を確保し、アドレス設定部１３１３は、仮想アドレスに対応する物理メモリを取得しておく。仮想アドレスは、仮想メモリ領域におけるアドレスである。バッファ先の仮想アドレスの決定後、アドレス設定部１３１３は、その仮想アドレスに対応した物理アドレスを取得する。アドレス設定部１３１３は、取得した物理アドレスの値をＩＦ回路１１に出力し、ＩＦ回路１１にデータの転送先アドレスとして設定する。
【００３３】
ＤＭＡスタート部１３１４は、転送処理部１１２のＤＭＡ処理部１１２２に、ＩＦ回路１１からＧＰＵ１２０ａへのＤＭＡの開始を命令する。この命令を受け、ＩＦ回路１１において転送処理部１１２のＤＭＡ処理部１１２２は、プロトコル変換されたデータ入力を、バッファしていたメモリから、ＧＰＵ１２０ａのメモリへ転送する転送処理を開始する。転送先のＧＰＵ１２０ａのメモリは、アドレス設定部１３１３により設定された転送先アドレスが示すメモリである。
【００３４】
ＣＰＵ１３のストリーム制御部１３２１は、複数のカーネルを起動可能なＧＰＵ１２０ａを利用する際に、何番目のカーネルを起動するかの決定を行う。ストリーム制御の詳細は、第３の実施形態にも示す。最後に、カーネル起動部１３２２は、ＧＰＵ１２０ａのカーネル実行部１２３を起動する。このとき、カーネル起動部１３２２は、ストリーム制御部１３２１が決定したカーネルを起動させる。このカーネルの起動により、ＧＰＵ１２０ａのカーネル実行部１２１は、ブロック同期部１２１１、ライン復号化部１２１２、誤り訂正復号化部１２１３、及び、ＰＯＮ  ＭＡＣ処理部１２１４を実行させる。ＣＰＵ１３の割り込み／ポーリング制御部１３１１は、次のデータの割り込み処理やポーリングを行う。
【００３５】
ＧＰＵ１２０ａからＩＦ回路１１の転送処理部１１３へのデータの送信の場合も、上記と同様の転送制御を行う。すなわち、ＣＰＵ１３のアドレス制御部１３１２は、ＧＰＵ１２０ａにおける転送元の仮想メモリ領域を事前に確保し、アドレス設定部１３１３は、その転送元の仮想メモリ領域の物理メモリを取得しておく。アドレス制御部１３１２は、転送元の仮想アドレスを決定し、アドレス設定部１３１３は、ＩＦ回路１１の転送処理部１１３に、転送元の仮想アドレスに対応した物理アドレスを設定する。ＩＦ回路１１の転送処理部１１３は、設定されたＧＰＵ１２０ａの物理アドレスからデータを取得し、取得したデータにプロトコル変換を行って上位装置に送信する。
【００３６】
上位装置からの信号受信の場合も、上述したＯＮＵからの信号受信と同様の処理を行う。ただし、ＩＦ回路１１が上位装置から下り信号を受信すると、転送処理部１１３の事前処理部１１２１は、受信した下り信号をバッファしてＰＣＩｅ等のプロトコルに変換し、データ転送可能を示す割り込み信号をＣＰＵ１３に送信する。また、転送処理部１１３のＤＭＡ処理部１１２２は、プロトコル変換されたデータ入力を、バッファしていたメモリから、アドレス設定部１３１３により設定された転送先アドレスが示すＧＰＵ１２０ａのメモリへ転送する。ＧＰＵ１２０ａのカーネル実行部１２２は、カーネル起動部１３２２からの指示を受けてカーネルを起動し、ＰＯＮ  ＭＡＣ処理部１２２１、暗号化符号化部１２２２、誤り訂正符号化部１２２３及びライン符号化部１２２４を実行させる。その後、ＣＰＵ１３のアドレス設定部１３１３は、アドレス制御部１３１２が決定したデータ転送元の物理アドレスをＩＦ回路１１の転送処理部１１２に設定する。ＩＦ回路１１の転送処理部１１２は、設定されたＧＰＵ１２０ａの物理アドレスからデータを取得する。ＩＦ回路１１の転送処理部１１２は、取得したデータをＰＯＮ信号に変換して光・電気変換部１１１に出力し、光・電気変換部１１１は、ＰＯＮ信号を電気信号から光信号に変換してＯＮＵへ送信する。
【００３７】
本実施形態により、通信装置は、汎用デバイスを用いて信号処理を行うことが可能となる。
【００３８】
［第２の実施形態］
図４は、本実施形態のＣＰＵ１３におけるハードウェアの設定フローを示す図である。まず、外部から通信装置１をどのような設定で利用するか決定するための指示が、外部入力としてＣＰＵ１３に入力される。ＣＰＵ１３の管理アプリ実行部１３４は、外部入力の値に応じて、管理アプリ内に予め保持していたパラメータテーブルからアクセラレータ利用のための設定を呼び出す（ステップＳ１０）。この設定として、例えば、転送制御部１３１がカーネル実行部１２３を起動する際に使用するブロック数、スレッド数、ストリーム数、コンスタントメモリに格納するための定数などのカーネルパラメータの値や、転送処理で使用するバッファサイズ等のパラメータの値を得る。
【００３９】
アドレス制御部１３１２は、管理アプリ実行部１３４からＧＰＵ１２０ａのバッファサイズの入力を受ける。アドレス制御部１３１２は、ＩＦ回路１１が保持しているデータをＧＰＵ１２０ａへ転送可能とするため、バッファサイズに基づいて、ＧＰＵ１２０ａの仮想メモリを確保する（ステップＳ２０）。アドレス設定部１３１３は、メモリマッピングによって物理メモリと、アドレス制御部１３１２が確保した仮想メモリとの対応付けを行う(ステップＳ３０）。アドレス設定部１３１３は、ＩＦ回路１１にＤＭＡ転送先バッファの物理メモリ設定を行い、ＣＰＵ１３を介さずにＩＦ回路１１からＧＰＵ１２０ａへのデータの転送を可能とする(ステップＳ４０）。
【００４０】
一方、カーネル起動部１３２２は、ステップＳ１０において管理アプリ実行部１３４が呼び出したカーネルパラメータをカーネル制御部１３２に出力する。カーネル制御部１３２は、カーネルパラメータに基づいて、事前計算可能なパラメータ（例えば、後述する対応テーブル等）のコンスタントメモリへの転送や、ブロック数、スレッド数の値などの設定を行う（ステップＳ５０）。なお、割り込み発生時には、ストリーム制御部１３２１は、カーネルパラメータの設定に基づいて起動するストリームを決定し、カーネル起動部１３２２は、カーネルパラメータの設定に基づいて、カーネル実行部１２３を起動する。
【００４１】
アクセラレータ１２０は、複数の規格それぞれに応じた信号処理を行う機能部を実装しておくことができ、一部の機能部については複数の規格に共通して使用される。なお、複数の規格に共通して使用される機能部であっても、信号処理を行うときの条件が異なる場合がある。そこで、メモリコピー部１３３は、ＩＦ回路１１における信号受信によってＣＰＵ１３に割り込みが発生したときに、上記のステップＳ１０の処理を開始するときに外部から入力された指示に基づいて、アクセラレータ１２０において行う処理内容を示すパラメータを決定する。このパラメータの決定には、ＩＦ回路１１が受信信号から取得し、ＣＰＵ１３に転送したデータや、その転送されたデータに基づいて得られた情報等をさらに用いてもよい。メモリコピー部１３３は、決定したパラメータをカーネル実行部１２３に出力する。カーネル実行部１２３は、受信したパラメータに従って、各機能部を実行させる。例えば、カーネル実行部１２１にブロック同期部１２１１、ライン復号化部１２１２、誤り訂正復号化部１２１３、及び、ＰＯＮ  ＭＡＣ処理部１２１４のうち一部のみを実行させることや、これらの機能部が物理演算を行うときに使用するデータ形式等を変更するよう制御することが可能となる。
【００４２】
このように、外部入力に応じてＧＰＵカーネルパラメータを変更することにより、外部との通信装置１との間の通信の規格に応じた機能部を実行させたり、決められた動作条件やトラヒック量などの条件に従って各機能部を実行させたりすることが可能となる。
【００４３】
［第３の実施形態］
図５は、ストリーム処理を用いた高速化手法を示す図である。
ＣＰＵ１３のカーネル起動部１３２２は、データの割り込み又はポーリング毎に、ストリーム処理を用いてカーネル起動を行う。カーネルの起動のタイミングは、データ入力時とし、割込み処理における割込みハンドラや、ポーリング時のデータ入力タイミング検出時とする。ＣＰＵ１３のカーネル起動部１３２２は、データ入力の度にカーネルを起動する。ＧＰＵ１２０ａは、最も早く処理を開始したカーネルから順番（ＬＲＵ：Least Recently Used）にデータを出力する。ＣＰＵ１３は、ＧＰＵ１２０ａからのデータの出力前にストリームの処理が完了しているか確認処理を行い、完了していない場合には、ＣＰＵ１３においてエラー発生時の処理を行う機能部（図示せず）に対してエラーを出力する。ストリーム処理の完了の確認方法としては、ＣＵＤＡ言語におけるcudaStreamQueryをコールする方法や、ＧＰＵ１２０ａがストリーム処理の終了時にメモリに設定する完了フラグを読み込んで確認する方法がある。
【００４４】
［第４の実施形態］
図６は、誤り訂正処理のメモリアクセス高速化方法を示す図である。誤り訂正処理は、入力データのアクセス頻度が高い一方、出力データのアクセス頻度は低く、バイト（Byte）単位のエラーレートと同程度になる性質を使う。
【００４５】
アクセラレータ１２０は、複数のＳＭ（ストリーミングマルチプロセッサ）と、メモリ（Memory）及びＬ２キャッシュ（L2 Cashe）とを有する。メモリは、例えば、ＤＲＡＭ（Dynamic Random Access Memory）などの低速のグローバルメモリであり、全ＳＭから参照可能なメモリである。Ｌ２キャッシュはグローバルメモリから読み出されたデータをキャッシュする。
【００４６】
各ＳＭは、複数のコア（Ｃｏｒｅ）及びＤＰ（Double Precision）ユニットと、レジスタ（Register）、Ｌ１キャッシュ（L1 Cache）、共有メモリ（Shared memory）及び読出し専用メモリ（Read-only memory）とを有するスレッドブロックである。コア及びＤＰユニットは、スレッド毎の演算器である。レジスタは、コア及びＤＰユニットが演算に用いるデータを記憶するメモリであり、コア及びＤＰユニットから高速にアクセスが可能である。Ｌ１キャッシュは、共有メモリから読み出したデータをキャッシュするメモリである。共有メモリは、同一のＳＭ内で共有される、読書き可能なメモリである。読出し専用メモリは、同一のＳＭ内で共有される、読出しのみが可能なデータを記憶するコンスタントメモリである。
【００４７】
アクセラレータ１２０は、ＩＦ回路１１から転送され、グローバルメモリに書き込んだ処理対象の入力データＤ１を、ローカル変数にコピーすることで、アクセラレータ１２０の高速メモリ（レジスタ等）に保持する。その後に、誤り訂正復号化部１２１３が誤り訂正処理を開始し、高速メモリに保持された入力データＤ２を用いて誤り訂正処理を実行する。誤り訂正復号化部１２１３は、誤り訂正処理の実行と並列の処理により、入力データＤ１をコピーした出力データＤ３をグローバルメモリに書き込む。誤り訂正復号化部１２１３は、その出力データＤ３に関しては全てのデータをローカル変数にコピーせず、誤り訂正処理の実行によって誤りの発生を検出した場合に、検出の都度、コンスタントメモリにアクセスして出力データＤ３から誤り発生部分のデータＤ４をコピーし、レジスタに保持する。誤り訂正復号化部１２１３は、データＤ４を参照して誤り訂正処理により正しい復号データを得ると、得られた正しい復号データによりデータＤ４を書き換える。誤り訂正復号化部１２１３は、書き換え後のデータＤ４により、出力データＤ３の誤り発生部分を書き換える。これにより、高速なメモリアクセスを実現する。
【００４８】
本実施形態は、第１〜第３の実施形態の構成で用いられるだけではなく、一般的な誤り訂正復号化のＧＰＵ実装においても用いることができる。
【００４９】
［第５の実施形態］
図７は、誤り訂正処理のテーブルアクセス高速化方法を示す図である。誤り訂正処理においては、バイナリ−ガロア体変換演算を複数回行う必要があるため、通常は対応テーブルをメモリ保持して処理を行う。ここではメモリ配置の高速化手法を示す。図７に示すアクセラレータ１２０の構成は、図６に示す第４の実施形態のアクセラレータ１２０の構成と同様である。
【００５０】
ＧＰＵ等のアクセラレータ１２０においては、定数を事前に読出し専用メモリ（コンスタントメモリ）に転送することが可能である。そこで、誤り訂正処理に使用されるバイナリ−ガロア体変換テーブル（対応テーブル）をアクセラレータ１２０に事前転送し、読出し専用メモリに設定しておく。その後、カーネル起動時に、スレッドブロック毎（ＳＭ毎）に高速なメモリ（シェアードメモリ等）へそのバイナリ−ガロア体変換テーブルを転送した後に、各コアが誤り訂正処理の演算を行う。これにより、バイナリ−ガロア体変換テーブルへのメモリアクセスの高速化を実現し、誤り訂正演算を高速に行う。
【００５１】
本実施形態は、第１〜第３の実施形態の構成で用いられるだけではなく、一般的な誤り訂正復号化のＧＰＵ実装においても用いることができる。
【００５２】
アクセス装置の仮想化では、例えば、物理的に複数に分かれているハードウェアを、論理的に一つのアクセス装置に見せかける。この仮想化のためには、通信装置の主信号処理を高速処理できる汎用ハードウェアが必要となる。汎用装置の場合、従来、主信号はＣＰＵを一旦経由した上で、ＧＰＵ等のアクセラレータが処理を行っていた。しかし、より高速に主信号を処理するためには、ＧＰＵに直接主信号を転送して処理を行うことが望ましい。本実施形態の通信装置は、主信号（ＰＯＮ規格の信号等）を汎用の規格に変換した後に、ＣＰＵを介さずに、入力データを直接ＧＰＵ等のアクセラレータに転送し、信号処理を行う。これにより、アクセス装置の仮想化において必須のＰＯＮ機能のソフト化を可能とし、アクセス装置の仮想化の具体的な実現に寄与する。
【００５３】
以上説明した実施形態によれば、通信装置（例えば、通信装置１）は、受信した信号を所定の規格のデータに変換するインタフェース回路（例えば、ＩＦ回路１１）と、データに対する信号処理を実行するアクセラレータ（例えば、アクセラレータ１２０）と、アクセラレータ及びインタフェース回路を制御する中央処理装置（例えば、ＣＰＵ１３）とを備える。通信装置は、例えば、端局装置及び上位装置と接続される終端装置であり、光アクセスネットワークのアクセス装置として用いられる。
【００５４】
中央処理装置は、割り込み受信部（例えば、割り込み／ポーリング制御部１３１１）と、アドレス設定部（例えば、アドレス設定部１３１３）と、転送指示部（例えば、ＤＭＡスタート部１３１４）と、カーネル制御部（例えば、カーネル制御部１３２）とを備える。割り込み受信部は、インタフェース回路において信号が変換されたことによる割り込みを受ける。アドレス設定部は、割り込み受信部が割り込みを受けた場合に、アクセラレータにおけるデータの転送先アドレスをインタフェース回路に設定する。転送指示部は、変換したデータを転送先アドレスへ転送するようインタフェース回路に指示する。カーネル制御部１３２は、アクセラレータにカーネルの起動を指示する。
【００５５】
インタフェース回路は、転送指示部からの指示を受け、変換したデータをアクセラレータの転送先アドレスへ転送する。アクセラレータは、カーネル制御部からの指示を受けてカーネルを起動し、起動したカーネルにより、インタフェース回路から転送先アドレスに転送されたデータを用いた信号処理を実行させる。信号処理は、例えば、ブロック同期部１２１１、ライン復号化部１２１２、誤り訂正復号化部１２１３、ＰＯＮ  ＭＡＣ処理部１２１４、ＰＯＮ  ＭＡＣ処理部１２２１、暗号化符号化部１２２２、誤り訂正符号化部１２２３及びライン符号化部１２２４が実行する演算処理であり、物理層の処理を含み得る。
これにより、インタフェース回路からの主信号を、ＣＰＵを介さずに直接アクセラレータに転送し、アクセラレータで信号処理を行うことができる。
【００５６】
なお、中央処理装置は、割り込み受信部が割り込みを受けた場合に、データの転送先となる仮想アドレスを決定するアドレス制御部をさらに有してもよい。アドレス設定部は、アドレス制御部が予め確保した仮想メモリと物理メモリとをマッピングしておき、アドレス制御部が決定した仮想アドレスの仮想メモリに対応した物理メモリのアドレスをそのマッピングに基づき取得して、転送先アドレスとする。
【００５７】
また、カーネル制御部は、外部から入力された通信装置の起動方法に応じて、アクセラレータにおいて信号処理を行うハードウェアに関する設定と信号処理の処理内容に関する設定との少なくとも一方を取得し、取得した設定に基づいてカーネルの起動を指示してもよい。ハードウェアに関する設定は、例えば、バッファサイズ、カーネルパラメータなどである。信号処理の処理内容に関する設定は、実行する信号処理や、信号処理を行うときの条件である。
【００５８】
また、カーネル制御部は、割り込み受信部が主信号の入力を示す割り込み信号をインタフェース回路から受信する度にカーネルを起動する。アクセラレータは、カーネル制御部からの指示を受けてカーネルを実行するカーネル実行部を複数有し、複数のカーネル実行部それぞれが起動したカーネルにより信号処理を実行させた結果得られたデータを、カーネルの起動順に出力してもよい。これにより、入出力と信号処理を行う機能部をパイプライン化し、装置のスループット向上を行うことができる。
【００５９】
なお、信号処理が誤り訂正処理を含む場合、アクセラレータは、インタフェース回路からグローバルメモリに転送された誤り訂正処理の対象のデータを高速メモリのレジスタに格納し、レジスタに格納されたデータを用いた誤り訂正処理の実行と並行して誤り訂正処理の対象のデータをコピーした出力データをグローバルメモリに格納する。実行中の誤り訂正処理において誤り発生部分が検出された場合には誤り発生部分のデータを出力データから取得してレジスタに転送し、レジスタに格納された誤り発生部分のデータに対して誤りを訂正した結果を用いて、グローバルメモリに格納された出力データにおける誤り発生部分を書き換える。これにより、誤り訂正処理を高速化することができる。
【００６０】
信号処理が誤り訂正処理を含む場合、アクセラレータは、誤り訂正処理において用いられるバイナリとガロア体の対応を示す対応テーブルを、スレッドブロック単位でアクセス可能な読み出し専用メモリなどのコンスタントメモリに格納しておく。アクセラレータは、誤り訂正処理の実行時にスレッドブロック単位でコンスタントメモリからシェアードメモリなどの高速メモリに対応テーブルを転送する。これにより、その後の対応テーブルへのアクセスを高速化し、誤り訂正処理を高速化することができる。
【００６１】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６２】
１…通信装置
１１…ＩＦ回路
１１０…ＦＰＧＡ
１１１…光・電気変換部
１１２、１１３…転送処理部
１１２１…事前処理部
１１２２…ＤＭＡ処理部
１２…アクセラレータボード
１２０…アクセラレータ
１２０ａ…ＧＰＵ
１２１、１２２…カーネル実行部
１２１１…ブロック同期部
１２１２…ライン復号化部
１２１３…誤り訂正復号化部
１２１４…ＰＯＮ  ＭＡＣ処理部
１２２１…ＰＯＮ  ＭＡＣ処理部
１２２２…暗号化符号化部
１２２３…誤り訂正符号化部
１２２４…ライン符号化部
１３…ＣＰＵ
１３１…転送制御部
１３１１…割り込み／ポーリング制御部
１３１２…アドレス制御部
１３１３…アドレス設定部
１３１４…ＤＭＡスタート部
１３２…カーネル制御部
１３２１…ストリーム制御部
１３２２…カーネル起動部
１３３…メモリコピー部
１３４…管理アプリ実行部
【図１】
2019080190.tif 000003
【図２】
2019080190.tif 000004
【図３】
2019080190.tif 000005
【図４】
2019080190.tif 000006
【図５】
2019080190.tif 000007
【図６】
2019080190.tif 000008
【図７】
2019080190.tif 000009
【図８】
2019080190.tif 000010