(57)【要約】【課題】メインシステムから発せられる複数の処理命令に応じてエンジン部で処理するデータ処理装置において、複数の処理を並行処理することで、処理効率の向上を図る。【解決手段】データ処理部２４０には、処理命令に応じて独立して動作する各機能部２４２ａ，２４２ｂ，２４４，２４６を設ける。中央演算制御処理部１１０は、一次ドライバ１３０にて処理対象データを所定サイズに分割し、二次ドライバ１４０は、分割データの転送順序を所定の基準に基づいて決定し、決定した転送順序に従って、分割データと分割データに対応する処理内容の情報とを順次エンジン部２００に転送する。指示制御部２６６は、分割データに対応する処理を行なう各機能部２４２ａ，２４２ｂ，２４４，２４６に分割データが入力され、処理済みデータが各機能部２４２ａ，２４２ｂ，２４４，２４６から指示制御部２６６に入力されるように、セレクタ２５０，２５２を制御する。【選択図】図１１
2005167870.tif 000002
【特許請求の範囲】
【請求項１】
メインシステムからハードウェアで構成されたエンジン部に処理対象データを転送して、当該処理対象データに対して所定の処理を行ない、処理済みデータを前記メインシステムに転送するデータ処理方法であって、
前記エンジン部が担当するそれぞれ異なる処理内容の複数の処理について、
前記複数の処理の各々で処理対象とされる前記処理対象データを所定サイズに分割し、
所定の基準に基づいて、分割された各分割データの前記エンジン部への転送順序を決定し、
決定された前記転送順序に従って、前記分割データを前記エンジン部へ順次転送し、
前記エンジン部において、前記メインシステムから転送された前記分割データの前記処理内容に応じた処理を順次実行し、
処理済みデータを前記メインシステムに転送する
ことを特徴とするデータ処理方法。
【請求項２】
前記所定の基準は、前記メインシステムが適用するアプリケーションに応じて決定する
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記所定の基準は、処理内容の優先度順、通信における帯域確保順、および処理要求の到着順のうちの何れかである
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
前記それぞれ異なる処理内容の複数の処理は、通信プロトコルにおける、暗号化処理、復号化処理、認証処理、あるいはチェックサム処理である
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項５】
前記暗号化処理、復号化処理、および認証処理は、ＳＳＬプロトコル、ＴＬＳプロトコル、またはＩＰｓｅｃプロトコルに従ったものである
ことを特徴とする請求項４に記載のデータ処理方法。
【請求項６】
前記チェックサム処理は、ＴＣＰプロトコルまたはＵＤＰプロトコルに従ったものである
ことを特徴とする請求項４に記載のデータ処理方法。
【請求項７】
前記分割データのそれぞれについて前記エンジン部に対して通知する前記処理内容の情報と当該処理内容に対応した前記処理対象データの前記メインシステムにおける格納位置を示すアドレス情報とを対応付け、順に所定の記憶部に格納し、
所定のタイミングで、前記記憶部から前記処理内容の情報と前記アドレス情報とを順に読み出して、前記分割データに対して前記処理内容に応じた処理を順次実行する
ことを特徴とする請求項１に記載のデータ処理方法。
【請求項８】
前記処理内容の情報と前記アドレス情報の前記記憶部への格納と読出しは、先入れ先出し法で行なう
ことを特徴とする請求項７に記載のデータ処理方法。
【請求項９】
ハードウェアで構成されたエンジン部とメインシステムとを備え、前記エンジン部に前記メインシステムから処理対象データを転送して、当該処理対象データに対して所定の処理を行ない、処理済みデータを前記メインシステムに転送するデータ処理装置であって、
前記メインシステムは、
前記エンジン部が担当するそれぞれ異なる処理内容の複数の処理について、前記複数の処理の各々で処理対象とされる前記処理対象データを所定サイズに分割し、所定の基準に基づいて、分割された各分割データの前記エンジン部への転送順序を決定する処理手順制御部
を備えていることを特徴とするデータ処理装置。
【請求項１０】
前記処理手順制御部は、
前記複数の処理の各々で処理対象とされる前記処理対象データを分割する際の前記所定サイズを判断するデータ分割検討部と、
前記データ分割検討部の判断結果に従った前記所定サイズで前記処理対象データを分割する分割処理部と
を有していることを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記処理手順制御部は、
さらに、前記データ分割検討部に対して、前記所定サイズを判断する際の条件を設定する分割条件設定部を有しており、
前記前記データ分割検討部は、前記分割条件設定部により設定された条件に従って前記処理対象データを分割する前記所定サイズを決定し、決定した所定サイズを前記分割処理部に通知する
ことを特徴とする請求項１０に記載のデータ処理装置。
【請求項１２】
前記処理手順制御部は、
前記複数の処理の各々で処理対象とされる前記処理対象データのそれぞれについて、前記処理対象データを分割する必要があるか否かを判定するデータ解析部
をさらに備え、
前記処理手順制御部は、前記データ解析部が前記処理対象データを分割する必要があると判定した場合に、前記所定サイズを決定して前記分割処理部に通知する
ことを特徴とする請求項１０に記載のデータ処理装置。
【請求項１３】
前記エンジン部は、所定のデータ処理を行なうデータ処理部および前記データ処理部を制御する制御部を有し、
前記データ処理部は、前記それぞれ異なる処理内容の複数の処理として、通信プロトコルにおける、暗号化処理、復号化処理、認証処理、あるいはチェックサム処理を、それぞれ独立して行なう個別のハードウェア回路で構成された機能部を有している
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１４】
前記分割データのそれぞれについて前記エンジン部に対して通知する前記処理内容の情報と当該処理内容に対応した前記処理対象データの前記メインシステムにおける格納位置を示すアドレス情報とを対応付けて順に格納する記憶部
をさらに備えていることを特徴とする請求項９に記載のデータ処理装置。
【請求項１５】
前記エンジン部は、前記メインシステムの前記処理手順制御部から処理の起動指示を受け付けると、前記処理内容の情報と当該処理内容に対応した前記処理対象データの前記メインシステムにおける格納位置を示すアドレス情報とを前記記憶部から順に読み出して、前記分割データに対して前記処理内容に応じた処理を順次実行する
ことを特徴とする請求項１４に記載のデータ処理装置。
【請求項１６】
前記処理内容の情報と前記アドレス情報の前記記憶部への格納と読出しを、先入れ先出し法で行なうメモリ制御部
をさらに備えていることを特徴とする請求項１４に記載のデータ処理装置。
【請求項１７】
前記メモリ制御部は、前記エンジン部に設けられている
ことを特徴とする請求項１６に記載のデータ処理装置。
【請求項１８】
前記エンジン部は、前記処理内容の情報と前記アドレス情報の前記記憶部からの読出しを、ＤＭＡ転送によって行なうメモリ制御部を有している
ことを特徴とする請求項１４に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアで構成されたエンジン部において、メインシステムから転送された処理対象データに対して所定の処理を行ない、処理済みデータをメインシステムに転送するデータ処理方法およびデータ処理装置に関する。たとえば、通信プロトコルにおける、暗号化処理や復号化処理あるいは認証処理といったセキュリティ処理や通信プロトコル階層におけるチェックサム処理を行なう技術に関する。
【背景技術】
【０００２】
近年、計算機や通信技術の分野では、データを暗号化してデータ配布し、配布されたデータを復号化することで、配布されたデータ内容を得る情報の秘匿技術（機密保護技術／セキュリティ技術）が知られている。たとえば、ネットワークを用いたデータ通信では、データの機密性や完全性を確保するため、暗号化や復号化（纏めて秘匿化もしくは機密化ともいう）や、データの改竄に対する保護のためのデータ認証技術が用いられており、送信データを暗号化して送信し、受信データを復号化して受信内容を得るようにしている。
【０００３】
また、この秘匿技術と併用して、暗号ペイロード部分や他の部分のデータの同一性を確認するための認証（完全性保証）を行なう認証技術も知られている。また、通信プロトコルによっては、プロトコルレイヤの階層に付加される、宛先や何のデータであるかなどの情報を書き込んだヘッダ（Header）も含めたデータの同一性を確認するためのチェックサム計算処理を行なうこともある。
【０００４】
以下、完全性保証を行なう認証処理とヘッダ及びデータの同一性を確認するチェックサム処理とを纏めて同一性確認処理ともいう。また、秘匿技術（セキュリティ技術）と同一性確認技術とを纏めて、情報セキュリティ技術ともいう。なお、暗号化または復号化あるいは認証といったセキュリティ技術（狭義のセキュリティ技術）と、ヘッダ及びデータの同一性を確認するチェックサム処理を含む情報セキュリティ技術（広義のセキュリティ技術）は、何れもデータの改竄に対する対応処理である点で共通するものである。
【０００５】
ここで、この種の情報セキュリティ技術では、従来、暗号化処理や復号化処理といった秘匿処理や、認証コードの作成や削除といった認証処理やヘッダおよびデータの同一性を確認するチェックサム処理を、ソフトウェアで行なう仕組みが採られていた。このソフトウェアで行なう仕組みは、並列処理や連続処理に柔軟に対処し得るものの、その処理が複雑になるに連れ、処理時間が長くなるため、処理速度の低下が問題となる。
【０００６】
この問題を改善する一手法として、たとえば特許文献１〜３に提案されているように、セキュリティ処理（秘匿処理や認証処理）を、ハードウェア処理回路で行なうことで高速化を図ったアクセラレータシステムの仕組みが考えられている。このアクセラレータシステムは、処理が複雑であっても、処理速度の低下を防ぐことができ、高いスループットを得ることができる。
【０００７】
【特許文献１】特開平１０−３２０１９１号公報
【特許文献２】特表２００３−５１２６４９号公報
【特許文献３】米国公開特許公報２００２／００７３３２４Ａ１
【０００８】
ここで、アクセラレータシステムでは、１つのデータに対してブロック暗号・認証の並列処理を行なう場合に、そのデータを暗号処理部、認証処理部それぞれに並列に転送して処理する。また、１つのデータに対してブロック暗号・認証の連続処理を行なう場合、先ずはデータを暗号処理部で処理し、その後、認証処理部に転送する。
【０００９】
ネットワークプロトコルとしては、たとえばＩＰＳｅｃ（Internet Protocol Security）、またはＳＳＬ（Secure Sockets Layer）やＳＳＬをベースに改良されたＴＬＳ（Transport Layer Security）（以下纏めてＳＳＬ／ＴＬＳとも記す）、またはＴＣＰ（Transmission Control Protocol ）やＵＤＰ（User Datagram Protocol）（以下纏めてＴＣＰ／ＵＤＰとも記す）、あるいはＩＰｖ４（Internet Protocol Version4）やＩＰｖ６（Internet Protocol Version6）などがある。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
一方、一連の処理を階層構造で考えて取り扱う概念がある。たとえば、ネットワークプロトコルにおいては、ＯＳＩ（Open Systems Interconnection）の基本参照モデルやこれに対応した通信プロトコルモデルのように、プロトコルの階層構造の概念が導入されている。なお、ＯＳＩ基本参照モデルや通信プロトコルモデルにおける１つのプロトコル階層内では、さらに複数の処理階層が含まれる場合もある。
【００１１】
処理対象データに対する各々の処理を階層化した階層モデルで表し、処理階層ごとに独立して所定の処理を順次行なうことで一連の処理を実行する場合、たとえば通信処理時のデータの流れは、送信側では上位のプロトコル階層から下位のプロトコル階層に、また受信側では下位のプロトコル階層から上位のプロトコル階層に流れる。また、送信側の各プロトコル階層では、通信の制御に必要なデータをヘッダとして付加し、受信側では、そのヘッダを順に解釈していくことで通信を行なう。また、アプリケーションによっては、複数の処理対象データに対して並列処理させる場合もある。
【００１２】
処理階層モデルで表される一連の処理の一部を、単一デバイスで構成されたアクセラレータを使用して実行する場合、メインメモリ（主記憶部）に保持されている処理対象データをアクセラレータシステムに渡し、装置全体を制御するＣＰＵやデータを記憶するメインメモリを含むメインシステム側からアクセラレータシステムに処理を移行させ、アクセラレータシステムにおいて処理が完了した段階で、処理済みデータをメインシステム側に渡す（戻す）。アプリケーションから複数の処理要求がほぼ同時期に発生した場合は、その複数の処理要求とそれに対応した処理対象データをアクセラレータシステムに渡すことになる。
【００１３】
ここで、単一のアクセラレータが複数の処理要求をほぼ同時期に受け取った場合、１つのデータを処理している間、他の処理は待たされることになる。処理中のデータサイズが大きければその他の処理の待ち時間も大きくなる。この結果、本来であれば間隔を空けずに送信したいデータが、他の処理のデータサイズが大きければそれだけ処理に時間が掛かり、間隔が空き、データの送受信にゆらぎが発生してしまう問題が生じる。
【００１４】
図１９は、従来技術における、この問題点を説明する図である。図１９では、処理要求はほぼ同時に発せられているものの、チェックサム計算→復号化→暗号化→認証処理の順で処理要求がアクセラレータドライバに届いている。このため、アクセラレータドライバが処理要求の到着順に処理する場合、先に到着した処理要求に対するデータ処理が終わるまでは、後で到着した処理要求に対するデータ処理については実行できず、長い時間待たされることになる。
【００１５】
たとえば、チェックサム計算が完了するまでは、復号化、暗号化、および認証の各処理は待たされてしまう。また、この後に復号化を行なうと、復号化処理が完了するまでは、暗号化および認証の各処理は待たされてしまう。この結果、通信時に伝送のゆらぎが発生することになる。これは、たとえば、リアルタイムにストリームデータを送受信しなければならない通信システムにおいては問題となる。
【００１６】
本発明は、上記事情に鑑みてなされたものであり、複数の処理要求がほぼ同時に発生した場合においても、効率的な処理をアクセラレータにて行なうことができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係るデータ処理方法は、メインシステムからハードウェアで構成されたエンジン部に処理対象データを転送して所定の処理を行ない、処理済みデータをメインシステムに転送するデータ処理方法であって、エンジン部が担当するそれぞれ異なる処理内容の複数の処理について、先ず、複数の処理の各々で処理対象とされる処理対象データを所定サイズに分割し、処理内容に関する所定の基準に基づいて、分割された各分割データのエンジン部への転送順序を決定することとした。そして、この決定された転送順序に従って、各分割データをエンジン部へ順次転送し、エンジン部において、メインシステムから転送された分割データの処理内容に応じた処理を順次実行し、処理済みデータをメインシステムに転送することとした。こうすることで、複数の処理からなる一連の処理を完結する。
【００１８】
また、本発明に係るデータ処理装置は、上記本発明に係るデータ処理方法を実施するのに好適な装置であって、メインシステムに、複数の処理の各々で処理対象とされる処理対象データを所定サイズに分割し、所定の基準に基づいて、分割された各分割データのエンジン部への転送順序を決定する処理手順制御部を設けることとした。
【００１９】
処理手順制御部により決定された転送順序で実際に分割データをエンジン部に転送する際には、メインシステム側がマスターとなってもよいし、あるいはＤＭＡ転送のように、エンジン部がマスターとなってもよい。また、ディスクリプタキューを利用した先入れ先出し法を利用するとよい。
【００２０】
また従属項に記載された発明は、本発明に係るデータ処理方法およびデータ処理装置のさらなる有利な具体例を規定する。
【００２１】
たとえば、処理内容に関する所定の基準や分割サイズを、メインシステムが適用するアプリケーションに応じて決定するようにするとよい。こうすることで、アプリケーションに適合するように処理特性を制御することができる。
【００２２】
また、エンジン部は、それぞれ異なる処理内容として、通信プロトコルにおける、暗号化処理、復号化処理、あるいは認証処理などのセキュリティ処理を行なうセキュリティ処理部、あるいはチェックサム処理を行なうチェックサム処理部をそれぞれ独立したハードウェア回路として有しているものであるのがよい。
【００２３】
勿論、メインシステムとエンジン部との間で協調処理を行なう場合に、独立した複数の処理の一部の処理をハードウェアで構成されたエンジン部で行なうシステム構成であればよく、エンジン部が行なう処理内容は、通信プロトコルに関わる処理に限定されるものではない。
【００２４】
なお、メインシステム側の処理手順制御部に関しては、電子計算機（コンピュータ）を用いてソフトウェアで実現することもでき、このためのプログラムやこのプログラムを格納した記録媒体を発明として抽出することも可能である。プログラムは、コンピュータ読取り可能な記憶媒体に格納されて提供されてもよいし、有線あるいは無線による通信手段を介して配信されてもよい。
【発明の効果】
【００２５】
本発明に依れば、複数の処理要求がほぼ同時に発生した場合に、複数の処理の各々で処理対象とされる処理対象データを所定サイズで分割するとともに、所定の基準に従った転送順序で分割データを順次エンジン部に転送して処理を実行するようにした。
【００２６】
このため、エンジン部においては、順次転送される各処理要求に応じた分割データに対して所要の処理を順次実行することができ、実質的に、複数の処理要求に対して並行処理を行なうことができる。この結果、複数の処理要求に対してほぼ同時期に処理でき、処理要求が待たされることや、通信時の伝送ゆらぎを低減させることや、通信帯域の保証が可能になる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２８】
＜装置構成＞
図１は、本発明に係るデータ処理装置の一実施形態を備えたコンピュータ装置の構成を示したブロック図である。
【００２９】
図示するように、コンピュータ装置１は、メインシステム１００と、ハードウェアで構成された処理回路部分であるエンジン部２００と、周辺デバイス３００とを備えて構成されている。
【００３０】
メインシステム１００は、コンピュータ装置１全体の動作制御やそのほかの演算や制御の各処理機能をなすＣＰＵ（Central Processing Unit ）やＭＰＵ（Micro Processing Unit ）などの中央演算制御処理部１１０と、不揮発性の記憶部の一例であるＲＯＭ（Read Only Memory）１２２および書換可能な記憶部の一例でありメインメモリとして機能するＲＡＭ（Random Access Memory）１２４を有するメモリ部１２０とを備える。
【００３１】
またメインシステム１００は、種々の周辺デバイス３００やイントラネットあるいはインターネットなどの通信網との間のインタフェース（Inter Face）機能をなすインタフェース部１５０と、記録媒体４００からデータを読み出したり書き込んだりするドライブ機能とインタフェース機能とを持つメディアＩＦ部１７０と、各部を互いに接続するアドレスバスおよびデータバスを含む内部バス１８０とを備えている。処理データや制御データは、内部バス１８０を通じてコンピュータ装置１の各ハードウェア間をやり取りされる。
【００３２】
ＲＯＭ１２２は、内部に、中央演算制御処理部１１０のＣＰＵなどが各種処理を行なうための制御プログラムが格納されるプログラム記憶領域や、中央演算制御処理部１１０が各種処理を行なうために必要とするそのほかのデータ記憶領域を有する。さらに、プログラム記憶領域は、ＢＩＯＳ（Basic Input/Output System ）やＯＳ（Operating Systems ；基本ソフト）やＧＵＩ（Graphical User Interface）処理などのプログラムをも格納している。中央演算制御処理部１１０は、ＢＩＯＳやＯＳやＧＵＩ処理を利用しつつ、ＲＯＭ１２２内のプログラムを実行することによって、各種の処理を行なう各部の機能を実現する。
【００３３】
ＲＡＭ１２４は、中央演算制御処理部１１０が各種処理を実行する際のワークメモリとして用いられる作業領域であって、外部から取り込んだデータを格納するデータ記憶領域、あるいはそのほかの処理対象データを格納する領域を含んでいる。
【００３４】
周辺デバイス３００としては、ＣＲＴ（Cathode Ray Tube；陰極線管）やＬＣＤ（Liquid Crystal Display；液晶）などの表示デバイスを有するディスプレイ部３０２、コンピュータ装置１を操作するためのタッチパネル３０４ａや操作キー（たとえば押圧式のボタン）を持つキーボード３０４ｂやマウス３０４ｃなどの操作部３０４、処理結果を紙媒体などに印刷出力するためのプリンタ部３０６、画像を取り込むためのスキャナ部３０８、および記憶媒体の一例である外付けのハードディスク装置３１０を有する。周辺デバイス３００は、それぞれに応じたＩＦ（インタフェース）部１５１，１５２，１５４，１５６，１５８を介して内部バス１８０に接続されるようになっている。
【００３５】
記録媒体４００は、コンピュータ装置１のハードウェア資源に備えられている読取装置に対して、プログラムの記述内容に応じて、磁気、光、電気などのエネルギの変化状態を引き起こして、および対応する信号の形式で、読取装置にプログラムの記述内容を伝達できるものである。
【００３６】
たとえば、コンピュータ装置１に予め組み込まれた状態でユーザに提供される、プログラムが記録されているＲＯＭ１２２やハードディスク装置１７４、あるいは外付けのハードディスク装置３１０（４０４）などで構成されてもよい。あるいは、コンピュータ装置１とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている、ＩＣカードやミニチュアカードなどの種々の方式の半導体メモリカードのようなフラッシュメモリなどの不揮発性の半導体メモリを用いた記録メディア４０２、磁気ディスク（フレキシブルディスク（ＦＤ）４０６を含む）、光ディスク（ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）、ＤＶＤ（Digital Versatile Disc）を含む）４０８、光磁気ディスク（ＭＤ（Mini Disc ）を含む）などのパッケージメディア（可搬型の記憶媒体）により構成されてもよい。
【００３７】
上記構成によって、コンピュータ装置１は、それぞれ専用のハードウェアによりなされる処理機能を、その機能を実現するプログラムコードに基づきソフトウェア的に実現することができるようになっている。
【００３８】
コンピュータ装置１に組み込まれるソフトウェアとしては、たとえば、複写アプリケーション、プリンタアプリケーション、ファクシミリ（ＦＡＸ）アプリケーションあるいは他のアプリケーション用の処理プログラムなど、従来の各種装置におけるものと同様のものが組み込まれる。また、装置が、スキャナ部３０８で読み取った画像を処理したり、Ｗｅｂサイトへのアクセス要求に対してネットワークＩＦ部１５８を介して外部とのデータを送受信したりするためのアクセス制御処理あるいは認証処理のためのプログラムも組み込まれる。
【００３９】
たとえば、本発明に係るデータ処理を実施するためのハードウェア処理回路を制御する機能部分を、電子計算機（コンピュータ）を用いてソフトウェアで実現するために好適なプログラムあるいはこのプログラムを格納したコンピュータ読取可能な記憶媒体を発明として抽出することもできる。ソフトウェアにより実行させる仕組みとすることで、ハードウェアの変更を伴うことなく、処理手順などを容易に変更できる利点を享受できるようになる。
【００４０】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ（組込マイコンなど）、あるいは、ＣＰＵやＭＰＵ、論理回路、記憶装置などの機能を１つのチップ上に搭載して所望のシステムを実現するＳＯＣ（System On a Chip：システムオンチップ）、または、各種プログラムをインストールすることで各種の機能を実行することが可能な汎用のパーソナルコンピュータなどに、記録媒体４００からインストールされる。または、ソフトウェアを構成するプログラムが、ネットワークＩＦ部１５８および有線あるいは無線などの通信網を介して提供されてもよい。
【００４１】
たとえば、Ｗｅｂサーバへのアクセス制御処理や認証処理を行なう機能を実現するソフトウェアのプログラムコードを記録した記憶媒体４００を、コンピュータ装置１に供給し、コンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、ハードウェアにて構成する場合と同様の効果は達成される。
【００４２】
なお、記録媒体４００から読み出されたプログラムコード自体がアクセス制御処理や認証処理の機能を実現することでもよいし、そのプログラムコードの指示に基づきコンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行なうものであってもよい。また、一括のプログラムファイルとして提供されることに限らず、コンピュータで構成されるシステムのハードウェア構成に応じて、個別のプログラムモジュールとして提供されてもよい。
【００４３】
ここで、本実施形態のコンピュータ装置１においては、種々の制御処理機能をなす全ての処理をソフトウェアで行なうのではなく、これら機能部分の一部をハードウェアにて行なうための処理回路として、エンジン部２００が設けられている。ハードウェアにて処理を行なうことで、ソフトウェア処理よりも処理の高速化を図ることができる。
【００４４】
具体的には、本実施形態のエンジン部２００は、クリプトエンジン（Crypto Engine ；暗号エンジン）として機能するように構成されており、暗号化処理や復号化処理といった秘匿処理や認証処理やチェックサム処理を行なうデータ処理部２４０と、データ処理部２４０用の処理対象データをデータ処理部２４０に渡し処理済みのデータをメインシステム１００に返す制御部２６０とを有している。データ処理部２４０と制御部２６０は、それぞれの処理を行なうための図示しない小容量のワークメモリ（レジスタ）を持つ。このクリプトエンジンとして機能するエンジン部２００は、単一のハードウェアデバイスによって構成されるのがよい。
【００４５】
これにより、コンピュータ装置１は、エンジン部２００が、ＣＰＵなどを有する中央演算制御処理部１１０と、ＲＯＭ１２２およびＲＡＭ１２４を有するメモリ部１２０とに接続されて構成されることで、本発明に係るデータ処理装置３が構成される。
【００４６】
データ処理装置３は、内部バス１８０並びにネットワークＩＦ部１５８を介して、イントラネットやインターネットなどの通信網に接続され、他装置との間でデータの送受信を行なう。この際、通信データに対しては、所定のプロトコルに従って、たとえば、ハッシュ関数を利用した認証処理、共通鍵方式や公開鍵方式を利用した秘匿処理、あるいはチェックサム処理などがなされる。
【００４７】
データ処理装置３において、メインシステム１００の中央演算制御処理部１１０は、本実施形態特有の機能部（ソフトウェアで構成される）として、データ解析部１１３と処理手順制御部１１５とを有するアクセラレータドライバ１１７を備えている。
【００４８】
データ解析部１１３は、秘匿処理や認証処理やチェックサム処理などのデータ処理部２４０が処理を担当する複数の処理要求において、各処理要求の処理対象データ中に並行した処理を行なう部分が存在するか否かを判定する。
【００４９】
処理手順制御部１１５は、データ解析部１１３が並行した処理を行なう部分が存在すると判定したことを条件として、データ処理部２４０における複数の処理要求の処理手順を示す処理手順情報と、データ処理部２４０が取り扱う処理対象データの格納場所を示すデータ格納場所情報とを対応付けて所定のメモリの所定の記憶領域（データプール）に格納する。
【００５０】
また、処理手順制御部１１５は、エンジン部２００が処理待ちになったときに、データプールに格納しておいた種々の情報を、エンジン部２００に順次転送し、エンジン部２００を起動する。
【００５１】
ハードウェアで構成されるエンジン部２００は、処理手順制御部１１５からの起動指示を受けたことを条件として、所定のデータプールに記憶されている処理手順情報とデータ格納場所情報に従って、要求された処理を順次行ない、処理済みのデータをメインシステム１００に返す。
【００５２】
たとえば、中央制御部１１０の主要部をなすＣＰＵは、予めＲＯＭ１２２やハードディスク装置１７４内に格納されている制御プログラムに基づいて必要なＧＵＩ画面をディスプレイ部３０２に順次表示させるとともに、制御プログラムおよびタッチパネル３０４ａを介して与えられるユーザ入力に基づいて、図示しないクライアント装置やＷｅｂサーバなどにアクセスして、ユーザの希望するコンテンツ（ここでは出力対象画像）をダウンロードし、プリンタ部３０６にて印刷出力させる。
【００５３】
この際、中央演算制御処理部１１０のＣＰＵは、そのユーザがアカウントを所持している認証サーバに問い合わせることでユーザ認証を行なってから、そのユーザにコンピュータ装置１の使用を許可し、さらにＷｅｂサーバへのアクセスも制御する。これにより、ユーザは、そのアカウントを利用して、コンピュータ装置１の使用やＷｅｂサーバへのアクセスが可能となる。
【００５４】
次に、本発明に係るデータ処理装置３がなすデータ処理について詳しく説明する。
【００５５】
＜データ処理装置に対する処理手順の制御手法を実現する構成＞
図２〜図４は、データ処理装置３を用いてデータ処理を行なうに当たってのデータ処理装置に対する処理手順制御機能を実現するためのシステムアーキテクチャの構成例を説明する図である。
【００５６】
メインシステム１００は、データ処理装置３が行なう秘匿処理や認証処理を担当する複数の処理要求において各処理要求の処理対象データ中に並行した処理を行なう部分が存在する場合、データ処理装置３における前記複数の処理要求の処理手順を示す処理手順情報と、データ処理部が取り扱う処理対象データのメモリ部１２０における格納場所を示すデータ格納場所情報とを対応付けた情報を生成する。
【００５７】
本実施形態特有の機能として、処理要求を階層モデルで取り扱い、エンジン部２００が複数の処理階層を同時並行的に実行可能な場合は、メインシステム１００は、エンジン部２００が効率的に並行処理を実行できるように、複数の処理要求や対応する処理対象データのエンジン部２００への通知手順を決め、この決定に従って、各処理要求された処理対象データをエンジン部２００に転送してエンジン部２００を起動する。
【００５８】
ここで、処理手順情報やデータ格納場所情報あるいは処理対象データをエンジン部２００に転送する仕組みとしては、コンピュータアーキテクチャにおけるメモリ管理の手法と同様に、メモリから所要部分のデータを読み出す際の種々の手法を利用することができる。また、データの読出しに際しては、ＣＰＵがメモリ制御部として機能しバスマスターとなるプログラム転送の形態と、制御部２６０にＤＭＡ（Direct Memory Access）コントローラをメモリ制御部として設けることで、制御部２６０がバスマスターとなりＤＭＡ転送することで、メインシステム１００の中央演算制御処理部１１０を介することなく、メモリ部１２０とエンジン部２００との間でデータ転送を行なう形態の何れであってもよい。ＤＭＡ転送にすれば、ＣＰＵ負荷を軽減でき転送効率が高まる。
【００５９】
また、データ転送における転送モードとしては、１回のアドレス指定で複数のデータを纏めて連続的に転送するバースト転送モードを用いることで、データ転送時に逐一アドレスを指定するサイクルを実行する手間を省き、データ転送速度を向上させるのがよい。この場合、データを、メモリ部１２０のＲＡＭ１２４における、連続したアドレスに格納するようにする。
【００６０】
何れにしても、中央演算制御処理部１１０とエンジン部２００との間においては、エンジン部２００に通知される情報に基づいて、ハッシュ関数を利用した認証処理、共通鍵方式や公開鍵方式を利用した秘匿処理、あるいはチェックサム処理などを、エンジン部２００内のデータ処理部２４０において同時並行的に実行できるように、メモリへのデータの格納手法や読出し手法を取り込めておく。
【００６１】
たとえば、図２に示す第１の構成例は、ＤＭＡコントローラ２３２を制御部２６０内に設けることで、制御部２６０がメモリ部１２０に対してバスマスターとなって、メモリ部１２０からデータを自律的に読み出す形態の構成例を示している。ここで、第１の構成例では、中央演算制御処理部１１０は、処理手順情報とデータ格納場所情報を、制御部２６０内のレジスタ（メモリの一種）２３４に設定する。いわゆる、レジスタ方式を利用したものである。処理手順情報には、一連の処理における通知順序の情報も記述されるようにする。
【００６２】
レジスタ２６８には、図２（Ｂ）に示すように、データ格納領域であるレジスタ（記憶部）として、中央演算制御処理部１１０の処理手順制御部１１５が設定した処理手順情報とデータ格納場所情報とを対応付けて格納する手順レジスタ（Descriptor Registers）２６８ａ、処理手順制御部１１５からの処理指示命令を格納する制御レジスタ（Control Registers ）２６８ｂ、手順レジスタ２６８ａから順に読み出した処理コマンドを格納するコマンドレジスタ（Command Registers ）２６８ｃ、ＲＡＭ１２４の処理データ格納領域１２５から取り込んだ処理対象データ（原データ；Source Data ）や処理済みのデータを格納するデータレジスタ（Data Registers）２６８ｄが設けられている。情報の格納と読出しの形態としては、後述するキュー（Queue ）構造を採る。
【００６３】
制御部２６０は、中央演算制御処理部１１０の処理手順制御部１１５から処理の開始指示を受けると、手順レジスタ２６８ａに設定されている処理手順情報とデータ格納場所情報とを参照して、処理手順に従った順序で、メモリ部１２０内のＲＡＭ１２４における処理データ格納領域１２５から必要な部分の処理対象データを読み出して順に処理を実行する。
【００６４】
図３に示す第２の構成例は、ＤＭＡコントローラ２３２を制御部２６０内に設けることで、制御部２６０がメモリ部１２０に対してバスマスターとなってメモリ部１２０からデータを読み出す形態の他の構成例を示している。
【００６５】
ここで、第２の構成例は、ハードウェア構成はデータの格納と読出しの形態に特徴があり、処理手順情報とデータ格納場所情報とを対応付けたディスクリプタをキュー（Queue ）構造としてメモリ部１２０内のＲＡＭ１２４におけるディスクリプタ領域１２７に格納し読み出す形態を採る。処理要求発生ごとの格納順と読出順とを対応付けておくので、処理手順情報には、一連の処理における処理順序の情報の記述は不要である。
【００６６】
制御部２６０は、処理手順制御部１１５から起動指示を受けると、メモリ部１２０内のディスクリプタ領域１２７にキュー構造で設定されている処理手順情報とデータ格納場所情報とを参照して、メモリ部１２０内のＲＡＭ１２４における処理データ格納領域１２５から必要な部分の処理対象データを読み出して順に処理を実行する。
【００６７】
図４に示す第３例の構成は、中央演算制御処理部１１０が、メモリ部１２０に対してバスマスターとなってメモリ部１２０から処理対象データを読み出して制御部２６０に渡す形態の一構成例を示している。ＣＰＵ負荷が大きくなるが、ＤＭＡコントローラを要しないのでシステムがコンパクトになる。なお、この場合においても、図４（Ａ）に示すように、各情報を中央演算制御処理部１１０内のレジスタ（記憶部）１１９に設定するレジスタ方式や、図４（Ｂ）に示すように、それぞれの位置をメモリ部１２０内のＲＡＭ１２４における処理データ格納領域１２５と対応するディスクリプタ領域１２７に設定するディスクリプタ方式を採り得る。また、データの格納と読出しの形態としては、キュー構造を採る。
【００６８】
何れの場合でも、中央演算制御処理部１１０は、レジスタ１１９もしくはディスクリプタ領域１２７に設定されている処理内容の指示（コマンド）と、処理対象データの格納場所を示す情報とを参照して、メモリ部１２０内のＲＡＭ１２４における処理データ格納領域１２５から必要な部分のデータを読み出して、処理対象データを処理内容の指示（コマンド）とともに制御部２６０に転送する。
【００６９】
制御部２６０は、中央演算制御処理部１１０から起動指示を受けると、順に受け取る処理対象データおよび処理内容の指示（コマンド）に基づき、処理対象データに対して、処理内容の指示（コマンド）に従って順に処理を実行する。
【００７０】
＜ディスクリプタ＞
図５は、手順レジスタ２６８ａもしくはディスクリプタ領域１２７へのコマンドや処理対象データのアドレス情報の格納形態（コマンドディスクリプタ；Command Descriptor）Ｂ１０と、格納される個々のコマンドである処理手順情報およびデータ格納場所情報の一例を示した図である。図５（Ａ）に示すように、手順レジスタ２６８ａやディスクリプタ領域１２７には、処理階層の処理要求ごとに、１ワード目には命令構造（Command Structure ）１、…、Ｎワード目には命令構造Ｎというように、一連の命令構造が格納される。なお、処理内容によっては１つの命令構造だけで処理が実行される場合もある。
【００７１】
ワード（命令構造）の順に拘らず、１回のアドレス指定で一連の処理を行なうためのコマンドを纏めて連続的に読み出すべく、バースト転送モードを採用できるように、メモリ上の連続したアドレスをデータ格納位置とするのがよい。
【００７２】
データ処理のための命令構造を定義するために、１つの命令構造ＣＳ内には、暗号化や複合化あるいは認証の方式や、処理内容の他、暗号化や複合化あるいは認証の開始並びに終了位置などの情報が書き込まれる。
【００７３】
一例として、図５（Ｂ）においては、Ｃプログラミング言語を用いて提示されるものの場合を示しており、ＤＭＡ転送時の制御状態コマンド（control status command）ＣＳ１として、セキュリティ処理などのオペレーションに必要なソースデータの格納アドレスを特定する起点アドレス（Starting source address）ＣＳ２、処理済みデータの格納アドレスを特定する起点アドレス（Starting destination address）ＣＳ３、転送データ量（Number of bytes to transfer）ＣＳ４、および次のコマンドを示す情報（Ptr to next command struct）ＣＳ５が、一連の命令として書き込まれる。
【００７４】
図６〜図９は、ディスクリプタの構造を説明する図である。ここで、図６は、キュー（Queue ）の構造を示している。キューは、待ち行列のことで、キュー構造とは、複数のデータを一時的に格納しておくための、データが一列に並んだイメージのデータ構造である。キューを使うことで、データを一時的に格納するためのメモリ領域を確保することができ、データを取り出すことによってメモリ領域を自動的に開放することができる。データを取り出す際は、インデックスなどのデータを識別するための情報を使わなくても、データの格納した順番を基準にしてデータを取り出すことができる。
【００７５】
キュー構造の典型例は、図６に示すように、データを格納した順番でデータを取り出すようにしたもので、最初に取り出せるのは、最後に入れたデータである。このようなデータ構造は、一般に、先入れ先出し（ＦＩＦＯ；First In First Out）と呼ばれる。このようなメモリ構造を、以下キュー構造メモリともいう。
【００７６】
本実施形態においてキュー構造メモリを採用する場合、処理対象データに対してのデータ処理装置３における一連の処理内容の指示と、処理対象データの格納場所を示す情報とが、纏めてディスクリプタキューに組み込まれる。また、複数の処理階層についてエンジン部２００にて同時並行的に処理可能である場合には、複数の処理階層の処理対象データをそれぞれ所定サイズで分割し、分割した個々の処理対象データとこれに対する処理内容の指示とを所定の順序でエンジン部２００に通知できるような順番で、ディスクリプタ領域１２７に格納する。
【００７７】
処理手順制御部１１５から起動指示を受けた制御部２６０は、そのときに指示された、キュー構造で設定された処理手順情報とデータ格納場所情報を順に１つずつ読み出して、エンジン部２００にての処理を順に行なうことができる。
【００７８】
なお、キュー構造の実現に当たっては、データを格納したアドレスに拘らず、データを先入れ先出しの順で読み出すことができるようになっていればよく、配列を宣言することで、動作としては、ＦＩＦＯによる処理を記述することで実現することができる。たとえば、図６（Ｂ）に示すように、纏まった処理命令ごとにメモリの記憶領域を区分けして格納し、下流側への処理のリンクを順次設定していくようにしてもよい。
【００７９】
なお、図７に示すように、キュー構造に代えて、スタック（stack ）構造を採用することもできる。スタックは、ほし草や藁などの“山”のことで、同じ種類のデータを積み重ねた構造のことを指す用語として使われるものである。データを取り扱う場合、データを格納する領域のことをスタックエリアと呼び、データを格納した順番とは逆の順番で、データを取り出すようにする。つまり、前述のＦＩＦＯとは逆に、最初に格納したデータが一番下になり、その上に次々にデータが積み重ねられるイメージである。データを取り出すときは、最後に入れた一番上のデータから順に取り出す。このようなスタックの構造は、一般に、後入れ先出し方式（ＬＩＦＯ；Last In First Out）と呼ばれる。このようなメモリ構造を、以下スタック構造メモリともいう。
【００８０】
スタック構造メモリとする場合、ある処理階層の複数のコマンドに従って処理を行なう場合、個々のコマンドごとにエンジン部２００にて処理を行なうのではなく、ある処理階層の全コマンドを一気に読み出してエンジン部２００のコマンドレジスタ２６８ｃにスタック構造で格納してからエンジン部２００の処理を行なうようにするとよい。この場合、コマンドだけでなく、それに対応した処理対象データも一気に読み出してエンジン部２００のデータレジスタ２６８ｄにスタック構造で格納するのがよい。こうすることで、内部バス１８０を早く開放できる利点がある。
【００８１】
なお、スタック構造の実現に当たっても、データを格納したアドレスに拘らず、データを後入れ先出しの順で読み出すことができるようになっていればよく、配列を宣言することで、動作としては、ＬＩＦＯによる処理を記述することで実現することができる。
【００８２】
ここで、複数の処理階層において同時並行した処理が可能であるか否かに拘らず、複数の処理要求のそれぞれにおいてキュー構造もしくはスタック構造を採用するのがよい。また、本実施形態特有のメモリ構造として、ＯＳＩやＴＣＰ／ＩＰの処理階層モデルにおいて、同一階層であるか異なる階層であるかを問わず、異なる処理階層の複数の処理要求がほぼ同時にエンジン部２００に発せられ、エンジン部２００にてこれに対応する場合、その対象となる複数の処理要求について、キュー構造もしくはスタック構造を採るようにする。何れの場合も、特に、キュー構造が好ましい。
【００８３】
図８は、各処理階層の個々の処理要求Ｂ００についてキュー構造を採用したディスクリプタＢ１０を構成した例を示している。参照モデルの階層に関わらず、各処理階層の処理要求ごとに処理内容と処理対象データとを対応付けたコマンドディスクリプタを生成するようにする。そして、これを処理階層に従って順次格納することで、コマンドディスクリプタキューＢ２０を作る。
【００８４】
また、図９は、複数の処理要求において、同時並行的にエンジン部２００にて処理を行なう場合に、それら複数の処理要求もキュー構造を採用した場合のメモリ構造（以下ディスクリプタキューともいう）Ｂ２０とする場合の一例を示している。この場合には、同時並行させる複数の処理階層の各処理対象データを所定の分割サイズで分割し、同時並行させる分をその分割単位ごとに処理順序に合わせて纏めるようにする。データ量を均等配分することにしているので、１つの分割サイズ内に割り当てられるワード数は、それぞれ異なっていてよい。
【００８５】
たとえば、複数の処理階層のコマンドディスクリプタＢ１１，Ｂ１２，…Ｂｍに基づいてエンジン部２００にて並列処理させる場合、それぞれを分割してコマンドディスクリプタＢ１１−１，Ｂ１１−２，…，Ｂ１２−１，Ｂ１２−２，…，Ｂｍ−１，Ｂｍ−２，…とし、その分割単位ごとに処理順序に合わせて、Ｂ１１−１，Ｂ１２−１，…，Ｂｍ−１，Ｂ１１−２，Ｂ１２−２，…，Ｂｍ−２，…と、順次ディスクリプタ領域１２７に格納することで、コマンドディスクリプタキューＢ２０を作るとよい。
【００８６】
なお、本明細書における処理階層とは、ＯＳＩ参照モデルやＴＣＰ／ＩＰの通信プロトコルの階層とは異なる概念である。たとえば、図１０（Ａ）に示すように、セキュリティプロトコルとしてＩＰＳｅｃを採用しつつ、通信プロトコルとしてＴＣＰ／ＩＰ，ＩＰｖ４を採用する場合、ＯＳＩ参照モデルやＴＣＰ／ＩＰのプロトコルにおける同一階層に位置していても、ＩＰＳｅｃ処理要求Ｓ１２と、ＩＰヘッダのチェックサム処理要求Ｓ１４とは、異なる処理階層に位置する。
【００８７】
順次送受信するパケットに対して各処理階層の処理を順次実行する場合において、処理内容にエンジン部２００が担当するものが含まれている場合、図１０（Ｂ）に示すように、暗号化処理Ｓ１２ａ、復号化処理Ｓ１２ｂ、認証処理Ｓ１２ｃ、およびチェックサム処理Ｓ１０，Ｓ１４の各要求がほぼ同時にエンジン部２００に発せられるケースが起きる。
【００８８】
なお、ＥＳＰフォーマットの場合には、ＩＰＳｅｃ処理要求には、セキュリティ処理として、秘匿処理および認証処理の少なくとも一方を含み得るもので、その両者もしくは何れか一方のみの処理としてよい。一方、ＡＨフォーマットの場合には、ＩＰＳｅｃ処理要求には、セキュリティ処理として、少なくとも認証処理を含み、必要に応じて秘匿処理を行なうようにしてもよく、秘匿処理はオプションである。
【００８９】
＜データ処理装置の構成例＞
図１１は、図１に示したコンピュータ装置１に備えられているデータ処理装置３の詳細な構成例を示したブロック図である。なお、以下の説明において特段の断りのない限り、メインシステム１００からエンジン部２００へのデータ転送の形態として、中央演算制御処理部１１０が、メモリ部１２０に対してバスマスターとなって、メモリ部１２０から処理対象データを読み出して制御部２６０に渡す形態（図４（Ａ）に示した第３の構成例）を用いることとする。
【００９０】
図示するように、先ず、データ処理装置３の中央演算制御処理部１１０は、ＣＰＵからの処理要求を受け付け、必要な場合にデータ分割を行なった上でデータを受け渡す一次ドライバ１３０と、一次ドライバ１３０から渡されたデータのうちどのデータをエンジン部２００で処理するかを選択しエンジン部２００に処理要求を出す二次ドライバ１４０とを備えている。
【００９１】
また、本実施形態では、メモリ部１２０は、内部バス１８０に接続されており、同じく内部バス１８０に接続された中央演算制御処理部１１０からの指示に基づいて、ハッシュ処理、共通鍵暗号処理や公開鍵暗号処理を利用した秘匿処理、あるいはチェックサム処理をエンジン部２００にて実行するべく、処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データを、メモリ部１２０のＲＡＭ１２４における所定の領域に格納する。
【００９２】
また、エンジン部２００は、データ処理部２４０に、共通鍵暗号処理や公開鍵暗号処理を利用した暗号化処理や復号化処理を行なう秘匿処理部（Crypto Block）２４２、一方向性ハッシュ関数を利用した認証処理（完全性保証処理）を行なう認証処理部（Digest Block）２４４、チェックサム処理を行なうチェックサム処理部（CheckSum Block）２４６、並びに、セレクタ２５０，２５２を備えている。
【００９３】
秘匿処理部２４２は、暗号化処理部２４２ａと、復号化処理部２４２ｂとを有している。暗号化処理部２４２ａ、復号化処理部２４２ｂ、認証処理部２４４、およびチェックサム処理部２４６は、独立した個別のハードウェア回路にて構成されている。秘匿処理部２４２と認証処理部２４４とによりセキュリティ処理部２４８が構成される。また、認証処理部２４４とチェックサム処理部２４６とにより同一性確認処理部２４９が構成される。
【００９４】
認証処理部２４４は、ハッシュ関数（Hash Function ；かき混ぜ関数）を用いて、送信者がある任意の長さの通常のメッセージ（文字列が並んだ平文）を送信する際に、このメッセージを一定の固定長の文字列（ビット列）に圧縮した固定長のビット列からなるダイジェスト（要約；ハッシュ符号ともいう）を作成する。
【００９５】
たとえば、ＩＰＳｅｃのＥＳＰフォーマットもしくはＡＨフォーマットにおいては、ＩＣＶ（Integrity Check Value ）を計算しておく。ＩＣＶは秘密対称鍵の一例であるＨＭＡＣ−ＭＤ５−９６やＨＭＡＣ−ＳＨＡ−１−９６などの鍵付きハッシュ関数を使用して計算した、メッセージの完全性検査用認証値であり、得られた鍵付きハッシュ値から元のメッセージを知ることはできず、また秘密対称鍵を知らなければメッセージから鍵付きハッシュ値を計算することもできないようになっている。
【００９６】
ここで、ＥＳＰフォーマットでは、認証（完全性保証）対象範囲は、ＥＳＰヘッダからＥＳＰトレーラまでの暗号ペイロードを含む部分になる。これに対して、ＡＨフォーマットは、パケットのほぼ全体を認証（完全性保証）対象範囲とするＩＣＶ（完全性保証用認証値）を付加することで、転送用外側ＩＰヘッダまで含めたパケットほぼ全体の完全性を保証するようになっている。
【００９７】
また、ＳＳＬ／ＴＬＳにおいては、認証データとして、メッセージ認証コードＭＡＣ（Message Authentication Code ）を利用する。このＭＡＣ値は、ＩＰＳｅｃフォーマットの認証コードＩＣＶと、仕様や具体的な計算方法などは異なるが、基本的には同じ機能のもので、両方とも認証データになり、その差は、実施形態の適用に際して、影響を及ぼさない。
【００９８】
チェックサム処理部２４６は、対象の同一性を検証する。たとえば、ＴＣＰ／ＩＰでの通信時には、ヘッダ部とデータ部を処理対象範囲としてチェックサムを計算することで、データの信頼性を保証する。また、ＩＰｖ４での通信時には、ＩＰヘッダフォーマットに含まれるヘッダチェックサムを計算する。
【００９９】
制御部２６０は、バスＩＦ部２６２、およびエンジン部２００全体の動作を制御する指示制御部２６６を備えている。なお、エンジン部２００の制御部２６０がバスマスターとなりＤＭＡ転送することで、メインシステム１００の中央演算制御処理部１１０を介することなく、メモリ部１２０とエンジン部２００との間でデータ転送を行なう形態（図４に示した第１や第２の構成例）を採用する場合には、図中点線で示すように、ＤＭＡコントローラ部２６４がバスＩＦ部２６２と指示制御部２６６との間に設けられる。
【０１００】
指示制御部２６６は、処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データを解析し、中央演算制御処理部１１０からの要求を実行するために、秘匿処理部２４２、認証処理部２４４、およびチェックサム処理部２４６の何れかについての選択指示ＣＮ２，ＣＮ３を対応するセレクタ２５０，２５２に対して与える。
【０１０１】
なお、ＤＭＡコントローラ部２６４を設ける場合には、指示制御部２６６は、バスＩＦ部２６２を介して内部バス１８０に接続されたＤＭＡコントローラ部２６４に対してデータの読出指示ＣＮ１を与える。この場合、ＤＭＡコントローラ部２６４は、メモリ部１２０のＲＡＭ１２４に格納された処理対象データに対する処理内容の指示（コマンド）と、処理対象データの格納先を示す情報と、処理対象データの転送とを、指示制御部２６６に対して行なう。
【０１０２】
セレクタ２５０は、指示制御部２６６からの選択指示ＣＮ２に基づいて、秘匿処理部（CryptoD Block ）２４２とハッシュ処理部（Digest Block）２４４とチェックサム処理部（Checksum Block）２４６の何れかを選択して指示制御部２６６の出力を入力する。
【０１０３】
セレクタ２５２には秘匿処理部２４２と認証処理部２４４とチェックサム処理部２４６の各出力が入力されている。セレクタ２５２は、指示制御部２６６からの選択指示ＣＮ３に基づいて、それぞれの機能部（モジュール）２４２，２４４，２４６での演算結果の何れかを選択して、その選択出力を指示制御部２６６に入力する。
【０１０４】
図１２は、アクセラレータドライバ１１７の一次ドライバ１３０および二次ドライバ１４０と、階層モデルで表された処理手順との関係を示した模式図である。中央演算制御処理部１１０（たとえばＣＰＵ）は、一連の処理を階層モデルで表された１つのプロセスで行なう。プロセスの中は、幾つかの階層に分けて処理階層ごとに独立して処理が行なわれる。
【０１０５】
たとえば、図示するように、ＯＳＩモデルでのＰ１１〜Ｐ１７からなる一連のプロセスＰ１０、ＴＣＰ／ＩＰモデルでのＰ２１〜Ｐ２４からなる一連のプロセスＰ２０を事例にする。
【０１０６】
中央演算制御処理部１１０のＣＰＵは、複数のプロセスを並列に処理する場合があるため、複数のプロセスの複数の階層から処理要求がエンジン部２００に送られることが起こる場合がある。
【０１０７】
一連のプロセス内のある階層からエンジン部２００への暗号化や複合化あるいは認証などのセキュリティ処理やチェックサム処理などの種々の処理指示と、各処理に必要な処理対象データのエンジン部２００への転送は、アクセラレータドライバ１１７を介して行なわれる。
【０１０８】
アクセラレータとして機能するエンジン部２００は、処理した計算結果の他に、計算後の内部状態を出力でき、他の処理を行なう際に以前の計算と連続して行なうように指定があった場合は前回処理したデータと連結して処理を行なう。
【０１０９】
ここで、アクセラレータドライバ１１７は、図１１の説明で述べたように、ＣＰＵからの処理要求を受け付け、必要ならばデータ分割を行なった上で二次ドライバ１４０にデータを受け渡す一次ドライバ１３０と、一次ドライバ１３０から渡されたデータのうちどのデータをエンジン部２００で処理するか選択しエンジン部２００に処理要求を出す二次ドライバ１４０に分かれて構築されている。ここで、「必要ならば」とは、少なくとも、複数の処理階層の処理をエンジン部２００にて同時並行的に行なわせる場合を含むものとする。
【０１１０】
＜一次ドライバの構成と作用＞
図１３は、一次ドライバ１３０の詳細構成例を説明するブロック図である。図示するように、一次ドライバ１３０は、アプリケーションＡＰ１０から渡されたデータを解析するデータ解析部１１３に対応したデータ解析部１３２と、データ解析部１３２の解析結果に基づいてデータ分割が必要か不要かを判断するデータ分割検討部１３４と、データ分割検討部１３４に対してデータ分割の際の条件を設定する分割条件設定部１３６と、データ分割検討部１３４の判断結果が分割が必要であると示していることを条件として処理データを分割する分割処理部１３８とを備えている。
【０１１１】
一次ドライバ１３０のデータ分割検討部１３４、分割条件設定部１３６、および分割処理部１３８と、二次ドライバ１４０とにより、処理手順制御部１１５が構成される。
【０１１２】
分割条件設定部１３６には、アプリケーションＡＰ１０から閾値情報が入力されるようになっている。分割条件設定部１３６は、アプリケーションＡＰ１０から閾値Ｔｈ１を取得し、それをデータ分割検討部１３４に設定する。この閾値Ｔｈ１は、システムのアプリケーション用途によって、中央演算制御処理部１１０のＣＰＵが決定する。
【０１１３】
図１４は、一次ドライバ１３０における処理概要を示したフローチャートである。一次ドライバ１３０は、先ず、中央演算制御処理部１１０のＣＰＵからアプリケーションＡＰ１０として、処理要求と処理対象データとを受け取る（Ｓ１００）。これらを受け取った一次ドライバ１３０は、データ解析部１３２で処理データのサイズや使用プロトコルなどを調べ、それらの情報とアプリケーションから設定された閾値Ｔｈ１でデータ分割が必要か不要かを判断する（Ｓ１０２〜Ｓ１１０）。
【０１１４】
たとえば、アプリケーションＡＰ１０から処理要求を受け取ったからデータを渡された一次ドライバ１３０は、データ解析部１３２で処理データのサイズや使用プロトコルなどを調べ、それらの情報とアプリケーションから設定された閾値Ｔｈ１でデータ分割が必要か不要かを判断する（Ｓ１０２）。
【０１１５】
処理サイズが閾値Ｔｈ１より大きい場合は（Ｓ１０２−ＹＥＳ）、データ解析部１３２は、分割が必要であると判断し、その判断結果をデータ分割検討部１３４に通知する。この場合、データ分割検討部１３４は、暗号化や復号化あるいは認証やチェックサムなどの処理に際して使用するアルゴリズムを通信プロトコルやセキュリティプロトコルに基づいて特定する（Ｓ１０４）。そして、使用アルゴリズムでの最小処理単位の倍数でかつ閾値Ｔｈ１を超えない最大値を計算することで分割サイズを決定し、決定した分割サイズを分割処理部１３８に通知する（Ｓ１０６）。これを受けて、分割処理部１３８は、最大値でもってデータを分割し（Ｓ１０８）、データを分割した上で二次ドライバ１４０にデータ（処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データ）を引き渡す。
【０１１６】
一方、処理サイズが閾値より小さい場合は、データ解析部１３２は、分割が不要であると判断し、その判断結果をデータ分割検討部１３４に通知する。この場合、データ分割検討部１３４は、アプリケーションＡＰ１０から渡されたデータ（処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データ）を、そのまま二次ドライバ１４０に送る。
【０１１７】
こうすることで、エンジン部２００に渡すデータサイズを閾値Ｔｈ１以下で概ね均一化させることができる。
【０１１８】
＜二次ドライバの構成と作用＞
図１５は、二次ドライバ１４０の詳細構成例を説明するブロック図である。図示するように、二次ドライバ１４０は、一次ドライバ１３０から渡されたデータを記憶する記憶部としてのデータプール１４２と、データプール１４２に蓄積したデータのうち、どのデータをエンジン部２００に送るかを判断して選択するデータセレクタ１４４と、データセレクタ１４４に対してどのデータをエンジン部２００に送るかを判断し選択する際の条件を設定する順序基準設定部１４６とを備えている。
【０１１９】
順序基準設定部１４６には、アプリケーションＡＰ１０から転送順序を決定する際の基準を示す制御情報ＣＮ１０が入力されるようになっている。順序基準設定部１４６は、アプリケーションＡＰ１０から制御情報ＣＮ１０を取得し、それをデータセレクタ１４４に設定する。この制御情報ＣＮ１０は、システムのアプリケーション用途によって、中央演算制御処理部１１０のＣＰＵが決定する。これにより、データセレクタ１４４における選択方法は、アプリケーションＡＰ１０によって制御することが可能である。
【０１２０】
図１６は、二次ドライバ１４０によるデータ転送と、エンジン部２００における処理の概要を示したフローチャートである。二次ドライバ１４０は、先ず、一次ドライバ１３０から渡されたデータをデータプール１４２に蓄積する（Ｓ２００）。これはアプリケーションＡＰ１０および一次ドライバ１３０とエンジン部２００を互いに非干渉にするためである。
【０１２１】
データセレクタ１４４は、データプール１４２に処理待ちデータが存在するか否か、つまり、エンジン部２００が処理待ちになったかどうかを監視している（Ｓ２０２−ＮＯ）。よって、データセレクタ１４４は、一次ドライバ１３０から渡されたデータがデータプール１４２に蓄積されることで、エンジン部２００が処理待ちになったと判定できる。
【０１２２】
データセレクタ１４４は、エンジン部２００が処理待ちになった段階で（Ｓ２０２−ＹＥＳ）、データプール１４２に蓄積したデータを、アプリケーションＡＰ１０による選択手法を定義する指示制御ＣＮ１０の元で、エンジン部２００に転送する。
【０１２３】
ここで、データセレクタ１４４は、一次ドライバ１３０の分割処理部１３８によって分割されたデータがデータプール１４２に蓄積されているときには、その分割されたデータのエンジン部２００への転送順序をアプリケーションＡＰ１０の制御の元で決定し、この決定に従って順次エンジン部２００に分割データを転送することで、処理のスケジューリングを行なう（Ｓ２０４）。
【０１２４】
二次ドライバ１４０を介してデータ（処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データ）を受け取ったエンジン部２００においては、先ず指示制御部２６６は、処理対象データに対する処理内容の指示と、処理対象データを指示する情報と、処理対象データとを解析し、処理対象データが、データ処理部２４０の何れの機能部の処理担当のものであるかを特定する（Ｓ２０６）。この後、指示制御部２６６は、特定結果に基づき、中央演算制御処理部１１０からの要求を実行するために、秘匿処理部２４２、認証処理部２４４、およびチェックサム処理部２４６の何れかについての選択指示ＣＮ２，ＣＮ３を対応するセレクタ２５０，２５２に対して与える。
【０１２５】
セレクタ２５０は、指示制御部２６６からの選択指示ＣＮ２に基づいて、秘匿処理部２４２とハッシュ処理部２４４とチェックサム処理部２４６の何れかを選択して指示制御部２６６の出力を入力し、またセレクタ２５２は、指示制御部２６６からの選択指示ＣＮ３に基づいて、それぞれの機能部（モジュール）２４２，２４４，２４６での演算結果の何れかを選択して、その選択出力を指示制御部２６６に入力することで、処理を実行するハードウェアを設定する（Ｓ２０８）。
【０１２６】
データを受け取ったデータ処理部２４０内のハードウェアで構成されている各機能部２４２，２４４，２４６は、それぞれが担当する処理を実行し、セレクタ２５２を介して処理済みデータを指示制御部２６６に渡す（Ｓ２１０）。
【０１２７】
以下、同様にして、データプール１４２に蓄積されたデータについての処理が全て完了するまで、上記ステップＳ２０２〜Ｓ２１０の処理を繰り返す。
【０１２８】
ここで、データセレクタ１４４がアプリケーションＡＰ１０の制御の元で、一次ドライバ１３０の分割処理部１３８によって分割されデータプール１４２に蓄積されているデータをエンジン部２００に転送する順序を決定する基準としては、たとえば、優先度順、帯域確保順、あるいは到着順、などを採り得る。
【０１２９】
アプリケーションＡＰ１０が使用する通信プロトコルやセキュリティプロトコルに適合した基準で選択することで、並列通信処理を行なうべくエンジン部２００に複数の処理要求が発生した場合でも、適切な順序で分割データをエンジン部２００に転送できるから、１つの処理を行なっている間、その他の処理要求が待たされることがない。たとえ、現在処理しているデータサイズが大きい場合であっても、通信プロトコルやセキュリティプロトコルに適合したサイズでデータ分割することで、その待ち時間をバランスよく短くでき、データ送信にゆらぎが発生することを防止できる。
【０１３０】
たとえば、データセレクタ１４４による優先度順の選択手法は、データプール１４２に蓄積されたデータに優先度を付け、優先度の高い順に処理を行なう手法である。従来のデータ分割を行なわない方法の場合、優先度は低いが処理サイズの大きいデータを処理しているときに、優先度が高い処理要求をアクセラレータドライバ１１７が受けても処理を開始することができない。
【０１３１】
これに対し、本実施形態を適用することで、処理サイズの大きいデータは分割処理部１３８により所定サイズで分割されているので、優先度が高い処理要求の待ち時間は短くなる。
【０１３２】
また、データセレクタ１４４による帯域確保順の選択手法においては、先ず、アクセラレータドライバ１１７に対する処理要求ごとに減算カウンタを用意する。二次ドライバ１４０がアクセラレータとしてのエンジン部２００にデータを渡したとき、該当する処理要求のカウンタは初期値に戻し、それ以外のカウンタは全て“−１”する。データセレクタ１４４は、処理待ちになっているデータのうち、カウンタの値が一番小さい処理要求のデータをエンジン部２００に送る。
【０１３３】
こうすることで、処理要求ごとのデータ処理間隔の最大値を設定することになり、処理要求別に通信帯域を確保することができる。
【０１３４】
この帯域確保順の選択手法は、画像や音声データなど、通信間隔が大きく空くと明確に途切れていることが分かってしまうデータを複数送信する場合に適している。
【０１３５】
また、データセレクタ１４４による到着順の選択手法は、分割されたデータを到着順に処理する手法である。ただし、複数の処理要求からのデータがある場合は、処理要求順に順次処理を行なう。
【０１３６】
この到着順の選択手法は、前述の優先度順や帯域確保順の選択手法のような高度の処理ではないが、優先度やカウンタの値から処理すべきデータを探す必要がなく、処理を高速に行なえる利点がある。よって、この到着順の選択手法は、優先度や帯域確保がそれほど重要ではない環境で通信を高速にしたい場合に適している。
【０１３７】
図１７は、到着順で転送順序を決定する場合の処理概要を示した図であり、従来技術で示した図１９に対応するものである。この図１７では、二次ドライバ１４０でのデータ選択方法は、図１９と同様到着順に処理を行なっているが、データ分割を行なうことで、それぞれのデータが分割単位でデータ処理部２４０の各機能部２４２，２４４，２４６にて順次処理されるため、実質的に（マクロで見れば）全ての処理要求を並列に処理することが可能になっている。
【０１３８】
以上説明したように、本実施形態の手法に依れば、アクセラレータとしてのエンジン部２００で処理されるデータサイズを、たとえば閾値Ｔｈ１でもって概ね均一化して分割し、分割データを所定の基準に基づいて順次エンジン部２００に転送して処理を実行するようにした。このため、単一のハードウェアデバイスしか持たないアクセラレータとしてのエンジン部２００であっても、分割されたデータに対応するデータ処理部２４０の各機能部２４２，２４４，２４６にて、概ね均一化された処理時間単位で順次実行することができる。結果として、データ処理部２４０の各機能部２４２，２４４，２４６は実質的に並列処理が可能になる。このように、データ転送の制御方法を工夫することで、たとえばＩＰプロトコルを使用してリアルタイム通信を行なうケースでも、データ送信にゆらぎが発生することがなく、本実施形態が非常に有効である。
【０１３９】
また、一次ドライバ１３０のデータ分割検討部１３４における閾値Ｔｈ１の設定と二次ドライバ１４０のデータセレクタ１４４における転送順序の選択手法をアプリケーションのプロトコル使用環境に合わせて変えることで、デバイスの特性を変化させることができ、最適な処理を行なうことが可能になる。
【０１４０】
たとえば、プロセスごとに優先度を決めることで優先度順に処理を行なう方法であれば、必要なプロセスを優先的に処理することが可能になる。また、閾値Ｔｈ１を大きくして分割回数を減らし、処理データ選択方法を単純な到着順にすることで、アクセラレータドライバ１１７での処理時間が減るので、通信速度を重視するのであればそのような制御方法を使用するのがよい。
【０１４１】
このように、データ分割検討部１３４に対する分割サイズに対応した閾値Ｔｈ１やデータセレクタ１４４に対する転送順序に対応した制御情報ＣＮ１をアプリケーションＡＰ１０に応じて変化させることで、エンジン部２００の処理特性（デバイス特性）を変化させることができ、これにより、単一のハードウェアデバイスしか持たないアクセラレータでも、システムの用途に応じた処理特性の制御が可能となる。
【０１４２】
＜適用プロトコル＞
以上のように、複数の処理要求がほぼ同時に発生した場合に、データを所定サイズで分割するとともに、たとえば優先度順、帯域確保順、あるいは到着順などアプリケーションに応じた基準に基づいてエンジン部２００に転送する順序を決定することで、効率的な並列処理をエンジン部２００にて行なうことができるようにする仕組みについて、基本的な処理手法を説明したが、上記で示した処理は、データの機密性や完全性を保証するセキュリティ通信システムに用いられる様々なプロトコルに適用することができる。
【０１４３】
たとえば、リアルタイムデータの送信を行うプロトコルＲＴＰ（Real time protocol）にセキュリティ機能を付加するSRTP(Secure RTP)や、クライアントとサーバとの間で相互認証をできるようにし、認証され暗号化された接続を確立するようにすることでトランスポートレイヤのセキュリティを実現するＳＳＬ（Secure Sockets Layer）、このＳＳＬプロトコルをベースに改良されＩＥＴＦ（Internet Engineering Task Force ）によって標準化されたＴＬＳ（Transport Layer Security）に適用することができる。
【０１４４】
あるいは、暗号化アルゴリズムにＤＥＳ／３ＤＥＳ／ＡＥＳなどのブロック暗号アルゴリズムを使ったＩＰＳｅｃ（Internet Protocol Security）における暗号ペイロードＥＳＰ（Encapsulating Security Payload）や、パケットのほぼ全体を対象としてＩＣＶ（完全性保証用認証値）を付加することで、転送用外側ＩＰヘッダまで含めたパケットほぼ全体の完全性を保証するＡＨフォーマットにも適用することができる。
【０１４５】
また、有線通信におけるプロトコルに限らず、無線通信におけるプロトコルにも適用可能であり、たとえば、ＩＥＥＥ（Institute of Electrical and Electronics Engineers, Inc. ；米国電気電子学会）によって標準化された、ワイヤレス機器や無線ＬＡＮなどによる情報伝達のセキュリティを守るためのプロトコルであるＷＥＰ（Wired Equivalent Privacy）や、Ｗｉ−Ｆｉ  Ａｌｌｉａｎｃｅが規格を策定したＷＥＰに代わる暗号化規格であるＷＰＡ（Wi-Fi Protected Access）などにも適用可能である。
【０１４６】
なお、現段階では、ＩＥＥＥでの規格化作業が終了していないが、ＩＥＥＥ８０２．１１ｉで制定されるセキュリティプロトコルにも、上記実施形態で説明した処理を適用することが可能である。
【０１４７】
なお、複数の処理階層において、暗号化や復号化あるいは認証やチェックサムなどの処理要求が概ね同時にあるか否かは、アプリケーションが適用する通信プロトコルと、それに適用されるセキュリティプロトコルとの関係で決まるものである。
【０１４８】
何れにおいても、上記で説明したように、複数の処理階層において、暗号化や復号化あるいは認証やチェックサムなどの処理要求が概ね同時にあるか場合には、その要求に応えてエンジン部２００が並列処理可能なように、データを所定サイズで分割し、アプリケーションに応じた転送順序で分割データを順次転送することで、効率的な並列処理をエンジン部２００にて実行する。
【０１４９】
＜具体的な事例＞
図１８は、上記実施形態で説明したデータ処理を適用するプロトコルの具体例を説明する図である。この例は、セキュリティ通信として、アプリケーション層Ｐ２１（セッション層Ｐ１３）でセキュリティ処理を行なうＳＳＬ／ＴＬＳプロトコル（Ｐ３１）とインターネット層Ｐ２３としてのＩＰ層Ｐ３３でセキュリティ処理を行なうＩＰＳｅｃとを併用し、トランスポート層Ｐ２２ではＴＣＰ／ＵＤＰ（Ｐ３２）を使用する場合を示している。
【０１５０】
ここで、アプリケーション層Ｐ２１でのＳＳＬ／ＴＬＳフォーマットに基づくセキュリティ処理時にメインシステム１００とエンジン部２００との間でデータ転送を要する。また、トランスポート層Ｐ２２でのＴＣＰやＵＤＰのチェックサム処理時にメインシステム１００とエンジン部２００との間でデータ転送を要する。さらに、インターネット層Ｐ２３でのＩＰＳｅｃフォーマットに基づくセキュリティ処理時にメインシステム１００とエンジン部２００との間でデータ転送を要する。これらの処理は、アプリケーションからほぼ同時に処理要求が発せられることがある。
【０１５１】
この場合、上記で説明したように、データを所定サイズで分割し、それぞれのプロトコルに応じた基準に基づいてエンジン部２００に転送する順序を決定し、その決定した順序で分割データを順次エンジン部２００に転送する。こうすることで、ネットワークプロトコルスタックＰ３０での処理のうち、ＩＰ層Ｐ３３内部でのＩＰｓｅｃの暗号化と復号化と認証コードの作成と認証コードの確認（Ａ３）、ＴＣＰ／ＵＤＰ（Ｐ３２）のチェックサム生成とチェックサム確認（Ａ２）をエンジン部２００において並列処理することによって、これら複数の処理内容を高速に処理できる。
【０１５２】
また、アプリケーションとしてＳＳＬ／ＴＬＳ（Ｐ３１）を用いる場合における暗号化と復号化と認証コードの作成と認証コードの確認（Ａ１）をもエンジン部２００において並列処理することによって、これら複数の処理内容を高速に処理できる。
【０１５３】
このように、上記実施形態で説明した処理をセキュリティ通信システムに適用することで、複数の対象に対するデータ送受信を機密性と完全性を確保しつつ行なうことが可能になる。
【０１５４】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記実施形態に多様な変更または改良を加えることができ、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれる。
【０１５５】
また、上記の実施形態は、クレーム（請求項）にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。前述した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜の組合せにより種々の発明を抽出できる。実施形態に示される全構成要件から幾つかの構成要件が削除されても、効果が得られる限りにおいて、この幾つかの構成要件が削除された構成が発明として抽出され得る。
【０１５６】
たとえば、上記実施形態では、有線方式あるいは無線方式でのネットワークプロトコルにおけるデータ処理について説明したが、メインシステムとエンジン部との間で協調処理を行なう場合に、処理が階層的に定義されていて、その内の一部の処理をハードウェアで構成されたエンジン部で行なうシステム構成であればよく、エンジン部が行なう処理内容は、通信プロトコルに関わる処理に限定されるものではない。
【０１５７】
また、上記実施形態では、メインシステムの中央演算制御処理部１１０側のデータ解析部１１３や処理手順制御部１１５をソフトウェア処理で構成し、ソフトウェア（中央演算制御処理部１１０）とハードウェア（エンジン部２００）との協調動作を行なう場合における処理について説明したが、中央演算制御処理部１１０側のデータ解析部１１３や処理手順制御部１１５をハードウェア処理回路で構成したものであってもよい。
【０１５８】
また、上記図１１に示したデータ処理装置３の具体的な構成例では、中央演算制御処理部１１０が、メモリ部１２０に対してバスマスターとなって、メモリ部１２０から処理対象データを読み出して制御部２６０に渡す形態を用いていたが、データの転送形態は、必ずしもこのようなものに限定されず、たとえば図２〜図４に示した何れをも採用し得る。
【０１５９】
たとえば、エンジン部２００にＤＭＡコントローラ部２６４を設けて、エンジン部２００側が支配的となってデータ転送を行なうようにしてもよい。この場合、たとえば、図１２に示した分割データの転送順に従って、分割データとその分割データに対する処理内容とをディスクリプタキュー構造でディスクリプタ領域１２７に格納するのがよい。
【０１６０】
また、上記実施形態では、パーソナルコンピュータなどの情報処理装置に本発明に係るデータ処理装置を適用した事例で説明したが、これに限らず、様々な形態の装置に上記実施形態で説明した技術を適用することができる。たとえば、無線ＬＡＮ（Local Area Network）にて使用される基地局としてのアクセスポイントや、端末側の装置に組み込まれるＬＡＮカードなどにも適用することができる。これらの場合の装置構成としては、図１に示したデータ処理装置３の部分を少なくとも含んでいればよいのはいうまでもない。また、エンジン部２００の部分をメインシステム１００に装着される着脱可能なデータ処理装置のモジュール（たとえば基板モジュール）として提供する形態であってもよい。
【図面の簡単な説明】
【０１６１】
【図１】本発明に係るデータ処理装置の一実施形態を備えたコンピュータ装置の構成を示したブロック図である。
【図２】エンジン部に対する処理手順制御機能を実現するためのシステムアーキテクチャの第１の構成例を示した図である。
【図３】エンジン部に対する処理手順制御機能を実現するためのシステムアーキテクチャの第２の構成例を示した図である。
【図４】エンジン部に対する処理手順制御機能を実現するためのシステムアーキテクチャの第３の構成例を示した図である。
【図５】コマンドディスクリプタと、処理手順情報およびデータ格納場所情報の一例を示した図である。
【図６】ディスクリプタのキュー構造を説明する図である。
【図７】ディスクリプタのスタック構造を説明する図である。
【図８】処理階層モデルにおける、ディスクリプタキューの一例を示した図である。
【図９】複数の処理要求に対応して、同時並行的にエンジン部にて処理を行なう場合に対応したコマンドディスクリプタキューの一例を示した図である。
【図１０】通信プロトコルにおける階層モデルと、処理階層との関係を説明する図である。
【図１１】図１に示したコンピュータ装置に備えられているデータ処理装置の詳細な構成例を示したブロック図である。
【図１２】一次ドライバおよび二次ドライバと、階層モデルで表された処理手順との関係を示した模式図である。
【図１３】一次ドライバの詳細構成例を説明するブロック図である。
【図１４】一次ドライバにおける処理概要を示したフローチャートである。
【図１５】二次ドライバの詳細構成例を説明するブロック図である。
【図１６】二次ドライバによるデータ転送と、エンジン部における処理の概要を示したフローチャートである。
【図１７】到着順で転送順序を決定する場合の処理概要を示した図である。
【図１８】上記実施形態で説明したデータ処理を適用するプロトコルの具体例を説明する図である。
【図１９】複数の処理要求が同時に発せられた場合における従来技術の問題点を説明する図である。
【符号の説明】
【０１６２】
１…コンピュータ装置、３…データ処理装置、１００…メインシステム、１１０…中央演算制御処理部、１１３…データ解析部、１１５…処理手順制御部、１１７…アクセラレータドライバ、１２０…メモリ部、１２２…ＲＯＭ、１２４…ＲＡＭ（主記憶部）、１２５…処理データ格納領域、１２６…コマンド格納領域、１２７…ディスクリプタ領域、１３０…一次ドライバ、１３２…データ解析部、１３４…データ分割検討部、１３６…分割条件設定部、１３８…分割処理部、１４０…二次ドライバ、１４２…データプール、１４４…データセレクタ、１４６…順序基準設定部、１５０…インタフェース部、１８０…内部バス、２００…エンジン部、２４０…処理部、２４２…秘匿処理部、２４２ａ…暗号化処理部、２４２ｂ…復号化処理部、２４４…認証処理部、２４６…チェックサム処理部、２４８…セキュリティ処理部、２４９…同一性確認処理部、２５０，２５２…セレクタ、２６０…制御部、２６２…バスＩＦ部、２６４…ＤＭＡコントローラ部、２６６…指示制御部
【図１】
2005167870.tif 000003
【図２】
2005167870.tif 000004
【図３】
2005167870.tif 000005
【図４】
2005167870.tif 000006
【図５】
2005167870.tif 000007
【図６】
2005167870.tif 000008
【図７】
2005167870.tif 000009
【図８】
2005167870.tif 000010
【図９】
2005167870.tif 000011
【図１０】
2005167870.tif 000012
【図１１】
2005167870.tif 000013
【図１２】
2005167870.tif 000014
【図１３】
2005167870.tif 000015
【図１４】
2005167870.tif 000016
【図１５】
2005167870.tif 000017
【図１６】
2005167870.tif 000018
【図１７】
2005167870.tif 000019
【図１８】
2005167870.tif 000020
【図１９】
2005167870.tif 000021