(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5732139
(24)【登録日】2015年4月17日
(45)【発行日】2015年6月10日
(54)【発明の名称】データ要素の条件付き選択
(51)【国際特許分類】
G06F 9/30 20060101AFI20150521BHJP
G06F 9/305 20060101ALI20150521BHJP
【FI】
G06F9/30 350A
G06F9/30 340E
G06F9/30 340A
【請求項の数】24
【全頁数】21
(21)【出願番号】特願2013-533280(P2013-533280)
(86)(22)【出願日】2011年9月29日
(65)【公表番号】特表2013-539882(P2013-539882A)
(43)【公表日】2013年10月28日
(86)【国際出願番号】GB2011051847
(87)【国際公開番号】WO2012049474
(87)【国際公開日】20120419
【審査請求日】2013年10月25日
(31)【優先権主張番号】1017176.7
(32)【優先日】2010年10月12日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】594154428
【氏名又は名称】エイアールエム リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】クラスク、サイモン ジョン
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
(72)【発明者】
【氏名】スティーブンズ、ナイジェル ジョン
【審査官】
清木 泰
(56)【参考文献】
【文献】
特表2008−537231(JP,A)
【文献】
特表2013−530450(JP,A)
【文献】
特開2001−022576(JP,A)
【文献】
特開平4−271431(JP,A)
【文献】
特開平8−022448(JP,A)
【文献】
米国特許第5805913(US,A)
【文献】
特開2010−130407(JP,A)
【文献】
特表2008−520048(JP,A)
【文献】
ARM Limited,ARM Architecture Reference Manual ARM DDI 0100I,[online],scss.tcd.ie,2005年 7月,Pages:A1-2, A4-82〜A4-83, A5-2, A5-8, [平成26年9月26日検索], インターネット,Pagesの続き:A7-80,URL,URL:https://www.scss.tcd.ie/~waldroj/3d1/arm_arm.pdf
【文献】
Pentium Pro ファミリ・ディベロッパーズ・マニュアル 中巻:プログラマーズ・リファレンス・マニュアル,インテルジャパン株式会社,1996年,初版,Pages:11-211〜11-212, 11-296〜11-297,Pagesの続き:11-299〜11-300
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/42
G06F 7/00
G06F 7/38− 7/537
G06F 7/57− 7/575
G06F 7/74− 7/78
(57)【特許請求の範囲】
【請求項1】
データ要素を記憶するための複数の記憶要素を備える、データストアと、
少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、前記少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、
前記命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、
を備え、
前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすること、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、前記二次ソース記憶要素からの前記データ要素を論理的に反転させてインクリメントし、該データ要素の算術否定を生成することのうちのいずれか1つを含み、
前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次ソース記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成し、
前記データプロセッサは、前記二次ソース記憶要素から前記データ要素を受け取り、インクリメント制御信号に応答して前記受け取ったデータをインクリメントするように構成されている、加算器を有する、
データ処理装置。
【請求項2】
前記命令はさらに、宛先記憶要素を指定し、前記データプロセッサは、前記少なくとも1つの条件付き選択命令に対応して、前記結果として生じるデータ要素を前記宛先記憶要素に記憶する、請求項1に記載のデータ処理装置。
【請求項3】
前記宛先記憶要素は、前記一次ソース記憶要素および二次ソース記憶要素のうちの1つを含む、請求項2に記載のデータ処理装置。
【請求項4】
前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令に対応して、前記条件に関して所定の結果が得られるか否かが判明する前から、前記二次ソース記憶要素内の前記データ要素に対して前記演算を開始し、前記条件に関して所定の結果が得られたと判明したら、前記演算による結果に基づいて、結果として生じるデータ要素を形成し、前記条件に関して所定の結果が得られなかったと判明したら、前記一次ソース記憶要素内の前記データ要素に基づいて、結果として生じるデータ要素を形成する、請求項1に記載のデータ処理装置。
【請求項5】
前記データストアは、ゼロ値にマップする記憶要素を含む、請求項1〜4のいずれか1項に記載のデータ処理装置。
【請求項6】
前記データストアはレジスタバンクを含み、前記データストア内の前記記憶要素はレジスタを含む、請求項1〜5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記データストアはメモリを含み、前記データストア内の前記記憶要素はメモリロケーションを含む、請求項1〜5のいずれか1項に記載のデータ処理装置。
【請求項8】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記データプロセッサは、
前記二次ソース記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、
前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記条件に関して所定の結果が得られるか否かに基づいて、前記マルチプレクサのための選択信号の値は定まり、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備え、
前記インクリメント制御信号が設定されることに応じて、前記キャリーイン信号が1に設定され、前記加算器は、前記二次ソース記憶要素からの受け取った値をインクリメントする、
請求項1〜7のいずれか1項に記載のデータ処理装置。
【請求項9】
前記命令復号器は、前記条件付き選択命令に応じて、反転制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記データプロセッサは、
前記反転制御信号が設定されることに応じて、前記二次ソース記憶要素からの前記データ要素に対して反転回路による論理的にビット単位で反転させる前記演算を行った結果である値を受け取り、かつ、前記反転制御信号が設定されないことに応じて、前記二次ソース記憶要素からの前記データ要素に対して前記反転回路による前記演算を行わなかった前記データ要素のそのままの値を受け取るように構成される、加算器と、
前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記条件に関して所定の結果が得られるか否かに基づいて、前記マルチプレクサのための選択信号の値は定まり、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備える、
請求項1〜8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、
前記復号化された条件付き選択命令を処理するように構成される前記データプロセッサは、
前記反転制御信号が設定されることに応じて、前記二次ソース記憶要素からの前記データ要素に対して反転回路による論理的にビット単位で反転させる前記演算を行った結果である値を受け取り、かつ、前記反転制御信号が設定されないことに応じて、前記二次ソース記憶要素からの前記データ要素に対して前記反転回路による前記演算を行わなかった前記データ要素のそのままの値を受け取るように構成され、かつ、キャリーイン信号から値を受け取るように構成される、加算器と、
前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記条件に関して所定の結果が得られるか否かに基づいて、前記マルチプレクサのための選択信号の値は定まり、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
を備え、
前記インクリメント信号が設定されることに応じて、前記キャリーイン信号が1に設定され、前記加算器は、受け取った値をインクリメントして出力する、
請求項1〜7のいずれか1項に記載のデータ処理装置。
【請求項11】
前記一次ソース記憶要素および前記二次ソース記憶要素は、同じ記憶要素である、請求項1〜10のいずれか1項に記載のデータ処理装置。
【請求項12】
前記条件の結果は、少なくとも1つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される、請求項1〜11のいずれか1項に記載のデータ処理装置。
【請求項13】
前記少なくとも1つの以前のデータ処理演算は、前記ソース記憶要素の少なくとも1つの中のデータ要素を、別の値と比較することを含む、請求項12に記載のデータ処理装置。
【請求項14】
前記少なくとも1つの以前のデータ処理演算は、前記一次ソース記憶要素の中のデータ要素を、前記二次ソース記憶要素の中のデータ要素と比較することを含む、請求項13に記載のデータ処理装置。
【請求項15】
前記条件は、等しくない、等しい、より小さい、より大きい、より大きいか等しい、より小さいか等しい、ゼロ、および負のうちの少なくとも1つを含む、請求項12〜14のいずれか1項に記載のデータ処理装置。
【請求項16】
前記算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも1つを含む、請求項12〜15のいずれか1項に記載のデータ処理装置。
【請求項17】
前記条件の前記所定の結果は、前記条件を満たしていることを含む、請求項1〜16のいずれか1項に記載のデータ処理装置。
【請求項18】
前記条件付き選択命令は、前記ソースおよび宛先記憶要素の幅を示す、指示子を備える、請求項1〜17のいずれか1項に記載のデータ処理装置。
【請求項19】
前記データ処理装置は、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、前記条件付き選択命令に応じて、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行うための回路の少なくとも一部として、前記算術回路を用いる、請求項1〜18のいずれか1項に記載のデータ処理装置。
【請求項20】
一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、少なくとも1つの条件付き選択命令を受け取ることと、
前記少なくとも1つの受け取った条件付き選択命令を復号化することと、
前記条件が所定の結果を有するかどうかを判断することと、
前記条件が前記所定の結果を有する場合に、前記二次ソース記憶要素を選択し、前記選択された記憶要素からのデータ要素に対して前記演算を行って、結果として生じるデータ要素を形成することと、
前記条件が前記所定の結果を有しない場合に、前記一次ソース記憶要素内の前記データ要素を選択して、前記結果として生じるデータ要素を形成することと、
を含み、
前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすること、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、前記二次ソース記憶要素からの前記データ要素を論理的に反転させてインクリメントし、該データ要素の算術否定を生成することのうちのいずれか1つを含み、
前記二次ソース記憶要素から前記データ要素を受け取り、インクリメント制御信号に応答して前記受け取ったデータをインクリメントすることを更に含む、
データ処理装置の方法。
【請求項21】
前記結果として生じるデータ要素を、前記少なくとも1つの条件付き選択命令によって指定される宛先記憶要素に記憶する付加的なステップを行うことを含む、請求項20に記載の方法。
【請求項22】
前記条件が前記所定の結果を有するかどうかを判断することは、前記演算が前記二次ソース記憶要素からの前記データ要素に対して行われた後に行われる、請求項20または21に記載のデータを処理する方法。
【請求項23】
データプロセッサに、請求項20〜22のいずれか1項に記載の方法を実行させるための前記条件付き選択命令を備えるコンピュータプログラム。
【請求項24】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項1〜19のいずれか1項に記載のデータ処理装置による命令実行環境を提供する、仮想マシン。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置の分野に関し、具体的には、条件に基づいてソースデータ要素を選択するための条件付き選択命令の分野に関する。
【背景技術】
【0002】
条件付き命令は、例えば英国ケンブリッジのARM(登録商標)によって、処理の際に使用されており、これらの命令は、予め定義された条件を満たしていることにだけ応じて、処理演算を行うようにプロセッサに命令する。満たすことが必要とされ得る条件の例は、より小さい、より大きい、等しい、負、キャリーイン、ゼロ等のようなものである。
【0003】
特に少なくとも部分的に相互に並行して命令を行うハイエンド処理装置における、これらの条件付き命令の不利な点は、入力の場合のように条件付き命令の結果を必要とする命令ストリームの中の条件付き命令に続く命令が、その条件を満たしているかどうかに依存して、元の値または更新された結果値を必要とし得ることである。条件付き命令がまだパイプライン内にある間に、その後の命令がパイプラインに進入してしまったときに、元の値または結果値のいずれかを、その後の命令がパイプラインの中で利用できるようにする必要があり得る。これは、速度および電力に関して非常に高いオーバーヘッドを有する、元の値のさらなる読み出しを必要とし得る。
【0004】
条件を満たしていることに基づいて、2つのソースレジスタの選択から宛先レジスタに書き込むべき結果をプロセッサに選択させる、選択命令も知られている。
米国特許公報第2006/0236078号は、2つのレジスタのコンテンツが共に追加されてもよく、同一条件を満たす場合には、結果レジスタにその結果を配置し、同一条件を満たさない場合には、他のレジスタのコンテンツを結果レジスタに配置する、条件選択命令を開示している。
【発明の概要】
【発明が解決しようとする課題】
【0005】
性能を維持したままで、条件付き命令の機能の大半を保つことが可能であるようにすることが望ましい。
【課題を解決するための手段】
【0006】
第1の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、データ要素を記憶するための複数の記憶要素を備える、データストアと、少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、を備え、
演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか1つを含み、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
【0007】
本発明は、条件付き選択命令が、所定の条件の結果に応答して、記憶要素に記憶された特定の値を選択する効率的な方法であることを認識している。所定の結果は、条件を満たしていることであり得るか、または条件を満たしていないことであり得る。また、条件付き選択命令が、記憶要素の1つの値に対して演算を行わせる場合、これは、2つの結果の記憶要素のうちの1つにアクセスすることが簡単に選択されるように、性能の欠点の多くを伴わずに、従来の条件付き命令の特性の多くを伴う命令を提供することができることも認識している。
【0008】
いくつかの実施形態において、命令はさらに、宛先記憶要素を指定し、データプロセッサは、少なくとも1つの条件選択命令に対応して、結果として生じるデータ要素を宛先記憶要素に記憶する。
【0009】
命令は、結果として生じるデータ要素が記憶されるべき宛先記憶要素を指定し得、または単純に、所定の記憶場所に結果として生じるデータ要素を上書きするように構成され得る。
【0010】
いくつかの実施形態において、宛先記憶要素は、ソース記憶要素の1つであり得るが、他の実施形態において、宛先記憶要素は、異なる記憶要素であり得る。
【0011】
いくつかの実施形態において、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、二次ソース記憶要素内のデータ要素に対して演算を行い、一次記憶要素内のデータ要素からの結果として生じるデータ要素を形成する。
【0012】
条件が所定の結果を有しない場合、結果として生じるデータ要素のソースとして選択されるのは一次記憶要素である。いくつかの実施形態では、選択されるのは一次記憶要素であるが、条件付き選択命令によって指定される演算は、それでも、二次ソース記憶要素内のデータ要素に対して行われる。この場合、この演算の結果は必要とされないが、命令の実行時間の大部分を費やすのは、一般的に、条件の結果を判断しているときであるので、いずれにしてもこの演算を行うことは有利であり得、したがって、条件が所定の結果を有するかどうかが分かる前に二次記憶要素において演算が行われる場合、条件の結果が判断されると、どちらの記憶要素も選択に対して準備のできた状態になっており、手順の待ち時間が低減される。
【0017】
いくつかの実施形態において、記憶要素データストアは、ゼロ値にマップする記憶要
素を含む。
【0018】
反転およびインクリメント、ならびにゼロ値にマップする記憶要素の可能性等の、条件付き選択命令と関連付けられる演算を有する条件付き選択命令の提供は、多数のレガシー条件付き命令によって行われる演算にマップする多数の異なる演算を行う能力を伴う処理装置を提供する。これらの実施例は、後で提供する。このようにして、レガシーシステムで提供された多数の条件付き命令は、この条件付き選択機能を適切な方法で使用して模倣することができる。この条件付き選択機能は、性能の欠点の多くを伴わずに、レガシー条件付き命令の機能を提供する効率的かつ好都合な方法を提供する。
【0019】
当業者には、記憶要素が多数のものであり得ること、例えば、いくつかの実施形態ではレジスタであり得る一方で、他の実施形態ではメモリロケーションであり得ることが明らかになるであろう。
【0020】
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、一次記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備え、インクリメント制御信号が設定されることに応じて、キャリーイン信号が1に設定され、加算器は、少なくとも1つのソース記憶要素からの受け取った値をインクリメントする。
【0021】
本発明の実施形態のさらなる利点は、これらの機能を実装するために必要とされる回路が、多くの場合において、プロセッサの中に存在し得、かつ必要とされる機能を提供するために再使用することができる、簡単な処理回路であるということである。例えば、インクリメント演算は、加算器およびキャリーイン信号、キャリーイン信号を設定するインクリメント制御信号、ならびに条件の結果であるマルチプレクサのための選択機能を使用して提供することができる。
【0022】
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、反転制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、反転制御信号が設定されることに応じて、反転回路を通過した二次ソース記憶要素から値を受け取り、かつ設定されない反転制御信号に応じて、反転回路を通過しなかった二次ソース記憶要素から値を受け取るように構成される、加算器と、一次ソース記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備える。
【0023】
反転機能は、反転回路を使用して提供することができ、反転機能が加算器と連結された場合に、必要に応じて反転およびインクリメントを組み合わせることができる。
【0024】
例えば、いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、インクリメント信号が設定されることに応じて、キャリーイン信号が1に設定され、設定される反転信号に応じて、加算器は、二次ソース記憶要素からの受け取った反転値をインクリメントする。
【0025】
反転およびインクリメント手段に対する能力を提供することは、2の補数値の形態で算術否定値を提供することができる。
【0026】
いくつかの実施形態において、一次ソース記憶要素および二次ソース記憶要素は、同じ記憶要素である。
【0027】
異なるソース記憶要素が使用される可能性があるが、いくつかの実施形態において、それらは同じ記憶要素である。この場合、条件が所定の結果を有する場合、結果の要素は、演算が行われた記憶要素の中の値から形成される一方で、条件がこの所定の結果を有しない場合は、記憶されたデータ要素を使用して、結果として生じるデータ要素を形成する。これは、条件が所定の結果を有する場合、および条件が所定の結果を有しない場合に、条件付き選択を行い、次いで、演算を行うようになるという利点があり得る。これを実装するための1つの方法は、記憶要素からの2つの経路を形成することである、1つの経路は、演算を実行する機能回路を通過し、もう1つの経路は、記憶要素から直接的に進み、結果として生じる要素を伝送するために選択される経路は、条件の結果に依存する。
【0028】
いくつかの実施形態において、条件の結果は、少なくとも1つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される。
【0029】
条件が所定の結果を有するかどうかは、少なくとも1つの以前のデータ処理演算に応じて、コンピュータのステータス記憶要素に設定される、算術論理フラグから判断することができる。これらの以前のデータ処理演算は、条件付き選択命令の前に行われる少なくとも1つの命令に応じて行われ、これらの命令は、条件の結果、すなわち、満たすかどうかを判断し、それに従ってフラグを設定する。したがって、条件が特定の結果を有するかどうかを判断するために、特定の条件コードをフラグと比較し、一致した場合は、条件が所定の結果を有するものと判断し、一致しなかった場合は、所定の結果を有しないものと判断する。明らかに、このシステムは、一致しないことが所定の結果であり、一致することが所定の結果ではないように反転させることができる。
【0030】
以前のデータ処理演算は、多数のものであり得るが、いくつかの実施形態では、ソース記憶要素のうちの少なくとも1つの中のデータ要素を別の値と比較することを含む。
【0031】
条件コードは、特定の値よりも小さいソース記憶要素Bの値である等のものであり得る。この条件の結果を判断するために、記憶要素Bに記憶された値を、記憶要素Bの値からの特定の値の減算を行うことによってより小さくなければならない特定の値と比較し、これに応じて、算術論理フラグが設定される。この演算は、命令ストリームの中の初期の命令に応じて行われる。したがって、負のフラグが設定された場合は、条件を満たしている。
【0032】
他の実施形態において、少なくとも1つの以前のデータ処理演算は、一次ソース記憶要素の中のデータ要素を、二次ソース要素の中のデータ要素と比較することを含む。
【0033】
2つのソース記憶要素の値が相互に特定の関係を有する場合、これらを比較し、特定の演算だけを行うことが適切であり得る。これが条件である場合、ここでも、以前の処理演算は、これらの値を比較し、フラグを設定し、条件を満たしていること、または条件を満たしていないことをステータスフラグから判断することができるものであり得る。
【0034】
条件は、多数のものであり得、例えば、等しくない、等しい、より小さい、より大きいか等しい、より小さいか等しい、ゼロ、または負であり得る。これらの条件の全ては、条件フラグから判断することができる。
【0035】
算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも1つを含む。したがって、値間の比較は、しばしば、減算であり得、負の結果は、一方の値がもう一方の値よりも大きかったことを示し、同様に、ゼロの結果は、値が等しかったことを示す、等である。
【0036】
いくつかの実施形態において、条件の所定の結果は、条件を満たしていることを含む。
【0037】
前述のように、条件の所定の結果は、条件を満たしていることであり得、代替として、条件を満たしていないことであり得る。
【0038】
いくつかの実施形態において、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、条件付き選択命令に応じて、二次ソース記憶要素内のデータ要素に対して演算を行うための回路の少なくとも一部は、算術回路を備える。
【0039】
前述のように、条件付き選択機能を行い得るインクリメント等の演算は、算術回路を使用して行われてもよい。この算術回路が、加算演算および減算演算を行うためのプロセッサの中に既に存在する場合は、条件付き選択命令を行うためのこの回路を再使用するのに好都合であり得る。そのような場合、この命令の機能は、数多くの余分な回路を追加することなく提供することができ、それによって、回路領域を効率的に利用する。
【0040】
いくつかの実施形態において、条件付き選択命令は、ソースおよび宛先記憶要素の幅を示す、指示子を備える。
【0041】
本発明の実施形態は、異なる幅の記憶要素を使用し得る装置とともに使用するのに好適である。したがって、例えば、ハードウェアは、64ビット長であるその記憶要素としてレジスタを備え得るが、時折、32ビット長の記憶要素を使用するコードを実行し得る。そのような場合、指示子は、アクセスされるレジスタの関連する部分に設定することができる。
【0042】
本発明の第2の態様は、データ処理装置の方法を提供し、該方法は、一次ソース記憶要素、二次ソース記憶要素
、条件、および二次ソース記憶要素内のデータ要素に対して行われる演算を指定する、少なくとも1つの条件付き選択命令を受け取ることと
であって、
演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか1つを含む、該受け取ることと、少なくとも1つの受け取った条件付き選択命令を復号化することと、条件が所定の結果を有するかどうかを判断することと、条件が所定の結果を有する場合に、二次ソース記憶要素を選択し、選択された記憶要素からのデータ要素に対して演算を行って、結果として生じるデータ要素を形成することと、条件が所定の結果を有しない場合に、一次記憶要素内のデータ要素を選択して、結果として生じるデータ要素を形成することと、を含む。
【0043】
本発明の第3の態様は、データプロセッサ上で実行したときに、データプロセッサを制御して、本発明の第2の態様に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品を提供する。
【0045】
本発明の第
4の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、該仮想マシンは、本発明の第1の態様のデータ処理装置に記載の命令実行環境を提供する。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
【図面の簡単な説明】
【0046】
【
図1】本発明の実施形態による、データ処理装置を示す図である。
【
図2】本発明の実施形態による、条件付き選択命令を行うための処理回路を示す図である。
【
図3】本発明の実施形態による、条件付き選択命令を行うために再使用されているデータ処理装置内の算術回路を示す図である。
【
図4】本発明の実施形態による、条件付き選択命令および例示的なステータスフラグを示す図である。
【
図5】レガシー条件命令を模倣する機能を行うために、どのように条件付き選択命令を使用することができるかという例を示す図である。
【
図6】本発明の実施形態による方法を例示するフロー図である。
【
図7】条件付き選択命令の例示的な符号化を示す図である。
【
図8】本手法の仮想マシン実装を概略的に示す図である。
【発明を実施するための形態】
【0047】
図1は、本発明の実施形態による、データ処理装置10を示す。このデータ処理装置10は、処理すべき命令を記憶するためのデータストア20を有する。該データ処理装置は、命令ストア20から命令をフェッチするためのフェッチユニット32と、これらの命令を復号化するための命令復号器34と、復号化された命令を処理するための処理ユニット36とを含む、命令を処理するためのパイプライン30を有する。
【0048】
また、複数のレジスタを備える、レジスタバンク40もある。処理ユニット36は、これらのレジスタへのデータの書き込みおよび読み出しを行う。レジスタバンクは、プロセッサのステータスフラグを含むプログラムステータスレジスタCPSRを含む。これらのステータスフラグは、処理演算に応じて設定され、プロセッサが使用して、プロセッサの特定の条件または状態を判断することができる。
【0049】
また、この実施形態では、0にマップするレジスタX31もある。したがって、このレジスタが命令によって選択されたときに、常時0値が与えられる。
【0050】
復号器34が復号化するように構成される1つの命令は、条件付き選択命令である。この復号化された命令に応じて、プロセッサは、命令によって指定されるソースレジスタのうちの1つに対して、この命令によって指定される演算を行い、次いで、結果として生じる要素が書き込まれる宛先レジスタとして、このソースレジスタまたは別のレジスタのいずれかを選択する。
【0051】
図2は、そのような条件付き選択命令に応じて、これらの処理演算を行うために使用することができる、処理ユニット36内の処理回路の実施例を示す。
【0052】
本発明の実施形態において、条件付き選択命令は、レジスタのうちの1つの値に対して、2つの演算のうちの1つを行うことができる。それは、インクリメント制御信号が設定されることに応じて、インクリメントすることができ、または反転制御フラグが設定されることに応じて記憶された値の中のビット毎の論理ビット単位の反転を行うことによって、値を反転させることができる。条件付き選択命令は、条件に依存し、したがって、条件を満たしているかどうかが判断され、この判断に基づいて、このレジスタの一方またはもう一方が出力される。
【0053】
したがって、
図2の実施形態では、2つのソースレジスタR
nおよびR
mがある。この実施形態において、ソースレジスタは、どちらも32ビット長であるが、代替の実施形態において、それらは、64ビット長であり得る。他の実施形態において、ソースレジスタは、64ビット長であり得るが、それらは、条件付き選択命令で選択ビットが設定されることに応じて、32ビットレジスタとして扱われ、下位または上位32ビットだけがそこに書き込まれ、またはそこから読み出される。
【0054】
一方のレジスタR
mは、条件付き選択命令が指定し得る任意の演算が行われる、二次レジスタである。したがって、この実施形態において、条件付き選択命令は、反転演算、インクリメント演算、もしくは両方を指定し得、またはどちらも指定し得ない。どちらも指定されない場合、条件付き選択機能は、マルチプレクサ50を使用して、単にレジスタR
mまたはR
nのいずれかを選択する。
【0055】
レジスタR
mおよびR
nは、異なるレジスタとして示されているが、それらは、本発明の実施形態において、マルチプレクサに進むレジスタからの、および機能回路を通過する別のレジスタからの直接的なデータ経路を伴う、同じレジスタであり得ることに留意されたい。
【0056】
マルチプレクサ50の選択信号は、評価ユニット60を使用して評価される命令と関連付けられる条件から判断される。この実施形態において、評価ユニット60は、この命令と関連付けられる条件コードを、処理装置のCPSRレジスタに記憶された算術論理フラグと比較する。条件コードとフラグとの間に一致がある場合、条件を満たしているものと判断され、レジスタR
mが選択される。いかなる一致もなかった場合、レジスタR
nが選択される。
【0057】
したがって、反転信号もインクリメント信号も設定されない基本的な場合において、命令は、条件付き選択機能命令として作用し、条件を満たしていること、または条件を満たしていないことに基づいて、R
mまたはR
nのいずれかが選択される。しかしながら、それが反転条件付き選択命令である場合、反転信号が設定され、XORゲート70は、レジスタR
mの中のビットのそれぞれをビット単位に反転させるように作用し、反転値が、加算器75を介して、マルチプレクサ50に出力される。インクリメント信号が設定されない場合、それは単に、選択機能がレジスタR
mを選択する場合に宛先レジスタR
dに出力される、ビット単位の反転値である。選択機能がレジスタR
nを選択する場合は、ビット単位の反転が行われるが、反転の結果は、宛先レジスタに出力されるように選択されない。
【0058】
また、この処理回路に入力されるインクリメント信号もあり、これは、キャリーイン信号として加算器75に到達し、したがって、インクリメント信号が設定されたときに、加算器がキャリーインを受け取る。したがって、反転が設定されていない場合にレジスタR
mに記憶された値であり、反転信号が設定されている場合にレジスタR
mに記憶された反転値である、インクリメント信号が設定されたときにXORゲート70から出力される値は、条件が所定の結果を有する場合に、インクリメントされ、マルチプレクサ50を使用して選択される。反転信号およびインクリメント信号が設定された場合、値出力は、レジスタR
mに記憶された値の否定された2の補数値である。インクリメント信号だけが設定された場合、それは単に、1だけインクリメントされたレジスタR
mに記憶された値である。
【0059】
レジスタR
mに記憶された値に対して行われる演算は、マルチプレクサ50を使用した選択の前に行われることに留意されたい。したがって、レジスタR
mが選択されなかった場合、これらの演算は、いかなる目的でも行われない。しかしながら、条件コードの評価は、一般的に、かなりの時間がかかり、したがって、行われる演算の終了に向かってだけこの結果が必要とされる場合に有利になり得る。
【0060】
図3は、
図2に示されるものに類似しているが、一般的に処理装置の算術回路内の加算器回路75を再使用している、この処理回路の代替の実施形態を示す。したがって、
図2と比較したときに、処理回路が加算器75に入力されるレジスタAをマスクするために条件付き選択命令を行っているときに使用される、追加のANDゲート80がある。したがって、条件付き選択命令が実行されているときには、レジスタAに記憶された値が加算器に到達しないように、0がANDゲートに入力される。一般処理演算のための算術回路の一部として使用されるときに、ANDゲートは、レジスタAをマスクせず、加算器75は、レジスタAおよびB、またはレジスタBの反転値を伴うレジスタAを加えるために使用され得る。
【0061】
条件付き選択機能の場合、加算器75は、レジスタBに記憶された値をインクリメントするために、またはレジスタBに記憶された反転値をインクリメントするために使用され、したがって、一般算術命令を行うために存在する加算器に対する他の入力(レジスタA)は、ANDゲート80を使用してマスクされる。他の点において、この回路は、
図2の回路と同様である。
【0062】
XOR論理は、ビット単位の排他的ORに基づいて中間結果を作成することによって、反転機能を提供し、レジスタB内の各ビットは、反転信号を有する。この回路は、
図3に示されるように、プロセッサの主算術ユニットと統合され得るか、または
図2に示されるように、別個の回路として構築され得ることを理解されたい。
【0063】
図4は、異なる種類の条件付き選択命令およびそれらが出力した値の例を示す。したがって、いかなる反転信号もインクリメント信号もない条件付き選択命令に応じて、条件が算術論理フラグに一致するかどうかに依存して、一次レジスタR
nに記憶された値または二次レジスタR
mに記憶された値が、宛先レジスタに出力される。
【0064】
インクリメント信号が設定される条件付き選択命令に応じて、レジスタR
mから受け取った値がインクリメントされ、再度、条件およびフラグに応じて、レジスタR
nに記憶された値またはインクリメントされたレジスタR
mに記憶された値のいずれかが、宛先レジスタに出力される。
【0065】
反転信号が設定された場合、レジスタR
mからの値は、ビット単位で反転され、再度、条件コードがフラグに一致するかどうかに応じて、反転させたR
mの値、またはR
nに記憶された値のいずれかが、宛先レジスタに書き込まれる。
【0066】
反転およびインクリメントビットが設定された場合、レジスタR
mからの値は、反転およびインクリメントの双方が行われる。これは、元の値の算術否定バージョンである、R
mに記憶された値の2つの補数値を生成する。再度、条件コードがフラグに一致するかどうかに応じて、レジスタR
nに記憶された値またはレジスタR
mからの反転およびインクリメントされた値のいずれかが、宛先レジスタに書き込まれる。
【0067】
条件コードに関して、これは、この実施形態において、レジスタR
nを選択することとは対照的に、レジスタR
mを選択するために必要とされるフラグのパターンを示す、4ビットのコードである。フラグは、4ビットの値としてCPSRレジスタに記憶され、N、Z、CおよびBを備える。Nは、負の結果を示し、Zは、0の結果を示し、Cは、キャリーアウトを示し、Bは、符号付き算術オーバフローを示す。これらのフラグは、以前のデータ処理演算によって設定される。したがって、条件付き選択命令が実行される前に、条件付き選択命令の条件を満たしているかどうかを判断するために必要とされる、比較を行う演算が実行される。これらの演算は、それらの比較の結果としてフラグを設定する、比較命令に応じて行われ得る。条件を満たしているかどうかを判断するために、条件を満たしていることを示す特定のフラグ値に一致する条件コードを、条件選択命令内で符号化することができ、フラグに対するこのコードの単純な比較が、条件を満たしているかどうかを判断することになる。
【0068】
これらの以前の処理命令は、おそらくはソースレジスタの1つの中の値をソースレジスタの中の別の値と比較するための、またはおそらくはソースレジスタ値を設定値と比較するための、比較命令という形態を取り得る。一般的に、比較命令は、減算演算を行い、この結果は、算術フラグを設定する。したがって、命令および条件コードがそれである場合、Bがインクリメントされ、AがBより小さい場合、比較は、BからAを減算することができ、結果が負である場合、Nフラグが設定されるので、条件コードは、Nフラグが設定されることに一致するパターンを有しなければならない。この比較命令は、条件選択命令に先立って行うことができ、さらにはいくつかの命令に先立って行うことができるが、ただし、算術論理フラグを設定するいかなる中間命令もないことを条件とする。
【0069】
前述のように、この条件付き選択命令の利点の1つは、欠点のいくつかを伴わずに以前の条件付き命令の機能を提供することができることである。
図5は、条件付き選択命令が相当する機能を提供することができる、例示的な条件付き命令を示す。
【0070】
したがって、第1の実施例において、条件付き選択命令は、1と0との間の選択を提供することができる。これは、0にマップするレジスタを使用する。この図において、これは、簡潔にするためR0として示されるが、
図1で示した実施形態では、値0にマップするように設定されたレジスタ31であった。この場合、0にマップするレジスタは、双方のソースレジスタとして使用され、インクリメント機能は、条件に依存して、したがって、0または1のいずれかを出力できる条件に依存して、0値を選択することができるように、または0値のインクリメントを選択することができるように使用される。
【0071】
条件付き選択命令はまた、0値と全て1のマスクとの間で選択するために使用することもできる。この場合、反転演算が使用され、再度、0にマップするレジスタが2つのソースレジスタとして使用される。この場合、このレジスタは、宛先レジスタとして選択されるか、またはこのレジスタの反転バージョンが選択される。このレジスタの反転バージョンは、1のマスクであり、したがって、条件を満たすかどうかに応じて、0値レジスタまたは1のマスクが宛先レジスタに提供される。
【0072】
条件付き選択命令は、レジスタに記憶された絶対値を出力するために使用することもできる。この機能を提供するために、この実施例においてR3として与えられるこのレジスタの中の値を0値と比較することによって、条件フラグが最初に設定される。選択されたインクリメントおよび反転機能を伴う条件付き選択命令は、次いで、ソースレジスタおよび宛先レジスタの双方として、また、条件が「より小さい」ものとして、レジスタR3とともに使用される。したがって、R3が0より小さい場合、換言すれば、それが負の値である場合、R3に記憶された値は、インクリメントおよび反転され、この値の2の補数値、換言すれば、負の値を提供する。したがって、R3に記憶された値が負である場合は否定されるが、これは、R3に記憶された値の正のバージョンが出力されることを意味する。しかしながら、R3に記憶された値が正である場合は、条件「より小さい」を満たさず、同じくR3である一次レジスタに記憶された値が出力される。したがって、この特定の条件付き選択命令を使用することによって、絶対値命令が提供される。
【0073】
次の実施例は、ある値に対する条件付きインクリメントを提供し、この場合、条件付き選択命令は、選択されたインクリメント演算を有する。この場合、一次レジスタは、R3として与えられ、二次レジスタは、宛先レジスタとして与えられる。条件は、R3に記憶された値が、R4に記憶されたインクリメントされた値に等しいことであり、したがって、当てはまる場合には、R3に記憶された値が出力される。当てはまらない場合には、次いで、R4に記憶された値がインクリメントされ、R4に記憶される。
【0074】
以下の命令は、命令に関連する条件が、どのように、ソースレジスタに記憶された値に依存し得るのではなく、別のレジスタに記憶された値に関連し得るのかを示す。この場合、Bに記憶された値が0に等しい場合、Aに記憶された値をインクリメントしなければならない、という条件付き命令を模倣するために、条件付き選択命令が使用される。条件付き選択命令を使用してこれを行うために、フラグを設定するために使用される初期命令は、レジスタBの値を0と比較することである。次いで実行される条件付き選択命令は、インクリメント演算が行われ、ソースおよび宛先レジスタが同じであり、条件が「等しい」である場合のものである。したがって、レジスタBを0と比較するという比較命令が等しかった場合、この命令は、実質的に減算であるので、Zフラグが設定されていることになる。
【0075】
命令の条件コードは、フラグ0を設定すべきであることを示す。当てはまる場合には、インクリメントされた二次レジスタの値がレジスタAに記憶される。換言すれば、Aがインクリメントされる。0のフラグが設定されなかった場合、換言すれば、レジスタBに記憶された値が0に等しくなかった場合、同じくレジスタAである一次レジスタの値が出力される。この場合、一次レジスタに対していかなる演算も行われず、したがって、その値は、そのインクリメントされた値以外の出力である。
【0076】
図5の最後の実施例は、どのようにして、Bが0よりも大きい場合に、Aを1に設定することができ、そうでなければAを0に設定することを、条件付き選択命令を使用して行うことができるのかを示す。この場合、フラグを設定するために使用される比較命令は、レジスタBを0と比較することである。次いで実行される条件付き選択命令は、設定されたインクリメント信号を有し、また、0にマップするレジスタおよび宛先レジスタであり、この場合はレジスタAである、ソースレジスタを有する。したがって、レジスタBと0との比較命令が、レジスタBが0よりも大きいことを示した場合、二次レジスタが選択され、インクリメント値がこの0値に設定されたときには、入力が1だけインクリメントされており、1がレジスタAに記憶される。条件を満たさなかった場合、よって、Bが0よりも大きくなかった場合、レジスタ0である一次レジスタが選択され、0がレジスタAに記憶される。
【0077】
したがって、上記の実施例で分かるように、条件付き選択命令は、条件に基づいて実行される数多くの異なる機能を提供するために使用することができる。さらに、以前の図面から明らかなように、条件付き選択命令は、単純な回路で実装することができる。
【0078】
図6は、本発明の実施形態による例示的な条件付き選択機能を示す。この実施例では、命令が行われているのが32ビットレジスタなのか、または64ビットレジスタなのかを示す、選択指示子SFがある。これは、32ビット値または64ビットのいずれかを処理することができるプロセッサで命令が使用されることを可能にする。他の実施形態において、このフラグは、命令が使用されるプロセッサの性質に応じて、異なるサイズ決定された値の間で選択するために使用することができることに留意されたい。
【0079】
図2および
図3のXOR論理を制御し、二次レジスタの値が反転されたかどうかを判断する、単一のビット反転フィールドがある。次いで、条件付き選択命令としてこの命令を一意的に識別する9ビットフィールドである、演算コードがある。次いで、この命令のための一次ソースレジスタとなるレジスタを識別する、4ビットの二次ソースレジスタ指示子R
mがある。
【0080】
次いで、選択された条件を指定し、一次レジスタまたは二次レジスタのいずれかを選択するために、どのようなフラグのパターンを必要とするのかを示す、4ビットの条件フィールドがある。次いで、使用されない1つのビットがあり、次いで、以前の図面の加算器のキャリーインを制御し、二次レジスタに記憶された値がインクリメントされたかどうかを示す、同じく単一のビットフィールドである、インクリメント指示子がある。次いで、一次ソースレジスタを識別する、4ビットの一次ソースレジスタ指示子R
nがあり、次いで、宛先レジスタ指示子R
dがある。この点に関して、一次および二次ソースレジスタは、「一次」および「二次」と称されるが、これは、記述されたときに命令の中にそれらが現れる順序であり、いかなるそれ以上の意味も持たない。
【0081】
これは単に、例示的な命令の符号化であり、レジスタ演算コードおよび条件フィールドの幅は、暗示的なものに過ぎず、命令レジスタの数および処理装置がサポートする試験条件に依存することに留意されたい。さらに、この実施例において、レジスタは、ソースおよび宛先要素を記憶するために使用されるが、他の実施形態では、ソースおよび宛先記憶要素は、メモリの中の場所であり得、その場合、データ要素指示子がメモリロケーションのアドレスとなる。
【0082】
図7は、この条件付き選択命令を実行する方法で行われるステップを示す、フロー図を示す。したがって、最初に、復号化された条件付き選択命令を受け取り、この命令が、2つのレジスタ、すなわち、レジスタ1およびレジスタ2を指定する。
【0083】
中間値は、レジスタ2から割り当てられる。反転が設定されたかどうかが判断される。設定された場合は、中間値が論理的に反転される。インクリメントが設定されたかどうかが判断される。インクリメントが設定された場合は、中間値がインクリメントされる。次いで、条件付き命令によって指定される条件を満たしているかどうかに依存して、宛先レジスタへの出力のための値が選択される。したがって、中間値またはレジスタ1からの値が、宛先レジスタに出力される。いくつかの実施形態において、この値は、条件を満たしている場合は、宛先レジスタに出力される中間値である一方で、条件を満たしていない場合は、レジスタ1からの値である。しかしながら、他の実施形態において、この値は、条件を満たすことに応じて出力されるレジスタ1の値であり得、また、条件を満たさないことに応じて、中間値であり得る。
【0084】
出力が中間値であった場合、この値は、レジスタ2からの元の値であり得、条件付き選択命令が反転演算および/またはインクリメント演算を指定したかどうかに依存して、1だけインクリメントされた元の値、論理的に反転された元の値、または論理的に反転され、次いで1だけインクリメントされた元の値であり得る。
【0085】
図8は、使用され得る、仮想マシン実装を示す。上で説明した実施形態は、関心の技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を動作させるホストプロセッサ530上で動作する。典型的に、大型で強力なプロセッサは、相当な速度で実行する仮想マシン実装を提供することを必要とするが、そのような手法は、互換性または再使用の理由に対して、別のプロセッサに固有のコードを実行することが所望されるとき等に、特定の環境において正当化され得る。仮想マシンプログラム510は、アプリケーションプログラムインターフェースをアプリケーションプログラム500に提供するが、該インターフェースは、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じである。したがって、上で説明したメモリアクセスの制御を含む、プログラム命令は、それらの仮想マシンハードウェアとの相互作用をモデル化するために、仮想マシンプログラム510を使用してアプリケーション500内から実行され得る。
【0086】
本発明の種々のさらなる態様および特徴は、添付の請求の範囲で定義される。上で説明した本明細書の実施形態には、本発明の趣旨を逸脱することなく、種々の修正を行うことができる。