(57)【要約】【課題】コードサイズの増大、プロセッサ構造の複雑化及び電力増大の３点を抑えたプログラム実行装置を提供することを目的とする。【解決手段】不要な命令をＮＯＰ命令に置換して発行する構成を持つことで、畳み込み等によるループ処理の高速化を行ったプログラムに対しても、不要な命令が発生するループの繰り返し回数に応じた別プログラムを用意する必要がなくなる。また、命令をＮＯＰ命令に置換して発行するためのハードウェアは、プロセッサにインターロック機構を実装するよりも単純な構成で実装できる。さらに、演算部が動作する必要のないＮＯＰ命令に置換することにより、無駄な演算部の動作を必要とせず、プロセッサの動作を部分的に停止させるため、消費電力の増大を抑えることが出来る。【選択図】　図２
2004062815.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を繰り返し実行するプログラム実行装置であって、
複数の命令の何れか１つ以上に、命令をＮＯＰ命令に置換するか否かを示す置換情報が付され、前記複数の命令を繰り返し実行することを示すプログラムを予め記憶している命令記憶手段と、
各命令を命令記憶手段から読み出し、読み出した命令を解読し、解読結果を出力し、命令に付された置換情報を出力する命令解読手段と、
解読結果を受け取り、受け取った解読結果に基づいて演算を行う演算手段と、
前記複数の命令が繰返し実行された実行回数をカウントするカウント手段と、
カウント手段から実行回数を取得し、取得した実行回数と出力された置換情報とを基にして、読み出した前記命令をＮＯＰ命令に置換するか否かを判断し、ＮＯＰ命令に置換すると判断する場合に、置換信号を出力する制御手段と、
置換信号を受け取ると、読み出した前記命令をＮＯＰ命令に置換してＮＯＰ命令を出力する置換手段を備え、
前記演算手段は、ＮＯＰ命令を受け取ると、演算の実行を抑制する
ことを特徴とするプログラム実行装置。
【請求項２】
前記制御手段は、取得した実行回数が予め定められた値である場合に、前記命令をＮＯＰ命令に置換するか否かを判断する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項３】
前記命令記憶手段において、命令に付されている置換情報は、
命令が実行される１以上の繰返回数に対応付けて、当該命令を置換するか否かを示す１個以上の置換フラグを含み、
前記制御手段は、取得した実行回数に対応する前記置換フラグが、当該命令を置換することを示す場合に置換信号を出力する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項４】
前記命令記憶手段は、ストア命令、演算命令及びロード命令を含む前記複数の命令を、所定の順で繰返し実行することを示すプログラムを予め記憶しており、前記ストア命令、前記演算命令及び前記ロード命令のうち少なくとも１命令には、繰返しの１回目に対応して、ＮＯＰ命令に置換することを示す１個の置換フラグを含む前記置換情報が付されており、前記ストア命令、前記演算命令及び前記ロード命令のうち少なくとも１命令には、繰返しの最終回に対応して、ＮＯＰ命令に置換することを示す１個の置換フラグを含む前記置換情報が付されており、
前記制御手段は、取得した実行回数が、前記命令に付されている前記１個の置換フラグが対応する実行回数と一致する場合、前記命令に対する前記置換信号を出力する
ことを特徴とする請求項２又は請求項３記載のプログラム実行装置。
【請求項５】
前記命令記憶手段は、ストア命令、演算命令及びロード命令を含む前記複数の命令を、少なくともストア命令の後にロード命令が配される順で繰返し実行することを示すプログラムを予め記憶しており、前記ストア命令には、繰返しの１回目及び２回目に対応して、ＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、前記演算命令には、繰返しの１回目及び２回目に対応して、又は繰返しの１回目及び最終回に対応してＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、前記ロード命令には、繰返しの最終回及びその前の回に対応し、ＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、
前記制御手段は、取得した実行回数が、前記ストア命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記ストア命令に対する前記置換信号を出力し、前記演算命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記演算命令に対する前記置換信号を出力し、前記ロード命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記ロード命令に対する前記置換信号を出力する
ことを特徴とする請求項２又は請求項３記載のプログラム実行装置。
【請求項６】
前記プログラム実行装置は、さらに前記演算手段による演算結果に基づいて、読み出した前記命令をＮＯＰ命令に置換するか否か判断し、ＮＯＰ命令に置換すると判断する場合に演算結果フラグを生成するフラグ生成手段を備え、前記置換手段は、さらに前記演算結果フラグを受け取ると、読み出した前記命令をＮＯＰ命令に置換してＮＯＰ命令を出力する
ことを特徴とする請求項１記載のプログラム実行装置。
【請求項７】
前記演算手段は、複数の演算部を含み、前記置換手段は、各演算部に対応する複数の置換部を含み、
各置換部は、前記置換情報又は、前記演算結果フラグを受け取ると、読み出した前記命令をＮＯＰ命令に置換し、当該置換部に対応する前記演算部へＮＯＰ命令を出力する
ことを特徴とする請求項４又は請求項５記載のプログラム実行装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令を逐次実行するプログラム実行装置に関する。
【０００２】
【従来の技術】
プロセッサにより処理されるプログラムには、多数の繰り返し処理が含まれることが多く、一般的なプロセッサは繰り返し処理を高速実行するために、ループ命令を備えている。
繰り返し処理されるプログラムの一部分は、データメモリからのデータロード、ロードしたデータに対する演算、データメモリへ演算結果を書き戻すデータストア、という手順から構成される。通常、データロードには、データのリクエストを行ってから読み出し作業に要する時間分のレイテンシが存在し、データロードと、次の演算との間に発生する待ち時間によって、プロセッサの処理性能が低下してしまう。
【０００３】
そこで処理性能の向上のため、データストアの前に、次のデータロードを先行的に行い、ループ命令を発行することで、データロードのレイテンシを隠すという手法のループ構造プログラムを用いて、繰り返し処理の高速化が行われている。
しかし、このようなループ構造プログラムを実行する場合、実行する必要のないコードがプログラムのループ構造中に含まれるという問題が発生する。ループの繰返し回数をｎ回とすると、初回のループ時にはデータストアと演算が、２回目のループ時にはデータストアが不要な命令であり、ｎ−１回目にはデータロード、ｎ回目には演算とデータロードが不要な命令である。
【０００４】
この問題を解決する手法の一つとして、ループの初回用、最終回用にそれぞれ専用の別プログラムを用意する方式がある。しかし、この方式ではプログラム中にループ構造部分を複数用意する必要があり、プログラムのコードサイズが増大する。
また、上記問題を解決するための別の方法として、特定のループ回数において命令をキャンセルし、プロセッサ内でインターロック状態にするという方式がある。しかし、この方式では、プロセッサに複雑なインターロック機構が必要となる。
【０００５】
また、上記問題を解決するための別の方法として、インターロック状態にするのではなく、通常通り命令を発行し、演算結果の反映をキャンセルするという方式がある。しかし、この方式では、プロセッサ内にインターロック機構は不要だが、本来実行する必要のない命令を発行し、実行することになり、無駄に電力を消費する。
【０００６】
【発明が解決しようとする課題】
本発明は、上記の問題を解決するためのものであり、コードサイズの増大及びプロセッサ構造の複雑化及び電力増大を抑制するプログラム実行装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明はループ回数に応じて実行する必要が無い命令を、演算部の動作を停止することができるＮＯＰ命令に置換して発行するプログラム実行装置である。
本発明でプロセッサは、プログラム中のループ構造部分を実行中にループの繰り返し回数をカウントし、カウント値を出力するループカウント部とループ制御部を持ち、ループカウント部から出力されるカウント値を受け取ったループ制御部が命令を置換する信号を出力することによって、不要な命令をＮＯＰ命令に置換し、演算部に発行する。
【０００８】
このように、不要な命令をＮＯＰ命令に置換して発行する構成を持つことで、畳み込み等によるループ処理の高速実行を行ったプログラムに対しても、ループの１，２，ｎ−１，ｎ回用の別プログラムを用意する必要がなくなる。
また、命令を置換して発行するためのハードウェアは、インターロック機構よりも単純な構成で実装できる。
【０００９】
さらに、演算部が動作する必要の無い命令に置換することにより、演算部の無駄な動作を必要とせず、プロセッサの動作を部分的に停止することができ、消費電力の増大を抑えることが出来る。
【００１０】
【発明の実施の形態】
以下、図を用いて本発明の一実施形態を説明する。
１．実施の形態１
１．１デジタル放送受信装置１００の構成
本発明の一適用例であるデジタル放送受信装置１００を図１に示す。
【００１１】
デジタル放送受信装置１００は、アンテナ１０１により受信する放送波から指定されたチャンネルの信号を選択し、復調し、誤り訂正を行い、トランスポートストリームを生成するチューナー１０２、スクランブルを解くデスクランブラ１０３、スクランブルを解かれたトランスポートストリームから番組情報とオーディオストリームとビデオストリームとを分離するトランスポートデコーダ１０４、前記分離されたオーディオストリームを復号して音声信号を生成し、生成した音声信号をスピーカー１０８へ出力するオーディオデコーダ１０５、前記分離されたビデオストリームを復号して映像信号を生成するビデオデコーダ１０６、表示される画像を記憶しているＶＲＡＭ、前記生成された映像信号とＶＲＡＭに記憶されている画像とを合成して合成画像を生成し、生成した合成画像をモニタ１０９へ出力する画面合成部１０７で構成されている。
【００１２】
ビデオデコーダ１０６は、プロセッサ２００を含んでおり、プロセッサ２００は各種の信号処理を行う。
１．２　プロセッサ２００
プロセッサ２００は図２のように命令メモリ２０１、命令デコード部２０２、ループ制御部２０３、ループカウント部２０４及び演算部２０５から構成されている。
（１）　命令メモリ２０１
命令メモリ２０１は、図３に示すような、プログラム３００をあらかじめ記憶している。プログラム３００は、命令文を指定された回数繰り返すループ構造を含む命令例であり、命令３０１、ラベル３０２、命令３０３〜命令３０７から構成される。命令３０１は、ループの繰返回数である初期値を設定するための初期設定命令である。命令３０１が実行されることにより、ループカウント部２０４の内部カウンタの初期値が設定される。ラベル３０２は、ループ命令が始まることを表す。命令３０３は、演算結果であるレジスタＸ３の内容をアドレスａｄｄ３により示されるメモリ領域に格納することを示す。命令３０４は、レジスタＸ１とレジスタＸ２の内容を加算し、その結果をレジスタＸ３へ代入することを表している。命令３０５は、アドレスａｄｄ１により示されるメモリ領域に格納されている値をレジスタＸ１へ格納し、命令３０６は、アドレスａｄｄ２により示されるメモリ領域に格納されている値をレジスタＸ２へ格納することを表している。命令３０３〜命令３０６には、後述する命令置換フラグ３０８〜３１１が付されている。命令３０７はループの最終位置を示す条件付分岐命令で、ラベル３０２へ戻り、命令の実行を繰り返すことを表している。
【００１３】
上記のようなループ構造プログラムを実行させると、図５に示すようにデータストア、演算及びデータロードから成る１組の処理が、指定したループ回数分繰り返される。なお、図３のプログラムでは２つあるデータロードを、簡単にするため図５では１つに纏めて表している。指定したループの繰返回数はｎ回であり、（　）内の数字はループ回数を表し、○内の数字は実際に処理が実行された回数を表している。
【００１４】
ループ回数１回目は、データストア５０１、演算５０２、データロード５０３の順に実行し、ループ回数２回目は、データストア５０４、演算５０５、データロード５０６の順に実行する。ループ回数３回目以降も同様に実行し、データロード５１５まで実行する。このとき実際の処理は、データロード５０３、演算５０５、データストア５０７が１組となり、初めの処理を実行し、データロード５０６、演算５０８、データストア５０９が１組となり、次の処理を実行する。以下同様に処理し、データロード５１０、演算５１１、データストア５１３で最後の処理を実行する。
【００１５】
上記より、図５において斜線を付している、１回目のループ時のデータストア５０１と演算５０２、２回目のループ時のデータストア５０４、ｎ−１回目のループ時のデータロード５１２及びｎ回目のループ時の演算５１４とデータロード５１５とは、実際には処理されないため、実行する必要が無い不要な命令である。このような、不要な命令の実行を抑制するため、以下に示すように、ループカウント部２０４の内部カウンタでループ回数をカウントし、カウント値によって命令デコード部２０２で実行する必要のない命令を、ＮＯＰ命令に置換して発行する。
【００１６】
図３に示す命令置換フラグ３０８〜３１１は、プログラム作成時に、ＮＯＰ命令に置換する可能性がある命令に付され、どのループ回数のときにＮＯＰ命令に置換するかを表す。各命令置換フラグは、図４に示すように、４ビットから構成される。各ビットを上位ビットからビットＡ、ビットＢ、ビットＣ及びビットＤと表現する。ビットＡ，Ｂ，Ｃ，Ｄは、それぞれ０又は１の値をとる。
【００１７】
ビットＡが０である命令置換フラグが付されている命令は、ループ回数が１の時、ＮＯＰ命令に置換されず、そのまま演算部８０５へ発行されることを示している。ビットＡが１である命令置換フラグが付されている命令は、ループ回数が１の時、ＮＯＰ命令に置換して演算部８０５へ発行されることを示している。
ビットＢが０である命令置換フラグが付されている命令は、ループ回数が２の時、ＮＯＰ命令に置換されず、そのまま演算部８０５へ発行されることを示している。ビットＢが１である命令置換フラグが付されている命令は、ループ回数が２の時、ＮＯＰ命令に置換して演算部８０５へ発行されることを示している。
【００１８】
ビットＣ，Ｄについても上記と同様であり、それぞれループ回数がｎ−１，ｎのときに、ＮＯＰ命令に置換するか否かを示す。
（２）　命令デコード部２０２
命令デコード部２０２は、命令メモリからインストラクションカウンタが示す命令を読み出す。命令デコード部２０２は、読み出した前記命令を解読し、命令の種類を判断する。命令の種類が初期設定命令である場合は、命令文からループの繰返回数ｎを読み取り、読み取った繰返回数ｎを内部カウンタの初期値としてループカウント部２０４に送る。命令の種類がループの最終位置を示す条件付分岐命令である場合、インストラクションカウンタにラベル３０２が付されている命令が格納されているアドレスを設定する。そして、ループカウント部２０４に、内部カウンタをデクリメントしてループの繰返回数をカウントするためのカウント信号を送る。命令の種類が上記以外である場合、読み出した命令に命令置換フラグが付されているか否かを判断する。命令置換フラグが付されていない場合は、置換せずに演算部に発行する。命令置換フラグが付されている場合は、付されている命令置換フラグをループ制御部２０３に送る。
【００１９】
ループカウント部２０４から、命令をＮＯＰ命令に置換することを示す命令置換信号を受け取った命令デコード部２０２は、取り出した命令をＮＯＰ命令に置換し、ＮＯＰ命令を演算部２０５に発行する。
（３）　ループ制御部２０３
ループ制御部２０３は、命令デコード部２０２から命令置換フラグを受け取り、ループカウント部２０４から、ループの繰返回数をカウントしたカウント値を受け取る。受け取ったカウント値がｎ，ｎ−１，２，１，０の何れかに当てはまるか判断する。
【００２０】
カウント値が０の場合はインストラクションカウンタに＋１を加算する。カウント値が命令を置換する可能性があるｎ，ｎ−１，２，１の何れかに当てはまる場合、命令置換フラグのビットＡ〜ビットＤのうち、受け取ったカウント値が対応するビットが１か０か判断する。
受け取ったカウント値に対応する命令置換フラグのビットが１の場合は、命令デコード部２０２に命令置換信号を送り、０の場合は、命令置換信号を送らない。
【００２１】
カウント値がｎ，ｎ−１，２，１の何れでもない場合は命令置換信号を送らない。
（４）　ループカウント部２０４
ループカウント部２０４は、ループ構造プログラムのループ繰返回数をカウントする内部カウンタを持っている。
ループカウント部２０４は、命令デコード部２０２から受け取った初期値を、内部カウンタに設定する。また、命令デコード部２０２からカウント信号を受け取ると、内部カウンタをデクリメントする。
【００２２】
ループカウント部２０４は、カウント値をループ制御部２０３に送る。
（５）　演算部２０５
命令デコード部２０２から発行された命令を実行する。ただし、発行された命令がＮＯＰ命令の時は、命令の実行を抑制する。
１．３　デジタル放送受信装置１００の動作
デジタル放送受信装置１００のビデオデコーダ１０６に含まれるプロセッサ２００の動作を図６のフローチャートを利用して説明する。
【００２３】
命令デコード部２０２は、命令メモリ２０１から命令を読み出し（ステップＳ６１１）、読み出した命令を解読し（ステップＳ６１２）、解読した命令の種類を判断する（ステップＳ６１３）。前記命令の種類が初期設定命令である場合は、命令文からループの繰返回数ｎを読み取り、繰返回数ｎを内部カウンタの初期値としてループカウント部２０４に送る（ステップＳ６５１）。ループカウント部２０４は受け取った初期値ｎを内部カウンタに設定し（ステップＳ６３１）、設定したカウント値をループ制御部２０３に送る（ステップＳ６７１）。
【００２４】
命令の種類が条件付分岐命令である場合、インストラクションカウンタをラベル３０２が付されている命令が格納されているアドレスにし（ステップＳ６１５）、命令デコード部２０２はループカウント部２０４にカウント信号を送り（ステップＳ６５３）、カウント信号を受け取ったループカウント部２０４は内部カウンタをデクリメントする（ステップＳ６３２）。ループカウント部２０４はデクリメントしたカウント値をループ制御部２０３へ送る（ステップＳ６７１）。
【００２５】
命令の種類が上記以外である場合、命令デコード部２０２は、命令文に命令置換フラグが付されているか否かを判断する（ステップＳ６１４）。フラグが付されている場合（ステップＳ６１４でＹＥＳ）、ループ制御部２０３に命令置換フラグを送る（ステップＳ６５２）。命令置換フラグを受け取ったループ制御部２０３は、ループカウント部２０４から受け取るカウント値が、ｎ，ｎ−１，２，１，０の何れかに当てはまるか否か判断し（ステップＳ６２１）、カウント値が０であるときはインストラクションカウンタに＋１を加算する（ステップＳ６２６）。命令を置換する可能性があるｎ，ｎ−１，２，１の何れかに当てはまるときは、命令置換フラグのビットＡ〜ビットＤのうち、そのときのカウント値に対応するビットが１か０か判断し（ステップＳ６２２〜Ｓ６２５）、１のときは命令デコード部２０２に命令置換信号を送る（ステップＳ６６１）。命令置換信号を受け取った命令デコード部２０２は、当該命令をＮＯＰ命令に置換して（ステップＳ６１６）演算部２０５に発行する（ステップＳ６８１）。
【００２６】
命令デコード部２０２は命令置換フラグが付されていない場合（ステップＳ６１４でＮＯ）、読み出した命令は置換せずに演算部へ発行する。また、ループ制御部２０３でカウント値がｎ，ｎ−１，２，　１の何れにも当てはまらない場合（ステップＳ６２１でその他）や、対応する命令置換フラグのビットが０である場合（ステップＳ６２２〜Ｓ６２５で０）は、命令デコード部２０２に命令置換信号を送らないので、読み出した命令は命令デコード部２０２で置換せずに（ステップＳ６６２）演算部に発行される（ステップＳ６８１）。
【００２７】
演算部２０５は、発行された命令を実行する。発行された命令がＮＯＰ命令である場合は、命令の実行を抑制する。
以上により、ループ命令を用いたプログラムのループ構造内の命令を実行する際、ループ回数に応じて、実行する必要のない命令は、ＮＯＰ命令に置換して演算部２０５に発行し、命令の実行を抑制することができる。
２．実施の形態２
２．１　デジタル放送受信装置１００の構成
図１に示したデジタル放送受信装置１００のビデオデコーダ１０６は、図７に示すプロセッサ７００を含んでおり、プロセッサ７００は各種の信号処理を行う。
【００２８】
プロセッサ７００の構成を、プロセッサ２００の構成と異なる点について説明する。
２．２　プロセッサ７００
プロセッサ７００は、命令メモリ７０１、命令デコード部７０２、ループ制御部７０３、ループカウント部７０４、演算部７０５から構成される。
【００２９】
プロセッサ７００の命令メモリ７０１、命令デコード部７０２、ループ制御部７０３及びループカウント部７０４については、実施の形態１の命令メモリ２０１、命令デコード部２０２、ループ制御部２０３及びループカウント部２０４と同様の構成なので説明は省略する。
（１）演算部７０５
演算部７０５は、複数の演算器７０６、７０７、７０８、７０９から成り、同一の命令を受け取って、異なるデータに対して処理を行う、ＳＩＭＤ（Ｓｉｎｇｌｅ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｍｕｌｔｉ　Ｄａｔａ）型の構成となっている。演算器７０６〜７０９はそれぞれにレジスタを持っている。
【００３０】
命令を実行する際、演算部７０５は、演算器７０６〜７０９それぞれが持っているレジスタに格納している値を使って実行する。
２．デジタル放送受信装置１００の動作
デジタル放送受信装置１００のビデオデコーダ１０６に含まれているプロセッサ７００の動作を、図６のフローチャートを利用して実施の形態１と異なる部分について説明する。
【００３１】
読み出された命令を命令デコード部７０２から演算部７０５の演算器７０６〜７０９へ発行すると、演算器７０６〜７０９はそれぞれが持っているレジスタ毎に格納している値を使用して命令を実行する（ステップＳ６４１）。発行された命令がＮＯＰ命令の場合は、演算器７０６〜７０９は、命令の実行を抑制する。
以上により、ループ命令を用いたプログラムのループ構造内の命令を実行する際、ループ回数に応じて、実行する必要のない命令を、ＮＯＰ命令に置換して、ＮＯＰ命令を複数の演算器７０６〜７０９から成る演算部７０５に発行し、演算器毎に命令の実行を抑制することができる。
３．実施の形態３
３．１　デジタル放送受信装置１００の構成
図１に示したデジタル放送受信装置１００のビデオデコーダ１０６は、図８に示すプロセッサ８００を含んでおり、プロセッサ８００は各種の信号処理を行う。
【００３２】
３．２　プロセッサ８００
プロセッサ８００は、命令メモリ８０１、命令デコード部８０２、ループ制御部８０３、ループカウント部８０４、演算部８０５、フラグ生成部８０６から構成される。
ループ制御部８０３及びループカウント部８０４については、実施の形態１のループ制御部２０３及びループカウント部２０４と同様の構成であるので説明を省略する。
（１）命令メモリ８０１
命令メモリ８０１には、図３と同様の構造のプログラム中に、さらに、レジスタＸ４にある値を設定する命令と、前記レジスタＸ４に記憶している値と比較するためのレジスタＸ５にある値を設定する命令を含み、前記レジスタＸ４及びＸ５の値を比較し、比較結果から命令を置換することを示す実行結果フラグを生成するか否か判断する為のフラグ生成命令を含んでいる。
（２）命令デコード部８０２
命令デコード部８０２は、命令メモリからインストラクションカウンタが示す命令を読み出す。命令デコード部８０２は、読み出した前記命令を解読し、解読した命令の種類を判断する。判断した命令の種類が初期設定命令である場合と、条件付分岐命令である場合とは、実施の形態１と同様の構成なので、説明を省略する。読み出した命令の種類が上記以外である場合、前記読み出した命令が、フラグ生成命令であるか否かを判断し、前記フラグ生成命令である場合は、演算部８０５に前記読み出した命令を送る。フラグ生成命令でない場合は、読み出した命令に、命令の置換を示す命令置換フラグが付されているか否かを判断する。命令置換フラグが付されている場合は、付されている命令置換フラグをループ制御部８０３に送る。命令置換フラグが付されていない場合は、読み出した命令を置換せずに演算部８０５に発行する。
【００３３】
命令デコード部８０２は、ループ制御部８０３から命令置換信号を受け取るか、フラグ生成部８０６から命令を置換することを示す実行結果フラグを受け取ると、読み出した命令をＮＯＰ命令に置換し、ＮＯＰ命令を演算部８０５に発行する。前記命令置換信号と前記実行結果フラグとの何れも受け取らない場合は、読み出した命令を置換せずに演算部８０５へ発行する。
（３）演算部８０５
演算部８０５は、命令デコード部８０２が発行する命令を実行する。
【００３４】
命令デコード部８０２が発行する命令がフラグ生成命令である場合、演算部８０５はフラグ生成命令を実行し、レジスタＸ４の値がレジスタＸ５の値より大きい場合は命令を置換することを示す１を、レジスタＸ４の値がレジスタＸ５の値より小さい場合は命令を置換しないことを示す０をフラグ生成部８０６に出力する。
命令デコード部８０２から発行された命令がＮＯＰ命令である場合、演算部８０５は命令の実行を抑制する。
（４）フラグ生成部８０６
フラグ生成部８０６は、演算部８０５から受け取ったフラグ生成命令の実行結果が１か０かを判断する。前記実行結果が１である場合は、命令を置換することを示す実行結果フラグを生成し、命令デコード部８０２に実行結果フラグを出力する。実行結果が０の場合は、実行結果フラグを生成しない。
３．３　デジタル放送受信装置１００の動作
デジタル放送受信装置１００のビデオデコーダ１０６に含まれているプロセッサ８００の動作を、図９のフローチャートを利用して説明する。
【００３５】
命令デコード部８０２は命令メモリ８０１から命令を読み出し（ステップＳ８１１）、読み出した命令を解読し（ステップＳ８１２）、解読した命令の種類を判断する（ステップＳ８１３）。前記読み出した命令が初期設定命令の場合と条件付分岐命令の場合とは実施の形態１と同様の動作をするので説明は省略する。
命令デコード部８０２は、読み出した命令が上記以外である場合（ステップＳ８１３でその他）、読み出した命令がフラグ生成命令であるか否かを判断する（ステップＳ８１４）。フラグ生成命令であれば、読み出した命令を演算部８０５に発行する（ステップＳ８４１）。
【００３６】
命令デコード部８０２からフラグ生成命令を受け取ると、演算部８０５は、前記フラグ生成命令を実行し（ステップＳ８２１）、実行結果をフラグ生成部８０６に出力する（ステップＳ８５１）。フラグ生成部８０６は受け取った前記実行結果が１か０かを判断し（ステップＳ８３１）、１である場合は、命令の置換を示す実行結果フラグを生成し、実行結果フラグを命令デコード部８０２に出力する（ステップＳ８５２）。前記実行結果が０である場合は命令を置換しないので実行結果フラグを生成しない（ステップＳ８５３）。
【００３７】
読み出した命令がフラグ生成命令でない場合（ステップＳ８１４でＮＯ）は、前記読み出した命令に命令置換フラグが付されているか否か判断する（ステップＳ８１５）。読み出した命令に命令置換フラグが付されていない場合（ステップＳ８１５でＮＯ）は、前記命令を置換せずに演算部８０５へ発行する（ステップＳ８４２）。読み出した命令に命令置換フラグが付されている場合（ステップＳ８１５でＹＥＳ）は、命令置換フラグをループ制御部８０３へ送る（ステップＳ８６１）。ループ制御部８０３及びループカウント部８０４は、実施の形態１のループ制御部２０３及びループカウント部２０４と同様の動作をし、ループ制御部８０３は、命令デコード部８０２に命令置換信号を送る（ステップＳ８６２）。
【００３８】
命令デコード部８０２は、ループ制御部８０３から命令置換信号を受け取るか、若しくはフラグ生成部８０６から実行結果フラグを受け取ると、命令置換フラグを持つ命令をデコードする際に、命令置換フラグを持つ命令をＮＯＰ命令に置換して（ステップＳ８１６）演算部８０５に発行する（ステップＳ８４２）。
命令を受け取った演算部８０５は、受け取った命令を実行する（ステップＳ８２２）。ただし、受け取った命令がＮＯＰ命令である場合は、演算部８０５は命令の実行を抑制する。
【００３９】
以上により、ループ命令を用いたプログラムのループ構造内の命令を実行する際、ループ回数と以前の実行結果に応じて、実行する必要のない命令は、ＮＯＰ命令に置換して、ＮＯＰ命令を演算部８０５に発行し、命令の実行を抑制することができる。
４．実施の形態４
４．１　デジタル放送受信装置１００の構成
図１に示したデジタル放送受信装置１００のビデオデコーダ１０６は、図１０に示すプロセッサ１０００を含んでおり、プロセッサ１０００は各種の信号処理を行う。
【００４０】
４．２　プロセッサ１０００
プロセッサ１０００は、命令メモリ１００１、命令デコード部１００２、ループ制御部１００３、ループカウント部１００４及び演算部１００５から構成され、演算部１００５は、複数の演算ブロック１００６１、１００６２、１００６３、１００６４から成り、演算ブロック１００６１〜１００６４は、後述するように命令置換部１００７演算器１００８、及びフラグ生成部１００９から構成されている。
【００４１】
ループ制御部１００３及びループカウント部１００４については、実施の形態１のループ制御部２０３及びループカウント部２０４と同様の構成なので説明は省略する。
（１）命令メモリ１００１
命令メモリ１００１には、命令メモリ８０１と同様な構造の命令が記憶されている。
（２）命令デコード部１００２
命令デコード部１００２は、命令メモリからインストラクションカウンタが示す命令を読み出す。命令デコード部１００２は、読み出した命令を解読し、解読した命令の種類を判断する。判断した命令の種類が初期設定命令である場合と、条件付分岐命令である場合とは、実施の形態１と同様の構成なので、説明を省略する。読み出した命令の種類が上記以外である場合、フラグ生成命令であるか否かを判断し、フラグ生成命令である場合は、演算部１００５を構成している演算ブロック１００６１〜１００６４のそれぞれの命令置換部１００７にフラグ生成命令を送る。読み出した命令がフラグ生成命令でない場合は、読み出した命令に命令の置換を示す命令置換フラグが付されているか否かを判断する。読み出した命令に命令置換フラグが付されている場合は、付されている命令置換フラグをループ制御部１００３に送り、演算ブロック１００６１〜１００６４の命令置換部１００７に読み出した命令を送る。読み出した命令に命令置換フラグが付されていない場合は、前記命令をそのまま演算ブロック１００６１〜１００６４の各命令置換部１００７へ送る。
【００４２】
命令デコード部１００２は、ループ制御部１００３から命令置換信号を受け取ると、受け取った命令置換信号を演算ブロック１００６１〜１００６４の各命令置換部１００７へ送る。
（３）演算部１００５
演算部１００５は、複数の演算ブロック１００６１、１００６２、１００６３、１００６４からなり、同一の命令を受け取って、異なるデータに対して処理を行う、ＳＩＭＤ（Ｓｉｎｇｌｅ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｍｕｌｔｉ　Ｄａｔａ）型の構成となっている。演算ブロック１００６１は、命令置換部１００７、演算器１００８及びフラグ生成部１００９から成る。演算ブロック１００６２〜１００６４は、演算ブロック１００６１と同様の構成である。
【００４３】
（ｉ）命令置換部１００７
命令置換部１００７は、受け取った命令を演算器１００８に発行する。
命令置換部１００７は、命令デコード部１００２から命令置換信号を受け取るか、フラグ生成部１００９から実行結果フラグを受け取ると、命令置換フラグが付されている命令をＮＯＰ命令に置換する。
【００４４】
（ｉｉ）演算器１００８
演算器１００８は、それぞれレジスタを持っている。
演算器１００８は、命令置換部１００７から命令を受け取ると、それぞれの演算器１００８が所有しているレジスタの値を利用して、受け取った命令を実行する。
【００４５】
受け取った命令がフラグ生成命令である場合、演算器１００８はフラグ生成命令を実行し、レジスタＸ４の値がレジスタＸ５の値より大きい場合は、命令の置換を示す１を実行結果としてフラグ生成部１００９へ出力し、レジスタＸ４の値がレジスタＸ５の値より小さい場合は、命令を置換しないことを示す０を実行結果として生成部１００９へ出力する。
【００４６】
受け取った命令がＮＯＰ命令である場合、演算器１００８は命令の実行を抑制する。
（ｉｉｉ）フラグ生成部１００９
フラグ生成部１００９は、演算器１００８からフラグ生成命令の実行結果を受け取ると、前記実行結果が１か０かを判断し、命令の置換を示す１の場合は実行結果フラグを生成し、生成した実行結果フラグを命令置換部１００７へ出力する。前記実行結果が命令を置換しないことを示す０の場合は、実行結果フラグを生成しない。
【００４７】
４．３　デジタル放送受信装置１００の動作
デジタル放送受信装置１００の動作を図１１のフローチャートを利用して説明する。
命令デコード部１００２は、命令メモリ１００１から命令を読み出し（ステップＳ１０１１）、読み出した命令を解読し（ステップＳ１０１２）、解読した命令の種類を判断する（ステップＳ１０１３）。命令の種類が初期設定命令の場合及び条件付分岐命令である場合は、実施形態１と同様の動作をするため説明を省略する。読み出した命令の種類が、初期設定命令及び条件付分岐命令以外である場合は、フラグ生成命令であるか判断する（ステップＳ１０１４）。フラグ生成命令である場合は（ステップＳ１０１４でＹＥＳ）、前記読み出した命令を命令置換部１００７へ送り（ステップＳ１０５１）、命令置換部１００７は受け取ったフラグ生成命令を演算器１００８へ送る（ステップＳ１０６１）。フラグ生成命令を受け取った演算器１００８は、前記フラグ生成命令を実行し（ステップＳ１０３１）、実行結果をフラグ生成部１００９へ出力する（ステップＳ１０７１）。前記実行結果を受け取ったフラグ生成部１００９は、実行結果が１か０かを判断し（ステップＳ１０４１）、１である場合は命令の置換を示す実行結果フラグを生成し、生成した実行結果フラグを命令置換部１００７へ送る（ステップＳ１０７２）。実行結果が０である場合は命令を置換しないので実行結果フラグを生成しない（ステップＳ１０７３）。
【００４８】
命令デコード部１００２が読み出した命令がフラグ生成命令でない場合（ステップＳ１０１４でＮＯ）は、読み出した命令に命令置換フラグが付されているか否かを判断し（ステップＳ１０１５）、付されている場合は、命令置換フラグをループ制御部１００３へ送り（ステップＳ１０８１）、読み出した命令は、命令置換部１００７へ送る（ステップＳ１０５３）。
【００４９】
命令置換フラグを受け取ったループ制御部１００３とループカウント部１００４は、実施形態１のループ制御部２０３及びループカウント部２０４と同様の動作をし、命令デコード部１００２に命令置換信号を送る（ステップＳ１０８２）。命令置換信号を受け取った命令デコード部１００２は、命令置換信号を命令置換部１００７へ送る（ステップＳ１０５４）。
【００５０】
命令置換部１００７は、命令デコード部１００２から命令置換信号を受け取るか、フラグ生成部１００９から実行結果フラグを受け取ると、読み出した命令をＮＯＰ命令に置換して（ステップＳ１０２１）演算器１００８へ発行する（ステップＳ１０６２）。
読み出した命令に命令置換フラグが付されていない場合は（ステップＳ１０１６でＮＯ）、読み出した命令をそのまま命令置換部１００７へ送り（ステップＳ１０５５）、前記命令を受け取った命令置換部１００７は、受け取った命令を演算器１００８へ発行する（ステップＳ１０６２）。
【００５１】
命令を受け取った演算器１００８は、命令を実行する（ステップＳ１０３２）。受け取った命令がＮＯＰ命令である場合、演算器１００８は命令の実行を抑制する。以上により、ループ命令を用いたプログラムのループ構造内の命令を実行する際、ループ回数と以前の実行結果に応じて、演算器毎に異なるループの繰返回数で実行する必要のない命令をＮＯＰ命令に置換して演算器１００８に発行し、命令の実行を抑制することができる。
５．その他の変形例
（１）上記実施の形態では、ループ回数が１，２，ｎ−１，ｎ回のときに、実行する必要の無い命令をＮＯＰ命令に置換することによって、不要な命令の実行を抑制している。しかし、以下に示すようにループ回数が１，ｎ回のときにのみＮＯＰ命令に置換するとしても良い。
【００５２】
ループ回数が１，ｎ回目の時、実行する必要の無い命令の実行を抑制する方式として、以下に（Ａ）〜（Ｆ）の各パターンを示す。（Ａ）〜（Ｆ）のパターンの命令実行の様子は図１５〜２０に示す。これらの図において、（　）内の数字はループ回数を示し、○で囲まれた数字は実際に処理される回数を表し、同じ数字が付された命令は、一組の処理をするペアであることを示す。斜線が付された命令は、実行が抑制される命令を表す。
【００５３】
（Ａ）図１５に示すように、データロード、演算、データストアの順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目の演算１５０２とデータストア１５０３と、ループ回数ｎ回目のデータロード１５０８とをＮＯＰ命令に置換し、これらの命令の実行を抑制する。この場合、メモリからロードしたデータセットを格納するため、２セットのレジスタが必要である。
【００５４】
実際の処理は、データロード１５０１でメモリからデータセットをロードし、ロードしたデータセットをレジスタに格納し、演算１５０２及びデータストア１５０３はＮＯＰ命令に置換し、データロード１５０４でメモリからデータセットをロードし、ロードしたデータセットを別のレジスタに格納する。次の演算１５０５では、データロード１５０１でロードし、レジスタに格納しているデータセットを用いて演算し、データストア１５０６で前記演算結果をストアする。このように命令を繰り返し、ループ回数ｎ回目のデータロード１５０８は、ＮＯＰ命令に置換し、演算１５０９では、ループ回数ｎ−１回目のデータロード１５０７でロードしたデータセットを利用して演算し、データストア１５１０で前記演算結果をストアする。
【００５５】
このように、同時に２回分のロードデータをレジスタに格納する必要がある場合、プロセッサはレジスタ読み替えの機能を有し、ループ回数によってレジスタを切り替える。
Ｒ１、Ｒ２の二つのレジスタを利用する場合、一例として次のような構造のプログラムとなる。
【００５６】
ｌｏａｄ　　Ｒ１／Ｒ２
ｃａｌｃ　　Ｒ２／Ｒ１
ここで、Ｒ１／Ｒ２、Ｒ２／Ｒ１はレジスタＲ１、Ｒ２を切り替えて使うことを示す。プロセッサがＲ１／Ｒ２、Ｒ２／Ｒ１を命令中に検出すると、レジスタの切り替えを示すと記憶する。
【００５７】
この場合、１回目のロード命令でロードしたデータをＲ１に格納する。プロセッサは２回目のロード命令ではレジスタを切り替える。２回目のロード命令でロードしたデータは、Ｒ２に格納される。１回目の演算ではＲ１に格納しているデータを用いて演算し、２回目の演算ではプロセッサがレジスタを切り替えて、Ｒ２に格納しているデータを用いて演算する。以後同様に、プロセッサはレジスタを切り替えながら処理する。
【００５８】
この場合、レジスタ切り替えのパターンは、上記のように命令で与えるか、又は、その旨をレジスタ等に設定するようにする。
後述するパターン（Ｄ）、（Ｅ）も同様に、プロセッサはレジスタを切り替える機構を有する。
（Ｂ）図１６に示すように、データロード、データストア、演算の順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目のデータストア１６０２と、ループ回数ｎ回目のデータロード１６０６と演算１６０８とをＮＯＰ命令に置換し、命令の実行を抑制する。この場合、レジスタは、ロードしたデータセット分と演算結果分が必要である。
【００５９】
実際の処理は、データロード１６０１でメモリからデータセットをロードし、ロードしたデータセットをレジスタに格納し、データストア１６０２はＮＯＰ命令に置換し、演算１６０３で、データロード１６０１でロードしたデータセットを利用して演算し、演算した結果はレジスタに格納し、次にデータロード１６０４でメモリからデータセットをロードし、ロードしたデータセットを別のレジスタに格納し、レジスタに格納している演算結果をデータストア１６０５でストアする。このように命令を繰り返し、ループ回数ｎ回目のデータロード１６０６はＮＯＰ命令に置換し、データストア１６０７は、ループ回数ｎ−１回目にロードして演算されてレジスタに格納している演算結果をストアし、演算１６０８はＮＯＰ命令に置換する。
【００６０】
（Ｃ）図１７に示すように、演算、データロード、データストアの順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目の演算１７０１と、データストア１７０３と、ループ回数ｎ回目のデータロード１７０８とをＮＯＰ命令に置換し、命令の実行を抑制する。この場合、メモリからロードしたデータセットを格納するためのレジスタと、演算結果を格納するためのレジスタが必要である。
【００６１】
実際の処理は、演算１７０１をＮＯＰ命令に置換し、データロード１７０２でメモリからデータセットをロードしてレジスタに格納し、データストア１７０３をＮＯＰ命令に置換し、演算１７０４でレジスタに格納しているデータセットを用いて演算し、演算結果をレジスタに格納する。データロード１７０５でメモリからデータセットをロードし、別のレジスタに格納する。データストア１７０６でレジスタに格納している演算結果をストアする。このように命令を繰り返し、ループ回数ｎ回目の演算１７０７で、ループ回数ｎ−１回目にロードしてレジスタに格納していたデータセットを用いて演算し、演算結果をレジスタに格納する。データロード１７０８はＮＯＰ命令に置換し、データストア１７０９でレジスタに格納しているデータセットをストアする。
【００６２】
（Ｄ）図１８に示すように、演算、データストア、データロードの順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目の演算１８０１と、データストア１８０２と、ループ回数ｎ回目のデータロード１８１３とをＮＯＰ命令に置換し、命令の実行を抑制する。この場合、メモリからロードしたデータセットを格納するために２セットのレジスタが必要である。また、余分なデータをストアするための、１回分のストア領域がメモリ上に必要である。
【００６３】
実際の処理では、演算１８０１及びデータストア１８０２をＮＯＰ命令に置換し、データロード１８０３でメモリからデータセットをロードし、ロードしたデータセットをレジスタに格納する。演算１８０４及びデータストア１８０５では、プログラムと関係の無いデータセットを演算し、ストアする。データロード１８０６で、メモリからデータセットをロードし、ロードしたデータセットを別のレジスタに格納する。演算１８０７では、データロード１８０３でロードしてレジスタに格納しているデータセットを用いて演算し、データストア１８０８で演算１８０７で演算した結果をストアする。このように命令を繰り返し、ループ回数ｎ−１回目のデータロード１８１０でメモリからデータセットをロードしてレジスタに格納し、演算１８１１で、ループ回数ｎ−２回目のデータロード１８０９でロードしてレジスタに格納しているデータセットを用いて演算し、データストア１８１２で、演算１８１１で演算した結果をストアする。データロード１８１３はＮＯＰ命令に置換する。データロード１８１０ではデータセットをロードしてレジスタに格納するのみであり、ロードしたデータセットは以降の演算には用いられない。従って、データロード１８１０はプログラム全体の実行時間に影響しない。
【００６４】
なお、このパターンは上記実施の形態と同様に、ループ回数が１，２，ｎ−１，ｎ回のとき、実行する必要の無い命令をＮＯＰ命令に置換することによって、不要な命令の実行を抑制するようにしても良い。この場合、ループ回数１回目の演算と、データストアと、ループ回数２回目の演算と、データストアと、ループ回数ｎ−１回目のデータロードと、ループ回数ｎ回目のデータロードとをＮＯＰ命令に置換すれば良い。
【００６５】
（Ｅ）図１９に示すように、データストア、データロード、演算の順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目のデータストア１９０１と、演算１９０３と、ループ回数ｎ回目のデータロード１９１２と、演算１９１３とをＮＯＰ命令に置換し、命令の実行を抑制する。この場合、メモリからロードしたデータセットを格納するため、２セットのレジスタが必要である。また、余分なデータをストアするための、１回分のストア領域がメモリ上に必要になる。
【００６６】
実際の処理では、データストア１９０１をＮＯＰ命令に置換し、データロード１９０２でメモリからデータセットをロードしてレジスタに格納し、演算１９０３をＮＯＰ命令に置換する。データストア１９０４で、実行しているプログラムとは関係ないデータセットをストアし、データロード１９０５でメモリからデータセットをロードして別のレジスタに格納する。演算１９０６で、データロード１９０２でロードしてレジスタに格納していたデータセットを用いて演算し、データストア１９０７で演算結果をストアする。このように、命令を繰り返し、データロード１９０９は、メモリからデータセットをロードしてレジスタに格納し、演算１９１０は、ループ回数ｎ−２のデータロード１９０８でロードしてレジスタに格納していたデータセットを用いて演算し、データストア１９１１は、演算１９１０で演算した結果をストアする。データロード１９１２及び演算１９１３はＮＯＰ命令に置換する。データロード１９０９ではデータセットをロードしてレジスタに格納するのみであり、ロードしたデータセットは以降の演算には用いられない。従って、データロード１９０９はプログラム全体の実行時間に影響しない。
【００６７】
なお、このパターンは実施の形態と同様に、ループ回数が１，２，ｎ−１，ｎ回のとき、実行する必要の無い命令をＮＯＰ命令に置換することによって、不要な命令の実行を抑制するようにしても良い。この場合、ループ回数１回目のデータストアと、演算と、ループ回数２回目のデータストアと、ループ回数ｎ−１回目のデータロードと、ループ回数ｎ回目のデータロードと、演算とをＮＯＰ命令に置換すれば良い。
【００６８】
（Ｆ）図２０に示すように、データストア、演算、データロードの順に命令を繰り返し実行するループ構造プログラムの場合、ループ回数１回目のデータストア２００１と、演算２００２と、ループ回数ｎ回目の演算２０１１と、データロード２０１２とをＮＯＰ命令に置換し、命令の実行を抑制する。この場合、メモリからロードしたデータセットを格納するためのレジスタと演算結果分を格納するためのレジスタが必要である。また、余分なデータをストアするための、１回分のストア領域がメモリ上に必要である。
【００６９】
実際の処理は、データストア２００１及び演算２００２はＮＯＰ命令に置換し、データロード２００３でメモリからデータセットをロードし、ロードしたデータセットをレジスタに格納する。データストア２００４では、実行しているプログラムと関係ないデータセットをストアし、演算２００５で、データロード２００３でロードしてレジスタに格納しているデータセットを用いて演算し、演算結果はレジスタに格納する。データロード２００６でメモリからデータセットをロードし、別のレジスタに格納する。データストア２００７でレジスタに格納している演算結果をストアする。このように命令を繰り返し、ループ回数ｎ−１回目のデータロード２００９でメモリからデータセットをロードしてレジスタに格納し、データストア２０１０で、ループ回数ｎ−１の演算２００８で演算してレジスタに格納している結果をストアする。演算２０１１及びデータロード２０１２は、ＮＯＰ命令に置換する。データロード１８１０ではデータセットをロードしてレジスタに格納するのみであり、ロードしたデータセットは以降の演算には用いられない。従って、データロード１８１０はプログラム全体の実行時間に影響しない。
【００７０】
なお、このパターンは、ループ回数が１，２，ｎ−１，ｎ回のときに、実行する必要の無い命令をＮＯＰ命令に置換することによって、不要な命令の実行を抑制する構成も可能で、その構成は実施の形態に記載した通りである。
以上（Ａ）〜（Ｆ）の各パターンについて説明した。このうち、（Ａ）、（Ｂ）、（Ｃ）の場合、プログラム中の命令は、データロードの後にデータストアが配される順で繰り返し実行される。この場合、ループ回数２，ｎ−１回目に不要な命令が現れず、ループ回数１，ｎ回目に現れる不要な命令をＮＯＰ命令に置換すれば良い。これに対して（Ｄ）、（Ｅ）、（Ｆ）の場合、プログラム中の命令は、データストアの後にデータロードが配される順で繰り返し実行される。この場合、ループ回数１，２，ｎ−１，ｎ回目に不要な命令が現れる。その為、ループ回数１、ｎ回目の不要な命令はＮＯＰ命令に置換し、ループ回数２、ｎ−１回目の不要な命令は、そのまま実行して、実行結果を無視する。若しくは、実施の形態のように、１，２，ｎ−１，ｎ回に現れる不要な命令全てをＮＯＰ命令に置換しても良い。
【００７１】
レジスタを切り替える方法としては、前述の方法の他、ロード命令の後に、ロードしたデータを別レジスタに移動するという方法があり、この場合、レジスタから別のレジスタへデータを移動させるムーブ命令が必要となる。
（Ａ）のパターンで例に示すと、Ｒ１、Ｒ２、Ｒ３のレジスタを用いる場合、以下のような構造のプログラムになる。
【００７２】
ｌｏａｄ　Ｒ１　（データロード）
ｃａｌｃ　Ｒ２，　Ｒ３　（Ｒ２のデータを用いて演算し、演算結果をＲ３に格納する）
ｍｏｖｅ　Ｒ１−＞Ｒ２　（Ｒ１に格納しているデータをＲ２に移動するムーブ命令）
ｓｔｏｒｅ　　Ｒ３　　（データストア）
このような構造のプログラムを繰り返し実行すると、ループ回数１回目のデータロードでロードしたデータをレジスタＲ１に格納し、演算命令をＮＯＰ命令に置換し、ムーブ命令で、レジスタＲ１のデータをＲ２に移動し、データストアをＮＯＰ命令に置換する。ループ回数２回目のロード命令でロードしたデータはレジスタＲ１に格納し、演算命令でレジスタＲ２に格納しているデータを用いて演算し、演算結果をＲ３に格納する。ムーブ命令でＲ１に格納しているデータをＲ２に移動し、データストアでＲ３に格納している演算結果をストアする。以下同様に実行する。
【００７３】
（Ｄ）、（Ｅ）も同様の方法でレジスタを切り替えられる。
（２）実施の形態では特定のループ回数で命令をＮＯＰ命令に置換するとしているが、以下に示すようにループ制御部で回数の比較を行う際、ループカウント部から受け取るループ回数の一部をマスクして予め決められている比較値と比較するようにしても良い。
【００７４】
命令置換フラグと同様な構成で比較値「１１」を命令に付しておく。ループ制御部はループカウント部からカウント値を受け取ると、カウント値の下位２ビット以外をマスクする。マスクしていない下位２ビットが前記比較値と異なる値であればＮＯＰ命令に置換し、同じ値であれば当該命令を実行する。この構成にすると、４回に１回、命令が実行される。例えば、４回演算を行い、１回データストアを行うという処理を実現できる。
【００７５】
また、特定のループ回数のときＮＯＰ命令以外の別命令に置換するようにしても良い。この構成を利用して、ループの偶数回にはａｄｄ、奇数回にはｓｕｂを実行するという処理を行うことが出来る。
（３）本発明はプロセッサにより、ビデオデコーダだけでなく、オーディオデコーダのオーディオの処理において繰り返しの演算を行うようにしても良い。
【００７６】
また、オーディオデコーダとビデオデコーダとは、１個のプロセッサを共有しており、このプロセッサより、オーディオやビデオの処理において繰り返しの演算を行うようにしても良い。
（４）なお、本発明は、携帯電話、家電、携帯型情報端末、テレビゲーム、その他に適用しても良い。
【００７７】
【発明の効果】
以上説明したように、本発明は複数の命令を繰り返し実行するプログラム実行装置であって、複数の命令の何れか１つ以上に、命令をＮＯＰ命令に置換するか否かを示す置換情報が付され、前記複数の命令を繰り返し実行することを示すプログラムを予め記憶している命令記憶手段と、各命令を命令記憶手段から読み出し、読み出した命令を解読し、解読結果を出力し、命令に付された置換情報を出力する命令解読手段と、解読結果を受け取り、受け取った解読結果に基づいて演算を行う演算手段と、前記複数の命令が繰返し実行された実行回数をカウントするカウント手段と、カウント手段から実行回数を取得し、取得した実行回数と出力された置換情報とを基にして、読み出した前記命令をＮＯＰ命令に置換するか否かを判断し、ＮＯＰ命令に置換すると判断する場合に、置換信号を出力する制御手段と、置換信号を受け取ると、読み出した前記命令をＮＯＰ命令に置換してＮＯＰ命令を出力する置換手段を備え、前記演算手段は、ＮＯＰ命令を受け取ると、演算の実行を抑制することを特徴とするプログラム実行装置である。
【００７８】
この構成によると、複数の命令を繰り返し実行する場合に、不要な命令は繰返回数と置換情報に従って、ＮＯＰ命令に置換して発行するので、実行するの必要ない命令の実行を抑制出来るという効果がある。
ここで、前記制御手段は、取得した実行回数が予め定められた値である場合に、前記命令をＮＯＰ命令に置換するか否かを判断するようにしても良い。
【００７９】
この構成によると、予め定められた繰返回数のときに、ＮＯＰ命令に置換するので、特定の繰返回数のときに命令の実行を抑制できるという効果がある。
ここで、前記命令記憶手段において、命令に付されている置換情報は、命令が実行される１以上の繰返回数に対応付けて、当該命令を置換するか否かを示す１個以上の置換フラグを含み、前記制御手段は、取得した実行回数に対応する前記置換フラグが、当該命令を置換することを示す場合に置換信号を出力するようにしても良い。
【００８０】
この構成によると、各命令には繰返回数ごとの置換フラグが付されているので、命令毎に異なる繰返回数のときに、ＮＯＰ命令に置換出来るという効果がある。ここで、前記命令記憶手段は、ストア命令、演算命令及びロード命令を含む前記複数の命令を、所定の順で繰返し実行することを示すプログラムを予め記憶しており、前記ストア命令、前記演算命令及び前記ロード命令のうち少なくとも１命令には、繰返しの１回目に対応して、ＮＯＰ命令に置換することを示す１個の置換フラグを含む前記置換情報が付されており、前記ストア命令、前記演算命令及び前記ロード命令のうち少なくとも１命令には、繰返しの最終回に対応して、ＮＯＰ命令に置換することを示す１個の置換フラグを含む前記置換情報が付されており、前記制御手段は、取得した実行回数が、前記命令に付されている前記１個の置換フラグが対応する実行回数と一致する場合、前記命令に対する前記置換信号を出力するようにしても良い。
【００８１】
この構成によると、繰返回数が１回目及び最終回に不要な命令が現れるとき、不要な命令をＮＯＰ命令に置換し、命令の実行を抑制することが出来るという効果がある。
ここで、前記命令記憶手段は、ストア命令、演算命令及びロード命令を含む前記複数の命令を、少なくともストア命令の後にロード命令が配される順で繰返し実行することを示すプログラムを予め記憶しており、前記ストア命令には、繰返しの１回目及び２回目に対応して、ＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、前記演算命令には、繰返しの１回目及び２回目に対応して、又は繰返しの１回目及び最終回に対応してＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、前記ロード命令には、繰返しの最終回及びその前の回に対応し、ＮＯＰ命令に置換することを示す２個の置換フラグを含む前記置換情報が付されており、前記制御手段は、取得した実行回数が、前記ストア命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記ストア命令に対する前記置換信号を出力し、前記演算命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記演算命令に対する前記置換信号を出力し、前記ロード命令に付されている前記２個の置換フラグのうち、何れかが対応する実行回数と一致する場合、前記ロード命令に対する前記置換信号を出力するようにしても良い。
【００８２】
この構成によると、ストア命令、演算命令及びロード命令を含む複数の命令を、少なくともストア命令の後にロード命令が配される順で繰り返し実行することを示すプログラム場合、ストア命令は、繰返回数が１回目及び２回目に、演算命令は、繰返回数が１回目及び２回目、又は１回目及び最終回に、ロード命令は繰返回数が最終回及びその前の回にＮＯＰ命令に置換し、命令の実行を抑制することが出来るという効果がある。
【００８３】
ここで、前記プログラム実行装置は、さらに前記演算手段による演算結果に基づいて、読み出した前記命令をＮＯＰ命令に置換するか否か判断し、ＮＯＰ命令に置換すると判断する場合に演算結果フラグを生成するフラグ生成手段を備え、前記置換手段は、さらに前記演算結果フラグを受け取ると、読み出した前記命令をＮＯＰ命令に置換してＮＯＰ命令を出力するようにしても良い。
【００８４】
この構成によると、実行結果に従って命令をＮＯＰ命令に置換するか否か判断するので、命令毎に異なる繰返回数のときにＮＯＰ命令に置換できるという効果がある。
ここで、　前記演算手段は、複数の演算部を含み、前記置換手段は、各演算部に対応する複数の置換部を含み、各置換部は、前記置換情報又は、前記演算結果フラグを受け取ると、読み出した前記命令をＮＯＰ命令に置換し、当該置換部に対応する前記演算部へＮＯＰ命令を出力するようにしても良い。
【００８５】
この構成によると、置換部毎に異なる実行結果フラグを受け取るので、演算部毎に異なる繰返回数のときに、当該命令をＮＯＰ命令に置換することが出来るという効果がある。
【図面の簡単な説明】
【図１】デジタル放送受信装置を示すブロック図である。
【図２】実施形態１のデジタル放送受信装置内のプロセッサを示すブロック図である。
【図３】繰り返し命令の構造を表す。
【図４】命令置換フラグとループの繰り返し回数との対応を表す。
【図５】ループ構造プログラムの命令実行の流れを示す。
【図６】本発明を利用した、実施の形態１及び２の命令実行の流れを示したフローチャートである。図７に続く。
【図７】本発明を利用した、実施の形態１及び２の命令実行の流れを示したフローチャートである。図６の続き。
【図８】実施形態２のデジタル放送受信装置内のプロセッサの構造を示すブロック図である。
【図９】実施形態３のデジタル放送受信装置内のプロセッサの構造を示すブロック図である。
【図１０】本発明を利用した、実施形態３の命令実行の流れを示したフローチャートである。図１１に続く。
【図１１】本発明を利用した、実施形態３の命令実行の流れを示したフローチャートである。図１０の続き。
【図１２】実施形態４のデジタル放送受信装置内のプロセッサの構造を示すブロック図である。
【図１３】本発明を利用した、実施形態４の命令実行の流れを示したフローチャートである。図１４に続く。
【図１４】本発明を利用した、実施形態４の命令実行の流れを示したフローチャートである。図１３の続き。
【図１５】ループ構造プログラム（Ａ）の命令実行の流れを示す。
【図１６】ループ構造プログラム（Ｂ）の命令実行の流れを示す。
【図１７】ループ構造プログラム（Ｃ）の命令実行の流れを示す。
【図１８】ループ構造プログラム（Ｄ）の命令実行の流れを示す。
【図１９】ループ構造プログラム（Ｅ）の命令実行の流れを示す。
【図２０】ループ構造プログラム（Ｆ）の命令実行の流れを示す。
【符号の説明】
１００　　デジタル放送受信装置
１０１　　アンテナ
１０２　　チューナー
１０３　　デスクランブラ
１０４　　トランスポートデコーダ
１０５　　オーディオデコーダ
１０６　　ビデオデコーダ
１０７　　画面合成部
１０８　　スピーカー
１０９　　モニタ
２００　　プロセッサ
２０１　　命令メモリ
２０２　　命令デコード部
２０３　　ループ制御部
２０４　　ループカウント部
２０５　　演算部
３００　　プログラム
３０１　　初期設定命令
３０２　　ラベル
３０３　　ストア命令
３０４　　演算命令
３０５　　ロード命令
３０６　　ロード命令
３０７　　条件付分岐命令
３０８〜３１１　命令置換フラグ
５０１　　データストア
５０２　　演算
５０３　　データロード
５０４　　データストア
５０５　　演算
５０６　　データロード
５０７　　データストア
５０８　　演算
５０９　　データストア
５１０　　データロード
５１１　　演算
５１２　　データロード
５１３　　データストア
５１４　　演算
５１５　　データロード
７００　　プロセッサ
７０１　　命令メモリ
７０２　　命令デコード部
７０３　　ループ制御部
７０４　　ループカウント部
７０５　　演算部
７０６　　演算器
８００　　プロセッサ
８０１　　命令メモリ
８０２　　命令デコード部
８０３　　ループ制御部
８０４　　ループカウント部
８０５　　演算部
８０６　　フラグ生成部
１０００　　プロセッサ
１００１　　命令メモリ
１００２　　命令デコード部
１００３　　ループ制御部
１００４　　ループカウント部
１００５　　演算部
１００６１〜１００６４　演算ブロック
１００７　　命令置換部
１００８　　演算器
１００９　　フラグ生成部
【図１】
2004062815.tif 000003
【図２】
2004062815.tif 000004
【図３】
2004062815.tif 000005
【図４】
2004062815.tif 000006
【図５】
2004062815.tif 000007
【図６】
2004062815.tif 000008
【図７】
2004062815.tif 000009
【図８】
2004062815.tif 000010
【図９】
2004062815.tif 000011
【図１０】
2004062815.tif 000012
【図１１】
2004062815.tif 000013
【図１２】
2004062815.tif 000014
【図１３】
2004062815.tif 000015
【図１４】
2004062815.tif 000016
【図１５】
2004062815.tif 000017
【図１６】
2004062815.tif 000018
【図１７】
2004062815.tif 000019
【図１８】
2004062815.tif 000020
【図１９】
2004062815.tif 000021
【図２０】
2004062815.tif 000022