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

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

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

<>
  • 特開-ベクトル要素内のビット値のテスト 図1
  • 特開-ベクトル要素内のビット値のテスト 図2
  • 特開-ベクトル要素内のビット値のテスト 図3A
  • 特開-ベクトル要素内のビット値のテスト 図3B
  • 特開-ベクトル要素内のビット値のテスト 図4A
  • 特開-ベクトル要素内のビット値のテスト 図4B
  • 特開-ベクトル要素内のビット値のテスト 図5
  • 特開-ベクトル要素内のビット値のテスト 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023085319
(43)【公開日】2023-06-20
(54)【発明の名称】ベクトル要素内のビット値のテスト
(51)【国際特許分類】
   G06F 9/308 20180101AFI20230613BHJP
   G06F 9/34 20180101ALI20230613BHJP
   G06F 9/345 20180101ALI20230613BHJP
   G06F 9/38 20180101ALI20230613BHJP
   G06F 17/16 20060101ALI20230613BHJP
【FI】
G06F9/308 B
G06F9/34 330
G06F9/345 S
G06F9/38 310G
G06F17/16 E
【審査請求】有
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023040331
(22)【出願日】2023-03-15
(62)【分割の表示】P 2019572555の分割
【原出願日】2018-06-27
(31)【優先権主張番号】17386023.0
(32)【優先日】2017-07-10
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】マグクリス、グリゴリオス
(72)【発明者】
【氏名】スティーブンス、ナイジェル ジョン
(57)【要約】      (修正有)
【課題】データ処理装置がデータ処理を実行しているとき、ベクトル要素内のビット値をテストする装置、方法及びプログラムを提供する。
【解決手段】方法は、複数の結果ビットを生成するためにソースベクトルレジスタに格納された複数の要素に対してビットテスト手順を実行するため、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答することを含む。ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む。
【効果】したがって、このビットテスト命令により、複数のビットテストを実行するために必要とされ、ベクトル化された形式に適切に定式化され、プログラムコードの性能を向上させることができる。
【選択図】図5
【特許請求の範囲】
【請求項1】
命令をデコードし、前記命令に応じた制御信号を生成する命令デコード回路と、
前記命令デコード回路によって生成された前記制御信号に応えてデータ処理動作を実行するデータ処理回路と、
を備える装置であって、
前記命令デコード回路は、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答し、前記データ処理回路が複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対してビットテスト手順を実行させようにし、
ここで、前記ビットテスト手順は、前記複数の要素の各処理済み要素について、前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを含む、
装置。
【請求項2】
前記ビットテスト手順を受ける前記複数の要素は、前記ソースベクトルレジスタの全ての要素を含む、請求項1に記載の装置。
【請求項3】
前記ビットテスト手順では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、前記複数の要素のうちの1つの要素は前記処理済み要素として前記ビットテスト手順を受ける、請求項1または2に記載の装置。
【請求項4】
前記支配述語ビット値のセット内のいくつかの値は、前記ソースベクトルレジスタ内のいくつかの要素と一致する、請求項3に記載の装置。
【請求項5】
前記ビットテスト命令は、前記支配述語ビット値のセットを指定する、請求項3または4に記載の装置。
【請求項6】
前記ビットテスト命令は、前記支配述語ビット値のセットを保持するレジスタを指定する、請求項5に記載の装置。
【請求項7】
前記ビットテスト手順では、前記支配述語ビット値のセットの前記それぞれの述語ビットが前記第1所定値を有していないとき、前記複数の結果ビットの前記それぞれの結果ビットが第2所定値に設定される、請求項3から6のいずれか一項に記載の装置。
【請求項8】
前記データ処理回路は、前記複数の結果ビットを結果レジスタ内に格納するように配置されている、請求項1から7のいずれか一項に記載の装置。
【請求項9】
前記結果レジスタは、前記ビットテスト命令で指定される、請求項8に記載の装置。
【請求項10】
前記複数の結果ビットのカウントは、前記ソースベクトルレジスタ内に格納された前記複数の要素のカウントと一致する、請求項1から9のいずれか一項に記載の装置。
【請求項11】
前記ビットテスト手順において、前記複数の結果ビットの前記それぞれの結果ビットは、前記テストビットの前記値と一致するように設定されている、請求項1から10のいずれか一項に記載の装置。
【請求項12】
前記ビットテスト手順において、前記複数の結果ビットの前記それぞれの結果ビットは、前記テストビットの前記値と一致しないように設定されている、請求項1から10のいずれか一項に記載の装置。
【請求項13】
前記命令デコード回路はさらなるビットテスト命令に応答し、これによって前記データ処理回路は、さらなるビットテスト手順を実行し、ここで、当該さらなるビットテスト手順は、さらなるテストビットの値と一致しないようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、請求項11に記載の装置。
【請求項14】
前記命令デコード回路はさらなるビットテスト命令に応答し、これによって前記データ処理回路は、さらなるビットテスト手順を実行し、ここで、当該さらなるビットテスト手順は、さらなるテストビットの値と一致するようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、請求項12に記載の装置。
【請求項15】
前記インデックスは、前記ビットテスト命令の即値である、請求項1から14のいずれか一項に記載の装置。
【請求項16】
前記インデックスは、前記ビットテスト命令で指定されたスカラーインデックスレジスタに格納されたスカラー値である、請求項1から14のいずれか一項に記載の装置。
【請求項17】
前記ビットテスト命令は、複数のインデックス値を保持するベクトルインデックスレジスタを指定し、前記ビットテスト手順において、前記複数の要素の各処理済み要素について、前記インデックスが前記複数のインデックス値のそれぞれのインデックス値によって与えられる、請求項1から14のいずれか一項に記載の装置。
【請求項18】
データ処理装置を動作させる方法であって、
命令をデコードし、前記命令に応じた制御信号を生成するステップと、
生成された前記制御信号に応えてデータ処理動作を実行するステップと、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するために前記ソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせるステップと、
を備え、
前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを備える、
方法。
【請求項19】
命令をデコードし、前記命令に応じた制御信号を生成する手段と、
生成された前記制御信号に応えてデータ処理動作を実行する手段と、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するために前記ソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせる手段と、
を備える装置であって、
前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを備える、
装置。
【請求項20】
命令をデコードし、前記命令に応じた制御信号を生成するための命令デコードプログラムロジックと、
前記命令デコードプログラムロジックによって生成された前記制御信号に応えてデータ処理動作を実行するためのデータ処理プログラムロジックと、
を備える命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、
前記命令デコードプログラムロジックは、前記データ処理プログラムロジックに、
複数の結果ビットを生成するためにソースベクトルデータ構造内に格納された複数の要素に対してビットテスト手順を実行させるため、前記ソースベクトルデータ構造およびインデックスを指定するビットテスト命令に応答し、前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルデータ構造の前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを含む、
コンピュータプログラム。
【請求項21】
請求項20に記載のコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理装置に関する。より具体的には、データ処理装置によって処理されたベクトル要素内のビット値のテストに関する。
【背景技術】
【0002】
データ処理装置がデータ処理を実行しているとき、入力値の指定されたビットが設定されているか否かをデータ処理装置がテストすることは有用であり得る。このように、たとえば特定の機能をオンまたはオフに切り替えるように、特定のデータ処理挙動を修正するように、処理のために特定の指定された入力データを包含または除外するようになど、データ処理装置の動作を制御するために、入力値の当該ビットはプログラマによって使用され得る。
【発明の概要】
【0003】
例示的な一実施形態では、命令をデコードし、命令に応じた制御信号を生成する命令デコード回路と、命令デコード回路によって生成された制御信号に応えてデータ処理動作を実行するデータ処理回路とを備える装置であって、命令デコード回路は、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対してデータ処理回路にビットテスト手順を実行させるため、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答し、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む、装置がある。
【0004】
別の例示的実施形態では、データ処理装置を動作させる方法であって、命令をデコードし、命令に応じた制御信号を生成するステップと、生成された制御信号に応えてデータ処理動作を実行するステップと、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせるステップと、を備え、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを備える、方法がある。
【0005】
別の例示的実施形態では、命令をデコードし、命令に応じた制御信号を生成する手段と、生成された制御信号に応えてデータ処理動作を実行する手段と、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせる手段と、を備える装置であって、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを備える、装置がある。
【0006】
別の例示的実施形態では、命令をデコードし、命令に応じた制御信号を生成するための命令デコードプログラムロジックと、命令デコードプログラムロジックによって生成された制御信号に応えてデータ処理動作を実行するためのデータ処理プログラムロジックと、を備える命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、命令デコードプログラムロジックは、データ処理プログラムロジックに、複数の結果ビットを生成するためにソースベクトルデータ構造内に格納された複数の要素に対してビットテスト手順を実行させるため、ソースベクトルデータ構造およびインデックスを指定するビットテスト命令に応答し、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルデータ構造の処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む、コンピュータプログラムがある。
【0007】
本技術は、以下の添付図面に示されるようなその実施形態を参照して、単なる例示によって、さらに説明される。
【図面の簡単な説明】
【0008】
図1】一実施形態のデータ処理装置を概略的に示す図である。
図2】一実施形態のソースベクトルの要素に対してビットテスト手順を実行するデータ処理回路を概略的に示す図である。
図3A】一実施形態の支配述語値を参照してソースベクトルの要素に対してビットテスト手順を実行するデータ処理回路を概略的に示す図である。
図3B図3Aに示される実施形態に対応する2つの例示的なビットテスト命令を示す図である。
図4A】一実施形態のスカラーインデックス値を参照してビットテスト手順を実行するための例示的なビットテスト命令および対応するデータ処理回路を示す図である。
図4B】一実施形態のインデックスベクトルによって与えられた各要素について特定のインデックス値を参照してソースベクトルの要素に対してビットテスト手順を実行するための、例示的なビットテスト命令および対応するデータ処理回路を示す図である。
図5】一実施形態の方法を実行するときに取られる一連のステップを示す図である。
図6】一実施形態のシミュレータ実装を提供するシステムのコンポーネントを概略的に示す図である。
【発明を実施するための形態】
【0009】
少なくともいくつかの実施形態は、命令をデコードし、命令に応じた制御信号を生成する命令デコード回路と、命令デコード回路によって生成された制御信号に応えてデータ処理動作を実行するデータ処理回路とを備える装置であって、命令デコード回路は、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対してデータ処理回路にビットテスト手順を実行させるため、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答し、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む、装置を提供する。
【0010】
したがって、ビットテスト命令、およびこれを実行するための対応するサポート回路は、テストすべきそれぞれのビットがソースベクトルのそれぞれの要素内で見つかるアプローチによって、複数のビットに対して平行してビットテストを実行する能力をプログラマに提供する。これを保持するベクトルレジスタを参照して指定されたソースベクトルは、こうしてビットテスト手順への1つの入力を形成し、ビットテスト命令で指定されたインデックスにより、プログラマは、ソースベクトル内の要素のどのビットがビットテストを受けるかを定義することができる。ビットテスト命令に応えて実行されるビットテスト手順の結果は、結果ビットのセットであり(1つの結果ビットは、ビットテスト手順を受けるソースベクトルの複数の要素の各処理済み要素に対応する)、複数の結果ビットの各結果ビットは、対応するテストビットの値に応じて設定される。したがって、ビットテストの文脈では、結果ビットはテストビットと一致するように設定されることが可能であり、または反対に、結果ビットはテストビットの補数(逆数)になるように設定されることが可能であることが理解され、これは本質的に実装の選択である。したがって、このビットテスト命令の提供により、複数のビットテストを実行するために必要とされ、ベクトル化された形式に適切に定式化され得る、任意のプログラムコードの性能を向上させることができる。基本的に、線形アプローチの代わりに並列化アプローチが提供される。
【0011】
データ処理回路の能力および構成によっては、ソースベクトルレジスタの要素の全てがビットテスト手順を受けなくてもよい。言い換えると、ソースベクトルレジスタの要素の厳密なサブセットのみがビットテスト手順を受けてもよい。しかしながら、いくつかの実施形態では、ビットテスト手順を受ける複数の要素は、ソースベクトルレジスタの全ての要素を含む。
【0012】
プログラマには、ソースベクトルレジスタのどの要素がビットテスト手順を受けるかを指定する能力が提供されてもよい。したがって、ビットテスト手順のいくつかの実施形態では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、複数の要素のうちの1つの要素は処理済み要素としてビットテスト手順を受ける。言い換えると、プログラマは、ソースベクトルの対応する要素に対してビットテスト手順を実行させるために、対応する述語ビットを第1所定値(たとえば1)に設定する。
【0013】
データ処理回路の構成および能力に応じて、支配述語ビット値のセットは、たとえばソースベクトルレジスタの要素の厳密なサブセットにのみ対応する、ソースベクトルレジスタ内の要素の数に関連して長さが異なる可能性があるが、いくつかの実施形態では、支配述語ビット値のセット内のいくつかの値は、ソースベクトルレジスタ内のいくつかの要素と一致する。
【0014】
支配述語ビット値のセットは様々な方法で提供され得るが、いくつかの実施形態では、ビットテスト命令は支配述語ビット値のセットを指定し、さらにいくつかの実施形態では、ビットテスト命令は支配述語ビット値のセットを保持するレジスタを指定する。したがって、たとえば指定されたレジスタに支配述語ビット値を設定することによって、プログラマは、ソースベクトルの要素のうちのどれがビットテスト手順を受けるかを決定できる。
【0015】
ビットテスト手順は、このような支配述語ビット値のセットが提供されるときに様々に構成され得るが、ビットテスト手順のいくつかの実施形態では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有していないとき、複数の結果ビットのそれぞれの結果ビットが第2所定値に設定される。第1所定値および第2所定値の選択が任意の実装選択であることは明確に理解されるが、いくつかの実施形態では、支配述語ビット値が0であるとき、対応するそれぞれの結果ビットもまた0に設定される。したがって、反対に述語ビットが1に設定されるとき、ソースベクトルレジスタの対応する要素はビットテスト手順の一部として処理され、インデックスによって示されるビット位置における処理済み要素のテストビットは、対応する結果ビットを決定する。
【0016】
データ処理回路は、様々な方法で複数の結果ビットを利用し得るが、いくつかの実施形態では、データ処理回路は、複数の結果ビットを結果レジスタに格納するように配置される。この結果レジスタは、デフォルトで既知であってもよく、またはいくつかの実施形態では、結果レジスタはビットテスト命令において指定される。したがって、プログラマには、複数の結果ビットが格納されるべきレジスタを指定する能力が与えられる。
【0017】
一般に、複数の結果ビットの数は、ソースベクトルの複数の要素に関連して、たとえばデータ処理回路の能力および構成に応じて異なってもよく、複数の結果ビットの数はソースベクトルレジスタ内の要素の数よりも少なくてもよいが、いくつかの実施形態では、複数の結果ビットのカウントは、ソースベクトルレジスタに格納された複数の要素のカウントと一致する。
【0018】
複数の結果ビットのそれぞれの結果ビットは、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置におけるテストビットの値に応じて設定され、装置がこの設定を補完的に行うために設定され得ることは、理解されるだろう。言い換えると、ビットテスト手順のいくつかの実施形態では、複数の結果ビットのそれぞれの結果ビットは、テストビットの値と一致するように設定される。反対に、ビットテスト手順の別の実施形態では、複数の結果ビットのそれぞれの結果ビットは、テストビットの値と一致しないように設定される。実際、これら2つの変形は2つの異なるビットテスト命令として提供され得、これらは本明細書において、TSTZ(「テストゼロ(test zero)」)およびTSTNZ(「テスト非ゼロ(test non-zero)」)と呼ばれる。
【0019】
また、両方のタイプのビットテスト命令に応答し得る本技術による装置が提供されてもよく、こうしてプログラマに、ゼロ設定ビットでテストするか非ゼロ設定ビットでテストするかの選択肢を与え、したがっていくつかの実施形態では、命令デコード回路はさらなるビットテスト命令に応答し、これによってデータ処理回路は、さらなるテストビットの値と一致しないようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、さらなるビットテスト手順を実行することができる。言い換えると、プログラマは、結果ビットがテストビットの値と一致するように設定されるビットテスト命令を使用し、その後、結果ビットがテストビットと一致するように設定されないさらなるビットテスト命令を使用することができる。
【0020】
反対に、いくつかの実施形態では、命令デコード回路はさらなるビットテスト命令に応答し、これによってデータ処理回路は、さらなるテストビットの値と一致するようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、さらなるビットテスト手順を実行する。したがって、プログラマは、結果ビットをテストビットの値と一致しないように設定させるビットテスト命令を使用し、その後、結果ビットをテストビットと一致させるさらなるビットテスト命令を使用することができる。本明細書で論じられる特定の実施形態の言語では、プログラマは、TSTZ命令およびTSTNZ命令の両方を、どのような定義でも、どちらの順序でも、使用することができる。
【0021】
インデックスは、様々に定義され得るが、いくつかの実施形態では、インデックスは、ビットテスト命令で指定された即値である。あるいは、ビットテスト命令はスカラーインデックスレジスタを指定してもよく、このような実施形態では、インデックスは、ビットテスト命令で指定されたスカラーインデックスレジスタに格納されたスカラー値である。さらに別の実施形態では、ビットテスト命令は、複数のインデックス値を保持するベクトルインデックスレジスタを指定してもよく、ビットテスト手順において、複数の要素の各処理済み要素では、インデックスは、複数のインデックス値のそれぞれのインデックス値によって与えられる。これは、スカラーの例とは異なり、プログラマが、ソースベクトルの複数の要素の各処理済み要素について異なるインデックス値を使用し、こうして所与の要素のいずれのビットもビットテストできることを意味する。
【0022】
少なくともいくつかの実施形態は、命令をデコードして命令に応じた制御信号を生成し、生成された制御信号に応えてデータ処理動作を実行し、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせる方法であって、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを備える、方法を提供する。
【0023】
少なくともいくつかの実施形態は、命令をデコードし、命令に応じた制御信号を生成する手段と、生成された制御信号に応えてデータ処理動作を実行する手段と、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせる手段と、を備える装置であって、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを備える、装置を提供する。
【0024】
別の例示的実施形態では、命令をデコードし、命令に応じた制御信号を生成するための命令デコードプログラムロジックと、命令デコードプログラムロジックによって生成された制御信号に応えてデータ処理動作を実行するためのデータ処理プログラムロジックと、を備える命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、命令デコードプログラムロジックは、データ処理プログラムロジックに、複数の結果ビットを生成するためにソースベクトルデータ構造内に格納された複数の要素に対してビットテスト手順を実行させるため、ソースベクトルデータ構造およびインデックスを指定するビットテスト命令に応答し、ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルデータ構造の処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む、コンピュータプログラムがある。
【0025】
少なくともいくつかの実施形態は、上述の実施形態によるコンピュータプログラムを格納するコンピュータ可読記憶媒体を提供する。プログラムは、非一時的に格納されてもよい。
【0026】
ここで、いくつかの具体的な実施形態が、図面を参照して説明される。
【0027】
図1は、一実施形態のデータ処理装置を概略的に示す。データ処理装置10の一般的な構成は、当業者によく知られており、本技術に特に関連しないコンポーネントの詳細な説明は、簡潔にするために本明細書では省略される。概略的に、図1に示されるように、データ処理装置10は、関連するシステムレジスタ14、汎用レジスタ16、およびベクトルレジスタ18を有する実行回路12を備える。実行回路12は、そのデータ処理動作を実行する際に、これらのレジスタを利用する。実行回路12が実行するデータ処理動作は、フェッチ回路22の動作によってメモリ20から取得された一連の命令によって定義される。メモリ20から命令を取得する際に、命令は、レベル1命令キャッシュ24および統合レベル2キャッシュ26の一方または両方に一時的にキャッシュされてもよい。このようにしてフェッチ回路22によってフェッチされた命令は、取得された命令およびこれらが担持する特定の命令パラメータに基づいて実行回路12の制御信号を生成する、デコード回路28に渡される。実行回路12は、上述のように、レジスタ14、16、および18に関して、また必要に応じて、メモリ20からデータ項目を取得し、処理したデータ項目をメモリ20に書き戻すことによって、データ処理動作を実行する。命令の場合のように、実行回路12によってメモリ20内でアクセスされたデータ項目は、キャッシュ階層、すなわちレベル1データキャッシュ30および統合レベル2キャッシュ26によって、同様にアクセスされる。実行回路12のさらなる詳細は、以下の図面を参照して、様々な実施形態に関連してここで与えられる。
【0028】
図2は、ビットテスト命令によって開始されるビットテスト手順を実行するために提供された一実施形態における実行回路12の一部の構成を概略的に示す。ビットテスト命令は、2つの変形、すなわちTSTZおよびTSTNZで、図2の上部に示される。図示されるように、これらの命令は、ソースベクトル(レジスタ)およびインデックス値を指定する。この例では、インデックス値は即値である。図示される例では2の即値を有するインデックス値により、データ処理回路は、ソースベクトルの各要素内のビット位置2におけるそれぞれのビットにアクセスできる。したがって、ソースベクトルが、各々8ビットを含む4つの要素を備える図示の例では、これによってデータ処理回路は、(ビット位置2において)各要素の3つ目のビットにアクセスできる。これらのビットは、コンパレータ40、42、44、および46に渡される。これらのコンパレータの各々は、ビットテスト命令がTSTZかTSTNZかを示すバイナリ入力である、第2の入力を有する。このバイナリ入力は、TSTZ命令では、コンパレータが、ソースベクトルの対応する要素内のインデックスされたビット位置におけるテストビットの補数を生成し、その一方で命令がTSTNZであるときにはそれぞれのコンパレータにより、結果ビットがソースベクトルの対応する要素内のインデックスされたビット位置におけるテストビットと一致するように、各コンパレータによって実行されるビットテストを反転させる。図2に示される例示的な値はTSTZ命令を受け、したがってコンパレータは、結果ビットのセットを作成するために、ソースベクトルからの4つのテストビットのセットを反転させる。
【0029】
図3Aは、ここではビットテスト手順が支配述語ビット値のセットの内容にさらにしたがって実行される、さらなる例示的実施形態におけるデータ処理回路の関連コンポーネントを概略的に示す。TSTZおよびTSTNZとも呼ばれる、ビットテスト命令の対応する対が、図3Bに示される。図3Aの項目60として示される、支配述語ビット値のセットのそれぞれのビットは、ソースベクトルの特定の要素がビットテスト手順のビットテストを受けるか否かを決定する。図示される例では、支配述語ビット値のセットの対応するビットが1に設定されるソースベクトルの要素のみが、このビットテストを受ける。これを実施するために、ビットテスト制御回路62は、支配述語ビット値60のセットを受け取り、ビットテストコンパレータ64、66、68、および70の動作を制御するオーバーライド信号のセットを生成する。図2の例のように、これらのコンパレータは、ソースベクトルの各要素からのインデックス値によって識別された対応するテスト対象ビットを受け取り、バイナリTSTZ/TSTNZ入力によっても制御される。結果ビット72のセットは、こうしてコンパレータによって生成される。したがって、支配述語60の2つの最下位ビットのみが設定される図3Aの例では、結果ビットのセットの2つの最上位ビットが自動的に0に設定され、その一方で、結果ビット72のセットの2つの最下位ビットは、これらがテストとしたそれぞれのビットに応じて、コンパレータ68および70によって設定される。これは、図3Aの例で実行されているTSTZ命令であり、したがってテストビットは、結果ビット72のセットの2つの最下位ビットを「0」および「1」として生成するために反転される。図3Bに示される例に見られるように、この例のTSTZおよびTSTNZ命令は、図2の例としてソースベクトルレジスタおよびインデックス即値として指定するが、ここでは支配述語レジスタおよび宛先レジスタをさらに指定する。したがって、支配述語ビット値60のセットは指定された支配述語レジスタから取得され、一方で結果ビット72のセットは指定された宛先レジスタに書き込まれる。図3Bの命令は図2の例に関して宛先レジスタおよび支配述語レジスタの両方を追加で指定するという事実に意味はなく、別の例示的実施形態では、ビットテスト命令は、ソースレジスタおよびインデックスに加えてこれらのうちの1つのみを指定してもよいことは、理解されるだろう。
【0030】
図4Aは、TSTZ命令が、宛先レジスタ、支配述語レジスタ、ソースベクトルレジスタ、インデックス(スカラー)レジスタを指定する例を示す。したがって、対応するビットテスト手順を実行するデータ処理回路は、指定されたレジスタPgから支配述語ビット値80のセットを、指定されたインデックスレジスタからインデックス値82を、取得する(この例では、インデックス値は7)。したがって、ソースベクトルZsのそれぞれの要素において、支配述語80の対応するビットが設定されると、各(i=7)の8番目のビットがアクセスされてテストされる。説明を簡単にするために、簡略化された構成が図4Aに示されており、ソースベクトルZsのテストビットから宛先述語84のそれぞれの結果ビットまで矢印が直接延びている。実際には、これらの矢印は、図3Aの例に示されるもののようなコンパレータのセットを介して実施され、これらは支配述語80のそれぞれのセットによって、ならびに命令がTSTZかTSTNZかを示すバイナリ値によっても制御される。命令がTSTZである図4Aの例では、テストビットは、宛先述語84の対応するビットを提供するために反転される(これは表記によって図4Aに示されている:ソースビット(0/1)は結果ビット(1/0)へ)。
【0031】
図4Bを見ると、やはり宛先結果レジスタ、支配述語レジスタ、およびソースベクトルレジスタを指定し、この例ではインデックスベクトルレジスタも指定する、TSTNZ命令の例が示されている。したがって、支配述語86は、ビットテスト手順を受けるべきソースベクトルZsの要素を再び選択する一方で、各テスト済み要素のうちどのビットがテストされるかは、インデックスベクトル88の対応する要素において与えられたインデックスによって個別に指定される。このように、図4Bで与えられる例では、ビット位置4は要素0でテストされ、ビット位置2は要素2でテストされ、ビット位置7は要素4でテストされ、ビット位置0は要素6でテストされることがわかる。支配述語86の対応するビットは0に設定され、したがって述語90の宛先の対応するビットも0に設定されるので、要素1、3、5、および7ではビットはテストされない。
【0032】
図4Bに示される例はTSTNZ命令の例であり、したがってソースベクトルのテストビットは宛先述語90の対応するビット内に効率的に複製される(これは表記によって図4Bに示されている:ソースビット(0/1)は結果ビット(0/1)へ)。図4Aの場合のように、図4Bの説明は、説明を簡単にするために、ソースベクトルZsのそれぞれの要素のテストビットから宛先述語90の対応するビット位置まで単に矢印が延びている、簡略化された形態で示されている。以前のように、実際には、これらは、テスト対象入力ビットを受け取り、命令がTSTZかTSTNZかを示すバイナリ入力によって制御される、コンパレータのセットを介して実施される。
【0033】
さらなる変形例は、上記で説明された例示的実施形態のいずれにも適用可能であり、すなわちビットテスト命令が、そのレジスタの内容のサイズ解釈を示すサイズ指定子を用いてその指定されたレジスタのいずれかをさらに修整し得るものである。これは、たとえばTSTZ<Pd>.<T>,<Pg>.<T>,<Zs>.<T>,インデックスなどのように記述され得る。このサイズ指定子は、たとえば00=バイト長(B);01=半語長(H);10=1倍長(S);および11=2倍長(D)などの命令において、コンパクトに符号化され得る。
【0034】
サイズ指定子<T>の使用により、プログラマは、要素のそれぞれのベクトルの各要素においてデータ値のサイズを指定することができる。したがって、このサイズ指定子がない場合、または実際にサイズ指定子がデフォルトと一致する値を有する場合には、たとえば「S」、1倍長など、レジスタの要素のデフォルト解釈が使用され得る。しかしながら、<T>の値が命令で指定された場合には、各ベクトル要素の指定されたサイズが使用される。サイズ指定子自体がレジスタによって与えられ、必要なサイズ値を抽出するためにデータ処理回路がその指定されたサイズ指定レジスタにアクセスする、この機能に関するさらなる変形例もまた、上記の例示的実施形態のいずれでも可能である。
【0035】
図5は、一実施形態の方法にしたがって実行される一連のステップを示す。フローはステップ100で開始されると見なされ、命令デコード回路が、装置に提供された一連の命令における次の命令をデコードする。この図を簡単にするために、デコードすべき次の命令が常にあると想定される。ステップ102において、これがビットテスト命令であるか否かが判断され、そうでない場合には、この命令は、この命令にとって通常の方法でステップ104において単に実行され、フローはステップ100に戻る(ここでは新規なビットテスト命令のみが対象となるため)。ビットテスト命令では、フローはステップ102からステップ104に進み、そこで支配述語のいずれかのビットが0に設定されているか否かが判断される。これは、結果述語の対応する1つまたは複数のビットもまた0に設定されるステップ106を介してフローが進む場合である。次にステップ108において、ビットテスト命令がベクトル(定義された即値またはスカラーレジスタの対語として)インデックスを指定したか否かが判断される。そうである場合には、ベクトルインデックスの対応する要素から取得された、ソースベクトルの各処理済み要素に一意のインデックスが使用される、ステップ110を介してフローが進む。そうでなければ、ステップ112において、インデックスのスカラー値(スカラーレジスタ内で、または命令内の即値として提供される)は、ソースベクトルの全ての処理済み要素に使用される。次にステップ114において、これがTSTZ命令かTSTNZ命令かが判断される。TSTNZ命令では、フローはステップ116に進み、そこでソースベクトルの各処理済み要素のインデックスビットが、結果述語のそれぞれのビットに複製される。あるいは、これがTSTZ命令である場合、フローは、ソースベクトルの各処理済み要素の反転インデックスビットが結果述語のそれぞれのビットに複製される、ステップ118を介して進む。その後、このビットテスト命令の実行が完了し、フローはステップ100に戻る。
【0036】
図6は、使用され得るシミュレータ実装を示す。先に説明された実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させる装置および方法に関して本発明を実施したが、コンピュータプログラムの使用を通じて実施される本明細書に記載の実施形態による命令実行環境を提供することも、可能である。このようなコンピュータプログラムは、ハードウェアアーキテクチャのソフトウェアベースの実装を提供する限りにおいて、しばしばシミュレータと呼ばれる。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、および動的バイナリトランスレータを含むバイナリトランスレータを含む。通常、シミュレータ実装はホストプロセッサ730上で実行されてもよく、任意選択的に、ホストオペレーティングシステム720を実行し、シミュレータプログラム710をサポートする。いくつかの配置では、ハードウェアと提供された命令実行環境との間、および/または同じホストプロセッサ上に提供された複数の異なる命令実行環境の間に、複数のシミュレーションの層があってもよい。歴史的には、合理的な速度で実行するシミュレータ実装を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換性または再利用の理由で別のプロセッサにネイティブなコードを実行したいときなど、特定の状況において正当化され得る。たとえば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされない追加機能を有する命令実行環境を提供してもよく、または通常は異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、“Some Efficient Architecture Simulation Techniques”,Robert Bedichek,Winter 1990 USENIX Conference、53~63ページに記載されている。
【0037】
特定のハードウェア構造または機能を参照して実施形態が以前に説明された限りにおいて、シミュレートされた実施形態では、適切なソフトウェア構造または機能によって同等の機能が提供され得る。たとえば、特定の回路が、コンピュータプログラムロジックとしてシミュレートされた実施形態で実装されてもよい。同様に、レジスタまたはキャッシュなどのメモリハードウェアが、ソフトウェアデータ構造としてシミュレートされた実施形態に実装されてもよい。先に記載された実施形態で言及されたハードウェア要素の1つ以上がホストハードウェア(たとえば、ホストプロセッサ730)上に存在する配置では、適切であれば、いくつかのシミュレートされた実施形態は、ホストハードウェアを利用してもよい。
【0038】
シミュレータプログラム710は、コンピュータ可読記憶媒体(非一時的媒体であってもよい)上に格納されてもよく、シミュレータプログラム710によってモデリングされているハードウェアアーキテクチャのアプリケーションプログラムインターフェースと同じであるターゲットコード700にプログラムインターフェース(命令実行環境)を提供する。したがって、上記のビットテスト命令を含む、ターゲットコード700のプログラム命令は、上記で論じられた装置のハードウェア機能を実際には有していないホストコンピュータ730がこれらの機能をエミュレートできるように、シミュレータプログラム710を使用して、命令実行環境内から実行され得る。
【0039】
簡単な全体的要約では、装置および装置を動作させる方法が提供される。装置は、複数の結果ビットを生成するためにソースベクトルレジスタに格納された複数の要素に対してビットテスト手順を実行するため、ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答する。ビットテスト手順は、複数の要素の各処理済み要素について、インデックスによって示されるソースベクトルレジスタの処理済み要素内のビット位置のテストビットの値に応じて複数の結果ビットのそれぞれの結果ビットを設定することを含む。したがって、このビットテスト命令により、複数のビットテストを実行するために必要とされ、ベクトル化された形式に適切に定式化され得る、プログラムコードの性能を向上させることができる。
【0040】
本出願において、「~するように構成された」という用語は、装置の要素が定義された動作を実行できる構成を有することを意味するために使用される。この文脈で、「構成」は、ハードウェアまたはソフトウェアの配置、または相互接続の方法を意味する。たとえば、装置は、所定の動作を提供する専用ハードウェアを有してもよく、あるいはプロセッサまたは他の処理装置が機能を実行するようにプログラムされてもよい。「構成された」は、所定の動作を提供するために装置要素が多少なりとも変更されなければならないことを示唆するものではない。
【0041】
以上、添付図面を参照して例示的な実施形態を本明細書で詳細に説明したが、本発明はこれらの厳密な実施形態に限定されるものではなく、添付の特許請求によって規定される本発明の範囲および趣旨から逸脱することなく、様々な変更、追加、および修正が当業者によって実施され得ることが、理解されるべきである。たとえば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴と一緒になされ得る。
図1
図2
図3A
図3B
図4A
図4B
図5
図6
【手続補正書】
【提出日】2023-04-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
命令をデコードし、前記命令に応じた制御信号を生成する命令デコード回路と、
前記命令デコード回路によって生成された前記制御信号に応えてデータ処理動作を実行するデータ処理回路と、
を備える装置であって、
前記命令デコード回路は、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応答し、前記データ処理回路が複数の結果ビットを生成するためにソースベクトルレジスタ内に格納された複数の要素に対してビットテスト手順を実行させようにし、
ここで、前記ビットテスト手順は、前記複数の要素の各処理済み要素について、前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを含み、
前記ビットテスト手順では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、前記複数の要素のうちの1つの要素は前記処理済み要素として前記ビットテスト手順を受け、
前記ビットテスト手順では、前記支配述語ビット値のセットの前記それぞれの述語ビットが前記第1所定値を有していないとき、前記複数の結果ビットの前記それぞれの結果ビットが第2所定値に設定され、
前記命令デコード回路は、デフォルトの要素サイズとは異なる要素サイズを指定する前記ビットテスト命令に応答して、当該指定された要素サイズを使用して前記ソースベクトルレジスタの内容を解釈する、
装置。
【請求項2】
前記ビットテスト手順を受ける前記複数の要素は、前記ソースベクトルレジスタの全ての要素を含む、請求項1に記載の装置。
【請求項3】
前記支配述語ビット値のセット内のいくつかの値は、前記ソースベクトルレジスタ内のいくつかの要素と一致する、請求項1に記載の装置。
【請求項4】
前記ビットテスト命令は、前記支配述語ビット値のセットを指定する、請求項1または3に記載の装置。
【請求項5】
前記ビットテスト命令は、前記支配述語ビット値のセットを保持するレジスタを指定する、請求項4に記載の装置。
【請求項6】
前記データ処理回路は、前記複数の結果ビットを結果レジスタ内に格納するように配置されている、請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記結果レジスタは、前記ビットテスト命令で指定される、請求項6に記載の装置。
【請求項8】
前記複数の結果ビットのカウントは、前記ソースベクトルレジスタ内に格納された前記複数の要素のカウントと一致する、請求項1から7のいずれか一項に記載の装置。
【請求項9】
前記ビットテスト手順において、前記複数の結果ビットの前記それぞれの結果ビットは、前記テストビットの前記値と一致するように設定されている、請求項1から8のいずれか一項に記載の装置。
【請求項10】
前記ビットテスト手順において、前記複数の結果ビットの前記それぞれの結果ビットは、前記テストビットの前記値と一致しないように設定されている、請求項1から8のいずれか一項に記載の装置。
【請求項11】
前記命令デコード回路はさらなるビットテスト命令に応答し、これによって前記データ処理回路は、さらなるビットテスト手順を実行し、ここで、当該さらなるビットテスト手順は、さらなるテストビットの値と一致しないようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、請求項9に記載の装置。
【請求項12】
前記命令デコード回路はさらなるビットテスト命令に応答し、これによって前記データ処理回路は、さらなるビットテスト手順を実行し、ここで、当該さらなるビットテスト手順は、さらなるテストビットの値と一致するようにさらなる複数の結果ビットのさらなるそれぞれの結果ビットを設定することを含む、請求項10に記載の装置。
【請求項13】
前記インデックスは、前記ビットテスト命令の即値である、請求項1から12のいずれか一項に記載の装置。
【請求項14】
前記インデックスは、前記ビットテスト命令で指定されたスカラーインデックスレジスタに格納されたスカラー値である、請求項1から12のいずれか一項に記載の装置。
【請求項15】
前記ビットテスト命令は、複数のインデックス値を保持するベクトルインデックスレジスタを指定し、前記ビットテスト手順において、前記複数の要素の各処理済み要素について、前記インデックスが前記複数のインデックス値のそれぞれのインデックス値によって与えられる、請求項1から12のいずれか一項に記載の装置。
【請求項16】
データ処理装置を動作させる方法であって、
命令をデコードし、前記命令に応じた制御信号を生成するステップと、
生成された前記制御信号に応えてデータ処理動作を実行するステップと、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するために前記ソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせるステップと、
を備え、
前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを備え、
前記ビットテスト手順では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、前記複数の要素のうちの1つの要素は前記処理済み要素として前記ビットテスト手順を受け、
前記ビットテスト手順では、前記支配述語ビット値のセットの前記それぞれの述語ビットが前記第1所定値を有していないとき、前記複数の結果ビットの前記それぞれの結果ビットが第2所定値に設定され、
前記デコードは、デフォルトの要素サイズとは異なる要素サイズを指定する前記ビットテスト命令に応答して、当該指定された要素サイズを使用して前記ソースベクトルレジスタの内容を解釈することを含む、
方法。
【請求項17】
命令をデコードし、前記命令に応じた制御信号を生成する手段と、
生成された前記制御信号に応えてデータ処理動作を実行する手段と、
ソースベクトルレジスタおよびインデックスを指定するビットテスト命令に応えて、複数の結果ビットを生成するために前記ソースベクトルレジスタ内に格納された複数の要素に対するビットテスト手順の実行を行わせる手段と、
を備える装置であって、
前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルレジスタの前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを備え、
前記ビットテスト手順では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、前記複数の要素のうちの1つの要素は前記処理済み要素として前記ビットテスト手順を受け、
前記ビットテスト手順では、前記支配述語ビット値のセットの前記それぞれの述語ビットが前記第1所定値を有していないとき、前記複数の結果ビットの前記それぞれの結果ビットが第2所定値に設定され、
命令をデコードする前記手段は、デフォルトの要素サイズとは異なる要素サイズを指定する前記ビットテスト命令に応答して、当該指定された要素サイズを使用して前記ソースベクトルレジスタの内容を解釈する、
装置。
【請求項18】
命令をデコードし、前記命令に応じた制御信号を生成するための命令デコードプログラムロジックと、
前記命令デコードプログラムロジックによって生成された前記制御信号に応えてデータ処理動作を実行するためのデータ処理プログラムロジックと、
を備える命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、
前記命令デコードプログラムロジックは、前記データ処理プログラムロジックに、
複数の結果ビットを生成するためにソースベクトルデータ構造内に格納された複数の要素に対してビットテスト手順を実行させるため、前記ソースベクトルデータ構造およびインデックスを指定するビットテスト命令に応答し、前記ビットテスト手順は、前記複数の要素の各処理済み要素について、
前記インデックスによって示される前記ソースベクトルデータ構造の前記処理済み要素内のビット位置のテストビットの値に応じて前記複数の結果ビットのそれぞれの結果ビットを設定することを含み、
前記ビットテスト手順では、支配述語ビット値のセットのそれぞれの述語ビットが第1所定値を有するとき、前記複数の要素のうちの1つの要素は前記処理済み要素として前記ビットテスト手順を受け、
前記ビットテスト手順では、前記支配述語ビット値のセットの前記それぞれの述語ビットが前記第1所定値を有していないとき、前記複数の結果ビットの前記それぞれの結果ビットが第2所定値に設定され、
前記命令デコードプログラムロジックは、デフォルトの要素サイズとは異なる要素サイズを指定する前記ビットテスト命令に応答して、当該指定された要素サイズを使用して前記ソースベクトルレジスタの内容を解釈する、
コンピュータプログラム。
【請求項19】
請求項18に記載のコンピュータプログラムを非一時的に格納するコンピュータ可読記憶媒体。
【外国語明細書】