(57)【要約】【課題】ハードウェア処理回路（アクセラレータ）によりデータ処理を行う構成において、データに対する複数のアクセスによる処理効率の悪さを改善できる技術を提供する。【解決手段】本ネットワークデータ処理装置１００のネットワークデータ処理アクセラレータ１０６において、暗復号、メッセージ認証、及びチェックサムの各処理に対応する処理部（１１４，１１６，１１８）を有し、各処理の組み合わせを含むデータ処理において、バスＩ/Ｆ部１１２等を介したメモリ１０３等に対する同一データのアクセスを１度にまとめ、また、各処理のデータ処理単位の最小公倍数を用いてパイプライン処理する。【選択図】図１
2008067152.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を高速化のためのハードウェア処理回路により行うデータ処理装置であって、
複数の種類の処理のそれぞれに対応する処理部として、
データの暗号化及び復号化の処理を行うための暗復号処理部と、
データのメッセージ認証の処理を行うためのメッセージ認証処理部と、
データのチェックサムの処理を行うためのチェックサム処理部とを有し、
データに対してアクセスし、前記暗復号処理部による暗号化又は復号化、前記メッセージ認証処理部によるメッセージ認証、及び前記チェックサム処理部によるチェックサムの処理の組み合わせを含む所定のデータ処理を行うものであり、
前記所定のデータ処理のための第１のデータに対する重複するアクセスを１度にまとめ、前記処理部により並列的及び／又は連続的に処理することを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、
前記第１のデータに対する前記所定のデータ処理において、それを構成する複数の種類の処理及び対応する処理部の各データ処理単位の最小公倍数を、それら処理部における統一されたデータ処理単位として用いて、複数の期間に分けてパイプライン処理することを特徴とするデータ処理装置。
【請求項３】
請求項１または２に記載のデータ処理装置において、
データの入出力を行うインタフェース部を有し、
前記所定のデータ処理において、前記インタフェース部を介して前記第１のデータにアクセスすることを特徴とするデータ処理装置。
【請求項４】
請求項３記載のデータ処理装置において、
前記インタフェース部として、メモリが接続されるバスに対するバスインタフェース部を有し、
前記所定のデータ処理において、前記バスインタフェース部を介して前記メモリに対する前記第１のデータの読み込み又は書き込みを行うことを特徴とするデータ処理装置。
【請求項５】
請求項３記載のデータ処理装置において、
前記インタフェース部として、ネットワークに接続されるネットワークインタフェース部を有し、
前記ネットワークに対して送受信するデータを格納するバッファを有し、
前記所定のデータ処理において、前記ネットワークインタフェース部及びバッファを介して前記第１のデータの送信又は受信を行うことを特徴とするデータ処理装置。
【請求項６】
請求項３記載のデータ処理装置において、
レジスタまたはディスクリプタによる、前記第１のデータに対する前記所定のデータ処理における、前記暗号化又は復号化の処理及びそのタイプ、前記メッセージ認証の処理及びそのタイプ、前記チェックサムの処理、前記第１のデータの入出力のアクセス、それらの処理の組み合わせ、その順序、及び処理開始の指示に従い動作することを特徴とするデータ処理装置。
【請求項７】
請求項６記載のデータ処理装置において、
前記所定のデータ処理における任意の組み合わせ及び順序に対応可能に、前記暗復号処理部、メッセージ認証処理部、チェックサム処理部の各入力の前段に、前記インタフェース部、暗復号処理部、メッセージ認証処理部、及びチェックサム処理部の各出力から入力を選択するセレクタを有することを特徴とするデータ処理装置。
【請求項８】
請求項７記載のデータ処理装置において、
前記インタフェース部の入力側に、前記暗復号処理部、メッセージ認証処理部、及びチェックサム処理部の各出力から入力を選択するセレクタを有することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア（ハードウェア処理回路）で構成されるデータ処理部において、メモリ、ネットワーク、バス等から読み出しや受け取り（受信）するデータに対して所定の処理（データ処理）を行って、その処理済データを前記メモリ、ネットワーク、バス等へ書き込みや転送（送信）するデータ処理装置の技術に関する。特に、所定の処理として、例えばファイルの暗復号（暗号化／復号化）処理や改ざん検知処理、あるいは、ネットワークの通信プロトコル処理における暗復号処理、メッセージ認証処理、及びチェックサム処理などを、効率良く高速に行う技術に関する。
【背景技術】
【０００２】
近年、計算機や通信の分野では、送信機でデータを暗号化して配信し、受信機で配信を受けたデータを復号化することによって安全にデータを送受信する情報の秘匿技術が知られている。例えば、ネットワークを用いたデータ通信では、データの機密性や完全性を確保するため暗号やメッセージ認証の技術が用いられている。また、メディアに格納されたコンテンツなどのファイルの保護、完全性の確保のためにも同様の技術が用いられる。
【０００３】
従来、これらの暗復号、メッセージ認証、チェックサム等の処理の技術は、主にソフトウェアで行う仕組みが採られていた。このソフトウェアで行う仕組みでは、柔軟な運用が可能であるが、その所定の処理が複雑になるにつれ処理時間が長くなり、処理スループットの低下が問題となる。
【０００４】
これを改善する一手法として、特開２００４−５３７１６号公報（特許文献１）や特開平１０−３２０１９１号公報（特許文献２）に記載されているように、暗復号やメッセージ認証等の処理をハードウェア処理回路で行うことによりアクセラレート（高速化）する手法が考えられている。即ちこの手法では、暗復号などの特定の処理に対応した高速化のための、ハードウェアで構成されるデータ処理部（アクセラレータ）を設ける。この手法では、特定の処理が複雑であっても、処理スループットの低下を防ぐことができる。
【特許文献１】特開２００４−５３７１６号公報
【特許文献２】特開平１０−３２０１９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
また、暗復号やメッセージ認証などの処理のアルゴリズムは様々である。例えばＩＰｓｅｃ（IP Security Protocol）や、ＳＳＬ（Secure Socket Layer）／ＴＬＳ（Transport Layer Security）に代表されるネットワークセキュリティプロトコルにおいて、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などの共通鍵暗号を用いた暗復号処理と、ＭＤ５（Message Digest #5）やＳＨＡ−１（Secure Hash Algorithm）などのハッシュアルゴリズムを用いたメッセージ認証処理が義務付けられている。しかし、これらの暗復号やメッセージ認証の処理は、ネットワークプロトコルとしてレイヤが分かれているため、レイヤごとに独立して行われていた。
【０００６】
しかしながら、例えばパケットの中で多くを占めるペイロード部分（データ本体）に対しては、暗復号、メッセージ認証のハッシュ値計算、及びチェックサムの処理が重複して行われる。即ち、同一データに対して、それら複数の種類の処理が、対応するデータ処理部（アクセラレータ）により行われる。その場合、各種アクセラレータが個々に同一データにアクセスして処理を進める。そのため、複数のアクセス、例えばメモリの同一アドレスに対するデータ読み出し／書き込みの重複により、処理効率が悪いという問題があった。
【０００７】
前記特許文献１，２の技術は、個別の処理に対応したアクセラレータの例であって、同一データに対する複数の種類の処理を行う場合に関しては効率が不十分である。
【０００８】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、所定のデータ処理を高速化のためのハードウェア処理回路（アクセラレータ）により行う構成において、データに対する複数のアクセスによる処理効率の悪さを改善できる技術を提供することにある。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明は、所定のデータ処理を高速化のためのハードウェア処理回路（アクセラレータ）により行う、半導体集積回路装置（ＩＣ）等のデータ処理装置の技術であって、以下に示す技術的手段を備えることを特徴とする。
【００１０】
本データ処理装置は、データ処理を構成する複数の種類の処理のそれぞれに対応する処理部として、例えば、データの暗号化及び復号化の処理を行うための暗復号処理部と、データのメッセージ認証の処理を行うためのメッセージ認証処理部と、データのチェックサムの処理を行うためのチェックサム処理部とを有し、データに対してアクセスし、暗復号処理部による暗号化又は復号化、メッセージ認証処理部によるメッセージ認証、及びチェックサム処理部によるチェックサムの処理の組み合わせを含む所定のデータ処理を行うものである。対象となるデータ処理は、複数の種類の処理を含んで構成され、それら複数の処理による同一データに対する入出力のアクセスが従来重複するものや、前段の処理結果を後段の処理が利用するものであり、また、メモリ、ネットワーク、及びバス等に対するデータの読み込み／書き込み等の入出力のアクセスの処理との組み合わせである。
【００１１】
そして、本データ処理装置では、所定のデータ処理を構成する複数の種類の処理についての所定の順序及び組み合わせでの並列及び／又は連続的な処理を効率的に行うための手段として、複数の種類の処理における第１のデータ（同一データなど）に対するアクセスに関し、従来では重複するアクセスを１度（最小限）にまとめる。換言すれば、アクセス数を、従来各種処理部が個別にデータにアクセスする場合よりも少ない回数にまとめる。これにより、複数の種類の処理に対応する処理部により並列的及び／又は連続的に処理し、各種処理の実行に要するバス占有率や時間などを下げる。
【００１２】
また、第１のデータに対する所定のデータ処理において、それを構成する複数の種類の処理及び対応する処理部の各データ処理単位の最小公倍数を、それら処理部における統一されたデータ処理単位として用いて、パイプライン処理する。
【００１３】
また、本データ処理装置は、更にデータの入出力を行うインタフェース部を有し、所定のデータ処理において、インタフェース部を介してデータにアクセスして処理する。また、例えば、レジスタやディスクリプタによって、複数の種類の処理の組み合わせや順序、処理部での暗復号やメッセージ認証などの処理の様々なタイプ（方式、アルゴリズム、プロトコル等）などを指定して対応する。
【発明の効果】
【００１４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、所定のデータ処理を高速化のためのハードウェア処理回路（アクセラレータ）により行う構成において、データに対する複数のアクセスによる処理効率の悪さを改善できる。特に、処理実行にかかるバス占有率などが下がり、また、処理全体としてのスループットが上がるという利点がある。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【００１６】
本発明の実施の形態では、ネットワークデータ処理を行うアクセラレータにおいて、複数の種類の処理ごとの処理部を備え、メモリ（バス）やネットワークに対する最小限のデータアクセス回数と、複数の処理部のデータ処理単位の統一によるパイプライン処理の動作が特徴である。
【００１７】
図１〜図４を用いて本発明の一実施の形態のネットワークデータ処理装置を説明する。図１は、本ネットワークデータ処理装置（データ処理装置と略する）１００の全体の構成を示す。図２は、本データ処理装置１００に備えるネットワークデータ処理アクセラレータ（アクセラレータと略する）１０６のレジスタ構成を示す。図３は、アクセラレータ１０６のディスクリプタ構成を示す。図４は、アクセラレータ１０６のＳＳＬ／ＴＬＳ送信時のデータ処理についてのパイプライン処理動作を示す。
【００１８】
＜ネットワークデータ処理装置＞
図１において、本データ処理装置１００は、ＣＰＵ１０１、バス１０２、メモリ１０３、入力装置１０４、出力装置１０５、ネットワークデータ処理アクセラレータ（アクセラレータ）１０６、送信バッファ１０７、受信バッファ１０８、ＮＩ/Ｆ（ネットワークインタフェース）部１０９を有する構成である。ＮＩ/Ｆ部１０９によりネットワーク１９０と接続されている。
【００１９】
ＣＰＵ１０１は、バス１０２を介して、各種デバイス（メモリ１０３〜アクセラレータ１０６等）を管理し、ネットワーク１９０へのデータ送信や、ネットワーク１９０からのデータ受信を制御する。メモリ１０３は、ＣＰＵ１０１の実行するプログラムやデータを格納する。入力装置１０４は、本データ処理装置１００のユーザ操作やデータを受け取るための装置である。出力装置１０５は、本データ処理装置１００からのユーザへの通知情報やデータを送出するための装置である。
【００２０】
送信バッファ１０７は、ネットワーク１９０へ送出するデータを一時保存するためのバッファである。受信バッファ１０８は、ネットワーク１９０から受信したデータを一時保存するためのバッファである。ＮＩ/Ｆ部１０９は、送信バッファ１０７に格納されたデータのネットワーク１９０への送出と、ネットワーク１９０から受信したデータの受信バッファ１０８への格納とを行う。
【００２１】
アクセラレータ１０６は、ネットワーク１９０の送受信データについて、暗復号、メッセージ認証、及びチェックサムの３つの種類の処理を高速に行うためのハードウェア処理回路である。アクセラレータ１０６は、制御部１１０、制御バス１１１、バスＩ/Ｆ部１１２、バス出力データセレクタ１１３、暗復号部（暗号／復号処理部）１１４、ＭＡ部（メッセージ認証処理部）１１６、ＣＳ部（チェックサム処理部）１１８、入力セレクタ（暗復号部入力セレクタ）１１５、入力セレクタ（ＭＡ部入力セレクタ）１１７、入力セレクタ（ＣＳ部入力セレクタ）１１９、送信出力データセレクタ１２０を有する構成である。
【００２２】
制御部１１０は、ＣＰＵ１０１からの指示を、バス１０２を介して受け取り、アクセラレータ１０６の各ブロック（バスＩ/Ｆ部１１２〜送信出力データセレクタ１２０）の動作を決定する。制御バス１１１は、制御部１１０から各ブロックへの指示を伝達するためのバスである。
【００２３】
バスＩ/Ｆ部１１２は、バス１０２に対するＩ/Ｆであり、バス１０２を介して、ネットワーク１９０へ送信するデータをメモリ１０３や入力装置１０４から読み出す機能と、ネットワーク１９０から受信したデータをメモリ１０３や出力装置１０５へ送出（書き込み）する機能とを有する。バス出力データセレクタ１１３は、受信バッファ１０８を通じて受信したデータ、暗復号部１１４、ＭＡ部１１６、及びＣＳ部１１８の処理結果データのうちのいずれのデータを、バスＩ/Ｆ部１１２へ入力しバスＩ/Ｆ部１１２を介してメモリ１０３や出力装置１０５へ出力するかを選択する。
【００２４】
暗復号部１１４は、入力データの暗号化及びその復号化の処理を行う。暗復号部１１４は、指示に応じて暗号化または復号化が可能である。暗復号部入力セレクタ１１５は、暗復号部１１４へ与えるデータを、暗復号部１１４、ＭＡ部１１６、ＣＳ部１１８、受信バッファ１０８、及びバスＩ/Ｆ部１１２のうちいずれの出力しているデータとするかを選択する。
【００２５】
ＭＡ部１１６は、メッセージ認証処理のために、入力データのハッシュ値及びＭＡＣ（メッセージ認証コード）値を計算して比較処理する。ＭＡ部入力セレクタ１１７は、ＭＡ部１１６へ与えるデータを、暗復号部１１４、ＭＡ部１１６、ＣＳ部１１８、受信バッファ１０８、及びバスＩ/Ｆ部１１２のうちいずれの出力しているデータとするかを選択する。
【００２６】
ＣＳ部１１８は、チェックサム処理として入力データのチェックサム値を計算する。ＣＳ部入力セレクタ１１９は、ＣＳ部１１８へ与えるデータを、暗復号部１１４、ＭＡ部１１６、ＣＳ部１１８、受信バッファ１０８、及びバスＩ/Ｆ部１１２のうちいずれの出力しているデータとするかを選択する。
【００２７】
送信出力データセレクタ１２０は、アクセラレータ１０６から送信バッファ１０７を介してネットワーク１９０へ送信するデータを、バスＩ/Ｆ部１１２、暗復号部１１４、ＭＡ部１１６、及びＣＳ部１１８のうちいずれの出力データとするかを選択する。各セレクタ（１１３，１１５，１１７，１１９，１２０）は、制御部１１０からの指示に従い、入出力を選択する。
【００２８】
＜レジスタ及びディスクリプタ＞
制御部１１０は、図２に示すレジスタを持つ。ＣＰＵ１０１は、これらのレジスタを設定する。その設定に従い、制御部１１０は、制御バス１１１を介して、アクセラレータ１０６の各ブロック（１１２〜１２０）を制御し、ＣＰＵ１０１に指示されたデータ処理を行う。アクセラレータ１０６は、レジスタモードまたはディスクリプタモードによる動作が可能である。
【００２９】
図２のレジスタにおいて、第１処理設定レジスタ２０１、第２処理設定レジスタ２０２、第３処理設定レジスタ２０３、処理データ長（Ｌ）設定レジスタ２０４、ソースアドレス（ＳＡ）設定レジスタ２０５、デスティネーションアドレス（ＤＡ）設定レジスタ２０６、ディスクリプタアドレス（Ａ）設定レジスタ２０７、処理開始設定レジスタ２０８を有する。
【００３０】
第１処理設定レジスタ２０１〜第３処理設定レジスタ２０３では、所定のデータ処理を構成するものとしてアクセラレータ１０６に行わせる３つの種類の処理（第１〜第３処理）及びその処理順序を設定する。第１処理設定レジスタ２０１は、最初の第１処理を設定する。第２処理設定レジスタ２０２は、次の第２処理を設定する。第３処理設定レジスタ２０３は、次の第３処理を設定する。形式として、第１〜第３処理は、その順序で行われる。
【００３１】
本実施の形態では、第１処理としては、メモリ１０３のリード（「ＭＲ」）、受信バッファ１０８のリード（「受信」）が設定できる。第２処理及び第３処理としては、メモリ１０３へのライト（「ＭＷ」）、送信バッファ１０８へのライト（「送信」）、暗号化処理（「暗号」）、復号化処理（「復号」）、メッセージ認証処理（「ＭＡ」）、チェックサム処理（「ＣＳ」）、及び処理無し、の組み合わせが設定できる。
【００３２】
処理データ長（Ｌ）設定レジスタ２０４は、Ｌとして、アクセラレータ１０６に行わせるデータ処理の入力データ長（全体サイズ）を設定する。ソースアドレス（ＳＡ）設定レジスタ２０５は、ＳＡとして、アクセラレータ１０６がメモリ１０３、入力装置１０４、受信バッファ１０８等から読み出す処理対象データの先頭アドレスを設定する。デスティネーションアドレス（ＤＡ）設定レジスタ２０６は、ＤＡとして、アクセラレータ１０６がメモリ１０３、出力装置１０５、送信バッファ１０７等へ処理結果データを送る領域の先頭アドレスを設定する。
【００３３】
ディスクリプタアドレス（Ａ）設定レジスタ２０７には、アクセラレータ１０６をディスクリプタモードで処理実行させる場合に、Ａとして、メモリ１０３に格納されているディスクリプタの先頭アドレスを設定する。処理開始設定レジスタ２０８は、「レジスタモードで実行開始」、「ディスクリプタモードで実行開始」、処理停止、暗復号処理タイプ、及びメッセージ認証処理タイプ等が設定でき、暗復号及びメッセージ認証処理タイプの指示と共に、アクセラレータ１０６の処理実行開始及び停止の制御が可能となっている。暗復号処理タイプは、ＤＥＳ暗号／３ＤＥＳ暗号／ＡＥＳ暗号／ＤＥＳ復号／３ＤＥＳ復号／ＡＥＳ復号などである。メッセージ認証処理タイプは、ＭＤ５／ＳＨＡ-１／ＳＨＡ-２２４／ＳＨＡ-２５６／ＳＨＡ-３８４／ＳＨＡ-５１２などである。
【００３４】
レジスタモードで実行する場合、ＣＰＵ１０１が、図２の各レジスタ（２０１〜２０６）を設定後、処理開始設定レジスタ２０８に、「レジスタモードで実行開始」コードを設定する。そのように設定するようにプログラムを組んでメモリ１０３に格納しておく。ＣＰＵ１０１は、メモリ１０３に格納されたプログラムに従い、上記各レジスタの設定を行い、アクセラレータ１０６を動作させる。
【００３５】
ディスクリプタモードで実行する場合、ＣＰＵ１０１が、図３に示す構造のディスクリプタをメモリ１０３に格納した後、その先頭アドレス（Ａ）をＡ設定レジスタ２０７に設定し、処理開始設定レジスタ２０８に、「ディスクリプタモードで実行開始」コードを設定する。そのように設定するようにプログラムを組んでメモリ１０３に格納しておく。ＣＰＵ１０１は、メモリ１０３に格納されたプログラムに従い、上記各レジスタの設定を行い、アクセラレータ１０６を動作させる。
【００３６】
図３のディスクリプタにおいて、第１処理設定ディスクリプタ３０１、第２処理設定ディスクリプタ３０２、第３処理設定ディスクリプタ３０３、処理データ長（Ｌ）設定ディスクリプタ３０４、ソースアドレス（ＳＡ）設定ディスクリプタ３０５、デスティネーションアドレス（ＤＡ）設定ディスクリプタ３０６を有する。
【００３７】
第１処理設定ディスクリプタ３０１〜第３処理設定ディスクリプタ３０３は、アクセラレータ１０６に行わせる第１〜第３処理を設定する。設定できる処理はレジスタモードの場合と同様である。Ｌ設定ディスクリプタ３０４、ＳＡ設定ディスクリプタ３０５、及びＤＡ設定ディスクリプタ３０６では、レジスタモードと同様に、Ｌ、ＳＡ、ＤＡを設定する。
【００３８】
＜ＳＳＬ／ＴＬＳ送信＞
次に、図４において、本実施の形態での所定のデータ処理の例として、ＳＳＬ／ＴＬＳ送信の場合におけるアクセラレータ１０６の動作を説明する。この場合、目的のデータ処理としては、まず、メモリ１０３に格納されたデータを読み込み、読み込んだデータを暗号化する。そして、暗号化されたデータに対しメッセージ認証処理とチェックサム処理を行い、暗号化されたデータを送信バッファ１０７へ送る（書き込む）。このようにして送信バッファ１０７に送られたデータを、ＮＩ/Ｆ部１０９がネットワーク１９０へ送信する。
【００３９】
上記のように動作させるために、データ処理装置１００のＣＰＵ１０１は、次のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、第１処理としてメモリ１０３のリード（「ＭＲ」）を設定する。第２処理設定レジスタ２０２に、第２処理として暗号化処理（「暗号」）を設定する。第３処理設定レジスタ２０３に、第３処理としてメッセージ認証処理（「ＭＡ」）、チェックサム処理（「ＣＳ」）、及び送信バッファ１０７へのライト（「送信」）の３つの処理を設定する。Ｌ設定レジスタ２０４に、Ｌとして、暗号、メッセージ認証、及びチェックサムの処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、ＳＡとして、メモリ１０３に格納されている送信データの先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、ＤＡとして、送信バッファ１０７の送信可能領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、「レジスタモードで処理開始」コードを設定する。またこのときに、暗復号タイプとしてＡＥＳ暗号化、メッセージ認証タイプとしてＳＨＡ-１を指示設定したとする。
【００４０】
このとき、制御部１１０は、バスＩ/Ｆ部１１２、暗復号部１１４、ＭＡ部１１６、及びＣＳ部１１８の各ブロックに対し、統一されたデータ処理単位（Ｍ）として６４バイト単位で処理するように、制御バス１１１を介して指示する。これは以下のように決まる。まず、暗復号部１１４でのＡＥＳ暗号化の処理単位が１６バイトで、ＭＡ部１１６でのＳＨＡ-１の処理単位が６４バイトで、ＣＳ部１１８でのチェックサムの処理単位が２バイトである。これらの最小公倍数が６４バイトである。この６４バイトを、アクセラレータ１０６の上記各ブロックにおける統一されたデータ処理単位（Ｍ）とする。そうすれば、アクセラレータ１０６での複数の処理の並列化及び連続化が容易になり、パイプライン処理が可能になるためである。
【００４１】
また、ＤＥＳ／３ＤＥＳの処理単位は８バイト、ＡＥＳの処理単位は１６バイト、ＭＤ５／ＳＨＡ-１／ＳＨＡ-２２４／ＳＨＡ-２５６／ＳＨＡ-３８４／ＳＨＡ-５１２の処理単位は６４バイトである。これらを考慮し、アクセラレータ１０６は、暗復号及びメッセージ認証タイプに従い、暗復号、メッセージ認証、及びチェックサムの処理単位の最小公倍数を、それらの処理のパイプライン処理のために用いる統一されたデータ処理単位（Ｍ）とする。データ処理単位（Ｍ）は、ブロックサイズなどと言い換えることもできる。
【００４２】
また、制御部１１０は、レジスタ（第１処理設定レジスタ２０１〜第３処理設定レジスタ２０３）に設定された処理順序に従うため、暗復号部入力セレクタ１１５に、バスＩ/Ｆ部１１２からの入力を選択して暗復号部１１４に渡すように指示する。また、ＭＡ部入力セレクタ１１７に、暗復号部１１４の出力を選択してＭＡ部１１６へ渡すように指示する。また、ＣＳ部入力セレクタ１１９に対しても、暗復号部１１４の出力を選択してＣＳ部１１８に渡すように指示する。そして、送信出力データセレクタ１２０に対しては、暗復号部１１４の出力を選択して送信バッファ１０７へ渡すように指示する。
【００４３】
このように、本データ処理装置１００及びアクセラレータ１０６では、複数の処理におけるデータ処理単位（Ｍ）を個別の処理の処理単位の最小公倍数である６４バイトとし、各セレクタ（１１３，１１５，１１７，１１９，１２０）に処理データ入出力の選択を指示することによって、図４に示すようなパイプライン処理の動作を実現する。Ｌ設定レジスタ２０４に設定されたデータ長の値をＬバイト、統一されたデータ処理単位をＭバイトとすると、目的のデータ処理における処理対象データは、ｎ＝Ｌ／Ｍとなるｎ＋２個の期間（Ｔ１〜Ｔｎ＋２）に分けてパイプライン処理される。
【００４４】
このパイプライン処理は、詳しくは以下である。最初の期間Ｔ１では、第１処理として、バスＩ/Ｆ部１１２がＳＡ設定レジスタ２０５に設定されたアドレス（ＳＡ）からＭ＝６４バイトのデータをリードし、そのデータを暗復号部入力セレクタ１１５を介して暗復号部１１４に渡す（ＭＲ（１））。
【００４５】
次に、期間Ｔ２では、バスＩ/Ｆ部１１２は、ＳＡ＋６４のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（２））。そしてこれと並行して、第２処理として、暗復号部１１４が１つ前の期間Ｔ１でバスＩ/Ｆ部１１２から受け取ったデータの暗号化を行い、その結果のデータを、セレクタ（１１７，１１９，１２０）を介してＭＡ部１１６、ＣＳ部１１８、及び送信バッファ１０７に渡す（暗号（１））。
【００４６】
次に、期間Ｔ３では、バスＩ/Ｆ部１１２は、ＳＡ＋（６４×２）のアドレスからＭ＝６４バイトのデータをリードし（ＭＲ（３））、これと並行して、暗復号部１１４が期間Ｔ２でバスＩ/Ｆ部１１２から受け取ったデータの暗号化を行い、その結果のデータを、セレクタ（１１７，１１９，１２０）を介してＭＡ部１１６、ＣＳ部１１８、及び送信バッファ１０７に渡す（暗号（２））。そしてさらに、第３処理として、ＭＡ部１１６、ＣＳ部１１８、及びＮＩ/Ｆ部１０９は、１つ前の期間Ｔ２で暗復号部１１４から受け取ったデータに対する各処理（ＭＡ、ＣＳ、送信）を並行して行う。
【００４７】
期間Ｔｋ（３≦ｋ≦ｎ）では、バスＩ/Ｆ部１１２は、ＳＡ＋（６４×ｋ）のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（ｋ））。これと並行して、暗復号部１１４が１つ前の期間Ｔｋ−１でバスＩ/Ｆ部１１２から受け取ったデータの暗号化を行い、その結果のデータを、セレクタ（１１７，１１９，１２０）を介してＭＡ部１１６、ＣＳ部１１８、及び送信バッファ１０７に渡す（暗号（ｋ））。さらにＭＡ部１１６、ＣＳ部１１８、及びＮＩ/Ｆ部１０９は、１つ前の期間Ｔｋ−１で暗復号部１１４から受け取ったデータに対する各処理（ＭＡ（ｋ）、ＣＳ（ｋ）、送信（ｋ））を並行して行う。
【００４８】
期間Ｔｎ＋１では、暗復号部１１４が１つ前の期間ｎでバスＩ/Ｆ部１１２から受け取ったデータの暗号化を行い、その結果のデータを、セレクタ（１１７，１１９，１２０）を介してＭＡ部１１６、ＣＳ部１１８、及び送信バッファ１０７に渡す（暗号（ｎ））。さらにＭＡ部１１６、ＣＳ部１１８、及びＮＩ/Ｆ部１０９は、1つ前の期間Ｔｎで暗復号部１１４から受け取ったデータに対する各処理（ＭＡ（ｎ−１）、ＣＳ（ｎ−１）、送信（ｎ−１））を並行して行う。
【００４９】
最後に期間Ｔｎ＋２では、ＭＡ部１１６、ＣＳ部１１８、及びＮＩ/Ｆ部１０９は、1つ前の期間Ｔｎ＋１で暗復号部１１４から受け取ったデータに対する各処理（ＭＡ（ｎ）、ＣＳ（ｎ）、送信（ｎ））を並行して行う。以上で目的のデータ処理が完了する。
【００５０】
このように、各期間（Ｔ）で、メモリリード（ＭＲ）、暗号、メッセージ認証（ＭＡ）、チェックサム（ＣＳ）、及び送信（送信バッファライト）の処理を、第１〜第３処理に分けて並行して連続して処理する。各期間（Ｔ）は、ＭＲ、暗号、ＭＡ、ＣＳ、及び送信の処理のうち、最も処理時間のかかる処理によって決まる。例えば、アクセラレータ１０６のクロックのサイクルとして、Ｍ＝６４バイトの処理に関して、ＭＲが４０サイクル、暗号が４０サイクル、ＭＡが８４サイクル、ＣＳが３２サイクルかかるものとする。その場合、期間Ｔ１及びＴ２は４０サイクル、期間Ｔ３から期間ｎ＋２は８４サイクルで実行する。アクセラレータ１０６で例えば１００ＭＨｚのクロックを用いて１サイクルが１０ｎｓ（ナノ秒）とすると、本実施の形態では、暗号、ＭＡ、及びＣＳを含むデータ処理が、約６０９Ｍｂｐｓの処理スループットで可能となる。
【００５１】
従来のデータ処理と比較すると、暗号、ＭＡ、及びＣＳの各処理をそれぞれ異なるハードウェア（アクセラレータ）で実装して個々に動作している構成の場合、データアクセスとして、６４バイトの暗号処理のために４０サイクルのメモリリードと４０サイクルのメモリライトが発生し、６４バイトのＭＡ及びＣＳの処理のためにも各４０サイクルのメモリリードが発生する。このため、６４バイトの暗号、ＭＡ、及びＣＳの処理のために、それぞれ、１２０（４０＋４０＋４０）サイクル、１２４（４０＋８４）サイクル、７２（４０＋３２）サイクルで、計３１６サイクルがかかる。例えば１００ＭＨｚのクロックを用いたとしても、その処理スループットは、約１６２Ｍｂｐｓ（（６４×８）／３１６×１００≒１６２）しか出すことができない。また、この場合、バスＩ/Ｆを個々に持つために、その重複する機能を持つハードウェア（アクセラレータ）が複数存在するので、回路規模が比較的大きい。
【００５２】
一方、本実施の形態におけるアクセラレータ１０６では、バスＩ/Ｆ部１１２を、暗復号部１１４、ＭＡ部１１６、及びＣＳ部１１８で共有しているため、回路規模が小さい利点がある。また、共有しているバスＩ/Ｆの入出力データを、３つの処理部（１１４，１１６，１１８）の各処理に効率良く渡せるように、各セレクタ（１１３，１１５，１１７，１１９，１２０）を配置しているので、効率の良い並列及び連続処理動作が可能となり、前記６０９Ｍｂｐｓという高い処理スループットが実現できる。
【００５３】
上記に関し、ディスクリプタモードで実行する場合は、レジスタ（２０１〜２０６）に設定するのと同様の内容をディスクリプタ（３０１〜３０６）に記述し、その先頭アドレスをＡ設定レジスタ２０７に設定し、処理開始設定レジスタ２０８に「ディスクリプタモードで開始」コードを設定すればよい。これによって、レジスタモードで実行した場合と同様の動作をする。
【００５４】
また、前記複数の種類の処理の動作単位（Ｍ）の決定に関して、ＭＡ処理（ＭＤ５、ＳＨＡ-１、ＳＨＡ-２２４、ＳＨＡ-２５６、ＳＨＡ-３８４、ＳＨＡ-５１２）の処理単位は従来６４バイトであるが、これはさらに小さい単位に分割して処理可能である。例えば、このＭＡ処理を４分割して１６バイトを処理単位とすることができる。この場合、暗復号処理にＤＥＳ、ＭＡ処理にＳＨＡ-２５６を選択し、これらとＣＳの処理を同時に行うものとした場合、各処理単位は、８バイト、１６バイト、２バイトとなる。よって、その最小公倍数は１６バイトとなり、本アクセラレータ１０６でのデータ処理単位（Ｍ）を１６バイトとして同様にパイプライン処理が可能である。このように、分割可能な処理については分割して処理単位を小さくすることで、回路規模を削減した構成をとることもできる。
【００５５】
前記レジスタ等の設定によりアクセラレータ１０６で同時並行的に動作させる複数の種類の処理については、前記第１〜第３処理の３種類を設定可能にする例を示したが、この数は２であっても４以上であっても同様に実現できる。また、レジスタ等の形式は、前述に限らず、例えば処理順序や処理グループなどの設定を設けても構わない。また、レジスタ等に対して設定可能な処理は、前記組み合わせ（ＭＲ、ＭＷ、暗号、復号、ＭＡ、ＣＳ、送信、受信）に限らなくともよい。また、所定のデータ処理としては、前述のセキュリティ関連処理に限らず、例えば画像処理系やデジタルフィルタの各種演算などであっても適用できる。
【００５６】
以上、本実施の形態によれば、特に、暗復号、ＭＡ、ＣＳなどの複数の種類の処理におけるデータに対するアクセスを１度にまとめることにより、処理実行にかかるバス占有率などが下がる。また、データアクセス数を削減すると共に、複数の種類の処理を並列及び連続的にパイプライン処理することにより、処理全体のスループットが向上する。
【００５７】
＜ＳＳＬ／ＴＬＳ受信＞
次に、図５において、同様の基本構成において、ＳＳＬ／ＴＬＳ受信の場合のデータ処理におけるアクセラレータ１０６の動作を説明する。ＳＳＬ／ＴＬＳ受信の場合、目的のデータ処理としては、まず、ＮＩ/Ｆ部１０９がネットワーク１９０からデータを受信し、そのデータを受信バッファ１０８に格納する。次に、そのデータのＣＳ、ＭＡ、及び復号の処理を、暗復号部１１４、ＭＡ部１１６、及びＣＳ部１１８において同時並行的に行う。その後、復号結果のデータを、バスＩ/Ｆ部１１２を介してメモリ１０３または出力装置１０５へ書き出す。
【００５８】
上記のように動作させるために、本データ処理装置１００は、以下のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、第１処理として、受信、即ち受信データの受信バッファ１０８への格納（受信バッファ１０８からのリード）を設定する。第２処理設定レジスタ２０２に、ＣＳ、ＭＡ、及び復号の処理の組み合わせを設定する。第３処理設定レジスタ２０３に、メモリ１０３へのライト（ＭＲ）を設定する。Ｌ設定レジスタ２０４に、Ｌとして、レジスタ（２０１〜２０３）に設定した第１〜第３処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、ＳＡとして、受信バッファ１０８の受信データの格納領域の先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、ＤＡとして、メモリ１０３における受信データの復号結果を格納する領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、暗復号処理タイプ、メッセージ認証処理タイプと共に、「レジスタモードで処理開始」コードを設定する。また、このとき、制御部１１０は、暗復号、ＭＡ、及びＣＳの処理の各処理単位の最小公倍数を、それらの統一された処理単位（Ｍ）として、処理を開始する。
【００５９】
また、制御部１１０は、レジスタ（２０１〜２０３）に設定された処理順序に従うために、暗復号部入力セレクタ１１５に、受信バッファ１０８からの入力を選択して暗復号部１１４に渡すように指示する。同様に、ＭＡ部入力セレクタ１１７にも、受信バッファ１０８からの入力を選択してＭＡ部１１６に渡すように指示する。ＣＳ部入力セレクタ１１９に対しても、受信バッファ１０８からの入力を選択してＣＳ部１１８に渡すように指示する。そして、バス出力データセレクタ１１３に対し、暗復号部１１４からの入力を選択してバスＩ/Ｆ部１１２に渡すように指示する。
【００６０】
このように、データ処理単位（Ｍ）を６４バイトとし、各セレクタ（１１３，１１５，１１７，１１９，１２０）に処理データ入出力の選択を指示することによって、図５に示すようなパイプライン処理の動作を実現する。
【００６１】
図５のパイプライン処理において、まず期間Ｔ１では、第１処理として、ＮＩ/Ｆ部１０９が最初のＭ＝６４バイトを受信して受信バッファ１０８に格納する（受信（１））。次の期間Ｔ２では、ＮＩ/Ｆ部１０９が２番目の６４バイトのデータを同様に受信して受信バッファ１０８に格納し（受信（２））、第２処理として、ＣＳ部１１８、ＭＡ部１１６、及び暗復号部１１４が、期間Ｔ１での最初の受信データに対する各処理（ＣＳ（１）、ＭＡ（１）、復号（１））を並行して行う。期間Ｔｋ（３≦ｋ≦ｎ）では、ＮＩ/Ｆ部１０９がｋ番目の６４バイトのデータを受信し（受信（ｋ））、ＣＳ部１１８、ＭＡ部１１６、及び暗復号部１１４が、期間Ｔｋ−１での（ｋ−１）番目の受信データに対する各処理（ＣＳ（ｋ−１）、ＭＡ（ｋ−１）、復号（ｋ−１））を並行して行う。さらに、期間Ｔｋ−１で暗復号部１１４が復号したデータを、バスＩ/Ｆ部１１２を介してメモリ１０３に書き出す（ＭＷ（ｋ−２））。期間Ｔｎ＋１では、ＣＳ部１１８、ＭＡ部１１６、及び暗復号部１１４が、期間Ｔｎでのｎ番目の受信データに対する各処理（ＣＳ（ｎ）、ＭＡ（ｎ）、復号（ｎ））を並行して行う。さらに、期間Ｔｎで暗復号部１１４が復号したデータを、バスＩ/Ｆ部１１２を介してメモリ１０３に書き出す（ＭＷ（ｎ−１））。期間Ｔｎ＋２では、ＣＳ処理結果とＭＡ処理結果の確認と並行して、期間Ｔｎ＋１で暗復号部１１４が復号したデータを、バスＩ/Ｆ部１１２を介してメモリ１０３に書き出す（ＭＷ（ｎ））。以上で完了する。
【００６２】
このように、受信、ＣＳ、ＭＡ、復号、及びＭＷの処理を並行して行うことによって、高速な受信処理が可能である。
【００６３】
＜ＩＰｓｅｃ送信＞
次に、図６において、同様の基本構成において、ＩＰｓｅｃ送信の場合のデータ処理におけるアクセラレータ１０６の動作を説明する。ＩＰｓｅｃ送信の場合、目的のデータ処理としては、まず、メモリ１０３に格納されたデータを読み込み、そのデータに対してＣＳと暗号の処理を行う。そして暗号処理されたデータに対してＭＡ処理を行うと共に、暗号化されたデータをネットワーク１９０へ送信する。
【００６４】
上記のように動作させるために、本データ処理装置１００は、以下のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、メモリ１０３のリード（ＭＲ）を設定する。第２処理設定レジスタ２０２に、ＣＳ、暗号の組み合わせを設定する。第３処理設定レジスタ２０３に、ＭＡ、送信（送信バッファ１０７へのライト）の組み合わせを設定する。Ｌ設定レジスタ２０４に、Ｌとして、ＣＳ、暗号、ＭＡ、及び送信の処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、ＳＡとして、メモリ１０３に格納されている送信データの先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、ＤＡとして、送信バッファ１０７の送信可能領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、暗復号処理タイプ、メッセージ認証処理タイプと共に、「レジスタモードで処理開始」コードを設定する。また、このとき、制御部１１０は、暗復号、ＭＡ、ＣＳの処理の各処理単位の最小公倍数を、処理単位（Ｍ）として処理を開始する。
【００６５】
また、制御部１１０は、レジスタ（２０１〜２０３）に設定された処理順序に従うために、暗復号部入力セレクタ１１５に、バスＩ/Ｆ部１１２からの入力を選択して暗復号部１１４に渡すよう指示する。同様に、ＭＡ部入力セレクタ１１７に、暗復号部１１４の出力を選択してＭＡ部１１６へ渡すように指示する。ＣＳ部入力セレクタ１１９に対しても、バスＩ/Ｆ部１１２の出力を選択してＣＳ部１１８へ渡すように指示する。そして送信出力データセレクタ１２０に対して、暗復号部１１４の出力を選択して送信バッファ１０７へ渡すように指示する。
【００６６】
このように処理単位（Ｍ）を６４バイトとして、各セレクタ（１１３，１１５，１１７，１２０）に処理データ入出力の選択を指示することによって、図６に示すような動作を実現する。
【００６７】
図６のパイプライン処理において、まず期間Ｔ１では、第１処理として、バスＩ/Ｆ部１１２がＳＡからＭ＝６４バイトのデータをリードし、そのデータをＣＳ部入力セレクタ１１９と暗復号部入力セレクタ１１５を介してＣＳ部１１８及び暗復号部１１４に渡す（ＭＲ（１））。期間Ｔ２では、同様にバスＩ/Ｆ部１１２がＳＡ＋６４のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（２））。これと並行して、第２処理として、ＣＳ部１１８と暗復号部１１４は、期間Ｔ１でバスＩ/Ｆ部１１２から受け取ったデータのＣＳと暗号の処理を行う（ＣＳ（１）、暗号（１））。暗号結果は、送信出力データセレクタ１２０を介して送信バッファ１０７に渡す。期間Ｔｋ（３≦ｋ≦ｎ）では、バスＩ/Ｆ部１１２がＳＡ＋（６４×ｋ）のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（ｋ））。これと並行して、ＣＳ部１１８と暗復号部１１４は期間Ｔｋ−１でバスＩ/Ｆ部１１２がメモリ１０３から読み出したデータに対するＣＳと暗号の処理を行う（ＣＳ（ｋ−１）、暗号（ｋ−１））。さらに、第３処理として、ＭＡ部１１６とＮＩ/Ｆ部１０９は、期間Ｔｋ−１で暗復号部１１４が暗号化したＭ＝６４バイトのデータのＭＡと送信の処理を行う（ＭＡ（ｋ−２）、送信（ｋ−２））。期間Ｔｎ＋１では、ＣＳ部１１８と暗復号部１１４は期間Ｔｎ−１でバスＩ/Ｆ部１１２がメモリ１０３から読み出したデータに対するＣＳと暗号の処理を行う（ＣＳ（ｎ）、暗号（ｎ））。さらに、ＭＡ部１１６とＮＩ/Ｆ部１０９は期間Ｔｎ−１で暗復号部１１４が暗号化したＭ＝６４バイトのデータのＭＡと送信の処理を行う（ＭＡ（ｎ−１）、送信（ｎ−１））。期間Ｔｎ＋２では、ＭＡ部１１６とＮＩ/Ｆ部１０９が期間Ｔｎで暗復号部１１４が暗号化したＭ＝６４バイトのデータのＭＡと送信の処理を行う（ＭＡ（ｎ）、送信（ｎ））。以上で完了する。
【００６８】
このように、ＭＲ、暗号、ＭＡ、ＣＳ、送信の処理を並行して行うことによって、高速な送信処理が可能である。
【００６９】
＜ＩＰｓｅｃ受信＞
次に、図７において、同様の基本構成において、ＩＰｓｅｃ受信の場合のデータ処理におけるアクセラレータ１０６の動作を説明する。ＩＰｓｅｃ受信の場合、目的のデータ処理としては、まず、ＮＩ/Ｆ部１０９がネットワーク１９０からデータを受信し、そのデータを受信バッファ１０８に格納する。次に、そのデータのＭＡ及び復号の処理を並行して行う。そして、その復号結果のデータに対しＣＳ処理とメモリ１０３へのライトとを行う。
【００７０】
上記のように動作させるために、本データ処理装置１００は、以下のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、受信、即ち受信データの受信バッファ１０８への格納を設定する。第２処理設定レジスタ２０２に、ＭＡ、復号の組み合わせを設定する。第３処理設定レジスタ２０３に、ＣＳ、ＭＲの組み合わせを設定する。Ｌ設定レジスタ２０４に、Ｌとして、レジスタ（２０１〜２０３）に設定した第１〜第３処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、受信バッファ１０８の受信データ格納領域の先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、メモリ１０３における受信データの復号結果を格納する領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、暗復号処理タイプ、メッセージ認証処理タイプと共に、「レジスタモードで処理開始」コードを設定する。また、このとき、制御部１１０は、暗復号、ＭＡ、ＣＳの処理の各処理単位の最小公倍数を、処理単位（Ｍ）として処理を開始する。
【００７１】
また、制御部１１０は、レジスタ（２０１〜２０３）に設定された処理順序に従うために、暗復号部入力セレクタ１１５に、受信バッファ１０８からの入力を選択して暗復号部１１４に渡すように指示する。同様に、ＭＡ部入力セレクタ１１７にも、受信バッファ１０８からの入力を選択してＭＡ部１１６に渡すように指示する。ＣＳ部入力セレクタ１１９に対しても、暗復号部１１４からの入力を選択してＣＳ部１１８に渡すように指示する。そしてバス出力データセレクタ１１３に対して、暗復号部１１４からの入力を選択してバスＩ/Ｆ部１１２に渡すように指示する。
【００７２】
このように処理単位（Ｍ）を６４バイトとして、各セレクタ（１１３，１１５，１１７，１２０）に処理データ入出力の選択を指示することによって、図７に示すようなパイプライン処理の動作を実現する。
【００７３】
図７のパイプライン処理において、まず期間Ｔ１では、第１処理として、ＮＩ/Ｆ部１０９が最初のＭ＝６４バイトのデータを受信して受信バッファ１０８に格納する（受信（１））。期間Ｔ２では、同様にＮＩ/Ｆ部１０９が２番目のＭ＝６４バイトのデータを受信する（受信（２））。これと並行して、第２処理として、ＭＡ部１１６と暗復号部１１４が期間Ｔ１でＮＩ/Ｆ部１０９で受信した最初のデータのＭＡと復号の処理を行う（ＭＡ（１）、復号（１））。期間Ｔｋ（３≦ｋ≦ｎ）では、ＮＩ/Ｆ部１０９がｋ番目のＭ＝６４バイトのデータを受信する（受信（ｋ））。これと並行して、ＭＡ部１１６と暗復号部１１４が期間Ｔｋ−１でＮＩ/Ｆ部１０９で受信した（ｋ−１）番目のデータのＭＡと復号の処理を行う（ＭＡ（ｋ−１）、復号（ｋ−１））。さらに並行して、第３処理として、ＣＳ部１１８とバスＩ/Ｆ部１１２が、期間Ｔｋ−１で暗復号部１１４が復号した（ｋ−２）番目のデータに対するＣＳ処理及び復号結果のメモリ１０３へのライトを行う（復号（ｋ−２）、ＭＲ（ｋ−２））。期間Ｔｎ＋１では、期間ＴｎでＮＩ/Ｆ部１０９が受信したｎ番目のデータのＭＡと復号の処理を並行して行う（ＭＡ（ｎ）、復号（ｎ））。さらに並行して、期間Ｔｎで暗復号部１１４で復号した（ｎ−１）番目のデータのＣＳ処理とメモリライトを行う（ＣＳ（ｎ−１）、ＭＲ（ｎ−１））。期間Ｔｎ＋２では、ＭＡ処理結果の確認と共に、期間Ｔｎ＋１で暗復号部１１４が復号したｎ番目のデータのＣＳ処理とメモリライトとを並行して行う（ＣＳ（ｎ）、ＭＥ（ｎ））。期間Ｔｎ＋３では、ｎ番目のデータに対するＣＳ処理結果の確認を行う。以上で完了する。
【００７４】
このように、受信、ＭＡ、復号、ＣＳ、ＭＲを並行して行うことによって、高速な受信処理が可能である。
【００７５】
＜ＤＴＣＰ−ＩＰ，ＩＰ放送  送信＞
次に、図８において、同様の基本構成において、ＤＴＣＰ−ＩＰ（Digital Transmission Content Protection over Internet Protocol）やＩＰ放送の送信の場合のデータ処理におけるアクセラレータ１０６の動作を説明する。ＤＴＣＰ−ＩＰやＩＰ放送の送信の場合、目的のデータ処理としては、まず、メモリ１０３に格納されたデータを読み込み、そのデータに対して暗号処理を行う。そして暗号処理されたデータに対しＣＳ処理を行い、暗号化されたデータをネットワーク１９０へ送信する。
【００７６】
上記のように動作させるために、本データ処理装置１００は、以下のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、メモリ１０３のリード（ＭＲ）を設定する。第２処理設定レジスタ２０２に、暗号処理を設定する。第３処理設定レジスタ２０３に、ＣＳ、送信の組み合わせを設定する。Ｌ設定レジスタ２０４に、Ｌとして、レジスタ（２０１〜２０３）に設定した第１〜第３処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、ＳＡとして、メモリ１０３に格納されている送信データの先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、ＤＡとして、送信バッファ１０７の送信可能領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、暗復号処理タイプ、メッセージ認証処理タイプと共に、「レジスタモードで処理開始」コードを設定する。また、このとき、制御部１１０は、暗号、ＣＳの処理の各処理単位の最小公倍数を、処理単位（Ｍ）として処理を開始する。
【００７７】
また、制御部１１０は、レジスタ（２０１〜２０３）に設定された処理順序に従うために、暗復号部入力セレクタ１１５に、バスＩ/Ｆ部１１２からの入力を選択して暗復号部１１４に渡すように指示する。同様に、ＣＳ部入力セレクタ１１９に対しても、暗復号部１１４からの入力を選択してＣＳ部１１８に渡すように指示する。そして送信出力データセレクタ１２０に対して、暗復号部１１４からの入力を選択して送信バッファ１０７に渡すように指示する。
【００７８】
このように処理単位（Ｍ）を６４バイトとして、各セレクタ（１１３，１１５，１１７，１２０）に処理データ入出力の選択を指示することによって、図８に示すようなパイプライン処理の動作を実現する。
【００７９】
図８のパイプライン処理において、まず期間Ｔ１では、第１処理として、バスＩ/Ｆ部１１２がＳＡからＭ＝６４バイトのデータをリードして、そのデータを暗復号部１１４に渡す（ＭＲ（１））。期間Ｔ２では、バスＩ/Ｆ部１１２がＳＡ＋６４のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（２））。これと並行して、第２処理として、暗復号部１１４は期間Ｔ１でバスＩ/Ｆ部１１２から受け取ったデータの暗号処理を行う（暗号（１））。期間Ｔｋ（３≦ｋ≦ｎ）では、バスＩ/Ｆ部１１２がＳＡ＋（６４×ｋ）のアドレスからＭ＝６４バイトのデータをリードする（ＭＲ（ｋ））。これと並行して、暗復号部１１４が期間Ｔｋ−１でバスＩ/Ｆ部１１２がリードした（ｋ−１）番目の６４バイトのデータの暗号化を行う（暗号（ｋ−１））。さらに並行して、第３処理として、期間Ｔｋ−１で暗復号部１１４が暗号化した（ｋ−２）番目のデータのＣＳと送信の処理をＣＳ部１１８とＮＩ/Ｆ部１０９が行う（ＣＳ（ｋ−２）、送信（ｋ−２））。期間Ｔｎ＋１では、暗復号部１１４が期間ＴｎでバスＩ/Ｆ部１１２がリードしたｎ番目の６４バイトのデータの暗号化を行う（暗号（ｎ））。さらに並行して、期間Ｔｎで暗復号部１１４が暗号化した（ｎ−１）番目の６４バイトのデータのＣＳと送信の処理をＣＳ部１１８とＮＩ/Ｆ部１０９が行う（ＣＳ（ｎ−１）、送信（ｎ））。期間Ｔｎ＋２では、期間Ｔｎ＋１で暗復号部１１４が暗号化したｎ番目の６４バイトのデータのＣＳと送信の処理をＣＳ部１１８とＮＩ/Ｆ部１０９が行う（ＣＳ（ｎ）、送信（ｎ））。以上で完了する。
【００８０】
このように、ＭＲ、暗号、ＣＳ、送信の処理を並行して行うことにより、高速な送信処理が可能である。
【００８１】
＜ＤＴＣＰ−ＩＰ，ＩＰ放送  受信＞
次に、図９において、同様の基本構成において、ＤＴＣＰ−ＩＰやＩＰ放送の受信の場合のデータ処理におけるアクセラレータ１０６の動作を説明する。ＤＴＣＰ−ＩＰやＩＰ放送の受信の場合、目的のデータ処理としては、まず、ＮＩ/Ｆ部１０９がネットワーク１９０からデータを受信し、そのデータを受信バッファ１０８に格納する。次に、そのデータの復号及びＣＳ処理を並行して行う。その後、復号結果データをメモリ１０３に書き出す。
【００８２】
上記のように動作させるために、本データ処理装置１００は、以下のようにレジスタ（２０１〜２０６，２０８）に設定する。第１処理設定レジスタ２０１に、受信、即ち受信データの受信バッファ１０８への格納を設定する。第２処理設定レジスタ２０２に、復号とＣＳの組み合わせを設定する。第３処理設定レジスタ２０３に、メモリ１０３へのライト（ＭＷ）を設定する。Ｌ設定レジスタ２０４に、Ｌとして、レジスタ（２０１〜２０３）に設定した第１〜第３処理を行うデータ長を設定する。ＳＡ設定レジスタ２０５に、ＳＡとして、受信バッファ１０８の受信データの格納されている領域の先頭アドレスを設定する。ＤＡ設定レジスタ２０６に、ＤＡとして、メモリ１０３における受信データの復号結果を格納する領域の先頭アドレスを設定する。最後に処理開始設定レジスタ２０８に、暗復号処理タイプと共に、「レジスタモードで処理開始」コードを設定する。また、このとき、制御部１１０は、暗復号、ＣＳの処理の各処理単位の最小公倍数を、処理単位（Ｍ）として処理を開始する。
【００８３】
また、制御部１１０は、レジスタ（２０１〜２０３）に設定された処理順序に従うために、暗復号部入力セレクタ１１５に、受信バッファ１０８からの入力を選択して暗復号部１１４に渡すように指示する。ＣＳ部入力セレクタ１１９に対しても、受信バッファ１０８からの入力を選択してＣＳ部１１８に渡すように指示する。そして、バス出力データセレクタ１１３に対して、暗復号部１１４からの入力を選択してバスＩ/Ｆ部１１２に渡すように指示する。
【００８４】
このように処理単位（Ｍ）を６４バイトとして、各セレクタ（１１３，１１５，１１７，１２０）に処理データ入出力の選択を指示することによって、図９に示すようなパイプライン処理の動作を実現する。
【００８５】
図９のパイプライン処理において、まず期間Ｔ１では、第１処理として、ＮＩ/Ｆ部１０９が最初のＭ＝６４バイトを受信して受信バッファ１０８に格納する（受信（１））。期間Ｔ２では、同様にＮＩ/Ｆ部１０９が２番目の６４バイトのデータを受信して、暗復号部１１４とＣＳ部１１８に渡す（受信（２））。これと並行して、第２処理として、暗復号部１１４とＣＳ部１１８は期間Ｔ１でＮＩ/Ｆ部１０９が受信した最初のデータの復号とＣＳの処理を行う（復号（１）、ＣＳ（１））。期間Ｔｋ（３≦ｋ≦ｎ）では、ＮＩ/Ｆ部１０９がｋ番目のデータを受信する（受信（ｋ））。これと並行して暗復号部１１４とＣＳ部１１８は期間Ｔｋ−１でＮＩ/Ｆ部１０９が受信したデータの復号とＣＳの処理を行う（復号（ｋ−１）、ＣＳ（ｋ−１））。さらに並行して、第３処理として、暗復号部１１４が期間Ｔｋ−１で復号した（ｋ−２）番目の６４バイトのデータをバスＩ/Ｆ部１１２がメモリ１０３にライトする（ＭＷ（ｋ−２））。期間Ｔｎ＋１では、暗復号部１１４とＣＳ部１１８は期間ＴｎでＮＩ/Ｆ部１０９が受信したｎ番目のデータの復号とＣＳの処理を行う（復号（ｎ）、ＣＳ（ｎ））。さらに並行して、暗復号部１１４が期間Ｔｎで復号した（ｎ−１）番目の６４バイトのデータをバスＩ/Ｆ部１１２がメモリ１０３にライトする（ＭＷ（ｎ−１））。期間Ｔｎ＋２では、ＣＳ処理結果を確認すると共に、暗復号部１１４が期間（ｎ−１）で復号したｎ番目の６４バイトのデータをバスＩ/Ｆ部１１２がメモリ１０３にライトする（ＭＷ（ｎ））。以上で完了する。
【００８６】
このように、受信、復号、ＣＳ、ＭＷの処理を並行して行うことにより、高速な受信処理が可能である。
【００８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【００８８】
本発明は、ファイルの暗復号や改ざん検知、ネットワークの通信プロトコル処理などのセキュリティ関連処理、デジタルフィルタや画像処理、映像・音声の圧縮・伸張処理などに利用可能である。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施形態のネットワークデータ処理装置の全体の機能ブロック構成を示す図である。
【図２】本発明の一実施の形態のネットワークデータ処理装置における、ネットワークデータ処理アクセラレータのレジスタ構成を示す図である。
【図３】本発明の一実施の形態のネットワークデータ処理装置における、ネットワークデータ処理アクセラレータのディスクリプタ構成を示す図である。
【図４】本発明の一実施の形態のネットワークデータ処理装置における、ＳＳＬ／ＴＬＳ送信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【図５】本発明の一実施の形態のネットワークデータ処理装置における、ＳＳＬ／ＴＬＳ受信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【図６】本発明の一実施の形態のネットワークデータ処理装置における、ＩＰｓｅｃ送信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【図７】本発明の一実施の形態のネットワークデータ処理装置における、ＩＰｓｅｃ受信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【図８】本発明の一実施の形態のネットワークデータ処理装置における、ＤＴＣＰ-ＩＰ、ＩＰ放送の送信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【図９】本発明の一実施の形態のネットワークデータ処理装置における、ＤＴＣＰ-ＩＰ、ＩＰ放送の受信時におけるデータ処理のパイプライン処理動作を説明するための図である。
【符号の説明】
【００９０】
１００…ネットワークデータ処理装置、１０１…ＣＰＵ、１０２…バス、１０３…メモリ、１０４…入力装置、１０５…出力装置、１０６…ネットワークデータ処理アクセラレータ、１０７…送信バッファ、１０８…受信バッファ、１０９…ＮＩ/Ｆ部、１１０…制御部、１１１…制御バス、１１２…バスＩ/Ｆ部、１１３…バス出力データセレクタ、１１４…暗復号部（暗号化／復号化処理部）、１１５…暗復号部入力セレクタ、１１６…ＭＡ部（メッセージ認証処理部）、１１７…ＭＡ部入力セレクタ、１１８…ＣＳ部（チェックサム処理部）、１１９…ＣＳ部入力セレクタ、１２０…送信出力データセレクタ、１９０…ネットワーク、２０１…第１処理設定レジスタ、２０２…第２処理設定レジスタ、２０３…第３処理設定レジスタ、２０４…処理データ長設定レジスタ、２０５…ソースアドレス設定レジスタ、２０６…デスティネーションアドレス設定レジスタ、２０７…ディスクリプタアドレス設定レジスタ、２０８…処理開始設定レジスタ、３０１…第１処理設定ディスクリプタ、３０２…第２処理設定ディスクリプタ、３０３…第３処理設定ディスクリプタ、３０４…処理データ長設定ディスクリプタ、３０５…ソースアドレス設定ディスクリプタ、３０６…デスティネーション設定ディスクリプタ。
【図１】
2008067152.tif 000003
【図２】
2008067152.tif 000004
【図３】
2008067152.tif 000005
【図４】
2008067152.tif 000006
【図５】
2008067152.tif 000007
【図６】
2008067152.tif 000008
【図７】
2008067152.tif 000009
【図８】
2008067152.tif 000010
【図９】
2008067152.tif 000011