IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-31
(45)【発行日】2023-11-09
(54)【発明の名称】データ処理
(51)【国際特許分類】
   G06F 17/16 20060101AFI20231101BHJP
   G06F 9/38 20180101ALI20231101BHJP
   G06F 9/30 20180101ALI20231101BHJP
【FI】
G06F17/16 J
G06F9/38 310G
G06F9/38 370X
G06F9/30 350A
G06F17/16 E
【請求項の数】 19
(21)【出願番号】P 2020544207
(86)(22)【出願日】2019-02-15
(65)【公表番号】
(43)【公表日】2021-06-24
(86)【国際出願番号】 GB2019050408
(87)【国際公開番号】W WO2019166772
(87)【国際公開日】2019-09-06
【審査請求日】2022-02-08
(31)【優先権主張番号】1803250.8
(32)【優先日】2018-02-28
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ウィリアムズ、マイケル ジョン
(72)【発明者】
【氏名】スティーブンズ、ナイジェル ジョン
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2014/147446(WO,A1)
【文献】欧州特許出願公開第01267258(EP,A2)
【文献】国際公開第2017/021697(WO,A1)
【文献】国際公開第2017/021269(WO,A1)
【文献】特表2018-521424(JP,A)
【文献】特表2018-525735(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 9/38
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路と、
前記ベクトル処理命令のうちの選択されたベクトル処理命令についての前記ベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路であって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの状態を少なくとも示す、ジェネレータ回路と、
前記ベクトル処理命令のうちの前記選択されたベクトル処理命令を選択するための命令選択回路であって、開始カウント値と最終カウント値との間で命令をカウントするように、及びカウントが前記最終カウント値に達する命令を、選択された命令として、選択するように構成されたカウンタ回路を備える前記命令選択回路と
を備える、データ処理装置。
【請求項2】
前記述語フラグが、各データ要素位置において処理がアクティブか非アクティブかを示し、データ要素が、処理がアクティブであるデータ要素位置において前記ベクトル処理動作によって生成される、請求項1に記載の装置。
【請求項3】
前記命令サンプル・データが、処理がアクティブであることを示す複数の前記述語フラグを示す、請求項1に記載の装置。
【請求項4】
命令サンプル・データが、
すべての述語フラグが、処理はアクティブであることを示すことと、
少なくともいくつかの述語フラグが、処理は非アクティブであることを示すことと、
すべての述語フラグが、処理は非アクティブであることを示すことと
のうちの少なくとも1つを選択的に示すためのイベント・データを含む、請求項3に記載の装置。
【請求項5】
前記ベクトル処理命令のうちの少なくともいくつかが、候補データ要素サイズのセットからデータ要素サイズを定義するように構成され、所与のベクトル処理命令のための前記命令サンプル・データが、前記所与のベクトル処理命令の実行に適用可能なデータ要素サイズを示す、請求項1に記載の装置。
【請求項6】
ベクトル処理命令のうちの少なくともいくつかについて、所与のベクトル処理命令の実行に適用可能な前記データ要素サイズが、前記所与のベクトル処理命令の少なくとも一部によって定義される、請求項5に記載の装置。
【請求項7】
前記候補データ要素サイズのセットのうちの少なくともいくつかのデータ要素サイズについて、各データ要素が、データ要素と関連付けられた述語フラグのグループと関連付けられ、前記述語フラグのグループのサブセットが、前記データ要素位置におけるアクティブ処理な又は非アクティブな処理を示す、請求項5に記載の装置。
【請求項8】
述語フラグの前記サブセットが、述語フラグの各グループの1つの述語フラグを含む、請求項7に記載の装置。
【請求項9】
前記ジェネレータ回路が、述語フラグの所与のグループについて、述語フラグの前記サブセット以外の述語フラグは述語フラグの前記サブセットの状態と同じ状態を有することを示す、命令サンプル・データを生成するように構成された、請求項7に記載の装置。
【請求項10】
前記ベクトル処理命令のうちの少なくともいくつかが、前記データ・ベクトルのベクトル長を定義するように構成されたベクトル長定義命令であり、現在のベクトル長が、ベクトル長定義命令の実行に応答するレジスタ状態を有するプロセッサ・レジスタによって定義される、請求項1に記載の装置。
【請求項11】
所与のベクトル処理命令のための前記命令サンプル・データが、前記所与のベクトル処理命令の実行に適用可能なベクトル長を示す、請求項10に記載の装置。
【請求項12】
前記所与のベクトル処理命令のための前記命令サンプル・データが、前記所与のベクトル処理命令に適用可能なデータ要素サイズと、前記所与のベクトル処理命令の実行に適用可能な前記述語フラグの各々の前記状態を示すデータとを示す、請求項11に記載の装置。
【請求項13】
前記ジェネレータ回路が、述語フラグの所与のグループについて、前記現在のベクトル長のベクトルに含まれないデータ要素に関連する述語フラグが所定の状態にセットされたことを示す命令サンプル・データを生成するように構成された、請求項12に記載の装置。
【請求項14】
前記ベクトル処理回路が、
プログラム命令を復号するための命令デコーダ回路と、
前記述語フラグに基づいて前記命令デコーダ回路によって復号された命令を実行するための命令処理回路と
を備える、請求項1に記載の装置。
【請求項15】
前記ジェネレータ回路が、前記命令デコーダ回路による選択された命令の復号に応答して、前記命令サンプル・データの生成を開始し、前記命令処理回路に応答して、前記述語フラグの前記状態を示す前記命令サンプル・データを前記選択された命令の実行時に生成する、請求項14に記載の装置。
【請求項16】
前記命令選択回路が、前記開始カウント値と前記最終カウント値とのうちの一方又は両方を修飾子値と結合させるように構成された、請求項に記載の装置。
【請求項17】
前記修飾子値が、乱数又は疑似乱数である、請求項16に記載の装置。
【請求項18】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用することと、
前記ベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成することであって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの前記状態を少なくとも示す、生成することと、
前記ベクトル処理命令のうちの前記選択されたベクトル処理命令を選択すること、であって、開始カウント値と最終カウント値との間で命令をカウントし、及びカウントが前記最終カウント値に達する命令を、選択された命令として、選択することを含む、前記選択することと
を含む、ベクトル処理方法。
【請求項19】
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、前記データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含む前記データ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、
前記ベクトル処理命令のうちの選択されたベクトル処理命令についての前記ベクトル処理論理の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理であって、前記命令サンプル・データは、前記選択されたベクトル処理命令の実行時の前記述語フラグの前記状態を少なくとも示す、ジェネレータ・プログラム論理と、
前記ベクトル処理命令のうちの前記選択されたベクトル処理命令を選択するための命令選択論理であって、開始カウント値と最終カウント値との間で命令をカウントするように、及びカウントが前記最終カウント値に達する命令を、選択された命令として、選択するように構成されたカウンタ論理を備える、前記命令選択論理と
を備えるベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理装置及び方法に関する。
【背景技術】
【0002】
いくつかのデータ処理配置は、データ・ベクトル内のそれぞれの位置に複数のデータ項目を有するデータ・ベクトルのデータ項目に単一のベクトル処理命令を適用することを含む、ベクトル処理動作を可能にする。それに反して、スカラ処理は、実際に、データ・ベクトルではなくて単一のデータ項目に作用する。
【0003】
ベクトル処理は、処理されることになるデータの多数の異なるインスタンスで処理動作が実施される場合、インスタンスにおいて有用になり得る。ベクトル処理配置では、単一の命令が、同時に複数のデータ項目(データ・ベクトルの)に適用され得る。これは、スカラ処理と比較してデータ処理の効率及びスループットを向上させることができる。
【発明の概要】
【0004】
例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路であって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、ジェネレータ回路と
を備えるデータ処理装置が提供される。
【0005】
別の例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用することと、
それらのベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成することであって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、生成することと
を含むベクトル処理方法が提供される。
【0006】
別の例示的配置において、
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理であって、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す、ジェネレータ・プログラム論理と
を備えるベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムが提供される。
【0007】
本開示のさらなるそれぞれの態様及び特徴は、添付の特許請求の範囲によって定義される。
【0008】
本技法は、単に例として、添付の図面に示されるようなその実施例を参照して、さらに説明される。
【図面の簡単な説明】
【0009】
図1】データ処理装置を概略的に示す図である。
図2】複数のデータ・ベクトルとしてのデータの処理を概略的に示す図である。
図3】述語フラグの使用を概略的に示す図である。
図4】ジェネレータの動作の一部を概略的に示す図である。
図5】選択動作を概略的に示す図である。
図6】サンプリング動作の一部を概略的に示す図である。
図7】サンプリング動作の一部を概略的に示す図である。
図8】修正論理の使用を概略的に示す図である。
図9】命令サンプル・データの生成の概略的実例を示す図である。
図10】命令サンプル・データの生成の概略的実例を示す図である。
図11】命令サンプル・データの生成の概略的実例を示す図である。
図12】命令サンプル・データの生成の概略的実例を示す図である。
図13】命令サンプル・データの生成の概略的実例を示す図である。
図14】命令サンプル・データの生成の概略的実例を示す図である。
図15】命令サンプル・データの生成の概略的実例を示す図である。
図16】命令サンプル・データの生成の概略的実例を示す図である。
図17】命令サンプル・データの生成の概略的実例を示す図である。
図18】命令サンプル・データの生成の概略的実例を示す図である。
図19】命令サンプル・データの生成の概略的実例を示す図である。
図20】命令サンプル・データの生成の概略的実例を示す図である。
図21】命令サンプル・データの生成の概略的実例を示す図である。
図22】命令サンプル・データの生成の概略的実例を示す図である。
図23】可変ベクトル長の使用を概略的に示す図である。
図24】ベクトル長の変更を説明する概略的流れ図である。
図25】命令復号及び発送を説明する概略図である。
図26】可変ベクトル長の状況における修正論理の使用を概略的に示す図である。
図27】命令サンプル・データの生成の概略的実例を示す図である。
図28】方法を説明する概略的流れ図である。
図29】本開示に適用可能な仮想化技法を概略的に示す図である。
【発明を実施するための形態】
【0010】
ここで図面を参照すると、図1は、データ値32及びプログラム命令34を記憶するメモリ30に結合されたプロセッサ20を備えるデータ処理システム10を概略的に示す。プロセッサ20は、メモリ30からプログラム命令34をフェッチする及びフェッチ・プログラム命令をデコーダ回路50に供給するための命令フェッチ・ユニット40を含む。ベクトル処理回路52は、デコーダ回路50及び命令処理回路60を備える。デコーダ回路50は、フェッチされたプログラム命令を復号し、復号されたベクトル命令によって指定されたものとしてのベクトル・レジスタ回路70に記憶されたベクトル・レジスタでベクトル処理動作を実行するために命令処理回路60を制御するための制御信号を生成する。
【0011】
プロセッサ20はまた、スカラ・レジスタ90と関連付けられたスカラ処理回路80を備える。
【0012】
スカラ処理とベクトル処理との一般的区別は、以下のとおりである。ベクトル処理は、データ・ベクトル内のそれぞれの位置に複数のデータ項目を有するデータ・ベクトルのデータ項目に単一のベクトル処理命令を適用することを含む。スカラ処理は、実際には、データ・ベクトルではなくて単一のデータ項目に作用する。
【0013】
ベクトル処理は、処理されることになるデータの多数の異なるインスタンスで処理動作が実施される場合、インスタンスにおいて有用になり得る。ベクトル処理配置では、単一の命令が、同時に複数のデータ項目(データ・ベクトルの)に適用され得る。これは、スカラ処理と比較してデータ処理の効率及びスループットを向上させることができる。
【0014】
後述の論考は、例示的プログラム命令34に関する。本開示の実施例は、そのようなプログラム命令を復号する及び実行するように動作可能な又は構成された、たとえば、図1に示されたタイプの、装置を含む。したがって、図1は、データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理回路の実例を示す。述語フラグは、ベクトル・レジスタ70のセットのうちの1つを形成する、レジスタ・ファイル72に記憶される。
【0015】
ジェネレータ55は、デコーダ回路50及び命令処理回路60と関連付けられている。ジェネレータ55は、少なくとも命令処理回路60の動作を示す命令サンプル・データ65を生成するために、サンプリング・プロセスを実施する。サンプリングという用語は、データ65は、(いわゆるトレース・データの生成において事実であり得るように)命令処理回路60によって実行されるあらゆる命令について生成されないが、命令のサンプルは、ジェネレータ55によって選択され、選択された命令に関する命令サンプル・データとして獲得された潜在的に詳細な情報であるという事実に関する。
【0016】
実行される命令全体に対するサンプリングされる命令の比率は、設計上の選択の問題であるが、通常、その比率は、サンプリングされた命令のおよそ1000分の1から数十万の1になり得る。サンプル・データの進行中のパイプラインを処理する必要がないように、特定の実行される命令の命令サンプル・データの生成のプロセスが、次の命令がサンプリングされるときまでに、完了され得るような比率が有用になり得る。サンプリングは、定期的、たとえばn番目の命令ごと(nは、恐らくは、10000)、でもよく、いわゆる命令の系統的サンプリングと称され得る。しかしながら、実行されるコードにおける規則性(ループなどの)は、n命令ごとのサンプリングが、サンプリングされている異なる状況の範囲を与えないことを意味し得る、起こり得る共鳴効果を緩和するために、サンプリング間隔に対するランダム又は疑似ランダム貢献が、使用され得る。これを達成するための技法が、以下にさらに論じられる。
【0017】
ジェネレータ55は、メイン・メモリに、たとえばメモリの予約された又は他の方法で割り当てられた領域36に、命令サンプル・データを書き込む。その際、ジェネレータ55は、領域36に書き込まれたデータの量のカウントを保持する(たとえば、カウンタ57を使用して)。領域が、命令サンプル・データを有する占有率の閾値レベル(たとえば95%又はさらに100%)に達したとき、ジェネレータは、割り込み75をプロセッサ20に発行してプロセッサに以下のことを行わせる:(i)適切な分析ソフトウェアを実行する汎用コンピュータなどの分析プロセッサ95に領域36からの命令サンプル・データを出力する、及び(ii)カウンタ57をリセットする。
【0018】
命令サンプル・データは、プロセッサ20の動作の多数の異なる態様に関連し得る。本実例において、それは、サンプリングされた命令の実行時の述語フラグの状態に少なくとも部分的に関連する。この特徴は、さらに詳しく後述される。したがって、ジェネレータ55は、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ回路の実例を示し、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【0019】
述語フラグの状態に関連する命令サンプル・データの記憶は、ベクトル処理回路の性能モニタリング、デバッギング及び他の分析において有用になり得る。スカラ処理を介して効率の有益な増加を達成するために、ベクトル化された又は並列な性質の処理が使用されることは適切である。有意な数の述語フラグが、サンプリングされた命令に関して非アクティブにセットされた場合、これは、システムが、それに利用可能な並列ベクトル処理を効率的に使用していない、及び/又は適切に使用されていないベクトル化されたシステムを実行することによって潜在的に電力を浪費しているということを示し得、したがって、これは、潜在的にさらなる調査若しくは診断を、又は検討中の処理タスクのためにスカラ処理を使用することへの転換を潜在的に促し得る。
【0020】
したがって、これらの実例において、ベクトル処理回路は、以下を備える:プログラム命令を復号するための命令デコーダ回路50と、述語フラグに基づいて命令デコーダ回路によって復号された命令を実行するための命令処理回路60。
【0021】
図2は、複数のデータ・ベクトルとしてのデータの処理を概略的に示す。この配置では、データ項目100のセットは、処理順序110で処理されることが意図されている。ベクトル処理動作において、単一のベクトル処理命令が、データ・ベクトル内のすべてのデータ項目(たとえば、4データ項目、8データ項目又は特定のシステムの支配的なベクトル長VLが何であっても)に同時に適用されるように、データ項目100は、実際には、連続的データ・ベクトル120として処理される。
【0022】
これを述べた上で、最初の処理順序110への任意の参照が処理中に必要とされる場合、これが、ベクトル処理順序140においてデータ・ベクトルを考慮すること及びデータ項目処理順序130において各データ・ベクトル内のデータ項目を考慮することによって、達成され得るように、各データ・ベクトル120は、データ項目処理順序130を保持することができ、ベクトルからベクトルにベクトル処理順序140が存在し得る。
【0023】
図3は、ベクトル処理動作を制御するための述語フラグの使用を概略的に示す。
【0024】
単一のベクトル処理動作が、データ・ベクトル内の異なるデータ項目に異なって適用されるべきである、インスタンスが存在し得る。命令処理回路60は、述語フラグの使用によって、これをもたらす。述語フラグは、処理動作はそのデータ項目位置に関して実施されるべきかどうかを指示するために、データ・ベクトル内の各データ項目位置について提供されるフラグ情報を含む。実例において、任意の特定のベクトル処理動作が、そのベクトル処理動作へのパラメータとしての1つ又は複数のセットの述語フラグを参照し得るように、命令処理回路60は、複数のセットの述語フラグにアクセスすることができる。
【0025】
図3を参照すると、実例の配置は、4つのデータ項目(VL=4)を含むデータ・ベクトルを使用するが、これらの配置は異なるベクトル長に適用され得ることが理解されよう。述語フラグによる制御がない場合には、ベクトル処理動作260は各データ項目位置に適用されることになるように、実例の入力データ・ベクトル250(ベクトルA)は、ベクトル処理動作260の対象になることになる。しかしながら、述語フラグのセット270、各データ項目位置又は「レーン」に1つ、もまた、ベクトル処理動作を制御するために提供される。
【0026】
入力ベクトル(ベクトルA)のデータ項目252は、出力データ・ベクトル280(ベクトルB)のデータ項目282を生成するために、ベクトル処理動作260に従って処理される。出力データ・ベクトル280のデータ項目位置に対応する述語フラグ272が、「アクティブ」(たとえば、1の値)にセットされた場合。出力ベクトル位置の対応する述語フラグが、「非アクティブ」(たとえば、0の値)にセットされた場合、次いで、その出力ベクトル位置に関するベクトル処理動作260は、実施されない。
【0027】
前述のように、本実例において、述語フラグは、出力データ・ベクトル280に関連する特定の出力位置又は「レーン」のベクトル処理動作が実施されるかどうかを制御する。しかしながら、他の実例では、述語フラグは、入力ベクトル(又は1つ又は複数の入力ベクトル)250におけるデータ項目位置が使用されるかどうかを制御するために使用することができる。しかしながら、本実例では、述語フラグは、処理が各データ要素位置においてアクティブか非アクティブかを示し、データ要素は、処理がアクティブであるデータ要素位置においてベクトル処理動作によって生成される。
【0028】
したがって、これは、アクティブ状態における述語フラグに対応するデータ・ベクトルのそれらの位置にベクトル処理命令は適用されるべきであることを示すアクティブ状態を有する述語フラグの実例を示す。非アクティブ状態は、ベクトル処理動作がそのように適用されるべきではないことを示す。
【0029】
ベクトル処理動作が、非アクティブ述語フラグのため、特定の出力ベクトル位置282に関して実施されない場合、次いで、いくつかの実例では、0などの固定値が、その出力位置に挿入され得る。他の実例では、出力位置の以前のコンテンツは、それらが何であっても、変更のないままにされ得る。
【0030】
したがって、この方式での述語フラグの使用は、それらの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトル内のそれぞれの位置に複数のデータ項目を含むデータ・ベクトルの1つ又は複数のデータ項目にベクトル処理命令を適用することの実例を示す。
【0031】
図4は、ジェネレータ55の機能のうちのいくらかを示す概略図である。セレクタ400は、命令サンプル・データ410を生成するためにどのサンプリング・プロセスが実行されるべきかに関する命令を選択する。さらに詳しく後述されるいくつかの実例では、セレクタ400は、デコーダ50からの復号された命令を数えること及び、たとえば、n番目の命令ごとに、サンプリングすることによって、これを達成し、nは、恐らく、およそ1000又は10000である。
【0032】
サンプリングされた命令に関連して、セレクタ400は、その命令の実行を示す命令サンプル・データ410を生成するようにサンプラ420に指示する。サンプラ420は、サンプリングされた命令の実行の時間及び、任意選択で、プロセッサ・レジスタなどにおける値などの命令の実行に関連する他のデータに適用可能な述語フラグ440を、復号された命令430自体を有する入力として提供され得る(たとえば、命令タイプ及び、任意選択で、命令に関連する語長、図7に関連して後述されることになる特徴、を検出するために)。
【0033】
したがって、これらの実例では、ジェネレータ回路が、命令デコーダ回路50による選択された命令の復号に応答して、命令サンプル・データの生成を開始し、命令処理回路に応答して、選択された命令の実行時に述語フラグの状態を示す命令サンプル・データを生成する。
【0034】
これらのデータから、サンプラ420は、サンプリングされた命令に関連する命令サンプル・データ410を用意する。
【0035】
命令サンプル・データの概略的実例は、以下の例示的フィールドを含む:
・命令タイプの指示
・命令によってセットされる単語又は要素の長さの指示
・命令の実行時に適用可能なベクトル長の指示
・命令の実行時の様々なプロセッサ・レジスタの内容の指示
・命令の実行時に適用可能な述語フラグの指示(たとえば、後述されるカウント値及び/又はイベント・データ、及び/又は述語フラグのセットのコピー)
【0036】
図5は、セレクタ400の動作の実例を概略的に示す。カウンタ500は、デコーダ50から受信された連続的命令を数える。カウントは、たとえば、上昇カウント(たとえば、0から)又は下降カウント(たとえば、0へ)でもよい。より一般的には、カウントは、開始カウント値から最終カウント値までである。上昇カウントを含む実例として、コンパレータ510が、現在のカウント値を閾値520(最終カウント値を表す)と比較し、カウント値が閾値に達したとき、そのカウント位置における関連命令、たとえば命令530、が、サンプリングのために選択される。
【0037】
任意選択で、閾値520は、たとえば基準値の特定の数の最下位ビット(LSB:least significant bit)に適用可能な、ランダム又は疑似ランダム値などの修飾子値(modifier value)560を有する加算器又は他の結合器550によって加えられた基準値540から導出することができる。ランダムに選ばれた又は疑似ランダムに選ばれた閾値が、どちらの方向にカウントが進んでいるかに応じて開始カウント値又は最終カウント値として適用され得る。
【0038】
したがって、これらの実例において、命令のうちの選択された(サンプリングされた)命令を選択するための命令選択回路(セレクタ400によって実施される)は、開始カウント値と最終カウント値との間で命令を数えるように、及びカウンタが最終カウント値に達する命令を、選択された命令として、選択するように構成されたカウンタ回路を備える。任意選択で、命令選択回路は、乱数又は疑似乱数などの、修飾子値を有する開始カウント値及び最終カウント値のうちの一方又は両方を結合させるように構成することができる。
【0039】
図6は、それぞれのベクトル・レーンにおけるアクティブ処理を示す述語フラグの数を数えるカウンタ動作600を含む、サンプラ420の動作の1つの態様を概略的に示す。カウンタ610の出力は、処理がアクティブであることを示す複数の述語フラグ及び/又はいわゆるイベント・データ、たとえば、述語フラグがセットされなかったことを示すフラグ又はすべての利用可能な述語フラグがセットされたことを示すフラグ、を示すための、或いは、言い換えれば、少なくとも以下のうちの1つを選択的に示すための、8、12、14…などのカウントでもよい:すべての述語フラグが処理はアクティブであることを示す、少なくともいくつかの述語フラグが処理は非アクティブであることを示す、そして、すべての述語フラグが処理は非アクティブであることを示す。このようなイベント・データの使用は、述語フラグの状態に関する潜在的に有用な情報をやはり提供しつつ、潜在的により低いデータ品質が命令サンプル・データのために使用されることを可能にする。
【0040】
図7は、オペコードの一部としてデータ要素又は語長710を指定する命令オペコード700について、検出器720が、命令サンプル・データ410の少なくとも一部として、現在のサンプリングされた命令に適用可能な語長を示すデータ730を生成するという点において、サンプラ420の動作の別の潜在的態様を概略的に示す。
【0041】
したがって、これらの実例において、ベクトル処理命令のうちの少なくともいくつかは、候補データ要素サイズのセットからデータ要素サイズを定義するように構成され、所与のベクトル処理命令のための命令サンプル・データが、所与のベクトル処理命令の実行に適用可能なデータ要素サイズを示す。たとえば、命令は、後続の命令のデータ要素サイズをセットし得るが、ベクトル処理命令のうちの少なくともいくつかについて、その命令の実行に適用可能なデータ要素サイズは、そのベクトル処理命令の少なくとも一部によって定義される。
【0042】
図8は、可変語長を有するシステムとの関連で適用することができる述語フラグの特徴を概略的に示す。
【0043】
実例として、可変語長の範囲内で、少なくとも最も小さい語長のそれぞれの可能なインスタンスのために単一の述語フラグを提供することが適切である。たとえば、図8では、述語フラグ800は、最も短い利用可能な語長のインスタンスに適用可能である。しかしながら、より長い語長が使用される場合、特定のベクトル長について、ベクトル処理レーンに対する述語フラグの比率は、1:1より大きくなり得る。具体的には、たとえば、述語フラグのペア810が、より長い語長において個々のベクトル処理レーンに適用可能になり得るように、より長い語長を有して、同じベクトル長は、より少数のベクトル処理レーンをもたらすことになる。他の実例において、4つ以上の述語フラグのグループが、単一のレーンに適用可能になり得る。
【0044】
規則が、時には提供され、それにより、グループ810などのデータ要素に関連する述語フラグのグループについて、述語フラグ800(たとえば、そのレーンに適用可能な最下位の桁における述語フラグ)などの、そのグループのサブセットが、そのデータ要素位置において処理はアクティブか非アクティブかを示すために使用される。図8の実例において、グループ810の他方の述語フラグ820は、冗長であり、未指定の値を有し得る。
【0045】
言い換えれば、候補データ要素サイズのセットの少なくともいくつかのデータ要素サイズについて、各データ要素は、データ要素と関連付けられた述語フラグのグループと関連付けられ、述語フラグのグループのサブセットは、そのデータ要素位置におけるアクティブ又は非アクティブ処理を示す。たとえば、述語フラグのサブセットは、述語フラグの各グループ810の1つの述語フラグ800を含み得る。
【0046】
本開示は、述語フラグの数が前述のように数えられる、サンプリングされるシステムにおいて、未定義の値及び冗長機能を有する述語フラグ820などの述語フラグを有することは、潜在的に、誤解を招く命令サンプル・データの生成につながり得ることを認識する。
【0047】
これに対処するために、ジェネレータ55は、任意選択で、グループ810などの述語フラグの所与のグループについて、述語フラグ800のサブセット以外の述語フラグ(冗長フラグ820など)を述語フラグのサブセットの状態と同じ状態にセットするように作動する、いわゆる修正論理830を含む。次いで、サンプリング回路840が前述の技法を使用して命令サンプル・データ850を生成することによって、たとえば集計するサンプリングが行われる。
【0048】
そのようにして、たとえば、グループ810の述語フラグ800が、「アクティブ」にセットされた場合、次いで、修正論理830は、述語フラグ820を「アクティブ」にセットする。
【0049】
重要なことには、修正論理830は、プロセッサ20によって参照される実際の述語フラグを修正する必要はなく(これらの実例では、修正せず)、サンプリング回路840によって処理されるフラグをただ修正すればよいことに留意されたい。
【0050】
これらの配置のいくつかの特定の実例が、図面の左手側にある最上位ビットから図面の右手側にある最下位ビットに配置された256ビットのベクトル(実例として)をそれぞれの場合に表す、図9から22を参照して、ここで論じられる。「V」のラベルを付けられた上の段は、使用中のベクトルを表し、「P」のラベルを付けられた下の段は、述語フラグを表す。「1」の表記は「アクティブ」を表し、「0」は「非アクティブ」を表す。「X」の値は、冗長述語フラグ位置における未定義の又は不定の値を表す。
【0051】
図9を参照すると、実例は、4×64ビットの要素又は単語を与えられている。ここで、位置0、8、16、24にある述語フラグは、図8の述語フラグ800に対応するサブセットを表す。この実例での最小語長は8ビットなので、32述語フラグが、256ビットのベクトルのために提供されることに留意されたい。位置1…7、9…15、17…23及び25…31における述語フラグは、それらはベクトル・レーンがアクティブか非アクティブかに関する命令処理回路60による判定に関連していないため、未定義である。
【0052】
図10において、8×32ビットの要素の実例が提供されている。ここで、位置0、4、8、12、16、20、24、28における述語フラグは、そのベクトル処理レーンがアクティブか非アクティブかに関する命令処理回路60による判定に関連するサブセットを表し、残りの述語フラグは未定義である。
【0053】
図9及び10の実例において、すべての要素は、ベクトル内のアクティブ・レーン位置にある。
【0054】
図11は、すべてのベクトル・レーンが、そのサブセットの位置において述語フラグ「0」によって示されるように、非アクティブであることを除いて、図10の配置と類似の配置を示す。
【0055】
別の類似の配置が図12に示され、そこでは、偶数の32ビットの要素はアクティブであり、奇数の32ビットの要素は非アクティブである。
【0056】
位置0、8、16、24のみが、アクティブ又は非アクティブ状況を示すサブセット内にあるので、64ビットの要素のすべてはアクティブであると考えられるが、図13は、図12のそれと同じセットの述語フラグを使用する、図9の4×64ビットの実例に戻る。
【0057】
修正論理の動作が、ここで、図14から22を参照してさらに説明される。ここで、「S」のラベルを付けられたさらなる段は、修正論理830によって修正されたものとしてのサンプリング回路840によってサンプリングされたサンプル値835を表す。前述のように、修正論理は、プロセッサ20によって参照される実際の述語値を修正する必要はないが、値が数えられるやり方を修正する。
【0058】
図14から18は図9から13と同じベクトル及び述語値を示すことに留意されたい。図19から23は同じ述語値を示すことにも留意されたい。
【0059】
図14の実例において、修正論理830は、64ビットの要素システム内の述語フラグのサブセット(0、8、16、24)以外の述語フラグを、数えることを目的として、述語フラグのサブセットのそれと同じ状態にセットした。そうして、各要素位置又はレーンについて、そのレーンのアクティブ又は非アクティブ状況を示す述語フラグの状態は、そのレーンに関連付けられた他の述語フラグを横断して複製される。この配置に適用可能なカウント値は、すべての述語値がセットされたことを示す32である。
【0060】
類似の配置が、32のカウントに再びつながる、すべてのレーンがアクティブな8×32ビットの要素システムに関して図15に示される。
【0061】
図16では、8×32ビットのレーンは、すべて非アクティブであり、そして、修正論理830によるデータ835出力において、サブセット(0、4、8、12、16、20、24、28)以外の述語フラグは、同じ状況にセットされ、述語フラグのそれぞれのサブセットは0のカウントをもたらす。
【0062】
図17は、8×32ビットの要素の実例であり、この実例では、偶数のレーンはアクティブであり、奇数のレーンは非アクティブである。前述の技法を適用することによって、カウント値は、レーンのうちの半分がアクティブであり、半分が非アクティブであることを正確に示す、16である。
【0063】
図18は、修正論理830のプロセスが32アクティブ述語フラグのカウントをもたらす、そのすべてがアクティブである4×64ビット要素の実例である。
【0064】
別の極値において、図19は、各述語フラグ位置が個々の処理レーンを表すような32×8ビットの要素の実例を示す。示された実例において、カウントは15である。
【0065】
別の任意選択の語長において、図20は、その一部がアクティブである及び一部が非アクティブである16×16ビットの要素の実例を示すが、修正論理830の処理を適用することによって、14/32の比率の要素がアクティブであることを正確に示す、14のカウントが、取得される。
【0066】
図21は、8×32ビットの配置に関連し、再び、この配置では、修正論理830の処理は、レーンの50%がアクティブであることを正確に示す、16のカウントをもたらす。
【0067】
最後に、図22は、4×64ビットの要素の実例であり、この実例では、修正論理830の処理は、再び、すべてのレーンがアクティブであることを正確に示す、32のカウントをもたらす。
【0068】
図23は、ベクトル・プロセッサの制御回路及び部分を概略的に示す。
【0069】
ベクトル処理は、データ項目のセット又はベクトルに関連して、一般に並行して、同じ処理動作を実施することによって、適用される。この配置は、それぞれの処理レーン(データ・ベクトル内の1つのデータ項目に適用される処理に対応する1つの処理レーン)の様々な計算構成要素及びレジスタ・ストレージに依存し得る。図23において、レジスタ2300のセット及び計算及び制御要素2310のセットは、ベクトル・プロセッサによって使用される処理配置の単純化された表現を与える。各処理レーンのために1つのレジスタ2300及び1つの処理要素2310が存在する(しかし、より多数の構成要素が処理レーンの実際の実装形態に含まれ得ることが理解されよう)。いくつかのベクトル命令のための処理レーンより少数の処理要素が存在し得る、及びそれらのベクトル命令は、たとえば、後述の技法を使用して、「解読される」又は複数のより小さい命令に分割される、及び/又は、それらのベクトル命令のスーパー・スカラ実行を可能にするために、いくつかのベクトル命令のための処理レーンより多数の構成要素が存在し得ることにも留意されたい。図23に示す処理レーンの総数は、システムの最大可能データ・ベクトル長(「Max VL」)に対応する。これは、データ・ベクトル幅の物理上限値であり、それらすべてが、制御回路2360によって有効にされた場合(すなわち、現在のサブセットの無効にされたレーンが、0である場合)にベクトル・プロセッサに利用可能な処理レーンの数を表す。しかしながら、本実施例では、制御回路2360の制御下で、より小さいデータ・ベクトル幅が、最大データ・ベクトル幅Max VLの代わりに選択的に使用され得る。
【0070】
通常のシステムにおいて、Max VLは、図23に概略的に示されたものよりもはるかに大きくなり得ることが、理解されよう。たとえば、Max VLは、256ビット、512ビット、1024ビット又は別の値になり得る。ここで、たとえば、「256ビット」は、328ビット以下の要素、又は1616ビット以上の要素、又は464ビット以下の要素を表す。図23のMax VLの実例の値は、単に説明を目的としたものである。
【0071】
制御回路2360は、レジスタ2390に記憶された、及び後述されることになるVLを変更するための命令の実行に応答して制御回路2360によって維持された、VLの現在の値に応答して、無効にされたサブセットの処理レーンが、ベクトル処理回路による使用のために利用不可能になるように、1サブセットの処理レーンの動作を無効にするように構成される。したがって、レジスタ2390の使用は、ベクトル長定義命令の実行に応答するレジスタ状態を有するプロセッサ・レジスタによって現在のベクトル長が定義されていることの実例を示す。
【0072】
この選択的無効化は、様々なやり方で達成することができる。
【0073】
実例において、制御回路2360は、たとえばサブセットの処理レーンへの電力供給を無効にすることによって、サブセットの(無効にされた)処理レーンから選択的電力を除去するように、それぞれの処理レーンの少なくとも部分(又はすべて)に電力を供給する電力供給ユニット(PSU:power supply unit)2320の動作を制御する。
【0074】
別の実例において、制御回路2360は、それぞれの処理要素2310の動作を無効にするために、サブセットの処理レーンに制御信号を供給する。処理要素は、たとえば、残りの回路、電力供給ゲーティング又はクロック・ゲーティング(下記参照)からの切断によって選択的に無効にすることができる、演算論理ユニット、乗算器などを含み得る。
【0075】
別の実例において、レジスタ要素2300からの読み取り及びそこへの書き込みを制御する、読み取り/書き込み論理2330は、サブセットの(無効にされた)処理レーンに対応するレジスタ要素2300からの読み取り又はそこへの書き込みを抑止するように制御回路2360の制御下で動作する。この実例では、各処理レーンは、レジスタ要素2300などの1つ又は複数のデータ・レジスタを備え、ベクトル処理回路は、データ・レジスタ内にメモリ(図23には示されていないが、図1にメモリ30として示されている)からデータをロードするように及びレジスタからメモリにデータを書き込むように構成され、そして、制御回路2360は、ベクトル処理回路がサブセットの処理レーンに対応するデータ・レジスタからメモリにデータを書き込むことを抑止するように構成される。
【0076】
実例において、現在無効にされている処理レーンに対応するレジスタは、完全に無効にする又は電源を切ることができ、或いはそれらの内容は、現在無効にされている処理レーンに対応するそれらのレジスタへのアクセスが阻止又は抑止されるというような方法で、(それらに電力を提供することによって、又はレジスタ2300の不揮発性記憶素子を使用することによって)保持することができる。これは、たとえば、サブセットの処理レーンに対応するデータ・レジスタによって保持されるデータ値を維持することを含む、サブセットの処理レーンに対応するデータ・レジスタによって保持されるデータ値をベクトル処理回路が変更することを抑止するように構成されている制御回路2360の実例である。
【0077】
他の実例において、前述のように様々な構成要素への電力供給を変更することの代わりに(又はそれに加えて)、制御回路2360は、いわゆるクロック・ゲーティング・プロセスを適用することができる。実例が、読み取り/書き込み論理2330に関して図23に概略的に示されているが、同配置は、レジスタ2300及び/又は処理要素2310などの処理レーンの他の態様に適用することができる。クロック信号CKは、読み取り/書き込み論理に(又は、無効にされた処理レーンに適用可能な読み取り/書き込み論理の部分に)供給される前にクロック・ゲート2332によって処理される。制御回路2360からの信号の制御下で、クロック・ゲート2332は、クロック信号CKを渡す又は遮断する。そうして、1つ又は複数の処理レーンを無効にすることの少なくとも一部として、クロック信号CKは、それらの処理レーンに関連する1つ又は複数の構成要素から遮断され得る。
【0078】
サブセットの処理レーンを無効にすることは、無効にされたレーンに関連するバス・ドライバなどの通信回路を無効にすること(たとえば、クロック・ゲーティング又は電力ゲーティングによって)もまた(又はその代わりに)含み得る。
【0079】
さらなる実例において、セットの処理要素及びレジスタは、クロスレーン動作(そこで、レジスタの内容は、1つ又は複数の他のレジスタの内容に関して実施される動作に依存し得る)を行うように配置されたいわゆる順列論理(permute logic)を含み得る。実例において、順列論理は、(a)1つ又は複数の現在無効にされているレーンの内容から現在アクティブなレーンの内容を導出することと、(b)現在無効にされているレーンの内容を導出することとのいずれか又は両方を行う動作を実施することを抑止されるように、制御回路2360の制御下で動作する。
【0080】
これらの手法の組合せ、及び他の類似の手法が、サブセットの処理レーンの動作を無効にする機能を実施するために、使用され得ることが理解されよう。変更形態は、述語フラグの使用と時に称される配置とは異なることもまた理解されよう。述語フラグは、ベクトル・プロセッサのそれぞれの処理レーンに関連する条件付き実行をもたらす。そのような状況で、レーンは、ベクトル・プロセッサによる使用のために利用可能なままである。一方、本配置では、サブセットの処理レーンは、ベクトル・プロセッサによる使用のために利用可能でなくなるように、無効にされ、ベクトル・プロセッサは、それが最大データ・ベクトル長に対応する数より少数の処理レーンを単に有するかのように、動作する。本出願に関連して無効にされたレーンは、メモリに書き戻されない。
【0081】
述語付きレーン(predicated lane)は、レジスタ書き戻しの一部として保存され得る。具体的には、マージするベクトル・ロードは、指定レジスタによって最初に保持された残りの値を保存しつつ、1サブセットの要素のみをロードすることができる。OoO(out of order:アウト・オブ・オーダー)プロセッサにおいて、名前変更は、名前変更の前に宛先レジスタから新たに名前変更されるレジスタへのそれらの残りの値の移動を必要とし得る。本システムの実例は、無効にされたレーンの内容に関する保証を行わなくてもよい。
【0082】
別の実例において、支配的なベクトル長VLがMax VL未満である場合に不必要な構造体に電力を提供しないこと又はその動作を有効にしないことによって節電するために、制御回路2360は、たとえば、それらのデータ構造体への電力供給を制御することによって及び/又は前述のようなそれらのデータ構造体のクロック-ゲーティングによって、制御回路によってセットされたデータ・ベクトル長に応じて命令待ち行列2364内のデータ構造体の一部の動作を選択的に無効にするように構成される。
【0083】
実例の実施例において、所与のベクトル処理命令のための命令サンプル・データは、所与のベクトル処理命令の実行に適用可能なベクトル長を示す。これは、レジスタ2390に記憶されたような、サンプル命令の実行に適用可能な現在のVLを示す命令サンプル・データ2385を生成するように構成されたVLデータ・ジェネレータ2380を備えるジェネレータによって、達成することができる。
【0084】
図24は、制御回路2360によるレジスタ2390におけるベクトル長の設定の実例を示す概略的流れ図である。この実例では、より低いセキュリティ・モードによって使用するためのベクトル長は、単に、より高いセキュリティ・モードで動作するプログラム・コードによってセットすることができる。他の実例において、任意の命令が、VLを変更するために使用され得る。
【0085】
プロセッサ20は、2つ以上のセキュリティ・モードで処理活動を実行するように構成される。セキュリティ・モードは、セキュリティ・モードのうちの1つで実行される処理活動がキュリティ・モードのうちのもう1つのセキュリティ・モードで実行される処理活動に関連する少なくともいくつかの情報にアクセスすることを抑止するように配置され得る。たとえば、より低いセキュリティ・レベル・モードにおけるプロセッサ20の動作が、より高いセキュリティ・レベル・モードにおける処理要素の動作に関連する少なくともいくつかの情報(レジスタ内容、又はアドレス空間の部分など)にアクセスすることができない(又は、少なくともアクセスすることを抑止される)ように、より高いセキュリティ・レベル・モード及びより低いセキュリティ・レベル・モードを含む2つ以上のセキュリティ・モードが、提供され得る。他の実例では、プロセッサ20が、2つ以上の補完的セキュリティ・モードのうちの1つで動作しているとき、プロセッサ20は、2つ以上の補完的セキュリティ・モードのうちの別のセキュリティ・モードでの動作に関連する少なくともいくつかの情報にアクセスすることができないように、2つ以上の相互排他的なセキュリティ・モードが、提供され得る。これらの配置は、結合され得る。
【0086】
プロセッサの異なるセキュリティ・モードの1つの使用は、仮想化に関連し、そこでは、複数のオペレーティング・システムが、いわゆるハイパーバイザの各制御又は監督下で、いわゆる仮想機械としての単一のプロセッサ上に共存する。様々なステップが、異なる仮想機械の間の不適切な干渉を回避するために、取られ得る。たとえば、アプリケーションは、最も低いセキュリティ・レベルで動作し得、オペレーティング・システムは、次のより高いセキュリティ・レベルで動作し得、そして、ハイパーバイザは、さらにより高いセキュリティ・レベルで動作し得る。このようにして、オペレーティング・システムのうちの1つの下で動作するアプリケーションがオペレーティング・システムのうちの別のオペレーティング・システムの下で動作するアプリケーションによって使用される情報を破損することを回避する(たとえば)ために、保護が、システム内に構築され得る。
【0087】
セキュリティ・モードの一時的変更は、1つのセキュリティ・モードで動作するプログラム命令から異なるセキュリティ・モードの下での機能又はサブルーチンへの分岐として実装することができる。プロセッサに関連付けられたレジスタが、第1の(最初の)セキュリティ・モードによって使用されるものとしてのそれらのレジスタの内容の破損を必ずしも開示せずに又は可能にせずに、第2の(新しい)セキュリティ・モードにおいて使用されることを可能にするために、プロセッサ20がプロセッサ・スタックなどのメモリ・ストレージにそれらのレジスタを記憶することが適切になり得る。これはまた、機能又はサブルーチンへの分岐が生じたときに適用した同じレジスタ・パラメータで第1のセキュリティ・モードにおける処理活動が再開することを可能にする。
【0088】
図24を参照すると、ステップ2400において、プログラム・コードが、データ・ベクトル長VL1に従って、より低いセキュリティ・モードで実行される。ステップ2410において、より低いセキュリティ・モードのプログラム・コードが、より高いセキュリティ・モードを呼び出す。制御が、より高いセキュリティ・モードに転送され、ステップ2420で、より高いセキュリティ・モードで動作するプログラム・コードが、ベクトル処理命令のうちの少なくともいくつかはデータ・ベクトルのベクトル長を定義するように構成されたベクトル長定義命令であることの実例としてのベクトル長変更命令を実行することによって、より低いセキュリティ・モードに適用可能なベクトル長を新しいベクトル長VL2にセットする。これは、レジスタ2390における支配的なVL値を変更する。ステップ2430で、より低いセキュリティ・モードへのリターン・バックを実行する。ステップ2440で、より低いセキュリティ・モードが、ベクトル長VL2でプログラム・コードを実行する。
【0089】
したがって、これは、より低いセキュリティ・モードで実行される命令が、より高いセキュリティ・モードで実行される命令によってアクセス可能なデータ項目にアクセスすることができないような、複数のセキュリティ・モードで動作可能な装置の実例を示し、制御回路2360は、現在のセキュリティ・モードにおける長さセット命令の復号に応答して、より低いセキュリティ・モードに適用可能なデータ・ベクトル長をセットする。
【0090】
しかしながら、ベクトル長がより高いセキュリティ・モードでセット又は指定されることは要件ではないことに留意されたい。この変更を行うためにはセキュリティ・モードを変更するという要件が存在する必要はない。本技法は、ベクトル長をセットするために使用される機構に関係なく不正確に又は不十分に選択されたベクトル長を検出することに関係する。
【0091】
制御回路2360によってベクトル長VLをセットするプロセスは、1(又は2、「ベクトル」という用語を有用な方法で適用するために)からVL Maxまでの任意のVL値を可能にし得る。しかしながら、いくつかの実例では、VLの選択可能な値は、1サブセットのすべてのそのような利用可能な値に制限される。たとえば、VL MaxとVLの選択可能な値との両方が、128の倍数などの特定の値の倍数に限定され得る。実例として、Max VLが1024である場合、VLは、128、256、384、512、640、768、896又は1024ビット(前述を参照)のうちのいずれか1つになるように制御回路62によってセットされ得る。実例において、クロック・ゲーティング、電力ゲーティング又は他の技法が、それぞれのそのような要素への個々の注意を必要とするのではなくて、バンクごとに適用され得るように、ベクトル・プロセッサによって使用される少なくともいくつかの構成要素(たとえば、レジスタ400、処理要素410など)は、(例えば)128ビットの広いユニットのバンクにおいて配置され得る。
【0092】
VLセット命令は、ベクトル長の絶対値の変更、たとえば「VLを64にセットする(Set VL to 64)」、を実装することができることに留意されたい。しかしながら、VLセット命令はそれ自体がベクトル長に依存しない(つまり、それは、異なる物理的制限又はMax VLを有する異なるデータ処理装置に正確に作用することになる)ことを実現するために、もう1つのオプションは、その特定のデータ処理装置に関するMax VLが何であってもVLセット命令が、ベクトル長を特定の比率のMax VLにセットするように、定義及び実行されるということである。たとえば、命令は、「VLをMax VL/4にセットする(Set VL to Max VL/4)」という形式でもよい。したがって、本論考におけるベクトル長VL1、VL2は、絶対ベクトル長として又は特定の実行装置のMax VLを参照して表される相対的ベクトル長として解釈されるべきである。2の累乗であるMax VL値の使用、及びMax VLに対する2の累乗によってVLを変えるVLセット命令は、これに関連して有用であることに留意されたい。したがって、Set VLの異なるバージョン又は「フレーバ」が、考慮され得る。Set VLは、固定サイズ(たとえば、128ビット)の倍数を定義する即値又はレジスタ依存のオペランドに従って、作動することができる。これは、Max VLを上限とされ得る。別法として、Set VLは、支配的なVL Max値が何であってもその割合(たとえば、1、1/2、1/4、1/8、…)を記述する即値又はレジスタ依存のオペランドに従って作用することができる。
【0093】
VLがどのくらいの頻度で変更され得るかの構造的制限は必ずしも存在しないが、あまり頻繁に、たとえば、100又は1000命令ごとを超えて、変更を行うことはシステム(たとえば、プログラム制御下の)にとって適切ではない可能性がある。これは、VLの変更時に生じる動作及び管理(たとえば、セキュリティ・レベルの変更、又は後述するような復号の失速)から生じる非効率性を回避又は低減するのを助けることができる。
【0094】
図25は、図1のデコーダ回路50などのデコーダ回路の動作を概略的に示す。図25の流れ図は、本論考に関連する技術的ポイントを説明することを目的として、簡略化されている。さらなる動作が、復号回路50の動作の一部として、実行され得ることが理解されよう。
【0095】
デコーダ回路50は、(任意選択で)ベクトル処理命令を動作のセットに復号するように動作可能であり、セットの数は、本実施例では制御回路2360によってセットされる、データ・ベクトル長と同等である。これは、たとえば、スキャッタ、ギャザーなどの複数のステージ命令について、生じ得る。他の動作が、単一のベクトル処理命令として実施される。
【0096】
ステップ2500は、ベクトル処理命令の復号を含む。ステップ2510で、復号された命令は、図2を参照して論じられたような連続的データ・ベクトル120のデータ項目100に適用される動作のセットに分割される又は「解読される」。ステップ2510における動作は、制御回路2360によって確立された及びレジスタ2390に記憶された現在のベクトル長(VL)に応答する。ステップ2520で、動作のセットは、ベクトル・プロセッサによって実行するために発送される。デコーダ回路50によるステップ2500、2510の動作は、ベクトル処理命令を動作のセットに復号するための命令デコーダの実例を示し、セットの数は、制御回路によってセットされたデータ・ベクトル長と同等である。
【0097】
したがって、特定の命令に適用可能なベクトル長は、たとえば、前述のようなVL設定命令、及び/又は前述のようなVLレジスタの内容によって、及び/又は図25を参照して論じられたタイプの解読動作の結果として、VLのアクティブ設定から生じ得る。これらのインスタンスのうちの任意の1つ又は複数において、所与のベクトル処理命令のための命令サンプル・データは、所与のベクトル処理命令の実行に適用可能なベクトル長を示し得る。
【0098】
また、論じられたシナリオのうちのいずれかにおけるもう1つのオプションは、所与のベクトル処理命令のための命令サンプル・データが、所与の命令の実行に適用可能な述語フラグの各々の状態を示す所与の命令及びデータに適用可能なデータ要素サイズ(並びに所与の命令に適用可能なベクトル長)を示すことである。
【0099】
図26は、処理レーンのサブセット2620が少なくとも一時的に無効にされるような、前述の処理は低減されたベクトル長VL1 2610を課す、最大ベクトル長max VL2600の実例を概略的に示す。
【0100】
述語フラグに関して、サンプリング回路840が、無効にされたサブセット2620に対応するフラグ2630の非アクティブ状態を含む述語フラグのカウントに基づいて命令サンプリング・データ850を生成することができるように、修正論理830が、無効にされたサブセット2620に対応する述語フラグ2630を「非アクティブ」などの所定の状態にセットするように構成される。
【0101】
これの実例は、256ビットの最大ベクトル長を有するシステムを示すが、128ビットの現在のベクトル長にセットされた、図27に概略的に示されている。これは、ベクトルのビット128…255が現在無効にされていることを意味する。しかしながら、外見上有効な述語フラグが、無効にされたベクトル位置に関連付けられているということでもよい。修正論理830は、無効にされたレーン128…255に関連するベクトル位置16…31が「非アクティブ」にセットされた、サンプリング(「S」)のためのデータを生成する。これは、アクティブ位置のカウントは、現在有効にされているレーンのみに基づき、正確な値の8を与えるということを意味する。
【0102】
この配置は、ジェネレータ回路が、述語フラグの所与のグループについて、現在のベクトル長のベクトルに含まれないデータ要素に関連する述語フラグが所定の状態にセットされることを示す、命令サンプル・データを生成するように構成された、実例を示す。
【0103】
図28は、以下を含むベクトル処理方法を説明する概略的流れ図である:
データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用すること(ステップ2800において)と、
それらのベクトル処理命令のうちの選択されたベクトル処理命令のためのベクトル処理活動を示す命令サンプル・データを生成すること(ステップ2810において)、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【0104】
図29は、使用され得るシミュレータ実装形態を示す。前述の実施例は、関係する技法をサポートする特定の処理ハードウェアを操作するための装置及び方法に関して本発明を実装するが、コンピュータ・プログラムの使用を介して実装される本明細書に記載の実施例による命令実行環境の提供もまた可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャの実装形態に基づくソフトウェアをもたらす限りにおいて、シミュレータとしばしば称される。様々なシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想機械、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。通常、シミュレータ実装形態は、シミュレータ・プログラム2910をサポートする、ホスト・オペレーティング・システム2920を任意選択で実行する、ホスト・プロセッサ2930を実行し得る。いくつかの配置では、ハードウェアと提供される命令実行環境との間のシミュレーションの複数のレイヤ、及び/又は同じホスト・プロセッサで提供される複数の独特の命令実行環境が存在し得る。歴史的には、強力なプロセッサが、妥当な速度で実行するシミュレータ実装形態を実現するために必要とされたが、そのような手法は、互換性又は再使用を理由として別のプロセッサに固有のコードを実行するという要望があるときなど、ある特定の状況で正当だとされ得る。たとえば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない付加的機能を命令実行環境に提供する、又は異なるハードウェア・アーキテクチャに通常は関連付けられた命令実行環境を提供することができる。シミュレーションの概説は、参照により本明細書に組み込まれている、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁、において与えられている。
【0105】
特定のハードウェア構成物又は特徴を参照して実施例が前述されてある限りにおいて、シミュレーションされる実施例では、同等の機能は、適切なソフトウェア構成物又は特徴によって、提供され得る。たとえば、特定の回路は、コンピュータ・プログラム論理として、シミュレーションされる実施例において実装され得る。同様に、メモリ・ハードウェア、たとえばレジスタ又はキャッシュ、は、ソフトウェア・データ構造体として、シミュレーションされる実施例において実装され得る。前述の実施例において参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(たとえば、ホスト・プロセッサ2930)上に存在する配置では、いくつかのシミュレーションされる実施例は、適切な場合には、ホスト・ハードウェアを利用し得る。
【0106】
シミュレータ・プログラム2910は、コンピュータ可読記憶媒体(非一時的媒体でもよい)に記憶することができ、シミュレータ・プログラム2910によってモデル化されているハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである目標コード2900(アプリケーション、オペレーティング・システム及びハイパーバイザを含み得る)にプログラム・インターフェース(命令実行環境)を提供する。したがって、前述の装置のハードウェア特徴を実際には有さないホスト・コンピュータ2930が、これらの特徴をエミュレートすることができるように、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するための命令を含む、目標コード2900のプログラム命令は、シミュレータ・プログラム2910を使用する命令実行環境内から実行され得、命令サンプル・データは、前述のような選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【0107】
したがって、図29のシミュレータ配置は、前述の装置をシミュレーションするように構成されたとき、以下を含むベクトル命令実行環境を提供するためのホスト・データ処理装置を制御するためのコンピュータ・プログラムの実例を示す:データ・ベクトルの位置に関連するそれぞれの述語フラグの状態に従って、データ・ベクトルのそれぞれのデータ要素位置に複数のデータ要素を含むデータ・ベクトルの1つ又は複数のデータ要素を生成するためのベクトル処理命令によって定義されたベクトル処理動作を選択的に適用するためのベクトル処理プログラム論理と、それらのベクトル処理命令のうちの選択されたベクトル処理命令についてのベクトル処理回路の処理活動を示す命令サンプル・データを生成するためのジェネレータ・プログラム論理、命令サンプル・データは、選択されたベクトル処理命令の実行時の述語フラグの状態を少なくとも示す。
【0108】
本出願において、「…ように構成される」という言葉は、装置の要素が、定義された動作を実施することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。たとえば、装置が、定義された動作を提供する専用ハードウェアを有し得る、或いはプロセッサ又は他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成される」は、定義された動作を実現するために装置要素が任意の形で変更される必要があることを暗示しない。
【0109】
本技法の説明のための実施例は、添付の図面を参照して本明細書で詳しく説明されているが、本技法は、それらの厳密な実施例に限定されないことと、様々な変更、追加、及び修正が、添付の特許請求の範囲によって定義されるものとしての本技法の範囲及び趣旨を逸脱することなく当業者によってもたらされる可能性があることとを理解されたい。たとえば、従属請求項の特徴の様々な組合せが、本技法の範囲を逸脱することなく、独立請求項の特徴と作られ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29