JP2013539882A - データ要素の条件付き選択 - Google Patents

データ要素の条件付き選択 Download PDF

Info

Publication number
JP2013539882A
JP2013539882A JP2013533280A JP2013533280A JP2013539882A JP 2013539882 A JP2013539882 A JP 2013539882A JP 2013533280 A JP2013533280 A JP 2013533280A JP 2013533280 A JP2013533280 A JP 2013533280A JP 2013539882 A JP2013539882 A JP 2013539882A
Authority
JP
Japan
Prior art keywords
data
storage element
instruction
condition
selection instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013533280A
Other languages
English (en)
Other versions
JP5732139B2 (ja
Inventor
ジョン クラスク、サイモン
ロイ グリセンスウェイト、リチャード
ジョン スティーブンズ、ナイジェル
Original Assignee
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2013539882A publication Critical patent/JP2013539882A/ja
Application granted granted Critical
Publication of JP5732139B2 publication Critical patent/JP5732139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/265Microinstruction selection based on results of processing by address selection on input of storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

レジスタ等の1つのデータ要素に対して演算を行い、次いで、そのレジスタまたはいかなる演算も行われなかったさらなるレジスタのいずれかを条件付きで選択する、データ処理装置、方法、およびコンピュータプログラム。この装置は、少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、該少なくとも1つの条件付き選択命令は、一次ソースレジスタ、二次ソースレジスタ、宛先レジスタ、条件、および二次ソースレジスタからのデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成されるデータプロセッサと、を備え、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソースレジスタからのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、該結果として生じるデータ要素を宛先レジスタに記憶し、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、一次レジスタ内のデータ要素から結果として生じるデータ要素を形成し、該結果として生じるデータ要素を宛先レジスタに記憶する。

Description

本発明は、データ処理装置の分野に関し、具体的には、条件に基づいてソースデータ要素を選択するための条件付き選択命令の分野に関する。
条件付き命令は、例えば英国ケンブリッジのARM(登録商標)によって、処理の際に使用されており、これらの命令は、予め定義された条件を満たしていることにだけ応じて、処理演算を行うようにプロセッサに命令する。満たすことが必要とされ得る条件の例は、より小さい、より大きい、等しい、負、キャリーイン、ゼロ等のようなものである。
特に少なくとも部分的に相互に並行して命令を行うハイエンド処理装置における、これらの条件付き命令の不利な点は、入力の場合のように条件付き命令の結果を必要とする命令ストリームの中の条件付き命令に続く命令が、その条件を満たしているかどうかに依存して、元の値または更新された結果値を必要とし得ることである。条件付き命令がまだパイプライン内にある間に、その後の命令がパイプラインに進入してしまったときに、元の値または結果値のいずれかを、その後の命令がパイプラインの中で利用できるようにする必要があり得る。これは、速度および電力に関して非常に高いオーバーヘッドを有する、元の値のさらなる読み出しを必要とし得る。
条件を満たしていることに基づいて、2つのソースレジスタの選択から宛先レジスタに書き込むべき結果をプロセッサに選択させる、選択命令も知られている。
性能を維持したままで、条件付き命令の機能の大半を保つことが可能であるようにすることが望ましい。
第1の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、データ要素を記憶するための複数の記憶要素を備える、データストアと、少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、を備え、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
本発明は、条件付き選択命令が、所定の条件の結果に応答して、記憶要素に記憶された特定の値を選択する効率的な方法であることを認識している。所定の結果は、条件を満たしていることであり得るか、または条件を満たしていないことであり得る。また、条件付き選択命令が、記憶要素の1つの値に対して演算を行わせる場合、これは、2つの結果の記憶要素のうちの1つにアクセスすることが簡単に選択されるように、性能の欠点の多くを伴わずに、従来の条件付き命令の特性の多くを伴う命令を提供することができることも認識している。
いくつかの実施形態において、命令はさらに、宛先記憶要素を指定し、データプロセッサは、少なくとも1つの条件選択命令に対応して、結果として生じるデータ要素を宛先記憶要素に記憶する。
命令は、結果として生じるデータ要素が記憶されるべき宛先記憶要素を指定し得、または単純に、所定の記憶場所に結果として生じるデータ要素を上書きするように構成され得る。
いくつかの実施形態において、宛先記憶要素は、ソース記憶要素の1つであり得るが、他の実施形態において、宛先記憶要素は、異なる記憶要素であり得る。
いくつかの実施形態において、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、二次ソース記憶要素内のデータ要素に対して演算を行い、一次記憶要素内のデータ要素からの結果として生じるデータ要素を形成する。
条件が所定の結果を有しない場合、結果として生じるデータ要素のソースとして選択されるのは一次記憶要素である。いくつかの実施形態では、選択されるのは一次記憶要素であるが、条件付き選択命令によって指定される演算は、それでも、二次ソース記憶要素内のデータ要素に対して行われる。この場合、この演算の結果は必要とされないが、命令の実行時間の大部分を費やすのは、一般的に、条件の結果を判断しているときであるので、いずれにしてもこの演算を行うことは有利であり得、したがって、条件が所定の結果を有するかどうかが分かる前に二次記憶要素において演算が行われる場合、条件の結果が判断されると、どちらの記憶要素も選択に対して準備のできた状態になっており、手順の待ち時間が低減される。
いくつかの実施形態において、少なくとも1つの条件付き選択命令は、インクリメント条件付き選択命令を備え、演算は、二次ソース記憶要素からのデータ要素をインクリメントすることを含む。
条件付き選択命令は、それと関連付けられる異なる演算を有することができるが、いくつかの実施形態では、インクリメント条件付き選択命令を備え、演算は、選択されたデータ要素をインクリメントすることを含む。
他の実施形態において、条件付き選択命令は、反転条件付き選択命令を備え、演算は、選択されたデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む。
いくつかの実施形態では、これらの2つの演算を組み合わせて、反転インクリメント条件付き選択命令を形成することができる。論理的にビット単位の様式で値を反転させ、次いでインクリメントすることで、そのデータ要素の算術否定を生成する。
いくつかの実施形態において、記憶要素データストアは、ゼロ値にマップする記憶要素名を含む。
反転およびインクリメント、ならびにゼロ値にマップする記憶要素の可能性等の、条件付き選択命令と関連付けられる演算を有する条件付き選択命令の提供は、多数のレガシー条件付き命令によって行われる演算にマップする多数の異なる演算を行う能力を伴う処理装置を提供する。これらの実施例は、後で提供する。このようにして、レガシーシステムで提供された多数の条件付き命令は、この条件付き選択機能を適切な方法で使用して模倣することができる。この条件付き選択機能は、性能の欠点の多くを伴わずに、レガシー条件付き命令の機能を提供する効率的かつ好都合な方法を提供する。
当業者には、記憶要素が多数のものであり得ること、例えば、いくつかの実施形態ではレジスタであり得る一方で、他の実施形態ではメモリロケーションであり得ることが明らかになるであろう。
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、一次記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備え、インクリメント制御信号が設定されることに応じて、キャリーイン信号が1に設定され、加算器は、少なくとも1つのソース記憶要素からの受け取った値をインクリメントする。
本発明の実施形態のさらなる利点は、これらの機能を実装するために必要とされる回路が、多くの場合において、プロセッサの中に存在し得、かつ必要とされる機能を提供するために再使用することができる、簡単な処理回路であるということである。例えば、インクリメント演算は、加算器およびキャリーイン信号、キャリーイン信号を設定するインクリメント制御信号、ならびに条件の結果であるマルチプレクサのための選択機能を使用して提供することができる。
いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、反転制御信号を出力するように構成され、復号化された条件付き選択命令を処理するように構成されるプロセッサは、反転制御信号が設定されることに応じて、反転回路を通過した二次ソース記憶要素から値を受け取り、かつ設定されない反転制御信号に応じて、反転回路を通過しなかった二次ソース記憶要素から値を受け取るように構成される、加算器と、一次ソース記憶要素から、および加算器の出力から信号を受け取るように構成される、マルチプレクサであって、マルチプレクサのための選択信号は、条件を含み、よって、所定の結果を有する条件は、マルチプレクサに加算器の出力を選択させる、マルチプレクサと、を備える。
反転機能は、反転回路を使用して提供することができ、反転機能が加算器と連結された場合に、必要に応じて反転およびインクリメントを組み合わせることができる。
例えば、いくつかの実施形態において、命令復号器は、条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、インクリメント信号が設定されることに応じて、キャリーイン信号が1に設定され、設定される反転信号に応じて、加算器は、二次ソース記憶要素からの受け取った反転値をインクリメントする。
反転およびインクリメント手段に対する能力を提供することは、2の補数値の形態で算術否定値を提供することができる。
いくつかの実施形態において、一次ソース記憶要素および二次ソース記憶要素は、同じ記憶要素である。
異なるソース記憶要素が使用される可能性があるが、いくつかの実施形態において、それらは同じ記憶要素である。この場合、条件が所定の結果を有する場合、結果の要素は、演算が行われた記憶要素の中の値から形成される一方で、条件がこの所定の結果を有しない場合は、記憶されたデータ要素を使用して、結果として生じるデータ要素を形成する。これは、条件が所定の結果を有する場合、および条件が所定の結果を有しない場合に、条件付き選択を行い、次いで、演算を行うようになるという利点があり得る。これを実装するための1つの方法は、記憶要素からの2つの経路を形成することである、1つの経路は、演算を実行する機能回路を通過し、もう1つの経路は、記憶要素から直接的に進み、結果として生じる要素を伝送するために選択される経路は、条件の結果に依存する。
いくつかの実施形態において、条件の結果は、少なくとも1つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される。
条件が所定の結果を有するかどうかは、少なくとも1つの以前のデータ処理演算に応じて、コンピュータのステータス記憶要素に設定される、算術論理フラグから判断することができる。これらの以前のデータ処理演算は、条件付き選択命令の前に行われる少なくとも1つの命令に応じて行われ、これらの命令は、条件の結果、すなわち、満たすかどうかを判断し、それに従ってフラグを設定する。したがって、条件が特定の結果を有するかどうかを判断するために、特定の条件コードをフラグと比較し、一致した場合は、条件が所定の結果を有するものと判断し、一致しなかった場合は、所定の結果を有しないものと判断する。明らかに、このシステムは、一致しないことが所定の結果であり、一致することが所定の結果ではないように反転させることができる。
以前のデータ処理演算は、多数のものであり得るが、いくつかの実施形態では、ソース記憶要素のうちの少なくとも1つの中のデータ要素を別の値と比較することを含む。
条件コードは、特定の値よりも小さいソース記憶要素Bの値である等のものであり得る。この条件の結果を判断するために、記憶要素Bに記憶された値を、記憶要素Bの値からの特定の値の減算を行うことによってより小さくなければならない特定の値と比較し、これに応じて、算術論理フラグが設定される。この演算は、命令ストリームの中の初期の命令に応じて行われる。したがって、負のフラグが設定された場合は、条件を満たしている。
他の実施形態において、少なくとも1つの以前のデータ処理演算は、一次ソース記憶要素の中のデータ要素を、二次ソース要素の中のデータ要素と比較することを含む。
2つのソース記憶要素の値が相互に特定の関係を有する場合、これらを比較し、特定の演算だけを行うことが適切であり得る。これが条件である場合、ここでも、以前の処理演算は、これらの値を比較し、フラグを設定し、条件を満たしていること、または条件を満たしていないことをステータスフラグから判断することができるものであり得る。
条件は、多数のものであり得、例えば、等しくない、等しい、より小さい、より大きいか等しい、より小さいか等しい、ゼロ、または負であり得る。これらの条件の全ては、条件フラグから判断することができる。
算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも1つを含む。したがって、値間の比較は、しばしば、減算であり得、負の結果は、一方の値がもう一方の値よりも大きかったことを示し、同様に、ゼロの結果は、値が等しかったことを示す、等である。
いくつかの実施形態において、条件の所定の結果は、条件を満たしていることを含む。
前述のように、条件の所定の結果は、条件を満たしていることであり得、代替として、条件を満たしていないことであり得る。
いくつかの実施形態において、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、条件付き選択命令に応じて、二次ソース記憶要素内のデータ要素に対して演算を行うための回路の少なくとも一部は、算術回路を備える。
前述のように、条件付き選択機能を行い得るインクリメント等の演算は、算術回路を使用して行われてもよい。この算術回路が、加算演算および減算演算を行うためのプロセッサの中に既に存在する場合は、条件付き選択命令を行うためのこの回路を再使用するのに好都合であり得る。そのような場合、この命令の機能は、数多くの余分な回路を追加することなく提供することができ、それによって、回路領域を効率的に利用する。
いくつかの実施形態において、条件付き選択命令は、ソースおよび宛先記憶要素の幅を示す、指示子を備える。
本発明の実施形態は、異なる幅の記憶要素を使用し得る装置とともに使用するのに好適である。したがって、例えば、ハードウェアは、64ビット長であるその記憶要素としてレジスタを備え得るが、時折、32ビット長の記憶要素を使用するコードを実行し得る。そのような場合、指示子は、アクセスされるレジスタの関連する部分に設定することができる。
本発明の第2の態様は、データ処理装置の方法を提供し、該方法は、一次ソース記憶要素、二次ソース記憶要素、宛先記憶要素、条件、および二次ソース記憶要素内のデータ要素に対して行われる演算を指定する、少なくとも1つの条件付き選択命令を受け取ることと、少なくとも1つの受け取った条件付き選択命令を復号化することと、条件が所定の結果を有するかどうかを判断することと、条件が所定の結果を有する場合に、二次ソース記憶要素を選択し、選択された記憶要素からのデータ要素に対して演算を行って、結果として生じるデータ要素を形成することと、条件が所定の結果を有しない場合に、一次記憶要素内のデータ要素を選択して、結果として生じるデータ要素を形成することと、を含む。
本発明の第3の態様は、データプロセッサ上で実行したときに、データプロセッサを制御して、本発明の第2の態様に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品を提供する。
本発明の第4の態様は、データを処理するための手段を提供し、該手段は、データ要素を記憶要素に記憶するための、記憶要素記憶手段と、少なくとも1つの条件付き選択命令を復号化するための、命令復号化手段であって、少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素からのデータ要素に対して行われるべき演算を指定する、命令復号化手段と、命令復号化手段によって制御されるデータ処理演算を行うための処理手段と、を備え、処理手段は、復号化された少なくとも1つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、処理手段は、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
本発明の第5の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、該仮想マシンは、本発明の第1の態様のデータ処理装置に記載の命令実行環境を提供する。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。
本発明の実施形態による、データ処理装置を示す図である。 本発明の実施形態による、条件付き選択命令を行うための処理回路を示す図である。 本発明の実施形態による、条件付き選択命令を行うために再使用されているデータ処理装置内の算術回路を示す図である。 本発明の実施形態による、条件付き選択命令および例示的なステータスフラグを示す図である。 レガシー条件命令を模倣する機能を行うために、どのように条件付き選択命令を使用することができるかという例を示す図である。 本発明の実施形態による方法を例示するフロー図である。 条件付き選択命令の例示的な符号化を示す図である。 本手法の仮想マシン実装を概略的に示す図である。
図1は、本発明の実施形態による、データ処理装置10を示す。このデータ処理装置10は、処理すべき命令を記憶するためのデータストア20を有する。該データ処理装置は、命令ストア20から命令をフェッチするためのフェッチユニット32と、これらの命令を復号化するための命令復号器34と、復号化された命令を処理するための処理ユニット36とを含む、命令を処理するためのパイプライン30を有する。
また、複数のレジスタを備える、レジスタバンク40もある。処理ユニット36は、これらのレジスタへのデータの書き込みおよび読み出しを行う。レジスタバンクは、プロセッサのステータスフラグを含むプログラムステータスレジスタCPSRを含む。これらのステータスフラグは、処理演算に応じて設定され、プロセッサが使用して、プロセッサの特定の条件または状態を判断することができる。
また、この実施形態では、0にマップするレジスタX31もある。したがって、このレジスタが命令によって選択されたときに、常時0値が与えられる。
復号器34が復号化するように構成される1つの命令は、条件付き選択命令である。この復号化された命令に応じて、プロセッサは、命令によって指定されるソースレジスタのうちの1つに対して、この命令によって指定される演算を行い、次いで、結果として生じる要素が書き込まれる宛先レジスタとして、このソースレジスタまたは別のレジスタのいずれかを選択する。
図2は、そのような条件付き選択命令に応じて、これらの処理演算を行うために使用することができる、処理ユニット36内の処理回路の実施例を示す。
本発明の実施形態において、条件付き選択命令は、レジスタのうちの1つの値に対して、2つの演算のうちの1つを行うことができる。それは、インクリメント制御信号が設定されることに応じて、インクリメントすることができ、または反転制御フラグが設定されることに応じて記憶された値の中のビット毎の論理ビット単位の反転を行うことによって、値を反転させることができる。条件付き選択命令は、条件に依存し、したがって、条件を満たしているかどうかが判断され、この判断に基づいて、このレジスタの一方またはもう一方が出力される。
したがって、図2の実施形態では、2つのソースレジスタRおよびRがある。この実施形態において、ソースレジスタは、どちらも32ビット長であるが、代替の実施形態において、それらは、64ビット長であり得る。他の実施形態において、ソースレジスタは、64ビット長であり得るが、それらは、条件付き選択命令で選択ビットが設定されることに応じて、32ビットレジスタとして扱われ、下位または上位32ビットだけがそこに書き込まれ、またはそこから読み出される。
一方のレジスタRは、条件付き選択命令が指定し得る任意の演算が行われる、二次レジスタである。したがって、この実施形態において、条件付き選択命令は、反転演算、インクリメント演算、もしくは両方を指定し得、またはどちらも指定し得ない。どちらも指定されない場合、条件付き選択機能は、マルチプレクサ50を使用して、単にレジスタRまたはRのいずれかを選択する。
レジスタRおよびRは、異なるレジスタとして示されているが、それらは、本発明の実施形態において、マルチプレクサに進むレジスタからの、および機能回路を通過する別のレジスタからの直接的なデータ経路を伴う、同じレジスタであり得ることに留意されたい。
マルチプレクサ50の選択信号は、評価ユニット60を使用して評価される命令と関連付けられる条件から判断される。この実施形態において、評価ユニット60は、この命令と関連付けられる条件コードを、処理装置のCPSRレジスタに記憶された算術論理フラグと比較する。条件コードとフラグとの間に一致がある場合、条件を満たしているものと判断され、レジスタRが選択される。いかなる一致もなかった場合、レジスタRが選択される。
したがって、反転信号もインクリメント信号も設定されない基本的な場合において、命令は、条件付き選択機能命令として作用し、条件を満たしていること、または条件を満たしていないことに基づいて、RまたはRのいずれかが選択される。しかしながら、それが反転条件付き選択命令である場合、反転信号が設定され、XORゲート70は、レジスタRの中のビットのそれぞれをビット単位に反転させるように作用し、反転値が、加算器75を介して、マルチプレクサ50に出力される。インクリメント信号が設定されない場合、それは単に、選択機能がレジスタRを選択する場合に宛先レジスタRに出力される、ビット単位の反転値である。選択機能がレジスタRを選択する場合は、ビット単位の反転が行われるが、反転の結果は、宛先レジスタに出力されるように選択されない。
また、この処理回路に入力されるインクリメント信号もあり、これは、キャリーイン信号として加算器75に到達し、したがって、インクリメント信号が設定されたときに、加算器がキャリーインを受け取る。したがって、反転が設定されていない場合にレジスタRに記憶された値であり、反転信号が設定されている場合にレジスタRに記憶された反転値である、インクリメント信号が設定されたときにXORゲート70から出力される値は、条件が所定の結果を有する場合に、インクリメントされ、マルチプレクサ50を使用して選択される。反転信号およびインクリメント信号が設定された場合、値出力は、レジスタRに記憶された値の否定された2の補数値である。インクリメント信号だけが設定された場合、それは単に、1だけインクリメントされたレジスタRに記憶された値である。
レジスタRに記憶された値に対して行われる演算は、マルチプレクサ50を使用した選択の前に行われることに留意されたい。したがって、レジスタRが選択されなかった場合、これらの演算は、いかなる目的でも行われない。しかしながら、条件コードの評価は、一般的に、かなりの時間がかかり、したがって、行われる演算の終了に向かってだけこの結果が必要とされる場合に有利になり得る。
図3は、図2に示されるものに類似しているが、一般的に処理装置の算術回路内の加算器回路75を再使用している、この処理回路の代替の実施形態を示す。したがって、図2と比較したときに、処理回路が加算器75に入力されるレジスタAをマスクするために条件付き選択命令を行っているときに使用される、追加のANDゲート80がある。したがって、条件付き選択命令が実行されているときには、レジスタAに記憶された値が加算器に到達しないように、0がANDゲートに入力される。一般処理演算のための算術回路の一部として使用されるときに、ANDゲートは、レジスタAをマスクせず、加算器75は、レジスタAおよびB、またはレジスタBの反転値を伴うレジスタAを加えるために使用され得る。
条件付き選択機能の場合、加算器75は、レジスタBに記憶された値をインクリメントするために、またはレジスタBに記憶された反転値をインクリメントするために使用され、したがって、一般算術命令を行うために存在する加算器に対する他の入力(レジスタA)は、ANDゲート80を使用してマスクされる。他の点において、この回路は、図2の回路と同様である。
XOR論理は、ビット単位の排他的ORに基づいて中間結果を作成することによって、反転機能を提供し、レジスタB内の各ビットは、反転信号を有する。この回路は、図3に示されるように、プロセッサの主算術ユニットと統合され得るか、または図2に示されるように、別個の回路として構築され得ることを理解されたい。
図4は、異なる種類の条件付き選択命令およびそれらが出力した値の例を示す。したがって、いかなる反転信号もインクリメント信号もない条件付き選択命令に応じて、条件が算術論理フラグに一致するかどうかに依存して、一次レジスタRに記憶された値または二次レジスタRに記憶された値が、宛先レジスタに出力される。
インクリメント信号が設定される条件付き選択命令に応じて、レジスタRから受け取った値がインクリメントされ、再度、条件およびフラグに応じて、レジスタRに記憶された値またはインクリメントされたレジスタRに記憶された値のいずれかが、宛先レジスタに出力される。
反転信号が設定された場合、レジスタRからの値は、ビット単位で反転され、再度、条件コードがフラグに一致するかどうかに応じて、反転させたRの値、またはRに記憶された値のいずれかが、宛先レジスタに書き込まれる。
反転およびインクリメントビットが設定された場合、レジスタRからの値は、反転およびインクリメントの双方が行われる。これは、元の値の算術否定バージョンである、Rに記憶された値の2つの補数値を生成する。再度、条件コードがフラグに一致するかどうかに応じて、レジスタRに記憶された値またはレジスタRからの反転およびインクリメントされた値のいずれかが、宛先レジスタに書き込まれる。
条件コードに関して、これは、この実施形態において、レジスタRを選択することとは対照的に、レジスタRを選択するために必要とされるフラグのパターンを示す、4ビットのコードである。フラグは、4ビットの値としてCPSRレジスタに記憶され、N、Z、CおよびBを備える。Nは、負の結果を示し、Zは、0の結果を示し、Cは、キャリーアウトを示し、Bは、符号付き算術オーバフローを示す。これらのフラグは、以前のデータ処理演算によって設定される。したがって、条件付き選択命令が実行される前に、条件付き選択命令の条件を満たしているかどうかを判断するために必要とされる、比較を行う演算が実行される。これらの演算は、それらの比較の結果としてフラグを設定する、比較命令に応じて行われ得る。条件を満たしているかどうかを判断するために、条件を満たしていることを示す特定のフラグ値に一致する条件コードを、条件選択命令内で符号化することができ、フラグに対するこのコードの単純な比較が、条件を満たしているかどうかを判断することになる。
これらの以前の処理命令は、おそらくはソースレジスタの1つの中の値をソースレジスタの中の別の値と比較するための、またはおそらくはソースレジスタ値を設定値と比較するための、比較命令という形態を取り得る。一般的に、比較命令は、減算演算を行い、この結果は、算術フラグを設定する。したがって、命令および条件コードがそれである場合、Bがインクリメントされ、AがBより小さい場合、比較は、BからAを減算することができ、結果が負である場合、Nフラグが設定されるので、条件コードは、Nフラグが設定されることに一致するパターンを有しなければならない。この比較命令は、条件選択命令に先立って行うことができ、さらにはいくつかの命令に先立って行うことができるが、ただし、算術論理フラグを設定するいかなる中間命令もないことを条件とする。
前述のように、この条件付き選択命令の利点の1つは、欠点のいくつかを伴わずに以前の条件付き命令の機能を提供することができることである。図5は、条件付き選択命令が相当する機能を提供することができる、例示的な条件付き命令を示す。
したがって、第1の実施例において、条件付き選択命令は、1と0との間の選択を提供することができる。これは、0にマップするレジスタを使用する。この図において、これは、簡潔にするためR0として示されるが、図1で示した実施形態では、値0にマップするように設定されたレジスタ31であった。この場合、0にマップするレジスタは、双方のソースレジスタとして使用され、インクリメント機能は、条件に依存して、したがって、0または1のいずれかを出力できる条件に依存して、0値を選択することができるように、または0値のインクリメントを選択することができるように使用される。
条件付き選択命令はまた、0値と全て1のマスクとの間で選択するために使用することもできる。この場合、反転演算が使用され、再度、0にマップするレジスタが2つのソースレジスタとして使用される。この場合、このレジスタは、宛先レジスタとして選択されるか、またはこのレジスタの反転バージョンが選択される。このレジスタの反転バージョンは、1のマスクであり、したがって、条件を満たすかどうかに応じて、0値レジスタまたは1のマスクが宛先レジスタに提供される。
条件付き選択命令は、レジスタに記憶された絶対値を出力するために使用することもできる。この機能を提供するために、この実施例においてR3として与えられるこのレジスタの中の値を0値と比較することによって、条件フラグが最初に設定される。選択されたインクリメントおよび反転機能を伴う条件付き選択命令は、次いで、ソースレジスタおよび宛先レジスタの双方として、また、条件が「より小さい」ものとして、レジスタR3とともに使用される。したがって、R3が0より小さい場合、換言すれば、それが負の値である場合、R3に記憶された値は、インクリメントおよび反転され、この値の2の補数値、換言すれば、負の値を提供する。したがって、R3に記憶された値が負である場合は否定されるが、これは、R3に記憶された値の正のバージョンが出力されることを意味する。しかしながら、R3に記憶された値が正である場合は、条件「より小さい」を満たさず、同じくR3である一次レジスタに記憶された値が出力される。したがって、この特定の条件付き選択命令を使用することによって、絶対値命令が提供される。
次の実施例は、ある値に対する条件付きインクリメントを提供し、この場合、条件付き選択命令は、選択されたインクリメント演算を有する。この場合、一次レジスタは、R3として与えられ、二次レジスタは、宛先レジスタとして与えられる。条件は、R3に記憶された値が、R4に記憶されたインクリメントされた値に等しいことであり、したがって、当てはまる場合には、R3に記憶された値が出力される。当てはまらない場合には、次いで、R4に記憶された値がインクリメントされ、R4に記憶される。
以下の命令は、命令に関連する条件が、どのように、ソースレジスタに記憶された値に依存し得るのではなく、別のレジスタに記憶された値に関連し得るのかを示す。この場合、Bに記憶された値が0に等しい場合、Aに記憶された値をインクリメントしなければならない、という条件付き命令を模倣するために、条件付き選択命令が使用される。条件付き選択命令を使用してこれを行うために、フラグを設定するために使用される初期命令は、レジスタBの値を0と比較することである。次いで実行される条件付き選択命令は、インクリメント演算が行われ、ソースおよび宛先レジスタが同じであり、条件が「等しい」である場合のものである。したがって、レジスタBを0と比較するという比較命令が等しかった場合、この命令は、実質的に減算であるので、Zフラグが設定されていることになる。
命令の条件コードは、フラグ0を設定すべきであることを示す。当てはまる場合には、インクリメントされた二次レジスタの値がレジスタAに記憶される。換言すれば、Aがインクリメントされる。0のフラグが設定されなかった場合、換言すれば、レジスタBに記憶された値が0に等しくなかった場合、同じくレジスタAである一次レジスタの値が出力される。この場合、一次レジスタに対していかなる演算も行われず、したがって、その値は、そのインクリメントされた値以外の出力である。
図5の最後の実施例は、どのようにして、Bが0よりも大きい場合に、Aを1に設定することができ、そうでなければAを0に設定することを、条件付き選択命令を使用して行うことができるのかを示す。この場合、フラグを設定するために使用される比較命令は、レジスタBを0と比較することである。次いで実行される条件付き選択命令は、設定されたインクリメント信号を有し、また、0にマップするレジスタおよび宛先レジスタであり、この場合はレジスタAである、ソースレジスタを有する。したがって、レジスタBと0との比較命令が、レジスタBが0よりも大きいことを示した場合、二次レジスタが選択され、インクリメント値がこの0値に設定されたときには、入力が1だけインクリメントされており、1がレジスタAに記憶される。条件を満たさなかった場合、よって、Bが0よりも大きくなかった場合、レジスタ0である一次レジスタが選択され、0がレジスタAに記憶される。
したがって、上記の実施例で分かるように、条件付き選択命令は、条件に基づいて実行される数多くの異なる機能を提供するために使用することができる。さらに、以前の図面から明らかなように、条件付き選択命令は、単純な回路で実装することができる。
図6は、本発明の実施形態による例示的な条件付き選択機能を示す。この実施例では、命令が行われているのが32ビットレジスタなのか、または64ビットレジスタなのかを示す、選択指示子SFがある。これは、32ビット値または64ビットのいずれかを処理することができるプロセッサで命令が使用されることを可能にする。他の実施形態において、このフラグは、命令が使用されるプロセッサの性質に応じて、異なるサイズ決定された値の間で選択するために使用することができることに留意されたい。
図2および図3のXOR論理を制御し、二次レジスタの値が反転されたかどうかを判断する、単一のビット反転フィールドがある。次いで、条件付き選択命令としてこの命令を一意的に識別する9ビットフィールドである、演算コードがある。次いで、この命令のための一次ソースレジスタとなるレジスタを識別する、4ビットの二次ソースレジスタ指示子Rがある。
次いで、選択された条件を指定し、一次レジスタまたは二次レジスタのいずれかを選択するために、どのようなフラグのパターンを必要とするのかを示す、4ビットの条件フィールドがある。次いで、使用されない1つのビットがあり、次いで、以前の図面の加算器のキャリーインを制御し、二次レジスタに記憶された値がインクリメントされたかどうかを示す、同じく単一のビットフィールドである、インクリメント指示子がある。次いで、一次ソースレジスタを識別する、4ビットの一次ソースレジスタ指示子Rがあり、次いで、宛先レジスタ指示子Rがある。この点に関して、一次および二次ソースレジスタは、「一次」および「二次」と称されるが、これは、記述されたときに命令の中にそれらが現れる順序であり、いかなるそれ以上の意味も持たない。
これは単に、例示的な命令の符号化であり、レジスタ演算コードおよび条件フィールドの幅は、暗示的なものに過ぎず、命令レジスタの数および処理装置がサポートする試験条件に依存することに留意されたい。さらに、この実施例において、レジスタは、ソースおよび宛先要素を記憶するために使用されるが、他の実施形態では、ソースおよび宛先記憶要素は、メモリの中の場所であり得、その場合、データ要素指示子がメモリロケーションのアドレスとなる。
図7は、この条件付き選択命令を実行する方法で行われるステップを示す、フロー図を示す。したがって、最初に、復号化された条件付き選択命令を受け取り、この命令が、2つのレジスタ、すなわち、レジスタ1およびレジスタ2を指定する。
中間値は、レジスタ2から割り当てられる。反転が設定されたかどうかが判断される。設定された場合は、中間値が論理的に反転される。インクリメントが設定されたかどうかが判断される。インクリメントが設定された場合は、中間値がインクリメントされる。次いで、条件付き命令によって指定される条件を満たしているかどうかに依存して、宛先レジスタへの出力のための値が選択される。したがって、中間値またはレジスタ1からの値が、宛先レジスタに出力される。いくつかの実施形態において、この値は、条件を満たしている場合は、宛先レジスタに出力される中間値である一方で、条件を満たしていない場合は、レジスタ1からの値である。しかしながら、他の実施形態において、この値は、条件を満たすことに応じて出力されるレジスタ1の値であり得、また、条件を満たさないことに応じて、中間値であり得る。
出力が中間値であった場合、この値は、レジスタ2からの元の値であり得、条件付き選択命令が反転演算および/またはインクリメント演算を指定したかどうかに依存して、1だけインクリメントされた元の値、論理的に反転された元の値、または論理的に反転され、次いで1だけインクリメントされた元の値であり得る。
図8は、使用され得る、仮想マシン実装を示す。上で説明した実施形態は、関心の技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を動作させるホストプロセッサ530上で動作する。典型的に、大型で強力なプロセッサは、相当な速度で実行する仮想マシン実装を提供することを必要とするが、そのような手法は、互換性または再使用の理由に対して、別のプロセッサに固有のコードを実行することが所望されるとき等に、特定の環境において正当化され得る。仮想マシンプログラム510は、アプリケーションプログラムインターフェースをアプリケーションプログラム500に提供するが、該インターフェースは、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じである。したがって、上で説明したメモリアクセスの制御を含む、プログラム命令は、それらの仮想マシンハードウェアとの相互作用をモデル化するために、仮想マシンプログラム510を使用してアプリケーション500内から実行され得る。
本発明の種々のさらなる態様および特徴は、添付の請求の範囲で定義される。上で説明した本明細書の実施形態には、本発明の趣旨を逸脱することなく、種々の修正を行うことができる。
条件を満たしていることに基づいて、2つのソースレジスタの選択から宛先レジスタに書き込むべき結果をプロセッサに選択させる、選択命令も知られている。
米国特許公報第2006/0236078号は、2つのレジスタのコンテンツが共に追加されてもよく、同一条件を満たす場合には、結果レジスタにその結果を配置し、同一条件を満たさない場合には、他のレジスタのコンテンツを結果レジスタに配置する、条件選択命令を開示している。
第1の態様から概観すると、本発明は、データ処理装置を提供し、該データ処理装置は、データ要素を記憶するための複数の記憶要素を備える、データストアと、少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、を備え、演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか1つを含み、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有する条件に対応して、二次ソース記憶要素からのデータ要素に対して演算を行い、結果として生じるデータ要素を形成し、データプロセッサは、復号化された少なくとも1つの条件付き選択命令および所定の結果を有しない条件に対応して、一次記憶要素内のデータ要素から結果として生じるデータ要素を形成する。
いくつかの実施形態において、記憶要素データストアは、ゼロ値にマップする記憶要素を含む。
本発明の第2の態様は、データ処理装置の方法を提供し、該方法は、一次ソース記憶要素、二次ソース記憶要素、条件、および二次ソース記憶要素内のデータ要素に対して行われる演算を指定する、少なくとも1つの条件付き選択命令を受け取ることとであって演算は、二次ソース記憶要素からのデータ要素をインクリメントすること、二次ソース記憶要素からのデータ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成すること、または、二次ソース記憶要素からのデータ要素を論理的に反転させてインクリメントし、そのデータ要素の算術否定を生成することのうちのいずれか1つを含む、該受け取ることと、少なくとも1つの受け取った条件付き選択命令を復号化することと、条件が所定の結果を有するかどうかを判断することと、条件が所定の結果を有する場合に、二次ソース記憶要素を選択し、選択された記憶要素からのデータ要素に対して演算を行って、結果として生じるデータ要素を形成することと、条件が所定の結果を有しない場合に、一次記憶要素内のデータ要素を選択して、結果として生じるデータ要素を形成することと、を含む。
本発明の第の態様は、データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンを提供し、該仮想マシンは、本発明の第1の態様のデータ処理装置に記載の命令実行環境を提供する。
以下、単なる例として、添付図面に示されているその実施形態を参照して、本発明をさらに説明する。

Claims (35)

  1. データ要素を記憶するための複数の記憶要素を備える、データストアと、
    少なくとも1つの条件付き選択命令を復号化するように構成される、命令復号器であって、前記少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、命令復号器と、
    前記命令復号器によって制御されるデータ処理演算を行うように構成される、データプロセッサと、
    を備え、
    前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
    前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成する、
    データ処理装置。
  2. 前記命令はさらに、宛先記憶要素を指定し、前記データプロセッサは、前記少なくとも1つの条件付き選択命令に対応して、前記結果として生じるデータ要素を前記宛先記憶要素に記憶する、請求項1に記載のデータ処理装置。
  3. 前記宛先記憶要素は、前記一次ソース記憶要素および二次ソース記憶要素のうちの1つを備える、請求項2に記載のデータ処理装置。
  4. 前記データプロセッサは、前記復号化された少なくとも1つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行い、前記一次記憶要素内の前記データ要素からの前記結果として生じるデータ要素を形成する、請求項1に記載のデータ処理装置。
  5. 前記少なくとも1つの条件付き選択命令は、インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすることを含む、前記いずれかの請求項に記載のデータ処理装置。
  6. 前記少なくとも1つの条件付き選択命令は、反転条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む、前記いずれかの請求項に記載のデータ処理装置。
  7. 前記少なくとも1つの条件付き選択命令は、反転インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させることと、それをインクリメントして前記データ要素の算術否定を生成することとを含む、前記いずれかの請求項に記載のデータ処理装置。
  8. 前記記憶要素データストアは、ゼロ値にマップする記憶要素名を含む、前記いずれかの請求項に記載のデータ処理装置。
  9. 前記記憶要素は、レジスタを備え、前記記憶要素データストアは、レジスタバンクを備える、前記いずれかの請求項に記載のデータ処理装置。
  10. 前記記憶要素は、メモリロケーションを備え、前記記憶要素データストアは、メモリを備える、請求項1〜8のいずれか1項に記載のデータ処理装置。
  11. 前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号を出力するように構成され、
    前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
    前記二次記憶要素およびキャリーイン信号から値を受け取るように構成される、加算器と、
    前記一次記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
    を備え、
    前記インクリメント制御信号が設定されることに応じて、前記キャリーイン信号が1に設定され、前記加算器は、前記少なくとも1つのソース記憶要素からの受け取った値をインクリメントする、
    前記いずれかの請求項に記載のデータ処理装置。
  12. 前記命令復号器は、前記条件付き選択命令に応じて、反転制御信号を出力するように構成され、
    前記復号化された条件付き選択命令を処理するように構成される前記プロセッサは、
    前記反転制御信号が設定されることに応じて、反転回路を通過した前記二次ソース記憶要素から値を受け取り、かつ前記反転信号が設定されないことに応じて、前記反転回路を通過しなかった前記二次ソース記憶要素から値を受け取るように構成される、加算器と、
    前記一次ソース記憶要素から、および前記加算器の出力から信号を受け取るように構成される、マルチプレクサであって、前記マルチプレクサのための選択信号は、前記条件を含み、よって、前記所定の結果を有する前記条件は、前記マルチプレクサに前記加算器の前記出力を選択させる、マルチプレクサと、
    を備える、
    前記いずれかの請求項に記載のデータ処理装置。
  13. 前記命令復号器は、前記条件付き選択命令に応じて、インクリメント制御信号および反転制御信号を出力するように構成され、
    前記インクリメント信号が設定されることに応じて、前記キャリーイン信号が1に設定され、前記反転信号が設定されることに応じて、前記加算器は、前記二次ソース記憶要素からの前記受け取った反転値をインクリメントする、
    請求項11に記載のデータ処理装置。
  14. 前記一次ソース記憶要素および前記二次ソース記憶要素は、同じ記憶要素である、前記いずれかの請求項に記載のデータ処理装置。
  15. 前記条件の結果は、少なくとも1つの以前のデータ処理演算に応じて設定される算術論理フラグから判断される、前記いずれかの請求項に記載のデータ処理装置。
  16. 前記少なくとも1つの以前のデータ処理演算は、前記ソース記憶要素の少なくとも1つの中のデータ要素を、別の値と比較することを含む、請求項15に記載のデータ処理装置。
  17. 前記少なくとも1つの以前のデータ処理演算は、前記一次ソース記憶要素の中のデータ要素を、前記二次ソース要素の中のデータ要素と比較することを含む、請求項16に記載のデータ処理装置。
  18. 前記条件は、等しくない、等しい、より小さい、より大きい、より大きいか等しい、より小さいか等しい、ゼロ、および負のうちの少なくとも1つを含む、請求項15〜17のいずれか1項に記載のデータ処理装置。
  19. 前記算術論理フラグは、結果負のフラグ、結果ゼロのフラグ、キャリーアウトフラグ、および符号付きオーバフローフラグのうちの少なくとも1つを含む、請求項15〜18のいずれか1項に記載のデータ処理装置。
  20. 前記条件の前記所定の結果は、前記条件を満たしていることを含む、前記いずれかの請求項に記載のデータ処理装置。
  21. 前記条件付き選択命令は、前記ソースおよび宛先記憶要素の幅を示す、指示子を備える、前記いずれかの請求項に記載のデータ処理装置。
  22. 前記データ処理装置は、算術命令に応じて加算演算および減算演算を行うための算術回路を備え、前記条件付き選択命令に応じて、前記二次ソース記憶要素内の前記データ要素に対して前記演算を行うための前記回路の少なくとも一部は、前記算術回路を備える、前記いずれかの請求項に記載のデータ処理装置。
  23. 一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素に記憶されたデータ要素に対して行われるべき演算を指定する、少なくとも1つの条件付き選択命令を受け取ることと、
    前記少なくとも1つの受け取った条件付き選択命令を復号化することと、
    前記条件が所定の結果を有するかどうかを判断することと、
    前記条件が前記所定の結果を有する場合に、前記二次ソース記憶要素を選択し、前記選択された記憶要素からのデータ要素に対して前記演算を行って、結果として生じるデータ要素を形成することと、
    前記条件が前記所定の結果を有しない場合に、前記一次記憶要素内の前記データ要素を選択して、前記結果として生じるデータ要素を形成することと、
    を含む、データ処理装置の方法。
  24. 前記結果として生じるデータ要素を、前記少なくとも1つの条件付き選択命令によって指定される宛先記憶要素に記憶する付加的なステップを行うことを含む、請求項23に記載の方法。
  25. 前記条件が前記所定の結果を有するかどうかを判断する前記ステップは、前記演算が前記二次ソース記憶要素からの前記データ要素に対して行われた後に行われる、請求項23または24に記載のデータを処理する方法。
  26. 前記少なくとも1つの条件付き選択命令は、インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素をインクリメントすることを含む、請求項23〜25のいずれか1項に記載のデータを処理する方法。
  27. 前記少なくとも1つの条件付き選択命令は、反転条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させて、論理的にビット単位の反転させた記憶要素値を生成することを含む、請求項23〜26のいずれか1項に記載のデータを処理する方法。
  28. 前記少なくとも1つの条件付き選択命令は、反転インクリメント条件付き選択命令を備え、前記演算は、前記二次ソース記憶要素からの前記データ要素を論理的に反転させることと、それをインクリメントして前記データ要素の算術否定を生成することとを含む、請求項23〜27のいずれか1項に記載のデータを処理する方法。
  29. データプロセッサ上で実行したときに、前記データプロセッサを制御して、請求項23〜28のいずれか1項に記載の方法のステップを行うように演算可能である、条件付き選択命令を備えるコンピュータプログラムを記憶する、コンピュータプログラム製品。
  30. データ要素を記憶要素に記憶するための、記憶要素記憶手段と、
    少なくとも1つの条件付き選択命令を復号化するための、命令復号化手段であって、前記少なくとも1つの条件付き選択命令は、一次ソース記憶要素、二次ソース記憶要素、条件、および前記二次ソース記憶要素からのデータ要素に対して行われるべき演算を指定する、命令復号化手段と、
    前記命令復号化手段によって制御されるデータ処理演算を行うための処理手段と、
    を備え、
    前記処理手段は、前記復号化された少なくとも1つの条件付き選択命令および所定の結果を有する前記条件に対応して、前記二次ソース記憶要素からの前記データ要素に対して前記演算を行い、結果として生じるデータ要素を形成し、
    前記処理手段は、前記復号化された少なくとも1つの条件付き選択命令および前記所定の結果を有しない前記条件に対応して、前記一次記憶要素内の前記データ要素から前記結果として生じるデータ要素を形成する、
    データを処理するための手段。
  31. データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項1〜22のいずれか1項に記載のデータ処理装置による命令実行環境を提供する、仮想マシン。
  32. 実質的に添付図面を参照して前項に説明されるような、データ処理装置。
  33. 実質的に添付図面を参照して前項に説明されるような、データを処理する方法。
  34. 実質的に添付図面を参照して前項に説明されるような、コンピュータプログラム製品。
  35. 実質的に添付図面を参照して前項に説明されるような、仮想マシン。
JP2013533280A 2010-10-12 2011-09-29 データ要素の条件付き選択 Active JP5732139B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1017176.7A GB2484654B (en) 2010-10-12 2010-10-12 Conditional selection of data elements
GB1017176.7 2010-10-12
PCT/GB2011/051847 WO2012049474A1 (en) 2010-10-12 2011-09-29 Conditional selection of data elements

Publications (2)

Publication Number Publication Date
JP2013539882A true JP2013539882A (ja) 2013-10-28
JP5732139B2 JP5732139B2 (ja) 2015-06-10

Family

ID=43304419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013533280A Active JP5732139B2 (ja) 2010-10-12 2011-09-29 データ要素の条件付き選択

Country Status (10)

Country Link
US (2) US9753724B2 (ja)
EP (1) EP2628073B1 (ja)
JP (1) JP5732139B2 (ja)
KR (1) KR101802740B1 (ja)
CN (1) CN103282876B (ja)
GB (1) GB2484654B (ja)
IL (1) IL225614A (ja)
MY (1) MY164515A (ja)
TW (1) TWI536261B (ja)
WO (1) WO2012049474A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2523823B (en) * 2014-03-07 2021-06-16 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022576A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd データ処理装置
JP2008537231A (ja) * 2005-04-14 2008-09-11 クゥアルコム・インコーポレイテッド 条件付き命令が無条件で出力を提供するシステム及び方法
JP2013530450A (ja) * 2010-05-11 2013-07-25 アーム・リミテッド 条件付き比較命令

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2228597A (en) * 1989-02-27 1990-08-29 Ibm Data processor with conditional instructions
JPH04363722A (ja) * 1991-05-17 1992-12-16 Toshiba Corp 情報処理装置
US5805913A (en) * 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US20020002666A1 (en) * 1998-10-12 2002-01-03 Carole Dulong Conditional operand selection using mask operations
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
AU2003224042A1 (en) 2002-04-05 2003-10-20 Optimization Methods Deutschland Gmbh Method and device for optimizing the order of assignment of a number of supplies to a number of demanders
US7647480B2 (en) * 2004-07-27 2010-01-12 Arm Limited Handling of conditional instructions in a data processing apparatus
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
WO2006053173A2 (en) 2004-11-10 2006-05-18 Nvidia Corporation Multipurpose multiply-add functional unit
JP2009163624A (ja) 2008-01-09 2009-07-23 Nec Electronics Corp プロセッサ装置及び条件分岐処理方法
JP4962476B2 (ja) * 2008-11-28 2012-06-27 ソニー株式会社 算術復号装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022576A (ja) * 1999-07-12 2001-01-26 Hitachi Ltd データ処理装置
JP2008537231A (ja) * 2005-04-14 2008-09-11 クゥアルコム・インコーポレイテッド 条件付き命令が無条件で出力を提供するシステム及び方法
JP2013530450A (ja) * 2010-05-11 2013-07-25 アーム・リミテッド 条件付き比較命令

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNA200003180001; Pentium Pro ファミリ・ディベロッパーズ・マニュアル 中巻:プログラマーズ・リファレンス・マニュアル 初版, 1996, Pages:11-211〜11-212, 11-296〜11-297, インテルジャパン株式会社 *
JPN6014042168; ARM Limited: 'ARM Architecture Reference Manual ARM DDI 0100I' [online] , 200507, Pages:A1-2, A4-82〜A4-83, A5-2, A5-8, scss.tcd.ie *
JPN6014042170; Pentium Pro ファミリ・ディベロッパーズ・マニュアル 中巻:プログラマーズ・リファレンス・マニュアル 初版, 1996, Pages:11-211〜11-212, 11-296〜11-297, インテルジャパン株式会社 *

Also Published As

Publication number Publication date
TW201216154A (en) 2012-04-16
KR101802740B1 (ko) 2017-12-28
CN103282876A (zh) 2013-09-04
GB2484654A (en) 2012-04-25
WO2012049474A1 (en) 2012-04-19
EP2628073B1 (en) 2017-05-03
US20120089817A1 (en) 2012-04-12
MY164515A (en) 2017-12-29
TWI536261B (zh) 2016-06-01
GB201017176D0 (en) 2010-11-24
US9753724B2 (en) 2017-09-05
KR20130101052A (ko) 2013-09-12
US20170329603A1 (en) 2017-11-16
IL225614A0 (en) 2013-06-27
US9983872B2 (en) 2018-05-29
CN103282876B (zh) 2016-02-03
EP2628073A1 (en) 2013-08-21
JP5732139B2 (ja) 2015-06-10
GB2484654B (en) 2013-10-09
IL225614A (en) 2017-02-28

Similar Documents

Publication Publication Date Title
TWI501148B (zh) 條件式比較指令
US6115808A (en) Method and apparatus for performing predicate hazard detection
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
CN107851016B (zh) 向量算术指令
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
JP5607832B2 (ja) 汎用論理演算の方法および装置
US7779391B2 (en) Method of employing instructions to convert UTF characters with an enhanced extended translation facility
US8392888B2 (en) Method of translating n to n instructions employing an enhanced extended translation facility
JPH05150979A (ja) 即値オペランド拡張方式
CN107506623B (zh) 应用程序的加固方法及装置、计算设备、计算机存储介质
JP5732139B2 (ja) データ要素の条件付き選択
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP2007065999A (ja) 命令コードの符号化方式及びcpu
JP2005134987A (ja) パイプライン演算処理装置
JPH05100818A (ja) バレルシフタ
JP2003005955A (ja) データ処理装置

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20130412

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150410

R150 Certificate of patent or registration of utility model

Ref document number: 5732139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250