JP2013530450A - 条件付き比較命令 - Google Patents

条件付き比較命令 Download PDF

Info

Publication number
JP2013530450A
JP2013530450A JP2013509616A JP2013509616A JP2013530450A JP 2013530450 A JP2013530450 A JP 2013530450A JP 2013509616 A JP2013509616 A JP 2013509616A JP 2013509616 A JP2013509616 A JP 2013509616A JP 2013530450 A JP2013530450 A JP 2013530450A
Authority
JP
Japan
Prior art keywords
comparison
instruction
condition
state
condition state
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
JP2013509616A
Other languages
English (en)
Other versions
JP5646737B2 (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 JP2013530450A publication Critical patent/JP2013530450A/ja
Application granted granted Critical
Publication of JP5646737B2 publication Critical patent/JP5646737B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)

Abstract

命令デコーダ(14)は、条件付き比較命令に応答して、条件付き比較演算を行うように、処理回路(4)を制御するための制御信号を生成する。条件付き比較演算は、(i)処理回路(4)の現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、を含む。条件付き比較命令は、各個々の比較演算が、一対のオペランド間の異なる種類の関係を試験し得る、比較演算の連鎖シーケンスを表すために使用することができる。

Description

本発明は、データ処理の分野に関する。より具体的には、本発明は、条件付き比較命令に関する。
処理装置の現在の条件状態(condition state)を表すための種々の条件フラグを処理装置に提供することは、知られている。そのようなデータ処理装置の一例は、ARM命令セットを実行する、ARM Limited(Cambridge、England)によって設計されたプロセッサである。命令は、条件付き命令の実行時の条件フラグの現在の状態が、条件付き演算が行われるかどうかを制御するように、条件付きで実行するように配列され得る。例えば、ある種類の条件付き命令に対して、現在の条件状態が、実行時に試験され、現在の条件状態が、試験(test)を合格する場合、条件フラグは、2つのオペランドに行われた演算の結果に従って、更新される。現在の条件状態が、試験に失敗する場合、命令は、全く機能しないNOP命令として作用し、したがって、条件フラグは、不変のまま残される。
そのような命令は、試験の結果に試験および論理演算のいくつかの組み合わせを実装するために使用することができる。例えば、形式(A==B&&C==D)||E==Fの論理式は、初期試験A==Bを備え、その後、一連のさらなる試験が続き、その結果が、それぞれ、論理積(&&)または論理和(||)演算を使用して、前の演算から生じる条件フラグと組み合わせられるが、無条件比較命令および1つ以上の条件付き比較命令を備える、命令のシーケンスを使用して評価することができ、各条件付き比較命令は、前の命令の結果が、特定の条件を満たす場合のみ、条件フラグを更新するように配列される。
例えば、式(A==B&&C==D)||E==Fは、以下の命令シーケンスを使用して、評価され得る。
CMP A,B
CMPEQ C,D
CMPNE E,F
無条件比較命令CMP A、Bは、AおよびBの値を比較し、比較の結果に従って、条件フラグを設定する。AとBが、等しい場合、条件フラグは、EQ状態に置かれる。一方、AとBが、等しくない場合、条件フラグは、NE状態に置かれる。
条件付き比較命令CMPEQ C、Dを実行する際、条件フラグが、EQ状態にある(すなわち、試験A==Bが満たされた)場合、CとDとの間の比較が、行われ、条件フラグは、比較の結果に従って、更新される。そうでなければ、条件フラグが、NE状態にある(すなわち、A==Bが満たされなかった)時、CMPEQ命令は、NOPとして挙動し、条件フラグは、変更されない。これは、第1の2つの命令の実行後、条件フラグが、A=BおよびC=Dの両方である場合のみ、EQ状態を示し、そうでなければ、NE状態を示すことを意味する。これは、論理積演算を使用して、試験A==BおよびC==Dを組み合わせるための正しい結果である。
次に、条件付き比較命令CMPNE E、Fが、実行され、条件フラグが、EQ状態にある(すなわち、試験A==B&&C==Dが満たされた)場合、CMPNE命令は、NOPとして取り扱われ、したがって、条件コードは、EQ状態のままとなる。代替として、条件フラグが、NE状態にある(すなわち、試験A==B&&C==Dが満たされなかった)場合、EおよびFの比較が行われ、条件フラグは、比較の結果に従って、更新される。故に、最終結果は、(A=BかつC=D)またはE=Fのいずれかである場合、EQとなり、これらの試験のいずれも満たされない場合のみ、NEとなる。これは、論理和演算によって、試験(A==B&&C==D)およびE==Fを組み合わせるための正しい結果である。
故に、条件付き比較命令CMPEQおよびCMPNEは、形式(A==B&&C==D)||E==Fの一連の試験を評価するために使用することができる。しかしながら、これらの種類の命令は、連鎖内の個々の試験すべてが、同一種類の関係、または同一種類の関係に変換することができる、異なる種類の関係のいずれかを評価する時のみ、使用することができる。例えば、前の例では、個々の試験すべてが、「等しい」関係を評価する。代替として、条件付き命令は、関係C<Dが、A>Bと同一種類の関係である、D>Cに変換することができるため、形式(A>B&&C<D)の論理条件を表すために使用され得る。しかしながら、例えば、試験される関係が、異なり、相互に変換することができないため、(A>B||C==D)&&E<=F、またはA==B&&C!=D等の論理式を試験することは、不可能である。
したがって、これらの条件付き命令は、ある種類の論理式を試験するためにのみ、使用することができる。これは、そのような命令を使用してコンパイルすることができる、ソースコードの量が限定さることを意味し、コンパイラが、条件付き命令が特定の用途のために使用することができるかどうかを判定することは、複雑である。
第1の側面に照らして、本発明は、データ処理装置であって、
データを処理するための処理回路と、
プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成する、命令デコーダと、
処理回路の現在の条件状態を記憶するための状態記憶装置であって、現在の条件状態は、データの処理の際、修正可能である、状態記憶装置と、
を備え、プログラム命令は、条件付き比較命令を含み、命令デコーダは、条件付き比較命令に応答して、
(i)現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理回路を制御するための制御信号を生成する、データ処理装置を提供する。
本技法は、処理回路の現在の条件状態が、試験条件に合格するかどうかを判定するように、処理回路を制御する、条件付き比較命令を提供する。現在の条件状態が、試験条件に合格または失敗するかどうかに関わらず、現在の条件状態は、更新される。現在の条件状態のための新しい値は、現在の条件状態が、試験条件に合格または失敗したかどうかに応じて、異なる方法で判定される。現在の条件状態が、試験条件に合格した場合、比較演算は、第1のオペランドおよび第2のオペランドに行われ、現在の条件状態は、比較演算の際に生成された結果の条件状態に設定される。一方、現在の条件状態が、試験条件に失敗する場合、現在の条件状態は、条件付き比較命令によって指定された失敗条件状態に設定される。
現在の条件状態が、試験条件に失敗する場合、現在の条件状態を置換する、特定の失敗条件状態値を指定するための能力によって、条件付き比較命令は、異なる種類の比較の連鎖シーケンスを試験するために使用することが可能となる。これは、連鎖内の1つの比較に対応する条件付き比較命令に対して、失敗条件状態が、連鎖内の次の比較を試験するために要求される特定の条件状態を設定するために使用することができるためである。故に、条件付き比較命令は、連鎖シーケンス内の関係が、同一種類の関係に変換することができる時でも、使用することができる。例えば、形式((S==T&&U>=0)||A!=B)&&C>Dのシーケンスは、試験される個々の関係==,>=,!=,>が、異なり、相互に変換することができない場合でも、試験することができる。これは、条件付き比較命令が、すでに知られている条件付き比較命令より広くに使用することができ、故に、コンパイラによって、より容易に使用可能であることを意味する。
状態記憶装置は、現在の条件状態を記憶するための任意の種類の記憶場所であり得る。一例示的な実施形態では、状態記憶装置は、状態レジスタを備えてもよい。
装置の現在の条件状態は、状態記憶装置内に記憶された少なくとも1つの条件コードフラグの値を備えてもよい。例えば、条件コードフラグは、前の比較が、負の値、ゼロ値、桁上げ、または桁あふれをもたらしたかどうかを示すために提供されてもよい。次いで、後の比較は、後の比較の結果が、先の比較および後の比較の両方に依存するように、条件フラグの値に条件付きで行うことができる。これによって、先および後の比較が、ともに連鎖され、組み合わせられた論理条件を形成することが可能となる。
条件付き比較命令は、試験条件を指定するためのフィールドを含んでもよい。試験条件は、条件付き比較命令を含む、プログラムのプログラマによって、直接、指定され得る、または条件付き比較命令が、所望の論理式を表す、プログラム命令のシーケンスの一部である時、コンパイラによって、自動的に生成され得る。
失敗条件状態は、条件付き比較命令によって、即値として、指定されてもよい。したがって、即値は、条件付き比較命令の実行時の現在の条件状態が、試験条件に失敗する場合、現在の条件状態に設定されるべき値を示す。
失敗条件状態を表す即値は、条件付き比較命令を備えるプログラムのプログラマによって設定される、プログラム可能値であってもよい。これは、プログラマに、失敗条件状態の直接制御を提供する。
また、失敗条件状態を表す即値は、条件付き比較命令を備えるプログラムのコンパイラによって設定される、プログラム可能値であってもよく、コンパイラは、条件付き比較命令のための失敗条件状態が、その後、合格すべき、所望の条件に応じて、プログラム可能値を選択する。この場合、コンパイラは、所望の条件が何であるかを判定することができ、試験条件に失敗する場合、現在の条件状態に書き込まれるべきプログラム可能値に変換する。例えば、所望の条件が、EQ条件である場合、コンパイラは、試験条件に失敗する場合、条件フラグに書き込まれると、EQ条件を満たす、プログラム可能値を選択することができる。複数の可能性として考えられるプログラム可能値がそれぞれ、所望の条件を満たす場合、コンパイラは、どのプログラム可能値が使用されるかを選択するための選択基準を適用し、特定のソースコードが、コンパイラによって、毎回、同様にコンパイルされることを確実にするように配列されてもよい。例えば、コンパイラは、所望の条件を満たす、最大または最小可能値を選択する、または失敗条件状態値として、使用するための1つの値を選択するための任意の他のルールを適用することができる。
失敗条件状態値は、Nビットの失敗条件状態値として指定されてもよく、Nは、ゼロより大きい任意の整数であって、現在の条件状態は、Nビットの値によって、表されてもよい。命令デコーダは、現在の条件状態が、試験条件に失敗する場合、Nビットの失敗条件状態値を状態記憶装置に書き込むように、処理回路を制御してもよい。失敗条件状態および現在の条件状態は、失敗条件状態値の特定のビットが、現在の条件状態が、試験条件に失敗する時、現在の条件状態を更新するために、状態記憶装置に単純に書き込まれ得るように、同様にエンコードされてもよい。
一例示的な実施形態では、現在の条件状態は、所定の条件状態を含む、複数の条件状態のうちのいずれかに設定可能であってもよく、現在の条件状態は、試験条件に失敗条件状態として、所定の条件状態を指定する条件付き比較命令に失敗する場合、所定の条件状態にのみ、設定されてもよい。
条件付き比較命令が、その試験条件に失敗すると、現在の条件状態は、命令内に指定された失敗条件状態に設定される。条件付き比較命令が、その試験条件に合格すると、比較演算が行われ、現在の条件状態が比較演算の結果に従って更新される。比較演算から生じる、更新された条件状態は、失敗条件状態と同一であり得るため、試験条件が合格または失敗したかどうかどうか、正確に判定することは、不可能であり得る。
したがって、一例示的な実施形態では、通常処理演算から生じることができない、所定の条件状態が、提供されてもよい。所定の条件状態は、その失敗条件状態として、所定の条件を指定する条件付き比較命令がその試験条件に失敗する場合、処理回路が所定の条件状態にのみ置かれることができるように、条件付き比較命令に対して排他的である。故に、条件付き比較命令の実行後、所定の条件状態が生じたかどうかを試験することによって、失敗条件として、所定の条件状態を指定する条件付き比較命令が、その試験条件に合格または失敗したかどうかを判定することが可能である。これは、例えば、特定のデータ値がデータ値の所与の範囲内にあるかどうかを試験するために、有用であり得る。
条件付き比較命令は、第1のオペランドおよび第2のオペランドを指定するための第1および第2のオペランドフィールドを含んでもよい。第1および第2のオペランドフィールドのうちの少なくとも1つは、第1のオペランドまたは第2のオペランドを記憶する記憶場所を指定してもよい。オペランドを記憶するための記憶場所(例えば、レジスタ)の数を指定することによって、オペランドフィールドは、命令エンコーディング内のオペランドフィールドのために利用可能なビットの数より大きいビットの数を有するオペランドを識別するために使用することができる。さらに、オペランドフィールド内の記憶場所を参照することによって、同一命令の複数の実行中で異なる変数オペランドを指定することが可能となる。
命令デコーダは、ゼロの値を有する第1および第2のオペランドのうちの対応する1つによって、条件付き比較演算を行うように、処理回路を制御するためのビット値の所定の組み合わせを指定するオペランドフィールドのうちの1つに応答するように構成されてもよい。例えば、すべて1のビット値(例えば、0b11111)は、ゼロオペランドを示すために、ビットの所定の組み合わせとして、使用することができる。故に、ビット値の所定の組み合わせは、命令デコーダによって、記憶場所指定子として、解釈されないが、代わりに、ゼロの値を識別するために使用される。これは、ゼロ値との比較が、共通であるため有用であって、したがって、命令構文内において、そのような比較を直接エンコードするための能力は、記憶場所にアクセスし、ゼロオペランドを取得する必要性を、多くの場合、回避することができることを意味する。
第1および第2のオペランドフィールドのうちの1つは、第1のオペランドまたは第2のオペランドとして、即値を指定してもよい。本命令形式は、変数値と固定値との間の比較のために有用であり得る。この場合、オペランドフィールドのうちの1つは、変数オペランドを記憶する記憶場所を指定するために使用することができ、他のオペランドフィールドは、固定値を表す、即値を指定するために使用することができる。
条件付き比較命令の試験条件が、満たされる場合、処理回路によって行われる比較演算は、種々の形式を有してもよい。例えば、比較演算は、以下の任意の1つを備えてもよい。
(a)第2のオペランドを第1のオペランドから減算すること
(b)第1のオペランドを第2のオペランドに加算すること
(c)ビット排他論理和演算を第1のオペランドおよび第2のオペランドに行うこと
(d)ビット論理積演算を第1のオペランドおよび第2のオペランドに行うこと
(e)第1のオペランド、第2のオペランド、および状態記憶装置の桁上げビットを加算すること
(f)ビット論理和演算を第1のオペランドおよび第2のオペランドに行うこと。
比較演算はまた、第1および第2のオペランドに行われる、別の算術または論理演算を備えてもよい。
別の側面に照らして、本発明は、データ処理装置であって、
データを処理するための処理手段と、
プログラム命令に応答して、制御信号を生成するための命令デコーダ手段であって、制御信号は、データを処理するように、処理手段を制御するためのものである、手段と、
処理手段の現在の条件状態を記憶するための状態記憶手段であって、現在の条件状態は、データの処理の際、修正可能である、手段と、
を備え、プログラム命令は、条件付き比較命令を含み、命令デコーダ手段は、条件付き比較命令に応答して、
(i)現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理手段を制御するための制御信号を生成する、データ処理装置を提供する。
さらなる側面に照らして、本発明は、データ処理方法であって、
条件付き比較命令を含む、プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成するステップと、
処理回路の現在の条件状態を記憶するステップであって、現在の条件状態は、データの処理の際、修正可能である、ステップと、
条件付き比較命令に応答して、
(i)現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、条件付き比較演算を行うように、処理回路を制御するための制御信号を生成するステップと、
を含む、方法を提供する。
さらに別の側面に照らして、本発明は、データ処理装置による実行のためのプログラム命令のシーケンスをコンパイルする方法であって、プログラム命令のシーケンスは、2つのオペランドに無条件比較演算を行い、データ処理装置の現在の条件状態を無条件比較演算の際に生成された結果の条件状態に設定するように、データ処理装置を制御するための無条件比較命令と、(i)データ処理装置の現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、を備える、条件付き比較演算を行うように、データ処理装置を制御するための少なくとも1つの条件付き比較命令と、を含み、
(a)1つ以上の論理積または論理和演算を使用して、論理的に組み合わせられたN個の比較演算の連鎖シーケンスを定義する、データの入力を受信するステップであって、Nは、1より大きい整数であって、N個の比較演算はそれぞれ、個別のオペランドが、個別の所定の基準を満たすかどうかを試験する、ステップと、
(b)連鎖シーケンスの第1の比較演算に対応する無条件比較命令を生成するステップと、
(c)2とNとの間のiの各整数値に対して、
(i)連鎖シーケンスのi番目の比較演算が、論理積演算または論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうかを判定するステップであって、部分的連鎖シーケンスは、連鎖シーケンスの第1から(i−1)番目の比較演算を備える、ステップと、
(ii)i番目の比較演算が、論理積演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、i番目の比較演算に対応する条件付き比較命令を生成するステップであって、条件付き比較命令は、試験条件として、(i−1)番目の比較演算の所定の基準が満たされる時、合格される条件を指定し、失敗条件状態として、満たされていない、i番目の比較演算の所定の基準に対応する条件状態を指定する、ステップと、
(iii)i番目の比較演算が、論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、i番目の比較演算に対応する条件付き比較命令を生成するステップであって、条件付き比較命令は、試験条件として、(i−1)番目の比較演算の所定の基準が満たされない時、合格される条件を指定し、失敗条件状態として、満たされている、i番目の比較演算の所定の基準に対応する条件状態を指定する、ステップと、
を行う、ステップと、
(d)プログラム命令のシーケンスとして、ステップ(b)で生成された少なくとも無条件比較命令と、ステップ(c)で生成された(N−1)個の条件付き比較命令と、を出力するステップと、
を含む、方法を提供する。
本技法の条件付き比較命令は、1つ以上の論理積または論理和演算を使用して、論理的に組み合わせられる、N個の比較演算の連鎖シーケンスを表すために使用されてもよい。N個の比較演算はそれぞれ、個別のオペランドが、所定の基準を満たすかどうかを試験する。本技法の条件付き比較命令によって、異なる基準が、比較演算のそれぞれにおいて試験可能となる。例えば、比較演算のうちの1つは、あるオペランドが、別のオペランドより大きいかどうかを試験することができ、次の比較演算は、あるオペランドが、別のオペランドと等しいかどうかを試験してもよく、さらなる比較演算は、あるオペランドが、別のオペランドと等しくないかどうかを試験してもよい。
用語「基準」は、特定の比較(例えば、A>B、またはC==D)によって試験される関係を示すために使用される一方、用語「条件」は、条件付き比較命令の比較演算が、行われるかどうかを制御する試験(例えば、現在の条件状態が、HI状態であるかどうかを確認するための試験、Zフラグが、前の結果がゼロであったことを示すように設定されるかどうかを確認するための試験、またはNフラグが、前の結果が負であったことを示すように設定されるかどうかを確認するための試験)を示すことに留意されたい。
N個の比較演算の連鎖シーケンスを表すプログラム命令のシーケンスは、各比較演算に対して、比較命令を生成することによって、ステップ毎に構築されてもよい(Nは、1より大きい整数である)。各比較演算は、所定の基準(例えば、A<B)を指定し、論理積または論理和演算によって、前の比較演算の部分的連鎖シーケンスの結果にリンクされる。連鎖シーケンス内の第1の比較演算に対して、無条件比較命令が、生成される。i番目の比較演算(iは、2とNとの間の任意の整数である)に対して、条件付き比較命令が、生成され、i番目の条件付き比較命令の試験条件および失敗条件状態は、i番目の比較演算が、論理積演算または論理和演算を使用して、第1から(i−1)番目の比較演算を備える、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうかに依存する。
i番目の比較演算が、論理積演算を使用して、前の比較演算の部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、i番目の条件付き比較命令は、(i−1)番目の比較の所定の基準が満たされると、試験条件として、条件が合格したと指定し、失敗条件状態として、i番目の比較演算の所定の基準に対応する条件状態が満たされていないと指定する。これは、(i−1)番目の所定の基準が、「失敗」結果をもたらす場合、i番目の条件付き比較命令が、その試験条件に失敗し、したがって、その独自の失敗条件状態を返す一方、(i−1)番目の所定の基準比較演算が、「合格」結果をもたらす場合、i番目の比較演算が、その試験条件に合格し、i番目の所定の基準が満たされたかどうかに応じて、結果の条件状態をもたらすことを確実にする。したがって、i番目および(i−1)番目の比較の組み合わせは、論理積演算のために要求される挙動である、(i−1)番目およびi番目の所定の基準の両方が、満たされる場合のみ、合格結果をもたらす。
一方、i番目の比較演算が、論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、条件付き比較命令は、i番目の比較演算に対応して、生成され、条件付き比較命令は、試験条件として、(i−1)番目の比較演算の所定の基準演算が満たされない時、合格される条件を指定し、失敗条件状態として、満たされている、i番目の比較演算の所定の基準に対応する条件状態を指定する。これは、(i−1)番目の所定の基準が満たされる場合、i番目の条件付き比較命令が、その試験条件に失敗し、したがって、その失敗条件状態として、満たされている、i番目の所定の基準に対応する「合格」条件状態をもたらすことを確実にする。一方、(i−1)番目の比較が、その所定の基準を満たさない場合、i番目の条件付き比較命令が、その試験条件に合格し、したがって、i番目の所定の基準が満たされたかどうかに応じて、結果の条件状態をもたらす。これは、全体的結果が、(i−1)番目およびi番目の所定の基準のうちの任意の1つが、満たされる限り、i番目の所定の基準と関連付けられた「合格」条件となることを意味する。これは、論理和演算のために要求される挙動である。
故に、本形式の条件付き比較命令のストリングを生成することによって、比較の連鎖シーケンスは、プログラム命令のシーケンスに変換することができる。次いで、生成された命令のシーケンスが、出力される。
無条件比較命令および条件付き比較命令が生成される時間の順序は、重要ではないことを理解されたい。例えば、命令は、比較演算の連鎖シーケンスに対応する時間の順序で生成され得る(すなわち、カウンタiは、2からNにインクリメントされる)。代替として、命令は、連鎖シーケンスの逆の時間の順序(カウンタは、Nから2にデクリメントされる)、または任意の他の時間の順序で生成され得る。命令が生成された時間の順序に関わらず、生成された命令のプログラムの順番は、同一であって、第1の命令は、連鎖内の第1の比較演算に対応する無条件比較命令であって、第2の命令は、連鎖内の第2の比較演算に対応する条件付き比較命令等となる。
コンピュータ記憶媒体は、コンピュータによって実行されると、前述のように、プログラム命令のシーケンスをコンパイルする方法を行うように、コンピュータを制御する、コンピュータプログラムを記憶するために提供されてもよい。
別の側面に照らして、本発明は、
(i)処理回路の現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
(ii)現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理回路を制御するための条件付き比較命令を備える、コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体を提供する。
次に、本発明の実施形態が、付随の図面を参照して、単なる一例として、説明される。
データ処理装置を図式的に図示する。 条件コードフラグの実施形態を図式的に図示する。 それぞれ、試験条件、2つのレジスタオペランド、および即失敗条件状態値を指定するためのフィールドを備える、条件付き比較命令の例示的な構文および例示的なエンコーディングを図示する。 それぞれ、試験条件、2つのレジスタオペランド、および即失敗条件状態値を指定するためのフィールドを備える、条件付き比較命令の例示的な構文および例示的なエンコーディングを図示する。 それぞれ、オペランドのうちの1つが、即値として指定される、条件付き比較命令の代替の例示的な構文および例示的なエンコーディングを図示する。 それぞれ、オペランドのうちの1つが、即値として指定される、条件付き比較命令の代替の例示的な構文および例示的なエンコーディングを図示する。 条件付き比較命令を処理するための方法を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。 比較演算の連鎖シーケンスを表す、プログラム命令のシーケンスを生成するための例示的な方法を図示する。 比較演算の連鎖シーケンスを表す、プログラム命令のシーケンスを生成するための例示的な方法を図示する。 種々の条件状態および各条件状態を表す条件フラグの組み合わせの実施形態を図示する。 仮想マシン実装を図式的に図示する。 条件付き比較命令による排他的使用のための所定の条件状態を含む、条件状態の実施形態を示す。 失敗条件状態として、所定の条件状態を指定する条件付き比較命令を使用して、変数Xをデータ値の所与の範囲に制約する実施形態を図示する。
図1は、データ処理装置2を図示する。装置2は、処理データを処理するための処理回路4を備える。処理回路は、種々の構成要素、例えば、レジスタバンク6、加算器8、シフタ10、および乗算器12を備えてもよい。加算器8、シフタ10、および乗算器12は、集合的に、レジスタバンク6内に記憶されたデータを処理し、処理結果をレジスタバンク6に書き込む。処理回路4は、本構成に限定されず、典型的には、簡潔さのために例証されていない多くの他の構成要素を備えることを理解される。データ処理装置2は、プログラム命令に応答してデータを処理するように、処理回路4を制御するための制御信号を生成するデコーダ14を備える。
データ処理装置2は、処理回路4の少なくとも現在の条件状態を含む、状態データを記憶するための状態記憶装置15を備える。図1の実施形態では、状態記憶装置15は、状態レジスタであるが、記憶場所はまた、他の形式の記憶場所を備えてもよい。図1では、状態レジスタ15は、処理回路4内に図示されているが、他の実施形態では、状態レジスタ15は、装置2の別の部分内に位置してもよい。一実施形態では、現在の条件状態は、状態レジスタ15内に記憶される、一式の条件コードフラグによって示される。条件コードフラグは、処理回路4によって生成される、前の処理結果の条件を示す。
図2に示される例示的な実施形態では、状態レジスタ15の条件コードフラグは、前の処理結果が負の数であったかどうかを示すための負のフラグNと、前の処理結果がゼロであったかどうかを示すためのゼロのフラグZと、前の処理結果が生成された時、桁上げが生じたかどうかを示すための桁上げフラグCと、前の処理結果を生成する時、桁あふれが生じたかどうかを示すための桁あふれフラグVと、を含む。故に、条件コードフラグの値は、前の処理結果に関する情報を提供する。フラグは、負の数、ゼロ値、桁上げ、または桁あふれが生じたことを示すように設定される、そうでないことを示すようにクリアされる、またはその逆であってもよい。条件コードフラグN、Z、C、Vの異なる組み合わせによって表される情報の実施形態については、図8および10を参照されたい。
図3Aは、本技法に従う、条件付き比較命令CCMPの例示的な構文を図示する。条件付き比較命令は、試験条件、2つのオペランド、および失敗条件状態を指定するためのフィールドを有する。命令デコーダ14は、条件付き比較命令に応答して、状態レジスタ15内に記憶された現在の条件状態が、条件付き比較命令と関連付けられた試験条件(cond)を満たすかどうか判定するように、処理回路4を制御する。現在の条件状態が、試験条件を満たす場合、処理回路4は、2つのオペランドに比較演算を行い、処理結果に基づいて、現在の条件状態を更新する(例えば、比較演算が、負の値をもたらす場合、条件フラグNを設定することができる)。条件付き比較命令の実行時の現在の条件状態が、試験条件を満たさない場合、比較演算は、行われず、条件付き比較命令によって指定された失敗条件状態値が、状態レジスタ15に書き込まれ、現在の条件状態を更新する。
図3Bは、図3Aの条件付き比較命令の例示的なエンコーディングを図示する。本実施形態では、命令は、試験条件を指定するための4ビットフィールドと、オペランドレジスタを指定するための2つの5ビットフィールドと、失敗条件状態を指定するための4ビットフィールドと、を含む。他のビット数が、所望に応じて、各フィールドのために使用されてもよいことを理解される。本実施形態では、4ビット試験条件識別子#0b0000は、EQ条件を示す。命令が実行されると、条件コードが試験され、EQ試験条件を満たすかどうか確認される。EQ試験条件が満たされる場合、オペランドレジスタ(本実施形態では、レジスタR2およびR9)内に記憶される値が比較され、条件コードが、比較の結果に基づいて、更新される。EQ試験条件が満たされない場合、失敗条件状態値(本実施形態では、#0b0001)が、条件コードNZCVに書き込まれる。
図3Aの構文では、条件付き比較命令は、レジスタ指定子Rn、Rmを使用して、オペランドの両方を指定する。レジスタ指定子Rn、Rmは、比較されるべきオペランドを記憶する、レジスタバンク6のレジスタを識別する。比較されるべきオペランドは、整数または浮動小数点数であってもよい。
図4Aに示されるような別の例示的な構文では、オペランド#opのうちの1つは、条件付き比較命令内の即値として、指定されてもよい。これは、変数および定数が、相互に比較されるべき時、有用であり得る。図4Bは、図4Aに示される構文を有する命令の例示的なエンコーディングを示す。試験条件(例えば、LT)が満たされる場合、オペランドレジスタ(例えば、R7)内に記憶される値は、即値(例えば、#19)と比較され、条件コードは、比較に応じて、更新される。試験条件が満たされない場合、失敗条件状態値#0b0000が、条件コードNZCVに書き込まれる。
オペランドが、レジスタ指定子を使用して指定される時、命令デコーダ14は、任意に、レジスタ内に記憶されるオペランドではなく、ゼロペランドを示すように、特定のレジスタ指定子値を解釈するように構成することができる。例えば、図3の実施形態では、レジスタ指定子Rmが、すべて1のビット値0b11111を指定する時、これは、レジスタRn内に記憶されるオペランドが、処理回路4によって、ゼロ値と比較されるべきであることを示すために使用され得る。
図3および4の構文の両方では、失敗条件状態は、試験条件に失敗する場合、状態レジスタ15の条件コードフラグに書き込まれるべきビット値を表す、即値として指定される。例えば、図2に示されるようなNZCV条件コードフラグを使用することによって、0b0100の失敗条件状態を表す即値は、0が、負、桁上げ、および桁あふれフラグN、C、Vに書き込まれるべきであって、1が、ゼロのフラグZに書き込まれるべきであることを示すことができる。このように、条件付き比較命令は、試験条件に失敗した場合、採用されるべき条件状態を直接指定する。これによって、条件付き比較命令は、現在の条件状態を続く条件付き命令によって使用するために準備ができた適切な値に設定するために使用することを可能にするため、有用である。
図5は、本技法の条件付き比較命令を使用する、データ処理の方法を図示する。ステップ50では、命令デコーダ14は、命令のシーケンスの次の命令をデコードする。ステップ60では、デコーダ14は、次の命令が、条件付き比較命令であるかどうかを判定する。次の命令が、条件付き比較命令ではない場合、ステップ70において、命令デコーダ14は、次の命令に対応する制御信号を生成し、次の命令に対応する演算を行うように、処理回路4を制御する。次いで、処理は、ステップ80に進み、処理されるべき命令がさらに存在するかどうか判定される。さらなる命令が処理されるべき場合、方法は、ステップ50に戻り、次の命令がデコードされる。処理されるべき命令がこれ以上存在しない場合、方法は、終了する。
一方、ステップ60において、次の命令が、条件付き比較命令である場合、命令デコーダ14は、条件付き比較演算を行うように、処理回路4を制御するための制御信号を生成する。ステップ90において、処理回路4は、状態レジスタ15の条件コードフラグによって表される現在の状態が、条件付き比較命令と関連付けられた試験条件に合格するかどうかを判定する。現在の条件状態が、試験条件に合格する場合、ステップ100において、処理回路4は、第1および第2のオペランドに比較演算を行うように制御される。次いで、ステップ110において、状態レジスタ15が、現在の条件状態を、ステップ100において、比較演算を行う際に生成された結果の条件状態に設定するように更新される。
一方、ステップ90において、現在の条件状態が、試験条件に合格しなかった場合、ステップ120において、現在の条件状態は、条件付き比較命令によって指定される失敗条件状態に設定される。例えば、条件付き比較命令によって指定された即値は、状態レジスタ15の条件コードフラグに書き込まれる。
現在の条件状態が、ステップ90において、試験条件に合格したかどうかに関わらず、方法は、ステップ80に進み、処理されるべきさらなる命令が存在するかどうか判定される。別の命令が処理されるべき場合、方法は、再び、ステップ50に戻る。そうでなければ、方法は、終了する。
図5は、条件付き比較命令の現在の条件状態が、試験条件に合格するかどうかに関わらず、現在の条件状態を表す条件コードフラグが更新されることを示す(試験条件に失敗する場合、no−op命令として作用する、前の条件付き命令とは対照的に)。現在の条件状態の更新された値は、現在の条件状態が、試験条件に合格するかどうかに依存する。現在の条件状態が、試験条件に合格する場合、更新される条件状態は、第1および第2のオペランドを比較する結果に基づいて判定される一方、現在の条件状態が、試験条件に合格しなかった場合、更新される値は、条件付き比較命令によって指定された失敗条件状態となる。本種類の命令は、現在の条件状態が、試験条件に合格しなかった場合、現在の条件状態が更新されるべき失敗条件状態を指定するための能力によって、これらの命令が、異なる種類の論理関係を試験する、一連の連鎖比較演算を表すために使用可能となるため、有用である。
それぞれ、ステップ90〜120(図5)に従って処理されるが、ステップ100において、異なる比較演算を使用する、種々の種類の条件付き比較命令が、提供されてもよい。これらの種類の条件付き比較命令の実施形態は、図6Aから6Fに示される。図6Aから6Fは、第1および第2のオペランドが、レジスタ指定子を使用して識別される、形式の命令を図示するが、オペランドの1つが、即値として指定される、これらの命令のそれぞれの代替形式もまた、提供することができる。また、これらの命令の構文は、以下に説明されるように、即値#immとしてではなく、所望に応じて、条件ニーモニックとして、失敗条件状態を指定するように、修正することができる。
図6Aは、条件付き比較肯定命令CCMPを図示する。条件付き比較肯定命令によって指定される試験条件を合格する場合、処理回路4は、第2のオペランドを第1のオペランドから減算し、結果の条件状態を条件フラグに書き込むように制御される一方、試験条件に失敗する場合、命令内で指定された失敗条件状態#immが、条件フラグに書き込まれる。本種類の命令は、第1のオペランドが、第2のオペランド以上であるかどうかを試験するために有用であり得る。
図6Bは、条件付き比較否定命令CCMNを図示する。命令によって指定される試験条件が、現在の条件状態によって合格される場合、第1および第2のオペランドは、ともに加算され、結果の条件状態が、条件フラグに書き込まれる一方、現在の条件状態が、試験条件に合格しない場合、失敗条件状態#immは、条件フラグに書き込まれる。本種類の命令は、第1のオペランドが、第2のオペランドを−1で乗算することによって得られる値より大きいかどうかを試験するために有用であり得る(第1および第2のオペランドを加算することは、(−1*第2のオペランド)を第1のオペランドから減算することと同等であるため)。
図6Cは、条件付き等価試験命令CTEQを図示する。本種類の命令が、実行される時、命令によって指定される試験条件を合格する場合、処理回路4は、第1および第2のオペランドに排他的論理和演算を行い、結果の条件状態を条件フラグに書き込むように構成される一方、試験条件に失敗する場合、命令によって指定される失敗条件状態#immは、条件フラグに書き込まれる。本種類の命令は、第1のオペランドが、第2のオペランドに等しいかどうかを試験するために使用することができる。
図6Dは、条件付きビット試験命令CTSTを図示する。本種類の命令が実行される時、試験条件を合格する場合、処理回路4は、第1および第2のオペランドにビット論理積演算を行い、結果の条件状態を条件フラグに書き込む一方、試験条件に失敗する場合、失敗条件状態#immが、条件フラグに書き込まれる。本種類の命令は、第2のオペランド内の「1」ビットの位置に対応する第1のオペランドのビットがすべてゼロである、またはすべてゼロではないかどうかを試験するために使用することができる。特に有用なケースは、第2のオペランドが、きっかり1つの「1」ビットを含む時、および命令が、第1のオペランドの対応するビットが「0」または「1」かどうか試験する時である。
図6Eは、桁上げを伴う条件付き加算命令CADCを図示する。本命令が実行される時、試験条件を合格する場合、処理回路4は、第1のオペランド、第2のオペランド、および状態レジスタ15内の桁上げフラグCの現在の値を加算し、本加算から生じる結果の条件状態を条件フラグに書き込むように制御される。一方、試験条件に失敗する場合、失敗条件状態#immは、他の種類の条件付き比較命令に関して、条件フラグに書き込まれる。加算桁上げ演算は、マルチワード加算の第2、第3、またはさらなるワードを表すために使用することができ、桁上げビットは、マルチワード加算の前のワードが、桁上げをもたらしたかどうかを示す。
図6Fは、実行されると、第1および第2のオペランドのビット論理和を行うように(但し、試験条件に合格することを条件とする)、処理回路4を制御する、条件付きビット論理和試験命令CORRTを図示する。ビット論理和から生じる結果の条件状態は、条件フラグに書き込まれる。一方、試験条件に失敗する場合、失敗条件状態#immは、条件フラグに書き込まれる。そのような命令は、2つのレジスタ両方とも、ゼロ値を記憶するかどうかを試験するために使用することができる。これは、特に、倍幅データ値が、ゼロに等しいかどうか試験するために有用であり得る。例えば、倍幅128ビット値RnHi/Loは、2つの64ビットレジスタRnHiおよびRnLoを使用して、記憶することができる。倍幅値の上位および下位部のビット論理和は、両方の部分がゼロに等しい場合のみゼロ値を有するため、ビット論理和試験命令によって、ダブル値の半分の両方とも、単一命令を使用して、ゼロに対して試験可能となる。これは、ゼロに対して倍幅値の各部分を個々に比較するより効率的であり得る。故に、形式(RnHi/Lo!=0)&&(RmHi/Lo==0)の式は、2つの命令を使用して、効率的に評価することができる。
ORRT RnHi,RnLo; //Z=1 if RnHi/Lo=0,and Z=0 otherwise)
CORRT NE,RmHi,RmLo,#0 //Z=1 if(ORRT set Z to 0 AND RmHi/Lo=0),//Z=0 otherwise
任意の特定の実施形態では、命令デコーダは、これらの命令のうちの任意の1つ以上に応答して、対応する種類の条件付き比較演算を行うように、処理回路4を制御してもよいことを理解される。例えば、特定の実施形態では、デコーダ14は、他の種類の条件付き比較命令ではなく、例えば、図6Aおよび6Bに示される種類の条件付き比較命令に応答するように構成され得る。
一連の条件付き比較命令は、比較演算の連鎖シーケンスを表すために使用することができ、シーケンス内の各比較演算は、論理積または論理和演算(例えば、シーケンス(A<B&&C==D)||E>=F)を使用して、すべての前の比較演算の組み合わせられた結果と論理的に組み合わせられる。各比較演算は、特定の基準を試験する(例えば、前述の実施形態では、第1の比較演算は、A<Bかどうかの基準を試験し、第2の比較演算は、C=Dかどうかの基準を試験し、第3の比較演算は、E>Fかどうかの基準を試験する)。以前に周知の条件付き命令と異なり、本技法の条件比較命令は、連鎖比較演算が、2つ以上の種類の基準を試験する時に使用することができる。
図7Aおよび7Bは、比較演算の特定の連鎖シーケンスを比較命令のシーケンスに変換するための方法の実施形態を示す。そのような方法は、例えば、比較演算のシーケンスを定義する入力を受信し、プログラム命令の対応するシーケンスを生成する、コンパイラによって、行うことができる。
図7Aは、そのような方法の第1の実施形態を図示する。ステップ200では、N個の比較演算の連鎖シーケンスを定義するデータが、入力される(Nは、1より大きい任意の整数である)。ステップ202では、カウント変数iは、Nに等しくなるように設定される。ステップ204では、連鎖シーケンスのi番目の比較を連鎖シーケンスの第1から(i−1)番目の比較の組み合わせられた結果と組み合わせる、論理演算が、論理積または論理和演算であるかどうか判定される。例えば、シーケンス(A<B&&C==D)||E>=Fでは、i=3の時、シーケンス(E>=F)のi番目の比較は、論理和演算||を介して、1番目から(i−1)番目の比較(A<B&&C==D)の組み合わせに連鎖され、i=2の時、シーケンス(C==D)のi番目の比較は、論理積演算&&を介して、(i−1)番目の比較(A<B)に連鎖される。
ステップ204において、i番目の比較演算および第1から(i−1)番目の比較演算の部分的連鎖が、論理積演算によってリンクされていると判定される場合、ステップ206において、条件付き比較命令が、i番目の比較演算のために生成され、試験条件condは(i−1)番目の比較が、その所定の基準を満たす時、合格される条件に設定され、失敗条件状態値は、満たされていない、i番目の比較の基準に対応する、任意の値に設定される。
例えば、前述の実施形態において、i=2の時、(i−1)番目の比較(A<B)が、その所定の基準を満たす時、合格される条件は、これが、A<Bであることを示すため、条件LTである(図8参照−符号付き比較を仮定する)。故に、第2の条件付き比較命令演算のための試験条件は、LTである。また、i=2の場合、i番目の比較(C==D)の基準は、CがDと等しくない、すなわち、Zフラグが設定されない、図8に示されるNE状態である時、満たされない。故に、i番目の条件付き比較命令の失敗条件状態値は、クリアであるZフラグをもたらす、値の任意の組み合わせに設定することができる(例えば、0b0000)。
一方、ステップ204において、i番目の比較演算および第1から(i−1)番目の比較演算の部分的連鎖を組み合わせる論理演算が、論理和演算である場合、ステップ208において、条件付き比較命令が、i番目の比較演算のために生成され、試験条件は、(i−1)番目の比較演算が、その基準を満たさない時、合格される条件に設定され、失敗条件状態値は、満たされている、i番目の比較の基準に対応する任意の値に設定される。
例えば、前述の例示的なシーケンスにおいて、i=3の場合、(i−1)番目の比較演算(C==D)が、その基準を満たさない時、合格される条件は、図8の状態NEであって、したがって、第3の条件付き比較演算のための試験条件は、NEに設定される。また、i=3の場合、i番目の比較(E>=F)のための基準は、Eが、F以上である時(例えば、割り当てられた比較のためのGE状態において−図8参照)、満たされる。故に、失敗条件状態値は、GE状態に対応する、条件フラグ値の任意の組み合わせに設定することができる(例えば、図8を参照すると、ビットNおよびVは、同一であって、すべての他のビットは、任意の値−例えば、0b0000を有し得る)。
論理演算が、論理積または論理和演算であったかどうかに関わらず、ステップ210において、カウント変数iが、判定され、ステップ212において、新しいカウント変数iが、2以上であるかどうか判定される。新しいカウント変数iが、2以上である場合、ステップ204から212は、別の条件付き比較命令が、別の比較演算のために生成されるように、iの新しい値のために反復される。このように、条件付き比較命令は、連鎖シーケンスの第2からN番目の比較演算のそれぞれのために生成される。
ステップ212において、iが、2より小さい場合、方法は、ステップ214に進み、無条件比較命令が、連鎖シーケンスの第1の比較のために生成される。例えば、前述のシーケンスでは、次いで、無条件比較命令が、生成され、A<Bであるかどうか判定し、比較結果に従って、条件コードフラグを更新する。ステップ216では、すべての生成された命令は、比較演算の連鎖シーケンスを表す、命令のシーケンスを形成するように、生成の逆の順序で出力される。
図7Bは、比較演算に対応する命令のシーケンスを生成する方法の代替実施形態を図示する。図7Aの対応するステップと同じ、図7Bのステップは、図7Aと同一参照番号を使用して、標識されている。図7Bは、命令が、図7Aにおけるように、逆の順序ではなく、連鎖シーケンス内の対応する比較演算の順序で生成されるという点において、図7Aと異なる。連鎖シーケンスの第1の比較演算のための無条件比較命令は、図7Bのステップ214において生成される。次いで、カウント変数iは、ステップ220において、2の値に初期化される。次いで、図7Aの対応するステップと同じ、ステップ204から208が、i番目の比較演算のために行われ、iが、ステップ226において、Nより大きくなるまで、Iが、ステップ222において、連続的にインクリメントされる間、反復される。これは、条件付き比較命令が、連鎖内の第2からN番目の比較演算のために生成されることを意味する。iが、Nより大きくなると、ステップ230において、生成された命令が、ステップ230において、生成の順序で出力され、プログラム命令のシーケンスを形成する。
図7Aおよび7Bから分かるように、第1の比較演算のための無条件比較命令および第2からΝ番目の比較演算のための条件付き比較命令が生成される順序は、条件付き比較命令が、第2からΝ番目の比較演算のそれぞれのために生成され、無条件比較命令が、第1の比較演算のために生成され、および生成される命令が、正しいプログラム順序で出力される限り、特に、重要ではない。図7Aおよび7Bに示されるもの以外の生成順序もまた、可能であることは、当業者によって理解される。
図7Aおよび7Bのステップ214において生成された無条件比較命令は、条件付き命令に対して、異なる構文を有する、命令であってもよい。例えば、無条件比較命令は、命令デコーダが、オペランドを比較し比較結果に従って、条件コードフラグNZCVを更新するために、処理回路4を制御するための制御信号を生成するように、2つのオペランドを指定する構文を有してもよい。無条件比較命令構文は、図3、4、または6に示される、条件付き比較命令構文の試験条件および失敗条件状態を省略してもよい。図8のAL(常時、合格される)条件状態は、そのような実施形態では、省略されてもよい。
代替として、無条件比較命令および条件付き比較命令は、共通の構文を有してもよく、無条件比較命令は、試験条件condを、条件フラグの値に関わらず、常時、満たされる条件状態に設定することによって、図3、4、および6のうちのいずれかに示される、条件付き比較命令構文から形成される。例えば、無条件命令に対して、試験条件condは、命令が、常時、その条件コードに合格するように(この場合、失敗条件状態は、決して必要とされないため、任意の値に設定されてもよい)、図8の「常時」条件状態ALと等しくなるように設定され得る。故に、同一種類の命令構文は、その命令のために指定する試験条件に応じて、無条件比較命令および条件付き比較命令の両方として、使用することができる。これは、命令エンコーディング空間の使用の効率を改善することができる。
図8は、それぞれ、特定の条件サフィックス(または、条件「ニーモニック」)によって指定される、特定の条件状態を表す、条件コードフラグの異なる組み合わせを示す、表を図示する。例えば、PL状態は、前の処理結果が、正またはゼロのいずれかであったことを示し、クリアである、「N」条件フラグによって指定される。故に、NZCVビット値0b0xxx(ここでは、xは、0または1のいずれか)の任意の組み合わせは、N個のビットクリアを有し、したがって、PL状態を示すことができる。
図7Aおよび7Bの方法は、以下により詳細に説明される。
以下の個々の比較の「連鎖」シーケンスである、「if」試験を有すると仮定する。
if(((s==t&&u>=0)||a!=b)&&c>d)
ここでは、実施形態の目的のため、s、t、およびuが、符号付き変数であって、a、b、c、およびdが、符号なし変数であることのみ仮定する(これらは、等しく、符号なし変数であり得る)。
そのような「連鎖」シーケンスのためのコードシーケンスを生成するための好適なルールセットは、以下である。
1. 結果は、常時、「連鎖」内の最終の個々の比較のための好適な条件によって、反映される。
2. 連鎖「シーケンス」が、単一個々の比較のみ含む場合、その2つのオペランドに無条件比較(CMP)命令を使用する(図7Aおよび7Bのステップ214参照)。無条件比較命令は、比較結果に応じて、図8の条件状態のうちの1つをもたらすように定義される。
3. そうでなければ、連鎖シーケンスは、ある付加的個々の比較と論理積または論理和演算される、より短い連鎖シーケンスから成る。
4. 連鎖シーケンスが、ある付加的比較と論理積演算される、より短い連鎖シーケンスから成る場合、(図7Aおよび7Bのステップ206参照)より短い連鎖シーケンスのための命令シーケンスをもたらし、以下をさらに付け加える。
CCMPcond,op1,op2,#imm
ここでは、condは、合格する時、より短い連鎖シーケンスによってもたらされる条件であって、op1およびop2は、付加的比較のための2つのオペランドであって、immは、付加的比較からの所望の「失敗」結果に対応する、N、Z、C、V条件フラグ値の任意のセットである。
これは、より短い連鎖シーケンスが、その「失敗」条件をもたらす場合、付加的比較が、その独自の「失敗」条件をもたらし、より短い連鎖シーケンスが、その「合格」条件をもたらす場合、付加的比較が、付加的比較において、論理積演算を行うための正しい挙動である、個々の試験の結果に応じて、その独自の「失敗」結果またはその独自の「合格」結果のいずれかをもたらすことを確実にする。
5. 連鎖シーケンスが、付加的比較と論理和演算される、より短い連鎖シーケンスから成る場合、(図7Aおよび7Bのステップ208参照)より短い連鎖シーケンスのための命令シーケンスをもたらし、以下をさらに付け加える
CCMPcond,op1,op2,#imm
ここでは、condは、失敗される時、より短い連鎖シーケンスによってもたらされる条件であって、op1およびop2は、付加的比較のための2つのオペランドであって、
immは、付加的比較からの所望の「合格」結果に対応する、N、Z、C、V条件フラグ値の任意のセットである。
より短い連鎖シーケンスが、その「合格」条件をもたらす場合、付加的比較が、その独自の「合格」条件をもたらし、より短い連鎖シーケンスが、その「失敗」条件をもたらす場合、付加的比較は、付加的比較内で論理和演算を行うための正しい挙動である、個々の試験の結果に応じて、その独自の「失敗」結果またはその独自の「合格」結果のいずれかをもたらすことを確実にする。
(((s==t&&u>=0)||a!=b)&&c>d)のためのコードシーケンスを生成する前述の実施形態に対して、これを示す。
シーケンスの最終比較は、符号なし>であって、したがって、ルール1に従って、合格する(すなわち、真である)場合、図8のHI条件をもたらし、失敗する(すなわち、偽である)場合、図8のLS条件をもたらすことを目的とする。故に、目的は、以下となる。
...コードシーケンスについては未定...
//Now have HI if(((s==t&&u>=0)||a!=b)&&c>d)
//is TRUE,LS otherwise
連鎖シーケンス(((s==t&&u>=0)||a!=b)&&c>d)は、付加的比較c>dと論理積演算される、より短い連鎖シーケンス((s==t&&u>=0)||a!=b)である。前述のルール4に従う。
*より短い連鎖シーケンスは、その最終比較として、a!=試験を有し、したがって、合格する場合、NE条件をもたらす。
*付加的比較の所望の「失敗」結果は、LS=(C=0)||(Z=1)である。
その条件を満たす、フラグのNZCVセットの任意の値、例えば、NZCV=0b0000を取り上げる。
次いで、コードシーケンスは、以下に対して、1つのステップで展開することができる。
...コードシーケンスについては未定...
//Now have NE if((s==t&&u>=0)||a!=b)is TRUE,EQ
//otherwise
CCMP NE,Rc,Rd,#0b0000
//Now have HI if(((s==t&&u>=0)||a!=b)&&c>d)
//is TRUE,LS otherwise
連鎖シーケンス((s==t&&u>=0)||a!=b)は、付加的比較a!=bと論理和演算される、より短い連鎖シーケンス(s==t&&u>=0)である。前述のルール5に従う。
*より短い連鎖シーケンスは、その最終比較として、符号付き>=試験を有し、したがって、失敗する場合、LT条件をもたらす。
*付加的比較の所望の「合格」結果は、NE=(Z==0)である。その条件を満たすフラグのNZCVセットの任意の値、例えば、NZCV=0b0000を取り上げる。
次いで、コードシーケンスは、以下に対して、第2のステップで展開することができる。
...コードシーケンスについては未定...
//Now have GE if(s==t&&u>=0)is TRUE、LT otherwise
CCMP LT,Ra,Rb,#0b0000
//Now have NE if((s==t&&u>=0)||a!=b)is TRUE,EQ
//otherwise
CCMP NE,Rc,Rd,#0b0000
//Now have HI if(((s==t&&u>=0)||a!=b)&&c>d)
//is TRUE,LS otherwise
連鎖シーケンス(s==t&&u>=0)は、付加的比較u>=0と論理積演算される、より短い連鎖「シーケンス」s==tである。前述のルール4に従う。
*より短い連鎖シーケンスは、その最終比較として、==試験を有し、したがって、合格する場合、EQ条件をもたらす。
*付加的比較の所望の「失敗」結果は、LT=(N!=V)である。その条件を満たす、フラグのNZCVセットの任意の値、例えば、NZCV=0b0001を取り上げる。
次いで、コードシーケンスは、以下に対して、第3のステップで展開することができる。
...コードシーケンスについては未定...
//Now have EQ if s==t is TRUE,NE otherwise
CCMP EQ,Ru,#0,#0b0001
//Now have GE if(s==t&&u>=0)is TRUE,LT otherwise
CCMP LT,Ra,Rb,#0b0000
//Now have NE if((s==t&&u>=0)||a!=b)is TRUE,EQ
//otherwise
CCMP NE,Rc,Rd,#0b0000
//Now have HI if(((s==t&&u>=0)||a!−b)&&c>d)
//is TRUE,LS otherwise
最後に、連鎖「シーケンス」s==tは、単一比較のみであって、したがって、前述のルール2に従って、前述のように、それに対して、無条件比較命令を使用する。これは、フルコードシーケンスをもたらす。
CMP Rs,Rt
//Now have EQ if s==t is TRUE,NE otherwise
CCMP EQ,Ru,#0、#0b0001
//Now have GE if(s==t&&u>−0)is TRUE,LT otherwise
CCMP LT,Ra,Rb,#0b0000
//Now have NE if((s==t&&u>=0)||a!=b)is TRUE,EQ
//otherwise
CCMP NE,Rc,Rd,#0b0000
//Now have HI if(((s==t&&u>=0)||a!=b)&&c>d)
//is TRUE,LS otherwise
前述の技法は、所望の論理式を、式を評価するためのプログラム命令のシーケンスに変換するために、コンパイラによって行われてもよい。命令は、正しいプログラム順序で出力される限り、任意の特定の順序で判定または生成される必要はなく、したがって、生成方法の異なる実施形態も可能である(図7Aおよび7B参照)。
前述の実施形態では、失敗条件状態は、状態レジスタ15内の条件コードに書き込まれるべきビット値の組み合わせを指定する即値として、命令構文によって指定される。
しかしながら、代替として、構文は、図8に示されるように、HI、LS、PL等の条件ニーモニック(サフィックス)として、失敗条件状態を指定することができる。この命令形式では、次いで、プログラマは、失敗条件状態に所望される条件ニーモニックを指定してもよく、アセンブラは、命令をアセンブルする時、これを特定の即値に変換してもよい。故に、命令デコーダ14の観点から、命令の視点は、他の実施形態と同一であるが、プログラマの視点から、命令構文は、異なる条件状態の意味が、条件コード値からより、ニーモニックからより明白に理解することができるため、より直感的である。
特定の条件ニーモニックに応答して、アセンブラは、ニーモニックによって示される条件状態を保持させるように、条件フラグに書き込むことができる、任意の失敗条件状態値を選択してもよい。同一条件に対応する複数の可能性として考えられる即値が存在する場合、アセンブラは、条件に対応する値を選択するためのルールが提供されてもよい。例えば、アセンブラは、ソースコードが、毎回、同様にアセンブルされることを確実にするために、最大または最小利用可能値を選択し得る。例えば、図8では、EQ状態を満たす最大可能値は、0b1111である(Zビットセットを伴う)。
したがって、失敗条件状態が、条件ニーモニックとして指定される実施形態では、前述の実施形態で判定される最終命令シーケンスは、以下のように現れ得る。
CMP Rs,Rt
//Now have EQ if s==t is TRUE,NE otherwise
CCMP EQ,Ru,#0、LT
//Now have GE if(s==t&&u>=0)is TRUE,LT otherwise
CCMP LT,Ra,Rb,NE
//Now have NE if((s==t&&u>=0)||a!=b)is TRUE,EQ
//otherwise
CCMP NE,Rc,Rd,LS
//Now have HI if(((s==t&&u>=0)||a!=b)&&c>d)
//is TRUE,LS otherwise
図9は、使用され得る、仮想マシン実装を図示する。前述の実施形態は、当該技法をサポートする、具体的処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装するが、また、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートする、ホストオペレーティングシステム520を起動する、ホストプロセッサ530上で起動する。典型的には、大型の強力なプロセッサが、合理的速度で実装する、仮想マシン実装を提供するために要求されるが、そのようなアプローチは、互換性または再利用の理由から、別のプロセッサにネイティブなコードを起動することが所望される時等、ある状況において、正当化され得る。仮想マシンプログラム510は、仮想マシンプログラム510によってモデル化されているデバイスである、実際のハードウェアによって提供される、アプリケーションプログラムインターフェースと同一である、アプリケーションプログラム500に、アプリケーションプログラムインターフェースを提供する。したがって、前述のメモリアクセスの制御を含む、プログラム命令は、仮想マシンプログラム510を使用して、仮想マシンハードウェアとのその相互作用をモデル化する、アプリケーションプログラム500内から実行されてもよい。
図10は、図8に示される条件状態に対する、任意の拡張子を示す。図10の実施形態では、処理回路4は、条件付き比較命令による排他的使用のためのものである、所定の条件状態MZを含む、いくつかの異なる条件状態のいずれかに設定することができる。処理装置は、通常処理演算の結果として、MZ条件状態に置くことはできない。MZ条件状態は、その失敗条件状態として、MZ条件状態を指定する条件付き比較命令が、その試験条件に失敗する場合のみ、生じる。図10の実施形態では、MZ状態は、設定されている、NおよびZフラグによって表され、「−ゼロ(マイナスゼロ)」結果を示す。「−ゼロ」結果は、ゼロおよび負の両方ではなく、ゼロまたは負のいずれかである、結果を生成するため、通常処理演算から生じることができない。図10はまた、MZ状態の逆数を示す、OK状態を示す。故に、OK状態は、NおよびZフラグのいずれかがクリアである場合、満たされる。
MZ状態は、命令に、先の条件付き比較命令が、その試験条件に合格または失敗したかどうかを試験させるため、有用である。失敗条件状態として、MZ状態を指定する条件付き比較命令が、実行されてもよい。次いで、後続条件付き命令は、条件フラグが、MZ状態またはOK状態にあるかどうか試験してもよい。条件フラグが、MZ状態にある場合、条件付き比較命令は、その試験条件に失敗する一方、条件フラグが、OK状態にある場合、条件付き比較命令は、その試験条件に合格する。
図11は、失敗条件状態として、MZ状態を指定する条件付き比較命令が、どのように、変数Xを所与の範囲BOTからTOP内に制約するために使用することができるかの実施形態を示す。Xが、許容可能範囲BOTからTOP内にある場合、Xは、その元の値を留保する。Xが、TOPより大きい場合、Xは、TOPに等しく設定される一方、Xが、BOTより小さい場合、Xは、BOTに等しく設定される。故に、Xは、その最大可能性値がTOPであって、その最小可能値がBOTであるように、制約される。
図11は、Xの値における本制約を実装するための例示的な命令のシーケンスを示す。最初に、比較命令CMP X、TOPが実行され、XおよびTOPの値の比較をトリガする。次いで、条件フラグは、比較の結果に基づいて、更新される。X<TOPの場合、条件フラグは、LT条件状態に設定される一方、X≧TOPの場合、条件フラグは、GE条件状態に設定される。
次に、条件付き比較命令CCMP LT、X、BOT、MZが実行される。LT試験条件に合格する場合、XおよびBOTが比較され、条件フラグが、比較結果に基づいて、LTおよびGE条件状態のうちの1つに更新される。一方、LT試験条件に失敗する場合、条件フラグは、MZ状態に置かれる。
次に、条件付き選択命令CSEL、MZ、X、TOP、Xが実行される。MZ試験条件に合格する場合、Xは、TOPの値を有するように選択される一方、そうでなければ、Xは、その元の値を留保する。最後に、条件付き選択命令CSEL LT、X、BOT、Xが実行される。LT試験条件に合格する場合、Xは、BOTの値を有するように選択される一方、そうでなければ、Xは、その元の値を留保する。
図11は、X<BOT、BOT≦X≦TOP、およびTOP≦Xである場合のXの可能性として考えられる結果を示す。MZ状態は、CCMP命令が、その試験条件(LT)に失敗する結果としてのみ生じ得るため、MZ状態の発生は、X≧TOPを示す。MZ状態が、生じなかった場合、CCMPは、その試験条件に合格し、したがって、X<TOPである。次いで、Xが、BOT未満である、またはBOT以上であるかどうかが、LTまたはGE条件状態が、CCMP命令の実行後に生じたかどうかから判定することができる。
図10および11は、その試験条件に失敗する条件付き比較命令によってのみ設定することができる、条件状態が、MZ「−ゼロ」状態であって、NおよびZフラグの両方とも設定される、実施形態を示す。しかしながら、他の実施形態では、通常処理の際に生じることができない、条件フラグ値の任意の組み合わせが、MZ状態の代わりに、使用されてもよい。
図10の実施形態では、MZ状態は、図8に示される「常時」AL状態を置換し、4ビット識別子を使用して識別することができる、合計16個の利用可能条件状態を提供する。他の実施形態では、AL状態およびMZ状態の両方が、提供されてもよいことを理解される。
本発明の例証的実施形態が、付随の図面を参照して、本明細書において、詳細に説明されたが、本発明は、それらの詳細な実施形態に限定されず、種々の変更および修正が、添付の請求項によって定義される、発明の範囲から逸脱することなく、当業者によって、行うことができることを理解されたい。
2 データ処理装置
4 処理回路
6 レジスタバンク
8 加算器
10 シフタ
12 乗算器
14 命令デコーダ
15 状態記憶装置、状態レジスタ
500 アプリケーションプログラム
510 仮想マシンプログラム
520 ホストオペレーティングシステム
530 ホストプロセッサ

