(57)【要約】  データ処理システム（２）内において、関連するプログラム命令（２６、２８）に条件付き動作を追加するプリディケーション命令（３０）が設けられる。
2006526813.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、
前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、
を具備し、
前記命令デコーダは、プリディケーション（predication）命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する装置。
【請求項２】
前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項１に記載の装置。
【請求項３】
前記１つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項１に記載の装置。
【請求項４】
前記１つまたは複数の条件状態は、１つまたは複数の条件コードフラグの値を含む請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記１つまたは複数の条件状態は、
（１）前記プリディケーション命令の実行時に一度、および
（２）各々の関連するプログラム命令を実行する前、
のうち一方において評価される請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記プリディケーション命令は、
（１）前記１つまたは複数の条件状態が１つまたは複数の所定状態に適合するならば実行される１つまたは複数のプログラム命令の条件適合ブロック、および
（２）前記１つまたは複数の条件状態が前記１つまたは複数の所定状態に適合しないならば実行される１つまたは複数のプログラム命令の条件不適合ブロック、
に対応付けられる請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記プリディケーション命令は、
（１）前記１つまたは複数のプログラム命令の条件適合ブロックの長さ、および
（２）前記１つまたは複数のプログラム命令の条件不適合ブロックの長さ、
のうち１つまたは複数を指定する請求項７に記載の装置。
【請求項９】
前記プリディケーション命令は、前記１つまたは複数の所定状態を指定する請求項７および８のいずれか１項に記載の装置。
【請求項１０】
前記プリディケーション命令は、前記１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含む請求項１から６のいずれか１項に記載の装置。
【請求項１１】
前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記１つまたは複数の条件状態または前記１つまたは複数の条件状態の補数（complement）が前記１つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項１０に記載の装置。
【請求項１２】
実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた（predicated）命令のカウンタレジスタを含む請求項１から１２のいずれか１項に記載の装置。
【請求項１４】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項１２および１３に記載の装置。
【請求項１５】
例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項１３に記載の装置。
【請求項１６】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項１から１５のいずれか１項に記載の装置。
【請求項１７】
前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記１つまたは複数の関連するプログラム命令が前記１つまたは複数の条件状態にいかなる変更をすることも阻止される請求項１６に記載の装置。
【請求項１８】
データを処理する方法であって、
データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、
前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、
を有し、
前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する、データを処理する方法。
【請求項１９】
前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項１８に記載の方法。
【請求項２０】
前記１つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項１８に記載の方法。
【請求項２１】
前記１つまたは複数の条件状態は、１つまたは複数の条件コードフラグの値を含む請求項１８から２０のいずれか１項に記載の方法。
【請求項２２】
前記１つまたは複数の条件状態は、
（１）前記プリディケーション命令の実行時に一度、および
（２）各々の関連するプログラム命令を実行する前、
のうち一方において評価される請求項１８から２１のいずれか１項に記載の方法。
【請求項２３】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項１８から２２のいずれか１項に記載の方法。
【請求項２４】
前記プリディケーション命令は、
（１）前記１つまたは複数の条件状態が１つまたは複数の所定状態に適合するならば実行される１つまたは複数のプログラム命令の条件適合ブロック、および
（２）前記１つまたは複数の条件状態が前記１つまたは複数の所定状態に適合しないならば実行される１つまたは複数のプログラム命令の条件不適合ブロック、
に対応付けられる請求項１８から２３のいずれか１項に記載の方法。
【請求項２５】
前記プリディケーション命令は、
（１）前記１つまたは複数のプログラム命令の条件適合ブロックの長さ、および
（２）前記１つまたは複数のプログラム命令の条件不適合ブロックの長さ、
のうち１つまたは複数を指定する請求項２４に記載の方法。
【請求項２６】
前記プリディケーション命令は、前記１つまたは複数の所定状態を指定する請求項２４および２５のいずれか１項に記載の方法。
【請求項２７】
前記プリディケーション命令は、前記１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含む請求項１８から２３のいずれか１項に記載の方法。
【請求項２８】
前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記１つまたは複数の条件状態または前記１つまたは複数の条件状態の補数が前記１つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項２７に記載の方法。
【請求項２９】
実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項１８から２８のいずれか１項に記載の方法。
【請求項３０】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた命令のカウンタレジスタを含む請求項１８から２９のいずれか１項に記載の方法。
【請求項３１】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項２９および３０に記載の方法。
【請求項３２】
例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項３０に記載の方法。
【請求項３３】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項１８から３２のいずれか１項に記載の方法。
【請求項３４】
前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記１つまたは複数の関連するプログラム命令が前記１つまたは複数の条件状態にいかなる変更をすることも阻止される請求項３３に記載の方法。
【請求項３５】
データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を有するデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品であって、
前記コンピュータプログラムはプリディケーション命令を含み、
前記プリディケーション命令は、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する動作が可能であるコンピュータプログラム製品。
【請求項３６】
前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項３５に記載のコンピュータプログラム製品。
【請求項３７】
前記１つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項３５に記載のコンピュータプログラム製品。
【請求項３８】
前記１つまたは複数の条件状態は、１つまたは複数の条件コードフラグの値を含む請求項３５から３７のいずれか１項に記載のコンピュータプログラム製品。
【請求項３９】
前記１つまたは複数の条件状態は、
（１）前記プリディケーション命令の実行時に一度、および
（２）各々の関連するプログラム命令を実行する前、
のうち一方において評価される請求項１から４のいずれか１項に記載のコンピュータプログラム製品。
【請求項４０】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項３５から３９のいずれか１項に記載のコンピュータプログラム製品。
【請求項４１】
前記プリディケーション命令は、
（１）前記１つまたは複数の条件状態が１つまたは複数の所定状態に適合するならば実行される１つまたは複数のプログラム命令の条件適合ブロック、および
（２）前記１つまたは複数の条件状態が前記１つまたは複数の所定状態に適合しないならば実行される１つまたは複数のプログラム命令の条件不適合ブロック、
に対応付けられる請求項３５から４０のいずれか１項に記載のコンピュータプログラム製品。
【請求項４２】
前記プリディケーション命令は、
（１）前記１つまたは複数のプログラム命令の条件適合ブロックの長さ、および
（２）前記１つまたは複数のプログラム命令の条件不適合ブロックの長さ、
のうち１つまたは複数を指定する請求項４１に記載のコンピュータプログラム製品。
【請求項４３】
前記プリディケーション命令は、前記１つまたは複数の所定状態を指定する請求項４１および４２のいずれか１項に記載のコンピュータプログラム製品。
【請求項４４】
前記プリディケーション命令は、前記１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含む請求項３５から４０のいずれか１項に記載のコンピュータプログラム製品。
【請求項４５】
前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記１つまたは複数の条件状態または前記１つまたは複数の条件状態の補数が前記１つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項４４に記載のコンピュータプログラム製品。
【請求項４６】
実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタを含む請求項３５から４５のいずれか１項に記載のコンピュータプログラム製品。
【請求項４７】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた命令のカウンタレジスタを含む請求項３５から４６のいずれか１項に記載のコンピュータプログラム製品。
【請求項４８】
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続ける請求項４６および４７に記載のコンピュータプログラム製品。
【請求項４９】
例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路を含む請求項４７に記載のコンピュータプログラム製品。
【請求項５０】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項３５から４９のいずれか１項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳しくは、本発明は、そのようなデータ処理システムにおけるプログラム命令の条件付き実行に関する。
【背景技術】
【０００２】
前の処理オペレーションの結果に応じて条件付きで実行されまたは実行されないプログラム命令を含む命令セットに応答するデータ処理システムを提供することが知られている。一例として、ＡＲＭ３２ビット命令セットは、全ての命令が、条件が実行を阻止するかまたは許可するかを指定する４ビット条件コードフィールドを含む完全条件付きである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
完全条件付き３２ビットＡＲＭ命令セットはその条件付き動作において強力であるが、各命令内の条件コードに専用の４ビットは、命令セットのビットコーディングスペースのかなりの部分に相当する。多くの場合、条件コードの全ての機能が利用されるとは限らず、かつこれらの条件コードに専用の４ビットはよく使用されるわけではない。
【０００４】
また、ＡＲＭプロセッサによってサポートされるＴｈｕｍｂ命令セットのような条件なし命令セットを提供することが知られている。条件コードに命令ビットスペースを専用にしないことにより、Ｔｈｕｍｂ命令をより小さくし、それによってコード密度を向上させることが可能となる。しかし、このアプローチの不利な点は、あるオペレーションを実行するために必要な命令数がおそらくより大きく、かつ３２ビットＡＲＭ命令セットの条件コードを利用することができないのでその結果として処理がより遅いことである。
【０００５】
命令の結果に応じて次の命令を取り消すことが可能である命令を提供するＰＡ−ＲＩＳＣプロセッサのような他のプロセッサが知られている。そのような命令の例は、比較される数が等しいかまたは等しくないかに応じて、実行される次に続く命令を阻止するかまたは許可するかのいずれかとする比較オペレーションである。そのような次を取り消す形態の命令は有用であるが、それら自身の処理に応じて次の命令を取り消す役割を果たすのみであり、柔軟性が限られている。
【課題を解決するための手段】
【０００６】
一形態から見て、本発明は、データを処理するための装置を提供し、前記装置は、データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を具備し、前記命令デコーダは、プリディケーション（predication）命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する。
【０００７】
本発明は、所定目的のプリディケーション命令の提供は、これらがより柔軟に指定することが可能であるプロセッサの条件状態に応じて他の命令の実行を条件付きとすることが可能である点において非常に効果的であり得ると認識する。従って、プログラマおよびコンパイラは、より小さく、かつより高速なプログラムを生成するためにそのようなプリディケーション命令をよりよく活用することが可能である。
【０００８】
プリディケーション命令は、ただ１つの他の命令に作用することが可能であるが、好ましい実施形態において、プリディケーション命令は、複数の関連するプログラム命令の実行を制御するために提供される。
【０００９】
プリディケーション命令は、部分的または全体的に条件付きである関連するプログラム命令とともに使用することが可能であるが、本発明の好ましい実施形態は、プリディケーション命令が条件なしの関連するプログラム命令とともに使用されるものである。従って、プリディケーション命令は、条件なし命令セットに条件付き命令動作を追加することが可能である。
【００１０】
プリディケーション命令が関連するプログラム命令の制御の根拠とする条件状態は各種の異なる形式をとることが可能であるが、好ましい実施形態は、プリディケーション命令に入力を提供するために、例えば、ゼロフラグ、イコールフラグ、キャリーフラグ等のような条件コードフラグを使用する。
【００１１】
関連するプログラム命令を制御するためにプリディケーション命令によって評価される条件状態は、特定のシステムの要求に応じて異なる時点で評価することが可能である。条件状態はプリディケーション命令の実行時に一度評価することが可能であり、かつその評価の結果は関連するプログラム命令の全てを制御するために使用される。これは、命令パイプラインにおいて早期にプリディケーション命令を十分に評価し、かつその後、実行を速め、かつ実行を簡単にする方法で命令パイプラインからプリディケーション命令を除去することを可能とする効果を有する。上記の代わりに、条件状態が、例えば、いくつかの関連する命令については適合とし、かつ他の関連する命令については不適合とすることが可能であるように、個々の関連するプログラム命令の実行に先立って条件状態を評価することも可能である。このアプローチは、そのような条件付き命令動作とともに実装することが望ましい多くの共通的な形態のデータ処理オペレーションによく適した方法で、条件付き動作のよりよい程度の制御を可能とする効果を有する。
【００１２】
関連する命令は、プリディケーション命令への様々な異なる相対位置を有することが可能であるが、好ましい実施形態は、関連するプログラム命令がプリディケーション命令の直後に続くものである。これは、実装およびプログラミングのために好都合である。
【００１３】
様々な異なる方法で関連するプログラム命令を制御するようにプリディケーション命令を構成することも可能である。１つの可能な実施形態において、関連するプログラム命令は、条件コードが適合であるときに実行される１つのブロックと、条件コードが不適合であるときに実行される他のブロックとの２つの命令ブロックに構成される。これは、Ｉｆ・・・Ｔｈｅｎ・・・Ｅｌｓｅの命令形式と同様な動作を提供することが可能である。
【００１４】
そのような実施形態において、異なる命令のブロックは固定サイズとすることが可能であるが、プリディケーション命令それ自体の中のフィールドによって指定される可変サイズとすることが好ましい。これは、ブロックサイズを柔軟にし、分岐およびプリディケーション命令の他の動作の制御を簡便にし、かつコード密度を向上させることを可能とする。
【００１５】
プリディケーション命令は所定状態の特定の集合に専用とすることが可能であるが、好ましい実施形態において、プリディケーション命令は所定条件を指定することが可能である変数フィールドを含む。
【００１６】
効果的な程度の柔軟性を与え、かつ特にそれらの条件コードを適合および不適合とする命令のインターリーブを可能とするもう１つの形態のプリディケーション命令は、プリディケーション命令が、１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含むものである。
【００１７】
より詳細に好ましい実施形態において、プリディケーション命令は、個々の関連するプログラム命令が実行されるか否かを決定するために、１つまたは複数の条件状態または１つまたは複数の条件状態の補数（complement）が所定状態と比較されるか否かを、前記個々の関連する命令の各々について指定するフィールドを含むことが可能である。従って、個々の関連するプログラム命令は、「Ｔｈｅｎ」条件または「Ｅｌｓｅ」条件のいずれかにおいて実行されるように指定することが可能である。
処理システムの制御を容易にするために、通常のプログラムカウンタレジスタは、プリディケーション命令に従う１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた（predicated）命令のカウンタレジスタによって補完される。プリディケーション命令は、実際上、いくつの関連するプログラム命令を制御するかを指定する、その中にエンコードされた到達範囲を有し、かつシステムは、この到達範囲の中で実行がどこまで進んだか、およびいつこの到達範囲を越えたかを追跡する必要がある。
このプリディケートされた命令のカウンタレジスタは、特に、例外および例外からの復帰の処理において有効であり、例外からの復帰において、プリディケートされた命令のカウンタレジスタはリストアされ、かつその値は復帰するプログラム命令が前のプリディケーション命令によって作用を受ける動作を有するか否かを決定するために使用することが可能である。
【００１８】
プリディケーション命令に応じて関連するプログラム命令が実行されるかまたは実行されないかを制御するとともに、プリディケーション命令は、それらが実行されるときに異なるオペレーションを有するように関連する命令を変更するために使用することも可能である。これは、命令セットを効果的に拡張するものと理解することが可能である。
【００１９】
関連するプログラム命令を変更する特に好ましい方法は、所定のプログラム可能なフィールドを含む特定のプリディケーション命令に従うときに、１つまたは複数の条件状態にいかなる変更をすることも阻止することである。従って、条件コードフラグの更新は、適切なプリディケーション命令によって阻止することが可能である。
【００２０】
一形態から見て、本発明は、データ処理の方法を提供し、前記方法は、データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、を有し、前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する。
【００２１】
さらなる形態から見て、本発明は、データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、を有するデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品であって、前記コンピュータプログラムはプリディケーション命令を含み、前記プリディケーション命令は、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御する動作が可能である。
【発明を実施するための最良の形態】
【００２２】
ここで、添付図面を参照して、例のみを通して、本発明の実施形態について説明する。
【００２３】
図１は、プログラムレジスタバンク４、乗算器６、シフタ８、加算器１０、命令デコーダ１２、命令パイプライン１４、先取りユニット１６、割り込みコントローラ１８、プログラムカウンタレジスタ２０およびプリディケーション命令カウンタレジスタ２２を含むプロセッサコア２の形態におけるデータ処理装置を表わす。プロセッサコア２は、典型的には、この技術分野の当業者によく知られた多くの他の回路素子を含むが、これらの回路素子は明瞭のため図１から省略されていると理解すべきである。
【００２４】
オペレーションにおいて、プログラム命令Ｉが（図示しない）メモリから取り込まれ、かつ命令パイプライン１４に供給され、そこで、この技術分野の当業者によく知られた、取り込み、デコードおよび実行のような各種のパイプラインステージを通過する。命令パイプライン１４のデコードステージからの命令は、命令デコーダ１２に供給され、そこで、乗算器６、シフタ８、加算器１０および（図示しない）ＡＬＵのような他の回路素子によって、プログラムレジスタバンク４から読み出されたデータの値に対して、プログラムレジスタバンク４に書き戻される結果の値を生成するために、実行されるデータ処理演算／操作を構成および制御する制御信号を生成する役割を果たす。先取りユニット１６は、プログラム命令Ｉを命令パイプライン１４に取り込むために用いられる命令アドレスの生成を制御する役割を果たす。（プログラムレジスタバンク４内のプログラムレジスタの１つとすることが可能である）プログラムカウンタレジスタ２０は、実行される現在の命令のアドレス値、または、この値への所定のオフセット（例えば、＋４）を有するアドレスを供給する。また、コンテクストレジスタ２２も、先取りユニット１６に値を供給し、これは、実行が例外の発生によって割り込まれたとしても、プリディケーション命令に従う関連するプログラム命令の部分的に完了したシーケンスがプリディケーション命令によって依然として作用を受けるように、割り込みコントローラ１８によって制御されるものとして、割り込みから戻るときに用いられる。
【００２５】
図２は、プリディケーション命令ＩＴがプログラム命令のストリームにおいて命令デコーダ１２に与えられる第１実施形態を表わす図である。命令デコーダ１２がそのようなプリディケーション命令を検出すると、命令デコーダ１２はそれをデコードし、かつ有効に命令ストリーム内のプリディケーション命令に続く関連するプログラム命令に条件コードを付加する。この実施形態において命令ストリーム内のプログラム命令は、通常、対応する条件コードを有しない１６ビットＴｈｕｍｂ命令のような、通常、条件なし命令であると理解すべきである。しかし、Ｔｈｕｍｂ命令セットをサポートするプロセッサは、完全条件付き３２ビットＡＲＭ命令セットもサポートする。このＡＲＭ命令セットからの命令がデコードされているとき、続くこれらの命令の実行または非実行に作用させるために、これらは全て命令デコーダ１２から命令パイプライン１４へ渡される条件コードを含む。従って、命令パイプライン１４は、既に条件コードを認識し、かつプログラム命令に対応付けられた条件コードを解釈し、かつ応答するための構造および機構を有する。全体として、プリディケーション命令ＩＴは、それ自身が命令ストリームから取り去られるまで、命令ストリーム内でそれに続く１つまたは複数の関連するプログラム命令に条件コードを付加する役割を果たし、この条件コード情報の付加以外の処理機能を果たさないと理解される。
【００２６】
図３は、図２に示すプリディケーション命令ＩＴをより詳細に表わす。特に、この命令は、ＩＴ命令に続く１、２、３または４のいずれのプログラム命令がそのプリディケーションに従うか、および、従うならば適用される条件コードの極性を示す、条件コード「ｃｏｎｄ」およびマスク値「ｘｙｚ」を指定する。条件コードまたは条件コードの補数は、それぞれ２番目に続く、３番目に続く、４番目に続く関連するプログラム命令およびそのフラグの値のために、対応する値ｘ、ｙ、ｚが存在するか否かに応じて適用することが可能である。図３は、値ｘ、ｙ、ｚが値「１」で終了するマスク値２４をどのように構成するかを表わす。
【００２７】
図４は、プリディケーション命令によって４つの関連する命令がプリディケートされたような命令の例を表わす。これらの命令の１番目は、条件コードが適合したときに実行されるように「Ｔｈｅｎ」形式においてプリディケートされたと判断される。２番目、３番目、４番目の関連する命令は、「Ｔｈｅｎ」条件または「Ｅｌｓｅ」条件のいずれかにおいて実行されることを指定することが可能である。この例において、４つの関連するプログラム命令は、Ｔｈｅｎ、Ｔｈｅｎ、ＥｌｓｅおよびＴｈｅｎの形式を有する。マスク値２４の中で、２番目、３番目および４番目の関連する命令のためのマスク値ビットｘ、ｙ、ｚはそれぞれ０、１、０であり、かつマスク値は値「１」で終了する。
【００２８】
この例において指定された条件コードは「１０１０」である。この条件コードは、その通常の形式において１番目の関連する命令に適用される。そして、マスク値は１つの位置だけ左にシフトされ、かつマスク値のシフトアウトされた最上位ビットは、次の命令に適用される条件コードの最下位ビットの位置にシフトされる。従って、次の命令に適用される条件コードは、マスク値の中の最上位ビットに応じて、その通常の形式とその補数の形式との間で切り換えることが可能である。この例において、プリディケーション命令に続く３番目の命令は条件コードの補数に従う一方、プリディケーション命令に続く１番目、２番目および４番目の命令は、通常の条件コードに従うと理解される。マスク値「１０００」が検出されると、これは、最後のプリディケートされた命令に到達し、かつプリディケーション命令の作用を続くプログラム命令に拡張しないことを示す。
【００２９】
図３および図４に示す形態の命令のさらなる説明は以下の通りである。
【００３０】
ＩＴ
このＩｆ−Ｔｈｅｎ（ＩＴ）命令は、メモリ内の次のＮ個の命令を条件付きにする。ＩＴ命令に続き、かつその作用を受けるＮ個の命令の集合は「ＩＴブロック」として理解するべきである。
それらがＩＴブロック内で実行されるとき、いくつか（または全て）の命令の機能を再定義することが可能である。例えば、ＣＭＰ／ＣＭＮ／ＴＳＴ以外のＴｈｕｍｂ  １６ビット命令はフラグをセットしないことが可能である。そのような場合、ＩＴは、それ自身の後に作用を受けるＡＬ条件とともに用いることが可能である。
特別なＰＳＲビット（または専用ＩＴ状態レジスタ）は、ＩＴの状態を保持するために用いることが可能である。これはＩＴブロック内での割り込みを可能とする。
下記の例は４命令の最大ＩＴブロックサイズを有するＴｈｕｍｂ  １６ビットＩＴ命令を定義する。ＩＴブロック内の全ての命令は、同じ条件でプリディケートされ、または条件のバージョン（すなわち、ＥＱまたはＮＥ等）が保持される。
【００３１】
Ｔｈｕｍｂ  ＩＴ
構文規則
ＩＴ{＜ｘ＞{＜ｙ＞{＜ｚ＞}}}  ＜ｃｏｎｄ＞
ここで、
＜ｘ＞は、存在するならば、文字「Ｔ」および「Ｅ」のうちの１つであり、かつ２番目の続く命令がＩＴ命令の作用を受けることを示す。＜ｘ＞が「Ｔ」（「Ｔｈｅｎ」）ならば、その命令に結び付けられた条件は＜ｃｏｎｄ＞であり、＜ｘ＞が「Ｅ」ならば、＜ｃｏｎｄ＞の最下位ビットの論理反転によって得られた＜ｃｏｎｄ＞の反転である。＜ｘ＞が省略される（従って＜ｙ＞および＜ｚ＞も省略される）ならば、ただ１つの続く命令がＩＴ命令の作用を受ける。
＜ｙ＞は、存在するならば、文字「Ｔ」および「Ｅ」のうちの１つであり、かつ３番目の続く命令がＩＴ命令の作用を受けることを示す。＜ｙ＞が「Ｔ」（「Ｔｈｅｎ」）ならば、その命令に結び付けられた条件は＜ｃｏｎｄ＞であり、＜ｙ＞が「Ｅ」ならば、＜ｃｏｎｄ＞の最下位ビットの論理反転によって得られた＜ｃｏｎｄ＞の反転である。＜ｙ＞が省略される（従って＜ｚ＞も省略される）ならば、３つより少ない続く命令がＩＴ命令の作用を受ける。
＜ｚ＞は、存在するならば、文字「Ｔ」および「Ｅ」のうちの１つであり、かつ４番目の続く命令がＩＴ命令の作用を受けることを示す。＜ｚ＞が「Ｔ」（「Ｔｈｅｎ」）ならば、その命令に結び付けられた条件は＜ｃｏｎｄ＞であり、＜ｚ＞が「Ｅ」ならば、＜ｃｏｎｄ＞の最下位ビットの論理反転によって得られた＜ｃｏｎｄ＞の反転である。＜ｚ＞が省略されるならば、４つより少ない続く命令がＩＴ命令の作用を受ける。
＜ｃｏｎｄ＞は、１番目の続く命令に適用される条件であり、かつ＜ｘ＞、＜ｙ＞および＜ｚ＞によって指定されるようにさらに続く命令に適用することも可能である。
【００３２】
＜ｘ＞、＜ｙ＞および＜ｚ＞の値は、下記の表に従って命令のマスクフィールドの値を決定する。
【００３３】
【表１】
2006526813.tif 000003
【００３４】
注釈：この構文規則の基本概念は、例えば、「ＩＴＴＥＴ  ＥＱ」は、（ニーモニックにおいて「Ｔ」の位置によって示された）１番目、２番目および４番目の続く命令はそれらに結び付けられたＥＱ条件を有し、かつ（「Ｅ」によって示された）３番目はそれに結び付けられたＮＥ条件を有することを表わす、ということである。
【００３５】
【表２】
2006526813.tif 000004
【００３６】
８つのＩＴ実行状態ビットは、下記のように２５６の「命令間の状態」のうちの１つをエンコードする。
【００３７】
【表３】
2006526813.tif 000005
【００３８】
続く実行におけるこれらのビットの効果は次の通りである。
ＭＲＳおよびＳＲＳ命令は、これらのビットを正常に読み出す。ＭＲＳ命令は、それらを正常にＳＰＳＲに書き込むが、上述したように、ＣＰＳＲに書き込むときに、書き込まれている値は無視する。既存の例外復帰命令（「ＳＰＳＲからＣＰＳＲへのコピー」の副作用によるもの）およびＲＦＥ命令は、これも上述したように、それらを正常にＣＰＳＲに書き込む。
ＡＲＭおよびＪａｖａ（登録商標）状態例外の間、これらのビットはゼロでなければならない（すなわち、これらがゼロでなければ、結果は「予測不可能」である）。
例外エントリシーケンスは、これらのビットをＣＰＳＲからＳＰＳＲへコピーさせ、かつ（ＪおよびＴとともに）ＣＰＳＲにおいてクリアされ、プロセッサを通常のＡＲＭ例外に復帰させる。
Ｔｈｕｍｂ状態例外の間、下記の通りである。
【００３９】
１．ＩＴ命令が実行されるとき、これらのビットはゼロでなければならない。（すなわち、ＩＴ命令は、他のＩＴ命令の作用を受ける命令ブロック内に存在することが禁止される。）
２．条件付き分岐命令が実行されるとき、ビット［２６，２５，１１，１０］はゼロでなければならない。（すなわち、条件付き分岐命令は、ＩＴ命令の作用を受ける命令ブロック内に存在することが禁止される。条件なし分岐命令はそこに存在することが可能であるが、条件付きとして扱われる。この規則は、基本的に、同じ命令が２つの条件を有することによって生じる問題を防止するために存在する。）
３．上記の規則によって「予測不可能」とならない全ての命令のために、下記のように、条件が現在の「実行状態」ビットから生成される。
【００４０】
【表４】
2006526813.tif 000006
【００４１】
さらに、ＣＭＰ、ＣＭＮまたはＴＳＴ命令でなく、かつ、通常、条件フラグをセットする１６ビットＴｈｕｍｂデータ処理命令は、下記のように修正される。
【００４２】
【表５】
2006526813.tif 000007
【００４３】
注釈：多数の命令シーケンスを制御するためにＩＴが有用であることが必須である。例えば、ＩＴが、ＬＤＲ  Ｒｎ；ＡＤＤ  Ｒｎ，Ｒｎ，＃Ｍ；ＳＴＲ  Ｒｎのシーケンスを条件付きとするために使用される場合、ＡＤＤがＳＴＲ命令によって参照される条件フラグを変更するならばＩＴは無用である。
注釈：これは、ＡＬ条件（またはＮＶ条件）を有するＩＴ命令が１番目から４番目の続く命令によるそのようなフラグ設定を阻止するために使用することが可能であるという系（corollary）を有する。現在のＴｈｕｍｂ命令セットの不便な側面の１つは、事後挿入される（late-inserted）コード（例えば、ｓｐｉｌｌ／ｆｉｌｌコード）が条件フラグを破壊する副作用を有する可能性があることである。これを単一の特別な１６ビット命令とともに扱うことが可能であることは、たいへん有用である。
【００４４】
４．任意のＰＣを変更する命令の成功した（すなわち、どのような条件検査も不適合でなかった）実行は、新たな「実行状態」ビットを下記のようにする。
例外復帰命令（ＳＰＳＲからＣＰＳＲへのコピーを行い、かつ特権モードで実行されるＲＦＥを行うもの）については：
ＣＰＳＲに書き込まれた値のビット［２６，２５，１５：１０］。
それ以外は：
全てゼロ。
注釈：「それ以外」の場合は、ＩＴを単に静的に続く命令に作用させる基本規則である。
【００４５】
そのようなＰＣを変更する命令の成功しなかった実行、またはＰＣを変更しない、ＩＴでない命令の（成功したまたは成功しなかった）任意の実行は、新たな「実行状態」ビットを下記のように更新する。
【００４６】
【表６】
2006526813.tif 000008
【００４７】
注釈：
１．分岐。注釈した以外、ＩＴブロック内のどのような命令も、分岐命令またはＰＣを変更するいくつかの他の命令のいずれの結果としても、どのような分岐のターゲットとなることも許可されない。この制限に従うことができなければ、結局、「予測不可能」な動作に帰着する可能性がある。
２．例外。割り込みおよび他の例外は、命令とそのＩＴブロックとの間、またはＩＴブロック内で発生する可能性がある。通常のように、結局それらは、適切なモードのＲ１４およびＳＰＳＲにおいて配置された適当な復帰情報とともに開始される割り込みハンドラに帰着する。例外復帰に用いるために設計された命令は、例外から復帰するために通常通り使用され、かつＩＴブロックの実行を正しく再開することが可能である。これは、ＰＣを変更する命令がＩＴブロック内の命令に分岐することを可能とする唯一の方法である。
３．ＩＴブロック。ＩＴブロック内の命令は、
・ＩＴ命令
・条件付き分岐命令
であることは許されない。
そうである場合、結果は「予測不可能」となる。
【００４８】
図５は、もう１つの形態のプリディケーション命令を表わす図である。この形態のプリディケーション命令において、プリディケーション命令３０に対応付けられた関連するプログラム命令の２つのブロック２６、２８が存在する。これらのうち１番目の命令ブロック２６は、プリディケーション命令３０において指定された条件コードが適合であり、かつ「Ｉｆブロック」が呼び出された場合に実行される。他の命令ブロック２８は、プリディケーション命令３０に対応付けられた条件コードが不適合であり、かつ「Ｅｌｓｅブロック」が呼び出された場合に実行される。プリディケーション命令３０は、それぞれ長さが１〜４命令からなることが可能であるこれら２つのブロック２６、２８のサイズを指定する。図５の例において、Ｉｆブロック２６またはＥｌｓｅブロック２８のいずれかが実行される。この例は、一旦プリディケーション命令３０が実行されると条件コードが有効に評価され、かつその評価結果が関連するプログラム命令の全てをプリティケートするために適用されるものである。従って、Ｉｆブロック２６全体が実行されるか、または代わりにＥｌｓｅブロック２８全体が実行される。コンテクストレジスタ２２（μＰＣ）がＩｆブロックの最後に到達したことを示すと、分岐はＥｌｓｅブロック２８の最後の命令に続く命令に強制的に進められる。Ｅｌｓｅブロック２８の最後の命令に到達すると、プリディケーション命令３０の効果は除去される。
【００４９】
図６は、図５に示す形態のオペレーションに従うシステムの動作フロー図である。ステップ３２において、システムは、プリディケーション命令（ＩＴＥ命令）を識別するために待つ。ステップ３４において、システムは、現在のプログラムステータスレジスタ内に格納されるコンテクストカウンタ値が非ゼロであるか否かを識別する。そのような非ゼロ値は、復帰が例外から行われたことを示し、従ってステップ３６においてコンテクスト値が受け取られ、かつ現在のプログラムステータスレジスタ内に格納され、かつプリディケーション命令内において指定された条件コードが評価されるステップ３８へ処理を進める。上記の代わりに、判定ステップ３４がｎｏの結果である場合、ステップ４０においてコンテクスト値はゼロにセットされる。ステップ３８における条件コード評価の判定が条件コード不適合ならば、これは、Ｅｌｓｅブロック２８を実行しなければならず、従ってステップ４２はプログラムカウンタ値をＥｌｓｅブロック２８内の最初の命令に進め、そしてステップ４４で終了されるプリディケーション命令を有するＥｌｓｅブロック２８を実行することを示す。上記の代わりに、ステップ３８において評価された条件コードが適合ならば、ステップ４６は、コンテクスト値と合計されたＰＣ値によって位置付けられる命令を実行し、かつ命令バイト長によってコンテクスト値を増加させる。
【００５０】
ステップ４８は、例外の発生を検査し、そのような例外が存在するならば、ステップ５０はコンテクスト値（プリディケーション命令カウント値）を含む現在のプログラムステータスレジスタを保存し、割り込みを受け入れ、割り込み処理ルーチンを実行し、最後に、プログラムカウンタ値ＰＣによって示される命令、すなわちプリディケーション命令に続く命令へ復帰する役割を果たす。
【００５１】
ステップ５２は、分岐の発生を検査し、そのような分岐が発生すると、ステップ５４はプログラムカウンタ値を分岐ターゲットに変更し、かつステップ４４はプリディケーション命令の動作を終了させる。
【００５２】
ステップ５６は、プリディケーション命令カウンタ値が、Ｉｆブロック２６の最後に到達したことを示すＩｆブロックサイズに到達したか否かを検査する。Ｉｆブロック２６の最後に到達すると、ステップ５８は、プログラムカウンタ値をＥｌｓｅブロックの最後を越えるまで移動させる役割を果たし、かつステップ４４においてプリディケーション命令の動作が終了した後に通常の処理を再開させる。そうでなければ、処理は、Ｉｆブロック内の次の命令が実行されるステップ４６に復帰する。
【００５３】
図５および図６に示す命令の動作の他の説明は下記の通りである。
【００５４】
ＩＴＥ
このＩｆ−Ｔｈｅｎ−Ｅｌｓｅ（ＩＴＥ）命令は、条件が適合であるときに実行される命令ブロックのサイズ（このブロックは命令の直後に位置する）、および条件が不適合であるときに実行される命令ブロックのサイズ（このブロックは「ｉｆ」ブロックの直後に位置する）を指定することを可能とする。
ＩＴＥコンテクストビットの数は、ＰＳＲまたは他の特別なレジスタにおいて保持されなければならない。これらのビットをＰＳＲ＿ｕＰＣと呼ぶ。ＰＳＲ＿ｕＰＣビットの正確な数は、「ｉｆ」ブロックの可能な最大サイズを決定する。
【００５５】
【表７】
2006526813.tif 000009
【００５６】
注釈：
１．分岐。ＩＴＥの「ｉｆ」セクション内のいかなる命令も、分岐命令またはＰＣを変更するいくつかの他の命令のいずれの結果としても、どのような分岐のターゲットとなることも許可されない。この制限に従うことができなれば、結局、「予測不可能」な動作に帰着する可能性がある。
２．例外。割り込みおよび他の例外は、「Ｉｆ」ブロック内の命令間で発生する可能性がある。通常のように、結局それらは、特定の例外モードのＲ１４およびＳＰＳＲにおいて配置された適当な復帰情報とともに開始される割り込みハンドラに帰着する。例外復帰に用いるために設計された命令は、例外から復帰するために、通常、用いることが可能であり、かつ「ｉｆ」ブロックの実行を正しく再開する。これは、ＰＣを変更する命令が「ｉｆ」ブロック内の命令に分岐することを可能とする唯一の方法である。
【００５７】
図５および図６に表わされたＩｆブロック２６およびＥｌｓｅブロック２８を利用するプリディケーション命令の例外の形態の変形例として、すなわち、一旦プリディケーション命令３０が実行されると条件コードが評価される変形例、関連する命令が実行されるとき、プリディケーション命令３０によって作用を受ける各々の関連するプログラム命令のために条件コードが評価される変形例は、下記のような動作によって表わすことが可能である。
【００５８】
【表８】
2006526813.tif 000010
【００５９】
上記から、例においてプリディケーション命令は、３つの関連するプログラム命令を含むＩｆブロックおよび１つの関連するプログラム命令を含むＥｌｓｅブロックを指定することが理解される。これらのプログラム命令の各々とともに有効に指定される条件コードは、ＣＰＳＲ＿ｃｏｎｄ値によって表わされる。Ｅｌｓｅブロックから抜けたとき、５番目の命令はプリディケートされておらず、かつそのような条件なし命令に対応する通常の方法で条件なしで実行される。
【図面の簡単な説明】
【００６０】
【図１】プリディケーション命令を含むプログラム命令を実行する動作が可能なデータ処理装置を表わす図である。
【図２】プリディケーション命令に応答する命令デコーダの動作を表わす図である。
【図３】個々の関連するプログラム命令がマスク値および条件コードに応じて実行されるかまたは実行されないかのいずれかであるように制御されるプリディケーション命令の一形態を表わす図である。
【図４】個々の関連するプログラム命令がマスク値および条件コードに応じて実行されるかまたは実行されないかのいずれかであるように制御されるプリディケーション命令の一形態を表わす図である。
【図５】条件コードに応じて実行されるかまたは実行されないかのいずれかである関連する命令のブロックにおけるもう１つの形態のプリディケーション命令を表わす図である。
【図６】図５に示す形態のプリディケーション命令に従う実行の制御を表わすフロー図である。
【図７】上記技術を実装するための汎用的なコンピュータ機器の図である。
【符号の説明】
【００６１】
２  プロセッサコア
４  プログラムレジスタバンク
６  乗算器
８  シフタ
１０  加算器
１２  命令デコーダ
１４  命令パイプライン
１６  先取りユニット
１８  割り込みコントローラ
２０  プログラムカウンタレジスタ
２２  プリディケーション命令カウンタレジスタ
【図１】
2006526813.tif 000011
【図２】
2006526813.tif 000012
【図３】
2006526813.tif 000013
【図４】
2006526813.tif 000014
【図５】
2006526813.tif 000015
【図６】
2006526813.tif 000016
【図７】
2006526813.tif 000017
【手続補正書】
【提出日】平成17年11月8日(2005.11.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための装置（２）であって、
データ処理オペレーションを実行する動作が可能なデータ処理ロジック（４、６、８、１０）と、
前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダ（１２）と、
実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタ（ＰＣ）と、
を具備し、
前記命令デコーダは、プリディケーション（predication）命令（ＩＴ）に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御し、
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた（predicated）命令のカウンタレジスタ（μＰＣ）をさらに具備し、
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続け、
例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路（１８）をさらに具備する装置。
【請求項２】
前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項１に記載の装置。
【請求項３】
前記１つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項１に記載の装置。
【請求項４】
前記１つまたは複数の条件状態は、１つまたは複数の条件コードフラグの値を含む請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記１つまたは複数の条件状態は、
（１）前記プリディケーション命令の実行時に一度、および
（２）各々の関連するプログラム命令を実行する前、
のうち一方において評価される請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記プリディケーション命令は、
（１）前記１つまたは複数の条件状態が１つまたは複数の所定状態に適合するならば実行される１つまたは複数のプログラム命令の条件適合ブロック、および
（２）前記１つまたは複数の条件状態が前記１つまたは複数の所定状態に適合しないならば実行される１つまたは複数のプログラム命令の条件不適合ブロック、
に対応付けられる請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記プリディケーション命令は、
（１）前記１つまたは複数のプログラム命令の条件適合ブロックの長さ、および
（２）前記１つまたは複数のプログラム命令の条件不適合ブロックの長さ、
のうち１つまたは複数を指定する請求項７に記載の装置。
【請求項９】
前記プリディケーション命令は、前記１つまたは複数の所定状態（＜ｃｏｎｄ＞）を指定する請求項７および８のいずれか１項に記載の装置。
【請求項１０】
前記プリディケーション命令は、前記１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含む請求項１から６のいずれか１項に記載の装置。
【請求項１１】
前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記１つまたは複数の条件状態または前記１つまたは複数の条件状態の補数（complement）が前記１つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項１０に記載の装置。
【請求項１２】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記１つまたは複数の関連するプログラム命令が前記１つまたは複数の条件状態にいかなる変更をすることも阻止される請求項１２に記載の装置。
【請求項１４】
データを処理する方法であって、
データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、
前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、
プログラムカウンタレジスタに実行されるプログラム命令のメモリ位置を示すアドレスを格納するステップと、
を有し、
前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御し、
前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値をプリディケートされた命令のカウンタレジスタに格納するステップと、
前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタに前記プリディケーション命令に対応するアドレスを格納し続けるステップと、
例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開するステップと、
をさらに有する、データを処理する方法。
【請求項１５】
前記プリディケーション命令は、複数の関連するプログラム命令を制御する請求項１４に記載の方法。
【請求項１６】
前記１つまたは複数の関連するプログラム命令は、条件なしプログラム命令である請求項１４に記載の方法。
【請求項１７】
前記１つまたは複数の条件状態は、１つまたは複数の条件コードフラグの値を含む請求項１４から１６のいずれか１項に記載の方法。
【請求項１８】
前記１つまたは複数の条件状態は、
（１）前記プリディケーション命令の実行時に一度、および
（２）各々の関連するプログラム命令を実行する前、
のうち一方において評価される請求項１４から１７のいずれか１項に記載の方法。
【請求項１９】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令の直後に続く請求項１４から１８のいずれか１項に記載の方法。
【請求項２０】
前記プリディケーション命令は、
（１）前記１つまたは複数の条件状態が１つまたは複数の所定状態に適合するならば実行される１つまたは複数のプログラム命令の条件適合ブロック、および
（２）前記１つまたは複数の条件状態が前記１つまたは複数の所定状態に適合しないならば実行される１つまたは複数のプログラム命令の条件不適合ブロック、
に対応付けられる請求項１４から１９のいずれか１項に記載の方法。
【請求項２１】
前記プリディケーション命令は、
（１）前記１つまたは複数のプログラム命令の条件適合ブロックの長さ、および
（２）前記１つまたは複数のプログラム命令の条件不適合ブロックの長さ、
のうち１つまたは複数を指定する請求項２０に記載の方法。
【請求項２２】
前記プリディケーション命令は、前記１つまたは複数の所定状態を指定する請求項２０および２１のいずれか１項に記載の方法。
【請求項２３】
前記プリディケーション命令は、前記１つまたは複数の条件状態と１つまたは複数の所定状態との比較に応じて、個々の関連するプログラム命令が実行されるかまたは実行されないかを各々が指定する１つまたは複数のフィールドを含む請求項１４から１９のいずれか１項に記載の方法。
【請求項２４】
前記プリディケーション命令は、前記個々の関連するプログラム命令が実行されるか否かを決定するために、前記１つまたは複数の条件状態または前記１つまたは複数の条件状態の補数が前記１つまたは複数の所定状態と比較されるか否かを、前記個々の関連するプログラム命令の各々について指定するフィールドを含む請求項２３に記載の方法。
【請求項２５】
前記１つまたは複数の関連するプログラム命令は、前記プリディケーション命令に従うとき異なるデータ処理オペレーションを指定する請求項１４から２４のいずれか１項に記載の方法。
【請求項２６】
前記プリディケーション命令内のプログラム可能なフィールドに応じて、前記１つまたは複数の関連するプログラム命令が前記１つまたは複数の条件状態にいかなる変更をすることも阻止される請求項２５に記載の方法。
【請求項２７】
請求項１４から２６のいずれか１項に記載の方法に従ってデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
命令の結果に応じて次の命令を取り消すことが可能である命令を提供するＰＡ−ＲＩＳＣプロセッサのような他のプロセッサが知られている。そのような命令の例は、比較される数が等しいかまたは等しくないかに応じて、実行される次に続く命令を阻止するかまたは許可するかのいずれかとする比較オペレーションである。そのような次を取り消す形態の命令は有用であるが、それら自身の処理に応じて次の命令を取り消す役割を果たすのみであり、柔軟性が限られている。
Pnevmatikatos D N et al:”Guarded Execution and Branch Prediction In Dynamic ILP Processor”Computer Architecture News, Association for Computing Machinery, New York, US, Vol.22, No.2, 1 April 1994(1994-04-01), pages 120-129, XP000450344には、１つまたは複数の続く命令をプリディケートする（predicate）役割を果たすガード（Guard）命令を提供するシステムが開示されている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
一形態から見て、本発明は、データを処理するための装置を提供し、前記装置は、データ処理オペレーションを実行する動作が可能なデータ処理ロジックと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するためにプログラム命令をデコードする動作が可能な命令デコーダと、実行されるプログラム命令のメモリ位置を示すアドレスを格納する動作が可能なプログラムカウンタレジスタ（ＰＣ）と、を具備し、前記命令デコーダは、プリディケーション（predication）命令（ＩＴ）に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる前記データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御し、前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた（predicated）命令のカウンタレジスタ（μＰＣ）をさらに具備し、前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタは前記プリディケーション命令に対応するアドレスを格納し続け、例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開する動作が可能な例外処理回路をさらに具備する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明は、所定目的のプリディケーション命令の提供は、これらがより柔軟に指定することが可能であるプロセッサの条件状態に応じて他の命令の実行を条件付きとすることが可能である点において非常に効果的であり得ると認識する。従って、プログラマおよびコンパイラは、より小さく、かつより高速なプログラムを生成するためにそのようなプリディケーション命令をよりよく活用することが可能である。
処理システムの制御を容易にするために、通常のプログラムカウンタレジスタは、プリディケーション命令に従う１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値を格納する動作が可能なプリディケートされた命令のカウンタレジスタによって補完される。プリディケーション命令は、実際上、いくつの関連するプログラム命令を制御するかを指定する、その中にエンコードされた到達範囲を有し、かつシステムは、この到達範囲の中で実行がどこまで進んだか、およびいつこの到達範囲を越えたかを追跡する必要がある。
このプリディケートされた命令のカウンタレジスタは、特に、例外および例外からの復帰の処理において有効であり、例外からの復帰において、プリディケートされた命令のカウンタレジスタはリストアされ、かつその値は復帰するプログラム命令が前のプリディケーション命令によって作用を受ける動作を有するか否かを決定するために使用することが可能である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
より詳細に好ましい実施形態において、プリディケーション命令は、個々の関連するプログラム命令が実行されるか否かを決定するために、１つまたは複数の条件状態または１つまたは複数の条件状態の補数（complement）が所定状態と比較されるか否かを、前記個々の関連する命令の各々について指定するフィールドを含むことが可能である。従って、個々の関連するプログラム命令は、「Ｔｈｅｎ」条件または「Ｅｌｓｅ」条件のいずれかにおいて実行されるように指定することが可能である。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
一形態から見て、本発明は、データ処理の方法を提供し、前記方法は、データ処理ロジックを用いてデータ処理オペレーションを実行するステップと、前記データ処理ロジックが前記データ処理オペレーションを実行するように制御するために、命令デコーダを用いてプログラム命令をデコードするステップと、プログラムカウンタレジスタに実行されるプログラム命令のメモリ位置を示すアドレスを格納するステップと、を有し、前記命令デコーダは、プリディケーション命令に応答して、前記プリディケーション命令以外の１つまたは複数のプログラム命令の実行によってセットされる、データを処理するための装置の１つまたは複数の条件状態に応じて、前記データ処理ロジックが１つまたは複数の関連するプログラム命令を実行するかまたは実行しないかのいずれかであるように制御し、前記プリディケーション命令に従う前記１つまたは複数の関連するプログラム命令のうちいくつが実行されたかを示すカウンタ値をプリディケートされた命令のカウンタレジスタに格納するステップと、前記１つまたは複数の関連するプログラム命令を実行するとき、前記プログラムカウンタレジスタに前記プリディケーション命令に対応するアドレスを格納し続けるステップと、例外が発生したときに前記カウンタ値を格納し、かつ前記例外が完了したときに前記カウンタ値によって示されるプログラム命令で開始する実行を再開するステップと、をさらに有する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
さらなる形態から見て、本発明は、上記技術に従ってデータを処理するための装置を制御する動作が可能なコンピュータプログラムを含むコンピュータプログラム製品を提供する。


【国際調査報告】
2006526813.tif 000018
2006526813.tif 000019