(57)【要約】データ処理装置は、データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、処理回路が、プログラム命令を実行するための命令デコーダ回路と、命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、を含む処理回路を備え、命令デコーダ回路が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである。
2018521424.tif 000002
【特許請求の範囲】
【請求項１】
データベクトル内の位置にあるデータアイテムに対して、前記位置に関連付けられたそれぞれの述語フラグの集合の前記状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、前記データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、当該処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
前記命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、
を含む処理回路
を備えるデータ処理装置であって、
前記命令デコーダ回路が、前記データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように前記命令処理回路を制御するよう、伝播命令に応答し、前記先行するデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、前記現在のデータベクトルに適用可能な前記集合内の前記導出された述語フラグの全てが非アクティブである、データ処理装置。
【請求項２】
前記命令デコーダ回路が、前記現在のデータベクトルに適用可能な述語フラグの前記集合の初期状態に応答するように前記命令処理回路を制御するよう、前記伝播命令に応答し、前記先行するデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグがアクティブであるとき、前記現在のデータベクトルに適用可能な前記集合内の前記導出された述語フラグが、それらのそれぞれの初期状態から導出される、請求項１に記載の装置。
【請求項３】
前記命令デコーダ回路が、前記先行するデータベクトルに関連付けられた前記述語フラグのいずれがその先行するデータベクトルに適用可能であるのかを定義する述語フラグのさらなる集合に応答するように前記命令処理回路を制御するよう、前記伝播命令に応答する、請求項２に記載の装置。
【請求項４】
前記命令デコーダ回路が、前記現在のデータベクトルに適用可能な述語フラグの前記集合の前記初期状態を、各述語フラグに対応するデータセットエントリを有するデータセットから生成するように前記命令処理回路を制御するよう、前記伝播命令に応答する、請求項１〜３のいずれか一項に記載の装置。
【請求項５】
各データセットエントリが、複数の可能な状態を有し、
前記命令デコーダ回路が、前記現在のデータベクトルに適用可能な述語フラグの前記集合の前記初期状態を生成するように前記命令処理回路を制御するよう、前記伝播命令に応答し、前記述語フラグが、前記対応するデータセットエントリの特定の状態の、前記データアイテム順序における最初の出現の直前の述語フラグまで、アクティブ状態に設定される、請求項４に記載の装置。
【請求項６】
前記処理回路が、前記データセットをベクトル処理演算の出力として生成するように構成されている、請求項５に記載の装置。
【請求項７】
前記処理回路が、ループされる演算を実行し、前記ループされる演算の継続実行のテストとして前記データセットを生成するように構成され、
前記処理回路が、前記現在のデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグが非アクティブである場合、前記ループされる演算を終結させるように構成されている、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
アクティブな述語フラグが、前記ベクトル処理命令が適用されるべきであることを示し、非アクティブな述語フラグが、前記ベクトル処理命令が適用されるべきでないことを示す、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
データベクトル内の位置にあるデータアイテムに対して、前記位置に関連付けられたそれぞれの述語フラグの集合の前記状態に従ってベクトル処理演算を選択的に適用するための手段であって、前記データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、当該適用するための手段が、
プログラム命令をデコードするための手段と、
前記デコードするための手段によりデコードされた命令を実行するための手段と、
を含む適用するための手段
を備えるデータ処理装置であって、
前記デコードするための手段が、前記データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように前記実行するための手段を制御するよう、伝播命令に応答し、前記先行するデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、前記現在のデータベクトルに適用可能な前記集合内の前記導出された述語フラグの全てが非アクティブである、データ処理装置。
【請求項１０】
データベクトル内の位置にあるデータアイテムに対して、前記位置に関連付けられたそれぞれの述語フラグの集合の前記状態に従ってベクトル処理演算を選択的に適用するステップであって、前記データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、当該適用するステップが、
プログラム命令をデコードするステップと、
前記デコードするステップによりデコードされた命令を実行するステップと、
を含む適用するステップ
を備えるデータ処理方法であって、
前記デコードするステップが、前記データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように前記実行するステップを制御するよう、伝播命令に応答し、前記先行するデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、前記現在のデータベクトルに適用可能な前記集合内の前記導出された述語フラグの全てが非アクティブである、データ処理方法。
【請求項１１】
コンピュータにより実行されるとき、前記コンピュータに請求項１０に記載の方法を行わせるコンピュータソフトウェア。
【請求項１２】
請求項１１に記載のコンピュータソフトウェアを記憶する非一時的な機械可読記憶媒体。
【請求項１３】
機械可読命令を含むコンピュータプログラムを実行するためのデータプロセッサを備えた仮想マシンであって、前記コンピュータプログラムの実行が、前記データプロセッサに、
データベクトル内の位置にあるデータアイテムに対して、前記位置に関連付けられたそれぞれの述語フラグの集合の前記状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、前記データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、当該処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
前記命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、  を含む処理回路
を備えるデータ処理装置として動作させ、
前記命令デコーダ回路が、前記データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように前記命令処理回路を制御するよう、伝播命令に応答し、前記先行するデータベクトルに適用可能な前記集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、前記現在のデータベクトルに適用可能な前記集合内の前記導出された述語フラグの全てが非アクティブである、仮想マシン。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理の装置および方法に関する。
【背景技術】
【０００２】
一部のデータ処理配置は、ベクトル処理演算を考慮に入れており、単一のベクトル処理命令を、データベクトル内のそれぞれの位置に複数のデータアイテムを有するデータベクトルのデータアイテムに対して適用することを伴う。対照的に、スカラー処理は、事実上、データベクトルに対してではなく、一つ一つのデータアイテムに対して作用する。
【０００３】
ベクトル処理は、処理されるべき、データの多数の異なるインスタンスに対して処理演算が行われる場合に有用であり得る。ベクトル処理配置では、単一の命令を、（データベクトルの）複数のデータアイテムに対して同時に適用することができる。これにより、スカラー処理と比較して、データ処理の効率およびスループットを改善することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
ある例示的な配置では、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、当該処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、
を含む処理回路
を備えるデータ処理装置であって、
命令デコーダ回路が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理装置が提供される。
【０００５】
別の例示的な配置では、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための手段であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、適用するための手段が、
プログラム命令をデコードするための手段と、
デコードするための手段によりデコードされた命令を実行するための手段と、
を含む適用するための手段
を備えるデータ処理装置であって、
デコードするための手段が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように実行するための手段を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理装置が提供される。
【０００６】
別の例示的な配置では、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するステップであって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、適用するステップが、
プログラム命令をデコードするステップと、
デコードするステップによりデコードされた命令を実行するステップと、
を含む適用するステップ
を備えるデータ処理方法であって、
デコードするステップが、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように実行するステップを制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理方法が提供される。
【０００７】
別の例示的な配置では、
機械可読命令を含むコンピュータプログラムを実行するためのデータプロセッサを備えた仮想マシンであって、コンピュータプログラムの実行が、データプロセッサに、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、
を含む処理回路
を備えるデータ処理装置として動作させ、
命令デコーダ回路が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、仮想マシンが提供される。
【０００８】
本技法を、添付図面中に例示されるその実施形態を、例としてのみ参照しながら、さらに説明する。
【図面の簡単な説明】
【０００９】
【図１】データ処理装置を概略的に例示する。
【図２】複数のデータベクトルとしてのデータの取り扱いを概略的に例示する。
【図３】ループされる演算（looped operation）を例示する概略流れ図である。
【図４】述語フラグの使用を概略的に例示する。
【図５】カウンタ変数に従った述語フラグの制御を概略的に例示する。
【図６】カウンタ変数に従った「ＷＨＩＬＥ」命令による述語フラグの設定を例示する概略流れ図である。
【図７】いわゆる展開されたループ（unrolled loop）を概略的に例示する。
【図８】カウンタ変数により表現され得る値を概略的に例示する。
【図９】カウンタ変数により表現され得る値を概略的に例示する。
【図１０】インクリメント命令の動作を例示する概略流れ図である。
【図１１】デクリメント命令の動作を例示する概略流れ図である。
【図１２】ベクトル演算を例示する概略流れ図である。
【図１３】ブレーク述語フラグの設定を概略的に例示する。
【図１４】ブレーク述語フラグの設定を概略的に例示する。
【図１５】ブレーク述語フラグの集合を概略的に例示する。
【図１６】ブレーク条件の取り扱いを例示する概略流れ図である。
【図１７】伝播命令の一例を概略的に例示する。
【図１８】伝播命令の別の例を概略的に例示する。
【図１９】仮想マシンを概略的に例示する。
【発明を実施するための形態】
【００１０】
添付図面を参照しながら実施形態について論じる前に、実施形態について以下の説明を提供する。
【００１１】
ある例示的な実施形態は、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、
を含む、処理回路
を備えるデータ処理装置であって、
命令デコーダ回路が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理装置を提供する。
【００１２】
例示的な実施形態は、複数のデータベクトルが処理されるべきであり、１つのデータベクトルに関連付けられたステータスが演算が次のデータベクトルに対して行われるべきかどうかに影響を与える場合に有用であり得る。伝播命令は、述語フラグの集合を、先行するベクトルに適用可能なそれらから導出することができる。例示的な状況は、「展開された」ループ演算（単一のループ繰り返しで複数のデータベクトルが取り扱われる）の場合に発生し得るが、この配置は、他の状況にも適用可能である。１つのデータベクトルに関してループブレーク条件が検出される場合、それは、述語フラグの使用により、その１つのデータベクトルに関して手渡され得る。伝播命令は、その結果を同じループ繰り返しにおける後続のデータベクトルに伝播する方法を提供し得る。
【００１３】
例示的な実施形態では、命令デコーダ回路は、現在のデータベクトルに適用可能な述語フラグの集合の初期状態に応答するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグがアクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグが、それらのそれぞれの初期状態から導出される。
【００１４】
例示的な実施形態では、命令デコーダ回路は、先行するデータベクトルに関連付けられた述語フラグのいずれがその先行するデータベクトルに適用可能であるのかを定義する述語フラグのさらなる集合に応答するように命令処理回路を制御するよう、伝播命令に応答する。
【００１５】
命令デコーダ回路が、現在のデータベクトルに適用可能な述語フラグの集合の初期状態を、各述語フラグに対応するデータセットエントリを有するデータセットから生成するように命令処理回路を制御するよう、伝播命令に応答する例示的な実施形態では、伝播されるべき（またはされないべき）述語は、それら自体、伝播命令により導出され得る。例示的な実施形態では、各データセットエントリは、複数の可能な状態を有し、命令デコーダ回路は、現在のデータベクトルに適用可能な述語フラグの集合の初期状態を生成するように命令処理回路を制御するよう、伝播命令に応答し、述語フラグは、対応するデータセットエントリの特定の状態の、データアイテム順序における最初の出現の直前の述語フラグまで、アクティブ状態に設定される。例えば、処理回路は、データセットを比較演算などのベクトル処理演算の出力として生成するように構成されていてもよい。
【００１６】
例示的な実施形態では、伝播された述語は、処理回路が、ループされる演算を実行し、ループされる演算の継続実行のテストとしてデータセットを生成するように構成され、処理回路が、現在のデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブである場合、ループされる演算を終結させるように構成されている、ループブレーク制御の一部として使用され得る。
【００１７】
例示的な実施形態では、アクティブな述語フラグは、ベクトル処理命令が適用されるべきであることを示し、非アクティブな述語フラグは、ベクトル処理命令が適用されるべきでないことを示す。
【００１８】
ある例示的な実施形態は、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための手段であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、適用するための手段が、
プログラム命令をデコードするための手段と、
デコードするための手段によりデコードされた命令を実行するための手段と、
を含む、適用するための手段
を備えるデータ処理装置であって、
デコードするための手段が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように実行するための手段を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理装置を提供する。
【００１９】
ある例示的な実施形態は、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するステップであって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、適用するステップが、
プログラム命令をデコードするステップと、
デコードするステップによりデコードされた命令を実行するステップと、
を含む適用するステップ
を備えるデータ処理方法であって、
デコードするステップが、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように実行するステップを制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、データ処理方法、を提供する。
【００２０】
ある例示的な実施形態は、
機械可読命令を含むコンピュータプログラムを実行するためのデータプロセッサを備えた仮想マシンであって、コンピュータプログラムの実行が、データプロセッサに、
データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、処理回路が、
プログラム命令をデコードするための命令デコーダ回路と、
命令デコーダ回路によりデコードされた命令を実行するための命令処理回路と、
を含む処理回路
を備えるデータ処理装置として動作させ、
命令デコーダ回路が、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するように命令処理回路を制御するよう、伝播命令に応答し、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、現在のデータベクトルに適用可能な集合内の導出された述語フラグの全てが非アクティブである、仮想マシン、を提供する。
【００２１】
ここで図面を参照すると、図１は、データ値３２およびプログラム命令３４を記憶するメモリ３０に連結されたプロセッサ２０を含むデータ処理システム１０を概略的に例示している。プロセッサ２０は、プログラム命令３４をメモリ３０からフェッチし、フェッチプログラム命令をデコーダ回路５０に供給するための命令フェッチユニット４０を含む。デコーダ回路５０は、フェッチされたプログラム命令をデコードし、デコードされたベクトル命令により指定されたようにベクトルレジスタ回路７０内に記憶されたベクトルレジスタに対してベクトル処理演算を遂行するようにベクトル処理回路６０を制御するための制御信号を生成する。
【００２２】
プロセッサ２０はまた、スカラーレジスタ９０に関連付けられたスカラー処理回路８０を含む。
【００２３】
スカラー処理とベクトル処理との間の一般的な差異は、以下のとおりである。ベクトル処理は、単一のベクトル処理命令を、データベクトル内のそれぞれの位置に複数のデータアイテムを有するデータベクトルのデータアイテムに対して適用することを伴う。スカラー処理は、事実上、データベクトルに対してではなく、一つ一つのデータアイテムに対して作用する。
【００２４】
ベクトル処理は、処理されるべき、データの多数の異なるインスタンスに対して処理演算が行われる場合に有用であり得る。ベクトル処理配置では、単一の命令を、（データベクトルの）複数のデータアイテムに対して同時に適用することができる。これにより、スカラー処理と比較して、データ処理の効率およびスループットを改善することができる。
【００２５】
以下の議論は、例示的なプログラム命令３４に関する。本開示の実施形態は、このようなプログラム命令をデコードし実行するように動作可能であり、またはそう構成されている、例えば図１に示す種類の、装置を含む。したがって、図１は、データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグ（後述する）の集合の状態に従ってベクトル処理演算を選択的に適用するための処理回路であって、データベクトルが、データベクトル処理順序を有し、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含んでおり、処理回路が、プログラム命令をデコードするための命令デコーダ回路と、命令デコーダ回路によりデコードされた命令を実行するための命令処理回路とを含む処理回路であって、命令デコーダ回路が、後述する機能を行うように命令処理回路を制御するよう、命令に応答する処理回路の例を提供する。
【００２６】
図２は、複数のデータベクトルとしてのデータの取り扱いを概略的に例示する。この配置では、データアイテム１００の集合は、処理順序１１０で処理されることを意図されている。データアイテム１００は、実際は、ベクトル処理演算において、単一のベクトル処理命令が、データベクトル内のデータアイテム（例えば、４つのデータアイテム、８つのデータアイテム、または、どんな特定のシステムのベクトル長でも）の全てに同時に適用されるよう、連続するデータベクトル１２０として取り扱われる。
【００２７】
とは言ったものの、各データベクトル１２０は、データアイテム処理順序１３０を保持し、ベクトルからベクトルへのベクトル処理順序１４０が存在するので、処理中に当初の処理順序１１０への参照が必要とされる場合、これは、ベクトル処理順序１４０におけるデータベクトルを考慮しデータアイテム処理順序１３０における各データベクトル内のデータアイテムを考慮することにより達成され得る。この考慮は、後述するように、（少なくとも）ループ処理の終結に関連がある。
【００２８】
図３は、ベクトル処理配置におけるループされた演算を例示する概略的な流れ図である。ステップ２００では、初期パラメータが、確立される。ここでの単純な例は、ループ制御変数が、例えばスカラー処理回路８０の動作により、０などの初期値に設定されることである。
【００２９】
ステップ２１０では、現在のデータベクトルに関して１つ以上の処理演算が行われる。現在のデータベクトルは、例えば、メモリ内に記憶されたデータ３２の連続したブロックに関して、以下のように定義され得る。
ＶｅｃｔｏｒＡ＝Ｄａｔａ［ＳＡ＋ｉ，…，ＳＡ＋ｉ＋ＶＬ−１］
ここで、変数ｉはループ制御変数であり、変数ＳＡはデータの連続したブロックの開始アドレスであり、変数ＶＬは使用中の特定の処理システムに適用可能なベクトル長である。言い換えれば、この例では、アドレス（ＳＡ＋ｉ）とアドレス（ＳＡ＋ｉ＋ＶＬ−１）との間であって両端を含むデータアイテムの連続した集団が、ベクトルＶｅｃｔｏｒＡのＶＬ個のデータアイテムを形成する。
【００３０】
別の例では、メモリ内の２つ以上の連続していない位置へのポインタの集合がデータベクトルを埋めるために提供される、いわゆる収集されたデータベクトル（gathered data vector）が使用されてもよい。同様に、データベクトルをメインメモリに書き戻すとき、データアイテムが連続していないメモリ位置に書き戻されるように、いわゆる散乱プロセス（scatter process）が使用されてもよい。このような配置は、その他の点では本明細書に記載されたプロセスが動作する方法に影響を与えず、ゆえに、本明細書では、連続的なデータセット（連続して記憶されるか否かを問わない）を仮定する。しかしながら、メインメモリからの不要な収集またはメインメモリへの不要な散乱の動作を避けるために非アクティブな述語フラグ（後述する）を使用することは、ベクトル処理演算の処理オーバーヘッドを低減し得ることが留意される。
【００３１】
ステップ２１０では、様々な異なる種類のベクトル処理演算（複数可）が、行われ得る。例えば、ベクトル処理演算は、第２のデータベクトルＶｅｃｔｏｒＢのデータアイテムとして記憶される結果を生成するように、ＶｅｃｔｏｒＡのデータアイテムに関して行われてもよい。
【００３２】
ステップ２２０では、ループ演算を前進させるように、カウンタまたはループ制御変数が、インクリメントされる。ここで、用語「インクリメント」は、１だけの増加のみを指すのではなく、別の値だけの増加を指し得る。実際、本例では、ループ制御変数は、例えば処理回路により決定されるように、述語フラグの数により表されるベクトル長ＶＬだけインクリメントされる。
【００３３】
ステップ２３０では、システムは、ループ演算を継続すべきかどうか、または言い換えれば、ループ制御変数がそのループに関して定義された終了ポイントに到達したかどうかを検出する。ループ演算が継続されるべきである場合、制御は、ステップ２１０に戻る。ステップ２２０では、他のパラメータも設定され、プロセスのこの部分の例については、後述する。さもなければ、処理は、終了する。
【００３４】
ループ演算を継続すべきかどうかの決定は、条件付きジャンプ、分岐、またはプログラムの流れを変える他の命令（例えば、ステップ２１０に戻る）の形でなされることができ、ここで、条件は、後述するＷＨＩＬＥ命令などの命令の実行に基づく１つ以上のプロセッサ条件フラグ（例えば、Ｎ、Ｚ、Ｃ、およびＶフラグ）以外で、例えば示され得る。それゆえに、ＷＨＩＬＥ命令は、別個の（条件付き分岐またはジャンプ）命令が実際にループを継続させるようにプログラムの流れを変えるか否かを制御するように、１つ以上の条件フラグを設定する効果を有する。（しかしながら、他の例では、ＷＨＩＬＥ命令はまた、ジャンプまたは分岐も遂行できることが想定されている）。
【００３５】
ベクトル処理回路の異なるインスタンスによる（再コンパイルプロセスなしの）実行向けのプログラム命令であって、それらの異なるインスタンスが異なる利用可能なベクトル長ＶＬを有し得るプログラム命令の場合、それにより命令が実行されているベクトル処理回路のどんな利用可能な長さＶＬにも従って動作するループされる演算を制御するための配置を提供することが有用であり得る。（代替案は、想像上のＶＬをベクトル処理回路の異なるインスタンス間で遭遇され得る最小レベルに固定することであろうが、これは、一部のインスタンスで利用可能なより長いベクトル長を使用しないことにより、非効率的であり得る。）本明細書に記載される例示的な配置では、ループ演算を制御するためにスカラー演算を使用する代わりに、述語フラグ（後述する）が使用される。
【００３６】
図４は、ベクトル処理演算を制御するための述語フラグの使用を概略的に例示する。
【００３７】
単一のベクトル処理演算がデータベクトル内の異なるデータアイテムに対して異なって適用されるべきであるインスタンスが存在し得る。ベクトル処理回路６０は、いわゆる述語フラグの使用によりこれに備えている。述語フラグは、ある処理演算がそのデータアイテム位置に関して行われるべきかどうかを示すために、データベクトル内の各データアイテム位置に提供されるフラグ情報を含む。例では、ベクトル処理回路６０は、任意の特定のベクトル処理演算が、そのベクトル処理演算のパラメータとして述語フラグの１つ以上の集合を参照することができるように、述語フラグの複数の集合にアクセスすることができる。
【００３８】
図４を参照すると、ある例示的な配置が４つのデータアイテム（ＶＬ＝４）を含むデータベクトルを使用しているが、これらの配置が異なるベクトル長に適用され得ることは理解されるであろう。例示的な入力データベクトル２５０（ＶｅｃｔｏｒＡ）は、述語フラグによるいかなる制御もない場合は、ベクトル処理演算２６０が各データアイテム位置に適用されるように、ベクトル処理演算２６０の対象になるはずである。しかしながら、述語フラグ２７０の集合も、各データアイテム位置または「レーン」に１つずつ、ベクトル処理演算を制御するために提供されている。
【００３９】
入力ベクトル（ベクトルＡ）のデータアイテム２５２は、出力データベクトル２８０（ベクトルＢ）のデータアイテム２８２を生成するように、ベクトル処理演算２６０に従って処理される。もし、出力データベクトル２８０内のあるデータアイテム位置に対応する述語フラグ２７２が「アクティブ」（例えば、１の値）に設定されている場合。ある出力ベクトル位置の対応する述語フラグが「非アクティブ」（例えば、０の値）に設定されている場合、ベクトル処理演算２６０は、その出力ベクトル位置に関しては行われない。
【００４０】
上述のように、本例では、述語フラグは、出力データベクトル２８０に関して、ある特定の出力位置または「レーン」のためのベクトル処理演算が行われるかどうかを制御する。しかしながら、他の例では、述語フラグは、入力ベクトル（または１つ以上の入力ベクトル）２５０内のデータアイテム位置が使用されるかどうかを制御するために使用され得る。
【００４１】
したがって、これは、アクティブ状態の述語フラグに対応するデータベクトルの位置に対してベクトル処理命令が適用されるべきであることを示すアクティブ状態を有する述語フラグの例を提供する。非アクティブ状態は、ベクトル処理演算がそのように適用されるべきでないことを示す。
【００４２】
あるベクトル処理演算が、非アクティブな述語フラグのために、ある特定の出力ベクトル位置２８２に対して行われない場合、一部の例では、０などの固定値が、その出力位置に挿入され得る。他の例では、その出力位置の従前の内容が、それらがどんなものであっても、変更されないままとされ得る。
【００４３】
したがって、この様式による述語フラグの使用は、そのデータベクトル内のそれぞれの位置に複数のデータアイテムを含むデータベクトルの１つ以上のデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの状態に従って、ベクトル処理命令を適用することの一例を提供する。
【００４４】
本例は、図３に概略的に示されるもののようなループされる演算の制御での述語フラグの使用を考慮にするものである。図５および６を使用して、この種類の演算の諸側面を説明する。
【００４５】
ループされる演算の特徴は、ループ制御変数が、ループが図３のステップ２３０で終結する特定の上限値に到達するまで、多くのデータアイテムが、ループ制御変数の制御のもと、データアイテム処理順序で取り扱われることである。スカラー処理ループの一例は、以下の概略的な擬似コードにより提供される。
Ｆｏｒ  ｉ＝０  ｔｏ  ９７
Ｐｒｏｃｅｓｓ  Ｄａｔａ  ［ｉ］
Ｎｅｘｔ  ｉ
【００４６】
ここで、ループされる演算は、ループ制御変数ｉが０に設定された状態で始まり、ループ制御変数ｉが９７の値に到達するまで継続する。言い換えれば、合計で、９８個のデータアイテムが取り扱われる。
【００４７】
ループ演算は、そうではなくて、データアイテムが一度に１ベクトルずつ取り扱われるように、図３を参照しながら論じたようにベクトル処理を使用して遂行することができる。これは、複数のデータアイテムの群が単一のベクトル処理命令により取り扱われることを可能にすることにより、効率性を提供し得る。
【００４８】
例えば、ベクトル長ＶＬが４であり、ゆえに各データベクトルが４つのデータアイテムを含むシステムの場合、ループ演算における最初の９６個のデータアイテムは、わずか２４（＝９６／４）個のベクトル処理演算により取り扱うことができる。しかしながら、もし、４つのデータアイテムの第２５番目のベクトル全体が処理されるとすると、これは、プロセスデータアイテムの数を、必要とされるループ演算を超過する、１００にするであろう。
【００４９】
そうではなくて、最後のベクトル処理演算は、処理順序１１０内の第９９番目および第１００番目のデータアイテムに関してではなく、（処理順序１１０内の）第９７番目および第９８番目のデータアイテムに関してのみ作動すべきである。
【００５０】
例示的な実施形態は、ループ制御変数などの制御変数により少なくとも部分的に定義されたデータベクトルのうちの１つ以上のデータアイテムに対してベクトル処理命令を適用するようにベクトル処理回路６０を制御するため「ＷＨＩＬＥ」命令を提供している。ＷＨＩＬＥ命令は、処理されるデータアイテムの数がループ上限を超えないようにアクティブ状態に設定するための述語フラグのうちの１つ以上を選択するよう、制御変数に応答する。
【００５１】
この配置の使用の一例が、（純粋にこの例のためだけでは）９８個のデータアイテムが処理され、ＶＬ＝４である、上述の例示的なループ演算において取り扱われるべき最後の３つのデータベクトルを概略的に例示する図５に示されている。
【００５２】
上述のように、９８個のデータアイテムの例示的なループでは、データアイテムは、一度に１データベクトルずつ取り扱われ、この例のデータベクトル長ＶＬが４つのデータアイテムであることを考慮すると、ループカウンタは、０から始まり、ＶＬの単位で進む（０、４、８、１２、…）ことになる。この方法で進むループカウンタの最後の３つのインスタンス、すなわちループカウンタが８８、９２、および次いで９６に設定されているものに関する状況を、図５に概略的に示す。これらの状況のそれぞれに適用可能な述語フラグ３００、３１０、３２０が例示されており、ここでは、１の論理値は「アクティブ」を示し、０の論理値は「非アクティブ」を示す。
【００５３】
述語フラグは、「ＷＨＩＬＥ」命令により、各データベクトルのデータアイテム処理順序１３０に対応する述語フラグの所定の順序に従って設定される。
【００５４】
ｉ＝８８のとき、ＷＨＩＬＥ命令は、４つの全ての述語フラグが１（アクティブ）に設定され得、それらの述語フラグを１に設定する結果として処理されるデータアイテムの総数が依然として９７のループ上限未満であることを検出する。同様に、ｉが９２に進んでいるとき、ＷＨＩＬＥ命令は、４つの全ての述語フラグ３１０が１に設定され得、それでもなお、そのデータベクトルの処理の終了時に、処理されたデータアイテムの数（９６）が依然として９８の総必要数未満であることを検出する。
【００５５】
図５に示す第３のインスタンスでは、ループ制御変数ｉは９６に設定されている。「ＷＨＩＬＥ」命令は、９７のループ上限に適合するためには、ループのこの最後のベクトル処理演算中には処理されるべきデータアイテムがただ２つしかないことを検出する。したがって、ＷＨＩＬＥ命令は、（処理順序１３０内の）最初の２つの述語フラグを１に、（処理順序１３０内の）残りの２つの述語フラグを０に設定し、ステップ２１０における処理演算を、それらの述語フラグに従って行うことができ、依然としてループ制御変数ｉの上限により定義される総演算数を超えないようにする。
【００５６】
その動作の一部として、ＷＨＩＬＥ命令はまた、ステップ２３０の機能の少なくとも一部を提供し、行われるべき処理演算が依然として存在する、つまり、ステップ２２０でＷＨＩＬＥ命令に渡されるｉの値がループ制御変数上限（この例では９７）未満である限り、図３のステップ２１０への制御の戻しを制御するように１つ以上の条件フラグを設定する。
【００５７】
したがって、これは、実行されると、アクティブ状態に設定するように選択された述語フラグの数を考慮に入れて、制御変数の値が算術条件に反しないようにアクティブ状態に設定するための１つ以上の述語フラグを選択するＷＨＩＬＥ命令の一例を提供する。ここで、「考慮に入れる」とは、インクリメントするカウンタの場合は現在のカウンタ値に加算すること、デクリメントするカウンタの場合は現在のカウンタ値から減算することを、意味し得る。アクティブ状態に設定するための１つ以上の述語フラグは、述語フラグの所定の順序、例えば順序１３０に従って選択され得る。
【００５８】
図６は、カウンタ変数に従ったＷＨＩＬＥ命令による述語フラグの設定を表す概略流れ図である。
【００５９】
図６では、ステップ３３０において、ＷＨＩＬＥ命令は、現在のカウンタ（ループ制御変数）値ならびに限界値（本例では、それぞれｉおよび９７）を検出する。ステップ３４０では、ＷＨＩＬＥ命令は、ループ制御変数の値に（この例では）アクティブ状態に設定するために選択された述語フラグの数を加えたものがループ制御変数の上限に反しないように、述語フラグを埋める。
【００６０】
もちろん、他の例では、ループ制御変数は、カウントアップではなくカウントダウンしてもよく、その場合、限界値は、上限値ではなく下限値になるであろうことが理解されるであろう。同様に、ステップ３４０でＷＨＩＬＥ命令により適用される算術テストは、制御変数が下限値より大きいかどうかについてのテストになるであろう。また、例えばループされる演算が限界値の１インスタンス手前で終結するように、「以下」または「以上」のテストが適用されてもよいことが理解されるであろう。一般に、ＷＨＩＬＥ命令により適用される算術条件は、
・制御変数が、上限値未満である、
・制御変数が、下限値より大きい、
・制御変数が、上限値以下である、および
・制御変数が、下限値以上である、
からなるリストから選択される条件であることができる。
【００６１】
図７は、いわゆる「展開された」ループを概略的に例示する。
【００６２】
展開がない場合、ループされる演算の各繰り返しは、単一のデータベクトルだけの分量の処理を行う。次いで、ループは次のループ位置に進み、次のデータベクトルだけの分量の処理が行われ、同様に続く。
【００６３】
ループを「展開すること」は、複数の連続するデータベクトルを単一のループ繰り返し内で処理することを伴う。ループ展開は、ループの各繰り返しを開始および終結させる際に伴う処理オーバーヘッドが、その場合、複数のデータベクトルの処理間で共有されるという点で、例えば、効率性を改善するために行われる。
【００６４】
図７では、データ処理順序４１０を有する処理されるべきデータ４００が、それぞれがベクトル長ＶＬを有する複数のデータベクトル内に、ループ処理の目的で配置されている。図示する例ではＶＬは４に等しいが、もちろん、使用中のベクトル処理回路６０のパラメータに従って異なる値が使用されてもよい。
【００６５】
動作は、各ループ繰り返しにおいて複数のデータベクトルが処理されることを除いて、図３を参照しながら説明したものと類似している。それゆえに、ステップ４２０では、初期パラメータが、図３のステップ２００に類似した様式で設定される。例えば、ループ制御変数またはカウンタは、０に初期化される。次いで、ステップ４３０、４４０、４５０、および４６０で、複数の連続するデータベクトルが、同じ処理を受ける。ステップ４３０は、ループ制御変数ｉにより定義されるデータ４００内の開始位置を有するデータベクトルを処理することを伴う。ステップ４４０は、同じ処理を、ただしｉ＋ＶＬにより定義されるデータ４００内の開始位置を有するデータベクトルに適用し、同様に続く。ループの各繰り返しで処理されるデータベクトルの数は、２以上の任意の数であってよく、この例における４つのデータベクトルの使用は、単にこの説明の目的のためであることが理解されるであろう。ステップ４７０では、ループ制御変数ｉは、ｎが展開されたループの各繰り返しで処理されるデータベクトルの数であるとして、ｎ×ＶＬだけ進められる。ステップ４８０では、ＷＨＩＬＥ命令は、パラメータ（図５および６に関連して論じた述語フラグ）を設定し、ループを継続するか、またはループを継続しないように１つ以上の条件フラグを設定すべきかどうかを検出する。ループが継続される場合、制御は、再びステップ４３０に渡り（例えば、ＷＨＩＬＥ命令が条件フラグなどのフラグを設定し、条件ジャンプまたは分岐命令がその条件に応答することにより）、そうでない場合、プロセスは、終了手順に従う。
【００６６】
図３および７の流れ図は、図５および６の説明と関連して読まれると、データベクトル内のそれぞれの位置に複数のデータアイテムを含むデータベクトルの、制御変数により少なくとも部分的に定義された１つ以上のデータアイテムに対して、算術条件が制御変数に適用される間、その位置に関連付けられたそれぞれの述語フラグの状態に従ってベクトル処理命令を適用するようにベクトルプロセッサを制御するための（ステップ２３０、４８０で論じたような）ＷＨＩＬＥ命令と、現在特定の状態に設定されている述語フラグの数に依存する量だけ制御変数の値を（例えば、ステップ２２０またはステップ４７０において）変化させるためのＣＨＡＮＧＥ命令であって、ＣＨＡＮＧＥ命令の実行が制御変数の値をわずか飽和値まで変化させるように、関連付けられた飽和値を有する、ＣＨＡＮＧＥ命令と、を（例えば、デコーダ回路５０により）デコードすること、ならびに命令デコーダによりデコードされた命令を（例えば、ベクトル処理回路６０および／またはスカラー処理回路８０により）実行することの一例を提供する。
【００６７】
ステップ２３０、４８０は、実行されると、例えば上述の１つ以上の条件フラグを設定することにより、算術条件を制御変数に適用しながらプロセッサに処理ループを実行することを繰り返し継続させるＷＨＩＬＥ命令の一例を提供する。
【００６８】
図８および９は、カウンタ変数により表現され得る値を概略的に例示する。図８の場合、カウンタ変数は、−ＶＡＬの下限と＋ＶＡＬの上限との間の値が表現可能であるような、符号付き変数である。図９の場合、カウンタ変数は、０と＋ＶＡＬの上限との間の値が表現可能であるような、符号なしである。図８の場合、上限および下限は、下限は−ＶＡＬ１であり、上限は＋ＶＡＬ２であって、｜ＶＡＬ１｜と｜ＶＡＬ２｜とが異なる（ただし、｜ｘ｜は、ｘの絶対値または大きさを表す）ように、異なる大きさを有し得ることに留意されたい。例えば、８ビットの符号付き２の補数表現では、−ＶＡＬ１は−１２７であり得、＋ＶＡＬ２は＋１２８であり得る。同様に、図９における＋ＶＡＬの上限は、図８における＋ＶＡＬの上限と必ずしも同じではない。しかし、いずれの場合にも、例示されている原理は、カウンタ変数の特性が、それが表現することができる値の下限および上限により示され得るということである。
【００６９】
図１０および１１は、それぞれインクリメント、およびデクリメントの命令の動作を例示する概略流れ図である。
【００７０】
図１０を参照すると、ステップ５００で、インクリメント命令は、ループ制御変数などの変数を、係数ＭＵＬにより乗算されるパターン（さらに下で説明する）に依存する量だけ増大させるが、値ＭＵＬは、展開されたループのステップ４７０などのステップにおけるこのような命令の使用の例では、ループの１つの繰り返しにおいて処理される、連続するデータベクトルの数に設定され得る。
【００７１】
ステップ５１０で、インクリメント命令は、変数により表現可能な最高値で飽和する。飽和ステップは、以下に関する。ステップ５００の結果が依然としてその変数により表現可能な最高値（＋ＶＡＬなど）未満である場合、ステップ５００の出力が、インクリメント命令の結果として返される。一方、ステップ５００の出力が、その変数により表現可能な最高値を超過し、（例えば）変数がラップアラウンドする（その変数に利用可能なビット数を超過する）か、または他方の表現可能な極値から再スタートすることになる場合、ステップ５１０は、命令の実行により返される出力として表現可能な最高値（＋ＶＡＬなど）に到達しないが、超過しないように、増加を飽和させ、または上限を定める。
【００７２】
飽和（ステップ４７０におけるようにＭＵＬ係数の使用を伴うか、またはステップ２２０におけるように伴わないか、どちらでも）は、ループ制御変数またはカウンタが算術条件に適合する場合にループの継続実行を起こさせるために「ＷＨＩＬＥ」または類似の演算または命令がステップ２３０または４８０で使用される状況では、妥当であり得る。上限を有する上向きカウント型カウンタの一例では、算術条件は、例えば、カウンタ値が特定の限界値未満（または以下）であるかどうか、であってもよい。しかしながら、飽和の機能が使用されていなかった場合は、カウンタが、カウンタ変数により表現可能な最大値を超えて「ラップラウンド」するか、またはカウンタ変数により表現可能な最低（のもしくは別の）値で再スタートするであろうという潜在的なリスクがある。カウンタはＶＬの単位で進むので、「ＷＨＩＬＥ」算術テストは、あるループ繰り返しでは（正しく）パスし、次いで、次のこのようなテストに関しては、カウンタがラップラウンドしてしまって、テストが次の繰り返しでは（誤って）パスすることになってしまう。
【００７３】
わかっている例として、カウンタ変数が単純な８ビット符号なしの値として維持される場合、飽和機能がなければ、カウンタは、０からカウントアップし続け得る前に、２５５の最大カウントに到達し得る。ＭＵＬ×ＶＬが８であり、ゆえにカウンタが８の単位で進み、ループの終了がｉ＝２５３により定義されると仮定しよう。そのとき、カウンタは、ｉ＝２４８ではテストにパスするであろうが、次の繰り返しでは、ｉはラップラウンドして０に戻り、ゆえに（誤って）「未満」テストに再びパスするであろうから、テストはフェイルすべきであった一方で、（例えば）ラップラウンドされた値（０または０に近い）の値はテストにパスするであろうため、ステップ２３０または４８０で「未満」テストを使用することは、うまくいかないであろう。飽和機能は、カウンタを、その最後の繰り返しにおいて２５５で飽和させ、ゆえに、カウンタｉは「２５３未満」テストに（正しく）フェイルするであろう。
【００７４】
飽和値は、カウンタ変数が記憶または維持されている方法の特性であることに留意されたい。それは、ループされる演算のインスタンスによりカウンタ変数に対して課される特定の限界と同じものではない。
【００７５】
これより「パターン」パラメータについて論じる。これは、ベクトル長に従って自動的に拡大縮小する配置を提供し、それにより、同じプログラム命令が、間の再コンパイルを必ずしも必要とすることなしに、異なる利用可能なベクトル長を有するベクトル処理回路のインスタンスにより実行されることを可能にすることに寄与する、利用可能な述語フラグの数に依存する変化量を提供する。
【００７６】
「変化」命令は、ステップ２２０または４７０などの状況で使用されるとき、少なくとも乗算係数ＭＵＬ（これは、１であってもよく、または１より大きく、例えば３ビットのパラメータにより表現可能な値、例えば１、…、８であってもよい）に依存する量だけ変数を変化（インクリメントまたはデクリメント）させる。変化（インクリメントまたはデクリメント）の量はまた、ＶＬ（例えば、ベクトル処理回路により検出される）の表現としての述語フラグの数に依存する。例えば、各述語フラグが１つのデータアイテムに対応する場合、適切な変化は、ＭＵＬ×ＶＬずつであり得る。しかし、他の例では、個別のデータアイテムは、第１の例の２倍の大きさ（例えば、バイトではなくハーフワード）であってもよく、ゆえに、全ての１つおきの述語フラグのみが、有効に使用されているかもしれない。このような場合、ＶＬの実効値は、述語フラグの数の半分であり得、その場合、変化量は、（ＭＵＬ×ｎｕｍｂｅｒ＿ｏｆ＿ｐｒｅｄｉｃａｔｅ＿ｆｌａｇｓ／２）であるべきである。
【００７７】
ＣＨＡＮＧＥ命令は、パターンに従って述語フラグの数を検出し、（ＭＵＬにより乗算した後）その数だけ変数をインクリメントまたはデクリメントする。パターンは、例えば、「全ての述語フラグ」をデフォルトとして、１つおきの述語フラグもしくは４つおきの述語フラグのパターン、または様々な他のパターンであってもよい。この配置は、変化量が、命令が実行されているシステムに利用可能な述語フラグの数に依存するように、自己調整するインクリメントまたはデクリメント命令を提供する。一方で、これは、インクリメントまたはデクリメント命令が、現在利用可能なベクトル長に調整されることになるため、異なる利用可能なベクトル長を有する異なるシステム上で同じ命令が使用され得ることを意味する。
【００７８】
それゆえに、これは、実行されると、述語フラグの数のうちの選択された下位集合に依存する量だけ変数の値を変化させる、ＣＨＡＮＧＥ命令の一例と、修正する値を提供する。述べたように、下位集合は、実際は「全て」であり得ることに留意されたい。選択される下位集合は命令のパラメータに依存し、使用する下位集合の検出は、命令の他の側面を実行する同じ処理回路、配置、または資源による命令の実行の一部である。
【００７９】
図１１は、ステップ５２０で、ループ制御変数などの変数が、パターン量および係数ＭＵＬの積（または他の組み合わせ）だけ減算され、ステップ５３０で、結果が、その変数により表現可能な最小値に飽和される、あるいは言い換えれば、その変数により表現可能な最小量よりも低くならないように制約されるような、デクリメント命令の類似の動作を例示する概略的な流れ図である。
【００８０】
カウンタＩは、スカラー変数であってもよく、ゆえにスカラー処理回路８０により取り扱われ（更新され、テストされ）てもよく、またはデータベクトルもしくはデータベクトルの一部として取り扱われてもよく、ゆえにベクトル処理回路６０により取り扱われてもよいことに留意されたい。
【００８１】
したがって、図１０および１１は、命令パラメータとして修正値（ＭＵＬなど）を有する「変化」命令を実行する例を提供し、ＣＨＡＮＧＥ命令は、述語フラグの数に依存し、かつ修正値に依存する量だけ変数の値を変化させる。例では、修正値は乗算値であり得る。例では、ＣＨＡＮＧＥ命令により設定される制御変数の連続する値の間の差は、修正値に、比例するなどして依存していてもよい。例えば、連続する変化、または差の大きさは、修正値に比例してもよい。
【００８２】
図１の装置は、図１０または１１の流れ図に示されるものに対応する演算を実行するとき、データベクトル内のそれぞれの位置に複数のデータアイテムを含むデータベクトルの１つ以上のデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの状態に従って、ベクトル処理命令を適用するためのベクトル処理回路（レジスタ７０と協力して動作する回路６０など）と、命令パラメータとして修正値（ＭＵＬなど）を有するＣＨＡＮＧＥ命令（例えば、図１０または１１の流れ図により表される）であって、実行されたとき、述語フラグの数に依存しかつ修正値に依存する量だけ変数（ループ制御変数など）の値を変化させるＣＨＡＮＧＥ命令をデコードするための命令デコーダ（デコーダ回路５０など）と、命令デコーダによりデコードされた命令を実行するための命令プロセッサ（スカラー処理回路８０またはベクトル処理回路６０など）と、を備えたデータ処理装置（装置１０など）の一例を提供する。例えば、ＣＨＡＮＧＥ命令は、実行されたとき、述語フラグの数に依存する値と修正値との積に依存する量だけ変数の値を変化させ得る。
【００８３】
ステップ５１０、５３０を参照しながら論じたように、ＣＨＡＮＧＥ命令は関連付けられた飽和値を有してもよく、そのため、ＣＨＡＮＧＥ命令は、実行されたとき、変数の値をわずか飽和値まで変化させる。図８および９を参照しながら論じたように、変数の値を低減させるデクリメント命令の場合、飽和値は、変数により表現され得る最小値であってもよい。変数の値を増大させるインクリメント命令の場合、飽和値は、変数により表現され得る最大値であってもよい。
【００８４】
このような命令が、変数がカウンタ変数であり、ベクトル処理回路が処理ループの１つ以上の繰り返しの間、カウンタ変数によって少なくとも部分的に定義されたデータベクトルにベクトル処理命令を適用する、図７のループされる演算の、例えば、ステップ４７０の文脈で使用されるとき、命令デコーダは、カウンタ変数に依存して処理ループを実行することを繰り返し継続すべきかどうかを検出するために、命令（例えば、ステップ４８０に対応する）をデコードするように構成されていてもよい。このような命令は、例えば、算術条件がカウンタ変数に当てはまる間、処理ループを実行することを繰り返し継続するように処理回路を制御するように条件フラグを設定するための「ＷＨＩＬＥ」命令であってもよい。算術条件の例としては、カウンタ変数が上限値未満であること、カウンタ変数が下限値より大きいこと、カウンタ変数が上限値以下であること、および、カウンタ変数が下限値以上であることが挙げられる。
【００８５】
図１２は、ステップ５５０でベクトル演算が遂行され、ステップ５６０でベクトル処理演算の出力に関係する結果のデータセットが生成される、ベクトル処理演算を例示する概略流れ図である。
【００８６】
純粋に一例として、ベクトル処理演算は、現在のデータベクトルの各データアイテムの固定値との比較であってもよい。比較が真である場合、結果のデータセット内の（対応する位置の）対応するビットが１に設定され、さもなければ、それは０に設定される。
【００８７】
演算のこの種類、および上述の述語フラグは、ループ制御の別の側面、すなわちループ内で行われる処理演算の結果に依存するループからのブレークまたは脱出を取り扱うことにおいて、有用であり得る。
【００８８】
先に論じたように、少なくともいくつかの場合、ベクトル化された演算により取り扱われるデータ１００（図２）は、依然として、データアイテム毎の処理順序１１０を有するとみなされ得る。「ブレーク条件」は、処理されるデータアイテムに対して順序１１０で適用され得る。スカラーシステムでは、ブレーク条件の下で、ループの処理は、条件が真であると検出される、ループを処理する際の最初のインスタンスで終結すべきである。
【００８９】
しかし、処理がベクトル化方式で（データベクトル毎に）行われる場合、複数のデータアイテムが、単一のベクトル処理命令により同時に処理される。スカラーループにおけるブレーク条件の使用を複製するためには、これは、ループが終結されるべきかどうかを決定するために、それぞれの処理されるデータベクトル内においてデータアイテム処理順序１３０（図２）でブレーク条件が評価される必要があることを意味する。ブレークをトリガする（処理順序１３０において）最初のデータアイテムのあとに続くいずれのデータアイテムも処理されるべきではない。
【００９０】
前のとおり、ループ演算を継続すべきかどうかの決定は、条件付きジャンプ、分岐、またはプログラムの流れを変える他の命令の形でなされることができ、ここで、条件は、ブレーク命令などの命令の実行に基づく１つ以上のプロセッサ条件フラグ（例えば、Ｎ、Ｚ、Ｃ、およびＶフラグ）以外で、例えば示され得る。それゆえに、ブレーク命令は、別個の（条件付き分岐またはジャンプ）命令が実際にループを継続させるようにプログラムの流れを変えるか否かを制御するように、１つ以上の条件フラグを設定する効果を有する。（しかしながら、他の例では、ブレーク命令はまた、ジャンプまたは分岐も遂行できることが想定されている）。
【００９１】
図１２の処理演算５５０がブレーク決定の基礎となるべき結果を生成すると仮定すると、いわゆる「前でブレーク」または「後でブレーク」動作を使用して、ステップ５６０で生成されるデータセットに適用されるテストに応答するように述語フラグを設定することができる。これより図１３および１４を参照しながら一例を説明する。
【００９２】
図１３は、「後でブレーク」動作を概略的に例示する。ここで、用語「後で」は、ブレーク動作がループ演算中のベクトル処理命令後に行われることを意味する。ゆえに、ブレーク条件が適用される前の命令は、以前として、ブレークをトリガした特定のデータアイテムについては遂行されるべきである。
【００９３】
図１３の上部の列は、ベクトル処理演算からの結果の集合６００を表し、この例では、結果内の１の存在は、（ブレーク条件下で）ループ演算が終結またはブレークされるべきであることを示す結果であると解される。
【００９４】
図１３の第２の列６１０は、「後でブレーク」動作により生成される述語フラグの集合を概略的に表す。処理順序１３０で動作している図１３の流れ図のステップを参照すると、後でブレーク動作は、ループをブレークする必要を示す結果（結果６０２など）の最初のインスタンスを検出し、ステップ６３０で、順序１３０内のその位置を含みその位置まで、述語フラグを「アクティブ」に設定する。いずれの後続の述語フラグも非アクティブに設定される。ループのブレークを促す条件フラグも、設定される。
【００９５】
同様に、図１４は、ベクトル処理命令が行われる前のブレーク検出に関係する「前でブレーク」動作を概略的に表す。ここでは、ループブレークをトリガしたデータアイテムは、後続のベクトル処理命令により処理されるべきではない。したがって、述語フラグの集合６１２は、ステップ６４０で、ブレークを示す結果の処理順序１３０における最初のインスタンス６０２を検出し、ステップ６５０で、その位置を含まずその位置まで、述語フラグを「アクティブ」に設定することにより、生成される。いずれの後続の述語フラグも非アクティブに設定される。この場合もまた、条件フラグも設定される。
【００９６】
この方法により生み出される述語フラグの集合は、現在取り扱われているデータベクトルに関して、ブレークが取り扱われる前に処理されるべき、データアイテム処理順序１１０内のデータアイテムが、それらの述語フラグが「アクティブ」に設定されていることを考慮に入れると、実際に処理されることを確実にする。もしデータアイテムが個別に処理されていたら、ブレーク条件が試験された後にもれてしまっていたであろう、順序１１０内のデータアイテムは、それらの述語フラグが「非アクティブ」に設定されているおかげで、処理されない。
【００９７】
しかしながら、ベクトル化されたループにおいてブレーク条件を取り扱うことのさらなる側面は、そのデータベクトルを処理する前にループを脱出することである。このプロセスを図１５および１６を参照しながら論じる。
【００９８】
図１５は、この例では、８のベクトル長ＶＬのための８個のフラグの集合からなる、「前でブレーク」動作から結果として生じるブレーク述語フラグの集合を概略的に例示する。順序１３０内の最初の５つの述語フラグは、アクティブに設定され、残りの３つの述語フラグは、非アクティブに設定されている。これは、ブレーク条件が検出され、現在のデータベクトル内の８つのデータアイテムのうちの５つが、ブレーク条件が適用される前に（例えば、条件フラグの制御下で）処理されるべきであることを示す。
【００９９】
図１６を参照すると、ステップ６６０では、「前でブレーク」に関係する図１５のブレーク述語が検出され、ステップ６７０では、（順序１３０内の）最もおしまいの述語フラグが非アクティブであるかどうか（ただし、１つ以上の最もおしまいのフラグが使用され得る）に関する検出がなされる。結果が肯定的である場合、ループは、ステップ６８０でブレークされ、ループされる演算は、例えば上述の１つ以上の条件フラグを設定することにより、終結される。しかしながら、答えが否定的であった場合、ループされる演算は、ステップ６９０で継続される。これは、ループされる演算を実行し、ループされる演算の継続実行のテストとしてデータセットを生成するように構成されている処理回路と、現在のデータベクトルに適用可能な集合のうちの１つ以上の最もおしまいの述語フラグが非アクティブである場合、ループされる演算を終結させるように構成されている処理回路との一例を提供する。
【０１００】
図７を参照しながら論じた展開されたループを考慮すると、もし図１５および１６に関連して論じた種類のブレーク述語が使用されるならば、単一のループ繰り返し内で取り扱われている複数のデータベクトルのうちの１つにブレーク条件が検出された場合に、問題が生じ得る。ゆえに、以下の議論が、データベクトル処理順序を有するデータベクトルに対してベクトル処理命令を適用するために処理回路を使用する配置であって、各データベクトルが、データアイテム順序を有する複数のデータアイテムを含み、処理回路が、データベクトル内の位置にあるデータアイテムに対して、その位置に関連付けられたそれぞれの述語フラグの集合の状態に従って選択的にベクトル処理命令を適用し、アクティブな述語フラグが、ベクトル処理命令が適用されるべきであることを示し、非アクティブな述語フラグが、ベクトル処理命令が適用されるべきではないことを示す配置に当てはまる。
【０１０１】
例えば、図７のベクトル２（ステップ４４０で取り扱われるデータベクトル）内のデータアイテム位置の１つでのブレーク条件の検出を考慮する。上述のブレーク処理は、（ブレークが検出されたベクトルに先行する）ベクトル１についてブレーク述語の全てをアクティブに設定し、ベクトル２内のブレーク述語のうちの一部を、後続のものを非アクティブに設定しつつ、アクティブに設定する。しかし、（これまで説明したように）ブレーク処理は、ベクトル２において検出されるブレークのため、ベクトル３および４が今は処理されるべきではないことは検出しないであろう。
【０１０２】
この問題に対処するためのさらなる方策は、実行されると、データベクトル処理順序において先行するデータベクトルに適用可能な述語フラグの集合に依存して現在のデータベクトルに適用可能な述語フラグの集合を導出するいわゆる伝播命令を使用することであり、その結果、先行するデータベクトルに適用可能な集合の１つ以上の最もおしまいの述語フラグが非アクティブであるとき、伝播命令は、現在のデータベクトルに適用可能な集合内の述語フラグの全てを非アクティブにする。
【０１０３】
（単に説明を助けるためのものであり、単純に例である、図面内に示される特定のビット値を含む）特定の例を、図１７および１８を参照しながら以下に論ずる。しかし、一般的に言えば、今示したばかりの例では、伝播命令は、ベクトル２内の検出されたブレークを、ベクトル３および４に（またはそのループ繰り返し中で処理されているどれほど多くのさらなるベクトルにも）関連付けられたブレーク述語内へ、それらのブレーク述語を「非アクティブ」に設定することにより、伝播させるであろう。
【０１０４】
この配置は、２つの潜在的に有用な効果を有する。第１は、ブレークが検出された最初のものに続くデータベクトルに対する展開されたループされる処理の動作を抑止することである。もう一方は、述語フラグの伝播は、もし、展開されたループにより取り扱われているデータベクトルの集合内のどこかにブレークが検出されるならば、（データベクトル処理順序における）最もおしまいのデータベクトルの（処理順序における）最もおしまいの述語フラグが非アクティブになり、ゆえに制御がステップ６８０に渡され得ることを意味するため、以前と同じテスト、すなわち図１６のステップ６７０におけるテストを、ブレークを検出するために使用することが可能であることである。
【０１０５】
図１７および１８のそれぞれにおいて、プロセスの出力は、述語のそれぞれの「宛先」集合Ｐｄである。これは、先行するデータベクトル（例えば、図７のベクトル２）に関して導出されたブレーク述語を伝播させる、現在のデータベクトル（例えば、図７のベクトル３）に適用可能なブレーク述語の集合を表す。プロセスは、伝播の各インスタンスに関してデータベクトル順序１４０で連続的に行われ、その結果、ベクトル２のＰｄ述語集合は、ベクトル１のブレーク述語を伝播させることにより導出され、次いでベクトル３のＰｄ集合は、ベクトル２の結果を伝播させることにより導出され、次いでベクトル４のＰｄは、ベクトル３からの結果の伝播により導出されることに留意されたい。
【０１０６】
プロセスへの入力は、図１７と１８との間でわずかに異なる。
【０１０７】
図１７の場合、入力は、単一のループ繰り返しにおいて取り扱われている集合の先行するデータベクトルに関するブレーク検出に関係する述語の集合ＰＳ１を含む。これは、（ａ）単一のループ繰り返しにおいて取り扱われているデータベクトルの集合の最初のデータベクトルに関して「前でブレーク」演算により生成されたブレーク述語の集合、または（ｂ）単一のループ繰り返しにおいて取り扱われているデータベクトルの集合の（データベクトル処理順序１４０における）先行するデータベクトルに関して作用する伝播命令により生成されたブレーク述語の集合、または（ｃ）集合の最初のデータベクトルの場合、単一のループ繰り返しにおいて取り扱われているデータベクトルの集合の最初のデータベクトルについても同じ伝播命令を使用することを可能にする、ブレーク述語（全てアクティブ）の集合、であり得る。（最初のベクトルについての代替案は、単純にブレーク動作を使用し、次いで、後続のベクトルについて伝播命令を使用することである）。
【０１０８】
図１７のプロセスへのさらなる入力は、（例えば）上述のループ制御処理の結果を表す述語の一般的な集合Ｐｇと、ステップ５６０で生成され、図１３および１４のプロセスへの入力６００として提供される種類のベクトル処理演算の結果を表すデータセットＰＳ２と、である。
【０１０９】
伝播命令に関係する演算は、図１７の破線ボックス７００により示されており、処理順序において、検出されているブレーク条件の最初のインスタンスの直前までブレーク述語が「アクティブ」に設定される（このことは、一方で、ブレーク条件がデータセットＰＳ２内で検出されない場合、それらが全て「アクティブ」に設定されることを意味する）ステップ７１０（図１３および１４のステップ６２０、６４０に対応する）と、ステップ７１０の結果が出力集合Ｐｄとして提供されるか、または全てゼロの集合（全て非アクティブのブレーク述語）が出力集合Ｐｄとして提供されるかのいずれかであるステップ７２０と、を含む。
【０１１０】
これらの出力のいずれがステップ７２０により提供されるかに関する決定要因は、集合ＰＳ１内の（順序１３０における）最もおしまいのブレーク述語がアクティブに設定されているかどうかである。もしされていれば、このことは、ブレーク条件が先行するデータベクトルに関して検出されなかったこと、およびステップ７１０の結果が現在のデータベクトルに関するブレーク述語の集合として有効に使用され得ることを示す。しかし、集合ＰＳ１における最もおしまいのブレーク述語が非アクティブに設定されている場合、これは、ループ繰り返しにより取り扱われているデータベクトルの集合の先行するデータベクトルに関してブレーク条件が検出されたことを示し、このことは一方で、現在のデータベクトルのいずれのデータアイテムも処理されるべきではないことを意味する。ゆえに、この後者の場合には、全てゼロ（全て非アクティブ）の出力Ｐｄが提供される。
【０１１１】
ステップ７１０は、実行されると、伝播命令が、各述語フラグに対応するデータセットエントリを有するデータセットから、現在のデータベクトルに適用可能な述語フラグの集合の初期状態を生成するという一例を提供する。例えば、各データセットエントリは、複数の可能な状態を有し得、伝播命令は、実行されると、対応するデータセットエントリの特定の状態のデータアイテム順序における最初の出現の直前の述語フラグまで、述語フラグがアクティブ状態に設定されるように、現在のデータベクトルに適用可能な述語フラグの集合の初期状態を生成し得る。図１７のデータセットＰＳ２は、（上述の図１４の例のように）ベクトル処理演算の出力としてデータセットを生成するように構成されている処理回路の一例を提供する。
【０１１２】
一部の例示的な実施形態では、述語ＰＳ１は一般的述語Ｐｇによりゲートされており、集合ＰＳ１内の最もおしまいのブレーク述語が、伝播命令の実行により、対応する一般的述語が「アクティブ」に設定される最もおしまいのブレーク述語である（図１７に例示的な述語７０２として示す）とみなされることに留意されたい。したがって、データベクトル処理順序における先行するデータベクトルに適用可能な述語フラグの集合に対する参照は、一部の例では、集合ＰＳ１内の述語フラグのうちの全てを参照し得、または他の例では、一般的述語Ｐｇ中のアクティブな述語フラグに対応する集合ＰＳ１内の述語フラグのものを参照し得る。これらの後者の配置は、先行するデータベクトルに関連付けられた述語フラグのうちのいずれがその先行するデータベクトルに適用可能であるのかを定義する述語フラグのさらなる集合（Ｐｇなど）に応答する伝播命令の例である。
【０１１３】
したがって、図１７の伝播命令は、展開されたループのループ繰り返しにおいて取り扱われている集合における次のデータベクトルへのブレーク述語の伝播とともに上で述べられた「前でブレーク」のプロセスの機能を含む。ステップ７１０、７２０は、この説明の目的のために別個のステップとして示されているが、伝播命令の実行において単一の総体的な論理演算の一部として実装され得ることに留意されたい。
【０１１４】
伝播命令のさらなる一例を、図１８に概略的に示す。ここで、出力Ｐｄおよび入力ＰＳ１、Ｐｇは、図１７を参照して説明した通りである。しかし、入力ＰＳ２は、実際は、現在のデータベクトルに関する「前でブレーク」命令または演算により生成されたブレーク述語の集合である。故に、入力ＰＳ２は、上述の図１４のプロセスの出力を表す。これは、図１７では、単一の命令が、前でブレークおよび述語伝播のプロセスの機能を提供し得ることが明示されたのに対して、一部の例では、伝播命令が、「前でブレーク」命令とは別個の命令として実装され得ることを明示する。
【０１１５】
述語集合ＰＳ２を入力として、伝播命令の実行により行われる処理７３０は、述語集合ＰＳ２が出力集合Ｐｄとして提供されるか、または全てゼロ（全て非アクティブのブレーク述語）の集合が出力集合Ｐｄとして提供されるかのいずれかである点で、図１７のステップ７２０として説明されるものに類似している。再び、これらの出力のいずれがステップ７３０により提供されるかに関する決定要因は、集合ＰＳ１内の（順序１３０における）最もおしまいのブレーク述語がアクティブに設定されているかどうかである。もしされていれば、このことは、ブレーク条件が先行するデータベクトルに関して検出されなかったこと、および述語集合ＰＳ２が現在のデータベクトルに関するブレーク述語の集合として有効に使用され得ることを示す。しかし、集合ＰＳ１における最もおしまいのブレーク述語が非アクティブに設定されている場合、これは、ループ繰り返しにより取り扱われているデータベクトルの集合の先行するデータベクトルに関してブレーク条件が検出されたことを示し、このことは一方で、現在のデータベクトルのいずれのデータアイテムも処理されるべきではないことを意味する。ゆえに、この後者の場合には、全てゼロ（全て非アクティブ）の出力Ｐｄが提供される。
【０１１６】
図１８の配置および図１７のステップ７２０は、伝播命令が、現在のデータベクトルに適用可能な述語フラグの集合の初期状態に応答し、先行するデータベクトルに適用可能な集合の述語フラグの全てがアクティブであるときは、伝播命令は、実行されると、現在のデータベクトルに適用可能な集合内の述語フラグをそれらのそれぞれの初期状態から導出するという例を提供する。
【０１１７】
伝播命令は、ブレーク状況と関連があるだけでなく、（例えば）展開されたループまたは他の状況において、フラグまたは他の情報があるデータベクトルから別のものに伝播される必要がある場合にも関連があり得る。別の例は、展開されたループまたは他の状況内で、（順序１４０における）最初のデータベクトルに関して処理が完了する前に複数のデータベクトルに基づいてメモリ位置にアクセスするために使用され得る投機的なメモリアクセスの文脈で発生する。投機的なアクセスは、メモリ障害を生成することを避けるために使用されるが、一部の場合では、それは、（順序１１０における）最初の障害発生データアイテムを検出し、障害が対処されるまで（順序１１０における）その後のデータアイテムを処理しないために、有用であり得る。したがって、最初の障害発生フラグは、最初の障害が処置されるまで、またはされない限り（順序１１０における）後続の演算を抑止するために、上述のブレーク条件及び伝播される結果に類似した様式で検出され得る。
【０１１８】
図１９は、上述の機能のうちの一部または全てがそれにより提供される仮想マシンを概略的に例示する。仮想マシンは、データ処理回路８００の一例としての中央演算処理装置（ＣＰＵ）、不揮発性メモリ８１０、制御インターフェース８２０、および入出力（ＩＯ）インターフェース８３０を備え、全てが、バス配置８４０により相互接続されている。ランダムアクセスメモリ（ＲＡＭ）８５０は、ＣＰＵ８００の動作を制御するためのソフトウェア８６０を提供するプログラム命令を記憶する。ソフトウェア８６０の制御の下、ＣＰＵ８００は、上述の処理命令の１つ以上の機能を提供またはエミュレートする。ＲＡＭ８５０はまた、プログラム命令８７０およびデータ８８０を記憶し、ここで、プログラム命令８７０は、図１のプロセッサ２０に適用可能であり、仮想マシンとして機能するＣＰＵ８００により解釈、エミュレート、またはさもなければ実行される命令である。データ８８０は、プログラム命令８７０の（仮想）実行による作用を受けるべき、図１のデータ３２に対応するデータである。したがって、図１９の配置は、機械可読命令（例えば、ソフトウェア８６０）を含むコンピュータプログラムを実行するためのデータプロセッサ（ＣＰＵ８００など）を備えた仮想マシンであって、コンピュータプログラムの実行が、データプロセッサに、上述の種類のデータ処理装置として動作させる、仮想マシンの一例を提供する。例示的な実施形態はまた、コンピュータにより実行されると、コンピュータに上述の技法の１つ以上を行わせるコンピュータソフトウェアにより、およびそのようなコンピュータソフトウェアを記憶する非一時的な機械可読記憶媒体により、表される。
【０１１９】
本出願では、語句「〜するように構成されている」は、装置のある要素が、定義された動作を行うことができる構成を有することを意味するために使用される。この文脈では、「構成」は、ハードウェアまたはソフトウェアの配置または相互接続の様式を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有してもよく、またはプロセッサもしくは他の処理デバイスが、その機能を遂行するようにプログラムされていてもよい。「するように構成されている」は、定義された動作を提供するために、装置の要素が何らかの方法で変更される必要があることを含意しない。
【０１２０】
本明細書において本技法の例示的な実施形態を添付図面を参照しながら詳細に説明してきたものの、本技法はそれらのまさにその実施形態に限定されるものではないこと、ならびに様々な変更、追加、および修正が、添付の請求項により定義される本技法の範囲および趣旨から逸脱することなしに、当業者によってそれらにおいて成し遂げられ得ることが、理解されるべきである。例えば、従属請求項の特徴は、本技法の範囲から逸脱することなしに、独立請求項の特徴と様々に組み合わせることができる。
【図１】
2018521424.tif 000003
【図２】
2018521424.tif 000004
【図３】
2018521424.tif 000005
【図４】
2018521424.tif 000006
【図５】
2018521424.tif 000007
【図６】
2018521424.tif 000008
【図７】
2018521424.tif 000009
【図８】
2018521424.tif 000010
【図９】
2018521424.tif 000011
【図１０】
2018521424.tif 000012
【図１１】
2018521424.tif 000013
【図１２】
2018521424.tif 000014
【図１３】
2018521424.tif 000015
【図１４】
2018521424.tif 000016
【図１５】
2018521424.tif 000017
【図１６】
2018521424.tif 000018
【図１７】
2018521424.tif 000019
【図１８】
2018521424.tif 000020
【図１９】
2018521424.tif 000021
【国際調査報告】
2018521424.tif 000022
2018521424.tif 000023