(57)【特許請求の範囲】
【請求項１】
複数の演算命令を一クロックサイクル内で並列に処理する並列プロセッサであって、
第１の演算処理ユニットと、
少なくとも１以上の第２の演算処理ユニットとを具備し、
前記第１の演算処理ユニットは、
前記第２の演算ユニットに演算命令を並列に処理させるか否かを示すとともに、前記第１の演算処理ユニットのみを動作させる第１の動作モードと、前記第１の演算処理ユニットを動作させるとともに前記第２の演算処理ユニットを動作させる第２の動作モードを持つ動作モードを保持する動作モード保持部と、
前記動作モードに基づいて、前記動作モードが第１の動作モードの場合には、前記第１の演算処理ユニットに、該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに、該第２の演算処理ユニットの処理を停止する制御信号を生成および供給する制御部と、
入力されデコードされた命令に基づいて、前記動作モードを切り替える命令実行部を含み、
前記制御部は、前記第１の動作モードの命令については、命令メモリに保持される命令列に前記第２の演算処理ユニットの動作を規定する命令を埋め込むことなく、前記第２の演算処理ユニットを動作させず、
前記動作モード保持部は、動作モードレジスタであって、
前記制御部は、さらに、前記サブルーチンコール命令からのリターンアドレスを保持する第１のリターンアドレスレジスタを具備し、
前記命令実行部は、前記サブルーチンコール命令の実行時には、前記動作モードレジスタの値を反転することにより、前記動作モードを切り替えるとともに、動作モードの反転を示す情報を前記第１のリターンアドレスレジスタに設定し、前記サブルーチンコール命令からの復帰時には、前記第１のリターンアドレスレジスタに設定された前記動作モードの反転を示す情報を参照して、反転が設定されている場合には前記動作モードレジスタの値を反転することにより元の動作モードに復帰する
ことを特徴とする並列プロセッサ。
【請求項２】
複数の演算命令を一クロックサイクル内で並列に処理する並列プロセッサであって、
第１の演算処理ユニットと、
少なくとも１以上の第２の演算処理ユニットとを具備し、
前記第１の演算処理ユニットは、
前記第２の演算ユニットに演算命令を並列に処理させるか否かを示すとともに、前記第１の演算処理ユニットのみを動作させる第１の動作モードと、前記第１の演算処理ユニットを動作させるとともに前記第２の演算処理ユニットを動作させる第２の動作モードを持つ動作モードを保持する動作モード保持部と、
前記動作モードに基づいて、前記動作モードが第１の動作モードの場合には、前記第１の演算処理ユニットに、該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに、該第２の演算処理ユニットの処理を停止する制御信号を生成および供給する制御部と、
入力されデコードされた命令に基づいて、前記動作モードを切り替える命令実行部を含み、
前記制御部は、前記第１の動作モードの命令については、命令メモリに保持される命令列に前記第２の演算処理ユニットの動作を規定する命令を埋め込むことなく、前記第２の演算処理ユニットを動作させず、
前記命令実行部は、例外処理の発生によって、前記動作モード保持部に保持される動作モードを切り替え、
前記動作モード保持部は、動作モードレジスタであって、
前記制御部は、さらに、前記例外処理を行う例外プログラムからのリターンアドレスを保持する第２のリターンアドレスレジスタを具備し、
前記命令実行部は、前記例外処理の発生時には、前記動作モードレジスタの値を反転することにより、前記動作モードを切り替えるとともに、動作モードの反転を示す情報を前記第２のリターンアドレスレジスタに設定し、前記例外処理からの復帰時には、前記第２のリターンアドレスレジスタに設定された前記動作モードの反転を示す情報を参照して、反転が設定されている場合には前記動作モードレジスタの値を反転することにより元の動作モードに復帰する
ことを特徴とする並列プロセッサ。
【請求項３】
複数の演算命令を一クロックサイクル内で並列に処理する並列プロセッサであって、
第１の演算処理ユニットと、
少なくとも１以上の第２の演算処理ユニットとを具備し、
前記第１の演算処理ユニットは、
前記第２の演算ユニットに演算命令を並列に処理させるか否かを示すとともに、前記第１の演算処理ユニットのみを動作させる第１の動作モードと、前記第１の演算処理ユニットを動作させるとともに前記第２の演算処理ユニットを動作させる第２の動作モードを持つ動作モードを保持する動作モード保持部と、
前記動作モードに基づいて、前記動作モードが第１の動作モードの場合には、前記第１の演算処理ユニットに、該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに、該第２の演算処理ユニットの処理を停止する制御信号を生成および供給する制御部と、
入力されデコードされた命令に基づいて、前記動作モードを切り替える命令実行部を含み、
前記制御部は、前記第１の動作モードの命令については、命令メモリに保持される命令列に前記第２の演算処理ユニットの動作を規定する命令を埋め込むことなく、前記第２の演算処理ユニットを動作させず、
前記命令実行部は、ジャンプ命令中に規定されるジャンプアドレスの一部に含まれる動作モードの反転を示す情報に従って、前記動作モード保持部の値を反転することにより、前記動作モードを切り替える
ことを特徴とする並列プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ装置およびこのプロセッサ装置を搭載するコンピュータシステムに関する。特に、複数のオペレーションを一サイクルで処理することができる、複数のプロセッサを具備する並列プロセッサにおいて、コプロセッサを並列に動作させない単一のオペレーションの処理モードの際の命令についての命令利用効率を向上させるための技術に関する。
【０００２】
【従来の技術】
従来より、複数のオペレーション命令を一クロックサイクルで処理するマルチプル・パラレルプロセッサが実用化されている。図１は、このマルチプル・パラレル・プロセッサの概略構成を示すブロック図である。プロセッサ装置２０は、メモリからのデータ転送、実行フローの制御を主に行う整数処理ユニット１と、拡張命令で規定されるデータ処理を主に行う、１または複数のデータ処理ユニット２から成る。整数処理ユニット１は、主に加算・減算命令、分岐命令、データメモリに対するロード命令、データの読み出し／書き込み命令の処理などを行ない、一方データ処理ユニット２は、例えばＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）命令などの拡張命令で規定される演算などのデータ処理を、整数処理ユニット１と並列に行う。
【０００３】
整数処理ユニット１とデータ処理ユニット２とを同時に稼働させることにより、一クロックサイクルで２個以上のオペレーション命令を同時並列的に実行することができる。
【０００４】
このプロセッサ装置２０を動作させる命令フォーマットは、例えば図２に示すように、整数処理ユニット１の動作を規定する命令部７１と、データ処理ユニット２の動作を規定する命令部７２とから成る。これら命令７１，７２は、例えば、それぞれ３２ビットの命令からなる。
【０００５】
【発明が解決しようとする課題】
しかしながら、従来のマルチプル・パラレル・プロセッサ装置２０には、以下の問題点があった。すなわち、上記のようなプロセッサ装置２０に実行させるべきプログラムの命令列中には、拡張命令であっても整数処理ユニット１のみを動作させる単一オペレーション処理を規定する命令が多く含まれている。このような単一オペレーション処理に対応する命令フォーマットについて、従来のプロセッサ２０装置においては、図２に示す命令フォーマット中のデータ処理ユニット２の動作を規定する部分７２には、何も動作をさせないという命令（ノーオペレーション命令：ＮＯＰ命令）を埋め込む必要があった。これにより、特に拡張命令の場合の命令の利用効率が悪くなり、命令を格納する命令メモリの容量を大きくしてしまうという不具合が生じていた。
【０００６】
本発明は、従来技術における、マルチプル・パラレル・プロセッサにおいて、単一のオペレーションを処理する際の拡張命令の利用効率が非効率的であり、命令を格納する命令メモリの容量が増大していたという問題点を解決するためになされたものである。
【０００７】
そして、その目的とするところは、一サイクルで複数のオペレーションを処理可能なマルチプル・パラレル・プロセッサにおいて、単一のオペレーションを処理する動作モードの際には、他のデータ処理ユニット（コプロセッサ）の動作を停止する制御信号を生成し、該他のデータ処理ユニットに送出することにより、命令メモリの使用効率を向上させることによって、拡張命令の利用効率を高めた並列プロセッサを提供する点にある。
【０００８】
【課題を解決するための手段】
本発明の第１の特徴は、複数の演算命令を一クロックサイクル内で並列に処理する並列プロセッサであって、第１の演算処理ユニットと、少なくとも１以上の第２の演算処理ユニットとを具備し、前記第１の演算処理ユニットは、前記第２の演算ユニットに演算命令を並列に処理させるか否かを示すとともに、前記第１の演算処理ユニットのみを動作させる第１の動作モードと、前記第１の演算処理ユニットを動作させるとともに前記第２の演算処理ユニットを動作させる第２の動作モードを持つ動作モードを保持する動作モード保持部と、前記動作モードに基づいて、前記動作モードが第１の動作モードの場合には、前記第１の演算処理ユニットに、該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに、該第２の演算処理ユニットの処理を停止する制御信号を生成および供給する制御部と、入力されデコードされた命令に基づいて、前記動作モードを切り替える命令実行部を含み、前記制御部は、前記第１の動作モードの命令については、命令メモリに保持される命令列に前記第２の演算処理ユニットの動作を規定する命令を埋め込むことなく、前記第２の演算処理ユニットを動作させないことを特徴とする並列プロセッサを提供する点にある。
【０００９】
本発明の第２の特徴は、前記制御部は、前記動作モードが前記第２の動作モードの場合には、前記第１の演算処理ユニットに該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに該第２の演算処理ユニットの動作を規定する命令列を供給する点にある。
【００１０】
本発明の第３の特徴は、前記制御信号は、ノーオペレーション命令である点にある。
【００１１】
本発明の第４の特徴は、前記第１の動作モードの際には、前記命令メモリに保持される命令列は、前記第１の演算処理ユニットの動作を規定する命令のみを含む点にある。
【００１２】
本発明の第５の特徴は、前記制御部は、さらに、前記ノーオペレーション命令を保持するノーオペレーション命令保持部を具備し、前記第１の動作モードの際には、前記命令メモリに保持される命令列は、常に複数の命令を含む点にある。
【００１３】
本発明の第６の特徴は、前記制御信号は、前記第２の演算処理ユニットへのクロックの供給を停止する信号である点にある。
【００１４】
本発明の第７の特徴は、前記制御信号は、前記第２の演算処理ユニットの無効化信号である点にある。
【００１５】
本発明の第８の特徴は、前記命令実行部は、動作モード切替を指示するサブルーチンコール命令の実行によって、前記動作モード保持部に保持される動作モードを切り替える点にある。
【００１６】
本発明の第９の特徴は、前記動作モード保持部は、動作モードレジスタであって、前記制御部は、さらに、前記サブルーチンコール命令からのリターンアドレスを保持する第１のリターンアドレスレジスタを具備し、前記命令実行部は、前記サブルーチンコール命令の実行時には、前記動作モードレジスタの値を反転することにより、前記動作モードを切り替えるとともに、動作モードの反転を示す情報を前記第１のリターンアドレスレジスタに設定し、前記サブルーチンコール命令からの復帰時には、前記第１のリターンアドレスレジスタに設定された前記動作モードの反転を示す情報を参照して、反転が設定されている場合には前記動作モードレジスタの値を反転することにより元の動作モードに復帰する点にある。
【００１７】
本発明の第１０の特徴は、前記命令実行部は、例外処理の発生によって、前記動作モード保持部に保持される動作モードを切り替える点にある。
【００１８】
本発明の第１１の特徴は、前記動作モード保持部は、動作モードレジスタであって、前記制御部は、さらに、前記例外処理を行う例外プログラムからのリターンアドレスを保持する第２のリターンアドレスレジスタを具備し、前記命令実行部は、前記例外処理の発生時には、前記動作モードレジスタの値を反転することにより、前記動作モードを切り替えるとともに、動作モードの反転を示す情報を前記第２のリターンアドレスレジスタに設定し、前記例外処理からの復帰時には、前記第２のリターンアドレスレジスタに設定された前記動作モードの反転を示す情報を参照して、反転が設定されている場合には前記動作モードレジスタの値を反転することにより元の動作モードに復帰する点にある。
【００１９】
本発明の第１２の特徴は、前記命令実行部は、ジャンプ命令中に規定されるジャンプアドレスの一部に含まれる動作モードの反転を示す情報に従って、前記動作モード保持部の値を反転することにより、前記動作モードを切り替える点にある。
【００２０】
本発明の第１３の特徴は、前記第２の演算処理ユニットは、複数のコプロセッサであって、前記制御部は、前記第１の動作モードでは、前記第１の演算処理ユニット以外のすべてのコプロセッサへのクロックを停止することによって、前記第１の演算処理ユニットのみを動作させる点にある。
【００２１】
本発明の第１４の特徴は、上記並列プロセッサは、さらに、複数の前記第２の演算処理ユニットのいずれに演算命令を並列に処理させるかを示す拡張動作モードを保持する拡張動作モード保持部を具備し、前記制御部は、前記拡張動作モードに基づいて、複数の第２の演算処理ユニットのうち、前記拡張動作モードに示される第２の演算処理ユニット以外の第２の演算処理ユニットに、前記制御信号を供給する点にある。
【００２２】
本発明の第１５の特徴は、複数の演算命令を一サイクル内で並列に処理する並列プロセッサを搭載するコンピュータシステムであって、第１の演算処理ユニットと、少なくとも１以上の第２の演算処理ユニットと、メインメモリとを具備し、前記第１の演算処理ユニットは、前記第２の演算ユニットに演算命令を並列に処理させるか否かを示し、前記第１の演算処理ユニットのみを動作させる第１の動作モードと、前記第１の演算処理ユニットを動作させるとともに前記第２の演算処理ユニットを動作させる第２の動作モードを持つ動作モードを保持する動作モード保持部と、前記動作モードに基づいて、前記動作モードが第１の動作モードの場合には、前記第１の演算処理ユニットに、該第１の演算処理ユニットの動作を規定する命令列を供給するとともに、前記第２の演算処理ユニットに、該第２の演算処理ユニットの処理を停止する制御信号を生成および供給する制御部と、入力されデコードされた命令に基づいて、前記動作モードを切り替える命令実行部とを含み、前記第１の動作モードの命令については、命令メモリに保持される命令列に前記第２の演算処理ユニットの動作を規定する命令を埋め込むことなく、前記第２の演算処理ユニットを動作させないことを特徴とするコンピュータシステムを提供する点にある。
【００２３】
【発明の実施の形態】
第１の実施の形態
以下、本発明の第１の実施形態について、図面を参照しながら詳細に説明する。
【００２４】
第１の実施形態は、一クロックサイクルで複数のオペレーションを処理可能なマルチプル・パラレル・プロセッサ装置において、データ処理ユニットを並列に稼働させるか否かを示す動作モードを設け、この動作モードに基づき単一オペレーションモードの場合に、ノーオペレーション命令を生成およびこれをデータ処理ユニットに送出することによりこのデータ処理ユニットを処理停止状態にする機能を提供する。
【００２５】
図３は、本発明の第１の実施の形態に係る並列プロセッサ装置の概略構成を示すブロック図である。マルチプル・パラレル・プロセッサ装置（以下、単にプロセッサ装置という）１０は、整数処理ユニット１１とデータ処理ユニット１２から成る。
【００２６】
さらに、プロセッサ装置１０は、バスあるいはネットワークを経由してメインメモリ１０ｂおよび入出力コントローラ１０ｃとそれぞれ接続され、コンピュータシステムを構成する。
【００２７】
整数処理ユニット１１は、命令アドレス生成部１１１と、命令メモリ部１１２と、命令レジスタ部１１３と、デコード部１１４と、動作モードコントロール部１１５と、命令実行部１１６と、データメモリコントロール部１１７とを具備し、主に、メモリからのデータ転送、実行フローの制御を行う。
【００２８】
尚、動作モードコントロール部１１５および命令レジスタ部１１３は、請求項における制御部に対応する。
【００２９】
データ処理ユニット１２は、データ処理ユニットの命令デコード部１２１、命令実行部１２２とを具備し、主に演算処理などのデータ処理を行う。尚、このデータ処理ユニット１２は、１つの整数処理ユニット１１に対して複数設けられていてもよい。
【００３０】
プロセッサ装置１０は、▲１▼整数処理ユニット動作モードと▲２▼並列処理動作モードとの２つのモードで動作する。整数処理ユニット動作モード時、プロセッサ装置１０は、整数処理ユニット１１のみを使用して動作する。他方、並列処理動作モード時、プロセッサ１０は、整数処理ユニット１１とデータ処理ユニット１２の両方を同時並列的に使用して動作する。
【００３１】
動作モードコントロール部１１５は、現在の動作モードを示す動作モードレジスタ１１５１を有し、このレジスタ１１５１の値によって動作モードを変える。この動作モードは、データ処理ユニットに演算命令を並列に処理させるか否かを示す。例えば、動作モードレジスタ１１５１の値“０”は整数処理ユニット動作モードを示し、反転である“１”は並列処理動作モードを示す。
【００３２】
動作モードコントロール部１１５は、動作モードレジスタ１１５１と、例外プログラムカウンタレジスタ１１５２と、リターンアドレスレジスタ１１５３とを具備する。これらレジスタの動作については後述する。
【００３３】
図４は、図３に示した命令アドレス生成部１１１の詳細構成の一例を示した回路図である。命令アドレス生成部１１１は、セレクタ１１１１と、命令アドレスレジスタ１１１２と、加算器１１１３とを具備し、命令実行部１１６からの分岐先／例外先アドレス７０、及び動作モードコントロール部１１５からの命令アドレス変更信号５０を入力して、命令アドレス信号９０を出力する。
【００３４】
図５は、図３に示した命令レジスタ部１１３の詳細構成の一例を示した回路図である。命令レジスタ部１１３は、セレクタ１１３１〜１１３３及びレジスタ１１３４を具備する。レジスタ１１３４には、整数処理ユニット命令か、又は整数処理ユニット命令及びデータ処理ユニット命令が保持される。動作モードコントロール部１１５から動作モードに基づき出力される命令出力制御信号６０に従い、整数処理ユニット命令をデコード部１１４に出力するとともに命令出力制御信号を命令の有効化信号としてデータ処理ユニット１２に出力するか、或いは整数処理ユニット命令をデコード部１１４に出力するとともにデータ処理ユニット命令をデータ処理ユニット１２に出力する。
【００３５】
尚、動作モードが単一オペレーションモード（第１の実施形態では整数処理ユニット動作モード）の場合に、データ処理ユニット１２には、出力しているデータ処理ユニット命令が無効であることを示す無効化信号を出力してもよく、あるいは、図７を参照して後述するように、後述するように単一オペレーションモードの命令であっても２つ以上の命令（２以上のクロックサイクルで逐次実行されるべき命令群）が１つの命令フォーマットに格納される場合には、ノーオペレーション命令を予め保持するノーオペレーション命令保持回路１１３５を例えばマルチプレクサにより構成し、このノーオペレーション命令保持回路１１３５から必要なクロックサイクルの間、データ処理ユニット１２にノーオペレーション命令を逐次出力してもよい。
【００３６】
次に、動作モードレジスタ１１５１に保持されるそれぞれの動作モードでの動作を説明する。
【００３７】
（１）整数処理ユニット動作モード（単一処理動作モード）
第１に、整数処理ユニット動作モード（動作モードレジスタ１１５１の値が“０”）では、図６に示すような命令フォーマットが使用される。尚、動作モードレジスタ１１５１に保持される動作モードの初期値は”０”であって、プロセッサ装置１０は当初整数処理ユニット動作モードで稼働する。この場合の命令フォーマットは、整数処理ユニット１１の動作を規定する例えば３２ビット長の命令から成る。
【００３８】
あるいは、第１の実施形態の変形例として、図７に示すように、命令レジスタ部１１３に、ノーオペレーション命令を予め保持するマルチプレクサなどで構成するノーオペレーション命令保持回路１１３５を設け、命令出力制御命令６０に応じて、整数処理ユニット動作モードの際には、常にデータ処理ユニット１２に対してノーオペレーション命令保持回路１１３５に保持されるノーオペレーション命令を送出してもよい。このように構成すれば、整数処理ユニット動作モードにおいて、命令メモリ部１１２中に格納される命令フォーマットに、例えば２クロックサイクルで処理されるべき３２ビット長の整数処理ユニット命令２１を２つ設定することができ、常に６４ビット長となる命令群を格納することができるので命令メモリ１１２の使用効率が向上する。
【００３９】
整数処理ユニット命令２１は、整数処理ユニット１１での、レジスタ、演算器およびメモリ上のデータを用いて、以下のような処理を規定する。
【００４０】
（ａ）加算、減算、分岐、メモリからのデータロード、メモリへのデータストア等の処理。
【００４１】
（ｂ）データ入力である整数処理ユニットレジスタの指定。
【００４２】
（ｃ）データ出力である整数処理ユニットレジスタの指定。
【００４３】
（ｄ）イミディエートデータの指定。
【００４４】
（ｅ）メモリからの読み出しアドレスの指定。
【００４５】
（ｆ）分岐条件の指定。
【００４６】
次に、整数処理ユニット動作モードにおける、整数処理ユニット１１内の各機能ブロックの動作を説明する。
【００４７】
まず、命令アドレス生成部１１１は、図２に示すように、動作モードコントロール部１１５から２ビットの命令アドレス変更信号５０を受け取り、命令アドレスレジスタ１１１２の値と命令メモリ１１２への命令アドレス信号９０の出力を更新する。
【００４８】
命令アドレス変更信号５０は以下のような処理を規定する。
【００４９】
００：命令アドレスレジスタ１１１２の値を保存
０１：命令アドレスレジスタ１１１２の値に８増加（６４ビット分の命令実行時）
１０：命令実行部１１６からの入力値を命令アドレスレジスタ１１１２に設定（分岐、例外処理時）
１１：（ｒｅｓｅｒｖｅｄ）
動作モードコントロール部１１５は、分岐や例外が発生した場合、命令アドレス変更信号５０を１０にして、命令実行部１１６で計算された分岐先アドレス或いは例外の飛び先アドレスが命令アドレスレジスタ１１１２に格納されるように制御する。また、６４ビット分（３２ビット命令２命令分）の整数処理ユニット命令２１が実行されると、命令アドレス変更信号を”０１”にして、次の６４ビットの命令が命令メモリ部１１２から読み出されるように制御する。
【００５０】
命令レジスタ部１１３は、コントロール部１１５から入力される命令出力制御信号６０に従って、命令メモリ部１１２から読み出された６４ビットの命令の上位或いは下位３２ビットをデコード部１１４へ出力する。
【００５１】
ここで、プロセッサ装置１０がリセット信号で初期化された状態では、コントロール部１１５の動作モードレジスタ１１５１には“０”が入っていて、整数処理ユニット動作モードになっている。
【００５２】
この整数処理ユニット動作モードでは、データ処理ユニット１２は動作しないように制御するため、命令レジスタ部１１３はデータ処理ユニット１２へ常にノーオペレーション命令を供給し、上位の整数処理ユニット命令２１をデコード部１１４に出力する。あるいは、上述したように、命令メモリ部１１２からは、常に６４ビット分（２命令分）の命令が命令レジスタ部１１３に入力され、これらを命令実行部１１６において２サイクルで逐次処理させてもよい。
【００５３】
デコード部１１４は、命令レジスタ部１１３から受け取った整数処理ユニット命令２１をデコードし、その指示により、デコード部１１４内の整数処理ユニットレジスタ（図示せず）の値を読み出し、イミディエートデータを命令から切り出して、命令実行部１１６へ出力する。
【００５４】
命令実行部１１６は、デコード部１１４からの入力データと、整数処理ユニット命令２１の指示に従って、デコードされた命令を実行し、演算結果をデータメモリ部１１７へ出力する。また、命令実行部１１６は、分岐命令の実行、例外の発生を動作モードコンロール部１１５へ通知し、更に分岐先アドレスや例外先アドレスを命令アドレス生成部１１１へ供給する。
【００５５】
データメモリ制御部１１７は、命令実行部１１６からのデータを入力し、命令中の指示に従って指定されたアドレスからデータを読み出し、その結果をデコード部１１４へ出力したり、データを書き込む。あるいは、命令実行部１１６の結果はそのままデコード部１１４へ出力されることもある。
【００５６】
デコード部１１４は、データメモリ部１１７から送られたデータを内部の整数処理ユニットレジスタ（図示せず）ヘ格納する。
【００５７】
（２）並列処理動作モード
第２に、並列処理動作モード（動作モードレジスタ１１５１の値が“１”）の場合の動作を説明する。図８はまた、並列処理動作モードで使用される拡張命令フォーマットの一例を示している。
【００５８】
並列処理動作モードで実行される命令フォーマットは、整数処理ユニット１１の動作を規定する３２ビット長の命令（ビット６３〜ビット３２）２１と、データ処理ユニット１２の動作を規定する３２ビット長の命令（ビット３１〜ビット０）２２から成る。
【００５９】
命令実行部１１６において、後述する事象により動作モード切替が検知されると、命令実行部１１６は、整数処理ユニットの中の動作モード切替え処理を行って、コントロール部１１５の動作モードレジスタ１１５１の値を“１”に切り換える。これ以降、動作モードコントロール部１１５は、命令レジスタ部１１３が並列処理動作を行うように制御する。
【００６０】
並列処理動作モードにおいて、動作モードコントロール部１１５は、命令レジスタ部１１３から６４ビットの命令を取り出し、３２ビットの整数処理ユニット命令２１をデコード部１１４以降に供給し、もう一方の３２ビットのデータ処理ユニット命令２２をデータ処理ユニット１２に供給するように制御する。整数処理ユニット命令２１はデコード部１１４、実行部１１６、データメモリ部１１７により整数処理ユニッ卜動作モードと同様に実行される。
【００６１】
並列処理動作モードでは、命令アドレス生成部１１１は、図５および図７に示すように、動作モードコントロール部１１５から２ビットの命令アドレス変更信号５０を受け取り、命令アドレスレジスタの値と命令メモリ部１１２への命令アドレス信号の出力を更新する。
【００６２】
ここで、命令アドレス変更信号で規定される動作は以下の如くである。
【００６３】
００：命令アドレスレジスタの値を保存
０１：命令アドレスレジスタの値を８増加（６４ビット命令実行時）
１０：実行部からの入力値を命令アドレスレジスタに設定（分岐、例外処理時）
１１：（ｒｅｓｅｒｖｅｄ）
動作モードコントロール部１１５は、分岐や例外が発生しない場合、命令アドレス変更信号を”０１”にして、６４ビット分の命令が命令メモリ部１１２から命令レジスタ部１１３へ供給されるように制御する。
【００６４】
命令レジスタ部１１３は、動作モードコントロール部１１５から入力される命令出力制御信号６０に従って命令メモリ１１２から読み出された６４ビットの命令の上位３２ビットをデコード部１１４へ、下位３２ビットをデータ処理ユニット１２の命令デコード部１２１へ出力する。
【００６５】
データ処理ユニット１２は、命令レジスタ部１１３からデータ処理ユニット命令２２を受け取り、データ処理ユニット命令デコード部１２１と、データ処理ユニッ卜実行部１２２で、その命令を実行する。
【００６６】
データ処理ユニット１２中の命令デコード部１２１では、入力されたデータ処理ユニッ卜命令２１をデコードし、その指示により、命令デコード部１２１内のデータ処理ユニットレジスタ（図示せず）の値を読み出し、イミディエートデータを命令から切り出して、命令実行部１２２へ出力する。
【００６７】
命令実行部１２２は、命令デコード部１２１からの入力データと、データ処理ユニット命令２２の指示に従って、命令を実行し、演算結果を命令デコード部１２１へ出力する。命令デコード部１２１は、その演算結果を命令デコード部１２１内のデータ処理ユニットレジスタ（図示せず）ヘ格納する。
【００６８】
（３）動作モードの切り替え
次に、整数処理ユニット動作モードと並列処理動作モードとの切り替え方法について説明する。
【００６９】
ａ）サブルーチンコールによる切り替え動作
整数処理ユニット１１の命令実行部１１６は、動作モード切り替え付きのサブルーチンコール命令を実行した際、サブルーチンからの戻りアドレスを、動作モードコントロール部１１５のリターンアドレスレジスタ１１５３に格納してプログラムカウンタの値を変更する。同時に、サブルーチンヘジャンプするように分岐先のサブルーチンの先頭アドレスを命令アドレス生成部１１１から命令メモリ部１１２へ分岐先アドレスとして出力すると共に動作モードを反転させる。
【００７０】
即ち、整数処理ユニット動作モードの時は並列処理動作モードになるように、並列処理動作モードの時は整数処理ユニット動作モードになるように、命令実行部１１６は、動作モードコントロール部１１５内の動作モードレジスタ１１５１の値を反転させるための制御信号を、動作モードコントロール部１１５へ出力する。また、命令実行部１１６は、リターンアドレスレジスタ１１５２の最下位ビットを１にセットする。このビットが“１”の場合、動作モードが反転したことが示される。
【００７１】
また、復帰の際は、命令実行部１１６は、サブルーチン命令から復帰するジャンプ命令で、プログラムカウンタの値を変更してジャンプするように、命令アドレス生成部１１１へ分岐先アドレスを出力する。同時に、ジャンプアドレスの最下位ビットが“１”の場合は、動作モードコントロール部１１５内の動作モードレジスタ１１５１の値を反転させるように、動作モードコントロール部１１５へ制御信号を出力する。これによって、サブルーチンコール前の元の動作モードに復帰する。
【００７２】
ｂ）例外発生による切り替え動作
例外が発生した場合は、整数処理ユニット動作モードヘ遷移する。整数処理ユニット１１の命令実行部１１６は、例外発生時の動作モードが並列処理動作モードの場合、整数処理ユニット動作モードになるように、動作モードコントロール部１１５内の動作モードレジスタ１１５１の値を反転する制御信号を動作モードコントロール部１１５へ出力する。
【００７３】
また、命令実行部１１６は、例外ハンドラからの復帰アドレスを示す動作モードコントロール部１１５の例外プログラムカウンタレジスタ１１５２の最下位ビットを１にセットする。このビットが“１”の時は、動作モードが反転したことが示される。
【００７４】
命令実行部１１６は、例外からの復帰命令を実行すると、プログラムカウンタの値を変更してジャンプするように、動作モードコントロール部１１５の例外プログラムカウンタレジスタ１１５２の値を設定する。これと同時に、命令実行部１１６は例外プログラムカウンタレジスタ１１５２の最下位ビットが“１”の場合は、動作モードコントロール部１１５内の動作モードレジスタ１１５１の値を反転させるように、動作モードコントロール部１１５へ制御信号を出力する。これによって、プロセッサ１０は例外発生前の元の動作モードに復帰する。
【００７５】
第１の実施の形態によれば、整数処理ユニット動作モードでは、拡張命令の命令列にデータ処理ユニット１２の動作を規定する命令（データ処理ユニット命令）を埋め込むことなく、命令レジスタ部１１３から別途オペレーション命令をデータ処理ユニット１２に供給することができるため、拡張命令に係る命令の利用効率を向上させることができる。それ故、命令メモリ部１１２のノーオペレーション命令を格納するためのメモリ容量を不要とし、命令メモリの使用効率を向上することができる。
【００７６】
尚、第１の実施形態においては、データ処理ユニット１２に送出される信号は、ノーオペレーション命令として説明したが、この他、任意の無効化・有効化信号を生成、送出することによりデータ処理ユニット１２を処理停止状態にしてもよい。
【００７７】
第２の実施形態
次に、本発明の第２の実施形態に係るプロセッサ装置を説明する。
【００７８】
第２の実施形態は、第１の実施形態のノーオペレーション命令に替えて、データ処理ユニット１２に供給されるクロック有効信号をオフすることにより、デーｓ処理ユニット１２を処理停止状態に設定する。
【００７９】
図９は、本発明の第２の実施の形態に係るプロセッサ装置の構成を示すブロック図である。但し、図３に示した第１の実施の形態と同一部分には同一符号を付し、且つその説明を適宜省略する。第１の実施の形態において、整数処理ユニット動作モードでは、命令レジスタ部１１３はデータ処理ユニット１２ヘノーオペレーション命令を送ることによって、データ処理ユニット１２を動作させないように制御した。一方、第２の実施形態は、データ処理ユニット１２へのクロックＣＬＫの供給を停止することによって、データ処理ユニット１２を動作させないようにする。
【００８０】
より具体的には、動作モードコントロール部１１５ｂは、動作モードレジスタ１１５１の値が“０”である整数処理ユニット動作モードの時、クロック有効信号８０をオフとして、データ処理ユニット１２内の内部クロック発生部１２３の動作を停止して、データ処理ユニット１２へクロックを供給しないようにする。他の動作は第１の実施の形態と同様である。
【００８１】
他方、動作モードコントロール部１１５は、動作モードレジスタ１１５１の値が“１”である並列処理動作モードでは、クロック有効信号８０をオンとしてデータ処理ユニット１２の内部クロック発生部１２３を動作させ、データ処理ユニットへクロックを供給する。他の動作は第１の実施の形態と同様である。
【００８２】
第２の実施形態によれば、整数処理ユニット動作モード時に、データ処理ユニットへクロックの供給しないでその動作を停止させる。このため、電力の消費を節約することができると共に、ノーオペレーション命令をデータ処理ユニット１２へ供給しないで済むため、拡張命令に係る命令の利用効率も高めることができる。
【００８３】
第３の実施形態
次に、本発明の第３の実施形態に係るプロセッサを説明する。
【００８４】
図１０は、本発明の第３の実施の形態に係るプロセッサ装置の構成を示すブロック図である。但し、図３に示した第１の実施の形態と同一部分には同一符号を付し、且つその説明を適宜省略する。
【００８５】
第３の実施形態は、一クロックサイクルでｎ＋１個のオペレーションを処理することができるプロセッサである。
【００８６】
第３の実施形態に係るプロセッサ装置は、整数処理ユニット１１と、ｎ個のデータ処理ユニットＡ，Ｂ，…，Ｎにより構成されている。命令レジスタ部１１３は、整数処理ユニット動作モードの時、命令実行ユニット１１８に整数処理ユニット命令を渡し、データ処理ユニットＡ，Ｂ，…，Ｎにはそれぞれノーオペレーション命令を供給する。
【００８７】
並列処理動作モードにおいて、命令レジスタ部１１３は実行ユニット１１８に整数処理ユニット命令を渡すと共に、データ処理させるデータ処理ユニット、例えばデータ処理ユニットＡ，Ｂにデータ処理ユニット命令を渡し、残りのデータ処理ユニットにはノーオペレーション命令を供給する。
【００８８】
尚、例えば、図１０に示すように、動作モードコントロール部１１５に制御される拡張動作モードレジスタ１１５４に、複数のデータ処理ユニットのうちどのデータ処理ユニットを選択的に動作させるか、を示す情報（拡張動作モード情報）を持たせて、この拡張動作モード情報に基づき特定のデータ処理ユニットのみにノーオペレーション命令を供給してもよい。
【００８９】
第３の実施形態のように、一クロックサイクルで処理するオペレーションの数が多い場合には、著しく命令の利用効率を高めることができる。
【００９０】
第３の実施形態によれば、例えば、異なるデータタイプの演算を同時に処理させるための上記のＳＩＭＤ演算を規定する命令を非常に効率よく処理することができる。特に、マルチメディア環境における画像処理などの場合、第３の実施形態に係るプロセッサ装置を用いれば、複数のデータ処理ユニットに複数のデータストリームとして例えば８ビット単位の画素データを６４ビット分ずつ供給し、これらを並列に処理させることができる。
【００９１】
さらに、第３の実施形態も、第２の実施形態と同様、動作させないデータ処理ユニットにクロックを供給しないように制御を行うことにより、データ処理ユニットの動作を停止してもよい。このように構成すれば、拡張命令の利用効率を高めることができると共に、省電力効果を得ることができる。
【００９２】
尚、上記の実施の形態においては、整数処理ユニット命令を３２ビット長、データ処理ユニット命令を３２ビット長の例を示したが、これに限定されるものではない。例えば、整数処理ユニット命令を３２ビット長と１６ビット長として、データ処理ユニッ卜命令を３２ビット長、４８ビット長としてもよい。また、整数処理ユニット命令とデータ処理ユニット命令を合わせたビット長を６４ビットとしたが、これに限定されるものではない。９６ビット、１２８ビットなどの命令長にしてもよい。
【００９３】
また、メインの処理ユニットは整数処理を行うユニットとして説明したが、これに限定されるものではなく、プロセッサとコプロセッサとの間でアプリケーションに応じて任意の処理を配分してもよい。
【００９４】
【発明の効果】
以上説明したように、本発明に係る並列プロセッサによれば、複数のオペレーションを同一サイクルで処理することができ、特に単一のオペレーションを処理する際、データ処理ユニットの動作を規定する命令にノーオペレーション命令を埋め込むことを不要として、命令メモリの使用効率を向上させるとともに、拡張命令の利用効率を高めることができる。
【図面の簡単な説明】
【図１】従来技術における複数オペレーションを同時に実行するマルチプル・パラレル・プロセッサ装置の概略構成を示すブロック図である。
【図２】従来技術におけるマルチプル・パラレル・プロセッサで用いられる命令フォーマットの一例を示す図である。
【図３】本発明の第１の実施形態に係るマルチプル・パラレル・プロセッサ装置およびこれを搭載するシステムの構成を示すブロック図である。
【図４】図３の命令アドレス生成部の詳細構成の一例を示す回路図である。
【図５】図３の命令レジスタ部の詳細構成の一例を示す回路図である。
【図６】図３のプロセッサ装置で用いられる単一オペレーションモードの命令フォーマットの一例を示す図である。
【図７】本発明の第１の実施形態の変形例に係る図３の命令レジスタ部の詳細構成の一例を示す図である。
【図８】第１の実施形態の変形例および並列処理モードで用いられる命令フォーマットの一例を示す図である。
【図９】本発明の第２の実施形態に係るマルチプル・パラレル・プロセッサ装置の構成を示すブロック図である。
【図１０】本発明の第３の実施形態に係るマルチプル・パラレル・プロセッサ装置の構成の一例を示すブロック図である。
【符号の説明】
１０  プロセッサ装置
１１  整数処理ユニット
１２  データ処理ユニット
２１  整数処理ユニット命令
２２  データ処理ユニット命令
１１１  命令アドレス生成部
１１２  命令メモリ部
１１３  命令レジスタ部
１１４  デコード部
１１５  コントロール部
１１６  実行部
１１７  データメモリ部
１２１  データ処理ユニット命令デコード部
１２２  データ処理ユニット実行部
１２３  内部クロック発生部
１１１１、１１３１〜１１３３  セレクタ
１１１２  命令アドレスレジスタ
１１１３  加算器
１１３４  レジスタ
１１５１  動作モードレジスタ
１１５２  例外プログラムカウンタレジスタ
１１５３  リターンアドレスレジスタ
【図１】
0003616556.tif 000002
【図２】
0003616556.tif 000003
【図３】
0003616556.tif 000004
【図４】
0003616556.tif 000005
【図５】
0003616556.tif 000006
【図６】
0003616556.tif 000007
【図７】
0003616556.tif 000008
【図８】
0003616556.tif 000009
【図９】
0003616556.tif 000010
【図１０】
0003616556.tif 000011