(57)【特許請求の範囲】
【請求項１】
第１及び第２の命令を規定した第１及び第２の命令コードを含む並列処理命令を受けるデータ処理装置であって、
前記第１の命令コードをデコードして第１のデコード結果を出力する第１のデコーダ（１１３，８８５，９２１）と、
前記第２の命令コードをデコードして第２のデコード結果を出力する第２のデコーダ（１１４，８８６，９２２）と、
フラグ情報を格納するフラグ情報格納手段（１７１）と、
前記第１のデコード結果に基づき、前記第１の命令の実行制御を行う第１の実行制御手段（６０３，９０５，９２９）と、
前記第２のデコード結果に基づき、前記第２の命令の実行制御を行う第２の実行制御手段（６０４，９０６，９３０）と、
前記第１の命令が前記フラグ情報に基づく第２の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第２の命令用実行条件を満足するか否かに基づき、前記第２の命令を実行するか抑止するかを制御する第２の命令用実行抑止情報を前記第２の実行制御手段に出力する第１の実行条件判定手段（６０１，９０１，９２５）とを備え、
前記第２の実行制御手段は、前記第２の命令用実行抑止情報の指示に基づき、前記第２の命令の実行あるいは抑止制御を行うことを特徴とする、
データ処理装置。
【請求項２】
請求の範囲１記載のデータ処理装置であって、
前記第２の命令が前記フラグ情報に基づく第１の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第１の命令用実行条件を満足するか否かに基づき、前記第１の命令を実行するか抑止するかを制御する第１の命令用実行抑止情報を前記第１の実行制御手段に出力する第２の実行条件判定手段（６０２，９０２，９２６）をさらに備え、
前記第１の実行制御手段は、前記第１の命令用実行抑止情報の指示に基づき、前記第１の命令の実行あるいは抑止制御を行うことを特徴とする。
【請求項３】
請求の範囲１記載のデータ処理装置であって、
前記並列処理命令は、第３及び第４の命令を規定した第３及び第４の命令コードをさらに含み、
前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダ（８８７，９２３）と、
前記第４の命令コードをデコードして第４のデコード結果を出力する第４のデコーダ（８８８，９２４）と、
前記第３のデコード結果に基づき、前記第３の命令の実行制御を行う第３の実行制御手段（９０７，９３１）と、
前記第４のデコード結果に基づき、前記第４の命令の実行制御を行う第４の実行制御手段（９０８，９３２）と、
前記第３の命令が、前記フラグ情報に基づく第４の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第４の命令用実行条件を満足するか否かに基づき、前記第４の命令を実行するか抑止するかを制御する第４の命令用実行抑止情報を前記第４の実行制御手段に出力する第３の実行条件判定手段（９０３，９２７）とをさらに備え、
前記第４の実行制御手段は、前記第４の命令用実行抑止情報の指示に基づき、前記第４の命令の実行あるいは抑止制御を行うことを特徴とする。
【請求項４】
請求の範囲１記載のデータ処理装置であって、
前記並列処理命令は、第３の命令を規定した第３の命令コードをさらに含み、前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダ（８８７，９２３）と、
前記第３のデコード結果に基づき、前記第３の命令の実行制御を行う第３の実行制御手段（９０７，９３１）とをさらに備え、
前記第１の実行条件判定手段（９０１，９２５）は、前記第１の命令が、前記第２の命令用実行条件とともに前記フラグ情報に基づく第３の命令用実行条件をも規定した実行条件指定命令の場合、前記フラグ情報が前記第３の命令用実行条件を満足するか否かに基づき、前記第３の命令を実行するか抑止するかを制御する第３の命令用実行抑止情報を前記第３の実行制御手段に出力し、
前記第３の実行制御手段は、前記第３の命令用実行抑止情報の指示に基づき、前記第３の命令の実行あるいは抑止制御を行うことを特徴とする。
【請求項５】
請求の範囲４記載のデータ処理装置であって、
前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件はそれぞれ独立して記述される。
【請求項６】
請求の範囲４記載のデータ処理装置であって、
前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件はそれぞれ一部重複して記述され、
前記第２の命令用実行条件は共通実行条件と第２の命令用固有実行条件とから構成され、前記第３の命令用実行条件は前記共通実行条件と第３の命令用固有実行条件とから構成される。
【請求項７】
請求の範囲４記載のデータ処理装置であって、
前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件に共通な共通実行条件が記述され、
前記第１の実行条件判定手段は、前記共通実行条件を満足する場合に前記第２の命令の実行を指示する前記第２の命令用実行抑止情報を出力するとともに前記第３の命令の抑止を指示する前記第３の命令用実行抑止情報を出力し、前記共通実行条件を満足しない場合に前記第２の命令の抑止を指示する前記第２の命令用実行抑止情報を出力するとともに前記第３の命令の実行を指示する前記第３の命令用実行抑止情報を出力する。
【請求項８】
請求の範囲１記載のデータ処理装置であって、
前記フラグ情報は第１及び第２のフラグ情報を含み、
前記実行条件指定命令は、前記第１のフラグ情報及び前記第２のフラグ情報で決定される複合条件からなる実行条件を指定する命令である。
【請求項９】
フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段（１７１，７３４，１００１）と、
実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段（１１３，１１６，６０１，６０３（１１４，１１７，６０２，６０４））とを備え、
前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報を有し、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき前記第１のフラグ情報を更新する際、前記第２のフラグ情報を更新前の前記第１のフラグ情報に更新することを特徴とする、
データ処理装置。
【請求項１０】
請求の範囲９記載のデータ処理装置であって、
前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含んでいる。
【請求項１１】
請求の範囲９記載のデータ処理装置であって、
前記フラグ情報は第３のフラグ情報をさらに有し、
前記フラグ情報格納手段は、前記第２のフラグ情報を更新する際、前記第３のフラグ情報を更新前の前記第２のフラグ情報に更新することを特徴とする。
【請求項１２】
フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段（４２１，８４６）と、
実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段（１１３，１１６，６０１，６０３（１１４，１１７，６０２，６０４））とを備え、
前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報と、前記第１及び第２のフラグ情報のうち更新対象となるフラグ情報を特定する更新対象フラグ情報を含み、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき、前記第１及び第２のフラグ情報のうち前記更新対象フラグ情報が指示するフラグ情報を更新する。
【請求項１３】
請求の範囲１２記載のデータ処理装置であって、
前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含んでいる。
【請求項１４】
請求の範囲９あるいは１２記載のデータ処理装置であって、
前記フラグ制御実行命令は前記第２のフラグ情報のみに基づき実行内容が決定される命令を含む。
【請求項１５】
請求の範囲９あるいは１２記載のデータ処理装置であって、
前記フラグ制御実行命令は、前記第１のフラグ情報及び前記第２のフラグ情報による複合条件に基づき実行内容が決定される命令を含む。
【請求項１６】
フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能なデータ処理装置であって、
前記フラグ情報を格納するフラグ情報格納手段（１７１，７３４，１００１）と、
前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段（１１３，６０１，６０３（１１７，６０２，６０４））とを備え、
前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報を有し、
前記フラグ制御実行命令は、前記第１及び第２のフラグ情報で決定される場合条件に基づき、該複合条件成立時に第１の値を所定の格納部に書き込み、不成立時に第２の値を前記所定の格納部に書き込む命令を含むことを特徴とする、
データ処理装置。
【請求項１７】
請求の範囲１６記載のデータ処理装置であって、
前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含む。
【請求項１８】
請求の範囲１６記載のデータ処理装置であって、
前記所定の格納部は、レジスタ、アキュームレータあるいはメモリを含む。
【請求項１９】
複数の命令コードを含むプログラムを実行するデータ処理装置であって、
前記複数の命令コードによって各々定められた命令を実行する命令実行部と、
前記複数の命令コードに応じて前記命令実行部を制御する制御部とを備え、
前記制御部は、
所定のフォーマットを有するコードの第１フィールドが所定のビットパターンを有しているか否かを判断するため、前記所定のフォーマットを有するコードをデコードするデコーダと、
前記第１フィールドが前記所定のビットパターンを有することが前記デコーダによって判断されたとき、前記複数の命令コードの実行条件が満足しているか否かを前記所定のフォーマットを有するコードの前記第１フィールドと異なる第２フィールドによって判定する実行条件判定手段とを備え、
前記制御部は、前記命令実行部が前記実行条件判定手段による判定に基づいた命令の各々を実行することを許可するか否かを制御することを特徴とする、
データ処理装置。
【請求項２０】
第１の命令コードと第１の命令コードとは異なる複数の命令コードを含むプログラムを実行するデータ処理装置であって、
前記複数の命令コードによりそれぞれ指定される命令を実行する命令実行部と、
前記複数の命令コードに従って前記命令実行部を制御する制御部とを備え、
前記制御部は、
前記第１の命令コードの第１フィールドが予め定められた特定のビットパターンであるか否かを判断するために前記第１の命令コードをデコードするデコーダと、
前記デコーダにより前記第１フィールドが前記特定のビットパターンであると判断されたとき、前記第１の命令コードの前記第１フィールドとは異なる第２フィールドによって指定される前記複数の命令コードの実行条件が成立するか否かを判定する実行条件判定手段を備え、
前記制御部は、前記実行条件判定手段による判定に基づき、前記命令実行部が前記複数の命令コードにより指定される各々の命令を実行させるか否かを制御することを特徴とする、
データ処理装置。
【請求項２１】
請求の範囲２０記載のデータ処理装置であって、
前記第１の命令コードの前記第２フィールドは、前記複数の命令コードによって指定される命令の実行条件に共通する共通実行条件指定フィールドを含む。
【請求項２２】
請求の範囲２０記載のデータ処理装置であって、
前記第１の命令コードの前記第２フィールドは、前記複数の命令コードによって指定される命令の実行条件をそれぞれ個別に指定する複数の実行条件指定フィールドを含む。
【請求項２３】
請求の範囲２０記載のデータ処理装置であって、
前記命令実行部は、前記複数の命令コードによって指定される命令を並列に実行する。
【請求項２４】
第１及び第２の命令コードを含む並列処理命令を処理するデータ処理装置であって、
前記第１の命令コードをデコードして第１のデコード結果を出力する第１のデコーダと、
前記第２の命令コードをデコードして第２のデコード結果を出力する第２のデコーダと、
フラグ情報を格納するフラグ情報格納手段と、
前記第２のデコード結果に基づき、前記第２の命令コードで規定される命令の実行制御を行う第１の実行制御手段と、
前記第１のデコード結果により前記第１の命令コードが前記フラグ情報に基づく第１の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第１の命令実行条件を満足するか否かに基づき、前記第２の命令コードで規定される命令を実行するか抑止するかを制御する第１の命令実行抑止情報を前記第１の実行制御手段に出力する実行条件判定手段とを備え、
前記第１の実行制御手段は、前記第１の命令実行抑止情報の指示に基づき、前記第２の命令コードで規定される命令の実行あるいは抑止制御を行うことを特徴とする、
データ処理装置。
【請求項２５】
請求の範囲２４記載のデータ処理装置であって、
前記並列処理命令は、第３の命令コードをさらに含み、
前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダと、
前記第３のデコード結果に基づき、前記第３の命令コードで規定される命令の実行制御を行う第２の実行制御手段とをさらに備え、
前記実行条件判定手段は、前記第１のデコード結果により前記第１の命令コードが前記第１の命令実行条件とともに前記フラグ情報に基づく第２の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第２の命令実行条件を満足するか否かに基づき、前記第３の命令コードで規定される命令を実行するか抑止するかを制御する第２の命令実行抑止情報を前記第２の実行制御手段に出力し、
前記第２の実行制御手段は，前記第２の命令実行抑止情報の指示に基づき、前記第３の命令コードで規定される命令の実行あるいは抑止制御を行うことを特徴とする。
【発明の詳細な説明】
技術分野
本発明は、高性能なデータ処理装置に関するものであり、特に、演算結果が反映されたフラグに基づき条件実行を行うデータ処理装置に関する。
背景技術
データ処理装置において、性能を向上するために、パイプライン処理がよく用いられる。パイプライン処理において性能向上を妨げる大きな要因の１つとして、分岐の実行によるオーバーヘッドがある。これについては、様々な工夫がなされているが、その１つとして、命令の条件実行がある。
３２ビットＲＩＳＣプロセッサであるＡＲＭ(VLSI Technology)では、全命令の命令コードに４ビットの実行条件指定フィールドを設けており、全命令を条件実行できる。例えば、ある条件が成立した場合にのみ１つの命令を実行する場合、分岐を起こすことなしに処理できる。無条件実行を行う場合には、常に実行することをこの４ビットのフィールドの１つのビットパターンで指定する。
このように、ＡＲＭ等のいくつかのプロセッサでは、多くの命令を条件実行可能にすることにより分岐のペナルティを削減し、性能向上、消費電力の低減を図っている。しかし、全命令で条件実行を行うように設定すると、全命令に実行条件を指定するフィールドが必要となるため、命令長が長くなる。
特に組み込み用のプログラムをＲＯＭ化し内蔵する場合、コードサイズの低減が重要になる。コードサイズの低減のため、無理に命令長を抑えすぎると、実際の命令を記述する領域が実行条件指定フィールド分さらに少なくなるため、エンコードできる命令数が少なくなる。このように、条件指定フィールドを全命令に備える場合、コードサイズが大きくなってしまうという問題点があった。
また、１６ビット固定小数点ＤＳＰであるＴＭＳ３２０Ｃ５４ｘシリーズ(TI)では、条件が成立した場合のみ次の命令（もしくは引き続く２命令）を実行することを指定するＸＣ命令を備えることにより、分岐のペナルティを削減している。この技術は、実行条件の指定に１クロックサイクルを要するため、効果が小さい。また、プロセッサで使われているスーパースケーラ、ＶＬＩＷ等の高度な並列処理の実現が困難であり、かつ、ＸＣ命令直後の外部割り込みにも制限がかかる等の問題点があった。
多くのデータ処理装置では、演算結果や比較結果はフラグとしてプロセッサ状態語に保持され、条件分岐命令や条件トラップ命令の実行条件としてこのフラグを参照可能である。このフラグは、一般的に１回の演算結果もしくは比較結果の情報が保持される。しかし、複数の演算結果の組み合わせや、直前の演算以外の演算結果が条件として参照できる方がコード効率の削減、分岐によるペナルティの削減に役立つ。また、作業用として使用するレジスタの数も削減可能である。
例えば、プロセッサＰｏｗｅｒＰＣ(IBM)では、４ビットのフラグからなるフラグ群８組からなる条件レジスタを備え、比較命令でどのフラグ群に演算結果を反映するかを指定でき、かつ、条件分岐命令等で任意のフラグが参照できるように工夫されている。フラグ間の論理演算も可能である。しかし、比較命令で比較結果を格納するフラグ群や、条件分岐命令で分岐条件の判定で参照するフラグを指定するためのフィールドが必要となり、フィールド領域分、命令長が長くなる。無理に命令長を抑えようとすると、短い命令にエンコードできる命令数が少なくなり、プロセッサＡＲＭ同様、コードサイズが大きくなってしまうという問題点があった。
また、いくつかのプロセッサではブール代数を効率よく扱うために、条件が真の場合には“１”を偽の場合には“０”をセットする命令を備える。例えば、プロセッサｘ８６シリーズ(Intel)には、ＳＥＴｃｃ命令を備える。しかし、これらの命令では１つの条件しか判定できないため、複数の条件の複合条件が指定される場合等、複雑な式を効率よく処理できないという別の問題点があった。
発明の開示
この発明は、上記のような問題点を解決するためになされたものであり、コード効率が良く、かつ、条件実行により分岐のペナルティを削減できる、高性能なデータ処理装置を得ることを目的とする。
命令コードサイズの小さい命令セットで条件実行を実現し、分岐のペナルティを削減できる、高性能なデータ処理装置を得ることを目的とする。
本発明に係るデータ処理装置の第１の態様は、第１及び第２の命令を規定した第１及び第２の命令コードを含む並列処理命令を受ける装置であって、前記第１の命令コードをデコードして第１のデコード結果を出力する第１のデコーダと、前記第２の命令コードをデコードして第２のデコード結果を出力する第２のデコーダと、フラグ情報を格納するフラグ情報格納手段と、前記第１のデコード結果に基づき、前記第１の命令の実行制御を行う第１の実行制御手段と、前記第２のデコード結果に基づき、前記第２の命令の実行制御を行う第２の実行制御手段と、前記第１の命令が前記フラグ情報に基づく第２の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第２の命令用実行条件を満足するか否かに基づき、前記第２の命令を実行するか抑止するかを制御する第２の命令用実行抑止情報を前記第２の実行制御手段に出力する第１の実行条件判定手段とを備え、前記第２の実行制御手段は、前記第２の命令用実行抑止情報の指示に基づき、前記第２の命令の実行あるいは抑止制御を行っている。
また、データ処理装置の第２の態様のように、前記第２の命令が前記フラグ情報に基づく第１の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第１の命令用実行条件を満足するか否かに基づき、前記第１の命令を実行するか抑止するかを制御する第１の命令用実行抑止情報を前記第１の実行制御手段に出力する第２の実行条件判定手段をさらに備え、前記第１の実行制御手段は、前記第１の命令用実行抑止情報の指示に基づき、前記第１の命令の実行あるいは抑制制御を行ってもよい。
また、データ処理装置の第３の態様のように、前記並列処理命令は、第３及び第４の命令を規定した第３及び第４の命令コードをさらに含み、前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダと、前記第４の命令コードをデコードして第４のデコード結果を出力する第４のデコーダと、前記第３のデコード結果に基づき、前記第３の命令の実行制御を行う第３の実行制御手段と、前記第４のデコード結果に基づき、前記第４の命令の実行制御を行う第４の実行制御手段と、前記第３の命令が、前記フラグ情報に基づく第４の命令用実行条件を規定した実行条件指定命令の場合、前記フラグ情報が前記第４の命令用実行条件を満足するか否かに基づき、前記第４の命令を実行するか抑止するかを制御する第４の命令用実行抑止情報を前記第４の実行制御手段に出力する第３の実行条件判定手段とをさらに備え、前記第４の実行制御手段は、前記第４の命令用実行抑止情報の指示に基づき、前記第４の命令の実行あるいは抑止制御を行ってもよい。
また、データ処理装置の第４の態様のように、前記並列処理命令は、第３の命令を規定した第３の命令コードをさらに含み、前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダと、前記第３のデコード結果に基づき、前記第３の命令の実行制御を行う第３の実行制御手段とをさらに備え、前記第１の実行条件判定手段は、前記第１の命令が、前記第２の命令用実行条件とともに前記フラグ情報に基づく第３の命令用実行条件をも規定した実行条件指定命令の場合、前記フラグ情報が前記第３の命令用実行条件を満足するか否かに基づき、前記第３の命令を実行するか抑止するかを制御する第３の命令用実行抑止情報を前記第３の実行制御手段に出力し、前記第３の実行制御手段は、前記第３の命令用実行抑止情報の指示に基づき、前記第３の命令の実行あるいは抑止制御を行ってもよい。
また、データ処理装置の第５の態様にように、前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件はそれぞれ独立して記述されてもよい。
また、データ処理装置の第６の態様のように、前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件はそれぞれ一部重複して記述され、前記第２の命令用実行条件は共通実行条件と第２の命令用固有実行条件とから構成され、前記第３の命令用実行条件は前記共通実行条件と第３の命令用固有実行条件とから構成されてもよい。
また、データ処理装置の第７の態様のように、前記第１の命令が実行条件指定命令の場合、前記第１の命令コード中に前記第２の命令用実行条件及び前記第３の命令用実行条件に共通な共通実行条件が記述され、前記第１の実行条件判定手段は、前記共通実行条件を満足する場合に前記第２の命令の実行を指示する前記第２の命令用実行抑止情報を出力するとともに前記第３の命令の抑止を指示する前記第３の命令用実行抑止情報を出力し、前記共通実行条件を満足しない場合に前記第２の命令の抑止を指示する前記第２の命令用実行抑止情報を出力するとともに前記第３の命令の実行を指示する前記第３の命令用実行抑止情報を出力するようにしてもよい。
また、データ処理装置の第８の態様のように、前記フラグ情報は第１及び第２のフラグ情報を含み、前記実行条件指定命令は、前記第１のフラグ情報及び前記第２のフラグ情報で決定される複合条件からなる実行条件を指定する命令であってもよい。
この発明に係るデータ処理装置の第９の態様は、フラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報を有し、前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき前記第１のフラグ情報を更新する際、前記第２のフラグ情報を更新前の前記第１のフラグ情報に更新してもよい。
また、データ処理装置の第１０の態様のように、前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第１１の態様のように、前記フラグ情報は第３のフラグ情報をさらに有し、前記フラグ情報格納手段は、前記第２のフラグ情報を更新する際、前記第３のフラグ情報を更新前の前記第２のフラグ情報に更新してもよい。
この発明に係るデータ処理装置の第１２の態様はフラグ情報の更新を指示するフラグ更新命令及び前記フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、実行対象の命令が前記フラグ更新命令であった場合、該フラグ更新命令に基づきフラグ更新に関連したフラグ更新関連情報を前記フラグ情報格納手段に出力し、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報と、前記第１及び第２のフラグ情報のうち更新対象となるフラグ情報を特定する更新対象フラグ情報を含み、
前記フラグ情報格納手段は、前記フラグ更新関連情報に基づき、前記第１及び第２のフラグ情報のうち前記更新対象フラグ情報が指示するフラグ情報を更新する。
また、データ処理装置の第１３の態様のように、前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第１４の態様のように、前記フラグ制御実行命令は前記第２のフラグ情報のみに基づき実行内容が決定される命令を含んでもよい。
また、データ処理装置の第１５の態様のように、前記フラグ制御実行命令は、前記第１のフラグ情報及び前記第２のフラグ情報による複合条件に基づき実行内容が決定される命令を含んでもよい。
この発明に係るデータ処理装置の第１６の態様は、フラグ情報に基づき実行内容が決定されるフラグ制御実行命令を少なくとも含む命令を実行可能な装置であって、前記フラグ情報を格納するフラグ情報格納手段と、前記命令が前記フラグ制御実行命令であった場合、該フラグ情報の内容に基づき決定される実行内容で前記フラグ制御実行命令を実行制御する命令実行制御手段とを備え、前記フラグ情報は、それぞれが少なくとも１つのフラグの情報を含む第１及び第２のフラグ情報を有し、前記フラグ制御実行命令は、前記第１及び第２のフラグ情報で決定される複合条件に基づき、該複合条件成立時に第１の値を所定の格納部に書き込み、不成立時に第２の値を前記所定の格納部に書き込む命令を含んできる。
また、データ処理装置の第１７の態様のように、前記第１のフラグ情報は複数のフラグの情報を含み、前記第２のフラグ情報は複数のフラグの情報を含んでもよい。
また、データ処理装置の第１８の態様のように、前記所定の格納部は、レジスタ、アキュームレータあるいはメモリを含んでもよい。
この発明に係るデータ処理装置の第１の態様において、第１の実行条件判定手段は、第１の命令がフラグ情報に基づく第２の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第２の命令用実行条件を満足するか否かに基づき、第２の命令を実行するか抑止するかを制御する第２の命令用実行抑止情報を第２の実行制御手段に出力し、第２の実行制御手段は、第２の命令用実行抑止情報の指示に基づき、第２の命令の実行あるいは抑止制御を行っている。
したがって、第１の命令が実行条件指定命令の場合、第１の命令コードに第２の命令の実行条件を記述することにより、第１の命令コードをフルに活用して第２の命令の対する様々な実行条件を設定することができるため、その分、分岐命令を用いた処理を減らすことができ、分岐ペナルティの低減化を図ることができる。
また、第１の命令が実行条件指定命令の場合、第２の命令の実行条件を第２の命令コード中に記述する必要のない分、第２の命令コードのコードサイズを小さくすることができる。その結果、本データ処理装置で実行可能な命令を用いて作成されるプログラム容量の低減に伴いコストの低減化を図ることができる。
また、第１の命令を実行条件指定命令として、多様な第２の命令の実行条件を設定することにより、所定の処理を効率的に実行できるため、実現するのに必要なデータ処理装置のクロックサイクル数を減少させて消費電力の低減を図ることができる。
また、データ処理装置の第２の態様において、第２の実行条件判定手段は、第２の命令がフラグ情報に基づく第１の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第１の命令用実行条件を満足するか否かに基づき、第１の命令を実行するか抑止するかを指示する第１の命令用実行抑止情報を第１の実行制御手段に出力し、第１の実行制御手段は、第１の命令用実行抑止情報の指示に基づき、第１の命令の実行あるいは抑止制御している。
したがって、第２の命令が実行条件指定命令の場合も、第２の命令コードに第１の命令の実行条件を記述することにより、第２の命令コードをフルに活用して第１の命令に対する様々な実行条件を設定することができ、第１の態様以上に、分岐ペナルティの低減、コストの低減及び消費電力の低減を図ることができる。
また、データ処理装置の第３の態様において、第３の実行条件判定手段は、第３の命令が、フラグ情報に基づく第４の命令用実行条件を規定した実行条件指定命令の場合、フラグ情報が第４の命令用実行条件を満足するか否かに基づき、第４の命令を実行するか抑止するかを指示する第４の命令用実行抑止情報を第４の実行制御手段に出力し、第４の実行制御手段は、第４の命令用実行抑止情報の指示に基づき、第４の命令の実行あるいは抑止制御を行っている。
したがって、第３の命令が実行条件指定命令の場合、第３の命令コードに第４の命令の実行条件を記述することにより、第３の命令コードをフルに活用して第４の命令の対する様々な実行条件を設定することができるため、第１及び第２の態様以上に、分岐ペナルティの低減、コストの低減及び消費電力の低減を図ることができる。
また、データ処理装置の第４の態様において、第１の実行制御手段は、第１の命令が、第２の命令用実行条件とともにフラグ情報に基づく第３の命令用実行条件をも規定した実行条件指定命令の場合、フラグ情報が第３の命令用実行条件を満足するか否かに基づき、第３の命令を実行するか抑止するかを指示する第３の命令用実行抑止情報を第３の実行制御手段に出力し、第３の実行制御手段は、第３の命令用実行抑止情報の指示に基づき、第３の命令の実行あるいは抑止制御を行っている。
その結果、データ処理装置の第４の態様は、１つの実行条件指定命令（第１の命令）により、２つの命令（第２及び第３の命令）の実行及び抑止を制御することができるため、効率的な実行条件指定を行うことができる。
また、データ処理装置の第５の態様において、第１の命令が実行条件指定命令の場合、第１の命令コード中に第２の命令用実行条件及び第３の命令用実行条件はそれぞれ独立して記述されるため、第２及び第３の命令用実行条件を固有に設定することができる。
また、データ処理装置の第６の態様において、第１の命令が実行条件指定命令の場合、第１の命令コード中に第２の命令用実行条件及び第３の命令用実行条件はそれぞれ一部重複して記述されるため、第１の命令コードを有効に活用しながら、第２及び第３の命令用実行条件を固有に設定することができる。
また、データ処理装置の第７の態様において、第１の実行条件判定手段は、共通実行条件を満足する場合に第２の命令の実行を指示する第２の命令用実行抑止情報を出力するとともに第３の命令の抑止を指示する第３の命令用実行抑止情報を出力し、共通実行条件を満足しない場合に第２の命令の抑止を指示する第２の命令用実行抑止情報を出力するとともに第３の命令の実行を指示する第３の命令用実行抑止情報を出力するため、条件分岐命令を伴う一連の処理を第１の実行条件判定手段の判定に基づき一括して行うことができる。
また、データ処理装置の第８の態様において、第１のフラグ情報は第１及び第２の情報を含み、実行条件指定命令は、第１のフラグ情報及び第２のフラグ情報で決定される複合条件からなる実行条件を指定する命令であるため、複雑な複合条件からなる実行条件を指定することができる。
この発明に係るデータ処理装置の第９の態様のフラグ情報格納手段は、フラグ更新関連情報に基づき第１のフラグ情報を更新する際、第２のフラグ情報を更新前の第１のフラグ情報に更新するため、第１のフラグ情報の更新が行われると同時に、第２のフラグ情報の更新も行われる。
したがって、フラグ更新命令中に更新対象のフラグ情報を指定することなく、フラグ更新関連情報をフラグ情報格納手段に与えるだけで、第１及び第２のフラグ情報を更新することができる。
その結果、第１及び第２のフラグ情報に関して変更対象のフラグ情報の指定領域を省略できる分、フラグ更新命令の命令コードのコードサイズを小さくすることができるため、コードサイズが小さいフラグ更新命令で第１及び第２のフラグ情報を更新することができる。
また、データ処理装置の第１０の態様において、第１のフラグ情報は複数のフラグの情報を含み、第２のフラグ情報は複数のフラグの情報を含むため、１回のフラグ更新関連情報をフラグ情報格納手段に与えるだけで、第１及び第２のフラグ情報それぞれ複数のフラグの情報を一括して更新することができる。
また、データ処理装置の第１１の態様において、フラグ情報格納手段は、第２のフラグ情報を更新する際、第３のフラグ情報を更新前の第２のフラグ情報に更新するため、フラグ更新命令中に更新対象のフラグ情報を指定することなく、フラグ更新関連情報をフラグ情報格納手段に与えるだけで、第１〜第３のフラグ情報を更新することができる。
その結果、第１〜第３のフラグ情報に関して更新対象のフラグ情報を指定領域を省略できる分、フラグ更新命令の命令コードのコードサイズを小さくすることができるため、コードサイズが小さいフラグ更新命令で第１〜第３のフラグ情報を更新することができる。
また、データ処理装置の第１２の態様において、フラグ情報は、第１及び第２のフラグ情報と、第１及び第２のフラグ情報のうち更新対象となるフラグ情報を特定するフラグ特定フラグの情報を含み、フラグ情報格納手段は、フラグ更新関連情報に基づき、第１及び第２のフラグ情報のうち更新対象フラグ情報が指示するフラグ情報を更新している。
したがって、更新対象フラグ情報を適宜設定することにより、フラグ更新命令内に更新対象のフラグ情報を特定する情報を領域を設けることなく、更新対象のフラグ情報を意図的に決定することができる。
また、データ処理装置の第１３の態様において、第１のフラグ情報は複数のフラグの情報を含み、第２のフラグ情報は複数のフラグの情報を含むため、１回のフラグ更新関連情報をフラグ情報格納手段に与えるだけで、第１及び第２のフラグ情報のうち更新対象フラグ情報が指示する複数のフラグの情報を更新することができる。
また、データ処理装置の第１４の態様において、フラグ制御実行命令は第２のフラグ情報のみに基づき実行内容が決定される命令を含んでおり、第２のフラグ情報のみを用いた特殊な条件に基づく命令の実行制御が可能となる。
また、データ処理装置の第１５の態様において、フラグ制御実行命令は第１のフラグ情報及び第２のフラグ情報による複合条件に基づき実行内容が決定される命令を含むため、複雑な複合条件に基づく命令の実行制御が可能となる。
また、データ処理装置の第１６の態様において、フラグ制御実行命令は、第１及び第２のフラグ情報で決定される複合条件に基づき、該複合条件成立時に第１の値を所定の格納部に書き込み、不成立時に第２の値を書き込む命令を含むため、高度な書き込み命令を実行することができる。
また、データ処理装置の第１７の態様において、第１のフラグ情報は複数のフラグの情報を含み、第２のフラグ情報は複数のフラグの情報を含むため、上記複合条件をさらに複雑した、より高度な書き込み命令を実行することができる。
また、データ処理装置の第１８の態様において、所定の格納部は、レジスタ、アキュームレータあるいはメモリを含むため、レジスタ、アキュームレータあるいはメモリに対する高度な書き込み命令を実行することができる。
本発明に係るデータ処理装置の第１９の態様は、複数の命令コードを含むプログラムを実行する装置であって、前記複数の命令コードによって各々定められた命令を実行する命令実行部と、前記複数の命令コードに応じて前記命令実行部を制御する制御部とを備え、前記制御部は、所定のフォーマットを有するコードの第１フィールドが所定のビットパターンを有しているか否かを判断するため、前記所定のフォーマットを有するコードをデコードするデコーダと、前記第１フィールドが前記所定のビットパターンを有することが前記デコーダによって判断されたとき、前記複数の命令コードの実行条件が満足しているか否かを前記所定のフォーマットを有するコードの前記第１フィールドと異なる第２フィールドによって判定する実行条件判定手段とを備え、前記制御部は、前記命令実行部が前記実行条件判定手段による判定に基づいた命令の各々を実行することを許可するか否かを制御している。
データ処理装置。
本発明に係るデータ処理装置の第２０の態様は、第１の命令コードと第１の命令コードとは異なる複数の命令コードを含むプログラムを実行する装置であって、前記複数の命令コードによりそれぞれ指定される命令を実行する命令実行部と、前記複数の命令コードに従って前記命令実行部を制御する制御部とを備え、前記制御部は、前記第１の命令コードの第１フィールドが予め定められた特定のビットパターンであるか否かを判断するために前記第１の命令コードをデコードするデコーダと、前記デコーダにより前記第１フィールドが前記特定のビットパターンであると判断されたとき、前記第１の命令コードの前記第１フィールドとは異なる第２フィールドによって指定される前記複数の命令コードの実行条件が成立するか否かを判定する実行条件判定手段を備え、前記制御部は、前記実行条件判定手段による判定に基づき、前記命令実行部が前記複数の命令コードにより指定される各々の命令を実行させるか否かを制御している。
また、データ処理装置の第２１の態様のように、前記第１の命令コードの前記第２フィールドは、前記複数の命令コードによって指定される命令の実行条件に共通する共通実行条件指定フィールドを含んでもよい。
また、データ処理装置の第２２の態様のように、前記第１の命令コードの前記第２フィールドは、前記複数の命令コードによって指定される命令の実行条件をそれぞれ個別に指定する複数の実行条件指定フィールドを含んでもよい。
また、データ処理装置の第２３の態様のように、前記命令実行部は、前記複数の命令コードによって指定される命令を並列に実行してもよい。
本発明に係るデータ処理装置の第２４の態様は、第１及び第２の命令コードを含む並列処理命令を処理する装置であって、前記第１の命令コードをデコードして第１のデコード結果を出力する第１のデコーダと、前記第２の命令コードをデコードして第２のデコード結果を出力する第２のデコーダと、フラグ情報を格納するフラグ情報格納手段と、前記第２のデコード結果に基づき、前記第２の命令コードで規定される命令の実行制御を行う第１の実行制御手段と、前記第１のデコード結果により前記第１の命令コードが前記フラグ情報に基づく第１の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第１の命令実行条件を満足するか否かに基づき、前記第２の命令コードで規定される命令を実行するか抑止するかを制御する第１の命令実行抑止情報を前記第１の実行制御手段に出力する実行条件判定手段とを備え、前記第１の実行制御手段は、前記第１の命令実行抑止情報の指示に基づき、前記第２の命令コードで規定される命令の実行あるいは抑止制御を行っている。
また、データ処理装置の第２５の態様のように、前記並列処理命令は、第３の命令コードをさらに含み、前記第３の命令コードをデコードして第３のデコード結果を出力する第３のデコーダと、前記第３のデコード結果に基づき、前記第３の命令コードで規定される命令の実行制御を行う第２の実行制御手段とをさらに備え、前記実行条件判定手段は、前記第１のデコード結果により前記第１の命令コードが前記第１の命令実行条件とともに前記フラグ情報に基づく第２の命令実行条件を指定する実行条件指定命令コードであると判明した場合、前記フラグ情報が前記第２の命令実行条件を満足するか否かに基づき、前記第３の命令コードで規定される命令を実行するか抑止するかを制御する第２の命令実行抑止情報を前記第２の実行制御手段に出力し、前記第２の実行制御手段は、前記第２の命令実行抑止情報の指示に基づき、前記第３の命令コードで規定される命令の実行あるいは抑止制御を行ってもよい。
【図面の簡単な説明】
図１は、この発明の実施の形態１のデータ処理装置のレジスタセットを表す説明図である。
図２は、この発明の実施の形態１のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図３は、この発明の実施の形態１のデータ処理装置の命令フォーマットを示す説明図である。
図４は、この発明の実施の形態１のデータ処理装置のショートフォーマットの２オペランド命令の命令フォーマットを示す説明図である。
図５は、この発明の実施の形態１のデータ処理装置のショートフォーマットの分岐命令の命令フォーマットを示す説明図である。
図６は、この発明の実施の形態１のデータ処理装置のロングフォーマットの３オペランド命令やロード／ストア命令の命令フォーマットを示す説明図である。
図７は、この発明の実施の形態１のデータ処理装置の右コンテナにオペレーションコードを持つロングフォーマットの命令の命令フォーマットを示す説明図である。
図８は、この発明の実施の形態１のデータ処理装置の構成を示すブロック図である。
図９は、この発明の実施の形態１のデータ処理装置の第１演算部の詳細を示すブロック図である。
図１０は、この発明の実施の形態１のデータ処理装置のＰＣ部の詳細を示すブロック図である。
図１１は、この発明の実施の形態１のデータ処理装置の第２演算部の詳細ブロック図である。
図１２は、この発明の実施の形態１のデータ処理装置のパイプライン処理を示す模式図である。
図１３は、この発明の実施の形態１のデータ処理装置のロードオペランド干渉を起こす場合のパイプラインの状態を示す説明図である。
図１４は、この発明の実施の形態１のデータ処理装置の演算ハードウェア干渉を起こす場合のパイプラインの状態を示す説明図である。
図１５は、この発明の実施の形態１のデータ処理装置のＣＭＰＥＱ命令のビット割り付けを示す説明図である。
図１６は、この発明の実施の形態１のデータ処理装置のＣＭＰ命令のビット割り付けを示す説明図である。
図１７は、この発明の実施の形態１のデータ処理装置のショートフォーマットのＣＭＰＩ命令のビット割り付けを示す説明図である。
図１８は、この発明の実施の形態１のデータ処理装置のロングフォーマットのＣＭＰＩ命令のビット割り付けを示す説明図である。
図１９は、この発明の実施の形態１のデータ処理装置のＣＰＦＧ命令のビット割り付けを示す説明図である。
図２０は、この発明の実施の形態１のデータ処理装置のＰＳＷ部を示すブロック図である。
図２１は、この発明の実施の形態１のデータ処理装置の条件転送命令のビット割り付けを示す説明図である。
図２２は、この発明の実施の形態１のデータ処理装置のショートフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図２３は、この発明の実施の形態１のデータ処理装置のショートフォーマットの条件セット命令のビット割り付けを示す説明図である。
図２４は、この発明の実施の形態１のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図２５は、この発明の実施の形態１のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図２６は、この発明の実施の形態１のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図２７は、この発明の実施の形態１のデータ処理装置の制御部内の実行条件判定に関する部分を詳細に示したブロック図である。
図２８は、この発明の実施の形態１のデータ処理装置のＥＸＥＦ０Ｔ命令とＭＶ２Ｗ命令とを並列に実行する場合の命令コードを示す説明図である。
図２９は、この発明の実施の形態１のデータ処理装置のＥＸＥＴＡＴ命令とＳＴ命令とを並列に実行する場合の命令コードを示す説明図である。
図３０は、この発明の実施の形態１のデータ処理装置のプログラム例を示す説明図である。
図３１は、この発明の実施の形態１のデータ処理装置のプログラム例でループ内のリピートブロックの命令メモリの内容を示す説明図である。
図３２は、この発明の実施の形態１のデータ処理装置のプログラム例で内蔵データメモリ上のデータの割り付けを示す説明図である。
図３３は、この発明の実施の形態１のデータ処理装置の別のプログラム例を示す説明図である。
図３４は、この発明の実施の形態２のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図３５は、この発明の実施の形態２のデータ処理装置の実行条件指定命令の命令ビット割り付けを示す説明図である。
図３６は、この発明の実施の形態２のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図３７は、この発明の実施の形態２のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図３８は、この発明の実施の形態２のデータ処理装置の制御部内でフラグの更新及び実行条件判定を行う部分を詳細に示した模式図である。
図３９は、この発明の実施の形態３のデータ処理装置のショートフォーマットの比較命令のビット割り付けを示す説明図である。
図４０は、この発明の実施の形態４のデータ処理装置のショートフォーマットの比較命令のビット割り付けを示す説明図である。
図４１は、この発明の実施の形態４のデータ処理装置のロングフォーマットの比較命令のビット割り付けを示す説明図である。
図４２は、この発明の実施の形態４のデータ処理装置のＰＳＷ部のフラグ更新を行う部分を詳細に示したブロック図である。
図４３は、この発明の実施の形態５のデータ処理装置のプロセッサステータスワードの構成を示す説明図である。
図４４は、この発明の実施の形態５のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図４５は、この発明の実施の形態５のデータ処理装置のロングフォーマットの条件分岐命令のビット割り付けを示す説明図である。
図４６は、この発明の実施の形態５のデータ処理装置のロングフォーマットの条件セット命令のビット割り付けを示す説明図である。
図４７は、この発明の実施の形態５のデータ処理装置のＰＳＷ部のフラグ更新を行う部分を詳細に示したブロック図である。
図４８は、この発明の実施の形態６のデータ処理装置のプロセッサステータスワードの構成を示す図である。
図４９は、この発明の実施の形態６のデータ処理装置のＰＳＷ部のフラグ更新を行う部分を詳細に示したブロック図である。
図５０は、この発明の実施の形態７のデータ処理装置で用いる命令フォーマットを示す図である。
図５１は、この発明の実施の形態７のデータ処理装置の構成を示すブロック図である。
図５２は、この発明の実施の形態７のデータ処理装置の制御部の条件判定に関する部分の詳細を示すフロック図である。
図５３は、この発明の実施の形態８のデータ処理装置の実行条件指定命令のビット割り付けを示す説明図である。
図５４は、この発明の実施の形態８のデータ処理装置の制御部の実行条件判定に関する部分の詳細を示すブロック図である。
図５５は、この発明の実施の形態９のデータ処理装置の命令フォーマットを示す説明図である。
図５６は、この発明の実施の形態９のデータ処理装置の条件実行命令の命令ビット割り付けを示す説明図である。
発明を実施するための最良の形態
＜実施の形態１．＞
＜基本構成＞
本発明の実施の形態１であるデータ処理装置について説明する。本実施の形態で用いるデータ処理装置は、１６ビットプロセッサであり、アドレス及びデータのビット長は１６ビットとする。
図１に本データ処理装置のレジスタセットを示す。本データ処理装置は、ビット順、バイト順に関してビッグエンディアンを採用しており、ビット位置はＭＳＢがビット０になる。
１６本の汎用レジスタＲ０〜Ｒ１５はデータやアドレス値を格納する。レジスタＲ０〜Ｒ１４は汎用レジスタであり、レジスタＲ１３はサブルーチンジャンプ時の戻り先アドレスを格納するためのリンク（ＬＩＮＫ）レジスタとして割り当てられている。レジスタＲ１５はスタックポインタＳＰであり、割り込み用のスタックポインタＳＰＩとユーザ用のスタックポインタＳＰＵとが後で説明するプロセッサ・ステータス・ワードＰＳＷによって切り替えられる。以後、スタックポインタＳＰＩとＳＰＵとを総称して、スタックポインタＳＰと呼ぶ。
特別な場合を除き、４ビットのレジスタ指定フィールドでオペランドとなる各レジスタの番号が指定される。本データ処理装置では、例えば、レジスタＲ０とＲ１とのように２つのレジスタをペアにして、処理する命令を備えている。この場合、偶数番号のレジスタを指定し、このレジスタのペアとなるレジスタは、レジスタ番号を１プラスした奇数番号のレジスタが暗黙的に指定される。ＣＲ０〜ＣＲ３、ＣＲ７〜ＣＲ１１は各々１６ビットの制御レジスタである。各制御レジスタも、汎用レジスタと同様、通常レジスタの番号が４ビットで示される。レジスタＣＲ０は、プロセッサ・ステータス・ワード（ＰＳＷ）を格納し、データ処理装置の動作モードを指定するビットや演算結果を示すフラグからなる。
図２はレジスタＣＲ０内のＰＳＷの構成を示す図である。同図に示すように、ＰＳＷのビット番号０はスタックモードを示すＳＭビット４１である。ＳＭビット４１が“０”の場合は割り込みモードであることを示し、レジスタＲ１５としてスタックポインタＳＰＩが用いられる。“１”の場合はユーザーモードであることを示し、レジスタＲ１５としてスタックポインタＳＰＵが用いられる。ＰＳＷのビット番号５は割り込みイネーブルを指定するＩＥビット４２であり、“０”の場合は割り込みをマスク（アサートされても無視）し、“１”の場合は割り込みを受け付ける。本データ処理装置では、ゼロオーバーヘッドのループ処理を実現するためのリピート機能がインプリメントされている。ＰＳＷのビット番号６はリピート状態を示すＲＰビット４３であり、“０”の場合はリピート中でないことを、“１”の場合はリピート中であることを示す。また、本データ処理装置では、サーキュラーバッファをアクセスするためのアドレッシングであるモジュロアドレッシング機能がインプリメントされている。ＰＳＷのビット番号７はモジュロイネーブルを指定するＭＤビット４４であり、“０”の場合はモジュロアドレッシングをディスエーブル状態にし、“１”の場合はモジュロアドレッシングをイネーブル状態にする。ＰＳＷのビット番号８は、アキュムレータのデータフォーマットを指定するＦＸビット４５であり、“０”の場合は乗算結果を整数フォーマットでアキュムレータに格納し、“１”の場合は乗算結果を固定小数点フォーマットとして１ビット右にシフトしてアキュムレータに格納する。ＰＳＷのビット番号９はサチュレーションモードを指定するＳＴビット４６である。“０”の場合はアキュムレータに演算結果を格納する際、演算結果を４０ビットとして書き込む。“１”の場合はアキュムレータに演算結果を格納する際、３２ビットで表現できる値にリミット処理して書き込む。”ｈ’”を１６進表記とすると、演算結果がh'007fffffffより大きい値の場合には、アキュムレータにh'007fffffffを書き込み、演算結果がh'ff80000000より小さい値の場合には、アキュムレータにh'ff80000000を書き込む。ＰＳＷのビット番号１２は実行制御フラグ（Ｆ０フラグ）４７であり、比較命令の比較結果などがこのフラグにセットされる。ＰＳＷのビット番号１３も実行制御フラグ（Ｆ１フラグ）４８であり、比較命令等によりＦ０フラグ４７を更新する際に、更新前のＦ０フラグ４７の値が、Ｆ１フラグにコピーされる。ＰＳＷのビット番号１５はキャリー・フラグ（Ｃフラグ）４９であり、加減算命令実行時のキャリーがこのフラグにセットされる。
図１のレジスタＣＲ２はプログラムカウンタＰＣであり、実行中の命令アドレスを示す。本データ処理装置が処理する命令は、基本的に３２ビット固定長であり、ＰＣ（もしくはＣＲ２）は、３２ビットを１ワードとした命令ワードアドレスを保持する。
レジスタＣＲ１はバックアップ・プロセッサ・ステータス・ワード（ＢＰＳＷ）であり、例外や割り込みが検出された場合の実行中のプロセッサ・ステータス・ワードＰＳＷの値を退避・保持するためのレジスタである。レジスタＣＲ３はバックアップ・プログラム・カウンタ（ＢＰＣ）であり、プログラム・カウンタＰＣの値を待避・保持するためのレジスタである。レジスタＣＲ７〜ＣＲ９は、リピート関連のレジスタであり、リピート中であっても割り込みを受け付けられるように、ユーザーが値を読み書きできるようになっている。レジスタＣＲ７はリピート・カウンタ（ＲＰＴ＿Ｃ）であり、リピート回数を示すカウント値を保持する。レジスタＣＲ８はリピート・スタート・アドレス（ＲＰＴ＿Ｓ）であり、リピートを行うブロックの先頭の命令アドレスを保持する。レジスタＣＲ９はリピート・エンド・アドレス（ＲＰＴ＿Ｅ）であり、リピートを行うブロックの最後の命令のアドレスを保持する。
レジスタＣＲ１０，ＣＲ１１は、モジュロ・アドレッシングを行うための制御レジスタである。レジスタＣＲ１０は、モジュロ・スタート・アドレス（ＭＯＤ＿Ｓ）を、レジスタＣＲ１１は、モジュロ・エンド・アドレス（ＭＯＤ＿Ｅ）を保持する。レジスタＣＲ１０，ＣＲ１１は共に、最初と最終のデータ・ワード（１６ビット）・アドレスを保持する。インクリメントでモジュロアドレッシングを利用する場合には、モジュロ・スタート・アドレスＭＯＤ＿Ｓとして小さい方のアドレスが、モジュロ・エンド・アドレスＭＯＤ＿Ｅとして大きい方のアドレスがセットされ、インクリメントするレジスタ値がモジュロ・エンド・アドレスＭＯＤ＿Ｅと一致した場合、インクリメント結果として、モジュロ・スタート・アドレスＭＯＤ＿Ｓのアドレス値が、レジスタに書き戻される。
図１に４０ビットのアキュムレータＡ０、Ａ１を示す。各アキュムレータＡ０，Ａ１は、積和演算結果の上位１６ビットを保持するＡ０Ｈ、Ａ１Ｈ、積和演算結果の下位１６ビットを保持するＡ０Ｌ、Ａ１Ｌ、積和演算結果の上位からあふれたビットを保持する８ビットのガードビットＡ０Ｇ、Ａ１Ｇからなる。
本データ処理装置は２ウェイのＶＬＩＷ（Very Long Instruction Word）命令セットを処理する。図３は、本データ処理装置の命令フォーマットを示す。基本命令長は３２ビット固定であり、３２ビット境界に整置されている。各３２ビットの命令コードは、命令フォーマットを示す２ビットのフォーマット指定ビット（ＦＭビット）５１と、１５ビットの左コンテナ５２と右コンテナ５３から構成される。各コンテナ５２、５３はそれぞれ１５ビットからなるショートフォーマットのサブ命令を格納できるほか、２つで１つの３０ビットのロングフォーマットのサブ命令を格納できる。今後、簡単のため、ショートフォーマットのサブ命令をショート命令、ロングフォーマットのサブ命令をロング命令と呼ぶ。
ＦＭビット５１は命令のフォーマット及び２つのショート命令の実行順序を指定する。ＦＭビット５１が“１１”の場合は、コンテナ５２、５３の３０ビットで１つのロング命令を保持することを示し、それ以外の場合は各コンテナ５２、５３がそれぞれショート命令を保持することを示す。さらに、２つのショート命令を保持する場合、ＦＭビット５１で実行順序を指定する。 “００”のときは、２つのショート命令を並列に実行することを示す。“０１”のときは、左コンテナ５２に保持されているショート命令を実行した後に、右コンテナ５３に保持されているショート命令を実行することを示す。“１０”のときは、右コンテナ５３に保持されているショート命令を実行した後に、左コンテナ５２に保持されているショート命令を実行することを示す。このように、シーケンシャルに実行する２つのショート命令も含めて１つの３２ビット命令にエンコード出来るようにして、コード効率の向上を図っている。
図４〜図７に典型的な命令のビット割り付けの例を示す。図４は２つのオペランドを持つショート命令のビット割り付けを示す。フィールド６１、６４は、オペレーションコードフィールドである。フィールド６４に、アキュムレータ番号を指定する場合もある。フィールド６２、６３には、オペランドとして参照あるいは更新されるデータの格納位置を、レジスタ番号やアキュムレータ番号で指定する。フィールド６３は、４ビットの小さな即値を指定する場合もある。図５は、ショートフォーマットの分岐命令の割り付けを示しており、オペレーションコードフィールド７１と８ビットの分岐変位フィールド７２からなる。分岐変位は、ＰＣ値と同様、命令ワード（３２ビット）のオフセットで指定される。図６は、１６ビットの変位や即値を持つ３オペランド命令やロード／ストア命令のフォーマットを示しており、オペレーションコードフィールド８１、ショートフォーマットと同様レジスタ番号等を指定するフィールド８２、８３、１６ビットの変位や即値等を指定する拡張データフィールド８４とからなる。図７は、右コンテナ５３側にオペレーションコードを持つロングフォーマットの命令のフォーマットを示しており、２ビットのフィールド９１が“０１”になっている。９３と９６はオペレーションコードフィールドで、９４と９５はレジスタ番号等を指定するフィールドである。９２は予約フィールドであり必要に応じてオペレーションコードやレジスタ番号等の指定に使用される。
上述以外に、ＮＯＰ（ノー・オペレーション）のように、１５ビットすべてがオペレーションコードとなる命令や、１オペランド命令等、特殊な命令のビット割り付けを持つものもある。
本データ処理装置の各サブ命令は、ＲＩＳＣライクな命令セットとなっている。メモリデータのアクセスを行う命令はロード／ストア命令のみであり、演算命令はレジスタ／アキュムレータ中のオペランドや即値オペランドに対して演算を行う。オペランドデータのアドレッシングモードとしては、レジスタ間接モード、ポストインクリメント付きレジスタ間接モード、ポストデクリメント付きレジスタ間接モード、プッシュモード、レジスタ相対間接モードの５種類ある。各々のニーモニックは、”＠Ｒｓｒｃ”、”＠Ｒｓｒｃ＋”、”＠Ｒｓｒｃ−”、”＠−ＳＰ”、”＠（ｄｉｓｐ１６、Ｒｓｒｃ）”で示される。Ｒｓｒｃはベースアドレスを指定するレジスタ番号を、ｄｉｓｐ１６は１６ビットの変位値を示す。オペランドのアドレスはバイトアドレスで指定される。
レジスタ相対間接モード以外のモードは、図４に示す命令フォーマットとなる。フィールド６３でベースレジスタ番号が指定され、フィールド６２でメモリからロードしてきた値を書き込むレジスタの番号もしくはストアする値を保持するレジスタの番号が指定される。レジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなる。ポストインクリメント付きレジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ（バイト数）分ポストインクリメントされて、書き戻される。ポストデクリメント付きレジスタ間接モードは、ベースレジスタとして指定されたレジスタの値がオペランドアドレスとなり、このベースレジスタの値がオペランドのサイズ（バイト数）分ポストデクリメントされて、書き戻される。プッシュモードは、ストア命令で、かつ、ベースレジスタがレジスタＲ１５の場合にのみ使用可能であり、スタックポインタ（ＳＰ）値がオペランドのサイズ（バイト数）分プリデクリメントされた値が、オペランドアドレスとなり、デクリメントされた値がＳＰに書き戻される。
レジスタ相対間接モードは図６に示す命令フォーマットとなる。フィールド８３でベースレジスタ番号が指定され、フィールド８２でメモリからロードしてきた値を書き込むレジスタの番号もしくはストアする値を保持するレジスタの番号が指定される。フィールド８４はオペランド格納位置のベースアドレスからの変位値を指定する。レジスタ相対間接モードは、ベースレジスタとして指定されたレジスタの値に１６ビットの変位値を加算した値がオペランドアドレスとなる。
ポストインクリメント付きレジスタ間接モードとポストデクリメント付きレジスタ間接モードでは、ＰＳＷ中のＭＤビット４４を“１”に設定する事により、モジュロアドレッシングモードが使用できる。
ジャンプ命令のジャンプ先アドレス指定には、ジャンプ先アドレスをレジスタ値で指定するレジスタ間接と、ジャンプ命令のＰＣからの分岐変位で指定するＰＣ相対間接とがある。ＰＣ相対間接については、分岐変位を８ビットで指定するショートフォーマットと、分岐変位を１６ビットで指定するロングフォーマットの２種類ある。また、オーバーヘッドなしにループ処理を実現するリピート機能を起動するためのリピート命令も備える。
図８に本データ処理装置１００の機能ブロック構成を示す。データ処理装置１００は、ＭＰＵコア部１０１と、ＭＰＵコア部１０１からの要求により命令データのアクセスを行う命令フェッチ部１０２、内蔵命令メモリ１０３、ＭＰＵコア部１０１からの要求によりオペランドデータのアクセスを行うオペランドアクセス部１０４、内蔵データメモリ１０５、命令フェッチ部１０２とオペランドアクセス部１０４からの要求を調停し、データ処理装置１００の外部メモリのアクセス等を行う外部バスインターフェイス部１０６からなる。
ＭＰＵコア部１０１は、命令キュー１１１、制御部１１２、レジスタファイル１１５、第１演算部１１６、第２演算部１１７、ＰＣ部１１８からなる。
命令キュー１１１は、２エントリの３２ビット命令バッファと有効ビット、及び入出力ポインタ等からなり、ＦＩＦＯ（先入れ先出し）方式で制御される。命令キュー１１１は、命令フェッチ部１０２でフェッチされた命令データを一時保持し、制御部１１２に送る。
制御部１１２は、前述の命令キュー１１１の制御、パイプライン制御、命令の実行、命令フェッチ部１０２やオペランドアクセス部１０４とのインターフェイスなど、ＭＰＵコア部１０１のすべての制御を行う。また、制御部１１２には、命令キュー１１１から送られる命令コードをデコードするための命令デコード部１１９があり、２つのデコーダを含む。第１デコーダ１１３は、第１演算部１１６で実行する命令をデコードし、第２デコーダ１１４は、第２演算部１１７で実行する命令をデコードする。３２ビットの命令のデコードの第１サイクルでは、必ず左コンテナ５２（図３）の命令コードが第１デコーダ１１３で解析され、右コンテナ５３の命令コードが第２デコーダ１１４で解析される。従って、最初に実行する命令はその命令を実行する演算器に対応した位置に置かれなければならない。
ただし、ＦＭビット５１及び左コンテナ５２のビット０とビット１とのデータは両方のデコーダで解析される。また、拡張データの切り出しを行うために、右コンテナ５３のデータが第１デコーダ１１３に送られるが、解析を行われない。２つのショート命令をシーケンシャルに実行する場合、先行して実行される命令のデコード中に後で実行する側の命令が図示していないプリデコーダでデコードされ、どちらのデコーダでデコードすべきかを判定する。後で実行される命令がどちらのデコーダでも処理できる命令の場合は第１デコーダ１１３でデコードする。先行の命令のデコード後、後で実行する命令の命令コードが選択されたデコーダに取り込まれ、解析される。
レジスタファイル１１５は、レジスタＲ０〜Ｒ１５（図１）の値を保持し、第１演算部１１６、第２演算部１１７、ＰＣ部１１８、オペランドアクセス部１０４に複数のバスで結合されている。
図９に、第１演算部１１６の詳細ブロック構成を示す。第１演算部１１６は、レジスタファイル１１５と、各々Ｓ１バス３０１、Ｓ２バス３０２、Ｓ３バス３０３によって結合されており、これら３つのバス３０１〜３０２を介してレジスタファイル１１５からデータを読み出し、演算器等にリードオペランドとなるデータやストアデータを転送する。Ｓ１バス３０１は偶数番号のレジスタにのみに、Ｓ２バス３０２は奇数番号のレジスタにのみ結合されており、Ｓ１バス３０１とＳ２バス３０２でレジスタペアの２ワードを並列に転送することもできる。Ｓ３バス３０３は全レジスタに結合されている。
また、第１演算部１１６は、レジスタファイル１１５と、各々Ｄ１バス３１１、Ｗバス３１４で結合されており、Ｄ１バス３１１を介して演算結果や転送データをレジスタファイル１１５に転送し、Ｗバス３１４でロードしたバイトデータをレジスタファイル１１５に転送する。Ｄ１バス３１１、Ｗバス３１４とも、全レジスタに結合されている。さらに、レジスタファイル１１５はオペランドアクセス部１０４と３２ビットのＯＤバス３２２で結合されており、１ワードのデータもしくはレジスタペアの２ワードを並列に転送することが可能である。ＯＤバス３２２の上位／下位１６ビットは、任意のレジスタファイルに書き込みができるようにレジスタファイル１１５の全レジスタに結合されている。
ＡＡラッチ１５１、ＡＢラッチ１５２は、ＡＬＵ１５３の入力ラッチである。ＡＡラッチ１５１は、Ｓ１バス３０１、Ｓ２バス３０２もしくはＳ３バス３０３を介して読み出されたレジスタ値を取り込む。同ラッチ１５１は、ゼロクリアする機能も備えている。ＡＢラッチ１５２は、Ｓ３バス３０３を介して読み出されたレジスタ値もしくは第１デコーダ１１３でデコードの結果生成された１６ビットの即値を取り込み、また、ゼロクリアする機能も備えている。
ＡＬＵ１５３では、主として転送、比較、算術論理演算、オペランドアドレスの計算／転送、オペランドアドレス値のインクリメント／デクリメント、ジャンプ先アドレスの計算／転送等が行われる。演算結果やアドレスモディファイの結果はセレクタ１５５、Ｄ１バス３１１を介して、レジスタファイル１１５中の命令で指定されたレジスタに書き戻される。また、指定された条件が成立した場合には“１”を不成立の場合には“０”をレジスタに書き込む条件セット命令を実行するために、セレクタ１５５は演算結果の最下位ビットに制御部１１２から出力されたデータを埋め込む機能を備える。この場合、演算結果はゼロが出力されるように制御される。ＡＯラッチ１５４は、オペランドのアドレスを保持するラッチであり、ＡＬＵ１５３でのアドレス計算結果もしくはＡＡラッチ１５１に保持されたベースアドレスの値を選択的に保持し、ＯＡバス３２１を介してオペランドアクセス部１０４に出力する。また、ジャンプ先アドレスやリピートエンドアドレスを計算した場合には、ＡＬＵ１５３の出力が、ＪＡバス３２３を介してＰＣ部１１８に転送される。
ＭＯＤ＿Ｓ１５６とＭＯＤ＿Ｅ１５７とは、それぞれ図１のレジスタＣＲ１０及びＣＲ１１に相当する制御レジスタである。比較器１５８は、ＭＯＤ＿Ｅ１５７の値とＳ３バス３０３上のベースアドレスの値とを比較して比較結果を制御部１１２に送る。モジュロアドレッシングがイネーブル状態で、ポストインクリメント／デクリメント付きのレジスタ間接モードで、比較器１５８の比較結果が一致した場合には、ラッチ１５９に保持されているＭＯＤ＿Ｓ１５６の値がセレクタ１５５、Ｄ１バス３１１を介して、レジスタファイル１１５中のベースアドレスレジスタとして指定されたレジスタに書き戻される。
ストアデータ（ＳＤ）レジスタ１６０は、１６ビットのレジスタ２本からなり、Ｓ１バス３０１もしくはＳ２バス３０２の一方、もしくは、Ｓ１バス３０１とＳ２バス３０２の両方に出力されたストアデータを一時保持する。ＳＤレジスタ１６０に保持されたデータは、ラッチ１６１を介して整置回路１６２に転送される。整置回路１６２では、オペランドのアドレスに従って、ストアデータが３２ビット境界に整置され、ラッチ１６３、ＯＤバス３２２を介してオペランドアクセス部１０４に出力される。
また、オペランドアクセス部１０４でロードされたバイトデータは、ＯＤバス３２２を介して、１６ビットのロードデータ（ＬＤ）レジスタ１６４に取り込まれる。ＬＤレジスタ１６４の値は、ラッチ１６５を介して、整置回路１６６に転送される。整置回路１６６では、バイト整置及びバイトデータのゼロ／符号拡張を行う。整置、拡張後のデータが、Ｗバス３１４を介してレジスタファイル１１５中の指定されたレジスタに書き込まれる。１ワード（１６ビット）ロード、２ワード（３２ビット）ロードの場合にはＬＤレジスタを介さず、ＯＤバス３２２からレジスタファイル１１５にロードした値が直接書き込まれる。
制御部１１２中のＰＳＷ部１７１は図１のレジスタＣＲ０の値を保持するＰＳＷラッチ１７２や、ＰＳＷ更新回路等からなり、演算結果や命令の実行によりＰＳＷラッチ１７２の値を更新する。ＰＳＷラッチ１７２に値を転送する場合、Ｓ３バス３０３に出力されたデータがＴＰＳＷラッチ１６７を介して、必要なビット（アサインされているビット）のみ転送される。ＰＳＷラッチ１７２の値を読み出す場合には、ＰＳＷ部１７１からＤ１バス３１１に出力され、レジスタファイル１１５に書き込まれる。ＢＰＳＷラッチ１６８は図１のレジスタＣＲ１に相当するレジスタである。例外処理時には、Ｄ１バス３１１に出力されたＰＳＷの値がＢＰＳＷラッチ１６８に書き込まれる。ＢＰＳＷラッチの値をレジスタファイル１１５に転送する場合には、ＢＰＳＷラッチ１６８の値はＳ３バス３０３に読み出され、レジスタファイルなど必要な場所に転送される。アサインされていないビットは強制的にゼロがＳ３バス３０３に出力される。例外からの復帰時には、ＢＰＳＷラッチ１６８の値は、直接ＴＰＳＷラッチ１６７を介して、必要なビット（アサインされているビット）のみＰＳＷラッチ１７２に転送される。
図１０は、ＰＣ部１１８の詳細ブロック図である。命令アドレス（ＩＡ）レジスタ１８１は、次にフェッチする命令のアドレスを保持し、次にフェッチする命令のアドレスを命令フェッチ部１０２に出力する。引き続き後続の命令をフェッチする場合には、ＩＡレジスタ１８１からラッチ１８２を介して転送されたアドレス値がインクリメンタ１８３で１インクリメントされて、ＩＡレジスタ１８１に書き戻される。ジャンプやリピート等によりシーケンスが切り替わる場合には、ＩＡレジスタ１８１はＪＡバス３２３を介して転送されるジャンプ先アドレス、リピートブロック開始アドレスを取り込む。
ＲＰＴ＿Ｓレジスタ１８４、ＲＰＴ＿Ｅレジスタ１８６、ＲＰＴ＿Ｃレジスタ１８８はリピート制御用の制御レジスタであり、それぞれ図１のレジスタＣＲ８、レジスタＣＲ９、レジスタＣＲ７に対応する。ＲＰＴ＿Ｅレジスタ１８６はリピートを行うブロックの最終命令のアドレスを保持する。この最終アドレスは、リピート命令処理時に第１演算部１１６で計算され、ＪＡバス３２３を介してＲＰＴ＿Ｅレジスタ１８６に取り込まれる。比較機１８７は、リピートを行うブロックの最終命令のアドレスを保持するＲＰＴ＿Ｅレジスタ１８６の値と、フェッチアドレスを保持しているＩＡレジスタ１８１の値とを比較する。もし、リピート処理中であり、リピートする回数を保持するＲＰＴ＿Ｃレジスタ１８８の値が“１”でなく、かつ、２つのアドレスが一致した場合、ＲＰＴ＿Ｓレジスタ１８４に保持されているリピートを行うブロックの開始アドレスが、ラッチ１８５、ＪＡバス３２３を介して、ＩＡレジスタ１８１に転送される。リピートの終了アドレスの命令が実行されるたびに、ＲＰＴ＿Ｃレジスタ１８８の値は、ラッチ１８９を介してデクリメンタ１９０で“１”だけデクリメントされる。デクリメントした値が、“０”であった場合には、ＰＳＷ中のＲＰビット４３をクリアし、リピート処理を終了する。ＲＰＴ＿Ｓレジスタ１８４、ＲＰＴ＿Ｅレジスタ１８６、ＲＰＴ＿Ｃラッチ１８８は、Ｄ１バス３１１からの入力ポートとＳ３バス３０３への出力ポートを持ち、必要に応じてリピート時の初期設定や待避復帰が行なわれる。
実行ステージＰＣ（ＥＰＣ）１９４は実行中の命令のＰＣ値を保持し、次命令ＰＣ（ＮＰＣ）１９１は次に実行する命令のＰＣ値を保持する。ＮＰＣ１９１は、実行段階でジャンプが起こった場合、ＪＡバス３２３上のジャンプ先アドレス値を取り込み、リピートで分岐が起こった場合には、ラッチ１８５からリピートを行うブロックの先頭アドレスを取り込む。それ以外の場合には、ラッチ１９２を介して転送されたＮＰＣ１９１の値が、インクリメンタ１９３でインクリメントされ、ＮＰＣ１９１に書き戻される。サブルーチンジャンプ命令の場合には、ラッチ１９２の値が戻り先アドレスとしてＤ１バス３１１に出力され、レジスタファイル１１５中のリンクレジスタとして定義されているレジスタＲ１３に書き戻される。また、次の命令が実行状態に入る場合には、ラッチ１９２の値がＥＰＣ１９４に転送される。実行中の命令のＰＣ値を参照する場合には、ＥＰＣ１９４の値がＳ３バス３０３に出力され、第１演算部１１６に転送される。ＢＰＣ１９６は、図１で示したレジスタセットのレジスタＣＲ３に対応する。例外や割り込み等が検出された場合には、ＥＰＣ１９４の値がラッチ１９５を介してＢＰＣ１９６に転送される。ＢＰＣ１９６は、Ｄ１バス３１１からの入力ポートとＳ３バス３０３への出力ポートを持ち、必要に応じて待避復帰が行なわれる。
図１１に、第２演算部１１７の詳細ブロック図を示す。第２演算部１１７は、レジスタファイル１１５と、各々Ｓ４バス３０４、Ｓ５バス３０５で結合されており、この２つのバス３０４，３０５を介してデータをレジスタファイル１１５から読み出す。Ｓ４バス３０４とＳ５バス３０５でレジスタペアの２ワードを並列に転送することも可能である。また、第２演算部１１７は、レジスタファイル１１５と、Ｄ２バス３１２、Ｄ３バス３１３で結合されており、この２つのバス３１２，３１３を介してデータをレジスタファイル１１５内の各レジスタに書き込むことができる。Ｄ２バス３１２は偶数番号のレジスタのみに、Ｄ３バス３１３は奇数番号のレジスタのみに各々結合されている。Ｄ２バス３１２とＤ３バス３１３でレジスタペアの２ワードを並列に転送することもできる。
アキュムレータ２０８は、図１のアキュムレータＡ０，Ａ１の２本の４０ビットアキュムレータに相当する。
２０１は４０ビットのＡＬＵであり、ビット番号０からビット番号７までの８ビットがアキュムレータのガードビット用加算器、ビット番号８からビット番号２３までの１６ビットが算術論理演算器、ビット番号２４からビット番号３９までの１６ビットがアキュムレータの下位１６ビットを加算するための加算器になっており、４０ビットまでの加減算と、１６ビットの論理演算を行う。
Ａラッチ２０２、Ｂラッチ２０３は、ＡＬＵ２０１の４０ビット入力ラッチである。Ａラッチ２０２は、Ｓ４バス３０４からレジスタ値をビット番号８からビット番号２３の位置に取り込むか、シフタ２０４を介して、アキュムレータ２０８の値をそのままもしくは１６ビット算術右シフトした値を取り込む。シフタ２０５は、アキュムレータ２０８の値を配線２０６（ガードビット８ビット）、Ｓ４バス３０４（上位１６ビット）、Ｓ５バス３０５（下位１６ビット）を介して取り込むか、レジスタの値をＳ５バス３０５のみ、もしくは、Ｓ４バス３０４とＳ５バス３０５の両方を介して１６ビットもしくは３２ビットのデータを右詰めで取り込み、４０ビットに符号拡張する。シフタ２０５は、入力したデータを左３ビットから右２ビットの任意のシフト量で算術シフトし出力する。Ｂラッチ２０３は、Ｓ５バス３０５上のデータをビット番号８からビット番号２３の位置に取り込むか、乗算器の出力、もしくは、シフタ２０５の出力を取り込む。Ａラッチ２０２、Ｂラッチ２０３は、各々ゼロクリアしたり定数の値に設定したりする機能を持つ。
ＡＬＵ２０１の出力は、サチュレーション回路２０９に出力される。サチュレーション回路２０９は、上位１６ビット、もしくは、上位下位あわせた３２ビットにする際に、ガードビットを見て、各々１６ビットもしくは３２ビットで表現できる最大値もしくは最小値にクリッピングする機能を備える。もちろんそのまま出力する機能もある。サチュレーション回路２０９の出力は配線２０７に結合されている。
デスティネーションオペランドがアキュムレータ２０８の場合には、配線２０７の値がアキュムレータ２０８に書き込まれる。デスティネーションオペランドがレジスタの場合は、配線２０７の値が、Ｄ２バス３１２やＤ３バス３１３を介して、レジスタファイル１１５に書き込まれる。１ワード転送の場合にはデスティネーションレジスタの番号が偶数の場合Ｄ２バス３１２に、奇数の場合にはＤ３バス３１３に出力される。２ワード転送の場合には、上位側の１６ビットデータがＤ２バス３１２に、下位側のビットデータがＤ３バス３１３に出力される。また、転送命令、絶対値の計算、最大値設定命令や、最小値設定命令を実行するために、Ａラッチ２０２とＢラッチ２０３の出力が、配線２０７に結合されており、Ａラッチ２０２とＢラッチ２０３の値をアキュムレータ２０８やレジスタファイル１１５に転送することが可能である。
プライオリティエンコーダ２１０は、Ｂラッチ２０３の値を取り込み、固定小数点フォーマットの数を正規化するのに必要なシフト量を計算し、レジスタファイル１１５に書き戻すために結果をＤ２バス３１２もしくはＤ３バス３１３に出力する。
Ｘラッチ２１２、Ｙラッチ２１３は乗算器の入力レジスタであり、各々、Ｓ４バス３０４、Ｓ５バス３０５の１６ビットの値を取り込み、１７ビットにゼロ拡張もしくは符号拡張する機能を備える。乗算器２１１は、１７ビットｘ１７ビットの乗算器であり、Ｘラッチ２１２に格納された値とＹラッチ２１３に格納された値との乗算を行う。積和命令や積差命令の場合には、乗算結果はＰラッチ２１４に取り込まれ、Ｂラッチ２０３に送られる。乗算命令でデスティネーションオペランドがアキュムレータ２０８の場合には、乗算結果をアキュムレータ２０８に書き込む。
バレルシフタ２１５は、４０ビットもしくは１６ビットのデータに対して、左右１６ビットまでの算術／論理シフトが可能である。シフトデータは、アキュムレータ２０８の値もしくはＳ４バス３０４を介してレジスタの値がシフトデータ（ＳＤ）ラッチ２１７に取り込まれる。シフト量については、即値もしくはレジスタ値がＳ５バス３０５を介してシフト量（ＳＣ）ラッチ２１６に取り込まれる。バレルシフタ２１５はＳＤラッチ２１７のデータをＳＣラッチ２１６で指定されるシフト量だけ、オペレーションコードで指定されたシフトを行う。シフト結果は、サチュレーション回路２０９に出力され、ＡＬＵでの演算結果と同様、必要に応じてサチュレーションが行われ、配線２０７に出力される。配線２０７に出力された値は、アキュムレータ２０８もしくはＤ２バス３１２、Ｄ３バス３１３を介してレジスタファイル１１５に書き戻される。
即値ラッチ２１８は、第２デコーダ１１４で生成された６ビットの即値を１６ビットに拡張して保持し、Ｓ５バス３０５を介して演算器に転送する。ビット操作命令のビットマスクもここで生成される。
次に本データ処理装置のパイプライン処理について説明する。図１２はパイプライン処理を示す図である。本データ処理装置は、命令データのフェッチを行う命令フェッチ（ＩＦ）ステージ４０１、命令の解析を行う命令デコード（Ｄ）ステージ４０２、演算実行を行う命令実行（Ｅ）ステージ４０３、データメモリのアクセスを行うメモリアクセス（Ｍ）ステージ４０４、メモリからロードしたバイトオペランドをレジスタへ書き込むライトバック（Ｗ）ステージ４０５の５段のパイプライン処理を行う。Ｅステージ４０３での演算結果のレジスタへの書き込みはＥステージ４０３で完了し、ワード（２バイト）、２ワード（４バイト）ロード時のレジスタへの書き込みはＭステージ４０４で完了する。積和／積差演算に関しては、更に乗算と加算の２段のパイプラインで命令の実行を行う。後段の処理を命令実行２（Ｅ２）ステージ４０６と呼ぶ。連続する積和／積差演算を１回／１クロックサイクルのスループットで実行できる。
ＩＦステージ４０１では、主として命令のフェッチ、命令キュー１１１の管理、リピート制御が行われる。命令フェッチ部１０２、内蔵命令メモリ１０３、外部バスインターフェイス部１０６、命令キュー１１１、ＰＣ部１１８のＩＡレジスタ１８１、ラッチ１８２、インクリメンタ１８３、比較器１８７等や制御部１１３のＩＦステージ制御、命令フェッチ制御、ＰＣ部１１８制御等を行う部分が、このＩＦステージ４０１の制御で動作する。ＩＦステージ４０１は、Ｅステージ４０３のジャンプで初期化される。
フェッチアドレスは、ＩＡレジスタ１８１で保持される。Ｅステージ４０３でジャンプが起こるとＪＡバス３２３を介してジャンプ先アドレスを取り込み、初期化を行う。シーケンシャルに命令データをフェッチする場合には、インクリメンタ１８３でアドレスをインクリメントする。リピート処理中に、比較器１８７でＩＡレジスタ１８１の値とＲＰＴ＿Ｅ１８６の値が一致していることが検出され、かつ、ＲＰＴ＿Ｃの値が１でなければ、シーケンスの切り替え制御が行われる。この場合、ＲＰＴ＿Ｓ１８４に保持されている値がラッチ１８５、ＪＡバス３２３を介してＩＡレジスタ１８１に転送される。
ＩＡレジスタ１８１の値は命令フェッチ部１０２に送られ、命令フェッチ部１０２が命令データのフェッチを行う。対応する命令データが内蔵命令メモリ１０３にある場合には、内蔵命令メモリ１０３から命令コードを読み出す。この場合、１クロックサイクルで３２ビットの命令のフェッチを完了する。対応する命令データが内蔵命令メモリ１０３にない場合には、外部バスインターフェイス部１０６に命令フェッチ要求を出す。外部バスインターフェイス部１０６は、オペランドアクセス部１０４からの要求を調整し、命令の取り込みが可能になったら、外部のメモリから命令データを取り込み、命令フェッチ部１０２に送る。外部バスインターフェイス部１０６は、最小２クロックサイクルで外部メモリのアクセスを行うことが可能である。命令フェッチ部１０２は取り込まれた命令を、命令キュー１１１に転送する。命令キュー１１１は２エントリのキューになっており、ＦＩＦＯ制御で取り込まれた命令コードを、命令デコード部１１９に出力する。
Ｄステージ４０２では、命令デコード部１１９でオペレーションコードの解析を行い、第１演算部１１６、第２演算部１１７、ＰＣ部１１８等で命令の実行を行うための制御信号群を生成する。Ｄステージ４０２は、Ｅステージ４０３のジャンプで初期化される。命令キュー１１１から送られてくる命令コードが無効な場合には、アイドルサイクルとなり、有効な命令コードが取り込まれるまで待つ。Ｅステージ４０３が次の処理を開始できない場合には、演算器等に送る制御信号を無効化し、Ｅステージ４０３での先行命令の処理の終了を待つ。例えば、Ｅステージ４０３で実行中の命令がメモリアクセスを行う命令であり、Ｍステージ４０４でのメモリアクセスが終了していない場合にこのような状態になる。
Ｄステージ４０２では、シーケンシャル実行を行う２命令の分割や、２サイクル実行命令のシーケンス制御も行う。さらに、スコアボードレジスタ（図示せず）を用いたロードオペランドの干渉チェックや第２演算部１１７での演算器の干渉チェック等も行い、干渉が検出された場合には、干渉が解消されるまで制御信号の出力を抑止する。図１３は、ロードオペランド干渉の例を示す。ワードもしくは２ワードのロード命令の直後にロードするオペランドを参照する積和演算命令がある場合、レジスタへのロードが完了するまで、積和演算命令の実行開始を抑止する。この場合、メモリアクセスが１クロックサイクルで終了する場合でも、１クロックサイクルストールが起こる。バイトデータをロードする場合には、更にＷステージでレジスタファイルへの書き込みが完了するため、更に１サイクルストール期間が延びる。図１４は、演算ハードウェア干渉の例を示す。積和演算命令の直後に加算器を使用する丸め命令がある場合、先行の積和演算命令の演算が終了するまで丸め命令の実行開始を抑止する。この場合、１クロックサイクルストールが起こる。積和演算命令が連続する場合には、ストールは起こらない。
第１デコーダ１１３は、主として第１演算部１１６のすべて、ＰＣ部１１８のＩＦステージ４０１で制御される部分以外、レジスタファイル１１５のＳ１バス３０１、Ｓ２バス３０２、Ｓ３バス３０３への読み出し制御とＤ１バス３１１からの書き込み制御に関する実行制御信号を生成する。命令に依存するＭステージ４０４やＷステージ４０５での処理に必要な制御信号もここで生成され、パイプラインの処理の流れに付随して転送される。第２デコーダ１１４は、主として第２演算部１１７での実行制御、レジスタファイル１１５のＳ４バス３０４、Ｓ５バス３０５への読み出し制御とＤ２バス３１２、Ｄ３バス３１３からの書き込み制御に関する実行制御信号を生成する。
Ｅステージ４０３では、演算、比較、制御レジスタを含むレジスタ間転送、ロード／ストア命令のオペランドアドレス計算、ジャンプ命令のジャンプ先アドレスの計算、ジャンプ処理、ＥＩＴ（例外、割り込み、トラップの総称）検出と各ＥＩＴのベクタテーブルへのジャンプ等、メモリアクセスと積和／積差演算命令の加算処理を除く命令実行に関するほとんどすべての処理を行う。
割り込みイネーブルの場合の割り込みの検出は、必ず３２ビット命令の切れ目で行われる。３２ビット命令の中にシーケンシャルに実行する２つのショート命令がある場合に、この２つのショート命令間で割り込みを受け付けることはない。
Ｅステージ４０３で処理中の命令がオペランドアクセスを行う命令であり、Ｍステージ４０４でメモリアクセスが完了しない場合には、Ｅステージ４０３での完了は待たされる。ステージ制御は制御部１１２で行われる。
Ｅステージ４０３において、第１演算部１１６では、算術論理演算、比較、転送を行う。モジュロの制御を含むメモリオペランドのアドレスや、分岐先のアドレス計算もこのＡＬＵ１５３で行われる。オペランドとして指定されたレジスタの値が、Ｓ１バス３０１、Ｓ２バス３０２、Ｓ３バス３０３に読み出され、別途取り込まれる即値、変位等の拡張データとともに、ＡＬＵ１５３で演算が行われ、演算結果がＤ１バス３１１を介してレジスタファイル１１５に書き戻される。ロード／ストア命令の場合には、演算結果はＡＯラッチ１５４、ＯＡバス３２１を介して、オペランドアクセス部１０４に送られ、ジャンプ命令の場合には、ジャンプ先アドレスがＪＡバス３２３を介して、ＰＣ部１１８に送られる。ストアデータはＳ１バス３０１、Ｓ２バス３０２を介して、レジスタファイル１１５から読み出され、ＳＤレジスタ１６０、ラッチ１６１で保持され、整置回路１６６で整置が行われる。また、ＰＣ部１１８では、実行中の命令のＰＣ値の管理、次に実行する命令のアドレスの生成が行われる。第１演算部１１６、ＰＣ部１１８に含まれる制御レジスタ（アキュムレータを除く）とレジスタファイル１１５間の転送は、Ｓ３バス３０３、Ｄ１バス３１１を介して行われる。
Ｅステージ４０３において、第２演算部１１７では、算術論理演算、比較、転送、シフト他積和演算の加算以外のすべての演算実行が行われる。オペランドの値が、レジスタファイル１１５や即値レジスタ２１８、アキュムレータ２０８等から、Ｓ４バス３０４、Ｓ５バス３０５やその他の専用経路を介して各演算器に転送され、指定された演算を行い、アキュムレータ２０８やＤ２バス３１２、Ｄ３バス３１３を介してレジスタファイル１１５に書き戻される。
第１演算部１１６及び第２演算部１１７での演算結果によるＰＳＷ１７２中のフラグ値の更新制御も、Ｅステージ４０３で行われる。しかし、演算結果の確定がＥステージ４０３の遅い時期になるため、実際のＰＳＷ１７２の値の更新は、次サイクルで行われる。データ転送によるＰＳＷ１７２の更新は、対応するサイクルで完了する。
第２デコーダ１１４で生成された積和／積差演算の加減算実行のための演算制御信号は、Ｅステージ４０３制御のもとに保持される。メモリアクセス情報、ロードレジスタ情報は、Ｍステージ４０４に送られる。Ｅステージ４０３のステージ制御も制御部１１２に行われる。
Ｍステージ４０４では、第１演算部１１６から送られたアドレスでオペランドのメモリアクセスが行われる。オペランドアクセス部１０４は、オペランドが内蔵データメモリ１０５やチップ内ＩＯ（図示せず）にある場合には、内蔵データメモリ１０５やチップ内ＩＯに対し、１クロックサイクルでメモリのリードもしくはライトを行う。オペランドが内蔵データメモリ１０５やチップ内ＩＯでない場合には、外部バスインターフェイス部１０６にデータアクセス要求を出す。外部バスインターフェイス部１０６は、外部のメモリに対してデータアクセスを行い、ロードの場合には読み出されたデータをオペランドアクセス部１０４に転送する。外部バスインターフェイス部１０６は、最小２クロックサイクルで外部メモリのアクセスを行うことが可能である。ロードの場合には、オペランドアクセス部１０４は読み出されたデータを、ＯＤバス３２２を介して転送する。バイトデータの場合はＬＤレジスタ１６４に、ワードもしくはダブルワードデータの場合にはレジスタファイル１１５に直接書き込む。ストアの場合には、整置されたストアデータの値が、整置回路１６２からＯＤバス３２２を介してオペランドアクセス部１０４に転送され、対象となるメモリへの書き込みが行われる。Ｍステージ４０４のステージ制御も制御部１１２で行われる。
Ｗステージ４０５において、ＬＤレジスタ１６４に保持されたロードオペランド（バイト）は、ラッチ１６５で保持され、整置回路１６６で整置、ゼロ／符号拡張された後に、Ｗバス３１４を介してレジスタファイル１１５へ書き込まれる。
Ｅ２ステージ４０６では、積和／積差演算の加減算処理をＡＬＵ２０１で行い、加減算結果をアキュムレータ２０８に書き戻す。
本データ処理装置は、入力クロックに基づいて同一周波数の非重複２相のクロック信号を生成し、内部制御に使用する。最短の場合、各パイプラインステージは、内部の１クロックサイクルで処理を終了する。ここでは、クロック制御の詳細については、本発明に直接関係ないので説明を省略する。
各サブ命令の処理例について説明する。加減算、論理演算、比較等の演算命令やレジスタ間の転送命令は、ＩＦステージ４０１、Ｄステージ４０２、Ｅステージ４０３の３段で処理を終了する。演算やデータ転送をＥステージ４０３で行う。
積和／積差命令は、乗算を行うＥステージ４０３と加減算を行うＥ２ステージの２クロックサイクルで演算実行を行うため、４段の処理となる。
バイトロード命令は、ＩＦステージ４０１、Ｄステージ４０２、Ｅステージ４０３、Ｍステージ４０４、Ｗステージ４０５の５段で処理を終了する。ワード／２ワードロードやストア命令は、ＩＦステージ４０１、Ｄステージ４０２、Ｅステージ４０３、Ｍステージ４０４の４段で処理を終了する。
非整置アクセスの場合には、オペランドアクセス部１０４でＭステージ４０４の制御のもと２回のアクセスに分割され、メモリアクセスが行われる。
実行に２サイクルかかる命令では、第１、第２命令デコーダ１１３、１１４で、２サイクルかけて処理し、各サイクル毎に各々実行制御信号を出力し、２サイクルかけて演算実行を行う。
ロング命令は、１つの３２ビット命令が１つのロング命令で構成されており、この１つのロング命令の処理で３２ビット命令の実行が完了する。パラレル実行する２つの命令は、２つのショート命令で処理サイクルの大きい方の命令の処理に律速される。例えば、２サイクル実行の命令と１サイクル実行の命令の組み合わせの場合には、２サイクルかかる。シーケンシャル実行の２つのショート命令の場合には、各サブ命令の組み合わせになり、デコード段階で各命令がシーケンシャルにデコードされ、実行される。例えば、Ｅステージ４０３で１サイクルで実行が完了する加算命令が２つの場合には、Ｄステージ４０２、Ｅステージ４０３とも各命令に１サイクル、計２サイクルかけて処理する。Ｅステージ４０３における先行命令の実行と並列して、Ｄステージ４０２で後続命令のデコードが行われる。
＜フラグ＞
次に、本発明の実施の形態１であるデータ処理装置のフラグの更新、及び、条件実行の詳細について説明する。
まず、本データ処理装置のフラグの更新について詳しく述べる。本データ処理装置は、図２に示すようにＰＳＷ中にＦ０フラグ４７、Ｆ１フラグ４８、キャリー（Ｃ）フラグ４９の３つの演算結果を示すフラグを備える。Ｃフラグ４９は加減算命令等通常の演算命令で変化するが、Ｆ０フラグ４７は、命令の実行条件として参照されるため比較命令等限定された命令でのみ変化する。Ｆ１フラグ４８はＦ０フラグ４７を更新する場合に、更新前のＦ０フラグ４７の値をＦ１フラグ４８に転送する。
Ｆ０フラグ４７を更新する命令には、レジスタ値やアキュムレータ値と、レジスタ値、アキュムレータ値もしくは即値とを比較する比較命令、レジスタ中の指定されたビットが“０”であるか“１”であるかをテストするビットテスト命令、レジスタ中の指定されたビットフィールドがオール“０”であることを、あるいは、オール“１”であることをテストするビットフィールドテスト命令等比較結果でフラグを更新するものがある。また、レジスタ値やアキュムレータ値の絶対値を計算する命令や最大値／最小値をセットする命令等、条件判定を含む複合演算を行う演算でもフラグが変化する。Ｆ０フラグ４７の更新時には更新前のＦ０フラグ４７の内容がＦ１フラグ４８にコピーされる。これ以外のロード、ストア、転送、算術論理演算、シフト等の命令では、Ｆ０フラグ４７、Ｆ１フラグ４８の値は変化しない。
フラグをセットする条件はフラグをセットする命令で指定する。たとえば、レジスタに保持された２つの１６ビット符号付き数の大小判定を行う比較命令には、２つの値が一致する場合にＦ０フラグ４７をセットするＣＭＰＥＱ命令と、第１の値が第２の値より小さい場合にＦ０フラグ４７をセットするＣＭＰ命令の２種類の命令がある。
図１５はＣＭＰＥＱ命令のビット割り付けを、図１６はＣＭＰ命令のビット割り付けを示す。これらの命令は、図４に示したショート命令のフォーマットを持ち、５０１、５０４、５０６、５０９はオペレーションコードである。ＣＭＰＥＱ命令では、Ｒｓｒｃ１フィールド５０２で指定されるレジスタの値とＲｓｒｃ２フィールド５０３で指定されるレジスタの値とが一致した場合に、Ｆ０フラグ４７に１をセットし、不一致の場合にはＦ０フラグ４７に０をセットする。また、ＣＭＰ命令では、Ｒｓｒｃ１フィールド５０７で指定されるレジスタの値がＲｓｒｃ２フィールド５０８で指定されるレジスタの値より小さい場合に、Ｆ０フラグ４７に１をセットし、それ以外の場合にはＦ０フラグ４７に０をセットする。
また、ＣＭＰ命令のＲｓｒｃ２のかわりに、即値を用いるＣＭＰＩ命令がある。−８から７までの４ビットの即値を指定するショートフォーマットの命令のビット割り付けを図１７に、１６ビットの即値を指定するロングフォーマットの命令のビット割り付けを図１８に示す。各々ｉｍｍ４フィールド５１３とｉｍｍ１６フィールド５１９で即値を指定し、Ｒｓｒｃフィールド５１２、５１７で指定されるレジスタ値との比較を行う。ＣＭＰＥＱ命令も即値と比較する命令（フォーマット）を持つ。このほか符号なし数の比較、アキュムレータ値の比較等多くの比較命令、フォーマットを備える。このように、効率よくデータ処理を行うために、限定された命令とはいえ、多くのフラグを更新する命令を備える。
また、本データ処理装置は、Ｆ０フラグ４７、Ｆ１フラグ４８、Ｃフラグ４９のいずれかの内容をＦ０フラグ４７もしくはＦ１フラグ４８をコピーするＣＰＦＧ命令を備えている。図１９にＣＰＦＧ命令のビット割り付けを示す。Ｆｓｒｃフィールド５４５で指定されるフラグの内容がＦｄｅｓｔフィールド５４３で指定されるフラグにコピーされる。
図２０に、ＰＳＷ部１７１のフラグ更新部分のみを表した図を示す。モードビット等は特に本発明とは直接関係がないので説明を省略する。また、簡単のため、ラッチ、セレクタ等の制御信号やクロック信号も省略し、データの流れに着目したブロック図で示している。
フラグ更新制御部５２１は、ラッチのイネーブル信号の生成、セレクタの選択信号生成等、フラグの更新制御を行う。制御部１１２内の第１デコーダ１１３、第２デコーダ１１４から命令の実行に伴うフラグの更新情報を取り込む。また、制御部１１２内のパイプライン制御やＥＩＴ制御を行う部分（図示せず）から、命令実行状態情報やＥＩＴ処理に伴うＰＳＷの更新制御情報を取り込む。これらの情報から、ラッチのイネーブル信号、セレクタの選択信号等を生成し、フラグの更新を制御する。
Ｆ０ラッチ５３３、Ｆ１ラッチ５３４及びＣラッチ５３５は各々アーキテクチャ上のＦ０フラグ４７、Ｆ１フラグ４８及びＣフラグ４９を物理的に保持するラッチである。
Ｆ０更新部５２４、Ｆ１更新部５２５及びＣ更新部５２６は、それぞれＦ０フラグ４７、Ｆ１フラグ４８及びＣフラグ４９の演算結果に伴う更新、命令実行に伴う更新を行う。ショートフォーマットの比較命令、加減算命令は、第１演算部１１６及び第２演算部１１７の両方で実行できる。第１演算部１１６及び第２演算部１１７のフラグの更新に必要な演算結果情報は、それぞれラッチ５２２、５２３に取り込まれ、Ｆ０更新部５２４、Ｃ更新部５２６に送られる。
また、第１デコーダ１１３及び第２デコーダ１１４から、どの演算結果やフラグに基づいて各フラグを生成するかに関する情報を有する第１及び第２のデコード結果がＦ０更新部５２４、Ｆ１更新部５２５、Ｃ更新部５２６にそれぞれ送られる。制御部１１２から、命令実行状態情報やＥＩＴ処理に伴うＰＳＷの更新制御情報がＦ０更新部５２４、Ｆ１更新部５２５、Ｃ更新部５２６にそれぞれ送られる。
ＰＳＷ部１７１は、Ｆ０フラグ４７の更新時には更新前のＦ０フラグ４７の内容をＦ１フラグ４８に転送し、更新を行わない場合には、各フラグの更新部には更新前の値をそのまま出力するように動作する。この動作を実現するため、Ｆ０更新部５２４にはＦ０ラッチ５３３の値が、Ｆ１更新部５２５にはＦ０ラッチ５３３及びＦ１ラッチ５３４の値が、Ｃ更新部５２６にはＣラッチ５３５の値が、それぞれ入力される。
Ｆ０更新部５２４、Ｆ１更新部５２５及びＣ更新部５２６は、有効な命令を実行した場合に、デコード結果、演算結果及び状態制御情報からなるフラグ更新関連情報と更新前のフラグ情報とに基づいてフラグの生成を行う。
比較／演算命令等のフラグ更新命令の実行によるフラグの更新は、演算結果の確定が遅れるため、Ｅステージ４０３での処理サイクルの後半から、次サイクルの前半で行われる。フラグ更新しない場合には、更新前の値をそのまま出力する。Ｆ０更新部５２４、Ｆ１更新部５２５、Ｃ更新部５２６で生成された情報は、各々ラッチ５２７、５２８、５２９に保持される。命令でＰＳＷ２１の値を読み出す場合やＥＩＴ起動時にＰＳＷ２１の値を待避する場合には、これらのラッチの出力がＤ１バス３１１に出力される。また、後述の命令の実行条件判定を行うために、ラッチ５２７、５２８の出力は制御部１１２内の第１実行条件判定部６０１、第２実行条件判定部６０２にも出力される。条件判定の詳細は後述する。
セレクタ５３０、５３１、５３２は、それぞれＦ０ラッチ５３３、Ｆ１ラッチ５３４、Ｃラッチ５３５の更新データを選択する。演算結果でフラグを更新する場合には、それぞれラッチ５２７、５２８、５２９の出力を選択する。命令でデータとしてＰＳＷに値を設定するＰＳＷへの転送命令の場合には、ＴＰＳＷ１６７の値を選択する。ＣＰＦＧ命令でフラグのコピーを行う場合には、ソースとして選択されたフラグのラッチ（５２７〜５２９のいずれか１つ）が、デスティネーションとして指定されたフラグに対応するセレクタ５３０もしくはセレクタ５３１で選択される。ＥＩＴ起動時には、全フラグの値はゼロクリアされるので、０が選択される。選択されたデータでＦ０ラッチ５３３、Ｆ１ラッチ５３４、Ｃラッチ５３５の更新を行う。各フラグは更新が必要な場合にのみ値が更新され、更新の必要がない場合には前の値を保持する。
前述のように、演算結果の確定が遅れる場合があるので、演算結果でフラグを更新する場合は、演算／比較命令を実行するＥステージ４０３の次サイクルで更新が行われるが、ＣＰＦＧ命令、ＰＳＷへの転送命令、ＥＩＴからの復帰命令実行時には、Ｅステージ４０３で更新が完了する。この場合は、次サイクルでの演算結果によるフラグの更新は抑止される。すなわち、ＣＰＦＧ命令、ＰＳＷへの転送命令、ＥＩＴからの復帰命令等と演算／比較命令が並列に実行された場合には、ＣＰＦＧ命令、ＰＳＷへの転送命令に関するフラグの更新が優先される。フラグの値はＥステージ４０３で参照されるが、更新部５２４〜５２６での更新後の値を保持するラッチ５２７〜５２９の値が参照されるので、いずれの場合でも更新直後に参照を行っても正しく動作する。
以上のような構成で所望のフラグの更新を実現している。比較結果でＦ０フラグ４７を更新する場合には、デコード結果と演算結果に基づいてＦ０更新部５２４で更新値が生成され、Ｆ０ラッチ５３３に取り込まれる。Ｆ１更新部５２５では、更新前のＦ０ラッチ５３３の値がそのまま出力され、Ｆ１ラッチ５３４に取り込まれる。
このように、実施の形態１のデータ処理装置は、命令でどのフラグを更新するのかを指定することなく、２つの比較、演算結果をＦ０フラグ４７及びＦ１フラグ４８に保持することができる。その結果、命令コード中にどのフラグを更新するのかを指定するフィールドが不要になるため、短いオペレーションコードで多くの命令をエンコードでき、コード効率が向上する。
比較命令は、様々な制御を行うプログラムにおいて実行頻度の非常に高い命令であり、一般的に命令数も多いため、コード効率の向上に対する寄与は大きい。フラグの更新部分はやや複雑な構成になってはいるが、Ｆ１フラグ４８の追加によるハードウェアの増加量は非常に少ない。
次に、条件実行について詳しく説明する。本発明のデータ処理装置がインプリメントしている条件実行を行う命令は、自命令で指定した条件に基づき条件実行を行う条件実行命令（以後単に条件実行命令と書いた場合には、この命令を指すものとする）、自命令で指定した条件の成立（真）／不成立（偽）に基づき異なる値をセットする条件セット命令と、並列に実行するペアの命令の実行条件を指定する実行条件指定命令の３つに大別できる。
上記した条件実行命令及び条件セット命令は、フラグの内容に基づき実行内容が決定されるフラグ制御実行命令と言える。
ショートフォーマットの条件実行命令、条件セット命令は、オペレーションコードの制限から、条件実行を行う頻度の高い命令に対してのみインプリメントしており、Ｆ０フラグ４７のみが参照可能となっている。各オペレーションについて、Ｆ０フラグ４７が“１”の場合に実行する命令とＦ０フラグが“０”の場合に実行する命令の２種類の命令を備える。条件実行命令には、例えば、条件転送命令、条件分岐命令等がある。
図２１に条件転送命令のビット割り付けを示す。Ｃフィールド５５４が“０”のＭＶＦ０Ｆ命令では、Ｆ０フラグ４７が“０”の場合にのみ、Ｒｓｒｃフィールド５５３で指定されるレジスタの値がＲｄｅｓｔフィールド５５２で指定されるレジスタに転送され、Ｆ０フラグ４７が“１”の場合には、転送を行わない。逆に、Ｃフィールド５５４が“１”のＭＶＦ０Ｔ命令では、Ｆ０フラグ４７が“１”の場合にのみ、Ｒｓｒｃフィールド５５３で指定されるレジスタの値がＲｄｅｓｔフィールド５５２で指定されるレジスタに転送され、Ｆ０フラグ４７が“０”の場合には、転送を行わない。図中の条件において、“＝＝”は一致した場合に真、不一致の場合に偽となることを示す。条件が真の（成立した）場合のみ、オペレーションを実行することを示す。（以下同様）
図２２にショートフォーマットの条件分岐命令のビット割り付けを示す。Ｃフィールド５５７が“０”のＢＲＦ０Ｆ命令では、Ｆ０フラグ４７が“０”の場合にのみ、分岐先アドレスに分岐する。分岐先アドレスは、ｄｉｓｐ８フィールド５５８で指定された８ビットの分岐変位フィールドの値を１６ビットに符号拡張後、条件分岐命令のＰＣ値と加算することにより計算される。Ｆ０フラグ４７が“１”の場合には、分岐を起こさず条件分岐命令に引き続くシーケンスの命令の実行を継続する。ＪＡバス３２３を介したジャンプ先アドレスの転送も抑止される。逆に、Ｃフィールド５５７が“１”のＢＲＦ０Ｔ命令では、Ｆ０フラグ４７が“１”の場合にのみ、分岐が起こる。
図２３にショートフォーマットの条件セット命令のビット割り付けを示す。この命令は、条件実行命令とは異なり条件が不成立の場合にも命令の実行が行われる。Ｃフィールド５６４が“０”のＳＥＴＦ０Ｆ命令では、Ｆ０フラグ４７が“０”の場合には、Ｒｄｅｓｔフィールド５６２で指定されるレジスタに１を、Ｆ０フラグ４７が“１”の場合には“０”をセットする。逆に、Ｃフィールド５６４が“１”のＳＥＴＦ０Ｔ命令では、Ｆ０フラグ４７が“１”の場合には、Ｒｄｅｓｔフィールド５６２で指定されるレジスタに“１”を、Ｆ０フラグ４７が“０”の場合には“０”をセットする。
ロングフォーマットの条件実行命令、条件セット命令は、オペレーションコードに余裕があるので、各オペレーションについて、１４通りの条件が指定可能になっている。Ｆ０フラグ４７とＦ１フラグ４８との２つのフラグが実行条件として参照可能であり、いずれか一方のフラグで条件を指定できるだけでなく、２つのフラグの複合条件（論理和、論理積、排他的論理和）も指定可能である。さらに、２つのフラグの複合条件をとる際に、各フラグの反転を参照することもできる。排他的論理和の場合は、ＸＯＲとＸＮＯＲが指定できればよいので、条件は２つになっている。
ロングフォーマットの条件実行命令には、例えば、条件分岐命令がある。図２４にロングフォーマットの条件分岐命令のビット割り付けを示す。フラグオペレーション（Ｆ−ｏｐ）フィールド５７２、Ｆ０フィールド５７３、Ｆ１フィールド５７５で分岐条件を指定する。Ｆ−ｏｐフィールド５７２では、２つのフラグの複合条件を指定する。“００”は論理積を、“０１”は論理和を、“１０”は排他的論理和を示す。Ｆ０フィールド５７３、Ｆ１フィールド５７５では、各フラグの参照方法を指定する。“００”は反転を参照し、“０１”はそのままの値を参照することを示す。“１０”はフラグの値によらず常に真であることを示す。１つのフラグを参照する場合には、フラグのオペレーションとして論理積が指定され、条件に関与しない側のフラグのフィールドで“１０”（常に真）が指定される。１４通りの条件に応じて、１４個の命令が存在する。例えば、ＢＲＴＡＴ命令では、Ｆ０フラグ４７が“１”で、かつ、Ｆ１フラグ４８が“１”の場合に分岐が起こる。条件が不成立の場合には、分岐が起こらない。分岐先アドレスは、条件分岐命令のＰＣ値に、ｄｉｓｐ１６フィールド５７６で指定された１６ビットの分岐変位フィールドの値を加算することにより計算される。
図２５にロングフォーマットの条件セット命令のビット割り付けを示す。フラグオペレーション（Ｆ−ｏｐ）フィールド８５２、Ｆ０フィールド８５３、Ｆ１フィールド５８５でセット条件を指定する。１４通りの条件に応じて、１４個の命令が存在する。例えば、ＳＥＴＦＲＴ命令では、Ｆ０フラグ４７が“０”、あるいは、Ｆ１フラグ４８が“１”の場合は、Ｒｄｅｓｔフィールド５８７で指定されるレジスタに“１”を、それ以外の場合には“０”をセットする。このように、Ｆ０フラグ４７とＦ１フラグ４８とからなる複合条件の成立／不成立に基づき、所定の格納領域に第１の値／第２の値を書き込むという、高度な条件セット命令を実行可能にすることにより、より性能が高いデータ処理装置を得ることができる。
次に、実行条件指定命令について説明する。実行条件指定命令はショート命令であり、２つのショート命令を並列に実行する場合にのみ有効な動作を行う。この実行条件指定命令が命令コード中の左コンテナ５２に配置された場合には、右コンテナ５３に配置された第２演算部１１７等で実行され、命令の実行条件が指定される。実行条件指定命令が命令コード中の右コンテナ５３に配置された場合には、左コンテナ５２に配置された第１演算部１１６、ＰＣ部１１８等で実行される命令の実行条件が指定される。転送、演算、ジャンプ、ロード／ストア、トラップ等すべてのショート命令との並列実行が可能であり、この１つの命令を備えることにより様々なオペレーションの条件実行が可能となる。
図２６に実行条件指定命令のビット割り付けを示す。フラグオペレーション（Ｆ−ｏｐ）フィールド５９２、Ｆ０フィールド５９３、Ｆ１フィールド５９５で実行条件を指定する。１４通りの条件に応じて、１４個の命令が存在する。例えば、ＥＸＥＴＸＴ命令では、Ｆ０フラグ４７の値とＦ１フラグ４８の値が異なる場合に、ペアのコンテナに格納されている命令の実行を行い、それ以外の場合にはペアのコンテナに格納されている命令の実行を抑止する。
図２７に制御部１１２内に実行条件判定に関する部分を抜き出したブロック図を示す。図２０で示したように、Ｆ０フラグ４７、Ｆ１フラグ４８の値がＰＳＷ部１７１から第１実行条件判定部６０１、第２実行条件判定部６０２に出力される。第１デコーダ１１３でのデコード結果のうち命令の実行に必要な制御信号（実行制御情報）は第１実行制御部６０３に出力され、第２デコーダ１１４でのデコード結果における実行制御情報は第２実行制御部６０４に出力される。第１実行制御部６０３と第２実行制御部６０４との出力に基づいて、演算器やレジスタファイル等で各命令が実行される。
第１デコーダ１１３でデコードした命令が自命令の実行条件を指定する条件実行命令の場合について説明する。第１デコーダ１１３では条件が成立した場合に行う処理に必要な実行制御情報が生成され、第１実行制御信号生成部６０３に送られ、条件実行命令の実行条件が第１実行条件判定部６０１に出力され、第１実行条件判定部６０１はフラグ情報と実行条件とに基づいて実行条件判定を行う。
第１実行条件判定部６０１は、条件実行命令で実行条件が不成立の場合には、実行抑止信号６１１をアサートする。すると、第１実行制御信号生成部６０３はユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。例えば、レジスタファイル１１５の更新、その他のユーザーから見える制御レジスタの更新、ＰＳＷ１７２の更新、データメモリアクセス要求のアサート、Ｍステージ４０４への処理の発行、内部ジャンプ信号のアサート、ＪＡバス３２３を介したジャンプ先アドレスの転送、命令の実行に伴う例外やトラップの起動等を制御する制御信号がネゲートされる。ただし、タイミング的に命令の実行開始を抑止することは困難なので、演算等は開始しており、演算器の入力ラッチ等内部的なテンポラリラッチの値は更新される。消費電力低減の観点からは電力消費の大きい処理は抑止した方がよいが、機能的には最低限ユーザーとして見える状態の更新のみを抑止すればよい。
一方、第１実行条件判定部６０１は、条件実行命令で実行条件が成立した場合には、実行抑止信号６１１をアサートしない。したがって、第１デコーダ１１３の実行制御情報に基づく第１実行制御信号生成部６０３で生成された実行制御信号によって命令が実行される。
次に、第１デコーダ１１３でデコードした命令が並列に実行するペアの命令の実行条件を指定する実行条件指定命令の場合について説明する。この場合、第２デコーダ１１４では有効な命令のデコードが行われ、命令実行に必要な実行制御情報が第２実行制御部６０４に出力される。実行条件指定命令で規定する実行条件が第１実行条件判定部６０１に出力され、第１実行条件判定部６０１はフラグ情報に基づいて実行条件の判定を行う。
第１実行条件判定部６０１は、実行条件指定命令の実行条件が不成立の場合には、実行抑止信号６１２をアサートする。すると、第２実行制御信号生成部６０４は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。例えば、レジスタファイル１１５やアキュムレータ２０８、ＰＳＷ１７２の更新等を制御する制御信号がネゲートされる。タイミング的に命令の実行開始を抑止することは困難なので、演算等は開始しており、演算器の入力ラッチ等内部的なテンポラリラッチの値は更新される。ユーザーから見える状態の更新のみを抑止する。
一方、第１実行条件判定部６０１は、実行条件指定命令で実行条件が成立した場合には、実行抑止信号６１２をアサートしない。したがって、第２デコーダ１１４からの実行制御情報に基づき第２実行制御信号生成部６０４で生成された実行制御信号によって命令が実行される。いずれの場合も、実行条件指定命令自体は、何のオペレーションも行わず、第１デコーダ１１３から第１実行制御部６０３にＮＯＰ（ノーオペレーション）命令と同じ実行制御情報が送られる。
第２デコーダ１１４でデコードした命令が自命令の実行条件を指定する条件実行命令の場合には、第２実行条件判定部６０２で実行条件の判定が行われる。第２実行条件判定部６０２は、実行条件が不成立の場合には、実行抑止信号６１３をアサートする。すると、第２実行制御信号生成部６０４は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。
一方、第２実行条件判定部６０２は、実行条件が成立した場合には、実行抑止信号６１３をアサートしない。したがって、第２デコーダ１１４から出力された実行制御情報に基づき第２実行制御信号生成部６０４で生成された実行制御信号によって、命令が実行される。
第２デコーダ１１４でデコードした命令が並列に実行するペアの命令の実行条件を指定する実行条件指定命令の場合には、第２実行条件判定部６０２で実行条件の判定が行われる。
第２実行条件判定部６０２は、実行条件が不成立の場合には、実行抑止信号６１４をアサートする。すると、第１実行制御信号生成部６０３は、ユーザーから見えるリソースの更新を制御する実行制御信号を強制的にネゲートする。第２実行条件判定部６０２は、実行条件が成立した場合には、実行抑止信号６１４をアサートしない。したがって、第１デコーダ１１３から出力される実行制御情報に基づき第１実行制御信号生成部６０３で生成された実行制御信号によって命令が実行される。
条件セット命令は第１演算部１１６のみで実行できる。実行条件の判定は第１実行条件判定部６０１で行われる。この命令では、実行抑止信号はアサートされない。命令で指定された条件が成立した場合には、条件判定結果信号６１５に“１”が、条件不成立時には“０”が出力され、第１演算部１１６のセレクタ１５５に送られる。セレクタ１５５では、条件判定結果信号６１５の上位１５ビットにゼロが連結され、Ｄ１バス３１１を介してレジスタファイル１１５内のデスティネーションレジスタとして指定されたレジスタに書き込まれる。
実行条件指定命令の処理例についていくつか説明する。実行条件が左コンテナで指定される一例として、Ｆ０フラグ４７が１の時にペアの命令の実行を指定するＥＸＥＦ０Ｔ命令と、レジスタＲ２の値をレジスタＲ０に、レジスタＲ３の値をレジスタＲ１に転送する２ワード転送命令“ＭＶ２Ｗ  Ｒ０，Ｒ２”を並列に実行する場合の処理について説明する。命令のビット割り付けを、図２８に示す。２つのショート命令の並列実行なのでＦＭビットフィールド６２１は“００”になっている。左コンテナ６２２ではＥＸＥＦ０Ｔ命令の命令コードが、右コンテナ６２３には”ＭＶ２Ｗ  Ｒ０，Ｒ２”の命令コードがエンコードされている。命令キュー１１１に取り込まれた命令コードが命令デコード部１１９に出力される。Ｄステージ４０２では命令デコードが行われる。
第１デコーダ１１３は、左コンテナ６２２の内容を解析し、ＮＯＰ（ノーオペレーション）を実行する（有効な状態更新は何も行わない）実行制御情報を第１実行制御信号生成部６０３に出力し、実行条件指定命令であることを示す情報と実行条件情報を第１実行条件判定部６０１に出力する。第２デコーダ１１４は、右コンテナ６２３の内容を解析し、ＭＶ２Ｗ命令を実行するための実行制御情報を第２実行制御信号生成部６０４に出力する。Ｅステージ４０３では、実行条件判定、演算実行を行う。第２実行制御信号生成部６０４の出力に基づき、レジスタファイル１１５中のレジスタＲ２の値がＳ４バス３０４に、レジスタＲ３の値がＳ５バス３０５に各々出力され、シフタ２０５を介してＢラッチ２０３に取り込まれる。Ｂラッチ２０４に保持されたレジスタＲ２の値は、配線２０７を介してＤ２バス３１２に、レジスタＲ３の値は、配線２０７を介してＤ３バス３１３に各々出力される。
演算実行と並列に、第１実行条件判定部６０１では、実行条件の判定が行なわれ、Ｆ０フラグ４７の値が“１”の場合のみ実行抑止信号６１２がアサートされる。実行抑止信号６１２がアサートされなかった場合には、第２実行制御信号生成部６０４は、第２デコーダ１１４のデコード結果に基づき、Ｄ２バス３１２、Ｄ３バス３１３の値をレジスタファイル１１５中のレジスタＲ０及びＲ１にそれぞれ書き込む。実行抑止信号６１２がアサートされた場合には、第２実行制御信号生成部６０４において、Ｄ２バス３１２、Ｄ３バス３１３から、レジスタファイルに書き込むためのライトイネーブル信号が強制的にネゲートされ、レジスタの値が更新されないように制御される。このようにして、条件が成立した場合には、右コンテナで指定されたオペレーションを実行し、条件が不成立の場合には、右コンテナで指定されたオペレーションを実行しないように制御される。ここでは、ＭＶ２Ｗ命令の例を示したが、第２デコーダ１１４、第２演算部１１７で処理可能なすべてのサブ命令を左コンテナに配置された実行条件指定命令と並列に実行できる。ただし、右コンテナで実行条件指定命令や条件転送命令等を指定した場合の動作は意味がないので保証していない。
次に、実行条件が右コンテナで指定される一例として、Ｆ０フラグ４７、Ｆ１フラグ４８が共に“１”の時にペアの命令の実行を指定するＥＸＥＴＡＴ命令と、レジスタＲ０の値をレジスタＲ１２に保持されているアドレスで指定されるメモリ領域にストアする“ＳＴ  Ｒ０，＠Ｒ１２”を並列に実行する場合の処理について説明する。ＳＴ命令は内蔵データメモリ１０５にストアするものとする。命令のビット割り付けを、図２９に示す。２つのショート命令の並列実行なのでＦＭビットフィールド６２６は“００”になっている。左コンテナ６２７には“ＳＴ  Ｒ０，＠Ｒ１２”の命令コードが、右コンテナ６２８ではＥＸＥＴＡＴ命令の命令コードが、エンコードされている。命令キュー１１１に取り込まれた命令コードが命令デコード部１１９に出力される。
Ｄステージ４０２では、命令のデコードが行われる。第１デコーダ１１３は、左コンテナ６２７の内容を解析し、ＳＴ命令を実行するための実行制御情報を第１実行制御信号生成部６０３に出力する。第２デコーダ１１４は、右コンテナ６２８の内容を解析し、ＮＯＰ（ノーオペレーション）を実行する（有効な状態更新は何も行わない）実行制御情報を第２実行制御信号生成部６０４に出力し、実行条件指定命令であることを示す情報と実行条件情報を第２実行条件判定部６０２に出力する。Ｅステージ４０３では、実行条件判定、演算実行を行う。第１実行制御信号生成部６０３の出力に基づき、レジスタファイル１１５中のレジスタＲ１２の値がＳ３バス３０３を介してＡＡラッチ１５１に取り込まれる。また、レジスタファイル１１５中のレジスタＲ０の値が、Ｓ１バス３０１を介して、ＳＤレジスタ１６０に取り込まれる。
これらの演算実行と並列に、第２実行条件判定部６０２は、実行条件の判定を行い、Ｆ０フラグ４７とＦ１フラグ４８が共に“１”の場合のみ実行抑止信号６１４をアサートする。実行抑止信号６１４がアサートされなかった場合には、ＡＡラッチ１５１に保持されたアドレスは、ＡＯラッチ１５４、ＯＡバス３２１を介して、オペランドアクセス部１０４に転送される。また、ＳＤレジスタ１６０に取り込まれたストアデータが、ラッチ１６１を介して、整置回路１６２に入力され、４バイト境界に整置される。また、メモリアクセスの処理がＭステージ１０４に発行される。Ｍステージ１０４では、整置回路１６２の出力が、ラッチ１６３、ＯＤバス３２２を介して、オペランドアクセス部１０４に出力される。オペランドアクセス部１０４は、ＯＡバス３２１を介して入力されたオペランドアドレスと、ＯＤバス３２２を介して入力されたオペランドデータを内蔵データメモリ１０５に出力し、メモリライトを行う。実行抑止信号６１４がアサートされた場合には、第１実行制御信号生成部６０３において、制御部１１２内でのＭステージ４０４への処理の発行、メモリアクセス要求信号（図示せず）のアサートを抑止し、メモリアクセスを行わないように制御する。この場合、消費電力低減のため、ＡＯラッチ１５４、ラッチ１６１の更新も強制的に抑止される。このようにして、条件が成立した場合には、左コンテナで指定されたオペレーションを実行し、条件が不成立の場合には、左コンテナで指定されたオペレーションを実行しないように制御する。
ここでは、ＳＴ命令の例を示したが、第１デコーダ１１３、第２演算部１１７で処理可能なすべてのサブ命令を右コンテナに配置された実行条件指定命令と並列に実行することが可能である。ただし、左コンテナで実行条件指定命令や条件転送命令等を指定した場合の動作は意味がないので保証していない。
このようにして、ショートフォーマットの実行条件指定命令を付加するだけで、ショートフォーマットの命令の実行条件指定フィールドなしに、すべてのショート命令の条件付き実行が可能となる。実行条件指定命令の条件判定を行う機能と、条件が不成立の場合に命令の実行を抑止する機能を追加するだけのハードウェア追加で、条件実行が実現でき、分岐のペナルティが削減され性能が向上する。また、無条件に実行する命令には、実行条件を指定するフィールドが不要なので、多くの命令をショートフォーマットの命令として割り付けられ、コード効率を向上できる。
ただし、本実施の形態では、実行頻度が高いショート命令（転送、分岐命令等）は、使用頻度の高い条件のサブセットを指定できる条件実行命令をインプリメントすることにより、さらにコードサイズの低減、性能の向上を実現している。また、ロング命令として実行条件の指定ができた方がよい命令（１６ビットの分岐変位を持つ条件分岐命令等ショート命令と実行条件指定命令との組み合わせでは実現できず、かつ、使用頻度の高い命令）は、自命令で２つのフラグの複合条件を含む実行条件が指定できる命令をインプリメントすることにより、コードサイズの低減、性能の向上を実現している。また、複数の演算結果の複合条件で実行条件が指定できるため、無駄なオペレーションを削減でき、必要最低限の命令数で処理を実現できるため、コードサイズの低減、性能の向上に寄与している。
また、複数の条件に基づいて“１”又は“０”をセットする条件セット命令をインプリメントすることにより複数の条件でブール演算を行うことが可能となり、マイコンの制御プログラム等複雑な制御条件を少ないコードサイズで高速に処理可能となっている。
次にいくつかの簡単なプログラム例を示す。
４０個の３２ビットデータＤ［ｉ］（ｉ：０〜３９）で、３２ビットの基準値より大きい値の数をカウントするプログラムの例を、図３０に示す。図３１にループ内のリピートブロックの命令メモリの内容を、図３２に内蔵データメモリ上のデータＤ［ｉ］の割り付けを示す。ｈ’は１６進数表記を、”｜｜”は並列に実行することを示す。
プログラムは、６３１〜６３４で示す初期設定部分と、６３５〜６３９で示すループ処理部分との２つの部分に分かれる。ＬＤ２Ｗ命令（６３１）は、基準値をレジスタＲ２，Ｒ３のペアにロードする。ＬＤＩ命令（６３２）はデータポインタとして使用するレジスタＲ８に、Ｄ［０］（６４１）のアドレス（ｈ’２０００）を設定する。命令６３３では、ＬＤ２Ｗ命令とＮＯＰ命令とが並列に実行される。ＬＤ２Ｗ命令では、レジスタＲ０，Ｒ１のペアＤ［０］（６４１）をロードし、レジスタＲ８の値をオペランドサイズ４だけポストインクリメントする。ＮＯＰ命令は整置のために挿入された、ノーオペレーション命令である。命令６３４では、ＬＤＩ命令とＭＶ２ＷＴＡＣ命令とが並列に実行される。ＬＤＩ命令はレジスタＲ６を“０”に初期設定する。ＭＶ２ＷＴＡＣ命令は、レジスタＲ２，Ｒ３のペアに保持されている基準値の値を、４０ビットに符号拡張してアキュムレータＡ０に書き込む。
ＲＥＰＩ命令（６３５）を実行することにより、ＲＥＰＩ命令の次の命令６３６から、ＲＥＰ＿ＥＮＤラベルのある命令６３９までの４命令ワードのブロックをゼロオーバーヘッドで２０回繰り返す。リピートブロック内では、１データ／２クロックサイクルのスループットで処理する。リピート処理は、本発明に直接関係がないので、詳細な説明は省略する。
図３１に示したように、この４ワードの命令は各々２つのショート命令を並列に実行する。従って、ＦＭビットはすべて“００”になっている。まず、最初の一回目の処理について説明する。命令６３６では、ＬＤ２Ｗ命令とＣＭＰ命令とが並列に実行される。ＣＭＰ命令では先にレジスタＲ０，Ｒ１のペアにロードされているＤ［０］（６４１）の値とアキュムレータＡ０に保持されている基準値の値を符号付き数として比較し、もしＤ［０］６４１が基準値より大きければＦ０フラグ４７に“１”を、それ以外の場合はＦ０フラグ４７に“０”をセットする。
ＬＤ２Ｗ命令では、次に処理するデータＤ［１］（６４２）の値をレジスタＲ２、Ｒ３のペアにロードし、レジスタＲ８は４だけポストインクリメントされる。命令６３７では、ＥＸＥＦ０Ｔ命令とＡＤＤＩ命令とが並列に実行される。Ｆ０フラグ４７が“０”、すなわち、Ｄ［０］６４１が基準値より大きかった場合には、レジスタＲ６の値が１インクリメントされ、そうでなければ実行抑止信号６１２がアサートされ、レジスタＲ６の値は更新されない。同様に、命令６３８ではＬＤ２Ｗ命令とＣＭＰ命令とが並列に実行され、命令６３９ではＥＸＥＦ０Ｔ命令とＡＤＤＩ命令とが並列に実行される。ロードしてから、参照するまでは１サイクル空いているので、ロードオペランドの干渉は起こらず、各６２ビット命令を１クロックサイクル毎に実行していく。リピート終了後、レジスタＲ６にはＤ［ｉ］（ｉ：０〜３９）で、基準値より大きい値の数が保持されている。
このように、実行条件指定命令と加算命令との並列実行による条件実行により、分岐のペナルティなしに高速な処理が実現されている。また、実行に必要な処理クロックサイクル数を削減することにより、消費電力が低減できる。
図３３に、別のプログラム処理例を示す。変数Ａのビット０が“１”で、かつ、変数Ｂのビット７が“１”の時に、変数Ｃのビット３を“１”にセットする。次に、変数Ａのビット２が“０”、もしくは、変数Ｂのビット１５が“１”の時に、サブルーチンＳＵＢ＿１をコールする。最後は、変数Ｄが０でなく、かつ、変数Ｅが８より小さい場合に、変数Ｆに“１”をそれ以外の場合に変数Ｆに“０”をセットする。各変数は１６ビットである。レジスタＲ１４は変数領域のベースアドレスを、ＤＩＳＰ＿Ａ等は、各変数の格納位置のベースアドレスからの変位を示す。
ＬＤ命令（６５１）はレジスタＲ０に変数Ａを、ＬＤ命令（６５２）はレジスタＲ１に変数Ｂを、ＬＤ命令（６５３）はレジスタＲ２に変数Ｃを各々ロードする。ＢＴＳＴＩ命令（６５４）でレジスタＲ０に保持されている変数Ａのビット０をテストする。もし、“１”であればＦ０フラグ４７に“１”を、“０”であればＦ０フラグ４７に“０”をセットする。ＢＴＳＴＩ命令（６５５）でレジスタＲ１に保持されている変数Ｂのビット７をテストし、“１”であればＦ０フラグ４７に“１”を、“０”であればＦ０フラグ４７に“０”をセットする。更新前のＦ０フラグ４７に格納されていた変数Ａのビット０のテスト結果はＦ１フラグ４８にコピーされる。命令（６５６）では、前述の２つの比較結果に基づいて条件実行を行う。実行条件はＥＸＥＴＡＴ命令で指定される。もし、Ｆ０フラグ４７とＦ１フラグ４８が共に“１”の場合には、ＢＳＥＴＩ命令が実行され、レジスタＲ２に保持されている変数Ｃのビット３が“１”にセットされる。実行条件が成立しなかった場合には、実行抑止信号６１２がアサートされ、レジスタファイルへの書き込みが抑止されるため、レジスタＲ２の値は更新されない。ＳＴ命令（６５７）は変数Ｃをメモリにストアする。
ＢＴＳＴＩ命令（６５８）でレジスタＲ０に保持されている変数Ａのビット２をテストし、テスト結果をＦ０フラグ４７にセットする。ＢＴＳＴＩ命令（６５９）でレジスタＲ１に保持されている変数Ｂのビット１５をテストし、テスト結果をＦ０フラグ４７にセットする。このとき、更新前のＦ０フラグ４７に格納されていた変数Ａのビット２のテスト結果はＦ１フラグ４８にコピーされる。命令６６０では、前述の２つの比較結果に基づいて条件実行を行う。条件実行はＥＸＥＴＯＦ命令で指定される。もし、Ｆ０フラグ４７が“１”、もしくは、Ｆ１フラグ４８が“０”であった場合には、ＳＵＢ＿１のラベルで指定されるサブルーチンへの分岐が起こる。また、戻り先アドレスとなる、ＬＤ命令（６６１）のアドレスがレジスタＲ１３に書き込まれる。実行条件が成立しなかった場合には、実行抑止信号６１４がアサートされ、内部的なジャンプ信号（パイプラインキャンセル信号）のアサート、分岐先アドレスのＪＡバス３２３への出力、レジスタファイルへの戻り先アドレスの書き込みが抑止されるため、サブルーチンへのジャンプは起こらない。
ＬＤ命令（６６１）はレジスタＲ０に変数Ｄを、ＬＤ命令（６６２）はレジスタＲ１に変数Ｅを各々ロードする。ＣＭＰＥＱＩ命令（６６３）ではレジスタＲ０に格納された変数Ｄと即値０とが比較され、一致した場合にＦ０フラグ４７に“１”を、不一致の場合に“０”をセットする。ＣＭＰＩ命令６６４では、レジスタＲ１に保持されている変数Ｅと即値８とが比較され、変数Ｅが８より小さい場合にＦ０フラグ４７に“１”を、それ以外の場合に“０”をセットする。更新前のＦ０フラグ４７に格納されていた変数Ｄの比較結果は、Ｆ１フラグ４８にコピーされる。条件セット命令ＳＥＴＴＡＦ（６６５）では、Ｆ０フラグ４７が“１”で、かつ、Ｆ１フラグ４８が“０”の場合にレジスタＲ０に“１”を、それ以外の場合にレジスタＲ０に“０”をセットする。条件判定結果信号６１５が、条件成立時にのみ“１”になり、セレクタ１５５に出力され、上位に“０”が連結されて、レジスタＲ０に書き戻される。ＳＴ命令（６６６）では、レジスタＲ０の値がメモリ中の変数Ｆの格納領域にストアされる。
上述のように、実施の形態１のデータ処理装置は、複数のフラグを備え、複合条件で条件実行命令あるいは条件セット命令であるフラグ制御実行命令を実行することにより、条件分岐命令の実行回数を削減できるので、実効速度が向上し、かつ、消費電力を低減できる。また、２つの条件を一度に判定可能な複合条件によって、２回の条件分岐命令を１回の条件実行命令に置き換えることができ、プログラムのコードサイズも低減することができる。
実施の形態１のデータ処理装置では、比較命令等フラグをセットする命令で指定される特定の条件に基づいてフラグの設定を行い、条件実行命令、実行条件指定命令、条件セット命令等の条件判定を行う命令で真の場合に実行するか偽の場合に実行するかを判定している。フラグをセットする命令で真の場合に設定するか、偽の場合に設定するかまでを指定し、条件判定を行う命令で条件が成立した場合（真あるいは偽の場合）のみ実行するような命令セットにしてもよい。
実施の形態１のデータ処理装置では、２つのサブ命令が並列に実行できるＶＬＩＷタイプのプロセッサになっているが、フラグの更新や実行条件、セット条件の参照に関してはＶＬＩＷタイプのプロセッサに限定される技術ではない。単一命令発行やスーパースケーラ等複数命令発行のＲＩＳＣもしくはＣＩＳＣプロセッサにも適応可能である。実施の形態１のデータ処理装置では、２つのフラグを備えるが、３つ以上のフラグを備え、比較命令等でフラグを更新する際に３つ以上のフラグをシフトレジスタのように更新するようにしてもよい。また、３つ以上のフラグの複合条件で実行条件やセット条件を指定するようにしてもよい。また、フラグはオーバーフロー等、どのような条件で設定してもよい。いずれの場合にも、実施の形態１のデータ処理装置と同様の効果が得られる。
複合条件で実行条件やセット条件を指定する技術は、複数のフラグ群を備え、比較命令等フラグを更新する命令で比較結果を反映するフラグ群を明示的に指定する命令セットを処理する場合にも有効である。
本データ処理装置では、左コンテナ５２でも右コンテナ５３でも実行条件指定命令が実行可能であるが、いずれか一方のみでも有効である。ただし、ハードウェア削減のために各演算部で異なる命令を処理するような構成になっている場合には、両方で実行条件を指定できた方がより多くの命令を条件実行できるため性能が向上する。
本データ処理装置では、ＦＭビット５１で命令の実行順序やフォーマットを指定できるようになっているが、このようなフォーマット指定ビットを持たず、必ず複数の命令（オペレーション）が並列に実行できるタイプのＶＬＩＷプロセッサであっても、実行条件指定命令は有効である。また、スーパースケーラ・プロセッサであっても、基本的なオペレーション命令と必ず並列に実行する命令で、対応する命令の実行条件を指定する命令をインプリメントしてもよい。実行条件指定命令については、必ずしも複合条件を指定する必要はない。１つの条件のみ指定できる場合でも、多くの命令を条件実行でき、分岐のペナルティを削減できる場合も多い。また、比較命令で演算結果を入れるフラグを命令で明示的に指定する命令セットを処理する場合にも有効である。
本データ処理装置では、条件セット命令で、条件判定結果に基づく値をレジスタにセットしているが、アキュムレータマシンではアキュムレータにセットしてもよい。また、条件セット・アンド・ストア命令をインプリメントし、ストアデータに真偽を示す値を直接セットして、メモリにストアするようにしてもよい。同じ技術が利用可能で、同様の効果を得ることができる。
上述のように、実施の形態１のデータ処理装置によれば、命令コードにどのフラグを更新するかの情報挿入用のフィールドを設けることなしに、複数の比較結果をフラグに保持できるため、短い命令ワード内に多くの命令を割り付けることができ、コード効率を向上させることができる。
また、命令コードとして無条件実行を行う命令には実行条件指定フィールドを設ける必要がないので、短い命令ワードに多くの命令を割り付けることができ、コード効率を向上させることができる。条件実行を行う場合にはこの無条件実行命令と実行条件指定命令とを並列に実行すればよい。実行条件指定命令を備えることにより、少ないハードウェアの追加で、多くの命令の条件実行が可能となり、その分、分岐命令を用いた処理を減らすことができ、分岐ペナルティを削減できる。また、複数の演算結果の複合条件で実行条件やセット条件が指定できるので、条件分岐回数が削減されるのみならず、条件判定やレジスタを初期設定する等のオペレーションが不要となり、実行する命令数を削減できる。
このように、実施の形態１のデータ処理装置は、ハードウェア量の増加が小さく低コストで高性能な装置となる。また、比較／演算命令等のフラグ更新命令の命令コード中に更新対象のフラグを記述する必要がない分、コードサイズを小さくすることができるため、組み込み用途等でプログラムをＲＯＭ化する場合には、実装するＲＯＭ容量を削減できコストの低減化を図ることができる。さらに、実行条件指定命令で多様な実行条件を設定することにより、所定の処理を効率的に実行できるため、実現するのに必要なクロックサイクル数を減少させて消費電力を低減を図ることができる。
＜実施の形態２．＞
次にこの発明の実施の形態２のデータ処理装置について説明する。基本的な構成は、実施の形態１のデータ処理装置と同じである。実施の形態２のデータ処理装置では、実行条件として参照可能なフラグを３つ備える点が、実施の形態１のデータ処理装置と異なる。ここでは、本発明の形態１との相違点に着目し説明する。
図３４に実施の形態２のデータ処理装置のプロセッサ状態語（ＰＳＷ）を示す。実施の形態２のデータ処理装置では、Ｆ０フラグ４７、Ｆ１フラグ４８、Ｆ２フラグ５０の３つのフラグが比較命令等で更新され、実行条件として参照される。ビット１４のＦ２フラグ５０が追加されている点が実施の形態１のデータ処理装置と異なり、それ以外のビットの割り付けは同じである。
図３５に実行条件指定命令の命令ビット割り付けを示す。実行条件として、Ｆ０フィールド７０３、Ｆ１フィールド７０４、Ｆ２フィールド７０５が有り、Ｆ０フラグ４７、Ｆ１フラグ４８、Ｆ２フラグ５０の３つのフラグが実行条件として参照できる。最大３つのフラグの複合条件（論理積、論理和、排他的論理和）が指定可能である。複合演算は、フラグオペレーション（Ｆ−ｏｐ）フィールド７０２で指定される。図３６に条件分岐命令のビット割り付けを、図３７に条件セット命令のビット割り付けを示す。いずれの命令も、実行条件指定命令と同様、Ｆ２フィールド７１５、７２５が有り、Ｆ２フラグ５０が実行条件として参照できるようになっている。Ｆ−ｏｐフィールド７１２、７２２、Ｆ０フィールド７１３、７２３、Ｆ１フィールド７１４、７２４、Ｆ２フィールド７１５、７２５の割り付けは、図３５の実行条件指定命令と同じである。
実施の形態２のデータ処理装置における実行条件判定に関する基本的な構成は、実施の形態１の図２７に示した構成と同様な構成となる。ただし、各部間でやりとりされる情報としてＦ２フラグ５０に関する情報が追加されるため、各ブロック内部の構成は多少異なる。
図３８は、実施の形態２のデータ処理装置のＰＳＷ部７３４の内部構成を示す模式図である。ＰＳＷ部７３４は図２０で示した実施の形態１のＰＳＷ部１７１に相当する。同図に示すように、Ｆ２フラグ５０に関する部分であるＦ２更新部４１２、ラッチ４１３、セレクタ４１６及びＦ２ラッチ４１７が追加され、セレクタ５３０，５３１がセレクタ４１４，４１５に置き換えられる。ラッチ５３４からＦ２更新部４１２への転送経路を設けており、比較命令等でＦ０フラグ４７を更新する場合に、更新前のＦ０フラグ４７の値がＦ１フラグ４８にコピーされるとともに、更新前のＦ１フラグ４８の値がＦ２フラグ５０にコピーされる。
なお、制御部１２２、第１のデコーダ１２３、第２のデコーダ１２４、ＴＰＳＷラッチ２２１、ＰＳＷ２２２、第１実行条件判定部１２５及び第２実行条件判定部１２６は、実施の形態１の制御部１１２、第１のデコーダ１１３、第２のデコーダ１１４、ＴＰＳＷラッチ１６７、ＰＳＷ１７２、第１実行条件判定部６０１及び第２実行条件判定部６０２にそれぞれ対応する。
Ｆ０フラグ４７，Ｆ１フラグ４８及びＦ２フラグ５０に関する情報は、ラッチ５２７，５２８，４１３から、第１実行条件判定部１２５及び第２実行条件判定部１２６に出力される。
また、図３８では図示しないが、図２７で示す実施の形態１の制御部１１２と同様、制御部１２２の第１デコーダ１２３、第２デコーダ１２４は、Ｆ０フラグ４７，Ｆ１フラグ４８及びＦ２フラグ５０に関する実行条件を、第１実行条件判定部１２５，第２実行条件判定部１２６に出力する。第１実行条件判定部１２５，第２実行条件判定部１２６は、指定された条件とフラグの値に基づいて、実行抑止信号や条件判定結果信号の生成を行う。
このような構成の実施の形態２のデータ処理装置は、Ｆ０フラグ４７，Ｆ１フラグ４８及びＦ２フラグ５０からなる３つのフラグの複合条件で実行条件指定が可能になる。しかも、実施の形態１のデータ処理装置と同様、低コスト、高性能で、消費電力の低いデータ処理装置を得ることができる。さらに、実施の形態２のデータ処理装置では複雑な条件や、古い条件を再度参照することが可能となり、条件分岐命令や古い比較結果の待避等のオペレーションも削減することができるため、更に性能が向上する。ただし、実施の形態１のデータ処理装置に比べ制御はやや複雑になる。
なお、実施の形態２ではデータ処理装置では比較命令で３つのフラグが影響を受ける場合について説明したが、この考え方を延長して４つ以上のフラグが影響を受ける場合のデータ処理装置を構成することも勿論可能である。
＜実施の形態３．＞
実施の形態２では、比較命令処理時に無条件に３つのフラグの更新を行っている場合を示したが、比較命令でフラグを更新する際、Ｆ０フラグ４７以外のフラグを更新する命令と更新しない命令との２種類の命令を備えるようにしてもよい。一例として、ショートフォーマットの比較命令のビット割り付けを図３９に示す。ＣＭＰ命令では、演算結果によってＦ０フラグ４７のみを更新し、ＣＭＰＸ命令では、Ｆ０、Ｆ１及びＦ２フラグ４７、４８及び５０を更新する。ＣＭＰ命令とＣＭＰＸ命令はＦフィールド７５２の“０”／“１”で区別される。
基本的な構成は、実施の形態２のデータ処理装置（図２７，図３８）とほぼ同じである。構成要素として、第１デコーダ１１２（１２３）、第２デコーダ１１４（１２４）及びフラグ更新制御部５２１の処理内容が異なる。
実施の形態３のデータ処理装置のフラグ更新制御部（５１２に相当）は、Ｆ０フラグ４７の更新時に、Ｆ１フラグ４８及びＦ２フラグ５０の更新を抑止する機能が備わっている点で実施の形態２のデータ処理装置とは異なる。例えば、ＣＭＰ命令実行時には、Ｆ０更新部５２４は演算結果に基づいてＦ０フラグ４７の更新値を生成し、Ｆ１更新部５２５及びＦ２更新部４１２は、それぞれ更新前のＦ１ラッチ５３４、Ｆ２ラッチ４１７の値をそのまま出力し、ＣＭＰＸ命令実行時には、Ｆ０更新部５２４は演算結果に基づいてＦ０フラグ４７の更新値を生成し、Ｆ１更新部５２５及びＦ２更新部４１２は、それぞれ更新前のＦ０ラッチ５３３、Ｆ１ラッチ５３４の値を出力するように、Ｆ０更新部５２４、Ｆ１更新部５２５及びＦ２更新部４１２は制御される。
実施の形態３のデータ処理装置では、条件実行を行うために必要な比較結果を意図して特定のフラグのみに保持しておけるため、古い比較結果の待避等のオペレーションを削減することができ、その分、実施の形態２のデータ処理装置に比べて性能が向上する。ただし、フラグを更新する命令の一部に１ビット余分に、特定のフラグを更新する／しないを指示するための命令コードが消費されてしまう。しかしながら、３つ以上のフラグビットがある場合には、比較命令でどのフラグを更新するかを指定するビット数に比べれば、さほど多くはない。
＜実施の形態４．＞
実施の形態４のデータ処理装置では、比較命令で比較結果に基づいてセットするフラグを明示的に指定する。基本的な構成は、実施の形態１のデータ処理装置と同じである。実施の形態１のデータ処理装置との相違点に着目し説明する。図４０にショートフォーマットの比較命令のビット割り付けを、図４１にロングフォーマットの比較命令のビット割り付けを示す。各々Ｆｄフィールド７５７、７６３でＦ０フラグ４７を更新するのか、Ｆ１フラグ４８を更新するのかを示す。
実行条件判定に関する基本構成は、図２７に示した実施の形態１の構成と同様である。図４２は、実施の形態４のデータ処理装置のＰＳＷ部４２１の内部構成を示す模式図である。ＰＳＷ部４２１は図２０で示した実施の形態１のＰＳＷ部１７１に相当する。
また、制御部１２７、第１のデコーダ１２８、第２のデコーダ１２９、第１実行条件判定部１３０、第２実行条件判定部１３１、Ｆ０更新部８２４及びＦ１更新部８２５は、実施の形態１の制御部１１２、第１のデコーダ１１３、第２のデコーダ１１４、第１実行条件判定部６０１、第２実行条件判定部６０２、Ｆ０更新部５２４及びＦ１更新部５２５にそれぞれ対応する。
同図に示すように、第１フラグ生成部２２７及び第２フラグ生成部２２８が追加され、Ｆ１更新部８２５にはＦ１ラッチ５３４の値のみが入力される。
第１フラグ生成部２２７は第１デコーダ１２８のデコード結果、ラッチ５２２を介した第１演算部１１６の演算結果に基づき、更新値をＦ０更新部８２４あるいはＦ１更新部８２５に与える。第２フラグ生成部２２８は第２デコーダ１２９のデコード結果、ラッチ５２３を介した第２演算部１１７の演算結果に基づき、更新値をＦ０更新部８２４あるいはＦ１更新部８２５に与える。
そして、第１フラグ生成部２２７は、第１デコーダ１２８のデコード結果に基づき、第１演算部１１６の演算結果をＦ０フラグ４７にセットする場合は、更新値をＦ０更新部８２４を介してラッチ５２７に出力し、第１演算部１１６の実行結果をＦ０フラグ４７にセットする場合は、更新値をＦ１更新部８２５を介してラッチ５２８に出力する。一方、第２フラグ生成部２２８は、第２デコーダ１２９のデコード結果に基づき、第２演算部の演算結果をＦ０フラグ４７にセットする場合は、更新値をＦ０更新部８２４を介してラッチ５２７に出力し、第１演算部１１６の実行結果をＦ０フラグ４７にセットする場合は、更新値をＦ１更新部８２５を介してラッチ５２８に出力する。
このように実施の形態４のデータ処理装置では、条件実行を行うために必要な比較結果を意図的に特定のフラグに保持可能に構成したため、古い比較結果の参照や古い比較結果を含むフラグの複合条件の設定を容易に実現できる。その結果、古い比較結果の待避等のオペレーションもしくは再度比較を行うためのオペレーションを削減できる分、実施の形態１のデータ処理装置に比べ更に性能が向上する。
加えて、第１演算部１１６と第２演算部１１７で、異なるフラグを更新する２つの比較命令を並列に実行することも可能となり、複数の条件判定をより短い時間で判定できる効果も奏する。ただし、フラグを更新する命令の少なくともフラグを特定するための領域を、命令コード中に必ず設ける必要がある。
＜実施の形態５．＞
次に実施の形態５のデータ処理装置について説明する。実施の形態５のデータ処理装置では、１回の比較命令の実行で複数の条件に従って複数のフラグからなるフラグ群をセットする。図４３にプロセッサステータスワードを示す。ＳＭビット７７１、ＩＥビット７７２、ＲＰビット７７３、ＭＤビット７７４、ＦＸビット７７５、ＳＴビット７７６は、ビット位置が異なるものもあるが、実質的には、実施の形態１のデータ処理装置で用いたプロセッサステータスワードと同じである。ＬＴ０フラグ７７７、ＬＴ１フラグ７８１は、比較命令の第１オペランドが第２オペランドよりも小さいことを示すフラグ、ＧＴ０フラグ７７８、ＧＴ１フラグ７８２は、比較命令の第１オペランドが第２オペランドよりも大きいことを示すフラグ、ＥＱ０フラグ７７９、ＥＱ１フラグ７８３は、比較命令の第１オペランドと第２オペランドが一致することを示すフラグ、ＣＹフラグ７８０は加減算時のキャリー／ボローを示すフラグ、ＯＶフラグ７８４は算術演算時のオーバーフローを示すフラグである。ＬＴ０フラグ７７７、ＧＴ０フラグ７７８、ＥＱ０フラグ７７９をまとめてフラグ群０、ＬＴ１フラグ７８１、ＧＴ１フラグ７８２、ＥＱ１フラグ７８３をまとめてフラグ群１と呼ぶことにする。
実施の形態５のデータ処理装置では、比較命令の比較結果によりフラグ群が更新される。例えば、符号付き数として２つの値を比較する“ＣＭＰ  Ｒｓｒｃ１、Ｒｓｒｃ２”命令では、Ｒｓｒｃ１に保持されている値とＲｓｒｃ２に保持されている値とが比較され、３つのフラグがセットされる。Ｒｓｒｃ１に保持されている値（第１オペランド）がＲｓｒｃ２に保持されている値（第２オペランド）より小さい場合に、ＬＴ０フラグ７７７に“１”をセットし、それ以外の場合には“０”をセットする。Ｒｓｒｃ１に保持されている値がＲｓｒｃ２に保持されている値より大きい場合に、ＧＴ０フラグ７７８に“１”をセットし、それ以外の場合には“０”をセットする。Ｒｓｒｃ１に保持されている値とＲｓｒｃ２に保持されている値が一致する場合に、ＥＱ０フラグ７７９に“１”をセットし、それ以外の場合には“０”をセットする。また、フラグ群０の各ビットはフラグ群１にコピーされる。このように、演算結果の保持形態が異なるだけで基本的な考え方は実施態様１のデータ処理装置と変わりはない。
このような演算結果の保持形態をとっても、条件実行命令、実行条件指定命令、条件セット命令は有効に動作する。図４４に実行条件指定命令のビット割り付けを示す。Ｆ−ｏｐフィールド７９２では、２つのフラグ群の条件の複合条件（論理和、論理積、排他的論理和）を指定する。Ｆ０フィールド７９３ではフラグ群０に関する条件を、Ｆ１フィールド７９４ではフラグ群１に関する条件を、それぞれ指定する。例えば、ＥＸＥＥＱＡＥＱ命令（ｘ＝ＥＱ，ｙ＝ＥＱ）では、２回の比較結果が共に一致していた場合に、条件が成立する。基本的な考え方は実施の形態１のデータ処理装置と同じである。図４５にロングフォーマットの条件分岐命令のビット割り付けを、図４６にロングフォーマットの条件セット命令のビット割り付けを示す。各々、実行条件指定命令と同じ条件で分岐の実行や値のセットが行われる。図４５において、８０１〜８０５はそれぞれオペレーションコード、Ｆ−ｏｐフィールド、フラグ群０フィールド、フラグ群１フィールド及びｄｉｓｐ１６フィールドである。図４６において、８１１〜８１７はオペレーションコード、Ｆ−ｏｐフィールド、フラグ群０フィールド、フラグ群１フィールド、オペレーションコード、Ｒｄｅｓｔフィールドである。
実行条件判定に関する基本構成は、実施の形態１の図２７に示した構成と同様の構成となる。図４７は、実施の形態５のデータ処理装置のＰＳＷ部１００１の内部構成を示す模式図である。ＰＳＷ部１００１は図２０で示した実施の形態１のＰＳＷ部１７１に相当する。
図４７において、フラグ群０更新部１００３、フラグ群１更新部１００４及びＣＹ，ＯＶ更新部１００５はそれぞれ図２０で示した実施の形態１のＦ０更新部５２４、Ｆ１更新部５２５、Ｃ更新部５２６に対応し、ラッチ１００６〜１００８は実施の形態１のラッチ５２７〜５２９に対応し、セレクタ１００９〜１０１１はそれぞれ実施の形態１のセレクタ５３０〜５３２に対応し、フラグ群０ラッチ１０１２、フラグ群１ラッチ１０１３はそれぞれ実施の形態１のＦ０ラッチ５３３、Ｆ１ラッチ５３４に対応する。すなわち、１回の比較結果によって保持するフラグ数が増えただけで、基本的な構成及び動作は実施の形態１と同様になる。
なお、制御部１３２、第１のデコーダ１３３、第２のデコーダ１３４、第１実行条件判定部１３５及び第２実行条件判定部１３６は、実施の形態１の制御部１１２、第１のデコーダ１１３、第２のデコーダ１１４、ＴＰＳＷラッチ１６７、ＰＳＷ１７２、第１実行条件判定部６０１及び第２実行条件判定部６０２にそれぞれ対応する。
比較結果等でフラグを更新するフラグ更新命令の処理時には、演算結果に基づいてフラグ群０の３ビット更新値がフラグ群０更新部１００３で生成され、ラッチ１００６に出力される。また、この場合、フラグ０ラッチ１０１２から出力される更新前のフラグ群０の値がフラグ群１更新部１００４から出力されラッチ１００７に出力される。このように、実施の形態１と同様、フラグ群０の更新時には更新前のフラグ群０の値がフラグ群１に転送される。
ラッチ１００６、１００７の内容は、第１実行条件判定部１３５、第２実行条件判定部１３６に出力される。第１実行条件判定部１３５、第２実行条件判定部１３６は、図４７では図示しないが、図２７で示す実施の形態１の制御部１１２と同様、制御部１３２の第１デコーダ１３３及び第２デコーダ１３４からそれぞれ出力される実行条件情報とＰＳＷ部１００１から出力されるフラグ群０及びフラグ群１の情報に基づいて、実行抑止信号や条件判定結果信号の生成を行う。このようなフラグ群（複数のフラグ）の保持形態をとる実施の形態５のデータ処理装置においても、実施の形態１と同様、条件実行命令、条件セット命令、実行条件指定命令が実現可能である。
実施の形態５のデータ処理装置は、実行条件の判定を容易にするように比較命令による大小比較結果を３つのフラグで保持するようになっているが、ＥＱフラグとＬＴフラグのみを保持するようにしてもよい。この場合、条件がＬＥ（less or equal）の場合は、”ＬＴフラグが１またはＥＱフラグが１”であることを判定し、条件がＧＴ(greater than)の場合には、”ＬＴフラグが０かつＥＱフラグが０”であることを判定すればよい。
実施の形態５のデータ処理装置は、比較命令等のフラグ更新命令で更新するフラグ群を指定することなしに、フラグ群内の複数のフラグにより複数の比較結果を保持、更新できる。また、単一条件もしくは２つの比較結果の複合条件で条件実行命令、実行条件指定命令、条件セット命令の条件を指定できる。このように、実施の形態５のデータ処理装置は、実施の形態１のデータ処理装置と同じ機能が実現でき、実施の形態１のデータ処理装置と同様低コストで性能を向上できる効果がある。
加えて、実施の形態５のデータ処理装置は、第１及び第２のフラグ群で構成される複雑な複合条件で、より高度な条件セット命令を実行可能にした処理が可能となる。
＜実施の形態６．＞
図４８に実施の形態６のデータ処理装置で用いるプロセッサステータスワード（ＰＳＷ）を示す。実施の形態５のデータ処理装置のプロセッサステータスワード（ＰＳＷ）と異なる点は、ビット１５がフラグポインタ（ＦＰ）ビット８３４になっている点にある。本データ処理装置では、実施の形態５のデータ処理装置と異なり、ＦＰビット８３４の値に従って、２つのフラグ群のいずれか一方を選択し更新する。フラグポインタ（ＦＰ）８３４はフラグが更新される毎に、トグルで変化する。
このように制御することにより、比較命令で更新するフラグを指定することなく複数の比較結果を保持できるので、実施の形態１や実施の形態５のデータ処理装置と同じ効果がある。ＬＴ０フラグ８２７、ＧＴ０フラグ８２８、ＥＱ０フラグ８２９をまとめてフラグ群０、ＬＴ１フラグ８３１、ＧＴ１フラグ８３２、ＥＱ１フラグ８３３をまとめてフラグ群１と呼ぶことにする。
実行条件判定に関する基本的な構成は、図２７で示した実施の形態１の構成と同様な構成となる。図４９は、実施の形態６のデータ処理装置のＰＳＷ部８４６の内部構成を示す模式図である。ＰＳＷ部８４６は図２０で示した実施の形態１のＰＳＷ部１７１に相当する。
ラッチ８５９，８６０，８６１はそれぞれフラグ群０，フラグ群１，ＦＰビット８３４を保持する。フラグ群生成部８４８はラッチ５２２，５２３それぞれに保持された第１演算部１１６，第２演算部１１７それぞれの演算結果と、第１デコーダ１１３，第２デコーダ１１４それぞれのデコード結果に基づいて、フラグの更新データを生成する。反転回路８４９ではＦＰビットラッチ８６１の値を反転してラッチ８５５に出力する共に、セレクタ８５０，８５１に出力する。
セレクタ８５０，８５１は反転回路８４９の出力に基づき、更新するデータを選択する。反転回路８４９の出力がフラグ群０（比較結果を反映する側のフラグ群）を指示する時、セレクタ８５０はフラグ群生成部８４８からのフラグの更新データをラッチ８５３に出力し、セレクタ８５１はフラグ群１ラッチ８６０の出力である更新前の自身のデータをラッチ８５４に出力する。反転回路８４９の出力がフラグ群１を指示する時、セレクタ８５１はフラグ群生成部８４８からのフラグの更新データをラッチ８５４に出力し、セレクタ８５０はフラグ群０ラッチ８５９の出力である更新前の自身のデータをラッチ８５３に出力する。
フラグ群０、フラグ群１、ＦＰビット８３４の更新値は、それぞれラッチ８５３，８５４，８５５に取り込まれＤ１バス３１１を介して各部に出力される。また、セレクタ８５６、８５７、８５８を介してフラグ群０ラッチ８５９、フラグ１ラッチ８６０、ＦＰビットラッチ８６１の値が更新される。上述のように、ＦＰビットはフラグ群０，フラグ群１の更新に先だって、反転回路８４９により反転される。したがって、ＦＰビットラッチ８６１に保持されるＦＰビット８３４の値は、直前に更新した側のフラグ群を指示していることになる。
なお、ＣＹ更新部８６４、ラッチ８６５、セレクタ８６６及びＣＹラッチ８６７はそれぞれ、図２０で示した実施の形態１のＣ更新部５２６、ラッチ５２９、セレクタ５３２及びＣラッテ５３５に対応し、同様な動作をする。
また、制御部１３７、第１のデコーダ１３８、第２のデコーダ１３９、ＴＰＳＷラッチ２２５、ＰＳＷ２２６、第１実行条件判定部１４０及び第２実行条件判定部１４１は、実施の形態１の制御部１１２、第１のデコーダ１１３、第２のデコーダ１１４、ＴＰＳＷラッチ１６７、ＰＳＷ１７２、第１実行条件判定部６０１及び第２実行条件判定部６０２にそれぞれ対応する。
第１実行条件判定部１４０、第２実行条件判定部１４１では、第１デコーダ１３８、第２デコーダ１３９のデコード結果（実行条件）と、ラッチ８５３、８５４、８５５の値に基づいて条件判定を行う（図２７，図４９参照）。フラグの更新は演算結果に基づいて行われるため、タイミング的には実行ステージでの命令の実行後次の実行における参照までに行われる。命令が連続して処理される場合には、フラグ群生成部８４８でのフラグの更新は、条件判定を行う命令の直前に実行した命令のデコード結果に基づいて行われることになる。
上述の例では、フラグ群は２組しかないが、フラグ群は３組以上あってもよい。この場合、フラグ群の数に応じてポインタのビット数は増やす必要がある。また、実施の形態１で示したように各フラグ群が１ビットから構成される場合にも適応可能である。また、実施の形態６では、ＦＰビット８３４は、フラグ群の更新に先立って更新（反転）されているが、フラグ群の更新後に更新するように構成してもかまわない。
このような実施の形態６のデータ処理装置の構成／制御をとることにより、実施の形態１と同様比較命令で明示的に演算結果を格納するフラグを指定することなく、複数の演算結果を保持できる。また、実施の形態６のデータ処理装置は、フラグの数が多い場合には、更新の制御が単純になるという利点がある。ただし、条件判定時にＦＰビット８３４の値も参照する必要があるため、実行条件判定部１４０，１４１の制御はやや複雑になる。
また、実施の形態６のデータ処理装置は、保持するフラグ、実行条件は増えるが、すべての大小比較結果が１回の比較命令の実行で判定できるので、その分性能は向上する。ただし、ハードウェアの制御はやや複雑になる。また、比較命令については、比較条件毎に命令を持たなくてよいので、比較命令の命令数を削減することができる。しかし、条件分岐命令や条件セット命令をショートフォーマットの命令として割り付ける際に、実行条件を指定するフィールドが増大する。
また、実施の形態６のデータ処理装置は、ＦＰビット８３４の値によって、更新対象のフラグ群を指定することができるため、フラグの更新を促す比較命令等のフラグ更新命令中に更新対象のフラグを特定する領域を設ける必要はない。
＜実施の形態７．＞
実施の形態７のデータ処理装置は、４つのサブ命令（オペレーション）を並列に実行可能にしたものである。
図５０に、実施の形態７のデータ処理装置が処理する命令フォーマットを示す。４ビットのフォーマットを示すＦＭビット８７１は、各２ビットで、８７２のコンテナ１と８７３のコンテナ２の組み合わせと、８７４のコンテナ３と８７５のコンテナ４の組み合わせについて、実施の形態１のデータ処理装置で用いたＦＭビット５１（図３参照）と同様のフォーマット指定を行う。各コンテナ８７２〜８７５は１５ビットで表現される。
図５１は、実施の態様７のデータ処理装置の内部構成を示すブロック図である。同図において、８８１は、ＭＰＵコア部である。命令フェッチ部８９４、オペランドアクセス部８９５は、図８で示した実施の形態１のデータ処理装置における命令フェッチ部１０２、オペランドアクセス部１０４とほぼ同じ働きをする。ただし、命令データは６４ビット幅で取り込まれる。バスインターフェイス部等、その他のブロックはここでは図示していない。
ＭＰＵコア部８８１は、命令キュー８８２、制御部８８３、レジスタファイル８９１、第１演算部８８９、第２演算部８９０、第３演算部８９２、第４演算部８９３からなる。命令キュー８８２は、６４ビットの命令を最大２つ保持する、ＦＩＦＯ制御の命令バッファである。第１演算部８８９は、インクリメンタやデクリメンタ、加算器等を備え、ＰＣ値の管理や分岐先アドレスの計算、リピート制御、算術演算、比較、転送等を行う。第２演算部８９０は、ＡＬＵや整置回路等を備え、オペランドアクセス、ポインタの更新、算術論理演算、転送、比較、ロードしたデータの保持・整置、ストアするデータの保持・整置を行う。第３演算部８９２は、ＡＬＵ、シフタ等を備え、算術論理演算、転送、比較、シフト等の演算処理を行う。第４演算部８９３は積和演算器やシフタ、アキュムレータ等を備え、主として積和、積差、アキュムレータシフト等を行う。このように、各々レジスタファイルに結合された４つの独立した演算部８８９、、８９０、８９２、８９３を備える。
制御部８８３には、命令デコード部８８４が含まれる。命令デコード部８８４には、４つのデコーダがある。第１デコーダ８８５は、主として８７２のコンテナ１のオペレーションコードをデコードし、レジスタファイル８９１と第１演算部８８９への制御信号を生成する。主として、分岐命令、リピート命令、算術演算、比較、転送命令等が、８７２のコンテナ１のフィールドで指定される。第２デコーダ８８６は、主として８７３のコンテナ２のオペレーションコードをデコードし、レジスタファイル８９１と第２演算部８９０への制御信号を生成する。主として、ロード／ストア命令、算術論理演算命令、転送命令、比較命令等が、８７３のコンテナ２のフィールドで指定される。第３デコーダ８８７は、主として８７４のコンテナ３のオペレーションコードをデコードし、レジスタファイル８９１と第３演算部８９２への制御信号を生成する。主として、算術論理演算命令、転送命令、比較命令、シフト命令等が、８７４のコンテナ３のフィールドで指定される。第４デコーダ８８８は、主として８７５のコンテナ４のオペレーションコードをデコードし、レジスタファイル８９１と第４演算部８９３への制御信号を生成する。主として、乗算、積和／積差演算、算術演算、シフト命令等が、８７５のコンテナ４のフィールドで指定される。
実施の形態７のデータ処理装置のプロセッサステータスワードＰＳＷは、実施の形態１のデータ処理装置のＰＳＷと同じである。また、実施の形態１のデータ処理装置と同じサブ命令が実行可能である。
図５２は、図５１の制御部８８３内の実行条件判定に関する部分を抜き出したブロック図を示す。第１〜第４デコーダ８８５〜８８８は各々命令実行に必要なデコード結果を第１〜第４実行制御信号生成部９０５〜９０８にそれぞれ出力し、条件実行命令や実行条件指定命令の実行条件を各々第１〜第４実行条件判定部９０１〜９０４に出力する。また、実行条件判定部９０１〜９０４はそれぞれＰＳＷ部９０９（図２０で示しＰＳＷ部１７１の内部構成と同じ）からフラグ情報が入力される。
実行条件判定部９０１〜９０４はそれぞれ、条件実行命令や実行条件指定命令を実行する場合に、実行条件が判定される。自命令の実行条件を指定する条件実行命令処理時に、条件が不成立であった場合には、各々対応する実行制御信号生成部に実行抑止信号がアサートされ、命令実行による状態更新を行う制御信号を強制的にネゲートする。条件が成立した場合には、実行抑止信号はアサートされず、デコード結果に基づいて命令が実行される。実行条件指定命令は各々ペアの命令の実行条件を指定する。実行条件指定命令処理時に、条件が不成立であった場合には、各々ペアのデコーダに対応する実行制御信号生成部に実行抑止信号がアサートされ、命令実行による状態更新を行う制御信号を強制的にネゲートする。条件が成立した場合には、実行抑止信号はアサートされず、デコード結果に基づいて命令が実行される。
例えば、第１デコーダ８８５で処理した命令が実行条件指定命令であった場合には、第１実行条件判定部９０１で実行条件の判定を行う。そして、第１実行条件判定部９０１が実行条件の不成立を判定すると第２実行制御信号生成部９０６に出力する実行抑止信号をアサートし、第２デコーダ８８６のデコード結果に基づく命令の実行を抑止する。一方、第１実行条件判定部９０１が実行条件の成立を判定すると第２実行制御信号生成部９０６に出力する実行抑止信号をアサートせず、第２デコーダ８８６のデコード結果に基づく命令を実行させる。
また、第３デコーダ８８７でデコードした命令が自命令の実行条件を指定する条件実行命令の場合、第３デコーダ８８７では条件が成立した場合に行う処理に必要な制御信号が第３実行制御信号生成部９０７に送られ、条件実行命令の実行条件が第３実行条件判定部９０３に出力される。そして、第３実行条件判定部９０３はＰＳＷ部９０９のフラグ情報と実行条件とに基づいて実行条件判定を行い、条件実行命令で実行条件が不成立の場合には、第３実行制御信号生成部９０７に出力する実行抑止信号をアサートし、第３デコーダ８８７のデコード結果に基づく命令の実行を抑止する。一方、第３実行条件判定部９０３は実行条件が成立の場合には、第３実行制御信号生成部９０７に出力する実行抑止信号をアサートせず、第３デコーダ８８７のデコード結果に基づく命令を実行させる。
このように、実施の形態７のデータ処理装置では、４つのオペレーションを並列に実行可能であるが、それ以上の数のオペレーションを並列に実行する場合にも、本技術を拡張することにより適応可能である。また、ＦＭビット８７１は必ずしも必要ではなく、ＦＭビット８７１を省略して必ず４つのオペレーションを並列に実行するようにしてもよい。また、４ビットのフォーマット指定ビットを設け、４ビットそれぞれ各コンテナの命令の実行順序を指定するようにしてもよい。例えば、４ビットすべて０の場合は、４つのサブ命令を並列に実行し、０と１が混在する場合は０が指定されているコンテナの命令を先に実行し、１が指定されているコンテナの命令をその後に実行する等の制御を行う。どのような実行順序指定を行うのか、どのようなフォーマット指定を行うのかは、必要に応じて設定すればよい。
このように、実施の形態７のデータ処理装置は、実施の形態１のデータ処理装置が２つの命令として扱ったものを１つの命令として扱うことができるた。このような４つのオペレーションを並列に実行する高性能なＶＬＩＷプロセッサの場合にも、実行条件指定命令は有効に作用する。２組の２つのサブ命令（命令１と実行条件指定命令１、命令２と実行条件指定命令２）で、実行条件指定命令１と実行条件指定命令２の実行条件を逆にしておくと、実行条件指定命令１の実行条件成立時に命令１を実行し、実行条件指定命令１の実行条件不成立時に命令２を実行するようにもできる。このように、細やかな実行条件指定ができるので、実施の形態７のデータ処理装置の更に性能はさらに向上する。
＜実施の形態８．＞
実施の形態８として、４つの演算を並列に実行する別のデータ処理装置を示す。実施の形態８のデータ処理装置の命令フォーマットは、実施の形態７のデータ処理装置と同じであり、基本的な構成もほぼ同じである。実施の形態８のデータ処理装置では、実行条件指定命令の命令仕様と、それを実現するための条件判定方法、実行制御信号抑止方法が異なる。
図５３に、実施の形態８のデータ処理装置が処理する実行条件指定（ＥＸＥＣ）命令のビット割り付けを示す。ＣＯＮＤｎ（条件、ｎは１〜３）フィールドは各々対応するサブ命令の実行条件を指定する。ＥＸＥＣ命令が８７２のコンテナ１で指定された場合には、ＣＯＮＤ１フィールド９１２は８７３のコンテナ２におかれたサブ命令の実行条件を、ＣＯＮＤ２フィールド９１３は８７４のコンテナ３におかれたサブ命令の実行条件を、ＣＯＮＤ３フィールド９１４は８７５のコンテナ４におかれたサブ命令の実行条件を、それぞれ指定する。ＥＸＥＣ命令が８７３のコンテナ２で指定された場合には、ＣＯＮＤ１フィールド９１２は８７２のコンテナ１におかれたサブ命令の実行条件を、ＣＯＮＤ２フィールド９１３は８７４のコンテナ３におかれたサブ命令の実行条件を、ＣＯＮＤ３フィールド９１４は８７５のコンテナ４におかれたサブ命令の実行条件を、それぞれ指定する。ＥＸＥＣ命令が８７４のコンテナ３で指定された場合には、ＣＯＮＤ１フィールド９１２は８７２のコンテナ１におかれたサブ命令の実行条件を、ＣＯＮＤ２フィールド９１３は８７３のコンテナ２におかれたサブ命令の実行条件を、ＣＯＮＤ３フィールド９１４は８７５のコンテナ４におかれたサブ命令の実行条件を、それぞれ指定する。ＥＸＥＣ命令が８７５のコンテナ４で指定された場合には、ＣＯＮＤ１フィールド９１２は８７２のコンテナ１におかれたサブ命令の実行条件を、ＣＯＮＤ２フィールド９１３は８７３のコンテナ２におかれたサブ命令の実行条件を、ＣＯＮＤ３フィールド９１４は８７４のコンテナ３におかれたサブ命令の実行条件を、それぞれ指定する。このように、１つの条件指定命令で残り３つのサブ命令の実行条件を指定する。実行条件としては、Ｆ０フラグ４７のみ、Ｆ０フラグ４７とＦ１フラグ４８の２つのフラグの論理積が指定可能で、各フラグの反転も参照可能である。また、実行条件によらず無条件に実行することも指定可能である。
図５４は制御部９２０内の実行条件判定に関する部分を抜き出したブロック図であり、制御部９２０は図５１で示した制御部８８３に相当する。同図に示すように、第１〜第４デコーダ９２１〜９２４はそれぞれ主として８７２〜８７５のコンテナ１〜コンテナ４に格納された命令のデコードを行い、各々第１〜第４実行制御信号生成部９２９〜９３２に命令の実行に必要な情報を含むデコード結果を出力する。また、第１〜第４デコーダ９２１〜９２４はそれぞれ第１〜第４実行条件判定部９２５〜９２８に実行条件を送る。
実行条件指定命令処理時には、対応する実行条件判定部は各ＣＯＮＤフィールドで指定された条件の判定を行い、実行条件不成立時には各ＣＯＮＤフィールドに対応する実行制御信号生成部に出力する実行抑止信号をアサートする。いずれかの実行条件判定部から実行抑止信号がアサートされた実行制御信号生成部では、状態の更新に関する実行制御信号を強制的にネゲートする。自命令の実行条件を指定する条件実行命令処理時で、実行条件不成立時には、各々対応する実行制御信号生成部に実行抑止信号をアサートする。
例えば、第１デコーダ９２１で処理した命令が実行条件指定命令であった場合には、第１実行条件判定部９２５で実行条件の判定を行う。そして、第１実行条件判定部９２５がコンテナ２〜コンテナ４におかれたサブ命令それぞれの実行条件の成立／不成立を判定し、その判定結果が不成立、不成立、成立であった場合、第２実行制御信号生成部９３０及び第３実行制御信号生成部９３１に出力する実行抑止信号をアサートし、第２デコーダ９９２及び第３デコーダ９９３それぞれのデコード結果に基づく命令の実行を抑止し、第４実行制御信号生成部９３２に出力する実行抑止信号をアサートせず、第４デコーダ９２４のデコード結果に基づく命令を実行させる。
実施の形態８のデータ処理装置では、並列に実行しない命令についても、実行条件指定が有効になる。例えば、８７２のコンテナ１で実行条件指定命令を保持し、８７４のコンテナ３と８７５のコンテナ４の２命令がシーケンシャル実行する２命令の場合には、８７４のコンテナ３と８７５のコンテナ４のどちらのサブ命令に対しても、実行条件指定命令で指定された条件が有効になる。また、実行条件指定命令とペアの命令を必ずしも並列に実行しなくてもよい。シーケンシャル実行する２命令の一方が実行条件指定命令であった場合、ペアの命令に対しても実行条件指定命令で指定された条件が有効になる。
実施の形態８のデータ処理装置も、実施の形態７と同様、ＦＭビットはなくてもよいし、異なるフォーマット指定方法をとってもよい。
したがって、実施の形態８のデータ処理装置は、１つの実行条件指定命令により、３つの命令の実行／抑止を制御することができるため、効率的な実行条件指定を行うことができる。
加えて、実施の形態８のデータ処理装置は、１つの条件指定命令で他の３つのオペレーション（サブ命令）の実行条件をそれぞれ独立して記述しているため、それぞれの実行条件を固有に設定することができ、必要最小限のコードサイズで非常に細やかな実行条件の指定が可能になり、少ないコードサイズで命令が記述でき更なる性能向上が実現できる。
＜実施の形態９．＞
実施の形態８の条件指定命令の実行条件指定方法が異なる実施の形態９のデータ処理装置について説明する。実施の形態９のデータ処理装置の命令フォーマットを図５５に示す。実施の形態９のデータ処理装置では、フォーマット指定ビットを備えず、４つのコンテナ９５１〜９５４に保持された４つのサブ命令が必ず並列に実行される。各サブ命令は、１６ビットで構成される。基本的な構成は実施の形態７のデータ処理装置とほぼ同じであり、詳細な説明は省略する。実行条件判定方法は実施の形態８のデータ処理装置とほぼ同じである。ただ、条件指定命令の実行条件指定方法のみが異なる。
図５６に、実施の形態９のデータ処理装置の条件実行命令の命令ビット割り付けを示す。実施の形態９のデータ処理装置では、ＣＯＮＤフィールド９４２で１つの命令の共通条件が指定される。Ｆ０フラグ、Ｆ１フラグ、及び２つのフラグの複合条件が指定可能である。ＯＰＵ１、ＯＰＵ２、ＯＰＵ３フィールド９４３、９４４、９４５では、他の各コンテナに対応する条件が指定される。ＣＯＮＤフィールド９４２で指定された条件が真の場合に実行する、偽の場合に実行する、あるいは、条件によらず無条件に実行するという３つが各コンテナ毎に指定可能になっている。ＯＰＵ１、ＯＰＵ２、ＯＰＵ３フィールド９４３、９４４、９４５とコンテナ１（９５１）〜コンテナ４（９５４）との対応関係は、実施の形態８のデータ処理装置におけるＣＯＮＤＩ１、ＣＯＮＤ２、ＣＯＮＤ３フィールド９１２〜９１４とコンテナ１（８７２）〜コンテナ４（８７５）との対応と同様である。
このように、実施の形態９のデータ処理装置は、実施の形態８と同様、１つの条件指定命令で他の３つのオペレーション（サブ命令）の実行条件を個別に指定できるので、少ない命令コードで非常に細やかな実行条件の指定が可能になり、少ないコードサイズで更なる性能向上が実現する。
なお、実施の形態９のデータ処理装置において、ハードウェアを単純化するために、実行条件を指定し、特定コンテナで指定される命令は条件成立時に実行し、その他のコンテナで指定される命令である第２の演算は条件不成立時に実行するように限定してもよい。また、実行条件を指定し、すべてのサブ命令を条件成立時のみに実行するように限定してもよい。ただし、性能は上述の場合に比べて落ちる場合もある。いずれにしても、性能とコストのトレードオフで、インプリメントする機能を決定すればよい。
また、何らかの実行順序指定やフォーマット指定を行うためのフォーマット指定ビットを命令コード内に備えるようにしてもよい。実行順序指定を行うようにした場合には、実行条件指定命令と並列に実行する命令でなくても、同じ６４ビット内にある命令であれば、実行条件の指定は有効となる。
このような実行条件指定命令をインプリメントすることにより、命令１で実行条件を指定し、命令２は条件成立時に実行し、命令３は条件不成立時に実行し、命令４は実行条件によらず無条件に実行する等の条件分岐命令を伴う一連の処理を一括して行うことができる。このように、実施の形態９のデータ処理装置は、きめ細やかな実行条件指定を１つのサブ命令で実現することにより、各命令に実行条件指定フィールドを備えることなく、効率の良い条件実行が可能となり、処理性能が向上するとともに、コードサイズも削減できる。
発明は詳細に記述されたが、上述した記述は全て例示的なもので限定的ではない。本発明の範囲を離れることなく多くの他の改良や変形が考えられると思われる。
【図１】
0003670668.tif 000002
【図２】
0003670668.tif 000003
【図３】
0003670668.tif 000004
【図４】
0003670668.tif 000005
【図５】
0003670668.tif 000006
【図６】
0003670668.tif 000007
【図７】
0003670668.tif 000008
【図８】
0003670668.tif 000009
【図９】
0003670668.tif 000010
【図１０】
0003670668.tif 000011
【図１１】
0003670668.tif 000012
【図１２】
0003670668.tif 000013
【図１３】
0003670668.tif 000014
【図１４】
0003670668.tif 000015
【図１５】
0003670668.tif 000016
【図１６】
0003670668.tif 000017
【図１７】
0003670668.tif 000018
【図１８】
0003670668.tif 000019
【図１９】
0003670668.tif 000020
【図２０】
0003670668.tif 000021
【図２１】
0003670668.tif 000022
【図２２】
0003670668.tif 000023
【図２３】
0003670668.tif 000024
【図２４】
0003670668.tif 000025
【図２５】
0003670668.tif 000026
【図２６】
0003670668.tif 000027
【図２７】
0003670668.tif 000028
【図２８】
0003670668.tif 000029
【図２９】
0003670668.tif 000030
【図３０】
0003670668.tif 000031
【図３１】
0003670668.tif 000032
【図３２】
0003670668.tif 000033
【図３３】
0003670668.tif 000034
【図３４】
0003670668.tif 000035
【図３５】
0003670668.tif 000036
【図３６】
0003670668.tif 000037
【図３７】
0003670668.tif 000038
【図３８】
0003670668.tif 000039
【図３９】
0003670668.tif 000040
【図４０】
0003670668.tif 000041
【図４１】
0003670668.tif 000042
【図４２】
0003670668.tif 000043
【図４３】
0003670668.tif 000044
【図４４】
0003670668.tif 000045
【図４５】
0003670668.tif 000046
【図４６】
0003670668.tif 000047
【図４７】
0003670668.tif 000048
【図４８】
0003670668.tif 000049
【図４９】
0003670668.tif 000050
【図５０】
0003670668.tif 000051
【図５１】
0003670668.tif 000052
【図５２】
0003670668.tif 000053
【図５３】
0003670668.tif 000054
【図５４】
0003670668.tif 000055
【図５５】
0003670668.tif 000056
【図５６】
0003670668.tif 000057