(57)【要約】  ある特定の実施形態では、方法は、プロセッサにおいてベクトル命令を実行することを含む。ベクトル命令は、複数の要素を含むベクトル入力を含む。ベクトル命令を実行するステップは、第1の出力として複数の要素の第1の要素を提供するステップを含む。ベクトル命令を実行するステップはさらに、複数の要素の第1の要素および第2の要素に対して算術的演算を実行して、第2の出力要素を提供するステップを含む。ベクトル命令を実行するステップはさらに、第1の出力および第2の出力を出力ベクトルに記憶するステップを含む。
2016530631.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにおいてベクトル命令を実行するステップを備える方法であって、前記ベクトル命令が複数の要素を含むベクトル入力を備え、前記ベクトル命令を実行するステップが、
第1の出力として前記複数の要素の第1の要素を提供するステップと、
前記複数の要素の前記第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力を提供するステップと、
前記第1の出力および前記第2の出力を出力ベクトルに記憶するステップと
を備える、方法。
【請求項２】
前記ベクトル命令を実行するステップがさらに、
前記複数の要素の前記第1の要素、前記第2の要素、および第3の要素に対して第2の算術的演算を実行して、第3の出力を提供するステップと、
前記第3の出力を前記出力ベクトルに記憶するステップとを備える、請求項1に記載の方法。
【請求項３】
前記ベクトル命令を実行するステップがさらに、前記出力ベクトルの異なる出力要素に複数の出力の各々を記憶するステップを備え、前記複数の出力が前記第1の出力および前記第2の出力を含む、請求項1に記載の方法。
【請求項４】
前記ベクトル命令を実行するステップがさらに、前記プロセッサの単一の実行サイクルの間に、前記出力ベクトルに前記第1の出力および前記第2の出力を記憶するステップを備える、請求項1に記載の方法。
【請求項５】
前記複数の要素が順次的な順序で記憶され、前記ベクトル命令を実行するステップがさらに、前記複数の要素の特定の要素および前記複数の要素の1つまたは複数の他の要素に対して第2の算術的演算を実行して特定の出力を生成するステップを備え、前記1つまたは複数の他の要素が前記順次的な順序において前記特定の要素よりも順序的に前にある、請求項1に記載の方法。
【請求項６】
前記ベクトル入力の第1のサイズが前記出力ベクトルの第2のサイズと同じである、請求項5に記載の方法。
【請求項７】
N個の出力のN番目の出力が前記複数の要素の各要素の合計に等しい、請求項6に記載の方法。
【請求項８】
前記ベクトル命令を実行するステップがさらに、前記第1の要素を前記第1の出力として提供する前に前記複数の要素にマスクを適用するステップを備える、請求項1に記載の方法。
【請求項９】
前記ベクトル命令を実行するステップが、前記第1の出力および前記第2の出力を含む複数の出力を生成するステップを含み、前記マスクを適用するステップが、前記マスクの対応するマスク値を条件として、前記複数の出力を生成する際に使用するための前記複数の要素の特定の要素に対して0値を提供するステップを備える、請求項8に記載の方法。
【請求項１０】
前記マスクが前記ベクトル命令によって特定される、請求項8に記載の方法。
【請求項１１】
前記ベクトル命令を実行するステップがさらに、マスクを前記出力ベクトルに適用するステップを備える、請求項1に記載の方法。
【請求項１２】
前記ベクトル命令を実行するステップがさらに、前記マスクに基づいて1つまたは複数の出力が前記出力ベクトルに記憶されるのを防ぐステップを備える、請求項11に記憶の方法。
【請求項１３】
前記ベクトル命令を実行するステップがさらに、前記ベクトル命令が複素数演算と関連付けられるとき、
前記第1の出力の第1の実数副要素および前記第1の出力の第1の虚数副要素を生成するステップと、
前記第2の出力の第2の実数副要素および前記第2の出力の第2の虚数副要素を生成するステップとを備える、請求項1に記載の方法。
【請求項１４】
削減ツリーを備えるプロセッサを備える装置であって、複数の要素を含むベクトル入力を特定するベクトル命令の実行の間に、前記削減ツリーが、
第1の出力要素として前記複数の要素の第1の要素を提供し、
前記複数の要素の前記第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力要素を提供し、
前記第1の出力要素および前記第2の出力要素を出力ベクトルに記憶する
ように構成される、装置。
【請求項１５】
前記削減ツリーが、複数の算術的演算ユニット、複数の入力、および複数の出力を備え、前記削減ツリーが、前記複数の要素の前記第1の要素、前記第2の要素、および第3の要素に対して第2の算術的演算ユニットを実行して、第3の出力要素を提供するように構成される、請求項14に記載の装置。
【請求項１６】
前記複数の算術的演算ユニットの特定の算術的演算ユニットが、前記特定の算術的演算ユニットの出力を飽和させるように構成される飽和論理回路に結合される、請求項15に記載の装置。
【請求項１７】
前記プロセッサがさらに、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットの1つまたは複数の算術的演算ユニットを選択的に有効にするように構成される制御論理を備え、前記第1の出力要素および前記第2の出力要素が、前記1つまたは複数の算術的演算ユニットを介して提供される、請求項15に記載の装置。
【請求項１８】
前記制御論理が、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットのサブセットが0入力を受け取ることを可能にするように構成され、前記0入力が、論理0に等しい論理値を有する、請求項17に記載の装置。
【請求項１９】
前記制御論理が、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットの少なくとも1つの算術的演算ユニットを迂回するように構成される、請求項17に記載の装置。
【請求項２０】
前記削減ツリーが、インターリーブされた方式で動作する複数の累積的な並列削減ネットワークへと論理的に区分され、前記複数の累積的な並列削減ネットワークが、2つの32ビットの累積的な削減ネットワークまたは4つの16ビットの累積的な削減ネットワークを含む、請求項14に記載の装置。
【請求項２１】
第1の出力として複数の要素の第1の要素を提供するための手段であって、ベクトル命令が前記複数の要素を含むベクトル入力を示す、手段と、
前記複数の要素の前記第1の要素および第2の要素に基づいて、第2の出力を生成するための手段と、
前記第1の出力および前記第2の出力を出力ベクトルに記憶するための手段とを備える、装置。
【請求項２２】
前記第2の出力を飽和させるための手段をさらに備え、飽和させるための前記手段が生成するための前記手段に結合される、請求項21に記載の装置。
【請求項２３】
プロセッサによって実行されると、前記プロセッサに、
第1の出力要素として複数の要素の第1の要素を提供することであって、前記複数の要素がベクトル命令のベクトル入力に含まれる、提供することと、
前記複数の要素の前記第1の要素および第2の要素に対して算術的演算を実行して、第2の出力を提供することと、
前記第1の出力および前記第2の出力を出力ベクトルへ記憶することとを行わせる命令を備える、非一時的コンピュータ可読媒体。
【請求項２４】
前記命令がさらに、プロセッサに、前記ベクトル命令に基づいて、前記1つまたは複数の要素を使用する前に前記複数の要素の1つまたは複数の要素を補足させて、前記第1の出力および前記第2の出力を提供させるように実行可能である、請求項23に記載の非一時的コンピュータ可読媒体。
【請求項２５】
複数の入力、複数の算術的演算ユニット、および複数の出力を備える削減ツリーを備え、プロセッサが、第1のセクショングループ化サイズを含む第1の命令の実行の間に、および第2のセクショングループ化サイズを含む第2の命令の実行の間に、前記削減ツリーを使用するように構成され、前記削減ツリーが、複数の出力要素を同時に生成するように構成される、装置。
【請求項２６】
前記複数の算術的演算ユニットが複数の加算器を備える、請求項25に記載の装置。
【請求項２７】
前記第1の命令の実行の間に、前記第1のセクショングループ化サイズに基づいて前記複数の算術的演算ユニットの第1のサブセットを選択的に有効にし、
前記第2の命令の実行の間に、前記第2のセクショングループ化サイズに基づいて前記複数の算術的演算ユニットの第2のサブセットを選択的に有効にするように構成される、制御論理をさらに備える、請求項25に記載の装置。
【請求項２８】
前記削減ツリーが前記プロセッサの算術論理演算装置(ALU)に含まれ、前記削減ツリーが前記複数の入力の入力の数に基づく段階の数を有する、請求項25に記載の装置。
【請求項２９】
前記複数の算術的演算ユニットが算術的演算ユニットの複数の行を含み、算術的演算ユニットの前記複数の行の各行が、前記プロセッサに含まれるパイプラインの対応する段階と関連付けられる、請求項28に記載の装置。
【請求項３０】
前記削減ツリーの段階の前記数が、入力の前記数の2を底とする対数に等しい、請求項28に記載の装置。
【請求項３１】
出力ベクトルに前記複数の出力要素を記憶する前に前記出力ベクトルを回転させるように構成される回転ユニットをさらに備え、前記回転ユニットがローテータまたはバレルベクトルシフタを備える、請求項25に記載の装置。
【請求項３２】
1つまたは複数の飽和回路をさらに備え、前記1つまたは複数の飽和回路の特定の飽和回路が、特定の算術的演算ユニットから特定の出力を受け取り、前記特定の出力に基づいて飽和させられた値を出力するように構成される、請求項25に記載の装置。
【請求項３３】
前記削減ツリーが、累積的なベクトルの算術的命令の実行の間に、複数の累積的な算術的演算を使用して前記複数の出力要素を同時に生成するように構成される、請求項25に記載の装置。
【請求項３４】
プロセッサにおいて、セクショングループ化サイズを含むベクトル命令を受け取るステップであって、前記プロセッサが削減ツリーを備え、前記削減ツリーが複数の入力、複数の算術的演算ユニット、および複数の出力を含む、ステップと、
前記セクショングループ化サイズを決定するステップと、
前記削減ツリーを使用して前記ベクトル命令を実行して、前記セクショングループ化サイズに基づいて前記複数の出力を同時に生成するステップとを備え、前記削減ツリーが、複数の異なるセクショングループ化サイズとともに使用するために選択的に構成可能である、方法。
【請求項３５】
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるかどうかを判定するステップと、
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されないという判定に応答して、前記セクショングループ化サイズに基づいて前記構成を変更するステップとをさらに備える、請求項34に記載の方法。
【請求項３６】
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるかどうかを判定するステップと、
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるという判定に応答して、前記削減ツリーを使用して前記第1のベクトル命令を実行するステップとをさらに備える、請求項35に記載の方法。
【請求項３７】
前記ベクトル命令を実行するステップが、
前記セクショングループ化サイズを有する1つまたは複数のグループへと前記複数の入力をグループ化するステップと、
前記1つまたは複数のグループに対して1つまたは複数の算術的演算を実行して前記複数の出力を生成するステップとを備え、前記ベクトル命令が前記1つまたは複数の算術的演算を示す、請求項34に記載の方法。
【請求項３８】
前記複数の入力の各入力が、対応する実数部分および対応する虚数部分を含み、前記複数の出力の各出力要素が、インターリーブされた方式で、1つまたは複数の実数部分に対して第1の算術的演算を実行し、1つまたは複数の虚数部分に対して第2の算術的演算を実行することによって生成される、請求項37に記載の方法。
【請求項３９】
前記複数の入力および前記複数の出力が、実数値、虚数値、またはこれらの組合せを表す、請求項34に記載の方法。
【請求項４０】
複数の入力要素を含むベクトル命令を実行するステップを備え、前記ベクトル命令を実行するステップが、
入力要素の第1のセットを形成するように前記複数の入力要素の第1のサブセットをグループ化するステップと、
入力要素の第2のセットを形成するように前記複数の入力要素の第2のサブセットをグループ化するステップと、
第1の算術的演算を入力要素の前記第1のセットに対して実行するステップと、
第2の算術的演算を入力要素の前記第2のセットに対して実行するステップと、
出力レジスタの内容を回転させるステップと、
前記出力レジスタの前記内容を回転させた後で、前記第1の算術的演算の第1の結果および前記第2の算術的演算の第2の結果を前記出力レジスタに挿入するステップとを備える、方法。
【請求項４１】
前記ベクトル命令が単一のベクトル命令であり、前記複数の入力の各々が入力ベクトルに記憶され、前記第1の結果および前記第2の結果が同時に生成される、請求項40に記載の方法。
【請求項４２】
前記第1の結果および前記第2の結果を前記出力レジスタに挿入するステップが、前記出力レジスタの対応する内容を上書きするステップを備え、前記出力レジスタの前記内容を回転させるステップが、前記ベクトル命令に基づいて前記出力レジスタの前記内容を選択的に回転させるステップを備える、請求項40に記載の方法。
【請求項４３】
入力要素の前記第1のセットの要素の第1の数および入力要素の前記第2のセットの要素の第2の数が、前記ベクトル命令によって特定されるセクショングループ化サイズに基づく、請求項40に記載の方法。
【請求項４４】
要素の前記第1の数および要素の前記第2の数が同じである、請求項43に記載の方法。
【請求項４５】
前記第1の結果が前記出力レジスタの第1の出力要素に挿入され、前記第2の結果が前記出力レジスタの第2の出力要素に挿入され、前記第1の出力要素および前記第2の出力要素が前記出力レジスタの異なる出力要素である、請求項40に記載の方法。
【請求項４６】
前記ベクトル命令を実行するステップがさらに、前記複数の入力要素をグループ化する前に前記複数の入力要素にマスクを適用するステップを備える、請求項40に記載の方法。
【請求項４７】
前記ベクトル命令を実行するステップがさらに、前記内容を回転させた後で前記出力レジスタにマスクを適用するステップを備える、請求項40に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その内容全体が参照によって本明細書に明示的に組み込まれる、2013年8月14日に出願された共同所有の米国非仮特許出願第13/967,191号からの優先権を主張する。
【０００２】
本開示は全般に、ベクトルの算術的削減に関する。
【背景技術】
【０００３】
技術の進歩は、より小さく強力なコンピューティングデバイスをもたらした。たとえば、小さく、軽量で、ユーザにより容易に持ち運ばれる、ポータブルワイヤレス電話、携帯情報端末(PDA)、タブレットコンピュータ、およびページングデバイスのようなワイヤレスコンピューティングデバイスを含む、種々のポータブルパーソナルコンピューティングデバイスが現在では存在する。多くのそのようなコンピューティングデバイスは、その中に組み込まれる他のデバイスを含む。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダー、およびオーディオファイルプレーヤも含み得る。また、そのようなコンピューティングデバイスは、インターネットにアクセスするために使用され得るウェブブラウザアプリケーション、および、スチルカメラまたはビデオカメラを利用してマルチメディア再生機能を提供するマルチメディアアプリケーションのようなソフトウェアアプリケーションを含む、実行可能命令を処理することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
多くのそのようなコンピューティングデバイスは、ワイヤレス送信と、大量の反復的な計算と関連付けられる他の活動とを処理する際に使用するための、ベクトルプロセッサを含む。ベクトルプロセッサは、一次元の配列またはベクトルとして編成され得る複数の入力に対して演算を実行する命令を実行する。ベクトル命令の実行は、複数の入力に対する特定の演算の実施を可能にする。たとえば、従来のベクトルの加算削減命令を実行することは、複数の入力に基づいて単一の合計値を計算する。整関数および累積密度関数のような他の演算は、1つまたは複数の部分的な合計(たとえば、複数の入力のうちのすべてではないものの1つまたは複数の合計)に加えて、その単一の合計を使用することができる。出力および1つまたは複数の部分的な合計を生成するために、複数のベクトル命令が実行される。従来のように複数のベクトル命令を実行することは、単一のベクトルの加算削減命令を実行して単一の合計を生成し出力することと比較して、メモリの使用量および電力消費を増大させる。
【課題を解決するための手段】
【０００５】
累積的なベクトルの算術的削減命令を実行する方法が開示される。累積的なベクトルの算術的削減命令は、漸進的な加算演算のような複数の漸進的な算術的演算が入力ベクトルに対して実行されることを可能にするために、プロセッサにおいて実行され得る。入力ベクトルは、順次的な順序で記憶された複数の入力要素を含み得る。累積的なベクトルの算術的削減命令を実行することは、複数の出力要素の出力ベクトルをもたらし得る。各出力要素は、入力ベクトルの対応する入力要素および入力ベクトルの任意の順序的に前の入力要素に算術的演算を適用した結果に基づき得る。したがって、複数の出力値は、複数の入力要素の複数の部分的な合計、さらには、複数の入力要素のすべての合計に対応し得る。入力要素または出力要素の少なくとも1つは、1つまたは複数の入力要素が累積的なベクトルの算術的削減演算に含まれることを防ぐために、または、1つまたは複数の出力要素が累積的なベクトルの算術的削減の結果を記憶することを防ぐために、マスキングされ得る。
【０００６】
削減ツリーは、区分されたベクトルの算術的削減命令のセクショングループ化サイズに基づいて、区分されたベクトルの算術的削減命令を実行するように、選択的に構成され得る。削減ツリーは、複数の行へと並べられる複数の加算器を含み得る。複数の行の1つまたは複数の加算器は、セクショングループ化サイズに基づいて選択的に有効にされてよく、複数の出力値は、選択的に有効にされた加算器によって生成されてよい。複数の出力値は、入力の1つまたは複数のグループに対して算術的(たとえば、加算)演算を実行することによって、同時に生成され得る。各グループは、選択的に有効にされた加算器の結果としてのセクショングループ化サイズを有し得る。したがって、単一の削減ツリーは、複数の区分されたベクトルの算術的削減命令を実行するように構成されてよく、ここで各命令は異なるセクショングループ化サイズを有する。
【０００７】
ある特定の実施形態では、方法は、プロセッサにおいてベクトル命令を実行するステップを含む。ベクトル命令は、複数の要素を含むベクトル入力を含む。ベクトル命令を実行するステップは、第1の出力として複数の要素の第1の要素を提供するステップを含む。ベクトル命令を実行するステップはさらに、複数の要素の第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力要素を提供するステップを含む。ベクトル命令を実行するステップはさらに、第1の出力および第2の出力を出力ベクトルに記憶するステップを含む。
【０００８】
別の特定の実施形態では、装置は、削減ツリーを含むプロセッサを含む。複数の要素を含むベクトル入力を特定するベクトル命令の実行の間、削減ツリーは、第1の出力要素として複数の要素の第1の要素を提供するように構成される。削減ツリーはさらに、複数の要素の第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力要素を提供するように構成される。削減ツリーはさらに、第1の出力要素および第2の出力要素を出力ベクトルに記憶するように構成される。
【０００９】
別の特定の実施形態では、装置は、第1の出力として複数の要素の第1の要素を提供するための手段を含む。ベクトル命令は、複数の要素を含むベクトル入力を示す。装置はさらに、複数の要素の第1の要素および第2の要素に基づいて、第2の出力を生成するための手段を含む。装置はさらに、第1の出力および第2の出力を出力ベクトルに記憶するための手段を含む。
【００１０】
別の特定の実施形態では、非一時的コンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに、第1の出力として複数の要素の第1の要素を提供させ、複数の要素の第1の要素および第2の要素に対して算術的演算を実行させて第2の出力を提供させ、第1の出力要素および第2の出力要素を出力ベクトルへ記憶させる、命令を含む。複数の要素は、ベクトル命令によって示されるベクトル入力に含まれる。
【００１１】
別の特定の実施形態では、装置は、複数の入力と、複数の加算器と、複数の出力とを含む、削減ツリーを含む。プロセッサは、第1のセクショングループ化サイズを含む第1の命令の実行および第2のセクショングループ化サイズを含む第2の命令の実行の間に、削減ツリーを使用するように構成される。削減ツリーは、複数の出力要素を同時に生成するように構成される。
【００１２】
別の特定の実施形態では、方法は、プロセッサにおいて、セクショングループ化サイズを含むベクトル命令を受け取るステップを含む。プロセッサは削減ツリーを含む。削減ツリーは、複数の入力と、複数の算術的演算ユニットと、複数の出力とを含む。方法はさらに、セクショングループ化サイズを決定するステップを含む。方法はさらに、削減ツリーを使用してベクトル命令を実行して、セクショングループ化サイズに基づいて複数の出力を同時に生成するステップを含む。削減ツリーは、複数の異なるセクショングループ化サイズとともに使用するために選択的に構成可能である。
【００１３】
さらなる特定の実施形態では、方法は、複数の入力要素を含むベクトル命令を実行するステップを含む。ベクトル命令を実行するステップは、入力要素の第1のセットを形成するように複数の入力要素の第1のサブセットをグループ化するステップを含む。ベクトル命令を実行するステップはさらに、入力要素の第2のセットを形成するように複数の入力要素の第2のサブセットをグループ化するステップを含む。ベクトル命令を実行するステップはさらに、入力要素の第1のセットに対して第1の算術的演算を実行するステップと、入力要素の第2のセットに対して第2の算術的演算を実行するステップとを含む。ベクトル命令を実行するステップはさらに、出力レジスタの内容を回転させるステップと、出力レジスタの内容を回転させた後で、第1の算術的演算の第1の結果および第2の算術的演算の第2の結果を出力レジスタに挿入するステップとを含む。
【００１４】
開示される実施形態の少なくとも1つによって提供される1つの具体的な利点は、単一の累積的なベクトルの算術的削減命令の実行の間に複数の部分的な結果を生成するように構成される削減ツリーである。単一の累積的なベクトルの算術的削減命令を実行することで、複数のベクトル命令を実行して同様の出力を生成するときと比較して、メモリにおいて使用する空間をより少なくして、電力消費を減らすことができる。開示される実施形態の少なくとも1つによって提供される別の具体的な利点は、第1のセクショングループ化サイズを有する第1の命令の実行の間、および第2のグループ化サイズを有する第2の命令の実行の間に、単一の削減ツリーを使用するように構成され得るプロセッサである。単一の削減ツリーを使用することで、異なるセクショングループ化サイズを有する複数の命令の実行の間に複数の削減ツリーを使用するときと比較して、プロセッサのチップ面積および電力消費を減らすことができる。
【００１５】
本開示の他の態様、利点、および特徴は、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲という以下のセクションを含む、出願の全体の検討の後に明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】累積的なベクトルの算術的削減命令を実行する例示的な処理の図である。
【図２】ベクトル命令を実行するためのシステムの例示的な実施形態のブロック図である。
【図３】削減ツリーの例示的な実施形態のブロック図である。
【図４】削減ツリーの例示的な実施形態のブロック図である。
【図５】削減ツリーの例示的な実施形態のブロック図である。
【図６】削減ツリーの例示的な実施形態のブロック図である。
【図７】削減ツリーの一部分の例示的な実施形態のブロック図である。
【図８】削減ツリーの別の例示的な実施形態のブロック図である。
【図９】区分されたベクトルの算術的削減命令を実行する例示的な処理の図である。
【図１０】回転区分されたベクトルの算術的削減命令を実行する例示的な処理の図である。
【図１１Ａ】マスクを含む累積的なベクトルの算術的削減命令を実行する例示的な処理の図である。
【図１１Ｂ】マスクを含む累積的なベクトルの算術的削減命令を実行する例示的な処理の図である。
【図１２】第1の累積的なベクトルの算術的削減命令を実行する方法の例示的な実施形態のフローチャートである。
【図１３】削減ツリーを使用してベクトル命令を実行する方法の例示的な実施形態のフローチャートである。
【図１４】回転区分されたベクトルの算術的削減命令を実行する方法の例示的な実施形態のフローチャートである。
【図１５】削減ツリーを含むポータブルデバイスのブロック図である。
【発明を実施するための形態】
【００１７】
図1を参照すると、ベクトル命令を実行する例示的な処理の図が開示され、全体的に100として示される。ベクトル命令は、例示的な累積的なベクトルの算術的削減命令101のような、累積的なベクトルの算術的削減命令を含み得る。累積的なベクトルの算術的削減命令101は、図2を参照して説明されるような、パイプライン化されたベクトルプロセッサのようなプロセッサにおいて実行され得る。プロセッサは、複数の要素102を含む入力ベクトル122を受け取ることができる。プロセッサは、入力ベクトル122を処理し、出力ベクトル120を生成することができる。出力ベクトル120(たとえば、出力ベクトル120に記憶された複数の出力要素)は、累積的なベクトルの算術的削減命令101に基づき得る。たとえば、累積的なベクトルの算術的削減命令101を実行することは、複数の要素102のある特定の要素を、入力ベクトル122の順次的な順序においてその特定の要素より順序的に前にある複数の要素102の1つまたは複数の他の要素に加算することによって(たとえば、加算は累積的であり得る)、ある特定の出力を生成することができる。
【００１８】
複数の要素102(たとえば、入力ベクトル122)および出力ベクトル120はN個の要素を含んでよく、Nは1よりも大きな整数である。複数の要素102は、第1の要素104(s0)、第2の要素106(s1)、第3の要素108(s2)、およびN番目の要素110(s(N-1))を含み得る。複数の要素102は、「s0, s1, s2, ...s(N-1)」のような順次的な順序で記憶されてよく、ここでs0は順次的な順序において最初の順次的な要素であり、s(N-1)は最後の順次的な要素である。4つの要素が示されるが、複数の要素102の中の要素の数(たとえば、N)は4より大きくてもよく、または小さくてもよい。ある特定の実施形態では、複数の要素102を順次的な順序で並べるために、累積的なベクトルの算術的削減命令101の実行の前に、入力ベクトル122を使用してベクトル並べ替え命令が実行される。
【００１９】
累積的なベクトルの算術的削減命令101を実行することは、出力ベクトル120に記憶される複数の出力要素(たとえば、複数の出力値)を生成することができる。出力ベクトル120は、入力ベクトル122と同じ数(たとえば、N個)の要素を有し得る。累積的なベクトルの算術的削減命令101を実行するステップは、N個の出力要素を提供するステップを含み得る。N個の出力要素は、出力ベクトル120に記憶され得る。たとえば、第1の出力要素112、第2の出力要素114、第3の出力要素116、およびN番目の出力要素118は、出力ベクトル120に記憶され得る。出力要素112〜118は、出力ベクトル120に同時に記憶され得る。たとえば、第1の出力要素112および第2の出力要素114は、累積的なベクトルの算術的削減命令101を実行するプロセッサの単一の実行サイクルの間に出力ベクトル120に記憶され得る。
【００２０】
複数の出力要素112〜118(たとえば、N個の出力要素)の各出力要素は、複数の要素102の1つまたは複数の要素に対して実行される算術的演算(たとえば、加算演算)に基づき得る。特定の順次的な順序「s0, s1, s2, ...s(N-1)」で並べられた複数の要素102を使用して累積的なベクトルの算術的削減命令101を実行した後で、第1の出力要素112はs0に等しくなってよく、第2の出力要素114はs0+s1に等しくなってよく、第3の出力要素116はs0+s1+s2に等しくなってよい、N番目の出力要素118は複数の要素102の各要素の合計(s0+s1+...s(N-1))に等しくなってよい。たとえば、累積的なベクトルの算術的削減命令101の実行は、第1の出力要素112として第1の要素104を提供する(たとえば、生成する)ことと、第1の要素104を第2の要素106に加算して第2の出力要素114を提供する(たとえば、生成する)こととを含み得る。第1の出力要素112および第2の出力要素114は、出力ベクトル120の異なる出力要素に記憶され得る。累積的なベクトルの算術的削減命令101の実行はさらに、第1の要素104および第2の要素106を第3の要素108に加算して第3の出力要素116を提供することと、第3の出力要素116を出力ベクトル120に記憶することとを含み得る。累積的なベクトルの算術的削減命令101の実行はさらに、複数の要素102の要素の各々を加算してN番目の出力要素118を提供することと、N番目の出力要素118を出力ベクトル120に記憶することとを含み得る。
【００２１】
図1に示されるように、累積的なベクトルの算術的削減命令101は、命令名180(vrcadd)(たとえば、オペコード)を含み得る。累積的なベクトルの算術的削減命令101はまた、第1のフィールド182(Vu)、第2のフィールド184(Vd)、第3のフィールド186(Q)、第4のフィールド188(Op)、第5のフィールド190(sc32)、および第6のフィールド192(sat)のような、1つまたは複数のフィールドを含み得る。第1のフィールド182に記憶される第1の値は、入力ベクトル122(たとえば、ベクトルVu)を示すことができ、第2のフィールド184に記憶される第2の値は、累積的なベクトルの算術的削減命令101の実行の間に使用するための出力ベクトル120(たとえば、ベクトルVd)を示すことができる。第3のフィールド186に記憶される第3の値は、図11A〜図11Bを参照してさらに詳しく説明されるようなマスク(たとえば、マスクQ)を示すことができ、第4のフィールド188に記憶される第4の値は、演算ベクトル(たとえば、演算ベクトルOp)を示すことができ、第5のフィールド190に記憶される第5の値は、図3〜図4を参照してさらに詳細に説明されるような入力値のタイプを示すことができ、第6のフィールド192に記憶される第6の値は、図7を参照して説明されるように、累積的なベクトルの算術的削減の間に飽和が実行されるべきかどうかを示すことができる。
【００２２】
加算演算が説明されているが、累積的なベクトルの算術的削減命令101は、加算演算のみを実行することに限定されない。たとえば、累積的なベクトルの算術的削減命令101は、複数の要素102に対して実行されるべき1つまたは複数の算術的演算を示すことができる。1つまたは複数の算術的演算は、加算演算、減算演算、またはこれらの組合せを含み得る。たとえば、算術的演算は、1つまたは複数の加算演算を使用して、1つまたは複数の減算演算を使用して、または1つまたは複数の加算演算と1つまたは複数の減算演算の組合せを使用して、実行され得る。1つまたは複数の算術的演算は、第4のフィールド188のような特定のフィールドの中の値(たとえば、特定のパラメータ)によって示され得る。たとえば、第4のフィールド188は、演算ベクトル(たとえば、1つまたは複数の算術的演算を示すベクトル)を記憶するメモリ中の位置、または、演算ベクトルを記憶するレジスタへのポインタを含み得る。演算ベクトルの各要素は、累積的なベクトルの算術的削減命令101の実行の間に複数の要素102の対応する要素に対して実行されるべき具体的な演算(たとえば、加算演算または減算演算)を示すことができる。1つまたは複数の算術的演算の少なくとも1つが減算演算であるとき、複数の要素102の1つまたは複数の要素は、複数の出力要素を生成する前に補足され得る。たとえば、複数の要素102の1つまたは複数の要素は、第1の出力要素112および第2の出力要素114を提供する前に(たとえば、複数の出力要素を生成する前に)、累積的なベクトルの算術的削減命令101に基づいて(たとえば、第4のフィールド188に記憶される第4の値に基づいて)補足され得る。
【００２３】
演算の間に、プロセッサは、累積的なベクトルの算術的削減命令101を受け取り得る。プロセッサは、複数の要素102を使用して累積的なベクトルの算術的削減命令を実行して、複数の出力要素を生成し出力ベクトル120に記憶することができる。複数の出力要素は、累積的なベクトルの算術的削減演算の複数の部分的な結果を表し得る。
【００２４】
単一のベクトル命令の実行の間に複数の部分的な結果(たとえば、複数の出力要素112〜118)を生成することによって、累積的なベクトルの算術的削減命令101は、複数のベクトル命令の実行の間に複数の部分的な結果を生成することと比較して、記憶容量と電力消費についての利益をもたらし得る。たとえば、単一のベクトル命令の実行の間に複数の部分的な結果を生成することは、複数のベクトル命令の実行の間に複数の部分的な結果を生成するときと比較して、メモリまたはレジスタにおいて使用する記憶容量をより少なくすることができ、プロセッサの電力消費を減らすことができる。
【００２５】
図2は、ベクトル命令を実行するように構成されたシステム200のある実施形態のブロック図である。システム200は、ベクトル命令220および入力ベクトル122を受け取り、出力ベクトル120を提供するように構成されるプロセッサ202を含み得る。ベクトル命令220は、図1の累積的なベクトルの算術的削減命令101であり得る。代替的に、ベクトル命令220は、例示的で非限定的な例として、区分されたベクトルの算術的削減命令(図9を参照して説明されるような)または回転区分されたベクトルの算術的削減命令(図10を参照して説明されるような)であり得る。
【００２６】
プロセッサ202は、算術論理演算装置(ALU)204および制御論理210を含み得る。ALU 204は、削減ツリー206および回転ユニット208を含み得る。ALU 204は、入力ベクトル122を受け取り、削減ツリー206を使用して入力ベクトル122に対して1つまたは複数の算術的演算を実行するように構成され得る。削減ツリー206は出力ベクトル120を提供することができる。出力ベクトル120は、レジスタまたはメモリ中の位置のような、ベクトル命令220によって特定される位置に提供され得る。たとえば、出力ベクトル120は、ベクトル命令220の特定のフィールド(たとえば、図1の第2のフィールド184)に基づいてその位置に提供され得る。
【００２７】
ALU 204および削減ツリー206は、実行パイプラインの一部であり得る。たとえば、プロセッサ202は、1つまたは複数のパイプラインを含むパイプライン化されたベクトルプロセッサであり得る。削減ツリー206は、1つまたは複数のパイプラインに含まれ得る。削減ツリー206は、(入力ベクトル122の)入力要素の数に基づく段階の数(たとえば、段階深度)を有し得る。削減ツリー206の段階の数は、入力要素の数の2を底とする対数に対応し得る。たとえば、入力要素の数が32であるとき、削減ツリー206は5つの段階を有し得る。削減ツリー206は、1つまたは複数の行へと並べられる複数の算術的演算ユニットを含み得る。削減ツリー206の各段階は、削減ツリー206の算術的演算ユニットのある行に対応し得る。
【００２８】
制御論理210は、図3〜図7を参照して説明されるように、ベクトル命令220(たとえば、図1の累積的なベクトルの算術的削減命令101)に基づいて削減ツリー206の複数の加算器の1つまたは複数の加算器を選択する(たとえば、選択的に有効にする)ように構成され得る。1つまたは複数の算術的演算ユニットを選択的に有効にすることは、削減ツリー206に、出力ベクトル120への挿入のために1つまたは複数の出力要素を提供させ得る(たとえば、生成させ得る)。
【００２９】
回転ユニット208は、図10を参照してさらに説明されるように、回転ベクトル280を受け取り、ベクトル命令220に基づいて回転ベクトル280を選択的に回転させるように構成され得る。回転ユニット208は、出力ベクトル120へと1つまたは複数の出力要素を挿入する(たとえば、記憶する)前に、回転ベクトル280を回転させるように構成され得る。たとえば、回転ユニット208は、削減ツリー206が入力ベクトル122に基づいて1つまたは複数の出力要素を生成することと並行して、回転ベクトル280を回転させることができる。回転された回転ベクトルおよび1つまたは複数の出力要素は、出力ベクトル120への挿入(たとえば、出力ベクトル120の生成)のためにマルチプレクサ212に提供され得る。たとえば、入力ベクトル122および回転ベクトル280が各々16個の要素を含み、ベクトル命令220の実行が削減ツリー206を使用して8個の出力要素を生成するとき、マルチプレクサ212は、出力ベクトル120への挿入のために、回転された回転ベクトルから8個の出力要素および8個の回転された要素を選択することができる。他の選択は、他のサイズを有する入力ベクトル122および/または回転ベクトル280に基づいて、または、異なる数の出力要素を生成するベクトル命令220の実行に基づいて選ばれ得る。代替的な実施形態では、回転ベクトル280は入力ベクトル122であってよく、入力ベクトル122からの複数の入力要素は回転ユニット208および削減ツリー206に提供され得る。
【００３０】
回転ユニット208は、説明のための例として、ローテータまたはバレルベクトルシフタであり得る。回転ベクトル280は、複数の以前の要素(たとえば、以前のベクトル挿入の実行の結果として生成される複数の要素)を含み得る。回転ベクトル280は、ベクトル命令220によって特定され得る。たとえば、回転ベクトル280は、ベクトル命令220中のフィールドによって特定される、レジスタまたはメモリ中の位置のような位置に記憶され得る。ある特定の実施形態では、回転ベクトル280と関連付けられる第1の位置は、出力ベクトル120と関連付けられる第2の位置と同じである。たとえば、ベクトル命令220は、出力ベクトル120としてある特定のレジスタを特定することができ、その特定のレジスタの以前に記憶された要素(たとえば、内容)が回転ベクトル280として使用され得る。特定のレジスタにおいて以前に記憶された値は、以前のベクトルの算術的削減命令の結果であり得る。別の実施形態では、回転ベクトル280と関連付けられる第1の位置は、入力ベクトル122と関連付けられる第3の位置と同じである。他の実施形態では、回転ベクトル280は、ベクトル命令220の別のフィールドに記憶された別の値によって(たとえば、出力ベクトル120からの異なるフィールドに記憶された異なる値によって)特定されてよく、または、ベクトル命令220の命令名(たとえば、オペコード)に基づいてあらかじめ決められていてよい。
【００３１】
演算の間、プロセッサ202は、ベクトル命令220を受け取り実行して、削減ツリー206を使用して入力ベクトル122に対してベクトルの算術的削減(たとえば、累積的なベクトルの算術的削減または区分されたベクトルの算術的削減)を実行することができる。削減ツリー206は、入力ベクトル122に対してベクトルの算術的削減を実行して、(たとえば、プロセッサ202の単一の実行サイクルの間に)複数の結果を同時に生成することができる。削減ツリー206によって生成される複数の結果は、ベクトル命令220の実行の間に出力ベクトル120に記憶され得る。
【００３２】
単一のベクトル命令(たとえば、ベクトル命令220)の実行の間に複数の部分的な結果(たとえば、複数の結果)を生成することによって、システム200は、複数のベクトル命令の実行の間に複数の部分的な結果を生成する他のシステムと比較して、記憶容量と電力消費の改善を提供することができる。
【００３３】
図3を参照すると、削減ツリー300の第1の例示的な実施形態のブロック図が開示される。たとえば、削減ツリー300は図2の削減ツリー206を含み得る。削減ツリー300は、図1の累積的なベクトルの算術的命令101または図2のベクトル命令220のような、累積的なベクトルの算術的命令を実行するために使用され得る。削減ツリー300は、第1の入力要素302および第2の入力要素304を含む入力ベクトル122に記憶された複数の入力要素を受け取り、出力ベクトル120に記憶されるべき複数の出力要素を提供する(たとえば、生成する)ように構成され得る。出力ベクトル120は、第1の出力要素306および第2の出力要素308を含み得る。
【００３４】
複数の入力要素の各入力要素および複数の出力要素の各出力要素は、1つまたは複数の副要素を含み得る。たとえば、第1の入力要素302は、第1の入力副要素330(s0)、第2の入力副要素332(s1)、第3の入力副要素334(s2)、および第4の副要素336(s3)のような、第1の複数の入力副要素330〜336(s0〜s3)を含み得る。第2の入力要素304は、第5の入力副要素338(s4)、第6の入力副要素340(s5)、第7の入力副要素342(s6)、および第8の入力副要素344(s7)のような、第2の複数の入力副要素338〜344(s4〜s7)を含み得る。さらに、第1の出力要素306は、第1の出力副要素366(d0)、第2の出力副要素368(d1)、第3の出力副要素370(d2)、および第4の出力副要素372(d3)のような、第1の複数の出力副要素366〜372(d0〜d3)を含み得る。第2の出力要素308は、第5の出力副要素374(d4)、第6の出力副要素376(d5)、第7の出力副要素378(d6)、および第8の出力副要素380(d7)のような、第2の複数の出力副要素374〜380(d4〜d7)を含み得る。各入力要素および出力要素は同じサイズ(たとえば、同じ数のビット)を有し得る。加えて、各入力副要素は、各出力副要素(たとえば、同じ数のビット)と同じサイズを有し得る。たとえば、各入力要素(たとえば、第1の入力要素302)および各出力要素は、64ビットであってよく、4つの16ビットの副要素(たとえば、入力副要素330〜336)を含み得る。ある代替的な実施形態では、入力副要素330〜344の各々は個々の入力要素であり、出力副要素366〜380の各々は個々の出力要素であるので、入力ベクトル122は複数の入力要素330〜344を含み、出力ベクトル120は複数の出力要素366〜380を含む。
【００３５】
削減ツリー300は、複数の算術的演算ユニットを含み得る。ある特定の実施形態では、複数の算術的演算ユニットは、第1の加算器320および第2の加算器321を含む複数の加算器であり得る。他の実施形態では、複数の算術的演算ユニットは、減算器、または加算器と減算器の組合せを含み得る。複数の加算器は、加算器の1つまたは複数の行を含み得る(たとえば、それらの行へと並べられ得る)。たとえば、複数の加算器は第1の行312を含み得る(たとえば、その行へと並べられ得る)。単一の行を含むものとして図示されているが、複数の加算器は2つ以上の行を含み得る。
【００３６】
複数の加算器の1つまたは複数の加算器は、図7を参照して説明されるように、受け取られた累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。(第2の加算器321のような図3において陰影によって示される)選択的に有効にされない加算器は、図7を参照して説明されるように、(たとえば、特定の入力に0値を加算するために)加算器において受け取られる特定の入力を出力するように構成され得る。たとえば、第2の加算器321は、第1の入力要素302を受け取り、出力ベクトル120に記憶されるべき第1の入力要素302を出力するように構成され得る。(第1の加算器320のような陰影を付けられていない加算器によって図3において示される)選択的に有効にされる加算器は、加算演算を実行するように構成され得る。たとえば、第1の加算器320は、第1の入力要素302および第2の入力要素304に基づいて加算演算を実行することができる。第1の加算器320は、第1の入力要素302と第2の入力要素304の合計に等しい加算器出力を生成することができる。加算器出力は、出力ベクトル120に記憶されるべき出力要素(たとえば、第2の出力要素308)として提供され得る。選択的な有効化を通じて、複数の加算器は出力ベクトル120に記憶されるべき複数の出力要素を生成する(たとえば、提供する)ことができる。
【００３７】
複数の入力要素は累積的なベクトルの算術的削減命令によって、(たとえば、図1の累積的なベクトルの算術的削減命令101の第5のフィールド190に記憶されている値によって)示される入力タイプを有し得る。入力タイプは、実数、虚数、または複素数(たとえば、実数と虚数の組合せ)を特定することができ、追加で要素サイズと関連付けられ得る。入力タイプが実数であるとき、複数の要素の各副要素は実数値を表し得る。入力タイプが虚数であるとき、要素の各副要素は虚数値を表し得る。入力タイプが複素数であるとき、各要素に対して、少なくとも1つの副要素は実数値を表すことができ、少なくとも1つの他の副要素は虚数値を表すことができる。したがって、削減ツリー300は、64ビットの実数、64ビットの虚数、32ビットの実数、32ビットの虚数、16ビットの実数、16ビットの虚数、32ビットの複素数、16ビットの複素数、1つまたは複数の他の入力タイプ、またはこれらの組合せのような、複数の異なる入力タイプをサポートし得る。
【００３８】
たとえば、入力タイプが16ビットの複素数であるとき、各入力要素302および304は64ビットであってよく、各入力副要素s0、s2、s4、およびs6は16ビットの実数値を表してよく、各入力副要素s1、s3、s5、およびs7は16ビットの虚数値を表してよい。各々の64ビットの入力要素はしたがって、2つの16ビットの複素数の入力副要素(たとえば、s0とs1の第1のペア、s2とs3の第2のペア)と関連付けられ得る。別の例として、入力タイプが32ビットの複素数を特定するとき、各入力要素302および304は64ビットであってよく、入力副要素の第1のペアs0およびs1ならびに入力副要素の第2のペアs4およびs5は32ビットの実数値を表してよく、入力副要素の第3のペアs2およびs3ならびに入力副要素の第4のペアs6およびs7は32ビットの虚数値を表してよい。各々の64ビットの入力要素はしたがって、1つの32ビットの複素数の入力副要素(たとえば、入力副要素s0とs1の第1のペアおよび入力副要素s2とs3の第2のペア、または、入力副要素s4とs5の第3のペアおよび入力副要素s6とs7の第4のペア)と関連付けられ得る。各々の例において、複数の出力要素は、入力要素と同様のタイプの出力要素および出力副要素を含み得る(たとえば、出力要素は入力タイプによって特定されるタイプを有し得る)。
【００３９】
複数の加算器の各加算器は複数の副加算器を含み得る。たとえば、第1の加算器320は、第1の副加算器322、第2の副加算器324、第3の副加算器326、および第4の副加算器328を含み得る。ある特定の実施形態では、第1の加算器320は、4つの16ビットの加算演算を実行するように区分された64ビットの加算器である(たとえば、各副加算器322〜328は第1の加算器320の1つの区分を表す)。ある代替的な実施形態では、各副加算器322〜328は16ビットの加算器であり、第1の加算器320は4つの16ビットの加算器のグループを表す。複数の加算器の各加算器は、第1の加算器320と同様の構成を有し得る(たとえば、第2の加算器321は4つの副加算器を含み得る)。64ビットの加算器および16ビットの副加算器が説明されるが、入力ベクトル122の入力要素のサイズなどに基づいて、他のサイズの加算器および副加算器が使用され得る。
【００４０】
各加算器は、複数の副加算器を介してインターリーブされた方式で複数の加算演算を実行するように構成され得る。たとえば、第1の加算器320は、第1の副加算器322を使用して第1の入力副要素330(s0)と第5の入力副要素338(s4)を加算し、第2の副加算器324を使用して第2の入力副要素332(s1)と第6の入力副要素340(s5)を加算し、第3の副加算器326を使用して第3の入力副要素334(s2)と第7の入力副要素342(s6)を加算し、第4の副加算器328を使用して第4の入力副要素336(s3)と第8の入力副要素344(s7)を加算するように構成され得る。したがって、削減ツリー300は、インターリーブされた方式で、副要素ごとに、第1の入力要素302および第2の入力要素304を使用して、副要素に対して累積的なベクトルの算術的削減演算を実行するように構成され得る。副要素ごとに副要素に対してインターリーブされた加算を実行することは、削減ツリーが異なるデータタイプ(たとえば、実数、虚数、または複素数)を有する副要素に対して加算演算を実行することを可能にし得る。
【００４１】
複数の加算器の最下行(たとえば、第1の行312)の複数の加算器出力は、出力要素(たとえば、出力要素306および308)として提供され、出力ベクトル120に記憶され得る。たとえば、第2の加算器321の各副加算器の各出力は、第1の出力要素306の対応する出力副要素として提供されてよく、第1の加算器320の各副加算器322〜328の各出力は、第2の出力要素308の対応する出力副要素として提供されてよい。複数の出力要素306および308(たとえば、複数の出力副要素366〜380)は、累積的なベクトルの算術的削減の複数の部分的な結果を表し得る。
【００４２】
受け取られた累積的なベクトルの算術的削減命令を実行することは、累積的なベクトルの算術的削減命令によって特定される入力タイプを有する、累積的なベクトルの算術的削減命令の複数の部分的な結果を生成することができる。たとえば、累積的なベクトルの算術的削減命令が複素数演算と関連付けられ(たとえば、それを示し)、入力タイプが16ビットの複素数である(たとえば、入力副要素s0、s2、s4、およびs6が実数値であり、入力副要素s1、s3、s5、およびs7が虚数値を表す)とき、累積的なベクトルの算術的削減命令を実行するステップは、第1の出力要素306の第1の実数の副要素(たとえば、第1の出力副要素366(d0))および第1の出力要素306の第1の虚数の副要素(たとえば、第2の出力副要素368(d1))を生成するステップを含み得る。累積的なベクトルの算術的削減命令を実行するステップはさらに、第2の出力要素308の第2の実数の副要素(たとえば、第5の出力副要素374(d4))および第2の出力要素308の第2の虚数の副要素(たとえば、第6の出力副要素376(d5))を生成するステップを含み得る。したがって、入力要素302および304が複素数であることを入力タイプが特定するとき、出力要素306および308は複素数であり得る。
【００４３】
演算の間、削減ツリー300は、受け取られた累積的なベクトルの算術的削減命令を実行するために使用され得る。累積的なベクトルの算術的削減命令の実行の間、複数の加算器の1つまたは複数の加算器が、出力要素306および308を含む(たとえば、複数の出力副要素366〜380(d0〜d7)を含む)複数の出力要素を生成するために、累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。たとえば、第1の加算器320は、完全に、または少なくとも部分的に、選択的に有効にされ得る(たとえば、副加算器322〜328の1つまたは複数が累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る)。複数の加算器の1つまたは複数の出力は、累積的なベクトルの算術的削減命令の実行の間に、出力ベクトル120への記憶のために出力要素306および308(たとえば、複数の出力副要素366〜380(d0〜d7))として提供され得る。
【００４４】
図4を参照すると、削減ツリー400の第2の例示的な実施形態のブロック図が開示される。削減ツリー400は、図1の累積的なベクトルの算術的削減命令101または図2のベクトル命令220のような、累積的なベクトルの算術的削減命令の実行の間に使用され得る。削減ツリー400は、例示的で非限定的な例として、図2の削減ツリー206または図3の削減ツリー300を含み得る。例示すると、削減ツリー400は、入力ベクトル122が4つの入力要素を有する実施形態をサポートするための、図3の削減ツリー300の拡張を示し得る。削減ツリー400は、出力ベクトル120を生成するために累積的なベクトルの算術的削減命令に基づいて選択的に有効にされるように構成される、第1の加算器320、第2の加算器321、および加算器402〜408を含む、複数の加算器を含み得る。図4は複数の加算器を示すが、削減ツリー400は複数の他の算術的演算ユニットを含み得る。
【００４５】
入力ベクトル122は、第1の入力要素302、第2の入力要素304、第3の入力要素410、および第4の入力要素412を含み得る。各入力要素は、複数の入力副要素を含み得る。たとえば、第1の入力要素302は入力副要素s0〜s3を含んでよく、第2の入力要素304は入力副要素s4〜s7を含んでよく、第3の入力要素410は入力副要素s8〜s11を含んでよく、第4の入力要素412は入力副要素s12〜s15を含んでよい。出力ベクトル120は4つの出力要素を含み得る。たとえば、出力ベクトル120は、第1の出力要素306、第2の出力要素308、第3の出力要素422、および第4の出力要素424を含み得る。各出力要素は、複数の出力副要素を含み得る。たとえば、第1の出力要素306は出力副要素d0〜d3を含んでよく、第2の出力要素308は出力副要素d4〜d7を含んでよく、第3の出力要素422は出力副要素d8〜d11を含んでよく、第4の出力要素424は出力副要素d12〜d15を含んでよい。
【００４６】
複数の加算器は、第1の行312および第2の行414のような複数の行を含み得る(たとえば、複数の行へと並べられ得る)。2つの行が示されるが、他の実施形態では、複数の加算器は、入力ベクトル122の入力要素の数などに基づいて、より多数の行またはより少数の行を含み得る。各行312、414は4つの加算器を有するものとして示されるが、他の実施形態では、各行は、入力ベクトル122中の入力要素の数などに基づいて、4つよりも多数または少数の加算器を有し得る。加算器402〜408の各々は、図3の加算器320および321を参照して説明されるように、4つの副加算器を含み得る。
【００４７】
複数の加算器の1つまたは複数の加算器は、図7を参照して説明されるように、受け取られた累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。(第2の加算器321および第3の加算器402のような図4において陰影によって示される)選択的に有効にされない加算器は、図7に関して説明されるように、(たとえば、特定の入力に0値を加算するために)加算器において受け取られる特定の入力を出力するように構成され得る。たとえば、第2の加算器321は、第1の入力要素302を受け取り、第1の入力要素302を第2の行414中の加算器に出力するように構成され得る。(第1の加算器320、第4の加算器404、第5の加算器406、および第6の加算器408のような陰影を付けられていない加算器によって図4において示される)選択的に有効にされる加算器は、加算演算を実行するように構成され得る。たとえば、第1の加算器320は、第1の入力要素302および第2の入力要素304に基づいて加算演算を実行することができ、第4の加算器404は、第3の入力要素410および第4の入力要素412に基づいて加算演算を実行するように構成され得る。第5の加算器406は、第1の加算器320の第1の加算器出力および第3の加算器402の第2の加算器出力(たとえば、第3の入力要素410の値)に基づいて加算演算を実行することができ、第6の加算器408は、第4の加算器404の第1の加算器出力および第3の加算器出力に基づいて加算演算を実行することができる。
【００４８】
第2の行414の加算器出力は、出力ベクトル120に記憶されるべき複数の出力要素(たとえば、出力要素306、308、422、および424)として提供され得る。選択的な有効化を通じて、複数の加算器は出力ベクトル120に記憶されるべき複数の出力要素を生成する(たとえば、提供する)ことができる。出力要素306、308、422および424(たとえば、出力副要素d0〜d15)は、累積的なベクトルの算術的削減の1つまたは複数の部分的な生成物を表し得る。たとえば、第1の出力要素306は第1の入力要素302であってよく、第2の出力要素308は第1の入力要素302および第2の入力要素304の合計であってよく、第3の出力要素422は第1の入力要素302、第2の入力要素304、および第3の入力要素410の合計であってよく、第4の出力要素424は第1の入力要素302、第2の入力要素304、第3の入力要素410、および第4の入力要素412の合計であってよい。出力要素306、308、422、および424は副要素ごとに副要素によって生成されてよく、このとき、加算演算は、図3を参照して説明されるように、出力副要素d0〜d15を生成するためにインターリーブされた方式で実行される。たとえば、出力副要素d8は入力副要素s0、s4、およびs8の合計に等しくてよく、出力副要素d12は入力副要素s0、s4、s8、およびs12の合計に等しくてよい。各出力副要素は同様の方式で生成され得る。
【００４９】
図4は単一の削減ツリー400(たとえば、削減ネットワーク)を示すが、他の実施形態では、削減ツリー400は、インターリーブされた方式で動作する複数の累積的な並列削減ネットワークへと論理的に区分され得る。たとえば、ある代替的な実施形態では、各々の累積的な削減ネットワークは、各加算器の複数の副加算器を含み得る(たとえば、第1の累積的な削減ネットワークは各加算器の対応する第1の副加算器を含み得る)。各々の累積的な削減ネットワークは、他の累積的な削減ネットワークと並列に動作することができ、各々の累積的な削減ネットワークからの結果は出力ベクトル120に記憶され得る。たとえば、削減ツリー400は、4つの16ビットの累積的な削減ネットワークへと論理的に区分され得る。別の例では、削減ツリー400は、2つの32ビットの累積的な削減ネットワークへと論理的に区分され得る。
【００５０】
演算の間、削減ツリー400は、受け取られた累積的なベクトルの算術的削減命令を実行するために使用され得る。累積的なベクトルの算術的削減命令の実行の間、複数の加算器の1つまたは複数の加算器が、複数の出力要素306、308、422、および424を生成するために、累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。複数の出力要素306、308、422、および424は、累積的なベクトルの算術的削減命令の実行の間に出力ベクトル120に記憶され得る。
【００５１】
図5を参照すると、削減ツリー500の第3の例示的な実施形態のブロック図が開示される。削減ツリー500は、図1の累積的なベクトルの算術的削減命令101または図2のベクトル命令220のような、累積的なベクトルの算術的命令の実行の間に使用され得る。削減ツリー500は、例示的で非限定的な例として、図2の削減ツリー206、図3の削減ツリー300、または図4の削減ツリー400を含み得る。削減ツリー500は、入力ベクトル122に記憶された複数の入力要素502を受け取り、出力ベクトル120に記憶されるべき複数の出力要素506を提供する(たとえば、生成する)ように構成され得る。
【００５２】
削減ツリー500は、複数の入力要素502、複数の加算器504、および複数の出力要素506を含み得る。図5は複数の加算器504を示すが、削減ツリー500は複数の他の算術的演算ユニットを含み得る。複数の入力要素502は、入力ベクトル122の入力要素s0〜s15を含み得る。複数の出力要素506は、出力ベクトル120の出力要素d0〜d15を含み得る。複数の入力要素502(s0〜s15)は、「s0, s1, s2, ...s15」のような順次的な順序で順序付けられてよく、ここでs0は順次的な順序において最初の順次的な要素であり、s15は最後の順次的な要素である。複数の出力要素506(d0〜d15)は、同様の順次的な順序「d0, d1, d2, ...d15」で並べられ得る。
【００５３】
複数の入力要素502の各入力要素は同じサイズを有し得る。たとえば、複数の入力要素502の各入力要素は64ビットであり得る。複数の出力要素506の各出力要素も同じサイズを有し得る。たとえば、複数の出力要素506の各出力要素は64ビットであり得る。ある特定の実施形態では、各入力要素は各出力要素と同じサイズ(たとえば、64ビット)を有し得る。入力要素の数は出力要素の数と等しくてよい。たとえば、入力ベクトル122は16個の入力要素を有してよく、出力ベクトル120は16個の出力要素を有してよい。要素の数およびサイズは例示的である。入力要素および出力要素は他のサイズを有してよく、ベクトル(たとえば、入力ベクトル122および出力ベクトル120)は示されたもの以外のサイズ(たとえば、他の数の要素)を有してよい。示されないが、図3〜図4を参照して説明されるように、各入力要素は複数の入力副要素(たとえば、4つの入力副要素)を含んでよく、各出力要素は4つの出力副要素を含んでよい。各入力要素および各出力要素は、図3〜図4に関して説明されるように、累積的なベクトルの算術的削減命令によって示されるタイプに基づいて、実数、虚数、または複素数であり得る。
【００５４】
複数の加算器504は、第1の行512、第2の行514、第3の行516、および第4の行518を含む、加算器の複数の行へと並べられ得る。加算器の4つの行が示されているが、他の実施形態では、削減ツリー500は、入力要素および出力要素の数などに基づいて、4つよりも少数または多数の行を含み得る(たとえば、それらの行へと並べられ得る)。複数の加算器504の各加算器は同じサイズを有し得る。たとえば、複数の加算器504の各加算器は64ビットの加算器であり得る。示されないが、複数の加算器504の各加算器は複数の副加算器を含んでよく、図3〜図4を参照して説明されたように、インターリーブされた方式で副要素ごとに副要素に対して加算演算を実行するように構成され得る。
【００５５】
各加算器出力は、次の行の同じ列にある加算器に提供されてよく、削減ツリー500が複数の出力要素506(d0〜d15)を生成することを可能にするために図5に示されるように他の加算器にも向けられ得る。たとえば、第1の行512の第1の加算器(たとえば、入力要素s1の下の第1の行512の加算器)の出力は、第2の行514の第2の加算器(たとえば、入力要素s2の下の第2の行514の加算器)および第2の行514の第3の加算器(たとえば、入力要素s3の下の第2の行514の加算器)に向けられ得る。第3の加算器の出力は、第3の行516の第4の加算器、第3の行516の第5の加算器、第3の行516の第6の加算器、および第3の行516の第7の加算器(たとえば、それぞれ、入力要素s4〜s7の下の第3の行516の加算器)に向けられ得る。加えて、第7の加算器の出力は、第4の行518の8つの加算器(たとえば、入力要素s8〜s15の下の第4の行518の加算器)に向けられ得る。
【００５６】
複数の加算器504の1つまたは複数の加算器は、累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。たとえば、1つまたは複数の加算器は、図2の制御論理210のような制御論理(図示されず)によって、(図5の陰影が付けられていない加算器によって示されるように)選択的に有効にされ得る。有効にされない1つまたは複数の加算器(図5の陰影が付けられていない加算器によって示されるような)は、図7を参照して説明されるように、受け取られた入力を出力する(たとえば、特定の入力に0値を加算する)ように構成され得る。
【００５７】
削減ツリー500は、複数の入力要素s0〜s15および累積的なベクトルの算術的削減命令に基づいて、複数の出力要素d0〜d15を同時に生成するように構成され得る。たとえば、削減ツリー500は、第1の出力要素d0として第1の入力要素s0を提供し、第1の入力要素s0および第2の入力要素s1を加算して第2の出力要素s1を提供し、第1の出力要素s0および第2の出力要素s1を出力ベクトル120に記憶するように構成され得る。削減ツリー500は、第1の要素s0および第2の要素s1を第3の要素s2に加算して、第3の出力要素d2を提供するように構成され得る。加えて、削減ツリー500は、各入力要素s0〜s15の合計を生成することによって、出力要素d15を生成するように構成され得る。他の要素d3〜d14は、同様の方式で部分的な累積的な合計として生成され得る。
【００５８】
演算の間、削減ツリー500は、受け取られた累積的なベクトルの算術的削減命令を実行するために使用され得る。累積的なベクトルの算術的削減命令の実行の間、削減ツリー500は、入力ベクトル122から複数の入力要素502を受け取ることができる。累積的なベクトルの算術的削減命令の実行の間、複数の加算器504の複数の加算器は、複数の出力要素d0〜d15を提供する(たとえば、生成する)ように選択的に有効にされてよく、複数の出力要素d0〜d15は出力ベクトル120に記憶されてよい。
【００５９】
図6を参照すると、削減ツリー600の第4の例示的な実施形態のブロック図が開示される。削減ツリー600は、図1の累積的なベクトルの算術的削減命令101または図2のベクトル命令220のような、累積的なベクトルの算術的削減命令の実行の間に使用され得る。削減ツリー600は、図2の削減ツリー206、図3の削減ツリー300、図4の削減ツリー400、図5の削減ツリー500、またはこれらの組合せを含み得る。削減ツリー600は、入力ベクトル122から複数の入力要素を受け取り、累積的なベクトルの算術的削減命令に基づいて出力ベクトル610の複数の出力要素を生成するように構成され得る。図6は複数の加算器を示すが、削減ツリー600は複数の他の算術的演算ユニットを含み得る。
【００６０】
削減ツリー600は、第1の入力要素302および第2の入力要素304を含む複数の入力要素を入力ベクトル122から受け取ることができる。第1の入力要素302は入力副要素s0〜s3を含んでよく、第2の入力要素304は入力副要素s4〜s7を含んでよい。入力要素および入力副要素は、累積的なベクトルの算術的削減命令によって示されるサイズを有し得る。たとえば、入力要素302および304は64ビットであってよく、入力副要素s0〜s7は16ビットであってよい。出力ベクトル610は、第1の出力要素306および第2の出力要素608を含み得る。第1の出力要素306は出力要素d0〜d3を含んでよく、第2の出力要素608は出力要素d4〜d7を含んでよい。出力要素および出力副要素は、累積的なベクトルの算術的削減命令によって示されるサイズを有し得る。たとえば、出力要素306および608は64ビットであってよく、出力副要素d0〜d7は16ビットであってよい。2つの要素を含むものとして説明されるが、入力ベクトル122および出力ベクトル610は、任意の数の要素(たとえば、任意の数の副要素)を含んでよく、64ビット以外のサイズを有してよい。
【００６１】
削減ツリー600は、出力ベクトル610を生成するために累積的なベクトルの算術的削減命令に基づいて選択的に有効にされるように構成される、第1の加算器320、第2の加算器321、第3の加算器618、および第4の加算器619を含む、複数の加算器を含み得る。複数の加算器は、第1の行312、第2の行614、および第3の行616を含む、複数の行を含み得る(たとえば、複数の行へと並べられ得る)。複数の加算器の各加算器は複数の副加算器を含み得る。たとえば、複数の加算器の各加算器は64ビットの加算器であってよく、4つの16ビットの副加算器を含んでよい。複数の加算器の1つまたは複数の加算器は、累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。たとえば、図3を参照して説明されるように、第1の加算器320(たとえば、副加算器322〜328)が選択的に有効にされ得る。
【００６２】
第2の行614中の第3の加算器618は、第1の副加算器322の出力と第3の副加算器326の出力を加算するように構成される、第5の副加算器625を含み得る。第3の加算器618はまた、第2の副加算器324の出力と第4の副加算器328の出力を加算するように構成される、第6の副加算器627を含み得る。副加算器の出力を加算することによって、第3の加算器618は、算術的削減を適用して、副加算器322、324、326、および328の出力に基づいて、副加算器625および627の2つの削減された出力を生成することができる。同様に、第3の行616の第4の加算器619は、第7の副加算器629を使用した算術的削減を適用して、副加算器625および627の出力に基づいて追加の削減された値を生成することができる。したがって、第2の出力要素608は、他の部分的な値とともに複数の入力副要素s0〜s7に基づく、16ビットの削減値を含み得る。たとえば、出力副要素d4は入力副要素s0と入力副要素s4の合計に等しくてよく、出力副要素d5は入力副要素s1と入力副要素s5の合計に等しくてよく、出力副要素d6は入力副要素s0、s2、s4、およびs6の合計に等しくてよく、出力副要素d7は入力副要素s0〜s7の合計に等しくてよい。
【００６３】
演算の間、削減ツリー600は、累積的なベクトルの算術的削減命令を実行するために使用され得る。累積的なベクトルの算術的削減命令の実行の間、複数の加算器の1つまたは複数の加算器が、出力ベクトル610へ記憶するための複数の出力要素306および608(たとえば、複数の出力副要素d0〜d7)を生成するために、累積的なベクトルの算術的削減命令に基づいて選択的に有効にされ得る。
【００６４】
図7を参照すると、削減ツリー700の一部分の例示的な実施形態のブロック図が開示される。削減ツリー700のその部分は、図2の削減ツリー206、図3の削減ツリー300、図4の削減ツリー400、図5の削減ツリー500、または図6の削減ツリー600の一部分であり得る。削減ツリー700のその部分は、図1の累積的なベクトルの算術的削減命令101、図2のベクトル命令220、図9を参照して説明される区分されたベクトルの算術的削減命令901、または図10を参照して説明される回転区分されたベクトルの算術的削減命令1001のような、ベクトル命令の実行の間に使用され得る。削減ツリー700のその部分は、入力ベクトルから第1の入力要素702(s0)を受け取り、ベクトル命令に基づいて出力ベクトルに記憶するための第1の出力要素706(d0)を生成するように構成され得る。
【００６５】
削減ツリー700のその部分は、第1の加算器712に結合され、第1の入力要素702(s0)を第1のマルチプレクサ入力として受け取り0入力(たとえば、論理0に等しい値を有する入力)を第2のマルチプレクサ入力として受け取るように構成される、第1のマルチプレクサ720を含み得る。第1の加算器712が示されているが、削減ツリー700のその部分は、他の実施形態では異なる算術的演算ユニット(たとえば、減算ユニット)を含み得る。第1のマルチプレクサ720は、図2の制御論理210のような制御論理から第1の制御信号744を受け取るように構成され得る。第1のマルチプレクサ720は、第1の加算器712の第1の加算器入力732としてマルチプレクサ出力を提供するために、第1の制御信号744に基づいて第1のマルチプレクサ入力と第2のマルチプレクサ入力から選択するように構成され得る。たとえば、第1の制御信号744が特定の値であるとき、第1のマルチプレクサ720は、第1の入力要素702を第1の加算器入力732として第1の加算器712に提供することができる。第1の制御値744が異なる値であるとき、第1のマルチプレクサ720は、0入力を第1の加算器入力732として第1の加算器712に提供することができる。したがって、制御論理は(たとえば、第1の制御信号744を設定することによって)、複数の加算器のサブセットがベクトル命令に基づいて0入力(たとえば、論理0に等しい値)を受け取ることを可能にするように構成され得る。
【００６６】
削減ツリー700のその部分は、第1の加算器712に結合され第1の加算器712の出力を飽和させるように構成される、第1の飽和論理回路730を含み得る。第1の加算器712の出力を飽和させることで、第1の加算器712の出力が最大値を超えること、または最小値を下回ることを防ぐことができる。第1の飽和論理回路730は、第1の加算器712の出力に基づいて、飽和させられた出力(たとえば、値)を出力するように構成され得る。たとえば、飽和させられた出力は、第1の加算器712の出力が最小値と最大値の間にあるとき、第1の加算器712の出力に等しい値を有し得る。飽和させられた出力は、第1の加算器712の出力が最大値を超えるときは最大値の値を有してよく、飽和させられた出力は、第1の加算器712の出力の値が最小値より小さいときは最小値の値を有してよい。
【００６７】
削減ツリー700のその部分は、第1の飽和論理回路730に結合された第2のマルチプレクサ724を含み得る。第2のマルチプレクサ724は、第1の飽和論理回路730の飽和させられた出力を第3のマルチプレクサ入力として受け取り、第1のマルチプレクサ720の出力を第4のマルチプレクサ入力として受け取るように構成され得る。第2のマルチプレクサ724は、出力ベクトルに記憶されるべき第1の出力要素706としてマルチプレクサ出力を提供するために、第2の制御信号746に基づいて第3のマルチプレクサ入力と第4のマルチプレクサ入力から選択するように構成され得る。第2の制御信号746がある特定の値であるとき、第2のマルチプレクサ724は第1の加算器712を迂回する(たとえば、第4のマルチプレクサ入力をマルチプレクサ出力として提供する)ことができる。第1の加算器712が迂回されないとき、第1の加算器712は、第1の加算器入力732と第2の加算器入力734を加算する。第2の加算器入力734は、別の加算器の出力から受け取られた値、0値、または何らかの他の値であり得る。第4のマルチプレクサ入力を選択することによって、第2のマルチプレクサ724は、第1の加算器入力732および第2の加算器入力734を使用して加算演算を実行することを迂回でき、第1のマルチプレクサ720の出力をマルチプレクサ出力として提供することができる。したがって、制御論理は、ベクトル命令に基づいて第1の加算器712を迂回するように構成され得る。ある代替的な実施形態では、第1の加算器712は、クロック入力(図示されず)を無効にすることによって迂回され得る。
【００６８】
1つの入力要素のみが示されているが、削減ツリー700のその部分は任意の数の入力要素に対して動作することができる。たとえば、削減ツリー700のその部分は、2つ以上の入力要素を有する入力ベクトルに対して動作するための追加の回路(たとえば、マルチプレクサ、加算器、飽和論理回路、およびコネクタ)を含み得る。たとえば、削減ツリー700のその部分は加算器の追加の行を含んでよく、各々の追加の加算器は、対応する第1のマルチプレクサ、飽和論理回路、および第3のマルチプレクサを含む。追加の回路および加算器は、制御論理からの追加の制御信号によって制御され得る。したがって、削減ツリー700のその部分は、図3〜図6の削減ツリー300〜600の各々に含まれ得る。
【００６９】
ベクトル命令の実行の間、削減ツリー700のその部分は、第1の入力要素702を受け取り、出力ベクトルに記憶するための第1の出力要素706を生成するように構成され得る。第1のマルチプレクサ720は、第1の制御信号744に基づいて0入力を第1の加算器712に提供することができる。第1の飽和論理回路730は、第1の加算器712の出力を飽和させることができる。第2のマルチプレクサ724は、第2の制御信号746に基づいて第1の加算器712を迂回することができる。
【００７０】
図8を参照すると、削減ツリー800の第5の例示的な実施形態のブロック図が開示される。削減ツリー800は、図2の削減ツリー206、(本明細書でさらに説明されるような)図3〜図6の削減ツリー300〜600の1つまたは複数、図7の削減ツリー700のその部分、またはこれらの任意の組合せを含み得る。削減ツリー800は、図9を参照して説明された区分されたベクトルの算術的削減命令901、または図10を参照して説明された回転区分されたベクトルの算術的削減命令1001のような、区分されたベクトルの算術的削減命令の実行の間に使用され得る。削減ツリー800は、区分されたベクトルの算術的削減命令に含まれるセクショングループ化サイズに基づく、ベクトル命令の実行を可能にするように選択的に構成され得る。セクショングループ化サイズは、複数の入力要素802の1つまたは複数のグループのサイズと関連付けられ得る。たとえば、区分されたベクトルの算術的削減命令の実行は、1つまたは複数のグループに対して1つまたは複数の区分されたベクトルの算術的削減演算を実行する前に、そのセクショングループ化サイズを有する1つまたは複数のグループへと複数の入力要素802をグループ化することを含み得る。削減ツリー800は、各々が異なるセクショングループ化サイズを有する、複数の区分されたベクトルの算術的削減命令の実行を可能にするように構成され得る。たとえば、削減ツリー800は、2というセクショングループ化サイズを有する第1の区分されたベクトルの算術的削減命令、および4というセクショングループ化サイズを有する第2の区分されたベクトルの算術的削減命令の実行を有効にするように構成され得る。2および4というセクショングループ化サイズが説明されるが、削減ツリー800は他のセクショングループ化サイズをサポートすることができる。
【００７１】
削減ツリー800は、複数の入力要素802(たとえば、複数の入力要素s0〜s15)、複数の加算器804、および複数の出力要素806(d0〜d15)を出力するように構成される複数の出力(たとえば、最下行の複数の加算器出力)を含み得る。図8は複数の加算器804を示すが、他の実施形態では、削減ツリー800は複数の他の算術的演算ユニットを含み得る。図2のプロセッサ210のようなプロセッサは、第1のセクショングループ化サイズを含む第1の区分されたベクトルの算術的削減命令の実行の間に、および、第2のグループ化サイズを含む第2の区分されたベクトルの算術的削減命令の実行の間に、削減ツリー800を使用するように構成され得る。削減ツリー800は、複数の出力要素806(d0〜d15)を同時に生成するように構成され得る。たとえば、複数の出力要素806(d0〜d15)は、第1の区分されたベクトルの算術的削減命令の実行と関連付けられる単一のプロセッサ実行サイクルの間に生成され得る。
【００７２】
削減ツリー800は、入力ベクトル822から複数の入力要素802(s0〜s15)を受け取るように構成され得る。削減ツリー800は、出力ベクトル820に記憶されるべき複数の出力要素806(d0〜d15)を生成するように構成され得る。複数の入力要素802(s0〜s15)は、「s0, s1, s2, ...s15」のような順次的な順序で順序付けられてよく、ここでs0は順次的な順序において最初の順次的な要素であり、s15は最後の順次的な要素である。複数の出力要素806(d0〜d15)は、「d0, d1, d2, ...d15」のような同様の順次的な順序で順序付けられてよく、ここでd0は最初の順次的な要素であり、d15は最後の順次的な要素である。
【００７３】
削減ツリー800は出力要素と同じ数の入力要素を有してよく、各入力要素は各出力要素と同じサイズを有してよい。たとえば、入力ベクトル822は16個の64ビットの入力要素を含んでよく、出力ベクトル820は16個の64ビットの出力要素を含んでよい。示されないが、図3〜図4を参照して説明されるように、各入力要素は複数の16ビットの入力副要素を含んでよく、各出力要素は複数の16ビットの出力副要素を含んでよい。複数の入力要素および複数の出力要素は、実数値、虚数値、またはこれらの組合せを表し得る。入力タイプが複素数である、ある特定の実施形態では、複数の入力要素の各入力要素は、対応する実数部分および対応する虚数部分を含み得る。各出力要素は、図3〜図4を参照して説明されるように、インターリーブされた方式で、1つまたは複数の実数部分に対する第1の算術的演算を実行し、1つまたは複数の虚数部分に対する第2の算術的演算を実行することによって、生成され得る。
【００７４】
64ビットの要素および16ビットの副要素が説明されるが、各入力要素および各出力要素は64ビット以外のサイズを有してよく、各入力副要素および各出力副要素は16ビット以外のサイズを有してよい。
【００７５】
複数の加算器804は、示されるように、加算器の複数の行へと並べられ得る。複数の加算器804は、第1の行812、第2の行814、第3の行816、および第4の行818を含み得る(たとえば、それらの行へと並べられ得る)。加算器の4つの行が示されているが、削減ツリー800は代替的に、入力要素の数および出力要素の数などに基づいて、4つよりも少数または多数の行を含み得る(たとえば、それらの行へと並べられ得る)。複数の加算器804の各加算器は同じサイズを有し得る。たとえば、複数の加算器804の各加算器は64ビットの加算器であり得る。示されないが、複数の加算器804の各加算器は複数の副加算器を含んでよく、図3〜図4を参照して説明されたように、インターリーブされた方式で副要素ごとに副要素に対して加算演算を実行するように構成され得る。
【００７６】
加算器の1つまたは複数の行からの1つまたは複数の加算器出力は、図8において破線の経路によって示されるように、削減ツリー800が複数の出力要素806(d0〜d15)を生成することを可能にするために、複数の経路830〜844を介して選択的に送られ得る。たとえば、第1の加算器850によって生成される第1の値は第1の経路830を介して第2の加算器852に提供されてよく、第2の加算器852によって生成される第2の値は第2の経路840を介して第3の加算器854に提供されてよく、第3の加算器854によって生成される第3の値は第3の経路844によって第4の加算器856に提供されてよい。経路832〜836および842を介して、1つまたは複数の加算器の間で他の値が同様に提供され得る。複数の経路830〜844の各経路は、区分されたベクトルの算術的削減命令のセクショングループ化サイズに基づいて選択的に有効にされ得る。たとえば、第1の経路830は、第1の加算器850によって生成された第1の値を第2の加算器852への加算器入力として選択することによって有効にされてよく、第1の経路830は、区分された算術的削減命令に基づいて(たとえば、セクショングループ化サイズに基づいて)第2の加算器852の加算器入力として0入力を選択することによって無効にされてよい。複数の加算器804の1つまたは複数の加算器は、0入力と対応する経路によって提供される値とから加算器入力を選択する、図7を参照して説明される第1のマルチプレクサ720のような、加算器入力を選択するように構成される対応するマルチプレクサ(図示されず)を有し得る。対応するマルチプレクサは、図7を参照して説明されるように、制御信号に基づいて対応する経路を有効にし(たとえば、対応する経路によって提供される入力を選択し)、または対応する経路を無効にする(たとえば、0入力を選択する)ことができる。
【００７７】
プロセッサは、区分されたベクトルの算術的削減命令のセクショングループ化サイズに基づいて削減ツリー800を選択的に構成するように構成される、図2の制御論理210のような制御論理を含み得る。削減ツリー800を選択的に構成するステップは、1つまたは複数の加算器(図8の1つまたは複数の陰影が付けられていない加算器によって示される)を選択的に有効にするステップと、セクショングループ化サイズに基づいて対応する加算器入力を選択するステップとを含み得る。たとえば、制御論理は、複数の加算器804の第1のサブセットを選択的に有効にし、第1の区分されたベクトルの算術的削減命令の実行の間に第1のセクショングループ化サイズに基づいて加算器入力の対応する第1のサブセットを選択し(たとえば、削減ツリー800は第1の構成で構成され得る)、複数の加算器804の第2のサブセットを選択的に有効にし、第2の区分されたベクトルの算術的削減命令の実行の間に第2のセクショングループ化サイズに基づいて加算器入力の対応する第2のサブセットを選択する(たとえば、削減ツリー800は第2の構成で構成され得る)ように構成され得る。削減ツリー800のある特定の構成は、加算器のある特定のサブセットを有効にすること、および加算器入力のある特定のサブセットを選択することと関連付けられ得る。制御論理は、図7を参照して説明されるように、複数の加算器804の特定のサブセットを選択的に有効にし、1つまたは複数の制御信号を使用して加算器入力の対応するサブセットを選択する(たとえば、複数の経路830〜844のある特定のサブセットを選択的に有効にする)ことができる。たとえば、セクショングループ化サイズが2であるとき、複数の経路830〜844の各々は無効にされてよく(たとえば、複数の経路830〜844の各々と関連付けられる各加算器入力に対して0値が選択され得る)、第1の行812において陰影が付けられていない加算器のみが有効にされ得る。セクショングループ化サイズが4であるとき、経路(830〜836)および行812〜814の中の陰影が付けられていない加算器の第1のサブセットのみが有効にされ得る。セクショングループ化サイズが8であるとき、経路(830〜842)および行812〜816の中の陰影が付けられていない加算器の第2のサブセットのみが有効にされ得る。セクショングループ化サイズが16であるとき、複数の経路830〜844のすべておよび行812〜818の陰影が付けられていない加算器のすべてが有効にされ得る。したがって、制御論理は、セクショングループ化サイズに基づいて、加算器のサブセットおよび経路のサブセットを選択的に有効にする(たとえば、対応する加算器入力のサブセットを選択する)ように構成され得る。
【００７８】
複数の加算器804の1つまたは複数の加算器を選択的に有効にし、1つまたは複数の対応する加算器入力を選択することによって、削減ツリー800は、複数の入力要素802(s0〜s15)および区分されたベクトルの算術的削減命令(たとえば、第1の区分されたベクトルの算術的削減命令または第2の区分されたベクトルの算術的削減命令)に含まれるセクショングループ化サイズに基づいて複数の出力要素806(d0〜d15)を同時に生成するように構成され得る。たとえば、セクショングループ化サイズが2であるとき、削減ツリー800は、第1の出力要素d1をs0+s1に等しく、第2の出力要素d3をs2+s3に等しく、第3の出力要素d5をs4+s5に等しく、第4の出力要素d7をs6+s7に等しく、第5の出力要素d9をs8+s9に等しく、第6の出力要素d11をs10+s11に等しく、第7の出力要素d13をs12+s13に等しく、第8の出力要素d15をs14+s15に等しく生成する(たとえば、提供する)ことができる。セクショングループ化サイズが4であるとき、削減ツリー800は、第2の出力要素d3をs0+s1+s2+s3に等しく、第4の出力要素d7をs4+s5+s6+s7に等しく、第6の出力要素d11をs8+s9+s10+s11に等しく、第8の出力要素d15をs12-s13+s14+s15に等しく生成することができる。セクショングループ化サイズが8であるとき、削減ツリー800は、第4の出力要素d7をs0+s1+s2+s3+s4+s5+s6+s7に等しく、第8の出力要素d15をs8+s9+s10+s11+s12+s13+s14+15に等しく生成することができる。セクショングループ化サイズが16であるとき、削減ツリー800は、各入力要素s0〜s15の合計に等しく8つの出力要素d15を生成することができる。したがって、削減ツリー800は、複数の行812〜818の1つまたは複数の加算器を選択的に有効にし、セクショングループ化サイズに基づいて1つまたは複数の対応する加算器入力を選択して複数の出力要素806を同時に生成するように構成され得る。
【００７９】
演算の間、削減ツリー800は、区分されたベクトルの算術的削減命令を実行するために使用され得る。区分されたベクトルの算術的削減命令の実行の間、削減ツリー800は、入力ベクトル822から複数の入力要素802(s0〜s15)を受け取ることができる。たとえば、複数の入力要素802(s0〜s15)は、第1の区分されたベクトルの算術的削減命令の実行の間に第1のセクショングループ化サイズを有する1つまたは複数の第1のグループへと、かつ、第2の区分されたベクトルの算術的削減命令の実行の間に第2のセクショングループ化サイズを有する1つまたは複数の第2のグループへとグループ化され得る。区分されたベクトルの算術的削減命令の実行の間に、複数の加算器804の1つまたは複数の加算器は、複数の出力(たとえば、第4の行818の複数の加算器出力)を使用して複数の出力要素806(d0〜d15)を生成するように選択的に有効にされてよく、複数の出力要素806(d0〜d15)は出力ベクトル820に記憶されてよい。
【００８０】
削減ツリー800は、単一の削減ツリーを使用した、第1のセクショングループ化サイズを有する第1の区分されたベクトルの算術的削減命令と、第2のセクショングループ化サイズを有する第2の区分されたベクトルの算術的削減命令との実行を可能にする。単一の削減ツリーを使用することは、異なるセクショングループ化サイズを有する複数の命令の実行の間に使用するための複数の削減ツリーを含むプロセッサ比較して、デバイスサイズおよび消費電力の低減を可能にし得る。
【００８１】
図9を参照すると、ベクトル命令を実行するある特定の例示的な処理の図が開示され、全体的に900として示される。ベクトル命令は、例示的な区分されたベクトルの算術的削減命令901のような、区分されたベクトルの算術的削減命令を含み得る。区分されたベクトルの算術的削減命令901は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600の1つまたは複数、図7の削減ツリー700の上記の部分、図8の削減ツリー800、またはこれらの任意の組合せのような削減ツリーを含む、図2のプロセッサ202のようなプロセッサにおいて実行され得る。プロセッサは、入力レジスタ910に記憶されている複数の入力要素902を含む入力ベクトルを受け取ることができる。プロセッサは、複数の入力要素902を処理し、出力レジスタ920の複数の出力要素924(たとえば、内容)を同時に生成することができる。
【００８２】
複数の出力要素924は、区分されたベクトルの算術的削減命令901に基づき得る。たとえば、区分されたベクトルの算術的削減命令901を実行することは、区分されたベクトルの算術的削減命令901のセクショングループ化サイズに基づいて複数の入力要素902のある特定の入力要素を複数の入力要素902の1つまたは複数の他の入力要素に加算することによって、ある特定の出力要素を生成することができる。
【００８３】
入力レジスタ910は、複数の入力要素902を含み得る。たとえば、複数の入力要素902(たとえば、入力ベクトル)はN個の要素を含んでよく、Nは1よりも大きな整数である。複数の入力要素902は、入力要素s0〜s(N-1)を含み得る。複数の入力要素902は、「s0, s1, s2, ...s(N-1)」のような順次的な順序で記憶されてよく、ここでs0は最初の順次的な入力要素であり、s(N-1)は最後の順次的な入力要素である。5つの入力要素が示されているが、複数の入力要素902の数(たとえば、N)は5つよりも多数または少数の要素を含み得る。
【００８４】
区分されたベクトルの算術的削減命令901の実行の前、出力レジスタ920は複数の以前の要素922を含み得る。複数の以前の要素922は、以前の要素d0〜d(N-1)を含み得る。複数の以前の要素922は、図2の回転ベクトル280のような別のベクトルに、または異なるベクトルに含まれ得る。複数の以前の要素922は、別のレジスタまたはメモリ中の位置のような、区分されたベクトルの算術的削減命令901によって特定される位置に記憶され得る。複数の以前の要素は、区分されたベクトルの算術的削減命令901に含まれてよく、または、区分されたベクトルの算術的削減命令901のフィールドまたはパラメータに記憶された値によって、たとえばポインタによって示されてよい。複数の以前の要素922は、区分されたベクトルの算術的削減命令の実行の前に順次的な順序に記憶され得る。たとえば、複数の以前の要素922は、特定の順次的な順序「d0, d1, d2, d3...d(N-1)」に記憶され得る(たとえば、d0は最初の順次的な以前の要素であり、d(N-1)は最後の順次的な以前の要素である)。
【００８５】
処理900は、2という例示的なセクショングループ化サイズを有する区分されたベクトルの算術的削減命令901の実行を示す。区分されたベクトルの算術的削減命令を実行するステップは、入力要素の第1のセット904および入力要素の第2のセット906のような複数のグループへと複数の入力要素902をグループ化するステップを含み得る。第1の算術的(たとえば、加算)演算が、s0+s1に等しい第1の結果を生成するために入力要素904の第1のセットに対して実行されてよく、第2の算術的(たとえば、加算)演算が、s2+s3に等しい第2の結果を生成するために入力要素906の第2のセットに対して実行されてよい。第1の結果(s0+s1)は出力レジスタ920の第1の出力要素916に挿入されてよく、第2の結果(s2+s3)は出力レジスタ920の第2の出力要素918に挿入されてよい。生成される結果の数が出力レジスタ920中の出力要素の数より小さいとき、複数の以前の要素922の1つまたは複数の以前の要素は出力レジスタ920の中にとどまり得る(たとえば、上書きされなくてよい)。たとえば、第1の出力要素916および第2の出力要素918が出力レジスタ920に挿入されるとき、複数の出力要素は複数の出力要素924の中に以前の要素d0およびd2を含み得る。複数の入力要素902は入力要素の異なるセットへとグループ化されてよく、区分されたベクトルの算術的削減命令901のセクショングループ化サイズが異なるサイズであるとき、異なる結果が生成されてよい。
【００８６】
図9に示されるように、区分されたベクトルの算術的削減命令901は、名前vraddwとして示される命令名980(たとえば、オペコード)を含み得る。区分されたベクトルの算術的削減命令901はまた、第1のフィールド982(Vu)、第2のフィールド984(Vd)、第3のフィールド986(Q)、第4のフィールド988(Op)、第5のフィールド990(s2)、第6のフィールド992(sc32)、および第7のフィールド994(sat)を含み得る。第1のフィールド982に記憶される第1の値は、入力レジスタ910に記憶されるものとして入力ベクトルを示し得る。ある代替的に実施形態では、第1のフィールド982に記憶される第1の値は、入力ベクトルのペア(たとえば、ベクトルVuおよび追加のベクトルVv)を示すことができ、ここでベクトルのペアの第1のベクトル(たとえば、Vu)は実数と関連付けられ、ベクトルのペアの第2のベクトル(たとえば、Vv)は虚数と関連付けられる。第2のフィールド984中の第2の値は、区分されたベクトルの算術的削減命令901の実行の間に使用するために出力レジスタ920に記憶されるものとして出力レジスタを示し得る。第3のフィールド986に記憶される第3の値は図11A〜図11Bを参照して説明されるようなマスク(たとえば、マスクQ)を示すことができ、第4のフィールド988に記憶される第4の値は演算ベクトル(たとえば、演算ベクトルOp)を示すことができ、第5のフィールド990に記憶される第5の値はセクショングループ化サイズを示すことができ(たとえば、「s2」は2というセクショングループ化サイズを示し得る)、第6のフィールド992に記憶される第6の値は入力値のタイプを示すことができ(たとえば、「sc32」は32ビットの複素数の入力タイプを示し得る)、第7のフィールド994に記憶される第7の値は区分されたベクトルの算術的削減命令の実行の間に飽和が行われるべきかどうかを示すことができる。7つのフィールドが説明されるが、区分されたベクトルの算術的削減命令はより多数または少数のフィールドを含み得る。
【００８７】
加算演算が説明されているが、区分されたベクトルの算術的削減命令901は、加算演算のみを実行することに限定されない。たとえば、区分されたベクトルの算術的削減命令901は、複数の入力要素902に対して実行されるべき1つまたは複数の算術的演算を示すことができる。1つまたは複数の算術的演算は、加算演算および減算演算を含み得る。1つまたは複数の算術的演算は、第4のフィールド988のような特定のフィールドの中の値(たとえば、特定のパラメータ)によって示され得る。たとえば、第4のフィールド988は、演算ベクトル(たとえば、1つまたは複数の算術的演算を示すベクトル)を記憶するメモリ中の位置、または、演算ベクトルを記憶するレジスタへのポインタを含み得る。演算ベクトルの各要素は、区分されたベクトルの算術的削減命令901の実行の間に複数の入力要素902の対応する要素に対して実行されるべき特定の演算(たとえば、加算演算または減算演算)を示すことができる。たとえば、区分されたベクトルの算術的削減命令を実行するステップは、セクショングループ化サイズに基づいて複数の入力要素902を1つまたは複数の入力グループにグループ化するステップと、1つまたは複数の入力グループに対して1つまたは複数の算術的演算を実行して複数の出力要素924を生成するステップとを含み得る。1つまたは複数の算術的演算の少なくとも1つが減算演算であるとき、複数の入力要素902の1つまたは複数の要素は、複数の出力要素924を生成する前に補足され得る。
【００８８】
演算の間に、プロセッサは、区分されたベクトルの算術的削減命令901を受け取り得る。プロセッサは、複数の入力要素902を使用して区分されたベクトルの算術的削減命令901を実行して、複数の出力要素924を生成し出力レジスタ920に記憶することができる。複数の出力要素924は、区分されたベクトルの算術的削減命令901のセクショングループ化サイズに基づいて複数の入力要素902が入力要素の1つまたは複数のグループにグループ化されたことに基づく結果を表し得る。
【００８９】
区分されたベクトルの算術的削減命令901のセクショングループ化サイズに基づいて複数の出力要素924を生成することによって、区分されたベクトルの算術的削減命令901は、単一の削減ツリーを使用した、異なるセクショングループ化サイズを有する複数の区分されたベクトルの算術的削減命令の実行を可能にする。単一の削減ツリーを使用することは、異なるセクショングループ化サイズを有する複数の命令の実行の間に使用するための複数の削減ツリーを含むプロセッサ比較して、デバイスサイズおよび消費電力の低減を可能にし得る。
【００９０】
図10を参照すると、回転区分されたベクトルの算術的削減命令を実行するある特定の例示的な処理の図が開示され、全体的に1000として示される。回転区分されたベクトルの算術的削減命令は、単一のベクトル命令であってよく、例示的な回転区分されたベクトルの算術的削減命令1001を含んでよい。回転区分されたベクトルの算術的削減命令1001は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600の1つまたは複数、図7の削減ツリー700の上記の部分、図8の削減ツリー800、またはこれらの任意の組合せのような削減ツリーを含む、図2のプロセッサ202のようなプロセッサにおいて実行され得る。プロセッサは、入力レジスタ910に記憶されている複数の入力要素902を含む入力ベクトルを受け取ることができる。プロセッサは、複数の入力要素902を処理し、出力レジスタ920の複数の出力要素1024(たとえば、内容)を同時に生成することができる。
【００９１】
回転区分されたベクトルの算術的削減命令1001は、名前vraddwとして示される命令名1080(たとえば、オペコード)を含み得る。回転区分されたベクトルの算術的削減命令1001はまた、第1のフィールド1082(Vu)、第2のフィールド1084(Vd)、第3のフィールド1086(Q)、第4のフィールド1088(Op)、第5のフィールド1090(s2)、第6のフィールド1092(sc32)、第7のフィールド1094(sat)、および第8のフィールド1096(rot)を含み得る。8つのフィールドが示されるが、回転区分されたベクトルの算術的削減命令1001はより多数または少数のフィールドを含み得る。フィールド1082〜1094は、図9の区分されたベクトルの算術的削減命令901のフィールドに対応し得る。第8のフィールド1096に記憶される値は、回転が行われるべきかどうかを示し得る。たとえば、第8のフィールド1096に記憶される値は、行われるべき回転の方向およびサイズを示し得る。回転は、1つの入力要素のサイズ、たとえば64ビットに等しい回転量を有してよく、左方向であってよい。他の実施形態では、第8のフィールド1096に記憶される値は、回転の他のサイズおよび方向を示し得る。別の例として、第8のフィールド1096に記憶される値は、回転が行われないことを示し得る(たとえば、回転区分されたベクトルの算術的削減命令1001は、図9の区分されたベクトルの算術的削減命令901と同様に動作し得る)。ある特定の実施形態では、第9のフィールド(図示されず)に記憶される値は、出力レジスタ920中の複数の以前の要素922(たとえば、内容)が出力レジスタ920中の算術的命令の結果を記憶する前に上書きされる(たとえば、0に等しく設定される)べきかどうかを示し得る。ある代替的な実施形態では、異なるフィールド(たとえば、第8のフィールド1096)に記憶される値は、出力レジスタ920中の複数の以前の要素922が上書きされるべきかどうかを示し得る。
【００９２】
回転区分されたベクトルの算術的削減命令1001の実行は、回転ステップの加算を伴う区分されたベクトルの算術的削減命令901の実行に従って進行し得る。たとえば、回転区分されたベクトルの算術的削減命令1001の実行は、算術的演算の結果を生成する前に、出力レジスタ920中の複数の以前の要素922を回転すべきかどうかを判定するステップを含み得る。(たとえば、第8のフィールド1096に記憶された値に基づく)複数の以前の要素922が回転されるべきであるという第1の判定に応答して、出力レジスタ920中の複数の以前の要素922(たとえば、内容)は、第8のフィールド1096によって示される回転量だけ回転され得る。たとえば、回転量が64ビットであり方向が右方向であるとき、複数の以前の要素922は1つの以前の要素の分だけ右に回転され得る。したがって、回転区分されたベクトルの算術的削減命令1001の実行の間(たとえば、結果を生成し出力レジスタ910に記憶する前に)、出力レジスタ910の第1の順次的な要素はd(N-1)を記憶することができ、出力レジスタ910の第2の順次的な要素はd(0)を記憶することができ、出力レジスタ910の第3の順次的な要素はd(1)を記憶することができ、出力レジスタ920の最後の順次的な要素はd(N-2)を記憶することができる。別の例として、方向が左方向であるとき、複数の以前の要素922は、回転量の分だけ左に回転され得る。(たとえば、第8のフィールド1096に記憶された値に基づく)複数の以前の要素922が回転されるべきではないという第2の判定に応答して、複数の以前の要素922は、以前の順次的な順序(たとえば、d(0)...d(N-1))で維持され得る。たとえば、複数の以前の要素922は、第8のフィールド1096に記憶された値が0値または空値であるとき(たとえば、第8のフィールド1096が回転区分された算術的削減命令1001に含まれないとき)、回転されなくてよい。したがって、複数の以前の要素922は、回転区分されたベクトルの算術的削減命令1001に基づいて、選択的に(たとえば、任意選択で)回転され得る。
【００９３】
回転区分されたベクトルの算術的削減命令1001を実行するステップはまた、複数の以前の要素922を上書きすべきかどうかを判定するステップを含み得る。たとえば、算術的演算の結果によって置換されない複数の以前の要素922の各要素は、回転区分されたベクトルの算術的削減命令1001に基づいて(たとえば、第9のフィールドに記憶された値に基づいて)0値に設定され得る(たとえば、上書きされ得る)。特定の以前の要素は、図8の加算器の第1の行812の中の入力要素s0の下の加算器によって示されるような、両方の入力に対して0値を受け取る削減ツリー中の対応する加算器によって、0値に設定され得る。他の実施形態では、複数の以前の要素922は異なる値に設定され得る(たとえば、異なる値によって上書きされ得る)。
【００９４】
出力レジスタ920中の複数の以前の要素922が回転された後で、算術的演算の結果は、複数の入力要素902に基づいて生成され、出力レジスタ920に挿入され得る。回転区分されたベクトルの算術的削減命令1001の実行は、入力要素の第1のセット904および入力要素の第2のセット906のような複数のグループへと複数の入力要素902をグループ化することを含み得る。第1の算術的(たとえば、加算)演算が、第1の結果s0+s1を生成するために入力要素の第1のセット904に対して実行されてよく、第2の算術的(たとえば、加算)演算が、第2の結果s2+s3を生成するために入力要素の第2のセット906に対して実行されてよい。第1の結果(s0+s1)は出力レジスタ920の第1の出力要素1016に挿入されてよく、第2の結果(s2+s3)は出力レジスタ920の第2の出力要素1018に挿入されてよい。第1の出力要素1016および第2の出力要素1018は、出力レジスタ920の異なる出力要素であり得る。
【００９５】
入力要素の第1のセット904の入力要素の第1の数および入力要素の第2のセット906の入力要素の第2の数は、回転区分されたベクトルの算術的削減命令1001によって特定されるセクショングループ化サイズに基づき得る。たとえば、要素の第1の数および要素の第2の数は同じであり得る。生成される結果の数が出力レジスタ920中の出力要素の数より小さいとき、複数の以前の要素922の1つまたは複数の回転された以前の要素(または、結果を生成する前に複数の以前の要素922が上書きされるときは1つまたは複数の0値)が、出力レジスタ920の中にとどまり得る(たとえば、上書きされなくてよい)。たとえば、第1の出力要素1016および第2の出力要素1018が出力レジスタ920に挿入されるとき、複数の出力要素は複数の出力要素1024の中に回転された以前の要素d(N-1)およびd1を含み得る。複数の入力要素902は入力要素の異なるセットへとグループ化されてよく、区分されたベクトルの算術的削減命令1001のセクショングループ化サイズが異なるサイズであるとき、異なる結果が生成されてよい。
【００９６】
演算の間に、プロセッサは、回転区分されたベクトルの算術的削減命令1001を受け取り得る。プロセッサは、複数の入力要素902を使用して回転区分されたベクトルの算術的削減命令1001を実行して、複数の出力要素1024を生成し出力レジスタ920に記憶することができる。出力レジスタの内容(たとえば、複数の以前の要素922)は、回転区分されたベクトルの算術的削減命令1001に基づいて選択的に回転されてよく、その結果は、セクショングループ化サイズに基づいて複数の入力要素902が入力要素の1つまたは複数のグループにグループ化されたことに基づいて生成されてよく、出力レジスタ920に挿入されてよい。
【００９７】
図11Aを参照すると、マスキングを伴う累積的なベクトルの算術的削減命令を実行する第1の例示的な実施形態の図が開示され、全体的に1100として示される。例示的で非限定的な例では、累積的なベクトルの算術的削減命令は、図1の累積的なベクトルの算術的削減命令101であり得る。累積的なベクトルの算術的削減命令はマスク1130(たとえば、ベクトルマスク)を特定することができる。図1を参照して説明されたように、マスク1130は、累積的なベクトルの算術的削減命令101の第3のフィールド186(Q)に記憶された値によって示され得る。たとえば、マスク1130は、累積的なベクトルの算術的削減命令に含まれてよく、または命令に含まれるポインタによって示されてよく、ここでポインタは、マスク1130が記憶されるデータ構造中の位置またはレジスタを指し示す。複数の要素102の個々の値(たとえば、要素)は、マスク1130の対応する要素が0に等しいことに基づいてマスクされ得る(たとえば、1つまたは複数の出力要素を生成する際に使用するための削減ツリーに0値として提供され得る)。代替的に、値は、マスク1130の要素が1に等しいことに基づいてマスクされ得る。
【００９８】
累積的なベクトルの算術的削減命令の実行の間、マスク1130は、第1の出力要素112として第1の要素104を提供する前に、複数の要素102に適用され得る。マスク1130を適用するステップは、マスク1130の対応するマスク値を条件として、複数の要素102のある特定の要素に対して0値を提供するステップを含み得る。示されるように、入力ベクトル122は、複数の要素102へのマスク1130の適用の前には、要素s0、s1、s2、およびs(N-1)を含む。マスク1130を適用した後で、複数の要素102は、s0、0(マスク1130の対応する要素が0に等しいことに基づいてs1の代わりに提供される)、s2、およびs(N-1)を含む。別の実施形態では、マスク1130を複数の要素に適用するステップは、入力ベクトル122中の複数の要素102の1つまたは複数の要素の値を修正するステップを含み得る。マスク1130を複数の要素102に適用した後で、累積的なベクトルの算術的削減命令の実行は、図1を参照して説明されるように進行し得る。したがって、出力ベクトル120は、s0に等しい第1の出力要素112、0+s0(たとえば、s0)に等しい第2の出力要素114、s2+s0に等しい第3の出力要素116、およびs0+s2+...+s(N-1)に等しいN番目の出力要素118を含み得る。
【００９９】
図11Bを参照すると、マスキングを含む累積的なベクトルの算術的命令を実行する第2の例示的な実施形態の図が開示され、全体的に1101として示される。累積的なベクトルの算術的削減命令を実行するステップは、マスク1130を出力ベクトル120に適用するステップを含み得る。
【０１００】
累積的なベクトルの算術的削減命令の実行の間、マスク1130は、マスキングされた出力ベクトル1126を生成するために出力ベクトル120に適用され得る。示されるようにマスク1130を適用することは、要素s0、0、s0+s1+s2、およびs0+s1+s2+...+s(N-1)を有するマスキングされた出力ベクトル1126をもたらし得る。図11Bは出力要素が出力ベクトル120に記憶された後でマスク1130を適用することを示すが、マスク1130は、出力ベクトル120を埋める前に算術的演算の結果に適用されてよい。たとえば、1つまたは複数の出力(たとえば、s0+s1)は、出力ベクトル120中の以前の値が上書きされないように、マスク1130に基づいて出力ベクトル120に記憶されることを防がれ得る。ある特定の実施形態では、出力ベクトル120およびマスキングされた出力ベクトル1126は、同じ位置に、たとえば同じレジスタに記憶され得る。
【０１０１】
加えて、図11A〜図11Bに示されるマスキングは、図9の区分されたベクトルの算術的削減命令901に、または図10の回転区分されたベクトルの算術的削減命令1001にも、同様の方式で適用され得る。たとえば、区分されたベクトルの算術的削減命令901の実行の間、マスク1130は、複数の要素102をグループ化する前に、複数の要素102に適用され得る。別の例として、回転区分されたベクトルの算術的削減命令1001の実行の間、マスク1130は、出力ベクトル120を供給する出力レジスタの内容を回転させた後で(たとえば、出力ベクトル120の内容を回転させた後で)、出力ベクトル120に適用され得る。
【０１０２】
図12を参照すると、累積的なベクトルの算術的削減命令を実行する方法1200の例示的な実施形態のフローチャートが示される。累積的なベクトルの算術的削減命令は、図1の累積的なベクトルの算術的削減命令101、または図2のベクトル命令220であり得る。ある特定の実施形態では、方法1200は、図2のプロセッサ202によって実行され得る。
【０１０３】
ベクトル命令は、1202においてプロセッサにおいて実行され得る。ベクトル命令は、図1の累積的なベクトルの算術的削減命令101であり得る。ベクトル命令は、複数の入力要素を含むベクトル入力を含み得る。たとえば、ベクトル入力は、図1〜図6の入力ベクトル122であり得る。ベクトル入力は、図1の複数の入力要素102を含み得る。複数の入力要素(たとえば、ベクトル入力)は、順次的な順序で記憶され得る。入力ベクトルは、ベクトル命令によって特定され得る。たとえば、ベクトル入力は、図1のベクトルの算術的削減命令101の第3のフィールド184のような特定のフィールド(たとえば、パラメータ)に記憶された値によって特定され得る。
【０１０４】
1204において、複数の入力要素の第1の入力要素は、第1の出力要素として提供され得る。第1の入力要素は図1の第1の要素104(s0)であってよく、第1の出力要素は図1の第1の出力要素112(s0)であってよい。たとえば、第1の入力要素は、0入力(たとえば、論理0に等しい値)を第1の入力要素に加算することによって、第1の出力要素として提供され得る(たとえば、生成され得る)。0入力は、図7を参照して説明されたように、プロセッサに含まれる制御論理からの制御信号に基づいて加算され得る。
【０１０５】
1206において、第2の出力要素を提供する(たとえば、生成する)ために、第1の算術的演算が、複数の入力要素の第1の入力要素および第2の入力要素に対して実行され得る。たとえば、第1の算術的演算は加算演算であり得る。他の実施形態では、第1の算術的演算は減算演算であり得る。第2の入力要素は図1の第2の要素106(s1)であってよく、第2の出力要素は図1の第2の出力要素114(s0+s1)であってよい。たとえば、第1の入力要素および第2の入力要素の合計に等しい値は、第2の出力要素として生成され得る(たとえば、提供され得る)。各入力要素および各出力要素は複数の副要素を含んでよく、図3〜図4を参照して説明されるようなインターリーブされた方式で、副要素ごとに副要素に対して加算が実行され得る。
【０１０６】
1208において、第1の出力要素および第2の出力要素は、出力ベクトルに記憶され得る。出力ベクトルは、図1〜図6の出力ベクトル120であり得る。たとえば、第1の出力要素(たとえば、第1の入力要素に等しい値)および第2の出力要素(たとえば、第1の入力要素および第2の入力要素の合計に等しい値)が、図1に示されるように、出力ベクトルの異なる出力要素に記憶され得る。
【０１０７】
追加の出力要素が同様の方式で生成され得る。たとえば、第3の出力要素を生成する(たとえば、提供する)ために、第2の算術的演算が、複数の入力要素の第1の入力要素、第2の入力要素、および第3の入力要素に対して実行され得る。したがって、特定の出力要素は、複数の入力要素のある特定の要素、および、順次的な順序においてその特定の入力要素より順序的に前にある複数の要素の1つまたは複数の他の入力要素に対して、特定の算術的演算を実行することによって生成され得る。
【０１０８】
方法1200によれば、複数の出力要素(たとえば、第1の出力要素および第2の出力要素)が生成されてよく、累積的なベクトルの算術的削減の複数の部分的な結果を表し得る。単一のベクトル命令の実行の間に複数の部分的な結果を生成することによって、方法1200は、複数のベクトル命令の実行の間に複数の部分的な結果を生成することと比較して、記憶容量と電力消費の改善をもたらし得る。
【０１０９】
図13を参照すると、削減ツリーを使用してベクトル命令を実行する方法1300の例示的な実施形態のフローチャートが示される。ベクトル命令は、図2のベクトル命令220、または図9の区分されたベクトルの算術的削減命令901であり得る。ある特定の実施形態では、方法1300は、図2のプロセッサ202によって実行され得る。
【０１１０】
1302において、セクショングループ化サイズを含むベクトル命令が、プロセッサにおいて受け取られ得る。たとえば、ベクトル命令は、第5のフィールド990によって示されるセクショングループ化サイズを有する図9の区分されたベクトルの算術的削減命令901であり得る。プロセッサは削減ツリーを含み得る。削減ツリーは、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、図8の削減ツリー800、またはこれらの任意の組合せを含み得る。削減ツリーは、複数の入力と、複数の算術的演算ユニットと、複数の出力とを含み得る。たとえば、説明のための例として、複数の入力は、図8の複数の入力要素802または図9の複数の入力要素902であってよく、複数の算術的演算ユニットは、図8の複数の加算器804であってよく、複数の出力は、図8の複数の出力要素806または図9の複数の出力要素924であってよい。
【０１１１】
1304において、セクショングループ化サイズが決定され得る。たとえば、セクショングループ化サイズは、図9の第5のフィールド990のようなベクトル命令の特定のフィールドに基づいて決定され得る。セクショングループ化サイズは、ベクトル命令の実行の間に複数の入力要素と関連付けられる1つまたは複数のグループのサイズを示し得る。
【０１１２】
1306において、ベクトル命令が、セクショングループ化サイズに基づいて複数の出力を同時に生成するために、削減ツリーを使用して実行され得る。たとえば、ベクトル命令を実行するステップは、セクショングループ化サイズを有する1つまたは複数のグループへと複数の入力要素をグループ化するステップと、1つまたは複数のグループに対して1つまたは複数の算術的演算を実行して複数の出力を生成するステップとを含み得る。複数の出力は、ベクトル削減命令に基づいてプロセッサの単一の処理サイクルの間に生成され得る。
【０１１３】
削減ツリーは、複数の異なるセクショングループ化サイズとともに使用するために選択的に構成可能であり得る。たとえば、削減ツリーの構成は、特定のセクショングループ化サイズと関連付けられ得る。削減ツリーの構成は、複数の加算器804のサブセットおよび図8の複数の経路830〜844のような、算術的演算ユニットの特定のサブセットが有効にされたこと、および、算術的演算ユニットの入力の特定のサブセットが選択されたこと(たとえば、経路の特定のセットが有効にされたこと)と関連付けられ得る。ベクトル命令においてセクショングループ化サイズを決定した後で、プロセッサは、セクショングループ化サイズとともに使用するために削減ツリーが構成されるかどうか(たとえば、削減ツリーがセクショングループ化サイズと関連付けられる特定の構成の中にあるかどうか)を判定することができる。削減ツリーがセクショングループ化サイズとともに使用するために構成されないという判定に応答して、削減ツリーの構成はセクショングループ化サイズに基づいて変更され得る。たとえば、複数の算術的演算ユニットの1つまたは複数の算術的演算ユニットが有効にされてよく、1つまたは複数の算術的演算ユニットの入力がセクショングループ化サイズに基づいて選択されてよい。削減ツリーがセクショングループ化サイズとともに使用するために構成されるという判定に応答して、ベクトル命令は削減ツリーを使用して実行され得る。たとえば、削減ツリーがセクショングループ化サイズと関連付けられる特定の構成においてすでに構成されているとき、削減ツリーはベクトル命令の実行の前に変更されなくてよい。
【０１１４】
方法1300によれば、削減ツリーは、異なるセクショングループ化サイズを有する複数の命令とともに使用するために選択的に構成可能であり得る。単一の削減ツリーを使用することは、異なるセクショングループ化サイズを有する複数の命令の実行の間に使用するための複数の削減ツリーを含むプロセッサ比較して、デバイスサイズおよび消費電力の低減を可能にし得る。
【０１１５】
図14を参照すると、回転区分されたベクトルの算術的削減命令を実行する方法1400の例示的な実施形態のフローチャートが示される。回転区分されたベクトルの算術的削減命令は、図2のベクトル命令220、または図10の回転区分されたベクトルの算術的削減命令1001であり得る。ある特定の実施形態では、方法1400は、図2のプロセッサ202によって実行され得る。
【０１１６】
1402において、複数の入力要素を含むベクトル命令が実行され得る。たとえば、ベクトル命令は回転区分されたベクトルの算術的削減命令1001であってよく、複数の入力要素は図10の複数の入力要素902であってよい。
【０１１７】
1404において、複数の入力要素の第1のサブセットが入力要素の第1のセットを形成するようにグループ化され得る。たとえば、入力要素の第1のセットは図10の入力要素1004の第1のセットであり得る。複数の入力要素の第1のサブセットは、セクショングループ化サイズが回転区分されたベクトルの算術的削減命令に含まれることに基づいて、入力要素の第1のセットを形成するようにグループ化され得る。たとえば、セクショングループ化サイズは、図10の回転区分されたベクトルの算術的削減命令1001の第5のフィールド1090のような、回転区分されたベクトルの算術的削減命令の特定のフィールド(たとえば、パラメータ)によって特定され得る。
【０１１８】
1406において、複数の入力要素の第2のサブセットが入力要素の第2のセットを形成するようにグループ化され得る。たとえば、入力要素の第2のセットは図10の入力要素1006の第2のセットであり得る。複数の入力要素の第2のサブセットは、セクショングループ化サイズが回転区分されたベクトルの算術的削減命令に含まれることに基づいて、入力要素の第2のセットを形成するようにグループ化され得る。ある特定の実施形態では、入力要素の第1のセットのサイズおよび入力要素の第2のセットのサイズは同じであり得る。ある代替的な実施形態では、入力要素の第1のセットのサイズおよび入力要素の第2のセットのサイズは異なるサイズであり得る。
【０１１９】
1408において、第1の算術的演算が入力要素の第1のセットに対して実行され得る。たとえば、第1の加算演算が入力要素の第1のセットに対して実行され得る。ある特定の実施形態では、第1の算術的演算は演算ベクトルによって示され得る。演算ベクトルは、図10の回転区分されたベクトルの算術的削減命令1001の第4のフィールド1088のような、回転区分されたベクトルの算術的削減命令の特定のフィールド(たとえば、パラメータ)に記憶された値によって示され得る。
【０１２０】
1410において、第2の算術的演算が入力要素の第2のセットに対して実行され得る。たとえば、第2の加算演算が入力要素の第2のセットに対して実行され得る。ある特定の実施形態では、第2の算術的演算は演算ベクトルによって示され得る。
【０１２１】
1412において、出力レジスタの内容が回転され得る。たとえば、出力レジスタは、図10の出力レジスタ1020であってよく、図10の複数の以前の要素922のような複数の以前の要素(たとえば、内容)を含んでよい。出力レジスタは、図10の回転区分されたベクトルの算術的削減命令1001の第2のフィールド1084のような、回転区分されたベクトルの算術的削減命令の特定のフィールド(たとえば、パラメータ)に記憶された値によって特定され得る。説明のための例として、複数の以前の要素は、以前に実行されたベクトル命令によって生成された結果であってよく、または、複数の空値であってよい。ある特定の実施形態では、複数の以前の要素は、以前に実行された回転区分されたベクトルの算術的削減命令の結果であり得る。出力レジスタの内容を回転させるステップは、図10の回転区分されたベクトルの算術的削減命令1001の第8のフィールド1096(たとえば、回転フィールド)のような、回転区分されたベクトルの算術的削減命令の特定のフィールド(たとえば、パラメータ)に記憶された値に基づいて、出力レジスタの内容を選択的に(たとえば、任意選択で)回転させるステップを含み得る。たとえば、回転フィールドに記憶された値は回転のサイズおよび回転の方向を示すことができ、出力レジスタの内容は回転のサイズの分だけ回転の方向に回転され得る。出力レジスタの内容は、回転区分されたベクトルの算術的削減命令の特定のフィールドに基づいて上書きされ得る(たとえば、0値に等しく設定され得る)。
【０１２２】
1414において、出力レジスタの内容を回転させた後で、第1の算術的演算の第1の結果および第2の算術的演算の第2の結果が、出力レジスタに挿入され得る。たとえば、第1の結果は出力レジスタの第1の出力要素に挿入されてよく、第2の結果は出力レジスタの第2の出力要素に挿入されてよい。第1の出力要素は図10の第1の出力要素1016であってよく、第2の出力要素は図10の第2の出力要素1018であってよい。第1の結果および第2の結果は、出力レジスタに以前に記憶された(かつ1412において回転された)値を上書きすることができる。
【０１２３】
方法1400によれば、回転と区分されたベクトルの算術的削減とが、単一の削減ツリーを使用した単一のベクトル命令の実行を通じて、複数のセクショングループ化サイズに対して実行され得る。単一の削減ツリーを使用することは、異なるセクショングループ化サイズを有する複数の命令の実行の間に使用するための複数の削減ツリーを含むプロセッサ比較して、デバイスサイズおよび消費電力の低減を可能にし得る。
【０１２４】
図15を参照すると、累積的なベクトルの算術的削減命令1562および区分されたベクトルの算術的削減命令1564の実行において使用される削減ツリー1580を含むデバイス(たとえば、通信デバイス)のある特定の例示的な実施形態のブロック図が図示され、全体的に1500として示される。説明のための例として、削減ツリー1580は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、または図8の削減ツリー800を含み得る。デバイス1500は、ワイヤレス電子デバイスであってよく、メモリ1532に結合されたデジタル信号プロセッサ(DSP)1510のようなプロセッサを含んでよい。
【０１２５】
プロセッサ1510は、メモリ1532(たとえば、コンピュータ可読記憶媒体)に記憶されたコンピュータ実行可能命令1560(たとえば、1つまたは複数の命令のプログラム)を実行するように構成され得る。命令1560は、累積的なベクトルの算術的削減命令1562および/または区分されたベクトルの算術的削減命令1564を含み得る。累積的なベクトルの算術的削減命令1562は、図1の累積的なベクトルの算術的削減命令101、または図2のベクトル命令220であり得る。区分されたベクトルの算術的削減命令1564は、図2のベクトル命令220、図9の区分されたベクトルの算術的削減命令901、または図10の回転区分されたベクトルの算術的削減命令1001であり得る。
【０１２６】
カメラインターフェース1568はプロセッサ1510に結合され、ビデオカメラ1570のようなカメラにも結合される。ディスプレイコントローラ1526は、プロセッサ1510およびディスプレイ1528に結合される。コーダ/デコーダ(コーデック)1534も、プロセッサ1510に結合され得る。スピーカー1536およびマイクロフォン1538は、コーデック1534に結合され得る。アンテナ1542およびワイヤレスインターフェース1540を介して受信されたワイヤレスデータがプロセッサ1510に提供され得るように、ワイヤレスインターフェース1540は、プロセッサ1510およびアンテナ1542に結合され得る。
【０１２７】
ある特定の実施形態では、プロセッサ1510は、プロセッサ1510のようなコンピュータに第1の出力要素を複数の要素の第1の要素として提供させるように実行可能である、メモリ1532のような非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令1560を実行するように構成され得る。コンピュータ実行可能命令1560は、累積的なベクトルの算術的削減命令1562を含み得る。複数の要素は、図1の複数の要素102であってよく、図1〜図6の入力ベクトル122のような入力ベクトルに記憶されてよい。コンピュータ実行可能命令1560はさらに、複数の要素の第1の要素および第2の要素に対して算術的演算を実行して第2の出力を提供するように、コンピュータによって実行可能であり得る。コンピュータ実行可能命令1560はさらに、第1の出力および第2の出力を出力ベクトルに記憶するようにコンピュータによって実行可能であり得る。出力ベクトルは、図1〜図6の出力ベクトル120であり得る。
【０１２８】
ある特定の実施形態では、プロセッサ1510は、プロセッサ1510のようなコンピュータにセクショングループ化サイズを含むベクトル命令を受け取らせるように実行可能である、メモリ1532のような非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令1560を実行するように構成され得る。ベクトル命令は、区分されたベクトルの算術的削減命令1564であり得る。コンピュータ実行可能命令1560はさらに、セクショングループ化サイズを決定するように実行可能であり得る。コンピュータ実行可能命令1560はさらに、削減ツリーを使用してベクトル命令を実行して、セクショングループ化サイズに基づいて複数の出力を同時に生成するように実行可能であり得る。説明のための例として、削減ツリーは、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、または図8の削減ツリー800を含み得る。削減ツリーは、複数の入力と、複数の算術的演算ユニットと、複数の出力とを含み得る。削減ツリーは、複数の異なるセクショングループ化サイズとともに使用するために選択的に構成可能であり得る。
【０１２９】
ある特定の実施形態では、プロセッサ1510、ディスプレイコントローラ1526、メモリ1532、コーデック1534、ワイヤレスインターフェース1540、およびカメラインターフェース1568は、システムインパッケージデバイスまたはシステムオンチップデバイス1522に含まれる。ある特定の実施形態では、入力デバイス1530および電源1544がシステムオンチップデバイス1522に結合される。その上、ある特定の実施形態では、図15に示されるように、ディスプレイ1528、入力デバイス1530、スピーカー1536、マイクロフォン1538、アンテナ1542、ビデオカメラ1570、および電源1544は、システムオンチップデバイス1522の外部にある。しかしながら、ディスプレイ1528、入力デバイス1530、スピーカー1536、マイクロフォン1538、アンテナ1542、ビデオカメラ1570、および電源1544の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス1522のコンポーネントに結合され得る。
【０１３０】
図12〜図14の方法1200〜1400は、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、中央処理装置(CPU)のような処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組合せによって実施され得る。ある例として、図12の方法1200、図13の方法1300、図14の方法1400、またはこれらの任意の組合せは、図15に関して説明されるように、メモリ1532に記憶された命令を実行するプロセッサによって開始され得る。
【０１３１】
説明された実施形態の1つまたは複数とともに、第1の出力として複数の要素の第1の要素を提供するための手段を含み得る装置が開示される。提供するための手段は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、図8の削減ツリー800のような削減ツリーの1つまたは複数の加算器、第1の出力として第1の要素を提供するように構成される1つまたは複数の他のデバイスもしくは回路、またはこれらの任意の組合せを含み得る。装置はさらに、複数の要素の第1の要素および第2の要素に基づいて、第2の出力を生成するための手段を含み得る。生成するための手段は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、図8の削減ツリー800のような削減ツリーの1つまたは複数の加算器、第1の要素および第2の要素に基づいて第2の出力を生成するように構成される1つまたは複数の他のデバイスもしくは回路、またはこれらの任意の組合せを含み得る。装置はさらに、第1の出力および第2の出力を出力ベクトルに記憶するための手段を含み得る。記憶するための手段は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、図8の削減ツリー800、出力ベクトルに出力を記憶するように構成される1つまたは複数の他のデバイスもしくは回路、またはこれらの任意の組合せを含み得る。
【０１３２】
装置はまた、第2の出力を飽和させるための手段を含み得る。飽和させるための手段は、図7の第1の飽和論理回路730もしくは第2の飽和論理回路732、出力を飽和させるように構成される1つまたは複数の他のデバイスもしくは回路、またはこれらの任意の組合せを含み得る。
【０１３３】
説明された実施形態の1つまたは複数とともに、ベクトル命令に基づいて複数の出力を同時に生成するための手段を含み得る装置が開示される。同時に生成するための手段は、図2の削減ツリー206、図3〜図6の削減ツリー300〜600、図7の削減ツリー700の上記の部分、図8の削減ツリー800、ベクトル命令に基づいて複数の出力を同時に生成するように構成される1つまたは複数の他のデバイスもしくは回路、またはこれらの任意の組合せを含み得る。同時に生成するための手段は、第1のセクショングループ化サイズを含む第1の命令の実行および第2のセクショングループ化サイズを含む第2の命令の実行の間に、プロセッサによって使用され得る。
【０１３４】
開示された実施形態の1つまたは複数は、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、可動位置データユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、タブレット、デスクトップコンピュータ、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星無線、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、またはこれらの組合せを含み得るデバイス1500のような、システムまたは装置において実装され得る。別の例示的で非限定的な例として、システムまたは装置は、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、全地球測位システム(GPS)対応デバイス、ナビゲーションデバイス、メータ読取り機器などの固定位置データユニット、または、データもしくはコンピュータ命令を記憶するか取り出す任意の他のデバイス、あるいはそれらの任意の組合せのような、遠隔ユニットを含み得る。図1〜図15の1つまたは複数は、本開示の教示に従ったシステム、装置、および/または方法を示し得るが、本開示は、これらの示されたシステム、装置、および/または方法に限定されない。本開示の実施形態は、メモリおよびオンチップ回路を含む集積回路を含む任意のデバイスにおいて適切に採用され得る。
【０１３５】
開示された実施形態の1つまたは複数は、通信デバイス、固定位置データユニット、可動位置データユニット、携帯電話、セルラー電話、コンピュータ、タブレット、ポータブルコンピュータ、またはデスクトップコンピュータを含み得る、デバイス1500のようなシステムまたは装置において実装され得る。加えて、デバイス1500は、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、データもしくはコンピュータ命令を記憶するか取り出す任意の他のデバイス、またはそれらの組合せを含み得る。別の例示的で非限定的な例として、システムまたは装置は、携帯電話、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、全地球測位システム(GPS)対応デバイス、ナビゲーションデバイス、メータ読取り機器などの固定位置データユニット、または、データもしくはコンピュータ命令を記憶するか取り出す任意の他のデバイス、あるいはそれらの任意の組合せのような、遠隔ユニットを含み得る。
【０１３６】
図1〜図15の1つまたは複数は、本開示の教示に従ったシステム、装置、および/または方法を示し得るが、本開示は、これらの示されたシステム、装置、および/または方法に限定されない。本開示の実施形態は、メモリ、プロセッサ、およびオンチップ回路を含む集積回路を含む任意のデバイスにおいて、適切に採用され得る。
【０１３７】
当業者は、さらに、本明細書で開示される実施形態に関連して説明された様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはその両方の組合せとして実施され得ることを諒解するであろう。様々な例示的なコンポーネント、ブロック、構成、モジュール、回路、およびステップは、上では全般的にその機能に関して説明された。そのような機能がハードウェアとして実装されるか、または実行ソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明される機能を具体的な適用例ごとに様々な形で実装することができるが、そのような実装の判断が本開示の範囲からの逸脱を引き起こすと解釈されてはならない。
【０１３８】
本明細書で開示される実施形態に関連して説明される方法またはアルゴリズムのステップは、ハードウェア内で直接に、プロセッサによって実行されるソフトウェアモジュール内で、またはこの2つの組合せで、実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な非一時的(たとえば、有形)記憶媒体は、プロセッサが記憶媒体から情報を読み込み、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態では、記憶媒体は、プロセッサと一体であってよい。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)内に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替形態では、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別のコンポーネントとして存在し得る。
【０１３９】
開示される実施形態のこれまでの説明は、当業者が開示される実施形態を作成しまたは使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義されている原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書に示されている実施形態に限定されることを意図されておらず、以下の特許請求の範囲によって定義される原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【０１４０】
100  処理
101  累積的なベクトルの算術的削減命令
102  複数の要素
104  第1の要素
106  第2の要素
108  第3の要素
110  N番目の要素
112  第1の出力要素
114  第2の出力要素
116  第3の出力要素
118  N番目の出力要素
120  出力ベクトル
122  入力ベクトル
180  命令名
182  第1のフィールド
184  第2のフィールド
186  第3のフィールド
188  第4のフィールド
190  第5のフィールド
192  第6のフィールド
200  システム
202  プロセッサ
204  算術論理演算装置
206  削減ツリー
208  回転ユニット
210  制御論理
212  マルチプレクサ
220  ベクトル命令
280  回転ベクトル
300  削減ツリー
302  第1の入力要素
304  第2の入力要素
306  第1の出力要素
308  第2の出力要素
312  第1の行
320  第1の加算器
321  第2の加算器
322  第1の副加算器
324  第2の副加算器
326  第3の副加算器
328  第4の副加算器
330  第1の入力副要素
332  第2の入力副要素
334  第3の入力副要素
336  第4の入力副要素
338  第5の入力副要素
340  第6の入力副要素
342  第7の入力副要素
344  第8の入力副要素
366  第1の出力副要素
368  第2の出力副要素
370  第3の出力副要素
372  第4の出力副要素
374  第5の出力副要素
376  第6の出力副要素
378  第7の出力副要素
380  第8の出力副要素
400  削減ツリー
402  加算器
404  加算器
406  加算器
408  加算器
410  第3の入力要素
412  第4の入力要素
414  第2の行
422  第3の出力要素
424  第4の出力要素
500  削減ツリー
502  複数の入力要素
504  複数の加算器
506  複数の出力要素
512  第1の行
514  第2の行
516  第3の行
518  第4の行
600  削減ツリー
608  第2の出力要素
610  出力ベクトル
614  第2の行
616  第3の行
618  第3の加算器
619  第4の加算器
625  第5の副加算器
627  第6の副加算器
629  第7の副加算器
700  削減ツリー
702  第1の入力要素
706  第1の出力要素
712  第1の加算器
720  第1のマルチプレクサ
724  第2マルチプレクサ
730  飽和論理回路
732  第1の加算器
734  第2の加算器入力
744  第1の制御信号
746  第2の制御信号
800  削減ツリー
802  複数の入力要素
804  複数の加算器
806  複数の出力要素
812  第1の行
814  第2の行
816  第3の行
818  第4の行
820  出力ベクトル
830  第1の経路
832  経路
834  経路
836  経路
840  第2の経路
842  経路
844  第3の経路
850  第1の加算器
852  第2の加算器
854  第3の加算器
856  第4の加算器
900  処理
901  区分されたベクトルの算術的削減命令
902  複数の入力要素
904  第1のセット
906  第2のセット
910  入力レジスタ
916  第1の出力要素
918  第2の出力要素
920  出力レジスタ
922  複数の以前の要素
924  複数の出力要素
980  命令名
982  第1のフィールド
984  第2のフィールド
986  第3のフィールド
988  第4のフィールド
990  第5のフィールド
992  第6のフィールド
994  第7のフィールド
1000  処理
1001  回転区分されたベクトルの算術的削減命令
1016  第1の出力要素
1018  第2の出力要素
1024  複数の出力要素
1080  命令名
1082  第1のフィールド
1084  第2のフィールド
1086  第3のフィールド
1088  第4のフィールド
1090  第5のフィールド
1092  第6のフィールド
1094  第7のフィールド
1096  第8のフィールド
1100  処理
1126  マスキングされた出力ベクトル
1130  マスク
1200  方法
1300  方法
1400  方法
1500  デバイス
1510  プロセッサ
1522  システムオンチップデバイス
1526  ディスプレイコントローラ
1528  ディスプレイ
1530  入力デバイス
1532  メモリ
1534  コーデック
1536  スピーカー
1538  マイクロフォン
1540  ワイヤレスインターフェース
1542  アンテナ
1544  電源
1560  ソフトウェア(たとえば、命令)
1562  累積的なベクトルの算術的削減命令
1564  区分されたベクトルの算術的削減命令
1568  カメラインターフェース
1570  ビデオカメラ
1580  削減ツリー
【図１】
2016530631.tif 000003
【図２】
2016530631.tif 000004
【図３】
2016530631.tif 000005
【図４】
2016530631.tif 000006
【図５】
2016530631.tif 000007
【図６】
2016530631.tif 000008
【図７】
2016530631.tif 000009
【図８】
2016530631.tif 000010
【図９】
2016530631.tif 000011
【図１０】
2016530631.tif 000012
【図１１Ａ】
2016530631.tif 000013
【図１１Ｂ】
2016530631.tif 000014
【図１２】
2016530631.tif 000015
【図１３】
2016530631.tif 000016
【図１４】
2016530631.tif 000017
【図１５】
2016530631.tif 000018
【手続補正書】
【提出日】平成27年10月15日(2015.10.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサにおいてベクトル命令を実行するステップを備える方法であって、前記ベクトル命令が複数の要素を含むベクトル入力を備え、前記ベクトル命令を実行するステップが、
第1の出力として前記複数の要素の第1の要素を提供するステップと、
前記複数の要素の前記第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力を提供するステップと、
前記プロセッサの単一の実行サイクルの間に、前記第1の出力および前記第2の出力を出力ベクトルに記憶するステップと
を備える、方法。
【請求項２】
前記ベクトル命令を実行するステップがさらに、
前記複数の要素の前記第1の要素、前記第2の要素、および第3の要素に対して第2の算術的演算を実行して、第3の出力を提供するステップと、
前記プロセッサの単一の実行サイクルの間に、前記第1の出力、前記第2の出力、および前記第3の出力を前記出力ベクトルに記憶するステップとを備える、請求項1に記載の方法。
【請求項３】
前記ベクトル命令を実行するステップがさらに、前記出力ベクトルの異なる出力要素に複数の出力の各々を記憶するステップを備え、前記複数の出力が前記第1の出力および前記第2の出力を含む、請求項1に記載の方法。
【請求項４】
前記複数の要素が順次的な順序で記憶され、前記ベクトル命令を実行するステップがさらに、前記複数の要素の特定の要素および前記複数の要素の1つまたは複数の他の要素に対して第2の算術的演算を実行して特定の出力を生成するステップを備え、前記1つまたは複数の他の要素が前記順次的な順序において前記特定の要素よりも順序的に前にある、請求項1に記載の方法。
【請求項５】
前記ベクトル入力の第1のサイズが前記出力ベクトルの第2のサイズと同じである、請求項4に記載の方法。
【請求項６】
N個の出力のN番目の出力が前記複数の要素の各要素の合計に等しく、前記N個の出力が実数、虚数、または複素数である、請求項5に記載の方法。
【請求項７】
前記ベクトル命令を実行するステップがさらに、前記第1の要素を前記第1の出力として提供する前に前記複数の要素にマスクを適用するステップを備える、請求項1に記載の方法。
【請求項８】
前記ベクトル命令を実行するステップが、前記第1の出力および前記第2の出力を含む複数の出力を生成するステップを含み、前記マスクを適用するステップが、前記マスクの対応するマスク値を条件として、前記複数の出力を生成する際に使用するための前記複数の要素の特定の要素に対して0値を提供するステップを備える、請求項7に記載の方法。
【請求項９】
前記マスクが前記ベクトル命令によって特定される、請求項7に記載の方法。
【請求項１０】
前記ベクトル命令を実行するステップがさらに、マスクを前記出力ベクトルに適用するステップを備える、請求項1に記載の方法。
【請求項１１】
前記ベクトル命令を実行するステップがさらに、前記マスクに基づいて1つまたは複数の出力が前記出力ベクトルに記憶されるのを防ぐステップを備える、請求項10に記憶の方法。
【請求項１２】
前記ベクトル命令を実行するステップがさらに、前記ベクトル命令が複素数演算と関連付けられるとき、
前記第1の出力の第1の実数副要素および前記第1の出力の第1の虚数副要素を生成するステップと、
前記第2の出力の第2の実数副要素および前記第2の出力の第2の虚数副要素を生成するステップとを備え、
前記第1の出力および前記第2の出力を出力ベクトルに記憶するステップが、前記プロセッサの前記単一の実行サイクルの間に、前記第1の出力の前記第1の実数副要素、および前記第1の出力の前記第1の虚数副要素、および前記第2の出力の前記第2の実数副要素、および前記第2の出力の前記第2の虚数副要素を、前記出力ベクトルに記憶するステップを含む、請求項1に記載の方法。
【請求項１３】
削減ツリーを備えるプロセッサを備える装置であって、複数の要素を含むベクトル入力を特定するベクトル命令の実行の間に、前記削減ツリーが、
第1の出力要素として前記複数の要素の第1の要素を提供し、
前記複数の要素の前記第1の要素および第2の要素に対して第1の算術的演算を実行して、第2の出力要素を提供し、
前記プロセッサの単一の実行サイクルの間に、前記第1の出力要素および前記第2の出力要素を出力ベクトルに記憶する
ように構成される、装置。
【請求項１４】
前記削減ツリーが、複数の算術的演算ユニット、複数の入力、および複数の出力を備え、前記削減ツリーが、前記複数の要素の前記第1の要素、前記第2の要素、および第3の要素に対して第2の算術的演算ユニットを実行して、第3の出力要素を提供するように構成される、請求項13に記載の装置。
【請求項１５】
前記複数の算術的演算ユニットの特定の算術的演算ユニットが、前記特定の算術的演算ユニットの出力を飽和させるように構成される飽和論理回路に結合される、請求項14に記載の装置。
【請求項１６】
前記プロセッサがさらに、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットの1つまたは複数の算術的演算ユニットを選択的に有効にするように構成される制御論理を備え、前記第1の出力要素および前記第2の出力要素が、前記1つまたは複数の算術的演算ユニットを介して提供される、請求項14に記載の装置。
【請求項１７】
前記制御論理が、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットのサブセットが0入力を受け取ることを可能にするように構成され、前記0入力が、論理0に等しい論理値を有する、請求項16に記載の装置。
【請求項１８】
前記制御論理が、前記ベクトル命令に基づいて、前記複数の算術的演算ユニットの少なくとも1つの算術的演算ユニットを迂回するように構成される、請求項16に記載の装置。
【請求項１９】
前記削減ツリーが複数の累積的な並列削減ネットワークへと論理的に区分され、前記複数の累積的な並列削減ネットワークの第1の累積的な削減ネットワークが複数の加算器の各加算器の副加算器を含み、前記複数の累積的な並列削減ネットワークの各々の累積的な削減ネットワークが並列に動作し、前記複数の累積的な並列削減ネットワークの各々の累積的な削減ネットワークが出力を前記出力ベクトルに記憶する、請求項13に記載の装置。
【請求項２０】
第1の出力として複数の要素の第1の要素を提供するための手段であって、ベクトル命令が前記複数の要素を含むベクトル入力を示す、手段と、
前記複数の要素の前記第1の要素および第2の要素に基づいて、第2の出力を生成するための手段と、
プロセッサの単一の実行サイクルの間に、前記第1の出力および前記第2の出力を出力ベクトルに記憶するための手段とを備える、装置。
【請求項２１】
前記第2の出力を飽和させるための手段をさらに備え、飽和させるための前記手段が生成するための前記手段に結合される、請求項20に記載の装置。
【請求項２２】
プロセッサによって実行されると、前記プロセッサに、
第1の出力として複数の要素の第1の要素を提供することであって、前記複数の要素がベクトル命令のベクトル入力に含まれる、提供することと、
前記複数の要素の前記第1の要素および第2の要素に対して算術的演算を実行して、第2の出力を提供することと、
前記プロセッサの単一の実行サイクルの間に、前記第1の出力および前記第2の出力を出力ベクトルへ記憶することとを行わせる命令を備える、非一時的コンピュータ可読媒体。
【請求項２３】
前記命令がさらに、プロセッサに、前記ベクトル命令に基づいて、前記1つまたは複数の要素を使用する前に前記複数の要素の1つまたは複数の要素を補足させて、前記第1の出力および前記第2の出力を提供させるように実行可能である、請求項22に記載の非一時的コンピュータ可読媒体。
【請求項２４】
複数の入力要素、複数の算術的演算ユニット、および複数の出力要素を備える削減ツリーを備え、前記複数の算術的演算ユニットが算術的演算ユニットの複数の行を含み、算術的演算ユニットの前記複数の行の第1の行が前記複数の入力要素のうちの複数の入力要素を受け取るように構成され、算術的演算ユニットの前記複数の行の最後の行が前記複数の出力要素のうちの複数の出力要素を出力するように構成され、プロセッサが、第1のセクショングループ化サイズを含む第1の命令の実行の間に、および第2のセクショングループ化サイズを含む第2の命令の実行の間に、前記削減ツリーを使用するように構成され、前記削減ツリーが、複数の出力値を同時に生成するように構成され、前記第1のセクショングループ化サイズが前記複数の入力要素の第1のグループのサイズに対応し、前記第2のセクショングループ化サイズが前記複数の入力要素の第2のグループのサイズに対応する、装置。
【請求項２５】
前記複数の算術的演算ユニットが複数の加算器を備える、請求項24に記載の装置。
【請求項２６】
前記第1の命令の実行の間に、前記第1のセクショングループ化サイズに基づいて前記複数の算術的演算ユニットの第1のサブセットを選択的に有効にし、
前記第2の命令の実行の間に、前記第2のセクショングループ化サイズに基づいて前記複数の算術的演算ユニットの第2のサブセットを選択的に有効にするように構成される、制御論理をさらに備える、請求項24に記載の装置。
【請求項２７】
前記削減ツリーが前記プロセッサの算術論理演算装置(ALU)に含まれ、前記削減ツリーが前記複数の入力要素の入力要素の数に基づく段階の数を有する、請求項24に記載の装置。
【請求項２８】
算術的演算ユニットの前記複数の行の各行が、前記削減ツリーの対応する段階と関連付けられる、請求項27に記載の装置。
【請求項２９】
前記削減ツリーの段階の前記数が、入力要素の前記数の2を底とする対数に等しい、請求項27に記載の装置。
【請求項３０】
出力ベクトルに前記複数の出力要素を記憶する前に前記出力ベクトルを回転させるように構成される回転ユニットをさらに備え、前記回転ユニットがローテータまたはバレルベクトルシフタを備える、請求項24に記載の装置。
【請求項３１】
1つまたは複数の飽和回路をさらに備え、前記1つまたは複数の飽和回路の特定の飽和回路が、特定の算術的演算ユニットから特定の出力を受け取り、前記特定の出力に基づいて飽和させられた値を出力するように構成される、請求項24に記載の装置。
【請求項３２】
前記削減ツリーが、累積的なベクトルの算術的命令の実行の間に、複数の累積的な算術的演算を使用して前記複数の出力値を同時に生成するように構成される、請求項24に記載の装置。
【請求項３３】
プロセッサにおいて、セクショングループ化サイズを含むベクトル命令を受け取るステップであって、前記プロセッサが削減ツリーを備え、前記削減ツリーが複数の入力要素、複数の算術的演算ユニット、および複数の出力要素を含み、前記複数の算術的演算ユニットが算術的演算ユニットの複数の行を含み、算術的演算ユニットの前記複数の行の第1の行が前記複数の入力要素のうちの複数の入力要素を受け取るように構成され、算術的演算ユニットの前記複数の行の最後の行が前記複数の出力要素のうちの複数の出力要素を出力するように構成され、前記セクショングループ化サイズが前記複数の入力要素の1つまたは複数のグループのサイズに対応する、ステップと、
前記セクショングループ化サイズを決定するステップと、
前記削減ツリーを使用して前記ベクトル命令を実行して、前記セクショングループ化サイズに基づいて前記複数の出力値を同時に生成するステップとを備え、前記削減ツリーが、複数の異なるセクショングループ化サイズとともに使用するために選択的に構成可能である、方法。
【請求項３４】
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるかどうかを判定するステップと、
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されないという判定に応答して、前記セクショングループ化サイズに基づいて前記構成を変更するステップとをさらに備える、請求項33に記載の方法。
【請求項３５】
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるかどうかを判定するステップと、
前記削減ツリーが前記セクショングループ化サイズとともに使用するために構成されるという判定に応答して、前記削減ツリーを使用して前記ベクトル命令を実行するステップとをさらに備える、請求項34に記載の方法。
【請求項３６】
前記ベクトル命令を実行するステップが、
前記セクショングループ化サイズを有する1つまたは複数のグループへと前記複数の入力値をグループ化するステップと、
前記1つまたは複数のグループに対して1つまたは複数の算術的演算を実行して前記複数の出力値を生成するステップとを備え、前記ベクトル命令が前記1つまたは複数の算術的演算を示す、請求項33に記載の方法。
【請求項３７】
前記複数の入力値の各入力が、対応する実数部分および対応する虚数部分を含み、前記複数の出力値の各出力値が、インターリーブされた方式で、1つまたは複数の実数部分に対して第1の算術的演算を実行し、1つまたは複数の虚数部分に対して第2の算術的演算を実行することによって生成される、請求項36に記載の方法。
【請求項３８】
前記複数の入力要素および前記複数の出力要素が、実数値、虚数値、またはこれらの組合せを表す、請求項33に記載の方法。
【請求項３９】
複数の入力要素を含むベクトル命令を実行するステップを備え、前記ベクトル命令を実行するステップが、
入力要素の第1のセットを形成するように前記複数の入力要素の第1のサブセットをグループ化するステップと、
入力要素の第2のセットを形成するように前記複数の入力要素の第2のサブセットをグループ化するステップと、
第1の算術的演算を入力要素の前記第1のセットに対して実行するステップと、
第2の算術的演算を入力要素の前記第2のセットに対して実行するステップと、
前記ベクトル命令の特定のフィールドに記憶された値に基づいて、出力レジスタの内容を回転させるステップと、
前記出力レジスタの前記内容を回転させた後で、前記第1の算術的演算の第1の結果および前記第2の算術的演算の第2の結果を前記出力レジスタに挿入するステップとを備える、方法。
【請求項４０】
前記ベクトル命令が単一のベクトル命令であり、前記複数の入力要素の各々が入力ベクトルに記憶され、前記第1の結果および前記第2の結果が同時に生成される、請求項39に記載の方法。
【請求項４１】
前記第1の結果および前記第2の結果を前記出力レジスタに挿入するステップが、前記出力レジスタの対応する内容を上書きするステップを備え、前記出力レジスタの前記内容を回転させるステップが、前記ベクトル命令に基づいて前記出力レジスタの前記内容を選択的に回転させるステップを備える、請求項39に記載の方法。
【請求項４２】
入力要素の前記第1のセットの要素の第1の数および入力要素の前記第2のセットの要素の第2の数が、前記ベクトル命令によって特定されるセクショングループ化サイズに基づく、請求項39に記載の方法。
【請求項４３】
要素の前記第1の数および要素の前記第2の数が同じである、請求項42に記載の方法。
【請求項４４】
前記第1の結果が前記出力レジスタの第1の出力値に挿入され、前記第2の結果が前記出力レジスタの第2の出力値に挿入され、前記第1の出力要素および前記第2の出力要素が前記出力レジスタの異なる出力要素である、請求項39に記載の方法。
【請求項４５】
前記ベクトル命令を実行するステップがさらに、前記複数の入力要素をグループ化する前に前記複数の入力要素にマスクを適用するステップを備える、請求項39に記載の方法。
【請求項４６】
前記ベクトル命令を実行するステップがさらに、前記内容を回転させた後で前記出力レジスタにマスクを適用するステップを備える、請求項39に記載の方法。
【請求項４７】
前記削減ツリーが複数の入力タイプをサポートし、前記複数の入力タイプが、64ビットの実数、64ビットの虚数、32ビットの実数、32ビットの虚数、16ビットの実数、16ビットの虚数、32ビットの複素数、16ビットの複素数、1つまたは複数の他の入力タイプ、またはこれらの組合せを含む、請求項13に記載の装置。
【国際調査報告】
2016530631.tif 000019
2016530631.tif 000020
2016530631.tif 000021
2016530631.tif 000022
2016530631.tif 000023
2016530631.tif 000024