JP2006526813A - データ処理システムにおけるプリディケーション命令 - Google Patents

データ処理システムにおけるプリディケーション命令 Download PDF

Info

Publication number
JP2006526813A
JP2006526813A JP2005500494A JP2005500494A JP2006526813A JP 2006526813 A JP2006526813 A JP 2006526813A JP 2005500494 A JP2005500494 A JP 2005500494A JP 2005500494 A JP2005500494 A JP 2005500494A JP 2006526813 A JP2006526813 A JP 2006526813A
Authority
JP
Japan
Prior art keywords
instruction
predication
program instructions
condition
executed
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
JP2005500494A
Other languages
English (en)
Other versions
JP3917635B2 (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 JP2006526813A publication Critical patent/JP2006526813A/ja
Application granted granted Critical
Publication of JP3917635B2 publication Critical patent/JP3917635B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/30181Instruction operation extension or modification
    • 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
    • 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, look ahead

Abstract

データ処理システム(2)内において、関連するプログラム命令(26、28)に条件付き動作を追加するプリディケーション命令(30)が設けられる。

Description

本発明は、データ処理システムの分野に関する。より詳しくは、本発明は、そのようなデータ処理システムにおけるプログラム命令の条件付き実行に関する。
前の処理オペレーションの結果に応じて条件付きで実行されまたは実行されないプログラム命令を含む命令セットに応答するデータ処理システムを提供することが知られている。一例として、ARM32ビット命令セットは、全ての命令が、条件が実行を阻止するかまたは許可するかを指定する4ビット条件コードフィールドを含む完全条件付きである。
完全条件付き32ビットARM命令セットはその条件付き動作において強力であるが、各命令内の条件コードに専用の4ビットは、命令セットのビットコーディングスペースのかなりの部分に相当する。多くの場合、条件コードの全ての機能が利用されるとは限らず、かつこれらの条件コードに専用の4ビットはよく使用されるわけではない。
また、ARMプロセッサによってサポートされるThumb命令セットのような条件なし命令セットを提供することが知られている。条件コードに命令ビットスペースを専用にしないことにより、Thumb命令をより小さくし、それによってコード密度を向上させることが可能となる。しかし、このアプローチの不利な点は、あるオペレーションを実行するために必要な命令数がおそらくより大きく、かつ32ビットARM命令セットの条件コードを利用することができないのでその結果として処理がより遅いことである。
命令の結果に応じて次の命令を取り消すことが可能である命令を提供するPA−RISCプロセッサのような他のプロセッサが知られている。そのような命令の例は、比較される数が等しいかまたは等しくないかに応じて、実行される次に続く命令を阻止するかまたは許可するかのいずれかとする比較オペレーションである。そのような次を取り消す形態の命令は有用であるが、それら自身の処理に応じて次の命令を取り消す役割を果たすのみであり、柔軟性が限られている。
一形態から見て、本発明は、データを処理するための装置を提供し、前記装置は、データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を具備し、前記命令デコーダは、プリディケーション(predication)命令に応答して、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する。
本発明は、所定目的のプリディケーション命令の提供は、これらがより柔軟に指定することが可能であるプロセッサの条件状態に応じて他の命令の実行を条件付きとすることが可能である点において非常に効果的であり得ると認識する。従って、プログラマおよびコンパイラは、より小さく、かつより高速なプログラムを生成するためにそのようなプリディケーション命令をよりよく活用することが可能である。
プリディケーション命令は、ただ1つの他の命令に作用することが可能であるが、好ましい実施形態において、プリディケーション命令は、複数の関連するプログラム命令の実行を制御するために提供される。
プリディケーション命令は、部分的または全体的に条件付きである関連するプログラム命令とともに使用することが可能であるが、本発明の好ましい実施形態は、プリディケーション命令が条件なしの関連するプログラム命令とともに使用されるものである。従って、プリディケーション命令は、条件なし命令セットに条件付き命令動作を追加することが可能である。
プリディケーション命令が関連するプログラム命令の制御の根拠とする条件状態は各種の異なる形式をとることが可能であるが、好ましい実施形態は、プリディケーション命令に入力を提供するために、例えば、ゼロフラグ、イコールフラグ、キャリーフラグ等のような条件コードフラグを使用する。
関連するプログラム命令を制御するためにプリディケーション命令によって評価される条件状態は、特定のシステムの要求に応じて異なる時点で評価することが可能である。条件状態はプリディケーション命令の実行時に一度評価することが可能であり、かつその評価の結果は関連するプログラム命令の全てを制御するために使用される。これは、命令パイプラインにおいて早期にプリディケーション命令を十分に評価し、かつその後、実行を速め、かつ実行を簡単にする方法で命令パイプラインからプリディケーション命令を除去することを可能とする効果を有する。上記の代わりに、条件状態が、例えば、いくつかの関連する命令については適合とし、かつ他の関連する命令については不適合とすることが可能であるように、個々の関連するプログラム命令の実行に先立って条件状態を評価することも可能である。このアプローチは、そのような条件付き命令動作とともに実装することが望ましい多くの共通的な形態のデータ処理オペレーションによく適した方法で、条件付き動作のよりよい程度の制御を可能とする効果を有する。
関連する命令は、プリディケーション命令への様々な異なる相対位置を有することが可能であるが、好ましい実施形態は、関連するプログラム命令がプリディケーション命令の直後に続くものである。これは、実装およびプログラミングのために好都合である。
様々な異なる方法で関連するプログラム命令を制御するようにプリディケーション命令を構成することも可能である。1つの可能な実施形態において、関連するプログラム命令は、条件コードが適合であるときに実行される1つのブロックと、条件コードが不適合であるときに実行される他のブロックとの2つの命令ブロックに構成される。これは、If・・・Then・・・Elseの命令形式と同様な動作を提供することが可能である。
そのような実施形態において、異なる命令のブロックは固定サイズとすることが可能であるが、プリディケーション命令それ自体の中のフィールドによって指定される可変サイズとすることが好ましい。これは、ブロックサイズを柔軟にし、分岐およびプリディケーション命令の他の動作の制御を簡便にし、かつコード密度を向上させることを可能とする。
プリディケーション命令は所定状態の特定の集合に専用とすることが可能であるが、好ましい実施形態において、プリディケーション命令は所定条件を指定することが可能である変数フィールドを含む。
効果的な程度の柔軟性を与え、かつ特にそれらの条件コードを適合および不適合とする命令のインターリーブを可能とするもう1つの形態のプリディケーション命令は、プリディケーション命令が、1つまたは複数の条件状態と1つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する1つまたは複数のフィールドを含むものである。
より詳細に好ましい実施形態において、プリディケーション命令は、個々の関連するプログラム命令が実行されるか否かを決定するために、1つまたは複数の条件状態または1つまたは複数の条件状態の補数(complement)が所定状態と比較されるか否かを、前記個々の関連する命令の各々について指定するフィールドを含むことが可能である。従って、個々の関連するプログラム命令は、「Then」条件または「Else」条件のいずれかにおいて実行されるように指定することが可能である。
処理システムの制御を容易にするために、通常のプログラムカウンタレジスタは、プリディケーション命令に従う1つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた(predicated)命令のカウンタレジスタによって補完される。プリディケーション命令は、実際上、いくつの関連するプログラム命令を制御するかを指定する、その中にエンコードされた到達範囲を有し、かつシステムは、この到達範囲の中で実行がどこまで進んだか、およびいつこの到達範囲を越えたかを追跡する必要がある。
このプリディケートされた命令のカウンタレジスタは、特に、例外および例外からの復帰の処理において有効であり、例外からの復帰において、プリディケートされた命令のカウンタレジスタはリストアされ、かつその値は復帰するプログラム命令が前のプリディケーション命令によって作用を受ける動作を有するか否かを決定するために使用することが可能である。
プリディケーション命令に応じて関連するプログラム命令が実行されるかまたは実行されないかを制御するとともに、プリディケーション命令は、それらが実行されるときに異なるオペレーションを有するように関連する命令を変更するために使用することも可能である。これは、命令セットを効果的に拡張するものと理解することが可能である。
関連するプログラム命令を変更する特に好ましい方法は、所定のプログラム可能なフィールドを含む特定のプリディケーション命令に従うときに、1つまたは複数の条件状態にいかなる変更をすることも阻止することである。従って、条件コードフラグの更新は、適切なプリディケーション命令によって阻止することが可能である。
一形態から見て、本発明は、データ処理の方法を提供し、前記方法は、データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、を有し、前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する。
さらなる形態から見て、本発明は、データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を有するデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品であって、前記コンピュータプログラムはプリディケーション命令を含み、前記プリディケーション命令は、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する動作が可能である。
ここで、添付図面を参照して、例のみを通して、本発明の実施形態について説明する。
図1は、プログラムレジスタバンク4、乗算器6、シフタ8、加算器10、命令デコーダ12、命令パイプライン14、先取りユニット16、割り込みコントローラ18、プログラムカウンタレジスタ20およびプリディケーション命令カウンタレジスタ22を含むプロセッサコア2の形態におけるデータ処理装置を表わす。プロセッサコア2は、典型的には、この技術分野の当業者によく知られた多くの他の回路素子を含むが、これらの回路素子は明瞭のため図1から省略されていると理解すべきである。
オペレーションにおいて、プログラム命令Iが(図示しない)メモリから取り込まれ、かつ命令パイプライン14に供給され、そこで、この技術分野の当業者によく知られた、取り込み、デコードおよび実行のような各種のパイプラインステージを通過する。命令パイプライン14のデコードステージからの命令は、命令デコーダ12に供給され、そこで、乗算器6、シフタ8、加算器10および(図示しない)ALUのような他の回路素子によって、プログラムレジスタバンク4から読み出されたデータの値に対して、プログラムレジスタバンク4に書き戻される結果の値を生成するために、実行されるデータ処理演算/操作を構成および制御する制御信号を生成する役割を果たす。先取りユニット16は、プログラム命令Iを命令パイプライン14に取り込むために用いられる命令アドレスの生成を制御する役割を果たす。(プログラムレジスタバンク4内のプログラムレジスタの1つとすることが可能である)プログラムカウンタレジスタ20は、実行される現在の命令のアドレス値、または、この値への所定のオフセット(例えば、+4)を有するアドレスを供給する。また、コンテクストレジスタ22も、先取りユニット16に値を供給し、これは、実行が例外の発生によって割り込まれたとしても、プリディケーション命令に従う関連するプログラム命令の部分的に完了したシーケンスがプリディケーション命令によって依然として作用を受けるように、割り込みコントローラ18によって制御されるものとして、割り込みから戻るときに用いられる。
図2は、プリディケーション命令ITがプログラム命令のストリームにおいて命令デコーダ12に与えられる第1実施形態を表わす図である。命令デコーダ12がそのようなプリディケーション命令を検出すると、命令デコーダ12はそれをデコードし、かつ有効に命令ストリーム内のプリディケーション命令に続く関連するプログラム命令に条件コードを付加する。この実施形態において命令ストリーム内のプログラム命令は、通常、対応する条件コードを有しない16ビットThumb命令のような、通常、条件なし命令であると理解すべきである。しかし、Thumb命令セットをサポートするプロセッサは、完全条件付き32ビットARM命令セットもサポートする。このARM命令セットからの命令がデコードされているとき、続くこれらの命令の実行または非実行に作用させるために、これらは全て命令デコーダ12から命令パイプライン14へ渡される条件コードを含む。従って、命令パイプライン14は、既に条件コードを認識し、かつプログラム命令に対応付けられた条件コードを解釈し、かつ応答するための構造および機構を有する。全体として、プリディケーション命令ITは、それ自身が命令ストリームから取り去られるまで、命令ストリーム内でそれに続く1つまたは複数の関連するプログラム命令に条件コードを付加する役割を果たし、この条件コード情報の付加以外の処理機能を果たさないと理解される。
図3は、図2に示すプリディケーション命令ITをより詳細に表わす。特に、この命令は、IT命令に続く1、2、3または4のいずれのプログラム命令がそのプリディケーションに従うか、および、従うならば適用される条件コードの極性を示す、条件コード「cond」およびマスク値「xyz」を指定する。条件コードまたは条件コードの補数は、それぞれ2番目に続く、3番目に続く、4番目に続く関連するプログラム命令およびそのフラグの値のために、対応する値x、y、zが存在するか否かに応じて適用することが可能である。図3は、値x、y、zが値「1」で終了するマスク値24をどのように構成するかを表わす。
図4は、プリディケーション命令によって4つの関連する命令がプリディケートされたような命令の例を表わす。これらの命令の1番目は、条件コードが適合したときに実行されるように「Then」形式においてプリディケートされたと判断される。2番目、3番目、4番目の関連する命令は、「Then」条件または「Else」条件のいずれかにおいて実行されることを指定することが可能である。この例において、4つの関連するプログラム命令は、Then、Then、ElseおよびThenの形式を有する。マスク値24の中で、2番目、3番目および4番目の関連する命令のためのマスク値ビットx、y、zはそれぞれ0、1、0であり、かつマスク値は値「1」で終了する。
この例において指定された条件コードは「1010」である。この条件コードは、その通常の形式において1番目の関連する命令に適用される。そして、マスク値は1つの位置だけ左にシフトされ、かつマスク値のシフトアウトされた最上位ビットは、次の命令に適用される条件コードの最下位ビットの位置にシフトされる。従って、次の命令に適用される条件コードは、マスク値の中の最上位ビットに応じて、その通常の形式とその補数の形式との間で切り換えることが可能である。この例において、プリディケーション命令に続く3番目の命令は条件コードの補数に従う一方、プリディケーション命令に続く1番目、2番目および4番目の命令は、通常の条件コードに従うと理解される。マスク値「1000」が検出されると、これは、最後のプリディケートされた命令に到達し、かつプリディケーション命令の作用を続くプログラム命令に拡張しないことを示す。
図3および図4に示す形態の命令のさらなる説明は以下の通りである。
IT
このIf−Then(IT)命令は、メモリ内の次のN個の命令を条件付きにする。IT命令に続き、かつその作用を受けるN個の命令の集合は「ITブロック」として理解するべきである。
それらがITブロック内で実行されるとき、いくつか(または全て)の命令の機能を再定義することが可能である。例えば、CMP/CMN/TST以外のThumb 16ビット命令はフラグをセットしないことが可能である。そのような場合、ITは、それ自身の後に作用を受けるAL条件とともに用いることが可能である。
特別なPSRビット(または専用IT状態レジスタ)は、ITの状態を保持するために用いることが可能である。これはITブロック内での割り込みを可能とする。
下記の例は4命令の最大ITブロックサイズを有するThumb 16ビットIT命令を定義する。ITブロック内の全ての命令は、同じ条件でプリディケートされ、または条件のバージョン(すなわち、EQまたはNE等)が保持される。
Thumb IT
構文規則
IT{<x>{<y>{<z>}}} <cond>
ここで、
<x>は、存在するならば、文字「T」および「E」のうちの1つであり、かつ2番目の続く命令がIT命令の作用を受けることを示す。<x>が「T」(「Then」)ならば、その命令に結び付けられた条件は<cond>であり、<x>が「E」ならば、<cond>の最下位ビットの論理反転によって得られた<cond>の反転である。<x>が省略される(従って<y>および<z>も省略される)ならば、ただ1つの続く命令がIT命令の作用を受ける。
<y>は、存在するならば、文字「T」および「E」のうちの1つであり、かつ3番目の続く命令がIT命令の作用を受けることを示す。<y>が「T」(「Then」)ならば、その命令に結び付けられた条件は<cond>であり、<y>が「E」ならば、<cond>の最下位ビットの論理反転によって得られた<cond>の反転である。<y>が省略される(従って<z>も省略される)ならば、3つより少ない続く命令がIT命令の作用を受ける。
<z>は、存在するならば、文字「T」および「E」のうちの1つであり、かつ4番目の続く命令がIT命令の作用を受けることを示す。<z>が「T」(「Then」)ならば、その命令に結び付けられた条件は<cond>であり、<z>が「E」ならば、<cond>の最下位ビットの論理反転によって得られた<cond>の反転である。<z>が省略されるならば、4つより少ない続く命令がIT命令の作用を受ける。
<cond>は、1番目の続く命令に適用される条件であり、かつ<x>、<y>および<z>によって指定されるようにさらに続く命令に適用することも可能である。
<x>、<y>および<z>の値は、下記の表に従って命令のマスクフィールドの値を決定する。
Figure 2006526813
注釈:この構文規則の基本概念は、例えば、「ITTET EQ」は、(ニーモニックにおいて「T」の位置によって示された)1番目、2番目および4番目の続く命令はそれらに結び付けられたEQ条件を有し、かつ(「E」によって示された)3番目はそれに結び付けられたNE条件を有することを表わす、ということである。
Figure 2006526813
8つのIT実行状態ビットは、下記のように256の「命令間の状態」のうちの1つをエンコードする。
Figure 2006526813
続く実行におけるこれらのビットの効果は次の通りである。
MRSおよびSRS命令は、これらのビットを正常に読み出す。MRS命令は、それらを正常にSPSRに書き込むが、上述したように、CPSRに書き込むときに、書き込まれている値は無視する。既存の例外復帰命令(「SPSRからCPSRへのコピー」の副作用によるもの)およびRFE命令は、これも上述したように、それらを正常にCPSRに書き込む。
ARMおよびJava(登録商標)状態例外の間、これらのビットはゼロでなければならない(すなわち、これらがゼロでなければ、結果は「予測不可能」である)。
例外エントリシーケンスは、これらのビットをCPSRからSPSRへコピーさせ、かつ(JおよびTとともに)CPSRにおいてクリアされ、プロセッサを通常のARM例外に復帰させる。
Thumb状態例外の間、下記の通りである。
1.IT命令が実行されるとき、これらのビットはゼロでなければならない。(すなわち、IT命令は、他のIT命令の作用を受ける命令ブロック内に存在することが禁止される。)
2.条件付き分岐命令が実行されるとき、ビット[26,25,11,10]はゼロでなければならない。(すなわち、条件付き分岐命令は、IT命令の作用を受ける命令ブロック内に存在することが禁止される。条件なし分岐命令はそこに存在することが可能であるが、条件付きとして扱われる。この規則は、基本的に、同じ命令が2つの条件を有することによって生じる問題を防止するために存在する。)
3.上記の規則によって「予測不可能」とならない全ての命令のために、下記のように、条件が現在の「実行状態」ビットから生成される。
Figure 2006526813
さらに、CMP、CMNまたはTST命令でなく、かつ、通常、条件フラグをセットする16ビットThumbデータ処理命令は、下記のように修正される。
Figure 2006526813
注釈:多数の命令シーケンスを制御するためにITが有用であることが必須である。例えば、ITが、LDR Rn;ADD Rn,Rn,#M;STR Rnのシーケンスを条件付きとするために使用される場合、ADDがSTR命令によって参照される条件フラグを変更するならばITは無用である。
注釈:これは、AL条件(またはNV条件)を有するIT命令が1番目から4番目の続く命令によるそのようなフラグ設定を阻止するために使用することが可能であるという系(corollary)を有する。現在のThumb命令セットの不便な側面の1つは、事後挿入される(late-inserted)コード(例えば、spill/fillコード)が条件フラグを破壊する副作用を有する可能性があることである。これを単一の特別な16ビット命令とともに扱うことが可能であることは、たいへん有用である。
4.任意のPCを変更する命令の成功した(すなわち、どのような条件検査も不適合でなかった)実行は、新たな「実行状態」ビットを下記のようにする。
例外復帰命令(SPSRからCPSRへのコピーを行い、かつ特権モードで実行されるRFEを行うもの)については:
CPSRに書き込まれた値のビット[26,25,15:10]。
それ以外は:
全てゼロ。
注釈:「それ以外」の場合は、ITを単に静的に続く命令に作用させる基本規則である。
そのようなPCを変更する命令の成功しなかった実行、またはPCを変更しない、ITでない命令の(成功したまたは成功しなかった)任意の実行は、新たな「実行状態」ビットを下記のように更新する。
Figure 2006526813
注釈:
1.分岐。注釈した以外、ITブロック内のどのような命令も、分岐命令またはPCを変更するいくつかの他の命令のいずれの結果としても、どのような分岐のターゲットとなることも許可されない。この制限に従うことができなければ、結局、「予測不可能」な動作に帰着する可能性がある。
2.例外。割り込みおよび他の例外は、命令とそのITブロックとの間、またはITブロック内で発生する可能性がある。通常のように、結局それらは、適切なモードのR14およびSPSRにおいて配置された適当な復帰情報とともに開始される割り込みハンドラに帰着する。例外復帰に用いるために設計された命令は、例外から復帰するために通常通り使用され、かつITブロックの実行を正しく再開することが可能である。これは、PCを変更する命令がITブロック内の命令に分岐することを可能とする唯一の方法である。
3.ITブロック。ITブロック内の命令は、
・IT命令
・条件付き分岐命令
であることは許されない。
そうである場合、結果は「予測不可能」となる。
図5は、もう1つの形態のプリディケーション命令を表わす図である。この形態のプリディケーション命令において、プリディケーション命令30に対応付けられた関連するプログラム命令の2つのブロック26、28が存在する。これらのうち1番目の命令ブロック26は、プリディケーション命令30において指定された条件コードが適合であり、かつ「Ifブロック」が呼び出された場合に実行される。他の命令ブロック28は、プリディケーション命令30に対応付けられた条件コードが不適合であり、かつ「Elseブロック」が呼び出された場合に実行される。プリディケーション命令30は、それぞれ長さが1〜4命令からなることが可能であるこれら2つのブロック26、28のサイズを指定する。図5の例において、Ifブロック26またはElseブロック28のいずれかが実行される。この例は、一旦プリディケーション命令30が実行されると条件コードが有効に評価され、かつその評価結果が関連するプログラム命令の全てをプリティケートするために適用されるものである。従って、Ifブロック26全体が実行されるか、または代わりにElseブロック28全体が実行される。コンテクストレジスタ22(μPC)がIfブロックの最後に到達したことを示すと、分岐はElseブロック28の最後の命令に続く命令に強制的に進められる。Elseブロック28の最後の命令に到達すると、プリディケーション命令30の効果は除去される。
図6は、図5に示す形態のオペレーションに従うシステムの動作フロー図である。ステップ32において、システムは、プリディケーション命令(ITE命令)を識別するために待つ。ステップ34において、システムは、現在のプログラムステータスレジスタ内に格納されるコンテクストカウンタ値が非ゼロであるか否かを識別する。そのような非ゼロ値は、復帰が例外から行われたことを示し、従ってステップ36においてコンテクスト値が受け取られ、かつ現在のプログラムステータスレジスタ内に格納され、かつプリディケーション命令内において指定された条件コードが評価されるステップ38へ処理を進める。上記の代わりに、判定ステップ34がnoの結果である場合、ステップ40においてコンテクスト値はゼロにセットされる。ステップ38における条件コード評価の判定が条件コード不適合ならば、これは、Elseブロック28を実行しなければならず、従ってステップ42はプログラムカウンタ値をElseブロック28内の最初の命令に進め、そしてステップ44で終了されるプリディケーション命令を有するElseブロック28を実行することを示す。上記の代わりに、ステップ38において評価された条件コードが適合ならば、ステップ46は、コンテクスト値と合計されたPC値によって位置付けられる命令を実行し、かつ命令バイト長によってコンテクスト値を増加させる。
ステップ48は、例外の発生を検査し、そのような例外が存在するならば、ステップ50はコンテクスト値(プリディケーション命令カウント値)を含む現在のプログラムステータスレジスタを保存し、割り込みを受け入れ、割り込み処理ルーチンを実行し、最後に、プログラムカウンタ値PCによって示される命令、すなわちプリディケーション命令に続く命令へ復帰する役割を果たす。
ステップ52は、分岐の発生を検査し、そのような分岐が発生すると、ステップ54はプログラムカウンタ値を分岐ターゲットに変更し、かつステップ44はプリディケーション命令の動作を終了させる。
ステップ56は、プリディケーション命令カウンタ値が、Ifブロック26の最後に到達したことを示すIfブロックサイズに到達したか否かを検査する。Ifブロック26の最後に到達すると、ステップ58は、プログラムカウンタ値をElseブロックの最後を越えるまで移動させる役割を果たし、かつステップ44においてプリディケーション命令の動作が終了した後に通常の処理を再開させる。そうでなければ、処理は、Ifブロック内の次の命令が実行されるステップ46に復帰する。
図5および図6に示す命令の動作の他の説明は下記の通りである。
ITE
このIf−Then−Else(ITE)命令は、条件が適合であるときに実行される命令ブロックのサイズ(このブロックは命令の直後に位置する)、および条件が不適合であるときに実行される命令ブロックのサイズ(このブロックは「if」ブロックの直後に位置する)を指定することを可能とする。
ITEコンテクストビットの数は、PSRまたは他の特別なレジスタにおいて保持されなければならない。これらのビットをPSR_uPCと呼ぶ。PSR_uPCビットの正確な数は、「if」ブロックの可能な最大サイズを決定する。
Figure 2006526813
注釈:
1.分岐。ITEの「if」セクション内のいかなる命令も、分岐命令またはPCを変更するいくつかの他の命令のいずれの結果としても、どのような分岐のターゲットとなることも許可されない。この制限に従うことができなれば、結局、「予測不可能」な動作に帰着する可能性がある。
2.例外。割り込みおよび他の例外は、「If」ブロック内の命令間で発生する可能性がある。通常のように、結局それらは、特定の例外モードのR14およびSPSRにおいて配置された適当な復帰情報とともに開始される割り込みハンドラに帰着する。例外復帰に用いるために設計された命令は、例外から復帰するために、通常、用いることが可能であり、かつ「if」ブロックの実行を正しく再開する。これは、PCを変更する命令が「if」ブロック内の命令に分岐することを可能とする唯一の方法である。
図5および図6に表わされたIfブロック26およびElseブロック28を利用するプリディケーション命令の例外の形態の変形例として、すなわち、一旦プリディケーション命令30が実行されると条件コードが評価される変形例、関連する命令が実行されるとき、プリディケーション命令30によって作用を受ける各々の関連するプログラム命令のために条件コードが評価される変形例は、下記のような動作によって表わすことが可能である。
Figure 2006526813
上記から、例においてプリディケーション命令は、3つの関連するプログラム命令を含むIfブロックおよび1つの関連するプログラム命令を含むElseブロックを指定することが理解される。これらのプログラム命令の各々とともに有効に指定される条件コードは、CPSR_cond値によって表わされる。Elseブロックから抜けたとき、5番目の命令はプリディケートされておらず、かつそのような条件なし命令に対応する通常の方法で条件なしで実行される。
プリディケーション命令を含むプログラム命令を実行する動作が可能なデータ処理装置を表わす図である。 プリディケーション命令に応答する命令デコーダの動作を表わす図である。 個々の関連するプログラム命令がマスク値および条件コードに応じて実行されるかまたは実行されないかのいずれかであるように制御されるプリディケーション命令の一形態を表わす図である。 個々の関連するプログラム命令がマスク値および条件コードに応じて実行されるかまたは実行されないかのいずれかであるように制御されるプリディケーション命令の一形態を表わす図である。 条件コードに応じて実行されるかまたは実行されないかのいずれかである関連する命令のブロックにおけるもう1つの形態のプリディケーション命令を表わす図である。 図5に示す形態のプリディケーション命令に従う実行の制御を表わすフロー図である。 上記技術を実装するための汎用的なコンピュータ機器の図である。
符号の説明
2 プロセッサコア
4 プログラムレジスタバンク
6 乗算器
8 シフタ
10 加算器
12 命令デコーダ
14 命令パイプライン
16 先取りユニット
18 割り込みコントローラ
20 プログラムカウンタレジスタ
22 プリディケーション命令カウンタレジスタ

Claims (50)

  1. データを処理するための装置であって、
    データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、
    前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、
    を具備し、
    前記命令デコーダは、プリディケーション(predication)命令に応答して、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する装置。
  2. 前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項1に記載の装置。
  3. 前記1つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項1に記載の装置。
  4. 前記1つまたは複数の条件状態は、1つまたは複数の条件コードフラグの値を含む請求項1から3のいずれか1項に記載の装置。
  5. 前記1つまたは複数の条件状態は、
    (1)前記プリディケーション命令の実行時に一度、および
    (2)各々の関連するプログラム命令を実行する前、
    のうち一方において評価される請求項1から4のいずれか1項に記載の装置。
  6. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項1から5のいずれか1項に記載の装置。
  7. 前記プリディケーション命令は、
    (1)前記1つまたは複数の条件状態が1つまたは複数の所定状態に適合するならば実行される1つまたは複数のプログラム命令の条件適合ブロック、および
    (2)前記1つまたは複数の条件状態が前記1つまたは複数の所定状態に適合しないならば実行される1つまたは複数のプログラム命令の条件不適合ブロック、
    に対応付けられる請求項1から6のいずれか1項に記載の装置。
  8. 前記プリディケーション命令は、
    (1)前記1つまたは複数のプログラム命令の条件適合ブロックの長さ、および
    (2)前記1つまたは複数のプログラム命令の条件不適合ブロックの長さ、
    のうち1つまたは複数を指定する請求項7に記載の装置。
  9. 前記プリディケーション命令は、前記1つまたは複数の所定状態を指定する請求項7および8のいずれか1項に記載の装置。
  10. 前記プリディケーション命令は、前記1つまたは複数の条件状態と1つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する1つまたは複数のフィールドを含む請求項1から6のいずれか1項に記載の装置。
  11. 前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記1つまたは複数の条件状態または前記1つまたは複数の条件状態の補数(complement)が前記1つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項10に記載の装置。
  12. 実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項1から11のいずれか1項に記載の装置。
  13. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた(predicated)命令のカウンタレジスタを含む請求項1から12のいずれか1項に記載の装置。
  14. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項12および13に記載の装置。
  15. 例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項13に記載の装置。
  16. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項1から15のいずれか1項に記載の装置。
  17. 前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記1つまたは複数の関連するプログラム命令が前記1つまたは複数の条件状態にいかなる変更をすることも阻止される請求項16に記載の装置。
  18. データを処理する方法であって、
    データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、
    前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、
    を有し、
    前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する、データを処理する方法。
  19. 前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項18に記載の方法。
  20. 前記1つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項18に記載の方法。
  21. 前記1つまたは複数の条件状態は、1つまたは複数の条件コードフラグの値を含む請求項18から20のいずれか1項に記載の方法。
  22. 前記1つまたは複数の条件状態は、
    (1)前記プリディケーション命令の実行時に一度、および
    (2)各々の関連するプログラム命令を実行する前、
    のうち一方において評価される請求項18から21のいずれか1項に記載の方法。
  23. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項18から22のいずれか1項に記載の方法。
  24. 前記プリディケーション命令は、
    (1)前記1つまたは複数の条件状態が1つまたは複数の所定状態に適合するならば実行される1つまたは複数のプログラム命令の条件適合ブロック、および
    (2)前記1つまたは複数の条件状態が前記1つまたは複数の所定状態に適合しないならば実行される1つまたは複数のプログラム命令の条件不適合ブロック、
    に対応付けられる請求項18から23のいずれか1項に記載の方法。
  25. 前記プリディケーション命令は、
    (1)前記1つまたは複数のプログラム命令の条件適合ブロックの長さ、および
    (2)前記1つまたは複数のプログラム命令の条件不適合ブロックの長さ、
    のうち1つまたは複数を指定する請求項24に記載の方法。
  26. 前記プリディケーション命令は、前記1つまたは複数の所定状態を指定する請求項24および25のいずれか1項に記載の方法。
  27. 前記プリディケーション命令は、前記1つまたは複数の条件状態と1つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する1つまたは複数のフィールドを含む請求項18から23のいずれか1項に記載の方法。
  28. 前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記1つまたは複数の条件状態または前記1つまたは複数の条件状態の補数が前記1つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項27に記載の方法。
  29. 実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項18から28のいずれか1項に記載の方法。
  30. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた命令のカウンタレジスタを含む請求項18から29のいずれか1項に記載の方法。
  31. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項29および30に記載の方法。
  32. 例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項30に記載の方法。
  33. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項18から32のいずれか1項に記載の方法。
  34. 前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記1つまたは複数の関連するプログラム命令が前記1つまたは複数の条件状態にいかなる変更をすることも阻止される請求項33に記載の方法。
  35. データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を有するデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品であって、
    前記コンピュータプログラムはプリディケーション命令を含み、
    前記プリディケーション命令は、前記プリディケーション命令以外の1つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の1つまたは複数の条件状態に応じて、前記データ処理ロジックが1つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する動作が可能であるコンピュータプログラム製品。
  36. 前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項35に記載のコンピュータプログラム製品。
  37. 前記1つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項35に記載のコンピュータプログラム製品。
  38. 前記1つまたは複数の条件状態は、1つまたは複数の条件コードフラグの値を含む請求項35から37のいずれか1項に記載のコンピュータプログラム製品。
  39. 前記1つまたは複数の条件状態は、
    (1)前記プリディケーション命令の実行時に一度、および
    (2)各々の関連するプログラム命令を実行する前、
    のうち一方において評価される請求項1から4のいずれか1項に記載のコンピュータプログラム製品。
  40. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項35から39のいずれか1項に記載のコンピュータプログラム製品。
  41. 前記プリディケーション命令は、
    (1)前記1つまたは複数の条件状態が1つまたは複数の所定状態に適合するならば実行される1つまたは複数のプログラム命令の条件適合ブロック、および
    (2)前記1つまたは複数の条件状態が前記1つまたは複数の所定状態に適合しないならば実行される1つまたは複数のプログラム命令の条件不適合ブロック、
    に対応付けられる請求項35から40のいずれか1項に記載のコンピュータプログラム製品。
  42. 前記プリディケーション命令は、
    (1)前記1つまたは複数のプログラム命令の条件適合ブロックの長さ、および
    (2)前記1つまたは複数のプログラム命令の条件不適合ブロックの長さ、
    のうち1つまたは複数を指定する請求項41に記載のコンピュータプログラム製品。
  43. 前記プリディケーション命令は、前記1つまたは複数の所定状態を指定する請求項41および42のいずれか1項に記載のコンピュータプログラム製品。
  44. 前記プリディケーション命令は、前記1つまたは複数の条件状態と1つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する1つまたは複数のフィールドを含む請求項35から40のいずれか1項に記載のコンピュータプログラム製品。
  45. 前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記1つまたは複数の条件状態または前記1つまたは複数の条件状態の補数が前記1つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項44に記載のコンピュータプログラム製品。
  46. 実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項35から45のいずれか1項に記載のコンピュータプログラム製品。
  47. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた命令のカウンタレジスタを含む請求項35から46のいずれか1項に記載のコンピュータプログラム製品。
  48. 前記プリディケーション命令に従う前記1つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項46および47に記載のコンピュータプログラム製品。
  49. 例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項47に記載のコンピュータプログラム製品。
  50. 前記1つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項35から49のいずれか1項に記載のコンピュータプログラム製品。
JP2005500494A 2003-06-05 2003-12-30 データ処理システムにおけるプリディケーション命令 Expired - Lifetime JP3917635B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0312977A GB2402510A (en) 2003-06-05 2003-06-05 Predication instruction within a data processing system
PCT/GB2003/005674 WO2004109499A2 (en) 2003-06-05 2003-12-30 Predication instruction within a data processing system

Publications (2)

Publication Number Publication Date
JP2006526813A true JP2006526813A (ja) 2006-11-24
JP3917635B2 JP3917635B2 (ja) 2007-05-23

Family

ID=9959411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005500494A Expired - Lifetime JP3917635B2 (ja) 2003-06-05 2003-12-30 データ処理システムにおけるプリディケーション命令

Country Status (12)

Country Link
US (1) US7178011B2 (ja)
EP (1) EP1629375B1 (ja)
JP (1) JP3917635B2 (ja)
KR (1) KR101016713B1 (ja)
CN (1) CN100483336C (ja)
AU (1) AU2003290350A1 (ja)
DE (1) DE60323885D1 (ja)
GB (1) GB2402510A (ja)
MY (1) MY138874A (ja)
RU (1) RU2005137695A (ja)
TW (1) TWI314701B (ja)
WO (1) WO2004109499A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008530693A (ja) * 2005-02-10 2008-08-07 クゥアルコム・インコーポレイテッド 条件評価のためのエミッサリ(emissary)命令を介した条件付命令実行
JP2009070378A (ja) * 2007-09-17 2009-04-02 Internatl Business Mach Corp <Ibm> アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
JP2014532248A (ja) * 2012-09-21 2014-12-04 インテル コーポレイション バイナリトランスレーションを実行する方法及びシステム

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
JP4159586B2 (ja) * 2006-08-03 2008-10-01 エヌイーシーコンピュータテクノ株式会社 情報処理装置および情報処理の高速化方法
US7971104B2 (en) * 2006-10-24 2011-06-28 Shlomi Dolev Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
US7818551B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps
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
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8819399B1 (en) * 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
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
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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
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)
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
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
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
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
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
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US10261793B2 (en) 2011-12-16 2019-04-16 International Business Machines Corporation Instruction predication using instruction address pattern matching
US9465613B2 (en) * 2011-12-19 2016-10-11 International Business Machines Corporation Instruction predication using unused datapath facilities
US9632779B2 (en) 2011-12-19 2017-04-25 International Business Machines Corporation Instruction predication using instruction filtering
US9632786B2 (en) * 2011-12-20 2017-04-25 International Business Machines Corporation Instruction set architecture with extended register addressing using one or more primary opcode bits
US9389868B2 (en) * 2012-11-01 2016-07-12 International Business Machines Corporation Confidence-driven selective predication of processor instructions
US9304771B2 (en) 2013-02-13 2016-04-05 International Business Machines Corporation Indirect instruction predication
US9626185B2 (en) 2013-02-22 2017-04-18 Apple Inc. IT instruction pre-decode
US9792121B2 (en) 2013-05-21 2017-10-17 Via Technologies, Inc. Microprocessor that fuses if-then instructions
FR3021432B1 (fr) * 2014-05-20 2017-11-10 Bull Sas Processeur a instructions conditionnelles
US20170212763A1 (en) * 2014-07-25 2017-07-27 Hewlettt Packard Enterprise Development Lp Exception handling predicate register
US10607003B2 (en) * 2017-06-29 2020-03-31 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US11275712B2 (en) 2019-08-20 2022-03-15 Northrop Grumman Systems Corporation SIMD controller and SIMD predication scheme
CN113254082B (zh) * 2021-06-23 2021-10-08 北京智芯微电子科技有限公司 条件分支指令处理方法及系统、cpu、芯片
CN113254083B (zh) * 2021-06-28 2021-11-02 北京智芯微电子科技有限公司 指令处理方法、指令处理系统及处理器、芯片
KR102571809B1 (ko) * 2021-08-03 2023-08-25 연세대학교 산학협력단 전자기 과도 상태 시뮬레이션 방법 및 기록 매체

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62259140A (ja) 1986-05-06 1987-11-11 Oki Electric Ind Co Ltd アドレス生成回路
DE4430195B4 (de) * 1993-12-13 2004-09-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren zur Auswertung von Booleschen Ausdrücken
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
US6640315B1 (en) * 1999-06-26 2003-10-28 Board Of Trustees Of The University Of Illinois Method and apparatus for enhancing instruction level parallelism
US6910123B1 (en) * 2000-01-13 2005-06-21 Texas Instruments Incorporated Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
JP3532835B2 (ja) 2000-07-04 2004-05-31 松下電器産業株式会社 データ処理装置およびプログラム変換装置
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US7017032B2 (en) * 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008530693A (ja) * 2005-02-10 2008-08-07 クゥアルコム・インコーポレイテッド 条件評価のためのエミッサリ(emissary)命令を介した条件付命令実行
JP4903720B2 (ja) * 2005-02-10 2012-03-28 クゥアルコム・インコーポレイテッド 条件評価のためのエミッサリ(emissary)命令を介した条件付命令実行
JP2009070378A (ja) * 2007-09-17 2009-04-02 Internatl Business Mach Corp <Ibm> アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US9946550B2 (en) 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
JP2014532248A (ja) * 2012-09-21 2014-12-04 インテル コーポレイション バイナリトランスレーションを実行する方法及びシステム

