(57)【要約】【課題】  プログラム設計を容易に行うことができるとともにプログラムの記述を簡素化するのに好適なステータスレジスタ設定装置を提供する。【解決手段】  与えられたイミディエート値およびステータスレジスタ１２ａの現在値の論理積を演算するＡＮＤ回路３０と、与えられたイミディエート値およびステータスレジスタ１２ａの現在値の論理和を演算するＯＲ回路３２とを備える。論理積書換命令コードが与えられたときは、第１オペランドのイミディエート値をＡＮＤ回路３０に与え、ＡＮＤ回路３０の出力値をステータスレジスタ１２ａに格納する。また、論理和書換命令コードが与えられたときは、第１オペランドのイミディエート値をＯＲ回路３２に与え、ＯＲ回路３２の出力値をステータスレジスタ１２ａに格納する。【選択図】  図２
2005100119.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた設定値および前記ステータスレジスタの現在値の論理積を演算する論理積回路を備え、
前記設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を前記論理積回路に与え、前記論理積回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とするステータスレジスタ設定装置。
【請求項２】
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた設定値および前記ステータスレジスタの現在値の論理和を演算する論理和回路を備え、
前記設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を前記論理和回路に与え、前記論理和回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とするステータスレジスタ設定装置。
【請求項３】
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた第１設定値および第２設定値の論理積を演算する第１論理積回路と、前記第２設定値をビット反転するビット反転回路と、前記ビット反転回路の出力値および前記ステータスレジスタの現在値の論理積を演算する第２論理積回路と、前記第１論理積回路の出力値および前記第２論理積回路の出力値の論理和を演算する論理和回路とを備え、
前記第１設定値および前記第２設定値が対応付けられた特定の命令コードが与えられたときは、当該第１設定値を前記第１論理積回路に、当該第２設定値を前記第１論理積回路および前記ビット反転回路にそれぞれ与え、前記論理和回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とするステータスレジスタ設定装置。
【請求項４】
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を論理積回路に与える設定値入力ステップと、
前記設定値入力ステップで入力した設定値および前記ステータスレジスタの現在値の論理積を前記論理積回路により演算する論理積演算ステップと、
前記論理積回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とするステータスレジスタ設定方法。
【請求項５】
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を論理和回路に与える設定値入力ステップと、
前記設定値入力ステップで入力した設定値および前記ステータスレジスタの現在値の論理和を前記論理和回路により演算する論理和演算ステップと、
前記論理和回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とするステータスレジスタ設定方法。
【請求項６】
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
第１設定値および第２設定値が対応付けられた特定の命令コードが与えられたときは、当該第１設定値を第１論理積回路に、当該第２設定値を第１論理積回路およびビット反転回路にそれぞれ与える設定値入力ステップと、
前記設定値入力ステップで入力した第１設定値および第２設定値の論理積を前記第１論理積回路により演算する第１論理積演算ステップと、
前記設定値入力ステップで入力した第２設定値を前記ビット反転回路によりビット反転するビット反転ステップと、
前記ビット反転回路の出力値および前記ステータスレジスタの現在値の論理積を第２論理積回路により演算する第２論理積演算ステップと、
前記第１論理積回路の出力値および前記第２論理積回路の出力値の論理和を論理和回路により演算する論理和演算ステップと、
前記論理和回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とするステータスレジスタ設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステータスレジスタを設定する装置および方法に係り、特に、プログラム設計を容易に行うことができるとともにプログラムの記述を簡素化するのに好適なステータスレジスタ設定装置およびステータスレジスタ設定方法に関する。
【背景技術】
【０００２】
ＤＳＰ（Digital Signal Processor）等のプロセッサには、ステータスレジスタが設けられている。ステータスレジスタは、プロセッサの内部状態をＯＳ（Operating System）等のシステムプログラムに通知したり、逆に、システムプログラムがプロセッサの内部状態を変更したりするために用いられる。桁上げや桁下げが生じたか否かを示すキャリー・ボローフラグ、割込処理の許可または禁止を示すフラグなどがその例である。
【０００３】
従来、ステータスレジスタを利用した演算システムとしては、例えば、図８に示すような演算処理システム２００があった。
図８は、従来の演算処理システム２００の構成を示すブロック図である。
演算処理システム２００は、図８に示すように、プロセッサ１５０と、メモリ１２０とで構成されており、これらは、データを転送するための信号線であるバス１９９で相互にかつデータ授受可能に接続されている。
【０００４】
メモリ１２０は、プロセッサ１５０の制御プログラムをあらかじめ所定領域に格納しているＲＯＭと、ＲＯＭ等から読み出したデータやプロセッサ１５０の演算過程で必要な演算結果を格納するためのＲＡＭとを有して構成されている。
プロセッサ１５０は、演算処理を行う演算ユニット１０と、メモリ１２０から読み出したデータを保持するレジスタファイル１２と、プロセッサ１５０の動作を制御するプロセッサ制御回路１４とで構成されている。
【０００５】
レジスタファイル１２は、ステータスレジスタ１２ａと、複数の汎用レジスタ１２ｂとで構成されている。
プロセッサ制御回路１４は、命令デコーダ、プログラムコントローラおよび割込コントローラ等からなり、命令コードをメモリ１２０から読み込み、読み込んだ命令コードをデコードし、そのデコード結果に基づいてプロセッサ１５０の動作を制御するようになっている。
【０００６】
演算ユニット１０は、プロセッサ制御回路１４の制御に応じて演算処理を行うようになっている。例えば、ロードを行うことを示す命令コードが与えられた場合、バス１９９を介してメモリ１２０のデータを汎用レジスタ１２ｂに読み込む。また、演算処理を行うことを示す命令コードが与えられた場合、汎用レジスタ１２ｂのデータに対して演算処理を行う。また、ストアを行うことを示す命令コードが与えられた場合、バス１９９を介して汎用レジスタ１２ｂのデータをメモリ１２０に書き込む。
【０００７】
図９は、ステータスレジスタ１２ａのデータ構造を示す図である。
ステータスレジスタ１２ａは、図９に示すように、１ワードの記憶領域から構成されている。
図９の例では、ＬＳＢである０番目のビットｆ0は、ＭＩＥフラグを記憶する領域である。ＭＩＥフラグは、マスカブル割込の許可または禁止を示すフラグであり、「０」は割込禁止を、「１」は割込許可を意味する。
【０００８】
１番目のビットｆ1は、Ｐ−ＭＩＥフラグを記憶する領域である。Ｐ−ＭＩＥフラグは、マスカブル割込が発生する前のＭＩＥフラグを保持するフラグである。
２〜５番目のビットｆ2〜ｆ5は、ＭＩＬフラグを記憶する領域である。ＭＩＬフラグは、割込を許可する最下位の割込レベルを設定するフラグであり、このフラグで設定した割込レベルよりも高いレベルの割込を許可することを意味する。
【０００９】
６〜９番目のビットｆ6〜ｆ9は、ＰＭフラグを記憶する領域である。ＰＭフラグは、低消費モードその他のパワーモードを設定するフラグである。
１０番目のビットｆ10は、Ｔフラグを記憶する領域である。Ｔフラグは、条件判定の結果、条件が成立したか否かを示すフラグであり、条件が成立したときは、プロセッサ１５０により「１」が設定される。
【００１０】
１１番目のビットｆ11は、Ｃフラグを記憶する領域である。Ｃフラグは、演算の結果、桁上げや桁下げが生じたか否かを示すフラグであり、桁上げや桁下げが生じたときは、プロセッサ１５０により「１」が設定される。
１２番目のビットｆ12は、Ｖフラグを記憶する領域である。Ｖフラグは、加減算の結果を示すフラグである。
【００１１】
１３〜１６番目のビットｆ13〜ｆ14は、ＴｒａｐＩＤフラグを記憶する領域である。ＴｒａｐＩＤフラグは、ＴＲＡＰ命令で設定したイミディエート値を保持するフラグである。
１７番目のビットｆ17は、ＰＢＥフラグを記憶する領域である。ＰＢＥフラグは、ＢＲＥＡＫ命令実行前のＭＩＥフラグを保持するフラグである。
【００１２】
１８番目のビットｆ18は、ＦＥＥフラグを記憶する領域である。ＦＥＥフラグは、０除算やアドレス例外などの内部割込が発生したか否かを示すフラグであり、内部割込が発生したときは、プロセッサ１５０により「０」が設定される。
図１０は、マスカブル割込を許可するプログラムである。
マスカブル割込を許可する場合、まず、すべてのマスカブル割込を禁止し、図１０に示すように、ステップＳ３００に移行するようになっている。なお、図１０のプログラムにおいて、レジスタＳＲ０，ＳＲ１は、汎用レジスタ１２ｂであり、レジスタＳＴは、ステータスレジスタ１２ａである。
【００１３】
ステップＳ３００では、レジスタＳＲ１の上位１６ビットに「0xFFFFFF83」の上位１６ビットを設定し、ステップＳ３０２に移行して、レジスタＳＲ１の下位１６ビットに「0xFFFFFF83」の下位１６ビットを設定する。したがって、ステップＳ３００，Ｓ３０２を経て、レジスタＳＲ１に「0xFFFFFF83」が設定される。
次いで、ステップＳ３０４に移行して、レジスタＳＴの値（以下、このフローチャートにおいて現ステータス値という。）をレジスタＳＲ０に設定し、ステップＳ３０６に移行して、レジスタＳＲ０の値およびレジスタＳＲ１の値の論理積を演算してその演算結果をレジスタＳＲ０に格納する。したがって、ステップＳ３０４，Ｓ３０６を経て、現ステータス値のうち２〜５番目のビットに「０」が設定される。
【００１４】
次いで、ステップＳ３０８を経て、ＭＩＬフラグを設定するために、割込レベルを示す変数または定数の値（#INT_TIMER_0_PRI）を２ビット左シフトし、そのシフト結果をレジスタＳＲ１に設定し、ステップＳ３１０に移行して、レジスタＳＲ０の値およびレジスタＳＲ１の値の論理和を演算してその演算結果をレジスタＳＲ０に格納する。したがって、ステップＳ３０８，Ｓ３１０を経て、現ステータス値のうち２〜５番目のビットに割込レベルが設定される。これにより、ＭＩＬフラグが設定される。
【００１５】
次いで、ステップＳ３１２に移行して、レジスタＳＲ１に「１」を設定し、ステップＳ３１４に移行して、レジスタＳＲ０の値およびレジスタＳＲ１の値の論理和を演算してその演算結果をレジスタＳＲ０に格納する。したがって、ステップＳ３１２，Ｓ３１４を経て、現ステータス値のうち０番目のビットに「１」が設定される。これにより、ＭＩＥフラグが割込許可に設定される。
【００１６】
次いで、ステップＳ３１６に移行して、レジスタＳＲ０の値をレジスタＳＴに設定し、ハンドラの実行等必要な処理を行い、一連の処理を終了して元の処理に復帰させる。
図１１は、プロセッサ１５０のパワーモードを変更するプログラムである。
プロセッサ１５０のパワーモードを変更する場合、まず、すべてのマスカブル割込を禁止し、図１１に示すように、ステップＳ４００に移行するようになっている。なお、図１１のプログラムにおいて、レジスタＳＲ０，ＳＲ１，ＳＲ２は、汎用レジスタ１２ｂであり、レジスタＳＴは、ステータスレジスタ１２ａである。
【００１７】
ステップＳ４００では、レジスタＳＴの値（以下、このフローチャートにおいて現ステータス値という。）をレジスタＳＲ０に設定する。
次いで、ステップＳ４０２に移行して、レジスタＳＲ１に「0x3FFF」を設定し、ステップＳ４０４に移行して、レジスタＳＲ０の値およびレジスタＳＲ１の値の論理積を演算してその演算結果をレジスタＳＲ０に格納する。したがって、ステップＳ４０４，Ｓ４０６を経て、現ステータス値のうち１４，１５番目のビットに「０」が設定される。
【００１８】
次いで、ステップＳ４０６に移行して、レジスタＳＲ１に「0x7800」を設定し、ステップＳ４０８に移行して、レジスタＳＲ０の値およびレジスタＳＲ１の値の論理和を演算してその演算結果をレジスタＳＲ０に格納する。したがって、ステップＳ４０６，Ｓ４０８を経て、現ステータス値のうち１１〜１４番目のビットに「１」が設定される。
次いで、ステップＳ４１０に移行して、レジスタＳＲ０の値をレジスタＳＴに設定し、ハンドラの実行等必要な処理を行い、一連の処理を終了して元の処理に復帰させる。
【００１９】
なお、従来、ステータスレジスタを利用した演算システムとしては、例えば、特許文献１に開示されているステータスレジスタ装置、特許文献２に開示されているフラグレジスタ装置、および特許文献３に開示されている中央演算処理装置が知られている。
【特許文献１】特開平４−２９０１４３号公報
【特許文献２】特開２００１−１７５４８３号公報
【特許文献３】特開２００１−３４４１００号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
このように、ステータスレジスタ１２ａは、システムプログラムが汎用レジスタ１２ｂを利用して読込および書換を行うため、汎用レジスタ１２ｂと同様にワード単位で記憶領域を確保し、１ワード中に複数種のフラグを混在させている。フラグのなかには、プロセッサ上で並列動作するタスク間の排他制御を効率的に行うため、ショートサイクルで書換を行った方が好ましいものがある。
【００２１】
しかしながら、ステータスレジスタ１２ａは、ワード単位でしか書換が行えず、また、１ワード中に複数種のフラグが混在することから、他のフラグに影響を与えず１つのフラグだけを書き換えるには、図１０および図１１に示すように、ステータスレジスタ１２ａの値を汎用レジスタ１２ｂに退避し、汎用レジスタ１２ｂを利用して論理演算を行い、汎用レジスタ１２ｂの値をステータスレジスタ１２ａに書き込む必要がある。図１０のプログラムでは、書換処理として９ステップの処理を要し、図１１のプログラムでは、書換処理として６ステップの処理を要している。
【００２２】
したがって、システムプログラムの設計者は、書換処理に要するサイクル数を考慮してプログラミングを行わなければならず、プログラム設計が困難であるばかりかプログラムの記述が煩雑になるという問題があった。
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、プログラム設計を容易に行うことができるとともにプログラムの記述を簡素化するのに好適なステータスレジスタ設定装置およびステータスレジスタ設定方法を提供することを目的としている。
【課題を解決するための手段】
【００２３】
〔発明１〕  上記目的を達成するために、発明１のステータスレジスタ設定装置は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた設定値および前記ステータスレジスタの現在値の論理積を演算する論理積回路を備え、
前記設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を前記論理積回路に与え、前記論理積回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とする。
【００２４】
このような構成であれば、設定値が対応付けられた特定の命令コードが与えられると、その命令コードに対応付けられている設定値が論理積回路に与えられる。そして、論理積回路により、与えられた設定値およびステータスレジスタの現在値の論理積が演算され、論理積回路の出力値がステータスレジスタに格納される。
これにより、設定値が対応付けられた特定の命令コードを与えるだけで、ステータスレジスタの値のうち任意のビットに「０」を設定することができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができるという効果が得られる。
【００２５】
〔発明２〕  さらに、発明２のステータスレジスタ設定装置は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた設定値および前記ステータスレジスタの現在値の論理和を演算する論理和回路を備え、
前記設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を前記論理和回路に与え、前記論理和回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とする。
【００２６】
このような構成であれば、設定値が対応付けられた特定の命令コードが与えられると、その命令コードに対応付けられている設定値が論理和回路に与えられる。そして、論理和回路により、与えられた設定値およびステータスレジスタの現在値の論理和が演算され、論理和回路の出力値がステータスレジスタに格納される。
これにより、設定値が対応付けられた特定の命令コードを与えるだけで、ステータスレジスタの値のうち任意のビットに「１」を設定することができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができるという効果が得られる。
【００２７】
〔発明３〕  さらに、発明３のステータスレジスタ設定装置は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する装置であって、
与えられた第１設定値および第２設定値の論理積を演算する第１論理積回路と、前記第２設定値をビット反転するビット反転回路と、前記ビット反転回路の出力値および前記ステータスレジスタの現在値の論理積を演算する第２論理積回路と、前記第１論理積回路の出力値および前記第２論理積回路の出力値の論理和を演算する論理和回路とを備え、
前記第１設定値および前記第２設定値が対応付けられた特定の命令コードが与えられたときは、当該第１設定値を前記第１論理積回路に、当該第２設定値を前記第１論理積回路および前記ビット反転回路にそれぞれ与え、前記論理和回路の出力値を前記ステータスレジスタに格納するようになっていることを特徴とする。
【００２８】
このような構成であれば、第１設定値および第２設定値が対応付けられた特定の命令コードが与えられると、その命令コードに対応付けられている第１設定値が第１論理積回路に、その命令コードに対応付けられている第２設定値が第１論理積回路およびビット反転回路にそれぞれ与えられる。次いで、第１論理積回路により、与えられた第１設定値および第２設定値の論理積が演算される。また、ビット反転回路により、与えられた第２設定値がビット反転され、第２論理積回路により、ビット反転回路の出力値およびステータスレジスタの現在値の論理積が演算される。そして、論理和回路により、第１論理積回路の出力値および第２論理積回路の出力値の論理和が演算され、論理和回路の出力値がステータスレジスタに格納される。
【００２９】
これにより、第１設定値および第２設定値が対応付けられた特定の命令コードを与えるだけで、ステータスレジスタの値のうち任意のビットを書き換えることができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができるという効果が得られる。
〔発明４〕  一方、上記目的を達成するために、発明４のステータスレジスタ設定方法は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を論理積回路に与える設定値入力ステップと、
前記設定値入力ステップで入力した設定値および前記ステータスレジスタの現在値の論理積を前記論理積回路により演算する論理積演算ステップと、
前記論理積回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とする。
【００３０】
これにより、発明１のステータスレジスタ設定装置と同等の効果が得られる。
〔発明５〕  さらに、発明５のステータスレジスタ設定方法は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
設定値が対応付けられた特定の命令コードが与えられたときは、当該設定値を論理和回路に与える設定値入力ステップと、
前記設定値入力ステップで入力した設定値および前記ステータスレジスタの現在値の論理和を前記論理和回路により演算する論理和演算ステップと、
前記論理和回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とする。
【００３１】
これにより、発明２のステータスレジスタ設定装置と同等の効果が得られる。
〔発明６〕  さらに、発明６のステータスレジスタ設定方法は、
プロセッサの状態を情報として記憶するステータスレジスタを設定する方法であって、
第１設定値および第２設定値が対応付けられた特定の命令コードが与えられたときは、当該第１設定値を第１論理積回路に、当該第２設定値を第１論理積回路およびビット反転回路にそれぞれ与える設定値入力ステップと、
前記設定値入力ステップで入力した第１設定値および第２設定値の論理積を前記第１論理積回路により演算する第１論理積演算ステップと、
前記設定値入力ステップで入力した第２設定値を前記ビット反転回路によりビット反転するビット反転ステップと、
前記ビット反転回路の出力値および前記ステータスレジスタの現在値の論理積を第２論理積回路により演算する第２論理積演算ステップと、
前記第１論理積回路の出力値および前記第２論理積回路の出力値の論理和を論理和回路により演算する論理和演算ステップと、
前記論理和回路の出力値を前記ステータスレジスタに格納するレジスタ設定ステップとを含むことを特徴とする。
【００３２】
これにより、発明３のステータスレジスタ設定装置と同等の効果が得られる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の第１の実施の形態を図面を参照しながら説明する。図１ないし図４は、本発明に係るステータスレジスタ設定装置およびステータスレジスタ設定方法の第１の実施の形態を示す図である。
本実施の形態は、本発明に係るステータスレジスタ設定装置およびステータスレジスタ設定方法を、図１に示すように、プロセッサ１１０のステータスレジスタ１２ａを設定する場合について適用したものである。
【００３４】
まず、本発明に係る演算処理システム１００の構成を図１を参照しながら説明する。
図１は、本発明に係る演算処理システム１００の構成を示すブロック図である。
演算処理システム１００は、図１に示すように、プロセッサ１１０と、メモリ１２０とで構成されており、これらは、バス１９９で相互にかつデータ授受可能に接続されている。
【００３５】
プロセッサ１１０は、演算ユニット１０およびレジスタファイル１２のほか、プロセッサ１１０の動作を制御するプロセッサ制御回路１６と、ステータスレジスタ１２ａを設定するステータスレジスタ設定回路１８とで構成されている。
次に、ステータスレジスタ設定回路１８の構成を図２を参照しながら詳細に説明する。
図２は、ステータスレジスタ設定回路１８の構成を示すブロック図である。
【００３６】
ステータスレジスタ設定回路１８は、図２に示すように、プロセッサ制御回路１６からのイミディエート値およびステータスレジスタ１２ａの現在値の論理積を演算するＡＮＤ回路３０と、プロセッサ制御回路１６からのイミディエート値およびステータスレジスタ１２ａの現在値の論理和を演算するＯＲ回路３２と、複数の切換スイッチＳＷ１〜ＳＷ３と、プロセッサ制御回路１６の制御に応じてステータスレジスタ１２ａを制御するシーケンサ３４とで構成されている。
【００３７】
切換スイッチＳＷ１は、プロセッサ制御回路１６からのイミディエート値をＡＮＤ回路３０に入力する経路（ＡＮＤ演算経路）と、プロセッサ制御回路１６からのイミディエート値をＯＲ回路３２に入力する経路（ＯＲ演算経路）とを切換可能となっている。
切換スイッチＳＷ２は、ステータスレジスタ１２ａの現在値をＡＮＤ回路３０に入力する経路（ＡＮＤ演算経路）と、ステータスレジスタ１２ａの現在値をＯＲ回路３２に入力する経路（ＯＲ演算経路）とを切換可能となっている。
【００３８】
切換スイッチＳＷ３は、ＡＮＤ回路３０の出力値をステータスレジスタ１２ａに入力する経路（ＡＮＤ演算経路）と、ＯＲ回路３２の出力値をステータスレジスタ１２ａに入力する経路（ＯＲ演算経路）とを切換可能となっている。
シーケンサ３４は、論理積書換動作を行うべきことを示す命令信号をプロセッサ制御回路１６から入力したときは、切換スイッチＳＷ１〜ＳＷ３をＡＮＤ演算経路に切り換え、ＡＮＤ回路３０の出力値を所定のタイミングで保持するようにステータスレジスタ１２ａを制御する。また、論理和書換動作を行うべきことを示す命令信号をプロセッサ制御回路１６から入力したときは、切換スイッチＳＷ１〜ＳＷ３をＯＲ演算経路に切り換え、ＯＲ回路３２の出力値を所定のタイミングで保持するようにステータスレジスタ１２ａを制御する。
【００３９】
次に、プロセッサ制御回路１６の構成を図３を参照しながら詳細に説明する。
プロセッサ制御回路１６は、命令デコーダ、プログラムコントローラおよび割込コントローラ等からなり、命令コードをメモリ１２０から読み込み、読み込んだ命令コードをデコードし、そのデコード結果に基づいてプロセッサ１１０の動作を制御するようになっている。
【００４０】
命令コードのなかには、ステータスレジスタ１２ａの設定に関する論理積書換命令コードおよび論理和書換命令コードがある。
図３は、論理積書換命令コードおよび論理和書換命令コードを示す図である。
論理積書換命令コードは、図３（ａ）に示すように、オペランドとして「ANDST」を、第１オペランドとしてイミディエート値を、第２オペランドとして上位１６ビットおよび下位１６ビットのいずれかの指定をそれぞれ設定することにより定義される。第２オペランドは、任意の設定であり、省略した場合は、下位１６ビットの指定がされたものとして取り扱われる。
【００４１】
例えば、論理積書換命令コードとして「ANDST  #0xFF83,loh」が与えられた場合は、ステータスレジスタ１２ａの値のうち２〜５番目のビットを「０」に設定することを意味する。また、論理積書換命令コードとして「ANDST  #0xFF83,uph」が与えられた場合は、ステータスレジスタ１２ａの値のうち１８〜２１番目のビットを「０」に設定することを意味する。
【００４２】
プロセッサ制御回路１６は、デコードの結果に基づいて命令コードが論理積書換命令であると判定したときは、第１オペランドのイミディエート値、および論理積書換動作を行うべきことを示す命令信号をステータスレジスタ設定回路１８に出力するようになっている。
論理和書換命令コードは、図３（ｂ）に示すように、オペランドとして「ORST」を、第１オペランドとしてイミディエート値を、第２オペランドとして上位１６ビットおよび下位１６ビットのいずれかの指定をそれぞれ設定することにより定義される。第２オペランドは、任意の設定であり、省略した場合は、下位１６ビットの指定がされたものとして取り扱われる。
【００４３】
例えば、論理和書換命令コードとして「ORST  #0xFF83,loh」が与えられた場合は、ステータスレジスタ１２ａの値のうち２〜５番目のビットを「１」に設定することを意味する。また、論理和書換命令コードとして「ORST  #0xFF83,uph」が与えられた場合は、ステータスレジスタ１２ａの値のうち１８〜２１番目のビットを「１」に設定することを意味する。
【００４４】
プロセッサ制御回路１６は、デコードの結果に基づいて命令コードが論理和書換命令であると判定したときは、第１オペランドのイミディエート値、および論理和書換動作を行うべきことを示す命令信号をステータスレジスタ設定回路１８に出力するようになっている。
次に、本実施の形態の動作を説明する。
【００４５】
まず、論理積書換命令コードを実行した場合を説明する。
プロセッサ制御回路１６により、命令コードが読み込まれ、読み込まれた命令コードがデコードされる。その結果、命令コードが論理積書換命令であると判定されると、プロセッサ制御回路１６により、第１オペランドのイミディエート値、および論理積書換動作を行うべきことを示す命令信号がステータスレジスタ設定回路１８に出力される。
【００４６】
ステータスレジスタ設定回路１８では、イミディエート値および命令信号が入力されると、シーケンサ３４により、切換スイッチＳＷ１〜ＳＷ３がＡＮＤ演算経路に切り換えられる。そして、ＡＮＤ回路３０により、入力されたイミディエート値およびステータスレジスタ１２ａの現在値の論理積が演算され、シーケンサ３４により、ＡＮＤ回路３０の出力値がステータスレジスタ１２ａに格納される。
【００４７】
次に、論理和書換命令コードを実行した場合を説明する。
プロセッサ制御回路１６により、命令コードが読み込まれ、読み込まれた命令コードがデコードされる。その結果、命令コードが論理和書換命令であると判定されると、プロセッサ制御回路１６により、第１オペランドのイミディエート値、および論理和書換動作を行うべきことを示す命令信号がステータスレジスタ設定回路１８に出力される。
【００４８】
ステータスレジスタ設定回路１８では、イミディエート値および命令信号が入力されると、シーケンサ３４により、切換スイッチＳＷ１〜ＳＷ３がＯＲ演算経路に切り換えられる。そして、ＯＲ回路３２により、入力されたイミディエート値およびステータスレジスタ１２ａの現在値の論理和が演算され、シーケンサ３４により、ＯＲ回路３２の出力値がステータスレジスタ１２ａに格納される。
【００４９】
図４は、マスカブル割込を許可するプログラムである。
図１０のプログラムは、図４に示すように記述することができる。まず、図４に示すように、ステップＳ１００を経て、ステータスレジスタ１２ａの値のうち２〜５番目のビットが「０」に設定される。そして、ステップＳ１０２を経て、ステータスレジスタ１２ａの値のうち２〜５番目のビットに割込レベルが、０番目のビットに「１」が設定される。これにより、ＭＩＬフラグおよびＭＩＥフラグが設定される。
【００５０】
図４および図１０を対比すれば分かるように、従来では、書換処理として９ステップの処理を要していたのに対し、本実施の形態では、わずか２ステップの処理で足りる。これは、プログラムの記述上でも実行上でも同様である。
このようにして、本実施の形態では、与えられたイミディエート値およびステータスレジスタ１２ａの現在値の論理積を演算するＡＮＤ回路３０を備え、論理積書換命令コードが与えられたときは、第１オペランドのイミディエート値をＡＮＤ回路３０に与え、ＡＮＤ回路３０の出力値をステータスレジスタ１２ａに格納するようになっている。
【００５１】
これにより、論理積書換命令コードを与えるだけで、ステータスレジスタ１２ａの値のうち任意のビットに「０」を設定することができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができる。
さらに、本実施の形態では、与えられたイミディエート値およびステータスレジスタ１２ａの現在値の論理和を演算するＯＲ回路３２を備え、論理和書換命令コードが与えられたときは、第１オペランドのイミディエート値をＯＲ回路３２に与え、ＯＲ回路３２の出力値をステータスレジスタ１２ａに格納するようになっている。
【００５２】
これにより、論理和書換命令コードを与えるだけで、ステータスレジスタ１２ａの値のうち任意のビットに「１」を設定することができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができる。
上記第１の実施の形態において、イミディエート値は、発明１、２、４または５の設定値に対応し、ＡＮＤ回路３０は、発明１または４の論理積回路に対応し、ＯＲ回路３２は、発明２または５の論理和回路に対応している。
【００５３】
次に、本発明の第２の実施の形態を図面を参照しながら説明する。図５ないし図７は、本発明に係るステータスレジスタ設定装置およびステータスレジスタ設定方法の第２の実施の形態を示す図である。
本実施の形態は、本発明に係るステータスレジスタ設定装置およびステータスレジスタ設定方法を、プロセッサ１１０のステータスレジスタ１２ａを設定する場合について適用したものである。以下、上記第１の実施の形態と異なる部分についてのみ説明し、上記第１の実施の形態と重複する部分については同一の符号を付して説明を省略する。
【００５４】
まず、プロセッサ１１０の構成を説明する。
プロセッサ１１０は、演算ユニット１０およびレジスタファイル１２のほか、プロセッサ１１０の動作を制御するプロセッサ制御回路２０と、ステータスレジスタ１２ａを設定するステータスレジスタ設定回路２２とで構成されている。
次に、ステータスレジスタ設定回路２２の構成を図５を参照しながら詳細に説明する。
【００５５】
図５は、ステータスレジスタ設定回路２２の構成を示すブロック図である。
ステータスレジスタ設定回路２２は、図５に示すように、プロセッサ制御回路２０からのイミディエート値およびマスク値の論理積を演算するＡＮＤ回路５０と、プロセッサ制御回路２０からのマスク値をビット反転するビット反転回路５２と、ビット反転回路５２の出力値およびステータスレジスタ１２ａの現在値の論理積を演算するＡＮＤ回路５４と、ＡＮＤ回路５０の出力値およびＡＮＤ回路５４の出力値の論理和を演算するＯＲ回路５６と、プロセッサ制御回路２０の制御に応じてステータスレジスタ１２ａを制御するシーケンサ５８とで構成されている。
【００５６】
シーケンサ５８は、マスク演算書換動作を行うべきことを示す命令信号をプロセッサ制御回路２０から入力したときは、ＯＲ回路５６の出力値を所定のタイミングで保持するようにステータスレジスタ１２ａを制御する。
次に、プロセッサ制御回路２０の構成を図６を参照しながら詳細に説明する。
プロセッサ制御回路２０は、命令デコーダ、プログラムコントローラおよび割込コントローラ等からなり、命令コードをメモリ１２０から読み込み、読み込んだ命令コードをデコードし、そのデコード結果に基づいてプロセッサ１１０の動作を制御するようになっている。
【００５７】
命令コードのなかには、ステータスレジスタ１２ａの設定に関するマスク演算書換命令コードがある。
図６は、マスク演算書換命令コードを示す図である。
マスク演算書換命令コードは、図６に示すように、オペランドとして「MASKST」を、第１オペランドとしてイミディエート値を、第２オペランドとしてマスク値を、第３オペランドとして上位１６ビットおよび下位１６ビットのいずれかの指定をそれぞれ設定することにより定義される。第３オペランドは、任意の設定であり、省略した場合は、下位１６ビットの指定がされたものとして取り扱われる。
【００５８】
例えば、マスク演算書換命令コードとして「MASKST  #0xC000,#0x7800,loh」が与えられた場合は、ステータスレジスタ１２ａの値のうち１４番目のビットを「１」に、１５番目のビットを「０」に設定することを意味する。また、マスク演算書換命令コードとして「MASKST  #0xC000,#0x7800,uph」が与えられた場合は、ステータスレジスタ１２ａの値のうち３０番目のビットを「１」に、３１番目のビットを「０」に設定することを意味する。
【００５９】
プロセッサ制御回路２０は、デコードの結果に基づいて命令コードがマスク演算書換命令であると判定したときは、第１オペランドのイミディエート値、第２オペランドのマスク値、およびマスク演算書換動作を行うべきことを示す命令信号をステータスレジスタ設定回路２２に出力するようになっている。
次に、本実施の形態の動作を説明する。
【００６０】
プロセッサ制御回路２０により、命令コードが読み込まれ、読み込まれた命令コードがデコードされる。その結果、命令コードがマスク演算書換命令であると判定されると、プロセッサ制御回路２０により、第１オペランドのイミディエート値、第２オペランドのマスク値、およびマスク演算書換動作を行うべきことを示す命令信号がステータスレジスタ設定回路２２に出力される。
【００６１】
ステータスレジスタ設定回路２２では、イミディエート値、マスク値および命令信号が入力されると、ＡＮＤ回路５０により、入力されたイミディエート値およびマスク値の論理積が演算される。また、ビット反転回路５２により、入力されたマスク値がビット反転され、ＡＮＤ回路５４により、ビット反転回路５２の出力値およびステータスレジスタ１２ａの現在値の論理積が演算される。そして、ＯＲ回路５６により、ＡＮＤ回路５０の出力値およびＡＮＤ回路５４の出力値の論理和が演算され、シーケンサ５８により、ＯＲ回路５６の出力値がステータスレジスタ１２ａに格納される。
【００６２】
図７は、プロセッサ１１０のパワーモードを変更するプログラムである。
図１１のプログラムは、図７に示すように記述することができる。図７に示すように、ステップＳ２００を経て、ステータスレジスタ１２ａの値のうち１４番目のビットが「１」に、１５番目のビットが「０」に設定される。
図７および図１１を対比すれば分かるように、従来では、書換処理として６ステップの処理を要していたのに対し、本実施の形態では、わずか１ステップの処理で足りる。これは、プログラムの記述上でも実行上でも同様である。
【００６３】
このようにして、本実施の形態では、与えられたイミディエート値およびマスク値の論理積を演算するＡＮＤ回路５０と、与えられたマスク値をビット反転するビット反転回路５２と、ビット反転回路５２の出力値およびステータスレジスタ１２ａの現在値の論理積を演算するＡＮＤ回路５４と、ＡＮＤ回路５０の出力値およびＡＮＤ回路５４の出力値の論理和を演算するＯＲ回路５６とを備え、マスク演算書換命令コードが与えられたときは、第１オペランドのイミディエート値をＡＮＤ回路５０に、第２オペランドのマスク値をＡＮＤ回路５０およびビット反転回路５２にそれぞれ与え、ＯＲ回路５６の出力値をステータスレジスタ１２ａに格納するようになっている。
【００６４】
これにより、マスク演算書換命令コードを与えるだけで、ステータスレジスタ１２ａの値のうち任意のビットを書き換えることができるので、従来に比して、プログラム設計を比較的容易に行うことができるとともに、プログラムの記述を比較的簡素化することができる。
上記第２の実施の形態において、イミディエート値は、発明３または６の第１設定値に対応し、マスク値は、発明３または６の第２設定値に対応し、ＡＮＤ回路５０は、発明３または６の第１論理積回路に対応し、ＡＮＤ回路５４は、発明３または６の第２論理積回路に対応している。また、ＯＲ回路５６は、発明３または６の論理和回路に対応している。
【００６５】
なお、上記第１および第２の実施の形態においては、ステータスレジスタ設定回路１８，２２をプロセッサ１１０の内部回路として構成したが、これに限らず、プロセッサ１１０の外部回路として構成することもできる。
また、上記第１および第２の実施の形態においては、本発明に係るステータスレジスタ設定装置およびステータスレジスタ設定方法を、プロセッサ１１０のステータスレジスタ１２ａを設定する場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【図面の簡単な説明】
【００６６】
【図１】本発明に係る演算処理システム１００の構成を示すブロック図である。
【図２】ステータスレジスタ設定回路１８の構成を示すブロック図である。
【図３】論理積書換命令コードおよび論理和書換命令コードを示す図である。
【図４】マスカブル割込を許可するプログラムである。
【図５】ステータスレジスタ設定回路２２の構成を示すブロック図である。
【図６】マスク演算書換命令コードを示す図である。
【図７】プロセッサ１１０のパワーモードを変更するプログラムである。
【図８】従来の演算処理システム２００の構成を示すブロック図である。
【図９】ステータスレジスタ１２ａのデータ構造を示す図である。
【図１０】マスカブル割込を許可するプログラムである。
【図１１】プロセッサ１５０のパワーモードを変更するプログラムである。
【符号の説明】
【００６７】
１００…演算処理システム，１１０…プロセッサ，１０…演算ユニット，１２…レジスタファイル，１２ａ…ステータスレジスタ，１２ｂ…汎用レジスタ，１６…プロセッサ制御回路，１８…ステータスレジスタ設定回路，３０…ＡＮＤ回路，３２…ＯＲ回路，３４…シーケンサ，ＳＷ１〜ＳＷ３…切換スイッチ，２０…プロセッサ制御回路，２２…ステータスレジスタ設定回路，５０…ＡＮＤ回路，５２…ビット反転回路，５４…ＡＮＤ回路，５６…ＯＲ回路，５８…シーケンサ，１２０…メモリ，１９９…バス，２００…演算処理システム，１５０…プロセッサ，１４…プロセッサ制御回路
【図１】
2005100119.tif 000003
【図２】
2005100119.tif 000004
【図３】
2005100119.tif 000005
【図４】
2005100119.tif 000006
【図５】
2005100119.tif 000007
【図６】
2005100119.tif 000008
【図７】
2005100119.tif 000009
【図８】
2005100119.tif 000010
【図９】
2005100119.tif 000011
【図１０】
2005100119.tif 000012
【図１１】
2005100119.tif 000013