(57)【要約】【課題】  複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを用いる場合、アクセラレータ用ＬＳＩにやって来たデータを逐一アクセラレータ用ＬＳＩに入力してしまうと、処理結果が出力されるまで次のデータが入力できないため、複数のデータを並列処理できるにも関わらず、1つずつデータを処理することになり、演算資源が無駄になってしまう、という問題があった。【解決手段】  アクセラレータ用ＬＳＩに転送するデータを複数個まとめてバルク化し、バルク化した複数個のデータを、一定時間毎にアクセラレータ用ＬＳＩに転送する手段と、アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取る手段を備える。【選択図】  図１
2012003360.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを搭載したアクセラレータ装置において、
入力データから演算に必要な箇所を抽出して、
抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩに転送し、
アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取り、
処理結果と入力データから新たなデータを再構築することを特徴とする装置
【請求項２】
受信したパケットを一時的に蓄積する受信バッファと、送信するパケットを送信前に一時的に蓄積する送信バッファを供え、通信ネットワークを介してパケットを送受信する装置において、
複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを搭載したアクセラレータ部を備え、
前記アクセラレータ部が、
受信バッファから読み出したデータから演算に必要な箇所を抽出し、
抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩに転送し、
アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取り、
受信バッファから読み出したデータと処理結果とから新たなデータを再構築することを特徴とする装置
【請求項３】
請求項２に記載の装置であって、
再構築した新たなデータを送信バッファに転送することを特徴とする装置
【請求項４】
請求項２に記載の装置であって、
送信バッファと受信バッファとアクセラレータ部との間でデータをやり取りするアクセラレータ制御部を備え、
前記アクセラレータ制御部が、
受信バッファからパケットを読出し、
読み出したパケットを元に新たなデータを作り出し、
新たなデータをアクセラレータ部に転送し、
或いは、
アクセラレータ部から再構築した新たなデータを受けとり、
受け取ったデータを元に新たなパケットを作り出し、
新たなパケットを送信バッファに転送することを特徴とする装置
【請求項５】
通信ネットワークを介してパケットを送受信する装置において、
複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩと、
プロセッサとメモリからなる演算部を備え、
前記演算部が、
受信したパケットを一時的に蓄積する受信バッファモジュールと、
送信するパケットを送信前に一時的に蓄積する送信バッファモジュールと、
アクセラレータモジュールを備え、
前記アクセラレータモジュールが、
受信バッファモジュールから読み出したデータから演算に必要な箇所を抽出し、
抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩに転送し、
アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取り、
受信バッファモジュールから読み出したデータと処理結果とから新たなデータを再構築することを特徴とする装置
【請求項６】
請求項５に記載の装置であって、
再構築した新たなデータを送信バッファモジュールに転送することを特徴とする装置
【請求項７】
請求項５に記載の装置であって、
送信バッファモジュールと受信バッファモジュールとアクセラレータモジュールとの間でデータをやり取りするアクセラレータ制御モジュールを備え、
前記アクセラレータ制御モジュールが、
受信バッファモジュールからパケットを読出し、
読み出したパケットを元に新たなデータを作り出し、
新たなデータをアクセラレータモジュールに転送し、
或いは、
アクセラレータモジュールから再構築した新たなデータを受けとり、
受け取ったデータを元に新たなパケットを作り出し、
新たなパケットを送信バッファモジュールに転送することを特徴とする装置
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関し、特に、特定の処理を高速化するアクセラレータ装置に関する。
【背景技術】
【０００２】
通信ネットワーク経由でデータセンタのコンピュータ処理サービスを利用するクラウドコンピューティングが台頭しつつある。データセンタにアクセスするユーザ数が増加すると、他のユーザのコンピュータ処理が終了するのを待つ時間が大きくなるため、コンピュータ処理が完了して処理結果が返されるまでの応答時間が大きくなる。応答時間を短縮するためには、経路上にある通信装置にアクセラレータ用ＬＳＩを搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化するアクセラレータ装置が必要となる。アクセラレータ用ＬＳＩとして、例えば、ＦＰＧＡ、ＧＰＵ、ＴＬＳ／ＳＳＬ処理専用のＬＳＩ、ＬＤＰＣ処理専用のＬＳＩ、圧縮処理専用のＬＳＩ、等が挙げられる。
【０００３】
アクセラレータ用ＬＳＩにやって来たデータは、逐一アクセラレータ用ＬＳＩに入力され、アクセラレータ用ＬＳＩの処理結果は、逐一出力される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを用いる場合、アクセラレータ用ＬＳＩにやって来たデータを逐一アクセラレータ用ＬＳＩに入力してしまうと、処理結果が出力されるまで次のデータが入力できないため、複数のデータを並列処理できるにも関わらず、1つずつデータを処理することになり、演算資源が無駄になってしまう、という問題があった。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本願発明の一態様では、アクセラレータ用ＬＳＩに転送するデータを複数個まとめてバルク化し、バルク化した複数個のデータを、一定時間毎にアクセラレータ用ＬＳＩに転送する手段と、アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取る手段を備える、態様とする。
【発明の効果】
【０００６】
上述の本発明の態様により、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩに、定期的に複数のデータを同時入力することによって、複数のデータを並列処理させることが可能となり、演算資源の無駄がなくなる。
【図面の簡単な説明】
【０００７】
【図１】アクセラレータ用ＬＳＩを搭載するアクセラレータ装置１００のブロック図
【図２】アクセラレータ用ＬＳＩを搭載するアクセラレータ部を含む装置２００のブロック図
【図３】アクセラレータ用ＬＳＩと、プロセッサとメモリからなる演算部を搭載する装置３００のブロック図
【図４】アクセラレータ用ＬＳＩが複数のデータをバルク化して送受信する際のフォーマット図
【図５】データを複数個まとめてバルク化し、アクセラレータ用ＬＳＩに転送する際のフローチャート図
【図６】データを複数個まとめてバルク化して転送する効果を示した説明図
【発明を実施するための形態】
【０００８】
本発明を実施するための代表的な形態は、下記のとおりである。
【０００９】
まず、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを搭載したアクセラレータ装置が、入力データから演算に必要な箇所を抽出する手段と、抽出したデータを複数バルク化してアクセラレータ用ＬＳＩに転送する手段と、アクセラレータ用ＬＳＩからバルク化された複数個の処理結果を受け取る手段と、処理結果と入力データから新たなデータを再構築する手段を備える態様とした。この態様により、アクセラレータ用ＬＳＩにやって来たデータを逐一アクセラレータ用ＬＳＩに入力してしまうと、処理結果が出力されるまで次のデータが入力できないため、複数のデータを並列処理できるにも関わらず、1つずつデータを処理することになり、演算資源が無駄になってしまう、という問題を解決する。本態様により、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩに、複数のデータを同時に入力することによって、複数のデータを並列処理させることが可能となり、演算資源の無駄がなくなる。本態様の詳細は、実施例１を中心に後述する。
【００１０】
別の態様として、通信ネットワークを介してパケットを送受信する装置が、受信したパケットを一時的に蓄積する手段と、送信するパケットを送信前に一時的に蓄積する手段と、前述のアクセラレータ装置の備える手段と、装置内部のパケットやデータの転送を制御する手段を備える態様とした。この態様により、経路上にある通信装置にアクセラレータ用ＬＳＩを搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化するアクセラレータ装置を実現することが可能となる。本態様の詳細は、実施例２、３を中心に後述する。
【００１１】
以下、本発明の態様を詳細に説明するべく、装置の構成の詳細や、データを複数バルク化してアクセラレータ用ＬＳＩに転送する処理手順を中心に、以下の実施例を用いて述べる。
【実施例１】
【００１２】
図１、図４、図５、図６を用いて、アクセラレータ用ＬＳＩを搭載して、データセンタの処理の一部を高速化するアクセラレータ装置１００の実施例を示す。
【００１３】
図１には、アクセラレータ装置１００のブロック図を表す。アクセラレータ装置１００は、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩ  １１３と、入力データのうちアクセラレータ処理に必要なデータだけを取得する仕分け部１０４と、入力データから演算に必要な箇所を抽出する抽出部１０５と、抽出後の入力データを一時的に待機させる待機部１０７と、入力データから抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩ  １１３に転送する送信部１０６と、アクセラレータ用ＬＳＩ  １１３からバルク化された複数個の処理結果を受け取る受信部１０８と、送信部１０６と受信部１０８とアクセラレータ用ＬＳＩ  １１３との間のデータの交換を行うデータ交換部１１２と、処理結果と入力データから新たなデータを再構築するデータ再構成部１０９と、データ再構成部１０９が再構築したデータや、仕分け部１０４がアクセラレータ処理に不要と判断したデータを出力する集約部１１０と、から構成される。
【００１４】
仕分け部１０４は、アクセラレータ装置１００に入力されたデータのうちアクセラレータ処理に必要なデータだけを取得する。取得したデータは抽出部１０５へと転送する。不要なデータは集約部１１０へ転送する。抽出部１０５は、転送されてきたデータから演算に必要な箇所を抽出して、抽出したデータを送信部１０６へと転送する。抽出部１０５に転送されてきたデータは、待機部１０７へと転送され、アクセラレータ用ＬＳＩ  １１３でのコンピューティング処理が完了するまで待機する。送信部１０６は、抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩ  １１３に転送する。受信部１０８は、アクセラレータ用ＬＳＩ  １１３からバルク化された複数個の処理後データを受け取り、１つずつデータ再構成部１０９へと転送する。データ再構成部１０９は、受信部１０８から処理後データを受け取ると、対応するデータを待機部１０７から読出し、処理後データと合わせて再構成したデータを集約部１１０へと出力する。集約部１１０は、データ再構成部１０９が再構築したデータや、仕分け部１０４がアクセラレータ処理に不要と判断したデータを外部に出力する。
【００１５】
図４には、送信部１０６からアクセラレータ用ＬＳＩ  １１３へ転送される処理前データ４０１のフォーマットと、アクセラレータ用ＬＳＩ  １１３から送信部１０６へ転送される処理後データ４０２のフォーマットを示す。
【００１６】
送信部１０６からアクセラレータ用ＬＳＩ  １１３へ転送される処理前データ４０１は、アクセラレータ用ＬＳＩ  １１３においてコンピューティング処理される前の処理前データをｎ個（ｎは有限）バルク化した形式をとる。一方、アクセラレータ用ＬＳＩ  １１３から送信部１０６へ転送される処理後データ４０２は、アクセラレータ用ＬＳＩ  １１３においてコンピューティング処理された後の処理後データをｎ個（ｎは有限）バルク化した形式をとる。アクセラレータ用ＬＳＩ  １１３は、処理前データｉ（ｉ＝１，２，…，ｎ）を用いて、コンピューティング処理を行い、処理結果として、処理後データｉ（ｉ＝１，２，…，ｎ）を得る。
【００１７】
図５には、送信部１０６がデータを複数個バルク化してアクセラレータ用ＬＳＩに転送する際の処理手順を説明したフローチャート図を示す。
【００１８】
送信部１０６は、内部にタイマを持っており、はじめにタイマと処理前データを初期化する（ステップ５０１）。次に、タイマの値が、予め定めたインターバル時間Ｔ未満であるか否かを判定する（ステップ５０２）。タイマの値がＴ未満である場合は、送信部１０６に抽出部１０５からのデータが到着しているか否かを判定する（ステップ５０３）。到着したデータがない場合は、ステップ５０２へ戻る。到着したデータがある場合は、処理前データの空き領域に到着データを追加する（ステップ５０４）。更に、処理前データ内のデータ数が、ｎ個に到達しているか否かを判定する（ステップ５０５）。処理前データ内のデータ数がｎ個に到達していない場合は、ステップ５０２へ戻る。処理前データ内のデータ数がｎ個に到達した場合は、タイマの値が、予め定めたインターバル時間Ｔ以上となるまで待機する（ステップ５０６）。タイマの値が予め定めたインターバル時間Ｔに到達すると、処理前データをデータ交換部１１２経由でアクセラレータ用ＬＳＩ  １１３に転送する（ステップ５０７）。処理前データ内のデータ数がｎ個に到達していなくても、ステップ５０２においてタイマの値が予め定めたインターバル時間Ｔに到達すると、処理前データ内のデータ数が０個よりも大きいか否かを判定し（ステップ５０８）、処理前データ内にデータが１個でもある場合は、処理前データをデータ交換部１１２経由でアクセラレータ用ＬＳＩ  １１３に転送する（ステップ５０７）。ステップ５０８において、処理前データ内にデータが１つも無い場合は、ステップ５０１に戻って、初期化を行う。ステップ５０７にて、処理前データをデータ交換部１１２経由でアクセラレータ用ＬＳＩ  １１３に転送した後は、ステップ５０１へ戻って、初期化を行う。
【００１９】
図６には、送信部１０６／受信部１０８と、アクセラレータ用ＬＳＩ  １１３との間で、処理前データと、処理後データを転送するシーケンス図を示す。処理前データを４個、アクセラレータ用ＬＳＩ  １１３へ転送するケースを示す。処理前データを１つずつアクセラレータ用ＬＳＩ  １１３へ逐次転送した場合のシーケンス図を左側に、処理前データをバルク化してアクセラレータ用ＬＳＩ  １１３へ転送した場合のシーケンス図を右側に示す。
【００２０】
処理前データを１つずつ逐次転送するケースでは、往復の転送時間（６０１〜６０８）と、コンピューティング処理時間が、４つのデータに対して必要となる。一方、処理前データをバルク化して転送するケースでは、転送１回あたりの転送時間（６０９，６１０）は、逐次転送１回あたりの転送時間（６０１〜６０８）よりも増加するものの、アクセラレータ用ＬＳＩ  １１３は、複数のデータを並列処理することができるので、処理するデータ数が一定量以下であれば、コンピューティング処理時間は一定となるため、４つのデータを並列処理するコンピューティング処理時間は、１つのデータを処理するコンピューティング処理時間と同じとなり、４つのデータを処理するのに必要な合計時間は、減少する（６１１）。
【００２１】
以上により、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを搭載したアクセラレータ装置が実現される。これにより、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩに、複数のデータを同時に入力することによって、複数のデータを並列処理させることが可能となり、演算資源の無駄がなくなる。
【実施例２】
【００２２】
図２を用いて、アクセラレータ用ＬＳＩを搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化する通信装置２００の実施例を示す。
【００２３】
図２には、通信装置２００のブロック図を表す。本通信装置２００は、通信ネットワークからパケットを受信したり、通信ネットワークに向けてパケットを送信したりするｋ個のネットワークインターフェースＮＩＦ−ｉ（ｉ＝１，２，…，ｋ）２０１−ｉと、ネットワークから受信したパケットを一時的に蓄積する受信バッファ２０３と、ネットワークに向けて送信するパケットを送信前に一時的に蓄積する送信バッファ２０４と、ネットワークインターフェースＮＩＦ２０１と受信バッファ２０３と送信バッファ２０４の間でパケットデータを交換するためのパケットデータ交換部２０２と、実施例１に記載のアクセラレータ装置１００と同一のブロックを備えたアクセラレータ部２０６と、通信装置２００内部のパケットやデータの転送を制御するアクセラレータ制御部２０５とから構成される。
【００２４】
ネットワークから受信したパケットは、パケットデータ交換部２０２経由で受信バッファ２０３に蓄積される。受信バッファ２０３に蓄積されたパケットは、アクセラレータ制御部２０５経由で、または直接アクセラレータ部２０６へと転送される。アクセラレータ制御部２０５経由でアクセラレータ部２０６へ転送する場合は、アクセラレータ制御部２０５で、パケットに対してコンピューティング処理をしてから、転送される。
【００２５】
アクセラレータ部２０６から出力されたデータは、アクセラレータ制御部２０５経由で、または直接送信バッファ２０４へと転送される。直接送信バッファ２０４へと転送する場合は、出力データがネットワークに向けて送信可能なパケット形式となっている。アクセラレータ制御部２０５経由で送信バッファ２０４へと転送する場合は、アクセラレータ制御部２０５で、出力データに対してコンピューティング処理をしてネットワークに向けて送信可能なパケット形式にしてから、転送される。転送されたパケットは、送信バッファ２０４に一旦蓄積される。パケットデータ交換部２０２は、送信バッファ２０４に蓄積されたパケットを、ネットワークインターフェースＮＩＦ２０１経由でネットワークに向けて出力する。
【００２６】
以上により、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを、通信装置に搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化するアクセラレータ装置を実現することが可能となる。
【実施例３】
【００２７】
図３を用いて、アクセラレータ用ＬＳＩを搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化する通信装置をソフトウェアにて実現する通信装置３００の実施例を示す。
【００２８】
図３には、通信装置３００のブロック図をあらわす。通信装置３００は、通信ネットワークからパケットを受信したり、通信ネットワークに向けてパケットを送信したりするｋ個のネットワークインターフェースＮＩＦ−ｉ（ｉ＝１，２，…，ｋ）３０１−ｉと、プロセッサとメモリからなる演算部３１５と、演算部３１５とネットワークインターフェースＮＩＦ３０１との間でパケットデータを交換するためのパケットデータ交換部３０２と、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩ  ３１４と、演算部３１５とアクセラレータ用ＬＳＩ  １１３との間のデータの交換を行うデータ交換部３１３と、から構成される。
【００２９】
演算部３１５は、ネットワークから受信したパケットを一時的に蓄積する受信バッファモジュール３０３と、ネットワークに向けて送信するパケットを送信前に一時的に蓄積する送信バッファモジュール３０４と、実施例１と２に記載の仕分け部１０４，抽出部１０５，送信部１０６，待機部１０７，受信部１０８，データ再構成部１０９，集約部１１０と同一の機能を備える仕分けモジュール３０６，抽出モジュール３０７，送信モジュール３０８，待機モジュール３０９，受信モジュール３１０，データ再構成モジュール３１１，集約モジュール３１２とから成るアクセラレータモジュール３１６と、通信装置３００内部のパケットやデータの転送を制御するアクセラレータ制御モジュール３０５とから構成される。
【００３０】
仕分けモジュール３０６は、アクセラレータモジュール３１６に入力されたデータのうちアクセラレータ処理に必要なデータだけを取得する。取得したデータは抽出モジュール３０７へと転送する。不要なデータは集約モジュール３１２へ転送する。抽出モジュール３０７は、転送されてきたデータから演算に必要な箇所を抽出して、抽出したデータを送信モジュール３０８へと転送する。抽出モジュール３０７に転送されてきたデータは、待機モジュール３０９へと転送され、アクセラレータ用ＬＳＩ  ３１４でのコンピューティング処理が完了するまで待機する。送信モジュール３０８は、抽出したデータを複数個バルク化してアクセラレータ用ＬＳＩ  ３１４に転送する。受信モジュール３１０は、アクセラレータ用ＬＳＩ  ３１４からバルク化された複数個の処理後データを受け取り、１つずつデータ再構成モジュール３１１へと転送する。データ再構成モジュール３１１は、受信モジュール３１０から処理後データを受け取ると、対応するデータを待機モジュール３０９から読出し、処理後データと合わせて再構成したデータを集約モジュール３１２へと出力する。集約モジュール３１２は、データ再構成モジュール３１１が再構築したデータや、仕分けモジュール３０６がアクセラレータ処理に不要と判断したデータを出力する。
【００３１】
ネットワークから受信したパケットは、パケットデータ交換部３０２経由で受信バッファモジュール３０３に蓄積される。受信バッファモジュール３０３に蓄積されたパケットは、アクセラレータ制御モジュール３０５経由で、または直接アクセラレータモジュール３０６へと転送される。アクセラレータ制御モジュール３０５経由でアクセラレータモジュール３０６へ転送する場合は、アクセラレータ制御モジュール３０５において、パケットに対してコンピューティング処理をしてから、アクセラレータモジュール３０６へ転送する。
【００３２】
アクセラレータモジュール３０６から出力されたデータは、アクセラレータ制御モジュール３０５経由で、または直接送信バッファモジュール３０４へと転送される。直接送信バッファモジュール３０４へと転送する場合は、出力データがネットワークに向けて送信可能なパケット形式となっている。アクセラレータ制御モジュール３０５経由で送信バッファモジュール３０４へと転送する場合は、アクセラレータ制御モジュール３０５で、出力データに対してコンピューティング処理をしてネットワークに向けて送信可能なパケット形式にしてから、送信バッファモジュール３０４へ転送される。転送されたパケットは、送信バッファモジュール３０４に一旦蓄積される。パケットデータ交換モジュール３０２は、送信バッファモジュール３０４に蓄積されたパケットを、ネットワークインターフェースＮＩＦ３０１経由でネットワークに向けて出力する。
【００３３】
以上により、複数のデータを並列処理でき、処理中はデータ入出力を受け付けないアクセラレータ用ＬＳＩを、通信装置に搭載して、通信ネットワーク上でデータセンタの処理の一部を高速化するアクセラレータ装置を、ソフトウェア実装により実現することが可能となる。
【符号の説明】
【００３４】
１００…装置、２００…装置、３００…装置、４０１…データ、４０２…データ
【図１】
2012003360.tif 000003
【図２】
2012003360.tif 000004
【図３】
2012003360.tif 000005
【図４】
2012003360.tif 000006
【図５】
2012003360.tif 000007
【図６】
2012003360.tif 000008