(57)【要約】【課題】レジスタの選択処理の高速化を図る。【解決手段】プログラムコードには、オペランド１０によって所定のレジスタが指定されている。プログラムコードより読み込まれたオペランド１０は、オペランド保持部１に格納されるとともに、レジスタ指定修飾部２へ出力される。レジスタ指定修飾部２は、プログラムコードより読み込まれたオペランド１０とともに、制御信号５を入力し、オペランド１０内の修飾フィールドの値を入力した制御信号の値に応じて修飾する。レジスタ選択部３は、修飾されたオペランド１０によって指定されるレジスタを選択し、アクセス可能とする。【選択図】図１
2008107902.tif 000002
【特許請求の範囲】
【請求項１】
オペランドによってレジスタの指定が可能なプログラムコードを解釈して実行するマイクロプロセッサにおいて、
レジスタを指示する指示条件に応じて値が設定される制御信号を入力し、レジスタを指定する前記オペランド内に予め定められている修飾フィールドの値を前記制御信号に基づいて修飾するレジスタ指定修飾部と、
前記レジスタ指定修飾部によって修飾が施された前記オペランドの指示に基づき、指定されたレジスタを選択してアクセス可能にするレジスタ選択部と、
を有することを特徴とするマイクロプロセッサ。
【請求項２】
前記レジスタ指定修飾部は、前記修飾フィールドの値を前記制御信号に設定される値に置き換えることを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記レジスタ指定修飾部は、前記修飾フィールドの値と、前記制御信号に設定される値と論理演算を行って前記修飾フィールドの値を修飾することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項４】
前記マイクロプロセッサは、任意のビット数で構成される前記オペランド内のレジスタ指定フィールドの値によって指示されるアドレスが共通する複数のレジスタグループを有し、
前記レジスタ指定修飾部は、アクセス対象の前記レジスタグループを指示するグループ指示を表す前記制御信号を入力して前記修飾フィールドに設定し、
前記レジスタ選択部は、前記修飾フィールドの値に対応する前記レジスタグループに属し、かつ、前記レジスタ指定フィールドの指定に対応するレジスタを選択する、
ことを特徴とする請求項１記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサに関し、特に、オペランドによってレジスタの指定が可能なプログラムコードを解釈して実行するマイクロプロセッサに関する。
【背景技術】
【０００２】
従来、マイクロプロセッサは、プログラムコードとして記述される命令セットを解釈し、順次実行することにより所定の機能を実現している。命令セットは、動作を指示するオペコード部と、レジスタ、あるいはメモリを指定するオペランド部とを有している。
【０００３】
このような従来のマイクロプロセッサでは、オペランドによってレジスタが一意に指定されているため、条件に応じてレジスタの選択が必要になる場合には、プログラムによって分岐処理手順を記述しておく必要があった。
【０００４】
図７は、従来のマイクロプロセッサにおけるレジスタを選択する処理手順例を示した図である。図の例では、所定の外部制御信号の値によってレジスタＡ（レベルが真）、または、レジスタＢ（レベルが偽）を選択し、値Ｘを書き込む処理を行う。
【０００５】
［ステップＳ９１］  レジスタ選択の判定基準となる外部制御信号をマイクロプロセッサ内部に取り込む。
［ステップＳ９２］  ステップＳ９１で取り込んだ外部制御信号のレベルを解析する。
【０００６】
［ステップＳ９３］  ステップＳ９２による解析の結果、外部制御信号のレベルが「真」であるかどうかを判断する。「真」であれば、処理を次のステップへ進め、「真」でなければ、処理をステップＳ９５へ進める。
【０００７】
［ステップＳ９４］  外部制御信号のレベルが「真」であるので、レジスタＡを選択し、値Ｘを書き込み、処理を終了する。
［ステップＳ９５］  外部制御信号のレベルが「偽」であるので、レジスタＢを選択し、値Ｘを書き込み、処理を終了する。
【０００８】
なお、ステップＳ９４におけるレジスタＡの選択処理では、オペランドが「レジスタＡ」を指定するプログラムコードが読み込まれる。読み込まれたオペランドは、マイクロプロセッサ内のオペランド保持部に保持しておく。さらに、オペランド保持部に保持されているオペランドの値に応じてレジスタ選択回路を起動し、指示されたレジスタを選択する。この場合は、レジスタＡが選択される。ステップＳ９５におけるレジスタＢの選択処理も、実行されるプログラムコードのオペランドにレジスタＢが指定されていることを除き、同様に処理される。
【０００９】
また、オペランドによってレジスタが一意に指定されるため、多数のレジスタを必要とするメディア処理などに対応するためには、プログラムコードのコードサイズを増やさなければならないという問題があった。そこで、命令セットに、レジスタの内容を指示するベースアドレス部と、オフセット部とを設けてレジスタを指示することにより、コードサイズを大きくすることなく、レジスタの指示を可能にするマイクロプロセッサが提案されている（たとえば、特許文献１参照）。
【００１０】
また、同じアドレスにより制御される２つのレジスタ群のどちらを使用するかの指定を、オペランドの任意のビットを用いて行うマイクロプロセッサも提案されている（たとえば、特許文献２参照）。
【特許文献１】特開２００３−２５６１９５号公報（図１）
【特許文献２】特開平６−２８１７７号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、従来のマイクロプロセッサでは、条件に応じてレジスタを選択する必要がある場合には、ソフトウェアによる処理が必要となり、処理に時間がかかるという問題点があった。
【００１２】
たとえば、外部制御信号に応じて、対象のレジスタを選択させる場合には、図７の分岐処理手順を実行させるためのプログラムを記述し、マイクロプロセッサに実行させなければならなかった。
【００１３】
分岐処理手順を実行するときは、レジスタを指示する外部制御信号を一度取り込み、その値をソフトウェア処理により解析及び判断してからでなければ、レジスタを指定することができず、多くの処理時間が必要となるという問題点があった。また、図７の例では、２つのレジスタの選択であったが、選択するレジスタ数がさらに多くなると、プログラム量はさらに増大し、処理はより遅くなる。
【００１４】
さらに、プログラムコードでは、オペランドによって一意にレジスタを指定するため、オペランドとして用意されるフィールド語長分のレジスタ数以上のアドレッシングが難しいという問題点もある。
【００１５】
なお、上記の特許文献に基づくマイクロプロセッサであっても、プログラムコードに記述されるオペランドとレジスタとは一意に対応しており、上記のような問題点を解消することはできない。
【００１６】
本発明はこのような点に鑑みてなされたものであり、レジスタの選択処理の高速化を図ることが可能なマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明では上記課題を解決するために、オペランドによってレジスタの指定が可能なプログラムコードを解釈して実行するマイクロプロセッサにおいて、オペランドによるレジスタ指定を修飾するレジスタ指定修飾部と、修飾されたレジスタ指定に基づいてレジスタを選択するレジスタ選択部と、を有するマイクロプロセッサが提供される。レジスタ指定修飾部は、レジスタを指示する指示条件に応じて値が設定される制御信号を入力し、レジスタを指定するオペランド内に予め定められている修飾フィールドの値を制御信号に基づいて修飾する。レジスタ選択部は、レジスタ指定修飾部によって修飾が施されたオペランドの指示に基づき、指定されたレジスタを選択してアクセス可能にする。
【００１８】
このようなマイクロプロセッサでは、マイクロプロセッサの処理手順を記述したプログラムコードのオペランドには、所定のレジスタが指定されている。レジスタ指定修飾部は、プログラムコードから読み込まれたオペランドとともに、制御信号を入力し、読み込まれたオペランドの修飾フィールドの値を入力した制御信号の値に応じて修飾する。レジスタ選択部は、修飾されたオペランドによって指定されるレジスタを選択し、アクセス可能とする。これにより、プログラムコードに記述されているオペランドによって指定されているレジスタを制御信号に応じて可変にすることができる。
【発明の効果】
【００１９】
本発明のマイクロプロセッサでは、レジスタを指定するオペランドを制御信号に基づいて修飾し、修飾されたオペランドに対応するレジスタを選択する。これにより、プログラムコードに記述されたオペランドによって指定されるレジスタを制御信号に応じて可変に設定することができる。このように、制御信号に応じて直接レジスタを選択させることが可能となるため、ソフトウェアによって制御信号解析処理及び選択判断処理を実行する必要がなくなり、高速処理が可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００２１】
本発明に係るマイクロプロセッサは、オペランドを保持するオペランド保持部１、制御信号５によってレジスタ指定を修飾するレジスタ指定修飾部２、修飾されたレジスタ指定に基づきレジスタを選択するレジスタ選択部３、及びレジスタ部４を具備する。
【００２２】
なお、マイクロプロセッサが実行する処理が記述されているプログラムコードは、演算処理などの命令を指示するオペコード（図示せず）と、レジスタを指示するオペランド１０とを有している。オペランド１０は、さらに、プログラムコードに予め記述されているレジスタ指定フィールド１１と、制御信号５によって修飾される修飾フィールド１２とを有する。オペランド１０に占めるレジスタ指定フィールド１１と修飾フィールド１２の割合、及びその配置は、必要に応じて任意に設定することができる。
【００２３】
以下、各部について説明する。
オペランド保持部１は、順次読み込まれるプログラムコードに記述されているオペランド１０を当該プログラムコードの処理中に保持する記憶手段である。
【００２４】
レジスタ指定修飾部２は、オペランド保持部１に保持されるオペランド１０と、制御信号５とを入力し、制御信号５の値によってオペランド１０を修飾し、レジスタ選択部３へ出力する。レジスタ指定修飾部２では、オペランド１０内の定められた位置にある修飾フィールド１２を制御信号５の値に応じて修飾する。たとえば、修飾フィールド１２を制御信号５から入力される値に置き換える。また、修飾フィールド１２の値と、制御信号５の値との論理演算を行って、演算結果を修飾フィールド１２に格納する。このようにして修飾が施された修飾フィールド１２ａと、レジスタ指定フィールド１１とで構成される修飾オペランド１０ａに応じた選択指示は、レジスタ選択部３へ出力する。なお、制御信号５は、レジスタを指示する指示条件に応じて値が設定される信号である。たとえば、マイクロプロセッサ内部の任意の状態を表す状態信号、マイクロプロセッサ外部の状態を表す外部信号など、従来のレジスタ選択処理において用いられた制御信号をそのまま用いることができる。
【００２５】
レジスタ選択部３は、修飾オペランド１０ａ、または、修飾オペランド１０ａに基づくレジスタ指定に応じて、レジスタ部４の中から、指定されたレジスタを選択してアクセス可能とする。
【００２６】
レジスタ部４は、レジスタ選択部３から選択されたレジスタが、データバス６に接続する。これにより、データバス６を介したレジスタへのデータ書き込み、または、データ読み出しができるようになる。
【００２７】
このような構成のマイクロプロセッサの動作について説明する。
マイクロプロセッサは、図示しないメモリ領域に格納されるプログラムコードを読み込み、そのオペランド１０をオペランド保持部１に保持する。オペランド１０は、レジスタ指定修飾部２も送られる。レジスタ指定修飾部２は、制御信号５の値に応じて、修飾フィールド１２の値を修飾し、この修飾オペランド１０ａをレジスタ選択部３へ出力する。レジスタ選択部３は、修飾オペランド１０ａによって指示されるレジスタをレジスタ部４から選択し、アクセス可能となるように設定する。
【００２８】
たとえば、修飾フィールド１２を１ビットとし、制御信号５は、１または０の値をとる信号であるとすると、レジスタ選択部３には、修飾フィールド１２ａが１または０の修飾オペランド１０ａが入力される。レジスタ選択部３は、修飾フィールド１２ａとレジスタ指定フィールド１１を含めた全体の値で選択するレジスタを決めるので、修飾フィールド１２ａの値が異なると、別のレジスタが選択されることになる。
【００２９】
このように、レジスタを指示する指示条件に応じて値が設定される制御信号によってオペランドを修飾することにより、１のプログラムコードによって複数のレジスタを選択することが可能となる。上記の例では、１のプログラムコードで２つのレジスタのいずれかを選択することができる。一連の処理は、ソフトウェア処理による解析と判断が実行されることなく行われるので、高速処理が可能となる。特に、何度も選択処理が行われるような構成の場合には、処理時間を大幅に短縮することができる。
【００３０】
また、レジスタを選択するための処理手順を記述したプログラムを生成する必要はなくなり、プログラム量のコンパクト化も図ることができるという効果も得られる。
さらに、レジスタ指定フィールド１１によって指示されるアドレスが共通する複数のレジスタグループを設けておき、レジスタグループを修飾フィールド１２ａの値に応じて切り替えるようにすることもできる。レジスタ選択部３は、修飾フィールド１２ａの値に対応するレジスタグループに属し、かつ、レジスタ指定フィールド１１の指定に対応するレジスタを選択する。これにより、プログラムコードのコードサイズを増やすことなく、オペランドのフィールド語長分以上のレジスタを選択することが可能となる。
【００３１】
以下、実施の形態について、図面を参照して詳細に説明する。
図２は、本発明の実施の形態のマイクロプロセッサの全体構成を示した図である。
本発明の実施の形態のマイクロプロセッサは、命令メモリ部１０１、命令カウンタ部１０２、命令デコーダ部１０３、レジスタアドレス修飾回路１０４、レジスタ選択回路１０５、レジスタ部１０６、入力１レジスタ部１０７、入力２レジスタ部１０８、演算部１０９、及びデータパス１１０を有する。
【００３２】
命令メモリ部１０１は、マイクロプロセッサが実行するプログラムコードが格納されるメモリである。命令カウンタ部１０２は、カウンタ信号によって、命令メモリ部１０１から読み出す命令が格納されるメモリアドレスを指示する。命令カウンタ部１０２が指示する命令メモリ部１０１のメモリアドレスからプログラムコードが読み込まれ、命令デコーダ部１０３へ出力される。命令デコーダ部１０３は、命令メモリ部１０１から読み出されたプログラムコードを解析し、オペコード部に基づく「命令」を生成し、演算部１０９へ出力する。また、オペランド部に基づいてレジスタを指定する「アドレス」を生成し、レジスタアドレス修飾回路１０４へ出力する。
【００３３】
レジスタアドレス修飾回路１０４は、命令デコーダ部１０３から取得したプログラムコードに記述されたアドレスを、レジスタを指示する制御信号によって修飾する。レジスタ選択回路１０５は、レジスタアドレス修飾回路１０４によって指示されたレジスタを選択する。レジスタ部１０６は、レジスタ、ＲＥＧ０，ＲＥＧ１，・・・，ＲＥＧ３１の３２個のレジスタで構成される。また、レジスタ選択回路１０５によって選択されたレジスタは、データパス１１０を介してデータバスに接続され、レジスタからのデータの読み出し、及びレジスタへのデータ書き込みが可能となる。
【００３４】
入力１レジスタ部１０７は、命令デコーダ部１０３が２つのレジスタを指示するとき、入力１に指示されたレジスタから読み出した値を一時保存するレジスタである。入力２レジスタ部１０８は、同様に、入力２に指示されたレジスタから読み出した値を一時保存するレジスタである。演算部１０９は、入力１レジスタ部１０７及び入力２レジスタ部１０８に格納されるデータを読み出し、命令デコーダ部１０３の命令に従って所定の演算処理を行う。演算結果は、レジスタ選択回路１０５を介して、指示されたレジスタに格納される。
【００３５】
本発明の実施の形態では、マイクロプロセッサは、命令メモリ部１０１に格納されるプログラムコードを読み込み、読み込んだプログラムコードを解釈して順次処理を実行する。読み込んだプログラムコードにレジスタを指定するオペランドが含まれている場合には、オペランドを制御信号によって修飾し、修飾されたオペランドを用いてレジスタの選択を行う。
【００３６】
以下、オペランドの修飾とレジスタの選択処理を、いくつかの適用例を用いて説明する。
第１の適用例として、修飾フィールドを制御信号によって置き換えてオペランドを修飾する場合について説明する。図３は、本発明の実施の形態のマイクロプロセッサの第１の適用例を示した図である。
【００３７】
第１の適用例のマイクロプロセッサは、６ビットのレジスタアドレスによって指定可能な６４個のレジスタを有する。レジスタは、最上位１ビット（ｂ５）によって識別されるレジスタグループ０（３１）と、レジスタグループ１（３２）の２つのグループで構成される。レジスタグループ０（３１）のレジスタは、最上位１ビット（ｂ５）が「０」のレジスタ群である。各レジスタをレジスタアドレスに対応付けて、ＲＥＧ０からＲＥＧ３１と表記する。レジスタグループ１（３２）のレジスタは、最上位１ビット（ｂ５）が「１」のレジスタ群である。同様に、レジスタアドレスに対応付けて、ＲＥＧ３２からＲＥＧ６３と表記する。なお、ＲＥＧ３２からＲＥＧ６３は、下位５ビット（ｂ０〜ｂ４）で表されるレジスタアドレスは、「０」から「３１」になり、ＲＥＧ０からＲＥＧ３２と共通になる。また、レジスタを指定するオペランドは、６ビット（ｂ０〜ｂ５）で構成され、下位５ビット（ｂ０〜ｂ４）はレジスタ指定フィールド２１ａ、最上位１ビット（ｂ５）は修飾フィールド２１ｂに割り当てられる。
【００３８】
このような構成のマイクロプロセッサでは、レジスタアドレス修飾回路１０４は、プログラムコードから読み出したオペランドの下位５ビット（ｂ０〜ｂ４）をレジスタ指定フィールド２１ａに設定し、制御信号のレベルに応じた値を修飾フィールド２１ｂに設定することによって、６ビットで構成される修飾オペランドを生成する。レジスタ選択回路１０５は、修飾オペランドの示すレジスタアドレスによってレジスタを選択する。
【００３９】
本発明の実施の形態の第１の適用例によれば、プログラムコードのオペランドによって指示されるアドレスが共通する複数のレジスタグループを、制御信号によって切り替えることができる。プログラムを行う際には、レジスタ指定フィールド２１ａの下位５ビット（ｂ０〜ｂ４）に相当するオペランドのみをプログラムコードに設定しておく。
【００４０】
このように、外部からの制御信号によってレジスタの切り替えを行うことができるため、ソフトウェアによる解析・判断処理と比較し、処理の高速化が可能となる。また、外部からの制御信号をレジスタグループ選択に用いることにより、プログラムコードに設定されるオペランドのフィールド語長分以上のレジスタをアドレッシングすることが可能となる。
【００４１】
第２の適用例として、修飾フィールドに相当するオペランドの値と制御信号との論理演算を行ってオペランドを修飾する場合について説明する。図４は、本発明の実施の形態のマイクロプロセッサの第２の適用例を示した図である。
【００４２】
第２の適用例のマイクロプロセッサは、５ビットのレジスタアドレスによって指定可能な３２個のレジスタで構成されるレジスタ部３３を有する。レジスタ部３３の各レジスタをレジスタアドレスに対応付けて、ＲＥＧ０からＲＥＧ３１と表記する。レジスタを指定するオペランドは、５ビット（ｂ０〜ｂ４）で構成され、上位４ビット（ｂ１〜ｂ４）はレジスタ指定フィールド２２ａ、最下位１ビット（ｂ０）は修飾フィールド２２ｂに割り当てられる。
【００４３】
また、第２の適用例のレジスタアドレス修飾回路１０４は、プログラムコードによって設定されるオペランドの最下位１ビット（ｂ０）と、制御信号の値との論理和を演算するＯＲ回路４０を有し、演算結果を修飾フィールド２２ｂに設定する。
【００４４】
このような構成のマイクロプロセッサでは、レジスタアドレス修飾回路１０４は、プログラムコードから読み出したオペランド５ビット（ｂ０〜ｂ４）のうち、上位４ビット（ｂ１〜ｂ４）をそのままレジスタ指定フィールド２２ａに設定する。そして、最下位１ビット（ｂ０）と、制御信号のレベルに応じた値との論理和を修飾フィールド２２ｂに設定することによって、５ビットで構成される修飾オペランドを生成する。レジスタ選択回路１０５は、修飾オペランドの示すレジスタアドレスによってレジスタを選択する。
【００４５】
本発明の実施の形態の第２の適用例によれば、プログラムコードのオペランドによって指示される上位アドレスが共通する複数のレジスタを、制御信号によって切り替えることができる。プログラムコードでプログラムを行う際には、共通する上位４ビットと、最下位１ビット（ｂ０）を「０」とで構成されるレジスタアドレスをプログラムコードに設定しておく。たとえば、ＲＥＧ０とＲＥＧ１は、上位４ビットのアドレスが「００００（Ｂ）」と共通するので、プログラムコードには、「０００００（Ｂ）」を設定しておく。なお、（Ｂ）は、バイナリ表記であることを表す（以下、同じ）。この場合、制御信号が「０」であれば、デコードされたレジスタアドレスは、「０００００（Ｂ）」となり、ＲＥＧ０を指定する。制御信号が「１」であれば、レジスタアドレスは「００００１（Ｂ）」となり、ＲＥＧ１が指定される。レジスタ部３３は、論理的にペアリングされたものと考えられ、プログラムコードでは、レジスタの書き込みを偶数レジスタ（ＲＥＧ０，ＲＥＧ２，・・・、ＲＥＧ３０）へのアクセスに限定し、外部からの制御信号に応じてペアとなるレジスタのいずれかを選択させる。
【００４６】
このように、外部からの制御信号によってレジスタの切り替えを行うことができるため、処理の高速化が可能となる。
図５は、本発明の実施の形態のマイクロプロセッサを用いた場合のソフトウェアによる処理手順を示したフローチャートである。
【００４７】
ここでは、図７に示した従来の処理を本発明の実施の形態のマイクロプロセッサで実現する場合の処理手順を示している。すなわち、制御信号が制御信号のレベルが「真」であればレジスタＡ、レベルが「偽」であればレジスタＢ、を選択して値Ｘを書き込む処理を行う。このとき、レジスタＡとレジスタＢのレジスタアドレスは、最下位ビットを除いて共通であり、レジスタＢのレジスタアドレスは、「レジスタＡのレジスタアドレス＋１」によって指定できるとする。オペランドと制御信号の関係は、図４に示したように、オペランドは、オペランドの最下位ビットが修飾フィールドに相当し、オペランドの最下位ビットと、制御信号との論理和で修飾されるとする。また、制御信号は、「真」のときにはＬｏｗレベル（＝０）、「偽」のときにはＨｉｇｈレベル（＝１）となる。
【００４８】
ソフトウェアでは、レジスタＡに値Ｘを書き出す（ステップＳ０１）という処理が実行される。
このとき、マイクロプロセッサ内では、レジスタＡを指定するオペランドに対し、制御信号に基づく修飾が行われる。したがって、制御信号が「真」のときには、制御信号はＬｏｗレベル（＝０）となり、オペランドは、レジスタＡを指定したままである。これに対し、制御信号が「偽」のときには、制御信号は、Ｈｉｇｈレベル（＝１）となり、オペランドの最下位ビットが１となり、オペランドはレジスタＢを指定するようになる。
【００４９】
このように、レジスタの選択処理はマイクロプロセッサ内で自動的に行われるため、ソフトウェアによって選択処理を行う必要がなくなる。
上記の例では、２つのレジスタグループ、または２組のレジスタから所望のレジスタを指定する場合について説明したが、選択するレジスタの数は任意である。
【００５０】
第３の適用例として、複数のレジスタから所望のレジスタを選択する場合について説明する。図６は、本発明の実施の形態のマイクロプロセッサの第３の適用例を示した図である。
【００５１】
第３の適用例のマイクロプロセッサは、プログラムコードに記述されるレジスタアドレス（以下、ベースアドレスとする）から、順にレジスタアドレスが割り当てられた４つのレジスタから成るレジスタ部３４を有する。図の例では、ベースアドレスに対応するレジスタＲ０（０）から、順番に、レジスタＲ０（１）、レジスタＲ０（２）、レジスタＲ０（３）がある。レジスタを指定するオペランドは、オペランド上位に配置されるレジスタ指定フィールド２３ａと、下位２ビットの修飾フィールド２３ｂで構成される。また、この例では、オペコード部２３ｃに、レジスタＲ０に１を加算する演算「Ｒ０←Ｒ０＋１」を行う命令が設定されている。
【００５２】
修飾フィールド２３ｂに値を設定する制御信号は、条件Ａが成立したときには、「００（Ｂ）」、条件Ｂが成立したときには、「０１（Ｂ）」、条件Ｃが成立したときには、「１０（Ｂ）」、及び条件Ｄが成立したときには、「１１（Ｂ）」を出力する。
【００５３】
このような構成のマイクロプロセッサでは、レジスタアドレス修飾回路１０４は、プログラムコードから読み出したベースアドレスを表すオペランドをレジスタ指定フィールド２３ａに設定する。そして、制御信号のレベルに応じた値を修飾フィールド２３ｂに設定し修飾オペランドを生成する。レジスタ選択回路１０５は、修飾オペランドの示すレジスタアドレスによってレジスタを選択する。その後、演算部１０９により、「Ｒ０←Ｒ０＋１」の演算が行われ、選択されたレジスタの値が演算結果に書き換えられる。
【００５４】
本発明の実施の形態の第３の適用例によれば、プログラムコードのオペランドによって指示されるベースアドレスから並ぶ複数のレジスタを制御信号によって切り替えることができる。プログラムコードでプログラムを行う際には、オペコードに演算命令「Ｒ０←Ｒ０＋１」、及びオペランドにベースアドレスを記述しておく。条件に応じてレジスタが切り替えられ、演算が順次行われることにより、レジスタＲ０（０）には、条件Ａが成立した回数、レジスタＲ０（１）には、条件Ｂが成立した回数、レジスタＲ０（２）には、条件Ｃが成立した回数、レジスタＲ０（３）には、条件Ｄが成立した回数が格納される。
【００５５】
このように、外部からの制御信号によってレジスタの切り替えを行うことができるため、条件成立の解析と判断をソフトウェアで行う必要がなくなり、処理の高速化が可能となる。
【００５６】
なお、命令セットを工夫し、特殊命令を実行させることなどにより、レジスタ選択を可能にし、任意のレジスタに格納されるデータを読み出すようにすることができる。
【図面の簡単な説明】
【００５７】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態のマイクロプロセッサの全体構成を示した図である。
【図３】本発明の実施の形態のマイクロプロセッサの第１の適用例を示した図である。
【図４】本発明の実施の形態のマイクロプロセッサの第２の適用例を示した図である。
【図５】本発明の実施の形態のマイクロプロセッサを用いた場合のソフトウェアによる処理手順を示したフローチャートである。
【図６】本発明の実施の形態のマイクロプロセッサの第３の適用例を示した図である。
【図７】従来のマイクロプロセッサにおけるレジスタを選択する処理手順例を示した図である。
【符号の説明】
【００５８】
１・・・オペランド保持部、２・・・レジスタ指定修飾部、３・・・レジスタ選択部、４・・・レジスタ部、５・・・制御信号、６・・・データバス
【図１】
2008107902.tif 000003
【図２】
2008107902.tif 000004
【図３】
2008107902.tif 000005
【図４】
2008107902.tif 000006
【図５】
2008107902.tif 000007
【図６】
2008107902.tif 000008
【図７】
2008107902.tif 000009