(57)【要約】レジスタ等の１つのデータ要素に対して演算を行い、次いで、そのレジスタまたはいかなる演算も行われなかったさらなるレジスタのいずれかを条件付きで選択する、データ処理装置、方法、およびコンピュータプログラム。この装置は、少なくとも１つの条件付き選択命令を復号化するように構成される、命令復号器であって、該少なくとも１つの条件付き選択命令は、一次ソースレジスタ、二次ソースレジスタ、宛先レジスタ、条件、および二次ソースレジスタからのデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成されるデータプロセッサと、を備え、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソースレジスタからのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、該結果として生じるデータ要素を宛先レジスタに記憶し、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有しない条件に対応して、一次レジスタ内のデータ要素から結果として生じるデータ要素を形成し、該結果として生じるデータ要素を宛先レジスタに記憶する。【特許請求の範囲】
【請求項１】
データ要素を記憶するための複数の記憶要素を備える、データストアと、
少なくとも１つの条件付き選択命令を復号化するように構成される、命令復号器であって、前記少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、
前記命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、
を備え、
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成する、
データ処理装置。
【請求項２】
前記命令はさらに、宛先記憶要素を指定し、前記データプロセッサは、前記少なくとも１つの条件付き選択命令に対応して、前記結果として生じるデータ要素を前記宛先記憶要素に記憶する、請求項１に記載のデータ処理装置。
【請求項３】
前記宛先記憶要素は、前記一次ソース記憶要素および二次ソース記憶要素のうちの１つを備える、請求項２に記載のデータ処理装置。
【請求項４】
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行い、前記一次記憶要素内の前記データ要素からの前記結果として生じるデータ要素を形成する、請求項１に記載のデータ処理装置。
【請求項５】
前記少なくとも１つの条件付き選択命令は、インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすることを含む、前記いずれかの請求項に記載のデータ処理装置。
【請求項６】
前記少なくとも１つの条件付き選択命令は、反転条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む、前記いずれかの請求項に記載のデータ処理装置。
【請求項７】
前記少なくとも１つの条件付き選択命令は、反転インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させることと、それをインクリメントして前記データ要素の算術否定を生成することとを含む、前記いずれかの請求項に記載のデータ処理装置。
【請求項８】
前記記憶要素データストアは、ゼロ値にマップする記憶要素名を含む、前記いずれかの請求項に記載のデータ処理装置。
【請求項９】
前記記憶要素は、レジスタを備え、前記記憶要素データストアは、レジスタバンクを備える、前記いずれかの請求項に記載のデータ処理装置。
【請求項１０】
前記記憶要素は、メモリロケーションを備え、前記記憶要素データストアは、メモリを備える、請求項１〜８のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
前記二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、
前記一次記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備え、
前記インクリメント制御信号が設定されることに応じて、前記キャリーイン信号が１に設定され、前記加算器は、前記少なくとも１つのソース記憶要素からの受け取った値をインクリメントする、
前記いずれかの請求項に記載のデータ処理装置。
【請求項１２】
前記命令復号器は、前記条件付き選択命令に応じて、反転制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
前記反転制御信号が設定されることに応じて、反転回路を通過した前記二次ソース記憶要素から値を受け取り、かつ前記反転信号が設定されないことに応じて、前記反転回路を通過しなかった前記二次ソース記憶要素から値を受け取るように構成される、加算器と、
前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備える、
前記いずれかの請求項に記載のデータ処理装置。
【請求項１３】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、
前記インクリメント信号が設定されることに応じて、前記キャリーイン信号が１に設定され、前記反転信号が設定されることに応じて、前記加算器は、前記二次ソース記憶要素からの前記受け取った反転値をインクリメントする、
請求項１１に記載のデータ処理装置。
【請求項１４】
前記一次ソース記憶要素および前記二次ソース記憶要素は、同じ記憶要素である、前記いずれかの請求項に記載のデータ処理装置。
【請求項１５】
前記条件の結果は、少なくとも１つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される、前記いずれかの請求項に記載のデータ処理装置。
【請求項１６】
前記少なくとも１つの以前のデータ処理演算は、前記ソース記憶要素の少なくとも１つの中のデータ要素を、別の値と比較することを含む、請求項１５に記載のデータ処理装置。
【請求項１７】
前記少なくとも１つの以前のデータ処理演算は、前記一次ソース記憶要素の中のデータ要素を、前記二次ソース要素の中のデータ要素と比較することを含む、請求項１６に記載のデータ処理装置。
【請求項１８】
前記条件は、等しくない、等しい、より小さい、より大きい、より大きいか等しい、より小さいか等しい、ゼロ、および負のうちの少なくとも１つを含む、請求項１５〜１７のいずれか１項に記載のデータ処理装置。
【請求項１９】
前記算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも１つを含む、請求項１５〜１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
前記条件の前記所定の結果は、前記条件を満たしていることを含む、前記いずれかの請求項に記載のデータ処理装置。
【請求項２１】
前記条件付き選択命令は、前記ソースおよび宛先記憶要素の幅を示す、指示子を備える、前記いずれかの請求項に記載のデータ処理装置。
【請求項２２】
前記データ処理装置は、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、前記条件付き選択命令に応じて、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行うための前記回路の少なくとも一部は、前記算術回路を備える、前記いずれかの請求項に記載のデータ処理装置。
【請求項２３】
一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、少なくとも１つの条件付き選択命令を受け取ることと、
前記少なくとも１つの受け取った条件付き選択命令を復号化することと、
前記条件が所定の結果を有するかどうかを判断することと、
前記条件が前記所定の結果を有する場合に、前記二次ソース記憶要素を選択し、前記選択された記憶要素からのデータ要素に対して前記演算を行って、結果として生じるデータ要素を形成することと、
前記条件が前記所定の結果を有しない場合に、前記一次記憶要素内の前記データ要素を選択して、前記結果として生じるデータ要素を形成することと、
を含む、データ処理装置の方法。
【請求項２４】
前記結果として生じるデータ要素を、前記少なくとも１つの条件付き選択命令によって指定される宛先記憶要素に記憶する付加的なステップを行うことを含む、請求項２３に記載の方法。
【請求項２５】
前記条件が前記所定の結果を有するかどうかを判断する前記ステップは、前記演算が前記二次ソース記憶要素からの前記データ要素に対して行われた後に行われる、請求項２３または２４に記載のデータを処理する方法。
【請求項２６】
前記少なくとも１つの条件付き選択命令は、インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすることを含む、請求項２３〜２５のいずれか１項に記載のデータを処理する方法。
【請求項２７】
前記少なくとも１つの条件付き選択命令は、反転条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む、請求項２３〜２６のいずれか１項に記載のデータを処理する方法。
【請求項２８】
前記少なくとも１つの条件付き選択命令は、反転インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させることと、それをインクリメントして前記データ要素の算術否定を生成することとを含む、請求項２３〜２７のいずれか１項に記載のデータを処理する方法。
【請求項２９】
データプロセッサ上で実行したときに、前記データプロセッサを制御して、請求項２３〜２８のいずれか１項に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品。
【請求項３０】
データ要素を記憶要素に記憶するための、記憶要素記憶手段と、
少なくとも１つの条件付き選択命令を復号化するための、命令復号化手段であって、前記少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素からのデータ要素に対して行われるべき演算を指定する、命令復号化手段と、
前記命令復号化手段によって制御されるデータ処理演算を行うための処理手段と、
を備え、
前記処理手段は、前記復号化された少なくとも１つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
前記処理手段は、前記復号化された少なくとも１つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成する、
データを処理するための手段。
【請求項３１】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜２２のいずれか１項に記載のデータ処理装置による命令実行環境を提供する、仮想マシン。
【請求項３２】
実質的に添付図面を参照して前項に説明されるような、データ処理装置。
【請求項３３】
実質的に添付図面を参照して前項に説明されるような、データを処理する方法。
【請求項３４】
実質的に添付図面を参照して前項に説明されるような、コンピュータプログラム製品。
【請求項３５】
実質的に添付図面を参照して前項に説明されるような、仮想マシン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置の分野に関し、具体的には、条件に基づいてソースデータ要素を選択するための条件付き選択命令の分野に関する。
【背景技術】
【０００２】
条件付き命令は、例えば英国ケンブリッジのＡＲＭ（登録商標）によって、処理の際に使用されており、これらの命令は、予め定義された条件を満たしていることにだけ応じて、処理演算を行うようにプロセッサに命令する。満たすことが必要とされ得る条件の例は、より小さい、より大きい、等しい、負、キャリーイン、ゼロ等のようなものである。
【０００３】
特に少なくとも部分的に相互に並行して命令を行うハイエンド処理装置における、これらの条件付き命令の不利な点は、入力の場合のように条件付き命令の結果を必要とする命令ストリームの中の条件付き命令に続く命令が、その条件を満たしているかどうかに依存して、元の値または更新された結果値を必要とし得ることである。条件付き命令がまだパイプライン内にある間に、その後の命令がパイプラインに進入してしまったときに、元の値または結果値のいずれかを、その後の命令がパイプラインの中で利用できるようにする必要があり得る。これは、速度および電力に関して非常に高いオーバーヘッドを有する、元の値のさらなる読み出しを必要とし得る。
【０００４】
条件を満たしていることに基づいて、２つのソースレジスタの選択から宛先レジスタに書き込むべき結果をプロセッサに選択させる、選択命令も知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
性能を維持したままで、条件付き命令の機能の大半を保つことが可能であるようにすることが望ましい。
【課題を解決するための手段】
【０００６】
第１の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、データ要素を記憶するための複数の記憶要素を備える、データストアと、少なくとも１つの条件付き選択命令を復号化するように構成される、命令復号器であって、少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、を備え、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
【０００７】
本発明は、条件付き選択命令が、所定の条件の結果に応答して、記憶要素に記憶された特定の値を選択する効率的な方法であることを認識している。所定の結果は、条件を満たしていることであり得るか、または条件を満たしていないことであり得る。また、条件付き選択命令が、記憶要素の１つの値に対して演算を行わせる場合、これは、２つの結果の記憶要素のうちの１つにアクセスすることが簡単に選択されるように、性能の欠点の多くを伴わずに、従来の条件付き命令の特性の多くを伴う命令を提供することができることも認識している。
【０００８】
いくつかの実施形態において、命令はさらに、宛先記憶要素を指定し、データプロセッサは、少なくとも１つの条件選択命令に対応して、結果として生じるデータ要素を宛先記憶要素に記憶する。
【０００９】
命令は、結果として生じるデータ要素が記憶されるべき宛先記憶要素を指定し得、または単純に、所定の記憶場所に結果として生じるデータ要素を上書きするように構成され得る。
【００１０】
いくつかの実施形態において、宛先記憶要素は、ソース記憶要素の１つであり得るが、他の実施形態において、宛先記憶要素は、異なる記憶要素であり得る。
【００１１】
いくつかの実施形態において、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有しない条件に対応して、二次ソース記憶要素内のデータ要素に対して演算を行い、一次記憶要素内のデータ要素からの結果として生じるデータ要素を形成する。
【００１２】
条件が所定の結果を有しない場合、結果として生じるデータ要素のソースとして選択されるのは一次記憶要素である。いくつかの実施形態では、選択されるのは一次記憶要素であるが、条件付き選択命令によって指定される演算は、それでも、二次ソース記憶要素内のデータ要素に対して行われる。この場合、この演算の結果は必要とされないが、命令の実行時間の大部分を費やすのは、一般的に、条件の結果を判断しているときであるので、いずれにしてもこの演算を行うことは有利であり得、したがって、条件が所定の結果を有するかどうかが分かる前に二次記憶要素において演算が行われる場合、条件の結果が判断されると、どちらの記憶要素も選択に対して準備のできた状態になっており、手順の待ち時間が低減される。
【００１３】
いくつかの実施形態において、少なくとも１つの条件付き選択命令は、インクリメント条件付き選択命令を備え、演算は、二次ソース記憶要素からのデータ要素をインクリメントすることを含む。
【００１４】
条件付き選択命令は、それと関連付けられる異なる演算を有することができるが、いくつかの実施形態では、インクリメント条件付き選択命令を備え、演算は、選択されたデータ要素をインクリメントすることを含む。
【００１５】
他の実施形態において、条件付き選択命令は、反転条件付き選択命令を備え、演算は、選択されたデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む。
【００１６】
いくつかの実施形態では、これらの２つの演算を組み合わせて、反転インクリメント条件付き選択命令を形成することができる。論理的にビット単位の様式で値を反転させ、次いでインクリメントすることで、そのデータ要素の算術否定を生成する。
【００１７】
いくつかの実施形態において、記憶要素データストアは、ゼロ値にマップする記憶要素名を含む。
【００１８】
反転およびインクリメント、ならびにゼロ値にマップする記憶要素の可能性等の、条件付き選択命令と関連付けられる演算を有する条件付き選択命令の提供は、多数のレガシー条件付き命令によって行われる演算にマップする多数の異なる演算を行う能力を伴う処理装置を提供する。これらの実施例は、後で提供する。このようにして、レガシーシステムで提供された多数の条件付き命令は、この条件付き選択機能を適切な方法で使用して模倣することができる。この条件付き選択機能は、性能の欠点の多くを伴わずに、レガシー条件付き命令の機能を提供する効率的かつ好都合な方法を提供する。
【００１９】
当業者には、記憶要素が多数のものであり得ること、例えば、いくつかの実施形態ではレジスタであり得る一方で、他の実施形態ではメモリロケーションであり得ることが明らかになるであろう。
【００２０】
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、一次記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備え、インクリメント制御信号が設定されることに応じて、キャリーイン信号が１に設定され、加算器は、少なくとも１つのソース記憶要素からの受け取った値をインクリメントする。
【００２１】
本発明の実施形態のさらなる利点は、これらの機能を実装するために必要とされる回路が、多くの場合において、プロセッサの中に存在し得、かつ必要とされる機能を提供するために再使用することができる、簡単な処理回路であるということである。例えば、インクリメント演算は、加算器およびキャリーイン信号、キャリーイン信号を設定するインクリメント制御信号、ならびに条件の結果であるマルチプレクサのための選択機能を使用して提供することができる。
【００２２】
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、反転制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、反転制御信号が設定されることに応じて、反転回路を通過した二次ソース記憶要素から値を受け取り、かつ設定されない反転制御信号に応じて、反転回路を通過しなかった二次ソース記憶要素から値を受け取るように構成される、加算器と、一次ソース記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備える。
【００２３】
反転機能は、反転回路を使用して提供することができ、反転機能が加算器と連結された場合に、必要に応じて反転およびインクリメントを組み合わせることができる。
【００２４】
例えば、いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、インクリメント信号が設定されることに応じて、キャリーイン信号が１に設定され、設定される反転信号に応じて、加算器は、二次ソース記憶要素からの受け取った反転値をインクリメントする。
【００２５】
反転およびインクリメント手段に対する能力を提供することは、２の補数値の形態で算術否定値を提供することができる。
【００２６】
いくつかの実施形態において、一次ソース記憶要素および二次ソース記憶要素は、同じ記憶要素である。
【００２７】
異なるソース記憶要素が使用される可能性があるが、いくつかの実施形態において、それらは同じ記憶要素である。この場合、条件が所定の結果を有する場合、結果の要素は、演算が行われた記憶要素の中の値から形成される一方で、条件がこの所定の結果を有しない場合は、記憶されたデータ要素を使用して、結果として生じるデータ要素を形成する。これは、条件が所定の結果を有する場合、および条件が所定の結果を有しない場合に、条件付き選択を行い、次いで、演算を行うようになるという利点があり得る。これを実装するための１つの方法は、記憶要素からの２つの経路を形成することである、１つの経路は、演算を実行する機能回路を通過し、もう１つの経路は、記憶要素から直接的に進み、結果として生じる要素を伝送するために選択される経路は、条件の結果に依存する。
【００２８】
いくつかの実施形態において、条件の結果は、少なくとも１つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される。
【００２９】
条件が所定の結果を有するかどうかは、少なくとも１つの以前のデータ処理演算に応じて、コンピュータのステータス記憶要素に設定される、算術論理フラグから判断することができる。これらの以前のデータ処理演算は、条件付き選択命令の前に行われる少なくとも１つの命令に応じて行われ、これらの命令は、条件の結果、すなわち、満たすかどうかを判断し、それに従ってフラグを設定する。したがって、条件が特定の結果を有するかどうかを判断するために、特定の条件コードをフラグと比較し、一致した場合は、条件が所定の結果を有するものと判断し、一致しなかった場合は、所定の結果を有しないものと判断する。明らかに、このシステムは、一致しないことが所定の結果であり、一致することが所定の結果ではないように反転させることができる。
【００３０】
以前のデータ処理演算は、多数のものであり得るが、いくつかの実施形態では、ソース記憶要素のうちの少なくとも１つの中のデータ要素を別の値と比較することを含む。
【００３１】
条件コードは、特定の値よりも小さいソース記憶要素Ｂの値である等のものであり得る。この条件の結果を判断するために、記憶要素Ｂに記憶された値を、記憶要素Ｂの値からの特定の値の減算を行うことによってより小さくなければならない特定の値と比較し、これに応じて、算術論理フラグが設定される。この演算は、命令ストリームの中の初期の命令に応じて行われる。したがって、負のフラグが設定された場合は、条件を満たしている。
【００３２】
他の実施形態において、少なくとも１つの以前のデータ処理演算は、一次ソース記憶要素の中のデータ要素を、二次ソース要素の中のデータ要素と比較することを含む。
【００３３】
２つのソース記憶要素の値が相互に特定の関係を有する場合、これらを比較し、特定の演算だけを行うことが適切であり得る。これが条件である場合、ここでも、以前の処理演算は、これらの値を比較し、フラグを設定し、条件を満たしていること、または条件を満たしていないことをステータスフラグから判断することができるものであり得る。
【００３４】
条件は、多数のものであり得、例えば、等しくない、等しい、より小さい、より大きいか等しい、より小さいか等しい、ゼロ、または負であり得る。これらの条件の全ては、条件フラグから判断することができる。
【００３５】
算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも１つを含む。したがって、値間の比較は、しばしば、減算であり得、負の結果は、一方の値がもう一方の値よりも大きかったことを示し、同様に、ゼロの結果は、値が等しかったことを示す、等である。
【００３６】
いくつかの実施形態において、条件の所定の結果は、条件を満たしていることを含む。
【００３７】
前述のように、条件の所定の結果は、条件を満たしていることであり得、代替として、条件を満たしていないことであり得る。
【００３８】
いくつかの実施形態において、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、条件付き選択命令に応じて、二次ソース記憶要素内のデータ要素に対して演算を行うための回路の少なくとも一部は、算術回路を備える。
【００３９】
前述のように、条件付き選択機能を行い得るインクリメント等の演算は、算術回路を使用して行われてもよい。この算術回路が、加算演算および減算演算を行うためのプロセッサの中に既に存在する場合は、条件付き選択命令を行うためのこの回路を再使用するのに好都合であり得る。そのような場合、この命令の機能は、数多くの余分な回路を追加することなく提供することができ、それによって、回路領域を効率的に利用する。
【００４０】
いくつかの実施形態において、条件付き選択命令は、ソースおよび宛先記憶要素の幅を示す、指示子を備える。
【００４１】
本発明の実施形態は、異なる幅の記憶要素を使用し得る装置とともに使用するのに好適である。したがって、例えば、ハードウェアは、６４ビット長であるその記憶要素としてレジスタを備え得るが、時折、３２ビット長の記憶要素を使用するコードを実行し得る。そのような場合、指示子は、アクセスされるレジスタの関連する部分に設定することができる。
【００４２】
本発明の第２の態様は、データ処理装置の方法を提供し、該方法は、一次ソース記憶要素、二次ソース記憶要素、宛先記憶要素、条件、および二次ソース記憶要素内のデータ要素に対して行われる演算を指定する、少なくとも１つの条件付き選択命令を受け取ることと、少なくとも１つの受け取った条件付き選択命令を復号化することと、条件が所定の結果を有するかどうかを判断することと、条件が所定の結果を有する場合に、二次ソース記憶要素を選択し、選択された記憶要素からのデータ要素に対して演算を行って、結果として生じるデータ要素を形成することと、条件が所定の結果を有しない場合に、一次記憶要素内のデータ要素を選択して、結果として生じるデータ要素を形成することと、を含む。
【００４３】
本発明の第３の態様は、データプロセッサ上で実行したときに、データプロセッサを制御して、本発明の第２の態様に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品を提供する。
【００４４】
本発明の第４の態様は、データを処理するための手段を提供し、該手段は、データ要素を記憶要素に記憶するための、記憶要素記憶手段と、少なくとも１つの条件付き選択命令を復号化するための、命令復号化手段であって、少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素からのデータ要素に対して行われるべき演算を指定する、命令復号化手段と、命令復号化手段によって制御されるデータ処理演算を行うための処理手段と、を備え、処理手段は、復号化された少なくとも１つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、処理手段は、復号化された少なくとも１つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
【００４５】
本発明の第５の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、該仮想マシンは、本発明の第１の態様のデータ処理装置に記載の命令実行環境を提供する。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態による、データ処理装置を示す図である。
【図２】本発明の実施形態による、条件付き選択命令を行うための処理回路を示す図である。
【図３】本発明の実施形態による、条件付き選択命令を行うために再使用されているデータ処理装置内の算術回路を示す図である。
【図４】本発明の実施形態による、条件付き選択命令および例示的なステータスフラグを示す図である。
【図５】レガシー条件命令を模倣する機能を行うために、どのように条件付き選択命令を使用することができるかという例を示す図である。
【図６】本発明の実施形態による方法を例示するフロー図である。
【図７】条件付き選択命令の例示的な符号化を示す図である。
【図８】本手法の仮想マシン実装を概略的に示す図である。
【発明を実施するための形態】
【００４７】
図１は、本発明の実施形態による、データ処理装置１０を示す。このデータ処理装置１０は、処理すべき命令を記憶するためのデータストア２０を有する。該データ処理装置は、命令ストア２０から命令をフェッチするためのフェッチユニット３２と、これらの命令を復号化するための命令復号器３４と、復号化された命令を処理するための処理ユニット３６とを含む、命令を処理するためのパイプライン３０を有する。
【００４８】
また、複数のレジスタを備える、レジスタバンク４０もある。処理ユニット３６は、これらのレジスタへのデータの書き込みおよび読み出しを行う。レジスタバンクは、プロセッサのステータスフラグを含むプログラムステータスレジスタＣＰＳＲを含む。これらのステータスフラグは、処理演算に応じて設定され、プロセッサが使用して、プロセッサの特定の条件または状態を判断することができる。
【００４９】
また、この実施形態では、０にマップするレジスタＸ３１もある。したがって、このレジスタが命令によって選択されたときに、常時０値が与えられる。
【００５０】
復号器３４が復号化するように構成される１つの命令は、条件付き選択命令である。この復号化された命令に応じて、プロセッサは、命令によって指定されるソースレジスタのうちの１つに対して、この命令によって指定される演算を行い、次いで、結果として生じる要素が書き込まれる宛先レジスタとして、このソースレジスタまたは別のレジスタのいずれかを選択する。
【００５１】
図２は、そのような条件付き選択命令に応じて、これらの処理演算を行うために使用することができる、処理ユニット３６内の処理回路の実施例を示す。
【００５２】
本発明の実施形態において、条件付き選択命令は、レジスタのうちの１つの値に対して、２つの演算のうちの１つを行うことができる。それは、インクリメント制御信号が設定されることに応じて、インクリメントすることができ、または反転制御フラグが設定されることに応じて記憶された値の中のビット毎の論理ビット単位の反転を行うことによって、値を反転させることができる。条件付き選択命令は、条件に依存し、したがって、条件を満たしているかどうかが判断され、この判断に基づいて、このレジスタの一方またはもう一方が出力される。
【００５３】
したがって、図２の実施形態では、２つのソースレジスタＲｎおよびＲｍがある。この実施形態において、ソースレジスタは、どちらも３２ビット長であるが、代替の実施形態において、それらは、６４ビット長であり得る。他の実施形態において、ソースレジスタは、６４ビット長であり得るが、それらは、条件付き選択命令で選択ビットが設定されることに応じて、３２ビットレジスタとして扱われ、下位または上位３２ビットだけがそこに書き込まれ、またはそこから読み出される。
【００５４】
一方のレジスタＲｍは、条件付き選択命令が指定し得る任意の演算が行われる、二次レジスタである。したがって、この実施形態において、条件付き選択命令は、反転演算、インクリメント演算、もしくは両方を指定し得、またはどちらも指定し得ない。どちらも指定されない場合、条件付き選択機能は、マルチプレクサ５０を使用して、単にレジスタＲｍまたはＲｎのいずれかを選択する。
【００５５】
レジスタＲｍおよびＲｎは、異なるレジスタとして示されているが、それらは、本発明の実施形態において、マルチプレクサに進むレジスタからの、および機能回路を通過する別のレジスタからの直接的なデータ経路を伴う、同じレジスタであり得ることに留意されたい。
【００５６】
マルチプレクサ５０の選択信号は、評価ユニット６０を使用して評価される命令と関連付けられる条件から判断される。この実施形態において、評価ユニット６０は、この命令と関連付けられる条件コードを、処理装置のＣＰＳＲレジスタに記憶された算術論理フラグと比較する。条件コードとフラグとの間に一致がある場合、条件を満たしているものと判断され、レジスタＲｍが選択される。いかなる一致もなかった場合、レジスタＲｎが選択される。
【００５７】
したがって、反転信号もインクリメント信号も設定されない基本的な場合において、命令は、条件付き選択機能命令として作用し、条件を満たしていること、または条件を満たしていないことに基づいて、ＲｍまたはＲｎのいずれかが選択される。しかしながら、それが反転条件付き選択命令である場合、反転信号が設定され、ＸＯＲゲート７０は、レジスタＲｍの中のビットのそれぞれをビット単位に反転させるように作用し、反転値が、加算器７５を介して、マルチプレクサ５０に出力される。インクリメント信号が設定されない場合、それは単に、選択機能がレジスタＲｍを選択する場合に宛先レジスタＲｄに出力される、ビット単位の反転値である。選択機能がレジスタＲｎを選択する場合は、ビット単位の反転が行われるが、反転の結果は、宛先レジスタに出力されるように選択されない。
【００５８】
また、この処理回路に入力されるインクリメント信号もあり、これは、キャリーイン信号として加算器７５に到達し、したがって、インクリメント信号が設定されたときに、加算器がキャリーインを受け取る。したがって、反転が設定されていない場合にレジスタＲｍに記憶された値であり、反転信号が設定されている場合にレジスタＲｍに記憶された反転値である、インクリメント信号が設定されたときにＸＯＲゲート７０から出力される値は、条件が所定の結果を有する場合に、インクリメントされ、マルチプレクサ５０を使用して選択される。反転信号およびインクリメント信号が設定された場合、値出力は、レジスタＲｍに記憶された値の否定された２の補数値である。インクリメント信号だけが設定された場合、それは単に、１だけインクリメントされたレジスタＲｍに記憶された値である。
【００５９】
レジスタＲｍに記憶された値に対して行われる演算は、マルチプレクサ５０を使用した選択の前に行われることに留意されたい。したがって、レジスタＲｍが選択されなかった場合、これらの演算は、いかなる目的でも行われない。しかしながら、条件コードの評価は、一般的に、かなりの時間がかかり、したがって、行われる演算の終了に向かってだけこの結果が必要とされる場合に有利になり得る。
【００６０】
図３は、図２に示されるものに類似しているが、一般的に処理装置の算術回路内の加算器回路７５を再使用している、この処理回路の代替の実施形態を示す。したがって、図２と比較したときに、処理回路が加算器７５に入力されるレジスタＡをマスクするために条件付き選択命令を行っているときに使用される、追加のＡＮＤゲート８０がある。したがって、条件付き選択命令が実行されているときには、レジスタＡに記憶された値が加算器に到達しないように、０がＡＮＤゲートに入力される。一般処理演算のための算術回路の一部として使用されるときに、ＡＮＤゲートは、レジスタＡをマスクせず、加算器７５は、レジスタＡおよびＢ、またはレジスタＢの反転値を伴うレジスタＡを加えるために使用され得る。
【００６１】
条件付き選択機能の場合、加算器７５は、レジスタＢに記憶された値をインクリメントするために、またはレジスタＢに記憶された反転値をインクリメントするために使用され、したがって、一般算術命令を行うために存在する加算器に対する他の入力（レジスタＡ）は、ＡＮＤゲート８０を使用してマスクされる。他の点において、この回路は、図２の回路と同様である。
【００６２】
ＸＯＲ論理は、ビット単位の排他的ＯＲに基づいて中間結果を作成することによって、反転機能を提供し、レジスタＢ内の各ビットは、反転信号を有する。この回路は、図３に示されるように、プロセッサの主算術ユニットと統合され得るか、または図２に示されるように、別個の回路として構築され得ることを理解されたい。
【００６３】
図４は、異なる種類の条件付き選択命令およびそれらが出力した値の例を示す。したがって、いかなる反転信号もインクリメント信号もない条件付き選択命令に応じて、条件が算術論理フラグに一致するかどうかに依存して、一次レジスタＲｎに記憶された値または二次レジスタＲｍに記憶された値が、宛先レジスタに出力される。
【００６４】
インクリメント信号が設定される条件付き選択命令に応じて、レジスタＲｍから受け取った値がインクリメントされ、再度、条件およびフラグに応じて、レジスタＲｎに記憶された値またはインクリメントされたレジスタＲｍに記憶された値のいずれかが、宛先レジスタに出力される。
【００６５】
反転信号が設定された場合、レジスタＲｍからの値は、ビット単位で反転され、再度、条件コードがフラグに一致するかどうかに応じて、反転させたＲｍの値、またはＲｎに記憶された値のいずれかが、宛先レジスタに書き込まれる。
【００６６】
反転およびインクリメントビットが設定された場合、レジスタＲｍからの値は、反転およびインクリメントの双方が行われる。これは、元の値の算術否定バージョンである、Ｒｍに記憶された値の２つの補数値を生成する。再度、条件コードがフラグに一致するかどうかに応じて、レジスタＲｎに記憶された値またはレジスタＲｍからの反転およびインクリメントされた値のいずれかが、宛先レジスタに書き込まれる。
【００６７】
条件コードに関して、これは、この実施形態において、レジスタＲｎを選択することとは対照的に、レジスタＲｍを選択するために必要とされるフラグのパターンを示す、４ビットのコードである。フラグは、４ビットの値としてＣＰＳＲレジスタに記憶され、Ｎ、Ｚ、ＣおよびＢを備える。Ｎは、負の結果を示し、Ｚは、０の結果を示し、Ｃは、キャリーアウトを示し、Ｂは、符号付き算術オーバフローを示す。これらのフラグは、以前のデータ処理演算によって設定される。したがって、条件付き選択命令が実行される前に、条件付き選択命令の条件を満たしているかどうかを判断するために必要とされる、比較を行う演算が実行される。これらの演算は、それらの比較の結果としてフラグを設定する、比較命令に応じて行われ得る。条件を満たしているかどうかを判断するために、条件を満たしていることを示す特定のフラグ値に一致する条件コードを、条件選択命令内で符号化することができ、フラグに対するこのコードの単純な比較が、条件を満たしているかどうかを判断することになる。
【００６８】
これらの以前の処理命令は、おそらくはソースレジスタの１つの中の値をソースレジスタの中の別の値と比較するための、またはおそらくはソースレジスタ値を設定値と比較するための、比較命令という形態を取り得る。一般的に、比較命令は、減算演算を行い、この結果は、算術フラグを設定する。したがって、命令および条件コードがそれである場合、Ｂがインクリメントされ、ＡがＢより小さい場合、比較は、ＢからＡを減算することができ、結果が負である場合、Ｎフラグが設定されるので、条件コードは、Ｎフラグが設定されることに一致するパターンを有しなければならない。この比較命令は、条件選択命令に先立って行うことができ、さらにはいくつかの命令に先立って行うことができるが、ただし、算術論理フラグを設定するいかなる中間命令もないことを条件とする。
【００６９】
前述のように、この条件付き選択命令の利点の１つは、欠点のいくつかを伴わずに以前の条件付き命令の機能を提供することができることである。図５は、条件付き選択命令が相当する機能を提供することができる、例示的な条件付き命令を示す。
【００７０】
したがって、第１の実施例において、条件付き選択命令は、１と０との間の選択を提供することができる。これは、０にマップするレジスタを使用する。この図において、これは、簡潔にするためＲ０として示されるが、図１で示した実施形態では、値０にマップするように設定されたレジスタ３１であった。この場合、０にマップするレジスタは、双方のソースレジスタとして使用され、インクリメント機能は、条件に依存して、したがって、０または１のいずれかを出力できる条件に依存して、０値を選択することができるように、または０値のインクリメントを選択することができるように使用される。
【００７１】
条件付き選択命令はまた、０値と全て１のマスクとの間で選択するために使用することもできる。この場合、反転演算が使用され、再度、０にマップするレジスタが２つのソースレジスタとして使用される。この場合、このレジスタは、宛先レジスタとして選択されるか、またはこのレジスタの反転バージョンが選択される。このレジスタの反転バージョンは、１のマスクであり、したがって、条件を満たすかどうかに応じて、０値レジスタまたは１のマスクが宛先レジスタに提供される。
【００７２】
条件付き選択命令は、レジスタに記憶された絶対値を出力するために使用することもできる。この機能を提供するために、この実施例においてＲ３として与えられるこのレジスタの中の値を０値と比較することによって、条件フラグが最初に設定される。選択されたインクリメントおよび反転機能を伴う条件付き選択命令は、次いで、ソースレジスタおよび宛先レジスタの双方として、また、条件が「より小さい」ものとして、レジスタＲ３とともに使用される。したがって、Ｒ３が０より小さい場合、換言すれば、それが負の値である場合、Ｒ３に記憶された値は、インクリメントおよび反転され、この値の２の補数値、換言すれば、負の値を提供する。したがって、Ｒ３に記憶された値が負である場合は否定されるが、これは、Ｒ３に記憶された値の正のバージョンが出力されることを意味する。しかしながら、Ｒ３に記憶された値が正である場合は、条件「より小さい」を満たさず、同じくＲ３である一次レジスタに記憶された値が出力される。したがって、この特定の条件付き選択命令を使用することによって、絶対値命令が提供される。
【００７３】
次の実施例は、ある値に対する条件付きインクリメントを提供し、この場合、条件付き選択命令は、選択されたインクリメント演算を有する。この場合、一次レジスタは、Ｒ３として与えられ、二次レジスタは、宛先レジスタとして与えられる。条件は、Ｒ３に記憶された値が、Ｒ４に記憶されたインクリメントされた値に等しいことであり、したがって、当てはまる場合には、Ｒ３に記憶された値が出力される。当てはまらない場合には、次いで、Ｒ４に記憶された値がインクリメントされ、Ｒ４に記憶される。
【００７４】
以下の命令は、命令に関連する条件が、どのように、ソースレジスタに記憶された値に依存し得るのではなく、別のレジスタに記憶された値に関連し得るのかを示す。この場合、Ｂに記憶された値が０に等しい場合、Ａに記憶された値をインクリメントしなければならない、という条件付き命令を模倣するために、条件付き選択命令が使用される。条件付き選択命令を使用してこれを行うために、フラグを設定するために使用される初期命令は、レジスタＢの値を０と比較することである。次いで実行される条件付き選択命令は、インクリメント演算が行われ、ソースおよび宛先レジスタが同じであり、条件が「等しい」である場合のものである。したがって、レジスタＢを０と比較するという比較命令が等しかった場合、この命令は、実質的に減算であるので、Ｚフラグが設定されていることになる。
【００７５】
命令の条件コードは、フラグ０を設定すべきであることを示す。当てはまる場合には、インクリメントされた二次レジスタの値がレジスタＡに記憶される。換言すれば、Ａがインクリメントされる。０のフラグが設定されなかった場合、換言すれば、レジスタＢに記憶された値が０に等しくなかった場合、同じくレジスタＡである一次レジスタの値が出力される。この場合、一次レジスタに対していかなる演算も行われず、したがって、その値は、そのインクリメントされた値以外の出力である。
【００７６】
図５の最後の実施例は、どのようにして、Ｂが０よりも大きい場合に、Ａを１に設定することができ、そうでなければＡを０に設定することを、条件付き選択命令を使用して行うことができるのかを示す。この場合、フラグを設定するために使用される比較命令は、レジスタＢを０と比較することである。次いで実行される条件付き選択命令は、設定されたインクリメント信号を有し、また、０にマップするレジスタおよび宛先レジスタであり、この場合はレジスタＡである、ソースレジスタを有する。したがって、レジスタＢと０との比較命令が、レジスタＢが０よりも大きいことを示した場合、二次レジスタが選択され、インクリメント値がこの０値に設定されたときには、入力が１だけインクリメントされており、１がレジスタＡに記憶される。条件を満たさなかった場合、よって、Ｂが０よりも大きくなかった場合、レジスタ０である一次レジスタが選択され、０がレジスタＡに記憶される。
【００７７】
したがって、上記の実施例で分かるように、条件付き選択命令は、条件に基づいて実行される数多くの異なる機能を提供するために使用することができる。さらに、以前の図面から明らかなように、条件付き選択命令は、単純な回路で実装することができる。
【００７８】
図６は、本発明の実施形態による例示的な条件付き選択機能を示す。この実施例では、命令が行われているのが３２ビットレジスタなのか、または６４ビットレジスタなのかを示す、選択指示子ＳＦがある。これは、３２ビット値または６４ビットのいずれかを処理することができるプロセッサで命令が使用されることを可能にする。他の実施形態において、このフラグは、命令が使用されるプロセッサの性質に応じて、異なるサイズ決定された値の間で選択するために使用することができることに留意されたい。
【００７９】
図２および図３のＸＯＲ論理を制御し、二次レジスタの値が反転されたかどうかを判断する、単一のビット反転フィールドがある。次いで、条件付き選択命令としてこの命令を一意的に識別する９ビットフィールドである、演算コードがある。次いで、この命令のための一次ソースレジスタとなるレジスタを識別する、４ビットの二次ソースレジスタ指示子Ｒｍがある。
【００８０】
次いで、選択された条件を指定し、一次レジスタまたは二次レジスタのいずれかを選択するために、どのようなフラグのパターンを必要とするのかを示す、４ビットの条件フィールドがある。次いで、使用されない１つのビットがあり、次いで、以前の図面の加算器のキャリーインを制御し、二次レジスタに記憶された値がインクリメントされたかどうかを示す、同じく単一のビットフィールドである、インクリメント指示子がある。次いで、一次ソースレジスタを識別する、４ビットの一次ソースレジスタ指示子Ｒｎがあり、次いで、宛先レジスタ指示子Ｒｄがある。この点に関して、一次および二次ソースレジスタは、「一次」および「二次」と称されるが、これは、記述されたときに命令の中にそれらが現れる順序であり、いかなるそれ以上の意味も持たない。
【００８１】
これは単に、例示的な命令の符号化であり、レジスタ演算コードおよび条件フィールドの幅は、暗示的なものに過ぎず、命令レジスタの数および処理装置がサポートする試験条件に依存することに留意されたい。さらに、この実施例において、レジスタは、ソースおよび宛先要素を記憶するために使用されるが、他の実施形態では、ソースおよび宛先記憶要素は、メモリの中の場所であり得、その場合、データ要素指示子がメモリロケーションのアドレスとなる。
【００８２】
図７は、この条件付き選択命令を実行する方法で行われるステップを示す、フロー図を示す。したがって、最初に、復号化された条件付き選択命令を受け取り、この命令が、２つのレジスタ、すなわち、レジスタ１およびレジスタ２を指定する。
【００８３】
中間値は、レジスタ２から割り当てられる。反転が設定されたかどうかが判断される。設定された場合は、中間値が論理的に反転される。インクリメントが設定されたかどうかが判断される。インクリメントが設定された場合は、中間値がインクリメントされる。次いで、条件付き命令によって指定される条件を満たしているかどうかに依存して、宛先レジスタへの出力のための値が選択される。したがって、中間値またはレジスタ１からの値が、宛先レジスタに出力される。いくつかの実施形態において、この値は、条件を満たしている場合は、宛先レジスタに出力される中間値である一方で、条件を満たしていない場合は、レジスタ１からの値である。しかしながら、他の実施形態において、この値は、条件を満たすことに応じて出力されるレジスタ１の値であり得、また、条件を満たさないことに応じて、中間値であり得る。
【００８４】
出力が中間値であった場合、この値は、レジスタ２からの元の値であり得、条件付き選択命令が反転演算および／またはインクリメント演算を指定したかどうかに依存して、１だけインクリメントされた元の値、論理的に反転された元の値、または論理的に反転され、次いで１だけインクリメントされた元の値であり得る。
【００８５】
図８は、使用され得る、仮想マシン実装を示す。上で説明した実施形態は、関心の技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートするホストオペレーティングシステム５２０を動作させるホストプロセッサ５３０上で動作する。典型的に、大型で強力なプロセッサは、相当な速度で実行する仮想マシン実装を提供することを必要とするが、そのような手法は、互換性または再使用の理由に対して、別のプロセッサに固有のコードを実行することが所望されるとき等に、特定の環境において正当化され得る。仮想マシンプログラム５１０は、アプリケーションプログラムインターフェースをアプリケーションプログラム５００に提供するが、該インターフェースは、仮想マシンプログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じである。したがって、上で説明したメモリアクセスの制御を含む、プログラム命令は、それらの仮想マシンハードウェアとの相互作用をモデル化するために、仮想マシンプログラム５１０を使用してアプリケーション５００内から実行され得る。
【００８６】
本発明の種々のさらなる態様および特徴は、添付の請求の範囲で定義される。上で説明した本明細書の実施形態には、本発明の趣旨を逸脱することなく、種々の修正を行うことができる。
【図１】
2013539882.tif 000002
【図２】
2013539882.tif 000003
【図３】
2013539882.tif 000004
【図４】
2013539882.tif 000005
【図５】
2013539882.tif 000006
【図６】
2013539882.tif 000007
【図７】
2013539882.tif 000008
【図８】
2013539882.tif 000009
【手続補正書】
【提出日】平成24年8月10日(2012.8.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
条件を満たしていることに基づいて、２つのソースレジスタの選択から宛先レジスタに書き込むべき結果をプロセッサに選択させる、選択命令も知られている。
米国特許公報第２００６／０２３６０７８号は、２つのレジスタのコンテンツが共に追加されてもよく、同一条件を満たす場合には、結果レジスタにその結果を配置し、同一条件を満たさない場合には、他のレジスタのコンテンツを結果レジスタに配置する、条件選択命令を開示している。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
第１の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、データ要素を記憶するための複数の記憶要素を備える、データストアと、少なくとも１つの条件付き選択命令を復号化するように構成される、命令復号器であって、少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、を備え、演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか１つを含み、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、データプロセッサは、復号化された少なくとも１つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
いくつかの実施形態において、記憶要素データストアは、ゼロ値にマップする記憶要素を含む。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
本発明の第２の態様は、データ処理装置の方法を提供し、該方法は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素内のデータ要素に対して行われる演算を指定する、少なくとも１つの条件付き選択命令を受け取ることとであって、演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか１つを含む、該受け取ることと、少なくとも１つの受け取った条件付き選択命令を復号化することと、条件が所定の結果を有するかどうかを判断することと、条件が所定の結果を有する場合に、二次ソース記憶要素を選択し、選択された記憶要素からのデータ要素に対して演算を行って、結果として生じるデータ要素を形成することと、条件が所定の結果を有しない場合に、一次記憶要素内のデータ要素を選択して、結果として生じるデータ要素を形成することと、を含む。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００４５
【補正方法】変更
【補正の内容】
【００４５】
本発明の第４の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、該仮想マシンは、本発明の第１の態様のデータ処理装置に記載の命令実行環境を提供する。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【手続補正１１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ要素を記憶するための複数の記憶要素を備える、データストアと、
少なくとも１つの条件付き選択命令を復号化するように構成される、命令復号器であって、前記少なくとも１つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、
前記命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、
を備え、
前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすること、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、前記二次ソース記憶要素からの前記データ要素を論理的に反転させてインクリメントし、該データ要素の算術否定を生成することのうちのいずれか１つを含み、
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成する、
データ処理装置。
【請求項２】
前記命令はさらに、宛先記憶要素を指定し、前記データプロセッサは、前記少なくとも１つの条件付き選択命令に対応して、前記結果として生じるデータ要素を前記宛先記憶要素に記憶する、請求項１に記載のデータ処理装置。
【請求項３】
前記宛先記憶要素は、前記一次ソース記憶要素および二次ソース記憶要素のうちの１つを備える、請求項２に記載のデータ処理装置。
【請求項４】
前記データプロセッサは、前記復号化された少なくとも１つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行い、前記一次記憶要素内の前記データ要素からの前記結果として生じるデータ要素を形成する、請求項１に記載のデータ処理装置。
【請求項５】
前記記憶要素データストアは、ゼロ値にマップする記憶要素を含む、請求項１〜４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記記憶要素は、レジスタを備え、前記記憶要素データストアは、レジスタバンクを備える、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記記憶要素は、メモリロケーションを備え、前記記憶要素データストアは、メモリを備える、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項８】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
前記二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、
前記一次記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備え、
前記インクリメント制御信号が設定されることに応じて、前記キャリーイン信号が１に設定され、前記加算器は、前記少なくとも１つのソース記憶要素からの受け取った値をインクリメントする、
請求項１〜７のいずれか１項に記載のデータ処理装置。
【請求項９】
前記命令復号器は、前記条件付き選択命令に応じて、反転制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
前記反転制御信号が設定されることに応じて、反転回路を通過した前記二次ソース記憶要素から値を受け取り、かつ前記反転信号が設定されないことに応じて、前記反転回路を通過しなかった前記二次ソース記憶要素から値を受け取るように構成される、加算器と、
前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備える、
請求項１〜８のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、
前記インクリメント信号が設定されることに応じて、前記キャリーイン信号が１に設定され、前記反転信号が設定されることに応じて、前記加算器は、前記二次ソース記憶要素からの前記受け取った反転値をインクリメントする、
請求項９に記載のデータ処理装置。
【請求項１１】
前記一次ソース記憶要素および前記二次ソース記憶要素は、同じ記憶要素である、請求項１〜１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記条件の結果は、少なくとも１つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される、請求項１〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記少なくとも１つの以前のデータ処理演算は、前記ソース記憶要素の少なくとも１つの中のデータ要素を、別の値と比較することを含む、請求項１２に記載のデータ処理装置。
【請求項１４】
前記少なくとも１つの以前のデータ処理演算は、前記一次ソース記憶要素の中のデータ要素を、前記二次ソース要素の中のデータ要素と比較することを含む、請求項１３に記載のデータ処理装置。
【請求項１５】
前記条件は、等しくない、等しい、より小さい、より大きい、より大きいか等しい、より小さいか等しい、ゼロ、および負のうちの少なくとも１つを含む、請求項１２〜１４のいずれか１項に記載のデータ処理装置。
【請求項１６】
前記算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも１つを含む、請求項１２〜１５のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記条件の前記所定の結果は、前記条件を満たしていることを含む、請求項１〜１６のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記条件付き選択命令は、前記ソースおよび宛先記憶要素の幅を示す、指示子を備える、請求項１〜１７のいずれか１項に記載のデータ処理装置。
【請求項１９】
前記データ処理装置は、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、前記条件付き選択命令に応じて、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行うための前記回路の少なくとも一部は、前記算術回路を備える、請求項１〜１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、少なくとも１つの条件付き選択命令を受け取ることと、
前記少なくとも１つの受け取った条件付き選択命令を復号化することと、
前記条件が所定の結果を有するかどうかを判断することと、
前記条件が前記所定の結果を有する場合に、前記二次ソース記憶要素を選択し、前記選択された記憶要素からのデータ要素に対して前記演算を行って、結果として生じるデータ要素を形成することと、
前記条件が前記所定の結果を有しない場合に、前記一次記憶要素内の前記データ要素を選択して、前記結果として生じるデータ要素を形成することと、
を含み、
前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすること、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、前記二次ソース記憶要素からの前記データ要素を論理的に反転させてインクリメントし、該データ要素の算術否定を生成することのうちのいずれか１つを含む、
データ処理装置の方法。
【請求項２１】
前記結果として生じるデータ要素を、前記少なくとも１つの条件付き選択命令によって指定される宛先記憶要素に記憶する付加的なステップを行うことを含む、請求項２０に記載の方法。
【請求項２２】
前記条件が前記所定の結果を有するかどうかを判断する前記ステップは、前記演算が前記二次ソース記憶要素からの前記データ要素に対して行われた後に行われる、請求項２０または２１に記載のデータを処理する方法。
【請求項２３】
データプロセッサ上で実行したときに、前記データプロセッサを制御して、請求項２０〜２２のいずれか１項に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品。
【請求項２４】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜１９のいずれか１項に記載のデータ処理装置による命令実行環境を提供する、仮想マシン。
【国際調査報告】
2013539882.tif 000010
2013539882.tif 000011
2013539882.tif 000012
2013539882.tif 000013