(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムの第１のレジスタ・セットをレストアする方法において、
そのレジスタ・セットについてのレストア操作を指定する第１の命令をデコードする段階と、
前記第１の命令から取り出されるとともに前記第１のレジスタ・セット中の複数のレジスタに対応する少なくとも１つのビットと残りの複数のレジスタに１対１で対応する複数のビットとを含むマスクであって、少数のマスク・ビットで多数のレジスタを制御し、それにより固定サイズの命令に適合させることを可能にしたマスクを使用して、前記第１のレジスタ・セットのレストアする複数のレジスタを選択する段階と、
前記少なくとも１つのビットがセットされているときに当該１つのビットに対応する複数のレジスタをレストアする段階も含めて、前記第１の命令に応答して第１のレジスタ・セットの内前記マスクによって選択された複数のレジスタをレストアする段階と
を含む方法。
【請求項２】
第１のレジスタ・セットをレストアするプログラムを格納しているコンピュータ可読記憶媒体であって、コンピュータに、
第１のレジスタ・セットについてのレストア操作を指定する第１の命令をデコードさせるプログラムと、
前記第１の命令から取り出されるとともに前記第１のレジスタ・セット中の複数のレジスタに対応する少なくとも１つのビットと残りの複数のレジスタに１対１で対応する複数のビットとを含むマスクであって、少数のマスク・ビットで多数のレジスタを制御し、それにより固定サイズの命令に適合させることを可能にしたマスクを使用して、前記第１のレジスタ・セットのレストアする複数のレジスタを選択させるプログラムと、
前記少なくとも１つのビットがセットされているときに当該１つのビットに対応する複数のレジスタをレストアさせることをも含めて、前記第１の命令に応答して第１のレジスタ・セットの内前記マスクによって選択された複数のレジスタをレストアさせるプログラムと
を格納しているコンピュータ可読記憶媒体。
【請求項３】
第１のレジスタ・セットをレストアするように動作可能なコンピュータ・システムであって、
第１のレジスタ・セット上でレストア操作を実行するよう指定する第１の命令をデコードするように動作可能に構成されたデコーダと、
前記第１の命令から取り出されるとともに前記第１のレジスタ・セット中の複数のレジスタに対応する少なくとも１つのビットと残りの複数のレジスタに１対１で対応する複数のビットとを含むマスクであって、少数のマスク・ビットで多数のレジスタを制御し、それにより固定サイズの命令に適合させることを可能にしたマスクを使用して、前記第１のレジスタ・セットのレストアする複数のレジスタを選択するように動作可能に構成されたレストア・ユニットであって、さらに、
前記少なくとも１つのビットがセットされているときに当該１つのビットに対応する複数のレジスタをレストアすることをも含めて、前記第１の命令に応答して第１のレジスタ・セットの内前記マスクによって選択された複数のレジスタをレストアするように動作可能に構成されたレストア・ユニットと
を含むコンピュータ・システム。
【発明の詳細な説明】
発明の分野
本発明はコンピュータ・システムに関し、さらに詳細には、述語レジスタ・セットをレストアする方法および装置に関する。
発明の背景
コンピュータ・プログラムは、何らかの有用なタスクを行うためにコンピュータ・システム上で実行される１組の命令からなる。通常は、プログラムは、ある特定の命令を条件付きで実行するように設計される、すなわち１つまたは複数の条件が満たされた場合に条件付き命令が実行され、そうでない場合にはそれらは実行されない。ここで、「実行される」とは、ある命令が、コンピュータ・システムの状態を修正する、かつ／またはコンピュータ・システム内で特定の事象シーケンスを生じさせることになる指定の動作を行うことを意味する。従来のコンピュータ・システムでは、条件付き実行は、当技術分野では周知の分岐命令またはジャンプ命令を介して実施される。「述語付き実行」または「述語化（ｐｒｅｄｉｃａｔｉｏｎ）」（「条件付き実行」または「保護付き実行」と呼ばれることもある）は、分岐命令を必要とせずに条件付きで命令を実行することができる技法である。
述語付き実行は、ある「述語」を、その述語がその命令が実行されるか否かを制御する命令と関連づけることによって実施される。述語が「真」と評価された場合には命令は実行され、述語が「偽」と評価された場合には命令は実行されない。「真」および「偽」の定義は、各実施形態ごとに変えることができる。述語を真または偽であると判定するための関数も、各実施形態ごとに変えることができる。例えば、いくつかの実施形態では、値１が真、値０が偽となる単一ビットとして述語を定義することができるが、別の実施形態では、これらのビットを真または偽であると解釈する特定の関数を有する複数ビットとして定義することができる。
述語の制御下で命令を条件付きで実行することにより、述語化によってコンピュータ・プログラムから分岐命令が除去される。これは、分岐の予測を誤ることによるフラッシュが実行パイプライン中でいくつかの「バブル」を引き起こし、命令を実行する機会の大きな損失を生み出す、広く深いパイプラインで有益である。述語化は、分岐を除去し、それにより付随する分岐の誤った予測を除去することにより、性能を改善する。分岐命令は通常は命令取出し機構で中断を引き起こすので、述語化は、分岐間の命令数を増加させ、それにより有効な命令取出し帯域幅を増大させることによっても性能を改善する。
述語は、通常は、専用の「述語レジスタ・セット」中に記憶される。述語レジスタ・セットの正確な形態は、各実施形態ごとに変えることができる。例えば、いくつかの実施形態では、それぞれ単一の述語を含む複数のレジスタを規定することができるが、別の実施形態では、「条件コード」または「フラグ」レジスタ中の１つまたは複数のビットとして述語を規定することができる。述語の正確な数も、各実施形態ごとに変えることができる。例えば、ある実施形態では６４個の述語を規定することができるが、別の実施形態では８個のみの述語を規定することができる。
述語にアクセスするために利用される方法には、通常、個別式と「一斉式（ｂｒｏａｄｓｉｄｅ）」の２つの方法がある。述語は通常は、比較命令によって個別に書き込まれ、任意の述語付き命令によって個別に読み取られる。一斉式アクセスとは、１回のアクセスで全ての述語を同時に読み取る、または書き込むことを指す。述語は通常は、手続きの入口および出口、ならびにコンテキスト切替えでは、一斉式で読取りおよび書込みされる（コンテキスト切替えは、現在アクティブな「プロセス」または「タスク」の実行が停止し、別のプロセスが実行のために選択されたときに起こる）。一斉式アクセスでは、述語レジスタ・セットの内容は、通常は、プロセッサ中の別のレジスタまたはコンピュータ・システム中のメモリ位置に保管され、プロセッサ中の別のレジスタまたはコンピュータ・システム中のメモリ位置からレストアされる。
通常は、述語レジスタ・セット中の述語は、コンピュータ・プログラム中の全ての手続き（当技術分野では「関数」または「サブルーチン」とも呼ばれる）に等しくアクセス可能である。これは、ある手続きが別の手続きの述語を上書きしないで共用できるようにするための規則の仕様を必要とする。この目的のために、レジスタを、「スクラッチ」および「保存」の２つのクラスに分割する。ソフトウェアの規定により、スクラッチ・レジスタの内容は手続き呼出しの時点で失われ、保存レジスタの内容は手続き呼出しの前後で維持される。レジスタのスクラッチ・クラスおよび保持クラスへの分割は、ソフトウェアが使用する規定であり、通常は命令セット・アーキテクチャによって実施されるものではないことに留意されたい。この分割には、各手続きの一部分へのある特定の処置が必要である。例えば、手続きＡ（「呼出し元」）が手続きＢ（「呼出し先」）を呼び出している、したがって手続きＢへの呼出し命令が手続きＡ内に現れ、手続きＡへの戻り命令が手続きＢの終了時に現れるものと想定する。手続きＡは、手続きＢへの呼出し後に、任意のスクラッチ・レジスタの内容を必要とする場合には、手続きＢを呼び出す命令の前にそられの内容を保管し、前記命令後にそれらの内容をレストアしなければならない。手続きＢは、任意の保存レジスタを使用する必要がある場合には、それらを使用する前にその内容を保管し、手続きＡに戻る前にそれらの内容をレストアしなければならない。
手続きＢが保存述語レジスタを使用する状況では、上述のように手続きの入口および出口では述語は一斉式でアクセスされるので、手続きＢが保存述語レジスタをレストアするときに全ての述語が上書きされることになる。この一斉レストアに続く命令が述語レジスタ・セット（例えば述語付き命令）の読取りを必要とする場合には、この一斉レストアの後、前記述語付き命令の前に、追加命令を挿入し、述語レジスタ・セットを再書込みする必要がある。これらの追加命令は、順序に依存した命令の数を増加させることにより、手続きの性能を低下させる。さらに、現在のプロセッサでパイプライン化を使用することにより、以前の一斉述語レストアが完了するのを待機している述語を読み取る命令によって引き起こされるパイプラインの停止によって、性能がさらに低下することがある。
したがって、単一の命令に応答して述語レジスタ・セット中の選択した述語レジスタをレストアすることによって、従来技術の欠点を克服する方法および装置が必要とされている。
発明の概要
本発明は、述語レジスタ・セットをレストアする方法および装置を提供する。本発明の一実施態様は、ある述語レジスタ・セット上でレストア操作を実行するよう指定する第１の命令をデコードする段階を含む。第１の命令に応答して、マスクを使用して、述語レジスタ・セットからレストアする複数の述語レジスタを選択する。次いで、選択した複数の述語レジスタをレストアする。
【図面の簡単な説明】
限定ではなく例示を目的として、添付の図面の各図に本発明を図示する。同じ参照番号は同じ要素を示している。
第１図は、一実施形態による本発明を実施するコンピュータ・システムの一例を示す図である。
第２図は、一実施形態による本発明の各段階を記述する流れ図である。
第３図は、一実施形態による本発明で使用される命令形式を示す図である。
詳細な説明
単一の命令に応答して、マスクを使用して、選択した複数の述語レジスタのレストアを制御する方法および装置について記述する。
第１図は、本発明を実施するコンピュータ・システム１００の１例である。図示のように、このコンピュータ・システムは、コンピュータ・システムを動作させるために命令を実行し、その他の機能を行うプロセッサ１０１を含む。このコンピュータ・システムには、モニタ、キーボード、ディスク・ドライブ、およびこのコンピュータ・システムがその他のコンピュータ・デバイスとネットワークを介して通信することができるようにするネットワーク・デバイスが接続されている。
第１図のプロセッサの内部に、述語レジスタ・セット１０４が示してある。本発明の一実施形態では、述語レジスタ・セットは６４個の１ビット幅の別個のレジスタからなる。代替実施形態では、本発明の範囲を逸脱することなく、レジスタ・セット中に設ける述語レジスタの数を増減し、または述語レジスタの幅を広く（すなわち１ビット幅を超えるように）することもできる。
コードのあるセクションを実行する間に、述語レジスタ中に格納されたデータを、汎用レジスタ・セット１０２のレジスタにコピーすることができる。例えば、ある手続きが呼び出されたときに、その述語レジスタに格納されたデータを第１図に示す６３番目の汎用レジスタ（ＧＲ63）などの汎用レジスタにコピーし、その手続きを呼び出す前にその述語レジスタ・セットに格納されたデータを喪失することなく、手続きの実行中にその述語レジスタを使用できるようにすることができる。
本発明は、データをレストアして述語レジスタ・セット１０４に戻す方法および装置を提供する。具体的に言うと、本発明では、単一の命令に応答して、マスクを使用して、汎用レジスタのどのデータを述語レジスタ・セット中にレストアするかを選択する。その結果として、本発明は、どの述語レジスタをレストアするかをプログラマが選択できるようになるという利点をもたらす。これにより、追加命令が不要となり、パイプライン化したプロセッサの停止が解消されることによって、コンピュータ・プログラムの性能が改善される。さらに、本発明を使用して述語レジスタ以外のレジスタもレストアすることができることは、当業者なら理解するであろう。
一実施形態では、本発明のマスクは、「レストア命令」中の即値として与えられる。このマスク即値は、どの述語レジスタをレストアするかを示す。代替実施形態では、このマスク値は、汎用レジスタやメモリ位置など代替のソースから与えられることもあり、その場合には、このソースのアドレスがレストア命令に含まれることになる。
レストア命令がデコードされた後で、マスク値はデータ・パスを介して、マスクを使用してどの述語レジスタをレストアするかを識別するレストア・ユニット１０３に転送される。一実施形態では、マスクはビットのセットからなり、マスクの各ビットは単一の述語レジスタに対応している。マスク中の所与のビットが１にセットされたときに、その特定のマスク・ビットに対応する述語レジスタがレストアされることになる。マスク中の所与のビットが０にセットされたときには、対応する述語レジスタはレストアされないことになる。
例えば、第１図のレストア・ユニット中に示すマスクを参照すると、このマスクのビット０〜３は１にセットされていることが分かる。その結果として、述語レジスタ０〜３は、汎用レジスタＧＲ63の対応するビット位置０〜３からのデータでレストアされることになる。これに対して、レストアマスク値に含まれるビットが０にセットされているときには（例えばマスク・ビット１０）、対応する述語レジスタはレストアされないことになり、その値は変化しないままとなる。本発明の趣旨を逸脱することなく、マスク値の代替解釈も可能であることは理解されるであろう。例えば、マスク値０で述語レジスタをレストアし、値１で述語レジスタを変化しないままとすることもできる。
さらに、一実施形態では、マスク・ビットの１つが複数の述語レジスタに対応する。すなわち、いくつかのマスク・ビットのうちの１つを使用して、複数の述語レジスタの全てがレストアされるか否かを示し、残りのマスク・ビットが残りの述語レジスタと１対１で対応する。例えば、第１図に示すように、マスク・ビット１５が１にセットされたときに、ＧＲ63のビット位置６３〜１５に現在格納されているデータで述語レジスタ６３〜１５がレストアされる。
マスク中の１つのビットをいくつかの述語レジスタに対応させ、残りのマスク・ビットを残りの述語レジスタと１対１で対応させることにより、少数のマスク・ビットで多数の述語レジスタを制御し、それにより本発明のマスクを固定サイズの命令に適合させることが可能となる。代替実施形態では、複数のマスク・ビットを、複数の述語レジスタのレストアを制御するように規定することもできる。
一実施形態では、第１図に示す本発明のレストア・ユニット１０３は、別々の各述語レジスタに結合された別々の書込みイネーブル接続を有する専用回路で構成することができる。マスクの所与のビットが１にセットされると、それぞれの書込みイネーブル接続がオンになり、それにより、この回路が、汎用レジスタ中のビット位置からそれぞれの述語レジスタ中にデータをコピーすることが可能となる。このようにして、述語レジスタを並行してレストアすることができる。ただし、代替実施形態では、レストア・ユニットが、どの述語レジスタを更新するかをマスクが示すことができるようにするその他の回路配列で構成することもできることは当業者には明らかであろう。
第２図を参照すると、本発明の各段階をより詳細に記述する流れ図が図示されている。段階２０２で、述語レジスタ・セットに格納されたデータは、汎用レジスタにコピーされる。代替実施形態では、述語レジスタ・セットは、本発明の範囲を逸脱することなくその他のメモリ・デバイスに保管することもできる。
段階２０４では、選択した複数の述語レジスタをレストアする命令が、第１図に示すプロセッサ中に与えられた命令セットから選択される。別法として、本発明によるプロセスを行うようにコンピュータをプログラムするために使用することができるマイクロ命令を格納している別のコンピュータ可読記憶媒体上に、このレストア命令を備えることもできる。この記憶媒体には、それだけには限らないが、フロッピー・ディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスクを含めて任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード、光カードを含めて任意のタイプのメモリ、あるいは電子命令を記憶するのに適した任意のタイプの媒体が含まれる。
一実施形態では、本発明で使用するマスクは１６個のビットからなる。マスク・ビット１４〜０はそれぞれ述語レジスタ１４〜０の１つに対応する。このマスクのビット１５は述語レジスタ６３〜１５に対応する。すなわち、このマスクのビット１５がセットされた場合には、述語レジスタ６３〜１５がレストアされることになる。ただし、本発明のマスク中のビット数が変化してもよいことは当業者には明らかであろう。さらに、複数のセットのマスク・ビットがそれぞれ別個の述語レジスタのセットに対応することができることは当業者には明らかであろう。
一実施形態では、述語レジスタ０は常に１にセットされる。これは、その場合にはマスク・ビット１４〜０が述語レジスタ１５〜１に対応し、マスク・ビット１５が述語レジスタ６３〜１６に対応することもあることを意味する。
第３図は、４１ビットの固定長を有するレストア命令の一実施形態を示す図である。命令のビット位置５〜０は、レストア命令の実行を制御する述語レジスタ（ＰＲ）を識別する。レストア命令の実行を制御するために述語レジスタが使用されない場合には、この命令のビット位置５〜０は全て０を含むことになる。
レストア命令のビット位置１２〜６はマスク・ビット６〜０を表す。この命令のビット位置１９〜１３は、述語レジスタ・セット中にレストアされるデータを含む汎用レジスタ（ＧＲ）を識別する。代替実施形態では、述語レジスタにレストアするために使用するデータが汎用レジスタ以外のメモリ位置に格納されている場合には、レストア命令のビット位置１９〜１３はメモリ・アドレスを含むこともある。
この命令のビット位置２３〜２０は使用されない。この命令のビット位置３１〜２４は、マスク・ビット１４〜７を表す。この命令のビット位置３２は使用されない。この命令のビット位置３５〜３３は副ＯＰコードを表し、これは本発明の場合には、述語レジスタのレストア操作を一部示す。この命令のビット位置３６はマスク・ビット１５（Ｍ15）を表す。この命令のビット位置４０〜３７はこの命令のＯＰコードを表し、これは図示の実施形態では、述語レジスタのレストア操作を示す。ただし、レストア命令を異なる長さにすることができること、ならびにこの命令中のマスクおよびその他のフィールドの配置および長さが、図示の実施形態とは異なることもあることは当業者には明らかであろう。
第２図の流れ図に戻ると、本発明の段階２０６で、レストア命令は、プロセッサのデコーダ・ユニットによってデコードされる。デコード段階中に、第１図に示すように、マスクのビットはレストア命令から抜き出され、連続的なビット列としてプロセッサのデータ・パス中で結合される。
段階２０８で、マスクを使用してどの述語レジスタをレストアするかを決定するレストア・ユニットに、マスクが与えられる。より具体的に言うと、１にセットされたマスク・ビット１４〜０の各ビットごとに、レストア命令で識別されたレジスタの対応するビット位置からのデータで、そのビットに対応する述語レジスタがレストアされる。マスク・ビット１４〜０の中で０にセットされたマスク・ビットの各ビットについては、対応する述語レジスタはレストアされず、変化しないまま残される。本発明の段階２１０で、マスク・ビット１５が１にセットされたかどうかを判定する。マスク・ビット１５が１にセットされた場合には、段階２１２で述語レジスタ６３〜１５は同様にしてレストアされる。そうでない場合には、段階２１４で、述語レジスタ６３〜１５はレストアされず、変化しないまま残される。
【図１】
0003771273.tif 000002
【図２】
0003771273.tif 000003
【図３】
0003771273.tif 000004