Claims (20)

  1. データ処理装置であって、
    データを処理するための処理回路と、
    プログラム命令に応答して、前記データを処理するように、前記処理回路を制御するための制御信号を生成する、命令デコーダと、
    前記処理回路の現在の条件状態を記憶するための状態記憶装置であって、前記現在の条件状態は、前記データの処理の際、修正可能である、状態記憶装置と、
    を備え、前記プログラム命令は、条件付き比較命令を含み、前記命令デコーダは、前記条件付き比較命令に応答して、
    (i)前記現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
    (ii)前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
    を含む、条件付き比較演算を行うように、前記処理回路を制御するための制御信号を生成する、データ処理装置。
  2. 前記状態記憶装置は、状態レジスタを備える、請求項1に記載のデータ処理装置。
  3. 前記現在の条件状態は、前記状態記憶装置内に記憶された少なくとも1つの条件コードフラグの値を備える、請求項1および2のいずれかに記載のデータ処理装置。
  4. 前記条件付き比較命令は、前記試験条件を指定するためのフィールドを含む、請求項1から3のいずれか一項に記載のデータ処理装置。
  5. 前記失敗条件状態は、前記条件付き比較命令によって、即値として指定される、請求項1から4のいずれか一項記載のデータ処理装置。
  6. 前記即値は、前記条件付き比較命令を備える、プログラムのプログラマによって設定される、プログラム可能値である、請求項5に記載のデータ処理装置。
  7. 前記即値は、前記条件付き比較命令を備えるプログラムのコンパイラによって設定される、プログラム可能値であって、前記コンパイラは、前記条件付き比較命令のための前記失敗条件状態によって合格されるべき所望の条件に応じて、前記プログラム可能値を選択する、請求項5に記載のデータ処理装置。
  8. 前記失敗条件状態は、Nビットの失敗条件状態値として指定され、Nは、ゼロより大きい任意の整数であって、前記現在の条件状態は、Nビットの値によって表され、
    前記命令デコーダは、前記現在の条件状態が、前記試験条件に失敗する場合、前記Nビットの失敗条件状態値を前記状態記憶装置に書き込むように、前記処理回路を制御する、
    請求項1から7のいずれか一項に記載のデータ処理装置。
  9. 前記現在の条件状態は、所定の条件状態を含む、複数の条件状態のうちのいずれかに設定可能であって、
    前記現在の条件状態は、前記試験条件が、前記失敗条件状態として、前記所定の条件状態を指定する条件付き比較命令に失敗する場合、前記所定の条件状態にのみ設定することができる、
    請求項1から8のいずれか一項に記載のデータ処理装置。
  10. 前記条件付き比較命令は、前記第1のオペランドおよび前記第2のオペランドを指定するための第1および第2のオペランドフィールドを含む、請求項1から9のいずれか一項請求項に記載のデータ処理装置。
  11. 前記第1および第2のオペランドフィールドのうちの少なくとも1つは、前記第1のオペランドまたは前記第2のオペランドを記憶する、記憶場所を指定する、請求項10に記載のデータ処理装置。
  12. 前記命令デコーダは、前記第1および第2のオペランドフィールドのうちの少なくとも1つに応答して、ゼロの値を有する前記第1および第2のオペランドのうちの対応する1つによって、前記条件付き比較演算を行うように、前記処理回路を制御するためのビット値の所定の組み合わせを指定する、請求項11に記載のデータ処理装置。
  13. 前記第1および第2のオペランドフィールドのうちの1つは、前記第1のオペランドまたは前記第2のオペランドとして、即値を指定する、請求項10から12のいずれかの請求項に記載のデータ処理装置。
  14. 前記比較演算は、
    (a)前記第2のオペランドを前記第1のオペランドから減算すること、
    (b)前記第1のオペランドを前記第2のオペランドに加算すること、
    (c)ビット排他論理和演算を前記第1のオペランドおよび前記第2のオペランドに行うこと、
    (d)ビット論理積演算を前記第1のオペランドおよび前記第2のオペランドに行うこと、
    (e)前記第1のオペランド、前記第2のオペランド、および前記状態記憶装置の桁上げビットを加算すること、
    (f)ビット論理和演算を前記第1のオペランドおよび前記第2のオペランドに行うこと、
    のうちの任意の1つを含む、請求項1から13のいずれか一項に記載のデータ処理装置。
  15. データ処理装置であって、
    データを処理するための処理手段と、
    プログラム命令に応答して、制御信号を生成するための命令デコーダ手段であって、前記制御信号は、前記データを処理するように、前記処理手段を制御するためのものである、命令デコーダ手段と、
    前記処理手段の現在の条件状態を記憶するための状態記憶手段であって、前記現在の条件状態は、前記データの処理の際、修正可能である、状態記憶手段と、
    を備え、前記プログラム命令は、条件付き比較命令を含み、前記命令デコーダ手段は、前記条件付き比較命令に応答して、
    (i)前記現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
    (ii)前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
    を含む、条件付き比較演算を行うように、前記処理手段を制御するための制御信号を生成する、データ処理装置。
  16. データ処理方法であって、
    条件付き比較命令を含む、プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成するステップと、
    前記処理回路の現在の条件状態を記憶するステップであって、前記現在の条件状態は、前記データの処理の際、修正可能である、ステップと、
    前記条件付き比較命令に応答して、
    (i)前記現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
    (ii)前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
    を含む、条件付き比較演算を行うように、前記処理回路を制御するための制御信号を生成するステップと、
    を含む、方法。
  17. データ処理装置による実行のためのプログラム命令のシーケンスをコンパイルする方法であって、
    前記プログラム命令のシーケンスは、
    2つのオペランドに無条件比較演算を行い、前記データ処理装置の現在の条件状態を前記無条件比較演算の際に生成された結果の条件状態に設定するように、前記データ処理装置を制御するための無条件比較命令と、
    (i)前記データ処理装置の前記現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、(ii)前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、を含む、条件付き比較演算を行うように、前記データ処理装置を制御するための少なくとも1つの条件付き比較命令と、を含み、
    前記方法は、
    (a)1つ以上の論理積または論理和演算を使用して、論理的に組み合わせられたN個の比較演算の連鎖シーケンスを定義する、データの入力を受信するステップであって、Nは、1より大きい整数であって、前記N個の比較演算はそれぞれ、個別のオペランドが、個別の所定の基準を満たすかどうかを試験する、ステップと、
    (b)前記連鎖シーケンスの第1の比較演算に対応する前記無条件比較命令を生成するステップと、
    (c)2とNとの間のiの各整数値に対して、
    (i)前記連鎖シーケンスのi番目の比較演算が、論理積演算または論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうか判定する段階であって、前記部分的連鎖シーケンスは、前記連鎖シーケンスの前記第1の比較演算から(i−1)番目の比較演算を備える段階と、
    (ii)前記i番目の比較演算が、論理積演算を使用して、前記部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、前記i番目の比較演算に対応する条件付き比較命令を生成する段階であって、前記条件付き比較命令は、前記試験条件として、前記(i−1)番目の比較演算の前記所定の基準が満たされる時、合格される条件を指定し、前記失敗条件状態として、満たされていない、前記i番目の比較演算の前記所定の基準に対応する条件状態を指定する段階と、
    (iii)前記i番目の比較演算が、論理和演算を使用して、前記部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、前記i番目の比較演算に対応する条件付き比較命令を生成するステップであって、前記条件付き比較命令は、前記試験条件として、前記(i−1)番目の比較演算の前記所定の基準が満たされない時、合格する条件を指定し、前記失敗条件状態として、満たされている、前記i番目の比較演算の前記所定の基準に対応する条件状態を指定する段階と、
    を行う、ステップと、
    (d)プログラム命令のシーケンスとして、ステップ(b)で生成された少なくとも前記無条件比較命令と、ステップ(c)で生成された(N−1)個の前記条件付き比較命令と、を出力するステップと、
    を含む、方法。
  18. データ処理装置で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項1から14のいずれかに記載のデータ処理装置に従って、命令実行環境を提供する、仮想マシン。
  19. コンピュータによって実行されると、請求項17の方法を行うように、前記コンピュータを制御する、コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体。
  20. コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体であって、
    前記コンピュータプログラムは、条件付き比較演算を行うように、処理回路を制御するための条件付き比較命令を備え、
    前記条件付き比較演算は、
    (i)前記処理回路の現在の条件状態が、試験条件に合格する場合、第1のオペランドおよび第2のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
    (ii)前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
    を含む、非一時的コンピュータ記憶媒体。
