(57)【要約】  マルチモード基数２Xのバタフライベクトル処理回路を提供するためのプログラマブルなデータパス構成を有するベクトル処理エンジン（ＶＰＥ）。関連ベクトルプロセッサ、システム、および方法についても開示する。本明細書で開示するＶＰＥは、高速フーリエ変換（ＦＦＴ）ベクトル処理演算を効率的に実施するために、基数２Xのバタフライベクトル演算を実施するためのプログラマブルなデータパス構成を有するベクトル処理ブロックを各々が有する複数のベクトル処理段階を含む。ベクトル処理ブロックのデータパス構成は、異なるタイプの基数２Xのバタフライベクトル演算ならびに他の算術論理ベクトル演算を提供するようにプログラムされ得る。その結果、より少ないＶＰＥで、ベクトルプロセッサにおいて所望の基数２Xのバタフライベクトル演算と他のタイプ算術論理ベクトル演算を行うことができ、したがって、ベクトルプロセッサ中の面積を節約するとともに、スカラー処理エンジンに勝る、より少ないレジスタ書込みおよびより速いベクトル命令実行時間というベクトル処理利点を依然として保有する。
2016514330.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのマルチモード基数２Xのバタフライベクトル処理回路を装備するように構成されたベクトル処理エンジン（ＶＰＥ）であって、前記ベクトル処理エンジンは下記を備える、
少なくとも１つの乗算ベクトル処理段階であって、
複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからの基数ベクトルデータ入力のサンプルセットを受け取り、
前記少なくとも１つの乗算ベクトル処理段階によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいて基数ベクトル乗算出力のサンプルセットを与えるように、前記基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算する、
ように構成された少なくとも１つの乗算器ブロックを備える乗算ベクトル処理段階と、
複数の累算器ブロックを備える少なくとも１つの累算ベクトル処理段階であって、前記複数の累算器ブロックの中の各累算器ブロックは、
累算器プログラマブルな累算器データパス構成に基づいて、前記複数の乗算出力データパスの中の乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取り、
前記累算器プログラマブルな累算器データパス構成に基づいて、基数ベクトル累算結果のサンプルセットを与えるように、前記受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算し、
複数の出力データパスの中の出力データパスにおいて前記基数ベクトル累算結果のサンプルセットを与えるように構成される、
前記累算ベクトル処理段階と、
前記複数の累算器ブロックの各々から前記複数の基数ベクトル累算結果のサンプルセットを受け取るように構成された出力処理段階。
【請求項２】
前記基数バタフライベクトル命令についての基数バタフライ結果を与えるように、前記複数の基数ベクトル累算結果のサンプルセットを加えるように構成された少なくとも１つの加算器をさらに備える、請求項１に記載のＶＰＥ。
【請求項３】
前記回転因子成分が「ｅ」である、請求項１に記載のＶＰＥ。
【請求項４】
前記複数の累算器ブロックの中の各累算器ブロックは、前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて前記受け取られた複数の基数ベクトル乗算出力のサンプルセットに回転因子入力を適用するようにさらに構成される、請求項１に記載のＶＰＥ。
【請求項５】
前記複数の累算器ブロックの中の各累算器ブロックは、前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいてマイナス１（−１）の前記回転因子入力を適用するように、前記複数の基数ベクトル乗算出力のサンプルセットの中の受け取られた基数ベクトル乗算出力のサンプルセットを否定するように構成された否定回路をさらに備える、請求項４に記載のＶＰＥ。
【請求項６】
前記複数の累算器ブロックの中の各累算器ブロックは、前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて、「−ｊ」の前記回転因子入力を適用するように、前記否定された基数ベクトル乗算出力のサンプルセットを、否定された複素基数ベクトル乗算出力のサンプルセットに変換するように構成されたスワップ回路をさらに備える、請求項５に記載のＶＰＥ。
【請求項７】
前記複数の累算器ブロックの中の各累算器ブロックは、前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて、「ｊ」の前記回転因子入力を適用するように、前記複数の基数ベクトル乗算出力のサンプルセットの中の受け取られた基数ベクトル乗算出力のサンプルセットを複素基数ベクトル乗算出力のサンプルセットに変換するように構成されたスワップ回路をさらに備える、請求項４に記載のＶＰＥ。
【請求項８】
前記複数の累算器ブロックの中の各累算器ブロックは、基数２のバタフライベクトル命令に従って構成された各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて、基数２のバタフライ回転因子入力として、前記回転因子入力を前記受け取られた複数の基数ベクトル乗算出力のサンプルセットに適用するように構成される、請求項４に記載のＶＰＥ。
【請求項９】
前記複数の累算器ブロックの中の各累算器ブロックは、基数４のバタフライベクトル命令に従って構成された各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて、基数４のバタフライ回転因子入力として、前記回転因子入力を前記受け取られた複数の基数ベクトル乗算出力のサンプルセットに適用するように構成される、請求項４に記載のＶＰＥ。
【請求項１０】
前記回転因子入力を生成するように構成された回転因子ジェネレータをさらに備える、請求項４に記載のＶＰＥ。
【請求項１１】
前記少なくとも１つの乗算器ブロックは、複数のマルチモード基数２Xのバタフライベクトル処理回路を装備するための複数の乗算器ブロックからなる、請求項１に記載のＶＰＥ。
【請求項１２】
前記プログラマブルな乗算データパス構成および前記プログラマブルな累算器データパス構成は各々、前記実行される基数バタフライベクトル命令に基づいて再構成されるように構成される、請求項１に記載のＶＰＥ。
【請求項１３】
前記プログラマブルな乗算データパス構成および前記プログラマブルな累算器データパス構成は各々、前記ＶＰＥによって実行される各基数のバタフライベクトル命令用に再構成されるように構成される、請求項１２に記載のＶＰＥ。
【請求項１４】
前記プログラマブルな乗算データパス構成および前記プログラマブルな累算器データパス構成は各々、前記ＶＰＥによって実行される前記基数バタフライベクトル命令の各クロック周期において再構成されるように構成される、請求項１３に記載のＶＰＥ。
【請求項１５】
前記複数の累算器ブロックの中の各累算器ブロックは、
前記複数の基数ベクトル乗算出力のサンプルセットを、各々が少なくとも１つの基数ベクトル入力和と少なくとも１つの基数ベクトル入力桁上げとを備えるものとして受け取り、
少なくとも１つの以前の累算された基数ベクトル出力和と少なくとも１つの以前の累算された基数ベクトル出力桁上げとを受け取り、
前記少なくとも１つの現在の基数ベクトル累算出力和として、前記少なくとも１つの以前の累算された基数ベクトル出力和に累算された前記少なくとも１つの基数ベクトル入力和からなる少なくとも１つの現在の累算された基数ベクトル出力和を累算し、
前記少なくとも１つの現在の累算された基数ベクトル出力桁上げとして、前記少なくとも１つの以前の累算された基数ベクトル出力桁上げに累算された前記少なくとも１つの基数ベクトル入力桁上げからなる少なくとも１つの現在の累算された基数ベクトル出力桁上げを累算し、
前記少なくとも１つの現在の累算された基数ベクトル出力和と前記少なくとも１つの現在の累算された基数ベクトル出力桁上げとを、前記複数の出力データパスの中の前記出力データパスにおいて、前記基数ベクトル累算結果のサンプルセットの中の少なくとも１つの基数ベクトル累算結果のサンプルセットとして与える、
ように各々が構成された少なくとも１つの桁上げ保存累算器を備える、請求項１に記載のＶＰＥ。
【請求項１６】
前記少なくとも１つの桁上げ保存累算器は、前記少なくとも１つの以前の累算された基数ベクトル出力桁上げを、前記少なくとも１つの基数ベクトル入力和および前記少なくとも１つの基数ベクトル入力桁上げに伝搬しないように構成される、請求項１５に記載のＶＰＥ。
【請求項１７】
前記少なくとも１つの桁上げ保存累算器は、前記少なくとも１つの現在の累算された基数ベクトル出力和を第１のベクトル累算データパスにおいて、および前記少なくとも１つの現在の累算された基数ベクトル出力桁上げを、前記第１のベクトル累算データパスとは別個の第２のベクトル累算データパスにおいて維持するようにさらに構成される、請求項１５に記載のＶＰＥ。
【請求項１８】
前記少なくとも１つの桁上げ保存累算器は、
前記少なくとも１つの基数ベクトル入力和と前記少なくとも１つの基数ベクトル入力桁上げとを受け取り、
前記少なくとも１つの以前の累算された基数ベクトル出力和と前記少なくとも１つの以前の累算された基数ベクトル出力桁上げとを受け取り、
前記少なくとも１つの現在の基数ベクトル累算された出力和として、前記少なくとも１つの以前の累算された基数ベクトル出力和に累算された前記少なくとも１つの基数ベクトル入力和からなる前記少なくとも１つの現在の累算された基数ベクトル出力和を生成し、
前記少なくとも１つの現在の累算された基数ベクトル出力桁上げとして、前記少なくとも１つの以前の累算された基数ベクトル出力桁上げに累算された前記少なくとも１つの基数ベクトル入力桁上げからなる前記少なくとも１つの現在の累算された基数ベクトル出力桁上げを生成する、
ように構成された少なくとも１つの圧縮器を備える、請求項１５に記載のＶＰＥ。
【請求項１９】
前記少なくとも１つの圧縮器は少なくとも１つの４：２圧縮器からなる、請求項１８に記載のＶＰＥ。
【請求項２０】
前記複数の入力データパスの中の入力データパスにおいて、ベクトルアレイの幅の前記複数の基数ベクトルデータ入力のサンプルセットを与えるように構成された入力読取り段階をさらに備える、請求項１に記載のＶＰＥ。
【請求項２１】
前記複数の累算器ブロックは、前記受け取られた複数の基数ベクトル乗算出力のサンプルセットをベクトルレジスタに記憶するように構成されない、請求項１に記載のＶＰＥ。
【請求項２２】
前記少なくとも１つのマルチモード基数２Xのバタフライベクトル処理回路は、高速フーリエ変換（ＦＦＴ）ベクトル命令を実行するように構成される、請求項１に記載のＶＰＥ。
【請求項２３】
前記少なくとも１つの基数２Xのバタフライベクトル処理回路は、補間ＦＦＴベクトル命令を実行するように構成される、請求項１に記載のＶＰＥ。
【請求項２４】
少なくとも１つのマルチモード基数２Xのバタフライベクトル処理回路を装備するように構成されたベクトル処理エンジン（ＶＰＥ）であって、前記ベクトル処理エンジンは下記を備える、
少なくとも１つの乗算ベクトル処理段階手段であって、
複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからの基数ベクトルデータ入力のサンプルセットを受け取り、
前記少なくとも１つの乗算ベクトル処理段階手段によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいて基数ベクトル乗算出力のサンプルセットを与えるように、前記基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算する、
ように構成された少なくとも１つの乗算器ブロック手段を備える乗算ベクトル処理段階手段と、
複数の累算器ブロック手段を備える少なくとも１つの累算ベクトル処理段階手段であって、前記複数の累算器ブロック手段の中の各累算器ブロック手段は、
プログラマブルな累算器データパス構成に基づいて、前記複数の乗算出力データパスの中の乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取り、
前記プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、前記受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算し、
複数の出力データパスの中の出力データパスにおいて前記基数ベクトル累算結果のサンプルセットを与える、
ように構成される、前記累算ベクトル処理段階手段と、
前記複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取るように構成された出力処理段階手段。
【請求項２５】
ベクトル処理エンジン（ＶＰＥ）におけるマルチモード基数２Xのバタフライベクトル処理回路処理において基数２Xのベクトルデータを処理する方法であって、前記方法は下記を備える、
少なくとも１つの乗算ベクトル処理段階における少なくとも１つの乗算器ブロック中の複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからの基数ベクトルデータ入力のサンプルセットを受け取ることと、
前記少なくとも１つの乗算器ブロック中で、前記少なくとも１つの乗算ベクトル処理段階によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいて基数ベクトル乗算出力のサンプルセットを与えるように、前記基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算することと、
少なくとも１つの累算ベクトル処理段階における複数の累算器ブロックの中の各累算器ブロック中の累算器プログラマブルな累算器データパス構成に基づいて、前記複数の乗算出力データパスの中の乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取ることと、
前記累算器プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、前記受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算することと、
複数の出力データパスの中の出力データパスにおいて前記基数ベクトル累算結果のサンプルセットを与えることと、
出力処理段階において、前記複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取ること。
【請求項２６】
前記基数バタフライベクトル命令についての基数バタフライ結果を与えるように、前記複数の基数ベクトル累算結果のサンプルセットを加えることをさらに備える、請求項２５に記載の方法。
【請求項２７】
前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて、前記受け取られた複数の基数ベクトル乗算出力のサンプルセットに回転因子入力を適用することをさらに備える、請求項２５に記載の方法。
【請求項２８】
前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいてマイナス１（−１）の前記回転因子入力を適用するように、前記複数の基数ベクトル乗算出力のサンプルセットの中の受け取られた基数ベクトル乗算出力のサンプルセットを否定することをさらに備える、請求項２７に記載の方法。
【請求項２９】
前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて「−ｊ」の前記回転因子入力を適用するために、前記否定された基数ベクトル乗算出力のサンプルセットを、否定された複素基数ベクトル乗算出力のサンプルセットに変換するように、前記受け取られた基数ベクトル乗算出力のサンプルセットをスワップすることをさらに備える、請求項２８に記載の方法。
【請求項３０】
前記基数バタフライベクトル命令に従って、各累算器ブロック用の前記プログラマブルな累算器データパス構成に基づいて「ｊ」の前記回転因子入力を適用するために、前記複数の基数ベクトル乗算出力のサンプルセットの中の前記受け取られた基数ベクトル乗算出力のサンプルセットを複素基数ベクトル乗算出力のサンプルセットに変換するように、前記基数ベクトル乗算出力のサンプルセットをスワップすることをさらに備える、請求項２７に記載の方法。
【請求項３１】
前記受け取られた複数の基数ベクトル乗算出力のサンプルセットをベクトルレジスタに記憶しないことをさらに備える、請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]本出願は、２０１３年３月１３日に出願し、参照によってその全体が本明細書に組み込まれている、「Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｃａｒｒｙ−Ｓａｖｅ  Ａｃｃｕｍｕｌａｔｏｒｓ  Ｅｍｐｌｏｙｉｎｇ  Ｒｅｄｕｎｄａｎｔ  Ｃａｒｒｙ−Ｓａｖｅ  Ｆｏｒｍａｔ  Ｔｏ  Ｒｅｄｕｃｅ  Ｃａｒｒｙ  Ｐｒｏｐａｇａｔｉｏｎ，Ａｎｄ  Ｒｅｌａｔｅｄ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｏｒｓ，Ｓｙｓｔｅｍｓ，Ａｎｄ  Ｍｅｔｈｏｄｓ」と題する米国特許出願第１３／７９８，６１８号（Ｑｕａｌｃｏｍｍ整理番号１２３２４８）にも関連する。
【０００２】
[0002]本出願は、２０１３年３月１３日に出願し、参照によってその全体が本明細書に組み込まれている、「Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅｓ  Ｈａｖｉｎｇ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｄａｔａ  Ｐａｔｈ  Ｃｏｎｆｉｇｕｒａｔｉｏｎｓ  Ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｍｕｌｔｉ−Ｍｏｄｅ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ，Ａｎｄ  Ｒｅｌａｔｅｄ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｏｒｓ，Ｓｙｓｔｅｍｓ，ａｎｄ  Ｍｅｔｈｏｄｓ」と題する米国特許出願第１３／７９８，６４１号（Ｑｕａｌｃｏｍｍ整理番号１２３２４９）に関連する。
【０００３】
[0003]本開示の分野は、単一命令多重データ（ＳＩＭＤ）プロセッサと多重命令多重データ（ＭＩＭＤ）プロセッサを含む、ベクトルおよびスカラー演算を処理するためのベクトルプロセッサおよび関連システムに関する。
【背景技術】
【０００４】
[0004]ワイヤレスコンピューティングシステムは、デジタル情報領域において最も普及した技術の１つに急速になりつつある。技術の進歩により、ワイヤレス通信デバイスは、より小型でより強力になった。たとえば、ワイヤレスコンピューティングデバイスは一般に、小型で軽量な、ユーザが容易に持ち運べるポータブルワイヤレス電話、携帯情報端末（ＰＤＡ）、およびページングデバイスを含む。より具体的には、セルラー電話およびインターネットプロトコル（ＩＰ）電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス通信デバイスが、他のタイプのデバイスを含む。たとえば、ワイヤレス電話機は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、および／またはオーディオファイルプレーヤを含み得る。また、ワイヤレス電話は、インターネットにアクセスするために使用できるウェブインターフェースを含むことができる。さらに、ワイヤレス通信デバイスは、設計されたワイヤレス通信技術規格（たとえば、符号分割多元接続（ＣＤＭＡ）、広帯域ＣＤＭＡ（ＷＣＤＭＡ（登録商標））、およびロングタームエボリューション（ＬＴＥ））に従って高速ワイヤレス通信データを処理するための複合処理リソースを含み得る。したがって、これらのワイヤレス通信デバイスはかなりのコンピューティング能力を含む。
【０００５】
[0005]ワイヤレスコンピューティングデバイスは、より小型でより強力になるにつれて、ますますリソースの制約を受けるようになる。たとえば、画面サイズ、利用可能なメモリおよびファイルシステム空間の量、ならびに入出力能力の量は、小さいデバイスのサイズによって制限されることがある。さらに、電池サイズ、電池によって供給される電力の量、および電池の寿命も制限される。デバイスのバッテリ寿命を増すための１つのやり方は、より少ない電力を消費するプロセッサを設計することである。
【０００６】
[0006]この点において、ベクトルプロセッサを含むベースバンドプロセッサが、ワイヤレス通信デバイス用に利用され得る。ベクトルプロセッサは、ベクトル、すなわちデータアレイに働きかけるハイレベル演算を提供するベクトルアーキテクチャを有する。ベクトル処理は、ベクトル命令を一度フェッチすることと、次いで、１つのデータセットに対してベクトル命令を実行し、次いで、ベクトル内の後続要素のためにベクトル命令をフェッチし直し、復号するのとは反対に、データ要素アレイ全体にわたってベクトル命令を複数回実行することとを伴う。このプロセスにより、他の要因の中でも、各ベクトル命令は、より少ない回数しかフェッチされる必要がないので、プログラムを実行するのに必要とされるエネルギーが低減される。ベクトル命令は、同時に複数のクロック周期にわたって長いベクトルに対して動作するので、簡易な順序ベクトル命令ディスパッチを用いて、高度の並列性が達成可能である。
【０００７】
[0007]図１は、ワイヤレスコンピュータデバイスなどのコンピューティングデバイス中で利用され得る例示的なベースバンドプロセッサ１０を示す。ベースバンドプロセッサ１０は、特定のアプリケーション用の関数固有のベクトル処理を提供するのに各々が専用である複数の処理エンジン（ＰＥ）１２を含む。この例では、６つの別個のＰＥ１２（０）〜１２（５）がベースバンドプロセッサ１０中に設けられる。ＰＥ１２（０）〜１２（５）は各々、共有メモリ１６からＰＥ１２（０）〜１２（５）に与えられる固定Ｘビット幅のベクトルデータ１４用のベクトル処理を提供するように構成される。たとえば、ベクトルデータ１４は５１２ビット幅であり得る。ベクトルデータ１４は、Ｘのより小さい倍数のビット幅のベクトルデータのサンプルセット１８（０）〜１８（Ｙ）（たとえば、１６ビットおよび３２ビットサンプルセット）中で定義されてもよい。このようにして、ＰＥ１２（０）〜１２（５）は、高度の並列性を達成するように、ＰＥ１２（０）〜１２（５）に並列に与えられる複数のベクトルデータのサンプルセットに対するベクトル処理を提供することが可能である。各ＰＥ１２（０）〜１２（５）は、ベクトルデータ１４上で処理されるベクトル命令の結果を記憶するためのベクトルレジスタファイル（ＶＲ）を含み得る。
【０００８】
[0008]図１のベースバンドプロセッサ１０中の各ＰＥ１２（０）〜１２（５）は、特定のタイプの固定した演算を効率的に実施するように特に設計された、特定の専用回路要素とハードウェアとを含む。たとえば、図１のベースバンドプロセッサ１０は、別個の広帯域符号分割多元接続（ＷＣＤＭＡ）ＰＥ１２（０）、１２（１）とロングタームエボリューション（ＬＴＥ）ＰＥ１２（４）、１２（５）とを含むが、これは、ＷＣＤＭＡおよびＬＴＥは異なるタイプの特殊な演算を伴うからである。したがって、別個のＷＣＤＭＡ固有ＰＥ１２（０）、１２（１）とＬＴＥ固有ＰＥ１２（４）、１２（５）とを設けることによって、ＰＥ１２（０）、１２（１）、１２（４）、１２（５）の各々は、高効率な演算のための、ＷＣＤＭＡおよびＬＴＥ用の頻繁に実施される関数に固有である、特殊な専用回路要素を含むように設計され得る。この設計は、より多数の無関係な演算を、比較的非効率的にではあるがサポートするために柔軟であるように設計された、より一般的な回路要素とハードウェアとを含むスカラー処理エンジンとは対照的である。
【０００９】
[0009]ベクトル累算演算（accumulation operation）は一般に、ＰＥ中で実施される。この点において、ＰＥは、効率的処理のために特定のベクトル累算演算をサポートするための特殊な回路要素とハードウェアとを各々が有する関数固有の累算器（accumulator）構造を含む。ベクトル累算演算を利用するＰＥによってサポートされる共通ベクトル演算の例には、例として、ワイヤレス通信アルゴリズムのための高速フーリエ変換（ＦＦＴ）ベクトル処理演算を実施するために一般に使われる、フィルタリング演算、相関演算、および基数２X（たとえば、基数２および基数４）のバタフライ演算がある。ＰＥ中で関数固有の累算器構造を提供することは、頻繁に実行される、特殊な累算演算にとって有利である。ただし、ＰＥ中で関数固有の累算器構造を設けると、ＰＥ中で設けられる別個の関数固有の累算器構造が各々、特殊な回路要素とメモリとを含むので、ベースバンドプロセッサ用に必要とされる面積および電力が増大する場合がある。
【発明の概要】
【００１０】
[0010]本明細書で開示する実施形態は、マルチモード基数２Xのバタフライベクトル処理回路を提供するためのプログラマブルな（programmable）データパス(data path)構成を有するベクトル処理エンジン（ＶＰＥ）を含む。関連ベクトルプロセッサ、システム、および方法についても開示する。本明細書で開示するＶＰＥは、高速フーリエ変換（ＦＦＴ）ベクトル処理を効率的に実施するために、基数２Xのバタフライベクトル演算を実施するためのプログラマブルなデータパス構成を有するベクトル処理ブロックを各々が有する複数のベクトル処理段階を含む。ベクトル処理ブロックのデータパス構成は、異なるタイプの基数２Xのバタフライベクトル演算ならびに他の算術論理ベクトル演算を提供するようにプログラムされ得る。その結果、より少ないＶＰＥで、ベクトルプロセッサにおいて所望の基数２Xのバタフライベクトル演算と他のタイプの算術論理ベクトル演算とを行うことができ、したがって、ベクトルプロセッサ中の面積を節約するとともに、スカラー処理エンジンに勝る、より少ないレジスタ書込みおよびより速いベクトル命令実行時間というベクトル処理利点を依然として保持する。
【００１１】
[0011]この点において、本明細書で開示するいくつかの実施形態では、プログラマブルなデータパス構成を有する複数の乗算器ブロックが、ＶＰＥ中のベクトル処理段階に設けられる。複数の乗算器ブロックは、ＶＰＥ中の別のベクトル処理段階に設けられたプログラマブルなデータパス構成を有する複数の累算器ブロックと融合される。各乗算器ブロックのデータパスは、実行される特定の基数２Xのバタフライベクトル命令に従って、基数２Xのバタフライベクトル演算のポイントについての乗算を行うようにプログラムされ得る。各累算器ブロックのデータパスは、実行される基数２Xのバタフライベクトル命令に従って、複数の乗算器ブロックの中のある乗算器ブロックからの基数２Xのバタフライ乗算積を累算するようにプログラムされ得る。累算器ブロックのデータパス構成はまた、他の周期中で、実行される基数２Xのバタフライベクトル命令に従って、複数の乗算器ブロックの中の他の乗算器ブロックからの基数２xのバタフライ乗算積を累算するように再プログラムされ得る。累算器ブロックによって累算された最終的な累算基数２Xのバタフライ乗算積は、ＦＦＴベクトル処理演算のＮ個のポイントを与えることができる。
【００１２】
[0012]マルチモード基数２Xのバタフライベクトル処理を提供するためのプログラマブルなデータパス構成を有するＶＰＥは、固定した関数を提供するための固定したデータパス構成を含むだけであるＶＰＥとは区別可能である。本明細書で開示するマルチモード基数２Xのバタフライベクトル処理を提供するためのプログラマブルなデータパス構成を有するＶＰＥは、たとえばデジタル信号プロセッサ（ＤＳＰ）中に設けられるようなスカラー処理エンジンとも区別可能である。スカラー処理エンジンは、異なるタイプの固定しない関数を実施するために、柔軟な、共通回路と論理を採用するが、同時に、レジスタファイルにベクトル命令実行中に中間結果を書き込む、それによって、追加の電力を消費し、ベクトル命令実行回数を増大させる。
【００１３】
[0013]この点において一実施形態では、少なくとも１つのマルチモード基数２Xのバタフライベクトル処理回路を行うように構成されたＶＰＥが提供される。ＶＰＥは、少なくとも１つの乗算器ブロックを備える少なくとも１つの乗算ベクトル処理段階を備える。各乗算器ブロックは、複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからの基数ベクトルデータ入力のサンプルセットを受け取るように構成される。各乗算器ブロックはまた、少なくとも１つの乗算ベクトル処理段階によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいてで基数ベクトル乗算出力のサンプルセットを与えるように、基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算する構成される。ＶＰＥは、複数の累算器ブロックを備える少なくとも１つの累算ベクトル処理段階も備える。複数の累算器ブロックの中の各累算器ブロックは、累算器プログラマブルな累算器データパス構成に基づいて、複数の乗算出力データパスの中のある乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取るように構成される。複数の累算器ブロックの中の各累算器ブロックはさらに、累算器プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算する構成される。複数の累算器ブロックの中の各累算器ブロックはさらに、複数の出力データパスの中のある出力データパスにおいて基数ベクトル累算結果のサンプルセットを与える構成される。ＶＰＥは、複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取るように構成された出力処理段階も備える。
【００１４】
[0014]別の実施形態では、少なくとも１つのマルチモード基数２Xのバタフライベクトル処理回路を行うように構成されたＶＰＥが提供される。ＶＰＥは、少なくとも１つの乗算器ブロック手段を備える少なくとも１つの乗算ベクトル処理段階手段を備える。各乗算器ブロック手段は、複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからの基数ベクトルデータ入力のサンプルセットを受け取るように構成される。各乗算器ブロック手段はまた、少なくとも１つの乗算ベクトル処理段階手段によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいてで基数ベクトル乗算出力のサンプルセットを与えるように、基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算する構成される。ＶＰＥは、複数の累算器ブロック手段を備える少なくとも１つの累算ベクトル処理段階手段も備える。複数の累算器ブロックの手段中の各累算器ブロック手段は、プログラマブルな累算器データパス構成に基づいて、複数の乗算出力データパスの中のある乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取るように構成される。複数の累算器ブロック手段の中の各累算器ブロック手段はさらに、プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算する構成される。複数の累算器ブロック手段の中の各累算器ブロック手段はさらに、複数の出力データパスの中のある出力データパスにおいて基数ベクトル累算結果のサンプルセットを与える構成される。ＶＰＥは、複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取るように構成された出力処理段階手段も備える。
【００１５】
[0015]別の実施形態では、ベクトル処理エンジン（ＶＰＥ）中のマルチモード基数２Xのバタフライベクトル処理回路処理において基数２Xのベクトルデータを処理する方法が提供される。方法は、少なくとも１つの乗算ベクトル処理段階における少なくとも１つの乗算器ブロック中の複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからのある基数ベクトルデータ入力のサンプルセットを受け取ることを備える。方法は、少なくとも１つの乗算器ブロック中で、少なくとも１つの乗算ベクトル処理段階によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいて基数ベクトル乗算出力のサンプルセットを与えるように、基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算することも備える。方法は、少なくとも１つの累算ベクトル処理段階における複数の累算器ブロックの中のある累算器ブロック中の累算器プログラマブルな累算器データパス構成に基づいて、複数の乗算出力データパスの中のある乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取ることも備える。方法は、累算器プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算することも備える。方法は、複数の出力データパスにおけるある出力データパスにおいて基数ベクトル累算結果のサンプルセットを与えることも備える。方法は、出力処理段階において、複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取ることも備える。
【００１６】
[0016]別の実施形態では、ベクトルプロセッサが提供される。ベクトルプロセッサは、ベクトルデータメモリから基数ベクトルデータ入力のサンプルセットを受け取るように構成された少なくとも１つのベクトルレジスタを備える。ベクトルプロセッサは、基数ベクトル結果出力のサンプルセットを記憶するように構成された少なくとも１つのベクトル結果レジスタも備える。ベクトルプロセッサは、ＶＰＥも備える。ＶＰＥは、少なくとも１つの乗算ベクトル処理段階を備える。乗算ベクトル処理段階は、少なくとも１つの乗算ベクトル処理段階における少なくとも１つの乗算器ブロック中の複数の入力データパスの中の第１の入力データパスから、複数の基数ベクトルデータ入力のサンプルセットからのある基数ベクトルデータ入力のサンプルセットを受け取るように構成される。乗算ベクトル処理段階は、少なくとも１つの乗算器ブロック中で、少なくとも１つの乗算ベクトル処理段階によって実行される基数バタフライベクトル命令に従って、プログラマブルな乗算データパス構成に基づいて複数の乗算出力データパスにおいて基数ベクトル乗算出力のサンプルセットを与えるように、基数ベクトルデータ入力のサンプルセットを回転因子成分と乗算するようにも構成される。ＶＰＥは、少なくとも１つの累算ベクトル処理段階も備える。累算ベクトル処理段階は、少なくとも１つの累算ベクトル処理段階における複数の累算器ブロックの中の各累算器ブロック中のプログラマブルな累算器データパス構成に基づいて、複数の乗算出力データパスの中のある乗算出力データパスから複数の基数ベクトル乗算出力のサンプルセットを受け取るように構成される。累算ベクトル処理段階は、少なくとも１つの累算器ブロック中で、プログラマブルな累算器データパス構成に基づいて基数ベクトル累算結果のサンプルセットを与えるように、受け取られた複数の基数ベクトル乗算出力のサンプルセットを累算するようにも構成される。累算ベクトル処理段階は、複数の出力データパスの中のある出力データパスにおいて基数ベクトル累算結果のサンプルセットを与えるようにも構成される。ＶＰＥは、複数の累算器ブロックの各々から複数の基数ベクトル累算結果のサンプルセットを受け取るように構成された出力処理段階も備える。
【図面の簡単な説明】
【００１７】
【図１】[0017]固有のアプリケーション向けの関数固有のベクトル処理を提供するのに各々が専用である、複数のベクトル処理エンジン（ＶＰＥ）を含む例示的なベクトルプロセッサの概略図。
【図２】[0018]ＶＰＥ中に設けられた共通回路要素およびハードウェアが、別個のＶＰＥを設ける必要なく、複数のアプリケーションまたは技術のために特定のタイプのベクトル演算を高効率的に実施するための複数のモードでプログラムされ得るように、プログラマブルなデータパス構成を有する共通ＶＰＥを含む例示的なベクトルプロセッサの概略図。
【図３】[0019]図２のＶＰＥに設けられる例示的なベクトル処理段階の概略図であって、ベクトル処理段階のうちのいくつかは、プログラマブルなデータパス構成を有する例示的なベクトル処理ブロックを含む。
【図４Ａ】[0020]図２および図３の例示的なベクトルプロセッサ中に含まれるプログラマブルなデータパス構成を有する少なくとも１つのベクトル処理ブロックの例示的なベクトル処理を示すフローチャート。
【図４Ｂ】[0021]プログラマブルなデータパス構成を各々が有するとともに、図２および図３の例示的なベクトルプロセッサにおける異なるベクトル処理段階において提供される乗算器ブロックおよび累算器ブロックの例示的なベクトル処理を示すフローチャート。
【図５】[0022]図２および図３のＶＰＥのベクトル処理段階に設けられる複数の乗算器ブロックのより詳細な概略図であって、複数の乗算器ブロックは各々、複数の乗算器ブロックが、特定の異なるタイプのベクトル乗算演算を実施するための複数のモードでプログラムされ得るように、プログラマブルなデータパス構成を有する。
【図６】[0023]８ビット×８ビットベクトルデータ入力のサンプルセットおよび１６ビット×１６ビットベクトルデータ入力のサンプルセットについての乗算演算を行うようにプログラムされることが可能なプログラマブルなデータパス構成を有する、図５の複数の乗算器ブロックの中のある乗算器ブロックの内部構成要素の概略図。
【図７】[0024]図２および図３のＶＰＥ中の乗算器ブロックおよび累算器ブロックの一般化された概略図であって、累算器ブロックは、桁上げ伝搬を低減するのに冗長桁上げ保存フォーマットを利用する桁上げ保存累算器構造を利用する。
【図８】[0025]図２および図３のＶＰＥ中に設けられる、図７の累算器ブロックの例示的な内部構成要素の詳細な概略図であって、累算器ブロックが、冗長桁上げ保存フォーマットで、特定の異なるタイプのベクトル累算演算を実施するための複数のモードでプログラムされ得るように、累算器ブロックはプログラマブルなデータパス構成を有する。
【図９Ａ】[0026]二重２４ビット累算器モードを提供するためにプログラムされたデータパス構成を有する図８の累算器ブロックの概略図。
【図９Ｂ】[0027]単一４０ビット累算器モードを提供するためにプログラムされたデータパス構成を有する図８の累算器ブロックの概略図。
【図９Ｃ】[0028]１６ビット桁上げ保存加算器と、それに続く単一２４ビット累算器モードを提供するためにプログラムされたデータパス構成を有する図８の累算器ブロックの概略図。
【図１０】[0029]基数４のバタフライベクトル演算の各周期を実施するように構成された基数バタフライ回路を形成するために、図２および図３のＶＰＥ中で、冗長桁上げ保存フォーマットで４つの累算器と融合されるようにプログラムされたデータパス構成を有する乗算器の概念的概略図。
【図１１】[0030]基数２または基数４のバタフライベクトル演算のいずれかを実施するように構成された、図１０の基数バタフライ回路の１つの周期の概略図。
【図１２】[0031]本明細書で開示する実施形態による、プログラマブルなデータパス構成を有するＶＰＥを含むベクトルプロセッサを含むことができ、したがってＶＰＥ中の共通回路要素およびハードウェアが、別個のＶＰＥを提供する必要なく、複数のアプリケーションまたは技術のために特定のタイプのベクトル演算を高効率的に実施するように設計された専用回路要素として作用するようにプログラムされ得る、例示的なプロセッサベースのシステムのブロック図。
【発明を実施するための形態】
【００１８】
[0032]ここで図面を参照すると、本開示のいくつかの例示的な実施形態が記載される。「例示的な」という言葉は、本明細書中で、「例、事例、または例示として働くこと」を意味するように使用される。本明細書で「例示的な」として記載される任意の実施形態は、必ずしも、他の実施形態よりも好ましいまたは有利であると解釈されるべきでない。
【００１９】
[0033]本明細書で開示する実施形態は、マルチモード基数２Xのバタフライベクトル処理を提供するためのプログラマブルなデータパス構成を有するベクトル処理エンジン（ＶＰＥ）を含む。関連ベクトルプロセッサ、システム、および方法についても開示する。本明細書で開示するＶＰＥは、高速フーリエ変換（ＦＦＴ）ベクトル処理演算を効率的に実施するために、基数２Xのバタフライベクトル演算を実施するためのプログラマブルなデータパス構成を有するベクトル処理ブロックを各々が有する複数のベクトル処理段階を含む。ベクトル処理ブロックのデータパス構成は、異なるタイプの基数２Xのバタフライベクトル演算ならびに他の算術論理ベクトル演算を提供するようにプログラムされ得る。その結果、より少ないＶＰＥで、ベクトルプロセッサにおいて所望の基数２Xのバタフライベクトル演算と他のタイプの算術論理ベクトル演算とを行うことができ、したがって、ベクトルプロセッサ中の面積を節約するとともに、スカラー処理エンジンに勝る、より少ないレジスタ書込みおよびより速いベクトル命令実行時間というベクトル処理利点を依然として保持する。
【００２０】
[0034]この点において、本明細書で開示するいくつかの実施形態では、プログラマブルなデータパス構成を有する複数の乗算器ブロックが、ＶＰＥ中のベクトル処理段階に設けられる。複数の乗算器ブロックは、ＶＰＥ中の別のベクトル処理段階に設けられたプログラマブルなデータパス構成を有する複数の累算器ブロックと融合される。各乗算器ブロックのデータパスは、実行される特定の基数２Xのバタフライベクトル命令に従って、基数２Xバタフライベクトル演算のポイントについての乗算を行うようにプログラムされ得る。各累算器ブロックのデータパスは、実行される基数２Xのバタフライベクトル命令に従って、複数の乗算器ブロックの中のある乗算器ブロックからの基数２Xのバタフライ乗算積を累算するようにプログラムされ得る。累算器ブロックのデータパス構成はまた、他の周期中で、実行される基数２Xのバタフライベクトル命令に従って、複数の乗算器ブロックの中の他の乗算器ブロックからの基数２Xのバタフライ乗算積を累算するように再プログラムされ得る。累算器ブロックによって累算された最終的な累算基数２Xのバタフライ乗算積は、ＦＦＴベクトル処理演算のＮ個のポイントを与えることができる。
【００２１】
[0035]マルチモード基数２Xのバタフライベクトル処理を提供するためのプログラマブルなデータパス構成を有するＶＰＥは、固定した関数を提供するための固定したデータパス構成を含むだけのＶＰＥとは区別可能である。本明細書で開示するマルチモード基数２Xのバタフライベクトル処理を提供するためのプログラマブルなデータパス構成を有するＶＰＥは、たとえばデジタル信号プロセッサ（ＤＳＰ）中に設けられるようなスカラー処理エンジンとも区別可能である。スカラー処理エンジンは、異なるタイプの固定されない関数を実施するために柔軟な、共通回路と論理を採用するが、同時に、レジスタファイルにベクトル命令実行中の中間結果を書き込む、それにより、追加の電力を消費し、ベクトル命令実行回数を増大させる。
【００２２】
[0036]この点において、図２は、ベクトル処理エンジン（ＶＰＥ）２２とも呼ばれる、例示的なベクトル処理ユニット２２を含むベースバンドプロセッサ２０の概略図である。ベースバンドプロセッサ２０およびそのＶＰＥ２２は、半導体ダイ２４中に設けられ得る。図３で始まる、後でより詳しく論じる本実施形態では、ベースバンドプロセッサ２０は、プログラマブルなデータパス構成を有する共通ＶＰＥ２２を含む。このように、ＶＰＥ２２は、ベースバンドプロセッサ２０中に別個のＶＰＥを設ける必要なく、異なる演算モードで異なる特定のタイプのベクトル演算を行うようにプログラムされ、再プログラムされ得る共通回路要素とハードウェアとを含む。ＶＰＥ２２はまた、ベースバンドプロセッサ２０中に別個のＶＰＥを設ける必要なく、複数のアプリケーションまたは技術のために、一般的な算術演算を高効率的に実施するためのベクトル算術モードでプログラムされ得る。
【００２３】
[0037]図３で始まる、ベクトルマルチモード処理のためにＶＰＥ２２中に設けられるプログラマブルなデータパス構成について論じる前に、図２のベースバンドプロセッサ２０の構成要素について、最初に記載する。この非限定的例におけるベースバンドプロセッサ２０は、５１２ビットベクトルプロセッサである。ベースバンドプロセッサ２０は、ＶＰＥ２２がベースバンドプロセッサ２０中でベクトル処理を行うのをサポートするための追加構成要素を、ＶＰＥ２２に加えて含む。ベースバンドプロセッサ２０は、ベクトルユニットデータメモリ（ＬＭＥＭ）３２からベクトルデータ３０を受け取り、記憶するように構成されたベクトルレジスタ２８を含む。たとえば、ベクトルデータ３０はＸビット幅であり、「Ｘ」は、設計選択に従って定義される（たとえば、５１２ビット）。ベクトルデータ３０は、ベクトルデータのサンプルセット３４に分割され得る。たとえば、ベクトルデータ３０は、２５６ビット幅であってよく、より小さいベクトルデータのサンプルセット３４（Ｙ）〜３４（０）を備えることができ、ここでベクトルデータのサンプルセット３４（Ｙ）〜３４（０）の一部は１６ビット幅であり、ベクトルデータのサンプルセット３４（Ｙ）〜３４（０）のうちのそれ以外は３２ビット幅である。ＶＰＥ２２は、高度の並列性を達成するように、ＶＰＥ２２に並列に与えられるいくつかの選ばれた乗算ベクトルデータのサンプルセット３４（Ｙ）〜３４（０）に対して、ベクトル処理を行うことが可能である。ベクトルレジスタ２８は、ＶＰＥ２２がベクトルデータ３０を処理するときに生成される結果を記憶するようにも構成される。いくつかの実施形態では、ＶＰＥ２２は、より速いベクトル命令実行時間を可能にするようにレジスタ書込みを低減するために、中間ベクトル処理結果をベクトルレジスタ２８に記憶しないように構成される。この構成は、スカラー処理ＤＳＰなど、中間結果をレジスタに記憶するスカラー処理エンジンによって実行されるスカラー命令とは反対である。
【００２４】
[0038]図２のベースバンドプロセッサ２０は、ベクトル命令の条件付き実行において使用するために、条件をＶＰＥ２２に与えるように、およびアップデートされた条件をベクトル命令実行の結果として記憶するように構成された条件レジスタ３６も含む。ベースバンドプロセッサ２０はまた、累算レジスタ３８と、グローバルレジスタ４０と、アドレスレジスタ４２とを含む。累算レジスタ３８は、ＶＰＥ２２によって、累算された結果を、ベクトルデータ３０に対していくつかの特殊な演算を実行した結果として記憶するのに使われるように構成される。グローバルレジスタ４０は、ＶＰＥ２２によってサポートされるいくつかのベクトル命令用のスカラーオペランドを記憶するように構成される。アドレスレジスタ４２は、ベクトルユニットデータメモリ３２からベクトルデータ３０を取り出し、ベクトル処理結果をベクトルユニットデータメモリ３２に記憶するために、ベクトルロードによってアドレス指定可能なアドレスを記憶し、ＶＰＥ２２によってサポートされる命令を記憶するように構成される。
【００２５】
[0039]引き続き図２を参照すると、本実施形態におけるベースバンドプロセッサ２０は、ＶＰＥ２２によって行われるベクトル処理に加え、ベースバンドプロセッサ２０中でスカラー処理を行うためのスカラープロセッサ４４（「整数ユニット」とも呼ばれる）も含む。高効率な演算のために実行される命令のタイプに基づいて、ベクトル演算とスカラー命令演算の両方をサポートするように構成されたＣＰＵを設けることが所望され得る。本実施形態では、スカラープロセッサ４４は、非限定的例として、３２ビット縮小命令セットコンピューティング（ＲＩＳＣ）スカラープロセッサである。スカラープロセッサ４４は、この例では、スカラー命令処理をサポートするための論理演算ユニット（ＡＬＵ）４６を含む。ベースバンドプロセッサ２０は、プログラムメモリ５０から命令をフェッチし、フェッチした命令を復号し、フェッチした命令を、命令タイプに基づいて、スカラープロセッサ４４に、またはベクトルデータパス４９を通してＶＰＥ２２に向けるように構成された命令ディスパッチ回路４８を含む。スカラープロセッサ４４は、スカラー命令を実行するときにスカラープロセッサ４４によって使用するための汎用レジスタ５２を含む。スカラー命令実行のためにスカラープロセッサ４４によってアクセスするために、メインメモリから汎用レジスタ５２にデータを与えるように、整数ユニットデータメモリ（ＤＭＥＭ）５４がベースバンドプロセッサ２０中に含まれる。ＤＭＥＭ５４は、非限定的例として、キャッシュメモリであり得る。ベースバンドプロセッサ２０は、メモリコントローラデータパス５９を通る、メインメモリへのアクセスを求めるベクトル命令をスカラープロセッサ４４が実行しているとき、汎用レジスタ５２からメモリアドレスを受け取るように構成されたメモリコントローラレジスタ５８を含むメモリコントローラ５６も含む。
【００２６】
[0040]図２のベースバンドプロセッサ２０の例示的な構成要素について記載したので、共通回路要素およびハードウェアをもつ、基数２Xのバタフライベクトル処理ならびに他の算術論理ベクトル演算を行うＶＰＥ２２およびそのプログラマブルなデータパス構成に関するさらなる詳細についてここで論じる。後でより詳しく論じる図３〜図８Ｃは、マルチモード基数２Xのバタフライベクトル処理ならびに他の算術論理ベクトル演算を行うためのプログラマブルなデータパス構成を有する、図２のＶＰＥ２２中に含まれる例示的なベクトル処理ブロックを含む。やはり後でより詳しく論じる図９〜図１１は、各周期の基数２Xのバタフライ演算を実施するように構成された基数バタフライ回路を形成するために乗算器ブロックを例示的な累算器ブロックと融合するための、例示的なプログラムされたデータパス構成を提供する。
【００２７】
[0041]この点において、図３は、図２のＶＰＥ２２の例示的な概略図を示す。図３に示すように、および図４〜図８Ｃにおいて以下でより詳細に説明するように、ＶＰＥ２２は、プログラマブルなデータパス構成で構成され得る例示的なベクトル処理ブロックを有する複数の例示的なベクトル処理段階６０を含む。後でより詳しく論じるように、ベクトル処理ブロック中に設けられたプログラマブルなデータパス構成により、特定の回路およびハードウェアが、図２のベクトルユニットデータメモリ３２から受け取られたベクトルデータ３０に対する異なる特定のベクトル処理演算の実施をサポートするようにプログラムされ、再プログラムされる。たとえば、いくつかのベクトル処理演算は一般に、ベクトルデータ３０の乗算、続いて、乗算されたベクトルデータ結果の累算を必要とし得る。そのようなベクトル処理の非限定的例には、ワイヤレス通信アルゴリズムのための高速フーリエ変換（ＦＦＴ）演算を実施するために一般に使われる、フィルタリング演算、相関演算、ならびに基数２および基数４のバタフライ演算があり、ここで一連の並列乗算が、続いて乗算結果の一連の並列累算が行われる。やはり図７〜図９Ｃに関連して後でより詳しく論じるように、図２のＶＰＥ２２は、桁上げ保存累算器（carry-save accumulator）において冗長桁上げ（redundant carry-save）保存フォーマットを提供するための桁上げ保存累算器をもつ融合乗算器（fusing multiplier）というオプションも有する。桁上げ保存累算器中で冗長桁上げ保存フォーマットを提供することにより、桁上げ伝搬経路と、各累算ステップ中の桁上げ伝搬加算演算（carry propagation add operation）とを提供する必要をなくすことができる。
【００２８】
[0042]この点において、さらに図３を参照して、ＶＰＥ２２のＭ０乗算ベクトル処理段階６０（１）について最初に記載する。Ｍ０乗算ベクトル処理段階６０（１）は、プログラマブルなデータパス構成を各々が有する、任意の所望の数の乗算器ブロック６２（Ａ）〜６２（０）の形の複数のベクトル処理ブロックを含む第２のベクトル処理段階である。乗算器ブロック６２（Ａ）〜６２（０）は、ＶＰＥ２２中でベクトル乗算演算を実施するように設けられる。複数の乗算器ブロック６２（Ａ）〜６２（０）は、最大１２個の乗算ベクトルデータのサンプルセット３４（Ｙ）〜３４（０）の乗算を行うために、Ｍ０乗算ベクトル処理段階６０（１）中に互いと並列に配置される。本実施形態では、「Ａ」は３に等しく、この例では、Ｍ０乗算ベクトル処理段階６０（１）に４つの乗算器ブロック６２（３）〜６２（０）が含まれることを意味する。乗算ベクトルデータのサンプルセット３４（Ｙ）〜３４（０）は、ＶＰＥ２２中の第１のベクトル処理段階６０（０）である入力読取り（ＲＲ）ベクトル処理段階に設けられた複数のラッチ６４（Ｙ）〜６４（０）へのベクトル処理のためにＶＰＥ２２中にロードされる。本実施形態では、ＶＰＥ２２中に１２個のラッチ６４（１１）〜６４（０）があり、本実施形態では「Ｙ」が１１に等しいことを意味する。ラッチ６４（１１）〜６４（０）は、ベクトルレジスタ２８（図２参照）から取り出された乗算ベクトルデータのサンプルセット３４（１１）〜３４（０）をベクトルデータ入力のサンプルセット６６（１１）〜６６（０）としてラッチするように構成される。この例では、各ラッチ６４（１１）〜６４（０）は８ビット幅である。ラッチ６４（１１）〜６４（０）は各々、乗算ベクトルデータ入力のサンプルセット６６（１１）〜６６（０）を、総計９６ビット幅のベクトルデータ３０（すなわち、各々、１２ラッチ×８ビット）を求めてラッチするようにそれぞれ構成される。
【００２９】
[0043]引き続き図３を参照すると、複数の乗算器ブロック６２（３）〜６２（０）は、ベクトル乗算演算を行うために、ベクトルデータ入力のサンプルセット６６（１１）〜６６（０）のいくつかの組合せを受け取ることが可能なように構成され、ここにおいて「Ｙ」は、この例では１１に等しい。乗算ベクトルデータ入力のサンプルセット６６（１１）〜６６（０）は、ＶＰＥ２２の設計に従って、複数の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、およびＣ３〜Ｃ０中で与えられる。ベクトルデータ入力のサンプルセット６６（３）〜６６（０）は、図３に示すように入力データパスＣ３〜Ｃ０に対応する。ベクトルデータ入力のサンプルセット６６（７）〜６６（４）は、図３に示すように入力データパスＢ３〜Ｂ０に対応する。ベクトルデータ入力のサンプルセット６６（１１）〜６６（８）は、図３に示すように入力データパスＡ３〜Ａ０に対応する。複数の乗算器ブロック６２（３）〜６２（０）は、ベクトル乗算演算を行うために、それぞれ、受け取られたベクトルデータ入力のサンプルセット６６（１１）〜６６（０）を、複数の乗算器ブロック６２（３）〜６２（０）へと設けられた入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って処理するように構成される。
【００３０】
[0044]図４および図５に関連して後でより詳しく論じるように、図３の乗算器ブロック６２（３）〜６２（０）中に設けられたプログラマブルな内部データパス６７（３）〜６７（０）は、異なるデータパス構成を有するようにプログラムされ得る。これらの異なるデータパス構成は、各乗算器ブロック６２（３）〜６２（０）へと設けられた特定の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って乗算器ブロック６２（３）〜６２（０）に与えられる特定の受け取られたベクトルデータ入力のサンプルセット６６（１１）〜６６（０）の異なる組合せおよび／または異なるビット長の乗算を可能にする。この点において、複数の乗算器ブロック６２（３）〜６２（０）は、ベクトル乗算出力のサンプルセット６８（３）〜６８（０）を、ベクトルデータ入力のサンプルセット６６（１１）〜６６（０）の特定の組合せを掛け合わせた乗算結果を備えるベクトル結果出力のサンプルセットとして与える。
【００３１】
[0045]たとえば、乗算器ブロック６２（３）〜６２（０）のプログラマブルな内部データパス６７（３）〜６７（０）は、図２のベースバンドプロセッサ２０の命令ディスパッチ４８中のベクトル命令デコーダから与えられる設定に従ってプログラムされ得る。本実施形態では、乗算器ブロック６２（３）〜６２（０）の４つのプログラマブルな内部データパス６７（３）〜６７（０）がある。ベクトル命令は、ＶＰＥ２２によって実施される特定のタイプの演算を指定する。したがって、ＶＰＥ２２は、同じ共通回路要素を用いて高効率で異なるタイプのベクトル乗算演算を行うために、乗算器ブロック６２（３）〜６２（０）のプログラマブルな内部データパス６７（３）〜６７（０）を構成するようにプログラムされ、再プログラムされ得る。たとえば、ＶＰＥ２２は、乗算器ブロック６２（３）〜６２（０）のプログラマブルな内部データパス６７（３）〜６７（０）を、命令ディスパッチ４８中の命令パイプラインにおけるベクトル命令の復号に従って、実行される各ベクトル命令のクロック周期ごとの周期ベースで構成し、再構成するようにプログラムされ得る。したがって、ＶＰＥ２２中のＭ０乗算ベクトル処理段階６０（１）が、ベクトルデータ入力のサンプルセット６６を毎クロック周期に処理するように構成されている場合、その結果、乗算器ブロック６２（３）〜６２（０）は、命令ディスパッチ４８中の命令パイプライン中のベクトル命令の復号に従って、毎クロック周期でベクトル乗算演算を実施する。
【００３２】
[0046]乗算器ブロック６２は、実数乗算と複素乗算とを実施するようにプログラムされ得る。引き続き図３を参照すると、あるベクトル処理ブロックデータパス構成において、乗算器ブロック６２が、２つの８ビットベクトルデータ入力のサンプルセット６６を掛け合わせるように構成され得る。１つの乗算ブロックデータパス構成では、乗算器ブロック６２が、２つの１６ビットベクトルデータ入力のサンプルセット６６を掛け合わせるように構成され得、これらのセットは、８ビットベクトルデータ入力のサンプルセット６６の第１のペアに、８ビットベクトルデータ入力のサンプルセット６６の第２のペアを乗算して形成される。これについては、図６に示し、以下でより詳細に説明する。やはり、乗算器ブロック６２（３）〜６２（０）中でプログラマブルなデータパス構成を提供することにより、乗算器ブロック６２（３）〜６２（０）が、ＶＰＥ２２における面積を削減するとともに、可能な、所望のベクトル処理演算を実施するために、ベースバンドプロセッサ２０中により少ないＶＰＥ２２が設けられるようにするために、異なるタイプの乗算演算を実施するように構成され、再構成されることができる柔軟性がもたらされる。
【００３３】
[0047]図３に参照を戻すと、複数の乗算器ブロック６２（３）〜６２（０）は、プログラマブルな出力データパス７０（３）〜７０（０）中のベクトル乗算出力のサンプルセット６８（３）〜６８（０）を、次のベクトル処理段階６０または出力処理段階のいずれかに与えるように構成される。ベクトル乗算出力のサンプルセット６８（３）〜６８（０）は、複数の乗算器ブロック６２（３）〜６２（０）によって実行されるベクトル命令に基づき、プログラムされた構成に従って、プログラマブルな出力データパス７０（３）〜７０（０）中で与えられる。この例では、プログラマブルな出力データパス７０（３）〜７０（０）中のベクトル乗算出力のサンプルセット６８（３）〜６８（０）は、以下で論じるように、累算のためにＭ１累算ベクトル処理段階６０（２）に与えられる。ＶＰＥ２２のこの特定の設計では、複数の乗算器ブロック６２（３）〜６２（０）、続いて、ベクトルデータ入力の乗算、それに続く乗算結果の累算を要請する特殊なベクトル命令をサポートするための累算器を設けることが所望される。たとえば、ＦＦＴ演算を行うのに一般に使われる、基数２および基数４のバタフライ演算は、一連の乗算演算、それに続く乗算結果の累算を含む。ただし、ＶＰＥ２２中に設けられるベクトル処理ブロックのこれらの組合せは例示であり、限定的でないことに留意されたい。プログラマブルなデータパス構成を有するＶＰＥは、ベクトル処理ブロックを有する１つまたは他のどの数のベクトル処理段階を含むように構成されてもよい。ベクトル処理ブロックは、設計およびＶＰＥによってサポートされるように設計された特定のベクトル命令に従って、どのタイプの演算を実施するように設けられてもよい。
【００３４】
[0048]引き続き図３を参照すると、本実施形態では、ベクトル乗算出力のサンプルセット６８（３）〜６８（０）は、Ｍ１累算ベクトル処理段階６０（２）である次のベクトル処理段階中に設けられた複数の累算器ブロック７２（３）〜７２（０）に与えられる。複数の累算器ブロック７２（Ａ）〜７２（０）の中の各累算器ブロックは、２つの累算器７２（Ｘ）（１）および７２（Ｘ）（０）（すなわち、７２（３）（１）、７２（３）（０）、７２（２）（１）、７２（２）（０）、７２（１）（１）、７２（１）（０）、および７２（０）（１）、７２（０）（０））を含む。複数の累算器ブロック７２（３）〜７２（０）は、ベクトル乗算出力のサンプルセット６８（３）〜６８（０）の結果を累算する。図７〜図９Ｃに関連して後でより詳しく論じるように、複数の累算器ブロック７２（３）〜７２（０）は桁上げ保存累算器として設けられることができ、ここにおいて桁上げ積は本質的に、累算演算が完了されるまで、累算プロセス中は保存され、伝搬されない。複数の累算器ブロック７２（３）〜７２（０）は、複数の累算器ブロック７２（３）〜７２（０）中で冗長桁上げ保存フォーマットを提供するために、図５および図６の複数の乗算器ブロック６２（３）〜６２（０）と融合されるという選択肢も有する。複数の累算器ブロック７２（３）〜７２（０）中で冗長桁上げ保存フォーマットを提供することにより、複数の累算器ブロック７２（３）〜７２（０）の各累算ステップ中に、桁上げ伝搬経路と桁上げ伝搬加算演算とを提供する必要をなくすことができる。Ｍ１累算ベクトル処理段階６０（２）およびその複数の累算器ブロック７２（３）〜７２（０）を、ここで図３を参照して提起する。
【００３５】
[0049]図３を参照すると、Ｍ１累算ベクトル処理段階６０（２）中の複数の累算器ブロック７２（３）〜７２（０）は、累算器出力のサンプルセット７６（３）〜７６（０）（すなわち、７６（３）（１）、７６（３）（０）、７６（２）（１）、７６（２）（０）、７６（１）（１）、７６（１）（０）、および７６（０）（１）、７６（０）（０））を次のベクトル処理段階６０または出力処理段階のいずれかにおいて与えるために、プログラマブルな出力データパス７４（３）〜７４（０）（すなわち、７４（３）（１）、７４（３）（０）、７４（２）（１）、７４（２）（０）、７４（１）（１）、７４（１）（０）、および７４（０）（１）、７４（０）（０））中のベクトル乗算出力のサンプルセット６８（３）〜６８（０）を、プログラマブルな出力データパス構成に従って累算するように構成される。この例では、累算器出力のサンプルセット７６（３）〜７６（０）は、ＡＬＵ処理段階６０（３）である出力処理段階に与えられる。たとえば、後でより詳しく論じるように、累算器出力のサンプルセット７６（３）〜７６（０）は、非限定的例として、図２のベースバンドプロセッサ２０中のスカラープロセッサ４４中のＡＬＵ４６にも与えられることができる。たとえば、ＡＬＵ４６は、より一般的な処理演算において使われるべき、ＶＰＥ２２によって実行される特殊なベクトル命令に従って、累算器出力のサンプルセット７６（３）〜７６（０）をとることができる。
【００３６】
[0050]図３に参照を戻すと、累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）は、乗算器ブロック６２（３）〜６２（０）から累算器ブロック７２（３）〜７２（０）に与えられた、異なる組合せおよび／またはビット長のベクトル乗算出力のサンプルセット６８（３）〜６８（０）を受け取るように再構成されるようにプログラムされ得る。各累算器ブロック７２は、２つの累算器７２（Ｘ）（１）、７２（Ｘ）（０）からなるので、プログラマブルな入力データパス７８（Ａ）〜７８（０）は、７８（３）（１）、７８（３）（０）、７８（２）（１）、７８（２）（０）、７８（１）（１）、７８（１）（０）、および７８（０）（１）、７８（０）（０）として図３に示されている。同様に、プログラマブルな内部データパス８０（３）〜８０（Ａ）は、８０（３）（１）、８０（３）（０）、８０（２）（１）、８０（２）（０）、８０（１）（１）、８０（１）（０）、８０（０）（１）、８０（０）（０）として図３に示されている。累算器ブロック７２（３）〜７２（０）中にプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）を設けることについては、図８〜図９Ｃに関連して後でより詳しく論じる。このようにして、累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）に従って、累算器ブロック７２（３）〜７２（０）は、累算されたベクトル乗算出力のサンプルセット６８（３）〜６８（０）のプログラムされた組合せに従って、累算器出力のサンプルセット７６（３）〜７６（０）を与えることができる。やはり、これにより、累算器ブロック７２（３）〜７２（０）が、ＶＰＥ２２中での面積を削減し、可能性としては、所望のベクトル処理演算を実施するためのベースバンドプロセッサ２０中に設けられるＶＰＥをより少なくするために、プログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）のプログラミングに基づいて異なるタイプの累算演算を実施するように構成され、再構成され得るという柔軟性が与えられる。
【００３７】
[0051]たとえば、ある累算器モード構成では、２つの累算器ブロック７２のプログラマブルな入力データパス７８および／またはプログラマブルな内部データパス８０は、非限定的例として、単一４０ビット累算器を提供するようにプログラムされ得る。これについては、図９Ａに示し、以下でより詳細に説明する。別の累算器モード構成では、２つの累算器ブロック７２のプログラマブルな入力データパス７８および／またはプログラマブルな内部データパス８０は、非限定的例として、二重２４ビット累算器を提供するようにプログラムされ得る。これについては、図９Ｂに示し、以下でより詳細に説明する。別の累算器モード構成では、２つの累算器ブロック７２のプログラマブルな入力データパス７８および／またはプログラマブルな内部データパス８０は、１６ビット桁上げ保存加算器、それに続く単一２４ビット累算器を提供するようにプログラムされ得る。これについては、図９Ｃに示し、以下でより詳細に説明する。乗算演算と累算演算の特定の異なる組合せも、乗算器ブロック６２（３）〜６２（０）および累算器ブロック７２（３）〜７２（０）（たとえば、１６ビット累算を用いる１６ビット複素乗算、および１６ビット累算を用いる３２ビット複素乗算）のプログラミングに従って、ＶＰＥ２２によってサポートされ得る。
【００３８】
[0052]累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）は、図２のベースバンドプロセッサ２０の命令ディスパッチ４８中のベクトル命令デコーダから与えられた設定に従ってプログラムされ得る。ベクトル命令は、ＶＰＥ２２によって実施されるべき特定タイプの演算を指定する。したがって、ＶＰＥ２２は、累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）を、命令ディスパッチ４８中の命令パイプラインにおけるベクトル命令の復号に従って実行される各ベクトル命令用にプログラムし直すように構成され得る。ベクトル命令は、ＶＰＥ２２の１つまたは複数のクロック周期にわたって実行し得る。また、この例では、ＶＰＥ２２は、累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）を、ベクトル命令の各クロック周期ごとに、クロック周期単位でプログラムし直すように構成され得る。したがって、たとえば、ＶＰＥ２２中のＭ１累算ベクトル処理段階６０（２）によって実行されるベクトル命令が、ベクトル乗算出力のサンプルセット６８（３）〜６８（０）を毎クロック周期に処理する場合、その結果、累算器ブロック７２（３）〜７２（０）のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）は、ベクトル命令の実行中、各クロック周期に再構成され得る。図４Ａおよび図４Ｂは、例示的なベクトル処理のさらなる説明を与えるための、図２および図３のＶＰＥ２２中の乗算器ブロック６２（Ａ）〜６２（０）および累算器ブロック７２（Ａ）（１）〜７２（０）（０）の例示的なベクトル処理を示すフローチャートである。図４Ａは、図２および図３の例示的なＶＰＥ中に含まれるプログラマブルなデータパス構成を有する、乗算器ブロック６２（Ａ）〜６２（０）、累算器ブロック７２（Ａ）（１）〜７２（０）（０）、または両方のいずれであってもよい一般化されたベクトル処理ブロックの例示的なベクトル処理を示すフローチャートである。図４Ｂは、各々がプログラマブルなデータパス構成を有するとともに図２および図３の例示的なＶＰＥ２２中の異なるベクトル処理段階中に設けられる、乗算器ブロック６２（Ａ）〜６２（０）および累算器ブロック７２（Ａ）（１）〜７２（０）（０）の例示的なベクトル処理を示すフローチャートである。
【００３９】
[0053]この点において、図４Ａに示すように、ＶＰＥ２２のプロセスは、入力処理段階６０（０）中の複数の入力データパスの中のある入力データパス（Ａ３〜Ｃ０）中で、ベクトルアレイの幅の複数のベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を受け取ることを含む（ブロック８１）。ベクトル処理は次に、ベクトル処理ブロック６２（Ａ）〜６２（０）および／または７２（Ａ）（１）〜７２（０）（０）中の複数の入力データパスＡ３〜Ｃ０から、ベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を受け取ることを備える（ブロック８３）。ベクトル処理は次に、ベクトル処理段階６０（１）、６０（２）によって実行されるベクトル命令に従って、ベクトル処理ブロック６２（Ａ）〜６２（０）、７２（Ａ）（１）〜７２（０）（０）用のプログラマブルなデータパス構成６７（Ａ）〜６７（０）、７０（３）〜７０（０）、７８（Ａ）（１）〜７８（０）（０）、８０（Ａ）（１）〜８０（０）（０）、７４（Ａ）（１）〜７４（０）（０）に基づいて、ベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）、７６（Ａ）（１）〜７６（０）（０）を与えるように、ベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を処理することを含む（ブロック８５）。ベクトル処理は次に、出力データパス７０（Ａ）〜７０（０）、７４（Ａ）（１）〜７４（０）（０）中でベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）、７６（Ａ）（１）〜７６（０）（０）を与えることを含む（ブロック８７）。ベクトル処理は次に、出力処理段階６０（３）において、ベクトル処理段階６０（１）、６０（２）からベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）、７６（Ａ）（１）〜７６（０）（０）を受け取ることを含む（ブロック８９）。
【００４０】
[0054]図４Ａに関連して上述したベクトル処理における各処理段階６０（０）〜６０（３）は、並列化ベクトル処理のために同時に起こり、ここにおいてベクトル処理ブロック６２（Ａ）〜６２（０）、７２（Ａ）（１）〜７２（０）（０）のプログラマブルなデータパス構成６７（Ａ）〜６７（０）、７０（３）〜７０（０）、７８（Ａ）（１）〜７８（０）（０）、８０（Ａ）（１）〜８０（０）（０）、７４（Ａ）（１）〜７４（０）（０）は、各クロック周期と同程度に頻繁に再プログラムされ得ることに留意されたい。上述したように、これにより、ベクトル処理ブロック６２（Ａ）〜６２（０）、７２（Ａ）（１）〜７２（０）（０）は、異なるベクトル命令用の異なる演算を、効率的に、および共通ベクトル処理ブロック６２（Ａ）〜６２（０）、７２（Ａ）（１）〜７２（０）（０）の使用により実施することができるようになる。
【００４１】
[0055]図４Ｂは、乗算演算、それに続く累算演算を伴う、ベクトル命令のための、図３のＶＰＥ２２中の乗算器ブロック６２（Ａ）〜６２（０）および累算器ブロック７２（Ａ）（１）〜７２（０）（０）の例示的なベクトル処理を示すフローチャートである。たとえば、ＦＦＴベクトル演算は、乗算演算と、それに続く累算演算を伴う。図４Ｂのフローチャートは、図４Ａで上述した、ＶＰＥ２２の例示的な一般化されたベクトル処理のさらなる例示的な詳細を与える。この点において、ベクトル処理は、入力処理段階６０（０）中の複数の入力データパスの中のある入力データパス（Ａ３〜Ｃ０）中で、ベクトルアレイの幅の複数のベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を受け取ることを含む（ブロック９３）。ベクトル処理は次いで、複数の乗算器ブロック６２（Ａ）〜６２（０）中の複数の入力データパスＡ３〜Ｃ０からベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を受け取ることを含む（ブロック９５）。ベクトル処理は次いで、ベクトル処理段階６０（１）によって実行されるベクトル命令に従って、乗算器ブロック６２（Ａ）〜６２（０）用のプログラマブルなデータパス構成６７（Ａ）〜６７（０）、７０（３）〜７０（０）に基づき、複数の乗算出力データパス７０（Ａ）〜７０（０）の中の乗算出力データパス７０（Ａ）〜７０（０）中で乗算ベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）を与えるように、ベクトルデータ入力のサンプルセット３４（Ｙ）〜３４（０）を乗算することを含む（ブロック９７）。ベクトル処理は次に、複数の累算器ブロック７２（Ａ）（１）〜７２（０）（０）中の複数の乗算出力データパス７０（Ａ）〜７０（０）から乗算ベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）を受け取ることを含む（ブロック９９）。ベクトル処理は次に、第２のベクトル処理段階６０（２）によって実行されるベクトル命令に従って、累算器ブロック７２（Ａ）（１）〜７２（０）（０）用のプログラマブルなデータパス７８（Ａ）（１）〜７８（０）（０）、８０（Ａ）（１）〜８０（０）（０）、７４（Ａ）（１）〜７４（０）（０）構成に基づき、ベクトルの累算された結果のサンプルセット７６（Ａ）（１）〜７６（０）（０）を与えるように、乗算ベクトル結果出力のサンプルセット６８（Ａ）〜６８（０）を一緒に累算することを含む（ブロック１０１）。ベクトル処理は次いで、出力データパス７４（Ａ）（１）〜７４（０）（０）中でベクトルの累算された結果のサンプルセット７６（Ａ）（１）〜７６（０）（０）を与えることを含む（ブロック１０３）。ベクトル処理は次いで、出力処理段階６０（３）中の累算器ブロック７２（Ａ）（１）〜７２（０）（０）からベクトル結果出力のサンプルセット７６（Ａ）（１）〜７６（０）（０）を受け取ることを含む（ブロック１０５）。
【００４２】
[0056]プログラマブルなデータパス構成を有するベクトル処理ブロックを利用する、図３の例示的なＶＰＥ２２および図４Ａおよび図４Ｂのベクトル処理の概観について記載したので、記述の残りでは、図５〜図９Ｃにおいて、これらのベクトル処理ブロックのより例示的な、非限定的詳細について記載する。
【００４３】
[0057]この点において、図５は、図３のＶＰＥ２２のＭ０乗算ベクトル処理段階６０（１）中の複数の乗算器ブロック６２（３）〜６２（０）のより詳細な概略図である。図６は、図５の乗算器ブロック６２の内部構成要素の概略図である。図５に示すように、特定の入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って乗算器ブロック６２（３）〜６２（０）によって受け取られるベクトルデータ入力のサンプルセット６６（１１）〜６６（０）が示されている。図６に関連して後でより詳しく論じるように、この例における乗算器ブロック６２（３）〜６２（０）の各々は、４つの８ビット×８ビット乗算器を含む。図５に参照を戻すと、この例における乗算器ブロック６２（３）〜６２（０）の各々は、被乗数入力「Ａ」を、被乗数入力「Ｂ」または被乗数入力「Ｃ」のいずれかで乗算するように構成される。乗算器ブロック６２中で掛け合わせられ得る被乗数入力「Ａ」、および「Ｂ」または「Ｃ」は、図５に示すように、どの入力データパスＡ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０が乗算器ブロック６２（３）〜６２（０）に接続されるかによって制御される。被乗数セレクタ入力８２（３）〜８２（０）が、被乗数入力「Ｂ」それとも被乗数入力「Ｃ」が被乗数入力「Ａ」で乗算されるために選択されるかを選択するために、各乗算器ブロック６２（３）〜６２（０）中のプログラマブルな内部データパス６７（３）〜６７（０）を制御するための入力として、各乗算器ブロック６２（３）〜６２（０）に与えられる。このようにして、乗算器ブロック６２（３）〜６２（０）は、それらのプログラマブルな内部データパス６７（３）〜６７（０）が、必要に応じて異なる乗算演算を行うように再プログラムされるという能力を備えている。
【００４４】
[0058]引き続き図５を参照すると、乗算器ブロック６２（３）を一例として使うと、入力データパスＡ３およびＡ２が、それぞれ入力ＡＨおよびＡＬに接続される。入力ＡＨは、被乗数入力Ａの上位ビットを表し、ＡＬは、入力被乗数入力「Ａ」の下位ビットを意味する。入力データパスＢ３およびＢ２は、それぞれ入力ＢＨおよびＢＬに接続される。入力ＢＨは、被乗数入力「Ｂ」の上位ビットを表し、ＡＬは、入力被乗数入力「Ｂ」の下位ビットを表す。入力データパスＣ３およびＣ２は、それぞれ入力ＣＩおよびＣＱに接続される。入力ＣＩは、この例では入力被乗数入力「Ｃ」の実数ビット部分を表す。ＣＱは、この例では入力被乗数入力「Ｃ」の虚数ビット部分を表す。図６に関連して後でより詳しく論じるように、被乗数セレクタ入力８２（３）は、この例では、乗算器ブロック６２（３）のプログラマブルな内部データパス６７（３）が、被乗数入力「Ａ」に対する８ビット乗算を被乗数入力「Ｂ」それとも被乗数入力「Ｃ」で実施するように構成されるか、または乗算器ブロック６２（３）が、被乗数入力「Ａ」に対する１６ビット乗算を被乗数入力「Ｂ」それとも被乗数入力「Ｃ」で実施するように構成されるかも制御する。
【００４５】
[0059]引き続き図５を参照すると、乗算器ブロック６２（３）〜６２（０）は、それらのプログラマブルな内部データパス６７（３）〜６７（０）の構成に基づいて、乗算演算の桁上げ「Ｃ」および和「Ｓ」ベクトル出力のサンプルセットとしてベクトル乗算出力のサンプルセット６８（３）〜６８（０）を各々が生成するように構成される。図７〜図９Ｃに関連して後でより詳しく論じるように、ベクトル乗算出力のサンプルセット６８（３）〜６８（０）の桁上げ「Ｃ」および和「Ｓ」は融合され、桁上げ「Ｃ」および和「Ｓ」が、複数の累算器７２（３）〜７２（０）中で冗長桁上げ保存フォーマットを提供するように、冗長桁上げ保存フォーマットで複数の累算器７２（３）〜７２（０）に与えられることを意味する。後でより詳しく論じるように、複数の累算器７２（３）〜７２（０）中で冗長桁上げ保存フォーマットを提供することにより、複数の累算器７２（３）〜７２（０）によって実施される累算演算中に桁上げ伝搬経路と桁上げ伝搬加算演算とを提供する必要をなくすことができる。
【００４６】
[0060]ベクトル乗算出力のサンプルセット６８（３）〜６８（０）を、それらのプログラマブルな内部データパス６７（３）〜６７（０）の構成に基づいて乗算演算の桁上げ「Ｃ」および和「Ｓ」ベクトル出力のサンプルセットとして生成する乗算器ブロック６２（３）〜６２（０）の例を、図５に示す。たとえば、乗算器ブロック６２（３）は、桁上げＣ００と和Ｓ００とを８ビット乗算用の３２ビット値として、桁上げＣ０１と和Ｓ０１とを１６ビット乗算用の６４ビット値として生成するように構成される。他の乗算器ブロック６２（２）〜６２（０）も、この例では同じ能力を有する。この点において、乗算器ブロック６２（２）は、桁上げＣ１０と和Ｓ１０とを８ビット乗算用の３２ビット値として、桁上げＣ１１と和Ｓ１１とを１６ビット乗算用の６４ビット値として生成するように構成される。乗算器ブロック６２（１）は、桁上げＣ２０と和Ｓ２０とを８ビット乗算用の３２ビット値として、桁上げＣ２１と、和Ｓ２１とを１６ビット乗算用の６４ビット値として生成するように構成される。乗算器ブロック６２（０）は、桁上げＣ３０と和Ｓ３０とを８ビット乗算用の３２ビット値として、桁上げＣ３１と和Ｓ３１とを１６ビット乗算用の６４ビット値として生成するように構成される。
【００４７】
[0061]図５の乗算器ブロック６２中に設けられるプログラマブルなデータパス構成のより例示的な詳細を説明するために、図６が挙げられる。図６は、８ビット×８ビットベクトルデータ入力のサンプルセット６６と、１６ビット×１６ビットベクトルデータ入力のサンプルセット６６とを乗算することが可能なプログラマブルなデータパス構成を有する、図３および図５の乗算器ブロック６２の内部構成要素の概略図である。この点において、乗算器ブロック６２は、この例では４つの８×８ビット乗算器８４（３）〜８４（０）を含む。任意の所望の数の乗算器８４が設けられてよい。第１の乗算器８４（３）が、８ビットベクトルデータ入力のサンプルセット６６Ａ［Ｈ］（入力被乗数入力「Ａ」の上位ビットである）を受け取り、ベクトルデータ入力のサンプルセット６６Ａ［Ｈ］を、８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｈ］（入力被乗数入力「Ｂ」の上位ビットである）または８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｉ］（入力被乗数入力「Ｃ」の上位ビットである）と乗算するように構成される。被乗数として乗算器８４（３）に与えている８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｈ］または８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｉ］のいずれかを選択するように構成されたマルチプレクサ８６（３）が設けられる。マルチプレクサ８６（３）は、本実施形態では、乗数セレクタ入力８２中の上位ビットである被乗数セレクタビット入力８２［３］によって制御される。このようにして、マルチプレクサ８６（３）および被乗数セレクタビット入力８２［３］は、８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｈ］それとも８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｉ］が、受け取るベクトルデータ入力のサンプルセット６６Ａ［Ｈ］と乗算されるかを乗算器８４（３）が制御するためのプログラマブルな内部データパス６７［０］構成を提供する。
【００４８】
[0062]引き続き図６を参照すると、他の乗算器８４（２）〜８４（０）も、第１の乗算器８４（３）用に設けられるものと同様のプログラマブルな内部データパス６７［２］〜６７［０］を含む。乗算器８４（２）は、被乗数入力「Ａ」の下位ビットである８ビットベクトルデータ入力のサンプルセット６６Ａ［Ｌ］と乗算されるべき、８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｈ］または８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｉ］のいずれかをプログラマブルな内部データパス６７［１］中で与えるための、プログラマブルな構成を有するプログラマブルな内部データパス６７［２］を含む。選択は、本実施形態では、マルチプレクサ８６（２）によって、乗数セレクタ入力８２中の被乗数セレクタビット入力８２［２］に従って制御される。乗算器８４（１）は、８ビットベクトルデータ入力のサンプルセット６６Ａ［Ｈ］と乗算されるべき、被乗数入力「Ｂ」の下位ビットである８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｌ］、または被乗数入力「Ｃ」の下位ビットである８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｑ］のいずれかをプログラマブルな内部データパス６７［１］中で与えるようにプログラマブルな内部データパス６７［１］を含む。選択は、本実施形態では、マルチプレクサ８６（１）によって、乗数セレクタ入力８２中の被乗数セレクタビット入力８２［１］に従って制御される。さらに、乗算器８４（０）は、８ビットベクトルデータ入力のサンプルセット６６Ａ［Ｌ］と乗算されるべき、８ビットベクトルデータ入力のサンプルセット６６Ｂ［Ｌ］または８ビットベクトルデータ入力のサンプルセット６６Ｃ［Ｑ］のいずれかをプログラマブルな内部データパス６７［０］中で与えるようにプログラマブルな内部データパス６７［０］を含む。選択は、本実施形態では、マルチプレクサ８６（０）によって、乗数セレクタ入力８２中の被乗数セレクタビット入力８２［０］に従って制御される。
【００４９】
[0063]引き続き図６を参照すると、上述したように、乗算器８４（３）〜８４（０）は、異なるビット長乗算演算を実施するように構成され得る。この点において、各乗算器８４（３）〜８４（０）は、それぞれビット長乗算モード入力８８（３）〜８８（０）を含む。この例では、各乗算器８４（３）〜８４（０）は、それぞれ、プログラマブルなデータパス９０（３）〜９０（０）、９１、および９２（３）〜９２（０）の構成を制御する入力に従って、８ビット×８ビットモードでプログラムされ得る。各乗算器８４（３）〜８４（０）は、それぞれ、プログラマブルなデータパス９０（３）〜９０（０）、９１、および９２（３）〜９２（０）の構成を制御する入力に従って、１６ビット×１６ビットモードと２４ビット×８ビットモードとを含む、より大きいビット乗算演算の一部を行うようにもプログラムされ得る。たとえば、各乗算器８４（３）〜８４（０）が、プログラマブルなデータパス９０（３）〜９０（０）の構成に従って８ビット×８ビット乗算モードで構成される場合、ユニットとしての複数の乗算器８４（３）〜８４（０）は、２つの個々の８ビット×８ビット乗算器を、乗算器ブロック６２の一部として備えるように構成され得る。各乗算器８４（３）〜８４（０）が、プログラマブルなデータパス９１の構成に従って１６ビット×１６ビット乗算モードで構成される場合、ユニットとしての複数の乗算器８４（３）〜８４（０）は、単一１６ビット×１６ビット乗算器を乗算器ブロック６２の一部として備えるように構成され得る。乗算器８４（３）〜８４（０）が、プログラマブルなデータパス９２（３）〜９２（０）の構成に従って２４ビット×８ビット乗算モードで構成される場合、ユニットとしての複数の乗算器８４（３）〜８４（０）は、１つの１６ビット×２４ビット×８ビット乗算器を乗算器ブロック６２の一部として備えるように構成され得る。
【００５０】
[0064]引き続き図６を参照すると、この例における乗算器８４（３）〜８４（０）は、１６ビット×１６ビット乗算モードで構成されるものとして示されている。１６ビット入力和９４（３）、９４（２）および入力桁上げ９６（３）、９６（２）が、それぞれ、各乗算器８４（３）、８４（２）によって生成される。１６ビット入力和９４（１）、９４（０）および入力桁上げ９６（１）、９６（０）が、それぞれ、各乗算器８４（１）、８４（０）によって生成される。１６ビット入力和９４（３）、９４（２）および入力桁上げ９６（３）、９６（２）はまた、入力和９４（３）〜９４（０）と入力桁上げ９６（３）〜９６（０）を加え合わせるように、１６ビット和の入力９４（１）、９４（０）および入力桁上げ９６（１）、９６（０）とともに２４ビットの４：２圧縮器１０９に与えられる。加算された入力和９４（３）〜９４（０）および入力桁上げ９６（３）〜９６（０）は、プログラマブルなデータパス９１がアクティブであるとともに入力和９４（３）〜９４（０）および入力桁上げ９６（３）〜９６（０）とゲートされるとき、１６ビット×１６ビット乗算モードで、単一和９８と単一桁上げ１００とをもたらす。プログラマブルなデータパス９１は、２４ビットの４：２圧縮器１０９に与えられるように、１６ビットワードとして、組み合わされた入力和９４（３）、９４（２）をもつ第１のＡＮＤベースのゲート１０２（３）によって、および１６ビットワードとして、組み合わされた入力桁上げ９６（３）、９６（２）をもつ第２のＡＮＤベースのゲート１０２（２）によってゲートされる。プログラマブルなデータパス９１はまた、２４ビットの４：２圧縮器１０９に与えられるように、１６ビットワードとして、組み合わされた入力和９４（１）、９４（０）をもつ第３のＡＮＤベースのゲート１０２（１）によって、および１６ビットワードとして、組み合わされた入力桁上げ９６（１）、９６（０）をもつ第４のＡＮＤベースのゲート１０２（２）によってゲートされる。乗算器ブロック６２が１６ビット×１６ビットまたは２４ビット×８ビット乗算モードで構成される場合、プログラマブルな出力データパス７０［０］には、ベクトル乗算出力のサンプルセット６８［０］が、圧縮された３２ビット和Ｓ０および３２ビット桁上げＣ０部分積として与えられる。
【００５１】
[0065]乗算器ブロック６２中の乗算器８４（３）〜８４（０）が８ビット×８ビット乗算モードで構成される場合、プログラマブルな出力データパス７０［１］構成は、圧縮なしで、１６ビット入力和９４（３）〜９４（０）および部分積としての対応する１６ビット入力桁上げ９６（３）〜９６（０）として提供される。乗算器ブロック６２中の乗算器８４（３）〜８４（０）が８ビット×８ビット乗算モードで構成される場合、プログラマブルな出力データパス７０［１］は、圧縮なしで、１６ビット入力和９４（３）〜９４（０）およびベクトル乗算出力のサンプルセット６８［１］としての対応する１６ビット入力桁上げ９６（３）〜９６（０）として提供される。乗算器ブロック６２の乗算モードに依存するベクトル乗算出力のサンプルセット６８［０］、６８［１］は、実行されるベクトル命令に従って、和および桁上げ積の累算のために、累算器ブロック７２（３）〜７２（０）に与えられる。
【００５２】
[0066]プログラマブルなデータパス構成を有する、図５および図６の乗算器ブロック６２（３）〜６２（０）について記載したので、冗長桁上げ保存フォーマットで構成された累算器ブロック７２（３）〜７２（０）と融合されるべき、ＶＰＥ２２中の乗算器ブロック６２（３）〜６２（０）の特徴について、図７に関連してここで概説する。
【００５３】
[0067]この点について、図７は、図２および図３のＶＰＥ中の乗算器ブロックおよび累算器ブロックの一般化された概略図であり、ここにおいて、累算器ブロックは、桁上げ伝搬を低減するのに冗長桁上げ保存フォーマットを利用する桁上げ保存累算器構造を利用する。上述し、図７に示したように、乗算器ブロック６２は、被乗数入力６６［Ｈ］および６６［Ｌ］を乗算し、少なくとも１つの入力和９４と少なくとも１つの入力桁上げ９６を、ベクトル乗算出力のサンプルセット６８としてプログラマブルな出力データパス７０中で与えるように構成される。各累算ステップ用の累算器ブロック７２中に桁上げ伝搬経路と桁上げ伝搬加算器とを設ける必要をなくすために、プログラマブルな出力データパス７０中のベクトル乗算出力のサンプルセット６８中の少なくとも１つの入力和９４および少なくとも１つの入力桁上げ９６が、少なくとも１つの累算器ブロック７２への冗長桁上げ保存フォーマットで融合される。言い換えると、ベクトル乗算出力のサンプルセット６８中の桁上げ９６が、ベクトル入力桁上げ９６として桁上げ保存フォーマットで累算器ブロック７２に与えられる。このようにして、ベクトル乗算出力のサンプルセット６８中の入力和９４および入力桁上げ９６は、本実施形態では複合ゲート４：２圧縮器である累算器ブロック７２の圧縮器１０８に与えられ得る。圧縮器１０８は、入力和９４および入力桁上げ９６を、それぞれ、以前の累算ベクトル出力和１１２および以前のシフトされた累算ベクトル出力桁上げ１１７と一緒に累算するように構成される。以前のシフトされた累算ベクトル出力桁上げ１１７は本質的に、累算演算中の保存された桁上げ累算である。
【００５４】
[0068]このようにして、単一最終桁上げ伝搬加算器のみが、受け取られた入力桁上げ９６を、累算器ブロック７２によって生成された累算の一部として、入力和９４に伝搬するために、累算器ブロック７２中に設けられることを求められるのではない。累算器ブロック７２中の各累算ステップ中に桁上げ伝搬加算演算を実施することに関連した電力消費が、本実施形態では低減される。また、累算器ブロック７２中の各累算ステップ中に桁上げ伝搬加算演算を実施することに関連したゲート遅延も、本実施形態ではなくなる。
【００５５】
[0069]引き続き図７を参照すると、圧縮器１０８は、冗長な形での入力和９４および入力桁上げ９６を、それぞれ、以前の累算ベクトル出力和１１２および以前のシフトされた累算ベクトル出力桁上げ１１７と累算するように構成される。シフトされた累算ベクトル出力桁上げ１１７は、次の受け取られた入力和９４および入力桁上げ９６の次の累算が圧縮器１０８によって実施される前に、累算ベクトル出力桁上げ１１４をシフトすることによって、圧縮器１０８ビットによって生成された累算ベクトル出力桁上げ１１４によって生成される。最終的なシフトされた累算ベクトル出力桁上げ１１７は、累算器ブロック７２に設けられた単一最終桁上げ伝搬加算器１１９によって最終累算ベクトル出力和１１２に加算され、最終的なシフトされた累算ベクトル出力桁上げ１１７を、最終累算ベクトル出力和１１２を最終累算器出力のサンプルセット７６２の補数表現に変換するために桁上げ累算を伝搬する。最終累算ベクトル出力和１１２は、プログラマブルな出力データパス７４中で累算器出力のサンプルセット７６として与えられる（図３参照）。
【００５６】
[0070]乗算器ブロック６２と、冗長桁上げ保存フォーマットで構成された累算器ブロック７２の融合を示す図７について説明したので、累算器ブロック７２（３）〜７２（０）に関する、より例示的な詳細について、図８に関連してここで概説する。以下で説明する図９Ａ〜図９Ｃは、共通回路要素およびハードウェアを用いて異なるベクトル累算演算を行うための異なる累算モードにおける、冗長桁上げ保存フォーマットで構成された累算器ブロック７２（３）〜７２（０）のより例示的な詳細を与える。
【００５７】
[0071]図８は、図３のＶＰＥ２２中に設けられる累算器ブロック７２の例示的な内部構成要素の詳細な概略図である。上述するとともに後でより詳しく論じるように、累算器ブロック７２は、プログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）を有して構成され、そうすることによって累算器ブロック７２は、特定の異なるタイプのベクトル累算演算を実施するように設計された専用回路要素として作用するようにプログラムされ得る。たとえば、累算器ブロック７２は、符号付きおよび符号なし累算演算を含む、いくつかの異なる累算および加算を行うようにプログラムされ得る。異なるタイプの累算演算を行うように構成された累算器ブロック７２中のプログラマブルな入力データパス７８（３）〜７８（０）および／またはプログラマブルな内部データパス８０（３）〜８０（０）の具体例が、後で論じる図９Ａ〜図９Ｃに示される。また、累算器ブロック７２は、低減された組合せ論理で高速累算演算を行うために、桁上げ伝搬を回避または低減するために、冗長桁上げ算術を行うための桁上げ保存累算器７２［０］、７２［１］を含むように構成される。
【００５８】
[0072]累算器ブロック７２の例示的な内部構成要素が、図８に示される。そこに示されているように、本実施形態における累算器ブロック７２は、第１の入力和９４［０］および第１の入力桁上げ９６［０］と、第２の入力和９４［１］および第２の入力桁上げ９６［１］とを、一緒に累算するために乗算器ブロック６２から受け取るように構成される。図８に関連して、入力和９４［０］、９４［１］および入力桁上げ９６［０］、９６［１］は、ベクトル入力和９４［０］、９４［１］およびベクトル入力桁上げ９６［０］、９６［１］と呼ばれる。上で記載するとともに図６に示すように、本実施形態におけるベクトル入力和９４［０］、９４［１］およびベクトル入力桁上げ９６［０］、９６［１］は各々、長さが１６ビットである。この例における累算器ブロック７２は、２つの２４ビット桁上げ保存累算器７２［０］、７２［１］として設けられ、各々が、共通要素番号をもつ同様の構成要素を含み、「［０］」は桁上げ保存累算器７２［０］用に指定され、「［１］」は桁上げ保存累算器７２［１］用に指定される。桁上げ保存累算器７２［０］、７２［１］は、ベクトル累算演算を同時に実施するように構成され得る。
【００５９】
[0073]図８の桁上げ保存累算器７２［０］を参照すると、ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］は、プログラマブルな内部データパス８０［０］の一部として設けられたマルチプレクサ１０４（０）中の入力である。負のベクトル入力和９４［０］’と負のベクトル入力桁上げ９６［０］’とを必要とする累算演算のための、マルチプレクサ１０４（０）への入力としての入力１０７（０）に従って負のベクトル入力和９４［０］’と負のベクトル入力桁上げ９６［０］’とを生成する、排他的ＯＲベースのゲートからなり得る否定回路１０６（０）も設けられる。マルチプレクサ１０４（０）は、ベクトル命令復号の結果として生成されたセレクタ入力１１０（０）に従って、圧縮器１０８（０）に与えられるべきベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’のいずれかを選択するように構成される。この点において、セレクタ入力１１０（０）は、累算器ブロック７２によって実施されるように構成された累算演算に従って、桁上げ保存累算器７２［０］のプログラマブルな入力データパス７８［０］を、ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’のいずれかを、圧縮器１０８（０）に与えるようにプログラマブルにさせる。
【００６０】
[0074]引き続き図８を参照すると、本実施形態における桁上げ保存累算器７２［０］の圧縮器１０８（０）は、複合ゲート４：２圧縮器である。この点において、圧縮器１０８（０）は、冗長桁上げ保存演算において和と桁上げとを累算するように構成される。圧縮器１０８（０）は、現在のベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または現在の負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’を、圧縮器１０８（０）への４つの入力として、以前の累算されたベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または累算された負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’と一緒に累算するように構成される。圧縮器１０８（０）は、累算ベクトル出力和１１２（０）と、累算ベクトル出力桁上げ１１４（０）とを、累算器出力のサンプルセット７６（３）〜７６（０）を与えるように、プログラマブルな出力データパス７４［０］中の累算器出力のサンプルセット７６［０］として与える（図３参照）。累算ベクトル出力桁上げ１１４（０）は、各累算ステップ中にビット幅成長を制御するための、シフトされた累算ベクトル出力桁上げ１１７（０）を与えるように、累算演算中にビットシフタ１１６（０）によってシフトされる。たとえば、本実施形態におけるビットシフタ１１６（０）は、冗長桁上げ保存フォーマットでの、圧縮器１０８（０）に融合されるバレルシフタである。このようにして、シフトされた累算ベクトル出力桁上げ１１７（０）は本質的に、累算器７２［０］によって実施される累算演算中に、累算ベクトル出力和１１２（０）に伝搬される必要なく、保存される。このようにして、累算器７２［０］中の各累算ステップ中に桁上げ伝搬加算演算を実施することに関連した電力消費およびゲート遅延が、本実施形態ではなくなる。
【００６１】
[0075]追加の後続ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’は、現在の累算ベクトル出力和１１２（０）および現在の累算ベクトル出力桁上げ１１７（０）と累算され得る。ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］’は、ベクトル命令復号の結果として生成された和桁上げセレクタ１２０（０）に従って、プログラマブルな内部データパス８０［０］の一部としてのマルチプレクサ１１８（０）によって選択される。現在の累算ベクトル出力和１１２（０）および現在のシフトされた累算ベクトル出力桁上げ１１７（０）は、桁上げ保存累算器７２［０］が、アップデートされた累算ベクトル出力和１１２（０）と、累算ベクトル出力桁上げ１１４（０）とを与えるために、入力として圧縮器１０８（０）に与えられ得る。この点において、和桁上げセレクタ１２０（０）は、累算器７２［０］のプログラマブルな内部データパス８０［０］を、累算器ブロック７２によって実施されるように構成された累算演算に従って、ベクトル入力和９４［０］と、ベクトル入力桁上げ９６［０］とを圧縮器１０８（０）に与えるようにプログラマブルにさせる。マルチプレクサ１１８（０）に、桁上げ保存累算器７２［０］における累算の動作タイミングを制御するための保持状態入力１２６（０）に従って、累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）の現在の状態を保持させるために、保持ゲート１２２（０）、１２４（０）も本実施形態では設けられる。
【００６２】
[0076]引き続き図８を参照すると、桁上げ保存累算器７２［０］の累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）、ならびに桁上げ保存累算器７２［１］の累算ベクトル出力和１１２（１）およびシフトされた累算ベクトル出力桁上げ１１７（１）、ならびには、それぞれ、制御ゲート１３４（０）、１３６（０）および１３４（１）、１３６（１）によってゲートされる。制御ゲート１３４（０）、１３６（０）および１３４（１）、１３６（１）は、それぞれ、圧縮器１０８（０）、１０８（１）に戻される、累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）と、累算ベクトル出力和１１２（１）およびシフトされた累算ベクトル出力桁上げ１１７（１）とを制御する。
【００６３】
[0077]要約すれば、図８の累算器ブロック７２の累算器７２［０］、７２［１］のプログラマブルな入力データパス７８［０］、７８［１］およびプログラマブルな内部データパス８０［０］、８０［１］によって、累算器ブロック７２は異なるモードで構成され得る。累算器ブロック７２は、図８に示す共通累算器回路要素を用いた特定のベクトル処理命令に従って、異なる累算演算を行うように構成され得る。共通累算器回路要素を用いた特定のベクトル処理命令に従って異なる累算演算を行うように構成される累算器ブロック７２の例を、以下の図９Ａ〜図９Ｃに示す。
【００６４】
[0078]この点において、図９Ａは、図８の累算器ブロック７２の概略図である。この例では、累算器ブロック７２は、二重２４ビット累算器モードを提供するようにプログラムされた、プログラマブルな入力データパス７８［０］、７８［１］と、プログラマブルな内部データパス８０［０］、８０［１］とを有する。図９Ａの累算器ブロック７２中の各桁上げ保存累算器７２［０］、７２［１］は、２４ビット累算器を提供するように構成される。累算器７２［０］、７２［１］の２４ビット累算容量は、圧縮器１０８（０）、１０８（１）のビット容量によって与えられる。図８に関連した累算器７２［０］、７２［１］の考察により、図９Ａの累算器７２［０］、７２［１］によって行われる個々の２４ビット累算について説明する。累算ブロック７２において二重２４ビット累算を行うための累算器７２［０］、７２［１］によって実施される累算の一般的なデータパスが、それぞれ、図９Ａの、プログラマブルな累算データパス１３２（０）および１３２（１）中に示されている。
【００６５】
[0079]引き続き図９Ａを参照して、桁上げ保存累算器７２［０］の例示的な構成要素が記載されるが、桁上げ保存累算器７２［１］にも等しく適用可能である。本実施形態では、桁上げ保存累算器７２［０］の累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）、ならびに桁上げ保存累算器７２［１］の累算ベクトル出力和１１２（１）およびシフトされた累算ベクトル出力桁上げ１１７（１）、そして、それぞれ、制御ゲート１３４（０）、１３６（０）および１３４（１）、１３６（１）によってゲートされる。制御ゲート１３４（０）、１３６（０）および１３４（１）、１３６（１）は、それぞれ、圧縮器１０８（０）、１０８（１）に戻される、累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）と、累算ベクトル出力和１１２（１）およびシフトされた累算ベクトル出力桁上げ１１７（１）とを制御する。ベクトル命令の復号から、制御ゲート１３４（０）、１３６（０）と１３４（１）、１３６（１）の両方に与えられた制御入力１３８（０）、１３８（１）は、それぞれ、累算ベクトル出力和１１２（０）と、シフトされた累算ベクトル出力桁上げ１１７（０）とを制御し、累算ベクトル出力和１１２（１）およびシフトされた累算ベクトル出力桁上げ１１７（１）は、それぞれ、圧縮器１０８（０）、１０８（１）に戻される。制御入力１３８（０）、１３８（１）および制御ゲート１３４（０）、１３６（０）は、累算器７２［０］、７２［１］が、図９Ｂおよび図９Ｃに関連して後でより詳しく論じるように、別個の累算演算それとも組み合わされた累算演算を各々が実施するようにプログラムされるかを制御する。したがって、制御入力１３８（０）、１３８（１）ならびに制御ゲート１３４（０）、１３６（０）および１３４（１）、１３６（１）は、本実施形態では、それぞれ、累算器７２［０］、７２［１］のプログラマブルな内部データパス８０［０］、８０［１］の一部を形成する。
【００６６】
[0080]図８に参照を戻すと、累算器ブロック７２のプログラマブルな内部データパス８０［０］、８０［１］はまた、個々の累算器７２［０］、７２［１］の２４ビット容量よりも大きい累算演算を実施するようにプログラムされ、かつ／または再プログラムされ得る。この点において、累算器７２［０］、７２［１］のプログラマブルな内部データパス８０［０］、８０［１］は、単一ベクトル累算演算において一緒に利用されるべき両方の累算器７２［０］、７２［１］を提供するようにプログラムされ得る。累算器７２［０］、７２［１］は、累算器７２［０］、７２［１］の個々のビット累算容量よりも大きいビット容量の単一累算演算を行うようにプログラムされ得る。累算器７２［０］、７２［１］のプログラマブルな内部データパス８０［０］、８０［１］は、桁上げ保存累算器７２［０］に、圧縮器１０８（０）から、次の桁上げ出力（ＮＣＯ）１３７（０）としてオーバーフロー桁上げ出力を伝搬させるように構成され得る。ＮＣＯ１３７（０）は、次の桁上げ入力（ＮＣＩ）１３９（１）として、桁上げ保存累算器７２［１］中の圧縮器１０８（１）に与えられ得る。図８に関連して上で記載したように、本実施形態では、４０ビット累算を行うための累算器７２［０］、７２［０］に、２４ビット桁上げおよび和累算への２４ビットオーバーフロー桁上げ伝搬を行わせるための、累算器７２［０］、７２［１］中でプログラマブルな内部データパス８０［０］、８０［１］として提供されるこの桁上げ伝搬構成能力。
【００６７】
[0081]この点において、図９Ｂは、図８の同じ累算器ブロック７２の概略図である。図９Ｂにおいて、累算器ブロック７２が、単一累算演算モードで構成されて示されている。図９Ｂにおいて、累算器７２［０］、７２［１］は、累算器ブロック７２中で単一累算演算を行うために構成されたプログラマブルな内部データパス８０［０］、８０［１］を有する。累算器ブロック７２の単一累算器モードのこの例において、累算器７２［０］、７２［１］は、単一４０ビット累算ベクトル出力和１１２とシフトされた累算ベクトル出力桁上げ１１７とを累算する。単一累算ベクトル出力和１１２は、プログラマブルな出力データパス７４［０］、７４［１］中で累算器出力のサンプルセット７６として与えられる累算ベクトル出力和１１２（０）、１１２（１）からなる（図３も参照）。累算ベクトル出力和１１２（０）は、単一４０ビット累算ベクトル出力和１１２の最下位ビットを備える。累算ベクトル出力和１１２（１）は、単一４０ビット累算ベクトル出力和１１２の最上位ビットを備える。同様に、シフトされた累算ベクトル出力桁上げ１１７は、シフトされた累算出力桁上げ１１７（０）、１１７（１）からなる。シフトされた累算ベクトル出力桁上げ１１７（０）は、単一シフト累算ベクトル出力桁上げ１１７の最下位ビットを備える。累算ベクトル出力和１１４（１）は、単一４０ビット累算ベクトル出力桁上げ１１４の最上位ビットを備える。累算ベクトル出力和１１４［０］およびシフトされた累算ベクトル出力桁上げ１１７（０）は、プログラマブルな出力データパス７４［０］中に設けられる（図３参照）。
【００６８】
[0082]引き続き図９Ｂを参照すると、累算器ブロック７２が単一累算モード（たとえば、４０ビット累算）で構成されるときに累算器７２［０］、７２［１］によって実施される累算演算の一般的なデータパスが、プログラマブルな累算データパス１４６として示されている。この点において、累算器ブロック７２は、上で記載したように、ベクトル入力和９４とベクトル入力桁上げ９６とを受け取る。桁上げ保存累算器７２［０］は、場合によっては、ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］の累算からの、累算ベクトル出力和１１２（０）と、累算ベクトル出力桁上げ１１４（０）との最下位ビットを累算する。桁上げ保存累算器７２［１］は、場合によっては、ベクトル入力和９４［０］およびベクトル入力桁上げ９６［０］、または負のベクトル入力和９４［０］’および負のベクトル入力桁上げ９６［０］の累算からの、累算ベクトル出力和１１２（１）と、累算ベクトル出力桁上げ１１４（１）との最上位ビットを累算する。
【００６９】
[0083]引き続き図９Ｂを参照すると、単一累算ベクトル出力和１１２と、累算ベクトル出力桁上げ１１４とを与えるように累算器７２［０］、７２［１］をプログラムするために、累算器７２［０］、７２［１］のプログラマブルな内部データパス８０［０］，８０［１］は、単一累算演算を行うようにプログラムされる。この点において、桁上げ保存累算器７２［０］の圧縮器１０８（０）のＮＣＯ１３７（０）および桁上げ保存累算器７２［１］の圧縮器１０８（１）のＮＣＩ１３９（１）は、累算器ブロック７２中に単一累算器（たとえば、４０ビット累算器）を設けるために構成される。桁上げ保存累算器７２［１］のＮＣＩ１３９（１）は、ＮＣＩ制御入力１４２（１）を用いてＮＣＩゲート１４０（１）によってゲートされる。このようにして、累算器ブロック７２中の累算器７２［０］、７２［１］が、桁上げ保存累算器７２［０］から桁上げ保存累算器７２［１］へのオーバーフロー桁上げ伝搬を利用して単一累算演算を行うことを所望されるとき、ＮＣＩ制御入力１４２（１）は、桁上げ保存累算器７２［１］のプログラマブルな内部データパス８０［１］の一部としてアクティブにされ得る。ＮＣＩ制御入力１４２（１）は、ＮＣＩゲート１４０（１）に、圧縮器１０８（０）から圧縮器１０８（１）へのオーバーフロー桁上げ伝搬を許可させる。ＮＣＩ制御入力１４２（１）は、圧縮器１０８（０）に、圧縮器１０８（１）へのＮＣＩ１３９（１）としてＮＣＯ１３７（０）を生成させるように、桁上げ保存累算器７２［０］中の圧縮器１０８（０）の桁上げ伝搬入力１４４（０）にも結合される。これらの構成により、桁上げ保存累算器７２［１］は、単一累算ベクトル出力和１１２と、累算ベクトル出力桁上げ１１４とを与え得るように、ベクトル入力和９４［１］と、ベクトル入力桁上げ９６［１］とを累算することができるようになる。
【００７０】
[0084]累算器ブロック７２中の桁上げ保存累算器７２［１］は、図９Ｂに示すように、ＮＣＩ１３９（０）およびＮＣＩ制御入力１４２（０）によってゲートされるＮＣＩゲート１４０（０）も含むことに留意されたい。ただし、桁上げ保存累算器７２［０］が単一累算演算の最下位ビットを累算するので、ＮＣＩ制御入力１４２（０）とＮＣＩ１３９（０）の両方は、本実施形態では論理「０」に結び付けられる。桁上げ保存累算器７２［１］の圧縮器１０８（０）は、桁上げ伝搬入力１４４（１）も含むが、桁上げ伝搬入力１４４（１）は、本実施形態では、累算器７２（１）にＮＣＯ１２（１）を生成させないために、論理「０」に結び付けられることにも留意されたい。桁上げ保存累算器７２［１］は、本実施形態では、次の累算器への桁上げ伝搬を実施する必要はなく、というのは、本実施形態において設けられる桁上げ保存累算器７２［１］を超える、累算器ブロック７２の別の累算器がないからである。
【００７１】
[0085]図９Ｃは、図８の同じ累算器ブロック７２の別の累算器モードの概略図である。この点において、図９Ｃは、桁上げ保存加算器と、それに続く、累算器ブロック７２中で別の累算モードを提供するための単一累算器を提供するための、プログラムされたデータパス構成を有する、図８の累算器ブロック７２の概略図である。いくつかの累算演算は、複素算術を実施するための余剰加算器を必要とし得る。図９Ｃにおいて、累算器７２［０］、７２［１］は、１６ビット桁上げ保存加算器と、それに続く単一２４ビット累算器を提供するために構成されたプログラマブルな内部データパス８０［０］、８０［１］を有する。
【００７２】
[0086]図９Ｃを参照すると、累算器ブロック７２が桁上げ保存加算器と、それに続く単一累算器中で構成されるときに累算器７２［０］、７２［１］によって実施される累算の一般的なデータパスが、プログラマブルなデータパス１４８によって示されている。この点において、和桁上げセレクタ１２０（０）は、マルチプレクサ１１８（０）に、ベクトル入力和９４［１］と、ベクトル入力桁上げ９６［０］とを制御ゲート１３４（０）、１３６（０）に与えさせるように、ベクトル命令復号の結果として生成される。制御入力１３８（０）は、制御ゲート１３４（０）、１３６（０）に、ベクトル入力和９４［１］と、ベクトル入力桁上げ９６［１］とを圧縮器１０８（０）へ与えさせるように、桁上げ保存累算器７２［０］のプログラマブルな内部データパス８０［１］をプログラムするようにアクティブにされる。ベクトル入力和９４［１］およびベクトル入力桁上げ９６［１］は、累算ベクトル出力和１１２（０）と、累算ベクトル出力桁上げ１１４（０）とを与えるように、桁上げ保存累算器７２［０］の圧縮器１０８（０）によって、ベクトル入力和９４［０］およびベクトル入力桁上げ９６［１］と累算される。累算ベクトル出力和１１２（０）およびシフトされた累算ベクトル出力桁上げ１１７（０）は、桁上げ保存加算器を設けるように、プログラマブルな出力データパス７４［０］（図３も参照）中で累算器出力のサンプルセット７６［０］として与えられる。シフトされた累算ベクトル出力桁上げ１１７（０）は、２４ビット累算器としての、累算ベクトル出力和１１２（１）と、シフトされた累算ベクトル出力桁上げ１１７（１）とを、プログラマブルな出力データパス７４［１］（図３も参照）中で累算器出力のサンプルセット７６［１］として与えるようにベクトル入力和９４［１］およびベクトル入力桁上げ９６［１］に累算されるために、マルチプレクサ１０４（１）によって圧縮器１０８（１）に与えられるように、プログラマブルなデータパス１４８中に示される桁上げ保存累算器７２［１］にも与えられる。
【００７３】
[0087]図５〜図９Ｃで上述したように、ＶＰＥ２２中に設けられる乗算器ブロック６２（０〜Ａ）および累算器ブロック７２（０〜Ａ）は、基数２Xのバタフライベクトル演算を行うようにも都合よくプログラムされ得る。基数２Xのバタフライベクトル演算は、ＦＦＴベクトル処理演算を実施するのに使われ得る。ＦＦＴ演算は一般に、例として、線形フィルタリング、相関分析、およびスペクトル分析など、様々なデジタル信号処理アプリケーションにおいて実施される。したがって、ＦＦＴベクトル処理演算を、低減された処理時間で、および電力効率的に実施することができるＶＰＥを設けることが有利であり得る。
【００７４】
[0088]知られているように、離散ＦＦＴ（ＤＦＴ）は、Ｎ個の複素数値数の数列｛Ｘ（ｋ）｝を、長さＮの別のデータ列｛ｘ（ｎ）｝が与えられると、以下の公式に従って計算することによって計算され得る。
【数１】
2016514330.tif 000003
【００７５】
[0089]上のＸ（ｋ）についての公式から、ｋの各値について、Ｘ（ｋ）の直接計算は、Ｎ回の複素乗算（４Ｎ回の実乗算）と、Ｎ−１回の複素加算（４Ｎ−２回の実加算）とを伴うことが観察される。したがって、ＤＦＴのすべてのＮ個の値を計算することは、Ｎ2回の複素乗算と、Ｎ2−Ｎ回の複素加算とを必要とする。以下に示す位相因子ＷNの対称性および周期性プロパティを認識することによって、Ｎ＝２XポイントＤＦＴを計算するのに、分割統治法が利用されることができる。
【数２】
2016514330.tif 000004
【００７６】
[0090]Ｎポイントデータ列は、２つのＮ／２ポイントデータ列ｆ1（ｎ）およびｆ2（ｎ）に分割され、それはｘ（ｎ）の偶数番号および奇数番号サンプルにそれぞれ対応する、すなわち、
【数３】
2016514330.tif 000005
【００７７】
または
【数４】
2016514330.tif 000006
【００７８】
[0091]ＷN2＝ＷN/2代入を用いて、上の後者の等式は、以下のように表現され得る。
【数５】
2016514330.tif 000007
【００７９】
[0092]Ｆ1（ｋ）およびＦ2（ｋ）は周期的なので、Ｎ／２の周期で、Ｆ1（ｋ＋Ｎ／２）＝Ｆ1（ｋ）およびＦ2（ｋ＋Ｎ／２）＝Ｆ2（ｋ）となる。さらに、回転因子はＷNk＋Ｎ／２＝−ＷNkである。したがって、等式は次のように表すことができ、乗算の回数を、Ｎ2からＮ／２ｌｏｇ2Ｎ回の乗算に低減させる。
【数６】
2016514330.tif 000008
【００８０】
[0093]この点において、図１０〜図１２に関連して以下でより詳細に説明するように、ＶＰＥ２２は、他の算術論理ベクトル演算を行うのに使われ得るのと同じ乗算器ブロック６２（０〜Ａ）と累算器ブロック７２（０〜Ａ）とを用いてＦＦＴ演算を行うことができる。プログラマブルなデータパス９０（３）〜９０（０）、９１、および９２（３）〜９２（０）、乗算器ブロック６２（０）〜６２（Ａ）（図３参照）中の各乗算器８４（０）〜８４（３）（図６参照）のそれぞれは、実行される特定の基数２Xのバタフライベクトル命令に従って、基数２Xのバタフライベクトル演算のポイントについての乗算を行うようにプログラムされ得る。累算器ブロック７２（０）〜７２（Ａ）（図３参照）のプログラマブルな入力データパス７８（０）〜７８（Ａ）、内部データパス８０（０）〜８０（Ａ）、および／または出力データパス７４（０）〜７４（Ａ）は、複数の乗算器ブロック６２（０）〜６２（Ａ）の中の乗算器ブロック６２からの基数２Xのバタフライ乗算積を、実行される基数２Xのバタフライベクトル命令に従って累算するようにプログラムされ得る。累算器ブロック７２（０）〜７２（Ａ）のプログラマブルな入力データパス７８（０）〜７８（Ａ）、内部データパス８０（０）〜８０（Ａ）、および／または出力データパス７４（０）〜７４（Ａ）はまた、複数の乗算器ブロック６２（０）〜６２（Ａ）の中の他の乗算器ブロック６２からの基数２Xのバタフライ乗算積を、実行される基数２Xのバタフライベクトル命令に従って累算するように、他の周期において再プログラムされ得る。累算器ブロック７２（０）〜７２（Ａ）によって累算された最終的な累算基数２Xのバタフライ乗算積は、ＦＦＴベクトル処理演算のＮ個のポイントを与えることができる。
【００８１】
[0094]乗算器ブロック６２（０）〜６２（Ａ）および累算器ブロック７２（０）〜７２（Ａ）は、スケーリングでのＦＦＴ、乗算でのＦＦＴ、位相ランプ乗算でのＦＦＴ、補間ＦＦＴ、高速畳込み、およびＦＨＴ変換など、他の関連ＦＦＴ演算にも構成され得る。その結果、より少ないＶＰＥで、ベクトルプロセッサにおいて所望の基数２Xのバタフライベクトル演算と他のタイプの算術論理ベクトル演算とを行うことができ、したがって、ベクトルプロセッサ中の面積を節約するとともに、スカラー処理エンジンに勝る、より少ないレジスタ書込みおよびより速いベクトル命令実行時間というベクトル処理利点を依然として保有する。
【００８２】
[0095]ＤＦＴにおけるデータ点Ｎの数が４の累乗である（すなわち、Ｎ＝４X）とき、基数２のアルゴリズムが計算に利用され得る。ただし、このケースの場合、基数２XのＦＦＴアルゴリズムを利用すると、より計算効率がよい。たとえば、Ｎポイント入力列を４つの部分列、すなわちｘ（４ｎ）、ｘ（４ｎ＋１）、ｘ（４ｎ＋２）、ｘ（４ｎ＋３）、ｎ＝０，１，．．．，Ｎ／４−１に分割またはデシマイト（decimate）することによって、基数４のＦＦＴアルゴリズムが提供され得る。
【数７】
2016514330.tif 000009
【００８３】
[0096]したがって、上記等式から取得された４つのＮ／４ポイントＤＦＴ  Ｆ（ｌ，ｑ）は、ＮポイントＤＦＴをもたらすように組み合わされる。Ｎ／４ポイントＤＦＴを組み合わせるための表現は、基数４の時間分割バタフライ演算を定義し、これは、次のように行列の形で表現され得る。
【数８】
2016514330.tif 000010
【００８４】
[0097]上に示す基数４のバタフライ演算行列は、ポイントｑに対するＮポイントＤＦＴにおける単一ポイントとして与えられたＮ／４ポイントを再結合するように解くことができる。すべてのポイントｑについてのＤＦＴ全体を解くために、ＮポイントＤＦＴ中について算出された単一ポイントが累算され得る。
【００８５】
[0098]この点において、図１０は、上に示す基数４のバタフライ演算行列を解くための基数バタフライ回路１４６を形成するように、累算ベクトル処理段階６０（２）（図８参照）中の２つの累算器ブロック７２（０）、７２（１）に並列に融合された乗算ベクトル処理段階６０（１）（図５参照）中の乗算器８４をもつ図３のＶＰＥ２２の概念的概略図である。図１０を参照すると、基数バタフライ回路１４６は、基数２または基数４のバタフライベクトル演算のいずれかを実施するように構成される。ＶＰＥ２２は、乗算器ブロック６２が４つの累算器、すなわち累算器ブロック７２［１］中の累算器７２［１］［１］、７２（１）（０）および累算器ブロック７２［０］中の累算器７２（０）（１）、７２（０）（０）に融合されるようにプログラムされ、これらは、本実施形態における基数バタフライ回路１４６を設けるように、冗長桁上げ保存フォーマットで構成される。冗長桁上げ保存フォーマットで構成されることが可能な累算器ブロック７２についての考察は、図７〜図９Ｃに関連して上で前述した。乗算器ブロック８４は、ＮポイントＤＦＴの１つのポイントを与えるように、４つの回転因子で乗算された単一ベクトルデータ入力のサンプルセット６６（すなわち、Ｎ／４基数ポイント）の４つの乗算積を与え得る。基数バタフライ回路１４６中に含まれるようにプログラムされた乗算器ブロック６２中の乗算器８４の数は、実行される特定の基数バタフライベクトル命令に従って基数バタフライベクトル演算を実施する際に使われるように、ビット幅ベクトルデータ入力のサンプルセット６６に基づく。
【００８６】
[0099]引き続き図１０を参照すると、回転因子ジェネレータ１４８（３）〜１４８（０）がＶＰＥ２２中に設けられる。回転因子ジェネレータ１４８（３）〜１４８（０）は、それぞれ、バタフライレーン１４９（３）〜１４９（０）中で回転因子ＷNqを、基数バタフライ回路１４６中に含まれるようにプログラムされた乗算器ブロック６２中の乗算器８４に与えられるように生成する。回転因子ジェネレータ１４８（３）〜１４８（０）を設けることによって、基数バタフライベクトル演算用の回転因子ＷNqが与えられ得る。基数バタフライ回路１４６が基数２のバタフライベクトル演算用に構成される場合、単位元（「１」）である、ＷN0の単一回転因子のみが、回転因子ジェネレータ１４８（０）から必要とされる。ただし、基数バタフライ回路１４６が基数４のバタフライベクトル演算用に構成される場合、４つの回転因子ＷN3〜ＷN0が、以下の回転因子行列に従って回転因子ジェネレータ１４８（３）〜１４８（０）によって生成されることを必要とされる。
【数９】
2016514330.tif 000011
【００８７】
[00100]本実施形態では、図１０の同じ乗算器ブロック６２は、４回繰り返され、４つの累算器７２（１）（１）、７２（１）（０）、７２（０）（１）、７２（０）（０）に融合される。というのは、本実施形態における基数バタフライ回路１４６が構成され得るからであり、ここにおいて単一乗算器ブロック６２は、ＮポイントＤＦＴの１つのポイントを与えるように、４つの回転因子で乗算された単一ベクトルデータ入力のサンプルセット６６（すなわち、Ｎ／４基数ポイント）の４つの乗算積を与え得る。基数バタフライ回路１４６中に含まれるようにプログラムされた乗算器ブロック６２中の乗算器８４の数は、実行される特定の基数バタフライベクトル命令に従って基数バタフライベクトル演算を実施する際に使われるように、ビット幅ベクトルデータ入力のサンプルセット６６に基づく。また、図１０の基数バタフライ回路１４６中の累算器ブロック７２［１］中の各累算器７２［１］［１］、７２［１］［０］および累算器ブロック７２［０］中の累算器７２［０］（１）、７２［０］（０）は、基数バタフライ演算のビット幅に依存して、Ｎ／４基数ポイントを累算するようにプログラムされ、追加累算器ブロック７２は、基数バタフライ回路１４６中に含まれるようにプログラムされてもよい。
【００８８】
[00101]また、本実施形態では、図１０の基数バタフライ回路１４６は、クロック周期ごとに、Ｎポイントの基数４のバタフライ演算用にＮ／２回のｌｏｇ2Ｎ乗算と４つの累算とを行うことができる。したがって、Ｎポイントの基数４のバタフライベクトル演算の１つのバタフライ演算を完了するのに、４つのクロック周期だけが必要とされる。これは、基数２のバタフライ演算と同じスループットである。したがって、基数バタフライ回路１４６は、基数４のバタフライベクトル演算をＮ回のクロック周期で完了することができる。本明細書における実施形態によるＶＰＥ２２は、乗算器ブロック６２（０）〜６２（Ａ）および累算器ブロック７２（０）〜７２（Ａ）用のデータパス構成に従って、いくつかの基数バタフライ回路１４６を設けるように構成され得ることにも留意されたい。したがって、ＶＰＥ２２が、クロック周期ごとにＭ回のＮポイントの基数バタフライベクトル演算を実施するように、たとえば、一例として基数１６のドラゴンフライベクトル演算を実施するように構成され得る場合、ＶＰＥ２２がＮポイント基数４のバタフライトランザクションを実施するための全体的クロック周期カウントは、（Ｎ／２Ｌｏｇ２Ｎ）／Ｍまで低減される。さらに、乗算器ブロック６２を、冗長桁上げ保存フォーマットで構成された累算器ブロック７２［９１］、７２［０］と融合することによって、各累算ステップ中で桁上げ伝搬パスと桁上げ伝搬加算演算とを提供することは、上述したように必要とされず、そうすることによって、追加処理時間と電力消費とを節約する。
【００８９】
[00102]さらなる例示を与えるために、図１１は、基数２または基数４のバタフライベクトル演算のいずれかを実施するように構成された、図１０の基数バタフライ回路１４６の１つの周期の概略図である。基数２のバタフライベクトル演算を実施するように構成された基数バタフライ回路１４６の記述について最初に記載し、その後に基数４のバタフライベクトル演算が続く。上述した基数２のバタフライベクトル演算に関して、Ｎポイントの基数２のバタフライ演算を行うために、以下の等式が解かれることになる。
【数１０】
2016514330.tif 000012
【００９０】
[00103]引き続き図１１を参照すると、ベクトルデータ入力のサンプルセット６６［１］、６６［０］が、乗算ベクトル処理段階６０（１）において受け取られる。ベクトルデータ入力のサンプルセット６６［１］、６６［０］は、Ｘ（ｋ）の偶数番号および奇数番号サンプルまたはポイントに対応する、２つのＮ／２ポイントデータ列Ｆ1（ｋ）およびＦ2（ｋ）中で分割されたＤＦＴポイントからなる。「ｋ」は、列中の１つのＮ／２ポイントを表し、これは各周期について累算される。乗算器８４は通常、ベクトル乗算出力のサンプルセット６８［０］（すなわち、ＷNkＦ2（ｋ））を与えるように、Ｆ2（ｋ）を、バタフライレーン１４９上での入力としての回転因子Ｗの「ｅ」成分および累乗成分で乗算するために、２つの乗算を行う必要がある。ただし、基数２のバタフライ演算用の回転因子は単位元なので、乗算器８４は、この例ではＦ2（ｋ）を「ｅ」で乗算するのに使われ得るだけである。したがって、乗算器８４による中間乗算結果のレジスタ退避が節約される。累算器７２［１］（１）は、累算されたベクトル出力和１１２［１］（１）および累算されたベクトル出力桁上げ１１７［１］（１）として、偶数番号列Ｘ（ｋ）中でＮ／２ポイントを与えるように、ベクトル乗算出力のサンプルセット６８［０］をデータ点Ｆ1（ｋ）に加える。累算器７２［０］（１）は、累算されたベクトル出力和１１２［１］（０）および累算されたベクトル出力桁上げ１１７［１］（０）として、奇数番号列Ｘ（ｋ＋Ｎ／２）中でＮ／２ポイントを与えるように、ベクトル乗算出力のサンプルセット６８［０］をデータ点Ｆ1（ｋ）の否定（negation）に加える。否定回路１０６［０］（１）は、データ点Ｆ1（ｋ）を、ベクトル乗算出力のサンプルセット６８［０］に加算される前に否定する。追加ベクトルデータ入力のサンプルセット６６［１］、６６［０］が受け取られ、それぞれ、累算器７２［１］（１）、７２［０］（１）に与えられ、それぞれ、偶数番号列Ｘ（ｋ）および奇数番号列Ｘ（ｋ＋Ｎ／２）の合計を表す最終累算出力のサンプルセット７６［１］（１）、７６［１］，（０）を与えるようにデータ列が合計されるまで、累算ベクトル出力和１１２［１］（１）および累算ベクトル出力桁上げ１１７［１］（１）、ならびに累算ベクトル出力和１１２［０］（１）および累算ベクトル出力桁上げ１１７［０］（１）と累算される。
【００９１】
[00104]上述したように、基数バタフライ回路１４６は、基数４のバタフライベクトル演算を行うようにもプログラムされ得る。この点において、ベクトルフォーマットでのＮ／４個の基数ポイントを含むベクトルデータ入力のサンプルセット６６［０］が、乗算ベクトル処理段階６０（１）において受け取られる。ベクトルデータ入力のサンプルセット６６［０］は、Ｘ（ｋ）のサンプルまたはポイントのＮ／４ポイントデータ列Ｆ2（ｋ）中で分割されたＤＦＴポイントからなる。「ｋ」は、列中の１つのＮ／４ポイントを表し、これは各周期について累算される。乗算器８４は通常、Ｆ2（ｋ）を「ｅ」成分で乗算するために、２つの乗算を実施し、ベクトル乗算出力のサンプルセット６８［０］（すなわち、ＷNkＦ2（ｋ））を与えるために、回転因子（すなわち、ＷNk）の累乗成分を判断する。ただし、基数の４バタフライ演算は、４つの可能回転因子１、−１、ｊ、−ｊを含むだけなので、回転因子の累乗成分の複素乗算は、回転因子−１による乗算用のＦ2（ｋ）の否定と、回転因子ｊによる乗算用のＦ2（ｋ）のスワッピングと、−ｊについての回転因子による乗算用のＦ2（ｋ）の否定およびスワッピングとを単に提供することによって回避され得る。Ｆ2（ｋ）の否定および／またはスワッピングは、レジスタ退避と電力消費とをさらに節約するために、第１の周期中にのみ回転因子の「ｅ」成分でのＦ2（ｋ）の乗算を実施するのに乗算器８４が代わりに使われ得る基数バタフライ回路１４６の位相ランプ演算中にプログラムされ得る。
【００９２】
[00105]この点において引き続き図１１を参照すると、累算器７２［１］（１）は常に、以下に再現する基数４の回転因子行列の行１に従って、１の回転因子を与える。ただし、累算器７２［１］（０）は、以下に再現する基数４の回転因子行列の行２に従って、基数４の回転因子についての回転因子のうちのいずれをも与えることが可能でなければならない。したがって、累算器７２［１］（０）は、否定回路１０６［１］（０）と、それぞれ、各Ｎ／４ポイント列の累算のために、基数４の回転因子の各々に従って＋Ｆ2（ｋ）、−ｊＦ2（ｋ）、−Ｆ2（ｋ）、および＋ｊＦ2（ｋ）を累算器ブロック７２［１］中の累算器７２［１］［１］、７２［１］［０］および累算器ブロック７２［０］中の累算器７２［０］（１）、７２［０］（０）に与えるように制御されるスワップ回路１０９［１］（０）とを含む。累算器７２［０］（１）は、以下に再現する基数４の回転因子行列の行３に従って、基数４の回転因子についての回転因子のうちのいずれをも与えることが可能でなければならない。したがって、累算器７２［０］（１）は、それぞれ、各Ｎ／４ポイント列の累算のために＋Ｆ2（ｋ）を累算器７２［１］（１）、７２［０］（１）に、および−Ｆ2（ｋ）を累算器７２［１］（０）、７２［０］（０）に与えるのに、否定回路１０６［０］（１）を必要とするだけである。累算器７２［０］（０）は、以下に再現する基数４の回転因子行列の行４に従って、基数４の回転因子についての回転因子のうちのいずれをも与えることが可能でなければならない。したがって、累算器７２［０］（０））は、否定回路１０６［０］（０）と、それぞれ、各Ｎ／４ポイント列の累算のために、基数４の回転因子の各々に従って＋Ｆ2（ｋ）、＋ｊＦ2（ｋ）、−Ｆ2（ｋ）、および−ｊＦ2（ｋ）を累算器ブロック７２［０］中の累算器７２［１］［１］、７２［１］［０］および累算器ブロック７２［０］中の累算器７２［０］（１）、７２［０］（０）に与えるように制御されるスワップ回路１０９［１］（０）とを含む。
【数１１】
2016514330.tif 000013
【００９３】
[00106]したがって要約すると、図１１の基数バタフライ回路１４６中の累算器７２［１］［１］、７２［１］［０］、７２［０］（１）、７２［０］（０）は、基数４のバタフライベクトル演算を実施するようにプログラムされ、以下の算出を、次のように４周期にわたって実施する。これらの算出は、４つのＮ／４累算ポイント列を与えるように累算され、これらの列は次いで、ＦＦＴを解決するために一緒に累算され得る。
【表１】
2016514330.tif 000014
【００９４】
[00107]ＶＰＥ２２は、基数１６のバタフライ演算（「ドラゴンフライ演算」としても知られる）能力を提供するために、図１１の基数バタフライ回路１４６のような最大４つの基数のバタフライ回路を実施するようにもプログラムされ得る。このシナリオにおいて、回転因子は、単に＋１、＝１、＋ｊ、−ｊよりも複雑になり、そうすることによって、各基数バタフライ回路１４６中の乗算器８４による複素乗算を求める。
【００９５】
[00108]図２および図３のＶＰＥ２２を含むが、それに限定されない、マルチモード基数２Xのバタフライベクトル処理演算を行うためのプログラマブルなデータパス構成を有するとともに、本明細書において論じた概念および実施形態によるＶＰＥは、どのプロセッサベースのデバイス中に設けられても、統合されてもよい。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末（ＰＤＡ）、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク（ＤＶＤ）プレーヤ、およびポータブルデジタルビデオプレーヤがある。
【００９６】
[00109]この点において、図１２は、プロセッサベースのシステム１５０の例を示す。この例では、プロセッサベースのシステム１５０は、各々が１つまたは複数のプロセッサまたはコア１５４を含む、１つまたは複数の処理装置（ＰＵ）１５２を含む。ＰＵ１５２は、非限定的例として、図２のベースバンドプロセッサ２０であってよい。プロセッサ１５４は、非限定的例として、図２に挙げたベースバンドプロセッサ２０のようなベクトルプロセッサであってよい。この点において、プロセッサ１５４は、図２のＶＰＥ２２を含むが、それに限定されないＶＰＥ１５６も含み得る。ＰＵ１５２は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ１５４に結合されたキャッシュメモリ１５８を有し得る。ＰＵ１５２は、システムバス１６０に結合され、プロセッサベースのシステム１５０に含まれるマスタデバイスとスレーブデバイスとを相互結合し得る。よく知られているように、ＰＵ１５２は、システムバス１６０を介してアドレス、制御、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、ＰＵ１５２は、スレーブデバイスの例として、メモリコントローラ１６２にバストランザクション要求を通信することができる。図１２には示されていないが、複数のシステムバス１６０が提供されてよく、ここにおいて、各システムバス１６０は異なる組織を構成する。
【００９７】
[00110]他のマスタおよびスレーブデバイスが、システムバス１６０に接続され得る。図１２に示すように、これらのデバイスは、例として、メモリシステム１６４と、１つまたは複数の入力デバイス１６６と、１つまたは複数の出力デバイス１６８と、１つまたは複数のネットワークインターフェースデバイス１７０と、１つまたは複数のディスプレイコントローラ１７２とを含み得る。メモリシステム１６４は、メモリコントローラ１６２によってアクセス可能なメモリ１６５を含み得る。入力デバイス１６６は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス１６８は、限定はしないが、オーディオ、ビデオ、他の視覚的インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス１７０は、ネットワーク１７４との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク１７４は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公共ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドローカルエリアネットワーク（ＷＬＡＮ）、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス１７０は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【００９８】
[00111]ＰＵ１５２は、１つまたは複数のディスプレイ１７８に送られる情報を制御するため、システムバス１６０を介してディスプレイコントローラ１７２にアクセスするようにも構成され得る。ディスプレイコントローラ１７２は、１つまたは複数のビデオプロセッサ１８０を介して表示されるべき情報をディスプレイ１７８に送り、１つまたは複数のビデオプロセッサ１７０は、表示されるべき情報をディスプレイ１７８に好適なフォーマットに処理する。ディスプレイ１７８は、限定はしないが、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００９９】
[00112]本明細書で開示する二重電圧ドメインメモリバッファの実施形態とともに説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶されプロセッサもしくは他の処理デバイスにより実行される命令として、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに理解されよう。本明細書に記載されるアービタ、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路（ＩＣ）、またはＩＣチップに採用され得る。本明細書で開示するメモリは、どのタイプおよびサイズのメモリでもよく、所望されるどのタイプの情報も記憶するように構成され得る。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能性に関して記載された。そのような機能性がどのように実装されるかは、特定の用途、設計選択、および／または全体的なシステムに課された設計制約に依存する。当業者は、各特定の用途について様々な様式で記載された機能性を実装することができるが、そのような実装決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきでない。
【０１００】
[00113]本明細書に開示された実施形態に関連して記載された、様々な例示の論理ブロック、モジュール、および回路は、本明細書に記載の機能を実施するよう設計された、プロセッサ、ＤＳＰ、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡまたは他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、またはその任意の組合せを用いて実装または実施され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。
【０１０１】
[00114]本明細書で開示する実施形態は、ハードウェアにおいて、およびハードウェアに記憶された命令において実施されてよく、たとえば、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態のコンピュータ可読記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態において、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体はＡＳＩＣ内に存在し得る。ＡＳＩＣは遠隔局中に常駐し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素として遠隔局、基地局、またはサーバ中に存在してよい。
【０１０２】
[00115]また、本明細書の例示的な実施形態のいずれかにおいて記載された動作ステップは、例および説明を提供するために記載されたものであることにやはり留意されたい。説明された動作は、例示された順序以外の多くの異なる順序で実施されてもよい。さらに、単一の動作ステップで説明される動作は、実際には、多くの異なるステップで実施され得る。加えて、例示的な実施形態において議論された１つまたは複数の動作ステップは組み合わされ得る。フローチャート図に示した動作ステップは、当業者には容易に明らかになるように、多数の様々な修正を受け得ることを理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光子、またはそれらの任意の組合せによって表され得る。
【０１０３】
[00116]本開示の前の記載は、当業者が本開示を製造または使用することを可能にするように提供される。本開示に対する様々な変更形態が、当業者には容易に明らかとなり、本明細書に規定の一般的な原理が、本開示の精神または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書に記載される例および設計に限定することを意図しておらず、本明細書に開示される、原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【図１】
2016514330.tif 000015
【図２】
2016514330.tif 000016
【図３】
2016514330.tif 000017
【図４Ａ】
2016514330.tif 000018
【図４Ｂ】
2016514330.tif 000019
【図５】
2016514330.tif 000020
【図６】
2016514330.tif 000021
【図７】
2016514330.tif 000022
【図８】
2016514330.tif 000023
【図９Ａ】
2016514330.tif 000024
【図９Ｂ】
2016514330.tif 000025
【図９Ｃ】
2016514330.tif 000026
【図１０】
2016514330.tif 000027
【図１１】
2016514330.tif 000028
【図１２】
2016514330.tif 000029
【国際調査報告】
2016514330.tif 000030
2016514330.tif 000031
2016514330.tif 000032