(57)【要約】  ベクトル処理動作をサポートするデータ処理システム２は、スケーリングベクトル長クエリ命令を使用する。スケーリングベクトル長クエリ命令は、命令により指定された可変のベクトル要素サイズについてのベクトル内の要素の数に、命令により指定されたスケーリング値を乗じたものに依存する結果を返す。スケーリングベクトル長クエリ命令は、計数命令、インクリメント命令、またはデクリメント命令の形をとり得る。命令は、ｍｏｄｕｌｏ（Ｍ）または２の累乗などの制約を、命令のために指定されたレジスタ要素サイズに提供されるベクトル要素の数を表す部分的な結果値に適用するパターン制約を含み得る。
2018521422.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル処理動作を行うための処理回路と、
前記ベクトル処理動作を行うように前記処理回路を制御するための制御信号を生成するためにプログラム命令をデコードするためのデコーダ回路と、を備える、データを処理するための装置であって、
前記デコーダ回路が、スケーリングされたベクトル長クエリ命令により指定された可変のベクトル要素サイズについてのベクトル内の要素の数に、前記スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように前記処理回路を制御するように、前記スケーリングされたベクトル長クエリ命令に応答する装置。
【請求項２】
前記スケーリング値が、前記スケーリングされたベクトル長クエリ命令内にエンコードされた整数定数値である、請求項１に記載の装置。
【請求項３】
前記スケーリング値が、両端を含む１〜８に及ぶ範囲内である、請求項１および２のいずれか一項に記載の装置。
【請求項４】
前記ベクトル要素サイズが、８ビット、１６ビット、３２ビット、および６４ビットのうちの１つから選択される、請求項１〜３のいずれか一項に記載の装置。
【請求項５】
前記スケーリングされたベクトル長クエリ命令が、１つ以上のさらなるパラメータを含み、前記処理回路により返される前記結果値が、前記１つ以上のさらなるパラメータに依存する、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記１つ以上のさらなるパラメータが、前記装置により使用される前記ベクトル長がそれを条件として決定されるベクトルパターン制約を含む、請求項５に記載の装置。
【請求項７】
前記ベクトルパターン制約が、前記要素の数が、
指定された値Ｍの倍数でもある、前記装置により提供される最大値と、
２の累乗でもある、前記装置により提供される最大値と、
前記装置により提供される最大値と、
のうちの１つであると指定する、請求項６に記載の装置。
【請求項８】
前記スケーリングされたベクトル長クエリ命令が、前記要素の数に前記スケーリング値を乗じたものに依存する計数結果値を返す、スケーリングされた計数命令である、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
前記スケーリングされたベクトル長クエリ命令が、インクリメントされるべき入力値に依存するインクリメント結果値を返す、スケーリングされたインクリメント命令である、請求項１〜８のいずれか一項に記載の装置。
【請求項１０】
前記スケーリングされたベクトル長クエリ命令が、デクリメントされるべき入力値に依存するデクリメント結果値を返す、スケーリングされたデクリメント命令である、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記ベクトル処理回路が、前記結果値を少なくとも部分的に決定するために、前記スケーリング値に依存してアドレス指定されるルックアップテーブルを含む、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
前記ルックアップテーブルが、前記１つ以上のさらなるパラメータに依存してアドレス指定される、請求項５および請求項１１に記載の装置。
【請求項１３】
ベクトル処理動作を行うための処理手段と、
前記ベクトル処理動作を行うように前記処理回路を制御するための制御信号を生成するためにプログラム命令をデコードするための、デコーダ手段と、を備える、データを処理するための装置であって、
前記デコーダ手段が、スケーリングされたベクトル長クエリ命令により指定された可変のベクトル要素サイズについてのベクトル内の要素の数に、前記スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように前記処理手段を制御するように、前記スケーリングされたベクトル長クエリ命令に応答する装置。
【請求項１４】
スケーリングされたベクトル長クエリ命令により指定された可変のベクトル要素サイズについてのベクトル内の要素の数に、前記スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように処理回路を制御するように、前記スケーリングされたベクトル長クエリ命令をデコードすることを含む、データを処理する方法。
【請求項１５】
請求項１〜１２のいずれか一項に記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するための、非一時的な記憶媒体上に記憶されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より具体的には、本開示は、ベクトル処理をサポートするデータ処理システムに関する。
【背景技術】
【０００２】
複数のベクトル要素を含むベクトル被演算子の処理をサポートするデータ処理システムを提供することが知られている。ベクトルレジスタ内のビット数は、従来、当該のプロセッサアーキテクチャにより定義されている。ベクトルレジスタ内のビット数は、異なるサイズのベクトル要素間で分けることができ、その結果、異なる数のベクトル要素が所与のベクトルレジスタにより提供されることが生じる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも一部の実施形態によれば、ベクトル処理動作を行うための処理回路と、該ベクトル処理動作を行うように該処理回路を制御するための制御信号を生成するためにプログラム命令をデコードするためのデコーダ回路と、を備える、データを処理するための装置であって、該デコーダ回路が、該ベクトル処理動作を行うとき該装置により使用されるベクトル長に、該スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように該処理回路を制御するように、スケーリングされたベクトル長クエリ命令に応答する装置、が提供される。
【０００４】
本開示の少なくとも一部の実施形態によれば、ベクトル処理動作を行うための処理手段と、該ベクトル処理動作を行うように該処理回路を制御するための制御信号を生成するためにプログラム命令をデコードするための、デコーダ手段と、を備える、データを処理するための装置であって、該デコーダ手段が、該ベクトル処理動作を行うとき該装置により使用されるベクトル長に、該スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように該処理手段を制御するように、スケーリングされたベクトル長クエリ命令に応答する装置、が提供される。
【０００５】
本開示の少なくとも一部の実施形態によれば、ベクトル処理動作を行うとき使用されるベクトル長に、該スケーリングされたベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返すように処理回路を制御するように、スケーリングされたベクトル長クエリ命令をデコードすることを含む、データを処理する方法、が提供される。
【０００６】
これより、添付図面を参照しながら、例示的な実施形態を、単なる例として、説明する。
【図面の簡単な説明】
【０００７】
【図１】ベクトル処理をサポートするデータ処理システムを概略的に例示する。
【図２】スケーリングベクトル長クエリ命令の複数の異なる形態を概略的に例示する。
【図３】図２のスケーリングベクトル長クエリ命令の異なる種類の挙動の例を概略的に例示する。
【図４】スケーリングベクトル長クエリ命令に応答して結果値を作成するためのルックアップテーブル実装を概略的に例示する。
【図５】スケーリングベクトル長クエリ命令の挙動を概略的に例示する流れ図である。
【図６】仮想マシン実装を概略的に例示する。
【発明を実施するための形態】
【０００８】
図１は、データ値８およびプログラム命令１０を記憶するメモリ６に連結されたプロセッサ４を含むデータ処理システム２を概略的に例示する。プロセッサ４は、プログラム命令１０をメモリ６からフェッチし、フェッチプログラム命令をデコーダ回路１４に供給するための命令フェッチユニット１２を含む。デコーダ回路１４は、フェッチされたプログラム命令をデコードし、デコードされたベクトル命令により指定されたように、ベクトルレジスタ回路２０内に記憶されたベクトルレジスタに対するベクトル処理動作を行うようにベクトル処理回路１８を制御するための制御信号１６を生成する。実務上、プロセッサ４は典型的により多くの回路要素を含むことになること、およびそれらは図面から省略されていることが理解されるであろう。
【０００９】
図１はまた、この例では２５６のベクトルビットサイズを有する例示的なベクトルレジスタＺｉを概略的に例示する。ベクトルレジスタＺｉは、１６個のベクトル要素ａ０〜ａ１５から形成されている。これらのベクトル要素のそれぞれは、１６ビットのベクトルビットサイズを有し、それゆえに、ベクトルレジスタＺｉ内のベクトル要素数は、１６である。ベクトル要素サイズは、デコードされているベクトル命令により指定され得る変数である。例えば、ベクトル命令は、ベクトル要素がバイト、ハーフワード、ワード、またはダブルワード（それぞれ、８、１６、３２、６４ビット）であることを指定するようにエンコードされ得る。ベクトル要素ビットサイズによって、ベクトルレジスタＺｉ内のベクトル要素数は、変わり得る。したがって、２５６ビットから形成されたベクトルレジスタＺｉの場合、これは、１６個の１６ビットベクトル要素、８個の３２ビットベクトル要素、または４個の６４ビットベクトル要素をサポートし得る。
【００１０】
プロセッサ４の所与の実装は、所与のビットサイズのベクトルレジスタＺｉをサポートするベクトルレジスタ回路２０を含むことになる。しかしながら、同じ命令セットアーキテクチャを使用するプロセッサ４の異なる実装は、例えば５１２ビット、３８４ビット、１０２４ビットなどの、異なるサイズのベクトルレジスタをサポートし得る。
【００１１】
ベクトル命令を含むプログラムコードが、いかなる、または著しい修正を必要とすることなく、異なるサイズのベクトルレジスタＺｉを提供するベクトルレジスタ回路２０に適応することを可能にする方法として、１つ以上のスケーリングベクトル長クエリ命令が提供される。これらのスケーリングベクトル長クエリ命令は、スケーリングベクトル長クエリ命令により指定された可変のベクトル要素サイズ（例えば、バイト、ハーフワード、ワード、またはダブルワード）についてのベクトル内の要素数にスケールベクトル長クエリ命令により指定されたスケーリング値を乗じたものに依存する結果値を返す。このようなスケーリングベクトル長クエリ命令は、実装の特定のベクトルレジスタサイズを考慮に入れることができ、また、実装されているベクトルコードにより提供され得るプログラムループローリングの程度を介して考慮に入れることもできる結果を返すことができる。スケーリング値は、スケーリングベクトル長クエリ命令内にエンコードされた整数定数値（例えば、命令内の即値）の形で提供され得る。
【００１２】
図２は、スケーリングベクトル長クエリ命令の様々な異なる形態を概略的に図示する。特に、ベクトル長クエリ命令の種類は、計数命令、インクリメント命令、またはデクリメント命令であり得る。スケーリングベクトル長クエリ命令である命令のさらなる種類もまた、可能である。加えて、スケーリングベクトル長クエリ命令は、それに関して結果値が決定されるベクトル要素サイズを指定する。それゆえに、ベクトル要素サイズは、バイトＢ、ハーフワードＨ、ワードＷ、またはダブルワードＤであり得る。スケーリングベクトル長クエリ命令はまた、命令に対する入力被演算子値のソースとして、および結果値が書き込まれるべき宛先として働き得るスカラーレジスタＸｄを指定する。
【００１３】
図２に例示されるスケーリングベクトル長クエリ命令内の最後の２つのパラメータは、これを条件として処理装置により使用されるベクトル長を指定することができ、これに依存してスケーリングベクトル長クエリ命令の結果値が返される、パターン制約を指定するフィールドである。ベクトルパターン制約は、様々な異なる形態をとり得る。制約は、例えば、装置により提供される最大値が指定された値Ｍの倍数であることであってもよく、例えばベクトル要素の数の値が、値Ｍの倍数であるように制約される（ｍｏｄｕｌｏ（Ｍ））。制約パターンの別の例は、サポートされるベクトル要素の数に関して返される最大値が、２の累乗、例えば２、４、８、１６、３２など、であるべきであることである。制約パターンの別の例は、サポートされる要素の数の最大値に対して、ベクトルレジスタＺｉの物理サイズを超えては、制約が適用されないということである。したがって、ベクトルレジスタが長さ２５６ビットであり、要素サイズが１６ビットであるならば、この方法で「全て（Ａｌｌ）」の制約では、ベクトル要素の数が１６個であることに基づいて結果値が返されることになる。
【００１４】
スケールベクトル長クエリ命令により指定される最後のパラメータは、スケーリング値である。これは、スケーリングベクトル長クエリ命令自体内にエンコードされた整数定数値であってもよく、即値を有する。このスケーリング値は広範な値を有し得るものの、１〜８の範囲（両端を含む）内のスケーリング値は、スケーリングベクトル長クエリ命令をエンコードするために使用される命令ビット空間を保ちながら、一般に見られるループ展開の程度の大部分をサポートすることができることが見出されている。
【００１５】
図３は、いくつかの例示的なスケーリングベクトル長クエリ命令について返され得る結果値を概略的に例示する。例示されている列は、ベクトルビットサイズ（すなわち、ベクトルレジスタＺｉのビットサイズ）、ベクトル要素ビットサイズ（例えば、バイト、ハーフワード、ワード、ダブルワード）、ベクトルパターン制約（例えば、Ａ、ｍｏｄｕｌｏ（Ｍ）、２の累乗など）、スケーリング値（例えば、命令自体内にエンコードされた両端を含む１〜８の範囲内の定数値）、ならびに命令の種類（例えば、計数、インクリメント、デクリメント）である。入力値は、計数命令に関しては「０」であるとみなされてもよく、インクリメントおよびデクリメントの命令の場合は入力レジスタＸｄにより提供される値であってもよい。
【００１６】
図３に例示されている最初の行を検討すると、これは、１２８のベクトルビットサイズを指定している。ベクトル要素ビットは８の大きさである。それゆえに、制約のない最大ベクトル要素計数は１６個である。この行のパターン制約は「全て」であり、それゆえに、これは制約されていないパターンに対応する。第１の行のスケーリングは「１」であり、したがって、結果は、スケーリングによって変更されない。命令の種類は計数で、それゆえに、ベクトルレジスタ内のバイトサイズのベクトル要素の数の単純な計数が提供され、１６個になる。
【００１７】
より複雑な例が、第５の行に与えられている。この場合、ベクトルビットサイズは２５６であり、ベクトル要素ビットサイズは３２である。これは、サポートされているベクトル要素の制約されていない数を８個として示す。しかしながら、パターン制約は、サポートされる数であるべきベクトル要素の数は３の倍数であるべきである、というものである。それゆえに、パターン制約は、サポートされるものの最大として考えられるベクトル要素の数を６個に減らす。第５の行のスケーリング値は２であり、命令の種類は計数であって、したがって、結果値はパターン制約の成果の２倍、すなわち１２個である。
【００１８】
さらなる例が、第１０の行に与えられている。この行では、ベクトルビットサイズは３８４であり、ベクトル要素ビットサイズは１６である。これは、ベクトルレジスタによりサポートされる処理前のベクトル要素数は２４個であろうことを示すであろう。しかしながら、この行で適用されるパターン制約は、サポートされるベクトル計数は２の累乗であるべきである、というものであり、それゆえに、ビットサイズ１６のベクトル要素のサポートされる値最大数は１６個であると考えられる。スケーリング係数２が適用される。それゆえに、スケーリングされた部分的な結果値は３２個である。命令の種類は、スケーリングベクトル長クエリ命令のインクリメントの種類であり、スカラーレジスタＸｄ内に保持されたインクリメントに対する入力値は４８である。これは８０個という結果値（インクリメントされた値）をもたらす。
【００１９】
このスケールベクトル長クエリ命令がスケーリングされた計数命令であるとき、これは、サポートされる要素の数にスケーリング値を乗じたものに従った計数値を返す。スケールベクトル長クエリ命令がスケーリングされたインクリメント命令であるとき、これは、（ベクトルビットサイズ、ベクトル要素ビットサイズ、パターン制約、およびスケーリング値に依存して決定される値により）インクリメントされるべき入力値に従ったインクリメント結果値を返す。同様に、スケールベクトル長クエリ命令がスケーリングされたデクリメント命令であるとき、これは、デクリメントされるべき入力値に従ったデクリメント結果値を返す。
【００２０】
図４は、スケールベクトル長クエリ命令に応答して結果値を決定するための回路の例示的な実装を例示する。この実装は、結果値のテーブル２４へのインデックスを付けるテーブルアドレスデコーダ２２を含むルックアップテーブルの形をとる。スケーリングベクトル長クエリ命令からのパラメータ（フィールド）が、テーブルデコーダ２２に対する入力として供給される。これらのフィールドには、要素サイズ（２ビット）、適用される制約パターン（５ビット）、適用されるスケーリング値（３ビット）が含まれる。テーブルアドレスデコーダ２２は、特定の実装のための、すなわち実装された特定のベクトル長のための、固定された形式のものである。テーブルアドレスデコーダ２２は、それに供給された入力信号に応答して、スケーリングベクトル長クエリ命令がスケーリングインクリメント命令またはスケーリングデクリメント命令である場合に、インクリメントまたはデクリメント回路（加算器または減算器）に引き続きそれぞれ供給される結果値を結果値のテーブル２４から選択するために、１−ｈｏｔ出力を生成する。
【００２１】
図５は、スケーリングベクトル長クエリ命令の操作の論理的な流れを概略的に例示する流れ図である。実際にはこのような処理は典型的に並行して行われ、図５に例示される個別のステップは実際は並行して行われてもよいことが理解されるであろう。ステップ２６で、処理は、スケーリングベクトル長クエリ命令が受信されるまで待機する。次いで、ステップ２８は、指定されたベクトル要素サイズに関して、当該ベクトルレジスタ実装によりサポートされるベクトル要素の処理前の最大数を決定する。ステップ３０は、スケールベクトル長クエリ命令により指定された制約パターン（もしあれば）を適用する。ステップ３２は、２６で制約パターンを適用することにより決定された部分的な結果をスケーリングする。命令の種類が計数命令である場合、ステップ３６は、計数結果を宛先のレジスタに書き込む。命令の種類がインクリメントである場合、ステップ３８は、すでに保持されている宛先のレジスタの値を、ステップ３２で決定されたインクリメント値だけインクリメントし、インクリメントされた結果は、宛先のレジスタに書き込まれる。ステップ３４で決定された命令の種類がデクリメントである場合、ステップ４０は、宛先のレジスタの値を、ステップ３２で計算されたデクリメント値だけデクリメントし、結果を宛先のレジスタに書き込む。
【００２２】
図６は、使用され得る仮想マシン実装を例示する。上述の実施形態は、本発明を、当該技法をサポートする、装置および特定の処理ハードウェアを動作させるための方法に関して実装している一方で、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートするホストオペレーティングシステム５２０を動かすホストプロセッサ５３０上で動く。一般的に、妥当な速度で実行される仮想マシン実装を提供するには大型の強力なプロセッサが必要とされるが、このようなアプローチは、別のプロセッサのネイティブコードを互換性または再利用のために動かしたいというニーズが存在するときのような、特定の状況下において正当化され得る。仮想マシンプログラム５１０は、仮想マシンプログラム５１０によりモデル化されているデバイスである現実のハードウェアにより提供されるであろうアプリケーションプログラミングインターフェースと同じアプリケーションプログラミングインターフェースを、アプリケーションプログラム５００に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの相互作用をモデル化するために仮想マシンプログラム５１０を使用するアプリケーションプログラム５００内から実行することができる。
【００２３】
本明細書では特定の実施形態について説明してきたものの、本発明はそれらに限定されるものではないこと、ならびにそれらに対する多くの修正および追加が本発明の範囲内で行うことができることが理解されるであろう。例えば、以下の従属請求項の特徴は、本発明の範囲から逸脱することなしに、独立請求項の特徴と様々に組み合わせることができる。
【図１】
2018521422.tif 000003
【図２】
2018521422.tif 000004
【図３】
2018521422.tif 000005
【図４】
2018521422.tif 000006
【図５】
2018521422.tif 000007
【図６】
2018521422.tif 000008
【国際調査報告】
2018521422.tif 000009
2018521422.tif 000010
2018521422.tif 000011