(57)【特許請求の範囲】
【請求項１】
記憶手段に格納されたプログラムを読み出して実行する情報処理装置であって、
前記プログラムを読み出すためのアドレスを前記記憶手段に出力するプログラムカウンタと、
前記プログラム中の命令を構成するフィールドのうち少なくともいずれかにおいて、使用されるコードの種類が所定の数以下に限定される期間を示す制御信号に応じて、前記記憶手段から読み出した命令をデコードする命令デコーダと、
前記命令デコーダが出力するデコード結果に応じた処理を行う被制御手段とを備え、
前記命令デコーダは、
使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように設定された、当該フィールドのコードとデコード結果との関係に従ってデコードを行うように、前記制御信号に応じて回路構成の変更を行うリコンフィギュアラブル回路を有し、かつ、前記プログラムの実行が開始されてからの時間がカウントされて得られたカウント値が、前記期間の開始時刻及び終了時刻に相当する値になったことを示す信号を、前記制御信号として用いるものである
情報処理装置。
【請求項２】
記憶手段に格納されたプログラムを読み出して実行する情報処理方法であって、
前記プログラムを読み出すためのアドレスを前記記憶手段に出力するステップと、
前記プログラム中の命令を構成するフィールドのうち少なくともいずれかにおいて、使用されるコードの種類が所定の数以下に限定される期間を示す制御信号に応じて、前記記憶手段から読み出した命令をデコードするステップと、
前記命令をデコードして得られたデコード結果に応じた処理を行うステップと、
前記プログラムの実行が開始されてからの時間をカウントし、得られたカウント値が前記期間の開始時刻及び終了時刻に相当する値になったことを示す信号を、前記制御信号として求めるステップとを備え、
前記命令をデコードするステップでは、
前記制御信号に応じてリコンフィギュアラブル回路の回路構成の変更を行って、使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように設定された、当該フィールドのコードとデコード結果との関係に従ってデコードを行う
情報処理方法。
【請求項３】
リコンフィギュアラブル回路を有する命令デコーダを備えた情報処理装置でプログラムを実行させるために、プログラムをコード化する情報処理方法であって、
プログラム実行をシミュレートし、実行される命令の履歴を求めるステップと、
前記履歴に基づき、前記プログラムにおいて、命令を構成するフィールドのうち少なくともいずれかに関して、使用されるコードの種類が所定の数以下に限定されるルーチンを抽出するステップと、
前記ルーチンの前後に、前記リコンフィギュアラブル回路の回路構成を変更させる命令を挿入するステップと、
使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように、前記ルーチンにおけるコードの割り当てを行うステップと、
前記命令を挿入するステップで得られたプログラムを、前記ルーチンにおいては前記割り当てに従ってコードに変換するステップとを備えた
情報処理方法。
【請求項４】
請求項３に記載の情報処理方法において、
前記コードの割り当てを行うステップでは、
前記ルーチンでの命令の実行順序に基づき、コードの割り当てを行う
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、回路構成を変更することができるリコンフィギュアラブル回路を有する情報処理装置に関する。
【０００２】
【従来の技術】
近年、ディジタル信号処理分野の拡大に伴い、携帯通信機器等の機器にディジタル信号処理プロセッサ（以下ではＤＳＰと称する）が広く用いられるようになっている。このような機器は、電池によって駆動されるので、ＤＳＰを低消費電力化することが強く望まれている。一般にＤＳＰは、予めプログラムを格納させた内蔵メモリ又はＤＳＰ外部に接続したメモリから命令を読み出し、命令デコーダがこの命令を解読（デコード）し、算術論理演算回路（ＡＬＵ）等の演算器に各種制御信号を出力する。
【０００３】
図１３は、従来のＤＳＰにおける命令デコードに係る部分の構成を示したブロック図である。内蔵のメモリ９２から命令を読み出し実行する場合、プログラムカウンタ９１は、アドレスをメモリ９２に出力する。メモリ９２は、入力されたアドレスに格納されている命令を命令デコーダ９３に出力する。命令デコーダ９３は、入力された命令をデコードし、デコード結果ＤＣとして各種制御信号を生成して演算器９４に出力する。演算器９４は、デコード結果ＤＣに従って、例えば加算や減算などの演算を実行する。
【０００４】
また、外部に接続したメモリ９７から命令を読み出す場合、プログラムカウンタ９１は、パッド９５を経由してメモリ９７にアドレスを出力する。メモリ９７は、入力されたアドレスに格納されている命令を命令デコーダ９３に出力する。命令は、パッド９６を経由して命令デコーダ９３に入力され、命令デコーダ９３は、メモリ９２から命令を読み出す場合と同様に、命令をデコードし、デコード結果ＤＣを演算器９４に出力する。
【０００５】
図２は、命令デコーダ９３に入力される命令の構成の例を示す説明図である。最上位のフィールドには、演算又はデータ転送の種類を指定し、その次のフィールドではデータを書き込むレジスタの種類を指定する。また、その次の２フィールドでは、データを読み出すレジスタの種類を指定する（例えば、「ＭＮ１９２０シリーズＬＳＩ説明書」p.2-2、1990年、松下電子工業（株）刊参照）。
【０００６】
【発明が解決しようとする課題】
しかしながら、このような構成のＤＳＰにおいてプログラムを実行する場合、異なった命令が順次命令デコーダ９３に入力される度に、メモリ９２，９７から命令デコーダ９３に至る経路の配線及びパッド９６の電位が低電位“Ｌ”から高電位“Ｈ”、又は“Ｈ”から“Ｌ”に変化する。一般にＣＭＯＳ（complementary metal oxide semiconductor）構造のＬＳＩにおいては、信号の電位が変化するときに動作電流が最大となるので、命令デコーダ９３への入力のうち値が変化するビットの数が多いと、命令をデコードする際の消費電力が大きい。
【０００７】
一方、機器に組み込まれて用いられるＤＳＰ等の情報処理装置においては、処理内容が一旦決まって機器に組み込まれれば、プログラムが変更されることは通常はない。ＤＳＰは、プログラムに従って処理を順次行うが、ある処理を行う際に実行する命令の種類は限られていることが多い。このような場合においても、ＤＳＰは全ての命令を実行することができるようになっており、命令フィールドの幅や命令コードの割り当ては変更されることがなかった。
【０００８】
本発明は、ＤＳＰ等の情報処理装置が命令をデコードする際に消費する電力を低減することを目的とする。
【０００９】
【課題を解決するための手段】
前記課題を解決するため、請求項１の発明が講じた手段は、記憶手段に格納されたプログラムを読み出して実行する情報処理装置であって、前記プログラムを読み出すためのアドレスを前記記憶手段に出力するプログラムカウンタと、前記プログラム中の命令を構成するフィールドのうち少なくともいずれかにおいて、使用されるコードの種類が所定の数以下に限定される期間を示す制御信号に応じて、前記記憶手段から読み出した命令をデコードする命令デコーダと、前記命令デコーダが出力するデコード結果に応じた処理を行う被制御手段とを備え、前記命令デコーダは、使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように設定された、当該フィールドのコードとデコード結果との関係に従ってデコードを行うように、前記制御信号に応じて回路構成の変更を行うリコンフィギュアラブル回路を有し、かつ、前記プログラムの実行が開始されてからの時間がカウントされて得られたカウント値が、前記期間の開始時刻及び終了時刻に相当する値になったことを示す信号を、前記制御信号として用いるものである。
【００１０】
請求項１の発明によると、あるフィールドに関して、使用されるコードの種類が所定の数以下に限定される期間においては、命令を構成するフィールドのビットの値が変化する回数が少なくなるので、情報処理装置の消費電力を低減することができる。
【００１１】
また、請求項２の発明は、記憶手段に格納されたプログラムを読み出して実行する情報処理方法であって、前記プログラムを読み出すためのアドレスを前記記憶手段に出力するステップと、前記プログラム中の命令を構成するフィールドのうち少なくともいずれかにおいて、使用されるコードの種類が所定の数以下に限定される期間を示す制御信号に応じて、前記記憶手段から読み出した命令をデコードするステップと、前記命令をデコードして得られたデコード結果に応じた処理を行うステップと、前記プログラムの実行が開始されてからの時間をカウントし、得られたカウント値が前記期間の開始時刻及び終了時刻に相当する値になったことを示す信号を、前記制御信号として求めるステップとを備え、前記命令をデコードするステップでは、前記制御信号に応じてリコンフィギュアラブル回路の回路構成の変更を行って、使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように設定された、当該フィールドのコードとデコード結果との関係に従ってデコードを行うものである。
【００１２】
また、請求項３の発明は、リコンフィギュアラブル回路を有する命令デコーダを備えた情報処理装置でプログラムを実行させるために、プログラムをコード化する情報処理方法であって、プログラム実行をシミュレートし、実行される命令の履歴を求めるステップと、前記履歴に基づき、前記プログラムにおいて、命令を構成するフィールドのうち少なくともいずれかに関して、使用されるコードの種類が所定の数以下に限定されるルーチンを抽出するステップと、前記ルーチンの前後に、前記リコンフィギュアラブル回路の回路構成を変更させる命令を挿入するステップと、使用されるコードの種類が限定されるフィールドのビットの値が変化する回数が少なくなるように、前記ルーチンにおけるコードの割り当てを行うステップと、前記命令を挿入するステップで得られたプログラムを、前記ルーチンにおいては前記割り当てに従ってコードに変換するステップとを備えたものである。
【００１３】
請求項３の発明によると、プログラムをコード化する際に、リコンフィギュアラブル回路の回路構成を変更させる命令を自動的に挿入することができる。
【００１４】
また、請求項４の発明は、請求項３に記載の情報処理方法において、前記コードの割り当てを行うステップでは、前記ルーチンでの命令の実行順序に基づき、コードの割り当てを行うものである。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１６】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報処理装置のブロック図である。図１の情報処理装置１００は、プログラムカウンタ１１と、メモリ１２と、命令デコーダ１３と、被制御手段としての演算器１４とを備えている。また、情報処理装置１００には、パッド４１，４２を介してメモリ６１が接続されている。情報処理装置１００は、具体的にはＤＳＰを始めとするプロセッサ等である。プログラムカウンタ１１、メモリ１２、命令デコーダ１３、及び演算器１４は、１チップ上に形成されている。
【００１７】
プログラムカウンタ１１は、メモリ１２又は６１に格納されたプログラム中の命令を読み出すためのアドレスを生成し、メモリ１２及び６１に出力する。この際、プログラムカウンタ１１は、メモリ６１にはパッド４１を介してアドレスを出力する。メモリ１２又は６１は、プログラムカウンタ１１が出力するアドレスに応じて、格納された命令を読み出し、命令デコーダ１３に出力する。この際、メモリ６１は、読み出した命令をパッド４２を介して命令デコーダ１３に出力する。パッド４１，４２は、配線を駆動するバッファを有している。
【００１８】
命令デコーダ１３は、制御信号ＣＮに応じて回路構成を変更し得るリコンフィギュアラブル回路を有している。命令デコーダ１３は、入力された命令を制御信号ＣＮに応じてデコードし、デコード結果ＤＣを演算器１４に出力する。
【００１９】
図２は、図１の命令デコーダ１３に入力される命令の構成の例を示す説明図である。命令全体のビット長は１６ビットである。図２の命令は、命令フィールドＦ１、格納先フィールドＦ２、及び読み出しフィールドＦ３，Ｆ４を備えている。最上位の３ビットは命令フィールドＦ１であり、この命令フィールドＦ１には、実行する演算命令又は転送命令の命令コードが格納される。格納先フィールドＦ２にはデータの格納先のレジスタのコード等、読み出しフィールドＦ３，Ｆ４にはデータが読み出されるレジスタのコード等が格納される。
【００２０】
図３は、図１の命令デコーダ１３がデコードする命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。図３は、８種類の演算等について、３ビットで表された命令コードと、これらのそれぞれに対応する命令名、演算内容、及び演算種別を示している。
【００２１】
図４は、図１の命令デコーダ１３がデコードする命令の命令コード、及びそれぞれに対応する命令名の他の例を示す説明図である。図４は、３種類の演算等について、３ビットで表された命令コードと、これらのそれぞれに対応する命令名、及び演算内容を示している。特に図示しないが、格納先フィールドＦ２、及び読み出しフィールドＦ３，Ｆ４についても、指定されるレジスタ等とそれに対するコードとの関係が定義されている。
【００２２】
命令デコーダ１３は、制御信号ＣＮが“０”（すなわち、例えば“Ｌ”）のときには、図３に示された対応関係に基づいて図２の命令フィールドＦ１の命令コードをデコードし、そのデコード結果を演算器１４に出力する。一方、命令デコーダ１３は、制御信号ＣＮが“１”（すなわち、例えば“Ｈ”）のときにはリコンフィギュアラブル回路の回路構成を変更し、図４に示された対応関係に基づいて命令フィールドＦ１の命令コードをデコードし、そのデコード結果を演算器１４に出力する。ここで、“Ｈ”及び“Ｌ”は、信号レベルが論理的にそれぞれ高電位及び低電位であることを表している。
【００２３】
命令デコーダ１３は、図２の格納先フィールドＦ２、及び２つの読み出しフィールドＦ３，Ｆ４のコードもデコードし、そのデコード結果を演算器１４に出力する。この際、各フィールドのコードを常に同じ対応関係に基づいてデコードしてもよいし、命令フィールドの場合と同様に、制御信号ＣＮに応じて各フィールドのコードとデコード結果との関係を変更してもよい。
【００２４】
図５は、図１の情報処理装置１００が行う処理の内容の例を説明する説明図である。ここでは、携帯電話の受信データを処理する場合を例として示している。
【００２５】
時刻Ｔ０〜Ｔ１では、情報処理装置１００は、外部のＬＳＩ（図示せず）からデータを受信し、処理Ａを行う。処理Ａは、復調、誤り訂正などの処理を含む。情報処理装置１００は、処理Ａを行う際には、算術演算及び論理演算を行う。
【００２６】
時刻Ｔ１〜Ｔ２では、情報処理装置１００は、処理Ａの結果に基づいて処理Ｂを行う。処理Ｂは、音声デコード処理を含む。情報処理装置１００は、処理Ｂを行う際には、算術演算を行う。
【００２７】
時刻Ｔ２〜Ｔ３では、情報処理装置１００は、処理Ｂの結果に基づいて処理Ｃを行う。処理Ｃは、処理Ｂで得られた音声データを外部に転送する等の処理を含む。処理Ｃでは転送処理が主であるが、他の様々な処理をも行うものとする。情報処理装置１００は、処理Ｃを行う際には、算術演算、論理演算、及び転送命令を実行する。
【００２８】
図５の処理を実行する前に、図５の処理を行うためのプログラムを、予めシミュレータ等で解析し、実行される命令とその実行時刻の記録をしておく。この記録から、このプログラムにおいて、命令フィールドで使用される命令コードの種類が所定の数以下に限定される期間を知ることができる。他のフィールドで使用されるコードについても同様に知ることができる。ここでは、時刻Ｔ１〜Ｔ２において、すなわち、処理Ｂを行う際には、情報処理装置１００は、図４に示された３種類の算術演算のみを行うということが明らかになっているとする。
【００２９】
また、命令の実行順序を記録しておくと、図５の処理を行うためのプログラムにおいて、ある命令コードの後には特定の命令コードが実行されることが多いということを知ることができる。これは、命令の実行時刻の記録からも知ることができる。ここでは、処理Ｂを行う際には、ＭＡＣ命令に続いてＡＤＤ命令を実行し、かつ、ＡＤＤ命令に続いてＭＯＶ命令を実行する頻度が高いということが明らかになっているとする。
【００３０】
処理Ｂを行う期間においては、使用される命令の種類が限られ、命令フィールドＦ１で使用されるコードの種類が３種類に限定されている。そこで、命令フィールドＦ１のコードとデコード結果との関係を、命令フィールドＦ１のビットの値が変化する回数が少なくなるように設定している。
【００３１】
具体的には、図４においては、例えば命令コードの最上位ビットのように、命令コードの一部のビットを固定値とするように命令コードとデコード結果との関係を設定している。このため、処理Ｂを行う際には、この固定値としたビットの電位を変化させるための電力を削減することができるようになる。
【００３２】
また、図４では、命令の実行順序に基づいて、コードとデコード結果との関係を設定している。すなわち、ＭＡＣ命令に続いてＡＤＤ命令を実行する頻度が高いので、ＭＡＣ命令からＡＤＤ命令に変化するときにおける命令フィールドのビットの変化ができるだけ小さくなるように、すなわち、１ビットのみが変化するようにしている。また、ＡＤＤ命令からＭＯＶ命令に変化するときにおける命令フィールドのビットの変化も同様に、１ビットのみが変化するようにしている。
【００３３】
処理Ａ，Ｃでは、使用する命令の種類が多いため、処理Ａ，Ｃを実行するためのプログラムは、予めアセンブラ、コンパイラ等により図３の対応関係に従って命令コードに変換しておく。また、処理Ｂを実行するためのプログラムは、予めアセンブラ、コンパイラ等により、図４の対応関係に従って命令コードに変換しておく。
【００３４】
次に、情報処理装置１００の動作について説明する。制御信号ＣＮは、情報処理装置１００の外部から与えることとしてもよいし、情報処理装置１００の内部で生成することとしてもよい。
【００３５】
時刻Ｔ０〜Ｔ１では、情報処理装置１００は、処理Ａを実行する。時刻Ｔ０では、命令デコーダ１３に制御信号ＣＮとして“０”が与えられる。このとき、制御信号ＣＮは、命令フィールドにおいて使用されるコードの種類が限定される期間ではないことを示しており、命令デコーダ１３は、入力された命令コードを図３の対応関係に従ってデコードする。例えば、入力された命令の命令フィールドＦ１が“０００”である場合、命令デコーダ１３は、演算器１４がＡＮＤ命令を実行するように、デコード結果ＤＣを演算器１４に出力する。また、入力された命令の命令フィールドが“１０１”である場合、命令デコーダ１３は、演算器１４がＳＵＢ命令を実行するように、デコード結果ＤＣを演算器１４に出力する。
【００３６】
時刻Ｔ１〜Ｔ２では、情報処理装置１００は、処理Ｂを実行する。時刻Ｔ１では、命令デコーダ１３に制御信号ＣＮとして“１”が与えられる。このとき、制御信号ＣＮは、命令フィールドにおいて使用されるコードの種類が限定される期間であることを示しており、命令デコーダ１３は、リコンフィギュアラブル回路の回路構成を変更し、入力された命令コードを図４の対応関係に従ってデコードする。例えば、入力された命令の命令フィールドＦ１が“１００”である場合、命令デコーダ１３は、演算器１４がＭＡＣ命令を実行するように、デコード結果ＤＣを演算器１４に出力する。また、入力された命令の命令フィールドが“１０１”である場合、命令デコーダ１３は、演算器１４がＡＤＤ命令を実行するように、デコード結果ＤＣを演算器１４に出力する。
【００３７】
命令デコーダ１３に入力される命令がＭＡＣ命令からＡＤＤ命令に変化するとき、及びＡＤＤ命令からＭＯＶ命令に変化するときに、命令デコーダ１３に入力される命令の命令フィールドにおいては、１ビットが変化するのみである。
【００３８】
時刻Ｔ２〜Ｔ３では、情報処理装置１００は、処理Ｃを実行する。時刻Ｔ２では、命令デコーダ１３に制御信号ＣＮとして“０”が与えられる。このとき、命令デコーダ１３は、リコンフィギュアラブル回路の回路構成を再び変更し、入力された命令コードを図３の対応関係に従ってデコードし、デコード結果ＤＣを演算器１４に出力する。
【００３９】
このように、処理Ｂを実行する期間においては、命令デコーダ１３はリコンフィギュアラブル回路の回路構成を変更し、入力された命令コードを図４の対応関係に従ってデコードするので、命令デコーダ１３に入力される命令コードのビットの値が変化する回数を少なくすることができる。すると、メモリ１２，６１と命令デコーダ１３との間の配線やパッド４２の電位を変化させる回数を少なくすることができるので、情報処理装置１００の消費電力を大幅に低減することができる。
【００４０】
特に、情報処理装置が機器に組み込まれて用いられる場合には、プログラムが変更されることは通常はないので、命令フィールドで使用される命令コードの種類が所定の数以下に限定される期間を予め求めておくことが容易にできる。
【００４１】
以下では、情報処理装置１００の内部で制御信号ＣＮを生成する場合のいくつかの例について説明する。
【００４２】
（第１の変形例）
図６は、第１の実施形態の第１の変形例に係る情報処理装置２００のブロック図である。図６の情報処理装置２００は、図１の情報処理装置１００においてタイマー１５を更に備え、タイマー１５の出力を制御信号ＣＮとして命令デコーダ１３に与えるものである。
【００４３】
タイマー１５には、処理Ａが開始される前に、処理Ｂの開始時刻Ｔ１及び終了時刻Ｔ２が設定される。この設定は、情報処理装置２００が、メモリ１２に予め格納された時刻設定のためのプログラムを実行することにより行われる。
【００４４】
設定終了後、処理Ａが開始されると、タイマー１５は、プロセッサの動作クロック（図示せず）の立ち上がりエッジ毎に、カウント値を値“０”から順次増加させる。タイマー１５は、カウント値が時刻Ｔ１に相当する値になったときに、制御信号ＣＮとして“１”を出力し、その後、カウント値が時刻Ｔ２に相当する値になったときに、制御信号ＣＮとして“０”を出力する。
【００４５】
命令デコーダ１３は、入力された命令コードを、制御信号ＣＮが“０”のときには図３に示す対応関係に従ってデコードし、制御信号ＣＮが“１”のときには図４に示す対応関係に従ってデコードする。
【００４６】
このように、図６の情報処理装置２００によると、制御信号ＣＮを外部から与えることなく、プログラム実行時の命令コードのビット変化を少なくすることができ、消費電力を大幅に低減することができる。
【００４７】
（第２の変形例）
図７は、第１の実施形態の第２の変形例に係る情報処理装置３００のブロック図である。図７の情報処理装置３００は、図１の情報処理装置１００において比較部１６を更に備え、比較部１６の出力を制御信号ＣＮとして命令デコーダ１３に与えるものである。
【００４８】
比較部１６には、処理Ａが開始される前に、メモリ１２又は６１に格納されたプログラムにおける処理Ｂの先頭アドレスＰＣ１及び処理Ｃの先頭アドレスＰＣ２が設定される。この設定は、情報処理装置３００が、メモリ１２に予め格納されたアドレス設定のためのプログラムを実行することにより行われる。
【００４９】
アドレス設定終了後、比較部１６は、プログラムカウンタ１１の出力とアドレスＰＣ１，ＰＣ２とを比較する。比較部１６は、プログラムカウンタ１１の出力がＰＣ１になったとき（処理Ｂの開始時）、制御信号ＣＮとして“１”を出力し、その後、プログラムカウンタ１１の出力がＰＣ２になったとき（処理Ｂの終了時）、制御信号ＣＮとして“０”を出力する。
【００５０】
命令デコーダ１３は、入力された命令コードを、制御信号ＣＮが“０”のときには図３に示す対応関係に従ってデコードし、制御信号ＣＮが“１”のときには図４に示す対応関係に従ってデコードする。
【００５１】
このように、図７の情報処理装置３００によると、制御信号ＣＮを外部から与えることなく、プログラム実行時の命令コードのビット変化を少なくすることができ、消費電力を大幅に低減することができる。
【００５２】
（第３の変形例）
図８は、第１の実施形態の第３の変形例に係る情報処理装置４００のブロック図である。図８の情報処理装置４００は、図１の情報処理装置１００において、命令デコーダ１３に代えて第１の命令デコーダ２３を備え、更に第２の命令デコーダ２１を備えたものである。メモリ１２，６１は、読み出した命令を命令デコーダ２１及び２３に出力する。命令デコーダ２１は、デコード結果を制御信号ＣＮとして命令デコーダ２３に出力する。デコード部２０は、命令デコーダ２１及び２３を備えている。
【００５３】
図９は、図８のデコード部２０がデコードする命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。図９は、ＭＵＬ命令に代えて命令デコーダ２３の回路構成を変更（リコンフィギュア）させるＲＣＮＦＧ命令を割り当てている点の他は、図３と同様である。
【００５４】
命令デコーダ２１は、ＲＣＮＦＧ命令をデコードすると、制御信号ＣＮとして一旦“１”を出力し、その後、“０”を出力する。命令デコーダ２１は、ＲＣＮＦＧ命令以外はデコードする必要はない。また、命令デコーダ２１は、リコンフィギュアラブル回路を有していない。
【００５５】
命令デコーダ２３は、制御信号ＣＮに応じて回路構成を変更し得るリコンフィギュアラブル回路を有している。命令デコーダ２３は、入力された命令を制御信号ＣＮに応じてデコードし、デコード結果を演算器１４に出力する。命令デコーダ２３は、通常は図９に示す対応関係に従ってデコードを行う。但し、ＲＣＮＦＧ命令はデコードする必要はない。このとき、制御信号ＣＮが“０”から“１”に変化すると、命令デコーダ２３は、その回路構成を変更し、図４に示す対応関係に従ってデコードを行う。またこのとき、制御信号ＣＮが再び“０”から“１”に変化すると、命令デコーダ２３は、その回路構成を変更し、再び図９に示す対応関係に従ってデコードを行う。
【００５６】
以下、図８の情報処理装置４００が図５の処理を実行する場合の動作を説明する。処理Ａのプログラムの最後、及び処理Ｂのプログラムの最後に、ＲＣＮＦＧ命令を予め加えておくこととする。
【００５７】
まず、命令デコーダ２３は、処理Ａにおいて、入力された命令コードを図９に示す対応関係に従ってデコードする。命令デコーダ２１は、制御信号ＣＮとして“０”を出力している。
【００５８】
処理Ａの終了時、命令デコーダ２１は、ＲＣＮＦＧ命令をデコードするので、制御信号ＣＮとして“１”を命令デコーダ２３に出力する。命令デコーダ２３は、制御信号ＣＮが“１”に変化したので、その回路構成を変更する。すると、命令デコーダ２３は、その後の処理Ｂにおいて、入力された命令コードを図４に示す対応関係に従ってデコードするようになる。命令デコーダ２１は、ＲＣＮＦＧ命令をデコードした後、制御信号ＣＮを“０”にする。
【００５９】
処理Ｂの終了時、命令デコーダ２１は、再びＲＣＮＦＧ命令をデコードするので、制御信号ＣＮとして“１”を出力する。命令デコーダ２３は、制御信号ＣＮが“１”に変化したので、その回路構成を変更する。すると、命令デコーダ２３は、その後の処理Ｃにおいて、再び図９に示す対応関係に従ってデコードを行うようになる。命令デコーダ２１は、ＲＣＮＦＧ命令をデコードした後、制御信号ＣＮを“０”にする。
【００６０】
このように、図８の情報処理装置４００によると、命令デコーダ２３の構成を変更させるＲＣＮＦＧ命令をプログラムに予め記述しておくと、プログラム実行時の命令コードのビット変化を少なくすることができ、消費電力を大幅に低減することができる。
【００６１】
（第４の変形例）
図１０は、第１の実施形態の第４の変形例に係る情報処理装置５００のブロック図である。図１０の情報処理装置５００は、図１の情報処理装置１００において、命令デコーダ１３に代えて第１の命令デコーダ３３を備え、更に第２の命令デコーダ３１とレジスタ１７とを備えたものである。メモリ１２，６１は、読み出した命令を命令デコーダ３１及び３３に出力する。命令デコーダ３１は、デコード結果をレジスタ１７に出力する。レジスタ１７は、格納している値を制御信号ＣＮとして命令デコーダ３３に出力する。デコード部３０は、命令デコーダ３１及び３３を備えている。
【００６２】
図１０のデコード部３０は、ＭＵＬ命令に代えてＳＥＴＲＥＧ命令をデコードする点の他は、図３に従ってデコードを行うものである。ＳＥＴＲＥＧ命令は、レジスタ１７に値をセットする命令である。
【００６３】
命令デコーダ３１は、オペランドとして“１”が指定されたＳＥＴＲＥＧ命令をデコードすると、値“１”をレジスタ１７に出力して格納させる。また、命令デコーダ３１は、オペランドとして“０”が指定されたＳＥＴＲＥＧ命令をデコードすると、値“０”をレジスタ１７に出力して格納させる。命令デコーダ３１は、ＳＥＴＲＥＧ命令以外はデコードする必要はない。また、命令デコーダ３１は、リコンフィギュアラブル回路を有していない。
【００６４】
命令デコーダ３３は、制御信号ＣＮに応じて回路構成を変更し得るリコンフィギュアラブル回路を有している。命令デコーダ３３は、入力された命令を制御信号ＣＮに応じてデコードし、デコード結果を演算器１４に出力する。命令デコーダ３３は、制御信号ＣＮが“０”のときは図３に示す対応関係に従ってデコードを行う（ＭＵＬ命令は除く）。制御信号ＣＮが“１”であるときは、命令デコーダ３３は、その回路構成を変更し、図４に示す対応関係に従ってデコードを行う。
【００６５】
図１０の情報処理装置５００が図５の処理を実行する場合は、処理Ａのプログラムの最後、及び処理Ｂのプログラムの最後に、オペランドとしてそれぞれ“１”及び“０”が指定されたＳＥＴＲＥＧ命令を予め加えておくこととする。
【００６６】
このように、図１０の情報処理装置５００によると、レジスタ１７に値をセットするＳＥＴＲＥＧ命令をプログラムに予め記述しておくと、プログラム実行時の命令コードのビット変化を少なくすることができ、消費電力を大幅に低減することができる。
【００６７】
（第２の実施形態）
図８の情報処理装置４００では、命令デコーダ２３の回路構成を変更する場合には、プログラマが、アセンブリ言語で記述されたプログラムにＲＣＮＦＧ命令を明示的に記述する必要があった。本実施形態では、プログラムに自動的にＲＣＮＦＧ命令を挿入する情報処理方法について説明する。
【００６８】
図１１は、本発明の第２の実施形態に係る情報処理方法の処理の流れを示すフローチャートである。ここでは、図８の情報処理装置４００において図５の処理を実行するプログラムを対象として説明する。
【００６９】
ステップＳ１では、処理Ａ、処理Ｂ、処理Ｃを行うためのプログラムを、図８の情報処理装置４００の動作を模擬するシミュレータ等に入力し、プログラム実行をシミュレートする。この際、実行される命令の履歴を記録しておく。
【００７０】
ステップＳ２では、この履歴に基づき、使用される命令の種類、命令の実行順序の依存関係を解析し、プログラムにおいて、使用される命令コードの種類が所定の数以下に限定される部分（ルーチン）を求める。例えば、ＡＤＤ命令、ＭＡＣ命令等の算術演算が多用され、命令の種類が４以下に限定されるルーチン（ここではルーチンＡと称する）がここで抽出される。
【００７１】
ステップＳ３では、ルーチンＡの前後に、リコンフィギュアラブル回路の回路構成を変更させるＲＣＮＦＧ命令を挿入する。
【００７２】
ステップＳ４では、ステップＳ２で得られたルーチンＡで用いられる命令コードの種類に基づき、命令コードのビット変化が少なくなるように、命令コードの割り当てを行う。すなわち、命令コードとそのデコード結果との間の関係を設定する。例えば、図４のように、命令コードの一部のビットの値を固定するようにする。
【００７３】
また、ルーチンＡでの命令実行順序に基づき、命令コードのビット変化が少なくなるように、命令コードの割り当てを行ってもよい。すなわち、例えばＭＡＣ命令に続きＡＤＤ命令が実行され、ＡＤＤ命令に続きＭＯＶ命令が実行される頻度が高い場合、続けて用いられる頻度が高い２つの命令コードの間でのビットの値の違いが小さくなるように、例えば図４のような命令コードが割り当てられる。
【００７４】
ステップＳ５では、ステップＳ３で得られたプログラムを命令コード等に変換する（アセンブルを行う）。この際、プログラムのうち、ＲＣＮＦＧ命令で挟まれたルーチンＡは、ステップＳ４で求めた命令コードの割り当て、すなわち、例えば図４に示す対応関係に従って命令コードに変換する。それ以外の部分は図９に示す対応関係に従って命令コードに変換するようにする。
【００７５】
このように、図１１の情報処理方法によると、プログラムにおいて、使用される命令の種類が限定されるルーチンの前後にＲＣＮＦＧ命令が自動的に挿入される。すると、図８の情報処理装置４００においてプログラムを実行する際に、命令コードのビット変化を少なくすることができ、消費電力を大幅に低減することができる。
【００７６】
（第３の実施形態）
図１２は、第３の実施形態において、処理Ｂを実行するプログラムに用いる命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。第１の実施形態で説明したように、図２の命令フィールドＦ１のビット長は３ビットである。これは図３に示す８種類の命令コードの判別に必要なビット数である。ところが、図５の処理Ｂにおいては、ＭＡＣ命令、ＡＤＤ命令、及びＭＯＶ命令の３種類の命令のみが使用されている。そこで、本実施形態では、処理Ｂにおいては、命令フィールドＦ１のビット長を２ビットとし、命令デコーダは図１２の関係に従ってデコードを行う。
【００７７】
このとき、命令のビット長は、１６ビットではなく、１５ビットとなる。したがって、処理Ｂのプログラムを格納するメモリ１２、６１の１ワードの長さを１５ビットとすることができる。以下では、図１の情報処理装置１００において、命令デコーダ１３に代えて、処理Ｂにおいては図１２の関係に従ってデコードを行う命令デコーダを備えた情報処理装置が図５の処理を実行する際の動作を説明する。
【００７８】
時刻Ｔ０〜Ｔ１において、情報処理装置が処理Ａを実行する際の動作は、第１の実施形態と同様である。このとき、命令デコーダには、制御信号ＣＮとして“０”が与えられる。命令デコーダは、入力された命令コードを図３の対応関係に従ってデコードする。メモリ１２，６１は、１６ビットの命令を命令デコーダに出力する。
【００７９】
時刻Ｔ１〜Ｔ２において、情報処理装置が処理Ｂを実行する際には、メモリ１２，６１は、１５ビットの命令を命令デコーダに出力する。時刻Ｔ１で制御信号ＣＮとして“１”が与えられると、命令デコーダは回路構成を変更し、入力された命令コードを図１２の対応関係に従ってデコードする。
【００８０】
時刻Ｔ２〜Ｔ３において、情報処理装置が処理Ｃを実行する際の動作は、第１の実施形態と同様である。このとき、命令デコーダには、制御信号ＣＮとして“０”が与えられる。命令デコーダは回路構成を再び変更し、入力された命令コードを図３の対応関係に従ってデコードする。メモリ１２，６１は、１６ビットの命令を命令デコーダに出力する。
【００８１】
このように、各処理で実行される命令の命令コードをビット長ができるだけ短くなるように割り当てるので、プログラムを格納するメモリに必要な容量を少なくすることができる。特に、処理Ｂのプログラムを、処理Ａ及びＣのプログラムとは異なるバンクに属するメモリに格納すると、処理Ｂのプログラムを格納するメモリの面積を小さくすることができ、同時に消費電力を低減することができる。
【００８２】
以上の実施形態においては、図２の命令フィールドＦ１に格納される命令コードとデコード結果との関係を変更する場合について説明したが、他のフィールドに格納されるコードについても、同様にコードとデコード結果との関係を変更することができる。
【００８３】
例えば、図２の格納先フィールドＦ２に指定することができるレジスタが４本あり（それぞれをレジスタｒ１，ｒ２，ｒ３，ｒ４とする）、処理Ｂにおいてレジスタｒ０が使用された後にレジスタｒ２が使用される頻度が高いとする。この場合、処理Ｂにおいては、レジスタｒ０に割り当てるコードと、レジスタｒ２に割り当てるコードとの間のビットの違いが他の処理Ａ，Ｃ等におけるよりも小さくなるように、例えばビットの違いが１ビットとなるようにする。
【００８４】
これに対応するように、処理Ｂの実行時においては、命令デコーダのリコンフィギュアラブル回路の回路構成を変更する。すると、処理Ｂにおいて格納先フィールドＦ２のビットが変化する回数が減少するので、消費電力を低下させることができる。読み出しフィールドＦ３，Ｆ４についても同様である。
【００８５】
また、フィールド毎ではなく、命令全体についてのビット変化を考慮して、同様にコード割り当てを変更してもよい。すなわち、例えば、処理Ｂにおいて、命令“ＡＤＤ  ｒ０，ｒ１，ｒ２”が実行された後に命令“ＭＡＣ  ｒ１，ｒ３，ｒ２”が実行される頻度が高いとする。この場合、処理Ｂにおいては、これらの命令に割り当てられる１６ビットコードの間のビットの違いが他の処理Ａ，Ｃ等におけるよりも小さくなるように、命令コード及びレジスタｒ０〜ｒ３のコードを割り当てるようにする。
【００８６】
なお、情報処理装置が処理する命令数、命令ビット長、命令フィールド等の各フィールドの形式、命令フィールド等の各フィールドの長さ、命令の種類、命令コード等は、以上の実施形態で説明したもの以外であってもよい。
【００８７】
また、情報処理装置は、メモリ１２を備えるのみとし、これにプログラムを格納させてもよいし、メモリ１２を備えずメモリ６１を接続するのみとし、これにプログラムを格納させてもよい。
【００８８】
【発明の効果】
以上のように、本発明によると、主に組み込み用途で用いられるＤＳＰ等の情報処理装置が消費する電力を小さくすることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る情報処理装置のブロック図である。
【図２】図１の命令デコーダに入力される命令の構成の例を示す説明図である。
【図３】図１の命令デコーダがデコードする命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。
【図４】図１の命令デコーダがデコードする命令の命令コード、及びそれぞれに対応する命令名の他の例を示す説明図である。
【図５】図１の情報処理装置が行う処理の内容の例を説明する説明図である。
【図６】第１の実施形態の第１の変形例に係る情報処理装置のブロック図である。
【図７】第１の実施形態の第２の変形例に係る情報処理装置のブロック図である。
【図８】第１の実施形態の第３の変形例に係る情報処理装置のブロック図である。
【図９】図８のデコード部がデコードする命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。
【図１０】第１の実施形態の第４の変形例に係る情報処理装置のブロック図である。
【図１１】本発明の第２の実施形態に係る情報処理方法の処理の流れを示すフローチャートである。
【図１２】第３の実施形態において、処理Ｂを実行するプログラムに用いる命令の命令コード、及びそれぞれに対応する命令名の例を示す説明図である。
【図１３】従来のＤＳＰにおける命令デコードに係る部分の構成を示したブロック図である。
【符号の説明】
１１  プログラムカウンタ
１２，６１  メモリ
１３  命令デコーダ
１４  演算器（被制御手段）
１５  タイマ
１６  比較部
１７  レジスタ
２１，３１  命令デコーダ（第２の命令デコーダ）
２３，３３  命令デコーダ（第１の命令デコーダ）
１００，２００，３００，４００，５００  情報処理装置
【図１】
0003578735.tif 000002
【図２】
0003578735.tif 000003
【図３】
0003578735.tif 000004
【図４】
0003578735.tif 000005
【図５】
0003578735.tif 000006
【図６】
0003578735.tif 000007
【図７】
0003578735.tif 000008
【図８】
0003578735.tif 000009
【図９】
0003578735.tif 000010
【図１０】
0003578735.tif 000011
【図１１】
0003578735.tif 000012
【図１２】
0003578735.tif 000013
【図１３】
0003578735.tif 000014