(57)【要約】【課題】ハードウェア演算処理を実行する場合の処理負荷の増加を回避する。【解決手段】同期方式および非同期方式のいずれかで演算を実行するＨＷ演算部１２０と、ＨＷ演算部１２０で実行することを要求された要求済み演算が終了するまでの遅延時間を算出する遅延時間算出部１０５と、次に実行が要求される要求待ち演算をＨＷ演算部１２０で実行するときの処理時間と遅延時間との和、および、非同期方式で付随して実行される処理の処理時間を表す非同期化時間を比較し、和が非同期化時間より大きい場合に、非同期方式で要求待ち演算を実行することを決定する演算方式決定部１０２と、決定された実行方式により要求待ち演算を実行することをＨＷ演算部１２０に要求する演算制御部１０３と、を備える。【選択図】図２
2010191682.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた演算を要求した処理が前記演算の終了と同期して実行される同期方式、および、前記処理が前記演算の終了と非同期に実行される非同期方式、のいずれかの実行方式で前記演算を実行する演算回路と、
前記演算回路で実行することを要求された前記演算を表す要求済み演算が終了するまでの時間を表す遅延時間を算出する遅延時間算出部と、
前記要求済み演算の次に実行が要求される前記演算を表す要求待ち演算を前記演算回路で実行するときの処理時間と前記遅延時間との和、および、前記非同期方式で前記要求待ち演算を実行するときに前記要求待ち演算に付随して実行される処理の処理時間を表す非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定する決定部と、
決定された前記実行方式により前記要求待ち演算を実行することを前記演算回路に要求する制御部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記決定部は、前記和が前記非同期化時間より小さい場合に、前記同期方式で前記要求待ち演算を実行することを決定すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算を前記非同期方式で実行できるか否かを表す可否情報を記憶する記憶部と、
前記要求済み演算のうち最後に要求された前記要求済み演算を表す最終演算が要求されたときに、前記可否情報を前記非同期方式で実行できることを表す値に更新し、前記最終演算が要求されてから、前記最終演算を前記演算回路で実行するときの処理時間と前記遅延時間との和に相当する時間が経過したときに、前記可否情報を前記非同期方式で実行できないことを表す値に更新する更新部と、をさらに備え、
前記決定部は、さらに、前記可否情報が前記非同期方式で実行できることを表す値である場合に、前記非同期方式で前記要求待ち演算を実行することを決定すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記決定部は、前記可否情報が前記非同期方式で実行できることを表す値ではない値である場合に、前記和および前記非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定すること、
を特徴とする請求項３に記載の情報処理装置。
【請求項５】
予め定められた前記非同期化時間を記憶する記憶部をさらに備え、
前記決定部は、前記和と前記記憶部に記憶された前記非同期化時間とを比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記非同期化時間を記憶可能な記憶部をさらに備え、
予め定められたテストデータに対して前記非同期方式により前記演算を実行したときの処理時間と、前記テストデータに対して前記同期方式により前記演算を実行したときの処理時間とを比較し、比較結果に基づいて前記非同期化時間を算出し、算出した前記非同期化時間を前記記憶部に保存する処理時間算出部をさらに備えたこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記処理時間算出部は、前記テストデータに対して前記非同期方式により前記演算を実行したときの処理時間と前記テストデータに対して前記同期方式により前記演算を実行したときの処理時間との差分を前記非同期化時間として算出し、算出した前記非同期化時間を前記記憶部に保存すること、
を特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記決定部は、前記演算の処理対象となるデータのデータサイズに基づいて、前記要求待ち演算を前記演算回路で実行するときの処理時間を算出し、算出した処理時間と前記遅延時間との和、および、前記非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項９】
予め定められた演算を要求した処理が前記演算の終了と同期して実行される同期方式、および、前記処理が前記演算の終了と非同期に実行される非同期方式、のいずれかの実行方式で前記演算を実行する演算回路を備えた情報処理装置で実行される情報処理方法であって、
遅延時間算出部が、前記演算回路で実行することを要求された前記演算を表す要求済み演算が終了するまでの時間を表す遅延時間を算出する遅延時間算出ステップと、
決定部が、前記要求済み演算の次に実行が要求される前記演算を表す要求待ち演算を前記演算回路で実行するときの処理時間と前記遅延時間との和、および、前記非同期方式で前記要求待ち演算を実行するときに前記要求待ち演算に付随して実行される処理の処理時間を表す非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定する決定ステップと、
制御部が、決定された前記実行方式により前記要求待ち演算を実行することを前記演算回路に要求する制御ステップと、
を備えることを特徴とする情報処理方法。
【請求項１０】
予め定められた演算を要求した処理が前記演算の終了と同期して実行される同期方式、および、前記処理が前記演算の終了と非同期に実行される非同期方式、のいずれかの実行方式で前記演算を実行する演算回路を備えたコンピュータを、
前記演算回路で実行することを要求された前記演算を表す要求済み演算が終了するまでの時間を表す遅延時間を算出する遅延時間算出部と、
前記要求済み演算の次に実行が要求される前記演算を表す要求待ち演算を前記演算回路で実行するときの処理時間と前記遅延時間との和、および、前記非同期方式で前記要求待ち演算を実行するときに前記要求待ち演算に付随して実行される処理の処理時間を表す非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定する決定部と、
決定された前記実行方式により前記要求待ち演算を実行することを前記演算回路に要求する制御部として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサユニットに対する負荷を低減可能な非同期方式と同期方式とによりハードウェア演算処理を制御して情報を処理する装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、政府機関や企業、教育機関、家庭などで広帯域ネットワークが普及し、情報漏洩やデータ改竄防止のためのネットワークセキュリティへの関心が高まっている。通信路を介して転送される通信データは、暗号化技術やメッセージ認証（ダイジェスト認証、ハッシュ認証、ＨＭＡＣ（Ｋｅｙｅｄ・Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）認証）技術を用いることで、盗聴や改ざんを防ぎ、セキュリティの向上を図ることができる。
【０００３】
通信データのセキュリティ向上を図るための通信プロトコルの代表的なものとして、ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）によって規定されているＩＰｓｅｃやＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）、ＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ，  Ｉｎｃ．）によって規定されているＷＥＰ（Ｗｉｒｅｄ  Ｅｑｕｉｖａｌｅｎｔ  Ｐｒｉｖａｃｙ）などが挙げられる。また、著作物の不正な複製の防止や、個人情報や営業機密情報、国家の防衛に関する機密情報の不正流出を防ぐためにも暗号化技術が用いられている。
【０００４】
また、近年、高精細・高音質を特徴とするデジタル放送やデジタル音楽配信などが普及している。デジタル音声データや画像データ、映像データなど各種デジタルデータは、データ圧縮技術を用いることで、記憶すべきデータ量の削減や、通信路の単位時間当たりのデータ転送容量が削減できる。特に、画像データや映像データの高精細化によってデータ量が増大しているため、圧縮技術は必須の技術となっている。
【０００５】
デジタル画像データやデジタル映像データの代表的な圧縮技術としては、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）やＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）（登録商標）が挙げられる。デジタル音声データの代表的な圧縮技術としては、ＡＡＣ（Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ）（登録商標）や、ＭＰ３（ＭＰＥＧ・１  ｆｏｒ  Ａｕｄｉｏ  Ｌａｙｅｒ・３）、ＡＴＲＡＣ（Ａｄａｐｔｉｖｅ  ＴＲａｎｓｆｏｒｍ  Ａｃｏｕｓｔｉｃ  Ｃｏｄｉｎｇ）（登録商標）が挙げられる。
【０００６】
以上のような暗号化やデータ圧縮処理などの演算処理は、汎用のコンピュータ装置に備えられた汎用のＰＵ（Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）上で、演算するための命令列（プログラム）を実行することで実現することが多い。ところが、この方法では、データ量や通信データ速度の増大に伴い、単位時間あたりに処理すべきデータ量が増大し、汎用のＰＵ上で行う演算処理の負荷が増大することになる。
【０００７】
このような問題に対しては、汎用 のＰＵとは別に特定の演算処理を行うための装置（以降、ＨＷ演算装置という）を、汎用のコンピュータ装置内に搭載することで、ＰＵによる演算処理負荷を削減することが可能となっている。このように演算処理をＨＷ演算装置で実行することを、ハードウエアオフローディング処理またはハードウェア演算処理と呼ぶことが多い。
【０００８】
ハードウェア演算処理に関して、特許文献１および特許文献２では、暗号化処理やデータ圧縮処理などの演算処理について、ＨＷ演算装置またはＰＵのいずれか処理の速い方で実行するために、ソフトウエア演算処理とハードウェア演算処理とを切り替える技術が提案されている。
【０００９】
一方、汎用ＰＵ上で動作するプログラムからＨＷ演算装置を制御する方式は、同期方式と非同期方式二つに分類することができる。同期方式とは、汎用ＰＵ上で動作するプログラムからＨＷ演算装置に演算処理を依頼した際に、ＨＷ演算装置による処理の終了を待つ処理（以下、ＨＷ演算終了待ち処理という）を行う方式をいう。同期方式は、ＨＷ演算装置で演算処理を行うプログラムで多く採用されている。
【００１０】
また、非同期方式とは、ＨＷ演算装置による処理の終了を待たずに、ハードウェア演算処理までの処理（以下、前処理という）と、ハードウェア演算処理より後の処理（以下、後処理という）が分割して実行される方式をいう。非同期方式では、ハードウエア演算処理前後で処理が分割して実行されるため、前処理が保持しているデータ（例：ハードウェア演算処理に関するパラメータ、ハードウェア演算処理を行う対象のデータ）を後処理に伝えるための処理（以下、非同期化処理という）が必要となる。非同期化処理の例としては、前処理が保持しているデータのうちすべてまたは一部を後処理に渡す、または前処理が保持しているデータのうちすべてまたは一部のデータのメモリアドレスを後処理に渡すという作業が挙げられる。
【００１１】
非同期方式の具体的な実施例として、非特許文献１では、暗号化・復号を行うＨＷ演算装置を非同期方式で制御するためのプログラムについて述べられている。しかし、現状では、非同期方式を採用した例は同期方式と比較して少ない。
【００１２】
また、非同期方式と類似の方式として、特許文献３では、メモリアクセス競合などで待ち時間イベントが発生したら、スレッドの優先度を変更して、別のスレッドへ切り替えるという方式について述べられている。しかし、切り替えを実行することによる処理時間（非同期方式では、非同期化処理にかかる時間を表す「非同期化時間」に相当）の増加が考慮されていない。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６−７６３８号公報
【特許文献２】特開２００４−１８０２５３号公報
【特許文献３】特許第３７１４５９８号公報
【非特許文献】
【００１４】
【非特許文献１】Ａ．Ｄ．Ｋｅｒｏｍｙｔｉｓ  ｅｔ  ａｌ．，  “Ｔｈｅ  Ｄｅｓｉｇｎ  ｏｆ  ｔｈｅ  ＯｐｅｎＢＳＤ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｆｒａｍｅｗｏｒｋ”，２００３  ＵＳＥＮＩＸ  Ａｎｎｕａｌ  Ｔｅｃｈｎｉｃａｌ  Ｃｏｎｆｅｒｅｎｃｅ，ＵＳＥＮＩＸ  Ａｓｓｏｃｉａｔｉｏｎ，２００３
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、演算処理の種類によっては、非同期方式によるＨＷ演算装置の制御が適さない場合がある。例えば、同期方式におけるＨＷ演算終了待ち処理がＰＵで実行される時間よりも、非同期方式における非同期化処理がＰＵで実行される時間のほうが長い場合は、同期方式でＨＷ演算装置を制御したほうがＰＵに対する負荷が減ることになる。
【００１６】
さらに別の例として、ＨＷ演算が実行開始されるまでに遅延時間が生じ、非同期化処理が実行される時間よりもその遅延時間のほうが長い場合も、同期方式でＨＷ演算装置を制御したほうがＰＵに対する負荷が減ることになる。
【００１７】
すなわち、ＰＵに対する負荷を減らすために非同期方式でＨＷ演算装置を制御するよう設計された装置であっても、かえってＰＵに対する負荷を増大させる場合があるという問題があった。
【００１８】
本発明は、上記に鑑みてなされたものであって、ハードウェア演算処理を実行する場合の処理負荷の増加を回避することができる装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
上述した課題を解決し、目的を達成するために、本発明は、予め定められた演算を要求した処理が前記演算の終了と同期して実行される同期方式、および、前記処理が前記演算の終了と非同期に実行される非同期方式、のいずれかの実行方式で前記演算を実行する演算回路と、前記演算回路で実行することを要求された前記演算を表す要求済み演算が終了するまでの時間を表す遅延時間を算出する遅延時間算出部と、前記要求済み演算の次に実行が要求される前記演算を表す要求待ち演算を前記演算回路で実行するときの処理時間と前記遅延時間との和、および、前記非同期方式で前記要求待ち演算を実行するときに前記要求待ち演算に付随して実行される処理の処理時間を表す非同期化時間を比較し、前記和が前記非同期化時間より大きい場合に、前記非同期方式で前記要求待ち演算を実行することを決定する決定部と、決定された前記実行方式により前記要求待ち演算を実行することを前記演算回路に要求する制御部と、を備えたことを特徴とする。
【００２０】
また、本発明は、上記装置で実行することができる方法およびプログラムである。
【発明の効果】
【００２１】
本発明によれば、ハードウェア演算処理を実行する場合の処理負荷の増加を回避することができるという効果を奏する。
【図面の簡単な説明】
【００２２】
【図１】図１は、第１の実施の形態にかかる通信装置を含む通信システムのネットワーク構成図である。
【図２】図２は、第１の実施の形態にかかる通信装置の構成を示すブロック図である。
【図３】図３は、ハードウエアオフローディング処理を同期方式および非同期方式で実行した場合のタイムライン図である。
【図４】図４は、第１の実施の形態における、処理時間を計測するためのテストシート例を示す図である。
【図５】図５は、第１の実施の形態における非同期化時間算出処理の全体の流れを示すフローチャートである。
【図６】図６は、図５に示す非同期化時間算出処理で記録された時刻の関係を示す図である。
【図７】図７は、第１の実施の形態における、処理時間を計測するためのテストシート例を示す図である。
【図８】図８は、図７のテストシートを用いて計測された結果から得られたＴｓｙｎｃとＴａｓｙｎｃをデータサイズごとにプロットしたグラフの一例を示す図である。
【図９】図９は、第１の実施の形態における通信処理の全体の流れを示すフローチャートである。
【図１０】図１０は、第１の実施の形態における演算方式決定処理の全体の流れを示すフローチャートである。
【図１１】図１１は、第１の実施の形態における演算方式決定部の判断結果を示す図である。
【図１２】図１２は、第２の実施の形態にかかる通信装置の構成を示すブロック図である。
【図１３】図１３は、第２の実施の形態における通信処理の全体の流れを示すフローチャートである。
【図１４】図１４は、フラグ領域の値を書き換える時刻と演算の処理時間等との関係を示す図である。
【図１５】図１５は、第２の実施の形態における演算方式決定処理の全体の流れを示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下に添付図面を参照して、この発明にかかる情報を処理する装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
【００２４】
（第１の実施の形態）
第１の実施の形態にかかる情報処理装置は、ハードウェアにより暗号化処理を実行するときに、暗号化するデータの属性（データサイズ）、および、実行中または実行待ちの演算処理が完了するまでの遅延時間に応じて、同期方式および非同期方式のいずれかの方式を採用する。
【００２５】
なお、第１の実施の形態では、情報処理装置の一例として、ＩＰｓｅｃプロトコルに従い通信処理を行う通信装置を用いた例について説明する。ただし、適用可能な装置はこのような通信処理を実行する通信装置に限られるものではなく、暗号化処理、データ圧縮処理など特定の演算をハードウェアにより実行する機能を備えた装置であれば、あらゆる装置に適用できる。
【００２６】
図１は、第１の実施の形態にかかる通信装置１００を含む通信システムのネットワーク構成図である。図１に示すように、第１の実施の形態の通信システムは、通信装置１００と、通信相手である通信装置２００とが、ＩＰネットワーク３００で接続された構成となっている。また、通信装置１００および通信装置２００は、それぞれ端末装置４００および端末装置５００に接続されている。
【００２７】
通信装置１００は、ＩＰｓｅｃプロトコルに関するパケット処理やデータ処理を行う装置であり、暗号化処理等をハードウェアにより実行する機能を備えている。同図に示すように、通信装置１００は、ＩＰネットワーク３００および端末装置４００に対して、それぞれネットワークインタフェース１３０およびネットワークインタフェース１３１を介して接続する。
【００２８】
通信装置２００は、通信装置１００とＩＰｓｅｃプロトコルによって通信する装置である。端末装置４００および端末装置５００は、それぞれ、通信装置１００および通信装置２００を介してデータを送受信する装置である。
【００２９】
次に、図２を参照して通信装置１００の詳細な構成について説明する。図２は、第１の実施の形態にかかる通信装置１００の構成を示すブロック図である。同図に示すように、通信装置１００は、主なハードウェア構成として、ＰＵ１１０と、ＨＷ演算部１２０と、メモリ１４０と、ネットワークインタフェース１３０と、ネットワークインタフェース１３１と、を備えている。
【００３０】
これらはすべて共有バス１１１に接続されており、共有バス１１１を介して相互にデータが受け渡される。なお、ネットワークインタフェース１３０、１３１は第１の実施の形態の例を示すために記載されたものであり、通信が必要ない場合には搭載されていなくてもよい。また、ネットワークインタフェースの個数は２つに限られるものではなく、処理内容等に応じて１つまたは３つ以上のネットワークインタフェースを搭載するように構成してもよい。
【００３１】
ＨＷ演算部１２０は、暗号化・復号、データ圧縮・伸張などの特定の演算をハードウェアにより処理する演算回路である。例えば、ＨＷ演算部１２０は、特定の演算処理を行うために専用に作られたＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのデバイスや、特定の演算処理の命令列を記憶装置からロードして回路を構成するプログラマブルなデバイスなどによって構成することができる。
【００３２】
メモリ１４０は、ＰＵ１１０がデータ処理を行う際に、データ処理に関する命令列や、処理対象データを保存するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置である。なお、メモリ１４０はＲＡＭに限られるものではなく、メモリカード、光ディスク、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００３３】
ネットワークインタフェース１３０、１３１は、通信装置１００が外部の装置とデータを送受信するためのデバイスである。ネットワークインタフェース１３０、１３１は、イーサネット（登録商標）、ＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）（登録商標）、およびＦＡＸ  Ｍｏｄｅｍなどの有線通信用インタフェース、またはＷｉＦｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）（登録商標）（無線ＬＡＮ）および携帯電話などの無線通信用インタフェースなど、一般的に利用されているあらゆるインタフェースにより構成できる。
【００３４】
共有バス１１１は、ＰＵ１１０やメモリ１４０などのデバイス相互でデータの送受信を電磁的または光学的に行うための通信路である。
【００３５】
ＰＵ１１０は、主なソフトウエア構成である処理時間算出部１０１、演算方式決定部１０２、演算制御部１０３、ネットワーク処理部１０４、および遅延時間算出部１０５に関する各タスクを実行するための装置である。
【００３６】
処理時間算出部１０１は、演算方式決定部１０２がＨＷ演算部１２０の処理で同期方式、非同期方式のいずれを選択するか判断する際の判断基準となる情報である非同期化時間を、実際のデータ処理の前に事前に算出する。非同期化時間とは、非同期方式により演算処理を実行するときに、当該演算処理に付随して実行される処理の処理時間をいう。言い換えると、非同期化時間は、上述のような非同期化処理を実行するために必要となるオーバーヘッドに相当する。
【００３７】
非同期化時間を算出する非同期化時間算出処理は、同期方式選択時における処理時間の計測、非同期方式選択時における処理時間の計測、同期方式と非同期方式の計測結果を用いた非同期化時間算出のステップで構成される。非同期化時間算出処理の処理フローの詳細は後述する。
【００３８】
演算方式決定部１０２は、処理時間算出部１０１によって算出された判断基準（非同期化時間）等に基づいて、ＨＷ演算部１２０による演算の実行方式（以下、演算方式という）を、同期方式および非同期方式のいずれかに決定する。決定する方法の詳細は後述する。
【００３９】
演算制御部１０３は、ＨＷ演算部１２０による暗号化・復号、データ圧縮・伸張などの特定の演算処理の実行を制御する。具体的には、演算制御部１０３は、ネットワーク処理部１０４から演算に関するパラメータを受け取り、受け取ったパラメータに従ってＨＷ演算部１２０に処理を指示する。演算制御部１０３は、例えば、処理アルゴリズム、処理対象データのメモリ格納領域、および処理対象データサイズなどをパラメータとして受け取る。
【００４０】
ネットワーク処理部１０４は、アプリケーションやシステムの処理を実行する主たる部分であり、演算制御部１０３を用いて、処理の一部、またはすべてをＨＷ演算部１２０に実行させる。第１の実施の形態は通信処理の例であるため、ネットワーク処理部１０４は、通信装置１００と外部装置との間でデータを送受信するための各種処理を行う。例えば、ネットワーク処理部１０４は、ネットワークインタフェース１３０から受信したデータ（パケット）のヘッダ部分の解析や通信プロトコル処理、ネットワークインタフェース１３０、１３１から送信するためのデータ（パケット）のヘッダ部分の作成や通信プロトコル処理を行う。
【００４１】
遅延時間算出部１０５は、演算方式決定部１０２の依頼に応じて、現在時刻から、要求済み演算が終了する時刻までの時間を表す遅延時間を算出する。
【００４２】
なお、通信装置１００は、ＰＵ１１０、メモリ１４０、およびＨＷ演算部１２０のいずれか２つ以上をＳｙｓｔｅｍ  ｏｎ  ｃｈｉｐ（ＳｏＣ）などの半導体デバイスに搭載するように構成してもよい。
【００４３】
次に、図３を参照して、非同期化時間と、非同期化方式で演算を実行することによる効果を表す非同期化効果という概念について説明する。図３は、ハードウエアオフローディング処理を同期方式および非同期方式で実行した場合のタイムライン図である。
【００４４】
前処理３０１は、ＰＵ１１０で実行されるソフトウエア処理からＨＷ演算部１２０で実行される演算処理を呼び出すための処理である。例えば、ソフトウエア処理がＩＰｓｅｃトンネルモードにおけるパケット処理である場合は、ＩＰｓｅｃパケットを受信してパケットを解析することを含む処理に相当する。
【００４５】
後処理３０５は、ＨＷ演算部１２０で実行された演算処理の結果を受け取るための処理である。例えば、ソフトウエア処理がＩＰｓｅｃトンネルモードにおけるパケット処理である場合は、演算処理を施されたデータをＩＰｓｅｃパケットにカプセル化して所定のネットワークインタフェースからパケットを出力することを含む処理に相当する。
【００４６】
Ｔｄｅｌａｙ３０２は、前処理３０１が、ＨＷ演算部１２０に対して、次に実行を要求する演算処理（要求待ち演算）の開始を要求した時点から、要求待ち演算がＨＷ演算部１２０上で実行開始される時点までの時間（遅延時間）を指している。Ｔｄｅｌａｙ３０２が０でない値を取る場合の例としては、ＨＷ演算部１２０上で既に要求された演算処理（要求済み演算）を実行している時間と前処理３０１が要求待ち演算の開始を要求する時点が重なった場合が考えられる。
【００４７】
Ｔｈｗ３０３は、前処理３０１が開始を要求する要求待ち演算をＨＷ演算部１２０が実行するのに掛る時間を指している。
【００４８】
ポーリング処理３０４は、前処理３０１がＨＷ演算部１２０に要求待ち演算の開始を要求した時点から、要求済み演算が終了するまで待機するための処理である。ポーリング処理３０４では、実行中の演算処理が終了したか否かを判別する処理を繰り返し実行することになる。この処理は同期方式のみに必要な処理であり、非同期方式ではこの処理は実行されない。
【００４９】
非同期化処理３１１は、非同期方式でハードウエアオフローディング処理を実行する場合に、同期方式のようにポーリング処理３０４を実行せずに済むようにするために必要な処理を指している。具体例としては、前処理３０１が保持している一時的に必要な変数を後処理３０５でも利用可能にするためにメモリ１４０上の所定のアドレスに当該変数を記録する処理が例として挙げられる。
【００５０】
非同期化効果３１２は、同期方式の場合にＰＵ１１０上で実行される処理の処理時間と、非同期方式の場合にＰＵ１１０上で実行される処理の処理時間との差を示している。非同期化効果３１２をＧとすると、Ｇは以下の（１）式で表される。（１）式では、非同期化時間をＴｏｈと表している。
Ｇ＝Ｔｄｅｌａｙ＋Ｔｈｗ−Ｔｏｈ  ・・・（１）
【００５１】
本実施の形態では、演算方式決定部１０２が、この非同期化効果３１２が正の値となるか負の値となるかによって、同期方式で実行するか非同期方式で実行するかを判断する。このため、遅延時間Ｔｄｅｌａｙ、ＨＷ演算部１２０による処理時間であるハードウェア処理時間Ｔｈｗ、および非同期化時間Ｔｏｈを知る必要がある。
【００５２】
なお、遅延時間は、実行中の演算処理のハードウェア処理時間、開始時刻、および現在時刻から求めることができる（詳細は後述）。そこで、以下では、ハードウェア処理時間および非同期化時間を求める方法について説明する。
【００５３】
最初に、図４〜８を参照して、処理時間算出部１０１が非同期化時間（Ｔｏｈ）を算出する処理フローについて説明する。
【００５４】
処理時間算出部１０１は、図４に示すような、テストデータや条件を予め定めたテストシートを利用して非同期化時間を計測する。図４は、第１の実施の形態における、処理時間を計測するためのテストシート例を示す図である。
【００５５】
図４に示すように、テストシートは、識別情報（Ｎｏ．）と、演算処理の内容を表す処理内容と、計測に用いるテストデータのデータサイズと、演算方式（同期または非同期）と、データの読み出しアドレスと、データの書き込みアドレスとを含んでいる。なお、処理内容の「ＡＥＳ−ＣＢＣ（暗号化）」とは、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式のＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードで暗号化処理を行うことを意味する。
【００５６】
なお、図４の例では、ＡＥＳ−ＣＢＣ（暗号化）のみを挙げているが、その他のアルゴリズムや復号化の処理を含んでもよい。また、ＨＷ演算部１２０が、暗号化・復号以外のデータ圧縮や伸張アルゴリズムなどの演算を行う場合には、処理内容にそれらの演算の内容を設定するように構成してもよい。
【００５７】
次に、図５を参照して、非同期化時間算出処理のフローについて説明する。図５は、第１の実施の形態における非同期化時間算出処理の全体の流れを示すフローチャートである。
【００５８】
まず、処理時間算出部１０１は、現在の時刻をメモリ１４０などに記録する（ステップＳ７０１）。なお、説明の便宜上、本ステップで記録された時刻を、同期方式の場合は時刻Ｔｓｙｎｃ１、非同期方式の場合は時刻Ｔａｓｙｎｃ１という。
【００５９】
処理時間算出部１０１は、演算制御部１０３に対してテストを指示する（ステップＳ７０２）。このとき、処理時間算出部１０１は、図４のようなテストシートのうちいずれかによるテストの実行を指示する。
【００６０】
指示を受けた演算制御部１０３は、テストシートの演算方式が同期か非同期かを判断する（ステップＳ７０３）。例えば、図４のテストシートのＮｏ．＝Ｃ１０１の実行が指示された場合は、演算制御部１０３は、演算方式が「同期」であると判断する。また、例えば、図４のテストシートのＮｏ．＝Ｃ１０２の実行が指示された場合は、演算制御部１０３は、演算方式が「非同期」であると判断する。
【００６１】
演算方式が同期の場合は（ステップＳ７０３：ＹＥＳ）、演算制御部１０３は、テストシートの処理内容による演算を開始するようにＨＷ演算部１２０を操作する（ステップＳ７０８）。そして、演算制御部１０３は、ＨＷ演算部１２０による処理が終了するまで待つ（ステップＳ７０９）。
【００６２】
ＨＷ演算部１２０から演算処理の終了通知を受けると、演算制御部１０３は、処理時間算出部１０１に対して同期方式による処理の終了を通知し（ステップＳ７１０）、処理を終了する。
【００６３】
ステップＳ７０３で、演算方式が非同期であると判断した場合は（ステップＳ７０３：ＮＯ）、演算制御部１０３は、処理状態を保存する処理などの非同期化の前処理を実行する（ステップＳ７１１）。次に、演算制御部１０３は、テストシートの処理内容による演算を開始するようにＨＷ演算部１２０を操作する（ステップＳ７１２）。非同期方式であるため、演算制御部１０３は非同期方式によるＨＷ演算処理を開始したことを処理時間算出部１０１に通知して処理を終了する（ステップＳ７１３）。
【００６４】
この後、ＨＷ演算部１２０から演算処理の終了通知を受けると、演算制御部１０３は、処理時間算出部１０１に対して非同期方式によるＨＷ演算処理の終了を通知する（ステップＳ７１４）。次に、演算制御部１０３は、保存した処理状態を呼び出す処理などの非同期化の後処理を実行する（ステップＳ７１５）。後処理が完了すると、演算制御部１０３は、処理時間算出部１０１に対して非同期方式による処理の終了を通知し（ステップＳ７１６）、処理を終了する。
【００６５】
ステップＳ７０８またはステップＳ７１２で、演算制御部１０３から演算開始の操作を受けたＨＷ演算部１２０は、指示された処理内容の演算処理を実行する（ステップＳ７１７）。例えば、図４のテストシートのＮｏ．＝Ｃ１０１またはＣ１０２の実行が指示された場合、ＨＷ演算部１２０は、アルゴリズムがＡＥＳのＣＢＣモードの暗号化を、メモリ１４０上のアドレスＡ０１から６４ｂｙｔｅ分のデータに対して行い、処理結果のデータをメモリ１４０上のアドレスＡ０２から６４ｂｙｔｅ分の領域に書き込む。
【００６６】
演算処理が終了した場合は、ＨＷ演算部１２０は、演算制御部１０３に演算処理の終了を通知し（ステップＳ７１８）、処理を終了する。
【００６７】
ステップＳ７０２でテストを指示した後、処理時間算出部１０１は、指示したテストの演算方式が同期か非同期かを判断する（ステップＳ７０４）。非同期の場合は（ステップＳ７０４：ＮＯ）、処理時間算出部１０１は、演算制御部１０３からＨＷ演算処理の開始通知を受けた時点の時刻Ｔａｓｙｎｃ２を記録する（ステップＳ７０５）。さらに、処理時間算出部１０１は、演算制御部１０３からＨＷ演算処理の終了通知を受けた時点の時刻Ｔａｓｙｎｃ３を記録する（ステップＳ７０７）。
【００６８】
時刻Ｔａｓｙｎｃ３を記録後、処理時間算出部１０１は、演算制御部１０３から処理の終了通知を受けた時点の時刻を記録する（ステップＳ７１９）。なお、説明の便宜上、本ステップで記録された時刻を、同期方式の場合は時刻Ｔｓｙｎｃ２、非同期方式の場合は時刻Ｔａｓｙｎｃ４という。
【００６９】
図６は、このようにして記録された時刻の関係を示す図である。図６は、図３と同様のタイムライン図に、各時刻であるＴｓｙｎｃ１、Ｔｓｙｎｃ２、Ｔａｓｙｎｃ１、Ｔａｓｙｎｃ２、Ｔａｓｙｎｃ３、および、Ｔａｓｙｎｃ４を記載している。
【００７０】
図５に戻り、処理時間算出部１０１は、テストシートのすべてのデータを処理したか否かを判断し（ステップＳ７２０）、すべてのデータを処理していない場合は（ステップＳ７２０：ＮＯ）、次にデータに対して処理を繰り返す（ステップＳ７０１）。
【００７１】
このようにして、処理時間算出部１０１は、データサイズの異なるデータごとに各演算方式による演算処理の処理時間を求めるための時刻を記録することができる。なお、各時刻は、テストシートの「Ｎｏ．」それぞれに対応づけられて記録される。
【００７２】
すべてのデータを処理した場合は（ステップＳ７２０：ＹＥＳ）、処理時間算出部１０１は、記録した各時刻を元に非同期化時間を算出する（ステップＳ７２１）。
【００７３】
ここで、ステップＳ７２１における、計測した時刻から非同期化時間を求める手順の詳細について説明する。まず、処理時間算出部１０１は、記録した時刻から、演算方式ごとの処理時間を算出する。処理時間算出部１０１は、同期方式の処理時間Ｔｓｙｎｃ、および非同期方式の処理時間Ｔａｓｙｎｃを、それぞれ以下の（２）式および（３）式によって算出する。
Ｔｓｙｎｃ＝Ｔｓｙｎｃ２−Ｔｓｙｎｃ１  ・・・（２）
Ｔａｓｙｎｃ＝（Ｔａｓｙｎｃ２−Ｔａｓｙｎｃ１）＋（Ｔａｓｙｎｃ４−Ｔａｓｙｎｃ３）  ・・・（３）
【００７４】
そして、処理時間算出部１０１は、算出したＴｓｙｎｃおよびＴａｓｙｎｃから、非同期化時間（Ｔｏｈ）を算出する。非同期化時間（Ｔｏｈ）の算出方法はいくつか考えられるが、最も簡易な方法の一つとして、ＴｓｙｎｃとＴａｓｙｎｃの差をＴｏｈとする方法を用いることができる。図４のテストシート例では、処理方式が同期の場合も非同期の場合もデータサイズが６４ｂｙｔｅで同じであるため、計測値から求めたＴｓｙｎｃとＴａｓｙｎｃとの差がＴｏｈである。なお、ＴｓｙｎｃやＴａｓｙｎｃは１回の計測から求めた値を用いてもよいが、複数回の計測から求めた平均値を求めてもよい。
【００７５】
また別の算出方法例として、図４のかわりに、図７のようなテストシートを用いても非同期化時間を算出できる。図７のテストシートは、図４のテストシートにデータサイズのバリエーション（Ｃ１０３〜Ｃ１１２）を追加したものである。
【００７６】
図８に計測結果の例を示す。図８は、図７のテストシートを用いて図５の非同期化時間算出処理を実施し、計測結果から得られたＴｓｙｎｃとＴａｓｙｎｃをデータサイズごとにプロットしたグラフの一例である。この例では、５１２ｂｙｔｅから７６８ｂｙｔｅの間で、ＴｓｙｎｃとＴａｓｙｎｃの値の大小関係が入れ替わっている。
【００７７】
これは、図６に示した演算処理に掛る時間であるＴｈｗ３０３と、非同期化処理３１１の処理時間との大小関係が、５１２ｂｙｔｅ以上７６８ｂｙｔｅ以下の間で入れ替わっていることを示している。例えば５１２ｂｙｔｅの場合はＴａｓｙｎｃ（５１２ｂｙｔｅ）＞Ｔｓｙｎｃ（５１２ｂｙｔｅ）であるため、Ｔｏｈ＞Ｔｈｗ（５１２ｂｙｔｅ）であり、７６８ｂｙｔｅの場合はＴａｓｙｎｃ（７６８ｂｙｔｅ）＜Ｔｓｙｎｃ（７６８ｂｙｔｅ）であるため、Ｔｏｈ＜Ｔｈｗ（７６８ｂｙｔｅ）であることを意味している。
【００７８】
図７のテストシートを用いて非同期化時間を算出する場合、ＴａｓｙｎｃとＴｓｙｎｃそれぞれについて一次関数をフィッティングし、その一次関数とデータサイズ０の軸とが交わる際のＴａｓｙｎｃ（Ｔａｓｙｎｃ（０ｂｙｔｅ））とＴｓｙｎｃ（Ｔｓｙｎｃ（０ｂｙｔｅ））との差を非同期化時間としてもよい。つまり、Ｔｏｈ＝Ｔａｓｙｎｃ（０ｂｙｔｅ）−Ｔｓｙｎｃ（０ｂｙｔｅ）と求めてもよい。図８では、非同期化時間８０１が、このようにして求めた非同期化時間を表している。
【００７９】
さらに、非同期化時間（Ｔｏｈ）と演算処理に掛る時間（Ｔｈｗ）の大小関係が入れ替わる（つまりこの二つの値が同じになる）閾値となるデータサイズ（Ｓｉｚｅ）の処理時間を元に非同期化時間を求めてもよい。具体的には、当該閾値となるデータサイズでの処理時間と上記Ｔｓｙｎｃ（０）との差分を非同期化時間としてもよい。図８では、非同期化時間８０２が、このようにして求めた非同期化時間を表している。
【００８０】
なお、図４にも図７にも共通するが、読み出しアドレスや書き込みアドレスは、全試行の中で同じものを用いてもよいし、別のものを用いてもよい。ここで示したテストシートの例のテーブル形式については任意に変更可能であり、設計事項である。
【００８１】
また、図７では、データサイズの区切りを６４〜２５６ｂｙｔｅとしているが、さらに細かく区切ったデータを用いてもよいし、より粗く区切ったデータを用いてもよい。ただし、粗く区切った場合は、求められるデータサイズ閾値の精度が低くなる可能性が高いため、できるだけ細かく区切るほうが望ましい。
【００８２】
処理時間算出部１０１は、以上述べた方法により、ＨＷ演算部１２０が処理可能な処理内容のうち全部または一部について非同期化時間算出処理を実行し、算出した値（Ｔｏｈ）を演算方式決定部１０２と共有できるようにメモリ１４０等に保存する。なお、処理時間算出部１０１が算出したデータサイズ閾値を演算方式決定部１０２に通知し、演算方式決定部１０２内に保存するように構成してもよい。
【００８３】
このように、本実施の形態では、演算方式を選択するための判断基準となる非同期化時間を、事前に算出して保存することができる。これにより、ハードウェア構成が異なる場合であっても、構成に応じた最適なデータサイズ閾値を求めることができる。
【００８４】
ここで、図５の処理フローの変形例として、演算制御部１０３が時刻を記録し、記録した情報を処理時間算出部１０１に渡して非同期化時間算出処理を実行するように構成してもよい。さらに図５の別の変形例として、演算制御部１０３が時刻を記録するよう構成したうえで、演算制御部１０３が非同期化時間のみを計測するようにしてもよい。
【００８５】
次に、ハードウェア処理時間Ｔｈｗを求める方法について説明する。上述のとおり、本実施の形態を実施するためにはＨＷ演算部１２０が実行する特定の演算処理にかかる時間（ハードウェア処理時間Ｔｈｗ）が既知である必要がある。具体的には、本実施の形態では、演算制御部１０３がＨＷ演算部１２０に演算処理（要求待ち演算）を要求する際に、要求待ち演算の処理対象であるデータの種類やサイズ、処理内容から、ＨＷ演算部１２０が要求待ち演算の実行に要する時間を算出できる必要がある。
【００８６】
例えば、演算処理としてＡＥＳ方式のＣＢＣモードで暗号化処理を実行させる場合は、ＨＷ演算部１２０で実行する暗号化処理に掛る時間（ハードウェア処理時間）は、処理対象であるデータのサイズに比例する。このため、データサイズとハードウェア処理時間との対応関係を複数のデータサイズについて予め計測しておけばよい。
【００８７】
具体的には、ＨＷ演算部１２０が実行可能な演算処理毎に、複数のデータサイズについて演算処理に掛る時間（ハードウェア処理時間）を計測する。そして、データサイズを変数とする一次関数でハードウェア処理時間を表現するために、ハードウェア処理時間を一次関数でフィッティングし、この一次関数の傾きの値を何れかの処理部や記憶装置に保持させればよい。
【００８８】
なお、演算処理に掛る時間を知るための方法はこれに限られず、従来から用いられているあらゆる方法を適用できる。また、演算処理はこの例で示した演算処理に限定する必要はなく、他の暗号アルゴリズムや、圧縮伸長などを含む他の演算処理の場合も同様に実施可能である。
【００８９】
次に、図９を参照して、第１の実施の形態にかかる通信装置１００が通信処理を実施する際の処理フローについて説明する。通信処理とは、図１において通信装置２００との間でＩＰネットワーク３００を介してデータを送受信する処理を意味する。図９は、第１の実施の形態における通信処理の全体の流れを示すフローチャートである。
【００９０】
ここでは通信処理の一例として、通信装置１００が受信したパケットのペイロードに対して、ＩＰｓｅｃプロトコル処理としてＡＥＳ−ＣＢＣ（暗号化）処理を施す場合の処理について説明する。
【００９１】
なお、通信装置１００と通信装置２００との間では、ＩＰｓｅｃプロトコルに基づくＳＡ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ）およびＳＰ（Ｓｅｃｕｒｉｔｙ  Ｐｏｌｉｃｙ）が既に設定されているものとする。
【００９２】
まず、通信装置１００のネットワークインタフェース１３１は、端末装置４００から通信装置１００に送信されたＩＰパケットを受信し、パケットを受信したことをネットワーク処理部１０４に伝える。ネットワーク処理部１０４は、受信したパケットのヘッダの解析やＩＰｓｅｃプロトコル処理などのネットワーク処理を行う（ステップＳ８０１）。
【００９３】
次に、ネットワーク処理部１０４は、演算制御部１０３に対して、ＨＷ演算処理に関する指示を行う（ステップＳ８０２）。この例では、ネットワーク処理部１０４は、受信したパケットのペイロードのＡＥＳ−ＣＢＣによる暗号化処理を、ＨＷ演算部１２０で実行することを指示する。この指示を受けた演算制御部１０３は、演算方式決定部１０２を呼び出す（ステップＳ８０３）。
【００９４】
演算方式決定部１０２は、処理対象となるデータ（受信パケットのペイロード）のデータサイズと、ＨＷ演算部１２０で実行中の処理に関する情報と、上述した非同期化時間とから、同期方式を選択すべきか非同期方式を選択すべきかを決定する演算方式決定処理を実行する（ステップＳ８０４）。演算方式決定処理の具体的な処理フローについては後に図１０を参照して説明する。
【００９５】
演算方式決定部１０２は、決定した演算方式を演算制御部１０３に通知する（ステップＳ８０５）。通知を受けた演算制御部１０３は、決定された演算方式が同期方式であるか非同期方式であるかを判断する（ステップＳ８０６）。
【００９６】
同期方式の場合は（ステップＳ８０６：ＹＥＳ）、演算制御部１０３は、ＨＷ演算部１２０に対して処理内容を指示して暗号化処理を開始させる（ステップＳ８０７）。その後、演算制御部１０３は、ＨＷ演算部１２０による処理が終了するまで待つ（ステップＳ８０８）。
【００９７】
ＨＷ演算部１２０から演算処理の終了通知を受けると、演算制御部１０３は、ネットワーク処理部１０４に対して同期方式による処理の終了を通知し（ステップＳ８０９）、処理を終了する。
【００９８】
一方、ステップＳ８０６で演算方式が非同期方式であると判断した場合は（ステップＳ８０６：ＮＯ）、演算制御部１０３は、処理状態を保存する処理などの非同期化の前処理を実行する（ステップＳ８１０）。次に、演算制御部１０３は、指示された処理内容による演算を開始するようにＨＷ演算部１２０を操作する（ステップＳ８１１）。非同期方式であるため、演算制御部１０３は非同期方式によるＨＷ演算処理を開始したことをネットワーク処理部１０４に通知して処理を終了する（ステップＳ８１２）。
【００９９】
この後、ＨＷ演算部１２０から演算処理の終了通知を受けると、演算制御部１０３は、保存した処理状態を呼び出す処理などの非同期化の後処理を実行する（ステップＳ８１３）。後処理が完了すると、演算制御部１０３は、ネットワーク処理部１０４に対して非同期方式による処理の終了を通知し（ステップＳ８１４）、処理を終了する。
【０１００】
ステップＳ８０７またはステップＳ８１１で、演算制御部１０３から演算開始の操作を受けたＨＷ演算部１２０は、指示された処理内容の演算処理を実行する（ステップＳ８１５）。例えば、ＨＷ演算部１２０は、受け取ったデータアドレスのデータ（パケットのペイロード）に対して、アルゴリズムがＡＥＳのＣＢＣモードの暗号化処理を実行する。
【０１０１】
演算処理が終了した場合は、ＨＷ演算部１２０は、演算制御部１０３に演算処理の終了を通知し（ステップＳ８１６）、処理を終了する。
【０１０２】
演算制御部１０３に対して演算を指示した後、ネットワーク処理部１０４は、非同期方式によるＨＷ演算処理の開始通知を演算制御部１０３から受け取ったか否かを判断する（ステップＳ８１７）。
【０１０３】
非同期方式によるＨＷ演算処理の開始通知を受け取った場合は（ステップＳ８１７：ＹＥＳ）、ネットワーク処理部１０４は処理を終了する。通知を受け取っていない場合は（ステップＳ８１７：ＮＯ）、同期方式により演算が行われていると判断できるため、ネットワーク処理部１０４は、同期処理による演算の終了通知を受けるために処理を続行する。
【０１０４】
ステップＳ８０９またはステップＳ８１４で演算制御部１０３から送信された演算処理の終了通知を受けた後、ネットワーク処理部１０４は、暗号化処理後に必要なＩＰｓｅｃプロトコルまたはＩＰプロトコル処理などのネットワーク処理を実行する（ステップＳ８１８）。そして、ネットワーク処理部１０４は、ネットワークインタフェース１３１にパケットの送信を指示する（ステップＳ８１９）。
【０１０５】
このように、本実施の形態の方法によれば、処理対象データサイズとデータサイズ閾値とを比較することで、同期方式および非同期方式のうち、いずれか適切な演算方式を選択してデータ処理を行うことができる。
【０１０６】
なお、ここでは通信装置１００がエンコード（暗号化）処理を行う場合の処理フローを示したが、デコード（復号）処理を行う場合も同一の構成で同様の処理フローによって実現可能である。また、ここでは通信装置１００のネットワーク処理部１０４が暗号化を含むネットワーク処理を行う場合の例を示したが、ネットワーク処理部１０４がＨＷ演算部１２０を使って暗号化以外の演算処理（例えばデータ圧縮・伸張処理）を行う場合も同様の構成および処理フローで実現可能である。
【０１０７】
次に、演算制御部１０３がＨＷ演算部１２０を操作する処理（ステップＳ８０７およびステップＳ８１１）で、ＨＷ演算部１２０が実行中の処理が終了する時間を算出する処理の詳細について説明する。演算制御部１０３は、ＨＷ演算部１２０に処理を要求する際、要求した処理に関する情報のうち、処理が終了する時刻を予想するのに必要な情報（以下、参照情報という）を保存しておく。
【０１０８】
参照情報としては、演算処理内容、演算処理を施す対象のデータのサイズ、および、演算処理を開始する時刻が代表例として挙げられる。具体例としては、演算処理内容として暗号アルゴリズム（ＡＥＳ  ＣＢＣモード  １２８ｂｉｔ鍵長  暗号化処理）、サイズとして暗号化対象のデータのサイズ（ＩＰｓｅｃトンネルモードの場合はネットワークインタフェース１３０から入力されたＩＰパケットサイズ）、時刻として演算制御部１０３がＨＷ演算部１２０のレジスタ値を変更してＨＷ演算部１２０の処理を開始させた時刻を保存すればよい。
【０１０９】
また、ＨＷ演算部１２０が何らかの演算処理中に演算制御部１０３がＨＷ演算部１２０に演算処理をさらに要求した場合などのように、ＨＷ演算部１２０がすぐに演算処理を開始できない場合がある。このような場合には、ＨＷ演算部１２０の演算処理の開始を待つ待ち行列を用意し、適宜ＨＷ演算部１２０で演算処理が実行されるよう構成するのが望ましい。なお、この場合は、実行中の演算、および、待ち行列に含まれる演算が、要求済み演算に相当する。
【０１１０】
この場合、ＨＷ演算部１２０が実行中の処理だけでなく、待ち行列に含まれる演算処理の情報についても考慮する必要がある。この場合は、待ち行列に含まれる各演算処理に掛かる時間を足し合わせればよい。また、各演算処理に掛かる時間は、ＨＷ演算部１２０が実行中の処理の残り時間を計算した方法と同様の方法で算出可能である。つまり、演算処理内容と、演算処理を施す対象のデータのサイズがわかれば、ＨＷ演算部１２０での演算処理に掛る時間は予測可能である。
【０１１１】
次に、ステップＳ８０４の演算方式決定処理の詳細について図１０を参照して説明する。図１０は、第１の実施の形態における演算方式決定処理の全体の流れを示すフローチャートである。
【０１１２】
なお、演算制御部１０３は、図９のステップＳ８０３で演算方式決定部１０２を起動する際に、要求済み演算の参照情報を演算方式決定部１０２に伝える。演算方式決定部１０２は、参照情報を取得し（ステップＳ１００１）、遅延時間の算出を遅延時間算出部１０５に依頼する。遅延時間算出部１０５は、現在時刻と演算方式決定部１０２から通知される参照情報とから、ＨＷ演算部１２０上で実行中の演算および待ち行列に含まれる実行待ちの演算（要求済み演算）の処理時間から、演算処理が完了するまでの時間である遅延時間を算出する（ステップＳ１００２）。遅延時間の算出には以下の（４）式を用いればよい。
Ｔｄｅｌａｙ＝Ｔｈｗ−（Ｔｎｏｗ−Ｔｓｔａｒｔ）  ・・・（４）
【０１１３】
Ｔｎｏｗは現在時刻、Ｔｓｔａｒｔは、参照情報に含まれるＨＷ演算部１２０上で実行中の処理が開始された時刻である。なお、（４）式でＴｄｅｌａｙが負となる場合は、Ｔｄｅｌａｙは０とする。ハードウェア処理時間Ｔｈｗは、上述のように、要求待ち演算の処理対象であるデータの種類やデータサイズ、処理内容から算出することができる。なお、以下では、データサイズ、処理内容等のＴｈｗを算出するために必要な変数をｘと表し、ｘに応じて算出されるハードウェア処理時間をＴｈｗ（ｘ）と表す場合がある。
【０１１４】
次に、演算方式決定部１０２は、算出されたＴｄｅｌａｙを以下の（５）式に代入することにより、非同期化効果Ｇ（ｘ、Ｔｄｅｌａｙ）を算出する（ステップＳ１００３）。
Ｇ（ｘ，Ｔｄｅｌａｙ）＝Ｔｈｗ（ｘ）＋Ｔｄｅｌａｙ−Ｔｏｈ  ・・・（５）
【０１１５】
そして、演算方式決定部１０２は、算出した非同期化効果Ｇが０以上であるか否かを判断する（ステップＳ１００４）。０以上の場合（ステップＳ１００４：ＹＥＳ）、演算方式決定部１０２は、要求待ち演算の演算方式を非同期方式に決定する（ステップＳ１００５）。また、０より小さい場合（ステップＳ１００４：ＮＯ）、演算方式決定部１０２は、要求待ち演算の演算方式を同期方式に決定する（ステップＳ１００６）。なお、この非同期化効果Ｇが、図３に示した非同期化効果３１２に相当する。
【０１１６】
なお、同図では、非同期化効果Ｇが０の場合に、演算方式を非同期方式に決定しているが、非同期化効果が０のときの演算方式の決定方法はこれに限られるものではない。例えば、演算方式決定部１０２が、非同期化効果が０となった場合に同期方式を演算方式として決定するように構成してもよい。また、演算方式決定部１０２が、このような場合に、同期方式と非同期方式とを交互に採用するなどの動的なルールに従って演算方式を決定するように構成してもよい。
【０１１７】
図１１は、第１の実施の形態における演算方式決定部１０２の判断結果を示す図である。横軸はＨＷ演算部１２０で演算処理を実行するのに掛る時間（Ｔｈｗ）であり、縦軸は演算処理が開始されるまでの遅延時間（Ｔｄｅｌａｙ）である。同図に示すように、Ｔｈｗ＋Ｔｄｅｌａｙ−Ｔｏｈ＞０となる領域では、非同期方式を選択する方がＰＵ１１０上での実行時間が少なくなる。
【０１１８】
なお、単にハードウェア処理時間（Ｔｈｗ）と非同期化時間（Ｔｏｈ）とを比較する方法では、同図のＴｈｗ＝Ｔｏｈとなる境界線の左側の領域すべてで同期方式を選択することになる。これに対し、本実施の形態によれば、遅延時間（Ｔｄｅｌａｙ）を考慮するため、領域１１０１のみで同期方式が選択される。
【０１１９】
なお、領域１１０２では、Ｔｈｗ＋Ｔｄｅｌａｙ＞Ｔｏｈとなるため、非同期方式の方が演算処理にかかる処理時間が小さい。すなわち、ＣＰＵ負荷が小さくなる。ただし、Ｔｈｗ＜Ｔｏｈであるため、演算処理自体にかかる処理時間は、非同期方式の方が大きい。また、領域１１０３では、Ｔｄｅｌａｙ＞Ｔｏｈとなるため、非同期方式の方が演算処理にかかる処理時間が小さい。すなわち、ＣＰＵ負荷が小さくなる。
【０１２０】
（変形例１）
上述の非同期化時間算出処理では、処理フローの中で直接処理時間を計測していた。これに対し、プロファイリングという手法を使って処理時間を推定する方法でデータサイズ閾値を算出するように構成してもよい。
【０１２１】
プロファイリングとは、ＰＵ１１０上で実行されているプロセスを一定時間間隔で記録（以下、サンプリングという）することで、各プロセスの実行時間を推定する手法である。Ｌｉｎｕｘ（登録商標）に実装されているＯＰｒｏｆｉｌｅが代表的な実装例である。サンプリングによって得られたプロセス毎のサンプル数の比率が、ＰＵ１１０上で実行されているプロセスの実行時間の比率を表している。このため、プロセス毎のサンプル数の大小を比較することによりプロセス毎の実行時間の比率を比較することができる。
【０１２２】
プロファイリング手法を用いて閾値を求める場合は、図５のような非同期化時間算出処理から時刻計測に関する処理を除いた処理についてプロファイリングを行い、同期方式と非同期方式でサンプル数を実時間に換算し、その実時間からＴａｓｙｎｃおよびＴｓｙｎｃを求め、上述したようないずれかの方法で非同期化時間を算出できる。
【０１２３】
このような構成により、処理時間算出部１０１および演算制御部１０３に時刻を計測する機能を備える必要がなく、実装が比較的容易になるという利点がある。
【０１２４】
（変形例２）
上述の実施の形態では、処理時間算出部１０１が非同期化時間算出処理を実行してデータサイズ閾値を算出し、メモリ１４０等に保存していた。これに対し、非同期化時間算出処理を行わずに、事前に外部装置等で求められた非同期化時間をメモリ１４０等に保存するように構成してもよい。この場合は、処理時間算出部１０１が不要となる。なお、非同期化時間を任意の値に変更できるように構成してもよい。
【０１２５】
このように、第１の実施の形態にかかる情報処理装置では、ハードウェアにより暗号化処理を実行するときに、暗号化するデータのデータサイズ、および、実行中または実行待ちの演算処理が完了するまでの遅延時間に応じて、同期方式および非同期方式のいずれかの方式を採用することができる。これにより、ＰＵ上の処理負荷の増加を回避することができる。
【０１２６】
（第２の実施の形態）
第２の実施の形態にかかる情報処理装置は、既に要求済みの演算処理（要求済み演算）を非同期方式で実行できるか否かを表す可否情報（フラグ）を記憶し、このフラグの値が非同期方式で実行可能であることを示す場合は、次に要求する演算処理（要求待ち演算）の演算方式を非同期方式に決定する。なお、このフラグは、非同期方式で実行できる時間として事前に計算された時間が経過したときに、非同期方式で実行できないことを示す値に更新される。
【０１２７】
図１２は、第２の実施の形態にかかる通信装置１２００の構成を示すブロック図である。同図に示すように、通信装置１２００は、主なハードウエア構成として、ＰＵ２１０と、ＨＷ演算部１２０と、メモリ２４０と、ネットワークインタフェース１３０と、ネットワークインタフェース１３１と、計時部２５０と、を備えている。
【０１２８】
第２の実施の形態では、メモリ２４０内のフラグ領域２４１と、ＰＵ２１０内のフラグ更新部２０６と、計時部２５０と、を追加したこと、および、ＰＵ２１０内の演算方式決定部２０２と演算制御部２０３の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる通信装置１００の構成を表すブロック図である図２と同様であるので、同一符号を付し、ここでの説明は省略する。
【０１２９】
フラグ領域２４１は、メモリ２４０の記憶領域の一部の領域を指す。フラグ領域２４１は、演算制御部２０３、演算方式決定部２０２、および後述するフラグ更新部２０６が、少なくとも２種類の値を読み書きできる領域であればよい。例えば、メモリ２４０の記憶領域上のあるアドレスに１ｂｙｔｅ分の容量の領域をフラグ領域２４１として確保する。そして、このフラグ領域２４１に、第１の値として“０ｘ００”（１６進数表記）、および、第２の値として“０ｘ０１”を読み書きするよう構成すればよい。以下では、一例として、第１の値が、要求待ち演算が非同期方式で実行できることを表し、第２の値が、要求待ち演算が非同期方式で実行できないことを表すものとする。なお、メモリ２４０上の物理的位置や読み書きする値は任意である。
【０１３０】
フラグ更新部２０６は、フラグ領域２４１の値の書き換えを実行する。具体的には、フラグ更新部２０６は、最後に要求された要求済み演算（最終演算）が要求されたときに、フラグ領域２４１の値を第１の値に更新する。また、フラグ更新部２０６は、最終演算が要求された後、最終演算が終了するまでの期間として演算制御部２０３によって算出された期間が経過したとき、フラグ領域２４１の値を第２の値に更新する。
【０１３１】
計時部２５０は、設定された時刻にＰＵ１１０に対して予め定められた処理を実行させる。例えば、計時部２５０は、設定された時刻になったらＰＵ１１０に対して割り込みをかける。ＰＵ１１０は、その割り込みに関連する処理を実行する。本実施の形態では、計時部２５０は、フラグ更新部２０６が算出した期間が経過したときに、フラグ更新部２０６がフラグ領域２４１を第２の値に更新する処理を実行するように割り込みをかける。
【０１３２】
演算方式決定部２０２は、フラグ領域２４１の値を参照し、この値が第１の値である場合には、非同期化効果Ｇを算出することなく、次に要求される要求待ち演算の演算方式を非同期方式に決定する。
【０１３３】
演算制御部２０３は、第１の実施の形態の演算制御部１０３の機能に加え、以下の機能を備える。すなわち、演算制御部２０３は、ＨＷ演算部１２０に演算処理の実行を要求する前に、フラグ領域２４１を第１の値に更新するようにフラグ更新部２０６に要求する。また、ハードウェア演算処理を非同期方式で実行する場合は、演算制御部２０３は、フラグ更新部２０６がフラグ領域２４１を第２の値に書き換える時刻を算出し（詳細は後述）、その時刻に計時部２５０が割り込みをかけるように計時部２５０に指示する。
【０１３４】
次に、図１３を参照して、第２の実施の形態にかかる通信装置１２００が通信処理を実施する際の処理フローについて説明する。ここでも第１の実施の形態と同様に、通信処理の一例として、通信装置１２００が受信したパケットのペイロードに対して、ＩＰｓｅｃプロトコル処理としてＡＥＳ−ＣＢＣ（暗号化）処理を施す場合の処理について説明する。図１３は、第２の実施の形態における通信処理の全体の流れを示すフローチャートである。
【０１３５】
第２の実施の形態では、演算制御部２０３が、ＨＷ演算部１２０に演算処理を要求する前に、フラグ更新部２０６にフラグ領域２４１の更新を要求するステップ（ステップＳ８０６−１、ステップＳ８１０−２）、および、フラグ領域２４１を第２の値に書き換える時刻を計時部２５０に設定するステップ（ステップＳ８１０−１）が、図９に示した第１の実施の形態の通信処理に追加される。その他のステップは、図９と同様の処理なので、その説明を省略する。
【０１３６】
ステップＳ８０６で、演算方式決定部２０２による判断結果が非同期方式であると判断した場合（ステップＳ８０６：ＮＯ）、演算制御部２０３は、フラグ更新部２０６がフラグ領域２４１の値を書き換える時刻を算出し、算出した時刻にフラグ更新のための割り込みをかけることを計時部２５０に設定する（ステップＳ８１０−１）。演算制御部２０３は、以下の（６）式でフラグ領域２４１の値を書き換える時刻Ｔを算出する。
Ｔ＝Ｔｎｏｗ＋（Ｔｄｅｌａｙ＋Ｔｈｗ）−Ｔｏｈ  ・・・（６）
【０１３７】
なお、Ｔｄｅｌａｙは、既に要求している要求済み演算に対して上述の（４）式で算出された遅延時間を表す。また、Ｔｈｗは、要求済み演算に対して算出されたハードウェア処理時間を表す。
【０１３８】
時刻Ｔの設定が終了した後、演算制御部２０３は、フラグ領域２４１の値を第１の値に書き換えることをフラグ更新部２０６に要求する（ステップＳ８１０−２）。また、ステップＳ８０６で、演算方式決定部２０２による判断結果が同期方式であると判断した場合も（ステップＳ８０６：ＹＥＳ）、演算制御部２０３は、フラグ領域２４１の値を第１の値に書き換えることをフラグ更新部２０６に要求する（ステップＳ８０６−１）。なお、フラグ領域２４１に既に第１の値が保存されている場合は改めて書き換える必要はない。
【０１３９】
また、本実施の形態ではフラグ領域２４１の値を書き換える処理をＰＵ１１０で実行される機能（フラグ更新部２０６）で実行する例を示したが、これに限定する必要はない。例えば、ＨＷ演算部１２０や計時部２５０がフラグ領域２４１の値を書き換える機能を備えるよう構成してもよい。
【０１４０】
また、本実施の形態ではフラグ領域２４１としてメモリ２４０の記憶領域の一部を利用する例を示したが、これに限定される必要はなく、例えばＰＵ１１０やＨＷ演算部１２０に記憶手段（図示せず）を備えてその記憶手段の一部をフラグ領域２４１としてもよい。
【０１４１】
ここで、図１４を参照して、上記（６）式で算出した時刻について説明する。図１４は、フラグ領域２４１の値を書き換える時刻と演算の処理時間等との関係を示す図である。図１４では、Ｔ１４１１が、フラグ領域２４１の値を書き換える時刻Ｔに相当する。
【０１４２】
なお、同図の第１の演算処理は、要求済み演算に相当する。また、第２の演算処理は、要求済み演算の次に要求される演算処理（要求待ち演算）に相当する。同図は、第２の演算処理が、第１の演算処理の前処理３０１や非同期化処理３１１が実行された後に実行された場合の例を示している。なお、前処理３２１、非同期化処理３３１、Ｔｄｅｌａｙ３２２、およびＴｈｗ３２３は、第２の演算処理に含まれる各処理または処理の処理時間を表す。
【０１４３】
同図で示すように、第２の演算処理で演算方式決定部２０２を実行する時点（図中の前処理３２１）から見ると、Ｔ１４１１は、Ｔｄｅｌａｙ３２２が終了する時刻から非同期化時間（Ｔｏｈ）３３２を減算した時刻に相当する。もし演算方式決定部２０２が実行される時点がＴ１４１１より前であれば、Ｔｈｗ＞０であることを考えると、以下の（７）式が成り立つ。
Ｔｈｗ＋Ｔｄｅｌａｙ−Ｔｏｈ＞０  ・・・（７）
【０１４４】
なお、（７）式では、Ｔｄｅｌａｙは、要求待ち演算に対して上述の（４）式で算出された遅延時間を表す。また、Ｔｈｗは、要求待ち演算に対して算出されたハードウェア処理時間を表す。
【０１４５】
このため、次に要求する要求待ち演算について非同期化効果Ｇ（ｘ）を計算するまでもなく、要求待ち演算の演算方式を非同期方式に決定すればよいことになる。そこで、本実施の形態の演算方式決定部２０２は、図１５の処理フローで演算方式を決定する。図１５は、第２の実施の形態における演算方式決定処理の全体の流れを示すフローチャートである。
【０１４６】
演算方式決定部２０２は、フラグ領域２４１が第１の値であるか否かを判断する（ステップＳ１５０１）。フラグ領域２４１が第１の値である場合（ステップＳ１５０１：ＹＥＳ）、演算方式決定部２０２は、演算方式を非同期方式に決定する（ステップＳ１５０６）。
【０１４７】
フラグ領域２４１が第１の値でない場合、すなわち、第２の値である場合は（ステップＳ１５０１：ＮＯ）、演算方式決定部２０２は、第１の実施の形態と同様の方法により、演算方式を決定する（ステップＳ１５０２〜ステップＳ１５０７）。ステップＳ１５０２からＳ１５０７までは第１の実施の形態における図１０のステップＳ１００１〜Ｓ１００６までと同様であるため、説明を省略する。
【０１４８】
第２の実施の形態における演算方式決定部２０２の判断結果は、第１の実施の形態における演算方式決定部１０２の判断結果である図１１と同様となる。
【０１４９】
このように、第２の実施の形態にかかる情報処理装置では、要求済み演算を非同期方式で実行できることを表すフラグを記憶し、このフラグの値が非同期方式で実行可能であることを示す場合は、要求待ち演算の演算方式を非同期方式に決定することができる。このため、第１の実施の形態よりも演算方式決定処理の処理時間を削減し、ＰＵ上の処理負荷をさらに減少させることが可能となる。
【０１５０】
第１または第２の実施の形態にかかる情報処理装置で実行される情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１５１】
また、第１または第２の実施の形態にかかる情報処理装置で実行される情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１または第２の実施の形態にかかる情報処理装置で実行される情報処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１５２】
また、第１または第２の実施の形態の情報処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１５３】
第１または第２の実施の形態にかかる情報処理装置で実行される情報処理プログラムは、上述した各部（処理時間算出部、演算方式決定部、演算制御部、ネットワーク処理部、遅延時間算出部）を含むモジュール構成となっており、実際のハードウェアとしてはＰＵ１１０（プロセッサ）が上記記憶媒体から情報処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【０１５４】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１５５】
１００、２００、１２００  通信装置
１０１  処理時間算出部
１０２、２０２  演算方式決定部
１０３、２０３  演算制御部
１０４  ネットワーク処理部
１０５  遅延時間算出部
１１１  共有バス
１２０  ＨＷ演算部
１３０、１３１  ネットワークインタフェース
１４０、２４０  メモリ
２０６  フラグ更新部
２４１  フラグ領域
２５０  計時部
３００  ＩＰネットワーク
４００、５００  端末装置
【図１】
2010191682.tif 000003
【図２】
2010191682.tif 000004
【図３】
2010191682.tif 000005
【図４】
2010191682.tif 000006
【図５】
2010191682.tif 000007
【図６】
2010191682.tif 000008
【図７】
2010191682.tif 000009
【図８】
2010191682.tif 000010
【図９】
2010191682.tif 000011
【図１０】
2010191682.tif 000012
【図１１】
2010191682.tif 000013
【図１２】
2010191682.tif 000014
【図１３】
2010191682.tif 000015
【図１４】
2010191682.tif 000016
【図１５】
2010191682.tif 000017