説明

マイクロプロセッサ

【目的】 この発明は、メモリアクセスならびにプログラムステップ数をともに削減し、セマフォを実行する処理の高速化を達成し得るマイクロプロセッサを提供することを目的とする。
【構成】 この発明は、条件オペランド書込み演算命令をデコードした際に条件オペランド書込み信号を出力する命令デコーダ2と、前記命令デコーダ2における命令のデコード結果にしたがってオペランドデータを演算する演算器4と、前記演算器4における演算結果の条件フラグが設定されるフラグレジスタ5と、前記フラグレジスタ5に設定された条件フラグの内容と前記デコーダ2から出力される条件オペランド書込み信号に基づいて演算結果のオペランドデータ書込みを禁止する禁止信号を出力するANDゲート6と、前記ANDゲート6から出力される禁止信号にしたがって演算結果のオペランドデータ書込みを禁止制御するオペランド書込み制御ユニット7とからなる。

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、オペレーティングシステムで多用される基本操作を1つの命令で実行できるマイクロプロセッサに関する。
【0002】
【従来の技術】図2に示すような、命令レジスタ11に格納された機械語命令をデコーダ12によりデコードし、オペランドフェッチユニット13でフェッチされたオペランドデータをデコード結果にしたがって演算器14により演算し、演算結果の条件フラグをフラグレジスタ15に格納するとともに、演算結果をオペランドデータとしてオペランド書込み制御ユニット17の制御の下にレジスタファイル18又はメモリ19に書込む従来のマイクロプロセッサでは、整数のデクリメントやインクリメントを行なう命令で、オペランドに対する演算結果が負になったりオーバーフローする場合には、条件フラグにその条件が表示されるものの、オペランドデータは、負の値やオーバーフローした値に更新されていた。
【0003】しかしながら、オペレーティングシステムの機能の一つである計数型セマフォを実現する場合には、セマフォ獲得の基本操作として、カウンタの値を調べ、正であるならばデクリメントし、0であるならば待ちに入るという操作が必要となる。これをマイクロプロセッサのプログラムとして実現する場合には、次に示すように、メモリ上にカウンタを配して、方法1:cmp #0,@countbz waitsub #1,@countセマフォ獲得成功時の処理wait:待ちに入る時の処理のように比較命令(cmp)と、条件分岐命令(bz)、減算命令(sub)を組み合わせるか、または、方法2:sub #1,@countblt waitセマフォ獲得成功時の処理wait:mov #0,@count待ちに入る時の処理というプログラムで実現できる。
【0004】上述した方法のうち、方法1では、@countが比較命令で読み出されているにもかかわらず、直後の減算命令でもう一度読み出してから減算結果を書き込むようにしている。
【0005】一方、方法2では、カウンタが“0”である場合には、書き込みが2回必要となる。これらの操作では、待ちに入り終るまでの間に割り込みが入り、その後セマフォのカウントが操作されると矛盾が生じる。このため、これらの操作は割り込みを禁止して行なう必要があり、できるだけ短い時間で実行することが要求され、無駄なメモリアクセスを省略する必要がある。
【0006】そこで、従来のマイクロプロセッサでは、このメモリアクセスを省くためにレジスタを利用して、次のようなプログラムにする必要がある。
【0007】方法3:mov @count,r0bz waitsub #1,r0mov r0,@countセマフォ獲得成功時の処理wait:待ちに入る時の処理方法4:mov @count,r0sub #1,r0blt waitmov r0,@countセマフォ獲得成功時の処理wait待ちに入る時の処理このようなプログラムにあっては、無駄なメモリアクセスをなくすことができるが、プログラムのステップ数が増加してしまう。
【0008】以上、計数型セマフォを実現する場合のデクリメントについて説明したが、インクリメントの場合にも、同じような問題が生じる。すなわち、計数型セマフォのカウントがオーバーフローした結果、負の値や“0”を表示するようになった瞬間に割り込みが生じ、その後、同じセマフォに対するアクセスが発生すると、動作に矛盾が生じる。したがって、このような場合であっても、割り込みを禁止する必要があり、できるだけ高速に処理することが要求される。それを実現するためのプログラムを示すと、add #1,@countbvs overflowセマフォ返却成功時の処理overflow:mov #MAX,@countカウントオーバーフロー時の処理または、mov @count,r0add #1,r0bvs overflowmov r0,@countセマフォ獲得成功時の処理overflow:カウントオーバーフロー時の処理となる。
【0009】しかしながら、このようなプログラムにあっても無駄なオペランドアクセスとプログラムステップ数が存在し、処理時間がかかっていた。
【0010】
【発明が解決しようとする課題】以上説明したように、従来のマイクロプロセッサにあって、計数型のセマフォ獲得/返却処理を実行する場合にはメモリアクセスに時間が費やされ、処理を高速に行なうことが困難になっていた。一方、不用なメモリアクセスを削除して処理の高速化を図ろうとすると、プログラムのステップ数が増加するという不具合を招いていた。
【0011】このように、従来のマイクロプロセッサにあっては、メモリアクセスならびにプログラムステップ数をともに削減することはできなかった。
【0012】そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、メモリアクセスならびにプログラムステップ数をともに削減し、セマフォを実行する処理の高速化を達成し得るマイクロプロセッサを提供することにある。
【0013】
【課題を解決するための手段】上記目的を達成するために、この発明は、条件オペランド書込み演算命令をデコードした際に条件オペランド書込み信号を出力する命令デコード手段と、前記命令デコード手段における命令のデコード結果にしたがってオペランドデータを演算する演算手段と、前記演算手段における演算結果の条件フラグが設定される設定手段と、前記設定手段に設定された条件フラグの内容と前記デコード手段から出力される条件オペランド書込み信号に基づいて演算結果のオペランドデータ書込みを禁止する禁止信号を出力する信号生成手段と、前記信号生成手段から出力される禁止信号にしたがって演算結果のオペランドデータ書込みを禁止制御するオペランド書込み制御手段とからなる。
【0014】
【作用】上記構成において、この発明は、条件オペランド書込み演算命令の実行により、オペランド演算の演算結果に応じて演算結果のオペランドデータ書込みを禁止制御するようにしている。
【0015】
【実施例】以下、図面を用いてこの発明の実施例を説明する。
【0016】図1はこの発明の一実施例に係るマイクロプロセッサの構成を示す図である。
【0017】図1において、マイクロプロセッサは、図2R>2に示した従来のマイクロプロセッサに備えられたと同様の命令レジスタ1、オペランドフェッチユニット3、演算器4、フラグレジスタ5、レジスタファイル8及びメモリ9を有し、さらに、この発明の特徴的な構成要件となる命令デコーダ2、AND(論理積)ゲート6及びオペランド書込み制御ユニット7を備えている。
【0018】命令デコーダ2は、命令レジスタ1に格納される機械語命令をデコードしてデコード結果をオペランドフェッチユニット3及び演算器4に与える。命令デコーダ2は、本発明のマイクロプロセッサで実行される特徴的な命令である条件オペランド演算命令をデコードすると、条件オペランド書込み信号を生成し、生成した信号をANDゲート6に与える。
【0019】条件オペランド演算命令は、条件オペランド書込みデクリメント命令と条件オペランド書込みインクリメント命令とからなる。条件オペランド書込みデクリメント命令は、符号付き又は無し整数のオペランドに対してデクリメントの演算結果が“0”又は正の場合には、演算結果のオペランド書込み処理を実行するが、演算結果が負になる場合には、演算結果のオペランド書込みは行なわずに条件フラグだけを設定するという命令である。
【0020】一方、条件オペランド書込みインクリメント命令は、符号付き又は無し整数のオペランドに対してインクリメントの演算結果がオーバーフローしない場合には、演算結果のオペランド書込み処理を実行するが、演算結果がオーバーフローする場合には、演算結果のオペランド書込みは行なわずに条件フラグだけを設定する命令である。
【0021】ANDゲート6は、フラグレジスタ5の条件フラグと命令デコーダ2から与えられる条件オペランド書込み信号に基づいて、オペランドの書込みを制御する制御信号を生成し、生成した制御信号をオペランド書込み制御ユニット7に与える。ANDゲート6は、デクリメントの演算結果が負になった旨がフラグレジスタ5の条件フラグにセットされ、かつ条件オペランド書込み信号が与えられると、オペランドの書込みを禁止する禁止信号を出力する。また、ANDゲート6は、インクリメントの演算結果がオーバーフローした旨がフラグレジスタ5の条件フラグにセットされ、かつ条件オペランド書込み信号が与えられると、上述したと同様に禁止信号を出力する。一方、ANDゲート6は、上述した以外の場合には、演算結果のオペランドデータ書込みを許可する許可信号をオペランド書込み制御ユニット7に与える。
【0022】オペランド書込み制御ユニット7は、ANDゲート6から与えられる書込み制御信号に基づいて、演算器4で得られた演算結果をオペランドデータとしてレジスタファイル8又はメモリ9に書込むか否かを制御する。
【0023】このような構成において、条件オペランド書込みデクリメント命令が命令デコーダ2によってデコードされると、条件オペランド書込み信号がデコーダ2からANDゲート6に与えられる。
【0024】一方、デコード結果に応じてオペランドデータがオペランドフェッチユニット3でフェッチされて演算器4に与えられ、デクリメント演算が行なわれる。この演算結果が負となり、フラグレジスタ5の条件フラグにこの旨が示されると、オペランドデータの書込みを禁止する禁止信号がANDゲート6からオペランド書込み制御ユニット7に与えられる。これにより、演算結果のレジスタファイル8又はメモリ9へのオペランドデータ書込みはオペランド書込み制御ユニット7により禁止される。
【0025】条件オペランドインクリメント命令にあっても、上述したと同様に作用し、演算結果がオーバーフローした場合にオペランドデータの書込みが禁止される。
【0026】これに対して、通常のデクリメント命令又はインクリメント命令がデコードされた場合には、条件オペランド書込み信号はデコーダ2からANDゲート6に出力されず、演算結果のオペランドデータ書込みは条件フラグによらず実行されることになる。
【0027】このように、図1に示す構成において条件オペランド書込み演算命令を実行することで、セマフォ獲得処理におけるデクリメント命令は、条件オペランド書込みデクリメント命令をニモニック表示で「cdec」とすると、次に示すようなプログラムとなる。
【0028】cdec @countblt waitセマフォ獲得成功時の処理wait待ちに入る時の処理また、セマフォ返却処理におけるインクリメント命令は、条件オペランド書込みインクリメント命令をニモニック表示で「cinc」とすると、次に示すようなプログラムとなる。
【0029】cinc @countbvs overflowセマフォ返却成功時の処理overflow:カウントオーバーフロー時の処理したがって、図1に示す構成のマイクロプロセッサにあっては、上述したプロクラムが実行可能となるため、セマフォ獲得/返却処理において、従来ではメモリアクセスが3回必要になっていたが、上記実施例では2回で済むことになる。また、処理に必要な命令フェッチの回数も1/3程度に減少させることができる。これにより、プログラムのステップ数ならびにメモリアクセスの削減を図ることができる。
【0030】なお、この発明は、上記実施例に限ることはなく、上記実施例ではセマフォ処理について説明したが、一般にカウンタを利用するプログラムにおいても有効となる。また、被演算値のオペランドデータは符号の有無にかかわらず、条件オペランド書込み演算命令で取り扱えることは勿論である。
【0031】
【発明の効果】以上説明したように、この発明によれば、条件オペランド書込み演算命令の実行により、オペランド演算の演算結果が負又はオーバーフローした場合には、演算結果のオペランドデータ書込みを禁止するようにしたので、セマフォ獲得/返却処理を実行するためのメモリアクセス及びプログラムステップ数をともに削減することが可能となり、これにより、セマフォ獲得/返却処理の高速化を達成することができる。
【図面の簡単な説明】
【図1】この発明の一実施例に係るマイクロプロセッサの構成を示す図である。
【図2】従来のマイクロプロセッサの構成を示す図である。
【符号の説明】
1 命令レジスタ
2 命令デコーダ
3 オペランドフェッチユニット
4 演算器
5 フラグレジスタ
6 ANDゲート
7 オペランド書込み制御ユニット
8 レジスタファイル
9 メモリ

【特許請求の範囲】
【請求項1】 条件オペランド書込み演算命令をデコードした際に条件オペランド書込み信号を出力する命令デコード手段と、前記命令デコード手段における命令のデコード結果にしたがってオペランドデータを演算する演算手段と、前記演算手段における演算結果の条件フラグが設定される設定手段と、前記設定手段に設定された条件フラグの内容と前記デコード手段から出力される条件オペランド書込み信号に基づいて演算結果のオペランドデータ書込みを禁止する禁止信号を出力する信号生成手段と、前記信号生成手段から出力される禁止信号にしたがって演算結果のオペランドデータ書込みを禁止制御するオペランド書込み制御手段とを有することを特徴とするマイクロプロセッサ。

【図1】
image rotate


【図2】
image rotate