(57)【要約】  本明細書で開示する実施形態は、マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン（ＶＰＥ）を含む。関連ベクトルプロセッサ、システム、および方法についても開示する。ＶＰＥは、ベクトル処理段階において実行されるベクトル命令に従ってベクトルデータを処理するように構成されたベクトル処理段階を含む。各ベクトル処理段階は、実行されるベクトル命令に基づいてベクトルデータを処理するように各々が構成されたベクトル処理ブロックを含む。ベクトル処理ブロックは、データ経路構成に基づいて、異なるタイプのベクトル命令のために異なるベクトル演算を行うことが可能である。ベクトル処理ブロックのデータ経路は、実行される特定のベクトル命令に従って異なるやり方でベクトルデータを処理するように再プログラム可能であるようにプログラム可能である。このようにして、ＶＰＥには、実行されるベクトル命令に従って、データ経路構成に基づいて異なるタイプの関数を実行するようにプログラム可能な、そのデータ経路構成が与えられ得る。
2016517570.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルデータのマルチモードベクトル処理を行うように構成されたベクトル処理エンジン（ＶＰＥ）であって、
複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えるように構成された入力読取り段階と、
複数のベクトル処理ブロックを備える少なくとも１つのベクトル処理段階と、前記複数のベクトル処理ブロックの中の各ベクトル処理ブロックは、
前記複数の入力データ経路の中の少なくとも１つの入力データ経路から、前記複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信し、
前記少なくとも１つのベクトル処理段階によって実行されるベクトル命令に従って、前記ベクトル処理ブロック用のプログラム可能データ経路構成に基づいて少なくとも１つのベクトル結果出力サンプルセットを与えるように、前記少なくとも１つのベクトルデータ入力サンプルセットを処理し、
複数の出力データ経路の中の少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを与えるように構成される、
前記複数のベクトル処理ブロックの各々から前記少なくとも１つのベクトル結果出力サンプルセットを受信するように構成された出力処理段階と、を備えるＶＰＥ。
【請求項２】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に基づいて再構成されるように構成される、請求項１に記載のＶＰＥ。
【請求項３】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、前記少なくとも１つのベクトル処理段階によって実行される各ベクトル命令用に再構成されるように構成される、請求項２に記載のＶＰＥ。
【請求項４】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令の各クロック周期において再構成されるように構成される、請求項２に記載のＶＰＥ。
【請求項５】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、プログラム可能入力データ経路構成からなり、
前記複数のベクトル処理ブロックの各々は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能入力データ経路構成に基づいて前記複数の入力データ経路の中の前記少なくとも１つの入力データ経路から前記少なくとも１つのベクトルデータ入力サンプルセットを受信するように構成される、請求項１に記載のＶＰＥ。
【請求項６】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、さらに、前記少なくとも１つのベクトル処理ブロック用のプログラム可能出力データ経路構成からなり、
前記複数のベクトル処理ブロックの各々は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能出力データ経路構成に基づいて前記複数の出力データ経路の中の前記少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを与えるように構成される、請求項５に記載のＶＰＥ。
【請求項７】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、さらに、前記少なくとも１つのベクトル処理ブロック用のプログラム可能ベクトル処理ブロックデータ経路構成からなり、
前記複数のベクトル処理ブロックの各々は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能ベクトル処理ブロックデータ経路構成に基づいて前記少なくとも１つのベクトル結果出力サンプルセットを与えるために、前記少なくとも１つのベクトルデータ入力サンプルセットを処理するように構成される、請求項６に記載のＶＰＥ。
【請求項８】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、前記少なくとも１つのベクトル処理ブロック用のプログラム可能出力データ経路構成からなり、
前記複数のベクトル処理ブロックの各々は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能出力データ経路構成に基づいて前記複数の出力データ経路の中の前記少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを与えるように構成される、請求項１に記載のＶＰＥ。
【請求項９】
前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成は、前記少なくとも１つのベクトル処理ブロック用のプログラム可能ベクトル処理ブロックデータ経路構成からなり、
前記複数のベクトル処理ブロックの各々は、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能ベクトル処理ブロックデータ経路構成に基づいて前記少なくとも１つのベクトル結果出力サンプルセットを与えるために、前記少なくとも１つのベクトルデータ入力サンプルセットを処理するように構成される、請求項１に記載のＶＰＥ。
【請求項１０】
前記少なくとも１つのベクトル処理ブロックは、少なくとも１つの乗算器ブロックおよび少なくとも１つの累算器ブロックのうちの少なくとも１つからなる、請求項１に記載のＶＰＥ。
【請求項１１】
前記少なくとも１つのベクトル処理段階は複数のベクトル処理段階からなる、請求項１に記載のＶＰＥ。
【請求項１２】
前記少なくとも１つのベクトル処理段階は、複数の乗算器ブロックからなる少なくとも１つの乗算ベクトル処理段階および複数の累算器ブロックからなる少なくとも１つの累算ベクトル処理段階からなり、
前記複数の乗算器ブロックの中の各乗算器ブロックは、
前記複数のベクトルデータ入力サンプルセットからの第１のベクトルデータ入力サンプルセットと第２のベクトルデータ入力サンプルセットとを、前記複数の入力データ経路の中の第１の入力データ経路および第２の入力データ経路から受信し、
前記少なくとも１つの第１のベクトル処理段階によって実行されるベクトル命令に従って、前記乗算器ブロック用のプログラム可能乗算データ経路構成に基づいて複数の乗算出力データ経路の中のある乗算出力データ経路中でベクトル乗算出力サンプルセットを与えるために、前記第１のベクトルデータ入力サンプルセットを前記第２のベクトルデータ入力サンプルセットに乗算するように構成され、
前記複数の累算器ブロックの中の各累算器ブロックは、
複数の乗算出力データ経路の中の第１の乗算出力データ経路および第２の乗算出力データ経路から、それぞれ、第１の乗算出力サンプルセットと第２の乗算出力サンプルセットとを受信し、
前記少なくとも１つの第２のベクトル処理段階によって実行されるベクトル命令に従って、前記累算器ブロック用のプログラム可能データ経路構成に基づいてベクトル累算結果サンプルセットを与えるために、前記第１の乗算出力サンプルセットを前記第２の乗算出力サンプルセットと累算し、
前記複数の複数の出力データ経路の中の前記出力データ経路中で前記ベクトル累算結果サンプルセットを与えるように構成される、請求項１に記載のＶＰＥ。
【請求項１３】
前記少なくとも１つのベクトル処理ブロックは、最小の１つのベクトル結果出力サンプルセットをベクトルレジスタに記憶するように構成されない、請求項１に記載のＶＰＥ。
【請求項１４】
各ベクトル処理ブロックは、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用の前記プログラム可能データ経路構成に基づいて異なるビット幅の前記複数のベクトルデータ入力サンプルセットを処理するようにさらに構成される、請求項１に記載のＶＰＥ。
【請求項１５】
各ベクトル処理ブロックは、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用の前記プログラム可能データ経路構成に基づいて符号付きの少なくとも１つのベクトルデータ入力サンプルセットまたは符号なしの少なくとも１つのベクトルデータ入力サンプルセットを処理するようにさらに構成される、請求項１に記載のＶＰＥ。
【請求項１６】
前記少なくとも１つのベクトル処理段階は、符号付きの演算命令からなる前記ベクトル命令を実行するように構成される、請求項１に記載のＶＰＥ。
【請求項１７】
前記少なくとも１つのベクトル処理段階は、符号なし演算命令からなる前記ベクトル命令を実行するように構成される、請求項１に記載のＶＰＥ。
【請求項１８】
ベクトルデータのマルチモードベクトル処理を行うように構成されたベクトル処理エンジン（ＶＰＥ）であって、
複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えるように構成された入力読取り段階手段と、
複数のベクトル処理手段を備える少なくとも１つのベクトル処理段階手段と、前記複数のベクトル処理手段の中の各ベクトル処理手段は、
前記複数の入力データ経路の中の少なくとも１つの入力データ経路から、前記複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信し、
前記少なくとも１つのベクトル処理段階手段によって実行されるベクトル命令に従って、前記ベクトル処理手段用のプログラム可能データ経路構成に基づいて少なくとも１つのベクトル結果出力サンプルセットを与えるように、前記少なくとも１つのベクトルデータ入力サンプルセットを処理し、
複数の出力データ経路の中の少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを与えるように構成される、
前記複数のベクトル処理手段の各々から前記少なくとも１つのベクトル結果出力サンプルセットを受信するように構成された出力処理段階手段と、を備えるＶＰＥ。
【請求項１９】
ベクトル処理エンジン（ＶＰＥ）中でベクトルデータを処理する方法であって、
入力処理段階中の複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えることと、
少なくとも１つのベクトル処理段階中の複数のベクトル処理ブロックにおいて、前記複数のベクトルデータ入力サンプルセットを処理することと、前記複数のベクトル処理ブロックの各々において、
前記複数の入力データ経路の中の少なくとも１つの入力データ経路から、前記複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信することと、
前記少なくとも１つのベクトル処理段階によって実行されるベクトル命令に従って、前記ベクトル処理ブロック用のプログラム可能データ経路構成に基づいて少なくとも１つのベクトル結果出力サンプルセットを与えるように、前記少なくとも１つのベクトルデータ入力サンプルセットを処理することと、
複数の出力データ経路の中の少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを与えることと、を備える、
出力処理段階中の前記複数のベクトル処理ブロックの各々から前記少なくとも１つのベクトル結果出力サンプルセットを受信することと、を備える方法。
【請求項２０】
前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に基づいて、前記複数のベクトル処理ブロックの各々用の前記プログラム可能データ経路構成を再構成することをさらに備える、請求項１９に記載の方法。
【請求項２１】
前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記プログラム可能入力データ経路構成に基づいて前記複数の入力データ経路の中の前記少なくとも１つの入力データ経路から前記複数のベクトルデータ入力サンプルセットからの前記少なくとも１つのベクトルデータ入力サンプルセットを受信することと、
前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用の前記プログラム可能入力データ経路構成に基づいて前記少なくとも１つのベクトル結果出力サンプルセットを与えるように前記少なくとも１つのベクトルデータ入力サンプルセットを処理することと、を備える、請求項１９に記載の方法。
【請求項２２】
前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、プログラム可能出力データ経路構成に基づいて前記複数の出力データ経路の中の前記少なくとも１つの出力データ経路中で前記少なくとも１つのベクトル結果出力サンプルセットを受信することを備える、請求項１９に記載の方法。
【請求項２３】
前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用のプログラム可能ベクトル処理ブロックデータ経路構成に基づいて前記少なくとも１つのベクトル結果出力サンプルセットを与えるように前記少なくとも１つのベクトルデータ入力サンプルセットを処理することを備える、請求項１９に記載の方法。
【請求項２４】
最小の１つのベクトル結果出力サンプルセットをベクトルレジスタに記憶しないことをさらに備える、請求項１９に記載の方法。
【請求項２５】
前記少なくとも１つのベクトルデータ入力サンプルセットを処理することは、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用の前記プログラム可能データ経路構成に基づいて異なるビット幅の前記複数のベクトルデータ入力サンプルセットを処理することを備える、方法請求項１９。
【請求項２６】
前記少なくとも１つのベクトルデータ入力サンプルセットを処理することは、前記少なくとも１つのベクトル処理段階によって実行される前記ベクトル命令に従って、前記ベクトル処理ブロック用の前記プログラム可能データ経路構成に基づいて符号付きの少なくとも１つのベクトルデータ入力サンプルセットまたは符号なしの少なくとも１つのベクトルデータ入力サンプルセットを処理することを備える、請求項１９に記載の方法。
【請求項２７】
前記入力処理段階における前記複数の入力データ経路の中の前記入力データ経路中で、第２の幅の前記ベクトルアレイの第２の複数のベクトルデータ入力サンプルセットを与えることと、
前記少なくとも１つのベクトル処理段階中の前記複数のベクトル処理ブロックにおいて前記第２の複数のベクトルデータ入力サンプルセットを処理することと、前記複数のベクトル処理ブロックの各々において、
前記複数の入力データ経路の中の前記第２の少なくとも１つの入力データ経路から、前記第２の複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信することと、
前記少なくとも１つのベクトル処理段階によって実行される第２のベクトル命令に従って、前記ベクトル処理ブロック用の第２のプログラム可能データ経路構成に基づいて第２の少なくとも１つのベクトル結果出力サンプルセットを与えるように、前記第２の少なくとも１つのベクトルデータ入力サンプルセットを処理することと、
前記複数の出力データ経路の中の前記少なくとも１つの出力データ経路中で前記第２の少なくとも１つのベクトル結果出力サンプルセットを与えることと、を備え、
前記出力処理段階中の前記複数のベクトル処理ブロックの各々から前記第２の少なくとも１つのベクトル結果出力サンプルセットを受信することと、をさらに備える、請求項１９に記載の方法。
【請求項２８】
前記第１の幅とは異なる前記第２の幅の前記ベクトルアレイの前記第２の複数のベクトルデータ入力サンプルセットを、前記入力処理段階における前記複数の入力データ経路の中の前記入力データ経路中で与えることを備える、請求項２７に記載の方法。
【請求項２９】
前記複数のベクトル処理ブロック中で前記複数のベクトルデータ入力サンプルセットを処理することは、前記複数の乗算器ブロック中で前記複数のベクトルデータ入力サンプルセットを処理することを備え、
前記複数のベクトル処理ブロック中で前記第２の複数のベクトルデータ入力サンプルセットを処理することは、前記複数の累算器ブロック中で前記第２の複数のベクトルデータ入力サンプルセットを処理することを備える、請求項２７に記載の方法。
【請求項３０】
前記複数の乗算器ブロックでの前記複数のベクトルデータ入力サンプルセットの処理は、前記複数の累算器ブロック中で前記第２の複数のベクトルデータ入力サンプルセットを処理することを備える、前記複数のベクトル処理ブロックでの前記第２の複数のベクトルデータ入力サンプルセットの前記処理と同時に起こる、請求項２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]本出願は、２０１３年３月１３日に出願し、参照によってその全体が本明細書に組み込まれている、「Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅｓ  Ｈａｖｉｎｇ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｄａｔａ  Ｐａｔｈ  Ｃｏｎｆｉｇｕｒａｔｉｏｎｓ  Ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｍｕｌｔｉ−Ｍｏｄｅ  Ｒａｄｉｘ−２X  Ｂｕｔｔｅｒｆｌｙ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｃｉｒｃｕｉｔｓ，Ａｎｄ  Ｒｅｌａｔｅｄ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｏｒｓ，Ｓｙｓｔｅｍｓ，Ａｎｄ  Ｍｅｔｈｏｄｓ」と題する米国特許出願第１３／７９８，５９９号（Ｑｕａｌｃｏｍｍ整理番号１２３２４７）に関連する。
【０００２】
[0002]本出願は、２０１３年３月１３日に出願し、参照によってその全体が本明細書に組み込まれている、「Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｃａｒｒｙ−Ｓａｖｅ  Ａｃｃｕｍｕｌａｔｏｒｓ  Ｅｍｐｌｏｙｉｎｇ  Ｒｅｄｕｎｄａｎｔ  Ｃａｒｒｙ−Ｓａｖｅ  Ｆｏｒｍａｔ  Ｔｏ  Ｒｅｄｕｃｅ  Ｃａｒｒｙ  Ｐｒｏｐａｇａｔｉｏｎ，Ａｎｄ  Ｒｅｌａｔｅｄ  Ｖｅｃｔｏｒ  Ｐｒｏｃｅｓｓｏｒｓ，Ｓｙｓｔｅｍｓ，Ａｎｄ  Ｍｅｔｈｏｄｓ」と題する米国特許出願第１３／７９８，６１８号（Ｑｕａｌｃｏｍｍ整理番号１２３２４８）にも関連する。
【０００３】
[0003]本開示の分野は、単一命令多重データ（ＳＩＭＤ）プロセッサと多重命令多重データ（ＭＩＭＤ）プロセッサを含む、ベクトルおよびスカラー演算を処理するためのベクトルプロセッサおよび関連システムに関する。
【背景技術】
【０００４】
[0004]ワイヤレスコンピューティングシステムは、デジタル情報領域において最も普及した技術の１つに急速になりつつある。技術の進歩により、ワイヤレス通信デバイスは、より小型でより強力になった。たとえば、ワイヤレスコンピューティングデバイスは一般に、小型で軽量な、ユーザが容易に持ち運べるポータブルワイヤレス電話、携帯情報端末（ＰＤＡ）、およびページングデバイスを含む。より具体的には、セルラー電話およびインターネットプロトコル（ＩＰ）電話などのポータブルワイヤレス電話は、ワイヤレスネットワークを介して音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス通信デバイスが、他のタイプのデバイスを含む。たとえば、ワイヤレス電話機は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、および／またはオーディオファイルプレーヤを含み得る。また、ワイヤレス電話は、インターネットにアクセスするために使用できるウェブインターフェースを含むことができる。さらに、ワイヤレス通信デバイスは、設計されたワイヤレス通信技術規格（たとえば、符号分割多元接続（ＣＤＭＡ）、広帯域ＣＤＭＡ（ＷＣＤＭＡ（登録商標））、およびロングタームエボリューション（ＬＴＥ））に従って高速ワイヤレス通信データを処理するための複合処理リソースを含み得る。したがって、これらのワイヤレス通信デバイスはかなりのコンピューティング能力を含む。
【０００５】
[0005]ワイヤレスコンピューティングデバイスは、より小型でより強力になるにつれて、ますますリソースの制約を受けるようになる。たとえば、画面サイズ、利用可能なメモリおよびファイルシステム空間の量、ならびに入出力能力の量は、小さいデバイスのサイズによって制限されることがある。さらに、電池サイズ、電池によって供給される電力の量、および電池の寿命も制限される。デバイスのバッテリ寿命を増すための１つのやり方は、より少ない電力を消費するプロセッサを設計することである。
【０００６】
[0006]この点において、ベクトルプロセッサを含むベースバンドプロセッサが、ワイヤレス通信デバイス用に利用され得る。ベクトルプロセッサは、ベクトル、すなわちデータアレイに働きかけるハイレベル演算を提供するベクトルアーキテクチャを有する。ベクトル処理は、ベクトル命令を一度フェッチすることと、次いで、１つのデータセットに対してベクトル命令を実行し、次いで、ベクトル内の後続要素のためにベクトル命令をフェッチし直し、復号するのとは反対に、データ要素アレイ全体にわたってベクトル命令を複数回実行することとを伴う。このプロセスにより、他の要因の中でも、各ベクトル命令は、より少ない回数しかフェッチされる必要がないので、プログラムを実行するのに必要とされるエネルギーが低減される。ベクトル命令は、同時に複数のクロック周期にわたって長いベクトルに対して動作するので、簡易な順序ベクトル命令ディスパッチを用いて、高度の並列性が達成可能である。
【０００７】
[0007]図１は、ワイヤレスコンピュータデバイスなどのコンピューティングデバイス中で利用され得る例示的なベースバンドプロセッサ１０を示す。ベースバンドプロセッサ１０は、特定のアプリケーション用の関数固有ベクトル処理を提供するのに各々が専用である複数の処理エンジン（ＰＥ）１２を含む。この例では、６つの別個のＰＥ１２（０）〜１２（５）がベースバンドプロセッサ１０中に設けられる。ＰＥ１２（０）〜１２（５）は各々、共有メモリ１６からＰＥ１２（０）〜１２（５）に与えられる固定Ｘビット幅のベクトルデータ１４用のベクトル処理を提供するように構成される。たとえば、ベクトルデータ１４は５１２ビット幅であり得る。ベクトルデータ１４は、Ｘのより小さい倍数のビット幅のベクトルデータサンプルセット１８（０）〜１８（Ｙ）（たとえば、１６ビットおよび３２ビットサンプルセット）中で定義されてもよい。このようにして、ＰＥ１２（０）〜１２（５）は、高度の並列性を達成するように、ＰＥ１２（０）〜１２（５）に並列に与えられる複数のベクトルデータサンプルセットに対するベクトル処理を提供することが可能である。各ＰＥ１２（０）〜１２（５）は、ベクトルデータ１４上で処理されるベクトル命令の結果を記憶するためのベクトルレジスタファイル（ＶＲ）を含み得る。
【０００８】
[0008]図１のベースバンドプロセッサ１０中の各ＰＥ１２（０）〜１２（５）は、特定のタイプの固定演算を効率的に実施するように特に設計された、特定の専用回路要素とハードウェアとを含む。たとえば、図１のベースバンドプロセッサ１０は、別個の広帯域符号分割多元接続（ＷＣＤＭＡ）ＰＥ１２（０）、１２（１）とロングタームエボリューション（ＬＴＥ）ＰＥ１２（４）、１２（５）とを含むが、これは、ＷＣＤＭＡおよびＬＴＥは異なるタイプの特殊な演算を伴うからである。したがって、別個のＷＣＤＭＡ固有ＰＥ１２（０）、１２（１）とＬＴＥ固有ＰＥ１２（４）、１２（５）とを設けることによって、ＰＥ１２（０）、１２（１）、１２（４）、１２（５）の各々は、高効率な演算のための、ＷＣＤＭＡおよびＬＴＥ用の頻繁に実施される関数に固有である、特殊な専用回路要素を含むように設計され得る。この設計は、より多数の無関係な演算を、比較的非効率的にではあるがサポートするために柔軟であるように設計された、より一般的な回路要素とハードウェアとを含むスカラー処理エンジンとは対照的である。
【０００９】
[0009]ベースバンドプロセッサ中に関数固有ＰＥを設けることは、頻繁に実行される特殊な演算には有利である。ただし、関数固有ＰＥを設けると、別個の関数固有ＰＥが各々、特殊な回路要素とメモリとを含むので、ベースバンドプロセッサ用に必要とされる面積および電力が増大する場合がある。
【発明の概要】
【００１０】
[0010]本明細書で開示する実施形態は、マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン（ＶＰＥ）を含む。関連ベクトルプロセッサ、システム、および方法についても開示する。本明細書で開示するＶＰＥは、ベクトル処理段階によって実行されるベクトル命令に従ってベクトルデータを処理するように構成された少なくとも１つのベクトル処理段階を含む。各ベクトル処理段階は、実行されるベクトル命令に基づいてベクトルデータを処理するように構成された１つまたは複数のベクトル処理ブロックを含む。ベクトル処理ブロックの非限定的例は、乗算器および累算器である。ベクトル処理ブロックは、ベクトル処理ブロックのプログラム可能データ経路構成に基づいて、異なるタイプの命令向けの異なる関数を異なるモードで行うことが可能である。このようにして、ＶＰＥには、実行されるベクトル命令に従って、異なるタイプの関数を実行するように再プログラム可能なデータ経路構成が与えられ得る。
【００１１】
[0011]その結果、より少ないＶＰＥが、所望の技術特質を提供することができ、したがって、ベースバンドプロセッサ中の面積を節約するとともに、スカラー処理エンジンと比較して、より少ないレジスタ書込みおよびより速い命令実行というベクトル処理利点を依然として保有する。ベクトル処理ブロック用のデータ経路構成はまた、ＶＰＥ中で、異なる特殊なベクトル演算の実行を異なるモードでサポートするように、ＶＰＥにおけるベクトル命令実行中にプログラムされ、再プログラムされ得る。
【００１２】
[0012]本明細書で開示するマルチモードベクトル処理のためのプログラム可能データ経路構成を有するＶＰＥは、固定関数を提供するための固定データ経路構成を含むだけであるＶＰＥとは区別可能である。本明細書で開示するベクトル処理のためのプログラム可能データ経路構成を有するＶＰＥは、たとえばデジタル信号プロセッサ（ＤＳＰ）中に設けられるようなスカラー処理エンジンとも区別可能である。スカラー処理エンジンは、異なるタイプの非固定関数を実施するが、ベクトル命令実行中の中間結果もレジスタファイルに書き込むための柔軟な共通回路要素と論理とを利用し、そうすることによって、追加電力を消費し、ベクトル命令実行回数を増大させる。
【００１３】
[0013]この点について、一実施形態では、ＶＰＥが提供される。ＶＰＥは、ベクトルデータのマルチモードベクトル処理を行うように構成される。ＶＰＥは、複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えるように構成された入力読取り段階を備える。ＶＰＥは、複数のベクトル処理ブロックを備える少なくとも１つのベクトル処理段階も備える。複数のベクトル処理ブロックの中の各ベクトル処理ブロックは、複数の入力データ経路の中の少なくとも１つの入力データ経路から、複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信するように構成される。複数のベクトル処理ブロックの中の各ベクトル処理ブロックは、少なくとも１つのベクトル処理段階によって実行されるベクトル命令に従って、各ベクトル処理ブロック用のプログラム可能データ経路構成に基づいて、少なくとも１つのベクトル結果出力サンプルセットを与えるように、少なくとも１つのベクトルデータ入力サンプルセットを処理するようにさらに構成される。複数のベクトル処理ブロックの中の各ベクトル処理ブロックは、複数の出力データ経路の中の少なくとも１つの出力データ経路中で少なくとも１つのベクトル結果出力サンプルセットを与えるようにさらに構成される。ＶＰＥは、複数のベクトル処理ブロックの各々から少なくとも１つのベクトル結果出力サンプルセットを受信するように構成された出力処理段階も備える。
【００１４】
[0014]別の実施形態では、ベクトルデータのマルチモードベクトル処理を行うように構成されたＶＰＥが提供される。ＶＰＥは、複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えるように構成された入力読取り段階手段を備える。ＶＰＥは、少なくとも１つのベクトル処理段階手段も備える。少なくとも１つのベクトル処理段階手段は、複数のベクトル処理手段を備える。複数のベクトル処理手段の中の各ベクトル処理手段は、複数の入力データ経路の中の少なくとも１つの入力データ経路から、複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信するように構成される。複数のベクトル処理手段の中の各ベクトル処理手段は、少なくとも１つのベクトル処理段階によって実行されるベクトル命令に従って、各ベクトル処理ブロック用のプログラム可能データ経路構成に基づいて、少なくとも１つのベクトル結果出力サンプルセットを与えるように、少なくとも１つのベクトルデータ入力サンプルセットを処理するようにさらに構成される。複数のベクトル処理手段の中の各ベクトル処理手段は、複数の出力データ経路の中の少なくとも１つの出力データ経路中で少なくとも１つのベクトル結果出力サンプルセットを与えるようにさらに構成される。ＶＰＥは、複数のベクトル処理手段の各々から少なくとも１つのベクトル結果出力サンプルセットを受信するように構成された出力処理手段も備える。
【００１５】
[0015]別の実施形態では、ベクトル処理エンジン（ＶＰＥ）中でベクトルデータを処理する方法が提供される。この方法は、入力処理段階中の複数の入力データ経路の中のある入力データ経路中で、ベクトルアレイの幅の複数のベクトルデータ入力サンプルセットを与えることを備える。方法は、少なくとも１つのベクトル処理段階中の複数のベクトル処理ブロックにおいて、複数のベクトルデータ入力サンプルセットを処理することも備える。方法は、複数のベクトル処理ブロックの各々において、複数の入力データ経路の中の少なくとも１つの入力データ経路から、複数のベクトルデータ入力サンプルセットからの少なくとも１つのベクトルデータ入力サンプルセットを受信すること、少なくとも１つのベクトル処理段階によって実行されるベクトル命令に従って、各ベクトル処理ブロック用のプログラム可能データ経路構成に基づいて、少なくとも１つのベクトル結果出力サンプルセットを与えるように、少なくとも１つのベクトルデータ入力サンプルセットを処理することも備える。方法は、複数の出力データ経路の中の少なくとも１つの出力データ経路中で少なくとも１つのベクトル結果出力サンプルセットを与えることをさらに備える。方法は、出力処理段階中の複数のベクトル処理ブロックの各々から少なくとも１つのベクトル結果出力サンプルセットを受信することも備える。
【００１６】
[0016]別の実施形態では、ベクトルプロセッサが提供される。ベクトルプロセッサは、ベクトルデータメモリからベクトルデータ入力サンプルセットを受信するように構成された少なくとも１つのベクトルレジスタを備える。ベクトルプロセッサは、ベクトル結果出力サンプルセットを記憶するように構成された少なくとも１つのベクトル結果レジスタも備える。ベクトルプロセッサは、複数のベクトル処理段階を備える少なくとも１つのＶＰＥも備える。複数のベクトル処理段階は各々、少なくとも１つのベクトルレジスタから少なくとも１つのベクトルデータ入力サンプルセットを受信し、少なくとも１つのベクトルレジスタからの少なくとも１つのベクトルデータ入力サンプルセットを、各ベクトル処理段階によって実行されるベクトル命令に従って、ベクトル処理段階の各々のための少なくとも１つのデータ経路構成に基づいて、少なくとも１つのベクトル結果出力サンプルセットに処理し、少なくとも１つのベクトル結果出力サンプルセットを、少なくとも１つのベクトル結果レジスタに記憶されるように、少なくとも１つのベクトルレジスタに与えるように構成される。
【図面の簡単な説明】
【００１７】
【図１】[0017]固有アプリケーション向けの関数固有ベクトル処理を提供するのに各々が専用である、複数のベクトル処理エンジン（ＶＰＥ）を含む例示的なベクトルプロセッサの配線図。
【図２】[0018]ＶＰＥ中に設けられた共通回路要素およびハードウェアが、別個のＶＰＥを設ける必要なく、複数のアプリケーションまたは技術のために特定のタイプのベクトル演算を高効率的に実施するための複数のモードでプログラムされ得るように、プログラム可能データ経路構成を有する共通ＶＰＥを含む例示的なベクトルプロセッサの配線図。
【図３】[0019]図２のＶＰＥに設けられる例示的なベクトル処理段階の配線図であって、ベクトル処理段階のうちのいくつかは、プログラム可能データ経路構成を有する例示的なベクトル処理ブロックを含む。
【図４Ａ】[0020]図２および図３の例示的なベクトルプロセッサ中に含まれるプログラム可能データ経路構成を有する少なくとも１つのベクトル処理ブロックの例示的なベクトル処理を示すフローチャート。
【図４Ｂ】[0021]プログラム可能データ経路構成を各々が有するとともに、図２および図３の例示的なベクトルプロセッサにおける異なるベクトル処理段階において提供される乗算器ブロックおよび累算器ブロックの例示的なベクトル処理を示すフローチャート。
【図５】[0022]図２および図３のＶＰＥのベクトル処理段階に設けられる複数の乗算器ブロックのより詳細な配線図であって、複数の乗算器ブロックは各々、複数の乗算器ブロックが、特定の異なるタイプのベクトル乗算演算を実施するための複数のモードでプログラムされ得るように、プログラム可能データ経路構成を有する。
【図６】[0023]８ビット×８ビットベクトルデータ入力サンプルセットおよび１６ビット×１６ビットベクトルデータ入力サンプルセットについての乗算演算を行うようにプログラムされることが可能なプログラム可能データ経路構成を有する、図５の複数の乗算器ブロックの中のある乗算器ブロックの内部構成要素の配線図。
【図７】[0024]図２および図３のＶＰＥ中の乗算器ブロックおよび累算器ブロックの一般化配線図であって、累算器ブロックは、桁上げ伝搬を低減するのに冗長桁上げ保存フォーマットを利用する桁上げ保存累算器構造を利用する。
【図８】[0025]図２および図３のＶＰＥ中に設けられる、図７の累算器ブロックの例示的な内部構成要素の詳細な配線図であって、累算器ブロックが、冗長桁上げ保存フォーマットで、特定の異なるタイプのベクトル累算演算を実施するための複数のモードでプログラムされ得るように、累算器ブロックはプログラム可能データ経路構成を有する。
【図９Ａ】[0026]二重２４ビット累算器モードを提供するためにプログラムされたデータ経路構成を有する図８の累算器ブロックの配線図。
【図９Ｂ】[0027]単一４０ビット累算器モードを提供するためにプログラムされたデータ経路構成を有する図８の累算器ブロックの配線図。
【図９Ｃ】[0028]１６ビット桁上げ保存加算器と、それに続く単一２４ビット累算器モードを提供するためにプログラムされたデータ経路構成を有する図８の累算器ブロックの配線図。
【図１０】[0029]本明細書で開示する実施形態による、プログラム可能データ経路構成を有するＶＰＥを含むベクトルプロセッサを含むことができ、したがってＶＰＥ中の共通回路要素およびハードウェアが、別個のＶＰＥを提供する必要なく、複数のアプリケーションまたは技術のために特定のタイプのベクトル演算を高効率的に実施するように設計された専用回路要素として作用するようにプログラムされ得る、例示的なプロセッサベースのシステムのブロック図。
【発明を実施するための形態】
【００１８】
[0030]ここで図面を参照すると、本開示のいくつかの例示的な実施形態が記載される。「例示的な」という言葉は、本明細書中で、「例、事例、または例示として働くこと」を意味するように使用される。本明細書で「例示的な」として記載される任意の実施形態は、必ずしも、他の実施形態よりも好ましいまたは有利であると解釈されるべきでない。
【００１９】
[0031]本明細書で開示する実施形態は、マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン（ＶＰＥ）を含む。関連ベクトルプロセッサ、システム、および方法についても開示する。本明細書で開示するＶＰＥは、ベクトル処理段階によって実行されるベクトル命令に従ってベクトルデータを処理するように構成された少なくとも１つのベクトル処理段階を含む。各ベクトル処理段階は、実行されるベクトル命令に基づいてベクトルデータを処理するように構成された１つまたは複数のベクトル処理ブロックを含む。ベクトル処理ブロックの非限定的例は、乗算器および累算器である。ベクトル処理ブロックは、ベクトル処理ブロックのデータ経路構成に基づいて、異なるタイプの命令向けの異なるベクトル演算を異なるモードで行うことが可能である。ベクトル処理ブロックのデータ経路構成は、実行される特定のベクトル命令に従って、異なるモードで特殊なベクトル処理演算を行うためにベクトルデータを異なるやり方で処理するようにプログラム可能であり、再プログラム可能であり（すなわち、再配線され）得る。
【００２０】
[0032]このようにして、ＶＰＥには、実行されるベクトル命令に従って異なるタイプのベクトル演算を実行するように再プログラム可能なデータ経路構成が与えられ得る。その結果、より少ないＶＰＥが、ベクトルプロセッサ中で所望のベクトル処理演算を行うことができ、したがって、ベクトルプロセッサにおける面積を節約するとともに、スカラー処理エンジンに勝る、より少ないレジスタ書込みおよびより速いベクトル命令実行回数というベクトル処理利点を依然として保有する。ベクトル処理ブロック用のデータ経路構成はまた、ＶＰＥ中で、異なる特殊なベクトル演算の実行を異なるモードでサポートするように、ＶＰＥにおけるベクトル命令実行中にプログラムされ、再プログラムされ得る。
【００２１】
[0033]本明細書で開示するマルチモードベクトル処理のためのプログラム可能データ経路構成を有するＶＰＥは、固定関数を提供するための固定データ経路構成を含むだけであるＶＰＥとは区別可能である。本明細書で開示するベクトル処理のためのプログラム可能データ経路構成を有するＶＰＥは、たとえばデジタル信号プロセッサ（ＤＳＰ）中に設けられるようなスカラー処理エンジンとも区別可能である。スカラー処理エンジンは、異なるタイプの非固定関数を実施するが、ベクトル命令実行中の中間結果もレジスタファイルに書き込むための柔軟な共通回路要素と論理とを利用し、そうすることによって、追加電力を消費し、ベクトル命令実行回数を増大させる。
【００２２】
[0034]この点において、図２は、ベクトル処理エンジン（ＶＰＥ）２２とも呼ばれる、例示的なベクトル処理ユニット２２を含むベースバンドプロセッサ２０の配線図である。ベースバンドプロセッサ２０およびそのＶＰＥ２２は、半導体ダイ２４中に設けられ得る。図３で始まる、後でより詳しく論じる本実施形態では、ベースバンドプロセッサ２０は、プログラム可能データ経路構成を有する共通ＶＰＥ２２を含む。このように、ＶＰＥ２２は、ベースバンドプロセッサ２０中に別個のＶＰＥを設ける必要なく、異なる演算モードで異なる特定のタイプのベクトル演算を行うようにプログラムされ、再プログラムされ得る共通回路要素とハードウェアとを含む。ＶＰＥ２２はまた、ベースバンドプロセッサ２０中に別個のＶＰＥを設ける必要なく、複数のアプリケーションまたは技術のために、一般的な算術演算を高効率的に実施するためのベクトル算術モードでプログラムされ得る。
【００２３】
[0035]図３で始まる、ベクトルマルチモード処理のためにＶＰＥ２２中に設けられるプログラム可能データ経路構成について論じる前に、図２のベースバンドプロセッサ２０の構成要素について、最初に記載する。この非限定的例におけるベースバンドプロセッサ２０は、５１２ビットベクトルプロセッサである。ベースバンドプロセッサ２０は、ＶＰＥ２２がベースバンドプロセッサ２０中でベクトル処理を行うのをサポートするための追加構成要素を、ＶＰＥ２２に加えて含む。ベースバンドプロセッサ２０は、ベクトルユニットデータメモリ（ＬＭＥＭ）３２からベクトルデータ３０を受信し、記憶するように構成されたベクトルレジスタ２８を含む。たとえば、ベクトルデータ３０はＸビット幅であり、「Ｘ」は、設計選択に従って定義される（たとえば、５１２ビット）。ベクトルデータ３０は、ベクトルデータサンプルセット３４に分割され得る。たとえば、ベクトルデータ３０は、２５６ビット幅であってよく、より小さいベクトルデータサンプルセット３４（Ｙ）〜３４（０）を備えることができ、ここでベクトルデータサンプルセット３４（Ｙ）〜３４（０）の一部は１６ビット幅であり、ベクトルデータサンプルセット３４（Ｙ）〜３４（０）のうちのそれ以外は３２ビット幅である。ＶＰＥ２２は、高度の並列性を達成するように、ＶＰＥ２２に並列に与えられるいくつかの選ばれた乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）に対して、ベクトル処理を行うことが可能である。ベクトルレジスタ２８は、ＶＰＥ２２がベクトルデータ３０を処理するときに生成される結果を記憶するようにも構成される。いくつかの実施形態では、ＶＰＥ２２は、より速いベクトル命令実行時間を可能にするようにレジスタ書込みを低減するために、中間ベクトル処理結果をベクトルレジスタ２８に記憶しないように構成される。この構成は、スカラー処理ＤＳＰなど、中間結果をレジスタに記憶するスカラー処理エンジンによって実行されるスカラー命令とは反対である。
【００２４】
[0036]図２のベースバンドプロセッサ２０は、ベクトル命令の条件付き実行において使用するために、条件をＶＰＥ２２に与えるように、およびアップデートされた条件をベクトル命令実行の結果として記憶するように構成された条件レジスタ３６も含む。ベースバンドプロセッサ２０はまた、累算レジスタ３８と、グローバルレジスタ４０と、アドレスレジスタ４２とを含む。累算レジスタ３８は、ＶＰＥ２２によって、累算された結果を、ベクトルデータ３０に対していくつかの特殊な演算を実行した結果として記憶するのに使われるように構成される。グローバルレジスタ４０は、ＶＰＥ２２によってサポートされるいくつかのベクトル命令用のスカラーオペランドを記憶するように構成される。アドレスレジスタ４２は、ベクトルユニットデータメモリ３２からベクトルデータ３０を取り出し、ベクトル処理結果をベクトルユニットデータメモリ３２に記憶するために、ベクトルロードによってアドレス指定可能なアドレスを記憶し、ＶＰＥ２２によってサポートされる命令を記憶するように構成される。
【００２５】
[0037]引き続き図２を参照すると、本実施形態におけるベースバンドプロセッサ２０は、ＶＰＥ２２によって行われるベクトル処理に加え、ベースバンドプロセッサ２０中でスカラー処理を行うためのスカラープロセッサ４４（「整数ユニット」とも呼ばれる）も含む。高効率な演算のために実行される命令のタイプに基づいて、ベクトル演算とスカラー命令演算の両方をサポートするように構成されたＣＰＵを設けることが所望され得る。本実施形態では、スカラープロセッサ４４は、非限定的例として、３２ビット縮小命令セットコンピューティング（ＲＩＳＣ）スカラープロセッサである。スカラープロセッサ４４は、この例では、スカラー命令処理をサポートするための論理演算ユニット（ＡＬＵ）４６を含む。ベースバンドプロセッサ２０は、プログラムメモリ５０から命令をフェッチし、フェッチした命令を復号し、フェッチした命令を、命令タイプに基づいて、スカラープロセッサ４４に、またはベクトルデータ経路４９を通してＶＰＥ２２に向けるように構成された命令ディスパッチ回路４８を含む。スカラープロセッサ４４は、スカラー命令を実行するときにスカラープロセッサ４４によって使用するための汎用レジスタ５２を含む。スカラー命令実行のためにスカラープロセッサ４４によってアクセスするために、メインメモリから汎用レジスタ５２にデータを与えるように、整数ユニットデータメモリ（ＤＭＥＭ）５４がベースバンドプロセッサ２０中に含まれる。ＤＭＥＭ５４は、非限定的例として、キャッシュメモリであり得る。ベースバンドプロセッサ２０は、メモリコントローラデータ経路５９を通る、メインメモリへのアクセスを求めるベクトル命令をスカラープロセッサ４４が実行しているとき、汎用レジスタ５２からメモリアドレスを受信するように構成されたメモリコントローラレジスタ５８を含むメモリコントローラ５６も含む。
【００２６】
[0038]図２のベースバンドプロセッサ２０の例示的な構成要素について記載してきたので、共通回路要素およびハードウェアをもつ、複数の動作モードを提供するＶＰＥ２２およびそのプログラム可能データ経路構成に関するさらなる詳細についてここで論じる。この点において、図３は、図２のＶＰＥ２２の例示的な配線図を示す。図３に示すように、および図４〜図８Ｃにおいて以下でより詳細に説明するように、ＶＰＥ２２は、プログラム可能データ経路構成で構成され得る例示的なベクトル処理ブロックを有する複数の例示的なベクトル処理段階６０を含む。後でより詳しく論じるように、ベクトル処理ブロック中に設けられたプログラム可能データ経路構成により、特定の回路およびハードウェアが、図２のベクトルユニットデータメモリ３２から受信されたベクトルデータ３０に対する異なる特定のベクトル処理演算の実施をサポートするようにプログラムされ、再プログラムされる。
【００２７】
[0039]たとえば、いくつかのベクトル処理演算は一般に、ベクトルデータ３０の乗算、続いて、乗算されたベクトルデータ結果の累算を必要とし得る。そのようなベクトル処理の非限定的例には、ワイヤレス通信アルゴリズムのための高速フーリエ変換（ＦＦＴ）演算を実施するために一般に使われる、フィルタリング演算、相関演算、ならびに基数２および基数４のバタフライ演算があり、ここで一連の並列乗算が、続いて乗算結果の一連の並列累算が行われる。やはり図７〜図９Ｃに関連して後でより詳しく論じるように、図２のＶＰＥ２２は、桁上げ保存累算器において冗長桁上げ保存フォーマットを提供するための桁上げ保存累算器をもつ融合乗算器というオプションも有する。桁上げ保存累算器中で冗長桁上げ保存フォーマットを提供することにより、桁上げ伝搬経路と、各累算ステップ中の桁上げ伝搬加算演算とを提供する必要をなくすことができる。
【００２８】
[0040]この点において、さらに図３を参照して、ＶＰＥ２２のＭ０乗算ベクトル処理段階６０（１）について最初に記載する。Ｍ０乗算ベクトル処理段階６０（１）は、プログラム可能データ経路構成を各々が有する、任意の所望の数の乗算器ブロック６２（Ａ）〜６２（０）の形の複数のベクトル処理ブロックを含む第２のベクトル処理段階である。乗算器ブロック６２（Ａ）〜６２（０）は、ＶＰＥ２２中でベクトル乗算演算を実施するように設けられる。複数の乗算器ブロック６２（Ａ）〜６２（０）は、最大１２個の乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）の乗算を行うために、Ｍ０乗算ベクトル処理段階６０（１）中に互いと並列に配置される。本実施形態では、「Ａ」は３に等しく、この例では、Ｍ０乗算ベクトル処理段階６０（１）に４つの乗算器ブロック６２（３）〜６２（０）が含まれることを意味する。乗算ベクトルデータサンプルセット３４（Ｙ）〜３４（０）は、ＶＰＥ２２中の第１のベクトル処理段階６０（０）である入力読取り（ＲＲ）ベクトル処理段階に設けられた複数のラッチ６４（Ｙ）〜６４（０）へのベクトル処理のためにＶＰＥ２２中にロードされる。本実施形態では、ＶＰＥ２２中に１２個のラッチ６４（１１）〜６４（０）があり、本実施形態では「Ｙ」が１１に等しいことを意味する。ラッチ６４（１１）〜６４（０）は、ベクトルレジスタ２８（図２参照）から取り出された乗算ベクトルデータサンプルセット３４（１１）〜３４（０）をベクトルデータ入力サンプルセット６６（１１）〜６６（０）としてラッチするように構成される。この例では、各ラッチ６４（１１）〜６４（０）は８ビット幅である。ラッチ６４（１１）〜６４（０）は各々、乗算ベクトルデータ入力サンプルセット６６（１１）〜６６（０）を、総計９６ビット幅のベクトルデータ３０（すなわち、各々、１２ラッチ×８ビット）を求めてラッチするようにそれぞれ構成される。
【００２９】
[0041]引き続き図３を参照すると、複数の乗算器ブロック６２（３）〜６２（０）は、ベクトル乗算演算を行うために、ベクトルデータ入力サンプルセット６６（１１）〜６６（０）のいくつかの組合せを受信することが可能なように構成され、ここにおいて「Ｙ」は、この例では１１に等しい。乗算ベクトルデータ入力サンプルセット６６（１１）〜６６（０）は、ＶＰＥ２２の設計に従って、複数の入力データ経路Ａ３〜Ａ０、Ｂ３〜Ｂ０、およびＣ３〜Ｃ０中で与えられる。ベクトルデータ入力サンプルセット６６（３）〜６６（０）は、図３に示すように入力データ経路Ｃ３〜Ｃ０に対応する。ベクトルデータ入力サンプルセット６６（７）〜６６（４）は、図３に示すように入力データ経路Ｂ３〜Ｂ０に対応する。ベクトルデータ入力サンプルセット６６（１１）〜６６（８）は、図３に示すように入力データ経路Ａ３〜Ａ０に対応する。複数の乗算器ブロック６２（３）〜６２（０）は、ベクトル乗算演算を行うために、それぞれ、受信ベクトルデータ入力サンプルセット６６（１１）〜６６（０）を、複数の乗算器ブロック６２（３）〜６２（０）へと設けられた入力データ経路Ａ３〜Ａ０、Ｂ３〜Ｂ０、Ｃ３〜Ｃ０に従って処理するように構成される。
【００３０】
[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]この点において、図１０は、プロセッサベースのシステム１５０の例を示す。この例では、プロセッサベースのシステム１５０は、各々が１つまたは複数のプロセッサまたはコア１５４を含む、１つまたは複数の処理装置（ＰＵ）１５２を含む。ＰＵ１５２は、非限定的例として、図２のベースバンドプロセッサ２０であってよい。プロセッサ１５４は、非限定的例として、図２に挙げたベースバンドプロセッサ２０のようなベクトルプロセッサであってよい。この点において、プロセッサ１５４は、図２のＶＰＥ２２を含むが、それに限定されないＶＰＥ１５６も含み得る。ＰＵ１５２は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ１５４に結合されたキャッシュメモリ１５８を有し得る。ＰＵ１５２は、システムバス１６０に結合され、プロセッサベースのシステム１５０に含まれるマスタデバイスとスレーブデバイスとを相互結合し得る。よく知られているように、ＰＵ１５２は、システムバス１６０を介してアドレス、制御、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、ＰＵ１５２は、スレーブデバイスの例として、メモリコントローラ１６２にバストランザクション要求を通信することができる。図１０には示されていないが、複数のシステムバス１６０が提供されてよく、ここにおいて、各システムバス１６０は異なる組織を構成する。
【００７６】
[0088]他のマスタおよびスレーブデバイスが、システムバス１６０に接続され得る。図１０に示すように、これらのデバイスは、例として、メモリシステム１６４と、１つまたは複数の入力デバイス１６６と、１つまたは複数の出力デバイス１６８と、１つまたは複数のネットワークインターフェースデバイス１７０と、１つまたは複数のディスプレイコントローラ１７２とを含み得る。メモリシステム１６４は、メモリコントローラ１６２によってアクセス可能なメモリ１６５を含み得る。入力デバイス１６６は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス１６８は、限定はしないが、オーディオ、ビデオ、他の視覚的インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス１７０は、ネットワーク１７４との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク１７４は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公共ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドローカルエリアネットワーク（ＷＬＡＮ）、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス１７０は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【００７７】
[0089]ＣＰＵ１５２は、１つまたは複数のディスプレイ１７８に送られる情報を制御するため、システムバス１６０を介してディスプレイコントローラ１７２にアクセスするようにも構成され得る。ディスプレイコントローラ１７２は、１つまたは複数のビデオプロセッサ１８０を介して表示されるべき情報をディスプレイ１７８に送り、１つまたは複数のビデオプロセッサ１８０は、表示されるべき情報をディスプレイ１７８に好適なフォーマットに処理する。ディスプレイ１７８は、限定はしないが、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００７８】
[0090]本明細書で開示する二重電圧ドメインメモリバッファの実施形態とともに説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶されプロセッサもしくは他の処理デバイスにより実行される命令として、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに理解されよう。本明細書に記載されるアービタ、マスタデバイス、およびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路（ＩＣ）、またはＩＣチップに採用され得る。本明細書で開示するメモリは、どのタイプおよびサイズのメモリでもよく、所望されるどのタイプの情報も記憶するように構成され得る。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能性に関して記載された。そのような機能性がどのように実装されるかは、特定の用途、設計選択、および／または全体的なシステムに課された設計制約に依存する。当業者は、各特定の用途について様々な様式で記載された機能性を実装することができるが、そのような実装決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきでない。
【００７９】
[0091]本明細書に開示された実施形態に関連して記載された、様々な例示の論理ブロック、モジュール、および回路は、本明細書に記載の機能を実施するよう設計された、プロセッサ、ＤＳＰ、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡまたは他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、またはその任意の組合せを用いて実装または実施され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装され得る。
【００８０】
[0092]本明細書で開示する実施形態は、ハードウェアにおいて、およびハードウェアに記憶された命令において実施されてよく、たとえば、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態のコンピュータ可読記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態において、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体はＡＳＩＣ内に存在し得る。ＡＳＩＣは遠隔局中に常駐し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素として遠隔局、基地局、またはサーバ中に存在してよい。
【００８１】
[0093]また、本明細書の例示的な実施形態のいずれかにおいて記載された動作ステップは、例および説明を提供するために記載されたものであることにやはり留意されたい。説明された動作は、例示された順序以外の多くの異なる順序で実施されてもよい。さらに、単一の動作ステップで説明される動作は、実際には、多くの異なるステップで実施され得る。加えて、例示的な実施形態において議論された１つまたは複数の動作ステップは組み合わされ得る。フローチャート図に示した動作ステップは、当業者には容易に明らかになるように、多数の様々な修正を受け得ることを理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光子、またはそれらの任意の組合せによって表され得る。
【００８２】
[0094]本開示の前の記載は、当業者が本開示を製造または使用することを可能にするように提供される。本開示に対する様々な変更形態が、当業者には容易に明らかとなり、本明細書に規定の一般的な原理が、本開示の精神または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書に記載される例および設計に限定することを意図しておらず、本明細書に開示される、原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【図１】
2016517570.tif 000003
【図２】
2016517570.tif 000004
【図３】
2016517570.tif 000005
【図４Ａ】
2016517570.tif 000006
【図４Ｂ】
2016517570.tif 000007
【図５】
2016517570.tif 000008
【図６】
2016517570.tif 000009
【図７】
2016517570.tif 000010
【図８】
2016517570.tif 000011
【図９Ａ】
2016517570.tif 000012
【図９Ｂ】
2016517570.tif 000013
【図９Ｃ】
2016517570.tif 000014
【図１０】
2016517570.tif 000015
【国際調査報告】
2016517570.tif 000016
2016517570.tif 000017
2016517570.tif 000018