(57)【特許請求の範囲】
【請求項１】
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、
ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、
ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させるリソースマネージャと、を有し、
前記リソースマネージャは、前記サーバコンピュータおよび前記アクセラレータの動作中において、前記サーバコンピュータまたは前記アクセラレータの途中の処理結果の内容が変動して所定の条件に合致するようになったか否か、前記ユーザからの要求情報が変更されたか否か、環境に関する情報である環境情報が変動して所定の条件に合致するようになったか否か、および、前記サーバコンピュータまたは前記アクセラレータのリソースの利用量に関する情報であるリソース利用状況情報の内容が変動して所定の条件に合致するようになったか否かのいずれかを判定し、前記サーバコンピュータまたは前記アクセラレータのリソースの利用状況として、前記リソースの割り当て量、前記リソースの割り当て場所、および、前記リソースの割り当ての設定値のいずれかの変更が必要と判定された場合には該リソースの利用状況を変更し、必要と判定されなかった場合には該リソースの利用状況を変更せずに、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更し、変更後のソフトウェア機能の内容またはハードウェア機能の内容で前記サーバコンピュータまたは前記アクセラレータに処理を継続させる、
サービス提供システム。
【請求項２】
請求項１に記載のサービス提供システムにおいて、
前記アクセラレータが複数あり、
前記複数のアクセラレータを互いに接続し、互いにデータを通信させるためのアクセラレータ間接続部をさらに有する、
サービス提供システム。
【請求項３】
請求項１または２に記載のサービス提供システムにおいて、
前記アクセラレータは、再構成可能なハードウェア回路として１以上のタイルブロック部を有し、
前記タイルブロック部は、１以上のタイル処理部と、該タイル処理部を自身のタイルブロック部の外部と接続するタイル制御部と、を備える、
サービス提供システム。
【請求項４】
請求項３に記載のサービス提供システムにおいて、
ユーザから、画像が入力されて該画像の画像処理のサービスを要求され、
前記タイル処理部は、
前記画像を入力し特徴抽出処理を行い特徴量情報を出力する第１のタイル処理部と、
前記第１のタイル処理部から出力された特徴量情報を入力し物体識別処理を行い識別結果を出力する第２のタイル処理部と、を含む、
サービス提供システム。
【請求項５】
請求項４に記載のサービス提供システムにおいて、
前記第１のタイル処理部は、前記特徴抽出処理として、ＨＯＧ特徴量を抽出する処理を行い、
前記第２のタイル処理部は、前記物体識別処理として、ＡｄａＢｏｏｓｔ識別処理を行う、
サービス提供システム。
【請求項６】
サービス提供システムによるサービス提供方法であって、
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、
ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、
リソースマネージャと、を設け、
前記リソースマネージャが、
ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させるステップと、
前記サーバコンピュータおよび前記アクセラレータの動作中において、前記サーバコンピュータまたは前記アクセラレータの途中の処理結果の内容が変動して所定の条件に合致するようになったか否か、前記ユーザからの要求情報が変更されたか否か、環境に関する情報である環境情報が変動して所定の条件に合致するようになったか否か、および、前記サーバコンピュータまたは前記アクセラレータのリソースの利用量に関する情報であるリソース利用状況情報の内容が変動して所定の条件に合致するようになったか否かのいずれかを判定し、前記サーバコンピュータまたは前記アクセラレータのリソースの利用状況として、前記リソースの割り当て量、前記リソースの割り当て場所、および、前記リソースの割り当ての設定値のいずれかの変更が必要と判定された場合には該リソースの利用状況を変更し、必要と判定されなかった場合には該リソースの利用状況を変更せずに、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更し、変更後のソフトウェア機能の内容またはハードウェア機能の内容で前記サーバコンピュータまたは前記アクセラレータに処理を継続させるステップと、を実行する、
サービス提供方法。
【請求項７】
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、に接続されたリソースマネージャであって、
ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させる処理内容制御部と、
前記サーバコンピュータまたは前記アクセラレータの処理結果を取得する結果データ取得部と、を有し、
前記処理内容制御部は、前記サーバコンピュータおよび前記アクセラレータの動作中において、前記サーバコンピュータまたは前記アクセラレータの途中の処理結果の内容が変動して所定の条件に合致するようになったか否か、前記ユーザからの要求情報が変更されたか否か、環境に関する情報である環境情報が変動して所定の条件に合致するようになったか否か、および、前記サーバコンピュータまたは前記アクセラレータのリソースの利用量に関する情報であるリソース利用状況情報の内容が変動して所定の条件に合致するようになったか否かのいずれかを判定し、前記サーバコンピュータまたは前記アクセラレータのリソースの利用状況として、前記リソースの割り当て量、前記リソースの割り当て場所、および、前記リソースの割り当ての設定値のいずれかの変更が必要と判定された場合には該リソースの利用状況を変更し、必要と判定されなかった場合には該リソースの利用状況を変更せずに、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更し、変更後のソフトウェア機能の内容またはハードウェア機能の内容で前記サーバコンピュータまたは前記アクセラレータに処理を継続させる、
リソースマネージャ。
【請求項８】
コンピュータを、請求項７に記載のリソースマネージャとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザから要求されたサービスを提供するサービス提供システム、サービス提供方法、リソースマネージャ、プログラムに関する。
【背景技術】
【０００２】
（１）一般的なデータセンタでは、ネットワークを介して１つまたは複数のサーバコンピュータが接続し、高速かつ大容量の情報処理が行われ、多数のユーザにサービスを提供している。近年、ネットワークの高速・広帯域化に伴い、大容量かつリアルタイム処理が必要なデータが増加してきている。これに対し既存システムでは、特定のサーバコンピュータに処理負荷が集中することを避けるため、負荷分散機能を持たせて、処理負荷を複数のサーバコンピュータに分散させる方法が取られている（非特許文献１）。しかし、既存のシステムではデータ処理をサーバコンピュータ上のソフトウェアで行なっているため、処理の複雑化や処理量の増大により負荷分散させても処理が困難になるという問題があった。
（２）処理すべき処理量の増加に対する対応方法として、ハードウェアのアクセラレータをサーバコンピュータに接続する手段がある（非特許文献２）。既存のハードウェアアクセラレータは、ソフトウェア処理よりも高速かつ低消費電力である利点を持つが、機能が特定の処理に固定化されているため、汎用性が低いという問題があった。
（３）科学計算において、複数のサーバコンピュータと複数のアクセラレータを用いるシステムもある。このとき、全てのサーバコンピュータと全てのアクセラレータは、唯一つの科学計算課題の演算処理に利用される（特許文献１）。そのため、複数のユーザからの異なる要求に対して、並列に異なる処理を行うことができないという問題があった。
（４）画像を入力し、HOG特徴抽出処理を行い、得られた特徴量情報に対してRealAdaBoost識別処理を行い、物体の識別を行う画像認識処理がある（非特許文献３）。しかし、この画像認識処理は、計算量が膨大であるため、複数の映像入力を同時にリアルタイム画像処理して結果を複数同時に出力することが困難であるという問題があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第4477959号公報
【非特許文献】
【０００４】
【非特許文献１】「クラウドコンピューティング  スケールアウトの技術」、情報処理学会誌、2009年11月号、Vol.50、No.11、p.1080-1085
【非特許文献２】「アクセラレータ、再び  アクセラレタ技術の影と光」、情報処理学会誌、2009年2月号、Vol.50、No.2、p.95-99
【非特許文献３】「人検出のためのRealAdaBoostに基づくHOG特徴量の効率的な削減法」、情報処理学会、研究報告CVIM、2009年6月、松島ら
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、従来のサービス提供システムにおいては、多数のユーザからの大容量な処理を高速に実行できず、汎用性が低いという課題があった。
【０００６】
そこで、本発明の目的は、多数のユーザからの大容量な処理を高速に実行可能な、高い汎用性・柔軟性を持つサービス提供システムを実現することができる技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のサービス提供システムは、
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、
ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、
ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させるリソースマネージャと、を有し、
前記リソースマネージャは、前記サーバコンピュータまたは前記アクセラレータの処理結果に基づいて、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更する。
【０００８】
本発明のサービス提供方法は、
サービス提供システムによるサービス提供方法であって、
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、
ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、
リソースマネージャと、を設け、
前記リソースマネージャが、ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させるステップと、
前記リソースマネージャが、前記サーバコンピュータまたは前記アクセラレータの処理結果に基づいて、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更するステップと、を有する。
【０００９】
本発明のリソースマネージャは、
ソフトウェア機能をソフトウェアプログラムに従って実行する１以上のサーバコンピュータと、ハードウェア機能を実行可能なハードウェア回路を再構成可能に構築して該ハードウェア機能を実行する１以上のアクセラレータと、に接続されたリソースマネージャであって、
ユーザから要求されたサービスの提供に必要な機能をソフトウェア機能とハードウェア機能とに振り分け、ソフトウェア機能を前記サーバコンピュータに割り当てて実行させると共に、ハードウェア機能を前記アクセラレータに割り当てて実行させる処理内容制御部と、
前記サーバコンピュータまたは前記アクセラレータの処理結果を取得する結果データ取得部と、を有し、
前記処理内容制御部は、前記サーバコンピュータまたは前記アクセラレータの処理結果に基づいて、前記サーバコンピュータに割り当てたソフトウェア機能の内容または前記アクセラレータに割り当てたハードウェア機能の内容を変更する。
【００１０】
本発明のプログラムは、
コンピュータを、前記リソースマネージャとして機能させるためのものである。
【発明の効果】
【００１１】
本発明によれば、サーバコンピュータによるソフトウェア処理と、ハードウェアを用いたアクセラレータによるハードウェア処理と、を組み合わせることにより、負荷の大きい処理はアクセラレータに割り当てることができるため、多数のユーザからの大容量かつリアルタイム処理が必要な処理に対して対応できるようになる。
【００１２】
また、ハードウェアのアクセラレータとして、従来のような機能が固定されたハードウェアではなく、再構成可能なハードウェア（FPGA等）を用いたアクセラレータとすることにより、処理高速化とともに高い汎用性・柔軟性を持つシステムを実現することができる。
【００１３】
また、アクセラレータとして、サービス動作中に異なる機能回路をハードウェア上に再構成できるようにすることにより、複数のユーザからの異なる要求に対しても、サービスを止めることなく、高速な処理を並列かつ機能を変更して処理を実行することができる。
【００１４】
したがって、多数のユーザからの大容量な処理を高速に実行可能な、高い汎用性・柔軟性を持つシステムを実現することができるという効果が得られる。
【００１５】
また、処理実行中であっても、サーバコンピュータやアクセラレータの処理内容を処理結果に基づいて最適な状態に変更することができるという効果が得られる。
【図面の簡単な説明】
【００１６】
【図１−１】本発明の第１の実施形態のサービス提供システムの構成を示す図である。
【図１−２】図１−１に示したアクセラレータの構成を示す図である。
【図１−３】図１−１に示したリソースマネージャ、サーバコンピュータ、およびアクセラレータの構成を示す図である。
【図１−４】図１−１に示したリソースマネージャの処理手順を説明するフローチャートである。
【図２−１】本発明の第２の実施形態のサービス提供システムの構成を示す図である。
【図２−２】図２−１に示したアクセラレータの構成を示す図である。
【図３−１】本発明の第３の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図３−２】本発明の第３の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図３−３】本発明の第３の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図３−４】本発明の第３の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図３−５】本発明の第３の実施形態のサービス提供システムの具体的な処理例を説明する図である。
【図４−１】本発明の第４の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図４−２】本発明の第４の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図４−３】本発明の第４の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【図４−４】本発明の第４の実施形態の再構成ハードウェア処理部内のタイル処理部の接続例を示す図である。
【発明を実施するための形態】
【００１７】
以下に、本発明を実施するための形態について図面を参照して説明する。
（１）第１の実施形態
図１−１〜図１−４は、本発明の第１の実施形態を説明する図である。
【００１８】
図１−１に示すように、本実施形態のサービス提供システムは、１つまたは複数のサーバコンピュータ２０と、リソースマネージャ３０と、１つまたは複数のアクセラレータ４０と、サーバ・アクセラレータ間接続部５０と、を有している。また、アクセラレータ４０は、内部データ入出力制御部４１と、外部データ入出力制御部４２と、再構成ハードウェア処理部４３と、を有している。
【００１９】
また、図１−２に示すように、再構成ハードウェア処理部４３は、タイル間接続部４３１と、１つまたは複数のタイルブロック部４３２と、を有している。また、タイルブロック部４３２は、１つまたは複数のタイル処理部４３３と、タイル制御部４３４と、を有している。
【００２０】
また、図１−３に示すように、リソースマネージャ３０は、処理内容管理ＤＢ３１と、処理内容制御部３２と、結果データ取得部３３と、を有している。また、サーバコンピュータ２０は、ソフトウェア（ＳＷ）処理管理部２１を有し、アクセラレータ４０は、ハードウェア（ＨＷ）処理管理部４４を有している。
【００２１】
本実施形態のサービス提供システムは、ユーザ端末１０からのサービス要求に対して、サーバコンピュータ２０および再構成ハードウェア処理部４３の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザに要求されたサービスを提供するシステムである。ユーザ端末１０は１つまたは複数あり、ユーザはユーザ端末１０から同時または別々のタイミングでサービスを要求できる。ユーザ端末１０から送られたサービス要求は、ネットワーク（ＮＷ）を経由して、本システムに入力される。
【００２２】
リソースマネージャ３０は、ユーザからのサービス要求を受け取り、要求されたサービスの提供に必要な機能を、ＳＷ機能とＨＷ機能に分け、それら機能の処理内容を制御する。リソースマネージャ３０内の結果データ取得部３３は、本システムから得られる結果データをフィードバックし、その結果データに関する情報を、リソースマネージャ３０内の処理内容制御部３２に送ることができる。処理内容制御部３２は、ユーザからの要求情報に加え、結果データに関する情報も入力して、それらの情報の変化に応じて、サーバコンピュータ２０およびアクセラレータ４０での処理内容も必要に応じて変化させて制御することができる。処理内容管理ＤＢ３１は、処理内容の進捗状況について、リアルタイムに保持・管理する。また、処理内容管理ＤＢ３１は、ＳＷリソースの利用状況と、ＨＷリソースの利用状況についても、保持・管理する。処理内容制御部３２で決定される処理内容は、ＳＷ機能はＳＷ処理管理部２１を介してサーバコンピュータ２０に割り当て、ＨＷ機能はＨＷ処理管理部４４を介してアクセラレータ４０に割り当てる。
【００２３】
ＳＷリソースとは、例えば、１つまたは複数あるサーバコンピュータ２０における、CPU、内部メモリ、外部記憶装置などのリソースが挙げられる。また、ＨＷリソースとは、例えば、１つまたは複数あるアクセラレータ４０における、処理回路の面積、メモリ容量、記憶装置容量、処理回路間やアクセラレータ４０間の配線量などのリソースが挙げられる。それらリソースの利用状況とは、例えば、リソースの割り当て量、割り当て場所、割り当ての設定値などの情報が挙げられる。
【００２４】
処理内容制御部３２は、処理内容管理ＤＢ３１が持つＳＷリソースの利用状況を参照しながら、サーバコンピュータ２０上で空いている最適なＳＷリソースを選出した上で、割り当てるソフトウェア機能をサーバコンピュータ２０上でＳＷ処理するように指示する。同様に、処理内容管理ＤＢ３１が持つＨＷリソースの利用状況を参照しながら、アクセラレータ４０上で空いている最適なＨＷリソースを選出した上で、当該ハードウェア機能をアクセラレータ４０上でＨＷ処理するように指示する。処理内容制御部３２は、指示した内容に基づき処理内容管理ＤＢ３１を更新する。
【００２５】
また、リソースマネージャ３０の処理内容制御に従って、サーバコンピュータ２０上でのＳＷ処理結果や処理条件の情報は、そのままサーバコンピュータ２０内で次のＳＷ処理に使うこともできるし、次の処理がＨＷ処理であればアクセラレータ４０に送信しアクセラレータ４０上でＨＷ処理に使うこともできる。同様に、リソースマネージャ３０の処理内容制御に従って、アクセラレータ４０上でのＨＷ処理結果や処理条件の情報は、そのままアクセレレータ４０内で次のＨＷ処理に使うこともできるし、次の処理がＳＷ処理であればサーバコンピュータ２０に送信しサーバコンピュータ２０上でＳＷ処理に使うこともできる。サーバコンピュータ２０とアクセラレータ４０間で処理を接続する場合は、サーバ・アクセラレータ間接続部５０を介して必要な情報を送受信することができる。
【００２６】
リソースマネージャ３０では、ＳＷリソースおよびＨＷリソースの利用状況の情報と、処理内容の情報を管理することにより、サーバコンピュータ２０上では、どこのソフトウェア資源がどの程度利用されているかを把握でき、またアクセラレータ４０上では、どこのハードウェア資源がどの程度利用されているかを把握できるので、ユーザ要求を実行するために必要な処理機能に対して、効率的な機能の割り当て管理と処理の制御を行うことができる。
【００２７】
さらに、リソースマネージャ３０では、そのようなユーザ要求情報とリソース利用状況に基づいて制御を行うだけでなく、自身の当該システムの処理によって得られた処理結果データの情報も活用して、その情報に基づき処理内容の制御を行うことができる。また、日時、場所などの環境情報（ユーザ要求情報や結果データ情報ではないその他の情報）に基づいて処理内容の制御を行うこともできる。
【００２８】
リソースマネージャ３０内における具体的な処理手順の例について、フローチャートを図１−４に示す。
【００２９】
ユーザ要求情報（ステップＳ１０１）、リソース利用状況情報（ステップＳ１０２）、環境情報（ステップＳ１０３）、および結果データ情報（ステップＳ１０４）のいずれかもしくは複数の情報に基づいて、処理内容を構成する（ステップＳ１０５）。処理内容の構成とは、ユーザ要求情報に従うために必要なＳＷ処理、ＨＷ処理の内容を決定することを意味する。その決定に際し、リソース利用状況の変更が必要になった場合は（ステップＳ１０６のＹｅｓ）、リソース利用状況の変更処理を行う（ステップＳ１０７）。次に、処理内容に従い、ＳＷ機能はサーバコンピュータ２０に割り当て、ＨＷ機能はアクセラレータ４０に割り当てる（ステップＳ１０８）。次に、サーバコンピュータ２０、アクセラレータ４０に対し、実行することが決定されたＳＷ処理、ＨＷ処理の指示を出す（ステップＳ１０９，Ｓ１１０）。サーバコンピュータ２０で行うＳＷ処理の結果として得られる結果データは、リソースマネージャ３０にフィードバックして入力することができる。またアクセラレータ４０で行うＨＷ処理の結果として得られる結果データは、リソースマネージャ３０にフィードバックして入力することができる。いずれかの結果データだけ入力することもできるし、両方の結果データを入力することもできる。またリソースマネージャ３０が必要と指示したときだけ入力させることもできる。その後、全てのＳＷ機能が終了していない場合（ステップＳ１１１のＮｏ）や、全てのＨＷ機能が終了していない場合（ステップＳ１１２のＮｏ）は、ステップＳ１０６に戻る。全てのＳＷ機能とＨＷ機能が終了した場合は（ステップＳ１１３のＹｅｓ）、終了処理を行う（ステップＳ１１４）。
【００３０】
リソース利用状況の変更が発生する例としては、ユーザ要求が変更された場合、環境情報が変動しリソースマネージャ３０等が定める条件に合致するようになった場合、処理内容管理ＤＢ３１が持つリソース利用状況の内容が変動しリソースマネージャ３０等が定める条件に合致するようになった場合、また自システムの処理結果である結果データの内容が変動しリソースマネージャ３０等が定める条件に合致するようになった場合などが考えられる。このような時にリソース利用状況を変更して処理を進めることで、リソースの利用を効率化することが可能になる。サーバコンピュータ２０でリソース利用を変更することはソフトウェアであることから容易に可能であるとともに、アクセラレータ４０でリソース利用を変更することもアクセラレータ４０の中に再構成可能ハードウェアを利用して構築しておくことで、ハードウェアであっても変更は可能となる。
【００３１】
ここで、処理内容の構成を行う場合、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件によっては、すべてをＳＷ機能で実行する場合もあるし、すべてをＨＷ機能で実行する場合もあるし、両方混在する場合も考えられる。また、混在する場合でも、複数のＳＷ機能と複数のＨＷ機能が代わる代わる組み合わさる場合もあるし、部分的にＳＷ機能またＨＷ機能のいくつかが並列に処理されたり、少しずれてパイプライン処理されたりすることも容易に考えられる。
【００３２】
そのような機能を有する処理内容制御部３２の具体的な実現例としては、プログラム言語（例えば、C言語など）による記述や、スクリプト言語（例えば、Perl、Python、Ruby、Lua、Java（登録商標）、LISP、AWK、Tcl、Windows（登録商標）のコマンドラインシェル、UNIX（登録商標）の各種シェルスクリプト、AppleScript、など）による記述を１つもしくは複数用いることができ、様々なアルゴリズムの処理内容を実行可能である。
【００３３】
また、サーバコンピュータ２０を制御する場合でも、アクセラレータ４０を制御する場合でも、リソースマネージャ３０からの制御用インタフェース（API）を規定しておくことにより、リソースマネージャ３０ではその処理内容を自由に変更でき、またサーバコンピュータ２０側やアクセラレータ４０側ではそのインタフェースを守りさえすれば、任意に処理内容の構成等を変更することが可能である。すなわち、後から新しいサーバコンピュータ２０上のＳＷのプログラムを追加や変更してもリソースマネージャ３０の利用ルールを変えなくて済む利点があるし、また新しいアクセラレータ４０上のＨＷのタイル処理部４３３を追加や変更してもリソースマネージャ３０の利用ルールを変えなくて済む利点があるし、これによりいずれの場合も既存のアプリケーションは変更せずにそのまま利用できる。
【００３４】
ここで、タイル処理部４３３の追加とは、現在利用されていない（処理内容も書き込まれていないか、もしくは利用していないが何らかの処理内容が書き込まれている）タイル処理部４３３に、必要とする処理内容の回路を書き込んで利用することである。
【００３５】
また、タイル処理部４３３の変更とは、現在利用しているタイル処理部４３３に書き込まれた処理内容を、必要とする別の処理内容に書き換えて利用することである。変更の場合は、現在利用している対象タイル処理部４３３と同じ処理内容を持つ別のタイル処理部４３３に配線等の接続関係を迂回させて（切り替えて）その別のタイル処理部４３３に処理を担当させ、対象タイル処理部４３３へ新しい処理内容を書き込み、書き込みが終わったらその元の対象タイル処理部４３３に配線等の接続関係を戻し処理も復活させればよい。または、書き込みが終わった後は、戻さないでそのまま別の新しいタイル処理部４３３で処理させておいてもよい。迂回しようとしても迂回して利用可能な別のタイル処理部４３３がない場合は、対象タイル処理部４３３の書き込み中にはその処理を中断し、書き込み後に処理を復活させてもよい。
【００３６】
処理内容制御部３２での具体的な制御方法例を以下に示す。処理内容制御部３２では、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件に基づいて、サーバコンピュータ２０やアクセラレータ４０の処理内容を変更する。
【００３７】
環境情報を用いた例として、例えば、ある時間（または日付、季節など）になった時に、自動で、サーバコンピュータ２０であれば処理するプログラムの種類を切り替えたり、アクセラレータ４０であればタイル処理部４３３の中身（ハードウェアによる処理内容）を切り替えたりすることによって、より適した処理を行うように自動変更することができる。具体的には、昼の時間帯は昼用アルゴリズムを使い、夜の時間帯は夜用アルゴリズムを使うことで、画像処理等の処理内容（学習データ等）を適したものに自動で変えることができる。時間以外でも、処理時の天候情報（天気、温度、湿度など）に基づいて、処理内容を切り変えることができる。また、例えば映像を処理する場合、その入力映像を撮影したカメラの場所や背景が変わった時に、その場所や背景に適した処理内容に変更することができる。
【００３８】
その場所や背景に適した処理内容を決定する例としては、例えばカメラの場所が屋外か屋内か、背景がシンプルな映像か複雑な映像か、光（照明や太陽）がどのような向きでどの程度当たっている場所か、などの撮影条件等の違い（度合い）によって、画像処理する際の閾値等のパラメータをその場所の条件に適した値（例えば、背景や物体の明るさに応じて検出アルゴリズムのパラメータを変えたり、明るさを調整するフィルタ処理をほどこしたり、また背景の色合いや複雑度に応じてその背景に適した学習データに変えて画像認識処理を行うようにしたりすればよい）に設定・変更することで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。また、その場所の映像中に検出したい物体（人や車など）について何がどの程度の数あるか、その物体はどの程度の大きさか、またその映像中の背景として（検出したい物体かどうかを問わず）動く物体があるか、などの撮影場所の条件の違いによって学習データや画像処理時のパラメータを変えることで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。これらのようなパラメータや学習データ等の変更は、リソースマネージャ３０が入力された映像に応じて判断し、より精度の高くなる状態に調整することができる。この際、カメラの場所の変化が検出されたことをトリガーとして、パラメータや学習データ等の変更を行うようにしてもよい。また、カメラの場所とパラメータや学習データ等とを対応付けて記憶したデータベースを予め用意しておき、カメラの場所の変化が検出された場合に、その場所に応じたパラメータや学習データ等をデータベースから読み出し、利用するようにしてもよい。
【００３９】
なお、背景の情報を取得する方法の例としては、例えば入力映像中の色に関する情報（RGBやHSVの割合や全体の明るさ等）を測定したり、入力映像中で時系列の変化を比較して動きのない領域（オプティカルフロー等の画像処理により容易に抽出可能であり、カメラ自体が動いている場合はその既知のカメラの動きを差し引けば同様に可能である）を背景領域として抽出したりすることが容易に可能である。
【００４０】
また、カメラの場所もしくはその変化を取得する方法としては、例えばカメラにGPS機能を搭載し常時カメラの地理的な位置をシステムが（リソースマネージャ３０が）把握することは容易に可能である。また、ユーザが持ち運び可能なハンディカメラやモバイル機器のような移動可能なカメラであれば、ユーザがその場所の情報を手動入力したり、場所（エリア）のリスト一覧から選択して入力したりすることにより、ネットワークを介してリソースマネージャ３０はそのカメラの場所を容易に把握することが可能である。そのような移動可能なカメラとしては、ユーザが手に持って常に動いている場合や、USBカメラや監視カメラのように利用時は場所を固定するが、取り外して設置場所を移動する場合や、首振り可能な監視カメラのように場所は同じでカメラの向きだけ変えられる場合などが考えられる。
【００４１】
結果データ情報を用いた例として、例えばＳＷまたはＨＷで映像処理を実行させた場合、その結果データをリソースマネージャ３０にフィードバックさせた時、リソースマネージャ３０が、その結果からＳＷのプログラムの種類または処理パラメータを変更した方がよいと判断したら、もしくはＨＷのタイル処理部４３３の処理内容の種類または処理パラメータを変更した方がよいと判断したら、リソースマネージャ３０は自動的に（自己判断で）サーバコンピュータ２０またはアクセラレータ４０へ処理内容を変更（種類の変更または処理パラメータの変更）するように指示を出すことが可能である。
【００４２】
リソースマネージャ３０がこれらの変更をした方がよいと判断する場合の例としては、映像中から何かの物体（人や車など）を検出している時に、例えば結果データ情報として検出数が得られる場合に、その検出数が明らかに多過ぎたり（常に最大値だったり）、またはほとんど検出できなかったり（小さ過ぎたり常にゼロだったり）した時に、パラメータとして検出時の閾値を変更すべきと判断した場合、それを処理しているＳＷまたはＨＷに対して閾値の変更（検出数が多過ぎる場合は識別処理の閾値を上げ（下げ）ていき、少な過ぎる場合は閾値を下げ（上げ）ていけばよい）を実行すればよい。また他の例として、検出する物体のサイズによって処理が異なる場合に、初めは複数のサイズで並行して複数の検出処理を行わせ、ある程度の時間処理した後に（閾値等を前述のように変えても）検出されない（検出数がゼロのままの）サイズ設定の処理があれば、その映像ではそのサイズの検出処理は必要ないと判断し、処理を削除するようにしてもよい。これにより、映像に多く映る物体のサイズを推定したり、また処理のリソースを最小限に抑えることが可能になる。また、結果データ情報として物体検出座標が得られる場合に、その検出座標が画像上で一定の領域内のみである時は、画像上のその領域以外を対象とする処理は冗長な処理と判断して処理を省略（または停止）するようにＳＷまたはＨＷへ指示してもよい。これにより、処理量や消費電力を削減することが可能になる。
【００４３】
ユーザ要求情報を用いた例として、同じユーザがサービスを受けている途中で、映像等の外部データの量や種類を変更する要求を出してきた場合や、処理内容の変更を要求してきた場合に、リソースマネージャ３０が予め定められた判断手順に基づいて、サーバコンピュータ２０上やアクセラレータ４０上の処理内容を変更できるようにすることによって、それら要求情報の変更に対して自動的に（ユーザによる作業を介さずに）対応することが可能である。その判断手順の内容は、リソースマネージャ３０上でプログラム言語やスクリプト言語等を用いることで、柔軟な設定は容易に可能である。また、具体的なユーザ要求の例として、ユーザが処理したい映像（カメラ）数を増やしたい（減らしたい）という要求や、映像から検出したい物体の種類を（例えば人検出から車検出に）変えたいという要求などがあった場合、従来はＳＷのみを用いてプログラムの種類やパラメータを自動的に（予め定められた判断手順に基づいて）システム動作中に変更することは可能であっても、高速な処理を行うための専用ＨＷを用いた場合には、ＨＷ自体（回路そのもの）を同様に自動的にシステム動作中に変更することはできず、ユーザ要求に合うようにＨＷを変えるにはシステムの中断と手動によるＨＷ自体の入れ替えが必要であった。しかし、本システムでは、ＨＷの処理回路構成自体も（予め定めた手順に基づく範囲で）自由に変更できるため、リソースマネージャ３０がユーザ要求に基づき（ＳＷの場合と同様に）自動的にかつシステムを中断せずに処理内容を変更することが可能である。
【００４４】
リソース利用状況情報を用いた例として、ユーザ要求情報に変化がなくても、サーバコンピュータ２０上やアクセラレータ４０上での処理内容の割り当て方を変更することが考えられる。例えば、サーバコンピュータ２０上のリソースが多く利用されていてそれ以上処理を追加できなくなったような場合（処理用のマージンが少なくなるような場合）に、サーバコンピュータ２０に割り当ててあった処理内容の一部をアクセラレータ４０に移し変えたり、逆の場合にアクセラレータ４０に割り当ててあった処理内容の一部をサーバコンピュータ２０に移し変えたりすることが可能である。また、同様に、サーバコンピュータ２０間での処理内容の移し変えや、アクセラレータ４０間での処理内容の移し変えも可能である。このような仕組みにより、システムとして、より継続的に動作させられるようになる利点を持たせることができる。
【００４５】
以上のような処理内容制御部３２での具体的な制御方法例は、いずれも初めに制御方法を設定さえしておけば、人が場合に応じて手動で設定変更したりせずに、リソースマネージャ３０が自己判断で自動的に、最適な状態になるよう制御を継続的に行うことができるようになり、人の稼動が不要でかつ迅速、確実、安定した対応が可能なシステムを実現できる。
【００４６】
リソースマネージャ３０は、リソースマネージャ３０専用のコンピュータ上にリソースマネージャ３０用ソフトウェアプログラムとして搭載することもできるし、１つまたは複数のサーバコンピュータ２０上にリソースマネージャ３０用ソフトウェアプログラムとして搭載することもできる。
【００４７】
サーバコンピュータ２０は、割り当てられたソフトウェア機能を実行可能なソフトウェアプログラムを、サーバコンピュータ２０上で実行する。ソフトウェアであるので、サービス要求情報、結果データ、リソース利用状況、環境情報等の変化に基づいたリソース利用状況の変更指示に応じて、柔軟にプログラムの内容およびパラメータを変更して、実行することができる。本システム上には、１つまたは複数のサーバコンピュータ２０を有することができる。
【００４８】
サーバコンピュータ２０が複数ある場合には、それらはサーバ・アクセラレータ間接続部５０を介していずれもリソースマネージャ３０と接続できる。その場合、リソースマネージャ３０は、必要なソフトウェア機能を必要とする数のサーバコンピュータ２０に対して割り当てることができる。リソースマネージャ３０は、各サーバコンピュータ２０上の処理状況情報をサーバ・アクセラレータ間接続部５０を介して管理しておくことにより、処理に余裕のあるサーバコンピュータ２０に優先して割り当てることもできる。
【００４９】
アクセラレータ４０は、割り当てられたハードウェア機能を実行可能なハードウェア回路を、アクセラレータ４０上に構築し、当該機能を実行する。従来のハードウェアで処理を行う装置では固定の機能しか実行できなかったが、本システムでは再構成可能な（リコンフィギャラブルな）ハードウェアデバイスを搭載し、要求に応じて毎回異なる機能を実行するハードウェア回路に書き換えて利用することができる。また、複数のリソース変更指示に応じて、各々異なる回路を構成して利用できるとともに、利用しない回路の不活性化もしくは消去も行えるので、ハードウェアリソースを効率よく利用することができる。
【００５０】
また書き換えたハードウェア上で処理を行う際の各種設定パラメータについては、回路自体の変更でも設定変更できるが、回路の書き換えをせずに、回路上に設定するレジスタ値やメモリ値を、リソースマネージャ３０からの制御信号により変更することで、パラメータ値の変更をすることもできる。また回路上に物理的なディップスイッチのような固定的な変更スイッチにより手動で変更する方法も可能である。
【００５１】
アクセラレータ４０は、内部データ入出力制御部４１、外部データ入出力制御部４２、および再構成ハードウェア処理部４３から構成される、処理回路の再構成が可能なことを特徴とするハードウェアである。
【００５２】
内部データ入出力制御部４１は、サーバコンピュータ２０もしくは他のアクセラレータ４０からのデータを受信したり、また自分の再構成ハードウェア処理部４３の結果データを、サーバコンピュータ２０もしくは他のアクセラレータ４０へ送信したりするための入出力を制御する。また、リソースマネージャ３０から送信されるアクセラレータ４０内の処理パラメータ等を制御するための制御データを、アクセラレータ４０内に取り込み、再構成ハードウェア処理部４３を制御する。さらに、再構成ハードウェア処理部４３の処理結果である結果データの情報を、サーバ・アクセラレータ間接続部５０を介して、リソースマネージャ３０へ送信するために必要な入出力制御も行える。
【００５３】
例えば、サーバコンピュータ２０でソフトウェア処理された結果データをアクセラレータ４０に入力しハードウェア処理したり、アクセラレータ４０でハードウェア処理された結果データをサーバコンピュータ２０へ送ってソフトウェア処理したり、リソースマネージャ３０からの各種指示情報（パラメータ条件など）をアクセラレータ４０に入力しハードウェアの再構成時に用いたり、アクセラレータ４０からの結果データをリソースマネージャ３０にフィードバック送信したり、外部に送信したりすることができる。これらは、リソースマネージャ３０で構成する処理内容において、細分化されたＳＷ処理機能とＨＷ処理機能を実行する際に、その機能間で入出力の接続関係がある場合において、サーバ・アクセラレータ間接続部５０を介してデータを送受信することを意味する。また、リソースマネージャ３０において、システムの処理結果データに基づいて、処理内容を変更する可能性がある場合に、結果データをリソースマネージャ３０に送ることを意味する。
【００５４】
サーバコンピュータ２０とアクセラレータ４０間の送受信については、具体的には、あるＳＷ機能の出力を別のＳＷ機能で入力として用いる場合、あるＨＷ機能の出力を別のＨＷ機能で入力として用いる場合、あるＳＷ機能の出力を別のＨＷ機能で入力として用いる場合、あるＨＷ機能の出力を別のＳＷ機能で入力として用いる場合が考えられる。このような時にアクセラレータ４０上では、サーバ・アクセラレータ間接続部５０に対して、データを送信・受信するために内部データ入出力制御部４１を利用する。サーバコンピュータ２０とアクセラレータ４０間のデータ通信は、リソースマネージャ３０が管理して実行できる。
【００５５】
外部データ入出力制御部４２は、外部から直接当該システムのアクセラレータ４０に入力する外部データ（例えばカメラ映像データ、音声データ、各種センサデータ等）について、リソースマネージャ３０の指示に基づいて、サーバ・アクセラレータ間接続部５０を介してサーバコンピュータ２０に送ったり、サーバ・アクセラレータ間接続部５０を介して他のアクセラレータ４０に送ったり、自分のアクセラレータ４０内の再構成ハードウェア処理部４３に送ったりするための入出力制御を行う。また、再構成ハードウェア処理部４３で処理された結果データについて、リソースマネージャ３０の指示に基づき、リソースマネージャ３０にフィードバック送信したり、直接外部へ送ったりする場合の入出力制御を行う。外部データの入出力制御の機能は、すべてのアクセラレータ４０が装備していてもよいし、複数のアクセラレータ４０のうち任意の１個または複数個のアクセラレータ４０に装備されていてもよいし、すべてのアクセラレータ４０に装備されていなくてもよく、いずれも実行するサービスの内容に応じて変えることができる。
【００５６】
外部から入力するデータの例としては、映像、音声、センサデータ等が挙げられる。また外部へ出力するデータの例としては、映像、音声、または処理結果のデータ（値や値のリスト等）等が挙げられる。例えば複数のカメラ映像が本システムへ入力され、１つまたは複数のアクセラレータ４０に接続し入力されることが考えられる。例えば、入力画像から、ユーザが要求する物体（人物、車などの物体）をリアルタイムに検出するような画像認識処理を例とした場合、リソースマネージャ３０がその処理を割り振り、サーバコンピュータ２０上のプログラムや、アクセラレータ４０内のタイル処理部４３３においてそれぞれ割り当てられた処理を実行し、対象の物体をリアルタイムに検出することが可能になる。処理の結果得られた物体検出の結果データは、リソースマネージャ３０や、ユーザ端末１０や、ネットワーク上の他の装置に送ることも可能であるし、また外部データ入出力制御部４２を通して、外部の装置（ディスプレイ、他の処理装置等）へ送ることも可能である。
【００５７】
再構成ハードウェア処理部４３は、その内部に、１つまたは複数のタイルブロック部４３２を有し、各タイルブロック部４３２は、内部データ入出力制御部４１および外部データ入出力制御部４２とタイル間接続部４３１を介して接続している。タイルブロック部４３２は、１つまたは複数のタイル処理部４３３と、それらをタイルブロック部４３２の外部と接続するタイル制御部４３４とから構成される。
【００５８】
再構成ハードウェア処理部４３の具体的な例として、タイルブロック部４３２は、再構成可能なLSI、FPGA（Field Programmable Gate Array）などで構成できる。また、タイル処理部４３３はFPGA内に実装する単位処理回路であり、既存のIP（Intellectual Property）コアや、事前に作成した専用の論理回路ブロックや、メモリ回路ブロックなどとして構成される。またこの時、アクセラレータ４０は、１個または複数のFPGAを搭載した１枚のボード（ハードウェア基板）として構成することができ、FPGAとFPGAを接続する配線部分が再構成ハードウェア処理部４３に相当し、タイルブロック部４３２を接続するタイル間接続部４３１は、FPGAを搭載したボード上におけるFPGA間配線に相当する。タイル間接続部４３１は、再構成ハードウェア処理部４３上のすべてのタイルブロック部４３２間を任意のネットワークトポロジ（メッシュ結合、リング結合、全結合、バス結合等）で接続できる。または、再構成ハードウェア処理部４３上のすべてのタイル処理部４３３の間を任意のネットワークトポロジ（メッシュ結合、リング結合、全結合、バス結合等）で接続してもよい。これらのタイル処理部４３３の接続関係は、リソースマネージャ３０の指示に基づいて接続が再構成できる。
（２）第２の実施形態
図２−１、図２−２は、本発明の第２の実施形態を説明する図である。
【００５９】
図２−１および図２−２に示すように、本実施形態のサービス提供システムは、第１の実施形態と同じく、ユーザからのサービス要求に対して、サーバコンピュータ２０および再構成ハードウェア処理部４３の持つソフトウェア（ＳＷ）リソース、ハードウェア（ＨＷ）リソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末１０は１つまたは複数あり、ユーザはユーザ端末１０から同時または別々のタイミングでサービスを要求できる。ユーザ端末１０から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
【００６０】
本実施形態におけるリソースマネージャ３０、サーバコンピュータ２０、およびアクセラレータ４０内の内部データ入出力制御部４１、外部データ入出力制御部４２に関する具体的な内容例は、本発明の第１の実施形態の内容を包含する（本実施形態では記載省略）。
【００６１】
本実施形態では、これに加え、さらにアクセラレータ４０間を接続する専用のアクセラレータ間接続部６０を備える。また、アクセラレータ４０内には、このアクセラレータ間接続部６０と再構成ハードウェア処理部４３との間をつなぐアクセラレータ間接続入出力制御部４５を備える。
【００６２】
これは、第１の実施形態でも、サーバ・アクセラレータ間接続部５０を経由することにより、異なるアクセラレータ４０上のタイル処理部４３３どうしでデータの受け渡しを行うことは可能であるが、このサーバ・アクセラレータ間接続部５０は複数のサーバコンピュータ２０、リソースマネージャ３０、複数の外部データ入出力制御部４２、およびネットワークを介して複数のユーザ端末１０が接続されることも可能であり、さらには映像等の高速・大容量のデータが多数通信されることも可能であり、これによりサーバ・アクセラレータ間接続部５０が通信のボトルネックになる問題ともなる。そこで、特に映像等の大容量データの高速処理を行わせる可能性の高いハードウェアのアクセラレータ４０について、異なるアクセラレータ４０上のタイル間を自由に高速通信可能なように接続させるために、アクセラレータ４０間のみに、専用のアクセラレータ間接続部（専用のネットワーク）６０を備える。
【００６３】
アクセラレータ間接続部６０について、その接続方式は、任意のネットワークトポロジ（メッシュ結合、リング結合、全結合、ハイパーキューブ、または一般的なバス結合等）で接続できる。これらの接続関係は、リソースマネージャ３０の指示に基づいて接続関係が構築される。これにより、複数のアクセラレータ４０間にまたがるタイル処理部４３３どうしの接続についても、常に高速な通信を保障して処理を結合して実行することができる。
（３）第３の実施形態
図３−１〜図３−５は、本発明の第３の実施形態を説明する図である。
【００６４】
本実施形態のサービス提供システムは、第１および第２の実施形態と同じく、ユーザ端末１０からのサービス要求に対して、サーバコンピュータ２０および再構成ハードウェア処理部４３の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末１０は１つまたは複数あり、ユーザはユーザ端末１０から同時または別々のタイミングでサービスを要求できる。ユーザ端末１０から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
【００６５】
本実施形態におけるリソースマネージャ３０、サーバコンピュータ２０、およびアクセラレータ４０内の内部データ入出力制御部４１、外部データ入出力制御部４２、およびアクセラレータ間接続部６０、アクセラレータ間接続入出力制御部４５に関する具体的な内容例は、本発明の第１および第２の実施形態の内容を包含する（本実施形態では記載省略）。
【００６６】
以下具体的な処理例について説明する。
【００６７】
本実施形態は、外部からの入力データが画像または映像（カメラ映像やストリーミング映像等）の場合に関するものであり、ユーザは映像を画像処理した結果を要求し取得することができる。画像処理は、サーバコンピュータ２０上のソフトウェアでも実行することは可能であるが、例えばソフトウェアで処理が困難な場合に、ハードウェアのアクセラレータ４０で処理を実行させることにより、目的とする処理を可能にすることができる。ソフトウェアで処理が困難な場合の例としては、対象とする画像の解像度が大きい場合や、要求される画像処理のアルゴリズムが複雑で処理量が大きい場合や、要求される処理時間の制限が短い場合などが考えられる。
【００６８】
アクセラレータ４０上の再構成ハードウェア処理部４３で、このような画像処理を実行する方法について説明する。
【００６９】
再構成ハードウェア処理部４３内の１個のタイル処理部４３３（物体認識処理タイル）では、例えば画像を入力し、特徴抽出処理と物体識別処理を行い、認識された物体情報データを結果データとして出力することができる（図３−１）。また、２つのタイル処理部４３３を接続して用いることにより、１個のタイル処理部４３３（特徴抽出処理タイル）では、画像を入力し、特徴抽出処理を行い、抽出された特徴量情報を出力する処理を行い、別の１個のタイル処理部４３３（物体識別処理タイル）では、得られた特徴量情報を入力し、物体識別処理を行い、認識された物体情報データを出力することもできる（図３−２）。また、図３−２の物体識別処理タイルにおいて、そのアルゴリズム例として、学習に基づく識別処理（SVM（Support Vector Machine）、AdaBoost、部分空間法等）を行う場合は、事前に学習した学習データが必要になるが、この学習データは物体識別処理タイル内部に保持することも可能（この場合は識別処理は効率化高速化できる可能性がある利点を持つ）であるし、また別のタイル処理部４３３（学習データタイル）に保持することも可能（この場合は学習データ用のタイル処理部４３３を他の処理にも同時に利用可能となる利点を持つ）である（図３−３）。
【００７０】
また、一般に画像処理として、画像を入力し各種フィルタ処理などの前処理を行うことができる。例えば、特徴抽出処理の前に入力画像をフィルタ処理（先鋭化、平滑化、エッジ抽出、FFT等による周波数変換、等の処理）し、その結果の画像を入力画像として特徴抽出処理に入力することもできる。これにより、特徴抽出処理や物体識別処理における抽出性能や識別性能を上げることができる可能性がある。また特徴抽出処理を行うために必要な前処理である場合もある。このような前処理を実装したタイル処理部４３３（前処理タイル）を、特徴抽出処理タイルの前に接続することにより、処理を連結して実行することができる（図３−４）。
【００７１】
また、画像認識処理（物体識別処理）を行った後、クラスタリング等の後処理を行うことができる。例えば、物体識別処理の後に得られた物体情報データ（物体の座標位置情報、等）を入力として、後処理（例えば、物体個数のカウント処理、クラスタリング処理（統合処理）、時間平均処理、等）を行うことにより、さらに追加の物体情報データ（物体個数等）を得たり、クラスタリング処理（統合処理）により得られたデータから、より確からしい物体情報データ（座標位置）を取得したり、時間平均処理により誤認識した可能性のある物体情報データを減らしたり、するなどが可能であり、これにより物体認識性能を向上させることができる。このような後処理を実装したタイル処理部４３３（後処理タイル）を、物体識別処理タイルの後に接続することにより、処理を連結して実行することができる（図３−４）。もちろんこれら前処理タイルと後処理タイルを両方利用することも容易に可能である（図３−４）。
【００７２】
これらのようなタイル処理部４３３に各々異なる処理を実装し、それらを連結させることにより、様々な組み合わせの画像処理を行うことが可能である。これらのタイル処理部４３３の連結方法は、リソースマネージャ３０が、要求されている処理内容に基づき、タイル処理部４３３間の接続を切り替える処理を行ったり、新しくタイル処理部４３３を生成したり、不要なタイル処理部４３３を消去または休眠させたりすることにより、連結させて実行できる。
【００７３】
タイル処理部４３３間の接続を切り替える処理は、タイルブロック部４３２内のタイル制御部４３４や、タイルブロック部４３２間のタイル間接続部４３１の設定を変更させることにより、アクセラレータ４０内の任意の複数のタイル処理部４３３間を接続することができる。また、アクセラレータ間接続部６０を介すれば、アクセラレータ４０間にまたがる任意の複数のタイル処理部４３３間も接続することができる。
【００７４】
また、新しくタイル処理部４３３を生成する処理は、例えば再構成可能なデバイスであるFPGAであれば、FPGAが通常持つ書き換え機能を用いて、FPGA単位もしくはFPGA内の一部の領域を書き換える（書き込む）ことにより、新しいタイル処理部４３３を生成したり、不要なタイル処理部４３３を消去（または休眠）させたりすることは容易に可能である。
【００７５】
具体的な処理実施形態を図３−５に示す。これは、複数の異なる入力画像に対して、それぞれの入力画像毎にハードウェアのアクセラレータ４０上に必要な複数のタイル処理部４３３を生成し処理している例である。入力＃１，＃２，＃３に対しては、入力画像から人物を検出する処理を、入力＃４に対しては、自動車を検出する処理を行っている。
【００７６】
このとき、入力＃１はアクセラレータ（＃１）４０の中でのみタイル処理部４３３が利用されているが、入力＃２はアクセラレータ（＃１）４０とアクセラレータ（＃２）４０にまたがってタイル処理部４３３が利用できることを示している。同様に入力＃３、入力＃４についてもアクセラレータ４０間をまたがってタイル処理部４３３を利用することができる。
【００７７】
また入力＃１，＃２のように、背景が異なる場所であれば、それぞれの場所に応じた設定を予め担当するタイル処理部４３３のパラメータに設定しておくことにより、それぞれに特化して識別性能が高く、かつハードウェアにより高速な認識処理を実行できる。また、入力＃３では、人物を抽出した結果からさらにカウンタ処理により、人物の数を求めて出力したり、人物の大きさが小さいことを認識してその情報を出力したりしている。またハードウェアで並列処理しているので、入力＃１〜＃３が人物の検出処理をしている時に、入力＃４に対しては自動車を検出する処理を行うことができる。
【００７８】
また統合処理やカウンタ処理など、処理の一部をサーバコンピュータ２０側で処理させることも可能である。このときは、アクセラレータ４０で処理された結果データ（物体情報データ等）をサーバコンピュータ２０側に送信し、サーバコンピュータ２０上のソフトウェアで処理を行い結果を出力すればよい。ソフトウェアはハードウェアより処理が遅いことから、高速に処理が必要な部分はハードウェアのアクセラレータ４０に割り当て、処理が遅くても問題にならない場合やソフトウェアでも十分に高速に処理できる簡易な処理などの部分はサーバコンピュータ２０に割り当てることも可能である。
（４）第４の実施形態
図４−１〜から図４−４は、本発明の第４の実施形態を説明する図である。
【００７９】
本実施形態のサービス提供システムは、第１、第２および第３の実施形態と同じく、ユーザ端末１０からのサービス要求に対して、サーバコンピュータ２０および再構成ハードウェア処理部４３の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末１０は１つまたは複数あり、ユーザはユーザ端末１０から同時または別々のタイミングでサービスを要求できる。ユーザ端末１０から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
【００８０】
本実施形態におけるリソースマネージャ３０、サーバコンピュータ２０、およびアクセラレータ４０内の内部データ入出力制御部４１、外部データ入出力制御部４２、およびアクセラレータ間接続部６０、アクセラレータ間接続入力制御部に関する具体的な内容例は、本発明の第１、第２および第３の実施形態の内容を包含する（本実施形態では記載省略）。
【００８１】
以下具体的な処理例について説明する。
【００８２】
本実施形態は、第３の実施形態と同様に、外部からの入力データが画像または映像（カメラ映像やストリーミング映像等）の場合に関するものであり、ユーザは映像を画像処理した結果を要求し取得することができる。画像処理は、サーバコンピュータ２０上のソフトウェアでも実行することは可能であるが、例えばソフトウェアで処理が困難な場合に、ハードウェアのアクセラレータ４０で処理を実行させることにより、目的とする処理を可能にすることができる。ソフトウェアで処理が困難な場合の例としては、対象とする画像の解像度が大きい場合や、要求される画像処理のアルゴリズムが複雑で処理量が大きい場合や、要求される処理時間の制限が短い場合などが考えられる。
【００８３】
本実施形態では、特徴抽出処理としてHOG特徴量を抽出する処理を行い、また物体識別処理として、AdaBoost識別処理（RealAdaBoost識別処理を含む）を行う例である。HOG特徴抽出は、各画素位置における画素値の勾配方向と勾配強度をベースとした局所特徴量を抽出するものであり、背景、色、照明条件等に頑健な特徴量であるという利点を持ち、人物抽出等の物体認識のために使うことができることが知られている。またAdaBoostは、各々異なる特徴に着目した多数の弱い識別器を用意し、それらの多数決（または総和等）により、強い識別器を構成するものであり、検出したい物体の形状変化に頑健な学習方式の物体識別処理として使えることが知られている。一般的なAdaBoostアルゴリズムは、多数の弱識別器の出力から多数決により強識別器を作るもので、またこれを改良して、弱識別器の出力を実数値にしてそれらの総和を求めることにより強識別器を作ることにより性能向上を図ったReal AdaBoostアルゴリズム等がある。
【００８４】
タイル処理部４３３としては、第３の実施形態の特徴抽出処理をHOG特徴抽出処理に特化し、また物体識別処理をAdaBoost識別処理に特化したものである。すなわち、HOGとAdaBoostをまとめて１つのタイルで処理するHOG+AdaBoost処理タイルを生成し、これに入力画像を入力し、物体情報データを出力することができる（図４−１）。また、HOG処理タイルと、AdaBoost処理タイルを分離しておき、それを連結して処理することもできる（図４−２）。また、HOG処理を行った結果を、複数の同じ設定（もしくは異なる設定）のAdaBoost処理に並列に入力させて並列処理を行わせることもできる（図４−３）。また、反対に、HOG処理を複数並列に実行させて１個のAdaBoost処理タイルに入力させることもできる（図４−４）。図４−３、図４−４のような方法については、HOG特徴抽出処理の負荷が大きい場合に図４−４のようにHOG処理タイルを並列に利用したり、AdaBoost識別処理の負荷が大きい場合に図４−３のようにAdaBoost処理タイルを複数並列に利用したりすることができ、リソースマネージャ３０が処理負荷のバランスを考慮して効率よく組み合わせることにより、無駄の少ない効率的なハードウェア処理を実行できる。この点については、HOG処理タイルとAdaBoost処理タイルを、それぞれ特徴抽出処理と物体識別処理に置き換えた第３の実施形態においても同じような効率的な並列処理を行うことができる。
【００８５】
また、第３の実施形態と同様に、画像を入力し各種フィルタ処理などの前処理を行うことができる。例えば、HOG処理の前に入力画像をフィルタ処理（先鋭化、平滑化、エッジ抽出、FFT等による周波数変換、等の処理）し、その結果の画像を入力画像としてHOG処理に入力することもできる。これにより、HOG処理やAdaBoost処理における抽出性能や識別性能を上げることができる可能性がある。このような前処理をタイル処理部４３３に実装し、特徴抽出処理タイルの前に接続することにより、処理を連結して実行することもできる。
【００８６】
また、AdaBoost処理を行った後、クラスタリング等の後処理を行うことができる。例えば、AdaBoost処理の後に得られた物体情報データ（物体の座標位置情報、等）を入力として、後処理（例えば、物体個数のカウント処理、クラスタリング処理（統合処理）、時間平均処理、等）を行うことにより、さらに追加の物体情報データ（物体個数等）を得たり、クラスタリング処理（統合処理）により得られたデータからよりもっともらしい物体情報データ（座標位置）を取得したり、時間平均処理により誤認識した可能性のある物体情報データを減らしたり、するなどが可能であり、これにより物体認識性能を向上させることができる。このような後処理をタイル処理部４３３として実装し、AdaBoost処理を行うタイル処理部４３３の後に接続することにより、処理を連結して実行することができる。もちろんこれら前処理タイルと後処理タイルを両方利用することも容易に可能である。
【００８７】
第３の実施形態と同様に、これらのようなタイル処理部４３３に各々異なる処理を実装し、それらを連結させることにより、様々な組み合わせの画像処理を行うことが可能である。これらのタイル処理部４３３の連結方法は、リソースマネージャ３０が、要求されている処理内容に基づき、タイル処理部４３３間の接続を切り替える処理を行ったり、新しくタイル処理部４３３を生成したり、不要なタイル処理部４３３を消去または休眠させたりすることにより、連結させて実行できる。
【００８８】
タイル処理部４３３間の接続を切り替える処理は、タイルブロック部４３２内のタイル制御部４３４や、タイルブロック部４３２間のタイル間接続部４３１の設定を変更させることにより、アクセラレータ４０内の任意の複数のタイル処理部４３３間を接続することができる。また、アクセラレータ間接続部６０を介すれば、アクセラレータ４０間にまたがる任意のタイル処理部４３３間も複数接続することができる。
【００８９】
また、新しくタイル処理部４３３を生成する処理は、例えば再構成可能なデバイスであるFPGAであれば、FPGAが通常持つ書き換え機能を用いて、FPGA単位もしくはFPGA内の一部の領域を書き換える（書き込む）ことにより、新しいタイルを生成したり、不要なタイルを消去（または休眠）させたりすることは容易に可能である。
【００９０】
具体的な処理実施形態は図３−５において特徴抽出をHOGに、物体識別をAdaBoostに置き換えた（特化した）場合に相当する。入力＃１，＃２，＃３に対しては、入力画像から人物を検出する処理を、入力＃４に対しては、自動車を検出する処理を行っている。
【００９１】
このとき、入力＃１はアクセラレータ（＃１）４０の中でのみタイル処理部４３３が利用されているが、入力＃２はアクセラレータ（＃１）４０とアクセラレータ（＃２）４０にまたがってタイル処理部４３３が利用できることを示している。同様に入力＃３、入力＃４についてもアクセラレータ４０間をまたがってタイル処理部４３３を利用することができる。
【００９２】
また入力＃１，＃２のように、背景が異なる場所であれば、それぞれの場所に応じた設定を予め担当するタイル処理部４３３のパラメータに設定しておくことにより、それぞれに特化して識別性能が高く、かつハードウェアにより高速な認識処理を実行できる。また、入力＃３では、人物を抽出した結果からさらにカウンタ処理により、人物の数を求めて出力したり、人物の大きさが小さいことを認識してその情報を出力したりしている。またハードウェアで並列処理しているので、入力＃１〜＃３が人物の検出処理をしている時に、入力＃４に対しては自動車を検出する処理を行うことができる。
【００９３】
また統合処理やカウンタ処理など、処理の一部をサーバコンピュータ２０側で処理させることも可能である。このときは、アクセラレータ４０で処理された結果データ（物体情報データ等）をサーバコンピュータ２０側に送信し、サーバコンピュータ２０上のソフトウェアで処理を行い結果を出力すればよい。ソフトウェアはハードウェアより処理が遅いことから、高速に処理が必要な部分はハードウェアのアクセラレータ４０に割り当て、処理が遅くても問題にならない場合やソフトウェアでも十分に高速に処理できる簡易な処理などの部分はサーバコンピュータ２０に割り当てることも可能である。
【００９４】
本実施形態は、外部からの入力データが画像または映像（カメラ映像やストリーミング映像等）の場合に関するものであり、また、処理内容としては、特徴抽出処理としてHOG特徴量を抽出する処理を行い、また物体識別処理として、AdaBoost識別処理（RealAdaBoost識別処理を含む）を行う例である。処理内容制御部３２での具体的な制御方法例には、第１の実施形態で示したように、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件に基づいて、サーバコンピュータ２０やアクセラレータ４０の処理内容を変更することとなるが、本実施形態の場合の例について以下に示す。処理内容として、入力された映像から、物体（人や自動車など）を検出する識別処理を行う場合を例として考える。
【００９５】
環境情報を用いた例としては、例えば、これは画像認識処理であることから、昼の時間帯は昼用に特化した識別用の学習データを使い、夜は夜用に特化した識別用の学習データを使う方が識別率が高くなるので、時間によってＳＷ上のプログラムもしくはアクセラレータ４０上のタイル処理部４３３に書き込まれている処理内容を書き換えたり（もしくは既に書き込まれているタイル処理部４３３に切り替えたり）して、処理内容を最適なものに変更することが考えられる。同様に、天候情報によって学習データを変更したり（書き換えたり）、移動可能なカメラ映像の場合は、その場所や背景によって学習データを変更したりすることが考えられる。さらに、そのような環境情報の変化に応じて、画像処理のための各種パラメータ（特徴抽出処理等でのウィンドウサイズ、識別処理等での閾値処理時の閾値など）を最適になるように変更することも可能である。
【００９６】
その場所や背景に適したパラメータや学習データを決定する例としては、例えばカメラの場所が屋外か屋内か、背景がシンプルな映像か複雑な映像か、光（照明や太陽）がどのような向きでどの程度当たっている場所か、などの撮影条件等の違い（度合い）によって、画像処理する際の閾値等のパラメータをその場所の条件に適した値（例えば、背景や物体の明るさに応じて検出アルゴリズムのパラメータを変えたり、明るさを調整するフィルタ処理をほどこしたり、また背景の色合いや複雑度に応じてその背景に適した学習データに変えて画像認識処理を行うようにしたりすればよい）に設定・変更することで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。また、その場所の映像中に検出したい物体（人や車など）について何がどの程度の数あるか、その物体はどの程度の大きさか、またその映像中の背景として（検出したい物体かどうかを問わず）動く物体があるか、などの撮影場所の条件の違いによって学習データや画像処理時のパラメータを変えることで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。これらのようなパラメータや学習データ等の変更は、リソースマネージャ３０が入力された映像に応じて判断し、より精度の高くなる状態に調整することができる。この際、カメラの場所の変化が検出されたことをトリガーとして、パラメータや学習データ等の変更を行うようにしてもよい。また、カメラの場所とパラメータや学習データ等とを対応付けて記憶したデータベースを予め用意しておき、カメラの場所の変化が検出された場合に、その場所に応じたパラメータや学習データ等をデータベースから読み出し、利用するようにしてもよい。
【００９７】
なお、背景の情報を取得する方法の例としては、例えば入力映像中の色に関する情報（RGBやHSVの割合や全体の明るさ等）を測定したり、入力映像中で時系列の変化を比較して動きのない領域（オプティカルフロー等の画像処理により容易に抽出可能であり、カメラ自体が動いている場合はその既知のカメラの動きを差し引けば同様に可能である）を背景領域として抽出したりすることが容易に可能である。
【００９８】
また、移動可能なカメラの場所もしくはその変化を取得する方法としては、例えばカメラにGPS機能を搭載し常時カメラの地理的な位置をシステムが（リソースマネージャ３０が）把握することは容易に可能である。また、ユーザが持ち運び可能なハンディカメラやモバイル機器のような移動可能なカメラであれば、ユーザがその場所の情報を手動入力したり、場所（エリア）のリスト一覧から選択して入力したりすることにより、ネットワークを介してリソースマネージャ３０はそのカメラの場所を容易に把握することが可能である。そのような移動可能なカメラとしては、ユーザが手に持って常に動いている場合や、USBカメラや監視カメラのように利用時は場所を固定するが、取り外して設置場所を移動する場合や、首振り可能な監視カメラのように場所は同じでカメラの向きだけ変えられる場合などが考えられる。
【００９９】
また、結果データ情報を用いた例としては、画像識別処理の結果データとして、例えば、入力画像から得られた物体（人や自動車等）の識別個数の情報や、その識別した物体座標値（複数あればそのリスト）などが考えられる。識別個数の利用例としては、識別個数がある閾値以上となる場合は、検出人数が多すぎる（誤識別が含まれる）と判断して、識別個数を減らすように、識別処理の閾値（例えばRealAdaBoostであれば強識別器の出力値に対する最終閾値）を変更することができる。逆に、識別個数がずっと０の場合は、識別個数を増やすように、当該閾値を変更することができ、これを繰り返すことで最適な閾値になるように、リソースマネージャ３０が自動で調整することができる。
【０１００】
また、結果データ情報を用いた他の例としては、入力画像から物体を検出する際に、検出ウィンドウの最適なサイズが分からない場合に、複数のプログラムもしくはタイル処理部４３３を利用して、複数のウィンドウサイズに対する処理を並行して処理させ、得られる識別個数などの結果データから、最適なウィンドウサイズを判定する方法が考えられる。また、並行に処理させず、１つのタイル処理部４３３で１つのウィンドウサイズに対する処理を行い、その結果データ（識別個数等）から、ウィンドウサイズを増減させ、最適なウィンドウサイズに収束させる方法も考えられる。
【０１０１】
これらは、第１の実施形態と同様に、初めに制御方法（判断手順）を設定さえしておけば、人が場合に応じて手動で設定変更したりせずに、リソースマネージャ３０が自己判断で自動的に、最適な状態になるよう処理内容の変更制御を継続的に行うことができるようになり、人の稼動が不要でかつ迅速、確実、安定した対応が可能なシステムを実現できる。
【０１０２】
本発明によれば、サーバコンピュータ２０によるソフトウェア処理と、ハードウェアを用いたアクセラレータ４０によるハードウェア処理と、を組み合わせることにより、負荷の大きい処理はアクセラレータ４０に割り当てることができるため、多数のユーザからの大容量かつリアルタイム処理が必要な処理に対して対応できるようになるという効果が得られる。
【０１０３】
また、ハードウェアのアクセラレータ４０として、従来のような機能が固定されたハードウェアではなく、再構成可能なハードウェア（FPGA等）を用いたアクセラレータ４０とすることにより、処理高速化とともに高い汎用性・柔軟性を持つシステムを実現することができるという効果が得られる。
【０１０４】
また、アクセラレータ４０として、サービス動作中に異なる機能回路をハードウェア上に再構成できるようにすることにより、複数のユーザからの異なる要求に対しても、サービスを止めることなく、高速な処理を並列かつ機能を変更して処理を実行することができるという効果が得られる。
【０１０５】
また、リソースマネージャ３０として、ユーザ要求情報だけでなく、環境情報、および結果データ情報の内容や条件にも基づいて、サーバコンピュータ２０やアクセラレータ４０の処理内容を変更することができ、初めに制御方法を設定さえしておけば、途中で人が手動で設定変更する必要なく、リソースマネージャ３０が自己判断で自動的に、最適な状態になるよう制御できるようになり、人の稼動が不要、かつ迅速、確実、安定した対応が可能なシステムを実現できるという効果が得られる。
【０１０６】
また、アクセラレータ４０内の再構成可能なタイル処理部４３３に、HOG特徴抽出処理とRealAdaBoost識別処理の機能を実装することにより、複数の映像入力かつ膨大な計算量であっても、リアルタイム処理ができるという効果が得られる。
【産業上の利用可能性】
【０１０７】
本発明は、以下のようなサービスやシステムに利用可能である。
・利用者端末が通信（有線・無線問わず）を介してネットワーク上のサーバ、またはデータセンタと接続して利用する情報通信サービス。
・製造後にも再構成可能な（リコンフィギャラブルな）LSI、プロセッサ、デバイスを応用するシステム。
・映像または画像のリアルタイム処理を行うシステム。
・監視システム、見守りシステム、ディジタルサイネージ、ITSなど。
【符号の説明】
【０１０８】
１０    ユーザ端末
２０    サーバコンピュータ
２１    ソフトウェア（ＳＷ）処理管理部
３０    リソースマネージャ
３１    処理内容管理ＤＢ
３２    処理内容制御部
３３    結果データ取得部
４０    アクセラレータ
４１    内部データ入出力制御部
４２    外部データ入出力制御部
４３    再構成ハードウェア処理部
４３１    タイル間接続部
４３２    タイルブロック部
４３３    タイル処理部
４３４    タイル制御部
４４    ハードウェア（ＨＷ）処理管理部
４５    アクセラレータ間接続入出力制御部
５０    サーバ・アクセラレータ間接続部
６０    アクセラレータ間接続部
【図１−１】
0005876319.tif 000002
【図１−２】
0005876319.tif 000003
【図１−３】
0005876319.tif 000004
【図１−４】
0005876319.tif 000005
【図２−１】
0005876319.tif 000006
【図２−２】
0005876319.tif 000007
【図３−１】
0005876319.tif 000008
【図３−２】
0005876319.tif 000009
【図３−３】
0005876319.tif 000010
【図３−４】
0005876319.tif 000011
【図３−５】
0005876319.tif 000012
【図４−１】
0005876319.tif 000013
【図４−２】
0005876319.tif 000014
【図４−３】
0005876319.tif 000015
【図４−４】
0005876319.tif 000016