(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-12
(54)【発明の名称】述語技術
(51)【国際特許分類】
G06F 17/16 20060101AFI20240705BHJP
G06F 9/38 20180101ALI20240705BHJP
【FI】
G06F17/16 E
G06F9/38 310G
G06F9/38 370A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024502040
(86)(22)【出願日】2022-06-22
(85)【翻訳文提出日】2024-02-01
(86)【国際出願番号】 GB2022051586
(87)【国際公開番号】W WO2023002147
(87)【国際公開日】2023-01-26
(32)【優先日】2021-07-21
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】マルティネス ヴィセンテ、アレハンドロ
(72)【発明者】
【氏名】スティーブンス、ナイジェル ジョン
(72)【発明者】
【氏名】ミラノヴィッチ、イェレナ
【テーマコード(参考)】
5B013
5B056
【Fターム(参考)】
5B013AA14
5B013AA17
5B013DD01
5B056BB34
(57)【要約】
ベクトル処理における複数のベクトルの述語に関する装置、方法及びプログラムが開示される。要素サイズ及び要素カウントを含む述語情報の符号化が開示され、述語情報は、要素カウントによって与えられる複数の連続する同一の述語インジケータを含み、各述語インジケータは要素サイズに対応する。
【特許請求の範囲】
【請求項1】
装置であって、
命令を復号する復号回路と、
前記命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路と、を備え、
前記復号回路が、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
前記ソースオペランドに関して前記ベクトル処理動作を前記処理回路に実行させる制御信号を生成し、前記制御信号が更に、前記ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された前記1つ以上のソースオペランドの要素に前記ベクトル処理動作を前記処理回路に選択的に適用させ、
前記述語データ値が符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが前記要素サイズに対応する、要素カウントと、を備える、装置。
【請求項2】
前記処理回路が、前記述語データ値を復号して、前記連続する同一の述語インジケータ及び同一の述語インジケータの更なるシーケンスを生成するように構成され、前記連続する同一の述語インジケータ及び同一の述語インジケータの前記更なるシーケンスが、互いに逆のアクティビティ指示を含む、請求項1に記載の装置。
【請求項3】
前記処理回路が、前記要素カウントが所定の値を有することに応じて、すべての述語インジケータを前記連続する同一の述語インジケータとして生成する、請求項1に記載の装置。
【請求項4】
前記述語データ値の前記符号化が、反転ビットを更に含み、前記連続する同一の述語インジケータを形成する繰り返しアクティビティ指示が、前記反転ビットに依存する、請求項1から3のいずれか一項に記載の装置。
【請求項5】
装置であって、前記述語データ値の前記符号化が、前記要素サイズを示すために要素サイズ符号化を使用し、前記要素サイズ符号化が、
前記要素サイズがバイト長であり、
前記要素サイズがハーフワード長であり、
前記要素サイズがワード長であり、
前記要素サイズがダブルワード長であり、
前記要素サイズがクワッドワード長であることのうちの少なくとも1つのための指示を備える、請求項1から4のいずれか一項に記載の装置。
【請求項6】
装置であって、前記符号化が、
前記述語データ値が、前記要素サイズ及び前記要素カウントを示すために使用される前記述語データ値の所定の部分を含み、
前記述語データ値の前記所定の部分における、前記要素サイズを示す第1のサブ部分と前記要素カウントを示す第2のサブ部分との間の境界位置が、示された前記要素サイズに依存する、請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記第1のサブ部分内のアクティブビットのビット位置が前記要素サイズを示し、前記アクティブビットの前記ビット位置が前記境界位置を定義する、請求項5に従属する場合の請求項6に記載の装置。
【請求項8】
前記述語データ値の前記符号化が、前記述語データ値の所定数のビットに制限され、
前記処理回路が、前記ソース述語レジスタから前記述語データ値を読み取るときに、前記述語データ値の前記所定数のビットを形成するビットを超えて前記ソース述語レジスタに保持された任意の更なるビットを無視するように構成されている、請求項1から7のいずれか一項に記載の装置。
【請求項9】
前記述語データ値の前記符号化が、前記述語データ値の所定数のビットに制限され、
前記処理回路が、新しい述語データ値をターゲット述語レジスタに書き込むとき、前記述語データ値の前記所定数のビットを形成するビットを超えて前記ターゲット述語レジスタ内に保持され得る任意の更なるビットを所定の値に設定するように構成されている、請求項1から8のいずれか一項に記載の装置。
【請求項10】
前記復号回路が、生成されるべき述語と、前記生成されるべき述語によって制御されるべきベクトルの数とを指定する述語生成命令に応じて、対応する要素サイズ及び対応する要素カウントを示す述語データ値を前記処理回路に生成させる制御信号を生成する、請求項1から9のいずれか一項に記載の装置。
【請求項11】
前記復号回路が、生成されるべきすべて真の述語を指定するすべて真の述語生成命令に応じて、前記処理回路に、前記述語インジケータのためのすべてアクティブな要素を示すすべて真の述語データ値を生成させる制御信号を生成する、請求項1から10のいずれか一項に記載の装置。
【請求項12】
前記復号回路が、生成されるべきすべて偽の述語を指定するすべて偽の述語生成命令に応じて、前記処理回路に、前記述語インジケータのためのすべて非アクティブな要素を示すすべて偽の述語データ値を生成させる制御信号を生成する、請求項1から11のいずれか一項に記載の装置。
【請求項13】
前記復号回路が、変換されるべき述語データ値を保持するソース述語レジスタを指定する述語変換命令に応じて、前記処理回路に前記変換されるべき述語データ値を復号させ、変換済み述語データ値を生成させる制御信号を生成し、
前記変換済み述語データ値が、ビット位置におけるビット値が対象データ項目内の要素の述語を示す直接マスクスタイル表現を含む、請求項1から12のいずれか一項に記載の装置。
【請求項14】
前記述語変換命令が2つ以上の宛先述語レジスタを指定し、前記制御信号が前記処理回路に2つ以上の変換済み述語データ値を生成させ、前記2つ以上の変換済み述語データ値の各々が前記直接マスクスタイル表現を含み、前記2つ以上の変換済み述語データ値の各々が、前記変換されるべき述語データ値によって表される前記述語インジケータの異なるサブセットに対応する、請求項13に記載の装置。
【請求項15】
前記述語変換命令が、生成されるべき2つ以上の前記変換済み述語データ値の多重度を指定する、請求項14に記載の装置。
【請求項16】
前記述語変換命令が、前記変換されるべき述語データ値によって表される前記述語ビットの複数の可能なサブセットのうちのどれが生成されるべきかを指定する、請求項13から15のいずれか一項に記載の装置。
【請求項17】
前記復号回路が、カウントされるべき述語データ値を保持するソース述語レジスタを指定する述語カウント命令に応じて制御信号を生成し、前記制御信号が、前記処理回路に、前記変換されるべき述語データ値を復号させて、前記変換されるべき述語データ値によって示される述語インジケータを決定させ、前記述語インジケータ内のアクティブな要素の数に対応するスカラー値を宛先汎用レジスタに記憶させる、請求項1から16のいずれか一項に記載の装置。
【請求項18】
装置であって、前記述語カウント命令が、カウントされるべきアクティブな要素の数の上限を指定し、前記上限が、
2つのベクトル長と、
4つのベクトル長とのうちの1つに対応する、請求項17に記載の装置。
【請求項19】
前記1つ以上のソースオペランドが、
1つのソースベクトルレジスタ、
2つのソースベクトルレジスタ、又は
3つのソースベクトルレジスタを備える、請求項1から18のいずれか一項に記載の装置。
【請求項20】
前記1つ以上のソースオペランドが、
メモリ位置の範囲を含む、請求項1から19のいずれか一項に記載の装置。
【請求項21】
メモリ位置の範囲が、ポインタのセットによって示される、請求項20に記載の装置。
【請求項22】
前記ベクトル処理命令が、宛先ベクトルレジスタを更に指定する、請求項1から21のいずれか一項に記載の装置。
【請求項23】
前記ベクトル処理命令が、宛先メモリ位置を更に指定する、請求項1から22のいずれか一項に記載の装置。
【請求項24】
データ処理方法であって、
命令を復号することと、
前記命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路を制御することと、を含み、
前記復号することが、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
前記処理回路に前記ソースオペランドに関して前記ベクトル処理動作を実行させる制御信号であって、前記制御信号が更に、前記処理回路に、前記ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された前記1つ以上のソースオペランドの要素に前記ベクトル処理動作を選択的に適用させる、制御信号を生成することを含み、
前記述語データ値が符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが前記要素サイズに対応する、要素カウントと、を備える、データ処理方法。
【請求項25】
命令実行環境を提供するようにホスト処理装置を制御するコンピュータプログラムであって、
命令を復号する復号ロジックと、
前記命令によって指定されたベクトル処理動作を入力データベクトルに適用するための処理ロジックと、を備え、
前記復号ロジックが、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
前記処理ロジックにソースオペランドに関して前記ベクトル処理動作を実行させる制御信号を生成し、前記制御信号が更に、前記処理回路に、前記ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された前記1つ以上のソースオペランドの要素に前記ベクトル処理動作を選択的に適用させ、
前記述語データ値が符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが前記要素サイズに対応する、要素カウントと、を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理に関する。特に、本技術は、ベクトル処理及びそのベクトル処理を制御するための述語(predicate)の使用に関する。
【0002】
データ処理装置は、ベクトル処理動作を実行するための処理回路を備え得る。ベクトル処理動作は、ベクトルレジスタに保持されたベクトルのそれぞれの要素に対して実行される並列動作を伴い得る。ベクトルに関するベクトル処理動作の述語は、そのベクトルのどの要素がベクトル処理動作を受けるかを制御することを含む。
【0003】
本明細書に記載の少なくともいくつかの例は、装置を提供し、本装置は、命令を復号する復号回路と、
命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路と、を備え、
復号回路は、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
ソースオペランドに関してベクトル処理動作を処理回路に実行させる制御信号を生成し、制御信号は更に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を処理回路に選択的に適用させ、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【0004】
本明細書で説明される少なくともいくつかの例は、データ処理方法を提供し、
データ処理方法は、
命令を復号することと、
命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路を制御することと、を含み、
復号することは、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
処理回路にソースオペランドに関してベクトル処理動作を実行させる制御信号であって、制御信号は更に、処理回路に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を選択的に適用させる、制御信号を生成することを含み、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【0005】
本明細書に記載の少なくともいくつかの例は、命令実行環境を提供するようにホスト処理装置を制御するコンピュータプログラムを提供し、コンピュータプログラムは、
命令を復号する復号ロジックと、
命令によって指定されたベクトル処理動作を入力データベクトルに適用するための処理ロジックと、を備え、
復号ロジックは、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
処理ロジックにソースオペランドに関してベクトル処理動作を実行させる制御信号を生成し、制御信号は更に、処理回路に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を選択的に適用させ、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【図面の簡単な説明】
【0006】
本技術について、下記の説明と併せて読むために、添付図面に示されるとおりの本技術の実施形態を参照しながら、単に一例として更に説明する。
【
図1】本技術の様々な構成による装置を概略的に示す。
【
図2A】本技術の様々な構成による、述語カウント(predicate-as-count)手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。
【
図2B】本技術の様々な構成による、述語カウント(predicate-as-count)手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。
【
図3】本技術の様々な構成による述語カウント手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。
【
図4A】本技術の様々な構成による、述語符号化における反転インジケータの使用を概略的に示す。
【
図4B】本技術の様々な構成による述語カウント定義のために使用される符号化における要素カウントの指示と要素サイズの指示との間の境界の可変位置を概略的に示す。
【
図4C】本技術の様々な構成による、述語カウント定義のために使用される符号化における要素カウントの指示と要素サイズの指示との間の境界の位置を決定するビット値の例を概略的に示す。
【
図5】本技術の様々な構成による述語カウント定義のために使用される符号化を概略的に示す。
【
図6】本技術の様々な構成による述語カウントを定義する述語データ値の読み取り及び書き込みを概略的に示す。
【
図7】本技術の様々な構成による述語生成命令の使用を概略的に示す。
【
図8】本技術の様々な構成による、述語カウンタ(predicate-as-counter)を述語マスク(predicate-as-mask)に変換するベクトル処理命令におけるサイズインジケータの使用を概略的に示す。
【
図9A】本技術の様々な構成による、述語変換命令におけるサブ部分インジケータの使用を概略的に示す。
【
図9B】本技術の様々な構成による、すべて真の述語生成命令を概略的に示す。
【
図10】本技術の様々な構成による述語カウント命令の使用を概略的に示す。
【
図11】使用され得るシミュレータの実装形態を概略的に示す。
【0007】
本明細書に開示された一例には装置があり、装置は、
命令を復号する復号回路と、
命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路と、を備え、
復号回路は、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
ソースオペランドに関してベクトル処理動作を処理回路に実行させる制御信号を生成し、制御信号は更に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を処理回路に選択的に適用させ、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【0008】
データ処理動作の述語は、一般に、述語マスクの使用によって達成され、それに従って、述語マスクは、データ処理動作が適用され得る可能な並列位置に対応するいくつかのインジケータを保持する。インジケータのそれぞれの値は、それぞれの位置におけるデータ処理動作が行われるべきか否かを決定する。本明細書では、この手法は「述語マスク」と称される。したがって、ベクトル処理動作のコンテキストでは、ベクトル処理動作を受けるベクトル内の要素の数に対応する数のインジケータを含む述語マスクが提供され得る。次いで、述語マスク内のインジケータのそれぞれの値が、ベクトルのどの要素がベクトル処理動作を受けるかを決定する。しかしながら、本技術の発明者らは、大量の述語情報を必要とするいくつかの動作に関して、そのデータ幅をカバーするために複数の述語マスクを使用することは、実装するには非実用的であることを見出した。例えば、これは、マルチベクトル処理のコンテキストにおける場合であり得、問題は、スケーラブルベクトル処理のコンテキストにおいて、すなわち、データ処理装置が、固定数の要素を有する固定ベクトル長に対してベクトル処理を実行するように制約されず、むしろ、スケーラブルベクトル、すなわち、長さ及び/又は要素サイズが変化し得るスケーラブルベクトルに対してそのようなベクトル処理を実行することができる場合に、ますます深刻になり得る。
【0009】
このコンテキストでは、本技術は、従来の述語マスク手法に従って可能であるよりも大量の述語情報がソース述語レジスタの内容によって提供されるための効率的な方法を提供する。述語マスクの場合のように、ソース述語レジスタの内容を形成するインジケータ(例えば、ビット値)と命令のオペランドの対象要素との間に1対1の対応がある代わりに、本技術は、ソース述語レジスタ内に保持される述語データ値の符号化を利用し、符号化は、要素サイズ及び要素カウントを指定する。要素カウントは、複数の連続する同一の述語インジケータを示し、各述語インジケータは要素サイズに対応する。本明細書では「述語カウント」と称されるこの手法は、ソースオペランド(複数可)の個々の要素に対応する述語インジケータの任意の個々の設定をサポートしないが、述語使用は、間にギャップがない、アクティブな要素のセットと、それに続く非アクティブな要素のセット(又はその逆)と、を含むことが多いことが分かっている。例えば、ベクトル処理が行列要素を扱っているとき、アクティブな要素のセットの後に非アクティブな要素が続く状況が、行列行の終わりに生じる可能性がある。逆に、アクティブな要素が続く非アクティブな要素のセットの状況は、行列行の開始時に生じ得る。本技術によって使用される符号化が、アクティブ/非アクティブな要素のそのようなセットが効率的に符号化されることを可能にする場合、これは、積データ値を提供するために単一のソース述語レジスタのみを必要とし、それにもかかわらず、積データ値は、複数のベクトルオペランドの述語化のために必要とされる情報を表すことができる。
【0010】
したがって、いくつかの例では、必要とされる述語インジケータは、アクティブな要素のフルセット、又は逆に非アクティブな要素のフルセットを備えることができるが、より一般的には、他の例では、処理回路は、述語データ値を復号して、連続する同一の述語インジケータ及び同一の述語インジケータの更なるシーケンスを生成するように構成され、連続する同一の述語インジケータ及び同一の述語インジケータの更なるシーケンスは、互いに逆のアクティビティ指示を備える。
【0011】
それにもかかわらず、場合によっては、すべての述語インジケータが同じ(すなわち、すべてアクティブ又はすべて非アクティブ)である必要があり得る場合、いくつかの例では、処理回路は、要素カウントが所定の値を有することに応じて、すべての述語インジケータを連続する同一の述語インジケータとして生成する。
【0012】
いくつかの例では、述語データ値の符号化は、反転ビットを更に備え、連続する同一の述語インジケータを形成する繰り返しアクティビティ指示は、反転ビットに依存する。したがって、この反転ビットを使用して、マスク情報の「極性」を設定することができる。更に、反転ビットは、したがって、要素サイズ及び要素カウントと組み合わせて、アクティブな要素の開始を定義する(ここで、これは、アクティブな要素の後に非アクティブな要素が続く場合、要素のセットの開始であるか、又は非アクティブな要素の後にアクティブな要素が続く場合、アクティブな要素が非アクティブな要素のセットに続いて開始する要素のセット内の点である)。
【0013】
使用される符号化は、様々な方法で要素サイズを表し得、要素サイズの範囲を表すことが可能であり得るが、いくつかの例では、述語データ値の符号化は、要素サイズを示すために要素サイズ符号化を使用し、要素サイズ符号化は、
要素サイズはバイト長であり、
要素サイズはハーフワード長であり、
要素サイズはワード長であり、
要素サイズはダブルワード長であり、
要素サイズはクワッドワード長であることのうちの少なくとも1つのための指示を備える。
【0014】
述語データ値の符号化は、要素サイズ及び要素カウントの両方が述語データ値によって表されることを可能にするが、これらのそれぞれの成分を表す述語データ値の部分は固定される必要はない。実際、いくつかの例では、述語データ値の符号化は、要素サイズ及び要素カウントを示すために使用される述語データ値の所定の部分を含み、要素サイズを示す第1のサブ部分と要素カウントを示す第2のサブ部分との間の述語データ値の所定の部分における境界位置は、示された要素サイズに依存する。2つのサブ部分の間のこの可変境界は、述語データ値において利用可能な空間がどのように使用されるかにおける柔軟性を可能にする。特に、要素サイズを示すのに必要な空間が少ない例では、要素カウントのためにより多くの空間を使用することができ、逆に、要素カウントを示すのに必要な空間が少ない例では、要素サイズのためにより多くの空間を使用することができる。
【0015】
要素カウント及び要素サイズが表される特定の方法は限定されず、様々な形態をとり得る。しかしながら、上記で説明した方法で境界位置が可変であるいくつかの例では、第1のサブ部分中のアクティブビットのビット位置は要素サイズを示し、アクティブビットのビット位置は境界位置を定義する。
【0016】
本技術の利点は、大量の述語インジケータが述語データ値内の比較的少量の空間によって表され得るように、述語カウンタによって使用される特に効率的な符号化である。実際、装置は、ソース述語レジスタの内容の制限された部分内の述語データ値を処理するように構成され得る。これは、本技術の実装の容易さを促進し得る。例えば、場合によっては、述語データ値の符号化は、述語データ値の所定数のビットに制限され、処理回路は、ソース述語レジスタから述語データ値を読み取るときに、述語データ値の所定数のビットを形成するビットを超えてソース述語レジスタに保持される任意の更なるビットを無視するように構成される。同様に、場合によっては、述語データ値の符号化は、述語データ値の所定数のビットに制限され、処理回路は、新しい述語データ値をターゲット述語レジスタに書き込むとき、述語データ値の所定数のビットを形成するビットを超えてターゲット述語レジスタ内に保持され得る任意の更なるビットを所定の値に設定するように構成される。
【0017】
本技術は更に、装置が述語カウンタ例の効率的な作成及び使用をサポートするために応じ得る様々な更なる命令を提案する。したがって、いくつかの例では、復号回路は、生成されるべき述語及び生成されるべき述語によって制御されるべきベクトルの数を指定する述語生成命令に応じて、処理回路に、対応する要素サイズ及び対応する要素カウントを示す述語データ値を生成させる制御信号を生成する。
【0018】
いくつかの例では、復号回路は、生成されるべきすべて真の述語を指定するすべて真の述語生成命令に応じて、処理回路に、述語インジケータのためのすべてアクティブな要素を示すすべて真の述語データ値を生成させる制御信号を生成する。
【0019】
いくつかの例では、復号回路は、生成されるべきすべて偽の述語を指定するすべて偽の述語生成命令に応じて、処理回路に、述語インジケータのためのすべて非アクティブな要素を示すすべて偽の述語データ値を生成させる制御信号を生成する。
【0020】
述語カウンタ表現は述語情報の特に効率的な符号化密度を提供するが、それにもかかわらず、本技術は、従来の述語マスク表現が有用に使用され得る状況が生じ得ることを認識し、したがって、述語カウンタ表現から述語マスク表現への変換を可能にする少なくとも1つの命令が提案される。したがって、いくつかの例では、復号回路は、変換されるべき述語データ値を保持するソース述語レジスタを指定する述語変換命令に応じて、処理回路に変換されるべき述語データ値を復号させ、変換済み述語データ値を生成させる制御信号を生成し、変換済み述語データ値は、ビット位置におけるビット値が対象データ項目内の要素の述語を示す直接マスクスタイル表現を含む。
【0021】
述語カウンタ表現が、同等のサイズの述語マスク表現よりもはるかに多数の要素を容易にカバーし得る場合、述語カウンタ表現が2つ以上の述語マスクに変換され得ることが更に提案される。したがって、いくつかの例では、述語変換命令は、2つ以上の宛先述語レジスタを指定し、制御信号は、処理回路に、2つ以上の変換済み述語データ値を生成させ、2つ以上の変換済み述語データ値の各々は、直接マスクスタイル表現を含み、2つ以上の変換済み述語データ値の各々は、変換されるべき述語データ値によって表される述語インジケータの異なるサブセットに対応する。
【0022】
いくつかの例では、述語変換命令は、生成されるべき2つ以上の変換済み述語データ値の多重度を指定する。
【0023】
いくつかの例では、述語変換命令は、変換されるべき述語データ値によって表される述語ビットの複数の可能なサブセットのうちのどれが生成されるべきかを指定する。
【0024】
いくつかの例では、復号回路は、カウントされるべき述語データ値を保持するソース述語レジスタを指定する述語カウント命令に応じて、処理回路に、変換されるべき述語データ値を復号させて、変換されるべき述語データ値によって示される述語インジケータを決定させ、述語インジケータ内のアクティブな要素の数に対応するスカラー値を宛先汎用レジスタに記憶させる制御信号を生成する。
【0025】
いくつかの例では、述語カウント命令は、カウントされるべきアクティブな要素の数の上限を指定し、上限は、2つのベクトル長、及び4つのベクトル長のうちの1つに対応する。
【0026】
1つ以上のソースオペランドは、ベクトル処理動作の対象となる様々なタイプの1つ以上のデータ項目を示し得る。データ項目のタイプは、動作の一部として述語を受け得る複数の要素を含む限り、本技術を限定するものではない。更に、ソースオペランドは1つだけであってもよいし、複数であってもよい。複数のソースオペランドの場合、述語がそれらの複数のソースオペランドのすべてに適用されるとき、述語データ値に符号化された述語情報の第1の部分が第1のソースオペランドに適用され、述語データ値に符号化された述語情報の第2の部分が第2のソースオペランドに適用され、以下同様に適宜適用されるように、オペランドに暗黙の順序がある。ソースオペランドは、ベクトルレジスタを示してもよく(特に、それらはスケーラブルベクトルレジスタであってもよい)、或いは、それらはメモリ位置の連続範囲を示してもよい。実際、ソースベクトル自体は、ポインタ、すなわち、収集(ロード)又は分散(記憶)動作によって、メモリ位置の範囲を示し得る。メモリ位置の範囲の場合、述語は、ロード動作又は記憶動作のいずれかのために、どの特定の位置がアクセスされる/アクセスされないかを制御する。
【0027】
したがって、いくつかの例では、1つ以上のソースオペランドは、1つのソースベクトルレジスタ、2つのソースベクトルレジスタ、又は3つのソースベクトルレジスタを備える。更なる数のソースベクトルレジスタも可能である。いくつかの例では、1つ以上のソースオペランドは、メモリ位置の範囲を含む。メモリ位置の範囲は、メモリ位置の単一の連続ブロックであり得るか、又はセットポインタによって示され得、したがって、より広いメモリ空間にわたって潜在的に分散され得る。
【0028】
いくつかの例では、ベクトル処理命令は、宛先ベクトルレジスタを更に指定する。
【0029】
いくつかの例では、ベクトル処理命令は、宛先メモリ位置を更に指定する。
【0030】
本明細書に開示された一例にはデータ処理方法があり、本方法は、
命令を復号することと、
命令によって指定されたベクトル処理動作を入力データベクトルに適用する処理回路を制御することと、を含み、
復号することは、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
処理回路にソースオペランドに関してベクトル処理動作を実行させる制御信号であって、制御信号は更に、処理回路に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を選択的に適用させる、制御信号を生成することを含み、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【0031】
本明細書で開示された一例では、命令実行環境を提供するようにホスト処理装置を制御するためのコンピュータプログラムがあり、コンピュータプログラムは、
命令を復号する復号ロジックと、
命令によって指定されたベクトル処理動作を入力データベクトルに適用するための処理ロジックと、を備え、
復号ロジックは、ベクトル処理命令に応じて、
ベクトル処理動作と、
1つ以上のソースオペランドと、
ソース述語レジスタと、を指定して、
処理ロジックにソースオペランドに関してベクトル処理動作を実行させる制御信号を生成し、制御信号は更に、処理回路に、ソース述語レジスタから取り出された述語データ値から復号された述語インジケータによって述語化された1つ以上のソースオペランドの要素にベクトル処理動作を選択的に適用させ、
述語データ値は符号化を有し、
要素サイズと、
複数の連続する同一の述語インジケータを示す要素カウントであって、各述語インジケータが要素サイズに対応する、要素カウントと、を備える。
【0032】
ここで、いくつかの特定の実施形態を図を参照しながら説明する。
【0033】
図1は、本技術の様々な例を具体化し得る処理装置10を概略的に示す。装置はデータ処理回路12を備え、この回路は、この回路が実行する命令シーケンスに応じてデータ項目にデータ処理動作を実行する。これらの命令は、データ処理装置がアクセスするメモリ14から取り出され、当業者が精通しているように、この目的のためにフェッチ回路16が提供される。更に、フェッチ回路16によって取り出された命令は、命令デコーダ回路18(復号回路とも称される)に渡され、命令デコーダ回路は、処理回路12の構成及び動作、並びにレジスタ20のセット及びロード/記憶ユニット22の様々な態様を制御するように構成された制御信号を生成する。一般に、データ処理回路12はパイプライン方式で構成されてもよいが、その詳細は本技術に関連しない。
図1が表す一般的な構成は当業者にはよく知られており、更に詳細な説明は、単に簡潔性の理由から免じられる。
図1に見られるように、レジスタ20は各々、処理回路が指定されたレジスタ内の指定されたデータ要素にデータ処理動作を適用することができるように、又は指定されたレジスタ内の指定されたデータ要素のグループ(「ベクトル」)にデータ処理動作を適用することができるように、複数のデータ要素用の記憶装置を備える。利用可能なレジスタ20のセット内で、いくつかは、装置のデータ処理特性を特徴付ける所与のサイズのデータ値を保持するように構成された汎用レジスタとして指定される。例えば、これらは64ビットデータ値であってもよいが、本技術は、任意の特定のそのようなデータ値サイズに限定されない。利用可能なレジスタのセット内の他のレジスタは、ベクトルレジスタとして明示的に構成され得、ここで、それらのベクトルレジスタが保持するベクトル長は、更に「スケーラブル」であり得、すなわち、固定されないが、所定の上限と下限との間で変動し得る。例えば、装置10は、英国ケンブリッジのArm Limitedによって提供されるArm AArch64アーキテクチャのスケーラブルベクトル拡張(SVE)に従って構成され得、これは、128ビット増分で最小128ビットから最大2048ビットまで変化することができるベクトル長をサポートする。セット内の他のレジスタは、述語レジスタとして指定されてもよく、スケーラブルベクトル処理構成のコンテキストでは、対応するスケーラブルベクトルへのベクトル処理動作の適用を制御するために述語インジケータを保持するように構成されたスケーラブル述語レジスタとして指定されてもよい。上述のSVE構成で構成される場合、装置10は、(他の汎用レジスタに加えて)32個のスケーラブルベクトルレジスタと16個のスケーラブル述語レジスタと、を含む。レジスタの他の例及びタイプも提供され得るが、本技術に直接関連しないので、本明細書では説明しない。レジスタ20に保持されるデータ要素に関するこれらの(スケーラブルな)ベクトル(述語)レジスタの使用は、いくつかの特定の実施形態を参照して以下でより詳細に説明される。命令の実行においてデータ処理回路12によって必要とされるデータ値、及びそれらのデータ処理命令の結果として生成されるデータ値は、ロード/記憶ユニット22によってメモリ14に書き込まれ、メモリから読み取られる。また、一般に、
図1のメモリ14は、典型的には処理回路がその後実行する既定の命令シーケンス(「プログラム」)の一部として、本技術の命令を記憶することができるコンピュータ可読記憶媒体の一例として見ることができることにも留意されたい。しかしながら、処理回路は、RAM、ROM、ネットワークインターフェースなどの様々な異なるソースからそのようなプログラムにアクセスし得る。本開示は、処理回路12が実行することができる様々な新規の命令を説明し、以下の図は、これらの命令の性質、これらの命令の実行をサポートするためのデータ処理回路の変形例などの更なる説明を提供する。
【0034】
図2Aは、いくつかの例における述語カウント手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。ベクトル処理命令80は、オペコード81、ソースオペランド82の指示、及びソース述語レジスタ83の指示を備えるように示されている。ソース述語レジスタ83から取り出された述語データ値84は、要素カウント指示85と要素サイズ指示86と、を含む。したがって、述語データ値84によって表される述語情報は、各々がサイズ86であり、カウント85回繰り返す述語インジケータのシーケンスを表す。例えば、サイズ86が、述語インジケータが8ビットの要素サイズに対応することを示し、カウント85が「8」を表す場合、64ビット幅(すなわち、要素サイズ×要素カウント)をカバーする述語情報を示す。述語インジケータ87のセットの例が示されており、各々は、アクティブな要素のセットを示す「1」とラベル付けされている。次いで、この述語インジケータ87のセットは、(命令80内の指示されたソース82から取り出された)データ項目のどの要素がベクトル処理動作を受けるかを制御する。このベクトル処理動作は、命令80内の特定のオペコード82によって定義される。ベクトル処理の結果90は、次いで、様々な方法で使用され得る(例えば、宛先レジスタに記憶され、命令においても指定されるが、その態様は、単に明確にするために
図2Aの図では省略されている)。したがって、ベクトル処理回路89は、
図1に示される処理回路12の一部として提供され、述語データ値の復号も、この処理回路52内で行われる。また、
図2Aに示される例は、8つの同一の述語インジケータ87の特に短く単純なセットの例であり、これは単に説明を明確にするために行われていることを理解されたい。より一般的には、本技術は、Arm AArch64アーキテクチャの上述のSVEに従うものなどのスケーラブルベクトル処理の例に適用可能であるような、同一の述語インジケータのはるかに長いシーケンスを符号化するために容易に使用され得る。
【0035】
図2Bは、いくつかの例において述語カウント手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。ベクトル処理命令250は、オペコード251、宛先オペランド252の指示、ソースオペランド253の指示、及びソース述語レジスタ254の指示を備えるように示されている。ソース述語レジスタ254から取り出された述語データ値255は、要素カウント指示256及び要素サイズ指示257を含む。したがって、述語データ値255によって表される述語情報は、各々がサイズ257であり、カウント256回繰り返す、述語インジケータのシーケンスを表す。例えば、サイズ257が、述語インジケータが16ビットの要素サイズに対応することを示し、カウント256が「32」を表す場合、512ビット幅(すなわち、要素サイズ×要素カウント)をカバーする述語情報を示す。
図2Bの場合に命令250内の特定のオペコード251によって定義される動作は、ベクトルロード又はベクトル記憶動作のいずれかであり、ロード/記憶回路260(
図1では説明を明確にするために別個に示されているが、一般にプログラムされた処理回路の一部とみなすことができる)によって実行される。ロード動作の場合、ソースオペランド253はメモリ位置の範囲を示し、述語インジケータ258のセットは、どの「要素」がメモリ位置のその範囲からロードされるかを制御し、これらは宛先ベクトルレジスタ252にロードされる。ロード/記憶回路260は、メモリ262及びレジスタ261(例えば、
図1のメモリ14及びレジスタ20)にアクセスする。記憶動作の場合、ソースオペランド253はソースベクトルレジスタを示し、述語インジケータ258のセットは、そのソースからのどの要素が、宛先オペランド252によって示されるメモリ位置の範囲に記憶されるかを制御する。ロード動作及び記憶動作の両方について、メモリ位置の範囲は、ポインタのセットによって示されてもよく(すなわち、メモリ位置に関連するソースオペランド又は宛先オペランドは、実際にはポインタのセットを保持するベクトルレジスタである)、収集/分散タイプのロード及び記憶が実行されることを可能にする(述語データ値によって述語化される)。
【0036】
図3は、いくつかの例において述語カウント手法を使用して符号化された述語情報を利用するベクトル処理動作を指定するベクトル処理命令の使用を概略的に示す。オペコード32、第1のソースベクトルレジスタ34の指示、第2のソースベクトルレジスタ36の指示、及びソース述語レジスタ38の指示を含むベクトル処理命令30が示されている。ソース述語レジスタ38から取り出された述語データ値40は、要素カウント指示42及び要素サイズ指示44を含む。したがって、述語データ値40によって表される述語情報は、各々がサイズ44であり、カウント42回繰り返す述語インジケータのシーケンスを表す。例えば、サイズ44が、述語インジケータが8ビットの要素サイズに対応することを示す場合、「8」を表すカウント42は、64ビット幅(すなわち、要素サイズ×要素カウント)をカバーする述語情報を示す。述語インジケータ46のセットの例が示されており、各々は、「1」とラベル付けされており、アクティブな要素のセットを示している。次いで、この述語インジケータ46のセットは、(命令30内の指示34及び36に従って2つのソースベクトルレジスタから取り出された)それぞれのベクトル48及び50のどの要素がベクトル処理動作を受けるかを制御する。このベクトル処理動作は、命令30内の特定のオペコード32によって定義される。ベクトル処理の結果は、1つ以上の結果ベクトル54であってもよい。実際、典型的には、1つ以上の宛先ベクトルレジスタも命令内で指定されるが、その態様は、単に明確にするために
図3の図では省略されている。したがって、ベクトル処理回路52は、
図1に示される処理回路12の一部として提供され、述語データ値の復号も、このベクトル処理回路52内で行われる。
図3に示される例は、8つの同一の述語インジケータ46の特に短く単純なセットの例であり、これは単に説明を明確にするために行われていることも理解されたい。より一般的には、本技術は、Arm AArch64アーキテクチャの上述のSVEに従うものなどのスケーラブルベクトル処理の例に適用可能であるような、同一の述語インジケータのはるかに長いシーケンスを符号化するために容易に使用され得る。
【0037】
図4Aは、いくつかの例による、述語符号化における反転インジケータの使用を概略的に示す。述語データ値60は、上述の要素カウント64及び要素サイズ66に加えて、(反転又は非反転を示す単一ビットとして提供され得る)反転指示62を更に含む。反転指示62の効果は、アクティブ及び非アクティブ述語要素の相対位置を反転させることである。したがって、第1の構成68では、アクティブな要素の後に非アクティブな要素が続き、第2の構成70では、非アクティブな要素の後にアクティブな要素が続く。もう一度、
図4Aに示される例もまた、述語インジケータの特に短く単純なセットであり、これは単に説明を明確にするために行われていることを理解されたい。より一般的には、本技術は、ガラスの同一のアクティブな要素及び/又は非アクティブな要素のはるかに長いシーケンスを容易に表し得る。わずかに異なる視点から見ると、反転指示62の値がアクティブな要素の開始を示し、それによって、1つの構成では、アクティブな要素が最も左の述語位置で開始し、カウント値に従って繰り返し、残りの述語指示が非アクティブな要素であることが分かる。他の構成では、非アクティブな要素は、最も左の述語位置を開始し、アクティブな要素の述語指示の残りがカウント値に一致する多重度を有することを可能にする位置に達するまで繰り返す。
【0038】
図4Bは、様々な例による述語カウント定義のために使用される符号化における要素カウントの指示と要素サイズの指示との間の境界の可変位置を概略的に示す。示される符号化は、反転インジケータ(I)、要素カウントインジケータ、及び要素サイズインジケータを含む。更に、図に示すように、要素カウントインジケータを保持する部分と要素サイズインジケータを保持する部分との間の境界は、位置を変えることができる。特に、それは、示される要素サイズに応じて変化し、これは、要素カウントインジケータのためのより多くの又はより少ない空間を可能にする。
【0039】
図4Cは、様々な例による述語カウント定義のために使用される符号化における要素カウントの指示と要素サイズの指示との間の境界の位置を決定するビット値の例を概略的に示す。ここで、使用される符号化は、要素サイズを「1000」として表す。したがって、先頭の1は、示された値を決定し、したがって、この「アクティブビット」は、要素カウントインジケータを保持する部分と要素サイズインジケータを保持する部分との間の境界を決定する。異なる要素サイズが「10」によって示される場合、これは、境界を右に(図示される向きにおいて)移動させ、要素カウントインジケータのために更に2ビットが使用されることを可能にするであろう。
【0040】
図5は、様々な例による述語カウント定義に使用される符号化を概略的に示す。この特定の符号化は、SVE述語レジスタの最下位の16ビットを利用する。ビット[15]は反転インジケータとして使用され、1は反転を示し、0は非反転を示す。ビット[14:0]は、要素カウント及び要素サイズを表すために使用され、要素カウント部分と要素サイズ部分との間の境界は、要素サイズ指示に応じて可変位置にある。
図4Bに見られるように、要素サイズを表すために使用される符号化は、バイナリ1と、それに続く0~4個のバイナリ0である。図に示すように、
[0]=1は、バイト要素サイズを示し(要素カウントを符号化するために利用可能なビット[14:1]を残す)、
[1:0]=10は、ハーフワード要素サイズを示し(要素カウントを符号化するために利用可能なビット[14:2]を残す)、
[2:0]=100は、ワード要素サイズを示し(要素カウントを符号化するために利用可能なビット[14:3]を残す)、
[3:0]=1000は、ダブルワード要素サイズを示し(要素カウントを符号化するために利用可能なビット[14:4]を残す)、
[4:0]=10000は、クワッドワード要素サイズを示す(要素カウントを符号化するために利用可能なビット[14:5]を残す)。
【0041】
更に、[4:0]=00000の符号化には、すべて偽の(非アクティブ)要素の特別な意味が割り当てられる。したがって、[15]=1及び[4:0]=00000であるとき、これはすべて真の(アクティブな)要素を示す、すなわち、これは述語カウンタ表現を使用するすべてアクティブな述語の標準形である。
【0042】
図6は、様々な例による述語カウントを定義する述語データ値の読み取り及び書き込みを概略的に示す。述語レジスタが示されており、述語レジスタに対する読み取り動作は最下位16ビットのみをとり、これより上のビットは無視される。述語レジスタのサイズは、特にスケーラブルベクトル処理実装のコンテキストにおいて変化し得るので、述語レジスタの最上位ビットは、図において「MAX」とラベル付けされている。例えば、SVE構成は、長さが128~2048ビットであり、64、32、16、又は8ビット要素を保持することができるスケーラブルベクトルレジスタを用いて実装され得る。これに対応して、(8ビット要素を述語化できるようにするために)スケーラブルなベクトル長の1/8であるスケーラブル述語レジスタは、長さが16~256ビットであってもよい。最小述語レジスタ長が16ビットである場合、本技術は、16ビット空間を占有する述語カウンタ符号化とともに、そのコンテキストにおいて提示される。したがって、
図6に示すように、述語データ値を読み取るとき、これより上の任意のビットは無視される。逆に、述語データ値が述語レジスタに書き込まれるとき、最下位16ビットのみが述語カウンタ符号化に従って設定され、これより上の任意のビットは0に設定される。
【0043】
図7は、様々な例による述語生成命令の使用を概略的に示す。述語生成命令100は、命令のタイプを示すオペコード102と、宛先述語レジスタの指示104と、要素サイズ指示106と、2つのソース汎用レジスタ指示107及び108と、この述語によって制御されるベクトルの数を示すオペランド(VL)110と、を備える。述語生成命令100が、2つのソース汎用レジスタの内容から述語の内容を生成するためにトリガする特定の動作は、範囲形式をとり、以下はいくつかの例にすぎない。
・第2の符号付きスカラーオペランドと第1の符号付きスカラーオペランドとの間の差が正であるか又は0である場合、この差を用いて述語カウントを生成する。
・第2の符号なしスカラーオペランドと第1の符号なしスカラーオペランドとの間の差が正であるか又は0である場合、この差を用いて述語カウントを生成する。
・第1の符号付きスカラーオペランドと第2の符号付きスカラーオペランドとの間の差が正又は0である場合、この差を用いて述語カウントを生成する。
・第1の符号なしスカラーオペランドと第2の符号なしスカラーオペランドとの間の差が正又は0である場合、この差を用いて述語カウントを生成する。
【0044】
この例におけるこの述語によって制御されるべきベクトルの数を示すオペランド(VL)110は、制御されるべき2つ又は4つのベクトルのいずれかを示す単一ビットである。次いで、これは、述語マスクの要素カウントに記憶することができる最大値を決定する。例えば、512ビットのスケーラブルベクトル長(SVL)について、4つのベクトルが述語によって制御される場合、合計(4倍)SVLは256バイトになる。バイト長の最小要素サイズでは、最大カウント値は256である。
図5の例示的な符号化を参照すると、これは、ビット[8:1]が要素カウントのために使用されることを必要とし、ビット[0]は、バイトサイズ要素を示すために1に設定される。次いで、ビット[14:9]は、この例では(例えば、述語が512ビットSVLを制御する使用のために読み取られるとき)無視される。ビット[15]は依然として反転インジケータとして読み取られる。述語は、このように、
図1に示される処理回路12の一部として提供される述語符号化回路112によってしかるべく生成される。したがって、この述語によって制御されるべきベクトルの数を示すオペランド(VL)110は、条件フラグを設定するときにすべてアクティブなチェック及び最終アクティブチェックについて考慮されるべき要素の数も決定した。
【0045】
図8は、様々な例による述語カウンタを述語マスクに変換するベクトル処理命令におけるサイズインジケータの使用を概略的に示す。述語変換命令120は、命令のタイプを示すオペコード122と、第1の宛先述語レジスタの指示124と、第2の宛先述語レジスタの指示125と、要素サイズ指示126と、ソース述語レジスタ指示128と、を備える。述語データ値130(述語カウンタ符号化を伴う)は、ソース述語レジスタ128から取り出され、述語復号132(
図1に示される処理回路12によって実行される)の対象を形成する。結果として得られる述語マスクは、次いで、2つの宛先述語レジスタ134及び136にわたって記憶される。
【0046】
図9Aは、様々な例による、述語変換命令におけるサブ部分インジケータの使用を概略的に示す。述語変換命令150は、命令のタイプを示すオペコード151と、宛先述語レジスタの指示152と、要素サイズ指示153と、ソース述語レジスタ指示154と、サブ部分選択インジケータ155と、を備える。述語データ値160(述語カウンタ符号化を伴う)は、ソース述語レジスタ154から取り出され、述語復号161(
図1に示される処理回路12によって実行される)の対象を形成する。この結果、「拡張された」述語マスク162が得られ、これは完全に(この例では)4つのベクトル長に対応する長さを有する。サブ部分選択インジケータ155は、サブ部分のうちの選択された1つが宛先述語レジスタ164に記憶されるようにする選択回路163を制御する。
【0047】
図9Bは、命令のタイプを示すオペコード171と、宛先述語レジスタの指示172と、要素サイズ指示173と、この述語によって制御されるべきベクトルの数を示すオペランド(VL)174と、を備える、様々な例によるすべて真の述語生成命令170を概略的に示す。この命令は、述語カウンタ符号化において、アクティブな要素に相当する定義された数のベクトルを生成させる。
【0048】
図10は、様々な例による述語カウント命令の使用を概略的に示す。述語カウント命令180は、命令のタイプを示すオペコード181と、宛先汎用レジスタの指示182と、ソース述語レジスタ指示183と、要素サイズ指示184と、この述語によって制御されるベクトルの数に対応する、カウントされる要素の数の制限を示すオペランド(VL)185と、を備える。述語データ値186(述語カウンタ符号化を伴う)は、ソース述語レジスタ186から取り出され、述語復号187(
図1に示される処理回路12によって実行される)の対象を形成する。次に、要素カウント回路188(
図1に示す処理回路12の一部も形成する)は、復号された述語から要素カウントを決定し、このスカラーカウント値を汎用レジスタ189に記憶させる。このカウントは、示されたベクトルの数における要素サイズを考慮に入れる。
【0049】
命令の様々な例は、述語カウンタに関連して上で与えられている。一般に、述語化されたマルチベクトル命令は、述語カウンタを支配述語として消費する。これらの命令では、述語カウンタ符号化におけるアクティブな要素の数と要素の幅(サイズ)の両方が考慮される。これにより、述語カウンタ符号化における要素サイズよりも、動作の幅を狭く又は広くすることができる。
【0050】
図11は、使用され得るシミュレータの実装形態を概略的に示す。上記の実施形態は、当該技法をサポートする特定の処理ハードウェアを動作させる装置及び方法の点において本発明を実装しているが、コンピュータプログラムの使用によって実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限り、シミュレータと称されることがよくある。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、ホストプロセッサ200で実行してもよく、任意選択でホストオペレーティングシステム210を実行し、シミュレータプログラム220をサポートする。いくつかの配置では、ハードウェアと提供されている命令実行環境との間に複数のレイヤのシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供されている複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装形態を提供するのに必要とされてきたが、このようなアプローチは、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときなど一定の状況では、正当化され得る。例えば、シミュレータ実装形態は、ホストプロセッサハードウェアによってサポートされていない追加の機能性を有する命令実行環境を提供し得るか、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供し得る。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
【0051】
これまで、特定のハードウェア構成物又は特性を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成物又は特性によって同等の機能性を提供することができる。例えば、特定の回路構成は、シミュレーションされた実施形態で、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態で、ソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されたハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ200)上に存在する構成では、いくつかのシミュレーションされた実施形態は、適切な場合にはホストハードウェアを利用し得る。
【0052】
シミュレータプログラム220は、コンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶されてもよく、シミュレータプログラム220によってモデル化されているハードウェアアーキテクチャのインターフェースと同じであるターゲットコード230(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)にプログラムインターフェース(命令実行環境)を提供する。したがって、述語カウンタとして符号化された上述の述語の生成及び操作のための上述の命令を含むターゲットコード230のプログラム命令は、シミュレータプログラム220を使用して命令実行環境内から実行されてもよく、その結果、上述の装置10のハードウェア特性を実際には有していないホストコンピュータ200は、これらの特性をエミュレートすることができる。
【0053】
要約すると、ベクトル処理における複数のベクトルの述語に関する装置、方法、及びプログラムが開示される。要素サイズ及び要素カウントを含む述語情報の符号化が開示され、述語情報は、要素カウントによって与えられる複数の連続する同一の述語インジケータを含み、各述語インジケータは要素サイズに対応する。
【0054】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0055】
本明細書では例示的な実施形態について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない実施形態に制限されるのではなく、また、添付の特許請求の範囲に定める本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更、追加、及び修正を行うことができる。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
【国際調査報告】