(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-31
(54)【発明の名称】ベクトル述語要約の生成
(51)【国際特許分類】
G06F 9/308 20060101AFI20220124BHJP
【FI】
G06F9/308 B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021510454
(86)(22)【出願日】2019-10-17
(85)【翻訳文提出日】2021-02-25
(86)【国際出願番号】 GB2019052969
(87)【国際公開番号】W WO2020128414
(87)【国際公開日】2020-06-25
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】グラント、アラスデア
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033AA12
5B033BD01
5B033DD00
(57)【要約】
装置及びそのような装置を動作させる方法が開示されている。ベクトル処理回路は、複数の並列処理レーンでデータ処理を実行し、データ処理は、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される。述語監視回路は、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成する。述語要約値の第1の値は、ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットをベクトル述語のビット値が含むとき、スパース条件は真である。述語要約値の第2の値は、ベクトル述語についてスパース条件が真ではないことを示す。したがって、改善された述語制御されたベクトル処理がサポートされる。
【特許請求の範囲】
【請求項1】
複数の並列処理レーンでデータ処理を実行するためのベクトル処理回路であって、前記データ処理が、設定されたベクトル述語のビット値によって決定される前記複数の並列処理レーンのサブセットで実行される、ベクトル処理回路と、
前記ベクトル述語に応答して前記ベクトル述語の前記ビット値に応じて述語要約値を生成するための述語監視回路と
を備え、
前記述語要約値の第1の値が、前記ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットを前記ベクトル述語の前記ビット値が含むとき、前記スパース条件は真であり、
前記述語要約値の第2の値が、前記ベクトル述語について前記スパース条件が真ではないことを示す、装置。
【請求項2】
前記述語要約値の前記第1の値が、前記ベクトル述語の前記ビット値の厳密なサブセットが設定されていることを示し、設定ビットの前記厳密なサブセットが、前記ベクトル述語の最下位ビットを含む連続シーケンスではない、請求項1に記載の装置。
【請求項3】
前記述語要約値の前記第2の値が、前記ベクトル述語の前記ビット値の厳密なサブセットが連続シーケンスで設定されていることを示す、請求項1又は請求項2に記載の装置。
【請求項4】
前記連続シーケンスが前記ベクトル述語の最下位ビットを含むとき、前記述語監視回路が、前記ベクトル述語に応答して、前記第2の値を有する前記述語要約値を生成する、請求項3に記載の装置。
【請求項5】
前記述語監視回路が、前記ベクトル述語に応答して、前記ベクトル述語のビット値が設定されていないときに前記述語要約値の第3の値を有する前記述語要約値を生成し、前記ベクトル述語のすべてのビット値が設定されているときに第4の値を有する前記述語要約値を生成する、請求項1から4までのいずれか一項に記載の装置。
【請求項6】
前記述語監視回路が前記述語要約値を2ビット値として生成するように構成される、請求項5に記載の装置。
【請求項7】
前記述語要約値が自己由来である、請求項6に記載の装置。
【請求項8】
前記述語要約値の前記第3の値が00であり、前記述語要約値の前記第2の値が01であり、前記述語要約値の前記第1の値が10であり、前記述語要約値の前記第4の値が11である、請求項6又は請求項7に記載の装置。
【請求項9】
前記述語監視回路が、前記ベクトル述語に応答して、前記ベクトル述語の前記ビット値に応じて第1の述語要約値及び少なくとも1つの追加の述語要約値を生成し、前記第1の述語要約値及び前記少なくとも1つの追加の述語要約値が、前記ベクトル述語の第1の部分及び少なくとも1つの追加の部分に対応する、請求項1から8までのいずれか一項に記載の装置。
【請求項10】
前記ベクトル述語の前記第1の部分及び前記少なくとも1つの追加の部分のサイズが同じである、請求項9に記載の装置。
【請求項11】
前記ベクトル述語の前記第1の部分及び前記少なくとも1つの追加の部分のサイズが異なる、請求項9に記載の装置。
【請求項12】
前記述語監視回路がさらに、前記ベクトル述語に応答して、前記ベクトル述語中の設定ビットのカウントを示す述語カウント値を生成する、請求項1から11までのいずれか一項に記載の装置。
【請求項13】
前記述語監視回路が、カウント命令に応答して、前記ベクトル述語中の設定ビットのカウントを示す前記述語カウント値を返す、請求項12に記載の装置。
【請求項14】
前記述語監視回路がさらに、前記カウント命令に応答して、前記述語要約値を返す、請求項13に記載の装置。
【請求項15】
前記ベクトル処理回路によって実行されるベクトル命令のベクトル命令要約を生成するための、前記ベクトル処理回路に関連するベクトル処理サンプリング回路を備え、前記ベクトル処理サンプリング回路が前記述語監視回路を備える、請求項1から14までのいずれか一項に記載の装置。
【請求項16】
前記ベクトル処理サンプリング回路が、サンプル・トリガ条件に応答して、前記ベクトル命令要約を生成する、請求項15に記載の装置。
【請求項17】
前記述語監視回路が、前記第1の値及び前記第2の値のうちの少なくとも一方を有する前記述語要約値の生成の発生をカウントするための少なくとも1つのカウンタをさらに備える、請求項1から16までのいずれか一項に記載の装置。
【請求項18】
前記述語監視回路が、カウント要約トリガに応答して、前記少なくとも1つのカウンタの少なくとも1つの値を出力する、請求項17に記載の装置。
【請求項19】
設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するステップと、
前記ベクトル述語の前記ビット値に応じて述語要約値を生成するステップと
を含み、
前記述語要約値の第1の値が、前記ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットを前記ベクトル述語の前記ビット値が含むとき、前記スパース条件が真であり、
前記述語要約値の第2の値が、前記ベクトル述語について前記スパース条件が真ではないことを示す、方法。
【請求項20】
設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するための手段と、
前記ベクトル述語の前記ビット値に応じて述語要約値を生成するための手段と
を備え、
前記述語要約値の第1の値が、前記ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットを前記ベクトル述語の前記ビット値が含むとき、前記スパース条件が真であり、
前記述語要約値の第2の値が、前記ベクトル述語について前記スパース条件が真ではないことを示す、装置。
【請求項21】
命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
複数の並列処理レーンでデータ処理を実行するためのベクトル処理ロジックであって、前記データ処理が、設定されたベクトル述語のビット値によって決定される前記複数の並列処理レーンのサブセットで実行される、ベクトル処理ロジックと、
前記ベクトル述語に応答して、前記ベクトル述語の前記ビット値に応じて述語要約値を生成する述語監視ロジックと
を含み、
前記述語要約値の第1の値が、前記ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットを前記ベクトル述語の前記ビット値が含むとき、前記スパース条件が真であり、
前記述語要約値の第2の値が、前記ベクトル述語について前記スパース条件が真ではないことを示す、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
複数の並列処理レーンでデータ処理を実行するベクトル処理回路を備えるデータ処理装置では、データ処理が、複数の並列処理レーンのサブセットでのみ選択的に実行されるように構成され得る。さらに、ベクトル処理回路のこの動作に対する制御は、通常、複数の並列処理レーンの数に対応するビット値の数として提供されるベクトル述語によって提供され、そのビット値は、特定の処理レーンがアクティブであるべきかどうかを示すように設定され得る。したがって、ベクトル処理回路は、そのベクトル処理の反復に関連して受け取られた特定のベクトル述語に応じて、そのデータ処理動作を異なる方法で実行し、その反復を制御するために提供されるベクトル述語のビット値に従って処理レーンをアクティブ化及び非アクティブ化することができる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53~63頁
【発明の概要】
【課題を解決するための手段】
【0004】
少なくともいくつかの実例は、複数の並列処理レーンでデータ処理を実行するためのベクトル処理回路であって、データ処理が、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される、ベクトル処理回路と、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成するための述語監視回路とを備え、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含むとき、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、装置を提供する。
【0005】
少なくともいくつかの実例は、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するステップと、ベクトル述語のビット値に応じて述語要約値を生成するステップとを含み、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含むとき、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、方法を提供する。
【0006】
少なくともいくつかの実例は、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するための手段と、ベクトル述語のビット値に応じて述語要約値を生成するための手段とを備え、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含む場合、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、装置を提供する。
【0007】
少なくともいくつかの実例は、命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、複数の並列処理レーンでデータ処理を実行するためのベクトル処理ロジックであって、データ処理が、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される、ベクトル処理ロジックと、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成する述語監視ロジックとを含み、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットをベクトル述語のビット値が含むとき、スパース条件が真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、コンピュータ・プログラムを提供する。
【0008】
本技法を、以下の説明と併せて読まれるべき添付の図面に示すようなその実施例を参照して単なる実例としてさらに説明する。
【図面の簡単な説明】
【0009】
【
図1】例示的な一実施例におけるデータ処理装置の一般的なレイアウトを概略的に示す図である。
【
図2A】ベクトル述語の対応するビット値が設定されているレーンのみがアクティブである宛先ベクトルを生成するために2つのソース・ベクトルに対して実行されるベクトル処理を概略的に示す図である。
【
図2B】例示的な一実施例による装置を概略的に示す図である。
【
図3A】例示的な一実施例における、スパース条件を表す述語要約値を生成するための述語監視回路を概略的に示す図である。
【
図3B】スパース条件が真であるときの例示的な一実施例における述語要約値の生成を示す図である。
【
図3C】スパース条件が真ではないときの述語要約値の生成を示す図である。
【
図4A】2ビットの例示的な一実施例において、可能な述語要約値をもたらすベクトル述語の実例についての述語要約値の生成を示す図である。
【
図4B】2ビットの例示的な一実施例において、可能な述語要約値をもたらすベクトル述語の実例についての述語要約値の生成を示す図である。
【
図4C】2ビットの例示的な一実施例において、可能な述語要約値をもたらすベクトル述語の実例についての述語要約値の生成を示す図である。
【
図4D】2ビットの例示的な一実施例において、可能な述語要約値をもたらすベクトル述語の実例についての述語要約値の生成を示す図である。
【
図5A】例示的な一実施例における、ベクトル述語の2つの等しいサイズの部分について第1の述語要約値及び第2の述語要約値を生成するように構成された述語監視回路を概略的に示す図である。
【
図5B】例示的な一実施例における、サイズが異なるベクトル述語の第1の部分及び第2の部分について第1の述語要約値及び第2の述語要約値を生成するように構成された述語監視回路を概略的に示す図である。
【
図6】ベクトル述語における述語要約値及び設定ビットのカウントを生成するように構成された、例示的な一実施例における述語監視回路を概略的に示す図である。
【
図7】例示的な一実施例における、ベクトル命令要約を生成するように構成された、ベクトル処理回路に関連するベクトル処理サンプリング回路を概略的に示す図である。
【
図8】例示的な一実施例の方法により行われる一連のステップを示すフロー図である。
【
図9】例示的な一実施例の方法により行われる一連のステップを示すフロー図である。
【
図10】例示的な実施例におけるシミュレータの実装を概略的に示す図である。
【発明を実施するための形態】
【0010】
本明細書の一実例において、複数の並列処理レーンでデータ処理を実行するためのベクトル処理回路であって、データ処理が、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される、ベクトル処理回路と、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成するための述語監視回路とを備え、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含むとき、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、装置がある。
【0011】
装置のベクトル処理回路は、ベクトル述語のビット値によって制御される複数の並列処理レーンでデータ処理を実行するように構成される。所与のインデックスのベクトル要素に対応するビット値を設定することによって、その処理レーンをデータ処理に対してアクティブにし、特定のベクトル要素に対応するビットを設定しないことによって、その処理レーンをデータ処理に対して非アクティブにする。実行されるベクトル処理命令ごとに、異なるベクトル述語が使用され得る。ベクトルの利用を理解し改善しようとするとき、述語付きベクトル命令に関する述語情報を取り込むことが有用である。しかしながら、ベクトル述語全体を取り込むことはコストがかかる。ポピュレーション・カウント、又は(ビットが1つも設定されていない/一部のビットが設定されている/すべてのビットが設定されていることを示す)スリー・ウェイ・インジケータなどの手法には制限がある。例えば、発明者は、ポピュレーション・カウントもスリー・ウェイ・インジケータも、連続する部分的な述語(例えば、プログラム中の短いループによる)とスパースな述語(例えば、プログラム中、おそらくはループ内のテストによる)とを区別できないことを理解している。部分的な述語の使用に関するこのような様々な要因は、利用を改善するための様々な行動方針を示す可能性がある。したがって、この方式でベクトル述語を用いてベクトル処理回路を制御するとき、ベクトル述語の設定ビット及び非設定ビットに関する情報を生成することが有用である。例えば、この情報は、ベクトル述語制御されたベクトル処理が実行されている方式に関する統計値を収集するために、ベクトル処理の多数回の反復にわたって収集されてもよく、そのそれぞれは、異なるように設定されたベクトル述語を有する場合がある。このコンテキストでは、ベクトル述語についてスパース条件が真であるかどうかを示すように述語要約値を生成することが有用であることが分かった。直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットをベクトル述語のビット値が含むとき、スパース条件は真である。逆に、より大きいインデックスの設定ビットの直後により小さいインデックスの非設定ビットが続くというこの組合せが真ではないとき、スパース条件は真ではない。これは、例えば、ベクトル述語のすべてのビットが設定されている、ベクトル述語のビットが設定されていない、又はベクトル述語のどこにもこの特定のビットの組合せが見つからないという理由で、真になる可能性がある。
【0012】
いくつかの実施例では、述語要約値の第1の値は、ベクトル述語のビット値の厳密なサブセットが設定されていることを示し、設定ビットの厳密なサブセットは、ベクトル述語の最下位ビットを含む不連続シーケンスではない。したがって、述語要約値の第1の値は、設定されているベクトル述語のビット値の厳密なサブセットに対応する。したがって、ここで「厳密なサブセット」と称される場合、これは、設定されているベクトル述語のすべてのビット値よりも少ないビット値に対応することを意味することを理解されたい。これは、アクティブ化されているレーンを説明するために上記で使用されている「複数の並列処理レーンのサブセット」という用語の使用と比較されるべきであり、ベクトル述語のすべてのビット値が設定されているとき、ベクトル処理回路の複数の並列処理レーンのすべてがアクティブであることが可能であることを意味する。さらに、述語要約値の第1の値は、設定ビットの厳密なサブセットがベクトル述語の最下位ビットを含む連続シーケンスではないことを示す。したがって、設定ビットの厳密なサブセットが設定ビットの連続シーケンスである場合、これは、生成される述語値要約の第1の値に対するベクトル述語の最下位ビットを含まない場合がある。
【0013】
逆に、いくつかの実施例では、述語要約値の第2の値は、ベクトル述語のビット値の厳密なサブセットが連続シーケンスで設定されていることを示す。
【0014】
さらに、いくつかの実施例では、連続シーケンスがベクトル述語の最下位ビットを含むとき、述語監視回路は、ベクトル述語に応答して、第2の値を有する述語要約値を生成する。したがって、ベクトル述語のビット値の厳密なサブセットが連続シーケンスで設定され、この連続シーケンスがベクトル述語の最下位ビットを含むとき、述語監視回路は述語要約値の第2の値を生成する。
【0015】
他の述語要約値が追加で定義されてもよく、いくつかの実施例では、述語監視回路は、ベクトル述語に応答して、ベクトル述語のビット値が設定されていないときに述語要約値の第3の値を有する述語要約値を生成し、ベクトル述語のすべてのビット値が設定されているときに第4の値を有する述語要約値を生成する。
【0016】
これらの4つの値は、対象の唯一の述語要約値である場合があり、この出力は2ビット値のみで効率的に表され得るので、いくつかの例示的な実施例では、述語監視回路は述語要約値を2ビット値として生成するように構成される。
【0017】
いくつかの例示的な実施例では、述語要約値は自己由来(autologous)である。言い換えれば、ベクトル述語中の特定のビット・パターンを表すために選択された述語要約値の特定のビット・パターン自体が、ベクトル述語のそれらのビット・パターンを定義するのと同じルールを満たす。述語要約値のこの特性は、様々に適用されてもよく、例えば、追加の述語要約値を生成するために少なくとも1つの追加のベクトル述語を少なくとも1つの述語要約値と組み合わせることができ、この場合、その追加の述語要約値は、少なくとも1つの追加のベクトル述語と元の述語要約値の組合せだけでなく、実際には少なくとも1つの追加のベクトル述語と元のベクトル述語の組合せを正確に表すことになる。これにより、複数のベクトル述語の要約が生成されるときの様々な処理の効率化が実現され得る。
【0018】
実施例では、この自己由来特性を満たす述語要約値のある特定の値が選択されており、述語要約値の第3の値は00であり、述語要約値の第2の値は01であり、述語要約値の第1の値は10であり、述語要約値の第4の値は11である。
【0019】
いくつかの実施例では、述語監視回路は、ベクトル述語を少なくとも2つの部分に細分し、それぞれについて述語要約値を生成することができる。したがって、いくつかの実施例では、述語監視回路は、ベクトル述語に応答して、ベクトル述語のビット値に応じて第1の述語要約値及び少なくとも1つの追加の述語要約値を生成し、第1の述語要約値及び少なくとも1つの追加の述語要約値は、ベクトル述語の第1の部分及び少なくとも1つの追加の部分に対応する。
【0020】
いくつかの実施例では、ベクトル述語の第1の部分及び少なくとも1つの追加の部分のサイズは同じである。いくつかの実施例では、ベクトル述語の第1の部分及び少なくとも1つの追加の部分のサイズは異なる。
【0021】
述語要約値を生成することに加えて、述語監視回路は、ベクトル述語に関する他の情報を生成することができる。例えば、いくつかの実施例では、述語監視回路はさらに、ベクトル述語に応答して、ベクトル述語中の設定ビットのカウントを示す述語カウント値を生成する。
【0022】
述語監視回路は、様々な条件に応答して述語カウント値を返すように構成され得るが、いくつかの実施例では、述語監視回路は、カウント命令に応答して、ベクトル述語中の設定ビットのカウントを示す述語カウント値を返す。
【0023】
したがって、カウント命令は、述語監視回路に述語カウント値を返させるトリガとすることができ、いくつかの実施例では、述語監視回路は加えて他の情報を返すことができる。例えば、述語監視回路はさらに、カウント命令に応答して、述語要約値を返すことができる。
【0024】
装置がベクトル処理回路を備える場合、様々な方法でベクトル処理回路の動作を監視することが有用である場合がある。したがって、いくつかの実施例では、装置は、ベクトル処理回路によって実行されるベクトル命令のベクトル命令要約を生成するための、ベクトル処理回路に関連するベクトル処理サンプリング回路をさらに備え、ベクトル処理サンプリング回路は述語監視回路を備える。
【0025】
ベクトル命令要約は、様々な条件に従って生成され得るが、いくつかの例示的な実施例では、ベクトル処理サンプリング回路は、サンプル・トリガ条件に応答して、ベクトル命令要約を生成する。
【0026】
第1の値及び第2の値のうちの少なくとも一方を有する述語要約値の生成は、ベクトル処理回路の動作を監視する際に特に関係する場合があり、したがって、いくつかの実施例では、述語監視回路は、第1の値及び第2の値のうちの少なくとも一方を有する述語要約値の生成の発生をカウントするための少なくとも1つのカウンタをさらに備える。したがって、統計値は少なくとも1つのカウンタに基づいて収集され得る。
【0027】
このようないくつかの実施例では、述語監視回路は、カウント要約トリガに応答して、少なくとも1つのカウンタの少なくとも1つの値を出力する。したがって、カウント要約トリガは、少なくとも1つのカウンタの値にアクセスし、そのような統計値を利用するために、様々に定義され得る。
【0028】
本明細書の一実例において、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するステップと、ベクトル述語のビット値に応じて述語要約値を生成するステップとを含み、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含むとき、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、方法がある。
【0029】
本明細書の一実例において、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットでベクトル・データ処理を実行するための手段と、ベクトル述語のビット値に応じて述語要約値を生成するための手段とを備え、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後に非設定下位ビットが続く設定上位ビットをベクトル述語のビット値が含む場合、スパース条件は真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、装置がある。
【0030】
本明細書の一実例において、命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、複数の並列処理レーンでデータ処理を実行するためのベクトル処理ロジックであって、データ処理が、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される、ベクトル処理ロジックと、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成する述語監視ロジックとを含み、述語要約値の第1の値が、ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットをベクトル述語のビット値が含むとき、スパース条件が真であり、述語要約値の第2の値が、ベクトル述語についてスパース条件が真ではないことを示す、コンピュータ・プログラムがある。
【0031】
次に、いくつかの特定の実施例を、図面を参照して説明する。
【0032】
図1は、本技法の様々な実例を具現化し得るデータ処理装置10を概略的に示す。装置は、それが実行する命令シーケンスに応答してデータ項目に対してデータ処理動作を実行するデータ処理回路12を備える。これらの命令は、データ処理装置がアクセスするメモリ14から取得され、この目的のために、当業者によく知られている方式でフェッチ回路16が設けられている。さらに、フェッチ回路16によって取得された命令は、命令デコーダ回路18に渡され、命令デコーダ回路18は、処理回路12並びに1組のレジスタ20及びロード/記憶ユニット22の構成及び動作の様々な態様を制御するように構成される制御信号を生成する。一般に、データ処理回路12はパイプライン方式で構成され得るが、その詳細は、本技法には関連しない。当業者は、
図1が表す一般的な構成に精通しており、そのさらなる詳細な説明は、簡潔さの目的のためだけにここでは省かれている。レジスタ20は、
図1に見られるように、それぞれが複数のデータ要素の記憶装置を含み、それにより、処理回路は、指定されたレジスタ内の指定されたデータ要素にデータ処理動作を適用することができ、又は指定されたレジスタ内のデータ要素の指定されたグループ(「ベクトル」)にデータ処理動作を適用することができる。具体的には、図示のデータ処理装置は、ベクトル化されたデータ処理動作の性能、特に、レジスタ20に保持されているデータ要素に関するベクトル命令の実行に関係し、その実行は、どのベクトル処理レーンがアクティブであるかを制御するベクトル述語に依存し、これについては、いくつかの特定の実施例を参照して以下でさらに詳細に説明する。命令の実行においてデータ処理回路12が必要とするデータ値、及びそれらのデータ処理命令の結果として生成されたデータ値は、ロード/記憶ユニット22によってメモリ14に書き込まれ、メモリ14から読み出される。また、一般に、
図1のメモリ14は、典型的には処理回路が実行する既定の命令シーケンス(「プログラム」)の一部のような本技法の命令が記憶され得るコンピュータ可読記憶媒体の一実例として理解され得ることにも留意されたい。ただし、処理回路は、RAM内、ROM内、ネットワーク・インターフェースなどを介して多種多様なソースからこのようなプログラムにアクセスすることができる。
【0033】
図2Aは、例えば、
図1に示す装置10の処理回路12内に存在し得るベクトル処理回路を概略的に示す。2つのソース・ベクトル・レジスタA及びBが示されており、そこから要素が取得され、指定された動作「OP」への入力を形成し、その結果は、宛先ベクトル・レジスタの対応する要素に書き込まれる。特に、ベクトル述語も示されており、このベクトル述語のビットの設定は、どの「レーン」、すなわち、ソース・レジスタ及び宛先レジスタのどの各要素がベクトル処理に関与するかを制御することに留意されたい。図示の実例では、8ビットのベクトル述語に3ビットが設定されており、したがってソース・ベクトル・レジスタA及びBから取得された要素の3つの対応する対に対して3つの対応する動作が実行され、宛先ベクトル・レジスタの各要素に対して3つの結果が生成される。
図2Aの実例では、8要素のベクトル・レジスタ及び8ビットのベクトル述語が示されているが、本技法は、決して特定のサイズのベクトル・レジスタ又はベクトル述語に限定されないことにさらに留意されたい。
【0034】
図2Bは、例示的な一実施例における装置50を概略的に示す。装置50は、(例えば、
図2Aに示すように)複数の並列処理レーンでデータ処理を実行するように構成され、この目的のためにレジスタ52内のベクトル・レジスタにアクセスするベクトル処理回路51を備える。したがって、ソース・ベクトル・レジスタは、レジスタ52内でアクセスされてデータ処理動作の入力を形成し、それらの動作の結果として生成された結果値は、レジスタ52の宛先ベクトル・レジスタに書き込まれる。ベクトル述語53も、レジスタ52から取得され、ベクトル処理回路51に渡されるものとして示されている。この例示の選択は、ベクトル述語53の使用を強調するためのものであり、ベクトル述語がベクトル処理回路51及びレジスタ52の外側に別々に記憶される必要はないことに留意されたい。しかしながら、この例示は、述語53の性質、ベクトル処理回路51へのその影響、及びこの値が述語監視回路54によっても受け取られるという事実の理解を容易にする。述語監視回路54は、ベクトル述語53を受け取り、ベクトル述語中のビットの設定に応じて述語要約値55を生成するように構成される。述語要約値55がベクトル述語53に依存する特定の方式は多様である可能性があり、それに応じて述語監視回路54によって実行される処理も多様である可能性がある。この様々な実例について、次の図面を参照して以下で説明する。
【0035】
図3Aは、述語監視回路60の構成の一実例を概略的に示す。この回路の入力は、ベクトル述語のそれぞれの要素によって提供され、この実例では、単に説明を明確にするために4つの要素のみを示す。述語監視回路60は、1組の3つのNOTゲート61、62、63及び1組のANDゲート64、65、66を備える。最後のORゲート67は、3つのANDゲートからの出力を組み合わせる。出力は、この実例では「スパース条件」インジケータに直接対応する述語要約値の一実例である。
図3Aのゲート構造を考察すると、スパース条件が真になるには、より大きいインデックス(
図3A中のさらに左)のベクトル要素に対応するビットが設定され、直後に、設定されていないより小さいインデックスのベクトル要素に対応するビットが続かなければならない(
図3A中の右へ読む)ような、ベクトル述語のビット値でなければならないことが示されている。別の言い方をすると、ベクトル述語のさらに左のビットを「上位」と見なし、ベクトル述語のさらに右のビットを「下位」と見なすと、スパース条件は、ベクトル述語のビット値が、直後に非設定下位ビットが続く設定上位ビットを含む(そして、ORゲート67からの出力が1である)必要がある。このビットの構成が満たされない場合、スパース条件は真ではない(そして、ORゲート67からの回路の出力は0である)。
図3Bは、スパース条件が真であるベクトル述語におけるビットの例示的な設定を示し、
図3Cは、スパース条件が真ではないベクトル述語におけるビットの設定の一実例を示す。
【0036】
図4A~
図4Dは、2ビット出力構成による(述語監視回路の一部としての)述語要約生成回路のさらなる例示的な構成を示し、出力の4つの可能なビット・パターンのそれぞれは、ベクトル述語の設定ビットの異なる識別された状態を表す。
図4Aは、ベクトル述語のすべてではなく一部のビットが設定され、さらにこれらがより小さい(右手)端から連続している一実例を示す。
図4Bは、(すべてではなく)一部のビットが設定され、これらのビットがスパース(より小さい(右手)端から連続していない)である一実例を示す。
図4Cは、ビットが設定されていない一実例を示す。
図4Dは、すべてのビットが設定されている一実例を示す。さらに、
図4Aから4Dに関して、使用される特定の2ビット・パターン(符号化)は、加えてオートロジカルであるという特性を有すること、すなわち、述語要約値はそれらが示すものと同じ特性を有することに留意されたい。言い換えれば、4Aの実例では、出力「01」は、その出力が生成されたときに従った定義、すなわち、すべてではなく一部のビットが設定され、設定されたビットが小さい端から連続しているという定義を満たす。
図4Bでは、出力「10」は、一部のビットが設定されているがスパースである(小さい端から連続していない)という定義を満たす。
図4Cの出力「00」は、ビットが設定されていないという定義を満たす。
図4Dの出力「11」は、すべてのビットが設定されているという定義を満たす。符号化のこの特性には、ベクトル述語、ベクトル述語の一部、又は述語要約値の任意の連結に同じ述語要約値生成ルールを適用することによって述語要約値が生成され得るという追加の利点がある。
【0037】
例えば、次のベクトル述語の述語要約値は、(述語要約値がスパースであるので)「10」である。
0001111100110011
【0038】
しかしながら、このベクトル述語は次のように2つの部分でも表され得る。
(一部のビットがより小さい端から連続して設定されているので)述語要約値「01」を有する00011111、及び
(一部のビットが設定されているがスパースであるので)述語要約値「10」を有する00110011
【0039】
連結すると、これらの2つの述語要約値は、それ自体がスパースである「0101」を与え、それ自体で述語要約値「10」を生成する。
【0040】
図5Aは、ベクトル述語の入力が2つの部分に分割される述語監視回路80を概略的に示し、それぞれに対する述語要約値は、各要約生成回路81及び82によって生成される。
図5Bは、入力ベクトル述語が部分に分割される同様の構成を概略的に示し、それぞれに対する述語要約値が生成されるが、
図5Aの述語監視回路80への入力ベクトル述語はベクトル述語を2つの等しいサイズの部分(図示の実例ではそれぞれが8要素ベクトルのうちの4つの要素である)に分割し、
図5Bの述語監視回路90はベクトル述語を2つの異なるサイズの部分(図示の実例では6要素の部分及び2要素の部分)に分割する点で、
図5Bの述語監視回路90は、5Aの述語監視回路80と異なる。さらに
図5A及び
図5Bに関して、述語監視回路の各実例における要約生成回路インスタンスの両方がアクティブである必要はなく、したがって、ベクトル述語のサブ部分に対してのみ述語要約値が生成され得ることに留意されたい。
【0041】
図6は、例示的な一実施例における装置100を概略的に示す。ここで、述語監視回路102は、述語要約値生成回路104だけでなく、カウント生成回路106も備える。要約生成回路104は、(上述のように)述語要約値108を生成するように構成され、一方、カウント生成回路106は、ベクトル述語中に設定されるビット数のカウントを示す述語カウント値110を生成するように構成される。カウント生成回路106の動作は任意選択であってもよく、そのような実例では、例えば
図1の実例におけるフェッチ・ユニット16によってメモリ14からフェッチされた命令のうちの1つとして、装置によって受け取られたカウント命令によってトリガされてもよい。また、このカウント命令のトリガは、述語監視回路の出力が何になるかを決定する述語監視出力制御112によって受け取られてもよい。したがって、述語監視出力制御112は、要約生成回路104とカウント生成回路106の両方の出力、すなわち、それぞれ述語要約値108及び述語カウント値110を受け取る。したがって、例えば、カウント生成回路がアクティブでない場合、述語監視出力制御は、述語要約値のみを出力として提供されるようにし、その一方で、述語監視出力制御回路112は、カウント命令のトリガに応答して、述語カウント値を出力の一部として追加的に提供してもよい。
【0042】
図7は、例示的な一実施例における装置120を概略的に示す。ベクトル処理回路121は、ベクトル処理回路の動作を監視し、ベクトル処理回路の動作の理解を可能にするベクトル命令要約127を提供するように構成された関連するベクトル処理サンプリング回路122を備える。具体的には、ベクトル処理サンプリング回路は、上述の実例のいずれかに従って構成され得る述語監視回路123を備える。ベクトル処理回路112の動作で使用されるベクトル述語に関する述語情報を取り込むことは、ベクトルの利用を理解するのに役立つ。しかしながら、実行される各ベクトル動作について述語全体を取り込むことはコストがかかり、このため、述語監視回路123は、ベクトル命令要約の一部又はすべてを形成する述語要約値を生成するように構成される。
【0043】
述語監視回路は、特定の述語要約値の生成の発生をカウントするように構成されたカウンタ124をさらに備える。この実例では、カウンタ124は、
図4A~
図4Dに関して説明された2ビット構成に従って述語要約値の生成の発生をカウントするために2つのカウンタとして提供される。より具体的には、提供された2つのカウンタは、出力値「01」を伴う述語値の生成の発生、すなわち、すべてではなく一部のビットが設定されており、それらが小さい端から連続しているとき、及び値「10」を伴う述語要約値の生成の発生、すなわち、一部のビットが設定されているが、これらがスパースである(小さい端から連続していない)ときをカウントする。これにより、短いループによる連続する部分的な述語と、ループ内のテストによるスパースである述語を区別することができる。この情報を取り込むことは、ベクトル述語の使用の様々な要因を示す可能性があり、利用を改善するための異なる一連のアクションを示し得る。ベクトル処理サンプリング122は、システム要件に応じて様々に定義され得るサンプリング・トリガ条件125に応答することができる。しかしながら、図示の実例では、カウンタ124のうちの少なくとも1つが閾値に達したときに、サンプリング・トリガ条件が満たされる。これに応答して、カウンタ124は、次いで、出力を形成するベクトル命令要約127の一部を形成することができるカウント要約126を生成する。この出力は、装置120内で使用されてもよく、分析、記憶、及び/又はそれに応じて行われるアクションのためにシステムの別の部分に渡されてもよい。
【0044】
図8は、例示的な一実施例の方法により行われる一連のステップを示すフロー図である。フローは、ステップ150で開始すると考えることができ、実行すべきベクトル処理命令があるかどうかが判定される。図示された方法は、そのようなベクトル処理のみに関係しており、したがって、これが真でない間は、フローはステップ150自体でループする。しかしながら、これが真であるとき、フローはステップ151に進み、ベクトル述語が、直後に非設定下位ビットが続く設定上位ビットを有するかどうかが判定される。言い換えれば、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットを、ベクトル述語のビット値が有するかどうかが判定される。これが真である場合、ステップ152において第1の値で述語要約値が生成され、これが真でない場合、ステップ153において第2の値で述語要約値が生成される。第1の値及び第2の値は、例えば、上述の実例のうちの1つに従えば「10」及び「01」であり得る。しかしながら、この特定の符号化は必要ではない。最後に、ステップ154において、命令によって定義されるベクトル・データ処理が、ベクトル述語中に設定ビットを有するレーンで実行される。次いで、フローはステップ150に戻る。
【0045】
図9は、例示的な一実施例により行われる一連のステップを示すフロー図である。フローは、ステップ160で開始すると考えることができ、実行すべきベクトル処理命令があるかどうかが判定される。これが真でない間は、フローはステップ160自体でループする。しかしながら、これがそのような場合であるとき、フローはステップ161に進み、ベクトル述語にビットが設定されていないかどうかが判定される。これが真の場合、ステップ162において述語要約値が「00」として生成される。そうでない場合、フローはステップ163に進み、ベクトル述語にすべてのビットが設定されているかどうかが判定される。これが真の場合、ステップ164において述語要約値が「11」として出力される。そうでない場合、ステップ165において、ベクトル述語にすべてではなく一部のビットが設定され、これらがより小さいインデックスの端(すなわち、ベクトル述語の最下位ビット端)から連続しているかどうかが判定される。これが真の場合、ステップ166において述語要約値が「01」として生成される。そうでない場合、ステップ167において、述語要約値は、一部のビットが設定されているが、これらはスパースであること、すなわち、より小さい端から連続していないことを示す「10」として生成される。述語要約値が設定されるいずれの経路を経由しても、フローはステップ168に至り、実行されているベクトル処理命令によって定義されるようなベクトル・データ処理が、述語中に設定ビットを有するレーンで実行される。次いで、フローはステップ160に戻る。
【0046】
図10は、使用され得るシミュレータの実装を示す。前述の実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実装するが、本明細書に記載の実施例による命令実行環境を提供することも可能であり、これはコンピュータ・プログラムの使用を通じて実装される。このようなコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェアベースの実装を提供する限りにおいては、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。通常、シミュレータの実装は、ホスト・プロセッサ230で実行され、任意選択でホスト・オペレーティング・システム220を実行し、シミュレータ・プログラム210をサポートする。いくつかの構成では、ハードウェアと提供される命令実行環境との間にシミュレーションの複数の層、及び/又は同じホスト・プロセッサ上に提供される複数の異なる命令実行環境が存在する場合がある。歴史的に、強力なプロセッサは適正な速度で実行するシミュレータの実装を提供する必要があったが、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行したい場合など特定の状況下においては、このような手法が妥当である場合がある。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアでサポートされていない追加機能を備えた命令実行環境を提供してもよく、又は通常は異なるハードウェア・アーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990冬、USENIX Conference、53~63頁に記載されている。
【0047】
特定のハードウェア構成又は特徴を参照して実施例が前述された範囲において、シミュレートされた実施例では、同等の機能が適切なソフトウェア構成又は特徴によって提供されてもよい。例えば、シミュレートされた実施例において、特定の回路はコンピュータ・プログラム・ロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装されてもよい。前述の実施例で参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(例えば、ホスト・プロセッサ230)上に存在する構成では、いくつかのシミュレートされた実施例は、適宜ホスト・ハードウェアを利用してもよい。
【0048】
シミュレータ・プログラム210は、コンピュータ可読記憶媒体(非一時的媒体であり得る)に記憶されてもよく、シミュレータ・プログラム210によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである対象コード200へのプログラム・インターフェース(命令実行環境)を提供する。したがって、シミュレートされたベクトル処理回路によって実行されるベクトル処理命令を含む、対象コード200のプログラム命令は、シミュレータ・プログラム210を使用して命令実行環境内から実行されてもよく、それにより、上述した装置の実例のハードウェア機能を実際に有していないホスト・コンピュータ230は、これらの機能をエミュレートすることができる。
【0049】
要約すると、装置及びそのような装置を動作させる方法が開示されている。ベクトル処理回路は、複数の並列処理レーンでデータ処理を実行し、データ処理は、設定されたベクトル述語のビット値によって決定される複数の並列処理レーンのサブセットで実行される。述語監視回路は、ベクトル述語に応答して、ベクトル述語のビット値に応じて述語要約値を生成する。述語要約値の第1の値は、ベクトル述語についてスパース条件が真であることを示し、直後により小さいインデックスのベクトル要素に対応する非設定ビットが続くより大きいインデックスのベクトル要素に対応する設定ビットをベクトル述語のビット値が含むとき、スパース条件は真である。述語要約値の第2の値は、ベクトル述語についてスパース条件が真ではないことを示す。したがって、改善された述語制御されたベクトル処理がサポートされる。
【0050】
本出願において、「~ように構成される」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有する場合があり、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされている場合がある。「ように構成される」は、定義された動作を提供するために装置の要素が何らかの変更を必要とすることを暗示するものではない。
【0051】
例示的な実施例が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明がそれらの厳密な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が、当業者によってそこで行われ得ることを理解されたい。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなく、独立請求項の特徴と様々に組み合わせることができる。
【国際調査報告】