(57)【要約】  データ処理装置、データ処理装置を動作させる方法、非一時的コンピュータ可読記憶媒体及び命令が提供される。命令は、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定する。命令に応答して制御信号が生成され、それにより処理回路機構が第１のソース・レジスタ及び第２のソース・レジスタ中の個々のデータ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する。第１のソース・レジスタ及び第２のソース・レジスタの各々は、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有しており、また、個々のデータ群は複数のデータ要素を含む。個々のデータ群のためのデータ処理演算のオペランドは、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である。ベクトルによる要素演算のための技法は、レジスタ幅の成長に応じて容易にスケーリングが可能である。
2020508514.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
複数のレジスタを有するレジスタ記憶回路機構と、
データ処理命令に応答して制御信号を生成する復号器回路機構であって、前記データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、前記第１のソース・レジスタ及び前記第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、前記復号器回路機構と、
前記制御信号に応答して、前記第１のソース・レジスタ及び前記第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構であって、個々の前記データ群のための前記データ処理演算のオペランドが、前記指標及び前記第２のソース・レジスタの前記データ群中の個々のデータ要素によって、前記第１のソース・レジスタの前記データ群中で識別される被選択データ要素である、前記処理回路機構と、
を備えた、データ処理装置。
【請求項２】
前記処理回路機構が、前記制御信号に応答して前記被選択データ要素の複数の例を複数のデータ演算回路に供給するデータ要素操作回路機構を備え、個々のデータ演算回路が、前記制御信号に応答して、前記第１のソース・レジスタ及び前記第２のソース・レジスタ中のそれぞれのデータ群に関して前記データ処理演算を実施する、請求項１に記載のデータ処理装置。
【請求項３】
前記復号器回路機構が、データ準備命令に応答して他の制御信号を生成し、前記データ準備命令が記憶場所及びターゲット・レジスタを指定し、
前記処理回路機構が、前記他の制御信号に応答して、前記定義済みのサイズを有する主体データ群項目を前記記憶場所から検索し、また、前記主体データ群項目の複製によって前記ターゲット・レジスタを充填する、
請求項１又は請求項２に記載のデータ処理装置。
【請求項４】
前記ターゲット・レジスタが前記第１のソース・レジスタである、請求項３に記載のデータ処理装置。
【請求項５】
前記レジスタ記憶回路機構が、前記整数倍数の指示を記憶するための制御レジスタを備える、請求項１から４までのいずれかに記載のデータ処理装置。
【請求項６】
前記復号器回路機構が、制御命令に応答して、前記整数倍数の前記指示を前記データ処理装置のための定義済みの最大値まで修正する、請求項５に記載のデータ処理装置。
【請求項７】
前記データ処理命令が前記複数のレジスタ中の結果レジスタをさらに指定し、
前記処理回路機構が、前記制御信号にさらに応答して、前記データ処理演算の前記結果を前記結果レジスタに適用する、
請求項１から６までのいずれかに記載のデータ処理装置。
【請求項８】
前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記結果レジスタに記憶する、請求項７に記載のデータ処理装置。
【請求項９】
前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記第２のソース・レジスタに適用する、請求項１から６までのいずれかに記載のデータ処理装置。
【請求項１０】
前記データ処理命令が前記複数のレジスタ中の少なくとも１つの他のソース・レジスタをさらに指定し、
前記処理回路機構が、前記制御信号に応答して、前記少なくとも１つの他のソース・レジスタ中の個々の前記データ群にさらに関して前記データ処理演算を実施し、それにより前記データ処理演算の前記結果を形成する前記それぞれの結果データ群を生成し、
個々の前記データ群のための前記データ処理演算のオペランドが、前記少なくとも１つの他のソース・レジスタの前記データ群中の個々のデータ要素をさらに含む、
請求項１から９までのいずれかに記載のデータ処理装置。
【請求項１１】
前記処理回路機構が、前記制御信号に応答して、前記データ処理演算の前記結果を前記少なくとも１つの他のソース・レジスタ中の先行する内容と累算する、請求項１０に記載のデータ処理装置。
【請求項１２】
前記データ処理演算が算術演算である、請求項１から１１までのいずれかに記載のデータ処理装置。
【請求項１３】
前記データ処理演算が乗算演算である、請求項１２に記載のデータ処理装置。
【請求項１４】
データ処理演算が、
少なくとも第１のデータ要素及び第２のデータ要素を前記第１のソース・レジスタ及び前記第２のソース・レジスタの各々から抽出することと、
少なくとも第１のデータ要素の対及び第２のデータ要素の対を互いに掛け合わせる乗算演算を実施することと、
前記乗算演算の結果を合計することと
を含むドット積演算である、請求項８に従属する場合は請求項１２に記載のデータ処理装置。
【請求項１５】
前記乗算演算が、第１のデータ要素の対、第２のデータ要素の対、第３のデータ要素の対及び第４のデータ要素の対を互いに掛け合わせることを含む、請求項１４に記載のデータ処理装置。
【請求項１６】
前記データ処理命令が、前記複数のレジスタ中の累算レジスタをさらに指定し、また、前記データ処理演算が、
前記累算器レジスタから累算器値をロードすることと、
前記乗算演算の前記結果と前記累算器値を合計することと、
前記合計した結果を前記累算器レジスタに記憶することと
をさらに含むドット積及び累算演算である、請求項１４又は請求項１５に記載のデータ処理装置。
【請求項１７】
前記データ処理演算が乗算−累算演算である、請求項８に従属する場合は請求項１２に記載のデータ処理装置。
【請求項１８】
前記第１のソース・レジスタ及び前記第２のソース・レジスタ中の個々の前記データ群中の前記データ要素が複素数を表すデータ値の対であり、また、前記データ処理演算が複素数の乗算−累算である、請求項１７に記載のデータ処理装置。
【請求項１９】
前記データ処理命令が回転パラメータをさらに指定し、前記処理回路機構が、前記回転パラメータに応答して、前記データ処理演算の対象になる前記データ値及びそれらの符号の被選択順列を使用して複素数の前記乗算−累算を実施する、請求項１８に記載のデータ処理装置。
【請求項２０】
前記データ処理演算が論理演算である、請求項１から１１までのいずれかに記載のデータ処理装置。
【請求項２１】
データ処理の方法であって、
データ処理命令を復号することにより制御信号を生成するステップであって、前記データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、前記第１のソース・レジスタ及び前記第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、更に、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成するステップと、
前記制御信号に応答して、前記第１のソース・レジスタ及び前記第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成するステップであって、個々の前記データ群のための前記データ処理演算のオペランドが、前記指標及び前記第２のソース・レジスタの前記データ群中の個々のデータ要素によって、前記第１のソース・レジスタの前記データ群中で識別される被選択データ要素である、前記結果データ群を生成するステップと、
を含む、データ処理の方法。
【請求項２２】
非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、前記プログラムが、少なくとも１つのデータ処理命令であって、
前記データ処理命令に応答して制御信号を生成することであって、前記データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、前記第１のソース・レジスタ及び前記第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成することと、
前記制御信号に応答して、前記第１のソース・レジスタ及び前記第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施することであって、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも１つのデータ処理命令を含み、個々の前記データ群のための前記データ処理演算のオペランドが、前記指標及び前記第２のソース・レジスタの前記データ群中の個々のデータ要素によって、前記第１のソース・レジスタの前記データ群中で識別される被選択データ要素である、前記データ処理演算を実施することとが、データ処理装置によって実行される、コンピュータ可読記憶媒体。
【請求項２３】
データ処理装置であって、
複数のレジスタにデータを記憶するための手段と、
データ処理命令を復号し、それにより制御信号を生成するための手段であって、前記データ処理命令がデータを記憶するための手段中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、前記第１のソース・レジスタ及び前記第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、前記制御信号を生成するための手段と、
前記制御信号に応答して、前記第１のソース・レジスタ及び前記第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それにより前記データ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段であって、個々の前記データ群のための前記データ処理演算のオペランドが、前記指標及び前記第２のソース・レジスタの前記データ群中の個々のデータ要素によって、前記第１のソース・レジスタの前記データ群中で識別される被選択データ要素である、前記結果データ群を生成するための手段と、
を備える、データ処理装置。
【請求項２４】
データ処理装置上で実行するコンピュータ・プログラムによって提供される仮想計算機であって、請求項１から２０までのいずれか一項又は２３に記載の前記データ処理装置に対応する命令実行環境を提供する仮想計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理に関する。詳細には本開示は、ベクトルによる要素（ｅｌｅｍｅｎｔ  ｂｙ  ｖｅｃｔｏｒ）演算を実施するデータ処理装置に関する。
【背景技術】
【０００２】
行列乗算演算を含み得る算術演算を実施するためには、場合によってはデータ処理装置が必要である。これらの演算は、様々な文脈において適用性を見出すことができる。このような行列乗算をサポートするために実現されることが場合によっては必要である１つの機能は、単一の要素とベクトル全体を結合する演算、例えば１つのベクトルのすべての要素に別のベクトルの単一の要素を掛け合わせる演算をサポートする能力である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながらこのような機能性を提供するための既存の技法は、大きいベクトルに良好にスケーリングしていない。
【課題を解決するための手段】
【０００４】
本明細書において説明される少なくとも１つの実例は、データ処理装置であって、複数のレジスタを有するレジスタ記憶回路機構と、データ処理命令に応答して制御信号を生成する復号器回路機構であって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、復号器回路機構と、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
【０００５】
本明細書において説明される少なくとも１つの実例は、データ処理の方法であって、データ処理命令を復号し、それにより制御信号を生成するステップであって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、ステップと、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する、ステップとを含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理の方法を提供する。
【０００６】
本明細書において説明される少なくとも１つの実例は、非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、プログラムが、少なくとも１つのデータ処理命令であって、データ処理装置によって実行されると、そのデータ処理命令に応答して制御信号を生成することであって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成すること、及び制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも１つのデータ処理命令を含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、コンピュータ可読記憶媒体を提供する。
【０００７】
本明細書において説明される少なくとも１つの実例は、データ処理装置であって、複数のレジスタにデータを記憶するための手段と、データ処理命令を復号し、それにより制御信号を生成するための手段であって、データ処理命令がデータを記憶するための手段中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成するための手段と、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
【０００８】
本発明は、単なる実例にすぎないが、添付の図面に示されている本発明の実施例を参照してさらに説明される。
【図面の簡単な説明】
【０００９】
【図１】本技法の様々な実例を具体化することができるデータ処理装置を示す略図である。
【図２】一実施例におけるデータ準備命令の使用を示す略図である。
【図３】図２の実施例に対する変形態様を示す略図である。
【図４Ａ】実例データ処理命令を示す略図である。
【図４Ｂ】一実施例におけるそのデータ処理命令の実行の実施態様を示す図である。
【図５Ａ】いくつかの実施例における、演算ユニットへのデータ要素の経路指定を提供することができる方法を示す略図である。
【図５Ｂ】いくつかの実施例における、演算ユニットへのデータ要素の経路指定を提供することができる方法を示す略図である。
【図６Ａ】図４Ａ及び図４Ｂを参照して考察されるデータ処理命令並びにそれらの実行の他の実例を示す略図である。
【図６Ｂ】図４Ａ及び図４Ｂを参照して考察されるデータ処理命令並びにそれらの実行の他の実例を示す略図である。
【図７Ａ】実例データ処理命令を示す略図である。
【図７Ｂ】一実施例におけるそのデータ処理命令の実行の実施態様を示す図である。
【図８】一実施例の方法に従って取られるステップのシーケンスを示す図である。
【図９Ａ】一実施例によるデータ処理命令の実行を示す略図である。
【図９Ｂ】このような命令の２つの実例を示す図である。
【図１０】図９Ｂのデータ処理命令の実行の実施例におけるいくつかの変形形態を示す略図である。
【図１１】一実施例における「ドット積」データ処理命令のための２つの１２８ビット・ソース・レジスタを有する、もっと複雑な実例を示す略図である。
【図１２】図１１の実施例に対する変形態様を示す図である。
【図１３】図１１及び図１２に示されている実例に対する他の変形態様を示す図である。
【図１４】一実施例の方法に従って取られるステップのシーケンスを示す図である。
【図１５Ａ】いくつかの実施例によって提供されるデータ処理命令の実行を示す略図である。
【図１５Ｂ】対応する実例命令を示す図である。
【図１６】単純な行列乗算演算の形態における図１５Ａの実施例の実例視覚化を示す図である。
【図１７】図１５Ａに示されている実例のより単純な変形態様であって、第１のソース・レジスタ及び第２のソース・レジスタの各々から２つのデータ要素しか誘導されない変形態様を示す図である。
【図１８】図１５Ａに示されている実例の別の変形態様であって、ソース・レジスタの各々からもっと多くのデータ要素が抽出される変形態様を示す図である。
【図１９】実施されるいくつかの特定の乗算演算のさらに詳細を与える、データ処理命令の実行の実例実施例を示す図である。
【図２０】データ処理命令の実行の実例実施例であって、２つのソース・レジスタの内容が２つの独立したレーンにデータ要素を含むものとして取り扱われる実例実施例を示す図である。
【図２１】一実施例の方法に従って取られるステップのシーケンスを示す図である。
【図２２】一実施例による仮想計算機実施態様を示す図である。
【発明を実施するための形態】
【００１０】
本明細書において説明される少なくとも１つの実例実施例は、データ処理装置であって、複数のレジスタを有するレジスタ記憶回路機構と、データ処理命令に応答して制御信号を生成する復号器回路機構であって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、復号器回路機構と、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する処理回路機構とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
【００１１】
したがって提供される命令は、第２のソース・レジスタ中の対応するデータ群からの被選択要素を使用して、第１のソース・レジスタ中の個々のデータ群のベクトル要素に対するデータ処理演算を実施させる。即時指標値を使用して、第１のソース・レジスタ中の個々の要素群の内側（即ちすべての群中の同じ要素位置）のデータ要素が選択される。言い換えると、命令は、要素の群の内側のベクトルによる要素演算を実施させ、また、ベクトル中の個々の群にわたって厳密に同じ演算（要素選択を含む）が複製される。この技法は容易にスケーリングが可能であるため、これは、とりわけレジスタ幅（即ちベクトル長）の成長に応じて、このようなベクトルによる要素演算の実施態様のための有効な機構を提供する。さらに、このようなグループ化されたベクトルによる要素命令は、一般に、処理されたデータ要素の選択及び複製は、実際にマイクロ演算実施態様が可能であるサイズに制限されるように定義され得る「データ群」レベルで定義され、且つ、実現されるため、等価法線ベクトル演算と比較して余計な待ち時間なしに、データ処理装置における単一のこのようなマイクロ演算として実現されることが期待され得ることに留意されたい。
【００１２】
データ処理装置は、このデータ処理命令の実行をサポートするために、詳細には指標によって第１のソース・レジスタのデータ群中で識別される被選択データ要素が操作され、且つ、第２のソース・レジスタのデータ群中の個々のデータ要素に適用される方法などの様々な方法で構成することができる。いくつかの実施例では、処理回路機構は、制御信号に応答して被選択データ要素の複数の例を複数のデータ演算回路に供給するデータ要素操作回路機構を備えており、個々のデータ演算回路は、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中のそれぞれのデータ群に関してデータ処理演算を実施する。
【００１３】
データ処理命令によって使用されるソース・レジスタは自由に指定することができ、また、本技法は、ソース・レジスタ中のデータ値が一致しなければならない制約をフォーマットに強制することはないが、本技法は、それにもかかわらず、予めソース・レジスタの内容に特定のフォーマットを取らせることにより、データ処理命令の実行が強化され得ることを確認した。したがっていくつかの実施例では、復号器回路機構は、記憶場所及びターゲット・レジスタを指定するデータ準備命令に応答して他の制御信号を生成し、また、処理回路機構は、該他の制御信号に応答して、定義済みのサイズを有する主体データ群項目を記憶場所から検索し、また、主体データ群項目の複製によってターゲット・レジスタを充填する。言い換えると、本技法は、別の命令、即ち指定された主体データ群項目を検索し、また、それをターゲット・レジスタの幅全体にわたって複製するようになされたデータ準備命令を提供する。ターゲット・レジスタは第１のソース・レジスタであってもよい。したがって第１のソース・レジスタの内容は、指標によって第１のソース・レジスタのデータ群中で識別される被選択データ要素が、後続するデータ処理命令の実行に先立って、第１のソース・レジスタのデータ群全体にわたるその位置で既に複製されているよう、データ準備命令によって予めセット・アップすることができる。
【００１４】
第１のソース・レジスタ及び第２のソース・レジスタの各々とデータ群の定義済みのサイズの間のサイズ比を定義している整数倍数（その定義済みのサイズの少なくとも２倍）は、様々に定義することができ、また、データ処理装置中で保持することができるが、いくつかの実施例では、レジスタ記憶回路機構は、整数倍数の指示を記憶するための制御レジスタを備えている。
【００１５】
さらに、本技法は、専用制御命令を提供してこの整数倍数の修正を許容することも可能であり、また、いくつかの実施例では、復号器回路機構は、制御命令に応答して、整数倍数の指示をデータ処理装置のための定義済みの最大値まで修正する。
【００１６】
データ処理演算の結果は様々な方法で使用することができるが、いくつかの実施例では、データ処理命令は、複数のレジスタ中の結果レジスタをさらに指定し、また、処理回路機構は、制御信号にさらに応答して、データ処理演算の結果を結果レジスタに適用する。処理回路機構は、制御信号に応答して、データ処理演算の結果を結果レジスタに記憶することができる。別法としては、処理回路機構は、制御信号に応答して、データ処理演算の結果を第２のソース・レジスタに適用することも可能である。言い換えると、第２のソース・レジスタは累算レジスタを提供することができる。
【００１７】
データ処理演算は、第１のソース・レジスタ及び第２のソース・レジスタの内容のみ（及び即時指標値）をそのオペランドとして取ることができるが、これらのオペランドに限定されることはなく、また、いくつかの実施例では、データ処理命令は、複数のレジスタ中の少なくとも１つの他のソース・レジスタをさらに指定し、処理回路機構は、制御信号に応答して、該少なくとも１つの他のソース・レジスタ中の個々の前記データ群にさらに関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成し、また、個々の前記データ群のためのデータ処理演算のオペランドは、上記少なくとも１つの他のソース・レジスタのデータ群中の個々のデータ要素をさらに含む。
【００１８】
この他のソース・レジスタは、データ処理演算における様々な役割を果たすことができる。いくつかの実施例では、処理回路機構は、制御信号に応答して、データ処理演算の結果を上記少なくとも１つの他のソース・レジスタ中の先行する内容と累算する。
【００１９】
データ処理演算は算術演算であってもよく、例えばデータ処理演算は乗算演算であってもよい。データ処理演算は、少なくとも第１のデータ要素及び第２のデータ要素を第１のソース・レジスタ及び第２のソース・レジスタの各々から抽出すること、少なくとも第１のデータ要素の対及び第２のデータ要素の対を互いに掛け合わせる乗算演算を実施すること、及び乗算演算の結果を合計することを含むドット積演算であってもよい。
【００２０】
いくつかの実施例では、乗算演算は、第１のデータ要素の対、第２のデータ要素の対、第３のデータ要素の対及び第４のデータ要素の対を互いに掛け合わせることを含む。
【００２１】
いくつかの実施例では、データ処理命令は、複数のレジスタ中の累算レジスタをさらに指定し、また、データ処理演算は、累算器レジスタから累算器値をロードすること、乗算演算の結果と累算器値を合計すること、及び合計した結果を累算器レジスタに記憶することをさらに含むドット積及び累算演算である。
【００２２】
いくつかの実施例では、データ処理演算は乗算−累算演算である。
【００２３】
いくつかの実施例では、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群中のデータ要素は、複素数を表すデータ値の対であり、また、データ処理演算は複素数の乗算−累算である。言い換えると、「複素対」（２つの個別のデータ値によって表される）は、説明されているベクトルによる要素演算が同じく複素数に適用され得るよう、本技法によってデータ要素として取り扱うことができる。したがって複素値に作用するデータ処理演算（例えば複素数の乗算累算）の対象となる複素要素を識別するために、対応する専用の命令を同じく提供することができる。
【００２４】
いくつかの実施例では、データ処理命令は回転パラメータをさらに指定し、処理回路機構は、回転パラメータに応答して、データ処理演算の対象になるデータ値及びそれらの符号の被選択順列を使用して複素数の乗算−累算を実施する。これは、データ処理命令によって実施することができる様々な複素数演算に柔軟性を付与し、また、例えば符号のない主体複素対データ値の提供を可能にし、さらに、複素対データ値の符号の回転順列毎にプログラマに直接利用可能である。
【００２５】
いくつかの実施例では、データ処理演算は論理演算である。
【００２６】
本明細書において説明される少なくとも１つの実例実施例は、データ処理の方法であって、データ処理命令を復号し、それにより制御信号を生成するステップであって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、ステップと、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施するステップであって、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する、ステップとを含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理の方法を提供する。
【００２７】
本明細書において説明される少なくとも１つの実例実施例は、非一時的方式でプログラムを記憶するコンピュータ可読記憶媒体であって、プログラムが、少なくとも１つのデータ処理命令であって、データ処理装置によって実行されると、該データ処理命令に応答して制御信号を生成することであって、データ処理命令が複数のレジスタ中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、また、個々のデータ群が複数のデータ要素を含む、制御信号を生成すること、及び制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成することになる少なくとも１つのデータ処理命令を含み、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、コンピュータ可読記憶媒体を提供する。
【００２８】
本明細書において説明される少なくとも１つの実例実施例は、データ処理装置であって、複数のレジスタにデータを記憶するための手段と、データ処理命令を復号し、それにより制御信号を生成するための手段であって、データ処理命令がデータを記憶するための手段中で、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定し、第１のソース・レジスタ及び第２のソース・レジスタの各々が、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有し、個々のデータ群が複数のデータ要素を含む、制御信号を生成するための手段と、制御信号に応答して、第１のソース・レジスタ及び第２のソース・レジスタ中の個々の前記データ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成するための手段とを備え、個々の前記データ群のためのデータ処理演算のオペランドが、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である、データ処理装置を提供する。
【００２９】
本明細書において説明される少なくとも１つの実例実施例は、データ処理装置上で実行するコンピュータ・プログラムによって提供される仮想計算機を提供し、前記仮想計算機は、上で言及したデータ処理装置のうちの１つに対応する命令実行環境を提供する。
【００３０】
次に、いくつかの特定の実施例について、図を参照して説明する。
【００３１】
図１は、本技法の様々な実例を具体化することができるデータ処理装置を略図で示したものである。データ処理装置は処理回路機構１２を備えており、処理回路機構１２は、処理回路機構１２が実行する一連の命令に応答して、データ項目に対するデータ処理演算を実施する。これらの命令は、データ処理装置がアクセスを有しているメモリ１４から、当業者に周知の方法で検索され、この目的のためにフェッチ回路機構１６が提供されている。フェッチ回路機構１６によって検索された他の命令は復号回路機構１８に引き渡され、復号回路機構１８は、処理回路機構１２の構成及び動作の様々な態様を制御するようになされる制御信号を生成する。一組のレジスタ２０及びロード／ストア・ユニット２２が同じく示されている。図１が表している一般的な構成は当業者には周知であり、そのさらに詳細な説明は、単に簡潔にするだけの目的で省略されている。図１に示されている実施例におけるレジスタ２０は、整数倍数２４サイズ及びデータ群２５サイズのうちの一方又は両方のための記憶装置を備えることができ、その使用については、いくつかの特定の実施例を参照して以下でより詳細に説明される。命令を実行するために処理回路機構１２によって要求されるデータ、及びこれらのデータ処理命令の結果として生成されるデータ値は、ロード／ストア・ユニット２２によってメモリ１４に書き込まれ、また、メモリ１４から読み出される。通常、図１におけるメモリ１４は、本技法の命令を記憶することができるコンピュータ可読記憶媒体の実例と見なすことができ、典型的には命令の定義済みのシーケンスの一部（「プログラム」）と見なすことができ、処理回路機構は、次にそのプログラムを実行することに同じく留意されたい。しかしながら処理回路機構は、ＲＡＭ、ＲＯＭ、ネットワーク・インタフェースを介した、等々などの様々な異なるソースからこのようなプログラムにアクセスすることができる。本開示は、処理回路機構１２が実行することができる様々な新規な命令を記述しており、また、以下の図は、これらの命令の実行をサポートする、等々のために、これらの命令の性質、データ処理回路機構における変形形態のさらなる説明を提供している。
【００３２】
図２は、データ準備命令３２の使用を略図で示したものである。データ準備命令３２は、演算コード部分３４（それをデータ準備命令として定義する）、レジスタ指定子３６及び記憶場所指定子３８を含む。この実施例のデータ処理装置がこの命令を実行すると、データ群４０が識別されて、メモリ３０（指定された記憶場所によって参照され、また、例えば定義されたデータ群サイズに応じて複数のアドレスにわたって展開する）に記憶されることになり、また、（この図解されている実施例では）２つのデータ要素ｂ０及びｂ１（図には４２及び４４のラベルが振られている）を含む。さらに、この命令を実行することにより、このデータ群４０が指定されたレジスタ中にコピーされ、また、さらに、それぞれデータ要素ｂ０及びｂ１で構築されているデータ群４６、４８、５０及び５２を反復することによって図２に示されているように、そのレジスタの幅全体にわたって複製されることになる。
【００３３】
図３は、図２の実施例に対する変形態様を略図で示したものであり、このようなデータ準備命令によって異なるサイズのデータ群をコピーし、複製することができることを立証している。図３の図解されている実例では、命令６０は同じ構造を有しており、即ち演算コード６２、レジスタ指定子６４及び指定された記憶場所６６を含んでいる。命令６０を実行することにより、記憶場所６６がアクセスされ、また、データ群６８がその記憶場所に記憶され（即ち、例えばその記憶場所から始まって、所定の数のデータ要素にわたって展開される）、データ要素ｃ０、ｃ１、ｃ２及びｃ３（図には７０、７２、７４及び７６のラベルが振られている）を含むことになる。このデータ群６８は、ターゲット・レジスタの幅全体にわたってコピーされ、複製され、また、このデータ群７８、８０、８２及び８４のコピーを反復することによって示されている。図１に戻ると、データ群サイズは、レジスタ２０中の専用記憶場所２５に保持されている値によって予め定義することができることに留意されたい。最後に、図２及び図３の実例は、何らかの特定のデータ群幅又は複製の倍数に限定されないことを認識されたい。しかしながら当代の文脈に有用な１つの実例のみを考察するためには、複製は１２８ビットの幅全体にわたって生じ得る。英国のＣａｍｂｒｉｄｇｅのＡＲＭ（登録商標）社によって提供されるＳｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＶＥ）の文脈では、この幅はＳＶＥベクトル・グラニュール・サイズに対応している。ＡＲＭ（登録商標）社によって同じく提供されるＡＳＭＩＤ命令の文脈では、これはＡＳＩＭＤレジスタのサイズに対応している。したがって本技法によれば、２つの６４ビットデータ要素、４つの３２ビットデータ要素、８つの１６ビットデータ要素又は１６個の８ビットデータ要素の群タイプのローディング及び複製が可能である。
【００３４】
図４Ａは実例データ処理命令を略図で示したものであり、また、図４Ｂは、一実施例におけるそのデータ処理命令の実行の実施態様を示したものである。このデータ処理命令は、演算コード１０２、第１のレジスタ指定子１０４、第２のレジスタ指定子１０６、指標指定子１０８、及び任意選択の変形態様として結果レジスタ指定子１１０を含む。図４Ｂは、この命令を実行することにより、レジスタＡ及びレジスタＢ中のデータ群がアクセスされることになることを図解したものであり、レジスタＡにおける個々のデータ群中のすべてのデータ要素、即ちこの実例では第１のデータ群１１２中のデータ要素ａ０及びａ１、並びに第２のデータ群１１４中のデータ要素ａ２及びａ３がアクセスされ、一方、レジスタＢでは、データ群１１６及び１１８の各々における被選択データ要素即ちデータ要素ｂ１のみがアクセスされる。したがってアクセスされたこれらのデータ要素は、図４Ｂに演算ユニット１２０、１２２、１２４及び１２６によって表されている処理回路機構の演算回路機構に引き渡され、演算回路機構は、レジスタＢから獲得されたデータ要素及びレジスタＡから獲得されたデータ群に関してデータ処理演算を適用する。上で言及したように、命令１００は結果レジスタを指定することができ（識別子１１０によって）、また、これらの演算の結果は、結果レジスタ１２８のそれぞれのデータ要素に書き込まれる。実際には、いくつかの実施例では、結果レジスタ１２８及びレジスタＡは、例えばそのレジスタの内容に関して乗算−累算演算を実施することができる１つの同じレジスタであってもよい（図４にダッシュ矢印によって概略的に示されているように）。図４Ｂに示されているレジスタは、実例命令によってアクセスされる部分を越えた潜在的展開（両側に）として故意に図解されていることに同じく留意されたい。これは、いくつかの実施態様（上で言及したＳｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＶＥ）などの）では、ベクトル・サイズを指定することができないことに対応している。例えばＳＶＥ実例における２つの６４ビット・データ要素（ｂ０及びｂ１）の群に対する命令の演算を描写しているものとして図４Ｂを捕らえると、行先のためのベクトル・サイズは、１２８ビットから最大２０４８ビット（１２８ビットの増分で）までのいずれであってもよい。
【００３５】
図４Ｂに示されている実例は、レジスタＢの内容から使用される被選択（被反復）データ要素の特定の実例を与えたものであるが、一般的には、レジスタＢ中の任意のデータ要素を演算ユニット１２０〜１２６のうちの任意のユニットのための入力として使用するための能力を有する多目的フレキシブル・データ処理装置が提供されることが明らかに好ましいことを認識されたい。図５Ａ及び図５Ｂは、これを達成することができる２つの方法を略図で示したものである。図５Ａは、一組の演算ユニット１４０、１４２、１４４及び１４６（例えば融解（ｆｕｓｅｄ）乗算−加算ユニットであってもよい）に接続された、例えばレジスタ中のそれぞれのデータ要素を記憶することができる一組の記憶構成要素１３０、１３２、１３４及び１３６を示したものである。記憶ユニット１３０〜１３６と関数ユニット１４０〜１４６の間の接続は、図５Ａには、直接接続と、マルチプレクサ１４８が介在する接続の両方が示されている。したがってこの構成によれば、個々の記憶ユニット１３０〜１３６のうちの任意の記憶ユニットの内容を、個々のそれぞれの関数ユニットへの第１の入力として、関数ユニット１４０〜１４６のうちの任意の関数ユニットに提供することができ、また、記憶ユニット１３０〜１３６の内容を関数ユニット１４０〜１４６の第２の入力としてそれぞれ提供することができる。関数ユニット１４０〜１４６によって実施された処理の結果は記憶ユニット１５０〜１５６に転送され、記憶ユニット１５０〜１５６は、例えばそれぞれのデータ要素をレジスタ中に記憶することができる。マルチプレクサ１４８及び関数ユニット１４０〜１４６の各々は、上で言及した入力の柔軟性のある選択を可能にするために、図解されている制御信号によって制御される。
【００３６】
図５Ｂは、図５Ａの構成に対する代替構成を略図で示したものであり、記憶ユニット１６０、１６２、１６４及び１６６の各々は、それぞれの制御信号によって個々に制御される関数ユニット１７０、１７２、１７４及び１７６の各々に直接接続されており、また、関数ユニット１７０、１７２、１７４及び１７６の結果は、それぞれの記憶ユニット１８０、１８２、１８４及び１８６に引き渡される。図５Ｂによって得られる手法は、図５Ｂの実例のマルチプレクサ１４８を使用する必要性を回避し、また、マルチプレクサ１４８の使用に関連する遅延を回避するが、より複雑な配線の代価が必要である。したがって図５Ａ及び図５Ｂの実例は、いずれも、とりわけ関連するデータ要素の数が成長する場合に、入力記憶ユニット、演算ユニット及び出力記憶ユニットの、完全に柔軟性があり、且つ、構成可能なセットの実現を模索する際に生じ得る複雑性を例証している。例えば図５Ａの実例を取り上げ、また、入力記憶ユニットの数を２倍にし、演算ユニット及び出力記憶ユニットをそれぞれ８つにすると、８倍の入力マルチプレクサが必要になることになる。一方、図５Ｂの手法を取ったこのような８幅実施態様は、個々の入力記憶ユニットから個々の演算ユニットまで８つの経路を必要とすることになり、即ち合計６４個の経路が必要であり、さらには個々の演算ユニットは、８つの異なる入力を受け取り、且つ、それらの間を選択することができなければならない。したがってレジスタ幅全体にわたるデータ部分（例えばデータ群）を再使用する本技法の実施例によって取られている手法は、必要な制御ユニットへの入力の多様性及び複雑性に制限を課すことができることが理解されよう。しかしながら、さらに、上で言及したＳＶＥ／ＡＳＩＭＤ文脈では、図４Ａのグループ化されたベクトルによる要素命令は、選択及び複製がＳＶＥベクトル・グラニュール内に留まり、また、ＡＳＩＭＤは、これを１２８ビット内で実施する機構を既に有している（例えば「ＦＭＬＡ（要素による）」命令を使用して）ため、等価法線ベクトル演算と比較すると、余計な待ち時間がない単一のマイクロ演算として実現可能であることが期待され得ることに留意されたい。したがって図４Ａに示されている命令は、法線ベクトル演算が後続する一連の個別の複写（ＤＵＰ）命令よりも有効であることが期待され得る。
【００３７】
図６Ａ及び図６Ｂは、図４Ａ及び図４Ｂを参照して考察された実例のためのデータ処理命令の２つの他の実例を略図で示したものである。図６Ａの実例では、命令２００は、演算コード２０２、第１のレジスタ指定子２０４、第２のレジスタ指定子２０６、即時指標値２０８及び結果レジスタ指定子２１０を含む。図６Ａの下の部分は、この命令２００の実行を略図で示したものであり、レジスタＢの反復副部分（データ群）内の被指定データ要素（指標１）が選択され、また、レジスタＡのそれぞれのデータ群によって表されたベクトルがこのデータ要素に掛け合わされ、それにより結果レジスタの内容を含むそれぞれの結果データ群が生成される。図６Ａでは、それぞれのデータ要素とデータ群の間で実施される演算は、上記の実例は、これが乗算であるものとして与えられているが、他の演算も可能であり、企図されていることを示す包括的演算記号
【数１】
2020508514.tif 000003
によって示されている。
【００３８】
本技法は、１つのベクトルのみを指定するこのようなデータ処理命令に限定されず、図６Ｂは、ある実例を示したものであり、演算コード２２２、第１のレジスタ指定子２２４、第２のレジスタ指定子２２６、第３のレジスタ指定子２２８及び指標指定子２３０を含むデータ処理命令２２０が提供される。図６Ｂの下の部分は、図６Ａに示されている下の部分と同様の方法で、第１のレジスタ（Ｂ）中の被選択データ要素（ｂ１）がレジスタＡ及びＣから獲得されたデータ群（ベクトル）と結合され、また、結果値が生成される様子を示したものである。単に変形態様を例証する目的にすぎないため、図６Ｂの実例における結果レジスタは命令２２０の中では指定されず、どちらかと言えばデフォルト（所定の）結果レジスタがこの目的のために一時的に使用されている。さらに、構成要素の組合せは、この場合も包括的演算子記号
【数２】
2020508514.tif 000004
によって図６Ｂに示されているが、この場合も、この演算は、実行される特定の命令に応じて様々な形態を取ることができ、また、これは実際に乗算演算であってもよいが、任意の他のタイプの算術演算（加算、減算、等々）であってもよく、或いは論理演算（ＡＤＤ、ＸＯＲ、等々）であってもよいことを認識されたい。
【００３９】
図７Ａは、別の実例データ処理命令を略図で示したものであり、また、図７Ｂは、一実施例におけるそのデータ処理命令の実行の実施態様を示したものである。このデータ処理命令は、複素数のためのベクトルによる要素演算をサポートするために提供され、ここではＦＣＭＬＡ（融解複素乗算−累算：ｆｕｓｅｄ  ｃｏｍｐｌｅｘ  ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）命令と呼ばれている。図７Ａに示されているように、実例ＦＣＭＬＡ命令２２０は、演算コード２２２、回転指定子２２４、第１のレジスタ（Ａ）指定子２２６、第２のレジスタ（Ｂ）指定子２２８、指標指定子２３０及び累算レジスタ指定子２３２を含む。図７Ｂは、この命令を実行することにより、レジスタＡ及びレジスタＢ中のデータ群がアクセスされ、この命令の中のデータ群が多数の複素要素を定義することを例証している。複素要素は要素の対によって表される（図７Ｂのラベル「複素対」を参照されたい）。図７Ｂの実例では、レジスタＢの複素対は（ｂ３、ｂ２）及び（ｂ１、ｂ０）であり、また、複素対（ｂ３、ｂ２）が選択されている。レジスタＡの複素対は、（ａ７、ａ６）、（ａ５、ａ４）、（ａ３、ａ２）及び（ａ１、ａ０）である。レジスタＡ及びＢから選択された複素対（レジスタＡからのすべての複素対及び指標２３０によって識別されたレジスタＢのデータ群からの被選択複素対）は、複素融解乗算−累算（ＣＦＭＡ：ｃｏｍｐｌｅｘ  ｆｕｓｅｄ  ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）ユニット２３４、２３６、２３８、２４０に引き渡され、レジスタＡからの個々の複素対は、それぞれＣＦＭＡユニットの各々への１つの入力を形成し、一方、レジスタＢ中の１つのデータ群からの被選択複素対は、ＣＦＭＡユニット２３４及び２３６への別の入力を形成し、また、レジスタＢ中の次のデータ群からの他の被選択複素対は、ＣＦＭＡユニット２３８及び２４０への別の入力を形成する。複素融解乗算−累算演算のそれぞれの結果は、指定された累算レジスタ中のそれぞれの複素対として累算され、累算された結果は、それぞれ、それぞれのＣＦＭＡユニットの各々への第３の入力を形成する。回転パラメータ２２４（任意選択で命令の中で指定される）は、演算を以下のように変更する２ビット制御値である（第１の対のみを示しており、（ｃ１、ｃ０）は演算前の累算器値である）。
【００４０】
【表１】
2020508514.tif 000005
【００４１】
図８は、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、データ・ローディング（準備）命令が復号されるステップ２５０で開始され、また、ステップ２６０で対応する制御信号が生成される。次にステップ２７０で、これらの制御信号によって、指定されたデータ群がメモリの命令指定場所からロードされ（例えばこの実例のための図２及び図３を参照されたい）、また、制御レジスタは指定されたサイズを有する。次にステップ２８０で、制御信号によってさらに、ロードされたデータ群が指定されたターゲット・レジスタ（データ・ローディング（準備）命令の中で指定される）のベクトル幅全体にわたって複製される。次にデータ・ローディング命令の実行が完了する。フローはステップ２９０へ進行し、ベクトルによる要素データ処理命令が復号される。次にステップ３００で対応する制御信号が生成され、また、引き続いてステップ３１０で、命令の中で指定された第１のレジスタにおける個々のデータ群中の指標付き要素と、命令の中で指定された第２のレジスタの個々のデータ群中の個々のデータ要素との間で、ベクトルによる要素命令によって指定された演算が次に実施される。
【００４２】
図９Ａは、本技法による異なるデータ処理命令の実行を略図で示したものである。図９Ｂは、このような命令の２つの実例を示したものであり、第１の３２０は、演算コード３２２、第１のレジスタ指定子３２４、第２のレジスタ指定子３２６及び（任意選択の）出力レジスタ指定子３２８を含む。図９Ｂに示されている第２の実例データ処理命令３３０は、演算コード３３２、出力レジスタ指定子３３４及び累算器レジスタ指定子３３６を含む。これらは図９Ａを参照して説明される。データ処理命令によって指定された第１のソース・レジスタ及び第２のソース・レジスタが図９Ａの一番上に示されており、レーンにグループ化されたデータ要素部分にそれぞれ細分されている。データ処理装置（即ち復号器回路機構によって生成される制御信号の制御下にある処理回路機構）は、データ処理命令に応答して、第１のソース・レジスタ及び第２のソース・レジスタの各々から一組のデータ要素を検索する。図９Ａに示されている実例では、一組の４つのデータ要素が第１のソース・レジスタ及び第２のソース・レジスタの個々のレーンから検索される。これらは、乗算演算を実施するようになされる演算ユニット３４０、３４２、３４４及び３４６で対にされる。これらの乗算演算の結果は、加算ユニット３４８で合計され、最後に、このようにして生成された結果値が出力レジスタの対応するレーンに書き込まれる。言い換えると、「ドット積」演算が実施される。図９Ａにおけるレーンのラベル付けは、４つの乗算ユニット３４０〜３４６及び加算ユニット３４８は、データ処理装置の処理回路機構の中に提供された一組のこのようなユニットのみを表したものであることを例証したものであり、したがってこれらは、データ処理装置がレジスタ毎に処理することができるレーンの各々と一致するまで反復される。個々のレジスタにおけるレーンの数は、図９Ａには故意に限定的にならないように図解されており、レーンの数は、データ要素の相対幅、個々のレーンにおけるデータ要素の数及び利用可能なレジスタ幅に応じて自由に定義することができることに対応している。したがって命令は、累算器幅における同じ幅演算と同じように挙動することが分かる（例えば３２ビット幅レーンにおける８ビット値（即ち整数）の実例では、命令は、３２ビット整数演算と同じように挙動する）。しかしながら個々のレーン内では、３２×３２乗算が実施される代わりに、３２ビット・ソース・レーンは、４つの全く異なる８ビット値で構築されていると見なされ、ドット積演算がこれらの２つの「ミニ−ベクトル」全体にわたって実施される。次に、結果が累算器値から対応する３２ビット・レーン中に累算される。図は、単一の３２ビット・レーン内の演算を明示的に描写したものにすぎないことは認識されよう。１２８ビット・ベクトル長の一実例を取ると、命令は、３２個の演算（１６個の乗算及び１６個の加算）を有効に実施することになり、これは、匹敵する当代の命令よりも３〜４倍稠密である。英国のＣａｍｂｒｉｄｇｅのＡＲＭ（登録商標）社によって提供されるＳｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＶＥ）などのより長いベクトルを許容するアーキテクチャ中に実現されると、これらのより長いベクトルは、それに応じて有効演算計数を増やすことになる。さらに、３２ビット・レーン幅の特定の実例が示されているが、多くの異なる幅の組合せ（入力及び出力の両方における）も可能であり、例えば１６ビット×１６ビット−＞６４ビット、又は１６ビット×１６ビット−＞３２ビットであることを認識されたい。「要素による」形態（例えば単一の３２ビット・レーンがオペランドのうちの１に対して複製される）も同じく提案される。図９Ａで出力レジスタを第２のレジスタに結合しているダッシュ矢印は、第２のレジスタは実際には出力レジスタであってもよく、このレジスタの内容に関して累算演算を実施することができることを概略的に表したものである。図９Ｂの考察に戻ると、ここでは２つの全く異なる命令が図解されていることに留意されたい。通常、図解されている第１の命令は、図９Ａに図解されている演算のすべてを実施させることができるが、図９Ｂに図解されている第１の命令が乗算及び加算演算のみを実施させ、また、結果を出力レジスタにもたらし、且つ、結果を累算器レジスタに適用する後続する累算演算を、図解されている、とりわけそのタスクを目的とした第２の命令によって実施することができる実施例も同じく提供される。
【００４３】
図１０は、図９Ｂに示されているデータ処理命令の実行の実施例におけるいくつかの変形形態を略図で示したものである。ここでは、単に例証を明確にするためだけの理由で、２つのソース・レジスタ３５０及び３５２の各々の中でアクセスされるデータ要素の数が２つに低減されている。したがって２つの乗算ユニット３５４及び３５６のみが提供されており（レーン毎に）、また、１つの加算ユニット３５８が提供されている（レーン毎に）。実行される特定のデータ処理命令に応じて、「ドット積」演算の結果を指定された出力レジスタ３６０に書き込むことができ（指定されている場合）、或いは別法としては累算レジスタ３６２に書き込むことも可能である（そのように指定されている場合）。累算レジスタが定義されている後者の場合、この累算レジスタの内容は、進行中の累算を実施することができるよう、加算ユニット３５８への追加入力として捕らえることができる。
【００４４】
図１１は、２つの１２８ビット・レジスタ３８０及び３８２が上で言及した「ドット積」データ処理演算命令のうちの１つのためのソース・レジスタである、より複雑な実例を略図で示したものである。これらのソース・レジスタ３８０及び３８２の各々は、４つの独立したレーン（レーン０〜３）によって取り扱われ、また、これらのレーンのそれぞれの内容は、２つのソース・レジスタからの同じレーンのそれぞれの内容が隣接する記憶バッファにもたらされるよう、一時記憶バッファ３８４〜３９８の中に取得される。個々の記憶バッファ内では、次に内容データ要素（この実例ではそれぞれ４つのデータ要素）がレーン４００、４０２、４０４及び４０６の各々に提供されている一組の４つの乗算ユニットにそれぞれの入力を提供する。これらの乗算ユニットの出力は、次に、それぞれの加算ユニット４０８、４１０、４１２及び４１４に供給され、また、これらの加算ユニットの各々の出力は、累算レジスタ４１６のそれぞれの対応するレーンの中に引き渡される。累算レジスタ４１６のそれぞれのレーンは、加算ユニット（累算器）４０８〜４１４の中に第２のタイプの入力を提供する。図１２は、図１１の基本構成と同じ基本構成を示したものであり、実際、同じ副構成要素は同じ参照数表示を使用して表されており、ここでは繰り返して説明されない。図１２と図１１の相違は、１２８ビット・レジスタ３８０（ソース・レジスタ）の４つのレーンの各々の内容は使用されるが、第２の１２８ビット・ソース・レジスタ３８２からは第１のレーン内容のみが使用され、また、この内容が一時記憶ユニット３８６、３９０、３９４及び３９８の各々に複写されることである。（唯一の）レーンとして選択される、この実例ではソース・レジスタ３８２からの内容を提供するこのレーンは命令によって指定される。この実例例証のために選択されたこの特定のレーン（レーン０）に関連する有意性は存在せず、ソース・レジスタ３８２の任意の他のレーンを同じように指定することも可能であることは認識されよう。選択されるレーンの指定は、例えば図４Ａの実例命令に示されているように、命令の中に指標値を設定することによって実施される。
【００４５】
図１１及び図１２に示されている実例に対する他の変形態様は図１３に示されている。この場合も、ここでは同じ参照数表示が与えられた同じ副構成要素が再び使用されており、簡潔にするために繰り返して説明されない。図１１及び図１２の実例に対する図１３に示されている相違は、ソース・レジスタ３８０及び３８２の各々の４つのレーンは、それら自体が２つのデータ群（本明細書においては「チャンク」とも呼ばれ、図にはチャンク０及びチャンク１のラベルが振られている）の中で取り扱われていることである。これは、レジスタ３８０の内容が処理される方法には影響せず、その４つのレーンの内容は、上で説明したように一時記憶ユニット３８４、３８８、３９２及び３９６に転送される。しかしながら単一のレーン内容の抽出及び複写は、図１２の実例で紹介したように、ここでは、レジスタ３８２のレーン０の内容が複製されて、一時記憶バッファ３９４及び３９８に転送され、一方、チャンク１中のレーン２の内容が複写されて、一時記憶バッファ３８６及び３９０の中に転送されるよう、データ群毎を基本として（「チャンク毎」を基本として）実施される。図１３に示されている演算は、より包括的に例証されている図４Ｂの特定の実例と見なすことができ、図４Ｂの「演算」は、ここでは、説明されたドット積演算を含む４つの処理ユニット１２０〜１２６によって実施されていることに留意されたい。この場合も、この例証実例において選択された特定のレーン（個々のチャンクの「第１の」レーンとしてレーン２及び０）に関連する有意性は存在せず、これらのレーンは、例えば図４Ａの実例命令に示されているように、命令の中に指標値を設定することによって指定されている。最後に、図１３に図解されているデータ処理命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図２及び図３に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることに留意されたい。
【００４６】
図１４は、データ処理命令を実行して、図９Ａ〜図１３を参照して上で考察したドット積演算などのドット積演算を実施する際に、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、命令が復号されるステップ４３０で開始され、また、ステップ４４０で対応する制御信号が生成される。次にステップ４５０で、複数のデータ要素が命令の中で指定された第１のソース・レジスタ及び第２のソース・レジスタからレーン毎を基本として抽出され、また、ステップ４６０で、ドット積演算の第１の対を実施するために、第１のソース・レジスタ及び第２のソース・レジスタからのデータ要素のそれぞれの対が個々のレーンの中で互いに掛け合わされる。次にステップ４７０で、この場合もレーン毎を基本としてそれぞれの乗算演算の結果が１つに加算され、また、同じく命令の中で指定された入力累算器レジスタから検索された累算器値に加えられる（この実例では）。
【００４７】
図１５Ａは、いくつかの実施例によって提供されるデータ処理命令の実行を略図で示したものである。図１５Ｂは、対応する実例命令を示したものである。この実例命令５００は、演算コード５０２、第１のソース・レジスタ指定子５０４、第２のソース・レジスタ指定子５０６及び一組の累算レジスタ指定子５０８を含む。図１５Ａの実例の中で実現されている第１のソース・レジスタ５１０及び第２のソース・レジスタ５１２は、図の一番上に示されており、データ処理命令が実行されると、それに応答してこれらのソース・レジスタからデータ要素が抽出される。すべて（４つ）のデータ要素が第１のソース・レジスタ５１０から個別に抽出され、一方、第２のソース・レジスタ５１２のすべての内容を構築している４つのデータ要素はブロックとして抽出される。第２のソース・レジスタ５１２の内容は、４つの演算ユニットの各々、即ち融解乗算−加算（ＦＭＡ：ｆｕｓｅｄ  ｍｕｌｔｉｐｌｙ−ａｄｄ）ユニット５１４、５１６、５１８及び５２０に引き渡される。第１のソース・レジスタ５１０から抽出された４つのデータ要素の各々は、ＦＭＡユニット５１４〜５２０のうちのそれぞれのＦＭＡユニットに引き渡される。ＦＭＡユニット５１４及び５２０の各々は、図解されているようにそれぞれの制御信号によって制御される。したがって図１５Ａの実例におけるデータ処理命令を実行することにより、データ処理回路機構（４つのＦＭＡユニットによって表されている）は、４つの要素によるベクトル乗算／累算演算を同時に実施することになる。本技法は４つの多様性に限定されず、これは、このような当代の処理装置で典型的に利用することができるロード：計算比に対して良好に一致することが分かっていることに留意されたい。ＦＭＡユニットの出力は、命令の中で指定された一組の累算レジスタのうちのそれぞれのレジスタに適用される（図１５Ｂの項目５０８を参照されたい）。さらに、これらの４つの累算レジスタ５２２、５２４、５２６及び５２８の内容は、累算がこれらのレジスタの各々の内容に対して実施されるよう、ＦＭＡユニット５１４〜５２０の各々への別の入力を形成する。
【００４８】
図１６は、単純な行列乗算実例を表す、図１５Ａの実例の実例視覚化を示したものであり、主体行列Ａ及び主体行列Ｂが互いに掛け合わされて結果行列Ｃを生成する。このための準備において、行列Ａの列（陰が施されている）はレジスタｖ０の中にロードされ、また、行列Ｂの行（陰が施されている）はレジスタｖ２の中にロードされている。結果行列Ｃのための累算器はレジスタｖ４〜ｖ７の中に記憶されている。行列Ａからロードされた値が列として描写されているが、行列は、個々のソース・アレイからの隣接するベクトル・ロードを実施することができるよう、容易に置換され、及び／又は交互配置されることに留意されたい。この文脈では、行列乗算はＯ（ｎ３）演算であり、したがって処理のための行列データを準備する補助タスクはＯ（ｎ２）演算であり、したがって十分に大きいｎに対しては無視し得る負担であることに留意されたい。示されている実例に対応する命令は、ＦＭＡ４  ｖ４−ｖ７、ｖ２、ｖ０［０−３］として表すことが可能である。ここではＦＭＡ４はこの命令のラベル（又は等価的に演算コード）を表しており、一方、ｖ４−ｖ７は一組の累算レジスタであり、ｖ２は、全内容が取得されるソース・レジスタであり、一方、ｖ０は、一組のデータ要素（指標付き０〜３）が取得されるソース・レジスタである。この命令を実行すると、４つの演算が実施される。
ｖ４  ＋＝ｖ２＊ｖ０［０］
ｖ５  ＋＝ｖ２＊ｖ０［１］
ｖ６  ＋＝ｖ２＊ｖ０［２］及び
ｖ７  ＋＝ｖ２＊ｖ０［３］
【００４９】
図１７は、図１５Ａに示されている実例のより単純なバージョンを表したものであり、この実例では２つのデータ要素のみが第１のソース・レジスタ５４０及び第２のソース・レジスタ５４２の各々から誘導されている。レジスタ５４２から抽出された両方のデータ要素は、ＦＭＡユニット５４４及び５４６の各々に引き渡され、一方、レジスタ５４０からの第１のデータ要素はＦＭＡユニット５４４に引き渡され、また、第２のデータ要素はＦＭＡユニット５４６に引き渡される。累算レジスタ５４８及び５５０の内容は、それぞれのＦＭＡユニットの各々への他の入力を提供し、また、累算結果は、個々のそれぞれの累算レジスタに適用される。それとは対照的に、図１８は、もっと多くのデータ要素がソース・レジスタの各々から抽出される実例を図解したものであり、これら（この実例では８つ）は、ソース・レジスタ５６０及び５６２の各々から抽出される。レジスタ５６２の全内容はＦＭＡユニット５６４〜５７８の各々に提供され、一方、レジスタ５６０からの選択されたそれぞれのデータ要素は、他の入力として提供される。乗算−加算演算の結果は、それぞれの累算レジスタ５８０〜５９４の中で累算される。
【００５０】
図１９は、一実例において実施されるいくつかの特定の乗算演算のさらに詳細を与える実例を示したものである。ここでは２つのソース・レジスタｖ０及びｖ２は、２つの全く異なるデータ群の中でそれぞれ取り扱われている。レジスタｖ０の２つのデータ群は、被選択データ要素が全体にわたって複製されるレジスタの部分を同じく表しており、図１９の実例ではこれは個々の部分の「第１の」データ要素、即ちそれぞれ要素［０］及び［４］である。被選択データ要素は、指標によって命令の中で指定することができる。したがって図１９に示されているデータ演算の第１のステップで、レジスタｖ０のこれらの２つのデータ群のデータ要素が図に示されているように個々の部分の幅全体にわたって複製される。次にこれらは４つの乗算器６００、６０２、６０４及び６０６への入力を提供し、一方、他の入力はレジスタｖ２の内容によって提供される。次にｖ２のそれぞれのデータ要素とｖ０のそれぞれのデータ要素との乗算が実施され、また、結果がターゲット・レジスタｖ４〜ｖ７に適用され、個々の累算レジスタのデータ群毎にラベルが振られた特定の計算によって示されているように、これらの４つの累算レジスタ中への２つのデータ群への再分割が維持される。図１９に図解されているデータ処理命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図２及び図３に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることに留意されたい。
【００５１】
図２０は、２つのソース・レジスタ６２０及び６２２の内容が２つの独立したレーン（レーン０及びレーン１）にデータ要素を含むものとして取り扱われる実例を示したものである。個々のレーン内では、２つの副部分が画定され、また、内容のこの「レーン化」は、計算全体を通して、即ちＦＭＡユニット６２４、６２６、６２８及び６３０を通して維持され、また、最後に累算レジスタ６３２及び６３４の中にもたらされる。
【００５２】
図２１は、図１５Ａから図２０の実例に関して説明したデータ処理命令などのデータ処理命令を処理する際に、一実施例の方法に従って取られるステップのシーケンスを示したものである。フローは、データ処理命令が復号されるステップ６５０で開始され、また、ステップ６５２で対応する制御信号が生成される。次にステップ６５４で、Ｎ個のデータ要素がデータ処理命令の中で指定された第１のソース・レジスタから抽出され、一方、ステップ６５６で、Ｎ個のデータ要素がデータ処理命令の中で指定された第２のソース・レジスタの内容によって乗算される。次にステップ６５８で、これらの乗算演算のＮ個の結果値がデータ処理命令の中で指定されたＮ個のそれぞれの累算レジスタの内容に適用される。以上の説明に鑑みて、図２１に関して説明した命令の実行、また、同様に図１４に関して説明した命令の実行に先立って、ソース・レジスタの内容を適切に準備するために、図２及び図３に示されているような、また、上で考察したようなデータ準備命令などのデータ準備命令を有効に実行することができることは認識されよう。
【００５３】
図２２は、使用することができる仮想計算機実施態様を図解したものである。上で説明した実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法によって一般に本技法を実現しているが、いわゆるハードウェア・デバイスの仮想計算機実施態様を提供することも同じく可能である。これらの仮想計算機実施態様は、典型的には仮想計算機プログラム７１０をサポートするホスト・オペレーティング・システム７２０を走らせるホスト・プロセッサ７３０上で走る。これには、合理的な速度で実行する仮想計算機実施態様をサポートするために、場合によってはより強力なプロセッサを提供する必要があるが、このような手法は、互換性又は再使用の理由で別のプロセッサに固有のコードを走らせることが望ましい場合などの特定の状況において正当化され得る。仮想計算機プログラム７１０は、アプリケーション・プログラム７００にアプリケーション・プログラム・インタフェースを提供し、アプリケーション・プログラム・インタフェースは、仮想計算機プログラム７１０によってモデル化されるデバイスである現実ハードウェアによって提供されることになるアプリケーション・プログラム・インタフェースと同じアプリケーション・プログラム・インタフェースである。したがって上で考察したプロセッサ状態チェック命令の１つ又は複数の実例を含むプログラム命令は、仮想計算機プログラム７１０を使用してアプリケーション・プログラム７００内から実行することができ、それにより仮想計算機ハードウェアとのそれらの相互作用をモデル化することができる。
【００５４】
簡潔に総合的に要約すると、データ処理装置、データ処理装置を動作させる方法、非一時的コンピュータ可読記憶媒体及び命令が提供される。命令は、第１のソース・レジスタ、第２のソース・レジスタ及び指標を指定する。命令に応答して制御信号が生成され、それにより処理回路機構は、第１のソース・レジスタ及び第２のソース・レジスタ中の個々のデータ群に関してデータ処理演算を実施し、それによりデータ処理演算の結果を形成するそれぞれの結果データ群を生成する。第１のソース・レジスタ及び第２のソース・レジスタの各々は、データ群の定義済みのサイズの少なくとも２倍の整数倍数であるサイズを有しており、また、個々のデータ群は複数のデータ要素を含む。個々のデータ群のためのデータ処理演算のオペランドは、指標及び第２のソース・レジスタのデータ群中の個々のデータ要素によって、第１のソース・レジスタのデータ群中で識別される被選択データ要素である。ベクトルによる要素演算のための技法は、レジスタ幅の成長に応じて容易にスケーリングが可能である。
【００５５】
本出願においては、「…するように構成された」或いは「するようになされた」という語は、装置の要素が定義された演算を実施するための構成能力を有していることを意味するべく使用されている。この文脈においては、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味している。例えば装置は、定義された演算を提供する専用ハードウェアを有することができ、或いはプロセッサ又は他の処理デバイスは、関数を実施するようにプログラムすることができる。「するように構成された」又は「するようになされた」は、定義された演算を提供するために何らかの方法で装置要素を変更する必要があることをほのめかしているわけではない。
【００５６】
以上、例証実施例について、本明細書において添付の図面を参照して詳細に説明したが、本発明はこれらの厳密な実施例に限定されないこと、また、当業者には、添付の特許請求の範囲で定義されている本発明の範囲を逸脱することなく、様々な変更、追加及び修正を加えることができることを理解されたい。例えば本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組合せを実施することができる。
【図１】
2020508514.tif 000006
【図２】
2020508514.tif 000007
【図３】
2020508514.tif 000008
【図４Ａ】
2020508514.tif 000009
【図４Ｂ】
2020508514.tif 000010
【図５Ａ】
2020508514.tif 000011
【図５Ｂ】
2020508514.tif 000012
【図６Ａ】
2020508514.tif 000013
【図６Ｂ】
2020508514.tif 000014
【図７Ａ】
2020508514.tif 000015
【図７Ｂ】
2020508514.tif 000016
【図８】
2020508514.tif 000017
【図９Ａ】
2020508514.tif 000018
【図９Ｂ】
2020508514.tif 000019
【図１０】
2020508514.tif 000020
【図１１】
2020508514.tif 000021
【図１２】
2020508514.tif 000022
【図１３】
2020508514.tif 000023
【図１４】
2020508514.tif 000024
【図１５Ａ】
2020508514.tif 000025
【図１５Ｂ】
2020508514.tif 000026
【図１６】
2020508514.tif 000027
【図１７】
2020508514.tif 000028
【図１８】
2020508514.tif 000029
【図１９】
2020508514.tif 000030
【図２０】
2020508514.tif 000031
【図２１】
2020508514.tif 000032
【図２２】
2020508514.tif 000033
【国際調査報告】
2020508514.tif 000034
2020508514.tif 000035