(57)【特許請求の範囲】
【請求項１】
プログラムにしたがって動作するデータ処理装置であって、前記プログラムに記載中の、第１〜第Ｎ（Ｎ≧２）命令及び実行命令回数Ｍ（Ｍ≧１）が指定可能なステップリピート命令に応答して、前記第１〜第Ｎの命令をＫ（Ｋ＝Ｍ／Ｎの商）回繰り返した後、第１〜第Ｌ（Ｌ＝Ｍ／Ｎの余り）の命令を実行するステップリピート機能を有し、
前記ステップリピート機能は、
前記ステップリピート命令実行時に、前記第１〜第Ｎの命令の各命令の実行毎に命令実行カウント数をカウントし、該命令実行カウント数が前記実行命令回数に達した達成状態か／達成していない未達成状態かを示す実行命令回数判定結果を出力する実行命令回数判定手段と、
前記ステップリピート命令実行時に、第１，第２，…第Ｎ，第１，第２の順に、前記第１〜第Ｎの命令を繰り返し取り込む命令取り込み手段と、
前記命令取り込み手段に取り込まれた命令を順次受け、前記ステップリピート命令実行時に、前記実行命令回数判定結果が前記未達成状態を指示するとき前記命令取り込み手段より受ける命令を順次実行させ、前記実行命令回数判定結果が前記達成状態を指示するとき前記命令取り込み手段より受ける命令を無効にする命令実行制御手段とを備える、
データ処理装置。
【請求項２】
前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か／実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、
前記命令取り込み手段は、Ｌ（Ｌ＝Ｍ／Ｎの余り）が“０”でないとき、前記第１〜第Ｎの命令を（Ｋ＋１）回繰り返し取り込み、（Ｋ＋１）回目に取り込んだ第Ｎの命令の前記命令実行制御手段への付与時に前記ステップリピート命令実行情報を前記非実行状態に設定し、
前記実行命令回数判定手段は、（Ｋ＋１）回目の前記第Ｌの命令の実行中に前記実行命令回数判定結果の指示内容を前記達成状態にし、
前記命令実行制御手段は、前記達成状態を指示する実行命令判定結果に応答して、（Ｋ＋１）回目の第（Ｌ＋１）〜第Ｎの命令を順次無効にする、
請求項１記載のデータ処理装置。
【請求項３】
前記ステップリピート機能は、
前記ステップリピート命令の実行中である実行状態か／実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、
前記実行回数判定結果を受け、前記実行回数判定結果の指示内容の前記未達成状態から前記達成状態への変化時をトリガとして、前記ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、前記ステップリピート命令実行情報を前記非実行状態に設定するタイミング制御手段をさらに備える、
請求項１記載のデータ処理装置。
【請求項４】
複数の命令からなる命令列及び繰り返し実行回数が指定可能なブロックリピート命令に応答して、前記命令列を前記繰り返し実行回数繰り返して実行可能なブロックリピート機能を前記ステップリピート機能と独立してさらに有する、
請求項１ないし請求項３のうち、いずれか１項に記載のデータ処理装置。
【請求項５】
所定の命令と該所定の命令の実行条件を規定した実行条件指定命令とに応答して、条件判定を行って前記所定の命令の実行／抑止を行う条件実行機能をさらに有し、
前記条件実行機能は、
条件用情報を格納する条件用情報格納手段と、
前記実行条件指定命令に応答して、前記条件用情報が前記実行条件を満足するか否かに基づき、前記所定の命令を実行するか抑止するかを制御する実行抑止信号を出力する実行条件判定手段とを備えるとともに、
前記命令取り込み手段及び前記命令実行制御手段を前記ステップリピート機能と共有し、
前記命令取り込み手段は、前記実行条件指定命令の前記実行条件判定手段の判定処理に並行して前記所定の命令を取り込み、
前記命令実行制御手段は、前記実行抑止信号が抑止を指示するときに、前記命令取り込み手段より付与される前記所定の命令を無効にする、
請求項１ないし請求項４のうち、いずれか１項に記載のデータ処理装置。
【請求項６】
前記プログラム中に前記ステップリピート命令に連続して前記第１〜第Ｎの命令が順に記載され、前記ステップリピート命令は、前記第Ｎの命令のアドレス情報をさらに有する、
請求項１ないし請求項５のうち、いずれか１項に記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、高性能なデータ処理装置に関するものであり、特に、そのリピート処理機能に関する。
【０００２】
【従来の技術】
デジタル信号処理等では、同じ命令を繰り返し実行することが多い。幾つかのＤＳＰではこの様な処理を効率よく実行するため、専用の命令と専用のハードウェアを設けている。
【０００３】
これはブロックリピート等と呼ばれる処理であり、ある制御レジスタで指定された命令列を、別の制御レジスタで指定された回数だけ繰り返し実行するものである。ブロックリピートは、例えば、「ＴＭＳ３２０Ｃ５ｘ  Ｕｓｅｒ’ｓ  Ｇｕｉｄｅ，１９９３、３・６・５節」に開示されている。この機能により、繰り返し回数の計数、計数結果の判定、及び繰り返し実行する命令の末尾から先頭への分岐の為の命令等が不要となる。また、同様の例は特開平９−２１２３６１号公報（以下、「公報１」と略する）にも開示されている。
【０００４】
【発明が解決しようとする課題】
上記公報１では、ＦＩＲフィルタを例にとってブロックリピート命令の使用形態を示している（公報１中の図１４）。この例は、積和演算の総数が予め２５６回と判っていた場合であるが、積和演算の総数が予め判っていなかった場合はより複雑な処理が必要となる。詳細は省くが、積和演算総数をリピートブロック内の命令数６で割った商をリピート回数に指定し、その剰余をリピートブロックの後に付け足す、複雑なプログラム作成が必要になる。
【０００５】
この発明は上記問題点を解決するためになされたもので、所定の命令列に含まれる命令を繰り返しながら、指定された命令単位の回数で正確に実行することが可能なデータ処理装置を得ることを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係る請求項１記載のデータ処理装置は、プログラムにしたがって動作し、前記プログラムに記載中の、第１〜第Ｎ（Ｎ≧２）命令及び実行命令回数Ｍ（Ｍ≧１）が指定可能なステップリピート命令に応答して、前記第１〜第Ｎの命令をＫ（Ｋ＝Ｍ／Ｎの商）回繰り返した後、第１〜第Ｌ（Ｌ＝Ｍ／Ｎの余り）の命令を実行するステップリピート機能を有し、前記ステップリピート機能は、前記ステップリピート命令実行時に、前記第１〜第Ｎの命令の各命令の実行毎に命令実行カウント数をカウントし、該命令実行カウント数が前記実行命令回数に達した達成状態か／達成していない未達成状態かを示す実行命令回数判定結果を出力する実行命令回数判定手段と、前記ステップリピート命令実行時に、第１，第２，…第Ｎ，第１，第２の順に、前記第１〜第Ｎの命令を繰り返し取り込む命令取り込み手段と、前記命令取り込み手段に取り込まれた命令を順次受け、前記ステップリピート命令実行時に、前記実行命令回数判定結果が前記未達成状態を指示するとき前記命令取り込み手段より受ける命令を順次実行させ、前記実行命令回数判定結果が前記達成状態を指示するとき前記命令取り込み手段より受ける命令を無効にする命令実行制御手段とを備えている。
【０００７】
請求項２記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か／実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記命令取り込み手段は、Ｌ（Ｌ＝Ｍ／Ｎの余り）が“０”でないとき、前記第１〜第Ｎの命令を（Ｋ＋１）回繰り返し取り込み、（Ｋ＋１）回目に取り込んだ第Ｎの命令の前記命令実行制御手段への付与時に前記ステップリピート命令実行情報を前記非実行状態に設定し、前記実行命令回数判定手段は、（Ｋ＋１）回目の前記第Ｌの命令の実行中に前記実行命令回数判定結果の指示内容を前記達成状態にし、前記命令実行制御手段は、前記達成状態を指示する実行命令判定結果に応答して、（Ｋ＋１）回目の第（Ｌ＋１）〜第Ｎの命令を順次無効にしている。
【０００８】
請求項３記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か／実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記実行回数判定結果を受け、前記実行回数判定結果の指示内容の前記未達成状態から前記達成状態への変化時をトリガとして、前記ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、前記ステップリピート命令実行情報を前記非実行状態に設定するタイミング制御手段をさらに備えている。
【０００９】
請求項４記載のデータ処理装置は、複数の命令からなる命令列及び繰り返し実行回数が指定可能なブロックリピート命令に応答して、前記命令列を前記繰り返し実行回数繰り返して実行可能なブロックリピート機能を前記ステップリピート機能と独立してさらに有している。
【００１０】
請求項５記載のデータ処理装置は、所定の命令と該所定の命令の実行条件を規定した実行条件指定命令とに応答して、条件判定を行って前記所定の命令の実行／抑止を行う条件実行機能をさらに有し、前記条件実行機能は、条件用情報を格納する条件用情報格納手段と、前記実行条件指定命令に応答して、前記条件用情報が前記実行条件を満足するか否かに基づき、前記所定の命令を実行するか抑止するかを制御する実行抑止信号を出力する実行条件判定手段とを備えるとともに、前記命令取り込み手段及び前記命令実行制御手段を前記ステップリピート機能と共有し、前記命令取り込み手段は、前記実行条件指定命令の前記実行条件判定手段の判定処理に並行して前記所定の命令を取り込み、前記命令実行制御手段は、前記実行抑止信号が抑止を指示するときに、前記命令取り込み手段より付与される前記所定の命令を無効にしている。
【００１１】
請求項６記載のデータ処理装置において、前記プログラム中に前記ステップリピート命令に連続して前記第１〜第Ｎの命令が順に記載され、前記ステップリピート命令は、前記第Ｎの命令のアドレス情報をさらに有している。
【００１２】
【発明の実施の形態】
＜基本構成＞
図１に本データ処理装置１００の機能ブロック構成を示す。データ処理装置１００は、ＭＰＵコア部１０１と、ＭＰＵコア部１０１からの要求により命令データのアクセスを行う命令フェッチ部１０２、内蔵命令メモリ１０３、ＭＰＵコア部１０１からの要求によりオペランドデータのアクセスを行うオペランドアクセス部１０４、内蔵データメモリ１０５、命令フェッチ部１０２とオペランドアクセス部１０４からの要求を調停し、データ処理装置１００の外部メモリのアクセス等を行う外部バスインターフェイス部１０６からなる。
【００１３】
ＭＰＵコア部１０１は、命令キュー１１１、制御部１１２、レジスタファイル１１５、第１演算部１１６、第２演算部１１７、ＰＣ部１１８からなる。
【００１４】
命令キュー１１１は、２エントリの３２ビット命令バッファと有効ビット、及び入出力ポインタ等からなり、ＦＩＦＯ（先入れ先出し）方式で制御される。命令キュー１１１は、命令フェッチ部１０２でフェッチされた命令データを一時保持し、制御部１１２に送る。
【００１５】
制御部１１２は、前述の命令キュー１１１の制御、パイプライン制御、命令の実行、命令フェッチ部１０２やオペランドアクセス部１０４とのインターフェイスなど、ＭＰＵコア部１０１のすべての制御を行う。また、制御部１１２には、命令キュー１１１から送られる命令コードをデコードするための命令デコード部１１９があり、２つのデコーダを含む。第１デコーダ１１３は、第１演算部１１６で実行する命令をデコードし、第２デコーダ１１４は、第２演算部１１７で実行する命令をデコードする。
【００１６】
２つのショート命令をシーケンシャルに実行する場合、先行して実行される命令のデコード中に後で実行する側の命令が図示していないプリデコーダでデコードされ、どちらのデコーダでデコードすべきかを判定する。後で実行される命令がどちらのデコーダでも処理できる命令の場合は第１デコーダ１１３でデコードする。先行する命令のデコード後、後で実行する命令の命令コードが選択されたデコーダに取り込まれ、解析される。
【００１７】
レジスタファイル１１５は、複数のレジスタの値を保持し、第１演算部１１６、第２演算部１１７、ＰＣ部１１８、オペランドアクセス部１０４に複数のバスで結合されている。
【００１８】
図２に、第１演算部１１６の詳細ブロック構成を示す。第１演算部１１６は、レジスタファイル１１５と、各々Ｓ１バス３０１、Ｓ２バス３０２、Ｓ３バス３０３によって結合されており、これら３つのバス３０１〜３０３を介してレジスタファイル１１５からデータを読み出し、演算器等にリードオペランドとなるデータやストアデータを転送する。Ｓ１バス３０１は偶数番号のレジスタにのみに、Ｓ２バス３０２は奇数番号のレジスタにのみに結合されており、Ｓ１バス３０１とＳ２バス３０２でレジスタペアの２ワードを並列に転送することもできる。Ｓ３バス３０３は全レジスタに結合されている。
【００１９】
また、第１演算部１１６は、レジスタファイル１１５と、各々Ｄ１バス３１１、Ｗバス３１４で結合されており、Ｄ１バス３１１を介して演算結果や転送データをレジスタファイル１１５に転送し、Ｗバス３１４でロードしたバイトデータをレジスタファイル１１５に転送する。Ｄ１バス３１１、Ｗバス３１４とも、全レジスタに結合されている。さらに、レジスタファイル１１５はオペランドアクセス部１０４と３２ビットのＯＤバス３２２で結合されており、１ワードのデータもしくはレジスタペアの２ワードを並列に転送することが可能である。ＯＤバス３２２の上位／下位１６ビットは、任意のレジスタファイルに書き込みができるようにレジスタファイル１１５の全レジスタに結合されている。
【００２０】
ＡＡラッチ１５１、ＡＢラッチ１５２は、ＡＬＵ１５３の入力ラッチである。ＡＡラッチ１５１は、Ｓ１バス３０１、Ｓ２バス３０２もしくはＳ３バス３０３を介して読み出されたレジスタ値を取り込む。同ラッチ１５１は、ゼロクリアする機能も備えている。ＡＢラッチ１５２は、Ｓ３バス３０３を介して読み出されたレジスタ値もしくは第１デコーダ１１３でデコードの結果生成された１６ビットの即値を取り込み、また、ゼロクリアする機能も備えている。
【００２１】
ＡＬＵ１５３では、主として転送、比較、算術論理演算、オペランドアドレスの計算／転送、オペランドアドレス値のインクリメント／デクリメント、ジャンプ先アドレスの計算／転送等が行われる。演算結果やアドレスモディファイの結果はセレクタ１５５、Ｄ１バス３１１を介して、レジスタファイル１１５中の命令で指定されたレジスタに書き戻される。また、指定された条件が成立した場合には“１”を不成立の場合には“０”をレジスタに書き込む条件セット命令を実行するために、セレクタ１５５は演算結果の最下位ビットに制御部１１２から出力されたデータを埋め込む機能を備える。この場合、演算結果は“０”が出力されるように制御される。ＡＯラッチ１５４は、オペランドのアドレスを保持するラッチであり、ＡＬＵ１５３でのアドレス計算結果もしくはＡＡラッチ１５１に保持されたベースアドレスの値を選択的に保持し、ＯＡバス３２１を介してオペランドアクセス部１０４に出力する。また、ジャンプ先アドレスやリピートエンドアドレスを計算した場合には、ＡＬＵ１５３の出力が、ＪＡバス３２３を介してＰＣ部１１８に転送される。
【００２２】
ＭＯＤ＿Ｓ１５６とＭＯＤ＿Ｅ１５７とは、それぞれ図１のレジスタＣＲ１０及びＣＲ１１に相当する制御レジスタである。比較器１５８は、ＭＯＤ＿Ｅ１５７の値とＳ３バス３０３上のベースアドレスの値とを比較して比較結果を制御部１１２に送る。モジュロアドレッシングがイネーブル状態で、ポストインクリメント／デクリメント付きのレジスタ間接モードで、比較器１５８の比較結果が一致した場合には、ラッチ１５９に保持されているＭＯＤ＿Ｓ１５６の値がセレクタ１５５、Ｄ１バス３１１を介して、レジスタファイル１１５中のベースアドレスレジスタとして指定されたレジスタに書き戻される。
【００２３】
ストアデータ（ＳＤ）レジスタ１６０は、１６ビットのレジスタ２本からなり、Ｓ１バス３０１もしくはＳ２バス３０２の一方、もしくは、Ｓ１バス３０１とＳ２バス３０２の両方に出力されたストアデータを一時保持する。ＳＤレジスタ１６０に保持されたデータは、ラッチ１６１を介して整置回路１６２に転送される。整置回路１６２では、オペランドのアドレスに従って、ストアデータが３２ビット境界に整置され、ラッチ１６３、ＯＤバス３２２を介してオペランドアクセス部１０４に出力される。
【００２４】
また、オペランドアクセス部１０４でロードされたバイトデータは、ＯＤバス３２２を介して、１６ビットのロードデータ（ＬＤ）レジスタ１６４に取り込まれる。ＬＤレジスタ１６４の値は、ラッチ１６５を介して、整置回路１６６に転送される。整置回路１６６では、バイト整置及びバイトデータのゼロ／符号拡張を行う。整置、拡張後のデータが、Ｗバス３１４を介してレジスタファイル１１５中の指定されたレジスタに書き込まれる。１ワード（１６ビット）ロード、２ワード（３２ビット）ロードの場合にはＬＤレジスタを介さず、ＯＤバス３２２からレジスタファイル１１５にロードした値が直接書き込まれる。
【００２５】
制御部１１２中のＰＳＷ部１７１は図２のＰＳＷラッチ１７２や、ＰＳＷ更新回路等からなり、演算結果や命令の実行によりＰＳＷラッチ１７２の値を更新する。ＰＳＷラッチ１７２に値を転送する場合、Ｓ３バス３０３に出力されたデータがＴＰＳＷラッチ１６７を介して、必要なビット（アサインされているビット）のみ転送される。ＰＳＷラッチ１７２の値を読み出す場合には、ＰＳＷ部１７１からＤ１バス３１１に出力され、レジスタファイル１１５に書き込まれる。例外処理時には、Ｄ１バス３１１に出力されたＰＳＷの値がＢＰＳＷラッチ１６８に書き込まれる。ＢＰＳＷラッチ１６８の値をレジスタファイル１１５に転送する場合には、ＢＰＳＷラッチ１６８の値はＳ３バス３０３に読み出され、レジスタファイルなど必要な場所に転送される。アサインされていないビットは強制的に“０”がＳ３バス３０３に出力される。例外からの復帰時には、ＢＰＳＷラッチ１６８の値は、直接ＴＰＳＷラッチ１６７を介して、必要なビット（アサインされているビット）のみＰＳＷラッチ１７２に転送される。
【００２６】
図３は、ＰＣ部１１８の詳細ブロック図である。命令アドレス（ＩＡ）レジスタ１８１は、次にフェッチする命令のアドレスを保持し、次にフェッチする命令のアドレスを命令フェッチ部１０２に出力する。引き続き後続の命令をフェッチする場合には、ＩＡレジスタ１８１からラッチ１８２を介して転送されたアドレス値がインクリメンタ１８３で１インクリメントされて、ＩＡレジスタ１８１に書き戻される。ジャンプやリピート等によりシーケンスが切り替わる場合には、ＩＡレジスタ１８１はＪＡバス３２３を介して転送されるジャンプ先アドレス、リピートブロック開始アドレスを取り込む。
【００２７】
ＳＲＰＴ＿Ｓレジスタ１８４、ＳＲＰＴ＿Ｅレジスタ１８６、ＳＲＰＴ＿Ｃレジスタ１８８はステップリピート制御用の制御レジスタである。ＳＲＰＴ＿Ｓレジスタ１８４はステップリピート処理対象命令列の先頭アドレスを格納するレジスタ、ＳＲＰＴ＿Ｅレジスタ１８６はステップリピート処理対象命令列の最終アドレスを格納するレジスタ、ＳＲＰＴ＿Ｃレジスタ１８８はステップリピート対象命令列に含まれる命令単位の実行命令回数を格納するレジスタである。
【００２８】
最終アドレスは、ステップリピート命令処理時に第１演算部１１６で計算され、ＪＡバス３２３を介してＳＲＰＴ＿Ｅレジスタ１８６に取り込まれる。比較器１８７は、ステップリピートを行うブロックの最終命令のアドレスを保持するＳＲＰＴ＿Ｅレジスタ１８６の値と、フェッチアドレスを保持しているＩＡレジスタ１８１の値とを比較し、その比較結果を制御部１１２に出力する。
【００２９】
もし、ステップリピート処理中であり、ステップリピートする回数を保持するＳＲＰＴ＿Ｃレジスタ１８８の値が“１”より大きい場合、ＳＲＰＴ＿Ｓレジスタ１８４に保持されているステップリピートを行うブロックの開始アドレスが、ラッチ１８５、ＪＡバス３２３を介して、ＩＡレジスタ１８１に転送される。
【００３０】
ステップリピート処理中は、ステップリピート群の命令列の一つの命令が実行されるたびに、ＳＲＰＴ＿Ｃレジスタ１８８の値は、ラッチ１８９を介してデクリメンタ１９０で“１”だけデクリメントされる。デクリメントした値が、“０”であった場合にはそれ以上のデクリメントは行わない。
【００３１】
ＳＲＰＴ＿Ｓレジスタ１８４、ＳＲＰＴ＿Ｅレジスタ１８６、ＲＰＴ＿Ｃラッチ１８８は、Ｄ１バス３１１からの入力ポートとＳ３バス３０３への出力ポートを持ち、必要に応じてステップリピート時の初期設定や待避復帰が行なわれる。
【００３２】
実行ステージＰＣ（ＥＰＣ）１９４は実行中の命令のＰＣ値を保持し、次命令ＰＣ（ＮＰＣ）１９１は次に実行する命令のＰＣ値を保持する。ＮＰＣ１９１は、実行段階でジャンプが起こった場合、ＪＡバス３２３上のジャンプ先アドレス値を取り込み、リピートで分岐が起こった場合には、ラッチ１８５からリピートを行うブロックの先頭アドレスを取り込む。それ以外の場合には、ラッチ１９２を介して転送されたＮＰＣ１９１の値が、インクリメンタ１９３でインクリメントされ、ＮＰＣ１９１に書き戻される。サブルーチンジャンプ命令の場合には、ラッチ１９２の値が戻り先アドレスとしてＤ１バス３１１に出力され、レジスタファイル１１５中のリンクレジスタとして定義されているレジスタ（仮に、レジスタＲ１３とする）に書き戻される。また、次の命令が実行状態に入る場合には、ラッチ１９２の値がＥＰＣ１９４に転送される。実行中の命令のＰＣ値を参照する場合には、ＥＰＣ１９４の値がＳ３バス３０３に出力され、第１演算部１１６に転送される。例外や割り込み等が検出された場合には、ＥＰＣ１９４の値がラッチ１９５を介してＢＰＣ１９６に転送される。ＢＰＣ１９６は、Ｄ１バス３１１からの入力ポートとＳ３バス３０３への出力ポートを持ち、必要に応じて待避復帰が行なわれる。
【００３３】
図４に、第２演算部１１７の詳細ブロック図を示す。第２演算部１１７は、レジスタファイル１１５と、各々Ｓ４バス３０４、Ｓ５バス３０５で結合されており、この２つのバス３０４，３０５を介してデータをレジスタファイル１１５から読み出す。Ｓ４バス３０４とＳ５バス３０５でレジスタペアの２ワードを並列に転送することも可能である。また、第２演算部１１７は、レジスタファイル１１５と、Ｄ２バス３１２、Ｄ３バス３１３で結合されており、この２つのバス３１２，３１３を介してデータをレジスタファイル１１５内の各レジスタに書き込むことができる。Ｄ２バス３１２は偶数番号のレジスタのみに、Ｄ３バス３１３は奇数番号のレジスタのみに各々結合されている。Ｄ２バス３１２とＤ３バス３１３でレジスタペアの２ワードを並列に転送することもできる。
【００３４】
４０ビットのＡＬＵ２０１は、ビット番号０からビット番号７までの８ビットがアキュムレータのガードビット用加算器、ビット番号８からビット番号２３までの１６ビットが算術論理演算器、ビット番号２４からビット番号３９までの１６ビットがアキュムレータの下位１６ビットを加算するための加算器になっており、４０ビットまでの加減算と、１６ビットの論理演算を行う。
【００３５】
Ａラッチ２０２、Ｂラッチ２０３は、ＡＬＵ２０１の４０ビット入力ラッチである。Ａラッチ２０２は、Ｓ４バス３０４からレジスタ値をビット番号８からビット番号２３の位置に取り込むか、シフタ２０４を介して、アキュムレータ２０８の値をそのままもしくは１６ビット算術右シフトした値を取り込む。シフタ２０５は、アキュムレータ２０８の値を配線２０６（ガードビット８ビット）、Ｓ４バス３０４（上位１６ビット）、Ｓ５バス３０５（下位１６ビット）を介して取り込むか、レジスタの値をＳ５バス３０５のみ、もしくは、Ｓ４バス３０４とＳ５バス３０５の両方を介して１６ビットもしくは３２ビットのデータを右詰めで取り込み、４０ビットに符号拡張する。シフタ２０５は、入力したデータを左３ビットから右２ビットの任意のシフト量で算術シフトし出力する。Ｂラッチ２０３は、Ｓ５バス３０５上のデータをビット番号８からビット番号２３の位置に取り込むか、乗算器２１１の出力、もしくは、シフタ２０５の出力を取り込む。Ａラッチ２０２、Ｂラッチ２０３は、各々ゼロクリアしたり定数の値に設定したりする機能も持つ。
【００３６】
ＡＬＵ２０１の出力は、サチュレーション回路２０９に出力される。サチュレーション回路２０９は、上位１６ビット、もしくは、上位下位あわせた３２ビットにする際に、ガードビットを見て、各々１６ビットもしくは３２ビットで表現できる最大値もしくは最小値にクリッピングする機能を備える。もちろんそのまま出力する機能もある。サチュレーション回路２０９の出力は配線２０７に結合されている。
【００３７】
デスティネーションオペランドがアキュムレータ２０８の場合には、配線２０７の値がアキュムレータ２０８に書き込まれる。デスティネーションオペランドがレジスタの場合は、配線２０７の値が、Ｄ２バス３１２やＤ３バス３１３を介して、レジスタファイル１１５に書き込まれる。１ワード転送の場合にはデスティネーションレジスタの番号が偶数の場合Ｄ２バス３１２に、奇数の場合にはＤ３バス３１３に出力される。２ワード転送の場合には、上位側の１６ビットデータがＤ２バス３１２に、下位側のビットデータがＤ３バス３１３に出力される。また、転送命令、絶対値の計算、最大値設定命令や、最小値設定命令を実行するために、Ａラッチ２０２とＢラッチ２０３の出力が、配線２０７に結合されており、Ａラッチ２０２とＢラッチ２０３の値をアキュムレータ２０８やレジスタファイル１１５に転送することが可能である。
【００３８】
プライオリティエンコーダ２１０は、ラッチＢ２０３の値を取り込み、固定小数点フォーマットの数を正規化するのに必要なシフト量を計算し、レジスタファイル１１５に書き戻すために結果をＤ２バス３１２もしくはＤ３バス３１３に出力する。
【００３９】
Ｘラッチ２１２、Ｙラッチ２１３は乗算器２１１の入力レジスタであり、各々、Ｓ４バス３０４、Ｓ５バス３０５の１６ビットの値を取り込み、１７ビットにゼロ拡張もしくは符号拡張する機能を備える。乗算器２１１は、１７ビットｘ１７ビットの乗算器であり、Ｘラッチ２１２に格納された値とＹラッチ２１３に格納された値との乗算を行う。積和命令や積差命令の場合には、乗算結果はＰラッチ２１４に取り込まれ、Ｂラッチ２０３に送られる。乗算命令でデスティネーションオペランドがアキュムレータ２０８の場合には、乗算結果をアキュムレータ２０８に書き込む。
【００４０】
バレルシフタ２１５は、４０ビットもしくは１６ビットのデータに対して、左右１６ビットまでの算術／論理シフトが可能である。シフトデータは、アキュムレータ２０８の値もしくはＳ４バス３０４を介してレジスタの値がシフトデータ（ＳＤ）ラッチ２１７に取り込まれる。シフト量については、即値もしくはレジスタ値がＳ５バス３０５を介してシフト量（ＳＣ）ラッチ２１６に取り込まれる。バレルシフタ２１５はＳＤラッチ２１７のデータをＳＣラッチ２１６で指定されるシフト量だけ、オペレーションコードで指定されたシフトを行う。シフト結果は、サチュレーション回路２０９に出力され、ＡＬＵでの演算結果と同様、必要に応じてサチュレーションが行われ、配線２０７に出力される。配線２０７に出力された値は、アキュムレータ２０８もしくはＤ２バス３１２、Ｄ３バス３１３を介してレジスタファイル１１５に書き戻される。
【００４１】
即値ラッチ２１８は、第２デコーダ１１４で生成された６ビットの即値を１６ビットに拡張して保持し、Ｓ５バス３０５を介して演算器に転送する。ビット操作命令のビットマスクもここで生成される。
【００４２】
次に本データ処理装置のパイプライン処理について説明する。図５はパイプライン処理を示す図である。本データ処理装置は、命令データのフェッチを行う命令フェッチ（ＩＦ）ステージ４０１、命令の解析を行う命令デコード（Ｄ）ステージ４０２、演算実行を行う命令実行（Ｅ）ステージ４０３、データメモリのアクセスを行うメモリアクセス（Ｍ）ステージ４０４、メモリからロードしたバイトオペランドをレジスタへ書き込むライトバック（Ｗ）ステージ４０５の５段のパイプライン処理を行う。Ｅステージ４０３での演算結果のレジスタへの書き込みはＥステージ４０３で完了し、ワード（２バイト）、２ワード（４バイト）ロード時のレジスタへの書き込みはＭステージ４０４で完了する。積和／積差演算に関しては、更に乗算と加算の２段のパイプラインで命令の実行を行う。後段の処理を命令実行２（Ｅ２）ステージ４０６と呼ぶ。連続する積和／積差演算を１回／１クロックサイクルのスループットで実行できる。
【００４３】
ＩＦステージ４０１では、主として命令のフェッチ、命令キュー１１１の管理、リピート制御が行われる。命令フェッチ部１０２、内蔵命令メモリ１０３、外部バスインターフェイス部１０６、命令キュー１１１、ＰＣ部１１８のＩＡレジスタ１８１、ラッチ１８２、インクリメンタ１８３、比較器１８７等や制御部１１２のＩＦステージステージ制御、命令フェッチ制御、ＰＣ部１１８制御等を行う部分が、このＩＦステージ４０１の制御で動作する。ＩＦステージ４０１は、Ｅステージ４０３のジャンプで初期化される。
【００４４】
フェッチアドレスは、ＩＡレジスタ１８１で保持される。Ｅステージ４０３でジャンプが起こるとＪＡバス３２３を介してジャンプ先アドレスを取り込み、初期化を行う。シーケンシャルに命令データをフェッチする場合には、インクリメンタ１８３でアドレスをインクリメントする。ステップリピート処理中に、比較器１８７でＩＡレジスタ１８１の値とＳＲＰＴ＿Ｅレジスタ１８６の値が一致していることが検出され、かつ、ＳＲＰＴ＿Ｃレジスタ１８８の値が“１”より大きければ、シーケンスの切り替え制御が行われる。この場合、ＳＲＰＴ＿Ｓレジスタ１８４に保持されている値がラッチ１８５、ＪＡバス３２３を介してＩＡレジスタ１８１に転送される。
【００４５】
ＩＡレジスタ１８１の値は命令フェッチ部１０２に送られ、命令フェッチ部１０２が命令データのフェッチを行う。対応する命令データが内蔵命令メモリ１０３にある場合には、内蔵命令メモリ１０３から命令コードを読み出す。この場合、１クロックサイクルで３２ビットの命令のフェッチを完了する。対応する命令データが内蔵命令メモリ１０３にない場合には、外部バスインターフェイス部１０６に命令フェッチ要求を出す。外部バスインターフェイス部１０６は、オペランドアクセス部１０４からの要求とを調停し、命令の取り込みが可能になったら、外部のメモリから命令データを取り込み、命令フェッチ部１０２に送る。外部バスインターフェイス部１０６は、最小２クロックサイクルで外部メモリのアクセスを行うことが可能である。命令フェッチ部１０２は取り込まれた命令を、命令キュー１１１に転送する。命令キュー１１１は２エントリのキューになっており、ＦＩＦＯ制御で取り込まれた命令コードを、命令デコード部１１９に出力する。
【００４６】
Ｄステージ４０２では、命令デコード部１１９でオペレーションコードの解析を行い、第１演算部１１６、第２演算部１１７、ＰＣ部１１８等で命令の実行を行うための制御信号群を生成する。Ｄステージ４０２は、Ｅステージ４０３のジャンプで初期化される。命令キュー１１１から送られてくる命令コードが無効な場合には、アイドルサイクルとなり、有効な命令コードが取り込まれるまで待つ。Ｅステージ４０３が次の処理を開始できない場合には、演算器等に送る制御信号を無効化し、Ｅステージ４０３での先行命令の処理の終了を待つ。例えば、Ｅステージ４０３で実行中の命令がメモリアクセスを行う命令であり、Ｍステージ４０４でのメモリアクセスが終了していない場合にこのような状態になる。
【００４７】
Ｄステージ４０２では、シーケンシャル実行を行う２命令の分割や、２サイクル実行命令のシーケンス制御も行う。さらに、スコアボードレジスタ（図示せず）を用いたロードオペランドの干渉チェックや第２演算部１１７での演算器の干渉チェック等も行い、干渉が検出された場合には、干渉が解消されるまで制御信号の出力を抑止する。
【００４８】
＜ステップリピート処理＞
ステップリピート処理中であるか否かは、図６に示すプロセッサステータスワード（以下ＰＳＷ）中のＳＲＰビット４３によって示される。ＳＲＰビット４３に“１”がセットされているとき、ステップリピートの処理中である。ＳＲＰビット４３はステップリピート命令の実行によりセットされ、ステップリピート処理の終了によってクリアされる。またＰＳＷに対する通常のデータ転送処理によっても任意の値を設定することができ、割り込みや例外の発生時にはパックアップレジスタに待避される。ステップリピート処理の終了検出については後で説明する。
【００４９】
なお、ＳＭビット４１はスタックモードを示すビットであり、ＳＭビット４１が“０”の場合は割り込みモードであることを示し、“１”の場合はユーザーモードであることを示す。ＰＳＷのビット番号５は割り込みイネーブルを指定するＩＥビット４２であり、“０”の場合は割り込みをマスク（アサートされても無視）し、“１”の場合は割り込みを受け付ける。ＰＳＷのビット番号７はモジュロイネーブルを指定するＭＤビット４４であり、“０”の場合はモジュロアドレッシングをディスエーブル状態にし、“１”の場合はモジュロアドレッシングをイネーブル状態にする。ＰＳＷのビット番号１２は実行制御フラグ（Ｆ０フラグ）４７であり、比較命令の比較結果などがこのフラグにセットされる。ＰＳＷのビット番号１５はキャリー・フラグ（Ｃフラグ）４９であり、加減算命令実行時のキャリーがこのフラグにセットされる。
【００５０】
ステップリピート命令は、ＳＲＰＴ＿Ｓレジスタ１８４、ＳＲＰＴ＿Ｅレジスタ１８６、及ぴＳＲＰＴ＿Ｃレジスタ１８８に所定の値を設定すると同時に、ＳＲＰビット４３に“１”をセットする命令である。図７はステップリピート命令ＳＲＥＰのニーモニックを示したものであり、この命令は２クロックサイクルをかけて実行される。
【００５１】
第１の実行サイクルにおいて、第一演算部１１６はＳＲＥＰ命令の命令アドレス値と図７の第３項Ｌａｂｅｌで指定された値を足し合わせ、ＪＡバスを介してこの結果をＳＲＰＴ＿Ｅレジスタ１８６にセットする。ＳＲＥＰ命令の命令アドレスはＥＰＣ１９４からＳ３バス３０３を介して読み込まれる。図７の第３項Ｌａｂｅｌの転送経路は図示しない。これと同時にＳＲＥＰ命令の次の命令アドレスがＮＰＣ１９１から読み出され、Ｄ１バス３１１を介してＳＲＰＴ＿Ｓレジスタ１８４にセットされる。
【００５２】
第２の実行サイクルにおいて、図７の第２項Ｒｓｒｓで指定されたレジスタより読み出された値がＳ３バス３０３を介して第１演算部１１６に与えられ、この値は第一演算部１１６をスルーしＤ１バス３１１を介してＳＲＰＴ＿Ｃレジスタ１８８にセットされる。この時、ＳＲＰビット４３に“１”がセットされる。ここで、ステップリピート命令ＳＲＥＰは、図８に示すビットマップに割り付けられるべき命令である。
【００５３】
同図に示すように、フィールド８１にはＳＲＥＰ命令であることを示すコードが、フィールド８３にはＲｓｒｓで指定されたレジスタ番号が、フィールド８４にはＬａｂｅｌで指定された値が格納される。この時、フィールド８２は使用されないため“０”が格納される。また、リピート処理対象命令列の命令を幾つ実行するか予め判っている場合にはＳＲＥＰＩ命令を用いることができる。図９にＳＲＥＰＩ命令のニーモニックを示す。第２項にはＲＰＴ＿Ｃ１８８に設定すべき値を指定するが、この値はフィールド８２とフィールド８３の両方を合せた領域に格納される。
【００５４】
＜実施の形態１＞
図１０はこの発明の実施の形態１であるデータ処理装置におけるステップリピート実行に関する制御部１１２の構成を示したものである。同図において、実行制御信号生成部９１０は、汎用レジスタや制御レジスタへの書き込み許可信号、演算フラグの更新信号、メモリヘの書き込み要求信号などを生成するブロックであり、プログラマが認識できる全リソース（ハードウェアリソース）の更新制御信号はこのブロックで生成される。レジスタからバスへの読み出し等、プログラマの認識するリソースの更新に関与しない制御信号には別のブロック（図示せず）で生成されるものもある。
【００５５】
実行制御信号生成部９１０には、リピート終了フラグ９０３と、複数のデータラッチ群９０８を介した命令コード９０７及び最終命令フラグ９０６が与えられている。データラッチ群９０８は、命令フェッチステージで読み込んだ命令コード９０７を実行制御信号生成部９１３の動作するステージまでパイプライン転送するためのものである。
【００５６】
データラッチ群９０８はデータラッチ９０８Ａ〜９０８Ｄから構成され半クロック毎にパイプライン転送を行う。したがって、一つの命令コード９０７に着目した場合、データラッチ９０８Ａは命令フェッチステージのクロックの“Ｌ”区間に命令コード９０７をラッチし、データラッチ９０８Ｂはデコードステージのクロックの“Ｈ”区間に命令コード９０７をラッチし、データラッチ９０８Ｃはデコードステージのクロックの“Ｌ”区間に命令コード９０７をラッチし、データラッチ９０８Ｄは命令実行ステージのクロックの“Ｈ”区間に命令コード９０７をラッチすることになる。
【００５７】
リピート終了フラグ９０３は、ステップリピートの処理中で、かつＳＲＰＴ＿Ｃレジスタ１８８に当初指定された実行命令回数の命令実行を完了したことを示すものである。これはＳＲＰＴ＿Ｃレジスタ１８８が“０”でＳＲＰビット４３が“１”の時、アサートされる。図１０に示すように、リピート終了フラグ９０３は、ゼロ判定器９００出力とＳＲＰフラグ４３の値とのＡＮＤゲート９０１による論理積により求められ、その後、ラッチ９０２によって所望の位相に合せ込まれて出力される。なお、ゼロ判定器９００はＳＲＰＴ＿Ｃレジスタ１８８の値が“０”の時に“１”を出力するものである。
【００５８】
基本的に実行制御信号生成部９１０は、データラッチ群９０８を介して与えられた命令コード９０７に基いて順次実行制御信号を生成して命令コード９０７に規定された命令を実行させる。しかしながらリピート終了フラグ９０３がアサート（実行命令回数の命令実行達成状態）されている時は、命令コード９０７の内容に関わらず全ての実行制御信号をネゲートする。その結果、リピート終了フラグ９０３がアサートされている期間に実行された命令は、全てＮＯＰと同様の動作となり無効にされる。
【００５９】
一方、最終命令フラグ９０６は、ステップリピートの処理中であり、ＳＲＰＴ＿Ｃレジスタ１８８に指定された命令数の実行を完了しており、かつ命令フェッチによって読み込まれた命令コード９０７がステップリピート処理対象命令列の最終命令であるか否かを“１”／“０”で示している。最終命令フラグ９０６はラッチ９０４を介したＰＣ部１１８の比較器１８７出カと、リピート終了フラグ９０３のＡＮＤゲート９０５による論理積によって求められる。なお、比較器１８７はＳＲＰＴ＿Ｅレジスタ１８６とＩＡ１８１とを比較し、両者の値が等しい時に“１”を出カする。
【００６０】
最終命令フラグ９０６は対応する命令コード９０７とともにデータラッチ群９０８をパイプライン転送され、対応する命令コード９０７の命令実行時にＳＲＰクリア信号９０９となる。ＳＲＰビット４３は、ＳＲＰクリア信号９０９が与えられることによって“０”にクリアされる。
【００６１】
図１１は、図１０で示した実施の形態１の制御部によるステップリピート機能を用いたＦＩＲフィルタ処理の実現例を示したものである。図１１において、命令Ｎ＋６はステップリピート命令であり、ＳＲＰＴ＿Ｓレジスタ１８４には命令Ｎ＋７のアドレスが、ＳＲＰＴ＿Ｅレジスタ１８６には命令Ｎ＋１２のアドレスが、ＳＲＰＴ＿Ｃレジスタ１８８には前述したレジスタＲ１３に格納されている値が、それぞれ設定される。なお、“｜｜”は２つの命令を並列に実行することを示す。
【００６２】
これにより命令Ｎ＋７〜命令Ｎ＋１２の６命令が繰り返しフェッチされ、予めレジスタＲ１３に設定されていた値（実行命令回数）に対応する回数分、命令が実行される。例えばレジスタＲ１３に“１２８”が設定されていたならば、命令Ｎ＋７〜Ｎ＋１２を２１回繰り返し（小計１２６回）、その後、命令Ｎ＋７，命令Ｎ＋８を各１回（小計２回）実行し、合計で１２８個の命令を実行する。命令Ｎ＋８に引き続いて２２回目にフェッチされた命令Ｎ＋９〜Ｎ＋１２は、実行ステージで実行制御信号生成部９１０命令実行制御信号の強制的ネゲートすることによりＮＯＰ化（無効化）される。レジスタＲ１３に“１２７”が設定されていたならば、命令Ｎ＋７〜Ｎ＋１２を２１回と、その後命令Ｎ＋７を１回実行し、合計１２７個の命令を実行する。そして、命令Ｎ＋７に引き続いてフェッチされていた命令Ｎ＋８〜Ｎ＋１２はＮＯＰ化される。
【００６３】
図１２はレジスタＲ１３に“１２７”が設定されていたときの様子を示した図である。説明の簡単化のため第２演算部１１７で実行される命令のパイプライン動作のみを示す。命令Ｎ＋１２はステップリピート対象命令列の最終命令であり、その命令アドレスはＳＲＰＴ＿Ｅレジスタ１８６の値と一致する。▲２▼で示す命令Ｎ＋１２の２１回目のフェッチ時にはＳＲＰＴ＿Ｃレジスタ１８８は“０”でないため、次に、ＳＲＰＴ＿Ｓレジスタ１８４で示される命令Ｎ＋７をフェッチする。▲３▼で示す命令Ｎ＋７を実行した時点でＳＲＰＴ＿Ｃレジスタ１８８の値が“０”となるため、▲８▼で示す命令Ｎ＋１２のフェッチ後は、通常どおり命令アドレスをインクリメントして、▲９▼で示す命令Ｎ＋１３をフェッチする。ＳＲＰＴ＿Ｃレジスタ１８８が“０”になってからステップリピート処理を終了する（ＳＲＰビット４３が“０”になる）までに実行された▲４▼から▲８▼の命令Ｎ＋８〜Ｎ＋１２は実行制御信号生成部９１０によって全てＮＯＰ化される。これらの命令はＮＯＰ化されているためＥ２で示されるパイプラインステージは動作しない。
【００６４】
このように、実施の形態１のデータ処理装置は、ステップリピート命令実行時に、リピート終了フラグ９０３が達成状態を指示する（“１”）ときデータラッチ群９０８より受ける命令を順次無効にしている。
【００６５】
したがって、ステップリピート命令で指定された命令列の命令単位の総実行回数が実行命令回数に達した後は、データラッチ群９０８に取り込まれた命令を確実に無効にすることができるため、命令列に含まれる命令を繰り返しながら、指定された命令単位の回数（実行命令回数）で正確に実行することができる。
【００６６】
その結果、プログラム設計者は、ステップリピート処理を活用することにより、プログラム実行時に命令の実行回数が動的に決定される場合にも、容易にプログラムを作成することができる。
【００６７】
＜実施の形態２＞
実施の形態１の構成では、ステップリピート対象命令列が多くの命令を含んでいた場合、例えば３０の命令を含んでいた場合に、命令列の先頭命令を実行した時点でＳＲＰＴ＿Ｃレジスタ１８８の値が“０”になったならば、残り２９命令はＮＯＰ化して実行されることになる。
【００６８】
実施の形態２のデータ処理装置は、この様なケースを想定して、ステップリピート処理中にＳＲＰＴ＿Ｃレジスタ１８８の値が“０”になったならば、ＳＲＰＴ＿Ｅレジスタ１８６の値で示される命令の次の命令（すなわち、ステップリピート命令処理後に実行すべき命令）に分岐する制御を行う装置である。
【００６９】
図１３は実施の形態２のデータ処理装置における制御部１１２の構成を示す説明図である。同図に示すように、タイミング発生器９１１はリピート終了フラグ９０３に基づいてＳＲＰクリア信号９０９及び分岐用制御信号ＢＳを生成する。なお、最終命令フラグ９０６が生成するラッチ９０４及びＡＮＤゲート９０５が省略された点を除いて、他の構成は図１０で示した実施の形態１の制御部と同様である。
【００７０】
分岐処理の実行自体は通常の分岐処理と同様に行われ、必要に応じて、ＩＦステージあるいはＤステージ以降のパイプラインステージをフラッシュする。すなわち、分岐の実行以前にフェッチされ、未だ実行されていない命令を消し去る。分岐先の命令アドレスは通常の分岐命令と同様に第１演算部１１６で計算され、ＪＡバス３２３を介してＩＡ１８１に設定される。分岐命令の場合は、Ｓ３バス３０３を介して与えられたＥＰＣ１９４の値と、図示しない経路より与えられた所望の分岐変位の加算により分岐先アドレスが求められる。ステップリピートの終了による分岐では、Ｓ３バス３０３を介して与えられたＳＲＰＴ＿Ｅレジスタ１８６と、別途与えられた即値“１”の加算により分岐先アドレスを求める。これら、一連の動作は、タイミング発生器９１１の生成する分岐用制御信号ＢＳ信号に基づいて、命令デコード部１１９（図２参照）が制御する。
【００７１】
図１４を用いてタイミング発生器９１１の動作のタイミングを説明する。サイクル１でＳＲＰＴ＿Ｃレジスタ１８８に指定された実行命令回数目の命令である最後の命令を実行すると、サイクル２でリピート終了フラグ９０３がアサートされ、アサートされたリピート終了フラグ９０３をトリガとしてタイミング発生器９１１は種々の分岐用制御信号ＢＳを生成する。この分岐用制御信号ＢＳによって下記の分岐処理が行われる。
【００７２】
サイクル２でＳＲＰＴ＿Ｅレジスタ１８６の値はＳ３バス３０３に読み出される。サイクル３で、Ｓ３バス３０３上の値、即ちＳＲＰＴ＿Ｅレジスタ１８６の値は第１演算部１１６に読み込まれ、同じタイミングで読み込まれた即値“１”と足し合わせられる。この様に生成された分岐先命令アドレスは直ちにＩＡ１８１に設定される。また、タイミング発生器９１１は、サイクル３の期間中、ＳＲＰクリア信号９０９をアサートする。
【００７３】
図１５は、図１１においてレジスタＲ１３に“１２７”が設定されていた場合の動作を示したものである。▲３▼に示す命令Ｎ＋７の実行（Ｅ）によってＳＲＰＴ＿Ｃレジスタ１８８の値が“０”なる（このサイクルが図１４のサイクル１となる）と、その次の次のサイクル、即ちＮＯＰ化された▲５▼に示す命令Ｎ＋９の実行（Ｅ）サイクルに合せて命令Ｎ＋１３への分岐が実行される。この時、▲４▼の命令Ｎ＋８と▲５▼の命令Ｎ＋９はＮＯＰ化されて実行されるが、既にフェッチされていた▲６▼の命令Ｎ＋１０と▲７▼の命令Ｎ＋１１はパイプラインのフラッシュ処理によって処理を取りやめる。分岐先の▲８▼で示す命令Ｎ＋１３は、分岐実行の次のサイクルから命令フェッチが行われる。
【００７４】
実施の形態１の図１２と比較すると、１サイクル早く、ステップリピート命令処理後に実行すべき命令Ｎ＋１３のフェッチを開始することができる。
【００７５】
このように、実施の形態２のデータ処理装置のタイミング発生器９１１は、リピート終了フラグ９０３の“１”変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する分岐用制御信号ＢＳを発生するとともに、所定のタイミングでＳＲＰクリア信号９０９をアサート（実行命令回数の命令実行の達成を指示）させている。
【００７６】
したがって、ステップリピート命令対象の命令列の命令単位の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【００７７】
このように、実施の形態２のデータ処理装置は、タイミング発生器９１１を追加する程度の極めてわずかな制御部を追加するだけで、実施の形態１で示したデータ処理装置のステップリピート命令処理性能を更に高めることができる。
【００７８】
＜実施の形態３＞
なお、図３等で示したブロックリピート用のリソース（ＳＲＰビット４３、ＳＲＰＴ＿Ｓレジスタ１８４、ＳＲＰＴ＿Ｅレジスタ１８６、ＳＲＰＴ＿Ｃレジスタ１８及びその周辺の比較器等）に加えて、公報１で示されたようなブロック内で指定された命令列を所定回数繰り返す従来のブロックリピート用のリソースを新たに別途追加してブロックリピート機能を追加することも可能である。
【００７９】
例えば、図６のＰＳＷにブロックリピートの実行の有無を示すビットを追加して、ブロックリピート処理対象命令列の先頭命令のアドレスを格納するレジスタ、ブロックリピート処理対象命令列の最終命令のアドレスを格納するレジスタ及びブロックリピート対象命令列の繰り返し実行回数を格納するレジスタを、ＳＲＰＴ＿Ｓレジスタ１８４、ＳＲＰＴ＿Ｅレジスタ１８６及びＳＲＰＴ＿Ｃレジスタ１８８と同様な接続関係となるようにＰＣ部１１８にそれぞれ設け、これら３つのレジスタに対して、図３のラッチ１８９、デクリメンタ１９０、比較器１８７及びラッチ１８５に対応する周辺構成をＰＣ部１１８内に追加すれば良い。
【００８０】
このようにステップリピート用リソースに加え、ブロックリピート用リソースを追加したのが実施の形態３のデータ処理装置である。なお、ステップリピート機能は実施の形態１、実施の形態２のいずれの構成で実現しても良い。
【００８１】
したがって、実施の形態３のデータ処理装置は、予め処理回数が決まっているリピート処理にはブロックリピート用のリソースを用いてブロックリピート処理を行わせ、処理回数が実行途中で動的に決定される場合には、図３等で示したステップリピート用のリソースを用いてステップリピート処理を実行させるという選択も可能となり、より一層プログラム作成が容易となる。また、ブロックリピートで指定した命令列の中で更にステップリピート処理を行うなどという階層利用も可能となる。
【００８２】
なお、新たにリソースを追加することなく、図３等で示したステップリピート用のリソースをそのまま上記ブロックリピート用のリソースとしても用い、必要に応じてステップリピート用あるいはブロックリピート用を選択的に行うこともできる。ただし、この場合、上述した階層利用は不可能となる。また、ステップリピートとブロックリピートのいずれを実行するか識別するための手段が必要なことは言うまでもないことであるが、これは容易に実現できる。例えば、図６に示したＰＳＷにブロックリピートの実行中であることを示すビットを追加し、ＰＳＷの状態によっていずれかを選択すればよい。
【００８３】
＜実施の形態４＞
最近のデータ処理装置では、フラグの値に応じてフェッチした命令をＮＯＰ化する機能、いわゆる条件実行機能を有しているものがある。例えば、国際公開番号ＷＯ９８／３３１１５号公報（以下、「公報２」と略す。）の図２７等に基本的な構成が開示されている。この様な条件実行を実現するためには、ＰＳＷに保持したフラグ情報及び実行条件命令に規定された実行条件に基いて、上記実行条件命令に対応づけられた所定の命令を実行すべきかＮＯＰ化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【００８４】
また、上記公報２では、一方のサブ命令が他方のサブ命令の実行条件を指定する、という方法で条件実行を実現している。さらに、他の方法として、例えば、「"ACORN RISC MACHINE FAMILY DATA MANUAL, page 2-29" VLSI Technology inc」に開示された命令のように、所定の命令を規定する命令ワード内の特定フィールドに実行条件を併せて指定する、という方法で条件実行を実現するものもある。上記文献の条件実行を実現するためには、ＰＳＷに保持したフラグ情報及び命令ワード内に記述された実行条件に基いて、上記所定の命令を実行すべきかＮＯＰ化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【００８５】
ステップリピート機能と上述した条件実行機能の両方を持ったデータ処理装置を想定する場合、命令をＮＯＰ化するための実行制御信号生成部は、両方の機能で共有させることができる。これは、リピート終了フラグ９０３と実行条件判定結果の簡単な論理演算結果を実行制御信号生成部に与えるだけで実現できる。
【００８６】
図１６は、この発明の実施の形態４のデータ処理装置における制御部の構成を示す説明図である。公報２の図２７では実行条件判定部と実行制御信号生成部が２個ずつあり、４本の実行抑止信号がこれらを接続する場合について述べている。図１６では簡単化のために、実行制御信号生成部９１０と実行条件判定部９１３とを１個ずつで構成している。
【００８７】
実行条件判定部９１３は、命令コードの一部により指定される実行条件に基づいてＰＳＷ部１７１の保持するフラグ値を判定し、実行条件成立の有／無に基づき、実行（“０”）／抑止（“１”）を指示するの実行条件抑止信号９１５を出力する。ＯＲゲート９１４は、リピート終了フラグ９０３及び実行条件抑止信号９１５を論理和演算して、その演算結果を最終実行条件抑止信号９１６として出力する。したがって、リピート終了フラグ９０３あるいは実行条件抑止信号９１５が“１”であれば、最終実行条件抑止信号９１６が“１”となり、抑止を指示する。なお、リピート終了フラグ９０３の生成用の構成は、図１０で示した実施の形態１の構成でも、図１３で示した実施の形態２の構成でも良い。
【００８８】
実行制御信号生成部９１０は、最終実行条件抑止信号９１６が“１”であれば、命令実行制御信号を生成しないように動作する。
【００８９】
このように、ステップリピート機能と条件実行機能は、ステップリピート機能用のハードウェア構成から、ＯＲゲート９１４を追加するだけで、実行制御信号生成部９１０を共有することができる。
【００９０】
条件実行機能は分岐によって生じるペナルティを削減できることから、情報処理装置の性能を向上させる有効な手段である。よって実施の形態４は、ステップリピート機能と条件実行機能を併せ持つことにより、極めて高い処理性能を持ったデータ処理装置を実現することができる。また、両機能は命令のＮＯＰ化装置を共有することができるため、これらを併せ持つことはハードウェアコストの観点からも極めて有効である。
【００９１】
【発明の効果】
この発明における請求項１記載のデータ処理装置の命令実行制御手段は、ステップリピート命令実行時に、実行命令回数判定結果が未達成状態を指示するとき命令取り込み手段より受ける命令を順次実行させ、実行命令回数判定結果が達成状態を指示するとき命令取り込み手段より受ける命令を順次無効にする。
【００９２】
したがって、第１〜第Ｎの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第１〜第Ｎの命令を確実に無効にすることができるため、命令列（第１〜第Ｎの命令）に含まれる命令を繰り返しながら、指定された命令単位の回数（実行命令回数）で正確に実行することができる。
【００９３】
請求項２記載のデータ処理装置の実行命令回数判定手段は、（Ｋ＋１）回目の第Ｌの命令（実行命令回数Ｍ個目に実行される命令）の実行中に実行命令回数判定結果の指示内容を達成状態にし、命令実行制御手段は、達成状態を指示する実行命令判定結果に応答して、（Ｋ＋１）回目の第（Ｌ＋１）〜第Ｎの命令の実行を順次無効にしている。
【００９４】
したがって、第１〜第Ｎの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第（Ｌ＋１）〜第Ｎの命令を確実に無効にすることができる。
【００９５】
請求項３記載のデータ処理装置のタイミング制御手段は、実行回数判定結果の指示内容の未達成状態から達成状態への変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、ステップリピート命令実行情報を非実行状態に設定する。
【００９６】
したがって、第１〜第Ｎの命令の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【００９７】
請求項４記載のデータ処理装置はブロックリピート機能をさらに有するため、プログラム設計者は必要に応じてブロックリピート処理とステップリピート処理を使い分けることができる。
【００９８】
請求項５記載のデータ処理装置は、ステップリピート機能と条件実行機能との間で命令取り込み手段と命令実行制御手段の共有を図ることにより、ハードウェアコストを必要最小限に抑えながら、ステップリピート機能と条件実行機能とを実現させることができる。
【００９９】
請求項６記載のデータ処理装置において、プログラム中にステップリピート命令に連続して第１〜第Ｎの命令が順に記載され、ステップリピート命令は、第Ｎの命令のアドレス情報をさらに有している。
【０１００】
したがって、ステップリピート命令の実行時に、ステップリピート命令の次の命令のアドレスを第１の命令のアドレスとして認識し、第Ｎの命令のアドレス情報から第Ｎの命令のアドレスを認識することにより、ステップリピート命令実行中の第Ｎの命令後に第１の命令を行うアドレス制御を行うことができる。
【図面の簡単な説明】
【図１】  この発明の実施の形態のデータ処理装置の構成を示すブロック図である。
【図２】  この発明の実施の形態のデータ処理装置の第１演算部の詳細を示すブロック図である。
【図３】  この発明の実施の形態のデータ処理装置のＰＣ部の詳細を示すブロック図である。
【図４】  この発明の実施の形態のデータ処理装置の第２演算部の詳細ブロック図である。
【図５】  この発明の実施の形態のデータ処理装置のパイプライン処理を示す模式図である。
【図６】  ＰＳＷ部の構成を示す説明図である。
【図７】  ステップリピート命令のニモニックを示す説明図である。
【図８】  ステップリピート命令のフォーマットを示す説明図である。
【図９】  ステップリピート命令の他のニモニックを示す説明図である。
【図１０】  実施の形態１の制御部の構成を示す説明図である。
【図１１】  ステップリピート機能を用いたプログラム例を示す説明図である。
【図１２】  実施の形態１の制御部によるパイプライン制御内容を示す説明図である。
【図１３】  実施の形態２の制御部の構成を示す説明図である。
【図１４】  実施の形態２の制御部の動作説明用のタイミング図である。
【図１５】  実施の形態１の制御部によるパイプライン制御内容を示す説明図である。
【図１６】  実施の形態２の制御部の構成を示す説明図である。
【符号の説明】
４３  ＳＲＰビット、１８４  ＳＲＰＴ＿Ｓレジスタ、１８６  ＳＲＰＴ＿Ｅレジスタ、１７１  ＰＳＷ部、１８７  比較器（ＣＭＰ）、１８８  ＳＲＰＴ＿Ｃレジスタ、９００  ゼロ判定器、９１０  実行制御信号生成部、９１１  タイミング発生器、９１３  実行条件判定部９１３。
【図１】
0003842474.tif 000002
【図２】
0003842474.tif 000003
【図３】
0003842474.tif 000004
【図４】
0003842474.tif 000005
【図５】
0003842474.tif 000006
【図６】
0003842474.tif 000007
【図７】
0003842474.tif 000008
【図８】
0003842474.tif 000009
【図９】
0003842474.tif 000010
【図１０】
0003842474.tif 000011
【図１１】
0003842474.tif 000012
【図１２】
0003842474.tif 000013
【図１３】
0003842474.tif 000014
【図１４】
0003842474.tif 000015
【図１５】
0003842474.tif 000016
【図１６】
0003842474.tif 000017