(57)【要約】【課題】アクセラレータで演算処理される機能に応じてプログラマブルデバイスの構成を適正化することにより、アクセラレータによる演算処理の効率化と省エネを図る。をする。【解決手段】コンフィギュレーションデータにより構成又は再構成可能なプログラマブルデバイス２２０を有するアクセラレータ２００を使用して演算処理を実行する情報処理装置であって、コンフィギュレーションデータが機能別に複数格納された領域内から前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択するデータ選択部１２０と、前記選択されたコンフィギュレーションデータに関する情報を前記アクセラレータ２００に転送するデータ転送部１２５と、を備える情報処理装置が提供される。【選択図】図６
2013098823.tif 000002
【特許請求の範囲】
【請求項１】
コンフィギュレーションデータにより構成又は再構成可能なプログラマブルデバイスを有するアクセラレータを使用して演算処理を実行する情報処理装置であって、
前記コンフィギュレーションデータが機能別に複数格納された領域内から前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択するデータ選択部と、
前記選択されたコンフィギュレーションデータに関する情報を前記アクセラレータに転送するデータ転送部と、
を備える情報処理装置。
【請求項２】
前記格納領域には、前記コンフィギュレーションデータによる構成又は再構成後のプログラマブルデバイスを用いて実行される演算処理と連携して、前記情報処理装置側にて実行される処理用のソフトウエアが、前記複数のコンフィギュレーションデータに関する情報と組になって複数格納されている請求項１に記載の情報処理装置。
【請求項３】
前記格納領域には、機能毎に目的別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、前記演算処理の機能に対応した前記格納領域内のコンフィギュレーションデータに関する情報から、前記演算処理の目的に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項４】
前記格納領域には、目的毎に機能別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、前記演算処理の目的に対応した前記格納領域内のコンフィギュレーションデータに関する情報から、前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項５】
前記格納領域には、演算処理の分類毎に機能別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、前記演算処理の分類に対応した前記格納領域内のコンフィギュレーションデータに関する情報から、前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項６】
前記格納領域には、演算処理の条件毎に機能別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、ユーザの入力条件に対応した前記格納領域内の演算処理の条件のコンフィギュレーションデータに関する情報から、前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項７】
前記格納領域には、機種毎に機能別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、前記演算処理の対象機種に対応した前記格納領域内の機種のコンフィギュレーションデータに関する情報から、前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項８】
前記格納領域には、付加処理毎に機能別のコンフィギュレーションデータに関する情報が格納され、
前記データ選択部は、前記演算処理の付加処理に対応した前記格納領域内のコンフィギュレーションデータに関する情報から、前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択する請求項１又は２に記載の情報処理装置。
【請求項９】
コンフィギュレーションデータにより構成又は再構成可能なプログラマブルデバイスを有するアクセラレータを使用して演算処理を実行する方法であって、
コンフィギュレーションデータに関する情報が機能別に複数格納された領域内から前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択するステップと、
前記選択されたコンフィギュレーションデータに関する情報を前記アクセラレータに転送するステップと、
前記転送されたコンフィギュレーションデータに関する情報から識別されるコンフィギュレーションデータにより前記プログラマブルデバイスを構成又は再構成するステップと、
前記構成又は再構成されたプログラマブルデバイスを有する前記アクセラレータを使用して前記演算処理を実行するステップと、
を含む演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び演算処理方法に関する。
【背景技術】
【０００２】
従来から、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などに代表されるプログラマブルなデバイスを有するアクセラレータを用いて、アクセラレータとホスト機器側のＣＰＵとを連携することにより処理速度を向上させる方法が提案されている。プログラマブルデバイスはその構成を可変に設定できる集積回路であるため、その性質を利用して省電力を図るアクセラレータの利用方法も提案されている。たとえば、特許文献１には、アクセラレータにおいて、動作周波数及び電圧を変更するだけでなく、クロック信号及び電力供給を停止することによって、アクセラレータ動作時の省電力化を図る技術が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１では、アクセラレータ動作時の省電力化を実現するために、ハードウエア回路の駆動周波数や駆動電圧を変化させているため、駆動周波数や駆動電圧を下げると処理速度が下がり、アクセラレータの処理能力を低下させる結果となる。よって、特許文献１では、高速処理を犠牲にすることなく省電力化を実現することができない。また、そもそもアクセラレータは高速処理の実現を目的とした機器であるため、高速処理を犠牲にすることは望ましくない。
【０００４】
上記課題に鑑み、本発明の目的とするところは、アクセラレータで演算処理される機能に応じてプログラマブルデバイスの構成を適正化することが可能な情報処理装置及び演算処理方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一の態様によれば、コンフィギュレーションデータにより構成又は再構成可能なプログラマブルデバイスを有するアクセラレータを使用して演算処理を実行する情報処理装置であって、前記コンフィギュレーションデータが機能別に複数格納された領域内から前記演算処理の機能に応じたコンフィギュレーションデータに関する情報を選択するデータ選択部と、前記選択されたコンフィギュレーションデータに関する情報を前記アクセラレータに転送するデータ転送部と、を備える情報処理装置が提供される。
【発明の効果】
【０００６】
本発明によれば、アクセラレータで演算処理される機能に応じてプログラマブルデバイスの構成を適正化することにより、アクセラレータによる演算処理の効率化と省エネを図ることができる。
【図面の簡単な説明】
【０００７】
【図１】オンチップパワーゲーティングの原理説明図。
【図２】オンチップパワーゲーティングによる電力削減効果を示した図。
【図３】リコンフィギュラブルプロセッサにおける省電力の説明図。
【図４】一般的なアクセラレータの構成図。
【図５】一実施形態に係るホスト機器及びアクセラレータの構成図。
【図６】一実施形態に係るホスト機器及びアクセラレータの動作を示すフローチャート。
【図７】図６の演算処理を示すフローチャート。
【図８】ホスト機器側で利用するソフトウエアとアクセラレータ側で利用するコンフィギュレーションデータとを管理する一例。
【図９】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【図１０】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【図１１】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【図１２】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【図１３】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【図１４】ソフトウエアとコンフィギュレーションデータとを管理する他の例。
【発明を実施するための形態】
【０００８】
以下、本発明の好適な実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【０００９】
＜はじめに＞
ＣＰＵのような汎用プロセッサは、ソフトウエアによって様々な処理をさせることができる柔軟性がある一方、高速処理を実現するには高い動作周波数を必要とし、消費電力が高くかつ発熱量も多い。これに対して、ハードウエアで構成された専用回路は、低い消費電力で高い性能が発揮できるが、ＣＰＵほどの柔軟性がない。そこで従来から高性能の専用回路をアクセラレータとし、ＣＰＵ処理の一部をアクセラレータが代行することによって、高速処理を実現する方法が提案されている。
【００１０】
ところで半導体チップの総消費電力は大まかに以下の式（１）で求められる。
【００１１】
半導体チップの総消費電力＝ダイナミック消費電力＋リーク電力・・・（１）
ダイナミック消費電力は、チップ上のゲートやトランジスタが動作する際に消費する電力である。リーク電力とは、リーク電流によってトランジスタが無駄に消費している電力である。
【００１２】
半導体チップの加工プロセスの微細化が進み、現在、ＬＳＩの消費電力の半分はリーク電力である。リーク電力は、回路が動作していなくても通電しているだけで消費する電力であり、処理速度には無関係である。言い換えると、仮にリーク電力が理想的に０になったとしても処理速度は落ちない。よって、処理速度を維持したまま省電力化を図るには、リーク電力の削減に注目するべきである。
【００１３】
リーク電力を削減するには通電するトランジスタの数自体を減ずる必要があり、その実現手段のひとつとしてパワーゲーティング技術がある。パワーゲーティング技術は、予め各ブロックの電源供給ラインを分離しておき、半導体チップ外もしくは半導体チップ内に設けた電源供給ライン毎のスイッチを切断することで、該当ブロックのリーク電流をも削減する方法である。
【００１４】
一方、アクセラレータに搭載するデバイスとして、動的に再構成可能なプログラマブルなデバイス（リコンフィギュラブルプロセッサ）を用いれば、電源遮断することなく、機能の動作ごとにアクセラレータの回路構成を変更できる。これによれば、通電する回路規模も変更できるため、回路規模を小さくすれば通電するトランジスタ数を減じることができ、リーク電力を抑えることができる。
【００１５】
後述する本発明の一実施形態によれば、動的に再構成できるプログラマブルなデバイスを用いて、処理に必要な部分のみに通電するよう回路規模を変化させる。これにより、高速処理を維持したまま、リーク電力を抑えて省電力を実現できる。省電力化にともない発熱も抑えられるので廃熱に必要な冷却処理の負担も軽減でき、システム全体としての省電力化も図られる。
【００１６】
加えて、アクセラレータと連携するホスト機器１００本体の性能（ＣＰＵ他）に応じて、アクセラレータ内の回路構成を変えることによって、本体とアクセラレータとの処理分担を最適にし、総合的な処理性能（処理時間と消費電力とのバランス）を高めることができる。
【００１７】
さらに、アクセラレータの利用においては、高速化を目的とした構成と、省電力化を目的とした構成との２つを目的別に使い分けることによって、生産性を維持した上で低消費電力を実現することができる。例えば、アクセラレータにより実行される演算処理には、より一層の高速化が必要な処理と高速化よりは低消費電力化が望まれる処理とが存在する。例えば、スキャナやコピー、プリンタ、ファクシミリなどを１台の機器にまとめた複合機（以下、ＭＦＰ：Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒと呼ぶ。）の処理に関して言えば、コピー処理やプリント処理は、１データから複数部数を指定されることが多い処理であり、使用者がＭＦＰの前で待たねばならない場面が多いゆえに、より一層の高速化が求められる。これに対して、スキャン処理やファクシミリ受信及び送信は、１データから複数部数の具体物を作成する必要はない。スキャン処理の場合、具体物である紙を入力してしまえば、処理結果は電子データとして使用者の手元の機器に送信されるから、後段の処理の完了を待つことなく、ＭＦＰの前を離れることができる。ファクシミリの場合、送信処理はスキャン処理と同様であるし、受信処理は使用者に待たれることなく完了することが多く、受信し終わった後に、紙やデータを使用者が目にする。
【００１８】
よって、コピー処理やプリント処理は、高速化を目的とした構成にプログラマブルデバイスを変更し、スキャン処理やファクシミリの処理は、省電力化を目的とした構成にプログラマブルデバイスを変更することによって、生産性を維持した上で低消費電力を実現することができる。
【００１９】
[オンチップパワーゲーディングの原理及び電力削減効果]
ここで、オンチップパワーゲーディングの一般的な原理について、図１を参照しながら説明する。図１は、半導体チップの省電力手段のひとつであるオンチップパワーゲーディングの原理図である。図１の左側は、通常の半導体チップの設計を示す。通常の半導体チップでは、論理回路は常に通電し、通電している論理回路の全範囲においてリーク電力が発生している。
【００２０】
図１の右側は、オンチップパワーゲーティング技術を適用した論理回路の設計を示す。論理回路を、常時通電が必要なブロック（常時オンブロック）と、必要なときに使用する機能があるブロック（オン／オフ切り替え可能ブロック）とに分けて設計し、後者については電源供給を制御する。これにより、常時通電する範囲が狭くなるため、リーク電力の発生を抑えることができる。
【００２１】
オンチップパワーゲーディングによる電力削減効果について、図２を参照しながら説明する。図２は、オンチップパワーゲーディングによる電力削減効果を示すグラフである。オン／オフ切り替え可能ブロックの通電時間が短いほど、つまりオフ時間が長いほど電力削減効果は大きい。なお、常時オンブロックの範囲が狭くなると、消費電力が小さくなることは言うまでもない。
【００２２】
[動的リコンフィギュラブルプロセッサの動的回路構成]
次に、動的リコンフィギュラブルプロセッサにおける省電力について、図３を参照しながら説明する。図３は、動的リコンフィギュラブルプロセッサによる省電力化の原理を示す。図３に示したように、動的リコンフィギュラブルプロセッサでは、機能ごとに存在するコンフィギュレーションデータに基づいて、プログラマブルデバイスの回路構成を変更する。図３の左側では、機能Ａを実現するために「コンフィギュレーションデータ：機能Ａ」に基づいて機能Ａエリアの回路が構成される。図３の右側では、機能Ｂを実現するために「コンフィギュレーションデータ：機能Ｂ」に基づいて機能Ｂエリアの回路が構成される。両図に示したように、各機能を実現するために必要な回路規模が異なる。ここでは、機能Ａより機能Ｂの方が狭い範囲で機能を実現することができる。よって、通電する範囲が狭い機能Ｂの方が通電する範囲が広い機能Ａよりリーク電力は抑えられる。これは前述したオンチップパワーゲーディングの原理に基づく電力削減効果（図２参照）による。なお、動的リコンフィギュラブルプロセッサによる省電力化の詳細については非特許文献「「パワーゲーティングを適用した動的リコンフィギュラブルプロセッサの設計と評価」  電子情報通信学会技術研究報告.RECONF,リコンフィギュラブルシステム 108(48), 55-60, 2008-05-15」を参照されたい。
【００２３】
[一般的なアクセラレータの構成図]
次に、一般的なアクセラレータの構成について、図４を参照しながら説明する。図４は、動的プログラマブルデバイスを搭載したアクセラレータ９１０とホスト機器９００との構成図である。アクセラレータ９１０とホスト機器９００とは通信可能に接続され、連携して所望の機能の演算処理を実行する。
【００２４】
ホスト機器９００は、ホスト機器９００に搭載されているＣＰＵ９０１及びプログラム蓄積部９０２を有している。プログラム蓄積部９０２には、ホスト機器９００にて実行されるプログラムコードが蓄積されている。
【００２５】
アクセラレータ９１０は、ホスト機器９００とデータ通信するための外部インターフェースＩ／Ｆ９１３、ローカルメモリ９１４、制御部９１５、コンフィギュラブル演算器アレイ９１６及びコンフィギュレーションデータ格納用メモリ９１７を有している。ローカルメモリ９１４は、アクセラレータ９１０内で利用するデータ等を記憶する。制御部９１５は、アクセラレータ９１０内のデータ処理を制御する。リコンフィギュラブル演算器アレイ９１６は、プログラマブルデバイスを再構成可能なアレイ状の演算器である。コンフィギュレーションデータ格納メモリ９１７には、コンフィギュラブル演算器アレイ９１６の構成を定義するコンフィギュレーションデータが格納された記憶領域である。
【００２６】
電源投入後、あるいは機器アイドル時間など、処理に不都合が生じない、適当なタイミングにて、アクセラレータ９１０内のプログラマブルデバイスは、コンフィギュレーションデータ格納メモリ９１７に格納されたコンフィギュレーションデータに基づいて、プログラマブルデバイスの再構成可能な演算アレイ９１６の回路を構成し、ホスト機器９００に対して演算機能提供の準備を行なう。ホスト機器９００は、アクセラレータ９１０の準備完了の信号を受け取り、プログラム蓄積部９０２の、アクセラレータ利用を前提としたコード(ソフトウエア)をＣＰＵ９０１にて実行する。
【００２７】
以上、一般的なアクセラレータの構成について説明した。以下では、本発明の一実施形態に係るホスト機器とアクセラレータとの構成について説明する。なお、本発明の一実施形態では、アクセラレータを制御する本体側（つまり、ホスト機器側）にて利用されるソフトウエアと、アクセラレータにて利用されるコンフィギュレーションデータとを機能別に組にして管理する。例えば、図８〜図１４に、ホスト機器側にて利用されるソフトウエアとアクセラレータにて利用されるコンフィギュレーションデータとを組にして機能別に管理する一例を示す。
【００２８】
また、図３の説明において述べたように、アクセラレータはコンフィギュレーションデータによって、チップ上の通電範囲を変化させることができ、これによりアクセラレータでの消費電力を変化させることができる。この原理を利用して、ある機能の処理を実現するにあたり、高速処理よりも省電力であることを優先するのであれば、より狭い通電範囲で収まるコンフィギュレーションデータを選択することによりチップ上の通電範囲を狭くすることによって実現可能である。
【００２９】
よって、以下に説明する本発明の一実施形態では、上記原理を利用して、図９に示したように、コンフィギュレーションデータを、高速処理、省電力処理などの用途や目的別に複数用意しておき、所望する用途や目的に応じて、ホスト機器側にて利用されるソフトウエアとアクセラレータにて利用されるコンフィギュレーションデータを選択し、これによってチップ上の通電範囲を変更してもよい。
【００３０】
以下、本発明の一実施形態に係るホスト機器及びアクセラレータの構成及び動作について、図５及び図６を参照しながら説明する。図５は、一実施形態に係るホスト機器及びアクセラレータの構成図であり、図６は、一実施形態に係るホスト機器及びアクセラレータの動作を示すフローチャートである。
【００３１】
[ホスト機器及びアクセラレータの構成]
まず、本発明の一実施形態に係るホスト機器及びアクセラレータの構成について説明する。図５の上側に示したホスト機器１００は、制御部１０５、プログラム蓄積部１１０、コンフィギュレーションデータ格納部１１５、データ選択部１２０、データ転送部１２５及び演算部１３０を有する。ホスト機器１００は、コンフィギュレーションデータにより構成又は再構成可能なプログラマブルデバイスを有するアクセラレータ２００を利用して演算処理を実行する情報処理装置に相当する。ホスト機器１００は、例えば1台でプリンタとスキャナ、コピー機、ファクシミリなどの機能を兼ねるＭＦＰで実現可能である。
【００３２】
プログラム蓄積部１１０には、ホスト機器９００にて実行されるプログラムコードが蓄積されている。
【００３３】
制御部１０５は、プログラム蓄積部１１０に記憶された所望のプログラムを実行することによりホスト機器１００全体を制御する。制御部１０５は、演算部１３０に所望の演算処理を実行させるとともに、ホスト機器１００と連携して、構成が最適化されたプログラマブルデバイス２２０を用いたアクセラレータ２００側の演算処理の実行を指示する。
【００３４】
コンフィギュレーションデータ格納部１１５は、プログラマブルデバイス２２０を構成又は再構成するためのコンフィギュレーションデータに関する情報と、構成後のプログラマブルデバイスで実行される演算処理と連携して、ホスト機器１００側にて実行される処理用のソフトウエアに関する情報とが組になって格納され、管理されている。コンフィギュレーションデータ格納部１１５には、例えば図８〜図１４に示したテーブル１〜テーブル７が格納されていてもよい。
【００３５】
なお、本実施形態では、コンフィギュレーションデータに関する情報の一例としてコンフィギュレーションデータの識別情報を用いるが、コンフィギュレーションデータに関する情報は、プログラマブルデバイス２２０を構成又は再構成するためのコンフィギュレーションデータを特定できる情報であれば識別情報に限られず、例えばコンフィギュレーションデータそのものであってもよい。
【００３６】
データ選択部１２０は、コンフィギュレーションデータ格納部１１５からアクセラレータ２００にて実行される演算処理の機能に応じたコンフィギュレーションデータの識別情報を選択する。
【００３７】
例えば、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中の演算処理の機能に対応したコンフィギュレーションデータの識別情報の内から、目的に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００３８】
また、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中の演算処理の目的に対応したコンフィギュレーションデータの識別情報の内から、機能に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００３９】
また、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中の演算処理の種類に対応したコンフィギュレーションデータの識別情報の内から、機能に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００４０】
また、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中のコンフィギュレーションデータの識別情報の内から、ユーザからの設定条件に対応したコンフィギュレーションデータであって、機能に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００４１】
また、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中の演算処理の対象機種に対応したコンフィギュレーションデータの識別情報の内から、機能に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００４２】
また、データ選択部１２０は、コンフィギュレーションデータ格納部１１５中のコンフィギュレーションデータの識別情報の内から、付加処理に対応したコンフィギュレーションデータであって、機能に応じたコンフィギュレーションデータの識別情報を選択してもよい。
【００４３】
データ転送部１２５は、データ選択部１２０により選択されたコンフィギュレーションデータに関する情報をアクセラレータ２００に転送する。
【００４４】
演算部１３０は、制御部１０５からの指示に従い、コンフィギュレーションデータ格納部１１５に格納されたソフトウエアの内、選択されたコンフィギュレーションデータと組になっているソフトウエアを実行することにより、アクセラレータ２００のプログラマブルデバイスと連携して演算処理を実行する。
【００４５】
なお、ホスト機器１００は、図示しないＣＰＵ、ＲＯＭ，ＲＡＭ、ＨＤＤ等から構成されている。ＲＯＭは、プログラムやデータを記憶するメモリである。ＲＡＭは、ホスト機器１００に内蔵されたＣＰＵが各種動作を行うときに必要なプログラムやデータを一時的に記憶するメモリである。ＣＰＵは、ＲＯＭやＲＡＭに格納されているプログラムやデータを読み込んで実行することにより、ホスト機器１００を制御するプロセッサである。ＨＤＤは、比較的大容量のデータを格納するのに適した記憶領域であり、本実施形態では、コンフィギュレーションデータ格納部１１５に格納されたデータを記憶する。
【００４６】
次に、図５の下側に示したアクセラレータ２００の構成について説明する。アクセラレータ２００は、データ通信部２０５、制御部２１０、コンフィギュレーションデータ記憶部２１５、リコンフィギュラブルプログラマブルデバイス（プログラマブルデバイス２２０）及びローカルメモリ２２５を有する。
【００４７】
データ通信部２０５は、ホスト機器１００のデータ転送部１２５から転送されたコンフィギュレーションデータの識別情報を取得する。
【００４８】
ローカルメモリ２２５は、制御部２１０による制御に必要なプログラムや各種データを記憶する。制御部２１０は、ローカルメモリ２２５に記憶された所望のプログラムを実行することによりアクセラレータ２００全体を制御する。制御部２１０は、ホスト機器１００の制御部１０５からの指示を受けて、ホスト機器１００と連携してアクセラレータ２００側の演算処理の実行を指示する。
【００４９】
コンフィギュレーションデータ記憶部２１５は、ホスト機器１００から転送され、データ通信部２０５により取得されたコンフィギュレーションデータの識別情報をその識別情報から識別されるコンフィギュレーションデータに対応させて記憶する。
【００５０】
プログラマブルデバイス２２０は、コンフィギュレーションデータ記憶部２１５に記憶され、コンフィギュレーションデータの識別情報から識別されるコンフィギュレーションデータに基づいて、プログラマブルデバイス２２０の演算アレイの回路を構成又は再構成する。プログラマブルデバイス２２０は、ホスト機器１００と連携して演算処理を実行する。
【００５１】
なお、アクセラレータ２００は、ホスト機器１００と同様、図示しないＣＰＵ、ＲＯＭ，ＲＡＭ等から構成されている。ＲＯＭは、プログラムやデータを記憶するメモリである。ＲＡＭは、アクセラレータ２００に内蔵されたＣＰＵが各種動作を行うときに必要なプログラムやデータを一時的に記憶するメモリである。ＲＡＭには、ホスト機器１００から転送されたコンフィギュレーションデータが記憶されてもよい。ＣＰＵは、ＲＯＭやＲＡＭに格納されているプログラムやデータを読み込んで実行することにより、アクセラレータ２００を制御するプロセッサである。
【００５２】
[ホスト機器及びアクセラレータの動作]
次に、本発明の一実施形態に係るホスト機器及びアクセラレータの動作について、図６のフローチャート（メインルーチン）及び図７のフローチャート（サブルーチン）を参照しながら説明する。図６は、コンフィギュレーションデータを選択し、選択されたコンフィギュレーションデータに基づきプログラマブルデバイスを構成又は再構成する場合の処理フローを示す。
【００５３】
本処理が開始されると、以下に示したステップＳ１０〜Ｓ８０の処理が実行される。
【００５４】
・ステップＳ１０
電源が投入され、ホスト機器１００およびアクセラレータ２００が起動され、アクセラレータ２００の機能が更新される。なお、電源投入だけでなく、ユーザからの指示に基づく更新、あるいはアクセラレータ２００のアイドル時間を検知した場合に行われる自動更新によるタイミングで本ステップが実行されても構わない。
【００５５】
・ステップＳ２０
ホスト機器１００の制御部１０５は、現在の機器設定を確認する。
【００５６】
・ステップＳ３０
ホスト機器１００のデータ選択部１２０は、機器設定の確認結果に基づいて、コンフィギュレーションデータ格納部１１５から、実行すべき演算処理の機能に応じたコンフィギュレーションデータを選択する。例えば、図８に示したテーブル１では、アクセラレータ２００を利用する本体（ホスト機器１００）側で使用するソフトウエアを識別する識別情報とアクセラレータ２００で使用するコンフィギュレーションデータを識別する識別情報の組が機能別に対になって記憶されている。データ選択部１２０は、テーブル１から実行予定の演算処理の機能に応じたコンフィギュレーションデータを選択する。例えば、実行予定の演算処理の機能が標準機能１であれば、コンフィギュレーションデータの識別情報ａ１が選択される。
【００５７】
・ステップＳ４０
ホスト機器１００のデータ転送部１２５は、アクセラレータ２００で使用する、選択されたコンフィギュレーションデータを指定する情報としてコンフィギュレーションデータの識別情報をアクセラレータ２００に転送する。
【００５８】
・ステップＳ５０
アクセラレータ２００の制御部１０５は、コンフィギュレーションデータ記憶部２１５の中から、ホスト機器１００から取得したコンフィギュレーションデータの識別情報から識別されるコンフィギュレーションデータを選択する。
【００５９】
・ステップＳ６０
アクセラレータ２００の制御部１０５は、選択されたコンフィギュレーションデータに基づきプログラマブルデバイス２２０を構成又は再構成する。
【００６０】
・ステップＳ７０
プログラマブルデバイス２２０の構成が完了したら、データ通信部２０５は、ホスト機器１００にその旨を通知する。
【００６１】
・ステップＳ８０
ホスト機器１００の制御部１０５は、コンフィギュレーションデータによる構成又は再構成後のプログラマブルデバイス２２０を用いて実行される演算処理と連携して、ホスト機器１００側にて実行される処理用のソフトウエアにより、アクセラレータ２００を駆動し、所望の演算処理を実行する。
【００６２】
次に、図６のステップＳ８０の演算処理の詳細について、図７の処理フローを参照しながら説明する。本処理が開始されると、以下のステップＳ８１〜Ｓ８７の処理が実行される。
【００６３】
・ステップＳ８１
ホスト機器１００の制御部１０５は、データ選択部１２０により選択されたコンフィギュレーションデータに対応するソフトウエアに従い演算開始処理（初期化など）を実行する。選択されたコンフィギュレーションデータに対応するソフトウエアの識別情報は、コンフィギュレーションデータ格納部１１５に格納されたコンフィギュレーションデータとソフトウエアとの識別情報の組から、選択されたコンフィギュレーションデータに対応するソフトウエアの識別情報を検索して特定する。例えば、実行すべき演算処理の機能が、図８のテーブル１に示した標準機能１であれば、コンフィギュレーションデータの識別情報ａ１に対するソフトウエアの識別情報Ａ１が特定される。ホスト機器１００側で用いるソフトウエアは、プログラム蓄積部１１０に蓄積されているプログラム群から、前記特定されたソフトウエアの識別情報により識別されるソフトウエアを検出して取得する。
【００６４】
・ステップＳ８２
アクセラレータ２００の制御部２１０は、演算開始処理（初期化など）を実行する。
【００６５】
・ステップＳ８３
処理が終了するまで、ステップＳ８４とステップＳ８５を繰り返す。処理が終了したら、ステップＳ８６に進む。
【００６６】
・ステップＳ８４
ホスト機器１００の演算部１３０は、所望の演算処理を実行し、アクセラレータ２００を駆動する。
【００６７】
・ステップＳ８５
アクセラレータ２００のプログラマブルデバイス２２０は、ホスト機器１００から依頼された演算処理を実行し、結果をホスト機器１００に返す。ステップＳ８３に戻る。
【００６８】
・ステップＳ８６
アクセラレータ２００の制御部２１０は、演算終了処理（後始末など）を実行する。
【００６９】
・ステップＳ８７
ホスト機器１００の制御部１０５は、演算終了処理（後始末など）を実行する。
【００７０】
以上、本実施形態に係る演算処理方法について説明した。
【００７１】
[コンフィギュレーションデータの管理]
次に、コンフィギュレーションデータ格納部１１５に格納されるコンフィギュレーションデータのデータ管理例１〜管理例７について、図８〜図１４に示したテーブル１〜テーブル７を参照しながら説明する。
【００７２】
＜管理例１：テーブル１＞
前述したようにまず、図８のテーブル１では、アクセラレータ２００を利用する本体（ホスト機器１００）側で使用するソフトウエアの識別情報とアクセラレータ２００で使用するコンフィギュレーションデータの識別情報とが機能別に組になって記憶されている。テーブル１では、機能毎に複数のコンフィギュレーションデータの識別情報が管理されている。
【００７３】
これによれば、テーブル１から実行すべき演算処理の機能に応じたコンフィギュレーションデータを選択することができる。これにより、アクセラレータ２００内のプログラマブルデバイス２２０を演算処理の機能に応じて構成又は再構成することができる。この結果、演算処理の機能に応じて構成が適正化されたプログラマブルデバイス２２０を用いた演算処理の実行により、演算処理の機能に応じてアクセラレータ２００を効果的に利用することができる。
【００７４】
＜管理例２：テーブル２＞
次に、図９のテーブル２に示した管理例２について説明する。テーブル２では、機能毎に設けられたソフトウエアに対して目的別に２つのコンフィギュレーションデータが格納されている。このように、コンフィギュレーションデータの識別情報は、機能毎に目的別に複数格納され、管理されてもよい。目的は用途であってもよく、例えば、高速処理か省電力かを示すモードであってもよい。目的が異なれば、選択されるコンフィギュレーションデータは異なることになり、その結果、プログラマブルデバイスは、異なる構成に変更される。
【００７５】
テーブル２では、目的として高速処理又は省電力処理の２つが挙げられている。よって、テーブル２を用いれば、同じ機能の演算処理であっても、高速処理を目的とした場合のプログラマブルデバイスと、省電力処理を目的とした場合のプログラマブルデバイスとを異なる構成にすることができる。このようにして、プログラマブルデバイス２２０は、演算処理の機能だけでなく目的に応じて適正化される。これにより、省電力処理を目的とした場合には高速処理を目的とした場合より、演算処理の速度は多少犠牲にされても演算処理中の消費電力を低下させることができる。
【００７６】
＜管理例３：テーブル３＞
アクセラレータ２００のコンフィギュレーションデータが変化した場合、ホスト機器１００本体側のソフトウエアを変更しなければならないことがある。あるいは、本体側ソフトウエアの変更にともない、アクセラレータのコンフィギュレーションデータを変更する必要が生じる場合もある。そのような場合、図１０のテーブル３に示したように、モード（目的）別に本体側ソフトウエアとコンフィギュレーションデータとを管理しておき、モードに応じて、本体側ソフトウエアとコンフィギュレーションデータとをそれぞれ選択すればよい。図１０に示したコンフィギュレーションデータ格納部１１５には、目的毎に機能別にコンフィギュレーションデータの識別情報が格納され、管理されている。
【００７７】
＜管理例４：テーブル４＞
より一層の高速化が必要な処理と、高速化よりは低消費電力化が望まれる処理についてユーザの状況との関係を考える。例えば、スキャナやコピー、プリンタ、ファクシミリなどを１台の機器にまとめたＭＦＰの処理に関して考えると、コピー処理やプリント処理は、１データから複数部数を指定されることが多い処理であり、ユーザがＭＦＰの前で待たねばならない場面が多いゆえに、より一層の高速化が求められる。
【００７８】
これに対して、スキャン処理やファクシミリ受信／送信は、１データから複数部数の具体物を作成する必要はない。スキャン処理の場合、具体物である紙を入力してしまえば、処理結果は電子データとしてユーザの手元の機器に送信されるから、ユーザは、後段の処理の完了を待つことなくＭＦＰの前を離れることができる。ファクシミリの場合、送信処理はスキャン処理と同様であるし、受信処理はユーザに待たれることなく完了することが多く、受信し終わった後に、紙やデータをユーザが目にする。
【００７９】
よって、アクセラレータ２００を利用する場合、ユーザのこのような状況をコンフィギュレーションデータの選択に反映させて、プログラマブルデバイス２２０の構成を高速化を目的とした構成と、省電力化を目的とした構成との２つを使い分けることが好ましい。これによって、ユーザが生産性を重視する機能においては生産性を維持した高速な演算処理、使用者が生産性を重視しない機能においては省電力化を図る演算処理を実行し、効果的な演算処理を実現できる。
【００８０】
そのためには、図１１のテーブル４に示したように、ユーザ（使用者）の生産性に対する要求に着目して、機能を分類し、その分類ごとに本体側ソフトウエアとアクセラレータのコンフィギュレーションデータとを管理すればよい。演算処理の分類とは、例えばプリンタ、コピー、ファクシミリ、スキャナ等をいう。ユーザが実行したい演算処理の分類（機器分類）及び機能を選択した際、テーブル４から演算処理の分類及び機能に応じたコンフィギュレーションデータを選択する。これにより、コンフィギュレーションデータに基づくプログラマブルデバイス２２０の構成が、演算処理の分類及び機能に応じて適正化される。これにより、ユーザの使用感を損なうことなく低消費電力による運用を実現できる。
【００８１】
＜管理例５：テーブル５＞
入力データおよび演算処理の種類が決まれば、処理量が推測できる処理においては、推測された処理量とホスト機器１００の能力とから事前に予想処理時間が算出できる。したがって、使用感が損なわれるほどの待ち時間が予想される場合には、より短時間で処理が済むような機器構成にプログラマブルデバイス２２０の構成を切り替えることが好ましい。反対に、予想処理時間が使用感に大きく影響しないのであれば、より多くの時間がかかっても低電力で済む機器構成を選択する。
【００８２】
たとえば前述したＭＦＰの例においては、ユーザの入力操作に対応した入力条件である印刷サイズの大きさ、解像度、画像種類によって、画象処理の処理量は大きく変化する。最大処理量の際の処理時間が、ユーザの使用感を損なわないようにプログラマブルデバイス２２０を構成すると、処理量の少ない場合においては、必要以上に短時間で処理が完了してしまう。
【００８３】
このような過剰性能の弊害を避けるためには、図１２のテーブル５に示したように、演算処理の条件（入力データ条件）毎に機能別のコンフィギュレーションデータの識別情報が格納され、管理されてもよい。演算処理の条件とは、例えばユーザの操作により設定される入力データの条件をいい、具体的には、テーブル５に示したように、出力用紙のサイズ、画素数やモノクロ又はカラーの条件等が挙げられる。
【００８４】
これによれば、入力データの条件ごとに、処理時間と消費電力とのバランスのとれた機器構成を管理しておき、入力されたタイミングで、プログラマブルデバイス２２０の構成を変更する。このように入力データおよび処理種類に応じて、プログラマブルデバイス２２０の構成を変更することによって、ユーザの使用感を損なうことなく、低消費電力による運用を実現できる。
【００８５】
＜管理例６：テーブル６＞
ホスト機器１００本体とアクセラレータ２００との組み合わせで処理負荷のバランスを考慮した演算処理を実現するにあたり、ホスト機器１００本体は多機種が展開されている場合であっても、オプションとして装着されることの多いアクセラレータ２００の製造数は少ない。よって、ホスト機器１００の機種ごとにアクセラレータ２００を製造すると製造コストが増大する傾向がある。このため、アクセラレータ２００は、組み合わせ対象であるホスト機器１００本体の機種によらず１種のみ製造される場合も多い。
【００８６】
このような場合、ホスト機器１００本体の処理能力とアクセラレータの処理能力とのバランスは一定ではない。このため、同一処理を分担実行する際、機種が変わると最適な負荷分担の割合が異なってしまう場合がある。これを考慮して、図１３のテーブル６に示したように、ホスト機器１００本体とアクセラレータ２００とを接続設定する際の設定事項として、ホスト機器１００本体とアクセラレータ２００とを別媒体にて管理する。ここでは、ホスト機器１００本体の機種は、プリンタ機器やコピー機器の品番等で特定される。
【００８７】
このように本体機種毎に機能別に本体側ソフトウエアとアクセラレータのコンフィギュレーションデータの組を管理し、ホスト機器１００本体とアクセラレータ２００との組み合わせが決まったら、テーブル６に基づき、ホスト機器１００本体側のソフトウエアとアクセラレータ２００のコンフィギュレーションデータとを選択する。これにより、コンフィギュレーションデータに基づくプログラマブルデバイス２２０の構成が、演算処理を実行する機種及び機能に応じて適正化される。
【００８８】
具体的には、機種別に管理されたホスト機器１００本体側ソフトウエアとアクセラレータ２００のコンフィギュレーションデータとを全て本体およびアクセラレータ２００中の不揮発メモリに格納しておき、電源を投入してシステム立ち上げ時に、最適な組み合わせを選択し、選択されたコンフィギュレーションデータに基づきプログラマブルデバイス２２０を構成又は再構成する。
【００８９】
あるいは、ホスト機器１００本体側ソフトウエアとアクセラレータ２００のコンフィギュレーションデータを自動あるいは手動に選択して、インストールする方法も考えられる。これらはシステム設計事項であり、当業者が適宜選択できる。
【００９０】
＜管理例７：テーブル７＞
ユーザが処理を要求する演算処理の機能に加えて、その演算処理に付随した処理も併せて処理要求された場合には、総合的な処理量が増加するから、ホスト機器１００本体とアクセラレータ２００との間の最適な負荷分散も変わる。
【００９１】
たとえばＭＦＰの場合、基本的なスキャン処理に加えて、オプションとして、入力データのサムネイル画像を作成するか否か、プレビュー画像を作成するか否か、などが選択可能なものがある。このような付加的な処理がユーザ等により指定された場合においても最適な負荷バランスを保つために、図１４のテーブル７に示したように、指定可能な付加機能毎に最適な機器構成を実現する本体側ソフトウエアとアクセラレータのコンフィギュレーションデータとの組を管理しておき、ユーザが機能選択およびオプション選択したタイミングでプログラマブルデバイス２２０の構成を変更すればよい。付加処理は、アクセラレータ２００にて実行される演算処理に付加される処理内容を示し、具体的には、サムネイル画像の作成、プレビュー画像の作成、プレビュー画像とサムネイル画像の作成等が挙げられる。
【００９２】
［効果］
以上に説明したように、本実施形態にて実行される演算処理方法によれば、電源を遮断することなく、演算処理の機能毎にアクセラレータ２００の回路構成を再構成して最適化することができる。これにより、ホスト機器１００は、構成を機能別に適正化したプログラマブルデバイス２２０を有するアクセラレータ２００を用いて、処理時間を短縮することができるだけでなく、例えば、プログラマブルデバイス２２０の回路規模を小さくすることにより通電するトランジスタ数を減じ、リーク電力を抑えることができる。
【００９３】
また、本実施形態によれば、高速処理の観点を具現化するコンフィギュレーションデータだけでなく、省電力化の観点を具現化するコンフィギュレーションデータを事前に準備し、コンフィギュレーションデータ格納部１１５に格納し、演算処理の実行条件に基づき最適なコンフィギュレーションデータを選択可能な仕組みが提供される。これにより、ユーザの使用感を損なうことなく、高速化と省電力化とを実現できる。この結果、処理の高速化の用途に専ら用いられていたアクセラレータ２００を、省電力の用途にも適用可能にすることができ、アクセラレータ２００の利用範囲をさらに広げることができる。
【００９４】
このように本発明の一実施形態によれば、動的に再構成できるプログラマブルデバイス２２０を用いて、処理に必要な部分のみに通電するよう回路規模を変化させることによって、高速処理を維持したまま、リーク電力を抑えて省電力を実現できる。省電力化にともない発熱も抑えられるので廃熱に必要な冷却処理の負担も軽減でき、システム全体としての省電力化も達成できる。
【００９５】
加えて、アクセラレータ２００と連携するホスト機器１００本体の性能（ＣＰＵ他）に応じて、アクセラレータ２００内の回路構成を変えることによって、ホスト機器１００本体とアクセラレータ２００との処理分担を最適化し、総合的な処理性能（処理時間と消費電力とのバランス）を高めることができる。また、本実施形態に係るホスト機器１００によるアクセラレータ２００の利用において、高速化を目的とした構成と、省電力化を目的とした構成との２つを目的別に使い分けてプログラマブルデバイス２２０の構成を変更及び適正化することによって、生産性を維持した上での低消費電力を実現することができる。
【００９６】
＜おわりに＞
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明の技術的範囲はかかる例に限定されない。本発明の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属する。
【００９７】
例えば、上記実施形態では、ホスト機器側で利用されるソフトウエアと、アクセラレータ側で利用されるコンフィギュレーションデータとを機能別に組にして格納するコンフィギュレーションデータ格納部１１５を開示した。そして、上記実施形態では、このコンフィギュレーションデータ格納部１１５はホスト機器１００内に記憶されていた。しかしながら、ホスト機器側で利用されるソフトウエアと、アクセラレータ側で利用されるコンフィギュレーションデータとを組にして格納する格納領域は、ホスト機器１００に内蔵されている場合に限られず、例えばホスト機器１００とネットワークにより接続された任意の記憶装置に記憶され、その記憶装置により管理され、ホスト機器１００が適宜、記憶装置から取得するようにしてもよい。
【００９８】
コンフィギュレーションデータ記憶部２１５も同様に、必ずしもアクセラレータ２００に内蔵されている必要はなく、例えばアクセラレータとネットワークにより接続された任意の記憶装置に記憶され、その記憶装置により管理され、アクセラレータ２００が適宜、記憶装置から取得するようにしてもよい。
【００９９】
また、上記実施形態では、ホスト機器１００側で選択されたコンフィギュレーションデータは、コンフィギュレーションデータの識別情報をホスト機器１００からアクセラレータに送信することにより特定するようにした。しかしながら、コンフィギュレーションデータに関する情報の受け渡しはこれに限らず、例えばホスト機器１００側で選択されたコンフィギュレーションデータそのものをホスト機器１００からアクセラレータ２００に送信することもできる。この場合には、コンフィギュレーションデータ記憶部２１５は不要である。
【符号の説明】
【０１００】
１００    ホスト機器
１０５    制御部
１１０    プログラム蓄積部
１１５    コンフィギュレーションデータ格納部
１２０    データ選択部
１２５    データ転送部
１３０    演算部
２００    アクセラレータ
２０５    データ通信部
２１０    制御部
２１５    コンフィギュレーションデータ記憶部
２２０    プログラマブルデバイス（リコンフィギュラブルプログラマブルデバイス）
２２５    ローカルメモリ
【先行技術文献】
【特許文献】
【０１０１】
【特許文献１】特開２００８−１６５７４６号公報
【図１】
2013098823.tif 000003
【図２】
2013098823.tif 000004
【図３】
2013098823.tif 000005
【図４】
2013098823.tif 000006
【図５】
2013098823.tif 000007
【図６】
2013098823.tif 000008
【図７】
2013098823.tif 000009
【図８】
2013098823.tif 000010
【図９】
2013098823.tif 000011
【図１０】
2013098823.tif 000012
【図１１】
2013098823.tif 000013
【図１２】
2013098823.tif 000014
【図１３】
2013098823.tif 000015
【図１４】
2013098823.tif 000016