(57)【要約】【課題】データ処理装置においてアプリケーション処理回路を複数のユーザが利用できるようにする。【解決手段】アクセス制御部１６は、ユーザごとに設けられたパケットバッファ２２と、受信したパケットを対応するパケットバッファ２２に格納するパケット識別部２１と、転送対象となるパケットバッファ２２を決定するスケジューリング部２５と、アプリケーション処理回路１７において参照データの更新が可能で、かつスケジューリング部２５によって決定されたパケットバッファ２２が現在の転送対象のパケットバッファ２２と異なる場合に、スケジューリング部２５によって決定されたパケットバッファ２２に対応する参照データに更新する転送制御部２６と、参照データの更新が完了したときに、転送対象として決定されたパケットバッファ２２をパケット転送部２４に繋ぐバッファ選択部２３とを備える。【選択図】  図２
2020077088.tif 000002
【特許請求の範囲】
【請求項１】
外部からパケットを受信する第１のステップと、
この第１のステップで受信したパケットのユーザ属性を識別して、ユーザごとに設けられた複数のパケットバッファのうち対応するパケットバッファに前記パケットを格納する第２のステップと、
前記複数のパケットバッファの状態を評価し、転送対象となるパケットバッファを決定する第３のステップと、
パケットから再構築したデータと保持している参照データとに基づいて処理を行う外部のアプリケーション処理回路において前記参照データの更新が可能で、かつ前記第３のステップで決定したパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記第３のステップで決定したパケットバッファに対応する参照データに更新する第４のステップと、
前記参照データの更新が完了したときに、前記第３のステップで決定したパケットバッファに格納されたパケットを前記アプリケーション処理回路に転送する第５のステップとを含むことを特徴とするアクセス制御方法。
【請求項２】
請求項１記載のアクセス制御方法において、
前記第３のステップは、
前記複数のパケットバッファおよび前記アプリケーション処理回路に関連したパラメータを収集するステップと、
前記パラメータに基づいて評価関数を計算するステップと、
前記評価関数が最大のパケットバッファを前記転送対象のパケットバッファとして決定するステップとを含み、
前記パラメータは、各パケットバッファの保持パケット数と、各パケットバッファと前記アプリケーション処理回路との通信が終わってからの経過時間である待機時間と、各パケットバッファと前記アプリケーション処理回路との通信が始まってからの経過時間である利用時間と、各パケットバッファに設定された優先度と、前記アプリケーション処理回路における参照データの更新処理で発生するコストであることを特徴とするアクセス制御方法。
【請求項３】
請求項１または２記載のアクセス制御方法において、
前記第４のステップは、
前記アプリケーション処理回路の状態を監視するステップと、
前記アプリケーション処理回路において前記参照データの更新が可能で、かつ前記第３のステップで決定したパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記アプリケーション処理回路に保持された参照データを記憶部に退避させるステップと、
前記第３のステップで決定したパケットバッファに対応する参照データを前記記憶部から読み出して前記アプリケーション処理回路にダウンロードするステップとを含むことを特徴とするアクセス制御方法。
【請求項４】
外部からパケットを受信するパケット受信部と、
ユーザごとに設けられた複数のパケットバッファと、
前記パケット受信部によって受信されたパケットのユーザ属性を識別して、このパケットを対応するパケットバッファに格納するパケット識別部と、
前記複数のパケットバッファの状態を評価し、転送対象となるパケットバッファを決定するスケジューリング部と、
パケットから再構築したデータと保持している参照データとに基づいて処理を行う外部のアプリケーション処理回路において前記参照データの更新が可能で、かつ前記スケジューリング部によって決定されたパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記スケジューリング部によって決定されたパケットバッファに対応する参照データに更新する転送制御部と、
前記パケットバッファに格納されたパケットを前記アプリケーション処理回路に転送するパケット転送部と、
前記複数のパケットバッファのうちいずれか１つを前記パケット転送部に接続し、前記参照データの更新が完了したときに、前記スケジューリング部によって転送対象として決定されたパケットバッファを前記パケット転送部に繋ぐように、前記パケットバッファと前記パケット転送部との間の接続を切り替えるバッファ選択部とを備え、
前記パケット転送部は、前記バッファ選択部によって接続されたパケットバッファに格納されたパケットを前記アプリケーション処理回路に転送することを特徴とするアクセス制御装置。
【請求項５】
請求項４記載のアクセス制御装置において、
前記スケジューリング部は、前記複数のパケットバッファおよび前記アプリケーション処理回路に関連したパラメータを収集して、このパラメータに基づいて評価関数を計算し、計算した評価関数が最大のパケットバッファを前記転送対象のパケットバッファとして決定し、
前記パラメータは、各パケットバッファの保持パケット数と、各パケットバッファと前記アプリケーション処理回路との通信が終わってからの経過時間である待機時間と、各パケットバッファと前記アプリケーション処理回路との通信が始まってからの経過時間である利用時間と、各パケットバッファに設定された優先度と、前記アプリケーション処理回路における参照データの更新処理で発生するコストであることを特徴とするアクセス制御装置。
【請求項６】
請求項４または５記載のアクセス制御装置において、
前記転送制御部は、前記アプリケーション処理回路において前記参照データの更新が可能で、かつ前記スケジューリング部によって決定されたパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記アプリケーション処理回路に保持された参照データを外部の記憶部に退避させ、前記スケジューリング部によって転送対象として決定されたパケットバッファに対応する参照データを前記記憶部から読み出して前記アプリケーション処理回路にダウンロードすることを特徴とするアクセス制御装置。
【請求項７】
パケットから再構築したデータと保持している参照データとに基づいて処理を行うアプリケーション処理回路と、
ユーザごとの参照データを記憶する記憶部と、
前記アプリケーション処理回路ごとに設けられる、請求項４または５記載のアクセス制御装置と、
外部から受信したパケットを、転送先のアプリケーション処理回路に対応するアクセス制御装置に送出するパケット転送機能部とを備えることを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上のデータ処理装置においてパケット通信をベースとしたアプリケーション処理回路を時分割で利用するためのアクセス制御方法、アクセス制御装置、およびデータ処理装置に関するものである。
【背景技術】
【０００２】
近年のクラウドコンピューティングでは、ＡＩ（Artificial Intelligence）やコンピュータ・ビジョンのような高度なサービスの実用化が進んでいる。このようなサービスは、一般に計算量が多くソフトウェア処理だけでは実現が難しいことから、ＧＰＵ（Graphics Processing Unit）やＦＰＧＡ（Field-Programmable Gate Array）といったハードウェアアクセラレータに計算量が多い処理をオフロードすることが検討されている（非特許文献１）。特にＦＰＧＡは、処理に最適化したデータパスを構築できるため、低遅延が求められるアプリケーションに適している。
【０００３】
先述のとおり、計算量が多いアプリケーションは、一部の処理をＦＰＧＡで実行することで処理遅延を削減することが可能である。一方、ＦＰＧＡを活用するためには、ＣＰＵにおいて受信したパケットから元データ（画像データ等）を再構築した後にＦＰＧＡにデータを転送する必要があり、前処理によるオーバヘッドが発生する。このオーバヘッドを解消するには、パケット単位でＦＰＧＡにデータを転送し、ＦＰＧＡ内部で元データを再構築することが有効である。非特許文献２が示す技術では、ＦＰＧＡにパケット送受信機能を設け、ＦＰＧＡがメインメモリやキャッシュに置かれたパケットバッファに対してパケットの読み込みと書き込みを行うことで、ソフトウェアを変更することなくＣＰＵとＦＰＧＡの間の高速な通信を実現している。
【０００４】
画像処理などの上位アプリケーションでは参照データを利用することがある。例えば、画像処理の一つであるフレーム間差分法では、２枚の画像データを比較することで移動物体を検出しており、処理回路は比較対象となる画像データを保持する必要がある。一方、ネットワーク上ではアプリケーション情報は考慮されない。そのため、パケット通信をベースとしたアプリケーション処理回路では、異なるユーザから送られたパケットを連続して受信することがあり、回路に別ユーザに向けた参照データが保持されていると誤った計算が行われる可能性がある。よって、１つのアプリケーション処理回路に対して１ユーザしか割り当てることができず、複数のユーザのリクエストに応えるには多くの回路リソースが必要となる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Kalin Ovtcharov，et al.，“Accelerating deep convolutional neural networks using specialized hardware”，Microsoft Research Whitepaper ２．１１，２０１５
【非特許文献２】渡邊義和他，“ＣＰＵ／ＦＰＧＡ密結合アーキテクチャを用いたネットワーク機能仮想化アクセラレーション手法”，ＤＡシンポジウム２０１６論文集，２２号，ｐ．１１６−１２１，２０１６
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記のような課題を解決するためのものであり、クラウド上のデータ処理装置においてハードウェアアクセラレータに実装したアプリケーション処理回路を時分割で利用するために必要なアクセス制御方法、アクセス制御装置、およびデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のアクセス制御方法は、外部からパケットを受信する第１のステップと、この第１のステップで受信したパケットのユーザ属性を識別して、ユーザごとに設けられた複数のパケットバッファのうち対応するパケットバッファに前記パケットを格納する第２のステップと、前記複数のパケットバッファの状態を評価し、転送対象となるパケットバッファを決定する第３のステップと、パケットから再構築したデータと保持している参照データとに基づいて処理を行う外部のアプリケーション処理回路において前記参照データの更新が可能で、かつ前記第３のステップで決定したパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記第３のステップで決定したパケットバッファに対応する参照データに更新する第４のステップと、前記参照データの更新が完了したときに、前記第３のステップで決定したパケットバッファに格納されたパケットを前記アプリケーション処理回路に転送する第５のステップとを含むことを特徴とするものである。
【０００８】
また、本発明のアクセス制御方法の１構成例において、前記第３のステップは、前記複数のパケットバッファおよび前記アプリケーション処理回路に関連したパラメータを収集するステップと、前記パラメータに基づいて評価関数を計算するステップと、前記評価関数が最大のパケットバッファを前記転送対象のパケットバッファとして決定するステップとを含み、前記パラメータは、各パケットバッファの保持パケット数と、各パケットバッファと前記アプリケーション処理回路との通信が終わってからの経過時間である待機時間と、各パケットバッファと前記アプリケーション処理回路との通信が始まってからの経過時間である利用時間と、各パケットバッファに設定された優先度と、前記アプリケーション処理回路における参照データの更新処理で発生するコストである。
また、本発明のアクセス制御方法の１構成例において、前記第４のステップは、前記アプリケーション処理回路の状態を監視するステップと、前記アプリケーション処理回路において前記参照データの更新が可能で、かつ前記第３のステップで決定したパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記アプリケーション処理回路に保持された参照データを記憶部に退避させるステップと、前記第３のステップで決定したパケットバッファに対応する参照データを前記記憶部から読み出して前記アプリケーション処理回路にダウンロードするステップとを含むことを特徴とするものである。
【０００９】
また、本発明のアクセス制御装置は、外部からパケットを受信するパケット受信部と、ユーザごとに設けられた複数のパケットバッファと、前記パケット受信部によって受信されたパケットのユーザ属性を識別して、このパケットを対応するパケットバッファに格納するパケット識別部と、前記複数のパケットバッファの状態を評価し、転送対象となるパケットバッファを決定するスケジューリング部と、パケットから再構築したデータと保持している参照データとに基づいて処理を行う外部のアプリケーション処理回路において前記参照データの更新が可能で、かつ前記スケジューリング部によって決定されたパケットバッファが現在の転送対象のパケットバッファと異なる場合に、前記スケジューリング部によって決定されたパケットバッファに対応する参照データに更新する転送制御部と、前記パケットバッファに格納されたパケットを前記アプリケーション処理回路に転送するパケット転送部と、前記複数のパケットバッファのうちいずれか１つを前記パケット転送部に接続し、前記参照データの更新が完了したときに、前記スケジューリング部によって転送対象として決定されたパケットバッファを前記パケット転送部に繋ぐように、前記パケットバッファと前記パケット転送部との間の接続を切り替えるバッファ選択部とを備え、前記パケット転送部は、前記バッファ選択部によって接続されたパケットバッファに格納されたパケットを前記アプリケーション処理回路に転送することを特徴とするものである。
【００１０】
また、本発明のデータ処理装置は、パケットから再構築したデータと保持している参照データとに基づいて処理を行うアプリケーション処理回路と、ユーザごとの参照データを記憶する記憶部と、前記アプリケーション処理回路ごとに設けられる、請求項４または５記載のアクセス制御装置と、外部から受信したパケットを、転送先のアプリケーション処理回路に対応するアクセス制御装置に送出するパケット転送機能部とを備えることを特徴とするものである。
【発明の効果】
【００１１】
本発明では、アプリケーション処理回路の前段に配置するアクセス制御装置において外部から受信したパケットをユーザごとに分けてパケットバッファに格納し、アプリケーション処理回路と通信するパケットバッファを計算によって選択するようにした。また、アクセス制御装置はアプリケーション処理回路の状態を確認し、適切なタイミングで参照データの更新を行ってからパケットバッファの切り替えを行うようにした。これにより、本発明では、１つのアプリケーション処理回路を複数のユーザが同時に利用しても、常に正しい計算を行うことが可能になる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施例に係るデータ処理装置の構成を示すブロック図である。
【図２】図２は、本発明の実施例に係るアクセス制御部の構成を示すブロック図である。
【図３】図３は、本発明の実施例に係るアクセス制御部のスケジューリング部の動作を説明するフローチャートである。
【図４】図４は、本発明の実施例に係るアクセス制御部のスケジューリング部が収集するパケットバッファの情報を示す図である。
【図５】図５は、本発明の実施例に係るアクセス制御部の転送制御部の動作を説明するフローチャートである。
【図６】図６は、本発明の実施例に係るデータ処理装置の具体例を示すブロック図である。
【図７】図７は、本発明の実施例に係るデータ処理装置のソフトウェア処理部を実現するコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例を図面に基づいて詳細に説明する。図１は本発明の実施例に係るデータ処理装置１０の構成を示すブロック図である。データ処理装置１０は、入出力部１１と、ソフトウェア処理部１２と、ハードウェア処理部１３とから構成される。
【００１４】
ソフトウェア処理部１２は、転送制御部１４と、パケット転送機能部１５と、アクセス制御部１６（アクセス制御装置）とから構成される。ハードウェア処理部１３は、アプリケーション処理回路１７と、記憶部１１１とから構成される。また、アプリケーション処理回路１７は、パケット受信部１８と、パケット送信部１９と、情報処理部１１０とから構成される。
【００１５】
データ処理装置１０において、外部とのパケットの送受信は入出力部１１を介して行われる。入出力部１１は、一般的なネットワークインタフェースカード（ＮＩＣ）を用いて実現することができる。入出力部１１によって受信されたパケットは、パケット転送機能部１５に送られる。
【００１６】
パケット転送機能部１５は、ルーティングテーブル（不図示）に基づいてパケットの転送先を決定する。パケット転送機能部１５を実現する既存技術としてＯｐｅｎ  ｖＳｗｉｔｃｈやＬａｇｏｐｕｓ（登録商標）といった仮想スイッチがある。なお、図１の例では、パケットの転送先が１つの例を示しているが、後述のようにアクセス制御部１６とアプリケーション処理回路１７とが複数設けられる場合もある。この場合には、パケット転送機能部１５は、パケットの転送先のアプリケーション処理回路１７に対応するアクセス制御部１６にパケットを送出する。
【００１７】
転送制御部１４は、パケット転送機能部１５のルーティングテーブルの管理を行い、外部から受信したテーブル情報を基にルーティングテーブルを更新する機能を持つ。これにより、必要に応じてパケットの転送先を変更することが可能である。
アクセス制御部１６は、パケット転送機能部１５から受信したパケットをユーザごとに分類し、ユーザごとにパケットをアプリケーション処理回路１７に転送する役割を担う。
【００１８】
アプリケーション処理回路１７を構成する要素の一つであるパケット受信部１８は、アクセス制御部１６からパケットを受信する。このパケット受信部１８は、パケットの順序制御と、受信したパケットから元データ（画像データ等）を再構築する処理を行う。
【００１９】
情報処理部１１０は、例えば保持している参照データ（例えば過去の画像である参照画像データ）とパケット受信部１８によって再構築されたデータ（例えば現在の画像データ）とを比較して、再構築された画像中の移動物体の領域を検出するフレーム間差分処理等を行う。
パケット送信部１９は、情報処理部１１０の処理結果をパケット化し、生成したパケットをパケット転送機能部１５に転送する。
【００２０】
記憶部１１１は、ユーザごとの参照データを記憶している。この記憶部１１１は、オンチップＲＡＭ（Random Access Memory）やオフチップＲＡＭを用いて実現できる。
アクセス制御部１６は、記憶部１１１に記憶されているユーザごとの参照データのうち、情報処理部１１０に保持させる参照データを入れ替える制御を行う。
【００２１】
以上のようなデータ処理装置１０のうち、入出力部１１とソフトウェア処理部１２とは一般的なサーバ（ＮＩＣとコンピュータ）で実現することができ、ハードウェア処理部１３はＦＰＧＡボードで実現することができる。
ＦＰＧＡに実装されたアプリケーション処理回路１７は、書き換えることができるため、サービスの需要に応じて回路の数や種類を変更することが可能である。
【００２２】
図２に、ソフトウェア処理部１２内のアクセス制御部１６（アクセス制御装置）のブロック図を示す。アクセス制御部１６は、パケット受信部２０と、パケット識別部２１と、複数のパケットバッファ２２と、バッファ選択部２３と、パケット転送部２４と、スケジューリング部２５と、転送制御部２６から構成される。
【００２３】
パケット受信部２０は、パケット転送機能部１５から送られたパケットを受信する。パケット識別部２１は、パケットのユーザ属性を識別する。ユーザ属性は、例えばＴＣＰ（Transmission Control Protocol）ヘッダやＵＤＰ（User Datagram Protocol）ヘッダに含まれるポート番号によって識別が可能である。他にも、パケットに保持されたアプリケーション情報によってユーザ属性を識別する方法などが考えられる。
【００２４】
パケットバッファ２２は、ユーザごとに設けられる。パケット識別部２１は、識別したユーザ属性に応じてパケットを、対応するパケットバッファ２２に格納する。
バッファ選択部２３は、複数のパケットバッファ２２のうち１つを選択し、選択したパケットバッファ２２をパケット転送部２４に繋ぐ。このとき、選択すべきパケットバッファ２２は、スケジューリング部２５によって決定される。パケットバッファ２２の決定方法については後述する。
【００２５】
パケット転送部２４は、バッファ選択部２３によって接続されたパケットバッファ２２に格納されたパケットを、ハードウェア処理部１３に転送する。
転送制御部２６は、アプリケーション処理回路１７における参照データの更新処理の制御を行う。
【００２６】
アクセス制御部１６は、ハードウェアで実装することも可能であるが、ソフトウェアで実装することでより柔軟な制御が可能であると考えられる。例えば、アプリケーション処理回路１７を使用するユーザ数が増加した場合、この増加に合わせてパケットバッファ２２の数を増やす必要がある。ハードウェア実装では、あらかじめ設定されたパケットバッファ２２の数を変えることは困難であるが、ソフトウェア実装では、パケットバッファ２２の数を簡単に変更することが可能である。また、スケジューリング部２５は、評価関数を用いて、転送対象のパケットバッファ２２を決定するが、ソフトウェア処理であれば高精度の計算が可能であり、より細かい制御が可能である。
【００２７】
次に、転送対象のパケットバッファ２２を決定するスケジューリング部２５の動作を、図３を用いて説明する。
スケジューリング部２５は、動作を開始すると、始めに自身の初期化（ステップＳ３０）を行った後、パケットバッファ２２の情報を収集する（ステップＳ３１）。その後、スケジューリング部２５は、収集した情報に基づいて各パケットバッファ２２の状態の評価を行い（ステップＳ３２）、評価関数が最大のパケットバッファ２２を転送対象のパケットバッファとして決定する（ステップＳ３３）。パケットバッファ２２から収集する情報、およびパケットバッファ２２の評価方法については後述する。
【００２８】
スケジューリング部２５は、ステップＳ３３で決定したパケットバッファ２２が前回決定したパケットバッファ２２と同じ場合（ステップＳ３４においてＹｅｓ）、バッファ選択部２３および転送制御部２６との通信は行わず、動作の終了判定に進む（ステップＳ３７）。この場合、現在接続中のパケットバッファ２２とパケット転送部２４との接続がそのまま維持される。
【００２９】
また、スケジューリング部２５は、ステップＳ３３で決定したパケットバッファ２２が前回決定したパケットバッファ２２と異なる場合（ステップＳ３４においてＮｏ）、ステップＳ３３で決定したパケットバッファ２２を転送制御部２６に通知し、パケットバッファ２２の切り替えが可能か否かを問い合わせる（ステップＳ３５）。スケジューリング部２５は、問い合わせに対する転送制御部２６からの返答が来るまで待機状態となる。
【００３０】
スケジューリング部２５は、転送制御部２６からパケットバッファ２２の切り替えが可能（参照データの更新が完了）という返答があったときに（ステップＳ３５においてＹｅｓ）、ステップＳ３３で決定したパケットバッファ２２をバッファ選択部２３に通知する（ステップＳ３６）。この通知に応じて、バッファ選択部２３は、スケジューリング部２５から通知されたパケットバッファ２２をパケット転送部２４に繋ぐように、パケットバッファ２２とパケット転送部２４との間の接続を切り替える。
【００３１】
そして、スケジューリング部２５は、終了判定を行う（ステップＳ３７）。例えばデータ処理装置１０の動作が終了する場合にはスケジューリング部２５の動作も終了し、終了しない場合にはステップＳ３１に戻る。
【００３２】
スケジューリング部２５が収集するパケットバッファ２２の情報を図４を用いて説明する。パケットバッファ２２の情報は、図４に示す評価テーブル４０の形式でスケジューリング部２５内に保持される。評価テーブル４０には、各パケットバッファ２２に割り当てられた固有のバッファＩＤと、各パケットバッファ２２の保持パケット数Ｎiと、各パケットバッファ２２とアプリケーション処理回路１７との通信が終わってから経過した時間である待機時間Ｔiと、各パケットバッファ２２とアプリケーション処理回路１７との通信が始まってから経過した時間である利用時間ｔiと、各パケットバッファ２２に設定された優先度Ｐiとが格納される。
【００３３】
バッファＩＤはパケットバッファ２２を追加もしくは削除した時に更新されるパラメータであり、優先度ＰiはＱｏＳ（Quality of Service）制御を行うためのパラメータである。優先度Ｐiは、予め設定されることを想定しているが、スケジューリング部２５が動作している最中に動的に変更することも可能である。保持パケット数Ｎiは、各パケットバッファ２２の領域を確認することで取得できるパラメータである。
【００３４】
また、待機時間Ｔiおよび利用時間ｔiは、各パケットバッファ２２の状態を監視し、経過時間を測定することで取得可能である。なお、バッファ選択部２３によってパケット転送部２４と接続されるパケットバッファ２２は１つだけなので、パケット転送部２４と接続中のパケットバッファ２２の利用時間ｔiのみが更新され、パケット転送部２４と接続されていないパケットバッファ２２の利用時間ｔiは全て０となる。また、パケット転送部２４と接続されていないパケットバッファ２２の待機時間Ｔiが更新され、接続中のパケットバッファ２２の待機時間Ｔiのみが０となる。
【００３５】
図４に示した保持パケット数Ｎi、待機時間Ｔi、利用時間ｔiおよび優先度Ｐiの一部もしくは全部が、パケットバッファ２２を評価し、アプリケーション処理回路１７と通信するパケットバッファ２２を決定するための評価関数ｆで使用される。ユースケースによって、これら各パラメータの重要度が変わると考えられるため、評価関数ｆはユースケースごとに設定することが望ましい。一例として一次関数の評価関数ｆを説明する。
【００３６】
アプリケーション処理回路１７において参照データを切り替える際に必要なコストをＣとすると、バッファＩＤがｉのパケットバッファ２２の評価関数ｆ（ｉ）は、そのパケットバッファ２２の保持パケット数Ｎiと待機時間Ｔiと優先度Ｐiと利用時間ｔiとコストＣとから次の式（１）により求めることができる。
ｆ（ｉ）＝α1×Ｎi＋α2×Ｔi＋α3×Ｐi−α4×ｔi−Ｃ            ・・・（１）
【００３７】
ここで、α1〜α4は重み付けのための係数（重み係数）である。１例として、重み係数α1〜α4を全て１、コストＣを１としたとき、図４の評価テーブル４０に関して式（１）の評価関数ｆ（ｉ）が最大となるのは、バッファＩＤがｉ＝０のときであり、評価関数ｆ（０）は４１（＝３０＋８＋４−０−１）である。この場合、スケジューリング部２５は、選択すべきパケットバッファ２２として、バッファＩＤがｉ＝０のパケットバッファ２２を決定する。
【００３８】
スケジューリング部２５が決定したｉ＝０のパケットバッファ２２がバッファ選択部２３によってパケット転送部２４に接続されるため、このパケットバッファ２２の保持パケット数Ｎ0が時間の経過に伴って減少する共に、このパケットバッファ２２の利用時間ｔ0が増加する。一方、その他のパケットバッファ２２では、保持パケット数Ｎiは増加する。そのため、評価関数ｆ（ｉ）が最大のパケットバッファ２２が途中で変わると考えられ、あるタイミングで別のパケットバッファ２２が転送対象のパケットバッファ２２として選ばれるようになる。
【００３９】
次に、パケットバッファ２２が切り替わるタイミングで情報処理部１１０の参照データを更新する転送制御部２６の動作を、図５を用いて説明する。
転送制御部２６は、動作を開始すると、始めに自身の初期化（ステップＳ５０）を行った後、スケジューリング部２５から問い合わせが来るまで待機状態となる（ステップＳ５１）。
【００４０】
転送制御部２６は、スケジューリング部２５からパケットバッファ２２の切り替えが可能か否かの問い合わせがあった時点で（ステップＳ５１においてＹｅｓ）、情報処理部１１０の状態を確認し（ステップＳ５２）、参照データ更新が可能か否かを判定する（ステップＳ５３）。
【００４１】
情報処理部１１０が参照データを用いた処理を行っている場合には、参照データを更新することはできない。参照データを更新できない場合には、転送制御部２６は待機することになる。一方、情報処理部１１０の参照データを用いた処理が終了した時点で参照データの更新が可能となるので、転送制御部２６は、情報処理部１１０が保持している参照データを記憶部１１１に退避させる制御を行う（ステップＳ５４）。
【００４２】
その後、転送制御部２６は、スケジューリング部２５が転送対象として決定したパケットバッファ２２（ユーザ）に対応する参照データを記憶部１１１から読み出して情報処理部１１０にダウンロードし（ステップＳ５５）、スケジューリング部２５に対してパケットバッファ２２の切り替えが可能なことを通知する（ステップＳ５６）。
【００４３】
最後に、転送制御部２６は、終了判定を行う（ステップＳ５７）。例えばデータ処理装置１０の動作が終了する場合には転送制御部２６の動作も終了し、終了しない場合にはステップＳ５１に戻る。
【００４４】
以上の動作により、ユーザごとにパケットを管理し、適切なタイミングで参照データの更新を行うことで、異なるユーザに属するパケットをアプリケーション処理回路１７に転送しても常に正しい計算が可能となる。
【００４５】
最後に、本実施例のアクセス制御部１６を用いた場合のデータ処理装置１０の具体例を図６に示す。この図６の例は、異なる処理を行うアプリケーション処理回路１７−１〜１７−３をハードウェア処理部１３に複数実装した場合を示している。なお、図６では、入出力部１１とソフトウェア処理部１２内の転送制御部１４の記載を省略している。
【００４６】
アクセス制御部１６−１〜１６−３は、アプリケーション処理回路１７−１〜１７−３毎に設けられる。各アクセス制御部１６−１〜１６−３には、ＩＰアドレスが割り当てられている。図６の例では、アクセス制御部１６−１のＩＰアドレスは「１９２．１６８．１．１」、アクセス制御部１６−２のＩＰアドレスは「１９２．１６８．１．２」、アクセス制御部１６−３のＩＰアドレスは「１９２．１６８．１．３」となっている。
【００４７】
パケット転送機能部１５は、入出力部１１によって受信されたパケットのヘッダに記載されたＩＰアドレスを確認することで、どのアクセス制御部１６−１〜１６−３にパケットを転送すればよいか（すなわち、どのアプリケーション処理回路１７−１〜１７−３にパケットを転送すればよいか）を判断することができる。
【００４８】
また、各アプリケーション処理回路１７−１〜１７−３は、ＦＰＧＡの再構成可能領域５１に実装することもでき、その場合アプリケーション処理回路１７−１〜１７−３の単位で動的に書き換えることが可能である。再構成可能領域５１は、例えばＦＰＧＡのパーシャルリコンフィギュレーション機能を使うことで実現することができる。このような構成とすることで、各種サービスの利用状況に応じてアプリケーション処理回路１７−１〜１７−３の種類や数を柔軟に変更することができる。
【００４９】
本実施例で説明したソフトウェア処理部１２は、ＣＰＵ（Central Processing Unit）、記憶装置及びインターフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。このコンピュータの構成例を図７に示す。コンピュータは、ＣＰＵ１００と、記憶装置１０１と、インタフェース装置（以下、Ｉ／Ｆと略する）１０２とを備えている。Ｉ／Ｆ１０２には、入出力部１１（ＮＩＣ）とハードウェア処理部１３などが接続される。このようなコンピュータにおいて、本発明のアクセス制御方法を実現させるためのプログラムは、記憶装置１０１に格納される。ＣＰＵ１００は、記憶装置１０１に記憶されたプログラムに従って本実施例で説明したソフトウェア処理部１２（アクセス制御装置）の処理を実行する。
【産業上の利用可能性】
【００５０】
本発明は、ネットワーク上のデータ処理装置を利用する技術に適用することができる。
【符号の説明】
【００５１】
１０…データ処理装置、１１…入出力部、１２…ソフトウェア処理部、１３…ハードウェア処理部、１４…転送制御部、１５…パケット転送機能部、１６…アクセス制御部、１７…アプリケーション処理回路、１８…パケット受信部、１９…パケット送信部、１１０…情報処理部、１１１…記憶部、２０…パケット受信部、２１…パケット識別部、２２…パケットバッファ、２３…バッファ選択部、２４…パケット転送部、２５…スケジューリング部、２６…転送制御部、５１…再構成可能領域。
【図１】
2020077088.tif 000003
【図２】
2020077088.tif 000004
【図３】
2020077088.tif 000005
【図４】
2020077088.tif 000006
【図５】
2020077088.tif 000007
【図６】
2020077088.tif 000008
【図７】
2020077088.tif 000009