JP2013509616A 2010-05-11 2011-04-12 条件付き比較命令 Active JP5646737B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1007890.5 2010-05-11
GB1007890A GB2480285A (en) 2010-05-11 2010-05-11 Conditional compare instruction which sets a condition code when it is not executed
GB1017144.5 2010-10-12
GB1017144.5A GB2480338B (en) 2010-05-11 2010-10-12 Conditional compare instruction
PCT/GB2011/050719 WO2011141726A2 (en) 2010-05-11 2011-04-12 Conditional compare instruction

Publications (2)

Publication Number Publication Date
JP2013530450A true JP2013530450A (ja) 2013-07-25
JP5646737B2 JP5646737B2 (ja) 2014-12-24

Family

ID=42315168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013509616A Active JP5646737B2 (ja) 2010-05-11 2011-04-12 条件付き比較命令

Country Status (10)

Country Link
US (1) US9383999B2 (ja)
EP (1) EP2569694B1 (ja)
JP (1) JP5646737B2 (ja)
KR (1) KR101731238B1 (ja)
CN (1) CN102893254B (ja)
GB (2) GB2480285A (ja)
IL (1) IL222551A0 (ja)
MY (1) MY156502A (ja)
TW (1) TWI501148B (ja)
WO (1) WO2011141726A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539882A (ja) * 2010-10-12 2013-10-28 エイアールエム リミテッド データ要素の条件付き選択

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US20160092398A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
GB2540216B (en) * 2015-07-10 2020-01-01 Advanced Risc Mach Ltd Comparison of wide data types
CN106201935A (zh) * 2016-06-28 2016-12-07 田彬 用于处理存储队列中数据相关的装置及方法
US10761979B2 (en) * 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
GB2556079A (en) * 2016-11-17 2018-05-23 Kumar Oberoi Bhushan Magic card trick
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
US11709676B2 (en) 2021-08-19 2023-07-25 International Business Machines Corporation Inferring future value for speculative branch resolution
US20230072105A1 (en) * 2021-08-31 2023-03-09 Intel Corporation Bfloat16 comparison instructions

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773149A (ja) * 1993-03-31 1995-03-17 Motorola Inc データ処理システムとその方法
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
JP2001265592A (ja) * 2000-03-17 2001-09-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6505345B1 (en) * 2000-01-18 2003-01-07 Intel Corporation Optimization of initialization of parallel compare predicates in a computer system
US6732356B1 (en) * 2000-03-31 2004-05-04 Intel Corporation System and method of using partially resolved predicates for elimination of comparison instruction
JP2006209805A (ja) * 2006-04-28 2006-08-10 Matsushita Electric Ind Co Ltd プロセッサ
JP2007272353A (ja) * 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP2008537231A (ja) * 2005-04-14 2008-09-11 クゥアルコム・インコーポレイテッド 条件付き命令が無条件で出力を提供するシステム及び方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
JPH0827816B2 (ja) * 1991-09-13 1996-03-21 日本電気株式会社 ファジー三段論法推論システム
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JP3843594B2 (ja) * 1998-04-08 2006-11-08 松下電器産業株式会社 プロセッサ、コンパイラ及び命令列変換装置
US6009512A (en) 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
TWI226015B (en) * 1999-08-31 2005-01-01 Matsushita Electric Ind Co Ltd Digital signal processor and control method of the same
TW569136B (en) 2002-05-09 2004-01-01 Ip First Llc Apparatus and method for conditional instruction execution
JP3851228B2 (ja) * 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
JP3958662B2 (ja) 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US7581088B1 (en) * 2003-12-30 2009-08-25 Altera Corporation Conditional execution using an efficient processor flag
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
JP2008305185A (ja) 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US8332620B2 (en) * 2008-07-25 2012-12-11 Freescale Semiconductor, Inc. System, method and computer program product for executing a high level programming language conditional statement
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
CN101593096B (zh) 2009-05-22 2011-11-16 西安交通大学 一种共享寄存器相关性消除的实现方法
US8549504B2 (en) * 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
JPH0773149A (ja) * 1993-03-31 1995-03-17 Motorola Inc データ処理システムとその方法
US5790854A (en) * 1993-03-31 1998-08-04 Motorola Inc. Efficient stack utilization for compiling and executing nested if-else constructs in a vector data processing system
US6505345B1 (en) * 2000-01-18 2003-01-07 Intel Corporation Optimization of initialization of parallel compare predicates in a computer system
JP2001265592A (ja) * 2000-03-17 2001-09-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6732356B1 (en) * 2000-03-31 2004-05-04 Intel Corporation System and method of using partially resolved predicates for elimination of comparison instruction
JP2008537231A (ja) * 2005-04-14 2008-09-11 クゥアルコム・インコーポレイテッド 条件付き命令が無条件で出力を提供するシステム及び方法
JP2007272353A (ja) * 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP2006209805A (ja) * 2006-04-28 2006-08-10 Matsushita Electric Ind Co Ltd プロセッサ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539882A (ja) * 2010-10-12 2013-10-28 エイアールエム リミテッド データ要素の条件付き選択
US9753724B2 (en) 2010-10-12 2017-09-05 Arm Limited Conditional selection of data elements
US9983872B2 (en) 2010-10-12 2018-05-29 Arm Limited Conditional selection of data elements

