(57)【要約】  データ処理装置は、データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路と、ベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路であって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、ジェネレータ回路とを備える。
2021515929.tif 000002
【特許請求の範囲】
【請求項１】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路と、
前記ベクトル処理命令のうちの選択されたベクトル処理命令についての前記ベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路であって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの状態を少なくとも示す、ジェネレータ回路と
を備える、データ処理装置。
【請求項２】
前記述語フラグが、各データ要素位置において処理がアクティブか非アクティブかを示し、データ要素が、処理がアクティブであるデータ要素位置において前記ベクトル処理動作によって生成される、請求項１に記載の装置。
【請求項３】
前記命令サンプル・データが、処理がアクティブであることを示す複数の前記述語フラグを示す、請求項１に記載の装置。
【請求項４】
命令サンプル・データが、
すべての述語フラグが、処理はアクティブであることを示すことと、
少なくともいくつかの述語フラグが、処理は非アクティブであることを示すことと、
すべての述語フラグが、処理は非アクティブであることを示すことと
のうちの少なくとも１つを選択的に示すためのイベント・データを含む、請求項３に記載の装置。
【請求項５】
前記ベクトル処理命令のうちの少なくともいくつかが、候補データ要素サイズのセットからデータ要素サイズを定義するように構成され、所与のベクトル処理命令のための前記命令サンプル・データが、前記所与のベクトル処理命令の実行に適用可能なデータ要素サイズを示す、請求項１に記載の装置。
【請求項６】
ベクトル処理命令のうちの少なくともいくつかについて、前記命令の実行に適用可能な前記データ要素サイズが、前記ベクトル処理命令の少なくとも一部によって定義される、請求項５に記載の装置。
【請求項７】
前記候補データ要素サイズのセットのうちの少なくともいくつかのデータ要素サイズについて、各データ要素が、データ要素と関連付けられた述語フラグのグループと関連付けられ、前記述語フラグのグループのサブセットが、前記データ要素位置におけるアクティブ処理な又は非アクティブな処理を示す、請求項５に記載の装置。
【請求項８】
述語フラグの前記サブセットが、述語フラグの各グループの１つの述語フラグを含む、請求項７に記載の装置。
【請求項９】
前記ジェネレータ回路が、述語フラグの所与のグループについて、述語フラグの前記サブセット以外の述語フラグは述語フラグの前記サブセットの状態と同じ状態を有することを示す、命令サンプル・データを生成するように構成された、請求項７に記載の装置。
【請求項１０】
前記ベクトル処理命令のうちの少なくともいくつかが、前記データ・ベクトルのベクトル長を定義するように構成されたベクトル長定義命令であり、現在のベクトル長が、ベクトル長定義命令の実行に応答するレジスタ状態を有するプロセッサ・レジスタによって定義される、請求項１に記載の装置。
【請求項１１】
所与のベクトル処理命令のための前記命令サンプル・データが、前記所与のベクトル処理命令の実行に適用可能なベクトル長を示す、請求項１に記載の装置。
【請求項１２】
前記所与のベクトル処理命令のための前記命令サンプル・データが、前記所与の命令に適用可能なデータ要素サイズと、前記所与の命令の実行に適用可能な前記述語フラグの各々の前記状態を示すデータとを示す、請求項１１に記載の装置。
【請求項１３】
前記ジェネレータ回路が、述語フラグの所与のグループについて、前記現在のベクトル長のベクトルに含まれないデータ要素に関連する述語フラグが所定の状態にセットされたことを示す命令サンプル・データを生成するように構成された、請求項１２に記載の装置。
【請求項１４】
前記ベクトル処理回路が、
プログラム命令を復号するための命令デコーダ回路と、
前記述語フラグに基づいて前記命令デコーダ回路によって復号された命令を実行するための命令処理回路と
を備える、請求項１に記載の装置。
【請求項１５】
前記ジェネレータ回路が、前記命令デコーダ回路による選択された命令の復号に応答して、前記命令サンプル・データの生成を開始し、前記命令処理回路に応答して、前記述語フラグの前記状態を示す前記命令サンプル・データを前記選択された命令の実行時に生成する、請求項１４に記載の装置。
【請求項１６】
前記ベクトル処理命令のうちの前記選択されたベクトル処理命令を選択するための命令選択回路を備える、請求項１に記載の装置。
【請求項１７】
前記命令選択回路が、開始カウント値と最終カウント値との間で命令を数えるように、及びカウンタが前記最終カウント値に達する命令を、選択された命令として、選択するように構成されたカウンタ回路を備える、請求項１６に記載の装置。
【請求項１８】
前記命令選択回路が、前記開始カウント値と前記最終カウント値とのうちの一方又は両方を修飾子値と結合させるように構成された、請求項１７に記載の装置。
【請求項１９】
前記修飾子値が、乱数又は疑似乱数である、請求項１８に記載の装置。
【請求項２０】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用することと、
前記ベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成することであって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの前記状態を少なくとも示す、生成することと
を含む、ベクトル処理方法。
【請求項２１】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、
前記ベクトル処理命令のうちの選択されたベクトル処理命令についての前記ベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理であって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの前記状態を少なくとも示す、ジェネレータ・プログラム論理と
を備えるベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理装置及び方法に関する。
【背景技術】
【０００２】
いくつかのデータ処理配置は、データ・ベクトル内のそれぞれの位置に複数のデータ項目を有するデータ・ベクトルのデータ項目に単一のベクトル処理命令を適用することを含む、ベクトル処理動作を可能にする。それに反して、スカラ処理は、実際に、データ・ベクトルではなくて単一のデータ項目に作用する。
【０００３】
ベクトル処理は、処理されることになるデータの多数の異なるインスタンスで処理動作が実施される場合、インスタンスにおいて有用になり得る。ベクトル処理配置では、単一の命令が、同時に複数のデータ項目（データ・ベクトルの）に適用され得る。これは、スカラ処理と比較してデータ処理の効率及びスループットを向上させることができる。
【発明の概要】
【０００４】
例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路であって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、ジェネレータ回路と
を備えるデータ処理装置が提供される。
【０００５】
別の例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用することと、
それらのベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成することであって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、生成することと
を含むベクトル処理方法が提供される。
【０００６】
別の例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理であって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、ジェネレータ・プログラム論理と
を備えるベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムが提供される。
【０００７】
本開示のさらなるそれぞれの態様及び特徴は、添付の特許請求の範囲によって定義される。
【０００８】
本技法は、単に例として、添付の図面に示されるようなその実施例を参照して、さらに説明される。
【図面の簡単な説明】
【０００９】
【図１】データ処理装置を概略的に示す図である。
【図２】複数のデータ・ベクトルとしてのデータの処理を概略的に示す図である。
【図３】述語フラグの使用を概略的に示す図である。
【図４】ジェネレータの動作の一部を概略的に示す図である。
【図５】選択動作を概略的に示す図である。
【図６】サンプリング動作の一部を概略的に示す図である。
【図７】サンプリング動作の一部を概略的に示す図である。
【図８】修正論理の使用を概略的に示す図である。
【図９】命令サンプル・データの生成の概略的実例を示す図である。
【図１０】命令サンプル・データの生成の概略的実例を示す図である。
【図１１】命令サンプル・データの生成の概略的実例を示す図である。
【図１２】命令サンプル・データの生成の概略的実例を示す図である。
【図１３】命令サンプル・データの生成の概略的実例を示す図である。
【図１４】命令サンプル・データの生成の概略的実例を示す図である。
【図１５】命令サンプル・データの生成の概略的実例を示す図である。
【図１６】命令サンプル・データの生成の概略的実例を示す図である。
【図１７】命令サンプル・データの生成の概略的実例を示す図である。
【図１８】命令サンプル・データの生成の概略的実例を示す図である。
【図１９】命令サンプル・データの生成の概略的実例を示す図である。
【図２０】命令サンプル・データの生成の概略的実例を示す図である。
【図２１】命令サンプル・データの生成の概略的実例を示す図である。
【図２２】命令サンプル・データの生成の概略的実例を示す図である。
【図２３】可変ベクトル長の使用を概略的に示す図である。
【図２４】ベクトル長の変更を説明する概略的流れ図である。
【図２５】命令復号及び発送を説明する概略図である。
【図２６】可変ベクトル長の状況における修正論理の使用を概略的に示す図である。
【図２７】命令サンプル・データの生成の概略的実例を示す図である。
【図２８】方法を説明する概略的流れ図である。
【図２９】本開示に適用可能な仮想化技法を概略的に示す図である。
【発明を実施するための形態】
【００１０】
ここで図面を参照すると、図１は、データ値３２及びプログラム命令３４を記憶するメモリ３０に結合されたプロセッサ２０を備えるデータ処理システム１０を概略的に示す。プロセッサ２０は、メモリ３０からプログラム命令３４をフェッチする及びフェッチ・プログラム命令をデコーダ回路５０に供給するための命令フェッチ・ユニット４０を含む。ベクトル処理回路５２は、デコーダ回路５０及び命令処理回路６０を備える。デコーダ回路５０は、フェッチされたプログラム命令を復号し、復号されたベクトル命令によって指定されたものとしてのベクトル・レジスタ回路７０に記憶されたベクトル・レジスタでベクトル処理動作を実行するために命令処理回路６０を制御するための制御信号を生成する。
【００１１】
プロセッサ２０はまた、スカラ・レジスタ９０と関連付けられたスカラ処理回路８０を備える。
【００１２】
スカラ処理とベクトル処理との一般的区別は、以下のとおりである。ベクトル処理は、データ・ベクトル内のそれぞれの位置に複数のデータ項目を有するデータ・ベクトルのデータ項目に単一のベクトル処理命令を適用することを含む。スカラ処理は、実際には、データ・ベクトルではなくて単一のデータ項目に作用する。
【００１３】
ベクトル処理は、処理されることになるデータの多数の異なるインスタンスで処理動作が実施される場合、インスタンスにおいて有用になり得る。ベクトル処理配置では、単一の命令が、同時に複数のデータ項目（データ・ベクトルの）に適用され得る。これは、スカラ処理と比較してデータ処理の効率及びスループットを向上させることができる。
【００１４】
後述の論考は、例示的プログラム命令３４に関する。本開示の実施例は、そのようなプログラム命令を復号する及び実行するように動作可能な又は構成された、たとえば、図１に示されたタイプの、装置を含む。したがって、図１は、データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路の実例を示す。述語フラグは、ベクトル・レジスタ７０のセットのうちの１つを形成する、レジスタ・ファイル７２に記憶される。
【００１５】
ジェネレータ５５は、デコーダ回路５０及び命令処理回路６０と関連付けられている。ジェネレータ５５は、少なくとも命令処理回路６０の動作を示す命令サンプル・データ６５を生成するために、サンプリング・プロセスを実施する。サンプリングという用語は、データ６５は、（いわゆるトレース・データの生成において事実であり得るように）命令処理回路６０によって実行されるあらゆる命令について生成されないが、命令のサンプルは、ジェネレータ５５によって選択され、選択された命令に関する命令サンプル・データとして獲得された潜在的に詳細な情報であるという事実に関する。
【００１６】
実行される命令全体に対するサンプリングされる命令の比率は、設計上の選択の問題であるが、通常、その比率は、サンプリングされた命令のおよそ１０００分の１から数十万の１になり得る。サンプル・データの進行中のパイプラインを処理する必要がないように、特定の実行される命令の命令サンプル・データの生成のプロセスが、次の命令がサンプリングされるときまでに、完了され得るような比率が有用になり得る。サンプリングは、定期的、たとえばｎ番目の命令ごと（ｎは、恐らくは、１００００）、でもよく、いわゆる命令の系統的サンプリングと称され得る。しかしながら、実行されるコードにおける規則性（ループなどの）は、ｎ命令ごとのサンプリングが、サンプリングされている異なる状況の範囲を与えないことを意味し得る、起こり得る共鳴効果を緩和するために、サンプリング間隔に対するランダム又は疑似ランダム貢献が、使用され得る。これを達成するための技法が、以下にさらに論じられる。
【００１７】
ジェネレータ５５は、メイン・メモリに、たとえばメモリの予約された又は他の方法で割り当てられた領域３６に、命令サンプル・データを書き込む。その際、ジェネレータ５５は、領域３６に書き込まれたデータの量のカウントを保持する（たとえば、カウンタ５７を使用して）。領域が、命令サンプル・データを有する占有率の閾値レベル（たとえば９５％又はさらに１００％）に達したとき、ジェネレータは、割り込み７５をプロセッサ２０に発行してプロセッサに以下のことを行わせる：（ｉ）適切な分析ソフトウェアを実行する汎用コンピュータなどの分析プロセッサ９５に領域３６からの命令サンプル・データを出力する、及び（ｉｉ）カウンタ５７をリセットする。
【００１８】
命令サンプル・データは、プロセッサ２０の動作の多数の異なる態様に関連し得る。本実例において、それは、サンプリングされた命令の実行時の述語フラグの状態に少なくとも部分的に関連する。この特徴は、さらに詳しく後述される。したがって、ジェネレータ５５は、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路の実例を示し、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【００１９】
述語フラグの状態に関連する命令サンプル・データの記憶は、ベクトル処理回路の性能モニタリング、デバッギング及び他の分析において有用になり得る。スカラ処理を介して効率の有益な増加を達成するために、ベクトル化された又は並列な性質の処理が使用されることは適切である。有意な数の述語フラグが、サンプリングされた命令に関して非アクティブにセットされた場合、これは、システムが、それに利用可能な並列ベクトル処理を効率的に使用していない、及び／又は適切に使用されていないベクトル化されたシステムを実行することによって潜在的に電力を浪費しているということを示し得、したがって、これは、潜在的にさらなる調査若しくは診断を、又は検討中の処理タスクのためにスカラ処理を使用することへの転換を潜在的に促し得る。
【００２０】
したがって、これらの実例において、ベクトル処理回路は、以下を備える：プログラム命令を復号するための命令デコーダ回路５０と、述語フラグに基づいて命令デコーダ回路によって復号された命令を実行するための命令処理回路６０。
【００２１】
図２は、複数のデータ・ベクトルとしてのデータの処理を概略的に示す。この配置では、データ項目１００のセットは、処理順序１１０で処理されることが意図されている。ベクトル処理動作において、単一のベクトル処理命令が、データ・ベクトル内のすべてのデータ項目（たとえば、４データ項目、８データ項目又は特定のシステムの支配的なベクトル長ＶＬが何であっても）に同時に適用されるように、データ項目１００は、実際には、連続的データ・ベクトル１２０として処理される。
【００２２】
これを述べた上で、最初の処理順序１１０への任意の参照が処理中に必要とされる場合、これが、ベクトル処理順序１４０においてデータ・ベクトルを考慮すること及びデータ項目処理順序１３０において各データ・ベクトル内のデータ項目を考慮することによって、達成され得るように、各データ・ベクトル１２０は、データ項目処理順序１３０を保持することができ、ベクトルからベクトルにベクトル処理順序１４０が存在し得る。
【００２３】
図３は、ベクトル処理動作を制御するための述語フラグの使用を概略的に示す。
【００２４】
単一のベクトル処理動作が、データ・ベクトル内の異なるデータ項目に異なって適用されるべきである、インスタンスが存在し得る。命令処理回路６０は、述語フラグの使用によって、これをもたらす。述語フラグは、処理動作はそのデータ項目位置に関して実施されるべきかどうかを指示するために、データ・ベクトル内の各データ項目位置について提供されるフラグ情報を含む。実例において、任意の特定のベクトル処理動作が、そのベクトル処理動作へのパラメータとしての１つ又は複数のセットの述語フラグを参照し得るように、命令処理回路６０は、複数のセットの述語フラグにアクセスすることができる。
【００２５】
図３を参照すると、実例の配置は、４つのデータ項目（ＶＬ＝４）を含むデータ・ベクトルを使用するが、これらの配置は異なるベクトル長に適用され得ることが理解されよう。述語フラグによる制御がない場合には、ベクトル処理動作２６０は各データ項目位置に適用されることになるように、実例の入力データ・ベクトル２５０（ベクトルＡ）は、ベクトル処理動作２６０の対象になることになる。しかしながら、述語フラグのセット２７０、各データ項目位置又は「レーン」に１つ、もまた、ベクトル処理動作を制御するために提供される。
【００２６】
入力ベクトル（ベクトルＡ）のデータ項目２５２は、出力データ・ベクトル２８０（ベクトルＢ）のデータ項目２８２を生成するために、ベクトル処理動作２６０に従って処理される。出力データ・ベクトル２８０のデータ項目位置に対応する述語フラグ２７２が、「アクティブ」（たとえば、１の値）にセットされた場合。出力ベクトル位置の対応する述語フラグが、「非アクティブ」（たとえば、０の値）にセットされた場合、次いで、その出力ベクトル位置に関するベクトル処理動作２６０は、実施されない。
【００２７】
前述のように、本実例において、述語フラグは、出力データ・ベクトル２８０に関連する特定の出力位置又は「レーン」のベクトル処理動作が実施されるかどうかを制御する。しかしながら、他の実例では、述語フラグは、入力ベクトル（又は１つ又は複数の入力ベクトル）２５０におけるデータ項目位置が使用されるかどうかを制御するために使用することができる。しかしながら、本実例では、述語フラグは、処理が各データ要素位置においてアクティブか非アクティブかを示し、データ要素は、処理がアクティブであるデータ要素位置においてベクトル処理動作によって生成される。
【００２８】
したがって、これは、アクティブ状態における述語フラグに対応するデータ・ベクトルのそれらの位置にベクトル処理命令は適用されるべきであることを示すアクティブ状態を有する述語フラグの実例を示す。非アクティブ状態は、ベクトル処理動作がそのように適用されるべきではないことを示す。
【００２９】
ベクトル処理動作が、非アクティブ述語フラグのため、特定の出力ベクトル位置２８２に関して実施されない場合、次いで、いくつかの実例では、０などの固定値が、その出力位置に挿入され得る。他の実例では、出力位置の以前のコンテンツは、それらが何であっても、変更のないままにされ得る。
【００３０】
したがって、この方式での述語フラグの使用は、それらの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトル内のそれぞれの位置に複数のデータ項目を含むデータ・ベクトルの１つ又は複数のデータ項目にベクトル処理命令を適用することの実例を示す。
【００３１】
図４は、ジェネレータ５５の機能のうちのいくらかを示す概略図である。セレクタ４００は、命令サンプル・データ４１０を生成するためにどのサンプリング・プロセスが実行されるべきかに関する命令を選択する。さらに詳しく後述されるいくつかの実例では、セレクタ４００は、デコーダ５０からの復号された命令を数えること及び、たとえば、ｎ番目の命令ごとに、サンプリングすることによって、これを達成し、ｎは、恐らく、およそ１０００又は１００００である。
【００３２】
サンプリングされた命令に関連して、セレクタ４００は、その命令の実行を示す命令サンプル・データ４１０を生成するようにサンプラ４２０に指示する。サンプラ４２０は、サンプリングされた命令の実行の時間及び、任意選択で、プロセッサ・レジスタなどにおける値などの命令の実行に関連する他のデータに適用可能な述語フラグ４４０を、復号された命令４３０自体を有する入力として提供され得る（たとえば、命令タイプ及び、任意選択で、命令に関連する語長、図７に関連して後述されることになる特徴、を検出するために）。
【００３３】
したがって、これらの実例では、ジェネレータ回路が、命令デコーダ回路５０による選択された命令の復号に応答して、命令サンプル・データの生成を開始し、命令処理回路に応答して、選択された命令の実行時に述語フラグの状態を示す命令サンプル・データを生成する。
【００３４】
これらのデータから、サンプラ４２０は、サンプリングされた命令に関連する命令サンプル・データ４１０を用意する。
【００３５】
命令サンプル・データの概略的実例は、以下の例示的フィールドを含む：
・命令タイプの指示
・命令によってセットされる単語又は要素の長さの指示
・命令の実行時に適用可能なベクトル長の指示
・命令の実行時の様々なプロセッサ・レジスタの内容の指示
・命令の実行時に適用可能な述語フラグの指示（たとえば、後述されるカウント値及び／又はイベント・データ、及び／又は述語フラグのセットのコピー）
【００３６】
図５は、セレクタ４００の動作の実例を概略的に示す。カウンタ５００は、デコーダ５０から受信された連続的命令を数える。カウントは、たとえば、上昇カウント（たとえば、０から）又は下降カウント（たとえば、０へ）でもよい。より一般的には、カウントは、開始カウント値から最終カウント値までである。上昇カウントを含む実例として、コンパレータ５１０が、現在のカウント値を閾値５２０（最終カウント値を表す）と比較し、カウント値が閾値に達したとき、そのカウント位置における関連命令、たとえば命令５３０、が、サンプリングのために選択される。
【００３７】
任意選択で、閾値５２０は、たとえば基準値の特定の数の最下位ビット（ＬＳＢ：ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ）に適用可能な、ランダム又は疑似ランダム値などの修飾子値（modifier value）５６０を有する加算器又は他の結合器５５０によって加えられた基準値５４０から導出することができる。ランダムに選ばれた又は疑似ランダムに選ばれた閾値が、どちらの方向にカウントが進んでいるかに応じて開始カウント値又は最終カウント値として適用され得る。
【００３８】
したがって、これらの実例において、命令のうちの選択された（サンプリングされた）命令を選択するための命令選択回路（セレクタ４００によって実施される）は、開始カウント値と最終カウント値との間で命令を数えるように、及びカウンタが最終カウント値に達する命令を、選択された命令として、選択するように構成されたカウンタ回路を備える。任意選択で、命令選択回路は、乱数又は疑似乱数などの、修飾子値を有する開始カウント値及び最終カウント値のうちの一方又は両方を結合させるように構成することができる。
【００３９】
図６は、それぞれのベクトル・レーンにおけるアクティブ処理を示す述語フラグの数を数えるカウンタ動作６００を含む、サンプラ４２０の動作の１つの態様を概略的に示す。カウンタ６１０の出力は、処理がアクティブであることを示す複数の述語フラグ及び／又はいわゆるイベント・データ、たとえば、述語フラグがセットされなかったことを示すフラグ又はすべての利用可能な述語フラグがセットされたことを示すフラグ、を示すための、或いは、言い換えれば、少なくとも以下のうちの１つを選択的に示すための、８、１２、１４…などのカウントでもよい：すべての述語フラグが処理はアクティブであることを示す、少なくともいくつかの述語フラグが処理は非アクティブであることを示す、そして、すべての述語フラグが処理は非アクティブであることを示す。このようなイベント・データの使用は、述語フラグの状態に関する潜在的に有用な情報をやはり提供しつつ、潜在的により低いデータ品質が命令サンプル・データのために使用されることを可能にする。
【００４０】
図７は、オペコードの一部としてデータ要素又は語長７１０を指定する命令オペコード７００について、検出器７２０が、命令サンプル・データ４１０の少なくとも一部として、現在のサンプリングされた命令に適用可能な語長を示すデータ７３０を生成するという点において、サンプラ４２０の動作の別の潜在的態様を概略的に示す。
【００４１】
したがって、これらの実例において、ベクトル処理命令のうちの少なくともいくつかは、候補データ要素サイズのセットからデータ要素サイズを定義するように構成され、所与のベクトル処理命令のための命令サンプル・データが、所与のベクトル処理命令の実行に適用可能なデータ要素サイズを示す。たとえば、命令は、後続の命令のデータ要素サイズをセットし得るが、ベクトル処理命令のうちの少なくともいくつかについて、その命令の実行に適用可能なデータ要素サイズは、そのベクトル処理命令の少なくとも一部によって定義される。
【００４２】
図８は、可変語長を有するシステムとの関連で適用することができる述語フラグの特徴を概略的に示す。
【００４３】
実例として、可変語長の範囲内で、少なくとも最も小さい語長のそれぞれの可能なインスタンスのために単一の述語フラグを提供することが適切である。たとえば、図８では、述語フラグ８００は、最も短い利用可能な語長のインスタンスに適用可能である。しかしながら、より長い語長が使用される場合、特定のベクトル長について、ベクトル処理レーンに対する述語フラグの比率は、１：１より大きくなり得る。具体的には、たとえば、述語フラグのペア８１０が、より長い語長において個々のベクトル処理レーンに適用可能になり得るように、より長い語長を有して、同じベクトル長は、より少数のベクトル処理レーンをもたらすことになる。他の実例において、４つ以上の述語フラグのグループが、単一のレーンに適用可能になり得る。
【００４４】
規則が、時には提供され、それにより、グループ８１０などのデータ要素に関連する述語フラグのグループについて、述語フラグ８００（たとえば、そのレーンに適用可能な最下位の桁における述語フラグ）などの、そのグループのサブセットが、そのデータ要素位置において処理はアクティブか非アクティブかを示すために使用される。図８の実例において、グループ８１０の他方の述語フラグ８２０は、冗長であり、未指定の値を有し得る。
【００４５】
言い換えれば、候補データ要素サイズのセットの少なくともいくつかのデータ要素サイズについて、各データ要素は、データ要素と関連付けられた述語フラグのグループと関連付けられ、述語フラグのグループのサブセットは、そのデータ要素位置におけるアクティブ又は非アクティブ処理を示す。たとえば、述語フラグのサブセットは、述語フラグの各グループ８１０の１つの述語フラグ８００を含み得る。
【００４６】
本開示は、述語フラグの数が前述のように数えられる、サンプリングされるシステムにおいて、未定義の値及び冗長機能を有する述語フラグ８２０などの述語フラグを有することは、潜在的に、誤解を招く命令サンプル・データの生成につながり得ることを認識する。
【００４７】
これに対処するために、ジェネレータ５５は、任意選択で、グループ８１０などの述語フラグの所与のグループについて、述語フラグ８００のサブセット以外の述語フラグ（冗長フラグ８２０など）を述語フラグのサブセットの状態と同じ状態にセットするように作動する、いわゆる修正論理８３０を含む。次いで、サンプリング回路８４０が前述の技法を使用して命令サンプル・データ８５０を生成することによって、たとえば集計するサンプリングが行われる。
【００４８】
そのようにして、たとえば、グループ８１０の述語フラグ８００が、「アクティブ」にセットされた場合、次いで、修正論理８３０は、述語フラグ８２０を「アクティブ」にセットする。
【００４９】
重要なことには、修正論理８３０は、プロセッサ２０によって参照される実際の述語フラグを修正する必要はなく（これらの実例では、修正せず）、サンプリング回路８４０によって処理されるフラグをただ修正すればよいことに留意されたい。
【００５０】
これらの配置のいくつかの特定の実例が、図面の左手側にある最上位ビットから図面の右手側にある最下位ビットに配置された２５６ビットのベクトル（実例として）をそれぞれの場合に表す、図９から２２を参照して、ここで論じられる。「Ｖ」のラベルを付けられた上の段は、使用中のベクトルを表し、「Ｐ」のラベルを付けられた下の段は、述語フラグを表す。「１」の表記は「アクティブ」を表し、「０」は「非アクティブ」を表す。「Ｘ」の値は、冗長述語フラグ位置における未定義の又は不定の値を表す。
【００５１】
図９を参照すると、実例は、４×６４ビットの要素又は単語を与えられている。ここで、位置０、８、１６、２４にある述語フラグは、図８の述語フラグ８００に対応するサブセットを表す。この実例での最小語長は８ビットなので、３２述語フラグが、２５６ビットのベクトルのために提供されることに留意されたい。位置１…７、９…１５、１７…２３及び２５…３１における述語フラグは、それらはベクトル・レーンがアクティブか非アクティブかに関する命令処理回路６０による判定に関連していないため、未定義である。
【００５２】
図１０において、８×３２ビットの要素の実例が提供されている。ここで、位置０、４、８、１２、１６、２０、２４、２８における述語フラグは、そのベクトル処理レーンがアクティブか非アクティブかに関する命令処理回路６０による判定に関連するサブセットを表し、残りの述語フラグは未定義である。
【００５３】
図９及び１０の実例において、すべての要素は、ベクトル内のアクティブ・レーン位置にある。
【００５４】
図１１は、すべてのベクトル・レーンが、そのサブセットの位置において述語フラグ「０」によって示されるように、非アクティブであることを除いて、図１０の配置と類似の配置を示す。
【００５５】
別の類似の配置が図１２に示され、そこでは、偶数の３２ビットの要素はアクティブであり、奇数の３２ビットの要素は非アクティブである。
【００５６】
位置０、８、１６、２４のみが、アクティブ又は非アクティブ状況を示すサブセット内にあるので、６４ビットの要素のすべてはアクティブであると考えられるが、図１３は、図１２のそれと同じセットの述語フラグを使用する、図９の４×６４ビットの実例に戻る。
【００５７】
修正論理の動作が、ここで、図１４から２２を参照してさらに説明される。ここで、「Ｓ」のラベルを付けられたさらなる段は、修正論理８３０によって修正されたものとしてのサンプリング回路８４０によってサンプリングされたサンプル値８３５を表す。前述のように、修正論理は、プロセッサ２０によって参照される実際の述語値を修正する必要はないが、値が数えられるやり方を修正する。
【００５８】
図１４から１８は図９から１３と同じベクトル及び述語値を示すことに留意されたい。図１９から２３は同じ述語値を示すことにも留意されたい。
【００５９】
図１４の実例において、修正論理８３０は、６４ビットの要素システム内の述語フラグのサブセット（０、８、１６、２４）以外の述語フラグを、数えることを目的として、述語フラグのサブセットのそれと同じ状態にセットした。そうして、各要素位置又はレーンについて、そのレーンのアクティブ又は非アクティブ状況を示す述語フラグの状態は、そのレーンに関連付けられた他の述語フラグを横断して複製される。この配置に適用可能なカウント値は、すべての述語値がセットされたことを示す３２である。
【００６０】
類似の配置が、３２のカウントに再びつながる、すべてのレーンがアクティブな８×３２ビットの要素システムに関して図１５に示される。
【００６１】
図１６では、８×３２ビットのレーンは、すべて非アクティブであり、そして、修正論理８３０によるデータ８３５出力において、サブセット（０、４、８、１２、１６、２０、２４、２８）以外の述語フラグは、同じ状況にセットされ、述語フラグのそれぞれのサブセットは０のカウントをもたらす。
【００６２】
図１７は、８×３２ビットの要素の実例であり、この実例では、偶数のレーンはアクティブであり、奇数のレーンは非アクティブである。前述の技法を適用することによって、カウント値は、レーンのうちの半分がアクティブであり、半分が非アクティブであることを正確に示す、１６である。
【００６３】
図１８は、修正論理８３０のプロセスが３２アクティブ述語フラグのカウントをもたらす、そのすべてがアクティブである４×６４ビット要素の実例である。
【００６４】
別の極値において、図１９は、各述語フラグ位置が個々の処理レーンを表すような３２×８ビットの要素の実例を示す。示された実例において、カウントは１５である。
【００６５】
別の任意選択の語長において、図２０は、その一部がアクティブである及び一部が非アクティブである１６×１６ビットの要素の実例を示すが、修正論理８３０の処理を適用することによって、１４／３２の比率の要素がアクティブであることを正確に示す、１４のカウントが、取得される。
【００６６】
図２１は、８×３２ビットの配置に関連し、再び、この配置では、修正論理８３０の処理は、レーンの５０％がアクティブであることを正確に示す、１６のカウントをもたらす。
【００６７】
最後に、図２２は、４×６４ビットの要素の実例であり、この実例では、修正論理８３０の処理は、再び、すべてのレーンがアクティブであることを正確に示す、３２のカウントをもたらす。
【００６８】
図２３は、ベクトル・プロセッサの制御回路及び部分を概略的に示す。
【００６９】
ベクトル処理は、データ項目のセット又はベクトルに関連して、一般に並行して、同じ処理動作を実施することによって、適用される。この配置は、それぞれの処理レーン（データ・ベクトル内の１つのデータ項目に適用される処理に対応する１つの処理レーン）の様々な計算構成要素及びレジスタ・ストレージに依存し得る。図２３において、レジスタ２３００のセット及び計算及び制御要素２３１０のセットは、ベクトル・プロセッサによって使用される処理配置の単純化された表現を与える。各処理レーンのために１つのレジスタ２３００及び１つの処理要素２３１０が存在する（しかし、より多数の構成要素が処理レーンの実際の実装形態に含まれ得ることが理解されよう）。いくつかのベクトル命令のための処理レーンより少数の処理要素が存在し得る、及びそれらのベクトル命令は、たとえば、後述の技法を使用して、「解読される」又は複数のより小さい命令に分割される、及び／又は、それらのベクトル命令のスーパー・スカラ実行を可能にするために、いくつかのベクトル命令のための処理レーンより多数の構成要素が存在し得ることにも留意されたい。図２３に示す処理レーンの総数は、システムの最大可能データ・ベクトル長（「Ｍａｘ  ＶＬ」）に対応する。これは、データ・ベクトル幅の物理上限値であり、それらすべてが、制御回路２３６０によって有効にされた場合（すなわち、現在のサブセットの無効にされたレーンが、０である場合）にベクトル・プロセッサに利用可能な処理レーンの数を表す。しかしながら、本実施例では、制御回路２３６０の制御下で、より小さいデータ・ベクトル幅が、最大データ・ベクトル幅Ｍａｘ  ＶＬの代わりに選択的に使用され得る。
【００７０】
通常のシステムにおいて、Ｍａｘ  ＶＬは、図２３に概略的に示されたものよりもはるかに大きくなり得ることが、理解されよう。たとえば、Ｍａｘ  ＶＬは、２５６ビット、５１２ビット、１０２４ビット又は別の値になり得る。ここで、たとえば、「２５６ビット」は、３２８ビット以下の要素、又は１６１６ビット以上の要素、又は４６４ビット以下の要素を表す。図２３のＭａｘ  ＶＬの実例の値は、単に説明を目的としたものである。
【００７１】
制御回路２３６０は、レジスタ２３９０に記憶された、及び後述されることになるＶＬを変更するための命令の実行に応答して制御回路２３６０によって維持された、ＶＬの現在の値に応答して、無効にされたサブセットの処理レーンが、ベクトル処理回路による使用のために利用不可能になるように、１サブセットの処理レーンの動作を無効にするように構成される。したがって、レジスタ２３９０の使用は、ベクトル長定義命令の実行に応答するレジスタ状態を有するプロセッサ・レジスタによって現在のベクトル長が定義されていることの実例を示す。
【００７２】
この選択的無効化は、様々なやり方で達成することができる。
【００７３】
実例において、制御回路２３６０は、たとえばサブセットの処理レーンへの電力供給を無効にすることによって、サブセットの（無効にされた）処理レーンから選択的電力を除去するように、それぞれの処理レーンの少なくとも部分（又はすべて）に電力を供給する電力供給ユニット（ＰＳＵ：ｐｏｗｅｒ  ｓｕｐｐｌｙ  ｕｎｉｔ）２３２０の動作を制御する。
【００７４】
別の実例において、制御回路２３６０は、それぞれの処理要素２３１０の動作を無効にするために、サブセットの処理レーンに制御信号を供給する。処理要素は、たとえば、残りの回路、電力供給ゲーティング又はクロック・ゲーティング（下記参照）からの切断によって選択的に無効にすることができる、演算論理ユニット、乗算器などを含み得る。
【００７５】
別の実例において、レジスタ要素２３００からの読み取り及びそこへの書き込みを制御する、読み取り／書き込み論理２３３０は、サブセットの（無効にされた）処理レーンに対応するレジスタ要素２３００からの読み取り又はそこへの書き込みを抑止するように制御回路２３６０の制御下で動作する。この実例では、各処理レーンは、レジスタ要素２３００などの１つ又は複数のデータ・レジスタを備え、ベクトル処理回路は、データ・レジスタ内にメモリ（図２３には示されていないが、図１にメモリ３０として示されている）からデータをロードするように及びレジスタからメモリにデータを書き込むように構成され、そして、制御回路２３６０は、ベクトル処理回路がサブセットの処理レーンに対応するデータ・レジスタからメモリにデータを書き込むことを抑止するように構成される。
【００７６】
実例において、現在無効にされている処理レーンに対応するレジスタは、完全に無効にする又は電源を切ることができ、或いはそれらの内容は、現在無効にされている処理レーンに対応するそれらのレジスタへのアクセスが阻止又は抑止されるというような方法で、（それらに電力を提供することによって、又はレジスタ２３００の不揮発性記憶素子を使用することによって）保持することができる。これは、たとえば、サブセットの処理レーンに対応するデータ・レジスタによって保持されるデータ値を維持することを含む、サブセットの処理レーンに対応するデータ・レジスタによって保持されるデータ値をベクトル処理回路が変更することを抑止するように構成されている制御回路２３６０の実例である。
【００７７】
他の実例において、前述のように様々な構成要素への電力供給を変更することの代わりに（又はそれに加えて）、制御回路２３６０は、いわゆるクロック・ゲーティング・プロセスを適用することができる。実例が、読み取り／書き込み論理２３３０に関して図２３に概略的に示されているが、同配置は、レジスタ２３００及び／又は処理要素２３１０などの処理レーンの他の態様に適用することができる。クロック信号ＣＫは、読み取り／書き込み論理に（又は、無効にされた処理レーンに適用可能な読み取り／書き込み論理の部分に）供給される前にクロック・ゲート２３３２によって処理される。制御回路２３６０からの信号の制御下で、クロック・ゲート２３３２は、クロック信号ＣＫを渡す又は遮断する。そうして、１つ又は複数の処理レーンを無効にすることの少なくとも一部として、クロック信号ＣＫは、それらの処理レーンに関連する１つ又は複数の構成要素から遮断され得る。
【００７８】
サブセットの処理レーンを無効にすることは、無効にされたレーンに関連するバス・ドライバなどの通信回路を無効にすること（たとえば、クロック・ゲーティング又は電力ゲーティングによって）もまた（又はその代わりに）含み得る。
【００７９】
さらなる実例において、セットの処理要素及びレジスタは、クロスレーン動作（そこで、レジスタの内容は、１つ又は複数の他のレジスタの内容に関して実施される動作に依存し得る）を行うように配置されたいわゆる順列論理（ｐｅｒｍｕｔｅ  ｌｏｇｉｃ）を含み得る。実例において、順列論理は、（ａ）１つ又は複数の現在無効にされているレーンの内容から現在アクティブなレーンの内容を導出することと、（ｂ）現在無効にされているレーンの内容を導出することとのいずれか又は両方を行う動作を実施することを抑止されるように、制御回路２３６０の制御下で動作する。
【００８０】
これらの手法の組合せ、及び他の類似の手法が、サブセットの処理レーンの動作を無効にする機能を実施するために、使用され得ることが理解されよう。変更形態は、述語フラグの使用と時に称される配置とは異なることもまた理解されよう。述語フラグは、ベクトル・プロセッサのそれぞれの処理レーンに関連する条件付き実行をもたらす。そのような状況で、レーンは、ベクトル・プロセッサによる使用のために利用可能なままである。一方、本配置では、サブセットの処理レーンは、ベクトル・プロセッサによる使用のために利用可能でなくなるように、無効にされ、ベクトル・プロセッサは、それが最大データ・ベクトル長に対応する数より少数の処理レーンを単に有するかのように、動作する。本出願に関連して無効にされたレーンは、メモリに書き戻されない。
【００８１】
述語付きレーン（predicated lane）は、レジスタ書き戻しの一部として保存され得る。具体的には、マージするベクトル・ロードは、指定レジスタによって最初に保持された残りの値を保存しつつ、１サブセットの要素のみをロードすることができる。ＯｏＯ（ｏｕｔ  ｏｆ  ｏｒｄｅｒ：アウト・オブ・オーダー）プロセッサにおいて、名前変更は、名前変更の前に宛先レジスタから新たに名前変更されるレジスタへのそれらの残りの値の移動を必要とし得る。本システムの実例は、無効にされたレーンの内容に関する保証を行わなくてもよい。
【００８２】
別の実例において、支配的なベクトル長ＶＬがＭａｘ  ＶＬ未満である場合に不必要な構造体に電力を提供しないこと又はその動作を有効にしないことによって節電するために、制御回路２３６０は、たとえば、それらのデータ構造体への電力供給を制御することによって及び／又は前述のようなそれらのデータ構造体のクロック−ゲーティングによって、制御回路によってセットされたデータ・ベクトル長に応じて命令待ち行列２３６４内のデータ構造体の一部の動作を選択的に無効にするように構成される。
【００８３】
実例の実施例において、所与のベクトル処理命令のための命令サンプル・データは、所与のベクトル処理命令の実行に適用可能なベクトル長を示す。これは、レジスタ２３９０に記憶されたような、サンプル命令の実行に適用可能な現在のＶＬを示す命令サンプル・データ２３８５を生成するように構成されたＶＬデータ・ジェネレータ２３８０を備えるジェネレータによって、達成することができる。
【００８４】
図２４は、制御回路２３６０によるレジスタ２３９０におけるベクトル長の設定の実例を示す概略的流れ図である。この実例では、より低いセキュリティ・モードによって使用するためのベクトル長は、単に、より高いセキュリティ・モードで動作するプログラム・コードによってセットすることができる。他の実例において、任意の命令が、ＶＬを変更するために使用され得る。
【００８５】
プロセッサ２０は、２つ以上のセキュリティ・モードで処理活動を実行するように構成される。セキュリティ・モードは、セキュリティ・モードのうちの１つで実行される処理活動がキュリティ・モードのうちのもう１つのセキュリティ・モードで実行される処理活動に関連する少なくともいくつかの情報にアクセスすることを抑止するように配置され得る。たとえば、より低いセキュリティ・レベル・モードにおけるプロセッサ２０の動作が、より高いセキュリティ・レベル・モードにおける処理要素の動作に関連する少なくともいくつかの情報（レジスタ内容、又はアドレス空間の部分など）にアクセスすることができない（又は、少なくともアクセスすることを抑止される）ように、より高いセキュリティ・レベル・モード及びより低いセキュリティ・レベル・モードを含む２つ以上のセキュリティ・モードが、提供され得る。他の実例では、プロセッサ２０が、２つ以上の補完的セキュリティ・モードのうちの１つで動作しているとき、プロセッサ２０は、２つ以上の補完的セキュリティ・モードのうちの別のセキュリティ・モードでの動作に関連する少なくともいくつかの情報にアクセスすることができないように、２つ以上の相互排他的なセキュリティ・モードが、提供され得る。これらの配置は、結合され得る。
【００８６】
プロセッサの異なるセキュリティ・モードの１つの使用は、仮想化に関連し、そこでは、複数のオペレーティング・システムが、いわゆるハイパーバイザの各制御又は監督下で、いわゆる仮想機械としての単一のプロセッサ上に共存する。様々なステップが、異なる仮想機械の間の不適切な干渉を回避するために、取られ得る。たとえば、アプリケーションは、最も低いセキュリティ・レベルで動作し得、オペレーティング・システムは、次のより高いセキュリティ・レベルで動作し得、そして、ハイパーバイザは、さらにより高いセキュリティ・レベルで動作し得る。このようにして、オペレーティング・システムのうちの１つの下で動作するアプリケーションがオペレーティング・システムのうちの別のオペレーティング・システムの下で動作するアプリケーションによって使用される情報を破損することを回避する（たとえば）ために、保護が、システム内に構築され得る。
【００８７】
セキュリティ・モードの一時的変更は、１つのセキュリティ・モードで動作するプログラム命令から異なるセキュリティ・モードの下での機能又はサブルーチンへの分岐として実装することができる。プロセッサに関連付けられたレジスタが、第１の（最初の）セキュリティ・モードによって使用されるものとしてのそれらのレジスタの内容の破損を必ずしも開示せずに又は可能にせずに、第２の（新しい）セキュリティ・モードにおいて使用されることを可能にするために、プロセッサ２０がプロセッサ・スタックなどのメモリ・ストレージにそれらのレジスタを記憶することが適切になり得る。これはまた、機能又はサブルーチンへの分岐が生じたときに適用した同じレジスタ・パラメータで第１のセキュリティ・モードにおける処理活動が再開することを可能にする。
【００８８】
図２４を参照すると、ステップ２４００において、プログラム・コードが、データ・ベクトル長ＶＬ１に従って、より低いセキュリティ・モードで実行される。ステップ２４１０において、より低いセキュリティ・モードのプログラム・コードが、より高いセキュリティ・モードを呼び出す。制御が、より高いセキュリティ・モードに転送され、ステップ２４２０で、より高いセキュリティ・モードで動作するプログラム・コードが、ベクトル処理命令のうちの少なくともいくつかはデータ・ベクトルのベクトル長を定義するように構成されたベクトル長定義命令であることの実例としてのベクトル長変更命令を実行することによって、より低いセキュリティ・モードに適用可能なベクトル長を新しいベクトル長ＶＬ２にセットする。これは、レジスタ２３９０における支配的なＶＬ値を変更する。ステップ２４３０で、より低いセキュリティ・モードへのリターン・バックを実行する。ステップ２４４０で、より低いセキュリティ・モードが、ベクトル長ＶＬ２でプログラム・コードを実行する。
【００８９】
したがって、これは、より低いセキュリティ・モードで実行される命令が、より高いセキュリティ・モードで実行される命令によってアクセス可能なデータ項目にアクセスすることができないような、複数のセキュリティ・モードで動作可能な装置の実例を示し、制御回路２３６０は、現在のセキュリティ・モードにおける長さセット命令の復号に応答して、より低いセキュリティ・モードに適用可能なデータ・ベクトル長をセットする。
【００９０】
しかしながら、ベクトル長がより高いセキュリティ・モードでセット又は指定されることは要件ではないことに留意されたい。この変更を行うためにはセキュリティ・モードを変更するという要件が存在する必要はない。本技法は、ベクトル長をセットするために使用される機構に関係なく不正確に又は不十分に選択されたベクトル長を検出することに関係する。
【００９１】
制御回路２３６０によってベクトル長ＶＬをセットするプロセスは、１（又は２、「ベクトル」という用語を有用な方法で適用するために）からＶＬ  Ｍａｘまでの任意のＶＬ値を可能にし得る。しかしながら、いくつかの実例では、ＶＬの選択可能な値は、１サブセットのすべてのそのような利用可能な値に制限される。たとえば、ＶＬ  ＭａｘとＶＬの選択可能な値との両方が、１２８の倍数などの特定の値の倍数に限定され得る。実例として、Ｍａｘ  ＶＬが１０２４である場合、ＶＬは、１２８、２５６、３８４、５１２、６４０、７６８、８９６又は１０２４ビット（前述を参照）のうちのいずれか１つになるように制御回路６２によってセットされ得る。実例において、クロック・ゲーティング、電力ゲーティング又は他の技法が、それぞれのそのような要素への個々の注意を必要とするのではなくて、バンクごとに適用され得るように、ベクトル・プロセッサによって使用される少なくともいくつかの構成要素（たとえば、レジスタ４００、処理要素４１０など）は、（例えば）１２８ビットの広いユニットのバンクにおいて配置され得る。
【００９２】
ＶＬセット命令は、ベクトル長の絶対値の変更、たとえば「ＶＬを６４にセットする（Ｓｅｔ  ＶＬ  ｔｏ  ６４）」、を実装することができることに留意されたい。しかしながら、ＶＬセット命令はそれ自体がベクトル長に依存しない（つまり、それは、異なる物理的制限又はＭａｘ  ＶＬを有する異なるデータ処理装置に正確に作用することになる）ことを実現するために、もう１つのオプションは、その特定のデータ処理装置に関するＭａｘ  ＶＬが何であってもＶＬセット命令が、ベクトル長を特定の比率のＭａｘ  ＶＬにセットするように、定義及び実行されるということである。たとえば、命令は、「ＶＬをＭａｘ  ＶＬ／４にセットする（Ｓｅｔ  ＶＬ  ｔｏ  Ｍａｘ  ＶＬ／４）」という形式でもよい。したがって、本論考におけるベクトル長ＶＬ１、ＶＬ２は、絶対ベクトル長として又は特定の実行装置のＭａｘ  ＶＬを参照して表される相対的ベクトル長として解釈されるべきである。２の累乗であるＭａｘ  ＶＬ値の使用、及びＭａｘ  ＶＬに対する２の累乗によってＶＬを変えるＶＬセット命令は、これに関連して有用であることに留意されたい。したがって、Ｓｅｔ  ＶＬの異なるバージョン又は「フレーバ」が、考慮され得る。Ｓｅｔ  ＶＬは、固定サイズ（たとえば、１２８ビット）の倍数を定義する即値又はレジスタ依存のオペランドに従って、作動することができる。これは、Ｍａｘ  ＶＬを上限とされ得る。別法として、Ｓｅｔ  ＶＬは、支配的なＶＬ  Ｍａｘ値が何であってもその割合（たとえば、１、１／２、１／４、１／８、…）を記述する即値又はレジスタ依存のオペランドに従って作用することができる。
【００９３】
ＶＬがどのくらいの頻度で変更され得るかの構造的制限は必ずしも存在しないが、あまり頻繁に、たとえば、１００又は１０００命令ごとを超えて、変更を行うことはシステム（たとえば、プログラム制御下の）にとって適切ではない可能性がある。これは、ＶＬの変更時に生じる動作及び管理（たとえば、セキュリティ・レベルの変更、又は後述するような復号の失速）から生じる非効率性を回避又は低減するのを助けることができる。
【００９４】
図２５は、図１のデコーダ回路５０などのデコーダ回路の動作を概略的に示す。図２５の流れ図は、本論考に関連する技術的ポイントを説明することを目的として、簡略化されている。さらなる動作が、復号回路５０の動作の一部として、実行され得ることが理解されよう。
【００９５】
デコーダ回路５０は、（任意選択で）ベクトル処理命令を動作のセットに復号するように動作可能であり、セットの数は、本実施例では制御回路２３６０によってセットされる、データ・ベクトル長と同等である。これは、たとえば、スキャッタ、ギャザーなどの複数のステージ命令について、生じ得る。他の動作が、単一のベクトル処理命令として実施される。
【００９６】
ステップ２５００は、ベクトル処理命令の復号を含む。ステップ２５１０で、復号された命令は、図２を参照して論じられたような連続的データ・ベクトル１２０のデータ項目１００に適用される動作のセットに分割される又は「解読される」。ステップ２５１０における動作は、制御回路２３６０によって確立された及びレジスタ２３９０に記憶された現在のベクトル長（ＶＬ）に応答する。ステップ２５２０で、動作のセットは、ベクトル・プロセッサによって実行するために発送される。デコーダ回路５０によるステップ２５００、２５１０の動作は、ベクトル処理命令を動作のセットに復号するための命令デコーダの実例を示し、セットの数は、制御回路によってセットされたデータ・ベクトル長と同等である。
【００９７】
したがって、特定の命令に適用可能なベクトル長は、たとえば、前述のようなＶＬ設定命令、及び／又は前述のようなＶＬレジスタの内容によって、及び／又は図２５を参照して論じられたタイプの解読動作の結果として、ＶＬのアクティブ設定から生じ得る。これらのインスタンスのうちの任意の１つ又は複数において、所与のベクトル処理命令のための命令サンプル・データは、所与のベクトル処理命令の実行に適用可能なベクトル長を示し得る。
【００９８】
また、論じられたシナリオのうちのいずれかにおけるもう１つのオプションは、所与のベクトル処理命令のための命令サンプル・データが、所与の命令の実行に適用可能な述語フラグの各々の状態を示す所与の命令及びデータに適用可能なデータ要素サイズ（並びに所与の命令に適用可能なベクトル長）を示すことである。
【００９９】
図２６は、処理レーンのサブセット２６２０が少なくとも一時的に無効にされるような、前述の処理は低減されたベクトル長ＶＬ１  ２６１０を課す、最大ベクトル長ｍａｘ  ＶＬ２６００の実例を概略的に示す。
【０１００】
述語フラグに関して、サンプリング回路８４０が、無効にされたサブセット２６２０に対応するフラグ２６３０の非アクティブ状態を含む述語フラグのカウントに基づいて命令サンプリング・データ８５０を生成することができるように、修正論理８３０が、無効にされたサブセット２６２０に対応する述語フラグ２６３０を「非アクティブ」などの所定の状態にセットするように構成される。
【０１０１】
これの実例は、２５６ビットの最大ベクトル長を有するシステムを示すが、１２８ビットの現在のベクトル長にセットされた、図２７に概略的に示されている。これは、ベクトルのビット１２８…２５５が現在無効にされていることを意味する。しかしながら、外見上有効な述語フラグが、無効にされたベクトル位置に関連付けられているということでもよい。修正論理８３０は、無効にされたレーン１２８…２５５に関連するベクトル位置１６…３１が「非アクティブ」にセットされた、サンプリング（「Ｓ」）のためのデータを生成する。これは、アクティブ位置のカウントは、現在有効にされているレーンのみに基づき、正確な値の８を与えるということを意味する。
【０１０２】
この配置は、ジェネレータ回路が、述語フラグの所与のグループについて、現在のベクトル長のベクトルに含まれないデータ要素に関連する述語フラグが所定の状態にセットされることを示す、命令サンプル・データを生成するように構成された、実例を示す。
【０１０３】
図２８は、以下を含むベクトル処理方法を説明する概略的流れ図である：
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用すること（ステップ２８００において）と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成すること（ステップ２８１０において）、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【０１０４】
図２９は、使用され得るシミュレータ実装形態を示す。前述の実施例は、関係する技法をサポートする特定の処理ハードウェアを操作するための装置及び方法に関して本発明を実装するが、コンピュータ・プログラムの使用を介して実装される本明細書に記載の実施例による命令実行環境の提供もまた可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャの実装形態に基づくソフトウェアをもたらす限りにおいて、シミュレータとしばしば称される。様々なシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想機械、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。通常、シミュレータ実装形態は、シミュレータ・プログラム２９１０をサポートする、ホスト・オペレーティング・システム２９２０を任意選択で実行する、ホスト・プロセッサ２９３０を実行し得る。いくつかの配置では、ハードウェアと提供される命令実行環境との間のシミュレーションの複数のレイヤ、及び／又は同じホスト・プロセッサで提供される複数の独特の命令実行環境が存在し得る。歴史的には、強力なプロセッサが、妥当な速度で実行するシミュレータ実装形態を実現するために必要とされたが、そのような手法は、互換性又は再使用を理由として別のプロセッサに固有のコードを実行するという要望があるときなど、ある特定の状況で正当だとされ得る。たとえば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない付加的機能を命令実行環境に提供する、又は異なるハードウェア・アーキテクチャに通常は関連付けられた命令実行環境を提供することができる。シミュレーションの概説は、参照により本明細書に組み込まれている、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁、において与えられている。
【０１０５】
特定のハードウェア構成物又は特徴を参照して実施例が前述されてある限りにおいて、シミュレーションされる実施例では、同等の機能は、適切なソフトウェア構成物又は特徴によって、提供され得る。たとえば、特定の回路は、コンピュータ・プログラム論理として、シミュレーションされる実施例において実装され得る。同様に、メモリ・ハードウェア、たとえばレジスタ又はキャッシュ、は、ソフトウェア・データ構造体として、シミュレーションされる実施例において実装され得る。前述の実施例において参照されたハードウェア要素のうちの１つ又は複数がホスト・ハードウェア（たとえば、ホスト・プロセッサ２９３０）上に存在する配置では、いくつかのシミュレーションされる実施例は、適切な場合には、ホスト・ハードウェアを利用し得る。
【０１０６】
シミュレータ・プログラム２９１０は、コンピュータ可読記憶媒体（非一時的媒体でもよい）に記憶することができ、シミュレータ・プログラム２９１０によってモデル化されているハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである目標コード２９００（アプリケーション、オペレーティング・システム及びハイパーバイザを含み得る）にプログラム・インターフェース（命令実行環境）を提供する。したがって、前述の装置のハードウェア特徴を実際には有さないホスト・コンピュータ２９３０が、これらの特徴をエミュレートすることができるように、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するための命令を含む、目標コード２９００のプログラム命令は、シミュレータ・プログラム２９１０を使用する命令実行環境内から実行され得、命令サンプル・データは、前述のような選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【０１０７】
したがって、図２９のシミュレータ配置は、前述の装置をシミュレーションするように構成されたとき、以下を含むベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムの実例を示す：データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの１つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【０１０８】
本出願において、「…ように構成される」という言葉は、装置の要素が、定義された動作を実施することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。たとえば、装置が、定義された動作を提供する専用ハードウェアを有し得る、或いはプロセッサ又は他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成される」は、定義された動作を実現するために装置要素が任意の形で変更される必要があることを暗示しない。
【０１０９】
本技法の説明のための実施例は、添付の図面を参照して本明細書で詳しく説明されているが、本技法は、それらの厳密な実施例に限定されないことと、様々な変更、追加、及び修正が、添付の特許請求の範囲によって定義されるものとしての本技法の範囲及び趣旨を逸脱することなく当業者によってもたらされる可能性があることとを理解されたい。たとえば、従属請求項の特徴の様々な組合せが、本技法の範囲を逸脱することなく、独立請求項の特徴と作られ得る。
【図１】
2021515929.tif 000003
【図２】
2021515929.tif 000004
【図３】
2021515929.tif 000005
【図４】
2021515929.tif 000006
【図５】
2021515929.tif 000007
【図６】
2021515929.tif 000008
【図７】
2021515929.tif 000009
【図８】
2021515929.tif 000010
【図９】
2021515929.tif 000011
【図１０】
2021515929.tif 000012
【図１１】
2021515929.tif 000013
【図１２】
2021515929.tif 000014
【図１３】
2021515929.tif 000015
【図１４】
2021515929.tif 000016
【図１５】
2021515929.tif 000017
【図１６】
2021515929.tif 000018
【図１７】
2021515929.tif 000019
【図１８】
2021515929.tif 000020
【図１９】
2021515929.tif 000021
【図２０】
2021515929.tif 000022
【図２１】
2021515929.tif 000023
【図２２】
2021515929.tif 000024
【図２３】
2021515929.tif 000025
【図２４】
2021515929.tif 000026
【図２５】
2021515929.tif 000027
【図２６】
2021515929.tif 000028
【図２７】
2021515929.tif 000029
【図２８】
2021515929.tif 000030
【図２９】
2021515929.tif 000031
【国際調査報告】
2021515929.tif 000032
2021515929.tif 000033