(57)【要約】【課題】並列処理によりプログラムを実行可能な複数の演算部を有するアクセラレータが、自らの内部の複数の演算部間の分担を決定して、プログラムを実行可能なアクセラレータを提供する。【解決手段】アクセラレータ３は、PC２に接続可能で、プログラムを実行可能なアクセラレータである。アクセラレータ３は、プログラムを並列処理により実行可能な複数の演算部２２ａと、複数の演算部２２ａのそれぞれの動作及び処理能力の少なくとも一方を制御するF/V制御部２２ｃと、実行するプログラムについての負荷情報に基づいて、複数の演算部２２ａのそれぞれの動作及び処理能力の少なくとも一方を決定して、その決定に応じてF/V制御部２２ｃを制御する演算部２１ａとを有する。【選択図】図２
2008165746.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置に接続可能で、プログラムを実行可能なアクセラレータであって、
前記プログラムを並列処理により実行可能な複数の演算部と、
前記複数の演算部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部と、
実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、その決定に応じて前記動作制御部を制御する制御部と、
を有することを特徴とするアクセラレータ。
【請求項２】
アクセラレータと、前記アクセラレータと接続されたコンピュータとを有する情報処理装置であって、
前記アクセラレータは、プログラムを実行可能なアクセラレータであって、
前記プログラムを並列処理により実行可能な複数の演算部と、
前記複数の演算部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部と、
実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、その決定に応じて前記動作制御部を制御する制御部と、
を有することを特徴とする情報処理装置。
【請求項３】
情報処理装置に接続可能なアクセラレータであって、
プログラムを並列処理により実行可能な複数の演算部と、
対象データに対する所定の処理を並列に実行可能な複数のハードウエアエンジン部と、
前記複数の演算部および前記複数のハードウエアエンジン部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部と、
実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、かつ前記対象データについての負荷情報に基づいて、前記複数のハードウエアエンジン部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、その決定に応じて前記動作制御部を制御する制御部と、
を有することを特徴とするアクセラレータ。
【請求項４】
アクセラレータと、前記アクセラレータと接続されたコンピュータとを有する情報処理装置であって、
前記アクセラレータは、
プログラムを並列処理により実行可能な複数の演算部と、
対象データに対する所定の処理を並列に実行可能な複数のハードウエアエンジン部と、
前記複数の演算部および前記複数のハードウエアエンジン部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部と、
実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、かつ前記対象データについての負荷情報に基づいて、前記複数のハードウエアエンジン部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、その決定に応じて前記動作制御部を制御する制御部と、
を有することを特徴とする情報処理装置。
【請求項５】
プログラムを並列処理により実行可能な複数の演算部と、前記複数の演算部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部とを有するアクセラレータを用いる情報処理方法であって、
実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定し、
その決定に応じて前記動作制御部を制御することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセラレータ、情報処理装置及び情報処理方法に関し、特に、情報処理装置に接続可能でプログラムを並列処理により実行可能な複数の演算部を有するアクセラレータ、そのアクセラレータに接続された情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来より、演算機能を有する装置を情報処理装置に付加して、実行される処理の一部を、その付加した装置に分担させる技術が知られている。例えば、情報処理装置としてのパーソナルコンピュータ（以下、PCという）に、アクセラレータと呼ばれる演算機能を有する装置を装着して、PC本体の中央処理装置（以下、CPUという）が、アクセラレータにプログラムの処理を分担させ、処理速度の向上を図る技術がある。
【０００３】
最近では、処理分担あるいは処理速度向上を単に図るだけでなく、消費電力を考慮した、本体部にアクセラレータを付加した情報処理装置も、例えば、特開２００３−１５７８５号公報に、提案されている。
【０００４】
その提案に係る技術によれば、本体部側のCPUが、付加されたアクセラレータの性能情報を読み込み、その性能情報に基づいてアクセラレータの駆動電圧あるいは駆動周波数を決定して設定するようにすることによって、低消費電力モード等に対応したアクセラレータの駆動が可能となる。
【０００５】
しかし、上記の提案に係る情報処理装置の場合、アクセラレータの駆動電圧等を決定するのは本体部側のCPUであり、そのために、そのCPUがその決定処理を実行しなければならず、CPUにオーバーヘッドが発生する。
【０００６】
また、アクセラレータ内部に複数の演算部があるような場合について、上記の提案に係る情報処理装置は、何ら考慮されていない。
【特許文献１】特開２００３−１５７８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、以上の問題に鑑みてなされたものであり、並列処理によりプログラムを実行可能な複数の演算部を有するアクセラレータが、自らの内部の複数の演算部間の分担を決定して、プログラムを実行可能なアクセラレータ、情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、情報処理装置に接続可能で、プログラムを実行可能なアクセラレータであって、前記プログラムを並列処理により実行可能な複数の演算部と、前記複数の演算部のそれぞれの動作及び処理能力の少なくとも一方を制御する動作制御部と、実行する前記プログラムについての負荷情報に基づいて、前記複数の演算部のそれぞれの前記動作及び処理能力の少なくとも一方を決定して、その決定に応じて前記動作制御部を制御する制御部と、を有するアクセラレータを提供することができる。
【発明の効果】
【０００９】
本発明によれば、並列処理によりプログラムを実行可能な複数の演算部を有するアクセラレータが、自らの内部の複数の演算部間の分担を決定して、プログラムを実行可能なアクセラレータ、情報処理装置及び情報処理方法を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）  
まず図１に基づき、本発明の第１の実施の形態に係わる情報処理装置の構成を説明する。図１は、本実施の形態に係わる情報処理装置の構成を示す構成図である。  
情報処理装置１は、PCアーキテクチャを有するコンピュータであるPC２を含んで構成されている。PC２には、アクセラレータ３が付加可能に、すなわち接続可能になっている。PC２は、CPU（Central Processing Unit）１１と、MCH（Memory Controller Hub）１２と、ICH（I/O Controller Hub）１３と、GPU（Graphics Processing Unit）１４と、主メモリ１５と、画像メモリとしてのVRAM（Video RAM）１６とを含んで構成される情報処理装置である。よって、このようなPCアーキテクチャを有するPC２にアクセラレータ３が接続されて情報処理装置１が構成されている。なお、本実施の形態では、PCアーキテクチャとして、CPU１１と、MCH１２と、ICH１３と、GPU１４からなるPCアーキテクチャの例を示すが、PCアーキテクチャは、このような構成に限られるものではない。
【００１１】
特に、MCH１２は、CPU１１と主メモリ１５との接続等の機能を担う、いわゆるノースブリッジの機能を有する半導体装置のチップである。ICH１３は、PCIバス、USB等を介して、ハードディスク装置（以下、HDDという）１７等の、他の構成要素と結び付ける等、いわゆるサウスブリッジの機能を有する半導体装置のチップであり、ここでは、ICH１３は、USB2、SATA（Serial ATA）、Audio、PCI Express等の規格に応じた各信号の入出力を制御する。また、グラフィック用処理装置であるGPU１４は、いわゆるグラフィックエンジンであり、３次元グラフィックスの表示に必要な計算処理を行う半導体装置のチップである。
【００１２】
演算機能を有する付加装置としてのアクセラレータ（以下、ACと略す）３は、ICH１３に接続されており、さらに、自己のワーキングメモリとしてのRAM（フラッシュメモリ等でもよい）４にも接続されているチップである。周辺デバイスとしてのAC３の構成については後述する。なお、RAM４は、AC３の内部に設けてもよい。  
CPU１１は、各種のアプリケーションプログラムを実行可能であり、各種アプリケーションプログラムの中には、負荷量の高いプログラムもあれば、負荷量の低いプログラムもある。従って、CPU１１は、負荷量の高いアプリケーションプログラム、例えば、画像認識のアプリケーションプログラム、動画の再生等のアプリケーションプログラムの実行を、AC３に依頼して、行わせることができる。具体的には、情報処理装置１において、あるアプリケーションプログラムをAC３を用いて実行する場合には、CPU１１がAC３に対して所定のコマンドを出力し、AC３は、そのコマンドを受信してCPU１１により指定されたプログラムの処理を行う。その場合、例えば、AC３は、指定された処理、例えば画像の認識処理、を行う場合、SATA等からのストリーム信号をDMAにより読み込んで、その認識処理を行い、その認識処理した結果データを、DMAにより、GPU１４等に転送して出力する。
【００１３】
PCI Expressは、1以上のレーン数を有する。ICH１３とAC３とは、所定のレーン数、例えば、１、２、４、８等のレーン数のPCI Expressにより接続される。レーン数は、BIOS等により設定される。例えば、ICH１３とAC３とは、4レーンのPCI Expressにより接続される。
【００１４】
なお、図１において点線で示すように、複数のAC３のそれぞれを、PCI Expressの各レーンに接続するようにして、複数のAC３をICH１３に接続するようにしてもよい。その結果、演算処理負荷の高いアプリケーションプログラムに対して、後述するプロセッシングユニットの数を増やして対応することができる。
【００１５】
さらになお、複数のAC３をICH１３に接続するときに、各AC３とICH１３とは、複数のレーンにより接続するようにしてもよい。
【００１６】
AC3は、並列処理可能なマルチコア・マルチプロセッサ・アーキテクチャを有する半導体装置のプロセッサであり、各演算部の動作及び処理能力が制御される。
【００１７】
本実施の形態では、AC3は、プログラムを並列処理可能な複数の演算部を含み、AC3は、その指定された処理を実行するときに、自らが複数の演算部間での分担を決定して、各演算部に処理を実行させる。分担の決定では、AC3は、自ら、複数の演算部のどの演算部にその処理を実行させるかを決定し、その処理を実行する演算部に対しては、電力を供給し、かつその実行に際しての動作周波数を決定して設定する。
【００１８】
次に、AC３の構成を説明する。図２は、AC３の構成を説明するためのブロック図である。AC３は、制御用プロセッシングユニット（以下、CPEと略す）２１と、複数の、ここでは４つの、プロセッシングユニット（以下、PEと略す）と、インターフェース部（以下、I/F部と略す）２３とを含む。４つのPEは、それぞれをPE２２A,PE２２B,PE２２C,PE２２Dとする。以下、纏めてあるいは１つのPEを指すときはPE２２という。さらに、AC３は、I/F部２４を含み、AC３に接続されたRAM４内のプログラム及びデータを読み出すことができる。CPE２１と各PE２２とI/F部２３とI/F部２４は、互いに内部バス２５を介して接続されている。I/F部２３は、内部バス２５と、PCアーキテクチャのバスとのインターフェースのための回路である。CPE２１は、電源が投入されると、CPU１１から、プログラム及びデータがロードされてRAM４にストアされる。なお、そのプログラム及びデータは、AC３内にROMを設けて、そのROMに記憶しておき、CPE２１は、そのROMから読み出すようにしてもよい。さらに、その他の入出力端子２６、PLL回路２７、およびデジタル温度センサ（以下、DTSと略す）２８も、AC３のチップ内に設けられている。
【００１９】
CPE２１は、内部に、制御部である演算部２１aと、キャッシュメモリ２１ｂを含む。各PEは、演算部とローカルメモリとを含む。また、各PEには、周波数／電圧制御（以下、F/V制御と略す）部が設けられている。具体的には、PE22A,22B,22C,22D（以下、纏めてあるいは１つのPEを指すときはPE２２という）は、それぞれ、演算部22Aa,22Ba,22Ca,22Da（以下、纏めてあるいは１つの演算部を指すときは演算部２２ａという）と、ローカルメモリ22Ab,22Bb,22Cb,22Db（以下、纏めてあるいは１つのローカルメモリを指すときはローカルメモリ２２ｂという）とを有する。そして、各PE２２には、F/V制御部22Ac,22Bc,22Cc,22Dc（以下、纏めてあるいは１つのF/V制御部を指すときはF/V制御部２２ｃという）が設けられている。
【００２０】
演算部２２ａは、CPE２１からの依頼に基づいて、処理プログラムを並列処理する回路である。演算部２２ａは、特定用途向けのハードウエアエンジンでもよいが、本実施の形態では、プログラム可能な汎用な処理部である。各演算部２２ａは、AC３における内部演算のためのリソースである。後述するように、演算部２２ａは、１以上の演算部を用いて処理プログラムを並列処理する。  
演算部２２ａは、ここでは、データ幅が１２８ビットのデータに対してSIMD演算が可能な演算部である。さらに、演算部２２ａは、３２ビットの単精度及び６４ビットの倍精度のフローティング演算が可能である。
【００２１】
各ローカルメモリ２２ｂは、処理プログラム及び処理対象のデータである対象データをストアする記憶部である。
【００２２】
例えば、各PE２２では、画像データに対する画像認識処理、あるいは画像データのエンコード及びデコード処理等のコーデック処理を行う場合、HDD１７あるいは図示しないカメラから読み出された処理対象のデータが、各ローカルメモリ２２ｂの容量に合わせて分割された状態で各ローカルメモリ２２ｂに記憶される。そして、各演算部２２ａは、SIMD演算により、その記憶されたデータに対して所定の処理を実行し、実行結果を各ローカルメモリ２２ｂに記憶する。各PE２２では、所定の処理が終了すると、ローカルメモリ２２ｂから処理されたデータは、HDD１７に転送され、次に処理すべきデータがHDD１７から各ローカルメモリ２２ｂに転送され、上述したように所定の処理が行われる。以上の処理を繰り返すことによって、情報処理装置１では、AC３を利用して、画像認識処理等がスムーズに行われる。
【００２３】
各F/V制御部２２ｃは、対応する演算部２２ａの動作及び処理能力の両方を制御する動作制御部であり、具体的には、対応する演算部２２ａへ供給するクロック信号の周波数の変更の機能、演算部２２ａ内の各回路へ供給されるクロック信号の供給と停止の機能、及び演算部２２ａ内の各回路へ供給される電力の供給と停止の機能を有する回路である。なお、各回路へ供給されるクロックCLKは、PLL回路２７から供給される。
【００２４】
なお、ここでは、各PE２２にF/V制御部２２ｃが設けられているが、４つのPE２２の全体に対して一つのF/V制御部２２ｃを設けて、４つのPE２２の全体に対してクロック信号の周波数の変更、クロック信号の供給と停止、及び電力の供給と停止を行うようにしてもよい。その場合、PLL回路２７の出力は、図２において点線で示すスイッチ回路２９を介して出力するようにし、そのスイッチ回路２９に対してクロックの供給を停止するための制御信号が、CPE２１から供給される。
【００２５】
動作周波数の変更の機能は、後述するように、処理プログラムの負荷に比べて、各PE２２内の各演算部２２ａが提供できる演算性能が高い場合に、各PE２２内の各演算部２２ａ等の動作周波数を低減して、クロック信号による消費電力を最適にするための機能である。
【００２６】
クロック信号の供給と停止の機能、すなわち、クロックゲーティング機能は、各PE２２内の各演算部２２ａ等に対するクロック信号の供給と停止を行うための機能である。クロック信号の供給が停止されると、クロック信号による消費電力を０（ゼロ）に抑えることができる。
【００２７】
電力の供給と停止の機能は、各PE２２内の各演算部２２ａ等に対する電力の供給と停止を行う機能である。電力の供給が停止されると、内部回路のリーク電流による消費電力を０（ゼロ）に抑えることができる。
【００２８】
各演算部２２ａへ供給されるクロック周波数は、各演算部２２ａの処理能力を示す。各演算部２２ａについて予め決められた最大動作周波数のとき、その演算部２２ａの処理能力は最大となり、各F/V制御部２２ｃは、その最大動作周波数以下に変更することによって、演算部２２ａの処理能力を、最大処理能力以下に、制御することができる。
【００２９】
また、各演算部２２ａへ供給されるべきクロック信号の供給を停止することによって、各F/V制御部２２ｃは、各演算部２２ａの動作を停止させることができる。同様に、各演算部２２ａへ供給されるべき電力、例えば供給電圧、の供給を停止することによって、各F/V制御部２２ｃは、演算部２２ａの動作を停止させることができる。従って、各F/V制御部２２ｃは、演算部２２ａへのクロック信号の周波数の変更をしたり、クロック信号の供給を制御、すなわちクロックゲーティングを行ったり、各演算部２２ａへの電力の供給を制御することによって、各演算部２２ａの動作を制御することができる。
【００３０】
なお、本実施の形態では、各F/V制御部２２ｃは、対応する演算部２２ａの動作及び処理能力の両方を制御するが、動作及び処理能力の少なくとも一方でもよい。
【００３１】
そして、CPE２１の演算部２１ａが、後述するように、各PE２２と各F/V制御部２２ｃを制御する。よって、各F/V制御部２２ｃによる演算部２２ａの動作及び処理能力の制御は、CPE２１の演算部２１ａの指示に応じて行われる。
【００３２】
上述したように、制御部である演算部２１ａは、CPU１１から所定の処理を実行する旨のコマンドを受信すると、４つのPE２２に対して所定の指示を出力する。その所定の指示には、どのPE２２がその処理を実行するのかの指示、そのときの動作周波数をどのくらいにするのかの指示、等を含む。
【００３３】
また、AC３のCPE２１は、可変の電源である、外部の電源回路モジュールであるVRM(Voltage Regulator Module)３０に対して、所定のコード信号VID、例えば６ビット信号、を出力し、VRM３０は、その所定のコード信号VIDに応じた電源電圧VをAC3に供給する。
【００３４】
さらにまた、AC３上の各回路は、複数の、ここでは１３個の、ブロックに分けられ、その分けられたブロック毎に別々に電源が供給されるように、AC３は構成されている。すなわち、各電源に対して、その電源を供給する回路部分のブロックが予め決められており、各電源は、その予め決められたその対応するブロックのみに電源を供給する。具体的には、CPE２１を含むブロックB1には、内部ロジック用電源PS1から電源が供給される。PLL回路２７を含むブロックB2には、PLL部用アナログ電源PS2からの電源が供給される。DTS２８を含むブロックB3には、デジタル温度センサ部用アナログ電源PS3からの電源が供給される。PCI Express用のI/F２３の一部を含むブロックB4には、第１のPCI Expressロジック用電源PS4からの電源が供給される。PCI Express用のI/F２３の他の一部を含むブロックB5には、第２のPCI Expressロジック用電源PS5からの電源と、PCI Express用アナログ電源PS6からの電源が供給される。I/F２４の一部を含むブロックB7には、I/F２４用アナログ電源PS7からの電源が供給される。I/F２４の他の一部を含むブロックB8には、I/F２４ロジック用電源PS8からの電源が供給される。その他の入出力端子２６を含むブロックB9には、その他の入出力端子２６用電源PS9からの電源が供給される。４つの各PE２２には、それぞれ、PE用電源PS10,PS11,PS12,PS13からの電源が供給される。
【００３５】
例えばアプリケーションプログラムが実行されていてAC3を使用する状態では、電源PS1からPS13のすべてから各回路部に電源が供給されるように、CPU１１は、各電源からの電源供給を制御する。また、例えばAC３を使用しない状態では、不要な電源の供給がされないように、CPU１１は、電源供給を制御する。より具体的には、CPU１１が、AC3に対してデバイスステートを指示すると、CPE２１は、そのデバイスステートの情報を受信し、その情報に応じて、外部の電源コントローラ３１に対して、各電源PS1からPS13の電源供給状態を指示する。外部電源コントローラ３１は、その電源供給状態の指示に従って、各電源PS1からPS13の電源供給状態を変更する。デバイスステートには、上述したようなすべての電源PS1からPS13からの電源を供給するフル状態D0、電源PS1からPS13中の一部の電源からのみ電源供給を行う状態D1、及び、いわゆるスリープ状態D2のような状態がある。
【００３６】
以上のように、CPU１１により、情報処理装置１の状態に応じて、ここでは、AC３の使用状態に応じて、AC３内の各ブロックに対する電源供給の制御が行われる。
【００３７】
図３は、CPU１１の処理の流れの例を示すフローチャートである。CPU１１における処理プログラムは、主メモリ１５内にストアされて、CPU１１によって実行される。  
CPU１１が各種処理を実行している途中で、ある処理、ここでは画像の認識処理、をAC３に分担させる場合の例で説明する。CPU１１は、AC３との間で、その処理を依頼する前に、所定の前処理を実行した後に、CPU１１は、その画像認識プログラムをAC３に送信する（ステップS1）。CPE２１の演算部２１ａは、CPU１１からの画像認識プログラムをRAM４にストアする。
【００３８】
次に、CPU１１は、画像認識処理の対象である対象データのアドレスと、認識処理の結果データのアドレスと、画像認識プログラムの負荷情報と、画像認識プログラムの並列度情報とを、AC３へ送信する（ステップS2）。AC３は、受信した負荷情報と並列度情報をRAM４に蓄積する。
【００３９】
負荷情報は、処理の重さを示す情報であり、並列度情報は、その処理プログラムを並列処理できる度合いを示す情報である。本実施の形態では、負荷情報と並列度情報は、０（ゼロ）を含む整数０，１，２，・・で示す例で説明する。負荷情報は、その数が大きい程、その処理の負荷が大きいことを示す。並列度情報は、その数に応じたPEの数で実行可能な処理であることを示す。
【００４０】
負荷情報と並列度情報は、処理プログラム毎に、予め決められて、主メモリ１５にストアされている。図４は、その負荷情報と並列度情報を示すテーブルデータの例を示す図である。
【００４１】
図４に示すように、処理プログラム毎に、負荷情報と、並列度情報とが予め設定されている。処理プログラムAは、負荷が２であり、並列度が４であることが示されている。処理プログラムBは、負荷が１であり、並列度が１であることが示されている。処理プログラムCは、負荷が１であり、並列度が４であることが示されている。
【００４２】
図４の表データは、主メモリ１５に予め記憶されているので、CPU１１は、AC３に依頼する処理プログラムの負荷情報と並列度情報を、主メモリ１５から読み出して取得してAC３に送信することができる。
【００４３】
次に、AC３におけるCPE２１の演算部２１ａの処理について説明する。図５は、CPE２１の処理の例を示すフローチャートである。
【００４４】
CPE２１は、CPU１１から上述した処理を依頼されると、受信した負荷情報と並列度情報を参照し、その負荷情報と並列度情報をRAM４にストアする（ステップS11）。
【００４５】
CPE２１は、その負荷情報と並列度情報とに基づいて、動作すべきPEを決定する（ステップS12）。すなわち、CPE２１は、負荷情報に、並列度情報を加味して、動作すべき１以上のPE２２を決定し、動作するPE２２の数が決定される。本実施の形態では、並列度は、並列処理可能な演算部の最大数を示し、負荷は、１つのPE２２で実行できる処理量を１として、その処理量に対する比率を示している。よって、CPE２１は、受信した負荷情報と並列度情報に基づいて、処理プログラムを、いくつのPE２２で、かつどれくらいの動作周波数で実行できるかを決定することができる。
【００４６】
その決定方法においては、AC３の消費電力が最小になるようにするという基準に従って、最適な、動作すべきPE２２と動作周波数が決定される。また、処理に使用されないPE２２は、消費電力が最小になるように、例えば、電力の供給を停止するように制御される。
【００４７】
CPE２１は、決定した１以上の動作すべきＰＥ２２のそれぞれの動作周波数と供給電圧を決定する（ステップS13）。すなわち、CPE２１は、動作する各PE２２の動作周波数と供給電圧を決定し、動作する各PE２２にその決定した動作周波数に対応するクロック信号と決定した電圧の電力を供給するように、F/V制御部２２ｃを制御する。なお、動作しないPEに対しては、クロック信号は、供給されず、かつ演算処理に必要な電力も供給されない。
【００４８】
ステップS13における動作周波数の決定は、例えば次のように行われる。図６は、動作周波数の決定処理の流れの例を示すフローチャートである。
【００４９】
まず、CPE２１は、現在の使用可能なPE２２を判定する（ステップS21）。すなわち、その処理の指示を受けたときに、既にAC３のPE２２の中には、既に別の処理を実行しているPE２２がある場合がある。CPE２１は、各PE２２の動作を監視しており、各PE２２が何の処理を実行しているかを把握することができる。よって、まず、CPE２１は、処理を依頼する前に、実行可能なPE２２がどれかを判定して、使用可能な、すなわち実行可能なPE２２を決定する（ステップS21）。
【００５０】
次に、CPE２１は、負荷に応じた動作周波数と供給電圧を決定し、各PE２２の各F/V制御部２２ｃへ通知する（ステップS22）。例えば、図４の表にあるプログラムAのように、負荷が２で並列度が４の処理プログラムの場合であって、ステップS21のときに実行可能なPEが３つあった場合、各演算部２２ａの動作可能な最大周波数fとすると、CPE２１は、プログラムの負荷を示す２を、実行可能なPE２２の数を示す３で除算する処理を行う。すると、除算した結果の値(2/3)が得られる。その結果、PE２２の演算部２２ａの動作周波数は、(2/3)fとなる。
【００５１】
なお、PE２２の動作周波数が、除算した結果の値を取ることができない場合がある。例えば、PE２２の動作周波数として、f,(1/2)f,(1/3)f,(1/4)f,(1/8)f等、予め固定した値の周波数のみで、動作可能な場合である。このような場合には、CPE２１は、(2/3)fに近く、かつ(2/3)fよりも大きい値を、動作周波数として選択して決定する。
【００５２】
このようにして、CPE２１は、動作すべきPE２２の動作周波数を決定し、さらに、動作するPE２２の供給電圧も決定する。供給電圧は、動作すべきPE２２に対しては動作に必要な電圧である。動作しないPE２２に対しては、動作に必要な電圧は供給されず、供給電圧は、０、あるいはスタンバイ状態のような最小消費電力に対応する電圧となる。
【００５３】
図５に戻り、CPE２１は、動作するPE２２に対して、処理プログラム（上述した例であれば画像認識プログラム）をロードするように指示する（ステップS14）。具体的には、CPE２１は、PE２２に処理プログラムのアドレスを通知して、PE２２にその処理プログラムをロードするように指示する、すなわち処理プログラムのロード命令を出力する。その結果、動作するPE２２は、処理プログラムをロードして、ローカルメモリ２２ｂにストアする。
【００５４】
そして、CPE２１は、動作するPE２２に対して、起動命令を出力する（ステップS15）。起動命令を受信したPE２２は、ローカルメモリ２２ｂに蓄積された処理プログラムを実行する。このとき、F/V制御部２２ｃに通知されて設定された動作周波数と電圧によって、各PE２２の演算部２２ａは動作している。
【００５５】
PE２２は、処理した結果データを、ステップS2で指示されたアドレスに出力する。
【００５６】
CPE２１は、各PEの動作を監視し、全ての処理が終了すると所定の処理を実行する。
【００５７】
図７は、CPE２１の演算部２１ａにおける、処理プログラムの終了時の処理の流れの例を示すフローチャートである。
【００５８】
CPE２１は、各ＰＥ２２における処理プログラムの実行状態を監視し、まず、その処理プログラムを実行する旨の動作指示を出した全てのPE２２がその処理を終了したか否かを判断する（ステップS31）。
【００５９】
全てのPE２２の処理が終了すると、CPE２１は、依頼された処理プログラムの実行が終了した旨を示す終了通知を、CPU１１へ出力する（ステップS32）。
【００６０】
そして、CPE２１は、処理の終了したPE２２への、ステップS13において決定した動作周波数のクロック信号と電圧の供給を停止する（ステップS33）。この停止は、いわゆるスタンバイ状態における動作周波数のクロック信号と電圧の供給状態にすることを意味する。
【００６１】
以上のようにして、処理プログラムがCPU１１からAC３へ依頼され、AC３において実行される。
【００６２】
次に、以上の処理の流れについて、具体的な例を用いて説明する。図８は、CPE２１における処理を説明するための図である。図８は、AC３の状態の変化の例を示し、４つのPE２２を含むように示している。なお、図８において、ノードStartは、CPE２１が動作する前の状態を示し、ノードEndは、CPE２１が動作を終了した状態を示す。CPE２１が動作を開始すると、スタンバイ状態１０１の状態になる。
【００６３】
図８において、AC3がスタンバイ状態１０１にあり、そのスタンバイ状態１０１において、負荷が１でかつ並列度が１の処理Wを、CPU１１から依頼されたときは、状態１０２になる。
【００６４】
スタンバイ状態１０１では、AC３内部ではゲーティング可能な回路部分に対してはクロックゲーティングを行いクロック信号の供給が停止され、クロック信号の周波数を下げられる回路部分に対しては下げられるレベルまで下げた周波数のクロック信号が供給される。よって、スタンバイ状態１０１は、AC３の消費電力が最低の状態である。
【００６５】
そのスタンバイ状態１０１において、上述したような処理Wを依頼されると、CPE２１は、その処理Wが１つのPE２２で処理できる負荷１であり、並列度が１である処理であることが判明するので、その場合は、１つのPE２２Aを動作すべきPEとし、かつそのPE２２Aの動作周波数を最大動作周波数fに設定し、他のPE２２B,２２C,２２Dに対しては、クロックゲーティングを行い、かつ電力の供給を停止する。なお、図８において、４つのPE２２中、斜線を付したPE２２Aが動作するPEである。
【００６６】
その処理Wが終了すると、状態１０２からスタンバイ状態１０１へ戻る。さらに、AC3がスタンバイ状態１０１にあり、そのスタンバイ状態１０１において、負荷が１でかつ並列度が４の処理Xを、CPU１１から依頼されたときは、状態１０３になる。
【００６７】
具体的には、上述したような処理Xを依頼されると、CPE２１は、その処理Xが１つのPE２２で処理できる負荷１であり、並列度が４である処理であることが判明する。そして、もっとも消費電力が少ない動作方法が、動作可能な複数のPE２２に均等に負荷を分担させる方法であるときは、４つのPE２２全てを動作すべきPEとし、かつ各PE２２の動作周波数を(1/4)f（fは最大動作周波数）に設定して動作させる。
【００６８】
なお、負荷が１でかつ並列度が４の処理Xの場合、選択肢としては、他にも、(1/1)fの動作周波数で１つのPEで実行する方法と、(1/2)fの動作周波数で２つのPEで実行する方法とあるが、AC３における各回路の実装方法、運用方法等によって、決定される最適なすなわち低消費電力になる方法は、異なる。
【００６９】
その処理Xが終了すると、状態１０３からスタンバイ状態１０１へ戻る。さらに、AC3がスタンバイ状態１０１にあり、そのスタンバイ状態１０１において、負荷が１／４でかつ並列度が２の処理Yと、負荷が２でかつ並列度が２の処理Zの２つの処理を、CPU１１から依頼されたときは、状態１０４になる。
【００７０】
具体的には、上述したような処理YとZを依頼されると、CPE２１は、処理Yについては、１つのPE２２で処理できる負荷の(1/4)であり、並列度が２であることが判明する。そして、CPE２１は、処理Zについては、２つのPE２２で処理できる負荷２であり、並列度が２であることが判明する。従って、もっとも消費電力が少ない動作方法が、動作可能な複数のPE２２に均等に負荷を分担させる方法であるときは、処理Yについては、２つのPE２２A, PE２２Bを動作すべきPEとし、かつ動作周波数(1/8)fに設定して処理Yを行うように動作させ、処理Zについては、２つのPE２２C,２２Dを動作すべきPEとし、かつ動作周波数を(1/1)fに設定して処理Zを行うように動作させる。この場合、処理Yのプログラムは、PE２２A, PE２２Bにロードされ、処理Zのプログラムは、PE２２C,２２Dにロードされる。  
その処理Y,Zが終了すると、状態１０４からスタンバイ状態１０１へ戻る。
【００７１】
以上のように、AC３においては、処理プログラムに応じて、最適な消費電力となるように、ここでは低消費電力となるように、各PE２２の動作は制御され、その結果、AC３における消費電力は動的に変化するように制御される。すなわち、AC３内では、処理プログラムの負荷に応じて、内部の演算リソースである演算部２２ａの提供及びその動作状態が動的に変更される。そのとき、AC３において最適な消費電力になるように、動作する各PE２２の演算部２２ａに対しては動作周波数と供給電圧を決定され、動作しない各PE２２に対しては、クロックゲーティング、電圧供給の停止等が行われる。その結果、使用しないPE２２においては、クロック信号による電力の消費や、内部のリーク電流の発生を低く抑え、無駄な電力消費を抑えることができる。
【００７２】
よって、本実施の形態によれば、AC３は、自律的に、内部の複数のPE２２における処理分担を決定し、かつ消費電力を考慮して動作及び処理能力を決定して、CPU１１から依頼された処理を実行するようにしたので、AC３は、最適な消費電力で依頼された処理を行うことができる。
【００７３】
（第２の実施の形態）  
次に、本発明の第２の実施の形態を説明する。第２の実施の形態に係る情報処理装置用のACは、複数の汎用の処理部（PE）を有するだけでなく、さらに、複数のハード・マクロを有し、その複数のハード・マクロの動作についても、処理分担を決定して、かつ最適な消費電力で処理を実行するように制御する。
【００７４】
図９は、第２の実施の形態に係わるAC3Aの構成を示すブロック図である。第１の実施の形態のAC3と同じ構成要素については、同じ符号を付して説明は省略する。  
図９に示すように、AC3Aは、ハード・マクロとして、複数（ここでは２つ）のエンコーダ２６A、２６Bと、複数（ここでは２つ）のデコーダ２６C、２６Dとを有し、それぞれが、内部バス２５を介して、CPE２１と接続されている。以下、エンコーダ２６A、２６Bと、デコーダ２６C、２６Dとを、纏めて指すときは、あるいはその中の１つを指すときは、ハード・マクロ２６という。
【００７５】
ハード・マクロ２６は、ハードウエアエンジン部であり、PE２２のような受信したプログラムを実行可能な汎用な処理部ではない。PE２２は、プログラムに応じた処理を実行可能な汎用な処理部であるが、ハード・マクロ２６の処理内容は、ASIC等のハードウエアにより実現されており、動作用の制御データと対象データが与えられるとその処理が実行されるものである。
【００７６】
本実施の形態では、AC3Aは、ハード・マクロ２６によって、MPEG4、H264、VC1等の画像処理における、画像データのエンコード処理とデコード処理の２つの処理が実行できるように構成されているものとする。２つのエンコーダ２６A、２６Bは、CPE２１からの依頼に基づいて、エンコード処理を並列処理可能なハードウエア回路である。２つのデコーダ２６C、２６Dも、CPE２１からの依頼に基づいて、デコード処理を並列処理可能なハードウエア回路である。
【００７７】
従って、AC3Aは、それぞれが並列処理可能なハード・マクロ２６を用いて、エンコード又はデコードの処理を、あるいはエンコードとデコードの両処理を、PE２２の処理とは別に実行可能となっている。
【００７８】
また、エンコーダ２６A、２６Bとデコーダ２６C、２６Dには、それぞれ、F/V制御部２６Ac、２６Bc、２６Cc、２６Dc（以下、纏めてあるいは１つのF/V制御部を指すときはF/V制御部２６ｃという）が設けられている。各F/V制御部２６ｃは、対応するハード・マクロ２６の動作及び処理能力の両方を制御する動作制御部であり、具体的には、対応するハード・マクロ２６へ供給するクロック信号の周波数の変更の機能、ハード・マクロ２６内の各回路へ供給されるクロック信号の供給と停止の機能、ハード・マクロ２６内の各回路へ供給される電力の供給と停止の機能を有する回路である。
【００７９】
よって、情報処理装置１においてアプリケーションプログラムが実行されるときに、エンコーダ２６Ａ、２６Bとデコーダ２６Ｃ，２６Dの使用状態に応じて、あるいは、使用／不使用に応じて、クロック信号の周波数の変更、クロック信号の供給と停止、および電力の供給と停止が、CPE２１の制御の下で行われる。
【００８０】
なお、本実施の形態においても、エンコーダ２６A、２６Bとデコーダ２６C、２６DのそれぞれにF/V制御部２６ｃが設けられているが、エンコーダ２６A、２６Bとデコーダ２６C、２６Dの全体に対して一つのF/V制御部２６ｃを設けて、その全体に対してクロック信号の周波数の変更、クロック信号の供給と停止、電力の供給と停止を行うようにしてもよい。その場合も、第１の実施の形態と同様に、PLL回路２７の出力は、スイッチ回路２９を介して出力するようにし、そのスイッチ回路２６に対してクロックの供給を停止するための制御信号が、CPE２１から供給される。
【００８１】
各機能は、第１の実施の形態で説明したPE２２に対する機能と同等である。  
なお、本実施の形態においても、各F/V制御部２６ｃは、対応するハード・マクロ２６の動作及び処理能力の両方を制御するが、動作及び処理能力の少なくとも一方でもよい。
【００８２】
そして、CPE２１の演算部２１ａが、後述するように、各PE２２と、各ハード・マクロ２６と、各F/V制御部２２ｃ、２６ｃを制御する。よって、各F/V制御部２２ｃによる演算部２２ａの動作及び処理能力の制御、及び各F/V制御部２６ｃによるハード・マクロ２６の動作及び処理能力の制御は、CPE２１の演算部２１ａの指示に応じて行われる。
【００８３】
制御部である演算部２１ａは、CPU１１から所定の処理を実行する旨のコマンドを受信すると、そのコマンドに応じて、４つのPE２２及び４つのハード・マクロ２６に対して所定の指示を出力する。その所定の指示には、どのPE２２、あるいはどのハード・マクロ２６がその処理を実行するのかの指示、そのときの動作周波数をどのくらいにするのかの指示、等が含まれる。
【００８４】
以下、AC3Aの動作を、例えば、カメラ等によって撮像されて得られた画像データについて、画像データのデコードの処理と画像認識の処理を、AC3Aが行う場合で説明する。なお、画像認識の処理とデコードの処理は、同時に行われても、同時に行われなくても良いし、さらに、互いに同期して行われても良いし、非同期で行われても良い。
【００８５】
CPU１１が、第１の実施の形態と同様に、画像認識のアプリケーションプログラムを、AC3Aに依頼して行わせる場合、CPU１１がAC3Aに対して所定のコマンドを出力する。AC3Aは、そのコマンドを受信してCPU１１により指定されたそのアプリケーションプログラムの処理を行う。この場合、画像認識のアプリケーションプログラムは、PE２２において実行されるが、その場合の負荷情報及び並列度情報に基づく、PE２２の動作は、第１の実施の形態における動作と同様である。すなわち、その画像処理プログラムの負荷情報と、並列度情報に基づいて、CPE２１が、複数のPE２２の動作を決定する。  
その場合におけるCPU１１の処理の流れは、図３及び図４と同様である。すなわち、CPU１１は、画像認識プログラムをAC3Aに送信し、CPE２１の演算部２１ａは、CPU１１からの画像認識プログラムをRAM４にストアする。そして、CPU１１は、画像認識処理の対象である対象データのアドレスと、認識処理の結果データのアドレスと、画像認識プログラムについての負荷情報と、画像認識プログラムについての並列度情報とを、AC３Aへ送信する。AC３Aは、受信した負荷情報と並列度情報をRAM４に蓄積する。  
一方、CPU１１が、画像データのデコード処理を、AC3Aに依頼して行わせる場合、CPU１１がAC3Aに対して、上述した画像認識処理のためのコマンドとは異なる、所定のコマンドを出力する。なお、CPU１１は、画像データのデコード処理の依頼を、上述した画像認識の処理の依頼と同時に行ってもよいし、別々に行ってもよい。AC3Aは、そのコマンドを受信してCPU１１により指定されたデコード処理を、ハード・マクロ２６を用いて行う。
【００８６】
図１０は、その場合におけるCPU１１の処理の流れの例を示すフローチャートである。
【００８７】
CPU１１が、画像データのデコード処理をAC３Aに分担させる場合、CPU１１は、デコーダ２６Cと２６Dの使用の有無の通知を、AC3Aへ行う（ステップS11）。CPU１１は、デコード処理を依頼するので、デコーダ２６Cと２６Dを使用することを通知し、その結果、エンコーダ２６Aと２６Bは使用しないことが通知されたことになる。
【００８８】
次に、図３の場合と同様に、CPU１１は、対象データのアドレスと、結果データのアドレスと、負荷情報と、並列度情報とを、AC３Aへ送信する（ステップS2）。ここでは、対象データは、デコード処理の対象データであり、結果データは、デコード処理の結果データであり、負荷情報は、デコード処理の対象データについての負荷情報であり、並列度情報は、デコード処理の並列度情報である。負荷情報は、ここでは、対象データである画像データの解像度、プロファイル等に応じて、決定される。例えば、解像度が高ければ、処理の負荷が大きくなり、解像度が低ければ、その負荷は小さくなるからである。AC３Aは、受信した負荷情報と並列度情報をRAM４に蓄積する。
【００８９】
図１１は、デコード処理についての負荷情報と並列度情報を示すテーブルデータの例を示す図である。図１１に示すように、画像データの解像度のレベルに応じて、負荷情報と、並列度情報とが予め設定されている。図示はしないが、エンコード処理についても、図１１と同様のテーブルデータが用意されている。
【００９０】
CPE２１における画像認識プログラムの処理については、第１の実施の形態における図５から図７と同様であるので、説明は省略する。  
デコード処理について、図１２を用いて説明する。図１２は、CPE２１におけるデコード処理の例を示すフローチャートである。  
CPE２１は、CPU１１から上述したデコード処理を依頼されると、受信した負荷情報と並列度情報を参照し、その負荷情報と並列度情報をRAM４にストアする（ステップS11）。
【００９１】
CPE２１は、その負荷情報と並列度情報とに基づいて、動作すべきハード・マクロ（HM）を決定する（ステップS22）。すなわち、CPE２１は、負荷情報に、並列度情報を加味して、動作すべき１以上のハード・マクロ（HM）を決定し、動作するハード・マクロ２６の数が決定される。
【００９２】
ここでは、依頼された処理がデコード処理なので、デコーダ２６C、２６Dの２つが使用可能であり、並列度情報が「２」であれば、２つのハード・マクロ２６Cと２６Dを、動作するハード・マクロとして決定される。
【００９３】
そして、第１の実施の形態と同様に、CPE２１は、受信した負荷情報と並列度情報に基づいて、各ハード・マクロ２６を、どれくらいの動作周波数で実行できるかを決定することができる。さらに、デコード処理を行わないハード・マクロがあれば、消費電力が最小になるように、そのようなハード・マクロ２６は、例えば、電力の供給を停止するように制御される。
【００９４】
従って、CPE２１は、決定した１以上の動作すべきハード・マクロ２６のそれぞれの動作周波数と供給電圧を決定する（ステップS13）。よって、動作しないハード・マクロ２６に対しては、クロック信号は、供給されず、かつ演算処理に必要な電力も供給されない。ステップS13におけるハード・マクロ２６に対する、負荷に応じた動作周波数と供給電圧の決定の方法は、第１の実施の形態の図６で説明したPE２２に対する、負荷電力に応じた動作周波数と供給電圧の決定の方法と同じであるので、説明は省略する。
【００９５】
次に、CPE２１は、動作するハード・マクロ（HM）２６に対して、起動命令を出力する（ステップS25）。起動命令を受信したハード・マクロ（HM）２６は、デコード処理の対象データを指定されたアドレスから読み出して取得し、デコード処理を施し、そのデコード処理した結果データを、指定されたアドレスに出力する。このとき、各ハード・マクロ２６は、F/V制御部２６ｃに通知されて設定された動作周波数と電圧に従って動作している。
【００９６】
以上のように、AC3Aは、複数の汎用処理部に加えて、複数のハード・マクロを有し、CPE２１が、処理対象のデータ負荷情報と並列度情報とに基づいて、その複数のハード・マクロの動作を決定する。  
よって、本実施の形態によれば、AC3Aは、自律的に、内部の複数のPE２２と複数のハード・マクロ２６における処理分担を決定し、かつ消費電力を考慮して動作及び処理能力を決定して、CPU１１から依頼された処理を実行するようにしたので、AC３Aは、最適な消費電力で依頼された処理を行うことができる。
【００９７】
なお、上述した例では、ハード・マクロの行う処理は、画像データのエンコードとデコードの例として説明したが、他にも例えば、物理シミュレーション処理（仮想空間内での物理現象をシミュレーションする処理）、WIFI通信処理、暗号演算（符号化／復号化）処理、等であってもよい。
【００９８】
以上のように、上述した実施の形態によれば、並列処理によりプログラムを実行可能な複数の演算部を有するアクセラレータが、自らの内部の複数の演算部間の分担を決定して、プログラムを実行可能なアクセラレータ及び情報処理装置を実現することができる。
【００９９】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【０１００】
【図１】本発明の第１の実施の形態に係わる情報処理装置の構成を示す構成図である。
【図２】本発明の第１の実施の形態に係わるアクセラレータの構成を説明するためのブロック図である。
【図３】本発明の第１の実施の形態に係わる、CPUの処理の流れの例を示すフローチャートである。
【図４】本発明の第１の実施の形態に係わる、負荷情報と並列度情報を示すテーブルデータの例を示す図である。
【図５】本発明の第１の実施の形態に係わる、CPEの処理の例を示すフローチャートである。
【図６】本発明の第１の実施の形態に係わる、動作周波数の決定処理の流れの例を示すフローチャートである。
【図７】本発明の第１の実施の形態に係わる、CPEの演算部における、処理プログラムの終了時の処理の流れの例を示すフローチャートである。
【図８】本発明の第１の実施の形態に係わる、CPEにおける処理を説明するための図である。
【図９】本発明の第２の実施の形態に係わるアクセラレータの構成を示すブロック図である。
【図１０】本発明の第２の実施の形態に係わる、CPUの処理の流れの例を示すフローチャートである。
【図１１】本発明の第２の実施の形態に係わる、デコード処理についての負荷情報と並列度情報を示すテーブルデータの例を示す図である。
【図１２】本発明の第２の実施の形態に係わる、CPEにおけるデコード処理の例を示すフローチャートである。
【符号の説明】
【０１０１】
１  情報処理装置、２  PC、３  アクセラレータ、２１  制御用プロセッシングユニット（CPE）、２２  プロセッシングユニット（PE）
【図１】
2008165746.tif 000003
【図２】
2008165746.tif 000004
【図３】
2008165746.tif 000005
【図４】
2008165746.tif 000006
【図５】
2008165746.tif 000007
【図６】
2008165746.tif 000008
【図７】
2008165746.tif 000009
【図８】
2008165746.tif 000010
【図９】
2008165746.tif 000011
【図１０】
2008165746.tif 000012
【図１１】
2008165746.tif 000013
【図１２】
2008165746.tif 000014