(57)【要約】【課題】  同一の命令コードを各種データ長のデータを処理対象とする各命令として解釈するようにしたマイクロプロセッサを提供する。【解決手段】  マイクロセッサのデコード部にデータ長選択用情報を保持するデータ長保持回路を設け、レジスタＲ１に８ビットの即値データを格納する命令等の汎用レジスタに格納したデータのデータ長を特定する命令を予め第１種命令として定めておき、データ長を明示的に特定しない命令つまり各種データ長のデータを処理対象とし得る命令であって、汎用レジスタに格納されているデータを処理対象とする命令を、予め第２種命令として定めておき、デコード部は、第１種命令をデコードする際にその第１種命令に応じてデータ長選択用情報を更新し、第２種命令については、データ長選択用情報を参照することによりデータ長を特定してその第２種命令をデコードする。【選択図】  図１
2007122626.tif 000002
【特許請求の範囲】
【請求項１】
命令を逐次読み込んで解釈し実行するマイクロプロセッサであって、
処理対象データのデータ長を示すデータ長選択用情報を保持する保持手段と、
逐次、各命令について、当該命令に呼応して行うべき命令実行処理の内容を特定する命令解釈処理を行うデコード手段と、
各命令について、命令解釈処理の結果に従って命令実行処理を行う実行手段とを備え、
前記デコード手段は、
(a）第１種命令について命令解釈処理を行うときに当該第１種命令に基づいて前記保持手段に保持される前記データ長選択用情報を更新し、
(b) 第２種命令について命令解釈処理を行うときには、前記保持手段に保持されているデータ長選択用情報に応じて、当該第２種命令の処理対象データのデータ長を選択して当該命令解釈処理を行う
ことを特徴とするマイクロプロセッサ。
【請求項２】
前記第１種命令には、一のデータ長のデータをレジスタに格納することを指示するデータ格納命令、及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれ、
前記デコード手段は、いずれかのデータ長のデータをレジスタに格納することを指示する前記各データ格納命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、命令解釈処理対象の当該データ格納命令に係るデータ長を示すものとなるように更新する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記第１種命令には、ｎビットの値をレジスタへ設定することを指示する命令、２ｎビットの値をレジスタに設定することを指示する命令、メモリ中のｎビットのデータをレジスタへと転送することを指示する命令、及びメモリ中の２ｎビットのデータをレジスタへと転送することを指示する命令が含まれ、
前記デコード手段は、
(a) ｎビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、ｎビットを示すものとなるように更新し、
(b) ２ｎビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、２ｎビットを示すものとなるように更新し、
(c) メモリ中のｎビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、ｎビットを示すものとなるように更新し、
(d) メモリ中の２ｎビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、２ｎビットを示すものとなるように更新する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項４】
前記第１種命令であってかつ前記第２種命令であるものには、乗算命令が含まれ、
前記デコード手段は、
前記乗算命令について命令解釈処理を行うときには、前記保持手段内に保持されているデータ長選択用情報に応じて、乗算命令の演算対象となるデータのデータ長を選択して当該命令解釈処理を行い、かつ、その保持されているデータ長選択用情報の示すデータ長を、所定値にするように更新する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項５】
前記データ長選択用情報は、複数のデータ長を選択的に示すものであり、
前記デコード手段は、第１種命令について命令解釈処理を行う毎に、前記データ長選択用情報の示すデータ長を、複数のデータ長のなかでの予め定めた繰り返し順序における、次の順のデータ長にするように更新する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項６】
前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、
前記保持手段は、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、データ長を示すデータ長選択用情報を保持し、
前記第１種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、
前記第２種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、
前記デコード手段は、
(a）第１種命令について命令解釈処理を行うときに、当該第１種命令によりデータの格納が指示されるレジスタに対応するデータ長選択用情報を更新し、
(b) 第２種命令について命令解釈処理を行うときには、当該第２種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記データ長選択用情報に応じて、当該データのデータ長を選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項７】
前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、
前記保持手段は更に、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、命令解釈処理に際してデータ長選択用情報を有効と扱うか無効と扱うかを示す有効性情報を保持し、
前記第１種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、
前記第２種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、
前記デコード手段は、
(a）第１種命令について命令解釈処理を行うときに当該第１種命令に基づいて前記データ長選択用情報を更新するとともに、当該第１種命令によりデータの格納が指示されるレジスタに対応する有効性情報を、有効を示すように更新し、
(b）第３種命令について命令解釈処理を行うときに当該第３種命令に基づいて、あるレジスタに対応する有効性情報を、無効を示すように更新し、
(c) 第２種命令について命令解釈処理を行う場合において、当該第２種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記有効性情報が有効を示すときには前記データ長選択用情報に応じて当該データのデータ長を選択し、当該有効性情報が無効を示すときには所定のデータ長を当該データのデータ長として選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定する
ことを特徴とする請求項１記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、特に命令解釈方式に関する。
【背景技術】
【０００２】
従来、解釈実行可能な命令セットに、複数の演算語長それぞれに対応した命令コードを含むマイクロプロセッサが広く利用されている。
演算語長は、命令における処理対象データのデータ長であり、命令コード毎に定められる。
例えば、２つのレジスタそれぞれに格納された数値データを加算して結果をあるレジスタに格納する処理を指定する場合において、その数値データを１バイトのデータとして処理するときと、２バイトのデータとして処理するときと、４バイトのデータとして処理するときとでは、それぞれ異なる命令コードにより指定可能になる。
【０００３】
このように、ある程度同様の処理内容にもかかわらず、処理対象データのデータ長別に複数の命令コードを必要とすることは、固定長命令フォーマットの場合において命令セットに、多様な命令つまり多くの種類の命令を含めることの妨げになる点で、好ましいことではない。
この問題の解決に関連する技術として、命令によりアクセスするデータメモリのアドレス範囲とデータ長との関係を予め設定しておいて、命令コードが同一であってもデータメモリへ出力するアドレスに基づいてデータ長を切り替えて命令解釈（デコード）を行うマイクロプロセッサが提案されている（特許文献１参照）。
【０００４】
このマイクロプロセッサによれば、同一の命令コードを、各種データ長のデータを処理対象とする各命令として解釈することが可能になるため、命令コード中にデータ長を識別するためのビットフィールドを設ける必要がなくなる。
【特許文献１】特開２００４−２０６２１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上述の特許文献１に記載された技術とは異なる方式で、同一の命令コードを各種データ長のデータを処理対象とする各命令として解釈するようにしたマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係るマイクロプロセッサは、命令を逐次読み込んで解釈し実行するマイクロプロセッサであって、処理対象データのデータ長を示すデータ長選択用情報を保持する保持手段と、逐次、各命令について、当該命令に呼応して行うべき命令実行処理の内容を特定する命令解釈処理を行うデコード手段と、各命令について、命令解釈処理の結果に従って命令実行処理を行う実行手段とを備え、前記デコード手段は、(a）第１種命令について命令解釈処理を行うときに当該第１種命令に基づいて前記保持手段に保持される前記データ長選択用情報を更新し、(b) 第２種命令について命令解釈処理を行うときには、前記保持手段に保持されているデータ長選択用情報に応じて、当該第２種命令の処理対象データのデータ長を選択して当該命令解釈処理を行うことを特徴とする。
【発明の効果】
【０００７】
上記構成により、本発明に係るマイクロプロセッサは、第２種命令に属する１つの命令をデコードする場合において、その前に第１種命令をデコードした際に更新されたデータ長選択用情報次第で、その１つの第２種命令の命令コードがどのデータ長のデータを処理対象とする命令であるかを特定してデコードを行うことになる。従って、同一の命令コードを、各種データ長のデータを処理対象とする各命令として解釈することが可能になり、第２種命令については命令コード中に明示的にデータ長を識別するためのビットフィールドを設ける必要がなくなり、そのため、固定長命令フォーマットの場合において命令セットに多様な命令を含め得る余地を広げることができる。
【０００８】
なお、第１種命令のうちには、例えば、メモリから１バイト（８ビット）のデータをあるレジスタに転送する命令や、メモリから２バイト（１６ビット）のデータをあるレジスタに転送する命令等、命令コードにデータ長を識別するためのビットフィールドを含む命令が含まれ得る。
また、本発明に係るマイクロプロセッサは、命令実行処理の段階ではなく、命令解釈処理を行うときにデータ長選択用情報の更新や参照を行うので、例えば、命令読み込み（フェッチ）、命令解釈（デコード）、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採用した場合でも、第１種命令の直後に第２種命令が連続しているときに、第１種命令に応じて更新されたデータ長選択用情報を第２種命令のデコード段階において活用することが可能になる。
【０００９】
また、前記第１種命令には、一のデータ長のデータをレジスタに格納することを指示するデータ格納命令、及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれ、前記デコード手段は、いずれかのデータ長のデータをレジスタに格納することを指示する前記各データ格納命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、命令解釈処理対象の当該データ格納命令に係るデータ長を示すものとなるように更新することとしてもよい。
【００１０】
これにより、例えばメモリの特定箇所のあるバイト数に記憶されているデータを読み出してレジスタへと格納する命令等の、あるデータをレジスタに格納するタイプの各種命令についてデコードを行うことと並行して、その命令に基づいて、特にその命令によりレジスタに設定されるデータのデータ長に基づいて、データ長選択用情報の保持内容を定めて保持内容の更新を行うことになる。即ち、第１種命令は、一般的なデータをレジスタに格納する命令に、データ長選択用情報の更新機能を兼ね備えさせたものとなる。従って、マイクロプロセッサにより解釈実行されるプログラムについてみれば、データ長選択用情報の保持内容を更新することのみを目的とする専用命令等を挿入する必要性を抑えることができる。
【００１１】
また、一般的なプログラムは、局所的にみれば、レジスタにデータを格納する命令の直後又はその少し後に、そのレジスタに格納されたデータを演算や転送等の処理の対象とする命令が実行されるように構成されることが多いため、演算対象のデータ長が選択可能な命令を第２種命令として適切に定めておきさえすれば、基本的には、第２種命令におけるデータ長が適切に選択されるようになる。即ち、演算対象のデータ長毎に別個の命令をマイクロプロセッサが処理可能な命令セット中に設けておく必要がなくなる。
【００１２】
なお、例外的に、処理するデータ長が複雑に混在するプログラム等、データ長が適切に選択されないような構成のプログラムについては、例えば、データ長選択用情報の保持内容を更新することを目的とする専用命令等をプログラム中に設けることにより対応すれば足りる。この場合、マイクロプロセッサがサポートする命令セットとして、第２種命令の数がその専用命令の数より多いようにしておくことにより、このために必要な命令数を抑えることができるので、固定長命令フォーマットを採用した命令セットに、他の多様な命令を含ませ得る余地を増やすことができる。
【００１３】
また、前記第１種命令には、ｎビットの値をレジスタへ設定することを指示する命令、２ｎビットの値をレジスタに設定することを指示する命令、メモリ中のｎビットのデータをレジスタへと転送することを指示する命令、及びメモリ中の２ｎビットのデータをレジスタへと転送することを指示する命令が含まれ、前記デコード手段は、(a) ｎビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、ｎビットを示すものとなるように更新し、(b) ２ｎビットの値をレジスタへ設定することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、２ｎビットを示すものとなるように更新し、(c) メモリ中のｎビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、ｎビットを示すものとなるように更新し、(d) メモリ中の２ｎビットのデータをレジスタへと転送することを指示する命令について命令解釈処理を行うときに、前記保持手段内のデータ長選択用情報を、２ｎビットを示すものとなるように更新することとしてもよい。
【００１４】
これにより、プログラムにおいて、オペランドにより指定された即値をレジスタに設定するための命令や、メモリ内のデータをレジスタに転送するための命令の後に置かれて、それらの命令で設定したサイズと同一のデータ長のレジスタ内データを演算や転送等の処理の対象とすることが想定される命令については、扱うデータ長を明示的には特定しない第２種命令と定めておくことができ、これにより、演算対象のデータ長毎に別個の命令を、マイクロプロセッサがサポートすべき命令セット中に設けておく必要がなくなる。
【００１５】
また、前記第１種命令であってかつ前記第２種命令であるものには、乗算命令が含まれ、前記デコード手段は、前記乗算命令について命令解釈処理を行うときには、前記保持手段内に保持されているデータ長選択用情報に応じて、乗算命令の演算対象となるデータのデータ長を選択して当該命令解釈処理を行い、かつ、その保持されているデータ長選択用情報の示すデータ長を、所定値にするように更新することとしてもよい。
【００１６】
例えば、マイクロプロセッサの動作中に、第１種命令としての、レジスタへの１バイトのデータを格納する命令のデコード等を起因として、データ長選択用情報が１バイトというデータ長を示しているときにおいて、あるレジスタの内容と他のレジスタの内容との乗算を指示する乗算命令がデコードされると、それらの入力されるレジスタ内のデータのデータ長は１バイトとして扱われるが、１バイトのデータ同士の積は２バイトで表されるデータになる。このマイクロプロセッサによれば、この場合に対応することができ、乗算命令に後続してその積を処理対象とする第２種命令が２バイトのデータ長のデータを処理するように仕向けることができるようになる。
【００１７】
また、前記データ長選択用情報は、複数のデータ長を選択的に示すものであり、前記デコード手段は、第１種命令について命令解釈処理を行う毎に、前記データ長選択用情報の示すデータ長を、複数のデータ長のなかでの予め定めた繰り返し順序における、次の順のデータ長にするように更新することとしてもよい。
これにより、例えば、特段の実行処理をしない旨の従来のｎｏｐ命令を第１種命令として、ｎｏｐ命令がデコードされる毎に、データ長選択用情報が示すデータ長が１バイト、２バイト、４バイト、１バイト、２バイト、４バイト、１バイト等と巡回的に移り変わるようにすることができる。従って、例えば、プログラム中の必要な箇所に、ｎｏｐ命令を必要な個数挿入しておくことにより任意のデータ長を示すようにデータ長選択用情報を更新することができる。従って、データ長選択用情報が特定値を示すように設定するための命令を、命令セット中に複数設ける必要がなくなる。なお、第１種命令は、必ずしも従来のｎｏｐ命令である必要はない。
【００１８】
また、前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、前記保持手段は、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、データ長を示すデータ長選択用情報を保持し、前記第１種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、前記第２種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、前記デコード手段は、(a）第１種命令について命令解釈処理を行うときに、当該第１種命令によりデータの格納が指示されるレジスタに対応するデータ長選択用情報を更新し、(b) 第２種命令について命令解釈処理を行うときには、当該第２種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記データ長選択用情報に応じて、当該データのデータ長を選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定することとしてもよい。
【００１９】
これにより、マイクロプロセッサが、演算やデータ転送の処理対象となるデータを格納するために有するレジスタ毎に、データ長が保持され、それが第１種命令により更新され、それが第２種命令のデコードに際して参照されるようになるため、データ長の異なる各種データを扱うプログラム等を実行対象とする場合に有用となる。例えば、プログラムにおいて、順次、１バイトの即値データを第１レジスタに格納する命令（１バイト値格納用命令）、２バイトの即値データを第２レジスタに格納する命令（２バイト値格納用命令）、第１レジスタの内容を演算等の処理の対象とする命令、第２レジスタの内容を演算等の処理の対象とする命令が並んでいた場合に、これら４つの命令のうち後の２つの命令は、明示的にデータ長を指定する命令でなくても、それぞれ、第１レジスタの内容を１バイトの値として処理対象とする命令と、第２レジスタの内容を２バイトの値として処理対象とする命令としてデコードされるようになる。
【００２０】
また、前記マイクロプロセッサは、命令により処理対象データの格納場所として指定され得るレジスタを複数有し、前記保持手段は更に、処理対象データの格納場所として指定され得る複数のレジスタそれぞれに対応して、命令解釈処理に際してデータ長選択用情報を有効と扱うか無効と扱うかを示す有効性情報を保持し、前記第１種命令は、あるデータ長のデータをあるレジスタに格納することを指示するものであり、前記第２種命令は、あるレジスタに格納されている、あるデータ長のデータを処理対象として、ある演算処理を行うことを指示するものであり、前記デコード手段は、(a）第１種命令について命令解釈処理を行うときに当該第１種命令に基づいて前記データ長選択用情報を更新するとともに、当該第１種命令によりデータの格納が指示されるレジスタに対応する有効性情報を、有効を示すように更新し、(b）第３種命令について命令解釈処理を行うときに当該第３種命令に基づいて、あるレジスタに対応する有効性情報を、無効を示すように更新し、(c) 第２種命令について命令解釈処理を行う場合において、当該第２種命令により処理対象データが格納されているとして指示されるレジスタに対応する前記有効性情報が有効を示すときには前記データ長選択用情報に応じて当該データのデータ長を選択し、当該有効性情報が無効を示すときには所定のデータ長を当該データのデータ長として選択し、選択したデータ長分の当該データを処理対象として演算処理が行われるように命令実行処理の内容を特定することとしてもよい。
【００２１】
マイクロプロセッサが、例えば１バイトのデータを処理対象として扱うプログラムを実行している間においては、基本的には、データ長選択用情報は１バイトを示すようになる。そして、プログラム中に、汎用レジスタをその１バイトのデータの格納用に用いる部分のみならず、その汎用レジスタを例えば４バイトのメモリアドレス値の格納用に用いる部分も含まれているような場合において、汎用レジスタをメモリアドレス格納用に用いているような命令を第３種命令として定めておけば、その第３種命令により指定された汎用レジスタについては、データ長選択用情報を参照せずにデータ長を定めるように、デコードできるようになる。従って、このマイクロプロセッサは、ある汎用レジスタを、所定のデータ長のデータを格納するために用いる場合と、メモリアドレスを格納するために用いる場合とを、切り替えて活用するようなプログラムを実行対象とするために適したものとなる。
【発明を実施するための最良の形態】
【００２２】
＜1.実施形態１＞
以下、本発明の実施形態１に係るマイクロプロセッサについて説明する。
＜1-1.構成＞
図１は、本発明の実施形態１に係るマイクロプロセッサ１００の構成図である。
マイクロプロセッサ１００は、固定長命令フォーマットの命令セットに属する各命令コードをフェッチしデコードし実行する集積回路であり、同図に示すように、デコード部１１０、汎用レジスタ１２０、演算ユニット１３０、命令メモリ１４０、データメモリ１５０及びインタフェース部１６０を備える。
【００２３】
ここで、汎用レジスタ１２０は、演算や転送等の処理対象又は処理結果となるデータを一時的に格納するためのデータ記憶回路であり、より詳しくは、３２ビットのデータを格納可能なレジスタＲ０、レジスタＲ１、レジスタＲ２、・・・、レジスタＲ７の８つのレジスタの集合である。
演算ユニット１３０は、汎用レジスタ１２０に格納されたデータ或いはデータメモリ１５０に格納されたデータを処理対象として、加算、乗算、その他の各種演算を行うための回路である。
【００２４】
命令メモリ１４０は、実行対象となるプログラムを構成する命令列が格納されているメモリである。
データメモリ１５０は、命令の実行に際してデータを書き込み又は読み出すための書き換え可能なメモリである。
インタフェース部１６０は、バスを含み、汎用レジスタ１２０又は演算ユニット１３０と、データメモリ１５０との間でのデータ転送を制御し、また命令メモリ１４０からデコード部１１０への命令コードの転送を制御する機能を担う回路である。
【００２５】
また、デコード部１１０は、命令メモリ１４０から逐次読み出された命令コードに基づいて、その命令コードに対応する動作を演算ユニット１３０及びインタフェース部１６０に行わせるための制御内容を決定し、その制御を行うための制御信号をインタフェース部１６０に伝送する機能、即ち命令をデコードする機能を担う回路であり、図１に示すように、命令デコーダ１１１、第１種命令対応回路１１２、第２種命令対応回路１１３及びデータ長保持回路１１９を有する。
【００２６】
ここで、命令デコーダ１１１は、デコードに必要な各種制御を実行する回路である。
データ長保持回路１１９は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を保持するための記憶回路である。
第１種命令対応回路１１２は、デコード対象の命令コードが第１種命令である場合に、その第１種命令の内容に応じてデータ長保持回路１１９の内容を更新する機能を有する回路である。なお、第１種命令については、後に詳しく説明する。
【００２７】
また、第２種命令対応回路１１３は、デコード対象の命令コードが第２種命令である場合に、データ長保持回路１１９の内容に基づいて、その第２種命令の命令コードに応じた処理の対象となるデータのデータ長を特定し、そのデータ長に応じたデコードを命令デコーダ１１１に行わせるために、そのデータ長を命令デコーダ１１１に伝達する機能を有する回路である。なお、第２種命令については、後に詳しく説明する。
【００２８】
＜1-2.データ＞
以下、マイクロプロセッサ１００において用いられるデータ長選択用情報及び各種命令について説明する。
＜1-2-1.データ長選択用情報＞
図２は、データ長保持回路１１９の保持内容を示す図である。
【００２９】
同図に示すように、データ長保持回路１１９は、汎用レジスタ毎に２ビットのデータ長選択用情報を記憶する。即ち、レジスタＲ０対応のデータ長選択用情報から、レジスタＲ７対応のデータ長選択用情報までの合計１６ビットの情報が、データ長保持回路１１９に記憶されることになる。
なお、その２ビットのデータ長選択用情報における各値の意味は、次のようになっている。２ビットの００ｂ（ｂ：２進数表記）は、８ビット（１バイト）のデータ長を示し、０１ｂは、１６ビット（２バイト）のデータ長を示し、１０ｂは、３２ビット（４バイト）のデータ長を示す。
【００３０】
＜1-2-2.命令フォーマット＞
図３は、マイクロプロセッサ１００がデコード可能な命令の命令フォーマットを示す図である。
同図に示すように命令は、命令コードを識別するための１６ビットのオペコードフィールド１０と、命令コードに応じて０ビット〜３２ビットの所定サイズに定まるオペランドデータフィールド２０とから構成される。
【００３１】
ここで、オペコードフィールド１０は、基本的な命令種別の識別のための８ビットのメインフィールド１１（ｍａｉｎ）、詳細な命令種別の識別又はデータ長の識別のための２ビットのサブフィールド１２（ｓｕｂ）、及び、いずれかの汎用レジスタを処理対象として指定するための各３ビットのソースレジスタフィールド１３（ｓｒｃ）とディスティネーションレジスタフィールド１４（ｄｓｔ）から構成される。
【００３２】
＜1-2-3.第１種命令＞
図４は、第１種命令対応回路１１２の処理対象となる第１種命令を例示した図である。
以下、図４に例示した各第１種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第１種命令対応回路１１２によりなされるデータ長選択用情報の更新とを説明する。
（ａ）  「ｍｏｖ  （ｄ３２），Ｒｎ」というｍｏｖ命令は、３２ビット（４バイト）のオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ１５０内の８ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに転送することを指示する命令である。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、８ビットを示す値（００ｂ）に更新する。
（ｂ）  「ｍｏｖ  （ｄ３２）：１６，Ｒｎ」というｍｏｖ命令は、３２ビットのオペランドデータフィールドで指定されたメモリアドレスが指し示す位置の、データメモリ１５０内の１６ビットのデータを、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに転送することを指示する命令である。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、データ長選択用情報を、１６ビットを示す値（０１ｂ）に更新する。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、１６ビットを示す値（０１ｂ）に更新する。なお、このｍｏｖ命令は、オペコードフィールドの内容については、前述の「ｍｏｖ  （ｄ３２），Ｒｎ」というｍｏｖ命令とは、データ長の識別に用いられたサブフィールド（ｓｕｂ）の内容のみが異なる。
（ｃ）  「ｍｏｖ  ｉｍｍ８，Ｒｎ」というｍｏｖ命令は、８ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに格納することを指示する命令である。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、８ビットを示す値（００ｂ）に更新する。
（ｄ）  「ｍｏｖ  ｉｍｍ１６，Ｒｎ」というｍｏｖ命令は、１６ビットのオペランドデータフィールドで指定された即値を、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに格納することを指示する命令である。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、１６ビットを示す値（０１ｂ）に更新する。なお、このｍｏｖ命令は、オペコードフィールドの内容については、前述の「ｍｏｖ  ｉｍｍ８，Ｒｎ」というｍｏｖ命令とは、データ長の識別に用いられたサブフィールド（ｓｕｂ）の内容のみが異なる。
（ｅ）  「ｅｘｔ  Ｒｎ」というｅｘｔ命令は、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容を、８ビットのデータから１６ビットのデータへと拡張することを指示する命令である。このｅｘｔ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報を、１６ビットを示す値（０１ｂ）に更新する。
（ｆ）  「ｍｏｖ  Ｒｎ，Ｒｍ」というｍｏｖ命令は、ソースレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容を、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに転送することを指示する命令である。このｍｏｖ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、ソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容と同一になるように更新する。
（ｇ）  「ｍｕｌ  Ｒｎ，Ｒｍ」というｍｕｌ命令は、ソースレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容とを乗算して、その結果である積を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このｍｕｌ命令をデコードする際には、第１種命令対応回路１１２は、そのディスティネーションレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容を、その更新前のソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報の内容が指し示すデータ長の２倍のデータ長を示すものとなるように、更新する。
【００３３】
第１種命令は、汎用レジスタに特定のデータ長の即値データを格納することを指示する命令や、汎用レジスタにデータメモリ内の特定のデータ長のデータを転送することを指示する命令等、汎用レジスタに格納されたデータのデータ長を特定する働きをする命令であるので図４に例示した命令の他にも存在し、第１種命令対応回路１１２は、第１種命令それぞれについて、予め定められたアルゴリズムに従って、データ長選択用情報を更新する。
【００３４】
＜1-2-4.第２種命令＞
図５は、第２種命令対応回路１１３の処理対象となる第２種命令を例示した図である。
以下、図５に例示した各第２種命令について、ニモニックコードを用いて、その命令の意味と、その命令に対応して第２種命令対応回路１１３によりなされるデータ長の選択とを説明する。
（ａ）  「ｍｏｖ  Ｒｎ，（ｄ３２，Ｒｍ）」というｍｏｖ命令は、ソースレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに格納されている不特定データ長のデータを、データメモリ１５０内の、３２ビット（４バイト）のオペランドデータフィールドで指定されたメモリアドレス値とディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかに格納されている値との和であるメモリアドレスが指し示す位置に転送することを指示する命令である。このｍｏｖ命令をデコードする際には、第２種命令対応回路１１３は、そのソースレジスタフィールドで示す汎用レジスタに対応するデータ長選択用情報を参照して、そのデータ長選択用情報が示すデータ長を選択することで、不特定データ長を特定する。なお、第２種命令対応回路１１３により特定されたデータ長は、命令デコーダ１１１に伝達され、命令デコーダ１１１において、そのデータ長を命令の処理対象とするものとして命令実行に係る制御がなされる。
（ｂ）  「ｍｏｖ  Ｒｎ，Ｒｍ」というｍｏｖ命令は、上述したように第１種命令でもあり、また第２種命令でもある。このｍｏｖ命令をデコードする際には、第２種命令対応回路１１３は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのｍｏｖ命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
（ｃ）  「ａｄｄ  Ｒｎ，Ｒｍ」というａｄｄ命令は、ソースレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容と、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容とを加算して、その結果である和を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このａｄｄ命令をデコードする際には、第２種命令対応回路１１３は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのａｄｄ命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
（ｄ）  「ｓｕｂ  Ｒｎ，Ｒｍ」というｓｕｂ命令は、ソースレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容から、ディスティネーションレジスタフィールドで示すレジスタＲ０〜Ｒ７のいずれかの内容を減算して、その結果である差を、そのディスティネーションレジスタフィールドで示す汎用レジスタに格納することを指示する命令である。このｓｕｂ命令をデコードする際には、第２種命令対応回路１１３は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのｓｕｂ命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。
【００３５】
なお、このｓｕｂ命令は、オペコードフィールドの内容については、前述のｓｕｂ命令とは、詳細な命令種別の識別に用いられたサブフィールド（ｓｕｂ）の内容のみが異なる。この例は、ａｄｄ命令とｓｕｂ命令とがデータ長を指定する命令ではなく、サブフィールド（ｓｕｂ）をデータ長の識別に用いる必要がないため、サブフィールド（ｓｕｂ）を詳細な命令種別の識別に用いている例であり、このような方法で、命令セット中に、より多くの命令を包含させ得るようになることを表している。
（ｅ）  「ｍｕｌ  Ｒｎ，Ｒｍ」というｍｕｌ命令も、上述したように第１種命令でもあり、また第２種命令でもある。このｍｕｌ命令をデコードする際には、第２種命令対応回路１１３は、そのソースレジスタフィールドで指定された汎用レジスタに対応するデータ長選択用情報が示すデータ長を選択することにより、そのｍｕｌ命令で指定された各汎用レジスタに格納されたデータのデータ長を特定する。なお、ｍｕｌ命令をデコードする際に、命令デコーダ１１１は、乗算結果についてのデータ長が、その第２種命令対応回路１１３において特定されたデータ長の２倍であるとして、命令実行に係る制御を行う。
【００３６】
なお、第２種命令は、それ自身では処理対象となるデータのデータ長を特定することができない命令であって、図５に例示した命令の他にも存在し、第２種命令対応回路１１３は、第２種命令それぞれについて、予め定められたアルゴリズムに従って、データ長選択用情報を参照して、命令の処理対象となるデータのデータ長を特定する。
＜1-3.動作＞
以下、上述した構成を備えるマイクロプロセッサ１００の動作について説明する。
【００３７】
図６は、マイクロプロセッサ１００の動作を示すフローチャートである。
同図に示すように、マイクロプロセッサ１００は、命令メモリ１４０から命令を読み出してデコード部１１０に取り込む命令読出処理（ステップＳ１）と、デコード部１１０による命令解釈処理（ステップＳ２）と、演算ユニット１３０及びインタフェース部１６０の動作によって命令の実行を行う命令実行処理（ステップＳ３）とを、例えばクロック供給停止等による停止指示が生じるまで（ステップＳ４）、繰り返す。
【００３８】
図７は、デコード部１１０の行う命令解釈処理を示すフローチャートである。
デコード部１１０は、命令メモリ１４０から読み込まれた命令を、命令デコーダ１１１によりデコードして命令実行の準備のための制御を行い（ステップＳ１１）、その命令が第２種命令であれば（ステップＳ１２）、第２種命令対応回路１１３を動作させる。なお、ステップＳ１１の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
【００３９】
第２種命令対応回路１１３は、その命令で指定された特定の汎用レジスタに対応するデータ長選択用情報を参照して（ステップＳ１３）、前述したようにデータ長を特定して（ステップＳ１４）、そのデータ長を命令デコーダ１１１に伝達し、命令デコーダ１１１は、伝達されたデータ長が８ビットであれば、命令を、８ビットのデータを処理対象とする命令として更にデコードし（ステップＳ１５）、伝達されたデータ長が１６ビットであれば、命令を、１６ビットのデータを処理対象とする命令として更にデコードし（ステップＳ１６）、或いは伝達されたデータ長が３２ビットであれば、命令を３２ビットのデータを処理対象とする命令として更にデコードする（ステップＳ１７）。
【００４０】
続いて、命令デコーダ１１１は、その命令が第１種命令であれば（ステップＳ１８）、第１種命令対応回路１１２を動作させ、その第１種命令対応回路１１２は、その命令で指定された特定の汎用レジスタに対応するデータ長選択用情報を、前述したように更新する（ステップＳ１９）。
なお、命令メモリ１４０から読み込まれた命令が第２種命令でなければ、ステップＳ１３〜Ｓ１７は行われず、その読み込まれた命令が第１種命令でなければ、ステップＳ１９は行われない。
【００４１】
以下、デコード部１１０が、不特定データ長の命令の処理対象となるデータのデータ長を特定する具体的動作について、図８及び図９を用いて説明する。
図８は、マイクロプロセッサが解釈実行するプログラムの例を示す図である。
図９は、各命令のデコードに基づくデータ長選択用情報の遷移を示す図である。同図は、図８の命令１、命令２、命令３、・・・のそれぞれのデコード終了直後に相当する各時刻ｔ１、ｔ２、ｔ３、・・・における各汎用レジスタに対応するデータ長選択用情報を表している。
（ａ）  まず、命令１をデコード部１１０がデコードすると、命令１が８ビットの即値であるａａｈ（ｈ：１６進数表記）をレジスタＲ０に格納する第１種命令なので、第１種命令対応回路１１２によりレジスタＲ０に対応するデータ長選択用情報が、８ビットのデータ長を示すように００ｂ（ｂ：２進数表記）に更新される（図９中時刻ｔ１参照）。
（ｂ）  次に、不特定データ長のレジスタＲ０の内容をレジスタＲ２に転送することを指示する命令２を、デコード部１１０がデコードする。この際には、レジスタＲ０に対応するデータ長選択用情報が８ビットを示すため、第２種命令対応回路１１３により８ビットがデータ長として特定され、命令２が、レジスタＲ０の８ビットのデータがレジスタＲ２に転送される命令としてデコードされる。また第１種命令対応回路１１２によって、そのレジスタＲ０に対応するデータ長選択用情報の内容が、レジスタＲ２に対応するデータ長選択用情報の内容としてコピーされる。この結果として、レジスタＲ２に対応するデータ長選択用情報は、００ｂになる（図９中時刻ｔ２参照）。
（ｃ）  次に、不特定データ長のレジスタＲ０の内容とレジスタＲ２の内容とを乗算してその積をレジスタＲ２に格納することを指示する命令３を、デコード部１１０がデコードする。この際には、レジスタＲ０に対応するデータ長選択用情報が８ビットを示すため、第２種命令対応回路１１３により８ビットがデータ長として特定され、命令３が、レジスタＲ０とレジスタＲ２とのそれぞれ８ビットのデータを演算対象として乗算が行われるべきものとしてデコードされる。また第１種命令対応回路１１２によって、レジスタＲ２に対応するデータ長選択用情報は、８ビットの２倍である１６ビットを示す値０１ｂに更新される（図９中時刻ｔ３参照）。
（ｄ）  続いて不特定データ長のレジスタＲ２の内容をデータメモリ１５０内に転送することを指示する命令４がデコード部１１０にデコードされた後に、データメモリ１５０内の１６ビットのデータがレジスタＲ１に転送されることを指示する命令５がデコードされる。この際には、第１種命令対応回路１１２によって、レジスタＲ１に対応するデータ長選択用情報は、１６ビットを示す値０１ｂに更新される（図９中時刻ｔ５参照）。
（ｅ）  次に、レジスタＲ０に係るｅｘｔ命令である命令６を、デコード部１１０がデコードする。この際に、第１種命令対応回路１１２によって、レジスタＲ０に対応するデータ長選択用情報は、１６ビットを示す値０１ｂに更新される（図９中時刻ｔ６参照）。
（ｆ）  続いて不特定データ長のレジスタＲ０の内容とレジスタＲ１の内容を加算することを指定する命令７がデコード部１１０にデコードされる。この際に、第２種命令対応回路１１３により加算対象の各データのデータ長は、レジスタＲ０に対応するデータ長選択用情報の参照により、０１ｂで示される１６ビットであるものとして、加算が行われる。
【００４２】
命令８以後についても、デコード部１１０により順次デコードされる。
＜2.実施形態２＞
以下、本発明の実施形態２に係るマイクロプロセッサについて説明する。
＜2-1.概要＞
実施形態２に係るマイクロプロセッサは、実施形態１に係るマイクロプロセッサを部分的に変形したものである。実施形態１においては、データ長保持回路には、汎用レジスタ毎に対応してデータ長選択用情報が保持されるものとし、その各データ長選択用情報を活用して不特定データ長の命令におけるデータ長の特定を行うマイクロプロセッサを示した。これに対し、実施形態２に係るマイクロプロセッサは、データ長保持回路に、データ長選択用情報を１つだけ保持させ、更に汎用レジスタそれぞれに対応して、そのデータ長選択用情報の参照が有効か否かを示す有効性情報を保持させておき、その１つのデータ長選択用と各有効性情報との組を活用して不特定データ長の命令におけるデータ長の特定を行うものである。この実施形態２に係るマイクロプロセッサは、汎用レジスタ毎にデータ長選択用情報を有していないため、実行対象プログラムが例えば、プログラム全体或いはある程度大きな単位で、基本的に８ビットや１６ビット等の単一のデータ長のデータを取り扱うプログラムである場合に特に適している。
【００４３】
＜2-2.構成＞
図１０は、本発明の実施形態２に係るマイクロプロセッサ２００の構成図である。
マイクロプロセッサ２００は、実施形態１に係るマイクロプロセッサ１００のデコード部について変形したものであり、同図に示すように、デコード部２１０、汎用レジスタ１２０、演算ユニット１３０、命令メモリ１４０、データメモリ１５０及びインタフェース部１６０を備える。なお、実施形態１で説明した部分と同一のものについては、同じ符号を付しており、ここでは詳しく説明しない。
【００４４】
デコード部２１０は、命令メモリ１４０から逐次読み出された命令コードに基づいて、その命令コードに対応する動作を演算ユニット１３０及びインタフェース部１６０に行わせるための制御内容を決定し、その制御を行うための制御信号をインタフェース部１６０に伝送する機能、即ち命令をデコードする機能を担う回路であり、図１０に示すように、命令デコーダ２１１、第１種命令対応回路２１２、第２種命令対応回路２１３、第３種命令対応回路２１４及びデータ長保持回路２１９を有する。
【００４５】
ここで、命令デコーダ２１１は、デコードに必要な各種制御を実行する回路である。
データ長保持回路２１９は、いわゆる演算語長等、演算やデータ転送の処理対象となるデータのデータ長を示すデータ長選択用情報を１つ保持し、更に各汎用レジスタに対応する有効性情報を保持する回路である。図１１は、データ長保持回路２１９の保持内容を示す図である。同図に示すように、１ビットの各有効性情報は、値０ｂで有効を示し、値１ｂで無効を示す。
【００４６】
第１種命令対応回路２１２は、デコード対象の命令コードが第１種命令（図４参照）である場合に、その第１種命令の内容に応じてデータ長保持回路２１９の内容を更新する機能を有する回路である。
この第１種命令対応回路２１２は、実施形態１で示した第１種命令対応回路１１２が第１種命令で指定された汎用レジスタに対応するデータ長選択用情報をその第１種命令に応じて更新するものであることとは異なり、第１種命令で指定された汎用レジスタに対応する有効性情報を、有効を示すように設定した上で、その汎用レジスタがいずれであっても１つのデータ長選択用情報をその第１種命令に応じて更新する回路である。
【００４７】
第２種命令対応回路２１３は、デコード対象の命令コードが第２種命令（図５参照）である場合に、データ長保持回路２１９の内容に基づいて、その第２種命令の命令コードに応じた処理の対象となるデータのデータ長を特定し、そのデータ長に応じたデコードを命令デコーダ２１１に行わせるために、そのデータ長を命令デコーダ２１１に伝達する機能を有する回路である。
【００４８】
この第２種命令対応回路２１３は、実施形態１で示した第２種命令対応回路１１３が、第２種命令に応じて、処理対象のデータが格納されているはずの汎用レジスタに対応するデータ長選択用情報を参照して、その第２種命令における処理対象データのデータ長を選択的に特定するものであることとは異なり、処理対象のデータが格納されているはずの汎用レジスタに対応する有効性情報を参照した上で、その有効性情報が有効を示すときに限って唯一のデータ長選択用情報を参照して、その第２種命令における処理対象データのデータ長を選択的に特定する回路である。
【００４９】
第３種命令対応回路２１４は、デコード対象の命令コードが第３種命令である場合に、データ長保持回路２１９に保持されている有効性情報を更新する機能を有する回路である。第３種命令は、例えば「レジスタＲ１に、あるメモリアドレス値を格納する」ための命令等、汎用レジスタに格納されている内容をデータメモリ１５０に対応したメモリアドレスを指し示す値として用いる働きをする命令であり、これに対応して第３種命令対応回路２１４は、第３種命令によりメモリアドレス値が格納されるものとして指定される汎用レジスタに対応する有効性情報を、無効を示すように更新する。
【００５０】
＜2-3.動作＞
以下、上述した構成を備えるマイクロプロセッサ２００の動作について説明する。
マイクロプロセッサ２００は、マイクロプロセッサ１００と同様に図６に示す動作を行う。但し、デコード部２１０による命令解釈処理（図７参照）は、次のように変形したものとなる。
（ａ）  まず、命令デコーダ２１１は、命令メモリ１４０から読み出された命令をデコードする。
（ｂ）  続いて、第２種命令対応回路２１３は、その命令が第２種命令であるか否かを判別し、その結果、第２種命令である場合において、第２種命令で処理対象データが格納されているものとして指定されている汎用レジスタに対応する有効性情報が有効を示すときに限り、データ長選択用情報で示されるデータ長を、処理対象データのデータ長として特定し、データ長を命令デコーダ２１１に伝達することで、命令デコーダ２１１によりそのデータ長に対応した更なるデコードがなされる。なお、第２種命令対応回路２１３は、その汎用レジスタに対応する有効性情報が無効を示すときには、メモリアドレスを指定するために必要とされる所定の長さ、例えば３２ビットを、処理対象データのデータ長として特定して、命令デコーダ２１１に伝達する。
（ｃ）  続いて、デコードした命令が第１種命令であるか否かを判断し、その結果、第１種命令である場合においては、第１種命令に応じて、データ長選択用情報を更新した上にその第１種命令で指定されている汎用レジスタに対応する有効性情報を、有効を示すように更新する。
（ｄ）  次に、デコードした命令が第３種命令であるか否かを判別し、その結果、第３種命令である場合においては、第３種命令において指定されている汎用レジスタに対応する有効性情報を無効を示すように更新する。
【００５１】
デコード部２１０は、以上の（ａ）〜（ｄ）の手順を命令毎に繰り返すことになる。
＜3.実施形態３＞
以下、本発明の実施形態３に係るマイクロプロセッサについて説明する。
＜3-1.概要＞
実施形態３に係るマイクロプロセッサは、実施形態２に係るマイクロプロセッサを部分的に変形したものである。実施形態２においては、データ長保持回路に、唯一のデータ長選択用情報の他に各汎用レジスタに対応して有効性情報を保持し、第１種命令及び第３種命令に応じてデータ長保持回路の内容を更新し、その内容を第２種命令における処理対象データのデータ長を特定するために活用するマイクロプロセッサを示した。これに対して、実施形態３に係るマイクロプロセッサは、データ長保持回路に、１つのデータ長選択用情報だけを保持させて有効性情報は保持させず、特に第１種命令及び第３種命令に係る処理は行わず、第２種命令における処理対象データのデータ長を特定するためのデータ長選択用情報を、ＮＯＰ命令をデコードする度に、巡回的に８ビット、１６ビット、３２ビット、８ビット、１６ビット、３２ビット、８ビット、・・・というデータ長を示すように更新するものである。
【００５２】
＜3-2.構成＞
実施形態３に係るマイクロプロセッサ（以下、「変形マイクロプロセッサ」という。）は、実施形態２で示したマイクロプロセッサ２００（図１０参照）とある程度同じ構成要素を備える。但し、この変形マイクロプロセッサは、マイクロプロセッサ２００から第３種命令対応回路を削除し、第１種命令対応回路に代えてＮＯＰ命令対応回路を設け、データ長保持回路の保持内容を、唯一のデータ長選択用情報のみにしたという点でマイクロプロセッサ２００と異なる。なお、命令デコーダは、ＮＯＰ命令をデコードする際にＮＯＰ命令対応回路を動作させ、そのＮＯＰ命令対応回路は、データ長選択用情報の内容を、巡回的に更新する。
【００５３】
＜3-3.動作＞
以下、変形マイクロプロセッサの動作について説明する。
変形マイクロプロセッサは、マイクロプロセッサ２００と同様に図６に示す動作を行う。但し、デコード部による命令解釈処理は、次のように変形したものとなる。なお、デコード部は、プログラムを解釈するために命令解釈処理を実行開始する前に、データ長選択用情報を例えば８ビットという所定データ長を示す値に初期設定する。
【００５４】
図１２は、変形マイクロプロセッサのデコード部により行われる命令解釈処理を示すフローチャートである。
デコード部は、命令メモリ１４０から読み込まれた命令を、命令デコーダによりデコードして命令実行の準備のための制御を行い（ステップＳ３１）、その命令が第２種命令であれば（ステップＳ３２）、第２種命令対応回路を動作させる。なお、ステップＳ３１の段階のデコードでは、不特定データ長の命令については、データ長に係る制御はなされない。
【００５５】
第２種命令対応回路は、データ長選択用情報を参照して（ステップＳ３３）、データ長を特定して（ステップＳ３４）、そのデータ長を命令デコーダに伝達し、命令デコーダは、伝達されたデータ長が８ビットであれば、命令を、８ビットのデータを処理対象とする命令として更にデコードし（ステップＳ３５）、伝達されたデータ長が１６ビットであれば、命令を、１６ビットのデータを処理対象とする命令として更にデコードし（ステップＳ３６）、或いは伝達されたデータ長が３２ビットであれば、命令を３２ビットのデータを処理対象とする命令として更にデコードする（ステップＳ３７）。
【００５６】
また、命令デコーダは、読み込まれた命令が第２種命令でなくＮＯＰ命令であれば（ステップＳ３８）、ＮＯＰ命令対応回路を動作させ、そのＮＯＰ命令対応回路は、そのデータ長選択用情報が８ビットを示すものであれば１６ビットを示すように更新し（ステップＳ４０、Ｓ４１）、データ長選択用情報が１６ビットを示すものであれば３２ビットを示すように更新し（ステップＳ４０、Ｓ４２）、データ長選択用情報が３２ビットを示すものであれば８ビットを示すように更新する（ステップＳ４０、Ｓ４３）。
＜4.補足＞
以上、本発明に係るマイクロプロセッサについて実施形態１〜３に基づいて説明したが、以下のように変形することもでき、本発明は上述の実施形態で示したマイクロプロセッサに限られないことは勿論である。
（１）  上述の実施形態では、レジスタＲ０〜Ｒ７という８つの汎用レジスタに格納されるデータに関してデータ長選択用情報を反映してデータ長を特定するマイクロプロセッサを示したが、マイクロプロセッサが有する汎用レジスタの数は８つには限られることはなく、また、一部の汎用レジスタについてのみ、その格納するデータのデータ長の特定を、データ長選択用情報を用いて行う構成としてもよい。
【００５７】
また、汎用レジスタのサイズは、３２ビットデータが格納可能なサイズであることとしたが、必ずしも３２ビットに限られず、例えば１６ビットであっても６４ビットであっても差し支えない。そのサイズに応じて、より詳しくは、各演算やデータ転送の処理対象に関するデータ長として取り得るサイズに応じて、データ長選択用情報が表されるようにしておけばよい。例えば、８ビットと１６ビットしかデータ長として取り得ないのであれば、データ長選択用情報はその２つのデータ長を識別可能な情報であれば足りる。
（２）  実施形態１〜３で示したデコード部が、命令のデコードの際に、その命令による処理対象データのデータ長を特定したときに、更にその特定したデータ長分のデータの演算処理又は転送処理に必要な限度の回路だけを動作可能にするような省電力制御を行うこととしてもよい。例えば、３２ビットのデータを格納可能な汎用レジスタに格納されているデータが８ビットであると特定できた際には、その残りの２４ビットのデータを汎用レジスタ中で維持したり、入出力したりするために必要な電力を削減するようにマイクロプロセッサを構成してもよい。
（３）  実施形態１〜３で示したマイクロプロセッサが、命令読み込み（フェッチ）、命令解釈（デコード）、実行をそれぞれ別個のパイプラインステージとしたパイプライン構成を採るマイクロプロセッサであることとしてもよい。
（４）  実施形態１では、デコード部が、ｍｕｌ命令のデコードの際にデータ長選択用情報を２倍にする例を示したが、例えばレジスタＲ０とレジスタＲ１とを乗算してその結果をレジスタＲ１に格納するというｍｕｌ命令をデコードする際において、レジスタＲ０に対応するデータ長選択用情報が示すデータ長と、レジスタＲ１に対応するデータ長選択用情報が示すデータ長との和を、新たにレジスタＲ１に対応するデータ長選択用情報が示すように、データ長選択用情報の更新を行うこととしてもよい。また、ｍｕｌ命令に限らず、除算用の命令、ビット操作用の命令等、演算対象のデータのデータ長と演算結果のデータのデータ長が異なるような命令については第１種命令と定めておき第１種命令対応回路によりデータ長選択用情報の更新を行うようにしてもよい。
【００５８】
なお、第１種命令には、８ビットの即値データを汎用レジスタに格納することを指示するｍｏｖ命令と１６ビットの即値データを汎用レジスタに格納することを指示するｍｏｖ命令、８ビットのメモリ中のデータを汎用レジスタに格納することを指示するｍｏｖ命令、１６ビットのメモリ中のデータを汎用レジスタに格納することを指示するｍｏｖ命令等といった一のデータ長のデータをレジスタに格納することを指示するデータ格納命令及び他のデータ長のデータをレジスタに格納することを指示するデータ格納命令が含まれるように定めておき、それに応じた処理を第１種命令対応回路が行うようにしておくとよい。
（５）  実施形態２では、第３種命令として汎用レジスタに３２ビット（４バイト）のメモリアドレス値を格納することを指示するような命令を定めたが、メモリアドレス値は３２ビットに限定されず例えば１６ビットであってもよく、その場合には第３種命令対応回路は、その第３種命令に応じてデータ長選択用情報は１６ビットを示す値に更新するようにすればよい。
（６）  実施形態３では、一般に、特段の制御処理を行わないことを指示する命令として命令セット中に備えられているＮＯＰ命令に、データ長選択用情報の巡回的な更新の機能を兼ね備えさせた例を示したが、データ長選択用情報を特定のデータ長を示す値に明示的に更新することを指示する各専用命令、例えば８ビットを示すように更新することを指示する専用命令、１６ビットを示すように更新することを指示する専用命令、３２ビットを示すように更新することを指示する専用命令等を、命令セット中に設けてマイクロプロセッサがその専用命令に対応してデータ長選択用情報の更新を行うようにしてもよい。なお、ＮＯＰ命令を第１種命令として定め、ＮＯＰ命令に対応して、上述したような巡回的な更新第１種命令対応回路で行うようにしてもよい。
【００５９】
また、実施形態１、２におけるデコード部も、実施形態３で示したＮＯＰ命令に対応してデコード部が行うデータ長選択用情報の更新、又はデータ長選択用情報を特定のデータ長を示す値に明示的に更新する各専用命令に対応したその更新を、行うようにしてもよい。
また、実施形態３では、例えばデータ長選択用情報が８ビットを示す場合に、３２ビットを示すように変更したいときには、その部分においてＮＯＰ命令を２つ連続してマイクロプロセッサに実行させるようなプログラムを作成しておくと良い。このように、ＮＯＰ命令以外の特定の命令であっても、その特定の命令をある一定のパターンで並べることによって、データ長選択用情報を特定の値にすることを可能にするように、マイクロプロセッサを構成してもよい。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施形態１に係るマイクロプロセッサ１００の構成図である。
【図２】データ長保持回路１１９の保持内容を示す図である。
【図３】マイクロプロセッサ１００がデコード可能な命令の命令フォーマットを示す図である。
【図４】第１種命令対応回路１１２の処理対象となる第１種命令を例示した図である。
【図５】第２種命令対応回路１１３の処理対象となる第２種命令を例示した図である。
【図６】マイクロプロセッサ１００の動作を示すフローチャートである。
【図７】デコード部１１０の行う命令解釈処理を示すフローチャートである。
【図８】マイクロプロセッサが解釈実行するプログラムの例を示す図である。
【図９】各命令のデコードに基づくデータ長選択用情報の遷移を示す図である。
【図１０】本発明の実施形態２に係るマイクロプロセッサ２００の構成図である。
【図１１】データ長保持回路２１９の保持内容を示す図である。
【図１２】変形マイクロプロセッサのデコード部により行われる命令解釈処理を示すフローチャートである。
【符号の説明】
【００６１】
１００、２００    マイクロプロセッサ
１１０、２１０    デコード部
１１１、２１１    命令デコーダ
１１２、２１２    第１種命令対応回路
１１３、２１３    第２種命令対応回路
１１９、２１９    データ長保持回路
１２０            汎用レジスタ
１３０            演算ユニット
１４０            命令メモリ
１５０            データメモリ
１６０            インタフェース部
２１４            第３種命令対応回路
【図１】
2007122626.tif 000003
【図２】
2007122626.tif 000004
【図３】
2007122626.tif 000005
【図４】
2007122626.tif 000006
【図５】
2007122626.tif 000007
【図６】
2007122626.tif 000008
【図７】
2007122626.tif 000009
【図８】
2007122626.tif 000010
【図９】
2007122626.tif 000011
【図１０】
2007122626.tif 000012
【図１１】
2007122626.tif 000013
【図１２】
2007122626.tif 000014