(57)【特許請求の範囲】
【請求項１】
複数の演算器を備え、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出し、読み出した命令グループに含まれる命令コードに基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、
前記命令グループは、前記複数の演算器のうち当該命令グループ若しくは後続の命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、又は前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、
前記命令グループの動作予定情報を読み出し、読み出した動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっていることを特徴とする並列演算処理装置。
【請求項２】
複数の演算器と、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、
さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段を備え、
前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、又は前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、
前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっていることを特徴とする並列演算処理装置。
【請求項３】
請求項２において、
前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記第１種演算器以外の第２種演算器とを含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御及び前記第２種演算器の消費電力に関する制御をそれぞれ行うようになっていることを特徴とする並列演算処理装置。
【請求項４】
請求項３において、
前記演算器が演算に利用するデータを格納するためのレジスタを備え、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御及び前記レジスタの消費電力に関する制御をそれぞれ行うようになっていることを特徴とする並列演算処理装置。
【請求項５】
複数の演算器と、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、
さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段と、前記演算器が演算に利用するデータを格納するためのレジスタとを備え、
前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記第１種演算器以外の第２種演算器とを含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御及び前記第２種演算器の消費電力に関する制御をそれぞれ行い、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御及び前記レジスタの消費電力に関する制御をそれぞれ行い、
前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、又は前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、
前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっていることを特徴とする並列演算処理装置。
【請求項６】
複数の演算器と、前記演算器が演算に利用するデータを格納するためのレジスタと、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、
さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段を備え、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御及び前記レジスタの消費電力に関する制御をそれぞれ行い、
前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、又は前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、
前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっていることを特徴とする並列演算処理装置。
【請求項７】
請求項６において、
前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記複数の演算器のうち前記第１種演算器以外の第２種演算器とを含んでなり、
前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、
前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御及び前記第２種演算器の消費電力に関する制御をそれぞれ行うようになっていることを特徴とする並列演算処理装置。
【請求項８】
請求項４、５及び７のいずれかにおいて、
前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記複数の演算器のうちいずれかが前記非動作演算器となる期間、該当の演算器について、前記演算器の消費電力が低減されるように前記演算器の消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項９】
請求項４、５、７及び８のいずれかにおいて、
前記動作予定情報は、前記命令コードの読出方向からみて前記命令グループに含まれる命令コードよりも前方に配置したことを特徴とする並列演算処理装置。
【請求項１０】
請求項４、５、７乃至９のいずれかにおいて、
前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて前記特定演算か否かにより、前記第１種演算器が前記非動作演算器となる期間、該当の第１種演算器について、前記第１種演算器の消費電力が低減されるように前記第１種演算器の消費電力に関する制御を行い、
前記命令グループ解読手段で解読した演算種別に応じて前記特定演算か否かにより、前記第２種演算器が前記非動作演算器となる期間、該当の第２種演算器について、前記第２種演算器の消費電力が低減されるように前記第２種演算器の消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１１】
請求項４、５、７乃至１０のいずれかにおいて、
さらに、外部のメインメモリに対してアクセスを行うメモリアクセス手段を備え、
前記電力制御手段は、前記メモリアクセス手段が利用されない期間、前記メモリアクセス手段の消費電力が低減されるように前記メモリアクセス手段の消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１２】
請求項４、５、７乃至１１のいずれかにおいて、
さらに、ローカルメモリを備え、
前記電力制御手段は、前記ローカルメモリが利用されない期間、前記ローカルメモリの消費電力が低減されるように前記ローカルメモリの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１３】
請求項１２において、
さらに、前記ローカルメモリと前記メインメモリとの間でデータ転送を行うＤＭＡを備え、
前記電力制御手段は、前記ＤＭＡが利用されない期間、前記ＤＭＡの消費電力が低減されるように前記ＤＭＡの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１４】
請求項４、５、７乃至１３のいずれかにおいて、
さらに、データキャッシュを行うデータキャッシュメモリを備え、
前記電力制御手段は、前記データキャッシュメモリが利用されない期間、前記データキャッシュメモリの消費電力が低減されるように前記データキャッシュメモリの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１５】
請求項４、５、７乃至１４のいずれかにおいて、
さらに、プログラムキャッシュを行うプログラムキャッシュメモリを備え、
前記電力制御手段は、前記プログラムキャッシュメモリが利用されない期間、前記プログラムキャッシュメモリの消費電力が低減されるように前記プログラムキャッシュメモリの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１６】
請求項４、５、７乃至１５のいずれかにおいて、
さらに、タイマを備え、
前記電力制御手段は、前記タイマが利用されない期間、前記タイマの消費電力が低減されるように前記タイマの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１７】
請求項４、５、７乃至１６のいずれかにおいて、
さらに、前記演算器に割込信号を出力する割込制御手段を備え、
前記電力制御手段は、前記割込制御手段が利用されない期間、前記割込制御手段の消費電力が低減されるように前記割込制御手段の消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項１８】
請求項４、５、７乃至１７のいずれかにおいて、
前記第１種演算器は、ベクトル演算用の演算器であり、前記第２種演算器は、スカラ演算用の演算器であることを特徴とする並列演算処理装置。
【請求項１９】
請求項４、５、７乃至１７のいずれかにおいて、
前記第１種演算器は、汎用演算器であり、前記第２種演算器は、プログラムフロー制御用演算器であることを特徴とする並列演算処理装置。
【請求項２０】
請求項１９において、
前記レジスタは、前記汎用演算器が演算に利用するデータを格納するための汎用レジスタと、前記プログラムフロー制御用演算器が演算に利用するデータを格納するための制御用レジスタとからなり、
前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記汎用演算器及び前記プログラムフロー制御用演算器の消費電力に関する制御、並びに前記汎用レジスタ及び前記制御用レジスタの消費電力に関する制御をそれぞれ行うようになっていることを特徴とする並列演算処理装置。
【請求項２１】
請求項４、５、７乃至２０のいずれかにおいて、
前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて前記レジスタを利用する演算か否かにより、前記演算器が前記レジスタを利用しない期間、前記レジスタの消費電力が低減されるように前記レジスタの消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【請求項２２】
請求項４、５、７乃至２１のいずれかにおいて、
前記演算器の消費電力に関する制御は、前記演算器に供給するクロックを調整する制御であることを特徴とする並列演算処理装置。
【請求項２３】
請求項４、５、７乃至２２のいずれかにおいて、
前記演算器の消費電力に関する制御は、前記演算器に供給する電力を調整する制御であることを特徴とする並列演算処理装置。
【請求項２４】
請求項４、５、７乃至２３のいずれかにおいて、
前記演算器の消費電力に関する制御は、前記演算器に供給する周波数及び電圧を調整する制御であることを特徴とする並列演算処理装置。
【請求項２５】
請求項４、５、７乃至２４のいずれかにおいて、
前記レジスタの消費電力に関する制御は、前記レジスタに供給するクロックを調整する制御であることを特徴とする並列演算処理装置。
【請求項２６】
請求項４、５、７乃至２５のいずれかにおいて、
前記レジスタの消費電力に関する制御は、前記レジスタに供給する周波数及び電圧を調整する制御であることを特徴とする並列演算処理装置。
【請求項２７】
請求項４、５、７乃至２６のいずれかにおいて、
前記命令グループ解読手段の解読結果に基づいて前記複数の演算器の動作状態を管理する動作状態管理手段を備え、
前記動作状態管理手段は、リソース管理テーブルを有し、前記演算器の動作サイクルごとに、前記各演算器が前記動作演算器となるか前記非動作演算器となるかを前記リソース管理テーブルに登録し、前記リソース管理テーブルの登録内容のうち次の動作サイクルに関するものを前記電力制御手段に出力するようになっており、
前記電力制御手段は、前記動作状態管理手段からの登録内容に基づいて、前記演算器の消費電力に関する制御を行うようになっていることを特徴とする並列演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の演算器を並列に動作させることによりパイプライン処理を行う装置に係り、特に、並列演算処理装置において、消費電力を低減するのに好適な並列演算処理装置に関する。
【０００２】
【従来の技術】
従来、プロセッサの低消費電力化を図る技術としては、例えば、特開昭59-182389号公報に開示されたマイクロコンピュータの動作方法（以下、第１の従来例という。）、特開平4-96856号公報に開示された情報処理装置（以下、第２の従来例という。）、特開平4-127210号公報に開示された低消費電力プロセッサ（以下、第３の従来例という。）および特開平8-234861号公報に開示された低消費電力プロセッサ（以下、第４の従来例という。）があった。さらに、特開平9-22318号公報に開示されたプロセッサ（以下、第５の従来例という。）、特開平9-34599号公報に開示されたプロセッサシステム（以下、第６の従来例という。）、特開平11-85723号公報に開示されたマイクロコンピュータ（以下、第７の従来例という。）および特開2001-22582号公報に開示された低消費マイクロプロセッサ（以下、第８の従来例という。）があった。
【０００３】
第１の従来例は、基準信号発生回路と、基準信号発生回路の出力によりシステムの動作を制御するクロックを発生するクロックジェネレータと、プログラムを構成する命令が書き込まれたＲＯＭと、ＲＯＭに書き込まれた命令を取り出すためにＲＯＭのアドレスを指定するプログラムカウンタと、プログラムカウンタで取り出した命令を解読して各種回路を制御する制御回路と、所定の命令が実行されたときクロックジェネレータの動作を停止させる状態制御回路とを備えている。そして、クロックジェネレータの動作停止状態は、少なくとも割込信号の印加によって解除され、かつ、割込信号の印加により制御回路は、プログラムカウンタにクロックジェネレータの動作停止の原因となった命令が書き込まれたアドレスを再びセットすることにより、割込処理終了後に再びクロックジェネレータの動作を停止するようになっている。
【０００４】
これにより、割込信号が印加するまでクロックジェネレータの動作が停止するので、消費電力を低減することができる。
第２の従来例は、主要業務のアプリケーション・プログラムを格納する記憶装置と、そのプログラムを実行する高速動作可能なメインＣＰＵと、主要業務以外の処理を実行する低電圧駆動、低消費電力型のサブＣＰＵと、サブＣＰＵによって制御される周辺回路とを備えている。
【０００５】
これにより、サブＣＰＵがメインＣＰＵに代わって周辺回路を制御するので、消費電力を低減することができる。
第３の従来例は、命令プログラムの実行に関与する回路を判別し、命令プログラムの実行に関与する回路のみにクロックを供給する制御回路を備えている。
これにより、命令プログラムの実行に関与する回路のみにクロックが供給されるので、消費電力を低減することができる。
【０００６】
第４の従来例は、プログラムを処理するプロセッサの複数の回路ブロックの別々のクロック入力を、有効にするか無効にするかの手段（例えば各クロック入力に対し符号０／１のフラグACLK1 〜ACLKnを付加する手段)をプロセッサの外部に具えるように構成する。
これにより、ディジタル信号処理プロセッサなどのプログラム処理のプロセッサについて消費電力を低減することができる。
【０００７】
第５の従来例は、マイクロプロセッサを構成する各ハードウェア資源への入力クロックのサイクル数を命令によって個別に変更することを可能にし、コンパイラによって実行に不要であると判断されたハードウェア資源への入力クロックを低下または停止する命令を挿入する。また、実行に必要なハードウェア資源のクロックサイクルを全ハードウェア資源の最大動作周波数とする。
【０００８】
これにより、マイクロプロセッサの消費電力を実行性能を低下することなく削減することができる。
第６の従来例は、命令列をデコードするデコ−ダと、データについての演算を行なう命令ユニットと、デコ−ダが命令列をデコードした結果が、命令ユニットへの命令がＮＯＰ（no-operation）であるときには、命令ユニットの電源をオフとする電源制御ユニットとを備え、命令ユニットへの命令がＮＯＰであるときには、命令ユニットの電源がオフとされる。
【０００９】
これにより、デコード結果がＮＯＰであるときは、命令ユニットの電源がオフとなるので、消費電力を低減することができる。
第７の従来例は、ＣＰＵで実行される命令のうち、高速処理が要求されるものと高速処理が要求されないものとを識別するための情報がテーブル化されたテーブルメモリを設け、ＣＰＵに命令がフェッチされるごとに、テーブルメモリの情報に基づいてクロック信号の周波数を制御する。
【００１０】
これにより、命令に応じてクロック信号の周波数を下げることができ、マイクロコンピュータ応用機器の全体としてのパフォーマンスを保ったまま、消費電力を低減することができる。
第８の従来例は、命令キャッシュから供給される命令列において、命令無効化回路で浮動小数点演算ユニットを使用しない命令を無効命令に置き換え、その無効命令を浮動小数点命令レジスタに保持し、浮動小数点演算ユニット内の浮動小数点デコーダに供給するように構成される。
【００１１】
これにより、無効命令が連続した場合、浮動小数点データパスに加え、浮動小数点デコーダと浮動小数点レジスタの消費電力を低減することができる。
【００１２】
【発明が解決しようとする課題】
このように、第１ないし第８の従来例はいずれも、シングルプロセッサを対象として消費電力の低減を図るものである。しかしながら、複数の演算器を備えそれらを並列に動作させる並列演算処理装置を対象とした場合、同様の電力制御では、次のような問題がある。
【００１３】
第６の従来例は、デコード結果がＮＯＰであるときは、命令ユニットの電源をオフとするようになっている。しかし、並列演算処理装置では、複数の演算器のうち一部を使って演算を行う場合、演算を行わない他の演算器にＮＯＰを与えないこともあり、このような場合は、低消費電力化を十分に図ることができない。これは、演算を行わない他の演算器にもＮＯＰを与えることとすると、プログラム容量が膨大になってしまうためである。
【００１４】
また、並列演算処理装置には、例えば、ベクトル演算に特化した演算器やスカラ演算に特化した演算器のように、複数種類の演算器を組み合わせて構成し、演算の効率化を高めるものもある。しかし、それら演算器は演算の性質が異なるため、これを同列に取り扱い省電力制御するのは、消費電力を低減する観点からは効果的ではない。
【００１５】
また、並列演算処理装置は、複数の演算器のほか、演算器が演算に利用するデータを格納するためのレジスタを備えている。しかし、第１ないし第６の従来例では、演算器の省電力制御しか行っていないため、演算器がレジスタを使用しない命令コードを実行する場合には、レジスタで不要な電力が消費されてしまう。したがって、低消費電力化を十分に図ることができない。
【００１６】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、並列演算処理装置において、消費電力を低減するのに好適な並列演算処理装置を提供することを目的としている。
【００１７】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項１記載の並列演算処理装置は、複数の演算器を備え、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出し、読み出した命令グループに含まれる命令コードに基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、前記命令グループは、前記複数の演算器のうち当該命令グループ若しくは後続の命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、または前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、前記命令グループの動作予定情報を読み出し、読み出した動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっている。
【００１８】
このような構成であれば、命令グループが記憶手段から読み出され、読み出された命令グループに含まれる命令コードに基づいて複数の演算器が並列に動作することにより演算処理が行われる。命令グループ単位での実行では、命令グループの動作予定情報が読み出され、読み出された動作予定情報に基づいて、演算器の消費電力に関する制御が各演算器について行われる。
【００１９】
ここで、動作予定情報は、命令デコード処理の高速化を図る観点からは、ヘッダとして命令グループに含めるのが好ましいが、これに限らず、ヘッダ以外の別の領域として命令グループに含めてもよいし、命令グループに含まれる命令コードとはまったく別の領域に離隔してもよい。後者の場合、例えば、命令コードを読み出すためのプログラムカウンタ以外の別の専用カウンタを設け、専用カウンタにより動作予定情報を読み出すようにすれば、命令デコード処理の高速化を幾らか図ることができる。以下、請求項２、５および６記載の並列演算処理装置において同じである。
【００２４】
さらに、本発明に係る請求項２記載の並列演算処理装置は、複数の演算器と、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段を備え、前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、または前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっている。
【００２５】
このような構成であれば、命令グループ読出手段により、命令グループが記憶手段から読み出され、命令グループ解読手段により、読み出された命令グループの内容が解読される。そして、命令グループ解読手段での解読結果に基づいて複数の演算器が並列に動作することにより演算処理が行われる。
命令グループ単位での実行では、命令グループ解読手段により、読み出された命令グループから動作予定情報が抽出され、抽出された動作予定情報が電力制御手段に出力される。そして、電力制御手段により、命令グループ解読手段からの動作予定情報に基づいて、演算器の消費電力に関する制御が各演算器について行われる。
【００２６】
さらに、本発明に係る請求項３記載の並列演算処理装置は、請求項２記載の並列演算処理装置において、前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記第１種演算器以外の第２種演算器とを含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御および前記第２種演算器の消費電力に関する制御をそれぞれ行うようになっている。
【００２７】
このような構成であれば、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算種別が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて、第１種演算器の消費電力に関する制御および第２種演算器の消費電力に関する制御がそれぞれ行われる。
【００２８】
さらに、本発明に係る請求項４記載の並列演算処理装置は、請求項３記載の並列演算処理装置において、前記演算器が演算に利用するデータを格納するためのレジスタを備え、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御および前記レジスタの消費電力に関する制御をそれぞれ行うようになっている。
【００２９】
このような構成であれば、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算形態が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算形態に応じて、演算器の消費電力に関する制御およびレジスタの消費電力に関する制御がそれぞれ行われる。
【００３４】
さらに、本発明に係る請求項５記載の並列演算処理装置は、複数の演算器と、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段と、前記演算器が演算に利用するデータを格納するためのレジスタとを備え、前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記第１種演算器以外の第２種演算器とを含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御および前記第２種演算器の消費電力に関する制御をそれぞれ行い、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御および前記レジスタの消費電力に関する制御をそれぞれ行い、前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、または前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっている。
【００３５】
このような構成であれば、命令グループ読出手段により、命令グループが記憶手段から読み出され、命令グループ解読手段により、読み出された命令グループの内容が解読される。そして、命令グループ解読手段での解読結果に基づいて複数の演算器が並列に動作することにより演算処理が行われる。
命令グループ単位での実行では、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算種別が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて、第１種演算器の消費電力に関する制御および第２種演算器の消費電力に関する制御がそれぞれ行われる。
また、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算形態が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算形態に応じて、演算器の消費電力に関する制御およびレジスタの消費電力に関する制御がそれぞれ行われる。
また、命令グループ解読手段により、読み出された命令グループから動作予定情報が抽出され、抽出された動作予定情報が電力制御手段に出力される。そして、電力制御手段により、命令グループ解読手段からの動作予定情報に基づいて、演算器の消費電力に関する制御が各演算器について行われる。
【００３８】
さらに、本発明に係る請求項６記載の並列演算処理装置は、複数の演算器と、前記演算器が演算に利用するデータを格納するためのレジスタと、前記演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループを記憶手段から読み出す命令グループ読出手段と、前記命令グループ読出手段で読み出した命令グループの内容を解読する命令グループ解読手段とを備え、前記命令グループ解読手段の解読結果に基づいて複数の前記演算器を並列に動作させることにより演算処理を行う装置であって、さらに、前記命令グループ解読手段の解読結果に基づいて前記演算器の消費電力に関する制御を行う電力制御手段を備え、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算形態を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記演算器の消費電力に関する制御および前記レジスタの消費電力に関する制御をそれぞれ行い、前記命令グループは、前記複数の演算器のうち当該命令グループに含まれる命令コードに基づいて動作することとなる動作演算器、または前記複数の演算器のうち前記動作演算器以外の非動作演算器に関する動作予定情報を含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループから前記動作予定情報を抽出し、抽出した動作予定情報を前記電力制御手段に出力するようになっており、前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記演算器の消費電力に関する制御を前記各演算器について行うようになっている。
【００３９】
このような構成であれば、命令グループ読出手段により、命令グループが記憶手段から読み出され、命令グループ解読手段により、読み出された命令グループの内容が解読される。そして、命令グループ解読手段での解読結果に基づいて複数の演算器が並列に動作することにより演算処理が行われる。
命令グループ単位での実行では、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算形態が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算形態に応じて、演算器の消費電力に関する制御およびレジスタの消費電力に関する制御がそれぞれ行われる。
また、命令グループ解読手段により、読み出された命令グループから動作予定情報が抽出され、抽出された動作予定情報が電力制御手段に出力される。そして、電力制御手段により、命令グループ解読手段からの動作予定情報に基づいて、演算器の消費電力に関する制御が各演算器について行われる。
【００４０】
さらに、本発明に係る請求項７記載の並列演算処理装置は、請求項６記載の並列演算処理装置において、前記複数の演算器は、前記命令コードのうち特定演算を行う命令を示す特定演算用命令コードに基づいて動作可能な第１種演算器と、前記複数の演算器のうち前記第１種演算器以外の第２種演算器とを含んでなり、前記命令グループ解読手段は、前記命令グループ読出手段で読み出した命令グループについて、当該命令グループに含まれる命令コードにより特定される演算種別を解読するようになっており、前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて、前記第１種演算器の消費電力に関する制御および前記第２種演算器の消費電力に関する制御をそれぞれ行うようになっている。
【００４１】
このような構成であれば、命令グループ解読手段により、読み出された命令グループについて、その命令グループに含まれる命令コードにより特定される演算種別が解読される。そして、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて、第１種演算器の消費電力に関する制御および第２種演算器の消費電力に関する制御がそれぞれ行われる。
【００４２】
さらに、本発明に係る請求項８記載の並列演算処理装置は、請求項４、５および７のいずれかに記載の並列演算処理装置において、前記電力制御手段は、前記命令グループ解読手段からの動作予定情報に基づいて、前記複数の演算器のうちいずれかが前記非動作演算器となる期間、該当の演算器について、前記演算器の消費電力が低減されるように前記演算器の消費電力に関する制御を行うようになっている。
【００４３】
このような構成であれば、電力制御手段により、命令グループ解読手段からの動作予定情報に基づいて、複数の演算器のうちいずれかが非動作演算器となる期間、該当の演算器について、演算器の消費電力が低減されるように演算器の消費電力に関する制御が行われる。
さらに、本発明に係る請求項９記載の並列演算処理装置は、請求項４、５、７および８のいずれかに記載の並列演算処理装置において、前記動作予定情報は、前記命令コードの読出方向からみて前記命令グループに含まれる命令コードよりも前方に配置した。
【００４４】
このような構成であれば、命令グループの動作予定情報が読み出され、続いて、命令コードの読出方向からみてその動作予定情報の後方に配置されている各命令コードが読み出される。
さらに、本発明に係る請求項１０記載の並列演算処理装置は、請求項４、５、７ないし９のいずれかに記載の並列演算処理装置において、前記電力制御手段は、前記命令グループ解読手段で解読した演算種別に応じて前記特定演算か否かにより、前記第１種演算器が前記非動作演算器となる期間、該当の第１種演算器について、前記第１種演算器の消費電力が低減されるように前記第１種演算器の消費電力に関する制御を行い、前記命令グループ解読手段で解読した演算種別に応じて前記特定演算か否かにより、前記第２種演算器が前記非動作演算器となる期間、該当の第２種演算器について、前記第２種演算器の消費電力が低減されるように前記第２種演算器の消費電力に関する制御を行うようになっている。
【００４５】
このような構成であれば、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて特定演算か否かにより、第１種演算器が非動作演算器となる期間、該当の第１種演算器について、第１種演算器の消費電力が低減されるように第１種演算器の消費電力に関する制御が行われる。また、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて特定演算か否かにより、第２種演算器が非動作演算器となる期間、該当の第２種演算器について、第２種演算器の消費電力が低減されるように第２種演算器の消費電力に関する制御が行われる。
【００４６】
さらに、本発明に係る請求項１１記載の並列演算処理装置は、請求項４、５、７ないし１０のいずれかに記載の並列演算処理装置において、さらに、外部のメインメモリに対してアクセスを行うメモリアクセス手段を備え、前記電力制御手段は、前記メモリアクセス手段が利用されない期間、前記メモリアクセス手段の消費電力が低減されるように前記メモリアクセス手段の消費電力に関する制御を行うようになっている。
【００４７】
このような構成であれば、電力制御手段により、メモリアクセス手段が利用されない期間、メモリアクセス手段の消費電力が低減されるようにメモリアクセス手段の消費電力に関する制御が行われる。
さらに、本発明に係る請求項１２記載の並列演算処理装置は、請求項４、５、７ないし１１のいずれかに記載の並列演算処理装置において、さらに、ローカルメモリを備え、前記電力制御手段は、前記ローカルメモリが利用されない期間、前記ローカルメモリの消費電力が低減されるように前記ローカルメモリの消費電力に関する制御を行うようになっている。
【００４８】
このような構成であれば、電力制御手段により、ローカルメモリが利用されない期間、ローカルメモリの消費電力が低減されるようにローカルメモリの消費電力に関する制御が行われる。
さらに、本発明に係る請求項１３記載の並列演算処理装置は、請求項１２記載の並列演算処理装置において、さらに、前記ローカルメモリと前記メインメモリとの間でデータ転送を行うＤＭＡを備え、前記電力制御手段は、前記ＤＭＡが利用されない期間、前記ＤＭＡの消費電力が低減されるように前記ＤＭＡの消費電力に関する制御を行うようになっている。
【００４９】
このような構成であれば、電力制御手段により、ＤＭＡが利用されない期間、ＤＭＡの消費電力が低減されるようにＤＭＡの消費電力に関する制御が行われる。
さらに、本発明に係る請求項１４記載の並列演算処理装置は、請求項４、５、７ないし１３のいずれかに記載の並列演算処理装置において、さらに、データキャッシュを行うデータキャッシュメモリを備え、前記電力制御手段は、前記データキャッシュメモリが利用されない期間、前記データキャッシュメモリの消費電力が低減されるように前記データキャッシュメモリの消費電力に関する制御を行うようになっている。
【００５０】
このような構成であれば、電力制御手段により、データキャッシュメモリが利用されない期間、データキャッシュメモリの消費電力が低減されるようにデータキャッシュメモリの消費電力に関する制御が行われる。
さらに、本発明に係る請求項１５記載の並列演算処理装置は、請求項４、５、７ないし１４のいずれかに記載の並列演算処理装置において、さらに、プログラムキャッシュを行うプログラムキャッシュメモリを備え、前記電力制御手段は、前記プログラムキャッシュメモリが利用されない期間、前記プログラムキャッシュメモリの消費電力が低減されるように前記プログラムキャッシュメモリの消費電力に関する制御を行うようになっている。
【００５１】
このような構成であれば、電力制御手段により、プログラムキャッシュメモリが利用されない期間、プログラムキャッシュメモリの消費電力が低減されるようにプログラムキャッシュメモリの消費電力に関する制御が行われる。
さらに、本発明に係る請求項１６記載の並列演算処理装置は、請求項４、５、７ないし１５のいずれかに記載の並列演算処理装置において、さらに、タイマを備え、前記電力制御手段は、前記タイマが利用されない期間、前記タイマの消費電力が低減されるように前記タイマの消費電力に関する制御を行うようになっている。
【００５２】
このような構成であれば、電力制御手段により、タイマが利用されない期間、タイマの消費電力が低減されるようにタイマの消費電力に関する制御が行われる。
さらに、本発明に係る請求項１７記載の並列演算処理装置は、請求項４、５、７ないし１６のいずれかに記載の並列演算処理装置において、さらに、前記演算器に割込信号を出力する割込制御手段を備え、前記電力制御手段は、前記割込制御手段が利用されない期間、前記割込制御手段の消費電力が低減されるように前記割込制御手段の消費電力に関する制御を行うようになっている。
【００５３】
このような構成であれば、電力制御手段により、割込制御手段が利用されない期間、割込制御手段の消費電力が低減されるように割込制御手段の消費電力に関する制御が行われる。
さらに、本発明に係る請求項１８記載の並列演算処理装置は、請求項４、５、７ないし１７のいずれかに記載の並列演算処理装置において、前記第１種演算器は、ベクトル演算用の演算器であり、前記第２種演算器は、スカラ演算用の演算器である。
【００５４】
このような構成であれば、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて、ベクトル演算用の演算器の消費電力に関する制御およびスカラ演算用の演算器の消費電力に関する制御がそれぞれ行われる。
さらに、本発明に係る請求項１９記載の並列演算処理装置は、請求項４、５、７ないし１７のいずれかに記載の並列演算処理装置において、前記第１種演算器は、汎用演算器であり、前記第２種演算器は、プログラムフロー制御用演算器である。
【００５５】
このような構成であれば、電力制御手段により、命令グループ解読手段で解読された演算種別に応じて、汎用演算器の消費電力に関する制御およびプログラムフロー制御用演算器の消費電力に関する制御がそれぞれ行われる。
さらに、本発明に係る請求項２０記載の並列演算処理装置は、請求項１９記載の並列演算処理装置において、前記レジスタは、前記汎用演算器が演算に利用するデータを格納するための汎用レジスタと、前記プログラムフロー制御用演算器が演算に利用するデータを格納するための制御用レジスタとからなり、前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて、前記汎用演算器および前記プログラムフロー制御用演算器の消費電力に関する制御、並びに前記汎用レジスタおよび前記制御用レジスタの消費電力に関する制御をそれぞれ行うようになっている。
【００５６】
このような構成であれば、電力制御手段により、命令グループ解読手段で解読された演算形態に応じて、汎用演算器およびプログラムフロー制御用演算器の消費電力に関する制御、並びに汎用レジスタおよび制御用レジスタの消費電力に関する制御がそれぞれ行われる。
さらに、本発明に係る請求項２１記載の並列演算処理装置は、請求項４、５、７ないし２０のいずれかに記載の並列演算処理装置において、前記電力制御手段は、前記命令グループ解読手段で解読した演算形態に応じて前記レジスタを利用する演算か否かにより、前記演算器が前記レジスタを利用しない期間、前記レジスタの消費電力が低減されるように前記レジスタの消費電力に関する制御を行うようになっている。
【００５７】
このような構成であれば、電力制御手段により、命令グループ解読手段で解読された演算形態に応じてレジスタを利用する演算か否かにより、演算器がレジスタを利用しない期間、レジスタの消費電力が低減されるようにレジスタの消費電力に関する制御が行われる。
さらに、本発明に係る請求項２２記載の並列演算処理装置は、請求項４、５、７ないし２１のいずれかに記載の並列演算処理装置において、前記演算器の消費電力に関する制御は、前記演算器に供給するクロックを調整する制御である。
【００５８】
このような構成であれば、演算器に供給するクロックが調整される。
さらに、本発明に係る請求項２３記載の並列演算処理装置は、請求項４、５、７ないし２２のいずれかに記載の並列演算処理装置において、前記演算器の消費電力に関する制御は、前記演算器に供給する電力を調整する制御である。
このような構成であれば、演算器に供給する電力が調整される。
【００５９】
さらに、本発明に係る請求項２４記載の並列演算処理装置は、請求項４、５、７ないし２３のいずれかに記載の並列演算処理装置において、前記演算器の消費電力に関する制御は、前記演算器に供給する周波数および電圧を調整する制御である。
このような構成であれば、演算器に供給する周波数および電圧が調整される。
【００６０】
さらに、本発明に係る請求項２５記載の並列演算処理装置は、請求項４、５、７ないし２４のいずれかに記載の並列演算処理装置において、前記レジスタの消費電力に関する制御は、前記レジスタに供給するクロックを調整する制御である。
このような構成であれば、レジスタに供給するクロックが調整される。
【００６１】
さらに、本発明に係る請求項２６記載の並列演算処理装置は、請求項４、５、７ないし２５のいずれかに記載の並列演算処理装置において、前記レジスタの消費電力に関する制御は、前記レジスタに供給する周波数および電圧を調整する制御である。
このような構成であれば、レジスタに供給する周波数および電圧が調整される。
【００６２】
さらに、本発明に係る請求項２７記載の並列演算処理装置は、請求項４、５、７ないし２６のいずれかに記載の並列演算処理装置において、前記命令グループ解読手段の解読結果に基づいて前記複数の演算器の動作状態を管理する動作状態管理手段を備え、前記動作状態管理手段は、リソース管理テーブルを有し、前記演算器の動作サイクルごとに、前記各演算器が前記動作演算器となるか前記非動作演算器となるかを前記リソース管理テーブルに登録し、前記リソース管理テーブルの登録内容のうち次の動作サイクルに関するものを前記電力制御手段に出力するようになっており、前記電力制御手段は、前記動作状態管理手段からの登録内容に基づいて、前記演算器の消費電力に関する制御を行うようになっている。
【００６３】
このような構成であれば、動作状態管理手段により、演算器の動作サイクルごとに、各演算器が動作演算器となるか非動作演算器となるかがリソース管理テーブルに登録される一方、リソース管理テーブルの登録内容のうち次の動作サイクルに関するものが電力制御手段に出力される。そして、電力制御手段により、動作状態管理手段からの登録内容に基づいて、演算器の消費電力に関する制御が行われる。
【００６８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１から図１６は、本発明に係る並列演算処理装置の実施の形態を示す図である。
【００６９】
本実施の形態は、本発明に係る並列演算処理装置を、図１に示すように、コンピュータシステムにおいて、複数の演算器を備える並列演算処理プロセッサ１００により、各演算器を並列に動作させることによりパイプライン処理を行う場合について適用したものである。
【００７０】
まず、本発明に係るコンピュータシステムの構成の概略を図１を参照しながら説明する。図１は、本発明に係るコンピュータシステムの構成の概略を示すブロック図である。
本発明に係るコンピュータシステムは、図１に示すように、複数の演算器を備える並列演算処理プロセッサ１００と、所定領域にあらかじめ並列演算処理プロセッサ１００の制御プログラム等を格納しているメインメモリ１１０と、データを入力可能なヒューマンインターフェースとしての入力部１２０と、ディスプレイ等のデータを出力可能な出力部１３０と、ネットワーク等を介して外部との通信を行う通信部１４０とで構成されている。
【００７１】
メモリ１１０は、プログラム・テキスト領域、初期化済みデータ領域、未初期化データ領域、ヒープ領域、スタック領域およびその他論理的に区分された記憶領域を有している。制御プログラムは、並列演算処理プロセッサ１００が直接実行可能な低水準言語（例えば、機械語）で構成されており、高水準言語（例えば、Ｃ言語）により記述されたソースコード２００を、コンパイラ２０５、アセンブラ２１０およびリンカ２２０からなる命令コード生成系により低水準言語にコンパイルし、実行プログラム２３０として生成される。生成された制御プログラムは、図示しないハードディスク等の補助記憶装置に格納されるが、並列演算処理プロセッサ１００が実行するときは、プログラムローダ２４０によりメモリ１１０の記憶領域のうちプログラム・テキスト領域に配置され、実行可能な状態におかれる。なお、コンパイラ２０５、アセンブラ２１０、リンカ２２０およびプログラムローダ２４０は、一般にソフトウェアにより構成される。
【００７２】
次に、並列演算処理プロセッサ１００に実行させる制御プログラムのデータ構造を図２および図３を参照しながら詳細に説明する。
並列演算処理プロセッサ１００は、後段で詳述するが、４つの演算ユニットを有し、演算器の動作に関する命令を示す命令コードを複数含んでなる命令グループをメモリ１１０から読み出し、読み出した命令グループに含まれる命令コードに基づいて各演算器を並列に動作させるようになっている。
【００７３】
次に、命令グループのデータ構造を図２を参照しながら詳細に説明する。図２は、命令グループのデータ構造を示す図である。
命令グループは、図２に示すように、１または複数の命令コードを格納した命令コード格納部４００を有し、さらに、命令グループを管理するための管理情報を格納したプレフィックス部３００をヘッダとして有している。なお、プレフィックス部３００は、命令グループに含まれる各命令コードごとに、その命令コードに関する情報であるプレオペコード情報、またはその他の管理情報を含んで構成されている。
【００７４】
次に、命令コードのデータ構造を図３を参照しながら詳細に説明する。図３は、命令コードのデータ構造を示す図である。
命令コードは、命令コードの種別に応じて、例えば、図３（ａ）〜（ｃ）に示すようなデータ構造を有する。
第１の種別（命令フォーマットＲ１）では、命令コードは、３２ビット長で構成されている。これは、図３（ａ）に示すように、４つの演算器のうちこの命令コードに基づいて動作することとなる動作演算器を特定するための動作予定情報（Unit Sel）４０２を３１〜２８ビット目にヘッダとして割り当て、その他後続して、２７〜１５ビット目に「オペコード」４０４、１４〜１０ビット目に「ｓｒｃ２」４０６、９〜５ビット目に「ｓｒｃ１」４０８、４〜０ビット目に「ｄｓｔ」４１０を割り当てることにより構成されている。
【００７５】
第２の種別（命令フォーマットＲ２）では、命令コードは、同様に３２ビット長で構成されている。これは、図３（ｂ）に示すように、４つの演算器のうちこの命令コードに基づいて動作することとなる動作演算器を特定するための動作予定情報（Unit Sel）４０２を３１〜２８ビット目にヘッダとして割り当て、その他後続して、２７〜２３ビット目に「オペコード」４０４、２２〜１０ビット目に「Ｉｍｍ」４１２、９〜５ビット目に「ｓｒｃ１」４０８、４〜０ビット目に「ｄｓｔ」４１０を割り当てることにより構成されている。
【００７６】
第３の種別（命令フォーマットＩ）では、命令コードは、同様に３２ビット長で構成されている。これは、図３（ｃ）に示すように、４つの演算器のうちこの命令コードに基づいて動作することとなる動作演算器を特定するための動作予定情報（Unit Sel）４０２を３１〜２８ビット目にヘッダとして割り当て、その他後続して、２７〜２３ビット目に「オペコード」４０４、２２〜０ビット目に「Ｉｍｍ」４１２を割り当てることにより構成されている。
【００７７】
次に、コンパイラ２０５、アセンブラ２１０およびリンカ２２０からなる命令コード生成系により命令グループを生成する方法を説明する。
命令コード生成系は、命令グループ単位で命令コードを生成するコード生成ステップを含む。コード生成ステップは、ソースコード２００をコンパイルして実行プログラム２３０を生成する。実行プログラム２３０の各命令コードは、３２ビットのデータ長で生成する。そして、生成した実行プログラム２３０のなかから、並列演算処理プロセッサ１００の演算器に同時に実行させることができる数の命令コードを４個を超えない範囲で抽出し、上記のデータ構造となる命令グループとして命令グループを構成する。
【００７８】
次に、並列演算処理プロセッサ１００の構成を図４を参照しながら詳細に説明する。図４は、並列演算処理プロセッサ１００の構成を示すブロック図である。並列演算処理プロセッサ１００は、図４に示すように、メインメモリ１１０に対してアクセスを行うアクセス部１００ａと、アクセス部１００ａを介して読み出した命令コードに基づいて並列演算処理を行う演算処理部１００ｂと、演算処理部１００ｂの電力制御を行う電力制御部１００ｃとで構成されている。
【００７９】
アクセス部１００ａは、汎用外部バス１１１を介してメインメモリ１１０にアクセスするメモリアクセス部１と、ローカルメモリ２と、ローカルメモリ２とメインメモリ１１０との間でデータ転送を行うＤＭＡ３と、データキャッシュを行うキャッシュメモリ４と、プログラムキャッシュを行うキャッシュメモリ５と、共有メモリ６とで構成されている。ここで、ローカルメモリ２、キャッシュメモリ４，５および共有メモリ６は、その一端がメモリアクセス部１に接続され、ＤＭＡ３、キャッシュメモリ４，５および共有メモリ６は、その他端が汎用外部バス１１１に接続されている。
【００８０】
メモリアクセス部１は、メインメモリ１１０、ローカルメモリ２、キャッシュメモリ４，５または共有メモリ６から命令コードまたはデータを読み出せないときは、メモリストール信号を出力するようになっている。
演算処理部１００ｂは、プログラムフロー制御を行う２つの演算器１０ａ，１０ｂと、データ処理を行う２つの演算器１０ｃ，１０ｄと、演算器１０ａ，１０ｂが演算に利用する制御用レジスタ２０ａと、演算器１０ｃ，１０ｄが演算に利用するデータ用レジスタ２０ｂと、メモリアクセス部１を介してメインメモリ１１０から命令グループを読み出すフェッチ部３０と、フェッチ部３０で読み出した命令グループの内容を解読するデコード部４０とで構成されている。
【００８１】
電力制御部１００ｃは、デコード部４０からのユニット選択信号に応じて演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂの動作状態を管理するリソース管理部５０と、タイマ６０と、タイマ６０またはＤＭＡ３からの割込信号に応じて割込制御を行う割込制御部６５と、リソース管理部５０からの動作ユニット通知信号、割込制御部６５からの起動信号およびメモリアクセス部１からのメモリストール信号に応じて演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂの消費電力に関する制御を行う動作状態管理部７０と、動作状態管理部７０の制御により演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給するクロックを調整するクロック制御部８０と、動作状態管理部７０の制御により演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する電圧および電力を調整する電源制御部８５とで構成されている。
【００８２】
次に、デコード部４０の構成を図５を参照しながら詳細に説明する。図５は、デコード部４０の構成を示すブロック図である。
デコード部４０は、図５に示すように、フェッチ部３０で読み出した命令グループに含まれる命令コードをフォーマット分解する命令フォーマット分解部４１と、ユニット選択信号を出力するユニット検出部４２と、ＰＣ制御信号を出力するリピート命令デコード部４３および分岐命令デコード部４４と、電力モード設定信号を出力する電力モード命令デコード部４５と、実行ユニット制御信号を出力する演算命令デコード部４６とで構成されている。
【００８３】
命令フォーマット分解部４１は、フェッチ部３０で読み出した命令グループに含まれる命令コードから動作予定情報４０２を抽出し、抽出した動作予定情報４０２をユニット検出部４２に出力するようになっている。また、フェッチ部３０で読み出した命令グループに含まれる命令コードをフォーマット分解し、リピート命令デコード部４３、分岐命令デコード部４４、電力モード命令デコード部４５および演算命令デコード部４５にそれぞれ命令フィールド信号を出力する。
【００８４】
ユニット検出部４２は、命令フォーマット分解部４１で抽出した動作予定情報４０２に基づいて、演算器１０ａ〜１０ｄのうち動作演算器となるものを特定するためのユニット選択信号および演算に利用されるレジスタを特定するためのユニット選択信号をリソース管理部５０に出力するようになっている。なお、本実施の形態では、動作予定情報４０２により動作演算器およびレジスタを特定するように構成しているが、命令フォーマット分解部４１の分解結果に基づいて動作演算器およびレジスタを特定するように構成してもよい。この場合、ユニット検出部４２は、命令フォーマット分解部４１の分解結果に基づいて演算種別を判定し、判定した演算種別がプログラムフロー制御に係るものであるときは、演算器１０ａ，１０ｂのいずれかまたは両方を動作演算器とする旨の通知をユニット選択信号として出力し、判定した演算種別がデータ処理に係るものであるときは、演算器１０ｃ，１０ｄのいずれかまたは両方を動作演算器とする旨の通知をユニット選択信号として出力する。また、命令フォーマット分解部４１の分解結果に基づいて演算形態を判定し、判定した演算形態がレジスタ２０ａ，２０ｂを演算に利用するものであるときは、レジスタ２０ａ，２０ｂのいずれかまたは両方を演算に利用する旨の通知をユニット選択信号として出力する。
【００８５】
リピート命令デコード部４３は、命令フォーマット分解部４１からの命令フィールド信号に応じて、リピート命令に関するＰＣ制御信号を出力するようになっている。
分岐命令デコード部４４は、命令フォーマット分解部４１からの命令フィールド信号に応じて、分岐命令に関するＰＣ制御信号を出力するようになっている。
【００８６】
電力モード命令デコード部４５は、命令フォーマット分解部４１からの命令フィールド信号に応じて電力モードを設定し、電力モードの設定に関する電力モード設定信号を動作状態管理部７０に出力するようになっている。電力モードには、図６に示すように、演算器１０ａ〜１０ｄのうち演算器１０ａ，１０ｂだけを動作させる制御系ユニット動作モード５００と、演算器１０ａ〜１０ｄのうち演算器１０ｃ，１０ｄだけを動作させるデータ系ユニット動作モード５０２と、演算器１０ａ〜１０ｄをすべて動作させる全実行ユニット動作モード５０４と、演算器１０ａ〜１０ｄをすべて動作させないＮＯＰモード５０６とがある。これらは、命令グループに含まれる命令コードの構成により決定され、演算器１０ａ〜１０ｄの動作サイクルごとに相互に遷移する。図６は、電力モードの種別および電力モードの遷移を示す状態遷移図である。
【００８７】
演算命令デコード部４６は、命令フォーマット分解部４１からの命令フィールド信号に応じて、演算命令を示す実行ユニット制御信号を演算器１０ａ〜１０ｄに出力するようになっている。
次に、リソース管理部５０の構成を図７を参照しながら詳細に説明する。図７は、リソース管理テーブル４２０のデータ構造を示す図である。
【００８８】
リソース管理部５０は、図７に示すように、リソース管理テーブル４２０を有し、演算器１０ａ〜１０ｄの動作サイクルごとに、各演算器１０ａ〜１０ｄが動作演算器となるか非動作演算器となるか、およびレジスタ２０ａ，２０ｂを演算に利用するか否かをリソース管理テーブル４２０に登録し、リソース管理テーブル４２０の登録内容のうち次の動作サイクルに関するものを動作ユニット通知信号として動作状態管理部７０に出力するようになっている。
【００８９】
リソース管理テーブル４２０には、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂごとに１つのレコードが登録されている。各レコードは、次回の実行から所定クロック（例えば、８クロック）後の実行までの各動作クロックに対応したフィールドを含んで構成されている。なお、図７では、演算器１０ａ〜１０ｄをそれぞれ、ＭＡＣ１、ＭＡＣ２、ＡＬＵ(Arithmetic Logic Unit)１およびＡＬＵ２と表記し、レジスタ２０ａ，２０ｂをそれぞれ、レジスタ１およびレジスタ２と表記している。
【００９０】
リソース管理部５０は、デコード部４０からのユニット選択信号に応じて、次回の実行から所定クロック後の実行までの各動作クロックについて演算器１０ａ〜１０ｄが動作演算器となるか非動作演算器となるかを判定し、演算器１０ａ〜１０ｄのうちいずれかが動作演算器となると判定したときは、該当の演算器について該当のクロックに対応したフィールドに「１」を登録し、演算器１０ａ〜１０ｄのうちいずれかが非動作演算器となると判定したときは、該当の演算器について該当のクロックに対応したフィールドに「０」を登録する。また、デコード部４０からのユニット選択信号に応じて、次回の実行から所定クロック後の実行までの各動作クロックについてレジスタ２０ａ，２０ｂが演算に利用されるか否かを判定し、レジスタ２０ａ，２０ｂのうちいずれかが演算に利用されると判定したときは、該当のレジスタについて該当のクロックに対応したフィールドに「１」を登録し、レジスタ２０ａ，２０ｂのうちいずれかが演算に利用されないと判定したときは、該当のレジスタについて該当のクロックに対応したフィールドに「０」を登録する。そして、各動作クロックごとに、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂについて次回の実行に対応するフィールドのデータを読み出し、読み出したデータを動作ユニット通知信号として動作状態管理部７０に出力する。これにより、動作状態管理部７０は、次回の実行について、演算器１０ａ〜１０ｄのうちどれが動作演算器となるのか、またはレジスタ２０ａ，２０ｂのうちどれが演算に利用されるのかを把握することができる。
【００９１】
図８は、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに命令コードが与えられた場合のそれらの動作を示すタイムチャートである。なお、図８では、演算器１０ａ〜１０ｄをそれぞれ、ＭＡＣ１、ＭＡＣ２、ＡＬＵ１およびＡＬＵ２と表記し、レジスタ２０ａ，２０ｂをそれぞれ、レジスタ１およびレジスタ２と表記している。
【００９２】
図８の第１段目のタイムチャートは、現在のクロックをｔ0として、２クロック後のクロックｔ2において、実行ステートが３クロック分の命令コード（以下、単に３ｃの命令コードという。）が演算器１０ａに、１ｃの命令コードが演算器１０ｃにそれぞれ与えられ、演算ためにレジスタが利用されるステートが１クロック分の命令コード（以下、単に１ｃの命令コードという。）の実行によりレジスタ２０ａが利用される場合を示している。この場合、クロックｔ0において、リソース管理テーブル４２０には、演算器１０ａおよびレジスタ２０ａのレコードに「０１１１００００」が、演算器１０ｃのレコードに「０１００００００」が、演算器１０ｂ，１０ｄおよびレジスタ２０ｂのレコードに「００００００００」がそれぞれ登録される。したがって、動作状態管理部７０には、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂについて次回の実行に対応するフィールドのデータとして「００００００」が出力される。これは、次回の実行について、演算器１０ａ〜１０ｄがすべて非動作演算器となり、レジスタ２０ａ，２０ｂがすべて演算に利用されないことを意味している。
【００９３】
図８の第２段目のタイムチャートは、現在のクロックをｔ1として、２クロック後のクロックｔ3において、８ｃの命令コードが演算器１０ｂに、４ｃの命令コードが演算器１０ｄにそれぞれ与えられ、１ｃの命令コードの実行によりレジスタ２０ｂが利用される場合を示している。この場合、クロックｔ1において、リソース管理テーブル４２０には、演算器１０ａおよびレジスタ２０ａのレコードに「１１１０００００」が、演算器１０ｂのレコードに「０１１１１１１１」が、演算器１０ｃのレコードに「１０００００００」が、レジスタ２０ｂのレコードに「０１００００００」がそれぞれ登録される。したがって、動作状態管理部７０には、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂについて次回の実行に対応するフィールドのデータとして「１０１０１０」が出力される。これは、次回の実行について、演算器１０ａ，１０ｃが動作演算器となり、レジスタ２０ａが演算に利用されることを意味している。
【００９４】
なお、図８の第３段目ないし第５段目のタイムチャートについても、与えられる命令コードによりこれと同様にしてリソース管理テーブル４２０が更新される場合を示している。
また、リソース管理部５０は、演算器１０ａ〜１０ｄまたはレジスタ２０ａ，２０ｂが利用不能なときは、それらリソースが解放されるまで次の動作を待機するインターロックを発生させ、その状態を示すインターロック通知信号を動作状態管理部７０に出力するようになっている。
【００９５】
次に、動作状態管理部７０の構成を図９を参照しながら詳細に説明する。図９は、動作状態管理部７０の構成を示すブロック図である。
動作状態管理部７０は、図９に示すように、電力モードの設定を記憶した電力モード設定レジスタ７１と、電力モード設定レジスタ７１の設定に基づいて電力モードを定義する電力モード定義部７２と、動作ユニット通知信号、起動信号およびメモリストール信号並びに電力モード定義部７２からの電力モード信号に応じて演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂの消費電力に関する制御を行う動作ユニット調整部７３と、電力モード定義部７２からの電力モード信号に応じて演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給するクロック、電圧および電力を切り換えるクロック・電源切換部７４とで構成されている。
【００９６】
電力モード定義部７２は、クロックモードを定義するクロックモード定義部７２ａと、クロックモード定義部７２ａの定義によりクロックモードのステートを行うクロックモードステートマシン７２ｂと、電圧・周波数モードを定義する電圧・周波数モード定義部７２ｃと、電圧・周波数モード定義部７２ｃの定義により電圧・周波数モードのステートを行う電圧・周波数モードステートマシン７２ｄとで構成されており、動作ユニット調整部７３およびクロック・電源切換部７４に電力モード信号を出力するようになっている。
【００９７】
動作ユニット調整部７３は、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ａ，１０ｂが非動作演算器となる期間、該当の演算器１０ａ，１０ｂについて、演算器１０ａ，１０ｂの消費電力が低減されるように演算器１０ａ，１０ｂの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行う。
【００９８】
また、動作ユニット調整部７３は、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ｃ，１０ｄが非動作演算器となる期間、該当の演算器１０ｃ，１０ｄについて、演算器１０ｃ，１０ｄの消費電力が低減されるように演算器１０ｃ，１０ｄの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行う。
【００９９】
また、動作ユニット調整部７３は、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ａ〜１０ｄがレジスタ２０ａ，２０ｂを利用しない期間、該当のレジスタ２０ａ，２０ｂについて、レジスタ２０ａ，２０ｂの消費電力が低減されるようにレジスタ２０ａ，２０ｂの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行う。
【０１００】
また、動作ユニット調整部７３は、リソース管理部５０からの動作ユニット通知信号に応じて、メモリアクセス部１、ローカルメモリ２、ＤＭＡ３、キャッシュメモリ４，５、タイマ６０または割込制御部６５が利用されない期間、該当のリソース１〜５，６０，６５について、リソース１〜５，６０，６５の消費電力が低減されるようにリソース１〜５，６０，６５の消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行う。特に、命令コードがロード／ストア命令以外のものを示すものであるときは、リソース１〜５，６０，６５について、同省電力制御を行うことができる。また、ローカルメモリ２にアクセスするときは、キャッシュメモリ４および共有メモリ６について、同省電力制御を行うことができる。
【０１０１】
また、動作ユニット調整部７３は、リソース管理部５０からのインターロック通知信号を入力したときは、その入力が停止されるまで、該当の演算器１０ａ〜１０ｄ、レジスタ２０ａ，２０ｂまたはメモリアクセス部１について、リソース１，１０ａ〜１０ｄ，２０ａ，２０ｂの消費電力が低減されるようにリソース１，１０ａ〜１０ｄ，２０ａ，２０ｂの消費電力に関する制御をクロック制御部８０および電源制御部８５に対して行う。
【０１０２】
ここで、演算器１０ａ〜１０ｄまたはその他リソース１〜６，６０，６５の消費電力に関する制御は、演算器１０ａ〜１０ｄまたはその他リソース１〜６，６０，６５に供給するクロックの有無を調整する制御、演算器１０ａ〜１０ｄまたはその他リソース１〜６，６０，６５に供給する電力の有無を調整する制御、並びに演算器１０ａ〜１０ｄまたはその他リソース１〜６，６０，６５に供給する周波数および電圧を調整する制御である。また、レジスタ２０ａ，２０ｂの消費電力に関する制御は、レジスタ２０ａ，２０ｂに供給するクロックの有無を調整する制御、並びにレジスタ２０ａ，２０ｂに供給する周波数および電圧を調整する制御である。
【０１０３】
また、動作ユニット調整部７３は、割込制御部６５からの起動信号またはメモリアクセス部１からのメモリストール信号を入力したときは、その入力が停止されるまで、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂの消費電力に関する制御を延長するようになっている。図１０は、メモリアクセス部１からメモリストール信号を入力した場合をタイムチャートである。同図では、５クロック目と８クロック目にメモリストール信号が入力されており、その場合に演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂの消費電力に関する制御が延長されていることを示している。
【０１０４】
具体的に、動作ユニット調整部７３の動作モードには、図１１に示すように、１１種類の動作モード５１０〜５３０があり、それぞれの動作モード５１０〜５３０が図１１に示すような状態遷移をとる。図１１は、動作ユニット調整部７３の動作モードの種別および動作モードの遷移を示す状態遷移図である。
動作モード５１０は、リセット後の状態を示す動作モードであり、動作モード５１２に遷移する可能性がある。
【０１０５】
動作モード５１２は、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂを含むすべてのモジュールをアクティブにする動作モードであり、動作モード５１０，５１４に遷移する可能性がある。
動作モード５１４は、ポーリングによりフローを制御するモードであって、演算器１０ａ，１０ｂ、レジスタ２０ａ、ローカルメモリ２およびキャッシュメモリ４，５をアクティブにする動作モードであり、動作モード５１２，５１６に遷移する可能性がある。
【０１０６】
動作モード５１６は、ローカルメモリ２およびＤＭＡ３を使用しない動作モードであり、動作モード５１４，５１８に遷移する可能性がある。
動作モード５１８は、ローカルメモリ２、ＤＭＡ３、割込制御部６５および動作状態管理部７０をアクティブにする動作モードであり、動作モード５１６，５２０に遷移する可能性がある。
【０１０７】
動作モード５２０は、共有メモリ６を介したポーリングによりフローを制御するモードであって、演算器１０ａ，１０ｂ、レジスタ２０ａおよび共有メモリ６をアクティブにする動作モードであり、動作モード５１８，５２２に遷移する可能性がある。
動作モード５２２は、タイマ６０またはＤＭＡ３等からの外部割込により起動されるモードであって、タイマ６０、割込制御部６５および動作状態管理部７０をアクティブにする動作モードであり、動作モード５２０，５２４に遷移する可能性がある。なお、動作モード５２２では、レジスタ２０ａ，２０ｂの値を保持しておく。
【０１０８】
動作モード５２４は、ＤＭＡ３等からの外部割込により起動されるモードであって、割込制御部６５および動作状態管理部７０のみをアクティブにする動作モードであり、動作モード５２２，５２６に遷移する可能性がある。なお、動作モード５２４では、レジスタ２０ａ，２０ｂの値を保持しておく。
動作モード５２６は、レジスタ２０ａ，２０ｂの値をメインメモリ１１０の記憶領域に待避させる動作モードであり、動作モード５２８に遷移する可能性がある。
【０１０９】
動作モード５２８は、クロックも電力も供給されない状態を示す動作モードであり、動作モード５３０に遷移する可能性がある。動作モード５２８では、割込制御部６５および動作状態管理部７０のみをアクティブにし、レジスタ２０ａ，２０ｂの値を保持しない。
動作モード５３０は、レジスタ２０ａ，２０ｂの値をメインメモリ１１０の記憶領域から復帰させる動作モードであり、動作モード５２４に遷移する可能性がある。
【０１１０】
次に、クロック・電源切換部７４の構成を図１２を参照しながら詳細に説明する。図１２は、クロック・電源切換部７４の構成を示すブロック図である。同図は、特に、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する周波数および電圧を調整する制御に関する部分についてのシーケンスを示している。
クロック・電源切換部７４は、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する周波数および電圧を調整する場合、図１２に示すように、周波数・電圧モード変更要求信号により電力モード定義部７２が出力する周波数・電圧モードを入力したときは、まず、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂへのクロックの供給を停止すべきクロック停止要求をクロック制御部８０に出力する。次いで、クロック停止応答をクロック制御部８０から入力したときは、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する電圧設定に関する電圧制御信号を電源制御部８５に出力するとともに、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する周波数設定に関する周波数変更信号をクロック制御部８０に出力する。そして、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂへのクロックの供給を再開すべきクロック再開要求をクロック制御部８０に出力し、クロック再開応答をクロック制御部８０から入力するのを待って周波数および電圧の調整を完了する。
【０１１１】
具体的に、クロック・電源切換部７４の動作モードは、図１３に示すように、ｎ＋１種類の動作モード５４０〜５４８があり、それぞれの動作モード５４０〜５４８が図１３に示すような状態遷移をとる。図１３は、クロック・電源切換部７４の動作モードの種別および動作モードの遷移を示す状態遷移図である。
動作モード５４０は、周波数および電圧の組み合わせをｎ＋１個とした場合に、それら組み合わせのうち周波数および電圧が最大となるものに周波数および電圧を調整する動作モードであり、動作モード５４２に遷移する可能性がある。
【０１１２】
動作モード５４２は、周波数および電圧の組み合わせをｎ＋１個とした場合に、それら組み合わせのうち周波数および電圧が２番目に大となるものに周波数および電圧を調整する動作モードであり、動作モード５４０，５４４に遷移する可能性がある。
動作モード５４４は、周波数および電圧の組み合わせをｎ＋１個とした場合に、それら組み合わせのうち周波数および電圧がｎ−１番目に大となるものに周波数および電圧を調整する動作モードであり、動作モード５４２，５４６に遷移する可能性がある。
【０１１３】
動作モード５４６は、周波数および電圧の組み合わせをｎ＋１個とした場合に、それら組み合わせのうち周波数および電圧がｎ番目に最大となるものに周波数および電圧を調整する動作モードであり、動作モード５４４，５４８に遷移する可能性がある。
動作モード５４８は、周波数および電圧の組み合わせをｎ＋１個とした場合に、それら組み合わせのうち周波数および電圧がｎ＋１番目に大となるものに周波数および電圧を調整する動作モードであり、動作モード５４６，５４０に遷移する可能性がある。
【０１１４】
なお、周波数および電圧の組み合わせをｎ＋１個とした場合は、それらの組み合わせは、図１４に示すように、周波数・電源管理テーブル４４０により管理される。図１４は、周波数・電源管理テーブル４４０のデータ構造を示す図である。
周波数・電源管理テーブル４４０には、図１４に示すように、各組み合わせごとに１つのレコードが登録されている。各レコードは、モードNoを登録したフィールド４４２と、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する電圧を登録したフィールド４４４と、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する周波数を登録したフィールド４４６とを含んで構成されている。このように、周波数と電圧を対にして制御するのは、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに供給する電圧が、それらに供給する周波数に応じてほぼ一意に定まるからである。もちろん、その逆も同じである。周波数と電圧を同時に下げることにより、最低の周波数および電圧で演算器とレジスタを動作させたとき電力の消費を最も抑えることができる。
【０１１５】
次に、クロック制御部８０の構成を図１５および図１６を参照しながら詳細に説明する。図１５は、クロック制御部８０の構成を示すブロック図である。図１６は、ＣＧマクロ回路８１の構成を示すブロック図である。
クロック制御部８０は、図１５に示すように、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂを含むすべてのモジュールにそれぞれ対応したＣＧマクロ回路８１を含んで構成されている。
【０１１６】
ＣＧマクロ回路８１は、図１６に示すように、動作ユニット調整部７３からのイネーブル信号およびクロック発生器（不図示）からのクロック信号をラッチするラッチ回路８２と、クロック信号およびラッチ回路８２の出力信号の論理積をとるＡＮＤ回路８３とで構成されている。したがって、ＣＧマクロ回路８１は、同図下欄のタイムチャートに示すように、動作ユニット調整部７３からのイネーブル信号がハイレベルのときにのみ、クロック発生器からのクロック信号をモジュールに出力する。
【０１１７】
次に、上記実施の形態の動作を説明する。
並列演算処理プロセッサ１００では、フェッチ部３０により、メインメモリ１１０に格納されている命令グループが読み出され、デコード部４０により、読み出された命令グループの内容が解読される。そして、デコード部４０での解読結果に基づいて演算器１０ａ〜１０ｄが並列に動作することにより演算処理が行われる。
【０１１８】
命令グループ単位での実行では、命令フォーマット分解部４１により、読み出された命令グループに含まれる命令コードから動作予定情報４０２が抽出され、抽出された動作予定情報４０２がユニット検出部４２に出力され、ユニット検出部４２により、命令フォーマット分解部４１で抽出された動作予定情報４０２に基づいてユニット選択信号がリソース管理部５０に出力される。
【０１１９】
次いで、リソース管理部５０により、演算器１０ａ〜１０ｄの動作サイクルごとに、各演算器１０ａ〜１０ｄが動作演算器となるか非動作演算器となるか、およびレジスタ２０ａ，２０ｂを演算に利用するか否かがリソース管理テーブル４２０に登録される一方、リソース管理テーブル４２０の登録内容のうち次の動作サイクルに関するものが動作ユニット通知信号として動作状態管理部７０に出力される。
【０１２０】
動作状態管理部７０では、動作ユニット通知信号を入力すると、動作ユニット調整部７３により、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ａ，１０ｂが非動作演算器となる期間、該当の演算器１０ａ，１０ｂについて、演算器１０ａ，１０ｂの消費電力が低減されるように演算器１０ａ，１０ｂの消費電力に関する制御が行われる。また、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ｃ，１０ｄが非動作演算器となる期間、該当の演算器１０ｃ，１０ｄについて、演算器１０ｃ，１０ｄの消費電力が低減されるように演算器１０ｃ，１０ｄの消費電力に関する制御が行われる。これにより、演算器１０ａ〜１０ｄに対しては、クロック供給の有無、電力供給の有無、並びに周波数および電圧が調整されるので、演算器１０ａ〜１０ｄの消費電力を低減することができる。
【０１２１】
また、動作状態管理部７０では、動作ユニット通知信号を入力すると、動作ユニット調整部７３により、リソース管理部５０からの動作ユニット通知信号に応じて、演算器１０ａ〜１０ｄがレジスタ２０ａ，２０ｂを利用しない期間、レジスタ２０ａ，２０ｂの消費電力が低減されるようにレジスタ２０ａ，２０ｂの消費電力に関する制御が行われる。これにより、レジスタ２０ａ，２０ｂに対しては、クロック供給の有無、並びに周波数および電圧が調整されるので、レジスタ２０ａ，２０ｂの消費電力を低減することができる。
【０１２２】
このようにして、本実施の形態では、命令グループは、演算器１０ａ〜１０ｄのうちその命令グループに含まれる命令コードに基づいて動作することとなる動作演算器を特定するための動作予定情報４０２を含んでなり、並列演算処理プロセッサ１００は、命令グループの動作予定情報４０２を読み出し、読み出した動作予定情報４０２に基づいて、演算器１０ａ〜１０ｄの消費電力に関する制御を各演算器１０ａ〜１０ｄについて行うようになっている。
【０１２３】
これにより、動作予定情報４０２に基づいて演算器１０ａ〜１０ｄの消費電力に関する制御が行われるので、演算を行わない演算器に対してＮＯＰ等の命令コードが与えられなくても、その演算器について、演算器の消費電力に関する制御を行うことができる。したがって、並列演算処理プロセッサ１００において、従来に比して、消費電力を比較的低減することができる。
【０１２４】
さらに、本実施の形態では、演算器１０ａ〜１０ｄは、プログラムフロー制御を行う２つの演算器１０ａ，１０ｂと、データ処理を行う２つの演算器１０ｃ，１０ｄとを含んでなり、並列演算処理プロセッサ１００は、演算器１０ａ，１０ｂの消費電力に関する制御および演算器１０ｃ，１０ｄの消費電力に関する制御を、命令コードにより特定される演算種別に応じてそれぞれ行うようになっている。
【０１２５】
これにより、演算器１０ａ〜１０ｄの種別に応じて消費電力に関する制御を行うことができる。したがって、複数種類の演算器１０ａ〜１０ｄを組み合わせて構成した並列演算処理プロセッサ１００において、従来に比して、消費電力を比較的低減することができる。
さらに、本実施の形態では、並列演算処理プロセッサ１００は、演算器１０ａ〜１０ｄの消費電力に関する制御およびレジスタ２０ａ，２０ｂの消費電力に関する制御を、命令コードにより特定される演算形態に応じてそれぞれ行うようになっている。
【０１２６】
これにより、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂのそれぞれについて消費電力に関する制御を行うことができる。したがって、演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂを組み合わせて構成した並列演算処理プロセッサ１００において、従来に比して、消費電力を比較的低減することができる。
【０１２７】
さらに、本実施の形態では、動作予定情報４０２は、命令コードの読出方向からみて命令グループに含まれる命令コードよりも前方に配置した。
これにより、動作予定情報４０２の読出から各命令コードの読出までを連続して行うことができるので、命令デコード処理の高速化をさらに図ることができる。
【０１２８】
上記実施の形態において、メインメモリ１１０は、請求項１ないし２記載の記憶手段に対応し、演算器１０ａ，１０ｂは、請求項３、７または１０記載の第１種演算器に対応し、演算器１０ｃ，１０ｄは、請求項３、７または１０記載の第２種演算器に対応している。また、フェッチ部３０は、請求項２ないし７記載の命令グループ読出手段に対応し、デコード部４０は、請求項２ないし８、１０、２１、２７記載の命令グループ解読手段に対応し、電力制御部１００ｃは、請求項２ないし８、１０ないし１７、２１、２７記載の電力制御手段に対応している。
【０１２９】
また、上記実施の形態において、リソース管理部５０は、請求項２７記載の動作状態管理手段に対応し、メモリアクセス部１は、請求項１１記載のメモリアクセス手段に対応している。また、キャッシュメモリ４は、請求項１４記載のデータキャッシュメモリに対応し、キャッシュメモリ５は、請求項１５記載のプログラムキャッシュメモリに対応し、割込制御部６５は、請求項１７記載の割込制御手段に対応している。
【０１３０】
なお、上記実施の形態において、並列演算処理プロセッサ１００は、プログラムフロー制御を行う２つの演算器１０ａ，１０ｂと、データ処理を行う２つの演算器１０ｃ，１０ｄとを含んで構成したが、これに限らず、図１７に示すように、ベクトル演算型並列演算処理プロセッサとして構成することもできる。図１７は、ベクトル演算型並列演算処理プロセッサの構成を示すブロック図である。
【０１３１】
図１７の構成は、ベクトル演算を専用に行う２つの演算器１１ａ，１１ｂと、スカラ演算を専用に行う２つの演算器１１ｃ，１１ｄと、データ転送を専用に行う２つの演算器１１ｅ，１１ｆとが演算器１０ａ〜１０ｄに代えて設けられている。また、演算器１１ａ〜１１ｆが演算に利用する汎用レジスタ２１ａと、演算器１１ａ，１１ｂのみが演算に利用するベクトルレジスタ２１ｂとがレジスタ２０ａ，２０ｂに代えて設けられている。
【０１３２】
電力制御部１００ｃは、上記実施の形態と同様の要領で、演算器１１ａ，１１ｂの消費電力に関する制御、演算器１１ｃ，１１ｄの消費電力に関する制御および演算器１１ｅ，１１ｆの消費電力に関する制御を、命令コードにより特定される演算種別に応じてそれぞれ行う。また、演算器１１ａ〜１１ｆの消費電力に関する制御およびレジスタ２１ａ，２１ｂの消費電力に関する制御を、命令コードにより特定される演算形態に応じてそれぞれ行う。
【０１３３】
この場合において、演算器１１ａ，１１ｂは、請求項１８記載の第１種演算器に対応し、演算器１１ｃ，１１ｄは、請求項１８記載の第２種演算器に対応している。
また、上記実施の形態において、並列演算処理プロセッサ１００は、プログラムフロー制御を行う２つの演算器１０ａ，１０ｂと、データ処理を行う２つの演算器１０ｃ，１０ｄとを含んで構成したが、これに限らず、図１８に示すように、ＶＬＩＷ(Very Long Instruction Word)型並列演算処理プロセッサとして構成することもできる。図１８は、ＶＬＩＷ型並列演算処理プロセッサの構成を示すブロック図である。
【０１３４】
図１８の構成は、各種の演算に汎用的に用いられる６つの汎用演算器１２ａ〜１２ｆと、プログラムフロー制御を行うプログラムフロー制御用演算器１２ｇとが演算器１０ａ〜１０ｄに代えて設けられている。また、汎用演算器１２ａ〜１２ｆが演算に利用する汎用レジスタ２２ａと、プログラムフロー制御用演算器１２ｇのみが演算に利用する制御レジスタ２２ｂとがレジスタ２０ａ，２０ｂに代えて設けられている。
【０１３５】
電力制御部１００ｃは、上記実施の形態と同様の要領で、汎用演算器１２ａ〜１２ｆの消費電力に関する制御、およびプログラムフロー制御用演算器１２ｇの消費電力に関する制御を、命令コードにより特定される演算種別に応じてそれぞれ行う。また、演算器１２ａ〜１２ｇの消費電力に関する制御およびレジスタ２２ａ，２２ｂの消費電力に関する制御を、命令コードにより特定される演算形態に応じてそれぞれ行う。
【０１３６】
この場合において、汎用演算器１２ａ〜１２ｆは、請求項１９記載の第１種演算器に対応し、プログラムフロー制御用演算器１２ｇは、請求項１９記載の第２種演算器に対応している。
また、上記実施の形態においては、本発明に係る並列演算処理装置を、図１に示すように、コンピュータシステムにおいて、複数の演算器を備える並列演算処理プロセッサ１００により、各演算器を並列に動作させることによりパイプライン処理を行う場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【０１３７】
【発明の効果】
以上説明したように、本発明に係る請求項１、２、５または６記載の並列演算処理装置によれば、動作予定情報に基づいて演算器の消費電力に関する制御が行われるので、演算を行わない演算器に対してＮＯＰ等の命令コードが与えられなくても、その演算器について、演算器の消費電力に関する制御を行うことができる。したがって、並列演算処理装置において、従来に比して、消費電力を比較的低減することができるという効果が得られる。
【０１３８】
さらに、本発明に係る請求項３または７記載の並列演算処理装置によれば、演算器の種別に応じて消費電力に関する制御を行うことができる。したがって、複数種類の演算器を組み合わせて構成した並列演算処理装置において、従来に比して、消費電力を比較的低減することができるという効果が得られる。
さらに、本発明に係る請求項４記載の並列演算処理装置によれば、演算器およびレジスタのそれぞれについて消費電力に関する制御を行うことができる。したがって、演算器およびレジスタを組み合わせて構成した並列演算処理装置において、従来に比して、消費電力を比較的低減することができるという効果が得られる。
【０１３９】
さらに、本発明に係る請求項８記載の並列演算処理装置によれば、演算器が非動作演算器となる期間、該当の演算器について、消費電力が低減されるように演算器の消費電力に関する制御を行うことができる。したがって、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
さらに、本発明に係る請求項９記載の並列演算処理装置によれば、動作予定情報の読出から各命令コードの読出までを連続して行うことができるので、命令デコード処理の高速化をさらに図ることができるという効果も得られる。
【０１４０】
さらに、本発明に係る請求項１０記載の並列演算処理装置によれば、第１種演算器が非動作演算器となる期間、該当の第１種演算器について、消費電力が低減されるように第１種演算器の消費電力に関する制御を行うことができる。また、第２種演算器が非動作演算器となる期間、該当の第２種演算器について、消費電力が低減されるように第２種演算器の消費電力に関する制御を行うことができる。したがって、複数種類の演算器を組み合わせて構成した並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４１】
さらに、本発明に係る請求項１１記載の並列演算処理装置によれば、メモリアクセス手段が利用されない期間、メモリアクセス手段の消費電力が低減されるようにメモリアクセス手段の消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４２】
さらに、本発明に係る請求項１２または１３記載の並列演算処理装置によれば、ローカルメモリが利用されない期間、ローカルメモリの消費電力が低減されるようにローカルメモリの消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４３】
さらに、本発明に係る請求項１３記載の並列演算処理装置によれば、ＤＭＡが利用されない期間、ＤＭＡの消費電力が低減されるようにＤＭＡの消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
さらに、本発明に係る請求項１４記載の並列演算処理装置によれば、データキャッシュメモリが利用されない期間、データキャッシュメモリの消費電力が低減されるようにデータキャッシュメモリの消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４４】
さらに、本発明に係る請求項１５記載の並列演算処理装置によれば、プログラムキャッシュメモリが利用されない期間、プログラムキャッシュメモリの消費電力が低減されるようにプログラムキャッシュメモリの消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４５】
さらに、本発明に係る請求項１６記載の並列演算処理装置によれば、タイマが利用されない期間、タイマの消費電力が低減されるようにタイマの消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
さらに、本発明に係る請求項１７記載の並列演算処理装置によれば、割込制御手段が利用されない期間、割込制御手段の消費電力が低減されるように割込制御手段の消費電力に関する制御を行うことができるので、並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【０１４６】
さらに、本発明に係る請求項１８記載の並列演算処理装置によれば、ベクトル演算用の演算器およびスカラ演算用の演算器を組み合わせて構成した並列演算処理装置において、消費電力を比較的低減することができるという効果も得られる。
さらに、本発明に係る請求項１９または２０記載の並列演算処理装置によれば、汎用演算器およびプログラムフロー制御用演算器を組み合わせて構成したＶＬＩＷ型並列演算処理プロセッサ等の並列演算処理装置において、消費電力を比較的低減することができるという効果も得られる。
【０１４７】
さらに、本発明に係る請求項２１記載の並列演算処理装置によれば、演算器がレジスタを利用しない期間、レジスタの消費電力が低減されるようにレジスタの消費電力に関する制御を行うことができる。したがって、演算器およびレジスタを組み合わせて構成した並列演算処理装置において、消費電力をさらに低減することができるという効果も得られる。
【図面の簡単な説明】
【図１】本発明に係るコンピュータシステムの構成の概略を示すブロック図である。
【図２】命令グループのデータ構造を示す図である。
【図３】命令コードのデータ構造を示す図である。
【図４】並列演算処理プロセッサ１００の構成を示すブロック図である。
【図５】デコード部４０の構成を示すブロック図である。
【図６】電力モードの種別および電力モードの遷移を示す状態遷移図である。
【図７】リソース管理テーブル４２０のデータ構造を示す図である。
【図８】演算器１０ａ〜１０ｄおよびレジスタ２０ａ，２０ｂに命令コードが与えられた場合のそれらの動作を示すタイムチャートである。
【図９】動作状態管理部７０の構成を示すブロック図である。
【図１０】メモリアクセス部１からメモリストール信号を入力した場合をタイムチャートである。
【図１１】動作ユニット調整部７３の動作モードの種別および動作モードの遷移を示す状態遷移図である。
【図１２】クロック・電源切換部７４の構成を示すブロック図である。
【図１３】クロック・電源切換部７４の動作モードの種別および動作モードの遷移を示す状態遷移図である。
【図１４】周波数・電源管理テーブル４４０のデータ構造を示す図である。
【図１５】クロック制御部８０の構成を示すブロック図である。
【図１６】ＣＧマクロ回路８１の構成を示すブロック図である。
【図１７】ベクトル演算型並列演算処理プロセッサの構成を示すブロック図である。
【図１８】ＶＬＩＷ型並列演算処理プロセッサの構成を示すブロック図である。
【符号の説明】
１００                    並列演算処理プロセッサ
１００ａ                  アクセス部
１                        メモリアクセス部
２                        ローカルメモリ
３                        ＤＭＡ
４，５                    キャッシュメモリ
６                        共有メモリ
１００ｂ                  演算処理部
１０ａ〜１０ｄ            演算器
１１ａ〜１１ｆ            演算器
１２ａ〜１２ｆ            汎用演算器
１２ｇ                    プログラムフロー制御用演算器
２０ａ，２０ｂ            レジスタ
２１ａ，２１ｂ            レジスタ
２２ａ，２２ｂ            レジスタ
３０                      フェッチ部
４０                      デコード部
４１                      命令フォーマット分解部
４２                      ユニット検出部
４３                      リピート命令デコード部
４４                      分岐命令デコード部
４５                      電力モード命令デコード部
４６                      演算命令デコード部
１００ｃ                  電力制御部
５０                      リソース管理部
６０                      タイマ
６５                      割込制御部
７０                      動作状態管理部
７１                      電力モード設定レジスタ
７２                      電力モード定義部
７２ａ                    クロックモード定義部
７２ｂ                    クロックモードステートマシン
７２ｃ                    電圧・周波数モード定義部
７２ｄ                    電圧・周波数モードステートマシン
７３                      動作ユニット調整部
７４                      クロック・電源切換部
８０                      クロック制御部
８５                      電源制御部
１１０                    メモリ
２０５                    コンパイラ
２１０                    アセンブラ
２２０                    リンカ
２４０                    プログラムローダ
３００                    プレフィックス部
４００                    命令コード格納部
４０２                    動作予定情報
４２０                    リソース管理テーブル
４４０                    周波数・電源管理テーブル
【図１】
0003729142.tif 000002
【図２】
0003729142.tif 000003
【図３】
0003729142.tif 000004
【図４】
0003729142.tif 000005
【図５】
0003729142.tif 000006
【図６】
0003729142.tif 000007
【図７】
0003729142.tif 000008
【図８】
0003729142.tif 000009
【図９】
0003729142.tif 000010
【図１０】
0003729142.tif 000011
【図１１】
0003729142.tif 000012
【図１２】
0003729142.tif 000013
【図１３】
0003729142.tif 000014
【図１４】
0003729142.tif 000015
【図１５】
0003729142.tif 000016
【図１６】
0003729142.tif 000017
【図１７】
0003729142.tif 000018
【図１８】
0003729142.tif 000019