(57)【特許請求の範囲】
【請求項１】
命令で指定された演算処理を行う複数のモジュールと、
前記命令を実行するために必要な期間中に前記命令を実行するために必要なモジュールを選択して消費電力の制御を行う消費電力制御部とを備え、
前記モジュールは、
スカラー演算を行う複数のスカラー演算器と、
ベクトル演算を行う複数のベクトル演算器と、
スカラーデータを格納するスカラーレジスタと、
ベクトルデータを格納するベクトルレジスタとを備え、
前記消費電力制御部は、前記命令の種別がベクトル命令の場合、前記ベクトル命令の実行期間中に、前記ベクトル演算器および前記ベクトルレジスタにクロックを供給すると共に、前記スカラー演算器および前記スカラーレジスタへのクロックの供給を停止し、
前記ベクトルレジスタを構成するレジスタ単位で設けられ、前記命令を実行するために必要な期間中に前記命令を実行するために必要な前記ベクトルレジスタを構成するレジスタを選択して消費電力の制御を局所的に行なう局所電力制御部をさらに備え、
前記ベクトルレジスタを構成するレジスタ単位で挿入されたクロックゲーティングマクロ回路が設けられ、
前記局所電力制御部は、前記命令を実行するために必要な期間中に前記命令を実行するために必要な前記ベクトルレジスタを構成するレジスタに対応した前記クロックゲーティングマクロ回路にイネーブル信号を供給することにより、前記命令を実行するために必要な前記ベクトルレジスタを構成するレジスタを選択し、前記命令の実行において使用されない前記ベクトルレジスタを構成するレジスタに対応した前記クロックゲーティングマクロ回路にイネーブル信号を供給しないことを特徴とする演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関し、特に、ベクトル命令に基づいて各モジュールのクロックゲーティングを行いながら、複数の演算器を並列に動作させることによりパイプライン処理を行う方法に適用して好適なものである。
【背景技術】
【０００２】
従来、プロセッサの低消費電力化を図る技術としては、例えば、特許文献１に開示されたマイクロコンピュータの動作方法（以下、第１の従来例という。）、特許文献２に開示された情報処理装置（以下、第２の従来例という。）、特許文献３に開示された低消費電力プロセッサ（以下、第３の従来例という。）および特許文献４に開示された低消費電力プロセッサ（以下、第４の従来例という。）があった。さらに、特許文献５に開示されたプロセッサ（以下、第５の従来例という。）、特許文献６に開示されたプロセッサシステム（以下、第６の従来例という。）、特許文献７に開示されたマイクロコンピュータ（以下、第７の従来例という。）および特許文献８に開示された低消費マイクロプロセッサ（以下、第８の従来例という。）があった。
【０００３】
第１の従来例は、基準信号発生回路と、基準信号発生回路の出力によりシステムの動作を制御するクロックを発生するクロックジェネレータと、プログラムを構成する命令が書き込まれたＲＯＭと、ＲＯＭに書き込まれた命令を取り出すためにＲＯＭのアドレスを指定するプログラムカウンタと、プログラムカウンタで取り出した命令を解読して各種回路を制御する制御回路と、所定の命令が実行されたときクロックジェネレータの動作を停止させる状態制御回路とを備えている。そして、クロックジェネレータの動作停止状態は、少なくとも割込信号の印加によって解除され、かつ、割込信号の印加により制御回路は、プログラムカウンタにクロックジェネレータの動作停止の原因となった命令が書き込まれたアドレスを再びセットすることにより、割込処理終了後に再びクロックジェネレータの動作を停止するようになっている。
【０００４】
これにより、割込信号が印加するまでクロックジェネレータの動作が停止するので、消費電力を低減することができる。
第２の従来例は、主要業務のアプリケーション・プログラムを格納する記憶装置と、そのプログラムを実行する高速動作可能なメインＣＰＵと、主要業務以外の処理を実行する低電圧駆動、低消費電力型のサブＣＰＵと、サブＣＰＵによって制御される周辺回路とを備えている。
【０００５】
これにより、サブＣＰＵがメインＣＰＵに代わって周辺回路を制御するので、消費電力を低減することができる。
第３の従来例は、命令プログラムの実行に関与する回路を判別し、命令プログラムの実行に関与する回路のみにクロックを供給する制御回路を備えている。
これにより、命令プログラムの実行に関与する回路のみにクロックが供給されるので、消費電力を低減することができる。
【０００６】
第４の従来例は、プログラムを処理するプロセッサの複数の回路ブロックの別々のクロック入力を、有効にするか無効にするかの手段（例えば各クロック入力に対し符号０／１のフラグＡＣＬＫ１  〜ＡＣＬＫｎを付加する手段）をプロセッサの外部に備えるように構成する。
これにより、ディジタル信号処理プロセッサなどのプログラム処理のプロセッサについて消費電力を低減することができる。
【０００７】
第５の従来例は、マイクロプロセッサを構成する各ハードウェア資源への入力クロックのサイクル数を命令によって個別に変更することを可能にし、コンパイラによって実行に不要であると判断されたハードウェア資源への入力クロックを低下または停止する命令を挿入する。また、実行に必要なハードウェア資源のクロックサイクルを全ハードウェア資源の最大動作周波数とする。
【０００８】
これにより、マイクロプロセッサの消費電力を実行性能を低下することなく削減することができる。
第６の従来例は、命令列をデコードするデコ−ダと、データについての演算を行なう命令ユニットと、デコ−ダが命令列をデコードした結果が、命令ユニットへの命令がＮＯＰ（ｎｏ−ｏｐｅｒａｔｉｏｎ）であるときには、命令ユニットの電源をオフとする電源制御ユニットとを備え、命令ユニットへの命令がＮＯＰであるときには、命令ユニットの電源がオフとされる。
【０００９】
これにより、デコード結果がＮＯＰであるときは、命令ユニットの電源がオフとなるので、消費電力を低減することができる。
第７の従来例は、ＣＰＵで実行される命令のうち、高速処理が要求されるものと高速処理が要求されないものとを識別するための情報がテーブル化されたテーブルメモリを設け、ＣＰＵに命令がフェッチされるごとに、テーブルメモリの情報に基づいてクロック信号の周波数を制御する。
【００１０】
これにより、命令に応じてクロック信号の周波数を下げることができ、マイクロコンピュータ応用機器の全体としてのパフォーマンスを保ったまま、消費電力を低減することができる。
第８の従来例は、命令キャッシュから供給される命令列において、命令無効化回路で浮動小数点演算ユニットを使用しない命令を無効命令に置き換え、その無効命令を浮動小数点命令レジスタに保持し、浮動小数点演算ユニット内の浮動小数点デコーダに供給するように構成される。
【００１１】
これにより、無効命令が連続した場合、浮動小数点データパスに加え、浮動小数点デコーダと浮動小数点レジスタの消費電力を低減することができる。
【特許文献１】特開昭５９−１８２３８９号公報
【特許文献２】特開平４−９６８５６号公報
【特許文献３】特開平４−１２７２１０号公報
【特許文献４】特開平８−２３４８６１号公報
【特許文献５】特開平９−２２３１８号公報
【特許文献６】特開平９−３４５９９号公報
【特許文献７】特開平１１−８５７２３号公報
【特許文献８】特開２００１−２２５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように、第１ないし第８の従来例はいずれも、シングルプロセッサを対象として消費電力の低減を図るものである。しかしながら、複数の演算器を備えそれらを並列に動作させる並列演算処理装置を対象とした場合、同様の電力制御では、次のような問題がある。
第６の従来例は、デコード結果がＮＯＰであるときは、命令ユニットの電源をオフとするようになっている。しかし、並列演算処理装置では、複数の演算器のうち一部を使って演算を行う場合、演算を行わない他の演算器にＮＯＰを与えないこともあり、このような場合は、低消費電力化を十分に図ることができない。これは、演算を行わない他の演算器にもＮＯＰを与えることとすると、プログラム容量が膨大になってしまうためである。
【００１３】
また、並列演算処理装置には、例えば、ベクトル演算に特化した演算器やスカラ演算に特化した演算器のように、複数種類の演算器を組み合わせて構成し、演算の効率化を高めるものもある。しかし、それら演算器は演算の性質が異なるため、これを同列に取り扱い省電力制御するのは、消費電力を低減する観点からは効果的ではない。
また、並列演算処理装置は、複数の演算器のほか、演算器が演算に利用するデータを格納するためのレジスタを備えている。しかし、第１ないし第６の従来例では、演算器の省電力制御しか行っていないため、演算器がレジスタを使用しない命令コードを実行する場合には、レジスタで不要な電力が消費されてしまう。したがって、低消費電力化を十分に図ることができない。
【００１４】
そこで、本発明の目的は、種類の異なる複数のモジュールが設けられている場合においても、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能な演算処理装置を提供することである。
【課題を解決するための手段】
【００１５】
上述した課題を解決するために、本発明の一態様に係る演算処理装置によれば、命令で指定された演算処理を行う複数のモジュールと、前記命令を実行するために必要な期間中に前記命令を実行するために必要なモジュールを選択して消費電力の制御を行う消費電力制御部とを備えることを特徴とする。
これにより、対象となる今回の命令で使用されるモジュールのみを動作させながら、対象となる今回の命令で指定される演算処理を実行させることが可能となる。このため、モジュールに演算処理を行わせるため命令を与えることにより、対象となる今回の命令で使用されないモジュールを停止させることが可能となり、対象となる今回の命令で使用されない他のモジュールを特定するために、ＮＯＰ命令などを挿入する必要がなくなることから、種類の異なる複数のモジュールが設けられている場合においても、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００１６】
また、本発明の一態様に係る演算処理装置によれば、前記モジュール単位で挿入された第１クロックゲーティングマクロ回路が設けられ、前記消費電力制御部は、前記命令を実行するために必要な期間中に前記命令を実行するために必要なモジュールに対応した第１クロックゲーティングマクロ回路に第１イネーブル信号を供給することにより、前記命令を実行するために必要なモジュールを選択し、クロックを供給することを特徴とする。
【００１７】
これにより、命令の解読結果に基づいてクロックゲーティングマクロ回路にイネーブル信号を供給することが可能となる。このため、実行プログラムにＮＯＰ命令などを挿入することなく、今回の命令で使用されるモジュールにのみクロック信号を供給することが可能となるとともに、今回の命令で使用されないモジュールにはクロック信号の供給を停止することが可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００１８】
また、本発明の一態様に係る演算処理装置によれば、前記モジュールは、スカラー演算を行う複数のスカラー演算器と、ベクトル演算を行う複数のベクトル演算器と、スカラーデータを格納するスカラーレジスタと、ベクトルデータを格納するベクトルレジスタとを備え、前記消費電力制御部は、前記命令の種別がベクトル命令の場合、前記ベクトル命令の実行期間中に、前記ベクトル演算器および前記ベクトルレジスタにクロックを供給するとともに、前記スカラー演算器および前記スカラーレジスタへのクロックの供給を停止することを特徴とする。
【００１９】
これにより、ベクトル命令に基づいて各モジュールのクロックゲーティングを行いながら、複数のベクトル演算器を並列に動作させることによりパイプライン処理を行わせることが可能となる。このため、複数の演算器のほか、それらの演算器が演算に利用するデータを格納するためのレジスタが設けられている場合においても、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００２０】
また、本発明の一態様に係る演算処理装置によれば、前記消費電力制御部は、前記ベクトル命令に含まれるオペコードに基づいて、クロックを供給するベクトル演算器を選択することを特徴とする。
これにより、ベクトル命令に基づいて、どのモジュールが使用されるかを判断することが可能となる。このため、実行プログラムにＮＯＰ命令などを挿入することなく、対象となる今回のベクトル命令で使用されるモジュールにのみクロック信号を供給することが可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００２１】
また、本発明の一態様に係る演算処理装置によれば、前記消費電力制御部は、前記ベクトル命令に含まれる演算要素数に基づいて、前記ベクトル演算器および前記ベクトルレジスタにクロックを供給するサイクル数を決定することを特徴とする。
これにより、ベクトル命令で指定された演算を行うために何サイクルかかるかを判断することが可能となる。このため、ベクトル命令を実行するために必要なサイクル数分だけ、対象となる今回のベクトル命令で使用されるモジュールのみにクロック信号を供給することを可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００２２】
また、本発明の一態様に係る演算処理装置によれば、前記消費電力制御部は、複数のベクトル命令の依存関係に基づいて、どのモジュールに何サイクル分だけクロックを供給するかを判断することを特徴とする。
これにより、複数のベクトル演算器を並列に動作させながら、ベクトル命令のパイプライン処理が行われる場合においても、それらのベクトル命令で使用されるモジュールのみにクロック信号を供給することが可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００２３】
また、本発明の一態様に係る演算処理装置によれば、前記消費電力制御部は、前記命令の種別がスカラー命令の場合、前記スカラー命令の実行期間中に、前記スカラー演算器および前記スカラーレジスタにクロックを供給するとともに、前記ベクトル演算器および前記ベクトルレジスタへのクロックの供給を停止することを特徴とする。
これにより、スカラー命令が入力された場合においても、スカラー命令で使用されるモジュールにのみクロック信号を供給することが可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００２４】
また、本発明の一態様に係る演算処理装置によれば、前記消費電力制御部は、前記命令の種別がマルチサイクル命令の場合、前記マルチサイクル命令の実行期間中に、前記マルチサイクル命令の実行に使用されるモジュールにクロックを供給するとともに、前記マルチサイクル命令の実行に使用されないモジュールへのクロックの供給を停止することを特徴とする。
【００２５】
これにより、スカラー命令実行において１サイクルで演算が完了しない場合においても、マルチサイクル命令で使用されるモジュールのみにクロック信号を供給することが可能となり、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
また、本発明の一態様に係る演算処理装置によれば、前記モジュールの構成要素単位で設けられ、前記命令を実行するために必要な期間中に前記命令を実行するために必要な構成要素を選択して消費電力の制御を局所的に行なう局所電力制御部をさらに備えることを特徴とする。
【００２６】
これにより、今回の命令で使用されないモジュールをモジュール単位で停止させることが可能となるだけでなく、今回の命令で使用されるモジュールのうちの実際に使用される部分のみを構成要素ごとに動作させることができ、プログラミングにかかる負担を抑制しつつ、消費電力をより一層低減することが可能となる。
また、本発明の一態様に係る演算処理装置によれば、前記構成要素単位で挿入された第２クロックゲーティングマクロ回路が設けられ、前記局所電力制御部は、前記命令を実行するために必要な期間中に前記命令を実行するために必要な構成要素に対応した第２クロックゲーティングマクロ回路に第２イネーブル信号を供給することにより、前記命令を実行するために必要な構成要素を選択することを特徴とする。
【００２７】
これにより、今回の命令で使用されるモジュールの構成要素に個別にクロック信号を供給することが可能となり、今回の命令で使用されるモジュールの消費電力をきめ細かく制御することを可能として、消費電力をより一層低減することが可能となる。
また、本発明の一態様に係る演算処理装置によれば、前記第１クロックゲーティングマクロ回路の後段に前記第２クロックゲーティングマクロ回路が接続され、前記モジュール単位で消費電力の制御を行ないながら、前記構成要素単位で消費電力の制御を行なうことを特徴とする。
【００２８】
これにより、今回の命令で使用されないモジュールへのクロック信号の供給を停止させることが可能となるだけでなく、今回の命令で使用されるモジュールのうちの実際に使用される構成要素にのみクロック信号を供給することができ、プログラミングにかかる負担を抑制しつつ、消費電力をより一層低減することが可能となる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施形態に係る演算処理装置について図面を参照しながら説明する。なお、以下の実施形態では、図１のコンピュータシステムにおいて、複数の演算器を備える図２の並列演算処理プロセッサ１００の各演算器を並列に動作させることによりパイプライン処理を行う場合を例にとって説明する。
図１は、本発明の一実施形態に係るコンピュータシステムの概略構成を示すブロック図である。
【００３０】
図１において、コンピュータシステムには、複数の演算器を備える並列演算処理プロセッサ１００、所定領域にあらかじめ並列演算処理プロセッサ１００の制御プログラム等を格納するメインメモリ１１０、データを入力可能なヒューマンインターフェースとしての入力部１２０、ディスプレイ等のデータを出力可能な出力部１３０、ネットワーク等を介して外部との通信を行う通信部１４０が設けられている。
【００３１】
ここで、メインメモリ１１０には、プログラムを格納するプログラム・テキスト領域１１１、定数などのデータを予め格納する初期化済みデータ領域１１２、定数などのデータを格納するための事前に確保された未初期化データ領域１１３、プログラム実行時に動的に確保されるヒープ領域１１４およびスタック領域１１５ならびにその他論理的に区分された記憶領域を有している。
【００３２】
そして、制御プログラムは、並列演算処理プロセッサ１００が直接実行可能な低水準言語（例えば、機械語）で構成されており、高水準言語（例えば、Ｃ言語）により記述されたアセンブリソースコード２００を、アセンブラ２１０およびリンカ２２０からなる命令コード生成系により低水準言語にコンパイルし、実行プログラム２３０として生成される。そして、生成された制御プログラムは、図示しないハードディスク等の補助記憶装置に格納されるが、並列演算処理プロセッサ１００が実行するときは、プログラムローダ２４０によりメインメモリ１１０の記憶領域のうちプログラム・テキスト領域１１１に配置され、実行可能な状態に置かれる。なお、アセンブラ２１０、リンカ２２０およびプログラムローダ２４０は、一般にソフトウェアにより構成することができる。
【００３３】
図２は、図１の並列演算処理プロセッサ１００の概略構成を示すブロック図である。
図２において、並列演算処理プロセッサ１００には、メインメモリ１１０に対してアクセスを行うアクセス部１００ａ、アクセス部１００ａを介して読み出した命令コードに基づいて並列演算処理を行う演算処理部１００ｂおよび演算処理部１００ｂの電力制御を行う電力制御部１００ｃが設けられている。
【００３４】
そして、アクセス部１００ａは、汎用外部バス１１１を介してメインメモリ１１０にアクセスするメモリアクセス部１と、演算処理部１００ｂ自体が使用可能なローカルメモリ２と、ローカルメモリ２とメインメモリ１１０との間でデータ転送を行うＤＭＡ３と、データキャッシュを行うデータキャッシュメモリ４と、プログラムキャッシュを行うプログラムキャッシュメモリ５と、演算処理部１００ｂおよびその他のモジュールが共用して使用可能な共有メモリ６とを備えている。ここで、ローカルメモリ２、キャッシュメモリ４、５および共有メモリ６は、その一端がメモリアクセス部１に接続され、ＤＭＡ３、キャッシュメモリ４、５および共有メモリ６は、その他端が汎用外部バス１１１に接続されている。
【００３５】
そして、メモリアクセス部１は、メインメモリ１１０、ローカルメモリ２、キャッシュメモリ４、５または共有メモリ６から命令コードまたはデータを読み出せないときは、メモリストール信号を出力することができる。
演算処理部１００ｂは、スカラー演算を行う複数のスカラー演算器１０ａ、１０ｂと、ベクトル演算を行う複数のベクトル演算器１０ｃ、１０ｄと、スカラー演算器１０ａ、１０ｂがスカラー演算に利用するスカラーレジスタ２０ａと、ベクトル演算器１０ｃ、１０ｄがベクトル演算に利用するベクトルレジスタ２０ｂと、メモリアクセス部１を介してメインメモリ１１０およびプログラムキャッシュ５から命令を読み出すフェッチ部３０と、フェッチ部３０で読み出した命令の内容を解読するデコード部４０とを備えている。なお、フェッチ部３０で読み出される命令は、スカラー命令、ベクトル命令またはマルチサイクル命令のいずれでもよい。
【００３６】
電力制御部１００ｃは、デコード部４０からの命令デコード情報に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの動作状態を管理する複数サイクル命令管理部５０と、時間の計時を行うタイマ６０と、タイマ６０またはＤＭＡ３からの割込信号に応じて割込制御を行う割込制御部６５と、複数サイクル命令管理部５０から出力される電力制御、割込制御部６５からの起動信号およびメモリアクセス部１からのメモリストール信号に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの消費電力に関する制御を行う動作状態管理部７０と、動作状態管理部７０の制御に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給するクロックを調整するクロック制御部８０と、動作状態管理部７０の制御に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、演算器１０ａ〜１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給する電圧および電力を調整する電源制御部８５とを備えている。
【００３７】
図３は、図２のスカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの概略構成を示すブロック図である。
図３において、スカラーレジスタ２０ａには、例えば、３２ビット分のデータをそれぞれ記憶する記憶領域ＳＲ０〜ＳＲ１５を１６本だけ設けることができる。また、例えば、ベクトルの要素数が８であるとすると、３２ビット分のデータをそれぞれ記憶する８個の記憶領域ＶＲ０［０］〜ＶＲ０［７］で１本分のベクトルレジスタを構成することができる。そして、ベクトルレジスタ２０ｂには、例えば、３２ビット分のデータをそれぞれ記憶する６４個の記憶領域ＶＲ０［０］〜ＶＲ０［７］、ＶＲ１［０］〜ＶＲ１［７］、ＶＲ２［０］〜ＶＲ２［７］、ＶＲ３［０］〜ＶＲ３［７］、ＶＲ４［０］〜ＶＲ４［７］、ＶＲ５［０］〜ＶＲ５［７］、ＶＲ６［０］〜ＶＲ６［７］、ＶＲ７［０］〜ＶＲ７［７］を設けることで、８本分のベクトルレジスタを設けることができる。
【００３８】
図４は、ベクトル命令のデータ構造を示す図である。
図４において、ベクトル命令には、乗算や加算などの命令の種類を定義するオペコードｏｐｅｃｏｄｅおよびベクトル演算の実行回数を定義するリピートアマウントｒｐｔａｍｔが設けられている。また、ベクトル命令では、書き込み先のディスティネーションレジスタｄｓｔおよび読み出し先のソースレジスタｓｒｃ１、ｓｒｃ２を指定することができる。このため、図２のデコード部４０にてベクトル命令を解読することで、どのレジスタを使用しながら、どのような演算が何回行われるかを判別することができる。
【００３９】
また、図４のデータ構造において、リピートアマウントｒｐｔａｍを０にした場合、同じデータ構造を用いてスカラー命令、マルチサイクル命令を格納することができる。
図５は、図２の並列演算処理プロセッサ１００のベクトル乗算処理を示す図である。
図５において、ベクトル命令において、例えば、オペコードｏｐｅｃｏｄｅにて乗算が指定され、リピートアマウントｒｐｔａｍで８が指定され、ディスティネーションレジスタｄｓｔとして図３のベクトルレジスタＶＲ０が指定され、ソースレジスタｓｒｃ１、ｓｒｃ２として図３のベクトルレジスタＶＲ１、ＶＲ２がそれぞれ指定されていたものとする。この場合、ベクトル演算器１０ｃ、１０ｄの中から乗算器Ａ１が選択され、ベクトルレジスタＶＲ１に格納されている要素ａ０〜ａ７およびベクトルレジスタＶＲ２に格納されている要素ｘ０〜ｘ７が乗算器Ａ１に順次送られる。そして、乗算器Ａ１にて各要素ごとに乗算が行われた後、その乗算結果がベクトルレジスタＶＲ０に格納される。
【００４０】
ここで、図２の並列演算処理プロセッサ１００では、メインメモリ１１０に格納されている命令がフェッチ部３０にて読み出される。そして、この読み出された命令の内容がデコード部４０にて解読され、フェッチ部３０で読み出された命令の種別および命令の形態が判別される。そして、複数サイクル命令管理部５０は、デコード部４０から出力された命令デコード情報に基づいて、どのモジュールが使用されるかを命令ごとに判断し、そのモジュールの電力を制御する電力制御信号を動作状態管理部７０に出力する。そして、動作状態管理部７０は、複数サイクル命令管理部５０から出力された電力制御信号に基づいて、今回の命令で使用されるモジュールに対応したイネーブル信号ＥＮ_０〜ＥＮ_ｎを生成することができる。そして、クロック制御部８０は、このイネーブル信号ＥＮ_０〜ＥＮ_ｎに基づいてクロックゲーティングを行うことにより、今回の命令で使用されるモジュールにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給することができる。
【００４１】
例えば、フェッチ部３０で読み出された命令がスカラー命令である場合、スカラーレジスタ２０ａにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給するとともに、ベクトルレジスタ２０ｂへのクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することができる。さらに、スカラー演算器１０ａ、１０ｂにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給するとともに、ベクトル演算器１０ｃ、１０ｄへのクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することができる。
【００４２】
また、フェッチ部３０で読み出された命令がベクトル命令である場合、図４のリピートアマウントｒｐｔａｍで指定されるベクトル演算の回数分だけ、ベクトルレジスタ２０ｂにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給するとともに、スカラーレジスタ２０ａへのクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することができる。さらに、図４のリピートアマウントｒｐｔａｍで指定されるベクトル演算の回数分だけ、オペコードｏｐｅｃｏｄｅで指定される演算を行うベクトル演算器１０ｃ、１０ｄにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給するとともに、スカラー演算器１０ａ、１０ｂへのクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することができる。
【００４３】
また、フェッチ部３０で読み出された命令がマルチサイクル命令である場合、１命令分の実行にかかる複数サイクルの間だけ、スカラーレジスタ２０ａおよびスカラー演算器１０ａ、１０ｂにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給するとともに、ベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂへのクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することができる。
【００４４】
これにより、対象となる今回の命令で使用されるモジュールにのみクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給することが可能となるとともに、対象となる今回の命令で使用されないモジュールにはクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を停止することが可能となる。このため、モジュールに演算処理を行わせるための命令を与えることにより、対象となる今回の命令で使用されないモジュールを停止させることが可能となり、対象となる今回の命令で使用されない他のモジュールを特定するために、図１の実行プログラム２３０にＮＯＰ命令などを挿入する必要がなくなることから、種類の異なる複数のモジュールが設けられている場合においても、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
【００４５】
また、複数サイクル命令管理部５０を介してクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎの供給を各命令ごとにモジュール単位で制御する方法の他、デコード部４０から出力される実行ユニット制御信号に基づいて、各モジュールの構成要素ごとに局所的にクロックゲーティングを行うことにより、各モジュールの構成要素に対するクロック信号の供給を制御することができる。
【００４６】
例えば、図４のベクトル命令において、ディスティネーションレジスタｄｓｔとして図３のベクトルレジスタＶＲ０が指定され、ソースレジスタｓｒｃ１、ｓｒｃ２として図３のベクトルレジスタＶＲ１、ＶＲ２がそれぞれ指定されているものとする。この場合、このベクトル命令を実行する時に、図３の８本分のベクトルレジスタＶＲ０〜ＶＲ７のうち、ベクトルレジスタＶＲ０〜ＶＲ２にクロック信号を供給するとともに、ベクトルレジスタＶＲ３〜ＶＲ７へのクロック信号の供給を停止することができる。
【００４７】
これにより、ベクトル命令を与えることで、今回の命令で使用されないモジュールをモジュール単位で停止させることが可能となるだけでなく、今回の命令で使用されるモジュールのうちの実際に使用される部分のみを構成要素ごとに動作させることができ、プログラミングにかかる負担を抑制しつつ、消費電力をより一層低減することが可能となる。
ここで、並列演算処理プロセッサ１００には、複数のベクトル演算器１０ｃ、１０ｄが設けられ、ベクトル命令に基づいてパイプライン処理を行う場合、各サイクルごとに発行されるベクトル命令で指定される演算を複数のベクトル演算器１０ｃ、１０ｄで並列に処理させることができる。
【００４８】
図６は、図２の並列演算処理プロセッサ１００のパイプライン処理を示すブロック図である。
図６において、メインメモリ１１０に格納されているプログラムは、例えば、プログラムキャッシュメモリ５を介してフェッチ部３０に取り込むことができる。そして、サイクルＣ１において、インストラクションフェッチＩＦがフェッチ部３０にて行われ、ベクトル命令Ｉｎｓ．１がフェッチ部３０に取り込まれる。そして、ベクトル命令Ｉｎｓ．１がフェッチ部３０に取り込まれると、サイクルＣ２において、デコードＲＤがデコード部４０にて行われ、ベクトル命令Ｉｎｓ．１の解読が行われる。そして、ベクトル命令Ｉｎｓ．１を解読することにより、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを抽出し、そのベクトル命令Ｉｎｓ．１では、どのベクトル演算器１０ｃ、１０ｄを用いて何回分のベクトル演算が行われるかを判別することができる。
【００４９】
ここで、ベクトル命令Ｉｎｓ．１のリピートアマウントｒｐｔａｍｔに４が設定されているものとすると、サイクルＣ３において、ベクトル命令Ｉｎｓ．１の１回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ４において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ４において、２回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ５において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ５において、３回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ６において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ６において、４回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ７において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。
【００５０】
また、サイクルＣ２において、インストラクションフェッチＩＦがフェッチ部３０にて行われ、ベクトル命令Ｉｎｓ．２がフェッチ部３０に取り込まれる。そして、ベクトル命令Ｉｎｓ．２がフェッチ部３０に取り込まれると、サイクルＣ３において、デコードＲＤがデコード部４０にて行われ、ベクトル命令Ｉｎｓ．２の解読が行われる。そして、ベクトル命令Ｉｎｓ．２を解読することにより、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを抽出し、そのベクトル命令Ｉｎｓ．２では、どのベクトル演算器１０ｃ、１０ｄを用いて何回分のベクトル演算が行われるかを判別することができる。
【００５１】
ここで、ベクトル命令Ｉｎｓ．２のリピートアマウントｒｐｔａｍｔに４が設定されているものとすると、サイクルＣ４において、ベクトル命令Ｉｎｓ．２の１回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ５において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ５において、２回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ６において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ６において、３回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ７において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ７において、４回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ８において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。
【００５２】
また、サイクルＣ３において、インストラクションフェッチＩＦがフェッチ部３０にて行われ、ベクトル命令Ｉｎｓ．３がフェッチ部３０に取り込まれる。そして、ベクトル命令Ｉｎｓ．３がフェッチ部３０に取り込まれると、サイクルＣ４において、デコードＲＤがデコード部４０にて行われ、ベクトル命令Ｉｎｓ．３の解読が行われる。そして、ベクトル命令Ｉｎｓ．３を解読することにより、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを抽出し、そのベクトル命令Ｉｎｓ．３では、どのベクトル演算器１０ｃ、１０ｄを用いて何回分のベクトル演算が行われるかを判別することができる。
【００５３】
ここで、ベクトル命令Ｉｎｓ．３のリピートアマウントｒｐｔａｍｔに４が設定されているものとすると、サイクルＣ５において、ベクトル命令Ｉｎｓ．３の１回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ６において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ６において、２回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ７において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ７において、３回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ８において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ８において、４回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ９において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。
【００５４】
また、サイクルＣ４において、インストラクションフェッチＩＦがフェッチ部３０にて行われ、ベクトル命令Ｉｎｓ．４がフェッチ部３０に取り込まれる。そして、ベクトル命令Ｉｎｓ．４がフェッチ部３０に取り込まれると、サイクルＣ５において、デコードＲＤがデコード部４０にて行われ、ベクトル命令Ｉｎｓ．４の解読が行われる。そして、ベクトル命令Ｉｎｓ．４を解読することにより、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを抽出し、そのベクトル命令Ｉｎｓ．４では、どのベクトル演算器１０ｃ、１０ｄを用いて何回分のベクトル演算が行われるかを判別することができる。
【００５５】
ここで、ベクトル命令Ｉｎｓ．４のリピートアマウントｒｐｔａｍｔに４が設定されているものとすると、サイクルＣ６において、ベクトル命令Ｉｎｓ．４の１回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ７において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ７において、２回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ８において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ８において、３回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ９おいて、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。さらに、サイクルＣ９において、４回目のベクトル演算に対応した実行ＥＸＥを行うとともに、サイクルＣ１０において、その実行結果の記憶ＭＥＭをベクトルレジスタ２０ｂに行うことができる。
【００５６】
ここで、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４に対応した実行ＥＸＥを複数のベクトル演算器１０ｃ、１０ｄにて並列処理させることにより、例えば、サイクルＣ６において、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４にそれぞれ対応した実行ＥＸＥを同時に行わせることができる。
また、デコード部４０にてベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４の解読が行われると、それらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４にそれぞれ対応したオペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを含む命令デコード情報が、複数サイクル命令管理部５０に送られる。そして、複数サイクル命令管理部５０は、命令デコード情報に基づいて、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４の依存関係を判断し、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行するために、何サイクル分の時間がかかるかを判定することができる。
【００５７】
そして、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行するために、例えば、１０サイクル分の時間がかかるものとすると、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行させるために必要なベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂの電力を１０サイクル分だけ制御する電力制御信号を出力することができる。
そして、ベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂの電力を制御する電力制御信号が出力されると、動作状態管理部７０は、この電力制御信号に基づいて、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４で使用されるモジュールに対応したイネーブル信号ＥＮ_０〜ＥＮ_ｎを生成することができる。そして、クロック制御部８０は、このイネーブル信号ＥＮ_０〜ＥＮ_ｎに基づいてクロックゲーティングを行うことにより、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４で使用されるクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎをベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂに供給することができる。
【００５８】
これにより、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４に基づいて、ベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂの消費電力に関する制御を行うことができる。このため、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４にて演算が行われないスカラー演算器１０ａ、１０ｂおよびスカラーレジスタ２０ａに対してＮＯＰ等の命令コードが与えられなくても、そのスカラー演算器１０ａ、１０ｂおよびスカラーレジスタ２０ａの動作を停止させることができ、プログラミングにかかる負担増を伴うことなく、並列演算処理プロセッサ１００の消費電力を低減させることができる。
【００５９】
図７は、図２のクロック制御部８０の概略構成を示すブロック図である。
図７において、クロック制御部８０は、モジュールＭ０〜Ｍｎにそれぞれ対応したクロックゲーティングマクロ回路ＣＧ１〜ＣＧｎが設けられている。なお、各モジュールＭ０〜Ｍｎは、図２のフェッチ部３０、デコード部４０、ベクトル演算器１０ｃ、１０ｄ、スカラー演算器１０ａ、１０ｂ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂなどにそれぞれ対応させることができる。そして、各クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎには、ルートバッファＲＢ１を介してクロック信号ＣＬＫが共通に入力されるとともに、動作状態管理部７０にて生成されたイネーブル信号ＥＮ_０〜ＥＮ_ｎがそれぞれ入力される。そして、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎは、イネーブル信号ＥＮ_０〜ＥＮ_ｎがハイレベルになると、ゲートクロック信号ＧａｔｅＣＬＫ_０〜ＧａｔｅＣＬＫ_ｎを各モジュールＭ０〜Ｍｎに供給するとともに、イネーブル信号ＥＮ_０〜ＥＮ_ｎがロウレベルになると、各モジュールＭ０〜Ｍｎへのゲートクロック信号ＧａｔｅＣＬＫ_０〜ＧａｔｅＣＬＫ_ｎの供給を停止することができる。
【００６０】
これにより、クロックゲーティングを行うことで、今回の命令で使用されるモジュールＭ０〜Ｍｎのみにクロック信号ｃｌｋＮ_０〜ｃｌｋ_ｎを供給することが可能となり、種類の異なる複数のモジュールＭ０〜Ｍｎが設けられている場合においても、プログラミングにかかる負担を抑制しつつ、消費電力を低減することが可能となる。
図８（ａ）は、図７のクロックゲーティングマクロ回路ＣＧ１〜ＣＧｎの概略構成を示すブロック図、図８（ｂ）は、図７のクロックゲーティングマクロ回路ＣＧ１〜ＣＧｎの動作を示すタイミングチャートである。
【００６１】
図８（ａ）において、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎには、ラッチ回路８２およびアンド回路８３が設けられるとともに、アンド回路８３の出力はＤフリップフロップ８４のクロック入力端子に接続されている。そして、図８（ｂ）に示すように、ラッチ回路８２に入力されるクロック信号ＣＬＫに同期して、動作状態管理部７０にて生成されたイネーブル信号ＥＮがラッチ回路８２にてラッチされる。そして、ラッチ回路８２にてラッチされたイネーブル信号ＥＮはアンド回路８３に出力され、クロック信号ＣＬＫとの論理積をとることにより、ゲートクロック信号Ｇ_ＣＬＫがＤフリップフロップ８４のクロック入力端子に出力される。そして、ゲートクロック信号Ｇ_ＣＬＫがＤフリップフロップ８４のクロック入力端子に入力されると、Ｄフリップフロップ８４は、Ｄフリップフロップ８４のＤ端子に入力されるデータＤＡＴＡを取り込み、Ｄ_ＯＵＴとして出力することができる。このため、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎは、イネーブル信号ＥＮがアクティブになったときに、Ｄフリップフロップ８４に入力されるデータＤＡＴＡを取り込ませ、Ｄ_ＯＵＴとして出力させることができる。
【００６２】
図９は、図２の複数サイクル命令管理部５０の概略構成を示すブロック図である。
図９において、複数サイクル命令管理部５０には、デコード部４０から送られた命令デコード情報に基づいて、今回の命令で使用されるモジュールＭ０〜Ｍｎを判定する使用モジュール判定部５１、今回の命令で使用されるモジュールＭ０〜Ｍｎの動作を制御する制御信号を生成するモジュール制御用ステートマシン５２ａ〜５２ｎ、モジュール制御用ステートマシン５２ａ〜５２ｎから出力された制御信号に基づいて、モジュールＭ０〜Ｍｎの消費電力を制御する電力制御信号を生成する電力制御信号発生部５３が設けられている。
【００６３】
ここで、使用モジュール判定部５１には、デコード完了信号とともに、デコードが完了した命令に対応するオペコード情報およびリピートアマウントｒｐｔａｍｔがデコード部４０から出力される。そして、使用モジュール判定部５１は、オペコード情報に基づいて、今回の命令で使用されるモジュールＭ０〜Ｍｎを起動し、そのモジュールＭ０〜Ｍｎに対応したモジュール制御用ステートマシン５２ａ〜５２ｎにオペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔを出力する。なお、図６に示すように、インストラクションフェッチＩＦは、１サイクルに１回だけ発生させることができるので、１個のモジュールＭ０〜Ｍｎに対応した１個のモジュール制御用ステートマシン５２ａ〜５２ｎを１サイクルごとに起動することができる。
【００６４】
そして、モジュール制御用ステートマシン５２ａ〜５２ｎは、オペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔに基づいて、どのモジュールＭ０〜Ｍｎが何サイクル分だけ使用されるかを判定する。そして、モジュール制御用ステートマシン５２ａ〜５２ｎは、今回の命令で使用されるモジュールＭ０〜Ｍｎをリピートアマウントｒｐｔａｍｔで決められるサイクル数分だけ動作させる制御信号を電力制御信号発生部５３に出力する。そして、電力制御信号発生部５３は、モジュール制御用ステートマシン５２ａ〜５２ｎから出力された制御信号に基づいて、今回の命令で使用されるモジュールＭ０〜Ｍｎの消費電力を制御するモジュール電力制御信号を動作状態管理部７０に出力する。さらに、電力制御信号発生部５３は、今回の命令で使用されるモジュールＭ０〜Ｍｎが、ベクトル命令またはスカラー命令のいずれの命令で起動されるかを判別し、今回の命令で使用されるモジュールＭ０〜Ｍｎがベクトル命令にて起動される場合、ベクトルレジスタ２０ｂの電力を消費制御するベクトルレジスタ電力制御信号を動作状態管理部７０に出力する。一方、今回の命令で使用されるモジュールＭ０〜Ｍｎがスカラー命令にて起動される場合、スカラーレジスタ２０ａの消費電力を制御するスカラーレジスタ電力制御信号を動作状態管理部７０に出力する。
【００６５】
図１０（ａ）は、ベクトル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎの状態遷移を示す図、図１０（ｂ）は、マルチサイクル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎの状態遷移を示す図、図１０（ｃ）は、ベクトル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎから出力される制御信号を示す図である。
【００６６】
図１０（ａ）において、ベクトル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎは、ＩＤＬＥ状態において、新たな命令によりステートマシン５２ａ〜５２ｎが起動されるまで待機する。そして、デコード部４０にてベクトル命令のデコードが完了し、そのベクトル命令を実行するために使用されるモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎが起動されると、そのステートマシン５２ａ〜５２ｎは第０要素演算ステートに遷移する。そして、そのステートマシン５２ａ〜５２ｎは、リピートアマウントｒｐｔａｍｔで指定されるベクトル演算の繰り返し回数に従って動作を継続する。すなわち、図２のベクトル演算器１０ｃ、１０ｄが８要素までの演算をサポートしているものとすると、ステートマシン５２ａ〜５２ｎは、各要素の演算ステートがリピートアマウントｒｐｔａｍｔの値に一致するまで、第０要素演算ステートから第７要素演算ステートまでの間を順次遷移する。そして、各要素の演算ステートがリピートアマウントｒｐｔａｍｔの値に一致すると、ステートマシン５２ａ〜５２ｎはＩＤＬＥ状態に遷移する。
【００６７】
一方、ステートマシン５２ａ〜５２ｎは、ＩＤＬＥ状態において、スカラー命令により起動されると、スカラー命令実行ステートに遷移する。そして、そのスカラー命令で指定される演算が終了した時点で、ＩＤＬＥ状態に遷移する。
また、図１０（ｂ）において、マルチサイクル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎは、ＩＤＬＥ状態において、マルチサイクル命令により起動されると、データ設定ステートを経て、演算実行ステートに遷移する。そして、終了条件が成立するまで、演算実行ステートを継続し、終了条件が成立した時点で、ＩＤＬＥ状態に遷移する。ここで、終了条件は、命令ごとに定義してもよいし、データにより決定してもよい。
【００６８】
なお、マルチサイクル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎは、スカラー命令実行の一形式に対応させることができ、スカラー命令実行において１サイクルで演算が完了しないものである。また、マルチサイクル命令に対応したモジュールＭ０〜Ｍｎのステートマシン５２ａ〜５２ｎにおいて、データ設定ステートは省略してもよい。
【００６９】
また、図１０（ｃ）において、例えば、各ステートにおけるモジュールＭ１に対する電力制御信号Ｍｏｄｕｌｅ１_ｅｎ、スカラーレジスタ２０ａに対する電力制御信号Ｓｃａｌａｒ_Ｅｘｅ_Ｒｅｑおよびベクトルレジスタ２０ｂに対する電力制御信号Ｖｅｃｔｏｒ_Ｅｘｅ_Ｒｅｑが定義されている。そして、例えば、ベクトル命令に対応したモジュールＭ１のステートマシンにおいて、ＩＤＬＥ状態では、電力制御信号Ｍｏｄｕｌｅ１_ｅｎ、電力制御信号Ｓｃａｌａｒ_Ｅｘｅ_Ｒｅｑおよび電力制御信号Ｖｅｃｔｏｒ_Ｅｘｅ_ＲｅｑをＤＩＳＡＢＬＥに設定することができる。また、スカラー命令が実行される場合、電力制御信号Ｍｏｄｕｌｅ１_ｅｎおよび電力制御信号Ｓｃａｌａｒ_Ｅｘｅ_ＲｅｑをＡＣＴＩＶＥに設定するとともに、電力制御信号Ｖｅｃｔｏｒ_Ｅｘｅ_ＲｅｑをＤＩＳＡＢＬＥに設定することができる。また、ベクトル命令が実行される場合、第０要素演算ステートから第７要素演算ステートまでの各要素の演算ステートにおいて、電力制御信号Ｍｏｄｕｌｅ１_ｅｎおよび電力制御信号Ｖｅｃｔｏｒ_Ｅｘｅ_ＲｅｑをＡＣＴＩＶＥに設定するとともに、電力制御信号Ｓｃａｌａｒ_Ｅｘｅ_ＲｅｑをＤＩＳＡＢＬＥに設定することができる。また、モジュールＭ１以外の他のモジュールＭ０、Ｍ２〜Ｍｎについても同様に定義することができる。
【００７０】
これにより、モジュールＭ１が使用されない場合には、モジュールＭ１、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの動作を停止させることが可能となる。また、モジュールＭ１にてスカラー命令が実行される場合、モジュールＭ１およびスカラーレジスタ２０ａを動作させることが可能となるとともに、ベクトルレジスタ２０ｂの動作を停止させることが可能となる。また、モジュールＭ１にてベクトル命令が実行される場合、モジュールＭ１およびベクトルレジスタ２０ｂを動作させることが可能となるとともに、スカラーレジスタ２０ａの動作を停止させることが可能となる。
【００７１】
なお、図９の電力制御信号発生部５３は、複数のモジュール制御用ステートマシン５２ａ〜５２ｎからモジュールＭ０〜Ｍｎを動作させる制御信号を受け取った場合、これらの論理和に基づいてモジュール電力制御信号を生成することができる。これにより、１個のモジュール制御用ステートマシン５２ａ〜５２ｎからでもＡＣＴＩＶＥ要求があった場合においても、そのモジュール制御用ステートマシン５２ａ〜５２ｎに対応したモジュールＭ０〜Ｍｎを動作させることができる。
【００７２】
図１１は、図２の動作状態管理部７０の概略構成を示すブロック図である。
図１１において、動作状態管理部７０は、電力モードの設定を記憶した電力モード設定レジスタ７１と、電力モード設定レジスタ７１の設定に基づいて電力モードを定義する電力モード定義部７２と、電力制御信号、割り込みによる起動信号、メモリストール信号および電力モード定義部７２からの電力モード信号に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの消費電力に関する制御を行う動作ユニット調整部７３と、電力モード定義部７２からの電力モード信号に基づいて、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給するクロック、電圧および電力を切り換えるクロック・電源切換部７４とで構成されている。
【００７３】
電力モード定義部７２は、クロックモードを定義するクロックモード定義部７２ａと、クロックモード定義部７２ａの定義によりクロックモードのステートを行うクロックモードステートマシン７２ｂと、電圧・周波数モードを定義する電圧・周波数モード定義部７２ｃと、電圧・周波数モード定義部７２ｃの定義により電圧・周波数モードのステートを行う電圧・周波数モードステートマシン７２ｄとで構成されており、動作ユニット調整部７３およびクロック・電源切換部７４に電力モード信号を出力するようになっている。
【００７４】
動作ユニット調整部７３は、複数サイクル命令管理部５０からのモジュール電力制御信号に応じて、スカラー演算器１０ａ、１０ｂが非動作演算器となる期間、そのスカラー演算器１０ａ、１０ｂの消費電力が低減されるように、そのスカラー演算器１０ａ、１０ｂの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行うことができる。
【００７５】
また、動作ユニット調整部７３は、複数サイクル命令管理部５０からのモジュール電力制御信号に応じて、ベクトル演算器１０ｃ、１０ｄが非動作演算器となる期間、そのベクトル演算器１０ｃ、１０ｄの消費電力が低減されるように、そのベクトル演算器１０ｃ、１０ｄの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行うことができる。
【００７６】
また、動作ユニット調整部７３は、複数サイクル命令管理部５０からのスカラーレジスタ電力制御信号に応じて、スカラー演算器１０ａ、１０ｂがスカラーレジスタ２０ａを利用しない期間、そのスカラーレジスタ２０ａの消費電力が低減されるように、スカラーレジスタ２０ａの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行うことができる。
【００７７】
また、動作ユニット調整部７３は、複数サイクル命令管理部５０からのベクトルレジスタ電力制御信号に応じて、ベクトル演算器１０ｃ、１０ｄがベクトルレジスタ２０ｂを利用しない期間、そのベクトルレジスタ２０ｂの消費電力が低減されるように、ベクトルレジスタ２０ｂの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行うことができる。
【００７８】
また、動作ユニット調整部７３は、メモリアクセス部１、ローカルメモリ２、ＤＭＡ３、キャッシュメモリ４、５、タイマ６０または割込制御部６５が利用されない期間、それらのリソース１〜５、６０、６５の消費電力が低減されるように、それらのリソース１〜５、６０、６５の消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行うことができる。特に、命令コードがロード／ストア命令以外のものを示すものであるときは、リソース１〜５、６０、６５について、省電力制御を行うことができる。また、ローカルメモリ２にアクセスするときは、キャッシュメモリ４および共有メモリ６について、省電力制御を行うことができる。
【００７９】
ここで、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄまたはその他のリソース１〜６、６０、６５の消費電力に関する制御は、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄまたはその他リソース１〜６、６０、６５に供給するクロックの有無を調整する制御、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄまたはその他リソース１〜６、６０、６５に供給する電力の有無を調整する制御、並びにスカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄまたはその他リソース１〜６、６０、６５に供給する周波数および電圧を調整する制御を適用することができる。また、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの消費電力に関する制御は、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給するクロックの有無を調整する制御、並びにスカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給する周波数および電圧を調整する制御を適用することができる。
【００８０】
また、動作ユニット調整部７３は、割込制御部６５からの割り込みによる起動信号またはメモリアクセス部１からのメモリストール信号を入力したときは、その入力が停止されるまで、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの消費電力に関する制御を延長することができる。
【００８１】
図１２は、図１１のクロック・電源切換部７４の構成を示すブロック図である。
図１２において、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給する周波数および電圧を調整する場合、周波数・電圧モード変更要求信号により電力モード定義部７２が出力する周波数・電圧モードを入力したときは（１）、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂへのクロックの供給を停止すべきクロック停止要求をクロック制御部８０に出力する（２）。
【００８２】
次いで、クロック停止応答をクロック制御部８０から入力したときは（３）、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給する電圧設定に関する電圧制御信号を電源制御部８５に出力するとともに、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂに供給する周波数設定に関する周波数変更信号をクロック制御部８０に出力する（４）。そして、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂへのクロックの供給を再開すべきクロック再開要求をクロック制御部８０に出力し（５）、クロック再開応答をクロック制御部８０から入力するのを待って（６）、周波数および電圧の調整を完了する。
【００８３】
このように、図２の並列演算処理プロセッサ１００は、スカラー演算を行うスカラー演算器１０ａ、１０ｂおよびベクトル演算を行うベクトル演算器１０ｃ、１０ｄとを含んでなり、スカラー演算器１０ａ、１０ｂおよびベクトル演算器１０ｃ、１０ｄの消費電力に関する制御を、命令コードにより特定される演算種別に応じてそれぞれ行うことができる。このため、スカラー演算器１０ａ、１０ｂおよびベクトル演算器１０ｃ、１０ｄの種別に応じて消費電力に関する制御を行うことができ、複数種類のスカラー演算器１０ａ、１０ｂおよびベクトル演算器１０ｃ、１０ｄを組み合わせて構成された並列演算処理プロセッサ１００の消費電力を低減することができる。
【００８４】
また、並列演算処理プロセッサ１００は、スカラー演算器１０ａ、１０ｂおよびベクトル演算器１０ｃ、１０ｄの消費電力に関する制御ならびにスカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの消費電力に関する制御を、命令コードにより特定される演算形態に応じてそれぞれ行うことができる。このため、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０のそれぞれについて消費電力に関する制御を行うことができ、スカラー演算器１０ａ、１０ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラーレジスタ２０ａおよびベクトルレジスタ２０を組み合わせて構成された並列演算処理プロセッサ１００の消費電力を低減することができる。
【００８５】
図１３は、第２実施形態に係るクロックゲーティング方法を示すブロック図である。
図１３において、図２のクロック制御部８０には、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎが設けられ、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎは、例えば、図２のフェッチ部３０、デコード部４０、ベクトルレジスタ２１ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラー演算器１０ａ、１０ｂ、スカラーレジスタ２１ａにそれぞれ接続することができる。
【００８６】
また、例えば、スカラーレジスタ２０ａには、スカラーレジスタ２０ａの構成要素ごとに局所的にクロックゲーティングを行うクロックゲーティングマクロ回路ＣＧ１０が設けられるとともに、ベクトルレジスタ２０ｂには、ベクトルレジスタ２０ｂの構成要素ごとに局所的にクロックゲーティングを行うクロックゲーティングマクロ回路ＣＧ１１が設けられている。ここで、クロックゲーティングマクロ回路ＣＧ１０、ＣＧ１１には、デコード部４０から出力される実行ユニット制御信号が入力される。そして、クロックゲーティングマクロ回路ＣＧ１０、ＣＧ１１は、この実行ユニット制御信号に基づいて、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの各構成要素ごとに局所的にクロックゲーティングをそれぞれ行うことにより、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの各構成要素に対するクロック信号の供給をそれぞれ制御することができる。
【００８７】
これにより、ベクトル命令に基づいて、スカラーレジスタ２０ａおよびベクトルレジスタ２０ｂの各構成要素の消費電力を細やかに制御することができ、プログラミングにかかる負担を抑制しつつ、消費電力をより一層低減することが可能となる。
図１４は、本発明の第３実施形態に係るクロックゲーティング方法を示すブロック図である。
【００８８】
図１４において、ベクトルレジスタ２１ｂには、その一部の構成要素として、ＤフリップフロップＦ０〜Ｆ３１が設けられ、３２ビットレジスタが構成されているものとする。そして、ベクトルレジスタ２１ｂの構成要素となる３２ビットレジスタにクロックゲーティングマクロ回路ＣＧ１２を配置することができる。
すなわち、クロックゲーティングマクロ回路ＣＧ１２には、ラッチ回路８４およびアンド回路８５が設けられるとともに、アンド回路８５の出力は、ＤフリップフロップＦ０〜Ｆ３１の各クロック入力端子に接続されている。そして、ラッチ回路８２に入力されるクロック信号ＣＬＫに同期して、イネーブル信号ＥＮがラッチ回路８２にてラッチされる。そして、ラッチ回路８２にてラッチされたイネーブル信号ＥＮはアンド回路８３に出力され、クロック信号ＣＬＫとの論理積をとることにより、ゲートクロック信号Ｇ_ＣＬＫがＤフリップフロップＦ０〜Ｆ３１の各クロック入力端子に出力される。そして、ゲートクロック信号Ｇ_ＣＬＫがＤフリップフロップＦ０〜Ｆ３１の各クロック入力端子に入力されると、ＤフリップフロップＦ０〜Ｆ３１は、Ｄフリップフロップ８４のＤ端子に入力されるデータＤＡＴＡ［０］〜［３１］を取り込み、Ｄ_ＯＵＴ［０］〜［３１］として出力することができる。
【００８９】
ここで、ベクトル演算器１０ｃ、１０ｄが３２ビットレジスタに書き込みを行う際に、ベクトル演算器１０ｃ、１０ｄは、イネーブル信号ＥＮをアクティブにすることができる。このため、３２ビットレジスタへの書き込みが必要な時にのみ、３２個のＤフリップフロップＦ０〜Ｆ３１にクロックを供給することができ、３２ビットレジスタにアクセスがない時および３２ビットレジスタから読み出しを行っている時には、３２個のＤフリップフロップＦ０〜Ｆ３１へのクロックの供給を停止することができる。この結果、クロックの信号ラインおよびＤフリップフロップＦ０〜Ｆ３１への不要なクロックの供給を停止することができ、図２の並列演算処理プロセッサ１００の消費電力を低減することができる。
【００９０】
なお、１個のクロックゲーティングマクロ回路ＣＧ１２を３２ビットレジスタごとに配置する方法以外にも、例えば、８ビットのバイト刻みでクロックゲーティングマクロ回路を挿入するようにしてもよい。レジスタ退避するアクセスは、３２ビットのワード単位で行われる場合と、８ビットのバイト単位、もしくは１６ビットのハーフ・ワード単位で行われることがある。このため、８ビットのバイト単位でクロックの供給を制御することで、消費電力をより柔軟に制御することが可能となる。
【００９１】
図１５は、本発明の第４実施形態に係るクロックゲーティング方法を示すブロック図である。
図１５において、図２のクロック制御部８０には、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎが設けられ、クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎは、図２のフェッチ部３０、デコード部４０、ベクトルレジスタ２１ｂ、ベクトル演算器１０ｃ、１０ｄ、スカラー演算器１０ａ、１０ｂおよびスカラーレジスタ２１ａにそれぞれ接続されている。そして、各クロックゲーティングマクロ回路ＣＧ１〜ＣＧｎには、ルートバッファＲＢ１を介してクロック信号ＣＬＫが共通に入力されるとともに、動作状態管理部７０にて生成されたイネーブル信号ＥＮ_０〜ＥＮ_ｎがそれぞれ入力される。
【００９２】
ここで、ベクトルレジスタ２１ｂには、その一部の構成要素として、６４個の３２ビットレジスタＶＲ００〜ＶＲ７７が設けられ、８要素からなる８本分のベクトルレジスタが構成されているものとする。そして、ベクトルレジスタ２１ｂには、６４個の３２ビットレジスタＶＲ００〜ＶＲ７７にそれぞれ対応してクロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７が挿入されている。そして、各クロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７には、クロックゲーティングマクロ回路ＣＧ２から出力されたゲートクロック信号ＧａｔｅＣＬＫ_２が共通に入力されるとともに、イネーブル信号ＥＮ_００〜ＥＮ_７７がそれぞれ入力される。
【００９３】
そして、クロックゲーティングマクロ回路ＣＧ２は、イネーブル信号ＥＮ_２がアクティブになると、ゲートクロック信号ＧａｔｅＣＬＫ_２を各クロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７に供給するとともに、イネーブル信号ＥＮ_２がディセーブルになると、ゲートクロック信号ＧａｔｅＣＬＫ_２の各クロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７への供給を停止する。これにより、ベクトルレジスタ２１ｂが使用されないサイクル期間中、ベクトルレジスタ２１ｂ全体をモジュール単位で停止させることが可能となり、図２の並列演算処理プロセッサ１００の消費電力を低減することができる。
【００９４】
また、ゲートクロック信号ＧａｔｅＣＬＫ_２が各クロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７に供給されている時に、イネーブル信号ＥＮ_００〜ＥＮ_７７のいずれかがアクティブになると、アクティブ状態のイネーブル信号ＥＮ_００〜ＥＮ_７７が入力されたクロックゲーティングマクロ回路ＣＧ００〜ＣＧ７７からゲートクロック信号ＧａｔｅＣＬＫ_２が出力される。このため、イネーブル信号ＥＮ_００〜ＥＮ_７７を選択することにより、３２ビットレジスタＶＲ００〜ＶＲ７７のいずれかを選択してクロックを供給することが可能となるとともに、今回の命令で使用されない３２ビットレジスタＶＲ００〜ＶＲ７７へのクロックを停止させることができる。
【００９５】
ここで、イネーブル信号ＥＮ_００〜ＥＮ_７７を選択は、デコード部４０からベクトル演算器１０ｃ、１０ｄおよびベクトルレジスタ２０ｂに出力される実行ユニット制御信号に基づいて行うことができる。すなわち、ベクトル演算器１０ｃ、１０ｄは、図４のベクトル命令によるディスティネーションレジスタｄｓｔの指定に基づいて、３２ビットレジスタＶＲ００〜ＶＲ７７のうちの何番目に書き込みを行うかを判断することができる。そして、ベクトル演算器１０ｃ、１０ｄは、その書き込み先の３２ビットレジスタＶＲ００〜ＶＲ７７に対応したイネーブル信号ＥＮ_００〜ＥＮ_７７をアクティブにすることにより、今回の命令で書き込みが行われる３２ビットレジスタＶＲ００〜ＶＲ７７にのみクロックを供給するとともに、今回の命令で書き込みが行われない３２ビットレジスタＶＲ００〜ＶＲ７７へのクロックの供給を停止させることができる。
【００９６】
これにより、ベクトル命令を与えることで、今回の命令で使用されないベクトルレジスタ２１ｂ全体をモジュール単位で停止させることが可能となるとともに、今回の命令でベクトルレジスタ２１ｂが使用される場合においても、今回の命令で実際に使用される３２ビットレジスタＶＲ００〜ＶＲ７７のみを個別に動作させることができ、プログラミングにかかる負担を抑制しつつ、消費電力をより一層低減することが可能となる。
【００９７】
図１６は、本発明の第５実施形態に係るベクトル演算型並列演算処理プロセッサの構成を示すブロック図である。
図１６において、ベクトル演算型並列演算処理プロセッサには、乗算を行う２つの乗算器１１ａ、１１ｂ、加算を行う２つの加算器１１ｃ、１１ｄ、データ転送を行う２つの転送ユニット１１ｅ、１１ｆ、スカラーレジスタ２３ａおよびベクトルレジスタ２３ｂが設けられている。また、ベクトル演算型並列演算処理プロセッサには、フェッチ部３００、デコード部４００、プログラムカウンタ５００およびステータスレジスタ６００が設けられている。そして、これらのモジュールは、データバス、プログラムバス、データアドレスバスまたはプログラムアドレスバスを介して互いに接続されている。
【００９８】
ここで、例えば、図６のベクトル命令Ｉｎｓ．１、Ｉｎｓ．２のオペコードｏｐｅｃｏｄｅにて乗算が指定され、ベクトル命令Ｉｎｓ．３、Ｉｎｓ．４のオペコードｏｐｅｃｏｄｅにて加算が指定されているものとすると、ベクトル命令Ｉｎｓ．１の実行ＥＸＥを乗算器１１ａで行わせ、ベクトル命令Ｉｎｓ．２の実行ＥＸＥを乗算器１１ｂで行わせ、ベクトル命令Ｉｎｓ．３の実行ＥＸＥを加算器１１ｃで行わせ、ベクトル命令Ｉｎｓ．４の実行ＥＸＥを加算器１１ｄで行われることにより、これらのベクトル命令１１ｂ〜Ｉｎｓ．４にそれぞれ対応した実行ＥＸＥを並列に行わせることができる。
【００９９】
また、デコード部４００にてベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４の解読が行われると、それらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４のオペコードｏｐｅｃｏｄｅおよびリピートアマウントｒｐｔａｍｔに基づいて、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４の依存関係を判断し、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行するために、何サイクル分の時間がかかるかを判定することができる。そして、これらのベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行するために必要なサイクル数分だけ、乗算器１１ａ、１１ｂ、加算器１１ｃ、１１ｄおよびベクトルレジスタ２３ｂを動作させることにより、ベクトル命令Ｉｎｓ．１〜Ｉｎｓ．４を実行するために必要のないモジュールへのクロックの供給を停止させた状態で、ベクトル演算のパイプライン処理を並列に行うことができる。
【図面の簡単な説明】
【０１００】
【図１】一実施形態に係るコンピュータシステムの概略構成を示すブロック図。
【図２】図１の並列演算処理プロセッサ１００の概略構成を示すブロック図。
【図３】図２のレジスタ２０ａ、２０ｂの概略構成を示すブロック図。
【図４】ベクトル命令のデータ構造を示す図である。
【図５】図２の並列演算処理プロセッサ１００のベクトル乗算処理を示す図。
【図６】図２の並列演算処理プロセッサ１００のパイプライン処理を示すブロック図。
【図７】図２のクロック制御部８０の概略構成を示すブロック図。
【図８】図７のクロックゲーティングマクロ回路の構成を示すブロック図。
【図９】図２の複数サイクル命令管理部５０の概略構成を示すブロック図。
【図１０】図９のステートマシン５２ａ〜５２ｎの状態遷移を示す図。
【図１１】図２の動作状態管理部７０の概略構成を示すブロック図である。
【図１２】図１１のクロック・電源切換部７４の構成を示すブロック図である。
【図１３】第２実施形態に係るクロックゲーティング方法を示すブロック図。
【図１４】第３実施形態に係るクロックゲーティング方法を示すブロック図。
【図１５】第４実施形態に係るクロックゲーティング方法を示すブロック図。
【図１６】第５実施形態に係るベクトル演算型並列演算処理プロセッサの概略構成を示すブロック図。
【符号の説明】
【０１０１】
１００  並列演算処理プロセッサ、１００ａ  アクセス部、１  メモリアクセス部、２  ローカルメモリ、３  ＤＭＡ、４  データキャッシュメモリ、５  プログラムキャッシュメモリ、６  共有メモリ、１００ｂ  演算処理部、１０ａ、１０ｂ  スカラー演算器、１０ｃ、１０ｄ  ベクトル演算器、Ａ１、１１ａ、１１ｂ  乗算器、１１ｃ、１１ｄ  加算器、１１ｅ、１１ｆ  転送ユニット、１２ａ〜１２ｆ  汎用演算器２０ａ、２１ａ、２３ａ  スカラーレジスタ、２０ｂ、２１ｂ、２３ｂ  ベクトルレジスタ、３０、３００  フェッチ部、４０、４００  デコード部、１００ｃ  電力制御部、５０  複数サイクル命令管理部、５１  使用モジュール判定部、５２ａ〜５２ｎ  ステートマシン、５３  電力制御信号生成部、６０  タイマ、６５  割込制御部、７０  動作状態管理部、７２  電力モード定義部、７２ａ  クロックモード定義部、７２ｂ  クロックモードステートマシン、７２ｃ  電圧・周波数モード定義部、７２ｄ  電圧・周波数モードステートマシン、７３  動作ユニット調整部、７４  クロック・電源切換部、８０  クロック制御部、８５  電源制御部、１１０  メインメモリ、１１１  プログラムテキスト領域、１１２  初期化済みデータ領域、１１３  未初期化データ領域、１１４  ヒープ領域、１１５  スタック領域、２００  アセンブリソースコード、２１０  アセンブラ、２２０  リンカ、２３０  実行プログラム、２４０  プログラムローダ、ＶＲ０〜ＶＲ２  ベクトルレジスタ、ＲＢ１  ルートバッファ、ＣＧ０〜ＣＧｎ、ＣＧ１１、ＣＧ１２、ＣＧ００〜ＣＧ７７  クロックゲーティングマクロ回路、Ｍ０〜Ｍｎ  モジュール、８２  ラッチ回路、８３  アンド回路、８４、Ｆ０〜Ｆ３１  Ｄフリップフロップ、５００  プログラムカウンタ、６００  ステータスレジスタ
【図１】
0004800582.tif 000002
【図２】
0004800582.tif 000003
【図３】
0004800582.tif 000004
【図４】
0004800582.tif 000005
【図５】
0004800582.tif 000006
【図６】
0004800582.tif 000007
【図７】
0004800582.tif 000008
【図８】
0004800582.tif 000009
【図９】
0004800582.tif 000010
【図１０】
0004800582.tif 000011
【図１１】
0004800582.tif 000012
【図１２】
0004800582.tif 000013
【図１３】
0004800582.tif 000014
【図１４】
0004800582.tif 000015
【図１５】
0004800582.tif 000016
【図１６】
0004800582.tif 000017