(57)【要約】ループ処理用分岐命令の分岐条件が成立してループモードに入るときに、ループ処理用分岐命令が示す分岐相対アドレスを分岐相対アドレス保存回路１１ｅに保存し、ループ状態フラグをループ状態保存回路１１ｈにセットする。ループ状態フラグがセットされているときに、命令コードカウント回路１１ｆの出力する値の絶対値と分岐相対アドレス保存回路１１ｅの出力する分岐相対アドレスの値の絶対値が一致したら、プログラムカウンタ加算値切り替え回路１１ｇは分岐相対アドレスをプログラムカウンタ用加算器１１ｂに出力する。絶対値が一致しないのであれば、プログラムカウンタ加算値切り替え回路１１ｇは値「１」をプログラムカウンタ用加算器１１ｂに出力する。この構成により、ループスタートアドレスやループエンドアドレスを保存する構成に比べて少ないハードウェアでありつつも、ループ処理時の分岐ペナルティの削減が行える。
2013069551.tif 000002
【特許請求の範囲】
【請求項１】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサであって、  前記プログラム制御回路は、前記演算器で実行すべき命令を記述する命令コードを記憶する命令メモリと、前記命令メモリに記憶された前記命令コードを順次読み出して前記演算器に出力する命令デコーダと、前記命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路を備えると共に、  前記命令デコーダが、前記命令コードが同一の命令を順次繰り返すループ処理である場合に前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、  前記命令メモリアドレス生成回路が、  前記命令デコーダに対して前記命令メモリ上のアドレスを出力するプログラムカウンタと、  前記ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、  前記ループ処理が実行されている時に前記ループ状態保存回路に前記ループ状態フラグをセットする命令メモリアドレス生成制御回路と、  前記分岐相対アドレスを保存する分岐相対アドレス保存回路と、  前記ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、  前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを前記プログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路とを備えたことを特徴とするデジタル信号プロセッサ。
【請求項２】
前記命令デコーダが、前記ループ処理用分岐命令で分岐条件が成立した場合に、前記ループ状態保存回路の前記ループ状態フラグを解除するループ状態解除回路を備えたことを特徴とする、請求項１に記載のデジタル信号プロセッサ。
【請求項３】
前記命令コード長カウント回路が、  前記ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタと、  前記ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器と、  前記ループ命令列カウントレジスタおよび前記分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すれば前記ループ処理の末尾のアドレスに到達した旨を示す信号を前記命令メモリアドレス生成制御回路に対して出力するコンパレータとを備えたことを特徴とする、請求項１に記載のデジタル信号プロセッサ。
【請求項４】
分岐相対アドレス保存回路に保存される分岐相対アドレスの範囲が、前記命令メモリのアドレスバス幅以下に制限されていることを特徴とする、請求項１に記載のデジタル信号プロセッサ。
【請求項５】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、  前記命令デコーダに対して前記命令メモリ上のアドレスをプログラムカウンタが出力し、  前記命令メモリの出力された前記アドレスに記憶された前記命令コードを命令デコーダが順次読み出して前記演算器に出力し、  前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、  前記ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路に前記ループ状態フラグをセットし、  前記ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、  前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路が前記プログラムカウンタに対して出力することを特徴とするプログラム制御方法。
【請求項６】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、  前記デジタル信号プロセッサを制御するコンピュータに、  前記命令デコーダに対して前記命令メモリ上のアドレスを出力する手順、  前記命令メモリの出力された前記アドレスに記憶された前記命令コードを順次読み出して前記演算器に出力する手順、  前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスを出力する手順、  前記ループ処理が実行されている時に前記ループ状態フラグをセットする手順、  前記ループ処理１回分のコード長である命令コード長を数える手順、  および前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを出力する手順を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明はデジタル信号プロセッサ、プログラム制御方法、および制御プログラムに関し、特に分岐ペナルティによる処理の遅延（オーバーヘッド）を少なくすることを可能とするデジタル信号プロセッサ等に関する。
【背景技術】
【０００２】  デジタル信号プロセッサ（Digital Signal Processor、以後ＤＳＰという）による映像信号や音声信号などの処理は、コンピュータ、携帯端末、あるいはデジタルオーディオ機器などで映像や音声などのマルチメディアデータが扱われることが多くなっていることに伴って、最近特に需要が増大している。また、処理の対象となる各データの容量も増大し、各々のデータ処理の内容もますます高度化している。かつ、動作のリアルタイム性を損なわないよう、短時間でそれらのデータ処理を行う必要もある。【０００３】  そこで、最近のＤＳＰは、専用のハードウェアを用いるのではなく、組み込み用プロセッサコアに専用のコプロセッサを接続して、そのようなデータの処理を行うという構成のものが多くなっている。【０００４】  通常、このようなＤＳＰを含む専用ＬＳＩでは、プロセッサコアが多数搭載されるため、各プロセッサコアの回路規模が全体の回路規模を大きく左右する。装置の小型化、低消費電力化、および低コスト化などは常に求められることであるので、ＤＳＰにおいては、信号処理用途として十分な処理能力を持ちつつ、各プロセッサコアの回路規模を可能な限り小さくしたものが必要となる。【０００５】  通常、ＤＳＰによる信号処理では、全実行時間のうち、同じ命令列を繰返して行うループ処理を実行する時間が非常に大きな割合を占めることが知られている。しかしながら、ループ処理を行うときに必要な分岐命令には、いわゆる分岐ペナルティと呼ばれる、パイプライン処理の命令無効化による処理の遅延が存在する。そのため、ループ回数が多くなればなるほど、分岐ペナルティが大きくなって処理速度を悪化させるという問題がある。【０００６】  このことについてより詳しく説明する。図７は、通常のＤＳＰ８０１の構成について示す説明図である。ＤＳＰ８０１は、命令メモリ（プログラムメモリ）とデータメモリとが分離された構造（いわゆるハーバードアーキテクチャ）となっており、プログラム制御回路８１０、演算器８２０、レジスタ８３０、およびデータメモリ８４０によって構成される。プログラム制御回路８１０には、命令メモリアドレス生成回路８１１、命令メモリ８１２、命令デコーダ８１３が含まれている。【０００７】  命令メモリアドレス生成回路８１１により生成された命令メモリアドレスに応じて、命令メモリ８１２上の当該アドレスに格納されている命令コードが読み出されて命令デコーダ８１３に送られる。命令デコーダ８１３はその命令コードをデコードして、演算器８２０およびレジスタ８３０を制御する制御信号を生成する。演算器８２０およびレジスタ８３０は、この制御信号によって、データメモリ８４０に記憶されたデータを命令の通りに処理する。【０００８】  図８は、図７に示したＤＳＰ８０１による信号処理で行われる処理について示す説明図である。命令メモリ８１２には、ＤＳＰ８０１で処理されるべき命令を記述した命令列９００が記憶されている。命令列９００は、命令９００ａ〜９００ｓという個々の命令によって構成されており、そのうち命令９００ｎが、分岐条件が記述された「ループ処理用分岐命令」であり、命令９００ｆが、分岐条件が成立した場合の戻り先である「分岐先命令」である。【０００���】  ＤＳＰ８０１は、命令列９００を命令９００ａから順番に実行していくが、ループ処理用分岐命令である命令９００ｎでは記述された分岐条件が成立するか否かを判断して、成立しなければ後続の命令９００ｏに処理を移し、成立すれば命令９００ｆに処理を戻す。即ち、命令９００ｎで分岐条件が成立する限り、ＤＳＰ８０１は命令９００ｆ〜９００ｍの処理を繰り返し、成立しなくなれば命令９００ｏ以後の処理に進む。その意味で、命令９００ｆ〜９００ｎを総称して「ループ命令列」という。【００１０】  図９は、図８に示した命令列９００に含まれる各々の命令９００ａ〜９００ｓのより詳しい構成について示す説明図である。各々の命令９００ａ〜９００ｓは、命令フェッチ（ＩＦ）、命令デコード（ＤＥ）、演算（ＯＰ）、ライトバック（ＷＢ）の４段パイプラインで処理される。この命令列９００を処理するＤＳＰ８０１は、分岐条件が成立する場合、ループ処理用分岐命令である命令９００ｎの後に続く２サイクル分の命令、即ち命令９００ｏ〜９００ｐを無効化する。これが分岐ペナルティである。そしてＤＳＰ８０１は、２サイクル分の分岐ペナルティを発生した後で、命令９００ｆに戻って処理を続行する。【００１１】  図１０は、図７に示したＤＳＰ８０１で、図９に示した分岐ペナルティが発生する場合の、命令列９００の実行順序について示す説明図である。この図１０で示すように、分岐条件が成立しなくなるまで、即ち命令９００ｏ〜９００ｐが無効化される状態が繰り返されることになる。即ち、分岐条件が成立しなくなるまでのループ回数が多くなればなるほど、分岐ペナルティによる処理の遅延が増大することになる。なお、図１０では、この分岐ペナルティの部分を「ｎｏｐ（no operation）」として表記している。【００１２】  これに関連する技術文献として、次の各々がある。その中でも特許文献１には、後述の分岐予測と呼ばれる手法によって分岐ペナルティの発生を防止するプロセッサが記載されている。特許文献２には、後述の遅延分岐によって分岐ペナルティの発生を防止するプロセッサが記載されている。特許文献３には、「前回フェッチアドレス」と「フェッチ予定アドレス」を使用して分岐ペナルティの発生を防止するプロセッサが記載されている。【００１３】  特許文献４には、入力された相対分岐先アドレスをプログラムカウンタ値に加算して絶対分岐先アドレスに置換してこの置換した分岐命令を出力するというプロセッサが記載されている。特許文献５には、分岐命令を実行するか否かを示す実行可否条件を利用して分岐ペナルティの発生を防止するプロセッサが記載されている。【００１４】  特許文献６にも、特許文献２と同様に、後述の遅延分岐によって分岐ペナルティの発生を防止するプロセッサが記載されている。特許文献７および８には、後述のハードウェアループによって分岐ペナルティの発生を防止するプロセッサが記載されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００２−２５９１１８号公報
【特許文献２】特開２００４−０１３２５５号公報
【特許文献３】特開２００４−０３０１３７号公報
【特許文献４】特開２００８−１６５５８９号公報
【特許文献５】特開２００９−０５３８６１号公報
【特許文献６】特開平０１−２５６０３３号公報
【特許文献７】特許第３６５６５８７号公報
【特許文献８】特許第３７３９３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】  ＤＳＰにおける分岐ペナルティを削減するために、これまで様々な手法が提案されてきた。それらの手法の中で、「遅延分岐」「ハードウェアループ」「分岐予測」という各手法について説明する。【００１７】  遅延分岐は、前述の特許文献２および６などに記載されている手法である。この手法は、分岐命令を実行して、実際に分岐するまでの遅延スロットと呼ばれる期間にループ処理内に行うべき演算命令を実行することによって、実質的に分岐ペナルティを削減するというものである。しかしながら、この手法では、遅延スロットに上手く演算命令を割当てることができない場合には、分岐ペナルティの削減という効果を得られないという問題点がある。【００１８】  ハードウェアループは、前述の特許文献７および８などに記載されている手法である。この手法は、ループ用の分岐処理および判定処理をハードウェア的に行うというものである。特許文献７および８に記載のプロセッサでは、ループの先頭およびループ末尾のアドレスと、ループ処理を繰り返し行った回数をカウントする専用の回路を実装し、それによりハードウェア的にループ処理を実現している。【００１９】  図１１は、図７で示したＤＳＰ８０１で、ハードウェアループによってループ処理を行う場合の命令メモリアドレス生成回路８１１の構成を示す説明図である。命令メモリアドレス生成回路８１１では、ループ処理の先頭および末尾のアドレスを各々保存するループスタートアドレス保存回路８１１ａとループエンドアドレス保存回路８１１ｂを備え、さらに、ループ処理の末尾に到達したか否かを検出するループ終了検出回路８１１ｃと、ループ処理を繰り返し行った回数をカウントするループ回数カウント回路８１１ｄを備えている。【００２０】  ＤＳＰ８０１は、この構成を取ることによって、プログラムカウンタ８１１ｅと、ループエンドアドレス保存回路８１１ｂに保存されたループ処理末尾のアドレスとをループ終了検出回路８１１ｃによって比較して、この両者が一致していればループスタートアドレス保存回路８１１ａに保存されたループ処理先頭のアドレスをプログラムカウンタ８１１ｅに対して出力して、ハードウェア的にループ処理を行うことが可能とある。ループ回数カウント回路８１１ｄは、ループ処理を行った回数をカウントして、与えられた回数に到達すれば後続の処理に進む。【００２１】  この手法では、遅延スロットに演算を割り当てる必要が無いので、常に分岐ペナルティを発生させることなくループ処理を行うことができる。しかしながら、ループ処理のために付加された専用回路であるループスタートアドレス保存回路８１１ａ、ループエンドアドレス保存回路８１１ｂ、およびループ終了検出回路８１１ｃの回路規模は比較的大きく、これらを実装することにより、プロセッサコアの回路規模が増大するという問題点がある。【００２２】  たとえば、命令メモリのアドレスバス幅が３２ビットである場合、ループスタートアドレス保存回路８１１ａ、ループエンドアドレス保存回路８１１ｂ、およびループ終了検出回路８１１ｃの全てに対して３２ビットデータの記憶が可能なレジスタが必要になる。さらに、３２ビットデータの演算も必要になる。この結果、回路規模が増���することになる。【００２３】  また、ループ回数カウント回路８１１ｄを持つハードウェアループ回路では、繰り返し回数が予め与えられた固定の回数となり、実行中のデータの状態に応じて繰り返し回数を柔軟に変更することが困難であるという問題点もある。【００２４】  分岐予測は、前述の特許文献１などに記載されている手法である。この手法は、分岐元のアドレスとその分岐先のアドレスを保存し、命令のアドレスがその分岐元のアドレスと一致し、かつ、分岐が成立すると予測される場合、次の命令コードを読み出すアドレスを分岐先のアドレスとするというものである。この手法は、ループ処理だけでなく、あらゆる分岐に対する分岐ペナルティを削減できるという点で、上述のハードウェアループよりもさらに処理性能を向上させるという効果が期待される。【００２５】  しかしながら、分岐予測を行うには、分岐予測機構と、分岐元アドレスおよび分岐先アドレスを記憶するテーブルとが必要になるので、ハードウェアループよりもさらに回路の規模が大きくなるという問題点がある。また、ＤＳＰでは通常、ループ処理用の分岐が多く実行され、その他の分岐はほとんど実行されない。従って、回路規模の増大に見合う効果が得られないとされ、分岐予測機構が実際のＤＳＰに採用されることは少ない。【００２６】  以上で述べたＤＳＰにおける分岐ペナルティに係る問題点、および上述の各々の手法に係る問題点を解決しうる技術は、残る特許文献３〜５にも記載されていない。【００２７】  本発明の目的は、回路規模を小さくしつつ、ループ処理における分岐ペナルティの発生に伴う処理性能の低下を軽減することを可能とするデジタル信号プロセッサ、プログラム制御方法、および制御プログラムを提供することにある。
【課題を解決するための手段】
【００２８】  上記目的を達成するため、本発明に係るデジタル信号プロセッサは、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサであって、プログラム制御回路は、演算器で実行すべき命令を記述する命令コードを記憶する命令メモリと、命令メモリに記憶された命令コードを順次読み出して演算器に出力する命令デコーダと、命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路を備えると共に、命令デコーダが、命令コードが同一の命令を順次繰り返すループ処理である場合にループ処理の分岐条件を示すループ処理用分岐命令の命令メモリ上のアドレスを示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、命令メモリアドレス生成回路が、命令デコーダに対して命令メモリ上のアドレスを出力するプログラムカウンタと、ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、ループ処理が実行されている時にループ状態保存回路にループ状態フラグをセットする命令メモリアドレス生成制御回路と、分岐相対アドレスを保存する分岐相対アドレス保存回路と、ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、ループ処理用分岐命令で分岐条件が成立する場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスをプログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路とを備えたことを特徴とする。【００２９】  上記目的を達成するため、本発明に係るプログラム制御方法は、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、命令デコーダに対して命令メモリ上のアドレスをプログラムカウンタが出力し、命令メモリの出力されたアドレスに記憶された命令コードを命令デコーダが順次読み出して演算器に出力し、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令の命令メモリ上のアドレスを示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路にループ状態フラグをセットし、ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、ループ処理用分岐命令で分岐条件が成立する場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路がプログラムカウンタに対して出力することを特徴とする。【００３０】  上記目的を達成するため、本発明に係る制御プログラムは、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、デジタル信号プロセッサを制御するコンピュータに、命令デコーダに対して命令メモリ上のアドレスを出力する手順、命令メモリの出力されたアドレスに記憶された命令コードを順次読み出して演算器に出力する手順、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令の命令メモリ上のアドレスを示す分岐相対アドレスを出力する手順、ループ処理が実行されている時にループ状態フラグをセットする手順、ループ処理１回分のコード長である命令コード長を数える手順、およびループ処理用分岐命令で分岐条件が成立する場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスを出力する手順を実行させることを特徴とする。
【発明の効果】
【００３１】  本発明は、上記したように分岐相対アドレスとループ処理１回分のコード長である命令コード長とを記憶し、ループ処理用分岐命令で分岐条件が成立する場合にこれらの分岐相対アドレスと命令コード長とを加算してループ処理の最初のアドレスを出力するように構成したので、ループ処理の先頭と末尾を記憶するハードウェアループの場合と比べて小さい回路規模で分岐ペナルティの発生を減少させることができる。【００３２】  これによって、回路規模を小さくしつつ、ループ処理における分岐ペナルティの発生に伴う処理性能の低下を軽減することが可能であるという優れた特徴を持つデジタル信号プロセッサ、プログラム制御方法、および制御プログラムを提供することができる。
【図面の簡単な説明】
【００３３】
【図１】図２に示したプログラム制御回路の構成をより詳しく示す説明図である。
【図２】本発明の第１の実施形態に係るデジタル信号プロセッサ（ＤＳＰ）の構成について示す説明図である。
【図３】図１〜２に示したＤＳＰによる信号処理で行われる処理について示す説明図である。
【図４】図１〜２に示したＤＳＰで、図３に示した命令列を実行した場合の、各命令の実行順序について示す説明図である。
【図５】図１〜２に示したＤＳＰで、図３に示した命令列を実行する場合に行われる処理を表したフローチャートである。
【図６】図１〜２に示した命令メモリアドレス生成回路の構成を、さらに詳細に示す説明図である。
【図７】通常のＤＳＰの構成について示す説明図である。
【図８】図７に示したＤＳＰによる信号処理で行われる処理について示す説明図である。
【図９】図８に示した命令列に含まれる各々の命令のより詳しい構成について示す説明図である。
【図１０】図７に示したＤＳＰで、図９に示した分岐ペナルティが発生する場合の、命令列の実行順序について示す説明図である。
【図１１】図７で示したＤＳＰで、ハードウェアループによってループ処理を行う場合の命令メモリアドレス生成回路の構成を示す説明図である。
【発明を実施するための形態】
【００３４】（実施形態）  以下、本発明の実施形態の構成について添付図１〜３に基づいて説明する。  最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。  本実施形態に係るデジタル信号プロセッサ（ＤＳＰ）１は、処理を行う対象となるデータを記憶するデータメモリ４０と、データに対して演算を実行する演算器２０と、演算の結果を一時的に記憶するレジスタ３０と、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路１０とを有するデジタル信号プロセッサである。このプログラム制御回路１０は、演算器で実行すべき命令を記述する命令コードを記憶する命令メモリ１２と、命令メモリに記憶された命令コードを順次読み出して演算器に出力する命令デコーダ１３と、命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路１１を備えると共に、命令デコーダ１３が、命令コードが同一の命令を順次繰り返すループ処理である場合にループ処理の分岐条件を示すループ処理用分岐命令の命令メモリ上のアドレスを示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路１３ａを備え、命令メモリアドレス生成回路１１が、命令デコーダに対して命令メモリ上のアドレスを出力するプログラムカウンタ１１ｄと、ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路１１ｈと、ループ処理が実行されている時にループ状態保存回路にループ状態フラグをセットする命令メモリアドレス生成制御回路１１ａと、分岐相対アドレスを保存する分岐相対アドレス保存回路１１ｅと、ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路１１ｆと、ループ処理用分岐命令で分岐条件が成立する場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の最初のアドレスをプログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路１１ｇとを備える。
【００３５】  また、命令デコーダ１３が、ループ処理用分岐命令で分岐条件が成立した場合に、ループ状態保存回路のループ状態フラグを解除するループ状態解除回路１３ｂを備えている。そして、分岐相対アドレス保存回路１１ｅに保存される分岐相対アドレスの範囲が、命令メモリ１２のアドレスバス幅以下に制限されている。
【００３６】  そして、命令コード長カウント回路１１ｆが、ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタ１１ｉと、ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器１１ｊと、ループ命令列カウントレジスタおよび分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すればループ処理の最後のアドレスに到達した旨を示す信号を命令メモリアドレス生成制御回路に対して出力するコンパレータ１１ｌとを含む。
【００３７】  以上の構成を取ることにより、ＤＳＰ１は、回路規模を小さくしつつ、ループ処理における分岐ペナルティの発生に伴う処理性能の低下を軽減することが可能となる。  以下、これをより詳細に説明する。
【００３８】  図２は、本発明の第１の実施形態に係るデジタル信号プロセッサ（ＤＳＰ）１の構成について示す説明図である。ＤＳＰ１は、図７で示した通常のＤＳＰ８０１と同じく、命令メモリ（プログラムメモリ）とデータメモリとが分離された構造（ハーバードアーキテクチャ）となっており、プログラム制御回路１０、演算器２０、レジスタ３０、およびデータメモリ４０によって構成される。プログラム制御回路１０には、命令メモリアドレス生成回路１１、命令メモリ１２、命令デコーダ１３が含まれている。
【００３９】  命令メモリアドレス生成回路１１により生成された命令メモリアドレスに応じて、命令メモリ１２上の当該アドレスに格納されている命令コードが読み出されて命令デコーダ１３に送られる。命令デコーダ１３はその命令コードをデコードして、演算器２０およびレジスタ３０を制御する制御信号を生成する。演算器２０およびレジスタ３０は、この制御信号によって、データメモリ４０に記憶されたデータを命令の通りに処理する。図２で説明したこの構成は、図１１で示した一般的なＤＳＰの構成と同一である。
【００４０】  図１は、図２に示したプログラム制御回路１０の構成をより詳しく示す説明図である。プログラム制御回路１０の命令メモリアドレス生成回路１１は、通常の命令メモリアドレス生成回路に存在する命令メモリアドレス生成制御回路１１ａ、プログラムカウンタ用加算器１１ｂ、プログラムカウンタ入力セレクタ１１ｃ、プログラムカウンタ１１ｄを備える。
【００４１】  命令メモリアドレス生成回路１１は、これに加えて本発明の構成に特有の、分岐相対アドレス保存回路１１ｅ、命令コード長カウント回路１１ｆ、プログラムカウンタ加算値切り替え回路１１ｇ、ループ状態保存回路１１ｈが存在する。また、命令デコーダ１３には本発明の構成に特有の、ループ処理用分岐命令切り替え回路１３ａ、および、ループ状態解除回路１３ｂが存在する。
【００４２】  以上の各々の回路の動作について説明する。命令デコーダ１３がループ処理用分岐命令を命令コードとして受け取ると、通常の分岐命令と同様に、命令メモリアドレス生成制御回路１１ａにループ処理用分岐処理を通知し、分岐相対アドレスを出力する。すると、命令メモリアドレス生成制御回路１１ａは、分岐相対アドレス保存回路１１ｅに分岐相対アドレスを保存するように要求し、分岐相対アドレス保存回路１１ｅは分岐相対アドレスを保存する。
【００４３】  これと同時に、命令メモリアドレス生成制御回路１１ａは、ループ状態保存回路１１ｈに対し、ループ状態であることを示すフラグをセットするように通知し、ループ状態保存回路１１ｈはこれに応じてループ状態フラグをセットする。命令メモリアドレス生成制御回路１１ａはさらに、命令コード長カウント回路１１ｆにカウンタをクリアするように要求し、命令コード長カウント回路１１ｆはこれに応じてカウンタをクリアする。
【００４４】  さらにこれと同時に、プログラムカウンタ１１ｄには、演算器２０で生成された分岐アドレスがセットされ、ループ命令列の先頭から、命令コードが読み出されるようになる。ループ状態保存回路１１ｈにループ状態フラグがセットされている状態では、命令コード長カウント回路１１ｆにて、ループ命令列内の命令コード長がカウントされる。
【００４５】  プログラムカウンタ加算値切り替え回路１１ｇは、命令コード長カウント回路１１ｆでカウントされているループ命令列の命令コード長と、分岐相対アドレス保存回路１１ｅに保存されている分岐相対アドレスの絶対値を比較して、この両者が一致しない場合には「１」を、一致する場合には保存されている分岐相対アドレスを、プログラムカウンタ用加算器１１ｂに対して出力する。
【００４６】  プログラムカウンタ加算値切り替え回路１１ｇから「１」が出力された場合には、プログラムカウンタ１１ｄの値は１ずつインクリメント（加算）され、その結果、命令メモリ１２からループ命令列内の命令コードが順次読みだされる。
【００４７】  一方、プログラムカウンタ１１ｄの値が、ループ命令列の最後の命令、つまり、ループ処理用分岐命令に対するアドレスとなった場合には、プログラムカウンタ加算値切り替え回路１１ｇからは保存されている分岐相対アドレスが出力される。その結果、加算器１１ｂの出力値は、ループ命令列の最初の命令コードに対するアドレス値になる。そのアドレス値がプログラムカウンタ１１ｄにセットされ、再びループ命令列の先頭から命令コードが順次読み出されることになる。
【００４８】  ループ状態保存回路１１ｈにループ状態フラグがセットされている状態で、分岐命令で分岐処理が成立した場合には、ループ状態解除回路１３ｂにより、ループ状態解除信号が生成され、ループ状態保存回路１１ｈ内のループ状態フラグがクリアされる。また、ループ状態保存回路１１ｈにループ状態フラグがセットされている状態で、分岐命令で分岐処理が成立した場合には、ループ処理用分岐命令切り替え回路１３ａによってループ処理用分岐命令の成立条件が反転され、分岐先アドレスがループ処理用分岐命令の次の命令のアドレスに切り替えられる。
【００４９】  図３は、図１〜２に示したＤＳＰ１による信号処理で行われる処理について示す説明図である。命令メモリ１２には、ＤＳＰ１で処理されるべき命令を記述した命令列１００が記憶されている。命令列１００は、図８に示した命令列９００と同じく、命令１００ａ〜１００ｓという個々の命令によって構成されており、そのうち命令１００ｎが「ループ処理用分岐命令」である。
【００５０】  この命令１００ｎでは、与えられた分岐条件が成立するか否かを判断して、成立しなければ後続の命令１００ｏに処理が移るが、成立すれば命令１００ｆに戻る。即ち、分岐条件が成立しなくなるまで、ＤＳＰ１は命令１００ｆ〜１００ｍの処理を繰り返すことになる。即ち、命令列１００では命令１００ｆ〜１００ｍが「ループ命令列」であり、命令１００ｎは「ループ処理用分岐命令」、命令１００ｆは「分岐先命令」である。初期状態では、ループ状態保存回路１１ｈにはループ状態フラグはセットされていない。
【００５１】  図４は、図１〜２に示したＤＳＰ１で、図３に示した命令列１００を実行した場合の、各命令の実行順序について示す説明図である。この状態で、ＤＳＰ１は命令列１００を命令１００ａから順番に実行し、ループ処理用分岐命令である命令１００ｎを実行すると、ループ状態保存回路１１ｈにループ状態フラグをセットして、図８〜１０と同じくループ命令列の先頭である命令１００ｆに処理を戻して、命令１００ｎの後に続く２サイクル分の命令１００ｏ〜１００ｐを無効化して分岐ペナルティとする。
【００５２】  その後、ＤＳＰ１は命令１００ｆからのループ命令を再び順次実行して、再びループ処理用分岐命令である命令１００ｎにたどり着く。ここでは、まだ分岐条件は成立しているが、ループ状態保存回路１１ｈにループ状態フラグがセットされているので、プログラムカウンタ加算値切り替え回路１１ｇからは保存されている分岐相対アドレスが出力され、加算器１１ｂからはループ命令列の最初の命令コードに対するアドレス値が出力されて、これがプログラムカウンタ１１ｄにセットされる。
【００５３】  即ち、命令１００ｎの次には分岐ペナルティが挿入されず、直接ループ命令列の先頭である命令１００ｆの命令コードが順次読み出されて実行される。ＤＳＰ１は、以上の動作を、命令１００ｎの分岐条件が成立しなくなるまで繰り返す。
【００５４】  ここで分岐条件が成立しなくなると、ループ状態保存回路１１ｈにループ状態フラグがセットされている状態では命令１００ｎの分岐条件は反転するので、ループ処理用分岐命令切り替え回路１３ａによってループ処理用分岐命令の成立条件が反転され、分岐先アドレスがループ処理用分岐命令の次の命令、即ち命令１００ｏのアドレスに切り替えられる。従って、命令１００ｏ〜１００ｐは無効化されて分岐ペナルティとなり、その後で命令１００ｏ以後が実行される。
【００５５】  しかしながら、ＤＳＰ１で命令列１００を実行する場合、分岐ペナルティが入るのはループ命令列が繰り返し実行されるうちの最初と最後の回だけであるので、分岐ペナルティによる処理性能の低下は、大幅に軽減されていることがわかる。特にループ命令列の繰り返し回数が多くなるほど、その処理性能の低下の軽減という効果はより顕著に発揮される。
【００５６】  図５は、図１〜２に示したＤＳＰ１で、図３に示した命令列１００を実行する場合に行われる処理を表したフローチャートである。まず、命令メモリ１２にプログラムコード、データメモリ４０に処理対象となるデータを記憶した上で、ユーザはプログラム制御回路１０を動作させる。すると、まず命令デコーダ１３が、現在処理がループモードであるか否かを判断して（ステップＳ２０１）、ループモードでない場合には処理は後述のステップＳ２０４Ａに進む。ループモードであるか否かは、ループ状態保存回路１１ｈ中のループ状態フラグがセットされているか否かで判断する。
【００５７】  ステップＳ２０１で、処理がループモードである場合には、命令コード長カウント回路１１ｆが命令コード長をカウントして（ステップＳ２０２）、命令デコーダ１３がそのカウントされた結果から、ループ命令列のコード長と相対分岐アドレスの絶対値とが一致するか否かを判断する（ステップＳ２０３）。一致する場合はプログラムカウンタ加算値切り替え回路１１ｇと加算器１１ｂとが命令コード長と分岐相対アドレスとを加算してループ処理の先頭のアドレスを生成し（ステップＳ２０４Ａ）、一致しない場合はそのまま次に実行する命令のアドレスを生成して（ステップＳ２０４Ｂ）、いずれの場合も生成されたアドレスをプログラムカウンタ１１ｄに出力する。
【００５８】  すると、プログラムカウンタ１１ｄが、命令デコーダ１３に対して命令メモリ１２上のアドレスを出力し（ステップＳ２０５）、命令デコーダ１３は命令メモリ１２上の出力されたアドレスに記憶された命令コードを順次読み出して演算器に出力する（ステップＳ２０６）。
【００５９】  そして、ループ処理用分岐命令に到達したか否かを命令デコーダ１３が判断し（ステップＳ２０７）、到達していなければその命令コードの通りに演算器２０が演算処理を行って（ステップＳ２４０）ステップＳ２０１からの処理に戻る。ステップＳ２０７でループ処理用分岐命令に到達していれば、命令デコーダ１３はさらに処理がループモードであるか否かを再び判断して（ステップＳ２０８）、ループモードであれば命令デコーダ１３はさらにループ処理用分岐命令であるか否かを再び判断する（ステップＳ２０９）。
【００６０】  ステップＳ２０９で、ループ処理用分岐命令でなければ、命令デコーダ１３のループ状態解除回路１３ｂがループ状態保存回路１１ｈに対してループ状態解除信号を発してループ状態フラグを解除し（ステップＳ２１０）、そして分岐先アドレスを生成する処理を行って（ステップＳ２１１）ステップＳ２０５に処理が戻る。
【００６１】  ステップＳ２０９で、ループ処理用分岐命令であれば、命令デコーダ１３はさらに分岐条件が成立するか否かを判断する（ステップＳ２２０）。分岐条件が成立すればステップＳ２０１に処理が戻る。ステップＳ２２０で分岐条件が成立しなければ、分岐先アドレスとして次アドレスを生成して、分岐ペナルティを発生させる処理を行って（ステップＳ２２１）ステップＳ２０５に処理が戻る。
【００６２】  ステップＳ２０８で、ループモードでなければ、この場合も命令デコーダ１３は分岐条件が成立するか否かを判断する（ステップＳ２３０）。分岐条件が成立しなければステップＳ２０１に処理が戻る。分岐条件が成立すれば、命令デコーダ１３はさらにループ処理用分岐命令であるか否かを再び判断する（ステップＳ２３１）。ループ処理用分岐命令でなければ後述のステップＳ２３３に処理が進む。
【００６３】  ステップＳ２３１で、ループ処理用分岐命令であれば、命令メモリアドレス生成制御回路１１ａがループ状態保存回路１１ｈにループ状態フラグをセットする（ステップＳ２３２）、そして分岐先アドレスを生成する処理を行って（ステップＳ２３３）、ステップＳ２０５に処理が戻る。
【００６４】（より詳細な構成）  図６は、図１〜２に示した命令メモリアドレス生成回路１１の構成を、さらに詳細に示す説明図である。図１でいう命令コード長カウント回路１１ｆは、ループ命令列カウントレジスタ１１ｉ、減算器１１ｊ、セレクタ１１ｋによって構成されている。また、プログラムカウンタ加算値切り替え回路１１ｇはコンパレータ１１ｌおよびセレクタ１１ｍによって構成される。さらに、ループ状態保存回路１１ｈには、ループ状態フラグ１１ｎが含まれる。
【００６５】  まず、ループ処理用分岐命令によって演算器２０から分岐処理が発行されると、分岐アドレスがプログラムカウンタ入力セレクタ１１ｃを通して、プログラムカウンタ１１ｄにロードされ、ループ命令列の先頭の命令のアドレスが命令メモリアドレスとして命令メモリ１２に出力される。
【００６６】  これと同時に、命令デコーダ１３から、ループ命令列の先頭のアドレスからループ処理用分岐命令の次の命令のアドレスを引いた値が分岐相対アドレスとして与えられる。ループ処理では、この値は負の値となるので、２の補数表現が用いられる。この分岐相対アドレスは、分岐相対アドレス保存回路１１ｅに保存される。さらにこれと同時に、命令メモリアドレス生成制御回路１１ａはループ命令列カウントレジスタ１１ｉに０をセットして、命令メモリアドレス生成制御回路１１ａ内のループ状態フラグ１１ｎもセットする。
【００６７】  ループ状態フラグ１１ｎがセットされている期間、ループ命令列カウントレジスタ１１ｉに記憶された値は減算器１１ｊによって１ずつデクリメント（減算）され、これによってループ命令列中の命令数を反転した値がカウントされる。これと同時に、プログラムカウンタ１１ｄの値は１ずつ加算される。
【００６８】  ループ命令列カウントレジスタ１１ｉでカウントされた命令数の反転値と、分岐相対アドレス保存回路１１ｅで保存された分岐相対アドレスとが、コンパレータ１１ｌによって比較され、この両者が一致した場合には、ループ命令列の最後となったことを示す信号が、命令メモリアドレス生成制御回路１１ａに出力される。
【００６９】  これを受けた命令メモリアドレス生成制御回路１１ａは、プログラムカウンタ１１ｄの値と、分岐相対アドレス保存回路１１ｅに格納されている相対アドレスを加算した結果を、再びプログラムカウンタ１１ｄに格納する。これにより、図３に示した命令列１００で、ループ命令列の最初の命令コード（命令１００ｆ）のアドレスに処理を戻すことができる。また、ループ状態フラグ１１ｎがセットされている時に、分岐命令（命令１００ｎ）による分岐処理が発生すると、ループ状態フラグ１１ｎはクリアされるので、通常の分岐処理が行なわれる。
【００７０】  これによって、この命令メモリアドレス生成回路１１を含むＤＳＰ１は、図３で説明したように分岐ペナルティを削減することが可能となる。そして、分岐相対アドレスのビット幅は、分岐アドレスのビット幅より小さくすることが可能である。その理由は、分岐相対アドレスのビット幅は、ループ処理用分岐命令の命令コード中に埋め込まれている分岐相対アドレスのビット幅となるので、従って、ループ処理用分岐命令の分岐相対アドレスのビット幅は、分岐アドレスのビット幅より小さくなるからである。
【００７１】  即ち、分岐相対アドレス保存回路１１ｅに保存される分岐相対アドレスの範囲を一定値以下に制限することにより、分岐相対アドレスのビット幅を削減することができる。その場合、分岐相対アドレス、つまり、ループ命令列のコード数がある一定値より大きい場合、通常の分岐処理を行うことでループ処理は実行できる。たとえば、命令メモリのアドレスバス幅が３２ビットである場合には、分岐相対アドレス保存回路１１ｅに保存される分岐相対アドレスはそれよりも少ないビット数、たとえば８ビットや１６ビットにすることができる。
【００７２】  この場合、ＤＳＰ１でループ処理用分岐命令を実行されるたびに、図３で説明したようにループ命令列の最初と最後の回に分岐ペナルティが追加されるが、ループ命令列を実行するサイクル数は前述のように非常に大きいため、分岐ペナルティ追加による処理サイクル増大は小さく、従って処理能力に対する分岐ペナルティ発生による悪影響は小さい。
【００７３】  この処理を行うために命令メモリアドレス生成回路１１に追加されるハードウェアは、分岐相対アドレスのビット幅分の保存および比較を行うだけでよいため、図１１で示したハードウェアループ回路と比べても、回路規模の増大は少なくて済む。このような工夫を行うことにより、ＤＳＰ１は、回路規模の増大を少なく抑制しつつ、ループ命令列の実行における分岐ペナルティの発生に伴う処理能力の低下を抑制することが可能になる。
【００７４】（実施形態の全体的な動作）  次に、上記の実施形態の全体的な動作について説明する。  本実施形態に係るプログラム制御方法は、処理を行う対象となるデータを記憶するデータメモリ４０と、データに対して演算を実行する演算器２０と、演算の結果を一時的に記憶するレジスタ３０と、演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリ１２と、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路１０とを有するデジタル信号プロセッサ（ＤＳＰ１）にあって、命令デコーダに対して命令メモリ上のアドレスをプログラムカウンタが出力し（図５・ステップＳ２０２）、命令メモリの出力されたアドレスに記憶された命令コードを命令デコーダが順次読み出して演算器に出力し（図５・ステップＳ２０３）、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令の命令メモリ上のアドレスを示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し（図５・ステップＳ２０５）、ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路にループ状態フラグをセットし（図５・ステップＳ２０６）、ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え（図５・ステップＳ２０７）、ループ処理用分岐命令で分岐条件が成立する場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の最初のアドレスをプログラムカウンタ加算値切り替え回路がプログラムカウンタに対して出力する（図５・ステップＳ２０９〜２１０）。
【００７５】  ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行する命令メモリアドレス生成制御回路１１ａおよび命令デコーダ１３に実行させるようにしてもよい。また、本実施形態に係るＤＳＰ１そのものを、コンピュータによって仮想的に実現することもできる。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。  この動作により、本実施形態は以下のような効果を奏する。
【００７６】  ＤＳＰ１では非常に多くの回数のループ命令列の実行が繰り返されるが、この繰り返しの中で発生する分岐ペナルティを最初と最後の回の２回のみに抑制することができる。それでいて、追加すべきハードウェアは分岐相対アドレスのビット幅分のデータが保存できさえすればよいので、本発明のＤＳＰ１は、図１１に示した分岐アドレスの先頭と末尾を記憶するハードウェアループ回路とほぼ同等の処理を、レジスタの記憶容量をその半分以下に抑えて実現することが可能である。
【００７７】  さらに、ハードウェアループ回路ではループ命令列の繰り返し回数は前述のように固定となるが、本発明のＤＳＰ１では命令列の実行中の状態に応じた分岐条件を設定して、その実行のたびごとに異なる繰り返し回数とすることもできる。即ち、必要以上の繰り返し回数を実行せずに済むという意味でも、処理能力の低下を抑制することが可能である。
【００７８】  これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【００７９】  上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【００８０】（付記１）  処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサであって、  前記プログラム制御回路は、前記演算器で実行すべき命令を記述する命令コードを記憶する命令メモリと、前記命令メモリに記憶された前記命令コードを順次読み出して前記演算器に出力する命令デコーダと、前記命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路を備えると共に、  前記命令デコーダが、前記命令コードが同一の命令を順次繰り返すループ処理である場合に前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、  前記命令メモリアドレス生成回路が、  前記命令デコーダに対して前記命令メモリ上のアドレスを出力するプログラムカウンタと、  前記ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、  前記ループ処理が実行されている時に前記ループ状態保存回路に前記ループ状態フラグをセットする命令メモリアドレス生成制御回路と、  前記分岐相対アドレスを保存する分岐相対アドレス保存回路と、  前記ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、  前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを前記プログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路とを備えたことを特徴とするデジタル信号プロセッサ。
【００８１】（付記２）  前記命令デコーダが、前記ループ処理用分岐命令で分岐条件が成立した場合に、前記ループ状態保存回路の前記ループ状態フラグを解除するループ状態解除回路を備えたことを特徴とする、付記１に記載のデジタル信号プロセッサ。
【００８２】（付記３）  前記命令コード長カウント回路が、  前記ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタと、  前記ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器と、  前記ループ命令列カウントレジスタおよび前記分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すれば前記ループ処理の末尾のアドレスに到達した旨を示す信号を前記命令メモリアドレス生成制御回路に対して出力するコンパレータとを備えたことを特徴とする、付記１に記載のデジタル信号プロセッサ。
【００８３】（付記４）  分岐相対アドレス保存回路に保存される分岐相対アドレスの範囲が、前記命令メモリのアドレスバス幅以下に制限されていることを特徴とする、付記１に記載のデジタル信号プロセッサ。
【００８４】（付記５）  処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、  前記命令デコーダに対して前記命令メモリ上のアドレスをプログラムカウンタが出力し、  前記命令メモリの出力された前記アドレスに記憶された前記命令コードを命令デコーダが順次読み出して前記演算器に出力し、  前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、  前記ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路に前記ループ状態フラグをセットし、  前記ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、  前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路が前記プログラムカウンタに対して出力することを特徴とするプログラム制御方法。
【００８５】（付記６）  処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、  前記デジタル信号プロセッサを制御するコンピュータに、  前記命令デコーダに対して前記命令メモリ上のアドレスを出力する手順、  前記命令メモリの出力された前記アドレスに記憶された前記命令コードを順次読み出して前記演算器に出力する手順、  前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令の前記命令メモリ上のアドレスを示す分岐相対アドレスを出力する手順、  前記ループ処理が実行されている時に前記ループ状態フラグをセットする手順、  前記ループ処理１回分のコード長である命令コード長を数える手順、  および前記ループ処理用分岐命令で分岐条件が成立する場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを出力する手順を実行させることを特徴とする制御プログラム。
【００８６】  この出願は２０１１年１１月９日に出願された日本出願特願２０１１−２４５７６９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００８７】  本発明は、コンピュータプログラムを実行するプロセッサ全般に対して適用することが可能であるが、特にＤＳＰ、より具体的には携帯電話端末やＡＶ（オーディオ／ビデオ）機器などで用いられる信号処理ＬＳＩに搭載されるＤＳＰに適している。
【符号の説明】
【００８８】    １  ＤＳＰ    １０  プログラム制御回路    １１  命令メモリアドレス生成回路    １１ａ  命令メモリアドレス生成制御回路    １１ｂ  プログラムカウンタ用加算器    １１ｃ  プログラムカウンタ入力セレクタ    １１ｄ  プログラムカウンタ    １１ｅ  分岐相対アドレス保存回路    １１ｆ  命令コード長カウント回路    １１ｇ  プログラムカウンタ加算値切り替え回路    １１ｈ  ループ状態保存回路    １１ｉ  ループ命令列カウントレジスタ    １１ｊ  減算器    １１ｋ  セレクタ    １１ｌ  コンパレータ    １１ｍ  セレクタ    １１ｎ  ループ状態フラグ    １２  命令メモリ    １３  命令デコーダ    １３ａ  ループ処理用分岐命令切り替え回路    １３ｂ  ループ状態解除回路    ２０  演算器    ３０  レジスタ    ４０  データメモリ    １００  命令列    １００ａ〜ｐ  命令
【図１】
2013069551.tif 000003
【図２】
2013069551.tif 000004
【図３】
2013069551.tif 000005
【図４】
2013069551.tif 000006
【図５】
2013069551.tif 000007
【図６】
2013069551.tif 000008
【図７】
2013069551.tif 000009
【図８】
2013069551.tif 000010
【図９】
2013069551.tif 000011
【図１０】
2013069551.tif 000012
【図１１】
2013069551.tif 000013
【手続補正書】
【提出日】平成25年9月9日(2013.9.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサであって、
前記プログラム制御回路は、前記演算器で実行すべき命令を記述する命令コードを記憶する命令メモリと、前記命令メモリに記憶された前記命令コードを順次読み出して前記演算器に出力する命令デコーダと、前記命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路を備えると共に、
前記命令デコーダが、前記命令コードが同一の命令を順次繰り返すループ処理である場合に前記ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、
前記命令メモリアドレス生成回路が、
前記命令デコーダに対して前記命令メモリ上のアドレスを出力するプログラムカウンタと、
前記ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、
前記ループ処理が実行されている時に前記ループ状態保存回路に前記ループ状態フラグをセットする命令メモリアドレス生成制御回路と、
前記分岐相対アドレスを保存する分岐相対アドレス保存回路と、
前記ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを前記プログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路と
を備え、
かつ、前記命令デコーダが、前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、前記ループ状態保存回路の前記ループ状態フラグを解除するループ状態解除回路を備えたことを特徴とするデジタル信号プロセッサ。
【請求項２】
（削除）
【請求項３】
前記命令コード長カウント回路が、
前記ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタと、
前記ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器と、
前記ループ命令列カウントレジスタおよび前記分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すれば前記ループ処理の末尾のアドレスに到達した旨を示す信号を前記命令メモリアドレス生成制御回路に対して出力するコンパレータと
を備えたことを特徴とする、請求項１に記載のデジタル信号プロセッサ。
【請求項４】
分岐相対アドレス保存回路に保存される分岐相対アドレスの範囲が、前記命令メモリのアドレスバス幅以下に制限されていることを特徴とする、請求項１に記載のデジタル信号プロセッサ。
【請求項５】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、
前記命令デコーダに対して前記命令メモリ上のアドレスをプログラムカウンタが出力し、
前記命令メモリの出力された前記アドレスに記憶された前記命令コードを命令デコーダが順次読み出して前記演算器に出力し、
前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、
前記ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路に前記ループ状態フラグをセットし、
前記ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路が前記プログラムカウンタに対して出力し、
前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、前記命令デコーダのループ状態解除回路が前記ループ状態フラグを解除する
ことを特徴とするプログラム制御方法。
【請求項６】
処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、
前記デジタル信号プロセッサを制御するコンピュータに、
前記命令デコーダに対して前記命令メモリ上のアドレスを出力する手順、
前記命令メモリの出力された前記アドレスに記憶された前記命令コードを順次読み出して前記演算器に出力する手順、
前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力する手順、
前記ループ処理が実行されている時に前記ループ状態フラグをセットする手順、
前記ループ処理１回分のコード長である命令コード長を数える手順、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを出力する手順、
および前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に前記ループ状態フラグを解除する手順
を実行させることを特徴とする制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
にある。
課題を解決するための手段
［００２８］
上記目的を達成するため、本発明に係るデジタル信号プロセッサは、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサであって、プログラム制御回路は、演算器で実行すべき命令を記述する命令コードを記憶する命令メモリと、命令メモリに記憶された命令コードを順次読み出して演算器に出力する命令デコーダと、命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路を備えると共に、命令デコーダが、命令コードが同一の命令を順次繰り返すループ処理である場合にループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、命令メモリアドレス生成回路が、命令デコーダに対して命令メモリ上のアドレスを出力するプログラムカウンタと、ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、ループ処理が実行されている時にループ状態保存回路にループ状態フラグをセットする命令メモリアドレス生成制御回路と、分岐相対アドレスを保存する分岐相対アドレス保存回路と、ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、ループ状態フラグがセットされており、かつ、命令コード長カウント回路がループ処理の末尾のアドレスを検知した場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスをプログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路とを備え、かつ、命令デコーダが、ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、ループ状態保存回路のループ状態フラグを解除するループ状態解除回路を備えたことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
［００２９］
上記目的を達成するため、本発明に係るプログラム制御方法は、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、命令デコーダに対して命令メモリ上のアドレスをプログラムカウンタが出力し、命令メモリの出力されたアドレスに記憶された命令コードを命令デコーダが順次読み出して演算器に出力し、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路にループ状態フラグをセットし、ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、ループ状態フラグがセットされており、かつ、命令コード長カウント回路がループ処理の末尾のアドレスを検知した場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路がプログラムカウンタに対して出力し、ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、命令デコーダのループ状態解除回路がループ状態フラグを解除する
ことを特徴とする。
［００３０］
上記目的を達成するため、本発明に係る制御プログラムは、処理を行う対象となるデータを記憶するデータメモリと、データに対して演算を実行する演算器と、演算の結果を一時的に記憶するレジスタと、演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、デジタル信号プロセッサを制御するコンピュータに、命令デコーダに対して命令メモリ上のアドレスを出力する手順、命令メモリの出力されたアドレスに記憶された命令コードを順次読み出して演算器に出力する手順、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力する手順、ループ処理が実行されている時にループ状態フラグをセットする手順、ループ処理１回分のコード長である命令コード長を数える手順、ループ状態フラグがセットされており、かつ、命令コード長カウント回路がループ処理の末尾のアドレスを検知した場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の先頭のアドレスを出力する手順、およびループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合にループ状態フラグを解除する手順を実行させることを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
発明の効果
［００３１］
本発明は、上記したように分岐相対アドレスとループ処理１回分のコード長である命令コード長とを記憶し、ループ処理用分岐命令で分岐条件が成立する場合にこれらの分岐相対アドレスと命令コード長とを加算してループ処理の最初のアドレスを出力するように構成したので、ループ処理の先頭と末尾を記憶するハードウェアループの場合と比べて小さい回路規模で分岐ペナルティの発生を減少させることができる。
［００３２］
これによって、回路規模を小さくしつつ、ループ処理における分岐ペナルティの発生に伴う処理性能の低下を軽減することが可能であるという優れた特徴を持つデジタル信号プロセッサ、プログラム制御方法、および制御プログラムを提供することができる。
図面の簡単な説明
［００３３］
［図１］図２に示したプログラム制御回路の構成をより詳しく示す説明図である。
［図２］本発明の第１の実施形態に係るデジタル信号プロセッサ（ＤＳＰ）の構成について示す説明図である。
［図３］図１〜２に示したＤＳＰによる信号処理で行われる処理について示す説明図である。
［図４］図１〜２に示したＤＳＰで、図３に示した命令列を実行した場合の、各命令の実行順序について示す説明図である。
［図５］図１〜２に示したＤＳＰで、図３に示した命令列を実行する場合に行われる処理を表したフローチャートである。
［図６］図１〜２に示した命令メモリアドレス生成回路の構成を、さらに詳細に示す説明図である。
［図７］通常のＤＳＰの構成について示す説明図である。
［図８］図７に示したＤＳＰによる信号処理で行われる処理について示す説明図である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
［図９］図８に示した命令列に含まれる各々の命令のより詳しい構成について示す説明図である。
［図１０］図７に示したＤＳＰで、図９に示した分岐ペナルティが発生する場合の、命令列の実行順序について示す説明図である。
［図１１］図７で示したＤＳＰで、ハードウェアループによってループ処理を行う場合の命令メモリアドレス生成回路の構成を示す説明図である。
発明を実施するための形態
［００３４］
（実施形態）
以下、本発明の実施形態の構成について添付図１〜３に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るデジタル信号プロセッサ（ＤＳＰ）１は、処理を行う対象となるデータを記憶するデータメモリ４０と、データに対して演算を実行する演算器２０と、演算の結果を一時的に記憶するレジスタ３０と、演算器に対する動作命令を示す制御信号を生成するプログラム制御回路１０とを有するデジタル信号プロセッサである。このプログラム制御回路１０は、演算器で実行すべき命令を記述する命令コードを記憶する命令メモリ１２と、命令メモリに記憶された命令コードを順次読み出して演算器に出力する命令デコーダ１３と、命令メモリから読み出すべき命令を記憶している命令メモリアドレスを生成する命令メモリアドレス生成回路１１を備えると共に、命令デコーダ１３が、命令コードが同一の命令を順次繰り返すループ処理である場合にループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路１３ａを備え、命令メモリアドレス生成回路１１が、命令デコーダに対して命令メモリ上のアドレスを出力するプログラムカウンタ１１ｄと、ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路１１ｈと、ループ処理が実行されている時にル
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
ープ状態保存回路にループ状態フラグをセットする命令メモリアドレス生成制御回路１１ａと、分岐相対アドレスを保存する分岐相対アドレス保存回路１１ｅと、ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路１１ｆと、ループ状態フラグがセットされており、かつ、命令コード長カウント回路がループ処理の末尾のアドレスを検知した場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の最初のアドレスをプログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路１１ｇとを備え、命令デコーダ１３が、ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、ループ状態保存回路のループ状態フラグを解除するループ状態解除回路１３ｂを備えている。
［００３５］
そして、分岐相対アドレス保存回路１１ｅに保存される分岐相対アドレスの範囲が、命令メモリ１２のアドレスバス幅以下に制限されている。
［００３６］
そして、命令コード長カウント回路１１ｆが、ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタ１１ｉと、ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器１１ｊと、ループ命令列カウントレジスタおよび分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すればループ処理の最後のアドレスに到達した旨を示す信号を命令メモリアドレス生成制御回路に対して出力するコンパレータ１１ｌとを含む。
［００３７］
以上の構成を取ることにより、ＤＳＰ１は、回路規模を小さくしつつ、ループ処理における分岐ペナルティの発生に伴う処理性能の低下を軽減することが可能となる。
以下、これをより詳細に説明する。
［００３８］
図２は、本発明の第１の実施形態に係るデジタル信号プロセッサ（ＤＳＰ）１の構成について示す説明図である。ＤＳＰ１は、図７で示した通常のＤＳＰ８０１と同じく、命令メモリ（プログラムメモリ）とデータメモリとが分離された構造（ハーバードアーキテクチャ）となっており、プログラム制御回路１０、演算器２０、レジスタ３０、およびデータメモリ４０によって
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
４Ａに進む。ループモードであるか否かは、ループ状態保存回路１１ｈ中のループ状態フラグがセットされているか否かで判断する。
［００５７］
ステップＳ２０１で、処理がループモードである場合には、命令コード長カウント回路１１ｆが命令コード長をカウントして（ステップＳ２０２）、命令デコーダ１３がそのカウントされた結果から、ループ命令列のコード長と分岐相対アドレスの絶対値とが一致するか否かを判断する（ステップＳ２０３）。一致する場合はプログラムカウンタ加算値切り替え回路１１ｇと加算器１１ｂとが命令コード長と分岐相対アドレスとを加算してループ処理の先頭のアドレスを生成し（ステップＳ２０４Ａ）、一致しない場合はそのまま次に実行する命令のアドレスを生成して（ステップＳ２０４Ｂ）、いずれの場合も生成されたアドレスをプログラムカウンタ１１ｄに出力する。
［００５８］
すると、プログラムカウンタ１１ｄが、命令デコーダ１３に対して命令メモリ１２上のアドレスを出力し（ステップＳ２０５）、命令デコーダ１３は命令メモリ１２上の出力されたアドレスに記憶された命令コードを順次読み出して演算器に出力する（ステップＳ２０６）。
［００５９］
そして、ループ処理用分岐命令に到達したか否かを命令デコーダ１３が判断し（ステップＳ２０７）、到達していなければその命令コードの通りに演算器２０が演算処理を行って（ステップＳ２４０）ステップＳ２０１からの処理に戻る。ステップＳ２０７でループ処理用分岐命令に到達していれば、命令デコーダ１３はさらに処理がループモードであるか否かを再び判断して（ステップＳ２０８）、ループモードであれば命令デコーダ１３はさらにループ処理用分岐命令であるか否かを再び判断する（ステップＳ２０９）。
［００６０］
ステップＳ２０９で、ループ処理用分岐命令でなければ、命令デコーダ１３のループ状態解除回路１３ｂがループ状態保存回路１１ｈに対してループ状態解除信号を発してループ状態フラグを解除し（ステップＳ２１０）、そして分岐先アドレスを生成する処理を行って（ステップＳ２１１）ステップＳ２０５に処理が戻る。
［００６１］
ステップＳ２０９で、ループ処理用分岐命令であれば、命令デコーダ１３
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
作命令を示す制御信号を生成するプログラム制御回路１０とを有するデジタル信号プロセッサ（ＤＳＰ１）にあって、命令デコーダに対して命令メモリ上のアドレスをプログラムカウンタが出力し（図５・ステップＳ２０２）、命令メモリの出力されたアドレスに記憶された命令コードを命令デコーダが順次読み出して演算器に出力し（図５・ステップＳ２０３）、命令コードが同一の命令を順次繰り返すループ処理である場合に、ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し（図５・ステップＳ２０５）、ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路にループ状態フラグをセットし（図５・ステップＳ２０６）、ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え（図５・ステップＳ２０７）、ループ状態フラグがセットされており、かつ、命令コード長カウント回路がループ処理の末尾のアドレスを検知した場合に命令コード長と分岐相対アドレスとを加算して算出したループ処理の最初のアドレスをプログラムカウンタ加算値切り替え回路がプログラムカウンタに対して出力し、ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、命令デコーダのループ状態解除回路がループ状態フラグを解除する（図５・ステップＳ２０９〜２１０）。
［００７５］
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行する命令メモリアドレス生成制御回路１１ａおよび命令デコーダ１３に実行させるようにしてもよい。また、本実施形態に係るＤＳＰ１そのものを、コンピュータによって仮想的に実現することもできる。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
［００７６］
ＤＳＰ１では非常に多くの回数のループ命令列の実行が繰り返されるが、この繰り返しの中で発生する分岐ペナルティを最初と最後の回の２回のみに抑制することができる。それでいて、追加すべきハードウェアは分岐相対ア
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
アドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力するループ処理用分岐命令切り替え回路を備え、
前記命令メモリアドレス生成回路が、
前記命令デコーダに対して前記命令メモリ上のアドレスを出力するプログラムカウンタと、
前記ループ処理が実行されていることを示すループ状態フラグを保存するループ状態保存回路と、
前記ループ処理が実行されている時に前記ループ状態保存回路に前記ループ状態フラグをセットする命令メモリアドレス生成制御回路と、
前記分岐相対アドレスを保存する分岐相対アドレス保存回路と、
前記ループ処理１回分のコード長である命令コード長を数える命令コード長カウント回路と、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを前記プログラムカウンタに対して出力するプログラムカウンタ加算値切り替え回路と
を備え、
かつ、前記命令デコーダが、前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、前記ループ状態保存回路の前記ループ状態フラグを解除するループ状態解除回路を備えたことを特徴とするデジタル信号プロセッサ。
［００８１］
［００８２］
（付記３）  前記命令コード長カウント回路が、
前記ループ状態フラグがセットされている期間の数値を記憶するループ命令列カウントレジスタと、
前記ループ命令列カウントレジスタに記憶されている数値を１ずつ減算する減算器と、
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
前記ループ命令列カウントレジスタおよび前記分岐相対アドレス保存回路に記憶されている数値の絶対値を比較し、両者が一致すれば前記ループ処理の末尾のアドレスに到達した旨を示す信号を前記命令メモリアドレス生成制御回路に対して出力するコンパレータと
を備えたことを特徴とする、付記１に記載のデジタル信号プロセッサ。
［００８３］
（付記４）  分岐相対アドレス保存回路に保存される分岐相対アドレスの範囲が、前記命令メモリのアドレスバス幅以下に制限されていることを特徴とする、付記１に記載のデジタル信号プロセッサ。
［００８４］
（付記５）処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、
前記命令デコーダに対して前記命令メモリ上のアドレスをプログラムカウンタが出力し、
前記命令メモリの出力された前記アドレスに記憶された前記命令コードを命令デコーダが順次読み出して前記演算器に出力し、
前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスをループ処理用分岐命令切り替え回路が分岐相対アドレス保存回路に対して出力し、
前記ループ処理が実行されている時に命令メモリアドレス生成制御回路がループ状態保存回路に前記ループ状態フラグをセットし、
前記ループ処理１回分のコード長である命令コード長を命令コード長カウント回路が数え、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスをプログラムカウンタ加算値切り替え回路が前記プログラムカウンタに対して出力し、
前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に、前記命令デコーダのループ状態解除回路が前記ループ状態フラグを解除する
ことを特徴とするプログラム制御方法。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
［００８５］
（付記６）  処理を行う対象となるデータを記憶するデータメモリと、前記データに対して演算を実行する演算器と、前記演算の結果を一時的に記憶するレジスタと、前記演算器で実行すべき命令を記述する命令コードを予め記憶した命令メモリと、前記演算器に対する動作命令を示す制御信号を生成するプログラム制御回路とを有するデジタル信号プロセッサにあって、
前記デジタル信号プロセッサを制御するコンピュータに、
前記命令デコーダに対して前記命令メモリ上のアドレスを出力する手順、
前記命令メモリの出力された前記アドレスに記憶された前記命令コードを順次読み出して前記演算器に出力する手順、
前記命令コードが同一の命令を順次繰り返すループ処理である場合に、前記ループ処理の分岐条件を示すループ処理用分岐命令のアドレスと分岐先アドレスとの間の相対位置を示す分岐相対アドレスを出力する手順、
前記ループ処理が実行されている時に前記ループ状態フラグをセットする手順、
前記ループ処理１回分のコード長である命令コード長を数える手順、
前記ループ状態フラグがセットされており、かつ、前記命令コード長カウント回路が前記ループ処理の末尾のアドレスを検知した場合に前記命令コード長と前記分岐相対アドレスとを加算して算出した前記ループ処理の先頭のアドレスを出力する手順、
および前記ループ処理用分岐命令で分岐条件が成立しなかった場合、もしくはその他の分岐命令で分岐条件が成立した場合に前記ループ状態フラグを解除する手順
を実行させることを特徴とする制御プログラム。
［００８６］
この出願は２０１１年１１月９日に出願された日本出願特願２０１１−２４５７６９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
産業上の利用可能性
［００８７］
本発明は、コンピュータプログラムを実行するプロセッサ全般に対して適用することが可能であるが、特にＤＳＰ、より具体的には携帯電話端末やＡＶ（オーディオ／ビデオ）機器などで用いられる信号処理ＬＳＩに搭載されるＤＳＰに適している。
符号の説明
【国際調査報告】
2013069551.tif 000014
2013069551.tif 000015
2013069551.tif 000016
2013069551.tif 000017