(57)【要約】【課題】マイコンなどの情報処理装置のレジスタ拡張を行う場合、拡張レジスタにアクセスするには、命令コードの追加・変更やレジスタ切り替えのための操作が必要になる。【解決手段】命令メモリ１と、データメモリ９と、命令メモリから読み出された命令に従って制御信号を生成する命令制御部４と、命令制御部による制御信号に従ってデータメモリに対してアクセスを行うロード・ストアユニット１０と、命令制御部による制御信号に従って演算を行う演算器５，６と、演算器５で用いるデータを格納する標準レジスタ群７と、演算器６で用いるデータを格納する拡張レジスタ群８と、選択信号Ａ３により標準レジスタ群７と拡張レジスタ群８とのいずれかを選択する選択手段１２と、選択手段１２に対し選択信号Ａ３を出力する選択条件判定手段１３とを備え、選択条件判定手段１３は、装置内部の特定の状態信号に基づいて選択信号Ａ３を生成する。【選択図】図１
2010092273.tif 000002
【特許請求の範囲】
【請求項１】
命令を格納する命令メモリと、
データを格納するデータメモリと、
前記命令メモリから読み出された命令に従って制御信号を生成する命令制御部と、
前記命令制御部による前記制御信号に従って前記データメモリに対してアクセスを行うロード・ストアユニットと、
前記命令制御部による前記制御信号に従って演算を行う演算器と、
前記演算器で用いるデータを格納する標準レジスタ群と、
前記演算器で用いるデータを格納する拡張レジスタ群と、
選択信号により前記標準レジスタ群と前記拡張レジスタ群とのいずれかを選択する選択手段と、
前記選択手段に対し前記選択信号を出力する選択条件判定手段とを備え、
前記選択条件判定手段は、装置内部の特定の状態信号に基づいて前記選択信号を生成するように構成されている情報処理装置。
【請求項２】
前記選択条件判定手段は、メモリアクセスが発生する命令実行時に前記ロード・ストアユニットで生成されるアドレスを用いて前記選択信号を生成する請求項１に記載の情報処理装置。
【請求項３】
前記選択条件判定手段は、過去に実行された命令の履歴情報を保持する命令履歴保持手段を備え、前記命令履歴保持手段が保持する命令の履歴情報を基に前記選択信号を生成する請求項１に記載の情報処理装置。
【請求項４】
前記命令履歴保持手段は、割り込み処理開始時に、過去に実行された命令の履歴情報を退避し、割り込み復帰時に前記命令の履歴情報を復帰させる請求項３に記載の情報処理装置。
【請求項５】
パイプライン方式で動作する情報処理装置として構成され、
前記命令制御部は命令情報を生成するように構成され、
さらに各パイプラインステージに対応した前記命令情報を保持する命令情報保持手段を備え、
前記選択条件判定手段は、前記命令情報保持手段に保持されている前記命令情報を用いて前記選択信号を生成するように構成されている請求項１に記載の情報処理装置。
【請求項６】
さらに、過去に実行された命令の履歴情報を保持する命令履歴保持手段を備え、前記命令履歴保持手段は、過去に実行された命令の特定の並びを検出し割り込み処理を禁止する請求項５に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能向上・機能向上の要求に対応するためにレジスタ個数が拡張された情報処理装置にかかわり、特には拡張レジスタに対するアクセスを標準レジスタに対するアクセスと同等の実行サイクル・命令数で行えるようにする技術に関する。
【背景技術】
【０００２】
マイコン（マイクロコンピュータ）・ＣＰＵ（Central Processing Unit）・ＤＳＰ（Digital Signal Processor）などに代表される情報処理装置においては、さらなる性能向上・機能向上の要求に対応するために、既存の情報処理装置が元から持っている演算機能・標準レジスタ以外に、追加で拡張演算機能・拡張レジスタを増設する手法が採られることがある。しかし、この拡張された資源を扱うために既存の情報処理装置の命令フォーマットを大きく変更することは、互換性悪化の問題やアセンブラ・コンパイラの対応が必要になるという問題がある。特に、命令コードフォーマット中のレジスタ指定フィールドのビット幅を拡張することは一般的にむずかしく、拡張レジスタを命令コード中で明示的に指定することは困難である。
【０００３】
演算命令の種類によって使用するレジスタが標準レジスタか拡張レジスタかがあらかじめ決まっている場合には、命令コードフォーマット中のレジスタ指定フィールドのビット幅を拡張することなく、暗黙的に拡張レジスタを使用することは可能である。このような構成は、ＭＩＰＳ命令セットアーキテクチャのｍｕｌｔ命令（乗算命令）とＨｉ／Ｌｏレジスタなどに見られる（例えば非特許文献１参照）。
【０００４】
このように拡張演算命令で拡張レジスタを扱うことはできるが、これとは別に、拡張レジスタの読み出しまたは拡張レジスタへの書き込みのために拡張レジスタを対象としたデータ転送が必要になる。このような拡張レジスタへのデータ転送の実現方法として、主に次の３つの方法が知られている。
【０００５】
一つ目は、プリフィックス命令を追加し、プリフィックス命令直後の命令では標準レジスタの代わりに拡張レジスタにアクセスするようにする（例えば特許文献１参照：プリフィックス命令＝接頭部を含む命令）。プリフィックス（prefix）とは、機能を変更したり指示したりするためにオペコードの前に置いて使うコードのことであり、命令プリフィックスともいう。
【０００６】
二つ目は、制御レジスタを設けて標準レジスタと拡張レジスタを切り替え可能にし、レジスタアクセス前に制御レジスタを設定することで、標準レジスタと拡張レジスタのうち所望のレジスタにアクセスできるようにする（例えば特許文献２参照：制御レジスタ＝拡張レジスタ置換え手段）。
【０００７】
三つ目は、標準レジスタと拡張レジスタ間のデータ転送命令を追加する（例えば、非特許文献１のｍｆｈｉ・ｍｆｌｏ命令）。この命令においても拡張レジスタは暗黙的にソース（データ送り元）またはデスティネーション（データ送り先）として用いられる。
【非特許文献１】ジョン・Ｌ・ヘネシー／デイビッド・Ａ・パターソン著『コンピュータの構成と設計 第２版 ［上］』日経ＢＰ社、１９９９年５月１７日（ページ Ｍ−１）
【特許文献１】特表２００４−５０６２６３号公報（第１１−１５頁、第７−１０図）
【特許文献２】特開平２−１４６６２５号公報（第２−３頁、第１−２図）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記した従来技術にはそれぞれ次のような課題がある。
【０００９】
１．＜プリフィックス命令を追加する場合＞
プリフィックス命令を追加する場合、プリフィックス命令を実行しなければならないことによるコードサイズの増加、実行サイクルの増加、またアセンブラやコンパイラの対応が必須になり、トータルの開発工数が増大するなどの問題がある。プリフィックス命令を追加する場合のアセンブラプログラムの例を挙げると、以下のようになる。
【００１０】
ＬＤ  Ｒ０， （乗算第１オペランドのアドレス）
ＰＦＸ
ＬＤ  Ｒ０， （乗算第２オペランドのアドレス）
ＭＵＬ Ｒ０
ＰＦＸ
ＳＴ  Ｒ０， （乗算結果のアドレス）
ここで、「ＰＦＸ」はプリフィックス命令であり、この命令直後のロード命令・ストア命令において、標準レジスタＲｎ（ｎ＝０，１…）の代わりに拡張レジスタＥＲｎ（ｎ＝０，１…）をアクセス対象に切り替える。「ＬＤ Ｒｎ，（アドレス）」は、データメモリの指定されたアドレス番地のデータを標準レジスタＲｎの値に読み込む（ロード）命令を表す。上記の２番目のＬＤ命令（ロード命令）はＰＦＸ命令の直後であるため、実際には拡張レジスタＥＲ０にロードされる。「ＳＴ Ｒｎ，（アドレス）」は、標準レジスタＲｎの値をデータメモリの指定されたアドレス番地に書き込む（ストア）命令を表す。ここではＰＦＸ命令の直後であるため、実際には拡張レジスタＥＲ０がストアされる。「ＭＵＬ Ｒｎ」は乗算命令であり、乗算（Ｒｎ×ＥＲ０）の結果を拡張レジスタＥＲ０に格納する。拡張レジスタＥＲ０は乗算専用レジスタとして固定的に使用され、命令中で指定することはできない。この手法によると、ＭＵＬ命令（乗算命令）で使用される拡張レジスタＥＲ０へのロード命令・ストア命令の直前にＰＦＸ命令が必要になり、この命令分のコードサイズの増加・実行サイクルの増加という問題がある。
【００１１】
２．＜制御レジスタを設ける場合＞
制御レジスタを設ける場合は、レジスタアクセス前に制御レジスタを設定する必要があるため、実行サイクルが増加するという問題がある。制御レジスタを設ける場合のアセンブラプログラムの例を挙げると、以下のようになる。
【００１２】
ＬＤ  Ｒ０， （乗算第１オペランドのアドレス）
ＭＯＶ Ｒ１， １
ＳＴ  Ｒ１， （制御レジスタのアドレス）
ＬＤ  Ｒ０， （乗算第２オペランドのアドレス）
ＭＵＬ Ｒ０
ＳＴ  Ｒ０， （乗算結果のアドレス）
ここで、「ＭＯＶ Ｒｎ， 値」は、標準レジスタＲｎに指定された値を代入する命令を表す。また、制御レジスタは“０”または“１”の値をとり、制御レジスタが“１”のときには、ＬＤ命令またはＳＴ命令（ストア命令）において、標準レジスタＲｎの代わりに拡張レジスタＥＲｎにアクセスすることを示す。この手法によると、乗算第２オペランドを拡張レジスタＥＲ０にロードする前に、制御レジスタに“１”を設定するための命令が必要になり、この命令分のコードサイズの増加・実行サイクルの増加という問題がある。
【００１３】
３．＜標準レジスタと拡張レジスタ間のデータ転送命令を追加する＞
標準レジスタと拡張レジスタ間のデータ転送命令を追加する場合は、拡張レジスタにロード・ストアしたいときに、いったん標準レジスタにロード・ストアする必要があるため、実行サイクルが増加する、またそのときに使用された標準レジスタの値が破壊されるという問題がある。制御レジスタを設ける場合のアセンブラプログラムの例を挙げると、以下のようになる。
【００１４】
ＬＤ        Ｒ０， （乗算第１オペランドのアドレス）
ＬＤ        Ｒ１， （乗算第２オペランドのアドレス）
ＳＴＥＲ０ Ｒ１
ＭＵＬ     Ｒ０
ＬＤＥＲ０ Ｒ０
ＳＴ       Ｒ０， （乗算結果のアドレス）
「ＬＤＥＲ０ Ｒｎ」は、標準レジスタＲｎの値を拡張レジスタＥＲ０に代入する命令を表す。「ＳＴＥＲ０ Ｒｎ」は、拡張レジスタＲ０の値を標準レジスタＲｎに代入する命令を表す。この手法によると、乗算第２オペランドのアドレスをいったん標準レジスタＲ１にロードする必要があるため、標準レジスタＲ１の値が破壊され（ＬＤＥＲ０により標準レジスタＲ０の値も破壊される）、ＳＴＥＲ０とＬＤＥＲ０命令分のコードサイズの増加・実行サイクルの増加という問題がある。
【００１５】
本発明は、このような事情に鑑みて創作したものであり、命令追加や命令フォーマット変更を行わず、かつ制御レジスタを明示的に設定することなく、標準レジスタアクセスと同等の実行サイクル・命令数で拡張レジスタにアクセスすることが可能な情報処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１６】
（１）本発明による情報処理装置は、
命令を格納する命令メモリと、
データを格納するデータメモリと、
前記命令メモリから読み出された命令に従って制御信号を生成する命令制御部と、
前記命令制御部による前記制御信号に従って前記データメモリに対してアクセスを行うロード・ストアユニットと、
前記命令制御部による前記制御信号に従って演算を行う演算器と、
前記演算器で用いるデータを格納する標準レジスタ群と、
前記演算器で用いるデータを格納する拡張レジスタ群と、
選択信号により前記標準レジスタ群と前記拡張レジスタ群とのいずれかを選択する選択手段と、
前記選択手段に対し前記選択信号を出力する選択条件判定手段とを備え、
前記選択条件判定手段は、装置内部の特定の状態信号に基づいて前記選択信号を生成するように構成されているものである。
【００１７】
すなわち、標準レジスタ群と拡張レジスタ群とのいずれかを選択する選択手段を設け、さらに選択手段を制御するための選択信号を生成出力する選択条件判定手段を設け、この選択条件判定手段はさらに装置内部の特定の状態信号に基づいて選択信号を生成するように構成されている点に特徴がある。
【００１８】
この構成によれば、選択条件判定手段が装置内部の特定の状態信号から選択手段に対する選択信号を生成し、選択手段がその選択信号に応じて標準レジスタ群と拡張レジスタ群とのいずれかを選択することになる。この場合、命令コードの追加や拡張は必要でない。また、明示的なレジスタ切り替えのための追加の実行サイクルは消費しないですむ。したがって、標準レジスタアクセスと同等の実行サイクル・命令数で拡張レジスタにアクセスすることが可能となる。
【００１９】
（２）上記（１）の構成の情報処理装置において、前記選択条件判定手段は、メモリアクセスが発生する命令実行時に前記ロード・ストアユニットで生成されるアドレスを用いて前記選択信号を生成するという態様がある。この構成によれば、データメモリへのアクセスが発生する命令で、そのデータが位置するアドレスに応じて標準レジスタ群と拡張レジスタ群のいずれか一方を選択することが可能となる。すなわち、命令コードの追加や拡張を行うことなく、また明示的なレジスタ切り替えのための追加の実行サイクルを消費することなく、標準レジスタアクセスと同等の実行サイクル・命令数で拡張レジスタにアクセスすることが可能となる。
【００２０】
（３）上記（１）の構成の情報処理装置において、前記選択条件判定手段は、過去に実行された命令の履歴情報を保持する命令履歴保持手段を備え、前記命令履歴保持手段が保持する命令の履歴情報を基に前記選択信号を生成するという態様がある。例えば、命令履歴保持手段はステートマシンで構成され、ロードされた命令コードの任意のビットを用いてステートマシンの状態が遷移したときに、そのステートマシンの状態により選択信号を生成する。この構成によれば、レジスタを切り替えたい命令の１命令以上前に配置された命令列が特定の並びか否かに応じて標準レジスタ群と拡張レジスタ群のいずれか一方を選択することが可能となる。
【００２１】
ところで、上記（３）の構成では、特定の命令列が発生するように命令コードを配置したとしても、割り込み処理が発生すると、割り込み処理の命令コードが途中で実行されるため、特定の命令列が検出できなくなる。そこで、次のように対応する。
【００２２】
（４）上記（３）の構成の情報処理装置において、前記命令履歴保持手段は、割り込み処理開始時に、過去に実行された命令の履歴情報を退避し、割り込み復帰時に前記命令の履歴情報を復帰させるという態様がある。この構成によれば、割り込み処理が発生しても、レジスタ切り替えを行いたい命令の前に配置された特定の命令列が検出されることを保証するので、特定命令列を検出してレジスタを自動的に選択することが可能となる。
【００２３】
（５）上記（１）の構成の情報処理装置において、パイプライン方式で動作する情報処理装置として構成され、前記命令制御部は命令情報を生成するように構成され、さらに各パイプラインステージに対応した前記命令情報を保持する命令情報保持手段を備え、前記選択条件判定手段は、前記命令情報保持手段に保持されている前記命令情報を用いて前記選択信号を生成するように構成されているという態様がある。この構成によれば、情報処理装置は命令パイプライン方式であり、選択条件判定手段は各パイプラインステージの命令情報保持手段に保持している命令情報（命令コードまたは命令デコード結果）を用いて選択信号を生成する。したがって、レジスタを切り替えたい命令の１命令以上後に配置された命令列が特定の並びか否かにより、標準レジスタ群と拡張レジスタ群のいずれか一方を選択することが可能となる。上記の（３）の場合は「１命令以上前」であるのに対し、この項（５）では「１命令以上後」となっている。
【００２４】
ところで、上記（５）の構成では、特定の命令列が発生するように命令コードを配置したとしても、割り込み処理が発生すると、割り込み処理の命令コードが命令パイプラインに保持されるため、特定の命令列が検出できなくなる。そこで、次のように対応する。
【００２５】
（６）上記（５）の構成の情報処理装置において、さらに、過去に実行された命令の履歴情報を保持する命令履歴保持手段を備え、前記命令履歴保持手段は、過去に実行された命令の特定の並びを検出し割り込み処理を禁止するという態様がある。この構成によれば、各パイプラインステージ中の命令が特定の命令列であることを検出中は割り込み処理を禁止するので、レジスタ切り替えのトリガとなる特定の命令列に至るまでの間は割り込みを禁止し、最終的に特定の命令列が検出されることを保証することが可能になる。したがって、レジスタ切り替えを行いたい命令の後に配置された特定命令列を検出してレジスタを自動的に選択することが可能となる。
【発明の効果】
【００２６】
本発明によれば、標準レジスタ群と拡張レジスタ群とのいずれかを選択する選択手段を設け、さらに選択手段を制御するための選択信号を装置内部の特定の状態信号から生成する選択条件判定手段を設けたので、命令コードの追加や拡張を行うことなく、また明示的なレジスタ切り替えのための追加の実行サイクルを消費することなく、標準レジスタアクセスと同等の実行サイクル・命令数で拡張レジスタにアクセスすることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明にかかわる情報処理装置の実施の形態を図面を用いて詳細に説明する。
【００２８】
（実施の形態１）
＜構成＞
図１は本発明の実施の形態１における情報処理装置としてのマイコンの内部の構成を示すブロック図である。同図において、１は命令を格納する命令メモリ、２は命令メモリ１から読み出された命令を一時的に保持する命令レジスタ、３は命令レジスタ２の値をデコードし適切な制御信号を生成する命令デコーダ、４は命令レジスタ２と命令デコーダ３を構成要素とする命令制御部、Ａ１は制御信号を含む命令デコード結果、５は命令制御部４による制御信号に従って演算を行うもので標準レジスタ群７は使用するが拡張レジスタ群８は使用しない演算器、６は命令制御部４による制御信号に従って演算を行うもので標準レジスタ群７および拡張レジスタ群８を使用する演算器、７は標準レジスタ群、８は拡張レジスタ群、９はデータを格納するデータメモリ、１０は命令制御部４による制御信号に従ってデータメモリ９に対してアクセスを行うロード・ストアユニット、Ａ２はデータメモリアクセス発生時のメモリアドレス、１１は演算結果・メモリデータ・レジスタの値を各機能ブロック間でやり取りするためのデータバス、１２は選択信号Ａ３に従って標準レジスタ群７と拡張レジスタ群８のいずれか一方を選択する選択手段、１３はロード・ストアユニット１０がデータメモリ９へアクセスするときのアドレスＡ２から選択信号Ａ３を生成する選択条件判定手段、Ａ３は標準レジスタ群７と拡張レジスタ群８のいずれか一方を選択することを示す選択信号、Ａ４は各レジスタへのリードイネーブル信号／リードデータ／ライトイネーブル信号／ライトデータである。
【００２９】
この例では、標準レジスタ群７はＲ０〜Ｒ３の４個の標準レジスタから構成され、拡張レジスタ群８はＥＲ０〜ＥＲ３の４個の拡張レジスタから構成されている。基本的に、命令コード中のレジスタ指定フィールドにより標準レジスタＲ０〜Ｒ３が指定される。データメモリ９にアクセスする命令では、選択信号Ａ３により拡張レジスタ側を指定する。選択手段１２は、命令コード中のレジスタ指定フィールドで標準レジスタＲ０が指定されたときは拡張レジスタＥＲ０を選択し、標準レジスタＲ１が指定されたときは拡張レジスタＥＲ１を選択する、というように対応する拡張レジスタを選択するように構成されている。拡張レジスタ群８に含まれるレジスタの個数は、標準レジスタ群７に含まれるレジスタの個数より多くてもよいし少なくてもよい。標準レジスタ群７に対応する拡張レジスタ群８が２つ以上の場合、選択信号Ａ３は３つ以上の状態を表現可能な信号になり、選択手段１２は１つの標準レジスタ群７と２つ以上の拡張レジスタ群８から１つを選択する。
【００３０】
命令レジスタ２にロードされた命令がデータメモリアクセスを発生させる命令の場合、ロード・ストアユニット１０を適切に制御することでデータメモリ９へのアクセスを行うが、その際、アドレスＡ２にはアクセス対象となるメモリアドレスが出力される。命令メモリ１とデータメモリ９は独立した２つのメモリであっても、共通の１つのメモリであってもよい。
【００３１】
選択条件判定手段１３は、ロード・ストアユニット１０によるデータメモリアクセス時のアドレスＡ２が入力され、そのアドレスＡ２の一部または全ビットを使用して選択信号Ａ３を生成する。選択手段１２は、選択条件判定手段１３から選択信号Ａ３を受け、選択信号Ａ３の値に応じて標準レジスタＲ０〜Ｒ３と拡張レジスタＥＲ０〜ＥＲ３のいずれか一方を選択する。レジスタリード時には、選択手段１２は、標準レジスタ群７と拡張レジスタ群８のいずれか一方のリードイネーブル信号Ａ４を有効にする。これにより、命令で指定されたレジスタから読み出されたデータをデータバス１１に出力する。また、レジスタライト時には、選択手段１２は、標準レジスタ群７と拡張レジスタ群８のいずれか一方のライトイネーブル信号Ａ４を有効にする。これにより、データバス１１のデータが命令で指定されたレジスタにライトされる。
【００３２】
以上のように構成することにより、特定範囲のアドレスに対するメモリアクセスが発生する命令（ロード命令・ストア命令等）の実行時には拡張レジスタをアクセス対象とし、それ以外のアドレスに対するメモリアクセスが発生する命令実行時には標準レジスタをアクセス対象とすることが可能となる。
【００３３】
＜動作＞
メモリアドレス空間（“０ｘ００００”〜“０ｘＦＦＦＦ”番地とする）の“０ｘ８０００”番地以降のアドレスにアクセスするときには、拡張レジスタにアクセスするものとする。データメモリ９上のデータの乗算を行い、結果をデータメモリ９にストアするアセンブラプログラムは、以下のようになる。
【００３４】
ＬＤ  Ｒ０， （０ｘ００００）
ＬＤ  Ｒ０， （０ｘ９０００）
ＭＵＬ Ｒ０
ＳＴ Ｒ０， （０ｘ９０００）
この場合の動作波形例を図２に基づいて説明する。この例では、選択信号Ａ３は１ビットとし、拡張レジスタを選択する場合は選択信号Ａ３を“１”にするものとする。
【００３５】
時刻ｔ＝ｔ１において、命令レジスタ２に命令「ＬＤ Ｒ０，（０ｘ００００）」がロードされ、時刻ｔ＝ｔ２においてアドレスＡ２にはロードアドレスである“０ｘ００００”が出力される。アドレスＡ２の値が“０ｘ８０００”未満であるため、選択信号Ａ３として“０”が出力され、レジスタへのライトイネーブル信号Ａ４により標準レジスタ群７側が有効になる。データバス１１にはデータメモリ９のアドレス“０ｘ００００”番地のデータが出力されているので、結果としてデータメモリ９のアドレス“０ｘ００００”番地のデータが標準レジスタＲ０にロードされる。
【００３６】
時刻ｔ＝ｔ２において、命令レジスタ２に命令「ＬＤ Ｒ０，（０ｘ９０００）」がロードされ、時刻ｔ＝ｔ３において、アドレスＡ２にはロードアドレスである“０ｘ９０００”が出力される。アドレスＡ２の値が“０ｘ８０００”以上であるため、選択信号Ａ３として“１”が出力され、レジスタへのライトイネーブル信号Ａ４により拡張レジスタ群８側が有効になる。データバス１１にはデータメモリ９のアドレス“０ｘ９０００”番地のデータが出力されているので、結果としてデータメモリ９のアドレス“０ｘ９０００”番地のデータが拡張レジスタＥＲ０にロードされる。
【００３７】
時刻ｔ＝ｔ３において、命令レジスタ２に命令「ＭＵＬ Ｒ０」がロードされ、時刻ｔ＝ｔ４において、乗算（Ｒ０×ＥＲ０）の結果が拡張レジスタＥＲ０に代入される。
【００３８】
時刻ｔ＝ｔ４において、命令レジスタ２に命令「ＳＴ Ｒ０，（０ｘ９０００）」がロードされ、時刻ｔ＝ｔ５において、アドレスＡ２にはストア先アドレスである“０ｘ９０００”が出力される。アドレスＡ２の値が“０ｘ８０００”以上であるため、選択信号Ａ３として“１”が出力され、データバス１１には拡張レジスタＥＲ０の値が出力され、データメモリ９には拡張レジスタＥＲ０の値がストアされる。
【００３９】
この例のように、命令コード中では標準レジスタＲ０が指定されているにもかかわらず、実際には拡張レジスタＥＲ０をアクセス対象とすることができる。これが本発明の大きなポイントである。すなわち、マイコンに新たな命令の追加や命令フォーマットの変更を行うことなく、拡張レジスタにアクセスすることができる。
【００４０】
ただし、“０ｘ９０００”番地のデータを標準レジスタにロードしたい場合でも、この実施例の範疇ではできない。この手法は、メモリ上の同一データが異なる２つ以上のＣＰＵアドレス領域にミラーリングされている場合に適している。ミラーリングは、同一の物理メモリを複数のアドレス空間にマッピングする方式である。この実施例においてアドレス“０ｘ００００”〜“０ｘ７ＦＦＦ”番地と同じデータがアドレス“０ｘ８０００”〜“０ｘＦＦＦＦ”番地にミラーリングされているならば、“０ｘ９０００”番地のデータは「ＬＤ Ｒ０， （０ｘ１０００）」によって標準レジスタＲ０にロードすることが可能である。
【００４１】
（実施の形態２）
＜構成＞
図３は実施の形態２における情報処理装置としてのマイコンの内部の構成を示すブロック図である。符号の１〜１３については実施の形態１と同じであるので、その説明を省略する。１４は過去に実行された命令の履歴情報を保持する命令履歴保持手段である。選択条件判定手段１３は、命令履歴保持手段１４が保持する命令の履歴情報を基に選択信号Ａ３を生成するように構成されている。
【００４２】
本実施の形態において、命令履歴保持手段１４には命令デコーダ３による命令デコード結果Ａ１が入力され、命令履歴保持手段１４は過去に実行された命令の履歴を保持し、選択条件判定手段１３は命令履歴保持手段１４に保持されている命令の履歴情報を基に選択信号Ａ３を生成する。実施の形態１の場合のロード・ストアユニット１０から選択条件判定手段１３へのアドレスＡ２の送出はない。命令履歴保持手段１４の実装の態様としては、ステートマシンや単純に１命令前の命令情報を保持することなどが考えられる。ここでの命令とは、プリフィックス命令などの特殊な命令に限らず、演算・データ転送命令等の通常の命令も含む。
【００４３】
この構成により、レジスタ切り替えを行いたい命令の前に位置する命令の、特定の命令シーケンスを検出し、その結果を基に選択信号Ａ３を生成することが可能になる。これは、ある演算命令（例えば乗除算）が拡張レジスタを暗黙的に使用する場合などに適しており、乗除算命令実行後に最初に実行されるＳＴ命令では、（乗除算用の）拡張レジスタをストア対象とすることが可能になる。
【００４４】
＜動作＞
実施の形態２において、
命令１
命令２
ＭＵＬ Ｒ０
命令３
命令４
ＳＴ Ｒ０， （０ｘ００００）
命令５
というアセンブラ命令で表現される命令を連続実行する場合の動作波形例を図４〜図６に基づいて説明する。
【００４５】
「命令ｎ」（ｎ＝０，１…）はＭＵＬ命令（乗算命令）とＳＴ命令（ストア命令）以外の意味のある命令である。一連の乗算処理のためには必要ないが、説明の都合上置かれている。その他の命令については、すでに説明済みなので、その説明を省略する。
【００４６】
この命令列の目的は、「乗算を行い、その結果をメモリアドレス“０ｘ００００”番地にストアする」である。ＳＴ命令に直接拡張レジスタＥＲ０を指定することはできないが、この例では、ＭＵＬ命令が実行されて以降に最初に実行されるＳＴ命令では、標準レジスタの代わりに拡張レジスタを選択する。
【００４７】
この条件では、選択条件判定手段１３は図４に示すステートマシンで実装することができる。このステートマシンは初期状態でＳ０ステートであり、ＭＵＬ命令が検出されるまでＳ０ステートであり続ける。Ｓ０ステートでＭＵＬ命令が検出されるとＳ１ステートに遷移し、ＳＴ命令が検出されるまでＳ１ステートであり続ける。Ｓ１ステートでＳＴ命令が検出されるとＳ０ステートに遷移する。また選択信号Ａ３は、「ステートがＳ１かつＳＴ命令」のときに“１”を出力する。
【００４８】
このときの動作波形を図５に基づいて説明する。
【００４９】
時刻ｔ＝ｔ１，ｔ２では、命令レジスタ２にロードされる命令がＭＵＬ命令ではないため、ステートはＳ０のままである。
【００５０】
時刻ｔ＝ｔ３において、命令レジスタ２にＭＵＬ命令がロードされたため、次のクロックでステートはＳ１に遷移する。
【００５１】
時刻ｔ＝ｔ４，ｔ５では、命令レジスタ２にロードされる命令がＳＴ命令ではないため、ステートはＳ１のままである。
【００５２】
時刻ｔ＝ｔ６において、命令レジスタ２に命令「ＳＴ Ｒ０，（０ｘ００００）」がロードされると、選択条件判定手段１３は「ステートがＳ１かつＳＴ命令」であることを検出したため、次のクロックで選択信号Ａ３として“１”が出力され、データバス１１には拡張レジスタＥＲ０の値が出力される（時刻ｔ７）。その結果、データメモリ９のアドレス“０ｘ００００”番地に拡張レジスタＥＲ０の値がライトされる。またステートはＳ０に遷移する。
【００５３】
この例のＳＴ命令のように、命令コード中では標準レジスタＲ０が指定されているにもかかわらず、実際には拡張レジスタＥＲ０をアクセス対象とすることができる。
【００５４】
また、ＳＴ命令とＭＵＬ命令の間に途中で割り込み処理が入り、割り込み中の処理で何度かＳＴ命令が実行される場合の動作波形を図６に基づいて説明する。
【００５５】
時刻ｔ＝ｔ１，ｔ２では、ＭＵＬ命令ではないため、ステートはＳ０のままである。
【００５６】
時刻ｔ＝ｔ３においてＭＵＬ命令が検出されたため、ｔ＝ｔ４においてステートはＳ１に遷移する。
【００５７】
時刻ｔ＝ｔ４ではＳＴ命令ではないため、ステートはＳ１のままである。
【００５８】
時刻ｔ＝ｔ５において割り込み処理が開始されると、現在のステートＳ１が退避され、ステートはＳ０にセットされる。これ以降時刻ｔ＝ｔ５〜ｔ７までＳＴ命令が実行されるが、ステートがＳ０であるため「ステートがＳ１かつＳＴ命令」は成立せず、選択手段１２は標準レジスタ群７側を選択する。
【００５９】
時刻ｔ＝ｔ８において割り込み処理から復帰すると、時刻ｔ＝ｔ５で退避したステートの値Ｓ１が復帰される。
【００６０】
時刻ｔ＝ｔ９において、命令レジスタ２に命令「ＳＴ Ｒ０，（０ｘ００００）」がロードされると、選択条件判定手段１３は「ステートがＳ１かつＳＴ命令」であることを検出する。したがって、次のクロックで選択信号Ａ３として“１”が出力され、データバス１１には拡張レジスタＥＲ０の値が出力される。結果、データメモリ９のアドレス“０ｘ００００”番地に拡張レジスタＥＲ０の値がライトされる（時刻ｔ１０）。またステートはＳ０に遷移する。
【００６１】
このように、ＭＵＬ命令〜ＳＴ命令の間で割り込み処理により追加の命令が実行されても、「ＭＵＬ命令が実行されて以降に最初に実行されるＳＴ命令」の命令列を検出することができる。
【００６２】
（実施の形態３）
＜構成＞
図７は実施の形態３におけるパイプライン方式の情報処理装置としてのマイコンの内部の構成を示すブロック図である。この例では一般的な５段パイプライン方式のマイコンを想定しており、ＩＦ（Instruction Fetch：命令フェッチステージ）、ＩＤ（Instruction Decode：命令デコードステージ）、ＥＸ（Instruction Execution：実行ステージ）、ＭＡ（Memory Access：メモリアクセスステージ）、ＷＢ（Write/store Back：ライトバックステージ）の５ステージからなる。符号の１〜１３については実施の形態１と同じであるので、その説明を省略する。２１〜２３は各ステージで保持されている命令デコード結果レジスタ、２０は３つの命令デコード結果レジスタ２１〜２３からなる命令情報保持手段、２４は演算に使用するデータを保持するレジスタ、２５は演算器５の演算結果を保持するレジスタ、２６は演算結果２５かデータメモリ９のリードデータのいずれかを保持するレジスタ、Ａ５は命令履歴保持手段１４が出力する割り込み許可・禁止信号である。
【００６３】
各パイプラインステージの動作について説明する。
【００６４】
命令フェッチステージ（ＩＦ）では、命令メモリ１から命令コードをフェッチし（取り出し）、命令レジスタ２に格納する。
【００６５】
命令デコードステージ（ＩＤ）では、命令レジスタ２の命令コードを命令デコーダ３でデコードし、結果を命令情報保持手段２０におけるデコード済み命令２１に格納する。また、後段の実行ステージ（ＥＸ）での演算に使用するオペランドを演算オペランド２４に格納する。
【００６６】
実行ステージ（ＥＸ）では、演算器５または演算器６を用いて演算を行い、演算結果２５に格納する。ロード命令・ストア命令でのアドレス演算もこのステージで行われる。どのような演算を行うかは、デコード済み命令２１により指示される。またデコード済み命令２１の内容はデコード済み命令２２に渡される。
【００６７】
メモリアクセスステージ（ＭＡ）では、データメモリ９に対するロード・ストアを行う。アドレスは演算結果２５に格納されている。ロード命令の場合は、データメモリ９からのリードデータが書き戻しデータ２６に格納され、それ以外の（算術演算等の）命令では演算結果２５のデータが書き戻しデータ２６に保持される。またデコード済み命令２２の内容はデコード済み命令２３に渡される。
【００６８】
ライトバックステージ（ＷＢ）では、書き戻しデータ２６のデータを標準レジスタまたは拡張レジスタのいずれかのレジスタに書き込む。
【００６９】
マイコンのパイプライン段数は５段とは限らず、選択条件判定手段１３はライトバックステージ（ＷＢ）に位置するとは限らない。また選択手段１２は標準レジスタ群７、拡張レジスタ群８への書き込みに限らず、読み出しも制御できる。
【００７０】
この構成により、選択条件判定手段１３は、ライトバックステージ（ＷＢ）で実行される命令を命令デコード結果２３から得ることができるとともに、その１〜２命令後に実行される命令を命令デコード結果２１〜２２から得ることができる。そのため、レジスタ切り替えを行いたい命令の後に位置する命令の、特定の命令シーケンスを検出し、その結果を基に選択信号Ａ３を生成することが可能になる（実施の形態２では、レジスタ切り替えを行いたい命令の「前」に位置する命令の、特定の命令シーケンスを検出することに注意。）。
【００７１】
これは、ある演算命令（例えば乗除算）が拡張レジスタを暗黙的に使用する場合などに適しており、乗除算命令の１または２命令前に実行されるロード命令では、（乗除算用の）拡張レジスタをロード対象とすることが可能になる。
【００７２】
＜動作＞
実施の形態３において、
ＬＤ  Ｒ０， （０ｘ００００）
命令１
ＭＵＬ Ｒ０
というアセンブラ命令で表現される命令を連続実行する場合の動作波形例を図８に基づいて説明する。
【００７３】
「命令ｎ」はＭＵＬ命令とＬＤ命令以外の意味のある命令である。一連の乗算処理のためには必要ないが、説明の都合上置かれている。その他の命令の動作についてはすでに説明済みなので、その説明を省略する。
【００７４】
この命令列の目的は、「乗算を行う前に、メモリアドレス“０ｘ００００”番地のデータを拡張レジスタＥＲ０にロードする」である。ＬＤ命令に直接拡張レジスタＥＲ０を指定することはできないが、この例では、ＭＵＬ命令の１〜２命令前に実行されるＬＤ命令では、標準レジスタの代わりに拡張レジスタを選択する。
【００７５】
この例における動作を図８を用いて説明する。
【００７６】
時刻ｔ＝ｔ１の命令デコードステージ（ＩＤ）で、命令レジスタ２にＬＤ命令がロードされると、命令デコーダ３によりデコードされ、そのデコード結果が時刻ｔ＝ｔ２にデコード済み命令２１に保持される。
【００７７】
時刻ｔ＝ｔ２の実行ステージ（ＥＸ）で、演算器６によりＬＤ命令のロード元メモリアドレスが計算され、その結果が時刻ｔ＝ｔ３に演算結果２５に保持される。それと同時に、デコード済み命令２１の内容がデコード済み命令２２に保持される。
【００７８】
時刻ｔ＝ｔ３のメモリアクセスステージ（ＭＡ）で、演算結果２５の値（ＬＤ命令のアドレスである）がデータメモリ９のアドレスＡ２に出力され、時刻ｔ＝ｔ４にメモリリードデータが書き戻しデータ２６に保持される。それと同時に、デコード済み命令２２の内容がデコード済み命令２３に保持される。
【００７９】
一方、ＭＵＬ命令に着目すると、ＭＵＬ命令は時刻ｔ＝ｔ３で命令レジスタ２１にロードされ、時刻ｔ＝ｔ４でデコード済み命令２２に保持される。
【００８０】
すなわち、時刻ｔ＝ｔ４では、デコード済み命令２３はＬＤ命令を示しており、デコード済み命令２１はＭＵＬ命令を示している。このことから、選択条件判定手段１３は時刻ｔ＝ｔ４において、この時刻にライトバックステージ（ＷＢ）で実行される命令がＬＤ命令であることと、そのＬＤ命令はＭＵＬ命令の２命令前に位置することが判定できることから、「ＭＵＬ命令の１〜２命令前に実行されるＬＤ命令」の条件に合致することになる。したがって、選択信号Ａ３に“１”を出力することで、レジスタへのライトイネーブル信号Ａ４は拡張レジスタ群８側が有効になる。同時にデータバス１１には書き戻しデータ２６の値（これはデータメモリアドレス“０ｘ００００”番地のデータである）が出力されていることから、時刻ｔ＝ｔ５でデータメモリアドレス“０ｘ００００”番地のデータが拡張レジスタＥＲ０にロードされる。
【００８１】
この例のＬＤ命令のように、命令コード中では標準レジスタＲ０が指定されているにもかかわらず、実際には拡張レジスタＥＲ０をアクセス対象とすることができる。
【００８２】
ただし、割り込み処理により、ＬＤ命令とＭＵＬ命令の間に２命令以上の命令が実行されると、「ＭＵＬ命令の１〜２命令前に実行されるＬＤ命令」であることを認識できない。したがって、実施の形態２で説明した命令履歴保持手段１４より割り込み許可・禁止信号Ａ５を出力することにより、ＬＤ命令を認識してからＭＵＬ命令を認識するまでの期間、割り込みを禁止する。
【産業上の利用可能性】
【００８３】
本発明の情報処理装置は、命令コードの追加や拡張を行うことなくレジスタ数拡張を行うことができ、拡張前の情報処理装置との高い互換性を保つことが可能な情報処理装置として有用である。
【００８４】
また、明示的なレジスタ切り替えのための追加の実行サイクルを消費することなく、標準レジスタアクセスと同等の実行サイクル・命令数で拡張レジスタにアクセスすることが可能となるので、レジスタを拡張しながらコードサイズ・実行サイクルが拡張前の情報処理装置と比べて増加しない情報処理装置として有用である。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の形態１の情報処理装置としてのマイコンの内部の構成を示すブロック図
【図２】本発明の実施の形態１のタイミングチャート
【図３】本発明の実施の形態２の情報処理装置としてのマイコンの内部の構成を示すブロック図
【図４】本発明の実施の形態２における命令シーケンス判定回路の状態遷移図
【図５】本発明の実施の形態２のタイミングチャート（その１）
【図６】本発明の実施の形態２のタイミングチャート（その２）
【図７】本発明の実施の形態３の情報処理装置としてのマイコンの内部の構成を示すブロック図
【図８】本発明の実施の形態３のタイミングチャート
【符号の説明】
【００８６】
１  命令メモリ
２  命令レジスタ
３  命令デコーダ
４  命令制御部
５  拡張レジスタ群を使用しない演算器
６  拡張レジスタ群を使用する演算器
７  標準レジスタ群
８  拡張レジスタ群
９  データメモリ
１０  ロード・ストアユニット
１１  データバス
１２  選択手段
１３  選択条件判定手段
１４  命令履歴保持手段
２０  命令情報保持手段
２１〜２３  各ステージで保持されている命令デコード結果レジスタ
２４  演算器５で使用するデータを保持するレジスタ
２５  演算器５の演算結果を保持するレジスタ
２６  演算結果２５かデータメモリ９のリードデータのいずれかを保持するレジスタ
Ａ１  命令デコード結果（制御信号）
Ａ２  メモリアドレス
Ａ３  選択信号
Ａ４  各レジスタへのリードイネーブル信号／リードデータ／ライトイネーブル信号／ライトデータ
Ａ５  割り込み許可・禁止信号
【図１】
2010092273.tif 000003
【図２】
2010092273.tif 000004
【図３】
2010092273.tif 000005
【図４】
2010092273.tif 000006
【図５】
2010092273.tif 000007
【図６】
2010092273.tif 000008
【図７】
2010092273.tif 000009
【図８】
2010092273.tif 000010