(57)【特許請求の範囲】
【請求項１】
再構成可能なハードウェアを用いて所定のデータの処理を行うデータ処理装置と、前記データ処理装置に所定のネットワークを介して接続され、前記データ処理装置のユーザー毎の処理の利用傾向を含むユーザー情報を収集して蓄積するデータベースを有するサーバ装置とを備えるデータ処理システムであって、
前記サーバ装置は、前記データ処理装置からのハードウェア情報の照会要求に応答して、前記データベースのユーザー情報と、前記照会要求に含まれるデータ処理装置のユーザー情報とを比較し、前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を生成するハードウェア情報生成部を備え、
前記データ処理装置は、前記生成された前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を取得して、当該取得したハードウェア情報に基づいて前記再構成可能なハードウェアを構成するハードウェア情報制御部を備えたこと特徴とするデータ処理システム。
【請求項２】
前記ハードウェア情報生成部は、前記データ処理装置のユーザー毎の処理の利用傾向に応じて、前記再構成可能なハードウェアの回路の並列度を調整して前記ハードウェア情報を生成することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記ハードウェア情報生成部は、前記データ処理装置のユーザー毎の使用頻度が所定値以上の高い機能の処理の並列度が所定値よりも高くなるように前記再構成可能なハードウェアの回路の並列度を調整することを特徴とする請求項２記載のデータ処理システム。
【請求項４】
上記ハードウェア情報生成部は、上記データ処理装置のユーザー毎の使用頻度が所定値以下の低い機能の処理の並列度が所定値よりも低くなるように上記再構成可能なハードウェアの回路の並列度を調整することを特徴とする請求項３記載のデータ処理システム。
【請求項５】
上記再構成可能なハードウェアはＦＰＧＡ（Field Programmable Gate Array）で構成され、
前記ハードウェア情報生成部は、ＯｐｅｎＣＬ（登録商標）ｆｏｒ  ＦＰＧＡを用いて前記再構成可能なハードウェアの回路の並列度を調整することを特徴とする請求項１〜４のうちのいずれか１つに記載のデータ処理システム。
【請求項６】
前記サーバ装置は、前記回路の並列度が調整されたハードウェア情報を前記データベースに登録する前に、前記データ処理装置により前記ハードウェア情報を有する前記再構成可能なハードウェア処理部が所定の条件を満たすことを確認した後、前記回路の並列度が調整されたハードウェア情報を前記データベースに登録することを特徴とする請求項２〜５記載のうちのいずれか１つに記載のデータ処理システム。
【請求項７】
前記所定の条件は、実際の処理時間が所定時間以下又は未満であることを特徴とする請求項６記載のデータ処理システム。
【請求項８】
前記データ処理装置は、前記データの処理を実行する要求がないときに、前記サーバ装置から前記データ処理装置に適したハードウェア情報を取得することを特徴とする請求項１〜７のうちのいずれか１つに記載のデータ処理システム。
【請求項９】
前記ハードウェア情報制御部は、前記データ処理装置で実行された処理のデータ処理結果を取得し、前記取得したデータ処理結果と、前記データ処理装置のハードウェア情報を含むユーザー情報とを紐付けて前記サーバ装置に送信することを特徴とする請求項１〜８のうちのいずれか１つに記載のデータ処理システム。
【請求項１０】
再構成可能なハードウェアを用いて所定のデータの処理を行うデータ処理装置と、前記データ処理装置に所定のネットワークを介して接続され、前記データ処理装置のユーザー毎の処理の利用傾向を含むユーザー情報を収集して蓄積するデータベースを有するサーバ装置とを備えるデータ処理システムにより実行されるデータ処理方法であって、
前記サーバ装置のハードウェア情報生成部が、前記データ処理装置からのハードウェア情報の照会要求に応答して、前記データベースのユーザー情報と、前記照会要求に含まれるデータ処理装置のユーザー情報とを比較し、前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を生成するステップと、
前記データ処理装置のハードウェア情報生成部が、前記生成された前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を取得して、当該取得したハードウェア情報に基づいて前記再構成可能なハードウェアを構成するステップとを含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば画像又は映像などの所定のデータの処理を行う画像処理装置などのデータ処理装置のためのデータ処理システム、及びデータ処理システムにより実行されるデータ処理方法に関する。
【背景技術】
【０００２】
近年、画像のリアルタイム処理を行うデータ処理システムにおいて、短時間で大量の演算の処理が必要とされるシステムの要望がますます高まっている。このようなシステムにおいて、従来ではＡＳＩＣ（Application Specific Integrated Circuits）によるアクセラレータを作成し、ソフトウェアによる処理を分散させるシステムが一般的である。しかし、ＡＳＩＣは特定の処理の実行に特化したものであるため、汎用性が低く、新しい機能の追加や、処理内容の変更に対して最適なシステムを提供できないという欠点があった。
【０００３】
この問題に対処すべく、書き換え可能なハードウェアであるＦＰＧＡ（Field Programmable Gate Array）を用いたアクセラレータが存在する。ＦＰＧＡは書き換えが可能であることから、新しい機能の追加や、処理内容の変更に対して様々な処理を必要とするデータ処理システムにＦＰＧＡを採用することが適切であると既に知られている。
【０００４】
そして、例えばＦＰＧＡを用いてソフトウェア処理を補助するハードウェアアクセラレータ機能において、ユーザーが利用するアプリケーションの利用頻度に応じて、ハードウェアアクセラレータの処理内容を自動的に書き換える。この場合において、予め用意されたパターンのハードウェアアクセラレータで切り替えることになる。従って、特定の処理に最適化されているという問題に対処すべく、ハードウェアアクセラレータの処理内容を、処理結果から最適化することが既に知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、今までのハードウェアアクセラレータを利用したデータ転送システムでは、あるユーザーがあるデータ処理システムで実行された処理結果に基づくハードウェアアクセラレータの処理速度の最適化が行われる。そのため、従来技術では、ユーザーがよく使う機能のハードウェアアクセラレータの処理速度の最適化までのステップがシステム毎、ユーザー毎に最初のステップから必要になり、処理時間が多大になるという問題があった。
【０００６】
本発明の目的は以上の問題点を解決し、従来技術に比較して処理速度の最適化処理を短縮することができるデータ処理システムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係るデータ処理システムは、再構成可能なハードウェアを用いて所定のデータの処理を行うデータ処理装置と、前記データ処理装置に所定のネットワークを介して接続され、前記データ処理装置のユーザー毎の処理の利用傾向を含むユーザー情報を収集して蓄積するデータベースを有するサーバ装置とを備えるデータ処理システムであって、
前記サーバ装置は、前記データ処理装置からのハードウェア情報の照会要求に応答して、前記データベースのユーザー情報と、前記照会要求に含まれるデータ処理装置のユーザー情報とを比較し、前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を生成するハードウェア情報生成部を備え、
前記データ処理装置は、前記生成された前記ユーザー情報の比較結果に基いて最適化されたハードウェア情報を取得して、当該取得したハードウェア情報に基づいて前記再構成可能なハードウェアを構成するハードウェア情報制御部を備えたこと特徴とする。
【発明の効果】
【０００８】
本発明に係るデータ処理システムによれば、従来技術に比較して処理速度の最適化処理を短縮することができるデータ処理システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る、ユーザー毎のアプリケーションの利用傾向を収集してデータ処理装置２０のハードウェアを自動生成するデータ処理システム１００の構成を示すブロック図である。
【図２】図１のクラウドサーバ装置１により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第１の生成処理を示すフローチャートである。
【図３】図１のクラウドサーバ装置１により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第２の生成処理を示すフローチャートである。
【図４】図１のデータ処理装置２０の詳細構成を示すブロック図である。
【図５】図４のデータ処理装置２０の処理内容制御部３０により実行されるユーザー要求及び情報更新処理を示すフローチャートである。
【図６】図４のデータ処理装置２０のハードウェア情報制御部３５により実行されるハードウェア情報の取得処理を示すフローチャートである。
【図７】図４のデータ処理装置２０のハードウェア情報制御部３５により実行されるハードウェア情報の書き換え処理を示すフローチャートである。
【図８】図１のデータ処理装置２０におけるユーザー情報の一例を示す表である。
【図９】図１のデータ処理装置２０におけるハードウェア情報の一例を示す表である。
【図１０】図１のデータ処理装置２０において最適なハードウェア情報と判定するときの判定基準の例を説明するための処理時間例を示す図であって、（ａ）は最適化前の処理時間例を示す図であり、（ｂ）は第１の最適化後の処理時間例を示す図であり、（ｃ）は第２の最適化後の処理時間例を示す図である。
【図１１】図１のデータ処理装置２０におけるデータ処理結果の一例を示す表である。
【図１２Ａ】図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第１の構成例を示すブロック図である。
【図１２Ｂ】図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第２の構成例を示すブロック図である。
【図１２Ｃ】図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第３の構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明に係る実施形態について説明する。以下の図面において、同一又は同様の構成要素について同一の符号を付している。
【００１１】
図１は本発明の一実施形態に係る、ユーザー毎のアプリケーションの利用傾向を収集してデータ処理装置２０のハードウェアを自動生成するデータ処理システム１００の構成を示すブロック図である。ここで、ユーザー毎のアプリケーションの利用状態又はその傾向（利用傾向）とは、例えば画像処理装置などのデータ処理装置２０において、各ユーザー毎の、所定の使用頻度以上の「使用頻度の高い機能の処理」又は「使用頻度の高い処理」などをいう。
【００１２】
本実施形態に係るデータ処理装置２０は、書き換え可能なハードウェアである再構成ハードウェア処理部３２のＦＰＧＡを備えて所定の処理を行い、当該ＦＰＧＡの回路情報の書き換えに際して、以下の特徴を有する。本実施形態は、他人の履歴情報を利用することにより、ユーザーがよく使う処理の機能のＦＰＧＡ（ハードウェアアクセラレータ）の処理速度が最短となる最適な状態により早く到達することで処理時間を短縮させることを目的とする。ユーザー毎のアプリケーションの処理の利用傾向を収集してクラウドサーバ装置１に蓄積し、ユーザーの利用頻度に合わせて処理の機能毎のアクセラレータとなるＦＰＧＡ内部での回路の並列度を調整し予めＦＰＧＡの回路情報を生成する。そしてデータ処理装置２０で利用が想定されるユーザーに合わせた複数パターンのＦＰＧＡの回路情報をクラウドサーバ装置１からダウンロードし、利用するユーザーに合わせてＦＰＧＡの回路実装を処理速度を短縮するように自動的に最適化することを特徴とする。ここで、並列度とは、処理を同時に平行して実行できる回路の並列個数をいう。
【００１３】
図１は、ユーザー毎のアプリケーションの処理の利用傾向を収集し、ＦＰＧＡのハードウェアの回路情報を自動生成するデータ処理システム１００において、クラウドサーバ装置１と各データ処理装置２０との接続関係の一例について図示する。図１において、クラウドサーバ装置１は、ハードウェア情報制御部１０と、ネットワーク接続部１１と、データベースメモリ１２，１３，１４と、ハードウェア情報生成部１５とを備えて構成される。ユーザー情報管理データベースメモリ１２はユーザー情報管理データベース１２ａを格納し、ハードウェア情報データベースメモリ１３はハードウェア情報データベース１３ａを格納する。また、データ処理結果管理データベースメモリ１４はデータ処理結果管理データベース１４ａを格納する。なお、ハードウェア情報制御部１０及びハードウェア情報生成部１５は例えばディジタル計算機などのＣＰＵを用いて構成される。
【００１４】
ハードウェア情報制御部１０に接続されたネットワーク接続部１１は、各データ処理装置２０−１〜２０−Ｎ（Ｎは複数）にそれぞれ接続されたネットワーク接続部２１−１〜２１−Ｎに所定のネットワークを介して接続される。ここで、データ処理装置２０−１〜２０−Ｎは総称して符号２０を付し、ネットワーク接続部２１−１〜２１−Ｎは総称して符号２１を付す。本実施形態に係るデータ処理システムは、ネットワークに接続可能なデータ処理装置２０が複数Ｎ個存在し、それぞれがクラウドサーバ装置１と接続されている。そして、クラウドサーバ装置１は複数のデータ処理装置２０のハードウェア情報を管理して利用するユーザー情報に応じてハードウェア情報を更新することを特徴としている。
【００１５】
クラウドサーバ装置１は、データ処理結果管理データベース１４ａ、ハードウェア情報データベース１３ａ、及びユーザー情報管理データベース１２ａを保持し、それぞれの情報が紐付けられた状態（対応付けられた状態）で保存されている。データ処理装置２０からクラウドサーバ装置１に対するハードウェア情報の照会要求に応答して、ハードウェア情報生成部１５は以下の比較及び情報生成を行う。クラウドサーバ装置１のユーザー情報管理データベース１２ａと、データ処理装置２０のユーザー情報管理部３７（図４）から取得されて上記照会要求に含まれる当該データ処理装置２０に関するユーザー情報とを比較し最適化されたハードウェア情報を生成する。そして、ユーザー情報の比較結果に基いて回路の並列度を調整することで処理速度を短縮することができる最適化されたハードウェア情報を生成して提供する。ここで、ユーザー情報とは、例えば図８に示すように、ユーザーの性別、年齢、勤続年数、役職、所属部署などのユーザー属性のほか、使用頻度の高い（所定の頻度以上の）処理、ハードウェア情報識別番号を含む。ユーザー情報管理データベース１２ａに蓄積されたユーザー情報に新たな利用傾向が見られた場合は、ハードウェア情報生成部１５は以下の処理を行う。ユーザー情報に基づいて利用頻度の高い処理の並列度が高くなるように（利用頻度の低い機能の処理の並列度が低くなるように）当該処理の並列度を調整した最適なハードウェア情報を生成してハードウェア情報データベース１３ａに登録する。
【００１６】
ここで、ユーザー情報管理データベース１２ａは、例えば、図８に示すユーザー情報である。ユーザー情報管理データベース１２ａのユーザー情報は、各データ処理装置２０−１〜２０−Ｎが記憶する全てのユーザー情報を包含する。また、ハードウェア情報データベース１３ａは、再構成ハードウェア処理部３２にハードウェア情報として書き込む複数のコンフィグレーションデータである。ここで、コンフィグレーションデータとは、処理の利用頻度に応じて最適化された回路構成情報であり、再構成ハードウェア処理部３２を構成する回路の情報を含むデータである。また、ハードウェア情報はハードウェア情報生成部１５によってユーザー毎に作成されたコンフィグレーションデータであっても良いし、使用頻度の高い処理が共通するユーザーが複数人いる場合は、該ユーザーに共通のコンフィグレーションデータであっても良い。また、データ処理結果管理データベース１４ａは、例えば、データ処理装置２０が所定の処理を実行した場合における該処理に要した時間をハードウェア情報とひも付けた情報である。
【００１７】
なお、図１のクラウドサーバ装置１において、各データベースメモリ１２，１３，１４は、ハードディスクドライブ、ソリッドステートドライブ（ＳＳＤ）などの所定の記憶手段であってもよい。
【００１８】
図２は図１のクラウドサーバ装置１により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第１の生成処理を示すフローチャートである。
【００１９】
図２において、まず、ステップＳ１において各データ処理装置２０により取得したユーザー情報及びデータ処理結果に基づいてそれぞれユーザー情報管理データベース１２ａ及びデータ処理結果管理データベース１４ａを更新する。次いで、ステップＳ２において、ハードウェア情報制御部１０は各データベース１２ａ，１３ａ，１４ａにそれぞれ格納されたユーザー情報、ハードウェア情報及びデータ処理結果の対応関係を照合する。ステップＳ３では、上記照合の結果、新たな利用傾向があるか否かが判断され、ＹＥＳのときはステップＳ４に進む一方、ＮＯのときはステップＳ１に戻る。ここで、新たな利用傾向があるとは、例えば図８のユーザー毎の使用頻度の高い処理がクラウドサーバ装置１で格納された情報と異なる場合などをいう。例えば、使用頻度の高い処理が共通するユーザーがいる場合、該ユーザーに最適化したハードウェア情報を生成済みであり、該ハードウェア情報を活用できるため、ハードウェア情報生成部１５によって新たにハードウェア情報を生成する必要はない。一方、ユーザー情報に今まで登録されたことのない処理が、使用頻度の高い処理として追加された場合、ハードウェア情報生成部１５によって新たにハードウェア情報を生成する。ステップＳ４では、ハードウェア情報生成部１５は、ユーザー情報に基づいて利用頻度が高い処理の並列度が高くなるように（一方では、例えば利用頻度が低い処理の並列度が低くなるように）調整した最適なハードウェア情報を生成する。さらに、ステップＳ５では、ハードウェア情報制御部１０は、生成されたハードウェア情報を、ユーザー情報及びデータ処理結果と互いに対応付ける、いわゆる紐付けを行って各データベース１２ａ、１３ａ、１４ａに格納する。そして、当該情報をすべてのデータ処理装置２０に公開してステップＳ１に戻る。
【００２０】
以上説明したように、図２の第１の生成処理により、収集したユーザー情報とデータ処理結果から新たな利用傾向が見られた際に、ユーザー情報に基づき処理速度を短縮できる最適なハードウェア情報を自動的に生成することができる。
【００２１】
図３は図１のクラウドサーバ装置１により実行されるハードウェア情報生成処理の一例であるハードウェア情報の第２の生成処理を示すフローチャートである。図３の第２の生成処理は、図２の第１の生成処理に比較して、ステップＳ１１〜Ｓ１４の処理を追加したことを特徴としている。以下、相違点について詳述する。
【００２２】
図３のステップＳ１１において、ハードウェア情報制御部１０は、上記生成されたハードウェア情報を一部のデータ処理装置２０に公開する。ここで、一部のデータ処理装置２０とは、ステップＳ３で新たな利用傾向があったデータ処理装置２０などをいう。次いで、ステップＳ１２において、ハードウェア情報制御部１０は、上記一部のデータ処理装置２０で実行されたデータ処理結果を取得する。ステップＳ１３において、データ処理結果が例えば実際の処理時間が、所定時間以下又は未満であったといったような良好な結果が得られたか否かが判断される。ステップＳ１３でＹＥＳのときはステップＳ１４に進む一方、ＮＯのときはステップＳ４に戻り、ステップＳ４からの処理を再度実行する。さらに、ステップＳ１４では、ハードウェア情報制御部１０は、データ処理結果が良好であった、ユーザー情報、ハードウェア情報及びデータ処理結果を互いに対応づける、いわゆる紐付けを行って各データベース１２ａ，１３ａ，１４ａに格納する。そして、当該情報をすべてのデータ処理装置２０に公開し、ステップＳ１に戻る。
【００２３】
以上説明したように、図３の第２の生成処理によれば、収集したユーザー情報とデータ処理結果から新たな利用傾向が見られた際に、ユーザー情報に基づき、ハードウェア情報を自動的に生成することができる。また、この第２の生成処理のように、新たに生成したハードウェア情報は、一部のデータ処理装置２０にのみ公開し、例えば、実際の処理時間が所定時間以下又は未満であったといったような良好な結果が得られることを確認する。そして、すべてのデータ処理装置２０に公開することで、自動的に生成されたハードウェア情報の品質を確保することも可能である。
【００２４】
図４は図１のデータ処理装置２０の詳細構成を示すブロック図である。図４において、データ処理装置２０は、処理内容制御部３０と、ソフトウェア処理部３１と、再構成ハードウェア処理部３２と、データ処理結果取得部３３と、ハードウェア情報保持部３４と、ハードウェア情報制御部３５とを備える。データ処理装置２０はさらに、処理データ入力部４１と、処理データ出力部４２と、ユーザー要求入力部３６と、ユーザー情報管理部３７と、個人認証部４３とを備える。なお、処理内容制御部３０、ハードウェア情報制御部３５及びソフトウェア処理部３１、データ処理結果取得部３３は例えばディジタル計算機などのＣＰＵを用いて構成される。また、再構成ハードウェア処理部３２は例えばＦＰＧＡ（Field-Programmable Gate Array）を用いてハードウェアを再構成可能に構成される。ここで、ハードウェア情報制御部３５はネットワーク接続部２１を介してクラウドサーバ装置１（図１）に接続される。また、ハードウェア情報保持部３４は所定の記憶手段を用いて構成され、ユーザー情報管理部３７は例えばＣＰＵと所定の記憶手段を用いて構成される。また、ユーザー要求入力部３６はタッチパネルなどを用いて構成され、個人認証部４３は例えばＩＣカードインターフェースとＣＰＵを用いて構成される。さらに、処理データ入力部４１と処理データ出力部４２はＬＡＢやＵＳＢ、ＰＣＩ Ｅｘｐｒｅｓｓなどの所定のインターフェースを用いて構成される。
【００２５】
個人認証部４３は、ハードウェア情報制御部３５と、処理内容制御部３０と、ユーザー情報管理部３７とに接続される。個人認証部４３は、ＩＣカードインターフェースなど用いてユーザーＩＤを取得することで、データ処理装置２０にログインするユーザーを特定し、ユーザーのログインの可否を判断する。また、個人認証部４３は、ログインユーザーのユーザー情報をハードウェア情報制御部３５部とユーザー情報管理部３７に出力する。処理内容制御部３０は、ユーザー要求入力部３６により入力されたユーザー要求に基づいて、処理データ入力部４１からのデータに対して例えば所定の画像処理をソフトウェア処理部３１及び再構成ハードウェア処理部３２を用いて行う。そして、処理後のデータを処理データ出力部４２に出力する。ここで、所定の画像処理とは例えばＯＣＲ（Optical Character Reader）処理や、セキュリティを向上させる目的で印刷処理を実行したユーザーのＩＤやデータ処理装置２０の識別番号などを不可視情報として原稿に印刷する不可視情報埋め込み処理などである。ソフトウェア処理部３１は処理内容制御部３０の制御に基づき上記処理のソフトウェアを格納して再構成ハードウェア処理部３２の処理を制御する。再構成ハードウェア処理部３２はソフトウェア処理部３１のソフトウェアの制御のもとで所定の処理を行って処理結果のデータを処理内容制御部３０を介して処理データ出力部４２に出力する。ユーザー情報管理部３７はユーザー要求入力部３６を用いて入力されるユーザー要求の機能の処理を入力して管理し、例えば図８の使用頻度の高い機能の処理を管理して格納して必要に応じてハードウェア情報制御部３５に出力する。データ処理結果取得部３３は例えば上記処理の実行に係る処理時間などのデータ処理結果を取得してハードウェア情報制御部３５に出力する。ハードウェア情報保持部３４は例えばハードディスクドライブなどの記憶手段で構成され、当該データ処理装置２０のハードウェア情報を保持してハードウェア情報制御部３５に出力する。ハードウェア情報制御部３５は、ネットワーク接続部２１を介してクラウドサーバ装置１と通信を行う。また、ハードウェア情報制御部３５は、データ処理装置２０にユーザーがログインする度に、ログインユーザーに応じて最適なハードウェア情報を再構成ハードウェア処理部３２へ書き込む。このとき、ハードウェア情報制御部３５は、ハードウェア情報保持部３４で保持されているハードウェア情報にアクセスすることで、再構成ハードウェア処理部３２で設定すべきハードウェア構成を決定して更新する。具体的には、ハードウェア情報制御部３５は詳細後述する図６のハードウェア情報の取得処理、及び図７のハードウェア情報の書き換え処理を実行する。
【００２６】
図４のデータ処理装置２０において、ハードウェア情報制御部３５がネットワーク接続部２１と接続されてネットワークを介してクラウドサーバ装置１からハードウェア情報を取得することが可能となる。また、データ処理結果取得部３３及びユーザー情報管理部３７と、ハードウェア情報制御部３５とが接続されている。これにより、データ処理結果取得部３３及びユーザー情報管理部３７からの情報を元に、再構成ハードウェア処理部３２の回路情報（ハードウェア情報）を書き換えることが可能になる。また、データ処理結果取得部３３及びユーザー情報管理部３７の情報をネットワーク接続部２１を介してクラウドサーバ装置１に送信することが可能となる。
【００２７】
図５は図４のデータ処理装置２０の処理内容制御部３０により実行されるユーザー要求及び情報更新処理を示すフローチャートである。
【００２８】
図５のステップＳ２１において、ユーザー要求入力部３６においてユーザーの処理の要求があるか否かが判断され、ＹＥＳのときはステップＳ２２に進む一方、ＮＯのときはステップＳ２３に進む。ステップＳ２２では、再構成ハードウェア処理部３２を用いてユーザーの要求処理を実行してステップＳ２１に戻る。ステップＳ２３では、バックグランドでユーザー情報管理部３７のユーザー情報を更新する。また、必要に応じてハードウェア情報制御部３５を介してハードウェア情報保持部３４のハードウェア情報を更新してステップＳ２１に戻る。
【００２９】
以上説明したように、図５のユーザー要求及び情報更新処理によれば、ユーザーの要求がある場合はユーザーの要求に沿った処理を実施し、そうでない場合はユーザー情報とハードウェア情報を更新する。これにより、ユーザーからは特に指示することなく、自動的にクラウドサーバ装置１と連携してハードウェア情報を更新することが可能となる。
【００３０】
図６は図４のデータ処理装置２０のハードウェア情報制御部３５により実行されるハードウェア情報の取得処理を示すフローチャートである。図６の取得処理では、ユーザーの利用傾向に合わせて再構成ハードウェア処理部３２の処理内容を書き換えるために、クラウドサーバ装置１からハードウェア情報を取得するための処理を行う。
【００３１】
図６のステップＳ３１において、データ処理装置２０とクラウドサーバ装置１で管理しているユーザー情報を照合する。次いで、ステップＳ３２において、ログインしたユーザーのユーザー情報に適したハードウェア情報がハードウェア情報データベースメモリ１３に存在するか否かが判断される。具体的には、例えば図８の「使用頻度の高い処理」に応じて最適な処理部の並列度に変更するハードウェア情報があるか否かが判断される。ステップＳ３２においてＹＥＳのときはステップＳ３３に進む一方、ＮＯのときはステップＳ３４に進む。ステップＳ３３では、ログインしたユーザーのユーザー情報に適したハードウェア情報を取得し、ハードウェア情報保持部３４に蓄積してステップＳ３４に進む。ステップＳ３４では、ハードウェア情報保持部３４に格納されたハードウェア情報を再構成ハードウェア処理部３２に書き込んで、当該取得処理を終了する。ステップＳ３２でユーザー情報に適したハードウェア情報がハードウェア情報データベースメモリ１３に存在しないと判断したときハードウェア情報保持部３４に格納されている、平均的な性能が得られるハードウェア情報を再構成ハードウェア処理部３２に書込む。
【００３２】
図６の取得処理により、データ処理装置２０とクラウドサーバ装置１でそれぞれ管理しているユーザー情報を照合し、ユーザー情報に適したハードウェア情報をクラウドサーバ装置１から取得することが可能になる。
【００３３】
図７は図４のデータ処理装置２０のハードウェア情報制御部３５により実行されるハードウェア情報の書き換え処理を示すフローチャートである。
【００３４】
図７のＳ４０において、個人認証部４３がユーザーを特定し、データ処理装置２０へのログインを許可する。ステップＳ４１において、所定の画像処理に関するユーザー要求を入力し、ステップＳ４２においてユーザー情報とハードウェア情報の照合を行う。ステップＳ４３においてハードウェアの書き換えが必要であるか否かが判断され、ＹＥＳのときはステップＳ４４に進む一方、ＮＯのときはステップＳ４６に進む。ここで、再構成ハードウェア処理部３２に現在書き込まれているハードウェア情報がログインユーザーに最適なハードウェア情報であるか否かを判断する。具体的には、ログインユーザーのユーザー情報にひも付けられたハードウェア情報と、再構成ハードウェア処理部３２に現在書き込まれているハードウェア情報とが一致する場合は、ハードウェアを書き換える必要はない。一方、ログインユーザーのユーザー情報にひも付けられたハードウェア情報と再構成ハードウェア処理部３２に現在書き込まれているハードウェア情報とが異なる場合は、ハードウェアを書き換える必要がある。ステップＳ４４において、ハードウェア情報を取得済みであるか否かが判断され、ＹＥＳのときはステップＳ４５に進む一方、ＮＯのときはステップＳ５１に進む。ステップＳ４５では、ユーザーに最適なハードウェア情報の書き換え処理（具体的には、例えば図８の使用頻度に基づく処理部の並列度）を実行する。ステップＳ４６において、再構成ハードウェア処理部３２を用いてユーザーの要求処理を実行し、ステップＳ４７でデータ処理時間などのデータ処理結果を取得する。ステップＳ４８では、所定の期待通りのデータ処理時間であるか（所定のしきい値以下のデータ処理時間であるか）判断され、ＹＥＳのときはステップＳ４９に進む一方、ＮＯのときはステップＳ５０に進む。ステップＳ４９では、ハードウェアの書き換え処理を行ったデータ処理内容に基づきユーザー情報を修正してステップＳ５０に進む。
【００３５】
図７のステップＳ５１において、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報の書き換え処理を実行する。次いで、ステップＳ５２において再構成ハードウェア処理部３２を用いてユーザーの要求処理を実行し、ステップＳ５３でデータ処理結果を取得してステップＳ５０に進む。ステップＳ５０では、取得したデータ処理結果と、ハードウェア情報を含むユーザー情報とを紐付けしてクラウドサーバ装置１に送信して当該書き換え処理を終了する。
【００３６】
ここで、ステップＳ５０の処置により、ハードウェア情報と紐付いたデータ処理結果をクラウドサーバ装置１に蓄積することができるようになり、データ処理結果に基づくハードウェア情報を最適化できる。
【００３７】
図７の書き換え処理により、ユーザー要求の入力があった際に、ユーザー情報を元にユーザー属性とハードウェア情報の照合を行い、必要に応じてユーザーに最適な再構成ハードウェア処理部３２の回路情報に書き換えることが可能になる。また、クラウドサーバ装置１にユーザー情報及びハードウェア情報が蓄積されていない状態においては、設計者により一般的に最適と考えられる平均的な性能が得られるハードウェア情報の回路情報が利用される。クラウドサーバ装置１にユーザー情報及びハードウェア情報が蓄積されている状態においてはユーザー情報を元にユーザー属性とハードウェア情報の照合を行い、必要に応じてユーザーに最適な再構成ハードウェア処理部３２の回路情報に書き換えることができる。
【００３８】
図８は図１のデータ処理装置２０におけるユーザー情報の一例を示す表である。なお、ユーザー情報管理データベースメモリ１２は、ユーザー情報管理データベース１２ａとして同様の情報を記憶する。図８において、ユーザー毎に、ユーザーＩＤ、ユーザーの性別、年齢、勤続年数、役職、所属部署などのユーザー属性のほか、使用頻度の高い（所定の頻度以上の）処理、ハードウェア情報と紐付けるために用いる情報であるハードウェア情報識別番号を含むユーザー情報を格納する。なお、使用頻度の高い処理とは、再構成ハードウェア処理部３２を用いる処理のうち、過去にユーザーが実行した全ての処理の合計回数に占める使用回数の割合が、例えば３０％を超える処理である。ここで示しているように、様々なユーザー属性を蓄積し、使用頻度の高い機能の処理と紐付けておくことで、他のユーザーが利用するときに、ユーザー属性を元に参照することで、よく使う機能の処理に最適化されたハードウェア情報を提供することが可能になる。
【００３９】
例えば、所属部署をユーザー属性の判定基準とすることができる。設計部署でユーザーＡ及びユーザーＢがデータ処理装置２０での処理を実施し、処理Ａ及び処理Ｂの最適化されたハードウェア情報が生成されていたとする。そこに、同じ設計部署に所属するユーザーＥが初めてデータ処理装置２０を利用する際には、ユーザーＥは、ユーザーＡ及びユーザーＢがデータ処理装置２０を利用した際の情報を元に処理Ａと処理Ｂに最適化されたハードウェア情報を利用することが可能となる。
【００４０】
この他、勤続年数が五年未満のユーザーは処理Ｂを使う利用傾向にあるなど、複数のユーザー属性を組み合わせた判定基準を設けることで、より特定のユーザー属性に最適化されたハードウェア情報を提供することも可能である。
【００４１】
図９は、図１のデータ処理装置２０におけるハードウェア情報の一例を示す表である。なお、ハードウェア情報データベースメモリ１３もハードウェア情報データベース１３ａとして同様の情報を記憶する。図９においては、ハードウェア情報識別番号と、ハードウェア情報識別番号に対応するコンフィグレーションデータを格納する。ここで、コンフィグレーションデータ１は、処理Ａの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ２は、処理Ａ、Ｂの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ３は、処理Ｃの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ４は、処理Ａ、Ｃの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ５は、処理Ｂの利用頻度の高いユーザーに最適化された回路構成情報である。また、コンフィグレーションデータ６は、設計者により最適と考えられる、平均的な性能が得られる回路構成情報である。なお、ハードウェア情報データベースメモリ１３は全ての回路構成情報を記憶するが、データ処理装置２０はハードウェア情報保持部３４の記憶容量が小さい場合は、図９に示すコンフィグレーションデータのうち、一部のコンフィグレーションデータのみを記憶する。ただし、ハードウェア情報保持部３４は、記憶容量が小さい場合であっても、コンフィグレーションデータ６を保持するものとする。
【００４２】
図１０は図１のデータ処理装置２０において最適なハードウェア情報と判定するときの判定基準の例を説明するための処理時間例を示す図である。ここで、図１０（ａ）は最適化前の処理時間例を示す図であり、図１０（ｂ）は第１の最適化後の処理時間例を示す図であり、図１０（ｃ）は第２の最適化後の処理時間例を示す図である。
【００４３】
最適と判定する基準の１つに、処理時間があげられる。ユーザーが処理Ａを頻繁に使用すると想定される場合、処理Ａの並列度を上げたハードウェア情報を生成して提供し、実際に利用してもらう。その際に処理時間をデータ処理結果として取得し、事前に測定された図１０（ａ）の最適化前の処理時間と比較することで、最適化が有効であったことを判定する。その後は処理Ａを頻繁に使用すると想定されるユーザーに対しては、この最適化されたハードウェア情報を提供することで、処理Ａの処理時間を短縮させるようなことが可能となる。
【００４４】
ユーザーが図１０（ｂ）の第１の最適化後の場合よりも更に処理Ａのみを頻繁に使用すると想定される場合、処理Ａの並列度をさらに向上させることが考えられる。しかし、並列度を過度に挙げても性能が向上しない可能性もあり、図１０（ｃ）の第２の最適化後２の場合は、第１の最適化後と比べても処理時間がほとんど変わらない。この場合は、並列度を更に向上させた第２の最適化後の場合のほうが、回路面積が大きくなっており、他の処理の並列度が下がっている事になるため、処理Ａの並列度は並列度１０まで向上させても効果が無いと判定させる。このように処理時間を最適と判定する基準にすることで、ユーザーにとって処理性能が最適化されたハードウェア情報を提供することができる。
【００４５】
図１０の例では、処理時間を判定基準としたが、判定基準を変えることで、様々な用途で最適化されたハードウェア情報を提供することができる。例えば、ＯＣＲの例で考えると、識別精度を判定基準とすることで、ＯＣＲの辞書データを最適化することが可能になる。再構成ハードウェアによるアクセラレータを使った高速なＯＣＲを行う場合、再構成ハードウェアが参照するＯＣＲの辞書データを最適化していくケースが考えられる。再構成ハードウェアによるアクセラレータを使った高速なＯＣＲを行うため、再構成ハードウェアが一度に利用可能なＯＣＲの辞書データを限られた情報量にしている場合、認識率がそれほど高くないことが考えられる。その際、データ処理結果取得部３３より、処理された画像データとＯＣＲ結果をクラウドサーバ装置１へ送信する。クラウドサーバ装置１ではより膨大な辞書データを用いた正確なＯＣＲ処理を行い、データ処理装置２０でのＯＣＲ結果の識別精度を判定する。認識精度に応じて辞書データを入れ替えたハードウェア情報を生成して提供する。このように識別精度を判定基準として最適化していくことで、ユーザー属性に最適化された辞書データをもつＯＣＲを行うことができる。この場合、ユーザー属性は性別を判定基準とすることなどが考えられる。
【００４６】
図１１は、図１のデータ処理装置２０におけるデータ処理結果の一例を示す表である。なお、データ処理結果管理データベースメモリ１４もデータ処理結果管理データベース１４ａとして同様のデータ処理結果を記憶する。図１１に示すように、ハードウェア情報識別番号毎に、各処理の並列度、各処理に要した処理時間を含む情報を格納する。
【００４７】
図１２Ａは図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第１の構成例を示すブロック図である。また、図１２Ｂは図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第２の構成例を示すブロック図である。さらに、図１２Ｃは図１のハードウェア情報生成部１５によって生成される、再構成ハードウェア処理部３２の第３の構成例を示すブロック図である。
【００４８】
図１２Ａ〜図１２Ｃにおいて、再構成ハードウェア処理部３２は、データ入力部５１と、順次処理Ａ、処理Ｂ及び処理Ｃを行う処理部５２，５３，５４と、データ出力部５５とを備えて構成される。図１２Ａにおいて、処理部５２，５３，５４の並列度はともに「中」に設定されている。図１２Ｂにおいて、処理部５２，５３，５４の並列度は「低」、「高」、「低」に設定されている。図１２Ｃにおいて、処理部５２，５３，５４の並列度は「高」、「低」、「低」に設定されている。ここで、処理部５２，５３，５４における並列度とは、再構成ハードウェア処理部３２を構成する回路のうち、該処理部に割り当てられる回路数のことを示している。つまり、並列度が「高」とは、再構成ハードウェア処理部３２を構成する回路のうち該処理部に割り当てられている回路数の割合が大きいことを意味し、並列度が「低」とは、回路数の割合が小さいことを意味する。なお、並列度が「中」とは、再構成ハードウェア処理部３２を構成する回路のうち該処理部に割り当てられている回路数の割合が並列度「高」の場合よりも小さいが、並列度「小」の場合よりも大きいことを意味する。
【００４９】
ここで、図１２Ａに示す再構成ハードウェア処理部３２の第１の構成例は、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報が書き込んだ場合における構成の一例である。このとき、処理Ａ、Ｂ、Ｃの並列度は全て同じ値に設定することができ、例えば、並列度４に設定することができる。また、図１２Ｂに示す再構成ハードウェア処理部３２の第２の構成例は、コンフィグレーションデータ５が書き込まれた場合における構成の一例である。このとき、使用頻度の高い処理である処理Ｂの並列度は所定の値よりも高く設定され、例えば並列度８に設定される。また、処理Ａ、Ｃの並列度は、例えば並列度２に設定することができる。また、図１２Ｃに示す再構成ハードウェア処理部３２の第３の構成例は、コンフィグレーションデータ１が書き込まれた場合における構成の一例である。このとき、使用頻度の高い処理である処理Ａの並列度は所定の値よりも高く設定され、例えば並列度８に設定される。また、処理Ａ、Ｃの並列度は、例えば並列度２に設定することができる。ここで、所定の値とは、設計者により最適と考えられる、平均的な性能が得られるハードウェア情報における並列度であり、例えば並列度４である。
【００５０】
なお、処理Ａ，Ｂ，Ｃの処理内容は、データ処理装置２０で実行する機能によって異なる。例えば、データ処理装置２０においてＯＣＲ機能を実行する場合、処理ＡはＲＧＢデータからＹＭＣＫデータへの色変換、処理Ｂは画像から文字を切り出す文字領域切出処理とすることができる。また、処理Ｃは文字の斜線の傾きや交点の数などの文字の特徴を抽出する特徴抽出処理とすることができる。なお、データ処理装置２０において複数の機能を実行可能な場合がある。例えば、不可視情報の埋め込み機能を実行する場合、データ処理装置２０は処理Ａ，Ｄ，Ｅを行う。このとき処理Ｄは画像を縮小する縮小処理、処理Ｅは印刷を実行したユーザーのＩＤやデータ処理装置２０の識別番号などを不可視情報として画像に埋め込む不可視情報埋込処理とすることができる。データ処理装置２０において異なる機能を実行する場合は異なる処理を行うが、色変換処理のように共通する処理を実行する場合がある。このため、ＯＣＲ機能と不可視情報埋め込み機能を頻繁に使うユーザーの場合、ＯＣＲ機能と不可視情報埋め込み機能とで共通する処理である処理Ａが、使用頻度の高い処理としてユーザー情報に記憶される。
【００５１】
再構成ハードウェア処理部３２は、処理の並列度を上げることで、処理を高速化することができるが、その反面、処理の並列度に応じて回路面積を消費するため、すべての処理の並列度を高くすることができない。そのため、並列度を柔軟に変更できるような回路情報を用意しておき、ユーザーの利用傾向に基づいて、ユーザーに最適なハードウェア構成を生成することで、最適化されたハードウェアアクセラレータなどのＦＰＧＡを有するデータ処理装置２０を提供できる。
【００５２】
上記再構成ハードウェア処理部３２の処理部５２〜５４の並列度を柔軟に変更できるような回路情報を生成する手段であるハードウェア情報生成部１５として、ＯｐｅｎＣＬ（登録商標）ｆｏｒ  ＦＰＧＡなどを用いて構成することがあげられる。
【００５３】
以上説明したように、本実施形態によれば、ユーザーがよく使う機能のハードウェアアクセラレータの処理速度の最適化までのステップがシステム毎、ユーザー毎に、ゼロから必要になることない。また、他人の履歴情報を利用することにより、ユーザーがよく使う機能の処理速度が最適な状態により早く到達することができる。これにより、従来技術に比較して処理速度の最適化処理を短縮することができるデータ処理システム１００を提供することができる。
【００５４】
また、ハードウェア情報生成部１５を備えることによって、ハードウェア情報データベース１３ａに登録されていないハードウェア情報を生成することができるため、想定していない利用傾向にも最適化されたハードウェア情報を提供することができる。
【００５５】
さらに、新たに生成したハードウェア情報を一部のユーザーに公開し、例えば、実際の処理時間が、所定時間以下又は未満であったといったような所定条件を満たす結果が得られることを確認した後ハードウェア情報全ユーザーに公開する。すなわち、ハードウェア情報制御部３５を備えたので、全ユーザーに公開するハードウェア情報が、自動的に生成されるハードウェア情報の中から良好な結果が得られるものに限定することができる。
【００５６】
またさらに、ユーザーからのデータ処理装置２０に対する要求がない場合、データ処理装置２０とクラウドサーバ装置１で管理しているユーザー情報とデータ処理結果を照合し、ユーザー情報に最適なハードウェア情報を予め取得する。これにより、ユーザーからのデータ処理装置２０に対する要求が来る前に、あらかじめユーザー情報に最適なハードウェア情報を取得することができる。
【００５７】
また、データ処理装置２０で実行された処理のデータ処理結果を取得するデータ処理結果取得部３３を備え、ハードウェア情報制御部３５は、ハードウェア情報を含むユーザー情報と紐付けた上でネットワーク接続部を介してクラウドサーバ装置１に送信する。従って、ハードウェア情報と紐付いたデータ処理結果をクラウドサーバ装置１に蓄積することができるようになり、データ処理結果に基づくハードウェア情報を最適化できる。
【００５８】
さらに、ハードウェア情報生成部１５は、データ処理装置２０のユーザー毎の処理の利用傾向に応じて、再構成可能なハードウェア処理部３２の回路の並列度を調整してハードウェア情報を生成する。ここで、ハードウェア情報生成部１５は、好ましくは、データ処理装置２０のユーザー毎の使用頻度が所定値以上の高い機能の処理の並列度が所定値よりも高くなるように再構成可能なハードウェア処理部３２の回路の並列度を調整する。さらに、ハードウェア情報生成部１５は、データ処理装置２０のユーザー毎の使用頻度が所定値以下の低い機能の処理の並列度が所定値よりも低くなるように再構成可能なハードウェア処理部３２の回路の並列度を調整してもよい。
【００５９】
またさらに、ＯｐｅｎＣＬ（登録商標）ｆｏｒ  ＦＰＧＡを用いて処理の並列度を調整した最適なハードウェア情報を生成するハードウェア情報生成部１５を備える。ＯｐｅｎＣＬ（登録商標）ｆｏｒ  ＦＰＧＡを使用することで当該手段を容易に実現することが可能になる。
【００６０】
以上の実施形態においては、クラウドサーバ装置１を用いているが、本発明はこれに限らず、クラウドを構成せず、複数のデータ処理装置２０が所定のネットワークに接続されたサーバ装置であってもよい。
【符号の説明】
【００６１】
１…クラウドサーバ装置、
１０…ハードウェア情報制御部、
１１…ネットワーク接続部、
１２…ユーザー情報管理データベースメモリ、
１２ａ…ユーザー情報管理データベース、
１３…ハードウェア情報データベースメモリ、
１３ａ…ハードウェア情報データベース、
１４…データ処理結果管理データベースメモリ、
１４ａ…データ処理結果管理データベース、
１５…ハードウェア情報生成部、
２０，２０−１〜２０−Ｎ…データ処理装置、
２１，２１−１〜２１−Ｎ…ネットワーク接続部、
３０…処理内容制御部、
３１…ソフトウェア処理部、
３２…再構成ハードウェア処理部、
３３…データ処理結果取得部、
３４…ハードウェア情報保持部、
３５…ハードウェア情報制御部、
３６…ユーザー要求入力部、
３７…ユーザー情報管理部、
４１…処理データ入力部、
４２…処理データ出力部、
４３…個人認証部、
５１…データ入力部、
５２…処理Ａの処理部、
５３…処理Ｂの処理部、
５４…処理Ｃの処理部、
５５…データ出力部、
１００…データ処理システム。
【先行技術文献】
【特許文献】
【００６２】
【特許文献１】特開２０１３−１７１４３５号公報
【図１】
0006733437.tif 000002
【図２】
0006733437.tif 000003
【図３】
0006733437.tif 000004
【図４】
0006733437.tif 000005
【図５】
0006733437.tif 000006
【図６】
0006733437.tif 000007
【図７】
0006733437.tif 000008
【図８】
0006733437.tif 000009
【図９】
0006733437.tif 000010
【図１０】
0006733437.tif 000011
【図１１】
0006733437.tif 000012
【図１２Ａ】
0006733437.tif 000013
【図１２Ｂ】
0006733437.tif 000014
【図１２Ｃ】
0006733437.tif 000015