(57)【要約】【課題】多重化可能なサブルーチンコール処理と、メモリアクセスに要する電力を削減する低電力ループ処理の両機能を、回路規模の増加を抑えて実現する。【解決手段】命令アドレスＩＰを生成するアドレス生成部１０と、命令アドレスに基づいて命令コードＭＩを読み出す命令記憶部２０と、命令コードをデコードして命令を実行する命令デコード部３０と、デコード結果がサブルーチンコール命令の場合はリターンアドレスを退避し、デコード結果がサブルーチンからのリターン命令の場合はリターンアドレスを復帰し、デコード結果が低電力ループ命令の場合は命令記憶部２０からの命令群の書き込みおよび読み出しを行うアドレス・命令格納部４０とを備える。多重サブルーチンコール命令用の回路と低電力用ループの回路とを共有化し、低電力ループ命令専用の命令バッファを不要とし、回路規模の増加を抑える。【選択図】  図１
2004178058.tif 000002
【特許請求の範囲】
【請求項１】
サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を有するプログラム制御装置であって、
命令アドレスを生成するアドレス生成手段と、
前記アドレス生成手段からの命令アドレスに基づいて命令コードを読み出す命令記憶手段と、
前記命令記憶手段からの命令コードをデコードして命令を実行する命令デコード手段と、
前記命令デコード手段によるデコード結果がサブルーチンコール命令の場合はリターンアドレスを退避し、前記デコード結果がサブルーチンからのリターン命令の場合は前記リターンアドレスを復帰し、前記デコード結果が低電力ループ命令の場合は前記命令記憶手段からの命令群の書き込みおよび読み出しを行うアドレス・命令格納手段とを備えたことを特徴とするプログラム制御装置。
【請求項２】
さらに、前記アドレス・命令格納手段の内容を退避および復帰するデータ記憶手段を備えたことを特徴とする請求項１に記載のプログラム制御装置。
【請求項３】
サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を実現するプログラム制御方法であって、
サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、低電力ループ命令であるかを判断するステップと、
前記判断結果がサブルーチンコール命令の場合に、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐するステップと、
前記判断結果がサブルーチンからのリターン命令の場合に、前記リターンアドレスを前記アドレス・命令格納手段から復帰し、サブルーチンからリターンするステップと、
前記判断結果が低電力ループ命令の場合に、前記命令記憶手段からの命令群を実行するとともに前記アドレス・命令格納手段に書き込むステップと、
前記アドレス・命令格納手段から前記命令群を読み出し、前記ループ処理を実行するステップとを含むことを特徴とするプログラム制御方法。
【請求項４】
さらに、前記アドレス・命令格納手段の内容の退避であるか、前記アドレス・命令格納手段の内容の復帰であるかを判断するステップと、
前記判断結果が前記アドレス・命令格納手段の内容の退避の場合に、前記アドレス・命令格納手段の内容をデータ記憶手段に退避するステップと、
前記判断結果が前記アドレス・命令格納手段の内容の復帰の場合に、前記データ記憶手段から前記アドレス・命令格納手段の内容を復帰するステップとを含むことを特徴とする請求項３に記載のプログラム制御方法。
【請求項５】
サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を実現するプログラム制御方法であって、
サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、ループ処理の命令群の書き込み命令であるか、低電力ループ命令であるかを判断するステップと、
前記判断結果がサブルーチンコール命令の場合に、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐するステップと、
前記判断結果がサブルーチンからのリターン命令の場合に、前記リターンアドレスを前記アドレス・命令格納手段から復帰し、サブルーチンからリターンするステップと、
前記判断結果が前記ループ処理の命令群の書き込み命令の場合に、前記命令群を前記アドレス・命令格納手段に書き込むステップと、
前記判断結果が前記低電力ループの場合に、前記アドレス・命令格納手段から前記命令群を読み出し、前記ループ処理を実行するステップとを含むことを特徴とするプログラム制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置において、サブルーチンコール処理、および、ループ処理の繰り返し時に命令記憶手段からの命令群の読み出しを必要としない低電力ループ処理を実現するプログラム制御方法およびプログラム制御装置に関する。
【０００２】
【従来の技術】
パイプライン処理を行うマイクロプロセッサに関して、ループ処理を効率良く実行するために、専用のハードウェアを設け、オーバーヘッドなしにループ処理を行う方法がある（例えば、特許文献１参照）。この方法では、専用ハードウェアとして、ループスタートアドレス、ループエンドアドレスとループ回数を保持する専用のレジスタと、ループの多重化を可能にするために、これらのレジスタ値を退避させるスタックとを設ける。これにより、オーバーヘッドのないループ処理とループの多重化を可能にしている。しかし、この方法ではループ対象となる命令を毎回メモリから読み出す必要がある。
【０００３】
そこで、命令を毎回メモリから読み出すことを不要化し、メモリアクセスに要する電力を削減するための方法が提案されている（例えば、特許文献２参照）。この方法では、ループ処理の対象命令を格納するための専用バッファを設け、ループの初回はメモリから命令を読み出し、読み出した命令を専用バッファに格納する。ループの２回目以降は専用バッファから命令を読み出す。
【０００４】
【特許文献１】
特開平８−６３３５５号公報（第５−７頁、図２−３）
【特許文献２】
国際公開ＷＯ９８／３６３５１号公報（第１１−１７頁、図１−３）
【０００５】
【発明が解決しようとする課題】
しかしながら、特許文献２の方法では、ループ処理の対象命令を格納するための専用バッファが必要となり、回路規模が増大するという問題を有していた。
【０００６】
本発明は、このような事情に鑑みて創作されたものであり、その目的は、多重化可能なサブルーチンコール処理（多重サブルーチンコール）とメモリアクセスに要する電力を削減するループ処理（低電力ループ）の両機能を実現するとともに、回路規模の増加を最小限に抑えることができるプログラム制御方法およびプログラム制御装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明のプログラム制御装置は、サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を有するプログラム制御装置であって、命令アドレスを生成するアドレス生成手段と、前記アドレス生成手段からの命令アドレスに基づいて命令コードを読み出す命令記憶手段と、前記命令記憶手段からの命令コードをデコードして命令を実行する命令デコード手段と、前記命令デコード手段によるデコード結果がサブルーチンコール命令の場合はリターンアドレスを退避し、前記デコード結果がサブルーチンからのリターン命令の場合は前記リターンアドレスを復帰し、前記デコード結果が低電力ループ命令の場合は前記命令記憶手段からの命令群の書き込みおよび読み出しを行うアドレス・命令格納手段とを備えたものである。
【０００８】
そして、本発明のプログラム制御方法は、サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を実現するプログラム制御方法であって、サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、低電力ループ命令であるかを判断するステップと、前記判断結果がサブルーチンコール命令の場合に、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐するステップと、前記判断結果がサブルーチンからのリターン命令の場合に、前記リターンアドレスを前記アドレス・命令格納手段から復帰し、サブルーチンからリターンするステップと、前記判断結果が低電力ループ命令の場合に、前記命令記憶手段からの命令群を実行するとともに前記アドレス・命令格納手段に書き込むステップと、前記アドレス・命令格納手段から前記命令群を読み出し、前記ループ処理を実行するステップとを含むものである。
【０００９】
上記構成によって、アドレス生成手段が生成する命令アドレスにより命令記憶手段から命令コードを読み出し実行する命令デコード手段によって、サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、低電力ループ命令であるかを判断し、判断結果がサブルーチンコール命令の場合に、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐する。また、判断結果がサブルーチンからのリターン命令の場合に、リターンアドレスをアドレス・命令格納手段から復帰し、サブルーチンからリターンする。また、判断結果が低電力ループ命令の場合に、命令群を実行するとともにアドレス・命令格納手段に書き込み、アドレス・命令格納手段から命令群を読み出し、ループ処理を実行するように制御する。
【００１０】
以上により、アドレス・命令格納手段において、多重サブルーチンコールのリターンアドレスの退避用スタックと、低電力ループの命令格納用バッファとを共有化しており、従来技術に比べて、命令格納用の専用バッファが不要となり、回路規模の増加を最小限に抑えることができる。
【００１１】
上記のプログラム制御装置において好ましい態様は、さらに、前記アドレス・命令格納手段の内容を退避および復帰するデータ記憶手段を備えることである。
【００１２】
そして、この場合のプログラム制御方法は、上記のプログラム制御方法において、さらに、前記アドレス・命令格納手段の内容の退避であるか、前記アドレス・命令格納手段の内容の復帰であるかを判断するステップと、前記判断結果が前記アドレス・命令格納手段の内容の退避の場合に、前記アドレス・命令格納手段の内容をデータ記憶手段に退避するステップと、前記判断結果が前記アドレス・命令格納手段の内容の復帰の場合に、前記データ記憶手段から前記アドレス・命令格納手段の内容を復帰するステップとを含むものである。
【００１３】
これによれば、多重サブルーチンコール命令内で低電力ループ命令の実行が可能となる。
【００１４】
別の解決手段として、本発明は、次のような手段を講じる。すなわち、サブルーチンコール機能およびループ処理繰り返し時の低電力ループ機能を実現するプログラム制御方法であって、サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、ループ処理の命令群の書き込み命令であるか、低電力ループ命令であるかを判断するステップと、前記判断結果がサブルーチンコール命令の場合に、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐するステップと、前記判断結果がサブルーチンからのリターン命令の場合に、前記リターンアドレスを前記アドレス・命令格納手段から復帰し、サブルーチンからリターンするステップと、前記判断結果が前記ループ処理の命令群の書き込み命令の場合に、前記命令群を前記アドレス・命令格納手段に書き込むステップと、前記判断結果が前記低電力ループの場合に、前記アドレス・命令格納手段から前記命令群を読み出し、前記ループ処理を実行するステップとを含むものである。
【００１５】
上記構成によって、アドレス生成手段が生成する命令アドレスにより命令記憶手段から命令を読み出し実行し、命令デコード手段で、サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、ループ処理の命令群の書き込み命令であるか、低電力ループ命令であるかを判断し、判断結果がサブルーチンコール命令の場合、リターンアドレスをアドレス・命令格納手段に退避し、サブルーチンへ分岐する。判断結果がサブルーチンからのリターン命令の場合、リターンアドレスをアドレス・命令格納手段から復帰し、サブルーチンからリターンする。判断結果がループ処理の命令群の書き込み命令の場合、命令群をアドレス・命令格納手段に書き込む。判断結果が低電力ループ命令の場合、アドレス・命令格納手段から命令群を読み出し、ループ処理を実行するように制御することになる。
【００１６】
これによれば、多重サブルーチンコール用のスタックにあらかじめループ処理の命令群を書き込むことで、命令群の命令格納手段からの読み出し回数を低減することができる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態におけるプログラム制御装置およびプログラム制御方法について、図面を参照しながら説明する。
【００１８】
図１は本発明の実施の形態におけるプログラム制御装置の構成を示すブロック図である。図１において、１０はアドレス生成部、２０は命令記憶部、３０は命令デコード部（命令実行制御部）、４０はアドレス・命令格納部、５０はデータ記憶部、６０はデータ転送バスである。アドレス・命令格納部４０において、４１はスタックアドレス部、４２はループ制御カウンタ部、４３はスタック部である。
【００１９】
アドレス生成部１０は、入力した命令アドレス制御信号ＩＡまたはスタック出力信号ＳＴＫに基づいて命令アドレスＩＰを生成し、生成した命令アドレスＩＰを命令記憶部２０とアドレス・命令格納部４０におけるスタック部４３に出力する。命令記憶部２０は、アドレス生成部１０から命令アドレスＩＰを入力し、その命令アドレスＩＰに従って命令コードＭＩを読み出し、生成した命令コードＭＩを命令デコード部３０とアドレス・命令格納部４０におけるスタック部４３に出力する。
【００２０】
命令デコード部３０は、命令記憶部２０から入力した命令コードＭＩをデコードし、そのデコード結果によって、命令がサブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、あるいは、低電力ループ命令であるかを判断し、そのデコード結果に従った処理を実行するとともに、その判断の結果に応じた内容のスタック制御信号ＳＴＣを生成し、アドレス・命令格納部４０におけるスタックアドレス部４１、ループ制御カウンタ部４２およびスタック部４３に出力する。命令デコード部３０は、また、アドレス・命令格納部４０におけるスタックアドレス部４１から入力したスタックアドレス信号ＳＴＡに基づいて命令アドレス制御信号ＩＡを生成し、アドレス生成部１０に出力する。また、アドレス・命令格納部４０におけるループ制御カウンタ部４２から入力したループ制御カウンタ信号ＬＣに基づいて命令アドレス制御信号ＩＡおよびスタック制御信号ＳＴＣを生成する。また、アドレス・命令格納部４０におけるスタック部４３から入力したスタック出力信号ＳＴＫに基づいて命令アドレス制御信号ＩＡを生成する。
【００２１】
アドレス・命令格納部４０におけるスタックアドレス部４１は、命令デコード部３０から入力したスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰの増減の調整を行う。すなわち、スタック制御信号ＳＴＣがサブルーチンコール命令を示しているときはスタックアドレスＳＰのデクリメントを行い（ＳＰ＝ＳＰ−１）、スタック制御信号ＳＴＣがサブルーチンからのリターン命令を示しているときはスタックアドレスＳＰのインクリメントを行う（ＳＰ＝ＳＰ＋１）。また、スタック制御信号ＳＴＣが低電力ループ命令を示しているときはスタックアドレスＳＰにループ命令数（ｌｉｎ）の設定を行う（ＳＰ＝ｌｉｎ）。次いで順次デクリメントしてスタックアドレスＳＰがゼロになったときにスタックアドレス信号ＳＴＡを生成して命令デコード部３０に出力する。
【００２２】
ループ制御カウンタ部４２は、ループ制御カウンタＬＣＣを内蔵しており、命令デコード部３０から入力したスタック制御信号ＳＴＣが低電力ループ命令を示しているときはループ制御カウンタＬＣＣにループ回数（ｌｃｃ）の設定を行う（ＬＣＣ＝ｌｃｃ）。次いで順次デクリメントしてループ制御カウンタＬＣＣがゼロになったときにループ制御カウンタ信号ＬＣを生成して命令デコード部３０に出力する。
【００２３】
スタック部４３は、スタック制御信号ＳＴＣに基づいて、スタックアドレスＳＰにリターンアドレスを退避したり、命令コードＭＩを退避したりする。また、スタック制御信号ＳＴＣに基づいてスタック出力信号ＳＴＫを命令デコード部３０やアドレス生成部１０に出力する。
【００２４】
スタックアドレス部４１、ループ制御カウンタ部４２およびスタック部４３は、それぞれ、データ転送バス６０を介してデータ記憶部５０との間でデータの入出力を行う。
【００２５】
データ記憶部５０は、多重サブルーチンコール命令内で低電力ループ命令が発生したときに、アドレス・命令格納部４０の内容を退避したり、逆に、復帰させたりする。
【００２６】
以下、上記構成のプログラム制御装置の動作を説明する。
【００２７】
図２は上記構成のプログラム制御装置の基本的動作を示すフローチャートである。ステップＳ０１において、アドレス生成部１０が命令アドレスＩＰを生成し、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出す。次いでステップＳ０２において、命令デコード部３０が命令コードＭＩをデコードする。次いで、ステップＳ０３において、デコード結果の判別を行う。判別結果がサブルーチンコール命令の場合はステップＳ１０１のサブルーチンコール処理に進み、判別結果がサブルーチンからのリターン命令の場合はステップＳ１１１のサブルーチンからのリターン処理に進み、判別結果が低電力ループ命令の場合はステップＳ１２１の低電力ループ処理に進み、判別結果が書き込みを伴わない低電力ループ命令の場合はステップＳ１３１の書き込みを伴わない低電力ループ処理に進む。
【００２８】
図３はサブルーチンコール処理の動作を示すフローチャート、図４はサブルーチンからのリターン処理の動作を示すフローチャート、図５はサブルーチンコール命令およびサブルーチンからのリターン命令のプログラム例である。
【００２９】
以下、まず、図３に基づいてサブルーチンコール処理の動作を説明する。
【００３０】
ステップＳ１０１において、アドレス生成部１０が命令アドレスＩＰを生成し、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出す。命令デコード部３０が命令コードＭＩをデコードし、デコード結果がサブルーチンコール命令であるので、ステップＳ１０２へ進む。
【００３１】
次にステップＳ１０２において、アドレス・命令格納部４０におけるスタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰをデクリメントし（ＳＰ＝ＳＰ−１）、スタック部４３がアドレス生成部１０からの次の命令アドレスＩＰ＋１をリターンアドレスとして退避する（ＳＴＫ（ＳＰ）＝ＩＰ＋１）。
【００３２】
次にステップＳ１０３において、命令デコード部３０が命令アドレス制御信号ＩＡにより分岐先アドレス（ＩＰ＿ＳＵＢ）をアドレス生成部１０に設定し、これに基づいて、アドレス生成部１０が命令アドレスＩＰを生成し（ＩＰ＝ＩＰ＿ＳＵＢ）、サブルーチンへ分岐する。
【００３３】
次にステップＳ１０４において、サブルーチンコール処理を終了する。
【００３４】
以下、図４に基づいて、サブルーチンからのリターン処理の動作を説明する。
【００３５】
ステップＳ１１１において、アドレス生成部１０が命令アドレスＩＰを生成し、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出す。命令デコード部３０が命令コードＭＩをデコードし、デコード結果がサブルーチンからのリターン命令であるので、ステップＳ１１２へ進む。
【００３６】
次にステップＳ１１２において、スタック部４３がスタック制御信号ＳＴＣに基づいてリターンアドレスをスタック出力信号ＳＴＫとして命令デコード部３０およびアドレス生成部１０に送出する。アドレス生成部１０が命令アドレスＩＰを生成し（ＩＰ＝ＳＴＫ（ＳＰ））、サブルーチンからリターンする。スタックアドレス部４１がスタックアドレスＳＰをインクリメントし（ＳＰ＝ＳＰ＋１）、元のスタックアドレスＳＰの値に戻す。
【００３７】
次にステップＳ１１３において、サブルーチンからのリターン処理を終了する。
【００３８】
なお、サブルーチンコール命令が連続した場合は、スタックアドレスＳＰに従ってスタック部４３にリターンアドレスが順次退避され、またサブルーチンからのリターン命令が連続した場合は、スタックアドレスＳＰに従ってスタック部４３からリターンアドレスが順次復帰される。これにより、スタック部４３の段数に応じたサブルーチンコール命令の多重化が可能である。
【００３９】
以下、図６に基づいて低電力ループ処理の動作を説明する。図７は低電力ループ命令のプログラム例である。
【００４０】
ステップＳ１２１において、アドレス生成部１０が命令アドレスＩＰを生成し、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出す。命令デコード部３０が命令コードＭＩをデコードし、デコード結果が低電力ループ命令であるので、ステップＳ１２２へ進む。
【００４１】
次にステップＳ１２２において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰにループ命令数（ｌｉｎ）を設定し（ＳＰ＝ｌｉｎ）、ループ制御カウンタ部４２がループ制御カウンタＬＣＣにループ回数（ｌｃｃ）を設定する（ＬＣＣ＝ｌｃｃ）。
【００４２】
次にステップＳ１２３において、アドレス生成部１０が命令アドレス制御信号ＩＡにより命令アドレスＩＰをインクリメントし（ＩＰ＝ＩＰ＋１）、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出し、命令デコード部３０が命令レジスタＩＲに命令コードＭＩを設定する（ＩＲ＝ＭＩ（ＩＰ））。
また、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰをデクリメントし（ＳＰ＝ＳＰ−１）、スタック部４３が命令コードＭＩを書き込む（ＳＴＫ（ＳＰ）＝ＭＩ（ＩＰ））。
【００４３】
次にステップＳ１２４において、スタックアドレス部４１がスタックアドレスＳＰがゼロであるか判断する（ＳＰ＝＝０）。これは、一群の命令コードＭＩの書き込みが完了したか否かをみている。
【００４４】
スタックアドレスＳＰがゼロでない場合はステップＳ１２３へ戻り、スタックアドレスＳＰがゼロの場合はスタックアドレス信号ＳＴＡを生成し、ステップＳ１２５へ進む。
【００４５】
ステップＳ１２５において、ループ制御カウンタ部４２によりループ制御カウンタＬＣＣがゼロであるか判断する（ＬＣＣ＝＝０）。これは、所定の回数（ｌｃｃ）にわたるループ処理が完了したか否かをみている。
【００４６】
ループ制御カウンタＬＣＣがゼロでない場合はステップＳ１２６へ進み、ループ制御カウンタＬＣＣがゼロの場合はループ制御カウンタ信号ＬＣを生成し、ステップＳ１２９へ進む。
【００４７】
ステップＳ１２６において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰにループ命令数（ｌｉｎ）を設定し（ＳＰ＝ｌｉｎ）、ループ制御カウンタ部４２がループ制御カウンタＬＣＣをデクリメントする（ＬＣＣ＝ＬＣＣ−１）。
【００４８】
次にステップＳ１２７において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰをデクリメントし（ＳＰ＝ＳＰ−１）、スタック部４３がスタックアドレスＳＰに従ってスタック出力信号ＳＴＫを生成し、命令デコード部３０はスタック出力信号ＳＴＫを命令レジスタＩＲに設定する（ＩＲ＝ＳＴＫ（ＳＰ））。以上は、命令を１つずつ読み出しは実行している様子である。
【００４９】
次にステップＳ１２８において、スタックアドレス部４１によりスタックアドレスＳＰがゼロであるか判断する（ＳＰ＝＝０）。これは、ループ処理における一群の命令の読み出しが完了したか否かをみている。
【００５０】
スタックアドレスＳＰがゼロでない場合はステップＳ１２７へ戻り、スタックアドレスＳＰがゼロの場合はスタックアドレス信号ＳＴＡを生成し、ステップＳ１２５へ戻る。
【００５１】
次にステップＳ１２９において、低電力ループ処理を終了する。
【００５２】
次に、書き込みを伴わない低電力ループ処理の動作を説明する。図８は書き込みを伴わない低電力ループ処理の動作を示すフローチャート、図９は書き込みを伴わない低電力ループ命令のプログラム例である。
【００５３】
ステップＳ１３１において、アドレス生成部１０が命令アドレスＩＰを生成し、命令記憶部２０が命令アドレスＩＰに従って命令コードＭＩを読み出す。命令デコード部３０が命令コードＭＩをデコードし、デコード結果が低電力ループ命令であるので、ステップＳ１３２へ進む。
【００５４】
次にステップＳ１３２において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰにループ命令数（ｌｉｎ）を設定し（ＳＰ＝ｌｉｎ）、ループ制御カウンタ部４２がループ制御カウンタＬＣＣにループ回数（ｌｃｃ）を設定する（ＬＣＣ＝ｌｃｃ）。
【００５５】
次にステップＳ１３３において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰをデクリメントし（ＳＰ＝ＳＰ−１）、スタック部４３がスタックアドレスＳＰに従ってスタック出力信号ＳＴＫを生成し、命令デコード部３０はスタック出力信号ＳＴＫを命令レジスタＩＲに設定する（ＩＲ＝ＳＴＫ（ＳＰ））。ここでは、図６の場合のスタック部４３への命令コードＭＩの書き込みは行われない。
【００５６】
次にステップＳ１３４において、スタックアドレス部４１によりスタックアドレスＳＰがゼロであるか判断する（ＳＰ＝＝０）。
【００５７】
スタックアドレスＳＰがゼロでない場合はステップＳ１３３へ戻り、スタックアドレスＳＰがゼロの場合はスタックアドレス信号ＳＴＡを生成し、ステップＳ１３５へ進む。
【００５８】
次にステップＳ１３５において、ループ制御カウンタ部４２によりループ制御カウンタＬＣＣがゼロであるか判断する（ＬＣＣ＝＝０）。
【００５９】
ループ制御カウンタＬＣＣがゼロでない場合はステップＳ１３６へ進み、ループ制御カウンタＬＣＣがゼロの場合はループ制御カウンタ信号ＬＣを生成し、ステップＳ１３７へ進む。
【００６０】
ステップＳ１３６において、スタックアドレス部４１がスタック制御信号ＳＴＣに基づいてスタックアドレスＳＰにループ命令数（ｌｉｎ）を設定し（ＳＰ＝ｌｉｎ）、ループ制御カウンタ部４２がループ制御カウンタＬＣＣをデクリメントする（ＬＣＣ＝ＬＣＣ−１）。
【００６１】
ステップＳ１３７において、書き込みを伴わない低電力ループ処理を終了する。
【００６２】
以上のように本実施の形態によれば、アドレス生成部１０と命令記憶部２０と命令デコード部３０とアドレス・命令格納部４０とを備え、アドレス生成部１０が出力する命令アドレスＩＰにより命令記憶部２０から命令コードＭＩを読み出して実行し、命令デコード部３０で、サブルーチンコール命令であるか、サブルーチンからのリターン命令であるか、低電力ループ命令であるかを判断し、判断結果がサブルーチンコール命令の場合、リターンアドレスをアドレス生成部１０からアドレス・命令格納部４０に退避し、サブルーチンへ分岐し、判断結果がサブルーチンからのリターン命令の場合、リターンアドレスをアドレス・命令格納部４０からアドレス生成部１０に復帰し、サブルーチンからリターンする。判断結果が低電力ループ命令の場合、命令記憶部２０から出力する命令群を実行するとともに、命令コードＭＩをアドレス・命令格納部４０に書き込み、アドレス・命令格納部４０から命令群を読み出し、ループ処理を実行するように制御する。
これにより、多重サブルーチンコール命令用のスタック回路と低電力ループ命令用の命令バッファ回路を共有化できる。
【００６３】
また、判断結果が書き込みを伴わない低電力ループ命令の場合、アドレス・命令格納部４０から命令群を読み出し、ループ処理を実行するように制御することで、アドレス・命令格納部４０に一度書き込んだデータを繰り返し使用することにより、命令記憶部２０へのアクセスを低減し、低消費電力化できる。
【００６４】
さらに、データ記憶部５０を備え、命令デコード部３０で、アドレス・命令格納部４０の内容の退避であるか、アドレス・命令格納部４０の内容の復帰であるかを判断し、判断結果がアドレス・命令格納部４０の内容の退避の場合、アドレス・命令格納部４０の内容をデータ転送バス６０を通じデータ記憶部５０に退避する。判断結果がアドレス・命令格納部４０の内容の復帰の場合、アドレス・命令格納部４０の内容をデータ転送バス６０を通じデータ記憶部５０から復帰するように制御することで、多重サブルーチンコール命令内で低電力ループ命令の実行が可能となる。
【００６５】
【発明の効果】
本発明によれば、多重サブルーチンコール命令用のスタックを低電力ループ命令用の命令バッファとして使用することで、命令格納用の専用バッファが不要となる効果がある。
【００６６】
さらに、多重サブルーチンコール命令用のスタックからリターンアドレスを退避することで、多重サブルーチンコール命令内で低電力ループ命令の実行が可能となる。
【００６７】
さらに、多重サブルーチンコール命令用のスタックにあらかじめループ処理の命令群を書き込むことで、命令群の命令記憶手段からの読み出し回数を低減できる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるプログラム制御装置の構成を示すブロック図
【図２】本発明の実施の形態におけるプログラム制御装置の基本的動作を示すフローチャート
【図３】本発明の実施の形態におけるプログラム制御方法のサブルーチンコール処理の動作を示すフローチャート
【図４】本発明の実施の形態におけるプログラム制御方法のサブルーチンからのリターン処理の動作を示すフローチャート
【図５】本発明の実施の形態におけるプログラム制御方法のブルーチンコール命令およびサブルーチンからのリターン命令のプログラム例
【図６】本発明の実施の形態におけるプログラム制御方法の低電力ループ処理の動作を示すフローチャート
【図７】本発明の実施の形態におけるプログラム制御方法の低電力ループ命令のプログラム例
【図８】本発明の実施の形態におけるプログラム制御方法の書き込みを伴わない低電力ループ処理の動作を示すフローチャート
【図９】本発明の実施の形態におけるプログラム制御方法の書き込みを伴わない低電力ループ命令のプログラム例
【符号の説明】
１０  アドレス生成部（命令アドレス部）
２０  命令記憶部
３０  命令デコード部（命令実行制御部）
４０  アドレス・命令格納部
４１  スタックアドレス部
４２  ループ制御カウンタ部
４３  スタック部
５０  データ記憶部
６０  データ転送バス
ＩＰ  命令アドレス
ＭＩ  命令コード
ＩＡ  命令アドレス制御信号
ＳＴＣ  スタック制御信号
ＳＴＡ  スタックアドレス信号
ＳＴＫ  スタック出力信号
ＬＣ  ループ制御カウンタ信号
ＳＰ  スタックアドレス
【図１】
2004178058.tif 000003
【図２】
2004178058.tif 000004
【図３】
2004178058.tif 000005
【図４】
2004178058.tif 000006
【図５】
2004178058.tif 000007
【図６】
2004178058.tif 000008
【図７】
2004178058.tif 000009
【図８】
2004178058.tif 000010
【図９】
2004178058.tif 000011