Also Published As

Publication number Publication date
GB2480338B (en) 2013-07-31
CN102893254A (zh) 2013-01-23
JP5646737B2 (ja) 2014-12-24
EP2569694A2 (en) 2013-03-20
GB201007890D0 (en) 2010-06-23
TW201203101A (en) 2012-01-16
WO2011141726A2 (en) 2011-11-17
GB201017144D0 (en) 2010-11-24
IL222551A0 (en) 2012-12-31
CN102893254B (zh) 2015-11-25
KR101731238B1 (ko) 2017-04-28
EP2569694B1 (en) 2020-12-16
GB2480338A (en) 2011-11-16
MY156502A (en) 2016-02-26
US9383999B2 (en) 2016-07-05
GB2480285A (en) 2011-11-16
TWI501148B (zh) 2015-09-21
WO2011141726A3 (en) 2012-04-12
KR20130100900A (ko) 2013-09-12
US20130097408A1 (en) 2013-04-18

Similar Documents

Publication Publication Date Title
JP5646737B2 (ja) 条件付き比較命令
JP5897696B2 (ja) データ処理装置および方法
JP6971220B2 (ja) スプライス演算を行うための装置および方法
US11307855B2 (en) Register-provided-opcode instruction
KR20180066146A (ko) 벡터 데이터 전송 명령어
KR102256188B1 (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
CN108780395B (zh) 矢量预测指令
US9965275B2 (en) Element size increasing instruction
CN107851016B (zh) 向量算术指令
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
KR20180067582A (ko) 벡터 로드 명령어
JP4686435B2 (ja) 演算装置
KR20200028965A (ko) 데이터 처리장치에서의 벡터 인터리빙
JP6803390B2 (ja) 第1のアーキテクチャレジスタ番号および第2のアーキテクチャレジスタ番号を識別する符号化命令
JP5732139B2 (ja) データ要素の条件付き選択
JP2021515929A (ja) データ処理
JP2022021554A (ja) アセンブリ命令変換プログラム、アセンブリ命令変換方法、及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140917

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: 20141006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646737

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