Also Published As

Publication number Publication date
TW200428276A (en) 2004-12-16
WO2004109499A2 (en) 2004-12-16
WO2004109499A3 (en) 2005-10-13
KR101016713B1 (ko) 2011-02-25
EP1629375A2 (en) 2006-03-01
AU2003290350A8 (en) 2005-01-04
US20040250051A1 (en) 2004-12-09
AU2003290350A1 (en) 2005-01-04
CN1788253A (zh) 2006-06-14
TWI314701B (en) 2009-09-11
DE60323885D1 (de) 2008-11-13
EP1629375B1 (en) 2008-10-01
US7178011B2 (en) 2007-02-13
CN100483336C (zh) 2009-04-29
RU2005137695A (ru) 2006-06-27
MY138874A (en) 2009-08-28
JP3917635B2 (ja) 2007-05-23
KR20060063790A (ko) 2006-06-12
GB2402510A (en) 2004-12-08
GB0312977D0 (en) 2003-07-09

Similar Documents

Publication Publication Date Title
JP3917635B2 (ja) データ処理システムにおけるプリディケーション命令
JP6807383B2 (ja) 転送プレフィックス命令
EP0211152A2 (en) Program switching with vector registers
JP7002462B2 (ja) ベクトル述語命令
JP2006079652A (ja) 多重命令セットによるデータ処理
JPH1185515A (ja) マイクロプロセッサ
JPH0769795B2 (ja) コンピュータ
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
KR102307581B1 (ko) 레지스터 복구 분기 명령
JPS6250934A (ja) 処理装置の割込制御方式
JP5233078B2 (ja) プロセッサ及びその処理方法
JP5732139B2 (ja) データ要素の条件付き選択
JP6882320B2 (ja) ベクトル命令の処理
JP3619343B2 (ja) データ処理装置と方法
WO2023188905A1 (ja) 情報処理装置、及び情報処理装置の動作制御方法
CN100590591C (zh) 选择性地控制条件码回写的装置及方法
EP0211487A1 (en) Conditional operations in computers
JPH04338825A (ja) 演算処理装置
WO2007048988A1 (en) A data processing apparatus and method for handling procedure call instructions
JPS63247833A (ja) 条件分岐命令制御方法
JPH04167027A (ja) 並列演算処理装置
JPH01319863A (ja) ベクトルマスク制御方式
JPH01319864A (ja) ベクトルマスクの制御方式
JP2005134987A (ja) パイプライン演算処理装置
JP2002073326A (ja) プログラム実行装置及びプログラム実行方法

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070208

R150 Certificate of patent or registration of utility model

Ref document number: 3917635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100216

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110216

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120216

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130216

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140216

Year of fee payment: 7

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

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

EXPY Cancellation because of completion of term